本発明の一実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する管理装置であって、改ざんされていない監視モジュールを新たに取得する取得手段と、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成手段と、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信手段と、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信手段と、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定手段とを備える。
ここで、前記取得手段により取得される前記監視モジュールは、当該監視モジュールの正当性を証明するための検証用証明書を含み、前記生成手段は、前記監視モジュールに含まれる前記検証用証明書を改変して、改変された検証用証明書を含む前記おとり監視モジュールを生成し、前記送信手段は、前記情報セキュリティ装置へ、改変された前記検証用証明書を含む前記おとり監視モジュールを送信してインストールさせ、前記情報セキュリティ装置において、各監視モジュールは、前記おとり監視モジュールに含まれる検証用証明書を用いて、当該おとり監視モジュールが改ざんされているか否かを判断するとしてもよい。
ここで、前記生成手段は、ランダムなデータを生成し、生成した前記データを、前記改変された前記検証用証明書とするとしてもよい。
ここで、前記生成手段は、ランダムなデータを生成し、生成した前記データを、前記取得手段により取得された前記監視モジュールに含まれる前記検証用証明書の一部に上書きすることにより、改変された前記検証用証明書を生成するとしてもよい。
ここで、前記管理装置は、さらに、受信した前記監視結果を用いて、改竄されていない正常な監視モジュールの存在を検出する検出手段と、前記検出がされた場合に、前記監視モジュールから選択した1個の監視モジュールに対して改竄されていると仮定する第1仮定手段と、改竄されていると仮定された前記監視モジュールを起点として、受信した前記監視結果を用いて、改竄されていると仮定された監視モジュールを正常と判定する監視モジュールに対して改竄されていると仮定する手順を、未処理の監視モジュールについて、連鎖的に適用する第2仮定手段と、前記第2仮定手段による手順の適用の結果、全ての監視モジュールが改竄されていると仮定されたか判断し、前記判断がされた場合に、最初に改竄されていると仮定された前記監視モジュールを正常な監視モジュールと決定する判断手段とを備えるとしてもよい。
ここで、前記管理装置は、さらに、異常であると判定された監視モジュールの無効化指示を出力する無効化手段を備えるとしてもよい。
また、本発明の別の実施態様は、改ざん監視システムであって、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置と、前記情報セキュリティ装置を管理する管理装置とから構成され、前記管理装置は、改ざんされていない監視モジュールを新たに取得する取得手段と、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成手段と、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信手段と、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信手段と、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定手段とを備える。
また、本発明の別の実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する集積回路であって、改ざんされていない監視モジュールを新たに取得する取得手段と、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成手段と、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信手段と、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信手段と、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定手段とを備える。
また、本発明の別の実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する管理装置で用いられる管理方法であって、改ざんされていない監視モジュールを新たに取得する取得ステップと、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成ステップと、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信ステップと、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信ステップと、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定ステップとを含む。
また、本発明の別の実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する管理装置で用いられるコンピュータプログラムを記録しているコンピュータ読み取り可能な記録媒体であって、コンピュータである前記管理装置に、改ざんされていない監視モジュールを新たに取得する取得ステップと、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成ステップと、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信ステップと、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信ステップと、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定ステップとを実行させるためのコンピュータプログラムを記録している。
また、本発明の別の実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する管理装置で用いられるコンピュータプログラムであって、コンピュータである前記管理装置に、改ざんされていない監視モジュールを新たに取得する取得ステップと、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成ステップと、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信ステップと、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信ステップと、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定ステップとを実行させる。
1.実施の形態1
ここでは、本発明に係る実施の形態1としての検知システム10について図面を参照しながら説明する。
1.1 検知システム10の構成
(1)全体構成
図1は、検知システム10の全体構成図である。同図に示すように、検知システム10は、情報処理装置としての機器100と、監視装置としての管理装置200とから構成される。機器100と管理装置200とは、ネットワークを介して接続されている。
(2)機器100の構成
次に、機器100について説明する。
機器100は、ネットワークを介した様々なサービスをユーザに提供する機器である。例えば、機器100は、コンテンツ配信サーバにアクセスし、音楽や映像などのコンテンツを購入して再生したり、金融機関のシステムにアクセスし、ネットバンキング(預金の残高照会や口座振り込みなど)を利用したりする。
(a)機器100のソフトウェア構成
図1に示すように、機器100は、アプリケーションソフト(以下、「アプリ」という。)110、アプリ111、保護制御モジュール120、検知モジュール群130及びアクセス制御モジュール140を含む。
アプリ110及びアプリ111は、ネットワークを介して、機器100を使用するユーザに、様々な機能を提供するためのソフトウェアである。例えば、コンテンツ配信サーバ(不図示)から音楽コンテンツや映像コンテンツを購入し、その購入したコンテンツを再生するソフトウェアや、金融機関のシステム(不図示)にアクセスし、残高確認や振り込みなどのネットバンキングを利用するためのソフトウェアである。
アプリ110及びアプリ111は、コンテンツ配信サーバや金融機関のシステムと認証を行うための認証鍵など、秘匿データを有している。秘匿データは、悪意のある第三者(以下、「攻撃者」という。)によりアプリから抜き取られ、不正に利用されないようにするために保護される必要があるデータである。
このように、機器100は、秘匿データを扱うので、情報セキュリティ装置と呼ぶこともある。
保護制御モジュール120は、攻撃者によりアプリ110及びアプリ111が解析され、認証鍵などの秘匿データが抜き取られないようにアプリ110及びアプリ111を保護するための機能を制御するモジュールである。アプリを保護するための機能としては、アプリを利用しない時には、アプリを暗号化して保存しておき、アプリを利用する時にのみ暗号化アプリを復号してメモリへロードする復号ロード機能や、アプリが改ざんされていないかをチェックする改ざん検出機能、デバッガなどの解析ツールが動作しないかをチェックする解析ツール検出機能などがある。
保護制御モジュール120は、これらの機能の動作を制御し、アプリ110及びアプリ111が攻撃者によって解析されていないかなどをチェックする。攻撃者による攻撃を検出したときには、保護制御モジュール120は、アプリ110及びアプリ111の動作を停止し、アプリ110及びアプリ111が利用していたメモリ、特に秘匿データが記録されたメモリ領域のクリアなどの処理を行い、秘匿データの漏洩を防止する。
検知モジュール群130は、複数の検知モジュールから構成される。実施の形態1では、検知モジュール群130は、図3に示すように、検知モジュール131、検知モジュール132、・・・、及び検知モジュール137の7つの検知モジュールから構成される。
検知モジュール131、132、・・・、137は、それぞれ、保護制御モジュール120の改ざんの有無を検出する。各検知モジュールは、保護制御モジュール120が改ざんされている場合、管理装置200に通知する。
また、検知モジュール131、132、・・・、137は、アプリ110及びアプリ111を更新する機能を有していてもよい。
そして、検知モジュール群130は、攻撃者によって各検知モジュールが改ざんされ、各検知モジュールを不正に利用されることを防止するために、検知モジュール同士が相互に改ざん検出を実施する。そして、改ざん検出結果を、管理装置200へ送信する。管理装置200により、ある検知モジュールが改ざんされていると判断された場合には、他の正常な検知モジュールは、管理装置200からの無効化指示を受け、改ざんされた検知モジュールを無効化する。
これにより、検知モジュール群130に含まれる一部の検知モジュールが攻撃され、改ざんされた場合であっても、それを検出し、攻撃に対処することが可能となる。
また、管理装置200は、検知モジュール同士の改ざん検出結果において改ざんされている検知モジュールが存在していると判断した場合、さらに詳しい検知モジュールの状況を確認するために、検出対象モジュール900を機器100に送信する。機器100は、内部に検出対象モジュール900を取り込む。機器100内の検知モジュール131、132、・・・、137は、検出対象モジュール900の改ざん検出を実行し、改ざん検出結果を、管理装置200へ送信する。管理装置200により、ある検知モジュールが改ざんされていると判断された場合には、他の正常な検知モジュールは、管理装置200からの無効化指示を受け、改ざんされた検知モジュールを無効化する。
これにより、改ざんされた検知モジュールを早期に検出し、攻撃に対処することが可能になる。
アクセス制御モジュール140は、各検知モジュールが他のモジュールを消去するために必要なアクセス情報を保持する。アクセス情報は、例えば、消去対象であるモジュールが配置されているアドレスや、消去に必要な手順が書かれた手順書などである。なお、アクセス情報は、消去対象であるモジュール毎に、それぞれ個別のアクセス情報取得鍵で暗号化されている。
(b)検知モジュールの構成
次に、検知モジュール131、132、・・・、137の詳細について説明する。
図4は、検知モジュール131の機能的な構成を示す機能ブロック図である。検知モジュール132、・・・、及び137も同様の構成を有する。検知モジュール131は、検知モジュール本体と、改ざん検出用証明書421と、MAC値テーブル422とを含む。改ざん検出用証明書421は、検知モジュール本体の改ざんを検出するための証明書であり、管理装置200にて検出対象モジュール配布部220で保持する署名秘密鍵(署名私有鍵とも呼ぶ)を用いて生成したものである。
具体的には、検知モジュール本体に対して、署名秘密鍵を用いて、デジタル署名を施して、署名データを生成し、生成した署名データを改ざん検出用証明書421とする。
検知モジュール本体は、受信部401、送信部402、制御部403、検証部404、MAC値生成部405、MAC値テーブル更新部406、及び検出対象モジュールインストール部407から構成される。
受信部401は、管理装置200から、各種指示や検出対象モジュール900を受信する。また、受信部401は、他の検知モジュールから、相互監視を行うために必要な検知モジュール本体や検知モジュール検証用証明書などを受信する。さらに、受信部401は、他の検知モジュールから、依頼した処理の結果や、当該他の検知モジュールによる保護制御モジュール120の監視結果などを受信する。
送信部402は、管理装置200、保護制御モジュール120、他の検知モジュール、及びアクセス制御モジュール140へ、各種処理結果や証明書などのデータを送信する。
制御部403は、受信部401が受信した各種指示や通知に基づいて、検証部404や検出対象モジュールインストール部407を制御することにより各種の処理を行う。
具体的には、制御部403は、保護制御モジュール120、検知モジュール132、・・・、及び検知モジュール137の改ざん検証処理、保護制御モジュール120、検出対象モジュール900のインストール処理、監視パターンの更新処理などを行う。
検証部404は、制御部403の制御に基づき、保護制御モジュール120、検知モジュール132、・・・、及び検知モジュール137、検出対象モジュール900の改ざん検出処理を行う。
検証部404は、各モジュールに付加されている検証用証明書を用いて改ざん検出処理を行うとしてもよい。または、予め計算されたメッセージ認証コード(Message Authentication Code)(以下、「MAC値」という。)を用いてもよい。なお、検出対象モジュール900については、検出対象モジュール900に付加されている検証用証明書を用いて改ざん検出処理を行う。
検証部404が、どのタイミングでどのモジュールの改ざん検出処理を行うのかを示す情報は、予め、管理装置200から与えられている。検証部404は、管理装置200から改ざん検出対象のモジュールの変更や改ざん検出を行うタイミングの変更の指示があった場合には、指示に従い変更する。
MAC値生成部405は、検証鍵を保持している。MAC値生成部405は、検証部404が改ざん検出処理にMAC値を用いる場合、検証鍵を用いてMAC値を生成する。
MAC値テーブル更新部406は、各モジュールのMAC値が格納されているMAC値テーブル422を更新する。MAC値テーブル422には、モジュールを識別するためのモジュール識別子と、そのモジュールに対応するMAC値とが対になって格納されている。
MAC値生成部405は、改ざん検出処理の対象であるモジュールを取得し、MAC値を計算する。検証部404は、計算されたMAC値とMAC値テーブル422に格納されている対象モジュールのMAC値とを比較することにより改ざん検出を行う。
検出対象モジュールインストール部407は、制御部403の制御に基づき、管理装置200から送信された検出対象モジュール900を機器100内にインストールする。
なお、署名方式に関しては非特許文献1に詳しく説明されている。証明書に関しては非特許文献2に詳しく説明されている。
(c)保護制御モジュール120の構成
ここでは、保護制御モジュール120の詳細について説明する。
図2は、保護制御モジュール120の機能的な構成を示す機能ブロック図である。保護制御モジュール120は、保護制御モジュール本体と、改ざん検出用証明書331とを含む。改ざん検出用証明書331は、保護制御モジュール本体を改ざん検出するための証明書であり、管理装置200にて検出対象モジュール配布部220で保持する署名秘密鍵を用いて生成したものである。
同図に示すように、保護制御モジュール120は、受信部301、送信部302、制御部303、復号ロード部304、改ざん検出部305、解析ツール検出部306及び暗復号鍵保持部307から構成される。
受信部301は、検知モジュール131、132、・・・、137から、各種依頼などを受信する。
送信部302は、検知モジュール131、132、・・・、137へ、各種依頼などを送信する。
制御部303は、復号ロード部304、改ざん検出部305、及び解析ツール検出部306を制御することにより、アプリ110、111が攻撃者により攻撃されている場合に、それを検出する。
復号ロード部304は、暗号化されているアプリ110、111を実行するときに、暗復号鍵を用いて復号し、メモリ上にロードする処理を行う。また、アプリ110、111の実行中に、他のアプリへのコンテキストスイッチが発生すると、復号ロード部304は、メモリ上のデータを、暗復号鍵を用いて暗号化する。そして、再びアプリ110、111へコンテキストスイッチしたときに、暗号化したデータを復号する処理を行う。なお、コンテキストスイッチとは、複数のモジュールが1つのCPUを共有できるように、CPUの状態(コンテキスト)を保存したり復元したりする過程のことである。
改ざん検出部305は、アプリ110、111の改ざん検出処理を実行する。改ざん検出処理は、アプリ110、111に付加されている検証用証明書を用いる方法と、MAC値を比較する方法とがある。
解析ツール検出部306は、デバッガなどの解析ツールがインストールされたり、動作したりしたときにそれを検出する。不正な攻撃者がアプリ110、111を攻撃するために、解析ツールをインストールしたり、動作させたりすることが想定されるからである。検出方法としては、例えば、ファイル名を検索する方法や、デバッガが使用する特殊なレジスタが使用されているかを調べる方法や、デバッガが設定する割り込みを検出する方法などを用いる。
暗復号鍵保持部307は、アプリ110、111を暗復号するための暗復号鍵を保持する。
(d)アクセス制御モジュール140の構成
図5は、アクセス制御モジュール140の構成を機能的に示す機能ブロック図である。同図に示すように、アクセス制御モジュール140は、受信部501、送信部502、及びアクセス情報保持部503から構成される。
受信部501は、検知モジュール131、132、・・・、137から、改ざんされた検知モジュールを消去するために必要な情報であるアクセス情報の取得依頼を受信する。
送信部502は、アクセス情報取得依頼に応じて、アクセス情報取得を依頼してきた検知モジュールへアクセス情報を送信する。
アクセス情報保持部503は、検知モジュール131、132、・・・、137毎に、そのモジュールを消去するためのアクセス情報を保持する。
各アクセス情報は、消去対象となる検知モジュールを識別するための検知モジュール識別子が付されている。また、各アクセス情報は、アクセス情報取得鍵で暗号化されている。
検知モジュール131、132、・・・、137からアクセス情報取得依頼を受け付けると、アクセス情報保持部503は、消去対象の検知モジュールの識別子が付されたアクセス情報を、依頼元の検知モジュールへ送信する。
(e)機器100のハードウェア構成
続いて、図9を用いて、機器100のハードウェア構成について説明する。
図9に示すように、機器100は、CPU(Central Processing Unit)171、不揮発性メモリであるEEPROM(Electrically Erasableand Programmable Read Only Memory)172、RAM(Random Access Memory)173、及びNIC(Network Interface Card)174などを含んで構成される。また、これらはバスを介して、相互に通信可能に接続されている。
EEPROM172には、保護制御モジュール120、検知モジュール131、132、・・・、137、及びアプリ110、111などが格納されている。
EEPROM172に格納されている各種モジュールをCPU171が実行することにより、各種モジュールの各機能部が実現される。各機能部は、具体的には、コンピュータプログラムによって記述されている。
RAM173は、CPU171のワークエリアとして用いられる。RAM173には検知モジュール131、132、・・・、137、及び、アプリ110、111がロードされる。改ざん検出処理及び無効化処理の対象となる検知モジュールは、RAM173上で動作している検知モジュールである。なお、図9では、3つの検知モジュール131、132、133のみを図示しているが、図面上のスペースの関係のためであり、実際にはEEPROM172及びRAM173には、7つの検知モジュール131、132、・・・、137が存在する。
NIC174は、ネットワークに接続するための拡張カードである。
(f)ソフトウェア階層
続いて、図10を用いて、機器100のソフトウェア階層について説明する。
図10に示すように、アクセス制御モジュール140及び検知モジュール群130は、OS150の中に組み込まれている。アプリ110及びアプリ111は、OS150上で動作し、保護制御モジュール120及びブートローダ160は、OS150の管理外にある。
機器100の起動の際には、まず保護制御モジュール120及び検知モジュール群130が起動された上でアプリケーションが実行される。
(3)管理装置200の構成
次に、管理装置200の構成について説明する。
管理装置200は、機器100の検知モジュール群130から、改ざん検出結果を受信して、受信した改ざん検出結果を基に、無効化すべき異常な検知モジュールを特定する不正モジュール特定装置として機能する。
(a)全体構成
図1に示すように、管理装置200は、判断部210、検出対象モジュール配布部220、モジュール無効化部230、及び通信部240から構成される。管理装置200は、具体的には、CPU、ROM、RAM、ハードディスクユニットなどを備えるコンピュータシステムである。CPUが、ROMまたはハードディスクユニットに記憶されているコンピュータプログラムにしたがって動作することにより、管理装置200は、上記の機能を発揮する。
判断部210は、機器100の検知モジュール群130から、改ざん検出結果を受信して、受信した改ざん検出結果を基に、無効化すべき異常な検知モジュールを特定する。
検出対象モジュール配布部220は、検知モジュール群130からの改ざん検出結果において、改ざんされている検知モジュールが存在する場合に、検出対象モジュール900を機器100に送信する。
モジュール無効化部230は、検知モジュール131、132、・・・、137からアクセス情報取得鍵取得要求を受け付けると、要求元の検知モジュールへ、アクセス情報取得鍵を送信する。
通信部240は、機器100と、管理装置200内部の各部との間で情報の送受信を行う。例えば、通信部240は、機器100から受信した改ざん検出結果を判断部210に送信する。なお、機器100と管理装置200との間の通信には、データを暗号化するなど、セキュリティの確保された通信路を用いてもよい。
続いて、管理装置200の各構成要素について説明する。
(b)判断部210の構成
図6は、判断部210の構成を機能的に示す機能ブロック図である。
同図に示すように、判断部210は、受信部601、送信部602、指示生成部603、及びモジュール特定部604とから構成される。そして、モジュール特定部604の内部に、異常モジュール特定部605を備える。
受信部601は、検知モジュール131、132、・・・、137から、改ざん検出結果、各種依頼などを受信し、それらを指示生成部603へ出力する。また、受信部601は、管理装置200内の各部から、処理が完了した旨の通知を受け取り、それを指示生成部603へ出力する。
送信部602は、指示生成部603によって生成された指示を、管理装置200内の各部へ出力する。
指示生成部603は、検知モジュール131、132、・・・、137から受信した改ざん検出結果(以下、「相互監視結果」又は単に「監視結果」ということがある。)を、モジュール特定部604へ出力する。また、指示生成部603は、モジュール特定部604から、改ざんされている不正な検知モジュールを識別する情報を取得し、取得した情報を基に、管理装置200内の各部に対する指示を生成する。
モジュール特定部604は、検知モジュール131、132、・・・、137から受信した相互監視結果を用いて、各検知モジュールが改ざんされているか否かを判断し、改ざんされている異常な検知モジュールを特定する。さらに、モジュール特定部604は、検知モジュール131、132、・・・137から受信した検出対象モジュールの監視結果を用いて、各検知モジュールが改ざんされているか否かを判断し、改ざんされている異常な検知モジュールを特定する。モジュール特定部604は、異常な検知モジュールを識別する情報を指示生成部603へ出力する。
異常モジュール特定部605は、各検知モジュールから受信した検出対象モジュール900の改ざん検出結果(監視結果)を用いて、各検知モジュールが異常な検知モジュールであるか否かを特定する。具体的には、検出対象モジュール900を「改ざんされていない」すなわち、正常と判断した検知モジュールを異常な検知モジュールと特定する。
(c)検出対象モジュール配布部220
図7は、検出対象モジュール配布部220の機能的な構成を示す機能ブロック図である。
同図に示すように、検出対象モジュール配布部220は、受信部701、送信部702、制御部703、証明書生成部704、署名秘密鍵保持部705、検知モジュール選択部706、及び検出対象モジュール保持部707から構成される。
受信部701は、検知モジュール131、132、・・・、137から保護制御モジュール120に対する改ざん検出結果、及び検知モジュール間の相互監視結果を受信する。
送信部702は、機器100のアプリ110、111、保護制御モジュール120を更新する必要がある場合に、検知モジュール131、132、・・・、137へ、検出対象モジュール900、検出対象モジュール900のインストールの依頼、復号に必要な鍵などのデータを送信する。
制御部703は、検出対象モジュール配布部220の各構成要素を制御する。
証明書生成部704は、検知モジュール131、132、・・・、137の認証公開鍵に対して署名秘密鍵を用いて認証鍵証明書を生成する。また、保護制御モジュール120や検知モジュール131、132、・・・、137を改ざん検証するための改ざん検証用証明書を生成する。さらに、証明書生成部704は、検出対象モジュール900に対して署名秘密鍵を用いて、機器100内の検知モジュール131、132、・・・137が、検出対象モジュール900の改ざん検出を実行する際に使用する検証用証明書を生成する。具体的には、検証用証明書は図21に示すとおり、検出対象モジュール900のデータ部分921に対応する署名である。ここで生成する検証用証明書は、図21に示すとおり、署名の一部923を改ざんしたものであり、不正な証明書である。なお、署名を改ざんせず、データ部分921を改ざんしてもよい。また、署名秘密鍵を使用せず、乱数や所定の値を署名として検証用証明書を生成するとしてもよい。その場合は、署名秘密鍵保持部705を検出対象モジュール配布部220に含めなくてもよい。
署名秘密鍵保持部705は、証明書生成部704が証明書を生成するときに用いる署名秘密鍵を保持する。
検知モジュール選択部706は、検出対象モジュール900を配布する場合に、検出対象モジュール配布処理に使用する検知モジュールを選択する。送信部702は、検知モジュール選択部706が検知した検知モジュールへ、暗号鍵及び検出対象モジュール900を送付する。
検出対象モジュール保持部707は、機器100内の検知モジュール131、132、・・・、137が改ざん検出を実行する対象である、検出対象モジュールを保持する。
(d)モジュール無効化部230
図8は、モジュール無効化部230の機能的な構成を示す機能ブロック図である。
同図に示すように、モジュール無効化部230は、受信部801、送信部802、アクセス情報取得鍵保持部803及び検知モジュール選択部804から構成される。
受信部801は、判断部210から改ざんされた異常な検知モジュールを無効化する指示を受信する。また、受信部801は、検知モジュール131、132、・・・、137からアクセス情報取得鍵の取得依頼を受信する。
送信部802は、アクセス情報取得鍵の取得依頼に応じて、アクセス情報取得鍵を依頼元の検知モジュールへ送信する。
アクセス情報取得鍵保持部803は、アクセス制御モジュール140が保持するアクセス情報を復号するための鍵であるアクセス情報取得鍵を保持する。
検知モジュール選択部804は、改ざんされた異常な検知モジュールの無効化処理を行う検知モジュールを選択し、選択した検知モジュールに、異常な検知モジュールの無効化を指示する。
なお、検知モジュール選択部804が選択した検知モジュールからアクセス情報取得鍵の取得依頼があった場合には、送信部802は、アクセス情報取得鍵に、消去対象となる検知モジュールの識別子を付して、前記検知モジュールへ送信する。
1.2 検知システム10の動作
続いて、検知システム10の動作を説明する。
(1)全体動作
図11は、検知システム10全体の処理の流れを示したフローチャートである。
検知システム10は、先ず、初期設定処理を行う(S100)。
初期設定処理とは、保護制御モジュール120を検知するために必要となる各種のデータや、検知モジュール131、132、・・・、137が相互監視するために必要データなどを検知モジュール131、132、・・・、137のそれぞれに埋め込む処理である。なお、初期設定処理は、機器100が工場で製造される際に行われる。その後、機器100は、工場から出荷され、ユーザの利用に供される。
ユーザにより機器100が利用される際には、機器100内部では、保護制御モジュール120がアプリ110、111を攻撃者による攻撃から保護する。
これと同時に、検知モジュール131、132、・・・、137は、保護制御モジュール120の改ざん検出処理を実行し、保護制御モジュール120が攻撃されているか否かをチェックする検知処理を行う(S200)。
さらにこの処理と並行して、検知モジュール131、132、・・・、137間で相互監視することで異常モジュールを特定するモジュール特定処理を行う(S300)。
なお、本発明の改ざん監視システムは、上記のすべての処理は必須ではない。改ざん監視システムは、複数の検知モジュール間で相互監視することにより異常モジュールを特定する処理(モジュール特定処理)があればよい。
(2)初期設定処理の動作
ここでは、図12、図13を用いて、検知システム10の初期設定処理(図11のS100)の詳細について説明する。
図12は、初期設定処理のシーケンス図である。
検知システム10は、機器100の工場製造時に、機器100の不揮発メモリへアプリ(110、111)、保護制御モジュール120、検知モジュール(131、13
2、・・・、137)などをインストールする(S1000)。
これらのソフトウェアには、ソフトウェアが改ざんされているか否かを検証するための改ざん検出用証明書が付加されている。この改ざん検出用証明書は、管理装置200の検出対象モジュール配布部220が保持する署名秘密鍵により署名が施されている。なお、S1000では、上記のソフトウェア以外にも、機器100の動作に必要なソフトウェアがインストールされる。
ここで、初期設定処理の際に機器100に埋め込まれる鍵について説明する。保護制御モジュール120には暗復号鍵が埋め込まれ、検知モジュール131、132、・・・、137には署名公開鍵、検証鍵及び認証鍵対が埋め込まれる。更に、検知モジュール131、132、・・・、137には、それぞれの検知モジュールを識別するための検知モジュール識別子が埋め込まれ、その状態で機器100にインストールされる。
保護制御モジュール120の暗復号鍵は、アプリ110、111を暗号化及び復号するための鍵である。アプリ110、111は、暗復号鍵を用いて暗号化された状態で不揮発メモリへ記憶され、実行時に保護制御モジュール120により暗復号鍵を用いて復号された後、実行される。
機器100が、コンテキストを切り替えながら複数のアプリを実行する場合には、コンテキスト切り替えのタイミングで、暗復号鍵を用いて、アプリ110、111が使用しているデータの暗号化及び復号を行うことにより、アプリ110、111の実行時に、デバッガなどの解析ツールによって、データが抜き取られることを防止する。
検知モジュール131、132、・・・、137に埋め込まれる鍵のうち、署名公開鍵は、すべての検知モジュールに共通の鍵である。検証鍵と認証鍵対とは、それぞれの検知モジュールで異なる鍵である。
図12に戻り説明を続ける。S1000で各ソフトウェアをインストールした後、機器100は、初期設定を行うソフトウェア、及び、正常に動作するかテストするためのソフトウェアなどを実行して、初期化する(S1001)。また、機器100は、検知モジュール131、132、・・・、137に対して、初期化指示を出力する(S1002)。各検知モジュールは、検知モジュール初期化処理を行う(S1003)。
(3)検知モジュール初期化処理
図13は、検知モジュール初期化処理(図12のS1003)の動作を示すフローチャートである。
なお、ここでは、検知モジュール131についてのみ説明するが、検知モジュール132、・・・、及び137の動作も基本的に同一である。
検知モジュール131は、改ざん検出対象である検知モジュール132、・・・、137及び保護制御モジュール120の改ざん検出用証明書の検証を行う(S1004)。この検証は、各モジュールに対する改ざん検出用証明書が、改ざん検出用証明書に対応するモジュールのデータを対象とした署名データであるか否かを、署名公開鍵を用いて署名検証アルゴリズムを実行することにより行われる。
生成したハッシュ値が、それぞれの改ざん検出用証明書に記述されているハッシュ値と一致すれば(S1005でY)、検知モジュール132、・・・、137、保護制御モジュール120のそれぞれに対してMAC値を生成する。そして、生成したMAC値を、MAC値テーブルとして保持する(S1006)。
署名検証アルゴリズムを用いた検証で、改ざん検出用証明書が不正と判定されれば(S1005でN)、検知モジュール131は、エラーを出力して機器を停止する(S1007)。
(4)検知処理の動作
続いて、図14のシーケンス図を用いて、検知システム10の検知処理(図11のS200)の詳細について説明する。
機器100は、初期設定処理を終えると工場から出荷され、ユーザの元へ送られ、ユーザの元で機器100が使用される。
機器100でアプリ110、111が動作しているとき、機器100内部では、保護制御モジュール120が復号ロード機能、改ざん検出機能、解析ツール検出機能などの機能を制御し、アプリ110、111を攻撃者による攻撃から保護する。
検知処理においては、先ず、検知モジュール131、132、・・・、137が、保護制御モジュール120の改ざん検出を実施する。例えば、検知モジュール131が、保護制御モジュール120の改ざん検出を実施する(ステップS2000)。改ざん検出は、検証鍵を使用して保護制御モジュール120のMAC値を計算し、計算したMAC値とMAC値テーブルに保持されているMAC値とを比較することにより行う。なお、図14では検知モジュール131、132、133のみを記載しているが、スペースの関係で簡略化した記載になっており、実際は、検知モジュール134、・・・、137も存在する。
MAC値が一致すれば、保護制御モジュール120は改ざんされていないと判定し、MAC値が一致しなければ、保護制御モジュール120は改ざんされていると判定する。
なお、図14では記載を簡略化し、検知モジュール131のみが保護制御モジュール120の改ざん検出を行っているように記載されているが、当然ながら、検知モジュール132、・・・、137でも同様の処理が行われる。
その後の処理についても、検知モジュール131が保護制御モジュール120の改ざんを検出した場合を中心に記載しているが、検知モジュール132、・・・、137が保護制御モジュール120の改ざんを検出した場合も基本的には同様の処理が行われる。
保護制御モジュール120が改ざんされているか否か、即ち、MAC値が一致するか否かを判定し、保護制御モジュール120が改ざんされていると判定した場合(S2001でY」)、検知モジュール131は、その旨を、管理装置200の判断部210及び他の検知モジュールへ通知する(S2002、S2003、S2004)。
保護制御モジュール120が改ざんされていないと判定した場合(S2001でN)、検知モジュール131は、判断部210や他の検知モジュールへ通知を行わず、改ざん検出処理へ戻る。
他の検知モジュールから保護制御モジュール120が改ざんされている旨の通知を受けた検知モジュールは、検証鍵及びMAC値を用いて、保護制御モジュール120の改ざん検出を実施する(S2005、S2006)。そして、改ざん検出結果を、判断部210及び他の検知モジュールへ通知する(S2007、S2008)。
判断部210は、検知モジュール131、132、・・・、137から改ざん検出結果を受信する(S2007、S2008)。
(5)モジュール特定処理の動作
続いて、図15のシーケンス図を用いて、モジュール特定処理(図11のS300)の詳細について説明する。図15では、検知モジュール131、132、・・・、137のそれぞれが個別に行う処理を、検知モジュール群130が行う処理としてまとめて記載している。
検知モジュール群130は、各検知モジュール間で改ざん検出を行う相互監視処理を実行する(S3001)。
具体的には、図16に示すとおり、まず、検知モジュール131が検知モジュール132の、検知モジュール132が検知モジュール133の、検知モジュール133が検知モジュール131の改ざん検出を行う(S3101、3102、3103)。ここで、図16ではスペースの関係上、検知モジュール131、132、133のみを記載しているが、実際には、検知モジュール134、・・・、137の処理も存在する。また、図16では上記のように検知モジュール131、132、133間で改ざん検出を実行するよう記載しているが、実際には検知モジュール134、・・・、137も含めた間で改ざん検出を実行する。なお、どの検知モジュールがどの検知モジュールを改ざん検出するかの情報(監視パターンと呼ぶ)にしたがって、各検知モジュールは改ざん検出を実行する。
各検知モジュールは改ざん検出を実行した検知モジュールが改ざんされているか否かを判定する(S3104)。改ざんされていると判定した場合(S3104でY)、検出結果を管理装置200の判断部210に送信する(S3105)。改ざんされていないと判定した場合(S3104でN)、何もせずに処理を継続する。管理装置200の判断部210は、各検知モジュールから検出結果が送信された場合に、検出結果を受信する(S3106)。図15に戻り説明を続ける。
管理装置200の判断部210は、各検知モジュールから受信した検出結果に基づき、改ざんされた検知モジュールが存在するか否かを判定する(S3002)。具体的には、検知モジュール群130の検知モジュールの内、一つ以上の検知モジュールから検出結果を受信した場合に、改ざんされた検知モジュールが存在すると判定する。改ざんされた検知モジュールが存在しないと判定した場合(S3002でN)、何もせず、モジュール特定処理を終了する。改ざんされた検知モジュールが存在すると判定した場合(S3002でY)、検出対象モジュール900を配布する検出対象モジュール配布処理を実行する(S3003)。
具体的には、図17に示すとおり、まず、管理装置200の検出対象モジュール配布部220が、検出対象モジュール900に対応する検証用証明書として、不正な証明書を生成する(S3201)。次に検出対象モジュール配布部220は、検出対象モジュール900をインストールさせる検知モジュールを選択する(S3202)。検出対象モジュール配布部220は、検出対象モジュール900に生成した検証用証明書を付加して、選択した検知モジュールに送信する(S3203)。
図17では、検出対象モジュール配布部220が検知モジュール132を選択した場合について記載している。他の検知モジュールを選択した場合も、同様の動作を行う。選択された検知モジュール132は、検出対象モジュール配布部220から検出対象モジュール900を受信する(S3204)。さらに、検知モジュール132は、検出対象モジュール900を機器100内部にインストールする(S3205)。図15に戻り説明を続ける。
次に機器100内部にインストールした検出対象モジュール900を、各検知モジュールが改ざん検出する検出対象モジュール監視処理を実行する(S3004)。
具体的には、図18や図22に示すとおり、まず、検知モジュール131、132、・・・、137が検出対象モジュール900の改ざん検出を実行する(S3301、3302、3303)。ここで、図18では検知モジュール131、132、133のみ記載しているが、実際は検知モジュール134、・・・、137も同様の処理を実行する。各検知モジュールは、改ざん検出した結果を検出対象モジュール配布部220に送信する(S3304)。判断部210は、検出結果を受信する(S3305)。図15に戻り説明を続ける。
判断部210は検出対象モジュール監視処理の結果、検出対象モジュールを正常と判定する検知モジュールが存在するか否かを判定する(S3005)。検出対象モジュールを正常と判定する検知モジュールが存在しないと判定した場合(S3005でN)、何もせず、モジュール特定処理を終了する。検出対象モジュールを正常と判定する検知モジュールが存在すると判定した場合(S3005でY)、異常モジュール判定処理を実行する(S3006)。
具体的には、図19に示すとおり、まず、管理装置200の判断部210は、検出対象モジュールを正常と判定する検知モジュールを、異常モジュールとして抽出する(S3401)。例えば、図23のように検知モジュール133、136、137が検出対象モジュールを正常と判定しているため、これらを異常モジュールとして抽出する。次に、判断部は機器100内の検知モジュールすべてが異常モジュールであるか否かを判定する(S3402)。検知モジュールすべてが異常でないと判定した場合(S3402でN)、何もせず、モジュール特定処理を終了する。検知モジュールすべてが異常であると判定した場合(S3402でY)、機器100においてエラーを出力して停止させる(S3403)。
(6)無効化処理の動作
続いて、図20のシーケンス図を用いて、無効化処理の詳細について説明する。
無効化処理は、モジュール特定処理において改ざんされた検知モジュールを検出した場合に、機器100内部に存在する異常な(改ざんされた)モジュールを無効化する処理である。
ここでは、検知モジュール133が改ざんされ、それを検知モジュール131及び132が検出した場合の処理を例に、無効化処理の動作の詳細を説明する。
判断部210は、モジュール特定処理において抽出した、異常な検知モジュールの識別情報と共に、モジュール無効化部230へ無効化の指示を出力する(S4001)。
モジュール無効化部230は、改ざんされたと判定されていない検知モジュール131、132及び134から137のいずれか(ここでは、検知モジュール131とする。)へ、改ざんされた検知モジュール133の無効化を依頼する(S4002)。
検知モジュール131は、モジュール無効化部230から、検知モジュール133の無効化依頼を受信すると、モジュール無効化部230に対し、検知モジュール133を無効化するためのアクセス情報取得鍵の送付を依頼する(S4003)。更に、検知モジュール131は、アクセス制御モジュール140へ、検知モジュール133を無効化するためのアクセス情報の取得を依頼する(S4004)。
モジュール無効化部230は、アクセス情報取得鍵の送付依頼を受信すると、検知モジュール131が正常な(改ざんされていない)検知モジュールか否か、及び、依頼されたアクセス情報取得鍵が異常な(改ざんされた)検知モジュール133を無効化するためのアクセス情報取得鍵か否かを確認する(S4005)。この確認は、判断部210からモジュール無効化部230へ通知された検知モジュールの情報を利用して行なう。
確認した結果、改ざんされた検知モジュール133からの依頼であったり、あるいは、改ざんされていない検知モジュール131、132に対するアクセス情報取得鍵の取得依頼であったりする場合には(S4005でN)、無効化処理を停止する(S4006)。
確認した結果、問題なければ(S4005でY)、依頼してきた検知モジュール131へ検知モジュール133を無効化するためのアクセス情報取得鍵を送付する(S4007)。
検知モジュール131は、モジュール無効化部230からアクセス情報取得鍵を受信し、さらに、アクセス制御モジュール140から暗号化されたアクセス情報を受信する(S4008)。検知モジュール131は、アクセス情報取得鍵と暗号化されたアクセス情報とから、アクセス情報を取得する(S4009)。取得したアクセス情報は、検知モジュール133を消去するための専用ドライバである。検知モジュール131は、専用ドライバを利用して、改ざんされた異常な検知モジュール133を消去する(S4010)。
検知モジュール131は、無効化処理が終了すると、アクセス情報取得鍵、暗号化されたアクセス情報、及び、アクセス情報等を消去し、モジュール無効化部230へ完了通知を送信する(S4011)。モジュール無効化部230は、検知モジュール131から完了通知を受信したら、判断部210へ無効化の完了通知を送信する(S4012)。
ここで、ステップS4002では、検知モジュール131に対して、改ざんされた検知モジュール133の無効化処理を依頼しているが、正常な検知モジュールを1つ選択する方法としては、本実施の形態1に係るモジュール特定処理の結果を用いて、正常なモジュールを1つ選択するとしてもよい。
1.3 実施の形態1の効果
以上説明したように、検知モジュール群130内の複数の検知モジュールが相互監視処理を行うので、改ざんされた検知モジュールが存在するか否かが判定可能になる。
さらに、検出対象モジュール900を各検知モジュールが改ざん検出し、その結果を管理装置200の判断部210が判断することにより、改ざんされた異常な検知モジュールを検出することが可能となり、検知システムの信頼性を高めることができる。以下でこれについて詳細に説明する。
検出対象モジュール900は、図21に示すように、検出対象モジュール900のデータ部分921に対する検証用証明書922が付加されている。この検証用証明書922は改ざんされており、不正な証明書である。そのため、正常な検知モジュールが検証用証明書922を用いて、検出対象モジュール900のデータを改ざん検出すると、検証用証明書が不正であるため、検出対象モジュール900が異常(改ざんされている)と判定することになる。したがって、もし、ある検知モジュールが検出対象モジュール900を正常(改ざんされていない)と判定した場合、この検知モジュールは正常でなく異常である。そのため、管理装置200の判断部210において、各検知モジュールの検出対象モジュール900の監視結果を確認することで、異常な検知モジュールを抽出することが可能になる。具体的には、監視結果が検出対象モジュール900が正常であることを示している場合、判断部210はその監視結果を送信した検知モジュールが異常であると判断するため、異常な検知モジュールの抽出が可能である。したがって、判断部210は異常な検知モジュールを検出可能であり、検知システムの信頼性を高めることができる。
また、本実施の形態1では、異常な検知モジュールを無効化するので、異常な検知モジュールによる不正動作を防止することができる。
なお、非特許文献3には、モジュールの相互監視により故障診断をするため技術が記載されている。しかし、この技術では、システム内の故障数を制限しているため、システム内の故障数を超えたときに誤判断をする可能性がある。本発明に係る改ざん監視システムである実施の形態1の検知システムでは、検出対象モジュール900の監視結果により、異常な検知モジュールを検出することができるため、判断は異常な検知モジュールの数に依らず、誤判断することがない。
2.実施の形態2
ここでは、本発明に係る別の改ざん監視システムの実施の形態2について、図面を参照しながら説明する。
上記の実施の形態1では、検出対象モジュールを使用して異常な検知モジュールを特定している。さらに、異常な検知モジュールを無効化するために、異常でないと判断された検知モジュールを使用する。しかし、異常でないと判断された検知モジュールであっても、異常である可能性があるため、正しく異常な検知モジュールを無効化できるとは限らない。
そこで、実施の形態2では、異常な検知モジュールを特定するだけでなく、正常な検知モジュールを特定し、それを用いて異常な検知モジュールを無効化する。
2.1 検知システム10aの構成
実施の形態2に係る検知システム10aの構成について、図24を用いて説明する。
(1)全体構成
図24に示すように、検知システム10aは、情報処理装置としての機器100と管理装置としての管理装置200aとが、ネットワークを介して接続されて構成される。図24において、実施の形態1と同様の機能を有する構成要素には、図1と同一の符号を付し、詳細な説明を省略する。以下では、実施の形態2の特徴的な構成要素及び処理について詳細に説明する。
管理装置200aは、判断部210a、検出対象モジュール配布部220、モジュール無効化部230、通信部240及び監視パターン更新部250から構成される。
(2)判断部210aの構成
図25は、実施の形態2に係る判断部210aの構成を機能的に示す機能ブロック図である。
同図に示すように、判断部210aは、受信部601、送信部602、指示生成部603及びモジュール特定部604aから構成される。そして、モジュール特定部604aの内部に、異常モジュール特定部605、正常モジュール特定部607とモジュール特定情報保持部606とを備える。
実施の形態1の判断部210との相違点は、モジュール特定部604aの内部に、正常モジュール特定部607及びモジュール特定情報保持部606を備える点である。
(3)モジュール特定情報保持部606
モジュール特定情報保持部606は、異常モジュール特定部605及び正常モジュール特定部607が異常モジュールもしくは正常モジュールと特定した結果を格納する。具体的には、例えば、図26のように、検知モジュールの識別情報とそのモジュールが正常または異常であるかのリスト(モジュール特定情報)621を格納する。図26は、検知モジュール133と136が異常(624、627)、検知モジュール132と137が正常(623、628)と特定され、それ以外の検知モジュールの状態は不明(異常、正常のどちらにも特定されていない)(622、625、626)であることを示している。
(4)正常モジュール特定部607
正常モジュール特定部607は、以下に示すようにして、機器100における各検知モジュールの相互監視結果を用いて、改ざんされていない正常な検知モジュールを特定する。
正常モジュール特定部607は、図27に示すように、特定指示受信部671、特定結果送信部672、異常モジュール仮定部(第一仮定部とも呼ぶ。)673、検証結果判定部674、仮異常検知モジュール群抽出部675及び抽出結果判断部676から構成されている。また、検証結果判定部674及び仮異常検知モジュール群抽出部675は、第二仮定部677を構成している。
第二仮定部677は、異常モジュール仮定部673により、改ざんされていると仮定された検知モジュールを起点として、受信した監視結果を用いて、改ざんされていると仮定された検知モジュールを正常と判定する検知モジュールに対して改ざんされていると仮定する手順を、未処理の検知モジュールについて、連鎖的に適用する。
(a)特定指示受信部671
特定指示受信部671は、指示生成部603から正常な検知モジュールの特定の指示を示す正常モジュール特定指示を受信する。正常モジュール特定指示を受信すると、正常モジュール特定指示を異常モジュール仮定部673へ出力する。
また、特定指示受信部671は、指示生成部603から検知モジュールリストを受信する。検知モジュールリストは、機器100における検知モジュール群130を構成するすべての検知モジュールを識別する識別番号を含んでいる。次に、特定指示受信部671は、受信した検知モジュールリストを異常モジュール仮定部673及び抽出結果判断部676へ出力する。
また、特定指示受信部671は、機器100から、ネットワーク、通信部240、受信部601及び指示生成部603を介して、機器100における検知モジュール群130の監視の結果を受信する。また、受信した検知モジュール群130の監視の結果を異常モジュール仮定部673及び検証結果判定部674へ出力する。
(b)異常モジュール仮定部673
異常モジュール仮定部673は、以下に示すようにして、検知モジュールの中から選択した1個の検知モジュールに対して異常(改ざんされている)と仮定する。
異常モジュール仮定部673は、特定指示受信部671から検知モジュールリストを受信し、機器100における検知モジュール群130の監視の結果を受信する。また、モジュール特定情報保持部606に格納されている異常であると特定されたすべての検知モジュールの識別番号である異常識別番号を受信する。
次に、異常モジュール仮定部673は、検知モジュールリストに含まれる検知モジュールの識別番号の内、受信した異常識別番号以外の検知モジュールの識別番号を一つ選択し、選択した識別番号により示される検知モジュールを異常な検知モジュールと仮定する。この選択した識別番号を仮定識別番号と呼ぶ。異常モジュール仮定部673は、空集合の仮異常検知モジュール群を定め、次に、仮定識別番号を仮異常検知モジュール群に含める。この時点において、仮異常検知モジュール群には、選択した検知モジュールを識別する仮定識別番号のみが含まれる。このように、異常モジュール仮定部673は、仮定識別番号を含む仮異常検知モジュール群を生成する。
次に、異常モジュール仮定部673は、選択した検知モジュールの仮定識別番号を抽出結果判断部676へ送信し、仮異常検知モジュール群の仮異常構成情報を検証結果判定部674へ送信する。仮異常検知モジュール群の仮異常構成情報は、仮異常検知モジュール群に含まれるすべての識別番号から構成されている。
また、異常モジュール仮定部673は、抽出結果判断部676から正常な検知モジュールを特定できない旨の特定不可通知を受信する。特定不可通知を受信した場合、異常モジュール仮定部673は、検知モジュールリストに含まれる検知モジュールの識別番号の内、受信した異常識別番号以外の検知モジュールであって、選択した検知モジュールとは別の検知モジュールの識別番号を新たに選択し、選択した検知モジュールを異常な検知モジュールと仮定し、選択した当該検知モジュールを識別する仮定識別番号のみを仮異常検知モジュール群に含め、仮異常検知モジュール群の仮異常構成情報を検証結果判定部674へ送信する。
(c)第二仮定部677
第二仮定部677は、上述したように、検証結果判定部674及び仮異常検知モジュール群抽出部675から構成されている。
第二仮定部677は、以下に説明するように、異常モジュール仮定部673により、改ざんされていると仮定された検知モジュールを起点として、受信した監視結果を用いて、改ざんされていると仮定された検知モジュールを正常と判定する検知モジュールに対して改ざんされていると仮定する手順を、未処理の検知モジュールについて、連鎖的に適用する。
第二仮定部677は、簡単に説明すると、監視結果を用いて、前記仮異常検知モジュール群に含まれている識別番号により識別される検知モジュールを正常と判断する検知モジュールが存在するか否かを判定し、存在すると判定された場合に、当該検知モジュールを識別する識別番号を前記仮異常検知モジュール群に追加し、未処理の検知モジュールについて、前記判定と前記追加とを繰り返し行うように制御する。
(i)検証結果判定部674
検証結果判定部674は、特定指示受信部671から、機器100における検知モジュール群130の監視の結果を受信する。また、異常モジュール仮定部673から仮異常構成情報を受信する。
検証結果判定部674は、特定指示受信部671から受信した機器100における検知モジュール群130の監視の結果、及び、異常モジュール仮定部673から受信した仮異常検知モジュール群の仮異常構成情報を用いて、仮異常検知モジュール群内の検知モジュールへの検証結果を判定する。
ここでは、図28に示す例を用いて、検証結果判定部674による判定方法について説明する。
図28に示すように、検知モジュール131は、検知モジュール132を監視(A2000)し、図28に示すように検知モジュール131による検知モジュール132に対する監視結果は、正常(R2000)であるものとする。また、検知モジュール132は、仮異常検知モジュール群3002内に含まれる検知モジュールであるものとする。
このとき、検証結果判定部674は、受信した監視の結果を用いて、仮異常検知モジュール群3002内に含まれる検知モジュール132を正常と判定する検知モジュールを探す。図28に示す例では、検知モジュール131が検知モジュール132を正常(R2000)と判定している。そこで、検証結果判定部674は、検知モジュール132を正常と判定する検知モジュール131を仮異常検知モジュールとみなす。
後述するように、検知モジュール131は、仮異常検知モジュールとして、仮異常検知モジュール群に追加して含まれるようになる。その結果、検知モジュール132及び131は、新たな仮異常検知モジュール群3001に含まれることになる。
検証結果判定部674は、仮異常検知モジュール群内の検知モジュールへの監視の結果として、正常と判定する検知モジュールを識別する識別番号(以下、仮異常識別番号と呼ぶ。)と、受信した仮異常検知モジュール群の構成情報を仮異常検知モジュール群抽出部675へ送信する。仮異常検知モジュール群内の検知モジュールへの監視の結果として、正常とする検知モジュールが存在しない場合は、その旨を仮異常検知モジュール群抽出部675へ送信する。仮異常検知モジュール群抽出部675から仮異常検知モジュール群の構成情報を受信した場合も、同様の動作を行う。
(ii)仮異常検知モジュール群抽出部675
仮異常検知モジュール群抽出部675は、検証結果判定部674から仮異常検知モジュール群内の検知モジュールへの監視の結果として、正常と判定する検知モジュールの識別番号(仮異常識別番号)と、仮異常検知モジュール群の構成情報を受信する。次に、受信した検知モジュールの識別番号(仮異常識別番号)を受信した仮異常検知モジュール群へ追加する。
図28に示す例の場合には、検知モジュール131は、仮異常検知モジュールとして、仮異常検知モジュール群に追加して含まれるようになる。その結果、検知モジュール132及び131は、新たな仮異常検知モジュール群3001に含まれることになる。
次に、仮異常検知モジュール群抽出部675は、識別番号が追加された新たな仮異常検知モジュール群の構成情報を検証結果判定部674へ送信する。検証結果判定部674から検知モジュールが存在しない旨の通知を受信した場合には、抽出結果判断部676へ仮異常検知モジュール群の構成情報を送信する。
(d)抽出結果判断部676
抽出結果判断部676は、特定指示受信部671から検知モジュールリストを受信する。また、仮異常検知モジュール群抽出部675から仮異常検知モジュール群の仮異常構成情報及び仮定識別番号を受信する。さらに、モジュール特定情報保持部606から異常な検知モジュールを識別する異常識別番号を受信する。
次に、抽出結果判断部676は、仮異常検知モジュール群の仮異常構成情報及び異常な検知モジュールを識別する異常識別番号を用いて、モジュール特定情報保持部606に格納されている異常識別情報に対応する検知モジュール以外のすべての検知モジュールが仮異常検知モジュール群に含まれているか否かを判断する。
また、モジュール特定情報保持部606に格納されている識別情報が示す異常な検知モジュールが存在しない場合には、抽出結果判断部676は、すべての検知モジュールが仮異常検知モジュール群に含まれているか否かを判断する。さらに、異常な検知モジュールの存在を検出しない場合にも、すべての検知モジュールが仮異常検知モジュール群に含まれているか否かを判断する。言い換えると、すべての検知モジュールに対して、改ざんされていると仮定されたかを判断する。さらに、言い換えると、抽出結果判断部676は、仮異常検知モジュール群に、すべての検知モジュールを識別する識別番号が含まれるか否かを判断する。
言い換えると、抽出結果判断部676は、検知モジュールリストに含まれる識別番号から、異常識別番号を取り除き、さらに、仮異常構成情報に含まれる識別番号を取り除いた結果、検知モジュールリストが空集合となるか、又は、空集合ではなく、識別番号を含んでいるかを判断する。
また、異常な検知モジュールが存在しない場合には、抽出結果判断部676は、検知モジュールリストに含まれる識別番号から、仮異常構成情報に含まれる識別番号を取り除いた結果、検知モジュールリストが空集合となるか、又は、空集合ではなく、識別番号を含んでいるかを判断する。さらに、異常な検知モジュールの存在を検出しない場合にも、検知モジュールリストに含まれる識別番号から、仮異常構成情報に含まれる識別番号を取り除いた結果、検知モジュールリストが空集合となるか、又は、空集合ではなく、識別番号を含んでいるかを判断する。
モジュール特定情報保持部606に格納されている異常識別情報に対応する検知モジュール以外のすべての検知モジュールが仮異常検知モジュール群に含まれている場合、抽出結果判断部676は、異常モジュール仮定部673で仮定した検知モジュールを正常な検知モジュールと特定し、受信した仮定識別番号を正常モジュールを示す識別番号とし、正常モジュール識別番号を、特定結果として、特定結果送信部672へ出力する。
すべての検知モジュールが仮異常検知モジュール群に含まれない場合、抽出結果判断部676は、異常モジュール仮定部673で仮定した検知モジュール以外の検知モジュールを仮定するように、異常モジュール仮定部673へ指示(正常な検知モジュールを特定できない旨の特定不可通知)を送信する。
(e)特定結果送信部672
特定結果送信部672は、抽出結果判断部676から正常な検知モジュールの特定結果を受信し、受信した特定結果を指示生成部603に送信する。
また、特定結果送信部672は、最新の監視の結果がすべて正常であることを示す正常結果を指示生成部603へ送信する。また、最新の監視の結果がすべて正常ではなく(つまり、少なくとも一部は、異常)、また、前回の監視の結果がすべて正常ではない(つまり、少なくとも一部は、異常)旨を示す結果を、指示生成部603へ送信する。
(5)監視パターン更新部250の構成
監視パターン更新部250は、機器100内部の検知モジュール群130の監視パターンを更新する場合に、判断部210aによる監視パターン更新の指示に応じて、検知モジュール群130内の各検知モジュールの監視パターンを更新するために、更新のための監視パターンを生成し、生成した監視パターンを各検知モジュールへ送信する。
監視パターン更新部250は、図29に示すように、受信部901、送信部902、監視パターン生成部903、監視パターン分割部904及び制御部905から構成されている。
(a)受信部901
受信部901は、判断部210aから、監視パターンの生成を示す生成指示及び指示した時点での検知モジュールリストを受信する。検知モジュールリストは、機器100aが有する検知モジュール群130に含まれるすべての検知モジュールをそれぞれ識別する識別番号を含んでいる。
受信部901は、受信した監視パターンの生成指示を制御部905へ出力する。また、受信した検知モジュールリストを、制御部905を介して、監視パターン生成部903へ出力する。
(b)監視パターン生成部903
監視パターン生成部903は、受信部901から、制御部905を介して、検知モジュールリストを受信する。
検知モジュールリストを受信すると、監視パターン生成部903は、受信した検知モジュールリストを用いて、どの検知モジュールがどの検知モジュールを監視するかを決定し、機器100が有する検知モジュール群130における全体の監視パターンを生成する。
なお、監視パターン生成部903は、全体の監視パターンとして、例えば、すべての検知モジュールが他のすべての検知モジュールを監視するように、決定してもよい。
監視パターン生成部903は、生成した全体の監視パターンを監視パターン分割部904へ出力する。
(c)監視パターン分割部904
監視パターン分割部904は、監視パターン生成部903から、全体の監視パターンを受信する。
全体の監視パターンを受信すると、監視パターン分割部904は、受信した全体の監視パターンを、それぞれの検知モジュール毎の監視パターンに分割する。次に、分割して得られた検知モジュール毎の監視パターンを、更新用の監視パターンとして、制御部905、送信部902、通信部240及びネットワークを介して、機器100のそれぞれの検知モジュールに送信する。
(d)送信部902
送信部902は、通信部240及びネットワーク5を介して、機器100へ更新用の検知モジュール毎の監視パターンを送信する。また、判断部210aへ更新用の監視パターンの生成及び送信の終了を通知する。
(e)制御部905
制御部905は、受信部901から、監視パターンの生成指示を受信する。
監視パターンの生成指示を受信すると、制御部905は、監視パターン生成部903及び監視パターン分割部904に対して、機器100が有する検知モジュール群130における全体の監視パターンを生成し、更新用の検知モジュール毎の監視パターンを生成し、機器100へ更新用の検知モジュール毎の監視パターンを送信して、機器100において監視パターンの更新処理をさせるように、制御する。
2.2 検知システム10aの動作
続いて、検知システム10aの動作を説明する。
(1)全体動作
図30は、検知システム10a全体の処理の流れを示したフローチャートである。図30において、実施の形態1と同様の機能を有する処理には、図11と同一の符号を付し、詳細な説明を省略する。検知システム10の全体の処理との相違点は、モジュール特定処理S300がS300aに置き換わっている点である。その他は同じであるので、以下ではモジュール特定処理S300aの処理について詳しく説明する。
(2)モジュール特定処理の動作
図31、32のシーケンス図を用いて、モジュール特定処理(図30のS300a)の詳細について説明する。図31、32では、検知モジュール131、132、・・・、137のそれぞれが個別に行う処理を、検知モジュール群130が行う処理としてまとめて記載している。
検知モジュール群130及び判断部210aは、各検知モジュール間で改ざん検出を行う相互監視処理を実行する(S5001)。この相互監視処理は、実施の形態1における相互監視処理(図16)と同じであるので、説明は省略する。
管理装置200aの判断部210aは、各検知モジュールから受信した検出結果に基づき、改ざんされた検知モジュールが存在するか否かを判定する(S5002)。具体的には、検出結果を受信した場合に、改ざんされた検知モジュールが存在すると判定する。改ざんされた検知モジュールが存在しないと判定した場合(S5002でN)、何もせず、モジュール特定処理を終了する。改ざんされた検知モジュールが存在すると判定した場合(S5002でY)、検出対象モジュール900を配布する検出対象モジュール配布処理を実行する(S5003)。この検出対象モジュール配布処理は、実施の形態1における検出対象モジュール配布処理(図17)と同じであるので、説明は省略する。
次に機器100内部にインストールした検出対象モジュール900を、各検知モジュールが改ざん検出する検出対象モジュール監視処理を実行する(S5004)。この検出対象モジュール監視処理は、実施の形態1における検出対象モジュール監視処理(図18)と同じであるので、説明は省略する。
判断部210aは検出対象モジュール監視処理の結果、検出対象モジュールを正常と判定する検知モジュールが存在するか否かを判定する(S5005)。検出対象モジュールを正常と判定する検知モジュールが存在しないと判定した場合(S5005でN)、何もせず、モジュール特定処理を終了する。検出対象モジュールを正常と判定する検知モジュールが存在すると判定した場合(S5005でY)、異常モジュール判定処理を実行する(S5006)。この異常モジュール判定処理は、実施の形態1における検出対象モジュール配布処理(図17)と同じであるので、説明は省略する。
判断部210aは、異常モジュール判定処理により抽出した異常モジュールの識別情報を、モジュール特定情報保持部606に格納する(S5007)。さらに、判断部210aは監視パターン生成指示を、監視パターン更新部250へ送信する(S5008)。
監視パターン更新部250は、監視パターン生成指示にしたがって、監視パターンを生成し(S5009)、検知モジュール群130の各検知モジュールへ生成した監視パターンを送信する(S5010)。
検知モジュール群130の各検知モジュールは、監視パターンを受信し、自身の検知モジュールの監視パターンを更新する(S5011)。
検知モジュール群130及び判断部210aは、相互監視処理を実行する(S5012)。
判断部210aは、正常モジュール特定処理を実行する(S5013)。正常モジュール特定処理については、後で詳しく説明する。
判断部210aは、正常モジュール特定処理により特定した正常モジュールの識別情報を、モジュール特定情報保持部606に格納する(S5014)。
(2)正常モジュール特定処理の動作
検知システム10aにおける正常な検知モジュールの特定処理の動作を、図33に示すフローチャートを用いて説明する。
異常モジュール仮定部673は、モジュール特定情報保持部606に格納されている異常な検知モジュールの識別情報をもつ、異常な検知モジュール以外の検知モジュールを選択し、選択した検知モジュールを異常な検知モジュールと仮定し、仮異常検知モジュール群がこの異常と仮定した検知モジュールの識別番号のみを含むとする(ステップS5101)。
検証結果判定部674は、仮異常検知モジュール群内に含まれる識別番号により識別される検知モジュールを正常と判定する検知モジュールが、仮異常検知モジュール群以外に、一個でも存在するかを判定する(ステップS5102)。仮異常検知モジュール群内のモジュールを正常と判定する仮異常検知モジュール群以外の検知モジュールが一個でも存在する場合(ステップS5102でY)、仮異常検知モジュール群抽出部675は、この検知モジュールを識別する識別番号を仮異常検知モジュール群に含める(ステップS5103)。次に、ステップS5102へ制御を移す。仮異常検知モジュール群内の検知モジュールを正常と判定する仮異常検知モジュール群以外の検知モジュールが一個でも存在しなかった場合(ステップS5102でN)、モジュール特定情報保持部606に格納されている異常な検知モジュールの識別情報をもつ異常な検知モジュールと、仮異常検知モジュール群以外の検知モジュールが存在するか判断する(ステップS5104)。存在しない場合(ステップS5104でN)、ステップS5101で仮定した検知モジュールを正常な検知モジュールと特定する(ステップS5105)。こうして、正常な検知モジュールが特定できた場合には、その後に、上記において異常とした仮定をすべて取り消し、仮異常検知モジュール群に含まれる識別番号を消去する。
また、存在する場合(ステップS5104でY)、ステップS5101で仮定した検知モジュールを正常な検知モジュールと特定しない(ステップS5106)。ステップS5101において、モジュール特定情報保持部606に格納されている異常な検知モジュールの識別情報をもつ異常な検知モジュールのすべてを選択していない場合には(ステップS5107でN)、ステップS5101へ制御を移す。すべての検知モジュールを仮定した場合(ステップS5107でY)、正常モジュール特定処理を終了する。
2.3 モジュール特定処理の例
2.3.1 第1の例(正常モジュール特定が成功する場合)
以下で、図31及び32のフローチャート、図22及び図23と図34から図37とを用いて、モジュール特定処理の例を説明する。
(a)相互監視
図34は、一例として、ステップS5001の相互監視処理の結果、判断部210aが受信した相互監視結果751を示している。図34では、例えば、検知モジュール132が検知モジュール133を異常と判定している。そのため、ステップS5002で改ざんされた検知モジュールが存在すると判定し、ステップS5003へ進む。
(b)検出対象モジュール監視処理
ステップS5003では検出対象モジュール配布処理を実行し、その後、ステップS5004で検出対象モジュール監視処理を実行する。図22は、検出対象モジュールへの改ざん検出(監視)の監視パターン551を示している。図23は、その改ざん検出結果552を示している。図23では、検知モジュール133、136及び137が、検出対象モジュール900を正常と判定している。そのため、S5005で検出対象モジュールを正常と判定する検知モジュールが存在すると判定し、ステップS5006に進む。
(c)異常モジュール判定処理
ステップS5006では、図23の改ざん検出結果に基づいて、検知モジュール133、136及び137を異常モジュールとして抽出する。ステップS5007でその抽出結果を、モジュール特定情報保持部606に格納する。図35は、格納した直後のモジュール特定情報保持部606に格納されているモジュール特定情報631を示している。このモジュール特定情報631は、検知モジュール133、136及び137が異常(634、637、638)、それ以外の検知モジュールが不明(632、633、635、636)であることを示している。
(d)監視パターンの更新
ステップS5008からS5011で、監視パターンを更新する。図36は、更新するための監視パターン752、つまり、更新後の監視パターンを示している。A2200からA2203が、それぞれの監視を示している。
(e)相互監視処理S5012及び正常モジュール特定処理S5013の例
ステップS5012で、相互監視処理を実行する。図37は、相互監視処理の結果753を示している。この場合は、すべての検知モジュールが監視先を正常と判定している。
ステップS5013で、相互監視結果を用いて、正常モジュール特定処理を実行する。まず、ステップS5101にて、検知モジュール131を異常と仮定し、仮異常検知モジュール群とする。次にステップS5102で、仮異常検知モジュール群内のモジュールを正常と判定する仮異常検知モジュール群以外のモジュールがひとつでも存在するか否かを判定し、存在するためステップS5103の処理に移る。
ステップS5103で、検知モジュール131を正常と判定する(R2202)検知モジュール134を異常な検知モジュールであると仮定し、仮異常検知モジュール群に追加する。再び、ステップS5102で、仮異常検知モジュール群内のモジュールを正常と判定する仮異常検知モジュール群以外のモジュールがひとつでも存在するか否かを判定し、存在するためステップS5103の処理に移る。
ステップS5103で、検知モジュール134を正常と判定する(R2201)検知モジュール132を異常な検知モジュールであると仮定し、仮異常検知モジュール群に追加
する。再び、ステップS5102で、仮異常検知モジュール群内のモジュールを正常と判定する仮異常検知モジュール群以外のモジュールがひとつでも存在するか否かを判定し、存在するためステップS5103の処理に移る。
ステップS5103で、検知モジュール132を正常と判定する(R2203)検知モジュール135を異常な検知モジュールであると仮定し、仮異常検知モジュール群に追加する。再び、ステップS5102で、仮異常検知モジュール群内のモジュールを正常と判定する仮異常検知モジュール群以外のモジュールがひとつでも存在するか否かを判定し、存在しないためステップS5104の処理に移る。
ステップS5104で、異常と特定した検知モジュール(検知モジュール133、136、137)と仮異常検知モジュール群(検知モジュール131、132、134、135)以外のモジュールが存在するか否かを判定する。検知モジュール131から137は、異常と特定した検知モジュールまたは仮異常検知モジュール群に含まれ、ステップS5104の判定はN(否)であるため、ステップS5105の処理に移る。
ステップS5105で検知モジュール131を異常とした仮定を誤りとし、検知モジュール131が正常と特定する。
2.3.2 第2の例(正常モジュール特定が成功しない場合)
以下で、図31及び32のフローチャート、図22及び図23、図34から図36と図38を用いて、モジュール特定処理の例を説明する。
第2の例は、(a)から(d)までが第1の例と同じであり、(e)が第1の例と異なる。そのため、(a)から(d)までの説明を省略し、(e)のみ説明する。
(e)相互監視処理S5012及び正常モジュール特定処理S5013の例
ステップS5012で、相互監視処理を実行する。図38は、相互監視処理の結果754を示している。この場合は、検知モジュール135が検知モジュール132を監視した結果は異常と判定しており、その他のすべての検知モジュールが監視先を正常と判定している。
ステップS5013で、相互監視結果を用いて、正常モジュール特定処理を実行する。まず、ステップS5101にて、検知モジュール131を異常と仮定し、仮異常検知モジュール群とする。次にステップS5102で、仮異常検知モジュール群内のモジュールを正常と判定する仮異常検知モジュール群以外のモジュールがひとつでも存在するか否かを判定し、存在するためステップS5103の処理に移る。
ステップS5103で、検知モジュール131を正常と判定する(R2302)検知モジュール134を異常な検知モジュールであると仮定し、仮異常検知モジュール群に追加する。再び、ステップS5102で、仮異常検知モジュール群内のモジュールを正常と判定する仮異常検知モジュール群以外のモジュールがひとつでも存在するか否かを判定し、存在するためステップS5103の処理に移る。
ステップS5103で、検知モジュール134を正常と判定する(R2301)検知モジュール132を異常な検知モジュールであると仮定し、仮異常検知モジュール群に追加する。再び、ステップS5102で、仮異常検知モジュール群内のモジュールを正常と判定する仮異常検知モジュール群以外のモジュールがひとつでも存在するか否かを判定する。仮異常検知モジュール群に含まれる検知モジュール131、132及び134以外の検知モジュール135は、検知モジュール132を正常ではなく異常と判定(R2303)しているため、ステップS5102ではNと判定され、ステップS5104の処理に移る。
ステップS5104で、異常と特定した検知モジュール(検知モジュール133、136、137)と仮異常検知モジュール群(検知モジュール131、132、134)以外のモジュールが存在するか否かを判定する。検知モジュール135は、異常と特定した検知モジュールと仮異常検知モジュール群のどちらにも含まれないため、ステップS5104の判定はYであるため、ステップS5106の処理に移る。
ステップS5106で仮定した検知モジュール131の正常/異常の特定を行わず、ステップS5107ですべての検知モジュールを仮定しているか否かを判定する。検知モジュール132、134、135を仮定していないため、これらの検知モジュールもそれぞれ異常と仮定し、同様の処理を続ける。図38の監視結果を用いると、他の検知モジュール132、134、135もいずれも最終的にステップS5106の処理に移り、特定を行わない。そのため、図38の監視結果が出た場合は、正常モジュール特定を行わない。
2.3.3 第3の例(検出対象モジュール抽出部ですべての検知モジュールを抽出した場合)
以下で、図19、図31及び32のフローチャート、図22と図34を用いて、モジュール特定処理の例を説明する。
第3の例は、(a)が第2の例と同じであり、(b)以降が第1の例と異なる。そのため、(a)の説明を省略し、(b)以降を説明する。
(b)検出対象モジュール監視処理
ステップS5003では検出対象モジュール配布処理を実行し、その後、ステップS5004で検出対象モジュール監視処理を実行する。図22は、検出対象モジュールへの改ざん検出(監視)の監視パターン551を示している。図39は、その改ざん検出結果755を示している。図39では、すべての検知モジュールが、検出対象モジュール900を正常と判定している。そのため、S5005で検出対象モジュールを正常と判定する検知モジュールが存在すると判定し、ステップS5006に進む。
(c)異常モジュール判定処理
ステップS5006の異常モジュール判定処理では、図39の改ざん検出結果755に基づいて、すべての検知モジュールを異常モジュールとして抽出する。具体的には、図19のステップS3401で異常モジュールを抽出する。さらに、ステップS3402にて、機器100内の検知モジュールすべてが異常であるか否かを判定する。すべての検知モジュールが異常であるため、ステップS3403にてエラーを出力して機器を停止させる。
2.4 実施の形態2の効果
以上説明したように、ステップS5106において、仮定した検知モジュールを正常な検知モジュールと特定しないことにより、異常な検知モジュールを、正常な検知モジュールと誤判断するのを防止できる。異常な検知モジュールを介して、異常と特定された検知モジュールの無効化処理を不正に実行されるのを防止できる。
上記、正常モジュール特定処理では、まず、複数の検知モジュールの中のいずれか一つの検知モジュールが異常な検知モジュールであるという仮定を行う。その上で、検知モジュールの中から正常である検知モジュールを論理的な検証方法を用いて効果的に特定できるので、特定した正常な検知モジュールを用いて、異常と特定された検知モジュールの無効化処理を正しく実行できる。
また、異常モジュール判定処理において、検出対象モジュールを正常と判定する異常モジュールをすべて特定した後に正常モジュール特定処理を実行することで、異常モジュールができるだけ少ない状態で、正常モジュール特定処理を実行することができ、正常モジュールを特定できる可能性が高くなる。
さらに、異常モジュール判定処理を示す図19のステップS3402にて、機器100内の検知モジュールすべてが異常であるか否かを判定している。第3の例では、すべての検知モジュールが異常であるため、ステップS3402でYとなり、ステップS3403にて機器を停止する。そのため、すべての検知モジュールが異常でない場合のみで正常モジュール特定処理を実行することで、異常モジュールが存在しない状態で正常モジュール特定処理を実行することができ、正常モジュールを特定できる可能性が高くなる。
3.実施の形態3
実施の形態3では、検知処理で保護制御モジュール120の改ざんを検出した場合、保護制御モジュール120を新しい保護制御モジュール121へ更新するソフトウェア更新システムについて説明する。ソフトウェア更新システムにおける保護制御モジュール120の更新の方法は、特許文献3に詳しく記載されている方法に本発明を適用した方法である。ここでは、特許文献3における更新モジュールの更新機能を検知モジュールに含める。
3.1 ソフトウェア更新システム12の構成
(1)全体構成
実施の形態3に係るソフトウェア更新システム12の構成について、図40を用いて説明する。
同図に示すように、ソフトウェア更新システム12は、情報処理装置としての機器100aと、管理装置としての管理装置200bとから構成される。そして、機器100a及び管理装置200bは、ネットワークを介して接続されている。
管理装置200bは、判断部210a、検出対象モジュール配布部220b、モジュール無効化部230、通信部240及び監視パターン更新部250から構成される。
図40において、実施の形態1及び2と同様の機能を有する構成要素には、図1及び図24と同一の符号を付し、詳細な説明を省略する。以下では、実施の形態3の特徴的な構成要素及び処理について詳細に説明する。
(2)機器100aの構成
(a)保護制御モジュール120aの構成
ここでは、保護制御モジュール120aの詳細について説明する。
図41は、保護制御モジュール120aの機能的な構成を示す機能ブロック図である。
同図に示すように、保護制御モジュール120aは、図2の保護制御モジュール120の構成に加え、暗復号鍵分散部308、証明書生成部309、暗復号鍵復元部310及び暗復号鍵生成部311から構成される。
暗復号鍵分散部308は、初期設定時や次ラウンド準備時に、暗復号鍵から秘密分散法を用いて分散情報を生成する。
証明書生成部309は、暗復号鍵から生成された分散情報を復元したときに、正しく復元できたか否かを検証するために用いられる証明書を生成する。
暗復号鍵復元部310は、配置情報に基づいて、各検知モジュールから、各検知モジュールに配布されていた分散情報を取得する。そして、暗復号鍵復元部310は、取得した分散情報から暗復号鍵を復元し、復元した暗復号鍵を復号ロード部304に送信する。
暗復号鍵生成部311は、アプリ110、111を暗復号するための暗復号鍵を生成する。
(b)検知モジュール131aの構成
ここでは、検知モジュール131aの詳細について説明する。
図42は、検知モジュール131aの機能的な構成を示す機能ブロック図である。他の検知モジュールも同様の構成を有する。
同図に示すように、検知モジュール131aは、図4の検知モジュール131の構成に加え、更新部408、認証部409、分散情報保持部410から構成される。
更新部408は、制御部403の制御に基づき、管理装置200bと連携して、機器100a内部のソフトウェア、具体的には、アプリ110及び111、保護制御モジュール120a、検知モジュール131a、132a、・・・、137aを更新する。
認証部409は、検知モジュールの認証鍵対(認証秘密鍵、認証公開鍵)を保持し、他のモジュールとの認証を行う。
分散情報保持部410は、保護制御モジュール120aがアプリ110、111の暗復号処理に利用する暗復号鍵から生成した分散情報(share)と、保護制御モジュール120aが分散情報を配布したときの配置情報を保持する。配置情報は、どの分散情報をどの検知モジュールに配布したかを記述した情報である。
署名方式に関しては非特許文献1の171ページから187ページに、証明書に関しては非特許文献2に詳しく説明されている。また、分散情報に関しては特許文献2に詳しく説明されている。
(c)検出対象モジュール配布部220a
図43は、検出対象モジュール配布部220aの機能的な構成を示す機能ブロック図である。
同図に示すように、検出対象モジュール配布部220aは、図7の検出対象モジュール配布部220の構成に加え、暗号鍵生成部708、暗号処理部709、認証部710、暗号鍵保持部711、更新用ソフトウェア保持部712から構成される。なお、この構成における証明書生成部704については、後述する追加の機能を加えた証明書生成部704aとする。
証明書生成部704aは、実施の形態1における証明書生成部704の処理に加えて、更新用ソフトウェアに対して署名秘密鍵を用いて、機器100にて、保護制御モジュールが正しく更新されたか否かを検証するための更新検証証明書を生成する。
暗号鍵生成部708は、更新用ソフトウェアを検知モジュール131a、132a、・・・、137aへ送信するときに使用する暗号鍵を生成する。
暗号処理部709は、暗号鍵生成部708が生成した暗号鍵を用いて、更新用ソフトウェアを暗号化する。また、暗号処理部709は、各検知モジュール固有の鍵を用いて、暗号鍵を暗号化する。
暗号鍵及び更新用ソフトウェアは、検知モジュール131a、132a、・・・、137aへ一度にすべてが送信されるのではなく、更新処理の中で、それぞれのデータが必要になったタイミングで、それぞれ各検知モジュールへ送信される。
認証部710は、検知モジュール131a、132a、・・・、137a、及び保護制御モジュール120aと相互認証を行う。
暗号鍵保持部711は、暗号鍵生成部708が生成した暗号鍵及び暗号処理部709により暗号化された暗号鍵を保持する。
更新用ソフトウェア保持部712は、保護制御モジュール120aが攻撃された場合に更新するための更新用の保護制御モジュールを保持する。
3.2 ソフトウェア更新システム12の動作
続いて、ソフトウェア更新システム12の動作を説明する。
(1)全体動作
ソフトウェア更新システム12は、上記実施の形態の初期設定処理、検知処理、モジュール特定処理に加えて、4つの処理がある。図44はソフトウェア更新システム12の動作を示すフローチャートである。
ソフトウェア更新システム12は、初期設定処理(S100a)を実行し、その後に検知処理(S200)とモジュール特定処理(S300a)を並行して実行する。検知処理において保護制御モジュール120aの改ざんが検出された場合に、保護制御モジュール120aを解析し、更新する必要があるか否か判断する解析・判断処理を行う(S400)。
次に、ソフトウェア更新システム12は、検知モジュール131a、132a、133a、・・・、137aと検出対象モジュール配布部220aとが互いに正しいソフトウェアであるか否かを確認するための相互認証処理を行う(S500)。
次に、ソフトウェア更新システム12は、回復処理を行う(S600)。
回復処理とは、検知モジュール群130aに含まれる検知モジュール間で相互に改ざん検出処理を行った後、更新用の保護制御モジュールを機器100aへインストールする。そして、機器100aにおいて、検知モジュール131a、132a、・・・、137aへ埋め込まれた分散情報を用いて、保護制御モジュールを更新する処理である。
その後、ソフトウェア更新システム12は、次に保護制御モジュールの更新が必要となる場合に備えて、更新に必要な鍵データや分散情報を生成し、各検知モジュールに埋め込む次ラウンド準備処理を行う(S700)。その後、ソフトウェア更新システム12は、S200の検知処理及びS300aのモジュール特定処理へ戻り、処理を続ける。
(2)初期設定処理の動作
ここでは、図45と図46を用いて、ソフトウェア更新システム12の初期設定処理(図44のS100a)の詳細について説明する。
実施の形態3におけるS1000からS1001の動作と、実施の形態1におけるS1000からS1001の動作にそれぞれ対応し同様の動作であるため、説明を省略する。
機器100aは、機器の初期化後、保護制御モジュール120a、及び、検知モジュール131a、132a、・・・、137aに対して、初期化指示を出力する(S1100、S1101)。
保護制御モジュール120aは、暗復号鍵から秘密分散法を用いて分散情報を生成する(S1102)。なお、保護制御モジュール120aは、分散情報保持部410を備える検知モジュールの数と同数の分散情報を生成する。検知モジュール131a、132a、・・・、137aがすべて分散情報保持部410を備えている場合、保護制御モジュール120aは、7つの分散情報を生成する。
更に、保護制御モジュール120aは、署名秘密鍵を用いて、暗復号鍵証明書を生成する(S1103)。暗復号鍵証明書は、暗復号鍵の復元時に、暗復号鍵が正しく復元できたか否かを確認するための証明書である。
保護制御モジュール120aは、生成した分散情報と暗復号鍵証明書とを、検知モジュール131a、132a、・・・、137aへ送信する(S1104、S1105)。
なお、保護制御モジュール120aは、検知モジュール131a、132a、・・・、137aが、それぞれ異なる分散情報の組を保持するように、各検知モジュールに分散情報の組を送信する。更に、保護制御モジュール120aは、どの検知モジュールへどの分散情報を送信したかを示す配置情報を、各検知モジュールへ送信する。各検知モジュールに送信される配置情報は、同一の情報である。
暗復号鍵から秘密分散法を用いて分散情報を生成する方法や、分散情報を検知モジュールへ送信する方法については、特許文献2の47ページから49ページに詳しく説明されている。特許文献2における秘密鍵dを本実施の形態の暗復号鍵に対応させ、認証局装置を保護制御モジュール120aに対応させ、分散情報保持装置を検知モジュール131a、132a、・・・、137aに対応させることで、特許文献2と同じ方法を用いることができる。
保護制御モジュール120aから分散情報、配置情報及び暗復号鍵証明書を受信した各検知モジュールは、検知モジュール初期化処理を行う(S1106)。
(a)検知モジュール初期化処理の動作
図46は、検知モジュール初期化処理(図45のS1106)の動作を示すフローチャートである。
実施の形態3におけるS1108からS1111の動作と、実施の形態1におけるS1004からS1007の動作にそれぞれ対応し同様の動作であるため、説明を省略する。
検知モジュール131aは、保護制御モジュール120aから分散情報、配置情報及び暗復号鍵証明書を受信し、受信した各情報を分散情報保持部410に保持する(S1107)。
(3)検知処理の動作
実施の形態3の検知処理は、実施の形態1や実施の形態2の検知処理の動作と同様であるので、ここでは省略する。
(4)モジュール特定処理の動作
実施の形態3のモジュール特定処理は、実施の形態2のモジュール特定処理と同様であるので、ここでは省略する。なお、実施の形態3のモジュール特定処理を、実施の形態1のモジュール特定処理と同じであるとしてもよい。
(5)解析・判断処理の動作
続いて、図47のシーケンス図を用いて、解析判断処理(図44のS400)の詳細について説明する。なお、図47では、検知モジュール131a、132a、・・・、137aのそれぞれが個別に行う処理を、検知モジュール群130aが行う処理としてまとめて記載している。
検知処理において、判断部210aが各検知モジュールから保護制御モジュール120aの改ざん検出結果を受信すると、判断部210aは、受信した改ざん検出結果に基づいて、保護制御モジュール120aが正常であるか異常であるか(改ざんされているか否か
)を判定する(S6001)。
判定方法の一例として、例えば、所定数の検知モジュールが改ざんを検出した場合には、保護制御モジュール120aは異常である(改ざんされている)と判定し、また、所定数未満の検知モジュールが改ざんを検出した場合には、保護制御モジュール120aは正常である(改ざんされていない)と判定する。前記所定数は、検知モジュール群130aに含まれる検知モジュールの過半数としてもよい。また、検知処理のS300aと同様のモジュール特定処理を行い、正常と特定した検知モジュールが保護制御モジュール120aの改ざんを検出した場合、保護制御モジュール120aは異常である(改ざんされている)と判定し、正常と特定した検知モジュールが保護制御モジュール120aの改ざんを検出しなかった場合には、保護制御モジュール120aは正常である(改ざんされていない)と判定するとしてもよい。
保護制御モジュール120aが改ざんされていると判定した場合(S6001でY)、判断部210aは、保護制御モジュール120aを回復する必要があるか否かを判断するために、検知モジュール群130aに対して、保護制御モジュール120aのどの部分が改ざんされたかなどの改ざん情報の通知を依頼する(S6002)。
検知モジュール群130aは、改ざん情報の通知を依頼されると、改ざん情報を収集して(S6003)、改ざん情報を判断部210aへ通知する(S6004)。
判断部210aは、改ざん情報に基づいて、保護制御モジュール120aを回復するか、機器100aをリボークするか、または、何もしないかを判断する(S6005)。
保護制御モジュール120aを回復する場合(S6005で「回復する」)、判断部210aは、更新用の保護制御モジュールを準備し(S6006)、検知モジュール群130aに、更新処理の開始を指示する(S6007)。また、機器100aをリボークする場合には(S6005で「リボーク」)、アプリ110、111にサービスを提供しているサーバに対して、機器100aをリボークするように依頼する(S6008)。何もしない場合(S6005で「何もしない」)、検知処理へ戻る。
保護制御モジュール120aが正常である(改ざんされていない)と判定した場合(S6001でN)は、検知処理へ戻る。
(5)相互認証処理の動作
次に、図48及び図49のシーケンス図を用いて、ソフトウェア更新システム12による相互認証処理(図44のS500)の詳細について説明する。
管理装置200bの判断部210aが、解析・判断処理において、保護制御モジュール120aを回復する必要があると判断した場合、判断部210aは、検出対象モジュール配布部220aへ、保護制御モジュール120aの回復を指示する。
検出対象モジュール配布部220aは、検知モジュール131a、132a、・・・、137aへ更新処理の開始を指示した後、各検知モジュールとの間で、それぞれ1対1の相互認証処理を行う。これにより、機器100aが不正な管理装置と接続したり、管理装置200bが不正な機器と接続したりすることを防止する。なお、相互認証処理において、検出対象モジュール配布部220aは、署名秘密鍵及び署名公開鍵を使用し、各検知モジュールは、認証鍵対(認証秘密鍵及び認証公開鍵)を使用する。
図48は、検知モジュール131aが検出対象モジュール配布部220aを認証するときのシーケンス図である。なお、検知モジュール132a、・・・、137aも、図48の検知モジュール131aと同様に動作し、検出対象モジュール配布部220aを認証す
る。
検知モジュール131aは、乱数生成器を用いて乱数(チャレンジデータ)を生成し(S7001)、生成したチャレンジデータを検出対象モジュール配布部220aへ送信する(S7002)。この時、検知モジュール131aを識別するための検知モジュールの識別子を、チャレンジデータと共に送信する。検出対象モジュール配布部220aは、受信したチャレンジデータに署名秘密鍵を用いて署名データを生成し(S7003)、生成した署名データをレスポンスデータとして、検知モジュール131aへ返信する(S7004)。
検知モジュール131aは、検出対象モジュール配布部220aからレスポンスデータを受信すると(S7004)、署名公開鍵を用いて、レスポンスデータが、チャレンジデータの署名データと一致するか否か検証する(S7006)。
検証の結果、レスポンスデータが正しく、検出対象モジュール配布部220aが正当なモジュールである場合(S7007でY)、検知モジュール131aは、処理を継続する。レスポンスデータが正しくなく、検出対象モジュール配布部220aが不正なモジュールである場合(S7007でN)、検知モジュール131aは、エラーを出力し、処理を停止する(S7008)。
次に、検出対象モジュール配布部220aが、検知モジュール131a、132a、・・・、137aを認証する。
図49は、検出対象モジュール配布部220aが各検知モジュールを認証するときのシーケンス図である。
検出対象モジュール配布部220aは、チャレンジデータを送信してきた各検知モジュールに対して、乱数生成器を用いてそれぞれ異なる乱数(チャレンジデータ)を生成し(S7101)、生成したチャレンジデータを、各検知モジュールへ個別に送信する(S7102)。
各検知モジュールは、受信したチャレンジデータに認証秘密鍵を用いて署名データを生成し(S7103)、生成した署名データをレスポンスデータとして検出対象モジュール配布部220aへ返信する(S7104)。
このとき、各検知モジュールは、レスポンスデータと共に認証公開鍵と認証鍵証明書とを検出対象モジュール配布部220aへ送信する。
検出対象モジュール配布部220aは、それぞれの検知モジュールからレスポンスデータ、認証公開鍵及び認証鍵証明書を受信する(S7104)。検出対象モジュール配布部220aは、認証鍵証明書が、自身が発行した証明書であるか否か検証し、更に、認証鍵証明書を用いて、認証公開鍵の正当性を検証する(S7105)。
認証鍵証明書又は認証公開鍵が不正である場合(S7105で「証明書又は鍵が正しくない」)、検出対象モジュール配布部220aは、処理を停止する(S7106)。
認証鍵証明書及び認証公開鍵が正当であれば(S7105で「証明書及び鍵が正し
い」)、検出対象モジュール配布部220aは、認証公開鍵を用いて、受信したレスポンスデータがチャレンジデータの署名データと一致するか否か検証する(S7107)。
次に、検出対象モジュール配布部220aは、正しいレスポンスデータを返した検知モジュール(正当な検知モジュール)を用いて回復処理を行うかを判断する(S7108)。このとき、正しいレスポンスデータを返した検知モジュール(正当な検知モジュール)の数が、予め設定されている回復処理に必要な数以上であるかを判断する。ここで、正しいレスポンスデータを返した検知モジュール(正当な検知モジュール)の数が、予め設定されている回復処理に必要な数以上である場合には、回復処理を行うと判断する。正しいレスポンスデータを返した検知モジュール(正当な検知モジュール)の数が、予め設定されている回復処理に必要な数未満である場合には、回復処理を行わないと判断する。
回復処理を行わない場合(S7108でN)、検出対象モジュール配布部220aは、処理を停止する(S7106)。回復処理を行う場合(S7108でY)、相互認証処理を終了し、回復処理に移る。
また、検出対象モジュール配布部220aは、相互認証処理において、正当性が確認されたすべての検知モジュールの検知モジュール識別子を記載した認証リストを作成する。そして、これ以降の回復処理では、認証リストに識別子が記載されている検知モジュールのみを利用する。
(6)回復処理の動作
続いて、図50〜54を用いて、回復処理(図44のS600)の詳細について説明する。回復処理は、上述した相互認証処理において、相互認証が成功した場合に、改ざんされた保護制御モジュール120aを、新しい更新用の保護制御モジュールへ更新する処理である。
図50は、回復処理時の動作を示すフローチャートである。
先ず、モジュール特定処理(S300a)と更新処理(S8100)を並行して実行する。
さらに、暗号化されたアプリ110、111を再暗号化する再暗号化処理を行う(S8200)。
(a)モジュール特定処理
回復処理におけるモジュール特定処理は、実施の形態2のモジュール特定処理と同様であるので、ここでは省略する。なお、このモジュール特定処理を、実施の形態1のモジュール特定処理と同じであるとしてもよい。
(b)更新処理
続いて、図51〜54のシーケンス図を用いて、更新処理(図50のS8100)の詳細について説明する。ここで、図51〜54では、図面の記載スペースの関係上、検知モジュール131a、132a、133a、134a、135aのみを記載しているが、実際には、検知モジュール136a、137aの処理も存在する。
先ず、検出対象モジュール配布部220aの証明書生成部704は、署名秘密鍵を用いて、更新検証証明書を生成する(S8101)。更新検証証明書は、新しい保護制御モジュールが正しくインストールできたか否かを、各検知モジュール131a、132a、・・・、137aが確認するための証明書である。検出対象モジュール配布部220aは、生成した証明書を、各検知モジュールへ送信する(S8102)。
次に、検出対象モジュール配布部220aの暗号鍵生成部708は、新しい保護制御モジュールを多重に暗号化するための暗号鍵を2つ(第1の鍵及び第2の鍵)生成する(S8103)。暗号処理部709は、第2の鍵を用いて新しい保護制御モジュールを暗号化し、暗号化新保護制御モジュールを生成する(S8104)。暗号処理部709は、暗号化新保護制御モジュールを、第1の鍵を用いてさらに暗号化し、多重暗号化新保護制御モジュールを生成する(S8105)。
検出対象モジュール配布部220aの検知モジュール選択部706は、検知モジュール群130aから検知モジュールを一つ選択し(S8106)、選択した検知モジュールの識別子を判断部210aに通知する。ここでは、一例として、検知モジュール131aを
選択するものとする。
検出対象モジュール配布部220aは、選択した検知モジュール131aへ多重暗号化新保護制御モジュールを送信し(S8107)、更に、第1の鍵を送信する(S8108)。
検知モジュール131aは、多重暗号化新保護制御モジュールと第1の鍵とを受信する(S8109)。検知モジュール131aは、第1の鍵を用いて、多重暗号化新保護制御モジュールを復号し、暗号化新保護制御モジュールを取得する(S8110)。そして、復号が終了すると、その旨を検出対象モジュール配布部220aへ通知する(S8111)。
検出対象モジュール配布部220aは、復号終了通知を受信すると(S8111)、検知モジュール群130aから、S8106で選択した検知モジュールとは異なる検知モジュールを一つ選択する(S8112)。ここでは、一例として、検知モジュール132aを選択するものとする。
検出対象モジュール配布部220aは、選択した検知モジュール132aに、第2の鍵を送信する(S8113)。さらに、検出対象モジュール配布部220aは、検知モジュール131aに対して、S8110で取得した暗号化新保護制御モジュールを検知モジュール132aへ送信するよう依頼する(S8114)。
検知モジュール131aは、検出対象モジュール配布部220aからの依頼を受けて、暗号化新保護制御モジュールを検知モジュール132aへ送信する(S8115)。
検知モジュール132aは、検出対象モジュール配布部220aから第2の鍵を受信し、検知モジュール131から暗号化新保護制御モジュールを受信する(S8116)。そして、第2の鍵を用いて、暗号化新保護制御モジュールを復号し、新しい保護制御モジュールを取得する(S8117)。
検知モジュール132aは、S8117で取得した新しい保護制御モジュールを保護制御モジュール120aに上書きし、更新する(S8118)。そして、検知モジュール132aは、更新の終了を他の検知モジュールへ通知する(S8119)。
続いて、各検知モジュール131a、132a、・・・、137aのそれぞれは、事前に受信した更新検証証明書を用いて、保護制御モジュールが正しく更新されたか否か検証(S8120)する。さらに、検証結果を検出対象モジュール配布部220aへ通知する(S8121)。
検出対象モジュール配布部220aは、各検知モジュールから送信された検証結果通知を受信する(S8121)。さらに、検出対象モジュール配布部220aは、保護制御モジュールが正しく更新されたかを判定する(S8122)。正しく更新されていないと判定する場合(S8121でN)、検出対象モジュール配布部220aは、機器100を停止させる(S8123)。
正しく更新されている場合(S8122でY)、検出対象モジュール配布部220aは、更新処理終了を各検知モジュールへ通知する(S8124)。
各検知モジュールは、更新処理終了通知を受信すると(S8124)、新しい保護制御モジュールのMAC値を生成し、生成したMAC値と保護制御モジュールの識別子との組を、MAC値テーブルに書き込む(S8125)。
以上説明したように、更新処理では、検出対象モジュール配布部220aが更新用の新保護制御モジュールを複数の鍵を用いて多重に暗号化し、検知モジュール群130aへ送信する。検知モジュール群130aは、受信した新保護制御モジュールで、保護制御モジュール120aを更新する。
この時、検出対象モジュール配布部220aは、多重に暗号化された新保護制御モジュールを復号するための複数の鍵を、検知モジュール群130aに送信するタイミングを制御することにより、攻撃者が暗号化されていない新保護制御モジュールを入手することを困難にする。
(c)モジュール特定処理と更新処理との関係
上述したモジュール特定処理と更新処理とは、互いに連携しながら実行される。
モジュール特定処理は、検出対象モジュール配布部220aから、検知モジュール群130aに含まれる検知モジュールを送信先として、複数の鍵が送られる時と、暗号化された更新用保護制御モジュールの検知モジュール群130aに含まれる検知モジュールでの復号処理中に定期的に実施される。定期的に実施する際の時間間隔は、例えば、更新用保護制御モジュールが通信路を通して完全に外部に出力されるまでの時間より短い間隔である。完全に外部に出力されるまでに1秒かかるのであれば、例えば、それより短い500ミリ秒間隔のタイミングで監視処理を実行する。
ここでは、図55を用いて、モジュール特定処理と更新処理との連携動作について説明する。
先ず、機器100aは、管理装置200bから多重暗号化新保護制御モジュールが送付される(S8151)前に、モジュール特定処理(モジュール特定1)を実施する(S8161)。改ざんされた異常な検知モジュールを選択して、更新処理を行わないようにするためである。
その後、機器100aは、管理装置200bにより送信された第1の鍵を検知モジュール131aが受信する(S8152)前に、モジュール特定処理(モジュール特定2)を実施し(S8162)、機器100aが第1の鍵を受信する時に、異常な検知モジュールを選択していないことを確認する。
さらに、検知モジュール131aが第1の鍵を受信(S8152)した後、第1の鍵を用いて多重暗号化新保護制御モジュールを復号する間(S8153)、定期的に、検知モジュール131による復号処理を中断して、モジュール特定処理(モジュール特定3−1、3−2)を実施する(S8163、S8164)。これにより、復号処理中に、検知モジュール131a、132a、・・・、137aが攻撃されたとしても、暗号化新保護制御モジュールがすべて漏洩する前に検知モジュールが攻撃されたことを検出し、漏洩を防止することが可能となる。
これ以降の処理は、上記と同様である。即ち、機器100aは、管理装置200bにより送信された第2の鍵を検知モジュール132aが受信する(S8155)前に、モジュール特定処理(モジュール特定4)を実施し(S8165)、機器100aが第2の鍵を受信する時に、異常な検知モジュールを更新処理において、選択していないことを確認する。
さらに、検知モジュール132aが第2の鍵を受信した(S8155)後、第2の鍵を用いて暗号化新保護制御モジュールを復号する間(S8156)、定期的に、検知モジュール132aによる復号処理を中断し、モジュール特定処理(モジュール特定5−1、5−2)を実施する(S8166、S8167)。最後に、モジュール特定処理(モジュール特定6)を実施する(S8168)。
次に、機器100aは、検証結果を管理装置200bへ通知する(S8157)。
これにより、新保護制御モジュールがすべて漏洩する前に検知モジュールが攻撃されたことを検出し、漏洩を防止することが可能となる。
ここで、モジュール特定処理において、検知モジュールに改ざんが検出された場合には、回復処理を停止する。これにより、管理装置200bは、第1の鍵や第2の鍵の送信を中止することが可能となり、攻撃者は、多重暗号化新保護制御モジュールを復号するための鍵を入手することが不可能となる。なお、モジュール特定処理において、正常モジュールを特定できた場合は、再度、特定した正常モジュールを用いて回復処理するとしてもよい。
(d)再暗号化処理
続いて、図56のシーケンス図を用いて、再暗号化処理(図50のS8200)の詳細について説明する。
ここでは、各検知モジュール131a、132a、・・・、137aをまとめて、検知モジュール群130aとしている。
先ず、更新された保護制御モジュール(図56の説明においては、更新前の保護制御モジュール120aと区別するために、「保護制御モジュール121」という。)が、各検知モジュール131a、132a、・・・、137aに対して、それぞれが保持している分散情報及び暗復号鍵証明書の送信を依頼する(S8201)。
各検知モジュール131a、132a、・・・、137aは、保護制御モジュール121からの依頼を受けて、分散情報及び暗復号鍵証明書を送信する(S8202)。
保護制御モジュール121は、各検知モジュール131a、132a、・・・、137aから分散情報及び暗復号鍵証明書を受信し(S8203)、受信した分散情報から更新前の保護制御モジュール120が使用していた暗復号鍵(ここでは、「旧暗復号鍵」という。)を復元する(S8204)。更に、保護制御モジュール121は、暗復号鍵証明書を用いて、旧暗復号鍵が正しく復元されたか否か検証する(S8205)。
旧暗復号鍵が正しく復元されなかった場合(S8205でN)、保護制御モジュール121は、異常な検知モジュールを炙り出す(どの検知モジュールが不正な分散情報を送信したか特定する)(S8206)。特定された異常な検知モジュールは、管理装置200bへ通知される。
旧暗復号鍵が正しく復元された場合(S8205でY)、保護制御モジュール121の暗復号鍵生成部311は、新しい暗復号鍵(ここでは、「新暗復号鍵」という。)を生成する(S8207)。そして、復号ロード部304は、旧暗復号鍵を用いて暗号化されたアプリ(110、111)を復号し、新暗復号鍵を用いてアプリ(110、111)を再暗号化する(S8208)。
分散情報から旧暗復号鍵を復元する方法や異常な検知モジュールの特定方法については、特許文献2の50ページから52ページに詳しく説明されている。特許文献2における秘密鍵dを本実施形態の暗復号鍵に対応させ、認証局装置を本実施形態の保護制御モジュール121に対応させ、分散情報保持装置を検知モジュール131a、132a、・・・、137aに対応させることで、特許文献2と同じ方法が利用可能である。
また、S8206において、異常な検知モジュールを特定するための方法として、実施の形態1または2におけるモジュール特定処理を用いてもよい。
(7)次ラウンド準備処理の動作
続いて、図57のシーケンス図を用いて、次ラウンド準備処理(図44のS700)の詳細について説明する。次ラウンド準備処理では、回復処理の終了後、次の回復処理のための準備を行う。以下、具体的に説明する。
まず、保護制御モジュール121は、新暗復号鍵から、秘密分散法を用いて分散情報を
生成し(S9001)、更に、署名秘密鍵を用いて、新暗復号鍵証明書を生成する(S9002)。そして、保護制御モジュール121は、生成した分散情報と暗復号鍵証明書とを各検知モジュール131a、132a、・・・、137aへ送信する(S9003)。
ここで、初期設定処理時と同様に、分散情報は、検知モジュールの数と同数が生成され、それぞれの検知モジュールが、異なる分散情報のペアを保持するように送信される。新暗復号鍵証明書は、各検知モジュール131a、132a、・・・、137aへ同じ証明書が送信される。
各検知モジュール131a、132a、・・・、137aは、保護制御モジュール121から分散情報と新暗復号鍵証明書とを受信し(S9003)、受信した分散情報と新暗復号鍵証明書とを分散情報保持部410に保持する(S9004)。
3.4 実施の形態3の効果
上記実施の形態により、検知処理において保護制御モジュール120aの改ざんが検出された場合、改ざんされた保護制御モジュールを新しい保護制御モジュールに更新することで、システムの安全性を高めることができる。
また、モジュール特定処理S300aを用いて正常なモジュールを特定し、特定した正常モジュールを用いて保護制御モジュールを新しい保護制御モジュールに更新することで、より安全に保護制御モジュールを更新することができる。これにより、システムの安全性をさらに高めることができる。
4.その他の変形例
なお、本発明を上記各実施の形態に基づいて説明してきたが、本発明は、上記各実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記実施の形態3では、保護制御モジュール120aを更新するとしているが、これに限定するものではない。
検知モジュールやアプリケーションプログラム等、保護制御モジュール120a以外のモジュールを更新するとしてもよい。以下に、検知モジュール133aを更新する場合を例に挙げ、検知モジュールの更新処理について説明する。
検知モジュールの更新処理では、保護制御モジュールを更新する場合と同様に、検出対象モジュール配布部220aは、検知モジュール133aを更新するための更新用検知モジュールを複数の鍵を用いて多重に暗号化し、検知モジュール群130aに含まれる検知モジュール(検知モジュール133aを除く)を送信先として送信する。検知モジュール群130aに含まれる検知モジュール(検知モジュール133aを除く)は、検知モジュール133aを更新用検知モジュールに更新する。
このとき、多重に暗号化された更新用検知モジュールを復号するための複数の鍵を、検知モジュール群130aに含まれる検知モジュールへ送信するタイミングを検出対象モジュール配布部220aが制御することにより、攻撃者が暗号化されていない更新用検知モジュールを入手することを不可能にする。
(2)上記各実施の形態では、各検知モジュールは、受信部401、送信部402、制御部403、検証部404、MAC値生成部405、MAC値テーブル更新部406、検出対象モジュールインストール部407、更新部408などから構成されるとしている。しかし、これに限定するものではない。
各検知モジュールは、監視処理に必要な構成要素(制御部403、検証部404)のみで構成されるとしてもよい。また、各検知モジュールは、更新処理に必要な構成要素(制御部403、更新部408)のみで構成されるとしてもよい。また、各検知モジュールは、無効化処理に必要な構成要素(制御部403、更新部408)のみで構成されるとしてもよい。
さらに、各検知モジュールは、上記の組み合わせから構成されるとしてもよい。
この場合に、検知モジュール群に含まれる複数の検知モジュールが、全体として、監視処理と更新処理に必要な構成要素を含むように、構成されていればよい。
(3)上記各実施の形態では、各検知モジュールの検証部は、他の検知モジュールや保護制御モジュールの改ざんチェックを実行するとしているが、改ざんチェックの対象は、当該モジュール全体に限定するものではない。
改ざんチェックの対象は、検知モジュール内の一部分、例えば、検知モジュールに含まれる特定の機能や関数、鍵等のデータであってもよい。また、一度に改ざん対象すべてを改ざんチェックするのではなく、改ざん対象の一部を改ざんチェックするだけでもよい。このとき、改ざん対象を一定のサイズに分割して得られた部分毎に改ざんチェックしてもよいし、機能や関数単位で分割して得られた部分毎に改ざんチェックしてもよい。さらに、改ざんチェックの度に、改ざん対象の複数の部分から一の部分を順番に選択し、選択した部分に対して改ざんチェックするとしてもよい。また、改ざんチェックの度に改ざんチェックする部分をランダムに決定してもよい。また、他のモジュールや機器の外部の装置から、どの部分を改ざんチェックするかの指示が与えられ、この指示により示される部分に対して改ざんチェックをしてもよい。
(4)上記各実施の形態では、各検知モジュールや保護制御モジュールは、耐タンパ化された領域等、攻撃者による攻撃から保護されている領域で動作するとしてもよい。
監視処理に必要な構成要素のみで構成される検知モジュールが、攻撃者による攻撃から保護されている領域で動作する場合、他の検知モジュールや管理装置の判断部は、その保護された領域に存在する検知モジュールから、他の検知モジュールや保護制御モジュールが攻撃されたことを検知した旨の通知を受けたときに、その通知を無条件に受け入れ、更新処理や無効化処理を実施してもよいし、その通知を他のモジュールからの通知よりも重要な通知として扱い、更新処理や無効化処理の判断を行ってもよい。
また、保護制御モジュールが保護モードで動作し、つまり、耐タンパ化された領域等に存在して動作する。また、検知モジュールが通常モードで動作し、つまり、耐タンパ化されていない領域等に存在して動作するとしてもよい。
(5)上記各実施の形態では、モジュール無効化部は、管理装置内に存在し、アクセス制御モジュールは、機器内に存在するとしているが、これに限定するものではない。
モジュール無効化部及びアクセス制御モジュールは、それぞれ、機器内部に存在してもよいし、管理装置に存在してもよい。また、各検知モジュール内に存在してもよい。
また、モジュール無効化部とアクセス制御モジュールとは、別々のモジュールではなく、機器内部において、又は管理装置内部において、1つのモジュールであってもよい。
モジュール無効化部とアクセス制御モジュールとが1つのモジュールである場合には、検知モジュールへアクセス情報取得鍵と暗号化アクセス情報とを送信するのではなく、アクセス情報を、無効化を実行する検知モジュールへ、直接送信してもよい。
さらに、モジュール無効化部やアクセス制御モジュールが機器内に存在する場合には、耐タンパ化などにより、攻撃から保護される領域に存在するとしてもよい。
(6)各実施の形態では、管理装置は、判断部、検出対象モジュール配布部、モジュール無効化部、通信部及び監視パターン更新部などから構成されるとしているが、これに限定するものではない。判断部、検出対象モジュール配布部、モジュール無効化部、通信部及び監視パターン更新部などが1個のモジュールにより構成されているとしてもよい。また、上記の部の組み合わせから構成されるとしてもよい。
(7)上記各実施の形態では、検知システムもしくはソフトウェア更新システムは、機器の工場製造時に初期設定処理を行うとしているが、これに限定するものではない。販売後など工場出荷後のどこかで初期化処理を実施してもよい。また、初期化処理は1度だけでなく、2度以上実施してもよい。
(8)上記各実施の形態では、保護制御モジュールや検知モジュールの改ざん検出用証明書、検出対象モジュールの検証用証明書、更新検証証明書及び認証公開鍵の認証鍵証明書は、検出対象モジュール配布部が保持する署名秘密鍵を用いて生成された証明書であるとしたが、これに限定するものではなく、それぞれ別の鍵を用いて生成されてもよいし、検出対象モジュール配布部220以外の証明書発行装置により発行された証明書でもよい。
(9)上記実施の形態3では、初期設定処理や次ラウンド準備処理の動作として、暗復号鍵から生成する分散情報を検知モジュールへ送信し、当該検知モジュールが分散情報を保持するとしているが、これに限定するものではない。
検知モジュールの代わりに、アプリケーションプログラムが分散情報を保持するとしてもよいし、検知モジュールとアプリケーションプログラムとが分散情報を保持するとしてもよい。
(10)上記各実施の形態では、検知処理の動作として、検知モジュールが保護制御モジュールの改ざん検出を行うときに、検証鍵を使用して計算したMAC値を用いて改ざん検出処理を行うとしている、これに限定するものではない。
保護制御モジュールの改ざん検出用証明書を用いて検証するとしてもよい。また、MAC値や証明書のようにハッシュ値を利用した改ざん検証を行うのではなく、ログをチェックすることで改ざん検証を行うとしてもよい。
(11)上記各実施の形態では、検知処理の動作として、各検知モジュールが保護制御モジュールの改ざんを検出した場合、管理装置の判断部と他の検知モジュールへ通知するとしたが、これに限定するものではない。
判断部と他の検知モジュールのうち、どれか1つ以上のモジュールに通知するとしてもよい。また、保護制御モジュールの改ざんを検出した場合、検知モジュールを停止するとしてもよいし、機器や保護制御モジュールを停止するとしてもよい。更に、改ざんされた保護制御モジュールを消去するとしてもよい。
さらに、各検知モジュールが保護制御モジュールの改ざんを検出しなかった場合、判断部へ通知を行わないとしているが、これに限定するものではない。改ざん検出処理を実施した結果として、改ざんを検出しなかった旨を通知するとしてもよい。
(12)上記各実施の形態では、検知処理の動作として、各検知モジュールは、他の検知モジュールに保護制御モジュールの改ざん検出結果を送信しないとしているが、それぞれの検知モジュールで検出結果を共有するとしてもよい。
また、検出結果を共有しない検知モジュールがあった場合に、当該検知モジュールを異常な検知モジュールと判断して、無効化するとしてもよい。
(13)上記実施の形態3では、解析・判断処理の動作として、改ざん情報に基づいて保護制御モジュールを更新するかどうか判定するとしているが、これに限定するものではない。
改ざんされていると通知してきた検知モジュールの数によって更新するかどうかを判定してもよい。例えば、改ざんされていると通知してきた検知モジュールの数が、所定の数よりも多いか等しい場合に、更新すると判定し、少ない場合に更新しないと判定してもよい。ここで、所定の数は、検知モジュール群に含まれるすべての検知モジュールの数である。
また、解析・判断時の動作として、保護制御モジュールを更新するか否か、及び保護制御モジュールを無効化するか否かを判断したが、これに限定するものではなく、機器を停止するか否かを判断するとしてもよい。
(14)上記実施の形態3では、相互認証処理の動作として、各検知モジュールが、検出対象モジュール配布部を認証し、その後、検出対象モジュール配布部が各検知モジュールを認証するとしているが、これに限定するものではない。
検出対象モジュール配布部が各検知モジュールを認証し、その後、各検知モジュールが、検出対象モジュール配布部を認証してもよい。また、各検知モジュールと検出対象モジュール配布部とが個別に認証処理を行ってもよい。
(15)上記実施の形態3では、相互認証処理の動作として、検出対象モジュール配布部が各検知モジュールを認証する処理において、チャレンジデータをそれぞれの検知モジュールで異なる値にするとしているが、これに限定するものではない。チャレンジデータとしすべての検知モジュールで同じ値としてもよいし、すべての検知モジュールを複数のグループに分け、チャレンジデータをそれぞれのグループで異なる値にしてもよい。
(16)上記実施の形態3では、相互認証処理の動作として、各検知モジュールが、検出対象モジュール配布部を認証する処理において、各検知モジュールが個別に検出対象モジュール配布部を認証するとしているが、これに限定するものではない。
署名検証した結果を他の検知モジュールへ通知し、検知モジュール間で検証結果を共有し、自検知モジュールの認証結果と他の検知モジュールから受信した認証結果とから、検出対象モジュール配布部が正当かどうかをそれぞれ判定してもよい。
判定方法としては、例えば、一定数(例えば、過半数等)の検知モジュールが認証に成功した場合には正当であると判定し、そうでない場合には、正当ではないと判定する方法がある。
(17)上記実施の形態3では、相互認証処理の動作として、管理装置は署名秘密鍵と署名公開鍵とを使用して相互認証処理を実施するとしているが、これに限定するものではない。署名秘密鍵と署名公開鍵とは別に、相互認証に使用する認証鍵対を用いるとしてもよい。
このとき、管理装置の認証鍵対のうちの認証公開鍵は、予め1個の検知モジュールが保持するとしてもよいし、相互認証処理時に管理装置から当該検知モジュールへ送信するとしてもよい。
(18)上記実施の形態3では、相互認証処理の動作として、正当なモジュールであると検証できた検知モジュールの数が、回復処理に必要な数以上あるかどうかで、その後の回復処理を実施するかどうかを判定しているが、これに限定するものではない。
異常な検知モジュールの数が、予め設定されている許容数未満かどうかで回復処理を実施するかどうかを判定してもよい。
また、相互認証処理において、回復処理に必要な数に満たないと判定された場合には、機器を停止するとしたが、この場合に、検知モジュールを無効化してもよい。
(19)上記実施の形態3では、相互認証処理の動作として、検出対象モジュール配布部が各検知モジュールを認証する時に、各検知モジュールは、レスポンスデータと一緒に認証公開鍵と認証鍵証明書とを検出対象モジュール配布部へ送信するとしているが、これに限定するものではない。
各検知モジュールは、レスポンスデータと一緒に認証公開鍵と認証鍵証明書とをそれぞれ別のタイミングで送信してもよい。
また、認証公開鍵や認証鍵証明書は、検出対象モジュール配布部から要求があったときにのみそれぞれ送信するとしてもよい。このとき、検出対象モジュール配布部は、すべての検知モジュールの認証公開鍵や認証鍵証明書を受信してもよいし、予め設定されており、回復処理に必要な数以上の数の検知モジュールの認証公開鍵や認証鍵証明書を受信してもよいし、また予め設定されており、異常な検知モジュールの許容数未満の検知モジュールの認証公開鍵と認証鍵証明書とを受信してもよい。
(20)上記実施の形態3では、回復処理の動作として、モジュール特定処理時を、1回の復号中に2回実施する(モジュール特定3−1及び3−2又はモジュール特定5−1及び5−2)としているが、これに限定するものではない。復号処理の時間にあわせて何回モジュール特定処理を行ってもよいし、復号処理以外であっても、鍵や更新用保護制御モジュールの受信処理時や検知処理時、相互認証処理時にモジュール特定処理を行ってもよい。
また、モジュール特定処理を一定時間間隔で定期的に実施するとしているが、これに限定するものではない。更新処理を複数のブロックに分割し、そのブロックの処理が終わるごとに実施してもよいし、ランダムな時間間隔で実施してもよいし、管理装置から指定された時間間隔で実施してもよい。
また、各検知モジュールは、モジュール特定処理を実行するタイミングを示す同期情報を外部のサーバから取得し、取得した同期情報にしたがってモジュール特定処理を実行するとしてもよい。これにより、各検知モジュールは、他の検知モジュールと同じタイミングでモジュール特定処理を実行することができるので、異常な検知モジュールの検出精度を向上させることができる。
さらに、通常時と回復処理時とにおける検知頻度を変更するとしてもよい。検知頻度の変更は、回復処理中であってもよい。
(21)上記実施の形態3では、異常モジュール仮定部673は、検知モジュール群130a内の検知モジュールをランダムに一つ選択しているが、これに限定するものではない。異常モジュール仮定部673は、多くの他の検知モジュールから正常と判定される検知モジュールを選択するとしてもよい。他の検知モジュールから正常と判定されていることで、仮異常検知モジュール群に含まれる検知モジュールが多くなる。これにより、ステップS9014において、選択する検知モジュールの数が少なくなり、処理効率を向上することができる。
(22)上記実施の形態2及び3では、ステップS5107ですべての検知モジュールを選択していない場合、ステップS5101で他の検知モジュールをランダムに一つ選択しているが、これに限定するものではない。
前回の正常モジュール特定処理のステップS5103の仮異常検知モジュール群内の検知モジュール以外を選択するとしてもよい。前回の正常モジュール特定処理では、仮異常検知モジュール群内の検知モジュールにおいて、矛盾がないことがわかっているため、仮異常検知モジュール群内の検知モジュールをステップS5101で選択をしたとしても、正常な検知モジュールと特定できない。
これにより、正常な検知モジュールと特定できない検知モジュールを選択しないことにより、処理効率を向上することができる。
(23)上記各実施の形態では、検出対象モジュール監視処理にて、検出対象モジュールを1回のみ改ざん検出して、その検出結果に基づいて判断部にて異常モジュールを抽出しているが、これに限定するものではない。
複数回、検出対象モジュールを改ざん検出し、複数回の検出結果に基づいて判断部にて異常モジュールを抽出するとしてもよい。
以下では、3回改ざん検出する例について説明する。
図58は、1回目の検出対象モジュールに対する改ざん検出結果756を示している。この結果、検知モジュール132、134、135、137を異常モジュールとして抽出する。判断部はこの結果に基づき、図59に示すモジュール特定情報641をモジュール特定情報保持部に格納する。
次に、モジュール特定情報641に基づき、判断部は異常モジュールと特定されていない検知モジュール131、133、136に対し、検出対象モジュールの改ざん検出をするよう指示する(2回目の改ざん検出)。
図60は、2回目の検出対象モジュールに対する改ざん検出結果757を示している。この結果、検知モジュール133、136を新たに異常モジュールとして抽出する。判断部はこの結果に基づき、図61に示すモジュール特定情報651をモジュール特定情報保持部に格納する。次に、モジュール特定情報651に基づき、判断部は異常モジュールと特定されていない検知モジュール131に対し、検出対象モジュールの改ざん検出をするよう指示する(3回目の改ざん検出)。
図62は、2回目の検出対象モジュールに対する改ざん検出結果758を示している。この結果、検知モジュール131を新たに異常モジュールとして抽出するが、すべての検知モジュールを異常であるため、ステップS3402でYとなり、エラーを出力して機器を停止させる。
以上のように、複数回、検出対象モジュールの改ざん検出を実行することで、異常モジュールの抽出する精度が向上する。さらに、すべての検知モジュールが異常であるか否かの判定の精度も向上するため、正常モジュールが存在しない場合に正常モジュール特定処理を実行する事態を避けることが可能になる。このように、システムの安全性をさらに高めることができる。
(24)上記各実施の形態では、図21のように検出対象モジュール900には一つの検証用証明書を付加しているが、これに限らない。複数の検証用証明書を付加するとしてもよい。
以下で、2つの検証用証明書を付加する場合について説明する。
図63は、検出対象モジュール900aのデータの構成を示す図である。同図では、検出対象モジュール900aに、第1の検証用証明書922aと第2の検証用証明書924aを付加している。ここで、第1の検証用証明書922aは検出対象モジュール900aのデータ部分921aと対応しないように、第1の検証用証明書922aの一部分923aが改ざんされており、第2の検証用証明書924aは検出対象モジュール900aのデータ部分921aと対応するよう正しく生成された証明書である。
検出対象モジュール配布部は、検知モジュール群に第1の検証用証明書922aと第2の検証用証明書924aのどちらが対応関係が取れている正しい証明書であるかを通知しないで、検出対象モジュール900aを機器内にインストールさせる。さらに、判断部が各検知モジュールに、それぞれの検証用証明書を用いた改ざん検出を実行させ、改ざん検出結果を受信する。判断部は、それぞれの検証用証明書を用いた改ざん検出結果に基づき、検知モジュールが異常であるか否かを判断する。
例えば、改ざん検出結果が、対応関係が取れている検証用証明書(この場合は、第2の検証用証明書924a)を用いた結果が「正常」、対応関係が取れていない検証用証明書(この場合は、第1の検証用証明書922a)を用いた結果が「異常」である場合に、その改ざん検出結果を送信した検知モジュールを「正常」と判断し、それ以外の場合は「異常」と判断してもよい。
また、対応関係が取れている検証用証明書(第2の検証用証明書924a)が異常な検知モジュールの妨害により、正しくインストールできていない場合も考慮してもよい。すなわち、第1の検証用証明書922aを用いた結果が「異常」であっても、第2の検証用証明書924aを用いた結果が「異常」である場合は、その改ざん検出結果を送信した検知モジュールを「異常の可能性あり」とし、管理装置で識別番号を記録するなどして管理するとしてもよい。
また、今後のモジュール特定処理において、「異常の可能性あり」という判断に基づいて、異常モジュール特定もしくは正常モジュール特定を実行するとしてもよい。
なお、上記変形例では、第1の検証用証明書922aを改ざんしたものとしているが、これに限らない。検知モジュール群に、一方が検証用証明書と対応関係が取れており、もう一方が対応関係が取れていない二つの検出対象モジュールを機器内にインストールさせ、各検知モジュールに改ざん検出させるとしてもよい。また、検証用証明書を改ざんせず、検出対象モジュールのデータ部分を改ざんするとしてもよい。
さらに、二つの検証用証明書ではなく、三つ以上の検証用証明書としてもよい。複数回、検出対象モジュールを改ざんさせる場合、その複数回の改ざん検出時に改ざん検出するための検証用証明書を変えるよう、判断部が検知モジュールに指示するとしてもよい。また、複数回の改ざん検出の間に、追加で検証用証明書を送信し、追加の検証用証明書を用いて、検知モジュールに改ざん検出させるとしてもよい。
複数回、検出対象モジュールを改ざんさせる場合、各回で使用する検証用証明書の対応関係を取れている(以下では正規)・取れていない(以下では不正)の組み合わせを変えていくとしてもよい。例えば、検証用証明書を三つとする場合、各回で使用する三つの検証用証明書は、(正規、正規、正規)、(正規、正規、不正)、(正規、不正、正規)、(正規、不正、不正)、(不正、正規、正規)、(不正、正規、不正)、(不正、不正、正規)、(不正、不正、不正)の8パターンの中から選択するとしてもよい。ここで、(正規、不正、正規)は、第1の検証用証明書が正規、第2の検証用証明書が不正、第3の検証用証明書が正規であるパターンを意味する。
(25)上記実施の形態2及び3では、正常モジュール特定処理において、異常モジュール判定処理にて異常と特定した異常検知モジュールを相互監視の監視パターンに含めていないが、これに限らない。
異常検知モジュールを、異常と特定されていない検知モジュールが監視し、その監視結果を判定するとしてもよい。この場合、監視結果が、異常検知モジュールを正常と判定している場合、異常検知モジュールを監視した検知モジュールを異常と特定してもよい。その後、図33の正常モジュール特定処理を実行するとしてもよい。このようにすることで、異常であるか否かが不明であった異常モジュールを特定することができ、正常モジュールを特定する精度が向上する。
(26)次に示すように構成してもよい。
(a)改ざん監視システム10cは、図64に示すように、管理装置200c及び情報セキュリティ装置100cから構成されている。
情報セキュリティ装置100cは、図64に示すように、改ざんを監視する複数の監視モジュール131c、132c、・・・、137cを有する。
管理装置200cは、情報セキュリティ装置100cを管理する。
管理装置200cは、図64に示すように、取得部261、生成部262、送信部263、受信部264及び判定部265から構成されている。
取得部261は、改ざんされていない監視モジュールを新たに取得する。
生成部262は、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する。
送信部263は、生成した前記おとり監視モジュールを情報セキュリティ装置100cへ送信してインストールさせる。
受信部264は、前記おとり監視モジュールがインストールされた後、情報セキュリティ装置100cから、各監視モジュールによる他の監視モジュールに対する監視結果を受信する。
判定部265は、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する。
(b)改ざん監視システム10cにおいて、次に示すようにしてもよい。
生成部262は、正常でない検証用証明書を含む前記おとり監視モジュールを生成する。
送信部263は、情報セキュリティ装置100cへ、正常でない前記検証用証明書を含む前記おとり監視モジュールを送信してインストールさせる。
情報セキュリティ装置100cにおいて、各監視モジュールは、前記おとり監視モジュールに含まれる検証用証明書を用いて、当該おとり監視モジュールが改ざんされているか否かを判断する。
また、次に示すようにしてもよい。
取得部261により取得される前記監視モジュールは、当該監視モジュールの正当性を証明するための検証用証明書を含む。
生成部262は、前記監視モジュールに含まれる前記検証用証明書を改変して、改変された検証用証明書を含む前記おとり監視モジュールを生成する。
送信部263は、情報セキュリティ装置100cへ、改変された前記検証用証明書を含む前記おとり監視モジュールを送信してインストールさせる。
情報セキュリティ装置100cにおいて、各監視モジュールは、前記おとり監視モジュールに含まれる検証用証明書を用いて、当該おとり監視モジュールが改ざんされているか否かを判断する。
(c)改ざん監視システム10cにおいて、次に示すようにしてもよい。
生成部262は、ランダムなデータを生成し、生成した前記データを、前記改変された前記検証用証明書とする。
(d)改ざん監視システム10cにおいて、次に示すようにしてもよい。
生成部262は、ランダムなデータを生成し、生成した前記データを、取得部261により取得された前記監視モジュールに含まれる前記検証用証明書の一部に上書きすることにより、改変された前記検証用証明書を生成する。
(e)改ざん監視システム10cにおいて、次に示すようにしてもよい。
管理装置200cは、さらに、検出部、第1仮定部、第2仮定部及び判断部を含むとしてもよい。
ここで、検出部は、受信した前記監視結果を用いて、改竄されていない正常な監視モジュールの存在を検出する。
第1仮定部は、前記検出がされた場合に、前記監視モジュールから選択した1個の監視モジュールに対して改竄されていると仮定する。
第2仮定部は、改竄されていると仮定された前記監視モジュールを起点として、受信した前記監視結果を用いて、改竄されていると仮定された監視モジュールを正常と判定する監視モジュールに対して改竄されていると仮定する手順を、未処理の監視モジュールについて、連鎖的に適用する。
判断部は、前記第2仮定部による手順の適用の結果、全ての監視モジュールが改竄されていると仮定されたか判断し、前記判断がされた場合に、最初に改竄されていると仮定された前記監視モジュールを正常な監視モジュールと決定する。
(f)改ざん監視システム10cにおいて、次に示すようにしてもよい。
管理装置200cは、さらに、無効化部を含む。
無効化部は、異常であると判定された監視モジュールの無効化指示を出力する。
(g)改ざん監視システム10cにおいて、次に示すようにしてもよい。
管理装置200cは、さらに、記憶部を備え、記憶部は、予め、改ざんされていない監視モジュールを記憶している。取得部261は、記憶部から改ざんされていない監視モジュールを読み出すことにより、当該監視モジュールを取得する。
また、次に示すようにしてもよい。
管理装置200cは、記憶部を備えるサーバ装置に接続されている。サーバ装置の記憶部は、予め、改ざんされていない監視モジュールを記憶している。取得部261は、サーバ装置から、監視モジュールを取得する。
(h)管理装置200cは、実施の形態1の管理装置200に対応し、情報セキュリティ装置100cは、機器100に対応する。
また、管理装置200cは、実施の形態2の管理装置200aに対応し、情報セキュリティ装置100cは、機器100に対応する。
さらに、管理装置200cは、実施の形態3の管理装置200bに対応し、情報セキュリティ装置100cは、機器100aに対応する。
(27)次に示すように構成してもよい。
本発明の一実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する管理装置であって、改ざんされていない監視モジュールを新たに取得する取得回路と、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成回路と、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信回路と、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信回路と、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定回路とを備える。
本発明の別の実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する集積回路であって、改ざんされていない監視モジュールを新たに取得する取得回路と、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成回路と、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信回路と、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信回路と、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定回路とを備える。
また、本発明の別の実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する管理装置であって、複数のコンピュータ命令が組み合わされて構成されるコンピュータプログラムを記憶しているメモリ部と、前記メモリ部に記憶されている前記コンピュータプログラムから1個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備える。前記コンピュータプログラムは、コンピュータに、改ざんされていない監視モジュールを新たに取得する取得ステップと、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成ステップと、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信ステップと、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信ステップと、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定ステップとを実行させる。
また、本発明の別の実施態様は、改ざんを監視する複数の監視モジュールを有する情報セキュリティ装置を管理する管理装置において用いられるコンピュータプログラムを記録しているコンピュータ読み取り可能な非一時的記録媒体である。前記コンピュータプログラムは、コンピュータに、改ざんされていない監視モジュールを新たに取得する取得ステップと、取得した前記監視モジュールを改変して、おとり監視モジュールを生成する生成ステップと、生成した前記おとり監視モジュールを前記情報セキュリティ装置へ送信してインストールさせる送信ステップと、前記おとり監視モジュールがインストールされた後、前記情報セキュリティ装置から、各監視モジュールによる他の監視モジュールに対する監視結果を受信する受信ステップと、受信した監視結果を用いて、前記おとり監視モジュールを正常であると判定する監視モジュールを特定し、特定した監視モジュールを異常と判定する判定ステップとを実行させる。
(28)次に示すように構成してもよい。
本発明の一実施態様は、ネットワークを介して接続されている情報処理装置上で動作する複数の検知モジュールから異常モジュールを特定する管理装置であって、検出対象モジュールとそのモジュールの検証用データを送信する送信手段と、前記検出対象モジュールを検証する前記複数の検知モジュールのそれぞれから、前記検出対象モジュールと前記検証用データの対応関係に基づき検証した検証結果を受信する受信手段と、前記検証結果において、前記対応関係を正しいと検証した検知モジュールを異常モジュールと特定する異常モジュール特定手段と、を備え、前記検証用データは前記検出対象モジュールに対応しないデータであることを特徴とする。
この構成によると、検出対象モジュールを各検知モジュールが検証し、その結果を管理装置で判断することにより、異常な検知モジュールを検出することが可能となり、検知システムの信頼性を高めることができる。
ここで、前記管理装置は、さらに、特定された異常モジュールの無効化指示を出力する無効化手段を備えるとしてもよい。
これにより、検出した異常な検知モジュールを無効化することにより、異常な検知モジュールに妨害されることなく情報処理装置が動作することができ、情報処理装置の信頼性をより高めることができる。
ここで、検証用データは、前記検出対象モジュールの証明書である検証用証明書であり、前記管理装置はさらに、前記検証用証明書を生成する検証用証明書生成手段を備えるとしてもよい。
これにより、管理装置で生成した検証用証明書にしたがって、検知モジュールが検証することになり、管理装置の管理の下で情報処理装置の信頼性を高めることができる。
ここで、前記検証用証明書生成手段は、前記検出対象モジュールに対応する正規の証明書を改ざんしたものを、検証用証明書として生成するとしてもよい。
これにより、管理装置で対応しない検証用データを容易に生成することができる。
ここで、前記検証用証明書生成手段は、ランダムなデータを発生し、前記ランダムなデータを検証用証明書として生成するとしてもよい。
これにより、管理装置で対応しない検証用データを容易に生成することができる。
ここで、前記管理装置は、さらに、特定した異常な検知モジュールの識別情報を記憶する異常モジュール群記憶手段と、前記複数の検知モジュールのうちの一つを異常モジュールと仮定し、前記仮定に基づいて、前記情報装置内の正常な検知モジュールを特定する正常モジュール特定手段とを備え、前記異常モジュール特定手段は、前記情報処理装置内の異常な検知モジュールをすべて特定し、特定したモジュールの識別情報を前記異常モジュール群記憶手段に記録し、前記正常モジュール特定手段は、異常モジュールと仮定した検知モジュールの識別情報を記憶する仮異常モジュール群記憶手段と、前記複数の検知モジュールから一つを選択し、異常モジュールと仮定し、識別情報を前記仮異常モジュール群記憶手段に記録する仮定手段と、前記仮定手段により異常モジュールと仮定された前記モジュールを起点として、改ざん検出処理の結果、前記起点のモジュールを正常と判定したモジュールを異常モジュールと仮定し、そのモジュールの識別情報を前記仮異常モジュール群記憶手段に記録する手順を繰り返す仮異常モジュール群生成手段と、前記異常モジュール群記憶手段と前記仮異常モジュール群記憶手段とに記録されているすべての識別情報の中に、前記情報処理装置内のすべての前記検知モジュールの識別情報が含まれるような矛盾が発生しているか否かを判定する矛盾検出手段と、前記矛盾が検出された場合に、前記仮定手段において異常モジュールと仮定した前記モジュールを正常モジュールと特定する特定手段とを備えるとしてもよい。
これにより、情報処理装置において正常なモジュールを用いた処理を実行することができ、情報処理装置の信頼性を高めることができる。
本発明の別の実施態様は、改ざんを監視する複数の検知モジュールを有する情報処理装置と、当該情報処理装置を管理する管理装置とから構成される改ざん監視システムであって、前記管理装置は、検出対象モジュールとそのモジュールの検証用データを送信する送信手段と、前記検出対象モジュールを検証する前記複数の検知モジュールのそれぞれから、前記検出対象モジュールと前記検証用データの対応関係に基づき検証した検証結果を受信する受信手段と、前記検証結果において、前記対応関係を正しいと検証した検知モジュールを異常モジュールと特定する異常モジュール特定手段と、を備え、前記検証用データは前記検出対象モジュールに対応しないデータであることを特徴とする。
ここで、前記管理装置は、さらに、特定された異常モジュールの無効化指示を出力する無効化手段を備えるとしてもよい。
ここで、検証用データは、前記検出対象モジュールの証明書である検証用証明書であり、前記管理装置は、さらに、前記検証用証明書を生成する検証用証明書生成手段を備えるとしてもよい。
ここで、前記検証用証明書生成手段は、前記検出対象モジュールに対応する正規の証明書を改ざんしたものを、検証用証明書として生成するとしてもよい。
ここで、前記検証用証明書生成手段は、ランダムなデータを発生し、前記ランダムなデータを検証用証明書として生成するとしてもよい。
ここで、前記管理装置は、さらに、特定した異常な検知モジュールの識別情報を記憶する異常モジュール群記憶手段と、前記複数の検知モジュールのうちの一つを異常モジュールと仮定し、前記仮定に基づいて、前記情報装置内の正常な検知モジュールを特定する正常モジュール特定手段とを備え、前記異常モジュール特定手段は、前記情報処理装置内の異常な検知モジュールをすべて特定し、特定したモジュールの識別情報を前記異常モジュール群記憶手段に記録し、前記正常モジュール特定手段は、異常モジュールと仮定した検知モジュールの識別情報を記憶する仮異常モジュール群記憶手段と、前記複数の検知モジュールから一つを選択し、異常モジュールと仮定し、識別情報を前記仮異常モジュール群記憶手段に記録する仮定手段と、前記仮定手段により異常モジュールと仮定された前記モジュールを起点として、改ざん検出処理の結果、前記起点のモジュールを正常と判定したモジュールを異常モジュールと仮定し、そのモジュールの識別情報を前記仮異常モジュール群記憶手段に記録する手順を繰り返す仮異常モジュール群生成手段と、前記異常モジュール群記憶手段と前記仮異常モジュール群記憶手段とに記録されているすべての識別情報の中に、前記情報処理装置内のすべての前記検知モジュールの識別情報が含まれるような矛盾が発生しているか否かを判定する矛盾検出手段と、前記矛盾が検出された場合に、前記仮定手段において異常モジュールと仮定した前記モジュールを正常モジュールと特定する特定手段とを備えるとしてもよい。
また、本発明の別の実施態様は、改ざんを監視する複数の検知モジュールを有する情報処理装置を管理する機能を有する集積回路であって、検出対象モジュールとそのモジュールの検証用データを送信する送信手段と、前記検出対象モジュールを検証する前記複数の検知モジュールのそれぞれから、前記検出対象モジュールと前記検証用データの対応関係に基づき検証した検証結果を受信する受信手段と、前記検証結果において、前記対応関係を正しいと検証した検知モジュールを異常モジュールと特定する異常モジュール特定手段と、を備え、前記検証用データは前記検出対象モジュールに対応しないデータであるとしてもよい。
また、本発明の別の実施態様は、改ざんを監視する複数の検知モジュールを有する情報処理装置を管理する管理方法であって、検出対象モジュールとそのモジュールの検証用データを送信する送信ステップと、前記検出対象モジュールを検証する前記複数の検知モジュールのそれぞれから、前記検出対象モジュールと前記検証用データの対応関係に基づき検証した検証結果を受信する受信ステップと、前記検証結果において、前記対応関係を正しいと検証した検知モジュールを異常モジュールと特定する異常モジュール特定ステップと、を含み、前記検証用データは前記検出対象モジュールに対応しないデータであるとしてもよい。
また、本発明の別の実施態様は、改ざんを監視する複数の検知モジュールを有する情報処理装置を管理する管理用のコンピュータプログラムを記録しているコンピュータ読み取り可能な記録媒体であって、前記コンピュータプログラムは、コンピュータに、検出対象モジュールとそのモジュールの検証用データを送信する送信ステップと、前記検出対象モジュールを検証する前記複数の検知モジュールのそれぞれから、前記検出対象モジュールと前記検証用データの対応関係に基づき検証した検証結果を受信する受信ステップと、前記検証結果において、前記対応関係を正しいと検証した検知モジュールを異常モジュールと特定する異常モジュール特定ステップと、を実行させるためのコンピュータプログラムであり、前記検証用データは前記検出対象モジュールに対応しないデータであることを特徴とする。
また、本発明の別の実施態様は、改ざんを監視する複数の検知モジュールを有する情報処理装置を管理する管理用のコンピュータプログラムであって、コンピュータに、検出対象モジュールとそのモジュールの検証用データを送信する送信ステップと、前記検出対象モジュールを検証する前記複数の検知モジュールのそれぞれから、前記検出対象モジュールと前記検証用データの対応関係に基づき検証した検証結果を受信する受信ステップと、前記検証結果において、前記対応関係を正しいと検証した検知モジュールを異常モジュールと特定する異常モジュール特定ステップと、実行させ、前記検証用データは前記検出対象モジュールに対応しないデータであることを特徴とする。
(29)上記の各モジュールは、具体的には、それぞれ個別のコンピュータプログラムであってもよいし、オペレーティングシステムに組み込まれるコンピュータプログラムであってもよいし、オペレーティングシステムから呼ばれるドライバプログラムであってもよいし、アプリケーションプログラムであってもよい。
(30)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(31)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又はすべてを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(32)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(33)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(34)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。