説明

通信制御方法、通信制御プログラムおよび情報処理装置

【課題】複数の情報処理装置の各々でアプリケーションプログラムが実行される場合に、両者間の認証を速やかにかつ確実に行なうことができる通信制御方法、通信制御プログラムおよび情報処理装置を提供する。
【解決手段】接続依頼元は、認証指示メッセージに従って、入力データをアプリケーション1に入力し(ステップS6)、処理指示に従って処理を実行する(ステップS8)。そして、接続依頼元は、認証指示メッセージに含まれる計算エリア指定指示に従い、メモリ上の特定位置の値を抽出し、特定識別値を生成する(ステップS10)。接続依頼元は、特定識別値に自己の署名を施して暗号識別値を生成する(ステップS12)。接続依頼先は、接続依頼元の特定識別値と、自己の生成した特定識別値とを比較し(ステップS26)、両者の一致/不一致に基づいて、接続許否を判定する(ステップS28)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信制御方法、通信制御プログラムおよび情報処理装置に関し、特に、通信相手先との接続の許否を安全に決定する方法に関する。
【背景技術】
【0002】
一般的に、ユーザが、ある情報処理装置において、あるアプリケーションプログラムを実行させて、他のアプリケーションプログラムを実行する他の情報処理装置との間で通信を行なう場合、アプリケーションプログラム間の通信が安全になされることが望まれる。なぜなら、通信相手のアプリケーションプログラム(上記した他のアプリケーションプログラム)が違法に改造されていたり、あるいは接続の保証がされていない悪意のあるアプリケーションプログラムであったりした場合、当該ユーザが利用するある情報処理装置からの情報漏洩のおそれが生じるからである。
【0003】
情報処理装置で実行されるアプリケーションプログラムの正当性を検証する手法としては、特開2006−203564号公報(特許文献1)および特表2004−509392号公報(特許文献2)などが開示されている。
【0004】
特開2006−203564号公報(特許文献1)は、サーバから送出されたプログラムをノードが実行し、実行したプログラムおよびそのプログラムの実行結果を含む結果情報をサーバに送り返すグリッドコンピューティングシステムを開示している。このシステムでは、ノードが結果情報をサーバに送り返す際に、実行後のプログラムのハッシュ値を算出してサーバに送信する。サーバでは、そのノードから受信したハッシュ値と、ノードに送出したプログラム(サーバに記憶されている)から算出したハッシュ値とが比較され、これらの一致によって、ノードによって実行されたプログラムが改ざんされたものではないことが検証されている。
【0005】
特表2004−509392号公報(特許文献2)は、ソフトウェア・モジュールのP2P(ピア・ツー・ピア)認証のために、ソフトウェア・モジュールが占有する保護されたアドレス範囲内のコードの完全性を検証するステップと、そのモジュールによって実行される関数呼出しが、前記範囲から生じ、前記範囲にリターンすることを検証するステップが実行される構成が開示されている。
【特許文献1】特開2006−203564号公報
【特許文献2】特表2004−509392号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、特開2006−203564号公報(特許文献1)に開示された従来技術は、グリッドコンピュータシステムにおいて、サーバからプログラムを複数のノードに配布し、各ノードが対応するプログラムの実行が完了した時点で、各ノードの秘密鍵を用いて、ハッシュ関数が演算されたプログラムおよびプログラムの実行結果にデジタル署名を行なうものである。この際の正当性の検証も、アプリケーションプログラム全体が対象とされていた。つまり、プログラム全体のハッシュ値が算出され、正当性の検証に用いられていた。
【0007】
また、特表2004−509392号公報(特許文献2)に開示された従来技術は、単一マシン(情報処理装置)上での処理を対象としたものであり、ネットワーク接続された情報処理装置間での認証を対象としたものではなく、上述のような課題を解決するものではない。
【0008】
本発明は、係る実情に鑑み考え出されたものであり、その目的は、複数の情報処理装置の各々でアプリケーションプログラムが実行される場合に、両者間の認証を速やかにかつ確実に行なうことができる通信制御方法、通信制御プログラムおよび情報処理装置を提供することである。
【課題を解決するための手段】
【0009】
この発明のある局面に従えば、第1の情報処理装置と第2の情報処理装置との間での通信を制御する通信制御方法を提供する。通信制御方法は、第2の情報処理装置が、処理指示およびメモリエリア指示を含むメッセージを第1の情報処理装置へ送信するステップと、第1の情報処理装置が、第1のアプリケーションプログラムで処理指示に従って処理を実行した結果を第1のメモリに出力するステップと、第1の情報処理装置が、第1のメモリのうちメモリエリア指示の範囲にある値から第1の識別値を生成するステップと、第1の情報処理装置が、第1の識別値を第2の情報処理装置に送信するステップと、第2の情報処理装置が、第2のアプリケーションプログラムで処理指示に従って処理を実行した結果を第2のメモリに出力するステップと、第2の情報処理装置が、第2のメモリのうちメモリエリア指示の範囲にある値から第2の識別値を生成するステップと、第2の情報処理装置が、第1の情報処理装置から受信した第1の識別値を第2の識別値と比較し、第1の識別値と第2の識別値とが一致する場合に、第1の情報処理装置との接続を許可するステップとを含む。
【0010】
好ましくは、第1の情報処理装置は、第1の識別値を暗号化して第2の情報処理装置に送信し、第2の情報処理装置は、暗号化された第1の識別値を復号化した上で、第2の識別値と比較する。
【0011】
さらに好ましくは、第1の情報処理装置は、外部から読出し不可能に格納された秘密鍵と、当該秘密鍵に対応する公開鍵とを保持しており、第1の情報処理装置は、秘密鍵を用いて第1の識別値を暗号化し、第2の情報処理装置は、暗号化された第1の識別値を第1の情報処理装置の公開鍵を用いて復号化する。
【0012】
またさらに好ましくは、第1の情報処理装置は、第1の識別値を暗号化するために認証サーバに送信するとともに、認証サーバから暗号化された第1の識別値を受信し、第2の情報処理装置は、暗号化された第1の識別値を認証サーバの公開鍵を用いて復号化する。
【0013】
好ましくは、第1の情報処理装置は、第1のメモリのうちメモリエリア指示の範囲にある値を抽出し、抽出した値を特定関数に入力することで第1の識別値を生成し、第2の情報処理装置は、第2のメモリのうちメモリエリア指示の範囲にある値を抽出し、抽出した値を第1の情報処理装置と同一の特定関数に入力することで第2の識別値を生成する。
【0014】
好ましくは、メッセージは、第1および第2のアプリケーションプログラムのバージョン情報を互いに比較するための処理指示を含む。
【0015】
好ましくは、第2の情報処理装置は、第1の情報処理装置から接続要求を受けた場合に、メッセージを第1の情報処理装置へ送信し、メッセージの送信毎に、メッセージに含まれる処理指示およびメモリエリア指示の少なくとも一方を変化させる。
【0016】
この発明の別の局面に従えば、他の情報処理装置との通信を制御する通信制御プログラムを提供する。通信制御プログラムは、情報処理装置にインストールされて、情報処理装置に、処理指示およびメモリエリア指示を含むメッセージを他の情報処理装置へ送信するステップと、他の情報処理装置が第1のアプリケーションプログラムで処理指示に従って処理を実行した結果を第1のメモリに出力し、第1のメモリのうちメモリエリア指示の範囲にある値から生成された第1の識別値を受信するステップと、第2のアプリケーションプログラムで処理指示に従って処理を実行した結果を第2のメモリに出力するステップと、第2のメモリのうちメモリエリア指示の範囲にある値から第2の識別値を生成するステップと、他の情報処理装置から受信した第1の識別値を第2の識別値と比較し、第1の識別値と第2の識別値とが一致する場合に、他の情報処理装置との接続を許可するステップとを実行させる。
【0017】
この発明のさらに別の局面に従えば、他の情報処理装置との通信を制御可能な情報処理装置を提供する。情報処理装置は、処理指示およびメモリエリア指示を含むメッセージを他の情報処理装置へ送信する手段と、他の情報処理装置が第1のアプリケーションプログラムで処理指示に従って処理を実行した結果を第1のメモリに出力し、第1のメモリのうちメモリエリア指示の範囲にある値から生成された第1の識別値を受信する手段と、第2のアプリケーションプログラムで処理指示に従って処理を実行した結果を第2のメモリに出力する手段と、第2のメモリのうちメモリエリア指示の範囲にある値から第2の識別値を生成する手段と、他の情報処理装置から受信した第1の識別値を第2の識別値と比較し、第1の識別値と第2の識別値とが一致する場合に、他の情報処理装置との接続を許可する手段とを含む。
【発明の効果】
【0018】
本発明によれば、複数の情報処理装置の各々でアプリケーションプログラムが実行される場合に、両者間の認証を速やかにかつ確実に行なうことができる。
【発明を実施するための最良の形態】
【0019】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0020】
[第1の実施の形態]
<全体構成>
図1は、本発明の実施の形態に従う情報処理装置を含むネットワークの構成を模式的に示す図である。
【0021】
図1を参照して、このネットワークには、情報処理装置の代表例であるパーソナルコンピュータ(Personal Computer;以下「PC」とも称す。)200が複数含まれている。図1では、複数のPC200が、PC(1)〜PC(n)として示されている。PC200の各々は、ネットワークケーブル300を通じてハブ400と接続されている。PC200の各々は、ハブ400およびルータ500を介して、図示しない別のネットワークに接続されたPC200との接続も可能に構成されている。また、PC200の各々には、当該PC200における情報処理の結果などを表示させるためのモニタ100が接続されている。
【0022】
<ハードウェア構成>
図2は、PC200のハードウェア構成を模式的に示す図である。
【0023】
図2を参照して、PC200は、当該PC200の動作を全体的に制御するCPU(Central Processing Unit)250と、CPU250のワークエリアとして機能するRAM(Random Access Memory)254と、プログラムやデータなどを記憶するROM(Read Only Memory)256と、PC200に対して情報を入力するためのキーボードなどの入力装置260と、他のPC200または別のネットワークとの通信を行なう通信装置262と、プログラムやファイルを格納するハードディスクを有するハードディスク装置(HDD)264と、およびPC200に対して着脱可能な記憶媒体252Aとアクセスするメディアドライブ252とを含む。つまり、PC200は、入力装置260を介して入力された情報の入力を受付け、通信装置262を介して他のPC200やネットワークと接続可能であり、また、モニタ100に当該PC200において処理されている情報を表示させることができる。
【0024】
また、CPU250が実行するプログラムのファイルは、ROM256やHDD264などの内蔵の記憶媒体に記憶されていてもよいし、通信装置262を介してアクセスする外部の記憶媒体に記憶されているものであってもよい。また、HDD264のハードディスクには、メディアドライブ252を介して記憶媒体252Aに記憶されたファイルや、通信装置262を介してアクセス可能となる外部の記憶装置から取得されるファイルが記憶されて、CPU250はこのファイルを実行するように構成されていてもよい。
【0025】
CPU250が、アプリケーションプログラムを実行する際には、たとえば、HDD264のような不揮発性の記憶媒体に記憶されたアプリケーションプログラムに基づいて、RAM254にバイナリ形式のプログラムと実行動作に使用されるデータとが展開される。このようなRAM254に展開されたバイナリ形式のプログラム(以下「バイナリコード」とも称す。)は、CPU250のハードウェア構成に依存して、CPU250が直接実行することが可能な、いわゆるネイティブコードである。
【0026】
<機能構成>
図3は、PC200の機能ブロックを模式的に示す図である。
【0027】
図3を参照して、ハブ400(図1)を介してPC200へ送信されるデータは、データ受信部202において受信される。データ受信部202は受信したデータ(パケット)が、自機宛のパケットであるか否かを判断し、自機宛のデータであると判断すると、当該データをデータ解析部203に送る。データ解析部203は、受信されたパケットからデータを抽出し、抽出されたデータの中に処理命令が含まれていれば、エンコード/デコード部204、識別値作成/検証部205、その他処理部207のいずれかで処理をさせる。
【0028】
識別値作成/検証部205は、ルータ500(図1)を介して接続されている他の情報処理装置において実行されているアプリケーションプログラムとの間で通信を開始する際に、認証処理を行なう。
【0029】
より具体的には、識別値作成/検証部205は、他の情報処理装置から接続依頼メッセージを受信すると、認証指示メッセージを当該依頼元の情報処理装置へ送信するとともに、自機のアプリケーションプログラムに当該認証指示メッセージに従った演算処理を実行させる。そして、識別値作成/検証部205は、RAM254(図2)に展開されたアプリケーションプログラムのワークエリアのうち、特定の領域にある値に基づいて自己の特定識別値を生成するとともに、他の情報処理装置から受信する暗号識別値から接続依頼先の特定識別値を生成する。さらに、識別値作成/検証部205は、2つの暗号識別値が一致するか否かに基づいて、接続の許否を判断する。
【0030】
このように、特定識別値は、アプリケーションプログラム間で接続の許否を判断するために用いられるデータであり、第三者による改ざんなどを防止するために、本発明に係る通信制御方法では、認証処理毎にその値が動的に変化するように構成される。また、暗号識別値は、ある特定識別値の送信元が特定の情報処理装置であることの正当性を確認するために暗号化された値であり、後述するように、送信元の情報処理装置によるデジタル署名(以下単に「署名」とも称す。)から生成される。なお、特定識別値は、認証処理毎にその値が動的に変化するため、必ずしも暗号化して送信する必要はなく、平文のまま送信してもよい。
【0031】
また、識別値作成/検証部205は、他の情報処理装置へ接続依頼メッセージを送信後、当該他の情報処理装置から認証指示メッセージを受信すると、当該認証指示メッセージに従った演算処理を実行させる。そして、識別値作成/検証部205は、RAM254(図2)に展開されたアプリケーションプログラムのワークエリアのうち、特定の領域にある値に基づいて自己の特定識別値を生成するとともに、エンコード/デコード部204により当該特定識別値を自己の秘密鍵を用いて署名することで暗号識別値を作成(自己署名)させる。なお、特定識別値は、指定されたメモリ領域の値をそのまま抽出した値でもよいが、指定されたメモリ領域の大きさにかかわらず、一定の大きさのデータとして出力されることが好ましい。そのため、特定識別値は、一方向性のハッシュ関数などの特定関数を用いて生成される。このハッシュ関数は、外部から読出し不能なセキュリティ領域に格納される。
【0032】
さらに、識別値作成/検証部205は、当該暗号識別値を接続依頼先の情報処理装置へ送信する。なお、後述するように、認証(Certification Authority)サーバ(以下「CAサーバ」とも称す。)に暗号識別値の生成(署名)を依頼してもよい。
【0033】
上述した識別値の内容および作成方法ならびに認証方法については、後述する。
識別値作成/検証部205は、他の情報処理装置へメッセージを送信する場合、送信するべきデータを作成してデータ作成部211に送る。そして、データ作成部211は、受取ったデータをネットワークパケットの形に成形し、データ送信部212へ送る。データ送信部212は、データ作成部211が受取ったデータなどによって決定される送り先に当該パケットが送られるように、当該パケットをハブ400へ送信する。
【0034】
以上、図3に示したブロック構成において、各機能ブロックの機能を実現するハードウェアについては、特に限定されないが、たとえば、データ保持部206は、RAM254およびHDD264によって構成される。また、エンコード/デコード部204、識別値作成/検証部205、その他処理部207、データ解析部203、データ作成部211は、HDD264のハードディスクに記憶されたプログラムを実行するCPU250およびRAM254によって構成される。データ受信部202およびデータ送信部212は、通信装置262によって構成される。なお、データ保持部206には、不揮発性記憶装置として、HDD264に加えて、あるいは、HDD264に代えて、フラッシュメモリなどのような記憶装置が設けられていてもよい。
【0035】
その他処理部207は、上述したような機能以外の機能、たとえば、アプリケーションプログラムの固有のサービスを提供する処理(たとえば、アプリケーションプログラムがワープロ用のソフトであるならば、ワープロ機能を提供する処理)や、アプリケーションプログラムをオンラインで更新する処理や、更新の有無等の問合せや、プログラムのバージョンの管理等の処理を行なう。
【0036】
したがって、図3に示された例では、特に限定されないが、各機能ブロックのうち、データ解析部203、エンコード/デコード部204、識別値作成/検証部205、その他処理部207は、アプリケーションプログラムがCPU250によって実行されることにより実現される機能であり、データ解析部203およびデータ作成部211は、OS(Operating System)プログラムがCPU250によって実行されることにより実現される機能である、とすることができる。
【0037】
本実施の形態では、PC200において実行されているアプリケーションプログラムと他の情報処理装置において実行されているアプリケーションプログラムとの間で通信を行なう際に、各アプリケーションプログラムが相手のアプリケーションプログラムの正当性を認証したことを条件として、接続が許可される。なお、本実施の形態におけるアプリケーションプログラムとは、主としてOSプログラムの実行環境下で実行されるプログラムに加えて、ハードウェアを直接的に制御するファームウェアをも包含するものである。
【0038】
<認証処理>
本実施の形態に従う通信制御方法における認証処理は、概略すると、アプリケーションプログラムが共通にもつ数値演算関数をそれぞれの情報処理装置で実行させることで生じるメモリ上の値を比較することで、アプリケーションプログラムの正当性を検証する。特に、任意に選択される数値演算関数を2つの情報処理装置でそれぞれ実行させることで、当該数値演算関数の実行により出力されるメモリ上の値を認証処理毎に異ならせるとともに、比較対象とするメモリ上の領域も認証処理毎に任意に選択される。
【0039】
図4は、本発明の第1の実施の形態に従う認証処理の処理手順を示すシーケンス図である。図4には、互いにデータ通信可能に構成されている2つのPC200でそれぞれ実行されているアプリケーションプログラムの間で通信を開始する場合の処理を示す。なお、理解を容易にするため、図4には、一方のPC200から他方のPC200への接続要求がなされた場合に、接続要求を受信したPC200が認証処理を行なう場合について例示するが、2つのPC200が互いに認証処理を行なうようにしてもよい。その場合には、図4に示す処理を各処理の実行主体を入れ替えて再度実行すればよい。
【0040】
以下の説明では、説明の便宜上、アプリケーションプログラムを実行する2つのPC200のうち、他方のPC200に対して通信の開始を依頼するPC200を「接続要求元」とも称し、通信の開始を依頼されるPC200を「接続要求先」とも称す。また、接続要求元のPC200で実行されるアプリケーションプログラムを「アプリケーション1」とも称し、接続要求先のPC200で実行されるアプリケーションプログラムを「アプリケーション2」とも称する。
【0041】
本実施の形態に従う認証処理を実行するPC200のうち、少なくとも接続要求元となり得るPC200は、自己の公開鍵およびそれに対応する秘密鍵を保持しており、かつ公開鍵は、他のPC200による取得が可能であるとする。一般的に、秘密鍵は、外部から読出し不能なセキュリティ領域に格納される。なお、このような公開鍵基盤(PKI:Public Key Infrastructure)については、周知であるので詳細な説明は行なわない。
【0042】
本実施の形態に従う認証処理は、主として、以下の6つのフェーズを含む。
(1)接続依頼元から接続依頼先への接続依頼メッセージの送信
(2)接続依頼先から接続依頼元への認証指示メッセージの送信
(3)接続依頼元における特定識別値の生成、および特定識別値から暗号識別値の生成
(4)接続依頼元から接続依頼先への暗号識別値の送信
(5)接続依頼先における特定識別値の生成
(6)接続依頼先における接続許否の判定
以下、これらの各フェーズについて、図4〜図8を参照して説明する。
【0043】
(1.接続依頼メッセージの送信)
図4を参照して、接続依頼元に対してユーザ操作などがなされると、接続依頼元から接続依頼メッセージが接続依頼先へ送信される(ステップS2)。この接続依頼メッセージは、接続許可を依頼するための情報を含んでいる。より具体的には、接続依頼メッセージには、接続を依頼するための単純なコマンドに加えて、接続依頼元のアプリケーションプログラムのバージョン情報や接続履歴といったアプリケーションプログラム自体の情報を含めてもよい。なお、このような接続依頼メッセージは、XML(Extensible Markup Language)などのマークアップ言語によって記述されることが多い。
【0044】
(2.認証指示メッセージの送信)
接続依頼元から接続依頼メッセージを受信した接続依頼先は、接続依頼元のアプリケーションプログラムの正当性を検証するために、接続依頼元のアプリケーションプログラムによって所定の処理を実行した結果を応答させるための指示を含む、認証指示メッセージを接続依頼元へ送信する(ステップS4)。
【0045】
この認証指示メッセージは、代表的に以下に示すいずれかの内容を含む。
(i)指定した数値演算関数を送信依頼元において実行させ、その実行結果(特定識別値)を送信依頼元の秘密鍵で署名した暗号識別値を送信依頼先へ返信する指示
(ii)指定した入力値に対して指定した数値演算関数を送信依頼元において実行させ、当該実行後の指定したメモリエリアの値を特定識別値として抽出し、さらに抽出した特定識別値を送信依頼元の秘密鍵で署名した暗号識別値を送信依頼先へ返信する指示
(iii)指定した入力値に対して指定した数値演算関数を送信依頼元において実行させ、当該実行前と当該実行後の指定したメモリエリアの差分を特定識別値として抽出し、さらに抽出した特定識別値を送信依頼元の秘密鍵で署名した暗号識別値を送信依頼先へ返信する指示
(iv)(i)〜(iii)において、特定識別値をCAサーバによって署名された暗号識別値を送信依頼先へ返信する指示
このような指示を送信依頼元に実行させるために、認証指示メッセージには、数値演算関数で用いられる入力データ、実行すべき数値演算関数を指定する処理指示、暗号識別値を抽出すべきメモリエリアを指定する計算エリア指示番号などが含まれる。
【0046】
入力データ、処理指示、計算エリア指示番号の全部または一部は、認証処理毎に変更されることが好ましく、その変更方法としては、予め定めた複数の組合せから順次選択するようにしてもよいし、擬似乱数などを用いてランダムに選択してもよい。このような認証指示メッセージの具体例については後述する。
【0047】
(3.接続依頼元における特定識別値および暗号識別値の生成)
接続依頼先から認証指示メッセージを受信した接続依頼元は、認証指示メッセージに含まれる内容に従って、特定識別値および暗号識別値を生成する。まず、図5を参照して、特定識別値の生成処理について説明する。
【0048】
図5は、本発明の実施の形態に従う特定識別値の生成に係る処理を模式的に示す図である。
【0049】
図5を参照して、PC200において、CPU250(図2)がHDD264(図2)などに予め格納されたアプリケーションプログラムを実行する場合には、当該アプリケーションプログラムは、RAM254(図2)などのメモリエリアにバイナリコードとして展開される。このメモリエリアには、各種の数値演算関数の実行結果や中間データを一時的に格納するためのレジスタとして使用される領域も形成される。本実施の形態に従う認証処理では、このようなアプリケーションプログラムの実行に際して用いられるメモリエリアの一部分の値を抽出した上で、当該抽出した値を特定関数(代表的に、ハッシュ関数)に入力して、その出力を特定識別値として動的に生成する。
【0050】
より具体的な一例として、任意に指定した入力データに対する素因数分解を指定した認証指示メッセージなどを用いることができる。このような任意に指定された入力データについての素因数分解の処理過程におけるメモリエリアの値を特定識別値の生成に用いることで、より改ざんされにくい暗号識別値を生成することができる。
【0051】
あるいは、入力データを用いない数値演算関数の一例として、アプリケーションプログラムの製造日(あるいは、あるバージョンのリリース日)からの経過日数などを算出する関数などを用いることができる。このような関数を用いることで、アプリケーションプログラムが互いに同一であれば、基本的に同じ特定識別値を生成することができる。
【0052】
なお、認証処理に係るPC200のRAM254(図2)の大きさは同一であるとは限らず、またOSといった他のプログラムの実行の状態も互いに異なっているので、それぞれのPC200において、アプリケーションプログラムが展開されるメモリエリアの絶対位置は一致することはまずない。そのため、特定識別値の生成対象となる領域は、当該アプリケーションプログラムが占有するメモリエリアの相対位置を指定することが好ましい。すなわち、当該アプリケーションプログラムが占有する先頭アドレスは、一定ではないが、当該先頭アドレスから予め定められた位置にあるアドレス範囲を指定することで、正当なアプリケーションプログラム同士であれば、それぞれにおいて生成される特定識別値を互いに一致させることができる。
【0053】
そのため、認証指示メッセージに含まれる計算エリア指示番号には、以下の表に示すように、アプリケーションプログラムが占有するメモリエリアの先頭アドレスからの相対位置を示す相対アドレスと、特定識別値の生成に係る入力値を抽出するための相対アドレスからの範囲を示すサイズとが含まれる。なお、両PC200において、予め、ID番号に対応付けて相対アドレスとサイズとの組合せを複数格納しておき、計算エリア指示番号としてはID番号のみを送信するようにしてもよい。
【0054】
【表1】

