JPWO2010055658A1 - コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路 - Google Patents

コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路 Download PDF

Info

Publication number
JPWO2010055658A1
JPWO2010055658A1 JP2010537695A JP2010537695A JPWO2010055658A1 JP WO2010055658 A1 JPWO2010055658 A1 JP WO2010055658A1 JP 2010537695 A JP2010537695 A JP 2010537695A JP 2010537695 A JP2010537695 A JP 2010537695A JP WO2010055658 A1 JPWO2010055658 A1 JP WO2010055658A1
Authority
JP
Japan
Prior art keywords
chunk
unit
block
cipher
chain value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2010537695A
Other languages
English (en)
Inventor
昌彦 兵藤
昌彦 兵藤
岩田 徹
徹 岩田
栗木 悟
悟 栗木
正宏 佐野
正宏 佐野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2010055658A1 publication Critical patent/JPWO2010055658A1/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

コンテンツ復号処理装置2000は、チャンクの後尾の暗号ブロックを復号する際に算定した連鎖値を、コンテンツタイプと、フレーム番号と関連付けてチャンク間連鎖値保持部216に記憶し、チャンクの先頭の暗号ブロックを復号する場合において、チャンク間連鎖値保持部216にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値があるときに、そのチャンクのコンテンツタイプとフレーム番号と対応付けられてチャンク間連鎖値保持部216に記憶されている連鎖値を用いて、チャンクの先頭の暗号ブロックを復号することで、復号するデータストリームが、第1種暗号フレームに属する暗号チャンク間に、第2種暗号フレームに属する暗号チャンクが存在しているデータ構造であっても正しくデータストリームを復号することができる。

Description

