DRMコンテンツ暗号化

Prev Next

Classic/VPC環境で利用できます。

CPIX APIを通じてコンテンツに DRM暗号化を適用できます。CPIX APIは、DASH産業フォーラムで定義した Content Protection Information Exchange Format(CPIX)標準に基づいて実装された APIで、メディアコンテンツのパッケージ化中にマルチ DRMを適用するために必要なキーを連携する規約を定義します。CPIX APIを利用すると、CPIXベースのキー連携をサポートするエンコーダー・トランスコーダーソリューションと DoveRunner(旧 PallyCon)マルチ DRMを手軽に連携できます。

参考

Live Stationサービスの連携方法は、Live Stationチャンネルの作成をご参照ください。

CPIX APIベースのDRMコンテンツ暗号化

CPIX APIを利用して DRMコンテンツ暗号化を適用する方法は次の通りです。

区分 リンク 説明
DoveRunner CPIX API DoveRunner CPIX API連携ガイド DoveRunner(旧 PallyCon)で実装した CPIX APIで、エンコーダー/トランスコーダーソリューションと連携してマルチ DRMを適用。Flussonic Media Server連携にも使用
SPEKE API SPEKEガイド AWS Elementalで実装した CPIX APIで、DoveRunnerと事前連携して AWS Elemental MediaPackageと MediaConvertでマルチ DRMを適用
ATEME NEA-DVR CPIX API ATEME NEA-DVRガイド Anevia(ATEMEに買収される)で実装した CPIX APIで、NEA-DVRソリューションと事前連携してマルチ DRMを適用
参考
  • DoveRunner(旧 PallyCon) CPIX APIクライアントは、主要な開発言語であらかじめ実装された CPIXクライアントモジュールを提供します。
  • 各モジュールは KMSサーバとの通信のために XML形式のリクエストデータを作成し、レスポンスデータを解釈する機能を提供します。

DoveRunner CPIX APIスペック

DoveRunner(旧 PallyCon) CPIX APIクライアントは次のスペックをサポートします。

項目 サポートスペック 説明
開発言語 C++, C#, Java, Python DRMパッケージ化連携開発環境に応じて言語別サンプルコードを提供
DRMタイプ Widevine, PlayReady, FairPlay, NCG, HLS_NCG
  • NCG: DoveRunner独自の DRM規格で、パッケージ化対象ファイル全体を暗号化する際に使用
  • HLS_NCG: AES-128暗号化された HLSコンテンツのキーを NCG規格で再度暗号化する方式
暗号化方式 CENC, CBC1, CENS, CBCS クライアントプラットフォームがサポートする AES暗号化方式に応じて、一般的に CENCまたは CBCSを指定
トラックタイプ ALL_TRACKS, AUDIO, SD, HD, UHD1, UHD2 マルチキーパッケージ化時にトラックごとに異なる暗号化キーを適用する際に使用

マルチ DRM暗号化方式

DRMコンテンツ暗号化方式は次の通りです。

暗号化方式 プロトコル DRMタイプ 暗号化アルゴリズム 対応端末
DRM HLS
  • FairPlay: Appleが提供する DRM技術規格で、それぞれの HLSセグメントを AES-CBC方式で暗号化
AES-CBC Mac/iOS Safariブラウザ、iOS/iPadOS/tvOSアプリ、HLS HTML5
DRM DASH
  • PlayReady: Microsoftが提供する DRM技術規格で、Common Encryption規格に基づき、AES-128方式で暗号化
  • Widevine: Googleが提供する DRM技術規格で、Common Encryption規格に基づいて AES-128方式で暗号化
CENC (Common Encryption) MS Edge, IE11, Chrome, Firefox, Opera DASH HTML5

One Click Multi DRMの利用シナリオ

One Click Multi DRMサービスの利用シナリオは次の通りです。

  1. DRMコンテンツを暗号化します。
  2. クライアント(プレイヤー)で DRMライセンスをリクエストします。リクエストの際は、contentIddrmTypeなどのコンテンツ設定情報が必要です。
  3. クライアントが発行したライセンスで DRMコンテンツを再生します。
注意

One Click Multi DRMサービスでは、サイトに設定されたポリシーに基づき、再生・セキュリティルールが適用されたライセンスを発行します。そのため、リクエストされたライセンス情報と暗号化された DRMコンテンツ情報が一致しない場合、再生が制限されたり失敗する可能性があります。

Liveコンテンツの DRM暗号化

Liveコンテンツの DRM暗号化方式は次の通りです。

Live Stationを使用する場合

Live Stationを使用する場合の Liveコンテンツ DRM暗号化方式は次の通りです。

  1. One Click Multi DRMを通じてサイトを作成します。
  2. Live Station > Channel Management メニューからチャンネルを作成します。
    • 作成時、Multi DRM項目で1.で作成したサイトを選択します。

Live Stationを使用しない場合

Live Stationを使用しない場合の Liveコンテンツ DRM暗号化方式は次の通りです。

  1. 次の項目を組み合わせてコンテンツ DRM暗号化 APIを呼び出します。
    • URL: DoveRunner(旧 PallyCon) CPIX APIまたは SPEKE APIなど、API別キーリクエスト URL
    • 追加 URI: One Click Multi DRMサイトの詳細情報から獲得した KMSトークン
  2. APIレスポンスを介してコンテンツ暗号化のための暗号化データを取得します。
  3. 取得した DRM暗号化情報をサードパーティエンコーダー・トランスコーダー・パッケージソリューション連携ソリューションに適用します。
参考

