Search

[보안] 콘텐츠보안 Multi DRM 적용하기

생성 일시
2024/05/09 00:05
최종 편집 일시
2024/10/26 14:51
생성자
최종 편집자
날짜
마지막 수정시간
2024/10/26 14:51
마지막 수정자
태그
기술지원
텍스트
아래는 Pollycon DRM 이용하여 vod 콘텐츠를 CLI로 암호화 패키징 하는 방법이며 본사 SEDN 시스템을 기준으로 연동 테스트한 결과입니다. (mac OS 기준)
CLI 패키징 명령어(/Users/<유저네임>/Desktop/work 는 명령어를 실행할 환경에서 적절한 경로로 대체)
docker run --name packager -v /Users/<유저네임>/Desktop/work/contents:/contents -v /Users/<유저네임>/Desktop/work/packaging-output:/packaging-output -it --rm <유저네임>/ubuntu-packager -o /packaging-output -i /contents/drmtest.mp4 --enc_token (PallyCon KMS와의 CPIX API 통신에 사용되는 KMS 토큰 값. PallyCon 콘솔의 멀티 DRM > DRM 세팅 화면에서 확인 가능) --content_id (고객사 CMS에서 관리하는 ID 값을 입력하며, 이후 클라이언트 연동 단계에서 동일한 CID를 사용해야 함) --hls
PallyConPackager 파일은 GitHub - inka-pallycon/pallycon-drm-cli-packager: CLI-based DRM packager for PallyCon Multi-DRM 에서 다운 받은 파일 중 해당 환경 OS에 맞는 파일을 넣어야 함
위 명령어에 따르면, 패키징 하고자 하는 콘텐츠 파일은 contents 폴더 안에 있어야 함
명령어가 정상적으로 실행된 후 결과 파일은 packaging-output 폴더 안에 저장 됨

라이선스 토큰 발급받기

서버에서 PallyCon DRM 으로 패키징된 VOD 콘텐츠를 프론트에서 열어보기 위해서는 먼저 라이선스 토큰을 발급 받아야 한다.
drm_type : DRM 종류 (“NCG”, “Widevine”, “PlayReady”, “FairPlay”), 기본값: PlayReady
site_id : PallyCon 계정 사이트 ID
user_id : 현재 로그인 된 사용자 ID
cid : 현재 패키징된 콘텐츠의 ID (서버에서 패키징 할 때의 값과 같아야 함)
policy : 라이선스 정책 데이터 를 AES 256 방식으로 암호화한 값(위 사진에는 base64 로 인코딩 하라고 나오지만 인코딩 하지 않은 값을 넣어야 에러가 나지 않음 - 설명이 잘못 된 듯 함)
licensePolicy는 정책 정보(사진은 기본 설정)
(위 사진에서) pallyconSiteKey는 PAllyCon 서비스 사이트에서 발급된 사이트 키
iv0123456789abcdef (16byte)
위 사진의 암호 결과 값인 cipher 값이 토큰 생성시 policy 값에 들어감
hash : 아래 방식대로 메시지를 해시한 값
위와 같은 로직으로 토큰 JSON 형식을 만들면 아래와 같이 나온다
마지막으로 이 JSON 형식을 base64로 인코딩 해주면 라이선스 토큰 완성
위 토큰으로 VideoJs에서 라이선스 요청을 한다