本発明は、暗号連鎖ブロック方式で暗号化されている暗号データを復号するコンテンツ復号処理装置に関する。
情報通信ネットワークを介して通信されるデジタルデータや、光ディスク等のメディアに蓄積されているデジタルデータ等の不正な利用を防止するために、これらのデジタルデータは、第三者がそのままでは利用することができないように暗号化された暗号データとなっている場合が多い。
デジタルデータを暗号化する方式の一つに、暗号対象データを複数の平文ブロックに分割し、直前の平文ブロックの暗号化が、その次の平文ブロックの暗号化に影響を与えるように暗号化していくことで、各平文ブロックを連鎖的に暗号処理するという暗号連鎖ブロック方式がある。
暗号連鎖ブロック方式において、各平文ブロックは、その直前の平文ブロックの暗号化の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して暗号化される。
この暗号連鎖ブロック方式で暗号化された暗号データは、平文ブロックを暗号化することで得られた暗号ブロックが暗号化された順番に並んで構成される。
暗号連鎖ブロック方式において、各暗号ブロックは、その直前の暗号ブロックの復号の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して復号される。
暗号連鎖ブロック方式で暗号化された暗号データを復号する技術として、例えば、暗号ブロックの復号の際に、暗号ブロックの復号処理と並行して次の暗号ブロックの復号に必要な連鎖値を生成することによって、次の暗号ブロックの復号開始時刻を早める技術(特許文献1参照)等が提案されている。
特開2000−295212号公報
一方、ビデオフレームから構成されるビデオデータストリームと、オーディオフレームから構成されるオーディオデータストリームとを、1つのデータストリームとして取り扱う手法として、ビデオデータストリームとオーディオデータストリームとを分割多重化して一つの新たなデータストリームとする手法がある。
このような手法において、分割多重化前のビデオデータストリームとオーディオデータストリームとが、それぞれ、フレーム毎に暗号連鎖ブロック方式で暗号化されているデータストリームである場合には、分割多重化後のデータストリームには、暗号連鎖している暗号ブロック列(例えば暗号化されたビデオフレームの暗号ブロック列)間に、その暗号フレームとは独立に暗号連鎖している暗号ブロック列(例えば暗号化されたオーディオフレームの暗号ブロック列)が存在する場合がある。
このようなデータストリームを復号するコンテンツ復号処理装置は、復号対象のデータストリームが、第1種暗号フレーム(例えば暗号化されたビデオフレーム)に属する連鎖する暗号ブロック列(以下、「暗号チャンク」という。)間に、第2種暗号フレーム(例えば暗号化されたオーディオフレーム)に属する暗号チャンクが存在しているデータ構造のデータストリームを復号することができる必要がある。
しかしながら、暗号ブロックを復号する場合において、単純にデータストリーム上の直前の暗号ブロックの復号の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して暗号ブロックを復号するという構成のコンテンツ復号処理装置では、このようなデータストリームを復号することはできない。
そこで、本発明は、復号するデータストリームが、第1種暗号フレームに属する暗号チャンク間に、第2種暗号フレームに属する暗号チャンクが存在しているデータ構造のデータストリームであっても、データストリームの暗号ブロック順にそのデータストリームを復号することができるコンテンツ復号処理装置を提供することを目的とする。
上記課題を解決するために本発明に係るコンテンツ復号処理装置は、複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第1種暗号フレームに属する暗号チャンクと、第2種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号するコンテンツ復号処理装置であって、連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部とを備え、前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とする。
上述の構成を備える本発明に係るコンテンツ復号処理装置は、連鎖値記録部は、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録し、復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることになるため、復号するデータストリームが、第1種暗号フレームに属する暗号チャンク間に、第2種暗号フレームに属する暗号チャンクが存在しているデータ構造であっても正しくデータストリームを復号することができるという効果を有する。
また、例えば、データストリームから全ての第1種暗号フレームに属する暗号チャンクのみを順番通りに抽出して、抽出した暗号チャンクを順番通りに復号し、データストリームから全ての第2種暗号フレームのみを順番通りに抽出して、第1種暗号フレームの復号とは独立して、抽出した第2種暗号フレームを順番通りに復号するという復号処理装置でも、正しくデータストリームを復号することができるが、この復号処理装置には、データストリーム全体の中から種別毎に全ての暗号フレームを分離して抽出するという工程が必要になり、さらに、抽出した暗号ブロックを、種別ごとに一時記憶しておくための記憶領域が必要になる。
これに対して、上述の構成を備える本発明に係るコンテンツ復号処理装置では、種別毎に全ての暗号フレームを抽出する工程が不要であり、加えて、抽出した暗号フレームを、種別毎に記憶しておくための記憶領域も不要である。
また、前記連鎖値保持部は、連鎖値を記憶するためのチャンク内連鎖値保持部を含み、前記連鎖値記録部は、前記復号部によって暗号ブロックが復号された場合において、チャンクの後尾でない暗号ブロックが復号されたときに、前記復号部で算定された連鎖値を前記チャンク内連鎖値保持部に記憶されている連鎖値に上書きして記録し、前記復号部は、復号する暗号ブロックがチャンクの先頭の暗号ブロックでない場合に、前記チャンク内連鎖値保持部に記録されている連鎖値を用いて暗号ブロックを復号することを特徴とするとしてもよい。
このような構成にすることによって、チャンク内連鎖値保持部は、連鎖値のみを上書きされて記憶することになるため、チャンク内連鎖値保持部に必要な記憶容量を1つの連鎖値の記憶に必要な記憶容量に限定したコンテンツ復号処理装置を提供することができるという効果を有する。
また、前記連鎖値記録部は、暗号フレームの識別情報と連鎖値とを関連付けて前記連鎖値保持部に記録する場合に、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを前記連鎖値保持部に上書きして記録することを特徴とするとしてもよい。
このような構成にすることによって、連鎖値保持部は、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを上書きされて記憶することになるため、連鎖値保持部に必要な記憶容量を、暗号フレーム種毎に、1つの暗号フレームを示す情報と、1つの連鎖値を関連付けて記憶するのに必要な記憶容量に限定したコンテンツ復号処理装置を提供することができるという効果を有する。
また、前記復号部の復号対象である暗号ブロックが所定のビット数に足りない場合に、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックに付与データを付与するデータ付与部と、前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とをさらに備え、前記復号部の復号対象である暗号ブロックが前記所定のビット数に足りない場合に、前記データ付与部は、前記復号対象である暗号ブロックに付与データを付与して、前記所定のビット数の合成暗号ブロックを生成し、前記復号部は、前記復号対象の暗号ブロックの代わりに前記合成暗号ブロックを復号し、前記復号データ記録部は、前記復号部によって復号された合成暗号ブロックのうち、前記データ付与部によって付与された付与データの部分が前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録するとしてもよい。
ここで、所定のビット数とは、復号部が復号できる暗号ブロックのビット数のことである。
このような構成にすることによって、復号対象である暗号ブロックが、その一部のビットが欠落して所定のビット数に足りない暗号ブロックである場合であっても、暗号ブロックに付与データを付与することで所定のビット数となった合成暗号ブロックを復号部が復号し、復号された合成ブロックから、付与データの部分が復号されることで得られた部分以外の部分を復号データ保持部に記録することになるため、所定のビット数に足りない暗号ブロックであっても、その暗号ブロックを復号して、復号データ保持部に記録することができるコンテンツ復号処理装置を提供することができるという効果を有する。
再生機1000のブロック構成を示すブロック図 コンテンツのデータ構造を示すデータ構造図 チャンク310のデータ構造を示すデータ構造図 コンテンツ復号処理装置2000の機能構成を示すブロック図 鍵蓄積部214が保持する情報を示す図 チャンク間連鎖値保持部216が保持する情報を示す図 演算部222の機能構成を示すブロック図 コンテンツ復号処理装置2000のコンテンツ復号動作のフローチャート チャンク1050のデータ構造を示すデータ構造図 コンテンツヘッダに含まれている情報を示す図 コンテンツ復号処理装置3000の機能構成を示すブロック図 コンテンツ復号処理装置3000のコンテンツ復号動作のフローチャート コンテンツデータのデータ構造を示すデータ構造図 コンテンツ復号処理装置4000の機能構成を示すブロック図 チャンク間連鎖値保持部1316が保持する情報を示す図 暗号ブロックの前半が欠落している場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。 暗号ブロックの後半が欠落している場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。 暗号ブロックに欠落がない場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。 コンテンツ復号処理装置4000のコンテンツ復号動作のフローチャートその1 コンテンツ復号処理装置4000のコンテンツ復号動作のフローチャートその2 チャンク2250のデータ構造を示すデータ構造図 コンテンツ復号処理装置5000の機能構成を示すブロック図 鍵蓄積部2114が保持する情報を示す図 コンテンツ復号処理装置5000のコンテンツ復号動作のフローチャート コンテンツ復号処理装置6000の機能構成を示すブロック図 フレーム番号蓄積部2522が保持する情報を示す図 暗号情報蓄積部2530が保持する情報を示す図 コンテンツ復号処理装置6000のコンテンツ復号動作のフローチャートその1 コンテンツ復号処理装置6000のコンテンツ復号動作のフローチャートその2 再生機1000のハードウエア構成を示すブロック図
<実施の形態1>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
ここで暗号化されたコンテンツとは、ビデオフレームから構成されるビデオデータストリームと、オーディオフレームから構成されるオーディオデータストリームとを、それぞれ、フレーム毎に暗号連鎖ブロック方式で暗号化して、暗号化されたビデオデータストリームと、暗号化されたオーディオデータストリームとを分割多重化して一つの新たなデータストリームとしたものである。
このコンテンツ復号処理装置は、復号対象のデータストリームのデータ構造が、第1種暗号フレーム(例えば暗号化されたビデオフレーム)に属する連鎖する暗号ブロック列からなる暗号チャンク間に、第2種暗号フレーム(例えば暗号化されたオーディオフレーム)に属する暗号ブロック列からなる暗号チャンクが存在しているデータ構造であっても、データストリームを正しく復号することができる。
以下、本実施の形態に係るコンテンツ復号処理装置の構成について、図面を参照しながら説明する。
<構成>
<再生機1000>
図1は、本実施の形態に係るコンテンツ復号処理装置2000を備えた再生機1000のブロック構成を示すブロック図である。
再生機1000は、パーソナルコンピュータであって、CPU(Central Processing Unit:中央演算処理装置)ブロック110と、メモリブロック120と、周辺デバイスブロック130と、バスライン140と、暗号エンジン150と、AVデコーダ160とから構成される。
CPUブロック110は、CPUA111と、CPUB112との2つのCPUから構成される。
CPUA111とCPUB112とは、バスライン140と接続し、メモリブロック120が記憶するプログラムを実行することで、メモリブロック120、周辺デバイスブロック130、暗号エンジン150、AVデコーダ160を用いて、記録媒体から暗号化されたデータストリームを読み出す機能、暗号化されたデータストリームを復号する機能、符号化されたデータストリームを復号する機能等を実現する。
CPUA111とCPUB112とは、互いに協調しながら並列に動作することで、上記機能を実現する。
メモリブロック120は、ROM(Read Only Memory)121とRAM(Random Access Memory)122とから構成されている。
ROM121は、バスライン140と接続し、CPUA111の動作を規定するプログラムと、CPUB112の動作を規定するプログラムと、CPUA111とCPUB112とが利用するデータとを記憶している。
RAM122は、バスライン140と接続し、CPUA111又はCPUB112がプログラムを実行することに伴って発生するデータを一時的に記憶し、また、周辺デバイスブロック130から読み取ったデータを一時的に記憶する。
周辺デバイスブロック130は、ハードディスク装置131と、ハードディスク装置インターフェース141と、読取書込装置132と、読取書込装置インターフェース142と、出力装置133と、出力装置インターフェース143と、入力装置134と、入力装置インターフェース144と、通信装置135とから構成されている。
暗号エンジン150は、暗号化されたデータの復号を行う機能を有するDSP(Digital Signal Processor)であって、CPUA111及びCPUB112によって制御され、バスライン140と接続する。
AVデコーダ160は、符号化されたVideoデータやAudioデータをデコードするDSPであって、CPUA111及びCPUB112によって制御され、MPEG(Moving Picture Experts Group)2デコード機能、MPEG4デコード機能、MPEG4−AVCデコード機能を有する。
再生機1000は、AVデコーダ160でデコードした結果を、出力装置133で出力することで、コンテンツを再生する。
ハードディスク装置131は、CPUA111及びCPUB112によって制御され、内蔵するハードディスクにコンテンツを書き込む機能と、内蔵するハードディスクに書き込まれているコンテンツを読み取る機能とを有し、ハードディスク装置インターフェース141を介してバスライン140と接続する。
ハードディスク装置インターフェース141は、ハードディスク装置131とバスライン140との間の信号のやりとりを仲介するものである。
読取書込装置132は、CPUA111及びCPUB112によって制御され、外部記録媒体137にコンテンツを書き込む機能と、外部記録媒体137に書き込まれているコンテンツを読み取る機能とを有し、読取書込装置インターフェース142を介してバスライン140と接続する。
ここで、外部記録媒体137とは、DVD(Digital Versatile Disc)、DVD−R、DVD−RAM、BD(Blu-ray Disc)、BD−R、BD−RE等であって、読取書込装置132は、これら、DVD、DVD−R、BD、BD−R、BD−RE等へのデータの書込みや読取りをすることができる。
読取書込装置インターフェース142は、読取書込装置132とバスライン140との間の信号のやりとりを仲介するものである。
通信装置135は、外部伝送媒体136を通じてコンテンツを取得する機能を有し、バスライン140と接続し、外部のコンテンツサーバや、インターネット上のコンテンツ提供サイト等からコンテンツを取得する。
ここで、外部伝送媒体136とは、光通信回線、電話通信回線、放送波等であって、通信装置135は、これら光通信回線、電話通信回線、放送波等からの信号を受信することができる。
通信装置135が取得するコンテンツは、外部記録媒体137、ハードディスク装置131に内蔵されるハードディスク、または、RAM122に書き込まれる。
出力装置133は、映像と音声とを出力する装置であって、AVデコーダ160によってデコードされたVideoデータやAudioデータを出力する機能を有し、出力装置インターフェース143を介してバスライン140と接続し、LCD(Liquid Crystal Display)と、スピーカとで構成されている。
出力装置インターフェース143は、出力装置133とバスライン140との間の信号のやりとりを仲介するものである。
入力装置134は、ユーザによる操作を受け付けるキーボードと、マウスとから構成され、ユーザによる再生機1000の操作コマンドを受け付ける機能を有し、入力装置インターフェース144を介してバスライン140と接続する。
入力装置インターフェース144は、入力装置134とバスライン140との間の信号のやりとりを仲介するものである。
バスライン140は、CPUA111、CPUB112、ROM121、RAM122、暗号エンジン150、AVデコーダ160、通信装置135、ハードディスク装置インターフェース141、読取書込装置インターフェース142、出力装置インターフェース143、及び、入力装置インターフェース144と接続し、接続する各構成要素間のデータ通信を行うためのものである。
上述のように構成される再生機1000は、CPUA111及びCPUB112がROM121又はRAM122に記憶されているプログラムを実行することで、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれているコンテンツの再生処理を実行する。
<コンテンツのデータ構造>
図2は、本実施の形態1に係るコンテンツ復号処理装置2000が復号するコンテンツ300のデータ構造を示すデータ構造図である。
コンテンツ300は、映像を符号化することで得られるビデオストリームが暗号化されたVideoES(Elementary Stream)と、日本語による音声を符号化することで得られるオーディオストリームが暗号化されたAudio1ESと、英語による音声を符号化することで得られるオーディオストリームが暗号化されたAudio2ESとが分割多重化されて連続する1つのストリームになっているコンテンツデータ302と、コンテンツ300に関する情報を含むコンテンツヘッダ301とから構成される。
ここで、暗号化されたVideoESとは、MPEG4−AVC方式で符号化された映像データに対して、1画面の画像データであるVideoフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたストリームデータである。
暗号連鎖は各Videoフレーム単位で完結し、互いに異なるVideoフレームに暗号連鎖が継続することはない。
また、連鎖する暗号ブロックの先頭の暗号ブロックを復号する際に用いる連鎖値である初期値と、各暗号ブロックを復号する際に用いる鍵とは、全てのVideoフレームで共通のものを用いている。
ここで、暗号化されたAudio1ES、Audio2ESとは、音声データをMPEG4−AVC方式で符号化することで得られたAudioフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたストリームデータである。
暗号連鎖は各Audioフレーム単位で完結し、互いに異なるAudioフレームに暗号連鎖が継続することはない。
また、初期値と鍵とは、暗号化されたAudio1ESに属する全てのAudioフレームで共通のものを用い、暗号化されたAudio2ESに属する全てのAudioフレームで共通のものを用いているが、暗号化されたAudio1ESに属するAudioフレームの初期値と鍵とは、暗号化されたAudio2ESに属するAudioフレームの初期値と鍵と異なるものである。
コンテンツデータ302のデータ構成は、多数のチャンク310が連続する構成となっており、各チャンク310は、さらに、チャンクヘッダ311、チャンクデータ312、パディング313から構成されている。
図3は、チャンク310のデータ構成を示すデータ構成図である。
チャンクヘッダ311は、暗号化されていない固定長データであって、チャンクのサイズを示す情報を含むチャンクサイズ401、チャンクの属するコンテンツタイプを示す情報を含むコンテンツタイプ402、チャンクの属するフレーム番号を示す情報を含むフレーム番号403、デコードに使用する情報を含むデコード用ヘッダ情報404、チャンクデータのサイズを示す情報を含むチャンクデータサイズ405からなる。
ここで、コンテンツタイプとは、Video、Audio1、Audio2のうちのいずれかであって、コンテンツタイプがVideoであれば、暗号化されたVideoESに属することを示し、コンテンツタイプがAudio1であれば、暗号化されたAudio1ESに属することを示し、コンテンツタイプがAudio2であれば、暗号化されたAudio2ESに属することを示す。
また、チャンクヘッダ311の構成要素である、チャンクサイズ401、コンテンツタイプ402、フレーム番号403、デコード用ヘッダ情報404のそれぞれのビット長と出現順番とは固定である。
チャンクデータ312は、暗号連鎖の順番に並ぶ暗号ブロック411〜413からなる暗号ブロック列である。
例えば、AES(Advanced Encryption Standard)暗号方式を用いた場合、暗号ブロックは、CTRモードで連鎖暗号化された暗号連鎖の単位であって、ビット長は128ビットである。
ここで、暗号ブロックは128ビットの平文と、128ビットの連鎖値を128ビットの鍵を用いてAES暗号方式等によって暗号化することによって得られた128ビットの暗号連鎖値とを、ビットごとの排他的論理和を取ることで生成されたものであって、各暗号ブロックは、Videoフレーム、Audio1フレーム、Audio2フレームのいずれかのフレームが暗号化されることによって得られたものである。
パディング313は、暗号化されていないデータであって、チャンク310のデータサイズを整えるために添付されているデータである。
<コンテンツ復号処理装置2000>
図4は、再生機1000を用いて機能的に実現される、コンテンツ復号処理装置2000の機能構成を示すブロック図である。
コンテンツ復号処理装置2000は、CPUA111及びCPUB112がメモリブロック120の記憶するプログラムに従って、メモリブロック120、周辺デバイスブロック130、バスライン140、暗号エンジン150等を用いて暗号化されたコンテンツの復号処理を行い、復号されたコンテンツをAVデコーダ160に出力される。
コンテンツ復号処理装置2000は、復号対象のチャンクを一時的に保持する入力バッファ201と、復号されたチャンクを一時的に保持する出力バッファ202と、鍵と初期値とを記憶する鍵蓄積部214と、チャンク間に跨る連鎖値を記憶するチャンク間連鎖値保持部216と、チャンクヘッダ311から情報を取得するチャンク情報取得部210と、チャンクデータ312の開始アドレスとパディング313の開始アドレスとを算出する暗号サイズ算出部211と、鍵と初期値とを暗号エンジン150に出力する鍵設定部212と、チャンク間に跨って暗号連鎖が継続しているか否かを判定する連鎖判定部213と、暗号エンジン150とから構成される。
入力バッファ201は、暗号エンジン150が復号するコンテンツの一部を一時的に記憶しておくための記憶領域であって、メモリブロック120の一部として実装されている。
入力バッファ201の記憶する単位は、コンテンツヘッダ301又はチャンク310単位であって、CPUA111又はCPUB112によって、コンテンツ300のデータ順に従って、前回記憶していたコンテンツの一部に対して上書きされる。
出力バッファ202は、暗号エンジン150が復号したコンテンツの一部を、AVデコーダ160に出力する前に一時的に記憶しておくための記憶領域であって、メモリブロック120の一部として実装されている。
チャンク情報取得部210は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402を鍵設定部212に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部213に出力する機能を有する。
チャンク情報取得部210は、CPUA111又はCPUB112によってコンテンツヘッダ301が書き込まれると、入力バッファ201が保持するデータがコンテンツヘッダ301である旨のコンテンツヘッダ信号を暗号エンジン150に出力する機能を有する。
暗号サイズ算出部211は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを入力とを入力されると、チャンクデータ312の開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数とを計算し、暗号エンジン150に出力する機能を有する。
チャンクデータ312の開始アドレスは、チャンクの開始アドレスと固定長であるチャンクヘッダ311のサイズを加算することで算出され、パディング313の開始アドレスは、チャンクヘッダ311の開始アドレスにチャンクデータサイズ405を加算することで算出され、チャンクの終了アドレスは、チャンクの開始アドレスとチャンクサイズ401とを加算することで算出され、暗号ブロックの数は、チャンクデータサイズ405を暗号ブロックの単位ビット数である128で除算することで算出される。
鍵蓄積部214は、コンテンツタイプと、鍵と、初期値とを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図5は、鍵蓄積部214が記憶する情報を示す図である。
図5に示されるように、鍵蓄積部214は、コンテンツタイプ402のそれぞれに、復号の際に使用する鍵502と、初期値503とを対応付けて予め記憶している。
鍵502のビット数は128ビットであって、初期値503のビット数は128ビットである。
ここで、初期値とは、暗号連鎖ブロック方式で暗号化された暗号ブロックを復号する場合において、連鎖先頭の暗号ブロックを復号する際に使用する連鎖値のことである。
鍵設定部212は、チャンク情報取得部210からのコンテンツタイプ402を入力として、鍵蓄積部214から、入力されたコンテンツタイプ402と関連付けられて記憶されている鍵502と初期値503とを読み出して、暗号エンジン150に出力する機能を有する。
チャンク間連鎖値保持部216は、コンテンツタイプと、フレーム番号と、連鎖値とを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図6は、チャンク間連鎖値保持部216が記憶する情報を示す図である。
図6に示されるように、チャンク間連鎖値保持部216は、コンテンツタイプ402のそれぞれに、フレーム番号602と、連鎖値603とを対応付けて記憶している。
ここで記憶されているフレーム番号602は、対応するコンテンツタイプ402において最後に復号されたフレームのフレーム番号であって、連鎖値603は、フレーム番号602に属する最後に復号されたチャンクの最後の暗号ブロックが復号された際に算定された連鎖値である。
連鎖値603のビット数は、128ビットである。
なお、フレーム番号602と、連鎖値603との組は、暗号エンジン150によって、コンテンツタイプ402毎に上書きされる。
連鎖判定部213は、チャンク情報取得部210からコンテンツタイプ402と、フレーム番号403との組み合わせが入力されると、チャンク情報取得部210から入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部216に関連付けられて記憶されているか否かを調べて、記憶されている場合には、入力バッファ201に保持されてチャンクが暗号連鎖継続中であると判断し、記憶されていない場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中でないと判断する機能を有する。
連鎖判定部213は、また、コンテンツタイプ402とフレーム番号403とを暗号エンジンに出力し、加えて、暗号連鎖継続中であると判断した場合には、暗号連鎖継続中の旨を示す暗号連鎖信号を暗号エンジン150に出力し、連鎖継続中でないと判断した場合には、暗号連鎖終了の旨を示す暗号終了信号を暗号エンジン150に出力する機能を有する。
暗号エンジン150は、チャンク情報取得部210からのコンテンツヘッダ信号と、暗号サイズ算出部211からのチャンクデータ312の開始アドレスとパディング313の開始アドレスとチャンクの終了アドレスとチャンクデータ312に含まれる暗号ブロックの数と、鍵設定部212からの鍵502と初期値503と、連鎖判定部213からのコンテンツタイプ402とフレーム番号403と暗号連鎖信号又は暗号終了信号とに基づいて、入力バッファ201に保持されているチャンクを読み出して、読み出したチャンクを復号して、復号されたチャンクを出力バッファ202に書き込む機能を有する。
暗号エンジン150は、入力バッファ201が保持するチャンクからチャンクデータ312を読み出して演算部に出力する演算判定部221と、チャンクデータ312を暗号ブロック単位で復号する演算部222と、鍵を記憶する鍵保持部223と、初期値を記憶する初期値保持部224と、初期値又は連鎖値のいずれか一方を選択する初期値選択部225と、演算部が使用する連鎖値を選択する連鎖値選択部226と、連鎖値を記憶するためのチャンク内連鎖値保持部227と、演算部222が出力する連鎖値をチャンク内連鎖値保持部227又はチャンク間連鎖値保持部216に記録する連鎖値記録部228と、演算部222によって暗号ブロック単位で復号されたチャンクデータを出力バッファ202に書きこむ出力選択部229とから構成されている。
演算判定部221は、暗号サイズ算出部211から出力されるチャンクの開始アドレスと、チャンクデータ312の開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを用いて、入力バッファ201に保持されているチャンクから、チャンクヘッダ311と、パディング313とを読み出して出力選択部229に出力し、チャンクデータ312を読み出して、暗号ブロック単位で演算部222に出力し、演算部222に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックである場合に、初期値選択信号を連鎖値選択部226に出力し、演算部222に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックでない場合に、連鎖値選択信号を連鎖値選択部226に出力する機能を有する。
なお、チャンクデータの先頭の暗号ブロックであるか否かは、チャンクデータの開始アドレスを用いて判断する。
ここで、チャンクデータの先頭の暗号ブロックを演算部222に出力するタイミングは、暗号サイズ算出部211からチャンクデータ312の開始アドレスが入力されたタイミングであって、チャンクデータの先頭の暗号ブロック以外の暗号ブロックを演算部222に出力するタイミングは、連鎖値記録部228から暗号ブロック要請信号を受け取ったタイミングである。
また、チャンク情報取得部210からコンテンツヘッダ信号が入力された場合には、入力バッファ201に保持されているコンテンツヘッダ301を読み出して出力選択部229に出力する機能を有する。
鍵保持部223は、鍵設定部212から鍵を入力される毎に、自ら記憶する鍵に上書きし、記憶している鍵を演算部222に出力し続ける機能を有する。
初期値保持部224は、鍵設定部212から初期値を入力される毎に、自ら記憶する初期値上書きし、記憶する初期値を初期値選択部に出力する機能を有する。
初期値選択部225は、連鎖判定部213から、暗号連鎖継続信号と、コンテンツタイプ402との組みを受け取ると、チャンク間連鎖値保持部216から、受け取ったコンテンツタイプ402と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力し、連鎖判定部213から、暗号連鎖終了の旨を示す信号を受け取ると、初期値保持部224が保持している初期値を読み出して連鎖値選択部226に出力する機能を有する。
チャンク内連鎖値保持部227は、連鎖値記録部228によって上書きされる連鎖値を記憶するための記憶領域である。
連鎖値選択部226は、初期値選択信号を演算判定部221から受け取った場合に、初期値選択部225から出力される初期値又は連鎖値を演算部222に出力し、連鎖値選択信号を演算判定部221から受け取った場合に、チャンク内連鎖値保持部227が保持する連鎖値を読み出して演算部222に出力する機能を有する。
連鎖値記録部228は、暗号サイズ算出部211が出力する暗号ブロックの数と、連鎖判定部213が出力するコンテンツタイプと、フレーム番号と、演算部222が出力する連鎖値とを入力され、演算部222が出力する連鎖値が入力されると、入力された連鎖値を、チャンク間連鎖値保持部216かチャンク内連鎖値保持部227のいずれか一方に記録する機能を有する。
連鎖値記録部228は、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、連鎖判定部213から入力されるコンテンツタイプと、フレーム番号と関連付けて、チャンク間連鎖値保持部216に上書きして記録し、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部227に上書きして記録し、演算判定部221に暗号ブロック要請信号を出力する機能を有する。
連鎖値記録部228は、演算部222から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
この連鎖値数カウンタは、暗号サイズ算出部211から暗号ブロックの数が入力される毎にリセットされる。
連鎖値記録部228は、演算部222から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
出力選択部229は、演算判定部221から出力されるチャンクヘッダ311と、パディング313と、復号された暗号ブロック単位で演算部222から出力される復号された暗号ブロックと、コンテンツヘッダ301とを、出力バッファ202に書き込む機能を有する。
演算部222は、演算判定部221から出力される暗号ブロックを、鍵保持部223に保持されている鍵と、連鎖値選択部226から出力される初期値又は連鎖値とを用いて、連鎖暗号ブロック方式で復号し、復号の際に次の連鎖値を算定して出力する機能を有する。
図7は演算部222の機能構成を示すブロック図である。
演算部222は、入力される連鎖値を暗号化して暗号連鎖値を出力するAES暗号回路701と、入力される連鎖値から、次の暗号ブロックを復号する際に使用する連鎖値を作成するインクリメンタ703と、暗号ブロックと暗号連鎖値とから復号された暗号ブロックすなわち平文を出力する排他的論理和回路702とから構成され、CTRモードで連鎖暗号化された暗号ブロックを復号する機能を有する。
AES暗号回路701は、128ビットの連鎖値に対して、128ビットの鍵を用いてAES暗号方式で128ビットの暗号連鎖値を作成して排他的論理和回路702に出力する。
インクリメンタ703は、入力される連鎖値のうち、下位32ビットの部分のみを1だけインクリメントして次の連鎖値を算定する機能を有する。
ここで、インクリメントされた下位32ビットの部分がオーバーフローした場合には、下位32ビットの部分のみが0x00となって、上位96ビットには影響を与えることはない。
排他的論理和回路702は、AES暗号回路701から出力される128ビットの暗号連鎖値と、演算判定部221から出力される128ビットの暗号ブロックとのビットごとの排他的論理和を出力する機能を有する。
以上のように構成されるコンテンツ復号処理装置2000は、暗号エンジン150がチャンクの後尾の暗号ブロックを復号する際に算定した連鎖値を、コンテンツタイプと、フレーム番号と関連付けてチャンク間連鎖値保持部216に記憶する。
また、コンテンツ復号処理装置2000は、暗号エンジン150がチャンクの先頭の暗号ブロックを復号する場合において、チャンク間連鎖値保持部216にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値があるときに、そのチャンクは連鎖が継続していると判断して、そのチャンクのコンテンツタイプとフレーム番号と対応付けられてチャンク間連鎖値保持部216に記憶されている連鎖値を用いて、チャンクの先頭の暗号ブロックを復号し、チャンク間連鎖値保持部216にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値がないときに、そのチャンクは連鎖が継続していない判断して、そのチャンクのコンテンツタイプに対応する初期値を用いて、チャンクの先頭の暗号ブロックを復号する。
さらに、コンテンツ復号処理装置2000は、暗号エンジン150がチャンクの先頭の暗号ブロック以外の暗号ブロックを復号する場合には、チャンク内連鎖値保持部227が保持する連鎖値を用いて、暗号ブロックを復号する。
コンテンツ復号処理装置2000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機1000がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ301を入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダ301が入力バッファ201に書き込まれると、コンテンツ復号処理装置2000はコンテンツ復号処理を開始する。
図8は、コンテンツ復号処理装置2000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置2000がコンテンツ復号処理を開始すると、チャンク情報取得部210はコンテンツヘッダ信号を出力し、演算判定部221は出力されたコンテンツヘッダ信号を受け取る。
演算判定部221は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダ301を読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダ301を出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部210は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して(ステップS800)、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402を鍵設定部212に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部213に出力する。
暗号サイズ算出部211は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とが入力されると、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数を計算し(ステップS805)、チャンクの開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを演算判定部221に出力し、暗号ブロックの数を連鎖値記録部228に出力する。
連鎖値記録部228は、暗号サイズ算出部211から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部221は、暗号サイズ算出部211から、チャンクの開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ311とパディング313とを読み出して出力選択部229に出力し、出力選択部229は入力されたチャンクヘッダ311とパディング313とを出力バッファ202に書き込み(ステップS810)、連鎖値選択部226に初期値選択信号を出力する。
鍵設定部212は、チャンク情報取得部210からコンテンツタイプ402を入力されると、入力されたコンテンツタイプ402と関連付けられて鍵蓄積部214に記憶されている鍵502と初期値503とを読み出して、読み出した鍵502を鍵保持部223に出力し、読み出した初期値503を初期値保持部224に出力し、鍵蓄積部214は、入力された鍵を上書きして記憶し、初期値保持部224は、入力された初期値を上書きして記憶する(ステップS815)。
連鎖判定部213は、チャンク情報取得部210から、コンテンツタイプ402と、フレーム番号403とを入力されると、入力バッファ201に保持されているチャンクが暗号連鎖継続中であるか否かを判定するために、入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部216に関連付けられて記憶されているか否かを調べて(ステップS820)、記憶されている場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中であると判断し(ステップS820:Yes)、コンテンツタイプ402とフレーム番号403とを連鎖値記録部228に出力し、暗号連鎖信号とコンテンツタイプ402とを初期値選択部225に出力する。
初期値選択部225は、連鎖判定部213から、暗号連鎖継続信号と、コンテンツタイプ402との組みを受け取ると、チャンク間連鎖値保持部216から、受け取ったコンテンツタイプ402と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部221から初期値選択信号を受け取っているので、初期値選択部225から入力される連鎖値を選択して、演算部222に出力する(ステップS825)。
ステップS820において、入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部216に関連付けられて記憶されていない場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中でないと判断し(ステップS820:No)、コンテンツタイプ402とフレーム番号403とを連鎖値記録部228に出力し、暗号終了信号を初期値選択部225に出力する。
初期値選択部225は、連鎖判定部213から、暗号連鎖終了信号を受け取ると、初期値保持部224が保持する初期値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部221から初期値選択信号を受け取っているので、初期値選択部225から初期値が入力されると、入力された初期値を演算部222で使用する連鎖値として演算部222に出力する(ステップS830)。
ステップS825又はステップS830の処理が終わると、演算部222は、演算判定部221から暗号チャンクの先頭の暗号ブロックを受け取る。
演算部222は、鍵保持部223に記録されている鍵と、連鎖値選択部から出力される連鎖値とを用いて、受け取った暗号ブロックを復号して出力選択部229に出力し、復号の際に算定した次の連鎖値を連鎖値記録部228に出力する(ステップS835)。
演算部222が行う暗号ブロックの復号と次の連鎖値の算定とは、(1)AES暗号回路701が鍵を用いて連鎖値を暗号化して暗号連鎖値を作成し、(2)排他的論理和回路702が作成された暗号連鎖値と、暗号ブロックとのビットごとの排他的論理和を取ることで、暗号ブロックを復号し、(3)インクリメンタ703が入力される連鎖値のうち、下位32ビットの部分のみを1だけインクリメントすることで次の連鎖値を算定するという3つの処理によって実現されている。
出力選択部229は、演算部222から復号された暗号ブロックが入力されると、入力された復号された暗号ブロックを、出力バッファ202に書き込む。
連鎖値記録部228は、演算部222から連鎖値が入力されると、連鎖値数カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数と、暗号サイズ算出部から入力された暗号ブロックの数とを比較することで、演算部222から入力された連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定する(ステップS840)。
ステップS840において、新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し(ステップS840:Yes)、演算部222から入力された連鎖値をチャンク内連鎖値保持部に上書きして記録し(ステップS845)、連鎖値記録部228は、演算判定部221に暗号ブロック要請信号を出力する。
演算判定部221は、連鎖値記録部228から暗号ブロック要請信号を受け取ると、次の暗号ブロックを演算部222に出力し、連鎖値選択信号を連鎖値選択部226に出力し、連鎖値選択部226は、連鎖値選択信号を受信すると、チャンク内連鎖値保持部227が保持する連鎖値を読み出して演算部222に出力する(ステップS850)。
ステップS850の処理が終わると、再びステップS835の処理を開始する。
ステップS840において、新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断し(ステップS840:No)、演算部222から入力された連鎖値を、連鎖判定部213から入力されたコンテンツタイプと、フレーム番号と関連付けて、チャンク間連鎖値保持部216に上書きして記録する(ステップS855)。
ステップS855の処理が終わると、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれるまで、コンテンツ復号処理装置2000は待機する(ステップS865)。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS870:Yes)、再びステップS800の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS870:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置2000は、コンテンツ復号処理を終了する。
<具体的動作>
例として、コンテンツタイプがVideoでフレーム番号が10である第1チャンクと、同じくコンテンツタイプがVideoでフレーム番号が10であって、第1チャンクに連続するチャンクである第2チャンクとの間に、コンテンツタイプがAudio1でフレーム番号が5である第3チャンクが存在している場合において、コンテンツ復号処理装置2000は、第2フレームの先頭の暗号ブロックを正しい連鎖値を用いて正しく復号することができることを説明する。
演算部222が第1チャンクの後尾の暗号ブロックを復号すると、連鎖値記録部228は、演算部222から入力された連鎖値、例えば、0x00001111を、連鎖判定部213から入力されたVideoを示すコンテンツタイプと、10を示すフレーム番号と関連付けて、チャンク間連鎖値保持部216に上書きして記録する(ステップS865)。
その後、コンテンツ復号処理装置2000は、第3チャンクを復号し、第3チャンクを復号した後、第2チャンクの復号を開始する。
第2チャンクが入力バッファ201に書き込まれると、チャンク情報取得部210は、Videoを示すコンテンツタイプと、10を示すフレーム番号とを取得し(ステップS800)、連鎖判定部213に出力する。
連鎖判定部213は、Videoを示すコンテンツタイプと、10を示すフレーム番号との組み合わせが、チャンク間連鎖値保持部216に関連付けられて記憶されているか否かを調べて(ステップS820)、Videoを示すコンテンツタイプと、10を示すフレーム番号との組み合わせが、連鎖値0x00001111と関連付けられて記憶されていることがわかるので、第2チャンクが暗号連鎖継続中であると判断し(ステップS820:Yes)、暗号連鎖信号とVideoを示すコンテンツタイプを出力する。
初期値選択部225は、暗号連鎖信号とVideoを示すコンテンツタイプとを受け取ると、チャンク間連鎖値保持部216からVideoを示すコンテンツタイプと関連付けて記憶されている連鎖値0x00001111を読み出して連鎖値選択部226に出力し、連鎖値選択部226は演算部222に、この連鎖値0x00001111を出力する。
従って、演算部222は、この連鎖値0x00001111、すなわち、第1チャンクの後尾の暗号ブロックを復号した際に算定した連鎖値を用いて、第2チャンクの先頭の暗号ブロックを復号することになるので、第2チャンクの先頭の暗号ブロックを正しく復号する。
<実施の形態2>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
本実施の形態2に係るコンテンツ復号処理装置は、実施の形態1のコンテンツ復号処理装置2000の復号対象であるコンテンツ300に含まれるチャンク310のチャンクヘッダ311の一部とコンテンツヘッダ301とが変形したデータフォーマットであるコンテンツを復号することができるように、実施の形態1で説明したコンテンツ復号処理装置2000を変形したものである。
本実施の形態2に係るコンテンツ復号処理装置は、実施の形態1で説明したコンテンツ復号処理装置2000の一部である、チャンク情報取得部210を変形し、さらに、新たにコンテンツヘッダ解析部とフィールド情報蓄積部とを備えるように変形した形態であって、コンテンツ復号処理装置2000と同様に、実施の形態1の再生機1000上で実現される。
以下、実施の形態1で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
<構成>
<コンテンツのデータ構造>
本実施の形態2に係るコンテンツ復号処理装置3000が復号するコンテンツは、実施の形態1のコンテンツ300を、実施の形態1のチャンクヘッダ311に存在していたコンテンツタイプ402と、フレーム番号403とに対応する情報が、コンテンツヘッダに存在しているように変形したコンテンツである。
図9は、本実施の形態2に係るコンテンツ復号処理装置3000の復号対象であるコンテンツを構成するチャンク1050のデータ構成を示す構成図である。
チャンク1050は、チャンクヘッダ1015、チャンクデータ1010、パディング1020から構成されている。
チャンクヘッダ1015は、暗号化されていないデータであって、チャンクのサイズを示す情報を含むチャンクサイズ1001、デコードに使用する情報を含むデコード用ヘッダ情報1004、チャンクデータのサイズを示す情報を含むチャンクデータサイズ1005からなり、チャンクサイズ1001、デコード用ヘッダ情報1004、チャンクデータサイズ1005のそれぞれのビット長と出現順番とは固定である。 チャンクデータ1010は、実施の形態1のチャンクデータ312と同様のものであって、パディング2230は、実施の形態1のパディング313と同様のものである。
図10は、本実施の形態2に係るコンテンツを構成するコンテンツヘッダに含まれている情報を示す構成図である。
コンテンツヘッダは、コンテンツに含まれるすべてのチャンク1050について、チャンク1050の並び順に、チャンク1050毎の開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103とを対応付けて保持している。
コンテンツタイプ1102は実施の形態1のコンテンツタイプ402と同様のものであり、フレーム番号1103は実施の形態1のフレーム番号602と同様のものである。
<コンテンツ復号処理装置3000>
図11は、コンテンツ復号処理装置3000の機能構成を示すブロック図である。
コンテンツ復号処理装置3000は、実施の形態1のコンテンツ復号処理装置2000に対して、チャンク情報取得部210をチャンク情報取得部910に変形し、新たにフィールド情報蓄積部920と、コンテンツヘッダ解析部930とを追加したものである。
フィールド情報蓄積部920は、コンテンツヘッダに保持されている、チャンク1050毎の開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103とを対応付けて記憶しておくための記憶領域であって、メモリブロック120の一部として実装されている。
コンテンツヘッダ解析部930は、入力バッファ201が保持するコンテンツヘッダから、チャンク毎に対応付けられている、開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103との組を全て読み出し、読み出した、開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103との組を全て、フィールド情報蓄積部920に対応付けて記録する機能を有する。
チャンク情報取得部910は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ1015から、チャンクサイズ1001と、チャンクデータサイズ1005とを取得して、さらに、フィールド情報蓄積部920から、入力バッファ201が保持するチャンクに対応するコンテンツタイプ1102と、フレーム番号1103とを取得して、チャンクの開始アドレスと、チャンクサイズ1001と、チャンクデータサイズ1005とを暗号サイズ算出部211に出力し、コンテンツタイプ1102を鍵設定部212に出力し、コンテンツタイプ1102と、フレーム番号1103とを連鎖判定部213に出力する機能を有する。
チャンク情報取得部910は、CPUA111又はCPUB112によってコンテンツヘッダが書き込まれると、入力バッファ201が保持するデータがコンテンツヘッダである旨のコンテンツヘッダ信号を暗号エンジン950に出力する機能を有する。
以上のように構成されたコンテンツ復号処理装置3000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機1000がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダを入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダが入力バッファ201に書き込まれると、コンテンツ復号処理装置3000はコンテンツ復号処理を開始する。
図12は、コンテンツ復号処理装置3000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置3000がコンテンツ復号処理を開始すると、チャンク情報取得部910はコンテンツヘッダ信号を出力し、演算判定部221は出力されたコンテンツヘッダ信号を受け取る。
さらに、コンテンツヘッダ解析部930は、入力バッファ201が保持するコンテンツヘッダから、チャンク毎に対応付けられている、開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103との組を全て読み出し、読み出した、開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103との組を全て、フィールド情報蓄積部920に対応付けて記録する(ステップS1200)。
演算判定部221は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダを読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダを出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部910は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ1015から、チャンクサイズ1001と、チャンクデータサイズ1005とを取得し(ステップS1202)、加えて、フィールド情報蓄積部920から、入力バッファ201が保持するチャンクに対応するコンテンツタイプ1102と、フレーム番号1103とを取得して、チャンクの開始アドレスと、チャンクサイズ1001と、チャンクデータサイズ1005とを暗号サイズ算出部211に出力し、コンテンツタイプ1102を鍵設定部212に出力し、コンテンツタイプ1102と、フレーム番号1103とを連鎖判定部213に出力する。
以後、ステップS1205〜ステップS1265までの処理は、実施の形態1のコンテンツ復号処理装置2000の動作における、ステップS805〜ステップS865までの処理と同じ処理であるので説明を省略する。
なお、ステップS1205はステップS805、ステップS1210はステップS810、ステップS1215はステップS815、ステップS1220はステップS820、ステップS1225はステップS825、ステップS1230はステップS830、ステップS1235はステップS835、ステップS1240はステップS840、ステップS1245はステップS845、ステップS1250はステップS850、ステップS1255はステップS855、ステップS1265はステップS865に対応する。
ステップS1265において、コンテンツ復号処理装置3000が待機を開始してから所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS1270:Yes)、再びステップS1202の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS1270:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置3000は、コンテンツ復号処理を終了する。
<実施の形態3>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
本実施の形態3に係るコンテンツ復号処理装置は、復号するコンテンツを構成する暗号ブロックが、連続する2つのチャンクに分割されて構成されることを許されているデータフォーマットとなっているコンテンツを復号することができるように、実施の形態1で説明したコンテンツ復号処理装置2000を変形したものである。
本実施の形態3に係るコンテンツ復号処理装置は、実施の形態1で説明したコンテンツ復号処理装置2000の一部である、チャンク情報取得部210と、チャンク間連鎖値保持部216と、連鎖値記録部228とを変形し、さらに、新たに端数処理制御部1300と前処理部1301と後処理部1302とを備えるように変形した形態であって、実施の形態1の再生機1000の暗号エンジン150を、暗号エンジン150の一部を変形することで得られた暗号エンジン950に置き替えるように変形した再生機上で実現される。
以下、実施の形態1で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
<構成>
<コンテンツのデータ構造>
本実施の形態3に係るコンテンツ復号処理装置4000が復号するコンテンツは、実施の形態1の暗号ブロックが、連続する2つのチャンクに分割されて構成されるように変形されたデータフォーマットとなっている。
図13(a)は、コンテンツ復号処理装置4000の復号対象であるコンテンツにおける、コンテンツデータの一部のデータ構造を示す図であって、図13(b)は、図13(a)の一部分を拡大した図である。
暗号化されたフレーム1410は、コンテンツタイプがVideoであって、フレーム番号がjとなっており、チャンク1430と、チャンク1440と、チャンク1460との3つのフレームに分割されている。
暗号化されたフレーム1420は、コンテンツタイプがAudio1であって、フレーム番号がkとなっており、チャンク1450とチャンク1470との2つのフレームに分割されている。
暗号化されたVideoフレーム1410は、の8つの暗号ブロック1401〜1408から構成されているが、これらのうち、暗号ブロック1401と暗号ブロック1402とは、チャンク1430に含まれ、暗号ブロック1404と暗号ブロック1405とは、チャンク1440に含まれ、暗号ブロック1407と暗号ブロック1408とは、チャンク1460に含まれている。
暗号ブロック1403は、前半部分と後半部分とに分割され、前半部分はチャンク1430に含まれ、後半部分はチャンク1440に含まれている。
暗号ブロック1404は、前半部分と後半部分とに分割され、前半部分はチャンク1440に含まれ、後半部分はチャンク1460に含まれている。
上で述べたとおり、コンテンツ復号処理装置4000の復号対象であるコンテンツにおける、コンテンツデータは、暗号ブロックが、連続する2つのチャンクに分割されて構成されることが許されている。
<コンテンツ復号処理装置4000>
図14は、コンテンツ復号処理装置4000の機能構成を示すブロック図である。
コンテンツ復号処理装置4000は、実施の形態1のコンテンツ復号処理装置2000に対して、チャンク情報取得部210をチャンク情報取得部1310に変形し、チャンク間連鎖値保持部216をチャンク間連鎖値保持部1316に変形し、連鎖値記録部228を連鎖値記録部1328に変形し、新たに端数処理制御部1300と前処理部1301と後処理部1302とを追加したものである。
チャンク情報取得部1310は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402を鍵設定部212に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部213と端数処理制御部1300とに出力する機能を有する。
チャンク情報取得部1310は、CPUA111又はCPUB112によってコンテンツヘッダ301が書き込まれると、入力バッファ201が保持するデータがコンテンツヘッダ301である旨のコンテンツヘッダ信号を暗号エンジン1350に出力する機能を有する。
チャンク間連鎖値保持部1316は、コンテンツタイプと、フレーム番号と、連鎖値と、チャンクの後尾の暗号ブロックのサイズである端数データサイズとを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図15は、チャンク間連鎖値保持部1316が記憶する情報を示す図である。
図15に示されるように、チャンク間連鎖値保持部1316は、コンテンツタイプ1801のそれぞれに、フレーム番号1802と、連鎖値1803と、端数データサイズ1804とを対応付けて記憶している。
ここで記憶されているフレーム番号1802は、対応するコンテンツタイプ1801において最後に復号されたフレームのフレーム番号であって、連鎖値1803は、フレーム番号602に属する最後に復号されたチャンクの後尾の暗号ブロックが復号された際に算定された連鎖値であって、端数データサイズ1804はフレーム番号602に属する最後に復号されたチャンクの後尾の暗号ブロックのサイズである。
なお、フレーム番号1802と、連鎖値1803と端数データサイズ1804との組は、暗号エンジン150によって、コンテンツタイプ1801毎に上書きされる。
端数処理制御部1300は、チャンク情報取得部1310からコンテンツタイプ402とフレーム番号403とを受け取ると、受け取ったコンテンツタイプ402とフレーム番号403との組に対応付けられてチャンク間連鎖値保持部1316に記憶されている端数データサイズ1804を読み出し、入力バッファ201に記憶されているチャンクの先頭の暗号ブロックのサイズと、後尾の暗号ブロックのサイズとを算出し、前処理部1301と、演算部222と、後処理部1302とを用いて端数処理を実行し、後尾の暗号ブロックのサイズを連鎖値記録部1328に出力する機能を有する。
この端数処理については、後程図面を用いて説明する。
チャンクの先頭の暗号ブロックのサイズは、暗号ブロックの単位ビット数である128からチャンク間連鎖値保持部1316から読みだした端数データサイズ1804を減算することで算出し、チャンク後尾の暗号ブロックのサイズは、暗号サイズ算出部1311から出力される、チャンクデータサイズ405にチャンク間連鎖値保持部1316から読み出した端数データサイズ1804を加算し、加算結果を暗号ブロックの単位ビット数である128で除算したときの余りとして算出する。
前処理部1301は、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの先頭の暗号ブロックを受け取ると、先頭の暗号ブロックのサイズと128ビットとの差分のビット数の0を受け取った暗号ブロックの先頭に付与して128ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する機能を有する。
また、前処理部1301は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロックを受け取ると、128ビットに不足するビット数の0を受け取った暗号ブロックの後尾に付与して128ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する機能を有する。
後処理部1302は、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの先頭の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ると、先頭の暗号ブロックのサイズと128ビットとの差分のビット数の00を暗号ブロックの先頭から削除して合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する機能を有する。
また、後処理部1302は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの後尾の暗号ブロック復号することで得られた復号された暗号ブロックを受け取ると、128ビットに不足するビット数を暗号ブロックの後尾から削除して合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する機能を有する。
連鎖値記録部1328は、暗号サイズ算出部1311が出力する暗号ブロックの数と、連鎖判定部213が出力するコンテンツタイプと、フレーム番号と、演算部222が出力する連鎖値と、端数処理制御部1300が出力する後尾の暗号ブロックのサイズとを入力され、演算部222が出力する連鎖値が入力されると、入力された連鎖値を、チャンク間連鎖値保持部1316かチャンク内連鎖値保持部227のいずれか一方に記録する機能を有する。
連鎖値記録部1328は、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、連鎖判定部213から入力されるコンテンツタイプと、フレーム番号と、端数データサイズとを関連付けて、チャンク間連鎖値保持部1316に上書きして記録し、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部227に上書きして記録し、演算判定部221に暗号ブロック要請信号を出力する機能を有する。
なお、連鎖値記録部1328は、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合において、端数データサイズが128ビット未満の場合には、チャンク間連鎖値保持部1316に上書きして記録する連鎖値は、演算部222から前回入力された連鎖値とする機能を有する。
ここで、チャンク間連鎖値保持部1316に書き込む端数データサイズとは、端数処理制御部1300から入力される後尾の暗号ブロックのサイズのことである。
連鎖値記録部1328は、演算部222から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
この連鎖値数カウンタは、暗号サイズ算出部1311から暗号ブロックの数が入力される毎にリセットされる。
連鎖値記録部1328は、演算部222から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
暗号エンジン1350は、実施の形態1の暗号エンジン150に対して、チャンク間連鎖値保持部216を1316に変形し、連鎖値記録部228を連鎖値記録部1328に変形し、新たに端数処理制御部1300と前処理部1301と後処理部1302とを追加したものである。
<端数処理>
以下図面を用いて、端数処理制御部1300が、前処理部1301と、演算部222と、後処理部1302とを用いて行う端数処理について説明する。
図16は、暗号ブロックの前半が欠落している場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。
前処理部1301は、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの先頭の暗号ブロックを受け取ると、受け取った暗号ブロック1501は、先頭の暗号ブロックのサイズと128ビットとの差分のビット数だけ先頭のビットが欠落していると判断し、欠落しているビット数の0からなる補完データ1502を付与して、128ビットの合成暗号ブロックを作成する。
前処理部1301は、作成した暗号ブロックを演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する。
演算部222は、入力された128ビットの暗号ブロックと、128ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部1302に出力する。
後処理部1302は、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持する先頭の暗号ブロックが復号された暗号ブロックを受け取ると、受け取った復号された暗号ブロックは、先頭の暗号ブロックのサイズと128ビットとの差分のビット数だけ先頭のビットが不要なビットであると判断し、不要なビットを暗号ブロックの先頭から削除して合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する。
図17は、暗号ブロックの後半が欠落している場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。
前処理部1301は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロックを受け取ると、受け取った暗号ブロック1501は、後尾の暗号ブロックのサイズと128ビットとの差分のビット数だけ後尾のビットが欠落していると判断し、欠落しているビット数の0からなる補完データ1502を付与して、128ビットの合成暗号ブロックを作成する。
前処理部1301は、作成した暗号ブロックを演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する。
演算部222は、入力された128ビットの暗号ブロックと、128ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部1302に出力する。
後処理部1302は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの後尾の暗号ブロックが復号された暗号ブロックを受け取ると、受け取った復号された暗号ブロックは、後尾の暗号ブロックのサイズと128ビットとの差分のビット数だけ後尾のビットが不要なビットであると判断し、不要なビットを暗号ブロックの後尾から削除して合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する。
図18は、暗号ブロックに欠落がない場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。
前処理部1301は、(1)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビットである場合において、演算判定部221から入力バッファ201が保持するチャンクの先頭の暗号ブロックを受け取るとき、(2)端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビットである場合において、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロックを受け取るとき、(3)演算判定部221から入力バッファ201が保持するチャンクの先頭と後尾の暗号ブロック以外の暗号ブロックを受け取るときに、受け取った暗号ブロックは、欠落が無いと判断し、受け取った暗号ブロックをそのまま演算部222に出力する。
演算部222は、入力された128ビットの暗号ブロックと、128ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部1302に出力する。
後処理部1302は、(1)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビットである場合において、演算部222から入力バッファ201が保持するチャンクの先頭の暗号ブロックが復号された暗号ブロックを受け取るとき、(2)端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビットである場合において、演算部222から入力バッファ201が保持するチャンクの後尾の暗号ブロックが復号された暗号ブロックを受け取るとき、(3)演算判定部221から入力バッファ201が保持するチャンクの先頭と後尾の暗号ブロック以外の暗号ブロックを受け取るときに、受け取った復号された暗号ブロックは、欠落が無いと判断し、受け取った復号された暗号ブロックをそのまま出力選択部229に出力する。
以上のように構成されたコンテンツ復号処理装置4000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ301を入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダが入力バッファ201に書き込まれると、コンテンツ復号処理装置3000はコンテンツ復号処理を開始する。
図19、図20は、コンテンツ復号処理装置4000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置4000がコンテンツ復号処理を開始すると、チャンク情報取得部910はコンテンツヘッダ信号を出力し、演算判定部221は出力されたコンテンツヘッダ信号を受け取る。
演算判定部221は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダ301を読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダ301を出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部1310は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して(ステップS1900)、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402を鍵設定部212に出力し、フレーム番号403を連鎖判定部213と端数処理制御部1300とに出力する。
暗号サイズ算出部1311は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とが入力されると、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数を計算し(ステップS1910)、チャンクの開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを演算判定部221に出力し、暗号ブロックの数を連鎖値記録部1328に出力する。
連鎖値記録部1328は、暗号サイズ算出部211から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部221は、暗号サイズ算出部1311から、チャンクの開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ311とパディング313とを読み出して出力選択部229に出力し、出力選択部229は入力されたチャンクヘッダ311とパディング313とを出力バッファ202に書き込み(ステップS1920)、連鎖値選択部226に初期値選択信号を出力する。
鍵設定部212は、チャンク情報取得部1310からコンテンツタイプ402を入力されると、鍵蓄積部214に、入力されたコンテンツタイプ402と関連付けられて記憶されている鍵502と初期値503とを読み出して、読み出した鍵502を鍵保持部223に出力し、読み出した初期値を初期値保持部224に出力し、鍵蓄積部214は、入力された鍵を上書きして記憶し、初期値保持部224は、入力された初期値を上書きして記憶する(ステップS1930)。
端数処理制御部1300は、チャンク情報取得部1310からコンテンツタイプ402とフレーム番号403とを受け取ると、受け取ったコンテンツタイプ402とフレーム番号403との組に対応付けられてチャンク間連鎖値保持部1316に記憶されている端数データサイズ1804を読み出し、入力バッファ201に記憶されているチャンクの先頭の暗号ブロックのサイズと、後尾の暗号ブロックのサイズとを算出し(ステップS1935)、算出した先頭の暗号ブロックのサイズを、前処理部1301と、後処理部1302とに出力し、算出した後尾の暗号ブロックのサイズを、連鎖値記録部1328に出力する。
連鎖判定部213は、チャンク情報取得部1310から、コンテンツタイプ402と、フレーム番号403とを入力されると、入力バッファ201に保持されているチャンクが暗号連鎖継続中であるか否かを判定するために、入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部1316に関連付けられて記憶されているか否かを調べて(ステップS1940)、記憶されている場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中であると判断し(ステップS1940:Yes)、コンテンツタイプ402とフレーム番号403とを連鎖値記録部1328に出力し、暗号連鎖信号とコンテンツタイプ402とを初期値選択部225に出力する。
初期値選択部225は、連鎖判定部213から、暗号連鎖継続信号と、コンテンツタイプ402との組みを受け取ると、チャンク間連鎖値保持部1316から、受け取ったコンテンツタイプ402と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部221から初期値選択信号を受け取っているので、初期値選択部225から入力される連鎖値を選択して、演算部222に出力する(ステップS1950)。
次に演算判定部221は、入力バッファ201に記憶されている暗号チャンクの先頭の暗号ブロックを読み出して、前処理部1301に出力する。
前処理部1301は、暗号ブロックが分割されているか否かを判断するために、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満であるか否かを判断し(ステップS1970)、128ビット未満である場合に、暗号ブロックが分割されていると判断し(ステップS1970:Yes)、128ビットに不足するビット数の0を受け取った暗号ブロックの先頭に付与して128ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する。
ステップS1940において、入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部1316に関連付けられて記憶されていない場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中でないと判断し(ステップS1940:No)、コンテンツタイプ402とフレーム番号403とを連鎖値記録部228に出力し、暗号終了信号を初期値選択部225に出力する。
初期値選択部225は、連鎖判定部213から、暗号連鎖終了信号を受け取ると、初期値保持部224が保持する初期値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部221から初期値選択信号を受け取っているので、初期値選択部225から初期値が入力されると、入力された初期値を演算部222で使用する連鎖値として演算部222に出力する(ステップS1960)。
次に演算判定部221は、入力バッファ201に記憶されている暗号チャンクの先頭の暗号ブロックを読み出して、前処理部1301に出力し、前処理部1301は、受け取った暗号ブロックをそのまま演算部222に出力する。
ステップS1980又はステップS1960の処理が終わると、演算部222は、前処理部1301から暗号チャンクの先頭の暗号ブロックを受け取る。
演算部222は、鍵保持部223に記録されている鍵と、連鎖値選択部から出力される連鎖値とを用いて、受け取った暗号ブロックを復号して後処理部1302に出力し、復号の際に算定した次の連鎖値を連鎖値記録部228に出力する(ステップS2000)。
後処理部1302は、(1)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの先頭の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ったとき又は、(2)端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの後尾の暗号ブロック復号することで得られた復号された暗号ブロックを受け取ったときに、受け取った復号された暗号ブロックが、前処理部1301によって補完データを付与された暗号ブロックが復号されたものであると判断し(ステップS2000:Yes)、受け取った復号された暗号ブロックの、付与された補完データに対応する部分を削除した合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する(ステップS2010)。
後処理部1302は、(1)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビットである場合、(2)端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビットである場合、(3)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの先頭の暗号ブロックと後尾の暗号ブロック以外の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ったときに、受け取った復号された暗号ブロックが、前処理部1301によって補完データを付与されてない暗号ブロックが復号されたものであると判断し(ステップS2000:No)、受け取った復号された暗号ブロックをそのまま出力選択部229に出力する。
ステップS2010又はステップS2005:Noの処理が終わると、出力選択部229は、後処理部1302から復号された暗号ブロックを受け取る。
出力選択部229は、演算部222から復号された暗号ブロックが入力されると、入力された復号された暗号ブロックを、出力バッファ202に書き込む。
連鎖値記録部228は、演算部222から連鎖値が入力されると、連鎖値数カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数と、暗号サイズ算出部から入力された暗号ブロックの数とを比較することで、演算部222から入力された連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定する(ステップS2015)。
ステップS2015において、新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し(ステップS2015:Yes)、演算部222から入力された連鎖値をチャンク内連鎖値保持部に上書きして記録し(ステップS2020)、連鎖値記録部228は、演算判定部221に暗号ブロック要請信号を出力する。
演算判定部221は、連鎖値記録部228から暗号ブロック要請信号を受け取ると、次の暗号ブロックを前処理部1301に出力し連鎖値選択信号を連鎖値選択部226に出力する。
前処理部1301は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロックを受け取ったときに、後続の暗号ブロックが分割されていると判断し(ステップS2025:Yes)、128ビットに不足するビット数の0を受け取った暗号ブロックの先頭に付与して128ビットの合成暗号ブロックを作成し(ステップS2030)、作成した合成暗号ブロックを、演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する。
前処理部1301は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビットである場合、又は、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロック以外の暗号ブロックを受け取った場合には、後続の暗号ブロックが分割されていないと判断し(ステップS2025:No)、演算判定部221から受け取った暗号ブロックをそのまま演算部222に出力する。
連鎖値選択部226は、連鎖値選択信号を受信すると、チャンク内連鎖値保持部227が保持する連鎖値を読み出して演算部222に出力する(ステップS2035)。
ステップS2035の処理が終わると、再びステップS2000の処理を開始する。
ステップS2015において、新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断し(ステップS2015:No)、端数データサイズが128ビットであるときには、演算部222から入力された連鎖値を、連鎖判定部213から入力されたコンテンツタイプと、フレーム番号と、端数データサイズとを関連付けて、チャンク間連鎖値保持部1316に上書きして記録し、端数データサイズが128ビット未満の場合には、チャンク間連鎖値保持部1316に上書きして記録する連鎖値は、演算部222から前回入力された連鎖値を記録する(ステップS2040)。
ステップS2040の処理が終わると、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれるまで、コンテンツ復号処理装置4000は待機する(ステップS2050)。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS2055:Yes)、再びステップS1900の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS2055:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置2000は、コンテンツ復号処理を終了する。
<実施の形態4>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
本実施の形態2に係るコンテンツ復号処理装置は、実施の形態1のコンテンツ復号処理装置2000の復号対象であるコンテンツに含まれるチャンク310のチャンクヘッダ311の一部が変形し、チャンクヘッダに鍵情報と初期値情報とを含んでいるデータフォーマットであるコンテンツを復号することができるように、実施の形態1で説明したコンテンツ復号処理装置2000を変形したものである。
本実施の形態4に係るコンテンツ復号処理装置は、実施の形態1で説明したコンテンツ復号処理装置2000の一部である、チャンク情報取得部210と、鍵蓄積部214と、鍵設定部212とを変形し、さらに、新たに鍵生成部を備えるように変形した形態であって、コンテンツ復号処理装置2000と同様に、実施の形態1の再生機1000上で実現される。
以下、実施の形態1で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
<構成>
<コンテンツのデータ構造>
本実施の形態4に係るコンテンツ復号処理装置5000が復号するコンテンツは、実施の形態1のコンテンツ300を、実施の形態1のチャンクヘッダ311に、新たに鍵情報2205と、初期値情報2206とが加わっているように変形したコンテンツである。
図21は、本実施の形態4に係るコンテンツ復号処理装置3000の復号対象であるコンテンツを構成するチャンク2250のデータ構成を示す構成図である。
チャンク2250は、チャンクヘッダ1015、チャンクデータ1010、パディング1020から構成されている。
チャンクヘッダ2200は、暗号化されていないデータであって、チャンクのサイズを示す情報を含むチャンクサイズ2201、コンテンツタイプを示す情報を含むコンテンツタイプ2202、フレーム番号を示す情報を含むフレーム番号2203、デコードに使用する情報を含むデコード用ヘッダ情報2204、鍵を生成するための鍵情報2205、初期値を生成するための初期値情報2206、チャンクデータのサイズを示す情報を含むチャンクデータサイズ2207からなる。
このうち、チャンクサイズ2201、コンテンツタイプ2202、フレーム番号2203、デコード用ヘッダ情報2204、チャンクデータサイズ2207は、それぞれ、実施の形態1の、チャンクサイズ401、コンテンツタイプ402、フレーム番号403、デコード用ヘッダ情報404、チャンクデータサイズ405と同様のものである。
また、チャンクヘッダ2200の構成要素である、チャンクサイズ2201、コンテンツタイプ2202、フレーム番号2203、デコード用ヘッダ情報2204、鍵情報2205、初期値情報2206、チャンクデータサイズ2207のそれぞれのビット長と出現順番とは固定である。
ここで、鍵情報2205は自らを含むチャンクの属する暗号フレームを復号するための鍵を生成するための情報であって、初期値情報2206は、自らを含むチャンクの属する暗号フレームを復号するための初期値を生成するための情報である。
<コンテンツ復号処理装置5000>
図22は、コンテンツ復号処理装置5000の機能構成を示すブロック図である。
コンテンツ復号処理装置5000は、実施の形態1のコンテンツ復号処理装置2000に対して、チャンク情報取得部210をチャンク情報取得部2110に変形し、鍵蓄積部214を鍵蓄積部2114に変形し、鍵設定部212を鍵設定部2112に変形し、新たに鍵生成部2101を追加したものである。
チャンク情報取得部2110は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ2200から、チャンクサイズ2201と、チャンクデータサイズ2207と、コンテンツタイプ2202と、フレーム番号2203と、鍵情報2205と、初期値情報2206とを取得して、チャンクの開始アドレスと、チャンクサイズ2201と、チャンクデータサイズ2207とを暗号サイズ算出部211に出力し、コンテンツタイプ2202と、フレーム番号2203とを鍵設定部212と連鎖判定部213とに出力し、コンテンツタイプ2202と、フレーム番号2203と、鍵情報2205と、初期値情報2206とを鍵生成部2101に出力する機能を有する。
チャンク情報取得部2110は、CPUA111又はCPUB112によってコンテンツヘッダ301が書き込まれると、入力バッファ201が保持するデータがコンテンツヘッダ301である旨のコンテンツヘッダ信号を暗号エンジン150に出力する機能を有する。
鍵生成部2101は、チャンク情報取得部2110から、コンテンツタイプ2202と、フレーム番号203と、鍵情報2205と、初期値情報2206とを受け取ると、受け取った鍵情報2205から鍵を作成し、初期値情報2206から初期値を作成し、鍵蓄積部2114に、受け取ったコンテンツタイプ2202と、受け取ったフレーム番号203と、生成した鍵と、生成した初期値とを関連付けて記録する機能を有する。
また、鍵生成部2101は、鍵情報2205が暗号化されている場合には復号し、初期値情報2206が暗号化されている場合には復号する機能を有する。
鍵蓄積部2114は、コンテンツタイプと、フレーム番号と、鍵と、初期値とを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図23は、鍵蓄積部2114が記憶する情報を示す図である。
図23に示されるように、鍵蓄積部2114は、コンテンツタイプ2300と、フレーム番号2301と、鍵2302と、初期値2303とを関連付けて記憶している。
鍵設定部2112は、チャンク情報取得部2110からのコンテンツタイプ2202とフレーム番号2203とを入力されると、鍵蓄積部2114から、入力されたコンテンツタイプ2202とフレーム番号2203の組と関連付けられて記憶されている鍵2302と初期値2303とを読み出して、暗号エンジン150に出力する機能を有する。
以上のように構成されたコンテンツ復号処理装置5000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機1000がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダを入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの先頭のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダが入力バッファ201に書き込まれると、コンテンツ復号処理装置5000はコンテンツ復号処理を開始する。
図24は、コンテンツ復号処理装置2000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置5000がコンテンツ復号処理を開始すると、チャンク情報取得部2110はコンテンツヘッダ信号を出力し、演算判定部221は出力されたコンテンツヘッダ信号を受け取る。
演算判定部221は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダを読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダを出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部2110は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ2200から、チャンクサイズ2201と、チャンクデータサイズ2207と、コンテンツタイプ2202と、フレーム番号2203と、鍵情報2205と、初期値情報2206とを取得して(ステップS2400)、チャンクの開始アドレスと、チャンクサイズ2201と、チャンクデータサイズ2207とを暗号サイズ算出部211に出力し、コンテンツタイプ2202と、フレーム番号2203とを鍵設定部2112と連鎖判定部213とに出力し、コンテンツタイプ2202と、フレーム番号2203と、鍵情報2205と、初期値情報2206とを鍵生成部2101に出力する。
鍵生成部2101は、チャンク情報取得部2110から、コンテンツタイプ2202と、フレーム番号203と、鍵情報2205と、初期値情報2206とを受け取ると、受け取った鍵情報2205から鍵を作成し、初期値情報2206から初期値を作成し、鍵蓄積部2114に、受け取ったコンテンツタイプ2202と、受け取ったフレーム番号2203と、生成した鍵と、生成した初期値とを関連付けて記録する(ステップS2402)。
暗号サイズ算出部211は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ2201と、チャンクデータサイズ2207とが入力されると、パディング2230の開始アドレスと、チャンクの終了アドレスと、チャンクデータ2220に含まれる暗号ブロックの数を計算し(ステップS2405)、チャンクの開始アドレスと、パディング2230の開始アドレスと、チャンクの終了アドレスとを演算判定部221に出力し、暗号ブロックの数を連鎖値記録部228に出力する。
連鎖値記録部228は、暗号サイズ算出部211から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部221は、暗号サイズ算出部211から、チャンクの開始アドレスと、パディング2230の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ2200とパディング2230とを読み出して出力選択部229に出力し、出力選択部229は入力されたチャンクヘッダ2200とパディング2230とを出力バッファ202に書き込み(ステップS2410)、連鎖値選択部226に初期値選択信号を出力する。
鍵設定部2112は、チャンク情報取得部210からコンテンツタイプ2202とフレーム番号2203を入力されると、鍵蓄積部214に、入力されたコンテンツタイプ2202とフレーム番号2203との組と関連付けられて記憶されている鍵2302と初期値2303とを読み出して、読み出した鍵2302を鍵保持部223に出力し、読み出した初期値2303を初期値保持部224に出力し、鍵蓄積部214は、入力された鍵を上書きして記憶し、初期値保持部224は、入力された初期値を上書きして記憶する(ステップS2415)。
以降、ステップS2420〜ステップS2465までの処理は、実施の形態1のコンテンツ復号処理装置2000の動作における、ステップS820〜ステップS865までの処理と同じ処理であるので説明を省略する。
なお、ステップS2420はステップS820、ステップS2425はステップS825、ステップS2430はステップS830、ステップS2435はステップS835、ステップS2440はステップS840、ステップS2445はステップS845、ステップS2450はステップS850、ステップS2455はステップS855、ステップS2465はステップS865に対応する。
ステップS2465において、コンテンツ復号処理装置5000が待機を開始してから所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS2470:Yes)、再びステップS2400の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS2470:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置5000は、コンテンツ復号処理を終了する。
<実施の形態5>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
本実施の形態5に係るコンテンツ復号処理装置は、実施の形態1のコンテンツ復号処理装置2000の復号対象であるコンテンツと同様のフォーマットのコンテンツを復号するコンテンツ復号処理装置であって、復号対象のコンテンツから、全てのチャンクのチャンクヘッダの情報を読み取って記録する第1処理部と、第1処理部に記憶されているチャンクヘッダの情報を用いてコンテンツを復号する第2処理部とから構成されるように、実施の形態1で説明したコンテンツ復号処理装置2000を変形したものである。
本実施の形態5に係るコンテンツ復号処理装置は、実施の形態1で説明したコンテンツ復号処理装置2000の一部である、チャンク情報取得部210と、暗号サイズ算出部211と、連鎖判定部213と、鍵設定部212と、演算判定部221と、初期値選択部225と、連鎖値記録部228とを変形し、さらに、暗号情報蓄積部と、フレーム番号蓄積部とを備えるように変形した形態であって、実施の形態1の再生機1000の暗号エンジン150を、暗号エンジン150の一部を変形することで得られた暗号エンジン2550に置き替えるように変形した再生機上で実現される。
以下、実施の形態1で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
<構成>
<コンテンツ復号処理装置6000>
図25は、コンテンツ復号処理装置6000の機能構成を示すブロック図である。
コンテンツ復号処理装置6000は、実施の形態1のコンテンツ復号処理装置2000に対して、チャンク情報取得部210をチャンク情報取得部2510に変形し、暗号サイズ算出部211を暗号サイズ算出部2511に変形し、連鎖判定部213を連鎖判定部2413に変形し、鍵設定部212を鍵設定部2512に変形し、演算判定部221を演算判定部2521に変形し、初期値選択部225を初期値選択部2525に変形し、連鎖値記録部228を連鎖値記録部2528に変形し、さらに、暗号情報蓄積部2530と、フレーム番号蓄積部2522とを追加したものである。
チャンク情報取得部2510は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部213に出力し、コンテンツタイプ402と、フレーム番号403とを関連付けて暗号情報蓄積部2530に記録する機能を有する。
暗号サイズ算出部2511は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを入力されると、チャンクデータ312の開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数を計算し、計算したチャンクデータの開始アドレスと、パディングの開始アドレスと、チャンクの終了アドレスと、暗号ブロックの数とを、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する機能を有する。
チャンクデータ312の開始アドレスは、チャンクの開始アドレスと固定長であるチャンクヘッダ311のサイズを加算することで算出され、パディング313の開始アドレスは、チャンクヘッダ311の開始アドレスにとチャンクデータサイズ405とを加算することで算出され、チャンクの終了アドレスは、チャンクの開始アドレスとチャンクサイズ401とを加算することで算出され、暗号ブロックの数は、チャンクデータサイズ405を暗号ブロックの単位ビット数である128で除算することで算出される。
フレーム番号蓄積部2522は、コンテンツタイプとフレーム番号とを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図26は、フレーム番号蓄積部2522が記憶する情報を示す図である。
図26に示されるように、フレーム番号蓄積部2522は、Videoと、Audio1と、Audio2との3つのコンテンツタイプ2701のそれぞれに、フレーム番号2702を対応付けて記憶している。
ここに記憶されているフレーム番号2702は、コンテンツタイプ2701のそれぞれにおいて、チャンク情報取得部2510によって取得されたフレーム番号のうち、最新のフレーム番号である。
連鎖判定部2513は、チャンク情報取得部2510からコンテンツタイプ402と、フレーム番号403との組み合わせが入力されると、チャンク情報取得部2510から入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、フレーム番号蓄積部2522に関連付けられて記憶されているか否かを調べて、記憶されている場合には、入力バッファ201に保持されてチャンクが暗号連鎖継続中であると判断し、記憶されていない場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中でないと判断する機能を有する。
連鎖判定部2513は、暗号連鎖中であると判断した場合には、暗号連鎖中の旨を、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、暗号連鎖中でないと判断した場合には、フレーム番号蓄積部2522に記憶されている、チャンク情報取得部2510から入力されるコンテンツタイプと同じコンテンツタイプ2701のフレーム番号2702を更新し、暗号連鎖終了の旨を、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する機能を有する。
暗号情報蓄積部2530は、復号対象のコンテンツを構成する全てのチャンクについての、開始アドレスと、コンテンツタイプと、フレーム番号と、チャンクデータ開始アドレスと、暗号ブロック数と、パディング開始アドレスと、チャンク終了アドレスと、連鎖の有無とを対応付けて、チャンクの順番に記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図27は、暗号情報蓄積部2530が記憶する情報を示す図である。
図27に示されるように、暗号情報蓄積部2530は、復号対象のコンテンツのチャンクの順番に、各チャンクの開始アドレス2601と、コンテンツタイプ2602と、フレーム番号2603と、チャンクデータ開始アドレス2604と、暗号ブロック数2605と、パディング開始アドレス2606と、チャンク終了アドレス2607と、連鎖の有無2608とを記憶している。
鍵設定部2512は、暗号情報蓄積部2530から、チャンクの順に順次コンテンツタイプ2602を読み出して、鍵蓄積部214から、読み出したコンテンツタイプ2602と関連付けられて記憶されている鍵502と初期値503とを読み出して、暗号エンジン150に出力する機能を有する。
演算判定部2521は、暗号情報蓄積部2530から、チャンクの順に順次チャンクの開始アドレス2601と、チャンクデータ開始アドレス2604と、パディング開始アドレス2606と、チャンク終了アドレス2607とを用いて、入力バッファ201に保持されているチャンクから、チャンクヘッダ311と、パディング313とを読み出して出力選択部229に出力し、チャンクデータ312を読み出して、暗号ブロック単位で演算部222に出力し、演算部222に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックである場合に、初期値選択信号を連鎖値選択部226に出力し、演算部222に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックでない場合に、連鎖値選択信号を連鎖値選択部226に出力する機能を有する。
なお、チャンクデータの先頭の暗号ブロックであるか否かは、チャンクデータの開始アドレスを用いて判断する。
初期値選択部2525は、暗号情報蓄積部2530から、チャンクの順に順次連鎖の有無2608と、コンテンツタイプ2602の組みを読み出し、読み出した連鎖の有無2608が連鎖中の旨を示すものであった場合に、チャンク間連鎖値保持部216から、読み出したコンテンツタイプ2602と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力し、読み出した連鎖の有無2608が連鎖中の旨を示すものでなかった場合に、初期値保持部224が保持している初期値を読み出して連鎖値選択部226に出力する機能を有する。
連鎖値記録部2528は、暗号情報蓄積部2530から、チャンクの順に順次暗号ブロック数2605と、コンテンツタイプ2602と、フレーム番号2603を読み出し、演算部222が出力する連鎖値が入力された場合に、入力された連鎖値を、チャンク間連鎖値保持部216かチャンク内連鎖値保持部227のいずれか一方に記録する機能を有する。
連鎖値記録部2528は、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、暗号情報蓄積部2530から読み出したコンテンツタイプ2602と、フレーム番号2603と関連付けて、チャンク間連鎖値保持部216に上書きして記録し、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部227に上書きして記録し、演算判定部2521に暗号ブロック要請信号を出力する機能を有する。
連鎖値記録部228は、演算部222から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
この連鎖値数カウンタは、暗号情報蓄積部2530から暗号ブロック数2605を読み出す毎にリセットされる。
連鎖値記録部228は、演算部222から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
暗号エンジン2550は、実施の形態1の暗号エンジン150に対して、演算判定部221を演算判定部2521に変形し、初期値選択部225を初期値選択部2525に変形し、連鎖値記録部228を連鎖値記録部2528に変形したものである。
第1処理部2501は、チャンク情報取得部2510と、暗号サイズ算出部2511と、連鎖判定部2513と、暗号情報蓄積部2530と、フレーム番号蓄積部2522とから構成され、CPUA111によって制御される。
第1処理部2501は、コンテンツに含まれる全てのチャンクのチャンクヘッダから、コンテンツの復号に必要な情報をチャンク順に取得し、暗号情報蓄積部2530に蓄積するチャンクデータ蓄積処理を行なう。
第2処理部2502は、鍵設定部2512と、鍵蓄積部214と、チャンク間連鎖値保持部216と、暗号エンジン2550とから構成され、CPUB112によって制御される。
第2処理部2502は、第1処理部の暗号情報蓄積部2530からコンテンツの復号に必要な情報を読み出し、コンテンツを復号するコンテンツ復号処理を行なう。
以上のように構成されたコンテンツ復号処理装置6000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機1000がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ301を入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダ301が入力バッファ201に書き込まれると、コンテンツ復号処理装置6000の第1処理部2501は、コンテンツに含まれるチャンクのチャンクヘッダから、コンテンツの復号に必要な情報をチャンク順に取得し、暗号情報蓄積部2530に蓄積する。
第1処理部2501が、チャンクデータ蓄積処理を終了すると、再びCPUA111又はCPUB112は、コンテンツヘッダ301を入力バッファ201に書き込み、その後、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
2度目にコンテンツヘッダ301が入力バッファに書き込まれると、コンテンツ復号処理装置6000の第2処理部2502はコンテンツ復号処理を開始する。
図28と図29とは、コンテンツ復号処理装置6000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置6000の第1処理部2501がチャンクヘッダの情報読み取り処理を開始すると、チャンク情報取得部2510はコンテンツヘッダ信号を出力し、演算判定部2521は出力されたコンテンツヘッダ信号を受け取る。
演算判定部2521は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダ301を読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダ301を出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部2510は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して(ステップS2800)、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部2513に出力し、コンテンツタイプ402と、フレーム番号403とを関連付けて暗号情報蓄積部2530に記録する。
暗号サイズ算出部2511は、チャンク情報取得部210からの、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを入力とし、チャンクデータ312の開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数を計算する(ステップS2810)。
連鎖判定部2513は、チャンク情報取得部210から入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、フレーム番号蓄積部2522に関連付けられて記憶されているか否かを調べて(ステップS2820)、記憶されていない場合には、フレーム番号蓄積部2522に記憶されている、チャンク情報取得部210から入力されるコンテンツタイプと同じコンテンツタイプ2701のフレーム番号2702を更新する。
暗号サイズ算出部2511は、計算したチャンクデータの開始アドレスと、パディングの開始アドレスと、チャンクの終了アドレスと、暗号ブロックの数とを、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、連鎖判定部2513は、ステップS2820において、記憶されている場合には、暗号連鎖中の旨を、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、記録されていない場合には、暗号連鎖終了の旨を、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する(ステップS2840)。
ステップS2840の処理が終わると、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれるまで、コンテンツ復号処理装置2000は待機する(ステップS2850)。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS2850:Yes)、再びステップS800の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS2850:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、第1処理部2501は、チャンクデータ蓄積処理を終了する。
第1処理部2501が、チャンクデータ蓄積処理を終了すると、再びCPUA111又はCPUB112は、コンテンツヘッダ301を入力バッファ201に書き込み、その後、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
2度目にコンテンツヘッダ301が入力バッファに書き込まれると、コンテンツ復号処理装置6000の第2処理部2502はコンテンツ復号処理を開始する。
コンテンツ復号処理装置2000がコンテンツ復号処理を開始すると、演算判定部2521は、入力バッファ201からコンテンツヘッダ301を読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダ301を出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、演算判定部2521は、暗号情報蓄積部2530から、書き込まれたチャンクに対応する、開始アドレス2601と、パディング開始アドレス2606と、チャンク終了アドレス2607とを読み出し、鍵設定部2512は、暗号情報蓄積部2530から、書き込まれたチャンクに対応する、コンテンツタイプ2602を読み出し、初期値選択部2525は、暗号情報蓄積部2530から、書き込まれたチャンクに対応する、連鎖の有無2608と、コンテンツタイプ2602とを読み出し、連鎖値記録部2528は、暗号情報蓄積部2530から、書き込まれたチャンクに対応する、暗号ブロック数2605と、コンテンツタイプ2602と、フレーム番号2603を読み出し、連鎖値数カウンタの計測する連鎖値の数をリセットする(ステップS2900)。
演算判定部2521は、暗号情報蓄積部2530から、開始アドレス2601と、パディング開始アドレス2606と、チャンク終了アドレス2607とを読み出すと、入力バッファからチャンクヘッダ311とパディング313とを読み出して出力選択部229に出力し、出力選択部229は入力されたチャンクヘッダ311とパディング313とを出力バッファ202に書き込み(ステップS2910)、連鎖値選択部226に初期値選択信号を出力する。
鍵設定部2512は、暗号情報蓄積部2530からコンテンツタイプ2602を入力されると、鍵蓄積部214に、入力されたコンテンツタイプ2602と関連付けられて記憶されている鍵502と初期値503とを読み出して、読み出した鍵502を鍵保持部223に出力し、読み出した初期値503を初期値保持部224に出力し、鍵蓄積部214は、入力された鍵を上書きして記憶し、初期値保持部224は、入力された初期値を上書きして記憶する(ステップS2915)。
初期値選択部2525は、暗号情報蓄積部2530から、チャンクの順に順次連鎖の有無2608と、コンテンツタイプ2602の組みを読み出す(ステップS2920)と、読み出した連鎖の有無2608が連鎖中の旨を示すものであった場合に(ステップS2920:Yes)、チャンク間連鎖値保持部216から、読み出したコンテンツタイプ2602と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部2521から初期値選択信号を受け取っているので、初期値選択部2525から入力される連鎖値を選択して、演算部222に出力する(ステップS2925)。
ステップS2920において、読み出した連鎖の有無2608が連鎖中の旨を示すものでなかった場合に(ステップS2920:No)、初期値保持部224が保持している初期値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部2521から初期値選択信号を受け取っているので、初期値選択部2525から初期値が入力されると、入力された初期値を演算部222で使用する連鎖値として演算部222に出力する(ステップS2930)。
ステップS2925又はステップS2930の処理が終わった後のステップS2935〜ステップS2965までの処理は、実施の形態1のコンテンツ復号処理装置2000の動作における、ステップS835〜ステップS865までの処理と同じ処理であるので説明を省略する。
なお、ステップS2935はステップS835、ステップS2940はステップS840、ステップS2945はステップS845、ステップS2950はステップS850、ステップS2955はステップS855、ステップS2965はステップS865に対応する。
ステップS2965において、第2処理部2502が待機を開始してから所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS2970:Yes)、再びステップS1202の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS2970:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、第2処理部2502はコンテンツ復号処理を終了し、コンテンツ復号処理装置6000は、コンテンツ復号処理を終了する。
<補足>
以上、本発明に係るコンテンツ復号処理装置の一実施形態として、復号対象のデータストリームのデータ構造が、第1種暗号フレーム(例えば暗号化されたビデオフレーム)に属する連鎖する暗号ブロック列からなる暗号チャンク間に、第2種暗号フレーム(例えば暗号化されたオーディオフレーム)に属する暗号ブロック列からなる暗号チャンクが存在しているデータ構造であっても、データストリームを正しく復号することができるコンテンツ復号処理装置について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示したとおりのコンテンツ復号処理装置に限られないことはもちろんである。
(1)実施の形態1において、CPUブロック110はCPUA111とCPUB112の2つのCPUから構成されるとしたが、CPUの数は1つでも構わないし、3つ以上であっても構わないし、デュアルCPUコア機能を持った1つのプロセッサであっても構わないし、クワッドCPUコア機能を持った1つのプロセッサであっても構わない。
(2)実施の形態1において、ROM121はROMであるとしたが、読み書き可能な不揮発性メモリが含まれていても構わない。
(3)実施の形態1において、暗号エンジン150はDSPであるとしたが、必ずしもDSPである必要はなく、例えばCPUA111又はCPUB112がソフトウエアを実行することで実現される構成であっても構わないし、CPUA111、CPUB112以外のCPUがソフトウエアを実行することで実現される構成であっても構わないし、ASICやFPGA等で実現される構成であっても構わない。
同様に、実施の形態1において、AVデコーダ160はDSPであるとしたが、必ずしもDSPである必要はなく、例えばCPUA111又はCPUB112がソフトウエアを実行することで実現される構成であっても構わないし、CPUA111、CPUB112以外のCPUがソフトウエアを実行することで実現される構成であっても構わないし、ASICやFPGA等で実現される構成であっても構わない。
(4)実施の形態1において、周辺デバイスブロック130は、ハードディスク装置131と、ハードディスク装置インターフェース141と、読取書込装置132と、読取書込装置インターフェース142と、出力装置133と、出力装置インターフェース143と、入力装置134と、入力装置インターフェース144と、通信装置135とから構成されているとしたが、少なくとも、出力装置133と、出力装置インターフェース143と、入力装置134と、入力装置インターフェース144とを備えていれば、これら全てを備えている構成ではなくても構わない。
(5)実施の形態1において、AVデコーダ160は、MPEG2デコード機能、MPEG4デコード機能、MPEG4−AVCデコード機能を有するとしたが、これらの符号化方式で符号化されたデータ以外のデータをデコードする機能を有していても構わない。
(6)実施の形態1において、出力装置133は、LCD(Liquid Crystal Display)と、スピーカとで構成されているとしたが、LCDの替わりに、PDP(Plasma Display Panel)や、有機EL(Electro-Luminescence)ディスプレイや、ブラウン管であっても構わない。
(7)実施の形態1において、再生機1000は、パーソナルコンピュータであるとしたが、コンテンツを復号する機能を持つ物であれば、例えば、汎用コンピュータ、テレビ受像機、DVD再生機、DVD録再生機、BD再生機、BD録再生機、PDA(Personal Digital Assistance)、又は、携帯通信端末等であっても構わない。
(8)実施の形態1において、入力装置134は、ユーザによる操作を受け付けるキーボードと、マウスとから構成されるとしたが、ユーザによる再生機1000の操作コマンドを受け付ける機能を有するものであれば、例えば、ユーザによる操作を受け付ける入力ボタンや、ユーザが操作するリモートコントローラからの信号を受信する受信装置等であっても構わない。
(9)実施の形態1において、復号対象のコンテンツは、暗号化されたVideoESと、暗号化されたAudio1ESと、暗号化されたAudio2ESとが多重化されたものであるとしたが、少なくとも互いに異なる2つのESが多重化されたものであれば、これらのES以外のESが多重化されたものであっても構わない。
例えば、Video1ESと、Video2ESと、Video3ESと、AudeioESとが多重化されたものである場合等が考えられる。
また、暗号化されたVideoESは、撮影された映像がMPEG4−AVC方式で符号化され、符号化されることで得られた多数のVideoフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたものであるとしたが、例えば、MPEG2、MPEG4、Motion JPEG(Joint Photographic Experts Group)等のMPEG4−AVC方式以外の方式で符号化されていても構わない。
さらに、暗号化されたAudio1ES、Audio2ESは、撮影された音声がMPEG4−AVC方式で符号化され、符号化されることで得られた多数のAudioフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたものであるとしたが、例えば、MPEG2、MPEG4等のMPEG4−AVC方式以外の方式で符号化されていても構わない。
(10)実施の形態1において、チャンクヘッダの構成要素のそれぞれは、ビット長と出現順番が固定であるとしたが、ビット長を示す情報があればビット長は固定でなくても構わないし、順番を示す情報があれば順番は固定でなくても構わない。
(11)実施の形態1において、チャンクデータは3つの暗号ブロックからなるとしたが、3つ以外の数の暗号ブロックからなるとしても構わない。
(12)実施の形態1において、暗号ブロックは、AES暗号方式を用いてCTRモードで暗号連鎖化されたものであるとしているが、例えば、CBC(Cipher Block Chaining)モードといったCRTモード以外のモードで暗号化されたものであっても構わないし、例えば、DES(Data Encryption Standard)暗号方式といったAES暗号方式以外の暗号方式で暗号化されたものであっても構わない。
また、暗号ブロックのビット長は128ビット、連鎖値のビット長は128ビット、鍵のビット長は128ビットであるとしたが、これらのビット長は、暗号ブロックの暗号方式に応じて、128ビット以外のビット長であるとしても構わない。
例えば、暗号ブロックの暗号方式がDES暗号方式である場合には、暗号ブロックのビット長は56ビット、連鎖値のビット長は56ビット、鍵のビット長は56ビットとなる。
(13)実施の形態1において、演算部222は、AES暗号回路701を備える構成としているが、暗号ブロックの暗号化方式に応じて、例えばDES暗号といったAES暗号以外の暗号方式の暗号回路であっても構わない。
(14)実施の形態1において、インクリメンタ703は入力される連鎖値のうち、下位32ビットの部分のみを1だけインクリメントして次の連鎖値を算定するとしたが、例えば、下位64ビットの部分のみを1だけインクリメントして次の連鎖値を算定するといったように、下位32ビット以外の部分を1だけインクリメントするとしても構わないし、例えば、2や−1といった1以外の数をインクリメントするとしても構わない。
(15)実施の形態1において、復号対象のコンテンツのフォーマットについて図を用いて説明したが、復号対象のコンテンツのファイル形式は、説明したフォーマットに違反していない形式の、例えば、ASF(Advanced Streaming Format)形式や、MP4ファイル形式や、QuickTimeファイル形式である場合が考えられる。
(16)実施の形態1において、暗号に使用する鍵は、コンテンツタイプ毎に用意されている例を示したが、例えば、基本となる鍵を1つ用意しておいて、コンテンツタイプ毎に特定の処理を施すことで、各コンテンツタイプ用の鍵を生成するとしてもよい。
(17)実施の形態1において、CPUブロック110は2つのCPUからなり、メモリブロックはROMとRAMとからなり、暗号エンジン150はDSPからなり、AVデコーダ160はDSPからなる構成としたが、これ以外の構成、例えば、CPUブロック110と、メモリブロック120と、周辺デバイスブロック130と、暗号エンジン150と、AVデコーダ160と、バスライン140の一部とが1つの集積回路で実現されている構成であっても構わない。
図30は、再生機1000のブロック構成を示すブロック図であって、再生機1000のうち、CPUブロック110と、メモリブロック120と、周辺デバイスブロック130と、暗号エンジン150と、AVデコーダ160と、バスライン140の一部とが1つの集積回路10で実現されていることを示している。
(18)実施の形態4において、復号対象のコンテンツは、鍵情報2205がチャンクヘッダ2200に含まれるデータフォーマットであるとしたが、鍵情報2205がチャンクデータ2220を構成する暗号ブロックに含まれるとしても構わない。
このようなデータフォーマットのコンテンツの場合には、チャンク情報取得部2210はチャンクデータの暗号ブロックから鍵情報を取得し、鍵生成部2101は、チャンク情報取得部2210から鍵情報を取得する構成となる。
鍵生成部2101は、鍵情報が暗号化されている場合には、暗号化された鍵情報を復号してから鍵を作成する。
同様に、実施の形態4において、復号対象のコンテンツは、初期値情報2206がチャンクヘッダ2200に含まれるデータフォーマットであるとしたが、初期値情報2206がチャンクデータ2220を構成する暗号ブロックに含まれるとしても構わない。
このようなデータフォーマットのコンテンツの場合には、チャンク情報取得部2210はチャンクデータの暗号ブロックから初期値情報を取得し、鍵生成部2101は、チャンク情報取得部2210から初期値情報を取得する構成となる。
鍵生成部2101は、初期値情報が暗号化されている場合には、暗号化された初期値情報を復号してから鍵を作成する。
(19)実施の形態4において、鍵情報2205は鍵を生成するための情報であり、初期値情報2206は初期値を生成するための情報であるとしたが、鍵情報2205は鍵そのものであるとしても構わないし、初期値情報2206は初期値そのものであるとしても構わない。
(20)実施の形態4において、鍵情報2205は、各暗号化されたESに属する全てのフレームで共通のものを用いても構わないし、チャンク単位で互いに異なるものを用いても構わないし、さらには、鍵情報2205がチャンクデータ2220を構成する暗号ブロックに含まれている場合であれば、1つのチャンク内に複数の鍵情報2205が存在し、同一のチャンク内の暗号ブロックが、互いに異なる鍵情報2205を用いても構わない。
同様に、実施の形態4において、初期値情報2206は、各暗号化されたESに属する全てのフレームで共通のものを用いても構わないし、チャンク単位で互いに異なるものを用いても構わないし、さらには、初期値情報2206がチャンクデータ2220を構成する暗号ブロックに含まれている場合であれば、1つのチャンク内に複数の鍵情報2205が存在し、同一のチャンク内の暗号ブロックが、互いに異なる鍵情報2205を用いても構わない。
(21)実施の形態5において、第1処理部2501はCPUA111によって制御され、第2処理部2502はCPUB112によって制御されるとしたが、これ以外の構成、例えば、第1処理部2501はCPUA111とCPUB112とによって制御されるとしても構わないし、第2処理部2502はCPUA111とCPUB112とによって制御されるとしても構わない。
さらには、CPUブロック110が、3つ以上のCPUから構成される場合に、第1処理部2501は3つ以上のCPUによって制御されるとしても構わないし、第2処理部2502は3つ以上のCPUによって制御されるとしても構わない。
また、CPUブロックに、取り扱う情報を秘匿する機能を有するセキュアCPUが存在し、そのセキュアCPUが第2処理部2502によって制御されるようにすることで、鍵蓄積部214が記憶する鍵と初期値とを第三者に知られないようにするとしても構わない。
(22)実施の形態5において、第1処理部2501がチャンクデータ蓄積処理を終了した後に、第2処理部2502がコンテンツ復号処理を開始する例について説明したが、第1処理部2501によるチャンクデータ蓄積処理が最後まで終了していなくても、暗号情報蓄積部2530に一部のチャンクの情報が記憶された状態で、第2処理部2502がコンテンツ復号処理を開始するとしても構わない。
(23)実施の形態1において、外部記録媒体137とは、DVD、DVD−R、DVD−RAM、BD、BD−R、BD−RE等であるとしたが、読み取り可能な記録媒体であれば、例えば、CD(Compact Disc)、CD−R、SDカード等であっても構わない。
また、読取書込装置132は、DVD、DVD−R、BD、BD−R、BD−RE等へのデータの書込みや読取りをすることができるとしたが、データの書込みや読取が可能尾な記録媒体であれば、例えば、CD、CD−R、SDカード等へのデータの書込みや読取りをすることができても構わない。
(24)実施の形態1において、外部伝送媒体136とは、光通信回線、電話通信回線、放送波等であるとしたが、これらの形態は、デジタル信号を伝送することができる形態であれば、例えば、有線の形態であったり、無線の形態であったり、赤外線の形態であったりしても構わない。
本発明は、暗号化されたデジタルデータを復号する復号処理装置に広く利用することができる。
150 暗号エンジン
201 入力バッファ
202 出力バッファ
210 チャンク情報取得部
211 暗号サイズ算出部
212 鍵設定部
213 連鎖判定部
214 鍵蓄積部
216 チャンク間連鎖値保持部
221 演算判定部
222 演算部
223 鍵保持部
224 初期値保持部
225 初期値選択部
226 連鎖値選択部
227 チャンク内連鎖値保持部
228 連鎖値記録部
229 出力選択部
本発明は、暗号連鎖ブロック方式で暗号化されている暗号データを復号するコンテンツ復号処理装置に関する。
情報通信ネットワークを介して通信されるデジタルデータや、光ディスク等のメディアに蓄積されているデジタルデータ等の不正な利用を防止するために、これらのデジタルデータは、第三者がそのままでは利用することができないように暗号化された暗号データとなっている場合が多い。
デジタルデータを暗号化する方式の一つに、暗号対象データを複数の平文ブロックに分割し、直前の平文ブロックの暗号化が、その次の平文ブロックの暗号化に影響を与えるように暗号化していくことで、各平文ブロックを連鎖的に暗号処理するという暗号連鎖ブロック方式がある。
暗号連鎖ブロック方式において、各平文ブロックは、その直前の平文ブロックの暗号化の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して暗号化される。
この暗号連鎖ブロック方式で暗号化された暗号データは、平文ブロックを暗号化することで得られた暗号ブロックが暗号化された順番に並んで構成される。
暗号連鎖ブロック方式において、各暗号ブロックは、その直前の暗号ブロックの復号の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して復号される。
暗号連鎖ブロック方式で暗号化された暗号データを復号する技術として、例えば、暗号ブロックの復号の際に、暗号ブロックの復号処理と並行して次の暗号ブロックの復号に必要な連鎖値を生成することによって、次の暗号ブロックの復号開始時刻を早める技術(特許文献1参照)等が提案されている。
特開2000−295212号公報
一方、ビデオフレームから構成されるビデオデータストリームと、オーディオフレームから構成されるオーディオデータストリームとを、1つのデータストリームとして取り扱う手法として、ビデオデータストリームとオーディオデータストリームとを分割多重化して一つの新たなデータストリームとする手法がある。
このような手法において、分割多重化前のビデオデータストリームとオーディオデータストリームとが、それぞれ、フレーム毎に暗号連鎖ブロック方式で暗号化されているデータストリームである場合には、分割多重化後のデータストリームには、暗号連鎖している暗号ブロック列(例えば暗号化されたビデオフレームの暗号ブロック列)間に、その暗号フレームとは独立に暗号連鎖している暗号ブロック列(例えば暗号化されたオーディオフレームの暗号ブロック列)が存在する場合がある。
このようなデータストリームを復号するコンテンツ復号処理装置は、復号対象のデータストリームが、第1種暗号フレーム(例えば暗号化されたビデオフレーム)に属する連鎖する暗号ブロック列(以下、「暗号チャンク」という。)間に、第2種暗号フレーム(例えば暗号化されたオーディオフレーム)に属する暗号チャンクが存在しているデータ構造のデータストリームを復号することができる必要がある。
しかしながら、暗号ブロックを復号する場合において、単純にデータストリーム上の直前の暗号ブロックの復号の際に使用される連鎖値に対して所定の演算処理をすることによって得られる連鎖値を使用して暗号ブロックを復号するという構成のコンテンツ復号処理装置では、このようなデータストリームを復号することはできない。
そこで、本発明は、復号するデータストリームが、第1種暗号フレームに属する暗号チャンク間に、第2種暗号フレームに属する暗号チャンクが存在しているデータ構造のデータストリームであっても、データストリームの暗号ブロック順にそのデータストリームを復号することができるコンテンツ復号処理装置を提供することを目的とする。
上記課題を解決するために本発明に係るコンテンツ復号処理装置は、複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第1種暗号フレームに属する暗号チャンクと、第2種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号するコンテンツ復号処理装置であって、連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部とを備え、前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とする。
上述の構成を備える本発明に係るコンテンツ復号処理装置は、連鎖値記録部は、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録し、復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることになるため、復号するデータストリームが、第1種暗号フレームに属する暗号チャンク間に、第2種暗号フレームに属する暗号チャンクが存在しているデータ構造であっても正しくデータストリームを復号することができるという効果を有する。
また、例えば、データストリームから全ての第1種暗号フレームに属する暗号チャンクのみを順番通りに抽出して、抽出した暗号チャンクを順番通りに復号し、データストリームから全ての第2種暗号フレームのみを順番通りに抽出して、第1種暗号フレームの復号とは独立して、抽出した第2種暗号フレームを順番通りに復号するという復号処理装置でも、正しくデータストリームを復号することができるが、この復号処理装置には、データストリーム全体の中から種別毎に全ての暗号フレームを分離して抽出するという工程が必要になり、さらに、抽出した暗号ブロックを、種別ごとに一時記憶しておくための記憶領域が必要になる。
これに対して、上述の構成を備える本発明に係るコンテンツ復号処理装置では、種別毎に全ての暗号フレームを抽出する工程が不要であり、加えて、抽出した暗号フレームを、種別毎に記憶しておくための記憶領域も不要である。
また、前記連鎖値保持部は、連鎖値を記憶するためのチャンク内連鎖値保持部を含み、前記連鎖値記録部は、前記復号部によって暗号ブロックが復号された場合において、チャンクの後尾でない暗号ブロックが復号されたときに、前記復号部で算定された連鎖値を前記チャンク内連鎖値保持部に記憶されている連鎖値に上書きして記録し、前記復号部は、復号する暗号ブロックがチャンクの先頭の暗号ブロックでない場合に、前記チャンク内連鎖値保持部に記録されている連鎖値を用いて暗号ブロックを復号することを特徴とするとしてもよい。
このような構成にすることによって、チャンク内連鎖値保持部は、連鎖値のみを上書きされて記憶することになるため、チャンク内連鎖値保持部に必要な記憶容量を1つの連鎖値の記憶に必要な記憶容量に限定したコンテンツ復号処理装置を提供することができるという効果を有する。
また、前記連鎖値記録部は、暗号フレームの識別情報と連鎖値とを関連付けて前記連鎖値保持部に記録する場合に、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを前記連鎖値保持部に上書きして記録することを特徴とするとしてもよい。
このような構成にすることによって、連鎖値保持部は、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを上書きされて記憶することになるため、連鎖値保持部に必要な記憶容量を、暗号フレーム種毎に、1つの暗号フレームを示す情報と、1つの連鎖値を関連付けて記憶するのに必要な記憶容量に限定したコンテンツ復号処理装置を提供することができるという効果を有する。
また、前記復号部の復号対象である暗号ブロックが所定のビット数に足りない場合に、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックに付与データを付与するデータ付与部と、前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とをさらに備え、前記復号部の復号対象である暗号ブロックが前記所定のビット数に足りない場合に、前記データ付与部は、前記復号対象である暗号ブロックに付与データを付与して、前記所定のビット数の合成暗号ブロックを生成し、前記復号部は、前記復号対象の暗号ブロックの代わりに前記合成暗号ブロックを復号し、前記復号データ記録部は、前記復号部によって復号された合成暗号ブロックのうち、前記データ付与部によって付与された付与データの部分が前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録するとしてもよい。
ここで、所定のビット数とは、復号部が復号できる暗号ブロックのビット数のことである。
このような構成にすることによって、復号対象である暗号ブロックが、その一部のビットが欠落して所定のビット数に足りない暗号ブロックである場合であっても、暗号ブロックに付与データを付与することで所定のビット数となった合成暗号ブロックを復号部が復号し、復号された合成ブロックから、付与データの部分が復号されることで得られた部分以外の部分を復号データ保持部に記録することになるため、所定のビット数に足りない暗号ブロックであっても、その暗号ブロックを復号して、復号データ保持部に記録することができるコンテンツ復号処理装置を提供することができるという効果を有する。
再生機1000のブロック構成を示すブロック図 コンテンツのデータ構造を示すデータ構造図 チャンク310のデータ構造を示すデータ構造図 コンテンツ復号処理装置2000の機能構成を示すブロック図 鍵蓄積部214が保持する情報を示す図 チャンク間連鎖値保持部216が保持する情報を示す図 演算部222の機能構成を示すブロック図 コンテンツ復号処理装置2000のコンテンツ復号動作のフローチャート チャンク1050のデータ構造を示すデータ構造図 コンテンツヘッダに含まれている情報を示す図 コンテンツ復号処理装置3000の機能構成を示すブロック図 コンテンツ復号処理装置3000のコンテンツ復号動作のフローチャート コンテンツデータのデータ構造を示すデータ構造図 コンテンツ復号処理装置4000の機能構成を示すブロック図 チャンク間連鎖値保持部1316が保持する情報を示す図 暗号ブロックに欠落がない場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。 暗号ブロックの後半が欠落している場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。 暗号ブロックの前半が欠落している場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。 コンテンツ復号処理装置4000のコンテンツ復号動作のフローチャートその1 コンテンツ復号処理装置4000のコンテンツ復号動作のフローチャートその2 チャンク2250のデータ構造を示すデータ構造図 コンテンツ復号処理装置5000の機能構成を示すブロック図 鍵蓄積部2114が保持する情報を示す図 コンテンツ復号処理装置5000のコンテンツ復号動作のフローチャート コンテンツ復号処理装置6000の機能構成を示すブロック図 フレーム番号蓄積部2522が保持する情報を示す図 暗号情報蓄積部2530が保持する情報を示す図 コンテンツ復号処理装置6000のコンテンツ復号動作のフローチャートその1 コンテンツ復号処理装置6000のコンテンツ復号動作のフローチャートその2 再生機1000のハードウエア構成を示すブロック図
<実施の形態1>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
ここで暗号化されたコンテンツとは、ビデオフレームから構成されるビデオデータストリームと、オーディオフレームから構成されるオーディオデータストリームとを、それぞれ、フレーム毎に暗号連鎖ブロック方式で暗号化して、暗号化されたビデオデータストリームと、暗号化されたオーディオデータストリームとを分割多重化して一つの新たなデータストリームとしたものである。
このコンテンツ復号処理装置は、復号対象のデータストリームのデータ構造が、第1種暗号フレーム(例えば暗号化されたビデオフレーム)に属する連鎖する暗号ブロック列からなる暗号チャンク間に、第2種暗号フレーム(例えば暗号化されたオーディオフレーム)に属する暗号ブロック列からなる暗号チャンクが存在しているデータ構造であっても、データストリームを正しく復号することができる。
以下、本実施の形態に係るコンテンツ復号処理装置の構成について、図面を参照しながら説明する。
<構成>
<再生機1000>
図1は、本実施の形態に係るコンテンツ復号処理装置2000を備えた再生機1000のブロック構成を示すブロック図である。
再生機1000は、パーソナルコンピュータであって、CPU(Central Processing Unit:中央演算処理装置)ブロック110と、メモリブロック120と、周辺デバイスブロック130と、バスライン140と、暗号エンジン150と、AVデコーダ160とから構成される。
CPUブロック110は、CPUA111と、CPUB112との2つのCPUから構成される。
CPUA111とCPUB112とは、バスライン140と接続し、メモリブロック120が記憶するプログラムを実行することで、メモリブロック120、周辺デバイスブロック130、暗号エンジン150、AVデコーダ160を用いて、記録媒体から暗号化されたデータストリームを読み出す機能、暗号化されたデータストリームを復号する機能、符号化されたデータストリームを復号する機能等を実現する。
CPUA111とCPUB112とは、互いに協調しながら並列に動作することで、上記機能を実現する。
メモリブロック120は、ROM(Read Only Memory)121とRAM(Random Access Memory)122とから構成されている。
ROM121は、バスライン140と接続し、CPUA111の動作を規定するプログラムと、CPUB112の動作を規定するプログラムと、CPUA111とCPUB112とが利用するデータとを記憶している。
RAM122は、バスライン140と接続し、CPUA111又はCPUB112がプログラムを実行することに伴って発生するデータを一時的に記憶し、また、周辺デバイスブロック130から読み取ったデータを一時的に記憶する。
周辺デバイスブロック130は、ハードディスク装置131と、ハードディスク装置インターフェース141と、読取書込装置132と、読取書込装置インターフェース142と、出力装置133と、出力装置インターフェース143と、入力装置134と、入力装置インターフェース144と、通信装置135とから構成されている。
暗号エンジン150は、暗号化されたデータの復号を行う機能を有するDSP(Digital Signal Processor)であって、CPUA111及びCPUB112によって制御され、バスライン140と接続する。
AVデコーダ160は、符号化されたVideoデータやAudioデータをデコードするDSPであって、CPUA111及びCPUB112によって制御され、MPEG(Moving Picture Experts Group)2デコード機能、MPEG4デコード機能、MPEG4−AVCデコード機能を有する。
再生機1000は、AVデコーダ160でデコードした結果を、出力装置133で出力することで、コンテンツを再生する。
ハードディスク装置131は、CPUA111及びCPUB112によって制御され、内蔵するハードディスクにコンテンツを書き込む機能と、内蔵するハードディスクに書き込まれているコンテンツを読み取る機能とを有し、ハードディスク装置インターフェース141を介してバスライン140と接続する。
ハードディスク装置インターフェース141は、ハードディスク装置131とバスライン140との間の信号のやりとりを仲介するものである。
読取書込装置132は、CPUA111及びCPUB112によって制御され、外部記録媒体137にコンテンツを書き込む機能と、外部記録媒体137に書き込まれているコンテンツを読み取る機能とを有し、読取書込装置インターフェース142を介してバスライン140と接続する。
ここで、外部記録媒体137とは、DVD(Digital Versatile Disc)、DVD−R、DVD−RAM、BD(Blu-ray Disc)、BD−R、BD−RE等であって、読取書込装置132は、これら、DVD、DVD−R、BD、BD−R、BD−RE等へのデータの書込みや読取りをすることができる。
読取書込装置インターフェース142は、読取書込装置132とバスライン140との間の信号のやりとりを仲介するものである。
通信装置135は、外部伝送媒体136を通じてコンテンツを取得する機能を有し、バスライン140と接続し、外部のコンテンツサーバや、インターネット上のコンテンツ提供サイト等からコンテンツを取得する。
ここで、外部伝送媒体136とは、光通信回線、電話通信回線、放送波等であって、通信装置135は、これら光通信回線、電話通信回線、放送波等からの信号を受信することができる。
通信装置135が取得するコンテンツは、外部記録媒体137、ハードディスク装置131に内蔵されるハードディスク、または、RAM122に書き込まれる。
出力装置133は、映像と音声とを出力する装置であって、AVデコーダ160によってデコードされたVideoデータやAudioデータを出力する機能を有し、出力装置インターフェース143を介してバスライン140と接続し、LCD(Liquid Crystal Display)と、スピーカとで構成されている。
出力装置インターフェース143は、出力装置133とバスライン140との間の信号のやりとりを仲介するものである。
入力装置134は、ユーザによる操作を受け付けるキーボードと、マウスとから構成され、ユーザによる再生機1000の操作コマンドを受け付ける機能を有し、入力装置インターフェース144を介してバスライン140と接続する。
入力装置インターフェース144は、入力装置134とバスライン140との間の信号のやりとりを仲介するものである。
バスライン140は、CPUA111、CPUB112、ROM121、RAM122、暗号エンジン150、AVデコーダ160、通信装置135、ハードディスク装置インターフェース141、読取書込装置インターフェース142、出力装置インターフェース143、及び、入力装置インターフェース144と接続し、接続する各構成要素間のデータ通信を行うためのものである。
上述のように構成される再生機1000は、CPUA111及びCPUB112がROM121又はRAM122に記憶されているプログラムを実行することで、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれているコンテンツの再生処理を実行する。
<コンテンツのデータ構造>
図2は、本実施の形態1に係るコンテンツ復号処理装置2000が復号するコンテンツ300のデータ構造を示すデータ構造図である。
コンテンツ300は、映像を符号化することで得られるビデオストリームが暗号化されたVideoES(Elementary Stream)と、日本語による音声を符号化することで得られるオーディオストリームが暗号化されたAudio1ESと、英語による音声を符号化することで得られるオーディオストリームが暗号化されたAudio2ESとが分割多重化されて連続する1つのストリームになっているコンテンツデータ302と、コンテンツ300に関する情報を含むコンテンツヘッダ301とから構成される。
ここで、暗号化されたVideoESとは、MPEG4−AVC方式で符号化された映像データに対して、1画面の画像データであるVideoフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたストリームデータである。
暗号連鎖は各Videoフレーム単位で完結し、互いに異なるVideoフレームに暗号連鎖が継続することはない。
また、連鎖する暗号ブロックの先頭の暗号ブロックを復号する際に用いる連鎖値である初期値と、各暗号ブロックを復号する際に用いる鍵とは、全てのVideoフレームで共通のものを用いている。
ここで、暗号化されたAudio1ES、Audio2ESとは、音声データをMPEG4−AVC方式で符号化することで得られたAudioフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたストリームデータである。
暗号連鎖は各Audioフレーム単位で完結し、互いに異なるAudioフレームに暗号連鎖が継続することはない。
また、初期値と鍵とは、暗号化されたAudio1ESに属する全てのAudioフレームで共通のものを用い、暗号化されたAudio2ESに属する全てのAudioフレームで共通のものを用いているが、暗号化されたAudio1ESに属するAudioフレームの初期値と鍵とは、暗号化されたAudio2ESに属するAudioフレームの初期値と鍵と異なるものである。
コンテンツデータ302のデータ構成は、多数のチャンク310が連続する構成となっており、各チャンク310は、さらに、チャンクヘッダ311、チャンクデータ312、パディング313から構成されている。
図3は、チャンク310のデータ構成を示すデータ構成図である。
チャンクヘッダ311は、暗号化されていない固定長データであって、チャンクのサイズを示す情報を含むチャンクサイズ401、チャンクの属するコンテンツタイプを示す情報を含むコンテンツタイプ402、チャンクの属するフレーム番号を示す情報を含むフレーム番号403、デコードに使用する情報を含むデコード用ヘッダ情報404、チャンクデータのサイズを示す情報を含むチャンクデータサイズ405からなる。
ここで、コンテンツタイプとは、Video、Audio1、Audio2のうちのいずれかであって、コンテンツタイプがVideoであれば、暗号化されたVideoESに属することを示し、コンテンツタイプがAudio1であれば、暗号化されたAudio1ESに属することを示し、コンテンツタイプがAudio2であれば、暗号化されたAudio2ESに属することを示す。
また、チャンクヘッダ311の構成要素である、チャンクサイズ401、コンテンツタイプ402、フレーム番号403、デコード用ヘッダ情報404のそれぞれのビット長と出現順番とは固定である。
チャンクデータ312は、暗号連鎖の順番に並ぶ暗号ブロック411〜413からなる暗号ブロック列である。
例えば、AES(Advanced Encryption Standard)暗号方式を用いた場合、暗号ブロックは、CTRモードで連鎖暗号化された暗号連鎖の単位であって、ビット長は128ビットである。
ここで、暗号ブロックは128ビットの平文と、128ビットの連鎖値を128ビットの鍵を用いてAES暗号方式等によって暗号化することによって得られた128ビットの暗号連鎖値とを、ビットごとの排他的論理和を取ることで生成されたものであって、各暗号ブロックは、Videoフレーム、Audio1フレーム、Audio2フレームのいずれかのフレームが暗号化されることによって得られたものである。
パディング313は、暗号化されていないデータであって、チャンク310のデータサイズを整えるために添付されているデータである。
<コンテンツ復号処理装置2000>
図4は、再生機1000を用いて機能的に実現される、コンテンツ復号処理装置2000の機能構成を示すブロック図である。
コンテンツ復号処理装置2000は、CPUA111及びCPUB112がメモリブロック120の記憶するプログラムに従って、メモリブロック120、周辺デバイスブロック130、バスライン140、暗号エンジン150等を用いて暗号化されたコンテンツの復号処理を行い、復号されたコンテンツをAVデコーダ160に出力される。
コンテンツ復号処理装置2000は、復号対象のチャンクを一時的に保持する入力バッファ201と、復号されたチャンクを一時的に保持する出力バッファ202と、鍵と初期値とを記憶する鍵蓄積部214と、チャンク間に跨る連鎖値を記憶するチャンク間連鎖値保持部216と、チャンクヘッダ311から情報を取得するチャンク情報取得部210と、チャンクデータ312の開始アドレスとパディング313の開始アドレスとを算出する暗号サイズ算出部211と、鍵と初期値とを暗号エンジン150に出力する鍵設定部212と、チャンク間に跨って暗号連鎖が継続しているか否かを判定する連鎖判定部213と、暗号エンジン150とから構成される。
入力バッファ201は、暗号エンジン150が復号するコンテンツの一部を一時的に記憶しておくための記憶領域であって、メモリブロック120の一部として実装されている。
入力バッファ201の記憶する単位は、コンテンツヘッダ301又はチャンク310単位であって、CPUA111又はCPUB112によって、コンテンツ300のデータ順に従って、前回記憶していたコンテンツの一部に対して上書きされる。
出力バッファ202は、暗号エンジン150が復号したコンテンツの一部を、AVデコーダ160に出力する前に一時的に記憶しておくための記憶領域であって、メモリブロック120の一部として実装されている。
チャンク情報取得部210は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402を鍵設定部212に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部213に出力する機能を有する。
チャンク情報取得部210は、CPUA111又はCPUB112によってコンテンツヘッダ301が書き込まれると、入力バッファ201が保持するデータがコンテンツヘッダ301である旨のコンテンツヘッダ信号を暗号エンジン150に出力する機能を有する。
暗号サイズ算出部211は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを入力とを入力されると、チャンクデータ312の開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数とを計算し、暗号エンジン150に出力する機能を有する。
チャンクデータ312の開始アドレスは、チャンクの開始アドレスと固定長であるチャンクヘッダ311のサイズを加算することで算出され、パディング313の開始アドレスは、チャンクヘッダ311の開始アドレスにチャンクデータサイズ405を加算することで算出され、チャンクの終了アドレスは、チャンクの開始アドレスとチャンクサイズ401とを加算することで算出され、暗号ブロックの数は、チャンクデータサイズ405を暗号ブロックの単位ビット数である128で除算することで算出される。
鍵蓄積部214は、コンテンツタイプと、鍵と、初期値とを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図5は、鍵蓄積部214が記憶する情報を示す図である。
図5に示されるように、鍵蓄積部214は、コンテンツタイプ402のそれぞれに、復号の際に使用する鍵502と、初期値503とを対応付けて予め記憶している。
鍵502のビット数は128ビットであって、初期値503のビット数は128ビットである。
ここで、初期値とは、暗号連鎖ブロック方式で暗号化された暗号ブロックを復号する場合において、連鎖先頭の暗号ブロックを復号する際に使用する連鎖値のことである。
鍵設定部212は、チャンク情報取得部210からのコンテンツタイプ402を入力として、鍵蓄積部214から、入力されたコンテンツタイプ402と関連付けられて記憶されている鍵502と初期値503とを読み出して、暗号エンジン150に出力する機能を有する。
チャンク間連鎖値保持部216は、コンテンツタイプと、フレーム番号と、連鎖値とを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図6は、チャンク間連鎖値保持部216が記憶する情報を示す図である。
図6に示されるように、チャンク間連鎖値保持部216は、コンテンツタイプ402のそれぞれに、フレーム番号602と、連鎖値603とを対応付けて記憶している。
ここで記憶されているフレーム番号602は、対応するコンテンツタイプ402において最後に復号されたフレームのフレーム番号であって、連鎖値603は、フレーム番号602に属する最後に復号されたチャンクの最後の暗号ブロックが復号された際に算定された連鎖値である。
連鎖値603のビット数は、128ビットである。
なお、フレーム番号602と、連鎖値603との組は、暗号エンジン150によって、コンテンツタイプ402毎に上書きされる。
連鎖判定部213は、チャンク情報取得部210からコンテンツタイプ402と、フレーム番号403との組み合わせが入力されると、チャンク情報取得部210から入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部216に関連付けられて記憶されているか否かを調べて、記憶されている場合には、入力バッファ201に保持されてチャンクが暗号連鎖継続中であると判断し、記憶されていない場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中でないと判断する機能を有する。
連鎖判定部213は、また、コンテンツタイプ402とフレーム番号403とを暗号エンジンに出力し、加えて、暗号連鎖継続中であると判断した場合には、暗号連鎖継続中の旨を示す暗号連鎖信号を暗号エンジン150に出力し、連鎖継続中でないと判断した場合には、暗号連鎖終了の旨を示す暗号終了信号を暗号エンジン150に出力する機能を有する。
暗号エンジン150は、チャンク情報取得部210からのコンテンツヘッダ信号と、暗号サイズ算出部211からのチャンクデータ312の開始アドレスとパディング313の開始アドレスとチャンクの終了アドレスとチャンクデータ312に含まれる暗号ブロックの数と、鍵設定部212からの鍵502と初期値503と、連鎖判定部213からのコンテンツタイプ402とフレーム番号403と暗号連鎖信号又は暗号終了信号とに基づいて、入力バッファ201に保持されているチャンクを読み出して、読み出したチャンクを復号して、復号されたチャンクを出力バッファ202に書き込む機能を有する。
暗号エンジン150は、入力バッファ201が保持するチャンクからチャンクデータ312を読み出して演算部に出力する演算判定部221と、チャンクデータ312を暗号ブロック単位で復号する演算部222と、鍵を記憶する鍵保持部223と、初期値を記憶する初期値保持部224と、初期値又は連鎖値のいずれか一方を選択する初期値選択部225と、演算部が使用する連鎖値を選択する連鎖値選択部226と、連鎖値を記憶するためのチャンク内連鎖値保持部227と、演算部222が出力する連鎖値をチャンク内連鎖値保持部227又はチャンク間連鎖値保持部216に記録する連鎖値記録部228と、演算部222によって暗号ブロック単位で復号されたチャンクデータを出力バッファ202に書きこむ出力選択部229とから構成されている。
演算判定部221は、暗号サイズ算出部211から出力されるチャンクの開始アドレスと、チャンクデータ312の開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを用いて、入力バッファ201に保持されているチャンクから、チャンクヘッダ311と、パディング313とを読み出して出力選択部229に出力し、チャンクデータ312を読み出して、暗号ブロック単位で演算部222に出力し、演算部222に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックである場合に、初期値選択信号を連鎖値選択部226に出力し、演算部222に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックでない場合に、連鎖値選択信号を連鎖値選択部226に出力する機能を有する。
なお、チャンクデータの先頭の暗号ブロックであるか否かは、チャンクデータの開始アドレスを用いて判断する。
ここで、チャンクデータの先頭の暗号ブロックを演算部222に出力するタイミングは、暗号サイズ算出部211からチャンクデータ312の開始アドレスが入力されたタイミングであって、チャンクデータの先頭の暗号ブロック以外の暗号ブロックを演算部222に出力するタイミングは、連鎖値記録部228から暗号ブロック要請信号を受け取ったタイミングである。
また、チャンク情報取得部210からコンテンツヘッダ信号が入力された場合には、入力バッファ201に保持されているコンテンツヘッダ301を読み出して出力選択部229に出力する機能を有する。
鍵保持部223は、鍵設定部212から鍵を入力される毎に、自ら記憶する鍵に上書きし、記憶している鍵を演算部222に出力し続ける機能を有する。
初期値保持部224は、鍵設定部212から初期値を入力される毎に、自ら記憶する初期値上書きし、記憶する初期値を初期値選択部に出力する機能を有する。
初期値選択部225は、連鎖判定部213から、暗号連鎖継続信号と、コンテンツタイプ402との組みを受け取ると、チャンク間連鎖値保持部216から、受け取ったコンテンツタイプ402と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力し、連鎖判定部213から、暗号連鎖終了の旨を示す信号を受け取ると、初期値保持部224が保持している初期値を読み出して連鎖値選択部226に出力する機能を有する。
チャンク内連鎖値保持部227は、連鎖値記録部228によって上書きされる連鎖値を記憶するための記憶領域である。
連鎖値選択部226は、初期値選択信号を演算判定部221から受け取った場合に、初期値選択部225から出力される初期値又は連鎖値を演算部222に出力し、連鎖値選択信号を演算判定部221から受け取った場合に、チャンク内連鎖値保持部227が保持する連鎖値を読み出して演算部222に出力する機能を有する。
連鎖値記録部228は、暗号サイズ算出部211が出力する暗号ブロックの数と、連鎖判定部213が出力するコンテンツタイプと、フレーム番号と、演算部222が出力する連鎖値とを入力され、演算部222が出力する連鎖値が入力されると、入力された連鎖値を、チャンク間連鎖値保持部216かチャンク内連鎖値保持部227のいずれか一方に記録する機能を有する。
連鎖値記録部228は、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、連鎖判定部213から入力されるコンテンツタイプと、フレーム番号と関連付けて、チャンク間連鎖値保持部216に上書きして記録し、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部227に上書きして記録し、演算判定部221に暗号ブロック要請信号を出力する機能を有する。
連鎖値記録部228は、演算部222から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
この連鎖値数カウンタは、暗号サイズ算出部211から暗号ブロックの数が入力される毎にリセットされる。
連鎖値記録部228は、演算部222から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
出力選択部229は、演算判定部221から出力されるチャンクヘッダ311と、パディング313と、復号された暗号ブロック単位で演算部222から出力される復号された暗号ブロックと、コンテンツヘッダ301とを、出力バッファ202に書き込む機能を有する。
演算部222は、演算判定部221から出力される暗号ブロックを、鍵保持部223に保持されている鍵と、連鎖値選択部226から出力される初期値又は連鎖値とを用いて、連鎖暗号ブロック方式で復号し、復号の際に次の連鎖値を算定して出力する機能を有する。
図7は演算部222の機能構成を示すブロック図である。
演算部222は、入力される連鎖値を暗号化して暗号連鎖値を出力するAES暗号回路701と、入力される連鎖値から、次の暗号ブロックを復号する際に使用する連鎖値を作成するインクリメンタ703と、暗号ブロックと暗号連鎖値とから復号された暗号ブロックすなわち平文を出力する排他的論理和回路702とから構成され、CTRモードで連鎖暗号化された暗号ブロックを復号する機能を有する。
AES暗号回路701は、128ビットの連鎖値に対して、128ビットの鍵を用いてAES暗号方式で128ビットの暗号連鎖値を作成して排他的論理和回路702に出力する。
インクリメンタ703は、入力される連鎖値のうち、下位32ビットの部分のみを1だけインクリメントして次の連鎖値を算定する機能を有する。
ここで、インクリメントされた下位32ビットの部分がオーバーフローした場合には、下位32ビットの部分のみが0x00となって、上位96ビットには影響を与えることはない。
排他的論理和回路702は、AES暗号回路701から出力される128ビットの暗号連鎖値と、演算判定部221から出力される128ビットの暗号ブロックとのビットごとの排他的論理和を出力する機能を有する。
以上のように構成されるコンテンツ復号処理装置2000は、暗号エンジン150がチャンクの後尾の暗号ブロックを復号する際に算定した連鎖値を、コンテンツタイプと、フレーム番号と関連付けてチャンク間連鎖値保持部216に記憶する。
また、コンテンツ復号処理装置2000は、暗号エンジン150がチャンクの先頭の暗号ブロックを復号する場合において、チャンク間連鎖値保持部216にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値があるときに、そのチャンクは連鎖が継続していると判断して、そのチャンクのコンテンツタイプとフレーム番号と対応付けられてチャンク間連鎖値保持部216に記憶されている連鎖値を用いて、チャンクの先頭の暗号ブロックを復号し、チャンク間連鎖値保持部216にそのチャンクのコンテンツタイプとフレーム番号と対応付けられて記憶されている連鎖値がないときに、そのチャンクは連鎖が継続していない判断して、そのチャンクのコンテンツタイプに対応する初期値を用いて、チャンクの先頭の暗号ブロックを復号する。
さらに、コンテンツ復号処理装置2000は、暗号エンジン150がチャンクの先頭の暗号ブロック以外の暗号ブロックを復号する場合には、チャンク内連鎖値保持部227が保持する連鎖値を用いて、暗号ブロックを復号する。
コンテンツ復号処理装置2000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機1000がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ301を入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダ301が入力バッファ201に書き込まれると、コンテンツ復号処理装置2000はコンテンツ復号処理を開始する。
図8は、コンテンツ復号処理装置2000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置2000がコンテンツ復号処理を開始すると、チャンク情報取得部210はコンテンツヘッダ信号を出力し、演算判定部221は出力されたコンテンツヘッダ信号を受け取る。
演算判定部221は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダ301を読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダ301を出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部210は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して(ステップS800)、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402を鍵設定部212に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部213に出力する。
暗号サイズ算出部211は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とが入力されると、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数を計算し(ステップS805)、チャンクの開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを演算判定部221に出力し、暗号ブロックの数を連鎖値記録部228に出力する。
連鎖値記録部228は、暗号サイズ算出部211から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部221は、暗号サイズ算出部211から、チャンクの開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ311とパディング313とを読み出して出力選択部229に出力し、出力選択部229は入力されたチャンクヘッダ311とパディング313とを出力バッファ202に書き込み(ステップS810)、連鎖値選択部226に初期値選択信号を出力する。
鍵設定部212は、チャンク情報取得部210からコンテンツタイプ402を入力されると、入力されたコンテンツタイプ402と関連付けられて鍵蓄積部214に記憶されている鍵502と初期値503とを読み出して、読み出した鍵502を鍵保持部223に出力し、読み出した初期値503を初期値保持部224に出力し、鍵蓄積部214は、入力された鍵を上書きして記憶し、初期値保持部224は、入力された初期値を上書きして記憶する(ステップS815)。
連鎖判定部213は、チャンク情報取得部210から、コンテンツタイプ402と、フレーム番号403とを入力されると、入力バッファ201に保持されているチャンクが暗号連鎖継続中であるか否かを判定するために、入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部216に関連付けられて記憶されているか否かを調べて(ステップS820)、記憶されている場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中であると判断し(ステップS820:Yes)、コンテンツタイプ402とフレーム番号403とを連鎖値記録部228に出力し、暗号連鎖信号とコンテンツタイプ402とを初期値選択部225に出力する。
初期値選択部225は、連鎖判定部213から、暗号連鎖継続信号と、コンテンツタイプ402との組みを受け取ると、チャンク間連鎖値保持部216から、受け取ったコンテンツタイプ402と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部221から初期値選択信号を受け取っているので、初期値選択部225から入力される連鎖値を選択して、演算部222に出力する(ステップS825)。
ステップS820において、入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部216に関連付けられて記憶されていない場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中でないと判断し(ステップS820:No)、コンテンツタイプ402とフレーム番号403とを連鎖値記録部228に出力し、暗号終了信号を初期値選択部225に出力する。
初期値選択部225は、連鎖判定部213から、暗号連鎖終了信号を受け取ると、初期値保持部224が保持する初期値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部221から初期値選択信号を受け取っているので、初期値選択部225から初期値が入力されると、入力された初期値を演算部222で使用する連鎖値として演算部222に出力する(ステップS830)。
ステップS825又はステップS830の処理が終わると、演算部222は、演算判定部221から暗号チャンクの先頭の暗号ブロックを受け取る。
演算部222は、鍵保持部223に記録されている鍵と、連鎖値選択部から出力される連鎖値とを用いて、受け取った暗号ブロックを復号して出力選択部229に出力し、復号の際に算定した次の連鎖値を連鎖値記録部228に出力する(ステップS835)。
演算部222が行う暗号ブロックの復号と次の連鎖値の算定とは、(1)AES暗号回路701が鍵を用いて連鎖値を暗号化して暗号連鎖値を作成し、(2)排他的論理和回路702が作成された暗号連鎖値と、暗号ブロックとのビットごとの排他的論理和を取ることで、暗号ブロックを復号し、(3)インクリメンタ703が入力される連鎖値のうち、下位32ビットの部分のみを1だけインクリメントすることで次の連鎖値を算定するという3つの処理によって実現されている。
出力選択部229は、演算部222から復号された暗号ブロックが入力されると、入力された復号された暗号ブロックを、出力バッファ202に書き込む。
連鎖値記録部228は、演算部222から連鎖値が入力されると、連鎖値数カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数と、暗号サイズ算出部から入力された暗号ブロックの数とを比較することで、演算部222から入力された連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定する(ステップS840)。
ステップS840において、新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し(ステップS840:Yes)、演算部222から入力された連鎖値をチャンク内連鎖値保持部に上書きして記録し(ステップS845)、連鎖値記録部228は、演算判定部221に暗号ブロック要請信号を出力する。
演算判定部221は、連鎖値記録部228から暗号ブロック要請信号を受け取ると、次の暗号ブロックを演算部222に出力し、連鎖値選択信号を連鎖値選択部226に出力し、連鎖値選択部226は、連鎖値選択信号を受信すると、チャンク内連鎖値保持部227が保持する連鎖値を読み出して演算部222に出力する(ステップS850)。
ステップS850の処理が終わると、再びステップS835の処理を開始する。
ステップS840において、新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断し(ステップS840:No)、演算部222から入力された連鎖値を、連鎖判定部213から入力されたコンテンツタイプと、フレーム番号と関連付けて、チャンク間連鎖値保持部216に上書きして記録する(ステップS855)。
ステップS855の処理が終わると、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれるまで、コンテンツ復号処理装置2000は待機する(ステップS865)。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS870:Yes)、再びステップS800の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS870:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置2000は、コンテンツ復号処理を終了する。
<具体的動作>
例として、コンテンツタイプがVideoでフレーム番号が10である第1チャンクと、同じくコンテンツタイプがVideoでフレーム番号が10であって、第1チャンクに連続するチャンクである第2チャンクとの間に、コンテンツタイプがAudio1でフレーム番号が5である第3チャンクが存在している場合において、コンテンツ復号処理装置2000は、第2フレームの先頭の暗号ブロックを正しい連鎖値を用いて正しく復号することができることを説明する。
演算部222が第1チャンクの後尾の暗号ブロックを復号すると、連鎖値記録部228は、演算部222から入力された連鎖値、例えば、0x00001111を、連鎖判定部213から入力されたVideoを示すコンテンツタイプと、10を示すフレーム番号と関連付けて、チャンク間連鎖値保持部216に上書きして記録する(ステップS865)。
その後、コンテンツ復号処理装置2000は、第3チャンクを復号し、第3チャンクを復号した後、第2チャンクの復号を開始する。
第2チャンクが入力バッファ201に書き込まれると、チャンク情報取得部210は、Videoを示すコンテンツタイプと、10を示すフレーム番号とを取得し(ステップS800)、連鎖判定部213に出力する。
連鎖判定部213は、Videoを示すコンテンツタイプと、10を示すフレーム番号との組み合わせが、チャンク間連鎖値保持部216に関連付けられて記憶されているか否かを調べて(ステップS820)、Videoを示すコンテンツタイプと、10を示すフレーム番号との組み合わせが、連鎖値0x00001111と関連付けられて記憶されていることがわかるので、第2チャンクが暗号連鎖継続中であると判断し(ステップS820:Yes)、暗号連鎖信号とVideoを示すコンテンツタイプを出力する。
初期値選択部225は、暗号連鎖信号とVideoを示すコンテンツタイプとを受け取ると、チャンク間連鎖値保持部216からVideoを示すコンテンツタイプと関連付けて記憶されている連鎖値0x00001111を読み出して連鎖値選択部226に出力し、連鎖値選択部226は演算部222に、この連鎖値0x00001111を出力する。
従って、演算部222は、この連鎖値0x00001111、すなわち、第1チャンクの後尾の暗号ブロックを復号した際に算定した連鎖値を用いて、第2チャンクの先頭の暗号ブロックを復号することになるので、第2チャンクの先頭の暗号ブロックを正しく復号する。
<実施の形態2>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
本実施の形態2に係るコンテンツ復号処理装置は、実施の形態1のコンテンツ復号処理装置2000の復号対象であるコンテンツ300に含まれるチャンク310のチャンクヘッダ311の一部とコンテンツヘッダ301とが変形したデータフォーマットであるコンテンツを復号することができるように、実施の形態1で説明したコンテンツ復号処理装置2000を変形したものである。
本実施の形態2に係るコンテンツ復号処理装置は、実施の形態1で説明したコンテンツ復号処理装置2000の一部である、チャンク情報取得部210を変形し、さらに、新たにコンテンツヘッダ解析部とフィールド情報蓄積部とを備えるように変形した形態であって、コンテンツ復号処理装置2000と同様に、実施の形態1の再生機1000上で実現される。
以下、実施の形態1で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
<構成>
<コンテンツのデータ構造>
本実施の形態2に係るコンテンツ復号処理装置3000が復号するコンテンツは、実施の形態1のコンテンツ300を、実施の形態1のチャンクヘッダ311に存在していたコンテンツタイプ402と、フレーム番号403とに対応する情報が、コンテンツヘッダに存在しているように変形したコンテンツである。
図9は、本実施の形態2に係るコンテンツ復号処理装置3000の復号対象であるコンテンツを構成するチャンク1050のデータ構成を示す構成図である。
チャンク1050は、チャンクヘッダ1015、チャンクデータ1010、パディング1020から構成されている。
チャンクヘッダ1015は、暗号化されていないデータであって、チャンクのサイズを示す情報を含むチャンクサイズ1001、デコードに使用する情報を含むデコード用ヘッダ情報1004、チャンクデータのサイズを示す情報を含むチャンクデータサイズ1005からなり、チャンクサイズ1001、デコード用ヘッダ情報1004、チャンクデータサイズ1005のそれぞれのビット長と出現順番とは固定である。 チャンクデータ1010は、実施の形態1のチャンクデータ312と同様のものであって、パディング2230は、実施の形態1のパディング313と同様のものである。
図10は、本実施の形態2に係るコンテンツを構成するコンテンツヘッダに含まれている情報を示す構成図である。
コンテンツヘッダは、コンテンツに含まれるすべてのチャンク1050について、チャンク1050の並び順に、チャンク1050毎の開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103とを対応付けて保持している。
コンテンツタイプ1102は実施の形態1のコンテンツタイプ402と同様のものであり、フレーム番号1103は実施の形態1のフレーム番号602と同様のものである。
<コンテンツ復号処理装置3000>
図11は、コンテンツ復号処理装置3000の機能構成を示すブロック図である。
コンテンツ復号処理装置3000は、実施の形態1のコンテンツ復号処理装置2000に対して、チャンク情報取得部210をチャンク情報取得部910に変形し、新たにフィールド情報蓄積部920と、コンテンツヘッダ解析部930とを追加したものである。
フィールド情報蓄積部920は、コンテンツヘッダに保持されている、チャンク1050毎の開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103とを対応付けて記憶しておくための記憶領域であって、メモリブロック120の一部として実装されている。
コンテンツヘッダ解析部930は、入力バッファ201が保持するコンテンツヘッダから、チャンク毎に対応付けられている、開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103との組を全て読み出し、読み出した、開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103との組を全て、フィールド情報蓄積部920に対応付けて記録する機能を有する。
チャンク情報取得部910は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ1015から、チャンクサイズ1001と、チャンクデータサイズ1005とを取得して、さらに、フィールド情報蓄積部920から、入力バッファ201が保持するチャンクに対応するコンテンツタイプ1102と、フレーム番号1103とを取得して、チャンクの開始アドレスと、チャンクサイズ1001と、チャンクデータサイズ1005とを暗号サイズ算出部211に出力し、コンテンツタイプ1102を鍵設定部212に出力し、コンテンツタイプ1102と、フレーム番号1103とを連鎖判定部213に出力する機能を有する。
チャンク情報取得部910は、CPUA111又はCPUB112によってコンテンツヘッダが書き込まれると、入力バッファ201が保持するデータがコンテンツヘッダである旨のコンテンツヘッダ信号を暗号エンジン950に出力する機能を有する。
以上のように構成されたコンテンツ復号処理装置3000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機1000がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダを入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダが入力バッファ201に書き込まれると、コンテンツ復号処理装置3000はコンテンツ復号処理を開始する。
図12は、コンテンツ復号処理装置3000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置3000がコンテンツ復号処理を開始すると、チャンク情報取得部910はコンテンツヘッダ信号を出力し、演算判定部221は出力されたコンテンツヘッダ信号を受け取る。
さらに、コンテンツヘッダ解析部930は、入力バッファ201が保持するコンテンツヘッダから、チャンク毎に対応付けられている、開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103との組を全て読み出し、読み出した、開始アドレス1101と、コンテンツタイプ1102と、フレーム番号1103との組を全て、フィールド情報蓄積部920に対応付けて記録する(ステップS1200)。
演算判定部221は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダを読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダを出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部910は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ1015から、チャンクサイズ1001と、チャンクデータサイズ1005とを取得し(ステップS1202)、加えて、フィールド情報蓄積部920から、入力バッファ201が保持するチャンクに対応するコンテンツタイプ1102と、フレーム番号1103とを取得して、チャンクの開始アドレスと、チャンクサイズ1001と、チャンクデータサイズ1005とを暗号サイズ算出部211に出力し、コンテンツタイプ1102を鍵設定部212に出力し、コンテンツタイプ1102と、フレーム番号1103とを連鎖判定部213に出力する。
以後、ステップS1205〜ステップS1265までの処理は、実施の形態1のコンテンツ復号処理装置2000の動作における、ステップS805〜ステップS865までの処理と同じ処理であるので説明を省略する。
なお、ステップS1205はステップS805、ステップS1210はステップS810、ステップS1215はステップS815、ステップS1220はステップS820、ステップS1225はステップS825、ステップS1230はステップS830、ステップS1235はステップS835、ステップS1240はステップS840、ステップS1245はステップS845、ステップS1250はステップS850、ステップS1255はステップS855、ステップS1265はステップS865に対応する。
ステップS1265において、コンテンツ復号処理装置3000が待機を開始してから所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS1270:Yes)、再びステップS1202の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS1270:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置3000は、コンテンツ復号処理を終了する。
<実施の形態3>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
本実施の形態3に係るコンテンツ復号処理装置は、復号するコンテンツを構成する暗号ブロックが、連続する2つのチャンクに分割されて構成されることを許されているデータフォーマットとなっているコンテンツを復号することができるように、実施の形態1で説明したコンテンツ復号処理装置2000を変形したものである。
本実施の形態3に係るコンテンツ復号処理装置は、実施の形態1で説明したコンテンツ復号処理装置2000の一部である、チャンク情報取得部210と、チャンク間連鎖値保持部216と、連鎖値記録部228とを変形し、さらに、新たに端数処理制御部1300と前処理部1301と後処理部1302とを備えるように変形した形態であって、実施の形態1の再生機1000の暗号エンジン150を、暗号エンジン150の一部を変形することで得られた暗号エンジン950に置き替えるように変形した再生機上で実現される。
以下、実施の形態1で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
<構成>
<コンテンツのデータ構造>
本実施の形態3に係るコンテンツ復号処理装置4000が復号するコンテンツは、実施の形態1の暗号ブロックが、連続する2つのチャンクに分割されて構成されるように変形されたデータフォーマットとなっている。
図13(a)は、コンテンツ復号処理装置4000の復号対象であるコンテンツにおける、コンテンツデータの一部のデータ構造を示す図であって、図13(b)は、図13(a)の一部分を拡大した図である。
暗号化されたフレーム1410は、コンテンツタイプがVideoであって、フレーム番号がjとなっており、チャンク1430と、チャンク1440と、チャンク1460との3つのフレームに分割されている。
暗号化されたフレーム1420は、コンテンツタイプがAudio1であって、フレーム番号がkとなっており、チャンク1450とチャンク1470との2つのフレームに分割されている。
暗号化されたVideoフレーム1410は、の8つの暗号ブロック1401〜1408から構成されているが、これらのうち、暗号ブロック1401と暗号ブロック1402とは、チャンク1430に含まれ、暗号ブロック1404と暗号ブロック1405とは、チャンク1440に含まれ、暗号ブロック1407と暗号ブロック1408とは、チャンク1460に含まれている。
暗号ブロック1403は、前半部分と後半部分とに分割され、前半部分はチャンク1430に含まれ、後半部分はチャンク1440に含まれている。
暗号ブロック1404は、前半部分と後半部分とに分割され、前半部分はチャンク1440に含まれ、後半部分はチャンク1460に含まれている。
上で述べたとおり、コンテンツ復号処理装置4000の復号対象であるコンテンツにおける、コンテンツデータは、暗号ブロックが、連続する2つのチャンクに分割されて構成されることが許されている。
<コンテンツ復号処理装置4000>
図14は、コンテンツ復号処理装置4000の機能構成を示すブロック図である。
コンテンツ復号処理装置4000は、実施の形態1のコンテンツ復号処理装置2000に対して、チャンク情報取得部210をチャンク情報取得部1310に変形し、チャンク間連鎖値保持部216をチャンク間連鎖値保持部1316に変形し、連鎖値記録部228を連鎖値記録部1328に変形し、新たに端数処理制御部1300と前処理部1301と後処理部1302とを追加したものである。
チャンク情報取得部1310は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402を鍵設定部212に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部213と端数処理制御部1300とに出力する機能を有する。
チャンク情報取得部1310は、CPUA111又はCPUB112によってコンテンツヘッダ301が書き込まれると、入力バッファ201が保持するデータがコンテンツヘッダ301である旨のコンテンツヘッダ信号を暗号エンジン1350に出力する機能を有する。
チャンク間連鎖値保持部1316は、コンテンツタイプと、フレーム番号と、連鎖値と、チャンクの後尾の暗号ブロックのサイズである端数データサイズとを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図15は、チャンク間連鎖値保持部1316が記憶する情報を示す図である。
図15に示されるように、チャンク間連鎖値保持部1316は、コンテンツタイプ1801のそれぞれに、フレーム番号1802と、連鎖値1803と、端数データサイズ1804とを対応付けて記憶している。
ここで記憶されているフレーム番号1802は、対応するコンテンツタイプ1801において最後に復号されたフレームのフレーム番号であって、連鎖値1803は、フレーム番号602に属する最後に復号されたチャンクの後尾の暗号ブロックが復号された際に算定された連鎖値であって、端数データサイズ1804はフレーム番号602に属する最後に復号されたチャンクの後尾の暗号ブロックのサイズである。
なお、フレーム番号1802と、連鎖値1803と端数データサイズ1804との組は、暗号エンジン150によって、コンテンツタイプ1801毎に上書きされる。
端数処理制御部1300は、チャンク情報取得部1310からコンテンツタイプ402とフレーム番号403とを受け取ると、受け取ったコンテンツタイプ402とフレーム番号403との組に対応付けられてチャンク間連鎖値保持部1316に記憶されている端数データサイズ1804を読み出し、入力バッファ201に記憶されているチャンクの先頭の暗号ブロックのサイズと、後尾の暗号ブロックのサイズとを算出し、前処理部1301と、演算部222と、後処理部1302とを用いて端数処理を実行し、後尾の暗号ブロックのサイズを連鎖値記録部1328に出力する機能を有する。
この端数処理については、後程図面を用いて説明する。
チャンクの先頭の暗号ブロックのサイズは、暗号ブロックの単位ビット数である128からチャンク間連鎖値保持部1316から読みだした端数データサイズ1804を減算することで算出し、チャンク後尾の暗号ブロックのサイズは、暗号サイズ算出部1311から出力される、チャンクデータサイズ405にチャンク間連鎖値保持部1316から読み出した端数データサイズ1804を加算し、加算結果を暗号ブロックの単位ビット数である128で除算したときの余りとして算出する。
前処理部1301は、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの先頭の暗号ブロックを受け取ると、先頭の暗号ブロックのサイズと128ビットとの差分のビット数の0を受け取った暗号ブロックの先頭に付与して128ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する機能を有する。
また、前処理部1301は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロックを受け取ると、128ビットに不足するビット数の0を受け取った暗号ブロックの後尾に付与して128ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する機能を有する。
後処理部1302は、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの先頭の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ると、先頭の暗号ブロックのサイズと128ビットとの差分のビット数の00を暗号ブロックの先頭から削除して合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する機能を有する。
また、後処理部1302は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの後尾の暗号ブロック復号することで得られた復号された暗号ブロックを受け取ると、128ビットに不足するビット数を暗号ブロックの後尾から削除して合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する機能を有する。
連鎖値記録部1328は、暗号サイズ算出部1311が出力する暗号ブロックの数と、連鎖判定部213が出力するコンテンツタイプと、フレーム番号と、演算部222が出力する連鎖値と、端数処理制御部1300が出力する後尾の暗号ブロックのサイズとを入力され、演算部222が出力する連鎖値が入力されると、入力された連鎖値を、チャンク間連鎖値保持部1316かチャンク内連鎖値保持部227のいずれか一方に記録する機能を有する。
連鎖値記録部1328は、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、連鎖判定部213から入力されるコンテンツタイプと、フレーム番号と、端数データサイズとを関連付けて、チャンク間連鎖値保持部1316に上書きして記録し、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部227に上書きして記録し、演算判定部221に暗号ブロック要請信号を出力する機能を有する。
なお、連鎖値記録部1328は、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合において、端数データサイズが128ビット未満の場合には、チャンク間連鎖値保持部1316に上書きして記録する連鎖値は、演算部222から前回入力された連鎖値とする機能を有する。
ここで、チャンク間連鎖値保持部1316に書き込む端数データサイズとは、端数処理制御部1300から入力される後尾の暗号ブロックのサイズのことである。
連鎖値記録部1328は、演算部222から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
この連鎖値数カウンタは、暗号サイズ算出部1311から暗号ブロックの数が入力される毎にリセットされる。
連鎖値記録部1328は、演算部222から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
暗号エンジン1350は、実施の形態1の暗号エンジン150に対して、チャンク間連鎖値保持部216を1316に変形し、連鎖値記録部228を連鎖値記録部1328に変形し、新たに端数処理制御部1300と前処理部1301と後処理部1302とを追加したものである。
<端数処理>
以下図面を用いて、端数処理制御部1300が、前処理部1301と、演算部222と、後処理部1302とを用いて行う端数処理について説明する。
図16は、暗号ブロックの前半が欠落している場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。
前処理部1301は、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの先頭の暗号ブロックを受け取ると、受け取った暗号ブロック1501は、先頭の暗号ブロックのサイズと128ビットとの差分のビット数だけ先頭のビットが欠落していると判断し、欠落しているビット数の0からなる補完データ1502を付与して、128ビットの合成暗号ブロックを作成する。
前処理部1301は、作成した暗号ブロックを演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する。
演算部222は、入力された128ビットの暗号ブロックと、128ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部1302に出力する。
後処理部1302は、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持する先頭の暗号ブロックが復号された暗号ブロックを受け取ると、受け取った復号された暗号ブロックは、先頭の暗号ブロックのサイズと128ビットとの差分のビット数だけ先頭のビットが不要なビットであると判断し、不要なビットを暗号ブロックの先頭から削除して合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する。
図17は、暗号ブロックの後半が欠落している場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。
前処理部1301は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロックを受け取ると、受け取った暗号ブロック1501は、後尾の暗号ブロックのサイズと128ビットとの差分のビット数だけ後尾のビットが欠落していると判断し、欠落しているビット数の0からなる補完データ1502を付与して、128ビットの合成暗号ブロックを作成する。
前処理部1301は、作成した暗号ブロックを演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する。
演算部222は、入力された128ビットの暗号ブロックと、128ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部1302に出力する。
後処理部1302は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの後尾の暗号ブロックが復号された暗号ブロックを受け取ると、受け取った復号された暗号ブロックは、後尾の暗号ブロックのサイズと128ビットとの差分のビット数だけ後尾のビットが不要なビットであると判断し、不要なビットを暗号ブロックの後尾から削除して合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する。
図18は、暗号ブロックに欠落がない場合の、前処理部1301と演算部222と後処理部1302とが行う処理の動作を示す図である。
前処理部1301は、(1)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビットである場合において、演算判定部221から入力バッファ201が保持するチャンクの先頭の暗号ブロックを受け取るとき、(2)端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビットである場合において、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロックを受け取るとき、(3)演算判定部221から入力バッファ201が保持するチャンクの先頭と後尾の暗号ブロック以外の暗号ブロックを受け取るときに、受け取った暗号ブロックは、欠落が無いと判断し、受け取った暗号ブロックをそのまま演算部222に出力する。
演算部222は、入力された128ビットの暗号ブロックと、128ビットの暗号連鎖値とのビットごとの排他的論理和を実行することで、復号された暗号ブロックを作成し、作成した復号された暗号ブロックを後処理部1302に出力する。
後処理部1302は、(1)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビットである場合において、演算部222から入力バッファ201が保持するチャンクの先頭の暗号ブロックが復号された暗号ブロックを受け取るとき、(2)端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビットである場合において、演算部222から入力バッファ201が保持するチャンクの後尾の暗号ブロックが復号された暗号ブロックを受け取るとき、(3)演算判定部221から入力バッファ201が保持するチャンクの先頭と後尾の暗号ブロック以外の暗号ブロックを受け取るときに、受け取った復号された暗号ブロックは、欠落が無いと判断し、受け取った復号された暗号ブロックをそのまま出力選択部229に出力する。
以上のように構成されたコンテンツ復号処理装置4000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ301を入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダが入力バッファ201に書き込まれると、コンテンツ復号処理装置3000はコンテンツ復号処理を開始する。
図19、図20は、コンテンツ復号処理装置4000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置4000がコンテンツ復号処理を開始すると、チャンク情報取得部910はコンテンツヘッダ信号を出力し、演算判定部221は出力されたコンテンツヘッダ信号を受け取る。
演算判定部221は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダ301を読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダ301を出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部1310は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して(ステップS1900)、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402を鍵設定部212に出力し、フレーム番号403を連鎖判定部213と端数処理制御部1300とに出力する。
暗号サイズ算出部1311は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とが入力されると、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数を計算し(ステップS1910)、チャンクの開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを演算判定部221に出力し、暗号ブロックの数を連鎖値記録部1328に出力する。
連鎖値記録部1328は、暗号サイズ算出部211から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部221は、暗号サイズ算出部1311から、チャンクの開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ311とパディング313とを読み出して出力選択部229に出力し、出力選択部229は入力されたチャンクヘッダ311とパディング313とを出力バッファ202に書き込み(ステップS1920)、連鎖値選択部226に初期値選択信号を出力する。
鍵設定部212は、チャンク情報取得部1310からコンテンツタイプ402を入力されると、鍵蓄積部214に、入力されたコンテンツタイプ402と関連付けられて記憶されている鍵502と初期値503とを読み出して、読み出した鍵502を鍵保持部223に出力し、読み出した初期値を初期値保持部224に出力し、鍵蓄積部214は、入力された鍵を上書きして記憶し、初期値保持部224は、入力された初期値を上書きして記憶する(ステップS1930)。
端数処理制御部1300は、チャンク情報取得部1310からコンテンツタイプ402とフレーム番号403とを受け取ると、受け取ったコンテンツタイプ402とフレーム番号403との組に対応付けられてチャンク間連鎖値保持部1316に記憶されている端数データサイズ1804を読み出し、入力バッファ201に記憶されているチャンクの先頭の暗号ブロックのサイズと、後尾の暗号ブロックのサイズとを算出し(ステップS1935)、算出した先頭の暗号ブロックのサイズを、前処理部1301と、後処理部1302とに出力し、算出した後尾の暗号ブロックのサイズを、連鎖値記録部1328に出力する。
連鎖判定部213は、チャンク情報取得部1310から、コンテンツタイプ402と、フレーム番号403とを入力されると、入力バッファ201に保持されているチャンクが暗号連鎖継続中であるか否かを判定するために、入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部1316に関連付けられて記憶されているか否かを調べて(ステップS1940)、記憶されている場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中であると判断し(ステップS1940:Yes)、コンテンツタイプ402とフレーム番号403とを連鎖値記録部1328に出力し、暗号連鎖信号とコンテンツタイプ402とを初期値選択部225に出力する。
初期値選択部225は、連鎖判定部213から、暗号連鎖継続信号と、コンテンツタイプ402との組みを受け取ると、チャンク間連鎖値保持部1316から、受け取ったコンテンツタイプ402と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部221から初期値選択信号を受け取っているので、初期値選択部225から入力される連鎖値を選択して、演算部222に出力する(ステップS1950)。
次に演算判定部221は、入力バッファ201に記憶されている暗号チャンクの先頭の暗号ブロックを読み出して、前処理部1301に出力する。
前処理部1301は、暗号ブロックが分割されているか否かを判断するために、端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満であるか否かを判断し(ステップS1970)、128ビット未満である場合に、暗号ブロックが分割されていると判断し(ステップS1970:Yes)、128ビットに不足するビット数の0を受け取った暗号ブロックの先頭に付与して128ビットの合成暗号ブロックを作成し、作成した合成暗号ブロックを、演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する。
ステップS1940において、入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、チャンク間連鎖値保持部1316に関連付けられて記憶されていない場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中でないと判断し(ステップS1940:No)、コンテンツタイプ402とフレーム番号403とを連鎖値記録部228に出力し、暗号終了信号を初期値選択部225に出力する。
初期値選択部225は、連鎖判定部213から、暗号連鎖終了信号を受け取ると、初期値保持部224が保持する初期値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部221から初期値選択信号を受け取っているので、初期値選択部225から初期値が入力されると、入力された初期値を演算部222で使用する連鎖値として演算部222に出力する(ステップS1960)。
次に演算判定部221は、入力バッファ201に記憶されている暗号チャンクの先頭の暗号ブロックを読み出して、前処理部1301に出力し、前処理部1301は、受け取った暗号ブロックをそのまま演算部222に出力する。
ステップS1980又はステップS1960の処理が終わると、演算部222は、前処理部1301から暗号チャンクの先頭の暗号ブロックを受け取る。
演算部222は、鍵保持部223に記録されている鍵と、連鎖値選択部から出力される連鎖値とを用いて、受け取った暗号ブロックを復号して後処理部1302に出力し、復号の際に算定した次の連鎖値を連鎖値記録部228に出力する(ステップS2000)。
後処理部1302は、(1)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの先頭の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ったとき又は、(2)端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの後尾の暗号ブロック復号することで得られた復号された暗号ブロックを受け取ったときに、受け取った復号された暗号ブロックが、前処理部1301によって補完データを付与された暗号ブロックが復号されたものであると判断し(ステップS2000:Yes)、受け取った復号された暗号ブロックの、付与された補完データに対応する部分を削除した合成平文を作成し、作成した合成平文を、演算判定部221から受け取った復号された暗号ブロックに替えて出力選択部229に出力する(ステップS2010)。
後処理部1302は、(1)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビットである場合、(2)端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビットである場合、(3)端数処理制御部1300から受け取った先頭の暗号ブロックのサイズが128ビット未満である場合において、演算部222から入力バッファ201が保持するチャンクの先頭の暗号ブロックと後尾の暗号ブロック以外の暗号ブロックを復号することで得られた復号された暗号ブロックを受け取ったときに、受け取った復号された暗号ブロックが、前処理部1301によって補完データを付与されてない暗号ブロックが復号されたものであると判断し(ステップS2000:No)、受け取った復号された暗号ブロックをそのまま出力選択部229に出力する。
ステップS2010又はステップS2005:Noの処理が終わると、出力選択部229は、後処理部1302から復号された暗号ブロックを受け取る。
出力選択部229は、演算部222から復号された暗号ブロックが入力されると、入力された復号された暗号ブロックを、出力バッファ202に書き込む。
連鎖値記録部228は、演算部222から連鎖値が入力されると、連鎖値数カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数と、暗号サイズ算出部から入力された暗号ブロックの数とを比較することで、演算部222から入力された連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定する(ステップS2015)。
ステップS2015において、新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し(ステップS2015:Yes)、演算部222から入力された連鎖値をチャンク内連鎖値保持部に上書きして記録し(ステップS2020)、連鎖値記録部228は、演算判定部221に暗号ブロック要請信号を出力する。
演算判定部221は、連鎖値記録部228から暗号ブロック要請信号を受け取ると、次の暗号ブロックを前処理部1301に出力し連鎖値選択信号を連鎖値選択部226に出力する。
前処理部1301は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビット未満である場合において、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロックを受け取ったときに、後続の暗号ブロックが分割されていると判断し(ステップS2025:Yes)、128ビットに不足するビット数の0を受け取った暗号ブロックの先頭に付与して128ビットの合成暗号ブロックを作成し(ステップS2030)、作成した合成暗号ブロックを、演算判定部221から受け取った暗号ブロックに替えて演算部222に出力する。
前処理部1301は、端数処理制御部1300から受け取った後尾の暗号ブロックのサイズが128ビットである場合、又は、演算判定部221から入力バッファ201が保持するチャンクの後尾の暗号ブロック以外の暗号ブロックを受け取った場合には、後続の暗号ブロックが分割されていないと判断し(ステップS2025:No)、演算判定部221から受け取った暗号ブロックをそのまま演算部222に出力する。
連鎖値選択部226は、連鎖値選択信号を受信すると、チャンク内連鎖値保持部227が保持する連鎖値を読み出して演算部222に出力する(ステップS2035)。
ステップS2035の処理が終わると、再びステップS2000の処理を開始する。
ステップS2015において、新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときは、入力された連鎖値がチャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断し(ステップS2015:No)、端数データサイズが128ビットであるときには、演算部222から入力された連鎖値を、連鎖判定部213から入力されたコンテンツタイプと、フレーム番号と、端数データサイズとを関連付けて、チャンク間連鎖値保持部1316に上書きして記録し、端数データサイズが128ビット未満の場合には、チャンク間連鎖値保持部1316に上書きして記録する連鎖値は、演算部222から前回入力された連鎖値を記録する(ステップS2040)。
ステップS2040の処理が終わると、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれるまで、コンテンツ復号処理装置4000は待機する(ステップS2050)。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS2055:Yes)、再びステップS1900の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS2055:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置2000は、コンテンツ復号処理を終了する。
<実施の形態4>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
本実施の形態2に係るコンテンツ復号処理装置は、実施の形態1のコンテンツ復号処理装置2000の復号対象であるコンテンツに含まれるチャンク310のチャンクヘッダ311の一部が変形し、チャンクヘッダに鍵情報と初期値情報とを含んでいるデータフォーマットであるコンテンツを復号することができるように、実施の形態1で説明したコンテンツ復号処理装置2000を変形したものである。
本実施の形態4に係るコンテンツ復号処理装置は、実施の形態1で説明したコンテンツ復号処理装置2000の一部である、チャンク情報取得部210と、鍵蓄積部214と、鍵設定部212とを変形し、さらに、新たに鍵生成部を備えるように変形した形態であって、コンテンツ復号処理装置2000と同様に、実施の形態1の再生機1000上で実現される。
以下、実施の形態1で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
<構成>
<コンテンツのデータ構造>
本実施の形態4に係るコンテンツ復号処理装置5000が復号するコンテンツは、実施の形態1のコンテンツ300を、実施の形態1のチャンクヘッダ311に、新たに鍵情報2205と、初期値情報2206とが加わっているように変形したコンテンツである。
図21は、本実施の形態4に係るコンテンツ復号処理装置3000の復号対象であるコンテンツを構成するチャンク2250のデータ構成を示す構成図である。
チャンク2250は、チャンクヘッダ1015、チャンクデータ1010、パディング1020から構成されている。
チャンクヘッダ2200は、暗号化されていないデータであって、チャンクのサイズを示す情報を含むチャンクサイズ2201、コンテンツタイプを示す情報を含むコンテンツタイプ2202、フレーム番号を示す情報を含むフレーム番号2203、デコードに使用する情報を含むデコード用ヘッダ情報2204、鍵を生成するための鍵情報2205、初期値を生成するための初期値情報2206、チャンクデータのサイズを示す情報を含むチャンクデータサイズ2207からなる。
このうち、チャンクサイズ2201、コンテンツタイプ2202、フレーム番号2203、デコード用ヘッダ情報2204、チャンクデータサイズ2207は、それぞれ、実施の形態1の、チャンクサイズ401、コンテンツタイプ402、フレーム番号403、デコード用ヘッダ情報404、チャンクデータサイズ405と同様のものである。
また、チャンクヘッダ2200の構成要素である、チャンクサイズ2201、コンテンツタイプ2202、フレーム番号2203、デコード用ヘッダ情報2204、鍵情報2205、初期値情報2206、チャンクデータサイズ2207のそれぞれのビット長と出現順番とは固定である。
ここで、鍵情報2205は自らを含むチャンクの属する暗号フレームを復号するための鍵を生成するための情報であって、初期値情報2206は、自らを含むチャンクの属する暗号フレームを復号するための初期値を生成するための情報である。
<コンテンツ復号処理装置5000>
図22は、コンテンツ復号処理装置5000の機能構成を示すブロック図である。
コンテンツ復号処理装置5000は、実施の形態1のコンテンツ復号処理装置2000に対して、チャンク情報取得部210をチャンク情報取得部2110に変形し、鍵蓄積部214を鍵蓄積部2114に変形し、鍵設定部212を鍵設定部2112に変形し、新たに鍵生成部2101を追加したものである。
チャンク情報取得部2110は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ2200から、チャンクサイズ2201と、チャンクデータサイズ2207と、コンテンツタイプ2202と、フレーム番号2203と、鍵情報2205と、初期値情報2206とを取得して、チャンクの開始アドレスと、チャンクサイズ2201と、チャンクデータサイズ2207とを暗号サイズ算出部211に出力し、コンテンツタイプ2202と、フレーム番号2203とを鍵設定部212と連鎖判定部213とに出力し、コンテンツタイプ2202と、フレーム番号2203と、鍵情報2205と、初期値情報2206とを鍵生成部2101に出力する機能を有する。
チャンク情報取得部2110は、CPUA111又はCPUB112によってコンテンツヘッダ301が書き込まれると、入力バッファ201が保持するデータがコンテンツヘッダ301である旨のコンテンツヘッダ信号を暗号エンジン150に出力する機能を有する。
鍵生成部2101は、チャンク情報取得部2110から、コンテンツタイプ2202と、フレーム番号203と、鍵情報2205と、初期値情報2206とを受け取ると、受け取った鍵情報2205から鍵を作成し、初期値情報2206から初期値を作成し、鍵蓄積部2114に、受け取ったコンテンツタイプ2202と、受け取ったフレーム番号203と、生成した鍵と、生成した初期値とを関連付けて記録する機能を有する。
また、鍵生成部2101は、鍵情報2205が暗号化されている場合には復号し、初期値情報2206が暗号化されている場合には復号する機能を有する。
鍵蓄積部2114は、コンテンツタイプと、フレーム番号と、鍵と、初期値とを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図23は、鍵蓄積部2114が記憶する情報を示す図である。
図23に示されるように、鍵蓄積部2114は、コンテンツタイプ2300と、フレーム番号2301と、鍵2302と、初期値2303とを関連付けて記憶している。
鍵設定部2112は、チャンク情報取得部2110からのコンテンツタイプ2202とフレーム番号2203とを入力されると、鍵蓄積部2114から、入力されたコンテンツタイプ2202とフレーム番号2203の組と関連付けられて記憶されている鍵2302と初期値2303とを読み出して、暗号エンジン150に出力する機能を有する。
以上のように構成されたコンテンツ復号処理装置5000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機1000がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダを入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの先頭のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダが入力バッファ201に書き込まれると、コンテンツ復号処理装置5000はコンテンツ復号処理を開始する。
図24は、コンテンツ復号処理装置2000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置5000がコンテンツ復号処理を開始すると、チャンク情報取得部2110はコンテンツヘッダ信号を出力し、演算判定部221は出力されたコンテンツヘッダ信号を受け取る。
演算判定部221は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダを読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダを出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部2110は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ2200から、チャンクサイズ2201と、チャンクデータサイズ2207と、コンテンツタイプ2202と、フレーム番号2203と、鍵情報2205と、初期値情報2206とを取得して(ステップS2400)、チャンクの開始アドレスと、チャンクサイズ2201と、チャンクデータサイズ2207とを暗号サイズ算出部211に出力し、コンテンツタイプ2202と、フレーム番号2203とを鍵設定部2112と連鎖判定部213とに出力し、コンテンツタイプ2202と、フレーム番号2203と、鍵情報2205と、初期値情報2206とを鍵生成部2101に出力する。
鍵生成部2101は、チャンク情報取得部2110から、コンテンツタイプ2202と、フレーム番号203と、鍵情報2205と、初期値情報2206とを受け取ると、受け取った鍵情報2205から鍵を作成し、初期値情報2206から初期値を作成し、鍵蓄積部2114に、受け取ったコンテンツタイプ2202と、受け取ったフレーム番号2203と、生成した鍵と、生成した初期値とを関連付けて記録する(ステップS2402)。
暗号サイズ算出部211は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ2201と、チャンクデータサイズ2207とが入力されると、パディング2230の開始アドレスと、チャンクの終了アドレスと、チャンクデータ2220に含まれる暗号ブロックの数を計算し(ステップS2405)、チャンクの開始アドレスと、パディング2230の開始アドレスと、チャンクの終了アドレスとを演算判定部221に出力し、暗号ブロックの数を連鎖値記録部228に出力する。
連鎖値記録部228は、暗号サイズ算出部211から暗号ブロックの数が入力されると、連鎖値数カウンタの計測する連鎖値の数をリセットする。
演算判定部221は、暗号サイズ算出部211から、チャンクの開始アドレスと、パディング2230の開始アドレスと、チャンクの終了アドレスとを受け取ると、入力バッファからチャンクヘッダ2200とパディング2230とを読み出して出力選択部229に出力し、出力選択部229は入力されたチャンクヘッダ2200とパディング2230とを出力バッファ202に書き込み(ステップS2410)、連鎖値選択部226に初期値選択信号を出力する。
鍵設定部2112は、チャンク情報取得部210からコンテンツタイプ2202とフレーム番号2203を入力されると、鍵蓄積部214に、入力されたコンテンツタイプ2202とフレーム番号2203との組と関連付けられて記憶されている鍵2302と初期値2303とを読み出して、読み出した鍵2302を鍵保持部223に出力し、読み出した初期値2303を初期値保持部224に出力し、鍵蓄積部214は、入力された鍵を上書きして記憶し、初期値保持部224は、入力された初期値を上書きして記憶する(ステップS2415)。
以降、ステップS2420〜ステップS2465までの処理は、実施の形態1のコンテンツ復号処理装置2000の動作における、ステップS820〜ステップS865までの処理と同じ処理であるので説明を省略する。
なお、ステップS2420はステップS820、ステップS2425はステップS825、ステップS2430はステップS830、ステップS2435はステップS835、ステップS2440はステップS840、ステップS2445はステップS845、ステップS2450はステップS850、ステップS2455はステップS855、ステップS2465はステップS865に対応する。
ステップS2465において、コンテンツ復号処理装置5000が待機を開始してから所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS2470:Yes)、再びステップS2400の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS2470:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、コンテンツ復号処理装置5000は、コンテンツ復号処理を終了する。
<実施の形態5>
以下、本発明に係るコンテンツ復号処理装置の一実施形態として、暗号連鎖ブロック方式で暗号化されたコンテンツを復号するコンテンツ復号処理装置について説明する。
本実施の形態5に係るコンテンツ復号処理装置は、実施の形態1のコンテンツ復号処理装置2000の復号対象であるコンテンツと同様のフォーマットのコンテンツを復号するコンテンツ復号処理装置であって、復号対象のコンテンツから、全てのチャンクのチャンクヘッダの情報を読み取って記録する第1処理部と、第1処理部に記憶されているチャンクヘッダの情報を用いてコンテンツを復号する第2処理部とから構成されるように、実施の形態1で説明したコンテンツ復号処理装置2000を変形したものである。
本実施の形態5に係るコンテンツ復号処理装置は、実施の形態1で説明したコンテンツ復号処理装置2000の一部である、チャンク情報取得部210と、暗号サイズ算出部211と、連鎖判定部213と、鍵設定部212と、演算判定部221と、初期値選択部225と、連鎖値記録部228とを変形し、さらに、暗号情報蓄積部と、フレーム番号蓄積部とを備えるように変形した形態であって、実施の形態1の再生機1000の暗号エンジン150を、暗号エンジン150の一部を変形することで得られた暗号エンジン2550に置き替えるように変形した再生機上で実現される。
以下、実施の形態1で説明したものと変更点のないものについての説明を省略し、変更点のあるものについて中心に説明する。
<構成>
<コンテンツ復号処理装置6000>
図25は、コンテンツ復号処理装置6000の機能構成を示すブロック図である。
コンテンツ復号処理装置6000は、実施の形態1のコンテンツ復号処理装置2000に対して、チャンク情報取得部210をチャンク情報取得部2510に変形し、暗号サイズ算出部211を暗号サイズ算出部2511に変形し、連鎖判定部213を連鎖判定部2413に変形し、鍵設定部212を鍵設定部2512に変形し、演算判定部221を演算判定部2521に変形し、初期値選択部225を初期値選択部2525に変形し、連鎖値記録部228を連鎖値記録部2528に変形し、さらに、暗号情報蓄積部2530と、フレーム番号蓄積部2522とを追加したものである。
チャンク情報取得部2510は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部213に出力し、コンテンツタイプ402と、フレーム番号403とを関連付けて暗号情報蓄積部2530に記録する機能を有する。
暗号サイズ算出部2511は、チャンク情報取得部210から、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを入力されると、チャンクデータ312の開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数を計算し、計算したチャンクデータの開始アドレスと、パディングの開始アドレスと、チャンクの終了アドレスと、暗号ブロックの数とを、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する機能を有する。
チャンクデータ312の開始アドレスは、チャンクの開始アドレスと固定長であるチャンクヘッダ311のサイズを加算することで算出され、パディング313の開始アドレスは、チャンクヘッダ311の開始アドレスにとチャンクデータサイズ405とを加算することで算出され、チャンクの終了アドレスは、チャンクの開始アドレスとチャンクサイズ401とを加算することで算出され、暗号ブロックの数は、チャンクデータサイズ405を暗号ブロックの単位ビット数である128で除算することで算出される。
フレーム番号蓄積部2522は、コンテンツタイプとフレーム番号とを関連付けて記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図26は、フレーム番号蓄積部2522が記憶する情報を示す図である。
図26に示されるように、フレーム番号蓄積部2522は、Videoと、Audio1と、Audio2との3つのコンテンツタイプ2701のそれぞれに、フレーム番号2702を対応付けて記憶している。
ここに記憶されているフレーム番号2702は、コンテンツタイプ2701のそれぞれにおいて、チャンク情報取得部2510によって取得されたフレーム番号のうち、最新のフレーム番号である。
連鎖判定部2513は、チャンク情報取得部2510からコンテンツタイプ402と、フレーム番号403との組み合わせが入力されると、チャンク情報取得部2510から入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、フレーム番号蓄積部2522に関連付けられて記憶されているか否かを調べて、記憶されている場合には、入力バッファ201に保持されてチャンクが暗号連鎖継続中であると判断し、記憶されていない場合には、入力バッファ201に保持されているチャンクが暗号連鎖継続中でないと判断する機能を有する。
連鎖判定部2513は、暗号連鎖中であると判断した場合には、暗号連鎖中の旨を、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、暗号連鎖中でないと判断した場合には、フレーム番号蓄積部2522に記憶されている、チャンク情報取得部2510から入力されるコンテンツタイプと同じコンテンツタイプ2701のフレーム番号2702を更新し、暗号連鎖終了の旨を、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する機能を有する。
暗号情報蓄積部2530は、復号対象のコンテンツを構成する全てのチャンクについての、開始アドレスと、コンテンツタイプと、フレーム番号と、チャンクデータ開始アドレスと、暗号ブロック数と、パディング開始アドレスと、チャンク終了アドレスと、連鎖の有無とを対応付けて、チャンクの順番に記憶するための記憶領域であって、メモリブロック120の一部として実装されている。
図27は、暗号情報蓄積部2530が記憶する情報を示す図である。
図27に示されるように、暗号情報蓄積部2530は、復号対象のコンテンツのチャンクの順番に、各チャンクの開始アドレス2601と、コンテンツタイプ2602と、フレーム番号2603と、チャンクデータ開始アドレス2604と、暗号ブロック数2605と、パディング開始アドレス2606と、チャンク終了アドレス2607と、連鎖の有無2608とを記憶している。
鍵設定部2512は、暗号情報蓄積部2530から、チャンクの順に順次コンテンツタイプ2602を読み出して、鍵蓄積部214から、読み出したコンテンツタイプ2602と関連付けられて記憶されている鍵502と初期値503とを読み出して、暗号エンジン150に出力する機能を有する。
演算判定部2521は、暗号情報蓄積部2530から、チャンクの順に順次チャンクの開始アドレス2601と、チャンクデータ開始アドレス2604と、パディング開始アドレス2606と、チャンク終了アドレス2607とを用いて、入力バッファ201に保持されているチャンクから、チャンクヘッダ311と、パディング313とを読み出して出力選択部229に出力し、チャンクデータ312を読み出して、暗号ブロック単位で演算部222に出力し、演算部222に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックである場合に、初期値選択信号を連鎖値選択部226に出力し、演算部222に出力する暗号ブロックが、チャンクデータの先頭の暗号ブロックでない場合に、連鎖値選択信号を連鎖値選択部226に出力する機能を有する。
なお、チャンクデータの先頭の暗号ブロックであるか否かは、チャンクデータの開始アドレスを用いて判断する。
初期値選択部2525は、暗号情報蓄積部2530から、チャンクの順に順次連鎖の有無2608と、コンテンツタイプ2602の組みを読み出し、読み出した連鎖の有無2608が連鎖中の旨を示すものであった場合に、チャンク間連鎖値保持部216から、読み出したコンテンツタイプ2602と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力し、読み出した連鎖の有無2608が連鎖中の旨を示すものでなかった場合に、初期値保持部224が保持している初期値を読み出して連鎖値選択部226に出力する機能を有する。
連鎖値記録部2528は、暗号情報蓄積部2530から、チャンクの順に順次暗号ブロック数2605と、コンテンツタイプ2602と、フレーム番号2603を読み出し、演算部222が出力する連鎖値が入力された場合に、入力された連鎖値を、チャンク間連鎖値保持部216かチャンク内連鎖値保持部227のいずれか一方に記録する機能を有する。
連鎖値記録部2528は、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものである場合には、入力された連鎖値を、暗号情報蓄積部2530から読み出したコンテンツタイプ2602と、フレーム番号2603と関連付けて、チャンク間連鎖値保持部216に上書きして記録し、演算部222から入力される連鎖値が、演算部222がチャンクの後尾の暗号ブロックを復号する際に出力されたものでない場合には、入力された連鎖値を、チャンク内連鎖値保持部227に上書きして記録し、演算判定部2521に暗号ブロック要請信号を出力する機能を有する。
連鎖値記録部228は、演算部222から入力される連鎖値が、チャンクの後尾の暗号ブロックを復号する際に出力されたものであるか否かを判定するために、入力される連鎖値の数を計測する連鎖値数カウンタを備えている。
この連鎖値数カウンタは、暗号情報蓄積部2530から暗号ブロック数2605を読み出す毎にリセットされる。
連鎖値記録部228は、演算部222から連鎖値が入力された場合に、連鎖値カウンタの計測する連鎖値数に1を加えて新たな連鎖値数とし、この新たな連鎖値数が暗号サイズ算出部211から入力される暗号ブロックの数未満のときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値でないと判断し、連鎖値数カウンタの計測する連鎖値の数が暗号サイズ算出部211から入力される暗号ブロックの数と等しいときには、チャンクの後尾の暗号ブロックを復号する際に出力された連鎖値であると判断する。
暗号エンジン2550は、実施の形態1の暗号エンジン150に対して、演算判定部221を演算判定部2521に変形し、初期値選択部225を初期値選択部2525に変形し、連鎖値記録部228を連鎖値記録部2528に変形したものである。
第1処理部2501は、チャンク情報取得部2510と、暗号サイズ算出部2511と、連鎖判定部2513と、暗号情報蓄積部2530と、フレーム番号蓄積部2522とから構成され、CPUA111によって制御される。
第1処理部2501は、コンテンツに含まれる全てのチャンクのチャンクヘッダから、コンテンツの復号に必要な情報をチャンク順に取得し、暗号情報蓄積部2530に蓄積するチャンクデータ蓄積処理を行なう。
第2処理部2502は、鍵設定部2512と、鍵蓄積部214と、チャンク間連鎖値保持部216と、暗号エンジン2550とから構成され、CPUB112によって制御される。
第2処理部2502は、第1処理部の暗号情報蓄積部2530からコンテンツの復号に必要な情報を読み出し、コンテンツを復号するコンテンツ復号処理を行なう。
以上のように構成されたコンテンツ復号処理装置6000の動作の詳細について、以下図面を用いて説明する。
<動作>
再生機1000がコンテンツの再生処理を開始すると、CPUA111又はCPUB112は、外部記録媒体137、ハードディスク装置131の内蔵するハードディスク、又は、RAM122に書き込まれている復号対象のコンテンツについて、まず、コンテンツヘッダ301を入力バッファ201に書き込む。
以後CPUA111又はCPUB112は、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
コンテンツヘッダ301が入力バッファ201に書き込まれると、コンテンツ復号処理装置6000の第1処理部2501は、コンテンツに含まれるチャンクのチャンクヘッダから、コンテンツの復号に必要な情報をチャンク順に取得し、暗号情報蓄積部2530に蓄積する。
第1処理部2501が、チャンクデータ蓄積処理を終了すると、再びCPUA111又はCPUB112は、コンテンツヘッダ301を入力バッファ201に書き込み、その後、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
2度目にコンテンツヘッダ301が入力バッファに書き込まれると、コンテンツ復号処理装置6000の第2処理部2502はコンテンツ復号処理を開始する。
図28と図29とは、コンテンツ復号処理装置6000の行うコンテンツ復号処理のフローチャートである。
コンテンツ復号処理装置6000の第1処理部2501がチャンクヘッダの情報読み取り処理を開始すると、チャンク情報取得部2510はコンテンツヘッダ信号を出力し、演算判定部2521は出力されたコンテンツヘッダ信号を受け取る。
演算判定部2521は、コンテンツヘッダ信号を受け取ると、入力バッファ201からコンテンツヘッダ301を読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダ301を出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、チャンク情報取得部2510は、入力バッファ201が保持するチャンクの開始アドレスを取得し、さらに、チャンクヘッダ311から、チャンクサイズ401と、チャンクデータサイズ405と、コンテンツタイプ402と、フレーム番号403とを取得して(ステップS2800)、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを暗号サイズ算出部211に出力し、コンテンツタイプ402と、フレーム番号403とを連鎖判定部2513に出力し、コンテンツタイプ402と、フレーム番号403とを関連付けて暗号情報蓄積部2530に記録する。
暗号サイズ算出部2511は、チャンク情報取得部210からの、チャンクの開始アドレスと、チャンクサイズ401と、チャンクデータサイズ405とを入力とし、チャンクデータ312の開始アドレスと、パディング313の開始アドレスと、チャンクの終了アドレスと、チャンクデータ312に含まれる暗号ブロックの数を計算する(ステップS2810)。
連鎖判定部2513は、チャンク情報取得部210から入力されるコンテンツタイプ402と、フレーム番号403との組み合わせが、フレーム番号蓄積部2522に関連付けられて記憶されているか否かを調べて(ステップS2820)、記憶されていない場合には、フレーム番号蓄積部2522に記憶されている、チャンク情報取得部210から入力されるコンテンツタイプと同じコンテンツタイプ2701のフレーム番号2702を更新する。
暗号サイズ算出部2511は、計算したチャンクデータの開始アドレスと、パディングの開始アドレスと、チャンクの終了アドレスと、暗号ブロックの数とを、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、連鎖判定部2513は、ステップS2820において、記憶されている場合には、暗号連鎖中の旨を、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録し、記録されていない場合には、暗号連鎖終了の旨を、暗号情報蓄積部2530に、チャンク情報取得部2510によって記録されたコンテンツタイプと、フレーム番号の組と関連付けて記録する(ステップS2840)。
ステップS2840の処理が終わると、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれるまで、コンテンツ復号処理装置2000は待機する(ステップS2850)。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS2850:Yes)、再びステップS800の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS2850:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、第1処理部2501は、チャンクデータ蓄積処理を終了する。
第1処理部2501が、チャンクデータ蓄積処理を終了すると、再びCPUA111又はCPUB112は、コンテンツヘッダ301を入力バッファ201に書き込み、その後、コンテンツデータの最初のチャンクから順に、最後のチャンクになるまでチャンクを入力バッファ201に書き込んでいく。
2度目にコンテンツヘッダ301が入力バッファに書き込まれると、コンテンツ復号処理装置6000の第2処理部2502はコンテンツ復号処理を開始する。
コンテンツ復号処理装置2000がコンテンツ復号処理を開始すると、演算判定部2521は、入力バッファ201からコンテンツヘッダ301を読み出して出力選択部229に出力し、出力選択部229は、受け取ったコンテンツヘッダ301を出力バッファ202に書き込む。
CPUA111又はCPUB112によってチャンクが入力バッファ201に書き込まれると、演算判定部2521は、暗号情報蓄積部2530から、書き込まれたチャンクに対応する、開始アドレス2601と、パディング開始アドレス2606と、チャンク終了アドレス2607とを読み出し、鍵設定部2512は、暗号情報蓄積部2530から、書き込まれたチャンクに対応する、コンテンツタイプ2602を読み出し、初期値選択部2525は、暗号情報蓄積部2530から、書き込まれたチャンクに対応する、連鎖の有無2608と、コンテンツタイプ2602とを読み出し、連鎖値記録部2528は、暗号情報蓄積部2530から、書き込まれたチャンクに対応する、暗号ブロック数2605と、コンテンツタイプ2602と、フレーム番号2603を読み出し、連鎖値数カウンタの計測する連鎖値の数をリセットする(ステップS2900)。
演算判定部2521は、暗号情報蓄積部2530から、開始アドレス2601と、パディング開始アドレス2606と、チャンク終了アドレス2607とを読み出すと、入力バッファからチャンクヘッダ311とパディング313とを読み出して出力選択部229に出力し、出力選択部229は入力されたチャンクヘッダ311とパディング313とを出力バッファ202に書き込み(ステップS2910)、連鎖値選択部226に初期値選択信号を出力する。
鍵設定部2512は、暗号情報蓄積部2530からコンテンツタイプ2602を入力されると、鍵蓄積部214に、入力されたコンテンツタイプ2602と関連付けられて記憶されている鍵502と初期値503とを読み出して、読み出した鍵502を鍵保持部223に出力し、読み出した初期値503を初期値保持部224に出力し、鍵蓄積部214は、入力された鍵を上書きして記憶し、初期値保持部224は、入力された初期値を上書きして記憶する(ステップS2915)。
初期値選択部2525は、暗号情報蓄積部2530から、チャンクの順に順次連鎖の有無2608と、コンテンツタイプ2602の組みを読み出す(ステップS2920)と、読み出した連鎖の有無2608が連鎖中の旨を示すものであった場合に(ステップS2920:Yes)、チャンク間連鎖値保持部216から、読み出したコンテンツタイプ2602と関連付けられて記憶されている連鎖値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部2521から初期値選択信号を受け取っているので、初期値選択部2525から入力される連鎖値を選択して、演算部222に出力する(ステップS2925)。
ステップS2920において、読み出した連鎖の有無2608が連鎖中の旨を示すものでなかった場合に(ステップS2920:No)、初期値保持部224が保持している初期値を読み出して連鎖値選択部226に出力する。
連鎖値選択部226は、演算判定部2521から初期値選択信号を受け取っているので、初期値選択部2525から初期値が入力されると、入力された初期値を演算部222で使用する連鎖値として演算部222に出力する(ステップS2930)。
ステップS2925又はステップS2930の処理が終わった後のステップS2935〜ステップS2965までの処理は、実施の形態1のコンテンツ復号処理装置2000の動作における、ステップS835〜ステップS865までの処理と同じ処理であるので説明を省略する。
なお、ステップS2935はステップS835、ステップS2940はステップS840、ステップS2945はステップS845、ステップS2950はステップS850、ステップS2955はステップS855、ステップS2965はステップS865に対応する。
ステップS2965において、第2処理部2502が待機を開始してから所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれた場合には(ステップS2970:Yes)、再びステップS1202の処理を開始する。
所定時間、例えば1msの間に、CPUA111又はCPUB112によって後続のチャンクが入力バッファ201に書き込まれなかった場合には(ステップS2970:No)、コンテンツデータ302に後続のチャンクが存在していないと判断し、第2処理部2502はコンテンツ復号処理を終了し、コンテンツ復号処理装置6000は、コンテンツ復号処理を終了する。
<補足>
以上、本発明に係るコンテンツ復号処理装置の一実施形態として、復号対象のデータストリームのデータ構造が、第1種暗号フレーム(例えば暗号化されたビデオフレーム)に属する連鎖する暗号ブロック列からなる暗号チャンク間に、第2種暗号フレーム(例えば暗号化されたオーディオフレーム)に属する暗号ブロック列からなる暗号チャンクが存在しているデータ構造であっても、データストリームを正しく復号することができるコンテンツ復号処理装置について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示したとおりのコンテンツ復号処理装置に限られないことはもちろんである。
(1)実施の形態1において、CPUブロック110はCPUA111とCPUB112の2つのCPUから構成されるとしたが、CPUの数は1つでも構わないし、3つ以上であっても構わないし、デュアルCPUコア機能を持った1つのプロセッサであっても構わないし、クワッドCPUコア機能を持った1つのプロセッサであっても構わない。
(2)実施の形態1において、ROM121はROMであるとしたが、読み書き可能な不揮発性メモリが含まれていても構わない。
(3)実施の形態1において、暗号エンジン150はDSPであるとしたが、必ずしもDSPである必要はなく、例えばCPUA111又はCPUB112がソフトウエアを実行することで実現される構成であっても構わないし、CPUA111、CPUB112以外のCPUがソフトウエアを実行することで実現される構成であっても構わないし、ASICやFPGA等で実現される構成であっても構わない。
同様に、実施の形態1において、AVデコーダ160はDSPであるとしたが、必ずしもDSPである必要はなく、例えばCPUA111又はCPUB112がソフトウエアを実行することで実現される構成であっても構わないし、CPUA111、CPUB112以外のCPUがソフトウエアを実行することで実現される構成であっても構わないし、ASICやFPGA等で実現される構成であっても構わない。
(4)実施の形態1において、周辺デバイスブロック130は、ハードディスク装置131と、ハードディスク装置インターフェース141と、読取書込装置132と、読取書込装置インターフェース142と、出力装置133と、出力装置インターフェース143と、入力装置134と、入力装置インターフェース144と、通信装置135とから構成されているとしたが、少なくとも、出力装置133と、出力装置インターフェース143と、入力装置134と、入力装置インターフェース144とを備えていれば、これら全てを備えている構成ではなくても構わない。
(5)実施の形態1において、AVデコーダ160は、MPEG2デコード機能、MPEG4デコード機能、MPEG4−AVCデコード機能を有するとしたが、これらの符号化方式で符号化されたデータ以外のデータをデコードする機能を有していても構わない。
(6)実施の形態1において、出力装置133は、LCD(Liquid Crystal Display)と、スピーカとで構成されているとしたが、LCDの替わりに、PDP(Plasma Display Panel)や、有機EL(Electro-Luminescence)ディスプレイや、ブラウン管であっても構わない。
(7)実施の形態1において、再生機1000は、パーソナルコンピュータであるとしたが、コンテンツを復号する機能を持つ物であれば、例えば、汎用コンピュータ、テレビ受像機、DVD再生機、DVD録再生機、BD再生機、BD録再生機、PDA(Personal Digital Assistance)、又は、携帯通信端末等であっても構わない。
(8)実施の形態1において、入力装置134は、ユーザによる操作を受け付けるキーボードと、マウスとから構成されるとしたが、ユーザによる再生機1000の操作コマンドを受け付ける機能を有するものであれば、例えば、ユーザによる操作を受け付ける入力ボタンや、ユーザが操作するリモートコントローラからの信号を受信する受信装置等であっても構わない。
(9)実施の形態1において、復号対象のコンテンツは、暗号化されたVideoESと、暗号化されたAudio1ESと、暗号化されたAudio2ESとが多重化されたものであるとしたが、少なくとも互いに異なる2つのESが多重化されたものであれば、これらのES以外のESが多重化されたものであっても構わない。
例えば、Video1ESと、Video2ESと、Video3ESと、AudeioESとが多重化されたものである場合等が考えられる。
また、暗号化されたVideoESは、撮影された映像がMPEG4−AVC方式で符号化され、符号化されることで得られた多数のVideoフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたものであるとしたが、例えば、MPEG2、MPEG4、Motion JPEG(Joint Photographic Experts Group)等のMPEG4−AVC方式以外の方式で符号化されていても構わない。
さらに、暗号化されたAudio1ES、Audio2ESは、撮影された音声がMPEG4−AVC方式で符号化され、符号化されることで得られた多数のAudioフレームのそれぞれを、暗号連鎖ブロック方式で暗号化されることによって得られたものであるとしたが、例えば、MPEG2、MPEG4等のMPEG4−AVC方式以外の方式で符号化されていても構わない。
(10)実施の形態1において、チャンクヘッダの構成要素のそれぞれは、ビット長と出現順番が固定であるとしたが、ビット長を示す情報があればビット長は固定でなくても構わないし、順番を示す情報があれば順番は固定でなくても構わない。
(11)実施の形態1において、チャンクデータは3つの暗号ブロックからなるとしたが、3つ以外の数の暗号ブロックからなるとしても構わない。
(12)実施の形態1において、暗号ブロックは、AES暗号方式を用いてCTRモードで暗号連鎖化されたものであるとしているが、例えば、CBC(Cipher Block Chaining)モードといったCRTモード以外のモードで暗号化されたものであっても構わないし、例えば、DES(Data Encryption Standard)暗号方式といったAES暗号方式以外の暗号方式で暗号化されたものであっても構わない。
また、暗号ブロックのビット長は128ビット、連鎖値のビット長は128ビット、鍵のビット長は128ビットであるとしたが、これらのビット長は、暗号ブロックの暗号方式に応じて、128ビット以外のビット長であるとしても構わない。
例えば、暗号ブロックの暗号方式がDES暗号方式である場合には、暗号ブロックのビット長は56ビット、連鎖値のビット長は56ビット、鍵のビット長は56ビットとなる。
(13)実施の形態1において、演算部222は、AES暗号回路701を備える構成としているが、暗号ブロックの暗号化方式に応じて、例えばDES暗号といったAES暗号以外の暗号方式の暗号回路であっても構わない。
(14)実施の形態1において、インクリメンタ703は入力される連鎖値のうち、下位32ビットの部分のみを1だけインクリメントして次の連鎖値を算定するとしたが、例えば、下位64ビットの部分のみを1だけインクリメントして次の連鎖値を算定するといったように、下位32ビット以外の部分を1だけインクリメントするとしても構わないし、例えば、2や−1といった1以外の数をインクリメントするとしても構わない。
(15)実施の形態1において、復号対象のコンテンツのフォーマットについて図を用いて説明したが、復号対象のコンテンツのファイル形式は、説明したフォーマットに違反していない形式の、例えば、ASF(Advanced Streaming Format)形式や、MP4ファイル形式や、QuickTimeファイル形式である場合が考えられる。
(16)実施の形態1において、暗号に使用する鍵は、コンテンツタイプ毎に用意されている例を示したが、例えば、基本となる鍵を1つ用意しておいて、コンテンツタイプ毎に特定の処理を施すことで、各コンテンツタイプ用の鍵を生成するとしてもよい。
(17)実施の形態1において、CPUブロック110は2つのCPUからなり、メモリブロックはROMとRAMとからなり、暗号エンジン150はDSPからなり、AVデコーダ160はDSPからなる構成としたが、これ以外の構成、例えば、CPUブロック110と、メモリブロック120と、周辺デバイスブロック130と、暗号エンジン150と、AVデコーダ160と、バスライン140の一部とが1つの集積回路で実現されている構成であっても構わない。
図30は、再生機1000のブロック構成を示すブロック図であって、再生機1000のうち、CPUブロック110と、メモリブロック120と、周辺デバイスブロック130と、暗号エンジン150と、AVデコーダ160と、バスライン140の一部とが1つの集積回路10で実現されていることを示している。
(18)実施の形態4において、復号対象のコンテンツは、鍵情報2205がチャンクヘッダ2200に含まれるデータフォーマットであるとしたが、鍵情報2205がチャンクデータ2220を構成する暗号ブロックに含まれるとしても構わない。
このようなデータフォーマットのコンテンツの場合には、チャンク情報取得部2210はチャンクデータの暗号ブロックから鍵情報を取得し、鍵生成部2101は、チャンク情報取得部2210から鍵情報を取得する構成となる。
鍵生成部2101は、鍵情報が暗号化されている場合には、暗号化された鍵情報を復号してから鍵を作成する。
同様に、実施の形態4において、復号対象のコンテンツは、初期値情報2206がチャンクヘッダ2200に含まれるデータフォーマットであるとしたが、初期値情報2206がチャンクデータ2220を構成する暗号ブロックに含まれるとしても構わない。
このようなデータフォーマットのコンテンツの場合には、チャンク情報取得部2210はチャンクデータの暗号ブロックから初期値情報を取得し、鍵生成部2101は、チャンク情報取得部2210から初期値情報を取得する構成となる。
鍵生成部2101は、初期値情報が暗号化されている場合には、暗号化された初期値情報を復号してから鍵を作成する。
(19)実施の形態4において、鍵情報2205は鍵を生成するための情報であり、初期値情報2206は初期値を生成するための情報であるとしたが、鍵情報2205は鍵そのものであるとしても構わないし、初期値情報2206は初期値そのものであるとしても構わない。
(20)実施の形態4において、鍵情報2205は、各暗号化されたESに属する全てのフレームで共通のものを用いても構わないし、チャンク単位で互いに異なるものを用いても構わないし、さらには、鍵情報2205がチャンクデータ2220を構成する暗号ブロックに含まれている場合であれば、1つのチャンク内に複数の鍵情報2205が存在し、同一のチャンク内の暗号ブロックが、互いに異なる鍵情報2205を用いても構わない。
同様に、実施の形態4において、初期値情報2206は、各暗号化されたESに属する全てのフレームで共通のものを用いても構わないし、チャンク単位で互いに異なるものを用いても構わないし、さらには、初期値情報2206がチャンクデータ2220を構成する暗号ブロックに含まれている場合であれば、1つのチャンク内に複数の鍵情報2205が存在し、同一のチャンク内の暗号ブロックが、互いに異なる鍵情報2205を用いても構わない。
(21)実施の形態5において、第1処理部2501はCPUA111によって制御され、第2処理部2502はCPUB112によって制御されるとしたが、これ以外の構成、例えば、第1処理部2501はCPUA111とCPUB112とによって制御されるとしても構わないし、第2処理部2502はCPUA111とCPUB112とによって制御されるとしても構わない。
さらには、CPUブロック110が、3つ以上のCPUから構成される場合に、第1処理部2501は3つ以上のCPUによって制御されるとしても構わないし、第2処理部2502は3つ以上のCPUによって制御されるとしても構わない。
また、CPUブロックに、取り扱う情報を秘匿する機能を有するセキュアCPUが存在し、そのセキュアCPUが第2処理部2502によって制御されるようにすることで、鍵蓄積部214が記憶する鍵と初期値とを第三者に知られないようにするとしても構わない。
(22)実施の形態5において、第1処理部2501がチャンクデータ蓄積処理を終了した後に、第2処理部2502がコンテンツ復号処理を開始する例について説明したが、第1処理部2501によるチャンクデータ蓄積処理が最後まで終了していなくても、暗号情報蓄積部2530に一部のチャンクの情報が記憶された状態で、第2処理部2502がコンテンツ復号処理を開始するとしても構わない。
(23)実施の形態1において、外部記録媒体137とは、DVD、DVD−R、DVD−RAM、BD、BD−R、BD−RE等であるとしたが、読み取り可能な記録媒体であれば、例えば、CD(Compact Disc)、CD−R、SDカード等であっても構わない。
また、読取書込装置132は、DVD、DVD−R、BD、BD−R、BD−RE等へのデータの書込みや読取りをすることができるとしたが、データの書込みや読取が可能尾な記録媒体であれば、例えば、CD、CD−R、SDカード等へのデータの書込みや読取りをすることができても構わない。
(24)実施の形態1において、外部伝送媒体136とは、光通信回線、電話通信回線、放送波等であるとしたが、これらの形態は、デジタル信号を伝送することができる形態であれば、例えば、有線の形態であったり、無線の形態であったり、赤外線の形態であったりしても構わない。
本発明は、暗号化されたデジタルデータを復号する復号処理装置に広く利用することができる。
150 暗号エンジン
201 入力バッファ
202 出力バッファ
210 チャンク情報取得部
211 暗号サイズ算出部
212 鍵設定部
213 連鎖判定部
214 鍵蓄積部
216 チャンク間連鎖値保持部
221 演算判定部
222 演算部
223 鍵保持部
224 初期値保持部
225 初期値選択部
226 連鎖値選択部
227 チャンク内連鎖値保持部
228 連鎖値記録部
229 出力選択部