【0055】
以下、認証指示メッセージの具体例について説明する。
上述したように、より安全な認証処理を行なうためには、処理指示、入力データ、計算エリア指示番号の全部または一部は、認証処理毎に変更されることが好ましい。そこで、認証指示メッセージは、認証処理の実行毎に以下の表に示すようにその内容が変更される。
【0056】
【表2】

【0057】
上記の表中において、数値演算関数1としては、たとえば、アプリケーションプログラムの製造日から、指定された日付時刻までの経過時間(秒)を算出する関数が用いられる。認証指示メッセージの処理指示内容としては、数値演算関数1のまま変化していないが、入力データとされるメッセージ送信時の日付時刻については、認証指示メッセージが送信される毎に変化する。また、計算エリア指示番号としては、アプリケーションプログラムが占有するメモリエリアの先頭アドレスからの相対位置を示す相対アドレスと、特定識別値の生成に係る入力値を抽出するための相対アドレスからの範囲を示すサイズとに対応付けられたID番号が指定されており、上記の表中においては、認証指示メッセージが送信される毎にID番号が変更されている。
【0058】
このような認証指示メッセージが用いられる結果、上記の数値演算関数1から出力される結果自体も認証処理毎に変化し、さらに特定識別値の生成に係る入力値として用いられるメモリエリアも変化するので、特定識別値は認証処理毎に順次変化することになる。
【0059】
さらに、認証指示メッセージの処理指示内容についても、以下の表に示すように、認証処理毎に変化させてもよい。
【0060】
【表3】

