HLS 암호화 기술 가이드

AES-128 암호화 HLS(m3u8) 스트림 복호화 및 MP4 저장 완벽 가이드

EXT-X-KEY로 암호화된 세그먼트를 키 추출 없이, 재생 중인 세션 그대로 복호화해 재생 가능한 MP4로 저장하는 실전 튜토리얼.

AES-128로 암호화된 HLS 스트림은 왜 바로 저장이 안 될까요?

많은 스트리밍 사이트는 HLS 세그먼트를 AES-128로 암호화합니다. 플레이리스트에는 EXT-X-KEY 태그가 붙어 키의 위치(URI)와 초기화 벡터(IV), 암호화 방식이 지정됩니다. 문제는 세그먼트가 암호문 바이트라서, 목록대로 내려받아 이어 붙여도 재생할 수 없는 파일이 된다는 점입니다.

  • 키 접근 제한: 키 URI 요청에는 로그인 세션 쿠키와 Referer 헤더가 필요합니다.
  • IV 처리: 세그먼트별 초기화 벡터를 적용하지 않으면 첫 블록부터 깨집니다.
  • 수동 추출의 번거로움: 개발자 도구에서 키와 IV를 직접 찾아 별도 툴에 입력하는 방식은 재현이 어렵습니다.

AES-128 HLS 암호화 명세

HLS AES-128 암호화 관련 태그·파라미터 명세 (RFC 8216 기준)
항목 값 / 설명 Paca 처리
암호화 방식METHOD=AES-128자동 인식
키 위치URI= (EXT-X-KEY)세션 키로 자동 요청
초기화 벡터IV= (미지정 시 미디어 시퀀스)세그먼트별 자동 적용
키 길이16바이트 (128비트)메모리 내 복호화
세그먼트 형식.ts / .m4s병렬 수신 후 복호화
출력 컨테이너(복호화된 원본 트랙)ffmpeg 무손실 MP4
1

Paca 내장 브라우저에서 영상 재생

Paca 주소창에 영상 페이지 주소를 입력하고 평소처럼 접속합니다. 로그인 권한이 필요한 강의·멤버십 영상이라면 브라우저 안에서 로그인해 세션을 유지하세요. 복호화 키 요청도 이 세션을 그대로 사용합니다.

2

EXT-X-KEY 암호화 키 자동 획득

재생이 시작되면 스니퍼가 m3u8 플레이리스트의 EXT-X-KEY 태그를 읽어 암호화 방식(AES-128), 키 URI, IV를 파악합니다. 이어서 탭의 쿠키와 Referer로 키를 내려받아 메모리에 보관합니다.

3

세그먼트 수신 및 실시간 복호화

암호화된 세그먼트를 최대 16스레드로 동시에 내려받는 즉시 AES-128로 복호화합니다. 모두 수신하면 내장 ffmpeg가 재인코딩 없이 단일 MP4 컨테이너로 결합해 저장합니다.

자주 묻는 질문 (FAQ)

Q. 복호화한 영상의 화질이 떨어지나요?

아닙니다. AES-128은 세그먼트 바이트를 암호화·복호화하는 방식이라 원본 화질이 그대로 복원됩니다. Paca는 재인코딩 없이 무손실 리먹싱만 수행합니다.

Q. 키가 만료되면 어떻게 되나요?

키 URI가 일회성 토큰인 경우 만료 전에 요청해야 합니다. Paca는 재생 세션에서 감지한 즉시 키를 확보하므로 만료 문제를 최소화합니다. 만료 시 페이지를 새로고침하면 다시 감지됩니다.

Q. Widevine DRM도 복호화되나요?

아닙니다. Paca는 AES-128 세그먼트 암호화만 다루며, Widevine·PlayReady 같은 DRM 보호 콘텐츠는 지원하지 않습니다. DRM 우회는 제공하지 않습니다.

관련 가이드

지금 Paca로 암호화 스트림을 저장하세요

Windows 10, 11 및 Android 컴패니언 앱을 지원합니다.

Paca 무료 다운로드