(57)【特許請求の範囲】
【請求項１】
ユニークな乱数である第１のキーLK、第２のキーLK'、および公開鍵暗号で用いられる関数Ｇと、自分自身に固有の識別データを記憶する記憶手段と、
擬似乱数を発生する擬似乱数発生手段と、
他の情報処理装置から伝送されてきた、前記識別データに基づき前記他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、前記第２のキーLK'に対して前記関数Ｇを適用して生成した値と、前記第１のキーLKを用いて、前記鍵skと同一の鍵sk'を生成する処理を行う処理手段と
を備え、
前記第２のキーLK'は、前記識別データと、前記鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、前記擬似乱数発生手段に適用して得られる擬似乱数pRNG(H)と、前記第１のキーLKを前記擬似乱数発生手段に適用して得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、前記関数Ｇの逆関数Ｇ^-1に適用して生成されている
ことを特徴とする情報処理装置。
【請求項２】
前記他の情報処理装置から伝送されてきた、前記擬似乱数pRNG(H)を用いて暗号化されている第４のキーSKを、前記第２のキーLK'を前記関数Ｇに適用して得られるデータＧ(LK')と、前記擬似乱数pRNG(LK)を用いて復号するキー復号手段を
さらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
暗号化されているデータを復号するための鍵を生成する情報処理装置の情報処理方法において、
ユニークな乱数である第１のキーLK、第２のキーLK'、および公開鍵暗号で用いられる関数Ｇと、自分自身に固有の識別データを記憶する記憶ステップと、
擬似乱数を発生する擬似乱数発生ステップと、
他の情報処理装置から伝送されてきた、前記識別データに基づき前記他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、前記第２のキーLK'に対して前記関数Ｇを適用して生成した値と、前記第１のキーLKを用いて、前記鍵skと同一の鍵sk'を生成する処理を行う処理ステップと
を備え、
前記第２のキーLK'は、前記識別データと、前記鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、前記擬似乱数発生ステップによって得られる擬似乱数pRNG(H)と、前記第１のキーLKを前記擬似乱数発生ステップによって得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、前記関数Ｇの逆関数Ｇ^-1に適用して生成されている
ことを特徴とする情報処理方法。
【請求項４】
暗号化されているデータを復号するための鍵を生成する情報処理をコンピュータに実行させるプログラムであって、
ユニークな乱数である第１のキーLK、第２のキーLK'、および公開鍵暗号で用いられる関数Ｇと、自分自身に固有の識別データを記憶する記憶ステップと、
擬似乱数を発生する擬似乱数発生ステップと、
他の情報処理装置から伝送されてきた、前記識別データに基づき前記他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、前記第２のキーLK'に対して前記関数Ｇを適用して生成した値と、前記第１のキーLKを用いて、前記鍵skと同一の鍵sk'を生成する処理を行う処理ステップと
を含み、
前記第２のキーLK'は、前記識別データと、前記鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、前記擬似乱数発生ステップによって得られる擬似乱数pRNG(H)と、前記第１のキーLKを前記擬似乱数発生ステップによって得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、前記関数Ｇの逆関数Ｇ^-1に適用して生成されている
コンピュータが読み取り可能なプログラムが記録されている記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置および方法、並びに記録媒体に関し、特に、より安全にデータを授受することができるようにした、情報処理装置および方法、並びに記録媒体に関する。
【０００２】
【従来の技術】
最近、ＡＶ機器やパーソナルコンピュータなどの電子機器を、例えばIEEE１３９４シリアルバスを介して相互に接続し、相互の間でデータを授受することができるようにするシステムが提案されている。
【０００３】
このようなシステムにおいて、例えば一般のユーザが、DVDプレーヤにより再生出力された映画情報を、１３９４シリアルバスを介してモニタに出力し、表示させる行為は、一般的に、DVD（ディスク）を購入した時点において、映画情報の著作権者から許容されているものとされる。しかしながら、DVDプレーヤから再生された映画情報を、光磁気ディスク、その他の記録媒体に記録する行為は、著作権者からの特別な許諾が必要となる。このような場合、例えば、光磁気ディスク装置に、映画情報を記録することが許可されているか否かを表すキーを記憶しておき、このキーを利用して、その光磁気ディスク装置が正当な装置（著作権者からのライセンスを受けた装置）であるか否かを認証するようにし、正当な装置として認証された場合には、その光磁気ディスク装置に映画情報の記録を許容するようにすることが考えられる。
【０００４】
このような場合、映画情報を伝送する側の装置（以下、このような装置をソース（source）と称する）と、伝送を受けた装置（以下、このような装置をシンク（sink）と称する）との間で、相手側の装置が適正な装置であるか否かを認証する必要がある。
【０００５】
図３２は、このような認証を行う従来の方法を表している。同図に示すように、ソースとシンクは、それぞれ著作権者から予め所定の関数ｆを受け取り、それぞれのメモリに記憶しておく。この関数ｆは、その入力と出力から、その関数ｆを特定するのが困難な関数であり、また、知らないものが、その関数ｆに対して任意の入力を与えた場合に得られる出力を推定するのが困難な関数とされる。そして、この関数ｆは、著作権者から許可された装置にのみ与えられ、記憶される。
【０００６】
ソースは乱数ｒを発生し、これを１３９４バスを介してシンクに伝送する。また、ソースは、関数ｆに対して乱数ｒを適用して、ｘ（＝ｆ（ｒ））を生成する。
【０００７】
一方、シンク側においては、ソース側から転送されてきた乱数ｒを関数ｆに適用して、ｙ（＝ｆ（ｒ））を生成する。そして、このｙをソース側に伝送する。
【０００８】
ソース側においては、演算により求めたｘと、シンク側から伝送されてきたｙを比較し、両者が一致するか否か（ｘ＝ｙであるか否か）を判定する。両者が一致していれば、ソース側は、シンク側を正当な装置であると認証し、映画情報を所定のキーで暗号化して、シンク側に伝送する。
【０００９】
このキーとしては、シンクが伝送してきたｙを関数ｆに適用して生成した値ｋ（＝ｆ（ｙ））が用いられる。シンク側においても、同様にして、ｙに関数ｆを適用して、キーｋ（＝ｆ（ｙ））を生成する。そして、このキーｋを用いて、ソース側から伝送されてきた、暗号化されている映画データを復号する。
【００１０】
【発明が解決しようとする課題】
しかしながら、このような方法においては、ソースまたはシンクとして、データを授受するすべての電子機器が、同一の関数ｆを秘密裡に保持する必要がある。
【００１１】
その結果、例えば、不正なユーザによって、１つの電子機器に保持されている関数ｆが盗まれてしまったような場合、この不正なユーザは、１３９４バスを介して授受されるデータを監視することにより、鍵ｋを生成することができ、暗号化されているデータを解読することが可能となる。その結果、不正なユーザは、所望の電子機器になりすまして、不正に情報を盗むことが可能となる。
【００１２】
本発明はこのような状況に鑑みてなされたものであり、暗号または復号に必要な情報が盗まれたとしても、不正なユーザが、これを用いて所望の電子機器になりすますことができないようし、より安全性を図るようにするものである。
【００２２】
【課題を解決するための手段】
請求項１に記載の情報処理装置は、ユニークな乱数である第１のキーLK、第２のキーLK'、および公開鍵暗号で用いられる関数Ｇと、自分自身に固有の識別データを記憶する記憶手段と、擬似乱数を発生する擬似乱数発生手段と、他の情報処理装置から伝送されてきた、識別データに基づき他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、第２のキーLK'に対して関数Ｇを適用して生成した値と、第１のキーLKを用いて、鍵skと同一の鍵sk'を生成する処理を行う処理手段とを備え、第２のキーLK'は、識別データと、鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、擬似乱数発生手段に適用して得られる擬似乱数pRNG(H)と、第１のキーLKを擬似乱数発生手段に適用して得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、関数Ｇの逆関数Ｇ^-1に適用して生成されていることを特徴とする。
【００２３】
請求項３に記載の情報処理方法は、ユニークな乱数である第１のキーLK、第２のキーLK'、および公開鍵暗号で用いられる関数Ｇと、自分自身に固有の識別データを記憶する記憶ステップと、擬似乱数を発生する擬似乱数発生ステップと、他の情報処理装置から伝送されてきた、識別データに基づき他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、第２のキーLK'に対して関数Ｇを適用して生成した値と、第１のキーLKを用いて、鍵skと同一の鍵sk'を生成する処理を行う処理ステップとを備え、第２のキーLK'は、識別データと、鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、擬似乱数発生ステップによって得られる擬似乱数pRNG(H)と、第１のキーLKを擬似乱数発生ステップによって得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、関数Ｇの逆関数Ｇ^-1に適用して生成されていることを特徴とする。
【００２４】
請求項４に記載の記録媒体は、ユニークな乱数である第１のキーLK、第２のキーLK'、および公開鍵暗号で用いられる関数Ｇと、自分自身に固有の識別データを記憶する記憶ステップと、擬似乱数を発生する擬似乱数発生ステップと、他の情報処理装置から伝送されてきた、識別データに基づき他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、第２のキーLK'に対して関数Ｇを適用して生成した値と、第１のキーLKを用いて、鍵skと同一の鍵sk'を生成する処理を行う処理ステップとを含み、第２のキーLK'は、識別データと、鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、擬似乱数発生ステップによって得られる擬似乱数pRNG(H)と、第１のキーLKを擬似乱数発生ステップによって得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、関数Ｇの逆関数Ｇ^-1に適用して生成されているコンピュータが読み取り可能なプログラムが記録されていることを特徴とする。
【００３４】
請求項１に記載の情報処理装置、請求項３に記載の情報処理方法、および請求項４に記載の記録媒体においては、ユニークな乱数である第１のキーLK、第２のキーLK'、および公開鍵暗号で用いられる関数Ｇと、自分自身に固有の識別データが記憶され、擬似乱数が発生され、他の情報処理装置から伝送されてきた、識別データに基づき他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、第２のキーLK'に対して関数Ｇを適用して生成した値と、第１のキーLKを用いて、鍵skと同一の鍵sk'を生成される。また、第２のキーLK'は、識別データと、鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、擬似乱数発生手段に適用して得られる擬似乱数pRNG(H)と、第１のキーLKを擬似乱数発生手段に適用して得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、関数Ｇの逆関数Ｇ^-1に適用して生成されている。
【００３７】
【発明の実施の形態】
以下に本発明の実施の形態を説明するが、特許請求の範囲に記載の発明の各手段と以下の実施の形態との対応関係を明らかにするために、各手段の後の括弧内に、対応する実施の形態（但し一例）を付加して本発明の特徴を記述すると、次のようになる。但し勿論この記載は、各手段を記載したものに限定することを意味するものではない。
【００５３】
請求項１に記載の情報処理装置は、ユニークな乱数である第１のキーLK（例えば、図９のLK）、第２のキーLK'（例えば、図９のLK'）、および公開鍵暗号で用いられる関数Ｇ（例えば、図９の関数Ｇ）と、自分自身に固有の識別データ（例えば、図９のID）を記憶する記憶手段（例えば、図９のEEPROM５０）と、擬似乱数を発生する擬似乱数発生手段（例えば、図９のpRNG）と、他の情報処理装置から伝送されてきた、識別データに基づき他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、第２のキーLK'に対して関数Ｇを適用して生成した値と、第１のキーLKを用いて、鍵skと同一の鍵sk'を生成する処理を行う処理手段（例えば、図２のCPU４１）とを備え、第２のキーLK'は、識別データと、鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、擬似乱数発生手段に適用して得られる擬似乱数pRNG(H)と、第１のキーLKを擬似乱数発生手段に適用して得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、関数Ｇの逆関数Ｇ^-1に適用して生成されていることを特徴とする。
【００５５】
請求項２に記載の情報処理装置は、他の情報処理装置から伝送されてきた、擬似乱数pRNG(H)を用いて暗号化されている第４のキーSKを、第２のキーLK'を関数Ｇに適用して得られるデータＧ(LK')と、擬似乱数pRNG(LK)を用いて復号するキー復号手段（例えば、図９のステップＳ１１０）をさらに備えることを特徴とする。
【００５６】
請求項３に記載の情報処理方法は、ユニークな乱数である第１のキーLK（例えば、図９のLK）、第２のキーLK'（例えば、図９のLK'）、および公開鍵暗号で用いられる関数Ｇ（例えば、図９の関数Ｇ）と、自分自身に固有の識別データを記憶する記憶ステップ（例えば、図９のEEPROM５０）と、擬似乱数を発生する擬似乱数発生ステップ（例えば、図９のpRNG）と、他の情報処理装置から伝送されてきた、識別データに基づき他の情報処理装置が生成した疑似乱数および鍵skを用いて生成した情報に対して、第２のキーLK'に対して関数Ｇを適用して生成した値と、第１のキーLKを用いて、鍵skと同一の鍵sk'を生成する処理を行う処理ステップ（例えば、図２のCPU４１）とを備え、第２のキーLK'は、識別データと、鍵skを用いて生成した情報に対応する第３のキーSVKに基づいて生成されているデータＨを、擬似乱数発生ステップによって得られる擬似乱数pRNG(H)と、第１のキーLKを擬似乱数発生ステップによって得られる擬似乱数pRNG(LK)に基づいて生成されるデータＲを、関数Ｇの逆関数Ｇ^-1に適用して生成されていることを特徴とする。
【００６１】
図１は、本発明を適用した情報処理システムの構成例を表している。この構成例においては、IEEE１３９４シリアルバス１１を介してDVDプレーヤ１、パーソナルコンピュータ２、光磁気ディスク装置３、データ放送受信装置４、モニタ５、テレビジョン受像機６が相互に接続されている。
【００６２】
図２は、この内のDVDプレーヤ１、パーソナルコンピュータ２、および光磁気ディスク装置３の内部のより詳細な構成例を表している。DVDプレーヤ１は、１３９４インタフェース２６を介して、１３９４バス１１に接続されている。CPU２１は、ROM２２に記憶されているプログラムに従って各種の処理を実行し、RAM２３は、CPU２１が各種の処理を実行する上において必要なデータやプログラムなどを適宜記憶する。操作部２４は、ボタン、スイッチ、リモートコントローラなどにより構成され、ユーザにより操作されたとき、その操作に対応する信号を出力する。ドライブ２５は、図示せぬDVD（ディスク）を駆動し、そこに記録されているデータを再生するようになされている。EEPROM２７は、装置の電源オフ後も記憶する必要のある情報（この実施の形態の場合、鍵情報）を記憶するようになされている。内部バス２８は、これらの各部を相互に接続している。
【００６３】
光磁気ディスク装置３は、CPU３１乃至内部バス３８を有している。これらは、上述したDVDプレーヤ１におけるCPU２１乃至内部バス２８と同様の機能を有するものであり、その説明は省略する。ただし、ドライブ３５は、図示せぬ光磁気ディスクを駆動し、そこにデータを記録または再生するようになされている。
【００６４】
パーソナルコンピュータ２は、１３９４インタフェース４９を介して１３９４バス１１に接続されている。CPU４１は、ROM４２に記憶されているプログラムに従って各種の処理を実行する。RAM４３には、CPU４１が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース４４には、キーボード４５とマウス４６が接続されており、それらから入力された信号をCPU４１に出力するようになされている。また、入出力インタフェース４４には、ハードディスク（HDD）４７が接続されており、そこにデータ、プログラムなどを記録再生することができるようになされている。入出力インタフェース４４にはまた、拡張ボード４８を適宜装着し、必要な機能を付加することができるようになされている。EEPROM５０には、電源オフ後も保持する必要のある情報（この実施の形態の場合、各種の鍵情報）が記憶されるようになされている。例えば、PCI(Peripheral Component Interconnect)、ローカルバスなどにより構成される内部バス５１は、これらの各部を相互に接続するようになされている。
【００６５】
なお、この内部バス５１は、ユーザに対して解放されており、ユーザは、拡張ボード４８に所定のボードを適宜接続したり、所定のソフトウェアプログラムを作成して、CPU４１にインストールすることで、内部バス５１により伝送されるデータを適宜受信することができるようになされている。
【００６６】
これに対して、DVDプレーヤ１や光磁気ディスク装置３などのコンシューマエレクトロニクス（CE）装置においては、内部バス２８や内部バス３８は、ユーザに解放されておらず、特殊な改造などを行わない限り、そこに伝送されるデータを取得することができないようになされている。
【００６７】
次に、所定のソースとシンクとの間で行われる認証の処理について説明する。この認証の処理は、図３に示すように、ソースとしての、例えばDVDプレーヤ１のROM２２に予め記憶されているソフトウェアプログラムの１つとしてのファームウェア２０と、シンクとしての、例えばパーソナルコンピュータ２のROM４２に記憶されており、CPU４１が処理するソフトウェアプログラムの１つとしてのライセンスマネージャ６２との間において行われる。
【００６８】
図４は、ソース（DVDプレーヤ１）と、シンク（パーソナルコンピュータ２）との間において行われる認証の手順を示している。DVDプレーヤ１のEEPROM２７には、サービスキー（service_key）と関数（hash）が予め記憶されている。これらはいずれも著作権者から、このDVDプレーヤ１のユーザに与えられたものであり、各ユーザは、EEPROM２７に、これを秘密裡に保管しておくものである。
【００６９】
サービスキーは、著作権者が提供する情報毎に与えられるものであり、この１３９４バス１１で構成されるシステムにおいて、共通のものである。なお、本明細書において、システムとは、複数の装置で構成される全体的な装置を示すものとする。
【００７０】
hash関数は、任意長の入力に対して、６４ビットまたは１２８ビットなどの固定長のデータを出力する関数であり、ｙ（＝hash（ｘ））を与えられたとき、ｘを求めることが困難であり、かつ、hash（ｘ１）＝hash（ｘ２）となるｘ１と、ｘ２の組を求めることも困難となる関数である。１方向hash関数の代表的なものとして、MD５やSHAなどが知られている。この１方向hash関数については、Bruce Schneier著の「Applied Cryptography(Second Edition),Wiley」に詳しく解説されている。
【００７１】
一方、シンクとしての例えばパーソナルコンピュータ２は、著作権者から与えられた、自分自身に固有の識別番号（ID）とライセンスキー（license_key）をEEPROM５０に秘密裡に保持している。このライセンスキーは、ｎビットのIDとｍビットのサービスキーを連結して得たｎ＋ｍビットのデータ（ID || service_key）に対して、hash関数を適用して得られる値である。すなわち、ライセンスキーは次式で表される。
licence_key=hash(ID || service_key)
【００７２】
IDとしては、例えば１３９４バス１１の規格に定められているnode_unique_IDを用いることができる。このnode_unique_IDは、図５に示すように、８バイト（６４ビット）で構成され、最初の３バイトは、IEEEで管理され、電子機器の各メーカーにIEEEから付与される。また、下位５バイトは、各メーカーが、自分自身がユーザに提供する各装置に対して付与することができるものである。各メーカーは、例えば下位５バイトに対してシリアルに、１台に１個の番号を割り当てるようにし、５バイト分を全部使用した場合には、上位３バイトがさらに別の番号となっているnode_unique_IDの付与を受け、そして、その下位５バイトについて１台に１個の番号を割り当てるようにする。従って、このnode_unique_IDは、メーカーに拘らず、１台毎に異なるものとなり、各装置に固有のものとなる。
【００７３】
ステップＳ１において、DVDプレーヤ１のファームウェア２０は、１３９４インタフェース２６を制御し、１３９４バス１１を介してパーソナルコンピュータ２に対してIDを要求する。パーソナルコンピュータ２のライセンスマネージャ６２は、ステップＳ２において、このIDの要求を受信する。すなわち、１３９４インタフェース４９は、１３９４バス１１を介してDVDプレーヤ１から伝送されてきたID要求の信号を受信すると、これをCPU４１に出力する。CPU４１のライセンスマネージャ６２は、このID要求を受けたとき、ステップＳ３においてEEPROM５０に記憶されているIDを読み出し、これを１３９４インタフェース４９を介して１３９４バス１１からDVDプレーヤ１に伝送する。
【００７４】
DVDプレーヤ１においては、ステップＳ４で１３９４インタフェース２６が、このIDを受け取ると、このIDがCPU２１で動作しているファームウェア２０に供給される。
【００７５】
ファームウェア２０は、ステップＳ５において、パーソナルコンピュータ２から伝送を受けたIDと、EEPROM２７に記憶されているサービスキーを結合して、データ（ID || service_key）を生成し、このデータに対して、次式に示すようにhash関数を適用して、キーlkを生成する。
lk＝hash（ID || service_key）
【００７６】
次に、ステップＳ６において、ファームウェア２０は、暗号鍵skを生成する。この暗号鍵skの詳細については後述するが、この暗号鍵skは、セッションキーとしてDVDプレーヤ１とパーソナルコンピュータ２のそれぞれにおいて利用される。
【００７７】
次に、ステップＳ７において、ファームウェア２０は、ステップＳ５で生成した鍵lkを鍵として、ステップＳ６で生成した暗号鍵skを暗号化して、暗号化データ（暗号化鍵）ｅを得る。すなわち、次式を演算する。
ｅ＝Enc（lk，  sk）
【００７８】
なお、Enc（Ａ，Ｂ）は、共通鍵暗号方式で、鍵Ａを用いて、データＢを暗号化することを意味する。
【００７９】
次に、ステップＳ８で、ファームウェア２０は、ステップＳ７で生成した暗号化データｅをパーソナルコンピュータ２に伝送する。すなわち、この暗号化データｅは、DVDプレーヤ１の１３９４インタフェース２６から１３９４バス１１を介してパーソナルコンピュータ２に伝送される。パーソナルコンピュータ２においては、ステップＳ９で、この暗号化データｅを１３９４インタフェース４９を介して受信する。ライセンスマネージャ６２は、このようにして受信した暗号化データｅを、ステップＳ１０で、EEPROM５０に記憶されているライセンスキーを鍵として、次式に示すように復号し、復号鍵sk'を生成する。
sk'＝Dec（license_key，ｅ）
【００８０】
なお、ここで、Dec（Ａ，Ｂ）は、共通鍵暗号方式で鍵Ａを用いて、データＢを復号することを意味する。
【００８１】
なお、この共通鍵暗号方式における暗号化のアルゴリズムとしては、ＤＥＳが知られている。共通鍵暗号化方式についても、上述した、Applied Cryptography(Second Edition)に詳しく解説されている。
【００８２】
DVDプレーヤ１において、ステップＳ５で生成するキーlkは、パーソナルコンピュータ２のEEPROM５０に記憶されている（license_key）と同一の値となる。すなわち、次式が成立する。
lk＝license_key
【００８３】
従って、パーソナルコンピュータ２において、ステップＳ１０で復号して得たキーsk'は、DVDプレーヤ１において、ステップＳ６で生成した暗号鍵skと同一の値となる。すなわち、次式が成立する。
sk'＝sk
【００８４】
このように、DVDプレーヤ１（ソース）とパーソナルコンピュータ２（シンク）の両方において、同一の鍵sk，sk'を共有することができる。そこで、この鍵skをそのまま暗号鍵として用いるか、あるいは、これを基にして、それぞれが疑似乱数を作り出し、それを暗号鍵として用いることができる。
【００８５】
ライセンスキーは、上述したように、各装置に固有のIDと、提供する情報に対応するサービスキーに基づいて生成されているので、他の装置がskまたはsk'を生成することはできない。また、著作権者から認められていない装置は、ライセンスキーを有していないので、skあるいはsk'を生成することができない。従って、その後DVDプレーヤ１が暗号鍵skを用いて再生データを暗号化してパーソナルコンピュータ２に伝送した場合、パーソナルコンピュータ２が適正にライセンスキーを得たものである場合には、暗号鍵sk'を有しているので、DVDプレーヤ１より伝送されてきた、暗号化されている再生データを復号することができる。しかしながら、パーソナルコンピュータ２が適正なものでない場合、暗号鍵sk'を有していないので、伝送されてきた暗号化されている再生データを復号することができない。換言すれば、適正な装置だけが共通の暗号鍵sk，sk'を生成することができるので、結果的に、認証が行われることになる。
【００８６】
仮に１台のパーソナルコンピュータ２のライセンスキーが盗まれたとしても、IDが１台１台異なるので、そのライセンスキーを用いて、他の装置がDVDプレーヤ１から伝送されてきた暗号化されているデータを復号することはできない。従って、安全性が向上する。
【００８７】
図６は、ソース（DVDプレーヤ１）に対して、パーソナルコンピュータ２だけでなく、光磁気ディスク装置３もシンクとして機能する場合の処理例を表している。
【００８８】
この場合、シンク１としてのパーソナルコンピュータ２のEEPROM５０には、IDとしてID１が、また、ライセンスキーとしてlicense_key１が記憶されており、シンク２としての光磁気ディスク装置３においては、EEPROM３７に、IDとしてID２が、また、ライセンスキーとしてlicense_key２が記憶されている。
【００８９】
DVDプレーヤ１（ソース）とパーソナルコンピュータ２（シンク１）の間において行われるステップＳ１１乃至ステップＳ２０の処理は、図４におけるステップＳ１乃至ステップＳ１０の処理と実質的に同様の処理であるので、その説明は省略する。
【００９０】
すなわち、上述したようにして、DVDプレーヤ１は、パーソナルコンピュータ２に対して認証処理を行う。そして次に、ステップＳ２１において、DVDプレーヤ１は、光磁気ディスク装置３に対して、IDを要求する。光磁気ディスク装置３においては、ステップＳ２２で１３９４インタフェース３６を介して、このID要求信号が受信されると、そのファームウェア３０（図１０）は、ステップＳ２３でEEPROM３７に記憶されているID（ID２）を読み出し、これを１３９４インタフェース３６から、１３９４バス１１を介してDVDプレーヤ１に伝送する。DVDプレーヤ１のファームウェア２０は、ステップＳ２４で、１３９４インタフェース２６を介して、このID２を受け取ると、ステップＳ２５で、次式から鍵lk２を生成する。
lk２＝hash（ID２ || service_key）
【００９１】
さらに、ファームウェア２０は、ステップＳ２６で次式を演算し、ステップＳ１６で生成した鍵skを、ステップＳ２５で生成した鍵lk２を用いて暗号化し、暗号化したデータｅ２を生成する。
ｅ２＝Enc（lk２，sk）
【００９２】
そして、ステップＳ２７で、ファームウェア２０は、この暗号化データｅ２を１３９４インタフェース２６から１３９４バス１１を介して光磁気ディスク装置３に伝送する。
【００９３】
光磁気ディスク装置３においては、ステップＳ２８で１３９４インタフェース３６を介して、この暗号化データｅ２を受信し、ステップＳ２９で次式を演算して、暗号鍵sk２’を生成する。
sk２’＝Dec（license_key２，ｅ２）
【００９４】
以上のようにして、パーソナルコンピュータ２と光磁気ディスク装置３のそれぞれにおいて、暗号鍵sk１’，sk２’が得られたことになる。これらの値は、DVDプレーヤ１における暗号鍵skと同一の値となっている。
【００９５】
図６の処理例においては、DVDプレーヤ１が、パーソナルコンピュータ２と、光磁気ディスク装置３に対して、それぞれ個別にIDを要求し、処理するようにしているのであるが、同報通信によりIDを要求することができる場合は、図７に示すような処理を行うことができる。
【００９６】
すなわち、図７の処理例においては、ステップＳ４１で、ソースとしてのDVDプレーヤ１が、全てのシンク（この例の場合、パーソナルコンピュータ２と光磁気ディスク装置３）に対して同報通信でIDを要求する。パーソナルコンピュータ２と光磁気ディスク装置３は、それぞれステップＳ４２とステップＳ４３で、このID転送要求の信号を受け取ると、それぞれステップＳ４４またはステップＳ４５で、EEPROM５０またはEEPROM３７に記憶されているID１またはID２を読み出し、これをDVDプレーヤ１に転送する。DVDプレーヤ１は、ステップＳ４６とステップＳ４７で、これらのIDをそれぞれ受信する。
【００９７】
DVDプレーヤ１においては、さらにステップＳ４８で、次式から暗号鍵lk１を生成する。
lk１＝hash（ID１ || service_key）
【００９８】
さらに、ステップＳ４９において、次式から暗号鍵lk２が生成される。
lk２＝hash（ID２ || service_key）
【００９９】
DVDプレーヤ１においては、さらにステップＳ５０で、暗号鍵skが生成され、ステップＳ５１で、次式で示すように、暗号鍵skが、鍵lk１を鍵として暗号化される。
ｅ１＝Enc（lk１，sk）
【０１００】
さらに、ステップＳ５２においては、暗号鍵skが、鍵lk２を鍵として、次式に従って暗号化される。
ｅ２＝Enc（lk２，sk）
【０１０１】
さらに、ステップＳ５３においては、ID１，ｅ１，ID２，ｅ２が、それぞれ次式で示すように結合されて、暗号化データｅが生成される。
ｅ＝ID１ || ｅ１ || ID２ || ｅ２
【０１０２】
DVDプレーヤ１においては、さらにステップＳ５４で、以上のようにして生成された暗号化データｅが同報通信で、パーソナルコンピュータ２と光磁気ディスク装置３に伝送される。
【０１０３】
パーソナルコンピュータ２と光磁気ディスク装置３においては、それぞれステップＳ５５またはステップＳ５６で、これらの暗号化データｅが受信される。そして、パーソナルコンピュータ２と光磁気ディスク装置３においては、それぞれステップＳ５７またはステップＳ５８において、次式で示す演算が行われ、暗号鍵sk１’，sk２’が生成される。
sk１’＝Dec（license_key１，ｅ１）
sk２’＝Dec（license_key２，ｅ２）
【０１０４】
図８は、１つのシンクが複数のサービスを受けること（複数の種類の情報の復号）ができるようになされている場合の処理例を表している。すなわち、この場合においては、例えば、シンクとしてのパーソナルコンピュータ２は、複数のライセンスキー（license_key１，license_key２，license_key３など）をEEPROM５０に記憶している。ソースとしてのDVDプレーヤ１は、そのEEPROM２７に複数のサービスキー（service_key１，service_key２，service_key３など）を記憶している。この場合、DVDプレーヤ１は、ステップＳ８１でシンクとしてのパーソナルコンピュータ２に対してIDを要求するとき、DVDプレーヤ１が、これから転送しようとする情報（サービス）を識別するservice_IDを転送する。パーソナルコンピュータ２においては、ステップＳ８２で、これを受信したとき、EEPROM５０に記憶されている複数のライセンスキーの中から、このservice_IDに対応するものを選択し、これを用いて、ステップＳ９０で復号処理を行う。その他の動作は、図４における場合と同様である。
【０１０５】
図９は、さらに他の処理例を表している。この例においては、ソースとしてのDVDプレーヤ１が、そのEEPROM２７に、service_key、hash関数、および疑似乱数発生関数pRNGを記憶している。これらは、著作権者から与えられたものであり、秘密裡に保管される。また、シンクとしてのパーソナルコンピュータ２のEEPROM５０には、著作権者から与えられたID、LK，LK'、関数Ｇ、および疑似乱数数発生関数pRNGを有している。
【０１０６】
LKは、著作権者が作成したユニークな乱数であり、LK'は、次式を満足するように生成されている。
LK'＝Ｇ＾−１（Ｒ）
Ｒ＝pRNG（Ｈ） （＋） pRNG（LK）
Ｈ＝hash（ID || service_key）
【０１０７】
なお、Ｇ＾−１（＾はべき乗を意味する）は、Ｇの逆関数を意味する。Ｇ＾−１は、所定の規則を知っていれば、簡単に計算することができるが、知らない場合には、計算することが難しいような特徴を有している。このような関数としては、公開鍵暗号に用いられている関数を利用することができる。
【０１０８】
また、疑似乱数発生関数は、ハードウェアとして設けるようにすることも可能である。
【０１０９】
DVDプレーヤ１のファームウェア２０は、最初にステップＳ１０１において、パーソナルコンピュータ２のライセンスマネージャ６２に対してIDを要求する。パーソナルコンピュータ２のライセンスマネージャ６２は、ステップＳ１０２でID要求信号を受け取ると、EEPROM５０に記憶されているIDを読み出し、ステップＳ１０３で、これをDVDプレーヤ１に伝送する。DVDプレーヤ１のファームウェア２０は、ステップＳ１０４でこのIDを受け取ると、ステップＳ１０５で次式を演算する。
Ｈ＝hash（ID || service_key）
【０１１０】
さらに、ファームウェア２０は、ステップＳ１０６で鍵skを生成し、ステップＳ１０７で次式を演算する。
ｅ＝sk （＋） pRNG（Ｈ）
【０１１１】
なお、Ａ（＋）Ｂは、ＡとＢの排他的論理和の演算を意味する。
【０１１２】
すなわち、疑似ランダム発生キーpRNGにステップＳ１０５で求めたＨを入力することで得られた結果、pRNG（Ｈ）と、ステップＳ１０６で生成した鍵skのビット毎の排他的論理和を演算することで、鍵SKを暗号化する。
【０１１３】
次に、ステップＳ１０８で、ファームウェア２０は、ｅをパーソナルコンピュータ２に伝送する。
【０１１４】
パーソナルコンピュータ２においては、ステップＳ１０９でこれを受信し、ステップＳ１１０で、次式を演算する。
sk'＝ｅ （＋） Ｇ（LK'） （＋） pRNG（LK）
【０１１５】
すなわち、DVDプレーヤ１から伝送されてきたｅ、EEPROM５０に記憶されている関数Ｇに、やはりEEPROM５０に記憶されているLK'を適用して得られる値Ｇ（LK'）、並びに、EEPROM５０に記憶されているLK'を、やはりEEPROM５０に記憶されている疑似乱数発生関数pRNGに適用して得られる結果pRNG（LK）の排他的論理和を演算し、鍵sk'を得る。
【０１１６】
ここで、次式に示すように、sk＝sk'となる。
sk'＝ｅ （＋） Ｇ（LK'） （＋） pRNG（LK）
＝sk （＋） pRNG（Ｈ） （＋） Ｒ （＋） pRNG（LK）
＝sk （＋） pRNG（Ｈ） （＋） pRNG（Ｈ） （＋） pRNG（LK） （＋） pRNG（LK）
＝sk
【０１１７】
このようにして、ソースとしてのDVDプレーヤ１とシンクとしてのパーソナルコンピュータ２は、同一の鍵sk，sk'を共有することができる。LK，LK'を作ることができるのは、著作権者だけであるので、ソースが不正に、LK，LK'を作ろうとしても作ることができないので、より安全性を高めることができる。
【０１１８】
以上においては、ソースとシンクにおいて認証を行うようにしたが、例えばパーソナルコンピュータ２には、通常、任意のアプリケーションプログラムをロードして用いることができる。そして、このアプリケーションプログラムとしては、不正に作成したものが使用される場合もある。従って、各アプリケーションプログラム毎に、著作権者から許可を得たものであるか否かを判定する必要がある。そこで、図３に示すように、各アプリケーション部６１とライセンスマネージャ６２との間においても、上述したように、認証処理を行うようにすることができる。この場合、ライセンスマネージャ６２がソースとなり、アプリケーション部６１がシンクとなる。
【０１１９】
次に、以上のようにして、認証が行われた後（暗号鍵の共有が行われた後）、暗号鍵を用いて、ソースから暗号化したデータをシンクに転送し、シンクにおいて、この暗号化したデータを復号する場合の動作について説明する。
【０１２０】
図１０に示すように、DVDプレーヤ１、あるいは光磁気ディスク装置３のように、内部の機能が一般ユーザに解放されていない装置においては、１３９４バス１１を介して授受されるデータの暗号化と復号の処理は、それぞれ１３９４インタフェース２６または１３９４インタフェース３６で行われる。この暗号化と復号化には、セッションキーＳと時変キーｉが用いられるが、このセッションキーＳと時変キーｉ（正確には、時変キーｉを生成するためのキーｉ’）は、それぞれファームウェア２０またはファームウェア３０から、１３９４インタフェース２６または１３９４インタフェース３６に供給される。セッションキーＳは、初期値として用いられる初期値キーSsと時変キーｉを攪乱するために用いられる攪乱キーSiとにより構成されている。この初期値キーSsと攪乱キーSiは、上述した認証において生成された暗号鍵sk（＝sk'）の所定のビット数の上位ビットと下位ビットにより、それぞれ構成するようにすることができる。このセッションキーＳは、セッション毎に（例えば、１つの映画情報毎に、あるいは、１回の再生毎に）、適宜、更新される。これに対して、攪乱キーSiとキーｉ’から生成される時変キーｉは、１つのセッション内において、頻繁に更新されるキーであり、例えば、所定のタイミングにおける時刻情報などを用いることができる。
【０１２１】
いま、ソースとしてのDVDプレーヤ１から再生出力した映像データを１３９４バス１１を介して光磁気ディスク装置３とパーソナルコンピュータ２に伝送し、それぞれにおいて復号するものとする。この場合、DVDプレーヤ１においては、１３９４インタフェース２６において、セッションキーＳと時変キーｉを用いて暗号化処理が行われる。光磁気ディスク装置３においては、１３９４インタフェース３６において、セッションキーＳと時変キーｉを用いて復号処理が行われる。
【０１２２】
これに対して、パーソナルコンピュータ２においては、ライセンスマネージャ６２が、セッションキーＳのうち、初期値キーSsをアプリケーション部６１に供給し、攪乱キーSiと時変キーｉ（正確には、時変キーｉを生成するためのキーｉ’）を１３９４インタフェース４９（リンク部分）に供給する。そして、１３９４インタフェース４９において、攪乱キーSiとキーｉ’から時変キーｉが生成され、時変キーｉを用いて復号が行われ、その復号されたデータは、アプリケーション部６１において、さらにセッションキーＳ（正確には、初期値キーSs）を用いて復号が行われる。
【０１２３】
このように、パーソナルコンピュータ２においては、内部バス５１が、ユーザに解放されているので、１３９４インタフェース４９により第１段階の復号だけを行い、まだ暗号の状態としておく。そして、アプリケーション部６１において、さらに第２段階の復号を行い、平文にする。これにより、パーソナルコンピュータ２に対して、適宜、機能を付加して、内部バス５１において授受されるデータ（平文）をハードディスク４７や他の装置にコピーすることを禁止させる。
【０１２４】
このように、この発明の実施の形態においては、内部バスが解放されていないCE装置においては、暗号化、または復号処理は、セッションキーＳと時変キーｉを用いて１度に行われるが、内部バスが解放されている装置（パーソナルコンピュータ２など）においては、復号処理が、時変キーｉを用いた復号処理と、セッションキーＳを用いた復号処理に分けて行われる。このように、１段階の復号処理と、２段階に分けた復号処理の両方ができるようにするには、次式を成立させることが必要となる。
Dec（Ｓ，Dec（ｉ， Enc（algo（Ｓ＋ｉ），Data）））＝Data
【０１２５】
なお、上記式において、algo（Ｓ＋ｉ）は、所定のアルゴリズムにセッションキーＳと時変キーｉを入力して得られた結果を表している。
【０１２６】
図１１は、上記式を満足する１３９４インタフェース２６の構成例を表している。この構成例においては、アディティブジェネレータ７１により生成したｍビットのデータが、シュリンクジェネレータ７３に供給されている。また、LFSR(Linear Feedback Sift Register)７２が１ビットのデータを出力し、シュリンクジェネレータ７３に供給している。シュリンクジェネレータ７３は、LFSR７２の出力に対応して、アディティブジェネレータ７１の出力を選択し、選択したデータを暗号鍵として加算器７４に出力している。加算器７４は、入力された平文（１３９４バス１１に伝送するｍビットのデータ）と、シュリンクジェネレータ７３より供給されるｍビットのデータ（暗号鍵）とを加算し、加算した結果を暗号文（暗号化されたデータ）として、１３９４バス１１に出力するようになされている。
【０１２７】
加算器７４の加算処理は、mod ２＾ｍ（＾はべき乗を意味する）で、シュリンクジェネレータ７３の出力と平文を加算することを意味する。換言すれば、ｍビットのデータ同志が加算され、キャリオーバを無視した加算値が出力される。
【０１２８】
図１２は、図１１に示した１３９４インタフェース２６のさらにより詳細な構成例を表している。ファームウェア２０から出力されたセッションキーＳのうち、初期値キーSsは、加算器８１を介してレジスタ８２に転送され、保持される。この初期値キーSsは、例えば、５５ワード（１ワードは８ビット乃至３２ビットの幅を有する）により構成される。また、ファームウェア２０から供給されたセッションキーＳのうちの、例えばLSB側の３２ビットで構成される攪乱キーSiは、レジスタ８５に保持される。
【０１２９】
レジスタ８４には、キーｉ’が保持される。このキーｉ’は、例えば１３９４バス１１を介して１個のパケットが伝送される毎に、２ビットのキーｉ’がレジスタ８４に供給され、１６パケット分の（３２ビット分の）キーｉ’がレジスタ８４に保持されたとき、加算器８６により、レジスタ８５に保持されている３２ビットの攪乱キーSiと加算され、最終的な時変キーｉとして加算器８１に供給される。加算器８１は、そのときレジスタ８２に保持されている値と加算器８６より供給された時変キーｉを加算し、その加算結果をレジスタ８２に供給し、保持させる。
【０１３０】
レジスタ８２のワードのビット数が、例えば８ビットである場合、加算器８６より出力される時変キーｉが３２ビットであるので、時変キーｉを４分割して、各８ビットをレジスタ８２の所定のアドレス（０乃至５４）のワードに加算するようにする。
【０１３１】
このようにして、レジスタ８２には、最初に初期値キーSsが保持されるが、その後、この値は、１６パケット分の暗号文を伝送する毎に、時変キーｉで更新される。
【０１３２】
加算器８３は、レジスタ８２に保持されている５５ワードのうちの所定の２ワード（図１２に示されているタイミングの場合、アドレス２３とアドレス５４のワード）を選択し、その選択した２ワードを加算して、シュリンクジェネレータ７３に出力する。また、この加算器７３の出力は、図１２に示すタイミングでは、レジスタ８２のアドレス０に転送され、前の保持値に代えて保持される。
【０１３３】
そして、次のタイミングにおいては、加算器８３に供給されるレジスタ８２の２ワードのアドレスは、アドレス５４とアドレス２３から、それぞれアドレス５３とアドレス２２に、１ワード分だけ、図中上方に移動され、加算器８３の出力で更新されるアドレスも、図中、より上方のアドレスに移動される。ただし、アドレス０より上方のアドレスは存在しないので、この場合には、アドレス５４に移動する。
【０１３４】
なお、加算器８１，８３，８６では、排他的論理和を演算させるようにすることも可能である。
【０１３５】
LFSR７２は、例えば、図１３に示すように、ｎビットのシフトレジスタ１０１と、シフトレジスタ１０１のｎビットのうちの所定のビット（レジスタ）の値を加算する加算器１０２により構成されている。シフトレジスタ１０１は、加算器１０２より供給されるビットを、図中最も左側のレジスタｂnに保持すると、それまでそこに保持されていたデータを右側のレジスタｂn-1にシフトする。レジスタｂn-1，ｂn-2，・・・も、同様の処理を行う。そして、さらに次のタイミングでは、各ビットの値を加算器１０２で加算した値を再び、図中最も左側のビットｂnに保持させる。以上の動作が順次繰り返されて、図中最も右側のレジスタｂ1から出力が１ビットずつ順次出力される。
【０１３６】
図１３は、一般的な構成例であるが、例えば、より具体的には、LFSR７２を図１４に示すように構成することができる。この構成例においては、シフトレジスタ１０１が３１ビットにより構成され、その図中右端のレジスタｂ1の値と左端のレジスタｂ31の値が、加算器１０２で加算され、加算された結果がレジスタｂ31に帰還されるようになされている。
【０１３７】
LFSR７２より出力された１ビットのデータが論理１であるとき、条件判定部９１は、アディティブジェネレータ７１の加算器８３より供給されたｍビットのデータをそのままＦＩＦＯ９２に転送し、保持させる。これに対して、LFSR７２より供給された１ビットのデータが論理０であるとき、条件判定部９１は、加算器８３より供給されたｍビットのデータを受け付けず、暗号化処理を中断させる。このようにして、シュリンクジェネレータ７３のＦＩＦＯ９２には、アディティブジェネレータ７１で生成したｍビットのデータのうち、LFSR７２が論理１を出力したタイミングのもののみが選択され、保持される。
【０１３８】
ＦＩＦＯ９２により保持したｍビットのデータが、暗号鍵として、加算器７４に供給され、伝送されるべき平文のデータ（DVDからの再生データ）に加算されて、暗号文が生成される。
【０１３９】
暗号化されたデータは、DVDプレーヤ１から１３９４バス１１を介して光磁気ディスク装置３とパーソナルコンピュータ２に供給される。
【０１４０】
光磁気ディスク装置３は、１３９４インタフェース３６において、１３９４バス１１から受信したデータを復号するために、図１５に示すような構成を有している。この構成例においては、シュリンクジェネレータ１７３にアディティブジェネレータ１７１の出力するｍビットのデータと、LFSR１７２が出力する１ビットのデータが供給されている。そして、シュリンクジェネレータ１７３の出力するｍビットの鍵が、減算器１７４に供給されている。減算器１７４は、暗号文からシュリンクジェネレータ１７３より供給される鍵を減算して、平文を復号する。
【０１４１】
すなわち、図１５に示す構成は、図１１に示す構成と基本的に同様の構成とされており、図１１における加算器７４が、減算器１７４に変更されている点だけが異なっている。
【０１４２】
図１６は、図１５に示す構成のより詳細な構成例を表している。この構成も、基本的に図１２に示した構成と同様の構成とされているが、図１２における加算器７４が、減算器１７４に変更されている。その他のアディティブジェネレータ１７１、LFSR１７２、シュリンクジェネレータ１７３、加算器１８１、レジスタ１８２、加算器１８３、レジスタ１８４，１８５、加算器１８６、条件判定部１９１、ＦＩＦＯ１９２は、図１２におけるアディティブジェネレータ７１、LFSR７２、シュリンクジェネレータ７３、加算器８１、レジスタ８２、加算器８３、レジスタ８４，８５、加算器８６、条件判定部９１、およびＦＩＦＯ９２に対応している。
【０１４３】
従って、その動作は、基本的に図１２に示した場合と同様であるので、その説明は省略するが、図１６の例においては、シュリンクジェネレータ１７３のＦＩＦＯ１９２より出力されたｍビットの鍵が、減算器１７４において、暗号文から減算されて平文が復号される。
【０１４４】
以上のように、１３９４インタフェース３６においては、セッションキーＳ（初期値キーSsと攪乱キーSi）と時変キーｉを用いて、暗号化データが１度に復号される。
【０１４５】
これに対して、上述したように、パーソナルコンピュータ２においては、１３９４インタフェース４９とアプリケーション部６１において、それぞれ個別に、２段階に分けて復号が行われる。
【０１４６】
図１７は、１３９４インタフェース４９において、ハード的に復号を行う場合の構成例を表しており、その基本的構成は、図１５に示した場合と同様である。すなわち、この場合においても、アディティブジェネレータ２７１、LFSR２７２、シュリンクジェネレータ２７３、および減算器２７４により１３９４インタフェース４９が構成されており、これらは、図１５におけるアディティブジェネレータ１７１、LFSR１７２、シュリンクジェネレータ１７３、および減算器１７４と基本的に同様の構成とされている。ただし、図１７の構成例においては、アディティブジェネレータ２７１に対して、ライセンスマネージャ６２から、時変キーｉを生成するためのキーｉ’と、セッションキーＳのうち、時変キーｉを攪乱するための攪乱キーSiとしては、図１５における場合と同様のキーが供給されるが、初期値キーSsとしては、全てのビットが０である単位元が供給される。
【０１４７】
すなわち、図１８に示すように、初期値キーSsの全てのビットが０とされるので、実質的に、初期値キーSsが存在しない場合と同様に、時変キーｉだけに基づいて暗号鍵が生成される。その結果、減算器２７４においては、暗号文の時変キーｉに基づく復号だけが行われる。まだ初期値キーSsに基づく復号が行われていないので、この復号の結果得られるデータは、完全な平文とはなっておらず、暗号文の状態になっている。従って、このデータを内部バス５１から取り込み、ハードディスク４７や、その他の記録媒体に記録したとしても、それをそのまま利用することができない。
【０１４８】
そして、以上のようにして、１３９４インタフェース４９において、ハード的に時変キーｉに基づいて復号されたデータをソフト的に復号するアプリケーション部６１の構成は、図１９に示すように、アディティブジェネレータ３７１、LFSR３７２、シュリンクジェネレータ３７３および減算器３７４により構成される。その基本的構成は、図１５に示したアディティブジェネレータ１７１、LFSR１７２、シュリンクジェネレータ１７３、および減算器１７４と同様の構成となっている。
【０１４９】
ただし、セッションキーＳのうち、初期値キーSsは、図１５における場合と同様に、通常の初期値キーが供給されるが、時変キーｉを生成するための攪乱キーSiとキーｉ’は、それぞれ全てのビットが０である単位元のデータとされる。
【０１５０】
その結果、図２０にその詳細を示すように（そのアディティブジェネレータ３７１乃至FIFO３９２は、図１６におけるアディティブジェネレータ１７１乃至FIFO１９２に対応している）、レジスタ３８４に保持されるキーｉ’とレジスタ３８５に保持される攪乱キーSiは、全てのビットが０であるため、加算器３８６の出力する時変キーｉも全てのビットが０となり、実質的に時変キーｉが存在しない場合と同様の動作が行われる。すなわち、初期値キーSsだけに基づく暗号鍵が生成される。そして、減算器３７４においては、このようにして生成された暗号鍵に基づいて暗号文が平文に復号される。上述したように、この暗号文は、１３９４インタフェース４９において、時変キーｉに基づいて第１段階の復号が行われているものであるので、ここで、初期値キーSsに基づいて第２段階の復号を行うことで、完全な平文を得ることができる。
【０１５１】
光磁気ディスク装置３においては、以上のようにして暗号文が復号されると、CPU３１が、復号されたデータをドライブ３５に供給し、光磁気ディスクに記録させる。
【０１５２】
一方、パーソナルコンピュータ２においては、CPU４１（アプリケーション部６１）が、以上のようにして復号されたデータを、例えばハードディスク４７に供給し、記録させる。パーソナルコンピュータ２においては、拡張ボード４８として所定のボードを接続して、内部バス５１で授受されるデータをモニタすることができるが、内部バス５１に伝送されるデータを最終的に復号することができるのは、アプリケーション部６１であるので、拡張ボード４８は、１３９４インタフェース４９で、時変キーｉに基づく復号が行われたデータ（まだ、セッションキーＳに基づく復号が行われていないデータ）をモニタすることができたとしても、完全に平文に戻されたデータをモニタすることはできない。そこで、不正なコピーが防止される。
【０１５３】
なお、セッションキーの共有は、例えば、Diffie-Hellman法などを用いて行うようにすることも可能である。
【０１５４】
なお、この他、例えばパーソナルコンピュータ２における１３９４インタフェース４９またはアプリケーション部６１の処理能力が比較的低く、復号処理を行うことができない場合には、セッションキーと時変キーのいずれか、あるいは両方をソース側において、単位元で構成するようにし、シンク側においても、これらを単位元で用いるようにすれば、実施的にセッションキーと時変キーを使用しないで、データの授受が可能となる。ただし、そのようにすれば、データが不正にコピーされるおそれが高くなる。
【０１５５】
アプリケーション部６１そのものが、不正にコピーしたものである場合、復号したデータが不正にコピーされてしまう恐れがあるが、上述したようにアプリケーション部６１をライセンスマネージャ６２で認証するようにすれば、これを防止することが可能である。
【０１５６】
この場合の認証方法としては、共通鍵暗号方式の他、公開鍵暗号方式を用いたデジタル署名を利用することができる。
【０１５７】
以上の図１１、図１２、図１５乃至図２０に示す構成は、準同形(homomorphism)の関係を満足するものとなっている。すなわち、キーＫ1，Ｋ2がガロアフィールドＧの要素であるとき、両者の群演算の結果、Ｋ1・Ｋ2もガロアフィールドＧの要素となる。そして、さらに、所定の関数Ｈについて次式が成立する。
Ｈ（Ｋ1・Ｋ2）＝Ｈ（Ｋ1）・Ｈ（Ｋ2）
【０１５８】
図２１は、さらに１３９４インタフェース２６の他の構成例を表している。この構成例においては、セッションキーＳがLFSR５０１乃至５０３に供給され、初期設定されるようになされている。LFSR５０１乃至５０３の幅ｎ1乃至ｎ3は、それぞれ２０ビット程度で、それぞれの幅ｎ1乃至ｎ3は、相互に素になるように構成される。従って、例えば、セッションキーＳのうち、例えば、上位ｎ１ビットがLFSR５０１に初期設定され、次の上位ｎ2ビットがLFSR５０２に初期設定され、さらに次の上位ｎ3ビットがLFSR５０３に初期設定される。
【０１５９】
LFSR５０１乃至５０３は、クロッキングファンクション５０６より、例えば論理１のイネーブル信号が入力されたとき、ｍビットだけシフト動作を行い、ｍビットのデータを出力する。ｍの値は、例えば、８，１６，３２，４０などとすることができる。
【０１６０】
LFSR５０１とLFSR５０２の出力は、加算器５０４に入力され、加算される。加算器５０４の加算値のうち、キャリー成分は、クロッキングファンクション５０６に供給され、sum成分は、加算器５０５に供給され、LFSR５０３の出力と加算される。加算器５０５のキャリー成分は、クロッキングファンクション５０６に供給され、sum成分は、排他的論理和回路５０８に供給される。
【０１６１】
クロッキングファンクション５０６は、加算器５０４と加算器５０５より供給されるデータの組み合わせが、００，０１，１０，１１のいずれかであるので、これらに対応して、LFSR５０１乃至５０３に対して、０００乃至１１１のいずれか１つの組み合わせのデータを出力する。LFSR５０１乃至５０３は、論理１が入力されたとき、ｍビットのシフト動作を行い、新たなｍビットのデータを出力し、論理０が入力されたとき、前回出力した場合と同一のｍビットのデータを出力する。
【０１６２】
排他的論理和回路５０８は、加算器５０５の出力するsum成分とレジスタ５０７に保持された時変キーｉの排他的論理和を演算し、その演算結果を排他的論理和回路５０９に出力する。排他的論理和回路５０９は、入力された平文と、排他的論理和回路５０８より入力された暗号鍵の排他的論理和を演算し、演算結果を暗号文として出力する。
【０１６３】
図２２は、光磁気ディスク装置３における１３９４インタフェース３６の構成例を表している。この構成例におけるLFSR６０１乃至排他的論理和回路６０９は、図２１におけるLFSR５０１乃至排他的論理和回路５０９と同様の構成とされている。従って、その動作も、基本的に同様となるので、その説明は省略する。ただし、図２１の構成例においては、暗号化処理が行われるのに対して、図２２の構成例においては、復号処理が行われる。
【０１６４】
図２３は、パーソナルコンピュータ２の１３９４インタフェース４９の構成例を表している。この構成例におけるLFSR７０１乃至排他的論理和回路７０９も、図２２における、LFSR６０１乃至排他的論理和回路６０９と同様の構成とされている。ただし、LFSR７０１乃至７０３に初期設定されるセッションキーＳは、全てのビットが０の単位元とされている。従って、この場合、実質的にレジスタ７０７に保持された時変キーｉだけに対応して復号化処理が行われる。
【０１６５】
図２４は、パーソナルコンピュータ２のアプリケーション部６１の構成例を表している。この構成例におけるLFSR８０１乃至排他的論理和回路８０９は、図２２における、LFSR６０１乃至排他的論理和回路６０９と基本的に同様の構成とされている。ただし、レジスタ８０７に入力される時変キーｉが、全てのビットが０である単位元とされている点のみが異なっている。従って、この構成例の場合、セッションキーＳだけに基づいて暗号鍵が生成され、復号処理が行われる。
【０１６６】
なお、図１９、図２０、および図２４に示す処理は、アプリケーション部６１において行われるので、ソフト的に処理されるものである。
【０１６７】
ところで、何らかの理由でlicense_keyが盗まれてしまったような場合には、適宜、これを変更（更新）するようにすることができる。勿論、このlicense_keyが実際に盗まれなくても、盗まれるおそれがある場合には、所定の周期で、これを更新するようにすることができる。この場合、例えば、DVD（ディスク）内に、そのとき有効とされるlicense_keyのバージョン（この実施の形態の場合、hash関数の適用回数）が記録される。また、対象となる操作が、DVDプレーヤではなく、例えば衛星を介して伝送されてくる情報を受信する受信装置である場合には、衛星から、そのバージョンの情報が受信装置に向けて伝送される。
【０１６８】
図２５と図２６は、DVDプレーヤにおいて、license_keyを更新する場合の処理例を表している。なお、この実施の形態の場合には、図４に示した情報が、DVDプレーヤ１のEEPROM２７とパーソナルコンピュータ２のEEPROM５０に記憶されている他、EEPROM５０にはhash関数も記憶されている。
【０１６９】
最初に、ステップＳ１５１において、ソースとしてのDVDプレーヤ１は、シンクとしてのパーソナルコンピュータ２に対して、ＩＤを要求する。パーソナルコンピュータ２は、ステップＳ１５２で、このＩＤ要求信号を受け取ると、ステップＳ１５３で、自分自身のＩＤをDVDプレーヤ１に送出する。DVDプレーヤ１は、ステップＳ１５４で、このＩＤを受信する。
【０１７０】
次に、DVDプレーヤ１は、ステップＳ１５５で、次式から鍵lkを演算する。
lk＝hash（ＩＤ  ||  service_key）
【０１７１】
以上の処理は、図４のステップＳ１乃至Ｓ５の処理と同様の処理である。
【０１７２】
次に、ステップＳ１５６に進み、DVDプレーヤ１は、ステップＳ１５５で演算した鍵lkが有効なバージョンのものであるか否かを判定する。すなわち、上述したように、DVDには、現在有効なlicense_key（＝lk）のバージョン（hash関数の適用回数）が記録されている。ステップＳ１５５で生成した鍵lkは、hash関数を１回適用して求めたものである。このhash関数の適用回数がバージョンで規定されている回数と等しくない場合、鍵lkは無効と判定される。この場合、ステップＳ１５７に進み、DVDプレーヤ１は、更新回数（演算回数）を示す変数ｇに１を初期設定し、lkgにlkを設定する。そして、ステップＳ１５８において、現在の鍵lkgにhash関数を１回適用し、新たな鍵lkg+1を演算する。すなわち、次式を演算する。
lkg+1＝hash（lkg）
【０１７３】
ステップＳ１５９では、ステップＳ１５８で求められた鍵lkg+1が有効であるか否かを判定する。すなわち、バージョンに規定された回数と同一の回数だけhash関数を適用したか否かを判定する。適用回数がバージョンに規定されている回数に達していないとき、ステップＳ１６０に進み、DVDプレーヤ１は、変数ｇを１だけインクリメントする。そして、ステップＳ１５８に戻り、再び現在の鍵lkgにhash関数を適用し、演算する。
【０１７４】
以上のようにして、バージョンに規定されている回数とhash関数を適用した回数が等しくなるまで、同様の処理が繰り返し実行される。
【０１７５】
なお、この繰り返し回数には、例えば１００回など上限値を設けるようにしてもよい。
【０１７６】
ステップＳ１５９で、バージョンに対応する回数だけhash関数が適用されたと判定された場合（有効な鍵lkg+1が得られたと判定された場合）、並びに、ステップＳ１５６で、鍵lkが有効であると判定された場合、ステップＳ１６１に進み、上述した場合と同様にして、暗号鍵skを生成する。ステップＳ１６２では、ステップＳ１５５またはステップＳ１５８で生成した鍵lkgを鍵として、暗号鍵skを暗号化する。すなわち、次式を演算する。
ｅ＝Enc（lkg，sk）
【０１７７】
次に、ステップＳ１６３において、DVDプレーヤ１は、パーソナルコンピュータ２に対して、ステップＳ１６２で暗号化したデータｅと、hash関数の適用回数を表す変数ｇを伝送する。パーソナルコンピュータ２においては、ステップＳ１６４でこれを受信すると、ステップＳ１６５で、パーソナルコンピュータ２におけるhash関数の適用回数を表す変数ｗに１を初期設定する。次に、ステップＳ１６６に進み、ステップＳ１６４で受信した変数ｇと、ステップＳ１６５で設定した変数ｗの値が等しいか否かを判定する。両者が等しくない場合、ステップＳ１６７に進み、パーソナルコンピュータ２のEEPROM５０に記憶されているlicense_keyにhash関数を適用して、新たなlicense_keyw+1を次式から求める。
license_keyw+1＝hash（license_keyw）
【０１７８】
次に、ステップＳ１６８に進み、wを１だけインクリメントして、ステップＳ１６６に戻る。ステップＳ１６６で再び変数ｇと変数ｗが等しいか否かを判定し、両者が等しいと判定されるまで、ステップＳ１６７，Ｓ１６８の処理が繰り返し実行される。
【０１７９】
ステップＳ１６６で、変数ｇが変数ｗと等しいと判定された場合（現在有効なlicense_keywが得られた場合）、ステップＳ１６９に進み、次式から暗号鍵sk'が演算される。
sk'＝Dec（license_keyw，ｅ）
【０１８０】
以上のように、license_key（＝lk）を適宜更新するようにすれば、より安全性を高めることができる。
【０１８１】
なお、図２５と図２６に示した処理例の場合、バージョンを表す変数ｇをソース側からシンク側に伝送するようにしたが、これを伝送しないで、license_keyを更新することも可能である。この場合、図２５の処理に続いて、図２７に示す処理が実行される。
【０１８２】
すなわち、この例の場合、ステップＳ１６３で、DVDプレーヤ１からパーソナルコンピュータ２に対して、暗号化データｅだけが伝送され、バージョンを表す変数ｇは伝送されない。ステップＳ１６４で、パーソナルコンピュータ２がこの暗号化データｅを受信すると、ステップＳ１６５で、この暗号化データｅをlicense_keyを用いて復号する処理が、次式で示すように実行される。
sk'＝Dec（license_key，ｅ）
【０１８３】
また、ステップＳ１６６で、DVDプレーヤ１は、ステップＳ１６１で生成した暗号鍵skを用いて、送出するデータを暗号化し、伝送する。パーソナルコンピュータ２は、ステップＳ１６７でこれを受信すると、ステップＳ１６８で、ステップＳ１６５で求めた暗号鍵sk'を用いて、復号する処理を実行する。次に、ステップＳ１６９で、復号した結果得られたデータが正しいか否かを判定する。この判定は、例えばMPEG方式のＴＳ(Transport Stream)パケットが受信されている場合には、そのヘッダ部分に、同期合わせのためのコード（１６進表示で４７）が挿入されているので、このコードが完全であるか否かをチェックすることで行うことができる。
【０１８４】
正しい復号ができなかった場合には、ステップＳ１７０に進み、パーソナルコンピュータ２は、次式に従って、license_keyを更新する。
license_key＝hash（license_key）
【０１８５】
次に、ステップＳ１７１に進み、ステップＳ１７０で求めたlicense_keyを鍵として、ステップＳ１６４で受信した暗号化データｅを、次式に従って復号する。
sk'＝Dec（license_key，ｅ）
【０１８６】
そして、ステップＳ１６８に戻り、ステップＳ１７１で求めた暗号鍵sk'を用いて、ステップＳ１６７で受信した暗号化されているデータを復号する。ステップＳ１６９では、正しい復号が行われたか否かを再び判定する。以上のようにして、ステップＳ１６９で正しい復号が行われたと判定されるまで、ステップＳ１７０，Ｓ１７１，Ｓ１６８の処理が繰り返し実行される。
【０１８７】
以上のようにしても、license_keyを更新することができる。
【０１８８】
また、ソース側における暗号鍵の生成処理とシンク側における復号鍵（暗号鍵）の生成処理は、それぞれ処理対象とするデータと同期を取る必要がある。
【０１８９】
例えば、図２１に示すソース側の１３９４インタフェース２６において、LFSR５０１乃至排他的論理和回路５０８で生成する暗号鍵と、これを用いて暗号化するデータとしての平文の位相関係が、図２２に示すシンク側の１３９４インタフェース３６において、LFSR６０１乃至排他的論理和回路６０８で生成される暗号鍵と、この暗号鍵を用いて復号される暗号文の位相関係と一致している必要がある。そこで、図示は省略しているが、図２１の１３９４インタフェース２６においては、入力される平文に同期して暗号鍵が生成されるようになされており、また、図２２の１３９４インタフェース３６においては、入力される暗号文に同期して、暗号鍵が生成されるようになされてる。
【０１９０】
従って、例えばソース側から１３９４バス１１を介してシンク側に送出された暗号文を構成するパケットや所定のビットが何らかの理由で欠落してしまったような場合、ソース側における平文と暗号鍵の位相に対応する位相を、シンク側の暗号文と暗号鍵において保持することができなくなる。そこで、両者の位相関係が所定のタイミングで確実に更新される（初期化される）ようにすることができる。図２８は、このような処理を行う場合の構成例を表している。
【０１９１】
すなわち、この構成例においては、排他的論理和回路９０１が、乱数発生器９０３が発生する乱数と、入力される平文の排他的論理和を演算し、排他的論理和回路９０４と演算回路９０２に出力するようになされている。演算回路９０２にはまた、セッションキーＳも入力されている。演算回路９０２は、セッションキーＳと排他的論理和回路９０１の出力Ciに対して、所定の演算を施して、その演算結果を乱数発生器９０３に出力するようになされている。
【０１９２】
排他的論理和回路９０４は、排他的論理和回路９０１より入力されたデータと、時変キーｉの排他的論理和を演算し、暗号文として１３９４バス１１に出力するようになされている。
【０１９３】
同様に、シンク側においては、排他的論理和回路９１１が１３９４バス１１を介して入力される暗号文と、時変キーｉの排他的論理和を演算し、排他的論理和回路９１２と演算回路９１３に出力している。演算回路９１３には、セッションキーＳも入力されている。演算回路９１３は、排他的論理和回路９１１からの入力Ciと、セッションキーＳに対して所定の演算を施して、その演算結果を乱数発生器９１４に出力している。乱数発生器９１４は、演算回路９１３から入力される値を初期値として乱数を発生し、発生した乱数を排他的論理和回路９１２に出力している。排他的論理和回路９１２は、排他的論理和回路９１１より供給される暗号文と、乱数発生器９１４より入力される乱数との排他的論理和を演算し、暗号文を復号して平文として出力するようになされている。
【０１９４】
乱数発生器９０３は、例えば図２９に示すように、LFSR９３１乃至クロッキングファンクション９３６により構成されている。これらは、図２１に示したLFSR５０１乃至クロッキングファンクション５０６と同様の構成とされている。
【０１９５】
なお、図示は省略するが、シンク側の乱数発生器９１４も、図２９に示した構成と同様に構成されている。
【０１９６】
また、ソース側の演算回路９０２とシンク側の演算回路９１３は、それぞれ図３０のフローチャートに示すような処理を実行するように構成されている。
【０１９７】
次に、その動作について説明する。
【０１９８】
ソース側の演算回路９０２は、排他的論理和回路９０１からの入力Ciに、所定の関数ｆを適用して、Viを演算する機能、すなわち、次式を演算する機能を有している。
Vi＝ｆ（Ｓ，Ci）
【０１９９】
ステップＳ２０１では、上記式におけるCiに０を初期設定して次式が演算される。
V0＝ｆ（Ｓ，０）
【０２００】
演算回路９０２は、ステップＳ２０１で演算した値を、ステップＳ２０２で乱数発生器９０３に出力する。乱数発生器９０３では、演算回路９０２の出力V0が、LFSR９３１乃至９３３に入力され、初期設定される。そして、図２１に示した場合と同様にして、乱数が生成され、加算器９３５から出力される。この乱数が排他的論理和回路９０１に供給される。
【０２０１】
排他的論理和回路９０１は、この乱数と入力された平文との排他的論理和を演算し、演算結果Ciを演算回路９０２に供給する。
【０２０２】
演算回路９０２においては、次に、ステップＳ２０３において、変数ｉに１が初期設定され、ステップＳ２０４において、排他的論理和回路９０１から入力されたデータがCiに設定される。
【０２０３】
次に、ステップＳ２０５に進み、演算回路９０２は、次式を演算する。
Vi＝ｆ（Ｓ，Ci）＋Vi-1
【０２０４】
いまの場合、ｉ＝１であるから、次式が演算される。
V1＝ｆ（Ｓ，C1）＋V0
【０２０５】
次に、ステップＳ２０６に進み、いま取り込まれたデータCiが予め設定してある所定の値Ｔと等しいか否かが判定される。両者の値が等しくない場合、ステップＳ２０７に進み、変数ｉが１だけインクリメントされた後、ステップＳ２０４に戻る。すなわち、いまの場合、ｉ＝２とされ、次に入力されたデータがC2に設定される。
【０２０６】
次に、ステップＳ２０５で次式が演算される。
V2＝ｆ（Ｓ，C2）＋V1
【０２０７】
ステップＳ２０６では、C2の値が所定の値Ｔと等しいか否かが判定され、等しくなければ、ステップＳ２０７に進み、変数ｉが１だけインクリメントされ、再びステップＳ２０４以降の処理が実行される。
【０２０８】
ステップＳ２０６において、Ciの値が所定の値Ｔと等しいと判定された場合、ステップＳ２０８に進み、ステップＳ２０５で演算された値Viが乱数発生器９０３に出力される。乱数発生器９０３では、ステップＳ２０２で説明した場合と同様に、この値がLFSR９３１乃至９３３に初期値として設定される。そして、この初期値に対応する乱数が加算器９３５から出力される。
【０２０９】
演算回路９０２は、Viを乱数発生器９０３に出力した後、ステップＳ２０３に戻り、変数ｉを１に初期設定した後、それ以降の処理を繰り返し実行する。
【０２１０】
いま、例えばＴの値が８ビットで表されるものとし、Ciの値は、その発生確率が均等であるとすると、２５６（＝２8）回に１回の割合で、Ciの値はＴと等しくなることになる。従って、乱数発生器９０３の発生する乱数は、２５６回に１回の割合で初期化（更新）されることになる。
【０２１１】
排他的論理和回路９０１より出力されたデータは、排他的論理和回路９０４に入力され、時変キーｉとの排他的論理和が演算された後、暗号文として１３９４バス１１に出力される。
【０２１２】
シンク側においては、排他的論理和回路９１１が、１３９４バス１１を介して入力された暗号文と、時変キーｉの排他的論理和を演算し、その演算結果Ciを、演算回路９１３に出力している。演算回路９１３は、上述したソース側の演算回路９０２と同様の処理を実行し、２５６回に１回の割合で、乱数発生器９１４に初期値Viを供給する。乱数発生器９１４は、入力された値Viを初期値として乱数を発生し、発生した乱数を排他的論理和回路９１２に出力する。排他的論理和回路９１２は、入力された乱数と、排他的論理和回路９１１より入力された暗号化されているデータとの排他的論理和を演算し、演算結果を平文として出力する。
【０２１３】
このように、演算回路９１３は、排他的論理和回路９１１が暗号データを２５６回出力すると１回の割合で初期値を発生する。従って、シンク側に１３９４バス１１を介して入力される暗号データに欠落が生じたとしても、シンク側の暗号文と乱数の位相関係は、暗号データ２５６個に１個の割合で初期化されるため、その時点で位相関係が回復することになる。
【０２１４】
なお、演算回路９０２または演算回路９１３が初期値を出力するのは、Ｔ＝Ciとなった場合であるから、２５６回に１回の割合で定期的に初期値が出力されるのではなく、平均すると確率的にそのようになるにすぎない。
【０２１５】
なお、送信または受信した暗号データの数をカウントして、同様の処理を実行させるようにすることも可能であるが、そのようにすると、１３９４バス１１上でデータが欠落すると、ソース側におけるデータのカウント値とシンク側におけるデータのカウント値とが異なる値となってしまい、結局、両者の同期を取ることができなくなってしまう。そこで、上記した実施の形態のようにするのが好ましい。
【０２１６】
また、乱数発生器９０３または乱数発生器９１４に供給する初期値としては、排他的論理和回路９０１または９１１の出力するデータCiをそのまま利用することも可能である。しかしながら、このデータCiは、１３９４バス１１上を伝送されるデータであり、盗まれるおそれがある。そこで、データCiを初期値として直接利用せず、これに対して所定の演算を施すことによって生成された値Viを初期値とするようにすれば、より安全性を高めることができる。
【０２１７】
図４の処理例においては、キーlkを固定するようにしているが、毎回、変更することも可能である。図３１は、この場合の処理例を表している。
【０２１８】
ステップＳ２１１において、DVDプレーヤ１のファームウェア２０は、１３９４インタフェース２６を制御し、１３９４バス１１を介してパーソナルコンピュータ２に対してIDを要求する。パーソナルコンピュータ２のライセンスマネージャ６２は、ステップＳ２１２において、このIDの要求を受信する。すなわち、１３９４インタフェース４９は、１３９４バス１１を介してDVDプレーヤ１から伝送されてきたID要求の信号を受信すると、これをCPU４１に出力する。CPU４１のライセンスマネージャ６２は、このID要求を受けたとき、ステップＳ２１３においてEEPROM５０に記憶されているIDを読み出し、これを１３９４インタフェース４９を介して１３９４バス１１からDVDプレーヤ１に伝送する。
【０２１９】
DVDプレーヤ１においては、ステップＳ２１４で１３９４インタフェース２６が、このIDを受け取ると、このIDがCPU２１で動作しているファームウェア２０に供給される。
【０２２０】
ファームウェア２０は、ステップＳ２１５において、パーソナルコンピュータ２から伝送を受けたIDと、EEPROM２７に記憶されているservice_keyを結合して、データ（ID || service_key）を生成し、このデータに対して、次式に示すようにhash関数を適用して、キーlkを生成する。
lk＝hash（ID || service_key）
【０２２１】
ファームウェア２０は、ステップＳ２１６において、乱数ｒを生成し、ステップＳ２１７において、キーlkと乱数ｒを結合したデータに対して、hash関数を適用し、キーlk'を生成する（キーlkをキーlk'に変更する）。
lk'＝hash（lk || ｒ）
【０２２２】
次に、ステップＳ２１８において、ファームウェア２０は、暗号鍵skを生成する。次に、ステップＳ２１９において、ファームウェア２０は、ステップＳ２１７で生成した鍵lk'を鍵として、ステップＳ２１８で生成した暗号鍵skを暗号化して、暗号化データ（暗号化鍵）ｅを得る。すなわち、次式を演算する。
ｅ＝Enc（lk'， sk）
【０２２３】
次に、ステップＳ２２０で、ファームウェア２０は、ステップＳ２１９で生成した暗号化データｅと、ステップＳ２１６で生成した乱数ｒを、パーソナルコンピュータ２に伝送する。すなわち、この暗号化データｅと乱数ｒは、DVDプレーヤ１の１３９４インタフェース２６から１３９４バス１１を介してパーソナルコンピュータ２に伝送される。パーソナルコンピュータ２においては、ステップＳ２２１で、この暗号化データｅと乱数ｒを１３９４インタフェース４９を介して受信する。ライセンスマネージャ６２は、EEPROM５０に記憶されているlicense_keyと、このようにして受信した乱数ｒを結合したデータに対して、hash関数を適用し、キーlk"を生成する。
lk"＝hash（licence_key || ｒ）
【０２２４】
さらにライセンスマネージャ６２は、ステップＳ２２３において、ステップＳ２２２で生成した鍵lk"を鍵として、受信した暗号化データｅを次式に示すように復号して、暗号鍵sk'を生成する。
sk'＝Dec（lk'，ｅ）
【０２２５】
DVDプレーヤ１において、ステップＳ２１７で生成されるキーlk'は、パーソナルコンピュータ２においてステップＳ２２２で生成されるキーlk"と同一の値となる。すなわち、次式が成立する。
lk'＝lk"
【０２２６】
従って、パーソナルコンピュータ２において、ステップＳ２２３で復号して得たキーsk'は、DVDプレーヤ１において、ステップＳ２１８で生成した暗号鍵skと同一の値となる。すなわち、次式が成立する。
sk'＝sk
【０２２７】
このように、暗号鍵skを暗号化して送信する際に、暗号鍵skを暗号化する暗号鍵lk'を毎回変化させるようにすると、それだけ暗号鍵lk'，skを解読される恐れが少なくなる。
【０２２８】
以上においては、DVDプレーヤ１をソースとし、パーソナルコンピュータ２と光磁気ディスク装置３をシンクとしたが、いずれの装置をソースとするかシンクとするかは任意である。
【０２２９】
また、各電子機器を接続する外部バスも、１３９４バスに限らず、種々のバスを利用することができ、それに接続する電子機器も、上述した例に限らず、任意の装置とすることができる。
【０２３０】
なお、上記各種の指令を実行するプログラムは、磁気ディスク、CD-ROMディスクなどの提供媒体を介してユーザに提供したり、ネットワークなどの提供媒体を介してユーザに提供し、必要に応じて内蔵するRAMやハードディスクなどに記憶して利用させるようにすることができる。
【０２３４】
【発明の効果】
以上の如く、請求項１に記載の情報処理装置、請求項３に記載の情報処理方法、および請求項４に記載の記録媒体によれば、第２のキーLK'を、第１のキーLKと、関数Ｇの逆関数Ｇ^-1に基づいて生成するようにしたので、より安全性を高めることができる。
【図面の簡単な説明】
【図１】本発明を適用した情報処理システムの構成例を示すブロック図である。
【図２】図１のDVDプレーヤ１、パーソナルコンピュータ２、および光磁気ディスク装置３の内部の構成例を示すブロック図である。
【図３】認証処理を説明する図である。
【図４】認証処理を説明するタイミングチャートである。
【図５】  node_unique_IDのフォーマットを示す図である。
【図６】他の認証処理を説明するタイミングチャートである。
【図７】さらに他の認証処理を説明するタイミングチャートである。
【図８】他の認証処理を説明するタイミングチャートである。
【図９】他の認証処理を説明するタイミングチャートである。
【図１０】暗号化処理を説明するブロック図である。
【図１１】図１０の１３９４インタフェース２６の構成例を示すブロック図である。
【図１２】図１１の１３９４インタフェース２６のより詳細な構成例を示すブロック図である。
【図１３】図１２のLFSR７２のより詳細な構成例を示すブロック図である。
【図１４】図１３のLFSR７２のより具体的な構成例を示すブロック図である。
【図１５】図１０の１３９４インタフェース３６の構成例を示すブロック図である。
【図１６】図１５の１３９４インタフェース３６のより詳細な構成例を示すブロック図である。
【図１７】図１０の１３９４インタフェース４９の構成例を示すブロック図である。
【図１８】図１７の１３９４インタフェース４９のより詳細な構成例を示すブロック図である。
【図１９】図１０のアプリケーション部６１の構成例を示すブロック図である。
【図２０】図１９のアプリケーション部６１のより詳細な構成例を示すブロック図である。
【図２１】図１０の１３９４インタフェース２６の他の構成例を示すブロック図である。
【図２２】図１０の１３９４インタフェース３６の他の構成例を示すブロック図である。
【図２３】図１０の１３９４インタフェース４９の他の構成例を示すブロック図である。
【図２４】図１０のアプリケーション部６１の他の構成例を示すブロック図である。
【図２５】他の認証処理を説明するタイミングチャートである。
【図２６】図２５に続くタイミングチャートである。
【図２７】図２５に続く他のタイミングチャートである。
【図２８】本発明の情報処理システムの他の構成例を示すブロック図である。
【図２９】図２８の乱数発生器９０３の構成例を示すブロック図である。
【図３０】図２８の演算回路９０２の処理を説明するフローチャートである。
【図３１】他の認証処理を説明するタイミングチャートである。
【図３２】従来の認証方法を説明するタイミングチャートである。
【符号の説明】
１  DVDプレーヤ，  ２  パーソナルコンピュータ，  ３  光磁気ディスク装置，  １１  １３９４バス，  ２０  ファームウェア，  ２１  CPU，  ２５  ドライブ，  ２６  １３９４インタフェース，  ２７  EEPROM，  ３１  CPU，３５  ドライブ，  ３６  １３９４インタフェース，  ３７  EEPROM，  ４１  CPU，  ４７  ハードディスク，  ４８  拡張ボード，  ４９  １３９４インタフェース，  ５０  EEPROM，  ５１  内部バス，  ６１  アプリケーション部，  ６２  ライセンスマネージャ
【図１】
0003988172.tif 000002
【図２】
0003988172.tif 000003
【図３】
0003988172.tif 000004
【図４】
0003988172.tif 000005
【図５】
0003988172.tif 000006
【図６】
0003988172.tif 000007
【図７】
0003988172.tif 000008
【図８】
0003988172.tif 000009
【図９】
0003988172.tif 000010
【図１０】
0003988172.tif 000011
【図１１】
0003988172.tif 000012
【図１２】
0003988172.tif 000013
【図１３】
0003988172.tif 000014
【図１４】
0003988172.tif 000015
【図１５】
0003988172.tif 000016
【図１６】
0003988172.tif 000017
【図１７】
0003988172.tif 000018
【図１８】
0003988172.tif 000019
【図１９】
0003988172.tif 000020
【図２０】
0003988172.tif 000021
【図２１】
0003988172.tif 000022
【図２２】
0003988172.tif 000023
【図２３】
0003988172.tif 000024
【図２４】
0003988172.tif 000025
【図２５】
0003988172.tif 000026
【図２６】
0003988172.tif 000027
【図２７】
0003988172.tif 000028
【図２８】
0003988172.tif 000029
【図２９】
0003988172.tif 000030
【図３０】
0003988172.tif 000031
【図３１】
0003988172.tif 000032
【図３２】
0003988172.tif 000033