以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本発明が適用されるサーバクライアントシステム(システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない)の構成例を示している。
図1のサーバクライアントシステムは、いわゆるクライアントである各種のクライアント側装置1と、いわゆるサーバであるサーバ側装置2とが、例えば、インターネットなどのネットワーク3、さらには、必要に応じて、例えば、移動機(体)通信網などのネットワーク4を介して接続されて構成されている。
クライアント側装置1は、セキュアチップを内蔵している。セキュアチップは、例えば、耐タンパ性のあるセキュアなICチップであり、接触または非接触で、外部の装置とデータのやりとりを行うことができるようになっている。
なお、クライアント側装置1としては、例えば、携帯電話機やPDA(Personal Digital Assistant)などの携帯端末、PC,POS(Point Of Sales)レジ(POSシステム用のレジスタ)、自動販売機、ハンディーターミナルなどがある。また、クライアント側装置1が内蔵するセキュアチップとしては、例えば、電子的な定期券等としてのSuica(R)などに採用されているFeliCa(R)などがある。
サーバ側装置2は、ネットワーク3、さらには、必要に応じて、ネットワーク4を介して、クライアント側装置1との間でデータ(コマンドを含む)をやりとりし、これにより、各種のサービスを提供する。即ち、例えば、クライアント側装置1のセキュアチップに、電子マネーが記憶されている場合において、サーバ側装置2が、クライアント側装置1の電子マネーを対象として、商品の代金を差し引き、その差し引き後の金額によって、クライアント側装置1の電子マネーの金額を更新する処理等を制御することにより、サーバ側装置2は、電子マネーサービスを提供する。
なお、クライアント側装置1は、サーバ側装置2に送信するデータを暗号化して送信し、サーバ側装置2も、クライアント側装置1に送信するデータを暗号化して送信する。
クライアント側装置1におけるデータの暗号化や復号、暗号化/復号に用いられる鍵の発生や管理、相互認証(のためのデータの暗号化/復号など)、相互認証に用いられる乱数の発生、その他のデータの暗号化(秘密化)に関連する暗号関連処理は、耐タンパ性のあるセキュアチップ内で行われるが、サーバ側装置2における暗号関連処理は、耐タンパ性のある専用のハードウェアであるHSM(Hardware Security Module)内で行われる場合と、そのような耐タンパ性のあるHSMを利用せず、サーバ側装置2を実現するソフトウェアなどで行われる場合がある。
また、暗号関連処理には、特に高い秘匿性が要求される暗号関連処理と、それ以外の暗号関連処理とがあり、サーバ側装置2がHSMを備える場合には、特に高い秘匿性が要求される暗号関連処理のみを、HSM内で行い、それ以外の暗号関連処理を、サーバ側装置2を実現するソフトウェアなどで行うことができる。
次に、図2は、クライアント側装置1とサーバ側装置2の機能的な構成例を示している。
クライアント側装置1は、セキュアチップ11およびクライアントアプリケーション12、さらには、必要なR/W13で構成される。
セキュアチップ11は、耐タンパ性のあるセキュアなICチップであり、接触または非接触で、外部の装置とデータのやりとりを行うことができるようになっている。
即ち、セキュアチップ11は、クライアントアプリケーション12と直接、またはR/W13を介して通信し、例えば、その通信によってクライアントアプリケーション12から送信されてくるコマンドにしたがって処理を行う。さらに、セキュアチップ11は、その処理後、コマンドに対するレスポンスとしてのレスポンスデータを、クライアントアプリケーション12に対して、直接、またはR/W13を介して送信する。また、セキュアチップ11は、セキュリティを確保するために、送受信するデータ等に対する暗号関連処理を行う。
クライアントアプリケーション12は、例えば、ハードウェアであるコンピュータで実行されるソフトウェアで、サーバ側装置2の後述するサーバアプリケーション21のクライアントとして機能する。クライアントアプリケーション12は、サーバアプリケーション21との間でデータ(コマンドを含む)をやりとりし、また、セキュアチップ11に対して、直接、またはR/W13を介して、コマンド等を送信することで、セキュアチップ11に対するデータの読み書き等を行い、これにより、各種のサービスの提供を実現する。
即ち、例えば、クライアントアプリケーション12およびサーバアプリケーション21が、電子マネーサービスを提供するソフトウェアであり、セキュアチップ11内に、電子マネーサービス用の記憶領域が確保されている場合には、セキュアチップ11に記憶された電子マネーから、商品の代金を差し引き、その差し引き後の金額によって、セキュアチップ11に記憶された電子マネーの金額を更新するといった、電子マネーサービスのための処理に必要なデータ(コマンドを含む)のやりとりが、クライアントアプリケーション12とサーバアプリケーション21との間で行われる。
なお、クライアントアプリケーション12には、サーバアプリケーション21との間の通信を制御するモジュールが、必要に応じて含まれる。
R/W13は、セキュアチップ11と非接触通信または接触通信を行い、クライアントアプリケーション12から供給されるコマンド等を、セキュアチップ11に送信し、また、セキュアチップ12から送信されてくるデータ等を受信して、クライアントアプリケーション12に供給する。
サーバアプリケーション21は、例えば、ハードウェアであるコンピュータで実行されるソフトウェアで、クライアント側装置1のクライアントアプリケーション12のサーバとして機能する。サーバアプリケーション21は、クライアントアプリケーション12との間でデータ(コマンドを含む)をやりとりすることにより、上述した電子マネーサービスその他の各種のサービスを実現する。
また、サーバアプリケーション21は、セキュリティを確保するため、送受信するデータ等に対する暗号関連処理を、セキュアサーバ22に依頼する。
なお、サーバアプリケーション21には、クライアントアプリケーション12との間の通信を制御するモジュールが、必要に応じて含まれる。
セキュアサーバ22は、例えば、ハードウェアであるコンピュータで実行されるソフトウェアで、サーバアプリケーション21からの暗号関連処理の依頼に応じて、自身で暗号関連処理を行い、あるいは、暗号関連処理を、セキュアチップ処理モジュール23に依頼する。
即ち、セキュアサーバ22は、サーバアプリケーション21から依頼される暗号関連処理のうちの、特に高い秘匿性が要求される暗号関連処理を、セキュアチップ処理モジュール23に依頼し、それ以外の暗号関連処理を、自身(セキュアサーバ22内)で行う。
セキュアチップ処理モジュール23は、セキュアサーバ22からの依頼に応じて、暗号関連処理(特に高い秘匿性が要求される暗号関連処理)を行う。
なお、セキュアチップ処理モジュール23は、ここでは、例えば、耐タンパ性のある専用のハードウェア内に格納されていることとする。但し、セキュアチップ処理モジュール23は、例えば、セキュアサーバ22の1つのモジュール(ソフトウェア)とすることも可能である。
次に、図3は、クライアント側装置1とサーバ側装置2の具体的なハードウェアの構成例を示している。
図3において、クライアント側装置1は、ハードウェアであるR/W13,ICカード31、およびPC32で構成されている。
ICカード31は、ハードウェアであるセキュアチップ11を内蔵し、例えば、電子マネーを格納するEdy(R)などのカードに相当する。PC32は、例えば、ICカード31のユーザが所有するPCで、そこには、クライアントアプリケーション12がインストールされている。ユーザは、PC32を操作することにより、ICカード31に格納されている電子マネーの残高照会や、電子マネーのチャージ、電子マネーによる代金の支払い等を行うことができる。
図3において、サーバ側装置2は、ハードウェアであるセキュアチップ処理モジュール23およびコンピュータ33で構成されている。
コンピュータ33は、例えば、ハードウェアとしてのサーバ(マシン)で、そこには、サーバアプリケーション21とセキュアサーバ22がインストールされている。
次に、図4は、クライアント側装置1とサーバ側装置2の具体的なハードウェアの他の構成例を示している。なお、図4において、サーバ側装置2のハードウェアの構成は、図3における場合と同様になっている。
図4において、クライアント側装置1は、ハードウェアである携帯電話機34で構成されている。
携帯電話機34は、ハードウェアであるセキュアチップ11を内蔵している。さらに、携帯電話機34には、クライアントアプリケーション12がインストールされている。ユーザは、携帯電話機35を操作することにより、例えば、セキュアチップ11に格納されている電子マネーの残高照会や、電子マネーのチャージ、電子マネーによる代金の支払い等を行うことができる。
なお、携帯電話機34の外部から、携帯電話機34が内蔵するセキュアチップ11へのアクセスは、携帯電話機34が有する通信機能を利用して行うこともできるし、また、図4では図示していないR/W13に対して、携帯電話機34、ひいては、その携帯電話機34が内蔵するセキュアチップ11を近づけることにより行うこともできる。
次に、図5は、クライアントアプリケーション12がインストールされる図3のPC32のハードウェアの構成例を示している。
PC32は、CPU(Central Processing Unit)42を内蔵している。CPU42には、バス41を介して、入出力インタフェース50が接続されており、CPU42は、入出力インタフェース50を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部47が操作等されることにより指令が入力されると、それにしたがって、ROM(Read Only Memory)43に格納されているプログラムを実行する。あるいは、また、CPU42は、ハードディスク45に格納されているプログラム、衛星若しくはネットワークから転送され、通信部48で受信されてハードディスク45にインストールされたプログラム、またはドライブ49に装着されたリムーバブル記録媒体51から読み出されてハードディスク45にインストールされたプログラムを、RAM(Random Access Memory)44にロードして実行する。これにより、CPU42は、各種の処理を行う。そして、CPU42は、その処理結果を、必要に応じて、例えば、入出力インタフェース50を介して、LCD(Liquid Crystal Display)やスピーカ等で構成される出力部46から出力、あるいは、通信部48から送信、さらには、ハードディスク45に記録等させる。
なお、入出力インタフェース50には、例えば、USB(Universal Serial Bus)端子が設けられており、図3におけるR/W13は、そのUSB端子に接続することができる。CPU42(によって、実行されるクライアントアプリケーション12)は、入出力インタフェース50に接続されたR/W13を介して、セキュアチップ11(図3)にアクセスすることができる。
ここで、クライアントアプリケーション12その他のプログラムは、PC32に内蔵されている記録媒体としてのハードディスク45やROM43に予め記録しておくことができる。
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体51に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体51は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体51からPC32にインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、PC32に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワーク3を介して、PC32に有線で転送し、PC32では、そのようにして転送されてくるプログラムを、通信部48で受信し、内蔵するハードディスク45にインストールすることができる。
次に、図6は、サーバアプリケーション21およびセキュアサーバ22がインストールされる図3のコンピュータ33のハードウェアの構成例を示している。
ここで、図6において、コンピュータ33を構成するバス61乃至リムーバブル記録媒体71は、図5のバス41乃至リムーバブル記録媒体51とそれぞれ同様に構成されるものであるため、その説明は省略する。
なお、図3や図4において、セキュアチップ処理モジュール23は、通信部68または入出力インタフェース70を介して、コンピュータ33に接続される。
次に、図7は、図2のセキュアチップ11のハードウェアの構成例を示している。
セキュアチップ11は、大きく分けて、通信処理部81とデータ処理部82とから構成される。通信処理部81は、セキュアチップ11の外部と、接触通信または非接触通信をするために必要な処理を行い、これにより、外部から送信されてくるデータ(コマンドを含む)を、データ処理部82に供給し、また、データ処理部82からのデータを、外部に送信する。
ここで、セキュアチップ11で行われる、外部と通信するために必要な処理としては、データ等の符号化/復号や、変調/復調等がある。また、セキュアチップ11が電源を有しない場合には、通信処理部81では、外部からの信号から電源(電力)を生成する処理も行われる。
データ処理部82は、例えば、CPU91、暗号関連処理部92、およびメモリ93で構成され、通信処理部81から供給されるコマンド等にしたがい、各種の処理を行う。
即ち、CPU91は、暗号関連処理部92の制御やメモリ93の管理を行う。また、CPU91は、通信処理部81から供給されるコマンドにしたがい、メモリ93に対するデータの読み書きや、メモリ93に記憶されたデータを対象としたデータ処理等を行う。なお、CPU91は、プログラムを実行することにより各種の処理を行うが、そのプログラムは、メモリ93に記憶されている。
暗号関連処理部92は、CPU91の制御にしたがい、暗号関連処理を行う。ここで、暗号関連処理には、データ(コマンドを含む)の暗号化/復号の他に、例えば、いわゆるチャレンジアンドレスポンス方式での相互認証(相互認証に用いられる乱数の発生等を含む)、暗号化/復号に用いられる鍵(暗号鍵となる情報)の発生(生成)なども含まれる。
メモリ93は、不揮発性のメモリで、データやプログラムなどを記憶する。なお、メモリ93は、物理的に1つのメモリであっても良いし、複数のメモリであっても良い。また、メモリ93を、物理的に複数のメモリで構成する場合には、その一部のメモリとしては、揮発性のメモリを採用することができる。揮発性メモリには、例えば、CPU91の動作上一時的に記憶しておく必要があるデータなどが記憶される。
次に、CPU91では、メモリ93の記憶領域が階層化されて管理されるようになされている。
即ち、図8は、メモリ93のディレクトリ構造を示している。
メモリ93の記憶領域のうちの一部は、各種のサービスを提供するためのデータを記憶するデータ記憶領域として使用されるようになっている。このデータ記憶領域は、いわゆるディレクトリに相当するエリア定義領域を階層とする階層構造をなしており、エリア定義領域は、下位(子)の階層のディレクトリに相当するエリア定義領域や、ファイルに相当する、後述するサービス領域を管理するサービス定義領域を有することができるようになされている。
エリア定義領域は、メモリ93のデータ記憶領域の一部で、サービスを提供するサービス提供者を管理する管理者(サービス提供者自身である場合もある)に割り当てられる。エリア定義領域には、そのエリア定義領域を識別するための名前として使用可能な識別コードとしてのエリアコード、使用可能な空きブロック数を表す空き容量、エリア定義領域(そのエリア定義領域の下位階層のエリア定義領域やサービス定義領域を含む)にアクセスするのに必要な鍵としてのエリアキーなどが配置される。
ここで、CPU91は、メモリ93のデータ記憶領域を、固定の記憶容量のブロック単位で管理するようになっており、エリア定義領域が管理するデータ記憶領域の空き容量などは、このブロックの数(ブロック数)によって管理される。
図8の実施の形態では、管理者Aに最上位階層のエリア定義領域が割り当てられており、これを親の階層として、管理者B1およびB2のエリア定義領域が作成されている。さらに、管理者B1のエリア定義領域を、親の階層として、管理者Cのエリア定義領域が作成されている。
サービス定義領域は、後述するサービス領域を管理するための、メモリ93のデータ記憶領域の一部で、サービス提供者が提供するサービスに割り当てられる。サービス定義領域には、そのサービス定義領域を識別するための名前として使用可能な識別コードとしてのサービスコード、サービスの提供に必要なデータを記憶するサービス領域の容量を表すブロック数、サービス定義領域(サービス定義領域が管理するサービス領域を含む)にアクセスするのに必要な鍵としてのサービスキーなどが配置される。
サービス領域は、データ記憶領域の一部で、サービスの提供に必要なデータが記憶される、0以上のブロックで構成される。サービス領域を構成するブロック数が、そのサービス領域を管理するサービス定義領域の容量として配置される。
サービス提供者は、ある管理者が管理するエリア定義領域の下位階層に、サービス定義領域を作成し、そのサービス定義領域で管理されるサービス領域を使用して、各種のサービスを提供する。例えば、電子マネーサービスの提供にあたっては、サービス領域に、電子マネーの金額(残高)や、電子マネーによって購入した商品の情報(例えば、商品名や値段など)、商品を購入した年月日などが記憶される。
次に、図9は、図2のセキュアサーバ22の詳細な構成例を示している。
セキュアサーバ22は、セキュアチップコマンドモジュール101とセキュアチップマネージャモジュール102とから構成される。
セキュアチップコマンドモジュール101は、例えば、サーバアプリケーション21からのコマンドの作成の要求(依頼)に応じて、セキュアチップ11用のコマンドを作成し、サーバアプリケーション21に供給する。
即ち、サーバアプリケーション21は、クライアント側装置1のセキュアチップ11に対して、何らかの処理を指示する場合、その処理に対応するコマンドの作成を、セキュアチップコマンドモジュール101に要求し、セキュアチップコマンドモジュール101は、その要求に応じ、セキュアチップ11用のコマンドを作成して、サーバアプリケーション21に供給する。
従って、サーバアプリケーション21は、セキュアチップ11用のコマンドを(知っていても良いが)知っている必要はないので、様々なコマンド体系のセキュアチップ(コマンドとしてのオペコードや、コマンドがとるパラメータ、コマンドの種類などの違いがあるセキュアチップ)が存在する場合であっても、サーバアプリケーション21を、そのような様々なコマンド体系のセキュアチップごとに製作する必要がない。
即ち、サーバアプリケーション21は、セキュアチップコマンドモジュール101が解釈することができるコマンド体系を使用することができるものであれば良い。
ここで、セキュアチップコマンドモジュール101は、上述したように、サーバアプリケーション21からの要求に応じて、セキュアチップ11用のコマンドを作成し、サーバアプリケーション21に供給するが、コマンドをサーバアプリケーション21に供給する前に、セキュアチップマネージャモジュール102に供給して、そのコマンドの暗号化を要求する。そして、セキュアチップコマンドモジュール101は、その要求に応じてセキュアチップマネージャモジュール102から供給される暗号情報(暗号化後のコマンド等)を、サーバアプリケーション21に供給する。
セキュアチップマネージャモジュール102は、セキュアチップコマンドモジュール101からの要求に応じて、コマンドの暗号化等の暗号関連処理を行い、あるいは、暗号関連処理を、セキュアチップ処理モジュール23に要求する。そして、セキュアチップマネージャモジュール102は、自身(セキュアチップマネージャモジュール102)またはセキュアチップ処理モジュール23による暗号関連処理により得られる暗号情報を、セキュアチップコマンドモジュール101に供給する。
なお、セキュアチップマネージャモジュール102は、セキュアチップ11用の暗号関連処理を行い、あるいは、セキュアチップ処理モジュール23に、セキュアチップ11用の暗号関連処理を行わせる。
即ち、例えば、セキュアチップ11は、セキュアチップ11用の暗号化が行われたコマンド(データ)等のみの処理が可能となっている。具体的には、データ(コマンドを含む)の暗号化には、例えば、様々なアルゴリズムの暗号化が存在し、セキュアチップ11では、あるアルゴリズムの暗号化が採用されている。セキュアチップ11で採用されている暗号化のアルゴリズムを表す情報(そのアルゴリズムによる暗号化に用いられる鍵を表す情報を含む)を、暗号処理種別ということとすると、セキュアチップマネージャモジュール102は、セキュアチップ11に対応した暗号処理種別の暗号化等を行い、あるいは、セキュアチップ処理モジュール23に、セキュアチップ11に対応した暗号処理種別の暗号化等を行わせる。
なお、セキュアチップマネージャモジュール102は、セキュアチップ11の暗号処理種別と異なる暗号処理種別の暗号化等も行うように構成することができる。セキュアチップ処理モジュール23も同様である。
また、暗号化は、例えば、認証や、後述する通信路の暗号化、同じく後述するパッケージの作成などのために行われるが、暗号処理種別は、これらの認証、通信路の暗号化、パッケージの作成のための暗号化それぞれごとに決めることが可能である。さらに暗号処理種別には、認証や、通信路の暗号化、パッケージの作成に関連する情報、即ち、例えば、認証として、相互認証を行うのか、または、片側認証を行うのかといった情報を含めることが可能である。
次に、図10を参照して、クライアント側装置1とサーバ側装置2の動作について説明する。
クライアントアプリケーション12が起動されると、クライアントアプリケーション12は、まず最初に、ステップS21において、セキュアチップ11に対して、セキュアチップ11に関するセキュアチップ(Secure Chip)情報を要求するコマンドを送信する。
セキュアチップ11は、ステップS11において、クライアントアプリケーション12からのコマンドを受信して、ステップS12に進み、そのコマンドに対するレスポンスとして、セキュアチップ情報を、クライアントアプリケーション12に送信する。
クライアントアプリケーション12は、ステップS22において、セキュアチップ11からのセキュアチップ情報を受信して、ステップS23に進み、そのセキュアチップ情報を含む初期情報とともに、サーバ側装置2に対して接続を要求するサーバ(Server)接続要求を送信する。
なお、初期情報には、セキュアチップ情報の他、クライアントアプリケーション12に関するクライアント情報や、クライアントアプリケーション12が接続しようとするサーバ側装置2のサーバアプリケーション21を指定するサーバ(Server)アプリ指定(の情報)が含まれる。
また、セキュアチップ情報には、セキュアチップ11がどのような種類のものかを表す情報であるセキュアチップ種別、セキュアチップ11で採用されているOS(Operating System)を表す情報であるセキュアチップOS種別、セキュアチップ11におけるデータの管理に関する情報であるセキュアチップファイル構造(ファイルフォーマット、エリアコードのリスト、サービスコードのリストなど)などが含まれる。セキュアチップ種別によれば、認証や通信路の暗号化、実行権の暗号処理において具体的に用いられる暗号・署名アルゴリズム(DES、T-DES、RSA、EC-DSAなど)や認証でのチャレンジ/レスポンスの方法や具体的な暗号・署名を行う対象のフォーマットやパディングルールなどを特定することができる。
さらに、クライアント情報には、クライアント側装置1のハードウェアを表す情報(例えば、クライアント側装置1が携帯電話機、PC、またはPOSレジであるなどの情報)であるクライアント種別、クライアント側装置1で採用されているOSを表す情報であるクライアントOS種別、クライアントアプリケーション12を特定する情報であるクライアントアプリID(Identification)、クライアントアプリケーション12のバージョンを表す情報であるアプリバージョンなどが含まれる。
ここで、クライアントアプリケーション12では、例えば、サーバアプリケーション21に接続した後に、サーバアプリケーション21からの、セキュアチップ情報その他の初期情報の要求を待って、その要求に応じて、セキュアチップ11からセキュアチップ情報を取得し、初期情報に含めて、サーバアプリケーション21に送信することもできる。
但し、図10に示したように、クライアントアプリケーション12において、セキュアチップ11からセキュアチップ情報を取得しておき、そのセキュアチップ情報を含む初期情報を、サーバ接続要求とともに、サーバアプリケーション21に送信する場合の方が、クライアントアプリケーション12とサーバアプリケーション21との間のやりとりが少なくて済み、処理に要する時間の短縮化を図ることが可能となる。
さらに、この場合、サーバ側装置2は、クライアント側装置1からのアクセスの開始と同時に、クライアント情報を受信することができるので、そのクライアント情報に基づき、クライアントアプリケーション12に適したコマンドやメッセージ(画面等のGUI(Graphical User Interface)など)の送受信を行うことが可能となる。ここで、クライアントアプリケーション12に適したコマンドやメッセージとは、例えば、内容がクライアントアプリケーション12に適したコマンドやメッセージ、あるいは、一度に送受信する長さや個数がクライアントアプリケーション12に適したコマンドやメッセージなどを意味する。
サーバアプリケーション21は、ステップS41において、クライアントアプリケーション23からのサーバ接続要求と初期情報を受信し、クライアント側装置1に必要なサービスを提供するためのアプリケーション(ソフトウェア)を起動して、ステップS42に進む。
ステップS42では、サーバアプリケーション21は、ステップS41で受信した初期情報に含まれるセキュアチップ情報とクライアント情報を、セキュアサーバ22のセキュアチップマネージャモジュール102に供給する。セキュアチップマネージャモジュール102は、ステップS61において、サーバアプリケーション21からのセキュアチップ情報とクライアント情報を受信し、そのうちのセキュアチップ情報を、セキュアチップ処理モジュール23に送信する。
セキュアチップ処理モジュール23は、ステップS81において、セキュアチップマネージャモジュール102からのセキュアチップ情報に基づき、セキュアチップ11からのアクセスに対する処理の範囲を設定する。
即ち、セキュアチップ処理モジュール23は、様々なセキュアチップやサービスの暗号関連処理を行うことができるようになっており、さらに、その様々なセキュアチップやサービスの暗号関連処理に必要な鍵を内蔵している。そして、セキュアチップ11が、例えば、電子マネーサービスのみの提供を受けうるものであれば、セキュアチップ処理モジュール23は、セキュアチップ11からのアクセスに対して、電子マネーサービスを提供するのに必要な暗号関連処理のみを行う(許可する)。また、電子マネーサービスにおけるデータの暗号化/復号に使用する鍵があらかじめ決まっている場合には、セキュアチップ処理モジュール23は、セキュアチップ11からのアクセスに対して、電子マネーサービスにおけるデータの暗号化/復号に使用する鍵のみの使用のみを許可し、他のサービスにおけるデータの暗号化/復号に使用する鍵の使用は許可しない。
一方、セキュアチップマネージャモジュール102は、ステップS61でサーバアプリケーション21から受信したセキュアチップ情報とクライアント情報に基づき、セキュアチップ11とクライアントアプリケーション12に対応した処理を行う状態となる。
即ち、セキュアチップマネージャモジュール102は、各種のセキュアチップやクライアントアプリケーションに対応した処理を行うことができるようになっており、セキュアチップマネージャモジュール102は、ステップS61でサーバアプリケーション21から受信したセキュアチップ情報とクライアント情報に基づき、セキュアチップ11とクライアントアプリケーション12に対応した処理を行う状態となる。
例えば、セキュアチップマネージャモジュール102は、セキュアチップ11に対する処理を行うのに必要なリソースを確保するとともに、クライアント側装置1のセキュアチップ11の種別(例えば、ICカードに内蔵されるセキュアチップであるとか、携帯電話機に内蔵されるセキュアチップであるとかなど)に対応するコマンド体系を表す情報であるコマンド種別と、セキュアチップ11の暗号処理種別を、セキュアチップ情報等から認識し、その後は、クライアント側装置1に対して送信されるコマンド等に対して、セキュアチップ11の暗号処理種別に対応した暗号化等を行う状態となる。
そして、セキュアチップマネージャモジュール102は、ステップS62において、セキュアチップコマンドモジュール101に対し、初期化の指令を、セキュアチップ11のコマンド種別とともに送信し、セキュアチップコマンドモジュール101は、ステップS51において、その指令とコマンド種別を受信して、自身の状態を、セキュアチップ11に対応した処理を行うことができるように初期化する。即ち、これにより、セキュアチップコマンドモジュール101は、サーバアプリケーション21からのコマンドの作成の依頼に対して、セキュアチップ11用のコマンド(セキュアチップ11のコマンド種別が表すコマンド体系のコマンド)を作成する状態となる。
その後、サーバアプリケーション21は、例えば、セキュアチップ処理モジュール23との間で、いわゆるなりすましを防止するための相互認証を行い、その相互認証が成功すると、セキュアチップ11とセキュアチップ処理モジュール23との間でも、なりすましを防止するための認証が行われる。
ここで、セキュアチップ11とセキュアチップ処理モジュール23との間の認証は、セキュアチップ11の暗号処理種別に基づいて行われる。即ち、セキュアチップ11の暗号処理種別が、例えば、チャレンジアンドレスポンス方式の相互認証を表している場合には、セキュアチップ11とセキュアチップ処理モジュール23との間では、チャレンジアンドレスポンス方式による相互認証が行われる。なお、チャレンジアンドレスポンス方式では、セキュアチップ処理モジュール23は(セキュアチップ11でも同様)、乱数を発生し、その乱数を暗号化して、セキュアチップ11との間でやりとりすることにより、相互認証を行う。この相互認証が成功すると、例えば、その相互認証時に、セキュアチップ処理モジュール23が発生した乱数が、セキュアチップ11とセキュアチップ処理モジュール23との間のセッションを識別するためのセッションキーとされる。
この後、サーバ側装置2では、セキュリティチップ11に送信するコマンド(コマンドに付随するパラメータその他のデータを含む)は、セッションキーを鍵として暗号化されて、クライアント側装置1に送信される。また、クライアント側装置1でも、セキュリティチップ11からサーバ側装置2に送信されるデータ等は、セキュリティチップ11において、セッションキーを鍵として暗号化されて、サーバ側装置2に送信される。
このように、クライアント側装置1とサーバ側装置2それぞれにおいて、データ等がセッションキーを鍵として暗号化されて送受信されることにより、そのクライアント側装置1とサーバ側装置2との間の通信路の暗号化、即ち、いわばVPN(Virtual Private Network)が実現される。なお、セッションキーを鍵として用いた暗号化は、セキュアチップ11の暗号処理種別が表すアルゴリズムにしたがって行われる。
サーバアプリケーション21は、ステップS43において、セキュアチップ11に送信するコマンドの作成の要求を、セキュアチップコマンドモジュール101に送信し、セキュアチップコマンドモジュール101は、ステップS52において、サーバアプリケーション21からのコマンドの作成の要求を受信する。
そして、セキュアチップコマンドモジュール101は、ステップS53において、サーバアプリケーション21からのコマンドの作成の要求に応じて、セキュアチップ11用のコマンドを作成し、そのコマンドを暗号化して暗号情報とすることの要求を、セキュアチップマネージャモジュール102に供給する。セキュアチップマネージャモジュール102は、ステップS63において、セキュアチップコマンドモジュール101からの、コマンドを暗号化して暗号情報とすることの要求を受信して、ステップS64に進み、その要求を、セキュアチップ処理モジュール23に送信する。
即ち、いまの場合、通信路の暗号化に用いられるセッションキーは、セキュアチップ処理モジュール23内にあるので、セキュアチップマネージャモジュール102は、そのセッションキーによるコマンドの暗号化を、セキュアチップ処理モジュール23に要求する。
セキュアチップ処理モジュール23は、ステップS82において、セキュアチップマネージャモジュール102からの要求を受信し、その要求に応じて、コマンドを暗号化する。そして、セキュアチップ処理モジュール23は、ステップS83において、そのコマンドの暗号化により得られた暗号情報を、セキュアチップマネージャモジュール102に送信し、セキュアチップマネージャモジュール102は、ステップS65において、セキュアチップ処理モジュール23からの暗号情報を受信する。
そして、セキュアチップマネージャモジュール102は、ステップS66において、セキュアチップ処理モジュール23から受信した暗号情報を、セキュアチップコマンドモジュール101に送信する。
セキュアチップコマンドモジュール101は、ステップS54において、セキュアチップマネージャモジュール102からの暗号情報を受信して、ステップS55に進み、その暗号情報(暗号化されたコマンド)を、サーバアプリケーション21に送信する。
サーバアプリケーション21は、ステップS44において、セキュアチップコマンドモジュール101からの暗号情報を受信して、ステップS45に進み、その暗号情報(暗号化されたコマンド)を、例えば、クライアント側装置1に対するメッセージであるデバイス用データとともに、クライアントアプリケーション12に送信する。
クライアントアプリケーション12は、ステップS24において、サーバアプリケーション21からの暗号情報およびデバイス用データを受信して、ステップS25に進み、暗号情報を、セキュアチップ11に送信する。
セキュアチップ11は、ステップS13において、クライアントアプリケーション12からの暗号情報を受信し、その暗号情報を、セッションキーを用いてコマンドに復号する。さらに、セキュアチップ11は、そのコマンドに応じた処理を実行し、ステップS14において、そのコマンドに対応するレスポンスとしてのレスポンスデータを、クライアントアプリケーション12に送信する。なお、レスポンスデータは、セキュアチップ11において、必要に応じて、セッションキーを用いて暗号化されている。
クライアントアプリケーション12は、ステップS26において、セキュアチップ11からのレスポンスデータを受信して、ステップS27に進み、そのレスポンスデータを、サーバアプリケーション21に送信する。
サーバアプリケーション21は、クライアントアプリケーション12からのレスポンスデータを受信し、そのレスポンスデータに応じた処理を行い、あるいは、そのレスポンスデータを、セキュアチップコマンドモジュール101、セキュアチップマネージャモジュール102に送信する。
なお、ユーザがクライアント側装置1を操作し、何らかのデータ(ユーザ入力データ)を入力した場合には、クライアントアプリケーション12は、そのデータを、サーバアプリケーション21に送信する。
一方、セキュアチップマネージャモジュール102は、ステップS67において、セキュアチップ処理モジュールに対して、セッションキーの要求を送信する。
セキュアチップ処理モジュール23は、ステップS84において、セキュアチップマネージャモジュール102からのセッションキーの要求を受信して、ステップS85に進み、その要求に応じて、セキュアチップ11との相互認証で得たセッションキーを、セキュアチップマネージャモジュール102に送信する。
セキュアチップマネージャモジュール102は、ステップS68において、セキュアチップ処理モジュール23からのセッションキーを受信して保持する。
ここで、その後は、セッションキーを用いた暗号化は、セキュアチップマネージャモジュール102で行われ、より高い秘匿性が要求される暗号化は、セキュアチップ処理モジュール23内で行われる。
従って、このように、セッションキーを用いた暗号化を、セキュアチップマネージャモジュール102で行い、より高い秘匿性が要求される暗号化(暗号化を利用して行われる相互認証や、パッケージの作成などを含む)だけを、セキュアチップ処理モジュール23で行うようにすることにより、セキュアチップ処理モジュール23において、すべての暗号化(暗号関連処理)を行う場合に比較して、セキュアチップ処理モジュール23の負荷を軽減することができ、その結果、セキュアチップ処理モジュール23における処理時間を短くすることができる。
なお、耐タンパ性のあるセキュアチップ処理モジュール23を複数設け、その複数のセキュアチップ処理モジュール23に、異なるセキュアチップに対する暗号関連処理を分散して行わせることにより、1つあたりのセキュアチップ処理モジュール23の負荷を軽減することができる。
その後、サーバアプリケーション21は、ステップS46において、セキュアチップ11に送信するコマンドの作成の要求を、セキュアチップコマンドモジュール101に送信し、セキュアチップコマンドモジュール101は、ステップS56において、サーバアプリケーション21からのコマンドの作成の要求を受信する。
そして、セキュアチップコマンドモジュール101は、ステップS57において、サーバアプリケーション21からのコマンドの作成の要求に応じて、セキュアチップ11用のコマンドを作成し、そのコマンドを暗号化して暗号情報とすることの要求を、セキュアチップマネージャモジュール102に供給する。セキュアチップマネージャモジュール102は、ステップS69において、セキュアチップコマンドモジュール101からの、コマンドを暗号化して暗号情報とすることの要求を受信する。
セキュアチップコマンドモジュール101からの要求が、特別なコマンド以外のコマンドの暗号化の要求である場合には、セキュアチップマネージャモジュール102は、保持しているセッションキーで、コマンドを暗号化し、ステップS72において、その結果得られる暗号情報を、セキュアチップコマンドモジュール101に送信する。
一方、セキュアチップコマンドモジュール101からの要求が、特別なコマンドの暗号化の要求である場合、セキュアチップマネージャモジュール102は、ステップS70において、その特別なコマンドを実行する権利である実行権を表す権利書(権利証)(のデータ)の要求を、セキュアチップ処理モジュール23に送信する。
ここで、特別なコマンドとしては、例えば、セキュアチップ11に対するエリア定義領域やサービス定義領域(図8)の登録や削除を要求するコマンドなどがある。
セキュアチップ処理モジュール23は、ステップS86において、セキュアチップマネージャモジュール102からの要求を受信し、その要求に応じて、その特別なコマンドを実行する実行権を表す権利書(権利証)(のデータ)を生成して暗号化する。さらに、セキュアチップ処理モジュール23は、その権利書が正当なものであることを証明する証明書(のデータ)を、権利書の暗号化結果に付加し、ステップS87において、その証明書と権利書(の暗号化結果)とを、パッケージとして、セキュアチップマネージャモジュール102に送信する。
なお、セキュアチップ処理モジュール23は、過去に得たパッケージを記憶しており、セキュアチップマネージャモジュール102からの要求が、過去に生成された権利書を要求するものであり、その権利書を含むパッケージが記憶されている場合には、単に、そのパッケージを、セキュアチップマネージャモジュール102に送信する。
セキュアチップマネージャモジュール102は、ステップS71において、セキュアチップ処理モジュール23からのパッケージを受信して、ステップS72に進み、特別なコマンドをセクションキーで暗号化し、その暗号化結果とパッケージとをセットにした暗号情報を、セキュアチップコマンドモジュール101に送信する。
セキュアチップコマンドモジュール101は、ステップS58において、セキュアチップマネージャモジュール102からの暗号情報を受信して、ステップS59に進み、その暗号情報を、サーバアプリケーション21に送信する。
サーバアプリケーション21は、ステップS47において、セキュアチップコマンドモジュール101からの暗号情報を受信して、ステップS48に進み、その暗号情報を、例えば、クライアント側装置1に対するメッセージであるデバイス用データとともに、クライアントアプリケーション12に送信する。
クライアントアプリケーション12は、ステップS28において、サーバアプリケーション21からの暗号情報およびデバイス用データを受信して、ステップS29に進み、暗号情報を、セキュアチップ11に送信する。
セキュアチップ11は、ステップS15において、クライアントアプリケーション12からの暗号情報を受信し、その暗号情報を、セクションキーを用いて、コマンドに復号する。さらに、セキュアチップ11は、必要に応じて、コマンドの実行権を確認した上で、そのコマンドに応じた処理を実行し、ステップS16において、そのコマンドに対応するレスポンスとしてのレスポンスデータを、クライアントアプリケーション12に送信する。
クライアントアプリケーション12は、ステップS30において、セキュアチップ11からのレスポンスデータを受信して、ステップS31に進み、そのレスポンスデータを、サーバアプリケーション21に送信する。
サーバアプリケーション21は、ステップS49において、クライアントアプリケーション12からのレスポンスデータを受信し、そのレスポンスデータに応じた処理を行う。
その後、サーバアプリケーション21は、クライアント側装置1との通信を終了する場合には、ステップS50において、その旨のメッセージとしての終了通知を、クライアントアプリケーション12を送信する。クライアントアプリケーション12は、ステップS32において、サーバアプリケーション21からの終了通知を受信する。
上述したように、セキュアサーバ22(セキュアチップコマンドモジュール101およびセキュアチップマネージャモジュール102)と、セキュアチップ処理モジュール23とは、例えば、暗号処理種別その他の仕様が異なる複数のセキュアチップ11に対応することができるように構成することができる。そして、セキュアサーバ22とセキュアチップ処理モジュール23において、クライアント側装置1から送信されてくるセキュアチップ11のセキュアチップ情報に応じて、セキュアチップ11に対応した処理を行うことにより、暗号処理種別その他の仕様が異なるセキュアチップ11ごとに、サーバアプリケーション21を変更する必要がなくなる。即ち、各種の仕様のセキュリティチップ11に対して、同一のサーバアプリケーション21を使用することができる。
次に、図11は、セキュアチップ処理モジュール23の構成例を示すブロック図である。
セキュアチップ処理モジュール23は、例えば、セキュアチップ処理部111、認証部112、アクセスコントロールリスト記憶部113、暗号処理部114、および鍵管理部115から構成される。
セキュアチップ処理部111は、セキュアチップ処理モジュール23の全体を制御し、外部の装置との間のデータの入出力や、外部の装置からの要求に対する応答などを管理する。
例えば、セキュアチップ処理部111は、上述したサーバアプリケーション21や、セキュアサーバ22、その他の外部の装置から要求された暗号関連処理が許可されているか否かの確認を認証部112に行わせ、許可されている場合のみ、その要求された暗号関連処理を暗号処理部114に行わせる。また、セキュアチップ処理部111は、暗号関連処理の結果が暗号処理部114から供給されてきたとき、それを、外部の装置に送信する。
認証部112は、セキュアチップ処理部111からの要求に応じて、セキュアチップ処理部111に対して外部の装置から要求されたアクセス(暗号関連処理)が許可されているか否かの確認を、後述するアクセスコントロールリスト記憶部113に記憶されているアクセスコントロールリストを参照して行う。認証部112による確認の結果はセキュアチップ処理部111に対して出力される。また、認証部112は、外部の装置からアクセスがあった場合に、その外部の装置との間で認証を行う。認証部112は、その他、例えば、上述したセッションキーとなる乱数の発生なども行う。
なお、認証部112は、セキュアチップ処理部111と併せた形で1つの機能として実装することも可能であり、この場合、セキュアチップ処理部111と認証部112とを併せた1つの機能部は、上述したようなセキュアチップ処理部111の処理と、認証部112の処理を行う。
アクセスコントロールリスト記憶部113は、アクセスコントロールリストを記憶している。
ここで、アクセスコントロールリストは、セキュアチップ処理モジュール23に対してアクセスを要求してくる外部の装置としてのアプリケーション、またはその外部の装置を操作するオペレータ(操作者)を識別するID(Identification)に対応付けて、そのアプリケーションまたはオペレータに許可されているアクセス(暗号関連処理)の内容が記述されているリストで、その記述内容の詳細については、後述する。
暗号処理部114は、暗号関連処理(例えば、鍵の登録/削除や、データの暗号化/復号など)がセキュアチップ処理部111から依頼されたとき、その暗号関連処理を行う。また、暗号処理部114は、適宜、暗号関連処理の結果をセキュアチップ処理部111に返却する。
ここで、暗号処理部114は、セキュアチップ処理部111から依頼された暗号関連処理に、鍵が必要な場合は、その鍵を、鍵管理部115から取得し、その鍵を用いて、暗号関連処理を行う。なお、鍵管理部115から取得された鍵が暗号化されている場合、暗号処理部114は、それを復号し、復号して得られた鍵を用いてセキュアチップ処理部111から依頼された暗号関連処理を行う。
鍵管理部115は、鍵の管理等を行う。即ち、鍵管理部115は、例えば、鍵を暗号化して、暗号化された状態の鍵をキーDB116に保存する。また、鍵管理部115は、例えば、暗号処理部114からの要求に応じて、キーDB116に保存されている鍵を暗号化された状態のまま提供する。
キーDB116は、例えば、鍵管理部115から供給される、暗号化された状態の鍵等を記憶する。
ここで、図11においては、キーDB116はセキュアチップ処理モジュール23の外部に外部記憶装置として設けられているが、セキュアチップ処理モジュール23の内部に設けることも可能である。
なお、キーDB116が外部記憶装置として設けられる場合、キーDB116からの必要な鍵の取得は、鍵管理部115によって行うのではなく、キーDB116にアクセス可能な所定のアプリケーション(ソフトウェア)によって行い、その所定のアプリケーションによって取得した鍵を、セキュアチップ処理モジュール23に供給するようにすることができる。
また、キーDB116を、セキュアチップ処理モジュール23の内部に設ける場合には、キーDB116には、鍵を暗号化せずに保持させることができ、この場合、鍵管理部115は、キーDB116に保持された、暗号化されていない鍵(いわゆる平文)をそのまま暗号処理部114に出力する。
次に、例えば、サーバ側装置2を用いてサービスを提供しようとするサービス提供者は、そのサービスの提供のために、クライアント側装置1とサーバ側装置2との間でやりとりされるデータ(コマンドを含む)の暗号化に用いる鍵や、セキュアチップ11のエリア定義領域(サービス定義領域)にアクセスするためのサービスキー(エリアキー)としての鍵などを、セキュアチップ処理モジュール23を介して、キーDB116に登録する必要がある。
キーDB116への鍵の登録は、例えば、図12に示すように、サービス提供者のオペレータが、鍵を管理するためのアプリケーションである鍵管理アプリケーション121を操作することにより行う。
ここで、鍵管理アプリケーション121は、ソフトウェアであり、例えば、図6に示したコンピュータ33と同様に構成されるコンピュータにインストールされて実行される。また、鍵管理アプリケーション121から、セキュアチップ処理モジュール23へのアクセスは、必要に応じて、API(Application Programming Interface)を介して行われる。
なお、サービス提供者のオペレータには、例えば、サービス提供者の指示にしたがって、鍵の登録等のための操作を行う、いわば補助者としてのオペレータと、その補助者や鍵を管理する鍵管理者としてのオペレータとが存在する。鍵管理者としてのオペレータも、図13に示すように、鍵管理アプリケーション121を介して、セキュアチップ処理モジュール23にアクセスすることができる。
次に、図14は、図11のアクセスコントロールリスト記憶部113に記憶されているアクセスコントロールリストの記述内容を示す図である。
アクセスコントロールリストには、大きく分けて、「アクセスコントロール情報」、「フォーマット情報」、「鍵アクセス情報」、「アプリ用認証情報」、および「オペレーション用アクセス用認証情報」が記述される。
「アクセスコントロール情報」は、アクセスコントロールリストに関する基本的な情報であり、有効期間(期限)やアクセスの回数に制限がある場合のその回数(1回/無制限など)が含まれる。
「フォーマット情報」では、フォーマット名(フォーマットのID)とその他のフォーマット情報とが対応付けられている。ここで、フォーマット名とは、例えば、セキュアチップの仕様を表す情報であり、その他のフォーマット情報には、それに対応付けられているフォーマット名で特定される仕様のセキュアチップに形成されているエリア定義領域のエリアコードやサービス定義領域のサービスコード、そのエリア定義領域やサービス定義領域にアクセスするための鍵を特定する鍵ID、その鍵のバージョンである鍵バージョンなどが含まれる。
「鍵アクセス情報」は、アプリケーション(サーバアプリケーション21や鍵管理アプリケーション121などの外部のソフトウエア)やオペレータに共通のアクセス権を表す情報である。
「アプリ用認証情報」では、アプリケーションを特定するアプリIDに、そのアプリIDによって特定されるアプリケーションの認証に関する「アプリ認証情報」としての、例えば、その認証に用いられる鍵の情報、認証に利用する暗号化(復号)のアルゴリズムを表す情報、公開鍵を用いて認証を行う場合のその公開鍵の証明書などが対応付けられている。さらに、「アプリ用認証情報」において、アプリIDに対応付けられている情報としては、その他、そのアプリIDで特定されるアプリケーションに許可される暗号関連処理の情報(認証、鍵の変更、(コマンドを実行するための)実行権の作成、通信路の暗号化(コマンドの暗号化)など)などがある。
ここで、アプリIDによって特定されるアプリケーションには、クライアントアプリケーション12や、サーバアプリケーション21、鍵管理アプリケーション121などがある。なお、クライアントアプリケーション12とサーバアプリケーション21とは、それらがセットになって、あるサービスを提供するので、あるアプリIDによれば、クライアントアプリケーション12とサーバアプリケーション21の両方が特定される。
「オペレーション用アクセス用認証情報」では、オペレータを特定するオペレータIDに、そのオペレータIDによって特定されるオペレータの認証に関する「オペレータ認証情報」としての、例えば、その認証に用いられる鍵の情報、認証に利用する暗号化(復号)のアルゴリズムを表す情報、公開鍵を用いて認証を行う場合のその公開鍵の証明書などが対応付けられている。さらに、「オペレーション用アクセス用認証情報」において、オペレータIDに対応付けられている情報としては、その他、そのオペレータIDで特定されるオペレータに許可される行為、即ち、オペレータが要求することができる暗号関連処理の情報(鍵の登録(追加)や、参照、変更、削除など)などがある。
以上のように、アクセスコントロールリストでは、アプリケーションを特定するアプリIDと、そのアプリケーションに許可する暗号関連処理を表す情報とが対応付けられている。さらに、アクセスコントロールリストでは、オペレータを特定するオペレータID(特定情報)と、そのオペレータに許可する暗号関連処理を表す情報とが対応付けられている。
次に、図15を参照して、オペレータが鍵管理アプリケーション121を操作して、セキュアチップ処理モジュール23に、鍵/アクセス権(鍵に対するアクセス権を表す情報)を登録する場合の、鍵管理アプリケーション121とセキュアチップ処理モジュール23の動作について説明する。
サービス提供者のオペレータが、例えば、あるサービスの提供のために行われる暗号関連処理で使用される鍵/アクセス権を、キーDB116に登録する場合には、オペレータは、鍵管理アプリケーション121(がインストールされたコンピュータ)を操作することにより、セキュアチップ処理モジュール23にアクセスし、例えば、オペレータにあらかじめ割り当てられているオペレータIDを入力する。
鍵管理アプリケーション121は、オペレータが入力したオペレータIDを、セキュアチップ処理モジュール23に送信する。セキュアチップ処理モジュール23では、認証部112において、鍵管理アプリケーション121からのオペレータIDが受信される。そして、認証部112は、ステップS101において、アクセスコントロールリスト(図14)を参照し、鍵管理アプリケーション121からのオペレータIDに対応付けられている「オペレータ認証情報」にしたがい、鍵管理アプリケーション121を操作しているオペレータ(鍵管理アプリケーション12から送信されてきたオペレータIDによって特定されるオペレータ)の認証を行う。
認証部112がオペレータの認証に成功すると、セキュアチップ処理モジュール23は、その後、その認証に成功したオペレータからのアクセスに対し、あらかじめ許可されている範囲内の処理を行う状態となる。
即ち、セキュアチップ処理モジュール23では、アクセスコントロールリスト(図14)において、認証に成功したオペレータのオペレータIDに対応付けられている情報にしたがい、そのオペレータ(が操作する鍵管理アプリケーション121)からのアクセスに対して実行が許可されている暗号関連処理のみを行い、また、使用が許可されている鍵のみに対するアクセスを許可する状態となる。
なお、認証部112がオペレータの認証に失敗した場合には、セキュアチップ処理モジュール23は、その後、処理を行わない。
その後、オペレータが、鍵/アクセス権の登録を要求するように、鍵管理アプリケーション121を操作すると、鍵管理アプリケーション121は、ステップS102において、鍵/アクセス権の登録の要求を、その登録の対象である鍵/アクセス権とともに、セキュアチップ処理モジュール23に送信する。
ここで、登録の対象である鍵/アクセス権は、例えば、オペレータが鍵管理アプリケーション121を操作することにより入力し、セキュアチップ処理モジュール23に送信することができる。また、鍵/アクセス権は、例えば、鍵管理アプリケーション121がインストールされたコンピュータに、ファイルとして記憶させておき、セキュアチップ処理モジュール23に送信することができる。
セキュアチップ処理モジュール23では、ステップS111において、セキュアチップ処理部111が、鍵管理アプリケーション121からの鍵/アクセス権とその登録の要求とを受信して、ステップS112に進み、認証済のオペレータ(鍵管理アプリケーション121を操作しているオペレータ)に対して、登録の要求があった鍵/アクセス権の登録が許可されているかどうかの問い合わせを、認証部112に送信する。
認証部112は、ステップS131において、セキュアチップ処理部111からの問い合わせを受信して、ステップS132に進み、その問い合わせに対して、認証済のオペレータに鍵/アクセス権の登録が許可されているかどうかを、アクセスコントロールリストを参照することにより確認する。
そして、認証部112は、鍵/アクセス権の登録が許可されていることが確認された場合、ステップS133において、鍵/アクセス権の登録が許可されている旨を、セキュアチップ処理部111に送信する。
なお、認証部112において、鍵/アクセス権の登録が許可されていることが確認されなかった場合には、その旨が、セキュアチップ処理部111に送信され、セキュアチップ処理モジュール23は、その後、処理を行わない。
セキュアチップ処理部111は、ステップS113において、認証部112からの、鍵/アクセス権の登録が許可されている旨を受信して、ステップS114に進み、暗号処理部114に対して、鍵管理アプリケーション121からの鍵/アクセス権を送信することにより、その登録を要求する。
暗号処理部114は、ステップS141において、セキュアチップ処理部111からの鍵/アクセス権を受信して、ステップS142に進み、その鍵/アクセス権を復号し、鍵管理部115に供給する。
ここで、鍵管理アプリケーション121からセキュアチップ処理モジュール23に送信されてくる鍵/アクセス権は、その登録用の鍵である鍵登録用鍵で暗号化されている。鍵/アクセス権が、例えば、公開鍵方式で暗号化されている場合、鍵登録用鍵は、公開鍵であり、暗号処理部114は、その公開鍵と対になる秘密鍵を用いて、暗号化されている鍵/アクセス権を復号する。また、鍵/アクセス権が、例えば、対称鍵(共通鍵)方式で暗号化されている場合、鍵登録用鍵は、共通鍵であり、暗号処理部114は、その共通鍵(と同一の鍵である共通鍵)を用いて、暗号化されている鍵/アクセス権を復号する。
なお、暗号化されている鍵/アクセス権の復号に用いられる鍵(秘密鍵または共通鍵)は、キーDB116に保存されており、暗号処理部114は、鍵/アクセス権の復号に際し、その復号に用いる鍵を、鍵管理部115に要求して取得する。
鍵管理部115は、ステップS151において、暗号処理部114からの鍵/アクセス権を暗号化し、キーDB116に供給して記憶(保存)させる。
その後、暗号処理部114は、ステップS143において、鍵/アクセス権の登録が終了した旨のメッセージを、セキュアチップ処理部111に送信する。セキュアチップ処理部111は、ステップS115において、暗号処理部114からの、鍵/アクセス権の登録が終了した旨のメッセージを受信して、ステップS116に進み、そのメッセージを、鍵管理アプリケーション121に送信する。鍵管理アプリケーション121は、ステップS103において、セキュアチップ処理部111からのメッセージを受信する。
次に、図16を参照して、オペレータが鍵管理アプリケーション121を操作して、セキュアチップ処理モジュール23から、鍵/アクセス権を削除する場合の、鍵管理アプリケーション121とセキュアチップ処理モジュール23の動作について説明する。
サービス提供者のオペレータが、例えば、ある暗号関連処理で使用されている鍵/アクセス権を、キーDB116から削除する場合には、オペレータは、図15で説明した鍵/アクセス権の登録を行う場合と同様に、鍵管理アプリケーション121を操作することにより、セキュアチップ処理モジュール23にアクセスし、例えば、オペレータにあらかじめ割り当てられているオペレータIDを入力する。
鍵管理アプリケーション121は、オペレータが入力したオペレータIDを、セキュアチップ処理モジュール23に送信する。セキュアチップ処理モジュール23では、認証部112において、鍵管理アプリケーション121からのオペレータIDが受信される。そして、認証部112は、ステップS171において、アクセスコントロールリスト(図14)を参照し、鍵管理アプリケーション121からのオペレータIDに対応付けられている「オペレータ認証情報」にしたがい、鍵管理アプリケーション121を操作しているオペレータの認証を行う。
認証部112がオペレータの認証に成功すると、セキュアチップ処理モジュール23は、その後、その認証に成功したオペレータからのアクセスに対し、あらかじめ許可されている範囲内の処理を行う状態となる。
即ち、セキュアチップ処理モジュール23では、アクセスコントロールリスト(図14)において、認証に成功したオペレータのオペレータIDに対応付けられている情報にしたがい、そのオペレータ(が操作する鍵管理アプリケーション121)からのアクセスに対して実行が許可されている暗号関連処理のみを行い、また、使用が許可されている鍵のみに対するアクセスを許可する状態となる。
なお、認証部112がオペレータの認証に失敗した場合には、セキュアチップ処理モジュール23は、その後、処理を行わない。
その後、オペレータが、鍵/アクセス権の削除を要求するように、鍵管理アプリケーション121を操作すると、鍵管理アプリケーション121は、ステップS172において、鍵/アクセス権の削除の要求を、その削除の対象の鍵の鍵情報(例えば、鍵IDや鍵バージョンなど)とともに、セキュアチップ処理モジュール23に送信する。
ここで、削除の対象の鍵の鍵情報は、例えば、オペレータが鍵管理アプリケーション121を操作することにより入力する。
セキュアチップ処理モジュール23では、ステップS181において、セキュアチップ処理部111が、鍵管理アプリケーション121からの鍵/アクセス権の削除の要求と鍵情報とを受信して、ステップS182に進み、認証済のオペレータに対して、削除の要求があった鍵/アクセス権の削除が許可されているかどうかの問い合わせを、認証部112に送信する。
認証部112は、ステップS201において、セキュアチップ処理部111からの問い合わせを受信して、ステップS202に進み、その問い合わせに対して、認証済のオペレータに鍵/アクセス権の削除が許可されているかどうかを、アクセスコントロールリストを参照することにより確認する。
そして、認証部112は、鍵/アクセス権の削除が許可されていることが確認された場合、ステップS203において、鍵/アクセス権の削除が許可されている旨を、セキュアチップ処理部111に送信する。
なお、認証部112において、鍵/アクセス権の登録が許可されていることが確認されなかった場合には、その旨が、セキュアチップ処理部111に送信され、セキュアチップ処理モジュール23は、その後、処理を行わない。
セキュアチップ処理部111は、ステップS183において、認証部112からの、鍵/アクセス権の削除が許可されている旨を受信して、ステップS184に進み、暗号処理部114に対して、鍵管理アプリケーション121からの鍵情報を送信することにより、その鍵情報によって特定される鍵/アクセス権の削除を要求する。
暗号処理部114は、ステップS211において、セキュアチップ処理部111からの鍵情報を受信して、ステップS212に進み、その鍵情報によって特定される鍵/アクセス権の削除を、鍵管理部115に要求する。
ここで、暗号処理部114は、セキュアチップ処理部111からの鍵情報によって特定される鍵/アクセス権の削除の他、必要に応じて、その鍵/アクセス権に関連する鍵/アクセス権の削除も、鍵管理部115に要求する。即ち、セキュアチップ処理部111からの鍵情報によって特定される鍵が、例えば、ある階層のエリア定義領域にアクセスするためのエリアキーである場合には、暗号処理部114は、そのエリアキーの他、そのエリア定義領域の階層よりも下の階層のエリア定義領域やサービス定義領域のエリアキーやサービスキーの削除も、必要に応じて要求する。
なお、鍵管理部115への鍵/アクセス権の削除の要求は、暗号処理部114からではなく、セキュアチップ処理部111から直接行うことが可能である。
鍵管理部115は、ステップS221において、キーDB116から、暗号処理部114から要求のあった鍵/アクセス権を削除する。
その後、暗号処理部114は、ステップS213において、鍵/アクセス権の削除が終了した旨のメッセージを、セキュアチップ処理部111に送信する。セキュアチップ処理部111は、ステップS185において、暗号処理部114からの、鍵/アクセス権の削除が終了した旨のメッセージを受信して、ステップS186に進み、そのメッセージを、鍵管理アプリケーション121に送信する。鍵管理アプリケーション121は、ステップS173において、セキュアチップ処理部111からのメッセージを受信する。
次に、図17を参照して、オペレータが鍵管理アプリケーション121を操作して、セキュアチップ処理モジュール23に、特定のコマンドを実行するための実行権を表す権利書を含むパッケージの生成と、そのパッケージを含ませる権利書の暗号化に用いる鍵についての鍵/アクセス権の登録を要求する場合の、鍵管理アプリケーション121とセキュアチップ処理モジュール23の動作について説明する。
なお、図17では、セキュアチップ処理モジュール23の認証部112において、図15や図16で説明した、鍵管理アプリケーション121を操作するオペレータの認証が、既に行われ、そのオペレータの認証が成功しているものとする。
オペレータが、特定のコマンドを実行するための実行権を表す権利書を含むパッケージの生成と、そのパッケージを含ませる権利書の暗号化に用いる鍵についての鍵/アクセス権の登録を要求するように、鍵管理アプリケーション121を操作すると、鍵管理アプリケーション121は、ステップS231において、パッケージの生成と鍵/アクセス権の登録の要求を、その登録の対象である鍵/アクセス権とともに、セキュアチップ処理モジュール23に送信する。
ここで、登録の対象である鍵/アクセス権は、例えば、オペレータが鍵管理アプリケーション121を操作することにより入力し、セキュアチップ処理モジュール23に送信することができる。また、鍵/アクセス権は、例えば、鍵管理アプリケーション121がインストールされたコンピュータに、ファイルとして記憶させておき、セキュアチップ処理モジュール23に送信することができる。
セキュアチップ処理モジュール23では、ステップS241において、セキュアチップ処理部111が、鍵管理アプリケーション121からの鍵/アクセス権とその登録の要求、およびパッケージの生成の要求を受信して、ステップS242に進み、認証済のオペレータ(鍵管理アプリケーション121を操作しているオペレータ)に対して、登録の要求があった鍵/アクセス権の登録と、生成の要求があったパッケージの生成が許可されているかどうかの問い合わせを、認証部112に送信する。
認証部112は、ステップS261において、セキュアチップ処理部111からの問い合わせを受信して、ステップS262に進み、その問い合わせに対して、認証済のオペレータに鍵/アクセス権の登録とパッケージの生成とが許可されているかどうかを、アクセスコントロールリストを参照することにより確認する。
そして、認証部112は、鍵/アクセス権の登録とパッケージの生成とが許可されていることが確認された場合、ステップS263において、鍵/アクセス権の登録とパッケージの生成が許可されている旨を、セキュアチップ処理部111に送信する。
なお、認証部112において、鍵/アクセス権の登録とパッケージの生成の両方が許可されていることが確認されなかった場合には、その旨が、セキュアチップ処理部111に送信され、セキュアチップ処理モジュール23は、その後、処理を行わない。
セキュアチップ処理部111は、ステップS243において、認証部112からの、鍵/アクセス権の登録とパッケージの生成が許可されている旨を受信して、ステップS244に進み、鍵管理部115に対して、鍵管理アプリケーション121からの鍵/アクセス権を送信することにより、その登録を要求する。
鍵管理部115は、ステップS281において、セキュアチップ処理部111からの鍵/アクセス権を受信して暗号化し、キーDB116に供給して記憶させる。
その後、鍵管理部115は、ステップS282において、鍵/アクセス権の登録が終了した旨のメッセージを、セキュアチップ処理部111に送信する。セキュアチップ処理部111は、ステップS245において、暗号処理部114からの、鍵/アクセス権の登録が終了した旨のメッセージを受信して、ステップS246に進み、暗号処理部114に対して、パッケージの生成の要求を送信する。
暗号処理部114は、ステップS271において、セキュアチップ処理部111からのパッケージの生成の要求を受信して、ステップS272に進み、特別なコマンドを実行する実行権を表す権利書と、その権利書が正当なものであることを証明する証明書とを生成する。さらに、暗号処理部114は、ステップS281でキーDB116に登録(記憶)された鍵を、鍵管理部115に要求することにより取得し、その鍵を用いて、権利書を暗号化する。そして、暗号処理部114は、権利書の暗号化結果と証明書とのセットをパッケージとして、鍵管理部115に供給する。
鍵管理部115は、ステップS283において、暗号処理部114からのパッケージを、キーDB116に保存する。
その後、暗号処理部114は、ステップS273において、パッケージの生成が終了した旨のメッセージを、セキュアチップ処理部111に送信する。セキュアチップ処理部111は、ステップS247において、暗号処理部114からの、パッケージの生成が終了した旨のメッセージを受信して、ステップS248に進み、鍵/アクセス権の登録とパッセージの生成が終了した旨のメッセージを、鍵管理アプリケーション121に送信する。鍵管理アプリケーション121は、ステップS232において、セキュアチップ処理部111からのメッセージを受信する。
次に、図18を参照して、オペレータが鍵管理アプリケーション121を操作して、セキュアチップ処理モジュール23に、図15で説明した鍵登録用鍵の生成を要求する場合の、鍵管理アプリケーション121とセキュアチップ処理モジュール23の動作について説明する。
なお、図18でも、セキュアチップ処理モジュール23の認証部112において、図15や図16で説明した、鍵管理アプリケーション121を操作するオペレータの認証が、既に行われ、そのオペレータの認証が成功しているものとする。さらに、図18では、セキュアチップ処理モジュール23において、アクセスコントロールリストを参照することにより、認証済のオペレータに対して、鍵登録用鍵の生成が許可されていることが、既に確認されているものとする。
オペレータが、鍵登録用鍵の生成を要求するように、鍵管理アプリケーション121を操作すると、鍵管理アプリケーション121は、ステップS301において、鍵登録用鍵の生成の要求を、セキュアチップ処理モジュール23に送信する。
セキュアチップ処理モジュール23では、ステップS311において、セキュアチップ処理部111が、鍵管理アプリケーション121からの鍵登録用鍵の生成の要求を受信して、ステップS312に進み、その要求を暗号処理部114に供給する。
暗号処理部114は、ステップS321において、セキュアチップ処理部111からの、鍵登録用鍵の生成の要求を受信して、ステップS322に進み、鍵登録用鍵として、上述した公開鍵方式の公開鍵と秘密鍵、または対称鍵方式の共通鍵を生成する。そして、暗号処理部114は、鍵登録用鍵(秘密鍵または共通鍵)を、鍵管理部115に供給する。
鍵管理部115は、ステップS341において、暗号処理部114からの鍵登録用鍵を暗号化し、キーDB116に供給して記憶させる。
その後、暗号処理部114は、ステップS323において、鍵登録用鍵(公開鍵または共通鍵)を、セキュアチップ処理部111に送信する。なお、暗号処理部114では、鍵登録用鍵を暗号化してから、セキュアチップ処理部111に送信することができる。
セキュアチップ処理部111は、ステップS313において、暗号処理部114からの鍵登録用鍵を受信して、ステップS314に進み、その鍵登録用鍵を、鍵管理アプリケーション121に送信する。鍵管理アプリケーション121は、ステップS302において、セキュアチップ処理部111からの鍵登録用鍵を受信して保持する。
ここで、サービス提供者のオペレータには、上述したように、サービス提供者の指示にしたがって、鍵の登録等のための操作を行う補助者としてのオペレータと、その補助者や鍵を管理する鍵管理者としてのオペレータとが存在することがある。
例えば、補助者が、図15で説明した鍵/アクセス権の登録のための操作を行う場合、補助者に対して、登録の対象の鍵を平文のまま渡してしまうと、補助者に、その鍵(の内容)を知られてしまうおそれがある。
そこで、鍵管理者が、図18で説明した鍵登録用鍵の登録のための操作を行い、その結果得られる鍵登録用鍵を用いて、セキュアチップ処理モジュール23に登録しようとする鍵を暗号化し、その暗号化された鍵を、補助者に渡すことで、補助者に、登録しようとする鍵を知られてしまうことを防止することができる。
以上のように、セキュアチップ処理モジュール23では、鍵情報群(鍵ID、鍵バージョン)、その利用方法(鍵に対する操作(登録/変更/削除など)や暗号関連処理(認証/暗号化/権利書の作成など))、鍵情報を利用者する人(オペレータ)やソフトウェアなどの認証方法、および認証に必要となる鍵情報(鍵ID、鍵バージョン、証明書など)を記載可能なアクセスコントロールリストを用意し、そのアクセスコントロールリストにしたがい、鍵情報(鍵ID、鍵バージョン、鍵値)、その利用方法(鍵に対する操作(登録/変更/削除など)や暗号関連処理(認証/暗号化/権利書の作成など))、およびオペレータやソフトウェアなどの認証方法を一括管理することにより、オペレータの認証によって、そのオペレータに許可する操作を、容易に制御することが可能となる。
さらに、アクセスコントロールリストによれば、例えば、あるサービス提供者が提供するサービスに関するオペレーションを担当するオペレータのオペレータIDに対して、そのサービスに関するオペレーションのみを許可する情報を対応付けておくことにより、オペレータによる鍵情報群(鍵ID、鍵バージョン)へのアクセスや、鍵の登録、削除などを、サービス単位などの柔軟なレベルで許可することが可能となる。
なお、アプリケーションからのセキュアチップ処理モジュール23へのアクセスと、オペレータが鍵運用に関するオペレーションを行うことによるセキュアチップ処理モジュール23へのアクセスとについては、独立に管理することができる。しかしながら、これらのアクセスを独立に管理すると、統一的な管理を行うこと、ひいては、統一的なセキュリティを確保することが困難となる。さらに、アプリケーションからのセキュアチップ処理モジュール23へのアクセスと、オペレータによるセキュアチップ処理モジュール23へのアクセスとに関する保守も、別個独立に行う必要が生じる。
そこで、セキュリティチップ処理モジュール23では、アクセスコントロールリストにおいて、アプリケーションからのセキュアチップ処理モジュール23へのアクセスと、オペレータによるセキュアチップ処理モジュール23へのアクセスとを一元管理するようになっている。このようなアクセスコントロールリストによる一元管理により、鍵へのアクセスに関するセキュリティの向上や保守性を向上させることができる。
1 クライアント側装置, 2 サーバ側装置, 3,4 ネットワーク, 11 セキュアチップ, 12 クライアントアプリケーション, 13 R/W, 21 サーバアプリケーション, 22 セキュアサーバ, 23 セキュアチップ処理モジュール, 31 ICカード, 32 PC, 33 コンピュータ, 34 携帯電話機, 41 バス, 42 CPU, 43 ROM, 44 RAM, 45 ハードディスク, 46 出力部, 47 入力部, 48 通信部, 49 ドライブ, 50 入出力インタフェース, 51 リムーバブル記録媒体, 61 バス, 62 CPU, 63 ROM, 64 RAM, 65 ハードディスク, 66 出力部, 67 入力部, 68 通信部, 69 ドライブ, 70 入出力インタフェース, 71 リムーバブル記録媒体, 81 通信処理部, 82 データ処理部, 91 CPU, 92 暗号関連処理部, 93 メモリ, 101 セキュアチップコマンドモジュール, 102 セキュアチップマネージャモジュール, 111 セキュアチップ処理部, 112 認証部, 113 アクセスコントロールリスト記憶部, 114 暗号処理部, 115 鍵管理部, 116 キーDB, 121 鍵管理アプリケーション