以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の情報処理装置(例えば図1の復号装置2)は、
連続する複数の単位データから構成されるストリームデータ(例えば図1のAVデータ。この例の場合、単位データとは、後述するフレーム(データ)をいう)が前記単位データ毎に順次暗号化されていく場合、鍵が所定の規則で更新されていき、複数の前記単位データのそれぞれが暗号化されるとき、その時点で存在する鍵を利用することが規定されている第1の暗号化手法に従って(例えば、図6に示されるAES暗号を利用する暗号化手法に従って)、そのストリームデータが暗号化された結果得られる暗号化データ(例えば図1の暗号化部11のAVデータ暗号化部32から出力される、後述する暗号化AVデータ)に対して、そのストリームデータの暗号化に利用された複数の鍵(例えば、図1のLE Key61−Eであって、後述する例では、それがさらにRSA暗号により暗号化されたもの)およびそれらの複数の鍵の更新タイミングを特定する更新情報(例えば図4のKey Change Timing)を含むメタデータ(例えば図4のメタデータ64−3等を含む図1のメタデータ64)を利用して復号処理を施す情報処理装置であって、
前記暗号化データを取得して、その暗号化データを構成する、複数の暗号化された前記単位データのそれぞれに対して、複数の前記鍵のうちの暗号化されたときに利用された鍵(例えば図1のLE Key61−D)を利用して復号処理を施す復号手段(例えば図1の復号部22)と、
前記メタデータを取得して、前記メタデータに含まれる前記更新情報に従って、前記メタデータに含まれる複数の前記鍵のうちの対応する1つを前記復号手段に提供するメタデータ取得手段(例えば図5の構成を有する図1のメタデータ抽出部21)と
を備え、
前記メタデータ取得手段は、前記更新情報にエラーが発生しているか否かを判定し、エラーが発生していると判定した場合、前記更新情報のうちの少なくとも一部を補正する第1の補正手段(例えば図5のキーチェンジグタイミング補正部111)を
有する。
本発明の一側面の情報処理装置において、
前記メタデータは、複数の前記単位データ毎に生成される、SMPTE(Society of Motion Picture and Television Engineers)291Mに準拠したMeta packet1,2,3(例えば図2のMeta packet1であるメタデータ64−1、図3のMeta packet2であるメタデータ64−2、図4のMeta packet3であるメタデータ64−3)から構成され、
複数の前記鍵は、前記第1の暗号化手法とは異なる第2の暗号化手法(例えば後述するRSA暗号を利用する暗号化手法)によって暗号化されており、暗号化された複数の前記鍵のうちの所定の1つが、所定の単位データについての前記Meta packet1,2に含まれており(例えば図2と図3のElekp dataとして含まれており)、
前記各更新値のそれぞれは、対応する単位データについての前記Meta packet3におけるKey Changing Timingの値として含まれている。
本発明の一側面の情報処理装置において、
前記当該単位データについての前記Meta packet3における前記Key Changing Timingの値である前記第1の更新値は、
前記当該単位データ自身が前記次の鍵の更新タイミングであることを示す第0の値(例えば0=2'b00)、
前記当該単位データの次の単位データが前記次の鍵の更新タイミングであることを示す第1の値(例えば1=2'b01)、
前記当該単位データの2個先の単位データが前記次の鍵の更新タイミングであることを示す第2の値(例えば2=2'b10)、
および、
前記当該単位データの3個先以降の単位データが前記次の鍵の更新タイミングであることを示す第3の値(例えば3=2'b11)
のうちの何れかの値であり、
前記第2の更新値から前記第1の更新値への推移パターンのうちの、
前記第3の値から前記第3の値または前記第2の値への第1の推移パターン(例えば図7のパターン1)、
前記第2の値から前記第1の値への第2の推移パターン(例えば図7のパターン2)、
前記第1の値から前記第0の値への第3の推移パターン(例えば図7のパターン3)、
および、
前記第0の値から前記第3の値への第4の推移パターン(例えば図7のパターン4)
を正常推移パターンとして、
それ以外の推移パターンを異常推移パターンとして、
前記第1の補正手段は、前記第2の更新値から前記第1の更新値への推移パターンが、前記正常推移パターンであるのか、或いは、前記異常推移パターンであるのかを判定し、前記異常推移パターンであると判定した場合、前記第1の更新値にエラーが発生していると判定して、前記第1の更新値を補正する。
本発明の一側面の情報処理装置は、
前記当該単位データの直前の単位データについての前記Meta packet3におけるCurrent Frame Countの第1のカウント値から、前記当該単位データについての前記Meta packet3における前記Current Frame Countの第2のカウント値への推移パターンが異常であるか否かを判定し、異常であると判定した場合、前記第2のカウント値を補正する第2の補正手段(例えば図5のLE FRAMEカウント値補正部112)
をさらに備える。
本発明の一側面の情報処理方法およびプログラムは、上述した本発明の一側面のメタデータ取得手段(例えば図5の構成を有する図1のメタデータ抽出部21)の処理に対応する情報処理方法およびプログラムであって、
前記メタデータを取得して(例えば図5のメタデータ抽出分離部101の処理)、
前記メタデータに含まれる前記更新情報にエラーが発生しているか否かを判定し、エラーが発生していると判定した場合、前記更新情報のうちの少なくとも一部を補正し(例えば図5のキーチェンジグタイミング補正部111の処理であって、具体的には例えば図8と図9のフローチャートに従った処理)、
エラーが発生していないと判定した場合には前記メタデータに含まれる前記更新情報に従って、エラーが発生していると判定した場合には補正後の前記更新情報に従って、前記メタデータに含まれる複数の前記鍵のうちの対応する1つを前記復号手段に提供するまたは前記復号処理用の鍵として提供する(例えば、図5のLEKP復元部102、キーチェンジトリガ生成部104、およびレジスタ105の一連の処理)
ステップを含む。
以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本発明を適用した暗号化装置と復号装置(本発明を適用した情報処理装置の一実施の形態)とからなるシステム(以下、暗号復号システムと称する)の構成例を示す図である。
なお、図1において、実線で囲まれた四角は、装置の構成要素としてのブロックを示し、点線で囲まれた四角は、所定の情報を示している。このような実線と点線の使い分け方は、後述する他の図においても同様とされる。
図1の例では、暗号復号システムは、例えばフレーム単位で構成されるコンテンツ(映画等)に対応するストリームデータ(以下、AVデータと称する)を暗号化する暗号化装置1と、暗号化装置1により暗号化されたAVデータを復号する復号装置2とから構成されている。
図1の例では、暗号化装置1は、共通鍵暗号方式の一つのAES(Advanced Encryption Standard)暗号を利用してAVデータを暗号化する。このため、暗号化装置1は、暗号化部11、メタデータ生成部12、および、重畳部13から構成されている。また、暗号化部11は、AES暗号データ生成部31とAVデータ暗号化部32とから構成されている。
AES暗号データ生成部31は、AES暗号を利用してAVデータを暗号化するための共通鍵(AES Keyと称される場合もあるが、本明細書ではLE Keyと称する)61−Eと、AES Input62−Eとを用いて、AVデータを直接暗号化するためのデータ(以下、AES暗号データと称する)65を生成し、AVデータ暗号化部32に提供する。なお、AES Input62−Eについては後述する。
AVデータ暗号化部32は、AES暗号データ生成部31から提供されたAES暗号データ65を用いて、AVデータを暗号化し、重畳部13に提供する。その際、AVデータ暗号化部32は、メタデータ生成部12から供給されるFrame reset63−Eを利用して、フレーム単位でAVデータを暗号化する。
具体的には例えば、本実施の形態のAVデータは、HD-SDIのデータであって、1以上のフレームデータから構成されているとする。また、フレームデータは、そのフレームを構成する各画素の輝度を示すデータY、および、そのフレームを構成する各画素の色を示すデータCb/Crから構成されているとする。また、例えばLE Key61−Eと、AES Input62−Eとのそれぞれは、128ビットで構成されているとする。
この場合、例えば、AES暗号データ生成部31は、128ビットのLE Key61−Eと、128ビットのAES Input62−Eとの総計256ビットの入力データから、128ビットのAES暗号データ65を生成し、AVデータ暗号化部32に供給する。より詳細には例えば、AES暗号データ生成部31は、AES暗号データ65を構成する128ビットのうち下位120ビットだけを、AVデータの暗号化に実際使用するデータとして10ビット毎に切り出して、AVデータ暗号化部32にそれぞれ提供する。
AVデータ暗号化部32は、10ビット毎のデータの1つずつを利用して、データYとデータCb/Crとのそれぞれをリアルタイムに暗号化し、それぞれ個別に重畳部13に提供する。
ただし、以下の説明においては、特に説明が必要な場合を除いて、データYとデータCb/Crとをまとめて、単にAVデータとして説明していく。
メタデータ生成部12は、暗号化部11の暗号化処理で必要となる各種情報(換言すると、復号装置2の復号処理で必要となる各種情報)、例えば上述したように、LE Key61−E、AES input62−E、および、Frame reset63−E等を生成する。さらに、メタデータ生成部12は、LE Key61-Eに、これらの各種情報のうちの幾つかの補足情報を付加し、その結果得られるデータ(以下、LEKP:Link:Encryption Key Payloadと称する)に対して、例えば復号装置2側の公開鍵を利用するRSA(R. Rivest、A. Shamir、L. Adelman)2048bitの暗号方式(以下、RSA暗号と称する)による暗号化処理を施す。なお、以下、LEKPがRSA暗号により暗号化された結果得られるデータを、ELEKPと称する。即ち、メタデータ生成部12は、ELEKPを生成する。そして、メタデータ生成部12は、ELEKPの他、AES input62−Eの一構成要素(後述するLe_attribute_data)等から構成されるメタデータ64を生成し、重畳部13に提供する。なお、メタデータ64の具体例については、図2乃至図4を参照して後述する。
重畳部13は、HD-SDIであるAVデータがAVデータ暗号化部32により暗号化された結果得られるデータ(以下、暗号化AVデータと称する)のうちの、例えばV-Blanking期間に、メタデータ生成部12により生成されたメタデータ64を重畳(挿入)して、その結果得られるデータ(以下、メタデータ重畳暗号化AVデータと称する)を、復号装置2に出力する(伝送する)。即ち、メタデータ64はフレーム単位で挿入される。
ところで、本実施の形態では、1つのAVデータ(ストリームデータ全体)に対して、LE Key61−Eは1つのみが使用される訳ではなく、随時更新される。即ち、1つのAVデータに対して、LE Key61−Eは複数使用される。その理由は次の通りである。
即ち、悪意を持つ第三者が、AES暗号が掛かったコンテンツ(ここではAVデータ暗号化部32から出力される暗号化AVデータ等)を盗んだと仮定した場合、1種類のAES鍵(ここではLE Key61−E)でコンテンツが暗号化されていると、AES鍵が直接的に解読される危険性が増す、という問題点が発生する。そこで、この問題点を解決すべく、本実施の形態のメタデータ生成部12は、このような第三者がコンテンツを直接的に解読することをより困難となるように、AES暗号で使う鍵(ここではLE Key61−E)を周期的に変化させる(随時更新する)ようにしているのである。
ただし、本実施の形態では、上述したように、メタデータ生成部12が、LE Key61−Eを復号装置2に直接送信せず、そのLE Key61−Eと補足データとを合わせたLEKPを生成し、そのLEKPに対してRSA暗号による暗号化処理を施し、その結果得られるELEKPを含むメタデータ64を生成する。そして、重畳部13が、このメタデータ64を暗号化AVデータとともに(即ち、メタデータ重畳暗号化AVデータとして)、復号装置2に提供(送信)している。即ち、本実施の形態では、暗号化装置1は、複数のLE Key61−Eのそれぞれに対してRSA暗号による一度の暗号化処理をそれぞれ施し、複数のRSA暗号がかけられたLE Key61−Eのそれぞれを個別に(生成順に)復号装置2に送信している。このため、後述するように、復号装置2側でも、複数のRSA暗号がかけられたLE Key61−Eのそれぞれに対して、RSA暗号に対応する復号処理をそれぞれ施す必要がある。
従って、メタデータ生成部12によるLE Key61−Eの更新周期は、RSA暗号による暗号化処理と復号処理の処理時間に依存する。即ち、RSA暗号による暗号化処理と復号処理の処理時間に従って、LE Key61−Eの更新周期の最短周期も自ずと決定される。例えば本実施の形態では、この最短周期は1minとされている。
このように、本実施の形態では、1つのAVデータに対して、LE Key61−Eは1つのみが使用される訳ではなく複数使用される(随時更新される)。即ち、1つのAVデータを構成する各フレームのそれぞれの暗号化に利用されるLE Key61−Eは1つのみが使用される訳ではなく、何枚かのフレーム毎に更新されて別のLE Key61−Eが使用される。
このため、本実施の形態では、メタデータ生成部12は、これらの複数のLE Key61−Eのそれぞれを生成する度に、それらを特定するための識別子(以下、Key IDと称する)をそれぞれ付し、後述するように、このKey IDもメタデータ64に含めるとする。
また、AVデータを暗号化するためのLE Key61−Eは、AVデータ暗号化部32がそのAVデータに対して暗号化処理を施す前に生成されている必要がある。即ち、暗号化AVデータと、それを暗号化するためのLE Key61−Eとの生成タイミングにはタイムラグがある。その結果、重畳部13において、暗号化AVデータのうちの所定のフレーム(データ)に重畳されるメタデータ64に含まれる(より正確にはRSA暗号がかけられる前のLEKPに含まれる)LE Key61−Eは、その所定のフレーム(データ)を暗号化した際に利用されたものではなく、その所定のフレームよりも前のフレーム(データ)を暗号化した際に利用されたものである。
ここで、復号装置2の構成例を説明する前に、図2乃至図4を参照して、メタデータ生成部12により生成されるメタデータの具体例について説明する。
即ち、図2と図3のそれぞれは、上述したELEKP(RSA で暗号化されたLE Key61−E等)を含むメタデータ64−1,64−2のそれぞれの構成例を示している。また、図4は、AES input62−Eを含むメタデータ64−3のそれぞれの構成例を示している。
本実施の形態で採用されているメタデータ64−1,64−2,64−3のそれぞれのパケット構造は、SMPTE(Society of Motion Picture and Television Engineers)291M(Proposal SMPTE STANDARD for Television-Ancillary Data Packet and Space Formatting)に準拠しており、一般的にはMeta packet1,2,3のそれぞれと称されている。即ち、SMPTE291Mでは、例えば図2乃至図4に示されるように、ADF(Ancillary Data Flag:コンポーネントのとき000,3FF,3FF,コンポジットのとき3FC) , DID(Data ID) , SDID(Secondary Data ID) , DC(Data Count) , User Data , CS(Check Sum)といった情報がその順番で配置されるパケット構造が定義されている。メタデータ64−1,64−2,64−3のそれぞれは、このパケット構造を有し、そのUser dataとして、例えば本実施の形態では次のような情報をそれぞれ格納している。
即ち、メタデータ64−1のUser dataには、Key ID , Type , SHA1 digest , Lekp length , Elekp length , Elekp dataが格納されており、メタデータ64−2のUser dataには、Elekp dataが格納されている。
順不同に説明するが、Elekp dataは、上述したように、LE Key61−E等からなるLEKPが、RSA暗号による暗号化処理が施された結果得られるデータ、即ち、ELEKPのことである。KeyIDは、上述したように、そのELEKPに暗号化されて含まれているLE Key61−Eの識別子である。Elekp lengthは、そのELEKPのデータ長であり、Lekp lengthは、そのLEKPに対応するLEKPのデータ長である。
Typeは、LEKPが暗号化された際の暗号化方式(アルゴリズムのタイプ)である。本実施の形態では、RSA暗号を示す0がTypeとして代入される。SHA1 digestは、そのELEKPが生成された際(LEKPがRSA暗号により暗号化された際)に使用された公開鍵の識別子である。
なお、以上説明したような各種情報により構成されるメタデータ64−1とメタデータ64−2のUser dataを、以下、LEKM(Link Encryption Key Message)と称する。
このようなLEKM(メタデータ64−1とメタデータ64−2のUser data)に対して、メタデータ64−3のUser dataには、Next Key ID , Current Key ID , Current Frame Count , Key Changing Timing , HD-SDI Link Numberが格納されている。
ここで、対象とするメタデータ64−3が挿入されるフレームを、当該フレームと称することにする。また、当該フレーム(AVデータのうちの当該フレームに対応する部分のデータ)の暗号化開始直前等を現時点として、現時点のLE Key62−Eを、Current LE Key62−Eと称することにする。そして、Current LE Key62−Eの次に生成される(次の更新タイミングでメタデータ生成部12により生成される)LE Key62−Eを、Next LE Key62−Eと称し、一方、Current LE Key62−Eの直前に生成された(直前の更新タイミングでメタデータ生成部12により生成された)LE Key62−Eを、Previos LE Key62−Eと称することにする。
この場合、当該フレームに挿入されるメタデータ64−3における、Next Key ID , Current Key ID , Current Frame Count , Key Changing Timing , HD-SDI Link Numberは、次のような情報となる。
即ち、Next Key IDは、Next LE Key62−EのKey IDであり、Current Key IDは、Current LE Key62−EのKey IDである。
Current Frame Countは、当該フレームが、Previos LE Key62−EからCurrent LE Key62−Eに更新された時点(以下、このような時点をKey Change Timingと称する)のフレームから数えて(そのフレームを0番目として)何番目のフレームであるのかを示す値である。
Key Changing Timingには、2'b11,2'b10,2'b01,2'b00のうちの何れかの値が代入される。これらの値は、次のKey Changing Timingはどのフレームであるのかをそれぞれ示している。具体的には、2'b11(=3)は、当該フレームから3フレーム先以降がKey Changing Timingであることを示している。2'b10(=2)は、当該フレームから2フレーム先がKey Changing Timingであることを示している。2'b01(=1)は、当該フレームから1フレーム先(即ち、次のフレーム)がKey Changing Timingであることを示している。2'b00(=0)は、当該フレームがKey Changing Timingであることを示している。
HD-SDI Link Numberは、暗号化装置1と復号装置2との間のHD-SDI信号の伝送形態(本実施の形態では、メタデータ重畳暗号化AVデータの伝送形態)を示す値である。即ち、例えばHD-SDI Link Numberとして0が代入されていた場合、その0は、シングルリンク(1つのHD-SDIインタフェースによる伝送形態)か、或いは、デュアルリンク(2つのHD-SDIインタフェースによる形態)のLink-Aであることを示す。また例えば、HD-SDI Link Numberとして1が代入されていた場合、その1は、デュアルリンクのLink-Bであることを示す。
なお、当該フレームに挿入されたメタデータ64−1,64−2のELEKPに含まれる(より正確には、暗号化前のLEKPに含まれる)LE Key61−Eは、当該フレームよりも後のフレームの暗号化に利用されるものである。即ち、当該フレームに利用されるLE Key61−Eは、当該フレームよりも前のフレームに挿入されたメタデータ64−1,64−2のELEKPに含まれる(より正確には、暗号化前のLEKPに含まれる)。
図1に戻り、以上説明したように、本実施の形態では、メタデータ64−1乃至64−3が重畳された暗号化AVデータ(メタデータ重畳暗号化AVデータ)が、暗号化装置1により生成され、復号装置2に伝送(提供)される。
かかる復号装置2は、図1の例では、メタデータ抽出部21と復号部22とから構成される。
メタデータ抽出部21は、暗号化装置1から提供されたメタデータ重畳暗号化AVデータから、メタデータ64(本実施の形態では、メタデータ64−1乃至64−3)等の情報を抽出する。そして、メタデータ抽出部21は、それらの抽出情報から、LE Key61−D、AES input62−D、Frame reset63−Dを生成し、それらを復号部22に提供する。LE Key61−D、AES input62−D、Frame reset63−Dのそれぞれは、暗号化装置1で暗号化AVデータが生成される際に利用された、LE Key61−E、AES input62−E、Frame reset63−Eのそれぞれが復元されたものである。従って、メタデータ抽出部21は、LE Key61−E、AES input62−E、Frame reset63−Eのそれぞれを復元して復号部22に提供している、と捉えることもできる。
なお、メタデータ抽出部21の詳細については、図5を参照して後述する。
復号部22は、図1の例では、AES復号データ生成部41とAVデータ復号部42とから構成されている。
AES復号データ生成部41は、メタデータ抽出部21から提供されたLE Key61−DとAES Input62−Dとを用いて、暗号化AVデータ(AES暗号を利用して暗号化されたAVデータ)を直接復号するためのデータ(以下、AES復号データと称する)66を生成し、AVデータ復号部42に提供する。即ち、AES復号データ66は、AES暗号データ65に対応する復号用のデータである。
AVデータ復号部42は、AES復号データ生成部41から提供されたAES復号データを用いて、暗号化AVデータに対して復号処理を施し、その結果得られるAVデータ(復元されたAVデータ)を外部に出力する。その際、AVデータ復号部42は、メタデータ抽出部21から供給されるFrame reset63−Dを利用して、暗号化AVデータをフレーム単位で復号する。
ここで、図5を参照して、メタデータ抽出部21の詳細について説明する。即ち、図5は、メタデータ抽出部21の詳細な構成例を示している。
図5の例では、メタデータ抽出部21は、メタデータ抽出分離部101乃至LEFLAMEカウント値補正部112から構成されている。
メタデータ抽出分離部101は、暗号化装置1から提供されたメタデータ重畳暗号化AVデータから、メタデータ64(本実施の形態では、図2乃至図4のメタデータ64−1乃至64−3)等の情報を抽出する。さらに、メタデータ抽出分離部101は、メタデータ64を構成する各種情報を分離する。
具体的には例えば、図5の例では、LEKM121、Current LE_Key ID122、Next LE_Key ID123、Key Change Timing124、Frame/line reset129、HD-SDI Link number133、および、Current Frame Count134が、メタデータ抽出分離部101により抽出または分離される。
なお、Frame/line reset129は、Frame reset130とline reset131とから構成されている。また、上述したように、LEKM121とは、メタデータ64−1,64−2のUser dataの記述値のことであり、Current LE_Key ID122とは、メタデータ64−3のCurrent Key IDの記述値のことであり、Next LE_Key ID123とは、メタデータ64−3のNext Key IDの記述値のことであり、Key Change Timing124とは、メタデータ64−3のKey Change Timingの記述値のことであり、HD-SDI Link number133とは、メタデータ64−3のHD-SDI Link numberの記述値のことであり、Current Frame Count134とは、メタデータ64−3のCurrent Frame Countの記述値のことである。
そして、LEKM121は、LEKP復元部102に提供される。Current LE_Key ID122とNext LE_Key ID123は、LEKPテーブル103に提供される。Key Change Timing124は、キーチェンジトリガ生成部104、キーチェンジタイミング補正部111、および、LEFLAMEカウント値補正部112のそれぞれに提供される。Frame reset130は、キーチェンジトリガ生成部104、および、LEFLAMEカウント値補正部112のそれぞれに提供される。line reset131は、カウンタ108に提供される。Frame reset130とline reset131からなるFrame/line reset129は(図1でいうFrame reset63−Dとして)、復号部22に提供される。HD-SDI Link number133は、レジスタ109に提供される。Current Frame Count134は、LEFLAMEカウント値補正部112に提供される。
LEKP復元部102は、LEKM121からLEKPを復元し、そのKey ID等と対応付けてLEKPテーブル103に格納する。即ち、LEKM121とは、上述したように、図2のメタデータ64−1と図3のメタデータ64−2のUser Dataの記述値のことである。このUser Dataには、ELEKP(図2と図3には、Elekp dataと記述されている)が含まれている。このELEKPは、上述したように、RSA暗号による暗号化処理をLEKPに対して施した結果得られるデータである。従って、LEKP復元部102は、LEKM121に含まれるELEKPに対して、その生成用の公開鍵のペア鍵(秘密鍵)を利用する復号処理を施し、その結果得られるLEKP(復元されたLEKP)を、そのKey ID等と対応付けてLEKPテーブル103に格納する。
このように、LEKPテーブル103には、1以上のLEKPのそれぞれが、自身を特定するKey ID等と対応付けられて格納される。LEKPテーブル103に格納されるLEKPは、上述したように、LE Key61−D(復元された図1のLE Key61-E)と、幾つかの補足情報とから構成されている。本実施の形態では、この補足情報には、図1のAES input62−Eの構成要素のひとつであるLe_attribute_data126が含まれているとする。そこで、LEKPテーブル103は、レジスタ105から要求があったとき(後述するキーチェンジの指令後の所定のタイミングで)、Current LE_Key ID122と同一のKey IDを有するLEKPに含まれるLE Key61−D(以下、Current LE Key61−Dと称する)とLe_attribute_data126(以下、Current Le_attribute_data126と称する)、または、Next LE_Key ID123と同一のKey IDを有するLEKPに含まれるLE Key61−D(以下、Next LE Key61−Dと称する)とLe_attribute_data126(以下、Next Le_attribute_data126と称する)をレジスタ105に格納させる。
キーチェンジトリガ生成部104は、Frame reset130が提供される毎に、キーチェンジトリガ127をレジスタ105に提供する。具体的には例えば、このキーチェンジトリガ127として、キーチェンジの指令とキーチェンジの禁止の指令とが存在し、これらの指令のうちの何れか一方が、レジスタ105に提供されるとする。この場合、キーチェンジトリガ生成部104は、Key Change Timing124の値を監視し、その値が2'b00(=0)となったときには、即ち、当該フレームがKey Change Timingとなったときには、キーチェンジトリガ127としてキーチェンジの指令をレジスタ105に提供し、それ以外の値のときは、キーチェンジトリガ127としてキーチェンジ禁止の指令をレジスタ105に提供する。
レジスタ105には、通常、Current LE Key61−DおよびCurrent Le_attribute_data126が格納されている。
キーチェンジトリガ127としてキーチェンジの禁止の指令が提供されている限り、レジスタ105は、Current LE Key61−Dを復号部22に提供し、Current Le_attribute_data126をAES input生成部110に提供する。これにより、復号部22においては、Current LE Key61−Dが使用されて、当該フレーム(AES暗号により暗号化されたフレームデータ)が復号されることになる。
これに対して、キーチェンジトリガ127としてキーチェンジの指令が提供されると、レジスタ105は、記憶内容の更新をLEKPテーブル103に要求する。すると、上述したように、LEKPテーブル103は、レジスタ105から要求があった時点のNext LE Key61−DとNext Le_attribute_data126をレジスタ105に格納させる。即ち、Next LE Key61−DとNext Le_attribute_data126とのそれぞれが、キーチェンジ後における新たなCurrent LE Key61―DとCurrent Le_attribute_data126とのそれぞれとしてレジスタ105に格納され、そして、Current LE Key61−D(これまでNext LE Key61−Dであったもの)が復号部22に提供され、Current Le_attribute_data126(これまでNext Le_attribute_data126であったもの)がAES input生成部110に提供される。これにより、復号部22においては、復号用のLE Key61−DがこれまでのCurrent LE Key61−DからNext LE Key61−D(新たなCurrent LE Key61−D)に更新されて、当該フレーム(AES暗号により暗号化されたフレームデータ)が復号されることになる。
カウンタ108は、line reset131が供給される毎に、カウント値を1ずつインプリメントし、そのカウント値をAES input生成部110に提供する。
レジスタ109は、HD-SDI Link Number133を保持し、適宜AES input生成部110に提供する。
このようにして、AES input生成部110には、レジスタ105からのLe_attribute_data126、後述するLEFLAMEカウント値補正部112からの補正後Current Frame Count135、メタデータ抽出分離部101からのLine number of HD SDI132、カウンタ108のカウント値、および、レジスタ109からのHD-SDI Link Number133が入力される。そこで、AES input生成部110は、Le_attribute_data126、補正後Current Frame Count135、Line number of HD SDI132、カウンタ108のカウント値、および、HD-SDI Link Number133を少なくとも含むAES input62−Dを生成し(図1のAES input62−Eを復元し)、復号部22に提供する。
キーチェンジタイミング補正部111は、Key Change Timing124の推移パターンを監視し、その推移パターンが正常であるか否かを判定し、異常である(正常ではない)と判定した場合(かつ補正可能な場合)、Key Change Timingの補正指令を、キーチェンジトリガ生成部104に出力する。すると、キーチェンジトリガ生成部104は、Key Change Timingの補正を行う。
なお、キーチェンジグタイミング補正部111の詳細(その動作等)については、図6乃至図19を参照して後述する。
LEFLAMEカウント値補正部112は、Key Change Timing124を参照しつつ、メタデータ抽出分離部101からのCurrent Frame Cont134の推移パターンを監視し、その推移パターンが正常であるか否かを判定し、異常である(正常ではない)と判定した場合(かつ補正可能な場合)、Current Frame Cont134の値を補正した後AES input生成部110に出力し、正常であると判定した場合、Current Frame Cont134の値をそのまま(補正せずに)AES input生成部110に出力する。
ただし、以下、LE FRAMEカウント値補正部112からAES input生成部110へ出力される情報を、補正の有無を問わず、補正後Current Frame Cont135と称する。換言すると、補正が行われないことを0補正であるとして、LE FRAMEカウント値補正部112からAES input生成部110へ出力される情報は全て、Current Frame Cont134の値が補正された情報であると捉え、それゆえ、補正後Current Frame Cont135と称する。即ち、上述したように、補正後Current Frame Cont135が、LE FRAMEカウント値補正部112からAES input生成部110に提供される。
なお、LEFLAMEカウント値補正部112の詳細(その動作等)については、図20乃至図23を参照して後述する。
以上、本発明を適用した暗号復号システムの構成例について説明した。
ところで、図1の暗号復号システムにおいて、暗号化装置1により生成されたメタデータ重畳暗号化AVデータが、復号装置2に伝送される際に、例えば、メタデータ重畳暗号化AVデータのうちの、図4のメタデータ64−3に伝送エラーが発生する恐れがある。
このような伝送エラーが発生した場合、図5のキーチェンジタイミング補正部111やLEFLAMEカウント値補正部112が復号装置2のメタデータ抽出部21に設けられていないと、図6に示されるような問題点が発生してしまう。
即ち、本実施の形態では、上述したように、AES暗号によるAVデータの暗号化処理に使用されているLE Key(AES 鍵)61−Eは、所定の更新間隔(ただし、最小更新間隔は1分)で更新される。この更新の様子の例が、図6に示されている。即ち、図6の例では、時刻t0eから、Key Change Timing-1の時刻t1eまでの間は、Key ID=XのLE Key61−EでAVデータが暗号化され、時刻t1eになると、それ以降、次のKey Change Timing-2の時刻t2eまでの間は、Key ID=YのLE Key61−EでAVデータが暗号化され、そして、時刻t2eになると、それ以降、Key ID=ZのLE Key61−EでAVデータが暗号化されている。
この場合、復号装置2側では、時刻t0dから、Key ID=XのLE Key61−Dで暗号化AVデータが復号されるとすると、Key Change Timing-1である時刻t1dまでに、Key ID=YのLE Key61−Dが準備されつ。即ち、Key Change Timing-1である時刻t1dまでに、図5のLEKPテーブル103にKey ID=YのLE Key61−Dが、Next LE Key61-Dとして格納される。そして、時刻t1dになると、通常(伝送エラーが無い場合には)、Key ID=YのLE Key61−Dが、LEKPテーブル103からレジスタ105に転送され、さらに、レジスタ105から復号部22に提供される。これにより、復号部22は、Key ID=YのLE Key61−Dを利用して暗号化AVデータを復号することが可能になる。
このとき、Key Change Timing-1となったか否かの判定は、上述したように、キーチェンジトリガ生成部104により実行される。即ち、キーチェンジトリガ生成部104は、Key Change Timing124の値を監視し、その値が2'b00(=0)となったとき、当該フレームがKey Changing Timingとなったと判定し、キーチェンジトリガ127としてキーチェンジの指令をレジスタ105に提供する。
このように、キーチェンジ(LE Key61−Dの更新)は、Key Change Timing124の値が2'b00 となるフレーム(Key Change Timing124の値が2'b00であるメタデータ64−3が重畳されたフレーム)でしか発生しない。
従って、メタデータ64−3に伝送エラーが発生してしまい、キーチェンジトリガ生成部104がこの2'b00 という値を検出できなかった場合には、即ち、本来、Key Change Timing124の値が2'b00であるところ伝送エラーのためにそれとは別の値となり、その別の値が検出されてしまった場合には、キーチェンジトリガ生成部104は、キーチェンジトリガ127としてキーチェンジの指令をレジスタ105に提供することはできない。即ち、キーチェンジトリガ生成部104は、時刻t1dになっても、依然として、キーチェンジトリガ127としてキーチェンジ禁止の指令をレジスタ105に提供し続けることになる。これに伴い、図6に示されるように、次のKey Change Timing-2である時刻t2dまでの間、Key ID=XのLE Key61−Dがレジスタ105から出力され続け、復号部22に提供される続けることになる。その結果、復号部22は、Key ID=YのLE Key61−Eを利用して暗号化された結果得られる暗号化AVデータ(フレーム)を、Key ID=XのLE Key61−Dというまったく別のAES鍵で復号してしまうことになり、その暗号化AVデータを正しく復号できなくなってしまう、という問題点が発生してしまう。
そこで、本発明人は、かかる問題点を解決すべく、次のような手法を発明した。即ち、本発明人が発明した手法とは、直前のフレームにおけるKey Change Timing124の値と、当該フレームにおける Key Change Timing124の値との推移パターン(連続性)が、正常なパターンであるか異常なパターンであるのかを判定し、異常なパターンであると判定した場合(かつ補正が可能な場合)、Key Change Timing124の値の補間を行うことで、LE Key61−Dの更新タイミングを補正する、という手法である。
ここで、正常なパターンとは、図7に示されるパターン1乃至パターン4を言う。以下、直前のフレームにおけるKey Change Timing124の値と、当該フレームにおける Key Change Timing124の値との推移パターンを、(直前のフレームにおけるKey Change Timing124の値,当該フレームにおける Key Change Timing124の値)という形式で記述するとすると、パターン1乃至パターン4は次の通りとなる。即ち、(2'b11(=3) , 2'b11(=3) or 2'b10(=2))がパターン1である。(2'b10(=2) , 2'b01(=1))がパターン2である。(2'b01(=1) , 2'b00(=0))がパターン3である。(2'b00(=0) , 2'b11(=3))がパターン4である。
本実施の形態では、かかる手法がキーチェンジタイミング補正部111に適用されており、それゆえ、キーチェンジタイミング補正部111は、例えば図8と図9のフローチャートに従った処理を実行する。即ち、図8と図9は、かかる手法を実現させる処理の一例であって、キーチェンジタイミング補正部111の処理の一例を示すフローチャートである。
ただし、図8と図9の処理は、当該フレームについての処理である。即ち、図8と図9の処理は、暗号化AVデータを構成する各フレーム(データ)毎に1回ずつ実行される。具体的には、第1のフレームが当該フレームとなったときに、図8と図9の処理が1回実行され、その後、第1のフレームの次の第2のフレームが当該フレームとなったときに、図8と図9の処理が1回実行される。
図8のステップS1において、キーチェンジタイミング補正部111は、当該フレームのKey Change Timing124の値が2'b11(=3)であるか否かを判定する。
ステップS1において、当該フレームのKey Change Timing124の値が2'b11(=3)であると判定された場合、処理はステップS2に進む。ステップS2において、キーチェンジタイミング補正部111は、直前フレームのKey Change Timing124の値が2'b11(=3) or 2'b00(=0)であるか否かを判定する。
ステップS2において、直前フレームのKey Change Timing124の値が2'b11(=3) or 2'b00(=0)であると判定された場合、処理は図9のステップS9に進む。ステップS9において、キーチェンジタイミング補正部111は、直前フレームと当該フレームとのKey Change Timing124の推移パターンは、正常パターンである(いまの場合、図7のパターン1またはパターン4である)と判定する。これにより、当該フレームのKey Changing Timing124の値は補間(補正)されずに、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。
これに対して、図8のステップS2において、直前フレームのKey Change Timing124の値が2'b11(=3) or 2'b00(=0)ではないと判定された場合、即ち、2'b10(=2) or 2'b01(=1)と判定された場合、処理は図9のステップS8に進む。ステップS8において、キーチェンジタイミング補正部111は、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターン(直前フレームが当該フレームであったときのキーチェンジタイミング補正部111の処理、即ち、前回の処理で判定された推移パターン)が異常であったか否かを判定する。
ステップS8において、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが異常であったと判定された場合、処理はステップS10に進む。ステップS10において、キーチェンジタイミング補正部111は、直前フレームと当該フレームとのKey Change Timing124の推移パターンは、異常パターンであるが(図7のパターン1乃至4の何れにも該当しないが)、補正不可能であると判定する。これにより、当該フレームのKey Changing Timing124の値は補間(補正)されずに、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。
これに対して、ステップS8において、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが正常であった(異常ではなかった)と判定された場合、処理はステップS11に進む。ステップS11において、キーチェンジタイミング補正部111は、直前フレームと当該フレームとのKey Change Timing124の推移パターンは、異常パターンであり(図7のパターン1乃至4の何れにも該当せず)、かつ、補正可能であると判定し、ステップS12において、当該フレームのKey Changing Timing124の値を補間する。これにより、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。なお、ステップS12の処理でどのような値に補間するのかについては、図10乃至図18を参照して後述する。
図8に戻り、当該フレームのKey Change Timing124の値が2'b10(=2),2'b01(=1),2'b00(=0)のうちの何れかの場合、ステップS1においてNOであると判定されて、処理はステップS3に進む。ステップS3において、キーチェンジタイミング補正部111は、当該フレームのKey Change Timing124の値が2'b10(=2)であるか否かを判定する。
ステップS3において、当該フレームのKey Change Timing124の値が2'b10(=2)であると判定された場合、処理はステップS4に進む。ステップS4において、キーチェンジタイミング補正部111は、直前フレームのKey Change Timing124の値が2'b11(=3)であるか否かを判定する。
ステップS4において、直前フレームのKey Change Timing124の値が2'b11(=3)であると判定された場合、図9のステップS9において、直前フレームと当該フレームとのKey Change Timing124の推移パターンは、正常パターンである(いまの場合、図7のパターン1である)と判定される。これにより、当該フレームのKey Changing Timing124の値は補間(補正)されずに、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。
これに対して、直前フレームのKey Change Timing124の値が2'b10(=2),2'b01(=1),2'b00(=0)のうちの何れかの場合、ステップS4においてNOである(直前フレームのKey Change Timing124の値が2'b11(=3)ではない)と判定されて、処理は図9のステップS8に進み、それ以降の処理が繰り返される。即ち、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが異常であった場合、当該フレームのKey Changing Timing124の値は補間(補正)されずに、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。これに対して、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが正常であった場合、当該フレームのKey Changing Timing124の値が補間された後、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。
また、当該フレームのKey Change Timing124の値が2'b01(=1),2'b00(=0)のうちの何れかの場合、図8のステップS3においてNOであると判定されて、処理はステップS5に進む。ステップS5において、キーチェンジタイミング補正部111は、当該フレームのKey Change Timing124の値が2'b01(=1)であるか否かを判定する。
ステップS5において、当該フレームのKey Change Timing124の値が2'b01(=1)であると判定された場合、処理はステップS6に進む。ステップS6において、キーチェンジタイミング補正部111は、直前フレームのKey Change Timing124の値が2'b10(=2)であるか否かを判定する。
ステップS6において、直前フレームのKey Change Timing124の値が2'b10(=2)であると判定された場合、図9のステップS9において、直前フレームと当該フレームとのKey Change Timing124の推移パターンは、正常パターンである(いまの場合、図7のパターン2である)と判定される。これにより、当該フレームのKey Changing Timing124の値は補間(補正)されずに、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。
これに対して、直前フレームのKey Change Timing124の値が2'b11(=3),2'b01(=1),2'b00(=0)のうちの何れかの場合、図8のステップS6においてNOである(直前フレームのKey Change Timing124の値が2'b10(=2)ではない)と判定されて、処理は図9のステップS8に進み、それ以降の処理が繰り返される。即ち、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが異常であった場合、当該フレームのKey Changing Timing124の値は補間(補正)されずに、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。これに対して、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが正常であった場合、当該フレームのKey Changing Timing124の値が補間された後、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。
また、当該フレームのKey Change Timing124の値が2'b00(=0)である場合、ステップS5においてNOであると判定されて、処理はステップS7に進む。ステップS7において、キーチェンジタイミング補正部111は、直前フレームのKey Change Timing124の値が2'b01(=1)であるか否かを判定する。
ステップS7において、直前フレームのKey Change Timing124の値が2'b01(=1)であると判定された場合、図9のステップS9において、直前フレームと当該フレームとのKey Change Timing124の推移パターンは、正常パターンである(いまの場合、図7のパターン3である)と判定される。これにより、当該フレームのKey Changing Timing124の値は補間(補正)されずに、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。
これに対して、直前フレームのKey Change Timing124の値が2'b11(=3),2'b10(=2),2'b00(=0)のうちの何れかの場合、図8のステップS7においてNOである(直前フレームのKey Change Timing124の値が2'b01(=1)ではない)と判定されて、処理は図9のステップS8に進み、それ以降の処理が繰り返される。即ち、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが異常であった場合、当該フレームのKey Changing Timing124の値は補間(補正)されずに、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。これに対して、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが正常であった場合、当該フレームのKey Changing Timing124の値が補間された後、当該フレームについてのキーチェンジタイミング補正部111の処理は終了となる。
以下、図10乃至図19の具体例を参照して、当該フレームについてのキーチェンジタイミング補正部111の処理についてさらに説明する。
即ち、図10乃至図19のそれぞれは、当該フレームについてのキーチェンジタイミング補正部111の処理結果の具体例を示している。ただし、図10乃至図18のそれぞれは、上述した図8と図9のフローチャートに従ったキーチェンジタイミング補正部111の処理結果の具体例を示しているが、図19は、図8と図9のフローチャートとは異なる手法に従ったキーチェンジタイミング補正部111の処理結果の具体例を示している。なお、図8と図9のフローチャートとは異なる手法については、後述する図19の説明の際に併せて説明する。
図10乃至図19において、上の図は、各フレームのKey Change Timing124のそれぞれの値の時間推移を示している。図10乃至図19の上の図において、×(バツ印)がされている値が、直前フレームと当該フレームとのKey Change Timing124の推移パターンが正常時の値(正常な値)を示しているが、各例の場合、伝送エラーにより、Key Change Timing124の値がその×(バツ印)の上に記述される値になってしまったことを意味している。そして、その×(バツ印)の下の値が、キーチェンジタイミング補正部111のステップS12(図9)の処理で補間される値を示している。
また、図10乃至図19において、下の図は、エラーフラグのタイミングチャートを示している。エラーフラグとは、直前フレームと当該フレームとのKey Change Timing124の推移パターンが異常であるか否かを示すフラグであって、異常な場合には1となり正常な場合には0となるフラグである。即ち、当該フレームにおいてエラーフラグが立っていること(1であること)は、直前フレームと当該フレームとのKey Change Timing124の推移パターンは異常である(図7のパターン1乃至4の何れにも該当しない)ことを示す。従って、直前フレームにおいてエラーフラグが立っている場合(1である場合)、図9のステップS8の処理では、2つ前のフレームと直前フレームとのKey Change Timing124の推移パターンが異常であった(YESである)と判定されて、処理はステップS10に進むことになる。
図10は、直前フレームのKey Change Timing124の値は0(2'b00)とされており、当該フレームのKey Change Timing124の値は、正常であれば3(2'b11)であるところ(図7のパターン4参照)、伝送エラーのために2(2'b10),1(2'b01),0(2'b00)のうちの何れかになってしまった例を示している。
図10の例の場合、ステップS1でNOであると判定されて、その後、ステップS3YES,S4NOを経由してステップS8に進むか、ステップS3NO,S5YES,S6NOを経由してステップS8に進むか、或いは、ステップS3NO,S5NO,S7NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が3に補間される。即ち、図10の例の場合、直前フレームのKey Changing Timing124の値0(2'b00)が信用されて、図7のパターン4となるように、当該フレームのKey Changing Timing124の値が3(2'b11)に補間されるのである。
図11は、(1回目に対する)直前フレームのKey Change Timing124の値が、正常であれば3(2'b11)であるところ、伝送エラーのために2(2'b10)になってしまい、その後伝送エラーが解消し、(1回目に対する)当該フレームのKey Change Timing124の値が、正常な3(2'b11)に戻った例を示している。
図11の例の場合、(1回目に対する)2つ前のフレームと直前フレームのKey Change Timing124の推移パターンは(3(2'b11) , 2(2'b10))であり、この推移パターンは図7の正常パターンのうちのパターン1に該当するため、正常であると判定されることになる。
従って、(1回目に対する)当該フレームについてのキーチェンジタイミング補正部111の処理の際にはじめて、(1回目に対する)直前フレームと当該フレームのKey Change Timing124の推移パターンは異常であると判定されることになる。
具体的には、1回目のキーチェンジタイミング補正部111の処理では、ステップS1YES,S2NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が1に補間される。即ち、図11の例の場合、直前フレームのKey Changing Timing124の値2(2'b10)が信用されて(実際には伝送エラーのため異常な値であるが)、図7のパターン2となるように、当該フレームのKey Changing Timing124の値が1(2'b01)に補間されるのである。
その後、次のフレームが当該フレームとなり、2回目のキーチェンジタイミング補正部111の処理として次のような処理が実行される。即ち、ステップS1YES,S2NOを経由してステップS8に進む。今度は、ステップS8でYESと判定されて、ステップS10の処理で、(2回目に対する)直前フレームと当該フレームとのKey Change Timing124の推移パターンは異常パターンであるが(図7のパターン1乃至4の何れにも該当しないが)、補正不可能であると判定され、当該フレームのKey Changing Timing124の値は補間(補正)されずに3(2'b11)がそのまま採用されることになる。
なお、この場合、補間された結果は間違っているが、Key Change Timing124の値が0(2'b00)となること、即ち、Key Change Timingであるとして復号用のLE Key61−Dが更新されることとは無関係であるため特に問題は生じない。なお、ここで言う無関係とは、Key Change Timing124の値を間違って0(2'b00)に補間することはないという意味であり、Key Change Timing124の値として0(2'b00)を検出できないという意味ではない。
図12は、(1回目に対する)当該フレームのKey Change Timing124の値が、正常であれば3(2'b11)であるところ、伝送エラーのために1(2'b01) or 0(2'b00)になってしまった例を示している。
図12の例の場合、1回目のキーチェンジタイミング補正部111の処理では、ステップS1NO,S3NO,S5YES,S6NOを経由してステップS8に進むか、或いは、ステップS1NO,S3NO,S5NO,S7NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が2(2'b10)に補間される。即ち、図12の例の場合、直前フレームのKey Changing Timing124の値3(2'b11)が信用されて、図7のパターン1のうちの(3(2'b11),2(2'b10))のパターンとなるように、当該フレームのKey Changing Timing124の値が2(2'b10)に補間される。
その後、次のフレームが当該フレームとなり、2回目のキーチェンジタイミング補正部111の処理として次のような処理が実行される。即ち、ステップS1YES,S2NOを経由してステップS8に進む。今度は、ステップS8でYESと判定されて、ステップS10の処理で、(2回目に対する)直前フレームと当該フレームとのKey Change Timing124の推移パターンは異常パターンであるが(図7のパターン1乃至4の何れにも該当しないが)、補正不可能であると判定され、当該フレームのKey Changing Timing124の値は補間(補正)されずに3(2'b11)がそのまま採用されることになる。
なお、この場合、補間された結果は間違っているが、Key Change Timing124の値が0(2'b00)となること、即ち、Key Change Timingであるとして復号用のLE Key61−Dが更新されることとは無関係であるため特に問題は生じない。なお、ここで言う無関係とは、Key Change Timing124の値を間違って0(2'b00)に補間することはないという意味であり、Key Change Timing124の値として0(2'b00)を検出できないという意味ではない。
図13は、(1回目に対する)直前フレームのKey Change Timing124の値が、正常であれば3(2'b11)であるところ、伝送エラーのために2(2'b10)になってしまい、その後伝送エラーが解消し、(1回目に対する)当該フレームのKey Change Timing124の値が、正常な2(2'b10)に戻った例を示している。
図13の例の場合、(1回目に対する)2つ前のフレームと直前フレームのKey Change Timing124の推移パターンは(3(2'b11) , 2(2'b10))であり、この推移パターンは図7の正常パターンのうちのパターン1に該当するため、正常であると判定されることになる。
従って、(1回目に対する)当該フレームについてのキーチェンジタイミング補正部111の処理の際にはじめて、(1回目に対する)直前フレームと当該フレームのKey Change Timing124の推移パターンは異常であると判定されることになる。
具体的には、1回目のキーチェンジタイミング補正部111の処理では、ステップS1NO,S3YES,S4NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が1(2'b01)に補間される。即ち、図12の例の場合、直前フレームのKey Changing Timing124の値2(2'b10)が信用されて(実際には補間された値が間違っているが)、図7のパターン2となるように、当該フレームのKey Changing Timing124の値が1(2'b01)に補間される。
その後、次のフレームが当該フレームとなり、2回目のキーチェンジタイミング補正部111の処理として次のような処理が実行される。即ち、ステップS1NO,S3NO,S5YES,S6NOを経由してステップS8に進む。今度は、ステップS8でYESと判定されて、ステップS10の処理で、(2回目に対する)直前フレームと当該フレームとのKey Change Timing124の推移パターンは異常パターンであるが(図7のパターン1乃至4の何れにも該当しないが)、補正不可能であると判定され、当該フレームのKey Changing Timing124の値は補間(補正)されずに1(2'b01)がそのまま採用されることになる。
なお、この場合、補間された結果は間違っているが、Key Change Timing124の値が0(2'b00)となること、即ち、Key Change Timingであるとして復号用のLE Key61−Dが更新されることとは無関係であるため特に問題は生じない。なお、ここで言う無関係とは、Key Change Timing124の値を間違って0(2'b00)に補間することはないという意味であり、Key Change Timing124の値として0(2'b00)を検出できないという意味ではない。
図14は、(1回目に対する)当該フレームのKey Change Timing124の値が、正常であれば3(2'b11)であるところ、伝送エラーのために1(2'b01) or 0(2'b00)になってしまった例を示している。
図14の例の場合、1回目のキーチェンジタイミング補正部111の処理では、ステップS1NO,S3NO,S5YES,S6NOを経由してステップS8に進むか、或いは、ステップS1NO,S3NO,S5NO,S7NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が2(2'b10)に補間される。即ち、図14の例の場合、直前フレームのKey Changing Timing124の値3(2'b11)が信用されて、図7のパターン1のうちの(3(2'b11),2(2'b10))のパターンとなるように、当該フレームのKey Changing Timing124の値が2(2'b10)に補間される。
その後、次のフレームが当該フレームとなり、2回目のキーチェンジタイミング補正部111の処理として次のような処理が実行される。即ち、ステップS1NO,S3YES,S4NOを経由してステップS8に進む。今度は、ステップS8でYESと判定されて、ステップS10の処理で、(2回目に対する)直前フレームと当該フレームとのKey Change Timing124の推移パターンは異常パターンであるが(図7のパターン1乃至4の何れにも該当しないが)、補正不可能であると判定され、当該フレームのKey Changing Timing124の値は補間(補正)されずに2(2'b10)がそのまま採用されることになる。
なお、この場合、補間された結果は間違っているが、Key Change Timing124の値が0(2'b00)となること、即ち、Key Change Timingであるとして復号用のLE Key61−Dが更新されることとは無関係であるため特に問題は生じない。なお、ここで言う無関係とは、Key Change Timing124の値を間違って0(2'b00)に補間することはないという意味であり、Key Change Timing124の値として0(2'b00)を検出できないという意味ではない。
図15は、(1回目に対する)直前フレームのKey Change Timing124の値が、正常であれば2(2'b01)であるところ、伝送エラーのために3(2'b11)になってしまい、その後伝送エラーが解消し、(1回目に対する)当該フレームのKey Change Timing124の値が、正常な1(2'b01)に戻った例を示している。
図15の例の場合、(1回目に対する)2つ前のフレームと直前フレームのKey Change Timing124の推移パターンは(3(2'b11) , 3(2'b11))であり、この推移パターンは図7の正常パターンのうちのパターン1に該当するため、正常であると判定されることになる。
従って、(1回目に対する)当該フレームについてのキーチェンジタイミング補正部111の処理の際にはじめて、(1回目に対する)直前フレームと当該フレームのKey Change Timing124の推移パターンは異常であると判定されることになる。
具体的には、1回目のキーチェンジタイミング補正部111の処理では、ステップS1NO,S3NO,S5YES,S6NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が2(2'b10)に補間される。即ち、図15の例の場合、直前フレームのKey Changing Timing124の値3(2'b11)が信用されて(実際には伝送エラーのため異常な値であるが)、図7のパターン1のうちの(3(2'b11),2(2'b10))のパターンとなるように、当該フレームのKey Changing Timing124の値が2(2'b10)に補間される。
その後、次のフレームが当該フレームとなり、2回目のキーチェンジタイミング補正部111の処理として次のような処理が実行される。即ち、ステップS1NO,S3NO,S5NO,S7NOを経由してステップS8に進む。今度は、ステップS8でYESと判定されて、ステップS10の処理で、(2回目に対する)直前フレームと当該フレームとのKey Change Timing124の推移パターンは異常パターンであるが(図7のパターン1乃至4の何れにも該当しないが)、補正不可能であると判定され、当該フレームのKey Changing Timing124の値は補間(補正)されずに0(2'b00)がそのまま採用されることになる。
なお、この場合、補間された結果は間違っているが、Key Change Timing124の値が0(2'b00)となること、即ち、Key Change Timingであるとして復号用のLE Key61−Dが更新されることとは無関係であるため特に問題は生じない。なお、ここで言う無関係とは、Key Change Timing124の値を間違って0(2'b00)に補間することはないという意味であり、Key Change Timing124の値として0(2'b00)を検出できないという意味ではない。
図16は、直前フレームのKey Change Timing124の値は3(2'b11)とされており、当該フレームのKey Change Timing124の値は、正常であれば2(2'b10)であるところ(図7のパターン1参照)、伝送エラーのために1(2'b01) or 0(2'b00)となってしまった例を示している。
図16の例の場合、ステップS1NO,S3NO,S5YES,S6NOを経由してステップS8に進むか、或いは、ステップS1NO,S3NO,S5NO,S7NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が2(2'b10)に補間される。即ち、図16の例の場合、直前フレームのKey Changing Timing124の値3(2'b11)が信用されて、図7のパターン1のうちの(3(2'b11),2(2'b10))のパターンとなるように、当該フレームのKey Changing Timing124の値が2(2'b11)に補間されるのである。
図17は、直前フレームのKey Change Timing124の値は2(2'b10)とされており、当該フレームのKey Change Timing124の値は、正常であれば1(2'b01)であるところ(図7のパターン2参照)、伝送エラーのために3(2'b11) , 2(2'b10) , 0(2'b00)のうちの何れかとなってしまった例を示している。
図17の例の場合、ステップS1YES,S2NOを経由してステップS8に進むか、S1NO,S3YES,S4NOを経由してステップS8に進むか、或いは、ステップS1NO,S3NO,S5NO,S7NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が1(2'b01)に補間される。即ち、図17の例の場合、直前フレームのKey Changing Timing124の値2(2'b10)が信用されて、図7のパターン2となるように、当該フレームのKey Changing Timing124の値が1(2'b01)に補間されるのである。
図18は、直前フレームのKey Change Timing124の値は1(2'b01)とされており、当該フレームのKey Change Timing124の値は、正常であれば0(2'b00)であるところ(図7のパターン3参照)、伝送エラーのために3(2'b11) , 2(2'b10) , 1(2'b10)のうちの何れかとなってしまった例を示している。
図18の例の場合、ステップS1YES,S2NOを経由してステップS8に進むか、S1NO,S3YES,S4NOを経由してステップS8に進むか、或いは、ステップS1NO,S3NO,S5YES,S6NOを経由してステップS8に進む。そして、ステップS8でNOと判定されて、ステップS11の処理後、ステップS12の処理で、当該フレームのKey Changing Timing124の値が0(2'b00)に補間される。即ち、図18の例の場合、直前フレームのKey Changing Timing124の値1(2'b01)が信用されて、図7のパターン3となるように、当該フレームのKey Changing Timing124の値が0に補間されるのである。
ところで、伝送エラーによるKey Changing Timing124の値の補間は、本実施の形態では、当該フレームと直前フレームとにおけるKey Changing Timing124の推移パターン(相関)を利用しているが、本実施の形態に限定されず、さらに長期の推移パターン(さらに複数のフレームにまたがるKey Changing Timing124推移パターン)を利用することもできる。
しかしながら、かかる長期の推移パターンを利用しても、伝送エラーに対する補間能力が上がるわけではない。
そればかりか、かかる長期の推移パターンを利用すると、Key Change Timing124の値が本来0(2'b00)となるはずのフレームが当該フレームとなったときに、その当該フレームのKey Change Timing124の値を誤訂正してしまう(0以外の値に補間してしまう)可能性がある、という問題が発生してしまう。この問題が発生すると、復号用のLE Key61−Dの更新タイミングを逸し、次のLE Key61−Dの更新タイミングまで( min 1分)の間コンテンツの復号を正しく行うことができなくなってしまうという重大事故につながる。
従って、伝送エラーによるKey Changing Timing124の値の補間として、本実施の形態以上に、即ち、当該フレームと直前のフレームとの2フレーム以上に、Key Change Timing124の値の相関(推移パターン)を利用することは無意味である。
ここで、さらに長期の推移パターンを利用すると発生してしまう上述した問題について、図19を参照してさらに説明する。
即ち、図19は、2つ前のフレーム、直前フレーム、および当該フレームといった連続する3つのフレームにおけるKey Changing Timing124の値の推移パターンを利用して、当該フレームにおけるKey Changing Timing124の値を補間する例を示している。
具体的には、図19は、(1回目に対する)直前フレームのKey Change Timing124の値が、正常であれば2(2'b10)であるところ、伝送エラーのために3(2'b11)になってしまい、また、(1回目に対する)当該フレームのKey Change Timing124の値が、正常であれば1(2'b01)であるところ、伝送エラーのために0(2'b00)になってしまった例を示している。
なお、以下、2つ前のフレーム、直前フレーム、および当該フレームといった連続する3つのフレームにおけるKey Changing Timing124の値の推移パターンを、当該フレームにおける推移パターンと称し、また、(2つ前のフレームにおけるKey Changing Timing124の値 , 直前フレームにおけるKey Changing Timing124の値 , 当該フレームにおけるKey Changing Timing124の値)と記述する。
この場合、次のステップSa乃至Siの一連の処理が実行される。
ステップSaとは、連続性チェックを行う処理、即ち、(1回目に対する)当該フレームにおける推移パターンが正常であるか否かを判定する処理である。図19の例では、(1回目に対する)当該フレームにおける推移パターンは(3,3,0)であることから、このステップSaの処理で、エラーと判定される。
ステップSbとは、(1回目に対する)2つ前のフレーム(が当該フレームだったとき)における推移パターンがエラーであったか否かを判定する処理である。図19の例では、(1回目に対する)2つ前のフレームにおけるエラーフラグは立っていない(0である)ので、エラーはなかったと判定される処理である。
ステップScとは、連続性チェックでエラーであると判定され、かつ、2つ前のフレームにおける推移パターンがエラーでなかったと判定されたことから、補正可能と判定して(図9のステップS11に相当する処理)、当該フレームのKey Changing Timing124の値を補間する(図9のステップS12に相当する処理)処理である。図19の例では、2つ前のフレームと直前フレームとのKey Changing Timing124の値がそれぞれ信用されて(実際には直前フレームの値は伝送エラーのため異常な値であるが)、Key Changing Timing124の値が2(2'b10)に補間される。
ステップSdとは、連続性チェックを行う処理、即ち、(2回目に対する)当該フレームにおける推移パターンが正常であるか否かを判定する処理である。図19の例では、(2回目に対する)当該フレームにおける推移パターンは(3,2,0)であることから、このステップSdの処理で、エラーと判定される。
ステップSeとは、(2回目に対する)2つ前のフレーム(が当該フレームだったとき)における推移パターンがエラーであったか否かを判定する処理である。図19の例では、(2回目に対する)2つ前のフレームにおけるエラーフラグは立っていない(0である)ので、エラーはなかったと判定される処理である。
ステップSfとは、連続性チェックでエラーであると判定され、かつ、2つ前のフレームにおける推移パターンがエラーでなかったと判定されたことから、補正可能と判定して(図9のステップS11に相当する処理)、当該フレームのKey Changing Timing124の値を補間する(図9のステップS12に相当する処理)処理である。図19の例では、2つ前のフレームと直前フレームとのKey Changing Timing124の値がそれぞれ信用されて(実際には2つ前のフレームの値は伝送エラーのため異常な値であり、直前フレームの値は誤訂正された値であるが)、Key Changing Timing124の値が1(2'b01)に補間されてしまう。
ステップSgとは、連続性チェックを行う処理、即ち、(3回目に対する)当該フレームにおける推移パターンが正常であるか否かを判定する処理である。図19の例では、(3回目に対する)当該フレームにおける推移パターンは(2,1,3)であることから、このステップSgの処理で、エラーと判定される。
ステップShとは、(3回目に対する)2つ前のフレーム(が当該フレームだったとき)における推移パターンがエラーであったか否かを判定する処理である。図19の例では、(3回目に対する)2つ前のフレームにおけるエラーフラグは立っている(1である)ので、エラーであったと判定される処理である。
ステップSiとは、連続性チェックでエラーであると判定され、かつ、2つ前のフレームにおける推移パターンがエラーであったと判定されたことから、補正不可能と判定して、当該フレームのKey Changing Timing124の値を補間せずにそのまま値を採用する(図9のステップS10に相当する処理)処理である。図19の例では、Key Changing Timing124の値は3(2'b11)がそのまま採用される。
以上説明したように、Key Change Timing124の値が本来0(2'b00)でなければいけいないフレームが当該フレームとなったとき(図19の例では2回目のとき)に、その当該フレームのKey Change Timing124の値を誤訂正をしてしまう(図19の例では1(2'b01)に補間してしまう)、という上述した問題が発生してしまう。この問題が発生すると、上述したように、それ以降、復号用のLE Key61−Dの更新タイミングを逸し(Key Change Timing124の値が0(2'b00)とならずに)、次のLE Key61−Dの更新タイミングまで( min 1分)の間コンテンツの復号を正しく行うことができなくなってしまうという重大事故につながってしまうのである。
以上、キーチェンジタイミング補正部111(図5)の処理例について説明した。
ところで、図5のKey Change Timing124の値とCurrent Frame Count134(Count Link Encryption Frame Count134)の値との間には、図20に示される関係が存在する。即ち、図20は、Key Change Timing124とCurrent Frame Count134との関係を示す図である。
図20に示されるように、Current Frame Count134の値は、Key Change Timing124の値が0(2'b00)となるフレームが当該フレームとなったときに、0にリセットされ、以降 フレーム毎に 1 ずつインプリメントされていく。
また、メタデータ重畳暗号化AVデータのうちの、図4のメタデータ64−3に伝送エラーが発生した場合、メタデータ64−3には、Key Change Timing124とともに、Current Frame Count134も存在するため、Current Frame Count134の値が異常となることもある。
従って、本実施の形態では、上述したキーチェンジタイミング補正部111(図5)の処理によってKey Change Timing124の値が補間されるのと同様に、Current Frame Count134の値の補間も必要になる。
そこで、本発明人は、上述したKey Change Timing124の値の補間の手法に加えて、さらに、Current Frame Count134の値の補間の手法として、次のような手法を発明した。即ち、本発明人が発明したCurrent Frame Count134の値の補間の手法とは、Key Change Timing124の値が0(2'b00)となるフレームが当該フレームの場合に伝送エラーが発生したと判定されるときには、当該フレームのCurrent Frame Count134の補間する値を、Key Change Timing124の値から決定し、Key Change Timing124の値が0(2'b00)でないフレームが当該フレームの場合に伝送エラーが発生したと判定されるときには、Current Frame Count134の補間する値を、直前フレームのCurrent Frame Count134の値から決定する、という手法である。
本実施の形態では、かかる手法がLEFLAMEカウント値補正部112(図5)に適用されており、それゆえ、LEFLAMEカウント値補正部112は、例えば図21のフローチャートに従った処理を実行する。即ち、図21は、かかる手法を実現させる処理の一例であって、LEFLAMEカウント値補正部112の処理の一例を示すフローチャートである。
ただし、図21の処理は、当該フレームについての処理である。即ち、図21の処理は、暗号化AVデータを構成する各フレーム(データ)毎に1回ずつ実行される。具体的には、第1のフレームが当該フレームとなったときに、図21の処理が1回実行され、その後、第1のフレームの次の第2のフレームが当該フレームとなったときに、図21の処理が1回実行される。
ステップS21において、LEFLAMEカウント値補正部112は、当該フレームのCurrent Frame Count134の値が0であるか否かを判定する。
ステップS21において、当該フレームのCurrent Frame Count134の値が0ではない(それ以外の値である)と判定された場合、処理はステップS22に進む。ステップS22において、LEFLAMEカウント値補正部112は、直前フレームのCurrent Frame Count134の値 = 当該フレームのCurrent Frame Count134の値 − 1であるか否か、即ち、直前フレームのCurrent Frame Count134の値が、当該フレームのCurrent Frame Count134の値より1小さい値となっているか否かを判定する。
ステップS22において、直前フレームのCurrent Frame Count134の値 = 当該フレームのCurrent Frame Count134の値 − 1である、即ち、直前フレームのCurrent Frame Count134の値が、当該フレームのCurrent Frame Count134の値より1小さい値となっていると判定された場合、処理はステップS28に進む。
ステップS28において、LEFLAMEカウント値補正部112は、直前フレームと当該フレームとのCurrent Frame Count134の推移パターンは、正常パターンであると判定する。これにより、当該フレームのCurrent Frame Count134はそのまま(0補正されて)、補正後Current Frame Count135としてAES Input生成部110に提供されて、当該フレームについてのLEFLAMEカウント値補正部112の処理は終了となる。
これに対して、ステップS22において、直前フレームのCurrent Frame Count134の値 = 当該フレームのCurrent Frame Count134の値 − 1ではない、即ち、直前フレームのCurrent Frame Count134の値が、当該フレームのCurrent Frame Count134の値より1小さい値とは別の値となっていると判定された場合、処理はステップS24に進む。
ステップS24において、LEFLAMEカウント値補正部112は、2つ前のフレームと直前フレームとのCurrent Frame Count134の推移パターン(直前フレームが当該フレームであったときのLEFLAMEカウント値補正部112の処理、即ち、前回の処理で判定された推移パターン)は、異常であったか否かを判定する。
ステップS24において、2つ前のフレームと直前フレームとのCurrent Frame Count134の推移パターンは異常であったと判定された場合、処理はステップS25に進む。ステップS25において、LEFLAMEカウント値補正部112は、直前フレームと当該フレームとのCurrent Frame Count134の推移パターンは異常であるが、補正不可能であると判定する。これにより、当該フレームのCurrent Frame Count134の値はそのまま(0補正されて)、補正後Current Frame Count135としてAES Input生成部110に提供されて、当該フレームについてのLEFLAMEカウント値補正部112の処理は終了となる。
これに対して、ステップS24において、2つ前のフレームと直前フレームとのCurrent Frame Count134の推移パターンは正常であった(異常ではなかった)と判定された場合、処理はステップS26に進む。ステップS26において、LEFLAMEカウント値補正部112は、直前フレームと当該フレームとのCurrent Frame Count134の推移パターンは異常であって、補正可能であると判定する。そして、ステップS27において、LEFLAMEカウント値補正部112は、当該フレームのCurrent Frame Count134の値を補間する。なお、ステップS27の処理でどのような値に補間するのかについては、基本的に上述した手法に従うが、その具体例については図22と図23を参照して後述する。
ステップS27の処理結果、即ち、当該フレームのCurrent Frame Count134の補間後の値は、補正後Current Frame Count135としてAES Input生成部110に提供される。これにより、当該フレームについてのLEFLAMEカウント値補正部112の処理は終了となる。
また、ステップS21において、当該フレームのCurrent Frame Count134の値が0であると判定された場合、処理はステップS23に進む。ステップS23において、LEFLAMEカウント値補正部112は、当該フレームのKey Change Timing124の値が0(2'b00)であるか否かを判定する。
ステップS23において、当該フレームのKey Change Timing124の値が0(2'b00)であると判定された場合、処理はステップS28に進む。すると、上述したように、ステップS28の処理が実行されて、当該フレームのCurrent Frame Count134はそのまま(0補正されて)、補正後Current Frame Count135としてAES Input生成部110に提供されて、当該フレームについてのLEFLAMEカウント値補正部112の処理は終了となる。
これに対して、ステップS24において、当該フレームのKey Change Timing124の値が0(2'b00)ではないと判定された場合、即ち、3(2'b11),2(2'b10),1(2'b01)のうちの何れかであると判定された場合、処理はステップS24に進み、それ以降の処理が繰り返される。
即ち、この場合、2つ前のフレームと直前フレームとのCurrent Frame Count134の推移パターンが異常であったときには、当該フレームのCurrent Frame Count134はそのまま(0補正されて)、補正後Current Frame Count135としてAES Input生成部110に提供されて、当該フレームについてのLEFLAMEカウント値補正部112の処理は終了となる。これに対して、2つ前のフレームと直前フレームとのCurrent Frame Count134の推移パターンが正常であったときには、当該フレームのCurrent Frame Count134の値は補間され、その補間後の値が補正後Current Frame Count135としてAES Input生成部110に提供されて、当該フレームについてのLEFLAMEカウント値補正部112の処理は終了となる。
以下、図22と図23の具体例を参照して、当該フレームについてのLEFLAMEカウント値補正部112の処理についてさらに説明する。
即ち、図22と図23のそれぞれは、当該フレームについてのLEFLAMEカウント値補正部112の具体例を示している。
図22と図23において、上の図は、各フレームのKey Change Timing124のそれぞれの値とエラーフラグとのそれぞれの時間推移を示している。
また、図22と図23において、上の図は、各フレームのCurrent Frame Count134のそれぞれの値とエラーフラグとのそれぞれの時間推移を示している。
図22と図23のCurrent Frame Count134の時間推移の図において、×(バツ印)がされている値が、直前フレームと当該フレームとのKey Change Timing124の推移パターンが正常時の値(正常な値)を示しているが、各例の場合、伝送エラーにより、Current Frame Count134の値がその×(バツ印)の上に記述される値になってしまったことを意味している。そして、その×(バツ印)の下の値が、LEFLAMEカウント値補正部112のS27(図21)の処理で補間される値を示している。
また、図22と図23において、Current Frame Count134のエラーフラグとは、直前フレームと当該フレームとのCurrent Frame Count134の推移パターンが異常であるか否かを示すフラグであって、異常な場合には1となり正常な場合には0となるフラグである。即ち、当該フレームにおいてエラーフラグが立っていること(1であること)は、直前フレームと当該フレームとのCurrent Frame Count134の推移パターンは異常であることを示す。従って、直前フレームにおいてエラーフラグが立っている場合(1である場合)、図21のステップS24の処理では、2つ前のフレームと直前フレームとのCurrent Frame Count134の推移パターンが異常であった(YESである)と判定されて、処理はステップS25に進むことになる。
図22は、当該フレームのCurrent Frame Count134の値は、正常であれば0であるところ、伝送エラーのために0以外になってしまった例を示している。
図22の例の場合、ステップS21NO,S22NOを経由してステップS24に進む。そして、ステップS24でNOと判定されて、ステップS26の処理後、ステップS27の処理で、当該フレームのCurrent Frame Count134の値が0に補間される。
即ち、図22は、Key Change Timing124の値が0(2'b00)となるフレームが当該フレームの場合の例を示している。この場合、上述した手法によれば、当該フレームのCurrent Frame Count134の補間する値は、Key Change Timing124の値から決定される。従って、図22の例では、Key Change Timing124の値が0(2'b00)であることから(図1の復号用のLE Key61−Dの更新タイミングであることから)、当該フレームのCurrent Frame Count134の値が0に補間されるのである。
図23は、当該フレームのCurrent Frame Count134の値は、正常であれば2であるところ、伝送エラーのために2以外になってしまった例を示している。
図23の例の場合、ステップS21NO,S22NOを経由してステップS24に進む。そして、ステップS24でNOと判定されて、ステップS26の処理後、ステップS27の処理で、当該フレームのCurrent Frame Count134の値が2に補間される。
即ち、図23は、Key Change Timing124の値が0(2'b00)ではないフレームが当該フレームの場合の例を示している。この場合、上述した手法によれば、当該フレームのCurrent Frame Count134の補間する値は、直前フレームのCurrent Frame Count134の値から決定される。従って、図23の例では、直前フレームのCurrent Frame Count134の値が1であり、Current Frame Count134の値はフレーム毎に1ずつインプリメントされることから(図20参照)、当該フレームのCurrent Frame Count134の値が2に補間されるのである。
なお、伝送エラーによるCurrent Frame Count134の値の補間は、本実施の形態では、当該フレームと直前フレームとにおけるCurrent Frame Count134の推移パターン(相関)を利用しているが、本実施の形態に限定されず、さらに長期の推移パターン(さらに複数のフレームにまたがるCurrent Frame Count134の推移パターン)を利用することもできる。
しかしながら、基準となる Key Change Timing124の値の補間が、上述したように1フレーム単独の伝送エラーしか対応せず、かつ、Key Change Timing124とCurrent Frame Count134(Current Link Encryption Frame Count134)は同一のメタデータ64−3(図4)に含まれていることを考慮すると、Current Frame Count134にのみ連続フレームの伝送エラーが発生する確率はきわめて低い。従って、かかる長期の推移パターンを利用してもそのハードウエアの負担の割にはその効果は小さく、本実施の形態の推移パターン、即ち、当該フレームと直前フレームとにおけるCurrent Frame Count134の推移パターンを利用する方が好適である。
以上、本発明が適用される情報処理装置の一実施の形態として、図1の構成の復号装置2(図5の構成のメタデータ抽出部21を含む復号装置2)について説明した。
しかしながら、本発明が適用される情報処理装置は、上述した復号装置に限定されず、様々な実施の形態を取ることができる。
具体的には、本発明が適用される情報処理装置は、次のような情報処理装置であれば足り、その実施の形態は特に問わない。
即ち、連続する複数の単位データから構成されるストリームデータが前記単位データ毎に順次暗号化されていく場合、複数の前記単位データのそれぞれが暗号化されるときに利用される鍵が所定の規則で更新されていくことが規定されている暗号化手法に従って、そのストリームデータが暗号化された結果得られる暗号化データに対して、そのストリームデータの暗号化に利用された複数の鍵およびそれらの複数の鍵の更新タイミングを特定する更新情報を含むメタデータを利用して、復号処理を施す情報処理装置であって、前記暗号化データを取得して、その暗号化データを構成する、複数の暗号化された前記単位データのそれぞれに対して、複数の前記鍵のうちの暗号化されたときに利用された鍵を利用して復号処理を施す復号手段と、前記メタデータを取得して、前記メタデータに含まれる複数の前記鍵のそれぞれに対応する複数の復号鍵のそれぞれを生成し、前記メタデータに含まれる前記更新情報に従って、複数の前記復号鍵のうちの対応する1つを前記復号手段に提供するメタデータ取得手段とを備え、前記メタデータ取得手段は、前記更新情報にエラーが発生しているか否かを判定し、エラーが発生していると判定した場合、前記更新情報のうちの少なくとも一部を補正する補正手段を有する情報処理装置であれば、本発明が適用される情報処理装置として足り、その実施の形態は問わない。
即ち、復号手段、メタデータ取得手段、および、補正手段のそれぞれは、上述した機能を有していれば、その実施の形態は問わない。
このような本発明が適用される情報処理装置は、かかる特徴的構成を有しているので、暗号化装置から復号装置にメタデータが伝送される際にエラーが発生しても、復号処理装置がそのメタデータを利用する復号処理を正常に実行できる、という効果を奏することが可能になる。
ところで、上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図24は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。即ち、例えば上述した一連の処理をプログラムにより実行する場合には、メタデータ抽出部21等は、図24の構成のパーソナルコンピュータまたはその一部で構成することも可能である。
図24において、CPU(Central Processing Unit)201は、ROM(Read Only Memory)202、または記憶部208に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)203には、CPU201が実行するプログラムやデータなどが適宜記憶される。これらのCPU201、ROM202、およびRAM203は、バス204により相互に接続されている。
CPU201にはまた、バス204を介して入出力インタフェース205が接続されている。入出力インタフェース205には、キーボード、マウス、マイクロホンなどよりなる入力部206、ディスプレイ、スピーカなどよりなる出力部207が接続されている。CPU201は、入力部206から入力される指令に対応して各種の処理を実行する。そして、CPU201は、処理の結果を出力部207に出力する。
入出力インタフェース205に接続されている記憶部208は、例えばハードディスクからなり、CPU201が実行するプログラムや各種のデータを記憶する。通信部209は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
また、通信部209を介してプログラムを取得し、記憶部208に記憶してもよい。
入出力インタフェース205に接続されているドライブ210は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア211が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部208に転送され、記憶される。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図24に示されるように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア211、または、プログラムが一時的もしくは永続的に格納されるROM202や、記憶部208を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部209を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
さらにまた、本発明は、上述した図1のシステムだけではなく、様々なシステムに適用することができる。例えば、上述した図1の例では、メタデータ64と、AVデータ暗号化部32によりAVデータが暗号化された結果得られる暗号化AVデータは一緒に、即ち、メタデータ重畳暗号化AVデータとして、送信側である暗号化装置1から受信側である復号装置2に送信されているが、メタデータ64と暗号化AVデータとは必ずしも一緒に送信する必要はない。即ち、メタデータを、暗号化AVデータとは別の伝送経路で送信側から受信側に伝送するシステムに対しても、本発明を適用することが可能である。
1 暗号化装置, 2 復号装置, 11 暗号化部, 12 メタデータ生成部, 13 重畳部, 21 メタデータ抽出部, 22 復号部, 31 AES暗号データ生成部, 32 AVデータ暗号化部 , 41AES復号データ生成部, 42 AVデータ復号部, 61−D,61−E LE Key, 62−D,62−E AES input, 63−D,63−E Frame reset, 64,64−1乃至64−3 メタデータ, 65 AES暗号データ, 66 AES復号データ, 101 メタデータ抽出分離部, 102 LEKP復元部, 103 LEKPテーブル, 104 キーチェンジトリガ生成部, 105 レジスタ, 108 カウンタ, 109 レジスタ, 110 AES Input生成部, 111 キーチェンジングタイミング補正部, 112 LE Frameカウント値補正部, 121 LEKM, 122 Current LE_Key ID, 123 Next LE_Key ID, 124 Key Change Timing, 126 LE_attribute_data, 127 キーチェンジトリガ, 129 Frame/line reset, 130 Frame reset, 131 line reset, 132 Line number of HD SDI, 133 HD-SDI Link Number, 134 Current Frame Count, 135 補正後Current Frame Count, 201 CPU, 202 ROM, 208 記憶部, 211 リムーバブルメディア