HLS AES Encryption

최신 업데이트:2025-05-22 16:54:58

HLS AES 암호화는 고급 암호화 표준(AES-128) 알고리즘을 사용하여 비디오 세그먼트를 암호화함으로써 스트리밍 중인 콘텐츠를 보호합니다. 이 대칭 키 암호화 방식은 서버 측 암호화와 시청자 플레이어 측 복호화에 동일한 키를 사용합니다.

암호화가 적용된 HLS 재생 목록(m3u8 파일)에는 플레이어가 콘텐츠를 복호화하는 데 필요한 정보를 제공하는 EXT-X-KEY 태그가 포함됩니다:

#EXT-X-KEY:METHOD=AES-128,URI="https://keypathURI/hls_aes.key",IV=0x00000000000000000000000000000000

재생 시 플레이어는 먼저 재생 목록에 지정된 URI에서 복호화 키를 획득한 후 비디오 세그먼트 디코딩을 시작합니다.

구현 요구사항

HLS AES 암호화 구현 전 다음 사항을 확인하십시오:
• 원본 동영상이 오브젝트 스토리지 버킷에 업로드되어 있어야 함

• 계정에 미디어 처리 기능이 활성화되어 있어야 함

미디어 처리 API 요청 프로세스를 이해해야 함

단계 1: RSA 키 생성 및 구성

API 요청에서 AES 암호화 키를 안전하게 전송하려면 RSA 암호화를 사용해야 합니다. 이 과정에는 키 쌍 생성과 개인 키 등록이 포함됩니다.

RSA 키 쌍 생성

다음 명령어로 RSA 개인 키와 공개키를 생성하십시오:

# 개인 키 생성 (2048비트)
openssl genrsa -out private.key 2048

# 개인 키에서 공개키 추출
openssl rsa -in private.key -pubout -out pub.key

생성된 키 파일은 안전하게 보관하십시오. 공개키는 AES 키 암호화에, 개인 키는 백엔드 복호화에 사용됩니다.

RSA 개인 키 등록

  1. 개인 키 파일을 Base64 형식으로 인코딩
  2. 인코딩된 키를 고객 지원 팀에 제공
  3. 상세 절차는 RSA 개인 키 예시 참조

단계 2: 암호화 매개변수 준비

암호화 요청 생성 시 특수 암호화 설정이 포함된 fops(파일 작업 매개변수)를 구성해야 합니다:

<op>/<Format>
  /hlsKey/<hlsKey>
  /hlsKeyUrl/<hlsKeyUrl>
  |saveas/<Urlsafe_Base64_Encode(bucket:filekey)>

hlsKey 매개변수 생성

hlsKey는 API 요청에 포함되기 전 RSA 암호화되어야 하는 AES 암호화 키입니다:

  1. 16바이트(128비트) 무작위 값 생성 (AES 키용)
  2. RSA 공개키와 OAEP 패딩으로 암호화
  3. URL-safe Base64 인코딩 수행

AES 키 값 01234566543210abcdef888888abcdef 예시:

# 무작위 16바이트 키 생성 (필요 시)
openssl rand -hex 16

#RSA-OAEP 암호화 및 API 전송용 인코딩
echo -n "01234566543210abcdef888888abcdef" | openssl rsautl -encrypt -pubin -inkey pub.key -oaep | openssl base64 -A | tr "+/" "-_"

출력 문자열이 암호화된 hlsKey 값입니다.

hlsKeyUrl 매개변수 설정

hlsKeyUrl은 복호화 키 획득 위치를 지정합니다. 두 가지 옵션:

  1. 자체 키 서버 사용: 키 관리 시스템 URL 제공
  2. 오브젝트 스토리지 사용: 키 파일을 버킷에 업로드 후 URL 사용

옵션 2용 키 파일 생성:

# 16진수 키에서 바이너리 파일 생성
echo -ne "\x01\x23\x45\x66\x54\x32\x10\xab\xcd\xef\x88\x88\x88\xab\xcd\xef" > key.hex

버킷 업로드 후 접근 가능한 URL 예시:

https://bucketname.s3-cn-north-1.wcsapi.com/key.hex

단계 3: 암호화 프로세스 실행

매개변수 준비 완료 후 API 요청을 통해 비디오 암호화를 수행합니다.

API 요청 예시

vod-wcs-test001 버킷의 test_hls.m3u8 파일 암호화:

curl -v -X POST \
  -d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test_hls.m3u8)&fops=Urlsafe_Base64_Encode(avthumb/m3u8/hlsKey/encrypted hlsKey/hlsKeyUrl/https://bucketname.s3-cn-north-1.wcsapi.com/key.hex|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:hls_aes_.m3u8))&force=1&separate=1" \
  -H "Authorization: AccessKey EncodeSign" \
  --url "http://mgrDomain/fops"

트랜스코딩 완료 시 암호화된 비디오가 지정된 버킷에 저장됩니다. 생성된 HLS 매니페스트(m3u8 파일)에는 EXT-X-KEY 태그가 포함되어 암호화 상태와 키 위치를 표시합니다.

보안 고려사항

  • RSA 개인 키는 항상 안전하게 보관
  • 키 URL에 대한 무단 접근 방지를 위해 접근 제어 구현
  • 고보안 환경에서는 토큰 기반 인증 시스템 도입 권장
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.