説明

情報処理装置および方法、記録媒体、プログラム、並びに情報処理システム

【課題】安全かつ迅速に相互認証およびアクセス制御を行うことができるようにする。
【解決手段】ファイルアクセス処理部は、ステップS114において、第三のデータをルート鍵で暗号化して第四のデータを生成し、ステップS115において、第四のデータから、アクセス許諾チケットのチェック子を算出するためのアクセス許諾チケット生成鍵を作成し、ステップS116において、アクセス許諾チケットのチェック子(MAC値)を、アクセス許諾チケット生成鍵を用いて計算し、ステップS117において、生成したチェック子の値を、アクセス許諾チケットのチェック子の値と比較し、アクセス許諾チケットを検証する。本発明は、例えば、通信システムに適用することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および方法、記録媒体、プログラム、並びに情報処理システムに関し、特に、安全かつ迅速に相互認証およびアクセス制御を行うことができるようにした情報処理装置および方法、記録媒体、プログラム、並びに情報処理システムに関する。
【背景技術】
【0002】
近年、電子マネーに代表される、非接触IC(Integrated Circuit)カードが多方面で利用されるようになってきている。この非接触ICカードには、種々のアプリケーションが搭載されることが普通であり、それぞれ要求される情報セキュリティのレベルが異なっているのが普通である。そこで、必要の都度、アプリケーション毎にアクセス許諾チケットを提示してアクセス許諾を得て、そのアプリケーションに対応したファイルにアクセスする手法をとっている(例えば、特許文献1参照)。
【0003】
【特許文献1】特開2002−281023号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のアクセス許諾チケットにおいては、ファイルへのアクセス方法を複数種類指定することはできるものの、そのチケットが正当であるかどうかを判定するMAC(Message Authentication Code)値を計算するのに使う鍵が一つであるという問題点があった。つまり、各ファイルのアクセス方法に対して鍵を別々に設定してはいるものの、MACを計算するために使用する鍵は一つである。このため、チケットで正当性を判断しても、チェックできる鍵が一つということになり、結局はその鍵に対するファイルアクセス方法のみを判定しているに過ぎないという矛盾が残っていた。
【0005】
本発明はこのような状況に鑑みてなされたものであり、安全かつ迅速に相互認証及びアクセス制御を行うことができるようにするものである。
【課題を解決するための手段】
【0006】
本発明の第1の側面は、他の情報処理装置より、自分自身が保持するデータに対してアクセスを要求される情報処理装置であって、前記他の情報処理装置の認証処理を行う認証手段と、前記認証手段により正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信する受信手段と、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成するアクセス許諾チケット生成鍵生成手段と、前記アクセス許諾チケット生成鍵生成手段により生成された前記アクセス許諾チケット生成鍵を用いて、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出するチェック子算出手段と、前記チェック子算出手段により算出された前記チェック子を用いて、前記受信手段により受信された前記アクセス許諾チケットを検証するアクセス許諾チケット検証手段とを備える情報処理装置である。
【0007】
前記アクセス許諾チケットは、前記他の情報処理装置のIDをさらに含み、前記受信手段により受信された前記アクセス許諾チケットに記述される前記他の情報処理装置のIDが、前記認証手段により認証済みの他の情報処理装置のIDであるか否かを検証するID検証手段をさらに備えることができる。
【0008】
所定のIDが特別なIDであるオールマイティIDとして予め設定されており、前記ID検証手段は、前記アクセス許諾チケットに前記オールマイティIDが記述されている場合、認証済みのIDの如何に関わらず、アクセス制御チケットの使用者を許諾させることができる。
【0009】
前記アクセス許諾チケット生成鍵の生成に使用される前記所定のデータは、前記認証手段による認証処理において認証用の鍵情報の生成に用いられる所定のデータとは異なるデータとして予め保持することができる。
【0010】
前記アクセス許諾チケットに記述されるアクセスコードが、前記認証処理においてアクセス先として認証されたディレクトリのアクセスコードであるか否かを確認する確認手段をさらに備えることができる。
【0011】
前記確認手段により前記認証処理においてアクセス先として認証されていないディレクトリのアクセスコードが含まれることが確認された場合、アクセスを拒絶する拒絶手段をさらに備えることができる。
【0012】
前記拒絶手段は、前記認証処理においてアクセス先として認証されていないディレクトリのアクセスコードについてのみアクセスを拒絶することができる。
【0013】
前記アクセス許諾チケット生成鍵生成手段は、前記確認手段により前記認証処理においてアクセス先として認証されていない領域のアクセスコードが含まれることが確認された場合、前記アクセス許諾チケット生成鍵の生成において、さらに、前記アクセスコードに対応するディレクトリの鍵情報であるディレクトリ鍵を使用することができる。
【0014】
前記アクセス許諾チケット生成鍵生成手段は、予め保持する前記所定のデータを前記ルート鍵で暗号化し、その暗号化結果をさらに各ディレクトリ鍵で1つずつ暗号化し、さらにその暗号化結果を、各アクセス制御鍵で1つずつ暗号化することにより、各鍵情報を縮退化して前記アクセス許諾チケット生成鍵を生成することができる。
【0015】
本発明の第一の側面は、また、他の情報処理装置より、自分自身が保持するデータに対してアクセスを要求される情報処理装置の情報処理方法であって、前記他の情報処理装置の認証処理を行い、正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信し、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成し、生成された前記アクセス許諾チケット生成鍵を用いて、前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出し、算出された前記チェック子を用いて、前記アクセス許諾チケットを検証するステップを含む情報処理方法である。
【0016】
本発明の第一の側面は、さらに、他の情報処理装置より、自分自身が保持するデータに対してアクセスを要求される情報処理装置を制御するプログラムであって、前記他の情報処理装置の認証処理を行い、正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信し、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成し、生成された前記アクセス許諾チケット生成鍵を用いて、前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出し、算出された前記チェック子を用いて、前記アクセス許諾チケットを検証するステップを含むコンピュータが読み取り可能なプログラムが記録されている記録媒体である。
【0017】
本発明の第一の側面は、また、他の情報処理装置より、自分自身が保持するデータに対してアクセスを要求されるコンピュータに実行させるプログラムにおいて、前記他の情報処理装置の認証処理を行い、正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信し、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成し、生成された前記アクセス許諾チケット生成鍵を用いて、前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出し、算出された前記チェック子を用いて、前記アクセス許諾チケットを検証するステップを含む情報処理をコンピュータに実行させるプログラムである。
【0018】
本発明の第二の側面は、第一の情報処理装置が、第二の情報処理装置が保持するデータに対してアクセスを要求する情報処理システムであって、前記第一の情報処理装置は、前記第二の情報処理装置と相互認証処理を行う第一の相互認証手段と、アクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを前記第二の情報処理装置に送信する送信手段とを備え、前記第二の情報処理装置は、前記第一の情報処理装置と相互認証処理を行う第二の相互認証手段と、前記第二の相互認証手段により正当な相手であると認証された前記第一の情報処理装置より、前記第一の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信する受信手段と、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成するアクセス許諾チケット生成鍵生成手段と、前記アクセス許諾チケット生成鍵生成手段により生成された前記アクセス許諾チケット生成鍵を用いて、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出するチェック子算出手段と、前記チェック子算出手段により算出された前記チェック子を用いて、前記受信手段により受信された前記アクセス許諾チケットを検証するアクセス許諾チケット検証手段とを備える情報処理システムである。
【0019】
本発明の第一の側面においては、他の情報処理装置の認証処理が行われ、正当な相手であると認証された他の情報処理装置より、他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットが受信され、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信されたアクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵が使用されて、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵が生成され、生成されたアクセス許諾チケット生成鍵を用いて、アクセス許諾チケットに記述されるアクセスコードに対応するチェック子が算出され、算出されたチェック子を用いて、アクセス許諾チケットが検証される。
【0020】
本発明の第二の側面においては、第一の情報処理装置において、第二の情報処理装置と相互認証処理が行われ、アクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットが第二の情報処理装置に送信され、第二の情報処理装置において、第一の情報処理装置と相互認証処理が行われ、正当な相手であると認証された第一の情報処理装置より、第一の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットが受信され、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信されたアクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵が使用されて、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵が生成され、その生成されたアクセス許諾チケット生成鍵を用いて、アクセス許諾チケットに記述されるアクセスコードに対応するチェック子が算出され、その算出されたチェック子を用いて、アクセス許諾チケットが検証される。
【発明の効果】
【0021】
本発明によれば、認証処理およびアクセス制御を行うことができる。特に、安全かつ迅速に相互認証およびアクセス制御を行うことができる。
【発明を実施するための最良の形態】
【0022】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【0023】
本発明の第1の側面は、他の情報処理装置(例えば、図1の情報処理端末11)より、自分自身が保持するデータに対してアクセスを要求される情報処理装置(例えば、図1のICカード12)であって、前記他の情報処理装置の認証処理を行う認証手段(例えば、図1の認証処理部33)と、前記認証手段により正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信する受信手段(例えば、図20のステップS111の処理を行う図1の通信部38)と、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成するアクセス許諾チケット生成鍵生成手段(例えば、図20のステップS115の処理を行う図1のアクセス許諾チケット生成鍵生成部42)と、前記アクセス許諾チケット生成鍵生成手段により生成された前記アクセス許諾チケット生成鍵を用いて、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出するチェック子算出手段(例えば、図20のステップS116の処理を行う図1のファイルアクセス処理部34)と、前記チェック子算出手段により算出された前記チェック子を用いて、前記受信手段により受信された前記アクセス許諾チケットを検証するアクセス許諾チケット検証手段(例えば、図20のステップS117の処理を行う図1のファイルアクセス処理部34)とを備える。
【0024】
前記アクセス許諾チケットは、前記他の情報処理装置のIDをさらに含み、前記受信手段により受信された前記アクセス許諾チケットに記述される前記他の情報処理装置のIDが、前記認証手段により認証済みの他の情報処理装置のIDであるか否かを検証するID検証手段(例えば、図20のステップS112の処理を行う図1のファイルアクセス処理部34)をさらに備えることができる。
【0025】
前記アクセス許諾チケット生成鍵の生成に使用される前記所定のデータ(例えば、図18の第三のデータ)は、前記認証手段による認証処理において認証用の鍵情報の生成に用いられる所定のデータ(例えば、図18の第一のデータ)とは異なるデータとして予め保持することができる。
【0026】
前記アクセス許諾チケットに記述されるアクセスコードが、前記認証処理においてアクセス先として認証されたディレクトリのアクセスコードであるか否かを確認する確認手段(例えば、図20のステップS113の処理を行う図1のファイルアクセス処理部34)をさらに備えることができる。
【0027】
本発明の第一の側面は、また、他の情報処理装置(例えば、図1の情報処理端末11)より、自分自身が保持するデータに対してアクセスを要求される情報処理装置(例えば、図1のICカード12)の情報処理方法、記録媒体、またはプログラムであって、前記他の情報処理装置の認証処理を行い(例えば、図11および図12の認証処理)、正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信し(例えば、図20のステップS111)、予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成し(例えば、図20のステップS115)、生成された前記アクセス許諾チケット生成鍵を用いて、前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出し(例えば、図20のステップS116)、算出された前記チェック子を用いて、前記アクセス許諾チケットを検証する(例えば、図20のステップS117)ステップを含む。
【0028】
以下、本発明の実施の形態について説明する。
【0029】
図1は、本発明を適用した通信システムの主な構成例を示すブロック図である。
【0030】
図1に示される通信システム1は、通信機能を有する情報処理端末11およびIC(Integrated Circuit)カード12の2つのデバイスよりなり、情報処理端末11とICカード12が互いに通信を行い、情報を授受するシステムである。情報処理端末11は、例えば改札機や自動販売機等のような、ICカード12のリーダ・ライタ機能を有する情報処理装置であり、ICカード12に情報を供給して記憶させたり、ICカード12に記憶されている情報を読み出したりする。ICカード12は、例えば不揮発性メモリや通信回路を内蔵するICチップやループアンテナ等が埋め込まれたカード型のデバイスであり、情報処理端末11と、通信可能範囲が約10cm程度の近距離無線通信を行い、情報の授受を行う、所謂、非接触型のICカードである。
【0031】
図1に示されるように、情報処理端末11は、記憶部21、認証処理部23、ファイルアクセス処理部24、乱数生成部25、暗号化部26、復号部27、および通信部28の機能ブロックを有する。記憶部21は、例えばフラッシュメモリやハードディスク等の不揮発性のメモリデバイスよりなり、IDや暗号化用の鍵情報等各種情報を記憶する。認証処理部23は、例えばCPU(Central Processing Unit)等の演算処理デバイスよりなり、情報処理端末11とICカード12との通信を開始する際に互いを認証させる認証処理を行う。ファイルアクセス処理部24は、例えばCPU等の演算処理デバイスよりなり、相互認証を行ったICカード12に対して、ファイルへのアクセス許諾を求める処理を行う。乱数生成部25は、例えばCPU等の演算処理デバイスよりなり、認証処理等に必要な乱数を生成する。暗号化部26は、例えばCPU等の演算処理デバイスよりなり、通信部28を介してICカード12に供給する情報を必要に応じて暗号化する。復号部27は、例えばCPU等の演算処理デバイスよりなり、通信部28を介してICカード12より供給された、暗号化された情報を必要に応じて復号する。通信部28は、例えば、通信回路等を含むICチップやループアンテナ等よりなり、通信可能範囲内に位置するICカード12との近距離無線通信を行い、情報を授受する。もちろん、情報処理端末11がこれら以外の機能ブロックを有していてもよい。
【0032】
なお、図1においては矢印の記載を省略しているが、認証処理部23およびファイルアクセス処理部24は、乱数生成部25、暗号化部26、および復号部27とも情報の授受を適宜行う。
【0033】
ICカード12は、記憶部31、データ設定処理部32、認証処理部33、ファイルアクセス処理部34、乱数生成部35、暗号化部36、復号部37、および通信部38の機能ブロックを有する。記憶部31は、例えばフラッシュメモリやハードディスク等の不揮発性のメモリデバイスよりなり、情報処理端末11等外部の機器より供給される情報等、各種情報を記憶する。データ設定処理部32は、例えばCPU等の演算処理デバイスよりなり、ICカード12の外部の機器より供給される命令や情報等に基づいて、記憶部31の記憶領域にディレクトリやファイルを作成したり、鍵情報やID等の設定情報を書き込んだりするデータ設定処理を行う。認証処理部33は、例えばCPU等の演算処理デバイスよりなり、情報処理端末11とICカード12との通信を開始する際に互いを認証させる認証処理を行う。認証処理部33は、情報処理端末11固有の鍵を生成する情報処理端末11用のマスタ鍵を生成するマスタ鍵生成部41を有する。ファイルアクセス処理部34は、例えばCPU等の演算処理デバイスよりなり、情報処理端末11による記憶部31に書き込まれているファイルへのアクセスの制御に関する処理を行う。ファイルアクセス処理部34は、情報処理端末11より供給されるアクセス許諾チケットの検証を行うために、そのアクセス許諾チケットと同様の情報を作成可能な鍵情報であるアクセス許諾チケット生成鍵を生成するアクセス許諾チケット生成鍵生成部42を有する。乱数生成部35は、例えばCPU等の演算処理デバイスよりなり、認証処理等に必要な乱数を生成する。暗号化部36は、例えばCPU等の演算処理デバイスよりなり、通信部38を介して情報処理端末11に供給する情報を必要に応じて暗号化する。復号部37は、例えばCPU等の演算処理デバイスよりなり、通信部38を介して情報処理端末11より供給された、暗号化された情報を必要に応じて復号する。通信部38は、例えば、通信回路等を含むICチップやループアンテナ等よりなり、通信可能範囲内に位置する情報処理端末11との近距離無線通信を行い、情報を授受する。もちろん、ICカード12がこれら以外の機能ブロックを有していてもよい。
【0034】
なお、図1においては矢印の記載を省略しているが、データ設定処理部32、認証処理部33、およびファイルアクセス処理部34は、それぞれ、乱数生成部35、暗号化部36、および復号部37とも情報の授受を適宜行う。
【0035】
以上の通信システム1に関わる存在(エンティティ)について説明する。以下においては、ICカード12をユーザに提供する(あるいは販売し、管理する)エンティティをシステム管理者と称し、そのシステム管理者の許諾を得て、ICカード12の記憶部31の記憶領域の中にディレクトリを生成し、サービスを提供するエンティティを事業者と称する。当然、システム管理者も一事業者となり得る。
【0036】
システム管理者は、ICカード12に第一のデータと、ルートディレクトリを管理する鍵情報であるルート鍵を書き込み、ユーザにICカード12を提供する。従って、同一のシステム管理者配下のICカード12の記憶部31には、全て同じ第一のデータおよびルート鍵が書かれている。換言するに、互いに異なるシステム管理者のICカードには、互いに異なる第一のデータおよびルート鍵がそれぞれ記憶される。
【0037】
次に、情報処理端末11およびICカード12の間で行われる相互認証について説明する。図2は、情報処理端末11の記憶部21、および、ICカード12の記憶部31に記憶される、相互認証処理に関する情報の例を示す図である。
【0038】
図2に示される例においては、通信システム1は、3台の情報処理端末11と2枚のICカード12により構成される。通信システム1を提供するシステム管理者(企業や団体等も含む)は1人(1社または1団体等)存在し(つまり、唯一のシステム管理者が存在し)、通信システム1を用いたサービスを提供する事業者(企業や団体等も含む)は2人(2社または2団体)存在し(つまり、2単位の事業者が存在し)、通信システム1を用いたサービスを享受するユーザは2人(2社または2団体)存在する(つまり、2単位のユーザが存在する)。事業者1は、情報処理端末11−1−1および情報処理端末11−1−2を所有し、事業者2は、情報処理端末11−2−1を所有する。ICカード12−1は、図示せぬ一方のユーザにより所有され、ICカード12−2は、図示せぬ他方のユーザにより所有される。なお、情報処理端末11−1−1、情報処理端末11−1−2、および情報処理端末11−2−1を互いに区別して説明する必要の無い場合、単に情報処理端末11と称する。同様に、ICカード12−1およびICカード12−2を互いに区別して説明する必要の無い場合、単にICカード12と称する。
【0039】
システム管理者は、例えば出荷時に、ICカード12−1の記憶部31−1に第一のデータ(KSystem)とルート鍵(KRoot)を書き込む。同様に、システム管理者は、例えば出荷時に、ICカード12−2の記憶部31−2に第一のデータ(KSystem)とルート鍵(KRoot)を書き込む。
【0040】
事業者1は、システム管理者の許諾を得てICカード12−1の記憶部31−1に、提供するサービス毎にディレクトリ(ディレクトリ1−1、ディレクトリ1−2、ディレクトリ1−3、およびディレクトリ1−3−2)を作成する。なお、本例ではディレクトリ1−3にはアクセスしないこととする。また、ディレクトリ1−3−2はディレクトリ1−3の下にある下位ディレクトリである(つまり、ルート直下ではない)。
【0041】
同様に、事業者2は、システム管理者の許諾を得てICカード12−2の記憶部31−2に、提供するサービス毎にディレクトリ(ディレクトリ2−1、ディレクトリ2−2、ディレクトリ2−3、およびディレクトリ2−3−2)を作成する。なお、本例ではディレクトリ2−3にはアクセスしないこととする。また、ディレクトリ2−3−2はディレクトリ2−3の下にある下位ディレクトリである(つまり、ルート直下ではない)。
【0042】
ディレクトリを作成する際、事業者は、そのサービスのディレクトリを管理する、サービス毎の鍵情報であるディレクトリ鍵(DirK)、そのICカード12のそのディレクトリを識別するためのアプリケーションID(AppID)と、そのICカード12のそのディレクトリを管理する鍵情報であるアプリケーション鍵(AppK)を、そのディレクトリに書き込む。
【0043】
例えば、事業者1は、ディレクトリ1−1を作成すると、そのディレクトリ1−1に、ディレクトリ鍵(DirK1−1)、アプリケーションID(AppID1−1)、およびアプリケーション鍵(AppK1−1)を書き込む。同様に、事業者1は、ディレクトリ1−2を作成すると、そのディレクトリ1−2に、ディレクトリ鍵(DirK1−2)、アプリケーションID(AppID1−2)、およびアプリケーション鍵(AppK1−2)を書き込む。
【0044】
同様に、事業者2は、ディレクトリ2−1を作成すると、そのディレクトリ2−1に、ディレクトリ鍵(DirK2−1)、アプリケーションID(AppID2−1)、およびアプリケーション鍵(AppK2−1)を書き込む。同様に、事業者2は、ディレクトリ2−2を作成すると、そのディレクトリ2−2に、ディレクトリ鍵(DirK2−2)、アプリケーションID(AppID2−2)、およびアプリケーション鍵(AppK2−2)を書き込む。
【0045】
ディレクトリ鍵DirKの場合、書き込み先のICカード12が異なっていても(つまり、異なるユーザが持つカードという意味)(例えば、ICカード12−1の場合も、ICカード12−2の場合も)、提供されるサービスが同一のディレクトリであれば、互いに同一の鍵が書き込まれる。これに対して、アプリケーションID(AppID)やアプリケーション鍵(AppK)の場合、サービスが同一のディレクトリであってもICカードが異なれば値が異なる。
【0046】
また、例えば、ディレクトリ1−1のアプリケーション鍵AppK1−1は、情報処理端末11−1−1の記憶部21−1−1に保持されているマスタ鍵MK1−ICとアプリケーションID(AppID1−1)から生成できるものとする。つまり、ここには図示されていないが、事業者1が他のICカード12(つまり、異なるユーザが持つカードという意味)に生成するディレクトリには、異なるアプリケーションID(AppID)(これがユーザIDとなる)とアプリケーション鍵(AppK)が書き込まれる。ただし、ディレクトリ鍵(DirK)は共通である。
【0047】
同様に、事業者2によって各ディレクトリにディレクトリ鍵(DirK)、アプリケーションID(AppID)、およびアプリケーション鍵(AppK)が書き込まれる。
【0048】
情報処理端末11−1−1の記憶部21−1−1には、情報処理端末11−1−1固有の識別情報(ID1−1)、情報処理端末11−1−1固有の鍵(K1−1)、ICカード12−1の記憶部31−1に記憶されるアプリケーション鍵(AppK)を生成するためのマスタ鍵(MK1−IC)が書き込まれている。この鍵は、事業者毎に異なるだけであるため、同一事業者内では同じ鍵となる。なお、マスタ鍵をディレクトリ毎に変えるようにしても良い(本例では、事業者につき固有としている)。その場合、アクセスするディレクトリ分のマスタ鍵を保持している必要がある。
【0049】
同様に、情報処理端末11−1−2の記憶部21−1−2には、情報処理端末11−1−2固有の識別情報(ID1−2)、情報処理端末11−1−2固有の鍵(K1−2)、ICカード12−1の記憶部(31−1)に記憶されるアプリケーション鍵(AppK)を生成するためのマスタ鍵(MK1−IC)が書き込まれている。同様に、情報処理端末11−2−1の記憶部21−2−1には、情報処理端末11−2−1固有の識別情報(ID2−1)、情報処理端末11−2−1固有の鍵(K2−1)、ICカード12−2の記憶部31−2に記憶されるアプリケーション鍵(AppK)を生成するためのマスタ鍵(MK2−IC)が書き込まれている。
【0050】
次に、ICカード12の記憶部31内に記憶されるデータの具体的な構成例を説明する。
【0051】
図3は、記憶部31の記憶領域内に書き込まれる情報の構成例(アドレスマップ)を示す図である。
【0052】
図3において、まず、1ブロックのバイト数であるが、鍵長が16バイト以上になることに伴い、32バイトを想定している。もちろん、鍵長を8バイトとして、1ブロックを16バイトとしてもよいし、1ブロックを64バイトとしてもよい。記憶部31には、鍵データ等のシステムデータが、メモリの上位アドレスから書き込まれる。逆に、ユーザデータは下位アドレスから書き込まれる。結果として、記憶部31の中央領域が常に空き領域となるようになる。これらのデータを保持するICチップ(記憶部31を含むICチップ)を、以降セキュリティICと呼称する。
【0053】
記憶部31の論理アドレスFFFFhのブロック(32バイト)には、デバイスID(Device ID)と、デバイスパラメータ(Device Parameter)が記憶される。デバイスID(Device ID)は、デバイス固有のID、すなわちICカード12のIDを示す。このデータは、ICベンダーによって書き込まれるか、システム管理者によって書き込まれる。このデータは、所定の手続きを取らない限り読み出すことができないようになされており、通常のアプリケーションでは使用することができない。これにより、プライバシー等の侵害を防ぐことが期待される。また、デバイスパラメータ(Device Parameter)は、返答時間など、種々のパラメータを規定する。
【0054】
各ブロックの先頭の2バイト(FF FFhとFF FEh)は、それぞれ、ブロック種別を規定するデータである。この先頭の2バイトがFF FFhまたはFF FEhで始まるシステムブロック(論理アドレスFFFEhおよび論理アドレスFFFDhの2ブロック)は、システム管理者によって記憶部31に最初に割り当てられ、システム全体を管理する鍵情報であるシステム鍵(System Key)の情報を格納している。このシステム鍵(System Key)はシステムデータ(System Data)を生成するための元になるデータである認証鍵用(System Key for Authentication)(後述する第一のデータ)とアクセス許諾チケット生成鍵用(System Key for Access Control Ticket)(後述する第三のデータ)の2つが設けられる。なお、このシステム鍵は、いずれか一方のみを設定し、その一方を用いて所定のロジックによって他方が生成されるようにしてもよいし、両者を同一としても良い。
【0055】
この2ブロックに含まれるキーフォーマット(Key Format)は、システム鍵(System Key)を暗号鍵として使用する場合の共通鍵暗号アルゴリズム/鍵長を規定するものであり、システム鍵(System Key)をデータとして使用する場合には適応しない。また、キーバージョン(Key Version)は、そのブロックのシステム鍵(System Key)のバージョン情報を示す。
【0056】
先頭の2バイトが00 00hで始まるシステムブロックは、ルートディレクトリ(Root Directory)の情報を格納している。3バイト目乃至6バイト目(00 00 00 00h)は、ルートディレクトリ(Root Directory)のディレクトリコード(Directory Code)(Directoryの名前)を示している。スタートアドレス(Start Address)は、通常00 00hから始まり、エンドアドレス(End Address)は、システムブロックの1つ手前を表す。なお、このアドレスは物理アドレスではなく、論理ブロック番号に該当する。トータルブロック数(Total Block)は、スタートアドレス(Start Address)とエンドアドレス(End Address)から計算できるため必要性はないが、メモリ上は確保しておく。キーフォーマット(Key Format)は、使用される共通鍵暗号アルゴリズム/鍵長を規定するもので、他の領域に保存されている共通鍵全てに適応する。キーバージョン(Key Version)は、ルート鍵(Root Directory Symmetric Key)の鍵のバージョンを示す。
【0057】
先頭の2バイトが00 01hで始まるシステムブロックは、下位にサブディレクトリ(Sub-Directory)を構成することが可能なディレクトリ(Directory)に関する情報を格納し、先頭の2バイトが00 02hで始まるシステムブロックは、下位にサブディレクトリ(Sub-Directory)を構成することが不可能なディレクトリ(Directory)に関する情報を格納する。これらのシステムブロックのディレクトリコード(Directory Code)は、このディレクトリ(Directory)の名前を示し、他のコード(Code)と異なっている必要がある。ただし、このコード(Code)に値「FF FF FF FFh」および「00 00 00 00h」は使用することができないようになされている。また、これらのシステムブロックのスタートアドレス(Start Address)とエンドアドレス(End Address)は、上述したルートディレクトリ(Root Directory)に関するシステムブロックの場合と同様である。2回目に出てくるディレクトリコード(Directory Code)は、親ディレクトリのディレクトリコード(Directory Code)を示す。通常は、ルートディレクトリ(Root Directory)に属するため、このディレクトリコードには「00 00 00 00h」が書き込まれるが、それより下段のディレクトリでは、親ディレクトリのディレクトリコードが記述される。また、これらのシステムブロックのキーバージョン(Key Version)は、上述したルートディレクトリ(Root Directory)に関するシステムブロックの場合と同様である。先頭の2バイトが00 01hで始まるシステムブロックのディレクトリ鍵(Directory Symmetric Key with Sub-Directory)は、下位にサブディレクトリ(Sub-Directory)を構成することが可能なディレクトリ(Directory)のディレクトリ鍵のことである。また、先頭の2バイトが00 02hで始まるシステムブロックのディレクトリ鍵(Directory Symmetric Key without Sub-Directory)は、下位にサブディレクトリ(Sub-Directory)を構成することが不可能なディレクトリ(Directory)のディレクトリ鍵のことである。
【0058】
先頭の2バイトが00 FFhで始まるシステムブロックは、ディレクトリ(Directory)に対するアプリケーション情報(Application Information)を示している。このシステムブロックのアプリケーションID(Application ID)は、そのディレクトリ(Directory)を管理する事業者がICカード12に割り振った識別情報(ID)を示し、アプリケーション鍵(Application Symmetric Key)は、アプリケーションID(Application ID)とマスタ鍵(Master Application Key)とから算出される鍵を示す。またディレクトリコード(Directory Code)は、このアプリケーション情報(Application Information)に対応するディレクトリコード(Directory Code)を示す。
【0059】
先頭の2バイト(ブロック種別)が01 00h乃至FE FFhの場合、それらの値はアクセスモード(Access Mode)、すなわち、ファイル(File)へのアクセス方法を示している。このブロックのアクセスコード(Access Code)はファイル(File)の名前を示している。ただし、他のコード(Code)と値が異なっている必要がある。また、このブロックのスタートアドレス(Start Address)とエンドアドレス(End Address)は、上述したルートディレクトリ(Root Directory)に関するシステムブロックの場合と同様である。このブロックのディレクトリコード(Directory Code)は、アクセス対象のファイル(File)が所属するディレクトリ(Directory)の名前を示す。さらに、このブロックのキーバージョン(Key Version)の値が「FF FFh」以外である場合、アクセス制御のための鍵であるアクセス制御鍵(Access Control Symmetric Key)が有効である。これに対して、キーバージョン(Key Version)の値が「FF FFh」である場合、このブロックの鍵情報、すなわちアクセス制御鍵(Access Control Symmetric Key)が無効である。つまり、キーバージョン(Key Version)の値が「FF FFh」であることは、暗号処理機能を使用しないことを示す。
【0060】
なお、先頭の2バイトが00 FEhで始まるシステムブロックを、リボケーションリスト(Revocation List)とすることができる。この時、通常は鍵が書かれている領域にリボーク(Revoke)される情報処理端末のIDを記載する。
【0061】
次に、このようなセキュリティIC内部のデータ(記憶部31に書き込まれるデータ)の設定方法を規定する。このデータ設定を行うデータ設定処理の流れの例を図4のフローチャートを参照して説明する。必要に応じて図5および図6を参照して説明する。
【0062】
ステップS1において、データ設定処理部32は、チップベンダ(ICカード12を作成する製品製造メーカを含む)より指示を受けると、記憶部31の記憶領域を初期化する。つまり、チップ製造直後、チップベンダは、ICカード12以外のデバイス(例えば、セキュリティIC検査装置など)を用いて全てのメモリデータをFFhに初期化するようセキュリティICに要求する。その後、このセキュリティICを組み込んだICカードを製造する。
【0063】
ステップS2において、データ設定処理部32は、チップベンダの指示(特別なコマンド)に基づいて、ICカード12の外部の装置より供給されるデバイスIDおよびパラメータを記憶部31に書き込む。なお、デバイスIDおよびパラメータの書き込みは、記憶部31の全てのメモリエリアがFFh(もしくは、デバイスID(Device ID)およびパラメータ(Device Parameter)の領域のみがFFh)である場合のみ可能である。なお、この時点では値の読み出し(特別なコマンド)は自由に行えるようにしておく。また、何度でも変更ができるようにしておく。さらに、変更する場合には、上記書き込みシーケンスと同様のものを用い、それによって、以前のデータは消去され、上書きされるものとする。また、もしデバイスID(Device ID)およびパラメータ(Device Parameter)の領域のみがFFhであった場合、データ設定処理部32は、ここで他の領域をFFhに初期化する。
【0064】
ステップS3において、データ設定処理部32は、システム管理者の指示に基づいてICカード12の外部の装置より供給されるシステム鍵を記憶部31に書き込む。なお、システム管理者がシステム管理者固有のシステム鍵(System Key)を書き込むために、チップベンダは、出荷時に仮のシステム鍵を記憶部31に書き込む。このシステム鍵の書き込みは、デバイスID(Device ID)とパラメータ(Device Parameter)が書き込まれていることが条件となっている。また、通常の場合、システム鍵(System Key)の書き込みは一度しか行えず、書き替えるためには所定の変更手順に従って行う必要がある。ただし、その場合も、システム鍵(System Key)を書き替えるためには、デバイスID(Device ID)、パラメータ(Device Parameter)が書き込まれていること、およびシステム鍵(System Key)領域以外のデータが初期化されている(FFhになっている)ことが条件となる。また、この更新に使う、古いシステム鍵の暗号方式は、メモリに書き込まれているキーフォーマット(Key Format)に従う。キーフォーマット(Key Format)には、暗号アルゴリズムや鍵ビット長の他に、例えば、所定の値をExor(排他的論理和)してから暗号化する、所定回数の暗号化を繰り返す、1回だけ暗号化する等といった暗号方法が記述されている。
【0065】
これ以降の書き込み処理が進んだ状態においては、システム鍵(System Key)の変更は一切できないようになされている。実際の書き込み方法は、外部から所定のフォーマットに従ったデータをセキュリティICに送り込み、それに基づいてシステム鍵(System Key)、システムコード(System Code)、キーフォーマット(Key Format)、およびキーバージョン(Key Version)を書き込ませる。書き込みシーケンスは、上述したデバイスIDおよびパラメータの場合と同様であるが、適宜最適な方法を設定して良い。なお、このときの送信データは暗号化されていない。
【0066】
ステップS4において、データ設定処理部32は、システム管理者の指示に基づいて、ICカード12の外部の装置より供給されるルート鍵を記憶部31に書き込む。なお、このルート鍵(Root Key)の書き込みは、システム鍵(System Key)が書き込まれている場合のみ可能である。これは、ルート鍵(Root Key)の初期書き込みには、システム鍵(System Key)が使用されるからである。実際の書き込み方法は、ICカード12の外部の装置から所定のフォーマットに従ったデータをICカード12のセキュリティICに送り込み、それに基づいてルート鍵(Root Key)を書き込ませる。コマンドは上述した他のステップの場合と同じであるが、図5に示されるように、コマンドに含まれるデータ列51は、システム鍵(System Key)で暗号化したルート鍵(Root Key)を含む。暗号化方法は、システム鍵(System Key)のキーフォーマット(Key Format)に従うものとする。なお、ルート鍵(Root Key)を更新する場合には、更新される前のルート鍵(Root Key)だけが必要となる。つまり、ルート鍵(Root Key)の更新時にはシステム鍵(System Key)は(鍵としては)使用されない。
【0067】
ここまでの処理は、システム管理者またはチップベンダ等が指示することになっていることと、ここまで処理が進まない間は、これを組み込んだ製品そのものが動作しないことから、比較的安全なところで処理が行えることが期待できる(仮に、ルート鍵(Root Key)を未実装で製品に組み込む場合も、その後、安全な場所でルート鍵(Root Key)の書き込みを確実に行うことができるものとする)。このため、鍵の書き込みメカニズムは比較的簡易にしてある。
【0068】
ステップS5において、ディレクトリを作成したい事業者は、システム管理者に依頼してディレクトリ生成チケットを作成してもらう。このディレクトリ生成チケットには、ディレクトリ情報及びアプリケーション情報を設定するのに必要なデータをルート鍵で暗号化したものと、システム鍵(System Key)を用いて生成されたICV(Integrity Check Value)が含まれている。このようになされる理由は、この時点では相互認証ができないことと、システム管理者の許諾なく、ルート直下にディレクトリを作成させないためである。なお、キーバージョン(Key Version)は00 00hとされ、ディレクトリ鍵(DirectoryKey)、アプリケーションID(Application ID)及びアプリケーション鍵(Application Key)は固定データとなる。必要に応じてステップS7で事業者が書き換えるものとする。
【0069】
ステップS6において、サービスを提供したい事業者は、ステップS5でシステム管理者が生成したディレクトリ生成チケットを受領し、このディレクトリ生成チケットをデータ設定処理部32に送ってディレクトリを仮作成する。これにより、自身のサービスを提供するためのディレクトリがICカード12に仮作成される。
【0070】
データ設定処理部32は、受領したディレクトリ生成チケットのICVをシステム鍵で検証し、ICVが正当か否かを判定する。正当でないと判定された場合には、ディレクトリの生成は行われない。ICVが正当と判断された場合、ディレクトリ生成チケットに書かれているディレクトリ情報及びアプリケーション情報をルート鍵で復号化し、これらのデータを記憶部31に書き込む。
【0071】
ステップS7において、サービスを提供したい事業者は、仮作成されたディレクトリの内、必要な情報(ディレクトリ鍵(DirectoryKey)、アプリケーションID(Application ID)及びアプリケーション鍵(Application Key))を書き換える処理を行う。
【0072】
このために、まず、情報処理端末11とICカード12間で相互認証を行う。相互認証の方法に関しては後述する。相互認証が終了した後、情報処理端末11からICカード12に対し、ディレクトリ鍵(Directory Key)変更コマンドを送信する。ディレクトリ鍵(Directory Key)変更コマンドには、付随データとして、新しい鍵のキーバージョン(Key Version)と、古いディレクトリ鍵(Directory Key)で暗号化された、新しいディレクトリ鍵(Directory Key)が含まれている。これを受信したICカード12は、変更するディレクトリのディレクトリ鍵(Directory Key)を読み出し、この鍵でコマンドに添付されてきたデータを復号化する。そして、得られた新しいディレクトリ鍵(Directory Key)で古いディレクトリ鍵(Directory Key)を書き換え、キーバージョン(Key Version)を更新する。
【0073】
同様に、情報処理端末11とICカード12間で相互認証を行い、相互認証が終了した後、情報処理端末11からICカード12に対し、アプリケーション情報変更コマンドを送信する。アプリケーション情報変更コマンドには、付随データとして新しい鍵のキーバージョン(Key Version)、アプリケーションID(Application ID)及びアプリケーション鍵(Application Key)が含まれている。ただし、アプリケーションID(Application ID)は、情報処理端末11で新たに割り振ることとし、このIDとアプリケーション鍵(Application Key)を生成するためのマスタ鍵とからアプリケーションID(Application ID)に対応するアプリケーション鍵(Application Key)を生成することとする。
【0074】
次に、これを受信したICカード12は、受信したアプリケーションID(Application ID)及びアプリケーション鍵(Application Key)を書き換え、キーバージョン(Key Version)を更新する。
【0075】
なお、通常、この情報処理端末11は鍵変更処理専門の端末であり、複数のICカードの鍵を変更し、これらの情報を管理している。従って、この情報処理端末11は、アプリケーションID(Application ID)を系統的に割り振って管理することが可能である。
【0076】
また、アプリケーション情報変更処理時に別途相互認証すると説明したが、上記ディレクトリ鍵(Directory Key)変更処理に引き続き行う場合には不要である。
【0077】
一方、後述するように、相互認証を終了した情報処理端末11とICカード12は、以降の通信路をセッション鍵で暗号化して秘匿化することができ、かつメッセージを改ざん防止できるよう整合性チェックを行っている。このため、更新するための新しいディレクトリ鍵を情報処理端末11内部に保持していても、通信路上で漏洩する心配はない。しかし、情報処理端末11が安全に管理される保証はないため、念のため古いディレクトリ鍵で更新する新しいディレクトリ鍵を暗号化しておくこととする。一方で、新しいアプリケーション鍵は古いアプリケーション鍵で暗号化しておくことはしていない。これは、情報処理端末11にアプリケーション鍵を生成するためのマスタ鍵が記憶されており、鍵更新時にアプリケーション鍵の生成を行っていることと(あらかじめ古いアプリケーション鍵で暗号化しておくことができない)、仮に情報処理端末11が安全に管理されなかった場合、このマスタ鍵が漏洩することになり、そこまで対策しても効果が薄いからである。
【0078】
また、事業者は、上位ディレクトリ(Directory)が生成されている場合、ルートディレクトリ直下でなくても、その上位ディレクトリの下に新規サブディレクトリ(Sub-Directory)を生成することができる。この時、サブディレクトリ(Sub-Directory)のディレクトリ鍵(Directory Key)とアプリケーションID(Application ID)、およびアプリケーション鍵(Application Key)も書き込まれる。実際の書き込み方法は、システム鍵(System Key)、ルート鍵(Root Key)、および上位のディレクトリのディレクトリ鍵(Directory Key)、上位のディレクトリのアプリケーション鍵(Application Key)で相互認証を行い、所定のフォーマットに従ったデータをセキュリティICに送り込んで行う。サブディレクトリのディレクトリ鍵(Sub-Directory Key)は、上位のディレクトリのディレクトリ鍵(Dirctory Key)で暗号化されているため、比較的安全である。サブディレクトリのアプリケーションID(Application ID)とアプリケーション鍵(Application Key)は、予め設定しておくことが困難であるため、事前に上位ディレクトリのディレクトリ鍵(Directory Key)で暗号化しておくことができない。そのため、セッション鍵で保護するものとする。
【0079】
なお、本例ではサブディレクトリ生成のための所定フォーマットコマンドを使用するとしたが、必要に応じてサブディレクトリ生成のためのアクセス許諾チケットを定義し、それを用いて行うようにしても良い。ただし、アクセス許諾チケットは事前生成が前提にもかかわらず、アプリケーション鍵が事前に生成することは難しく、所定のフォーマットコマンドを使用する方法の方が容易に実現可能である。
【0080】
所定のフォーマットコマンドを使用する場合、相互認証後、アプリケーションIDを生成し、マスタ鍵でアプリケーション鍵を生成し、上位ディレクトリの鍵で暗号化されたサブディレクトリのディレクトリ鍵とアプリケーションID、アプリケーション鍵、その他必要な情報(バージョン等)をセッション鍵で秘匿化してICカードに送るようにする。
【0081】
これに対して、アクセスチケットを使用する場合、予めアプリケーションIDを生成しておき、それに対するアプリケーション鍵もマスタ鍵から作っておく。これら一連のデータとサブディレクトリのディレクトリ鍵を上位ディレクトリのディレクトリ鍵で暗号化し、これを包含したアクセス許諾チケットを作るようにする。ただし、アクセス許諾チケットに付けるICVを生成する鍵を何にするか、検討する必要がある。通常は、アクセス制御鍵を使うのだが、ディレクトリにはその鍵はない(ファイルに対して作られているため)。そのため、暫定的にICVも上位ディレクトリのディレクトリ鍵で生成する方法が考えられる。
【0082】
ステップS8において、データ設定処理部32は、事業者の指示に基づいて、ディレクトリ内にファイル(File)を作成する。ディレクトリが作成されていれば、事業者は、ファイルアクセス方法を規定し、それに対応するデータをファイルとして記憶部31に書き込ませることができる。実際のファイル生成方法は、事業者が、システム鍵(System Key)、ルート鍵(Root Key)、ディレクトリ鍵(Directory Key)、およびアプリケーション鍵(Application Key)を用いて相互認証を行い、所定のフォーマットに従ったデータをセキュリティICに送り込んで行う。なお、アクセス制御鍵はディレクトリ鍵で暗号化されているため、比較的安全である。また、ディレクトリ鍵で暗号化されたアクセス制御鍵を含む、システムブロック情報(アクセスモード、アクセスコード、スタート・エンドアドレス、ディレクトリコード等)は、セッション鍵で暗号化されて送り込まれる。
【0083】
なお、サブディレクトリの生成時と同様に、必要に応じてファイル生成のためのアクセス許諾チケットを定義し、それを用いて行うようにしても良い。
【0084】
ステップS9において、データ設定処理部32は、事業者の指示に基づいて、アクセス制御鍵を書き込む。ステップS8で説明したように、アクセス制御鍵(Access Control Key)は、生成されるファイルが所属するディレクトリのディレクトリ鍵(Directory Key)で暗号化しておくものとする。
【0085】
以上のようにして、例えば、図2に示されるように、記憶部31内に各種データが書き込まれる。
【0086】
次に、記憶部31に記憶される上述した各種情報の更新方法(変更方法)について説明する。
【0087】
システム鍵(System Key)を変更するためには、デバイスID(Device ID)、パラメータ(Device Parameter)、およびシステム鍵(System Key)領域以外が書き込まれていない必要がある。実際には、この、所定の領域以外書き込まれていない状態で、ICカード12の外部の機器から、所定のフォーマットに従ったデータがセキュリティICに送り込まれ、それに基づいてシステム鍵(System Key)が変更される。このときのコマンドは鍵変更コマンドとして定義される。また、図7に示されるように、そのコマンドに含まれるデータ列53には、新しいシステム鍵(System Key)を古いシステム鍵(System Key)で暗号化したものが含まれる。古いシステム鍵(System Key)の暗号方式は、ICカード12のメモリ内に書き込まれているシステム鍵(System Key)のキーフォーマット(Key Format)に従って使用される。なお、鍵変更コマンドに添付されるデータには、新しいシステム鍵だけでなく、新しいシステム鍵の鍵フォーマット(Key Format)や鍵バージョン(Key Version)が含まれる。以降、全ての鍵更新コマンドにおいて同様である。
【0088】
ルート鍵(Root Key)を変更するためには、ルート鍵(Root Key)が書き込まれている必要がある。Root Keyが書き込まれている条件で、この鍵が変更できる。実際には、この状態でICカード12の外部の機器から、所定のフォーマットに従ったデータがセキュリティICに送り込まれ、それに基づいてルート鍵(Root Key)が変更される。このときコマンドは鍵変更コマンドとして定義される。また、そのコマンドに含まれるデータ列には、例えば、図8Aに示されるように、新しいルート鍵(Root Key)54Aを古いルート鍵(Root Key)54Bで暗号化した第一のデータと、図8Bに示されるように、システム鍵(System Key)54Cを古いルート鍵(Root Key)54Bで暗号化し、それをさらに再度新しいルート鍵(Root Key)54Aで暗号化した第二のデータが含まれる。古いルート鍵(Root Key)の暗号方式は、ICカード12のメモリ内に書き込まれているルート鍵(Root Key)のキーフォーマット(Key Format)に従って使用される。新しいルート鍵の暗号方式は、鍵更新コマンドに添付されている新しいルート鍵のキーフォーマット(Key Format)に従って使用される。なお、鍵変更コマンドに添付されるデータには、新しいルート鍵だけではなく、新しいルート鍵の新しい鍵の(Key Format)や鍵バージョン(Key Version)が含まれるものの、ディレクトリコード(Directory Code)である「00 00 00 00h」、開始アドレス、終了アドレス、およびトータルのブロック数などは、変更されることが想定されていないため、含まれていなくてもよい。ただし、これらのデータを含めるようにしてもいっこうに差し支えない。
【0089】
ところで、なぜ2つの暗号化されたデータを使用するかというと、ルート鍵(Root Key)の変更には相互認証が使えないこと、および、アクセス許諾チケットが使えないことが理由である。そのため、悪意の第三者が、リーダライタ等を用いて適当なデータを「新しいルート鍵(Root Key)を古いルート鍵(Root Key)で暗号化したもの」としてICカードに送り込んでしまうと、ICカードはデータが正しいか否かを判断できず、不正な鍵に変更してしまうというリスクがある。そこで、システム鍵(System Key)を古いルート鍵(Root Key)(これはシステム管理者等が知っている)で暗号化し、その結果を更に新しいルート鍵(Root Key)(これもシステム管理者等は知っている)で暗号化し、このデータも付加するようにした。セキュリティICでは、第一のデータを古いルート鍵(Root Key)で復号して新しいルート鍵(Root Key)を取得し、この鍵で第二のデータを復号し、その出力を再度古いルート鍵(Root Key)で復号化する。その結果がシステム鍵(System Key)に一致していた場合に、正しいシステム管理者が処理していると判定して鍵の変更を行うようにする。
【0090】
また、ディレクトリ鍵(Directory Key)の変更は、ディレクトリが生成されていれば可能である。実際には、この状態で認証鍵(System Key、Root Key、Directory Key、Application Keyを使用)の生成を行い、必要なデータをセキュリティICに送り込んで行う。コマンドはディレクトリ鍵変更コマンドとして定義され、図9に示されるように、コマンドに含まれるデータ列55には、新しいディレクトリ鍵(Directory Key)を古いディレクトリ鍵(Directory Key)で暗号化したものが含まれる。また、必要に応じて、ここに新しい鍵のキーバージョン(Key Version)を含めるようにしても良い。これを受信したICカード12は、変更するディレクトリのディレクトリ鍵(Directory Key)を読み出し、この鍵でコマンドに添付されてきたデータを復号化する。そして、得られた新しいディレクトリ鍵(Directory Key)で古いディレクトリ鍵(Directory Key)を書き換え、キーバージョン(Key Version)を更新する。
【0091】
同様に、アプリケーションID(Application ID)とアプリケーション鍵(Application Key)の変更は、ディレクトリが生成されていればよい(片方だけ変更することは通常ない)。実際には、この状態で認証鍵(システム鍵(System Key)、ルート鍵(Root Key)、ディレクトリ鍵(Directory Key)、およびアプリケーション鍵(Application Key)が使用される)の生成を行い、必要なデータをセキュリティICに送り込んで行う。コマンドはアプリケーション鍵変更コマンドとして定義され、コマンドに含まれるデータ列には、非暗号化アプリケーションID(Application ID)/非暗号化アプリケーション鍵(Application Key)が含まれている。また、必要に応じて、ここに新しい鍵のキーバージョン(Key Version)を含めるようにしても良い。ただし、アプリケーションID(Application ID)は、ICカード12の外部の機器で新たに割り振ることとし、このIDとアプリケーション鍵(Application Key)を生成するためのマスタ鍵とからアプリケーションID(Application ID)に対応するアプリケーション鍵(Application Key)を生成することとする。
【0092】
次に、これを受信したICカード12は、受信したアプリケーションID(Application ID)及びアプリケーション鍵(Application Key)を書き換え、キーバージョン(Key Version)を更新する。
【0093】
なお、通常、このICカード12の外部の機器は、鍵変更処理専門の端末であり、複数のICカードの鍵を変更し、これらの情報を管理している。従って、この鍵変更処理専門の端末は、アプリケーションID(Application ID)を系統的に割り振って管理することが可能である。
【0094】
また、アプリケーション情報変更処理時に認証鍵を生成すると説明したが、上記ディレクトリ鍵(Directory Key)変更処理に引き続き行う場合には不要である。
【0095】
一方、後述するように、相互認証を終了した鍵変更処理専門の端末とICカード12は、以降の通信路をセッション鍵で暗号化して秘匿化することができ、かつメッセージを改ざん防止できるよう整合性チェックを行っている。このため、更新するための新しいディレクトリ鍵を鍵変更処理専門の端末内部に保持していても、通信路上で漏洩する心配はない。しかし、鍵変更処理専門の端末が安全に管理される保証はないため、念のため古いディレクトリ鍵で更新する新しいディレクトリ鍵を暗号化しておくこととする。一方で、新しいアプリケーション鍵は古いアプリケーション鍵で暗号化しておくことはしていない。これは、鍵変更処理専門の端末にアプリケーション鍵を生成するためのマスタ鍵が記憶されており、鍵更新時にアプリケーション鍵の生成を行っていることと(あらかじめ古いアプリケーション鍵で暗号化しておくことができない)、仮に鍵変更処理専門の端末が安全に管理されなかった場合、このマスタ鍵が漏洩することになり、そこまで対策しても効果が薄いからである。
【0096】
なお、本例では各種鍵変更のための所定フォーマットコマンドを使用するとしたが、必要に応じて各種鍵変更のためのアクセス許諾チケットを定義し、それを用いて行うようにしても良い。
【0097】
アクセス制御鍵(Access Control Key)の変更は、ファイルが生成されていれば実行可能である。実際には、この状態で認証鍵(システム鍵(System Key)、ルート鍵(Root Key)、ディレクトリ鍵(Directory Key)、およびアプリケーション鍵(Application Key)が使用される)の生成を行い、必要なデータをセキュリティICに送り込んで行う。コマンドはアクセス制御鍵変更コマンドとして定義され、図10に示されるように、コマンドに含まれるデータ列56には、新しいアクセス制御鍵(Access Control Key)を古いアクセス制御鍵(Access Control Key)で暗号化したものが含まれる。また、必要に応じて、ここに新しい鍵のキーバージョン(Key Version)を含めるようにしても良い。これを受信したICカード12は、変更するファイルのアクセス制御鍵(Access Control Key)を読み出し、この鍵でコマンドに添付されてきたデータを復号化する。そして、得られた新しいアクセス制御鍵(Access Control Key)で古いアクセス制御鍵(Access Control Key)を書き換え、キーバージョン(Key Version)を更新する。なお、アクセス制御鍵(Access Control Key)の変更はアプリケーション鍵(Application Key)変更時と異なり、事前にデータ列を用意することができることと、物理セキュリティリスクがあることから、データを暗号化しておくこととした。このため、本例ではアクセス制御鍵変更のための所定フォーマットコマンドを使用するとしたが、必要に応じてサアクセス制御鍵変更のためのアクセス許諾チケットを定義し、それを用いて行うようにしても良い(このチケットは事前に作成できる)。
【0098】
相互認証後、情報処理端末11とICカード12との間でセッション鍵が共有化される。通信されるパケットは全てセッション鍵で暗号化されると共に、改ざん防止用としてメッセージ認証用のデータが付加される。OMAC(One-Key CBC MAC)は、CBC MAC(Cipher Block Chaining Message Authentication Code)の変種としてが知られている。もしくはCCM(Counter with CBC-MAC)を用いるようにしてもよい。
【0099】
図1の通信システム1において、情報処理端末11およびICカード12は、通信を行うためにセッションを確立する。情報処理端末11およびICカード12は、通信開始時において、そのセッションの確立のために、お互いを認証させる相互認証処理を行う。
【0100】
図11および図12のフローチャートを参照して、その相互認証処理の流れの例を説明する。なお、必要に応じて、図13乃至図16を参照して説明する。また、ここでは、説明の便宜上、図2の情報処理端末11−1−1およびICカード12−1が相互認証処理を行う場合を例に説明する。
【0101】
相互認証処理が開始されると、情報処理端末11−1−1の認証処理部23は、ステップS21において、乱数生成部25を制御して第一の乱数を生成する。
【0102】
ステップS22において、認証処理部23は、通信部28を制御して、第一の相互認証開始コマンドを、情報処理端末11−1−1のID(ID1−1)、アクセスするディレクトリを示すアクセス先ディレクトリ情報、および、ステップS21の処理において生成された第一の乱数とともに、ICカード12−1に送信させる。なお、アクセス先ディレクトリ情報においては、アクセス先のディレクトリが例えばディレクトリコード(Directory Code)によって示される。もちろん、アクセス先のディレクトリを特定することができる情報であれば、ディレクトリコード(Directory Code)以外の情報を用いるようにしてもよい。なお、ここではアクセス先ディレクトリの一例として、ディレクトリ1−1とディレクトリ1−2が指定されたものとして説明する。
【0103】
ステップS31において、ICカード12−1の通信部38は、この第一の相互認証開始コマンド等を取得する。第一の相互認証開始コマンドを取得すると、認証処理部33のマスタ鍵生成部41は、ステップS32において、相互認証の相手となる情報処理端末11(この場合、情報処理端末11−1−1)固有の鍵(この場合、鍵K1−1)を生成するための鍵情報であるマスタ鍵(この場合、マスタ鍵MK1−IT)を生成する処理を行う。マスタ鍵の生成は、第一のデータ、ルート鍵、および、アクセス先に指定されたディレクトリのディレクトリ鍵を縮退することにより生成される。
【0104】
より具体的な例は、図13に示される。図13に示されるように、マスタ鍵生成部41は、暗号化処理部(AES)61乃至暗号化処理部(AES)63の機能ブロックを有する。暗号化処理部(AES)61は、暗号化部36を制御し、第一のデータとしてシステム鍵(KSystem)をルート鍵(KRoot)を用いてAES(Advanced Encryption Standard)方式で暗号化させ、第二のデータを生成する。暗号化処理部(AES)62は、暗号化部36を制御し、その第二のデータをディレクトリ1−1のディレクトリ鍵(DirK1−1)を用いてAES方式で暗号化させる。暗号化処理部(AES)63は、暗号化部36を制御し、暗号化処理部(AES)62による暗号化結果をディレクトリ1−2のディレクトリ鍵(DirK1−2)を用いてAES方式で暗号化させ、マスタ鍵(MK1−IT)を生成する。なお、AESの代わりに、DES(Data Encryption Standard)等、その他の共通鍵暗号化方式を用いるようにしてもよい。
【0105】
このマスタ鍵生成処理の詳細な流れについては、後述する。マスタ鍵が生成されると認証処理部33は、ステップS33において、暗号化部36を制御し、情報処理端末11−1−1のID(ID1−1)を、ステップS32の処理により生成されたマスタ鍵(MK1−IT)を用いて暗号化させ、情報処理端末11−1−1固有の鍵(K1−1)を生成する。
【0106】
具体的な例を図14に示す。図14に示されるように、認証処理部33は、暗号化処理部(AES)71の機能ブロックを有する。暗号化処理部(AES)71は、暗号化部36を制御し、情報処理端末11−1−1のID(ID1−1)をマスタ鍵(MK1−IT)を用いてAES方式で暗号化させ、情報処理端末11−1−1固有の鍵(K1−1)を生成する。
【0107】
なお、この場合も、AESの代わりに、DES等、その他の共通鍵暗号化方式を用いるようにしてもよい。また、本例では暗号化する例で説明したが、ステップS32の処理により生成されたマスタ鍵(MK1−IT)を用いて情報処理端末11−1−1のID(ID1−1)を復号化し、情報処理端末11−1−1固有の鍵(K1−1)を生成しても良い。あるいは、所定の固定値を情報処理端末11−1−1のID(ID1−1)に対してEXORするなどして演算した後、ステップS32の処理により生成されたマスタ鍵(MK1−IT)を用いて暗号化させて生成するようにしても良い。このように、情報処理端末11−1−1に保持されている固有の鍵(K1−1)が復元できさえすれば、どのような演算方法を用いてもかまわない。
【0108】
この鍵K1−1は、情報処理端末11−1−1固有の鍵である。図2の例において、事業者1の情報処理端末11−1−2には、情報処理端末11−1−1に割り当てられたID(ID1−1)と異なるID(ID1−2)が書き込まれているため、同じ情報処理端末用マスタ鍵(MK1−IT)を用いても、情報処理端末11−1−1固有の鍵(K1−1)とは異なる情報処理端末11−1−2固有の鍵(K1−2)が生成される。
【0109】
ステップS34において、認証処理部33は、暗号化部36を制御し、アクセス先に指定されたディレクトリに書き込まれたアプリケーションID(AppID1−1とAppID1−2)を情報処理端末11−1−1固有の鍵(K1−1)で暗号化させ、第一の返信文を作成する。このとき、アプリケーションID(AppID)の使用順は、情報処理端末11−1−1より供給されたアクセス先ディレクトリ情報に従う。なお、このときの暗号化方法は、CBC(Cipher Block Chaining)モード等の暗号利用モードを用いることとする。また、本例では暗号化することを示していたが、復号するようにしてもよい。この場合、この第一の返信文を受け取った情報処理端末11−1−1側では、同一の鍵を用いて暗号化する必要がある。
【0110】
第一の返信文を生成した後、認証処理部33は、ステップS35において、相互認証に利用される認証鍵(KAuth)の生成を行う。認証処理部33は、暗号化部36を制御し、情報処理端末11−1−1固有の鍵(K1−1)を、アクセス先に指定されたディレクトリに書き込まれたアプリケーション鍵(AppK1−1およびAppK1−2)を用いて暗号化させて認証鍵(KAuth)を生成する。このような処理を鍵の縮退化とする。
【0111】
具体的な例を図15に示す。図15に示されるように、認証処理部33は、暗号化処理部(AES)81および暗号化処理部(AES)82の機能ブロックを有する。暗号化処理部(AES)81は、暗号化部36を制御し、情報処理端末11−1−1固有の鍵(K1−1)を、アクセス先に指定されたディレクトリ1−1に書き込まれているアプリケーション鍵(AppK1−1)を用いてAES方式で暗号化させる。暗号化処理部(AES)82は、暗号化部36を制御し、暗号化処理部(AES)81による暗号化結果を、アクセス先に指定されたディレクトリ1−2に書き込まれているアプリケーション鍵(AppK1−2)を用いてさらにAES方式で暗号化させる。この暗号化処理部(AES)82による暗号化結果が認証鍵(KAuth)とされる。
【0112】
なお、アプリケーション鍵(AppK)の使用順は、情報処理端末11−1−1より供給されたアクセス先ディレクトリ情報に従う。また、この場合も、AESの代わりに、DES等、その他の共通鍵暗号化方式を用いるようにしてもよい。
【0113】
ステップS36において、認証処理部33は、乱数生成部35を制御して第二の乱数を生成する。ステップS37において、認証処理部33は、認証鍵(KAuth)を暗号鍵とし、暗号化部36を制御して、この第二の乱数、情報処理端末11−1−1から送られてきた第一の乱数、および、情報処理端末11−1−1のID(ID1−1)を所定の暗号利用モードで暗号化し、第二の返信文を生成する。なお、第二の乱数、第一の乱数、および、情報処理端末11−1−1のID(ID1−1)は、予め定められた所定の順序で暗号化される。
【0114】
ここで、本例では第一の返信文は情報処理端末11−1−1固有の鍵(K1−1)で暗号化させて生成し、第二の返信文は認証鍵(KAuth)で暗号化させて生成していたが、暗号化された第一の返信文及び暗号化前の第二の返信文を、認証鍵(KAuth)を用いて、所定の暗号利用モードで一括して暗号化するようにしても良い。更にまた、第二の返信文に情報処理端末11−1−1のID(ID1−1)を含ませていたが、これ(情報処理端末11−1−1のID)以外のデータを利用するようにしても良い。
【0115】
ステップS38において、ICカード12−1の認証処理部33は、通信部38を制御して、相互認証開始コマンドに対するレスポンスとして、第一の返信文と第二の返信文を、情報処理端末11−1−1に返信させる。ステップS38の処理を終了すると、ICカード12−1の認証処理部33は、図12のステップS51に処理を進める。
【0116】
また、情報処理端末11−1−1の通信部28は、ステップS23においてそのレスポンス(第一の返信文と第二の返信文)を受信すると、処理を図12のステップS41に進める。
【0117】
図12のステップS41において、情報処理端末11−1−1の認証処理部23は、復号部27を制御し、予め記憶部21に記憶されている情報処理端末11−1−1固有の鍵(K1−1)を用いて第一の返信文を、利用された暗号化方法に対応する復号方法で復号させ、アプリケーションID(AppID1−1とAppID1−2)を取り出す。ステップS42において、認証処理部23は、予め記憶部21に記憶されているマスタ鍵(MK1−IC)を用いてアプリケーションID(AppID1−1)暗号化することによりアプリケーション鍵(AppK1−1)を生成し、さらに、マスタ鍵(MK1−IC)を用いてアプリケーションID(AppID1−2)を暗号化することによりアプリケーション鍵(AppK1−2)を生成する。
【0118】
具体的な例を図16に示す。図16に示されるように、認証処理部33は、暗号化処理部(AES)91の機能ブロックを有する。暗号化処理部(AES)91は、暗号化部26を制御し、ディレクトリ1−1のアプリケーションID(AppID1−1)を、マスタ鍵(MK1−IC)を用いてAES方式で暗号化してアプリケーション鍵(AppK1−1)を生成する。なお、図示は省略するが、この暗号化処理部(AES)91は、アプリケーション鍵(AppK1−1)の場合と同様に、暗号化部36を制御し、ディレクトリ1−2のアプリケーションID(AppID1−2)を、マスタ鍵(MK1−IC)を用いてAES方式で暗号化してアプリケーション鍵(AppK1−2)を生成する。
【0119】
なお、この場合も、AESの代わりに、DES等、その他の共通鍵暗号化方式を用いるようにしてもよい。また、例えば、ディレクトリ毎にマスタ鍵が異なる場合、各アプリケーションIDの暗号化は、それぞれのアプリケーションIDが対応するディレクトリのマスタ鍵を用いて行われるようにする。つまり、ディレクトリ1−1のアプリケーション鍵(AppK1−1)は、ディレクトリ1−1のアプリケーションID(AppID1−1)を、ディレクトリ1−1用のマスタ鍵(MK1−IC1)を用いて生成し、ディレクトリ1−2のアプリケーション鍵(AppK1−2)は、ディレクトリ1−2のアプリケーションID(AppID1−2)を、ディレクトリ1−2用のマスタ鍵(MK1−IC2)を用いて生成する、などの方法である。
【0120】
ステップS43において、認証処理部23は、暗号化部26を制御して、情報処理端末11−1−1固有の鍵(K1−1)を、ステップS42で生成したアプリケーション鍵(AppK1−1およびAppK1−2を用いて暗号化させ、認証鍵(KAuth)を生成する。この認証鍵(KAuth)の生成方法は、ICカード12において実行されるステップS35の処理の場合と同様に実行される。つまり、図15を参照して行った説明は、このステップS43における認証鍵生成の説明にも適用することができる。つまり、認証処理部23も、図15に示されるように、暗号化処理部(AES)81および暗号化処理部(AES)82の機能ブロックを有し、その暗号化処理部(AES)81は、暗号化部26を制御し、情報処理端末11−1−1固有の鍵(K1−1)をアプリケーション鍵(AppK1−1)を用いてAES方式で暗号化させ、暗号化処理部(AES)82は、暗号化部26を制御し、暗号化処理部(AES)81による暗号化結果をアプリケーション鍵(AppK1−2)を用いてさらにAES方式で暗号化させる。この暗号化処理部(AES)82による暗号化結果が認証鍵(KAuth)とされる。
【0121】
なお、アプリケーション鍵(AppK)の使用順は、アクセス先ディレクトリ情報において定義されるとおり(復号されたディレクトリID順)とする。また、この場合も、AESの代わりに、DES等、その他の共通鍵暗号化方式を用いるようにしてもよい。
【0122】
ステップS44において、認証処理部23は、復号部27を制御し、ICカード12−1より取得した第二の返信文を復号させ、第二の乱数、第一の乱数、および情報処理端末11−1−1固有のID(ID1−1)を取り出す。
【0123】
ステップS45において、認証処理部23は、取り出した第一の乱数によりICカード12−1の認証を行う。仮に、ICカード12−1より取得した第二の返信文を復号して得られた第一の乱数が、ICカード12−1に供給した第一の乱数と一致する(同一である)場合、ICカード12−1においても同一の認証鍵が生成されていることになる。つまり、ICカード12−1が、第一のデータ、ルート鍵(KRoot)、ディレクトリ鍵(DirK1−1およびDirK1−2)、アプリケーション鍵(AppK1−1およびAppK1−2)を保持している蓋然性が高い。従って、認証処理部23は、相手(ICカード12−1)を認証してもよいと判断することができる。逆に、第一の乱数が正しくない(一致しない)場合、認証処理部23は、ICカード12−1は不正であると判定することとなる。
【0124】
つまり、認証処理部23は、第二の返信文より取り出した第一の乱数が図7のステップS21において生成した第一の乱数と一致するか否かを判定することにより、ICカード12−1を認証するか否かを判定する。そして、2つの第一の乱数の値が互いに一致した場合、認証処理部23は、ICカード12−1を認証する。逆に、2つの第一の乱数の値が互いに一致しなかった場合、認証処理部23は、ICカード12−1が不正であると判定し、相互認証処理をエラー終了する。つまり、この場合、情報処理端末11−1−1とICカード12−1との間の相互認証が行われないので、通信の確立に失敗する。
【0125】
2つの第一の乱数の値が互いに一致し、ICカード12−1が認証されると、認証処理部23は、ステップS46において、乱数生成部25を制御して乱数を生成させ、その乱数をセッション鍵とする。このセッション鍵は、相互認証完了後の通信路の秘匿化に使用される。
【0126】
ステップS47において、認証処理部23は、第一の乱数、第二の乱数、および、生成したセッション鍵を、認証鍵(KAuth)で暗号化する。暗号化は所定の暗号利用モードで行うこととする。なお、暗号化の順はこれに限らず任意である。
【0127】
ステップS48において、認証処理部23は、通信部28を制御して、第二の相互認証コマンドを、認証鍵(KAuth)で暗号化された第一の乱数、第二の乱数、およびセッション鍵と共にICカード12−1に送信させる。ICカード12−1の通信部38は、ステップS51において、この第二の相互認証コマンドと、認証鍵(KAuth)で暗号化された第一の乱数、第二の乱数、およびセッション鍵を取得する。
【0128】
ステップS52において、ICカード12−1の認証処理部33は、復号部37を制御し、認証鍵(KAuth)を用いて認証鍵(KAuth)で暗号化された第一の乱数、第二の乱数、およびセッション鍵を復号させる。
【0129】
ステップS53において、認証処理部33は、取り出した第二の乱数により情報処理端末11−1−1の認証を行う。仮に、情報処理端末11−1−1より取得した第二の乱数が、図11のステップS36の処理において生成された第二の乱数と一致する(同一である)場合、情報処理端末11−1−1においても同一の認証鍵が生成されていることになる。つまり、情報処理端末11−1−1が情報処理端末11−1−1固有の鍵K1−1と、ICカード12−1用のマスタ鍵(MK1−IC)を保持している蓋然性が高い。従って、認証処理部33は、相手(情報処理端末11−1−1)を認証してもよいと判断することができる。逆に、第二の乱数が正しくない(一致しない)場合、認証処理部33は、情報処理端末11−1−1が不正であると判定することとなる。
【0130】
つまり、認証処理部33は、第二の相互認証コマンドともに供給された第二の乱数が、図11のステップS36において生成した第二の乱数と一致するか否かを判定することにより、情報処理端末11−1−1を認証するか否かを判定する。そして、2つの第二の乱数の値が互いに一致した場合、認証処理部33は、情報処理端末11−1−1を認証する。逆に、2つの第二の乱数の値が互いに一致しなかった場合、認証処理部33は、情報処理端末11−1−1が不正であると判定し、相互認証処理をエラー終了する。つまり、この場合、情報処理端末11−1−1とICカード12−1との間の相互認証が行われないので、通信の確立に失敗する。
【0131】
2つの第二の乱数の値が互いに一致し、情報処理端末11−1−1が認証されると、認証処理部33は、ステップS54において、通信部38を制御し、その認証結果をレスポンスとして送信させ、相互認証処理を正常終了する。
【0132】
ステップS49において、情報処理端末11−1−1の通信部28は、そのレスポンス取得し、相互に認証されたことを把握し、相互認証処理を正常終了する。
【0133】
以上のようにして、相互に相手が認証されると、それ以降の電文は、全てセッション鍵により暗号化されて送受信される。
【0134】
次に、図11のステップS32において実行されるマスタ鍵生成処理の詳細な流れの例を図17のフローチャートを参照して説明する。
【0135】
マスタ鍵生成処理が開始されると、マスタ鍵生成部41は、ステップS71において、情報処理端末11−1−1より供給されたアクセス先ディレクトリ情報に基づいて、マスタ鍵(MK1−IT)の生成に使用するディレクトリ鍵(DirK1−1およびDirK1−2)を取得する。ステップS72において、マスタ鍵生成部41は、アクセス先ディレクトリ情報に示される順に、マスタ鍵(MK1−IT)の生成に使用するディレクトリ鍵(DirK1−1およびDirK1−2)を整列させる。整列が完了すると、マスタ鍵生成部41は、ステップS73において、まず、第一のデータ(KSystem)をルート鍵(KRoot)で暗号化する。
【0136】
ステップS74において、マスタ鍵生成部41は、ステップS71において取得したディレクトリ鍵(DirK)の中に未使用のディレクトリ鍵(DirK)が存在するか否かを判定し、存在すると判定した場合、ステップS75に処理を進め、次の順のディレクトリ鍵を用いて前回の暗号化結果を暗号化する。暗号化が終了すると、マスタ鍵生成部41は、処理をステップS74に戻す。
【0137】
以上のように、マスタ鍵生成部41は、ステップS74およびステップS75の処理を繰り返し、取得した全てのディレクトリ鍵を用いて暗号化を繰り返す。そして、ステップS74において全てのディレクトリ鍵を使用したと判定した場合、マスタ鍵生成部41は、マスタ鍵生成処理を終了する。
【0138】
つまり、マスタ鍵生成部41は、以上のように暗号化を繰り返すことにより、第一のデータとして利用されるシステム鍵(KSystem)、ルート鍵(KRoot)、取得したディレクトリ鍵を縮退化させてマスタ鍵(MK1−IT)を生成する。
【0139】
なお、以上においては、情報処理端末11−1−1とICカード12−1の間の相互認証処理について説明したが、情報処理端末11−1−2、情報処理端末11−2−1、ICカード12−2等、通信システム1の他のデバイス間の相互認証処理も同様に実行される。
【0140】
以上のように、ICカード12の記憶部31には、ディレクトリ毎にアプリケーションIDが設けられており、各IDは、それぞれが対応する正当な事業者にしか提示されないようになされている。これにより、ユーザのプライバシーを守ることができるようになる。
【0141】
つまり、例えばICカード固有のIDが一つしかない場合、正当な情報処理端末では(事業者によらず)全て同一IDを読み出せてしまい、そのIDをトラッキングすることでユーザの居場所を追跡できてしまうという弊害があった。
【0142】
しかしながら、通信システム1においては、事業者毎にユーザに(ディレクトリ内に)IDを割り振る方式とし、更に、このIDは割り振った事業者のみが知り得る鍵で暗号化して返信することとした。このため、他の事業者ではIDを復号することができなくなった。つまり、自分のお客であるユーザは認識できるが、他のお客は認識できないことになり、他のお客までを含めてトラッキングされることを防止できるようにした。
【0143】
また、共通鍵認証よりも強度的に優れる個別鍵認証技術を導入すると共に、複数のディレクトリにアクセスすることを想定し、アクセス先ディレクトリに応じてディレクトリ鍵等を縮退化させたマスタ鍵を用いることにより、それらを一回の認証手順で処理できるようにした。これにより、認証処理時間を大幅に減らすことができるようになった。
【0144】
さらに、通信システム1においては、認証処理に情報処理端末11のIDを用いるため、仮に情報処理端末11が解析されて不正な情報処理端末11’が作成されたとしても、情報処理端末11’のIDは情報処理端末11のIDと同一になるので、ICカード12側においてそのIDをリボーク(Revoke)用のIDとして保持させておくことにより、ICカード12は、情報処理端末11’によるアクセスを阻止することができる。
【0145】
すなわち、通信システム1(情報処理端末11およびICカード12)は、安全かつ迅速に相互認証処理を行うことができる。
【0146】
以上を通し、相互認証が完了した。相互認証が完了すると、情報処理端末11は、次に、ICカード12に書き込まれているファイルにアクセスする。そのファイルアクセス方法について説明する。なお、本例では複数の主体が出てきても同じであるため、事業者1の情報処理端末11−1−1、ICカード12−1のみを定義するものとするが、当然他の事業者、他の情報処理端末11、他のICカード12が登場してもよい。また、誤解がない場合には、情報処理端末11−1−1を情報処理端末11、ICカード12−1をICカード12と表記する場合がある。
【0147】
情報処理端末11−1−1がファイルにアクセスするためには、ICカード12−1よりファイルアクセスの許諾を受けなければならない。正当な情報処理端末11には、予めアクセス許諾に必要な情報を含むアクセス許諾チケットが配布されている。情報処理端末11−1−1は、そのアクセス許諾チケットをICカード12−1に提示することでファイルアクセスの許諾を求める。ICカード12−1は、そのアクセス許諾チケットを検証し、正当なものであればアクセスを許諾する。
【0148】
次に、情報処理端末11−1−1とICカード12−1のそれぞれが有する、このようなアクセス制御に関する情報について、図18を参照して説明する。
【0149】
図18の例において、情報処理端末11−1−1の記憶部21―1−1には、情報処理端末11のID(ID1−1)、情報処理端末固有の鍵(K1−1)、事業者1によるICカード12全般用のマスタ鍵(MK1−IC)、および情報処理端末11−1−1に割り当てられたアクセス許諾チケット(Ticket1−1)が書き込まれている。
【0150】
ICカード12−1の記憶部31−1には、第一のデータ(KSystem)、第三のデータ(KSystem2)、ルート鍵(KRoot)が書き込まれている。第三のデータ(KSystem2)は、基本的に第一のデータ(KSystem)と同様であるものの、システム管理者によって割り当てられる、アクセス許諾チケット生成鍵用のシステム鍵となる。つまり、ICカード12には、認証鍵用のシステム鍵(KSystem)と、アクセス許諾チケット生成鍵用のシステム鍵(KSystem2)の2つのシステム鍵が登録される。これら2つのシステム鍵のフォーマットは任意であり、例えば、暗号化アルゴリズムや鍵長が互いに異なっていてもよいし、統一されていてもよい。また、各システム鍵の値が独立して決定されるようにしてもよいし、一方から他方を算出することができるようにして、片方のシステム鍵をメモリ上に保持しないようにしてもよい。
【0151】
ICカード12−1の記憶部31−1には、さらに、ディレクトリ1−1とディレクトリ1−2が作成されている。ディレクトリ1−1には、ディレクトリ鍵(Dir1−1)、アプリケーションID(AppID1−1)、アプリケーション鍵(AppK1−1)が書き込まれており、さらに、ファイル(File1)と、そのファイル(File1)に対するアクセス方法を定義するアクセス制御鍵(ACK1−1およびACK1−2)が書き込まれている。
【0152】
アクセス制御鍵は、所謂、ファイルに対するパーミッションを設定するものであり、読み出しや書き込み等の、アクセス者によるファイルに対する操作を制限するための鍵情報である。つまり、1つ目のアクセス制御鍵(ACK1−1)は、ファイル(File1)に対するアクセス方法1−1でのアクセスを許可するための鍵情報であり、2つ目のアクセス制御鍵(ACK1−2)は、ファイル(File1)に対するアクセス方法1−2でのアクセスを許可するための鍵情報である。
【0153】
また、ディレクトリ1−2には、ディレクトリ鍵(Dir1−2)、アプリケーションID(AppID1−2)、アプリケーション鍵(AppK1−2)が書き込まれており、さらに、ファイル(File2およびFile3)、その1つ目のファイル(File2)に対するアクセス方法を定義するアクセス制御鍵(ACK2−1、ACK2−2、およびACK2−3)、並びに、2つ目のファイル(File3)に対するアクセス方法を定義するアクセス制御鍵(ACK3−1およびACK3−2)が書き込まれている。
【0154】
図19に、図18に示されるアクセス制御チケット(Ticket1−1)の構成例を示す。
【0155】
アクセス許諾チケット101には、このチケットの使用者を示す情報として情報処理装置11−1−1のID(ID1−1)、アクセス先のファイルおよびアクセス方法(すなわち、アクセス制御鍵)を示すアクセスコードのリスト(アクセスコード:1−2、アクセスコード:2−2、アクセスコード:2−3、アクセスコード:3−1)、および、MACよりなるチェック子が記述されている。
【0156】
つまり、ファイルへのアクセス許諾を求める情報処理端末11−1−1は、誰がどのファイルに対してどのような処理をするかを示すアクセス許諾チケット101をICカード12−1に送信し、ICカード12−1においてそのアクセス許諾チケット101の検証を行い、正当であれば、そのチケットにより要求されるアクセス方法を許諾する。
【0157】
図20のフローチャートを参照してこのようなアクセス制御の処理の流れの例を説明する。必要に応じて図21および図22を参照して説明する。
【0158】
アクセスの許諾を求める情報処理装置11−1−1のファイルアクセス処理部24は、ステップS101において、通信部28を制御して、アクセス許諾チケット(Ticket1−1)を含むファイル許可命令をICカード12−1に対して発行する。この時、命令文をセッション鍵により暗号化するようにしてもよい。ICカード12−1の通信部38は、ステップS111において、そのファイル許可命令を取得する。
【0159】
ファイル許可命令を取得すると、ICカード12−1のファイルアクセス処理部34は、ステップS112において、アクセス許諾チケット(Ticket1−1)に記述されているチケットの使用者のIDを検証する。情報処理端末11−1−1(ID1−1)は、相互認証処理において認証済みであるので、ファイルアクセス処理部34は、アクセス許諾チケット(Ticket1−1)に記述されている使用者IDがこの認証済みのIDと一致するか否かを検証し、一致する場合のみ、アクセス許諾チケット(Ticket1−1)の使用者を認証する。アクセス許諾チケット(Ticket1−1)の使用者のIDが認証済みのIDと一致しない場合、ファイルアクセス処理部34は、このアクセス制御処理を強制終了し、アクセスの許諾要求を拒否する。このため、他の情報処理端末のチケットを不正に使用しても、アクセスは拒否される。
【0160】
なお、認証済みのIDに関わらず、アクセス制御チケットの使用者を許諾させる特別なID(オールマイティID)を設けるようにしてもよい。例えば、所定のIDをオールマイティIDとして予め用意しておき、IDカード12のファイルアクセス処理部34が、アクセス許諾チケットの使用者のIDがこのオールマイティIDである場合、認証済みのIDとの一致不一致に関わらず、使用者を認証するようにすればよい。つまり、このオールマイティIDが使用者のIDとして記述されることにより、そのアクセス制御チケットは、どの情報処理端末11においても使用可能なチケットとなる。
【0161】
アクセス制御チケット(Ticket1−1)の使用者を認証すると、ファイルアクセス処理部34は、ステップS113において、アクセス制御チケット(Ticket1−1)に記述されているアクセスコードが、相互認証処理において情報処理端末11−1−1のアクセス先として認証済みのディレクトリのものであるか否かを確認する。相互認証時に指定したディレクトリ以外のディレクトリのアクセスコードが含まれている場合(すなわち、相互認証時に指定したディレクトリ以外のディレクトリへのアクセスを要求している場合)、ファイルアクセス処理部34は、このアクセス制御処理を強制終了し、アクセスの許諾要求を拒否する。
【0162】
アクセス制御チケット(Ticket1−1)に記述されているアクセスコードが、相互認証処理において情報処理端末11−1−1のアクセス先として認証済みのディレクトリのものである場合、ファイルアクセス処理部34は、アクセス制御処理を継続する。なお、認証済みのディレクトリのアクセスコードと、認証済みでないディレクトリのアクセスコードの両方が含まれている場合、ファイルアクセス処理部34が、このアクセス制御処理を強制終了し、アクセスの許諾要求を拒否するようにしてもよいし、認証済みでないディレクトリのアクセスコードについてのみ拒否し、認証済みのアクセスコードに対しては処理を継続するようにしてもよい。
【0163】
ステップS114において、ファイルアクセス処理部34は、第三のデータ(KSystem2)をルート鍵(KRoot)で暗号化して第四のデータ(System Data)を生成する。
【0164】
図21に示されるように、ファイルアクセス処理部34は、暗号化処理部(AES)111の機能ブロックを有する。暗号化処理部(AES)111は、暗号化部36を制御し、第三のデータとしてシステム鍵(KSystem2)をルート鍵(KRoot)を用いてAES方式で暗号化させ、第四のデータ(System Data)を生成する。なお、暗号化処理部(AES)111が、AESの代わりに、DES等、その他の共通鍵暗号化方式を用いるようにしてもよい。
【0165】
また、ここでは第一のデータと異なるデータを使用したが、第一のデータを使用するようにしてもよい。なお、ここでも第四のデータを事前に計算し、記憶部31に保持しておくようにしてもよい。その場合、ステップS114の処理は省略される。
【0166】
ステップS115において、ファイルアクセス処理部34のアクセス許諾チケット生成鍵生成部42は、第四のデータから、アクセス許諾チケットのチェック子(MAC)を算出するためのアクセス許諾チケット生成鍵を作成する処理を行う。アクセス許諾チケット生成鍵生成部42は、アクセス制御チケット(Ticket1−1)に記述されているアクセスコードに対応するアクセス制御鍵を記憶部31−1より全て読み出し、第四のデータをこれらの鍵を使って順番に暗号化していく。
【0167】
図19の例の場合、アクセス制御チケット(Ticket1−1)には、アクセスコード:1−2、アクセスコード:2−2、アクセスコード:2−3、およびアクセスコード:3−1が記述されている。従って、アクセス許諾チケット生成鍵生成部42は、記憶部31−1よりACK1−2、ACK2−2、ACK2−3、およびACK3−1を取得する。
【0168】
この場合、図22に示されるように、アクセス許諾チケット生成鍵生成部42は、暗号化処理部(AES)121乃至暗号化処理部(AES)124の機能ブロックを有する。暗号化処理部(AES)121は、暗号化部36を制御し、第四のデータ(System Data)を、ACK1−2を用いてAES方式で暗号化させる。暗号化処理部(AES)122は、暗号化部36を制御し、暗号化処理部(AES)121による暗号化結果を、ACK2−2を用いてAES方式で暗号化させる。暗号化処理部(AES)123は、暗号化部36を制御し、暗号化処理部(AES)122による暗号化結果を、ACK2−3を用いてAES方式で暗号化させる。さらに、暗号化処理部(AES)124は、暗号化部36を制御し、暗号化処理部(AES)123による暗号化結果を、ACK3−1を用いてAES方式で暗号化させ、アクセス許諾チケット生成鍵(A.C.Gen.Key)を生成する。なお、暗号化処理部(AES)121乃至暗号化処理部(AES)124が、AESの代わりに、DES等、その他の共通鍵暗号化方式を用いるようにしてもよい。なお、アクセス許諾チケット生成鍵生成処理の別な方法は、後述する(図23参照)。
【0169】
アクセス許諾チケット生成鍵が生成されるとファイルアクセス処理部34は、ステップS116において、アクセス許諾チケットのチェック子(MAC値)を、アクセス許諾チケット生成鍵を用いて計算する(例えば、暗号利用モードのCBCモードなどを利用する)。
【0170】
ステップS117において、ファイルアクセス処理部34は、生成したチェック子の値を、アクセス許諾チケット(Ticket1−1)のチェック子の値と比較し、アクセス許諾チケット(Ticket1−1)を検証する。生成したチェック子の値がアクセス許諾チケット(Ticket1−1)に記述されるチェック子の値と一致しない場合、ファイルアクセス処理部34は、アクセス許諾チケット(Ticket1−1)が不正である(改ざんされた)と判定し、このアクセス制御処理を強制終了し、アクセス許諾要求を拒否する。値が一致する場合、ファイルアクセス処理部34は、アクセス許諾チケット(Ticket1−1)が正当であると判定し、認証する。
【0171】
チケットが正当であると言うことは、MAC値を生成するアクセス許諾チケット生成鍵を正しく生成していると言うことであり、それはつまり、第三のデータ、ルート鍵、アクセス方法に対する全てのアクセス制御鍵を知っている事業者がチケットを生成した蓋然性が高いということである。そしてそれは、正当な事業者が所有する情報処理端末であるということになる。
【0172】
従って、ファイルアクセス処理部34は、アクセス許諾チケット(Ticket1−1)に従ったファイルへのアクセスを許可し、ステップS118において、その旨を通知する応答を、要求元の情報処理端末11−1−1に供給する。
【0173】
情報処理端末11−1−1の通信部28は、ステップS102において、その応答を取得する。ファイルアクセス処理部24は、アクセス許諾を得たアクセス方法に則りファイルにアクセスする。例えば、アクセス方法1−1がFile1に対するリード・ライト可、アクセス方法1−2がリードオンリーである場合、情報処理端末11−1−1からICカード12−1に対し、File1の読み出しコマンドは受け付けられても、書き換え命令は拒絶されることになる。このように、各ファイルに対してアクセス制御を複数設定することができ、多様な利用方法を安全に実現することが可能となる。
【0174】
次に、図23のフローチャートを参照して、図20のステップS115において実行されるアクセス許諾チケット生成鍵生成処理の流れの例を説明する。なお、以下においてはICカード12−1において実行される場合について説明するが、以下の説明は、他のICカード12において実行される場合も適用可能である。
【0175】
アクセス許諾チケット生成鍵生成処理が開始されると、アクセス許諾チケット生成鍵生成部42は、ステップS131において、アクセス許諾チケット(Ticket1−1)に記述されているアクセスコードのリストを参照し、そのリストに含まれるアクセスコードに対応するアクセス制御鍵を記憶部31−1より取得する。
【0176】
アクセス制御鍵を取得すると、アクセス許諾チケット生成鍵生成部42は、ステップS132において、取得したアクセス制御鍵を、アクセス許諾チケット(Ticket1−1)に記述されているアクセスコードのリストと同順に整列させる。
【0177】
ステップS134において、アクセス許諾チケット生成鍵生成部42は、取得したアクセス制御鍵の中に、未使用のアクセス制御鍵が存在するか否かを判定し、存在すると判定した場合、ステップS135に処理を進め、暗号化部36を制御し、次の順のアクセス制御鍵を用いて前回の暗号化結果をさらに暗号化させる。なお、1回目の暗号化の場合、アクセス許諾チケット生成鍵生成部42は、暗号化部36を制御し、第四のデータ(System Data)を最初のアクセス制御鍵で暗号化させる。暗号化が終了すると、アクセス許諾チケット生成鍵生成部42は、処理をステップS134に戻す。つまり、ステップS134およびステップS135を繰り返すことにより、アクセス許諾チケット生成鍵生成部42は、取得したアクセス制御鍵の全てを、その整列順に縮退化してアクセス許諾チケット生成鍵を生成する。
【0178】
ステップS134において、未使用のアクセス制御鍵が存在しないと判定した場合、アクセス許諾チケット生成鍵生成部42は、アクセス許諾チケット生成鍵生成処理を終了し、図20のステップS115に処理を戻し、それ以降の処理を実行させる。
【0179】
このようにアクセス制御鍵を縮退化してアクセス許諾チケット生成鍵を生成することにより、ファイルアクセス処理部34は、アクセス制御チケット(Ticket1−1)の検証をより正確かつ高速に行うことができる。つまり、ファイルへの複数のアクセス方法などを規定したアクセス許諾チケットに対し、複数の鍵を持って正当性検証を、1度の処理で行わせることができるようになり、セキュリティレベルの低下を防止するとともに、通信路を経由して複数回データの送受信を繰り返すことによる遅延を抑制し、高速に検証を行うことができる。
【0180】
なお、図20のアクセス制御の処理において、ICカード12−1のファイルアクセス処理部34が、ステップS113において、アクセス許諾チケット(Ticket1−1)に記述されているアクセスコードが認証済みのディレクトリのものでない場合、許諾要求を拒否するように説明したが、これに限らず、アクセス許諾チケット(Ticket1−1)に記述されているアクセスコードが認証済みのディレクトリのものでない場合も構わず許諾するようにしてもよい。例えば、他事業者に自分の管理しているファイルにアクセスさせる必要があるような場合、アクセスを許諾する方が都合がよい。その場合、ステップS113の処理を省略すればよい。
【0181】
例えば、事業者1と事業者2があったとし、事業者1の管理するディレクトリに、顧客の名前などの個人情報を保持するファイルを持たせたとする。ある時、事業者1が事業者2と提携し、事業者1のお客には事業者2のサービスで便宜を図ってもらいたいとするなら、例えば、事業者1の顧客の名前を事業者2に読み出せるようにするのが好ましい。その場合、事業者2の情報処理端末11が事業者1のディレクトリ内のデータにアクセスする必要が生じる。このとき、仮に、上述したように、アクセス許諾チケット(Ticket1−1)に記述されているアクセスコードが認証済みのディレクトリのものでない場合許諾要求が拒否されるとすると、相互認証時に事業者1のディレクトリを含めて相互認証しなければならないが、その場合、事業者1のディレクトリのアプリケーション鍵を生成するマスタ鍵を事業者2に教えなければならない。あるいは、事業者2の情報処理端末固有の鍵を生成する際に、事業者2に協力するか、事業者2の情報処理端末固有の鍵を作るために、事業者1のディレクトリ鍵を教える必要が生じる。
【0182】
より具体的な例を図24に示す。図24に示される情報処理端末11−1−1は、事業者1の情報処理端末11であり、情報処理端末11−2−1は、事業者2の情報処理端末11である。情報処理端末11−1−1の記憶部21−1−1には、情報処理端末11−1−1のID(ID1−1)、情報処理端末11−1−1固有の鍵(K1−1)、事業者1の情報処理端末11のICカード12用のマスタ鍵(MK1−1−ICおよびMK1−2−IC)、および情報処理端末11−1−1に割り当てられたアクセス制御チケット(Ticket1−1)が書き込まれている。情報処理端末11−2−1の記憶部21−2−1には、情報処理端末11−2−1のID(ID2−1)、情報処理端末11−2−1固有の鍵(K2−1)、事業者2の情報処理端末11のICカード12用のマスタ鍵(MK2−2−IC)、および情報処理端末11−2−1に割り当てられたアクセス制御チケット(Ticket2−1)が書き込まれている。
【0183】
アクセス制御チケット(Ticket2−1)には、このチケットの使用者のID(ID2−1)、アクセスコードのリスト(1−1−1,2−2−1)、および、チェック子(MAC)が記述されている。
【0184】
また、図24に示されるICカード12−1とICカード12−2は、情報処理端末11よりアクセスされる、ユーザが互いに異なるICカード12である。
【0185】
ICカード12−1の記憶部31−1には、第一のデータ(KSystem)、第三のデータ(KSystem2)、およびルート鍵(KRoot)が書き込まれ、さらに、事業者1用のディレクトリとしてディレクトリ1−1およびディレクトリ1−2、事業者2用のディレクトリとしてディレクトリ2−2がそれぞれ形成されている。
【0186】
ディレクトリ1−1には、ディレクトリ鍵(DirK1−1)、アプリケーションID(AppID1−1−1)、およびアプリケーション鍵(AppK1−1−1)が書き込まれている。また、ディレクトリ1−1には、2つのアクセス制御鍵(ACK1−1−1およびACK1−1−2)が用意されている。ディレクトリ1−2には、ディレクトリ鍵(DirK1−2)、アプリケーションID(AppID1−2)、およびアプリケーション鍵(AppK1−2)が書き込まれている。また、ディレクトリ1−2には、2つのアクセス制御鍵(ACK1−2−1およびACK1−2−2)が用意されている。ディレクトリ2−2には、ディレクトリ鍵(DirK2−2)、アプリケーションID(AppID2−2−1)、およびアプリケーション鍵(AppK2−2−1)が書き込まれている。また、ディレクトリ2−2には、2つのアクセス制御鍵(ACK2−2−1およびACK2−2−2)が用意されている。
【0187】
ICカード12−2の記憶部31−2には、第一のデータ(KSystem)、第三のデータ(KSystem2)、およびルート鍵(KRoot)が書き込まれ、さらに、事業者1用のディレクトリとしてディレクトリ1−1、事業者2用のディレクトリとしてディレクトリ2−1およびディレクトリ2−2がそれぞれ形成されている。
【0188】
ディレクトリ1−1には、ディレクトリ鍵(DirK1−1)、アプリケーションID(AppID1−1−2)、およびアプリケーション鍵(AppK1−1−2)が書き込まれている。また、ディレクトリ1−1には、2つのアクセス制御鍵(ACK1−1−1およびACK1−1−2)が用意されている。ディレクトリ2−1には、ディレクトリ鍵(DirK2−1)、アプリケーションID(AppID2−1)、およびアプリケーション鍵(AppK2−1)が書き込まれている。また、ディレクトリ2−1には、2つのアクセス制御鍵(ACK2−1−1およびACK2−1−2)が用意されている。ディレクトリ2−2には、ディレクトリ鍵(DirK2−2)、アプリケーションID(AppID2−2−2)、およびアプリケーション鍵(AppK2−2−2)が書き込まれている。また、ディレクトリ2−2には、2つのアクセス制御鍵(ACK2−2−1およびACK2−2−2)が用意されている。
【0189】
このような例において、事業者2の情報処理端末11−2−1が、図24において矢印で示されるように、ICカード12−1のディレクトリ1−1とディレクトリ2−2にアクセスするとする。
【0190】
事業者2(および事業者1)は、システム管理者から第二のデータと第四のデータの提示を受けている。事業者2が情報処理端末11−2−1の鍵を設定する際には、情報処理端末11用のマスタ鍵が必要であり、その情報処理端末11用のマスタ鍵は、第二のデータを各ディレクトリ鍵で暗号化することにより得られる。つまり、相互認証において、ICカード12−1のディレクトリ1−1とディレクトリ2−2にアクセスすることを認証してもらうためには、DirK1−1とDirK2−2が必要となる。そのためには、事業者1が事業者2にDirK1−1を教えるか、最初に、事業者2が第二のデータをDirK2−2で暗号化し、その暗号化出力を事業者1に提供し、事業者1によってその暗号化出力をDirK1−1で暗号化してもらうしかない。
【0191】
事業者1が事業者2にDirK1−1を教えるのは、ディレクトリ鍵の変更処理などが勝手になされる危険性があるため、セキュリティ上、事業者1にとって望ましくない。逆に、事業者2が暗号化出力を事業者1に提供する方法は、DirK2−2を教えたことにはならないが、その暗号化出力を教えているため、事業者2が運用する情報処理端末11用のマスタ鍵を教えたことと略同義となってしまう。つまり、事業者1は、ディレクトリ2−2を含む情報処理端末11用のマスタ鍵を生成し得ることになる。
【0192】
仮に、ディレクトリ鍵の問題が解決したとしても、事業者2の情報処理端末11−2−1が事業者1の領域にアクセスするためには、事業者1のICカード12用のマスタ鍵を知らなければならない。つまり、事業者1は、事業者2に対してMK1−1−ICを教えなければならない。
【0193】
以上から、相互認証において、情報処理端末11−2−1が事業者1の領域へのアクセスを可能とするように、情報処理端末11−2−1をICカード12に認証させることは困難である。従って、ディレクトリ認証をパスしない領域にもアクセスすることができるようにしないと不都合が生じると考えられる。
【0194】
しかしながら、上述したように認証してない領域に無条件にアクセス可能とするのは論理上望ましくない。そこで、以下のように処理を行うようにしてもよい。
【0195】
まず、相互認証時において、事業者2の情報処理端末11−2−1の記憶部21−2−1には、ID2−1とK2−1が書き込まれている。K2−1を生成するマスタ鍵は、第二のデータをDirK2−2で暗号化して生成する。従って、相互認証はディレクトリ2−2だけで行うことになる。情報処理端末11−2−1が送る相互認証開始コマンドには、ID2−1とディレクトリコード(Directory Code)である2−2と第一の乱数が添付される。
【0196】
これを受信したICカード12−1は、第二のデータとDirK2−2とから情報処理端末11−2−1固有の鍵を生成するマスタ鍵(MK2−1−IT)を生成する。このマスタ鍵(MK2−1−IT)とID2−1とからK2−1を生成する。そして、AppID2−2−1をK2−1で暗号化する(第一の返信文)。続けて、K2−1をAppK2−2−1で暗号化し、認証鍵(KAuth)を生成する。その後、ICカード12−1は、第一の乱数、生成した第二の乱数、ID2−1を認証鍵で暗号化(第二の返信文)し、第一の返信文と共に情報処理端末11−2−1に返信する。なお、このときの暗号化方法は、CBC(Cipher Block Chaining)モード等の暗号利用モードを用いることとする。
【0197】
第一の返信文および第二の返信文を受け取った情報処理端末11−2−1は、自身の鍵K2−1で第一の返信文を復号し、AppID2−2−1を取り出す。そして、このAppID2−2−1とMK2−2−ICとから、AppK2−2−1を生成する。そして、自身の鍵K2−1をAppK2−2−1で暗号化し、認証鍵(KAuth)を生成する。さらに、その認証鍵(KAuth)で第二の返信文を復号し、第一の乱数の正当性を評価する。その後、セッション鍵を生成し、第一の乱数、第二の乱数と共に認証鍵(KAuth)で暗号化し、第二の相互認証コマンドに添付してICカード12−1に送信する。
【0198】
これを受信したICカード12−1は、乱数等を認証鍵(KAuth)で復号し、第二の乱数の正当性を評価し、レスポンスを返す。
【0199】
情報処理端末11−2−1は、アクセス許諾チケット(Ticket2−1)を提示してファイルアクセス許可命令を発行する。これを受け取ったICカード12−1は、使用者のチェック(Ticket2−1内のチケット使用者と、相互認証時に受け取った情報処理端末のID2−1の比較)後、アクセスコードをチェックする。アクセスコード2−2−1は相互認証時に検証したディレクトリだから認証されるが、アクセスコード1−1−1については検証していない。このような場合、ICカード12−1(ファイルアクセス処理部34のアクセス許諾チケット生成鍵生成部42)が、アクセス許諾チケット生成鍵を作る際に、ディレクトリ鍵を含ませるようにする。
【0200】
例えば、ICカード12−1(ファイルアクセス処理部34のアクセス許諾チケット生成鍵生成部42)が、第四のデータをDirK1−1で暗号化した後、ACK1−1−1、ACK2−2−1で暗号化してアクセス許諾チケット生成鍵を生成するようにする。そして、ICカード12−1(ファイルアクセス処理部34のアクセス許諾チケット生成鍵生成部42)は、このアクセス許諾チケット生成鍵でMAC値を検証し、正しければアクセスを許諾する。なお、アクセス許諾チケット生成鍵を生成するために、第四のデータをDirK1−1で暗号化するのは事業者1が行い、それをACK1−1−1で暗号化するのも事業者1が行う。その後、事業者2に引き渡し、ACK2−2−1で暗号化を行う。ただし、もっと多くのディレクトリが関与する場合、いろいろな事業者に鍵の中間値を引き渡す必要がある。
【0201】
このようにすることで、ICカード12側としては、認証時にディレクトリの鍵は使っていなかったが、アクセス許諾チケットを検証する際に、必要なディレクトリの鍵の検証を間接的に行っているため、筋が通ることになる。なお、この例ではAppK1−1−1が使われていないが、アクセスチケット生成鍵を生成する際に、DirK1−1の後にAppK1−1−1を使用する(AppK1−1−1を用いて暗号化する)ようにしてもよい。
【0202】
なお、アクセスコード1−1−1とアクセスコード2−2−1にアクセスするアクセス許諾チケット生成鍵であるが、これを保有するものが事業者1の場合(つまり、事業者2が事業者1のために暗号化処理を行ってあげる場合)、事業者2のみが知り得るDirK2−2、ACK2−2−1を使ったアクセス許諾チケット生成鍵が事業者1に渡されることになる。ところが、DirK2−2、ACK2−2−1が教えられた訳ではない。また、上で説明したように、DirK2−2、ACK2−2−1は使われているが、AppK2−2―2は一切使用されていない。よって、このチケットを使って、勝手にディレクトリ2−2内の他のファイルにアクセスすることができないのである。つまり、事業者2からしてみると安全といえる。
【0203】
なお、上述した例では自身のディレクトリと他事業者のディレクトリを混載させていたが、わかりやすくするためにチケットを分けるようにしてもよい。つまり、認証済みの領域だけが入ったチケットと、認証が済んでいない領域(しかも、管理している事業者毎)だけが入ったチケットに分け、必要に応じてアクセス許諾命令を複数回出す。このようにすることで、アクセス許諾チケット生成鍵を生成する際に、途中結果をいろいろな人に引き渡す必要がなくなる。
【0204】
なお、以上においては、システム鍵を認証鍵用とアクセス許諾チケット生成鍵用の2種類用意するように説明した。上述したように、アクセス許諾チケット生成鍵を他事業者向けに生成する時、ディレクトリ鍵(DirK)を使用している。すると、第三のデータが第一のデータと同一であると、アクセス許諾チケット生成鍵生成過程において、情報処理端末11のマスタ鍵生成過程と一部似ている状態が出てきてしまう。必ずACKを掛け合わせているものの、例えば、第四のデータをDirK1−1で事業者1が暗号化し、この中間値を事業者2に渡し、再度事業者1に渡してACK1−1−1で暗号化した後、再度事業者2に渡してACK2−2−1で暗号化する場合について想定する。このような場合において、仮に、第四のデータではなく、第二のデータであるとすると、事業者2は第二のデータをDir1−1で暗号化した出力を入手することができたことになり、この出力は、Dir1-1にアクセスする情報処理端末11に対する個別鍵を生成するマスタ鍵であり、これを不正に入手できたことになってしまう。
【0205】
従って、そうならないためにも、必ずDirKのあとACKで暗号化するのが望ましい。また、マスタ鍵や認証鍵を生成する時の元データ(第一のデータ)と、アクセス許諾チケット生成鍵を生成する時の元データ(第三のデータ)を互いに異なるものにするのが望ましい(異なっていれば、認証系とチケット系でDirKをかけた出力が異なるので問題がなくなる)。
【0206】
なお、情報処理端末11とICカード12と間の通信の、通信可能範囲の広さは任意であり、例えば、数メートル以上であってもよいし、数センチメートル以下であってもよい。また、通信方式も任意であり、無線通信ではなく有線通信としてもよい。その場合、ICカードは所謂接触型のICカードであり、情報処理端末11とICカード12には、ループアンテナの代わりに、互いを電気的に接続するための外部接続端子が設けられる。
【0207】
また、以上においては、通信システム1の装置としてICカードと情報処理端末を例にして説明したが、互いに通信可能なデバイスなら何でもよい。例えば、ICカード12は、カード形状のデバイスでなくてもよく、例えば、切手形状のものや、500円玉形状のものでもよい。また、例えば、ICカード機能を搭載する携帯電話機、音楽プレーヤ、デジタルカメラ、ノート型パーソナルコンピュータ、またはPDA(Personal Digital Assistants)などであってもよい。さらに、例えばデスクトップ型のパーソナルコンピュータのように、携帯型デバイスでなくてもよい。また、ICカード12は、ユーザ(人)が携帯するものであってもよいし、機器等に組み込まれ、その機器の移動処理などに活用するものであってもよい。
【0208】
同様に、情報処理端末11も、上述した機能を有し、ICカード12と通信可能なものであればどのようなデバイスであってもよい。例えば、自動改札機、自動販売機、施錠ドア等に組み込まれているリーダ・ライタ等であってもよいし、ノート型パーソナルコンピュータ、PDA、デスクトップ型のパーソナルコンピュータ等に組み込まれたカードアクセスポートや、USB(Universal Serial Bus)接続された簡易リーダ・ライタなどの他に、リーダ・ライタ機能を搭載した携帯電話機等でもよい。
【0209】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図25に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
【0210】
図25において、パーソナルコンピュータ200のCPU201は、ROM(Read Only Memory)202に記憶されているプログラム、または記憶部213からRAM(Random Access Memory)203にロードされたプログラムに従って各種の処理を実行する。RAM203にはまた、CPU201が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0211】
CPU201、ROM202、およびRAM203は、バス204を介して相互に接続されている。このバス204にはまた、入出力インタフェース210も接続されている。
【0212】
入出力インタフェース210には、キーボード、マウスなどよりなる入力部211、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部212、ハードディスクなどより構成される記憶部213、モデムなどより構成される通信部214が接続されている。通信部214は、インターネットを含むネットワークを介しての通信処理を行う。
【0213】
入出力インタフェース210にはまた、必要に応じてドライブ215が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア221が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部213にインストールされる。
【0214】
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【0215】
この記録媒体は、例えば、図25に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc - Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア121により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM202や、記憶部213に含まれるハードディスクなどで構成される。
【0216】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0217】
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表わすものである。
【0218】
なお、以上において、一つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて一つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【0219】
【図1】本発明を適用した通信システムの主な構成例を示すブロック図である。
【図2】各デバイスが保持する情報の例を示す図である。
【図3】ICカードの記憶部の記憶領域の構成例を説明する模式図である。
【図4】データ設定処理の流れの例を説明するフローチャートである。
【図5】データ列の構成例を示す図である。
【図6】データ列の構成例を示す図である。
【図7】データ列の構成例を示す図である。
【図8】データ列の構成例を示す図である。
【図9】データ列の構成例を示す図である。
【図10】データ列の構成例を示す図である。
【図11】相互認証処理の流れの例を説明するフローチャートである。
【図12】相互認証処理の流れの例を説明する、図7に続くフローチャートである。
【図13】認証処理部の詳細な構成例を説明する機能ブロック図である。
【図14】認証処理部の詳細な構成例を説明する機能ブロック図である。
【図15】認証処理部の詳細な構成例を説明する機能ブロック図である。
【図16】認証処理部の詳細な構成例を説明する機能ブロック図である。
【図17】マスタ鍵生成処理の流れの例を説明するフローチャートである。
【図18】各デバイスが保持する情報の、他の例を示す図である。
【図19】アクセス許諾チケットの記述例を示す模式図である。
【図20】アクセス制御処理の流れ居の例を説明するフローチャートである。
【図21】ファイルアクセス処理部の詳細な構成例を説明する機能ブロック図である。
【図22】アクセス許諾チケット生成鍵生成部の詳細な構成例を説明する機能ブロック図である。
【図23】アクセス許諾チケット生成鍵生成処理の流れ居の例を説明するフローチャートである。
【図24】各デバイスが保持する情報の、さらに他の例を示す図である。
【図25】本発明を適用したパーソナルコンピュータの構成例を示すブロック図である。
【符号の説明】
【0220】
1 通信システム, 11 情報処理端末, 12 ICカード, 21 記憶部, 23 認証処理部, 24 ファイルアクセス処理部, 25 乱数生成部, 26 暗号化部, 27 復号部, 28 通信部, 31 記憶部, 32 データ設定処理部, 33 認証処理部, 34 ファイルアクセス処理部, 35 乱数生成部, 36 暗号化部, 37 復号部, 38 通信部, 41 マスタ鍵生成部, 42 アクセス許諾チケット生成鍵生成部

【特許請求の範囲】
【請求項1】
他の情報処理装置より、自分自身が保持するデータに対してアクセスを要求される情報処理装置であって、
前記他の情報処理装置の認証処理を行う認証手段と、
前記認証手段により正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信する受信手段と、
予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成するアクセス許諾チケット生成鍵生成手段と、
前記アクセス許諾チケット生成鍵生成手段により生成された前記アクセス許諾チケット生成鍵を用いて、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出するチェック子算出手段と、
前記チェック子算出手段により算出された前記チェック子を用いて、前記受信手段により受信された前記アクセス許諾チケットを検証するアクセス許諾チケット検証手段と
を備える情報処理装置。
【請求項2】
前記アクセス許諾チケットは、前記他の情報処理装置のIDをさらに含み、
前記受信手段により受信された前記アクセス許諾チケットに記述される前記他の情報処理装置のIDが、前記認証手段により認証済みの他の情報処理装置のIDであるか否かを検証するID検証手段をさらに備える
請求項1に記載の情報処理装置。
【請求項3】
所定のIDが特別なIDであるオールマイティIDとして予め設定されており、
前記ID検証手段は、前記アクセス許諾チケットに前記オールマイティIDが記述されている場合、認証済みのIDの如何に関わらず、アクセス制御チケットの使用者を許諾させる
請求項1に記載の情報処理装置。
【請求項4】
前記アクセス許諾チケット生成鍵の生成に使用される前記所定のデータは、前記認証手段による認証処理において認証用の鍵情報の生成に用いられる所定のデータとは異なるデータとして予め保持する
請求項1に記載の情報処理装置。
【請求項5】
前記アクセス許諾チケットに記述されるアクセスコードが、前記認証処理においてアクセス先として認証されたディレクトリのアクセスコードであるか否かを確認する確認手段をさらに備える
請求項1に記載の情報処理装置。
【請求項6】
前記確認手段により前記認証処理においてアクセス先として認証されていないディレクトリのアクセスコードが含まれることが確認された場合、アクセスを拒絶する拒絶手段をさらに備える
請求項5に記載の情報処理装置。
【請求項7】
前記拒絶手段は、前記認証処理においてアクセス先として認証されていないディレクトリのアクセスコードについてのみアクセスを拒絶する
請求項6に記載の情報処理装置。
【請求項8】
前記アクセス許諾チケット生成鍵生成手段は、前記確認手段により前記認証処理においてアクセス先として認証されていない領域のアクセスコードが含まれることが確認された場合、前記アクセス許諾チケット生成鍵の生成において、さらに、前記アクセスコードに対応するディレクトリの鍵情報であるディレクトリ鍵を使用する
請求項5に記載の情報処理装置。
【請求項9】
前記アクセス許諾チケット生成鍵生成手段は、予め保持する前記所定のデータを前記ルート鍵で暗号化し、その暗号化結果をさらに各ディレクトリ鍵で1つずつ暗号化し、さらにその暗号化結果を、各アクセス制御鍵で1つずつ暗号化することにより、各鍵情報を縮退化して前記アクセス許諾チケット生成鍵を生成する
請求項1に記載の情報処理装置。
【請求項10】
他の情報処理装置より、自分自身が保持するデータに対してアクセスを要求される情報処理装置の情報処理方法であって、
前記他の情報処理装置の認証処理を行い、
正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信し、
予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成し、
生成された前記アクセス許諾チケット生成鍵を用いて、前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出し、
算出された前記チェック子を用いて、前記アクセス許諾チケットを検証する
ステップを含む情報処理方法。
【請求項11】
他の情報処理装置より、自分自身が保持するデータに対してアクセスを要求される情報処理装置を制御するプログラムであって、
前記他の情報処理装置の認証処理を行い、
正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信し、
予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成し、
生成された前記アクセス許諾チケット生成鍵を用いて、前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出し、
算出された前記チェック子を用いて、前記アクセス許諾チケットを検証する
ステップを含むコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項12】
他の情報処理装置より、自分自身が保持するデータに対してアクセスを要求されるコンピュータに実行させるプログラムにおいて、
前記他の情報処理装置の認証処理を行い、
正当な相手であると認証された前記他の情報処理装置より、前記他の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信し、
予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成し、
生成された前記アクセス許諾チケット生成鍵を用いて、前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出し、
算出された前記チェック子を用いて、前記アクセス許諾チケットを検証する
ステップを含む情報処理をコンピュータに実行させるプログラム。
【請求項13】
第一の情報処理装置が、第二の情報処理装置が保持するデータに対してアクセスを要求する情報処理システムであって、
前記第一の情報処理装置は、
前記第二の情報処理装置と相互認証処理を行う第一の相互認証手段と、
アクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを前記第二の情報処理装置に送信する送信手段と
を備え、
前記第二の情報処理装置は、
前記第一の情報処理装置と相互認証処理を行う第二の相互認証手段と、
前記第二の相互認証手段により正当な相手であると認証された前記第一の情報処理装置より、前記第一の情報処理装置がアクセスするデータを示すアクセスコード、および、チェック子を含むアクセス許諾チケットを受信する受信手段と、
予め保持する所定のデータ、ルートディレクトリに対応する鍵情報であるルート鍵、並びに、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するデータの、アクセス方法を制御する鍵情報であるアクセス制御鍵を使用して、チェック子を算出するための鍵情報であるアクセス許諾チケット生成鍵を生成するアクセス許諾チケット生成鍵生成手段と、
前記アクセス許諾チケット生成鍵生成手段により生成された前記アクセス許諾チケット生成鍵を用いて、前記受信手段により受信された前記アクセス許諾チケットに記述されるアクセスコードに対応するチェック子を算出するチェック子算出手段と、
前記チェック子算出手段により算出された前記チェック子を用いて、前記受信手段により受信された前記アクセス許諾チケットを検証するアクセス許諾チケット検証手段と
を備える情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2009−105856(P2009−105856A)
【公開日】平成21年5月14日(2009.5.14)
【国際特許分類】
【出願番号】特願2007−278118(P2007−278118)
【出願日】平成19年10月25日(2007.10.25)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】