---
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==
```