(57)【特許請求の範囲】
【請求項１】
第１の情報処理装置と第２の情報処理装置の間での通信を制御する通信制御方法であって、
前記第１の情報処理装置が、ファイル形式で保存されている第１のアプリケーションプログラムを第１のメモリに前記第１の情報処理装置が直接実行可能なバイナリ形式のプログラムに展開するステップと、
前記第１の情報処理装置が、前記第１のメモリに展開された前記第１のアプリケーションプログラムのバイナリコードにおいて特定の相対位置アドレスで規定される特定の一部分と特定関数を用いて第１の識別値を算出するステップと、
前記第１の情報処理装置が、前記第１の識別値を前記第２の情報処理装置に送信するステップと、
前記第２の情報処理装置が、第２のアプリケーションプログラムを第２のメモリに展開するステップと、
前記第２の情報処理装置が、前記第２のメモリに展開された前記第２のアプリケーションプログラムのバイナリコードの特定の一部分と前記特定関数を用いて第２の識別値を算出するステップと、
前記第２の情報処理装置が、前記第１の情報処理装置から受信した前記第１の識別値を前記第２の識別値と比較し、前記第１の識別値と前記第２の識別値とが同一であった場合に、前記第１の情報処理装置との接続を許可するステップとを備える、通信制御方法。
【請求項２】
前記第１の情報処理装置は、前記第１の識別値を暗号化して前記第２の情報処理装置に送信し、
前記第２の情報処理装置は、暗号化された前記第１の識別値を復号化した上で、前記第２の識別値と比較する、請求項１に記載の通信制御方法。
【請求項３】
前記第１の情報処理装置は、前記第１の識別値を暗号化するために認証サーバに送信し、前記認証サーバから暗号化された前記第１の識別値を受信する、請求項２に記載の通信制御方法。
【請求項４】
前記第１の情報処理装置は、前記第１の識別値を算出するに際してユーザ情報をさらに用い、
前記第２の情報処理装置は、前記第２の識別値を算出するに際して前記ユーザ情報をさらに用いる、請求項１〜請求項３のいずれかに記載の通信制御方法。
【請求項５】
他の情報処理装置との通信を制御する通信制御プログラムであって、
ファイル形式で保存されているアプリケーションプログラムが実行されるに際してメモリ上に直接実行可能なバイナリ形式のプログラムに展開された当該アプリケーションプログラムのバイナリコードにおいて特定の相対位置アドレスで規定される特定の一部分と特定関数を用いて第１の識別値を算出するステップと、
前記第１の識別値を他の情報処理装置に送信するステップと、
前記他の情報処理装置から第２の識別値を受信するステップと、
前記第２の識別値を前記第１の識別値と比較し、前記第１の識別値と前記第２の識別値とが同一であった場合に、前記他の情報処理装置との接続を許可するステップとを、
情報処理装置に実行させる、通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御方法および通信制御プログラムに関し、特に、通信相手の端末との通信の許可／不許可を決定する通信制御方法および通信制御プログラムに関する。
【背景技術】
【０００２】
一般的に、ユーザが、ある端末において、あるアプリケーションプログラムを実行させて、他のアプリケーションプログラムを実行する他の端末との間で通信を行なう場合、アプリケーションプログラム間の通信が安全になされることが望まれる。なぜなら、通信相手のアプリケーションプログラム（上記した他のアプリケーションプログラム）が違法に改造されていたり、あるいは接続の補償がされていない悪意のあるアプリケーションプログラムであった場合、当該ユーザが利用するある端末からの情報漏洩のおそれが生じるからである。
【０００３】
クライエント端末で実行されるアプリケーションプログラムの正当性を検証する手法については、特許文献１（特開２００５−２９３５０４号公報）や特許文献２（特開２００６−２０３５６４号公報）に開示がある。
【０００４】
特許文献１は、クライアント装置で起動されるアプリケーションプログラムの正当性をサーバ装置が確認する際に、クライアント装置内でアプリケーションプログラムの正当性を確認し、その結果をサーバ装置に送信する技術を開示している。クライアント装置内でのアプリケーションプログラムの正当性の確認が行なわれる場合、アプリケーションプログラムのハッシュデータがハッシュ関数を用いて作成され、当該作成されたハッシュデータが予め用意されたデータを比較され、これらが一致すればアプリケーションプログラムが正当なものであるという判断がなされる。
【０００５】
特許文献２は、サーバから送出されたプログラムをノードが実行し、実行したプログラムおよびそのプログラムの実行結果を含む結果情報をサーバに送り返すグリッドコンピューティングシステムを開示している。このシステムでは、ノードが結果情報をサーバに送り返す際に、実行後のプログラムのハッシュ値を算出してサーバに送信する。サーバでは、そのノードから受信したハッシュ値と、ノードに送出したプログラム（サーバに記憶されている）から算出したハッシュ値とが比較され、これらの一致によって、ノードによって実行されたプログラムが改ざんされたものではないことが検証されている。
【特許文献１】特開２００５−２９３５０４号公報
【特許文献２】特開２００６−２０３５６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記した特許文献１に開示されたような従来技術では、クライアント端末が自ら起動するアプリケーションプログラムの正当性を検証し、その結果を示す証明データをサーバに送信する。この際の正当性の検証は、アプリケーションプログラム全体が対象とされていた。つまり、プログラム全体のハッシュ値が算出され、正当性の検証に用いられていた。
【０００７】
また、特許文献２に開示された従来技術は、グリッドコンピュータシステムにおいて、サーバからプログラムを複数のノードに配布し、各ノードが対応するプログラムの実行が完了した時点で、各ノードの秘密鍵を用いて、ハッシュ関数が演算されたプログラムおよびプログラムの実行結果にデジタル署名を行うものである。この際の正当性の検証も、アプリケーションプログラム全体が対象とされていた。つまり、プログラム全体のハッシュ値が算出され、正当性の検証に用いられていた。
【０００８】
さらに、従来では、特許文献１および特許文献２に記載されるように、プログラム自体（全体）のハッシュ値が算出されて当該プログラムの正当性の検証がなされていたため、当該プログラムが当該プログラムの使用権限の無い第三者に入手された場合でも正当なものであると判断されてしまう場合があった。
【０００９】
本発明は、係る実情に鑑み考え出されたものであり、その目的は、異なる端末で実行されるアプリケーションプログラムの認証を速やかにかつ確実に行なうことができる通信制御方法および通信制御プログラムを提供することである。
【００１０】
また、本発明の他の目的は、アプリケーションプログラムが当該プログラムプログラムの使用権限の無い第三者に入手された場合に正当なものであると判断されてしまう事態を回避することができる通信制御方法および通信制御プログラムを提供することである。
【課題を解決するための手段】
【００１１】
本発明のある局面に従った通信制御方法は、第１の情報処理装置と第２の情報処理装置の間での通信を制御する通信制御方法であって、前記第１の情報処理装置が、ファイル形式で保存されている第１のアプリケーションプログラムを第１のメモリに前記第１の情報処理装置が直接実行可能なバイナリ形式のプログラムに展開するステップと、前記第１の情報処理装置が、前記第１のメモリに展開された前記第１のアプリケーションプログラムのバイナリコードにおいて特定の相対位置アドレスで規定される特定の一部分と特定関数を用いて第１の識別値を算出するステップと、前記第１の情報処理装置が、前記第１の識別値を前記第２の情報処理装置に送信するステップと、前記第２の情報処理装置が、第２のアプリケーションプログラムを第２のメモリに展開するステップと、前記第２の情報処理装置が、前記第２のメモリに展開された前記第２のアプリケーションプログラムのバイナリコードの特定の一部分と前記特定関数を用いて第２の識別値を算出するステップと、前記第２の情報処理装置が、前記第１の情報処理装置から受信した前記第１の識別値を前記第２の識別値と比較し、前記第１の識別値と前記第２の識別値とが同一であった場合に、前記第１の情報処理装置との接続を許可するステップとを備えることを特徴とする。
【００１２】
また、本発明の通信制御方法では、前記第１の情報処理装置は、前記第１の識別値を暗号化して前記第２の情報処理装置に送信し、前記第２の情報処理装置は、暗号化された前記第１の識別値を復号化した上で、前記第２の識別値と比較することが好ましい。
【００１５】
また、本発明の通信制御方法では、前記第１の情報処理装置は、前記第１の識別値を暗号化するために認証サーバに送信し、前記認証サーバから暗号化された前記第１の識別値を受信することが好ましい。
【００１６】
また、本発明の通信制御方法では、前記第１の情報処理装置は、前記第１の識別値を算出するに際してユーザ情報をさらに用い、前記第２の情報処理装置は、前記第２の識別値を算出するに際して前記ユーザ情報をさらに用いることが好ましい。
【００１７】
本発明に従った通信制御プログラムは、他の情報処理装置との通信を制御する通信制御プログラムであって、ファイル形式で保存されているアプリケーションプログラムが実行されるに際してメモリ上に直接実行可能なバイナリ形式のプログラムに展開された当該アプリケーションプログラムのバイナリコードにおいて特定の相対位置アドレスで規定される特定の一部分と特定関数を用いて第１の識別値を算出するステップと、前記第１の識別値を他の情報処理装置に送信するステップと、前記他の情報処理装置から第２の識別値を受信するステップと、前記第２の識別値を前記第１の識別値と比較し、前記第１の識別値と前記第２の識別値とが同一であった場合に、前記他の情報処理装置との接続を許可するステップとを、情報処理装置に実行させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、アプリケーションプログラムを実行する情報処理装置同士において、アプリケーションプログラムがメモリ上に展開された際のバイナリコードの特定の一部分に基づいて行なわれるため、相手の情報端末装置のアプリケーションプログラムの認証を速やかにかつ確実に行なうことができる。
【００１９】
また、本発明によれば、アプリケーションプログラムの認証がメモリ上に展開されたバイナリコードの特定の一部分に基づいて行なわれるため、アプリケーションプログラム自体が第三者に入手された場合においても、どの部分を認証に用いているかは容易にはわからない。したがって、正当性の認証をより安全に行なうことができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の一実施の形態である情報処理装置について、図面を参照して説明する。
［第１の実施の形態］
図１は、本実施の形態の情報処理装置を含むネットワークの構成を模式的に示す図である。
【００２１】
図１を参照して、このネットワークには、通信制御装置の一実施の形態であるパーソナルコンピュータ（ＰＣ）が複数含まれている。図１では、各ＰＣ２００が、ＰＣ（１）〜ＰＣ（ｎ）で示されている。各ＰＣ２００は、ネットワークケーブル３００を通じてハブ４００と接続されている。各ＰＣ２００は、ハブ４００およびルータ５００を介して、図示しない別のネットワークに接続された端末との接続が可能に構成されている。図２は、ＰＣ２００のハードウェア構成を模式的に示す図である。また、各ＰＣ２００は、当該ＰＣ２００内の情報処理の結果等を表示させるためのモニタ１００に接続されている。
【００２２】
図２を参照して、ＰＣ２００は、当該ＰＣ２００の動作を全体的に制御するＣＰＵ（Central Processing Unit）２５０、ＣＰＵ２５０のワークエリアとして機能するＲＡＭ（Random Access Memory）２５４、プログラムやデータなどを記憶するＲＯＭ（Read Only Memory）２５６、ＰＣ２００に対して情報を入力するためのキーボードなどの入力装置２６０、他のＰＣ２００または別のネットワークとの通信を行なう通信装置２６２、プログラムやファイルを記憶するハードディスクを備えるハードディスク装置（ＨＤＤ）２６４、およびＰＣ２００に対して着脱可能な記憶媒体２５２Ａとアクセスするメディアドライブ２５２とを備えている。つまり、ＰＣ２００は、入力装置２６０を介して入力された情報の入力を受付け、通信装置２６２を介して他の端末やネットワークと接続可能であり、また、モニタ１００に当該ＰＣ２００において処理されている情報を表示させることができる。
【００２３】
また、ＣＰＵ２５０が実行するプログラムのファイルは、ＲＯＭ２５６やＨＤＤ２６４のハードディスクに記憶されていてもよいし、通信装置２６２を介してアクセスする外部の記憶装置に記憶されているものであってもよい。また、ＨＤＤ２６４のハードディスクでは、メディアドライブ２５２を介して記憶媒体２５２Ａに記憶されたファイルや、通信装置２６２を介してアクセス可能となる外部の記憶装置に記憶されたファイルがＨＤＤ２６４のハードディスクに記憶されて、ＣＰＵ２５０はこのファイルを実行するように構成されていてもよい。
【００２４】
ＣＰＵ２５０が、アプリケーションプログラムを実行する際には、たとえば、ＨＤＤ２６４のような不揮発性の記憶媒体に記憶されたアプリケーションプログラムに基づいて、ＲＡＭ２５４にバイナリ形式のプログラムと実行動作に使用されるデータとが展開される。このようなＲＡＭ２５４に展開されたバイナリ形式のプログラム（以下、「バイナリコード」と呼ぶ）は、ＣＰＵ２５０のハードウェア構成に依存して、ＣＰＵ２５０が直接実行することが可能な、いわゆるネイティブコードである。
【００２５】
図３は、ＰＣ２００の機能ブロックを模式的に示す。
図３を参照して、ハブ４００（図１を参照）を介してＰＣ２００へ送信されるデータは、データ受信部２０２において受信される。データ受信部２０２は受信したデータ（パケット）が、自機宛のパケットであるか否かを判断し、自機宛のデータであると判断すると、当該データをデータ解析部２０３に送る。データ解析部２０３は、受信されたパケットからデータを抽出し、抽出されたデータの中に処理命令が含まれていれば、署名部２０４、識別値作成／検証部２０５、処理部２０７のいずれかで処理をさせる。
【００２６】
識別値作成／検証部２０５は、ＲＡＭ２５４上に展開されたアプリケーションプログラムから、その一部を抽出し、データ保持部２０６において保持されているユーザ情報と合せて、特定識別値を作成する。署名部２０４は、識別値作成／検証部２０５で作成された特定識別値を利用して暗号識別値を作成する。作成された特定識別値および暗号識別値は、データ保持部２０６に記憶される。なお、これらの識別値の内容および作成方法については、後述する。
【００２７】
識別値作成／検証部２０５は、ルータ５００を介して接続されている他の端末において実行されているプログラムと通信を開始する際に、当該他の端末において実行されているアプリケーションから送られてきた特定識別値と暗号識別値とを後述する態様で比較する。そして、識別値作成／検証部２０５は、当該比較結果に応じて、上記した他の端末において実行されているアプリケーションとの間の接続の許可／拒否を決定する。
【００２８】
識別値作成／検証部２０５は、他の端末へメッセージを送信する場合、送信するべきデータを作成してデータ作成部２１１に送る。そして、データ作成部２１１は、受取ったデータをネットワークパケットの形に成形し、データ送信部２１２へ送る。データ送信部２１２は、データ作成部２１１が受取ったデータなどによって決定される送り先に当該パケットが送られるように、当該パケットをハブ４００へ送信する。
【００２９】
以上、図３に示したブロック構成において、各機能ブロックの機能を実現するハードウェアについては、特に限定されないが、たとえば、データ保持部２０６は、ＲＡＭ２５４およびＨＤＤ２６４によって構成される。また、署名部２０４、識別値作成／検証部２０５、処理部２０７、データ解析部２０３、データ作成部２１１は、ＨＤＤ２６４のハードディスクに記憶されたプログラムを実行するＣＰＵ２５０およびＲＡＭ２５４によって構成される。データ受信部２０２およびデータ送信部２１２は、通信装置２６２によって構成される。なお、データ保持部２０６には、不揮発性記憶装置として、ＨＤＤ２６４に加えて、あるいは、ＨＤＤ２６４に代えて、フラッシュメモリなどのような記憶装置が設けられていてもよい。
【００３０】
その他処理部２０７は、上述したような機能以外の機能、たとえば、アプリケーションプログラムの固有のサービスを提供する処理（たとえば、アプリケーションプログラムがワープロ用のソフトであるならば、ワープロ機能を提供する処理）や、アプリケーションプログラムをオンラインで更新する処理や、更新の有無等の問合せや、プログラムのバージョンの管理等の処理を行う。
【００３１】
したがって、図３に示された例では、特に限定されないが、各機能ブロックのうち、データ解析部２０３、署名部２０４、識別値作成／検証部２０５、その他処理部２０７は、アプリケーションプログラムがＣＰＵ２５０によって実行されることにより実現される機能であり、データ解析部２０３およびデータ作成部２１１は、ＯＳ（Operating System）ソフトがＣＰＵ２５０によって実行されることにより実現される機能である、とすることができる。
【００３２】
本実施の形態では、ＰＣ２００において実行されているアプリケーションプログラムと他の端末において実行されているアプリケーションプログラムとの間で通信を行なう際に、各アプリケーションプログラムが相手のアプリケーションプログラムの正当性を認証したことを条件として、接続が許可される。
【００３３】
図４は、アプリケーションプログラムの認証のために、ＰＣ２００において実行される認証用データ生成の手続きを説明するための図である。
【００３４】
データ保持部２０６（たとえばＨＤＤ２６４）に保持されたアプリケーションプログラム６２０は、ファイル形式のものであり、ＰＣ２００において起動されると、ＲＡＭ２５４などで構成されるメインメモリ６１０の領域６１１にバイナリコードの形式で展開される。この展開されたアプリケーションプログラムのバイナリコードの一部分６１１Ａを特定関数（例えばハッシュ関数）で処理することによって特定識別値６３０が算出される。このバイナリコードの一部分６１１Ａは、アプリケーションプログラムが展開される領域６１１内で特定の相対位置にある。つまり、メインメモリ６１０において領域６１１のアドレスはアプリケーションプログラムを展開するたびに異なるかもしれないが、例えばその先頭アドレスから予め定められた所定の位置にあるアドレスの範囲を指定することによってバイナリコードの一部分６１１Ａが特定される。
【００３５】
バイナリコードの一部分６１１Ａとしては、アプリケーションプログラムをメモリ上に展開したときに、その相対位置が移動しない領域であって、使用中にデータの変更が行なわれない領域が用いられる。たとえば、通信モジュールが展開された部分、アプリケーションプログラムのオリジナル情報（セキュリティデータ）が保持された部分、暗号化／復号化モジュールが展開された部分、バージョン情報が展開された部分などが好適である。このバイナリコードの一部分６１１Ａを指定するための情報は、例えばアプリケーションプログラムのセキュリティデータとして組み込まれており、通信を行なう互いのＰＣ２００において予め認識されている。
【００３６】
なお、本実施の形態においては、より安全性を高めるために、上述したバイナリコードの一部分６１１Ａにユーザ情報６１２を組合わせて（例えば両情報を単純に並べる）特定関数で処理し、特定識別値６３０を算出している。このユーザ情報６１２は、通信を行なう互いのＰＣ２００が認識しているものであり、例えば以下のようなものである。
【００３７】
１）管理者用パスワード…互いのＰＣの管理者が同一である場合のパスワード
２）ネットワークインストールＩＤ…互いのＰＣのアプリケーションプログラムがネットワーク経由インストールされている場合の共通のインストールＩＤ
３）ライセンス情報…互いのＰＣアプリケーションプログラムで共通のライセンス情報
４）ワークグループパスワード…互いのＰＣが同一のワークグループに所属しており、そのワークグループにおける共通のパスワード
本実施の形態では、特定関数としてハッシュ関数を用いており、特定識別値６３０はバイナリコードの一部分６１１Ａとユーザ情報６１２を組合わせた値をハッシュ関数で演算した結果としてのハッシュ値となり、例えば１２８ｂｉｔの値である。このハッシュ値は、アプリケーションプログラムが改変されておらず、ユーザ情報６１２が変更されない限り、一定の値となる。特定関数としては、入力値が変われば出力値も一意に変更されるような関数であれば、ハッシュ関数以外の関数であっても構わない。
【００３８】
さらに、本実施の形態では、前述したように算出された特定識別値６３０を暗号化して暗号識別値６４０を生成している。この暗号化は、各ＰＣ２００が保持している電子証明書（例えば、Ｘ．５０９証明書）に含まれる公開鍵と対応した秘密鍵によって特定識別値６３０に署名を施すことで実行される。
【００３９】
図６は、通信を行なう互いのＰＣ２００においてアプリケーションプログラムの正当性を認証するために必要な認証用データの構成を説明するための図である。以降、一方のＰＣ２００で実行されるアプリケーションプログラムを「アプリ（１）」と呼び、他方のＰＣ２００で実行されるアプリケーションプログラムを「アプリ（２）」と呼ぶ。ここでのアプリケーションプログラムはファームウェアであってもよい。なお、説明上、各アプリケーションプログラムを実行しているＰＣ２００自体を「アプリ（１）」および「アプリ（２）」と表現することもある。
【００４０】
図５（Ａ）にアプリ（１）側のＰＣ２００が保持するに認証データを示し、図５（Ｂ）にアプリ（２）側のＰＣ２００が保持する認証用データを示す。
【００４１】
図５（Ａ）に示すように、アプリ（１）側のＰＣ２００は、アプリ（１）の特定識別値と暗号識別値を保持し、また、自己の証明書（１）を保持している。さらに、例えばＨＤＤ２６４に設定された外部から読出し不能なセキュリティ領域に、特定関数とユーザ情報や秘密鍵等を保持している。特定関数としては、特定関数自体であってもよいし、入力と出力の対応関係を示すデータテーブルであってもよい。秘密鍵は証明書（１）に格納された公開鍵と対応したものである。一方、図５（Ｂ）に示すように、アプリ（２）側のＰＣ２００もまた、アプリ（２）の特定識別値と暗号識別値を保持し、また、自己の証明書（２）を保持している。さらに、例えばＨＤＤ２６４に設定された外部から読出し不能なセキュリティ領域に、特定関数とユーザ情報や秘密鍵等を保持している。秘密鍵は、証明書（２）に格納された公開鍵と対応したものである。
【００４２】
図６を参照して、アプリ（１）においてアプリ（２）との通信を要求する情報が入力されるとアプリ（１）は自らの証明書（証明書（１））をアプリ（２）に対して送るとともに、上記のように算出した特定識別値と暗号識別値とをアプリ（２）に送る。また、アプリ（２）においてアプリ（１）との通信を要求する情報が入力されると、同様に、アプリ（１）に対して自らの証明書（２）と、および特定識別値と暗号識別値とをアプリ（１）へ送信する。また、相手から証明書および特定識別値と暗号識別値とを受信した場合には、当該相手に対してアプリ（１）またはアプリ（２）が、自らの証明書および特定識別値と暗号識別値とを当該相手に送り返す。
【００４３】
図７は、本実施の形態において、アプリ（２）を起動した端末（ＰＣ２００等）が、アプリ（１）をインストールされている端末（ＰＣ２００等）に対して接続の許可を求める際の処理のフローチャートである。図７では、接続の許可を求める側の端末は「送信側」と記載され、接続の許可／不許可を決定する側の端末は「受信側」と記載されている。
【００４４】
図７を参照して、送信側の端末において、アプリ（２）が起動した時点、または外部から（たとえば、入力装置２６０を介して）受信側端末に対する接続要求を指示する情報が入力された時点において、特定識別値が算出される（ステップＳＴ１０）。なお、このように算出された特定識別値を、以降「特定識別値（１）」と呼ぶ。次に、ステップＳＴ３０において、暗号識別値が作成され、かつ、当該暗号識別値がＲＡＭ２５４等のメモリに格納される。そして、ステップＳＴ４０において、特定識別値（１）と暗号識別値が受信側端末へと送信される。また、アプリ（２）側の証明書（２）もまた受信側端末へと送信される。
【００４５】
ここで、ステップＳＴ３０における暗号識別値の作成の内容について、当該処理のサブルーチンのフローチャートである図８を参照して説明する。
【００４６】
図８では、識別値作成／検証部２０５と署名部２０４における処理内容が示されている。
【００４７】
まず、識別値作成／検証部２０５において、ステップＳＡ１０として、ステップＳＴ１０で作成した特定識別値（１）が署名用データに変換されて、ステップＳＡ２０へ処理が進められる。
【００４８】
次に、識別値作成／検証部２０５において、ステップＳＡ２０として、ステップＳＡ１０における変換後のデータが署名部２０４へ送信される。
【００４９】
次に、署名部２０４において、ステップＳＢ１０として、識別値作成／検証部２０５から送信されてきたデータが受信され、そして、ステップＳＢ２０として、受信した特定識別値（１）に対して自機（送信側のＰＣ２００）の秘密鍵で署名が行なわれ、ステップＳＢ３０へ処理が進められる。
【００５０】
ステップＳＢ３０では、署名部２０４において、ステップＳＢ３０として、署名後のデータ（暗号識別値）を識別値作成／検証部２０５へ送信する。
【００５１】
そして、識別値作成／検証部２０５では、ステップＳＡ３０として、署名部２０４から送信されてきた暗号識別値を受信し、その後、ステップＳＡ４０として、メモリに適宜記憶させて、処理を図７にリターンさせる。なお、暗号識別値は、ファイルとして不揮発性記憶装置に保存してもよいものの、アプリケーションプログラムの終了と同時に削除される。また、暗号識別値は、特定関数と同様に、ＨＤＤ２６４などの不揮発性記憶装置において、外部から読み出し不能な領域（セキュリティ領域）に保持されているものとすることができる。
【００５２】
図７に戻って、ステップＳＴ４０で送信側端末から受信側端末に特定識別値（１）と暗号識別値が送信されると、受信側の端末では、ステップＳＲ１０で特定識別値（１）と暗号識別値とが受信され、ステップＳＲ２０で、受信した証明書（証明書（２））からアプリ（２）の公開鍵を抽出して、当該公開鍵により暗号識別値を復号し（検証し）、ステップＳＲ３０へ処理を進められる。
【００５３】
ステップＳＲ３０では、アプリ（２）から送信されてきた暗号識別値の暗号化前のデータであると考えられる特定識別値（復号化特定識別値）を抽出する。ここで抽出された特定識別値を、以降「特定識別値（２）」と呼ぶ。
【００５４】
次に、ステップＳＲ３１では、受信側端末において、特定識別値が算出される。なお、ここで算出された特定識別値を、以降「特定識別値（３）」と呼ぶ。
【００５５】
次に、ステップＳＲ４０では、特定識別値（１）と特定識別値（２）と特定識別値（３）とが比較される。そして、これらのすべてが同一であればステップＳＲ５０へ処理が進められ、同一ではないと判断されるとステップＳＲ６０へ処理を進められる。
【００５６】
ステップＳＲ５０では、アプリ（１）ではアプリ（２）との通信が許可され、通信のためのその後の処理が実行される。
【００５７】
一方、ステップＳＲ６０では、アプリ（２）との間での通信を拒否するための処理が実行される。
【００５８】
本実施の形態において、アプリ（１）側ＰＣとアプリ（２）側ＰＣで共通情報として保持されていなければならない情報を以下に列記する。
【００５９】
・特定関数（ハッシュ関数）
・アプリケーションプログラムのどの部分を特定関数（ハッシュ関数）に入力するかについての情報（この情報は、アプリケーションプログラムをメモリ上に展開した場合のメモリ上での相対的なアドレスの範囲を示すものである。なお、ここでの「部分」とは、アプリケーションプログラムの実行によって値が変化しないような部分が好適である。具体的には、たとえば、通信モジュール部、アプリケーションプログラムオリジナル情報（セキュリティデータ）保持部／展開部、符号化・復号化モジュール展開部、バージョン情報展開部等が挙げられる。
【００６０】
・ユーザ情報（ただし、ユーザ情報は特定識別値算出に必須ではない）
・その他の情報（公開鍵認証のために必要な情報。たとえば、各ＰＣのユーザに対して作成された秘密鍵、相手ＰＣの公開鍵（証明書）、ＣＡのルート証明書。）
また、ステップＳＲ４０では、以上説明した本実施の形態では、ユーザ情報は、特定識別値（１）と特定識別値（２）と特定識別値（３）が比較され、これらがすべて一致しなければ接続が許可されないが、本発明は必ずしもこのように構成される必要はない。
【００６１】
つまり、本実施の形態のネットワークは、特定識別値（１）か暗号識別値のいずれかが送信側端末から受信側端末に送信されれば良いものとして構成することができる。そして、特定識別値（１）が送信された場合には、受信側端末では、ステップＳＲ４０において、特定識別値（１）と特定識別値（３）が一致すると判断すると、接続を許可する。このような場合には、送信側端末において暗号識別値の算出（ステップＳＴ３０）を省略でき、また、受信側端末では特定識別値（２）の抽出（ステップＳＲ３０）を省略でき、そして、受信側端末における判断の処理（ステップＳＲ４０）を簡略化できる。
【００６２】
一方、暗号識別値が送信された場合には、受信側端末では、ステップＳＲ４０において、特定識別値（２）と特定識別値（３）が一致すると判断すると、接続を許可する。このような場合にも、受信側端末における判断処理（ステップＳＲ４０）の簡略化が可能となる。
【００６３】
なお、以上の第１の実施の形態の説明において、アプリ（１）とアプリ（２）とは、認証局等が発行した「ルート証明書」を格納しておき、かつ、アプリ（１）またはアプリ（２）は、各々、自己の証明書（１）または証明書（２）について、認証局（認証サーバ）から署名を得ておき、相手方に送信する際には、認証局の署名ととともに、自己の証明書を送る構成とすることもできる。このようにすることで、受信側または送信側のアプリケーションプログラムは、相手方のアプリケーションプログラムが認証局もしくはそれに類する正式な機関から発行された証明書を持つ相手であることを確認可能となり、証明書の信頼度を向上させることができる。
【００６４】
［第２の実施の形態］
以上説明した第１の実施の形態では、アプリ（２）を起動された端末がアプリ（１）をインストールされた端末に対して接続要求をする際、図７を参照して説明したように、送信側端末は、特定識別値と暗号識別値を受信側端末に送信するたびに作成していた。
【００６５】
一方、本実施の形態では、送信側端末は、図９に示すように、特定のタイミング（たとえば、アプリ（２）のインストール時やバージョンアップ時）で特定識別値とそれに基づいた暗号識別値を作成し、保存する（ステップＳＴ１）。
【００６６】
そして、受信側端末から暗号識別値および特定識別値の送信要求等を受けると、送信側端末は、ステップＳＴ１０で、特定識別値（１）を算出し、そして、ステップＳＴ４０で、ステップＳＴ１０で算出した特定識別値（１）とステップＳＴ１で保存していた暗号識別値とを、受信側端末へ送信する。
【００６７】
なお、受信側端末では、特定識別値（２）は、送信側端末から受信した暗号識別値から抽出される（ステップＳＲ３０）。また、図７を参照して説明したのと同様に、本実施の形態においても、特定識別値（１）と特定識別値（２）と特定識別値（３）のすべてが一致しなければ、送信側端末との接続は拒否される。つまり、特定識別値（１）と特定識別値（２）とが一致しない場合でも、受信側端末は送信側端末との接続を拒否する。
【００６８】
したがって、本実施の形態では、送信側端末において、アプリ（１）に、暗号識別値が作成されてから特定識別値（１）が算出されるまでの間に改変を加えられた場合、特定識別値（１）と特定識別値（２）が一致しなくなる。このような場合、本実施の形態では、ステップＳＲ４０においてＮＯの判断がなされるため、受信側端末は、送信側端末との接続を拒否することができる。
【００６９】
［第３の実施の形態］
本発明の第３の実施の形態では、第１の実施の形態に対して、送信側端末であるアプリ（２）における暗号識別値の作成の態様が異なる。
【００７０】
図１０は、本実施の形態の送信側端末（アプリ（２））において暗号識別値が作成される際のフローチャートである。なお、このフローチャートは、図７のステップＳＴ３０のサブルーチンの変形例に相当する。また、本実施の形態では、暗号識別値の生成に関して、アプリ（２）をインストールされた端末（クライアント）と認証サーバ（ＣＡ（Certification Authority）サーバ）との間でデータの送受信が行なわれる。
【００７１】
図１０を参照して、クライアントにおいて、アプリ（２）が起動されると、ステップＳＣ１０として、ステップＳＴ１０（図７参照）で作成した特定識別値（１）が署名承認用データに変換されて、ステップＳＣ２０へ処理が進められる。
【００７２】
次に、クライアントにおいて、ステップＳＣ２０として、ステップＳＣ１０における変換後のデータがＣＡサーバへ送信される。
【００７３】
次に、ＣＡサーバでは、ステップＳＤ１０として、クライアントから送信されてきたデータが受信され、そして、ステップＳＤ２０として、受信したデータの中から、証明書が抽出され、ステップＳＤ３０へ処理が進められる。
【００７４】
そして、ステップＳＤ３０では、ＣＡサーバは、ステップＳＤ２０で抽出した証明書に基づいてクライエントが正当なものであるか否かを判断し、正当なものであると判断するとステップＳＤ５０へ処理を進め、正当なものではないと判断するとステップＳＤ４０へ処理を進める。
【００７５】
ステップＳＤ５０では、ＣＡサーバは、ステップＳＤ１０で受信したデータの中から特定識別値（１）を抽出し、当該特定識別値（１）に対してＣＡサーバで保持している秘密鍵を用いて署名を行ない、ステップＳＤ６０へ処理を進める。ステップＳＤ６０では、ＣＡサーバは、署名後の特定識別値（１）（暗号識別値）をクライアントへ送信する。
【００７６】
一方、ステップＳＤ４０では、ＣＡサーバは、クライアントに対し署名を拒否する旨を通知し、ステップＳＤ５０のような署名を行なわず処理を終了させる。
【００７７】
そして、クライアントでは、ステップＳＣ３０として、ＣＡサーバから送信されてきた暗号識別値を受信し、その後、ステップＳＣ４０として、ステップＳＡ４０と同様に、暗号識別値をメモリに適宜記憶させる。この場合も、第１の実施の形態と同様にして、暗号識別値は、ファイルとして不揮発性記憶装置に保存してもよいものの、アプリケーションプログラムの終了と同時に削除される。また、暗号識別値は、特定関数や相手方から受信した証明書と同様に、ＨＤＤ２６４などの不揮発性記憶装置において、外部から読み出し不能な領域（セキュリティ領域）に保持されているものとすることができる。
【００７８】
以上説明したように、本実施の形態では、暗号識別値は、ＣＡサーバの秘密鍵によって署名（暗号化）されたものとなる。これに伴って、受信側端末（アプリ（１））において、暗号識別値の署名を確認するステップＳＲ２０（図７参照）および暗号識別値から特定識別値（２）を抽出するステップＳＲ３０（図７参照）で用いられる公開鍵は、ＣＡサーバの証明書であるルート証明書に格納されたものになる。
【００７９】
以上のような構成でも、第１の実施の形態と同様の効果を奏することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００８０】
【図１】本発明の第１の実施の形態の情報処理装置を含むネットワーク構成を模式的に示す図である。
【図２】図１のＰＣの機能ブロックを模式的に示す図である。
【図３】図１のＰＣの制御ブロック図である。
【図４】図１のＰＣにおいて、通信相手の端末にアプリケーションプログラムの正当性を認証させるためにデータを作成する手続きを説明するための図である。
【図５】図１のＰＣにおいて、通信相手の端末において実行されているアプリケーションプログラムの正当性を認証するために必要な構成を説明するための図である。
【図６】図１のＰＣにおいて、通信相手の端末において実行されているアプリケーションプログラムの正当性の認証の際のデータの流れを説明するための図である。
【図７】本実施の形態において、アプリ（２）を起動した端末が、アプリ（１）をインストールされている端末に対して接続の許可を求める際の処理のフローチャートである。
【図８】図７における暗号識別値の作成についてのサブルーチンのフローチャートである。
【図９】本発明の第２の実施の形態において、アプリ（２）を起動した端末が、アプリ（１）をインストールされている端末に対して接続の許可を求める際の処理のフローチャートである。
【図１０】本発明の第３の実施の形態における暗号識別値の作成についてのサブルーチンのフローチャートであり、図８の変形例に相当する図である。
【符号の説明】
【００８１】
１００  モニタ、２００  ＰＣ、２０２  データ受信部、２０３  データ解析部、２０４  署名部、２０５  識別値作成／検証部、２０６  データ保持部、２０７  処理部、２１１  データ作成部、２１２  データ送信部、２５０  ＣＰＵ、２５２  メディアドライブ、２５２Ａ  出力媒体、２５４  ＲＡＭ、２５６  ＲＯＭ、２６０  入力装置、２６２  通信装置、２６４  ＨＤＤ、３００  ネットワークケーブル、４００  ハブ、５００  ルータ、６１０  メインメモリ、６１１  第１の領域、６１１Ａ  領域、６１２  第２の領域、６２０  ファイル、６３０  特定識別値、６４０  暗号識別値。
【図１】
0004998314.tif 000002
【図２】
0004998314.tif 000003
【図３】
0004998314.tif 000004
【図４】
0004998314.tif 000005
【図５】
0004998314.tif 000006
【図６】
0004998314.tif 000007
【図７】
0004998314.tif 000008
【図８】
0004998314.tif 000009
【図９】
0004998314.tif 000010
【図１０】
0004998314.tif 000011