説明

通信制御方法および通信制御プログラム

【課題】異なる端末で実行されるアプリケーションの認証が速やかにかつ確実に行なわれる、アプリケーション認証方法およびアプリケーション認証プログラムを提供する。
【解決手段】アプリ(1)側のPCは、アプリ(1)の特定識別値と暗号識別値を保持し、自己の証明書(1)を保持し、外部から読出し不能なセキュリティ領域に、特定関数(たとえばハッシュ関数)とユーザ情報や秘密鍵等を保持している。秘密鍵は証明書(1)に格納された公開鍵と対応したものである。アプリ(1)は、証明書(1)と上記の特定識別値および暗号識別値をアプリ(2)に送信する。また、アプリ(1)は、アプリ(2)から証明書(2)と特定識別値と暗号識別値を受信し、これらに基づいてアプリ(2)の正当性を判断し、正当であると判断するとアプリ(2)との通信を許可する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信制御方法および通信制御プログラムに関し、特に、通信相手の端末との通信の許可/不許可を決定する通信制御方法および通信制御プログラムに関する。
【背景技術】
【0002】
一般的に、ユーザが、ある端末において、あるアプリケーションプログラムを実行させて、他のアプリケーションプログラムを実行する他の端末との間で通信を行なう場合、アプリケーションプログラム間の通信が安全になされることが望まれる。なぜなら、通信相手のアプリケーションプログラム(上記した他のアプリケーションプログラム)が違法に改造されていたり、あるいは接続の補償がされていない悪意のあるアプリケーションプログラムであった場合、当該ユーザが利用するある端末からの情報漏洩のおそれが生じるからである。
【0003】
クライエント端末で実行されるアプリケーションプログラムの正当性を検証する手法については、特許文献1(特開2005−293504号公報)や特許文献2(特開2006−203564号公報)に開示がある。
【0004】
特許文献1は、クライアント装置で起動されるアプリケーションプログラムの正当性をサーバ装置が確認する際に、クライアント装置内でアプリケーションプログラムの正当性を確認し、その結果をサーバ装置に送信する技術を開示している。クライアント装置内でのアプリケーションプログラムの正当性の確認が行なわれる場合、アプリケーションプログラムのハッシュデータがハッシュ関数を用いて作成され、当該作成されたハッシュデータが予め用意されたデータを比較され、これらが一致すればアプリケーションプログラムが正当なものであるという判断がなされる。
【0005】
特許文献2は、サーバから送出されたプログラムをノードが実行し、実行したプログラムおよびそのプログラムの実行結果を含む結果情報をサーバに送り返すグリッドコンピューティングシステムを開示している。このシステムでは、ノードが結果情報をサーバに送り返す際に、実行後のプログラムのハッシュ値を算出してサーバに送信する。サーバでは、そのノードから受信したハッシュ値と、ノードに送出したプログラム(サーバに記憶されている)から算出したハッシュ値とが比較され、これらの一致によって、ノードによって実行されたプログラムが改ざんされたものではないことが検証されている。
【特許文献1】特開2005−293504号公報
【特許文献2】特開2006−203564号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記した特許文献1に開示されたような従来技術では、クライアント端末が自ら起動するアプリケーションプログラムの正当性を検証し、その結果を示す証明データをサーバに送信する。この際の正当性の検証は、アプリケーションプログラム全体が対象とされていた。つまり、プログラム全体のハッシュ値が算出され、正当性の検証に用いられていた。
【0007】
また、特許文献2に開示された従来技術は、グリッドコンピュータシステムにおいて、サーバからプログラムを複数のノードに配布し、各ノードが対応するプログラムの実行が完了した時点で、各ノードの秘密鍵を用いて、ハッシュ関数が演算されたプログラムおよびプログラムの実行結果にデジタル署名を行うものである。この際の正当性の検証も、アプリケーションプログラム全体が対象とされていた。つまり、プログラム全体のハッシュ値が算出され、正当性の検証に用いられていた。
【0008】
さらに、従来では、特許文献1および特許文献2に記載されるように、プログラム自体(全体)のハッシュ値が算出されて当該プログラムの正当性の検証がなされていたため、当該プログラムが当該プログラムの使用権限の無い第三者に入手された場合でも正当なものであると判断されてしまう場合があった。
【0009】
本発明は、係る実情に鑑み考え出されたものであり、その目的は、異なる端末で実行されるアプリケーションプログラムの認証を速やかにかつ確実に行なうことができる通信制御方法および通信制御プログラムを提供することである。
【0010】
また、本発明の他の目的は、アプリケーションプログラムが当該プログラムプログラムの使用権限の無い第三者に入手された場合に正当なものであると判断されてしまう事態を回避することができる通信制御方法および通信制御プログラムを提供することである。
【課題を解決するための手段】
【0011】
本発明のある局面に従った通信制御方法は、第1の情報処理装置と第2の情報処理装置の間での通信を制御する通信制御方法であって、前記第1の情報処理装置が、第1のアプリケーションプログラムを第1のメモリに展開するステップと、前記第1の情報処理装置が、前記第1のメモリに展開された前記第1のアプリケーションプログラムのバイナリコードの特定の一部分と特定関数を用いて第1の識別値を算出するステップと、前記第1の情報処理装置が、前記第1の識別値を前記第2の情報処理装置に送信するステップと、前記第2の情報処理装置が、第2のアプリケーションプログラムを第2のメモリに展開するステップと、前記第2の情報処理装置が、前記第2のメモリに展開された前記第2のアプリケーションプログラムのバイナリコードの特定の一部分と前記特定関数を用いて第2の識別値を算出するステップと、前記第2の情報処理装置が、前記第1の情報処理装置から受信した前記第1の識別値を前記第2の識別値と比較し、前記第1の識別値と前記第2の識別値とが同一であった場合に、前記第1の情報処理装置との接続を許可するステップとを備えることを特徴とする。
【0012】
また、本発明の通信制御方法では、前記第1の情報処理装置は、前記第1の識別値を暗号化して前記第2の情報処理装置に送信し、前記第2の情報処理装置は、暗号化された前記第1の識別値を復号化した上で、前記第2の識別値と比較することが好ましい。
【0013】
また、本発明の通信制御方法では、前記第1の情報処理装置は、暗号化された前記第1の識別値および暗号化されていない前記第1の識別値の両方を前記第2の情報処理装置に送信し、前記第2の情報処理装置は、暗号化された前記第1の識別値を復号化した上で暗号化されていない前記第1の識別値と比較し、これらが同一であった場合に、前記第1の情報処理装置との接続を許可することが好ましい。
【0014】
また、本発明の通信制御方法では、前記第1の情報処理装置は、所定のタイミングで、前記第1の識別値を暗号化した上で記憶装置に保持し、かつ、前記第2の情報処理装置との通信を行なうたびに前記第1の識別値の算出を行ない、前記第2の情報処理装置に、前記記憶装置に暗号化されて保持された前記第1の識別値および前記第2の情報処理装置との通信の際に算出した前記第1の識別値の両方を送信することが好ましい。
【0015】
また、本発明の通信制御方法では、前記第1の情報処理装置は、前記第1の識別値を暗号化するために認証サーバに送信し、前記認証サーバから暗号化された前記第1の識別値を受信することが好ましい。
【0016】
また、本発明の通信制御方法では、前記第1の情報処理装置は、前記第1の識別値を算出するに際してユーザ情報をさらに用い、前記第2の情報処理装置は、前記第2の識別値を算出するに際して前記ユーザ情報をさらに用いることが好ましい。
【0017】
本発明に従った通信制御プログラムは、他の情報処理装置との通信を制御する通信制御プログラムであって、アプリケーションプログラムが実行されるに際してメモリ上に展開された当該アプリケーションプログラムのバイナリコードの特定の一部分と特定関数を用いて第1の識別値を算出するステップと、前記第1の識別値を他の情報処理装置に送信するステップと、前記他の情報処理装置から第2の識別値を受信するステップと、前記第2の識別値を前記第1の識別値と比較し、前記第1の識別値と前記第2の識別値とが同一であった場合に、前記他の情報処理装置との接続を許可するステップとを、情報処理装置に実行させることを特徴とする。
【発明の効果】
【0018】
本発明によれば、アプリケーションプログラムを実行する情報処理装置同士において、アプリケーションプログラムがメモリ上に展開された際のバイナリコードの特定の一部分に基づいて行なわれるため、相手の情報端末装置のアプリケーションプログラムの認証を速やかにかつ確実に行なうことができる。
【0019】
また、本発明によれば、アプリケーションプログラムの認証がメモリ上に展開されたバイナリコードの特定の一部分に基づいて行なわれるため、アプリケーションプログラム自体が第三者に入手された場合においても、どの部分を認証に用いているかは容易にはわからない。したがって、正当性の認証をより安全に行なうことができる。
【発明を実施するための最良の形態】
【0020】
以下、本発明の一実施の形態である情報処理装置について、図面を参照して説明する。
[第1の実施の形態]
図1は、本実施の形態の情報処理装置を含むネットワークの構成を模式的に示す図である。
【0021】
図1を参照して、このネットワークには、通信制御装置の一実施の形態であるパーソナルコンピュータ(PC)が複数含まれている。図1では、各PC200が、PC(1)〜PC(n)で示されている。各PC200は、ネットワークケーブル300を通じてハブ400と接続されている。各PC200は、ハブ400およびルータ500を介して、図示しない別のネットワークに接続された端末との接続が可能に構成されている。図2は、PC200のハードウェア構成を模式的に示す図である。また、各PC200は、当該PC200内の情報処理の結果等を表示させるためのモニタ100に接続されている。
【0022】
図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を介して他の端末やネットワークと接続可能であり、また、モニタ100に当該PC200において処理されている情報を表示させることができる。
【0023】
また、CPU250が実行するプログラムのファイルは、ROM256やHDD264のハードディスクに記憶されていてもよいし、通信装置262を介してアクセスする外部の記憶装置に記憶されているものであってもよい。また、HDD264のハードディスクでは、メディアドライブ252を介して記憶媒体252Aに記憶されたファイルや、通信装置262を介してアクセス可能となる外部の記憶装置に記憶されたファイルがHDD264のハードディスクに記憶されて、CPU250はこのファイルを実行するように構成されていてもよい。
【0024】
CPU250が、アプリケーションプログラムを実行する際には、たとえば、HDD264のような不揮発性の記憶媒体に記憶されたアプリケーションプログラムに基づいて、RAM254にバイナリ形式のプログラムと実行動作に使用されるデータとが展開される。このようなRAM254に展開されたバイナリ形式のプログラム(以下、「バイナリコード」と呼ぶ)は、CPU250のハードウェア構成に依存して、CPU250が直接実行することが可能な、いわゆるネイティブコードである。
【0025】
図3は、PC200の機能ブロックを模式的に示す。
図3を参照して、ハブ400(図1を参照)を介してPC200へ送信されるデータは、データ受信部202において受信される。データ受信部202は受信したデータ(パケット)が、自機宛のパケットであるか否かを判断し、自機宛のデータであると判断すると、当該データをデータ解析部203に送る。データ解析部203は、受信されたパケットからデータを抽出し、抽出されたデータの中に処理命令が含まれていれば、署名部204、識別値作成/検証部205、処理部207のいずれかで処理をさせる。
【0026】
識別値作成/検証部205は、RAM254上に展開されたアプリケーションプログラムから、その一部を抽出し、データ保持部206において保持されているユーザ情報と合せて、特定識別値を作成する。署名部204は、識別値作成/検証部205で作成された特定識別値を利用して暗号識別値を作成する。作成された特定識別値および暗号識別値は、データ保持部206に記憶される。なお、これらの識別値の内容および作成方法については、後述する。
【0027】
識別値作成/検証部205は、ルータ500を介して接続されている他の端末において実行されているプログラムと通信を開始する際に、当該他の端末において実行されているアプリケーションから送られてきた特定識別値と暗号識別値とを後述する態様で比較する。そして、識別値作成/検証部205は、当該比較結果に応じて、上記した他の端末において実行されているアプリケーションとの間の接続の許可/拒否を決定する。
【0028】
識別値作成/検証部205は、他の端末へメッセージを送信する場合、送信するべきデータを作成してデータ作成部211に送る。そして、データ作成部211は、受取ったデータをネットワークパケットの形に成形し、データ送信部212へ送る。データ送信部212は、データ作成部211が受取ったデータなどによって決定される送り先に当該パケットが送られるように、当該パケットをハブ400へ送信する。
【0029】
以上、図3に示したブロック構成において、各機能ブロックの機能を実現するハードウェアについては、特に限定されないが、たとえば、データ保持部206は、RAM254およびHDD264によって構成される。また、署名部204、識別値作成/検証部205、処理部207、データ解析部203、データ作成部211は、HDD264のハードディスクに記憶されたプログラムを実行するCPU250およびRAM254によって構成される。データ受信部202およびデータ送信部212は、通信装置262によって構成される。なお、データ保持部206には、不揮発性記憶装置として、HDD264に加えて、あるいは、HDD264に代えて、フラッシュメモリなどのような記憶装置が設けられていてもよい。
【0030】
その他処理部207は、上述したような機能以外の機能、たとえば、アプリケーションプログラムの固有のサービスを提供する処理(たとえば、アプリケーションプログラムがワープロ用のソフトであるならば、ワープロ機能を提供する処理)や、アプリケーションプログラムをオンラインで更新する処理や、更新の有無等の問合せや、プログラムのバージョンの管理等の処理を行う。
【0031】
したがって、図3に示された例では、特に限定されないが、各機能ブロックのうち、データ解析部203、署名部204、識別値作成/検証部205、その他処理部207は、アプリケーションプログラムがCPU250によって実行されることにより実現される機能であり、データ解析部203およびデータ作成部211は、OS(Operating System)ソフトがCPU250によって実行されることにより実現される機能である、とすることができる。
【0032】
本実施の形態では、PC200において実行されているアプリケーションプログラムと他の端末において実行されているアプリケーションプログラムとの間で通信を行なう際に、各アプリケーションプログラムが相手のアプリケーションプログラムの正当性を認証したことを条件として、接続が許可される。
【0033】
図4は、アプリケーションプログラムの認証のために、PC200において実行される認証用データ生成の手続きを説明するための図である。
【0034】
データ保持部206(たとえばHDD264)に保持されたアプリケーションプログラム620は、ファイル形式のものであり、PC200において起動されると、RAM254などで構成されるメインメモリ610の領域611にバイナリコードの形式で展開される。この展開されたアプリケーションプログラムのバイナリコードの一部分611Aを特定関数(例えばハッシュ関数)で処理することによって特定識別値630が算出される。このバイナリコードの一部分611Aは、アプリケーションプログラムが展開される領域611内で特定の相対位置にある。つまり、メインメモリ610において領域611のアドレスはアプリケーションプログラムを展開するたびに異なるかもしれないが、例えばその先頭アドレスから予め定められた所定の位置にあるアドレスの範囲を指定することによってバイナリコードの一部分611Aが特定される。
【0035】
バイナリコードの一部分611Aとしては、アプリケーションプログラムをメモリ上に展開したときに、その相対位置が移動しない領域であって、使用中にデータの変更が行なわれない領域が用いられる。たとえば、通信モジュールが展開された部分、アプリケーションプログラムのオリジナル情報(セキュリティデータ)が保持された部分、暗号化/復号化モジュールが展開された部分、バージョン情報が展開された部分などが好適である。このバイナリコードの一部分611Aを指定するための情報は、例えばアプリケーションプログラムのセキュリティデータとして組み込まれており、通信を行なう互いのPC200において予め認識されている。
【0036】
なお、本実施の形態においては、より安全性を高めるために、上述したバイナリコードの一部分611Aにユーザ情報612を組合わせて(例えば両情報を単純に並べる)特定関数で処理し、特定識別値630を算出している。このユーザ情報612は、通信を行なう互いのPC200が認識しているものであり、例えば以下のようなものである。
【0037】
1)管理者用パスワード…互いのPCの管理者が同一である場合のパスワード
2)ネットワークインストールID…互いのPCのアプリケーションプログラムがネットワーク経由インストールされている場合の共通のインストールID
3)ライセンス情報…互いのPCアプリケーションプログラムで共通のライセンス情報
4)ワークグループパスワード…互いのPCが同一のワークグループに所属しており、そのワークグループにおける共通のパスワード
本実施の形態では、特定関数としてハッシュ関数を用いており、特定識別値630はバイナリコードの一部分611Aとユーザ情報612を組合わせた値をハッシュ関数で演算した結果としてのハッシュ値となり、例えば128bitの値である。このハッシュ値は、アプリケーションプログラムが改変されておらず、ユーザ情報612が変更されない限り、一定の値となる。特定関数としては、入力値が変われば出力値も一意に変更されるような関数であれば、ハッシュ関数以外の関数であっても構わない。
【0038】
さらに、本実施の形態では、前述したように算出された特定識別値630を暗号化して暗号識別値640を生成している。この暗号化は、各PC200が保持している電子証明書(例えば、X.509証明書)に含まれる公開鍵と対応した秘密鍵によって特定識別値630に署名を施すことで実行される。
【0039】
図6は、通信を行なう互いのPC200においてアプリケーションプログラムの正当性を認証するために必要な認証用データの構成を説明するための図である。以降、一方のPC200で実行されるアプリケーションプログラムを「アプリ(1)」と呼び、他方のPC200で実行されるアプリケーションプログラムを「アプリ(2)」と呼ぶ。ここでのアプリケーションプログラムはファームウェアであってもよい。なお、説明上、各アプリケーションプログラムを実行しているPC200自体を「アプリ(1)」および「アプリ(2)」と表現することもある。
【0040】
図5(A)にアプリ(1)側のPC200が保持するに認証データを示し、図5(B)にアプリ(2)側のPC200が保持する認証用データを示す。
【0041】
図5(A)に示すように、アプリ(1)側のPC200は、アプリ(1)の特定識別値と暗号識別値を保持し、また、自己の証明書(1)を保持している。さらに、例えばHDD264に設定された外部から読出し不能なセキュリティ領域に、特定関数とユーザ情報や秘密鍵等を保持している。特定関数としては、特定関数自体であってもよいし、入力と出力の対応関係を示すデータテーブルであってもよい。秘密鍵は証明書(1)に格納された公開鍵と対応したものである。一方、図5(B)に示すように、アプリ(2)側のPC200もまた、アプリ(2)の特定識別値と暗号識別値を保持し、また、自己の証明書(2)を保持している。さらに、例えばHDD264に設定された外部から読出し不能なセキュリティ領域に、特定関数とユーザ情報や秘密鍵等を保持している。秘密鍵は、証明書(2)に格納された公開鍵と対応したものである。
【0042】
図6を参照して、アプリ(1)においてアプリ(2)との通信を要求する情報が入力されるとアプリ(1)は自らの証明書(証明書(1))をアプリ(2)に対して送るとともに、上記のように算出した特定識別値と暗号識別値とをアプリ(2)に送る。また、アプリ(2)においてアプリ(1)との通信を要求する情報が入力されると、同様に、アプリ(1)に対して自らの証明書(2)と、および特定識別値と暗号識別値とをアプリ(1)へ送信する。また、相手から証明書および特定識別値と暗号識別値とを受信した場合には、当該相手に対してアプリ(1)またはアプリ(2)が、自らの証明書および特定識別値と暗号識別値とを当該相手に送り返す。
【0043】
図7は、本実施の形態において、アプリ(2)を起動した端末(PC200等)が、アプリ(1)をインストールされている端末(PC200等)に対して接続の許可を求める際の処理のフローチャートである。図7では、接続の許可を求める側の端末は「送信側」と記載され、接続の許可/不許可を決定する側の端末は「受信側」と記載されている。
【0044】
図7を参照して、送信側の端末において、アプリ(2)が起動した時点、または外部から(たとえば、入力装置260を介して)受信側端末に対する接続要求を指示する情報が入力された時点において、特定識別値が算出される(ステップST10)。なお、このように算出された特定識別値を、以降「特定識別値(1)」と呼ぶ。次に、ステップST30において、暗号識別値が作成され、かつ、当該暗号識別値がRAM254等のメモリに格納される。そして、ステップST40において、特定識別値(1)と暗号識別値が受信側端末へと送信される。また、アプリ(2)側の証明書(2)もまた受信側端末へと送信される。
【0045】
ここで、ステップST30における暗号識別値の作成の内容について、当該処理のサブルーチンのフローチャートである図8を参照して説明する。
【0046】
図8では、識別値作成/検証部205と署名部204における処理内容が示されている。
【0047】
まず、識別値作成/検証部205において、ステップSA10として、ステップST10で作成した特定識別値(1)が署名用データに変換されて、ステップSA20へ処理が進められる。
【0048】
次に、識別値作成/検証部205において、ステップSA20として、ステップSA10における変換後のデータが署名部204へ送信される。
【0049】
次に、署名部204において、ステップSB10として、識別値作成/検証部205から送信されてきたデータが受信され、そして、ステップSB20として、受信した特定識別値(1)に対して自機(送信側のPC200)の秘密鍵で署名が行なわれ、ステップSB30へ処理が進められる。
【0050】
ステップSB30では、署名部204において、ステップSB30として、署名後のデータ(暗号識別値)を識別値作成/検証部205へ送信する。
【0051】
そして、識別値作成/検証部205では、ステップSA30として、署名部204から送信されてきた暗号識別値を受信し、その後、ステップSA40として、メモリに適宜記憶させて、処理を図7にリターンさせる。なお、暗号識別値は、ファイルとして不揮発性記憶装置に保存してもよいものの、アプリケーションプログラムの終了と同時に削除される。また、暗号識別値は、特定関数と同様に、HDD264などの不揮発性記憶装置において、外部から読み出し不能な領域(セキュリティ領域)に保持されているものとすることができる。
【0052】
図7に戻って、ステップST40で送信側端末から受信側端末に特定識別値(1)と暗号識別値が送信されると、受信側の端末では、ステップSR10で特定識別値(1)と暗号識別値とが受信され、ステップSR20で、受信した証明書(証明書(2))からアプリ(2)の公開鍵を抽出して、当該公開鍵により暗号識別値を復号し(検証し)、ステップSR30へ処理を進められる。
【0053】
ステップSR30では、アプリ(2)から送信されてきた暗号識別値の暗号化前のデータであると考えられる特定識別値(復号化特定識別値)を抽出する。ここで抽出された特定識別値を、以降「特定識別値(2)」と呼ぶ。
【0054】
次に、ステップSR31では、受信側端末において、特定識別値が算出される。なお、ここで算出された特定識別値を、以降「特定識別値(3)」と呼ぶ。
【0055】
次に、ステップSR40では、特定識別値(1)と特定識別値(2)と特定識別値(3)とが比較される。そして、これらのすべてが同一であればステップSR50へ処理が進められ、同一ではないと判断されるとステップSR60へ処理を進められる。
【0056】
ステップSR50では、アプリ(1)ではアプリ(2)との通信が許可され、通信のためのその後の処理が実行される。
【0057】
一方、ステップSR60では、アプリ(2)との間での通信を拒否するための処理が実行される。
【0058】
本実施の形態において、アプリ(1)側PCとアプリ(2)側PCで共通情報として保持されていなければならない情報を以下に列記する。
【0059】
・特定関数(ハッシュ関数)
・アプリケーションプログラムのどの部分を特定関数(ハッシュ関数)に入力するかについての情報(この情報は、アプリケーションプログラムをメモリ上に展開した場合のメモリ上での相対的なアドレスの範囲を示すものである。なお、ここでの「部分」とは、アプリケーションプログラムの実行によって値が変化しないような部分が好適である。具体的には、たとえば、通信モジュール部、アプリケーションプログラムオリジナル情報(セキュリティデータ)保持部/展開部、符号化・復号化モジュール展開部、バージョン情報展開部等が挙げられる。
【0060】
・ユーザ情報(ただし、ユーザ情報は特定識別値算出に必須ではない)
・その他の情報(公開鍵認証のために必要な情報。たとえば、各PCのユーザに対して作成された秘密鍵、相手PCの公開鍵(証明書)、CAのルート証明書。)
また、ステップSR40では、以上説明した本実施の形態では、ユーザ情報は、特定識別値(1)と特定識別値(2)と特定識別値(3)が比較され、これらがすべて一致しなければ接続が許可されないが、本発明は必ずしもこのように構成される必要はない。
【0061】
つまり、本実施の形態のネットワークは、特定識別値(1)か暗号識別値のいずれかが送信側端末から受信側端末に送信されれば良いものとして構成することができる。そして、特定識別値(1)が送信された場合には、受信側端末では、ステップSR40において、特定識別値(1)と特定識別値(3)が一致すると判断すると、接続を許可する。このような場合には、送信側端末において暗号識別値の算出(ステップST30)を省略でき、また、受信側端末では特定識別値(2)の抽出(ステップSR30)を省略でき、そして、受信側端末における判断の処理(ステップSR40)を簡略化できる。
【0062】
一方、暗号識別値が送信された場合には、受信側端末では、ステップSR40において、特定識別値(2)と特定識別値(3)が一致すると判断すると、接続を許可する。このような場合にも、受信側端末における判断処理(ステップSR40)の簡略化が可能となる。
【0063】
なお、以上の第1の実施の形態の説明において、アプリ(1)とアプリ(2)とは、認証局等が発行した「ルート証明書」を格納しておき、かつ、アプリ(1)またはアプリ(2)は、各々、自己の証明書(1)または証明書(2)について、認証局(認証サーバ)から署名を得ておき、相手方に送信する際には、認証局の署名ととともに、自己の証明書を送る構成とすることもできる。このようにすることで、受信側または送信側のアプリケーションプログラムは、相手方のアプリケーションプログラムが認証局もしくはそれに類する正式な機関から発行された証明書を持つ相手であることを確認可能となり、証明書の信頼度を向上させることができる。
【0064】
[第2の実施の形態]
以上説明した第1の実施の形態では、アプリ(2)を起動された端末がアプリ(1)をインストールされた端末に対して接続要求をする際、図7を参照して説明したように、送信側端末は、特定識別値と暗号識別値を受信側端末に送信するたびに作成していた。
【0065】
一方、本実施の形態では、送信側端末は、図9に示すように、特定のタイミング(たとえば、アプリ(2)のインストール時やバージョンアップ時)で特定識別値とそれに基づいた暗号識別値を作成し、保存する(ステップST1)。
【0066】
そして、受信側端末から暗号識別値および特定識別値の送信要求等を受けると、送信側端末は、ステップST10で、特定識別値(1)を算出し、そして、ステップST40で、ステップST10で算出した特定識別値(1)とステップST1で保存していた暗号識別値とを、受信側端末へ送信する。
【0067】
なお、受信側端末では、特定識別値(2)は、送信側端末から受信した暗号識別値から抽出される(ステップSR30)。また、図7を参照して説明したのと同様に、本実施の形態においても、特定識別値(1)と特定識別値(2)と特定識別値(3)のすべてが一致しなければ、送信側端末との接続は拒否される。つまり、特定識別値(1)と特定識別値(2)とが一致しない場合でも、受信側端末は送信側端末との接続を拒否する。
【0068】
したがって、本実施の形態では、送信側端末において、アプリ(1)に、暗号識別値が作成されてから特定識別値(1)が算出されるまでの間に改変を加えられた場合、特定識別値(1)と特定識別値(2)が一致しなくなる。このような場合、本実施の形態では、ステップSR40においてNOの判断がなされるため、受信側端末は、送信側端末との接続を拒否することができる。
【0069】
[第3の実施の形態]
本発明の第3の実施の形態では、第1の実施の形態に対して、送信側端末であるアプリ(2)における暗号識別値の作成の態様が異なる。
【0070】
図10は、本実施の形態の送信側端末(アプリ(2))において暗号識別値が作成される際のフローチャートである。なお、このフローチャートは、図7のステップST30のサブルーチンの変形例に相当する。また、本実施の形態では、暗号識別値の生成に関して、アプリ(2)をインストールされた端末(クライアント)と認証サーバ(CA(Certification Authority)サーバ)との間でデータの送受信が行なわれる。
【0071】
図10を参照して、クライアントにおいて、アプリ(2)が起動されると、ステップSC10として、ステップST10(図7参照)で作成した特定識別値(1)が署名承認用データに変換されて、ステップSC20へ処理が進められる。
【0072】
次に、クライアントにおいて、ステップSC20として、ステップSC10における変換後のデータがCAサーバへ送信される。
【0073】
次に、CAサーバでは、ステップSD10として、クライアントから送信されてきたデータが受信され、そして、ステップSD20として、受信したデータの中から、証明書が抽出され、ステップSD30へ処理が進められる。
【0074】
そして、ステップSD30では、CAサーバは、ステップSD20で抽出した証明書に基づいてクライエントが正当なものであるか否かを判断し、正当なものであると判断するとステップSD50へ処理を進め、正当なものではないと判断するとステップSD40へ処理を進める。
【0075】
ステップSD50では、CAサーバは、ステップSD10で受信したデータの中から特定識別値(1)を抽出し、当該特定識別値(1)に対してCAサーバで保持している秘密鍵を用いて署名を行ない、ステップSD60へ処理を進める。ステップSD60では、CAサーバは、署名後の特定識別値(1)(暗号識別値)をクライアントへ送信する。
【0076】
一方、ステップSD40では、CAサーバは、クライアントに対し署名を拒否する旨を通知し、ステップSD50のような署名を行なわず処理を終了させる。
【0077】
そして、クライアントでは、ステップSC30として、CAサーバから送信されてきた暗号識別値を受信し、その後、ステップSC40として、ステップSA40と同様に、暗号識別値をメモリに適宜記憶させる。この場合も、第1の実施の形態と同様にして、暗号識別値は、ファイルとして不揮発性記憶装置に保存してもよいものの、アプリケーションプログラムの終了と同時に削除される。また、暗号識別値は、特定関数や相手方から受信した証明書と同様に、HDD264などの不揮発性記憶装置において、外部から読み出し不能な領域(セキュリティ領域)に保持されているものとすることができる。
【0078】
以上説明したように、本実施の形態では、暗号識別値は、CAサーバの秘密鍵によって署名(暗号化)されたものとなる。これに伴って、受信側端末(アプリ(1))において、暗号識別値の署名を確認するステップSR20(図7参照)および暗号識別値から特定識別値(2)を抽出するステップSR30(図7参照)で用いられる公開鍵は、CAサーバの証明書であるルート証明書に格納されたものになる。
【0079】
以上のような構成でも、第1の実施の形態と同様の効果を奏することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0080】
【図1】本発明の第1の実施の形態の情報処理装置を含むネットワーク構成を模式的に示す図である。
【図2】図1のPCの機能ブロックを模式的に示す図である。
【図3】図1のPCの制御ブロック図である。
【図4】図1のPCにおいて、通信相手の端末にアプリケーションプログラムの正当性を認証させるためにデータを作成する手続きを説明するための図である。
【図5】図1のPCにおいて、通信相手の端末において実行されているアプリケーションプログラムの正当性を認証するために必要な構成を説明するための図である。
【図6】図1のPCにおいて、通信相手の端末において実行されているアプリケーションプログラムの正当性の認証の際のデータの流れを説明するための図である。
【図7】本実施の形態において、アプリ(2)を起動した端末が、アプリ(1)をインストールされている端末に対して接続の許可を求める際の処理のフローチャートである。
【図8】図7における暗号識別値の作成についてのサブルーチンのフローチャートである。
【図9】本発明の第2の実施の形態において、アプリ(2)を起動した端末が、アプリ(1)をインストールされている端末に対して接続の許可を求める際の処理のフローチャートである。
【図10】本発明の第3の実施の形態における暗号識別値の作成についてのサブルーチンのフローチャートであり、図8の変形例に相当する図である。
【符号の説明】
【0081】
100 モニタ、200 PC、202 データ受信部、203 データ解析部、204 署名部、205 識別値作成/検証部、206 データ保持部、207 処理部、211 データ作成部、212 データ送信部、250 CPU、252 メディアドライブ、252A 出力媒体、254 RAM、256 ROM、260 入力装置、262 通信装置、264 HDD、300 ネットワークケーブル、400 ハブ、500 ルータ、610 メインメモリ、611 第1の領域、611A 領域、612 第2の領域、620 ファイル、630 特定識別値、640 暗号識別値。

【特許請求の範囲】
【請求項1】
第1の情報処理装置と第2の情報処理装置の間での通信を制御する通信制御方法であって、
前記第1の情報処理装置が、第1のアプリケーションプログラムを第1のメモリに展開するステップと、
前記第1の情報処理装置が、前記第1のメモリに展開された前記第1のアプリケーションプログラムのバイナリコードの特定の一部分と特定関数を用いて第1の識別値を算出するステップと、
前記第1の情報処理装置が、前記第1の識別値を前記第2の情報処理装置に送信するステップと、
前記第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の情報処理装置に送信し、
前記第2の情報処理装置は、暗号化された前記第1の識別値を復号化した上で暗号化されていない前記第1の識別値と比較し、これらが同一であった場合に、前記第1の情報処理装置との接続を許可する、請求項2に記載の通信制御方法。
【請求項4】
前記第1の情報処理装置は、
所定のタイミングで、前記第1の識別値を暗号化した上で記憶装置に保持し、かつ、
前記第2の情報処理装置との通信を行なうたびに前記第1の識別値の算出を行ない、 前記第2の情報処理装置に、前記記憶装置に暗号化されて保持された前記第1の識別値および前記第2の情報処理装置との通信の際に算出した前記第1の識別値の両方を送信する、請求項3に記載の通信制御方法。
【請求項5】
前記第1の情報処理装置は、前記第1の識別値を暗号化するために認証サーバに送信し、前記認証サーバから暗号化された前記第1の識別値を受信する、請求項2に記載の通信制御方法。
【請求項6】
前記第1の情報処理装置は、前記第1の識別値を算出するに際してユーザ情報をさらに用い、
前記第2の情報処理装置は、前記第2の識別値を算出するに際して前記ユーザ情報をさらに用いる、請求項1〜請求項5のいずれかに記載の通信制御方法。
【請求項7】
他の情報処理装置との通信を制御する通信制御プログラムであって、
アプリケーションプログラムが実行されるに際してメモリ上に展開された当該アプリケーションプログラムのバイナリコードの特定の一部分と特定関数を用いて第1の識別値を算出するステップと、
前記第1の識別値を他の情報処理装置に送信するステップと、
前記他の情報処理装置から第2の識別値を受信するステップと、
前記第2の識別値を前記第1の識別値と比較し、前記第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

【図9】
image rotate

【図10】
image rotate


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