PlayReady コンテンツ暗号化
このトピックでは、PlayReady エコシステムのコンテンツを保護するために使用される暗号化アルゴリズムの概要について説明します。
注意
暗号化の用語と定義については、 用語集 を参照してください。
暗号化の基本
対称キー暗号化 は、最も単純な種類の暗号化です。 対称キー暗号化では、コンテンツの暗号化と暗号化解除に同じキーが使用されます。 対称キー アルゴリズムは通常、小さく高速です。 通常、暗号化タスクの大部分は、何らかの形式の対称キー暗号化によって処理されます。
一方、公開キー暗号化では、公開された公開キーを使用して暗号化を行い、別の秘密キーを使用して暗号化を解除します。 したがって、ユーザー "A" がユーザー "B" に公開キーを付与した場合、B は A のコンテンツを他の情報なしで暗号化できます。 コンテンツの送信方法に関係なく、A のみが読み取り可能です。 コンテンツ インターセプターには秘密キー (秘密鍵) がなく、メッセージの暗号化を解除できません。 公開キーが公開されているため、だれでも A を暗号化できますが、暗号化を解除できるのは A だけです。 公開キー暗号化には、計算的に複雑なアルゴリズムが必要です。
楕円曲線暗号化 (ECC) は、コンテンツの暗号化と暗号化解除に使用される公開キー暗号化アルゴリズムです。 楕円曲線を記述する計算的に複雑な関数です。 このアルゴリズムのコンポーネントは公開キーとして共有されます。 暗号化解除に使用されるその他のコンポーネントは、秘密キーを形成します。
ワンキー メッセージ認証コード (OMAC) は、ブロック暗号から構築されたメッセージ認証コードです。 OMAC1 と OMAC2 の 2 つの OMAC アルゴリズムがあります。
証明書 は、信頼されていないエンティティの信頼性を確保するために使用されます。 証明書の送信者は、秘密キーを使用してその名前 (デバイス識別子) に署名します。 その後、証明書の受信者は、送信者の公開キーを使用して証明書の署名を検証し、送信者の ID を確認します。 送信者は秘密キーの唯一の所有者であるため、公開キーを指定して秘密キーを作成することは困難であり、秘密キーで署名されていない限り、証明書は正しく検証されません。この場合、データ ソースは正しいと見なされ、認定された通信は安全です。
PlayReady 暗号化アルゴリズム
対称アルゴリズム
次の AES 暗号化モードがサポートされています。
AES 128 CTR モード — PlayReady システムは、サンプルが完全に暗号化されているファイルとストリーム、またはサンプルのパターンのみが暗号化されているファイルとストリームを、CTR モードの操作で保護できます。 これには、ISO/IEC 23001-7 で定義されている共通暗号化モード 'cenc' (共通暗号化スキーム) と 'cens' (暗号化されていない/暗号化されたバイトのパターンを使用した共通暗号化スキーム) が含まれます。
AES 128 CBC モード — バージョン 4.0 以降の PlayReady システムは、CBC モードの操作で、AES 128 コンテンツ キーで完全または部分的に暗号化されたファイルとストリームを保護できます。 これには、ISO/IEC 23001-7 で定義されている共通暗号化モード 'cbc1' と 'cbcs' と、CBC モードで AES 128 コンテンツ キーで暗号化されるその他の形式が含まれます。
注意
バージョン 1.X、2.X、3.X の PlayReady システムでは、CTR モード (共通暗号化モード 'cenc') で暗号化されたファイルのみを保護できます。 'cens' はサポートされていません。 バージョン 4.0 以降の PlayReady システムでは、CTR モード (共通暗号化モード 'cenc') および CBC モード (共通暗号化モード 'cbcs') で暗号化されたファイルを保護できます。 その他のモード 'cens' と 'cbc1' はサポートされていません。
ECC アルゴリズム
Microsoft PlayReadyシステムでは、コンテンツ キーの暗号化とプロトコル メッセージの署名に ECC (楕円曲線暗号化) が使用されます。
- ECC ElGamal アルゴリズム - 暗号化されたコンテンツ キーに使用されます。
- ECDSA (楕円曲線デジタル署名アルゴリズム) - PlayReady プロトコルで適用可能な場所でメッセージの署名に使用されます。
- NIST — Microsoft PlayReady システムは、該当する場合は ECC 暗号化に標準の NIST アルゴリズムを使用し、現在 P-256 楕円曲線を使用しています。
署名アルゴリズム
ライセンス、一時的なキー、またはデータに署名するために、PlayReady システムは AES OMAC1 を使用します。これは CMAC (暗号ベースのメッセージ認証コード) に相当し、2005 年 5 月に NIST の推奨事項になりました。 キーはランダムに生成されますが、データは SHA256 でハッシュされ、そのハッシュは ECC256 で署名されます。
ランタイムとパフォーマンスに関する考慮事項
コンテンツの再生がトリガーされると、PlayReady クライアントは最初の再生を開始する前にいくつかの手順を実行する必要があります。 これには、ライセンスの検索、バインド、またはライセンスの解釈、コンテンツ キーの暗号化解除、最後にコンテンツの暗号化解除の準備が含まれます。 PlayReady クライアント スタックは、コンテンツの一部にライセンスをバインドするのに時間がかかります。この操作は、コンテンツの暗号化解除とレンダリングを開始する前に必要です。 つまり、ライセンスをバインドする時間は、再生を開始するときの最初のフレームまでの時間、またはトラック間のギャップに影響します。 クライアント開発者とアプリケーション開発者は、ランタイムとパフォーマンスの問題のためにコードを最適化し、最初のフレームまでの時間を短縮し、ギャップレス再生を可能にすることを検討する必要があります。
保護されたコンテナーでは、対称キー暗号化を使用して、コンテンツの大部分を暗号化します。 ただし、公開キーの暗号化はライセンス内で使用されます。 これは、ライセンスにコンテンツの対称キーが含まれており、サーバーがクライアントの公開キーを使用してコンテンツの対称キーを暗号化するためです。
コンテンツの暗号化を解除する場合は、クライアントの秘密キーを使用して、ライセンスから対称キーの暗号化を解除します。 対称キーを抽出できるのは、ライセンスがバインドされているクライアントのみです。
秘密キーの暗号化解除は、対称暗号化解除よりも計算的に集中的です。そのため、ライセンスの解釈は計算負荷が高くなります。 ライセンスが適切に処理されると、対称キーが復号化され、コンテンツは小規模で高速なアルゴリズムを使用して復号化される可能性があります。
リソースが制約されているアプリケーションまたはデバイスの場合、スタートアップにはかなりの時間とリソースが必要です。 ただし、それが完了すると、リソースが解放され、暗号化解除が効率的に進み、必要な CPU サイクルやシステム リソースが少なくなります。