【0061】
上記の表中において、数値演算関数1としては、たとえば、アプリケーションプログラムの製造日から、指定された日付時刻までの経過時間(秒)を算出する関数が用いられ、数値演算関数2としては、たとえば、あるバージョンのリリースの日から、指定された日付時刻までの経過時間(秒)を算出する関数が用いられる。
【0062】
このような認証指示メッセージが用いられる結果、上記の処理の実行結果自体も認証処理毎に変化し、さらに特定識別値の生成に係る入力値として用いられるメモリエリアも変化するので、特定識別値は認証処理毎に順次変化することになる。
【0063】
さらに、何らかの処理の実行前と実行後との間のメモリエリアの差分を特定識別値の生成に係る入力値として抽出する場合には、認証指示メッセージには、処理前のメモリエリアのうち差分を算出するためのメモリ状態として一時的に保存すべきエリアの指定と、特定識別値の生成に係る入力値として抽出すべき差分のエリアの指定などを含む。
【0064】
なお、メモリ上に展開する規則がハードウェアに依存(特に、CPUの種類)している場合には、そのような特定の差異を利用して正当性を検証することもできる。より具体的には、ビット列のいずれの方向を最上位/最下位ビットとして扱うかによって、BigEndian/LittleEndianの差異が生じ得る。そこで、同一種類のCPU間での接続を許可するような場合には、このような差異を利用して、正当性を検証することができる。一方、異なる種類のCPU間であっても接続を許可し得るように構成する場合には、送信依頼元および送信依頼先のいずれか一方に、このようなメモリ展開の規則の違いを解消する変換機能(互換性機能)を持たせる必要がある。
【0065】
再度、図4を参照して、認証指示メッセージを受信した接続依頼元は、当該認証指示メッセージに従って、入力データをアプリケーション1に入力し(ステップS6)、処理指示に従って処理を実行する(ステップS8)。すなわち、上述した例では、接続依頼元は、指定された入力データに対する素因数分解を実行する。
【0066】
そして、接続依頼元は、認証指示メッセージに含まれる計算エリア指定指示に従い、メモリ上の特定位置の値を抽出し、さらに抽出した値を特定関数に入力することで、特定識別値を生成する(ステップS10)。さらに、接続依頼元は、特定識別値に自己の署名を施して暗号識別値を生成する(ステップS12)。すなわち、暗号識別値は、特定識別値を接続依頼元が保持する秘密鍵を用いて暗号化した結果である。
【0067】
(4.接続依頼元から接続依頼先への暗号識別値の送信)
送信依頼元は、生成した暗号識別値を接続依頼先へ送信する(ステップS22)。なお、暗号識別値は、認証処理毎に変化する認証指示メッセージに従って動的に生成されるものであるため、接続依頼元から接続依頼先へ暗号識別値を平文(さらなる暗号化を行なうことなく)で送信してもよい。より安全性を高めるために、SSL(Secure Socket Layer)などの暗号化通信を用いて送信してもよい。
【0068】
(5.接続依頼先における特定識別値の生成)
接続依頼先は、認証指示メッセージを送信した後、当該認証指示メッセージに従って、送信依頼先と同様の処理を実行する。すなわち、送信依頼先は、認証指示メッセージに従って、入力データをアプリケーション2に入力し(ステップS16)、処理指示に従って処理を実行する(ステップS18)。そして、接続依頼先は、認証指示メッセージに含まれる計算エリア指定指示に従い、メモリ上の特定位置の値を抽出し、さらに抽出した値を特定関数に入力することで、特定識別値を生成する(ステップS20)。なお、この特定関数(代表的に、ハッシュ関数)は、予め、接続依頼元が保持している特定関数と同一に設定されている。
【0069】
送信依頼元および送信依頼先でそれぞれ実行されるアプリケーションプログラムが正当なものであれば、送信依頼元が実行するステップS6〜S10の処理内容と、送信依頼先が実行するステップS16〜S20の処理内容とは互いに一致する。
【0070】
(6.接続依頼先における接続許否の判定)
接続依頼先は、接続依頼元から送信された暗号識別値と、自己の生成した特定識別値とに基づいて、アプリケーションプログラムの正当性を検証する。
【0071】
より具体的には、接続依頼先は、相手の特定識別値から相手の特定識別値を算出する(ステップS24)。すなわち、接続依頼先は、接続依頼元から送信された暗号識別値を、接続依頼先の公開鍵を用いて復号化することで、接続依頼元の特定識別値を算出する。
【0072】
なお、接続依頼元の公開鍵については、公開鍵そのものを予め取得しておいてもよいし、CAサーバが発行する接続依頼元の証明書を取得しておき、その証明書に含まれる公開鍵を用いてもよい。
【0073】
続いて、接続依頼先は、ステップS24において算出した接続依頼元の特定識別値と、自己の生成した特定識別値とを比較し(ステップS26)、両者の一致/不一致に基づいて、接続許否を判定する(ステップS28)。さらに、接続依頼先は、ステップS28における判定結果(接続許可/接続拒否)のメッセージを接続依頼元に送信する(ステップS30)。この接続許可のメッセージが送信されることで、認証処理が成功したことが通知されるので、両者の間で通信が開始される。なお、接続拒否と判定された場合には、何らのメッセージも送信することなく、以後の通信を拒絶してもよい。
【0074】
<接続依頼元における特定識別値および暗号識別値の生成に係る処理手順>
以下、送信依頼元の内部の制御構造における、特定識別値および暗号識別値の生成に係る処理手順について説明する。
【0075】
図6は、送信依頼元の識別値作成/検証部205およびエンコード/デコード部204における処理手順を示すフローチャートである。
【0076】
図6を参照して、識別値作成/検証部205は、メモリ上の特定位置のデータを抽出し、さらに抽出した値を特定関数に入力することで、特定識別値を生成する(ステップSA10)。続いて、識別値作成/検証部205は、ステップSA10において生成した特定識別値をエンコード/デコード部204へ送信する(ステップSA20)。
【0077】
エンコード/デコード部204は、識別値作成/検証部205から送信された特定識別値を受信する(ステップSB10)と、当該特定識別値に自己の秘密鍵で署名する(ステップSB20)。そして、エンコード/デコード部204は、この署名によって生成されたデータを識別値作成/検証部205へ送信する(ステップSB30)。
【0078】
識別値作成/検証部205は、エンコード/デコード部204から署名によって生成されたデータを受信する(ステップSA30)と、当該データを暗号識別値としてメモリ上に一旦保持する(ステップSA40)。その後、この暗号識別値は、データ作成部211およびデータ送信部212(図3)を介して、接続依頼先へ送信される。
【0079】
本実施の形態によれば、認証処理毎に、比較の対象となる特定識別値を生成するための処理および当該処理により出力される結果のうち採用されるメモリエリアが動的に変化するので、ある認証処理における特定識別値が悪意のある第三者によって盗聴されたとしても、当該特定識別値を次回以降の認証処理に用いることはできない。そのため、第三者による改ざんをより有効に防止することができる。
【0080】
また、本実施の形態によれば、メモリに展開されるデータに基づいて特定識別値が生成されるので、ハードウェア環境の差異を反映した認証処理を行なうことができる。
【0081】
また、本実施の形態によれば、接続依頼先では、接続依頼元が特定識別値を署名した暗号識別値を復号化した上で、自身で生成した特定識別値と比較するので、第三者による改ざんをさらに高めることができる。
【0082】
[第2の実施の形態]
上述した第1の実施の形態においては、接続依頼元が自己の秘密鍵を用いて、特定識別値から暗号識別値を生成する構成について例示したが、CAサーバが暗号識別値を生成してもよい。以下、第2の実施の形態では、接続依頼元が生成した特定識別値をCAサーバが署名して暗号識別値を生成する構成について例示する。
【0083】
本発明の第2の実施の形態に従う情報処理装置を含むネットワークの構成は、図1と同様であり、そのハードウェア構成および機能ブロックについては、それぞれ図2および図3と同様であるので、詳細な説明は繰返さない。
【0084】
<認証処理>
(1.接続依頼メッセージの送信)
接続依頼元から接続依頼メッセージへの接続依頼先の送信に係る処理は、上述の第1の実施の形態と同様であるので、詳細な説明は繰返さない。
【0085】
(2.認証指示メッセージの送信)
接続依頼先から接続依頼元への認証指示メッセージの送信に係る処理についても、認証指示メッセージに、特定識別値をCAサーバにより生成する旨の指示が含まれる点を除いて、上述の第1の実施の形態とほぼ同様であるので、詳細な説明は繰返さない。
【0086】
(3.接続依頼元における特定識別値および暗号識別値の生成)
接続依頼元が接続依頼先からの認証指示メッセージに含まれる内容に従って特定識別値を生成するまでの処理は、上述の第1の実施の形態とほぼ同様であるので、詳細な説明は繰返さない。一方、特定識別値から暗号識別値の生成処理については、第1の実施の形態とは異なり、CAサーバにより実行される。以下、図7および図8を参照して、特定識別値から暗号識別値の生成処理について説明する。
【0087】
図7は、本発明の第2の実施の形態に従う暗号化識別値の生成に係る処理を模式的に示す図である。図8は、本発明の第2の実施の形態に従う暗号化識別値の生成に係る処理を示すフローチャートである。
【0088】
図7を参照して、接続依頼元および接続依頼先は、それぞれCAサーバとデータ通信可能であるとし、予めCAサーバにより証明書(ルート証明書)を発行されているものとする。
【0089】
接続依頼元は、認証指示メッセージに従って特定識別値を生成すると、当該特定識別値および予め取得したルート証明書に自己の秘密鍵を用いて署名した上で、CAサーバへ送信する。CAサーバは、まず、接続依頼元から受信したメッセージを接続依頼元の公開鍵を用いて復号化し、その中に含まれるルート証明書の内容に基づいて、接続依頼元が正当であるか否かを判断する。接続依頼元の正当性が検証されると、CAサーバは、接続依頼元から送信された特定識別値を自己の秘密鍵を用いて署名して暗号識別値を生成する。さらに、CAサーバは、当該生成した暗号識別値を接続依頼元へ送信する。
【0090】
このような手順によって、接続依頼元で生成された特定識別値が暗号識別値に変換される。以下、本発明の第2の実施の形態に従う暗号化識別値の生成に係る処理の詳細について説明する。
【0091】
図8を参照して、接続依頼元は、特定識別値を署名承認用メッセージに変換する(ステップSC10)。具体的には、接続依頼元は、特定識別値および予め取得しているルート証明書を1つのデータにまとめるとともに、自己の秘密鍵を用いて署名することで署名承認用メッセージを生成する(自己署名)。続いて、接続依頼元は、ステップSC10において生成した署名承認用メッセージをCAサーバへ送信する(ステップSC20)。
【0092】
CAサーバは、接続依頼元から署名承認用メッセージを受信する(ステップSD10)と、当該署名承認用メッセージを接続依頼元の公開鍵を用いて復号化し、その中に含まれるルート証明書をチェックする(ステップSD20)。すなわち、CAサーバは、接続依頼元から送信されたルート証明書の内容が、自己が発行したもとと同一であるか否かに基づいて、接続依頼元が正当であるか否かを判断する(ステップSD30)。接続依頼元が正当でなければ(ステップSD30においてNO)、CAサーバは、接続依頼元からの要求を拒否する(ステップSD40)。そして、以降の処理は行なわない。
【0093】
一方、接続依頼元が正当であれば(ステップSD30においてYES)、CAサーバは、接続依頼元から送信された特定識別値をCAサーバの秘密鍵を用いて署名し(ステップSD50)、暗号識別値を生成する(ステップSD60)。そして、CAサーバは、生成した暗号識別値を接続依頼元へ送信する(ステップSD70)。なお、CAサーバから接続依頼元への暗号識別値の送信は、平文のまま行なってもよいが、より安全性を高めるために、SSL(Secure Socket Layer)などの暗号化通信を用いて送信することが好ましい。
【0094】
接続依頼元は、CAサーバから暗号識別値を受信すると(ステップSC30)、当該暗号識別値としてメモリ上に一旦保持する(ステップSC40)。
【0095】
以上のような処理によって、接続依頼元は、特定識別値から暗号識別値を生成する。
(4.接続依頼元から接続依頼先への暗号識別値の送信)
接続依頼元から接続依頼先への暗号識別値の送信に係る処理は、上述の第1の実施の形態と同様であるので、詳細な説明は繰返さない。
【0096】
(5.接続依頼先における特定識別値の生成)
接続依頼先における特定識別値の生成に係る処理は、上述の第1の実施の形態と同様であるので、詳細な説明は繰返さない。
【0097】
(6.接続依頼先における接続許否の判定)
上述の第1の実施の形態と同様、接続依頼先は、接続依頼元から送信された暗号識別値と、自己の生成した特定識別値とに基づいて、アプリケーションプログラムの正当性を検証する。ここで、本実施の形態では、接続依頼元から送信された暗号識別値は、CAサーバの秘密鍵を用いて署名されているので、接続依頼先は、接続依頼元から送信された暗号識別値をCAサーバの公開鍵を用いて特定識別値に復号化する。このとき、接続依頼先は、予めCAサーバにより発行されているルート証明書に含まれているCAサーバの公開鍵を用いることができる。
【0098】
このように、接続依頼元および接続依頼先のいずれもが共通のCAサーバによって認証されている(ルート証明書が発行されている)場合には、より信頼性の高いCAサーバによる署名がなされたデータを用いて検証ができるので、より改ざんに対して強固な通信制御方法を実現できる。
【0099】
その他の処理についても、上述した実施の形態と同様であるので、詳細な説明は繰返さない。
【0100】
本実施の形態によれば、上述の第2の実施の形態と同様の効果に加えて、認証サーバにより署名された特定識別値を比較することで接続の可否が判断されるので、第三者による改ざんをさらに高めることができるとともに、暗号識別値から特定識別値に復号する際の公開鍵をより安全に取得することができる。
【0101】
[第1変形例]
認証処理の開始時において、接続依頼元および接続依頼先との間の通信状態を互いに一致させておくことが好ましい場合もある。このような場合には、上述したような認証指示メッセージに、以下の表に示すような内容をさらに含ませておくことが好ましい。
【0102】
【表4】

