(57)【要約】  コンテンツ復号処理装置２０００は、チャンクの後尾の暗号ブロックを復号する際に算定した連鎖値を、コンテンツタイプと、フレーム番号と関連付けてチャンク間連鎖値保持部２１６に記憶し、チャンクの先頭の暗号ブロックを復号する場合において、チャンク間連鎖値保持部２１６にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値があるときに、そのチャンクのコンテンツタイプとフレーム番号と対応付けられてチャンク間連鎖値保持部２１６に記憶されている連鎖値を用いて、チャンクの先頭の暗号ブロックを復号することで、復号するデータストリームが、第１種暗号フレームに属する暗号チャンク間に、第２種暗号フレームに属する暗号チャンクが存在しているデータ構造であっても正しくデータストリームを復号することができる。
2010055658.tif 000002
【特許請求の範囲】
【請求項１】
複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号するコンテンツ復号処理装置であって、
連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、
前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部とを備え、
前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とするコンテンツ復号処理装置。
【請求項２】
前記連鎖値保持部は、連鎖値を記憶するためのチャンク内連鎖値保持部を含み、
前記連鎖値記録部は、前記復号部によって暗号ブロックが復号された場合において、チャンクの後尾でない暗号ブロックが復号されたときに、前記復号部で算定された連鎖値を前記チャンク内連鎖値保持部に記憶されている連鎖値に上書きして記録し、
前記復号部は、復号する暗号ブロックがチャンクの先頭の暗号ブロックでない場合に、前記チャンク内連鎖値保持部に記録されている連鎖値を用いて暗号ブロックを復号することを特徴とする
請求項１記載のコンテンツ復号処理装置。
【請求項３】
前記連鎖値記録部は、暗号フレームの識別情報と連鎖値とを関連付けて前記連鎖値保持部に記録する場合に、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを前記連鎖値保持部に上書きして記録することを特徴とする
請求項１記載のコンテンツ復号処理装置。
【請求項４】
前記復号部の復号対象である暗号ブロックが所定のビット数に足りない場合に、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックに付与データを付与するデータ付与部と、
前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、
前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とをさらに備え、
前記復号部の復号対象である暗号ブロックが前記所定のビット数に足りない場合に、前記データ付与部は、前記復号対象である暗号ブロックに付与データを付与して、前記所定のビット数の合成暗号ブロックを生成し、前記復号部は、前記復号対象の暗号ブロックの代わりに前記合成暗号ブロックを復号し、前記復号データ記録部は、前記復号部によって復号された合成暗号ブロックのうち、前記データ付与部によって付与された付与データの部分が前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録することを特徴とする
請求項１記載のコンテンツ復号処理装置。
【請求項５】
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部を備えるコンテンツ復号処理装置に、複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号させるコンテンツ復号処理方法であって、
前記コンテンツ復号処理装置の復号部が、連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号ステップと、
前記コンテンツ復号処理装置の連鎖値記録部が、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号ステップによって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録ステップとを備え、
前記復号ステップは、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とするコンテンツ復号処理方法。
【請求項６】
複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号する集積回路であって、
連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、
前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部とを備え、
前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号連鎖ブロック方式で暗号化されている暗号データを復号するコンテンツ復号処理装置に関する。
【背景技術】
【０００２】
情報通信ネットワークを介して通信されるデジタルデータや、光ディスク等のメディアに蓄積されているデジタルデータ等の不正な利用を防止するために、これらのデジタルデータは、第三者がそのままでは利用することができないように暗号化された暗号データとなっている場合が多い。【０００３】
デジタルデータを暗号化する方式の一つに、暗号対象データを複数の平文ブロックに分割し、直前の平文ブロックの暗号化が、その次の平文ブロックの暗号化に影響を与えるように暗号化していくことで、各平文ブロックを連鎖的に暗号処理するという暗号連鎖ブロック方式がある。【０００４】
暗号連鎖ブロック方式において、各平文ブロックは、その直前の平文ブロックの暗号化の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して暗号化される。【０００５】
この暗号連鎖ブロック方式で暗号化された暗号データは、平文ブロックを暗号化することで得られた暗号ブロックが暗号化された順番に並んで構成される。【０００６】
暗号連鎖ブロック方式において、各暗号ブロックは、その直前の暗号ブロックの復号の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して復号される。【０００７】
暗号連鎖ブロック方式で暗号化された暗号データを復号する技術として、例えば、暗号ブロックの復号の際に、暗号ブロックの復号処理と並行して次の暗号ブロックの復号に必要な連鎖値を生成することによって、次の暗号ブロックの復号開始時刻を早める技術（特許文献１参照）等が提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２９５２１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
一方、ビデオフレームから構成されるビデオデータストリームと、オーディオフレームから構成されるオーディオデータストリームとを、１つのデータストリームとして取り扱う手法として、ビデオデータストリームとオーディオデータストリームとを分割多重化して一つの新たなデータストリームとする手法がある。【００１０】
このような手法において、分割多重化前のビデオデータストリームとオーディオデータストリームとが、それぞれ、フレーム毎に暗号連鎖ブロック方式で暗号化されているデータストリームである場合には、分割多重化後のデータストリームには、暗号連鎖している暗号ブロック列（例えば暗号化されたビデオフレームの暗号ブロック列）間に、その暗号フレームとは独立に暗号連鎖している暗号ブロック列（例えば暗号化されたオーディオフレームの暗号ブロック列）が存在する場合がある。【００１１】
このようなデータストリームを復号するコンテンツ復号処理装置は、復号対象のデータストリームが、第１種暗号フレーム（例えば暗号化されたビデオフレーム）に属する連鎖する暗号ブロック列（以下、「暗号チャンク」という。）間に、第２種暗号フレーム（例えば暗号化されたオーディオフレーム）に属する暗号チャンクが存在しているデータ構造のデータストリームを復号することができる必要がある。【００１２】
しかしながら、暗号ブロックを復号する場合において、単純にデータストリーム上の直前の暗号ブロックの復号の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して暗号ブロックを復号するという構成のコンテンツ復号処理装置では、このようなデータストリームを復号することはできない。【００１３】
そこで、本発明は、復号するデータストリームが、第１種暗号フレームに属する暗号チャンク間に、第２種暗号フレームに属する暗号チャンクが存在しているデータ構造のデータストリームであっても、データストリームの暗号ブロック順にそのデータストリームを復号することができるコンテンツ復号処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために本発明に係るコンテンツ復号処理装置は、複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号するコンテンツ復号処理装置であって、連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部とを備え、前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とする。
【発明の効果】
【００１５】
上述の構成を備える本発明に係るコンテンツ復号処理装置は、連鎖値記録部は、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録し、復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることになるため、復号するデータストリームが、第１種暗号フレームに属する暗号チャンク間に、第２種暗号フレームに属する暗号チャンクが存在しているデータ構造であっても正しくデータストリームを復号することができるという効果を有する。【００１６】
また、例えば、データストリームから全ての第１種暗号フレームに属する暗号チャンクのみを順番通りに抽出して、抽出した暗号チャンクを順番通りに復号し、データストリームから全ての第２種暗号フレームのみを順番通りに抽出して、第１種暗号フレームの復号とは独立して、抽出した第２種暗号フレームを順番通りに復号するという復号処理装置でも、正しくデータストリームを復号することができるが、この復号処理装置には、データストリーム全体の中から種別毎に全ての暗号フレームを分離して抽出するという工程が必要になり、さらに、抽出した暗号ブロックを、種別ごとに一時記憶しておくための記憶領域が必要になる。【００１７】
これに対して、上述の構成を備える本発明に係るコンテンツ復号処理装置では、種別毎に全ての暗号フレームを抽出する工程が不要であり、加えて、抽出した暗号フレームを、種別毎に記憶しておくための記憶領域も不要である。【００１８】
また、前記連鎖値保持部は、連鎖値を記憶するためのチャンク内連鎖値保持部を含み、前記連鎖値記録部は、前記復号部によって暗号ブロックが復号された場合において、チャンクの後尾でない暗号ブロックが復号されたときに、前記復号部で算定された連鎖値を前記チャンク内連鎖値保持部に記憶されている連鎖値に上書きして記録し、前記復号部は、復号する暗号ブロックがチャンクの先頭の暗号ブロックでない場合に、前記チャンク内連鎖値保持部に記録されている連鎖値を用いて暗号ブロックを復号することを特徴とするとしてもよい。【００１９】
このような構成にすることによって、チャンク内連鎖値保持部は、連鎖値のみを上書きされて記憶することになるため、チャンク内連鎖値保持部に必要な記憶容量を１つの連鎖値の記憶に必要な記憶容量に限定したコンテンツ復号処理装置を提供することができるという効果を有する。【００２０】
また、前記連鎖値記録部は、暗号フレームの識別情報と連鎖値とを関連付けて前記連鎖値保持部に記録する場合に、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを前記連鎖値保持部に上書きして記録することを特徴とするとしてもよい。【００２１】
このような構成にすることによって、連鎖値保持部は、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを上書きされて記憶することになるため、連鎖値保持部に必要な記憶容量を、暗号フレーム種毎に、１つの暗号フレームを示す情報と、１つの連鎖値を関連付けて記憶するのに必要な記憶容量に限定したコンテンツ復号処理装置を提供することができるという効果を有する。【００２２】
また、前記復号部の復号対象である暗号ブロックが所定のビット数に足りない場合に、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックに付与データを付与するデータ付与部と、前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とをさらに備え、前記復号部の復号対象である暗号ブロックが前記所定のビット数に足りない場合に、前記データ付与部は、前記復号対象である暗号ブロックに付与データを付与して、前記所定のビット数の合成暗号ブロックを生成し、前記復号部は、前記復号対象の暗号ブロックの代わりに前記合成暗号ブロックを復号し、前記復号データ記録部は、前記復号部によって復号された合成暗号ブロックのうち、前記データ付与部によって付与された付与データの部分が前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録するとしてもよい。【００２３】
ここで、所定のビット数とは、復号部が復号できる暗号ブロックのビット数のことである。【００２４】
このような構成にすることによって、復号対象である暗号ブロックが、その一部のビットが欠落して所定のビット数に足りない暗号ブロックである場合であっても、暗号ブロックに付与データを付与することで所定のビット数となった合成暗号ブロックを復号部が復号し、復号された合成ブロックから、付与データの部分が復号されることで得られた部分以外の部分を復号データ保持部に記録することになるため、所定のビット数に足りない暗号ブロックであっても、その暗号ブロックを復号して、復号データ保持部に記録することができるコンテンツ復号処理装置を提供することができるという効果を有する。
【図面の簡単な説明】
【００２５】
【図１】再生機１０００のブロック構成を示すブロック図
【図２】コンテンツのデータ構造を示すデータ構造図
【図３】チャンク３１０のデータ構造を示すデータ構造図
【図４】コンテンツ復号処理装置２０００の機能構成を示すブロック図
【図５】鍵蓄積部２１４が保持する情報を示す図
【図６】チャンク間連鎖値保持部２１６が保持する情報を示す図
【図７】演算部２２２の機能構成を示すブロック図
【図８】コンテンツ復号処理装置２０００のコンテンツ復号動作のフローチャート
【図９】チャンク１０５０のデータ構造を示すデータ構造図
【図１０】コンテンツヘッダに含まれている情報を示す図
【図１１】コンテンツ復号処理装置３０００の機能構成を示すブロック図
【図１２】コンテンツ復号処理装置３０００のコンテンツ復号動作のフローチャート
【図１３】コンテンツデータのデータ構造を示すデータ構造図
【図１４】コンテンツ復号処理装置４０００の機能構成を示すブロック図
【図１５】チャンク間連鎖値保持部１３１６が保持する情報を示す図
【図１６】暗号ブロックの前半が欠落している場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【図１７】暗号ブロックの後半が欠落している場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【図１８】暗号ブロックに欠落がない場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【図１９】コンテンツ復号処理装置４０００のコンテンツ復号動作のフローチャートその１
【図２０】コンテンツ復号処理装置４０００のコンテンツ復号動作のフローチャートその２
【図２１】チャンク２２５０のデータ構造を示すデータ構造図
【図２２】コンテンツ復号処理装置５０００の機能構成を示すブロック図
【図２３】鍵蓄積部２１１４が保持する情報を示す図
【図２４】コンテンツ復号処理装置５０００のコンテンツ復号動作のフローチャート
【図２５】コンテンツ復号処理装置６０００の機能構成を示すブロック図
【図２６】フレーム番号蓄積部２５２２が保持する情報を示す図
【図２７】暗号情報蓄積部２５３０が保持する情報を示す図
【図２８】コンテンツ復号処理装置６０００のコンテンツ復号動作のフローチャートその１
【図２９】コンテンツ復号処理装置６０００のコンテンツ復号動作のフローチャートその２
【図３０】再生機１０００のハードウエア構成を示すブロック図
【発明を実施するための形態】
【００２６】
＜実施の形態１＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【００２７】
ここで暗号化されたコンテンツとは、ビデオフレームから構成されるビデオデータストリームと、オーディオフレームから構成されるオーディオデータストリームとを、それぞれ、フレーム毎に暗号連鎖ブロック方式で暗号化して、暗号化されたビデオデータストリームと、暗号化されたオーディオデータストリームとを分割多重化して一つの新たなデータストリームとしたものである。
【００２８】
このコンテンツ復号処理装置は、復号対象のデータストリームのデータ構造が、第１種暗号フレーム（例えば暗号化されたビデオフレーム）に属する連鎖する暗号ブロック列からなる暗号チャンク間に、第２種暗号フレーム（例えば暗号化されたオーディオフレーム）に属する暗号ブロック列からなる暗号チャンクが存在しているデータ構造であっても、データストリームを正しく復号することができる。
【００２９】
以下、本実施の形態に係るコンテンツ復号処理装置の構成について、図面を参照しながら説明する。
【００３０】
＜構成＞
＜再生機１０００＞
図１は、本実施の形態に係るコンテンツ復号処理装置２０００を備えた再生機１０００のブロック構成を示すブロック図である。
【００３１】
再生機１０００は、パーソナルコンピュータであって、ＣＰＵ（Central Processing Unit：中央演算処理装置）ブロック１１０と、メモリブロック１２０と、周辺デバイスブロック１３０と、バスライン１４０と、暗号エンジン１５０と、ＡＶデコーダ１６０とから構成される。
【００３２】
ＣＰＵブロック１１０は、ＣＰＵＡ１１１と、ＣＰＵＢ１１２との２つのＣＰＵから構成される。
【００３３】
ＣＰＵＡ１１１とＣＰＵＢ１１２とは、バスライン１４０と接続し、メモリブロック１２０が記憶するプログラムを実行することで、メモリブロック１２０、周辺デバイスブロック１３０、暗号エンジン１５０、ＡＶデコーダ１６０を用いて、記録媒体から暗号化されたデータストリームを読み出す機能、暗号化されたデータストリームを復号する機能、符号化されたデータストリームを復号する機能等を実現する。
【００３４】
ＣＰＵＡ１１１とＣＰＵＢ１１２とは、互いに協調しながら並列に動作することで、上記機能を実現する。
【００３５】
メモリブロック１２０は、ＲＯＭ（Read Only Memory）１２１とＲＡＭ（Random Access Memory）１２２とから構成されている。
【００３６】
ＲＯＭ１２１は、バスライン１４０と接続し、ＣＰＵＡ１１１の動作を規定するプログラムと、ＣＰＵＢ１１２の動作を規定するプログラムと、ＣＰＵＡ１１１とＣＰＵＢ１１２とが利用するデータとを記憶している。
【００３７】
ＲＡＭ１２２は、バスライン１４０と接続し、ＣＰＵＡ１１１又はＣＰＵＢ１１２がプログラムを実行することに伴って発生するデータを一時的に記憶し、また、周辺デバイスブロック１３０から読み取ったデータを一時的に記憶する。
【００３８】
周辺デバイスブロック１３０は、ハードディスク装置１３１と、ハードディスク装置インターフェース１４１と、読取書込装置１３２と、読取書込装置インターフェース１４２と、出力装置１３３と、出力装置インターフェース１４３と、入力装置１３４と、入力装置インターフェース１４４と、通信装置１３５とから構成されている。
【００３９】
暗号エンジン１５０は、暗号化されたデータの復号を行う機能を有するＤＳＰ（Digital Signal Processor）であって、ＣＰＵＡ１１１及びＣＰＵＢ１１２によって制御され、バスライン１４０と接続する。
【００４０】
ＡＶデコーダ１６０は、符号化されたVideoデータやAudioデータをデコードするＤＳＰであって、ＣＰＵＡ１１１及びＣＰＵＢ１１２によって制御され、ＭＰＥＧ（Moving Picture Experts Group）２デコード機能、ＭＰＥＧ４デコード機能、ＭＰＥＧ４−ＡＶＣデコード機能を有する。
【００４１】
再生機１０００は、ＡＶデコーダ１６０でデコードした結果を、出力装置１３３で出力することで、コンテンツを再生する。
【００４２】
ハードディスク装置１３１は、ＣＰＵＡ１１１及びＣＰＵＢ１１２によって制御され、内蔵するハードディスクにコンテンツを書き込む機能と、内蔵するハードディスクに書き込まれているコンテンツを読み取る機能とを有し、ハードディスク装置インターフェース１４１を介してバスライン１４０と接続する。
【００４３】
ハードディスク装置インターフェース１４１は、ハードディスク装置１３１とバスライン１４０との間の信号のやりとりを仲介するものである。
【００４４】
読取書込装置１３２は、ＣＰＵＡ１１１及びＣＰＵＢ１１２によって制御され、外部記録媒体１３７にコンテンツを書き込む機能と、外部記録媒体１３７に書き込まれているコンテンツを読み取る機能とを有し、読取書込装置インターフェース１４２を介してバスライン１４０と接続する。
【００４５】
ここで、外部記録媒体１３７とは、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ、ＤＶＤ−ＲＡＭ、ＢＤ（Blu-ray Disc）、ＢＤ−Ｒ、ＢＤ−ＲＥ等であって、読取書込装置１３２は、これら、ＤＶＤ、ＤＶＤ−Ｒ、ＢＤ、ＢＤ−Ｒ、ＢＤ−ＲＥ等へのデータの書込みや読取りをすることができる。
【００４６】
読取書込装置インターフェース１４２は、読取書込装置１３２とバスライン１４０との間の信号のやりとりを仲介するものである。
【００４７】
通信装置１３５は、外部伝送媒体１３６を通じてコンテンツを取得する機能を有し、バスライン１４０と接続し、外部のコンテンツサーバや、インターネット上のコンテンツ提供サイト等からコンテンツを取得する。
【００４８】
ここで、外部伝送媒体１３６とは、光通信回線、電話通信回線、放送波等であって、通信装置１３５は、これら光通信回線、電話通信回線、放送波等からの信号を受信することができる。
【００４９】
通信装置１３５が取得するコンテンツは、外部記録媒体１３７、ハードディスク装置１３１に内蔵されるハードディスク、または、ＲＡＭ１２２に書き込まれる。
【００５０】
出力装置１３３は、映像と音声とを出力する装置であって、ＡＶデコーダ１６０によってデコードされたVideoデータやAudioデータを出力する機能を有し、出力装置インターフェース１４３を介してバスライン１４０と接続し、ＬＣＤ（Liquid Crystal Display）と、スピーカとで構成されている。
【００５１】
出力装置インターフェース１４３は、出力装置１３３とバスライン１４０との間の信号のやりとりを仲介するものである。
【００５２】
入力装置１３４は、ユーザによる操作を受け付けるキーボードと、マウスとから構成され、ユーザによる再生機１０００の操作コマンドを受け付ける機能を有し、入力装置インターフェース１４４を介してバスライン１４０と接続する。
【００５３】
入力装置インターフェース１４４は、入力装置１３４とバスライン１４０との間の信号のやりとりを仲介するものである。
【００５４】
バスライン１４０は、ＣＰＵＡ１１１、ＣＰＵＢ１１２、ＲＯＭ１２１、ＲＡＭ１２２、暗号エンジン１５０、ＡＶデコーダ１６０、通信装置１３５、ハードディスク装置インターフェース１４１、読取書込装置インターフェース１４２、出力装置インターフェース１４３、及び、入力装置インターフェース１４４と接続し、接続する各構成要素間のデータ通信を行うためのものである。
【００５５】
上述のように構成される再生機１０００は、ＣＰＵＡ１１１及びＣＰＵＢ１１２がＲＯＭ１２１又はＲＡＭ１２２に記憶されているプログラムを実行することで、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれているコンテンツの再生処理を実行する。
【００５６】
＜コンテンツのデータ構造＞
図２は、本実施の形態１に係るコンテンツ復号処理装置２０００が復号するコンテンツ３００のデータ構造を示すデータ構造図である。
【００５７】
コンテンツ３００は、映像を符号化することで得られるビデオストリームが暗号化されたＶｉｄｅｏＥＳ（Elementary Stream）と、日本語による音声を符号化することで得られるオーディオストリームが暗号化されたＡｕｄｉｏ１ＥＳと、英語による音声を符号化することで得られるオーディオストリームが暗号化されたＡｕｄｉｏ２ＥＳとが分割多重化されて連続する１つのストリームになっているコンテンツデータ３０２と、コンテンツ３００に関する情報を含むコンテンツヘッダ３０１とから構成される。
【００５８】
ここで、暗号化されたＶｉｄｅｏＥＳとは、ＭＰＥＧ４−ＡＶＣ方式で符号化された映像データに対して、１画面の画像データであるＶｉｄｅｏフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたストリームデータである。
【００５９】
暗号連鎖は各Ｖｉｄｅｏフレーム単位で完結し、互いに異なるＶｉｄｅｏフレームに暗号連鎖が継続することはない。
【００６０】
また、連鎖する暗号ブロックの先頭の暗号ブロックを復号する際に用いる連鎖値である初期値と、各暗号ブロックを復号する際に用いる鍵とは、全てのＶｉｄｅｏフレームで共通のものを用いている。
【００６１】
ここで、暗号化されたＡｕｄｉｏ１ＥＳ、Ａｕｄｉｏ２ＥＳとは、音声データをＭＰＥＧ４−ＡＶＣ方式で符号化することで得られたＡｕｄｉｏフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたストリームデータである。
【００６２】
暗号連鎖は各Ａｕｄｉｏフレーム単位で完結し、互いに異なるＡｕｄｉｏフレームに暗号連鎖が継続することはない。
【００６３】
また、初期値と鍵とは、暗号化されたＡｕｄｉｏ１ＥＳに属する全てのＡｕｄｉｏフレームで共通のものを用い、暗号化されたＡｕｄｉｏ２ＥＳに属する全てのＡｕｄｉｏフレームで共通のものを用いているが、暗号化されたＡｕｄｉｏ１ＥＳに属するＡｕｄｉｏフレームの初期値と鍵とは、暗号化されたＡｕｄｉｏ２ＥＳに属するＡｕｄｉｏフレームの初期値と鍵と異なるものである。
【００６４】
コンテンツデータ３０２のデータ構成は、多数のチャンク３１０が連続する構成となっており、各チャンク３１０は、さらに、チャンクヘッダ３１１、チャンクデータ３１２、パディング３１３から構成されている。
【００６５】
図３は、チャンク３１０のデータ構成を示すデータ構成図である。
【００６６】
チャンクヘッダ３１１は、暗号化されていない固定長データであって、チャンクのサイズを示す情報を含むチャンクサイズ４０１、チャンクの属するコンテンツタイプを示す情報を含むコンテンツタイプ４０２、チャンクの属するフレーム番号を示す情報を含むフレーム番号４０３、デコードに使用する情報を含むデコード用ヘッダ情報４０４、チャンクデータのサイズを示す情報を含むチャンクデータサイズ４０５からなる。
【００６７】
ここで、コンテンツタイプとは、Ｖｉｄｅｏ、Ａｕｄｉｏ１、Ａｕｄｉｏ２のうちのいずれかであって、コンテンツタイプがＶｉｄｅｏであれば、暗号化されたＶｉｄｅｏＥＳに属することを示し、コンテンツタイプがＡｕｄｉｏ１であれば、暗号化されたＡｕｄｉｏ１ＥＳに属することを示し、コンテンツタイプがＡｕｄｉｏ２であれば、暗号化されたＡｕｄｉｏ２ＥＳに属することを示す。
【００６８】
また、チャンクヘッダ３１１の構成要素である、チャンクサイズ４０１、コンテンツタイプ４０２、フレーム番号４０３、デコード用ヘッダ情報４０４のそれぞれのビット長と出現順番とは固定である。
【００６９】
チャンクデータ３１２は、暗号連鎖の順番に並ぶ暗号ブロック４１１〜４１３からなる暗号ブロック列である。
【００７０】
例えば、ＡＥＳ（Advanced Encryption Standard）暗号方式を用いた場合、暗号ブロックは、ＣＴＲモードで連鎖暗号化された暗号連鎖の単位であって、ビット長は１２８ビットである。
【００７１】
ここで、暗号ブロックは１２８ビットの平文と、１２８ビットの連鎖値を１２８ビットの鍵を用いてＡＥＳ暗号方式等によって暗号化することによって得られた１２８ビットの暗号連鎖値とを、ビットごとの排他的論理和を取ることで生成されたものであって、各暗号ブロックは、Ｖｉｄｅｏフレーム、Ａｕｄｉｏ１フレーム、Ａｕｄｉｏ２フレームのいずれかのフレームが暗号化されることによって得られたものである。
【００７２】
パディング３１３は、暗号化されていないデータであって、チャンク３１０のデータサイズを整えるために添付されているデータである。
【００７３】
＜コンテンツ復号処理装置２０００＞
図４は、再生機１０００を用いて機能的に実現される、コンテンツ復号処理装置２０００の機能構成を示すブロック図である。
【００７４】
コンテンツ復号処理装置２０００は、ＣＰＵＡ１１１及びＣＰＵＢ１１２がメモリブロック１２０の記憶するプログラムに従って、メモリブロック１２０、周辺デバイスブロック１３０、バスライン１４０、暗号エンジン１５０等を用いて暗号化されたコンテンツの復号処理を行い、復号されたコンテンツをＡＶデコーダ１６０に出力される。
【００７５】
コンテンツ復号処理装置２０００は、復号対象のチャンクを一時的に保持する入力バッファ２０１と、復号されたチャンクを一時的に保持する出力バッファ２０２と、鍵と初期値とを記憶する鍵蓄積部２１４と、チャンク間に跨る連鎖値を記憶するチャンク間連鎖値保持部２１６と、チャンクヘッダ３１１から情報を取得するチャンク情報取得部２１０と、チャンクデータ３１２の開始アドレスとパディング３１３の開始アドレスとを算出する暗号サイズ算出部２１１と、鍵と初期値とを暗号エンジン１５０に出力する鍵設定部２１２と、チャンク間に跨って暗号連鎖が継続しているか否かを判定する連鎖判定部２１３と、暗号エンジン１５０とから構成される。
【００７６】
入力バッファ２０１は、暗号エンジン１５０が復号するコンテンツの一部を一時的に記憶しておくための記憶領域であって、メモリブロック１２０の一部として実装されている。
【００７７】
入力バッファ２０１の記憶する単位は、コンテンツヘッダ３０１又はチャンク３１０単位であって、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって、コンテンツ３００のデータ順に従って、前回記憶していたコンテンツの一部に対して上書きされる。
【００７８】
出力バッファ２０２は、暗号エンジン１５０が復号したコンテンツの一部を、ＡＶデコーダ１６０に出力する前に一時的に記憶しておくための記憶領域であって、メモリブロック１２０の一部として実装されている。
【００７９】
チャンク情報取得部２１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２を鍵設定部２１２に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２１３に出力する機能を有する。
【００８０】
チャンク情報取得部２１０は、ＣＰＵＡ１１１又はＣＰＵＢ１１２によってコンテンツヘッダ３０１が書き込まれると、入力バッファ２０１が保持するデータがコンテンツヘッダ３０１である旨のコンテンツヘッダ信号を暗号エンジン１５０に出力する機能を有する。
【００８１】
暗号サイズ算出部２１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを入力とを入力されると、チャンクデータ３１２の開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数とを計算し、暗号エンジン１５０に出力する機能を有する。
【００８２】
チャンクデータ３１２の開始アドレスは、チャンクの開始アドレスと固定長であるチャンクヘッダ３１１のサイズを加算することで算出され、パディング３１３の開始アドレスは、チャンクヘッダ３１１の開始アドレスにチャンクデータサイズ４０５を加算することで算出され、チャンクの終了アドレスは、チャンクの開始アドレスとチャンクサイズ４０１とを加算することで算出され、暗号ブロックの数は、チャンクデータサイズ４０５を暗号ブロックの単位ビット数である１２８で除算することで算出される。
【００８３】
鍵蓄積部２１４は、コンテンツタイプと、鍵と、初期値とを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【００８４】
図５は、鍵蓄積部２１４が記憶する情報を示す図である。
【００８５】
図５に示されるように、鍵蓄積部２１４は、コンテンツタイプ４０２のそれぞれに、復号の際に使用する鍵５０２と、初期値５０３とを対応付けて予め記憶している。
【００８６】
鍵５０２のビット数は１２８ビットであって、初期値５０３のビット数は１２８ビットである。
【００８７】
ここで、初期値とは、暗号連鎖ブロック方式で暗号化された暗号ブロックを復号する場合において、連鎖先頭の暗号ブロックを復号する際に使用する連鎖値のことである。
【００８８】
鍵設定部２１２は、チャンク情報取得部２１０からのコンテンツタイプ４０２を入力として、鍵蓄積部２１４から、入力されたコンテンツタイプ４０２と関連付けられて記憶されている鍵５０２と初期値５０３とを読み出して、暗号エンジン１５０に出力する機能を有する。
【００８９】
チャンク間連鎖値保持部２１６は、コンテンツタイプと、フレーム番号と、連鎖値とを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【００９０】
図６は、チャンク間連鎖値保持部２１６が記憶する情報を示す図である。
【００９１】
図６に示されるように、チャンク間連鎖値保持部２１６は、コンテンツタイプ４０２のそれぞれに、フレーム番号６０２と、連鎖値６０３とを対応付けて記憶している。
【００９２】
ここで記憶されているフレーム番号６０２は、対応するコンテンツタイプ４０２において最後に復号されたフレームのフレーム番号であって、連鎖値６０３は、フレーム番号６０２に属する最後に復号されたチャンクの最後の暗号ブロックが復号された際に算定された連鎖値である。
【００９３】
連鎖値６０３のビット数は、１２８ビットである。
【００９４】
なお、フレーム番号６０２と、連鎖値６０３との組は、暗号エンジン１５０によって、コンテンツタイプ４０２毎に上書きされる。
【００９５】
連鎖判定部２１３は、チャンク情報取得部２１０からコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが入力されると、チャンク情報取得部２１０から入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部２１６に関連付けられて記憶されているか否かを調べて、記憶されている場合には、入力バッファ２０１に保持されてチャンクが暗号連鎖継続中であると判断し、記憶されていない場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中でないと判断する機能を有する。
【００９６】
連鎖判定部２１３は、また、コンテンツタイプ４０２とフレーム番号４０３とを暗号エンジンに出力し、加えて、暗号連鎖継続中であると判断した場合には、暗号連鎖継続中の旨を示す暗号連鎖信号を暗号エンジン１５０に出力し、連鎖継続中でないと判断した場合には、暗号連鎖終了の旨を示す暗号終了信号を暗号エンジン１５０に出力する機能を有する。
【００９７】
暗号エンジン１５０は、チャンク情報取得部２１０からのコンテンツヘッダ信号と、暗号サイズ算出部２１１からのチャンクデータ３１２の開始アドレスとパディング３１３の開始アドレスとチャンクの終了アドレスとチャンクデータ３１２に含まれる暗号ブロックの数と、鍵設定部２１２からの鍵５０２と初期値５０３と、連鎖判定部２１３からのコンテンツタイプ４０２とフレーム番号４０３と暗号連鎖信号又は暗号終了信号とに基づいて、入力バッファ２０１に保持されているチャンクを読み出して、読み出したチャンクを復号して、復号されたチャンクを出力バッファ２０２に書き込む機能を有する。
【００９８】
暗号エンジン１５０は、入力バッファ２０１が保持するチャンクからチャンクデータ３１２を読み出して演算部に出力する演算判定部２２１と、チャンクデータ３１２を暗号ブロック単位で復号する演算部２２２と、鍵を記憶する鍵保持部２２３と、初期値を記憶する初期値保持部２２４と、初期値又は連鎖値のいずれか一方を選択する初期値選択部２２５と、演算部が使用する連鎖値を選択する連鎖値選択部２２６と、連鎖値を記憶するためのチャンク内連鎖値保持部２２７と、演算部２２２が出力する連鎖値をチャンク内連鎖値保持部２２７又はチャンク間連鎖値保持部２１６に記録する連鎖値記録部２２８と、演算部２２２によって暗号ブロック単位で復号されたチャンクデータを出力バッファ２０２に書きこむ出力選択部２２９とから構成されている。
【００９９】
演算判定部２２１は、暗号サイズ算出部２１１から出力されるチャンクの開始アドレスと、チャンクデータ３１２の開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを用いて、入力バッファ２０１に保持されているチャンクから、チャンクヘッダ３１１と、パディング３１３とを読み出して出力選択部２２９に出力し、チャンクデータ３１２を読み出して、暗号ブロック単位で演算部２２２に出力し、演算部２２２に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックである場合に、初期値選択信号を連鎖値選択部２２６に出力し、演算部２２２に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックでない場合に、連鎖値選択信号を連鎖値選択部２２６に出力する機能を有する。
【０１００】
なお、チャンクデータの先頭の暗号ブロックであるか否かは、チャンクデータの開始アドレスを用いて判断する。
【０１０１】
ここで、チャンクデータの先頭の暗号ブロックを演算部２２２に出力するタイミングは、暗号サイズ算出部２１１からチャンクデータ３１２の開始アドレスが入力されたタイミングであって、チャンクデータの先頭の暗号ブロック以外の暗号ブロックを演算部２２２に出力するタイミングは、連鎖値記録部２２８から暗号ブロック要請信号を受け取ったタイミングである。
【０１０２】
また、チャンク情報取得部２１０からコンテンツヘッダ信号が入力された場合には、入力バッファ２０１に保持されているコンテンツヘッダ３０１を読み出して出力選択部２２９に出力する機能を有する。
【０１０３】
鍵保持部２２３は、鍵設定部２１２から鍵を入力される毎に、自ら記憶する鍵に上書きし、記憶している鍵を演算部２２２に出力し続ける機能を有する。
【０１０４】
初期値保持部２２４は、鍵設定部２１２から初期値を入力される毎に、自ら記憶する初期値上書きし、記憶する初期値を初期値選択部に出力する機能を有する。
【０１０５】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖継続信号と、コンテンツタイプ４０２との組みを受け取ると、チャンク間連鎖値保持部２１６から、受け取ったコンテンツタイプ４０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力し、連鎖判定部２１３から、暗号連鎖終了の旨を示す信号を受け取ると、初期値保持部２２４が保持している初期値を読み出して連鎖値選択部２２６に出力する機能を有する。
【０１０６】
チャンク内連鎖値保持部２２７は、連鎖値記録部２２８によって上書きされる連鎖値を記憶するための記憶領域である。
【０１０７】
連鎖値選択部２２６は、初期値選択信号を演算判定部２２１から受け取った場合に、初期値選択部２２５から出力される初期値又は連鎖値を演算部２２２に出力し、連鎖値選択信号を演算判定部２２１から受け取った場合に、チャンク内連鎖値保持部２２７が保持する連鎖値を読み出して演算部２２２に出力する機能を有する。
【０１０８】
連鎖値記録部２２８は、暗号サイズ算出部２１１が出力する暗号ブロックの数と、連鎖判定部２１３が出力するコンテンツタイプと、フレーム番号と、演算部２２２が出力する連鎖値とを入力され、演算部２２２が出力する連鎖値が入力されると、入力された連鎖値を、チャンク間連鎖値保持部２１６かチャンク内連鎖値保持部２２７のいずれか一方に記録する機能を有する。
【０１０９】
連鎖値記録部２２８は、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、連鎖判定部２１３から入力されるコンテンツタイプと、フレーム番号と関連付けて、チャンク間連鎖値保持部２１６に上書きして記録し、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部２２７に上書きして記録し、演算判定部２２１に暗号ブロック要請信号を出力する機能を有する。
【０１１０】
連鎖値記録部２２８は、演算部２２２から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
【０１１１】
この連鎖値数カウンタは、暗号サイズ算出部２１１から暗号ブロックの数が入力される毎にリセットされる。
【０１１２】
連鎖値記録部２２８は、演算部２２２から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
【０１１３】
出力選択部２２９は、演算判定部２２１から出力されるチャンクヘッダ３１１と、パディング３１３と、復号された暗号ブロック単位で演算部２２２から出力される復号された暗号ブロックと、コンテンツヘッダ３０１とを、出力バッファ２０２に書き込む機能を有する。
【０１１４】
演算部２２２は、演算判定部２２１から出力される暗号ブロックを、鍵保持部２２３に保持されている鍵と、連鎖値選択部２２６から出力される初期値又は連鎖値とを用いて、連鎖暗号ブロック方式で復号し、復号の際に次の連鎖値を算定して出力する機能を有する。
【０１１５】
図７は演算部２２２の機能構成を示すブロック図である。
【０１１６】
演算部２２２は、入力される連鎖値を暗号化して暗号連鎖値を出力するＡＥＳ暗号回路７０１と、入力される連鎖値から、次の暗号ブロックを復号する際に使用する連鎖値を作成するインクリメンタ７０３と、暗号ブロックと暗号連鎖値とから復号された暗号ブロックすなわち平文を出力する排他的論理和回路７０２とから構成され、ＣＴＲモードで連鎖暗号化された暗号ブロックを復号する機能を有する。
【０１１７】
ＡＥＳ暗号回路７０１は、１２８ビットの連鎖値に対して、１２８ビットの鍵を用いてＡＥＳ暗号方式で１２８ビットの暗号連鎖値を作成して排他的論理和回路７０２に出力する。
【０１１８】
インクリメンタ７０３は、入力される連鎖値のうち、下位３２ビットの部分のみを１だけインクリメントして次の連鎖値を算定する機能を有する。
【０１１９】
ここで、インクリメントされた下位３２ビットの部分がオーバーフローした場合には、下位３２ビットの部分のみが０ｘ００となって、上位９６ビットには影響を与えることはない。
【０１２０】
排他的論理和回路７０２は、ＡＥＳ暗号回路７０１から出力される１２８ビットの暗号連鎖値と、演算判定部２２１から出力される１２８ビットの暗号ブロックとのビットごとの排他的論理和を出力する機能を有する。
【０１２１】
以上のように構成されるコンテンツ復号処理装置２０００は、暗号エンジン１５０がチャンクの後尾の暗号ブロックを復号する際に算定した連鎖値を、コンテンツタイプと、フレーム番号と関連付けてチャンク間連鎖値保持部２１６に記憶する。
【０１２２】
また、コンテンツ復号処理装置２０００は、暗号エンジン１５０がチャンクの先頭の暗号ブロックを復号する場合において、チャンク間連鎖値保持部２１６にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値があるときに、そのチャンクは連鎖が継続していると判断して、そのチャンクのコンテンツタイプとフレーム番号と対応付けられてチャンク間連鎖値保持部２１６に記憶されている連鎖値を用いて、チャンクの先頭の暗号ブロックを復号し、チャンク間連鎖値保持部２１６にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値がないときに、そのチャンクは連鎖が継続していない判断して、そのチャンクのコンテンツタイプに対応する初期値を用いて、チャンクの先頭の暗号ブロックを復号する。
【０１２３】
さらに、コンテンツ復号処理装置２０００は、暗号エンジン１５０がチャンクの先頭の暗号ブロック以外の暗号ブロックを復号する場合には、チャンク内連鎖値保持部２２７が保持する連鎖値を用いて、暗号ブロックを復号する。
【０１２４】
コンテンツ復号処理装置２０００の動作の詳細について、以下図面を用いて説明する。
【０１２５】
＜動作＞
再生機１０００がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ３０１を入力バッファ２０１に書き込む。
【０１２６】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０１２７】
コンテンツヘッダ３０１が入力バッファ２０１に書き込まれると、コンテンツ復号処理装置２０００はコンテンツ復号処理を開始する。
【０１２８】
図８は、コンテンツ復号処理装置２０００の行うコンテンツ復号処理のフローチャートである。
【０１２９】
コンテンツ復号処理装置２０００がコンテンツ復号処理を開始すると、チャンク情報取得部２１０はコンテンツヘッダ信号を出力し、演算判定部２２１は出力されたコンテンツヘッダ信号を受け取る。
【０１３０】
演算判定部２２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダ３０１を読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダ３０１を出力バッファ２０２に書き込む。
【０１３１】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部２１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して（ステップＳ８００）、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２を鍵設定部２１２に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２１３に出力する。
【０１３２】
暗号サイズ算出部２１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とが入力されると、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数を計算し（ステップＳ８０５）、チャンクの開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを演算判定部２２１に出力し、暗号ブロックの数を連鎖値記録部２２８に出力する。
【０１３３】
連鎖値記録部２２８は、暗号サイズ算出部２１１から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
【０１３４】
演算判定部２２１は、暗号サイズ算出部２１１から、チャンクの開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ３１１とパディング３１３とを読み出して出力選択部２２９に出力し、出力選択部２２９は入力されたチャンクヘッダ３１１とパディング３１３とを出力バッファ２０２に書き込み（ステップＳ８１０）、連鎖値選択部２２６に初期値選択信号を出力する。
【０１３５】
鍵設定部２１２は、チャンク情報取得部２１０からコンテンツタイプ４０２を入力されると、入力されたコンテンツタイプ４０２と関連付けられて鍵蓄積部２１４に記憶されている鍵５０２と初期値５０３とを読み出して、読み出した鍵５０２を鍵保持部２２３に出力し、読み出した初期値５０３を初期値保持部２２４に出力し、鍵蓄積部２１４は、入力された鍵を上書きして記憶し、初期値保持部２２４は、入力された初期値を上書きして記憶する（ステップＳ８１５）。
【０１３６】
連鎖判定部２１３は、チャンク情報取得部２１０から、コンテンツタイプ４０２と、フレーム番号４０３とを入力されると、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中であるか否かを判定するために、入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部２１６に関連付けられて記憶されているか否かを調べて（ステップＳ８２０）、記憶されている場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中であると判断し（ステップＳ８２０：Ｙｅｓ）、コンテンツタイプ４０２とフレーム番号４０３とを連鎖値記録部２２８に出力し、暗号連鎖信号とコンテンツタイプ４０２とを初期値選択部２２５に出力する。
【０１３７】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖継続信号と、コンテンツタイプ４０２との組みを受け取ると、チャンク間連鎖値保持部２１６から、受け取ったコンテンツタイプ４０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力する。
【０１３８】
連鎖値選択部２２６は、演算判定部２２１から初期値選択信号を受け取っているので、初期値選択部２２５から入力される連鎖値を選択して、演算部２２２に出力する（ステップＳ８２５）。
【０１３９】
ステップＳ８２０において、入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部２１６に関連付けられて記憶されていない場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中でないと判断し（ステップＳ８２０：Ｎｏ）、コンテンツタイプ４０２とフレーム番号４０３とを連鎖値記録部２２８に出力し、暗号終了信号を初期値選択部２２５に出力する。
【０１４０】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖終了信号を受け取ると、初期値保持部２２４が保持する初期値を読み出して連鎖値選択部２２６に出力する。
【０１４１】
連鎖値選択部２２６は、演算判定部２２１から初期値選択信号を受け取っているので、初期値選択部２２５から初期値が入力されると、入力された初期値を演算部２２２で使用する連鎖値として演算部２２２に出力する（ステップＳ８３０）。
【０１４２】
ステップＳ８２５又はステップＳ８３０の処理が終わると、演算部２２２は、演算判定部２２１から暗号チャンクの先頭の暗号ブロックを受け取る。
【０１４３】
演算部２２２は、鍵保持部２２３に記録されている鍵と、連鎖値選択部から出力される連鎖値とを用いて、受け取った暗号ブロックを復号して出力選択部２２９に出力し、復号の際に算定した次の連鎖値を連鎖値記録部２２８に出力する（ステップＳ８３５）。
【０１４４】
演算部２２２が行う暗号ブロックの復号と次の連鎖値の算定とは、（１）ＡＥＳ暗号回路７０１が鍵を用いて連鎖値を暗号化して暗号連鎖値を作成し、（２）排他的論理和回路７０２が作成された暗号連鎖値と、暗号ブロックとのビットごとの排他的論理和を取ることで、暗号ブロックを復号し、（３）インクリメンタ７０３が入力される連鎖値のうち、下位３２ビットの部分のみを１だけインクリメントすることで次の連鎖値を算定するという３つの処理によって実現されている。
【０１４５】
出力選択部２２９は、演算部２２２から復号された暗号ブロックが入力されると、入力された復号された暗号ブロックを、出力バッファ２０２に書き込む。
【０１４６】
連鎖値記録部２２８は、演算部２２２から連鎖値が入力されると、連鎖値数カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数と、暗号サイズ算出部から入力された暗号ブロックの数とを比較することで、演算部２２２から入力された連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定する（ステップＳ８４０）。
【０１４７】
ステップＳ８４０において、新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し（ステップＳ８４０：Ｙｅｓ）、演算部２２２から入力された連鎖値をチャンク内連鎖値保持部に上書きして記録し（ステップＳ８４５）、連鎖値記録部２２８は、演算判定部２２１に暗号ブロック要請信号を出力する。
【０１４８】
演算判定部２２１は、連鎖値記録部２２８から暗号ブロック要請信号を受け取ると、次の暗号ブロックを演算部２２２に出力し、連鎖値選択信号を連鎖値選択部２２６に出力し、連鎖値選択部２２６は、連鎖値選択信号を受信すると、チャンク内連鎖値保持部２２７が保持する連鎖値を読み出して演算部２２２に出力する（ステップＳ８５０）。
【０１４９】
ステップＳ８５０の処理が終わると、再びステップＳ８３５の処理を開始する。
【０１５０】
ステップＳ８４０において、新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断し（ステップＳ８４０：Ｎｏ）、演算部２２２から入力された連鎖値を、連鎖判定部２１３から入力されたコンテンツタイプと、フレーム番号と関連付けて、チャンク間連鎖値保持部２１６に上書きして記録する（ステップＳ８５５）。
【０１５１】
ステップＳ８５５の処理が終わると、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれるまで、コンテンツ復号処理装置２０００は待機する（ステップＳ８６５）。
【０１５２】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ８７０：Ｙｅｓ）、再びステップＳ８００の処理を開始する。
【０１５３】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ８７０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置２０００は、コンテンツ復号処理を終了する。
【０１５４】
＜具体的動作＞
例として、コンテンツタイプがＶｉｄｅｏでフレーム番号が１０である第１チャンクと、同じくコンテンツタイプがＶｉｄｅｏでフレーム番号が１０であって、第１チャンクに連続するチャンクである第２チャンクとの間に、コンテンツタイプがＡｕｄｉｏ１でフレーム番号が５である第３チャンクが存在している場合において、コンテンツ復号処理装置２０００は、第２フレームの先頭の暗号ブロックを正しい連鎖値を用いて正しく復号することができることを説明する。
【０１５５】
演算部２２２が第１チャンクの後尾の暗号ブロックを復号すると、連鎖値記録部２２８は、演算部２２２から入力された連鎖値、例えば、０ｘ００００１１１１を、連鎖判定部２１３から入力されたＶｉｄｅｏを示すコンテンツタイプと、１０を示すフレーム番号と関連付けて、チャンク間連鎖値保持部２１６に上書きして記録する（ステップＳ８６５）。
【０１５６】
その後、コンテンツ復号処理装置２０００は、第３チャンクを復号し、第３チャンクを復号した後、第２チャンクの復号を開始する。
【０１５７】
第２チャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部２１０は、Ｖｉｄｅｏを示すコンテンツタイプと、１０を示すフレーム番号とを取得し（ステップＳ８００）、連鎖判定部２１３に出力する。
【０１５８】
連鎖判定部２１３は、Ｖｉｄｅｏを示すコンテンツタイプと、１０を示すフレーム番号との組み合わせが、チャンク間連鎖値保持部２１６に関連付けられて記憶されているか否かを調べて（ステップＳ８２０）、Ｖｉｄｅｏを示すコンテンツタイプと、１０を示すフレーム番号との組み合わせが、連鎖値０ｘ００００１１１１と関連付けられて記憶されていることがわかるので、第２チャンクが暗号連鎖継続中であると判断し（ステップＳ８２０：Ｙｅｓ）、暗号連鎖信号とＶｉｄｅｏを示すコンテンツタイプを出力する。
【０１５９】
初期値選択部２２５は、暗号連鎖信号とＶｉｄｅｏを示すコンテンツタイプとを受け取ると、チャンク間連鎖値保持部２１６からＶｉｄｅｏを示すコンテンツタイプと関連付けて記憶されている連鎖値０ｘ００００１１１１を読み出して連鎖値選択部２２６に出力し、連鎖値選択部２２６は演算部２２２に、この連鎖値０ｘ００００１１１１を出力する。
【０１６０】
従って、演算部２２２は、この連鎖値０ｘ００００１１１１、すなわち、第１チャンクの後尾の暗号ブロックを復号した際に算定した連鎖値を用いて、第２チャンクの先頭の暗号ブロックを復号することになるので、第２チャンクの先頭の暗号ブロックを正しく復号する。
＜実施の形態２＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【０１６１】
本実施の形態２に係るコンテンツ復号処理装置は、実施の形態１のコンテンツ復号処理装置２０００の復号対象であるコンテンツ３００に含まれるチャンク３１０のチャンクヘッダ３１１の一部とコンテンツヘッダ３０１とが変形したデータフォーマットであるコンテンツを復号することができるように、実施の形態１で説明したコンテンツ復号処理装置２０００を変形したものである。
【０１６２】
本実施の形態２に係るコンテンツ復号処理装置は、実施の形態１で説明したコンテンツ復号処理装置２０００の一部である、チャンク情報取得部２１０を変形し、さらに、新たにコンテンツヘッダ解析部とフィールド情報蓄積部とを備えるように変形した形態であって、コンテンツ復号処理装置２０００と同様に、実施の形態１の再生機１０００上で実現される。
【０１６３】
以下、実施の形態１で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
【０１６４】
＜構成＞
＜コンテンツのデータ構造＞
本実施の形態２に係るコンテンツ復号処理装置３０００が復号するコンテンツは、実施の形態１のコンテンツ３００を、実施の形態１のチャンクヘッダ３１１に存在していたコンテンツタイプ４０２と、フレーム番号４０３とに対応する情報が、コンテンツヘッダに存在しているように変形したコンテンツである。
【０１６５】
図９は、本実施の形態２に係るコンテンツ復号処理装置３０００の復号対象であるコンテンツを構成するチャンク１０５０のデータ構成を示す構成図である。
【０１６６】
チャンク１０５０は、チャンクヘッダ１０１５、チャンクデータ１０１０、パディング１０２０から構成されている。
【０１６７】
チャンクヘッダ１０１５は、暗号化されていないデータであって、チャンクのサイズを示す情報を含むチャンクサイズ１００１、デコードに使用する情報を含むデコード用ヘッダ情報１００４、チャンクデータのサイズを示す情報を含むチャンクデータサイズ１００５からなり、チャンクサイズ１００１、デコード用ヘッダ情報１００４、チャンクデータサイズ１００５のそれぞれのビット長と出現順番とは固定である。  チャンクデータ１０１０は、実施の形態１のチャンクデータ３１２と同様のものであって、パディング２２３０は、実施の形態１のパディング３１３と同様のものである。
【０１６８】
図１０は、本実施の形態２に係るコンテンツを構成するコンテンツヘッダに含まれている情報を示す構成図である。
【０１６９】
コンテンツヘッダは、コンテンツに含まれるすべてのチャンク１０５０について、チャンク１０５０の並び順に、チャンク１０５０毎の開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３とを対応付けて保持している。
【０１７０】
コンテンツタイプ１１０２は実施の形態１のコンテンツタイプ４０２と同様のものであり、フレーム番号１１０３は実施の形態１のフレーム番号６０２と同様のものである。
【０１７１】
＜コンテンツ復号処理装置３０００＞
図１１は、コンテンツ復号処理装置３０００の機能構成を示すブロック図である。
【０１７２】
コンテンツ復号処理装置３０００は、実施の形態１のコンテンツ復号処理装置２０００に対して、チャンク情報取得部２１０をチャンク情報取得部９１０に変形し、新たにフィールド情報蓄積部９２０と、コンテンツヘッダ解析部９３０とを追加したものである。
【０１７３】
フィールド情報蓄積部９２０は、コンテンツヘッダに保持されている、チャンク１０５０毎の開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３とを対応付けて記憶しておくための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０１７４】
コンテンツヘッダ解析部９３０は、入力バッファ２０１が保持するコンテンツヘッダから、チャンク毎に対応付けられている、開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３との組を全て読み出し、読み出した、開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３との組を全て、フィールド情報蓄積部９２０に対応付けて記録する機能を有する。
【０１７５】
チャンク情報取得部９１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ１０１５から、チャンクサイズ１００１と、チャンクデータサイズ１００５とを取得して、さらに、フィールド情報蓄積部９２０から、入力バッファ２０１が保持するチャンクに対応するコンテンツタイプ１１０２と、フレーム番号１１０３とを取得して、チャンクの開始アドレスと、チャンクサイズ１００１と、チャンクデータサイズ１００５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ１１０２を鍵設定部２１２に出力し、コンテンツタイプ１１０２と、フレーム番号１１０３とを連鎖判定部２１３に出力する機能を有する。
【０１７６】
チャンク情報取得部９１０は、ＣＰＵＡ１１１又はＣＰＵＢ１１２によってコンテンツヘッダが書き込まれると、入力バッファ２０１が保持するデータがコンテンツヘッダである旨のコンテンツヘッダ信号を暗号エンジン９５０に出力する機能を有する。
【０１７７】
以上のように構成されたコンテンツ復号処理装置３０００の動作の詳細について、以下図面を用いて説明する。
【０１７８】
＜動作＞
再生機１０００がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダを入力バッファ２０１に書き込む。
【０１７９】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０１８０】
コンテンツヘッダが入力バッファ２０１に書き込まれると、コンテンツ復号処理装置３０００はコンテンツ復号処理を開始する。
【０１８１】
図１２は、コンテンツ復号処理装置３０００の行うコンテンツ復号処理のフローチャートである。
【０１８２】
コンテンツ復号処理装置３０００がコンテンツ復号処理を開始すると、チャンク情報取得部９１０はコンテンツヘッダ信号を出力し、演算判定部２２１は出力されたコンテンツヘッダ信号を受け取る。
【０１８３】
さらに、コンテンツヘッダ解析部９３０は、入力バッファ２０１が保持するコンテンツヘッダから、チャンク毎に対応付けられている、開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３との組を全て読み出し、読み出した、開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３との組を全て、フィールド情報蓄積部９２０に対応付けて記録する（ステップＳ１２００）。
【０１８４】
演算判定部２２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダを読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダを出力バッファ２０２に書き込む。
【０１８５】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部９１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ１０１５から、チャンクサイズ１００１と、チャンクデータサイズ１００５とを取得し（ステップＳ１２０２）、加えて、フィールド情報蓄積部９２０から、入力バッファ２０１が保持するチャンクに対応するコンテンツタイプ１１０２と、フレーム番号１１０３とを取得して、チャンクの開始アドレスと、チャンクサイズ１００１と、チャンクデータサイズ１００５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ１１０２を鍵設定部２１２に出力し、コンテンツタイプ１１０２と、フレーム番号１１０３とを連鎖判定部２１３に出力する。
【０１８６】
以後、ステップＳ１２０５〜ステップＳ１２６５までの処理は、実施の形態１のコンテンツ復号処理装置２０００の動作における、ステップＳ８０５〜ステップＳ８６５までの処理と同じ処理であるので説明を省略する。
【０１８７】
なお、ステップＳ１２０５はステップＳ８０５、ステップＳ１２１０はステップＳ８１０、ステップＳ１２１５はステップＳ８１５、ステップＳ１２２０はステップＳ８２０、ステップＳ１２２５はステップＳ８２５、ステップＳ１２３０はステップＳ８３０、ステップＳ１２３５はステップＳ８３５、ステップＳ１２４０はステップＳ８４０、ステップＳ１２４５はステップＳ８４５、ステップＳ１２５０はステップＳ８５０、ステップＳ１２５５はステップＳ８５５、ステップＳ１２６５はステップＳ８６５に対応する。
【０１８８】
ステップＳ１２６５において、コンテンツ復号処理装置３０００が待機を開始してから所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ１２７０：Ｙｅｓ）、再びステップＳ１２０２の処理を開始する。
【０１８９】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ１２７０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置３０００は、コンテンツ復号処理を終了する。
＜実施の形態３＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【０１９０】
本実施の形態３に係るコンテンツ復号処理装置は、復号するコンテンツを構成する暗号ブロックが、連続する２つのチャンクに分割されて構成されることを許されているデータフォーマットとなっているコンテンツを復号することができるように、実施の形態１で説明したコンテンツ復号処理装置２０００を変形したものである。
【０１９１】
本実施の形態３に係るコンテンツ復号処理装置は、実施の形態１で説明したコンテンツ復号処理装置２０００の一部である、チャンク情報取得部２１０と、チャンク間連鎖値保持部２１６と、連鎖値記録部２２８とを変形し、さらに、新たに端数処理制御部１３００と前処理部１３０１と後処理部１３０２とを備えるように変形した形態であって、実施の形態１の再生機１０００の暗号エンジン１５０を、暗号エンジン１５０の一部を変形することで得られた暗号エンジン９５０に置き替えるように変形した再生機上で実現される。
【０１９２】
以下、実施の形態１で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
【０１９３】
＜構成＞
＜コンテンツのデータ構造＞
本実施の形態３に係るコンテンツ復号処理装置４０００が復号するコンテンツは、実施の形態１の暗号ブロックが、連続する２つのチャンクに分割されて構成されるように変形されたデータフォーマットとなっている。
【０１９４】
図１３（ａ）は、コンテンツ復号処理装置４０００の復号対象であるコンテンツにおける、コンテンツデータの一部のデータ構造を示す図であって、図１３（ｂ）は、図１３（ａ）の一部分を拡大した図である。
【０１９５】
暗号化されたフレーム１４１０は、コンテンツタイプがＶｉｄｅｏであって、フレーム番号がｊとなっており、チャンク１４３０と、チャンク１４４０と、チャンク１４６０との３つのフレームに分割されている。
【０１９６】
暗号化されたフレーム１４２０は、コンテンツタイプがＡｕｄｉｏ１であって、フレーム番号がｋとなっており、チャンク１４５０とチャンク１４７０との２つのフレームに分割されている。
【０１９７】
暗号化されたＶｉｄｅｏフレーム１４１０は、の８つの暗号ブロック１４０１〜１４０８から構成されているが、これらのうち、暗号ブロック１４０１と暗号ブロック１４０２とは、チャンク１４３０に含まれ、暗号ブロック１４０４と暗号ブロック１４０５とは、チャンク１４４０に含まれ、暗号ブロック１４０７と暗号ブロック１４０８とは、チャンク１４６０に含まれている。
【０１９８】
暗号ブロック１４０３は、前半部分と後半部分とに分割され、前半部分はチャンク１４３０に含まれ、後半部分はチャンク１４４０に含まれている。
【０１９９】
暗号ブロック１４０４は、前半部分と後半部分とに分割され、前半部分はチャンク１４４０に含まれ、後半部分はチャンク１４６０に含まれている。
【０２００】
上で述べたとおり、コンテンツ復号処理装置４０００の復号対象であるコンテンツにおける、コンテンツデータは、暗号ブロックが、連続する２つのチャンクに分割されて構成されることが許されている。
【０２０１】
＜コンテンツ復号処理装置４０００＞
図１４は、コンテンツ復号処理装置４０００の機能構成を示すブロック図である。
【０２０２】
コンテンツ復号処理装置４０００は、実施の形態１のコンテンツ復号処理装置２０００に対して、チャンク情報取得部２１０をチャンク情報取得部１３１０に変形し、チャンク間連鎖値保持部２１６をチャンク間連鎖値保持部１３１６に変形し、連鎖値記録部２２８を連鎖値記録部１３２８に変形し、新たに端数処理制御部１３００と前処理部１３０１と後処理部１３０２とを追加したものである。
【０２０３】
チャンク情報取得部１３１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２を鍵設定部２１２に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２１３と端数処理制御部１３００とに出力する機能を有する。
【０２０４】
チャンク情報取得部１３１０は、ＣＰＵＡ１１１又はＣＰＵＢ１１２によってコンテンツヘッダ３０１が書き込まれると、入力バッファ２０１が保持するデータがコンテンツヘッダ３０１である旨のコンテンツヘッダ信号を暗号エンジン１３５０に出力する機能を有する。
【０２０５】
チャンク間連鎖値保持部１３１６は、コンテンツタイプと、フレーム番号と、連鎖値と、チャンクの後尾の暗号ブロックのサイズである端数データサイズとを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０２０６】
図１５は、チャンク間連鎖値保持部１３１６が記憶する情報を示す図である。
【０２０７】
図１５に示されるように、チャンク間連鎖値保持部１３１６は、コンテンツタイプ１８０１のそれぞれに、フレーム番号１８０２と、連鎖値１８０３と、端数データサイズ１８０４とを対応付けて記憶している。
【０２０８】
ここで記憶されているフレーム番号１８０２は、対応するコンテンツタイプ１８０１において最後に復号されたフレームのフレーム番号であって、連鎖値１８０３は、フレーム番号６０２に属する最後に復号されたチャンクの後尾の暗号ブロックが復号された際に算定された連鎖値であって、端数データサイズ１８０４はフレーム番号６０２に属する最後に復号されたチャンクの後尾の暗号ブロックのサイズである。
【０２０９】
なお、フレーム番号１８０２と、連鎖値１８０３と端数データサイズ１８０４との組は、暗号エンジン１５０によって、コンテンツタイプ１８０１毎に上書きされる。
【０２１０】
端数処理制御部１３００は、チャンク情報取得部１３１０からコンテンツタイプ４０２とフレーム番号４０３とを受け取ると、受け取ったコンテンツタイプ４０２とフレーム番号４０３との組に対応付けられてチャンク間連鎖値保持部１３１６に記憶されている端数データサイズ１８０４を読み出し、入力バッファ２０１に記憶されているチャンクの先頭の暗号ブロックのサイズと、後尾の暗号ブロックのサイズとを算出し、前処理部１３０１と、演算部２２２と、後処理部１３０２とを用いて端数処理を実行し、後尾の暗号ブロックのサイズを連鎖値記録部１３２８に出力する機能を有する。
【０２１１】
この端数処理については、後程図面を用いて説明する。
【０２１２】
チャンクの先頭の暗号ブロックのサイズは、暗号ブロックの単位ビット数である１２８からチャンク間連鎖値保持部１３１６から読みだした端数データサイズ１８０４を減算することで算出し、チャンク後尾の暗号ブロックのサイズは、暗号サイズ算出部１３１１から出力される、チャンクデータサイズ４０５にチャンク間連鎖値保持部１３１６から読み出した端数データサイズ１８０４を加算し、加算結果を暗号ブロックの単位ビット数である１２８で除算したときの余りとして算出する。
【０２１３】
前処理部１３０１は、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを受け取ると、先頭の暗号ブロックのサイズと１２８ビットとの差分のビット数の０を受け取った暗号ブロックの先頭に付与して１２８ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する機能を有する。
【０２１４】
また、前処理部１３０１は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックを受け取ると、１２８ビットに不足するビット数の０を受け取った暗号ブロックの後尾に付与して１２８ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する機能を有する。
【０２１５】
後処理部１３０２は、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ると、先頭の暗号ブロックのサイズと１２８ビットとの差分のビット数の００を暗号ブロックの先頭から削除して合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する機能を有する。
【０２１６】
また、後処理部１３０２は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの後尾の暗号ブロック復号することで得られた復号された暗号ブロックを受け取ると、１２８ビットに不足するビット数を暗号ブロックの後尾から削除して合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する機能を有する。
【０２１７】
連鎖値記録部１３２８は、暗号サイズ算出部１３１１が出力する暗号ブロックの数と、連鎖判定部２１３が出力するコンテンツタイプと、フレーム番号と、演算部２２２が出力する連鎖値と、端数処理制御部１３００が出力する後尾の暗号ブロックのサイズとを入力され、演算部２２２が出力する連鎖値が入力されると、入力された連鎖値を、チャンク間連鎖値保持部１３１６かチャンク内連鎖値保持部２２７のいずれか一方に記録する機能を有する。
【０２１８】
連鎖値記録部１３２８は、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、連鎖判定部２１３から入力されるコンテンツタイプと、フレーム番号と、端数データサイズとを関連付けて、チャンク間連鎖値保持部１３１６に上書きして記録し、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部２２７に上書きして記録し、演算判定部２２１に暗号ブロック要請信号を出力する機能を有する。
【０２１９】
なお、連鎖値記録部１３２８は、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合において、端数データサイズが１２８ビット未満の場合には、チャンク間連鎖値保持部１３１６に上書きして記録する連鎖値は、演算部２２２から前回入力された連鎖値とする機能を有する。
【０２２０】
ここで、チャンク間連鎖値保持部１３１６に書き込む端数データサイズとは、端数処理制御部１３００から入力される後尾の暗号ブロックのサイズのことである。
【０２２１】
連鎖値記録部１３２８は、演算部２２２から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
【０２２２】
この連鎖値数カウンタは、暗号サイズ算出部１３１１から暗号ブロックの数が入力される毎にリセットされる。
【０２２３】
連鎖値記録部１３２８は、演算部２２２から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
【０２２４】
暗号エンジン１３５０は、実施の形態１の暗号エンジン１５０に対して、チャンク間連鎖値保持部２１６を１３１６に変形し、連鎖値記録部２２８を連鎖値記録部１３２８に変形し、新たに端数処理制御部１３００と前処理部１３０１と後処理部１３０２とを追加したものである。
【０２２５】
＜端数処理＞
以下図面を用いて、端数処理制御部１３００が、前処理部１３０１と、演算部２２２と、後処理部１３０２とを用いて行う端数処理について説明する。
【０２２６】
図１６は、暗号ブロックの前半が欠落している場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【０２２７】
前処理部１３０１は、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを受け取ると、受け取った暗号ブロック１５０１は、先頭の暗号ブロックのサイズと１２８ビットとの差分のビット数だけ先頭のビットが欠落していると判断し、欠落しているビット数の０からなる補完データ１５０２を付与して、１２８ビットの合成暗号ブロックを作成する。
【０２２８】
前処理部１３０１は、作成した暗号ブロックを演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する。
【０２２９】
演算部２２２は、入力された１２８ビットの暗号ブロックと、１２８ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部１３０２に出力する。
【０２３０】
後処理部１３０２は、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持する先頭の暗号ブロックが復号された暗号ブロックを受け取ると、受け取った復号された暗号ブロックは、先頭の暗号ブロックのサイズと１２８ビットとの差分のビット数だけ先頭のビットが不要なビットであると判断し、不要なビットを暗号ブロックの先頭から削除して合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する。
【０２３１】
図１７は、暗号ブロックの後半が欠落している場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【０２３２】
前処理部１３０１は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックを受け取ると、受け取った暗号ブロック１５０１は、後尾の暗号ブロックのサイズと１２８ビットとの差分のビット数だけ後尾のビットが欠落していると判断し、欠落しているビット数の０からなる補完データ１５０２を付与して、１２８ビットの合成暗号ブロックを作成する。
【０２３３】
前処理部１３０１は、作成した暗号ブロックを演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する。
【０２３４】
演算部２２２は、入力された１２８ビットの暗号ブロックと、１２８ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部１３０２に出力する。
【０２３５】
後処理部１３０２は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックが復号された暗号ブロックを受け取ると、受け取った復号された暗号ブロックは、後尾の暗号ブロックのサイズと１２８ビットとの差分のビット数だけ後尾のビットが不要なビットであると判断し、不要なビットを暗号ブロックの後尾から削除して合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する。
【０２３６】
図１８は、暗号ブロックに欠落がない場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【０２３７】
前処理部１３０１は、（１）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビットである場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを受け取るとき、（２）端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビットである場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックを受け取るとき、（３）演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭と後尾の暗号ブロック以外の暗号ブロックを受け取るときに、受け取った暗号ブロックは、欠落が無いと判断し、受け取った暗号ブロックをそのまま演算部２２２に出力する。
【０２３８】
演算部２２２は、入力された１２８ビットの暗号ブロックと、１２８ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部１３０２に出力する。
【０２３９】
後処理部１３０２は、（１）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビットである場合において、演算部２２２から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックが復号された暗号ブロックを受け取るとき、（２）端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビットである場合において、演算部２２２から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックが復号された暗号ブロックを受け取るとき、（３）演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭と後尾の暗号ブロック以外の暗号ブロックを受け取るときに、受け取った復号された暗号ブロックは、欠落が無いと判断し、受け取った復号された暗号ブロックをそのまま出力選択部２２９に出力する。
【０２４０】
以上のように構成されたコンテンツ復号処理装置４０００の動作の詳細について、以下図面を用いて説明する。
【０２４１】
＜動作＞
再生機がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ３０１を入力バッファ２０１に書き込む。
【０２４２】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０２４３】
コンテンツヘッダが入力バッファ２０１に書き込まれると、コンテンツ復号処理装置３０００はコンテンツ復号処理を開始する。
【０２４４】
図１９、図２０は、コンテンツ復号処理装置４０００の行うコンテンツ復号処理のフローチャートである。
【０２４５】
コンテンツ復号処理装置４０００がコンテンツ復号処理を開始すると、チャンク情報取得部９１０はコンテンツヘッダ信号を出力し、演算判定部２２１は出力されたコンテンツヘッダ信号を受け取る。
【０２４６】
演算判定部２２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダ３０１を読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダ３０１を出力バッファ２０２に書き込む。
【０２４７】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部１３１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して（ステップＳ１９００）、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２を鍵設定部２１２に出力し、フレーム番号４０３を連鎖判定部２１３と端数処理制御部１３００とに出力する。
【０２４８】
暗号サイズ算出部１３１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とが入力されると、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数を計算し（ステップＳ１９１０）、チャンクの開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを演算判定部２２１に出力し、暗号ブロックの数を連鎖値記録部１３２８に出力する。
【０２４９】
連鎖値記録部１３２８は、暗号サイズ算出部２１１から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
【０２５０】
演算判定部２２１は、暗号サイズ算出部１３１１から、チャンクの開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ３１１とパディング３１３とを読み出して出力選択部２２９に出力し、出力選択部２２９は入力されたチャンクヘッダ３１１とパディング３１３とを出力バッファ２０２に書き込み（ステップＳ１９２０）、連鎖値選択部２２６に初期値選択信号を出力する。
【０２５１】
鍵設定部２１２は、チャンク情報取得部１３１０からコンテンツタイプ４０２を入力されると、鍵蓄積部２１４に、入力されたコンテンツタイプ４０２と関連付けられて記憶されている鍵５０２と初期値５０３とを読み出して、読み出した鍵５０２を鍵保持部２２３に出力し、読み出した初期値を初期値保持部２２４に出力し、鍵蓄積部２１４は、入力された鍵を上書きして記憶し、初期値保持部２２４は、入力された初期値を上書きして記憶する（ステップＳ１９３０）。
【０２５２】
端数処理制御部１３００は、チャンク情報取得部１３１０からコンテンツタイプ４０２とフレーム番号４０３とを受け取ると、受け取ったコンテンツタイプ４０２とフレーム番号４０３との組に対応付けられてチャンク間連鎖値保持部１３１６に記憶されている端数データサイズ１８０４を読み出し、入力バッファ２０１に記憶されているチャンクの先頭の暗号ブロックのサイズと、後尾の暗号ブロックのサイズとを算出し（ステップＳ１９３５）、算出した先頭の暗号ブロックのサイズを、前処理部１３０１と、後処理部１３０２とに出力し、算出した後尾の暗号ブロックのサイズを、連鎖値記録部１３２８に出力する。
【０２５３】
連鎖判定部２１３は、チャンク情報取得部１３１０から、コンテンツタイプ４０２と、フレーム番号４０３とを入力されると、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中であるか否かを判定するために、入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部１３１６に関連付けられて記憶されているか否かを調べて（ステップＳ１９４０）、記憶されている場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中であると判断し（ステップＳ１９４０：Ｙｅｓ）、コンテンツタイプ４０２とフレーム番号４０３とを連鎖値記録部１３２８に出力し、暗号連鎖信号とコンテンツタイプ４０２とを初期値選択部２２５に出力する。
【０２５４】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖継続信号と、コンテンツタイプ４０２との組みを受け取ると、チャンク間連鎖値保持部１３１６から、受け取ったコンテンツタイプ４０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力する。
【０２５５】
連鎖値選択部２２６は、演算判定部２２１から初期値選択信号を受け取っているので、初期値選択部２２５から入力される連鎖値を選択して、演算部２２２に出力する（ステップＳ１９５０）。
【０２５６】
次に演算判定部２２１は、入力バッファ２０１に記憶されている暗号チャンクの先頭の暗号ブロックを読み出して、前処理部１３０１に出力する。
【０２５７】
前処理部１３０１は、暗号ブロックが分割されているか否かを判断するために、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満であるか否かを判断し（ステップＳ１９７０）、１２８ビット未満である場合に、暗号ブロックが分割されていると判断し（ステップＳ１９７０：Ｙｅｓ）、１２８ビットに不足するビット数の０を受け取った暗号ブロックの先頭に付与して１２８ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する。
【０２５８】
ステップＳ１９４０において、入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部１３１６に関連付けられて記憶されていない場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中でないと判断し（ステップＳ１９４０：Ｎｏ）、コンテンツタイプ４０２とフレーム番号４０３とを連鎖値記録部２２８に出力し、暗号終了信号を初期値選択部２２５に出力する。
【０２５９】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖終了信号を受け取ると、初期値保持部２２４が保持する初期値を読み出して連鎖値選択部２２６に出力する。
【０２６０】
連鎖値選択部２２６は、演算判定部２２１から初期値選択信号を受け取っているので、初期値選択部２２５から初期値が入力されると、入力された初期値を演算部２２２で使用する連鎖値として演算部２２２に出力する（ステップＳ１９６０）。
【０２６１】
次に演算判定部２２１は、入力バッファ２０１に記憶されている暗号チャンクの先頭の暗号ブロックを読み出して、前処理部１３０１に出力し、前処理部１３０１は、受け取った暗号ブロックをそのまま演算部２２２に出力する。
【０２６２】
ステップＳ１９８０又はステップＳ１９６０の処理が終わると、演算部２２２は、前処理部１３０１から暗号チャンクの先頭の暗号ブロックを受け取る。
【０２６３】
演算部２２２は、鍵保持部２２３に記録されている鍵と、連鎖値選択部から出力される連鎖値とを用いて、受け取った暗号ブロックを復号して後処理部１３０２に出力し、復号の際に算定した次の連鎖値を連鎖値記録部２２８に出力する（ステップＳ２０００）。
【０２６４】
後処理部１３０２は、（１）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ったとき又は、（２）端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの後尾の暗号ブロック復号することで得られた復号された暗号ブロックを受け取ったときに、受け取った復号された暗号ブロックが、前処理部１３０１によって補完データを付与された暗号ブロックが復号されたものであると判断し（ステップＳ２０００：Ｙｅｓ）、受け取った復号された暗号ブロックの、付与された補完データに対応する部分を削除した合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する（ステップＳ２０１０）。
【０２６５】
後処理部１３０２は、（１）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビットである場合、（２）端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビットである場合、（３）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックと後尾の暗号ブロック以外の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ったときに、受け取った復号された暗号ブロックが、前処理部１３０１によって補完データを付与されてない暗号ブロックが復号されたものであると判断し（ステップＳ２０００：Ｎｏ）、受け取った復号された暗号ブロックをそのまま出力選択部２２９に出力する。
【０２６６】
ステップＳ２０１０又はステップＳ２００５：Ｎｏの処理が終わると、出力選択部２２９は、後処理部１３０２から復号された暗号ブロックを受け取る。
【０２６７】
出力選択部２２９は、演算部２２２から復号された暗号ブロックが入力されると、入力された復号された暗号ブロックを、出力バッファ２０２に書き込む。
【０２６８】
連鎖値記録部２２８は、演算部２２２から連鎖値が入力されると、連鎖値数カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数と、暗号サイズ算出部から入力された暗号ブロックの数とを比較することで、演算部２２２から入力された連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定する（ステップＳ２０１５）。
【０２６９】
ステップＳ２０１５において、新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し（ステップＳ２０１５：Ｙｅｓ）、演算部２２２から入力された連鎖値をチャンク内連鎖値保持部に上書きして記録し（ステップＳ２０２０）、連鎖値記録部２２８は、演算判定部２２１に暗号ブロック要請信号を出力する。
【０２７０】
演算判定部２２１は、連鎖値記録部２２８から暗号ブロック要請信号を受け取ると、次の暗号ブロックを前処理部１３０１に出力し連鎖値選択信号を連鎖値選択部２２６に出力する。
【０２７１】
前処理部１３０１は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックを受け取ったときに、後続の暗号ブロックが分割されていると判断し（ステップＳ２０２５：Ｙｅｓ）、１２８ビットに不足するビット数の０を受け取った暗号ブロックの先頭に付与して１２８ビットの合成暗号ブロックを作成し（ステップＳ２０３０）、作成した合成暗号ブロックを、演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する。
前処理部１３０１は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビットである場合、又は、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロック以外の暗号ブロックを受け取った場合には、後続の暗号ブロックが分割されていないと判断し（ステップＳ２０２５：Ｎｏ）、演算判定部２２１から受け取った暗号ブロックをそのまま演算部２２２に出力する。
【０２７２】
連鎖値選択部２２６は、連鎖値選択信号を受信すると、チャンク内連鎖値保持部２２７が保持する連鎖値を読み出して演算部２２２に出力する（ステップＳ２０３５）。
【０２７３】
ステップＳ２０３５の処理が終わると、再びステップＳ２０００の処理を開始する。
【０２７４】
ステップＳ２０１５において、新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断し（ステップＳ２０１５：Ｎｏ）、端数データサイズが１２８ビットであるときには、演算部２２２から入力された連鎖値を、連鎖判定部２１３から入力されたコンテンツタイプと、フレーム番号と、端数データサイズとを関連付けて、チャンク間連鎖値保持部１３１６に上書きして記録し、端数データサイズが１２８ビット未満の場合には、チャンク間連鎖値保持部１３１６に上書きして記録する連鎖値は、演算部２２２から前回入力された連鎖値を記録する（ステップＳ２０４０）。
【０２７５】
ステップＳ２０４０の処理が終わると、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれるまで、コンテンツ復号処理装置４０００は待機する（ステップＳ２０５０）。
【０２７６】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ２０５５：Ｙｅｓ）、再びステップＳ１９００の処理を開始する。
【０２７７】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ２０５５：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置２０００は、コンテンツ復号処理を終了する。
＜実施の形態４＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【０２７８】
本実施の形態２に係るコンテンツ復号処理装置は、実施の形態１のコンテンツ復号処理装置２０００の復号対象であるコンテンツに含まれるチャンク３１０のチャンクヘッダ３１１の一部が変形し、チャンクヘッダに鍵情報と初期値情報とを含んでいるデータフォーマットであるコンテンツを復号することができるように、実施の形態１で説明したコンテンツ復号処理装置２０００を変形したものである。
【０２７９】
本実施の形態４に係るコンテンツ復号処理装置は、実施の形態１で説明したコンテンツ復号処理装置２０００の一部である、チャンク情報取得部２１０と、鍵蓄積部２１４と、鍵設定部２１２とを変形し、さらに、新たに鍵生成部を備えるように変形した形態であって、コンテンツ復号処理装置２０００と同様に、実施の形態１の再生機１０００上で実現される。
【０２８０】
以下、実施の形態１で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
【０２８１】
＜構成＞
＜コンテンツのデータ構造＞
本実施の形態４に係るコンテンツ復号処理装置５０００が復号するコンテンツは、実施の形態１のコンテンツ３００を、実施の形態１のチャンクヘッダ３１１に、新たに鍵情報２２０５と、初期値情報２２０６とが加わっているように変形したコンテンツである。
【０２８２】
図２１は、本実施の形態４に係るコンテンツ復号処理装置３０００の復号対象であるコンテンツを構成するチャンク２２５０のデータ構成を示す構成図である。
【０２８３】
チャンク２２５０は、チャンクヘッダ１０１５、チャンクデータ１０１０、パディング１０２０から構成されている。
【０２８４】
チャンクヘッダ２２００は、暗号化されていないデータであって、チャンクのサイズを示す情報を含むチャンクサイズ２２０１、コンテンツタイプを示す情報を含むコンテンツタイプ２２０２、フレーム番号を示す情報を含むフレーム番号２２０３、デコードに使用する情報を含むデコード用ヘッダ情報２２０４、鍵を生成するための鍵情報２２０５、初期値を生成するための初期値情報２２０６、チャンクデータのサイズを示す情報を含むチャンクデータサイズ２２０７からなる。
【０２８５】
このうち、チャンクサイズ２２０１、コンテンツタイプ２２０２、フレーム番号２２０３、デコード用ヘッダ情報２２０４、チャンクデータサイズ２２０７は、それぞれ、実施の形態１の、チャンクサイズ４０１、コンテンツタイプ４０２、フレーム番号４０３、デコード用ヘッダ情報４０４、チャンクデータサイズ４０５と同様のものである。
【０２８６】
また、チャンクヘッダ２２００の構成要素である、チャンクサイズ２２０１、コンテンツタイプ２２０２、フレーム番号２２０３、デコード用ヘッダ情報２２０４、鍵情報２２０５、初期値情報２２０６、チャンクデータサイズ２２０７のそれぞれのビット長と出現順番とは固定である。
【０２８７】
ここで、鍵情報２２０５は自らを含むチャンクの属する暗号フレームを復号するための鍵を生成するための情報であって、初期値情報２２０６は、自らを含むチャンクの属する暗号フレームを復号するための初期値を生成するための情報である。
【０２８８】
＜コンテンツ復号処理装置５０００＞
図２２は、コンテンツ復号処理装置５０００の機能構成を示すブロック図である。
【０２８９】
コンテンツ復号処理装置５０００は、実施の形態１のコンテンツ復号処理装置２０００に対して、チャンク情報取得部２１０をチャンク情報取得部２１１０に変形し、鍵蓄積部２１４を鍵蓄積部２１１４に変形し、鍵設定部２１２を鍵設定部２１１２に変形し、新たに鍵生成部２１０１を追加したものである。
【０２９０】
チャンク情報取得部２１１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ２２００から、チャンクサイズ２２０１と、チャンクデータサイズ２２０７と、コンテンツタイプ２２０２と、フレーム番号２２０３と、鍵情報２２０５と、初期値情報２２０６とを取得して、チャンクの開始アドレスと、チャンクサイズ２２０１と、チャンクデータサイズ２２０７とを暗号サイズ算出部２１１に出力し、コンテンツタイプ２２０２と、フレーム番号２２０３とを鍵設定部２１２と連鎖判定部２１３とに出力し、コンテンツタイプ２２０２と、フレーム番号２２０３と、鍵情報２２０５と、初期値情報２２０６とを鍵生成部２１０１に出力する機能を有する。
【０２９１】
チャンク情報取得部２１１０は、ＣＰＵＡ１１１又はＣＰＵＢ１１２によってコンテンツヘッダ３０１が書き込まれると、入力バッファ２０１が保持するデータがコンテンツヘッダ３０１である旨のコンテンツヘッダ信号を暗号エンジン１５０に出力する機能を有する。
【０２９２】
鍵生成部２１０１は、チャンク情報取得部２１１０から、コンテンツタイプ２２０２と、フレーム番号２０３と、鍵情報２２０５と、初期値情報２２０６とを受け取ると、受け取った鍵情報２２０５から鍵を作成し、初期値情報２２０６から初期値を作成し、鍵蓄積部２１１４に、受け取ったコンテンツタイプ２２０２と、受け取ったフレーム番号２０３と、生成した鍵と、生成した初期値とを関連付けて記録する機能を有する。
【０２９３】
また、鍵生成部２１０１は、鍵情報２２０５が暗号化されている場合には復号し、初期値情報２２０６が暗号化されている場合には復号する機能を有する。
【０２９４】
鍵蓄積部２１１４は、コンテンツタイプと、フレーム番号と、鍵と、初期値とを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０２９５】
図２３は、鍵蓄積部２１１４が記憶する情報を示す図である。
【０２９６】
図２３に示されるように、鍵蓄積部２１１４は、コンテンツタイプ２３００と、フレーム番号２３０１と、鍵２３０２と、初期値２３０３とを関連付けて記憶している。
【０２９７】
鍵設定部２１１２は、チャンク情報取得部２１１０からのコンテンツタイプ２２０２とフレーム番号２２０３とを入力されると、鍵蓄積部２１１４から、入力されたコンテンツタイプ２２０２とフレーム番号２２０３の組と関連付けられて記憶されている鍵２３０２と初期値２３０３とを読み出して、暗号エンジン１５０に出力する機能を有する。
【０２９８】
以上のように構成されたコンテンツ復号処理装置５０００の動作の詳細について、以下図面を用いて説明する。
【０２９９】
＜動作＞
再生機１０００がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダを入力バッファ２０１に書き込む。
【０３００】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの先頭のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０３０１】
コンテンツヘッダが入力バッファ２０１に書き込まれると、コンテンツ復号処理装置５０００はコンテンツ復号処理を開始する。
【０３０２】
図２４は、コンテンツ復号処理装置２０００の行うコンテンツ復号処理のフローチャートである。
【０３０３】
コンテンツ復号処理装置５０００がコンテンツ復号処理を開始すると、チャンク情報取得部２１１０はコンテンツヘッダ信号を出力し、演算判定部２２１は出力されたコンテンツヘッダ信号を受け取る。
【０３０４】
演算判定部２２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダを読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダを出力バッファ２０２に書き込む。
【０３０５】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部２１１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ２２００から、チャンクサイズ２２０１と、チャンクデータサイズ２２０７と、コンテンツタイプ２２０２と、フレーム番号２２０３と、鍵情報２２０５と、初期値情報２２０６とを取得して（ステップＳ２４００）、チャンクの開始アドレスと、チャンクサイズ２２０１と、チャンクデータサイズ２２０７とを暗号サイズ算出部２１１に出力し、コンテンツタイプ２２０２と、フレーム番号２２０３とを鍵設定部２１１２と連鎖判定部２１３とに出力し、コンテンツタイプ２２０２と、フレーム番号２２０３と、鍵情報２２０５と、初期値情報２２０６とを鍵生成部２１０１に出力する。
【０３０６】
鍵生成部２１０１は、チャンク情報取得部２１１０から、コンテンツタイプ２２０２と、フレーム番号２０３と、鍵情報２２０５と、初期値情報２２０６とを受け取ると、受け取った鍵情報２２０５から鍵を作成し、初期値情報２２０６から初期値を作成し、鍵蓄積部２１１４に、受け取ったコンテンツタイプ２２０２と、受け取ったフレーム番号２２０３と、生成した鍵と、生成した初期値とを関連付けて記録する（ステップＳ２４０２）。
【０３０７】
暗号サイズ算出部２１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ２２０１と、チャンクデータサイズ２２０７とが入力されると、パディング２２３０の開始アドレスと、チャンクの終了アドレスと、チャンクデータ２２２０に含まれる暗号ブロックの数を計算し（ステップＳ２４０５）、チャンクの開始アドレスと、パディング２２３０の開始アドレスと、チャンクの終了アドレスとを演算判定部２２１に出力し、暗号ブロックの数を連鎖値記録部２２８に出力する。
【０３０８】
連鎖値記録部２２８は、暗号サイズ算出部２１１から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
【０３０９】
演算判定部２２１は、暗号サイズ算出部２１１から、チャンクの開始アドレスと、パディング２２３０の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ２２００とパディング２２３０とを読み出して出力選択部２２９に出力し、出力選択部２２９は入力されたチャンクヘッダ２２００とパディング２２３０とを出力バッファ２０２に書き込み（ステップＳ２４１０）、連鎖値選択部２２６に初期値選択信号を出力する。
【０３１０】
鍵設定部２１１２は、チャンク情報取得部２１０からコンテンツタイプ２２０２とフレーム番号２２０３を入力されると、鍵蓄積部２１４に、入力されたコンテンツタイプ２２０２とフレーム番号２２０３との組と関連付けられて記憶されている鍵２３０２と初期値２３０３とを読み出して、読み出した鍵２３０２を鍵保持部２２３に出力し、読み出した初期値２３０３を初期値保持部２２４に出力し、鍵蓄積部２１４は、入力された鍵を上書きして記憶し、初期値保持部２２４は、入力された初期値を上書きして記憶する（ステップＳ２４１５）。
【０３１１】
以降、ステップＳ２４２０〜ステップＳ２４６５までの処理は、実施の形態１のコンテンツ復号処理装置２０００の動作における、ステップＳ８２０〜ステップＳ８６５までの処理と同じ処理であるので説明を省略する。
【０３１２】
なお、ステップＳ２４２０はステップＳ８２０、ステップＳ２４２５はステップＳ８２５、ステップＳ２４３０はステップＳ８３０、ステップＳ２４３５はステップＳ８３５、ステップＳ２４４０はステップＳ８４０、ステップＳ２４４５はステップＳ８４５、ステップＳ２４５０はステップＳ８５０、ステップＳ２４５５はステップＳ８５５、ステップＳ２４６５はステップＳ８６５に対応する。
【０３１３】
ステップＳ２４６５において、コンテンツ復号処理装置５０００が待機を開始してから所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ２４７０：Ｙｅｓ）、再びステップＳ２４００の処理を開始する。
【０３１４】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ２４７０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置５０００は、コンテンツ復号処理を終了する。
＜実施の形態５＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【０３１５】
本実施の形態５に係るコンテンツ復号処理装置は、実施の形態１のコンテンツ復号処理装置２０００の復号対象であるコンテンツと同様のフォーマットのコンテンツを復号するコンテンツ復号処理装置であって、復号対象のコンテンツから、全てのチャンクのチャンクヘッダの情報を読み取って記録する第１処理部と、第１処理部に記憶されているチャンクヘッダの情報を用いてコンテンツを復号する第２処理部とから構成されるように、実施の形態１で説明したコンテンツ復号処理装置２０００を変形したものである。
【０３１６】
本実施の形態５に係るコンテンツ復号処理装置は、実施の形態１で説明したコンテンツ復号処理装置２０００の一部である、チャンク情報取得部２１０と、暗号サイズ算出部２１１と、連鎖判定部２１３と、鍵設定部２１２と、演算判定部２２１と、初期値選択部２２５と、連鎖値記録部２２８とを変形し、さらに、暗号情報蓄積部と、フレーム番号蓄積部とを備えるように変形した形態であって、実施の形態１の再生機１０００の暗号エンジン１５０を、暗号エンジン１５０の一部を変形することで得られた暗号エンジン２５５０に置き替えるように変形した再生機上で実現される。
【０３１７】
以下、実施の形態１で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
【０３１８】
＜構成＞
＜コンテンツ復号処理装置６０００＞
図２５は、コンテンツ復号処理装置６０００の機能構成を示すブロック図である。
【０３１９】
コンテンツ復号処理装置６０００は、実施の形態１のコンテンツ復号処理装置２０００に対して、チャンク情報取得部２１０をチャンク情報取得部２５１０に変形し、暗号サイズ算出部２１１を暗号サイズ算出部２５１１に変形し、連鎖判定部２１３を連鎖判定部２４１３に変形し、鍵設定部２１２を鍵設定部２５１２に変形し、演算判定部２２１を演算判定部２５２１に変形し、初期値選択部２２５を初期値選択部２５２５に変形し、連鎖値記録部２２８を連鎖値記録部２５２８に変形し、さらに、暗号情報蓄積部２５３０と、フレーム番号蓄積部２５２２とを追加したものである。
【０３２０】
チャンク情報取得部２５１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２１３に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを関連付けて暗号情報蓄積部２５３０に記録する機能を有する。
【０３２１】
暗号サイズ算出部２５１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを入力されると、チャンクデータ３１２の開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数を計算し、計算したチャンクデータの開始アドレスと、パディングの開始アドレスと、チャンクの終了アドレスと、暗号ブロックの数とを、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する機能を有する。
【０３２２】
チャンクデータ３１２の開始アドレスは、チャンクの開始アドレスと固定長であるチャンクヘッダ３１１のサイズを加算することで算出され、パディング３１３の開始アドレスは、チャンクヘッダ３１１の開始アドレスにとチャンクデータサイズ４０５とを加算することで算出され、チャンクの終了アドレスは、チャンクの開始アドレスとチャンクサイズ４０１とを加算することで算出され、暗号ブロックの数は、チャンクデータサイズ４０５を暗号ブロックの単位ビット数である１２８で除算することで算出される。
【０３２３】
フレーム番号蓄積部２５２２は、コンテンツタイプとフレーム番号とを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０３２４】
図２６は、フレーム番号蓄積部２５２２が記憶する情報を示す図である。
【０３２５】
図２６に示されるように、フレーム番号蓄積部２５２２は、Ｖｉｄｅｏと、Ａｕｄｉｏ１と、Ａｕｄｉｏ２との３つのコンテンツタイプ２７０１のそれぞれに、フレーム番号２７０２を対応付けて記憶している。
【０３２６】
ここに記憶されているフレーム番号２７０２は、コンテンツタイプ２７０１のそれぞれにおいて、チャンク情報取得部２５１０によって取得されたフレーム番号のうち、最新のフレーム番号である。
【０３２７】
連鎖判定部２５１３は、チャンク情報取得部２５１０からコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが入力されると、チャンク情報取得部２５１０から入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、フレーム番号蓄積部２５２２に関連付けられて記憶されているか否かを調べて、記憶されている場合には、入力バッファ２０１に保持されてチャンクが暗号連鎖継続中であると判断し、記憶されていない場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中でないと判断する機能を有する。
【０３２８】
連鎖判定部２５１３は、暗号連鎖中であると判断した場合には、暗号連鎖中の旨を、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、暗号連鎖中でないと判断した場合には、フレーム番号蓄積部２５２２に記憶されている、チャンク情報取得部２５１０から入力されるコンテンツタイプと同じコンテンツタイプ２７０１のフレーム番号２７０２を更新し、暗号連鎖終了の旨を、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する機能を有する。
【０３２９】
暗号情報蓄積部２５３０は、復号対象のコンテンツを構成する全てのチャンクについての、開始アドレスと、コンテンツタイプと、フレーム番号と、チャンクデータ開始アドレスと、暗号ブロック数と、パディング開始アドレスと、チャンク終了アドレスと、連鎖の有無とを対応付けて、チャンクの順番に記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０３３０】
図２７は、暗号情報蓄積部２５３０が記憶する情報を示す図である。
【０３３１】
図２７に示されるように、暗号情報蓄積部２５３０は、復号対象のコンテンツのチャンクの順番に、各チャンクの開始アドレス２６０１と、コンテンツタイプ２６０２と、フレーム番号２６０３と、チャンクデータ開始アドレス２６０４と、暗号ブロック数２６０５と、パディング開始アドレス２６０６と、チャンク終了アドレス２６０７と、連鎖の有無２６０８とを記憶している。
【０３３２】
鍵設定部２５１２は、暗号情報蓄積部２５３０から、チャンクの順に順次コンテンツタイプ２６０２を読み出して、鍵蓄積部２１４から、読み出したコンテンツタイプ２６０２と関連付けられて記憶されている鍵５０２と初期値５０３とを読み出して、暗号エンジン１５０に出力する機能を有する。
【０３３３】
演算判定部２５２１は、暗号情報蓄積部２５３０から、チャンクの順に順次チャンクの開始アドレス２６０１と、チャンクデータ開始アドレス２６０４と、パディング開始アドレス２６０６と、チャンク終了アドレス２６０７とを用いて、入力バッファ２０１に保持されているチャンクから、チャンクヘッダ３１１と、パディング３１３とを読み出して出力選択部２２９に出力し、チャンクデータ３１２を読み出して、暗号ブロック単位で演算部２２２に出力し、演算部２２２に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックである場合に、初期値選択信号を連鎖値選択部２２６に出力し、演算部２２２に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックでない場合に、連鎖値選択信号を連鎖値選択部２２６に出力する機能を有する。
【０３３４】
なお、チャンクデータの先頭の暗号ブロックであるか否かは、チャンクデータの開始アドレスを用いて判断する。
【０３３５】
初期値選択部２５２５は、暗号情報蓄積部２５３０から、チャンクの順に順次連鎖の有無２６０８と、コンテンツタイプ２６０２の組みを読み出し、読み出した連鎖の有無２６０８が連鎖中の旨を示すものであった場合に、チャンク間連鎖値保持部２１６から、読み出したコンテンツタイプ２６０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力し、読み出した連鎖の有無２６０８が連鎖中の旨を示すものでなかった場合に、初期値保持部２２４が保持している初期値を読み出して連鎖値選択部２２６に出力する機能を有する。
【０３３６】
連鎖値記録部２５２８は、暗号情報蓄積部２５３０から、チャンクの順に順次暗号ブロック数２６０５と、コンテンツタイプ２６０２と、フレーム番号２６０３を読み出し、演算部２２２が出力する連鎖値が入力された場合に、入力された連鎖値を、チャンク間連鎖値保持部２１６かチャンク内連鎖値保持部２２７のいずれか一方に記録する機能を有する。
【０３３７】
連鎖値記録部２５２８は、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、暗号情報蓄積部２５３０から読み出したコンテンツタイプ２６０２と、フレーム番号２６０３と関連付けて、チャンク間連鎖値保持部２１６に上書きして記録し、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部２２７に上書きして記録し、演算判定部２５２１に暗号ブロック要請信号を出力する機能を有する。
【０３３８】
連鎖値記録部２２８は、演算部２２２から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
【０３３９】
この連鎖値数カウンタは、暗号情報蓄積部２５３０から暗号ブロック数２６０５を読み出す毎にリセットされる。
【０３４０】
連鎖値記録部２２８は、演算部２２２から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
【０３４１】
暗号エンジン２５５０は、実施の形態１の暗号エンジン１５０に対して、演算判定部２２１を演算判定部２５２１に変形し、初期値選択部２２５を初期値選択部２５２５に変形し、連鎖値記録部２２８を連鎖値記録部２５２８に変形したものである。
【０３４２】
第１処理部２５０１は、チャンク情報取得部２５１０と、暗号サイズ算出部２５１１と、連鎖判定部２５１３と、暗号情報蓄積部２５３０と、フレーム番号蓄積部２５２２とから構成され、ＣＰＵＡ１１１によって制御される。
【０３４３】
第１処理部２５０１は、コンテンツに含まれる全てのチャンクのチャンクヘッダから、コンテンツの復号に必要な情報をチャンク順に取得し、暗号情報蓄積部２５３０に蓄積するチャンクデータ蓄積処理を行なう。
【０３４４】
第２処理部２５０２は、鍵設定部２５１２と、鍵蓄積部２１４と、チャンク間連鎖値保持部２１６と、暗号エンジン２５５０とから構成され、ＣＰＵＢ１１２によって制御される。
【０３４５】
第２処理部２５０２は、第１処理部の暗号情報蓄積部２５３０からコンテンツの復号に必要な情報を読み出し、コンテンツを復号するコンテンツ復号処理を行なう。
【０３４６】
以上のように構成されたコンテンツ復号処理装置６０００の動作の詳細について、以下図面を用いて説明する。
【０３４７】
＜動作＞
再生機１０００がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ３０１を入力バッファ２０１に書き込む。
【０３４８】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０３４９】
コンテンツヘッダ３０１が入力バッファ２０１に書き込まれると、コンテンツ復号処理装置６０００の第１処理部２５０１は、コンテンツに含まれるチャンクのチャンクヘッダから、コンテンツの復号に必要な情報をチャンク順に取得し、暗号情報蓄積部２５３０に蓄積する。
【０３５０】
第１処理部２５０１が、チャンクデータ蓄積処理を終了すると、再びＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツヘッダ３０１を入力バッファ２０１に書き込み、その後、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０３５１】
２度目にコンテンツヘッダ３０１が入力バッファに書き込まれると、コンテンツ復号処理装置６０００の第２処理部２５０２はコンテンツ復号処理を開始する。
【０３５２】
図２８と図２９とは、コンテンツ復号処理装置６０００の行うコンテンツ復号処理のフローチャートである。
【０３５３】
コンテンツ復号処理装置６０００の第１処理部２５０１がチャンクヘッダの情報読み取り処理を開始すると、チャンク情報取得部２５１０はコンテンツヘッダ信号を出力し、演算判定部２５２１は出力されたコンテンツヘッダ信号を受け取る。
【０３５４】
演算判定部２５２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダ３０１を読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダ３０１を出力バッファ２０２に書き込む。
【０３５５】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部２５１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して（ステップＳ２８００）、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２５１３に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを関連付けて暗号情報蓄積部２５３０に記録する。
【０３５６】
暗号サイズ算出部２５１１は、チャンク情報取得部２１０からの、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを入力とし、チャンクデータ３１２の開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数を計算する（ステップＳ２８１０）。
【０３５７】
連鎖判定部２５１３は、チャンク情報取得部２１０から入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、フレーム番号蓄積部２５２２に関連付けられて記憶されているか否かを調べて（ステップＳ２８２０）、記憶されていない場合には、フレーム番号蓄積部２５２２に記憶されている、チャンク情報取得部２１０から入力されるコンテンツタイプと同じコンテンツタイプ２７０１のフレーム番号２７０２を更新する。
【０３５８】
暗号サイズ算出部２５１１は、計算したチャンクデータの開始アドレスと、パディングの開始アドレスと、チャンクの終了アドレスと、暗号ブロックの数とを、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、連鎖判定部２５１３は、ステップＳ２８２０において、記憶されている場合には、暗号連鎖中の旨を、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、記録されていない場合には、暗号連鎖終了の旨を、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する（ステップＳ２８４０）。
【０３５９】
ステップＳ２８４０の処理が終わると、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれるまで、コンテンツ復号処理装置２０００は待機する（ステップＳ２８５０）。
【０３６０】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ２８５０：Ｙｅｓ）、再びステップＳ８００の処理を開始する。
【０３６１】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ２８５０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、第１処理部２５０１は、チャンクデータ蓄積処理を終了する。
【０３６２】
第１処理部２５０１が、チャンクデータ蓄積処理を終了すると、再びＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツヘッダ３０１を入力バッファ２０１に書き込み、その後、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０３６３】
２度目にコンテンツヘッダ３０１が入力バッファに書き込まれると、コンテンツ復号処理装置６０００の第２処理部２５０２はコンテンツ復号処理を開始する。
【０３６４】
コンテンツ復号処理装置２０００がコンテンツ復号処理を開始すると、演算判定部２５２１は、入力バッファ２０１からコンテンツヘッダ３０１を読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダ３０１を出力バッファ２０２に書き込む。
【０３６５】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、演算判定部２５２１は、暗号情報蓄積部２５３０から、書き込まれたチャンクに対応する、開始アドレス２６０１と、パディング開始アドレス２６０６と、チャンク終了アドレス２６０７とを読み出し、鍵設定部２５１２は、暗号情報蓄積部２５３０から、書き込まれたチャンクに対応する、コンテンツタイプ２６０２を読み出し、初期値選択部２５２５は、暗号情報蓄積部２５３０から、書き込まれたチャンクに対応する、連鎖の有無２６０８と、コンテンツタイプ２６０２とを読み出し、連鎖値記録部２５２８は、暗号情報蓄積部２５３０から、書き込まれたチャンクに対応する、暗号ブロック数２６０５と、コンテンツタイプ２６０２と、フレーム番号２６０３を読み出し、連鎖値数カウンタの計測する連鎖値の数をリセットする（ステップＳ２９００）。
【０３６６】
演算判定部２５２１は、暗号情報蓄積部２５３０から、開始アドレス２６０１と、パディング開始アドレス２６０６と、チャンク終了アドレス２６０７とを読み出すと、入力バッファからチャンクヘッダ３１１とパディング３１３とを読み出して出力選択部２２９に出力し、出力選択部２２９は入力されたチャンクヘッダ３１１とパディング３１３とを出力バッファ２０２に書き込み（ステップＳ２９１０）、連鎖値選択部２２６に初期値選択信号を出力する。
【０３６７】
鍵設定部２５１２は、暗号情報蓄積部２５３０からコンテンツタイプ２６０２を入力されると、鍵蓄積部２１４に、入力されたコンテンツタイプ２６０２と関連付けられて記憶されている鍵５０２と初期値５０３とを読み出して、読み出した鍵５０２を鍵保持部２２３に出力し、読み出した初期値５０３を初期値保持部２２４に出力し、鍵蓄積部２１４は、入力された鍵を上書きして記憶し、初期値保持部２２４は、入力された初期値を上書きして記憶する（ステップＳ２９１５）。
【０３６８】
初期値選択部２５２５は、暗号情報蓄積部２５３０から、チャンクの順に順次連鎖の有無２６０８と、コンテンツタイプ２６０２の組みを読み出す（ステップＳ２９２０）と、読み出した連鎖の有無２６０８が連鎖中の旨を示すものであった場合に（ステップＳ２９２０：Ｙｅｓ）、チャンク間連鎖値保持部２１６から、読み出したコンテンツタイプ２６０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力する。
【０３６９】
連鎖値選択部２２６は、演算判定部２５２１から初期値選択信号を受け取っているので、初期値選択部２５２５から入力される連鎖値を選択して、演算部２２２に出力する（ステップＳ２９２５）。
【０３７０】
ステップＳ２９２０において、読み出した連鎖の有無２６０８が連鎖中の旨を示すものでなかった場合に（ステップＳ２９２０：Ｎｏ）、初期値保持部２２４が保持している初期値を読み出して連鎖値選択部２２６に出力する。
【０３７１】
連鎖値選択部２２６は、演算判定部２５２１から初期値選択信号を受け取っているので、初期値選択部２５２５から初期値が入力されると、入力された初期値を演算部２２２で使用する連鎖値として演算部２２２に出力する（ステップＳ２９３０）。
【０３７２】
ステップＳ２９２５又はステップＳ２９３０の処理が終わった後のステップＳ２９３５〜ステップＳ２９６５までの処理は、実施の形態１のコンテンツ復号処理装置２０００の動作における、ステップＳ８３５〜ステップＳ８６５までの処理と同じ処理であるので説明を省略する。
【０３７３】
なお、ステップＳ２９３５はステップＳ８３５、ステップＳ２９４０はステップＳ８４０、ステップＳ２９４５はステップＳ８４５、ステップＳ２９５０はステップＳ８５０、ステップＳ２９５５はステップＳ８５５、ステップＳ２９６５はステップＳ８６５に対応する。
【０３７４】
ステップＳ２９６５において、第２処理部２５０２が待機を開始してから所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ２９７０：Ｙｅｓ）、再びステップＳ１２０２の処理を開始する。
【０３７５】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ２９７０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、第２処理部２５０２はコンテンツ復号処理を終了し、コンテンツ復号処理装置６０００は、コンテンツ復号処理を終了する。
＜補足＞
以上、本発明に係るコンテンツ復号処理装置の一実施形態として、復号対象のデータストリームのデータ構造が、第１種暗号フレーム（例えば暗号化されたビデオフレーム）に属する連鎖する暗号ブロック列からなる暗号チャンク間に、第２種暗号フレーム（例えば暗号化されたオーディオフレーム）に属する暗号ブロック列からなる暗号チャンクが存在しているデータ構造であっても、データストリームを正しく復号することができるコンテンツ復号処理装置について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示したとおりのコンテンツ復号処理装置に限られないことはもちろんである。
（１）実施の形態１において、ＣＰＵブロック１１０はＣＰＵＡ１１１とＣＰＵＢ１１２の２つのＣＰＵから構成されるとしたが、ＣＰＵの数は１つでも構わないし、３つ以上であっても構わないし、デュアルＣＰＵコア機能を持った１つのプロセッサであっても構わないし、クワッドＣＰＵコア機能を持った１つのプロセッサであっても構わない。
（２）実施の形態１において、ＲＯＭ１２１はＲＯＭであるとしたが、読み書き可能な不揮発性メモリが含まれていても構わない。
（３）実施の形態１において、暗号エンジン１５０はＤＳＰであるとしたが、必ずしもＤＳＰである必要はなく、例えばＣＰＵＡ１１１又はＣＰＵＢ１１２がソフトウエアを実行することで実現される構成であっても構わないし、ＣＰＵＡ１１１、ＣＰＵＢ１１２以外のＣＰＵがソフトウエアを実行することで実現される構成であっても構わないし、ＡＳＩＣやＦＰＧＡ等で実現される構成であっても構わない。
【０３７６】
同様に、実施の形態１において、ＡＶデコーダ１６０はＤＳＰであるとしたが、必ずしもＤＳＰである必要はなく、例えばＣＰＵＡ１１１又はＣＰＵＢ１１２がソフトウエアを実行することで実現される構成であっても構わないし、ＣＰＵＡ１１１、ＣＰＵＢ１１２以外のＣＰＵがソフトウエアを実行することで実現される構成であっても構わないし、ＡＳＩＣやＦＰＧＡ等で実現される構成であっても構わない。
（４）実施の形態１において、周辺デバイスブロック１３０は、ハードディスク装置１３１と、ハードディスク装置インターフェース１４１と、読取書込装置１３２と、読取書込装置インターフェース１４２と、出力装置１３３と、出力装置インターフェース１４３と、入力装置１３４と、入力装置インターフェース１４４と、通信装置１３５とから構成されているとしたが、少なくとも、出力装置１３３と、出力装置インターフェース１４３と、入力装置１３４と、入力装置インターフェース１４４とを備えていれば、これら全てを備えている構成ではなくても構わない。
（５）実施の形態１において、ＡＶデコーダ１６０は、ＭＰＥＧ２デコード機能、ＭＰＥＧ４デコード機能、ＭＰＥＧ４−ＡＶＣデコード機能を有するとしたが、これらの符号化方式で符号化されたデータ以外のデータをデコードする機能を有していても構わない。
（６）実施の形態１において、出力装置１３３は、ＬＣＤ（Liquid Crystal Display）と、スピーカとで構成されているとしたが、ＬＣＤの替わりに、ＰＤＰ（Plasma Display Panel）や、有機ＥＬ（Electro-Luminescence）ディスプレイや、ブラウン管であっても構わない。
（７）実施の形態１において、再生機１０００は、パーソナルコンピュータであるとしたが、コンテンツを復号する機能を持つ物であれば、例えば、汎用コンピュータ、テレビ受像機、ＤＶＤ再生機、ＤＶＤ録再生機、ＢＤ再生機、ＢＤ録再生機、ＰＤＡ（Personal Digital Assistance）、又は、携帯通信端末等であっても構わない。
（８）実施の形態１において、入力装置１３４は、ユーザによる操作を受け付けるキーボードと、マウスとから構成されるとしたが、ユーザによる再生機１０００の操作コマンドを受け付ける機能を有するものであれば、例えば、ユーザによる操作を受け付ける入力ボタンや、ユーザが操作するリモートコントローラからの信号を受信する受信装置等であっても構わない。
（９）実施の形態１において、復号対象のコンテンツは、暗号化されたＶｉｄｅｏＥＳと、暗号化されたＡｕｄｉｏ１ＥＳと、暗号化されたＡｕｄｉｏ２ＥＳとが多重化されたものであるとしたが、少なくとも互いに異なる２つのＥＳが多重化されたものであれば、これらのＥＳ以外のＥＳが多重化されたものであっても構わない。
【０３７７】
例えば、Ｖｉｄｅｏ１ＥＳと、Ｖｉｄｅｏ２ＥＳと、Ｖｉｄｅｏ３ＥＳと、ＡｕｄｅｉｏＥＳとが多重化されたものである場合等が考えられる。
【０３７８】
また、暗号化されたＶｉｄｅｏＥＳは、撮影された映像がＭＰＥＧ４−ＡＶＣ方式で符号化され、符号化されることで得られた多数のＶｉｄｅｏフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたものであるとしたが、例えば、ＭＰＥＧ２、ＭＰＥＧ４、Ｍｏｔｉｏｎ  ＪＰＥＧ（Joint Photographic Experts Group）等のＭＰＥＧ４−ＡＶＣ方式以外の方式で符号化されていても構わない。
【０３７９】
さらに、暗号化されたＡｕｄｉｏ１ＥＳ、Ａｕｄｉｏ２ＥＳは、撮影された音声がＭＰＥＧ４−ＡＶＣ方式で符号化され、符号化されることで得られた多数のＡｕｄｉｏフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたものであるとしたが、例えば、ＭＰＥＧ２、ＭＰＥＧ４等のＭＰＥＧ４−ＡＶＣ方式以外の方式で符号化されていても構わない。
（１０）実施の形態１において、チャンクヘッダの構成要素のそれぞれは、ビット長と出現順番が固定であるとしたが、ビット長を示す情報があればビット長は固定でなくても構わないし、順番を示す情報があれば順番は固定でなくても構わない。
（１１）実施の形態１において、チャンクデータは３つの暗号ブロックからなるとしたが、３つ以外の数の暗号ブロックからなるとしても構わない。
（１２）実施の形態１において、暗号ブロックは、ＡＥＳ暗号方式を用いてＣＴＲモードで暗号連鎖化されたものであるとしているが、例えば、ＣＢＣ（Cipher Block Chaining）モードといったＣＲＴモード以外のモードで暗号化されたものであっても構わないし、例えば、ＤＥＳ（Data Encryption Standard）暗号方式といったＡＥＳ暗号方式以外の暗号方式で暗号化されたものであっても構わない。
【０３８０】
また、暗号ブロックのビット長は１２８ビット、連鎖値のビット長は１２８ビット、鍵のビット長は１２８ビットであるとしたが、これらのビット長は、暗号ブロックの暗号方式に応じて、１２８ビット以外のビット長であるとしても構わない。
【０３８１】
例えば、暗号ブロックの暗号方式がＤＥＳ暗号方式である場合には、暗号ブロックのビット長は５６ビット、連鎖値のビット長は５６ビット、鍵のビット長は５６ビットとなる。
（１３）実施の形態１において、演算部２２２は、ＡＥＳ暗号回路７０１を備える構成としているが、暗号ブロックの暗号化方式に応じて、例えばＤＥＳ暗号といったＡＥＳ暗号以外の暗号方式の暗号回路であっても構わない。
（１４）実施の形態１において、インクリメンタ７０３は入力される連鎖値のうち、下位３２ビットの部分のみを１だけインクリメントして次の連鎖値を算定するとしたが、例えば、下位６４ビットの部分のみを１だけインクリメントして次の連鎖値を算定するといったように、下位３２ビット以外の部分を１だけインクリメントするとしても構わないし、例えば、２や−１といった１以外の数をインクリメントするとしても構わない。
（１５）実施の形態１において、復号対象のコンテンツのフォーマットについて図を用いて説明したが、復号対象のコンテンツのファイル形式は、説明したフォーマットに違反していない形式の、例えば、ＡＳＦ（Advanced Streaming Format）形式や、ＭＰ４ファイル形式や、ＱｕｉｃｋＴｉｍｅファイル形式である場合が考えられる。
（１６）実施の形態１において、暗号に使用する鍵は、コンテンツタイプ毎に用意されている例を示したが、例えば、基本となる鍵を１つ用意しておいて、コンテンツタイプ毎に特定の処理を施すことで、各コンテンツタイプ用の鍵を生成するとしてもよい。
（１７）実施の形態１において、ＣＰＵブロック１１０は２つのＣＰＵからなり、メモリブロックはＲＯＭとＲＡＭとからなり、暗号エンジン１５０はＤＳＰからなり、ＡＶデコーダ１６０はＤＳＰからなる構成としたが、これ以外の構成、例えば、ＣＰＵブロック１１０と、メモリブロック１２０と、周辺デバイスブロック１３０と、暗号エンジン１５０と、ＡＶデコーダ１６０と、バスライン１４０の一部とが１つの集積回路で実現されている構成であっても構わない。
【０３８２】
図３０は、再生機１０００のブロック構成を示すブロック図であって、再生機１０００のうち、ＣＰＵブロック１１０と、メモリブロック１２０と、周辺デバイスブロック１３０と、暗号エンジン１５０と、ＡＶデコーダ１６０と、バスライン１４０の一部とが１つの集積回路１０で実現されていることを示している。
（１８）実施の形態４において、復号対象のコンテンツは、鍵情報２２０５がチャンクヘッダ２２００に含まれるデータフォーマットであるとしたが、鍵情報２２０５がチャンクデータ２２２０を構成する暗号ブロックに含まれるとしても構わない。
【０３８３】
このようなデータフォーマットのコンテンツの場合には、チャンク情報取得部２２１０はチャンクデータの暗号ブロックから鍵情報を取得し、鍵生成部２１０１は、チャンク情報取得部２２１０から鍵情報を取得する構成となる。
【０３８４】
鍵生成部２１０１は、鍵情報が暗号化されている場合には、暗号化された鍵情報を復号してから鍵を作成する。
【０３８５】
同様に、実施の形態４において、復号対象のコンテンツは、初期値情報２２０６がチャンクヘッダ２２００に含まれるデータフォーマットであるとしたが、初期値情報２２０６がチャンクデータ２２２０を構成する暗号ブロックに含まれるとしても構わない。
【０３８６】
このようなデータフォーマットのコンテンツの場合には、チャンク情報取得部２２１０はチャンクデータの暗号ブロックから初期値情報を取得し、鍵生成部２１０１は、チャンク情報取得部２２１０から初期値情報を取得する構成となる。
【０３８７】
鍵生成部２１０１は、初期値情報が暗号化されている場合には、暗号化された初期値情報を復号してから鍵を作成する。
（１９）実施の形態４において、鍵情報２２０５は鍵を生成するための情報であり、初期値情報２２０６は初期値を生成するための情報であるとしたが、鍵情報２２０５は鍵そのものであるとしても構わないし、初期値情報２２０６は初期値そのものであるとしても構わない。
（２０）実施の形態４において、鍵情報２２０５は、各暗号化されたＥＳに属する全てのフレームで共通のものを用いても構わないし、チャンク単位で互いに異なるものを用いても構わないし、さらには、鍵情報２２０５がチャンクデータ２２２０を構成する暗号ブロックに含まれている場合であれば、１つのチャンク内に複数の鍵情報２２０５が存在し、同一のチャンク内の暗号ブロックが、互いに異なる鍵情報２２０５を用いても構わない。
【０３８８】
同様に、実施の形態４において、初期値情報２２０６は、各暗号化されたＥＳに属する全てのフレームで共通のものを用いても構わないし、チャンク単位で互いに異なるものを用いても構わないし、さらには、初期値情報２２０６がチャンクデータ２２２０を構成する暗号ブロックに含まれている場合であれば、１つのチャンク内に複数の鍵情報２２０５が存在し、同一のチャンク内の暗号ブロックが、互いに異なる鍵情報２２０５を用いても構わない。
（２１）実施の形態５において、第１処理部２５０１はＣＰＵＡ１１１によって制御され、第２処理部２５０２はＣＰＵＢ１１２によって制御されるとしたが、これ以外の構成、例えば、第１処理部２５０１はＣＰＵＡ１１１とＣＰＵＢ１１２とによって制御されるとしても構わないし、第２処理部２５０２はＣＰＵＡ１１１とＣＰＵＢ１１２とによって制御されるとしても構わない。
【０３８９】
さらには、ＣＰＵブロック１１０が、３つ以上のＣＰＵから構成される場合に、第１処理部２５０１は３つ以上のＣＰＵによって制御されるとしても構わないし、第２処理部２５０２は３つ以上のＣＰＵによって制御されるとしても構わない。
【０３９０】
また、ＣＰＵブロックに、取り扱う情報を秘匿する機能を有するセキュアＣＰＵが存在し、そのセキュアＣＰＵが第２処理部２５０２によって制御されるようにすることで、鍵蓄積部２１４が記憶する鍵と初期値とを第三者に知られないようにするとしても構わない。
（２２）実施の形態５において、第１処理部２５０１がチャンクデータ蓄積処理を終了した後に、第２処理部２５０２がコンテンツ復号処理を開始する例について説明したが、第１処理部２５０１によるチャンクデータ蓄積処理が最後まで終了していなくても、暗号情報蓄積部２５３０に一部のチャンクの情報が記憶された状態で、第２処理部２５０２がコンテンツ復号処理を開始するとしても構わない。
（２３）実施の形態１において、外部記録媒体１３７とは、ＤＶＤ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＡＭ、ＢＤ、ＢＤ−Ｒ、ＢＤ−ＲＥ等であるとしたが、読み取り可能な記録媒体であれば、例えば、ＣＤ（Compact Disc）、ＣＤ−Ｒ、ＳＤカード等であっても構わない。
【０３９１】
また、読取書込装置１３２は、ＤＶＤ、ＤＶＤ−Ｒ、ＢＤ、ＢＤ−Ｒ、ＢＤ−ＲＥ等へのデータの書込みや読取りをすることができるとしたが、データの書込みや読取が可能尾な記録媒体であれば、例えば、ＣＤ、ＣＤ−Ｒ、ＳＤカード等へのデータの書込みや読取りをすることができても構わない。
（２４）実施の形態１において、外部伝送媒体１３６とは、光通信回線、電話通信回線、放送波等であるとしたが、これらの形態は、デジタル信号を伝送することができる形態であれば、例えば、有線の形態であったり、無線の形態であったり、赤外線の形態であったりしても構わない。
【産業上の利用可能性】
【０３９２】
本発明は、暗号化されたデジタルデータを復号する復号処理装置に広く利用することができる。
【符号の説明】
【０３９３】
１５０  暗号エンジン
２０１  入力バッファ
２０２  出力バッファ
２１０  チャンク情報取得部
２１１  暗号サイズ算出部
２１２  鍵設定部
２１３  連鎖判定部
２１４  鍵蓄積部
２１６  チャンク間連鎖値保持部
２２１  演算判定部
２２２  演算部
２２３  鍵保持部
２２４  初期値保持部
２２５  初期値選択部
２２６  連鎖値選択部
２２７  チャンク内連鎖値保持部
２２８  連鎖値記録部
２２９  出力選択部
【図１】
2010055658.tif 000003
【図２】
2010055658.tif 000004
【図３】
2010055658.tif 000005
【図４】
2010055658.tif 000006
【図５】
2010055658.tif 000007
【図６】
2010055658.tif 000008
【図７】
2010055658.tif 000009
【図８】
2010055658.tif 000010
【図９】
2010055658.tif 000011
【図１０】
2010055658.tif 000012
【図１１】
2010055658.tif 000013
【図１２】
2010055658.tif 000014
【図１３】
2010055658.tif 000015
【図１４】
2010055658.tif 000016
【図１５】
2010055658.tif 000017
【図１６】
2010055658.tif 000018
【図１７】
2010055658.tif 000019
【図１８】
2010055658.tif 000020
【図１９】
2010055658.tif 000021
【図２０】
2010055658.tif 000022
【図２１】
2010055658.tif 000023
【図２２】
2010055658.tif 000024
【図２３】
2010055658.tif 000025
【図２４】
2010055658.tif 000026
【図２５】
2010055658.tif 000027
【図２６】
2010055658.tif 000028
【図２７】
2010055658.tif 000029
【図２８】
2010055658.tif 000030
【図２９】
2010055658.tif 000031
【図３０】
2010055658.tif 000032
【手続補正書】
【提出日】平成22年9月10日(2010.9.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号するコンテンツ復号処理装置であって、
チャンクの先頭の暗号ブロックが所定のビット数よりも少ない場合に、当該暗号ブロックのビット数と当該所定のビット数との差を算出し、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックの先頭に付与データを付与して合成暗号ブロックを生成するデータ付与部と、
連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、
前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部と、
前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、
前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とを備え、
前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用い、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記データ付与部によって当該暗号ブロックに基づく合成暗号ブロックが生成されていたとき、当該暗号ブロックの代わりに当該合成暗号ブロックを対象として復号し、
前記復号データ記録部は、前記復号部が合成暗号ブロックを復号した場合に、前記データ付与部によって付与された付与データが前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録する
ことを特徴とするコンテンツ復号処理装置。
【請求項２】
前記データ付与部は、チャンクの後尾の暗号ブロックが前記所定のビット数よりも少ない場合に、当該暗号ブロックのビット数と前記所定のビット数との差を算出し、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックの後尾に付与データを付与して合成暗号ブロックを生成し、
前記復号部は、復号する暗号ブロックがチャンクの後尾の暗号ブロックである場合において、前記データ付与部によって当該暗号ブロックに基づく合成暗号ブロックが生成されていたとき、当該暗号ブロックの代わりに当該合成暗号ブロックを対象として復号する
ことを特徴とする請求項１記載のコンテンツ復号処理装置。
【請求項３】
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と復号された暗号ブロックを記憶するための復号データ保持部とを備えるコンテンツ復号処理装置に、複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号させるコンテンツ復号処理方法であって、
チャンクの先頭の暗号ブロックが所定のビット数よりも少ない場合に、当該暗号ブロックのビット数と当該所定のビット数との差を算出し、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックの先頭に付与データを付与して合成暗号ブロックを生成するデータ付与ステップと、
連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号ステップと、
前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録ステップと、
前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録ステップとを備え、
前記復号ステップは、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用い、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記データ付与部によって当該暗号ブロックに基づく合成暗号ブロックが生成されていたとき、当該暗号ブロックの代わりに当該合成暗号ブロックを対象として復号し、
前記復号データ記録ステップは、前記復号ステップが合成暗号ブロックを復号した場合に、前記データ付与ステップによって付与された付与データが前記復号ステップによって復号されることで得られた部分以外の部分を前記復号データ保持部に記録する
ことを特徴とするコンテンツ復号処理方法。
【請求項４】
複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号する集積回路であって、
チャンクの先頭の暗号ブロックが所定のビット数よりも少ない場合に、当該暗号ブロックのビット数と当該所定のビット数との差を算出し、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックの先頭に付与データを付与して合成暗号ブロックを生成するデータ付与部と、
連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、
前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部と、
前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、
前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とを備え、
前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用い、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記データ付与部によって当該暗号ブロックに基づく合成暗号ブロックが生成されていたとき、当該暗号ブロックの代わりに当該合成暗号ブロックを対象として復号し、
前記復号データ記録部は、前記復号部が合成暗号ブロックを復号した場合に、前記データ付与部によって付与された付与データが前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録する
ことを特徴とする集積回路。
【手続補正書】
【提出日】平成23年3月7日(2011.3.7)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号連鎖ブロック方式で暗号化されている暗号データを復号するコンテンツ復号処理装置に関する。
【背景技術】
【０００２】
情報通信ネットワークを介して通信されるデジタルデータや、光ディスク等のメディアに蓄積されているデジタルデータ等の不正な利用を防止するために、これらのデジタルデータは、第三者がそのままでは利用することができないように暗号化された暗号データとなっている場合が多い。
【０００３】
デジタルデータを暗号化する方式の一つに、暗号対象データを複数の平文ブロックに分割し、直前の平文ブロックの暗号化が、その次の平文ブロックの暗号化に影響を与えるように暗号化していくことで、各平文ブロックを連鎖的に暗号処理するという暗号連鎖ブロック方式がある。
【０００４】
暗号連鎖ブロック方式において、各平文ブロックは、その直前の平文ブロックの暗号化の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して暗号化される。
【０００５】
この暗号連鎖ブロック方式で暗号化された暗号データは、平文ブロックを暗号化することで得られた暗号ブロックが暗号化された順番に並んで構成される。
暗号連鎖ブロック方式において、各暗号ブロックは、その直前の暗号ブロックの復号の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して復号される。
【０００６】
暗号連鎖ブロック方式で暗号化された暗号データを復号する技術として、例えば、暗号ブロックの復号の際に、暗号ブロックの復号処理と並行して次の暗号ブロックの復号に必要な連鎖値を生成することによって、次の暗号ブロックの復号開始時刻を早める技術（特許文献１参照）等が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２９５２１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
一方、ビデオフレームから構成されるビデオデータストリームと、オーディオフレームから構成されるオーディオデータストリームとを、１つのデータストリームとして取り扱う手法として、ビデオデータストリームとオーディオデータストリームとを分割多重化して一つの新たなデータストリームとする手法がある。
【０００９】
このような手法において、分割多重化前のビデオデータストリームとオーディオデータストリームとが、それぞれ、フレーム毎に暗号連鎖ブロック方式で暗号化されているデータストリームである場合には、分割多重化後のデータストリームには、暗号連鎖している暗号ブロック列（例えば暗号化されたビデオフレームの暗号ブロック列）間に、その暗号フレームとは独立に暗号連鎖している暗号ブロック列（例えば暗号化されたオーディオフレームの暗号ブロック列）が存在する場合がある。
【００１０】
このようなデータストリームを復号するコンテンツ復号処理装置は、復号対象のデータストリームが、第１種暗号フレーム（例えば暗号化されたビデオフレーム）に属する連鎖する暗号ブロック列（以下、「暗号チャンク」という。）間に、第２種暗号フレーム（例えば暗号化されたオーディオフレーム）に属する暗号チャンクが存在しているデータ構造のデータストリームを復号することができる必要がある。
【００１１】
しかしながら、暗号ブロックを復号する場合において、単純にデータストリーム上の直前の暗号ブロックの復号の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して暗号ブロックを復号するという構成のコンテンツ復号処理装置では、このようなデータストリームを復号することはできない。
【００１２】
そこで、本発明は、復号するデータストリームが、第１種暗号フレームに属する暗号チャンク間に、第２種暗号フレームに属する暗号チャンクが存在しているデータ構造のデータストリームであっても、データストリームの暗号ブロック順にそのデータストリームを復号することができるコンテンツ復号処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために本発明に係るコンテンツ復号処理装置は、複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号するコンテンツ復号処理装置であって、連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部とを備え、前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とする。
【発明の効果】
【００１４】
上述の構成を備える本発明に係るコンテンツ復号処理装置は、連鎖値記録部は、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録し、復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることになるため、復号するデータストリームが、第１種暗号フレームに属する暗号チャンク間に、第２種暗号フレームに属する暗号チャンクが存在しているデータ構造であっても正しくデータストリームを復号することができるという効果を有する。
【００１５】
また、例えば、データストリームから全ての第１種暗号フレームに属する暗号チャンクのみを順番通りに抽出して、抽出した暗号チャンクを順番通りに復号し、データストリームから全ての第２種暗号フレームのみを順番通りに抽出して、第１種暗号フレームの復号とは独立して、抽出した第２種暗号フレームを順番通りに復号するという復号処理装置でも、正しくデータストリームを復号することができるが、この復号処理装置には、データストリーム全体の中から種別毎に全ての暗号フレームを分離して抽出するという工程が必要になり、さらに、抽出した暗号ブロックを、種別ごとに一時記憶しておくための記憶領域が必要になる。
【００１６】
これに対して、上述の構成を備える本発明に係るコンテンツ復号処理装置では、種別毎に全ての暗号フレームを抽出する工程が不要であり、加えて、抽出した暗号フレームを、種別毎に記憶しておくための記憶領域も不要である。
【００１７】
また、前記連鎖値保持部は、連鎖値を記憶するためのチャンク内連鎖値保持部を含み、前記連鎖値記録部は、前記復号部によって暗号ブロックが復号された場合において、チャンクの後尾でない暗号ブロックが復号されたときに、前記復号部で算定された連鎖値を前記チャンク内連鎖値保持部に記憶されている連鎖値に上書きして記録し、前記復号部は、復号する暗号ブロックがチャンクの先頭の暗号ブロックでない場合に、前記チャンク内連鎖値保持部に記録されている連鎖値を用いて暗号ブロックを復号することを特徴とするとしてもよい。
【００１８】
このような構成にすることによって、チャンク内連鎖値保持部は、連鎖値のみを上書きされて記憶することになるため、チャンク内連鎖値保持部に必要な記憶容量を１つの連鎖値の記憶に必要な記憶容量に限定したコンテンツ復号処理装置を提供することができるという効果を有する。
【００１９】
また、前記連鎖値記録部は、暗号フレームの識別情報と連鎖値とを関連付けて前記連鎖値保持部に記録する場合に、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを前記連鎖値保持部に上書きして記録することを特徴とするとしてもよい。
【００２０】
このような構成にすることによって、連鎖値保持部は、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを上書きされて記憶することになるため、連鎖値保持部に必要な記憶容量を、暗号フレーム種毎に、１つの暗号フレームを示す情報と、１つの連鎖値を関連付けて記憶するのに必要な記憶容量に限定したコンテンツ復号処理装置を提供することができるという効果を有する。
【００２１】
また、前記復号部の復号対象である暗号ブロックが所定のビット数に足りない場合に、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックに付与データを付与するデータ付与部と、前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とをさらに備え、前記復号部の復号対象である暗号ブロックが前記所定のビット数に足りない場合に、前記データ付与部は、前記復号対象である暗号ブロックに付与データを付与して、前記所定のビット数の合成暗号ブロックを生成し、前記復号部は、前記復号対象の暗号ブロックの代わりに前記合成暗号ブロックを復号し、前記復号データ記録部は、前記復号部によって復号された合成暗号ブロックのうち、前記データ付与部によって付与された付与データの部分が前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録するとしてもよい。
【００２２】
ここで、所定のビット数とは、復号部が復号できる暗号ブロックのビット数のことである。
このような構成にすることによって、復号対象である暗号ブロックが、その一部のビットが欠落して所定のビット数に足りない暗号ブロックである場合であっても、暗号ブロックに付与データを付与することで所定のビット数となった合成暗号ブロックを復号部が復号し、復号された合成ブロックから、付与データの部分が復号されることで得られた部分以外の部分を復号データ保持部に記録することになるため、所定のビット数に足りない暗号ブロックであっても、その暗号ブロックを復号して、復号データ保持部に記録することができるコンテンツ復号処理装置を提供することができるという効果を有する。
【図面の簡単な説明】
【００２３】
【図１】再生機１０００のブロック構成を示すブロック図
【図２】コンテンツのデータ構造を示すデータ構造図
【図３】チャンク３１０のデータ構造を示すデータ構造図
【図４】コンテンツ復号処理装置２０００の機能構成を示すブロック図
【図５】鍵蓄積部２１４が保持する情報を示す図
【図６】チャンク間連鎖値保持部２１６が保持する情報を示す図
【図７】演算部２２２の機能構成を示すブロック図
【図８】コンテンツ復号処理装置２０００のコンテンツ復号動作のフローチャート
【図９】チャンク１０５０のデータ構造を示すデータ構造図
【図１０】コンテンツヘッダに含まれている情報を示す図
【図１１】コンテンツ復号処理装置３０００の機能構成を示すブロック図
【図１２】コンテンツ復号処理装置３０００のコンテンツ復号動作のフローチャート
【図１３】コンテンツデータのデータ構造を示すデータ構造図
【図１４】コンテンツ復号処理装置４０００の機能構成を示すブロック図
【図１５】チャンク間連鎖値保持部１３１６が保持する情報を示す図
【図１６】暗号ブロックに欠落がない場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【図１７】暗号ブロックの後半が欠落している場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【図１８】暗号ブロックの前半が欠落している場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
【図１９】コンテンツ復号処理装置４０００のコンテンツ復号動作のフローチャートその１
【図２０】コンテンツ復号処理装置４０００のコンテンツ復号動作のフローチャートその２
【図２１】チャンク２２５０のデータ構造を示すデータ構造図
【図２２】コンテンツ復号処理装置５０００の機能構成を示すブロック図
【図２３】鍵蓄積部２１１４が保持する情報を示す図
【図２４】コンテンツ復号処理装置５０００のコンテンツ復号動作のフローチャート
【図２５】コンテンツ復号処理装置６０００の機能構成を示すブロック図
【図２６】フレーム番号蓄積部２５２２が保持する情報を示す図
【図２７】暗号情報蓄積部２５３０が保持する情報を示す図
【図２８】コンテンツ復号処理装置６０００のコンテンツ復号動作のフローチャートその１
【図２９】コンテンツ復号処理装置６０００のコンテンツ復号動作のフローチャートその２
【図３０】再生機１０００のハードウエア構成を示すブロック図
【発明を実施するための形態】
【００２４】
＜実施の形態１＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【００２５】
ここで暗号化されたコンテンツとは、ビデオフレームから構成されるビデオデータストリームと、オーディオフレームから構成されるオーディオデータストリームとを、それぞれ、フレーム毎に暗号連鎖ブロック方式で暗号化して、暗号化されたビデオデータストリームと、暗号化されたオーディオデータストリームとを分割多重化して一つの新たなデータストリームとしたものである。
【００２６】
このコンテンツ復号処理装置は、復号対象のデータストリームのデータ構造が、第１種暗号フレーム（例えば暗号化されたビデオフレーム）に属する連鎖する暗号ブロック列からなる暗号チャンク間に、第２種暗号フレーム（例えば暗号化されたオーディオフレーム）に属する暗号ブロック列からなる暗号チャンクが存在しているデータ構造であっても、データストリームを正しく復号することができる。
【００２７】
以下、本実施の形態に係るコンテンツ復号処理装置の構成について、図面を参照しながら説明する。
＜構成＞
＜再生機１０００＞
図１は、本実施の形態に係るコンテンツ復号処理装置２０００を備えた再生機１０００のブロック構成を示すブロック図である。
【００２８】
再生機１０００は、パーソナルコンピュータであって、ＣＰＵ（Central Processing Unit：中央演算処理装置）ブロック１１０と、メモリブロック１２０と、周辺デバイスブロック１３０と、バスライン１４０と、暗号エンジン１５０と、ＡＶデコーダ１６０とから構成される。
【００２９】
ＣＰＵブロック１１０は、ＣＰＵＡ１１１と、ＣＰＵＢ１１２との２つのＣＰＵから構成される。
ＣＰＵＡ１１１とＣＰＵＢ１１２とは、バスライン１４０と接続し、メモリブロック１２０が記憶するプログラムを実行することで、メモリブロック１２０、周辺デバイスブロック１３０、暗号エンジン１５０、ＡＶデコーダ１６０を用いて、記録媒体から暗号化されたデータストリームを読み出す機能、暗号化されたデータストリームを復号する機能、符号化されたデータストリームを復号する機能等を実現する。
【００３０】
ＣＰＵＡ１１１とＣＰＵＢ１１２とは、互いに協調しながら並列に動作することで、上記機能を実現する。
メモリブロック１２０は、ＲＯＭ（Read Only Memory）１２１とＲＡＭ（Random Access Memory）１２２とから構成されている。
【００３１】
ＲＯＭ１２１は、バスライン１４０と接続し、ＣＰＵＡ１１１の動作を規定するプログラムと、ＣＰＵＢ１１２の動作を規定するプログラムと、ＣＰＵＡ１１１とＣＰＵＢ１１２とが利用するデータとを記憶している。
【００３２】
ＲＡＭ１２２は、バスライン１４０と接続し、ＣＰＵＡ１１１又はＣＰＵＢ１１２がプログラムを実行することに伴って発生するデータを一時的に記憶し、また、周辺デバイスブロック１３０から読み取ったデータを一時的に記憶する。
【００３３】
周辺デバイスブロック１３０は、ハードディスク装置１３１と、ハードディスク装置インターフェース１４１と、読取書込装置１３２と、読取書込装置インターフェース１４２と、出力装置１３３と、出力装置インターフェース１４３と、入力装置１３４と、入力装置インターフェース１４４と、通信装置１３５とから構成されている。
【００３４】
暗号エンジン１５０は、暗号化されたデータの復号を行う機能を有するＤＳＰ（Digital Signal Processor）であって、ＣＰＵＡ１１１及びＣＰＵＢ１１２によって制御され、バスライン１４０と接続する。
【００３５】
ＡＶデコーダ１６０は、符号化されたVideoデータやAudioデータをデコードするＤＳＰであって、ＣＰＵＡ１１１及びＣＰＵＢ１１２によって制御され、ＭＰＥＧ（Moving Picture Experts Group）２デコード機能、ＭＰＥＧ４デコード機能、ＭＰＥＧ４−ＡＶＣデコード機能を有する。
【００３６】
再生機１０００は、ＡＶデコーダ１６０でデコードした結果を、出力装置１３３で出力することで、コンテンツを再生する。
ハードディスク装置１３１は、ＣＰＵＡ１１１及びＣＰＵＢ１１２によって制御され、内蔵するハードディスクにコンテンツを書き込む機能と、内蔵するハードディスクに書き込まれているコンテンツを読み取る機能とを有し、ハードディスク装置インターフェース１４１を介してバスライン１４０と接続する。
【００３７】
ハードディスク装置インターフェース１４１は、ハードディスク装置１３１とバスライン１４０との間の信号のやりとりを仲介するものである。
読取書込装置１３２は、ＣＰＵＡ１１１及びＣＰＵＢ１１２によって制御され、外部記録媒体１３７にコンテンツを書き込む機能と、外部記録媒体１３７に書き込まれているコンテンツを読み取る機能とを有し、読取書込装置インターフェース１４２を介してバスライン１４０と接続する。
【００３８】
ここで、外部記録媒体１３７とは、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ、ＤＶＤ−ＲＡＭ、ＢＤ（Blu-ray Disc）、ＢＤ−Ｒ、ＢＤ−ＲＥ等であって、読取書込装置１３２は、これら、ＤＶＤ、ＤＶＤ−Ｒ、ＢＤ、ＢＤ−Ｒ、ＢＤ−ＲＥ等へのデータの書込みや読取りをすることができる。
【００３９】
読取書込装置インターフェース１４２は、読取書込装置１３２とバスライン１４０との間の信号のやりとりを仲介するものである。
通信装置１３５は、外部伝送媒体１３６を通じてコンテンツを取得する機能を有し、バスライン１４０と接続し、外部のコンテンツサーバや、インターネット上のコンテンツ提供サイト等からコンテンツを取得する。
【００４０】
ここで、外部伝送媒体１３６とは、光通信回線、電話通信回線、放送波等であって、通信装置１３５は、これら光通信回線、電話通信回線、放送波等からの信号を受信することができる。
【００４１】
通信装置１３５が取得するコンテンツは、外部記録媒体１３７、ハードディスク装置１３１に内蔵されるハードディスク、または、ＲＡＭ１２２に書き込まれる。
出力装置１３３は、映像と音声とを出力する装置であって、ＡＶデコーダ１６０によってデコードされたVideoデータやAudioデータを出力する機能を有し、出力装置インターフェース１４３を介してバスライン１４０と接続し、ＬＣＤ（Liquid Crystal Display）と、スピーカとで構成されている。
【００４２】
出力装置インターフェース１４３は、出力装置１３３とバスライン１４０との間の信号のやりとりを仲介するものである。
入力装置１３４は、ユーザによる操作を受け付けるキーボードと、マウスとから構成され、ユーザによる再生機１０００の操作コマンドを受け付ける機能を有し、入力装置インターフェース１４４を介してバスライン１４０と接続する。
【００４３】
入力装置インターフェース１４４は、入力装置１３４とバスライン１４０との間の信号のやりとりを仲介するものである。
バスライン１４０は、ＣＰＵＡ１１１、ＣＰＵＢ１１２、ＲＯＭ１２１、ＲＡＭ１２２、暗号エンジン１５０、ＡＶデコーダ１６０、通信装置１３５、ハードディスク装置インターフェース１４１、読取書込装置インターフェース１４２、出力装置インターフェース１４３、及び、入力装置インターフェース１４４と接続し、接続する各構成要素間のデータ通信を行うためのものである。
【００４４】
上述のように構成される再生機１０００は、ＣＰＵＡ１１１及びＣＰＵＢ１１２がＲＯＭ１２１又はＲＡＭ１２２に記憶されているプログラムを実行することで、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれているコンテンツの再生処理を実行する。
【００４５】
＜コンテンツのデータ構造＞
図２は、本実施の形態１に係るコンテンツ復号処理装置２０００が復号するコンテンツ３００のデータ構造を示すデータ構造図である。
【００４６】
コンテンツ３００は、映像を符号化することで得られるビデオストリームが暗号化されたＶｉｄｅｏＥＳ（Elementary Stream）と、日本語による音声を符号化することで得られるオーディオストリームが暗号化されたＡｕｄｉｏ１ＥＳと、英語による音声を符号化することで得られるオーディオストリームが暗号化されたＡｕｄｉｏ２ＥＳとが分割多重化されて連続する１つのストリームになっているコンテンツデータ３０２と、コンテンツ３００に関する情報を含むコンテンツヘッダ３０１とから構成される。
【００４７】
ここで、暗号化されたＶｉｄｅｏＥＳとは、ＭＰＥＧ４−ＡＶＣ方式で符号化された映像データに対して、１画面の画像データであるＶｉｄｅｏフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたストリームデータである。
【００４８】
暗号連鎖は各Ｖｉｄｅｏフレーム単位で完結し、互いに異なるＶｉｄｅｏフレームに暗号連鎖が継続することはない。
また、連鎖する暗号ブロックの先頭の暗号ブロックを復号する際に用いる連鎖値である初期値と、各暗号ブロックを復号する際に用いる鍵とは、全てのＶｉｄｅｏフレームで共通のものを用いている。
【００４９】
ここで、暗号化されたＡｕｄｉｏ１ＥＳ、Ａｕｄｉｏ２ＥＳとは、音声データをＭＰＥＧ４−ＡＶＣ方式で符号化することで得られたＡｕｄｉｏフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたストリームデータである。
【００５０】
暗号連鎖は各Ａｕｄｉｏフレーム単位で完結し、互いに異なるＡｕｄｉｏフレームに暗号連鎖が継続することはない。
また、初期値と鍵とは、暗号化されたＡｕｄｉｏ１ＥＳに属する全てのＡｕｄｉｏフレームで共通のものを用い、暗号化されたＡｕｄｉｏ２ＥＳに属する全てのＡｕｄｉｏフレームで共通のものを用いているが、暗号化されたＡｕｄｉｏ１ＥＳに属するＡｕｄｉｏフレームの初期値と鍵とは、暗号化されたＡｕｄｉｏ２ＥＳに属するＡｕｄｉｏフレームの初期値と鍵と異なるものである。
【００５１】
コンテンツデータ３０２のデータ構成は、多数のチャンク３１０が連続する構成となっており、各チャンク３１０は、さらに、チャンクヘッダ３１１、チャンクデータ３１２、パディング３１３から構成されている。
【００５２】
図３は、チャンク３１０のデータ構成を示すデータ構成図である。
チャンクヘッダ３１１は、暗号化されていない固定長データであって、チャンクのサイズを示す情報を含むチャンクサイズ４０１、チャンクの属するコンテンツタイプを示す情報を含むコンテンツタイプ４０２、チャンクの属するフレーム番号を示す情報を含むフレーム番号４０３、デコードに使用する情報を含むデコード用ヘッダ情報４０４、チャンクデータのサイズを示す情報を含むチャンクデータサイズ４０５からなる。
【００５３】
ここで、コンテンツタイプとは、Ｖｉｄｅｏ、Ａｕｄｉｏ１、Ａｕｄｉｏ２のうちのいずれかであって、コンテンツタイプがＶｉｄｅｏであれば、暗号化されたＶｉｄｅｏＥＳに属することを示し、コンテンツタイプがＡｕｄｉｏ１であれば、暗号化されたＡｕｄｉｏ１ＥＳに属することを示し、コンテンツタイプがＡｕｄｉｏ２であれば、暗号化されたＡｕｄｉｏ２ＥＳに属することを示す。
【００５４】
また、チャンクヘッダ３１１の構成要素である、チャンクサイズ４０１、コンテンツタイプ４０２、フレーム番号４０３、デコード用ヘッダ情報４０４のそれぞれのビット長と出現順番とは固定である。
【００５５】
チャンクデータ３１２は、暗号連鎖の順番に並ぶ暗号ブロック４１１〜４１３からなる暗号ブロック列である。
例えば、ＡＥＳ（Advanced Encryption Standard）暗号方式を用いた場合、暗号ブロックは、ＣＴＲモードで連鎖暗号化された暗号連鎖の単位であって、ビット長は１２８ビットである。
【００５６】
ここで、暗号ブロックは１２８ビットの平文と、１２８ビットの連鎖値を１２８ビットの鍵を用いてＡＥＳ暗号方式等によって暗号化することによって得られた１２８ビットの暗号連鎖値とを、ビットごとの排他的論理和を取ることで生成されたものであって、各暗号ブロックは、Ｖｉｄｅｏフレーム、Ａｕｄｉｏ１フレーム、Ａｕｄｉｏ２フレームのいずれかのフレームが暗号化されることによって得られたものである。
【００５７】
パディング３１３は、暗号化されていないデータであって、チャンク３１０のデータサイズを整えるために添付されているデータである。
＜コンテンツ復号処理装置２０００＞
図４は、再生機１０００を用いて機能的に実現される、コンテンツ復号処理装置２０００の機能構成を示すブロック図である。
【００５８】
コンテンツ復号処理装置２０００は、ＣＰＵＡ１１１及びＣＰＵＢ１１２がメモリブロック１２０の記憶するプログラムに従って、メモリブロック１２０、周辺デバイスブロック１３０、バスライン１４０、暗号エンジン１５０等を用いて暗号化されたコンテンツの復号処理を行い、復号されたコンテンツをＡＶデコーダ１６０に出力される。
【００５９】
コンテンツ復号処理装置２０００は、復号対象のチャンクを一時的に保持する入力バッファ２０１と、復号されたチャンクを一時的に保持する出力バッファ２０２と、鍵と初期値とを記憶する鍵蓄積部２１４と、チャンク間に跨る連鎖値を記憶するチャンク間連鎖値保持部２１６と、チャンクヘッダ３１１から情報を取得するチャンク情報取得部２１０と、チャンクデータ３１２の開始アドレスとパディング３１３の開始アドレスとを算出する暗号サイズ算出部２１１と、鍵と初期値とを暗号エンジン１５０に出力する鍵設定部２１２と、チャンク間に跨って暗号連鎖が継続しているか否かを判定する連鎖判定部２１３と、暗号エンジン１５０とから構成される。
【００６０】
入力バッファ２０１は、暗号エンジン１５０が復号するコンテンツの一部を一時的に記憶しておくための記憶領域であって、メモリブロック１２０の一部として実装されている。
【００６１】
入力バッファ２０１の記憶する単位は、コンテンツヘッダ３０１又はチャンク３１０単位であって、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって、コンテンツ３００のデータ順に従って、前回記憶していたコンテンツの一部に対して上書きされる。
【００６２】
出力バッファ２０２は、暗号エンジン１５０が復号したコンテンツの一部を、ＡＶデコーダ１６０に出力する前に一時的に記憶しておくための記憶領域であって、メモリブロック１２０の一部として実装されている。
【００６３】
チャンク情報取得部２１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２を鍵設定部２１２に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２１３に出力する機能を有する。
【００６４】
チャンク情報取得部２１０は、ＣＰＵＡ１１１又はＣＰＵＢ１１２によってコンテンツヘッダ３０１が書き込まれると、入力バッファ２０１が保持するデータがコンテンツヘッダ３０１である旨のコンテンツヘッダ信号を暗号エンジン１５０に出力する機能を有する。
【００６５】
暗号サイズ算出部２１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを入力とを入力されると、チャンクデータ３１２の開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数とを計算し、暗号エンジン１５０に出力する機能を有する。
【００６６】
チャンクデータ３１２の開始アドレスは、チャンクの開始アドレスと固定長であるチャンクヘッダ３１１のサイズを加算することで算出され、パディング３１３の開始アドレスは、チャンクヘッダ３１１の開始アドレスにチャンクデータサイズ４０５を加算することで算出され、チャンクの終了アドレスは、チャンクの開始アドレスとチャンクサイズ４０１とを加算することで算出され、暗号ブロックの数は、チャンクデータサイズ４０５を暗号ブロックの単位ビット数である１２８で除算することで算出される。
【００６７】
鍵蓄積部２１４は、コンテンツタイプと、鍵と、初期値とを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
図５は、鍵蓄積部２１４が記憶する情報を示す図である。
【００６８】
図５に示されるように、鍵蓄積部２１４は、コンテンツタイプ４０２のそれぞれに、復号の際に使用する鍵５０２と、初期値５０３とを対応付けて予め記憶している。
鍵５０２のビット数は１２８ビットであって、初期値５０３のビット数は１２８ビットである。
【００６９】
ここで、初期値とは、暗号連鎖ブロック方式で暗号化された暗号ブロックを復号する場合において、連鎖先頭の暗号ブロックを復号する際に使用する連鎖値のことである。
鍵設定部２１２は、チャンク情報取得部２１０からのコンテンツタイプ４０２を入力として、鍵蓄積部２１４から、入力されたコンテンツタイプ４０２と関連付けられて記憶されている鍵５０２と初期値５０３とを読み出して、暗号エンジン１５０に出力する機能を有する。
【００７０】
チャンク間連鎖値保持部２１６は、コンテンツタイプと、フレーム番号と、連鎖値とを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【００７１】
図６は、チャンク間連鎖値保持部２１６が記憶する情報を示す図である。
図６に示されるように、チャンク間連鎖値保持部２１６は、コンテンツタイプ４０２のそれぞれに、フレーム番号６０２と、連鎖値６０３とを対応付けて記憶している。
【００７２】
ここで記憶されているフレーム番号６０２は、対応するコンテンツタイプ４０２において最後に復号されたフレームのフレーム番号であって、連鎖値６０３は、フレーム番号６０２に属する最後に復号されたチャンクの最後の暗号ブロックが復号された際に算定された連鎖値である。
【００７３】
連鎖値６０３のビット数は、１２８ビットである。
なお、フレーム番号６０２と、連鎖値６０３との組は、暗号エンジン１５０によって、コンテンツタイプ４０２毎に上書きされる。
【００７４】
連鎖判定部２１３は、チャンク情報取得部２１０からコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが入力されると、チャンク情報取得部２１０から入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部２１６に関連付けられて記憶されているか否かを調べて、記憶されている場合には、入力バッファ２０１に保持されてチャンクが暗号連鎖継続中であると判断し、記憶されていない場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中でないと判断する機能を有する。
【００７５】
連鎖判定部２１３は、また、コンテンツタイプ４０２とフレーム番号４０３とを暗号エンジンに出力し、加えて、暗号連鎖継続中であると判断した場合には、暗号連鎖継続中の旨を示す暗号連鎖信号を暗号エンジン１５０に出力し、連鎖継続中でないと判断した場合には、暗号連鎖終了の旨を示す暗号終了信号を暗号エンジン１５０に出力する機能を有する。
【００７６】
暗号エンジン１５０は、チャンク情報取得部２１０からのコンテンツヘッダ信号と、暗号サイズ算出部２１１からのチャンクデータ３１２の開始アドレスとパディング３１３の開始アドレスとチャンクの終了アドレスとチャンクデータ３１２に含まれる暗号ブロックの数と、鍵設定部２１２からの鍵５０２と初期値５０３と、連鎖判定部２１３からのコンテンツタイプ４０２とフレーム番号４０３と暗号連鎖信号又は暗号終了信号とに基づいて、入力バッファ２０１に保持されているチャンクを読み出して、読み出したチャンクを復号して、復号されたチャンクを出力バッファ２０２に書き込む機能を有する。
【００７７】
暗号エンジン１５０は、入力バッファ２０１が保持するチャンクからチャンクデータ３１２を読み出して演算部に出力する演算判定部２２１と、チャンクデータ３１２を暗号ブロック単位で復号する演算部２２２と、鍵を記憶する鍵保持部２２３と、初期値を記憶する初期値保持部２２４と、初期値又は連鎖値のいずれか一方を選択する初期値選択部２２５と、演算部が使用する連鎖値を選択する連鎖値選択部２２６と、連鎖値を記憶するためのチャンク内連鎖値保持部２２７と、演算部２２２が出力する連鎖値をチャンク内連鎖値保持部２２７又はチャンク間連鎖値保持部２１６に記録する連鎖値記録部２２８と、演算部２２２によって暗号ブロック単位で復号されたチャンクデータを出力バッファ２０２に書きこむ出力選択部２２９とから構成されている。
【００７８】
演算判定部２２１は、暗号サイズ算出部２１１から出力されるチャンクの開始アドレスと、チャンクデータ３１２の開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを用いて、入力バッファ２０１に保持されているチャンクから、チャンクヘッダ３１１と、パディング３１３とを読み出して出力選択部２２９に出力し、チャンクデータ３１２を読み出して、暗号ブロック単位で演算部２２２に出力し、演算部２２２に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックである場合に、初期値選択信号を連鎖値選択部２２６に出力し、演算部２２２に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックでない場合に、連鎖値選択信号を連鎖値選択部２２６に出力する機能を有する。
【００７９】
なお、チャンクデータの先頭の暗号ブロックであるか否かは、チャンクデータの開始アドレスを用いて判断する。
ここで、チャンクデータの先頭の暗号ブロックを演算部２２２に出力するタイミングは、暗号サイズ算出部２１１からチャンクデータ３１２の開始アドレスが入力されたタイミングであって、チャンクデータの先頭の暗号ブロック以外の暗号ブロックを演算部２２２に出力するタイミングは、連鎖値記録部２２８から暗号ブロック要請信号を受け取ったタイミングである。
【００８０】
また、チャンク情報取得部２１０からコンテンツヘッダ信号が入力された場合には、入力バッファ２０１に保持されているコンテンツヘッダ３０１を読み出して出力選択部２２９に出力する機能を有する。
【００８１】
鍵保持部２２３は、鍵設定部２１２から鍵を入力される毎に、自ら記憶する鍵に上書きし、記憶している鍵を演算部２２２に出力し続ける機能を有する。
初期値保持部２２４は、鍵設定部２１２から初期値を入力される毎に、自ら記憶する初期値上書きし、記憶する初期値を初期値選択部に出力する機能を有する。
【００８２】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖継続信号と、コンテンツタイプ４０２との組みを受け取ると、チャンク間連鎖値保持部２１６から、受け取ったコンテンツタイプ４０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力し、連鎖判定部２１３から、暗号連鎖終了の旨を示す信号を受け取ると、初期値保持部２２４が保持している初期値を読み出して連鎖値選択部２２６に出力する機能を有する。
【００８３】
チャンク内連鎖値保持部２２７は、連鎖値記録部２２８によって上書きされる連鎖値を記憶するための記憶領域である。
連鎖値選択部２２６は、初期値選択信号を演算判定部２２１から受け取った場合に、初期値選択部２２５から出力される初期値又は連鎖値を演算部２２２に出力し、連鎖値選択信号を演算判定部２２１から受け取った場合に、チャンク内連鎖値保持部２２７が保持する連鎖値を読み出して演算部２２２に出力する機能を有する。
【００８４】
連鎖値記録部２２８は、暗号サイズ算出部２１１が出力する暗号ブロックの数と、連鎖判定部２１３が出力するコンテンツタイプと、フレーム番号と、演算部２２２が出力する連鎖値とを入力され、演算部２２２が出力する連鎖値が入力されると、入力された連鎖値を、チャンク間連鎖値保持部２１６かチャンク内連鎖値保持部２２７のいずれか一方に記録する機能を有する。
【００８５】
連鎖値記録部２２８は、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、連鎖判定部２１３から入力されるコンテンツタイプと、フレーム番号と関連付けて、チャンク間連鎖値保持部２１６に上書きして記録し、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部２２７に上書きして記録し、演算判定部２２１に暗号ブロック要請信号を出力する機能を有する。
【００８６】
連鎖値記録部２２８は、演算部２２２から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
【００８７】
この連鎖値数カウンタは、暗号サイズ算出部２１１から暗号ブロックの数が入力される毎にリセットされる。
連鎖値記録部２２８は、演算部２２２から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
【００８８】
出力選択部２２９は、演算判定部２２１から出力されるチャンクヘッダ３１１と、パディング３１３と、復号された暗号ブロック単位で演算部２２２から出力される復号された暗号ブロックと、コンテンツヘッダ３０１とを、出力バッファ２０２に書き込む機能を有する。
【００８９】
演算部２２２は、演算判定部２２１から出力される暗号ブロックを、鍵保持部２２３に保持されている鍵と、連鎖値選択部２２６から出力される初期値又は連鎖値とを用いて、連鎖暗号ブロック方式で復号し、復号の際に次の連鎖値を算定して出力する機能を有する。
【００９０】
図７は演算部２２２の機能構成を示すブロック図である。
演算部２２２は、入力される連鎖値を暗号化して暗号連鎖値を出力するＡＥＳ暗号回路７０１と、入力される連鎖値から、次の暗号ブロックを復号する際に使用する連鎖値を作成するインクリメンタ７０３と、暗号ブロックと暗号連鎖値とから復号された暗号ブロックすなわち平文を出力する排他的論理和回路７０２とから構成され、ＣＴＲモードで連鎖暗号化された暗号ブロックを復号する機能を有する。
【００９１】
ＡＥＳ暗号回路７０１は、１２８ビットの連鎖値に対して、１２８ビットの鍵を用いてＡＥＳ暗号方式で１２８ビットの暗号連鎖値を作成して排他的論理和回路７０２に出力する。
【００９２】
インクリメンタ７０３は、入力される連鎖値のうち、下位３２ビットの部分のみを１だけインクリメントして次の連鎖値を算定する機能を有する。
ここで、インクリメントされた下位３２ビットの部分がオーバーフローした場合には、下位３２ビットの部分のみが０ｘ００となって、上位９６ビットには影響を与えることはない。
【００９３】
排他的論理和回路７０２は、ＡＥＳ暗号回路７０１から出力される１２８ビットの暗号連鎖値と、演算判定部２２１から出力される１２８ビットの暗号ブロックとのビットごとの排他的論理和を出力する機能を有する。
【００９４】
以上のように構成されるコンテンツ復号処理装置２０００は、暗号エンジン１５０がチャンクの後尾の暗号ブロックを復号する際に算定した連鎖値を、コンテンツタイプと、フレーム番号と関連付けてチャンク間連鎖値保持部２１６に記憶する。
【００９５】
また、コンテンツ復号処理装置２０００は、暗号エンジン１５０がチャンクの先頭の暗号ブロックを復号する場合において、チャンク間連鎖値保持部２１６にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値があるときに、そのチャンクは連鎖が継続していると判断して、そのチャンクのコンテンツタイプとフレーム番号と対応付けられてチャンク間連鎖値保持部２１６に記憶されている連鎖値を用いて、チャンクの先頭の暗号ブロックを復号し、チャンク間連鎖値保持部２１６にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値がないときに、そのチャンクは連鎖が継続していない判断して、そのチャンクのコンテンツタイプに対応する初期値を用いて、チャンクの先頭の暗号ブロックを復号する。
【００９６】
さらに、コンテンツ復号処理装置２０００は、暗号エンジン１５０がチャンクの先頭の暗号ブロック以外の暗号ブロックを復号する場合には、チャンク内連鎖値保持部２２７が保持する連鎖値を用いて、暗号ブロックを復号する。
【００９７】
コンテンツ復号処理装置２０００の動作の詳細について、以下図面を用いて説明する。
＜動作＞
再生機１０００がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ３０１を入力バッファ２０１に書き込む。
【００９８】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
コンテンツヘッダ３０１が入力バッファ２０１に書き込まれると、コンテンツ復号処理装置２０００はコンテンツ復号処理を開始する。
【００９９】
図８は、コンテンツ復号処理装置２０００の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置２０００がコンテンツ復号処理を開始すると、チャンク情報取得部２１０はコンテンツヘッダ信号を出力し、演算判定部２２１は出力されたコンテンツヘッダ信号を受け取る。
【０１００】
演算判定部２２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダ３０１を読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダ３０１を出力バッファ２０２に書き込む。
【０１０１】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部２１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して（ステップＳ８００）、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２を鍵設定部２１２に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２１３に出力する。
【０１０２】
暗号サイズ算出部２１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とが入力されると、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数を計算し（ステップＳ８０５）、チャンクの開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを演算判定部２２１に出力し、暗号ブロックの数を連鎖値記録部２２８に出力する。
【０１０３】
連鎖値記録部２２８は、暗号サイズ算出部２１１から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部２２１は、暗号サイズ算出部２１１から、チャンクの開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ３１１とパディング３１３とを読み出して出力選択部２２９に出力し、出力選択部２２９は入力されたチャンクヘッダ３１１とパディング３１３とを出力バッファ２０２に書き込み（ステップＳ８１０）、連鎖値選択部２２６に初期値選択信号を出力する。
【０１０４】
鍵設定部２１２は、チャンク情報取得部２１０からコンテンツタイプ４０２を入力されると、入力されたコンテンツタイプ４０２と関連付けられて鍵蓄積部２１４に記憶されている鍵５０２と初期値５０３とを読み出して、読み出した鍵５０２を鍵保持部２２３に出力し、読み出した初期値５０３を初期値保持部２２４に出力し、鍵蓄積部２１４は、入力された鍵を上書きして記憶し、初期値保持部２２４は、入力された初期値を上書きして記憶する（ステップＳ８１５）。
【０１０５】
連鎖判定部２１３は、チャンク情報取得部２１０から、コンテンツタイプ４０２と、フレーム番号４０３とを入力されると、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中であるか否かを判定するために、入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部２１６に関連付けられて記憶されているか否かを調べて（ステップＳ８２０）、記憶されている場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中であると判断し（ステップＳ８２０：Ｙｅｓ）、コンテンツタイプ４０２とフレーム番号４０３とを連鎖値記録部２２８に出力し、暗号連鎖信号とコンテンツタイプ４０２とを初期値選択部２２５に出力する。
【０１０６】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖継続信号と、コンテンツタイプ４０２との組みを受け取ると、チャンク間連鎖値保持部２１６から、受け取ったコンテンツタイプ４０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力する。
【０１０７】
連鎖値選択部２２６は、演算判定部２２１から初期値選択信号を受け取っているので、初期値選択部２２５から入力される連鎖値を選択して、演算部２２２に出力する（ステップＳ８２５）。
【０１０８】
ステップＳ８２０において、入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部２１６に関連付けられて記憶されていない場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中でないと判断し（ステップＳ８２０：Ｎｏ）、コンテンツタイプ４０２とフレーム番号４０３とを連鎖値記録部２２８に出力し、暗号終了信号を初期値選択部２２５に出力する。
【０１０９】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖終了信号を受け取ると、初期値保持部２２４が保持する初期値を読み出して連鎖値選択部２２６に出力する。
連鎖値選択部２２６は、演算判定部２２１から初期値選択信号を受け取っているので、初期値選択部２２５から初期値が入力されると、入力された初期値を演算部２２２で使用する連鎖値として演算部２２２に出力する（ステップＳ８３０）。
【０１１０】
ステップＳ８２５又はステップＳ８３０の処理が終わると、演算部２２２は、演算判定部２２１から暗号チャンクの先頭の暗号ブロックを受け取る。
演算部２２２は、鍵保持部２２３に記録されている鍵と、連鎖値選択部から出力される連鎖値とを用いて、受け取った暗号ブロックを復号して出力選択部２２９に出力し、復号の際に算定した次の連鎖値を連鎖値記録部２２８に出力する（ステップＳ８３５）。
【０１１１】
演算部２２２が行う暗号ブロックの復号と次の連鎖値の算定とは、（１）ＡＥＳ暗号回路７０１が鍵を用いて連鎖値を暗号化して暗号連鎖値を作成し、（２）排他的論理和回路７０２が作成された暗号連鎖値と、暗号ブロックとのビットごとの排他的論理和を取ることで、暗号ブロックを復号し、（３）インクリメンタ７０３が入力される連鎖値のうち、下位３２ビットの部分のみを１だけインクリメントすることで次の連鎖値を算定するという３つの処理によって実現されている。
【０１１２】
出力選択部２２９は、演算部２２２から復号された暗号ブロックが入力されると、入力された復号された暗号ブロックを、出力バッファ２０２に書き込む。
連鎖値記録部２２８は、演算部２２２から連鎖値が入力されると、連鎖値数カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数と、暗号サイズ算出部から入力された暗号ブロックの数とを比較することで、演算部２２２から入力された連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定する（ステップＳ８４０）。
【０１１３】
ステップＳ８４０において、新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し（ステップＳ８４０：Ｙｅｓ）、演算部２２２から入力された連鎖値をチャンク内連鎖値保持部に上書きして記録し（ステップＳ８４５）、連鎖値記録部２２８は、演算判定部２２１に暗号ブロック要請信号を出力する。
【０１１４】
演算判定部２２１は、連鎖値記録部２２８から暗号ブロック要請信号を受け取ると、次の暗号ブロックを演算部２２２に出力し、連鎖値選択信号を連鎖値選択部２２６に出力し、連鎖値選択部２２６は、連鎖値選択信号を受信すると、チャンク内連鎖値保持部２２７が保持する連鎖値を読み出して演算部２２２に出力する（ステップＳ８５０）。
【０１１５】
ステップＳ８５０の処理が終わると、再びステップＳ８３５の処理を開始する。
ステップＳ８４０において、新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断し（ステップＳ８４０：Ｎｏ）、演算部２２２から入力された連鎖値を、連鎖判定部２１３から入力されたコンテンツタイプと、フレーム番号と関連付けて、チャンク間連鎖値保持部２１６に上書きして記録する（ステップＳ８５５）。
【０１１６】
ステップＳ８５５の処理が終わると、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれるまで、コンテンツ復号処理装置２０００は待機する（ステップＳ８６５）。
【０１１７】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ８７０：Ｙｅｓ）、再びステップＳ８００の処理を開始する。
【０１１８】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ８７０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置２０００は、コンテンツ復号処理を終了する。
【０１１９】
＜具体的動作＞
例として、コンテンツタイプがＶｉｄｅｏでフレーム番号が１０である第１チャンクと、同じくコンテンツタイプがＶｉｄｅｏでフレーム番号が１０であって、第１チャンクに連続するチャンクである第２チャンクとの間に、コンテンツタイプがＡｕｄｉｏ１でフレーム番号が５である第３チャンクが存在している場合において、コンテンツ復号処理装置２０００は、第２フレームの先頭の暗号ブロックを正しい連鎖値を用いて正しく復号することができることを説明する。
【０１２０】
演算部２２２が第１チャンクの後尾の暗号ブロックを復号すると、連鎖値記録部２２８は、演算部２２２から入力された連鎖値、例えば、０ｘ００００１１１１を、連鎖判定部２１３から入力されたＶｉｄｅｏを示すコンテンツタイプと、１０を示すフレーム番号と関連付けて、チャンク間連鎖値保持部２１６に上書きして記録する（ステップＳ８６５）。
【０１２１】
その後、コンテンツ復号処理装置２０００は、第３チャンクを復号し、第３チャンクを復号した後、第２チャンクの復号を開始する。
第２チャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部２１０は、Ｖｉｄｅｏを示すコンテンツタイプと、１０を示すフレーム番号とを取得し（ステップＳ８００）、連鎖判定部２１３に出力する。
【０１２２】
連鎖判定部２１３は、Ｖｉｄｅｏを示すコンテンツタイプと、１０を示すフレーム番号との組み合わせが、チャンク間連鎖値保持部２１６に関連付けられて記憶されているか否かを調べて（ステップＳ８２０）、Ｖｉｄｅｏを示すコンテンツタイプと、１０を示すフレーム番号との組み合わせが、連鎖値０ｘ００００１１１１と関連付けられて記憶されていることがわかるので、第２チャンクが暗号連鎖継続中であると判断し（ステップＳ８２０：Ｙｅｓ）、暗号連鎖信号とＶｉｄｅｏを示すコンテンツタイプを出力する。
【０１２３】
初期値選択部２２５は、暗号連鎖信号とＶｉｄｅｏを示すコンテンツタイプとを受け取ると、チャンク間連鎖値保持部２１６からＶｉｄｅｏを示すコンテンツタイプと関連付けて記憶されている連鎖値０ｘ００００１１１１を読み出して連鎖値選択部２２６に出力し、連鎖値選択部２２６は演算部２２２に、この連鎖値０ｘ００００１１１１を出力する。
【０１２４】
従って、演算部２２２は、この連鎖値０ｘ００００１１１１、すなわち、第１チャンクの後尾の暗号ブロックを復号した際に算定した連鎖値を用いて、第２チャンクの先頭の暗号ブロックを復号することになるので、第２チャンクの先頭の暗号ブロックを正しく復号する。
＜実施の形態２＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【０１２５】
本実施の形態２に係るコンテンツ復号処理装置は、実施の形態１のコンテンツ復号処理装置２０００の復号対象であるコンテンツ３００に含まれるチャンク３１０のチャンクヘッダ３１１の一部とコンテンツヘッダ３０１とが変形したデータフォーマットであるコンテンツを復号することができるように、実施の形態１で説明したコンテンツ復号処理装置２０００を変形したものである。
【０１２６】
本実施の形態２に係るコンテンツ復号処理装置は、実施の形態１で説明したコンテンツ復号処理装置２０００の一部である、チャンク情報取得部２１０を変形し、さらに、新たにコンテンツヘッダ解析部とフィールド情報蓄積部とを備えるように変形した形態であって、コンテンツ復号処理装置２０００と同様に、実施の形態１の再生機１０００上で実現される。
【０１２７】
以下、実施の形態１で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
＜構成＞
＜コンテンツのデータ構造＞
本実施の形態２に係るコンテンツ復号処理装置３０００が復号するコンテンツは、実施の形態１のコンテンツ３００を、実施の形態１のチャンクヘッダ３１１に存在していたコンテンツタイプ４０２と、フレーム番号４０３とに対応する情報が、コンテンツヘッダに存在しているように変形したコンテンツである。
【０１２８】
図９は、本実施の形態２に係るコンテンツ復号処理装置３０００の復号対象であるコンテンツを構成するチャンク１０５０のデータ構成を示す構成図である。
チャンク１０５０は、チャンクヘッダ１０１５、チャンクデータ１０１０、パディング１０２０から構成されている。
【０１２９】
チャンクヘッダ１０１５は、暗号化されていないデータであって、チャンクのサイズを示す情報を含むチャンクサイズ１００１、デコードに使用する情報を含むデコード用ヘッダ情報１００４、チャンクデータのサイズを示す情報を含むチャンクデータサイズ１００５からなり、チャンクサイズ１００１、デコード用ヘッダ情報１００４、チャンクデータサイズ１００５のそれぞれのビット長と出現順番とは固定である。  チャンクデータ１０１０は、実施の形態１のチャンクデータ３１２と同様のものであって、パディング２２３０は、実施の形態１のパディング３１３と同様のものである。
【０１３０】
図１０は、本実施の形態２に係るコンテンツを構成するコンテンツヘッダに含まれている情報を示す構成図である。
コンテンツヘッダは、コンテンツに含まれるすべてのチャンク１０５０について、チャンク１０５０の並び順に、チャンク１０５０毎の開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３とを対応付けて保持している。
【０１３１】
コンテンツタイプ１１０２は実施の形態１のコンテンツタイプ４０２と同様のものであり、フレーム番号１１０３は実施の形態１のフレーム番号６０２と同様のものである。
＜コンテンツ復号処理装置３０００＞
図１１は、コンテンツ復号処理装置３０００の機能構成を示すブロック図である。
【０１３２】
コンテンツ復号処理装置３０００は、実施の形態１のコンテンツ復号処理装置２０００に対して、チャンク情報取得部２１０をチャンク情報取得部９１０に変形し、新たにフィールド情報蓄積部９２０と、コンテンツヘッダ解析部９３０とを追加したものである。
【０１３３】
フィールド情報蓄積部９２０は、コンテンツヘッダに保持されている、チャンク１０５０毎の開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３とを対応付けて記憶しておくための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０１３４】
コンテンツヘッダ解析部９３０は、入力バッファ２０１が保持するコンテンツヘッダから、チャンク毎に対応付けられている、開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３との組を全て読み出し、読み出した、開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３との組を全て、フィールド情報蓄積部９２０に対応付けて記録する機能を有する。
【０１３５】
チャンク情報取得部９１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ１０１５から、チャンクサイズ１００１と、チャンクデータサイズ１００５とを取得して、さらに、フィールド情報蓄積部９２０から、入力バッファ２０１が保持するチャンクに対応するコンテンツタイプ１１０２と、フレーム番号１１０３とを取得して、チャンクの開始アドレスと、チャンクサイズ１００１と、チャンクデータサイズ１００５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ１１０２を鍵設定部２１２に出力し、コンテンツタイプ１１０２と、フレーム番号１１０３とを連鎖判定部２１３に出力する機能を有する。
【０１３６】
チャンク情報取得部９１０は、ＣＰＵＡ１１１又はＣＰＵＢ１１２によってコンテンツヘッダが書き込まれると、入力バッファ２０１が保持するデータがコンテンツヘッダである旨のコンテンツヘッダ信号を暗号エンジン９５０に出力する機能を有する。
【０１３７】
以上のように構成されたコンテンツ復号処理装置３０００の動作の詳細について、以下図面を用いて説明する。
＜動作＞
再生機１０００がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダを入力バッファ２０１に書き込む。
【０１３８】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
コンテンツヘッダが入力バッファ２０１に書き込まれると、コンテンツ復号処理装置３０００はコンテンツ復号処理を開始する。
【０１３９】
図１２は、コンテンツ復号処理装置３０００の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置３０００がコンテンツ復号処理を開始すると、チャンク情報取得部９１０はコンテンツヘッダ信号を出力し、演算判定部２２１は出力されたコンテンツヘッダ信号を受け取る。
【０１４０】
さらに、コンテンツヘッダ解析部９３０は、入力バッファ２０１が保持するコンテンツヘッダから、チャンク毎に対応付けられている、開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３との組を全て読み出し、読み出した、開始アドレス１１０１と、コンテンツタイプ１１０２と、フレーム番号１１０３との組を全て、フィールド情報蓄積部９２０に対応付けて記録する（ステップＳ１２００）。
【０１４１】
演算判定部２２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダを読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダを出力バッファ２０２に書き込む。
【０１４２】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部９１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ１０１５から、チャンクサイズ１００１と、チャンクデータサイズ１００５とを取得し（ステップＳ１２０２）、加えて、フィールド情報蓄積部９２０から、入力バッファ２０１が保持するチャンクに対応するコンテンツタイプ１１０２と、フレーム番号１１０３とを取得して、チャンクの開始アドレスと、チャンクサイズ１００１と、チャンクデータサイズ１００５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ１１０２を鍵設定部２１２に出力し、コンテンツタイプ１１０２と、フレーム番号１１０３とを連鎖判定部２１３に出力する。
【０１４３】
以後、ステップＳ１２０５〜ステップＳ１２６５までの処理は、実施の形態１のコンテンツ復号処理装置２０００の動作における、ステップＳ８０５〜ステップＳ８６５までの処理と同じ処理であるので説明を省略する。
【０１４４】
なお、ステップＳ１２０５はステップＳ８０５、ステップＳ１２１０はステップＳ８１０、ステップＳ１２１５はステップＳ８１５、ステップＳ１２２０はステップＳ８２０、ステップＳ１２２５はステップＳ８２５、ステップＳ１２３０はステップＳ８３０、ステップＳ１２３５はステップＳ８３５、ステップＳ１２４０はステップＳ８４０、ステップＳ１２４５はステップＳ８４５、ステップＳ１２５０はステップＳ８５０、ステップＳ１２５５はステップＳ８５５、ステップＳ１２６５はステップＳ８６５に対応する。
【０１４５】
ステップＳ１２６５において、コンテンツ復号処理装置３０００が待機を開始してから所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ１２７０：Ｙｅｓ）、再びステップＳ１２０２の処理を開始する。
【０１４６】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ１２７０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置３０００は、コンテンツ復号処理を終了する。
＜実施の形態３＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【０１４７】
本実施の形態３に係るコンテンツ復号処理装置は、復号するコンテンツを構成する暗号ブロックが、連続する２つのチャンクに分割されて構成されることを許されているデータフォーマットとなっているコンテンツを復号することができるように、実施の形態１で説明したコンテンツ復号処理装置２０００を変形したものである。
【０１４８】
本実施の形態３に係るコンテンツ復号処理装置は、実施の形態１で説明したコンテンツ復号処理装置２０００の一部である、チャンク情報取得部２１０と、チャンク間連鎖値保持部２１６と、連鎖値記録部２２８とを変形し、さらに、新たに端数処理制御部１３００と前処理部１３０１と後処理部１３０２とを備えるように変形した形態であって、実施の形態１の再生機１０００の暗号エンジン１５０を、暗号エンジン１５０の一部を変形することで得られた暗号エンジン９５０に置き替えるように変形した再生機上で実現される。
【０１４９】
以下、実施の形態１で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
＜構成＞
＜コンテンツのデータ構造＞
本実施の形態３に係るコンテンツ復号処理装置４０００が復号するコンテンツは、実施の形態１の暗号ブロックが、連続する２つのチャンクに分割されて構成されるように変形されたデータフォーマットとなっている。
【０１５０】
図１３（ａ）は、コンテンツ復号処理装置４０００の復号対象であるコンテンツにおける、コンテンツデータの一部のデータ構造を示す図であって、図１３（ｂ）は、図１３（ａ）の一部分を拡大した図である。
【０１５１】
暗号化されたフレーム１４１０は、コンテンツタイプがＶｉｄｅｏであって、フレーム番号がｊとなっており、チャンク１４３０と、チャンク１４４０と、チャンク１４６０との３つのフレームに分割されている。
【０１５２】
暗号化されたフレーム１４２０は、コンテンツタイプがＡｕｄｉｏ１であって、フレーム番号がｋとなっており、チャンク１４５０とチャンク１４７０との２つのフレームに分割されている。
【０１５３】
暗号化されたＶｉｄｅｏフレーム１４１０は、の８つの暗号ブロック１４０１〜１４０８から構成されているが、これらのうち、暗号ブロック１４０１と暗号ブロック１４０２とは、チャンク１４３０に含まれ、暗号ブロック１４０４と暗号ブロック１４０５とは、チャンク１４４０に含まれ、暗号ブロック１４０７と暗号ブロック１４０８とは、チャンク１４６０に含まれている。
【０１５４】
暗号ブロック１４０３は、前半部分と後半部分とに分割され、前半部分はチャンク１４３０に含まれ、後半部分はチャンク１４４０に含まれている。
暗号ブロック１４０４は、前半部分と後半部分とに分割され、前半部分はチャンク１４４０に含まれ、後半部分はチャンク１４６０に含まれている。
【０１５５】
上で述べたとおり、コンテンツ復号処理装置４０００の復号対象であるコンテンツにおける、コンテンツデータは、暗号ブロックが、連続する２つのチャンクに分割されて構成されることが許されている。
【０１５６】
＜コンテンツ復号処理装置４０００＞
図１４は、コンテンツ復号処理装置４０００の機能構成を示すブロック図である。
コンテンツ復号処理装置４０００は、実施の形態１のコンテンツ復号処理装置２０００に対して、チャンク情報取得部２１０をチャンク情報取得部１３１０に変形し、チャンク間連鎖値保持部２１６をチャンク間連鎖値保持部１３１６に変形し、連鎖値記録部２２８を連鎖値記録部１３２８に変形し、新たに端数処理制御部１３００と前処理部１３０１と後処理部１３０２とを追加したものである。
【０１５７】
チャンク情報取得部１３１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２を鍵設定部２１２に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２１３と端数処理制御部１３００とに出力する機能を有する。
【０１５８】
チャンク情報取得部１３１０は、ＣＰＵＡ１１１又はＣＰＵＢ１１２によってコンテンツヘッダ３０１が書き込まれると、入力バッファ２０１が保持するデータがコンテンツヘッダ３０１である旨のコンテンツヘッダ信号を暗号エンジン１３５０に出力する機能を有する。
【０１５９】
チャンク間連鎖値保持部１３１６は、コンテンツタイプと、フレーム番号と、連鎖値と、チャンクの後尾の暗号ブロックのサイズである端数データサイズとを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０１６０】
図１５は、チャンク間連鎖値保持部１３１６が記憶する情報を示す図である。
図１５に示されるように、チャンク間連鎖値保持部１３１６は、コンテンツタイプ１８０１のそれぞれに、フレーム番号１８０２と、連鎖値１８０３と、端数データサイズ１８０４とを対応付けて記憶している。
【０１６１】
ここで記憶されているフレーム番号１８０２は、対応するコンテンツタイプ１８０１において最後に復号されたフレームのフレーム番号であって、連鎖値１８０３は、フレーム番号６０２に属する最後に復号されたチャンクの後尾の暗号ブロックが復号された際に算定された連鎖値であって、端数データサイズ１８０４はフレーム番号６０２に属する最後に復号されたチャンクの後尾の暗号ブロックのサイズである。
【０１６２】
なお、フレーム番号１８０２と、連鎖値１８０３と端数データサイズ１８０４との組は、暗号エンジン１５０によって、コンテンツタイプ１８０１毎に上書きされる。
端数処理制御部１３００は、チャンク情報取得部１３１０からコンテンツタイプ４０２とフレーム番号４０３とを受け取ると、受け取ったコンテンツタイプ４０２とフレーム番号４０３との組に対応付けられてチャンク間連鎖値保持部１３１６に記憶されている端数データサイズ１８０４を読み出し、入力バッファ２０１に記憶されているチャンクの先頭の暗号ブロックのサイズと、後尾の暗号ブロックのサイズとを算出し、前処理部１３０１と、演算部２２２と、後処理部１３０２とを用いて端数処理を実行し、後尾の暗号ブロックのサイズを連鎖値記録部１３２８に出力する機能を有する。
【０１６３】
この端数処理については、後程図面を用いて説明する。
チャンクの先頭の暗号ブロックのサイズは、暗号ブロックの単位ビット数である１２８からチャンク間連鎖値保持部１３１６から読みだした端数データサイズ１８０４を減算することで算出し、チャンク後尾の暗号ブロックのサイズは、暗号サイズ算出部１３１１から出力される、チャンクデータサイズ４０５にチャンク間連鎖値保持部１３１６から読み出した端数データサイズ１８０４を加算し、加算結果を暗号ブロックの単位ビット数である１２８で除算したときの余りとして算出する。
【０１６４】
前処理部１３０１は、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを受け取ると、先頭の暗号ブロックのサイズと１２８ビットとの差分のビット数の０を受け取った暗号ブロックの先頭に付与して１２８ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する機能を有する。
【０１６５】
また、前処理部１３０１は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックを受け取ると、１２８ビットに不足するビット数の０を受け取った暗号ブロックの後尾に付与して１２８ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する機能を有する。
【０１６６】
後処理部１３０２は、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ると、先頭の暗号ブロックのサイズと１２８ビットとの差分のビット数の００を暗号ブロックの先頭から削除して合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する機能を有する。
【０１６７】
また、後処理部１３０２は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの後尾の暗号ブロック復号することで得られた復号された暗号ブロックを受け取ると、１２８ビットに不足するビット数を暗号ブロックの後尾から削除して合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する機能を有する。
【０１６８】
連鎖値記録部１３２８は、暗号サイズ算出部１３１１が出力する暗号ブロックの数と、連鎖判定部２１３が出力するコンテンツタイプと、フレーム番号と、演算部２２２が出力する連鎖値と、端数処理制御部１３００が出力する後尾の暗号ブロックのサイズとを入力され、演算部２２２が出力する連鎖値が入力されると、入力された連鎖値を、チャンク間連鎖値保持部１３１６かチャンク内連鎖値保持部２２７のいずれか一方に記録する機能を有する。
【０１６９】
連鎖値記録部１３２８は、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、連鎖判定部２１３から入力されるコンテンツタイプと、フレーム番号と、端数データサイズとを関連付けて、チャンク間連鎖値保持部１３１６に上書きして記録し、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部２２７に上書きして記録し、演算判定部２２１に暗号ブロック要請信号を出力する機能を有する。
【０１７０】
なお、連鎖値記録部１３２８は、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合において、端数データサイズが１２８ビット未満の場合には、チャンク間連鎖値保持部１３１６に上書きして記録する連鎖値は、演算部２２２から前回入力された連鎖値とする機能を有する。
【０１７１】
ここで、チャンク間連鎖値保持部１３１６に書き込む端数データサイズとは、端数処理制御部１３００から入力される後尾の暗号ブロックのサイズのことである。
連鎖値記録部１３２８は、演算部２２２から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
【０１７２】
この連鎖値数カウンタは、暗号サイズ算出部１３１１から暗号ブロックの数が入力される毎にリセットされる。
連鎖値記録部１３２８は、演算部２２２から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
【０１７３】
暗号エンジン１３５０は、実施の形態１の暗号エンジン１５０に対して、チャンク間連鎖値保持部２１６を１３１６に変形し、連鎖値記録部２２８を連鎖値記録部１３２８に変形し、新たに端数処理制御部１３００と前処理部１３０１と後処理部１３０２とを追加したものである。
【０１７４】
＜端数処理＞
以下図面を用いて、端数処理制御部１３００が、前処理部１３０１と、演算部２２２と、後処理部１３０２とを用いて行う端数処理について説明する。
【０１７５】
図１６は、暗号ブロックの前半が欠落している場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
前処理部１３０１は、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを受け取ると、受け取った暗号ブロック１５０１は、先頭の暗号ブロックのサイズと１２８ビットとの差分のビット数だけ先頭のビットが欠落していると判断し、欠落しているビット数の０からなる補完データ１５０２を付与して、１２８ビットの合成暗号ブロックを作成する。
【０１７６】
前処理部１３０１は、作成した暗号ブロックを演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する。
演算部２２２は、入力された１２８ビットの暗号ブロックと、１２８ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部１３０２に出力する。
【０１７７】
後処理部１３０２は、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持する先頭の暗号ブロックが復号された暗号ブロックを受け取ると、受け取った復号された暗号ブロックは、先頭の暗号ブロックのサイズと１２８ビットとの差分のビット数だけ先頭のビットが不要なビットであると判断し、不要なビットを暗号ブロックの先頭から削除して合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する。
【０１７８】
図１７は、暗号ブロックの後半が欠落している場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
前処理部１３０１は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックを受け取ると、受け取った暗号ブロック１５０１は、後尾の暗号ブロックのサイズと１２８ビットとの差分のビット数だけ後尾のビットが欠落していると判断し、欠落しているビット数の０からなる補完データ１５０２を付与して、１２８ビットの合成暗号ブロックを作成する。
【０１７９】
前処理部１３０１は、作成した暗号ブロックを演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する。
演算部２２２は、入力された１２８ビットの暗号ブロックと、１２８ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部１３０２に出力する。
【０１８０】
後処理部１３０２は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックが復号された暗号ブロックを受け取ると、受け取った復号された暗号ブロックは、後尾の暗号ブロックのサイズと１２８ビットとの差分のビット数だけ後尾のビットが不要なビットであると判断し、不要なビットを暗号ブロックの後尾から削除して合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する。
【０１８１】
図１８は、暗号ブロックに欠落がない場合の、前処理部１３０１と演算部２２２と後処理部１３０２とが行う処理の動作を示す図である。
前処理部１３０１は、（１）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビットである場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを受け取るとき、（２）端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビットである場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックを受け取るとき、（３）演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭と後尾の暗号ブロック以外の暗号ブロックを受け取るときに、受け取った暗号ブロックは、欠落が無いと判断し、受け取った暗号ブロックをそのまま演算部２２２に出力する。
【０１８２】
演算部２２２は、入力された１２８ビットの暗号ブロックと、１２８ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部１３０２に出力する。
【０１８３】
後処理部１３０２は、（１）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビットである場合において、演算部２２２から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックが復号された暗号ブロックを受け取るとき、（２）端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビットである場合において、演算部２２２から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックが復号された暗号ブロックを受け取るとき、（３）演算判定部２２１から入力バッファ２０１が保持するチャンクの先頭と後尾の暗号ブロック以外の暗号ブロックを受け取るときに、受け取った復号された暗号ブロックは、欠落が無いと判断し、受け取った復号された暗号ブロックをそのまま出力選択部２２９に出力する。
【０１８４】
以上のように構成されたコンテンツ復号処理装置４０００の動作の詳細について、以下図面を用いて説明する。
＜動作＞
再生機がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ３０１を入力バッファ２０１に書き込む。
【０１８５】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
コンテンツヘッダが入力バッファ２０１に書き込まれると、コンテンツ復号処理装置３０００はコンテンツ復号処理を開始する。
【０１８６】
図１９、図２０は、コンテンツ復号処理装置４０００の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置４０００がコンテンツ復号処理を開始すると、チャンク情報取得部９１０はコンテンツヘッダ信号を出力し、演算判定部２２１は出力されたコンテンツヘッダ信号を受け取る。
【０１８７】
演算判定部２２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダ３０１を読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダ３０１を出力バッファ２０２に書き込む。
【０１８８】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部１３１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して（ステップＳ１９００）、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２を鍵設定部２１２に出力し、フレーム番号４０３を連鎖判定部２１３と端数処理制御部１３００とに出力する。
【０１８９】
暗号サイズ算出部１３１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とが入力されると、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数を計算し（ステップＳ１９１０）、チャンクの開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを演算判定部２２１に出力し、暗号ブロックの数を連鎖値記録部１３２８に出力する。
【０１９０】
連鎖値記録部１３２８は、暗号サイズ算出部２１１から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部２２１は、暗号サイズ算出部１３１１から、チャンクの開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ３１１とパディング３１３とを読み出して出力選択部２２９に出力し、出力選択部２２９は入力されたチャンクヘッダ３１１とパディング３１３とを出力バッファ２０２に書き込み（ステップＳ１９２０）、連鎖値選択部２２６に初期値選択信号を出力する。
【０１９１】
鍵設定部２１２は、チャンク情報取得部１３１０からコンテンツタイプ４０２を入力されると、鍵蓄積部２１４に、入力されたコンテンツタイプ４０２と関連付けられて記憶されている鍵５０２と初期値５０３とを読み出して、読み出した鍵５０２を鍵保持部２２３に出力し、読み出した初期値を初期値保持部２２４に出力し、鍵蓄積部２１４は、入力された鍵を上書きして記憶し、初期値保持部２２４は、入力された初期値を上書きして記憶する（ステップＳ１９３０）。
【０１９２】
端数処理制御部１３００は、チャンク情報取得部１３１０からコンテンツタイプ４０２とフレーム番号４０３とを受け取ると、受け取ったコンテンツタイプ４０２とフレーム番号４０３との組に対応付けられてチャンク間連鎖値保持部１３１６に記憶されている端数データサイズ１８０４を読み出し、入力バッファ２０１に記憶されているチャンクの先頭の暗号ブロックのサイズと、後尾の暗号ブロックのサイズとを算出し（ステップＳ１９３５）、算出した先頭の暗号ブロックのサイズを、前処理部１３０１と、後処理部１３０２とに出力し、算出した後尾の暗号ブロックのサイズを、連鎖値記録部１３２８に出力する。
【０１９３】
連鎖判定部２１３は、チャンク情報取得部１３１０から、コンテンツタイプ４０２と、フレーム番号４０３とを入力されると、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中であるか否かを判定するために、入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部１３１６に関連付けられて記憶されているか否かを調べて（ステップＳ１９４０）、記憶されている場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中であると判断し（ステップＳ１９４０：Ｙｅｓ）、コンテンツタイプ４０２とフレーム番号４０３とを連鎖値記録部１３２８に出力し、暗号連鎖信号とコンテンツタイプ４０２とを初期値選択部２２５に出力する。
【０１９４】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖継続信号と、コンテンツタイプ４０２との組みを受け取ると、チャンク間連鎖値保持部１３１６から、受け取ったコンテンツタイプ４０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力する。
【０１９５】
連鎖値選択部２２６は、演算判定部２２１から初期値選択信号を受け取っているので、初期値選択部２２５から入力される連鎖値を選択して、演算部２２２に出力する（ステップＳ１９５０）。
【０１９６】
次に演算判定部２２１は、入力バッファ２０１に記憶されている暗号チャンクの先頭の暗号ブロックを読み出して、前処理部１３０１に出力する。
前処理部１３０１は、暗号ブロックが分割されているか否かを判断するために、端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満であるか否かを判断し（ステップＳ１９７０）、１２８ビット未満である場合に、暗号ブロックが分割されていると判断し（ステップＳ１９７０：Ｙｅｓ）、１２８ビットに不足するビット数の０を受け取った暗号ブロックの先頭に付与して１２８ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する。
【０１９７】
ステップＳ１９４０において、入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、チャンク間連鎖値保持部１３１６に関連付けられて記憶されていない場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中でないと判断し（ステップＳ１９４０：Ｎｏ）、コンテンツタイプ４０２とフレーム番号４０３とを連鎖値記録部２２８に出力し、暗号終了信号を初期値選択部２２５に出力する。
【０１９８】
初期値選択部２２５は、連鎖判定部２１３から、暗号連鎖終了信号を受け取ると、初期値保持部２２４が保持する初期値を読み出して連鎖値選択部２２６に出力する。
連鎖値選択部２２６は、演算判定部２２１から初期値選択信号を受け取っているので、初期値選択部２２５から初期値が入力されると、入力された初期値を演算部２２２で使用する連鎖値として演算部２２２に出力する（ステップＳ１９６０）。
【０１９９】
次に演算判定部２２１は、入力バッファ２０１に記憶されている暗号チャンクの先頭の暗号ブロックを読み出して、前処理部１３０１に出力し、前処理部１３０１は、受け取った暗号ブロックをそのまま演算部２２２に出力する。
【０２００】
ステップＳ１９８０又はステップＳ１９６０の処理が終わると、演算部２２２は、前処理部１３０１から暗号チャンクの先頭の暗号ブロックを受け取る。
演算部２２２は、鍵保持部２２３に記録されている鍵と、連鎖値選択部から出力される連鎖値とを用いて、受け取った暗号ブロックを復号して後処理部１３０２に出力し、復号の際に算定した次の連鎖値を連鎖値記録部２２８に出力する（ステップＳ２０００）。
【０２０１】
後処理部１３０２は、（１）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ったとき又は、（２）端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの後尾の暗号ブロック復号することで得られた復号された暗号ブロックを受け取ったときに、受け取った復号された暗号ブロックが、前処理部１３０１によって補完データを付与された暗号ブロックが復号されたものであると判断し（ステップＳ２０００：Ｙｅｓ）、受け取った復号された暗号ブロックの、付与された補完データに対応する部分を削除した合成平文を作成し、作成した合成平文を、演算判定部２２１から受け取った復号された暗号ブロックに替えて出力選択部２２９に出力する（ステップＳ２０１０）。
【０２０２】
後処理部１３０２は、（１）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビットである場合、（２）端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビットである場合、（３）端数処理制御部１３００から受け取った先頭の暗号ブロックのサイズが１２８ビット未満である場合において、演算部２２２から入力バッファ２０１が保持するチャンクの先頭の暗号ブロックと後尾の暗号ブロック以外の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ったときに、受け取った復号された暗号ブロックが、前処理部１３０１によって補完データを付与されてない暗号ブロックが復号されたものであると判断し（ステップＳ２０００：Ｎｏ）、受け取った復号された暗号ブロックをそのまま出力選択部２２９に出力する。
【０２０３】
ステップＳ２０１０又はステップＳ２００５：Ｎｏの処理が終わると、出力選択部２２９は、後処理部１３０２から復号された暗号ブロックを受け取る。
出力選択部２２９は、演算部２２２から復号された暗号ブロックが入力されると、入力された復号された暗号ブロックを、出力バッファ２０２に書き込む。
【０２０４】
連鎖値記録部２２８は、演算部２２２から連鎖値が入力されると、連鎖値数カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数と、暗号サイズ算出部から入力された暗号ブロックの数とを比較することで、演算部２２２から入力された連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定する（ステップＳ２０１５）。
【０２０５】
ステップＳ２０１５において、新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し（ステップＳ２０１５：Ｙｅｓ）、演算部２２２から入力された連鎖値をチャンク内連鎖値保持部に上書きして記録し（ステップＳ２０２０）、連鎖値記録部２２８は、演算判定部２２１に暗号ブロック要請信号を出力する。
【０２０６】
演算判定部２２１は、連鎖値記録部２２８から暗号ブロック要請信号を受け取ると、次の暗号ブロックを前処理部１３０１に出力し連鎖値選択信号を連鎖値選択部２２６に出力する。
【０２０７】
前処理部１３０１は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビット未満である場合において、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロックを受け取ったときに、後続の暗号ブロックが分割されていると判断し（ステップＳ２０２５：Ｙｅｓ）、１２８ビットに不足するビット数の０を受け取った暗号ブロックの先頭に付与して１２８ビットの合成暗号ブロックを作成し（ステップＳ２０３０）、作成した合成暗号ブロックを、演算判定部２２１から受け取った暗号ブロックに替えて演算部２２２に出力する。
前処理部１３０１は、端数処理制御部１３００から受け取った後尾の暗号ブロックのサイズが１２８ビットである場合、又は、演算判定部２２１から入力バッファ２０１が保持するチャンクの後尾の暗号ブロック以外の暗号ブロックを受け取った場合には、後続の暗号ブロックが分割されていないと判断し（ステップＳ２０２５：Ｎｏ）、演算判定部２２１から受け取った暗号ブロックをそのまま演算部２２２に出力する。
【０２０８】
連鎖値選択部２２６は、連鎖値選択信号を受信すると、チャンク内連鎖値保持部２２７が保持する連鎖値を読み出して演算部２２２に出力する（ステップＳ２０３５）。
ステップＳ２０３５の処理が終わると、再びステップＳ２０００の処理を開始する。
【０２０９】
ステップＳ２０１５において、新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断し（ステップＳ２０１５：Ｎｏ）、端数データサイズが１２８ビットであるときには、演算部２２２から入力された連鎖値を、連鎖判定部２１３から入力されたコンテンツタイプと、フレーム番号と、端数データサイズとを関連付けて、チャンク間連鎖値保持部１３１６に上書きして記録し、端数データサイズが１２８ビット未満の場合には、チャンク間連鎖値保持部１３１６に上書きして記録する連鎖値は、演算部２２２から前回入力された連鎖値を記録する（ステップＳ２０４０）。
【０２１０】
ステップＳ２０４０の処理が終わると、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれるまで、コンテンツ復号処理装置４０００は待機する（ステップＳ２０５０）。
【０２１１】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ２０５５：Ｙｅｓ）、再びステップＳ１９００の処理を開始する。
【０２１２】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ２０５５：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置２０００は、コンテンツ復号処理を終了する。
＜実施の形態４＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【０２１３】
本実施の形態２に係るコンテンツ復号処理装置は、実施の形態１のコンテンツ復号処理装置２０００の復号対象であるコンテンツに含まれるチャンク３１０のチャンクヘッダ３１１の一部が変形し、チャンクヘッダに鍵情報と初期値情報とを含んでいるデータフォーマットであるコンテンツを復号することができるように、実施の形態１で説明したコンテンツ復号処理装置２０００を変形したものである。
【０２１４】
本実施の形態４に係るコンテンツ復号処理装置は、実施の形態１で説明したコンテンツ復号処理装置２０００の一部である、チャンク情報取得部２１０と、鍵蓄積部２１４と、鍵設定部２１２とを変形し、さらに、新たに鍵生成部を備えるように変形した形態であって、コンテンツ復号処理装置２０００と同様に、実施の形態１の再生機１０００上で実現される。
【０２１５】
以下、実施の形態１で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
＜構成＞
＜コンテンツのデータ構造＞
本実施の形態４に係るコンテンツ復号処理装置５０００が復号するコンテンツは、実施の形態１のコンテンツ３００を、実施の形態１のチャンクヘッダ３１１に、新たに鍵情報２２０５と、初期値情報２２０６とが加わっているように変形したコンテンツである。
【０２１６】
図２１は、本実施の形態４に係るコンテンツ復号処理装置３０００の復号対象であるコンテンツを構成するチャンク２２５０のデータ構成を示す構成図である。
チャンク２２５０は、チャンクヘッダ１０１５、チャンクデータ１０１０、パディング１０２０から構成されている。
【０２１７】
チャンクヘッダ２２００は、暗号化されていないデータであって、チャンクのサイズを示す情報を含むチャンクサイズ２２０１、コンテンツタイプを示す情報を含むコンテンツタイプ２２０２、フレーム番号を示す情報を含むフレーム番号２２０３、デコードに使用する情報を含むデコード用ヘッダ情報２２０４、鍵を生成するための鍵情報２２０５、初期値を生成するための初期値情報２２０６、チャンクデータのサイズを示す情報を含むチャンクデータサイズ２２０７からなる。
【０２１８】
このうち、チャンクサイズ２２０１、コンテンツタイプ２２０２、フレーム番号２２０３、デコード用ヘッダ情報２２０４、チャンクデータサイズ２２０７は、それぞれ、実施の形態１の、チャンクサイズ４０１、コンテンツタイプ４０２、フレーム番号４０３、デコード用ヘッダ情報４０４、チャンクデータサイズ４０５と同様のものである。
【０２１９】
また、チャンクヘッダ２２００の構成要素である、チャンクサイズ２２０１、コンテンツタイプ２２０２、フレーム番号２２０３、デコード用ヘッダ情報２２０４、鍵情報２２０５、初期値情報２２０６、チャンクデータサイズ２２０７のそれぞれのビット長と出現順番とは固定である。
【０２２０】
ここで、鍵情報２２０５は自らを含むチャンクの属する暗号フレームを復号するための鍵を生成するための情報であって、初期値情報２２０６は、自らを含むチャンクの属する暗号フレームを復号するための初期値を生成するための情報である。
【０２２１】
＜コンテンツ復号処理装置５０００＞
図２２は、コンテンツ復号処理装置５０００の機能構成を示すブロック図である。
コンテンツ復号処理装置５０００は、実施の形態１のコンテンツ復号処理装置２０００に対して、チャンク情報取得部２１０をチャンク情報取得部２１１０に変形し、鍵蓄積部２１４を鍵蓄積部２１１４に変形し、鍵設定部２１２を鍵設定部２１１２に変形し、新たに鍵生成部２１０１を追加したものである。
【０２２２】
チャンク情報取得部２１１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ２２００から、チャンクサイズ２２０１と、チャンクデータサイズ２２０７と、コンテンツタイプ２２０２と、フレーム番号２２０３と、鍵情報２２０５と、初期値情報２２０６とを取得して、チャンクの開始アドレスと、チャンクサイズ２２０１と、チャンクデータサイズ２２０７とを暗号サイズ算出部２１１に出力し、コンテンツタイプ２２０２と、フレーム番号２２０３とを鍵設定部２１２と連鎖判定部２１３とに出力し、コンテンツタイプ２２０２と、フレーム番号２２０３と、鍵情報２２０５と、初期値情報２２０６とを鍵生成部２１０１に出力する機能を有する。
【０２２３】
チャンク情報取得部２１１０は、ＣＰＵＡ１１１又はＣＰＵＢ１１２によってコンテンツヘッダ３０１が書き込まれると、入力バッファ２０１が保持するデータがコンテンツヘッダ３０１である旨のコンテンツヘッダ信号を暗号エンジン１５０に出力する機能を有する。
【０２２４】
鍵生成部２１０１は、チャンク情報取得部２１１０から、コンテンツタイプ２２０２と、フレーム番号２０３と、鍵情報２２０５と、初期値情報２２０６とを受け取ると、受け取った鍵情報２２０５から鍵を作成し、初期値情報２２０６から初期値を作成し、鍵蓄積部２１１４に、受け取ったコンテンツタイプ２２０２と、受け取ったフレーム番号２０３と、生成した鍵と、生成した初期値とを関連付けて記録する機能を有する。
【０２２５】
また、鍵生成部２１０１は、鍵情報２２０５が暗号化されている場合には復号し、初期値情報２２０６が暗号化されている場合には復号する機能を有する。
鍵蓄積部２１１４は、コンテンツタイプと、フレーム番号と、鍵と、初期値とを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０２２６】
図２３は、鍵蓄積部２１１４が記憶する情報を示す図である。
図２３に示されるように、鍵蓄積部２１１４は、コンテンツタイプ２３００と、フレーム番号２３０１と、鍵２３０２と、初期値２３０３とを関連付けて記憶している。
【０２２７】
鍵設定部２１１２は、チャンク情報取得部２１１０からのコンテンツタイプ２２０２とフレーム番号２２０３とを入力されると、鍵蓄積部２１１４から、入力されたコンテンツタイプ２２０２とフレーム番号２２０３の組と関連付けられて記憶されている鍵２３０２と初期値２３０３とを読み出して、暗号エンジン１５０に出力する機能を有する。
【０２２８】
以上のように構成されたコンテンツ復号処理装置５０００の動作の詳細について、以下図面を用いて説明する。
＜動作＞
再生機１０００がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダを入力バッファ２０１に書き込む。
【０２２９】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの先頭のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
コンテンツヘッダが入力バッファ２０１に書き込まれると、コンテンツ復号処理装置５０００はコンテンツ復号処理を開始する。
【０２３０】
図２４は、コンテンツ復号処理装置２０００の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置５０００がコンテンツ復号処理を開始すると、チャンク情報取得部２１１０はコンテンツヘッダ信号を出力し、演算判定部２２１は出力されたコンテンツヘッダ信号を受け取る。
【０２３１】
演算判定部２２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダを読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダを出力バッファ２０２に書き込む。
【０２３２】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部２１１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ２２００から、チャンクサイズ２２０１と、チャンクデータサイズ２２０７と、コンテンツタイプ２２０２と、フレーム番号２２０３と、鍵情報２２０５と、初期値情報２２０６とを取得して（ステップＳ２４００）、チャンクの開始アドレスと、チャンクサイズ２２０１と、チャンクデータサイズ２２０７とを暗号サイズ算出部２１１に出力し、コンテンツタイプ２２０２と、フレーム番号２２０３とを鍵設定部２１１２と連鎖判定部２１３とに出力し、コンテンツタイプ２２０２と、フレーム番号２２０３と、鍵情報２２０５と、初期値情報２２０６とを鍵生成部２１０１に出力する。
【０２３３】
鍵生成部２１０１は、チャンク情報取得部２１１０から、コンテンツタイプ２２０２と、フレーム番号２０３と、鍵情報２２０５と、初期値情報２２０６とを受け取ると、受け取った鍵情報２２０５から鍵を作成し、初期値情報２２０６から初期値を作成し、鍵蓄積部２１１４に、受け取ったコンテンツタイプ２２０２と、受け取ったフレーム番号２２０３と、生成した鍵と、生成した初期値とを関連付けて記録する（ステップＳ２４０２）。
【０２３４】
暗号サイズ算出部２１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ２２０１と、チャンクデータサイズ２２０７とが入力されると、パディング２２３０の開始アドレスと、チャンクの終了アドレスと、チャンクデータ２２２０に含まれる暗号ブロックの数を計算し（ステップＳ２４０５）、チャンクの開始アドレスと、パディング２２３０の開始アドレスと、チャンクの終了アドレスとを演算判定部２２１に出力し、暗号ブロックの数を連鎖値記録部２２８に出力する。
【０２３５】
連鎖値記録部２２８は、暗号サイズ算出部２１１から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部２２１は、暗号サイズ算出部２１１から、チャンクの開始アドレスと、パディング２２３０の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ２２００とパディング２２３０とを読み出して出力選択部２２９に出力し、出力選択部２２９は入力されたチャンクヘッダ２２００とパディング２２３０とを出力バッファ２０２に書き込み（ステップＳ２４１０）、連鎖値選択部２２６に初期値選択信号を出力する。
【０２３６】
鍵設定部２１１２は、チャンク情報取得部２１０からコンテンツタイプ２２０２とフレーム番号２２０３を入力されると、鍵蓄積部２１４に、入力されたコンテンツタイプ２２０２とフレーム番号２２０３との組と関連付けられて記憶されている鍵２３０２と初期値２３０３とを読み出して、読み出した鍵２３０２を鍵保持部２２３に出力し、読み出した初期値２３０３を初期値保持部２２４に出力し、鍵蓄積部２１４は、入力された鍵を上書きして記憶し、初期値保持部２２４は、入力された初期値を上書きして記憶する（ステップＳ２４１５）。
【０２３７】
以降、ステップＳ２４２０〜ステップＳ２４６５までの処理は、実施の形態１のコンテンツ復号処理装置２０００の動作における、ステップＳ８２０〜ステップＳ８６５までの処理と同じ処理であるので説明を省略する。
【０２３８】
なお、ステップＳ２４２０はステップＳ８２０、ステップＳ２４２５はステップＳ８２５、ステップＳ２４３０はステップＳ８３０、ステップＳ２４３５はステップＳ８３５、ステップＳ２４４０はステップＳ８４０、ステップＳ２４４５はステップＳ８４５、ステップＳ２４５０はステップＳ８５０、ステップＳ２４５５はステップＳ８５５、ステップＳ２４６５はステップＳ８６５に対応する。
【０２３９】
ステップＳ２４６５において、コンテンツ復号処理装置５０００が待機を開始してから所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ２４７０：Ｙｅｓ）、再びステップＳ２４００の処理を開始する。
【０２４０】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ２４７０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置５０００は、コンテンツ復号処理を終了する。
＜実施の形態５＞
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
【０２４１】
本実施の形態５に係るコンテンツ復号処理装置は、実施の形態１のコンテンツ復号処理装置２０００の復号対象であるコンテンツと同様のフォーマットのコンテンツを復号するコンテンツ復号処理装置であって、復号対象のコンテンツから、全てのチャンクのチャンクヘッダの情報を読み取って記録する第１処理部と、第１処理部に記憶されているチャンクヘッダの情報を用いてコンテンツを復号する第２処理部とから構成されるように、実施の形態１で説明したコンテンツ復号処理装置２０００を変形したものである。
【０２４２】
本実施の形態５に係るコンテンツ復号処理装置は、実施の形態１で説明したコンテンツ復号処理装置２０００の一部である、チャンク情報取得部２１０と、暗号サイズ算出部２１１と、連鎖判定部２１３と、鍵設定部２１２と、演算判定部２２１と、初期値選択部２２５と、連鎖値記録部２２８とを変形し、さらに、暗号情報蓄積部と、フレーム番号蓄積部とを備えるように変形した形態であって、実施の形態１の再生機１０００の暗号エンジン１５０を、暗号エンジン１５０の一部を変形することで得られた暗号エンジン２５５０に置き替えるように変形した再生機上で実現される。
【０２４３】
以下、実施の形態１で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
＜構成＞
＜コンテンツ復号処理装置６０００＞
図２５は、コンテンツ復号処理装置６０００の機能構成を示すブロック図である。
【０２４４】
コンテンツ復号処理装置６０００は、実施の形態１のコンテンツ復号処理装置２０００に対して、チャンク情報取得部２１０をチャンク情報取得部２５１０に変形し、暗号サイズ算出部２１１を暗号サイズ算出部２５１１に変形し、連鎖判定部２１３を連鎖判定部２４１３に変形し、鍵設定部２１２を鍵設定部２５１２に変形し、演算判定部２２１を演算判定部２５２１に変形し、初期値選択部２２５を初期値選択部２５２５に変形し、連鎖値記録部２２８を連鎖値記録部２５２８に変形し、さらに、暗号情報蓄積部２５３０と、フレーム番号蓄積部２５２２とを追加したものである。
【０２４５】
チャンク情報取得部２５１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２１３に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを関連付けて暗号情報蓄積部２５３０に記録する機能を有する。
【０２４６】
暗号サイズ算出部２５１１は、チャンク情報取得部２１０から、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを入力されると、チャンクデータ３１２の開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数を計算し、計算したチャンクデータの開始アドレスと、パディングの開始アドレスと、チャンクの終了アドレスと、暗号ブロックの数とを、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する機能を有する。
【０２４７】
チャンクデータ３１２の開始アドレスは、チャンクの開始アドレスと固定長であるチャンクヘッダ３１１のサイズを加算することで算出され、パディング３１３の開始アドレスは、チャンクヘッダ３１１の開始アドレスにとチャンクデータサイズ４０５とを加算することで算出され、チャンクの終了アドレスは、チャンクの開始アドレスとチャンクサイズ４０１とを加算することで算出され、暗号ブロックの数は、チャンクデータサイズ４０５を暗号ブロックの単位ビット数である１２８で除算することで算出される。
【０２４８】
フレーム番号蓄積部２５２２は、コンテンツタイプとフレーム番号とを関連付けて記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
図２６は、フレーム番号蓄積部２５２２が記憶する情報を示す図である。
【０２４９】
図２６に示されるように、フレーム番号蓄積部２５２２は、Ｖｉｄｅｏと、Ａｕｄｉｏ１と、Ａｕｄｉｏ２との３つのコンテンツタイプ２７０１のそれぞれに、フレーム番号２７０２を対応付けて記憶している。
【０２５０】
ここに記憶されているフレーム番号２７０２は、コンテンツタイプ２７０１のそれぞれにおいて、チャンク情報取得部２５１０によって取得されたフレーム番号のうち、最新のフレーム番号である。
【０２５１】
連鎖判定部２５１３は、チャンク情報取得部２５１０からコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが入力されると、チャンク情報取得部２５１０から入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、フレーム番号蓄積部２５２２に関連付けられて記憶されているか否かを調べて、記憶されている場合には、入力バッファ２０１に保持されてチャンクが暗号連鎖継続中であると判断し、記憶されていない場合には、入力バッファ２０１に保持されているチャンクが暗号連鎖継続中でないと判断する機能を有する。
【０２５２】
連鎖判定部２５１３は、暗号連鎖中であると判断した場合には、暗号連鎖中の旨を、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、暗号連鎖中でないと判断した場合には、フレーム番号蓄積部２５２２に記憶されている、チャンク情報取得部２５１０から入力されるコンテンツタイプと同じコンテンツタイプ２７０１のフレーム番号２７０２を更新し、暗号連鎖終了の旨を、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する機能を有する。
【０２５３】
暗号情報蓄積部２５３０は、復号対象のコンテンツを構成する全てのチャンクについての、開始アドレスと、コンテンツタイプと、フレーム番号と、チャンクデータ開始アドレスと、暗号ブロック数と、パディング開始アドレスと、チャンク終了アドレスと、連鎖の有無とを対応付けて、チャンクの順番に記憶するための記憶領域であって、メモリブロック１２０の一部として実装されている。
【０２５４】
図２７は、暗号情報蓄積部２５３０が記憶する情報を示す図である。
図２７に示されるように、暗号情報蓄積部２５３０は、復号対象のコンテンツのチャンクの順番に、各チャンクの開始アドレス２６０１と、コンテンツタイプ２６０２と、フレーム番号２６０３と、チャンクデータ開始アドレス２６０４と、暗号ブロック数２６０５と、パディング開始アドレス２６０６と、チャンク終了アドレス２６０７と、連鎖の有無２６０８とを記憶している。
【０２５５】
鍵設定部２５１２は、暗号情報蓄積部２５３０から、チャンクの順に順次コンテンツタイプ２６０２を読み出して、鍵蓄積部２１４から、読み出したコンテンツタイプ２６０２と関連付けられて記憶されている鍵５０２と初期値５０３とを読み出して、暗号エンジン１５０に出力する機能を有する。
【０２５６】
演算判定部２５２１は、暗号情報蓄積部２５３０から、チャンクの順に順次チャンクの開始アドレス２６０１と、チャンクデータ開始アドレス２６０４と、パディング開始アドレス２６０６と、チャンク終了アドレス２６０７とを用いて、入力バッファ２０１に保持されているチャンクから、チャンクヘッダ３１１と、パディング３１３とを読み出して出力選択部２２９に出力し、チャンクデータ３１２を読み出して、暗号ブロック単位で演算部２２２に出力し、演算部２２２に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックである場合に、初期値選択信号を連鎖値選択部２２６に出力し、演算部２２２に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックでない場合に、連鎖値選択信号を連鎖値選択部２２６に出力する機能を有する。
【０２５７】
なお、チャンクデータの先頭の暗号ブロックであるか否かは、チャンクデータの開始アドレスを用いて判断する。
初期値選択部２５２５は、暗号情報蓄積部２５３０から、チャンクの順に順次連鎖の有無２６０８と、コンテンツタイプ２６０２の組みを読み出し、読み出した連鎖の有無２６０８が連鎖中の旨を示すものであった場合に、チャンク間連鎖値保持部２１６から、読み出したコンテンツタイプ２６０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力し、読み出した連鎖の有無２６０８が連鎖中の旨を示すものでなかった場合に、初期値保持部２２４が保持している初期値を読み出して連鎖値選択部２２６に出力する機能を有する。
【０２５８】
連鎖値記録部２５２８は、暗号情報蓄積部２５３０から、チャンクの順に順次暗号ブロック数２６０５と、コンテンツタイプ２６０２と、フレーム番号２６０３を読み出し、演算部２２２が出力する連鎖値が入力された場合に、入力された連鎖値を、チャンク間連鎖値保持部２１６かチャンク内連鎖値保持部２２７のいずれか一方に記録する機能を有する。
【０２５９】
連鎖値記録部２５２８は、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、暗号情報蓄積部２５３０から読み出したコンテンツタイプ２６０２と、フレーム番号２６０３と関連付けて、チャンク間連鎖値保持部２１６に上書きして記録し、演算部２２２から入力される連鎖値が、演算部２２２がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部２２７に上書きして記録し、演算判定部２５２１に暗号ブロック要請信号を出力する機能を有する。
【０２６０】
連鎖値記録部２２８は、演算部２２２から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
【０２６１】
この連鎖値数カウンタは、暗号情報蓄積部２５３０から暗号ブロック数２６０５を読み出す毎にリセットされる。
連鎖値記録部２２８は、演算部２２２から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に１を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部２１１から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部２１１から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
【０２６２】
暗号エンジン２５５０は、実施の形態１の暗号エンジン１５０に対して、演算判定部２２１を演算判定部２５２１に変形し、初期値選択部２２５を初期値選択部２５２５に変形し、連鎖値記録部２２８を連鎖値記録部２５２８に変形したものである。
【０２６３】
第１処理部２５０１は、チャンク情報取得部２５１０と、暗号サイズ算出部２５１１と、連鎖判定部２５１３と、暗号情報蓄積部２５３０と、フレーム番号蓄積部２５２２とから構成され、ＣＰＵＡ１１１によって制御される。
【０２６４】
第１処理部２５０１は、コンテンツに含まれる全てのチャンクのチャンクヘッダから、コンテンツの復号に必要な情報をチャンク順に取得し、暗号情報蓄積部２５３０に蓄積するチャンクデータ蓄積処理を行なう。
【０２６５】
第２処理部２５０２は、鍵設定部２５１２と、鍵蓄積部２１４と、チャンク間連鎖値保持部２１６と、暗号エンジン２５５０とから構成され、ＣＰＵＢ１１２によって制御される。
【０２６６】
第２処理部２５０２は、第１処理部の暗号情報蓄積部２５３０からコンテンツの復号に必要な情報を読み出し、コンテンツを復号するコンテンツ復号処理を行なう。
以上のように構成されたコンテンツ復号処理装置６０００の動作の詳細について、以下図面を用いて説明する。
【０２６７】
＜動作＞
再生機１０００がコンテンツの再生処理を開始すると、ＣＰＵＡ１１１又はＣＰＵＢ１１２は、外部記録媒体１３７、ハードディスク装置１３１の内蔵するハードディスク、又は、ＲＡＭ１２２に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ３０１を入力バッファ２０１に書き込む。
【０２６８】
以後ＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
コンテンツヘッダ３０１が入力バッファ２０１に書き込まれると、コンテンツ復号処理装置６０００の第１処理部２５０１は、コンテンツに含まれるチャンクのチャンクヘッダから、コンテンツの復号に必要な情報をチャンク順に取得し、暗号情報蓄積部２５３０に蓄積する。
【０２６９】
第１処理部２５０１が、チャンクデータ蓄積処理を終了すると、再びＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツヘッダ３０１を入力バッファ２０１に書き込み、その後、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０２７０】
２度目にコンテンツヘッダ３０１が入力バッファに書き込まれると、コンテンツ復号処理装置６０００の第２処理部２５０２はコンテンツ復号処理を開始する。
図２８と図２９とは、コンテンツ復号処理装置６０００の行うコンテンツ復号処理のフローチャートである。
【０２７１】
コンテンツ復号処理装置６０００の第１処理部２５０１がチャンクヘッダの情報読み取り処理を開始すると、チャンク情報取得部２５１０はコンテンツヘッダ信号を出力し、演算判定部２５２１は出力されたコンテンツヘッダ信号を受け取る。
【０２７２】
演算判定部２５２１は、コンテンツヘッダ信号を受け取ると、入力バッファ２０１からコンテンツヘッダ３０１を読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダ３０１を出力バッファ２０２に書き込む。
【０２７３】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、チャンク情報取得部２５１０は、入力バッファ２０１が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ３１１から、チャンクサイズ４０１と、チャンクデータサイズ４０５と、コンテンツタイプ４０２と、フレーム番号４０３とを取得して（ステップＳ２８００）、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを暗号サイズ算出部２１１に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを連鎖判定部２５１３に出力し、コンテンツタイプ４０２と、フレーム番号４０３とを関連付けて暗号情報蓄積部２５３０に記録する。
【０２７４】
暗号サイズ算出部２５１１は、チャンク情報取得部２１０からの、チャンクの開始アドレスと、チャンクサイズ４０１と、チャンクデータサイズ４０５とを入力とし、チャンクデータ３１２の開始アドレスと、パディング３１３の開始アドレスと、チャンクの終了アドレスと、チャンクデータ３１２に含まれる暗号ブロックの数を計算する（ステップＳ２８１０）。
【０２７５】
連鎖判定部２５１３は、チャンク情報取得部２１０から入力されるコンテンツタイプ４０２と、フレーム番号４０３との組み合わせが、フレーム番号蓄積部２５２２に関連付けられて記憶されているか否かを調べて（ステップＳ２８２０）、記憶されていない場合には、フレーム番号蓄積部２５２２に記憶されている、チャンク情報取得部２１０から入力されるコンテンツタイプと同じコンテンツタイプ２７０１のフレーム番号２７０２を更新する。
【０２７６】
暗号サイズ算出部２５１１は、計算したチャンクデータの開始アドレスと、パディングの開始アドレスと、チャンクの終了アドレスと、暗号ブロックの数とを、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、連鎖判定部２５１３は、ステップＳ２８２０において、記憶されている場合には、暗号連鎖中の旨を、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、記録されていない場合には、暗号連鎖終了の旨を、暗号情報蓄積部２５３０に、チャンク情報取得部２５１０によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する（ステップＳ２８４０）。
【０２７７】
ステップＳ２８４０の処理が終わると、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれるまで、コンテンツ復号処理装置２０００は待機する（ステップＳ２８５０）。
【０２７８】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ２８５０：Ｙｅｓ）、再びステップＳ８００の処理を開始する。
【０２７９】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ２８５０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、第１処理部２５０１は、チャンクデータ蓄積処理を終了する。
【０２８０】
第１処理部２５０１が、チャンクデータ蓄積処理を終了すると、再びＣＰＵＡ１１１又はＣＰＵＢ１１２は、コンテンツヘッダ３０１を入力バッファ２０１に書き込み、その後、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ２０１に書き込んでいく。
【０２８１】
２度目にコンテンツヘッダ３０１が入力バッファに書き込まれると、コンテンツ復号処理装置６０００の第２処理部２５０２はコンテンツ復号処理を開始する。
コンテンツ復号処理装置２０００がコンテンツ復号処理を開始すると、演算判定部２５２１は、入力バッファ２０１からコンテンツヘッダ３０１を読み出して出力選択部２２９に出力し、出力選択部２２９は、受け取ったコンテンツヘッダ３０１を出力バッファ２０２に書き込む。
【０２８２】
ＣＰＵＡ１１１又はＣＰＵＢ１１２によってチャンクが入力バッファ２０１に書き込まれると、演算判定部２５２１は、暗号情報蓄積部２５３０から、書き込まれたチャンクに対応する、開始アドレス２６０１と、パディング開始アドレス２６０６と、チャンク終了アドレス２６０７とを読み出し、鍵設定部２５１２は、暗号情報蓄積部２５３０から、書き込まれたチャンクに対応する、コンテンツタイプ２６０２を読み出し、初期値選択部２５２５は、暗号情報蓄積部２５３０から、書き込まれたチャンクに対応する、連鎖の有無２６０８と、コンテンツタイプ２６０２とを読み出し、連鎖値記録部２５２８は、暗号情報蓄積部２５３０から、書き込まれたチャンクに対応する、暗号ブロック数２６０５と、コンテンツタイプ２６０２と、フレーム番号２６０３を読み出し、連鎖値数カウンタの計測する連鎖値の数をリセットする（ステップＳ２９００）。
【０２８３】
演算判定部２５２１は、暗号情報蓄積部２５３０から、開始アドレス２６０１と、パディング開始アドレス２６０６と、チャンク終了アドレス２６０７とを読み出すと、入力バッファからチャンクヘッダ３１１とパディング３１３とを読み出して出力選択部２２９に出力し、出力選択部２２９は入力されたチャンクヘッダ３１１とパディング３１３とを出力バッファ２０２に書き込み（ステップＳ２９１０）、連鎖値選択部２２６に初期値選択信号を出力する。
【０２８４】
鍵設定部２５１２は、暗号情報蓄積部２５３０からコンテンツタイプ２６０２を入力されると、鍵蓄積部２１４に、入力されたコンテンツタイプ２６０２と関連付けられて記憶されている鍵５０２と初期値５０３とを読み出して、読み出した鍵５０２を鍵保持部２２３に出力し、読み出した初期値５０３を初期値保持部２２４に出力し、鍵蓄積部２１４は、入力された鍵を上書きして記憶し、初期値保持部２２４は、入力された初期値を上書きして記憶する（ステップＳ２９１５）。
【０２８５】
初期値選択部２５２５は、暗号情報蓄積部２５３０から、チャンクの順に順次連鎖の有無２６０８と、コンテンツタイプ２６０２の組みを読み出す（ステップＳ２９２０）と、読み出した連鎖の有無２６０８が連鎖中の旨を示すものであった場合に（ステップＳ２９２０：Ｙｅｓ）、チャンク間連鎖値保持部２１６から、読み出したコンテンツタイプ２６０２と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部２２６に出力する。
【０２８６】
連鎖値選択部２２６は、演算判定部２５２１から初期値選択信号を受け取っているので、初期値選択部２５２５から入力される連鎖値を選択して、演算部２２２に出力する（ステップＳ２９２５）。
【０２８７】
ステップＳ２９２０において、読み出した連鎖の有無２６０８が連鎖中の旨を示すものでなかった場合に（ステップＳ２９２０：Ｎｏ）、初期値保持部２２４が保持している初期値を読み出して連鎖値選択部２２６に出力する。
【０２８８】
連鎖値選択部２２６は、演算判定部２５２１から初期値選択信号を受け取っているので、初期値選択部２５２５から初期値が入力されると、入力された初期値を演算部２２２で使用する連鎖値として演算部２２２に出力する（ステップＳ２９３０）。
【０２８９】
ステップＳ２９２５又はステップＳ２９３０の処理が終わった後のステップＳ２９３５〜ステップＳ２９６５までの処理は、実施の形態１のコンテンツ復号処理装置２０００の動作における、ステップＳ８３５〜ステップＳ８６５までの処理と同じ処理であるので説明を省略する。
【０２９０】
なお、ステップＳ２９３５はステップＳ８３５、ステップＳ２９４０はステップＳ８４０、ステップＳ２９４５はステップＳ８４５、ステップＳ２９５０はステップＳ８５０、ステップＳ２９５５はステップＳ８５５、ステップＳ２９６５はステップＳ８６５に対応する。
【０２９１】
ステップＳ２９６５において、第２処理部２５０２が待機を開始してから所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれた場合には（ステップＳ２９７０：Ｙｅｓ）、再びステップＳ１２０２の処理を開始する。
【０２９２】
所定時間、例えば１ｍｓの間に、ＣＰＵＡ１１１又はＣＰＵＢ１１２によって後続のチャンクが入力バッファ２０１に書き込まれなかった場合には（ステップＳ２９７０：Ｎｏ）、コンテンツデータ３０２に後続のチャンクが存在していないと判断し、第２処理部２５０２はコンテンツ復号処理を終了し、コンテンツ復号処理装置６０００は、コンテンツ復号処理を終了する。
＜補足＞
以上、本発明に係るコンテンツ復号処理装置の一実施形態として、復号対象のデータストリームのデータ構造が、第１種暗号フレーム（例えば暗号化されたビデオフレーム）に属する連鎖する暗号ブロック列からなる暗号チャンク間に、第２種暗号フレーム（例えば暗号化されたオーディオフレーム）に属する暗号ブロック列からなる暗号チャンクが存在しているデータ構造であっても、データストリームを正しく復号することができるコンテンツ復号処理装置について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示したとおりのコンテンツ復号処理装置に限られないことはもちろんである。
（１）実施の形態１において、ＣＰＵブロック１１０はＣＰＵＡ１１１とＣＰＵＢ１１２の２つのＣＰＵから構成されるとしたが、ＣＰＵの数は１つでも構わないし、３つ以上であっても構わないし、デュアルＣＰＵコア機能を持った１つのプロセッサであっても構わないし、クワッドＣＰＵコア機能を持った１つのプロセッサであっても構わない。
（２）実施の形態１において、ＲＯＭ１２１はＲＯＭであるとしたが、読み書き可能な不揮発性メモリが含まれていても構わない。
（３）実施の形態１において、暗号エンジン１５０はＤＳＰであるとしたが、必ずしもＤＳＰである必要はなく、例えばＣＰＵＡ１１１又はＣＰＵＢ１１２がソフトウエアを実行することで実現される構成であっても構わないし、ＣＰＵＡ１１１、ＣＰＵＢ１１２以外のＣＰＵがソフトウエアを実行することで実現される構成であっても構わないし、ＡＳＩＣやＦＰＧＡ等で実現される構成であっても構わない。
【０２９３】
同様に、実施の形態１において、ＡＶデコーダ１６０はＤＳＰであるとしたが、必ずしもＤＳＰである必要はなく、例えばＣＰＵＡ１１１又はＣＰＵＢ１１２がソフトウエアを実行することで実現される構成であっても構わないし、ＣＰＵＡ１１１、ＣＰＵＢ１１２以外のＣＰＵがソフトウエアを実行することで実現される構成であっても構わないし、ＡＳＩＣやＦＰＧＡ等で実現される構成であっても構わない。
（４）実施の形態１において、周辺デバイスブロック１３０は、ハードディスク装置１３１と、ハードディスク装置インターフェース１４１と、読取書込装置１３２と、読取書込装置インターフェース１４２と、出力装置１３３と、出力装置インターフェース１４３と、入力装置１３４と、入力装置インターフェース１４４と、通信装置１３５とから構成されているとしたが、少なくとも、出力装置１３３と、出力装置インターフェース１４３と、入力装置１３４と、入力装置インターフェース１４４とを備えていれば、これら全てを備えている構成ではなくても構わない。
（５）実施の形態１において、ＡＶデコーダ１６０は、ＭＰＥＧ２デコード機能、ＭＰＥＧ４デコード機能、ＭＰＥＧ４−ＡＶＣデコード機能を有するとしたが、これらの符号化方式で符号化されたデータ以外のデータをデコードする機能を有していても構わない。
（６）実施の形態１において、出力装置１３３は、ＬＣＤ（Liquid Crystal Display）と、スピーカとで構成されているとしたが、ＬＣＤの替わりに、ＰＤＰ（Plasma Display Panel）や、有機ＥＬ（Electro-Luminescence）ディスプレイや、ブラウン管であっても構わない。
（７）実施の形態１において、再生機１０００は、パーソナルコンピュータであるとしたが、コンテンツを復号する機能を持つ物であれば、例えば、汎用コンピュータ、テレビ受像機、ＤＶＤ再生機、ＤＶＤ録再生機、ＢＤ再生機、ＢＤ録再生機、ＰＤＡ（Personal Digital Assistance）、又は、携帯通信端末等であっても構わない。
（８）実施の形態１において、入力装置１３４は、ユーザによる操作を受け付けるキーボードと、マウスとから構成されるとしたが、ユーザによる再生機１０００の操作コマンドを受け付ける機能を有するものであれば、例えば、ユーザによる操作を受け付ける入力ボタンや、ユーザが操作するリモートコントローラからの信号を受信する受信装置等であっても構わない。
（９）実施の形態１において、復号対象のコンテンツは、暗号化されたＶｉｄｅｏＥＳと、暗号化されたＡｕｄｉｏ１ＥＳと、暗号化されたＡｕｄｉｏ２ＥＳとが多重化されたものであるとしたが、少なくとも互いに異なる２つのＥＳが多重化されたものであれば、これらのＥＳ以外のＥＳが多重化されたものであっても構わない。
【０２９４】
例えば、Ｖｉｄｅｏ１ＥＳと、Ｖｉｄｅｏ２ＥＳと、Ｖｉｄｅｏ３ＥＳと、ＡｕｄｅｉｏＥＳとが多重化されたものである場合等が考えられる。
また、暗号化されたＶｉｄｅｏＥＳは、撮影された映像がＭＰＥＧ４−ＡＶＣ方式で符号化され、符号化されることで得られた多数のＶｉｄｅｏフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたものであるとしたが、例えば、ＭＰＥＧ２、ＭＰＥＧ４、Ｍｏｔｉｏｎ  ＪＰＥＧ（Joint Photographic Experts Group）等のＭＰＥＧ４−ＡＶＣ方式以外の方式で符号化されていても構わない。
【０２９５】
さらに、暗号化されたＡｕｄｉｏ１ＥＳ、Ａｕｄｉｏ２ＥＳは、撮影された音声がＭＰＥＧ４−ＡＶＣ方式で符号化され、符号化されることで得られた多数のＡｕｄｉｏフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたものであるとしたが、例えば、ＭＰＥＧ２、ＭＰＥＧ４等のＭＰＥＧ４−ＡＶＣ方式以外の方式で符号化されていても構わない。
（１０）実施の形態１において、チャンクヘッダの構成要素のそれぞれは、ビット長と出現順番が固定であるとしたが、ビット長を示す情報があればビット長は固定でなくても構わないし、順番を示す情報があれば順番は固定でなくても構わない。
（１１）実施の形態１において、チャンクデータは３つの暗号ブロックからなるとしたが、３つ以外の数の暗号ブロックからなるとしても構わない。
（１２）実施の形態１において、暗号ブロックは、ＡＥＳ暗号方式を用いてＣＴＲモードで暗号連鎖化されたものであるとしているが、例えば、ＣＢＣ（Cipher Block Chaining）モードといったＣＲＴモード以外のモードで暗号化されたものであっても構わないし、例えば、ＤＥＳ（Data Encryption Standard）暗号方式といったＡＥＳ暗号方式以外の暗号方式で暗号化されたものであっても構わない。
【０２９６】
また、暗号ブロックのビット長は１２８ビット、連鎖値のビット長は１２８ビット、鍵のビット長は１２８ビットであるとしたが、これらのビット長は、暗号ブロックの暗号方式に応じて、１２８ビット以外のビット長であるとしても構わない。
【０２９７】
例えば、暗号ブロックの暗号方式がＤＥＳ暗号方式である場合には、暗号ブロックのビット長は５６ビット、連鎖値のビット長は５６ビット、鍵のビット長は５６ビットとなる。
（１３）実施の形態１において、演算部２２２は、ＡＥＳ暗号回路７０１を備える構成としているが、暗号ブロックの暗号化方式に応じて、例えばＤＥＳ暗号といったＡＥＳ暗号以外の暗号方式の暗号回路であっても構わない。
（１４）実施の形態１において、インクリメンタ７０３は入力される連鎖値のうち、下位３２ビットの部分のみを１だけインクリメントして次の連鎖値を算定するとしたが、例えば、下位６４ビットの部分のみを１だけインクリメントして次の連鎖値を算定するといったように、下位３２ビット以外の部分を１だけインクリメントするとしても構わないし、例えば、２や−１といった１以外の数をインクリメントするとしても構わない。
（１５）実施の形態１において、復号対象のコンテンツのフォーマットについて図を用いて説明したが、復号対象のコンテンツのファイル形式は、説明したフォーマットに違反していない形式の、例えば、ＡＳＦ（Advanced Streaming Format）形式や、ＭＰ４ファイル形式や、ＱｕｉｃｋＴｉｍｅファイル形式である場合が考えられる。
（１６）実施の形態１において、暗号に使用する鍵は、コンテンツタイプ毎に用意されている例を示したが、例えば、基本となる鍵を１つ用意しておいて、コンテンツタイプ毎に特定の処理を施すことで、各コンテンツタイプ用の鍵を生成するとしてもよい。
（１７）実施の形態１において、ＣＰＵブロック１１０は２つのＣＰＵからなり、メモリブロックはＲＯＭとＲＡＭとからなり、暗号エンジン１５０はＤＳＰからなり、ＡＶデコーダ１６０はＤＳＰからなる構成としたが、これ以外の構成、例えば、ＣＰＵブロック１１０と、メモリブロック１２０と、周辺デバイスブロック１３０と、暗号エンジン１５０と、ＡＶデコーダ１６０と、バスライン１４０の一部とが１つの集積回路で実現されている構成であっても構わない。
【０２９８】
図３０は、再生機１０００のブロック構成を示すブロック図であって、再生機１０００のうち、ＣＰＵブロック１１０と、メモリブロック１２０と、周辺デバイスブロック１３０と、暗号エンジン１５０と、ＡＶデコーダ１６０と、バスライン１４０の一部とが１つの集積回路１０で実現されていることを示している。
（１８）実施の形態４において、復号対象のコンテンツは、鍵情報２２０５がチャンクヘッダ２２００に含まれるデータフォーマットであるとしたが、鍵情報２２０５がチャンクデータ２２２０を構成する暗号ブロックに含まれるとしても構わない。
【０２９９】
このようなデータフォーマットのコンテンツの場合には、チャンク情報取得部２２１０はチャンクデータの暗号ブロックから鍵情報を取得し、鍵生成部２１０１は、チャンク情報取得部２２１０から鍵情報を取得する構成となる。
【０３００】
鍵生成部２１０１は、鍵情報が暗号化されている場合には、暗号化された鍵情報を復号してから鍵を作成する。
同様に、実施の形態４において、復号対象のコンテンツは、初期値情報２２０６がチャンクヘッダ２２００に含まれるデータフォーマットであるとしたが、初期値情報２２０６がチャンクデータ２２２０を構成する暗号ブロックに含まれるとしても構わない。
【０３０１】
このようなデータフォーマットのコンテンツの場合には、チャンク情報取得部２２１０はチャンクデータの暗号ブロックから初期値情報を取得し、鍵生成部２１０１は、チャンク情報取得部２２１０から初期値情報を取得する構成となる。
【０３０２】
鍵生成部２１０１は、初期値情報が暗号化されている場合には、暗号化された初期値情報を復号してから鍵を作成する。
（１９）実施の形態４において、鍵情報２２０５は鍵を生成するための情報であり、初期値情報２２０６は初期値を生成するための情報であるとしたが、鍵情報２２０５は鍵そのものであるとしても構わないし、初期値情報２２０６は初期値そのものであるとしても構わない。
（２０）実施の形態４において、鍵情報２２０５は、各暗号化されたＥＳに属する全てのフレームで共通のものを用いても構わないし、チャンク単位で互いに異なるものを用いても構わないし、さらには、鍵情報２２０５がチャンクデータ２２２０を構成する暗号ブロックに含まれている場合であれば、１つのチャンク内に複数の鍵情報２２０５が存在し、同一のチャンク内の暗号ブロックが、互いに異なる鍵情報２２０５を用いても構わない。
【０３０３】
同様に、実施の形態４において、初期値情報２２０６は、各暗号化されたＥＳに属する全てのフレームで共通のものを用いても構わないし、チャンク単位で互いに異なるものを用いても構わないし、さらには、初期値情報２２０６がチャンクデータ２２２０を構成する暗号ブロックに含まれている場合であれば、１つのチャンク内に複数の鍵情報２２０５が存在し、同一のチャンク内の暗号ブロックが、互いに異なる鍵情報２２０５を用いても構わない。
（２１）実施の形態５において、第１処理部２５０１はＣＰＵＡ１１１によって制御され、第２処理部２５０２はＣＰＵＢ１１２によって制御されるとしたが、これ以外の構成、例えば、第１処理部２５０１はＣＰＵＡ１１１とＣＰＵＢ１１２とによって制御されるとしても構わないし、第２処理部２５０２はＣＰＵＡ１１１とＣＰＵＢ１１２とによって制御されるとしても構わない。
【０３０４】
さらには、ＣＰＵブロック１１０が、３つ以上のＣＰＵから構成される場合に、第１処理部２５０１は３つ以上のＣＰＵによって制御されるとしても構わないし、第２処理部２５０２は３つ以上のＣＰＵによって制御されるとしても構わない。
【０３０５】
また、ＣＰＵブロックに、取り扱う情報を秘匿する機能を有するセキュアＣＰＵが存在し、そのセキュアＣＰＵが第２処理部２５０２によって制御されるようにすることで、鍵蓄積部２１４が記憶する鍵と初期値とを第三者に知られないようにするとしても構わない。
（２２）実施の形態５において、第１処理部２５０１がチャンクデータ蓄積処理を終了した後に、第２処理部２５０２がコンテンツ復号処理を開始する例について説明したが、第１処理部２５０１によるチャンクデータ蓄積処理が最後まで終了していなくても、暗号情報蓄積部２５３０に一部のチャンクの情報が記憶された状態で、第２処理部２５０２がコンテンツ復号処理を開始するとしても構わない。
（２３）実施の形態１において、外部記録媒体１３７とは、ＤＶＤ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＡＭ、ＢＤ、ＢＤ−Ｒ、ＢＤ−ＲＥ等であるとしたが、読み取り可能な記録媒体であれば、例えば、ＣＤ（Compact Disc）、ＣＤ−Ｒ、ＳＤカード等であっても構わない。
【０３０６】
また、読取書込装置１３２は、ＤＶＤ、ＤＶＤ−Ｒ、ＢＤ、ＢＤ−Ｒ、ＢＤ−ＲＥ等へのデータの書込みや読取りをすることができるとしたが、データの書込みや読取が可能尾な記録媒体であれば、例えば、ＣＤ、ＣＤ−Ｒ、ＳＤカード等へのデータの書込みや読取りをすることができても構わない。
（２４）実施の形態１において、外部伝送媒体１３６とは、光通信回線、電話通信回線、放送波等であるとしたが、これらの形態は、デジタル信号を伝送することができる形態であれば、例えば、有線の形態であったり、無線の形態であったり、赤外線の形態であったりしても構わない。
【産業上の利用可能性】
【０３０７】
本発明は、暗号化されたデジタルデータを復号する復号処理装置に広く利用することができる。
【符号の説明】
【０３０８】
１５０  暗号エンジン
２０１  入力バッファ
２０２  出力バッファ
２１０  チャンク情報取得部
２１１  暗号サイズ算出部
２１２  鍵設定部
２１３  連鎖判定部
２１４  鍵蓄積部
２１６  チャンク間連鎖値保持部
２２１  演算判定部
２２２  演算部
２２３  鍵保持部
２２４  初期値保持部
２２５  初期値選択部
２２６  連鎖値選択部
２２７  チャンク内連鎖値保持部
２２８  連鎖値記録部
２２９  出力選択部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号するコンテンツ復号処理装置であって、
チャンクの先頭の暗号ブロックが所定のビット数よりも少ない場合に、当該暗号ブロックのビット数と当該所定のビット数との差を算出し、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックの先頭に付与データを付与して合成暗号ブロックを生成するデータ付与部と、
連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、
前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部と、
前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、
前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とを備え、
前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用い、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記データ付与部によって当該暗号ブロックに基づく合成暗号ブロックが生成されていたとき、当該暗号ブロックの代わりに当該合成暗号ブロックを対象として復号し、
前記復号データ記録部は、前記復号部が合成暗号ブロックを復号した場合に、前記データ付与部によって付与された付与データが前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録する
ことを特徴とするコンテンツ復号処理装置。
【請求項２】
前記データ付与部は、チャンクの後尾の暗号ブロックが前記所定のビット数よりも少ない場合に、当該暗号ブロックのビット数と前記所定のビット数との差を算出し、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックの後尾に付与データを付与して合成暗号ブロックを生成し、
前記復号部は、復号する暗号ブロックがチャンクの後尾の暗号ブロックである場合において、前記データ付与部によって当該暗号ブロックに基づく合成暗号ブロックが生成されていたとき、当該暗号ブロックの代わりに当該合成暗号ブロックを対象として復号する
ことを特徴とする請求項１記載のコンテンツ復号処理装置。
【請求項３】
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と復号された暗号ブロックを記憶するための復号データ保持部とを備えるコンテンツ復号処理装置に、複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号させるコンテンツ復号処理方法であって、
チャンクの先頭の暗号ブロックが所定のビット数よりも少ない場合に、当該暗号ブロックのビット数と当該所定のビット数との差を算出し、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックの先頭に付与データを付与して合成暗号ブロックを生成するデータ付与ステップと、
連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号ステップと、
前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録ステップと、
前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録ステップとを備え、
前記復号ステップは、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用い、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記データ付与部によって当該暗号ブロックに基づく合成暗号ブロックが生成されていたとき、当該暗号ブロックの代わりに当該合成暗号ブロックを対象として復号し、
前記復号データ記録ステップは、前記復号ステップが合成暗号ブロックを復号した場合に、前記データ付与ステップによって付与された付与データが前記復号ステップによって復号されることで得られた部分以外の部分を前記復号データ保持部に記録する
ことを特徴とするコンテンツ復号処理方法。
【請求項４】
複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第１種暗号フレームに属する暗号チャンクと、第２種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号する集積回路であって、
チャンクの先頭の暗号ブロックが所定のビット数よりも少ない場合に、当該暗号ブロックのビット数と当該所定のビット数との差を算出し、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックの先頭に付与データを付与して合成暗号ブロックを生成するデータ付与部と、
連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、
暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、
前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部と、
前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、
前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とを備え、
前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用い、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記データ付与部によって当該暗号ブロックに基づく合成暗号ブロックが生成されていたとき、当該暗号ブロックの代わりに当該合成暗号ブロックを対象として復号し、
前記復号データ記録部は、前記復号部が合成暗号ブロックを復号した場合に、前記データ付与部によって付与された付与データが前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録する
ことを特徴とする集積回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010055658.tif 000033
【図２】
2010055658.tif 000034
【図３】
2010055658.tif 000035
【図４】
2010055658.tif 000036
【図５】
2010055658.tif 000037
【図６】
2010055658.tif 000038
【図７】
2010055658.tif 000039
【図８】
2010055658.tif 000040
【図９】
2010055658.tif 000041
【図１０】
2010055658.tif 000042
【図１１】
2010055658.tif 000043
【図１２】
2010055658.tif 000044
【図１３】
2010055658.tif 000045
【図１４】
2010055658.tif 000046
【図１５】
2010055658.tif 000047
【図１６】
2010055658.tif 000048
【図１７】
2010055658.tif 000049
【図１８】
2010055658.tif 000050
【図１９】
2010055658.tif 000051
【図２０】
2010055658.tif 000052
【図２１】
2010055658.tif 000053
【図２２】
2010055658.tif 000054
【図２３】
2010055658.tif 000055
【図２４】
2010055658.tif 000056
【図２５】
2010055658.tif 000057
【図２６】
2010055658.tif 000058
【図２７】
2010055658.tif 000059
【図２８】
2010055658.tif 000060
【図２９】
2010055658.tif 000061
【図３０】
2010055658.tif 000062
【国際調査報告】
2010055658.tif 000063
2010055658.tif 000064
2010055658.tif 000065
2010055658.tif 000066