DRMへの対処法-パート1:DRMに対する理解と保護されたコンテンツの生成方法

今回は、ストリーミング動画のためのDRMの要点について説明する複数のパートから成るシリーズの第一部です。この投稿では、DRMのエコシステムとDRMで保護されたコンテンツの生成方法について説明します。次回以降の投稿では、再生とライセンス取得についてお話します。

DRM:CTOも開発者も怖がらせる頭文字です。デジタル著作権管理(DRM)は、不正使用や著作権侵害からデジタルコンテンツを保護する方法です。より高品質のコンテンツが公共のインターネット経由で配信される為、多くのストリーミング動画プラットフォームにとっての必須条件となっています。 

一言で言うと、DRMは、動画コンテンツを確実に暗号化された形式で保管および送信されるようにして、権限のあるユーザーとデバイスだけが再生できるようにします。動画コンテンツは、多くの場合、装置との互換性を高めるために複数のDRM体系を使用して、ストリーミング配信される前に暗号化およびパッケージ化されます。ユーザーが動画の再生を試みる際、動画プレーヤーはライセンスサーバーからキーをリクエストします。サーバーは、そのユーザーとデバイスに権限があるかどうかを判断し、それから暗号解読のためのキーとともにライセンスのレスポンスを発します。すると、プレーヤーは暗号を解読し、ユーザーのためにコンテンツを再生できるようになります。

以下の図は、このプロセスについて解説したものです。このシリーズの投稿では、図のようなDRMで保護されたストリーミングシステムの設定に関する詳細について説明します。まず、利用可能な保護体系と各コンテンツを暗号化およびパッケージ化する方法について、いくつか概要を示します。

Flow chart of streaming video workflow with DRM.

Video Cloudのようなフル装備のオンライン動画プラットフォームを使用している場合、DRMのサポートは、アカウントやコンフィギュレーションを有効にするためにアップグレードするのと同じくらい簡単です。プレーヤーをカスタマイズしたり、カスタマイズしたストリーミングのワークフローを構築したりしている場合は、アップグレードしたり一部要素を追加してDRMをサポートする必要があります。

DRMを有効にする場合、ストリーミングのワークフローの要素を少なくとも3つ変更する必要があります。

コンテンツ - サポートしたいDRMシステムと互換性のあるフォーマットで、アセットをトランスコード、暗号化、パッケージ化します。

プレーヤー - 動画プレーヤーは、ライセンスサーバーから提供されるキーをリクエストして、動画の暗号を解読できなければなりません。これには、様々なプラットフォーム上で再生される、異なるプレーヤーが必要になる場合があります。

ライセンスサーバー - 動画プレーヤーは、一つのコンテンツがリクエストされるたびに、ライセンスサーバーから提供される暗号解読のためのキーをリクエストします。ライセンスサーバーは認証を行い、リクエストに応えます。

動画コンテンツの保護に利用できるDRMシステムは多数存在しますが、最も人気のあるウェブブラウザ、デバイス、セットトップボックスをサポートするためには、ビッグスリーにだけ気を付ければ十分です。

GoogleのWidevine – Widevineで保護されたコンテンツは、ChromeおよびFirefoxのウェブブラウザ、アンドロイドおよびChromecastのデバイスで再生できます。

AppleのFairPlay – FairPlayで保護されたコンテンツは、OS XのSafari、iPhone、iPad、AppleTVで再生できます。

MicrosoftのPlayReady – PlayReadyで保護されたコンテンツは、IE11およびEdgeのブラウザ、Windows Phone、Xbox、SDK経由のその他のプラットフォームで再生できます。

この互換性に関する表は、人気のあるプラットフォームの例と、このようなDRMシステムとの互換性を示しています。詳細についてはこちらをご覧ください。

Platform

Widevine
Modular

FairPlay PlayReady
Chrome    
FireFox    
Internet Explorer 11    
Microsoft Edge    
Safari (on OS X)    
Android    
iOS (via SDK)    
Windows Phone    
ChromeCast / AndroidTV  
Roku    
AppleTV    
Fire TV    
PlayStation    
Xbox One    

 