Claims (6)

  1. 複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第1種暗号フレームに属する暗号チャンクと、第2種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号するコンテンツ復号処理装置であって、
    連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、
    暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、
    前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部とを備え、
    前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とするコンテンツ復号処理装置。
  2. 前記連鎖値保持部は、連鎖値を記憶するためのチャンク内連鎖値保持部を含み、
    前記連鎖値記録部は、前記復号部によって暗号ブロックが復号された場合において、チャンクの後尾でない暗号ブロックが復号されたときに、前記復号部で算定された連鎖値を前記チャンク内連鎖値保持部に記憶されている連鎖値に上書きして記録し、
    前記復号部は、復号する暗号ブロックがチャンクの先頭の暗号ブロックでない場合に、前記チャンク内連鎖値保持部に記録されている連鎖値を用いて暗号ブロックを復号することを特徴とする
    請求項1記載のコンテンツ復号処理装置。
  3. 前記連鎖値記録部は、暗号フレームの識別情報と連鎖値とを関連付けて前記連鎖値保持部に記録する場合に、暗号フレーム種毎に、暗号フレームを示す情報と連鎖値とを前記連鎖値保持部に上書きして記録することを特徴とする
    請求項1記載のコンテンツ復号処理装置。
  4. 前記復号部の復号対象である暗号ブロックが所定のビット数に足りない場合に、当該暗号ブロックが前記所定のビット数となるように、当該暗号ブロックに付与データを付与するデータ付与部と、
    前記復号部によって復号された暗号ブロックを記憶するための復号データ保持部と、
    前記復号部によって復号された暗号ブロックの一部分を前記復号データ保持部に記録する復号データ記録部とをさらに備え、
    前記復号部の復号対象である暗号ブロックが前記所定のビット数に足りない場合に、前記データ付与部は、前記復号対象である暗号ブロックに付与データを付与して、前記所定のビット数の合成暗号ブロックを生成し、前記復号部は、前記復号対象の暗号ブロックの代わりに前記合成暗号ブロックを復号し、前記復号データ記録部は、前記復号部によって復号された合成暗号ブロックのうち、前記データ付与部によって付与された付与データの部分が前記復号部によって復号されることで得られた部分以外の部分を前記復号データ保持部に記録することを特徴とする
    請求項1記載のコンテンツ復号処理装置。
  5. 暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部を備えるコンテンツ復号処理装置に、複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第1種暗号フレームに属する暗号チャンクと、第2種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号させるコンテンツ復号処理方法であって、
    前記コンテンツ復号処理装置の復号部が、連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号ステップと、
    前記コンテンツ復号処理装置の連鎖値記録部が、前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号ステップによって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録ステップとを備え、
    前記復号ステップは、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とするコンテンツ復号処理方法。
  6. 複数種類に分類されるフレームのそれぞれが連鎖暗号ブロック方式で、連鎖する暗号ブロック列からなるチャンクを複数含む形態で暗号化され、複数の暗号フレームそれぞれを分割し、第1種暗号フレームに属する暗号チャンクと、第2種暗号フレームに属する暗号チャンクとが混在するように、ストリームライン化してなるデータストリームを復号する集積回路であって、
    連鎖値を用いて前記データストリームに含まれる暗号ブロックを順に復号し、暗号ブロックを復号する毎に新たな連鎖値を算定する復号部と、
    暗号フレームの識別情報と連鎖値とを関連付けて記憶するための連鎖値保持部と、
    前記復号部によってチャンクの後尾の暗号ブロックが復号された場合に、前記復号部によって復号された暗号ブロックの属する暗号フレームの識別情報と、当該復号された暗号ブロックの復号の際に前記復号部によって算定された連鎖値とを関連付けて前記連鎖値保持部に記録する連鎖値記録部とを備え、
    前記復号部は、前記連鎖値保持部を参照して、復号する暗号ブロックがチャンクの先頭の暗号ブロックである場合において、前記復号する暗号ブロックが属する暗号フレームの一部を既に復号していたときに、当該暗号ブロックを復号する際に用いる連鎖値として、当該暗号フレームの暗号ブロックのうち、最後に復号した暗号ブロックの復号の際に算定した連鎖値を用いることを特徴とする集積回路。
