図1は、本発明を適用した情報処理システムの構成例を表している。この構成例においては、IEEE1394シリアルバス11を介してDVDプレーヤ1、パーソナルコンピュータ2、光磁気ディスク装置3、データ放送受信装置4、モニタ5、テレビジョン受像機6が相互に接続されている。
図2は、この内のDVDプレーヤ1、パーソナルコンピュータ2、および光磁気ディスク装置3の内部のより詳細な構成例を表している。DVDプレーヤ1は、1394インタフェース26を介して、1394バス11に接続されている。CPU21は、ROM22に記憶されているプログラムに従って各種の処理を実行し、RAM23は、CPU21が各種の処理を実行する上において必要なデータやプログラムなどを適宜記憶する。操作部24は、ボタン、スイッチ、リモートコントローラなどにより構成され、ユーザにより操作されたとき、その操作に対応する信号を出力する。ドライブ25は、図示せぬDVD(ディスク)を駆動し、そこに記録されているデータを再生するようになされている。EEPROM27は、装置の電源オフ後も記憶する必要のある情報(この実施の形態の場合、鍵情報)を記憶するようになされている。内部バス28は、これらの各部を相互に接続している。
光磁気ディスク装置3は、CPU31乃至内部バス38を有している。これらは、上述したDVDプレーヤ1におけるCPU21乃至内部バス28と同様の機能を有するものであり、その説明は省略する。ただし、ドライブ35は、図示せぬ光磁気ディスクを駆動し、そこにデータを記録または再生するようになされている。
パーソナルコンピュータ2は、1394インタフェース49を介して1394バス11に接続されている。CPU41は、ROM42に記憶されているプログラムに従って各種の処理を実行する。RAM43には、CPU41が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース44には、キーボード45とマウス46が接続されており、それらから入力された信号をCPU41に出力するようになされている。また、入出力インタフェース44には、ハードディスク(HDD)47が接続されており、そこにデータ、プログラムなどを記録再生することができるようになされている。入出力インタフェース44にはまた、拡張ボード48を適宜装着し、必要な機能を付加することができるようになされている。EEPROM50には、電源オフ後も保持する必要のある情報(この実施の形態の場合、各種の鍵情報)が記憶されるようになされている。例えば、PCI(Peripheral Component Interconnect)、ローカルバスなどにより構成される内部バス51は、これらの各部を相互に接続するようになされている。
なお、この内部バス51は、ユーザに対して解放されており、ユーザは、拡張ボード48に所定のボードを適宜接続したり、所定のソフトウェアプログラムを作成して、CPU41にインストールすることで、内部バス51により伝送されるデータを適宜受信することができるようになされている。
これに対して、DVDプレーヤ1や光磁気ディスク装置3などのコンシューマエレクトロニクス(CE)装置においては、内部バス28や内部バス38は、ユーザに解放されておらず、特殊な改造などを行わない限り、そこに伝送されるデータを取得することができないようになされている。
次に、所定のソースとシンクとの間で行われる認証の処理について説明する。この認証の処理は、図3に示すように、ソースとしての、例えばDVDプレーヤ1のROM22に予め記憶されているソフトウェアプログラムの1つとしてのファームウェア20と、シンクとしての、例えばパーソナルコンピュータ2のROM42に記憶されており、CPU41が処理するソフトウェアプログラムの1つとしてのライセンスマネージャ62との間において行われる。
図4は、ソース(DVDプレーヤ1)と、シンク(パーソナルコンピュータ2)との間において行われる認証の手順を示している。DVDプレーヤ1のEEPROM27には、サービスキー(service_key)と関数(hash)が予め記憶されている。これらはいずれも著作権者から、このDVDプレーヤ1のユーザに与えられたものであり、各ユーザは、EEPROM27に、これを秘密裡に保管しておくものである。
サービスキーは、著作権者が提供する情報毎に与えられるものであり、この1394バス11で構成されるシステムにおいて、共通のものである。なお、本明細書において、システムとは、複数の装置で構成される全体的な装置を示すものとする。
hash関数は、任意長の入力に対して、64ビットまたは128ビットなどの固定長のデータを出力する関数であり、y(=hash(x))を与えられたとき、xを求めることが困難であり、かつ、hash(x1)=hash(x2)となるx1と、x2の組を求めることも困難となる関数である。1方向hash関数の代表的なものとして、MD5やSHAなどが知られている。この1方向hash関数については、Bruce Schneier著の「Applied Cryptography(Second Edition),Wiley」に詳しく解説されている。
一方、シンクとしての例えばパーソナルコンピュータ2は、著作権者から与えられた、自分自身に固有の識別番号(ID)とライセンスキー(license_key)をEEPROM50に秘密裡に保持している。このライセンスキーは、nビットのIDとmビットのサービスキーを連結して得たn+mビットのデータ(ID || service_key)に対して、hash関数を適用して得られる値である。すなわち、ライセンスキーは次式で表される。
license_key=hash(ID || service_key)
IDとしては、例えば1394バス11の規格に定められているnode_unique_IDを用いることができる。このnode_unique_IDは、図5に示すように、8バイト(64ビット)で構成され、最初の3バイトは、IEEEで管理され、電子機器の各メーカーにIEEEから付与される。また、下位5バイトは、各メーカーが、自分自身がユーザに提供する各装置に対して付与することができるものである。各メーカーは、例えば下位5バイトに対してシリアルに、1台に1個の番号を割り当てるようにし、5バイト分を全部使用した場合には、上位3バイトがさらに別の番号となっているnode_unique_IDの付与を受け、そして、その下位5バイトについて1台に1個の番号を割り当てるようにする。従って、このnode_unique_IDは、メーカーに拘らず、1台毎に異なるものとなり、各装置に固有のものとなる。
ステップS1において、DVDプレーヤ1のファームウェア20は、1394インタフェース26を制御し、1394バス11を介してパーソナルコンピュータ2に対してIDを要求する。パーソナルコンピュータ2のライセンスマネージャ62は、ステップS2において、このIDの要求を受信する。すなわち、1394インタフェース49は、1394バス11を介してDVDプレーヤ1から伝送されてきたID要求の信号を受信すると、これをCPU41に出力する。CPU41のライセンスマネージャ62は、このID要求を受けたとき、ステップS3においてEEPROM50に記憶されているIDを読み出し、これを1394インタフェース49を介して1394バス11からDVDプレーヤ1に伝送する。
DVDプレーヤ1においては、ステップS4で1394インタフェース26が、このIDを受け取ると、このIDがCPU21で動作しているファームウェア20に供給される。
ファームウェア20は、ステップS5において、パーソナルコンピュータ2から伝送を受けたIDと、EEPROM27に記憶されているサービスキーを結合して、データ(ID || service_key)を生成し、このデータに対して、次式に示すようにhash関数を適用して、キーlkを生成する。
lk=hash(ID || service_key)
次に、ステップS6において、ファームウェア20は、暗号鍵skを生成する。この暗号鍵skの詳細については後述するが、この暗号鍵skは、セッションキーとしてDVDプレーヤ1とパーソナルコンピュータ2のそれぞれにおいて利用される。
次に、ステップS7において、ファームウェア20は、ステップS5で生成した鍵lkを鍵として、ステップS6で生成した暗号鍵skを暗号化して、暗号化データ(暗号化鍵)eを得る。すなわち、次式を演算する。 e=Enc(lk, sk)
なお、Enc(A,B)は、共通鍵暗号方式で、鍵Aを用いて、データBを暗号化することを意味する。
次に、ステップS8で、ファームウェア20は、ステップS7で生成した暗号化データeをパーソナルコンピュータ2に伝送する。すなわち、この暗号化データeは、DVDプレーヤ1の1394インタフェース26から1394バス11を介してパーソナルコンピュータ2に伝送される。パーソナルコンピュータ2においては、ステップS9で、この暗号化データeを1394インタフェース49を介して受信する。ライセンスマネージャ62は、このようにして受信した暗号化データeをEEPROM50に記憶されているライセンスキーを鍵として、次式に示すように復号し、復号鍵sk'を生成する。 sk'=Dec(license_key,e)
なお、ここで、Dec(A,B)は、共通鍵暗号方式で鍵Aを用いて、データBを復号することを意味する。
なお、この共通鍵暗号方式における暗号化のアルゴリズムとしては、DESが知られている。共通鍵暗号化方式についても、上述した、Applied Cryptography(Second Edition)に詳しく解説されている。
DVDプレーヤ1において、ステップS5で生成するキーlkは、パーソナルコンピュータ2のEEPROM50に記憶されている(license_key)と同一の値となる。すなわち、次式が成立する。 lk=license_key
従って、パーソナルコンピュータ2において、ステップS10で復号して得たキーsk'は、DVDプレーヤ1において、ステップS6で生成した暗号鍵skと同一の値となる。すなわち、次式が成立する。 sk'=sk
このように、DVDプレーヤ1(ソース)とパーソナルコンピュータ2(シンク)の両方において、同一の鍵sk,sk'を共有することができる。そこで、この鍵skをそのまま暗号鍵として用いるか、あるいは、これを基にして、それぞれが疑似乱数を作り出し、それを暗号鍵として用いることができる。
ライセンスキーは、上述したように、各装置に固有のIDと、提供する情報に対応するサービスキーに基づいて生成されているので、他の装置がskまたはsk'を生成することはできない。また、著作権者から認められていない装置は、ライセンスキーを有していないので、skあるいはsk'を生成することができない。従って、その後DVDプレーヤ1が暗号鍵skを用いて再生データを暗号化してパーソナルコンピュータ2に伝送した場合、パーソナルコンピュータ2が適正にライセンスキーを得たものである場合には、暗号鍵sk'を有しているので、DVDプレーヤ1より伝送されてきた、暗号化されている再生データを復号することができる。しかしながら、パーソナルコンピュータ2が適正なものでない場合、暗号鍵sk'を有していないので、伝送されてきた暗号化されている再生データを復号することができない。換言すれば、適正な装置だけが共通の暗号鍵sk,sk'を生成することができるので、結果的に、認証が行われることになる。
仮に1台のパーソナルコンピュータ2のライセンスキーが盗まれたとしても、IDが1台1台異なるので、そのライセンスキーを用いて、他の装置がDVDプレーヤ1から伝送されてきた暗号化されているデータを復号することはできない。従って、安全性が向上する。
図6は、ソース(DVDプレーヤ1)に対して、パーソナルコンピュータ2だけでなく、光磁気ディスク装置3もシンクとして機能する場合の処理例を表している。
この場合、シンク1としてのパーソナルコンピュータ2のEEPROM50には、IDとしてID1が、また、ライセンスキーとしてlicense_key1が記憶されており、シンク2としての光磁気ディスク装置3においては、EEPROM37に、IDとしてID2が、また、ライセンスキーとしてlicense_key2が記憶されている。
DVDプレーヤ1(ソース)とパーソナルコンピュータ2(シンク1)の間において行われるステップS11乃至ステップS20の処理は、図4におけるステップS1乃至ステップS10の処理と実質的に同様の処理であるので、その説明は省略する。
すなわち、上述したようにして、DVDプレーヤ1は、パーソナルコンピュータ2に対して認証処理を行う。そして次に、ステップS21において、DVDプレーヤ1は、光磁気ディスク装置3に対して、IDを要求する。光磁気ディスク装置3においては、ステップS22で1394インタフェース36を介して、このID要求信号が受信されると、そのファームウェア30(図10)は、ステップS23でEEPROM37に記憶されているID(ID2)を読み出し、これを1394インタフェース36から、1394バス11を介してDVDプレーヤ1に伝送する。DVDプレーヤ1のファームウェア20は、ステップS24で、1394インタフェース26を介して、このID2を受け取ると、ステップS25で、次式から鍵lk2を生成する。
lk2=hash(ID2 || service_key)
さらに、ファームウェア20は、ステップS26で次式を演算し、ステップS16で生成した鍵skを、ステップS25で生成した鍵lk2を用いて暗号化し、暗号化したデータe2を生成する。
そして、ステップS27で、ファームウェア20は、この暗号化データe2を1394インタフェース26から1394バス11を介して光磁気ディスク装置3に伝送する。
光磁気ディスク装置3においては、ステップS28で1394インタフェース36を介して、この暗号化データe2を受信し、ステップS29で次式を演算して、暗号鍵sk2’を生成する。
sk2’=Dec(license_key2,e2)
以上のようにして、パーソナルコンピュータ2と光磁気ディスク装置3のそれぞれにおいて、暗号鍵sk1’,sk2’が得られたことになる。これらの値は、DVDプレーヤ1における暗号鍵skと同一の値となっている。
図6の処理例においては、DVDプレーヤ1が、パーソナルコンピュータ2と、光磁気ディスク装置3に対して、それぞれ個別にIDを要求し、処理するようにしているのであるが、同報通信によりIDを要求することができる場合は、図7に示すような処理を行うことができる。
すなわち、図7の処理例においては、ステップS41で、ソースとしてのDVDプレーヤ1が、全てのシンク(この例の場合、パーソナルコンピュータ2と光磁気ディスク装置3)に対して同報通信でIDを要求する。パーソナルコンピュータ2と光磁気ディスク装置3は、それぞれステップS42とステップS43で、このID転送要求の信号を受け取ると、それぞれステップS44またはステップS45で、EEPROM50またはEEPROM37に記憶されているID1またはID2を読み出し、これをDVDプレーヤ1に転送する。DVDプレーヤ1は、ステップS46とステップS47で、これらのIDをそれぞれ受信する。
DVDプレーヤ1においては、さらにステップS48で、次式から暗号鍵lk1を生成する。
lk1=hash(ID1 || service_key)
さらに、ステップS49において、次式から暗号鍵lk2が生成される。
lk2=hash(ID2 || service_key)
DVDプレーヤ1においては、さらにステップS50で、暗号鍵skが生成され、ステップS51で、次式で示すように、暗号鍵skが、鍵lk1を鍵として暗号化される。
e1=Enc(lk1,sk)
さらに、ステップS52においては、暗号鍵skが、鍵lk2を鍵として、次式に従って暗号化される。
e2=Enc(lk2,sk)
さらに、ステップS53においては、ID1,e1,ID2,e2が、それぞれ次式で示すように結合されて、暗号化データeが生成される。
e=ID1 || e1 || ID2 || e2
DVDプレーヤ1においては、さらにステップS54で、以上のようにして生成された暗号化データeが同報通信で、パーソナルコンピュータ2と光磁気ディスク装置3に伝送される。
パーソナルコンピュータ2と光磁気ディスク装置3においては、それぞれステップS55またはステップS56で、これらの暗号化データeが受信される。そして、パーソナルコンピュータ2と光磁気ディスク装置3においては、それぞれステップS57またはステップS58において、次式で示す演算が行われ、暗号鍵sk1’,sk2’が生成される。
sk1’=Dec(license_key1,e1) sk2’=Dec(license_key2,e2)
図8は、1つのシンクが複数のサービスを受けること(複数の種類の情報の復号)ができるようになされている場合の処理例を表している。すなわち、この場合においては、例えば、シンクとしてのパーソナルコンピュータ2は、複数のライセンスキー(license_key1,license_key2,license_key3など)をEEPROM50に記憶している。ソースとしてのDVDプレーヤ1は、そのEEPROM27に複数のサービスキー(service_key1,service_key2,service_key3など)を記憶している。この場合、DVDプレーヤ1は、ステップS81でシンクとしてのパーソナルコンピュータ2に対してIDを要求するとき、DVDプレーヤ1が、これから転送しようとする情報(サービス)を識別するservice_IDを転送する。パーソナルコンピュータ2においては、ステップS82で、これを受信したとき、EEPROM50に記憶されている複数のライセンスキーの中から、このservice_IDに対応するものを選択し、これを用いて、ステップS90で復号処理を行う。その他の動作は、図4における場合と同様である。
図9は、さらに他の処理例を表している。この例においては、ソースとしてのDVDプレーヤ1が、そのEEPROM27に、service_key、hash関数、および疑似乱数発生関数pRNGを記憶している。これらは、著作権者から与えられたものであり、秘密裡に保管される。また、シンクとしてのパーソナルコンピュータ2のEEPROM50には、著作権者から与えられたID、LK,LK'、関数G、および疑似乱数数発生関数pRNGを有している。
LKは、著作権者が作成したユニークな乱数であり、LK'は、次式を満足するように生成されている。
LK'=G^−1(R) R=pRNG(H) (+) pRNG(LK) H=hash(ID || service_key)
なお、G^−1は、Gの逆関数を意味する。G^−1は、所定の規則を知っていれば、簡単に計算することができるが、知らない場合には、計算することが難しいような特徴を有している。このような関数としては、公開鍵暗号に用いられている関数を利用することができる。
また、疑似乱数発生関数は、ハードウェアとして設けるようにすることも可能である。
DVDプレーヤ1のファームウェア20は、最初にステップS101において、パーソナルコンピュータ2のライセンスマネージャ62に対してIDを要求する。パーソナルコンピュータ2のライセンスマネージャ62は、ステップS102でID要求信号を受け取ると、EEPROM50に記憶されているIDを読み出し、ステップS103で、これをDVDプレーヤ1に伝送する。DVDプレーヤ1のファームウェア20は、ステップS104でこのIDを受け取ると、ステップS105で次式を演算する。
H=hash(ID || service_key)
さらに、ファームウェア20は、ステップS106で鍵skを生成し、ステップS107で次式を演算する。
e=sk (+) pRNG(H)
なお、A(+)Bは、AとBの排他的論理和の演算を意味する。
すなわち、疑似ランダム発生キーpRNGにステップS105で求めたHを入力することで得られた結果、pRNG(H)と、ステップS106で生成した鍵skのビット毎の排他的論理和を演算することで、鍵SKを暗号化する。
次に、ステップS108で、ファームウェア20は、eをパーソナルコンピュータ2に伝送する。
パーソナルコンピュータ2においては、ステップS109でこれを受信し、ステップS110で、次式を演算する。
sk'=e (+) G(LK') (+) pRNG(LK)
すなわち、DVDプレーヤ1から伝送されてきたe、EEPROM50に記憶されている関数Gに、やはりEEPROM50に記憶されているLK'を適用して得られる値G(LK')、並びに、EEPROM50に記憶されているLK'を、やはりEEPROM50に記憶されている疑似乱数発生関数pRNGに適用して得られる結果pRNG(LK)の排他的論理和を演算し、鍵sk'を得る。
ここで、次式に示すように、sk=sk'となる。
sk'=e (+) G(LK') (+) pRNG(LK)
=sk (+) pRNG(H) (+) R (+) pRNG(LK)
=sk (+) pRNG(H) (+) pRNG(H) (+) pRNG(LK) (+) pRNG(LK)
=sk
このようにして、ソースとしてのDVDプレーヤ1とシンクとしてのパーソナルコンピュータ2は、同一の鍵sk,sk'を共有することができる。LK,LK'を作ることができるのは、著作権者だけであるので、ソースが不正に、LK,LK'を作ろうとしても作ることができないので、より安全性を高めることができる。
以上においては、ソースとシンクにおいて認証を行うようにしたが、例えばパーソナルコンピュータ2には、通常、任意のアプリケーションプログラムをロードして用いることができる。そして、このアプリケーションプログラムとしては、不正に作成したものが使用される場合もある。従って、各アプリケーションプログラム毎に、著作権者から許可を得たものであるか否かを判定する必要がある。そこで、図3に示すように、各アプリケーション部61とライセンスマネージャ62との間においても、上述したように、認証処理を行うようにすることができる。この場合、ライセンスマネージャ62がソースとなり、アプリケーション部61がシンクとなる。
次に、以上のようにして、認証が行われた後(暗号鍵の共有が行われた後)、暗号鍵を用いて、ソースから暗号化したデータをシンクに転送し、シンクにおいて、この暗号化したデータを復号する場合の動作について説明する。
図10に示すように、DVDプレーヤ1、あるいは光磁気ディスク装置3のように、内部の機能が一般ユーザに解放されていない装置においては、1394バス11を介して授受されるデータの暗号化と復号の処理は、それぞれ1394インタフェース26または1394インタフェース36で行われる。この暗号化と復号化には、セッションキーSと時変キーiが用いられるが、このセッションキーSと時変キーi(正確には、時変キーiを生成するためのキーi’)は、それぞれファームウェア20またはファームウェア30から、1394インタフェース26または1394インタフェース36に供給される。セッションキーSは、初期値として用いられる初期値キーSsと時変キーiを攪乱するために用いられる攪乱キーSiとにより構成されている。この初期値キーSsと攪乱キーSiは、上述した認証において生成された暗号鍵sk(=sk')の所定のビット数の上位ビットと下位ビットにより、それぞれ構成するようにすることができる。このセッションキーSは、セッション毎に(例えば、1つの映画情報毎に、あるいは、1回の再生毎に)、適宜、更新される。これに対して、攪乱キーSiとキーi’から生成される時変キーiは、1つのセッション内において、頻繁に更新されるキーであり、例えば、所定のタイミングにおける時刻情報などを用いることができる。
いま、ソースとしてのDVDプレーヤ1から再生出力した映像データを1394バス11を介して光磁気ディスク装置3とパーソナルコンピュータ2に伝送し、それぞれにおいて復号するものとする。この場合、DVDプレーヤ1においては、1394インタフェース26において、セッションキーSと時変キーiを用いて暗号化処理が行われる。光磁気ディスク装置3においては、1394インタフェース36において、セッションキーSと時変キーiを用いて復号処理が行われる。
これに対して、パーソナルコンピュータ2においては、ライセンスマネージャ62が、セッションキーSのうち、初期値キーSsをアプリケーション部61に供給し、攪乱キーSiと時変キーi(正確には、時変キーiを生成するためのキーi’)を1394インタフェース49(リンク部分)に供給する。そして、1394インタフェース49において、攪乱キーSiとキーi’から時変キーiが生成され、時変キーiを用いて復号が行われ、その復号されたデータをアプリケーション部61において、さらにセッションキーS(正確には、初期値キーSs)を用いて復号が行われる。
このように、パーソナルコンピュータ2においては、内部バス51が、ユーザに解放されているので、1394インタフェース49により第1段階の復号だけを行い、まだ暗号の状態としておく。そして、アプリケーション部61において、さらに第2段階の復号を行い、平文にする。これにより、パーソナルコンピュータ2に対して、適宜、機能を付加して、内部バス51において授受されるデータ(平文)をハードディスク47や他の装置にコピーすることを禁止させる。
このように、この発明の実施の形態においては、内部バスが解放されていないCE装置においては、暗号化、または復号処理は、セッションキーSと時変キーiを用いて1度に行われるが、内部バスが解放されている装置(パーソナルコンピュータ2など)においては、復号処理が、時変キーiを用いた復号処理と、セッションキーSを用いた復号処理に分けて行われる。このように、1段階の復号処理と、2段階に分けた復号処理の両方ができるようにするには、次式を成立させることが必要となる。
Dec(S,Dec(i, Enc(algo(S+i),Data)))=Data
なお、上記式において、algo(S+i)は、所定のアルゴリズムにセッションキーSと時変キーiを入力して得られた結果を表している。
図11は、上記式を満足する1394インタフェース26の構成例を表している。この構成例においては、アディティブジェネレータ71により生成したmビットのデータが、シュリンクジェネレータ73に供給されている。また、LFSR(Linear Feedback Sift Register)72が1ビットのデータを出力し、シュリンクジェネレータ73に供給している。シュリンクジェネレータ73は、LFSR72の出力に対応して、アディティブジェネレータ71の出力を選択し、選択したデータを暗号鍵として加算器74に出力している。加算器74は、入力された平文(1394バス11に伝送するmビットのデータ)と、シュリンクジェネレータ73より供給されるmビットのデータ(暗号鍵)とを加算し、加算した結果を暗号文(暗号化されたデータ)として、1394バス11に出力するようになされている。
加算器74の加算処理は、mod 2^m(^はべき乗を意味する)で、シュリンクジェネレータ73の出力と平文を加算することを意味する。換言すれば、mビットのデータ同志が加算され、キャリオーバを無視した加算値が出力される。
図12は、図11に示した1394インタフェース26のさらにより詳細な構成例を表している。ファームウェア20から出力されたセッションキーSのうち、初期値キーSsは、加算器81を介してレジスタ82に転送され、保持される。この初期値キーSsは、例えば、55ワード(1ワードは8ビット乃至32ビットの幅を有する)により構成される。また、ファームウェア20から供給されたセッションキーSのうちの、例えばLSB側の32ビットで構成される攪乱キーSiは、レジスタ85に保持される。
レジスタ84には、キーi’が保持される。このキーi’は、例えば1394バス11を介して1個のパケットが伝送される毎に、2ビットのキーi’がレジスタ84に供給され、16パケット分の(32ビット分の)キーi’がレジスタ84に保持されたとき、加算器86により、レジスタ85に保持されている32ビットの攪乱キーSiと加算され、最終的な時変キーiとして加算器81に供給される。加算器81は、そのときレジスタ82に保持されている値と加算器86より供給された時変キーiを加算し、その加算結果をレジスタ82に供給し、保持させる。
レジスタ82のワードのビット数が、例えば8ビットである場合、加算器86より出力される時変キーiが32ビットであるので、時変キーiを4分割して、各8ビットをレジスタ82の所定のアドレス(0乃至54)のワードに加算するようにする。
このようにして、レジスタ82には、最初に初期値キーSsが保持されるが、その後、この値は、16パケット分の暗号文を伝送する毎に、時変キーiで更新される。
加算器83は、レジスタ82に保持されている55ワードのうちの所定の2ワード(図12に示されているタイミングの場合、アドレス23とアドレス54のワード)を選択し、その選択した2ワードを加算して、シュリンクジェネレータ73に出力する。また、この加算器73の出力は、図12に示すタイミングでは、レジスタ82のアドレス0に転送され、前の保持値に代えて保持される。
そして、次のタイミングにおいては、加算器83に供給されるレジスタ82の2ワードのアドレスは、アドレス54とアドレス23から、それぞれアドレス53とアドレス22に、1ワード分だけ、図中上方に移動され、加算器83の出力で更新されるアドレスも、図中、より上方のアドレスに移動される。ただし、アドレス0より上方のアドレスは存在しないので、この場合には、アドレス54に移動する。
なお、加算器81,83,86では、排他的論理和を演算させるようにすることも可能である。
LFSR72は、例えば、図13に示すように、nビットのシフトレジスタ101と、シフトレジスタ101のnビットのうちの所定のビット(レジスタ)の値を加算する加算器102により構成されている。シフトレジスタ101は、加算器102より供給されるビットを、図中最も左側のレジスタbnに保持すると、それまでそこに保持されていたデータを右側のレジスタbn-1にシフトする。レジスタbn-1,bn-2,・・・も、同様の処理を行う。そして、さらに次のタイミングでは、各ビットの値を加算器102で加算した値を再び、図中最も左側のビットbnに保持させる。以上の動作が順次繰り返されて、図中最も右側のレジスタb1から出力が1ビットずつ順次出力される。
図13は、一般的な構成例であるが、例えば、より具体的には、LFSR72を図14に示すように構成することができる。この構成例においては、シフトレジスタ101が31ビットにより構成され、その図中右端のレジスタb1の値と左端のレジスタb31の値が、加算器102で加算され、加算された結果がレジスタb31に帰還されるようになされている。
LFSR72より出力された1ビットのデータが論理1であるとき、条件判定部91は、アディティブジェネレータ71の加算器83より供給されたmビットのデータをそのままFIFO92に転送し、保持させる。これに対して、LFSR72より供給された1ビットのデータが論理0であるとき、条件判定部91は、加算器83より供給されたmビットのデータを受け付けず、暗号化処理を中断させる。このようにして、シュリンクジェネレータ73のFIFO92には、アディティブジェネレータ71で生成したmビットのデータのうち、LFSR72が論理1を出力したタイミングのもののみが選択され、保持される。
FIFO92により保持したmビットのデータが、暗号鍵として、加算器74に供給され、伝送されるべき平文のデータ(DVDからの再生データ)に加算されて、暗号文が生成される。
暗号化されたデータは、DVDプレーヤ1から1394バス11を介して光磁気ディスク装置3とパーソナルコンピュータ2に供給される。
光磁気ディスク装置3は、1394インタフェース36において、1394バス11から受信したデータを復号するために、図15に示すような構成を有している。この構成例においては、シュリンクジェネレータ173にアディティブジェネレータ171の出力するmビットのデータと、LFSR172が出力する1ビットのデータが供給されている。そして、シュリンクジェネレータ173の出力するmビットの鍵が、減算器174に供給されている。減算器174は、暗号文からシュリンクジェネレータ173より供給される鍵を減算して、平文を復号する。
すなわち、図15に示す構成は、図11に示す構成と基本的に同様の構成とされており、図11における加算器74が、減算器174に変更されている点だけが異なっている。
図16は、図15に示す構成のより詳細な構成例を表している。この構成も、基本的に図12に示した構成と同様の構成とされているが、図12における加算器74が、減算器174に変更されている。その他のアディティブジェネレータ171、LFSR172、シュリンクジェネレータ173、加算器181、レジスタ182、加算器183、レジスタ184,185、加算器186、条件判定部191、FIFO192は、図12におけるアディティブジェネレータ71、LFSR72、シュリンクジェネレータ73、加算器81、レジスタ82、加算器83、レジスタ84,85、加算器86、条件判定部91、およびFIFO92に対応している。
従って、その動作は、基本的に図12に示した場合と同様であるので、その説明は省略するが、図16の例においては、シュリンクジェネレータ173のFIFO192より出力されたmビットの鍵が、減算器174において、暗号文から減算されて平文が復号される。
以上のように、1394インタフェース36においては、セッションキーS(初期値キーSsと攪乱キーSi)と時変キーiを用いて、暗号化データが1度に復号される。
これに対して、上述したように、パーソナルコンピュータ2においては、1394インタフェース49とアプリケーション部61において、それぞれ個別に、2段階に分けて復号が行われる。
図17は、1394インタフェース49において、ハード的に復号を行う場合の構成例を表しており、その基本的構成は、図15に示した場合と同様である。すなわち、この場合においても、アディティブジェネレータ271、LFSR272、シュリンクジェネレータ273、および減算器274により1394インタフェース49が構成されており、これらは、図15におけるアディティブジェネレータ171、LFSR172、シュリンクジェネレータ173、および減算器174と基本的に同様の構成とされている。ただし、図17の構成例においては、アディティブジェネレータ271に対して、ライセンスマネージャ62から、時変キーiを生成するためのキーi’と、セッションキーSのうち、時変キーiを攪乱するための攪乱キーSiとしては、図15における場合と同様のキーが供給されるが、初期値キーSsとしては、全てのビットが0である単位元が供給される。
すなわち、図18に示すように、初期値キーSsの全てのビットが0とされるので、実質的に、初期値キーSsが存在しない場合と同様に、時変キーiだけに基づいて暗号鍵が生成される。その結果、減算器274においては、暗号文の時変キーiに基づく復号だけが行われる。まだ初期値キーSsに基づく復号が行われていないので、この復号の結果得られるデータは、完全な平文とはなっておらず、暗号文の状態になっている。従って、このデータを内部バス51から取り込み、ハードディスク47や、その他の記録媒体に記録したとしても、それをそのまま利用することができない。
そして、以上のようにして、1394インタフェース49において、ハード的に時変キーiに基づいて復号されたデータをソフト的に復号するアプリケーション部61の構成は、図19に示すように、アディティブジェネレータ371、LFSR372、シュリンクジェネレータ373および減算器374により構成される。その基本的構成は、図15に示したアディティブジェネレータ171、LFSR172、シュリンクジェネレータ173、および減算器174と同様の構成となっている。
ただし、セッションキーSのうち、初期値キーSsは、図15における場合と同様に、通常の初期値キーが供給されるが、時変キーiを生成するための攪乱キーSiとキーi’は、それぞれ全てのビットが0である単位元のデータとされる。
その結果、図20にその詳細を示すように(そのアディティブジェネレータ371乃至FIFO392は、図16におけるアディティブジェネレータ171乃至FIFO192に対応している)、レジスタ384に保持されるキーi’とレジスタ385に保持される攪乱キーSiは、全てのビットが0であるため、加算器386の出力する時変キーiも全てのビットが0となり、実質的に時変キーiが存在しない場合と同様の動作が行われる。すなわち、初期値キーSsだけに基づく暗号鍵が生成される。そして、減算器374においては、このようにして生成された暗号鍵に基づいて暗号文が平文に復号される。上述したように、この暗号文は、1394インタフェース49において、時変キーiに基づいて第1段階の復号が行われているものであるので、ここで、初期値キーSsに基づいて第2段階の復号を行うことで、完全な平文を得ることができる。
光磁気ディスク装置3においては、以上のようにして暗号文が復号されると、CPU31が、復号されたデータをドライブ35に供給し、光磁気ディスクに記録させる。
一方、パーソナルコンピュータ2においては、CPU41(アプリケーション部61)が、以上のようにして復号されたデータを、例えばハードディスク47に供給し、記録させる。パーソナルコンピュータ2においては、拡張ボード48として所定のボードを接続して、内部バス51で授受されるデータをモニタすることができるが、内部バス51に伝送されるデータを最終的に復号することができるのは、アプリケーション部61であるので、拡張ボード48は、1394インタフェース49で、時変キーiに基づく復号が行われたデータ(まだ、セッションキーSに基づく復号が行われていないデータ)をモニタすることができたとしても、完全に平文に戻されたデータをモニタすることはできない。そこで、不正なコピーが防止される。
なお、セッションキーの共有は、例えば、Diffie-Hellman法などを用いて行うようにすることも可能である。
なお、この他、例えばパーソナルコンピュータ2における1394インタフェース49またはアプリケーション部61の処理能力が比較的低く、復号処理を行うことができない場合には、セッションキーと時変キーのいずれか、あるいは両方をソース側において、単位元で構成するようにし、シンク側においても、これらを単位元で用いるようにすれば、実施的にセッションキーと時変キーを使用しないで、データの授受が可能となる。ただし、そのようにすれば、データが不正にコピーされるおそれが高くなる。
アプリケーション部61そのものが、不正にコピーしたものである場合、復号したデータが不正にコピーされてしまう恐れがあるが、上述したようにアプリケーション部61をライセンスマネージャ62で認証するようにすれば、これを防止することが可能である。
この場合の認証方法としては、共通鍵暗号方式の他、公開鍵暗号方式を用いたデジタル署名を利用することができる。
以上の図11、図12、図15乃至図20に示す構成は、準同形(homomorphism)の関係を満足するものとなっている。すなわち、キーK1,K2がガロアフィールドGの要素であるとき、両者の群演算の結果、K1・K2もガロアフィールドGの要素となる。そして、さらに、所定の関数Hについて次式が成立する。
H(K1・K2)=H(K1)・H(K2)
図21は、さらに1394インタフェース26の他の構成例を表している。この構成例においては、セッションキーSがLFSR501乃至503に供給され、初期設定されるようになされている。LFSR501乃至503の幅n1乃至n3は、それぞれ20ビット程度で、それぞれの幅n1乃至n3は、相互に素になるように構成される。従って、例えば、セッションキーSのうち、例えば、上位n1ビットがLFSR501に初期設定され、次の上位n2ビットがLFSR502に初期設定され、さらに次の上位n3ビットがLFSR503に初期設定される。
LFSR501乃至503は、クロッキングファンクション506より、例えば論理1のイネーブル信号が入力されたとき、mビットだけシフト動作を行い、mビットのデータを出力する。mの値は、例えば、8,16,32,40などとすることができる。
LFSR501とLFSR502の出力は、加算器504に入力され、加算される。加算器504の加算値のうち、キャリー成分は、クロッキングファンクション506に供給され、sum成分は、加算器505に供給され、LFSR503の出力と加算される。加算器505のキャリー成分は、クロッキングファンクション506に供給され、sum成分は、排他的論理和回路508に供給される。
クロッキングファンクション506は、加算器504と加算器505より供給されるデータの組み合わせが、00,01,10,11のいずれかであるので、これらに対応して、LFSR501乃至503に対して、000乃至111のいずれか1つの組み合わせのデータを出力する。LFSR501乃至503は、論理1が入力されたとき、mビットのシフト動作を行い、新たなmビットのデータを出力し、論理0が入力されたとき、前回出力した場合と同一のmビットのデータを出力する。
排他的論理和回路508は、加算器505の出力するsum成分とレジスタ507に保持された時変キーiの排他的論理和を演算し、その演算結果を排他的論理和回路509に出力する。排他的論理和回路509は、入力された平文と、排他的論理和回路508より入力された暗号鍵の排他的論理和を演算し、演算結果を暗号文として出力する。
図22は、光磁気ディスク装置3における1394インタフェース36の構成例を表している。この構成例におけるLFSR601乃至排他的論理和回路609は、図21におけるLFSR501乃至排他的論理和回路509と同様の構成とされている。従って、その動作も、基本的に同様となるので、その説明は省略する。ただし、図21の構成例においては、暗号化処理が行われるのに対して、図22の構成例においては、復号処理が行われる。
図23は、パーソナルコンピュータ2の1394インタフェース49の構成例を表している。この構成例におけるLFSR701乃至排他的論理和回路709も、図22における、LFSR601乃至排他的論理和回路609と同様の構成とされている。ただし、LFSR701乃至703に初期設定されるセッションキーSは、全てのビットが0の単位元とされている。従って、この場合、実質的にレジスタ707に保持された時変キーiだけに対応して復号化処理が行われる。
図24は、パーソナルコンピュータ2のアプリケーション部61の構成例を表している。この構成例におけるLFSR801乃至排他的論理和回路809は、図22における、LFSR601乃至排他的論理和回路609と基本的に同様の構成とされている。ただし、レジスタ807に入力される時変キーiが、全てのビットが0である単位元とされている点のみが異なっている。従って、この構成例の場合、セッションキーSだけに基づいて暗号鍵が生成され、復号処理が行われる。
なお、図19、図20、および図24に示す処理は、アプリケーション部61において行われるので、ソフト的に処理されるものである。
以上においては、DVDプレーヤ1をソースとし、パーソナルコンピュータ2と光磁気ディスク装置3をシンクとしたが、いずれの装置をソースとするかシンクとするかは任意である。
また、各電子機器を接続する外部バスも、1394バスに限らず、種々のバスを利用することができ、それに接続する電子機器も、上述した例に限らず、任意の装置とすることができる。
以上のように、機能の変更がユーザに開放されていない第1の情報処理装置においては、第1の鍵と、データを復号しているとき、所定のタイミングで変更される第2の鍵を用いて、暗号鍵を生成するようにし、機能の変更がユーザに開放されている第2の情報処理装置においては、第1の鍵と、第2の鍵の一方を用いて生成した第1の暗号鍵で、暗号化されているデータを復号し、第1の鍵と第2の鍵の他方を用いて生成した第2の暗号鍵を用いて、その復号されたデータをさらに復号するようにする場合、より安全な情報処理システムを実現することが可能となる。
また、第1の暗号鍵と、データを復号しているとき、所定のタイミングで変更される第2の暗号鍵を、ソフトウェアプログラムで生成するようにする場合、アプリケーションプログラム毎に復号を行うことが可能となり、不正なコピーをより確実に防止することが可能となる。
1 DVDプレーヤ, 2 パーソナルコンピュータ, 3 光磁気ディスク装置, 11 1394バス, 20 ファームウェア, 21 CPU, 25 ドライブ, 26 1394インタフェース, 27 EEPROM, 31 CPU, 35 ドライブ, 36 1394インタフェース, 37 EEPROM, 41 CPU, 47 ハードディスク, 48 拡張ボード, 49 1394インタフェース, 50 EEPROM, 51 内部バス, 61 アプリケーション部, 62 ライセンスマネージャ