--- title: "DRMコンテンツ暗号化" slug: "drm-contents-encryption" tags: ["Click Multi DRM", "Media"] updated: 2026-09-17T09:58:18Z published: 2026-09-17T09:58:18Z canonical: "api.ncloud-docs.com/drm-contents-encryption" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # DRMコンテンツ暗号化 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チャンネルの作成](/docs/ja/media-livestation-channel-channelcreate)をご参照ください。 ## CPIX APIベースのDRMコンテンツ暗号化 CPIX APIを利用して DRMコンテンツ暗号化を適用する方法は次の通りです。 | 区分 | リンク | 説明 | | --- | --- | --- | | DoveRunner CPIX API | [DoveRunner CPIX API連携ガイド](https://doverunner.com/docs/ja/content-security/multi-drm/packaging/cpix-api/#doverunner-cpix-api-client) | DoveRunner(旧 PallyCon)で実装した CPIX APIで、エンコーダー/トランスコーダーソリューションと連携してマルチ DRMを適用。Flussonic Media Server連携にも使用 | | SPEKE API | [SPEKEガイド](https://docs.aws.amazon.com/speke/latest/documentation/the-speke-api-v2.html) | AWS Elementalで実装した CPIX APIで、DoveRunnerと事前連携して AWS Elemental MediaPackageと MediaConvertでマルチ DRMを適用 | | ATEME NEA-DVR CPIX API | [ATEME NEA-DVRガイド](https://doverunner.com/docs/ja/content-security/multi-drm/packaging/cpix-api/#ateme-nea-dvr-cpix-api) | 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ライセンスをリクエストします。リクエストの際は、`contentId`、`drmType`などのコンテンツ設定情報が必要です。 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-E65BE0885F95`、`EDEF8BA9-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}` - リクエストヘッダ - [One Click Multi DRMのリクエストヘッダ](/docs/ja/one-click-multi-drm-api-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)を参照 - リクエストボディ | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | `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 ' ' ``` #### レスポンス 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データ(ヘッダを含む) | - レスポンス例 ``` SzC1qc1cEpyFU6t/lL7Byw== qAUAAAEAAQCeB...A= AAACwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAqKiAgAAAQABAJgCPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBQAEgAWABxAEUAdQBjAGoAQQByAHgARQBkAEwASwA1AGQAcwBRADcANgB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AC8ARgA3AEIAMQBmAEgAMgBlADAAYwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHQAZQBzAHQAdABvAGsAeQBvAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwBwAGwAYQB5AHIAZQBhAGQAeQAvAGwAaQBjAGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== qAUAAAEAAQCeB...A= AAAAVXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADUIARIQEup1PCPnvAJEdLK5dsQ76xoMaW5rYWVudHdvcmtzIg1jcGl4LXRlc3QtY2lkKgJIRA== ```