コンテンツのパッケージ化
権限のないプレーヤーやデバイスによるコンテンツの複製や再生を防止するため、DRMではコンテンツの暗号化が必要です。また、互換性のあるフォーマットでパッケージ化される必要もあり、一般的にはMPEG-DASHやHLSが使用されます。これは、トランスコーディングプロセスの一環として実行することができ、また、アセットを事後に暗号化およびパッケージ化することが可能です。プラットフォームやCDNによっては、プレーヤーからリクエストがあった際、ジャストインタイムでのアセットの暗号化およびパッケージ化もサポートしています。

 

WidevineとPlayReadyはともに、共通暗号化(CENC)およびMPEG-DASHをサポートしています。これは、コンテンツを一度暗号化およびパッケージ化し、いずれかのDRMシステムを使ってアセットの暗号を解読できるというものです。FairPlayはSAMPLE-AESの暗号化およびHLSのパッケージ化を使用しており、これら3つのシステムをすべてサポートするためには、コンテンツを二度暗号化およびパッケージ化する必要があります。Zencoderは、コンテンツを一度トランスコードし、そのコンテンツをCENCの暗号化が可能なMPEG-DASH、およびSAMPLE-AESの暗号化が可能なHLSの両方に、一回の操作でトランスマックス(多重化)します。

DRM処理したいそれぞれのアセットについて、暗号化キー、アセットID、およびキーIDを生成する必要があります。CENCおよびFairPlayはともに、AES 128ビットキーを使用してコンテンツを暗号化します。FairPlayの場合は、初期化ベクトル(IV)も生成および提供します。これらのキーおよびIDは、自分で生成したり、ライセンスサーバーから提供されるツールを使用して自動生成もできます。

これらのキーおよびIDをライセンスサーバーに取り込んで、プレーヤーに送信できるようにします。プレーヤーはこのキーを使ってコンテンツの暗号を解読します。このキーをバックアップ用に自分のプラットフォーム内に安全に保管しておくことも重要です。将来、違うライセンスサーバーに移行する際に、これらのキーを利用する必要があります。

キーおよびIDは、いくつかの他のパラメーターと共に、コンテンツの暗号化とパッケージ化に使用することもできます。以下のZencoderのジョブの例は、3つのDRMシステムのすべてについて、コンテンツをコード化、暗号化、パッケージ化する方法について説明しています。また、詳細について以下で示します。

このジョブには3つのmp4エンコードがあり(mp4-1500k、mp4-1000k、およびmp4-500k)、これらはHLSおよびDASH出力両方のソースとして使用されます。HLS出力は、FairPlayのDRM方法、暗号化キー、encryption_iv、encryption_key_urlを指定します。FairPlayの場合、encryption_key_urlは、実際にはアセットIDの参照先であり、このURLの形式は、ライセンスサーバーの実行により変わります。

DASH出力はCENCの暗号化方法、WidevineとPlayReadyのDRMシステム、およびさらにいくつかのフィールドを指定します。

Parameter Definition
content_id asset ID (user-defined string)
content_key AES 128-bit encryption key
key_id usually 16 Base64 encoded bytes (user defined or automatically generated)
license_acquisition_url URL of the license server’s Widevine or PlayReady endpoint
provider name of the license server provider

アセットID(ユーザー定義のストリング)

AES 128-ビット暗号化キー

通常は16 Base64エンコードバイト(ユーザー定義または自動生成)

ライセンスサーバーのWidevineまたはPlayReadyのエンドポイントのURL

ライセンスサーバープロバイダーの名称

 

コンテンツを暗号化およびパッケージ化したら、オリジンサーバーまたはCDNに転送してユーザーにストリーミング配信する必要があります。これは、Zencoderジョブの一環として実施することも可能です。本シリーズの次のパートでは、動画プレーヤーがDRMおよびライセンス取得プロセスと連携する方法について、詳細に説明します。