Secure HLS Streams with AES-128

최신 업데이트:2023-08-17 15:44:06

CDNetworks의 Media Acceleration Live Broadcast 서비스로 AES-128 암호화를 사용하여 HLS 스트림을 보호할 수 있습니다. 이 문서에서는 HLS 스트림에 대해 AES-128 암호화를 구성하는 단계를 설명합니다.

HLS 스트림 암호화

스트림을 암호화하려면 다음과 같이 Uri에 암호화 키와 키 서버 주소를 사용하여 요청을 전송하여 시작합니다.

POST 메서드

curl -i --url "http://ca.haplat.net/wslive/drm/manage.action?n=$username&r=$currentTimeStamp&k=$k" \
-X "POST" \
-H "Content-Type: application/json" \
-d '{
    "Host":"streampull.cdnetworks.com",
    "data":[
        {
            "Stream":"live/stream1",
            "Action":"add",
            "Method":"aes-128",
            "Key":"123456789",
            "Uri":"http://livestream-aes.com/testaeskey",
	    "Expire":"1850092464"
        }
    ]
}'

파라미터 및 헤더

파라미터/헤더 필수 여부 설명
Host 스트림 푸시 도메인.
n 계정 이름입니다.
r 최대 길이가 13인 고유한 임의 문자열, 타임스탬프 사용을 권장합니다.
k MD5 인증 값입니다.
k = md5 (r + apikey) 즉, ‘k’ 값을 가져오려면 문자열 ‘r’ 끝에 문자열 apikey를 추가한 후 결과 문자열에 대해 MD5 계산을 수행합니다.
참고: apikey는 고객 서비스에서 검색할 수 있습니다.
예를 들어,
1. 요청(Request) 및 apikey=012f37a3f2952
2. 문자열 r=1409284800
3을 무작위로 생성합니다. apikey를 ‘r’ 끝에 추가하여 문자열 '1409284800012f37a3f2952’
4를 생성합니다. 새 문자열의 MD5 해시를 계산하여 ‘k’ 값을 가져옵니다, 즉 ‘b9fed80be752551834eec3e52fa94115’

요청 본문

요청 본문은 JSON 형식이어야 합니다. 다음과 같은 정보를 포함하는 JSON 객체를 생성할 수 있습니다.

아이템 필수 여부 설명
Stream 스트림 이름 또는 애플리케이션 이름과 함께 사용할 수 있습니다. 예를 들어 “/”, “live” 및 “live/livestream”.
참고: 최상위 애플리케이션 이름만 사용할 수 있습니다.
Action 작업 유형입니다. 세 가지 유형의 값을 지원합니다: “add”, “update” 및 “del”.
Method 아니오 암호화 알고리즘, ase-128 또는 AES-128.
Key 암호화 키.
Uri 키 서버 주소입니다.
Expire 아니오 키 만료 날짜는 Linux 타임스탬프(초)로 표시됩니다. 예를 들어: 1646720000.
만료 날짜를 지정하지 않으면 암호화 키는 최대 7일 동안 유효합니다. 키가 만료되면 스트리밍이 더 이상 암호화되지 않습니다.

오류 코드

HTTP 코드 설명
400 요청 본문에 n, r, k의 파라미터 또는 필수 필드가 없습니다.
403 잘못된 k 값입니다.
404 잘못된 URI입니다.
405 요청 방법이 POST가 아닙니다.
5xx 내부 서버 오류입니다.

응답 예시

{ "msg": true, "code": 200, "callTime": "2023-04-13 16:35:45" }

AES 암호화 테스트

AES 암호화가 제대로 작동하면 스트림이 암호화되어 플레이어가 미디어 세그먼트를 재생할 수 없습니다. 다음 단계에 따라 이를 확인할 수 있습니다.:

  1. 재생 URL을 복사하여 웹 브라우저 주소 표시줄에 붙여넣습니다.

http://pullaes128.cdnetworks.com/test/a5ebdd290182100039a7236800000000/playlist.m3u8

  1. 재생 목록 파일을 컴퓨터에 저장합니다. 스트림이 암호화되면 재생 목록 파일에 EXT-X-KEY 헤더를 볼 수 있습니다:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:69

#EXT-X-KEY:METHOD=AES-128,URI="https://cloudvodtest0622.cdnetworks.com/cloudv-material/**********************",IV=0x313233343536******************
#EXTINF:3.989,
1661944371.ts?wsApp=HLS&wsMonitor=0
#EXTINF:3.968,
1661944372.ts?wsApp=HLS&wsMonitor=0
#EXTINF:3.989,
1661944373.ts?wsApp=HLS&wsMonitor=0
  1. TS 파일 중 하나의 경로를 복사합니다. 그런 다음 재생 URL에서 재생 목록 경로 “playlist.m3u8”을 TS 파일 경로 “1661944371.ts?wsApp=HLS&wsMonitor=0”으로 대체합니다. 예를 들어:

http://pullaes128.cdnetworks.com/test/a5ebdd290182100039a7236800000000/1661944371.ts?wsApp=HLS&wsMonitor=0

  1. TS 파일을 저장하고 플레이어에서 엽니다. 암호화 때문에 플레이어가 재생할 수 없습니다.
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.