【0103】
上記の表には、メッセージキューをクリアして、何らかの通信を行なうための処理を互いに初期化(待機処理がない状態)を実現させるためのメッセージが記述されている。このように、メッセージキューをクリアすることで、通信状態を互いに同一の状態にさせた上で、認証処理を開始することができる。
【0104】
[第2変形例]
認証処理を実行するための前提条件として、互いにアプリケーションプログラムが同じバージョンであるか、あるいは少なくとも特定のパッチが適用されていることを確認することが好ましい場合もある。このようなこのような場合には、上述したような認証指示メッセージに、以下の表に示すような内容をさらに含ませておくことが好ましい。
【0105】
【表5】

【0106】
上記の表には、接続依頼元で実行されるアプリケーションプログラムのバージョン(あるいは、適用パッチ情報)を接続依頼先に応答させるためのメッセージが記述されている。このように、互いにアプリケーションプログラムのバージョン、あるいは適用パッチ情報を互いに確認することで、前提となる条件を満たすものについてのみ、認証処理を実行することができる。
【0107】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0108】
【図1】本発明の実施の形態に従う情報処理装置を含むネットワークの構成を模式的に示す図である。
【図2】PCのハードウェア構成を模式的に示す図である。
【図3】PCの機能ブロックを模式的に示す図である。
【図4】本発明の第1の実施の形態に従う認証処理の処理手順を示すシーケンス図である。
【図5】本発明の実施の形態に従う特定識別値の生成に係る処理を模式的に示す図である。
【図6】送信依頼元の識別値作成/検証部およびエンコード/デコード部における処理手順を示すフローチャートである。
【図7】本発明の第2の実施の形態に従う暗号化識別値の生成に係る処理を模式的に示す図である。
【図8】本発明の第2の実施の形態に従う暗号化識別値の生成に係る処理を示すフローチャートである。
【符号の説明】
【0109】
100 モニタ、200 パーソナルコンピュータ(PC)、202 データ受信部、203 データ解析部、204 エンコード/デコード部、205 識別値作成/検証部、206 データ保持部、207 その他処理部、211 データ作成部、212 データ送信部、252 メディアドライブ、252A 記憶媒体、260 入力装置、262 通信装置、300 ネットワークケーブル、400 ハブ、500 ルータ。

