(57)【要約】      （修正有）【課題】ブロック暗号化法の特別な応用例を用いたデジタルコンテンツの保護方法を提供する。【解決手段】デジタルコンテンツは、暗号鍵と、初期化ベクトルとを用いて暗号化される。デジタルコンテンツは、複数のストライドを含み、各ストライドは、暗号化されるデータストリングと、暗号化されるデータブロックとを含む。各データブロックの暗号化のために用いられる初期化ベクトルは、ストライド内のデータストリングから導出される。更に、初期化ベクトルは、シード値と各ストライドのデータストリングとの排他的論理和演算によって算出される。【選択図】図１
2004318154.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵（８２）と、算出された初期化ベクトル（ＩＶ）（３０５）とを用いてデジタルコンテンツ（３００）を暗号化するステップを有し、
上記デジタルコンテンツ（３００）は、複数のストライド（３４０，３４５，３５０，３５５）を含み、各ストライド（３４０，３４５，３５０，３５５）は、暗号化されるデータストリング（３４２，３４７，３５２，３５７）と、データブロック（３４４，３４９，３５４，３５９）とを含み、上記算出された初期化ベクトル（ＩＶ）（３０５）は、各ストライド（３４０，３４５，３５０，３５５）の各データストリング（３４２，３４７，３５２，３５７）から導出される暗号化方法。
【請求項２】
上記算出された初期化ベクトル（ＩＶ）（３０５）は、排他的論理和（ＸＯＲ）演算を用いて、各データストリング（３４２，３４７，３５２，３５７）とシード値（３２８）とから更に導出されることを特徴とする請求項１記載の暗号化方法。
【請求項３】
上記算出された初期化ベクトル（ＩＶ）（３０５）は、排他的論理和（ＸＯＲ）演算を用いて、各データストリング（３４２，３４７，３５２，３５７）から更に導出されることを特徴とする請求項１記載の暗号化方法。
【請求項４】
上記各データストリング（３４２，３４７，３５２，３５７）は、電子コードブックモードの次世代暗号化規格（Advanced Encryption Standard）暗号を用いて暗号化されることを特徴とする請求項１記載の暗号化方法。
【請求項５】
上記データブロック（３４４，３４９，３５４，３５９）は、暗号文ブロック連鎖モードの次世代暗号化規格（Advanced Encryption Standard）暗号を用いて暗号化されることを特徴とする請求項１記載の暗号化方法。
【請求項６】
上記各データストリング（３４２，３４７，３５２，３５７）は、アクセスユニット（３１０）の所定バイト数のストライド（３４０）を含むことを特徴とする請求項１記載の暗号化方法。
【請求項７】
上記デジタルコンテンツ（３００）は、デジタル音楽ファイル（３００）又はデジタル映像ファイル（３００）であることを特徴とする請求項１記載の暗号化方法。
【請求項８】
ブロック暗号を用いて、データを暗号化するための初期化ベクトル（３０５）を算出するステップを有し、
上記データは、複数のストライド（３４０，３４５，３５０，３５５）を含み、各ストライド（３４０，３４５，３５０，３５５）は、暗号化されるデータストリング（３４２，３４７，３５２，３５７）と、データブロック（３４４，３４９，３５４，３５９）とを含み、上記算出された初期化ベクトル（ＩＶ）（３０５）は、各ストライド（３４０，３４５，３５０，３５５）の各データストリング（３４２，３４７，３５２，３５７）から導出される初期化ベクトル算出方法。
【請求項９】
上記初期化ベクトルを算出するステップは、各データストリング（３４２，３４７，３５２，３５７）に対する排他的論理和（ＸＯＲ）演算を実行するステップを更に有することを特徴とする請求項８記載の初期化ベクトル算出方法。
【請求項１０】
上記初期化ベクトルを算出するステップは、シード値（３２８）と各データストリング（３４２，３４７，３５２，３５７）との排他的論理和（ＸＯＲ）演算を実行するステップを更に有することを特徴とする請求項８記載の初期化ベクトル算出方法。
【請求項１１】
上記データは、デジタルコンテンツファイル（３００）であることを特徴とする請求項８記載の初期化ベクトル算出方法。
【請求項１２】
暗号化方法をマシンに実行させる命令を有する、マシンによって読取可能な媒体であって、該暗号化方法は、
暗号鍵（８２）と、算出された初期化ベクトル（ＩＶ）（３０５）とを用いてデジタルコンテンツ（３００）を暗号化するステップを有し、
上記デジタルコンテンツ（３００）は、複数のストライド（３４０，３４５，３５０，３５５）を含み、各ストライド（３４０，３４５，３５０，３５５）は、暗号化されるデータストリング（３４２，３４７，３５２，３５７）と、データブロック（３４４，３４９，３５４，３５９）とを含み、上記算出された初期化ベクトル（ＩＶ）（３０５）は、各ストライド（３４０，３４５，３５０，３５５）の各データストリング（３４２，３４７，３５２，３５７）から導出されるマシンによって読取可能な媒体。
【請求項１３】
上記算出された初期化ベクトル（ＩＶ）（３０５）は、排他的論理和（ＸＯＲ）演算を用いて、各データストリング（３４２，３４７，３５２，３５７）とシード値（３２８）とから更に導出されることを特徴とする請求項１２記載のマシンによって読取可能な媒体。
【請求項１４】
上記算出された初期化ベクトル（ＩＶ）（３０５）は、排他的論理和（ＸＯＲ）演算を用いて、各データストリング（３４２，３４７，３５２，３５７）から更に導出されることを特徴とする請求項１２記載のマシンによって読取可能な媒体。
【請求項１５】
上記各データストリング（３４２，３４７，３５２，３５７）は、電子コードブックモードの次世代暗号化規格（Advanced Encryption Standard）暗号を用いて暗号化されることを特徴とする請求項１２記載のマシンによって読取可能な媒体。
【請求項１６】
上記データブロック（３４４，３４９，３５４，３５９）は、暗号文ブロック連鎖モードの次世代暗号化規格（Advanced Encryption Standard）暗号を用いて暗号化されることを特徴とする請求項１２記載のマシンによって読取可能な媒体。
【請求項１７】
上記各データストリング（３４２，３４７，３５２，３５７）は、アクセスユニット（３１０）の所定バイト数のストライド（３４０）を含むことを特徴とする請求項１２記載のマシンによって読取可能な媒体。
【請求項１８】
上記デジタルコンテンツ（３００）は、デジタル音楽ファイル（３００）又はデジタル映像ファイル（３００）であることを特徴とする請求項１２記載のマシンによって読取可能な媒体。
【請求項１９】
初期化ベクトル算出方法をマシンに実行させる命令を有する、マシンによって読取可能な媒体であって、該初期化ベクトル算出方法は、
ブロック暗号を用いて、データを暗号化するための初期化ベクトル（３０５）を算出するステップを有し、
上記データは、複数のストライド（３４０，３４５，３５０，３５５）を含み、各ストライド（３４０，３４５，３５０，３５５）は、暗号化されるデータストリング（３４２，３４７，３５２，３５７）と、データブロック（３４４，３４９，３５４，３５９）とを含み、上記算出された初期化ベクトル（ＩＶ）（３０５）は、各ストライド（３４０，３４５，３５０，３５５）の各データストリング（３４２，３４７，３５２，３５７）から導出されるマシンによって読取可能な媒体。
【請求項２０】
上記初期化ベクトルを算出するステップは、各データストリング（３４２，３４７，３５２，３５７）に対する排他的論理和（ＸＯＲ）演算を実行するステップを更に有することを特徴とする請求項１９記載のマシンによって読取可能な媒体。
【請求項２１】
上記初期化ベクトルを算出するステップは、シード値（３２８）と各データストリング（３４２，３４７，３５２，３５７）との排他的論理和（ＸＯＲ）演算を実行するステップを更に有することを特徴とする請求項１９記載のマシンによって読取可能な媒体。
【請求項２２】
上記データは、デジタルコンテンツファイル（３００）であることを特徴とする請求項１９記載のマシンによって読取可能な媒体。
【請求項２３】
バス（８６５）を介してメモリ（８５５）に接続されたプロセッサ（８５９）と、
上記メモリ（８５５）から読み出され、上記プロセッサ（８５０）によって実行され、該プロセッサ（８５９）に、暗号鍵（８２）と、算出された初期化ベクトル（ＩＶ）（３０５）とを用いてデジタルコンテンツ（３００）を暗号化させ、上記デジタルコンテンツ（３００）は、複数のストライド（３４０，３４５，３５０，３５５）を含み、各ストライド（３４０，３４５，３５０，３５５）は、暗号化されるデータストリング（３４２，３４７，３５２，３５７）と、データブロック（３４４，３４９，３５４，３５９）とを含み、上記算出された初期化ベクトル（ＩＶ）（３０５）は、各ストライド（３４０，３４５，３５０，３５５）の各データストリング（３４２，３４７，３５２，３５７）から導出される暗号化プログラム（４００）とを備える暗号化システム。
【請求項２４】
上記算出された初期化ベクトル（ＩＶ）（３０５）は、排他的論理和（ＸＯＲ）演算を用いて、各データストリング（３４２，３４７，３５２，３５７）から更に導出されることを特徴とする請求項２３記載の暗号化システム。
【請求項２５】
上記算出された初期化ベクトル（ＩＶ）（３０５）は、排他的論理和（ＸＯＲ）演算を用いて、各データストリング（３４２，３４７，３５２，３５７）とシード値（３２８）とから更に導出されることを特徴とする請求項２３記載の暗号化システム。
【請求項２６】
上記各データストリング（３４２，３４７，３５２，３５７）は、電子コードブックモードの次世代暗号化規格（Advanced Encryption Standard）暗号を用いて暗号化されることを特徴とする請求項２３記載の暗号化システム。
【請求項２７】
上記データブロック（３４４，３４９，３５４，３５９）は、暗号文ブロック連鎖モードの次世代暗号化規格（Advanced Encryption Standard）暗号を用いて暗号化されることを特徴とする請求項２３記載の暗号化システム。
【請求項２８】
上記各データストリング（３４２，３４７，３５２，３５７）は、アクセスユニット（３１０）の所定バイト数のストライド（３４０）を含むことを特徴とする請求項２３記載の暗号化システム。
【請求項２９】
上記デジタルコンテンツ（３００）は、デジタル音楽ファイル（３００）又はデジタル映像ファイル（３００）であることを特徴とする請求項２３記載の暗号化システム。
【請求項３０】
バス（８６５）を介してメモリ（８５５）に接続されたプロセッサ（８５９）と、
上記メモリ（８５５）から読み出され、上記プロセッサ（８５０）によって実行され、該プロセッサ（８５９）に、ブロック暗号を用いて、データを暗号化するための初期化ベクトル（３０５）を算出させ、上記データは、複数のストライド（３４０，３４５，３５０，３５５）を含み、各ストライド（３４０，３４５，３５０，３５５）は、暗号化されるデータストリング（３４２，３４７，３５２，３５７）と、データブロック（３４４，３４９，３５４，３５９）とを含み、上記算出された初期化ベクトル（ＩＶ）（３０５）は、各ストライド（３４０，３４５，３５０，３５５）の各データストリング（３４２，３４７，３５２，３５７）から導出される暗号化プログラム（４００）とを備える暗号化システム。
【請求項３１】
上記暗号化プログラム（４００）により、上記プロセッサは、上記初期化ベクトルを算出する際、各データストリング（３４２，３４７，３５２，３５７）に対する排他的論理和（ＸＯＲ）演算を実行することを特徴とする請求項３０記載の暗号化システム。
【請求項３２】
上記暗号化プログラム（４００）により、上記プロセッサは、上記初期化ベクトルを算出する際、シード値（３２８）と各データストリング（３４２，３４７，３５２，３５７）との排他的論理和（ＸＯＲ）演算を実行することを特徴とする請求項３０記載の暗号化システム。
【請求項３３】
上記データは、デジタルコンテンツファイル（３００）であることを特徴とする請求項３０記載の暗号化システム。
【請求項３４】
デジタルコンテンツ（３００）を受け取る受信手段と、
暗号鍵（８２）と、算出された初期化ベクトル（ＩＶ）（３０５）とを用いて上記デジタルコンテンツ（３００）を暗号化する暗号化手段とを備え、
上記デジタルコンテンツ（３００）は、複数のストライド（３４０，３４５，３５０，３５５）を含み、各ストライド（３４０，３４５，３５０，３５５）は、暗号化されるデータストリング（３４２，３４７，３５２，３５７）と、データブロック（３４４，３４９，３５４，３５９）とを含み、上記算出された初期化ベクトル（ＩＶ）（３０５）は、各ストライド（３４０，３４５，３５０，３５５）の各データストリング（３４２，３４７，３５２，３５７）から導出される暗号化装置。
【請求項３５】
上記算出された初期化ベクトル（ＩＶ）（３０５）は、排他的論理和（ＸＯＲ）演算を用いて、各データストリング（３４２，３４７，３５２，３５７）から更に導出されることを特徴とする請求項３４記載の暗号化装置。
【請求項３６】
上記算出された初期化ベクトル（ＩＶ）（３０５）は、排他的論理和（ＸＯＲ）演算を用いて、各データストリング（３４２，３４７，３５２，３５７）とシード値（３２８）とから更に導出されることを特徴とする請求項３４記載の暗号化装置。
【請求項３７】
上記各データストリング（３４２，３４７，３５２，３５７）は、電子コードブックモードの次世代暗号化規格（Advanced Encryption Standard）暗号を用いて暗号化されることを特徴とする請求項３４記載の暗号化装置。
【請求項３８】
上記データブロック（３４４，３４９，３５４，３５９）は、暗号文ブロック連鎖モードの次世代暗号化規格（Advanced Encryption Standard）暗号を用いて暗号化されることを特徴とする請求項３４記載の暗号化装置。
【請求項３９】
上記各データストリング（３４２，３４７，３５２，３５７）は、アクセスユニット（３１０）の所定バイト数のストライド（３４０）を含むことを特徴とする請求項３４記載の暗号化装置。
【請求項４０】
上記デジタルコンテンツ（３００）は、デジタル音楽ファイル（３００）又はデジタル映像ファイル（３００）であることを特徴とする請求項３４記載の暗号化装置。
【請求項４１】
データを受信する受信手段と、
ブロック暗号を用いて、上記データを暗号化するための初期化ベクトル（３０５）を算出する初期化ベクトル算出手段とを備え、
上記データは、複数のストライド（３４０，３４５，３５０，３５５）を含み、各ストライド（３４０，３４５，３５０，３５５）は、暗号化されるデータストリング（３４２，３４７，３５２，３５７）と、データブロック（３４４，３４９，３５４，３５９）とを含み、上記算出された初期化ベクトル（ＩＶ）（３０５）は、各ストライド（３４０，３４５，３５０，３５５）の各データストリング（３４２，３４７，３５２，３５７）から導出される暗号化装置。
【請求項４２】
上記初期化ベクトル算出手段は、
各データストリング（３４２，３４７，３５２，３５７）に対する排他的論理和（ＸＯＲ）演算を実行する演算手段を更に備えることを特徴とする請求項４１記載の暗号化装置。
【請求項４３】
上記初期化ベクトル算出手段は、
上記初期化ベクトルを算出するステップは、シード値（３２８）と各データストリング（３４２，３４７，３５２，３５７）との排他的論理和（ＸＯＲ）演算を実行する演算手段を更に備えることを特徴とする請求項４１記載の暗号化装置。
【請求項４４】
上記データは、デジタルコンテンツファイル（３００）であることを特徴とする請求項４１記載の暗号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号を用いたデジタルコンテンツの保護に関し、特に、暗号文ブロック連鎖（cipher block chaining）方式を用いたデジタルコンテンツの保護に関する。
【背景技術】
【０００２】
デジタル著作権管理（Digital Rights Management）は、著作権が発生しているマテリアルを暗号によって保護し、通常はコンテンツとは独立して配信される規則によってマテリアルへのアクセスを管理する手法について用いられる用語である。保護されたコンテンツには、多くの場合、正当に取得されたライセンス（アクセスを管理する規則が組み込まれている）と、適切なライセンスが利用できる場合にはコンテンツを解釈（interpret）及び解除（release）するソフトウェアとがなければアクセスできない。この技術は、音楽レーベル及びこの他の音楽／コンテンツ販売業者に対して、自らのコンテンツを保護するための核となる技術として用いることが広く奨励されている。
【０００３】
特にストリーミング可能なメディア（例えば、コンテンツ全体が受信された後ではなく、又はローカルファイルから読み出されるのではなく、ネットワークを介してストリーミングされ、表現（rendering）（例えば再生）される音楽又は映像等のメディア）では、コンテンツの暗号化にある種の問題が生じる。これらの場合、暗号化はリアルタイムで行う必要があり、損失があるトランスポートプロトコルでは、送信されたコンテンツの全てがクライアントに受信されない場合もある。例えば、暗号化されたデータのブロックが失われると、ファイル全体を読み出せないこともある。更に、ある種の暗号化技術では、デジタルコンテンツのファイルのサイズが大きくなってしまうという問題もある。
【発明の開示】
【課題を解決するための手段】
【０００４】
ブロック暗号の暗号化法（block cipher cryptography）の特別な応用例を用いたデジタルコンテンツの保護を提供する。デジタルコンテンツは、暗号鍵と、算出された初期化ベクトル（initialization vector）とを用いて暗号化される。デジタルコンテンツは、複数のストライドを含み、各ストライドは、暗号化されるデータストリング（string of data）と、暗号化されるデータブロック（block of data）とを含む。データブロックを暗号化するために用いられる算出された初期化ベクトルは、暗号化されるストライド内のデータストリングから導出される。更に、初期化ベクトルは、シード値と各ストライドのデータストリングとの排他的論理和演算を実行することによって算出される。
【発明を実施するための最良の形態】
【０００５】
以下、添付の図面を用いて、本発明の実施例を詳細に説明する。添付の図面においては、類似した要素には、同じ参照符号を付す。添付の図面は、本発明を実施することができる特定の実施例を例示的に示している。これらの実施例については、当業者が本発明を実施することができるよう、詳細に説明するが、この他の実施例も可能であり、本発明の範囲から逸脱することなく、論理的、機械的、電気的、機能的及びこの他の変更を行うことができる。したがって、以下の詳細な説明は、限定的には解釈されず、本発明の範囲は、添付の請求の範囲によってのみ定義される。
【０００６】
図１は、ネットワーク環境１００の一例を示している。ネットワーク環境１００は、デジタルコンテンツプロバイダサーバ１０と、クライアント装置２０と、クライアント装置２５と、クライアント装置３０とを備えている。デジタルコンテンツプロバイダサーバ１０は、例えばインターネットであるネットワーク４０の一部であり、又はネットワーク４０に接続されており、クライアント又はサーバコンピュータとして、各クライアント装置２０、２５、３０とデータを交換する。なお、本発明はインターネットの使用に限定されるものではなく、直接接続された及びプライベートネットワークに本発明を適用してもよいことは明らかである。
【０００７】
デジタルコンテンツプロバイダサーバ１０には、デジタル音楽、電子書籍、ソフトウェアソースコード、映画等の著作権が消滅した（public domain）又は著作権保護されたデジタルコンテンツが保存されている。更に、デジタルコンテンツプロバイダサーバ１０は、デジタル権利管理コンポーネント５を備えている。デジタル権利管理コンポーネント５は、クライアント装置２０、２５、３０を使用するデジタルコンテンツの１人以上の正規のユーザが用いる生のデジタルコンテンツを暗号化する。
【０００８】
各クライアント装置２０、２５、３０は、復号コンポーネント７と、デジタルコンテンツ再生コンポーネント８とを備える。復号コンポーネント７は、暗号化されたデジタルコンテンツ（例えば、デジタル権利管理コンポーネント５によって暗号化されたデジタルコンテンツ）を復号する機能を提供する。デジタルコンテンツ再生コンポーネント８は、デジタルコンテンツを表現（rendering）する機能を提供する。各クライアント装置２０、２５、３０は、例えばパーソナルコンピュータ、携帯型デジタル音楽プレーヤ、携帯型デジタル映像プレーヤを始めとする、デジタルコンテンツを表現するために用いられる周知の機器のいずれであってもよい。
【０００９】
図２は、図１に示すネットワーク環境１００において、デジタルコンテンツを交換する処理フロー２００の一例を示している。
【００１０】
ステップ２１０において、デジタル権利管理コンポーネント５は、生のデジタルコンテンツを受け取る。生のデジタルコンテンツは、例えば、著作権保護されたデジタル音楽ファイル又は映画ファイル等であってもよい。
【００１１】
ステップ２２０において、デジタル権利管理コンポーネント５は、図３Ａ、図３Ｂ、図３Ｃ、図３Ｄ、図３Ｅ、及び図４を用いて後述するように、ブロック暗号の暗号化法及びデジタルコンテンツに基づいて算出される初期化ベクトル値（initialization vector value）を用いて生のデジタルコンテンツを暗号化する。これにより、例えば、暗号化の際に複数の初期化ベクトルを加算する必要がなくなり、デジタルコンテンツのサイズを大きくしないで済む。
【００１２】
ステップ２３０において、デジタル権利管理コンポーネント５は、ネットワーク４０を介して、暗号化されたデジタルコンテンツをクライアント装置（例えば、クライアント装置２０）に送信する。また、デジタル権利管理コンポーネント５は、暗号化されたデジタルコンテンツを復号するための復号鍵も送信する。復号鍵の値は、暗号鍵と同じであってもよい。デジタル権利管理コンポーネント５は、復号鍵を暗号化されたデジタルコンテンツの一部として、又は暗号化されたデジタルコンテンツとは別に送信してもよい。更に、デジタル権利管理コンポーネント５は、シード値（例えばパラメータの値）を暗号化されたデジタルコンテンツの一部として、又は暗号化されたデジタルコンテンツとは別に送信してもよい。
【００１３】
ステップ２３５において、クライアント装置２０は、暗号化されたデジタルコンテンツを受信する。
【００１４】
ステップ２４０において、クライアント装置２０の復号コンポーネント７は、図６を用いて後に詳細に説明するように、少なくとも復号鍵と、デジタルコンテンツに基づいて算出された初期化ベクトルとを用いて、デジタルコンテンツを復号する。
【００１５】
ステップ２５０において、クライアント装置２０のデジタルコンテンツ再生コンポーネント８は、復号されたデジタルコンテンツを再生する。例えば、デジタルコンテンツ再生コンポーネント８は、復号された音楽ファイルを再生するための音楽再生ソフトウェアアプリケーションであってもよい。
【００１６】
以下、暗号化及び復号アルゴリズム処理の様々なパラメータを定義し、これらのパラメータの値を用いて、ストリーミングメディアにアルゴリズム処理を適用する様々な具体例を説明する。具体的には、以下では、ここで説明する算出された初期化ベクトル（initialization vector：以下、ＩＶという。）値を用いた、ブロック暗号の暗号化法（block cipher cryptology）に基づいてデジタルコンテンツを暗号化及び復号する暗号化及び復号論理ユニット（例えば、アクセスユニット）について説明する。ブロック暗号は、１ビット毎ではなく、データブロック（例えば、６４個の連続するビット）内の全てのビットに対して、暗号鍵（cryptographic key）（例えば、暗号鍵（encryption key））及びアルゴリズムを同時に適用して、平文を暗号化する（暗号文を生成する）方法である。なお、平文は暗号化されていないデータを表し、暗号文は暗号化されたデータを表す技術用語である。
【００１７】
後述するように、この方法では、デジタルコンテンツを論理ユニット（例えば、アクセスユニット）に再分割し、ブロック暗号の暗号化法を用いて、各論理ユニットを個別に暗号化する。これにより、（デジタルコンテンツの伝送中に）暗号化されたデジタルコンテンツファイルのある部分が失われても、デジタルコンテンツの残りの部分の復号を次の論理ユニットから再開することができる。
【００１８】
図３Ａは、複数のアクセスユニットを有するデジタルコンテンツ３００の具体例を示している。具体的には、デジタルコンテンツ３００は、アクセスユニット３１０と、アクセスユニット３１５と、アクセスユニット３２０と、アクセスユニット３２５とを含んでいる。これらのアクセスユニットは、各アクセスユニットのコンテンツがデジタルコンテンツの論理的部分（logical subdivision）であり、データコンテンツ自体に関する情報（knowledge）がなくても定義及びアドレス指定できるように選択される。また、アクセスユニットは、例えば、デジタルコンテンツの伝送中にデジタルコンテンツの一部が失われても、再生に著しい影響がないような十分に小さなサイズに設定される。アクセスユニットは、デジタルコンテンツの固有の特性（例えば、ＭＰＥＧ４によって定義されたアクセスユニット）であってもよく、又は復号コンポーネント７のパラメータとして定義してもよい。各アクセスユニットは、複数のストライド（stride）を含んでいる。
【００１９】
図３Ｂは、複数のストライドを有するデジタルコンテンツ３００のアクセスユニット３１０の具体例を示している。ストライドとは、アクセスユニット内の所定の長さのデータである。具体的には、アクセスユニット３１０は、ストライド３４０と、ストライド３４５と、ストライド３５０と、ストライド３５５とを含んでいる。各ストライド３４０、３４５、３５０、３５５内には、暗号化されるデータブロックが存在する。以下、１つ以上のブロック暗号モードによってストライドの一部を暗号化する手法について説明する。これらのモードとの一例としては、例えば、暗号化されるデータストリング（string of data）をブロック（例えば、１６バイトブロック）に分割し、各ブロックを個別に暗号化する電子コードブロック（electronic codebook：以下、ＥＣＢという。）モード等がある。
【００２０】
暗号化モードのこの他の例としては、平文の各ブロックを複数のブロック（例えば、１６バイトブロック）に分割し、暗号化されるブロックの前の暗号文ブロックとＸＯＲ演算を行う暗号文ブロック連鎖（cipher block chaining：以下、ＣＢＣという。）モードがある。同じ平文の暗号化を繰り返して同一の暗号文を生成してしまうことを防ぐために、ＣＢＣでは、通常、異なる初期化ベクトル（initialization vector：以下、ＩＶという。）を用いて、各暗号化シーケンス（例えば、アクセスユニット）を開始する。
【００２１】
各暗号化ブロックシーケンス（又は倫理ユニット）に初期化ベクトルを含めることによって、復号コンポーネント７に配信される暗号化されたデジタルコンテンツに１つ以上の初期化ベクトルが組み込まれるため、ファイルサイズが大きくなってしまう。これは、デジタルコンテンツがデジタルファイル内の特定の位置（例えば、デジタル映画ファイル内のシーンの位置、音楽コンパクトディスク（compact disk：ＣＤ）内の特定の曲トラックの位置等）を示すインデックスを含んでいる場合に問題となる。すなわち、初期化ベクトルを含ませることにより、物理ヘッダ位置がずれてしまい、（ファイル伝送前に物理ヘッダ位置を再計算しなければ）ファイルが読み取り不可能になってしまう虞がある。
【００２２】
一実施例においては、デジタル権利管理コンポーネント５は、選択されるデータストリングがアクセスユニット毎に十分異なり、暗号化される各アクセスユニットついてそれぞれ異なる初期化ベクトルが生成されるとの仮定に基づき、各アクセスユニットについて暗号化されるデータの各ストライドから選択されたデータストリングからアルゴリズム的に（algorithmically）選択された初期化ベクトルを用いて、生のデジタルコンテンツを暗号化する。
【００２３】
図３Ｃは、アクセスユニット３１０からＩＶ値を算出する手法の一例を示している。ここでは、各ストライドの最初の１６バイトをデータストリング３４２、データストリング３４７、データストリング３５２、データストリング３５７として示している。図３Ｄは、図３Ｃに示す具体例において、ＩＶを算出する処理フロー３６０を示している。
【００２４】
ステップ３６５において、デジタル権利管理コンポーネント５は、シード値３２８を取得する。シード値は、初期化ベクトルの初期値を定義する。
【００２５】
ステップ３７０において、デジタル権利管理コンポーネント５は、シード値３２８と、アクセスユニット３１０の第１のストライド３４０のデータストリング３４２との排他的論理和演算（exclusive disjunction function）（例えば、ＸＯＲ演算）を実行する。
【００２６】
ステップ３７５において、デジタル権利管理コンポーネント５は、アクセスユニット３１０内に更なるストライドがあるか否かを判定する。アクセスユニット３１０内に更なるストライドがある場合、制御はステップ３８０に進む。一方、アクセスユニット３１０内に更なるストライドがない場合、制御はステップ３８５に進む。この具体例では、デジタル権利管理コンポーネント５は、次のストライドとして、ストライド３４５が存在すると判定する。
【００２７】
ステップ３８０において、デジタル権利管理コンポーネント５は、現在の初期ＩＶ値と、ストライド３４５のデータストリング３４７とのＸＯＲ演算を行い、更新された初期ＩＶ値を算出する。続いて、処理は、ステップ３７５に戻り、データストリング３５２、３５７について同様の処理が繰り返される。
【００２８】
ステップ３８５において、デジタル権利管理コンポーネント５は、算出されたＩＶ値３０５を現在の初期ＩＶ値に設定する。一実施例においては、算出されたＩＶ値は、デジタル権利管理コンポーネント５の基底にあるＡＥＳ ＣＢＣ暗号（AES CBC cipher）に供給され、これにより、アクセスユニット３１０内の特定のデータブロックが暗号化される。
【００２９】
なお、本発明は、各ストライドの最初の１６バイトに基づいて、算出されたＩＶ値を導出する上述の実施例に限定されるものではない。例えば、他の実施例においては、算出されたＩＶ値は、復号ソフトウェアがその位置を検出することができる、アクセスユニットの一組の実行特定の部分（例えば、１６バイトデータストリング）から導出してもよい。好ましくは、特定の部分は、各アクセスユニットに対して、合理的に固有なＩＶ値が算出されるように、十分なランダム性を生じる高い可能性を有する必要がある。
【００３０】
なお、この実施例では、シード値３２８を用いているが、ＩＶ値を算出する際、シード値３２８は必要ではなく、すなわち、算出されたＩＶ値は、シード値３２８を用いなくても導出することができる。例えば、ＩＶ値は、シード値３２８を含むことなく、アクセスユニットの各ストライドの最初の１６バイトのＸＯＲ演算を行うことによって導出してもよい。
【００３１】
図３Ｅは、図３Ｃ及び図３Ｄを用いて説明した、算出されたＩＶ値３０５を用いて、アクセスユニット３１０を暗号化する処理の一例を示している。図３Ｆは、図３Ｃに示すアクセスユニット３１０を暗号化する処理フロー３９０の一例を示している。以下、暗号鍵の値（Ｋｃ）及び算出されたＩＶ値を入力パラメータとして用いる暗号化処理について説明する。
【００３２】
ステップ３９２において、デジタル権利管理コンポーネント５は、上述のようにして算出されたＩＶ値３０５を受け取る。
【００３３】
ステップ３９４において、デジタル権利管理コンポーネント５は、算出されたＩＶ値３０５及び暗号鍵８２（Ｋｃ）を用いて、データブロック３４４、３４９、３５４、３５９を暗号化（８５）する。一実施例においては、暗号鍵の値は、ランダムに生成された１６バイト（１２８ビット）の値であり、ＡＥＳアルゴリズムの暗号鍵として用いられている。データブロック３４４、３４９、３５４、３５９は、暗号文ブロック連鎖のブロック暗号モード（cipher block chaining block cipher mode）によって暗号化される。これにより、暗号化されたデータブロック３４４ｃ、３４９ｃ、３５４ｃ、３５９ｃが生成される。
【００３４】
ステップ３９６において、データストリング３４２、３４７、３５２、３５７を暗号化する。データストリング３４２、３４７、３５２、３５７は、電子コードブロックのブロック暗号モード（electronic code book block cipher mode）によって暗号化する。これにより、暗号化されたデータストリング３４２ｃ、３４７ｃ、３５２ｃ、３５７ｃが生成される。
【００３５】
処理フロー３６０、３９０は、暗号化されるデジタルコンテンツのアクセスユニット毎に繰り返し行ってもよい。ここで、このような処理では、デジタルコンテンツ３００のサイズは大きくならず、ヘッダ位置がずれることもない。すなわち、暗号化されたデジタルコンテンツのサイズは、暗号化されていないデジタルコンテンツのサイズのままである。これは、暗号化されたデジタルコンテンツが、例えば先に暗号化したストライド又はタイムスタンプ等の他のソースからの初期化ベクトルを含まないためである。更に、後述するように、復号時においては、ＩＶを再構築するために必要なデータは、暗号文ブロックから得ることができる。
【００３６】
一具体例においては、デジタル権利管理コンポーネント５は、一般的にＡＥＳと呼ばれる次世代暗号化規格（Advanced Encryption Standard）に基づく暗号化アルゴリズムを有する。ＡＥＳは、１２８ビット（例えば、１６バイト）のブロックサイズと１２８、１９２及び２５６ビットの鍵サイズを用いるブロック暗号化方式である。但し、本発明は、ＡＥＳの使用に限定されるものではない。当業者に周知の他のアルゴリズムを用いてもよいが、説明を簡潔にするため、それらの全てについては説明しない。
【００３７】
一実施例においては、デジタル権利管理コンポーネント５及び復号コンポーネント７は、暗号鍵の値及び算出されたＩＶ値に加えて、複数のパラメータ値を用いて、デジタルコンテンツの暗号化及び復号を行う。このようなパラメータ値としては、これらに限定されるものではないが、アクセスユニットサイズ値、暗号化ストライドサイズ値、完全暗号化値（complete encryption value）、暗号化チャンクオフセット値（encryption chunk offset value）、暗号化チャンクサイズ値（encryption chunk size value）、ＩＶストライドカウント値等がある。
【００３８】
アクセスユニットサイズ値は、デジタル権利管理コンポーネント５によって処理されるアクセスユニットのサイズを示す値である。一実施例においては、各アクセスユニットのサイズが異なっていてもよく、アクセスユニットの境界は、当業者に周知のように、識別可能である。
【００３９】
暗号化ストライドサイズ値は、ストライドのデータ長を示す値である。一実施例においては、暗号化ストライドサイズ値の標準値は、５１２バイトである。アクセスユニットは、暗号化ストライドサイズ値の整数倍（even multiple）である必要はない。したがって、アクセスユニットの最後のストライドは、暗号化ストライドサイズ値より短くなる場合もある。
【００４０】
完全暗号化値は、デジタルコンテンツファイルに適用される暗号化のパーセンテージ又はデジタルコンテンツファイルに適用された暗号化のパーセンテージを識別するために用いられるフラグである。以下では、１００％の暗号化及び２５％の暗号化を行う具体例を説明する。但し、本発明は、これらの暗号化パーセンテージに限定されるものではない。これらに代えて、デジタル権利管理ソフトウェアは、他のパーセンテージによってデジタルコンテンツを暗号化してもよい。
【００４１】
暗号化チャンクオフセット値は、後述するように、暗号化されるデータブロックのストライドの最初からのオフセットを示す値である。
【００４２】
ＩＶストライドカウント値は、算出されたＩＶ値に貢献したストライドの数を示す値である。一実施例においては、ＡＥＳ ＣＢＣ処理において用いられるＩＶ値（例えば、算出されたＩＶ値）は、暗号化されるアクセスユニットのコンテンツから算出される。アクセスユニットのサイズが（ＩＶストライドカウント値×暗号化ストライドサイズ値）より小さい場合、デジタル権利管理コンポーネント５は、ＩＶストライドカウント値を調整し、アクセスユニット内の同数の完全なストライドのみがＩＶ値の算出に貢献するようにする。最後のストライドが部分的である（例えば、最後のストライドが暗号化ストライドサイズ値より短い）場合、ＩＶストライドカウント値は、この部分的ストライドがＩＶ値の算出に貢献するように設定される。更に、部分的ストライドは、少なくとも１６バイトの長さを有している場合、ＩＶ値の算出に貢献する。この他の場合、そのストライドは、ＩＶ値の算出への貢献に関しては無視される。この実施例では、ＩＶ値の算出に貢献するブロックの数を４個に制限している。
【００４３】
暗号化チャンクサイズ値は、暗号化されるデータブロックのサイズを示す値である。一具体例においては、暗号化チャンクサイズ値は、（暗号化ストライドサイズ値−暗号化チャンクオフセット値）以下である必要がある。ＡＥＳに準拠するためには、ブロックサイズは１６バイト（鍵サイズに等しいサイズ）以上である必要があるため、暗号化チャンクサイズ値は、１６バイト以上である必要がある。更に、暗号化チャンクサイズ値は、ＡＥＳブロックサイズ（１６バイト）の整数倍（multiple）である必要がある。例えば、一実施例においては、４９６バイトと１２８バイトの２つの暗号化チャンクサイズ値を用いる。１００％の暗号化では、完全暗号化パラメータ（complete encryption parameter）は、「真（true）」に設定され、ストライド全体（５１２バイト）が暗号化される。このうち、４９６バイトは、ＡＥＳ ＣＢＣを用いて暗号化され、ＩＶ値の算出に貢献する１６バイトのコンテンツは、ＡＥＳ ＥＢＣを用いて暗号化される。
【００４４】
図４は、デジタル権利管理コンポーネント５よって、パラメータ値に基づいて、著作権保護された生のデジタルコンテンツを暗号化する処理フロー４００の一例を示している。
【００４５】
ステップ４０５において、デジタル権利管理コンポーネント５は、暗号化されるアクセスユニットのアクセスユニットサイズ値を判定する。このアクセスユニットサイズ値が３２バイトより小さい場合、制御はステップ４１０に進む。アクセスユニットサイズ値が３２バイト以上である場合、制御はステップ４４０に進む。
【００４６】
ステップ４１０において、デジタル権利管理コンポーネント５は、完全暗号化値を判定する。完全暗号化値が「偽（false）」に設定されている場合、制御はステップ４１１に進む。一方、完全暗号化値が「真（true）」に設定されている場合、制御はステップ４１３に進む。
【００４７】
ステップ４１１において、アクセスユニットは、暗号化されず、平文のままにされ、制御はステップ４６５に進む。ここでは、アクセスユニットのサイズが３２バイト以下であり、デジタルコンテンツの他の部分が暗号化されているので、このアクセスユニットについては暗号化しなくても十分であるため、このアクセスユニットは暗号化しない。
【００４８】
ステップ４１３において、デジタル権利管理コンポーネント５は、アクセスユニットサイズ値が０バイトより大きく、１６バイトより小さいか否かを判定し、アクセスユニットサイズ値が０バイトより大きく、１６バイトより小さい場合、制御はステップ４１５に進み、この他の場合、制御はステップ４１４に進む。ステップ４１４において、アクセスユニットサイズ値が１６バイトであると判定された場合、制御はステップ４２０に進む。ステップ４１４において、アクセスユニットサイズ値が１６バイトより大きいと判定された場合、制御はステップ４２５に進む。
【００４９】
ステップ４１５において、デジタル権利管理コンポーネント５は、アクセスユニットを構成するデータ（例えば、ｎ個のアクセスユニットバイト）と、Ｅ（Ｋｃ、シード値）の左側のｎ個のバイトとのＸＯＲ演算を行い、続いて制御はステップ４６５に進む。
【００５０】
ステップ４２０では、デジタル権利管理コンポーネント５は、ＥＣＢモードを用いたＡＥＳによって、アクセスユニットの１６バイトを暗号化し、続いて制御はステップ４６５進む。
【００５１】
ステップ４２５では、デジタル権利管理コンポーネント５は、シード値とアクセスユニットの最初の１６バイトとのＸＯＲ演算を行ってＩＶ値を算出する。
【００５２】
次に、ステップ４３０において、デジタル権利管理コンポーネント５は、ＥＣＢモードを用いたＡＥＳによって、アクセスユニットの最初の１６バイトを暗号化する。
【００５３】
ステップ４３５において、デジタル権利管理コンポーネント５は、残りのｎ−１６バイトと、Ｅ（Ｋｃ、算出されたＩＶ値）の左側のｎ個のバイトとのＸＯＲ演算を行い、続いて制御はステップ４６５に進む。
【００５４】
ステップ４４０において、デジタル権利管理コンポーネント５は、上述したパラメータ値を検査及び初期化する。デジタル権利管理コンポーネント５は、ＩＶストライドカウント値をアクセスユニット内のストライドの個数に設定する。ＩＶストライドカウント値は、アクセスユニットサイズ値を暗号化ストライドサイズ値によって除算することによって算出される。
【００５５】
カウントの余りとなるストライドは、部分的なストライドとなる。なお、（部分的ストライドとなる可能性がある）最後のストライドの長さが１６バイトより短い場合であって、ＩＶストライドカウント値がアクセスユニット内のストライドの個数に等しいために、このストライドがＩＶ値の算出に貢献する場合、この１６バイトより短いフラグメントが使用されないように、ＩＶストライドカウント値を１デクリメントする。
【００５６】
デジタル権利管理コンポーネント５は、暗号化チャンクオフセット値を設定する。一実施例においては、暗号化チャンクオフセット値は、１６バイトに設定する。
【００５７】
ステップ４４５において、デジタル権利管理コンポーネント５は、算出されたＩＶ値を決定する。一実施例においては、算出されたＩＶ値は、図３Ｃ及び図３Ｄを用いて上述したように、アクセスユニットの最初のＩＶストライドカウント値の最初の１６バイトのそれぞれから導出される。
【００５８】
ステップ４５０において、デジタル権利管理コンポーネント５は、生のデジタルコンテンツ全体を暗号化するか否かを判定する。完全暗号化値が「真」に設定されている場合、制御はステップ４５５に進む。完全暗号化値が「偽」に設定されている場合、制御はステップ４６０に進む。
【００５９】
ステップ４５５において、デジタル権利管理コンポーネント５は、算出されたＩＶ値を算出するために用いる各ストライドのデータのランダムな１６バイトのストリングを暗号化する。例えば、デジタル権利管理コンポーネント５は、電子コードブック（ＥＣＢ）モードのＡＥＳを用いて、各ストライドの最初の１６バイトのストリングを暗号化する。一実施例においては、算出されたＩＶ値は、この演算には用いられない。
【００６０】
ステップ４６０において、デジタル権利管理コンポーネント５は、ＣＢＣモードのＡＥＳにより、残りのデータブロックを暗号化する。例えば、デジタル権利管理コンポーネント５は、ストライドの最初からの暗号化チャンクオフセットから開始され、暗号化チャンクサイズに相当する長さを有するデータブロックを暗号化する。算出されたＩＶ値は、（各アクセスユニットについて、図３Ｅ及び図３Ｆを用いて説明したように）ＡＥＳ暗号の初期ＩＶ値として用いられる。一実施例においては、各ストライドにおける適用な可能な各データブロックは、各アクセスユニットについて開始される同じＡＥＳ暗号文ブロック連鎖の一部である。他の実施例においては、ＡＥＳは、各ストライドから再開される。
【００６１】
ステップ４６５において、デジタル権利管理コンポーネント５は、暗号化したデジタルコンテンツをクライアント装置に送信する。
【００６２】
なお、算出されたＩＶ値は、必ずしも、暗号化されるアクセスユニットの各ストライドの最初の１６バイトから導出する必要はない。例えば、他の実施例においては、算出されたＩＶ値は、暗号化されるアクセスユニットの各ストライドからの、いかなる任意の（但し、位置が特定された）１６バイトストリングから導出してもよい。
【００６３】
なお、ＡＥＳブロックサイズ（１６バイト）の整数倍にならない残りのブロックについては、特別な処理を行う。最後のストライド以外の全てのストライドのブロックは、ＡＥＳブロックサイズ（例えば、１６バイト）の整数倍となる。一方、これより短いアクセスユニットでは、部分的ストライド（例えば、１６バイトより小さいブロックサイズを有するストライド）が生じる場合がある。
【００６４】
図５は、このような部分的ストライドを暗号化する処理フロー５００の一例を示している。
【００６５】
ステップ５１０において、デジタル権利管理コンポーネント５は、ＡＥＳ ＥＣＢ（全ての暗号化が同じ、元の入力暗号鍵を用いて実行される）を用いるＡＥＳ ＥＣＢによって、最後の完全なブロック（例えば、ＩＶを算出するために用いられたブロックが先の完全なブロック）の暗号文を暗号化する。
【００６６】
ステップ５２０において、デジタル権利管理コンポーネント５は、部分的ブロック内のビット数として、部分的ビット値を算出する。
【００６７】
ステップ５３０において、デジタル権利管理コンポーネント５は、部分的ビット値に等しい最後の完全なブロックの左側のビットと、ストライドの部分的なブロックとのＸＯＲ演算を行い、対応する暗号文を生成する。
【００６８】
処理フロー４００及び処理フロー５００は、デジタルコンテンツ内の各アクセスユニットについて繰り返される。これに代えて、デジタル権利管理コンポーネント５は、例えば、デジタルコンテンツの暗号化処理を速めるために、デジタルコンテンツにおける特定のストライド又は一部のストライドを暗号化してもよい。
【００６９】
図６は、クライアント装置において、暗号化されたデジタルコンテンツを復号コンポーネント７によって復号する処理フロー６００の一例を示している。
【００７０】
ステップ６０５において、クライアント装置は、暗号化されたデジタルコンテンツを受信する（及び、例えばコンテンツファイル内のデータから、例えば部分的又は完全な暗号化、シードＩＶ値、ストライドサイズ等を含む復号パラメータを判定する）。
【００７１】
ステップ６１０において、復号コンポーネント７は、復号するアクセスユニットのアクセスユニットサイズを判定する。アクセスユニットサイズが３２バイトより小さい場合、制御はステップ６１５に進む。アクセスユニットが３２バイト以上の場合、制御はステップ６５５に進む。
【００７２】
ステップ６１５において、復号コンポーネント７は、完全暗号化値を判定する。完全暗号化値が「偽」に設定されている場合、制御はステップ６２０に進む。一方、完全暗号化値が「真」に設定されている場合、制御はステップ６２５に進む。
【００７３】
ステップ６２０において、復号コンポーネント７は、アクセスユニットが暗号化されていないと判定し、処理フロー６００は終了する。
【００７４】
ステップ６２５において、復号コンポーネント７は、アクセスユニットサイズ値が０バイトより大きく、１６バイトより小さいか否かを判定し、アクセスユニットサイズ値が０バイトより大きく、１６バイトより小さい場合、制御はステップ６３０に進む。ステップ６２６において、アクセスユニットサイズ値が１６バイトであると判定された場合、制御はステップ６３５に進む。アクセスユニットサイズ値が１６バイトより大きく、３２バイトより小さい場合、制御はステップ６４０に進む。
【００７５】
ステップ６３０において、復号コンポーネント７は、アクセスユニットを構成するデータ（例えば、ｎ個のアクセスユニットバイト）と、Ｄ（Ｋｃ、シード値）の左側のｎ個のバイトとのＸＯＲ演算を行い、これにより処理フロー６００は終了する。
【００７６】
ステップ６３５では、復号コンポーネント７は、ＥＣＢモードを用いたＡＥＳによって１６バイトのアクセスユニットを復号し、これにより処理フロー６００は終了する。
【００７７】
ステップ６４０では、復号コンポーネント７は、ＥＣＢモードを用いたＡＥＳによって、アクセスユニットの最初の１６バイトを復号する。
【００７８】
ステップ６４５において、復号コンポーネント７は、シード値と、アクセスユニットの残りの１６バイトとのＸＯＲ演算を行うことにより、算出されたＩＶ値を算出する。
【００７９】
ステップ６５０において、復号コンポーネント７は、残りのｎ−１６バイトと、Ｄ（Ｋｃ、算出されたＩＶ値）の左側のｎ個のバイトとのＸＯＲ演算を行う。
【００８０】
ステップ６５５において、復号コンポーネント７は、パラメータ値を検査し、初期化する。復号コンポーネント７は、ＩＶストライドカウント値をアクセスユニット内のストライドの個数に設定する。ＩＶストライドカウント値は、アクセスユニットサイズ値を暗号化ストライドサイズ値によって除算することによって算出される。
【００８１】
ステップ６６０において、復号コンポーネント７は、受信したデジタルコンテンツの完全暗号化値を判定する。完全暗号化値が「真」である場合、制御はステップ６６５に進む。一方、完全暗号化値が「偽」である場合、制御はステップ６７５に進む。
【００８２】
ステップ６６５において、復号コンポーネント７は、算出されたＩＶ値に貢献しているデータブロックを復号する。例えば、各ＩＶストライドカウント値について、ストライドの最初の１６バイトのデータストリング（暗号文）が復号される。復号処理では、算出されたＩＶ値に貢献するデータブロックの位置が生来的に既知であってもよく、或いは、他の実施例として、これらの位置をパラメータとして復号処理に渡してもよい。一実施例においては、復号処理にはＩＶが含まれない。
【００８３】
ステップ６７５において、復号コンポーネント７は、算出されたＩＶ値を判定する。一実施例においては、算出されたＩＶ値は、上述のように、各ストライドからの１６バイトのデータストリングと、シード値とのＸＯＲ演算を行うことによって導出することができる。シード値は、デジタルコンテンツとは別個に伝送されてもよく、デジタルコンテンツに添付してもよい。
【００８４】
ステップ６８５において、復号コンポーネント７は、ＡＥＳ ＣＢＣ及び算出されたＩＶ値を用いて、残りの暗号化されたデータブロックを復号する。
【００８５】
ステップ６９０において、復号コンポーネント７は、必要であれば、部分的ストライドを復号する。一実施例においては、部分的ストライドは、図７を用いて後述するような処理よって復号される。
【００８６】
なお、処理フロー６００は、必要に応じて、デジタルコンテンツ内の各アクセスユニットについて繰り返し実行される。
【００８７】
図７は、部分的ブロック（鍵の長さより短い）を復号する処理フロー７００の一例を示している。
【００８８】
ステップ７２０において、復号コンポーネント７は、部分的ブロック内のビット数として、部分的ビット値を算出する。
【００８９】
ステップ７３０において、復号コンポーネント７は、部分的ブロックのビットと、最後の完全なブロックの左側のｎビット（ｎは、部分的ブロック内のビット数に等しい）とのＸＯＲ演算を行い、対応する平文を生成する。
【００９０】
本発明の実施例として説明した処理を実行するのに適したコンピュータシステムの構成例を図８に示す。コンピュータシステム８４０は、プロセッサ８５０と、メモリ８５５と、入出力装置８６０（input/output capability）とを備え、これらは全てシステムバス８６５に接続されている。このような構成を有する機器としては、個人用コンピュータシステム、ネットワークコンピュータ、ウェブテレビジョン又はセットトップボックス等のテレビジョン関連システム、及び携帯型音楽プレーヤ、デジタルビデオプレーヤ、携帯電話、情報携帯端末等の携帯型機器、並びにこれらに類する機器が含まれる。
【００９１】
プロセッサ８５０は、例えばＣＩＳＣ、ＲＩＳＣ、ＶＬＩＷ、ＤＳＰ又はハイブリッドアーキテクチャ等のあらゆる種類のアーキテクチャのいずれかを有する中央演算処理装置を表している。更に、プロセッサ８５０は、１個以上のチップによって実現してもよい。メモリ８５５は、プロセッサ８５０によって実行されて、上述した処理を実現する命令を保存するように構成されている。更に、メモリ８５５には、ユーザ情報及びコンタクト情報（contact information）を保存してもよい。
【００９２】
入出力装置８６０には、例えばキーボード、マウス、表示モニタ、マイクロフォン、スピーカ、ディスプレイ、ネットワークカード（例えば、イーサネット（登録商標）、赤外線、ケーブルモデム、ファックス／モデム等）を始めとする、ユーザがコンピュータシステム８４０とインタラクトするためのコンポーネントが含まれる。更に、入出力装置８６０には、プロセッサ８５０によってアクセス可能なあらゆる種類のストレージ装置を含む、マシンによって読取可能な媒体（machine-readable medium may）も含まれる。マシンによって読取可能な媒体には、例えば、読出専用メモリ（read only memory：ＲＯＭ）、ランダムアクセスメモリ（random access memory：ＲＡＭ）、磁気ディスクストレージ媒体、光ディスクストレージ媒体、フラッシュメモリ装置、電気、光、音響又はこの他の形式によって伝播される信号（例えば、搬送波、赤外線信号、デジタル信号）等が含まれる。すなわち、マシンによって読取可能な媒体には、マシン（例えば、コンピュータ）によって読取可能な形式で情報を提供する（すなわち、保存及び／又は伝送する）あらゆるメカニズムが含まれる。「マシンによって読取可能な媒体」という用語には、データ信号をエンコードする搬送波も含まれることは、当業者にとって明らかである。
【００９３】
更に、メモリ８５５に格納され、デジタル権利管理コンポーネント５、復号コンポーネント７、デジタルコンテンツプレーヤ８を実行するオペレーティングシステムソフトウェアによって、コンピュータシステム８４０を制御してもよい。このオペレーティングシステムは、ＰＣ−ＯＳ、マッキントッシュ−ＯＳ、ユニックス−ＯＳ、ＰａｌｍＯＳ等を始めとするいかなるオペレーティングシステムであってもよい。入出力装置８６０及びこれに関連する媒体は、オペレーティングシステム本発明に基づく処理を実現するための、マシンによって実行可能な命令を保存する。
【００９４】
更に、バス８６５は、１本以上のバス（例えば、ＰＣＩ、ＩＳＡ、Ｘ−Ｂｕｓ、ＥＩＳＡ、ＶＥＳＡ等）及びブリッジ（バスコントローラとも呼ばれる。）であってもよい。ここでは、本発明をシングルプロセッサコンピュータシステムに関連して説明しているが、本発明は、マルチプロセッサコンピュータシステムによって実現してもよい。
【００９５】
図８に示す構成は、本発明の実現に適したコンピュータハードウェア及び他の動作コンポーネントの概観を示しているが、これは、本発明の適用環境を限定するものではない。すなわち、コンピュータシステム８４０は、様々な異なるアーキテクチャを有する可能なコンピュータシステムの一例に過ぎない。一般的なコンピュータシステムは、少なくともプロセッサと、メモリと、及びプロセッサとメモリを接続するバスとを備えている場合が多い。なお、本発明は、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ等を含む、他のコンピュータシステム構成によっても実現できることは当業者にとって明らかである。更に、本発明は、通信ネットワークを介してリンクされたリモートの処理装置によってタスクが実行される分散型コンピュータシステム環境によっても実現することができる。
【００９６】
なお、本発明の範囲から逸脱することなく、図２、図３Ｄ、図３Ｆ、図４、図５、図６、図７に示す処理フローに、更なるステップを追加し、又はいずれかのステップを省略することができ、また、処理の順序は、図に示し、ここで説明した順序に限定されるものではない。更に、図２、図３Ｄ、図３Ｆ、図４、図５、図６、図７を用いて説明した処理は、マシンによって実行可能な命令（例えば、ソフトウェア）によって実現してもよい。この命令を用いて、汎用プロセッサ又は専用プロセッサをプログラミングし、ここに説明したような処理を実行させることができる。これに代えて、ここに説明した処理は、この処理を実行するためのハードウェアロジックを備える特定のハードウェアコンポーネントによって実現してもよく、或いはプログラミングされたコンピュータコンポーネントと、カスタムハードウェアコンポーネントとを任意に組み合わせて実現してもよい。ここに説明した処理は、コンピュータプログラム製品として提供してもよく、このコンピュータプログラム製品は、コンピュータ（又は他の電子機器）をプログラミングして、この処理を実行させるための命令が格納されたマシンによって読取可能な媒体を備えていてもよい。この明細書では、「マシンによって読取可能な媒体」という用語は、マシンによって実行される命令のシーケンスを保存又はエンコードし、このマシンに本発明に基づく処理のいずれかを実行させることができるあらゆる媒体を包含する。したがって、「マシンによって読取可能な媒体」という用語は、以下に限定されるものではないが、固体メモリ、光ディスク及び磁気ディスク、搬送波信号等を含む。更に、当分野では、動作の実行又は生じる結果の観点から、様々な呼び方（例えば、プログラム、手続き、処理、アプリケーション、モジュール、ロジック等）で呼ぶことがある。これらの表現は、コンピュータによるソフトウェアの実行によって、コンピュータのプロセッサが動作を実行し又は結果を生じるということを単に簡略的に表現しているに過ぎない。
【００９７】
以上、ブロック暗号の暗号化法（block cipher cryptography）を用いたデジタルコンテンツの保護について説明した。この暗号化では、暗号化されるデータのサイズが変わらず、したがって、復号する更なるヘッダを調整する必要はない。更に、伝送中に幾つかのパケットが失われても、ストリーミングされるコンテンツの復号を再開することができる。復号処理は、十分に近い間隔で再開でき、したがって、パケット損失が生じても、データの再生に大きな影響がない。これは、復号が再開されたどの時点からでも、算出された初期化ベクトル値を導出することができ、及びコンテンツを復号しなくても既知である、よく定義された間隔（例えば、アクセスユニット）でＣＢＣを再開できるためである。更に、ＣＢＣの安全性を向上させるために、算出された初期化ベクトル値は、同じ鍵とともに用いても、毎回異なるものとなる。本発明の目的の１つは、ファイルにデータを追加しないことであるため、算出された初期化ベクトル値は、暗号化されるサンプル自体から抽出された合理的にランダムなデータから生成される。
【００９８】
更に、本発明は、処理能力が低い機器のために、１００％未満の暗号化を行うことが可能な、暗号化の量をパラメータ化した部分的なデータ暗号化処理を提供する。
【００９９】
デジタル権利管理コンポーネント５は、上述した処理以外の検査及び初期化を実行してもよい。例えば、デジタル権利管理コンポーネント５は、暗号化チャンクサイズ値が（暗号化ストライドサイズ値−暗号化チャンクオフセット値）以下であるか否かを検査してもよい。更に、暗号化チャンクサイズ値がＡＢＳブロックサイズ（１６バイト）の整数倍になっていることを確認してもよい。
【０１００】
幾つかの実施例を用いて本発明を説明したが、本発明がここに説明した実施例に制限されないことは、当業者にとって明らかである。本発明に基づく方法及び装置は、添付の請求の範囲内において、ここに説明した実施例を様々に変更又は変形して実現することができる。すなわち、以上の説明は、本発明を制限するものではなく、例示的なものに過ぎないと解釈される。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施例のシステムレベルの概観を示す図である。
【図２】図１に示すネットワーク環境において、デジタルコンテンツを交換する処理フローの一例を示すフローチャートである。
【図３Ａ】複数のアクセスユニットを有するデジタルコンテンツの一例を示す図である。
【図３Ｂ】複数のストライドを有するデジタルコンテンツのアクセスユニットの一例を示す図である。
【図３Ｃ】アクセスユニットからＩＶ値を算出する処理を説明する図である。
【図３Ｄ】図３Ｃに示すＩＶ値を算出する処理フローの一例を示すフローチャートである。
【図３Ｅ】アクセスユニットの暗号化を概念的に示す図である。
【図３Ｆ】図３Ｅに示すアクセスユニットを暗号化する処理フローの一例を示すフローチャートである。
【図４】著作権保護された生のデジタルコンテンツを暗号化するデジタル権利管理ソフトウェアによる処理フローの一例を示すフローチャートである。
【図５】部分的ストライドを暗号化する処理フローの一例を示すフローチャートである。
【図６】クライアント装置において、クライアント復号ソフトウェアによって、暗号化されたデジタルコンテンツを復号する処理フローの一例を示すフローチャートである。
【図７】部分的ストライドを復号する処理フローの一例を示すフローチャートである。
【図８】本発明を実現するために適したコンピュータシステムの一例を示す図である。
【図１】
2004318154.tif 000003
【図２】
2004318154.tif 000004
【図３Ａ】
2004318154.tif 000005
【図３Ｂ】
2004318154.tif 000006
【図３Ｃ】
2004318154.tif 000007
【図３Ｄ】
2004318154.tif 000008
【図３Ｅ】
2004318154.tif 000009
【図３Ｆ】
2004318154.tif 000010
【図４】
2004318154.tif 000011
【図５】
2004318154.tif 000012
【図６】
2004318154.tif 000013
【図７】
2004318154.tif 000014
【図８】
2004318154.tif 000015
【外国語明細書】
2004318154.tif 000016
2004318154.tif 000017
2004318154.tif 000018
2004318154.tif 000019
2004318154.tif 000020
2004318154.tif 000021
2004318154.tif 000022
2004318154.tif 000023
2004318154.tif 000024
2004318154.tif 000025
2004318154.tif 000026
2004318154.tif 000027
2004318154.tif 000028
2004318154.tif 000029
2004318154.tif 000030
2004318154.tif 000031
2004318154.tif 000032
2004318154.tif 000033
2004318154.tif 000034
2004318154.tif 000035
2004318154.tif 000036
2004318154.tif 000037
2004318154.tif 000038
2004318154.tif 000039
2004318154.tif 000040
2004318154.tif 000041
2004318154.tif 000042
【図１】
2004318154.tif 000043
【図２】
2004318154.tif 000044
【図３Ａ】
2004318154.tif 000045
【図３Ｂ】
2004318154.tif 000046
【図３Ｃ】
2004318154.tif 000047
【図３Ｄ】
2004318154.tif 000048
【図３Ｅ】
2004318154.tif 000049
【図３Ｆ】
2004318154.tif 000050
【図４】
2004318154.tif 000051
【図５】
2004318154.tif 000052
【図６】
2004318154.tif 000053
【図７】
2004318154.tif 000054
【図８】
2004318154.tif 000055