최신 업데이트: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 요청 프로세스를 이해해야 함
API 요청에서 AES 암호화 키를 안전하게 전송하려면 RSA 암호화를 사용해야 합니다. 이 과정에는 키 쌍 생성과 개인 키 등록이 포함됩니다.
다음 명령어로 RSA 개인 키와 공개키를 생성하십시오:
# 개인 키 생성 (2048비트)
openssl genrsa -out private.key 2048
# 개인 키에서 공개키 추출
openssl rsa -in private.key -pubout -out pub.key
생성된 키 파일은 안전하게 보관하십시오. 공개키는 AES 키 암호화에, 개인 키는 백엔드 복호화에 사용됩니다.
암호화 요청 생성 시 특수 암호화 설정이 포함된 fops(파일 작업 매개변수)를 구성해야 합니다:
<op>/<Format>
/hlsKey/<hlsKey>
/hlsKeyUrl/<hlsKeyUrl>
|saveas/<Urlsafe_Base64_Encode(bucket:filekey)>
hlsKey는 API 요청에 포함되기 전 RSA 암호화되어야 하는 AES 암호화 키입니다:
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은 복호화 키 획득 위치를 지정합니다. 두 가지 옵션:
옵션 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
매개변수 준비 완료 후 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 태그가 포함되어 암호화 상태와 키 위치를 표시합니다.