Widevineは、Googleが開発した独自のデジタル著作権管理(DRM)システムであり、メディアのコンテンツ保護を提供する。Widevineは3つのセキュリティレベルに分かれており、デバイス上のハードウェアに応じて保護レベルが異なる。Widevineは、ほとんどの主要なWebブラウザとAndroidおよびiOSに含まれている。

## 歴史

### 起源(1998-2006)

Widevineは、1999年にシアトルに拠点を置くInternet Direct MediaによりWidevine Cypherとして作成された。同社は幹部のブライアン・ベイカー氏と暗号研究者のジェレミー・ホーウィッツ氏によって設立され、社名をWidevine Technologiesに変更した。

2001年2月、Widevine Technologies 社は Widevine Cypher Enterprise をリリースした。当時、画面録画やネットワークの監視などの技術は一般的であったため、Widevine Cypherは、DES-X 暗号化を使用してこれらの技術を防止した。

Widevine Technologiesは、4月にベルビューに拠点を置くストリーミング会社Midstream Technologiesと提携した。

ベイカー氏は2001年に会社に戻り、会社の再建プロセスを作成した。そのプロセスには、会社の資本を増強し、多くの従業員を解雇することが含まれていた。

2003年6月、Widevine Technologiesは、ベンチャーキャピタルのConstellation VenturesとPacesetter Capitalから780万米ドルの資金を獲得した。

同年、Widevine Technologiesは、台湾の通信会社である中華電信と提携し、同社のビデオオンデマンドサービスを確保しようとした。

Widevine Technologiesは2004年、Constellation Ventures・Pacesetter Capital・Phoenix Capital Partnersから、VantagePoint Venture Partnersが主導する資金調達ラウンドでさらに資金を調達し、1300万ドルの利益を得た。

Widevine Technologiesは2005年、コンテンツ処理会社TVN Entertainment(現Vubiquity)と提携し、Mensorシステムを開発した。Mensorは、64ビットのペイロードを挿入することでコンテンツを保護する。

### 成長(2006–2010)

2006年4月、Constellation Ventures、Pacesetter Capital、Phoenix Capital Partners、およびVantagePoint Venture Partnersは、デジタル通信会社Cisco Systemsおよびカナダの電気通信会社 Telus に加わり,Widevine Technologies に 1,600万ドルを投資した。

Ciscoは、セットトップボックスメーカーのScientific Atlantaを70億ドルで買収したことに続き、投資をした。Widevineは6年間契約で、Telusのプラットフォームで自社のテクノロジーを使用する契約をTelusと締結した。

2007年8月3日、Widevine Technologies はコンテンツセキュリティ会社Verimatrixに対して特許侵害訴訟を起こした。両社は2010年3月に和解した。

2010年まで、Widevineを利用するベンダーは着実に増えていった。2008年8月、CinemaNowはWidevineを利用して、任天堂のWii、LGとサムスンのディスクプレーヤー、iPhoneとiPodを含む複数のデバイスにリーチを拡大。

Windowsを使用していないブラウザにDRMを実装するために、マイクロソフトはWidevine Technologyと協力した。

また、WidevineはAdobe Flashを使用するいくつかのストリーミングサービスにも実装され、これには仮想ソーシャルネットワークのGaia Onlineで配信されるソニーとワーナー・ブラザースのコンテンツも含まれる。

2009年12月、Widevineは通信会社のリバティ・グローバルとサムスンのベンチャーキャピタル子会社であるサムスン・ベンチャーズから1500万ドルの追加出資を受けた。

サムスンは2010年6月にWidevineの利用を拡大し、ラブフィルムは2010年7月にWidevineと契約を結んだ。

### Googleによる買収(2010–現在)

2010年12月3日、GoogleはWidevineを金額を公開せずに買収したと発表した。

この買収は、ViacomがYouTubeにViacomが所有するコンテンツをアップロードしたユーザーに対するGoogleの役割に関する訴訟であるViacom対YouTubeで、Viacomが控訴を申し立てたのと同じ日に行われた。2011年2月のCNNの報道では、Widevineの社内評価額が3,000万ドルから4,000万ドルであったにもかかわらず、グーグルが1億5,000万ドルを支払ったことが明らかになり、それまで同社にとって9番目に大きな買収となった。

## アーキテクチャ

Widevineは3つのセキュリティレベルに分かれており、使用されるセキュリティレベルは、クライアント内の信頼された実行環境(Trusted Execution Environment:TEE)の使用状況に依存する。