【特許請求の範囲】
【請求項1】
第1の情報処理装置と第2の情報処理装置との間での通信を制御する通信制御方法であって、
前記第2の情報処理装置が、処理指示およびメモリエリア指示を含むメッセージを前記第1の情報処理装置へ送信するステップと、
前記第1の情報処理装置が、第1のアプリケーションプログラムで前記処理指示に従って処理を実行した結果を第1のメモリに出力するステップと、
前記第1の情報処理装置が、前記第1のメモリのうち前記メモリエリア指示の範囲にある値から第1の識別値を生成するステップと、
前記第1の情報処理装置が、前記第1の識別値を前記第2の情報処理装置に送信するステップと、
前記第2の情報処理装置が、第2のアプリケーションプログラムで前記処理指示に従って処理を実行した結果を第2のメモリに出力するステップと、
前記第2の情報処理装置が、前記第2のメモリのうち前記メモリエリア指示の範囲にある値から第2の識別値を生成するステップと、
前記第2の情報処理装置が、前記第1の情報処理装置から受信した前記第1の識別値を前記第2の識別値と比較し、前記第1の識別値と前記第2の識別値とが一致する場合に、前記第1の情報処理装置との接続を許可するステップとを備える、通信制御方法。
【請求項2】
前記第1の情報処理装置は、前記第1の識別値を暗号化して前記第2の情報処理装置に送信し、
前記第2の情報処理装置は、暗号化された前記第1の識別値を復号化した上で、前記第2の識別値と比較する、請求項1に記載の通信制御方法。
【請求項3】
前記第1の情報処理装置は、外部から読出し不可能に格納された秘密鍵と、当該秘密鍵に対応する公開鍵とを保持しており、
前記第1の情報処理装置は、前記秘密鍵を用いて前記第1の識別値を暗号化し、
前記第2の情報処理装置は、前記暗号化された第1の識別値を前記第1の情報処理装置の前記公開鍵を用いて復号化する、請求項2に記載の通信制御方法。
【請求項4】
前記第1の情報処理装置は、前記第1の識別値を暗号化するために認証サーバに送信するとともに、前記認証サーバから前記暗号化された第1の識別値を受信し、
前記第2の情報処理装置は、前記暗号化された第1の識別値を前記認証サーバの公開鍵を用いて復号化する、請求項2に記載の通信制御方法。
【請求項5】
前記第1の情報処理装置は、前記第1のメモリのうち前記メモリエリア指示の範囲にある値を抽出し、抽出した値を特定関数に入力することで前記第1の識別値を生成し、
前記第2の情報処理装置は、前記第2のメモリのうち前記メモリエリア指示の範囲にある値を抽出し、抽出した値を前記第1の情報処理装置と同一の特定関数に入力することで前記第2の識別値を生成する、請求項1〜4のいずれか1項に記載の通信制御方法。
【請求項6】
前記メッセージは、前記第1および第2のアプリケーションプログラムのバージョン情報を互いに比較するための処理指示を含む、請求項1〜5のいずれか1項に記載の通信制御方法。
【請求項7】
前記第2の情報処理装置は、
前記第1の情報処理装置から接続要求を受けた場合に、前記メッセージを前記第1の情報処理装置へ送信し、
前記メッセージの送信毎に、前記メッセージに含まれる前記処理指示および前記メモリエリア指示の少なくとも一方を変化させる、請求項1〜6のいずれか1項に記載の通信制御方法。
【請求項8】
他の情報処理装置との通信を制御する通信制御プログラムであって、
前記プログラムは、情報処理装置にインストールされて、前記情報処理装置に、
処理指示およびメモリエリア指示を含むメッセージを前記他の情報処理装置へ送信するステップと、
前記他の情報処理装置が第1のアプリケーションプログラムで前記処理指示に従って処理を実行した結果を第1のメモリに出力し、前記第1のメモリのうち前記メモリエリア指示の範囲にある値から生成された第1の識別値を受信するステップと、
第2のアプリケーションプログラムで前記処理指示に従って処理を実行した結果を第2のメモリに出力するステップと、
前記第2のメモリのうち前記メモリエリア指示の範囲にある値から第2の識別値を生成するステップと、
前記他の情報処理装置から受信した前記第1の識別値を前記第2の識別値と比較し、前記第1の識別値と前記第2の識別値とが一致する場合に、前記他の情報処理装置との接続を許可するステップとを実行させる、通信制御プログラム。
【請求項9】
他の情報処理装置との通信を制御可能な情報処理装置であって、
処理指示およびメモリエリア指示を含むメッセージを前記他の情報処理装置へ送信する手段と、
前記他の情報処理装置が第1のアプリケーションプログラムで前記処理指示に従って処理を実行した結果を第1のメモリに出力し、前記第1のメモリのうち前記メモリエリア指示の範囲にある値から生成された第1の識別値を受信する手段と、
第2のアプリケーションプログラムで前記処理指示に従って処理を実行した結果を第2のメモリに出力する手段と、
前記第2のメモリのうち前記メモリエリア指示の範囲にある値から第2の識別値を生成する手段と、
前記他の情報処理装置から受信した前記第1の識別値を前記第2の識別値と比較し、前記第1の識別値と前記第2の識別値とが一致する場合に、前記他の情報処理装置との接続を許可する手段とを備える、情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−246459(P2009−246459A)
【公開日】平成21年10月22日(2009.10.22)
【国際特許分類】
【出願番号】特願2008−87709(P2008−87709)
【出願日】平成20年3月28日(2008.3.28)
【出願人】(000001270)コニカミノルタホールディングス株式会社 (4,463)
【Fターム(参考)】