以下、本発明を図示する実施形態に基づいて説明する。
<<< §1. ICカードに対する従来の一般的な通信形態 >>>
本発明は、外部装置との間で暗号通信を行う機能を有する情報処理装置に係るものであり、特に、ICカードからなる情報処理装置への利用に適した技術に関する。そこで、ここでは、まず、ICカードに対する従来の一般的な通信形態を簡単に説明しておく。
図1は、一般的なスマートフォン10,SIMカード11,外部サーバ20の間の情報通信の態様を示すブロック図である。通常、スマートフォン10は、内部にSIMカード11を装着した状態で利用され、必要に応じて、外部サーバ20と所定の通信路(インターネットや電話回線)を介して交信することになる。ここで、SIMカード11(UIMカードとも呼ばれる)は、Java Card(商標)やGlobalPlatform (登録商標)など、事実上の標準となっている国際的な仕様に準拠したICカードであり、外部装置との交信は、当該外部装置から与えられるコマンドと、これに対する応答(レスポンス)という形式で行われる。
SIMカード11に着目すると、スマートフォン10も外部サーバ20も、いずれも外部装置ということになり、これら外部装置との間の交信は、所定の通信路を介して行われる。図1には、スマートフォン10と外部サーバ20との間の通信路しか示されていないが、実際には、SIMカード11とスマートフォン10との間やSIMカード11と外部サーバ20との間にも通信路が形成される。そして、SIMカード11に対して、これらの通信路を介してコマンドおよびレスポンスのやりとりが行われることになる。
図2は、図1に示すSIMカード11と、スマートフォン10もしくは外部サーバ20と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図である。本発明は、ICカードに限らず、外部装置との間で暗号通信を行う機能を有する一般的な情報処理装置に広く適用できる技術である。したがって、図2には、情報処理装置100と外部装置200との間に通信路を開設して相互に交信を行う例が示されている。
ただ、上述したとおり、本発明は、ICカードに適用するのに特に適した技術であるので、ここでは、情報処理装置100がスマートフォン10に装着されたSIMカード11であり、外部装置200が当該スマートフォン10(もしくは、外部サーバ20でもよい)である場合について、以下の説明を行うことにする。
SIMカード11をはじめとするICカードには、通常、複数のアプリケーションプログラムが組み込まれる。図2の情報処理装置100(SIMカード11)には、2組の一般アプリケーションプログラムAP1,AP2が組み込まれた状態が示されている。また、ICカードには、通常、少なくとも1組の管理プログラムSD(Security Domain プログラム)が組み込まれている。この管理プログラムSDは、分類上はアプリケーションプログラムの一種であるが、OSプログラムと協働して、ICカード全体の動作や、管理下にある他のアプリケーションプログラムを管理する役割を果たす。そこで、本願では、情報処理装置100(SIMカード11)に組み込まれるアプリケーションプログラムのうち、Security Domain プログラムを「管理プログラム」と呼び、それ以外のアプリケーションプログラムを「一般アプリケーションプログラム(略称:一般アプリ)」と呼ぶことにする。
管理プログラムSDには、管理下となるアプリケーションプログラムについてのロード機能、インストール機能、削除機能などの様々な機能が備わっているが、本発明に直接関連する機能は、暗号通信路開設機能および暗号通信に必要な暗号鍵を書き込むためのデータ書込機能である。図2に示す管理プログラムSDには、暗号通信路開設機能に必要な暗号通信路開設ルーチンR1および鍵テーブルT1が組み込まれている。鍵テーブルT1には、データ書込機能を利用して、所望の暗号鍵を書き込むことができる。ICカードからなる情報処理装置100の場合、通常、「SCP:Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置200との間にセキュアな暗号通信路を開設して暗号通信が行われる。このような機能を実現するため、管理プログラムSD内には、暗号通信路開設ルーチンR1と鍵テーブルT1とが組み込まれている。
一方、外部装置200側にも、これに応じた暗号通信を行う機能をもったアプリケーションプログラムAP3が用意されており、暗号通信路開設ルーチンR2と鍵テーブルT2とが組み込まれている。たとえば、外部装置200がスマートフォン10の場合、アプリケーションプログラムAP3は、このスマートフォン10にインストールされたアプリケーションプログラムの1つである。
情報処理装置100側の暗号通信路開設ルーチンR1と、外部装置200側の暗号通信路開設ルーチンR2は、両装置間にセキュアな暗号通信路を開設し、同一の暗号鍵および同一の暗号化プロトコルを用いた暗号通信を行うためのルーチンであり、鍵テーブルT1と鍵テーブルT2には、同一の暗号鍵が収容されている。したがって、図示の例の場合、管理プログラムSDとアプリケーションプログラムAP3とによって、情報処理装置100と外部装置200との間に、同一の暗号鍵を用いた同一の暗号化プロトコルに基づく暗号通信を行うための暗号通信路が開設されることになる。
ICカードに対する暗号通信に利用される暗号化プロトコルとしては、SCP01,SCP02などのプロトコルが古くから利用されてきている。ただ、これらのプロトコルで用いられている「Triple-DES」という暗号アルゴリズムには危殆化の問題が指摘されており、近年は、AES(Advanced Encryption Standard)なる規格に基づく暗号アルゴリズムを利用したSCP03なるプロトコルも、GlobalPlatform (登録商標)に準拠した仕様として普及し始めている。また、3GPP/ETSIなどの標準化団体を中心に策定されたSCP80,SCP81などのプロトコルの利用も普及してきている。
また、ICカードに組み込まれる管理プログラムSD用の鍵テーブルTとしては、図3に例示するような鍵空間を用いる仕様が一般化している。図示の鍵テーブルTは、縦方向にキーバージョン番号(key version number)、横方向にキーID(key ID)を定義したマトリックスによって構成されており、キーバージョン番号については、0x01〜0x7Fの範囲内のアドレス空間が割り当てられ、キーIDについては、0x00〜0x7Fの範囲内のアドレス空間が割り当てられている(アドレス先頭の0xは、以下の数値が16進数であることを示す)。
個々の暗号鍵は、この鍵テーブルTのいずれかのセルに格納されることになり、キーバージョン番号とキーIDとの組み合わせにより特定される。たとえば、キーバージョン番号「0x01」とキーID「0x01」との組み合わせにより、暗号鍵KeyAが特定されることになる。図には、個々の暗号鍵の格納例として、KeyA〜KeyRが特定のセルに格納された状態が示されている。もちろん、暗号鍵はすべてのセルに格納する必要はなく、必要な暗号鍵が所定のセルに格納されていれば足りる。また、必要に応じて、新たな暗号鍵を空いているセルに書き込むこともできる。
ある1つの暗号化プロトコルでは、ある1つのキーバージョン番号が指定され、当該キーバージョン番号をもったセルに格納されている1つもしくは複数組の暗号鍵を利用した暗号化処理もしくは復号処理が実行される。図示の例の場合、キーバージョン番号「0x01」,「0x20」,「0x21」,「0x22」,「0x7E」,「0x7F」の各行に何らかの暗号鍵が格納されている状態が示されている。また、図示の例の場合、いずれのキーバージョン番号についても、キーID「0x01」,「0x02」,「0x03」の3箇所のセルにそれぞれ暗号鍵が格納されている。
これは、いずれのキーバージョン番号も、3つの異なる暗号鍵を用いる暗号化プロトコル(たとえば、上述したSCP01,SCP02,SCP03など)に対応したものになっているためである。たとえば、キーバージョン番号「0x20」が指定された場合、キーID「0x01」,「0x02」,「0x03」の各セルに格納されている3つの暗号鍵KeyD,KeyE,KeyFが暗号化処理もしくは復号処理に利用されることになる。別言すれば、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理には、同一のキーバージョン番号をもつ1つもしくは複数組の暗号鍵が利用されることになる。もちろん、合計5個の暗号鍵を必要とする暗号化プロトコルのためには、同一のキーバージョン番号をもつ5個のセルにそれぞれ暗号鍵を用意することになる。要するに、図3に示す鍵テーブルTでは、常に、同一行のセルに収容されている複数組の暗号鍵が、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理に利用されることになる。
一方、図4(a) は、図3に示す鍵テーブルTの個々のセルに格納されている暗号鍵KeyA〜KeyRの一般的なデータ構造を示す図である。図示された暗号鍵Keyのデータ構造は、上述したICカードについての国際的な標準仕様として定められた暗号鍵Keyの標準フォーマットを示すものであり、先頭から順に、種別情報(key type)A,鍵長(key length)L,鍵値データ(key value)Vを並べたものになっている。ここで、種別情報(key type)Aは、「AES」,「Triple-DES」,「RSA」など、当該暗号鍵Keyを用いることを想定している暗号化プロトコルが採用する暗号アルゴリズムの種別を含む情報であり、鍵長(key length)Lは、後続する鍵値データ(key value)Vのデータ長(byte)を示す情報であり、最後の鍵値データ(key value)Vは、暗号化および復号の演算に用いられる鍵値データそのものである。
前述したとおり、図3に示す鍵テーブルTでは、同一行のセルに収容されている複数組の暗号鍵は、ある1つの暗号化プロトコルに基づく暗号化処理もしくは復号処理に利用される。したがって、同一行のセルに収容されている複数組の暗号鍵に含まれている種別情報Aは、必ず同一の情報になる。たとえば、図3に示す鍵テーブルTの第1行目に収容されている3組の暗号鍵「KeyA,KeyB,KeyC」は、互いに同一の種別情報Aを有し、これら3組の暗号鍵は、当該種別情報Aで示される特定の暗号アルゴリズムを採用した暗号化プロトコルにおいて利用される暗号鍵ということになる。暗号鍵「KeyD,KeyE,KeyF」や「KeyG,KeyH,KeyI」等についても同様である。
図4(b) は、暗号通信路開設コマンドCMDのデータ構造の概要を示す図である。実際のコマンドは、ISOなどの規格(たとえば、ISO7816-4)に準拠した、より複雑なデータ構造を有するものになるが、便宜上、図4(b) には、説明に必要な情報のみを抽出した概念的なデータ構造を示すことにする。図示の例は、上述した暗号化プロトコルSCP01,SCP02,SCP03を採用する場合に用いられている暗号通信路の開設コマンドを示しており、暗号通信路の開設を指示する文字列「INITIALIZE UPDATE」なるコマンド文字列情報(実際には、コマンド「INITIALIZE UPDATE」を意味するインストラクションバイト情報であるが、以下、便宜上、「INITIALIZE UPDATE」なる文字列として説明する)と、特定の暗号鍵の格納場所を示す格納場所指定情報(実際には、特定のキーバージョン番号)と、所定の乱数とによって構成されている。
たとえば、図3に示す鍵テーブルTに格納されている3組の暗号鍵「KeyD,KeyE,KeyF」を用いて暗号通信路を開設する場合には、文字列「INITIALIZE UPDATE」に「0x20」なるキーバージョン番号を後続させ、更にその後ろに所定の乱数を後続させた暗号通信路開設コマンドCMDをICカードに与えればよい。暗号通信路開設コマンドCMDの最後に付加される乱数は、外部装置がICカードを正規の交信相手であることを認証するために利用される。別言すれば、暗号通信路開設コマンドCMDは、ICカードに対して、暗号通信路の開設処理を実行する指示コマンドとしての役割とともに、所定の乱数に応じた認証コードを返信するよう求める認証コマンドとしての役割も果たす。
図5は、図2に示すSIMカード11(情報処理装置100)に組み込まれた管理プログラムSDと、スマートフォン10(外部装置200)に組み込まれたアプリケーションプログラムAP3と、の間でやりとりされる種々のコマンドおよびこれに対するレスポンスの具体例を示すダイアグラムである。ステップS1〜S6に示すとおり、いずれもスマートフォン10側からSIMカード11側に所定のコマンドを送信し、当該コマンドに対するレスポンスをSIMカード11側からスマートフォン10側へと返信する、という形態で、両者間の情報のやりとりが行われる。この例の場合、ステップS1〜S4までの情報のやりとりは、暗号化されていない通常の通信路を介して行われるが、ステップS5,S6の情報のやりとりは、管理プログラムSDによって開設された暗号通信路を介して行われる。
まず、ステップS1は、スマートフォン10側からSIMカード11側に「SELECTコマンド」を送信するプロセスである。この「SELECTコマンド」は、「アプリケーション選択コマンド」と呼ぶべきコマンドであり、特定のチャネル番号を指定して、SIMカード11側の特定のアプリケーションプログラム(この場合は、管理プログラムSD)を選択するコマンドである。SIMカード11側では、当該チャネル番号と当該管理プログラムSDとが対応づけられ、以後、同じチャネル番号をもつコマンドが与えられると、当該管理プログラムSDによって処理されることになる。「SELECTコマンド」が正常に受理されると、SIMカード11側からスマートフォン10側にレスポンスが返される。
続く、ステップS2は、「GET DATAコマンド」を送信するプロセスである。なお、ステップS2以降のコマンドには、ステップS1と同じチャネル番号が付与されており、SIMカード11側では、管理プログラムSDによって処理される。この「GET DATAコマンド」は、管理プログラムSDの「データの読出機能」に基づいて、所定のデータをSIMカード11側からスマートフォン10側に読み出すためのコマンドであり、読出対象となるデータを特定する情報が付加されている。管理プログラムSDは、当該コマンドに応じて、SIMカード11内のメモリから指定されたデータを読出し、これを当該コマンドに対するレスポンスとしてスマートフォン10側へと返信する。
GlobalPlatform (登録商標)の仕様では、SDプログラムが「データの読出機能」を実行する場合は、暗号通信路を介した情報のやりとりが必須にはなっていない。図5のステップS2のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく情報の読み出しが可能なデータの読出処理が行われた例を示すものである。このデータの読出処理は、本発明に直接関連する処理ではないが、ここでは、暗号通信路を介さずに行われる通信処理の一例として挙げておく。
続く、ステップS3,S4は、暗号通信路の開設準備を行うプロセスである。まず、ステップS3では、「INITIALIZE UPDATEコマンド」の送信が行われる。このコマンドは、図4(b) に示すデータ構造をもつ「暗号通信路開設コマンド」であり、前述したとおり、「INITIALIZE UPDATE」なるコマンド文字列情報に、キーバージョン番号および乱数を付加した形態をもつ。このコマンドは、スマートフォン10(外部装置200)が、SIMカード11(情報処理装置100)を正規の交信相手として認証するための認証コマンドとしての役割も果たす。
すなわち、「INITIALIZE UPDATEコマンド」を受信したSIMカード11内の管理プログラムSDは、鍵テーブルT1から、指定されたキーバージョン番号に対応する暗号鍵を取り出し、暗号化処理の準備を行うとともに、与えられた乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対するレスポンスとして返信する。一方、スマートフォン10内のアプリケーションプログラムAP3は、返信されてきた演算結果が、与えた乱数に対する正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のSIMカード11を正規の交信相手と認証する。
続くステップS4では、「EXTERNAL AUTHENTICATEコマンド」の送信が行われる。このコマンドは、「外部認証コマンド」であり、SIMカード11(情報処理装置100)がスマートフォン10(外部装置200)を正規の交信相手として認証するための認証コマンドである。スマートフォン10は、ステップS3のレスポンスにより返信されてきたデータに対して所定のアルゴリズムに基づく演算を施し、演算結果を「EXTERNAL AUTHENTICATE」なるコマンド文字列情報に付加してSIMカード11に送信する。SIMカード11(管理プログラムSD)は、「EXTERNAL AUTHENTICATEコマンド」によって送信されてきた演算結果が、正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のスマートフォン10を正規の交信相手と認証する。
このステップS3,S4による相互認証の具体的なプロセスは、一般に利用されている公知の技術であるため、ここでは詳しい説明は省略する。こうして、SIMカード11とスマートフォン10との間での相互認証が完了すると、両者間に暗号通信路が開設される。図の破線より下に示されたステップS5以降のコマンドは、この暗号通信路を介して与えられることになる。すなわち、ステップS5以降のコマンドの実質的な内容部分は、所定の暗号化プロトコルに基づいて暗号化され、「SCP:Secure Channel Protocol」により保護されたコマンドとして送信される。
なお、現行の規格では、暗号通信路の開設時(「EXTERNAL AUTHENTICATEコマンド」の処理時)に、SCPについてレベルを設定することが可能である。具体的には、「レベル1:コマンド改竄検知用のチェックコード付与」と「レベル2:コマンド改竄検知用のチェックコード付与+コマンドデータフィールドの暗号化」などが定められており、ステップS5以降にやりとりされるコマンドには、開設時に設定されたレベルが適用されることになる。このようなSCPレベルの設定を行った場合、レベル2の設定が行われたときにのみ、ステップS5以降のコマンドのデータフィールドに対して暗号化が行われることになる。なお、ステップS5,S6の例では、コマンドに対するレスポンスについては、SCPによる保護を行わず、平文のまま通常の通信路を介して返信するようにしているが、必要があれば、これらのレスポンスについても、暗号通信路を介して返信するようにしてもよい。
<<< §2. 本発明の基本的な実施形態 >>>
ここでは、本発明の基本的な実施形態を、§1で述べた一般的なICカード(SIMカード11)に適用した実施例について詳述する。はじめに、本発明の基本概念を説明するために、§1で述べた従来のICカードにおけるセキュリティ上の問題点を説明する。
図4(b) に例示した暗号通信路開設コマンドCMDには、「キーバージョン番号」が含まれている。この「キーバージョン番号」は、図3に例示する鍵テーブルTのキーバージョン番号に対応するものであり、ICカードに対して、暗号通信路を開設する際に用いる暗号鍵を指定する情報になる。たとえば、図3の鍵テーブルTには、合計6通りの暗号鍵(実際には、1通りの暗号鍵は、それぞれ3組の暗号鍵から構成されている)が収容されているので、「キーバージョン番号」を指定することにより、この6通りの暗号鍵のうちのいずれかを指定することができる。
具体的には、外部装置から与える暗号通信路開設コマンドに、たとえば「0x20」なるキーバージョン番号を含ませておけば、ICカード側では、図3の鍵テーブルTを参照することにより、暗号鍵「KeyD,KeyE,KeyF」を用いた暗号通信路の開設処理が実行されることになる。たとえば、これら暗号鍵「KeyD,KeyE,KeyF」の種別情報Aが「Triple-DES」であった場合、暗号アルゴリズムとして「Triple-DES」を採用する所定の暗号化プロトコルに基づいて、暗号鍵「KeyD,KeyE,KeyF」のそれぞれに含まれる鍵値データVを用いた暗号化処理および復号処理が実行されることになる。
このように、暗号通信路開設コマンドに含まれる「キーバージョン番号」は、鍵テーブルTに収容されている複数通りの暗号鍵のうちの特定の暗号鍵を指定する暗号鍵指定情報ということになり、外部装置は、この暗号鍵指定情報を用いることにより、所望の暗号鍵を用いた暗号通信路開設の指示を与えることが可能になる。なお、「暗号鍵」なる文言を「個別の鍵」を示すものとして捉えると、図3に示す鍵テーブルの場合、1行には3組の暗号鍵からなる「暗号鍵群」が収容されているため、鍵テーブルTに収容されているのは「6通りの暗号鍵」ではなく、「6通りの『3組の暗号鍵群』」ということになる。したがって、本願にいう暗号鍵指定情報は、特定の「暗号鍵」もしくは「暗号鍵群」を指定する情報ということになるが、本願では便宜上、図3の「KeyA」のような「個別の鍵」も、図3の「KeyA,KeyB,KeyC」のような「複数組の鍵からなる鍵群」も、特に混同のない限り、単に「暗号鍵」と呼ぶことにする。
このように、GlobalPlatform (登録商標)の仕様では、暗号通信路開設コマンドに、「キーバージョン番号」(暗号鍵指定情報)を含ませることにより、暗号通信路開設に用いる暗号鍵を任意に指定することが可能であるが、そのような指定を行わないオプションも用意されている。具体的には、暗号通信路開設コマンドに、「0x00」なるキーバージョン番号を含ませた場合は、暗号鍵の指定を省略したことになる。図3の鍵テーブルTに示されているとおり、キーバージョン番号としては、0x01〜0x7Fの範囲が割り当てられており、「0x00」なるキーバージョン番号は実在しない。したがって、「0x00」なるキーバージョン番号を含む暗号通信路開設コマンドは、実際には、暗号鍵指定情報を含まないコマンドということになる。
このように、暗号鍵指定情報を含まない暗号通信路開設コマンドが与えられた場合、ICカード側では、予め設定されていたデフォルト暗号鍵を用いて暗号通信路の開設処理を実行することになる。GlobalPlatform (登録商標)の標準的な仕様では、鍵テーブルTに最初に書き込まれた暗号鍵がデフォルト暗号鍵として設定されることになっている。
したがって、たとえば図3に示す鍵テーブルTの場合、キーバージョン番号「0x21」で指定されるセルに「KeyG,KeyH,KeyI」が最初に書き込まれたとすると、この「KeyG,KeyH,KeyI」がデフォルト暗号鍵として採用されることになり、キーバージョン番号「0x21」がデフォルト情報として設定される。この場合、暗号鍵指定情報が含まれていない暗号通信路開設コマンド(すなわち、「0x00」なるキーバージョン番号を含む暗号通信路開設コマンド)が与えられると、デフォルト情報として設定されているキーバージョン番号「0x21」が参照され、暗号鍵「KeyG,KeyH,KeyI」を用いた暗号通信路の開設処理が行われることになる。
このように、デフォルト暗号鍵を設定しておけば、暗号通信路開設コマンドを与えるたびに、毎回、特定の暗号鍵(キーバージョン番号)を指定する手間を省くことができるようになるが、暗号アルゴリズムのセキュリティ強度の低い暗号鍵がデフォルト暗号鍵として採用されてしまうと、セキュリティ強度の低い暗号通信路を用いる暗号通信が増える可能性がある。すなわち、本来は、情報処理装置と外部装置との間でやり取りされる情報の機密性に応じて、適切なセキュリティ強度をもった暗号通信路が開設されるように、暗号通信路開設コマンドを与える際に、適切な暗号鍵(キーバージョン番号)を指定するべきであるが、実際には、このような指定を怠ってしまうことも少なくない。
実際には、デフォルト暗号鍵を用いた暗号通信路が開設されるケースが大半であると予想され、セキュリティ強度の低い暗号鍵がデフォルト暗号鍵として採用されてしまうことは大きな問題になる。本発明は、このような問題を解決するためになされたものであり、複数通りの暗号鍵を選択的に利用して暗号通信路を開設する機能を有する情報処理装置において、暗号鍵の選択指示がなかったときに利用されるデフォルト暗号鍵に基づいて開設される暗号通信路のセキュリティ強度を一定に維持することを目的とする。
以下、本発明の基本概念を、図6を参照しながら説明する。図6は、本発明の基本的な実施形態に係る情報処理装置の構成を示すブロック図である。本発明は、ICカードに限らず、外部装置との間で暗号通信を行う機能を有する一般的な情報処理装置に広く適用できる技術であるが、ここでは、§1で述べた一般的なICカード(SIMカード11)に適用した実施例を説明する。図6に示すブロック図は、本発明に係る情報処理装置100(SIMカード11)が、外部装置200(スマートフォン10または外部サーバ20)に対して暗号通信を行う例である。
図示のとおり、本発明に係る情報処理装置100は、暗号通信処理部110,順位リスト格納部120,デフォルト情報設定部130,暗号鍵書込処理部140,鍵テーブル格納部150を有しており、外部装置200との間で暗号通信を行う機能を有する。
これらの各構成要素110〜150は、実際には、図2に示す管理プログラムSDによって構築される構成要素であり、その機能は、情報処理装置100を構成するハードウエアと管理プログラムSD(および必要に応じてOSプログラム)との協働作用により実現されることになる。もちろん、情報処理装置100には、その他のアプリケーションプログラムも組み込まれているため、実際には、図6には示されていないブロックで示される多数の構成要素も含まれることになるが、ここでは、本発明の動作に直接関係する構成要素のみを示すことにする。
暗号通信処理部110は、外部装置200から与えられる暗号通信路開設コマンドに基づいて、外部装置200との間に所定の暗号アルゴリズムを利用した暗号通信路を開設し、外部装置200に対して暗号通信を行う機能をもった構成要素である。図示の例では、3通りの暗号アルゴリズムAES,Triple-DES,RSAを用いた暗号処理に対応した暗号通信路開設ルーチンが組み込まれている例が示されており、指定されたいずれかの暗号アルゴリズムを用いて暗号通信路を開設し、この暗号通信路を介した暗号通信が可能である。
ここで、暗号通信路の開設とは、具体的には、特定の暗号アルゴリズムを用いた特定の暗号化プロトコルにしたがって、外部装置200への送信情報に対しては暗号化を行い、外部装置200からの受信情報に対しては復号を行う環境を整えることに他ならない。本願では、このような「暗号化処理」と「復号処理」とを包括して「暗号処理」と呼んでいる。具体的な「暗号処理」を実行するには、特定の暗号アルゴリズムを用いた特定の暗号化プロトコルを定めた上で、更に、特定の暗号鍵を定める必要がある。
暗号処理に用いる暗号鍵は、鍵テーブル格納部150に格納されている鍵テーブルTに収容されている。図3に例示した鍵テーブルTの場合、1つのキーバージョン番号(暗号鍵指定情報)に3組の暗号鍵が対応づけられているが、図6には、説明の便宜上、鍵テーブルT内に4通りの暗号鍵K1〜K4を収容した例を示す。図3に示す例の場合は、3組の暗号鍵が暗号処理に同時に利用されることになるが、ここでは、便宜上、同時に利用される暗号鍵が1組だけの単純な例についての説明を行うことにする。
個々の暗号鍵Keyは、図4(a) のデータ構造に示すとおり、種別情報A,鍵長L,鍵値データVを含んでいる。ここで、種別情報Aは、「AES」,「Triple-DES」,「RSA」など、当該暗号鍵Keyを用いることを想定している暗号化プロトコルが採用する暗号アルゴリズムの種別を含む情報であり、鍵値データVは、暗号化および復号の演算に用いられる鍵値データそのものである。したがって、図6に示す鍵テーブルTに収容されている4通りの暗号鍵K1〜K4は、それぞれが、暗号通信を行う際の暗号処理に利用する鍵値データVと、当該暗号処理に利用する暗号アルゴリズムを示す種別情報Aと、を含んでいることになる。鍵テーブル格納部150は、このような暗号鍵を複数通り収容可能な鍵テーブルTを格納する構成要素である。
図6には、鍵テーブルT内に4通りの暗号鍵が収容されている状態が示されているが、必要に応じて、暗号鍵を鍵テーブルTに追加することが可能である。暗号鍵を追加する処理は、暗号鍵書込処理部140によって行われる。すなわち、暗号鍵書込処理部140は、外部装置200から与えられる書込コマンドに基づいて、鍵テーブルに新たな暗号鍵を書き込む暗号鍵書込処理を実行し、書込処理が完了した旨をレスポンスとして外部装置200に報告する(書込処理に失敗した場合は、エラーを示すレスポンスを返す)。
書込コマンドには、書込対象となる暗号鍵Keyの情報(図4(a) の書式に示す情報)と、鍵テーブルT内の書込場所(収容場所:図3に示す鍵テーブルTの場合は、特定のキーバージョン番号)を示す情報とが含まれており、暗号鍵書込処理部140は、書込対象となる暗号鍵Keyを指定された書込場所に書き込む処理を行う。なお、暗号鍵書込処理部140は、必要があれば、与えられたコマンドに応じて、既に書込み済みの暗号鍵を新たな暗号鍵に書換える処理や、不要になった暗号鍵を削除する処理を行う機能も有している。
デフォルト情報設定部130は、この鍵テーブルTに収容されている複数通りの暗号鍵のうち、デフォルト暗号鍵として採用された暗号鍵を特定するためのデフォルト情報Dを設定し、これを保持する機能をもった構成要素である。図示の例の場合、デフォルト情報Dとして、暗号鍵K3を特定する情報が設定されている。この場合、鍵テーブルTに収容されている暗号鍵K3がデフォルト暗号鍵として設定されていることになる。
暗号通信処理部110は、外部装置200から暗号通信路開設コマンドが与えられた場合に、鍵テーブル格納部150に格納されている鍵テーブルTの中から所定の暗号鍵を選択し、選択した暗号鍵を用いて暗号通信路を開設する処理を行う。この場合、与えられた暗号通信路開設コマンドに、鍵テーブルTに収容されている特定の暗号鍵を指定する暗号鍵指定情報が含まれていた場合には、指定された当該特定の暗号鍵を用いて暗号通信路を開設するが、暗号鍵指定情報が含まれていなかった場合には、デフォルト情報設定部130に設定されているデフォルト情報Dで特定されるデフォルト暗号鍵を用いて暗号通信路を開設することになる。
たとえば、図示の例の場合、与えられた暗号通信路開設コマンドに、暗号鍵K1を指定する暗号鍵指定情報が含まれていた場合には、指定された暗号鍵K1を用いて暗号通信路が開設される。一方、暗号鍵指定情報が含まれていなかった場合には、デフォルト情報Dで特定されるデフォルト暗号鍵K3を用いて暗号通信路が開設されることになる。
前述したとおり、実用上は、暗号鍵指定情報を省略した暗号通信路開設コマンドが与えられることが多いため、デフォルト暗号鍵K3を用いて暗号通信路が開設される頻度はかなり高くなる。そこで、デフォルト暗号鍵としては、できるだけセキュリティ強度の高いもの、すなわち、当該暗号鍵の使用を前提とする暗号アルゴリズムのセキュリティ強度の高いものを採用するのが好ましい。しかしながら、GlobalPlatform (登録商標)の標準的な仕様では、鍵テーブルTに最初に書き込まれた暗号鍵がデフォルト暗号鍵として設定されることになっているため、従来装置では、必ずしもセキュリティ強度の高い暗号鍵がデフォルト暗号鍵として採用されるとは限らなかった。そこで、図6に示す本発明に係る情報処理装置100では、できるだけセキュリティ強度の高い暗号鍵がデフォルト暗号鍵として採用されるように、次のような工夫を施している。
まず、図6に示す情報処理装置100には、順位リスト格納部120という新たな構成要素が設けられている。この順位リスト格納部120には、複数通りの暗号アルゴリズムについて、セキュリティ強度の順位を示すセキュリティ強度順位リストLが格納されている。図には、3通りの暗号アルゴリズムAES,Triple-DES,RSAについての強度順位を示すセキュリティ強度順位リストLが示されている。この例の場合、第1順位L1がAES、第2順位L2がTriple-DES、第3順位L3がRSAとなっており、第1順位L1が最も高いセキュリティ強度を示している。
暗号アルゴリズムのセキュリティ強度については、様々な観点から理論的な研究がなされており、それぞれ客観的な評価がなされている。したがって、本発明を実施する上では、このような客観的な評価を参照しながら、個々の暗号アルゴリズムについてのセキュリティ強度を相対的に比較することにより、図示のようなセキュリティ強度順位リストLを予め用意しておくことができる。図示のリストLは、3種類の暗号アルゴリズムについての順位を示すものであるが、実際には、必要に応じて、より多種類の暗号アルゴリズムについてのリストを用意することが可能である。
なお、セキュリティ強度順位リストLの中には、複数の暗号アルゴリズムを同順位に収容するようにしてもかまわない。たとえば、第1順位L1に暗号アルゴリズムARG1、第2順位L2に暗号アルゴリズムARG2およびARG3、第3順位が空位で、第4順位に暗号アルゴリズムARG4をそれぞれ収容したセキュリティ強度順位リストLを用いてもよい。また、§4−3で述べるように、暗号アルゴリズムに代えて、暗号化プロトコルの順位を示すリストを用いることも可能である。
このようなセキュリティ強度順位リストLを用意しておけば、デフォルト情報設定部130は、できるだけセキュリティ強度の高い暗号鍵をデフォルト暗号鍵として採用して、デフォルト情報Dの設定を行うことができる。具外的には、まず、暗号鍵書込処理部140が、書込コマンドに基づいて新たな暗号鍵の書き込みを行う際に、その旨をデフォルト情報設定部130に伝達するようにする。
デフォルト情報設定部130は、暗号鍵書込処理部140からの上記伝達を受けた場合に、書込対象となる暗号鍵Keyに含まれている種別情報A(図4(a) 参照)によって示される暗号アルゴリズムのセキュリティ強度順位リストL上での順位が、所定の採用条件を満たしているか否かを確認する。具体的な採用条件については、後にいくつかの例を挙げて説明するが、「できるだけセキュリティ強度の高い暗号鍵をデフォルト暗号鍵として採用する」ことができるような所定の条件を設定しておくようにする。そして、デフォルト情報設定部130は、当該採用条件を満たしていることを前提として、暗号鍵書込処理部140による書込対象となる暗号鍵をデフォルト暗号鍵として特定するためのデフォルト情報Dを設定する処理を行う。
要するに、暗号鍵書込処理部140が、鍵テーブルTに対して新たな暗号鍵の書き込みを行う場合、デフォルト情報設定部130によって、書込対象となる当該暗号鍵のセキュリティ強度が確認され、所定の採用条件を満たす強度であった場合には、必要に応じて(後述するように、採用条件を満たす強度であっても、必ずしもデフォルト暗号鍵として採用されるわけではない)、当該暗号鍵をデフォルト暗号鍵として採用し、当該暗号鍵を示す情報がデフォルト情報Dとして設定されることになる。
なお、図6の鍵テーブル格納部150内には、説明の便宜上、鍵テーブルTに4通りの暗号鍵K1〜K4が格納された単純な例を示したが、GlobalPlatform (登録商標)の標準的な仕様では、図3に例示したとおり、キーバージョン番号「0x01」〜「0x7F」に対応づけて最大127通りの暗号鍵(暗号鍵群)を収容することができ、しかも、1通りの暗号鍵(暗号鍵群)として、キーID「0x00」〜「0x7F」に対応づけられた最大128組の暗号鍵を収容することができる鍵テーブルTが用いられる。
この図3に示す鍵テーブルTでは、複数通りの暗号鍵が、それぞれ固有のキーバージョン番号に対応づけて収容されている。したがって、デフォルト情報設定部130は、特定のキーバージョン番号をデフォルト情報Dとして設定することになる。暗号通信処理部110は、暗号通信路開設コマンドに、特定の暗号鍵を示すキーバージョン番号が暗号鍵指定情報として含まれていた場合には、当該キーバージョン番号に対応づけられた暗号鍵を用いて暗号通信路を開設し、特定の暗号鍵を示すキーバージョン番号が含まれていなかった場合には、デフォルト情報Dとして設定されているキーバージョン番号に対応づけられたデフォルト暗号鍵を用いて暗号通信路を開設することになる。
また、図3に示す鍵テーブルTでは、1つのキーバージョン番号に対応づけて、複数組の暗号鍵(図示の例の場合は、それぞれ3組の暗号鍵)が収容されている。したがって、実際には、暗号通信処理部110は、暗号通信路開設コマンドに、特定の暗号鍵を示すキーバージョン番号が暗号鍵指定情報として含まれていた場合には、当該キーバージョン番号に対応づけられた複数組の暗号鍵を用いて暗号通信路を開設し、特定の暗号鍵を示すキーバージョン番号が含まれていなかった場合には、デフォルト情報として設定されているキーバージョン番号に対応づけられた複数組のデフォルト暗号鍵を用いて暗号通信路を開設することになる。
たとえば、デフォルト情報Dとして、キーバージョン番号「0x21」が設定されている状態において、図4(b) に示す書式をもった暗号通信路開設コマンド「INITIALIZE UPDATE, (0x01),(乱数)」が与えられた場合は、暗号鍵指定情報「0x01」(キーバージョン番号)に基づいて、図3に示す暗号鍵「KeyA,KeyB,KeyC」が選択され、当該暗号鍵を用いた暗号通信路開設処理が実行される。一方、暗号通信路開設コマンド「INITIALIZE UPDATE, (0x00),(乱数)」が与えられた場合は、「0x00」は実在の特定のキーバージョン番号を示すデータではないので、当該暗号通信路開設コマンドには、暗号鍵指定情報は含まれていないことになる。したがって、デフォルト情報Dとしてのキーバージョン番号「0x21」が参照され、図3に示すデフォルト暗号鍵「KeyG,KeyH,KeyI」が選択され、当該デフォルト暗号鍵を用いた暗号通信路開設処理が実行されることになる。
前述したとおり、本発明に係る情報処理装置では、新たな暗号鍵の書き込みを行う際に、セキュリティ強度順位リストLを参照して、書込対象となる暗号鍵が所定の採用条件(デフォルト暗号鍵として採用するための条件)を満たしているか否かの確認が行われ、当該採用条件を満たしていることを前提として、書込対象となる暗号鍵がデフォルト暗号鍵として採用されることになる。したがって、上例の場合、キーバージョン番号「0x21」で特定されるデフォルト暗号鍵「KeyG,KeyH,KeyI」は、所定の採用条件を満たす暗号鍵であり、当該暗号鍵を用いて開設される暗号通信路は、所定のセキュリティ強度をもった暗号アルゴリズムを採用した暗号通信路ということになる。
かくして、本発明によれば、複数通りの暗号鍵を選択的に利用して暗号通信路を開設する機能を有する情報処理装置において、選択指示がなかったときに利用されるデフォルト暗号鍵に基づいて開設される暗号通信路のセキュリティ強度をできるだけ高めることが可能になる。
なお、上例では、デフォルト情報Dとして、キーバージョン番号「0x21」を設定した例を示したが、デフォルト情報Dは、デフォルト暗号鍵を特定することが可能な情報であれば、どのような形態のものであってもかまわない。たとえば、「鍵テーブルTの先頭」といった情報や「鍵テーブルTの末尾」といった情報をデフォルト情報Dとして用いることも可能である。図3に示す鍵テーブルTを利用する場合、「鍵テーブルTの先頭」というデフォルト情報Dは、キーバージョン番号「0x01」と等価であり、「鍵テーブルTの末尾」というデフォルト情報Dは、キーバージョン番号「0x7F」と等価である。
最後に、図6に示す「暗号通信路」に関する留意点を述べておく。図6では、説明の便宜上、暗号通信処理部110と外部装置200との間に開設された「暗号通信路」を円柱状の筒で表し、暗号鍵書込処理部140と外部装置200との間でやりとりされる書込コマンドおよびそのレスポンスを、この円柱状の筒とは別個の矢印で示している。ただ、GlobalPlatform(登録商標)の仕様では、暗号鍵についての書込コマンドおよびそのレスポンスは暗号化した状態でやりとりすることとされている。このように暗号化した状態でやりとりする場合は、図6において、暗号鍵書込処理部140と外部装置200との間で送受される書込コマンドおよびそのレスポンスは、実際には、円柱状の筒で示された「暗号通信路」および「暗号通信処理部110」を介して送受されることになる(後述する図7〜図9も同様)。
<<< §3. 本発明の個別の実施形態 >>>
上述した§2では、図6を参照しながら本発明の基本的な実施形態を説明した。この基本的な実施形態によれば、暗号鍵書込処理部140が、鍵テーブルTに対して新たな暗号鍵の書き込みを行う場合に、デフォルト情報設定部130が、書込対象となる暗号鍵に含まれている種別情報Aによって示される暗号アルゴリズムの「セキュリティ強度順位リストL上での順位」が所定の採用条件を満たしているか否かを確認し、当該採用条件を満たしていることを前提として、書込対象となる暗号鍵をデフォルト暗号鍵として特定するためのデフォルト情報の設定が行われる。
ここで、デフォルト暗号鍵の採用条件としては、「できるだけセキュリティ強度の高い暗号鍵をデフォルト暗号鍵として採用する」ことができる条件であれば、どのような条件を設定してもよいが、この§3では、具体的な採用条件に基づく個別の実施形態を3つ例示しておくことにする。
<3−1. 第1の個別実施形態>
第1の個別実施形態の基本方針は、予め、デフォルト情報設定部130に、セキュリティ強度順位リストLに関する所定の基準順位を設定しておき、デフォルト情報設定部130が、書込対象となる暗号鍵に含まれている種別情報によって示される暗号アルゴリズムのセキュリティ強度順位リストL上での順位が、当該基準順位以上となることを採用条件とする、というものである。
図7は、この第1の個別実施形態に係る情報処理装置100の構成を示すブロック図である。図7に示す情報処理装置100の基本構成は、図6に示す情報処理装置100の基本構成とほぼ同じであり、図7の各構成要素には、図6の各構成要素と同一の符号を付して示してある。ただ、デフォルト情報設定部130および暗号鍵書込処理部140について、若干具体的な機能が備わっている。以下、この具体的な機能について説明する。
既に述べたとおり、GlobalPlatform (登録商標)の標準的な仕様では、鍵テーブルTに最初に書き込まれた暗号鍵がデフォルト暗号鍵として設定されることになっている。ここで述べる第1の個別実施形態では、この仕様に準拠して、「鍵テーブルTに最初に書き込まれた暗号鍵をデフォルト暗号鍵として設定する」という基本方針を採用する。したがって、デフォルト情報設定部130は、暗号鍵書込処理部140が、鍵テーブルTに最初の暗号鍵を書き込む処理を実行したときに、当該暗号鍵をデフォルト暗号鍵として設定する処理を行う。
但し、ここに示す実施形態では、暗号鍵書込処理部140が、鍵テーブルTに暗号鍵を最初に書き込む際に、デフォルト情報設定部130に対して、当該暗号鍵の書き込みを行ってよいかどうかの問い合わせを行い、許可を示す回答が得られた場合に限って当該暗号鍵の書き込みを実行する。別言すれば、禁止を示す回答が得られた場合には、当該暗号鍵の書き込みは実行されないことになる。
デフォルト情報設定部130は、暗号鍵書込処理部140から上記問い合わせがあった場合、順位リスト格納部120内のセキュリティ強度順位リストLを参照することにより、当該暗号鍵の書き込みを許可するか、禁止するかの判定を行い、判定結果を暗号鍵書込処理部140に対して回答する。この判定を行うために、予め設定されていた基準順位が利用される。
すなわち、デフォルト情報設定部130は、暗号鍵書込処理部140によって最初の暗号鍵の書込処理が実行されようとしたときに、書込対象となる暗号鍵に含まれている種別情報Aによって示される暗号アルゴリズムの順位をセキュリティ強度順位リストL上で確認し、確認された順位が所定の基準順位E以上であった場合には当該書込処理を許可し、確認された順位が所定の基準順位E未満であった場合には当該書込処理を禁止する判定処理を行い、判定結果(許可または禁止)を暗号鍵書込処理部140に回答することになる。デフォルト情報設定部130は、許可の回答を行った場合、鍵テーブルTに最初に書き込まれることになる暗号鍵をデフォルト暗号鍵とするデフォルト情報Dの設定を行う。
図示の例は、セキュリティ強度順位リストLに関する基準順位Eとして、第2順位L2が設定されている場合の例である。この基準順位Eは、予めデフォルト情報設定部130に設定しておけばよいが、ここに示す実施例の場合、デフォルト情報設定部130は、外部装置200から与えられる基準順位設定コマンドに基づいて、基準順位Eを新規設定もしくは更新設定し、設定完了後にレスポンスを返す機能を有している。したがって、外部装置200から基準順位設定コマンドを与えることにより、基準順位Eを新規設定することもできるし、必要に応じて、既に設定済みの基準順位Eを変更するための更新設定を行うこともできる。
暗号鍵書込処理部140は、上述したとおり、最初の暗号鍵の書込処理を実行する前に、書込対象となる暗号鍵の内容(少なくとも、種別情報Aによって特定される暗号アルゴリズムを示す情報)をデフォルト情報設定部130に知らせて、当該暗号鍵の書き込みを行ってよいかどうかの問い合わせを行う。そして、デフォルト情報設定部130によって書込処理が許可された場合には、当該最初の暗号鍵の書込処理を実行する。一方、デフォルト情報設定部130によって書込処理が禁止された場合には、当該最初の暗号鍵の書込処理を実行せずに、当該暗号鍵の書込コマンドを与えた外部装置200に対して、エラーを示すレスポンスを返す処理を行う。
結局、この第1の個別実施形態では、「鍵テーブルTに最初に書き込まれた暗号鍵をデフォルト暗号鍵として設定する」という、GlobalPlatform (登録商標)の標準的な仕様に準拠した基本方針が採用されるものの、鍵テーブルTに最初の暗号鍵を書き込む書込コマンドが与えられた場合、当該書込コマンドを無条件に実行せずに、書込対象となる暗号鍵がデフォルト暗号鍵としての資質を備えているか否かの判定が行われ、資質を備えていた場合にのみ、当該暗号鍵を鍵テーブルTに最初の暗号鍵として書き込む処理が実行されることになる。換言すれば、資質を備えていない場合は、書込コマンドは拒絶され、エラーとして扱われることになる。
もちろん、最初の暗号鍵のための書込コマンドが拒絶され、エラーを示すレスポンスが返されると、鍵テーブルTは暗号鍵が収容されていない空の状態のままなので、暗号通信処理部110は、暗号通信路を開設する処理を行うことができない。したがって、エラーを示すレスポンスが返された場合、外部装置200側では、別な暗号鍵を最初の暗号鍵として書き込むための書込コマンドを再度送信する必要がある。
結局、外部装置200からは、最初の暗号鍵の書き込みに成功するまで、様々な暗号鍵(含まれている種別情報Aが異なる暗号鍵)についての書込コマンドを繰り返し送信する必要があるが、一旦、書き込みに成功した場合は、当該暗号鍵がデフォルト暗号鍵として設定され、以後、暗号通信処理部110によって暗号通信路を開設することが可能になる。しかも、デフォルト暗号鍵として設定された暗号鍵は、所定の採用条件を満たす暗号鍵であるため、デフォルト暗号鍵が用いられた場合、一定のセキュリティ強度を担保した暗号通信が可能になる。
上述したとおり、最初の暗号鍵(すなわち、デフォルト暗号鍵)として必要な資質の条件は、「種別情報Aによって示される暗号アルゴリズムの順位が、セキュリティ強度順位リストL上で基準順位E以上である」というものである。そのため、図7に示すとおり、デフォルト情報設定部130内には、予め所定の基準順位Eが設定されている。図示の例は、基準順位Eとして第2順位L2が設定されている例であり、セキュリティ強度順位リストLに太線で示す境界線より上の順位であれば採用条件を満たしており、これより下の順位であれば採用条件を満たしていないと判定される。
すなわち、デフォルト情報設定部130は、暗号鍵書込処理部140から、特定の暗号鍵を最初の暗号鍵として書き込んでよいかどうかの問い合わせを受けたときに、当該特定の暗号鍵に含まれる種別情報Aによって示される暗号アルゴリズムの順位が、図に太線で示す境界線より上の順位であれば書込許可の回答を行うとともに、当該特定の暗号鍵をデフォルト暗号鍵とするデフォルト情報Dの設定を行い、境界線より下の順位であれば書込禁止の回答を行うことになる。
図7は、暗号鍵K3が最初の暗号鍵として書き込まれた直後の状態を示しており、デフォルト情報Dによって、この暗号鍵K3がデフォルト暗号鍵として設定されたことが示されている。基準順位EがL2に設定されていることから、この暗号鍵K3を用いて開設される暗号通信路は、セキュリティ強度順位リストLの第1順位L1もしくは第2順位L2に記載されているAESもしくはTriple-DESを暗号アルゴリズムとして利用するものになり、ある程度のセキュリティ強度を維持した通信路になる。
この第1の個別実施形態では、「鍵テーブルTに最初に書き込まれた暗号鍵をデフォルト暗号鍵とする」という基本方針を採用しているため、図7に示すように、一旦、デフォルト暗号鍵の設定が完了すると(デフォルト情報Dの設定が完了すると)、その後は、デフォルト情報設定部130によるデフォルト情報Dの再設定を行う必要はない。したがって、以後、暗号鍵書込処理部140は、外部装置200から新たな暗号鍵についての書込コマンドが与えられた場合、デフォルト情報設定部130に対して、当該暗号鍵の書き込みを行ってよいかどうかの問い合わせを行う必要はなく、そのまま書込処理を実行してかまわない。
このように、第1の個別実施形態では、外部装置200から暗号鍵についての書込コマンドが与えられた場合、当該書込コマンドが、最初の暗号鍵を書き込むためのコマンドであるのか、2回目以降の暗号鍵を書き込むためのコマンドであるのかによって、暗号鍵書込処理部140の処理動作が変わってくる。すなわち、前者の場合は、デフォルト情報設定部130に対する問い合わせを行った結果、許可回答が得られれば書込処理を実行するが、禁止回答が得られれば書込処理を拒絶する必要があるのに対して、後者の場合は、そのような問い合わせは不要であり、常に書込処理を実行してかまわない。
したがって、暗号鍵書込処理部140は、暗号鍵についての書込コマンドを受信した場合、当該書込コマンドが、最初の暗号鍵を書き込むためのコマンドであるのか、2回目以降の暗号鍵を書き込むためのコマンドであるのか、を判断する必要がある。
このような判断を行うための具体的な方法のひとつは、外部装置200から暗号鍵の書込コマンドが与えられたときに、暗号鍵書込処理部140が、鍵テーブル格納部150に格納されている鍵テーブルTを参照し、暗号鍵の書き込みが既に行われているか否かを判断する方法である。図7において、鍵テーブル格納部150と暗号鍵書込処理部140との間の双方向矢印は、新たな暗号鍵の書き込み(下方向矢印)が行われるとともに、鍵テーブルTからの情報収集(上方向矢印)が行われることを示している。
鍵テーブルTにおける各暗号鍵の書込場所に、最初は空白状態を示す何らかの初期値が保存されているようにすれば、すべての書込場所に当該初期値が保存されていた場合には、暗号鍵の書き込みが全く行われていないものと判断することができ、いずれかの書込場所に当該初期値以外のデータが保存されていた場合には、暗号鍵の書き込みが既に行われているものと判断することができる。したがって、暗号鍵書込処理部140は、外部装置200から暗号鍵の書込コマンドが与えられたときに鍵テーブルTを参照し、すべての書込場所に上記初期値が保存されていた場合には、当該書込コマンドが最初の暗号鍵を書き込むためのコマンドであると判断することができる。
別な判断方法として、暗号鍵書込処理部140に、未書込/書込済のいずれか2値の状態を示す書込フラグを設けておく方法を採ることも可能である。たとえば、初期段階では、書込フラグとして「未書込」を示すビット「0」が設定されるようにしておき、最初の暗号鍵の書込処理が実行されたときに、当該書込フラグを、未書込の状態(ビット「0」)から書込済の状態(ビット「1」)に書き替える処理を行うようにすればよい。もちろん、外部装置200から暗号鍵の書込コマンドが与えられた場合であっても、デフォルト情報設定部130から禁止回答が得られたため、実際には、暗号鍵の書き込みが行われなかった場合には、書込フラグは未書込の状態(ビット「0」)のままになる。
そうすれば、暗号鍵書込処理部140は、外部装置200から暗号鍵の書込コマンドが与えられたときに、この書込フラグをチェックするだけで、当該書込コマンドが、最初の暗号鍵を書き込むためのコマンドであるのかどうかを認識することができる。すなわち、書込フラグが未書込の状態(ビット「0」)のときには、最初の暗号鍵を書き込むためのコマンドであると判断できるので、デフォルト情報設定部130によって書込処理が許可されたことを実行条件として当該書込コマンドを実行し、書込処理が禁止された場合は当該書込処理を実行せずに外部装置200に対してエラーを示すレスポンスを返す処理を行うことになる。一方、書込フラグが書込済の状態(ビット「1」)のときには、上記実行条件に関わらず、当該書込コマンドを実行すればよい。
なお、ここで述べた第1の個別実施形態は、後述する第3の個別実施形態と組み合わせて実施することも可能であり、その場合、デフォルト情報Dは、更新の条件が満たされた時点で逐次更新されることになる(詳細は、§3−3を参照)。
<3−2. 第2の個別実施形態>
続いて、図8を参照しながら、第2の個別実施形態を説明する。図8は、この第2の個別実施形態に係る情報処理装置100の構成を示すブロック図である。図8に示す情報処理装置100の基本構成は、図7に示す情報処理装置100の基本構成とほぼ同じであり、図8の各構成要素には、図7の各構成要素と同一の符号を付して示してある。ただ、デフォルト情報設定部130および暗号鍵書込処理部140の処理動作が若干異なっている。以下、この相違点について説明する。
この第2の個別実施形態の基本方針も、予め、デフォルト情報設定部130に、セキュリティ強度順位リストLに関する所定の基準順位を設定しておき、デフォルト情報設定部130が、書込対象となる暗号鍵に含まれている種別情報によって示される暗号アルゴリズムのセキュリティ強度順位リストL上での順位が、当該基準順位以上となることを採用条件とする、という点については、上述した第1の個別実施形態の基本方針と同じである。別言すれば、この第2の個別実施形態の場合も、予め設定されている基準順位以上のセキュリティ強度を有していなければ、デフォルト暗号鍵として採用されることはない、という点に変わりはない。
ただ、上述した第1の個別実施形態では、GlobalPlatform (登録商標)の標準的な仕様に準拠して、「鍵テーブルTに最初に書き込まれた暗号鍵をデフォルト暗号鍵として設定する」という基本方針を採用しつつ、基準順位以上のセキュリティ強度をもった暗号鍵を書込対象とする書込コマンドがくるまで、最初の暗号鍵の書き込みを実行させない、という制約を課していた。これに対して、ここで述べる第2の個別実施形態では、「最初に書き込まれた暗号鍵をデフォルト暗号鍵として設定する」という仕様には準拠せず、その代わりに、「鍵テーブルTに暗号鍵が書き込まれているが、デフォルト暗号鍵は存在しない」という状態を許す、という運用を採る。
このような運用は、図8のブロック図に端的に示されている。すなわち、図7のブロック図には、デフォルト情報設定部130から暗号鍵書込処理部140に対して「許可回答または禁止回答」を示す矢印が描かれており、暗号鍵書込処理部140が、最初の暗号鍵を書き込む際には、デフォルト情報設定部130からの許可回答が必要になっていたが、図8のブロック図には、そのような矢印は描かれておらず、暗号鍵書込処理部140は、最初の暗号鍵であろうが、2回目以降の暗号鍵であろうが、とにかく新たな暗号鍵を鍵テーブルTに書き込む際に、デフォルト情報設定部130に問い合わせをしたり、デフォルト情報設定部130から許可回答を得る必要は全くない。
一方、図8のブロック図には、鍵テーブル格納部150に格納された鍵テーブルT内には、既に2組の暗号鍵K1,K2が書き込まれている状態が示されている。ところが、デフォルト情報設定部130内のデフォルト情報Dとしては「φ」なる記号が描かれている。この記号「φ」は、デフォルト情報Dの初期値を示し、デフォルト暗号鍵を特定するための実質的な情報が設定されていないことを示している。たとえば、図3に例示するように、「0x01」〜「0x7F」の範囲内の数値をとるキーバージョン番号をデフォルト情報Dとして用いる場合、「φ」は、「0x00」や「0xFF」など、実在しないキーバージョン番号に設定しておけばよい。
これは、図8に示す実施例の場合、既に、暗号鍵書込処理部140によって、最初の暗号鍵K1や2番目の暗号鍵K2の書き込みが実行されているにもかかわらず、これらの暗号鍵K1,K2は、デフォルト暗号鍵として採用されなかったことを意味する。
図8に示す実施形態の場合も、順位リスト格納部120には、セキュリティ強度順位リストLが格納されており、デフォルト情報設定部130には、基準順位Eが設定されている。そして、デフォルト情報設定部130は、外部装置200から与えられる基準順位設定コマンドに基づいて、基準順位Eを新規設定もしくは更新設定し、設定完了後にレスポンスを返す機能を有している。図示の例では、基準順位Eとして、第2順位L2が設定されているので、デフォルト暗号鍵として採用される条件は、セキュリティ強度が第2順位L2以上ということになる。暗号鍵K1,K2が、デフォルト暗号鍵として採用されなかったのは、セキュリティ強度が第2順位L2未満であったためである。
結局、ここで述べる第2の個別実施形態の基本的な考え方は、外部装置200から新たな暗号鍵についての書込コマンドが与えられた場合は、特に制約なしに当該コマンドを実行して、新たな暗号鍵を鍵テーブルTに書き込むようにしつつ、当該新たな暗号鍵がデフォルト暗号鍵としての採用条件(セキュリティ強度が基準順位E以上)を満たさない限り、デフォルト暗号鍵としては採用しない、という運用を採るものである。すなわち、「来るものは拒まず」という基本姿勢をとりながら、デフォルト暗号鍵としての採用に関しては、「採用条件を満たすものが現れるまで空席にして待つ」という方針を採ることになる。
したがって、この第2の個別実施形態の場合、デフォルト情報設定部130は、暗号鍵書込処理部140によって新たな暗号鍵の書込処理が実行されたときに、デフォルト情報Dが未設定(「φ」)であった場合には、書込対象となった暗号鍵に含まれる種別情報Aによって示される暗号アルゴリズムの順位をセキュリティ強度順位リストL上で確認し、確認された順位が所定の基準順位E以上(図示の例の場合は、第2順位L2以上)であった場合には、書込対象となった暗号鍵をデフォルト暗号鍵とするデフォルト情報Dの設定を行うが、確認された順位が所定の基準順位E未満であった場合には、デフォルト情報Dを未設定(「φ」)の状態のままとする処理を行うことになる。
暗号通信処理部110は、図8に示すようにデフォルト情報Dが未設定(「φ」)であったとしても、外部装置200から、暗号鍵K1もしくはK2を指定する暗号鍵指定情報が含まれた暗号通信路開設コマンドが与えられれば、鍵テーブルTに書き込まれている暗号鍵K1もしくはK2を用いて暗号通信路を開設することが可能である。しかしながら、暗号鍵指定情報が含まれていない暗号通信路開設コマンドが与えられた場合、デフォルト情報Dが未設定(「φ」)であると、デフォルト暗号鍵を特定することができないため、暗号通信路を開設することができない。
そこで、この第2の個別実施形態における暗号通信処理部110は、外部装置200から暗号通信路開設コマンドが与えられたときに、当該コマンドに暗号鍵指定情報が含まれておらず、かつ、デフォルト情報設定部130にデフォルト情報Dが設定されていなかった場合には、当該暗号通信路開設コマンドを実行せずに外部装置200に対してエラーを示すレスポンスを返す処理を行うことになる。
このようなエラーを示すレスポンスが返された場合、外部装置200側では、鍵テーブルTに既に存在する暗号鍵K1もしくはK2を指定する暗号鍵指定情報を含んだ暗号通信路開設コマンドを送信しなおすようにすればよい。もちろん、やがてデフォルト暗号鍵としての採用条件(セキュリティ強度が基準順位E以上)を満たす新たな暗号鍵が鍵テーブルTに書き込まれた場合は、当該暗号鍵をデフォルト暗号鍵とするデフォルト情報Dが設定されることになるので、それ以後は、暗号鍵指定情報が含まれていない暗号通信路開設コマンドを与えた場合でも、エラーを示すレスポンスが返されることなく、デフォルト暗号鍵を用いた暗号通信路が開設されることになる。しかも、デフォルト暗号鍵として設定された暗号鍵は、上記採用条件を満たす暗号鍵であるため、デフォルト暗号鍵が用いられた場合でも、一定のセキュリティ強度を担保した暗号通信が可能になる。
なお、ここに示す第2の個別実施形態の場合、暗号鍵書込処理部140によって新たな暗号鍵の書込処理が実行されたときに、デフォルト情報Dが既に設定済であった場合には、デフォルト情報設定部130は、デフォルト情報Dの設定をそのままの状態にする運用を採っている。別言すれば、ひとたびデフォルト情報Dが設定されたら、その後、デフォルト情報Dを更新する処理は行われないことになる。
もっとも、ここで述べた第2の個別実施形態は、後述する第3の個別実施形態と組み合わせて実施することも可能であり、その場合、デフォルト情報Dは、更新の条件が満たされた時点で逐次更新されることになる(詳細は、§3−3を参照)。
<3−3. 第3の個別実施形態>
これまで述べてきた第1の個別実施形態および第2の個別実施形態の基本方針は、いずれも、セキュリティ強度順位リストLに関する基準順位Eを設定しておき、書込対象となる暗号鍵の順位が、当該基準順位E以上となることを条件として当該暗号鍵をデフォルト暗号鍵として採用する、というものである。ここで述べる第3の個別実施形態では、このような絶対尺度となる基準順位Eを設定する必要はない。その代わり、新たな暗号鍵が書き込まれたときに、新たに書き込まれた暗号鍵と現在のデフォルト暗号鍵とのセキュリティ強度を、セキュリティ強度順位リストL上で相対比較し、新たに書き込まれた暗号鍵の強度の方が高い場合には、新たに書き込まれた暗号鍵を新たなデフォルト暗号鍵に設定しなおす、という方針を採用する。
したがって、この第3の個別実施形態に係る情報処理装置100の構成を示すブロック図は、§2で基本的な実施形態の説明に用いた図6ということになる。この第3の個別実施形態では、図6に示すとおり、デフォルト情報設定部130が、暗号鍵書込処理部140によって新たな暗号鍵の書込処理が実行されたときに、書込対象となった暗号鍵に含まれる種別情報Aによって示される第1の暗号アルゴリズムの順位と、その時点で設定されているデフォルト情報Dによって特定されるデフォルト暗号鍵(図示の例の場合、暗号鍵K3)に含まれる種別情報Aによって示される第2の暗号アルゴリズムの順位とを、セキュリティ強度順位リストL上で比較し、第1の暗号アルゴリズムの順位が第2の暗号アルゴリズムの順位よりも高い場合には、書込対象となった暗号鍵を新たなデフォルト暗号鍵とするデフォルト情報Dの更新設定を行う。
たとえば、図6に示す例の場合、鍵テーブルTには、既に4組の暗号鍵K1〜K4が書き込まれており、そのうちの暗号鍵K3をデフォルト暗号鍵として特定するためのデフォルト情報Dが設定されている。ここでは、この暗号鍵K3に含まれる種別情報Aによって示される暗号アルゴリズムが、セキュリティ強度順位リストL上で第2順位L2であったとしよう。そして、このような状況において、暗号鍵書込処理部140が、新たな暗号鍵K5についての書込コマンドを受信し、これを実行したものとしよう。すると、鍵テーブルTには、第5の暗号鍵K5が書き込まれることになる。
一方、暗号鍵書込処理部140からデフォルト情報設定部130に対しては、新たな暗号鍵K5の書込処理が実行された旨の報告がなされる。そこで、デフォルト情報設定部130は、この新たな暗号鍵K5に含まれる種別情報Aによって示される暗号アルゴリズムの順位と、現時点で設定されているデフォルト情報Dによって特定されるデフォルト暗号鍵K3に含まれる種別情報Aによって示される暗号アルゴリズムの順位とを比較する。上例の場合、デフォルト暗号鍵K3の順位は第2順位L2であるから、新たな暗号鍵K5の順位が第2順位L2以下であった場合、デフォルト情報Dの更新は行われないが、新たな暗号鍵K5の順位が第1順位L1であった場合は、新たな暗号鍵K5がデフォルト暗号鍵として特定されるように、デフォルト情報Dの更新が行われることになる。
結局、この第3の個別実施形態を採用すれば、逐次、デフォルト暗号鍵に対する更新が行われ、ある時点でのデフォルト暗号鍵は、これまで書き込みが行われた暗号鍵の中でセキュリティ強度順位リストL上での順位が最も高い暗号鍵ということになる。この第3の個別実施形態では、基準順位Eを設定する必要がないため、デフォルト情報設定部130は、暗号鍵書込処理部140によって新たな暗号鍵の書込処理が実行されたときに、その時点ではまだデフォルト情報Dが設定されていない場合には、とりあえず、書込対象となった暗号鍵をデフォルト暗号鍵とするデフォルト情報Dの新規設定を行うようにすればよい。
このように、最初に書き込まれた暗号鍵をそのままデフォルト暗号鍵とする運用を採ると、最初に書き込まれた暗号鍵のセキュリティ強度が低かった場合は、デフォルト暗号鍵としてセキュリティ強度の低い暗号鍵が設定されてしまうことになるが、新たな暗号鍵を追加してゆくたびに、デフォルト暗号鍵はセキュリティ強度のより高い暗号鍵に更新されてゆくことになるので、従来装置に比べれば、より高いセキュリティ強度を維持することが可能になる。
より好ましくは、この第3の個別実施形態を、これまで述べた第1の個別実施形態もしくは第2の個別実施形態と組み合わせて実施するようにすればよい。具体的には、デフォルト情報Dが設定されるまでは、第1の個別実施形態もしくは第2の個別実施形態を採用し、必ず基準順位E以上の暗号鍵がデフォルト暗号鍵となるようにしておき、デフォルト情報Dが設定された後は、第3の個別実施形態を実施し、よりセキュリティ強度の高い暗号鍵がデフォルト暗号鍵となるような更新が行われてゆくようにすればよい。
<<< §4. 本発明の変形例 >>>
これまで§2において本発明の基本的な実施形態を説明し、§3において、3通りの個別の実施形態を説明した。ここでは、これらの各実施形態に適用可能ないくつかの変形例を述べておく。
<4−1. 順位リストの設定/更新>
図9は、本発明の変形例となる実施形態に係る情報処理装置の構成を示すブロック図である。図示の変形例は、図6に示す情報処理装置100についての変形例であるが、図7や図8に示す情報処理装置100についても同様に適用可能である。
この図9に示す変形例の特徴は、順位リスト格納部120に、外部装置200から与えられる順位リスト設定コマンドに基づいて、セキュリティ強度順位リストLを新規設定もしくは更新設定する機能をもたせた点である。セキュリティ強度順位リストLは、初期段階(たとえば、情報処理装置100を構成するSIMカード11の工場出荷段階)において、予め順位リスト格納部120に書き込んでおくことも可能であるが、ユーザの手に渡った後にも、必要に応じて更新できるようにしておく方が好ましい。
図9に示す変形例では、外部装置200から順位リスト設定コマンドを与えることにより、セキュリティ強度順位リストLの初期設定が可能であるので、セキュリティ強度順位リストLは、必ずしも工場出荷段階で書き込んでおく必要はない。また、必要に応じて、順位リスト設定コマンドを与えることにより、リストLに新たな暗号アルゴリズムを追加することもできるし、順位を変更することもできるし、リストLから特定の暗号アルゴリズムを削除することもできる。このため、ユーザの手に渡った後も、柔軟な対応が可能になる。
<4−2. 複数の管理プログラムを用いた例>
§2で述べたとおり、SIMカード11等のICカードを情報処理装置100として用いる場合、図6に示す暗号通信処理部110,順位リスト格納部120,デフォルト情報設定部130,暗号鍵書込処理部140,鍵テーブル格納部150といった構成要素は、実際には、図2に示す管理プログラムSD(および必要に応じて、OSプログラムの一部のルーチン)によって構築される構成要素になる。しかも、一般的なICカードには、複数の管理プログラムSDが階層構造をもって組み込まれるのが一般的である。そこで、ここでは、複数の管理プログラムSDが組み込まれた情報処理装置に本発明を適用した場合の実施例を述べておく。
図10は、SIMカード11(情報処理装置100)内に構築されるアプリケーションプログラムの階層構造を示す図である。この図において、階層構造の最上位に配置されているISD(Issuer Security Domain)は、発行者SDと呼ばれる管理プログラムであり、このSIMカード11の工場出荷時に書込まれるプログラムである。図示の例の場合、このISDの下位にSSD1,SSD2,AP01,AP02なるプログラムが配置されており、更に、SSD1の下位にAP11,AP12が配置され、SSD2の下位にSSD3,AP21,AP22,AP23が配置され、更に、SSD3の下位にAP31,AP32が配置されている。
この図10にブロックで示されている各プログラムは、いずれもSIMカード11(情報処理装置100)内に組み込まれているアプリケーションプログラムである。ここで、SSD1,SSD2,SSD3(Supplemental Security Domain)は、ISDと同様に管理プログラムであるが、ISDが、工場出荷時に書込まれる最上位の管理プログラムであるのに対して、SSD1,SSD2,SSD3は、ISDもしくは別なSSDの下位に配置されるプログラムになる。
前述したように、管理プログラムも、アプリケーションプログラムの1つであることに変わりはないが、階層構造上、自己の下位に別なアプリケーションプログラム(一般アプリケーションプログラムであってもよいし、別な管理プログラムであってもよい)を配置して管理下におくことができる。したがって、図示の例の場合、管理プログラムSSD1の下位には、2組の一般アプリケーションプログラムAP11,AP12が配置されているだけであるが、管理プログラムSSD2の下位には、1組の別な管理プログラムSSD3と3組の一般アプリケーションプログラムAP21,AP22,AP23が配置され、更に、管理プログラムSSD3の下位には、2組の一般アプリケーションプログラムAP31,AP32が配置されている。
なお、前述したとおり、GlobalPlatform(登録商標)の仕様では、外部装置200から情報処理装置100に対して暗号鍵を書き込むための書込コマンドやそのレスポンスは、暗号化した状態でやりとりされる。このため、下位の管理プログラムについて、最初の暗号鍵を登録する場合は、その上位の管理プログラムが開設した暗号通信路が利用されることになる。たとえば、図10に示す例の場合、管理プログラムSSD3について、最初の暗号鍵を登録する場合は、その上位の管理プログラムSSD2が開設した暗号通信路が利用され、管理プログラムSSD2について、最初の暗号鍵を登録する場合は、その上位の管理プログラムISDが開設した暗号通信路が利用される。最上位の管理プログラムISDについては、工場出荷時に最初の暗号鍵が登録されている。
図11は、図10に示すSIMカード11(情報処理装置100)内のプログラム構成を示すブロック図である。図示のとおり、この情報処理装置100には、OSプログラムの他に、4組の管理プログラムISD,SSD1,SSD2,SSD3と、9組の一般アプリケーションプログラムAP01〜AP32がインストールされている。
各管理プログラムISD,SSD1,SSD2,SSD3には、それぞれ管理下となるアプリケーションプログラムについてのロード機能、インストール機能、削除機能などの様々な機能が備わっているが、本発明に直接関連する機能は、暗号通信路開設機能および暗号通信に必要な暗号鍵を書き込むためのデータ書込機能である。管理プログラムによっては、特定の機能を欠いている場合もあるが、ここでは、少なくとも、管理プログラムSSD1およびSSD2が、暗号通信路開設機能および暗号通信に必要な暗号鍵を書き込むためのデータ書込機能を備えているものとして、これら2組の管理プログラムSSD1,SSD2によって、本発明に係る情報処理装置100の各構成要素110〜150がどのように構築されるかを考えてみよう。
図12は、複数の管理プログラムSSD1,SSD2が組み込まれた実施形態に係る情報処理装置100の構成を示すブロック図である。図示の例の場合、第1の管理プログラムSSD1および必要に応じてOSプログラムの一部によって、暗号通信処理部110A,順位リスト格納部120A,デフォルト情報設定部130A,暗号鍵書込処理部140A,鍵テーブル格納部150Aが構築されており、これらによって第1の機能部100A(上段の一点鎖線内のブロック)が構成される。同様に、第2の管理プログラムSSD2および必要に応じてOSプログラムの一部によって、暗号通信処理部110B,順位リスト格納部120B,デフォルト情報設定部130B,暗号鍵書込処理部140B,鍵テーブル格納部150Bが構築されており、これらによって第2の機能部100B(下段の一点鎖線内のブロック)が構成される。
なお、図10の階層構造に示すとおり、GlobalPlatform (登録商標)の仕様では、最上位階層の管理プログラムとして、管理プログラムISDの存在が必須になっている。したがって、図12に示す情報処理装置100には、管理プログラムISDも組み込まれており、管理プログラムISDに基づく機能部も構築されていることになるが、ここでは便宜上、この管理プログラムISDに基づく機能部についての図示は省略する。
図12に示す第1の機能部100Aおよび第2の機能部100Bは独立した機能部であり、それぞれが、§2,§3で述べた本発明に係る情報処理装置100としての機能を備えている。したがって、外部装置200から、第1の機能部100Aに対して何らかのコマンドを与えると、当該コマンドは第1の機能部100Aの各構成要素によって処理され、レスポンスが返される。同様に、外部装置200から、第2の機能部100Bに対して何らかのコマンドを与えると、当該コマンドは第2の機能部100Bの各構成要素によって処理され、レスポンスが返される。もちろん、与えるコマンドが、暗号通信路開設コマンドであれば、当該コマンドに基づいて、それぞれの機能部100A,100Bが別個独立した暗号通信路を開設することになる。
一般的なICカードには、複数の管理プログラムを含めて多数のアプリケーションプログラムが組み込まれることになる。このため、外部装置からICカードに対してコマンドを送信する場合、当該コマンドがどのアプリケーションプログラム宛のコマンドであるのかを指定する必要がある。GlobalPlatform (登録商標)の仕様では、チャネル番号を用いて、各コマンドの宛先を指定する方法が採られている。
図13は、GlobalPlatform (登録商標)の仕様に準拠したICカードに与えるいくつかの具体的なコマンドの書式例を示す図である。ここでは、これら各コマンドの書式および当該コマンドに応じてICカード(情報処理装置100)側で実行される処理内容について簡単に説明をしておく。なお、図13に示す各コマンド書式のデータ構造は、一部の情報のみを抽出した概念的なデータ構造であり、実際のデータ構造それ自体を示すものではない。
図13(a) に示す「アプリケーション選択コマンド」は、図5のダイアグラムのステップS1で用いられているコマンドであり、特定のチャネル番号を指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。図示のとおり「SELECT (#n)+アプリ名」というデータ構造を有し、チャネル番号#nを指定して、「アプリ名」で特定されるアプリケーションプログラムを選択するためのコマンドである。
チャネル番号#nは、外部装置200から情報処理装置100に対してコマンドを与える際に、当該コマンドがどのアプリケーションプログラム宛のコマンドであるかを識別させるために用いられる。情報処理装置100には、複数のアプリケーションプログラムが格納されているため、外部装置200から与えるコマンドのそれぞれにチャネル番号#nを付加して識別できるようにする必要がある。「アプリケーション選択コマンド」は、特定のアプリケーションプログラムに特定のチャネル番号#nを対応づけるための初期設定を行う役割を果たす。
たとえば、図12に示す情報処理装置100に対して、「SELECT (#3)+SSD1」というアプリケーション選択コマンドを与えると、管理プログラムSSD1がチャネル番号#3に対応づけられる。具体的には、当該コマンドを受信した情報処理装置100内のOSプログラムによって、管理プログラムSSD1がチャネル番号#3に対応づけられた旨の記録が行われる。以後、チャネル番号#3が付与されたコマンドは、すべて管理プログラムSSD1宛のコマンドとして取り扱われ、管理プログラムSSD1によって実行されることになる。
このように、「アプリケーション選択コマンド」は、特定のアプリケーションプログラムを特定のチャネル番号#nに対応づけるためのコマンドである。図13(b) 〜(d) に示す各コマンドにおいてもチャネル番号#nが指定されるが、上例の場合、チャネル番号#3を指定しておけば、管理プログラムSSD1によって処理されることになる。
図13(b) に示す「暗号通信路開設コマンド」は、既に図4(b) において説明したものであり、図5のダイアグラムのステップS3で用いられている。図4(b) および図5では、説明の便宜上、チャネル番号#nを省略した書式を示したが、実際には、図13(b) に示すとおり、特定のチャネル番号#n(図13(a) に示す「アプリケーション選択コマンド」によって選択した番号)を含んだ書式が採られる。この暗号通信路開設コマンドは、図示のとおり、「INITIALIZE UPDATE (#n)+パラメータ」というデータ構造を有し、チャネル番号#nで指定される管理プログラムに対して、暗号通信路を開設する指示を与えるとともに、外部装置200が、情報処理装置100を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。ここでは、チャネル番号#3を指定することにより、管理プログラムSSD1が選択された場合について以下の説明を行う。
前述したとおり、この暗号通信路開設コマンドには、パラメータとして、キーバージョン番号および乱数が付加されている。ここでは、チャネル番号#3によって管理プログラムSSD1が選択されているため、当該コマンドは、図12の第1の機能部100A内の暗号通信処理部110Aに引き渡される。暗号通信処理部110Aは、鍵テーブル格納部150Aに格納されている鍵テーブルTAからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号アルゴリズムを用いて、外部装置200との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対するレスポンスとして返信する。以下、チャネル番号#3が指定されたコマンドに基づく通信は、この暗号通信路を介して行われることになる。
一方、図13(c) に示す「外部認証コマンド」は、チャネル番号#nで指定される管理プログラムが、現在通信を行っている外部装置200を正規の交信相手として認証するためのコマンドであり、図5のダイアグラムのステップS4で用いられている。上述したとおり、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」は、暗号通信路を開設する指示を与えるとともに、外部装置200が、情報処理装置100を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。外部装置200は、当該レスポンスが正当なものであれば、情報処理装置100を正規の交信相手と判断する。
これに対して、図13(c) に示す外部認証コマンドは、図示のとおり、「EXTERNAL AUTHENTICATE (#n)+ホスト認証コード」というデータ構造を有し、チャネル番号#nを指定して、外部装置200を正規の交信相手として認証するためのホスト認証コードが付加されている。情報処理装置100(実際には、チャネル番号#nで指定された特定の管理プログラム)は、当該ホスト認証コードが正当なものであれば、外部装置200を正規の交信相手と判断する。このように、外部認証コマンドは、暗号通信路開設コマンドに続いて与えられるコマンドであり、両者によって、情報処理装置100と外部装置200との間に相互認証が行われることになる。
最後に、図13(d) に示す「アプリケーション向け発行データの書込コマンド」について説明する。このコマンドは、これまで述べてきた実施例において、暗号鍵書込処理部140に対して与えられる書込コマンドに相当するものであり、本発明においては、鍵テーブルTに新たな暗号鍵を書き込む際に利用される。
図13(d) には、このような暗号鍵の書込みが可能な2通りの書込コマンドが示されている。書込コマンドその1は、発行データを書込むための汎用の書込コマンドであり、「STORE DATA (#n)+発行データ」というデータ構造を有し、チャネル番号#nを指定して、「発行データ」の部分のデータを発行データとして書込む旨の指示を伝えるコマンドになる。このコマンドは、管理プログラムのみならず、一般アプリケーションプログラムに対しても与えることができる汎用コマンドである。たとえば、クレジット決済機能をもったアプリケーションプログラムに対して与えれば、「発行データ」としてクレジットカード番号、ユーザの個人情報や決済処理に用いる鍵データなどを書込むことができる。一方、管理プログラムSDに対して与えれば、「発行データ」として鍵テーブルTに暗号鍵を書込むことができる。
一方、書込コマンドその2は、暗号鍵を書込むための専用の書込コマンドであり、「PUT KEY (#n)+鍵データ」というデータ構造を有し、チャネル番号#nを指定して、「鍵データ」の部分のデータ(これまで述べてきた暗号鍵に相当)を鍵テーブルTに書込む旨の指示を伝えるコマンドになる。図3に例示した鍵テーブルTに対しては、上述した書込コマンドその1による発行データとして暗号鍵を書込むこともできるし、書込コマンドその2による鍵データとして暗号鍵を書込むこともできる。いずれのコマンドにも、書込場所を示す情報(図3に示す鍵テーブルTの場合は、キーバージョン番号とキーID)を含ませておくようにする。
上述したように、図12に示す情報処理装置100には、複数の管理プログラムが組み込まれており、管理プログラムSSD1に基づく第1の機能部100Aと、管理プログラムSSD2に基づく第2の機能部100Bとが備わっている。そして、外部装置200からコマンドが与えられたときに、当該コマンドに含まれるプログラム選択情報(上例の場合、チャネル番号#n)に基づいて特定のプログラムの選択が行われ、選択されたプログラムによって構築された構成要素により、与えられたコマンドの処理が行われることになる。
ここでは便宜上、図12に示す情報処理装置100において、管理プログラムSSD1にはチャネル番号#3が対応づけられ、管理プログラムSSD2にはチャネル番号#4が対応づけられたものとして、以下の説明を行うことにする。
まず、管理プログラムSSD1によって構築された暗号鍵書込処理部140Aによって鍵テーブル格納部150A内の鍵テーブルTAに対して、新たな暗号鍵を書き込む場合を考えてみる。この場合、外部装置200から情報処理装置100に対して、チャネル番号#3を含む書込コマンドを与えることになる。このとき、デフォルト情報設定部130Aは、順位リスト格納部120Aに格納されているセキュリティ強度順位リストLAを参照して、書込対象となる暗号鍵がデフォルト暗号鍵としての採用条件を満たしているか否かを確認し、当該採用条件を満たしていることを前提として、必要に応じて、書込対象となる暗号鍵をデフォルト暗号鍵として設定する。なお、基準順位Eを用いる実施形態を採る場合は、管理プログラムSSD1のインストール時にデフォルト情報設定部130A内に個別基準順位EAの設定が行われるようにするか、基準順位設定コマンドによって設定を行うようにすればよい。
また、外部装置200から情報処理装置100に対して、チャネル番号#3を含む暗号通信路開設コマンドが与えられた場合、暗号通信処理部110Aによって、鍵テーブル格納部150Aに格納されている特定の暗号鍵を用いて暗号通信路の開設が行われる。このとき、暗号通信路開設コマンドに暗号鍵指定情報が含まれていなかった場合は、デフォルト情報設定部130Aに設定されているデフォルト情報で特定されるデフォルト暗号鍵を用いて暗号通信路の開設が行われることになる。
一方、管理プログラムSSD2によって構築された暗号鍵書込処理部140Bによって鍵テーブル格納部150B内の鍵テーブルTBに対して、新たな暗号鍵を書き込む場合は、外部装置200から情報処理装置100に対して、チャネル番号#4を含む書込コマンドを与えることになる。このとき、デフォルト情報設定部130Bは、順位リスト格納部120Bに格納されているセキュリティ強度順位リストLBを参照して、書込対象となる暗号鍵がデフォルト暗号鍵としての採用条件を満たしているか否かを確認し、当該採用条件を満たしていることを前提として、書込対象となる暗号鍵をデフォルト暗号鍵として設定する。ここでも、基準順位Eを用いる実施形態を採る場合は、管理プログラムSSD2のインストール時にデフォルト情報設定部130B内に個別基準順位EBの設定が行われるようにするか、基準順位設定コマンドによって設定を行うようにすればよい。
また、外部装置200から情報処理装置100に対して、チャネル番号#4を含む暗号通信路開設コマンドが与えられた場合、暗号通信処理部110Bによって、鍵テーブル格納部150Bに格納されている特定の暗号鍵を用いて暗号通信路の開設が行われる。このとき、暗号通信路開設コマンドに暗号鍵指定情報が含まれていなかった場合は、デフォルト情報設定部130Bに設定されているデフォルト情報で特定されるデフォルト暗号鍵を用いて暗号通信路の開設が行われることになる。
結局、図12に示されている第1の機能部100Aおよび第2の機能部100Bは、それぞれ別個独立した動作を行うことになるので、鍵テーブルT,デフォルト情報D,基準順位E,セキュリティ強度順位リストLも、基本的には、それぞれ別個独立して設定する必要がある。
もっとも、セキュリティ強度順位リストLについては、両者についての共通リストを用意しておき、この共通リストを複数の管理プログラムによって共用するようにしてもかまわない。これは、セキュリティ強度順位リストLが、複数の暗号アルゴリズムのセキュリティ強度についての客観的な評価に基づいて順位を定めたリストであるため、普遍性を有するリストになっているためである。同様に、基準順位Eも共通のものを利用することができる。
図12に示す情報処理装置100の場合、複数の管理プログラムによって共通して利用することができる共通セキュリティ強度順位リストLLを格納するための共通順位リスト格納部101が設けられている。図示の例の場合、共通セキュリティ強度順位リストLLは、管理プログラムSSD1によって利用することもできるし、管理プログラムSSD2によって利用することもできる。もちろん、3組以上の管理プログラムが組み込まれていた場合は、これらすべての管理プログラムによって利用することが可能である。そのため、共通順位リスト格納部101は、たとえば、OSプログラムの管理下に設けたり、最上位階層の管理プログラムISDの管理下に設けたりしておくのが好ましい。共通セキュリティ強度順位リストLLは、情報処理装置100の工場出荷時に書き込んでしまうこともできるし、ユーザの手に渡った後に、外部装置200から順位リスト設定コマンド(たとえば、図9参照)を与えて書き込むようにしてもよい。
図12に示す例の場合、管理プログラムSSD1およびSSD2は、共通セキュリティ強度順位リストLLを利用することができるので、個別の順位リスト格納部120A,120Bは省略してしまってもかまわない。ただ、実用上は、図示のとおり、個別の順位リスト格納部120A,120Bをそれぞれ設けておき、それぞれに個別セキュリティ強度順位リストLA,LBを格納するようにし、共通セキュリティ強度順位リストLLは、個別セキュリティ強度順位リストLA,LBを作成する際の雛形として利用するような運用が好ましい。
このように、個別セキュリティ強度順位リストLA,LBを用意した運用が好ましい第1の理由は、GlobalPlatform (登録商標)の仕様に準拠したICカードの場合、異なるプログラムが管理するリストにアクセスする際には、特別な手続が必要になるので、処理手順を簡略化するためには、個別の管理プログラムが自分自身の管理下にあるリストをアクセスするようにした方が手順を簡略化できるためである。
そして、第2の理由は、共通セキュリティ強度順位リストLLは、あらゆる管理プログラムに対応できるように、多くの暗号プログラムを網羅したリストにせざるを得ないため、個々の管理プログラムが利用するには冗長になりすぎるためである。通常、個々の管理プログラムごとに、それぞれサポートしている暗号アルゴリズムは異なり、個々の管理プログラムが参照するリストには、当該管理プログラムがサポートしている暗号アルゴリズムのみが掲載されていれば足りる。
そこで、図12に示す実施形態の場合、複数の管理プログラムに共通して利用される共通セキュリティ強度順位リストLLを格納した共通順位リスト格納部101を設けるとともに、個々の管理プログラムSSD1,SSD2によって構築される個別の順位リスト格納部120A,120Bが、この共通セキュリティ強度順位リストLLの情報を取捨選択して個別セキュリティ強度順位リストLA,LBを作成する機能を有するようにしている。個々の管理プログラムSSD1,SSD2によって構築される個別のデフォルト情報設定部130A,130Bは、それぞれに対応する個別セキュリティ強度順位リストLA,LBを用いて、採用条件を満たしているか否かを確認する処理を行うことになる。
図14は、図12に示す実施形態において、共通セキュリティ強度順位リストLLから個別セキュリティ強度順位リストLAを作成する手順を示す図である。図示の例の場合、図の左側に示す共通セキュリティ強度順位リストLLには、第1順位L1にランクされた暗号アルゴリズム1から、第8順位L8にランクされた暗号アルゴリズム8までが掲載されている。もちろん、複数の暗号アルゴリズムが同順位にランクされたリストを用いてもかまわない。
一方、図の右側に示す個別セキュリティ強度順位リストLAは、左側に示す共通セキュリティ強度順位リストLLの情報から、暗号アルゴリズム2,5,7のみを抽出して作成したものである。これら抽出された暗号アルゴリズム2,5,7の相互間の順位は、元の共通セキュリティ強度順位リストLL上での順位をそのまま踏襲しているため、第1順位L1に暗号アルゴリズム2,第2順位L2に暗号アルゴリズム5,第3順位L3に暗号アルゴリズム7がランクされた結果になっている。
このように、共通セキュリティ強度順位リストLLの情報を取捨選択して個別セキュリティ強度順位リストLAを作成する手法を採用すれば、管理プログラムSSD1が情報処理装置100にインストールされ、初めて起動されたときに、管理プログラムSSD1によって構築される順位リスト格納部120A自身が、図14に例示する取捨選択プロセスを実行することにより、個別セキュリティ強度順位リストLAを自動的に作成することができる。ここで取捨選択は、「暗号通信処理部110Aがサポートしている暗号アルゴリズムのみを抽出する」という方針で行えばよい。
通常、暗号通信処理部110Aがサポートする暗号アルゴリズムは、管理プログラムSSD1をインストールする時点で決定される。そこで、たとえば、このインストール時点で、暗号アルゴリズム2,5,7に対応する旨の決定がなされた場合は、図14に示す例のように、暗号アルゴリズム2,5,7のみを抽出して個別セキュリティ強度順位リストLAを作成すればよい。もちろん、管理プログラムSSD2のインストール時には、管理プログラムSSD2がサポートする暗号アルゴリズムが決定されるので、順位リスト格納部120Bは、管理プログラムSSD2がサポートする暗号アルゴリズムのみを抽出して個別セキュリティ強度順位リストLBを作成することができる。
このように、予め共通セキュリティ強度順位リストLLを用意しておけば、個々の管理プログラムによって、それぞれ自己が利用する個別セキュリティ強度順位リストを自動的に作成することが可能になる。もちろん、個別セキュリティ強度順位リストは、必ずしも共通セキュリティ強度順位リストLLに基づいて作成する必要はなく、外部装置200から順位リスト設定コマンド(たとえば、図9参照)を与えて書き込むようにしてもよいし、各管理プログラムSSD1,SSD2をインストールする際に書き込まれるようにしてもよい。ただ、上述した手法によって共通セキュリティ強度順位リストLLから自動的に作成するようにしておけば、個別セキュリティ強度順位リストを設定する手間を省くことができる。
なお、基準順位Eを用いる実施形態を採る場合は、デフォルト情報設定部130A,130Bのそれぞれに個別の基準順位EA,EBを設定することも可能であるが、OSプログラムや最上位階層の管理プログラムISDの管理下に共通基準順位EEを設定しておき、各管理プログラムSSD1,SSD2が、この共通基準順位EEを参照して、採用条件の判定処理を行うようにしてもよい。あるいは、この共通基準順位EEを参照することにより、各管理プログラムSSD1,SSD2についての個別基準順位EA,EBを自動設定するようにしてもよい。
<4−3. 暗号化プロトコルの順位リストを用いた例>
これまで、複数通りの暗号アルゴリズムについてのセキュリティ強度の順位を示すセキュリティ強度順位リストを用いて、デフォルト暗号鍵としての採用条件が満たされているか否かを判断する実施例を述べてきた。ここでは、その変形例として、順位リスト格納部120に、各暗号アルゴリズムについてのセキュリティ強度の順位を示すリストに代えて、各暗号アルゴリズムを利用して実行される暗号処理の具体的な手順を定める暗号化プロトコルについてのセキュリティ強度の順位を示すリストをセキュリティ強度順位リストとして格納する実施例を述べる。
ここでは、まず、本願における「暗号アルゴリズム」と「暗号化プロトコル」との違いを明確にしておく。図15は、各暗号化プロトコルに用いられるコマンド文字列情報と暗号アルゴリズムの種別情報との対応関係を示す表である。ここで、表の各欄に示すSCP01,SCP02,SCP03,SCP10,SCP80,SCP81などの文字列は、個々の暗号化プロトコルを特定する情報(通常、SCP種別と呼ばれている)である。また、表の縦見出しは、各暗号化プロトコルが用いる暗号アルゴリズムの種別を示し、表の横見出しは、各暗号化プロトコルに用いられるコマンド文字列情報を示している。
たとえば、「INITIALIZE UPDATE」なるコマンド文字列は、図4(b) に示す暗号通信路開設コマンドCMDに用いられているコマンド文字列であるが、当該文字列は、暗号化プロトコルSCP01,SCP02,SCP03において採用されている文字列であり、別な暗号化プロトコルでは、別なコマンド文字列が用いられる。なお、この表における「SCPxx」は、現時点では、GlobalPlatform (登録商標)による仕様化はなされていないが、今後、策定される可能性のある暗号化プロトコルを示している。
この図15の表を見ればわかるとおり、同じ暗号アルゴリズムを採用していても、当該暗号アルゴリズムを利用して実行される暗号処理の具体的な手順が異なれば、異なる暗号化プロトコルということになる。たとえば、同じ「AES」という暗号アルゴリズムを採用していても、SCP03とSCP81とは、異なる暗号化プロトコルであり、セキュリティ強度にも差が生じることになる。したがって、各暗号アルゴリズムについてのセキュリティ強度の順位を示すリストに代えて、各暗号アルゴリズムを利用して実行される暗号処理の具体的な手順を定める暗号化プロトコルについてのセキュリティ強度の順位を示すリストをセキュリティ強度順位リストとして用意すれば、より細かな順位設定が可能になる。
図16は、暗号化プロトコルについてのセキュリティ強度の順位を示すセキュリティ強度順位リストL′の具体例を示す図である。このリストL′に掲載されているSCP03(AES),SCP81(AES),SCP80(Triple-DES),SCP02(Triple-DES),SCP01(Triple-DES)は、それぞれ固有の暗号化プロトコルを示しており、括弧内には、当該暗号化プロトコルが採用する暗号アルゴリズムが記載されている。
このリストL′では、同じ暗号アルゴリズムを採用する暗号化プロトコルに対して、異なる順位が付与されている。たとえば、第1順位L1にランクされているSCP03(AES)と第2順位L2にランクされているSCP81(AES)とは、同じ暗号アルゴリズム「AES」を採用するプロトコルであるが、セキュリティ強度の順位は異なっている。同様に、同じ暗号アルゴリズム「Triple-DES」を採用するプロトコルであっても、SCP80(Triple-DES)およびSCP02(Triple-DES)と、SCP01(Triple-DES)とは、異なる順位にランクされている。なお、このセキュリティ強度順位リストL′においても、同一順位に複数の暗号化プロトコルをランクさせることが可能であり、SCP80(Triple-DES)およびSCP02(Triple-DES)は、いずれも同じ第3順位L3にランクされている。
図6に示す基本的な実施形態において、順位リスト格納部120内に格納するセキュリティ強度順位リストとして、図16に示すような暗号化プロトコルについての順位リストL′を用いるようにした場合、デフォルト暗号鍵の採用条件の判定は、暗号アルゴリズムの順位ではなく、暗号化プロトコルの順位に基づいて行う必要がある。したがって、この場合、暗号鍵書込処理部140には、外部装置200から与えられる書込コマンドに基づいて、鍵テーブルTに新たな暗号鍵を書き込む暗号鍵書込処理を実行するときに、書込対象となる暗号鍵を利用して実行される暗号化プロトコルを認識する機能をもたせておくようにし、デフォルト情報設定部130が、書込対象となる暗号鍵についての暗号アルゴリズムの順位に代えて、暗号化プロトコルの順位を用いて採用条件を満たしているか否かの確認を行うようにすればよい。
GlobalPlatform (登録商標)の仕様に準拠した暗号鍵Keyには、図4(a) に示すように、暗号アルゴリズムを示す種別情報Aが含まれているので、この種別情報Aを参照することにより、書込対象となる暗号鍵についての暗号アルゴリズムを認識することができる。しかしながら、暗号鍵Keyには、暗号化プロトコルを示す情報は含まれていないので、暗号鍵書込処理部140が、書込対象となる暗号鍵について、当該暗号鍵を利用して実行される暗号化プロトコルを認識するためには、若干の工夫が必要になる。
このような工夫としては、たとえば、特願2015−168868に開示されている手法を利用することが可能である。当該手法では、図17(a) に示すように、ゾーン設定された鍵テーブルT′が利用される。図17(a) に示す鍵テーブルT′は、基本的には、図3に示す鍵テーブルTと同じものであり、縦方向にキーバージョン番号(key version number)、横方向にキーID(key ID)を定義したマトリックスによって構成されている。
ただ、図17(a) に示す鍵テーブルT′には、N個の格納ゾーンZ1〜ZNが設定されている。各格納ゾーンは、図のマトリックスにおける1行もしくは複数行の領域によって構成される。たとえば、第1番目の格納ゾーンZ1は、キーバージョン番号「0x01」で特定される1行分のゾーンであり、第i番目の格納ゾーンZiは、キーバージョン番号「0x20〜0x22」で特定される3行分のゾーンであり、第N番目の格納ゾーンZNは、キーバージョン番号「0x7E〜0x7F」で特定される2行分のゾーンである。
こうして、N個の格納ゾーンを設定したら、これらN個の格納ゾーンZ1〜ZNを、それぞれ暗号通信処理部110がサポートしているN通りの暗号化プロトコルP1〜PNに対応づける。そして、第i番目(1≦i≦N)の格納ゾーンZiに所属する格納場所には、第i番目の暗号化プロトコルPiに用いる暗号鍵を格納する。図17(b) は、このようなゾーン設定の結果をまとめた表であり、たとえば、暗号通信処理部110内やデフォルト情報設定部130内に格納しておくようにする。
図示のとおり、第1番目の格納ゾーンZ1は、キーバージョン番号の数値範囲「0x01」で特定される1行分のゾーンであり、第1番目の暗号化プロトコルP1が対応づけられている。図17(a) に示す例では、この格納ゾーンZ1に暗号鍵KeyA〜KeyCが格納されているが、これらの暗号鍵はいずれも第1番目の暗号化プロトコルP1に用いる暗号鍵ということになる。
同様に、第i番目の格納ゾーンZiは、キーバージョン番号の数値範囲「0x20〜0x22」で特定される3行分のゾーンであり、第i番目の暗号化プロトコルPiが対応づけられている。図17(a) に示す例では、この格納ゾーンZiに暗号鍵KeyD〜KeyLが格納されているが、これらの暗号鍵はいずれも第i番目の暗号化プロトコルPiに用いる暗号鍵ということになる。また、第N番目の格納ゾーンZNは、キーバージョン番号の数値範囲「0x7E〜0x7F」で特定される2行分のゾーンであり、第N番目の暗号化プロトコルPNが対応づけられている。図17(a) に示す例では、この格納ゾーンZNに暗号鍵KeyM〜KeyRが格納されているが、これらの暗号鍵はいずれも第N番目の暗号化プロトコルPNに用いる暗号鍵ということになる。
鍵テーブルT′上に上述のようなゾーン設定を行えば、キーバージョン番号が特定されれば格納ゾーンが定まり、格納ゾーンが定まれば、対応づけられた暗号化プロトコルが定まることになる。すなわち、キーバージョン番号は、用いる暗号鍵を指定する暗号鍵指定情報としての役割を果たすだけでなく、用いる暗号化プロトコルを指定するプロトコル指定情報としての役割も兼ねることになる。これは、暗号通信路開設コマンドCMDによってキーバージョン番号を指定すれば、暗号化プロトコルの指定も併せて行うことができることを意味する。新たな暗号鍵についての書込コマンドにおいてキーバージョン番号が指定された場合も同様である。
したがって、図6に示す情報処理装置100において、新たな暗号鍵についての書込コマンドを受信した暗号鍵書込処理部140は、当該書込コマンドにおいて書込場所として指定されるキーバージョン番号によって、書込対象となる暗号鍵について、当該暗号鍵を利用して実行される暗号化プロトコルを認識することが可能になる。そこで、デフォルト情報設定部130は、認識された暗号化プロトコルの順位を、図16に示すようなセキュリティ強度順位リストL′上で確認し、当該暗号鍵をデフォルト暗号鍵として採用するための採用条件が満たされているか否かの判定を行うことができる。
もちろん、暗号化プロトコルを認識する方法は、図17に示すゾーン設定の方法に限定されるものではなく、この他にも任意の方法を採用することが可能である。
<4−4. デフォルト情報の更新>
最後に、デフォルト情報設定部130に設定されているデフォルト情報Dを更新する変形例を述べる。§3−3では、第3の個別実施形態として、暗号鍵が新たに書き込まれた場合に、逐次、デフォルト情報Dを更新し、デフォルト暗号鍵をより順位の高い暗号鍵に変更してゆく実施形態を述べた。このようなデフォルト情報Dの更新は、デフォルト暗号鍵のセキュリティ強度を低下させる何らかの要因が発生した場合にも有効である。
たとえば、デフォルト暗号鍵を利用して開設された暗号通信路を用いて通信を行っている最中に、クラッカーによる不正な攻撃を受けたとすると、当該暗号通信路のセキュリティ強度は低下せざるを得ない。したがって、今後も、同じ暗号通信路を利用し続けることは危険であり、当該暗号通信路の開設に利用されたデフォルト暗号鍵のセキュリティ強度は、セキュリティ強度順位リストL上の順位にかかわらず、現実の利用環境下では低下したと判断せざるを得ない。このような場合、別な暗号鍵を新たなデフォルト暗号鍵とするデフォルト情報の更新を行うのが好ましい。
最近は、暗号通信路に対する攻撃などを検知する様々な手法が開発されており、これらの手法を利用することにより、暗号通信路に対するセキュリティ脅威を検知することが可能である。そこで、デフォルト情報設定部130に、開設された暗号通信路に対するセキュリティ脅威を検知する機能をもたせておき、現デフォルト情報によって特定される現デフォルト暗号鍵を利用して開設中の暗号通信路に対するセキュリティ脅威が所定の警戒レベル以上となったとき(たとえば、アタックの回数が所定の回数以上となったとき)に、デフォルト情報Dの更新設定を行わせるようにすれば、このようなセキュリティ脅威を回避することができる。
デフォルト情報Dの更新により新たなデフォルト暗号鍵として設定される暗号鍵としては、既に鍵テーブルTに書き込まれている任意の暗号鍵を選択すればよいが、実用上は、できるだけ現デフォルト暗号鍵のセキュリティ強度と同等の強度をもった暗号鍵を新デフォルト暗号鍵に設定するのが好ましい。これは、本発明が、セキュリティ強度の低い暗号鍵がデフォルト暗号鍵に設定されることを極力避ける、という考えに基づくためである。そのためには、セキュリティ強度順位リストL上での順位が、現デフォルト暗号鍵に関する順位に近い別な暗号鍵(たとえば、現デフォルト暗号鍵と同順位の暗号鍵があれば当該暗号鍵、同順位がなければ、よりランクが上の順位の暗号鍵、すなわち、少なくとも同順位以上の暗号鍵)を新たなデフォルト暗号鍵とするデフォルト情報の更新設定を行うようにすればよい。なお、デフォルト暗号鍵が変更された場合、「INITIALIZE UPDATE」コマンドのレスポンスデータに新たなデフォルト暗号鍵を示す情報(キーバージョン番号)が含まれているので、外部装置は新たなデフォルト暗号鍵を知ることができる。
もちろん、外部装置200からのコマンドによって、デフォルト暗号鍵を直接変更できるようにしてもよい。この場合は、デフォルト情報設定部130に、外部装置200から与えられるデフォルト情報設定コマンドに基づいて、デフォルト情報を新規設定もしくは更新設定する機能をもたせておけばよい。