(57)【特許請求の範囲】
【請求項１】
第１の情報処理装置と第２の情報処理装置とを備え、両者間で所定の暗号化プロトコルに基づいた暗号通信が可能な情報処理システムであって、
前記第１の情報処理装置は、
所定の暗号化プロトコルに基づき、当該暗号化プロトコルによる暗号通信処理の細かな手順を定めた所定の暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して前記第２の情報処理装置との間で暗号通信を行う第１の暗号通信処理部と、
複数の格納場所にそれぞれ前記暗号化プロトコルに用いられる暗号鍵を格納した鍵テーブルを保持する第１の暗号鍵格納部と、
前記鍵テーブルについて複数の格納ゾーンを設定し、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すゾーンテーブルを保持する暗号処理細則格納部と、
を有し、
前記第２の情報処理装置は、
前記暗号化プロトコルに基づく暗号通信を行う機能を有し、前記第１の暗号通信処理部によって開設された暗号通信路を介して前記第１の情報処理装置との間で暗号通信を行う第２の暗号通信処理部と、
前記暗号化プロトコルに用いられる暗号鍵を格納した第２の暗号鍵格納部と、
前記第１の情報処理装置に対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドを与える暗号通信路開設指示部と、
を有し、
前記暗号通信路開設コマンドには、前記第２の暗号鍵格納部に格納されている暗号鍵に対応する特定の暗号鍵についての前記鍵テーブル内の格納場所を示す格納場所指定情報が含まれており、
前記第１の暗号通信処理部は、前記暗号通信路開設コマンドを受けて、前記暗号通信路開設コマンドに含まれている前記格納場所指定情報によって指定された指定格納場所に格納されている暗号鍵を指定暗号鍵として読み出し、前記ゾーンテーブルを参照して前記指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則を指定暗号処理細則として認識し、前記指定暗号鍵を用いて、前記指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設することを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
鍵テーブルには、それぞれがキーバージョン番号によって特定される複数の格納場所が用意されており、個々の格納ゾーンは、１つもしくは複数の格納場所によって構成され、
暗号通信路開設コマンドには、格納場所指定情報として特定のキーバージョン番号が含まれており、
第１の暗号通信処理部は、前記キーバージョン番号によって特定される格納場所を指定格納場所として、指定暗号鍵の読出処理および指定暗号処理細則の認識処理を行うことを特徴とする情報処理システム。
【請求項３】
請求項２に記載の情報処理システムにおいて、
個々の格納ゾーンが、１つの格納場所もしくは連続するキーバージョン番号を有する複数の格納場所によって構成され、個々の格納ゾーンがキーバージョン番号の固有の数値範囲に対応づけられていることを特徴とする情報処理システム。
【請求項４】
請求項２または３に記載の情報処理システムにおいて、
鍵テーブル内の各格納場所には、それぞれキーＩＤによって特定される複数の格納庫が用意されており、これら複数の格納庫の全部もしくは一部に、それぞれ別個の暗号鍵が格納されており、
第１の暗号通信処理部は、暗号通信路開設コマンドに含まれるキーバージョン番号によって特定される格納場所内の複数の格納庫に格納されている暗号鍵を利用して暗号通信路を開設することを特徴とする情報処理システム。
【請求項５】
請求項１〜４のいずれかに記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、暗号通信路開設前に実行すべき第１の情報処理装置と第２の情報処理装置との間の相互認証処理の手順を定めた細則が含まれていることを特徴とする情報処理システム。
【請求項６】
請求項５に記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、相互認証処理のために第１の情報処理装置が生成する乱数として、真性乱数を用いるか、擬似乱数を用いるか、を定めた細則が含まれていることを特徴とする情報処理システム。
【請求項７】
請求項５に記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、相互認証処理および暗号通信処理に用いられる暗号鍵の数を定めた細則が含まれていることを特徴とする情報処理システム。
【請求項８】
請求項５に記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、相互認証処理を、認証用コマンドを用いて明示的に実施するか、認証用コマンドを用いずに暗黙的に実施するか、を定めた細則が含まれていることを特徴とする情報処理システム。
【請求項９】
請求項１〜４のいずれかに記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、開設された暗号通信路を介して第１の情報処理装置から第２の情報処理装置にレスポンスを送信する手順を定めた細則が含まれていることを特徴とする情報処理システム。
【請求項１０】
請求項９に記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、レスポンスデータを暗号化するか否かを定めた細則が含まれていることを特徴とする情報処理システム。
【請求項１１】
請求項９に記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、レスポンスデータにチェックコードを付与するか否かを定めた細則が含まれていることを特徴とする情報処理システム。
【請求項１２】
請求項１〜４のいずれかに記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、開設された暗号通信路を介して第２の情報処理装置から第１の情報処理装置にコマンドを送信する手順を定めた細則が含まれていることを特徴とする情報処理システム。
【請求項１３】
請求項１２に記載の情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、送信コマンドへのチェックコード付与に関する事項を定めた細則が含まれていることを特徴とする情報処理システム。
【請求項１４】
請求項１〜１３のいずれかに記載の情報処理システムにおいて、
第１の暗号通信処理部が、複数Ｎ通り（Ｎ≧２）の暗号化プロトコルに基づく暗号通信を行う機能を有し、前記Ｎ通りの暗号化プロトコルのうち、第２の情報処理装置から指定された指定暗号化プロトコルに基づく暗号通信を行うための暗号通信路を開設し、
鍵テーブルには、前記複数Ｎ通りの暗号化プロトコルのそれぞれに用いられる暗号鍵が格納されており、
第２の暗号通信処理部が、前記複数Ｎ通りの暗号化プロトコルのうちの少なくとも１つの特定の暗号化プロトコルに基づく暗号通信を行う機能を有し、当該特定の暗号化プロトコルに基づく暗号通信を行うために開設された暗号通信路を介して第１の情報処理装置との間で暗号通信を行い、
ゾーンテーブルは、個々の格納ゾーンと個々の暗号処理細則との対応関係に加えて、更に、個々の格納ゾーンと個々の暗号化プロトコルとの対応関係を示しており、
第１の暗号通信処理部は、前記ゾーンテーブルを参照して、指定暗号処理細則を認識するとともに、指定格納場所が所属する格納ゾーンに対応づけられている暗号化プロトコルを指定暗号化プロトコルとして認識し、前記指定暗号化プロトコルに基づき、指定暗号鍵を用いて、指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設することを特徴とする情報処理システム。
【請求項１５】
請求項１〜１４のいずれかに記載の情報処理システムにおいて、
第１の情報処理装置が、ＩＣカードに、GlobalPlatform （登録商標）の仕様に準拠した管理プログラムを組み込むことにより構成された装置であり、
ゾーンテーブルとして、個々の格納ゾーンに対して、それぞれ前記仕様に基づくパラメータ「ｉ」の特定の値を対応づけたテーブルを用いることを特徴とする情報処理システム。
【請求項１６】
請求項１〜１５のいずれかに記載の情報処理システムにおける第１の情報処理装置。
【請求項１７】
請求項１〜１５のいずれかに記載の情報処理システムにおける第２の情報処理装置。
【請求項１８】
請求項１〜１５のいずれかに記載の情報処理システムにおける第１の情報処理装置としてコンピュータを機能させるプログラム。
【請求項１９】
請求項１〜１５のいずれかに記載の情報処理システムにおける第２の情報処理装置としてコンピュータを機能させるプログラム。
【請求項２０】
第１の情報処理装置と第２の情報処理装置との間で、所定の暗号化プロトコルに基づいた暗号通信を行う暗号通信方法であって、
前記第１の情報処理装置が、所定の暗号化プロトコルに基づく暗号通信を行うプログラムを実行可能な状態に準備するプログラム準備段階と、
前記第１の情報処理装置が、複数の格納場所にそれぞれ前記暗号化プロトコルに用いられる暗号鍵を格納した鍵テーブルを準備する鍵テーブル準備段階と、
前記第１の情報処理装置が、前記鍵テーブル上に、１つもしくは複数の格納場所を含む格納ゾーンを複数組設定し、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すゾーンテーブルを準備するゾーンテーブル準備段階と、
前記第２の情報処理装置が、前記第１の情報処理装置に対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドを与える暗号通信路開設指示段階と、
前記第１の情報処理装置が、受信した前記暗号通信路開設コマンドに基づいて、前記所定の暗号化プロトコルに基づく暗号通信を行うための暗号通信路を開設する暗号通信路開設段階と、
前記第１の情報処理装置および前記第２の情報処理装置が、開設された暗号通信路を介して暗号通信を行う暗号通信段階と、
を有し、
前記暗号通信路開設コマンドには、前記鍵テーブル内の特定の格納場所を示す格納場所指定情報が含まれており、
前記暗号通信路開設段階では、前記暗号通信路開設コマンドに含まれている前記格納場所指定情報によって指定された指定格納場所に格納されている暗号鍵を指定暗号鍵として読み出し、前記ゾーンテーブルを参照して前記指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則を指定暗号処理細則として認識し、前記指定暗号鍵を用いて、前記指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設することを特徴とする暗号通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２組の情報処理装置の間で所定の暗号化プロトコルに基づいた暗号通信を行う情報処理システムおよび暗号通信方法に関し、特に、ＩＣカードと別な装置との間で暗号通信を行うのに適した暗号通信技術に関する。
【背景技術】
【０００２】
２組の情報処理装置間の通信の安全性を確保するためには、両者間にセキュアな暗号通信路を開設し、この暗号通信路を介して暗号通信を行うことが欠かせない。特に、スマートフォンやＩＣカードなどの携帯型の情報処理装置では、紛失によって悪意をもった者の手に渡る可能性があるため、十分なセキュリティ対策を講じておく必要がある。
【０００３】
最近は、スマートフォンをはじめとする携帯型端末装置が普及しており、これらの端末装置には、通常、ＳＩＭカードやＵＩＭカードと呼ばれているＩＣカードが装着されている。現在、このようなＩＣカードとして、Java Card（商標）やGlobalPlatform （登録商標）などの国際的な仕様に準拠したものが広く普及している。このＩＣカードと端末装置、あるいは、このＩＣカードと外部のサーバ装置との間では、所定の通信路を介して情報のやりとりが行われる。このとき、当該情報が機密性を有するものである場合には、セキュアな通信路を開設して暗号化された情報のやりとりを行う必要がある。
【０００４】
このような事情から、ＩＣカードと外部装置との間にセキュアな通信路を開設して暗号通信を行う様々な方法が提案されている。たとえば、下記の特許文献１には、所定の変換アルゴリズムに基づくデータ変換処理機能を有するプロキシ装置を介した通信を行うことにより、機密情報の漏洩を防止する技術が開示されている。また、特許文献２には、インターネットを介してＩＣカードとサーバ装置との間で情報のやりとりを行う際に、公開鍵暗号方式を利用した暗号化通信を行う技術が開示されており、特許文献３には、そのような暗号化通信の最中に、セキュリティに関わる異常発生が検知された場合に、速やかにシステム復旧処理を行う技術が開示されている。
【０００５】
一方、特許文献４には、サーバ装置側に、ＩＣカードと１対１に対応するＩＣカード対応領域を設け、このＩＣカード対応領域と利用者端末装置との間にセキュアな通信路を設定してサーバ装置とＩＣカードとを一体化する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−０５５９６１号公報
【特許文献２】特開２００２−２１７８９５号公報
【特許文献３】特開２００６−１９０２２２号公報
【特許文献４】特開２０１０−０７３１８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
２組の情報処理装置の間にセキュアな暗号通信路を開設するためには、両方の装置に、共通の暗号化プロトコルに基づいた暗号通信処理機能をもたせる必要がある。すなわち、送信側では所定の暗号鍵および所定の暗号化プロトコルを用いて、送信対象となる情報を暗号化して送り出し、受信側では、受信した暗号化情報を、送信側と同じ暗号鍵および暗号化プロトコルを用いて復号することになる。このため、２組の情報処理装置には、予め、特定の暗号鍵および暗号化プロトコルを用いた暗号通信処理機能が組み込まれることになる。
【０００８】
また、同じ暗号化プロトロルを採用した場合であっても、暗号通信処理の細かな手順を定めた暗号処理細則の設定を変えると、両者間で行われる具体的な暗号通信形態も変わってくる。このため、従来の一般的な情報処理システムの場合、暗号通信処理を行うためのプログラムを組み込む際に、特定の暗号化プロトコルを指定するとともに、特定の暗号処理細則の設定を行い、暗号化プロトコルとともに暗号処理細則を指定する作業が行われる。特に、ＩＣカードと別な装置との間で暗号通信を行う情報処理システムの場合、ＩＣカード側に管理プログラム（通常、ＳＤ（Security Domain）と呼ばれるプログラム）をインストールする際に、特定の暗号化プロトコルの指定および特定の暗号処理細則の設定が行われる。
【０００９】
しかしながら、近年、情報処理装置の通信相手は多様化してきており、１つのＩＣカードが、種々の状況に応じて、複数の相手と通信するケースも少なくない。たとえば、スマートフォンに装着されたＩＣカード（ＳＩＭカードやＵＩＭカード）の場合、スマートフォン内の複数のアプリケーションプログラムとの間で情報のやりとりを行うケースも少なくない。この場合、ハードウェア上は、ＩＣカードとスマートフォンとの間の二者通信ということになるが、ソフトウェア上は、ＩＣカード側の管理プログラム（上述したＳＤ（Security Domain）プログラム）とスマートフォン側の個々のアプリケーションプログラムとの間の個別の通信が行われることになる。
【００１０】
したがって、実用上は、同じ暗号化プロトロルを用いて暗号通信を行う場合であっても、当該暗号化プロトコルによる暗号通信処理の細かな手順を示す暗号処理細則を、その都度、通信相手に応じて設定できるようにするのが好ましい。たとえば、ＩＣカードがスマートフォンと通信する場合、スマートフォン内の各アプリケーションプログラムに応じて、その都度、任意の暗号処理細則を設定して暗号通信を行うことができるようにするのが好ましい。
【００１１】
しかしながら、従来の一般的なシステム、特にＩＣカードに対して通信を行うシステムでは、暗号通信を行う都度、任意の暗号処理細則を設定することは困難である。これは、現在普及しているＩＣカードが、国際的な仕様に準拠して設計されており、この仕様上、暗号通信処理の細かな手順を定めた暗号処理細則は、暗号通信処理を行うプログラムを組み込む際に初期設定することになっており、外部装置と通信を行う際にその都度設定することが想定されていなかったためである。
【００１２】
そこで本発明は、２組の情報処理装置の間に、所定の暗号化プロトコルに基づく暗号通信路を開設して、両者間でセキュアな通信を行う際に、暗号通信路開設の都度、暗号通信処理の細かな手順を定めた暗号処理細則を設定することを可能にする情報処理システムおよび暗号通信方法を提供することを目的とする。また、本発明は、特に、相互に通信を行う２組の情報処理装置のうちの一方がＩＣカードである場合に、ＩＣカードについての国際的な仕様に準拠した方法で、暗号通信路を開設するたびに、暗号処理細則の設定を可能にする具体的な方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
(1)   本発明の第１の態様は、第１の情報処理装置と第２の情報処理装置とを備え、両者間で所定の暗号化プロトコルに基づいた暗号通信が可能な情報処理システムにおいて、
第１の情報処理装置には、
所定の暗号化プロトコルに基づき、当該暗号化プロトコルによる暗号通信処理の細かな手順を定めた所定の暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して第２の情報処理装置との間で暗号通信を行う第１の暗号通信処理部と、
複数の格納場所にそれぞれ上記暗号化プロトコルに用いられる暗号鍵を格納した鍵テーブルを保持する第１の暗号鍵格納部と、
この鍵テーブルについて複数の格納ゾーンを設定し、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すゾーンテーブルを保持する暗号処理細則格納部と、
を設け、
第２の情報処理装置には、
上記暗号化プロトコルに基づく暗号通信を行う機能を有し、第１の暗号通信処理部によって開設された暗号通信路を介して第１の情報処理装置との間で暗号通信を行う第２の暗号通信処理部と、
上記暗号化プロトコルに用いられる暗号鍵を格納した第２の暗号鍵格納部と、
第１の情報処理装置に対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドを与える暗号通信路開設指示部と、
を設けるようにし、
暗号通信路開設コマンドには、第２の暗号鍵格納部に格納されている暗号鍵に対応する特定の暗号鍵についての鍵テーブル内の格納場所を示す格納場所指定情報を含ませるようにし、
第１の暗号通信処理部が、暗号通信路開設コマンドを受けて、暗号通信路開設コマンドに含まれている格納場所指定情報によって指定された指定格納場所に格納されている暗号鍵を指定暗号鍵として読み出し、ゾーンテーブルを参照して指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則を指定暗号処理細則として認識し、指定暗号鍵を用いて、指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設するようにしたものである。
【００１４】
(2)   本発明の第２の態様は、上述した第１の態様に係る情報処理システムにおいて、
鍵テーブルには、それぞれがキーバージョン番号によって特定される複数の格納場所を用意しておき、個々の格納ゾーンは、１つもしくは複数の格納場所によって構成されるようにし、
暗号通信路開設コマンドには、格納場所指定情報として特定のキーバージョン番号を含ませるようにし、
第１の暗号通信処理部が、キーバージョン番号によって特定される格納場所を指定格納場所として、指定暗号鍵の読出処理および指定暗号処理細則の認識処理を行うようにしたものである。
【００１５】
(3)   本発明の第３の態様は、上述した第２の態様に係る情報処理システムにおいて、
個々の格納ゾーンが、１つの格納場所もしくは連続するキーバージョン番号を有する複数の格納場所によって構成され、個々の格納ゾーンがキーバージョン番号の固有の数値範囲に対応づけられているようにしたものである。
【００１６】
(4)   本発明の第４の態様は、上述した第２または第３の態様に係る情報処理システムにおいて、
鍵テーブル内の各格納場所には、それぞれキーＩＤによって特定される複数の格納庫が用意されており、これら複数の格納庫の全部もしくは一部に、それぞれ別個の暗号鍵が格納されており、
第１の暗号通信処理部が、暗号通信路開設コマンドに含まれるキーバージョン番号によって特定される格納場所内の複数の格納庫に格納されている暗号鍵を利用して暗号通信路を開設するようにしたものである。
【００１７】
(5)   本発明の第５の態様は、上述した第１〜第４の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、暗号通信路開設前に実行すべき第１の情報処理装置と第２の情報処理装置との間の相互認証処理の手順を定めた細則が含まれているようにしたものである。
【００１８】
(6)   本発明の第６の態様は、上述した第５の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、相互認証処理のために第１の情報処理装置が生成する乱数として、真性乱数を用いるか、擬似乱数を用いるか、を定めた細則が含まれているようにしたものである。
【００１９】
(7)   本発明の第７の態様は、上述した第５の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、相互認証処理および暗号通信処理に用いられる暗号鍵の数を定めた細則が含まれているようにしたものである。
【００２０】
(8)   本発明の第８の態様は、上述した第５の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、相互認証処理を、認証用コマンドを用いて明示的に実施するか、認証用コマンドを用いずに暗黙的に実施するか、を定めた細則が含まれているようにしたものである。
【００２１】
(9)   本発明の第９の態様は、上述した第１〜第４の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、開設された暗号通信路を介して第１の情報処理装置から第２の情報処理装置にレスポンスを送信する手順を定めた細則が含まれているようにしたものである。
【００２２】
(10)  本発明の第１０の態様は、上述した第９の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、レスポンスデータを暗号化するか否かを定めた細則が含まれているようにしたものである。
【００２３】
(11)  本発明の第１１の態様は、上述した第９の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、レスポンスデータにチェックコードを付与するか否かを定めた細則が含まれているようにしたものである。
【００２４】
(12)  本発明の第１２の態様は、上述した第１〜第４の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、開設された暗号通信路を介して第２の情報処理装置から第１の情報処理装置にコマンドを送信する手順を定めた細則が含まれているようにしたものである。
【００２５】
(13)  本発明の第１３の態様は、上述した第１２の態様に係る情報処理システムにおいて、
ゾーンテーブルによって示される暗号処理細則に、送信コマンドへのチェックコード付与に関する事項を定めた細則が含まれているようにしたものである。
【００２６】
(14)  本発明の第１４の態様は、上述した第１〜第１３の態様に係る情報処理システムにおいて、
第１の暗号通信処理部が、複数Ｎ通り（Ｎ≧２）の暗号化プロトコルに基づく暗号通信を行う機能を有し、Ｎ通りの暗号化プロトコルのうち、第２の情報処理装置から指定された指定暗号化プロトコルに基づく暗号通信を行うための暗号通信路を開設し、
鍵テーブルには、複数Ｎ通りの暗号化プロトコルのそれぞれに用いられる暗号鍵が格納されており、
第２の暗号通信処理部が、複数Ｎ通りの暗号化プロトコルのうちの少なくとも１つの特定の暗号化プロトコルに基づく暗号通信を行う機能を有し、当該特定の暗号化プロトコルに基づく暗号通信を行うために開設された暗号通信路を介して第１の情報処理装置との間で暗号通信を行い、
ゾーンテーブルは、個々の格納ゾーンと個々の暗号処理細則との対応関係に加えて、更に、個々の格納ゾーンと個々の暗号化プロトコルとの対応関係を示しており、
第１の暗号通信処理部は、ゾーンテーブルを参照して、指定暗号処理細則を認識するとともに、指定格納場所が所属する格納ゾーンに対応づけられている暗号化プロトコルを指定暗号化プロトコルとして認識し、指定暗号化プロトコルに基づき、指定暗号鍵を用いて、指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設するようにしたものである
【００２７】
(15)  本発明の第１５の態様は、上述した第１〜第１４の態様に係る情報処理システムにおいて、
第１の情報処理装置を、ＩＣカードに、GlobalPlatform （登録商標）の仕様に準拠した管理プログラムを組み込むことにより構成し、
ゾーンテーブルとして、個々の格納ゾーンに対して、それぞれ上記仕様に基づくパラメータ「ｉ」の特定の値を対応づけたテーブルを用いるようにしたものである。
【００２８】
(16)  本発明の第１６の態様は、上述した第１〜第１５の態様に係る情報処理システムにおける第１の情報処理装置を構成したものである。
【００２９】
(17)  本発明の第１７の態様は、上述した第１〜第１５の態様に係る情報処理システムにおける第２の情報処理装置を構成したものである。
【００３０】
(18)  本発明の第１８の態様は、上述した第１〜第１５の態様に係る情報処理システムにおける第１の情報処理装置を、コンピュータにプログラムを組み込むことにより構成したものである。
(19)  本発明の第１９の態様は、上述した第１〜第１５の態様に係る情報処理システムにおける第２の情報処理装置を、コンピュータにプログラムを組み込むことにより構成したものである。
【００３１】
(20)  本発明の第２０の態様は、第１の情報処理装置と第２の情報処理装置との間で、所定の暗号化プロトコルに基づいた暗号通信を行う暗号通信方法において、
第１の情報処理装置が、所定の暗号化プロトコルに基づく暗号通信を行うプログラムを実行可能な状態に準備するプログラム準備段階と、
第１の情報処理装置が、複数の格納場所にそれぞれ上記暗号化プロトコルに用いられる暗号鍵を格納した鍵テーブルを準備する鍵テーブル準備段階と、
第１の情報処理装置が、鍵テーブル上に、１つもしくは複数の格納場所を含む格納ゾーンを複数組設定し、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すゾーンテーブルを準備するゾーンテーブル準備段階と、
第２の情報処理装置が、第１の情報処理装置に対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドを与える暗号通信路開設指示段階と、
第１の情報処理装置が、受信した暗号通信路開設コマンドに基づいて、上記所定の暗号化プロトコルに基づく暗号通信を行うための暗号通信路を開設する暗号通信路開設段階と、
第１の情報処理装置および第２の情報処理装置が、開設された暗号通信路を介して暗号通信を行う暗号通信段階と、
を実行するようにし、
暗号通信路開設コマンドには、鍵テーブル内の特定の格納場所を示す格納場所指定情報を含ませておき、
暗号通信路開設段階では、暗号通信路開設コマンドに含まれている格納場所指定情報によって指定された指定格納場所に格納されている暗号鍵を指定暗号鍵として読み出し、ゾーンテーブルを参照して指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則を指定暗号処理細則として認識し、指定暗号鍵を用いて、指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設するようにしたものである。
【発明の効果】
【００３２】
本発明によれば、第１の情報処理装置内に、複数の格納場所に暗号鍵を格納した鍵テーブルと、この鍵テーブル上に定義された格納ゾーンと暗号処理細則との対応関係を示すゾーンテーブルと、が用意される。そして、第２の情報処理装置から第１の情報処理装置に対して、特定の格納場所を指定する格納場所指定情報を含む暗号通信路開設コマンドが与えられると、第１の情報処理装置は、指定格納場所に格納されている暗号鍵を用いて、指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則に従った手順を実行することにより、暗号通信路を開設することができる。すなわち、第２の情報処理装置は、暗号通信路開設コマンドに含ませた格納場所指定情報によって、その都度、特定の暗号処理細則を指定することが可能になる。このように、本発明によれば、２組の情報処理装置の間に、所定の暗号化プロトコルに基づく暗号通信路を開設して、両者間でセキュアな通信を行う際に、暗号通信路開設の都度、暗号通信処理の細かな手順を定めた暗号処理細則を設定することが可能になる。
【００３３】
特に、本発明は、２組の情報処理装置のうちの一方がＩＣカードである場合に適しており、暗号通信路開設コマンドに暗号鍵の格納場所を示す格納場所指定情報を含ませ、当該格納場所が所属する格納ゾーンによって暗号処理細則を指定する方法を採用しているため、ＩＣカードについての国際的な仕様に準拠した暗号通信路開設コマンドを用いて、暗号通信路の開設指示を与える際に、特定の暗号処理細則の設定をＩＣカード側に伝達することが可能になる。
【図面の簡単な説明】
【００３４】
【図１】一般的なスマートフォン１０，ＳＩＭカード１１，外部サーバ２０の間の情報通信の態様を示すブロック図である。
【図２】図１に示すＳＩＭカード１１（第１の情報処理装置１００）と、スマートフォン１０または外部サーバ２０（第２の情報処理装置２００）と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図である。
【図３】図２に示す鍵テーブルの具体例を示す図である。
【図４】図３に示す鍵テーブルに格納されている暗号鍵Ｋｅｙの一般的なデータ構造および当該暗号鍵を用いた暗号通信路開設コマンドのデータ構造の概要を示す図である。
【図５】図２に示すＳＩＭカード１１（第１の情報処理装置１００）と、スマートフォン１０（第２の情報処理装置２００）と、の間でやりとりされる種々のコマンドおよびこれに対するレスポンスの具体例を示すダイアグラムである。
【図６】GlobalPlatform （登録商標）の仕様に準拠したＩＣカードに与える具体的なコマンドの書式例を示す図である。
【図７】暗号処理細則指定パラメータ（パラメータ「ｉ」）の第１の例を示す表およびその具体的な内容を示す表である。
【図８】暗号処理細則指定パラメータ（パラメータ「ｉ」）の第２の例を示す表である。
【図９】暗号処理細則指定パラメータ（パラメータ「ｉ」）の第２の例の具体的な内容を示す表である。
【図１０】暗号処理細則指定パラメータ（パラメータ「ｉ」）の第３の例を示す表である。
【図１１】図７に示す暗号処理細則指定パラメータ（パラメータ「ｉ」）の第１の例に基づいて具体的な暗号処理細則を定めた表である。
【図１２】本発明の基本的実施形態に係る情報処理システムの構成を示すブロック図である。
【図１３】図１２に示す情報処理システムに用いる鍵テーブルＴｋおよびゾーンテーブルＴｚの具体例を示す表である。
【図１４】本発明の変形例に係る情報処理システムの構成を示すブロック図である。
【図１５】図１４に示す情報処理システムに用いる鍵テーブルＴｋＡおよびゾーンテーブルＴｚＡの具体例を示す表である。
【図１６】本発明の別な変形例に係る情報処理システムの構成を示すブロック図である。
【図１７】本発明に係る暗号通信方法の基本手順を示す流れ図である。
【発明を実施するための形態】
【００３５】
以下、本発明を図示する実施形態に基づいて説明する。
【００３６】
＜＜＜  §１．  ＩＣカードに対する従来の一般的な通信形態  ＞＞＞
本発明は、２組の情報処理装置の間で所定の暗号化プロトコルに基づく暗号通信を行う技術に係り、特に、ＩＣカードと別な装置との間で暗号通信を行うのに適した暗号通信技術に関するものである。そこで、ここでは、まず、ＩＣカードに対する従来の一般的な通信形態を簡単に説明しておくことにする。
【００３７】
図１は、一般的なスマートフォン１０，ＳＩＭカード１１，外部サーバ２０の間の情報通信の態様を示すブロック図である。通常、スマートフォン１０は、内部にＳＩＭカード１１を装着した状態で利用され、必要に応じて、外部サーバ２０と所定の通信路（インターネットや電話回線）を介して交信することになる。ここで、ＳＩＭカード１１（ＵＩＭカードとも呼ばれる）は、Java Card（商標）やGlobalPlatform （登録商標）など、事実上の標準となっている国際的な仕様に準拠したＩＣカードであり、外部装置との交信は、当該外部装置から与えられるコマンドと、これに対する応答（レスポンス）という形式で行われる。
【００３８】
ＳＩＭカード１１に着目すると、スマートフォン１０も外部サーバ２０も、いずれも外部装置ということになり、これら外部装置との間の交信は、所定の通信路を介して行われる。図１には、スマートフォン１０と外部サーバ２０との間の通信路しか示されていないが、実際には、ＳＩＭカード１１とスマートフォン１０との間やＳＩＭカード１１と外部サーバ２０との間にも通信路が形成される。そして、ＳＩＭカード１１に対して、これらの通信路を介してコマンドおよびレスポンスのやりとりが行われることになる。
【００３９】
図２は、図１に示すＳＩＭカード１１と、スマートフォン１０もしくは外部サーバ２０と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図である。本発明は、ＩＣカードに限らず、一般的な２組の情報処理装置の間で暗号通信を行う場合に広く適用できる技術であり、一般論として、任意の情報処理装置間での通信に利用可能である。したがって、図２には、第１の情報処理装置１００と第２の情報処理装置２００との間に通信路を開設して相互に交信を行う例が示されている。
【００４０】
ただ、上述したとおり、本発明は、ＩＣカードに対する暗号通信を行うのに特に適した技術であり、ここでは、第１の情報処理装置１００がスマートフォン１０に装着されたＳＩＭカード１１であり、第２の情報処理装置２００が当該スマートフォン１０（もしくは、外部サーバ２０でもよい）である場合について、以下の説明を行うことにする。
【００４１】
ＳＩＭカード１１をはじめとするＩＣカードには、通常、複数のアプリケーションプログラムが組み込まれる。図２に示す第１の情報処理装置１００（ＳＩＭカード１１）には、２組の一般アプリケーションプログラムＡＰ１，ＡＰ２が組み込まれた状態が示されている。また、ＩＣカードには、通常、少なくとも１組の管理プログラムＳＤ（Security Domain プログラム）が組み込まれている。この管理プログラムＳＤは、分類上はアプリケーションプログラムの一種であるが、ＯＳプログラムと協働して、ＩＣカード全体の動作や、管理下にある他のアプリケーションプログラムを管理する役割を果たす。そこで、本願では、情報処理装置１００（ＳＩＭカード１１）に組み込まれるアプリケーションプログラムのうち、Security Domain プログラムを「管理プログラム」と呼び、それ以外のアプリケーションプログラムを「一般アプリケーションプログラム（略称：一般アプリ）」と呼ぶことにする。
【００４２】
管理プログラムＳＤには、管理下となるアプリケーションプログラムについてのロード機能、インストール機能、削除機能などの様々な機能が備わっているが、本発明に直接関連する機能は、暗号通信路開設機能である。図２に示す管理プログラムＳＤには、暗号通信路開設機能に必要な暗号通信路開設ルーチンＲ１および鍵テーブルＴ１が組み込まれている。鍵テーブルＴ１には、暗号通信路開設に用いる暗号鍵が格納されている。ＩＣカードからなる情報処理装置１００の場合、通常、「ＳＣＰ：Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、第２の情報処理装置２００との間にセキュアな暗号通信路を開設して暗号通信が行われる。このような機能を実現するため、管理プログラムＳＤ内には、暗号通信路開設ルーチンＲ１と鍵テーブルＴ１とが組み込まれている。
【００４３】
一方、第２の情報処理装置２００にも、これに応じた暗号通信を行う機能をもったアプリケーションプログラムＡＰ３が用意されており、暗号通信路開設ルーチンＲ２と鍵テーブルＴ２とが組み込まれている。たとえば、第２の情報処理装置２００がスマートフォン１０の場合、アプリケーションプログラムＡＰ３は、このスマートフォン１０にインストールされたアプリケーションプログラムの１つである。
【００４４】
第１の情報処理装置１００側の暗号通信路開設ルーチンＲ１と、第２の情報処理装置２００側の暗号通信路開設ルーチンＲ２とは、両装置間にセキュアな暗号通信路を開設し、同一の暗号化プロトコルに基づいた暗号通信を行うためのルーチンであり、鍵テーブルＴ１と鍵テーブルＴ２には、同一の暗号鍵が収容されている。したがって、図示の例の場合、管理プログラムＳＤとアプリケーションプログラムＡＰ３とによって、第１の情報処理装置１００と第２の情報処理装置２００との間に、同一の暗号鍵を用いた同一の暗号化プロトコルに基づく暗号通信を行うための暗号通信路が開設されることになる。
【００４５】
ＩＣカードに対する暗号通信に利用される暗号化プロトコルとしては、ＳＣＰ０１，ＳＣＰ０２などのプロトコルが古くから利用されてきている。ただ、これらのプロトコルで用いられている「Triple-ＤＥＳ」という暗号アルゴリズムには危殆化の問題が指摘されており、近年は、ＡＥＳ（Advanced Encryption Standard）なる規格に基づく暗号アルゴリズムを利用したＳＣＰ０３なるプロトコルも、GlobalPlatform （登録商標）に準拠した仕様として普及し始めている。また、３ＧＰＰ／ＥＴＳＩなどの標準化団体を中心に策定されたＳＣＰ８０，ＳＣＰ８１などのプロトコルの利用も普及してきている。
【００４６】
また、ＩＣカードに組み込まれる管理プログラムＳＤ用の鍵テーブルＴとしては、図３に例示するような鍵空間を用いる仕様が一般化している。図示の鍵テーブルＴは、縦方向にキーバージョン番号（key version number）、横方向にキーＩＤ（key ID）を定義したマトリックスによって構成されており、キーバージョン番号については、０ｘ０１〜０ｘ７Ｆの範囲内のアドレス空間が割り当てられ、キーＩＤについては、０ｘ００〜０ｘ７Ｆの範囲内のアドレス空間が割り当てられている（アドレス先頭の０ｘは、以下の数値が１６進数であることを示す）。
【００４７】
個々の暗号鍵は、この鍵テーブルＴのいずれかのセルに格納されることになり、キーバージョン番号とキーＩＤとの組み合わせにより特定される。たとえば、キーバージョン番号「０ｘ０１」とキーＩＤ「０ｘ０１」との組み合わせにより、暗号鍵ＫｅｙＡが特定されることになる。図には、個々の暗号鍵の格納例として、ＫｅｙＡ〜ＫｅｙＵが特定のセルに格納された状態が示されている。もちろん、暗号鍵はすべてのセルに格納する必要はなく、必要な暗号鍵が所定のセルに格納されていれば足りる。また、必要に応じて、後に、新たな暗号鍵を空いているセルに書き込むこともできる。
【００４８】
ある１つの暗号化プロトコルでは、ある１つのキーバージョン番号が指定され、当該キーバージョン番号をもったセルに格納されている１つもしくは複数組の暗号鍵を利用した暗号化処理もしくは復号処理が実行される。図示の例の場合、キーバージョン番号「０ｘ０１」，「０ｘ０２」，「０ｘ２０」，「０ｘ２１」，「０ｘ２２」，「０ｘ７Ｅ」，「０ｘ７Ｆ」の各行に何らかの暗号鍵が格納されている状態が示されている。また、図示の例の場合、いずれのキーバージョン番号についても、キーＩＤ「０ｘ０１」，「０ｘ０２」，「０ｘ０３」の３箇所のセルにそれぞれ暗号鍵が格納されている。
【００４９】
これは、いずれのキーバージョン番号も、３つの異なる暗号鍵を用いる暗号化プロトコル（たとえば、上述したＳＣＰ０１，ＳＣＰ０２，ＳＣＰ０３など）に対応したものになっているためである。たとえば、キーバージョン番号「０ｘ２０」が指定された場合、キーＩＤ「０ｘ０１」，「０ｘ０２」，「０ｘ０３」の各セルに格納されている３つの暗号鍵ＫｅｙＧ，ＫｅｙＨ，ＫｅｙＩが暗号化処理もしくは復号処理に利用されることになる。別言すれば、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理には、同一のキーバージョン番号をもつ１つもしくは複数組の暗号鍵が利用されることになる。もちろん、合計５個の暗号鍵を必要とする暗号化プロトコルのためには、同一のキーバージョン番号をもつ５個のセルにそれぞれ暗号鍵を用意することになる。要するに、図３に示す鍵テーブルＴでは、常に、同一行のセルに収容されている１組もしくは複数組の暗号鍵が、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理に利用されることになる。
【００５０】
一方、図４(a) は、図３に示す鍵テーブルＴの個々のセルに格納されている暗号鍵ＫｅｙＡ〜ＫｅｙＵの一般的なデータ構造を示す図である。図示された暗号鍵Ｋｅｙのデータ構造は、上述したＩＣカードについての国際的な標準仕様として定められた暗号鍵Ｋｅｙの標準フォーマットを示すものであり、先頭から順に、種別情報（key type）Ａ，鍵長（key length）Ｌ，鍵値データ（key value）Ｖを並べたものになっている。ここで、種別情報（key type）Ａは、「ＡＥＳ」，「Triple-ＤＥＳ」，「ＲＳＡ」など、当該暗号鍵Ｋｅｙを用いることを想定している暗号化プロトコルが採用する暗号アルゴリズムの種別を含む情報であり、鍵長（key length）Ｌは、後続する鍵値データ（key value）Ｖのデータ長（byte）を示す情報であり、最後の鍵値データ（key value）Ｖは、暗号化および復号の演算に用いられる鍵値データそのものである。
【００５１】
前述したとおり、図３に示す鍵テーブルＴでは、同一行のセルに収容されている複数組の暗号鍵は、ある１つの暗号化プロトコルに基づく暗号化処理もしくは復号処理に利用される。したがって、同一行のセルに収容されている複数組の暗号鍵に含まれている種別情報Ａは、必ず同一の情報になる。たとえば、図３に示す鍵テーブルＴの第１行目に収容されている３組の暗号鍵「ＫｅｙＡ，ＫｅｙＢ，ＫｅｙＣ」は、互いに同一の種別情報Ａを有し、これら３組の暗号鍵は、当該種別情報Ａで示される特定の暗号アルゴリズムを採用した暗号化プロトコルにおいて利用される暗号鍵ということになる。暗号鍵「ＫｅｙＤ，ＫｅｙＥ，ＫｅｙＦ」や「ＫｅｙＧ，ＫｅｙＨ，ＫｅｙＩ」等についても同様である。
【００５２】
図４(b) は、暗号通信路開設コマンドＣＭＤのデータ構造の概要を示す図である。実際のコマンドは、ＩＳＯなどの規格（たとえば、ISO7816-4）に準拠した、より複雑なデータ構造を有するものになるが、便宜上、図４(b) には、説明に必要な情報のみを抽出した概念的なデータ構造を示すことにする。図示の例は、上述した暗号化プロトコルＳＣＰ０１，ＳＣＰ０２，ＳＣＰ０３を採用する場合に用いられている暗号通信路の開設コマンドを示しており、暗号通信路の開設を指示する文字列「INITIALIZE UPDATE」なるコマンド文字列情報（実際には、コマンド「INITIALIZE UPDATE」を意味するインストラクションバイト情報であるが、以下、便宜上、「INITIALIZE UPDATE」なる文字列として説明する）と、特定の暗号鍵の格納場所を示す格納場所指定情報（実際には、特定のキーバージョン番号）と、所定の乱数とによって構成されている。
【００５３】
たとえば、図３に示す鍵テーブルＴに格納されている３組の暗号鍵「ＫｅｙＧ，ＫｅｙＨ，ＫｅｙＩ」を用いて暗号通信路を開設する場合には、文字列「INITIALIZE UPDATE」に「０ｘ２０」なるキーバージョン番号を後続させ、更にその後ろに所定の乱数を後続させた暗号通信路開設コマンドＣＭＤをＩＣカードに与えればよい。暗号通信路開設コマンドＣＭＤの最後に付加される乱数は、外部装置（第２の情報処理装置２００）がＩＣカード（第１の情報処理装置１００）を正規の交信相手であることを認証するために利用される。別言すれば、暗号通信路開設コマンドＣＭＤは、ＩＣカードに対して、暗号通信路の開設処理を実行する指示コマンドとしての役割とともに、所定の乱数に応じた認証コードを返信するよう求める認証コマンドとしての役割も果たす。
【００５４】
図５は、図２に示すＳＩＭカード１１（第１の情報処理装置１００）に組み込まれた管理プログラムＳＤと、スマートフォン１０（第２の情報処理装置２００）に組み込まれたアプリケーションプログラムＡＰ３と、の間でやりとりされる種々のコマンドおよびこれに対するレスポンスの具体例を示すダイアグラムである。ステップＳ１〜Ｓ６に示すとおり、いずれもスマートフォン１０側からＳＩＭカード１１側に所定のコマンドを送信し、当該コマンドに対するレスポンスをＳＩＭカード１１側からスマートフォン１０側へと返信する、という形態で、両者間の情報のやりとりが行われる。この例の場合、ステップＳ１〜Ｓ４までの情報のやりとりは、暗号化されていない通常の通信路を介して行われるが、ステップＳ５，Ｓ６の情報のやりとりは、管理プログラムＳＤによって開設された暗号通信路を介して行われる。
【００５５】
まず、ステップＳ１は、スマートフォン１０側からＳＩＭカード１１側に「SELECTコマンド」を送信するプロセスである。この「SELECTコマンド」は、「アプリケーション選択コマンド」と呼ぶべきコマンドであり、特定のチャネル番号を指定して、ＳＩＭカード１１側の特定のアプリケーションプログラム（この場合は、管理プログラムＳＤ）を選択するコマンドである。ＳＩＭカード１１側では、当該チャネル番号と当該管理プログラムＳＤとが対応づけられ、以後、同じチャネル番号をもつコマンドが与えられると、当該管理プログラムＳＤによって処理されることになる。「SELECTコマンド」が正常に受理されると、ＳＩＭカード１１側からスマートフォン１０側にレスポンスが返される。
【００５６】
続く、ステップＳ２は、「GET DATAコマンド」を送信するプロセスである。なお、ステップＳ２以降のコマンドには、ステップＳ１と同じチャネル番号が付与されており、ＳＩＭカード１１側では、管理プログラムＳＤによって処理される。この「GET DATAコマンド」は、管理プログラムＳＤの「データの読出機能」に基づいて、所定のデータをＳＩＭカード１１側からスマートフォン１０側に読み出すためのコマンドであり、読出対象となるデータを特定する情報が付加されている。管理プログラムＳＤは、当該コマンドに応じて、ＳＩＭカード１１内のメモリから指定されたデータを読み出し、これを当該コマンドに対するレスポンスとしてスマートフォン１０側へと返信する。
【００５７】
GlobalPlatform （登録商標）の仕様では、管理プログラムＳＤが「データの読出機能」を実行する場合は、暗号通信路を介した情報のやりとりが必須にはなっていない。図５のステップＳ２のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく情報の読み出しが可能なデータの読出処理が行われた例を示すものである。このデータの読出処理は、本発明に直接関連する処理ではないが、ここでは、暗号通信路を介さずに行われる通信処理の一例として挙げておく。
【００５８】
続く、ステップＳ３，Ｓ４は、暗号通信路の開設準備を行うプロセスであり、後述するように、本発明に直接関連する処理である。まず、ステップＳ３では、「INITIALIZE UPDATEコマンド」の送信が行われる。このコマンドは、図４(b) に示すデータ構造をもつ「暗号通信路開設コマンドＣＭＤ」であり、前述したとおり、「INITIALIZE UPDATE」なるコマンド文字列情報に、キーバージョン番号および乱数を付加した形態をもつ。このコマンドは、スマートフォン１０（第２の情報処理装置１００）が、ＳＩＭカード１１（第１の情報処理装置１００）を正規の交信相手として認証するための認証コマンドとしての役割も果たす。
【００５９】
このような認証を行うため、スマートフォン１０側では、認証用の乱数Ｒａを発生させ、発生させた乱数を暗号通信路開設コマンドＣＭＤに含ませて送信する。具体的には、たとえば、「INITIALIZE UPDATE，０ｘ２０，Ｒａ」のような書式をもったコマンドが送信されることになる。ここで、「０ｘ２０」は、図３に示す鍵テーブルＴのキーバージョン番号であり、「Ｒａ」は発生させた乱数である。
【００６０】
一方、「INITIALIZE UPDATE，０ｘ２０，Ｒａ」なる暗号通信路開設コマンドＣＭＤを受信したＳＩＭカード１１は、図３に示す鍵テーブルＴから、指定されたキーバージョン番号「０ｘ２０」に対応する３組の暗号鍵「ＫｅｙＧ，ＫｅｙＨ，ＫｅｙＩ」を取り出し、暗号通信路の設定処理（暗号化処理および復号処理の準備）を行うとともに、与えられた乱数Ｒａに対して、これらの暗号鍵を利用した所定のアルゴリズムに基づく演算を施し、演算結果Ｒａ′を得る（カード認証コード）。図５のステップＳ３に示す「Ｒａ→Ｒａ′」なる表記は、このような演算を示している。続いて、ＳＩＭカード１１は、別な乱数Ｒｂを発生させ、暗号通信路開設コマンドＣＭＤに対するレスポンスとして、カード認証コードＲａ′と乱数Ｒｂとをスマートフォン１０側へと返信する。
【００６１】
一方、スマートフォン１０は、返信されてきたレスポンスに含まれているカード認証コードＲａ′が、先ほど発生させた乱数Ｒａに基づく正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のＳＩＭカード１１を正規の交信相手と認証する。具体的には、乱数Ｒａに対して、ＳＩＭカード１１側で行われた演算に用いられた暗号鍵と同一の暗号鍵を用いて同一のアルゴリズムに基づく演算を実行して演算結果Ｒａ′を算出し、算出したＲａ′とレスポンスに含まれていたカード認証コードＲａ′との一致を確認する。このように、乱数Ｒａは、スマートフォン１０が、ＳＩＭカード１１を正規の交信相手として認証するために用いられる。
【００６２】
続くステップＳ４では、「EXTERNAL AUTHENTICATEコマンド」の送信が行われる。このコマンドは、「外部認証コマンド」であり、ＳＩＭカード１１（第１の情報処理装置１００）がスマートフォン１０（外部装置である第２の情報処理装置２００）を正規の交信相手として認証するための認証コマンドである。スマートフォン１０は、ステップＳ３のレスポンスにより返信されてきた乱数Ｒｂに対して、所定の暗号鍵を利用した所定のアルゴリズムに基づく演算を実行し、演算結果Ｒｂ′（ホスト認証コード）を得る。図５のステップＳ４に示す「Ｒｂ→Ｒｂ′」なる表記は、このような演算を示している。続いて、スマートフォン１０は、このホスト認証コードＲｂ′を含む「EXTERNAL AUTHENTICATEコマンド」をＳＩＭカード１１に送信する。
【００６３】
この「EXTERNAL AUTHENTICATEコマンド」を受信したＳＩＭカード１１は、コマンドに含まれていたホスト認証コードＲｂ′が、先ほど発生させた乱数Ｒｂに基づく正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のスマートフォン１０を正規の交信相手と認証する。具体的には、先ほど発生させた乱数Ｒｂに対して、スマートフォン１０側で行われた演算に用いられた暗号鍵と同一の暗号鍵を用いて同一のアルゴリズムに基づく演算を実行して演算結果Ｒｂ′を算出し、算出したＲｂ′とコマンドに含まれていたホスト認証コードＲｂ′との一致を確認する。このように、乱数Ｒｂは、ＳＩＭカード１１が、スマートフォン１０を正規の交信相手として認証するために用いられる。
【００６４】
このステップＳ３，Ｓ４による相互認証処理は、暗号通信路を開設する準備段階の処理として実行される。ＳＩＭカード１１とスマートフォン１０との間で暗号通信を行うためには、両者が、同一の暗号鍵を保持しており、同一の暗号アルゴリズムに基づく暗号化処理および復号処理を行う機能を有していることが前提となる。上記相互認証処理は、このような前提において、それぞれが発生させた乱数に対して同一の暗号鍵を用いた同一の暗号アルゴリズムに基づく演算処理を実行させ、演算結果が一致することをもって、相手方を正規の交信相手として認証する処理ということができる。
【００６５】
この暗号化や復号の具体的なプロセスは、一般に利用されている公知の技術であるため、ここでは詳しい説明は省略する。こうして、ＳＩＭカード１１とスマートフォン１０との間での相互認証が完了すると、両者間に暗号通信路が開設される。図の破線より下に示されたステップＳ５以降のコマンドは、この暗号通信路を介して与えられることになる。すなわち、ステップＳ５以降のコマンドの実質的な内容部分は、所定の暗号化プロトコルに基づいて暗号化され、「ＳＣＰ：Secure Channel Protocol」により保護されたコマンドとして送信される。
【００６６】
なお、図５のステップＳ５，Ｓ６には、スマートフォン１０からＳＩＭカード１１に対して与えるコマンドについては、実線の円筒として示す暗号通信路を介して送信される例が示されているが、ＳＩＭカード１１からスマートフォン１０に対して返信されるレスポンスについては、破線の円筒として示す通信路を介して返信される例が示されている。これは、レスポンスデータについては、暗号化して返信するか、暗号化せずに平文のまま返信するか、を暗号処理細則として設定することができるためである。レスポンスを暗号化する旨の暗号処理細則が設定されている場合は、レスポンスデータも暗号通信路を介して返信されることになるが、レスポンスを暗号化しない旨の暗号処理細則が設定されている場合は、レスポンスデータは平文のまま通常の通信路を介して返信されることになる。
【００６７】
＜＜＜  §２．  従来のＩＣカードにおける暗号処理細則の設定方法  ＞＞＞
図２に示す例の場合、第１の情報処理装置１００（ＳＩＭカード１１）に組み込まれた管理プログラムＳＤが実行する暗号通信路開設ルーチンＲ１と、第２の情報処理装置２００（たとえば、スマートフォン１０）に組み込まれたアプリＡＰ３が実行する暗号通信路開設ルーチンＲ２と、が協働することにより、両者間で所定の暗号化プロトコルに基づく暗号通信が行われることになる。暗号化プロトコルとしては、現在、ＳＣＰ０１，ＳＣＰ０２，ＳＣＰ０３，ＳＣＰ８０，ＳＣＰ８１など、様々な様式が定められているが、暗号通信を行う両者では、同一の暗号化プロトコルに基づいて、暗号化処理や復号処理を行う必要がある。
【００６８】
そこで、GlobalPlatform （登録商標）の仕様に準拠したＩＣカードの場合、管理プログラムＳＤをインストールする際に、当該管理プログラムＳＤがサポートする暗号化プロトコルを指定する方法が採用されている。たとえば、図２に示す例の場合、ＳＩＭカード１１に管理プログラムＳＤをインストールする際に、特定の暗号化プロトコルを指定することにより、当該指定された特定の暗号化プロトコルによる暗号処理機能をもったルーチンＲ１が組み込まれることになる。インストール時に指定するプロトコルとしては、通信相手となる予定のスマートフォン１０のアプリＡＰ３に組み込まれているルーチンＲ２が採用しているプロトロルを選択すればよい。
【００６９】
ただ、同じ暗号化プロトロルを採用した場合であっても、暗号通信処理の細かな手順を定めた暗号処理細則の設定を変えると、両者間で行われる具体的な暗号通信形態も変わってくる。たとえば、図５のステップＳ５，Ｓ６に示す暗号通信の例で述べたように、ＳＩＭカード１１からスマートフォン１０にレスポンスを返信する際に、レスポンスデータを暗号化するか否か、といった細かな手順は、暗号処理細則によって設定される事項になる。同様に、図５のステップＳ３において発生する乱数Ｒｂを、真性乱数にするか、擬似乱数にするか、といった細かな手順も、暗号処理細則によって設定される事項になる。その他、レスポンスデータにチェックコードを付与するか否か、送信コマンドへのチェックコード付与方法、暗号処理に用いる暗号鍵の数、など、個々の暗号化プロトコルごとに、それぞれ暗号通信処理の細かな手順を定めた暗号処理細則の設定が行われている。
【００７０】
要するに、暗号化プロトロルが暗号通信処理の大まかな手順を定める規則であるのに対して、ここでいう「暗号処理細則」とは、同一の暗号化プロトロルの範疇に入る細かな手順を定める規則、ということになる。GlobalPlatform （登録商標）の仕様に準拠したＩＣカードの場合、この暗号処理細則についても、管理プログラムＳＤをインストールする際に、細かな指定を行う方法が採用されている。具体的には、パラメータ「ｉ」と呼ばれている１バイトのデータの個々のビットフラグによって、いくつかの暗号処理細則が設定される。このパラメータ「ｉ」の具体的内容については、後に詳述する。
【００７１】
結局、GlobalPlatform （登録商標）の仕様に準拠したＩＣカードの場合、外部装置との間の暗号通信処理を担う管理プログラムＳＤをインストールする際に、特定の暗号化プロトロルを指定するとともに、当該特定の暗号化プロトロルに関する特定の暗号処理細則を指定する作業を行うことになる。そして、インストールされた管理プログラムＳＤは、指定された特定の暗号化プロトロルに基づき、指定された特定の暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して外部装置との間で暗号通信を行うことになる。そこで、ここでは便宜上、従来のＩＣカードにおける管理プログラムＳＤのインストール手順を、関連するコマンドを例示しながら簡単に説明しておく。
【００７２】
図６は、GlobalPlatform （登録商標）の仕様に準拠したＩＣカードに与える具体的なコマンドの書式例を示す図である。ＩＣカード用のコマンドとしては、この他にも様々なものが用いられているが、図６(a) 〜(e) には、本発明に関連するいくつかのコマンドのみを抽出して示した。以下、これら各コマンドの書式および当該コマンドに応じてＩＣカード側で実行される処理内容について簡単に説明を行う。なお、図６に示す各コマンド書式のデータ構造は、一部の情報のみを抽出した概念的なデータ構造であり、実際のデータ構造それ自体を示すものではない。
【００７３】
(a)   アプリケーション選択コマンド
まず、図６(a) に示す「アプリケーション選択コマンド」について説明する。このコマンドは、図５のダイアグラムのステップＳ１で説明したコマンドであり、特定のチャネル番号を指定して、ＩＣカード（第１の情報処理装置１００）側の特定のアプリケーションプログラムを選択するコマンドである。図示のとおり、「SELECT (#n)＋アプリ名」というデータ構造を有し、チャネル番号＃ｎを指定して、「アプリ名」で特定されるアプリケーションプログラムを選択する指示である。
【００７４】
チャネル番号＃ｎは、外部装置（第２の情報処理装置２００）からＩＣカードに対してコマンドを与える際に、当該コマンドがどのアプリケーションプログラム宛のコマンドであるかを識別させるために用いられる。ＩＣカードには、複数のアプリケーションプログラムが格納されているため、外部装置から与えるコマンドのそれぞれにチャネル番号＃ｎを付加して識別できるようにする必要がある。「アプリケーション選択コマンド」は、特定のアプリケーションプログラムに特定のチャネル番号＃ｎを対応づけるための初期設定を行う役割を果たす。
【００７５】
たとえば、「SELECT (#3)＋SD」というアプリケーション選択コマンドをＩＣカードに与えると、管理プログラムＳＤがチャネル番号＃３に対応づけられる。具体的には、当該コマンドを受信したＩＣカード内のＯＳプログラムが、管理プログラムＳＤがチャネル番号＃３に対応づけられた旨の記録を行うことになる。以後、チャネル番号＃３が付与されたコマンドは、すべて管理プログラムＳＤ宛のコマンドとして取り扱われ、管理プログラムＳＤによって実行されることになる。
【００７６】
(b)   アプリケーションロードコマンド
次に、図６(b) に示す「アプリケーションロードコマンド」について説明する。このコマンドは、新たなアプリケーションプログラムを組み込む際の最初のステップとして実行されるコマンドである。実際には、図示のとおり、２つのコマンドによって構成される。
【００７７】
第１段階のロードコマンドは、「INSTALL for load (#n)＋パッケージ名」というデータ構造を有し、チャネル番号＃ｎを指定して、「パッケージ名」で特定されるパッケージをロードする旨の指示を伝えるコマンドになる。第２段階のロードコマンドは、「LOAD (#n)＋バイナリデータ」というデータ構造を有し、チャネル番号＃ｎを指定して、後続するバイナリデータのパッケージを、メモリにそのまま格納する旨の指示を伝えるコマンドになる。
【００７８】
ここでは、新たなアプリケーションプログラムとして、管理プログラムＳＤを組み込む場合の手順を例にとって、この「アプリケーションロードコマンド」を説明する。この新たなアプリケーションプログラムの組込処理は、ＩＣカードに既に組み込まれている管理プログラムＩＳＤによって実行される。したがって、「管理プログラムＳＤ」を新たに組み込む作業は、既に組み込み済みの別な「管理プログラムＩＳＤ」によって実行されることになる。ＩＣカードには、複数組の「管理プログラム」を相互に階層構造をもたせて組み込むことが可能であり、既に組み込み済みの「上位管理プログラム」の下に、新たに「下位管理プログラム」を組み込むことが可能である。ここで、最上位の管理プログラムは、ＩＳＤ（Issuer Security Domain）と呼ばれ、ＩＣカードの工場出荷時に既に組み込まれている。
【００７９】
以下、便宜上、図６(a) に例示した「SELECT (#3)＋ISD」というアプリケーション選択コマンドによって、既に、上位管理プログラムＩＳＤがチャネル番号＃３に対応づけられている状態において、その下に、新たに下位管理プログラムＳＤを組み込む作業を行う場合を例にとって説明を行う。この場合、図６(b) に示す第１段階のロードコマンドとしては「INSTALL for load (#3)＋PackSD」のようなコマンドを与え、第２段階のロードコマンドとしては「LOAD (#3)＋バイナリデータ」のようなコマンドを与えることになる。
【００８０】
上記２段階からなるアプリケーションロードコマンドは、いずれもチャネル番号「＃３」が付与されたコマンドなので、「＃３」への対応づけがなされている上位管理プログラムＩＳＤによって処理されることになる。上位管理プログラムＩＳＤは、第２段階のロードコマンドに含まれていた「バイナリデータ」の部分をそのままメモリの所定箇所に格納し、当該「バイナリデータ」が「PackSD」なるパッケージ名であるかの確認を行う。ここで、「バイナリデータ」の実体は、新たに組み込まれる下位管理プログラムＳＤ用のプログラムデータである。
【００８１】
このように、「アプリケーションロードコマンド」は、特定のアプリケーションプログラムのパッケージをＩＣカード内のメモリに格納するためのコマンドであり、上例の場合、当該コマンドの実行によって、新たに組み込むべき下位管理プログラムＳＤのバイナリデータがＩＣカード内のメモリに格納されることになる。
【００８２】
(c)   アプリケーションプログラムのインストールコマンド
続いて、図６(c) に示す「アプリケーションプログラムのインストールコマンド」について説明する。このコマンドは、特定の管理プログラムの管理下に、新たなアプリケーションプログラムを組み込む際の第２段階のステップとして実行されるコマンドである。したがって、ここで言うアプリケーションプログラムのインストールとは、アプリケーションのロードによってメモリ上に格納された状態になっているアプリケーションプログラムのパッケージを、メモリ上にアプリケーションインスタンスとして展開し、ＣＰＵが実行できる状態にする処理である。別言すれば、アプリケーションプログラムのインストールとは、既にロードされているパッケージをメモリ上に展開して、アプリケーションインスタンスを生成する処理ということになる。
【００８３】
このアプリケーションプログラムのインストールコマンドは、図示のとおり、「INSTALL for install (#n)＋パッケージ名＋アプリ名＋パラメータ」というデータ構造を有し、チャネル番号＃ｎを指定して、「パッケージ名」で特定されるパッケージを展開して、アプリケーションインスタンスを生成し、当該アプリケーションインスタンスに「アプリ名」で指定される名称を付与する旨の指示を伝えるコマンドになる。なお、GlobalPlatform（登録商標）の仕様に準拠したインストールコマンドでは、「パッケージ名」の後に「クラス名」なるデータを配置し、当該「クラス名」で特定されるアプリケーションインスタンスが生成されることになるが、本願では便宜上、「クラス名」の説明については省略する。
【００８４】
上例の場合、図６(b) に示す「アプリケーションロードコマンド」の実行により、既に、新たに組み込むべき下位管理プログラムＳＤのバイナリデータが、「PackSD」なるパッケージ名でＩＣカード内のメモリに格納されているので、図６(c) に示す「インストールコマンド」としては、「INSTALL for install (#3)＋PackSD＋ＳＤ＋パラメータ」のようなコマンドを与えればよい。このコマンドにもチャネル番号「＃３」が付与されているため、「＃３」に対応づけられた上位管理プログラムＩＳＤによって、当該コマンドが処理される。
【００８５】
すなわち、上位管理プログラムＩＳＤは、「PackSD」なるパッケージ名で既にロードされているアプリケーションプログラムパッケージをメモリ上に展開してアプリケーションインスタンスを作成するインストール処理を実行する。こうして新たにインストールされた下位管理プログラムには、指定されたアプリ名「ＳＤ」が付与され、階層構造上、上位管理プログラムＩＳＤの管理下におかれることになる。
【００８６】
なお、図６(c) に示されているように、アプリケーションプログラムのインストールコマンドの末尾には、パラメータが付加されている。図示のとおり、このパラメータには、「暗号化プロトコル指定パラメータ」と「暗号処理細則指定パラメータ」とが含まれている。実際には、この他にもいくつかの個別パラメータが含まれているが、本発明に直接関連しないため、ここでは説明は省略する。
【００８７】
ここで、暗号化プロトコル指定パラメータは、新たに組み込まれる管理プログラムＳＤの暗号通信路開設機能が採用する暗号化プロトコルを指定するパラメータであり、図には、「ＳＣＰ０３」を指定した例が示されている。一方、暗号処理細則指定パラメータは、一般にパラメータ「ｉ」と呼ばれているパラメータであり、図には、「擬似乱数使用／レスポンス暗号化せず／チェックコード付与」という細則を指定した例が示されている。
【００８８】
上述したとおり、この図６(c) に示すインストールコマンドは、上位管理プログラムＩＳＤによって実行される。上位管理プログラムＩＳＤは、当該コマンドに応じて、下位管理プログラムＳＤとして機能するアプリケーションインスタンスを作成するインストール処理を実行することになるが、このとき、インストール後の下位管理プログラムＳＤが、上記パラメータの指定に応じた態様で動作するような設定を行う。したがって、上例の場合、インストール後の下位管理プログラムＳＤは、指定された暗号化プロトコル「ＳＣＰ０３」に基づき、指定された暗号処理細則「擬似乱数使用／レスポンス暗号化せず／チェックコード付与」に従った暗号通信を行うことになる。
【００８９】
このように、管理プログラムＳＤについてのアプリケーションプログラムのインストールコマンドには、パラメータの部分に、当該管理プログラムＳＤが将来利用することになる暗号化プロトコルおよび当該プロトコルによる暗号通信処理の細かな手順を定めた暗号処理細則を指定する情報が含まれており、インストールされた管理プログラムＳＤは、外部装置から暗号通信路開設コマンドが与えられた場合、このインストール時に指定された暗号化プロトコルおよび暗号処理細則に従った暗号通信路を開設することになる。
【００９０】
(d)   暗号通信路開設コマンド
続いて、図６(d) に示す「暗号通信路開設コマンド」について説明する。このコマンドは、既に説明したとおり、ＩＣカードに対して暗号通信路の開設を指示するためのコマンドである。すなわち、この暗号通信路開設コマンドは、図６(d) に示すとおり、「INITIALIZE UPDATE (#n)＋パラメータ」というデータ構造を有し、チャネル番号＃ｎで指定される管理プログラムＳＤに対して、暗号通信路を開設する指示を与えるとともに、外部装置が、ＩＣカードを正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。
【００９１】
この暗号通信路開設コマンドには、パラメータとして、キーバージョン番号および乱数が付加されている。既に述べたとおり、当該コマンドを受けた管理プログラムＳＤは、図３に示す鍵テーブルＴからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化プロトコルを用いて、外部装置との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数Ｒａに対して所定のアルゴリズムに基づく演算を施し、演算結果Ｒａ′を当該コマンドに対するレスポンスとして返信する。このような処理は、既に、図５のダイアグラムのステップＳ３で述べたとおりである。
【００９２】
(e)   外部認証コマンド
続いて、図６(e) に示す「外部認証コマンド」について説明する。このコマンドは、チャネル番号＃ｎで指定される管理プログラムＳＤが、現在通信を行っている外部装置を正規の交信相手として認証するためのコマンドであり、図示のとおり、「EXTERNAL AUTHENTICATE (#n)＋ホスト認証コード」というデータ構造を有する。当該コマンドを受けたＩＣカード側では、チャネル番号＃ｎで指定された管理プログラムＳＤが、コマンドに付加されていたホスト認証コードを認証し、正当なものであれば、外部装置を正規の交信相手と判断する。
【００９３】
具体的には、既に、図５のダイアグラムのステップＳ４で説明を行った認証処理が行われる。すなわち、このコマンドに付加されているホスト認証コードは、図５において、スマートフォン１０（外部装置）においてＲｂ→Ｒｂ′なる演算処理によって得た演算結果Ｒｂ′であり、管理プログラムＳＤは、同じくＲｂ→Ｒｂ′なる演算処理を行い、得られた演算結果がホスト認証コードＲｂ′に一致することを確認することにより、スマートフォン１０（外部装置）を正規の交信相手として認証することになる。
【００９４】
こうして、図５のダイアグラムのステップＳ３，Ｓ４の相互認証処理が完了すると、暗号通信路が開設され、ステップＳ５，Ｓ６の暗号通信が実行されることになる。上例の場合、前述したとおり、インストール時に指定された暗号化プロトコル「ＳＣＰ０３」に基づき、インストール時に指定された暗号処理細則「擬似乱数使用／レスポンス暗号化せず／チェックコード付与」に従った暗号通信が実行される。
【００９５】
＜＜＜  §３．  暗号処理細則指定パラメータの実例  ＞＞＞
図６(c) に示す「アプリケーションプログラムのインストールコマンド」の末尾には、パラメータが付加されており、このパラメータには、「暗号化プロトコル指定パラメータ」と「暗号処理細則指定パラメータ」とが含まれていることは、既に§２で述べたとおりである。ここで、「暗号処理細則指定パラメータ」は、一般にパラメータ「ｉ」と呼ばれている１バイトの数値であり、「暗号化プロトコル指定パラメータ」によって指定された特定の暗号化プロトコルによる暗号通信処理の細かな手順を定めた細則を定めるものである。ここでは、現在利用されている暗号処理細則指定パラメータ（パラメータ「ｉ」）の実例をいくつか例示しておく。
【００９６】
(a)   暗号化プロトコルＳＣＰ０３についてのパラメータ「ｉ」
図７(a) は、暗号化プロトコルＳＣＰ０３についてのパラメータ「ｉ」によって定められる暗号処理細則の実例を示す表であり、図７(b) は、各暗号処理細則の具体的な内容を示す表である。前述したとおり、パラメータ「ｉ」は１バイトの値からなるデータであり、図７(a) におけるｂ１〜ｂ８は、このパラメータ「ｉ」の各ビット（ｂ１がＬＳＢ，ｂ８がＭＳＢ）を示している。
【００９７】
図７(a) の表における項目(1) は、パラメータ「ｉ」のビットｂ１〜ｂ４（Ｘ印のビット）が、ＲＦＵ（Reserved for Future Use：将来のための予約ビット）であることを示しており、現時点では、いずれもビット値を「０」に設定することが決められている。なお、図７(a) の表において、各項目の行に「−」が記入されたビットは、当該項目には当該ビットは無関係であることを示す。
【００９８】
項目(2) ，(3) は、パラメータ「ｉ」のビットｂ５（図において、０もしくは１のビット）が、相互認証時に、ＩＣカードが生成する乱数に真正乱数を用いるか、擬似乱数を用いるか、を示すビットであることを定めている。パラメータ「ｉ」のビットｂ５のビット値が「０」の場合、ＩＣカードは図５のステップ３において真正乱数を用いて乱数Ｒｂを発生し、パラメータ「ｉ」のビットｂ５のビット値が「１」の場合、ＩＣカードは図５のステップＳ３において擬似乱数を用いて乱数Ｒｂを発生することになる。擬似乱数の具体的な発生方法については、GlobalPlatform （登録商標）に定義されているため、ここでは説明は省略する。
【００９９】
項目(4) 〜(6) は、パラメータ「ｉ」のビットｂ６およびｂ７（図において、００，０１，１１のいずれか）が、暗号通信路開設後に返信するレスポンスデータに関する処理細則を定めるデータであることを示している。具体的には、パラメータ「ｉ」のビットｂ７は、図５のステップＳ５，Ｓ６におけるレスポンスデータを暗号化するか否かを定めており、ＩＣカードは、ビットｂ７のビット値が「０」の場合は暗号化せずに返信し、ビットｂ７のビット値が「１」の場合は暗号化して返信することになる。一方、パラメータ「ｉ」のビットｂ６は、図５のステップＳ５，Ｓ６におけるレスポンスデータにチェックコードを付与するか否かを定めており、ＩＣカードは、ビットｂ６のビット値が「０」の場合はチェックコードを付与しないで返信し、ビットｂ６のビット値が「１」の場合はチェックコードを付与して返信することになる。
【０１００】
項目(7) は、パラメータ「ｉ」のビットｂ８（Ｘ印のビット）が、予約済ビットであることを示している。このビットｂ８は、暗号処理細則の指定には利用することができない。以下、このビットｂ８のビット値が「０」に固定されているものとして説明を行う。
【０１０１】
以上説明した図７(a) の各項目(1) 〜(7) に示す暗号処理細則の内容は、図７(b) の表にまとめてある。図６(c) に示すインストールコマンドにおいて、暗号化プロトコル指定パラメータによって「ＳＣＰ０３」を指定した場合、暗号処理細則指定パラメータ（パラメータ「ｉ」）の値は、図７の各項目に示す暗号処理細則を定めるパラメータとして機能する。パラメータ「ｉ」は、必ず特定の暗号化プロトコルに対応させて設定され、たとえば、「ＳＣＰ０３  ｉ＝１０ｈ」のように表記される。ここで、末尾のｈは、値「１０」が１６進数であることを示す（以下、同様）。「１０ｈ」はビット列「０００１００００」に対応する（ビットｂ５の値が「１」）。よって、「ＳＣＰ０３  ｉ＝１０ｈ」は、図７(a) の項目(3) に対応し、ＩＣカードが生成する乱数に擬似乱数を用いることを示す暗号処理細則指定パラメータということになる。
【０１０２】
(b)   暗号化プロトコルＳＣＰ０２についてのパラメータ「ｉ」
図８は、暗号化プロトコルＳＣＰ０２についてのパラメータ「ｉ」によって定められる暗号処理細則の実例を示す表であり、図９は、各暗号処理細則の具体的な内容を示す表である。図８の表においても、パラメータ「ｉ」は１バイトの値からなるデータであり、ｂ１〜ｂ８は、このパラメータ「ｉ」の各ビット（ｂ１がＬＳＢ，ｂ８がＭＳＢ）を示している。やはり、各項目の行に「−」が記入されたビットは、当該項目には当該ビットは無関係であることを示す。
【０１０３】
図８の表における項目(1) ，(2) は、パラメータ「ｉ」のビットｂ１（図において、０もしくは１のビット）が、相互認証処理および暗号通信処理に用いられる暗号鍵の数が、１組か３組かのいずれであるかを示すビットであることを定めている。図３に示す鍵テーブルＴの場合、各キーバージョン番号で指定される１行には、キーＩＤ「０ｘ０１」，「０ｘ０２」，「０ｘ０３」で指定される３つのセルに各暗号鍵が収容されており、１つのキーバージョン番号を指定することにより、３組の暗号鍵を特定することができる。パラメータ「ｉ」のビットｂ１のビット値が「１」の場合、これら３組の暗号鍵が相互認証処理および暗号通信処理に用いられる（項目(1) ）。一方、パラメータ「ｉ」のビットｂ１のビット値が「０」の場合、１組の暗号鍵（たとえば、キーＩＤ「０ｘ０１」のセルに収容された暗号鍵のみ）が相互認証処理および暗号通信処理に用いられる。
【０１０４】
項目(3) ，(4) は、パラメータ「ｉ」のビットｂ２（図において、０もしくは１のビット）が、外部装置がＩＣカードに対してコマンドを送信する際、送信コマンドを修正せずにチェックコード演算の材料とするか、送信コマンドを修正した上でチェックコード演算の材料とするか、のいずれであるかを示すビットであることを定めている。外部装置は、暗号通信路を介したコマンド送信時に、チェックコードを付与する処理を行うことになるが、パラメータ「ｉ」のビットｂ２のビット値が「１」の場合、修正せずにチェックコード演算の材料とし、パラメータ「ｉ」のビットｂ２のビット値が「０」の場合、修正した上でチェックコード演算の材料とすることになる。
【０１０５】
具体的には、図６に例示したとおり、各コマンドには、チャネル番号＃ｎが含まれており、チェックコードを作成する際には、このチャネル番号も演算の材料になるが、ビットｂ２が「１」の場合は、チャネル番号を修正せずにそのまま演算し、ビットｂ２が「０」の場合は、チェックコードの演算を行うときにのみ、チャネル番号を「＃０」に修正して演算することになる。詳細については、GlobalPlatform （登録商標）に定義されているため、ここでは説明は省略する。
【０１０６】
なお、この項目(3) ，(4) によって定められる暗号処理細則は、ＩＣカード側ではなく、外部装置側で実行される処理（送信コマンドのチェックコード演算処理）であるが、チェックコード生成時の演算プロセスは、ＩＣカード側で実行される処理（受信コマンドのチェックコード確認処理）の演算プロセスにも影響があるため、ＩＣカード側にも上記修正の有無を伝達しておく必要がある。パラメータ「ｉ」のビットｂ２は、この伝達の役割を果たすことになる。
【０１０７】
項目(5) ，(6) は、パラメータ「ｉ」のビットｂ３（図において、０もしくは１のビット）が、暗号通信路開設の準備段階で行われる相互認証処理を、コマンドを用いて明示的に実施するか、コマンドを用いずに暗黙的に実施するか、のいずれであるかを示すビットであることを定めている。パラメータ「ｉ」のビットｂ３のビット値が「１」の場合、コマンドを用いて明示的に相互認証処理が実施され、パラメータ「ｉ」のビットｂ３のビット値が「０」の場合、コマンドを用いずに暗黙的に相互認証処理が実施される。
【０１０８】
具体的には、パラメータ「ｉ」のビットｂ３のビット値が「１」の場合、相互認証処理は、図５のステップＳ３，Ｓ４に示すように、「INITIALIZE UPDATE コマンド」および「EXTERNAL AUTHENTICATE コマンド」を用いて明示的に実施されることになる。これに対して、パラメータ「ｉ」のビットｂ３のビット値が「０」の場合、相互認証処理は、このような明示的なコマンドを用いた形式ではなく、暗黙的な方法によって実施される。この暗黙的な方法による相互認証処理手順の詳細については、GlobalPlatform （登録商標）に定義されているため、ここでは説明は省略する。
【０１０９】
項目(7) ，(8) は、パラメータ「ｉ」のビットｂ４（図において、０もしくは１のビット）が、最初に生成するチェックコードのＩＣＶ（Initial Chaining Vector）として、どの値を用いるかを示すビットであることを定めている。パラメータ「ｉ」のビットｂ４のビット値が「１」の場合、コマンドの送受信を行う対象アプリケーションのアプリケーション名を用いた暗号演算の結果がＩＣＶとして使用され、パラメータ「ｉ」のビットｂ４のビット値が「０」の場合、８バイトの「００ｈ」がＩＣＶとして使用される。ＩＣＶの役割や生成手順についての詳細については、GlobalPlatform （登録商標）に定義されているため、ここでは説明は省略する。
【０１１０】
項目(9) ，(10)は、パラメータ「ｉ」のビットｂ５（図において、０もしくは１のビット）が、上記ＩＣＶを暗号化するか否かを示すビットであることを定めている。パラメータ「ｉ」のビットｂ５のビット値が「１」の場合、ＩＣＶは暗号化して送信され、パラメータ「ｉ」のビットｂ５のビット値が「０」の場合、ＩＣＶは暗号化せずに平文のまま送信される。
【０１１１】
項目(11)，(12)は、パラメータ「ｉ」のビットｂ６（図において、０もしくは１のビット）が、レスポンスデータにチェックコードを付与するか否かを示すビットであることを定めている。パラメータ「ｉ」のビットｂ６のビット値が「１」の場合、レスポンスデータはチェックコードが付与された状態で返信され、パラメータ「ｉ」のビットｂ６のビット値が「０」の場合、レスポンスデータはチェックコードが付与されない状態で返信される。
【０１１２】
項目(13)，(14)は、パラメータ「ｉ」のビットｂ７（図において、０もしくは１のビット）が、相互認証時に、ＩＣカードが生成する乱数に真正乱数を用いるか、擬似乱数を用いるか、を示すビットであることを定めている。パラメータ「ｉ」のビットｂ７のビット値が「０」の場合、ＩＣカードは図５のステップ３において真正乱数を用いて乱数Ｒｂを発生し、パラメータ「ｉ」のビットｂ７のビット値が「１」の場合、ＩＣカードは図５のステップＳ３において擬似乱数を用いて乱数Ｒｂを発生することになる。前述したとおり、擬似乱数の具体的な発生方法については、GlobalPlatform （登録商標）に定義されているため、ここでは説明は省略する。
【０１１３】
項目(15)は、パラメータ「ｉ」のビットｂ８（Ｘ印のビット）が、予約済ビットであることを示している。このビットｂ８は、暗号処理細則の指定には利用することができない。以下、このビットｂ８のビット値が「０」に固定されているものとして説明を行う。
【０１１４】
以上説明した図８の各項目(1) 〜(15)に示す暗号処理細則の内容は、図９の表にまとめてある。図６(c) に示すインストールコマンドにおいて、暗号化プロトコル指定パラメータによって「ＳＣＰ０２」を指定した場合、暗号処理細則指定パラメータ（パラメータ「ｉ」）の値は、図８の各項目に示す暗号処理細則を定めるパラメータとして機能する。
【０１１５】
(c)   その他の暗号化プロトコルについてのパラメータ「ｉ」
以上、暗号化プロトコルＳＣＰ０３およびＳＣＰ０２についてのパラメータ「ｉ」による暗号処理細則の内容を例示したが、パラメータ「ｉ」で指定される暗号処理細則の内容は、個々の暗号化プロトコルごとに異なっている。
【０１１６】
たとえば、図１０は、暗号化プロトコルＳＣＰ８１についてのパラメータ「ｉ」によって定められる暗号処理細則の実例を示す表であるが、その内容は、これまで述べてきた暗号化プロトコルＳＣＰ０３，ＳＣＰ０２の内容とはかなり性質が異なっている。すなわち、図１０に示す実例の場合、パラメータ「ｉ」は、通信に用いるＴＬＳ（Transport Layer Security）のプロトコルを指定するために使用されている。
【０１１７】
具体的には、図１０の表における項目(1) 〜(3) は、パラメータ「ｉ」のビットｂ１〜ｂ３が、暗号化プロトコルＳＣＰ８１に基づく暗号通信に用いるＴＬＳのどのバージョンを用いるかを示すビットであることを定めている。ここでも、各項目の行に「−」が記入されたビットは、当該項目には当該ビットは無関係であることを示している。但し、ビットｂ１〜ｂ３は、いずれか１つのみが値「１」をとるように設定されており、ビットｂ１が「１」の場合は「ＴＬＳ v1.0」が用いられ、ビットｂ２が「１」の場合は「ＴＬＳ v1.1」が用いられ、ビットｂ３が「１」の場合は「ＴＬＳ v1.2」が用いられることを示している。
【０１１８】
また、項目(4) は、パラメータ「ｉ」のビットｂ４〜ｂ７（Ｘ印のビット）が、ＲＦＵ（Reserved for Future Use：将来のための予約ビット）であることを示しており、現時点では、いずれもビット値を「０」に設定することが決められている。一方、項目(5) は、パラメータ「ｉ」のビットｂ８（Ｘ印のビット）が、予約済ビットであることを示している。このビットｂ８は、暗号処理細則の指定には利用することができない。
【０１１９】
なお、パラメータ「ｉ」による暗号処理細則の指定方法を全く採用していない暗号化プロトコルも存在する。たとえば、暗号化プロトコルＳＣＰ８０については、パラメータ「ｉ」は存在しないため、便宜上、パラメータ「ｉ」を収容するデータ領域には、「ALL RFU (set to 0) 」として「００ｈ」を収容している。
【０１２０】
＜＜＜  §４．  本発明の基本概念  ＞＞＞
§２で述べたとおり、従来の一般的なＩＣカードでは、外部装置との間の暗号通信処理を担う管理プログラムＳＤをインストールする際に、特定の暗号化プロトロルを指定するとともに、当該特定の暗号化プロトロルに関する特定の暗号処理細則を指定する作業が行われることになる。したがって、管理プログラムＳＤのインストールが完了した時点で、当該管理プログラムＳＤが暗号通信路を開設する際に用いられる暗号化プロトコルや、当該暗号化プロトロルを用いた通信処理の細かな手順を定めた暗号処理細則は定まる。
【０１２１】
こうして、管理プログラムＳＤのインストールが完了してしまうと、その後、当該管理プログラムＳＤが暗号通信路の開設処理を実行する際に、その都度、任意の暗号処理細則を指定することは困難である。これは、図６(d) に示すように、GlobalPlatform （登録商標）に準拠した暗号通信路開設コマンド「INITIALIZE UPDATE」に付加するパラメータには、キーバージョン番号と乱数を含める仕様が定められているものの、パラメータ「ｉ」のような暗号処理細則を指定する情報を含める仕様にはなっていないためである。別言すれば、上記仕様に準拠した暗号通信路開設コマンド「INITIALIZE UPDATE」を用いる限り、当該暗号通信路開設コマンドには、暗号処理細則を直接指定するパラメータを付加することができない。
【０１２２】
その一方で、実用上は、ＩＣカードに対して暗号通信路開設コマンド「INITIALIZE UPDATE」を与えて暗号通信路の開設を行う際に、その都度、暗号処理細則を指定できるようにすることが望まれている。これは、ＩＣカードがスマートフォンなどの外部装置と通信する場合、外部装置内の各アプリケーションプログラムに応じて、その都度、任意の暗号処理細則を設定して暗号通信を行うことができる方が好ましいからである。
【０１２３】
たとえば、オンラインバンキング用のアプリであれば、セキュリティを重視する必要があるため、相互認証処理には真性乱数を用い、レスポンスデータを暗号化して受信するとともに、レスポンスデータにチェックコードを付与する運用が望まれるであろう。これに対して、時間潰しにプレイするゲームアプリの場合、セキュリティは重要ではないが、より簡便な処理が好ましいので、相互認証処理には擬似乱数を用い、レスポンスデータは暗号化せず、チェックコードなしで受信する運用が望まれるであろう。
【０１２４】
本発明は、このような外部装置に組み込まれるアプリケーションプログラムの多様化に伴い、暗号通信路を開設するたびに、その場に適した暗号処理細則の設定を可能にする具体的な方法を提供することを目的とするものである。
【０１２５】
§２で述べたとおり、従来の一般的なＩＣカードでは、インストールコマンド「INSTALL for install」に、暗号処理細則指定パラメータ（パラメータ「ｉ」）を付加し、インストール時に暗号処理細則を指定するという方法が採られていた。そして、§３では、このパラメータ「ｉ」によって指定される暗号処理細則の実例をいくつか示した。したがって、このパラメータ「ｉ」の値を、何らかの方法で、暗号通信路開設コマンド「INITIALIZE UPDATE」を利用してＩＣカードに伝達することができれば、暗号通信路を開設するたびに、任意の暗号処理細則を設定することが可能になる。
【０１２６】
前述したとおり、パラメータ「ｉ」は１バイト、すなわち、８ビットのデータによって構成される。ただ、GlobalPlatform （登録商標）の仕様に定められていない以上、当該仕様に準拠したＩＣカードに対しては、たかが１バイトのデータであっても、暗号通信路開設コマンド「INITIALIZE UPDATE」にパラメータとして付加して伝達することはできない。暗号通信路開設コマンド「INITIALIZE UPDATE」に付加可能なパラメータは、仕様上、図６(d) に示すとおり、「キーバージョン番号」と「乱数」だけである。
【０１２７】
そこで、本願発明者は、「キーバージョン番号」を利用してパラメータ「ｉ」の情報をＩＣカードへ伝達できないか、という着想の下に、種々の方法を模索することにした。ただ、「キーバージョン番号」は、図３の鍵テーブルＴに示されているとおり、「０ｘ０１〜０ｘ７Ｆ」の範囲内のアドレス空間を示すデータであり、１バイトのデータによって構成すれば十分である。したがって、この「キーバージョン番号」に、更に１バイトのパラメータ「ｉ」の情報を組み込むことはできない。
【０１２８】
ただ、パラメータ「ｉ」は１バイト、すなわち、０〜２５５まで２５６通りの値をもった情報であるものの、その一部のビットは予約ビットとなっており、実際には使用されておらず、また、暗号通信路開設時には、必ずしも、すべての暗号処理細則を任意に設定する必要もない。したがって、ＩＣカード側に伝達する暗号処理細則の情報量は、１バイトである必要はない。
【０１２９】
たとえば、図１１に示す表は、図７に示すＳＣＰ０３についての暗号処理細則指定パラメータ（パラメータ「ｉ」）を用いて、具体的な暗号処理細則を定めた表である。この表の「「ｉ」の値」の欄には、パラメータ「ｉ」の値として、「３２」，「４８」，「９６」，「１１２」（いずれも１０進表示）の４通りの例が示されている。また、「パラメータ「ｉ」の各ビット」の欄には、これら４通りの値に対応する各ビットｂ１〜ｂ８の構成（暗号処理細則指定パラメータ）が示されており、「暗号処理細則の内容」の欄には、これら４通りの値に対応して指定される暗号処理細則が示されている。各ビットの値を図７(a) ，(b) の表と対比すれば、このような結果が得られることは容易に理解できよう。
【０１３０】
具体的には、たとえば、「ｉ」の値が「３２」の場合は、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則の内容を示すことになる。実際、暗号通信路開設時に、その都度、この図１１に例示した４通りの暗号処理細則の内容のいずれかを選択して設定できるようにすれば、実用上はかなり自由度の高い運用が可能になる。しかも、この４通りの暗号処理細則の内容のいずれか１つを選択する旨の情報は、たかだか２ビットで表現することが可能である。
【０１３１】
本願発明者は、更に、数ビット程度の情報であれば、「キーバージョン番号」に対して格納ゾーンなるものを設定することにより、「キーバージョン番号」を利用して当該情報を間接的にＩＣカードに伝達できるのではないか、との着想を得た。図３に示す鍵テーブルＴにおける「キーバージョン番号」は、「０ｘ０１〜０ｘ７Ｆ」の範囲内のアドレス空間を示すデータであるが、たとえば、この鍵テーブルＴ上の「キーバージョン番号」のアドレス空間において、「０ｘ０１〜０ｘ１Ｆ」の範囲を格納ゾーンＺ１、「０ｘ２０〜０ｘ３Ｆ」の範囲を格納ゾーンＺ２、「０ｘ４０〜０ｘ５Ｆ」の範囲を格納ゾーンＺ３、「０ｘ６０〜０ｘ７Ｆ」の範囲を格納ゾーンＺ４と定義する。
【０１３２】
一方、図１１に示す４通りの暗号処理細則の内容を、上記各格納ゾーンＺ１〜Ｚ４に対応づける。具体的には、たとえば、「ｉ」の値「３２」を格納ゾーンＺ１に対応づけ、「ｉ」の値「４８」を格納ゾーンＺ２に対応づけ、「ｉ」の値「９６」を格納ゾーンＺ３に対応づけ、「ｉ」の値「１１２」を格納ゾーンＺ４に対応づければよい。そうすれば、外部装置からＩＣカードに対して、暗号通信路開設コマンド「INITIALIZE UPDATE」を送信する際に、パラメータとして付加した「キーバージョン番号」によって、４通りの暗号処理細則のうちから１つを選択する旨の情報をＩＣカードに間接的に伝達することが可能になる。
【０１３３】
具体的には、たとえば、暗号通信路開設コマンド「INITIALIZE UPDATE」に、「０ｘ２０」なるキーバージョン番号を付加して送信すれば、これを受信したＩＣカードは、図３に示す鍵テーブルＴから指定されたキーバージョン番号「０ｘ２０」に対応する暗号鍵ＫｅｙＧ，ＫｅｙＨ，ＫｅｙＩを読み出して暗号通信路開設処理を行うことになるが、このとき、キーバージョン番号「０ｘ２０」が格納ゾーンＺ２に所属することがわかるので、当該ゾーンＺ２に対応づけられた「ｉ」の値「４８」が指定されたことを認識することができる。したがって、ＩＣカードは、「相互認証処理に用いる乱数として擬似乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則に従って、暗号通信処理を行うことになる。
【０１３４】
もちろん、外部装置側のアプリケーションプログラムが、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則に従った暗号通信処理を望むのであれば、暗号通信路開設コマンド「INITIALIZE UPDATE」に、たとえば「０ｘ０１」なるキーバージョン番号（格納ゾーンＺ１に所属するキーバージョン番号）を付加して送信すればよいし、「相互認証処理に用いる乱数として擬似乱数を用い、レスポンスデータは暗号化してチェックコードも付与する」という暗号処理細則に従った暗号通信処理を望むのであれば、暗号通信路開設コマンド「INITIALIZE UPDATE」に、たとえば「０ｘ７Ｅ」なるキーバージョン番号（格納ゾーンＺ４に所属するキーバージョン番号）を付加して送信すればよい。
【０１３５】
以上が本発明の基本概念である。この基本概念を導入すれば、２組の情報処理装置の間に暗号通信路を開設する際に、その都度、暗号通信路開設コマンドに含ませた暗号鍵の格納場所を示す格納場所指定情報によって、一方の装置から他方の装置に対して、暗号通信処理の細かな手順を定めた暗号処理細則を間接的に伝達することができるようになる。このため、暗号通信路を開設するたびに、暗号処理細則の設定が可能になる。以下、§５において、上記基本概念に基づいた本発明の基本的実施形態を説明する。
【０１３６】
＜＜＜  §５．  本発明の基本的実施形態  ＞＞＞
図１２は、本発明の基本的実施形態に係る情報処理システムの構成を示すブロック図である。この図１２に示す情報処理システムは、第１の情報処理装置１００と第２の情報処理装置２００とを備え、両者間で所定の暗号化プロトコルに基づいた暗号通信が可能な情報処理システムである。ここでは、図２に示す例と同様に、第１の情報処理装置１００として、ＳＩＭカード１１に管理プログラムＳＤを組み込んだ装置を用い、第２の情報処理装置２００として、当該ＳＩＭカード１１を装着する相手となるスマートフォン１０に所定のアプリケーションプログラム（アプリＡＰ３）を組み込んだ装置を用いた例について、以下の説明を行うことにする。
【０１３７】
図示のとおり、第１の情報処理装置１００には、暗号通信路を開設する処理を行う第１の暗号通信処理部１１０と、暗号鍵を格納する第１の暗号鍵格納部１２０と、暗号処理細則を格納する暗号処理細則格納部１３０と、が設けられており、第１の暗号通信処理部１１０は、第１の暗号鍵格納部１２０に格納されている暗号鍵を用いて、暗号処理細則格納部１３０に格納されている暗号処理細則に従って、暗号通信路を開設する処理を行う。
【０１３８】
ここに示す実施例の場合、第１の暗号通信処理部１１０は、実際には、ＳＩＭカード１１にインストールされた管理プログラムＳＤの機能として実現されることになり、第１の暗号鍵格納部１２０および暗号処理細則格納部１３０は、この管理プログラムＳＤによって管理されるＳＩＭカード１１に内蔵されたメモリの一部分の領域として実現されることになる。
【０１３９】
一方、第２の情報処理装置２００には、第１の暗号通信処理部１１０が開設した暗号通信路を利用して暗号通信を行う第２の暗号通信処理部２１０と、暗号鍵を格納する第２の暗号鍵格納部２２０と、第１の暗号通信処理部１１０に対して暗号通信路の開設を指示する暗号通信路開設指示部２３０とが設けられている。
【０１４０】
ここに示す実施例の場合、第２の暗号通信処理部２１０および暗号通信路開設指示部２３０は、実際には、スマートフォン１０にインストールされたアプリケーションプログラム（アプリＡＰ３）の機能として実現されることになり、第２の暗号鍵格納部２２０は、スマートフォン１０に内蔵されたメモリの一部分の領域として実現されることになる。
【０１４１】
このように、実際には、本発明に係る第１の情報処理装置１００は、ＩＣカードもしくはその他の情報処理装置を構成するコンピュータに、管理プログラムＳＤ等の専用プログラムを組み込むことによって実現でき、本発明に係る第２の情報処理装置２００は、スマートフォンもしくはその他の情報処理装置を構成するコンピュータに、所定のプログラムを組み込むことによって実現できる。
【０１４２】
この図１２に示す情報処理システムでは、後述するように、暗号通信路開設指示部２３０から第１の暗号通信処理部１１０に対して、暗号通信路開設コマンドＣＭＤが送信されると、第１の暗号通信処理部１１０は、当該コマンドに基づき、第１の暗号鍵格納部１２０に格納されている所定の暗号鍵を用いて、暗号処理細則格納部１３０に格納されている所定の暗号処理細則に従って、暗号通信路を開設する処理を行う。その後、第２の暗号通信処理部２１０は、第２の暗号鍵格納部２２０に格納されている暗号鍵を用いて、当該暗号通信路を介した暗号通信を行うことになる。
【０１４３】
続いて、上記各構成要素の機能について、更に詳しい説明を行う。まず、第１の暗号通信処理部１１０は、所定の暗号化プロトコルＰに基づき、当該暗号化プロトコルＰによる暗号通信処理の細かな手順を定めた所定の暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して第２の情報処理装置２００との間で暗号通信を行う。ここで、暗号化プロトコルＰは、§２で述べたとおり、管理プログラムＳＤをインストールする際に指定される。
【０１４４】
第１の暗号鍵格納部１２０は、鍵テーブルＴｋを保持する構成要素である。この鍵テーブルＴｋには、複数の格納場所が用意されており、個々の格納場所には、それぞれ暗号化プロトコルＰに用いられる暗号鍵が格納されている。図１２には、説明の便宜上、鍵テーブルＴｋ内に４つの格納場所Ｌ１１〜Ｌ１４が用意され、各格納場所にそれぞれ暗号鍵Ｋｅｙｓ１１〜Ｋｅｙｓ１４が格納されている状態が示されている。
【０１４５】
暗号処理細則格納部１３０は、上記鍵テーブルＴｋについて設定された複数の格納ゾーンについて、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すゾーンテーブルＴｚを保持する構成要素である。図示の例の場合、鍵テーブルＴｋ上には２組の格納ゾーンＺ１，Ｚ２が設定されており、各格納場所Ｌ１１〜Ｌ１４は、いずれかの格納ゾーンに所属する。そして、ゾーンテーブルＴｚには、個々の格納ゾーンＺ１，Ｚ２に対して、それぞれ暗号処理細則Ｃ１，Ｃ２が対応づけられている。
【０１４６】
なお、図１２では、説明の便宜上、鍵テーブルＴｋ上の４つの格納場所Ｌ１１〜Ｌ１４に、それぞれ１つの暗号鍵が格納されている例が示されているが、GlobalPlatform （登録商標）の仕様に基づく鍵テーブルＴは、図３に示すように、「キーバージョン番号」を縦にとり、「キーＩＤ」を横にとったマトリックス状のセルのそれぞれに「個別の鍵」が格納されている。この場合、同じ「キーバージョン番号」をもつ１行のセル群が、１つの格納場所を構成することになる。したがって、図１２に示す鍵テーブルＴｋとして、図３に示す鍵テーブルＴを採用した場合、４つの格納場所Ｌ１１〜Ｌ１４は、それぞれが、図３に示す鍵テーブルＴにおける１行のセル群に対応することになり、１つの格納場所には、３組の「個別の鍵」が格納されていることになる。
【０１４７】
このように、図１２に示す鍵テーブルＴｋに格納されている暗号鍵Ｋｅｙｓ１１〜Ｋｅｙｓ１４は、それぞれが「個別の鍵」であってもよいが、図３に示す鍵テーブルＴを採用した場合は、それぞれが「複数組の鍵からなる鍵群」であってもかまわない。具体的には、たとえば、図１２に示す格納場所Ｌ１１が、図３に示す鍵テーブルＴの１行目（キーバージョン番号：０ｘ０１の行）に対応する場合、図１２に示す「Ｋｅｙｓ１１」は、図３に示す３組の個別の鍵「ＫｅｙＡ，ＫｅｙＢ，ＫｅｙＣ」に対応することになる。暗号鍵Ｋｅｙｓ１１〜Ｋｅｙｓ１４を「Ｋｅｙｓ」と複数形で表現しているのは、このような場合を想定したものである。
【０１４８】
なお、本願では便宜上、図３の「ＫｅｙＡ」のような「個別の鍵」も、図３の「ＫｅｙＡ，ＫｅｙＢ，ＫｅｙＣ」のような「複数組の鍵からなる鍵群」も、特に混同のない限り、単に「暗号鍵」と呼ぶことにする。
【０１４９】
続いて、第２の情報処理装置２００の構成要素について説明する。まず、第２の暗号通信処理部２１０は、暗号化プロトコルＰ（第１の暗号通信処理部１１０が利用する暗号化プロトコルと同じもの）に基づく暗号通信を行う機能を有し、第１の暗号通信処理部１１０によって開設された暗号通信路を介して、第１の情報処理装置１００との間で暗号通信を行う構成要素である。図には、両者間に暗号通信路が開設された状態が示されている。
【０１５０】
第２の暗号鍵格納部２２０は、暗号化プロトコルＰに用いられる暗号鍵を格納する構成要素である。第１の暗号通信処理部１１０と第２の暗号通信処理部２１０との間で暗号通信を行うためには、両者が同じ暗号化プロトコルＰを用い、同じ暗号鍵を利用した暗号処理が必要になる。したがって、第２の暗号鍵格納部２２０には、少なくとも、第１の暗号鍵格納部１２０内の鍵テーブルＴｋに格納されている暗号鍵のいずれかと同一の特定の暗号鍵が格納されており、暗号通信を行う際には、両者で同一の暗号鍵を利用した暗号処理が実行されることになる。図示の例では、第２の暗号鍵格納部２２０に、特定の暗号鍵Ｋｅｙｓ１３が格納されている例が示されている。この特定の暗号鍵Ｋｅｙｓ１３は、第１の暗号鍵格納部１２０に保持されている鍵テーブルＴｋの格納場所Ｌ１３に格納されている暗号鍵と同じものである。
【０１５１】
暗号通信路開設指示部２３０は、第１の情報処理装置１００に対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドＣＭＤを与える構成要素である。この暗号通信路開設コマンドＣＭＤには、第２の暗号鍵格納部２２０に格納されている暗号鍵に対応する特定の暗号鍵についての鍵テーブルＴｋ内の格納場所を示す格納場所指定情報が含まれている。図示の例の場合、第２の暗号鍵格納部２２０に格納されている暗号鍵はＫｅｙｓ１３であるので、これに対応する特定の暗号鍵Ｋｅｙｓ１３が格納されている鍵テーブルＴｋ内の格納場所Ｌ１３を示す格納場所指定情報が、暗号通信路開設コマンドＣＭＤの一部として送信される。
【０１５２】
この暗号通信路開設コマンドＣＭＤを受信した第１の暗号通信処理部１１０は、次のような方法で暗号通信路の開設処理を行う。まず、暗号通信路開設コマンドＣＭＤに含まれている格納場所指定情報によって指定された指定格納場所Ｌ１３を認識し、鍵テーブルＴｋの指定格納場所Ｌ１３に格納されている暗号鍵Ｋｅｙｓ１３を指定暗号鍵として読み出す。また、指定格納場所Ｌ１３が所属する格納ゾーンＺ２を認識し、ゾーンテーブルＴｚを参照して指定格納場所Ｌ１３が所属する格納ゾーンＺ２に対応づけられている暗号処理細則Ｃ２を指定暗号処理細則として認識する。そして、読み出した指定暗号鍵Ｋｅｙｓ１３を用いて、認識した指定暗号処理細則Ｃ２に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設する。
【０１５３】
なお、GlobalPlatform （登録商標）の仕様では、図６(c) に示すとおり、管理プログラムＳＤをインストールする際のインストールコマンドに付加されているパラメータに暗号処理細則指定パラメータ「ｉ」が含まれており、当該パラメータ「ｉ」は、インストール時のデフォルトの暗号処理細則として、管理プログラムＳＤの暗号処理ルーチンに組み込まれている。本発明では、上述したとおり、暗号通信路開設コマンドＣＭＤを受信するたびに、新たな暗号処理細則（パラメータ「ｉ」）が指定されるので、上記デフォルトの暗号処理細則に優先して、新たに指定された暗号処理細則が適用されることになる。
【０１５４】
このような構成をもつ情報処理システムによれば、２組の情報処理装置１００，２００の間に暗号通信路を開設する際に、その都度、暗号通信路開設コマンドＣＭＤに含ませた暗号鍵の格納場所を示す格納場所指定情報によって、第２の情報処理装置２００から第１の情報処理装置１００に対して、特定の暗号処理細則を指定する情報を伝達することができる。このため、暗号通信路を開設するたびに、暗号処理細則の設定が可能になる。
【０１５５】
たとえば、図１２に示す例の場合、スマートフォン１０内のアプリＡＰ３は、特定の暗号鍵Ｋｅｙｓ１３を用いて、ＳＩＭカード１１内の管理プログラムＳＤに対して暗号通信路の開設を指示することになるので、上述したとおり、指定暗号処理細則Ｃ２に従った暗号処理の手順が実行されることになる。これに対して、スマートフォン１０内に別なアプリＡＰ４（図示されていない）が組み込まれており、この別なアプリＡＰ４が特定の暗号鍵Ｋｅｙｓ１２を用いて、ＳＩＭカード１１内の管理プログラムＳＤに対して暗号通信路の開設を指示する場合、暗号通信路開設コマンドＣＭＤによって指定される格納場所はＬ１２になるので、格納ゾーンＺ１に対応する暗号処理細則Ｃ１に従った暗号処理の手順が実行されることになる。
【０１５６】
このように、同じスマートフォン１０が同じＳＩＭカード１１を相手に通信する場合であっても、アプリＡＰ３が通信を行う場合は暗号処理細則Ｃ２に従った暗号処理の手順が実行され、アプリＡＰ４が通信を行う場合は暗号処理細則Ｃ１に従った暗号処理の手順が実行されることになり、アプリケーションプログラムに応じて、異なる暗号処理細則を利用した暗号通信が可能になる。同様に、第２の情報処理装置２００として、全く別なスマートフォン１０′を用いた場合も、同じ手法によって、異なる暗号処理細則を利用した暗号通信が可能になる。
【０１５７】
もちろん、鍵テーブルＴｋに格納される複数の暗号鍵には、同一のものが含まれていてもかまわない。たとえば、図１２に示す例において、暗号鍵Ｋｅｙｓ１２と暗号鍵Ｋｅｙｓ１３とが、全く同じ暗号鍵であった場合を考えてみよう。この場合、暗号通信路開設コマンドＣＭＤによって暗号鍵Ｋｅｙｓ１２を指定したときと、暗号鍵Ｋｅｙｓ１３を指定したときとを比べると、いずれも同一の暗号化プロトコルＰに基づき、同一の暗号鍵を用いた暗号通信路が開設される点に変わりはないが、前者では、暗号処理細則Ｃ１に従った暗号処理の手順が実行され、後者では、暗号処理細則Ｃ２に従った暗号処理の手順が実行されることになる。したがって、この場合、暗号鍵Ｋｅｙｓ１２の指定と暗号鍵Ｋｅｙｓ１３の指定との差は、暗号処理細則Ｃ１を適用するか、暗号処理細則Ｃ２を適用するかの違いということになる。
【０１５８】
＜＜＜  §６．  本発明のより具体的な実施形態  ＞＞＞
既に述べたとおり、GlobalPlatform （登録商標）の仕様では、図３に示すような鍵テーブルＴが用いられる。そこで、ここでは、当該仕様に応じた鍵テーブルＴｋと§３で説明したパラメータ「ｉ」を利用した本発明のより具体的な実施形態を説明する。
【０１５９】
図１３は、図１２に示す情報処理システムに用いる鍵テーブルＴｋおよびゾーンテーブルＴｚの具体例を示す表である。すなわち、図１３(a) に示す鍵テーブルＴｋは、第１の暗号鍵格納部１２０内に保持されるテーブルであり、図１３(b) に示すゾーンテーブルＴｚは、暗号処理細則格納部１３０内に保持されるテーブルである。いずれのテーブルも、ＳＩＭカード１１に管理プログラムＳＤをインストールする際に併せて組み込むようにすればよい。もちろん、インストール後に、書込コマンドを与えてこれらのテーブルを書き込むようにしてもよいし、必要があれば、これらのテーブルの内容を適宜更新するようにしてもよい。
【０１６０】
図１３(a) に示す鍵テーブルＴｋは、図３に示す鍵テーブルＴに格納ゾーンを設定したものである。この鍵テーブルＴｋには、それぞれがキーバージョン番号によって特定される複数の格納場所が用意されており、個々の格納ゾーンは、１つもしくは複数の格納場所によって構成されている。
【０１６１】
より具体的には、この鍵テーブルＴｋには、キーバージョン番号「０ｘ０１」〜「０ｘ７Ｆ」で特定される１２７個の格納場所が用意されており、各格納場所には、それぞれキーＩＤ「０ｘ００」〜「０ｘ７Ｆ」で特定される１２８個のセルが用意されている。個々のセルは、１つの「個別の鍵」を格納するための格納庫として機能する。
【０１６２】
図示の例の場合、鍵テーブルＴｋを構成する全セルのうち、実際に「個別の鍵」が格納されているセルは一部であり、多くのセルは空白になっている。そして、実際に暗号鍵が格納されている行について、合計４組の格納ゾーンＺ１〜Ｚ４が設定されている。すなわち、キーバージョン番号「０ｘ０１」に対応する１行が格納ゾーンＺ１、キーバージョン番号「０ｘ０２」に対応する１行が格納ゾーンＺ２、キーバージョン番号「０ｘ２０」，「０ｘ２１」，「０ｘ２２」に対応する３行が格納ゾーンＺ３、キーバージョン番号「０ｘ７Ｅ」，「０ｘ７Ｆ」に対応する２行が格納ゾーンＺ４に設定されている。
【０１６３】
このように、本発明において設定する格納ゾーンは、１つの格納場所（１つのキーバージョン番号で特定される行）のみしか含まないゾーンであってもよいし、複数の格納場所（複数のキーバージョン番号で特定される行）を含むゾーンであってもよい。また、鍵テーブルＴｋの全領域に格納ゾーンの設定を行う必要はなく、図示の例のように、一部に格納ゾーンが設定されていない領域が存在していてもかまわない。
【０１６４】
図１３(a) に示す鍵テーブルＴｋでは、個々の格納場所は、キーバージョン番号で特定されるため、暗号通信路開設コマンドＣＭＤには、格納場所指定情報として特定のキーバージョン番号を含ませるようにすればよい。第１の暗号通信処理部１１０は、このキーバージョン番号によって特定される格納場所を指定格納場所として、指定暗号鍵の読出処理および指定暗号処理細則の認識処理を行うことになる。
【０１６５】
一方、図１３(b) に示すゾーンテーブルＴｚは、図１１に例示した４組の暗号処理細則を対応づけたテーブルである。このゾーンテーブルＴｚでは、まず、４つの格納ゾーンＺ１〜Ｚ４について、それぞれ数値範囲が定義されている。この数値範囲は、キーバージョン番号の範囲を示すものであり、図１３に示す格納ゾーンＺ１〜Ｚ４の設定を定義するものである。具体的には、格納ゾーンＺ１は「０ｘ０１」、格納ゾーンＺ２は「０ｘ０２」、格納ゾーンＺ３は「０ｘ２０」〜「０ｘ２２」、格納ゾーンＺ４は「０ｘ７Ｅ」〜「０ｘ７Ｆ」として、それぞれキーバージョン番号の数値範囲によって定義される。要するに、ここに示す例の場合、個々の格納ゾーンが、１つの格納場所もしくは連続するキーバージョン番号を有する複数の格納場所によって構成され、個々の格納ゾーンがキーバージョン番号の固有の数値範囲に対応づけられていることになる。
【０１６６】
図１３(b) に示すゾーンテーブルＴｚでは、この４つの格納ゾーンＺ１〜Ｚ４に、パラメータ「ｉ」の特定の値が対応づけられている。具体的には、格納ゾーンＺ１〜Ｚ４に対して、それぞれパラメータ「ｉ」を構成する８ビットのデータが対応づけられている。図の表には、説明の便宜上、パラメータ「ｉ」の値を１０進で表示した「３２」，「４８」，「９６」，「１１２」なるデータも記載されている。第１の暗号通信処理部１１０内の暗号化プロトコルＰを実行するプログラムには、このパラメータ「ｉ」の値によって示される暗号処理細則の内容を解釈するルーチンが備わっており、指定された暗号処理細則に従った暗号通信処理が実行される。
【０１６７】
前述したとおり、８ビットのデータからなるパラメータ「ｉ」は、暗号処理細則指定パラメータとして機能し、ここに示す実施例の場合、図１１に示すとおり、「相互認証処理に用いる乱数」の種別，「レスポンスデータの暗号化」の有無，「レスポンスデータへのチェックコードの付与」の有無、という３つの暗号処理細則を定めるパラメータになる。たとえば、「ｉ」の値が「３２」の場合は、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則の内容を示すことになる。
【０１６８】
したがって、暗号通信路開設指示部２３０から第１の暗号通信処理部１１０に対して与える暗号通信路開設コマンドＣＭＤに、格納場所指定情報としてキーバージョン番号「０ｘ０１」を含ませておけば、第１の暗号通信処理部１１０は、まず、図１３(a) に示す鍵テーブルＴｋから、キーバージョン番号「０ｘ０１」に対応する暗号鍵を読み出すことができる。
【０１６９】
図１３(a) に示す鍵テーブルＴｋの場合、各格納場所（テーブルの各行）には、それぞれキーＩＤによって特定される複数の格納庫（セル）が用意されており、これら複数の格納庫の全部もしくは一部に、それぞれ別個の暗号鍵が格納されている。したがって、第１の暗号通信処理部１１０は、暗号通信路開設コマンドＣＭＤに含まれるキーバージョン番号によって特定される格納場所内の複数の格納庫に格納されている暗号鍵を利用して暗号通信路を開設することになる。具体的には、キーバージョン番号「０ｘ０１」が指定された場合、暗号鍵「ＫｅｙＡ，ＫｅｙＢ，ＫｅｙＣ」を利用して暗号通信路が開設される。
【０１７０】
また、第１の暗号通信処理部１１０は、図１３(b) に示すゾーンテーブルＴｚを参照して、キーバージョン番号「０ｘ０１」が所属する格納ゾーンＺ１に対応づけられているパラメータ「ｉ」（値「３２」）を認識することができる。そこで、第１の暗号通信処理部１１０は、パラメータ「ｉ」の各ビットに対応する暗号処理細則を解釈することにより、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則の内容を把握することができる。その結果、暗号鍵「ＫｅｙＡ，ＫｅｙＢ，ＫｅｙＣ」を用い、把握した暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して第２の情報処理装置２００との間で暗号通信を行うことになる。
【０１７１】
なお、図１１には、暗号処理細則として、「相互認証処理に用いる乱数」の種別，「レスポンスデータの暗号化」の有無，「レスポンスデータへのチェックコードの付与」の有無、という３つの規則を定めた例を示したが、暗号処理細則としては、この他にも任意の規則を定めることが可能である。§３では、暗号化プロトコルＳＣＰ０３やＳＣＰ０２で実際に定義されているパラメータ「ｉ」の実例を示した。この実例を踏まえ、以下に、本発明を実施する上で利用可能な暗号処理細則のいくつかの例を列挙しておく。
【０１７２】
(1)   相互認証処理の手順に関する暗号処理細則
図５のダイアグラムに示すとおり、暗号通信路を開設する前には、その準備段階の処理として、第１の情報処理装置１００と第２の情報処理装置２００との間で相互認証処理を行う必要があり、この相互認証処理には様々な手順が実用化されている。したがって、この相互認証処理の手順を定める規則は、本発明を実施する上で利用可能な暗号処理細則のひとつである。
【０１７３】
具体的には、相互認証処理のために第１の情報処理装置１００が生成する乱数Ｒｂとして、真性乱数を用いるか、擬似乱数を用いるか、を定めた規則を、暗号処理細則として利用することができる。たとえば、暗号化プロトコルＳＣＰ０３の場合、図７(a) の項目(2) ，(3) に示すように、パラメータ「ｉ」のビットｂ５に上記規則が定められており、暗号化プロトコルＳＣＰ０２の場合、図９の項目(13) ，(14) に示すように、パラメータ「ｉ」のビットｂ７に上記規則が定められている。
【０１７４】
また、相互認証処理および暗号通信処理に用いられる暗号鍵の数を定める規則を、暗号処理細則として利用することもできる。たとえば、暗号化プロトコルＳＣＰ０２の場合、図８の項目(1) ，(2) に示すように、パラメータ「ｉ」のビットｂ１に上記規則が定められている。
【０１７５】
更に、相互認証処理を、認証用コマンドを用いて明示的に実施するか、認証用コマンドを用いずに暗黙的に実施するか、を定める規則を、暗号処理細則として利用することもできる。たとえば、暗号化プロトコルＳＣＰ０２の場合、図８の項目(5) ，(6) に示すように、パラメータ「ｉ」のビットｂ３に上記規則が定められている。
【０１７６】
したがって、ゾーンテーブルとして、パラメータ「ｉ」の特定の値を各格納ゾーンに対応づけたテーブルを用いるようにすれば、上述したいくつかの相互認証処理の手順に関する暗号処理細則を、暗号通信路開設コマンドによって設定することが可能になる。
【０１７７】
(2)   レスポンスの送信手順に関する暗号処理細則
開設された暗号通信路を介して第１の情報処理装置から第２の情報処理装置にレスポンスを送信する方法にも、種々の異なる手順が定められており、このレスポンスの送信手順を定める規則も、本発明を実施する上で利用可能な暗号処理細則のひとつである。
【０１７８】
具体的には、レスポンスデータを暗号化するか否かを定めた規則を、暗号処理細則として利用することができる。たとえば、暗号化プロトコルＳＣＰ０３の場合、図７(a) の項目(4) 〜(6) に示すように、パラメータ「ｉ」のビットｂ７に上記規則が定められている。同様に、レスポンスデータにチェックコードを付与するか否かを定めた細則を、暗号処理細則として利用することもできる。たとえば、暗号化プロトコルＳＣＰ０３の場合、図７(a) の項目(4) 〜(6) に示すように、パラメータ「ｉ」のビットｂ６に上記規則が定められており、暗号化プロトコルＳＣＰ０２の場合、図８の項目(11) ，(12) に示すように、パラメータ「ｉ」のビットｂ６に上記規則が定められている。
【０１７９】
したがって、ゾーンテーブルとして、パラメータ「ｉ」の特定の値を各格納ゾーンに対応づけたテーブルを用いるようにすれば、上述したレスポンスの送信手順に関する暗号処理細則を、暗号通信路開設コマンドによって設定することが可能になる。
【０１８０】
(3)   コマンドの送信手順に関する暗号処理細則
開設された暗号通信路を介して第２の情報処理装置から第１の情報処理装置にコマンドを送信する方法にも、種々の異なる手順が定められており、このコマンドの送信手順を定める規則も、本発明を実施する上で利用可能な暗号処理細則のひとつである。
【０１８１】
具体的には、送信コマンドへのチェックコード付与に関する事項を定めた規則を、暗号処理細則として利用することができる。たとえば、暗号化プロトコルＳＣＰ０２の場合、図８の項目(3) ，(4) に示すように、パラメータ「ｉ」のビットｂ２に、チェックコード演算時に送信コマンドを修正するか否かの規則が定められており、また、図８の項目(7) 〜(10) に示すように、パラメータ「ｉ」のビットｂ４，ｂ５に、ＩＣＶに関する規則が定められている。
【０１８２】
したがって、ゾーンテーブルとして、パラメータ「ｉ」の特定の値を各格納ゾーンに対応づけたテーブルを用いるようにすれば、上述したコマンドの送信手順に関する暗号処理細則を、暗号通信路開設コマンドによって設定することが可能になる。
【０１８３】
＜＜＜  §７．  暗号化プロトコルを指定する変形例  ＞＞＞
本発明の特徴は、鍵テーブルＴｋ上に複数の格納ゾーンを設定しておき、個々の格納ゾーンにそれぞれ所定の暗号処理細則を対応づけたゾーンテーブルＴｚを用意しておくことにより、暗号通信路開設コマンドＣＭＤにより鍵テーブルＴｋ上の特定の格納場所が指定されたときに、当該指定格納場所が所属する格納ゾーンに対応づけられた暗号処理細則を認識することができるようにし、暗号通信路の開設を行う都度、所望の暗号処理細則を指定できるようにした点にある。
【０１８４】
一方、特願２０１５−１６８８６８号には、同様の考え方に基づいて、暗号通信路の開設を行う都度、所望の暗号化プロトコルを指定できるようにした発明（以下、先願発明という）が開示されている。この先願発明の特徴は、鍵テーブルＴｋ上に複数の格納ゾーンを設定しておき、個々の格納ゾーンにそれぞれ所定の暗号化プロトコルを対応づけたゾーンテーブルＴｚを用意しておくことにより、暗号通信路開設コマンドＣＭＤにより鍵テーブルＴｋ上の特定の格納場所が指定されたときに、当該指定格納場所が所属する格納ゾーンに対応づけられた暗号化プロトコルを認識することができるようにし、暗号通信路の開設を行う都度、所望の暗号化プロトコルを指定できるようにした点にある。
【０１８５】
このように、本発明と先願発明は、いずれも鍵テーブルＴｋ上に複数の格納ゾーンを設定しておき、暗号通信路開設コマンドＣＭＤにより鍵テーブルＴｋ上の特定の格納場所が指定されたときに、当該指定格納場所が所属する格納ゾーンを認識することにより、各格納ゾーンに対応づけられていた「何らかの情報」を把握する、という技術思想を用いる点において共通する。ただ、先願発明の場合、「何らかの情報」として「暗号化プロトコルを指定する情報」を用いているのに対して、本発明の場合、「何らかの情報」として「暗号処理細則」を用いている点が相違する。
【０１８６】
このように、本発明と先願発明とは、共通した技術思想を用いているため、両者を組み合わせて実施することが可能である。ここで述べる変形例は、このような組み合わせに係る実施形態に相当するものである。
【０１８７】
結局、この変形例の特徴は、鍵テーブルＴｋ上に複数の格納ゾーンを設定しておき、個々の格納ゾーンにそれぞれ所定の暗号化プロトコルおよび暗号処理細則の双方を対応づけたゾーンテーブルＴｚを用意しておくことにより、暗号通信路開設コマンドＣＭＤにより鍵テーブルＴｋ上の特定の格納場所が指定されたときに、当該指定格納場所が所属する格納ゾーンに対応づけられた暗号化プロトコルおよび暗号処理細則の双方を認識することができるようにし、暗号通信路の開設を行う都度、所望の暗号化プロトコルおよび暗号処理細則の双方を指定できるようにした点にある。
【０１８８】
図１４は、このような本発明の変形例に係る情報処理システムの構成を示すブロック図である。この図１４に示す情報処理システムの基本構成は、図１２に示す基本的実施形態に係る情報処理システムの基本構成とほぼ同じである。そこで、図１４に示す情報処理システムの各構成要素については、図１２に示す情報処理システムの対応する各構成要素の符号末尾に「Ａ」を付した符号を用いて示してある。
【０１８９】
具体的には、図１４に示す情報処理システムは、第１の情報処理装置１００Ａと第２の情報処理装置２００Ａとを備え、両者間で所定の暗号化プロトコルに基づいた暗号通信が可能な情報処理システムである。ここでも、第１の情報処理装置１００Ａとして、ＳＩＭカード１１に管理プログラムＳＤＡを組み込んだ装置を用い、第２の情報処理装置２００Ａとして、当該ＳＩＭカード１１を装着する相手となるスマートフォン１０に所定のアプリケーションプログラム（アプリＡＰ６）を組み込んだ装置を用いた例について、以下の説明を行うことにする。
【０１９０】
図示のとおり、第１の情報処理装置１００Ａには、暗号通信路を開設する処理を行う第１の暗号通信処理部１１０Ａと、暗号鍵を格納する第１の暗号鍵格納部１２０Ａと、暗号処理細則を格納する暗号処理細則格納部１３０Ａと、が設けられており、第１の暗号通信処理部１１０Ａは、第１の暗号鍵格納部１２０Ａに格納されている暗号鍵を用いて、暗号処理細則格納部１３０Ａに格納されている暗号処理細則に従って、暗号通信路を開設する処理を行う。
【０１９１】
ここに示す変形例の場合も、第１の暗号通信処理部１１０Ａは、実際には、ＳＩＭカード１１にインストールされた管理プログラムＳＤＡの機能として実現されることになり、第１の暗号鍵格納部１２０Ａおよび暗号処理細則格納部１３０Ａは、この管理プログラムＳＤＡによって管理されるＳＩＭカード１１に内蔵されたメモリの一部分の領域として実現されることになる。
【０１９２】
一方、第２の情報処理装置２００Ａには、第１の暗号通信処理部１１０Ａが開設した暗号通信路を利用して暗号通信を行う第２の暗号通信処理部２１０Ａと、暗号鍵を格納する第２の暗号鍵格納部２２０Ａと、第１の暗号通信処理部１１０Ａに対して暗号通信路の開設を指示する暗号通信路開設指示部２３０Ａとが設けられている。
【０１９３】
ここに示す変形例の場合、第２の暗号通信処理部２１０Ａおよび暗号通信路開設指示部２３０Ａは、実際には、スマートフォン１０にインストールされたアプリケーションプログラム（アプリＡＰ６）の機能として実現されることになり、第２の暗号鍵格納部２２０Ａは、スマートフォン１０に内蔵されたメモリの一部分の領域として実現されることになる。
【０１９４】
このように、図１４に示す変形例の基本構成と図１２に示す基本的実施形態の基本構成とは、ほぼ同じである。ただ、個々の構成要素の細かな処理動作に若干の相違がある。以下、この相違点を説明する。
【０１９５】
第１の暗号通信処理部１１０Ａは、所定の暗号化プロトコルに基づき、当該暗号化プロトコルによる暗号通信処理の細かな手順を定めた所定の暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して第２の情報処理装置２００Ａとの間で暗号通信を行う。ただ、第１の暗号通信処理部１１０Ａには、複数Ｎ通り（Ｎ≧２）の暗号化プロトコルＰ１〜ＰＮが用意されており、このＮ通りの暗号化プロトコルＰ１〜ＰＮのうちの任意の暗号化プロトコルに基づいて暗号通信を行う機能を有している。そして、第２の情報処理装置２００Ａから暗号通信路開設コマンドＣＭＤが与えられたときには、このＮ通りの暗号化プロトコルＰ１〜ＰＮのうち、第２の情報処理装置２００Ａから指定された指定暗号化プロトコルに基づいて、暗号通信を行うための暗号通信路を開設する。
【０１９６】
一方、第１の暗号鍵格納部１２０Ａは、鍵テーブルＴｋＡを保持する構成要素である。この鍵テーブルＴｋＡには、複数の格納場所が用意されており、個々の格納場所には、それぞれ上記Ｎ通りの暗号化プロトコルＰ１〜ＰＮのそれぞれに用いられる暗号鍵が格納されている。そして、この鍵テーブルＴｋＡには、複数の格納ゾーンが設定される。図１４には、鍵テーブルＴｋＡ上に８つの格納ゾーンＺ１〜Ｚ８が設定されている状態が示されている。実際には、これら各格納ゾーンＺ１〜Ｚ８には、それぞれ１つもしくは複数の格納場所が含まれているが、ここでは、これら格納場所の図示は省略されている。もちろん、GlobalPlatform （登録商標）の仕様に基づく鍵テーブルは、図１３に示すような形態をとるので、各格納ゾーンＺ１〜Ｚ８は、それぞれ「キーバージョン番号」の範囲によって定められることになる。
【０１９７】
暗号処理細則格納部１３０Ａには、この鍵テーブルＴｋＡ上に設定された個々の格納ゾーンＺ１〜Ｚ８に関するゾーンテーブルＴｚＡが保持されている。これまで述べてきた実施例の場合、ゾーンテーブルは、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すテーブルであったが、この変形例におけるゾーンテーブルＴｚＡは、個々の格納ゾーンＺ１〜Ｚ８と個々の暗号処理細則との対応関係に加えて、更に、個々の格納ゾーンＺ１〜Ｚ８と個々の暗号化プロトコルとの対応関係を示している。すなわち、ゾーンテーブルＴｚＡにおける特定の格納ゾーンの欄には、所定の暗号処理細則を特定する情報だけでなく、所定の暗号化プロトコルを特定する情報が含まれている。したがって、１つの格納ゾーンが決まると、１つの暗号処理細則が定まり、更に、１つの暗号化プロトコルが定まる。
【０１９８】
続いて、第２の情報処理装置２００Ａの構成要素について説明する。まず、第２の暗号通信処理部２１０Ａは、前述した複数Ｎ通りの暗号化プロトコルＰ１〜ＰＮのうちの少なくとも１つの特定の暗号化プロトコルに基づく暗号通信を行う機能を有し、当該特定の暗号化プロトコルに基づく暗号通信を行うために開設された暗号通信路を介して第１の情報処理装置１００Ａとの間で暗号通信を行う構成要素である。図示の例は、第２の暗号通信処理部２１０Ａが、第１の暗号化プロトコルＰ１に基づく暗号通信を行う機能を有している例であり、２組の情報処理装置１００Ａ，２００Ａは、第１の暗号化プロトコルＰ１に基づいて暗号通信を行うことになる。図には、両者間に第１の暗号化プロトコルＰ１に基づく暗号通信路が開設された状態が示されている。
【０１９９】
第２の暗号鍵格納部２２０Ａは、第２の暗号通信処理部２１０Ａが利用する特定の暗号化プロトコル（図示の例の場合、第１の暗号化プロトコルＰ１）に用いられる暗号鍵を格納する構成要素である。第１の暗号通信処理部１１０Ａと第２の暗号通信処理部２１０Ａとの間で暗号通信を行うためには、両者が同じ暗号化プロトコルを用い、同じ暗号鍵を利用した暗号処理が必要になる。したがって、図示の例の場合、第２の暗号鍵格納部２２０Ａには、第１の暗号鍵格納部１２０Ａ内の鍵テーブルＴｋＡに格納されている第１の暗号化プロトコルＰ１に用いる暗号鍵と同一の特定の暗号鍵ＫｅｙｓＸが格納されている。そして、両者間の暗号通信は、この暗号鍵ＫｅｙｓＸを用いた第１の暗号化プロトコルＰ１に基づいて実行される。
【０２００】
暗号通信路開設指示部２３０Ａは、これまで述べてきた基本的実施形態と同様に、第１の情報処理装置１００Ａに対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドＣＭＤを与える構成要素である。この暗号通信路開設コマンドＣＭＤには、第２の暗号鍵格納部２２０Ａに格納されている特定の暗号鍵ＫｅｙｓＸに対応する暗号鍵についての鍵テーブルＴｋＡ内の格納場所を示す格納場所指定情報が含まれている。
【０２０１】
この暗号通信路開設コマンドＣＭＤを受信した第１の暗号通信処理部１１０は、次のような方法で暗号通信路の開設処理を行う。まず、暗号通信路開設コマンドＣＭＤに含まれている格納場所指定情報によって指定された指定格納場所を認識し、鍵テーブルＴｋＡの当該指定格納場所に格納されている暗号鍵ＫｅｙｓＸを指定暗号鍵として読み出す。また、この指定格納場所が所属する格納ゾーンを認識し、ゾーンテーブルＴｚＡを参照して指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則を指定暗号処理細則として認識するとともに、当該格納ゾーンに対応づけられている暗号化プロトコルを指定暗号化プロトコルとして認識する。そして、認識した指定暗号化プロトコルに基づき、読み出した指定暗号鍵ＫｅｙｓＸを用いて、認識した指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設する。
【０２０２】
たとえば、指定暗号鍵ＫｅｙｓＸの格納場所が、第ｉ番目の格納ゾーンＺｉに所属していた場合は、ゾーンテーブルＴｚＡの格納ゾーンＺｉに対応づけられている情報が参照される。たとえば、格納ゾーンＺｉについて、暗号処理細則Ｃｊおよび暗号化プロトコルＰｋが対応づけられていた場合、第１の暗号通信処理部１１０は、指定暗号化プロトコルＰｋに基づき、指定暗号鍵ＫｅｙｓＸを用いて、指定暗号処理細則Ｃｊに従った手順を実行することにより、暗号通信を行うための暗号通信路を開設することになる。
【０２０３】
このような構成をもつ情報処理システムによれば、２組の情報処理装置１００Ａ，２００Ａの間に暗号通信路を開設する際に、その都度、暗号通信路開設コマンドＣＭＤに含ませた暗号鍵の格納場所を示す格納場所指定情報によって、第２の情報処理装置２００から第１の情報処理装置１００に対して、特定の暗号化プロトコルおよび特定の暗号処理細則を指定する情報を伝達することができる。このため、暗号通信路を開設するたびに、暗号化プロトコルおよび暗号処理細則の設定が可能になる。
【０２０４】
図１４に示す例の場合、スマートフォン１０内のアプリＡＰ６は、特定の暗号化プロトコルＰ１および特定の暗号鍵ＫｅｙｓＸを用いて、ＳＩＭカード１１内の管理プログラムＳＤＡに対して暗号通信路の開設を指示することになるが、スマートフォン１０内に別なアプリＡＰ７が組み込まれており、この別なアプリＡＰ７が別な暗号化プロトコルを用いてＳＩＭカード１１内の管理プログラムＳＤＡに対して暗号通信路の開設を指示する場合は、暗号通信路開設コマンドＣＭＤに、当該別な暗号化プロトコルに対応した格納ゾーン内の格納場所指定情報を含ませておくようにすればよい。
【０２０５】
図１５は、図１４に示す情報処理システムに用いる鍵テーブルＴｋＡおよびゾーンテーブルＴｚＡの具体例を示す表である。図１５(a) に示す鍵テーブルＴｋＡの基本的な構成は、図１３に示す鍵テーブルＴｋと同じである。ただ、ここでは、８つの格納ゾーンＺ１〜Ｚ８が設定されていることを示すため、テーブルの表示形式を変えて示す。図１３に示す鍵テーブルＴｋと同様に、図１５(a) に示す鍵テーブルＴｋＡにも、キーバージョン番号として、「０ｘ０１〜０ｘ７Ｆ」の範囲のアドレス空間が割り当てられているが、格納ゾーンの設定は、「０ｘ０１〜０ｘ３Ｆ」の範囲についてのみ行われており、暗号鍵Ｋｅｙも、この範囲内のアドレス空間にのみ格納されている。
【０２０６】
図示の例の場合、各格納ゾーンＺ１〜Ｚ８は、それぞれ７個もしくは８個の格納場所（図１３に示す鍵テーブルＴｋにおける７行分もしくは８行分の格納場所）によって構成されている。図１３に示す鍵テーブルＴｋと同様に、１つの格納場所には、「０ｘ００〜０ｘ７Ｆ」の範囲のキーＩＤによって特定されるセル（格納庫）が配置されており、各セルには、それぞれ個々の暗号鍵Ｋｅｙが格納されている（図示省略）。
【０２０７】
一方、図１５(b) には、図１５(a) に示す鍵テーブルＴｋＡのゾーン構成に対応したゾーンテーブルＴｚＡの具体例が示されている。すなわち、８つの格納ゾーンＺ１〜Ｚ８のそれぞれについて、キーバージョン番号の数値範囲が示され、各格納ゾーンＺ１〜Ｚ８のそれぞれについて、所定の暗号化プロトコルとパラメータ「ｉ」の値が対応づけられている。なお、説明の便宜上、パラメータ「ｉ」については、「ｉ」の各ビットの表示と、１０進表現による「ｉ」の値の表示とを行っているが、実際のゾーンテーブルＴｚＡでは、数値範囲を示すデータと、暗号化プロトコルを示すデータと、「ｉ」の各ビットと、が対応づけられていれば足りる。
【０２０８】
ここで、パラメータ「ｉ」は、これまで述べてきた基本的実施形態と同様に、暗号処理細則指定パラメータであり、各暗号化プロトコルに応じて、特定の暗号処理細則を定める役割を果たす。図示の例は、２通りの暗号化プロトコルに対応した例であり（図１４においてＮ＝２に設定し、第１の暗号通信処理部１１０Ａが、２通りの暗号化プロトコルＰ１およびＰ２に対応している例）、暗号通信路開設コマンドＣＭＤによって、格納ゾーンＺ１〜Ｚ４に所属する格納場所が指定された場合は、第１の暗号化プロトコルＰ１（具体的には、プロトコルＳＣＰ０３）を用いた暗号通信路が開設され、格納ゾーンＺ５〜Ｚ８に所属する格納場所が指定された場合は、第２の暗号化プロトコルＰ２（具体的には、プロトコルＳＣＰ０２）を用いた暗号通信路が開設されることになる。
【０２０９】
このように、暗号通信路開設コマンドＣＭＤは、２通りの暗号化プロトコルのいずれか一方を指定する役割を果たすとともに、いずれの暗号化プロトコルを指定した場合も、４通りの暗号処理細則のいずれか１つを指定する役割も果たす。たとえば、格納ゾーンＺ１に所属する格納場所が指定された場合は、暗号化プロトコルＳＣＰ０３が指定されるとともに、「ｉ」の値「３２」に対応した暗号処理細則が指定されることになる。これは、図１１の表の第１行目に示す暗号処理細則であり、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という内容の規則を示している。
【０２１０】
もちろん、パラメータ「ｉ」の値によって示される個々の暗号処理細則は、個々の暗号化プロトコルごとに定義されているので、パラメータ「ｉ」の値のもつ意味は、暗号化プロトコルＳＣＰ０３と暗号化プロトコルＳＣＰ０２とでは異なったものになる。個々の暗号化プロトコルを実行するプログラムには、このパラメータ「ｉ」の値によって示される暗号処理細則の内容を解釈するルーチンが備わっており、指定された暗号処理細則に従った暗号通信処理が実行される。
【０２１１】
最後に、図１４に示す情報処理システムの更なる変形例を、図１６のブロック図を参照しながら説明する。図１６に示す情報処理システムの基本構成は、図１４に示す情報処理システムの基本構成とほぼ同じである。すなわち、図１６に示す情報処理システムは、第１の情報処理装置１００Ａと第２の情報処理装置２００Ｂとを備え、両者間で所定の暗号化プロトコルに基づいた暗号通信が可能な情報処理システムである。ここで、第１の情報処理装置１００Ａは、図１４に示す第１の情報処理装置１００Ａと全く同じものであるが、第２の情報処理装置２００Ｂは、図１４に示す第２の情報処理装置２００Ａに若干変更を加えたものである。
【０２１２】
すなわち、図１６に示す第２の情報処理装置２００Ｂは、スマートフォン１０に所定のアプリケーションプログラム（アプリＡＰ８）を組み込むことにより構成され、第１の情報処理装置１００Ａとの間で暗号通信を行う第２の暗号通信処理部２１０Ｂと、第２の暗号通信処理部２１０Ｂが利用する暗号化プロトコルに用いられる暗号鍵を格納した第２の暗号鍵格納部２２０Ｂと、第１の情報処理装置１００Ａに対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドＣＭＤを与える暗号通信路開設指示部２３０Ａと、が設けられている。
【０２１３】
ここで、暗号通信路開設指示部２３０Ａは、図１４に示す暗号通信路開設指示部２３０Ａと全く同じ構成要素である。したがって、この図１６に示す情報処理システムは、図１４に示す情報処理システムにおける第２の暗号通信処理部２１０Ａを第２の暗号通信処理部２１０Ｂに置き換え、第２の暗号鍵格納部２２０Ａを第２の暗号鍵格納部２２０Ｂに置き換えたものである。
【０２１４】
図１４に示す情報処理システムにおける第２の情報処理装置２１０Ａは、特定の暗号化プロトコルとして組み込まれた第１の暗号化プロトコルＰ１のみに基づいて暗号通信を行う構成要素であるが、図１６に示す情報処理システムにおける第２の情報処理装置２１０Ｂは、複数の暗号化プロトコル（図示の例の場合は、第１の暗号化プロトコルＰ１と第２の暗号化プロトコルＰ２）に対応し、いずれか１つの暗号化プロトコルを選択して暗号通信を行うことができる。
【０２１５】
また、図１４に示す情報処理システムにおける第２の暗号鍵格納部２２０Ａは、特定の暗号鍵として、暗号鍵ＫｅｙｓＸのみを格納する構成要素であるが、図１６に示す情報処理システムにおける第２の暗号鍵格納部２２０Ｂは、複数の暗号鍵（図示の例の場合は、３組の暗号鍵ＫｅｙｓＸ，ＫｅｙｓＹ，ＫｅｙｓＺ）を格納しており、いずれか１つの暗号鍵を選択して暗号通信に用いることができる。
【０２１６】
要するに、図１４に示す情報処理システムにおける第２の情報処理装置２００Ａでは、暗号通信に用いる暗号化プロトコルおよび暗号鍵が１つのみに限定されていたが、図１６に示す情報処理システムにおける第２の情報処理装置２００Ｂでは、暗号通信に用いる暗号化プロトコルおよび暗号鍵が複数用意されており、それぞれ任意のものを選択的に利用することができる。
【０２１７】
もっとも、第１の情報処理装置１００Ａとの間で暗号通信を行うためには、第１の情報処理装置１００Ａ側で用いる暗号化プロトコルおよび暗号鍵と、第２の情報処理装置２００Ｂ側で用いる暗号化プロトコルおよび暗号鍵とが対応している必要があるので、暗号通信路開設指示部２３０Ａによって暗号通信路開設コマンドＣＭＤを送信する際には、両者で用いる暗号化プロトコルおよび暗号鍵が一致するように、格納場所指定情報を適切に指定する必要がある。
【０２１８】
具体的には、たとえば、第２の情報処理装置２００Ｂ側で、第２の暗号化プロトコルＰ２および暗号鍵ＫｅｙｓＹを用いた暗号通信を意図している場合には、ゾーンテーブルＴｚＡ上において第２の暗号化プロトコルＰ２が対応づけられた特定のゾーンに所属する暗号鍵ＫｅｙｓＹの格納場所を、格納場所指定情報として指定した暗号通信路開設コマンドＣＭＤを送信すればよい。
【０２１９】
このように、本発明において、第２の情報処理装置の構成要素である第２の暗号通信処理部は、特定の暗号化プロトコルのみに対応した構成要素であってもよいし、複数の暗号化プロトコルに対応しこれを選択的に利用できる構成要素であってもよい。同様に、本発明において、第２の情報処理装置の構成要素である第２の暗号鍵格納部は、特定の暗号鍵のみを格納した構成要素であってもよいし、複数の暗号鍵を格納しこれを選択的に利用できる構成要素であってもよい。これは、§６までに述べた基本的実施形態についても同様である。
【０２２０】
＜＜＜  §８．  方法発明としての実施形態  ＞＞＞
最後に、本発明を暗号通信方法という方法発明として把握した場合の実施形態を述べておく。図１７は、本発明に係る暗号通信方法の基本手順を示す流れ図である。この暗号通信方法は、第１の情報処理装置と第２の情報処理装置との間で、所定の暗号化プロトコルに基づいた暗号通信を行う暗号通信方法であり、図示のとおり、プログラム準備段階Ｓ１１，鍵テーブル準備段階Ｓ１２，ゾーンテーブル準備段階Ｓ１３，暗号通信路開設指示段階Ｓ１４，暗号通信路開設段階Ｓ１５，暗号通信段階Ｓ１６という各段階によって構成される。なお、この図１７の流れ図における各ステップを示すブロックの右側の記載は、当該ステップが、図１２に示す第１の情報処理装置１００によって実行される手順であるのか、第２の情報処理装置２００によって実行される手順であるのかを示している。
【０２２１】
ステップＳ１１のプログラム準備段階は、第１の情報処理装置１００が、所定の暗号化プロトコルに基づく暗号通信を行うプログラムを実行可能な状態に準備する段階である。具体的には、第１の情報処理装置１００が、ＳＩＭ１１のようなＩＣカードからなる場合、暗号通信機能は管理プログラムＳＤによって実現される。したがって、このステップＳ１１のプログラム準備段階は、管理プログラムＳＤをインストールする処理によって行われる。図１４に示す変形例を適用する場合は、複数Ｎ通り（Ｎ≧２）の暗号化プロトコルに基づく暗号通信を行うプログラムが実行可能な状態になる。
【０２２２】
ステップＳ１２の鍵テーブル準備段階は、第１の情報処理装置１００が、複数の格納場所にそれぞれ上記暗号化プロトコルに用いられる暗号鍵を格納した鍵テーブルＴｋを準備する段階である。具体的には、第１の暗号鍵格納部１２０に、図１３(a) に示すような鍵テーブルＴｋが格納されることになる。この鍵テーブル準備段階は、第１の情報処理装置１００に対して、外部装置からデータ書込コマンドを与えることにより実行することができる。
【０２２３】
ステップＳ１３のゾーンテーブル準備段階は、第１の情報処理装置１００が、上記鍵テーブルＴｋ上に、１つもしくは複数の格納場所を含む格納ゾーンを複数組設定し、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すゾーンテーブルを準備する段階である。具体的には、暗号処理細則格納部１３０に、図１３(b) に示すようなゾーンテーブルＴｚが格納されることになる。このゾーンテーブル準備段階も、第１の情報処理装置１００に対して、外部装置からデータ書込コマンドを与えることにより実行することができる。図１４に示す変形例を適用する場合は、図１５(b) に示すように、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すだけでなく、個々の格納ゾーンと個々の暗号化プロトコルとの対応関係を示すゾーンテーブルＴｚＡが準備されることになる。
【０２２４】
ステップＳ１４の暗号通信路開設指示段階は、第２の情報処理装置２００が、第１の情報処理装置１００に対して、ステップＳ１１のプログラム準備段階で準備された暗号化プロトコルに基づいて、ステップＳ１２の暗号鍵格納段階で特定の格納場所に格納された特定の暗号鍵を用いた暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドＣＭＤを送信する段階である。この暗号通信路開設コマンドＣＭＤには、鍵テーブルＴｋ内の特定の格納場所を示す格納場所指定情報が含まれている。
【０２２５】
ステップＳ１５の暗号通信路開設段階は、第１の情報処理装置１００が、受信した暗号通信路開設コマンドＣＭＤに基づいて、所定の暗号化プロトコルに基づく暗号通信を行うための暗号通信路を開設する段階である。すなわち、第１の情報処理装置１００は、受信した暗号通信路開設コマンドＣＭＤに含まれている格納場所指定情報によって指定された指定格納場所に格納されている暗号鍵を指定暗号鍵として読み出す。そして、ステップＳ１３で準備したゾーンテーブルＴｚを参照して、この指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則を指定暗号処理細則として認識し、読み出した指定暗号鍵を用いて、上記指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設する。図１４に示す変形例を適用する場合は、更に、ゾーンテーブルＴｚを参照して、指定格納場所が所属する格納ゾーンに対応づけられている暗号化プロトコルを指定暗号化プロトコルとして認識し、この指定暗号化プロトコルを用いて暗号通信を行うための暗号通信路を開設することになる。
【０２２６】
ステップＳ１６の暗号通信段階は、第１の情報処理装置１００および第２の情報処理装置２００が、ステップＳ１５で開設された暗号通信路を介して暗号通信を行う段階である。実際には、送信時には、送信データを暗号化して送信し、受信時には、受信データを復号して取り込む処理が行われる。
【符号の説明】
【０２２７】
１０：スマートフォン
１１：ＳＩＭカード
２０：外部サーバ
１００，１００Ａ：第１の情報処理装置
１１０，１１０Ａ：第１の暗号通信処理部
１２０，１２０Ａ：第１の暗号鍵格納部
１３０，１３０Ａ：暗号処理細則格納部
２００，２００Ａ，２００Ｂ：第２の情報処理装置
２１０，２１０Ａ，２１０Ｂ：第２の暗号通信処理部
２２０，２２０Ａ，２２０Ｂ：第２の暗号鍵格納部
２３０，２３０Ａ：暗号通信路開設指示部
Ａ：種別情報
ＡＰ１〜ＡＰ５：一般アプリケーションプログラム
ｂ１〜ｂ８：パラメータ「ｉ」の各ビット
Ｃ１，Ｃ２：暗号処理細則
ＣＭＤ：暗号通信路開設コマンド
Ｋｅｙ，ＫｅｙＡ〜ＫｅｙＵ：暗号鍵
Ｋｅｙｓ１１〜Ｋｅｙｓ１４，ＫｅｙｓＸ〜ＫｅｙｓＺ：暗号鍵（群）
Ｌ：鍵長
Ｌ１１〜Ｌ１４：格納場所
Ｐ，Ｐ１，Ｐｉ，ＰＮ：暗号化プロトコル
Ｒ１，Ｒ２：暗号通信路開設ルーチン
Ｒａ，Ｒａ′，Ｒｂ，Ｒｂ′：認証用の乱数
Ｓ１〜Ｓ６：ダイアグラムの各ステップ
Ｓ１１〜Ｓ１６：流れ図の各ステップ
ＳＤ，ＳＤＡ：管理プログラム
Ｔ，Ｔ１，Ｔ２：鍵テーブル
Ｔｋ，ＴｋＡ：鍵テーブル
Ｔｚ，ＴｚＡ：ゾーンテーブル
Ｖ：鍵値データ
Ｚ１〜Ｚ８：格納ゾーン
【図１】
0006720558.tif 000002
【図２】
0006720558.tif 000003
【図３】
0006720558.tif 000004
【図４】
0006720558.tif 000005
【図５】
0006720558.tif 000006
【図６】
0006720558.tif 000007
【図７】
0006720558.tif 000008
【図８】
0006720558.tif 000009
【図９】
0006720558.tif 000010
【図１０】
0006720558.tif 000011
【図１１】
0006720558.tif 000012
【図１２】
0006720558.tif 000013
【図１３】
0006720558.tif 000014
【図１４】
0006720558.tif 000015
【図１５】
0006720558.tif 000016
【図１６】
0006720558.tif 000017
【図１７】
0006720558.tif 000018