例えば、ARM Cortex-AプロセッサはTrustZoneテクノロジを実装しており、暗号化とビデオ処理をすべてTEE内で実行することが可能である。

Widevine L1では、メディアの復号と処理はすべてTEE内で行われ、コンテンツは元の解像度で利用することが可能である。

Widevine L2では、メディアの復号化と処理は、TEEが存在するにもかかわらず、ソフトウェアまたは専用のビデオハードウェアで行われ、コンテンツは固定解像度で利用することが可能である。

Widevine L3 では、メディアの復号化と処理はソフトウェアで行われ、TEEは存在せず、コンテンツは固定解像度で利用することが可能である。

Androidでは、Widevine L1をAndroidのメディア再生エンジンであるStagefrightに実装することができる。これはクアルコムのチップに実装されており、OpenMAX(OMX)コンポーネントがカーネルレベルでビデオドライバと通信する。

マルチメディアメモリは、Android 4.0で導入されたメモリマネージャであるION用のメモリ管理ユニット・ドライバを通じて切り出され、Android全体のさまざまなメモリ管理インターフェースに対応する。

その後、入出力バッファが割り当てられ、コンテンツは復号化されてTrustZoneのセキュアな入力バッファに格納される。

ただし、TEEが搭載されているデバイスであれば必ずWidevine L1に対応するわけではない。デバイスが発売されてから長い時間が経過した、脆弱性が発見された等の理由により、ライセンスがリボークされることもある。

### 入力→出力の概要

Widevineは、MPEG Common Encryption(CENC)、Encrypted Media Extensions(EME)、Media Source Extensions(MSE)、Dynamic Adaptive Streaming over HTTP(DASH)などを使用している。

さらに Widevineは、2009年にAppleによって開発された HTTP Live Streaming(HLS)プロトコルをサポートしている。

Widevineは、ブラウザはコンテンツ配信ネットワーク(CDN)から暗号化されたコンテンツを受信する。

その後、コンテンツはコンテンツ復号化モジュール(CDM)に送信され、CDMはライセンスサーバに送信するライセンス要求を作成した後、プレーヤーはライセンスサーバーからライセンスを受け取り、CDMに送信する。

また、ストリームを復号化するために、CDMはメディアとライセンスをTEEへのインターフェイスのOEMCryptoモジュールに送信する。

ほとんどは、セッションキー、復号化されたコンテンツキー、および復号化されたコンテンツストリームが、実行中の他のアプリケーションからアクセスできないようになっている。その後、コンテンツはビデオスタックに送信されてエンドユーザーに表示される。

これは通常、別個のメモリを備えたセカンダリプロセッサを通じて実現される。その後、コンテンツはビデオスタックに送信され、チャンクでエンドユーザーに表示される。ライセンス要求およびライセンス応答メッセージは、プロトコルバッファーを使用して送受信される。

ユーザー認証がベンダーの既存のプロキシ サーバーによって管理されている場合、ベンダーはライセンスサーバー内に独自のプロキシサーバーを実装する場合がある。このセットアップでは、仲介者としてプロキシサーバーを使用する必要がある。

Widevineでは、iOSおよびChromeOSの一部の構成とともに、Chrome 59以降のサービス証明書の使用が必要である。プロキシサーバーは、検証可能なフレームワークを実装していないブラウザに対するライセンスの発行を拒否する場合がある。

これは、検証済みメディアパス (VMP) とも呼ばれる。特に、Linux上で実行されているブラウザはVMPには含まれていない。同様に、クライアントデバイスで使用される高帯域幅デジタルコンテンツ保護 (HDCP) バージョンは、プロキシサーバーによって強制されることがある。

Widevine L1デバイスでは、証明書のプロビジョニングは通常1回実行される。プロビジョニング中に、CDMはnonceを作成し、証明書の復号化と整合性チェックのためのキー、および動的に生成されたバッファーを導出する。デバイスキーは信頼のルート (RoT) として扱われる。RoT 由来のクライアントキーは、HMACを使用してリクエストを保護する。RoTは、「キーボックス」と呼ばれる工場でプロビジョニングされたコンポーネントを通じて確立される。キーボックスの長さは128 バイトで、2つの特別なフィールドがあり、キーボックスの整合性は、最後の8バイトがマジックナンバーと一致することを確認し、続いて巡回冗長検査 (CRC-32) を行うことによってチェックされる。残りの120バイトは、内部デバイスID (32バイト)、Advanced Encryption Standard キー (16バイト)、およびプロビジョニングトークン (72バイト) で構成される。