JP2010537695A 2008-11-13 2009-11-12 コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路 Withdrawn JPWO2010055658A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008290528 2008-11-13
JP2008290528 2008-11-13
PCT/JP2009/006033 WO2010055658A1 (ja) 2008-11-13 2009-11-12 コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路

Publications (1)

Publication Number Publication Date
JPWO2010055658A1 true JPWO2010055658A1 (ja) 2012-04-12

Family

ID=42169803

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010537695A Withdrawn JPWO2010055658A1 (ja) 2008-11-13 2009-11-12 コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路

Country Status (5)

Country Link
US (1) US20110170687A1 (ja)
EP (1) EP2352251A1 (ja)
JP (1) JPWO2010055658A1 (ja)
CN (1) CN102224704A (ja)
WO (1) WO2010055658A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8094814B2 (en) * 2005-04-05 2012-01-10 Broadcom Corporation Method and apparatus for using counter-mode encryption to protect image data in frame buffer of a video compression system
CN101636726B (zh) 2007-01-05 2013-10-30 Divx有限责任公司 包含连续播放的视频分配系统
CA2782825C (en) 2009-12-04 2016-04-26 Divx, Llc Elementary bitstream cryptographic material transport systems and methods
US8914534B2 (en) 2011-01-05 2014-12-16 Sonic Ip, Inc. Systems and methods for adaptive bitrate streaming of media stored in matroska container files using hypertext transfer protocol
US9467708B2 (en) 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
US8787570B2 (en) 2011-08-31 2014-07-22 Sonic Ip, Inc. Systems and methods for automatically genenrating top level index files
US8909922B2 (en) 2011-09-01 2014-12-09 Sonic Ip, Inc. Systems and methods for playing back alternative streams of protected content protected using common cryptographic information
US9066117B2 (en) * 2012-02-08 2015-06-23 Vixs Systems, Inc Container agnostic encryption device and methods for use therewith
CN102867153B (zh) * 2012-08-30 2014-04-09 腾讯科技(深圳)有限公司 一种加密、解密视频文件的方法、装置及移动终端
US8769306B1 (en) * 2012-09-05 2014-07-01 Amazon Technologies, Inc. Protecting content with initialization vector manipulation
US9313510B2 (en) 2012-12-31 2016-04-12 Sonic Ip, Inc. Use of objective quality measures of streamed content to reduce streaming bandwidth
US9191457B2 (en) 2012-12-31 2015-11-17 Sonic Ip, Inc. Systems, methods, and media for controlling delivery of content
US9570112B2 (en) * 2013-12-20 2017-02-14 Opentv, Inc. Multiple views recording
US9397833B2 (en) * 2014-08-27 2016-07-19 International Business Machines Corporation Receipt, data reduction, and storage of encrypted data
US9397832B2 (en) 2014-08-27 2016-07-19 International Business Machines Corporation Shared data encryption and confidentiality
EP3243130B1 (en) 2015-01-06 2019-08-14 Sonic IP, Inc. Systems and methods for encoding and sharing content between devices
TW201919361A (zh) * 2017-11-09 2019-05-16 張英輝 以雜文加強保護之區塊加密及其解密之方法
US11263328B2 (en) * 2018-09-13 2022-03-01 Vmware, Inc. Encrypted log aggregation
CN112714120B (zh) * 2020-12-24 2021-10-29 四川长虹电器股份有限公司 一种链式数据加密、解密方法、加密数据的分离式存储方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3824121B2 (ja) 1999-04-01 2006-09-20 株式会社日立製作所 暗号データの復号化処理方法および装置
JP2002311827A (ja) * 2001-04-18 2002-10-25 Matsushita Electric Works Ltd 情報処理装置
JP2004109177A (ja) * 2002-09-13 2004-04-08 Matsushita Electric Ind Co Ltd コンテンツデータ記録媒体、コンテンツデータ復号装置、コンテンツデータ暗号化装置、コンテンツデータ復号方法及びコンテンツデータ暗号化方法
US7055039B2 (en) * 2003-04-14 2006-05-30 Sony Corporation Protection of digital content using block cipher crytography
JP2005341316A (ja) * 2004-05-27 2005-12-08 Sony Corp 情報処理システムおよび方法、情報処理装置および方法、並びにプログラム
JP4496061B2 (ja) * 2004-11-11 2010-07-07 パナソニック株式会社 機密情報処理装置
JP2006229863A (ja) * 2005-02-21 2006-08-31 Seiko Epson Corp 暗号化/復号化装置、通信コントローラ及び電子機器
JP2006331483A (ja) * 2005-05-24 2006-12-07 Matsushita Electric Ind Co Ltd 復号装置、ストリーム録画再生装置、および暗号化ストリームの復号方法
JP4167688B2 (ja) * 2006-01-12 2008-10-15 松下電器産業株式会社 携帯端末、暗号化コンテンツ再生方法及びそれに用いられる平文データ生成方法
JP5080908B2 (ja) * 2007-01-15 2012-11-21 パナソニック株式会社 機密情報処理機器、機密情報処理装置、及び機密情報処理方法
US8077867B2 (en) * 2007-01-15 2011-12-13 Panasonic Corporation Confidential information processing apparatus, confidential information processing device, and confidential information processing method

