(57)【要約】  情報処理装置１０は、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段１１と、システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段１２と、検証要求の受信に応じて、自装置におけるプログラムについて第１の値を導出した方法と同じ方法で第２の値を導出して検証要求の送信元に送信する検証手段１３とを備え、検証手段１３は、検証要求の受信に応じて、クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する。
2020144729.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段と、
前記システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段と、
検証要求の受信に応じて、自装置におけるプログラムについて前記第１の値を導出した方法と同じ方法で第２の値を導出して前記検証要求の送信元に送信する検証手段とを備え、
前記検証手段は、前記検証要求の受信に応じて、前記クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した前記第２の値と前記第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する
ことを特徴とする情報処理装置。
【請求項２】
前記検証情報管理手段は、プログラムから算出された前記第１の値を記憶する検証情報記憶手段である
請求項１に記載の情報処理装置。
【請求項３】
同一のプログラムを有する各情報処理装置でクラスタが構成され、
前記検証情報管理手段が管理する前記第１の値は、クラスタ内の各情報処理装置について共通の値であり、
前記検証手段は、クラスタ内の各情報処理装置から受信した前記第２の値と前記共通の値とを比較する
請求項１に記載の情報処理装置。
【請求項４】
類似するプログラムを有する各情報処理装置でクラスタが構成され、
前記検証情報管理手段が管理する前記第１の値は、プログラムから算出された類似度を判定するための指標値であり、
前記検証手段は、前記第１の値と前記第２の値としての指標値との類似度を判定することによって、前記クラスタ内の各情報処理装置のプログラムを検証する
請求項１に記載の情報処理装置。
【請求項５】
類似する属性のプログラムを有する各情報処理装置でクラスタが構成され、
前記検証情報管理手段が管理する前記第１の値は、プログラムの属性であり、
前記検証手段は、前記第１の値と前記第２の値としてのプログラムの属性とが合致しているか否かを判定することによって、クラスタ内の各情報処理装置のプログラムを検証する
請求項１に記載の情報処理装置。
【請求項６】
前記システム内の情報処理装置間のコストに基づいてクラスタを構成するクラスタ処理手段をさらに備える
請求項１から請求項５のうちのいずれか１項に記載の情報処理装置。
【請求項７】
複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段と、
前記システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段とを含む検証サーバと、
前記検証サーバが属するクラスタに属する情報処理装置であって、検証要求の受信に応じて、自装置におけるプログラムについて前記第１の値を導出した方法と同じ方法で第２の値を導出して前記検証要求の送信元に送信する検証応答手段を含む情報処理装置と
を備え、
前記検証サーバは、検証要求の受信に応じて、前記クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した前記第２の値と前記第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する検証手段をさらに備える
ことを特徴とする検証システム。
【請求項８】
複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶し、
前記システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理し、
検証要求の受信に応じて、情報処理装置におけるプログラムについて前記第１の値を導出した方法と同じ方法で第２の値を導出して前記検証要求の送信元に送信し、
前記検証要求の受信に応じて、前記クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した前記第２の値と前記第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する
ことを特徴とする情報処理方法。
【請求項９】
プログラムから算出された前記第１の値を記憶することによって、当該第１の値を管理する
請求項８に記載の情報処理方法。
【請求項１０】
同一のプログラムを有する各情報処理装置でクラスタが構成され、
前記第１の値は、クラスタ内の各情報処理装置について共通の値であり、
クラスタ内の各情報処理装置から受信した前記第２の値と前記共通の値とを比較することによって、当該情報処理装置におけるプログラムを検証する
請求項８に記載の情報処理方法。
【請求項１１】
類似する属性のプログラムを有する各情報処理装置でクラスタが構成され、
前記第１の値は、情報処理装置におけるプログラムから算出される類似度の指標値であり、
前記第１の値と前記第２の値としての指標値との類似度を判定することによって、クラスタ内の各情報処理装置のプログラムを検証する
請求項８に記載の情報処理方法。
【請求項１２】
類似する属性のプログラムを有する各情報処理装置でクラスタが構成され、
前記第１の値は、プログラムの属性であり、
前記第１の値と前記第２の値としてのプログラムの属性とが合致しているか否かを判定することによって、前記クラスタ内の各情報処理装置のプログラムを検証する
請求項８に記載の情報処理方法。
【請求項１３】
前記システム内の情報処理装置間のコストに基づいてクラスタを構成する処理を含む
請求項８から請求項１２のうちのいずれか１項に記載の情報処理方法。
【請求項１４】
コンピュータに、
複数の情報処理装置を含むシステム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する処理と、
検証要求の受信に応じて、情報処理装置におけるプログラムについて前記第１の値を導出した方法と同じ方法で第２の値を導出して前記検証要求の送信元に送信する処理と、
前記検証要求の受信に応じて、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と前記第１の値とを比較することによって当該情報処理装置におけるプログラムを検証する処理とを
実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの検証を行う情報処理装置、検証システムおよび情報処理方法に関する。
【背景技術】
【０００２】
ＩｏＴ（Internet of Things）デバイスの普及に伴って、ネットワークカメラやスマートメータ等の計算能力の低いデバイスにおいて、デバイスのファームウェアの正当性を保証するセキュリティ対策が重要になっている。【０００３】
このようなセキュリティ対策は、コンピュータシステムにおいても行われている。例えば、特許文献１には、デバイスのファームウェアの固有値を利用してセキュリティ違反を判定する方法が開示されている。その方法では、デバイスにおいてファームウェアの固有値が算出される。そして、外部の監視エンティティが予め記憶しておいた固有値に基づいて潜在的なセキュリティ違反が存在するか否かを判断する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５８１６３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された方法では、外部の監視エンティティは、固有値を記憶する記憶部をアクセスする必要がある。第１の問題点は、記憶すべき固有値の数が増加するということである。その理由は、ＩｏＴシステムにおいては多数のＩｏＴデバイスが存在するが、各デバイスに対して固有値を保持する必要があるためである。固有値の数の増加は、記憶部の必要容量の増加を招く。記憶部の容量増加は、必要な情報へのアクセス速度の低下や、コストの増加につながる。【０００６】
第２の問題点は、複数の監視エンティティや検証対象のデバイスが存在する場合に記憶部へのアクセスが集中することである。その理由は、複数の監視エンティティがデバイスを検証する際に、各監視エンティティが記憶部をアクセスするためである。つまり、複数の検証対象のデバイスが存在する場合には検証の回数自体が増加し、記憶部へのアクセス数が増加する。記憶部へのアクセス集中は検証に要する時間の増加や伝送情報の欠落などにつながる。【０００７】
そこで、本発明は、記憶部の容量の増加や記憶部へのアクセス集中を防止しつつデバイス検証を行う情報処理装置、検証システムおよび情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明による情報処理装置は、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段と、システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段と、検証要求の受信に応じて、自装置におけるプログラムについて第１の値を導出した方法と同じ方法で第２の値を導出して検証要求の送信元に送信する検証手段とを含み、検証手段は、検証要求の受信に応じて、クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する。【０００９】
本発明による検証システムは、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段と、システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段とを含む検証サーバと、検証サーバが属するクラスタに属する情報処理装置であって、検証要求の受信に応じて、自装置におけるプログラムについて第１の値を導出した方法と同じ方法で第２の値を導出して検証要求の送信元に送信する検証応答手段を含む情報処理装置とを含み、検証サーバは、検証要求の受信に応じて、クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する検証手段をさらに含む。【００１０】
本発明による情報処理方法は、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶し、システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理し、検証要求の受信に応じて、情報処理装置におけるプログラムについて第１の値を導出した方法と同じ方法で第２の値を導出して検証要求の送信元に送信し、検証要求の受信に応じて、クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する。【００１１】
本発明による情報処理プログラムは、コンピュータに、複数の情報処理装置を含むシステム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する処理と、検証要求の受信に応じて、情報処理装置におけるプログラムについて第１の値を導出した方法と同じ方法で第２の値を導出して検証要求の送信元に送信する処理と、検証要求の受信に応じて、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と第１の値とを比較することによって当該情報処理装置におけるプログラムを検証する処理とを実行させる。
【発明の効果】
【００１２】
本発明によれば、記憶部の容量の増加や記憶部へのアクセス集中を防止しつつデバイス検証を行うことができる。
【図面の簡単な説明】
【００１３】
【図１】情報処理装置を含むシステムの一例を示す説明図である。
【図２】第１の実施形態の情報処理装置の構成例を示すブロック図である。
【図３】第１の実施形態の情報処理装置が実行する検証処理を示すフローチャートである。
【図４】第２の実施形態の情報処理装置の構成例を示すブロック図である。
【図５】第２の実施形態でのクラスタの構成法を示すフローチャートである。
【図６】第３の実施形態でのクラスタの構成法を示すフローチャートである。
【図７】第４の実施形態でクラスタの構成法を示すフローチャートである。
【図８】第５の実施形態の情報処理装置の構成例を示すブロック図である。
【図９】情報処理装置を含むシステムの一例を示す説明図である。
【図１０】第６の実施形態の情報処理装置の構成例を示すブロック図である。
【図１１】検証サーバの構成例を示すブロック図である。
【図１２】第６の実施形態の情報処理装置が実行する検証処理を示すフローチャートである。
【図１３】検証サーバの検証部によって実行される検証処理を示すフローチャートである。
【図１４】ＣＰＵを有するコンピュータの一例を示すブロック図である。
【図１５】情報処理装置の主要部を示すブロック図である。
【図１６】検証システムの主要部を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を図面を参照して説明する。
【００１５】
図１は、本実施形態の情報処理装置を含むシステムの一例を示す説明図である。図１に示されている例では、複数の情報処理装置１００が、クラスタ１１０Ａ，１１０Ｂとしてまとめられている。管理者１３０は、全ての情報処理装置１００にクラスタ１１０Ａ，１１０Ｂの構成情報を送信する。情報処理装置１００は、構成情報を記憶する。なお、具体的には、管理者１３０は、例えば自身が扱うサーバなどを介して構成情報を送信する。また、図１には２つのクラスタ１１０Ａ，１１０Ｂが例示されているが、クラスタの数は２に限られない。
【００１６】
検証要求元１２０から検証要求が送信されると、デバイスの検証が開始される。検証要求元１２０は、例えば、サーバである。デバイスの検証として、情報処理装置１００にインストールされているプログラムの不正改変の有無の検知や、不正プログラムのインストールの有無の検知がある。検証要求元１２０から検証要求を受け取った情報処理装置１００は、自装置が属するクラスタ内の他の情報処理装置１００に検証要求を送る。検証要求を受け取った情報処理装置１００のうちの他のクラスタに隣接する情報処理装置１００は、隣接クラスタに検証要求を送信する。隣接クラスタから検証要求を受け取った情報処理装置１００は、自装置が属するクラスタ内の他の情報処理装置１００に検証要求を送る。なお、図１には、情報処理装置１００とは別の検証要求元１２０から検証開始のトリガである検証要求が送信されるが、システム内のある情報処理装置１００が他の情報処理装置１００に対して検証開始のトリガである検証要求を送信してもよい。
【００１７】
実施形態１．
図２は、第１の実施形態の情報処理装置１００の構成例を示すブロック図である。情報処理装置１００は、制御部１０１、プログラム記憶部１０２、通信部１０３、構成情報記憶部１０４、検証部１０５、および検証情報記憶部１０６を備える。
【００１８】
制御部１０１は、情報処理装置１００の全体の制御および演算処理を行う制御装置である。プログラム記憶部１０２は、制御部１０１において実行されるプログラムを記憶する。通信部１０３は、インターネット等のネットワーク（図示せず）を介して接続先の装置との通信を行う。
【００１９】
構成情報記憶部１０４は、自情報処理装置（当該構成情報記憶部１０４を有する情報処理装置）１００を含むクラスタに属する情報処理装置１００を特定可能な情報と、このクラスタに隣接するクラスタに属する情報処理装置１００を特定可能な情報を記憶する。各情報処理装置１００は、付与された固有のＩＤ（IDentification）や固定のＩＰ（Internet Protocol ）アドレスやＭＡＣ（Media Access Control）アドレスなどの識別情報を用いて識別される。情報処理装置１００のなりすましを防ぐために、共通暗号鍵や証明書情報などの認証情報が識別情報に付加されてもよい。
【００２０】
構成情報記憶部１０４に記憶されるクラスタは、例えば、システム全体の管理者１３０によって構成される。管理者１３０は、ある指標を基に各クラスタ内の任意の２つの情報処理装置１００の間の距離の最大長が短くなるように情報処理装置群（全ての情報処理装置１００）を分割して複数のクラスタを構成することができる。指標として、例えば、情報処理装置１００間のネットワークレイヤでのホップ数といった距離や物理的な距離がある。また、管理者１３０は、情報処理装置１００の数が均一になるように情報処理装置群を分割して複数のクラスタを構成することもできる。
【００２１】
また、管理者１３０は、構成したクラスタ間の接続関係を示す第１の連結グラフと、各クラスタ内の情報処理装置１００の接続関係を示す第２の連結グラフとを作成する。これらの連結グラフ（第１の連結グラフおよび第２の連結グラフ）の辺の両端の頂点に相当する情報処理装置１００を表す情報を、両頂点に相当する情報処理装置１００に構成情報として送信する。なお、第１の連結グラフ（クラスタ間の接続関係を示す連結グラフ）の作成については、例えば、クラスタを代表する情報処理装置１００の接続関係が使用される。情報処理装置１００において、通信部１０３が構成情報を受信すると、構成情報記憶部１０４は構成情報を記憶する。これらの連結グラフが、例えば、全域木構造で構成される場合には、辺の数が最小化され、構成情報記憶部１０４の記憶容量が削減される。例えば任意の２点間のネットワークのホップ数をコストとして考え、既に知られたアルゴリズムであるクラスカル法やプリム法を用いることによって、最小コストの全域木構造を求めることができる。
【００２２】
また、連結を完全グラフ構造にした場合には、各情報処理装置１００間での通信障害耐性を高めたり検証ステップ数（検証の工程の数）を削減したりできる。第２の連結グラフについては、完全グラフは、各情報処理装置１００が、同一のクラスタに属する全ての情報処理装置１００の情報を記憶することによって実現される。第１の連結グラフについては、完全グラフは、各クラスタに対して１つ以上の代表となる情報処理装置１００が選ばれ、選ばれた情報処理装置１００が他のクラスタの代表の情報処理装置１００の情報を収集することによって得られる。
【００２３】
検証情報記憶部１０６は、予め算出された他の情報処理装置１００の第１の値としての固有値（以下、第１の値ともいう。）を記憶する。第１の値として、プログラム記憶部１０２に記憶されるプログラムの実体（例えば、バイナリデータ）から算出でき改ざんの有無が確認できるような指標値を用いることができる。指標値として、例えばハッシュ値やチェックサム、誤り訂正符号の値を用いることができる。
【００２４】
また、第１の値として、プログラムの実体そのものを用いることもできる。第１の値として、必要に応じて第１の値を算出し直して用いることもできる。例えば、正しい第１の値を記憶することで正規のプログラムに成り済ますような不正プログラムを想定する。そして、一例として、プログラムの実体そのものにランダムなビット列を加えて算出される固有値を第１の値として用いる。いずれの指標を用いるかは、検証部１０５が扱う方式に応じて、管理者１３０によって決定される。また、他の情報処理装置１００の第１の値を記憶すべき情報処理装置１００は、管理者１３０によって決定される。
【００２５】
検証部１０５は、検証要求を受信すると、自情報処理装置（当該検証部１０５が含まれる情報処理装置）１００のプログラム記憶部１０２に記憶されたプログラムに基づいて、第２の値としての固有値（以下、第２の値ともいう。）を新たに算出する。また、検証部１０５は、他の情報処理装置１００に検証要求を送信する。また、検証部１０５は、他の情報処理装置１００から受信した検証結果を集計する。一連の検証要求には単一の固有番号が割り当てられている。検証部１０５は、各情報処理装置１００が検証を終えたときに“検証済みリスト”として固有番号を記憶する。固有番号は、検証済みかどうかの判断に利用される。検証済みリストは、一例として、任意に定めた数だけの固有番号を記憶できるように構成される。検証済みリストにおける固有番号は、古いものから消去される。
【００２６】
通信部１０３は、他の情報処理装置１００への検証要求を、構成情報記憶部１０４に記憶される情報処理装置１００に対して送信する。検証部１０５は、送信した検証要求に対する応答を受信すると、応答の内容の検証と集計を行う。応答には、検証要求先の情報処理装置１００の識別情報と、当該情報処理装置１００における第２の値が含まれる。応答には、検証要求先で集計された他の情報処理装置の検証結果が含まれることがある。検証部１０５は、受信された第２の値と、検証情報記憶部１０６に記憶されている第１の値との一致を確認することによって、検証の成否を判断する。
【００２７】
また、検証部１０５は、他の情報処理装置１００の検証結果を集計する。検証部１０５は、検証結果を集計するときに、検証対象の情報処理装置１００の識別情報と検証の成否を集計する。検証部１０５は、簡易的に、検証に成功した情報処理装置１００の台数と検証に失敗した台数のみを集計してもよい。また、検証部１０５は、各応答に対して検証を行った情報処理装置１００の署名を付与することによって、改ざんを防止してもよい。その後、検証部１０５は、第２の値と集計した検証結果とを検証要求元に送信する。
【００２８】
また、情報処理装置１００がハードウェア的に守られたセキュアな記憶領域やセキュアな実行環境を保有する場合には、検証部１０５や検証情報記憶部１０６が、セキュアな記憶領域やセキュアな実行環境内に配置されてもよい。例えば、ＴＰＭ（Trusted Platform Module）やSecure ElementといったＩＣ（Integrated Circuit）チップ内の記憶領域がセキュアな記憶領域に該当する。Intel SGX（Software Guard Extensions ：Intel は登録商標）やARM TrustZone（登録商標）といったセキュアなプログラム実行環境であるＴＥＥ（Trusted Execution Environment）とＴＥＥとによって用意されるセキュアな記憶領域が、セキュアな実行環境に該当する。
【００２９】
次に、本実施形態の情報処理装置１００の動作を説明する。図３は、情報処理装置１００における検証部１０５が実行する検証処理を示すフローチャートである。
【００３０】
検証処理は、外部から検証要求を受信すると開始される（ステップＳ１０１）。検証要求を受信した情報処理装置１００において、検証部１０５は、検証要求の固有番号が検証済みリストに登録されているか否かに基づいて、検証済みであるか否かを判別する（ステップＳ１０２）。検証済みであれば、検証部１０５は、通信部１０３を介して、その旨を、検証要求元（検証要求を送信した装置）に返信し（ステップＳ１０３）、処理を終了する。
【００３１】
検証済みでない場合には、検証部１０５は、構成情報記憶部１０４に記憶されている情報に基づいて、検証要求の送信元（要求元）が、自情報処理装置１００が属するクラスタ内の情報処理装置１００（または、検証要求元１２０）か否かを判定する（ステップＳ１０４）。要求元がクラスタ内の情報処理装置１００であった場合には、ステップＳ１０７に移行する。要求元がクラスタ外の情報処理装置１００であった場合には、検証部１０５は、通信部１０３を介して、クラスタ内の情報処理装置１００に検証要求を送信する（ステップＳ１０５）。検証部１０５は、送信した検証要求に対する応答（返信）を受信したら、返信に含まれる第２の値を検証情報記憶部１０６に記憶されている第１の値と比較することによって、検証の成否の判断する（ステップＳ１０６）。そして、ステップＳ１０７に移行する。なお、検証部１０５は、第１の値と第２の値とが一致した場合に、検証が成功した、すなわち、返信した情報処理装置１００におけるプログラムに関する不正は生じていない、と判定する。
【００３２】
ステップＳ１０７では、検証部１０５は、構成情報記憶部１０４に記憶されている情報に基づいて、隣接クラスタが存在するか否かを判定する。隣接クラスタが存在しない場合には、ステップＳ１１０に移行する。隣接クラスタが存在する場合には、検証部１０５は、通信部１０３を介して、隣接クラスタに検証要求を送信する（ステップＳ１０８）。送信した検証要求に対する応答（返信）を受信したら、検証部１０５は、返信に含まれる第２の値を検証情報記憶部１０６に記憶されている第１の値と比較することによって、検証の成否を判断する（ステップＳ１０９）。具体的には、検証部１０５は、第１の値と第２の値とが一致した場合に、検証が成功した、すなわち、返信した情報処理装置１００におけるプログラムに関する不正は生じていない、と判定する。そして、ステップＳ１１０に移行する。
【００３３】
ステップＳ１１０では、検証部１０５は、ステップＳ１０６の処理およびステップＳ１０９の処理で得られた検証結果と、他の情報処理装置１００から送られてきた検証結果とを集計する。また、検証部１０５は、自情報処理装置１００におけるプログラム記憶部１０２に記憶されているプログラムに基づいて、固有値を算出する（ステップＳ１１１）。そして、検証部１０５は、算出した固有値を、他の情報処理装置１００の検証結果とともに検証要求元に送信し（ステップＳ１１２）、処理を終了する。固有値は検証要求元の情報処理装置１００で受信されるが、その情報処理装置１００は、受信した固有値を第２の値として扱う。
【００３４】
なお、ステップＳ１０５，Ｓ１０６，Ｓ１０８，Ｓ１０９の処理を実行しなかった場合には、検証部１０５は、ステップＳ１１０の処理を実行しない。また、その場合には、検証部１０５は、ステップＳ１１２の処理において、他の情報処理装置１００の検証結果を送信せず、自情報処理装置１００に関する固有値のみを送信する。
【００３５】
以上に説明したように、本実施形態では、情報処理装置１００が検証要求を転送し合うことによって、情報処理装置１００とそれに連なる他の情報処理装置１００との検証が分散的に実行される。したがって、単一の監視装置がシステム内の全装置を監視する場合に比べて、検証を行う装置が保持すべき検証情報の増加と一の記憶部に対するアクセス集中を防ぐことができる。
【００３６】
実施形態２．
図４は、第２の実施形態の情報処理装置２００の構成例を示すブロック図である。情報処理装置２００は、制御部１０１、プログラム記憶部１０２、通信部１０３、構成情報記憶部１０４、検証部２０５、検証情報記憶部１０６、およびクラスタ処理部２０７を備える。
【００３７】
図４に示された制御部１０１および通信部１０３は、第１の実施形態におけるそれらと同様の機能を有する。検証部２０５の機能は、第１の実施形態における検証部１０５の機能とは異なる。
【００３８】
第２の実施形態では、プログラム記憶部１０２に記録されるプログラムが同一である情報処理装置２００が、同一クラスタに属する情報処理装置２００になる。すなわち、プログラムの同一性を利用して、検証情報記憶部１０６に記憶される、同一クラスタ内の情報処理装置２００に関する検証情報を削減する。
【００３９】
情報処理装置２００を含むシステムの一例は、図１に示されたようなシステムである。ただし、図１における各々の情報処理装置１００は、情報処理装置２００に置き換わる。
【００４０】
クラスタ処理部２０７は、自情報処理装置（当該クラスタ処理部２０７が含まれる情報処理装置）２００におけるプログラム記憶部１０２に記憶されたプログラムから固有値を算出し、外部からの固有値要求への応答を行う。
【００４１】
管理者１３０は、各情報処理装置２００のクラスタ処理部２０７に対して固有値要求を行い、得られた固有値（第１の値に相当）を基に情報処理装置２００のクラスタを構成する。構成したクラスタに対して第１の連結グラフと第２の連結グラフを作成し、各情報処理装置２００に送信する。情報処理装置２００の構成情報記憶部１０４は構成情報を記憶する。なお、具体的には、管理者１３０は、例えば自身が扱うサーバなどを介して固有値要求および構成情報を送信し、固有値を受信する。
【００４２】
検証部２０５は、第１の実施形態における検証部１０５と同様の検証処理（図３参照）を実行する。しかし、本実施形態では、検証部２０５は、ステップＳ１０６の処理で、同一クラスタ内の他の情報処理装置２００（当該検証部２０５が含まれる情報処理装置２００以外の情報処理装置２００）から得られる検証要求に対する応答に含まれる第２の値と、自情報処理装置２００におけるプログラム情報記憶部１０２に記憶されたプログラムから予め算出された第１の値とを比較することによって、検証の成否を判断する。検証部２０５は、第１の値と第２の値とが一致した場合に、検証が成功した、すなわち、返信した情報処理装置２００におけるプログラムに関する不正は生じていない、と判定する。なお、本実施形態では、検証処理を実行する情報処理装置２００において、第１の値は、予め検証情報記憶部１０６に記憶されていてもよいし、他の情報処理装置２００から第２の値を受信する度に、検証部２０５によって算出されてもよい。
【００４３】
本実施形態において、検証部２０５が上記のような検証を行えるのは、同一クラスタに属する全ての情報処理装置２００のプログラム記憶部１０２に記憶されているプログラムが同じだからである。
【００４４】
図５は、クラスタの構成法を示すフローチャートである。この処理は、管理者１３０（具体的には、管理者１３０が扱うサーバなど）によって実行される。
【００４５】
管理者１３０は、全ての情報処理装置２００に対して、第１の値としての固有値を要求する（ステップＳ２０１）。固有値要求を受信した情報処理装置２００において、クラスタ処理部２０７がプログラムの固有値を算出する。クラスタ処理部２０７は、通信部１０３を介して固有値を管理者１３０に送る。このようにして、管理者１３０は、全ての情報処理装置２００の固有値を収集できる。管理者１３０は、収集した固有値同士を比較することによってプログラムの同一性を判定する。管理者１３０は、同一固有値のクラスタを構成する（ステップＳ２０２）。すなわち、管理者１３０は、同一と判定されたプログラムを有する情報処理装置２００を、同じクラスタに含める。
【００４６】
次いで、管理者１３０は、第１の連結グラフとしてクラスタ間の全域木を構成する（ステップＳ２０３）。また、管理者１３０は、第２の連結グラフとしてクラスタ内の全域木を構成する（ステップＳ２０４）。連結グラフ（第１の連結グラフおよび第２の連結グラフ）の辺の両端の頂点に相当する情報処理装置２００を表す情報を各情報処理装置２００に送り（ステップＳ２０５）、処理を終了する。管理者１３０は、両頂点に相当する情報処理装置２００に構成情報として送信する。情報処理装置２００において、通信部１０３が構成情報を受信すると、構成情報記憶部１０４は構成情報を記憶する。なお、全域木を構成する手法として、各情報処理装置間のホップ数を基に最小全域木を求めるアルゴリズムであるクラスカル法やプリム法を用いることができる。
【００４７】
本実施形態の情報処理装置２００は、同一クラスタの情報処理装置２００の第１の値を検証情報記憶部１０６に記憶する必要がない。したがって、検証情報記憶部１０６が保持すべき検証情報をより削減することができる。
【００４８】
また、本実施形態では、検証部２０５とは別にクラスタ処理部２０７が設けられているが、クラスタ処理部２０７を設けずに、検証部２０５が上述したクラスタ処理部２０７の機能を果たしてもよい。
【００４９】
実施形態３．
本実施形態では、プログラム記憶部１０２に記録されるプログラムが類似している情報処理装置２００が、同一クラスタに属する情報処理装置２００になる。すなわち、プログラムの類似性を利用して、同一クラスタ内の検証に関して検証情報記憶部１０６の記憶容量を削減する。
【００５０】
本実施形態の情報処理装置２００の構成は、図４に示された構成と同じである。
【００５１】
管理者１３０は、プログラムの類似性を算出するために、プログラムのバイナリ値を基にしたハミング距離やプログラムのファジィハッシュの値などをプログラム間の類似度の指標（指標値）として定義する。管理者１３０（具体的には、管理者１３０が扱うサーバなど）は、その指標値と所定のしきい値とを使用してプログラムが類似しているか否かを判定する。例えば、指標値が予め定められたしきい値を越えるときに、プログラムは類似していると判断する。なお、類似度の指標値を、単に、類似度と表現することがある。
【００５２】
図６は、本実施形態でのクラスタの構成法を示すフローチャートである。この処理は、管理者１３０（具体的には、管理者１３０が扱うサーバなど）によって実行される。
【００５３】
管理者１３０は、全ての情報処理装置２００に対して、プログラムの類似度の指標値を要求する（ステップＳ３０１）。指標値の要求を受信した情報処理装置２００において、クラスタ処理部２０７が指標値を算出する。クラスタ処理部２０７は、通信部１０３を介して指標値を管理者１３０に送る。このようにして、管理者１３０は、全ての情報処理装置２００の類似度の指標値を収集できる。管理者１３０は、収集した指標値同士を比較することによってプログラムの類似度を判定する。管理者１３０は、類似度が近似している情報処理装置２００を、同じクラスタに含める（ステップＳ３０２）。その後、第２の実施形態の場合と同様に、ステップＳ２０３〜Ｓ２０５の処理が実行される。
【００５４】
検証情報記憶部１０６は、同一クラスタ内の他の情報処理装置２００に対する検証情報（第１の値に相当）として、類似度のしきい値または互いのプログラムの差分情報を記憶する。いずれの検証情報を用いるのかは、検証部２０５の方式に応じて、管理者１３０によって決定される。
【００５５】
検証部２０５は、第１の実施形態における検証部１０５と同様に検証処理（図３参照）を実行するが、ステップＳ１０６の処理で、同一クラスタ内の他の情報処理装置２００から得られる検証応答に基づいて、自情報処理装置２００におけるプログラムとの類似度、または差分情報を使用して検証を行う。
【００５６】
また、本実施形態では、検証部２０５は、ステップＳ１１１の処理で、上記のプログラム間の類似度の指標値を、検証要求元が扱う第２の値として算出する。
【００５７】
具体的には、類似度を基に検証を行う場合には、検証部２０５は、検証応答に含まれる第２の値（本実施形態では、類似度の指標値）と、自情報処理装置２００におけるプログラムから予め算出された第１の値との類似度を計算する。そして、検証部２０５は、得られた類似度がしきい値を越えているか否かを判定することによって、検証成否を判断する。具体的には、検証部２０５は、得られた類似度がしきい値を越えていると、検証が成功した、すなわち、返信した情報処理装置２００におけるプログラムに関する不正は生じていない、と判定する。差分情報を用いる場合には、検証部２０５は、同一部分については自情報処理装置２００におけるプログラムとの比較を行い、異なる部分については差分情報を用いて検証の成否を判断する。すなわち、差分が予め定められた所定の程度以下であるときに、返信した情報処理装置２００におけるプログラムに関する不正は生じていない、と判定する。
【００５８】
本実施形態において、検証部２０５が上記のような検証を行えるのは、同一クラスタに属する全ての情報処理装置２００のプログラム記憶部１０２に記憶されているプログラムが類似しているからである。
【００５９】
本実施形態では、検証部２０５が、類似度に基づいて検証を実行する場合には、部分的にプログラムの改ざんの有無が検証される。検証部２０５が差分情報を用いて検証を実行する場合には、プログラムの改ざんの有無が検証される。なお、検証部２０５は、検証要求に対する応答として、検証に利用した類似度の値などを検証結果に含めてもよい。
【００６０】
以上に説明したように、本実施形態の情報処理装置２００は、同一クラスタ内の各々の情報処理装置２００の検証情報を検証情報記憶部１０６に記憶する必要がない。検証情報記憶部１０６は、同一クラスタ内の全ての情報処理装置２００について、１つの類似度のしきい値または互いのプログラムの差分情報を記憶するだけでよい。したがって、検証情報記憶部１０６が保持すべき検証情報をより削減することができる。
【００６１】
実施形態４．
本実施形態では、プログラム記憶部１０２に記録されるプログラムの属性が類似している情報処理装置２００が、同一クラスタに属する情報処理装置２００になる。すなわち、プログラムの属性を利用して、同一クラスタ内の検証に関して検証情報記憶部１０６の記憶容量を削減する。
【００６２】
本実施形態の情報処理装置２００の構成は、図４に示された構成と同じである。
【００６３】
管理者１３０（具体的には、管理者１３０が扱うサーバなど）は、プログラムの属性を見出すために、プログラム名や開発者の署名などの情報やプログラムのバージョン情報を取得する。そして、管理者１３０は、同一の開発者によるプログラムや同一のプログラムであるがバージョンが異なるプログラムを、属性が類似するプログラムであると判定する。なお、プログラムの属性の改ざん防止のためにプログラム開発者の署名情報が利用されてもよい。
【００６４】
検証情報記憶部１０６は、同一クラスタ内の他の情報処理装置２００に対する検証情報として、検証対象のプログラムの属性を記憶する。いずれの種別の属性を用いるのかは、検証部２０５の方式に応じて、管理者によって決定される。
【００６５】
図７は、本実施形態でのクラスタの構成法を示すフローチャートである。この処理は、管理者１３０（具体的には、管理者１３０が扱うサーバなど）によって実行される。
【００６６】
管理者１３０は、全ての情報処理装置２００に対して、第１の値としてのプログラムの属性を要求する（ステップＳ４０１）。要求を受信した情報処理装置２００において、クラスタ処理部２０７がプログラムの属性を抽出する。クラスタ処理部２０７は、通信部１０３を介してプログラムの属性を管理者１３０に送る。このようにして、管理者１３０は、全ての情報処理装置２００のプログラムの属性を収集できる。管理者１３０は、プログラムの属性が類似（一致していてもよい。）している情報処理装置２００を、同じクラスタに含める（ステップＳ４０２）。その後、第２の実施形態の場合と同様に、ステップＳ２０３〜Ｓ２０５の処理が実行される。
【００６７】
検証部２０５は、第１の実施形態における検証部１０５と同様に検証処理（図３参照）を実行するが、ステップＳ１０６の処理で、同一クラスタ内の他の情報処理装置２００から得られる検証応答と検証情報記憶部１０６に記憶されているプログラムの属性（第１の値に相当）とを用いて、自情報処理装置２００におけるプログラムの属性と他の情報処理装置２００におけるプログラムの属性とが類似しているか否か（または、合致しているか否か）を確認する。検証部２０５は、それらが類似している（または、合致している）と、検証が成功した、すなわち、返信した情報処理装置２００におけるプログラムに関する不正は生じていない、と判定する。
【００６８】
また、本実施形態では、検証部２０５は、ステップＳ１１１の処理で、検証情報記憶部１０６からプログラムの属性を読み出し、それを検証要求元が扱う第２の値とする。
【００６９】
以上に説明したように、本実施形態の情報処理装置２００は、同一クラスタの各々の情報処理装置２００の検証情報を検証情報記憶部１０６に記憶する必要がない。検証情報記憶部１０６は、同一クラスタ内の全ての情報処理装置２００について、プログラムの属性を記憶するだけでよい。したがって、検証情報記憶部１０６が保持すべき検証情報をより削減することができる。
【００７０】
実施形態５．
図８は、第５の実施形態の情報処理装置の構成例を示すブロック図である。情報処理装置５００は、制御部１０１、プログラム記憶部１０２、通信部１０３、構成情報記憶部１０４、検証部１０５、検証情報記憶部１０６、およびクラスタ処理部５０７を備える。
【００７１】
図８に示された制御部１０１、通信部１０３、および検証部１０５は、第１の実施形態におけるそれらと同様の機能を有する。
【００７２】
本実施形態では、管理者１３０がクラスタの構成に関与することなく、クラスタ構成がシステムにおいて分散的に行われる。
【００７３】
情報処理装置２００を含むシステムの一例は、図１に示されたようなシステムである。ただし、図１における各々の情報処理装置１００は、情報処理装置５００に置き換わる。
【００７４】
システム内のある情報処理装置５００におけるクラスタ処理部５０７は、自律的にクラスタを構成する。クラスタ処理部５０７は、第１の連結グラフと第２の連結グラフとを構成する。クラスタ処理部５０７は、構成情報を構成情報記憶部１０４に記憶する。そして、クラスタ処理部５０７は、構成情報に基づいて、隣接する情報処理装置５００に固有値を要求する。隣接する情報処理装置５００が要求に応じて固有値を送信したら、固有値は通信部１０３で受信され、第１の値として検証情報記憶部１０６に記憶される。
【００７５】
クラスタ処理部５０７は、クラスタの構成手法として、分散システムで用いられるクラスタ化の手法を使用できる。クラスタ処理部５０７は、例えば、ネットワークのホップ数を基にコストを算出する。システムがワイヤレスネットワークであれば、クラスタ処理部５０７は、信号強度を基にコストを算出する。クラスタ処理部５０７は、算出したコストと予め定められたしきい値とを比較することによって、クラスタを構成することができる。クラスタ処理部５０７は、一例として、コストを最小にする全域木を求めることによって、クラスタを構成する。
【００７６】
また、リーダ選挙アルゴリズムを用いて代表ノード（クラスタ構成のための処理を担う情報処理装置５００）を選出し、管理者の役割を代表ノードに託すこともできる。その場合、選出されたリーダ（代表ノード）は、全ノード（全ての情報処理装置５００）の情報を収集する。そして、リーダは、各ノード間のホップ数などの距離を基に、第１の連結グラフおよび第２の連結グラフを構成する。リーダは、構成情報（第１の連結グラフおよび第２の連結グラフ）に基づいて、各ノードに対して、隣接ノードの固有のＩＤを送信する。各ノードにおいて、構成情報記憶部１０４は、受信したＩＤを記憶する。なお、第２の連結グラフの構成については、再度代表ノードの選出を行い、それぞれのクラスタごとにリーダを選出するようにしてもよい。その場合には、選出されたリーダが、第２の連結グラフの計算と、各ノードに対する隣接ノードの情報伝達とを行う。
【００７７】
以上に説明したように、本実施形態の情報処理装置５００を含むシステムでは、クラスタが自律的に構成される。したがって、管理者１３０が多数の情報処理装置５００の情報を集中的に管理する必要がない。
【００７８】
実施形態６．
本実施形態では、各クラスタに１台の検証サーバが配置され、情報処理装置と検証サーバによって検証処理が行われる。
【００７９】
図９は、本実施形態の情報処理装置を含むシステムの一例を示す説明図である。図９に示されている例では、クラスタ６２０Ａには、複数の情報処理装置６００に加えて、一つの検証サーバ６１０Ａが含まれている。クラスタ６２０Ｂには、複数の情報処理装置６００に加えて、検証サーバ６１０Ｂが含まれている。検証要求元６３０から、いずれかの検証サーバに検証要求が送信される。図９に示された例では、検証要求は、検証サーバ６１０Ａに送信される。検証要求を受け取った検証サーバ６１０Ａは、クラスタ６２０Ａ内の情報処理装置６００に検証要求を送信する。また、検証サーバ６１０Ａは、隣接するクラスタ６２０Ｂの検証サーバ６１０Ｂに検証要求を送信する。そして、システム全体の検証処理が行われる。なお、検証要求元６３０は、具体的には、例えばサーバである。また、本実施形態において、特定の情報処理装置６００や検証サーバ６１０Ａまたは検証サーバ６１０Ｂが、他の検証サーバに対して検証要求を開始することもできる。
【００８０】
図１０は、本実施形態に係る情報処理装置６００の構成例を示すブロック図である。情報処理装置６００は、制御部１０１、プログラム記憶部１０２、通信部１０３、検証応答部６０５を備える。
【００８１】
図１０に示された制御部１０１および通信部１０３は、第１の実施形態におけるそれらと同様の機能を有する。
【００８２】
検証応答部６０５は、自情報処理装置（当該検証応答部６０５を含む情報処理装置）６００におけるプログラム記憶部１０２に記憶されたプログラムから第２の値を新たに算出し、検証要求への応答を行う。各検証要求には固有番号が割り当てられている。固有番号は、検証済みかどうかの判断に利用される。
【００８３】
図１１は、検証サーバ６１０の構成例を示すブロック図である。検証サーバ６１０は、制御部６１１、プログラム記憶部６１２、通信部６１３、構成情報記憶部６１４、検証部６１５、および検証情報記憶部６１６を備える。なお、図９に示された検証サーバ６１０Ａおよび検証サーバ６１０Ｂの構成は、検証サーバ６１０の構成と同じである。換言すれば、検証サーバ６１０Ａおよび検証サーバ６１０Ｂの構成を説明するために、図１１に、検証サーバ６１０が示されている。
【００８４】
通信部６１３は、インターネット等のネットワーク（図示せず）を介して接続先の装置との通信を行う。検証部６１５は、自装置（検証サーバ６１０）におけるプログラム記憶部６１２に記憶されたプログラムから第２の値を新たに算出する。検証部６１５は、通信部６１３を介して、情報処理装置６００に検証要求を送信する。また、検証部６１５は、検証結果に基づいて、検証要求元に対して応答を行う。各検証要求には固有番号が割り当てられている。固有番号は、検証済みかどうかの判断に利用される。検証部６１５は、情報処理装置６００に検証要求を送信するときに、構成情報記憶部１０４に記憶されている情報処理装置６００を特定可能な情報を参照して、検証要求を送信する。
【００８５】
また、検証部６１５は、情報処理装置６００から受信した検証応答に含まれる第２の値と、検証情報記憶部６１６に含まれる第１の値とを比較することによって、検証の成否を判断する。具体的には、検証部６１５は、第１の値と第２の値とが一致した場合に、検証が成功した、すなわち、返信した情報処理装置６００におけるプログラムに関する不正は生じていない、と判定する。また、検証応答に含まれる情報処理装置６００の検証結果を集計する。全ての検証要求の応答の検証と自身の第２の値の算出を終えた後に、検証部６１５はこれらの結果を検証要求元６３０に送信する。
【００８６】
次に、本実施形態の情報処理装置６００の動作を説明する。図１２は、情報処理装置６００における検証応答部６０５が実行する検証処理を示すフローチャートである。
【００８７】
検証処理は、外部から検証要求を受信すると開始される（ステップＳ６０１）。検証要求を受信すると、情報処理装置６００における検証応答部６０５は、検証要求の固有番号が検証済みリストに登録されているか否かに基づいて、検証済みであるか否かを判別する（ステップＳ６０２）。検証済みであれば、検証応答部６０５は、通信部１０３を介して、その旨を、検証要求元（検証要求を送信した装置）返信し（ステップＳ６０３）、処理を終了する。
【００８８】
検証済みでない場合には、検証応答部６０５は、自情報処理装置６００におけるプログラム記憶部１０２に記憶されている情報に基づいて、固有値を算出する（ステップＳ６０４）。検証応答部６０５は、検証要求元に固有値を送信する（ステップＳ６０５）。そして、処理を終了する。固有値は検証サーバ６１０（検証サーバ６１０Ａ，６１０Ｂ）で受信されるが、検証サーバ６１０は、受信した固有値を第２の値として扱う。
【００８９】
次に、検証サーバ６１０の動作、すなわち、検証サーバ６１０Ａ，６１０Ｂの動作を説明する。図１３は、検証サーバ６１０の検証部６１５によって実行される検証処理を示すフローチャートである。
【００９０】
検証処理は、外部からの検証要求または自身の制御部１０１が発生した検証要求を受けると開始される（ステップＳ６１１）。検証要求を受信すると、検証サーバ６１０における検証部６１５は、検証要求の固有番号が検証済みリストに登録されているか否かに基づいて、検証済みであるか否かを判別する（ステップＳ６１２）。検証済みであれば、検証部６１５は、通信部６１３を介して、その旨を、検証要求元（検証要求を送信した検証サーバ）に返信し（ステップＳ６１３）、処理を終了する。
【００９１】
検証済みでない場合には、検証部６１５は、クラスタ内の情報処理装置６００に検証要求を送信する（ステップＳ６１５）。検証部６１５は、送信した検証要求に対する応答（返信）を受信したら、返信に含まれる第２の値を検証情報記憶部６１６に記憶されている第１の値との比較することによって、検証の成否を判断する（ステップＳ６１６）。具体的には、検証部６１５は、第１の値と第２の値とが一致した場合に、検証が成功した、すなわち、返信した情報処理装置６００におけるプログラムに関する不正は生じていない、と判定する。
【００９２】
次に、検証部６１５は、構成情報記憶部６１４に記憶されている情報に基づいて、隣接クラスタが存在するかどうかを判定する（ステップＳ６１７）。隣接クラスタが存在しない場合には、ステップＳ６２０に移行する。隣接クラスタが存在する場合には、検証部６１５は、隣接クラスタの検証サーバ６１０に検証要求を送信する（ステップＳ６１８）。検証部６１５は、応答内容の第２の値を検証情報記憶部１０６の第１の値と比較することによって、検証の成否を判断する（ステップＳ６１９）。具体的には、検証部６１５は、第１の値と第２の値とが一致した場合に、検証が成功した、すなわち、隣接クラスタにおける情報処理装置６００におけるプログラムに関する不正は生じていない、と判定する。なお、図９を参照すると、検証要求を送信する検証サーバ６１０が検証サーバ６１０Ａである場合には、隣接クラスタの検証サーバは、検証サーバ６１０Ｂである。検証要求を送信する検証サーバ６１０が検証サーバ６１０Ｂである場合には、隣接クラスタの検証サーバは、検証サーバ６１０Ａである。
【００９３】
そして、ステップＳ６２０では、検証部６１５は、ステップＳ６１６の処理およびステップＳ６１９の処理で得られた検証結果と、情報処理装置６００および他の検証サーバ６１０から送られてきた検証結果とを集計する（ステップＳ６２０）。また、検証部６１５は、プログラム記憶部６１２に記憶されているプログラムに関する固有値を算出する（ステップＳ６２１）。検証部６１５は、通信部６１５を介して、算出した固有値を他の情報処理装置の検証結果とともに検証要求元に送信し（ステップＳ６２２）、処理を終了する。固有値は検証サーバ６１０（検証サーバ６１０Ａ，６１０Ｂ）または検証要求元６３０で受信されるが、検証サーバ６１０または検証要求元６３０は、受信した固有値を第２の値として扱う。
【００９４】
以上に説明したように、本実施形態では、情報処理装置６００および検証サーバ６１０が、検証要求を転送し合うことによって、検証サーバ６１０とそれに連なる他の情報処理装置６００および他の検証サーバ６１０の検証が分散的に実行される。したがって、検証情報の増加と一の記憶部に対するアクセス集中を防ぐことができる。
【００９５】
なお、いずれかの実施形態の一部の構成を、他の実施形態に追加したり、他の実施形態の一部の構成と置換した実施形態も使用可能である。
【００９６】
一例として、上記の各実施形態では、全てのクラスタについて同一の検証手法が用いられているが、クラスタごとに検証手法を変えてもよい。例えば、プログラム記憶部１０２に同一のプログラムが記憶されている情報処理装置１００で構成されるクラスタに対して第２の実施形態を採用し、それ以外のクラスタに対して他の実施形態を採用してもよい。
【００９７】
また、上記の各実施形態では、クラスタ内の情報処理装置の検証と隣接クラスタ間の検証とが行われるようにクラスタが構成されたが、一のクラスタをさらにクラスタ分けするなど、より多層のクラスタ構成を構築してもよい。その場合、クラスタを一つの情報処理装置と見なして、上記の各実施形態における検証処理が実現されるようにしてもよい。例えば、多層構造の複数のクラスタのうちの一のクラスタが、他の情報処理装置またはクラスタに検証要求を送信するクラスタと見なされる。
【００９８】
上記の実施形態における各構成要素は、１つのハードウェアで構成可能であるが、１つのソフトウェアでも構成可能である。また、各構成要素は、複数のハードウェアでも構成可能であり、複数のソフトウェアでも構成可能である。また、各構成要素のうちの一部をハードウェアで構成し、他部をソフトウェアで構成することもできる。
【００９９】
上記の実施形態における各機能（各処理）を、ＣＰＵ（Central Processing Unit ）等のプロセッサやメモリ等を有するコンピュータで実現可能である。例えば、記憶装置（記憶媒体）に上記の実施形態における方法（処理）を実施するためのプログラムを格納し、各機能を、記憶装置に格納されたプログラムをＣＰＵで実行することによって実現してもよい。
【０１００】
図１４は、ＣＰＵを有するコンピュータの一例を示すブロック図である。コンピュータは、情報処理装置１００，２００，５００，６００に実装可能であり、また、検証サーバ６１０に実装可能である。ＣＰＵ１０００は、記憶装置１００１に格納されたプログラムに従って処理を実行することによって、上記の実施形態における各機能を実現する。すなわち、図２，図４，図８，図１０に示された情報処理装置１００，２００，５００，６００における、制御部１０１、通信部１０３のソフトウェア部分、検証部１０５，２０５、クラスタ処理部２０７，５０７および検証応答部６０５の機能、ならびに、図１１に示された検証サーバ６１０における制御部６１１、通信部６１３のソフトウェア部分、および検証部６１５の機能を実現する。
【０１０１】
記憶装置１００１は、例えば、非一時的なコンピュータ可読媒体（non-transitory computer readable medium ）である。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium ）を含む。非一時的なコンピュータ可読媒体の具体例として、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory ）、ＣＤ−Ｒ（Compact Disc-Recordable ）、ＣＤ−Ｒ／Ｗ（Compact Disc-ReWritable ）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM ）、フラッシュＲＯＭ）がある。図２、図４、図８、および図１０に示されたプログラム記憶部１０２および図１１に示されたプログラム記憶部６１２は、記憶装置１００１で実現される。
【０１０２】
また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium ）に格納されてもよい。一時的なコンピュータ可読媒体には、例えば、有線通信路または無線通信路を介して、すなわち、電気信号、光信号または電磁波を介して、プログラムが供給される。
【０１０３】
また、図２，図４，図８に示された構成情報記憶部１０４および検証情報記憶部１０６と、図１１に示された構成情報記憶部６１４および検証情報記憶部６１６は、メモリ１００２または記憶装置１００１で実現される。
【０１０４】
図１５は、情報処理装置の主要部を示すブロック図である。図１５に示す情報処理装置１０は、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段１１（実施形態では、構成情報記憶部１０４で実現される。）と、システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段１２（実施形態では、検証部１０５，２０５および検証情報記憶部１０６で実現される。）と、検証要求の受信に応じて、自装置におけるプログラムについて第１の値を導出した方法と同じ方法で第２の値を導出して検証要求の送信元に送信する検証手段１３（実施形態では、検証部１０５，２０５で実現される。）とを備え、検証手段１３は、検証要求の受信に応じて、クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する。
【０１０５】
情報処理装置１０は、システム内の情報処理装置間のコストに基づいてクラスタを構成するクラスタ処理手段（実施形態では、クラスタ処理部２０７，５０７で実現される。）をさらに備えていてもよい。
【０１０６】
図１６は、検証システムの主要部を示すブロック図である。図１６に示す検証システム２０は、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段３１（実施形態では、構成情報記憶部６１４で実現される。）と、システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段３２（実施形態では、検証部６１５および検証情報記憶部６１６で実現される。）とを含む検証サーバ３０と、検証サーバ３０が属するクラスタに属する情報処理装置であって、検証要求の受信に応じて、自装置におけるプログラムについて第１の値を導出した方法と同じ方法で第２の値を導出して検証要求の送信元に送信する検証応答手段４１（実施形態では、検証応答部６０５で実現される。）を含む情報処理装置４０とを備え、検証サーバ３０は、検証要求の受信に応じて、クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する検証手段３３（実施形態では、検証部６１５で実現される。）をさらに備える。
【０１０７】
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明は、以下の構成に限定されるわけではない。
【０１０８】
（付記１）複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段と、
前記システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段と、
検証要求の受信に応じて、自装置におけるプログラムについて前記第１の値を導出した方法と同じ方法で第２の値を導出して前記検証要求の送信元に送信する検証手段とを備え、
前記検証手段は、前記検証要求の受信に応じて、前記クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した前記第２の値と前記第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する
ことを特徴とする情報処理装置。
【０１０９】
（付記２）前記検証情報管理手段は、プログラムから算出された前記第１の値を記憶する検証情報記憶手段である
付記１の情報処理装置。
【０１１０】
（付記３）同一のプログラムを有する各情報処理装置でクラスタが構成され、
前記検証情報管理手段が管理する前記第１の値は、クラスタ内の各情報処理装置について共通の値であり、
前記検証手段は、クラスタ内の各情報処理装置から受信した前記第２の値と前記共通の値とを比較する
付記１の情報処理装置。
【０１１１】
（付記４）類似するプログラムを有する各情報処理装置でクラスタが構成され、
前記検証情報管理手段が管理する前記第１の値は、プログラムから算出された類似度を判定するための指標値であり、
前記検証手段は、前記第１の値と前記第２の値としての指標値との類似度を判定することによって、前記クラスタ内の各情報処理装置のプログラムを検証する
付記１の情報処理装置。
【０１１２】
（付記５）類似する属性のプログラムを有する各情報処理装置でクラスタが構成され、
前記検証情報管理手段が管理する前記第１の値は、プログラムの属性であり、
前記検証手段は、前記第１の値と前記第２の値としてのプログラムの属性とが合致しているか否かを判定することによって、クラスタ内の各情報処理装置のプログラムを検証する
付記１の情報処理装置。
【０１１３】
（付記６）前記システム内の情報処理装置間のコストに基づいてクラスタを構成するクラスタ処理手段をさらに備える
付記１から付記５のいずれかの情報処理装置。
【０１１４】
（付記７）複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶する構成情報記憶手段と、
前記システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する検証情報管理手段とを含む検証サーバと、
前記検証サーバが属するクラスタに属する情報処理装置であって、検証要求の受信に応じて、自装置におけるプログラムについて前記第１の値を導出した方法と同じ方法で第２の値を導出して前記検証要求の送信元に送信する検証応答手段を含む情報処理装置と
を備え、
前記検証サーバは、検証要求の受信に応じて、前記クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した前記第２の値と前記第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する検証手段をさらに備える
ことを特徴とする検証システム。
【０１１５】
（付記８）複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報を記憶し、
前記システム内の各情報処理装置のプログラムの内容に対応する第１の値を管理し、
検証要求の受信に応じて、情報処理装置におけるプログラムについて前記第１の値を導出した方法と同じ方法で第２の値を導出して前記検証要求の送信元に送信し、
前記検証要求の受信に応じて、前記クラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した前記第２の値と前記第１の値とを比較することによって、当該情報処理装置におけるプログラムを検証する
ことを特徴とする情報処理方法。
【０１１６】
（付記９）プログラムから算出された前記第１の値を記憶することによって、当該第１の値を管理する
付記８の情報処理方法。
【０１１７】
（付記１０）同一のプログラムを有する各情報処理装置でクラスタが構成され、
前記第１の値は、クラスタ内の各情報処理装置について共通の値であり、
クラスタ内の各情報処理装置から受信した前記第２の値と前記共通の値とを比較することによって、当該情報処理装置におけるプログラムを検証する
付記８の情報処理方法。
【０１１８】
（付記１１）類似する属性のプログラムを有する各情報処理装置でクラスタが構成され、
前記第１の値は、情報処理装置におけるプログラムから算出される類似度の指標値であり、
前記第１の値と前記第２の値としての指標値との類似度を判定することによって、クラスタ内の各情報処理装置のプログラムを検証する
付記８の情報処理方法。
【０１１９】
（付記１２）類似する属性のプログラムを有する各情報処理装置でクラスタが構成され、
前記第１の値は、プログラムの属性であり、
前記第１の値と前記第２の値としてのプログラムの属性とが合致しているか否かを判定することによって、前記クラスタ内の各情報処理装置のプログラムを検証する
付記８の情報処理方法。
【０１２０】
（付記１３）前記システム内の情報処理装置間のコストに基づいてクラスタを構成する処理を含む
付記８から付記１２のいずれかの情報処理方法。
【０１２１】
（付記１４）コンピュータに、
複数の情報処理装置を含むシステム内の各情報処理装置のプログラムの内容に対応する第１の値を管理する処理と、
検証要求の受信に応じて、情報処理装置におけるプログラムについて前記第１の値を導出した方法と同じ方法で第２の値を導出して前記検証要求の送信元に送信する処理と、
前記検証要求の受信に応じて、複数の情報処理装置を含むシステム内の各情報処理装置がいずれのクラスタに属するのかを特定可能なクラスタ構成情報で特定されるクラスタ内の情報処理装置に検証要求を送信し、当該情報処理装置から受信した第２の値と前記第１の値とを比較することによって当該情報処理装置におけるプログラムを検証する処理とを
実行させるための情報処理プログラム。
【０１２２】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１２３】
１０，４０  情報処理装置
１１      構成情報記憶手段
１２      検証情報管理手段
１３      検証手段
２０      検証システム
３０      検証サーバ
３１      構成情報記憶手段
３２      検証情報管理手段
３３      検証手段
４１      検証応答手段
１００，２００，５００，６００  情報処理装置
１０１    制御部
１０２    プログラム記憶部
１０３    通信部
１０４    構成情報記憶部
１０５，２０５  検証部
１０６    検証情報記憶部
１１０Ａ，１１０Ｂ，６２０Ａ，６２０Ｂ  クラスタ
１２０    検証要求元
１３０    管理者
２０７，５０７  クラスタ処理部
６０５  検証応答部
６１０，６１０Ａ，６１０Ｂ  検証サーバ
６１１    制御部
６１２    プログラム記憶部
６１３    通信部
６１４    構成情報記憶部
６１５    検証部
６１６    検証情報記憶部
６３０    検証要求元
１０００  ＣＰＵ
１００１  記憶装置
１００２  メモリ
【図１】
2020144729.tif 000003
【図２】
2020144729.tif 000004
【図３】
2020144729.tif 000005
【図４】
2020144729.tif 000006
【図５】
2020144729.tif 000007
【図６】
2020144729.tif 000008
【図７】
2020144729.tif 000009
【図８】
2020144729.tif 000010
【図９】
2020144729.tif 000011
【図１０】
2020144729.tif 000012
【図１１】
2020144729.tif 000013
【図１２】
2020144729.tif 000014
【図１３】
2020144729.tif 000015
【図１４】
2020144729.tif 000016
【図１５】
2020144729.tif 000017
【図１６】
2020144729.tif 000018
【手続補正書】
【提出日】令和3年6月28日(2021.6.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
情報処理装置１００を含むシステムの一例は、図１に示されたようなシステムである。ただし、図１における各々の情報処理装置１００は、情報処理装置５００に置き換わる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
通信部６１３は、インターネット等のネットワーク（図示せず）を介して接続先の装置との通信を行う。検証部６１５は、自装置（検証サーバ６１０）におけるプログラム記憶部６１２に記憶されたプログラムから第２の値を新たに算出する。検証部６１５は、通信部６１３を介して、情報処理装置６００に検証要求を送信する。また、検証部６１５は、検証結果に基づいて、検証要求元に対して応答を行う。各検証要求には固有番号が割り当てられている。固有番号は、検証済みかどうかの判断に利用される。検証部６１５は、情報処理装置６００に検証要求を送信するときに、構成情報記憶部６１４に記憶されている情報処理装置６００を特定可能な情報を参照して、検証要求を送信する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００９０
【補正方法】変更
【補正の内容】
【００９０】
検証処理は、外部からの検証要求または自身の制御部６１１が発生した検証要求を受けると開始される（ステップＳ６１１）。検証要求を受信すると、検証サーバ６１０における検証部６１５は、検証要求の固有番号が検証済みリストに登録されているか否かに基づいて、検証済みであるか否かを判別する（ステップＳ６１２）。検証済みであれば、検証部６１５は、通信部６１３を介して、その旨を、検証要求元（検証要求を送信した検証サーバ）に返信し（ステップＳ６１３）、処理を終了する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９２
【補正方法】変更
【補正の内容】
【００９２】
次に、検証部６１５は、構成情報記憶部６１４に記憶されている情報に基づいて、隣接クラスタが存在するかどうかを判定する（ステップＳ６１７）。隣接クラスタが存在しない場合には、ステップＳ６２０に移行する。隣接クラスタが存在する場合には、検証部６１５は、隣接クラスタの検証サーバ６１０に検証要求を送信する（ステップＳ６１８）。検証部６１５は、応答内容の第２の値を検証情報記憶部６１６の第１の値と比較することによって、検証の成否を判断する（ステップＳ６１９）。具体的には、検証部６１５は、第１の値と第２の値とが一致した場合に、検証が成功した、すなわち、隣接クラスタにおける情報処理装置６００におけるプログラムに関する不正は生じていない、と判定する。なお、図９を参照すると、検証要求を送信する検証サーバ６１０が検証サーバ６１０Ａである場合には、隣接クラスタの検証サーバは、検証サーバ６１０Ｂである。検証要求を送信する検証サーバ６１０が検証サーバ６１０Ｂである場合には、隣接クラスタの検証サーバは、検証サーバ６１０Ａである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９３
【補正方法】変更
【補正の内容】
【００９３】
そして、ステップＳ６２０では、検証部６１５は、ステップＳ６１６の処理およびステップＳ６１９の処理で得られた検証結果と、情報処理装置６００および他の検証サーバ６１０から送られてきた検証結果とを集計する（ステップＳ６２０）。また、検証部６１５は、プログラム記憶部６１２に記憶されているプログラムに関する固有値を算出する（ステップＳ６２１）。検証部６１５は、通信部６１３を介して、算出した固有値を他の情報処理装置の検証結果とともに検証要求元に送信し（ステップＳ６２２）、処理を終了する。固有値は検証サーバ６１０（検証サーバ６１０Ａ，６１０Ｂ）または検証要求元６３０で受信されるが、検証サーバ６１０または検証要求元６３０は、受信した固有値を第２の値として扱う。
【国際調査報告】
2020144729.tif 000019
2020144729.tif 000020