DRM 콘텐츠 암호화
    • PDF

    DRM 콘텐츠 암호화

    • PDF

    기사 요약

    One Click Multi DRM 은 Live Station 을 포함하여 CPIX 기반 API 를 활용한 DRM 콘텐츠를 Encryption 할 수 있는 기능을 지원합니다.

    참고
    • CPIX API는 DASH 산업 포럼에서 정의한 Content Protection Information Exchange Format (CPIX) 표준 가이드에 따라 구현된 API로, 미디어 콘텐츠의 패키징 과정에서 멀티 DRM을 적용하는데 필요한 키를 연동하는 규격을 정의합니다.
    • API를 이용하면 CPIX 기반의 키 연동을 지원하는 인코더/트랜스코더 솔루션과 PallyCon 멀티 DRM을 쉽게 연동할 수 있습니다.
    • 사이트 생성 완료 후 반드시 사이트를 활성화 상태로 전환한 이후 라이센스 발급이 가능합니다.
    • One Click Multi DRM 은 Naver Cloud Live Station 상품과 손쉬운 연동을 지원합니다. 자세한 연동 가이드는 Live Station DRM 적용 가이드 를 참고해주십시오.

    One Click Multi DRM 활용을 위한 콘텐츠 암호화 적용

    구분경로설명
    PallyCon CPIX APIPallycon CPIX Client 가이드 바로 가기PallyCon에서 구현한 CPIX API로, 인코더/트랜스코더 솔루션 업체에서 해당 API로 PallyCon 멀티 DRM과 연동 가능. Flussonic Media Server와의 연동에 PallyCon CPIX API 적용
    SPEKE APISPEKE 가이드 바로 가기 AWS Elemental에서 구현한 CPIX API로, PallyCon과 사전 연동되어 AWS Elemental 미디어 서비스의 MediaPackage 또는 MediaConvert 제품에서 PallyCon 멀티 DRM을 쉽게 적용 가능. SPEKE API 연동에 대한 자세한 내용은 가이드 참고
    ATEME NEA-DVR CPIX API가이드 바로 가기Anevia(ATEME에 인수됨)에서 구현한 CPIX API로, NEA-DVR 솔루션과 사전 연동되어 PallyCon 멀티 DRM을 쉽게 적용 가능
    참고
    • PallyCon CPIX API 클라이언트는 주요 개발 언어별로 미리 구현된 CPIX 클라이언트 모듈을 제공합니다.
    • 해당 모듈에는 KMS 서버와의 통신을 위한 XML 규격의 요청 데이터 생성과 응답 데이터 해석 기능이 구현되어 있습니다.

    Pallycon CPIX API 지원 사양

    현재 PallyCon CPIX API 클라이언트는 다음의 사양을 지원합니다.

    항목지원 사양설명
    개발 언어C++, C#, Java, PythonDRM 패키징 연동 개발 환경에 따른 언어별 샘플 제공
    DRM 유형Widevine, PlayReady, FairPlay, NCG, HLS_NCG- NCG: PallyCon 자체 DRM인 NCG 규격으로 패키징 대상 파일 전체를 암호화할 때 사용
    - HLS_NCG: AES-128 암호화된 HLS 콘텐츠의 키를 NCG 규격으로 암호화하는 방식
    암호화 방식CENC, CBC1, CENS, CBCS클라이언트 플랫폼에서 지원하는 AES 암호화 방식에 따라 일반적으로 CENC 또는 CBCS를 지정
    트랙 유형ALL_TRACKS, AUDIO, SD, HD, UHD1, UHD2멀티 키 패키징 시 트랙 별로 다른 암호화 키를 적용하기 위해 사용

    멀티 DRM 콘텐츠의 암호화 방식은
    CBCS , AES-CBC (AES-CBC with subsample) 두 가지만 사용됩니다.
    PlayReady와 Widevine DRM을 지원하는 DASH 콘텐츠 패키징에는 CENC가 사용되며, FairPlay 지원이 필요한 HLS 또는 CMAF 패키징 시에는 CBCS 암호화를 적용해야 합니다.

    암호화 방식프로토콜DRM 유형암호화 알고리즘지원 단말
    DRMHLSFairPlayAES-CBCMac/iOS Safari 브라우저, iOS/iPadOS/tvOS 앱, HLS HTML5
    DRMDASHPlayReady, WidevineCENC (Common Encryption)MS Edge, Internet Explorer 11, Google Chrome, Firefox, Opera DASH HTML5

    One Click Multi DRM 활용 플로우

    • STEP 1. 암호화된 DRM 콘텐츠를 준비합니다.
    • STEP 2. 암호화 DRM 콘텐츠 설정 ( contentId, drmType 등) 을 참고하여 클라이언트에서 One Click Multi DRM 라이선스 발급을 요청합니다.
    • STEP 3. 클라이언트(플레이어)에서 DRM 콘텐츠를 재생합니다.
    주의

    One Click Multi DRM 사이트에서 사용 중인 'Policy' 에 따라 재생/보안 상세 규칙이 적용된 라이선스가 발행됩니다.
    만약 요청한 라이선스 정보와 암호화된 DRM 콘텐츠 정보가 일치하지 않을 경우 재생이 원활하지 않습니다.

    DRM 콘텐츠 Encryption

    DRM 콘텐츠를 준비하기 위해 암호화 방안을 소개합니다.
    DRM 콘텐츠 암호화를 위해 먼저 네이버 클라우드 플랫폼 콘솔 혹은 API 를 통해 Multi DRM 사이트를 생성해야 하며, Pallycon CPIX 클라이언트 관련 상세 사항은 가이드를 통해 참고하시기 바랍니다.

    Live 콘텐츠 DRM 암호화

    1. Live Station 을 사용할 경우
      • step 1. One Click Multi DRM 을 통해 Site 생성합니다.
      • step 2. Live Station > DRM 설정에서 생성한 Site 를 선택하여 Multi DRM Encryption 을 위한 채널을 생성합니다.
    2. Live Station 을 사용하지 않는 경우
      • step 1. 콘텐츠 DRM Encryption 을 위한 PallyCon CPIX API 또는 SPEKE API 등 API 별 키 요청 URL에 One Click Multi DRM 사이트 상세 정보를 통해 획득한 KMS token 을 추가하여 호출합니다.
      • step 2. 발급된 CPIX JSON 응답을 통해 콘텐츠 암호화를 위한 암호화 데이터를 획득합니다.
      • step 3. CPIX API 응답에서 획득한 DRM 암호화 정보를 각종 서드파티 인코더/트랜스코더/패키져 솔루션 연동 솔루션에 입력합니다

    참고. CPIX API 응답에서 획득한 DRM 암호화 정보

    필드명설명
    key_id_hex, key_id_b64, key_hex, key_b64, iv_hex, iv_b64각각 16진수 또는 Base64 형태의 Key ID, Key, IV 값을 나타냅니다.
    psshPlayReady 또는 Widevine 에서 사용되는 PSSH 데이터입니다. (헤더 포함)
    pssh_payload_onlypssh 데이터에서 헤더가 제거된 payload 부분입니다.
    key_uriFairPlay DRM이 적용된 HLS m3u8 파일의 #EXT-X-Key 태그에 포함되는 URI 파라미터값입니다.

    VOD 콘텐츠 DRM 암호화

    • VOD Station 을 통한 DRM 암호화는 CPIX v1 만 지원합니다.
    • 24년 중으로 One Click Multi DRM 상품과 VOD Station의 손쉬운 DRM 연동을 지원 예정입니다.
    1. VOD Station 을 사용 할 경우
      • step 1 Multi DRM Encryption 을 위한 VOD Station 채널을 생성합니다.
      • step 2. 채널 생성 시 VOD Station DRM 암호화 설정을 위한 필수값을 입력합니다.
        • Content ID : DRM 패키징된 콘텐츠의 고유 식별자이며, CPIX API 요청 시 XML Body에 포함할 Content ID 값입니다.
        • DRM System ID : DRM 시스템의 고유 식별자이며, CPIX API 요청 시 XML Body에 포함할 System ID 입니다. 선택한 암호화 설정에 맞게 1개 또는 2개의 System ID가 포함되어야 합니다. 한 줄에 1개씩 입력해 주십시오.
          • <예시> 9A04F079-9840-4286-AB92-E65BE0885F95 , EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED
        • DRM Key URL : CPIX API 요청 URL입니다. Multi DRM 사이트에서 획득한 kmsToken 을 경로에 넣어 입력합니다.
          • <예시> https://kms.pallycon.com/v1/cpix/pallycon/getKey/{kmsToken}
    2. VOD Station 을 사용하지 않는 경우
      • step 1. 콘텐츠 DRM Encryption 을 위한 PallyCon CPIX API 또는 SPEKE API 등 API 별 키 요청 URL에 One Click Multi DRM 사이트 상세 정보를 통해 획득한 KMS token 을 추가하여 호출합니다.
      • step 2. 발급된 CPIX JSON 응답을 통해 콘텐츠 암호화를 위한 암호화 데이터를 획득합니다.
      • step 3. CPIX API 응답에서 획득한 DRM 암호화 정보를 각종 서드파티 인코더/트랜스코더/패키져 솔루션 연동 솔루션에 입력하여 DRM 암호화를 암호화 패키징을 적용합니다.

    CPIX API 요청 예시

    POST /v1/cpix/pallycon/getKey/{kmsToken}
    HOST: kms.pallycon.com
    Content-Type: application/json
    x-ncp-apigw-timestamp:1521787414578
    x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
    x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
    x-ncp-region_code:KR
    

    Request body

    /* step 1. vod dash content request xml */
    <?xml version="1.0" encoding="UTF-8"?>
    <cpix:CPIX id="your-content-id" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
      <cpix:ContentKeyList>
          <cpix:ContentKey kid="681e5b39-49f2-4dfa-b744-86573c22e6fb"></cpix:ContentKey>
      </cpix:ContentKeyList>
      <cpix:DRMSystemList>
          <!-- Common encryption / MSS (Playready) -->
          <cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="9a04f079-9840-4286-ab92-e65be0885f95" />
          <!-- Common encryption (Widevine)-->
          <cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
      </cpix:DRMSystemList>
    </cpix:CPIX>
    

    응답 예시

    /* step 2. vod dash content response xml */
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
       <cpix:ContentKeyList>
           <cpix:ContentKey explicitIV="MDEyMzQ1Njc4OWFiY2RlZg==" kid="12ea753c-23e7-bc02-4474-b2b976c43beb">
               <cpix:Data>
                   <pskc:Secret>
                       <pskc:PlainValue>SzC1qc1cEpyFU6t/lL7Byw==</pskc:PlainValue>
                   </pskc:Secret>
               </cpix:Data>
           </cpix:ContentKey>
       </cpix:ContentKeyList>
       <cpix:DRMSystemList>
           <!-- Common encryption / MSS (Playready) -->
           <cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
                <cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- V2에 추가됨 -->
               <cpix:PSSH>AAACwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAqKiAgAAAQABAJgCPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBQAEgAWABxAEUAdQBjAGoAQQByAHgARQBkAEwASwA1AGQAcwBRADcANgB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AC8ARgA3AEIAMQBmAEgAMgBlADAAYwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHQAZQBzAHQAdABvAGsAeQBvAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwBwAGwAYQB5AHIAZQBhAGQAeQAvAGwAaQBjAGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</cpix:PSSH>
           </cpix:DRMSystem>
           <!-- Common encryption (Widevine)-->
           <cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
                <cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- V2에 추가됨 -->
               <cpix:PSSH>AAAAVXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADUIARIQEup1PCPnvAJEdLK5dsQ76xoMaW5rYWVudHdvcmtzIg1jcGl4LXRlc3QtY2lkKgJIRA==</cpix:PSSH>
           </cpix:DRMSystem>
       </cpix:DRMSystemList>
    </cpix:CPIX>
    
    참고

    <cpix:CPIX id=""> : 요청 데이터에 입력한 CID 값이 리턴됩니다.
    <cpix:ContentKey> : 콘텐츠 암호화에 사용될 키 값(<pskc:PlainValue> )과 IV(explicitIV), 그리고 해당 키에 대한 kid 값이 리턴됩니다. kid 값은 요청 데이터에 입력된 값과 별개로 KMS 에서 새로 생성된 값이 적용되며, 키와 IV는 Base64 인코딩된 형태로 리턴됩니다.
    <cpix:DRMSystem> : PlayReady와 Widevine 각각의 DRM에 대한 PSSH 데이터가 리턴됩니다. <cpix:PSSH> 태그에는 기본 PSSH 값이 표시되며, <cpix:ContentProtectionData> 태그에는 헤더 부분이 제거된 PSSH 데이터가 표시됩니다.


    이 문서가 도움이 되었습니까?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.