CPIX APIレスポンスから取得する DRM情報は次の通りです。

フィールド 説明
key_id_hex, key_id_b64, key_hex, key_b64, iv_hex, iv_b64 16進数または Base64形式の Key ID、Key、IVの値
pssh PlayReadyまたは Widevineで使用される PSSHデータ(ヘッダを含む)
pssh_payload_only PSSHデータからヘッダを除いた Payload部分
key_uri FairPlay DRMが適用された HLS m3u8ファイルの#EXT-X-Keyタグに含まれる URIパラメータの値

VODコンテンツの DRM暗号化

VODコンテンツの DRM暗号化方式は次の通りです。

VOD Stationを使用する場合

VOD Stationを使用する場合の VODコンテンツ DRM暗号化方式は次の通りです。

  1. One Click Multi DRMを通じてサイトを作成します。
    • 外部 DRMサービスを使用する場合は、この段階はスキップできます。
  2. VOD Station > Channel メニューからチャンネルを作成します。
    • 作成時、Multi DRM項目に次のいずれか1つを適用します。
      • One Click Multi DRM
        • DRM Site: 有効化状態の DRMサイトを選択
        • Content ID: 再生しようとするコンテンツの固有 ID(DRMパッケージ化時に使用)
          • <例> drm-contents
      • 外部 DRM
        • DRMのタイプ: 使用する DRMタイプを選択
        • Content ID: 再生しようとするコンテンツの固有 ID(CPIX APIリクエストボディ(XML)に含める)
          • <例> drm-contents
        • DRM System ID: DRMシステムの固有 ID(CPIX APIリクエストボディ(XML)に含める)
          • 選択した DRMタイプによって1つまたは2つの System IDが必要で、必ず1行に1つずつ入力
          • <例> 9A04F079-9840-4286-AB92-E65BE0885F95EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED
        • DRM Key URL: CPIX APIリクエスト URL
          • DRMプロバイダの暗号化キーリクエストの形式に合わせて入力
          • <例> https://kms.example.com/cpix/v1/key/ujllldopmquy==
注意

VOD Stationによる DRM暗号化は CPIX v1のみサポートしています。

VOD Stationを使用しない場合

VOD Stationを使用しない場合の VODコンテンツ DRM暗号化方式は次の通りです。

  1. 次の項目を組み合わせてコンテンツ DRM暗号化 APIを呼び出します。
    • URL: DoveRunner(旧 PallyCon) CPIX APIまたは SPEKE APIなど、API別キーリクエスト URL
    • 追加 URI: One Click Multi DRMサイトの詳細情報から獲得した KMSトークン
  2. APIレスポンスを介してコンテンツ暗号化のための暗号化データを取得します。
  3. 取得した DRM暗号化情報をサードパーティエンコーダー・トランスコーダー・パッケージソリューション連携ソリューションに適用します。

リクエスト

DoveRunner(旧 PallyCon) CPIX APIを利用したリクエスト形式は次の通りです。

  • リクエスト URL
    • POST https://kms.pallycon.com/v1/cpix/pallycon/getKey/{kmsToken}
  • リクエストヘッダ
  • リクエストボディ
    フィールド タイプ 必須の有無 説明
    cpix:CPIX Object Required コンテンツキーと DRMシステム情報を含む CPIX文書のルート要素
    cpix:ContentKeyList Object Required コンテンツキーリストを定義するコンテナ要素
     └ cpix:ContentKey Object Required kid(Key ID)属性を持つ個々のコンテンツキー情報
    cpix:DRMSystemList Object Required DRMシステムリストを定義するコンテナ要素
      └ cpix:DRMSystem Object Required kid(Key ID)とsystemId(DRMシステム識別子)属性を持つ各 DRMシステム情報
  • リクエスト例
    curl --location --request POST 'https://kms.pallycon.com/v1/cpix/pallycon/getKey/{kmsToken}' \
    --header 'x-ncp-apigw-timestamp: {Timestamp}' \
    --header 'x-ncp-iam-access-key: {Access Key}' \
    --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
    --header 'Content-Type: application/xml' \
    --header 'x-ncp-region_code: KR' \
    --data '<?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>'
    

レスポンス

DoveRunner(旧 PallyCon) CPIX APIリクエストのレスポンス形式は次の通りです。

  • レスポンスボディ
    フィールド タイプ 必須の有無 説明
    cpix:CPIX Object - コンテンツ ID(CID)キーと DRMシステム情報を含む CPIX文書のルート要素
    cpix:ContentKeyList Object - コンテンツキーリストを定義するコンテナ要素
     └ cpix:ContentKey Object - kid(Key ID)とexplicitIV(初期化ベクトル)属性を持つ個々のコンテンツキー情報
    • kidの値は、リクエストデータに入力された値とは別に、KMSで新しく作成された値が適用され、キーと IVは Base64でエンコードされた形式で返される
      └ cpix:Data Object - コンテンツキーデータを含む要素
       └ pskc:Secret Object - コンテンツキーの秘密データを含む要素
       └ pskc:PlainValue String - Base64でエンコードされたコンテンツキーの値
    cpix:DRMSystemList Object - DRMシステムリストを定義するコンテナ要素
      └ cpix:DRMSystem Object - kid(Key ID)とsystemId(DRMシステム識別子)属性を持つ各 DRMシステム情報
       └ cpix:ContentProtectionData String - Base64でエンコードされた PSSHデータからヘッダが取り除かれた Payload部分
       └ cpix:PSSH String - Base64でエンコードされた PSSHデータ(ヘッダを含む)
  • レスポンス例
    <?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>