Widevine キーボックス フィールドの概要

| フィールド | 説明 | サイズ (バイト) |
| --- | --- | --- |
| デバイスID | OEMCryptoモジュールで`OEMCrypto_GetDeviceID`を使用して取得。 | 32 |
| デバイスキー | 128ビットのAESキー `OEMCrypto_GenerateDerivedKeys`を使用し、OEMCryptoモジュールの複数のキーに派生する。 | 16 |
| プロビジョニング トークン | 「キーデータ」とも呼ばれ、リクエストをプロビジョニングするために使用されます。 OEMCrypto モジュールで`OEMCrypto_GetKeyData`を使用して取得。 | 72 |
| マジックナンバー | 「kbox」とも呼ばれる。 | 4 |
| CRC-32 | キーボックスの整合性を検証する。 | 4 |

各コンテンツキーは、128ビットのキーコントロールブロックと関連付けられ、セキュリティ制約を指定する。キーコントロールブロックは、ビデオとオーディオが別々に暗号化されるAndroidなどのクライアントのデータパスセキュリティ要件を保証し、TEEにタイムアウト値を提供する。

このブロックは、ランダムな初期化ベクトル(IV)で AES-128-CBCに暗号化され、フィールドはビッグエンディアンのバイトオーダーで定義される。

ブロックの値は、検証フィールド、持続時間フィールド(秒単位)、nonce、および制御ビット(すべて32ビットずつ)から構成される。

制御ビットは、使用可能なHDCPバージョン、データパスタイプ、nonceを使用するかどうか、使用するCGMS(Copy General Management System)を制御する一連のビットフィールドである。しかし、ベンダーはオーディオとビデオを同じキーで暗号化したり、オーディオをまったく暗号化しないこともある。

### クライアントのサポート

Widevineは、Google Chrome を含むほとんどの主要な Webブラウザに含まれている。Microsoft Edge、Vivaldi、Opera などのChromiumの派生製品もWidevineを実装している。2016年6月以降、FirefoxはNPAPIサポートを削除し、代わりにWidevineをサポートしている。ただしFirefoxはライセンス上プロプライエタリなWidevineバイナリを含んだ状態で配布することができず、また直接実行することにはプライバシーの問題もあることから、オープンソースのサンドボックス内にCDMをダウンロードすることで実現している。さらに、WidevineはAndroidとiOSでもサポートされている。

Android 5以降、Androidで使用されているGoogle ChromeはWidevineをサポートしている。2021年2月、Android版FirefoxにWidevineが追加された。

Androidでは、Widevineはハードウェア抽象化レイヤ(HAL)モジュールプラグインを通じて実装される。Android上のWidevineライブラリは、Android DRMによるAPI呼び出しをWidevineによるCDM呼び出しに変換する。Widevine L1ではWidevineライブラリはTEEのプロキシとして機能し、L3ではライブラリに難読化されたCDMが含まれる。

さらに、ライブラリに`liboemcrypto.so`は、Qualcomm Secure Execution Environment (QSEE) 用の`QSEEComAPI.so`などの特殊なTEEドライバを介して、Widevine L1用の Widevineトラストレットを要求する。

iOSはDASHまたはCENCをネイティブにサポートしていない。この制限を回避するために、WidevineはDASHをHLSに変換する。Universal DASH Transmuxer(UDT)は、libxml2などの XML パーサーを使用してDASHマニフェストを解析する。その後、UDTはHLSプレイリストを作成する。

Widevineを利用するストリーミングサービスには、Netflix、Disney+、Amazon Prime Video、Max、Hulu、Paramount+、Discovery+などがある。

## セキュリティ

Widevineは複数回悪用されている。ネゲヴのベングリオン大学の研究者は2016年6月にWidevineの脆弱性を発見した。

この脆弱性により、ユーザーはキャッシュ内の保護されたコンテンツの復号化されたバージョンを入手することができた。

2019年1月、セキュリティ研究者のDavid Buchananは、WidevineのAES-128のホワイトボックス実装における差分フォールト解析攻撃によってWidevine L3を破ったと主張し、Buchananはストリームの暗号化に使用されたオリジナルのキーを取得できるようになった。その後、ffmpegを使ってMPEG-CENCストリームを復号することができた。同様の脆弱性は2020年10月にも悪用されている。

2021年には、Android版のWidevine L3がリバースエンジニアリングされ、セキュリティ研究者によって破られた。

同年、Qi ZhaoがL1キーボックスを復元することで、AndroidのWidevine L1を破る最初の攻撃を発表した。