
Widevine L3 DRMをバイパスすることを実証するChrome拡張機能
このリポジトリには、かつて Windows マシンの Chrome 上で Widevine L3 DRM を回避するコードが含まれていました。
2021年5月31日以降、動作しなくなりましたが、リバースエンジニアリングの解説を読むことはできます。
更新
Google は、このリポジトリのほとんどのフォークに対して DMCA 削除要請を発行しました。当時のリポジトリのオリジナルコンテンツは以下にアーカイブされています。
Widevine は Google 所有の DRM システムであり、Netflix や Spotify などの多くの人気ストリーミングサービスでメディアコンテンツのダウンロードを防ぐために使用されています。
しかし、Widevine の最もセキュリティレベルの低い L3(ほとんどのブラウザやPCで使用される)は、100%ソフトウェアで実装されている(つまりハードウェアTEEがない)ため、リバースエンジニアリングやバイパスが可能です。
この Chrome 拡張機能は、ブラウザの Encrypted Media Extensions (EME) への呼び出しをハイジャックし、転送されるすべての Widevine コンテンツキーを復号化することで、実質的にクリアキー DRM に変換する方法を示しています。
この概念を実際に確認するには、拡張機能をデベロッパーモードで読み込み、https://bitmovin.com/demos/drm [更新: リンクが壊れた可能性があります] など、Widevine で保護されたコンテンツを再生する任意のウェブサイトにアクセスしてください。
キーは JavaScript コンソールに平文で記録されます。
例:
WidevineDecryptor: Found key: 100b6c20940f779a4589152b57d2dacb (KID=eb676abbcb345e96bbcf616630f1a3da)
メディア自体の復号化は、ffmpeg など MPEG-CENC ストリームを復号化できるツールを使用するだけです。
例:
ffmpeg -decryption_key 100b6c20940f779a4589152b57d2dacb -i encrypted_media.mp4 -codec copy decrypted_media.mp4
注意: この拡張機能は現在 Windows プラットフォームのみをサポートしています。
ブラウザのコンテキストでは、メディアの実際の復号化は通常、ライセンスサーバーから暗号化されたキーを含むライセンスを受け取った後にのみ、プロプライエタリなバイナリ(widevinecdm.dll、Content Decryption Module または CDM として知られる)内部で行われます。
このバイナリは通常、高度に難読化されており、Arxan や Whitecryption など、ソフトウェアの「保護」を謳うサードパーティのソリューションを利用しています。
そのバイナリに対してリバースエンジニアリングを行い、秘密鍵を抽出し、ライセンス応答から鍵復号化アルゴリズムを模倣することができます。
この PoC は、コード難読化、アンチデバッグ手法、ホワイトボックス暗号アルゴリズムなどのセキュリティ・バイ・オブスキュリティの方法がいずれ打ち破られ、ある意味で無意味であることをさらに示すために作成されました。
これは著作権侵害や海賊行為の促進を意図していません。
これは教育目的のみです。ストリーミングサービスから著作権で保護された素材をダウンロードすることは、利用規約に違反する可能性があります。自己責任でご使用ください。