Also Published As

Publication number Publication date
EP2352251A1 (en) 2011-08-03
US20110170687A1 (en) 2011-07-14
WO2010055658A1 (ja) 2010-05-20
CN102224704A (zh) 2011-10-19

Similar Documents

Publication Publication Date Title
WO2010055658A1 (ja) コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路
US8077867B2 (en) Confidential information processing apparatus, confidential information processing device, and confidential information processing method
JP2003115830A (ja) 情報記録装置及び情報記録再生装置
KR101405720B1 (ko) 암호화 속성을 이용하는 가속 크립토그래피
JP5875441B2 (ja) データを暗号化する装置及び方法
JP2002244929A (ja) ディジタルコピー方法及びディジタルコンテンツの記録装置
JP2005505069A (ja) メモリ暗号化
JP5080908B2 (ja) 機密情報処理機器、機密情報処理装置、及び機密情報処理方法
JP5060079B2 (ja) 暗号処理プログラム
JP2008306395A (ja) 情報処理装置、情報処理方法
US8832845B2 (en) Apparatus, method and program
JP2004070049A (ja) データの暗号化方法及び装置、データの復号化方法及び装置、プログラム
KR101991664B1 (ko) 블록 암호화에 기초한 콘텐츠의 암호화 및 복호화 방법 및 장치
KR20080112082A (ko) 데이터 암호화방법, 암호화데이터 재생방법
EP1550928A1 (en) Block encoding method and block encoding/decoding circuit
JP2006330126A (ja) 暗号化処理方法、および復号化処理方法
JP2006318589A (ja) 情報記録装置、情報再生装置、プログラム、及び記録媒体
US20160164675A1 (en) Countering server-based attacks on encrypted content
JP5403708B2 (ja) 情報処理装置、データ処理方法およびプログラム
JP3861790B2 (ja) データ管理システム、データ管理方法、クライアント端末、及びサーバ装置
JP2005202048A (ja) 暗号通信システム、そのシステムに使用される暗号装置および復号装置、暗号化方法および復号化方法、暗号化プログラムおよび復号化プログラム、ならびに記録媒体
JP2004109177A (ja) コンテンツデータ記録媒体、コンテンツデータ復号装置、コンテンツデータ暗号化装置、コンテンツデータ復号方法及びコンテンツデータ暗号化方法
JP2011041102A (ja) 圧縮暗号化装置、復号伸長装置、それらの方法及びプログラム
CN108632663B (zh) 数字化音视频和字幕的处理方法及系统
JP2006237908A (ja) ファイルの暗号・復号方法、鍵情報抽出方法及び装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130205