機能紹介
デジタル著作権管理(DRM、Digital Rights Management)は、暗号化やライセンス認証などの技術的手段を用いて、デジタルコンテンツの著作権を保護するシステムです。その主な機能は以下の通りです。
コンテンツの暗号化:音声・動画などのデジタルコンテンツを暗号化し、不正な配信を防ぎます。
権限制御:ライセンス管理を通じて、再生回数やデバイスのバインドなど、きめ細かな権限制御を実現します。
セキュアな伝送:コンテンツ配信プロセスにおけるデータの完全性を保証します。
Media Processing Service(MPS)は、Widevine、Fairplay、PlayReadyなどのDRM暗号化プロトコルに基づいたビデオオンデマンドの暗号化サービスを提供します。標準化された暗号化技術と、サードパーティのキー管理システム(例:SDMC、DRMtodayなど)との緊密な連携により、コンテンツの暗号化とキー管理を分離し、ユーザーのコンテンツセキュリティを全面的に保護します。MPSが提供するDRM暗号化サービスは、コンテンツのセキュアな処理に特化しており、キーの生成、保存、配信、およびライセンス管理などは、サードパーティのDRMサービスプロバイダーが提供します。
このドキュメントでは、DRMtodayを例に、メディア処理DRM暗号化サービスの導入フローを紹介します。
導入フロー
事前準備
まず、サードパーティのDRMサービスプロバイダーを有効化し、設定する必要があります。ここではDRMtodayを例に説明します。
ステップ1:サービスの登録
1. DRMtodayの公式サイトにアクセスします。DRMtodayは無料トライアルの登録をサポートしており、公式サイトの説明を参考に有料の商用サービスを購入することも可能です。 2. ここでは無料トライアルを例に、ページ内のGet your FREE trial todayをクリックして登録に進みます。
3. 企業のメールアドレスで登録します。登録成功後、組織を作成する必要があります。組織の作成が完了すると、コンソールは以下の画面に変わります。
ステップ2:サービスの設定
(1)APIアカウントの設定
1. 左側のメニューバーでMembers/Usersを選択します。
2. 次にAdd API accountをクリックし、必要に応じてオプションにチェックを入れ、確認後Add memberをクリックします。
注意:
保存が成功するとパスワード情報が表示されます。このパスワードは後で使用するため、大切に保管してください。
(2)Fairplay証明書の設定
左側のメニューバーでDRM settingsを選択し、Fairplayの証明書情報を対応する入力欄に記入してから、Save Settingsをクリックします。
(3)キーシードの設定
1. 左側のメニューバーでKey seedsを選択します。
2. Add seedをクリックし、Randomをクリックしてランダムなシードを生成します。注意:キー(Key)シードとIVシードの2つを生成する必要があります。
(4)CPIXの設定
説明:
MPSのバックエンドは、CPIXプロトコルを通じてDRMプロバイダーと通信し、キー情報を取得するため、ここでCPIXの設定が必要です。 1. 左側のメニューバーでIngest settingsを選択します。
2. Add CPIX configをクリックします。ここでのKey seedとInitialization vector (IV) seedは、上記(3)で設定した情報です。Stream type mappingと下部の4つのオプションは、ビジネス要件に応じて適切なキー生成ルールを選択してください。
(5)ライセンス認証の設定
左側のメニューバーでLicense delivery authorizationを選択し、ビジネス要件に応じて適切なライセンス認証方式を選択します。
ステップ3:キーリクエストURLの生成
MPSのバックエンドがキー情報を取得できるよう、キーリクエストURLを設定する必要があります。MPSのバックエンドはCPIXリクエストをDRMサービスに送信し、DRMサービスがリクエストを認証した後、対応するキー情報をMPSのバックエンドに返します。返されるキー情報もCPIX形式であり、MPSのバックエンドはそれを解析してキー情報を抽出し、メディアソースを暗号化します。キーリクエストURLの具体的な生成方法については、DRMtodayの公式ドキュメントをご参照ください。URLを生成するためのスクリプト実装例は以下の通りです。 #!/bin/bash
# First request to get ticket
TICKET_RESPONSE=$(curl 'https://auth.drmtoday.com/cas/v1/tickets' \\
-d "username=<API account>&password=<API account password>" \\
-s -D -)
# Extract location header if status is 201
if echo "$TICKET_RESPONSE" | grep -q "HTTP.*201"; then
TICKET_URL=$(echo "$TICKET_RESPONSE" | grep -i "Location:" | cut -d' ' -f2 | tr -d '\\r')
# Second request using the ticket URL
TICKET=$(curl "$TICKET_URL" \\
-d 'service=https://fe.drmtoday.com/frontend/cpix/v1/<Organization UUID>/ingest/<CPIX ID>')
else
echo "Failed to get ticket. Status code was not 201"
echo "$TICKET_RESPONSE"
exit 1
fi
# Concatenate the service URL with the ticket
SERVICE_URL="https://fe.drmtoday.com/frontend/cpix/v1/<Organization UUID>/ingest/<CPIX ID>?ticket=$TICKET"
echo $SERVICE_URL
(1)API account
左側のメニューバーでMembers/Usersを選択します。スクリプト内のAPI accountは、ステップ2で設定したAPIアカウント、API account passwordはそのパスワードです。
(2)Organization UUID
左側のメニューバーでAPI endpointsを選択します。ページ右上に表示されるのがOrganization UUIDです。
(3)CPIX ID
左側のメニューバーでIngest settingsを選択すると、ステップ2で作成したCPIX情報が表示されます。そのCPIX configのIDが、スクリプトで必要なCPIX IDです。
上記のスクリプト情報を正確に設定した後、リクエストを送信すると、必要なキーリクエストURLが取得できます。
注意:
キーリクエストURLには有効期限があり、期限が切れた場合は再生成が必要です。
APIによる暗号化タスクの開始
ビデオURLまたはCOS内のメディアファイルに対して処理タスクを開始します。APIドキュメントメディア処理をご参照ください。 POST / HTTP/1.1
Host: mps.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: ProcessMedia
{
"InputInfo": {
"Type": "URL",
"UrlInputInfo": {
"Url": "https://test-<appid>.cos.ap-nanjing.myqcloud.com/mps_input/test.mp4"
}
},
"OutputStorage": {
"Type": "COS",
"CosOutputStorage": {
"Region": "ap-nanjing",
"Bucket": "test-<appid>"
}
},
"OutputDir": "/mps_output/drm/",
"MediaProcessTask": {
"AdaptiveDynamicStreamingTaskSet": [
{
"Definition": <definition id>,
"DrmInfo": {
"Type": "widevine",
"SpekeDrm": {
"ResourceId": "test123",
"KeyServerUrl": "<DRM key server url>",
"Vector": "<IV>",
"EncryptionMethod": "cbcs",
"EncryptionPreset": "preset0"
}
}
}
]
},
"TaskNotifyConfig": {
"NotifyType": "URL",
"NotifyUrl": "<notify url>"
}
}
レスポンス例:
{
"Response": {
"TaskId": "24000035-WorkflowTask-cf405e365e75efb2a7bfdef514cc17dbtt195964",
"RequestId": "a7ba06b6-6810-4343-b55d-3afcc3dac64c"
}
}
サンプル説明:TaskIdはタスクを一意に識別するIDで、タスクの照会や管理に使用できます。
Type
暗号化タイプ。指定可能な値は以下の通りです。
simpleaes:AES-128暗号化
widevine
fairplay:HLSのみサポート。DASHはFairplay暗号化をサポートしていません。
playready
SpekeDrm
(1)ResourceId
リソースID。1~128文字の数字、英字、アンダースコア(_)、ハイフン(-)をサポートします。ResourceIdは、複数の異なるメディアストリームの暗号化に使用できる、一連のキー情報のIDと理解できます。DRMtodayのコンソールで、作成したすべてのResourceIdを確認できます。
(2)KeyServerUrl
キーリクエストURL。これは「事前準備」のステップ3で作成したものです。
注意:
DRMプロバイダーごとにサブストリーム数の制限は異なります。例えば、PallyConは5ストリーム以下、DRMtodayは最大9ストリームまでの暗号化をサポートしています。
(3)Vector
暗号化の初期化ベクトル(32バイトの文字列)。
(4)EncryptionMethod
暗号化方式。FairPlayのデフォルトはcbcs、PlayReadyとWidevineのデフォルトはcencです。
DRM規格ごとにサポートされる暗号化方式は異なります。
cbcs:PlayReady、Widevine、FairPlayがサポート。
cenc:PlayReady、Widevineがサポート。
(5)EncryptionPreset
サブストリームの暗号化ルール。デフォルトはpreset0。
preset0:すべてのサブストリームを同じキーで暗号化します。
preset1:各サブストリームを異なるキーで暗号化します。
再生検証
1. アクセス後、Try your streamをクリックします。
2. 関連する設定情報を入力します。
2.1 まず、Content URL欄に再生したいストリームのURLを入力します。HLSストリームの場合はTypeをHLSに、DASHストリームの場合はMPEG-DASHを選択します。
2.2 次に、クライアント認証情報を設定します。DRM EnvironmentはDRMtoday PRODUCTION、MerchantはAPI endpointsのOrganization UUID、User IDはMembers/UsersのMembers ID、Session IDは任意の値、Asset IDは暗号化タスク開始時に指定したResourceIdです。プレイヤーの設定完了後、Loadをクリックすると、暗号化されたストリームが正常に再生されます。