最近、AV機器やパーソナルコンピュータなどの電子機器を、例えばIEEE1394バス(以下、単に1394バスと称する)などの伝送路を介して相互に接続し、相互の間でデータを授受することができるようにするシステムが提案されている。
図9は、そのような情報処理システムの構成例を示している。なお、本明細書において、システムとは、複数の装置で構成される全体的な装置を示すものとする。この例においては、1394バス11を介してDVD(Digital Video Disk)プレーヤ1、パーソナルコンピュータ2、光磁気ディスク装置3、データ放送受信装置4、モニタ5、テレビジョン受像機6が相互に接続されている。
図10は、この内のDVDプレーヤ1、パーソナルコンピュータ2、および光磁気ディスク装置3の内部のより詳細な構成例を表している。DVDプレーヤ1は、1394インタフェース(I/F)26を介して、1394バス11に接続されている。CPU21は、ROM22に記憶されているプログラムに従って各種の処理を実行し、RAM23は、CPU21が各種の処理を実行する上において必要なデータやプログラムなどを適宜記憶する。操作部24は、ボタン、スイッチ、リモートコントローラなどにより構成され、ユーザにより操作されたとき、その操作に対応する信号を出力する。ドライブ25は、図示せぬDVD(ディスク)を駆動し、そこに記録されているデータを再生するようになされている。EEPROM(electrically erasable programmable ROM)27は、装置の電源オフ後も記憶する必要のある情報を記憶するようになされている。内部バス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が接続されており、CPU41は、そこにデータ、プログラムなどを記録再生させることができるようになされている。入出力インタフェース44にはまた、拡張ボード48を適宜装着し、必要な機能を付加することができるようになされている。EEPROM50には、電源オフ後も保持する必要のある情報が記憶されるようになされている。例えば、PCI(Peripheral Component Interconnect)、ローカルバスなどにより構成される内部バス51は、これらの各部を相互に接続するようになされている。
なお、この内部バス51は、ユーザに対して解放されており、ユーザは、拡張ボード48に所定のボードを適宜接続したり、所定のソフトウェアプログラムを作成して、CPU41にインストールすることで、内部バス51により伝送されるデータを適宜受信することができるようになされている。
これに対して、DVDプレーヤ1や光磁気ディスク装置3などのコンシューマエレクトロニクス(CE)装置においては、内部バス28や内部バス38は、ユーザに解放されておらず、特殊な改造などを行わない限り、そこに伝送されるデータを取得することができないようになされている。
以上の構成のシステムにおいて、例えば、ユーザが、DVDに記録されている映画を、モニタ5またはテレビジョン受像器6等の表示装置を用いて観賞する場合、DVDプレーヤ1は、DVD(ディスク)から読みとった映画データを、1394バス11を介して表示装置に伝送し、表示装置は、それを受信して表示する。
ところで、このとき、映画データをそのままの状態で1394バス11を介して伝送すると、不正なユーザがその映画データを受信し、それを不法コピーする可能性がある。そこで、送信側の装置(以下、このような装置をソース(source)と称する)は伝送するデータを暗号化して伝送し、受信側の装置(以下、このような装置をシンク(sink)と称する)は、それを鍵を用いて復号するようにする。その際、送信側の装置は、相手の装置が正規の装置であるか否かを判断するために、データを伝送する前に、その装置との間で認証処理を実行する。
以下に、ソースとシンクとの間で行われる認証処理について説明する。この認証処理は、図11に示すように、ソースとしての、例えばDVDプレーヤ1のROM22に予め記憶されているソフトウェアプログラムの1つとしてのファームウェア20と、シンクとしての、例えばパーソナルコンピュータ2のROM42に記憶されており、CPU41が処理するソフトウェアプログラムの1つとしてのライセンスマネージャ62との間において行われる。
図12は、ソース(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は、著作権者から与えられた、自分自身に固有の識別番号(device_ID:以下、適宜、IDと略記する)とライセンスキー(license_key)を、EEPROM50に秘密裡に保持している。このライセンスキーは、nビットのIDとmビットのサービスキーを連結して得たn+mビットのデータ(ID ‖ service_key)に対して、hash関数を適用して得られる値である。すなわち、ライセンスキーは次式で表される。
licence_key=hash(ID ‖ service_key)
IDとしては、例えば1394バス11の規格に定められているnode_unique_IDを用いることができる。このnode_unique_IDは、図12に示すように、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がパーソナルコンピュータ2から伝送されたIDを受け取ると、このIDはCPU21で動作しているファームウェア20に供給される。
ファームウェア20は、ステップS5において、パーソナルコンピュータ2から伝送を受けたIDと、EEPROM27に記憶されているサービスキーを連結して、連結データ(ID ‖ service_key)を生成し、このデータに対して、次式に示すようにhash関数を適用して、キーlkを生成する。
lk=hash(ID ‖ service_key)
次に、ステップS6において、ファームウェア20は、暗号鍵skを生成する。この暗号鍵skは、セッションキーとしてDVDプレーヤ1とパーソナルコンピュータ2のそれぞれにおいて共通に利用される。
次に、ステップS7において、ファームウェア20は、ステップS5で生成した鍵lkを鍵として用いて、ステップS6で生成した暗号鍵skを暗号化することにより、暗号化データ(暗号化鍵)eを得る。すなわち、次式を演算する。なお、Enc(A,B)は、共通鍵暗号方式で、鍵Aを用いて、データBを暗号化することを意味する。
e=Enc(lk,sk)
次に、ステップS8で、ファームウェア20は、ステップS7で生成した暗号化データeをパーソナルコンピュータ2に伝送する。すなわち、この暗号化データeは、DVDプレーヤ1の1394インタフェース26から1394バス11を介してパーソナルコンピュータ2に伝送される。パーソナルコンピュータ2においては、ステップS9で、この暗号化データeを1394インタフェース49を介して受信する。ライセンスマネージャ62は、このようにして受信した暗号化データeをEEPROM50に記憶されているライセンスキーを鍵として用いて、次式に示すように復号し、復号鍵sk'を生成する。なお、ここで、Dec(A,B)は、共通鍵暗号方式で鍵Aを用いて、データBを復号することを意味する。
sk'=Dec(license_key,e)
なお、この共通鍵暗号方式における暗号化のアルゴリズムとしては、DES(Data Encryption Standard:米国データ暗号化規格)が知られている。共通鍵暗号化方式についても、上述した、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から伝送されてきた暗号化されているデータを復号することはできない。従って安全性が向上する。
ところで、何らかの理由により、不正なユーザが、暗号化データeと暗号鍵skを両方とも知ってしまったような場合のことを考える。この場合、eは、平文skを、鍵lkで暗号化した暗号文であるので、暗号アルゴリズムが公開されている場合、不正ユーザは、鍵lkを総当たりで試すことにより、正しい鍵lkを得る可能性がある。
不正ユーザによるこの種の攻撃を、より困難にするために、暗号アルゴリズムの一部または全部を一般に公開せずに秘密にしておくことができる。
または同様に、license_keyから、service_keyを総当たりで調べる攻撃を、より困難にするために、hash関数の一部または全文を一般に公開せずに秘密にしておくようにすることもできる。
図14は、ソース(DVDプレーヤ1)に対して、パーソナルコンピュータ2だけでなく、光磁気ディスク装置3もシンクとして機能する場合の処理例を表している。
この場合、シンク1としてのパーソナルコンピュータ2のEEPROM50には、IDとしてID1が、また、ライセンスキーとしてlicense_key1が記憶されており、シンク2としての光磁気ディスク装置3においては、EEPROM37に、IDとしてID2が、また、ライセンスキーとしてlicense_key2が記憶されている。
DVDプレーヤ1(ソース)とパーソナルコンピュータ2(シンク1)の間において行われるステップS11乃至ステップS20の処理は、図12におけるステップS1乃至ステップS10の処理と実質的に同様の処理であるので、その説明は省略する。
すなわち、上述したようにして、DVDプレーヤ1は、パーソナルコンピュータ2に対して認証処理を行う。そして次に、ステップS21において、DVDプレーヤ1は、光磁気ディスク装置3に対して、IDを要求する。光磁気ディスク装置3においては、ステップS22で1394インタフェース36を介して、このID要求信号が受信されると、そのファームウェア30(図18)は、ステップ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を生成する。
e2=Enc(lk2,sk)
そして、ステップ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と同一の値となっている。
図14の処理例においては、DVDプレーヤ1が、パーソナルコンピュータ2と、光磁気ディスク装置3に対して、それぞれ個別にIDを要求し、処理するようにしているのであるが、同報通信によりIDを要求することができる場合は、図14に示すような処理を行うことができる。
すなわち、図15の処理例においては、ステップ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)
図16は、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で復号処理を行う。その他の動作は、図11における場合と同様である。
図17は、さらに他の処理例を表している。この例においては、ソースとしての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には、通常、任意のアプリケーションプログラムをロードして用いることができる。そして、このアプリケーションプログラムとしては、不正に作成したものが使用される場合もある。従って、各アプリケーションプログラム毎に、著作権者から許可を得たものであるか否かを判定する必要がある。そこで、図12に示すように、各アプリケーション部61とライセンスマネージャ62との間においても、上述したように、認証処理を行うようにすることができる。この場合、ライセンスマネージャ62がソースとなり、アプリケーション部61がシンクとなる。
次に、以上のようにして、認証が行われた後(暗号鍵の共有が行われた後)、暗号鍵を用いて、ソースから暗号化したデータをシンクに転送し、シンクにおいて、この暗号化したデータを復号する場合の動作について説明する。
図18に示すように、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や他の装置にコピーすることを禁止させる。
以下、図面を参照して本発明を適用した実施の形態について説明する。
図1は、本発明を適用した情報処理システムの構成例を示す図であり、図9に示した場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。この構成例においては、管理センタ110は、不正装置の識別番号が記載されたリスト(revocation list:リボケーションリスト)を作成するリボケーションリスト作成部111と、リボケーションリスト作成部111により作成されたリボケーションリストをアンテナ113を介して送信する送信部112とにより構成されている。
リボケーションリスト作成部111は、所定の装置において管理されている情報の露呈が発覚した場合、その装置の識別番号(device_ID)を不正装置のdevice_IDとして記したリスト(以下、リボケーションリスト(revocation list)と称する)を作成する。また、リボケーションリスト作成部111は、リボケーションリストを作成したものが管理センタ110であることを示す署名(例えば、公開鍵暗号を用いたデジタル署名)とその作成時刻を、作成したリボケーションリストに付加する。このデジタル署名は、リボケーションリストを受け取った装置において、そのリボケーションリストが正規のものであるのか否かの検証の際に用いられる。送信部112は、所定のタイミングで、リボケーションリスト作成部111により作成されたリボケーションリストを、アンテナ113を介して送信する。なお、このタイミングは、例えば、1ヶ月に一度の定期的なものでもよいし、例えば、また、他の装置から要求があったときのタイミングでもよい。
管理センタ110から送信されたリボケーションリストは、例えば衛星120を介して、他の装置(いまの場合、データ放送受信装置130)に提供される。
データ放送受信装置130は、1394インタフェース138を介して1394バス11に接続されている。チューナ132は、アンテナ131を介して、管理センタ110から衛星120を介して送信されるリボケーションリストを受信し、CPU133に出力するようになされている。CPU133は、ROM136に記憶されているプログラムに従って各種の処理を実行し、RAM137は、CPU133が各種の処理を実行する上において必要なデータやプログラム等を適宜記憶する。ハードディスク(HDD)135は、データまたはプログラムなどを記録または再生することができるようになされている。EEPROM134は、装置の電源オフ後も記憶する必要のある情報(例えば、リボケーションリスト)を記憶するようになされている。内部バス139は、これらの各部を相互に接続している。
なお、DVDプレーヤ1、パーソナルコンピュータ2、および光磁気ディスク装置3の詳細な構成は、図10に示した場合と同様とされている。
ここで、1394バス11に接続されている各装置には、それぞれに固有の識別番号であるdevice_ID(例えば、node_unique_ID)が与えられている。また、各装置のうち、データ放送受信装置130、DVDプレーヤ1、パーソナルコンピュータ2、または光磁気ディスク3等の、他の装置間でデータを送受信することができる装置(以下、特にこれらの装置を個々に区別する必要がない場合、適宜、これらの装置を総称して送受信装置と記述する)は、1394バス11を介して自分に接続されている装置(具体的には、少なくとも一度、データの伝送を行った相手の装置)のdevice_IDが記される識別番号テーブル(connected device_ID table:以下、CDTと略記する)を、例えば、それぞれに内蔵するEEPROM内(例えば、データ放送受信装置の場合、EEPROM134内)の所定の領域に用意している。なお、各装置のうち、データの送信を行うことができない装置は、CDTを有する必要はない。
各送受信装置は、例えば、図8を参照して後述する認証処理(勿論、これ以外の認証処理でもよい)を行う際に、相手装置のdevice_IDを入手し、それをCDTに格納することができる。そして、各送受信装置は、相手側のdevice_IDを確認した後(すなわち、相手装置が正当な装置であるか否かを確認した後)、暗号化データを復号するための鍵(例えば、セッションキーまたは時変キー)を相手装置に送信するか否かを決定するようになされている。
データ放送受信装置130は、1394バス11に接続されているこれらの全装置のdevice_IDまたは各送受信装置のCDTに格納されている情報を、所定のタイミングで適宜読み出すことができるようになされている。このタイミングは、例えば、一週間に一回のように、定期的なものであってもよいし、また、例えば、1394バス11に新たな装置が追加または排除されたことが検出できる場合、それが検出されたタイミングで行うようにしてもよい。そして、データ放送受信装置130は、読みとった情報を自分自身のCDTに反映する(具体的には、新規の項目を格納する)ことができる。
図2は、CDTの構成例を示す図である。この例において、アドレス1乃至nには、1394バス11を介して接続されている装置のdevice_IDと、不正装置のdevice_ID(リボケーションリストに記されているdevice_ID)であるか否かを示すフラグ(revocateフラグ)とが格納されるようになされている。この例においては、アドレス1乃至3のdevice_IDA乃至device_IDCに、フラグ(×印)が付加されている(具体的には、フラグを示す値が、例えば1に設定されている)。すなわち、これらのdevice_IDA乃至device_IDCに対応する装置は、不正な装置であるとされる。
データ放送受信装置130(または他の送受信装置)は、フラグが格納されているdevice_ID(すなわち、不正装置に対応するdevice_ID)が、常にアドレスの前段に配置されるように、CDTをソートするようになされている。例えば、図3に示すように、アドレス6に格納されているdevice_IDFに対応する装置が不正装置であることが新たに発覚し、そのアドレス6にフラグが付加されたとき、データ放送受信装置130のCPU133は、図4に示すように、アドレス6に格納されていたdevice_IDFを、アドレス4に移動させるとともに、アドレス4とアドレス5に格納されていたdevice_IDEとdevice_IDFを、それぞれアドレス5とアドレス6に移動させる。
なお、CDTには、n個(例えば、100個)の項目(device_IDとフラグ)を格納することができるものとする。ただし、各送受信装置のうち、管理センタ110から提供されるリボケーションリストを用いて、各装置のdevice_IDまたはCDTを管理する管理装置(いまの場合、データ放送受信装置130)のCDTには、n個以上のdevice_IDとフラグを格納することができるものとする。ここで、このCDTのアドレスが全て使用されている状態において、新たにCDTに格納すべき項目が発生した場合、CDT中の、フラグが付加されていない項目のうち、一番古いものが消去され、空いたアドレスに新規の項目が格納される。
例えば、いま、100個の項目を格納することができるCDTがあり、そのアドレス1乃至アドレス10までは、フラグが付加されている項目が、古いものから順に格納されており、また、そのアドレス11乃至アドレス100までは、フラグが付加されていない項目が、古いものから順に格納されているものとする。例えば、このCDTを有する装置が、データの伝送を初めて行う相手装置のdevice_IDを入手し、これを新たな項目としてCDTに格納する場合、フラグが付加されていない項目のうち、一番古いものである、アドレス11の項目を消去し、アドレス12乃至アドレス100に格納されていた項目を1つずつ繰り上げる(それぞれアドレス11乃至99に移動する)。そして、それにより空いたアドレス100に、新たな項目が格納される。
また、例えば、このCDTを持つ装置が、新たなリボケーションリストを受け取り、その中のdevice_IDをCDTに格納する場合、アドレス11の項目を消去して、そこに、リボケーションリストのdevice_IDを、フラグとともに格納する。
さらに、このCDTが、フラグが付加されている項目で一杯となった場合において、このCDTを有する装置は、新規に格納すべき項目が、新たに受け取ったリボケーションリストのdevice_IDであるとき、CDTの古い項目を消去して、空いたアドレスに格納し、データの伝送を初めて行った相手装置のdevice_IDであるとき、それはCDTに格納しない。
次に、図5のフローチャートを参照して、図1の情報処理システムの動作を説明する。ステップS201において、管理センタ110のリボケーション作成部111は、不正装置のdevice_IDを示したリボケーションリストを作成し、続いて、ステップS202において、作成したリボケーションリストに、署名と時刻を付加する。ステップS203で、送信部112は、所定のタイミングで、リボケーション作成部111により作成されたリボケーションリストを、アンテナ113を介して送信する。
そして、ステップS204において、データ放送受信装置130のチューナ132は、衛星120を介して提供されるリボケーションリストを、アンテナ131を介して受信する。CPU133は、ステップS205において、受信したリボケーションリストが、正当なものであるか否かを検証する。すなわち、リボケーションリストに付加されている署名が、管理センタ110のものであるかを検証する。なお、この検証処理においては、例えば、管理センタ110から発行された公開鍵を有する装置のみが署名を確認することができるものとする。
ステップS205において、リボケーションリストが正当なものではない(すなわち、署名が管理センタ110のものではない)と判定された場合、CPU133は、ステップS206においてリボケーションリストは不正なものとして破棄し、処理を終了する。一方、ステップS205において、リボケーションリストが正当なものである(すなわち、署名が管理センタ110のものである)と判定された場合、ステップS207に進み、CPU133は、リボケーションリスト中に記されている不正装置のdevice_IDと、CDT中のdevice_IDとを比較する。CPU133は、ステップS208において、CDT中に、リボケーションリストに記されているdevice_IDと合致するdevice_IDが存在するか否かを判定し、対応するdevice_IDはCDT中に存在しないと判定した場合、処理を終了する。
ステップS208において、リボケーションリストに記されているdevice_IDと合致するdevice_IDがCDT中に存在すると判定された場合、ステップS209に進み、CPU133は、CDT中の対応するdevice_IDにフラグを付加する。続いて、CPU133は、ステップS210において、1394インタフェース138を制御して、CDT中の、フラグが付加されているdevice_IDを、リボケーションリストとともに、1394バス11を介して接続されている他の送受信装置に送信する。
各送受信装置は、ステップS211において、データ放送受信装置130のフラグが付加されたdevice_IDとリボケーションリストを受信し、ステップS212において、受信したリボケーションリストが正当なものであるか否かを判定する。ステップS212において、リボケーションリストは正当なものではない(すなわち、署名が管理センタ110のものではない)と判定された場合、ステップS213において、そのリボケーションリストが破棄され、処理が終了される。
ステップS212において、リボケーションリストが正当なものであると判定された場合、ステップS214に進み、各送受信装置は、受信したリボケーションリストに対応して、それぞれのCDTの内容を更新する(対応するdevice_IDにフラグを付加する)。
以上の処理により、1394バス11に接続されている全ての送受信装置のCDTが、管理センタ110により作成されたリボケーションリストに対応して更新された。
次に、以上をふまえた上で、図7を参照して、例えば、送受信装置としてのDVDプレーヤ1に対して、パーソナルコンピュータ2からデータの伝送の要求があった場合の、DVDプレーヤ1の処理を説明する。まず、ステップS301において、DVDプレーヤ1は、パーソナルコンピュータ2との間で認証処理(例えば、図8を用いて後述)を実行する。これにより、DVDプレーヤ1は、パーソナルコンピュータ2のdevice_IDを入手することになる。ステップS302において、パーソナルコンピュータ2のdevice_IDが、自分自身のCDT中でフラグが付加されているdevice_IDであるか否かが判定され、パーソナルコンピュータ2のdevice_IDが、CDT中でフラグが付加されているものであると判定された場合、ステップS303において、DVDプレーヤ1は、パーソナルコンピュータ2を不正装置であるとし、処理を終了する。
ステップS302において、パーソナルコンピュータ2のdevice_IDは、CDT中でフラグが付加されているものではないと判定された場合、ステップS304に進み、DVDプレーヤ1は、パーソナルコンピュータ2との間で、鍵および暗号データの伝送処理を実行する。続いて、ステップS305において、DVDプレーヤ1は、パーソナルコンピュータ2が、新規の装置であるか(すなわち、伝送処理を初めて行った装置であるか)否かを判定し、パーソナルコンピュータ2は新規の装置ではない(すなわち、伝送処理を既に行ったことがある装置である)と判定した場合、処理を終了する。
ステップS305において、パーソナルコンピュータ2が新規の装置である(すなわち、初めて伝送処理を行った装置である)と判定された場合、ステップS306に進み、DVDプレーヤ1は、パーソナルコンピュータ2のdevice_IDをCDTに追加する。これにより、データ放送受信装置130は、DVDプレーヤ1のCDTを所定のタイミングで読み出したときに、1394バス11に新規に接続された装置(いまの場合、パーソナルコンピュータ2)のdevice_IDを入手することできるので、例えば、次に受け取ったリボケーションリストにより、このパーソナルコンピュータ2が不正装置であることが判明した場合、1394バス11に接続されている各送受信装置(パーソナルコンピュータ2を除く)にこれを知らせることにより、パーソナルコンピュータ2を実質的に排除することが可能となる。
以上のようにして、各送受信装置は、管理センタ110から提供されたリボケーションリストに対応して、相手装置が不正な装置であるか否かを判断することができ、映画などのデータの伝送を安全に行うことができる。
図8は、図7のステップS301で実行される認証の処理例を示すタイミングチャートである。この例においては、ソースとしてのDVDプレーヤ1のEEPROM27には、サービスキー(service_key)とhash関数(F,G,H)が予め記憶されている。一方、シンクとしてのパーソナルコンピュータ2は、そのdevice_ID(ID)、ライセンスキー(license_key)、および、hash関数(G,H)を、EEPROM50に秘密裡に保持している。まず、ステップS111において、パーソナルコンピュータ2は、乱数Nbを生成する。そして、ステップS112において、1394インタフェース49を制御して、生成した乱数Nbとともに認証要求を1394バス11を介してDVDプレーヤ1に送信する。
DVDプレーヤ1は、ステップS113において、この認証要求と乱数Nbを受信する。次にDVDプレーヤ1は、ステップS114において、パーソナルコンピュータ2に対してそのdevice_IDを要求する。パーソナルコンピュータ2は、ステップS115において、device_IDの要求を受信し、その対応として、ステップS116において、EEPROM50に記録されているdevice_IDを読み出し、それをDVDプレーヤ1に送信する。これにより、DVDプレーヤ1は、パーソナルコンピュータ2のdevice_IDを入手することができる。
DVDプレーヤ1は、ステップS117において、パーソナルコンピュータ2から送信されたdevice_IDを受信し、ステップS118において、次式で示すように、サービスキー(Kser)を鍵とするhash関数Fに、受信したIDを適用することにより、データKvを生成する。なお、keyedhashA1(A2,A3)は、A2を鍵とするhash関数A1に、A3を適用することを示している。
Kv=keyedhashF(Kser,ID)
次に、DVDプレーヤ1は、ステップS119で、乱数Naを生成し、ステップS120で、乱数Naをパーソナルコンピュータ2に送信する。パーソナルコンピュータ2は、ステップS121で乱数Naを受信し、ステップS122において、次式に示すように、ライセンスキーKlicを鍵とするhash関数Hに、乱数Naと乱数Nbを連結したデータ(Na‖Nb)を適用することにより、データRを生成する。
R=keyedhashH(Klic,Na‖Nb)
そして、パーソナルコンピュータ2は、ステップS123において、生成したデータRをDVDプレーヤ1に送信する。DVDプレーヤ1は、ステップS124で、データRを受信し、ステップS125において、ステップS118で生成されたデータKvを鍵とするhash関数Hに連結データ(Na‖Nb)を適応して得られた値が、受信されたデータRと等しいか否かを判定する。
ステップ125において、両者が等しくないと判定された場合、受信されたデータRは破棄され、認証処理は終了される(すなわち、パーソナルコンピュータ2は不適正なものと判定される)。一方、ステップ125において、両者が等しいと判定された場合、ステップS126に進み、DVDプレーヤ1は、次式に示すように、データKvを鍵とするhash関数Gに連結データ(Na‖Nb)を適用することにより、鍵Kabを生成する。
Kab=keyedhashG(Kv,Na‖Nb)
なお、この鍵Kabは、DVDプレーヤ1とパーソナルコンピュータ2の間で一時的に用いられる鍵である。例えば、ソースとしてのDVDプレーヤ1に、パーソナルコンピュータ2の他にシンクとして光磁気ディスク装置3が接続されている場合、DVDプレーヤ1と光磁気ディスク装置3との間で用いられる鍵が、さらに別途生成されることになる。
次に、ステップS127において、DVDプレーヤ1は、セッション内で共通に使用する鍵Kcを生成し、ステップS128において、鍵Kabを用いて鍵Kcを暗号化して、暗号化データ(暗号化鍵)Xを生成する。すなわち、次式が演算される。なお、Enc(B1,B2)は、B1を鍵として、B2を暗号化することを示している。
X=Enc(Kab,Kc)
そして、DVDプレーヤ1は、ステップS129において、暗号化データXをパーソナルコンピュータ2に送信する。ステップS130において、パーソナルコンピュータ2は、DVDプレーヤ1から送信された暗号化データXを受信し、ステップS131で、ライセンスキーKlicを鍵とするhash関数Gに、連結データ(Na‖Nb)を適用することにより、鍵K'abを生成する。すなわち、次式が演算される。
K'ab=keyedhashG(Klic,Na‖Nb)
そして、ステップS131において、パーソナルコンピュータ2は、次式にし示すように、鍵K'abを用いてデータXを復号して、鍵Kcを得る。なお、Dec(C1,C2)は、C1を鍵として、C2を復号することを示している。
Kc=Dec(K'ab,X)
これにより、例えば、シンクとしての装置が複数存在する場合においても、ソースと全てのシンクとの間で、同一の鍵Kcを安全に共有することができる。
そして、DVDプレーヤ1のファームウェア20は、ステップS121において、乱数N'aを生成し、ステップS133において、乱数N'aをパーソナルコンピュータ2に送信する。パーソナルコンピュータ2のライセンスマネージャ62は、ステップS134で、乱数N'aを受信する。そして、DVDプレーヤ1のファームウェア20とパーソナルコンピュータ2のライセンスマネージャ62は、それぞれ、ステップS135とステップS136において、鍵Kcと乱数N'aを用いて次式を演算することにより、ともにセッションキーskを得る。
sk=keyedhashH(Kc,N'a)
なお、セッションキーを変更する場合、ソースは、新たな乱数を生成して、シンクとなる全ての装置にそれを送信し、それぞれの装置において、その新たな乱数を用いてセッションキーを生成するようにする。
ところで、以上の処理では、各送受信装置が、リボケーションリストの正当性を確認することができるようにするため、管理装置であるデータ放送受信装置130は、受信したリボケーションリストを各送受信装置に伝送するようになされているが、リボケーションリストのデータサイズが大きい場合、通信コストが高くなることが予想される。そこで、この対策として、以下の2つの方法が考えられる。
(1) 管理センタ110が、リボケーションリストを作成する際に、それを所定の数に分割し、分割したリストそれぞれに対して署名を付加し、それをデータ放送受信装置130等の管理装置に提供し、また、データ放送受信装置130等の管理装置は、管理センタ110から提供されたリボケーションリストの中から、自分自身に接続されている装置に関連するものだけを、接続されている他の送受信装置に伝送するようにする。
(2) データ放送受信装置130等の管理装置は、デジタル署名を作成する機能を備えるようにし、リボケーションリストの中から自分のCDTに含まれている部分を取り出し、自分のネットワーク用のリボケーションリストを新たに作成して、それに署名を付加し、それを接続されている他の送受信装置に伝送するようにする。
なお、上記の各種の指令を実行するプログラムまたはリボケーションリストは、磁気ディスク、CD-ROM等の伝送媒体を介してユーザに提供したり、ネットワーク等の伝送媒体を介してユーザに提供し、必要に応じて内蔵するRAMやハードディスク等に記憶して利用させるようにすることができる。
1 DVDプレーヤ, 2 パーソナルコンピュータ, 3 光磁気ディスク装置, 11 1394バス, 110 管理センタ, 111 リボケーションリスト作成部, 112 チューナ, 113 アンテナ, 120 衛星, 130 データ放送受信装置, 131 アンテナ, 132 チューナ, 133 CPU, 134 EEPROM, 135 ハードディスク, 136 ROM, 137 RAM, 138 1394インタフェース, 139 内部バス