本発明の一実施態様は、コンピュータプログラムを保護する保護制御モジュールと、前記保護制御モジュールを監視するためのn個の検知モジュールと、管理装置とを含む改ざん監視システムであって、前記保護制御モジュールは、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成手段と、n個の前記検知モジュールのうち、d個の検知モジュールを選択する選択手段と、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配手段とを備え、d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出し、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信し、前記管理装置は、前記検知モジュールのそれぞれから前記判断結果を受信し、受信した判断結果を基にして、前記保護制御モジュールの改ざんを管理することを特徴とする。
この態様によると、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
ここで、前記改ざん監視システムは、1台の情報処理装置を含み、前記情報処理装置が前記保護制御モジュールとn個の前記検知モジュールとを含み、前記コンピュータプログラムを記憶しており、前記情報処理装置と前記管理装置とは、ネットワークを介して接続されているとしてもよい。
この構成によると、1台の情報処理装置が前記保護制御モジュールとn個の前記検知モジュールとを含むので、情報処理装置の起動中、常に、各検知モジュールは、前記保護制御モジュールを監視することができる。
ここで、前記改ざん監視システムは、1台の情報処理装置及びn台の検知装置を含み、前記情報処理装置が前記保護制御モジュールを含み、前記コンピュータプログラムを記憶しており、n台の前記検知装置が、それぞれ、1個の前記検知モジュールを含み、前記情報処理装置とn台の前記検知装置と前記管理装置とは、ネットワークを介して接続されているとしてもよい。
この構成によると、検知モジュールを含む検知装置と、保護制御モジュールを含む情報処理装置とは、ネットワークを介して、接続されている。このため、保護制御モジュールと検知モジュールとが同時に改ざんされる可能性が低くなる。
本発明の別の実施態様は、コンピュータプログラムを保護する保護制御モジュールであって、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成手段と、当該保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択する選択手段と、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配手段とを備え、d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出するとしてもよい。
この態様によると、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
ここで、前記生成手段は、前記コンピュータプログラムを暗号化して生成した暗号化コンピュータプログラムを記憶している記憶手段と、前記暗号化コンピュータプログラムを復号してコンピュータプログラムを生成する復号手段と、生成された前記コンピュータプログラムを基にして、d個の前記分配データを生成する分配データ生成手段とを含むとしてもよい。また、前記分配データ生成手段は、前記コンピュータプログラムを構成するデータを分割してd個の前記分配データを生成するとしてもよい。
これらの構成によると、保護制御モジュールの改ざんを検出するために、保護制御モジュール自体により秘匿されるデータを用いていない。このため、秘匿するデータが検知モジュールに漏洩することを防止することができる。
ここで、前記分配データ生成手段は、前記コンピュータプログラムを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成し、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法であるとしてもよい。
この構成によると、dより小さいk個以上の検知モジュールによる監視結果を用いて、保護制御モジュールの改ざんを検出することができる。従って、(d−k)個以下の検知モジュールが改ざんされている場合であっても、保護制御モジュールの改ざんを検出することができる。
ここで、前記生成手段は、前記コンピュータプログラムを暗号化して生成した暗号化コンピュータプログラムを記憶している記憶手段と、前記暗号化コンピュータプログラムに、復号処理を施す過程において、d個の前記分配データを生成する復号手段とを含み、前記復号処理は、d個の復号サブ処理から構成され、d個の復号サブ処理を順次施すことにより、前記暗号化コンピュータプログラムの復号を行い、各復号サブ処理から出力される復号出力を前記分配データとするとしてもよい。
この構成によると、保護制御モジュールの改ざんを検出するために、保護制御モジュール自体により秘匿されるデータを用いていないので、秘匿するデータが検知モジュールに漏洩することを防止することができる。
ここで、前記選択手段は、n個の前記検知モジュールのうち、d個の検知モジュールの組合せと、当該組合せを識別する識別情報とを対応付けて含む対応表を保持し、前記組合せの選択に用いる選択情報を取得し、取得した選択情報に一致する識別情報に対応する組合せを前記対応表から取得し、取得し組合せに含まれる検知モジュールを選択するとしてもよい。
また、前記選択手段は、乱数を生成し、生成した乱数を前記選択情報とすることにより、前記選択情報を取得するとしてもよい。
また、前記選択手段は、前記分配手段によりd個の前記分配データを分配するごとに、前記選択情報を新たに生成するとしてもよい。
また、各検知モジュールは、乱数を生成し、他の全ての検知モジュールへ送信し、各検知モジュールは、受信した乱数及び自身が生成した乱数を用いて、選択情報を生成し、生成した前記選択情報を前記保護制御モジュールへ送信し、前記選択手段は、前記検知モジュールから前記選択情報を受信し、受信した前記選択情報を用いるとしてもよい。
また、保護制御モジュールの改ざんを管理する管理装置は、前記選択情報を生成し、生成した前記選択情報を前記保護制御モジュールへ送信し、前記選択手段は、前記管理装置から前記選択情報を受信し、受信した前記選択情報を用いるとしてもよい。
これらの構成によると、保護制御モジュールが恣意的に検知モジュールを選択することができない。
ここで、前記コンピュータプログラムは、前記保護制御モジュールの保護の対象であるアプリケーションプログラム、又は、前記保護制御モジュールの動作手順を示すプログラムであるとしてもよい。
また、前記保護制御モジュールは、情報処理装置に含まれ、前記情報処理装置は、前記コンピュータプログラムを記憶しているとしてもよい。
本発明の別の実施態様は、コンピュータプログラムを保護する保護制御モジュールを監視する検知モジュールであって、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成し、前記保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する保護制御モジュールから1個の前記分配データを受信する受信手段と、受信した前記分配データが正しいか否かを判断する検証手段と、正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する送信手段とを備え、前記受信手段は、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取り、前記検証手段は、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断し、前記送信手段は、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信することを特徴とする。
この態様によると、保護制御モジュールの改ざんを検出するために、保護制御モジュール自体により秘匿されるデータを用いていないので、秘匿するデータが検知モジュールに漏洩することを防止することができる。
ここで、前記検証手段は、自身の監視結果及び受信した監視結果を用いて、自身を含め、d個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断し、d個の検知モジュールがそれぞれ受信した分配データが正しいと決定した場合に、前記保護制御モジュールが改ざんされていないと決定し、d個の検知モジュールのうち、少なくとも1個の検知モジュールが受信した分配データが正しくないと決定した場合に、前記保護制御モジュールが改ざんされていると決定するとしてもよい。
この構成によると、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
ここで、前記保護制御モジュールは、前記コンピュータプログラムを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成し、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法であり、前記検証手段は、自身の監視結果及び受信した監視結果を用いて、自身を含め、少なくともk個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断し、少なくともk個の検知モジュールがそれぞれ受信した分配データが正しいと決定した場合に、前記保護制御モジュールが改ざんされていないと決定し、(d−k+1)個以上の検知モジュールがそれぞれ受信した分配データが正しくないと決定した場合に、前記保護制御モジュールが改ざんされていると決定するとしてもよい。
この構成によると、dより小さいk個以上の検知モジュールによる監視結果を用いて、保護制御モジュールの改ざんを検出することができる。従って、(d−k)個以下の検知モジュールが改ざんされている場合であっても、保護制御モジュールの改ざんを検出することができる。
ここで、n個の前記検知モジュール及び前記保護制御モジュールは、情報処理装置に含まれ、前記情報処理装置は、前記コンピュータプログラムを記憶しているとしてもよい。
また、前記検知モジュールは、検知装置に含まれ、前記保護制御モジュールは、情報処理装置に含まれ、前記情報処理装置は、前記コンピュータプログラムを記憶しているとしてもよい。
以下、図面に基づき本発明の実施の形態について説明する。
1.実施の形態1
(1)本発明に係る一の実施の形態としての改ざん監視システム10dについて説明する。
改ざん監視システム10dは、図40に示すように、保護制御モジュール120d、n個の検知モジュール130d1、130d2、130d2、・・・、130dn及び管理装置200dを含んでいる。
保護制御モジュール120dは、コンピュータプログラム110dを保護する。
n個の検知モジュール130d1、130d2、130d2、・・・、130dnは、保護制御モジュール120dを監視する。
保護制御モジュール120dは、生成部310d、選択部311d及び分配部302dから構成される。
生成部310dは、コンピュータプログラム110dを基にして、nより小さいd個の分配データを生成する。
選択部311dは、n個の検知モジュール130d1、130d2、130d2、・・・、130dnのうち、d個の検知モジュールを選択する。
分配部302dは、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する。
d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断し、当該保護制御モジュールの改ざんを検出し、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する。
管理装置200dは、前記検知モジュールのそれぞれから前記判断結果を受信し、受信した判断結果を基にして、保護制御モジュール120dの改ざんを管理する。
この構成によると、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
(2)次のように構成してもよい。
改ざん監視システム10dは、1台の情報処理装置(図示していない)を含む。前記情報処理装置が保護制御モジュール120dとn個の検知モジュール130d1、130d2、・・・、130dnを含み、コンピュータプログラム110dを記憶している。
前記情報処理装置と管理装置200dとは、ネットワークを介して接続されている。
(3)次のように構成してもよい。
改ざん監視システム10dは、1台の情報処理装置(図示していない)及びn台の検知装置(図示していない)を含む。
前記情報処理装置が保護制御モジュール120dを含み、コンピュータプログラム110dを記憶している。
n台の前記検知装置が、それぞれ、1個の前記検知モジュールを含む。
前記情報処理装置とn台の前記検知装置と管理装置200dとは、ネットワークを介して接続されている。
(4)次のように構成してもよい。
(4−1)生成部310dは、記憶部と復号部と分配データ生成部とを含む。
記憶部は、コンピュータプログラム110dを暗号化して生成した暗号化コンピュータプログラムを記憶している。
復号部は、前記暗号化コンピュータプログラムを復号してコンピュータプログラムを生成する。
分配データ生成部は、生成された前記コンピュータプログラムを基にして、d個の前記分配データを生成する。
(4−2)分配データ生成部は、前記コンピュータプログラムを構成するデータを分割してd個の前記分配データを生成する。
(4−3)分配データ生成部は、前記コンピュータプログラムを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成する。ここで、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法である。
(5)次のように構成してもよい。
生成部310dは、記憶部及び復号部を含む。
復号部は、コンピュータプログラム110dを暗号化して生成した暗号化コンピュータプログラムを記憶している。
復号部は、前記暗号化コンピュータプログラムに、復号処理を施す過程において、d個の前記分配データを生成する。ここで、前記復号処理は、d個の復号サブ処理から構成され、d個の復号サブ処理を順次施すことにより、前記暗号化コンピュータプログラムの復号を行い、各復号サブ処理から出力される復号出力を前記分配データとする。
(6)次のように構成してもよい。
(6−1)選択部311dは、対応表(図示していない)を保持する。この対応表は、n個の前記検知モジュールのうち、d個の検知モジュールの組合せと、当該組合せを識別する識別情報とを対応付けて含む。前記組合せの選択に用いる選択情報を取得し、取得した選択情報に一致する識別情報に対応する組合せを前記対応表から取得し、取得し組合せに含まれる検知モジュールを選択する。
(6−2)選択部311dは、乱数を生成し、生成した乱数を前記選択情報とすることにより、前記選択情報を取得する。
(6−3)選択部311dは、分配部302dによりd個の前記分配データを分配するごとに、前記選択情報を新たに生成する。
(6−4)各検知モジュールは、乱数を生成し、他の全ての検知モジュールへ送信する。また、各検知モジュールは、受信した乱数及び自身が生成した乱数を用いて、選択情報を生成し、生成した前記選択情報を前記保護制御モジュールへ送信する。
選択部311dは、前記検知モジュールから前記選択情報を受信し、受信した前記選択情報を用いる。
(6−5)管理装置200dは、前記選択情報を生成し、生成した前記選択情報を保護制御モジュール120dへ送信する。
選択部311dは、管理装置200dから前記選択情報を受信し、受信した前記選択情報を用いる
(7)コンピュータプログラム110dは、保護制御モジュール120dの保護の対象であるアプリケーションプログラム、又は、保護制御モジュール120dの動作手順を示すプログラムであるとしてもよい。
(8)次のように構成してもよい。
(8−1)検知モジュール130d1は、受信部、検証部及び送信部を備える。他の検知モジュールも同様である。
検証部は、保護制御モジュール120dから1個の前記分配データを受信する。ここで、保護制御モジュール120dは、コンピュータプログラム110dを基にして、nより小さいd個の分配データを生成し、保護制御モジュール120dを監視するためのn個の検知モジュール130d1、130d2、・・・、130dnのうち、d個の検知モジュールを選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する。
検証部は、受信した前記分配データが正しいか否かを判断する。
送信部は、正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する。
受信部は、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取る。
検証部は、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断する。
送信部は、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する。
(8−2)検証部は、自身の監視結果及び受信した監視結果を用いて、自身を含め、d個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断する。d個の検知モジュールによりそれぞれ受信した分配データが正しいと決定された場合に、保護制御モジュール120dが改ざんされていないと決定する。d個の検知モジュールのうち、少なくとも1個の検知モジュールにより受信した分配データが正しくないと決定された場合に、保護制御モジュール120dが改ざんされていると決定する。
(8−3)保護制御モジュール120dは、コンピュータプログラム110dを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成する。ここで、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法である。
検証部は、(a)自身の監視結果及び受信した監視結果を用いて、自身を含め、少なくともk個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断する。(b)少なくともk個の検知モジュールによりそれぞれ受信した分配データが正しいと決定された場合に、前記保護制御モジュールが改ざんされていないと決定する。(c)(d−k+1)個以上の検知モジュールによりそれぞれ受信した分配データが正しくないと決定された場合に、前記保護制御モジュールが改ざんされていると決定する。
2.実施の形態2
本発明に係る別の実施の形態としての情報処理装置及び管理装置から構成される検知システム10について説明する。
2.1 検知システム10の構成
検知システム10は、図1に示すように、情報処理装置としての機器100及び管理装置200から構成されている。機器100及び管理装置200は、ネットワーク20を介して接続されている。
機器100は、ネットワーク20を介した様々なサービスをユーザに提供する情報処理装置である。例えば、機器100は、ネットワーク20を介して、コンテンツ配信サーバ(図示していない)にアクセスすることにより、音楽や映像などのコンテンツを購入して再生する。また、金融機関のシステム(図示していない)にアクセスすることにより、ネットバンキング(預金の残高照会や口座振り込みなど)を利用する。
(1)機器100の構成
機器100は、後述するように、プロセッサ、メモリ及びその他のユニットを備えたコンピュータシステムである。メモリ上に記憶されている制御用のコンピュータプログラムに従って、プロセッサが動作することにより、機器100は、その機能を達成する。
図1に示すように、機器100のメモリは、アプリケーションソフト(以下、「アプリ」という。)110、アプリ111、アプリ112、アプリ113、アプリ114、保護制御モジュール120、及び検知モジュール群130を記憶している。ここで、アプリ110、アプリ111、アプリ112、アプリ113、アプリ114、保護制御モジュール120及び検知モジュール群130内の各検知モジュールは、それぞれ、コンピュータプログラムである。これらのコンピュータプログラムは、それぞれの機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。アプリ110、アプリ111、アプリ112、アプリ113、アプリ114、保護制御モジュール120及び検知モジュール群130内の各検知モジュールに従って、プロセッサが動作する。こうして、アプリ110、アプリ111、アプリ112、アプリ113、アプリ114、保護制御モジュール120及び検知モジュール群130内の各検知モジュールは、その機能を達成する。
このように、保護制御モジュール120を記憶しているメモリ及びプロセッサは、一つの保護制御回路を構成している。
アプリ110、111、112、113、114は、それぞれ、ネットワークを介して、機器100を使用するユーザに、様々な機能を提供するためのソフトウェア、つまり、コンピュータプログラムである。例えば、アプリ110は、コンテンツ配信サーバ(不図示)から音楽コンテンツや映像コンテンツを購入するためのソフトウェアである。また、アプリ111は、その購入したコンテンツを再生するためのソフトウェアである。さらに、アプリ112は、金融機関のシステム(不図示)にアクセスし、残高確認や振り込みなどのネットバンキングを利用するためのソフトウェアである。
各アプリは、コンテンツ配信サーバや金融機関のシステムと認証を行うための認証鍵など、秘匿データを有している。秘匿データは、悪意のある第三者(以下、「攻撃者」という。)によりアプリから抜き取られ、不正に利用されないようにするために、保護される必要があるデータである。
保護制御モジュール120は、攻撃者により各アプリが解析され、認証鍵などの秘匿データが抜き取られないように各アプリを保護するための機能を制御するモジュールである。アプリを保護するための機能としては、復号ロード機能、改ざん検出機能、解析ツール検出機能などがある。復号ロード機能は、アプリを利用しないときには、当該アプリを暗号化して保存しておき、アプリを利用するときにのみ、暗号化アプリを復号してメモリへロードする機能である。また、改ざん検出機能は、アプリが改ざんされていないかをチェックする機能である。さらに、解析ツール検出機能は、デバッガなどの解析ツールが動作しないかをチェックする機能である。
保護制御モジュール120は、これらの機能の動作を制御し、各アプリが攻撃者によって解析されていないかなどをチェックする。攻撃者による攻撃を検出したときには、保護制御モジュール120は、攻撃が検出されたアプリの動作を停止する。次に、当該アプリが利用していたメモリ、特に秘匿データが記録されたメモリ領域のクリア(例えば、メモリ領域を「0」で埋める)などの処理を行う。こうして、秘匿データの漏洩を防止する。
検知モジュール群130は、n(nは、正整数)個の検知モジュールから構成される。一例として、検知モジュール群130は、図1に示すように、5つの検知モジュール131、検知モジュール132、検知モジュール133、検知モジュール134及び検知モジュール135から構成される。
ここで、検知モジュール131を記憶しているメモリ及びプロセッサは、一つの検知回路を構成している。また、検知モジュール132、検知モジュール133、検知モジュール134及び検知モジュール135の各検知モジュールについても、同様に、各検知モジュールを記憶しているメモリ及びプロセッサは、一つの検知回路を構成している。
検知モジュール131、132、133、134及び135は、保護制御モジュール120が改ざんされているか否かを検証するために、保護制御モジュール120による暗号化アプリの復号処理の結果が正しいか否かを判断する。
各検知モジュールは、保護制御モジュール120についての監視結果及び判断結果を、ネットワーク20を介して、管理装置200へ送信する。ここで、監視結果は、分割データが正しいか否かを示し、また、判断結果は、保護制御モジュール120が改ざんされているか否かを示す。
(2)管理装置200の構成
管理装置200は、検証基データを生成する。ここで、検証基データは、保護制御モジュール120が正しく動作しているか否かを検証するために必要なデータである。次に、生成した検証基データを機器100へ配布する。
管理装置200は、図1に示すように、判断部210、検証基データ配布部220及び通信部230から構成される。通信部230は、ネットワーク20を介して機器100と通信を行う。なお、機器100と管理装置200との間のネットワークを介した通信には、通信データが暗号化されるなど、セキュリティの確保された通信路を用いてもよい。
管理装置200は、具体的には、CPU、ROM、RAM、ハードディスクユニットなどを備えるコンピュータシステムである。CPUが、ROMまたはハードディスクユニットに記憶されているコンピュータプログラムに従って動作することにより、管理装置200は、上記の機能を発揮する。
判断部210は、機器100内部のソフトウェア(アプリ110から114、保護制御モジュール120、検知モジュール群130)の状態(つまり、各ソフトウェアが改ざんされているか否か等の状態)に応じて、機器100が実行すべき処理を決定し、検証基データ配布部220に各種指示を行う。詳細な構成は後述する。
検証基データ配布部220は、機器100内部のソフトウェア(保護制御モジュール120)が検知モジュールにより検知される際に、検知モジュールが検証に用いる検証基データを送信する。検証基データの詳細な構成は後述する。
通信部230は、機器100から受信した情報に応じて管理装置200内部の各部に機器100から受信した情報を出力する。また、管理装置200内部の各部からの指示や情報を機器100に送信する。具体的には、更新処理の際に、検証基データ配布部220からの指示や通知などを機器100に送信したり、機器100からの改ざん検出の監視結果などの情報を判断部210に出力したりする。
続いて、各モジュールの詳細を順に説明する。
(3)保護制御モジュール120の詳細な構成
図2は、保護制御モジュール120の機能構成を示す機能ブロック図である。
同図に示すように、保護制御モジュール120は、受信部301、送信部302、制御部303、復号ロード部304、改ざん検出部305、解析ツール検出部306、暗復号鍵保持部307、検証基データ保持部308、検証基データ生成部309、アプリ分割部310及び検知モジュール選択部311から構成される。
受信部301は、各検知モジュールから、各種依頼などを受信する。
送信部302は、各検知モジュールへ、各種依頼などを送信する。
制御部303は、復号ロード部304、改ざん検出部305及び解析ツール検出部306を制御し、各アプリが攻撃者により攻撃されている場合に、それを検出する。
復号ロード部304は、機器100内部に保持されている暗号化されたアプリ(110から114)を実行するときに、暗号化されたアプリ(110から114)を暗復号鍵を用いて復号し、得られたアプリ(110から114)をメモリ上にロードする処理を行う。また、アプリ(110から114)実行中に、他のアプリへのコンテキストスイッチ
(context switch) が発生したときに、暗復号鍵を用いてメモリ上のデータを暗号化し、再び元のアプリ(110から114)へコンテキストスイッチしたときに、暗号化したデータを復号する処理を行う。
なお、コンテキストスイッチとは、複数のプロセスが1つのCPUを共有できるように、CPUの状態(コンテキスト)を保存したり復元したりする過程のことである。
改ざん検出部305は、各アプリが改ざんされているかどうか改ざん検出処理を実行する。改ざん検出処理には、各アプリに付加されている改ざん検出用の証明書を用いる方法と、MAC値を比較する方法とがある。
なお、証明書に関しては非特許文献2に詳しく説明されている。
解析ツール検出部306は、デバッガなどの解析ツールがインストールされたり、動作したりしたときにそれを検出する。不正な攻撃者が各アプリを攻撃するために、解析ツールをインストールしたり、動作させることが想定されるからである。検出方法としては、例えば、ファイル名を検索する方法や、デバッガが使用する特殊なレジスタが使用されているかを調べる方法や、デバッガが設定する割り込みを検出する方法などを用いる。
暗復号鍵保持部307は、各アプリを暗復号するための暗復号鍵を保持する。
検証基データ保持部308は、管理装置200から受信した検証基データを保持する。検証基データの構成については、後述する。
検証基データ生成部309は、検証基データ保持部308に保持している検証基データから検証基データを生成する。
アプリ分割部310は、復号ロード部304で復号したアプリ(110から114)のデータ、つまり、それぞれのアプリのコンピュータプログラムを構成するデータを分割する。
検知モジュール選択部311は、検知処理時に検知を実行する検知モジュールを選択する。選択方法については、後述する。
(4)検知モジュールの詳細な構成
次に、検知モジュール131、132、133、134及び135の詳細について説明する。
図3は、検知モジュール131の機能的な構成を示す機能ブロック図である。検知モジュール132、133、134及び135も、検知モジュール131と同様の構成を有しており、これらについての説明を省略する。
同図に示すように、検知モジュール131は、受信部401、送信部402、制御部403、検証部404及び検証基データ保持部405から構成される。
受信部401は、管理装置200から、各種指示を受信する。また、他のモジュールへ依頼した処理の結果や、他の検知モジュールから保護制御モジュール120に対する監視結果を受信する。
送信部402は、管理装置200、保護制御モジュール120及び他の検知モジュールへ、各種処理結果などのデータを送信する。
制御部403は、受信部401が受信した各種指示や通知に基づいて、検証部404を制御し、保護制御モジュール120の検証処理を行う。
検証部404は、保護制御モジュール120が正常に動作しているか検証を行う。検証方法としては、保護制御モジュール120に対する検知では、検証基データ保持部405に保持している検証基データを用いて、保護制御モジュール120が正常に動作しているかを検証する。
検証基データ保持部405は、保護制御モジュール120の復号ロード部304が正常に動作するか否かを検証するための検証基データを保持する。検証基データは、保護制御モジュール120から与えられたものである。
(5)判断部210の詳細な構成
図4は、判断部210の機能構成を示す機能ブロック図である。同図に示すように、判断部210は、受信部501、送信部502、指示生成部503及びモジュール選択部504から構成される。
受信部501は、各検知モジュールから、監視結果や各種依頼などを受信し、指示生成部503へ送信する。さらに、検証基データ配布部220から処理が完了した通知を受信し、指示生成部503に送信する。
送信部502は、指示生成部503で生成された指示を管理装置200内の検証基データ配布部220へ送信する。
指示生成部503は、保護制御モジュール120から検証基データの送付の依頼を受け取った場合には、送付の依頼に基づいて検証基データ配布部220に対して検証基データを配布する旨の指示を生成し、生成した指示を送信部502へ出力する。また、保護制御モジュール120の検知処理の実行時に、検知を実行する検知モジュールを選択するように、モジュール選択部504に対する検知モジュールの選択の指示を生成し、生成した指示をモジュール選択部504へ出力する。
指示生成部503から検知モジュールの選択の指示を受け取ると、モジュール選択部504は、保護制御モジュール120の検知処理の実行時に、どの検知モジュールが検知を実行するかを決定する。モジュール選択部504は、機器100が保持するn個の検知モジュールから構成される検知モジュール群130から、d(dは、nより小さい正の整数)個の検知モジュールを選択する。選択対象の検知モジュールを決定するために、検知モジュール131から開始して、検知モジュール132、133、134、135のように、順番に検知モジュールを選択する方法を用いてもよいし、複数の検知モジュールからランダムに1個又は複数個の検知モジュールを選択する方法を用いてもよい。次に、モジュール選択部504は、選択した検知モジュールを識別する検知モジュール識別子を、指示生成部503及び送信部502、通信部230及びネットワーク20を介して、機器100へ送信する。
(6)検証基データ配布部220の詳細な構成
図5は、検証基データ配布部220の機能構成を示す機能ブロック図である。
同図に示すように、検証基データ配布部220は、受信部601、送信部602、制御部603、認証部604、証明書生成部605、署名秘密鍵保持部606、暗号鍵保持部607、データ分割部608、アプリ保持部609、検証基データ生成部610、保護制御モジュール保持部611及び検知モジュール保持部612から構成される。
署名秘密鍵保持部606は、証明書生成部605により証明書を生成するときに利用する管理装置200の署名秘密鍵(署名私有鍵)を保持している。
暗号鍵保持部607は、保護制御モジュール120と共有している暗復号鍵を保持している。
アプリ保持部609は、機器100にインストールされるアプリ110、111、112、113、114のデータ、つまり、それぞれのアプリを構成するコンピュータプログラムを記憶している。
保護制御モジュール保持部611は、機器100にインストールされる保護制御モジュール120を構成するコンピュータプログラムを保持している。
検知モジュール保持部612は、機器100にインストールされる検知モジュールを構成するコンピュータプログラムを保持する。
これらのコンピュータプログラムは、それぞれ、それぞれの機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
受信部601は、各検知モジュールから保護制御モジュール120に対する監視結果を受信する。
送信部602は、機器100内部の各アプリ及び保護制御モジュール120の改ざん検証の依頼や検証に必要な検証基データなどを送信する。
制御部603は、検証基データ配布部220の各構成要素を制御する。
認証部604は、各検知モジュールや保護制御モジュール120と相互認証を行う。
証明書生成部605は、アプリ保持部609に保持するアプリのデータに対し、データ分割部608を用いて分割し、保護制御モジュール保持部611に保持されている保護制御モジュール120を構成するコンピュータプログラムに含まれている復号ロード部304を用いてアプリを暗号化して暗号化アプリを求め、暗号化アプリと分割データから検証値を生成する。さらに、管理装置200の署名秘密鍵(署名私有鍵)を用いて署名データを生成し、生成した署名データを含む証明書を生成する。
なお、署名方式に関しては非特許文献1の171ページから187ページに詳しく説明されている。
データ分割部608は、アプリ保持部609に記憶されているアプリ110、111、112、113、114のデータをそれぞれ分割して複数個の分割データを生成する。
検証基データ生成部610は、アプリ保持部609に記憶されている各アプリのデータと、データ分割部608により生成された複数の分割データとから、検証基データを生成する。検証基データ生成部610は、生成した検証基データを機器100へ送信する。検証基データの構成については後述する。
(7)機器100のハードウェア構成
続いて、図6を用いて、機器100のハードウェア構成について説明する。
同図に示すように、機器100は、CPU(Central Processing Unit)171、例えば不揮発メモリであるEEPROM(Electrically Erasable and Programmable Read
Only Memory)172、RAM(Random Access Memory)173、及びNIC(Network Interface Card)174等を含んで構成され、これらはバス175を介して相互に通信可能に接続されている。
EEPROM172には、保護制御モジュール120を含む制御用の各種モジュール、検知モジュール131、132、133、134、135及びアプリ110、111、112、113、114などが格納されている。
EEPROM172に格納されている保護制御モジュール120を含む制御用の各種モジュールをCPU171が実行することにより、制御用の各種モジュールの各機能部の制御が実現される。各機能部は、具体的には、コンピュータプログラムによって記述され実現される。
RAM173は、CPU171のワークエリアとして用いられる。RAM173には各検知モジュール及び各アプリがロードされる。RAM173に格納された各検知モジュール及び各アプリをCPU171が実行することにより、検知モジュール及び各アプリの機能が実現される。
NIC174は、ネットワークに接続するための拡張カードである。
(8)ソフトウェア階層
続いて、図7を用いて、機器100において動作するソフトウェア(コンピュータプログラム)のソフトウェア階層の構造について、説明する。
機器100においては、コンピュータプログラムとして、ブートローダ190、保護制御モジュール120、OS180及びアプリ110、111、112、113、114が動作する。ブートローダ190、保護制御モジュール120、OS180及びアプリ110、111、112、113、114は、階層的に構成されている。
図7に示すように、ブートローダ190及び保護制御モジュール120が最下位層に位置している。その上に、OS180が位置し、OS180の上に、アプリ110、111、112、113、114が位置している。
同図に示すように、検知モジュール群130は、OS180の中に組み込まれている。各アプリはOS180の配下で動作し、保護制御モジュール120は、ブートローダ190等とともにOS180の管理外にある。
機器100の起動の際には、最初に、ブートローダ190が起動され、次に、保護制御モジュール120及びOS180が起動される。OS180の起動中において、検知モジュール群130が起動される。次に、アプリ110、111、112、113、114が起動され、各アプリが実行される。
2.2 検知システム10の動作概略
(1)全体の動作概要
検知システム10の動作を、図8に示すフローチャートを用いて説明する。初めに、検知システム10の大まかな処理を説明する。大まかな処理として、以下の2つの処理がある。
1つ目の処理は、ソフトウェア(保護制御モジュール120)を検証するために必要となる検証基データなどを埋め込む処理(初期設定処理)である。
2つ目の処理は、機器100内部のソフトウェア(保護制御モジュール120)が改ざんされていないかを検知する処理(検知処理)である。
上記2つの処理の関係は、図8に示す通りである。
検知システム10では、機器100が工場で製造される際に初期設定処理が行われ、保護制御モジュール120内へ検証基データが埋め込まれる(ステップS100)。その後、機器100が工場から出荷され、ユーザの利用に供される。
ユーザにより機器100が利用される際には、機器100内部では、保護制御モジュール120が各アプリを攻撃者による攻撃から保護する。これと同時に、各検知モジュールは、保護制御モジュール120が攻撃されていないかをチェックする検知処理を行う(ステップS200)。
検知処理を行った結果、各検知モジュールによる保護制御モジュール120に対する監視結果を管理装置200へ通知する。また、保護制御モジュール120が改ざんされたと判明した場合には、改ざんされた旨を機器100が有する表示部に表示する。
続いて、上記2つの処理について、その詳細を順に説明する。
(2)初期設定処理の動作
まず、初期設定処理について説明する。
図9は、初期設定処理の検知システム10の動作の流れを示すシーケンス図である。本シーケンス図において、検知モジュール131、132、133、134及び135の各々が個別に行う処理を、検知モジュール群130が行う処理としてまとめて記載している。
保護制御モジュール120は、管理装置200の保護制御モジュール保持部611に保持されており、検知モジュール131、132、133、134及び135は、管理装置200の検知モジュール保持部612に保持されており、アプリ110、111、112、113及び114は、アプリ保持部609に保持されている。
工場における機器100の製造時に、管理装置200は、機器100に対して保護制御モジュール120、検知モジュール131、132、133、134及び135、並びに、アプリ110、111、112、113及び114を送信し、機器100は、保護制御モジュール120、検知モジュール131、132、133、134及び135、並びに、アプリ110、111、112、113及び114を受信する(ステップS1001)。機器100は、機器100のEEPROM172へ受信した各アプリ、保護制御モジュール120、各検知モジュールをインストール(書き込み)する(ステップS1002)。これらの各アプリには、ソフトウェアが改ざんされているかどうかを検証するための証明書(改ざん検出用証明書)が付加されている。上記ソフトウェア以外にも、機器100の動作に必要なソフトウェアがインストールされる。
ソフトウェアのインストール(ステップS1002)が終わると、機器100は、機器100の初期設定を行うソフトウェアや、正常に動作するかをテストするためのソフトウェアなどを実行することにより、初期化処理を行い(ステップS1003)、保護制御モジュール120に対して初期化指示を出力する(ステップS1004)。
初期設定処理では、保護制御モジュール120の初期化処理が行われる。
初期化指示を受け取ると(ステップS1004)、保護制御モジュール120は、管理装置200へ検証基データの送付を依頼する(ステップS1005)。管理装置200は、保護制御モジュール120から依頼を受信すると(ステップS1005)、検証基データの生成処理を実行する(ステップS1006)。検証基データの生成処理が完了すると、管理装置200は、生成した検証基データを保護制御モジュール120へ送信する(ステップS1007)。保護制御モジュール120は、管理装置200から検証基データを受信し(ステップS1007)、受信した検証基データを検証基データ保持部308へ記憶する(ステップS1008)。
(3)検証基データの生成処理の動作
ここでは、図9のステップS1006に示す検証基データの生成処理の詳細について、図10に示すフローチャートを用いて説明する。
管理装置200の検証基データ生成部610は、アプリ保持部609に保持されている複数のアプリを読み出し、暗号鍵保持部607から暗復号鍵を読み出し、読み出した複数のアプリのそれぞれを、読み出した暗復号鍵を用いて、暗号化アルゴリズムにより暗号化して複数の暗号化アプリを生成する(ステップS1101)。ここで用いる暗号化アルゴリズムの一例は、AES(Advanced Encryption Standard)である。
次に、データ分割部608は、アプリ保持部609に保持されている複数のアプリを読み出し、読み出した複数のアプリのそれぞれを分割して、複数の分割データを生成する(ステップS1102)。ここにおけるアプリの分割方法としては、メモリ上にロードされるアプリのデータを一定サイズで分割してもよい。また、アプリのデータに対し法を取ったりしてもよい。例えば、1つのアプリのデータに対し、3つの法の値、例えば、
「7」、「11」、「17」で法を取ることで、1つのアプリのデータから3つの分割データを生成するとしてもよい。
図11はアプリのデータを分割する動作概要図である。この図に一例として示すように、データ分割部608は、アプリ110のデータを分割して、3個の分割データ1(110a)、分割データ2(110b)及び分割データ3(110c)を生成する。さらに具体的に説明すると、データ分割部608は、アプリ110、111、112、113及び114をそれぞれ3分割し、各アプリについて、3個の分割データ1、分割データ2及び分割データ3を生成する。
なお、アプリのデータを分割する方法として、中国人剰余定理を用いてアプリのデータが復元できるように、分割するとしてもよい。中国人剰余定理は非特許文献1の15ページに記載されている。例えば、1つのアプリのデータが、10進数による表現により、「1200」であるとしたとき、このアプリのデータについて、3つの法の値、例えば、「7」、「11」、「17」で法を取ったとする。このとき、7×11×17=1309であり、アプリのデータが「1309」より小さいため、中国人剰余定理からアプリの「7」、「11」、「17」で法を取った値から、アプリのデータ1200を一意に求めることができる。なお、ここでは、1つのアプリのデータが、10進数による表現により、「1200」であるとしているが、これは、説明を簡略化するためであり、実際のアプリのデータが10進数による表現により「1200」であることはなく、アプリは、通常、もっと大きいサイズのコンピュータプログラムであることは言うまでもない。
ここでは、図11に示すように、アプリのデータを3分割した例を用いて説明する。データ分割部608は、複数のアプリ110、111、112、113及び114のデータをそれぞれ分割して分割データ1、分割データ2、分割データ3を生成する。一例として、図11に示すように、データ分割部608は、アプリ110を分割して分割データ1(110a)、分割データ2(110b)、分割データ3(110c)を生成する。
データ分割部608による分割の終了後、証明書生成部605は、すべての分割データのそれぞれについて、つまり、分割データ毎に、暗号化したアプリと分割データの関係を示す検証値及び証明書(復号処理証明書)を生成する(ステップS1103)。
次に、検証基データ生成部610は、すべての分割データのそれぞれについて、分割識別情報、判定情報、複数の検証値組及び証明書(復号処理証明書)を含む検証基データを生成する(ステップS1104)。なお、分割識別情報及び判定情報については、後述する。
(検証基データのデータ構成)
検証基データのデータ構成の一例を図12から図14を用いて説明する。
図12から図14にそれぞれ示す検証基データ630、650及び670は、一例として、複数のアプリ110、111、112、113及び114のそれぞれを3分割した場合におけるものである。
図12に示す検証基データ630は、複数のアプリ110、111、112、113及び114それぞれから生成された分割データ1について生成されたものである。また、図13に示す検証基データ650は、複数のアプリ110、111、112、113及び114それぞれから生成された分割データ2について生成されたものである。さらに、図14に示す検証基データ670は、複数のアプリ110、111、112、113及び114それぞれから生成された分割データ3について生成されたものである。
検証基データ630、650及び670は、図12から図14に示すように、それぞれ、分割識別情報、判定情報、複数の検証値組及び証明書から構成される。
図12に示す検証基データ630は、一例として、分割識別情報631、判定情報632、検証値組633a、633b、633c、633d、633e及び証明書634から構成されている。
分割識別情報は、検証基データがアプリのどの分割データに対応するかを示す識別子である。言い換えると、検証基データが、アプリのデータを分割した際の、全ての分割データのうちのどの分割データに対応するかを示す情報である。
一例として、分割識別情報は、分割数と分割データを識別する情報とを含む。
例えば、アプリのデータを一定のサイズで分割する場合、例えば、アプリが3分割されたとき、分割データをそれぞれ、(3,1)、(3,2)及び(3,3)により示すことにする。ここで、(a,b)は、アプリをa個に分割したときの、b番目の分割データを示すものとする。この場合に、図12に示す分割識別情報631は、一例として、(3,1)であり、図12に示す検証基データ630は、3分割された各アプリの1番目の分割データに対応している。また、図13に示す分割識別情報651は、一例として、(3,2)であり、図13に示す検証基データ650は、3分割された各アプリの2番目の分割データに対応している。さらに、図14に示す分割識別情報671は、一例として、(3,3)であり、図14に示す検証基データ670は、3分割された各アプリの3番目の分割データに対応している。
また、アプリのデータについて、複数の法を取ることにより分割データを生成する場合、例えば、アプリのデータについて法「7」、「11」、「17」を取ることによりアプリのデータを分割する場合に、分割識別情報は、分割数と法の値とを含むことにより、検証基データがアプリのどの分割データに対応するかを示す識別子であるとしてもよい。この場合に、図12に示す分割識別情報631は、一例として、(3,7)となり、分割識別情報(3,7)は、分割数が「3」であり、複数のアプリのデータに対し法「7」を取ったことを示す。また、図13に示す分割識別情報651は、一例として、(3,11)となり、分割識別情報(3,11)は、分割数が「3」であり、アプリのデータに対し法「11」を取ったことを示す。さらに、図14に示す分割識別情報671は、一例として、(3,17)となり、分割識別情報(3,17)は、分割数が「3」であり、アプリのデータに対し法「17」を取ったことを示す。ここで、分割識別情報(a,b)は、アプリをa個に分割したとき、法「b」を用いることを示す。
ここで、分割識別情報には、分割数も含めているが、これに限定するものではなく分割したうちの何番目の分割データであるかを示した情報だけでもよいし、単に他の分割識別情報と区別できる情報であればよい。また、アプリのデータを一定サイズに分割することに限らず、それぞれの分割データのサイズは異なってもよいし、アプリのデータの一部を集めて分割データとしてもよい。
判定情報は、分割データのすべてが検証されたかを判定するための情報である。
判定情報は、一例として、分割数を含む。判定情報により示される個数分の異なる分割データの検証を行えば、全ての分割データが検証される。例えば、アプリのデータを一定のサイズで3分割する場合、判定情報には、分割数「3」と同じ値「3」が記載される。この場合には、3個の分割データの検証を行えば、全ての分割データが検証されたこととなる。
一例として、図12に示す判定情報632、図13に示す判定情報652及び図14に示す判定情報672は、それぞれ、「3」である。従って、この場合には、3個の分割データの検証を行えば、全ての分割データが検証されたこととなる。
また、アプリのデータについて、複数の法を取ることにより分割データを生成する場合には、判定情報は、複数の法を掛け合わせた値であるとしてもよい。例えば、アプリのデータについて、「7」、「11」、「17」のそれぞれで法を取る場合、判定情報には、「1309」と記載される。ここで、「1309」は、「7」、「11」、「17」を掛け合わせた値である。これにより中国人剰余定理が成り立っていることを判定できる。また、中国人剰余定理が成り立つように分割すればよいので、復号が公開鍵暗号のRSA暗号の場合、判定情報は、RSA暗号の公開鍵であるn(=p×q)(p、qは素数)の値より大きい値であればよいし、復号が共通鍵暗号のAES暗号の場合、判定情報は、128ビットより大きい値であればよい。RSA暗号に関しては非特許文献1の110ページから113ページに記載されている。
また、判定情報は、検証基データに記載されているとしているが、これに限ることなく、予め各検知モジュールが保持するとしてもよいし、検知モジュールのいずれかが保持しており、他の検知モジュールに送信するとしてもよい。
検証値組の数は、アプリの数と同一である。例えば、検証基データ630に含まれている複数の検証値組は、それぞれ、アプリ110、111、112、113及び114に対応している。各検証値組は、アプリ識別情報、データ及び検証値を含む。
アプリ識別情報は、対応するアプリを識別する識別子である。
データは、対応するアプリの暗号化されたアプリである。
検証値は、対応するアプリの分割データを検証するための値である。検証値は、対応する暗号化されたアプリのデータと生成した分割データとを結合して得られた結合体に、ハッシュ関数による演算を施して得たハッシュ値である。
(検証値)=Hash(暗号化アプリのデータ||分割データ)
ここで、Hash(a)は、aに対してハッシュ関数による演算を施して得られたハッシュ値を示し、X||Yは、X及びYをこの順序で結合することを示す。
なお、検証値としてハッシュ関数による演算を施して得られたハッシュ値を使用しているが、これに限定するものではない。次のように、署名などを用いるとしてもよい。
(検証値)=Sign(署名私有鍵、暗号化アプリのデータ||分割データ)
ここで、Sign(a、b)は、鍵aを用いてbに対して生成した署名データを示す。
また、ハッシュ値を計算する対象データは暗号化データと分割データとの結合体だけでなく、アプリを識別するアプリ識別情報やアプリの内容を示す情報(DVDやBDの再生アプリ、ネットバンキングのアプリなど)を含んでもよい。また、保護制御モジュール120の識別情報を含んでもよい。
証明書は、復号処理証明書である。証明書は、検証基データに含まれる全ての検証値を結合して結合体を生成し、生成した結合体にハッシュ関数による演算を施してハッシュ値を計算し、計算したハッシュ値に対して、署名秘密鍵保持部606の署名秘密鍵を用いて生成した署名データである。
(証明書)=Sign(署名秘密鍵、Hash(検証値||検証値||・・・||検証値))
図12に示す検証基データ630の場合において、証明書634は、次のようにして算出される。
(証明書634)=Sign(署名秘密鍵、Hash(検証値A||検証値B||検証値C||検証値D||検証値E))
図13に示す検証基データ650及び図14に示す検証基データ670の場合においても、各証明書は、上記と同様にして算出される。
(4)検知処理の動作
ここでは、図8のステップS200に示す検知処理について、図15及び図16を用いて、説明する。図15及び図16は、検知処理を示すシーケンス図である。
機器100は、図8のステップS100に示す初期設定処理を終えると工場から出荷され、ユーザの元へ送られる。ユーザが機器100を使用し、各アプリを利用しているときには、機器100内部では、保護制御モジュール120が復号ロード機能、改ざん検出機能、解析ツール検出機能などの機能を制御し、各アプリを攻撃者による攻撃から保護する。ここでは、アプリ110の実行時に保護制御モジュール120の検証を行う場合を例に説明する。他のアプリ111、112、113、114の実行時に検証を行う場合も同様の動作であり、説明を省略する。
保護制御モジュール120は、OS180からアプリ110を実行するコマンドを受信する(ステップS2000)。このコマンドを受信すると、復号ロード部304は、暗号化されたアプリ110を復号する(ステップS2001)。次に、アプリ分割部310は、復号して生成されたアプリ110を、検証基データ保持部308に保持している検証基データのそれぞれの分割識別情報に基づいて分割する(ステップS2002)。分割識別情報に、3分割することが記載されていれば、アプリを3分割する。以下、アプリを3分割する場合について説明する。
保護制御モジュール120の検知モジュール選択部311は、アプリ識別情報、分割データ及び検証基データの分配先の検知モジュールを選択する(ステップS2003)。ここで、アプリ識別情報は、保護制御モジュール120がOS180から受信したコマンドによる実行の対象であるアプリを識別する識別情報である。分割データは、アプリ分割部310による分割により生成された分割データである。また、検証基データは、検証基データ保持部308に保持されている検証基データのうち、生成された分割データに対応するものである。検証基データについては、図12から図14に一例を示している。
(4−1)検知モジュールの選択方法
図17を用いて、検知モジュール選択部311による検知モジュールの選択方法を説明する。
検知モジュール選択部311は、図17に示す対応表330を保持している。
検知モジュール選択部311は、検知モジュール選択部311が保持する対応表330を用いて、検知モジュール131、132、133、134、135のうち、どの検知モジュールに分配するかを決定することにより、検知モジュールの選択を行う。
検知モジュール選択部311が保持する対応表330には、検知モジュール131、132、133、134、135のうち、どの3つの検知モジュールを選択するかのすべての組合せのパターンが、Indexに対応付けて、記述されている。
図17に示す対応表330は、Indexと、検知モジュール識別子の組合せとの組を複数個含んでいる。Indexは、対応する組合せを識別する識別子である。例えば、対応表330は、Index331a「1」に対応して、検知モジュール131、132、133をそれぞれ識別する識別子「131」、「132」、「133」の組合せ332aを含み、Index331b「2」に対応して、検知モジュール131、132、134をそれぞれ識別する識別子「131」、「132」、「134」の組合せ332bを含み、Index331c「3」に対応して、検知モジュール131、132、135をそれぞれ識別する識別子「131」、「132」、「135」の組合せ332cを含む。
ここで、各Indexは、正の整数であり、Index331a、331b、331c、・・・、は、「1」、「2」、「3」、・・・、「10」である。これらの値は、「1」を初期値とし、その値に順に「1」を加算して得られたものである。
検知モジュール選択部311は、乱数を生成し、生成した乱数を検知モジュールを選択するための選択情報とする。この乱数は、「1」から、対応表330に含まれる組の数までの整数の範囲からランダムに選択される。
検知モジュール選択部311は、対応表330から、選択情報と同じ値を有するIndexを決定し、対応表330から、決定したIndexに対応する組合せを選択することにより、検知モジュールを選択する。例えば、検知モジュール選択部311は、選択情報が「1」である場合、対応表330から、Index331a「1」に対応する組合せ332aを選択する。組合せ332aは、識別子「131」、「132」及び「133」を含んでいるので、検知モジュール131、132、133が選択されたこととなる。
以下、検知モジュール131、132、133の組合せを選択したものとして説明する。
図15へ戻り、検知処理の説明を続行する。
保護制御モジュール120は、アプリ識別情報と、分割データと、分割データに対応する検証基データとを、選択した検知モジュールへ分配する。ここでは、一例として、検知モジュール131へアプリ識別情報「110」、アプリの分割データの1番目の情報(分割データ1(110a))、検証基データ630を送信し(ステップS2004)、検知モジュール132へアプリ識別情報「110」、アプリの分割データの2番目の情報(分割データ2(110b))、検証基データ650を送信し(ステップS2005)、検知モジュール133へアプリ識別情報、アプリの分割データの3番目の情報(分割データ3(110c))、検証基データ670を送信するものとする(ステップS2006)。
各検知モジュールは、保護制御モジュール120のアプリの復号処理の入力データ(つまり、暗号化アプリ)と分割データの対応が正しいか否かを受信した検証基データを用いて検証する(ステップS2007)。具体的に、各検知モジュールは、検証基データ内のアプリ識別情報に対応する暗号化アプリのデータと、受信したアプリの分割データから検証値を生成する。そして、生成した検証値と受信した検証基データ内の検証値と比較し、両者が一致するか判断する。さらに、検証基データ内の証明書(復号処理証明書)の署名検証を行う。
検証基データ内の証明書(復号処理証明書)の署名検証は、次のようにして行う。
Verify(署名公開鍵、証明書634、Hash(検証値A||検証値B||検証値C||検証値D||検証値E))
ここでは、一例として、図12に示す検証基データ630を用いる場合を示している。署名公開鍵は、管理装置200の公開鍵であり、証明書634、検証値A、検証値B、検証値C、検証値D及び検証値Eは、当該検知モジュールが受信した検証基データ630内に含まれているものである。また、Verify(a、b、c)は、公開鍵aを用いて、データcに対して、証明書bが正しいか否かを検証し、その検証結果を示す。検証結果は、検証が成功したか失敗したかを示す。
各検知モジュールは、検証値が一致しない、又は、検証に失敗した場合には、保護制御モジュール120が改ざんされていると判定し(ステップS2008でY)、管理装置200の判断部210へ、分割データが改ざんされていることを示す監視結果を送信する(ステップS2009)。各検知モジュールは、検証値が一致し、かつ、検証に成功した場合には、保護制御モジュール120が改ざんされていないと判定し(ステップS2008でN)、分割データが改ざんされていないことを示す監視結果とともに、検証基データ内の分割識別情報を他の検知モジュールへ送信する(ステップS2010)。そして、各検知モジュールは、保護制御モジュール120から送信されたすべての分割データが正しいと検証されたか否かを確認する(ステップS2011)。
以下、具体的に説明する。
検知モジュール131は、分割識別情報631「(3、1)」を検知モジュール132及び検知モジュール133へ送信する。分割識別情報631「(3、1)」は、分割数が3であり、分割データがそのうちの1番目のデータであることを示した情報である。
検知モジュール131は、検知モジュール132から分割識別情報651「(3、
2)」を受信し、検知モジュール133から分割識別情報671「(3、3)」を受信する。ここで、分割識別情報651「(3、2)」は、分割数が3であり、分割データがそのうちの2番目のデータであることを示した情報であり、分割識別情報671「(3、3)」は、分割数が3であり、分割データがそのうちの3番目のデータであることを示した情報である。検知モジュール131は、検証基データ630に含まれる判定情報632を参照することにより、アプリのデータが3分割されていることがわかる。また、検知モジュール131は、受信した分割識別情報651及び分割識別情報671の内容を確認することにより、2番目のデータと3番目のデータがそれぞれ検知モジュール132及び133により検証されたことを知ることができる。
よって、各検知モジュールは、保護制御モジュール120から送信されたすべての分割データがいずれかの検知モジュールにより検証されたことを確認することができる。
すべての分割データが正しいと検証されていない場合、又は、すべての分割データが1つの検知モジュールに送信されていた場合には、保護制御モジュール120が不正な動作を行ったとし、保護制御モジュール120が改ざんされていると判定し(ステップS2011でY)、判断部210へ、保護制御モジュール120が改ざんされていることを示す判断結果を送信する(ステップS2012)。
保護制御モジュール120が改ざんされていない判定する場合(ステップS2011でN)、処理を終了する。この場合に、判断部210へ、保護制御モジュール120が改ざんされていないことを示す判断結果を送信してもよい。
(5)検証基データの更新処理の動作
検知システム10では、機器100に新たなアプリを追加してインストールする場合、保護制御モジュール120内の検証基データを更新する必要がある。保護制御モジュール120は、アプリが追加された場合、管理装置200に検証基データの生成を依頼し、管理装置200が生成した新しい検証基データを受信して保持する。
ここでは、図18に示すシーケンス図を用いて、機器100に新たなアプリ(「アプリ115」と記載する。)を追加してインストール場合を具体例として用い、検証基データの更新処理の動作について説明する。
機器100に新たなアプリ115がダウンロードされると、保護制御モジュール120は、OS180からアプリ115を受信する(ステップS3001)。保護制御モジュール120は、暗復号鍵保持部307に保持されている暗復号鍵を用いてアプリ115を暗号化する(ステップS3002)。そして、保護制御モジュール120は、アプリ115を識別するアプリ識別情報と暗号化されたアプリ115と検証基データの送付依頼とを管理装置200へ送信する(ステップS3003)。
管理装置200は、アプリ識別情報と暗号化されたアプリ115と検証基データの送付依頼とを受信し(ステップS3003)、受信した暗号化されたアプリ115を保護制御モジュール保持部611で保持している保護制御モジュール120の暗復号鍵で復号する。そして、上述したように、復号したアプリ115を含む新たな検証基データを生成する(ステップS3004)。管理装置200は、新たな検証基データを保護制御モジュール120へ送信する(ステップS3005)。保護制御モジュール120は、新たな検証基データを受信し、受信した検証基データを検証基データ保持部308に記憶する(ステップS3006)。
2.3 検知システム10の効果
検知システム10では、保護制御モジュール120による暗号化アプリの復号処理を検証するので、保護制御モジュール120が保持する暗復号鍵を用いることなく、保護制御モジュールが改ざんされているか否かを判定することができる。
また、各検知モジュールは、分割データを検証するので、各検知モジュールがアプリのすべてのデータを知ることなく検証することができる。
これにより、検知モジュールが改ざんされ不正動作をしたとしても、保護制御モジュール120の情報やアプリの情報が漏洩することがないので、システムの安全性を高めることができる。
また、本発明によれば、検知モジュール群130に含まれる全ての検知モジュールを選択するのではなく、保護制御モジュール120は、検知モジュール群130の中から、選択した検知モジュールに、検知処理を実行させるので、保護制御モジュール120が選択をしなかった検知モジュールが不正動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュール120に対する検知処理には影響せず、保護制御モジュールが改ざんされているかを検証することができる。
3.実施の形態3
本発明に係る別の実施の形態としての検知システム10a(図示していない)について説明する。
検知システム10aは、実施の形態2の検知システム10と同様の構成を有している。ここでは、検知システム10との相違点を中心として説明する。
3.1 概要
検知システム10では、保護制御モジュールによる検知動作の実行の指示先のd個の検知モジュールのうち1つでも攻撃されると、保護制御モジュールが改ざんされているかを検証することができない。
これに対して、検知システム10aでは、検知システム10における分割データの生成に代えて、閾値秘密分散法(Threshold Secret Sharing Scheme)を用いて複数の分散データを生成し、生成した分散データの分配先であるいくつかの検知モジュールが攻撃されたとしても、d個の検知モジュールのうち、k(kは、正の整数であり、dより小さい。)個の検知モジュールが改ざんされていなければ、保護制御モジュールが改ざんされているかを検証できる。ここで、dを検知動作数と呼び、kを検知閾値と呼ぶ。
ここで用いる閾値秘密分散法は、次の通りである。
管理装置200のデータ分割部608は、ランダムに整数a1 、a2 、・・・、ak-1 を選択する。整数a1 、a2 、・・・、ak-1 をパラメタと呼び、パラメタ(a1 、a2 、・・・、ak-1 )と表す。また、素数rを選択する。
こうして、データ分割部608は、図23の式1に示すように、(k−1)次多項式を設定する。式1において、sは、定数項であり、sは、各アプリのデータである。整数a1 、a2 、・・・、ak-1 は、それぞれ、次数が1以上の項の係数である。
また、データ分割部608は、r|p−1となるように、素数pを選択し、乗法群Zp*での位数がrとなる要素gを定める。
次に、図20に示す式3により、c0 、c1 、・・・、ck-1 を計算する。
p、g、c0 、c1 、・・・、ck-1 を検証値(p、g、c0 、c1 、・・・、ck-1 )と表す。
管理装置200は、検証値(p、g、c0 、c1 、・・・、ck-1 )を保護制御モジュール120へ出力する。
保護制御モジュール120のアプリ分割部310は、図23の式1に示す(k−1)次多項式を用いて、式2に示すように、アプリ毎に、分散データwj =f(j)(j=1、2、・・・、d)を生成する。保護制御モジュール120は、選択したd個の検知モジュールに、それぞれ、分散データwj =f(j)(j=1、2、・・・、d)を送信する。また、d個の検知モジュールに、それぞれ、検証値(p、g、c0 、c1 、・・・、ck-1 )を送信する。
各検知モジュールは、図23に示す式4が成立するか否かを判断することにより、送信された分散データwj が正しいか否かを検証する。式4が成立する場合には、分散データwj が正しく生成されたと判断する。式4が成立しない場合には、分散データwj が正しく生成されていないと判断する。
また、検知モジュールは、他の検知モジュールから検証結果を受け取り、受け取った検証結果及び自身の検証結果により、k個以上の検知モジュールにおいて、式4による検証が成功したことを示す場合に、保護制御モジュール120は、改ざんされていないと決定する。一方、k個未満の検知モジュールにおいて、式4による検証が成功したことを示す場合に、保護制御モジュール120は、改ざんされていないと決定しない。
この秘密分散法は、検証可能閾値秘密分散法(verifiable secret sharing scheme)とも呼ばれ、dより小さいk個以上のどの分散データを用いても、元のデータ(ここでは、コンピュータプログラム)を復元することができるように、元のデータを分散する秘密分散法である
なお、秘密分散法及び閾値秘密分散法については、非特許文献1の209ページから219ページに詳しく説明されているので、ここでの説明は省略する。
3.2 動作
(1)初期設定処理の動作
初期設定処理について説明する。検知システム10aの初期設定処理は、図9に示す検知システム10の初期設定処理と類似している。なお、ここでは、検知システム10の初期設定処理との相違点を中心として、図19に示すシーケンス図を用いて説明する。
図19に示すシーケンス図におけるステップS1001〜S1005は、それぞれ、図9における対応するステップと同じであるので、説明を省略する。
ステップS1005の次に、管理装置200は、検証基データの生成処理を実行する(ステップS1006a)。検証基データの生成処理の詳細については、後述する。検証基データの生成処理が完了すると、管理装置200は、生成した検証基データ、パラメタ(a1 、a2 、・・・、ak-1 )及び素数rを保護制御モジュール120へ送信する(ステップS1007a)。保護制御モジュール120は、管理装置200から検証基データ、パラメタ(a1 、a2 、・・・、ak-1 )及び素数rを受信し(ステップS1007a)、受信した検証基データ、パラメタ(a1 、a2 、・・・、ak-1 )及び素数rを検証基データ保持部308へ記憶する(ステップS1008a)。
(2)検証基データの生成処理
検知システム10aの検証基データの生成処理の動作について、図20に示すフローチャートを用いて説明する。ここで説明する検証基データの生成処理は、図19に示すステップS1006aの詳細である。検知システム10aの検証基データの生成処理は、図10に示す検知システム10の検証基データの生成処理と類似している。ここでは、その相違点について説明する。
図20に示すフローチャートにおけるステップS1101は、図10における対応するステップと同じであるので、説明を省略する。
検証基データ配布部220のデータ分割部608は、アプリ毎に、図23の式1に示す(k−1)次多項式f(x)の各項の係数a1 、a2 、・・・、ak-1 をランダムに選択する。各係数は、それぞれ整数である。また、素数rを選択する(ステップS1102a)。
次に、データ分割部608は、アプリ毎に、r|p−1となるように、素数pを選択し、乗法群Zp*での位数がrとなる要素gを定め、図20に示す式3により、c0 、c1 、・・・、ck-1 を計算する。また、データ分割部608は、アプリ毎に生成した検証値(p、g、c0 、c1 、・・・、ck-1 )を用いて、上述したように、複数のアプリについて生成した複数の検証値を結合して結合体を生成し、生成した結合体にハッシュ関数による演算を施し、得られたハッシュ値に、署名秘密鍵を用いてデジタル署名を施して、証明書を生成する。
(証明書)=Sign(署名秘密鍵、Hash(検証値||検証値||・・・||検証値))
なお、検証値を結合する際に、各検証値は、p、g、c0 、c1 、・・・、ck-1 をこの順序で結合したものとする(ステップS1103a)。
次に、検証基データ生成部610は、1個の検証基データを生成する。検証基データは、図22に示すように、分割識別情報、判定情報、複数の検証値組及び証明書(復号処理証明書)を含む。各検証値組は、アプリ識別情報及び検証値を含む(ステップS1104a)。なお、分割識別情報及び判定情報については、後述する。
図21に、アプリのデータを分散する場合における動作概要図を示す。ここでは、アプリのデータに対し、閾値秘密分散法を用いて、4つの分散データを生成し、このうち、3つの分割データを用いて、元のアプリのデータが復元できるようにした例である。
保護制御モジュール120のアプリ分割部310は、閾値秘密分散法を用いて、アプリ110、111、112、113及び114から、各アプリについて、各アプリのデータを分散して、一例として、4個の分散データ1、分散データ2、分散データ3及び分散データ4を生成する。
アプリ110から分散データを生成する場合について、具体的に説明すると、一例として図21に示すように、アプリ分割部310は、閾値秘密分散法を用いて、アプリのデータ110「s」を分散して、図21に示す式2−1、式2−2、式2−3及び式2−4により、4個の分散データ1(110d)「w1 =f(1)」、分散データ2(110e)「w2 =f(2)」、分散データ3(110f)「w3 =f(3)」及び分散データ4(110g)「w4 =f(4)」を生成する。
検知システム10においては、生成された分割データの数と同数の検証基データが生成される。これに対して、検知システム10aにおいては、1個の検証基データが生成される。検証基データ生成部610により生成される検証基データの一例として、図22に、検証基データ690を示す。
検証基データ690は、図22に示すように、分割識別情報691、判定情報692、複数の検証値組693a〜693e及び証明書694から構成されている。各検証値組は、アプリ識別情報及び検証値から構成されている。
ここで、分割識別情報691は、アプリ分割部310において生成される分散データの数dを示す。ここでは、一例として、分割識別情報691は、「4」である。
また、判定情報692は、検知閾値kである。ここでは、一例として、判定情報692は、「3」である。
アプリ識別情報は、対応するアプリを識別するための情報である。
検証値は、上述した通りであり、(p、g、c0 、c1 、・・・、ck-1 )である。
証明書964は、上述した通りであり、複数の検証値を結合して得られた結合体にハッシュ関数による演算を施し、得られたハッシュ値に、署名秘密鍵を用いてデジタル署名を施して、生成した証明書である。
(3)検知処理の動作
検知システム10aの検知処理の動作について、図23から図24に示すシーケンス図を用いて説明する。
図22に示す検知システム10aの検知処理におけるステップS2100及びS2101の動作は、検知システム10の図15に示すステップS2000及びS2001の動作と同様の動作であるため、説明を省略する。以下で、ステップS2102からの処理について説明する。
保護制御モジュール120のアプリ分割部310は、検証基データ保持部308に保持しているパラメタ(a1 、a2 、・・・、ak-1 )及び素数rを用いて、図23の式1に示す(k−1)次多項式を設定する。式1において、sは、アプリ110のデータである。また、定数項s以外の他の一次以上の項は、それぞれ、a1 、a2 、・・・、ak-1 を係数とする。アプリ分割部310は、アプリ毎に、図23の式2に示すように、d個の分散データwj (j=1、2、・・・、d)を演算して生成する。
ここで、dは、検証基データ保持部308に保持している検証基データに含まれる分割識別情報により指定されている。また、kは、検証基データに含まれる判定情報により指定されている(ステップS2102)。
一例として、dが「4」であり、kが「3」である場合には、アプリ分割部310により、4個の分散データが生成される。また、3個以上の分散データを用いた検証に成功すれば、保護制御モジュールの検証に成功する。
保護制御モジュール120は、実施の形態2の検知モジュール選択部311に代えて、検知モジュール選択部311aを含む。検知モジュール選択部311aは、検知モジュール選択部311と類似した構成を有している。ここでは、相違点を中心として説明する。
保護制御モジュール120の検知モジュール選択部311aは、アプリ識別情報、分散データ及び検証基データの分配先の検知モジュールを選択する(ステップS2103)。ここで、アプリ識別情報は、保護制御モジュール120がOS180から受信したコマンドによる実行の対象であるアプリを識別する識別情報である。分散データは、アプリ分割部310により生成された分散データである。また、検証基データは、検証基データ保持部308に保持されている検証基データである。検証基データについては、図22に一例として検証基データ690を示している。
図25を用いて、検知モジュール選択部311aによる検知モジュールの選択方法を説明する。
検知モジュール選択部311aは、図25に示す対応表330aを保持している。
検知モジュール選択部311aは、対応表330aを用いて、検知モジュール131、132、133、134、135のうち、どの検知モジュールにアプリ識別情報、分散データ及び検証基データを分配するかを決定することにより、検知モジュールの選択を行う。
図25に示すように、検知モジュール選択部311aが保持する対応表330aには、検知モジュール131、132、133、134、135のうち、どの4つの検知モジュールを選択するかのすべての組合せのパターンが、Indexに対応付けて、記述されている。
図24に示す対応表330aは、図17に示す対応表330と同様の構成を有している。対応表330aは、Indexと検知モジュール識別子の組合せとの組を複数個含んでいる。Indexは、対応する組合せを識別する識別子である。例えば、対応表330aは、Index331d「1」に対応して、検知モジュール131、132、133、134をそれぞれ識別する識別子「131」、「132」、「133」、「134」の組合せ332dを含み、Index331e「2」に対応して、検知モジュール131、132、133、135をそれぞれ識別する識別子「131」、「133」、「134」、「135」の組合せ332eを含み、Index331f「3」に対応して、検知モジュール131、132、134、135をそれぞれ識別する識別子「131」、「132」、「134」、「135」の組合せ332fを含み、Index331g「4」に対応して、検知モジュール131、133、134、135をそれぞれ識別する識別子「131」、「133」、「134」、「135」の組合せ332gを含み、Index331h
「5」に対応して、検知モジュール132、133、134、135をそれぞれ識別する識別子「132」、「133」、「134」、「135」の組合せ332hを含む。
検知モジュール選択部311aは、対応表330aから、選択情報と同じ値を有するIndexを決定し、対応表330aから、決定したIndexに対応する組合せを選択することにより、検知モジュールを選択する。例えば、検知モジュール選択部311aは、選択情報が「1」である場合、対応表330aから、Index331d「1」に対応する組合せ332dを選択する。組合せ332dは、識別子「131」、「132」、「133」及び「134」を含んでいるので、検知モジュール131、132、133及び134が選択されたこととなる。 以下、検知モジュール131、132、133及び134の組合せを選択したものとして説明する。
保護制御モジュール120は、アプリ識別情報と、分散データと、検証基データとを、選択した検知モジュールへ分配する。ここでは、検知モジュール131へアプリ識別情報、アプリの1番目の分散データ(分散データ1(110d))及び検証基データを送信し(ステップS2104)、検知モジュール132へアプリ識別情報、アプリの2番目の分散データ(分散データ2(110e))及び検証基データを送信し(ステップS2105)、検知モジュール133へアプリ識別情報、アプリの3番目の分散データ(分散データ3(110f))及び検証基データを送信し(ステップS2106)、検知モジュール134へアプリ識別情報、アプリの4番目の分散データ(分散データ4(110g))及び検証基データを送信する(ステップS2107)。
検知モジュール131、132、133及び134の各検証部404は、図23に示す式4が成立するか否かを判断する。また、各検証部404は、検証基データに含まれている証明書の署名検証を行う(ステップS2108)。
各検知モジュールは、式4が成立しない、又は、検証に失敗した場合には、保護制御モジュール120が改ざんされていると判定し(ステップS2019でY)、管理装置200の判断部210へ、分散データが正しくないことを示す監視結果を送信する(ステップS2110)。各検知モジュールは、式4が成立し、かつ、検証に成功した場合には、分散データが正しいと決定し(ステップS2109でN)、分散データが正しいことを示す監視結果と、当該検知モジュールの識別子とを他の検知モジュールへ送信する(ステップS2111)。次に、各検知モジュールは、他の検知モジュールから受け取った監視結果及び自身の監視結果により、k個以上の検知モジュールにおいて、式4による検証が成功したか否かを判断し(ステップS2112)、k個以上の検知モジュールにおいて、式4による検証が成功したと判断する場合(ステップS2112でN)、保護制御モジュール120が改ざんされていないと決定し、処理を終了する。k個以上の検知モジュールにおいて、式4による検証が成功したと判断しない場合(ステップS2112でY)、保護制御モジュール120が改ざんされたことを示す判断結果を管理装置200の判断部210へ送信する(ステップS2113)。
検証部404は、分散データの配布先のd個の検知モジュールのうち、自身の検知モジュールを含め、閾値であるk個以上の検知モジュールにより、分散データが正しいことを示す監視結果を受け取った場合、保護制御モジュール120は改ざんされていないと判断する。この場合に、k個未満の検知モジュールが、不正動作を行って、分散データが正しいにもかかわらず、分散データが改ざんされているとする監視結果を検証部404へ送信した場合においても、k個以上の検知モジュールが、分散データが正しいと決定しているので、検証部404は、保護制御モジュール120は正常であると判断する。
検証部404は、分散データの配布先のd個の検知モジュールのうち、(d−k+1)個以上の検知モジュールにより、分散データが正しくないことを示す監視結果を受け取った場合、保護制御モジュール120は改ざんされていると判断する。
なお、管理装置200の判断部210が上記の判断を行うとしてもよい。
判断部210は、分散データの配布先のd個の検知モジュールのうち、閾値であるk個以上の検知モジュールにより、分散データが正しいことを示す監視結果を受け取った場合、保護制御モジュール120は改ざんされていないと判断する。この場合に、k個未満の検知モジュールが、不正動作を行って、分散データが正しいにもかかわらず、分散データが改ざんされているとする監視結果を判断部210へ送信した場合においても、k個以上の検知モジュールが、分散データが正しいと決定しているので、判断部210は、保護制御モジュール120は正常であると判断する。
また、判断部210は、分散データの配布先のd個の検知モジュールのうち、(d−k+1)個以上の検知モジュールにより、分散データが正しくないことを示す監視結果を受け取った場合、保護制御モジュール120は改ざんされていると判断する。
3.3 検知システム10aの効果
検知システム10によると、dより小さいk個以上の検知モジュールによる監視結果を用いて、保護制御モジュールの改ざんを検出することができる。従って、(d−k)個以下の検知モジュールが改ざんされている場合であっても、保護制御モジュールの改ざんを検出することができる。
このように、検知システム10aによると、分散データの分配先の先の検知モジュールが不正動作を行ったとしても、保護制御モジュールが正常動作を行ったかの判断ができ、システムの安全性を維持することができる。
また、復号したアプリのデータの分散に閾値秘密分散法を用いることで、システムの安全性を理論的に評価することができる。
4.実施の形態4
本発明に係る別の実施の形態としての検知システム10bについて説明する。
検知システム10bは、実施の形態2の検知システム10と同様の構成を有している。ここでは、検知システム10との相違点を中心として説明する。
4.1 概要
検知システム10では、保護制御モジュールが分割データの分配先の検知モジュールを選択している。しかし、保護制御モジュールが不正動作を行い、さらに、どの検知モジュールが不正動作を行うかを知っている場合、不正動作を行う検知モジュールに分割データを分配することにより、保護制御モジュールの不正動作を検出できないようにすることができる。そこで、検知システム10bでは、検知モジュールが分割データの分配先の検知モジュールを決定することにより、保護制御モジュールが分配先の検知モジュールを恣意的に選択できないようにする。
4.2 動作
(1)検知処理の動作
ここでは、検知システム10bにおける検知処理の動作について、図26から図29に示すシーケンス図を用いて説明する。検知システム10bにおけるステップS2200からステップS2202までの動作は、検知システム10における図15に示すステップS2000からステップS2002の動作と同様であるため、説明を省略する。以下で、ステップS2203からの処理について説明する。
保護制御モジュール120は、各検知モジュールへ検知処理の実行を通知する(ステップS2203)。
保護制御モジュール120からの通知を受信後、各検知モジュールの検証部404は、乱数を生成する(ステップS2204)。送信部402は、生成した乱数を、他の全ての検知モジュールへ送信する(ステップS2205)。各検知モジュールは、他の全ての検知モジュールから乱数を受信し(ステップS2205)、検証部404は、受信した全ての乱数及び自ら生成した乱数を合計して合計値を算出し、算出した合計値を用いて、検証部404が保持する対応表330b(後述する)のどのIndexを選択するか示す選択情報を計算する(ステップS2206)。
検証部404は、一例として図30に示す対応表330bを保持している。対応表330bは、保護制御モジュール120の検知モジュール選択部311で保持している対応表330と同じものである。
各検知モジュールは、対応表330bからIndexの最大値を取得する。対応表330bにおいては、「10」がIndexの最大値である。次に、算出した合計値に対し、取得した最大値で法をとった値を選択情報として計算する。
選択情報= (r1 +r2 +・・・+rn ) mod (Indexの最大値)
ここで、r1 、r2 、・・・、rn は、それぞれ、n個の検知モジュールにより生成された乱数である。また、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
例えば、すべての乱数の合計値が「21」である場合、「10」で法をとった値は
「1」となるので、選択情報は、「1」である。また、すべての乱数の合計値が「30」である場合、「10」で法をとった値は「0」となるので、選択情報は、「10」である。
各検知モジュールは、選択情報を保護制御モジュール120へ送信する(ステップS2207)。
保護制御モジュール120は、受信した選択情報のいずれか一つに基づいて、図17に示す対応表330から、当該選択情報に等しいIndexを選択し、選択したIndexに対応する検知モジュール識別子の組を選択する(ステップS2208)。
これ以降のステップS2209からステップS2217の動作は、実施の形態2における図15〜図16に示すステップS2004からステップS2012までの動作と同様の動作であるため、説明を省略する。
4.3 検知システム10bの効果
検知システム10bにより、検知モジュールが連携して、分割データを分配する検知モジュールを検知モジュールが決定するので、保護制御モジュールは、分割データを分配する検知モジュールを恣意的に選択できない。また、検知モジュールのすべてが不正動作を行わない限り、検知モジュールの選択先を決定できない。これにより、保護制御モジュールが不正動作を行い、分割データを分配する検知モジュールを恣意的に選択することを防止し、システムの安全性を向上することができる。
5.実施の形態5
本発明に係る別の実施の形態としての検知システム10cについて説明する。
検知システム10cは、実施の形態2の検知システム10と同様の構成を有している。ここでは、検知システム10との相違点を中心として説明する。
5.1 概要
検知システム10cでは、保護制御モジュール120において、複数の復号サブプロセスから構成される復号処理のプロセスを経ることにより、暗号化アプリが復号される。このとき、各復号サブプロセスの入出力対応を検証することにより、保護制御モジュール120が改ざんされているかを判断する。
図31は、保護制御モジュール120における複数の復号サブプロセスから構成される復号処理350の概要を示す図である。検知システム10cでは、一例として、復号処理350のプロセスは、復号部分処理1(351)、復号部分処理2(352)、及び復号部分処理3(353)の3個の復号サブプロセスから構成される。なお、4個以上の復号部分処理の復号サブプロセスから構成されるとしてもよい。
ここで、複数個の復号サブプロセスから構成される復号処理の例は、DES(Data
Encryption Standard)及びAES(Advanced Encryption Standard)である。
復号部分処理1(351)は、暗号化アプリのデータ355を入力データとして受け取り、復号して中間値1(356)を生成し、中間値1(356)を出力データとして復号部分処理2(352)へ出力する。復号部分処理2(352)は、中間値1(356)を入力データとして受け取り、復号して中間値2(357)を生成し、中間値2(357)を出力データとして復号部分処理3(353)へ出力する。復号部分処理3(353)は、中間値2(357)を入力データとして受け取り、復号してアプリのデータ(358)を生成し、アプリのデータ(358)を出力データとして出力する。
各検知モジュールは、復号部分処理ごとに生成された検証データを用いて、各復号部分処理の入出力の対応を検証する。なお、安全性の観点から、1つの検知モジュールが3個の復号部分処理についてすべて検証するのではなく、3個の検知モジュールが、それぞれ異なる復号部分処理を検証することが望ましい。一般的に、復号処理は、複数の復号部分処理から構成され、各復号部分処理の入出力の対応を、復号部分処理の数と同数の検知モジュールが、それぞれ異なる復号部分処理について検証することが望ましい。なお、復号部分処理の数より多い数の検知モジュールが、復号部分処理について検証するとしてもよい。この場合には、複数の検知モジュールが一つの復号部分処理について検証を行うこととなる。
5.2 構成
検知システム10cの管理装置200は、検知システム10の管理装置200が備える検証基データ配布部220に代えて、検証基データ配布部220aを有する。検証基データ配布部220aは、検知システム10の管理装置200が備える検証基データ配布部220と類似する構成を有している。ここでは、相違点を中心として説明する。
(1)検証基データ配布部220aの構成
図32は、検知システム10cにおける検証基データ配布部220aの機能構成を示す機能ブロック図である。検知システム10における検証基データ配布部220と同様の機能を有する構成要素は、同じ符号を付して説明を省略する。
検知システム10における検証基データ配布部220と比較すると、検証基データ配布部220aは、データ分割部608を備えていない。また、検証基データ配布部220には存在しないソフトウェア実行部621を備える。
ソフトウェア実行部621は、保護制御モジュール保持部611に保持されている保護制御モジュールを用いて暗号化アプリを復号し、復号処理プロセスを構成する複数のサブ復号プロセスにおいて、中間値1、中間値2及び復号されたアプリのデータを取得する。
(検証基データのデータ構造)
また、検知システム10cでは、検証基データ配布部220aが生成する検証基データの構成が検知システム10の検証基データの構成と異なる。
図33は、検知システム10cにおける検証基データの一例としての、検証基データ240のデータ構成図である。
検証基データ240は、図33に示すように、復号部分処理1に関するデータ241a、復号部分処理2に関するデータ241b及び復号部分処理3に関するデータ241cを含む。この検証基データは、保護制御モジュール120の検証基データ保持部308に保持される。
(a)復号部分処理1に関するデータ241aは、図33に示すように、判定情報242a、複数の検証値組243a〜247a、証明書248a及び復号部分識別子249aから構成されている。
判定情報242aは、復号部分処理のすべてが検証されたかを判定するための情報であり、復号サブプロセスの数が記載される。例えば、復号処理プロセスが3個の復号サブプロセスから構成されている場合、「3」と記載されている。
複数の検証値組243a〜247aの数は、アプリの数と同一であり、複数の検証値組243a〜247aは、それぞれ、アプリ110、111、112、113及び114に対応している。各検証値組は、アプリ識別情報、データ及び検証値を含む。
検証値組に含まれるアプリ識別情報は、対応するアプリを識別する識別子である。
検証値組に含まれるデータは、対応する暗号化アプリのデータである。
検証値組に含まれる検証値は、暗号化アプリのデータ355と復号部分処理1(351)の出力データである中間値1(356)とから生成した復号検証値である。検証値は、保護制御モジュール120が正常動作した際のそれぞれの復号部分処理1(351)の入力データと出力データとを結合して得られた結合体に対して、ハッシュ関数による演算を施して得られたハッシュ値である。
検証値=Hash(復号部分処理1(351)の入力データ||復号部分処理1(351)の出力データ)
ここでは、検証値としてハッシュ値を使用したが、これに限定するものではなく、次に示すように、署名などを用いてもよい。
検証値=Sign(署名秘密鍵、(復号部分処理1(351)の入力データ||復号部分処理1(351)の出力データ))
証明書248aは、復号処理証明書である。復号処理証明書は、復号部分処理1に関するデータ241aに含まれる全ての検証値を結合し、これらの複数の検証値を結合して得られた結合体にハッシュ関数による演算を施してハッシュ値を計算し、計算したハッシュ値に対して、署名秘密鍵保持部606の署名秘密鍵を用いて、デジタル署名アルゴリズムを施して、生成した署名である。
証明書248a=Sign(署名秘密鍵、Hash(検証値||検証値||、・・・、検証値||検証値))
復号部分識別子249aは、復号部分処理1(351)を識別する識別子である。一例として、復号部分識別子249aは、「001」である。
(b)復号部分処理2に関するデータ241bは、図33に示すように、判定情報242b、複数の検証値組243b〜247b、証明書248b及び復号部分識別子249bから構成されている。
判定情報242bは、復号部分処理のすべてが検証されたかを判定するための情報であり、復号サブプロセスの数が記載される。例えば、復号処理プロセスが3個の復号サブプロセスから構成されている場合、「3」と記載されている。
複数の検証値組243b〜247bの数は、アプリの数と同一であり、複数の検証値組は243b〜247b、それぞれ、アプリ110、111、112、113及び114に対応している。各検証値組は、アプリ識別情報、データ及び検証値を含む。
検証値組に含まれるアプリ識別情報は、対応するアプリを識別する識別子である。
検証値組に含まれるデータは、対応する暗号化アプリから生成された中間値1である。
検証値組に含まれる検証値は、中間値1(356)と復号部分処理2(352)の出力データである中間値2(357)とから生成した復号検証値である。中間値1(356)及び中間値2(357)は、ソフトウェア実行部621が、アプリの復号処理を実行することにより取得される。検証値は、保護制御モジュール120が正常動作した際のそれぞれの復号部分処理2(352)の入力データと出力データとを結合して得られた結合体に対して、ハッシュ関数による演算を施して得られたハッシュ値である。
検証値=Hash(復号部分処理2(352)の入力データ||復号部分処理2(352)の出力データ)
ここでは、検証値としてハッシュ値を使用したが、これに限定するものではなく、次に示すように、署名などを用いてもよい。
検証値=Sign(署名秘密鍵、Hash(復号部分処理2(352)の入力データ||復号部分処理2(352)の出力データ))
証明書248aは、復号処理証明書である。復号処理証明書は、復号部分処理2に関するデータ241bに含まれる全ての検証値を結合し、これらの複数の検証値を結合して得られた結合体にハッシュ関数による演算を施してハッシュ値を計算し、計算したハッシュ値に対して、署名秘密鍵保持部606の署名秘密鍵を用いて、デジタル署名アルゴリズムを施して、署名である。
証明書248b=Sign(署名秘密鍵、Hash(検証値||検証値||、・・・、検証値||検証値))
復号部分識別子249bは、復号部分処理2(352)を識別する識別子である。一例として、復号部分識別子249bは、「002」である。
(c)復号部分処理3に関するデータ241cは、図33に示すように、判定情報242c、複数の検証値組243c〜247c、証明書248c及び復号部分識別子249cから構成されている。
判定情報242cは、復号部分処理のすべてが検証されたかを判定するための情報であり、復号サブプロセスの数が記載される。例えば、復号処理プロセスが3個の復号サブプロセスから構成されている場合、「3」と記載されている。
複数の検証値組243c〜247cの数は、アプリの数と同一であり、複数の検証値組243c〜247cは、それぞれ、アプリ110、111、112、113及び114に対応している。各検証値組は、アプリ識別情報、データ及び検証値を含む。
検証値組に含まれるアプリ識別情報は、対応するアプリを識別する識別子である。
検証値組に含まれるデータは、対応する暗号化アプリのデータから生成された中間値2(357)である。
検証値組に含まれる検証値は、中間値2(357)とアプリのデータ(358)とから生成した復号検証値である。ここで、アプリのデータ(358)は、復号部分処理3(353)の出力データである。復号したアプリのデータ(358)は、ソフトウェア実行部621が、アプリの復号処理を実行することにより取得される。検証値は、保護制御モジュール120が正常動作した際のそれぞれの復号部分処理3(353)の入力データと出力データとを結合して得られた結合体に対して、ハッシュ関数による演算を施して得られたハッシュ値である。
検証値=Hash(復号部分処理3(353)の入力データ||復号部分処理3(353)の出力データ)
ここでは、検証値としてハッシュ値を使用したが、これに限定するものではなく、次に示すように、署名などを用いてもよい。
検証値=Sign(署名秘密鍵、Hash(復号部分処理3(353)の入力データ||復号部分処理3(353)の出力データ))
証明書248cは、復号処理証明書である。復号処理証明書は、復号部分処理3に関するデータ241cに含まれる全ての検証値を結合し、これらの複数の検証値を結合して得られた結合体にハッシュ関数による演算を施してハッシュ値を計算し、計算したハッシュ値に対して、署名秘密鍵保持部606の署名秘密鍵を用いて、デジタル署名アルゴリズムを施して、生成した署名である。
証明書248c=Sign(署名秘密鍵、Hash(検証値||検証値||、・・・、検証値||検証値))
復号部分識別子249cは、復号部分処理3(353)を識別する識別子である。一例として、復号部分識別子249cは、「003」である。
5.3 動作
(1)検証基データの生成処理の動作
検知システム10cにおける検証基データの生成処理を図34に示すフローチャートを用いて説明する。
検証基データの生成では、ソフトウェア実行部621は、機器100にインストールされる複数のアプリであって、アプリ保持部609に保持している複数のアプリを保護制御モジュール120の暗復号鍵で暗号化する(ステップS1201)。ソフトウェア実行部621は、保護制御モジュール120の復号処理を実行し、複数の暗号化アプリを復号して、復号部分処理1(351)、復号部分処理2(352)及び復号部分処理3(353)の出力データである中間値1(356)、中間値2(357)及び復号したアプリのデータ(358)を取得する(S1202)。
次に、証明書生成部605は、アプリ毎に、暗号化アプリのデータ(355)及び中間値1(356)の組、中間値1(356)及び中間値2(357)の組、並びに、中間値2(357)及び復号したアプリのデータ(358)の組のそれぞれに対し、検証値を生成し、各復号部分処理に関して、複数の検証値から、署名秘密鍵保持部606に保持されている署名秘密鍵を用いて、証明書を生成する(ステップS1203)。
最後に、検証基データ生成部610は、復号部分処理1に関するデータ(241a)、復号部分処理2に関するデータ(241b)、及び復号部分処理3に関するデータ(241c)を含む検証基データ240を生成する(ステップS1204)。
(2)検知処理の動作
図35及び図36は、検知システム10cにおける検知処理の動作を示すシーケンス図である。
ここでは、具体例として、機器100がアプリ110を実行する場合において、保護制御モジュール120が検知処理を行うときについて説明する。
保護制御モジュール120の検証基データ生成部309は、アプリ110を実行するコマンドを受信すると(ステップS2300)、検証基データ保持部308に保持されている検証基データ240(図33)から、復号部分処理1に関するデータ241a、復号部分処理2に関するデータ241b及び復号部分処理3に関するデータ241cを分離して抽出し、復号部分処理1に関するデータ241aを復号部分処理1の検証基データ250a(図37に示す)とし、復号部分処理2に関するデータ241bを復号部分処理2の検証基データ250b(図38に示す)とし、復号部分処理3に関するデータ241cを復号部分処理3の検証基データ250c(図39に示す)として生成する(ステップS2301)。
図37に示す復号部分処理1の検証基データ250aは、図33の検証基データ240の復号部分処理1に関するデータ241aと同じであり、図38に示す復号部分処理2の検証基データ250bは、図33の検証基データ240の復号部分処理2に関するデータ241bと同じであり、図39に示す復号部分処理3の検証基データ250cは、図33の検証基データ240の復号部分処理3に関するデータ241cと同じである。
検証基データ250a、250b及び250cの生成後、保護制御モジュール120は、暗号化されたアプリ110を復号する(ステップS2302)。
保護制御モジュール120は、検知モジュール選択部311が保持する対応表330を用いて、検知モジュール131、132、133、134、135のうち、どの検知モジュールに検証基データを送信するかを決定する(ステップS2303)。ここでは、検知モジュール131、132、133を選択したとする。
保護制御モジュール120は、選択した検知モジュール131へ、アプリ110を識別するアプリ識別情報と中間値1(356)と復号部分処理1の検証基データ250aとを送信する(ステップS2304)。
また、保護制御モジュール120は、選択した検知モジュール132へ、アプリ110を識別するアプリ識別情報と中間値2(357)と復号部分処理2の検証基データ250bとを送信する(ステップS2305)。
さらに、保護制御モジュール120は、選択した検知モジュール133へ、アプリ110を識別するアプリ識別情報と復号したアプリのデータ(358)と復号部分処理3の検証基データ250cとを送信する(ステップS2306)。
各検知モジュールは、受信した検証基データを用いて、復号部分処理の入出力対応が正しいか否かを検証する(ステップS2307)。具体的に、各検知モジュールは、受信した検証基データ内のデータと、受信した中間値またはアプリのデータから検証値を生成する。そして、生成した検証値と検証データ内の検証値と比較し、両者が一致するか判断する。さらに、復号処理証明書の署名検証を行う。
各検知モジュールは、検証値が一致しない、または、署名検証に失敗した場合には、中間値又はアプリのデータが正しくないと判定し(ステップS2308でY)、判断部210へ中間値又はアプリのデータが正しくないことを示す監視結果を送信する(ステップS2309)。各検知モジュールは、検証値が一致し、かつ、署名検証に成功した場合には、保護制御モジュール120が改ざんされていないと判定し(ステップS2308でN)、各復号部分処理を検証した旨の通知及び検証基データ内の復号部分識別子を他の全ての検知モジュールへ送信する(ステップS2310)。一例として、検知モジュール131は、復号部分処理1を検証した旨の通知及び復号部分処理1(351)を識別する復号部分識別子「001」を送信する。そして、各検知モジュールは、保護制御モジュール120のすべての復号部分処理が検証されたか否かを確認する(ステップS2311)。具体的には、各検知モジュールは、自身に割り当てられた復号部分処理を除く他の全ての復号部分処理を識別する復号部分識別子を受け取ったか否かを判断する。各検知モジュールは、自身に割り当てられた復号部分処理を除く他の全ての復号部分処理を識別する復号部分識別子を受け取ったと判断する場合には、保護制御モジュール120が改ざんされていないと判定し(ステップS2311でN)、処理を終了する。
各検知モジュールは、自身に割り当てられた復号部分処理を除く他の全ての復号部分処理を識別する復号部分識別子を受け取っていないと判断する場合には、すべての復号部分処理が検証されていない、又は、全ての復号部分処理についての出力データ(中間値1(356)、中間値2(357)及びアプリのデータ(357))並びに検証基データ250a、250b及び250cが、1個の検知モジュールに送信されている可能性があり、保護制御モジュール120が不正動作を行ったものとして、保護制御モジュール120が改ざんされていると判定し(ステップS2311でY)、判断部210へ保護制御モジュール120が改ざんされていることを示す判断結果を送信する(ステップS2312)。
5.4 検知システム10cの効果
検知システム10cでは、保護制御モジュール120が実行する復号処理のプロセスは、複数のサブプロセスである復号部分処理から構成され、復号部分処理ごとに入出力データの対応関係が検証される。そのため、仮に検知モジュールが不正動作をしたとしても、保護制御モジュール120が実行する復号処理の全体が漏洩するのを防止することができる。さらに、保護制御モジュール120による復号処理の全体のうち、どの部分が改ざんされたかを知ることができる。
また、保護制御モジュール120が選択をしなかった検知モジュールが不正動作をしたとしても保護制御モジュール120に対する検知処理には影響せず、保護制御モジュールが改ざんされているかを検証することができる。
6.その他の変形例
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記各実施の形態では、検知処理後に相互監視処理を行うとしてもよい。相互監視処理に関しては、特許文献3に詳しく説明されているので、ここでの説明は省略する。
(2)上記変形例(1)では、検知処理後に、相互監視を実行し、保護制御モジュール120が正常であると判断できた場合は、相互監視の結果、発見した不正動作を行う検知モジュールを、保護制御モジュール120が無効化するとしてもよい。また、正常な検知モジュールを用いて、無効化処理を行うとしてもよい。無効化処理に関しては、特許文献3に詳しく説明されているので、ここでの説明は省略する。
(3)上記実施の形態4では、n個の全ての検知モジュールが連携して、全ての検知モジュールが送信した乱数を合計して合計値を算出し、算出した合計値を用いて、選択すべき検知モジュールの組を決定するための選択情報を計算しているが、これには限定されない。
一部の検知モジュールが連携し、これらの検知モジュールにより生成した乱数から選択情報を計算してもよい。
具体的には、n個の検知モジュールのうちの一部の検知モジュール(ここでは、m個の検知モジュールとする。mは、nより小さい整数である。)がそれぞれ、乱数r1 、r2 、・・・、rm を生成する。生成されたm個の乱数r1 、r2 、・・・、rm を合計して合計値を算出し、算出した合計値について、Indexの最大値による法を取り、得られた値を選択情報として計算する。
選択情報= (r1 +r2 +・・・+rm ) mod Indexの最大値
ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
(4)上記実施の形態4では、全ての検知モジュールが連携して、全ての検知モジュールが送信した乱数から選択情報を計算しているが、これには限定されない。
全ての検知モジュール及び保護制御モジュール120が連携し、それぞれが送信した乱数から選択情報を計算するとしてもよい。
具体的には、n個の全ての検知モジュールがそれぞれ乱数r1 、r2 、・・・、rn を生成し、保護制御モジュールが乱数Rを生成し、生成された(n+1)個の乱数R、r1 、r2 、・・・、rn を合計して合計値を算出し、算出した合計値を用いて、選択すべき検知モジュールの組を決定するための選択情報を計算してもよい。
選択情報= (R+r1 +r2 +・・・+rn ) mod (Indexの最大値)
ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
また、n個の検知モジュールのうちのm個の検知モジュールがそれぞれ乱数r1 、r2 、・・・、rm を生成し、保護制御モジュールが乱数Rを生成し、生成された(m+1)個の乱数R、r1 、r2 、・・・、rm を合計して合計値を算出し、算出した合計値を用いて、選択すべき検知モジュールの組を決定するための選択情報を計算してもよい。
選択情報= (R+r1 +r2 +・・・+rm ) mod (Indexの最大値)
ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
(5)上記実施の形態4では、全ての検知モジュールが連携して、全ての検知モジュールが送信した乱数から選択情報を計算しているが、これには限定されない。
保護制御モジュール120と各検知モジュールが共有する秘密のアルゴリズムを用いて、選択情報を決定するとしてもよい。
例えば、保護制御モジュール120は、1個の乱数Rを生成し、生成した乱数Rに、保護制御モジュール120が秘密に保持している鍵Kを用いて、鍵付きハッシュ関数KeyedHashによる演算を施して、ハッシュ値Hを算出する。
H=KeyedHash(K、R)
ここで、KeyedHash(A、B)は、鍵Aを用いて、値Bに鍵付きハッシュ関数による演算を施して、得られたハッシュ値を示す。
また、n個の全ての検知モジュールも同様にして、それぞれ、1個の乱数ri を生成し、生成した乱数に、検知モジュールが秘密に保持している鍵ki を用いて、鍵付きハッシュ関数KeyedHashによる演算を施して、ハッシュ値hi を算出する。
hi =KeyedHash(ki 、ri ) (i=1、2、・・・、n)
こうして、(n+1)個のハッシュ値H、h1 、h2 、・・・、hn が算出される。
次に、算出された(n+1)個の乱数を合計して合計値を算出し、算出した合計値について、Indexの最大値による法を取り、得られた値を選択情報として計算する。
選択情報= (H+h1 +h2 +・・・+hn ) mod (Indexの最大値)
ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
なお、n個の全ての検知モジュールではなく、n個の検知モジュールのうちのm個の検知モジュールを用いて、選択情報を計算してもよい。
選択情報= (H+h1 +h2 +・・・+hm ) mod (Indexの最大値)
(6)上記実施の形態4では、すべての検知モジュールが連携して、すべての検知モジュールが送信した乱数から選択情報を計算しているが、これには、限定されない。
機器100のIDを用いて、選択情報を生成するとしてもよい。機器100のIDとは、例えば、機器100の製造番号である。
例えば、次のようにして選択情報を計算してもよい。
選択情報 = (機器100の製造番号) mod (Indexの最大値)
ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
これにより、攻撃者が一台の攻撃の対象機器を解析することで、解析した対象機器がどのIndexを選択しているかを知ったとしても、他の機器は、その対象機器が有するIDとは、別のIDを有しているので、他の機器により用いられる選択情報は、対象機器により用いられる選択情報と異なり、対象機器の解析で知った選択情報を、他の機器において用いることはできない。こうして、他の機器への攻撃を防止することができる。
(7)上記実施の形態4では、すべての検知モジュールが連携して、すべての検知モジュールが送信した乱数から選択情報を計算しているが、これには限定されない。
機器100の時刻情報を用いて、選択情報を計算するとしてもよい。ここで、機器100の時刻情報は、一例として、年月日時分秒から構成される。
例えば、次のようにして選択情報を計算してもよい。
選択情報 = (年月日時分秒) mod (Indexの最大値)
ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
また、次のようにして選択情報を計算してもよい。
選択情報 = Hash(年月日時分秒) mod (Indexの最大値)
ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
(8)上記実施の形態4では、全ての検知モジュールが連携して、全ての検知モジュールが送信した乱数から選択情報を計算しているが、これには、限定されない。
管理装置200がIndexを指定するとしてもよい。保護制御モジュール120はステップS2203で検知の実行を検知モジュールに通知しているが、検知モジュールへの通知に代えて、検知の実行を管理装置200へ通知する。管理装置200の判断部210は、保護制御モジュール120から検知実行の通知を受信すると、指示生成部503は、モジュール選択部504へモジュールを選択するように指示する。モジュール選択部504は、対応表からIndexを選択し、選択したIndexを指示生成部503へ送信する。指示生成部503は、モジュール選択部504から受信したIndexを、送信部502を介して、保護制御モジュール120へ送信する。
保護制御モジュール120は、Indexを受け取り、受け取ったIndexに対応する検知モジュール識別子の組を選択する。
(9)上記実施の形態4では、ステップS2208において、保護制御モジュール120は各検知モジュールからIndexを受信し、Indexに基づき検知モジュールを選択する。このとき、保護制御モジュール120が複数の検知モジュールから受信した全てのIndexが完全に一致しない場合、言い換えると、一つでも異なるIndexが存在する場合、いずれかの検知モジュールが不正動作を行っていると判断し、保護制御モジュール120が判断部210へ通知するとしてもよい。
(10)上記実施の形態4では、ステップS2209からS2211において、保護制御モジュール120は、選択情報に基づいて選択した検知モジュールへ検証基データを送信する。
このとき、保護制御モジュール120が、選択情報に基づいて選択した検知モジュールへ検証基データを送信しなかった場合に、検知モジュールは、保護制御モジュール120が改ざんされていると判断し、判断部210に通知するとしてもよい。ここで、検知モジュールは、選択情報を知っているので、検知モジュールが対応表330を保持しているようにしておけば、検知モジュールは、選択情報に基づいて選択された検知モジュールを知ることができる。従って、当該検知モジュールが選択されている場合に、当該検知モジュールが、検証基データを受信しなかったとき、保護制御モジュール120が、選択情報に基づいて選択した検知モジュールへ検証基データを送信しなかったことを知ることができる。
また、選択情報に基づいて選択した検知モジュールとは異なる検知モジュールに送信した場合に、保護制御モジュール120が改ざんされていると判断してもよい。ここで、検知モジュールは、選択情報を知っているので、検知モジュールが対応表330を保持しているようにしておけば、検知モジュールは、選択情報に基づいて選択された検知モジュールを知ることができる。従って、当該検知モジュールが選択されていない場合に、当該検知モジュールが、検証基データを受信したとき、保護制御モジュール120が、選択情報に基づいて選択した検知モジュールへ検証基データを送信しなかったことを知ることができる。
また、検知モジュールは、ステップS2207で選択情報を送信後、一定時間内に保護制御モジュール120からアプリ識別情報、分割データ及び検証基データを受信しなかった場合に、保護制御モジュール120が改ざんされていると判断してもよい。
(11)上記各実施の形態と、上記変形例(1)を組み合わせて実施するとしてもよい。上記変形例(1)では、相互監視処理を実行するため、検知処理後に各検知モジュールが
不正動作を行っているか否かの判定ができる。一方、上記実施の形態では、相互監視処理を実行しないため、機器100の処理を軽くすることができる。相互監視処理を実行するかの切り替えは、定期的に切り替えてもよいし、アプリによって異なるとしてもよいし、管理装置200から切り替えの指示をするとしてもよいし、機器100内部の処理の状況を鑑みて切り替えるとしてもよい。また、相互監視処理を実行する場合には、ステップS2003ですべての検知モジュールを選択するとしてもよい。
(12)上記の各モジュールは、具体的には、それぞれ個別のコンピュータプログラムであってもよいし、オペレーティングシステムに組み込まれるモジュールであってもよいし、オペレーティングシステムから呼ばれるドライバプログラムであってもよいし、アプリケーションプログラムであってもよい。
(13)上記の実施の形態2〜5においては、情報処理装置である機器100内において、複数の検知モジュール及び保護制御モジュールが動作するとしているが、これには限定されない。
機器100内において、保護対象のコンピュータプログラムと、前記コンピュータプログラムを保護する保護制御モジュールとが動作し、機器100とは別の1台の検知装置において、複数の検知モジュールが動作し、これらの複数の検知モジュールが機器100内の保護制御モジュールを監視するとしてもよい。ここで、機器100と前記検知装置とは、ネットワークを介して接続されている。
ここで、検知装置は、1台に限定されない。複数台の検知装置が機器100とネットワークを介して接続されているとしてもよい。検知装置の台数は、検知モジュールの数に等しい。各検知装置において、1個の検知モジュールが動作する。1台の検知装置の検知モジュールが機器100内の保護制御モジュールを監視する。この結果、複数台の検知装置において動作する複数の検知モジュールが機器100内の保護制御モジュールを監視することとなる。
(14)上記の実施の形態2〜5においては、情報処理装置である機器100内において、アプリから複数の分割データを生成し、閾値秘密分散法によりアプリから複数の分散データを生成し、又は、暗号化アプリを復号する復号プロセスは、複数の復号サブプロセスから構成され、各復号サブプロセスにおける入力データ及び出力データを用いるとしている。しかし、これには限定されない。
保護制御モジュールは、コンピュータプログラムであるので、保護制御モジュールから複数の分割データを生成してもよい。また、閾値秘密分散法により保護制御モジュールから複数の分散データを生成してもよい。また、保護制御モジュールを暗号化し、暗号化保護制御モジュールを復号する復号プロセスは、複数の復号サブプロセスから構成され、各復号サブプロセスにおける入力データ及び出力データを用いるとしてもよい。
これらの場合に、検知モジュールは、保護制御モジュールから生成された複数の分割データを用いて、保護制御モジュールの改ざんを検出する。また、検知モジュールは、保護制御モジュールから生成された複数の分散データを用いて、保護制御モジュールの改ざんを検出する。また、暗号化された保護制御モジュールを復号する復号プロセスにおいて、各復号サブプロセスにおける入力データ及び出力データを用いて、保護制御モジュールの改ざんを検出する。
(15)実施の形態2と実施の形態3とを組合せてもよい。この場合において、検証可能秘密分散法ではなく、しきい値k、分配数dの(k,d)秘密分散法を用いて、分割データを生成する。検証基データの検証値は分割データのハッシュ値を用いる。
(16)情報処理装置としての機器100は、具体的には、パーソナルコンピュータ、BD再生装置、DVD再生装置、BD記録装置、DVD記録装置、デジタル放送受信再生装置、デジタル放送記録装置、携帯電話機などである。
(17)次のようにしてもよい。
本発明の一態様の情報処理装置は、アプリケーションを保護する機能を有する保護制御モジュールと、n個の検知モジュールとを含む情報処理装置であって、前記保護制御モジュールは、暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号手段と、前記出力データを少なくともd(d≧2)個の分割データを分割する分割手段と、n個の前記検知モジュールのうちd個の検知モジュールを選択する選択手段と、分割されたd個の分割データを、前記選択手段で選択した前記d個の検知モジュールに分配する分配手段と、前記d個の検知モジュールのそれぞれは、分割された分割データ、前記入力データと前記復号手段が正常動作を行った場合に期待される分割データの値とに基づいて生成された検証データ、及び、入力データを用いて、分配された分割データが正しいか否かを判断する検証手段を備えることを特徴とする。
本発明によれば、各検知モジュールは、保護制御モジュール自体のデータを用いた検証を行わず、保護制御モジュールが実行するアプリケーションの復号処理を検証するので、各検知モジュールに対して、保護制御モジュールが有する秘匿データが漏洩するのを防止することができる。
また、本発明によれば、検知を実行しないn−d個の検知モジュールが攻撃されたとしても保護制御モジュールに対する検知処理に影響せず、保護制御モジュールが改ざんされているかを検証することができる。
ここで、前記分割手段は、前記d個の分割データのうち、k個の分割データを用いるとはじめて前記出力データを復元できるように、前記d個の分割データを生成してもよい。
この構成によると、前記d個の検知モジュールのうちのk個の検知モジュールが保持する分割データから出力データが復元できるため、前記出力データが入力データから正しく復号されたことを確認することができる。
ここで、前記選択手段は、所定の情報に基づいて、所定の情報と検知モジュールの識別情報との対応表から検知モジュールを選択してもよい。
この構成によると、保護制御モジュールは対応表を用いて検知モジュールを選択することができる。
ここで、前記所定の情報は、前記分配手段で分配するごとに毎回変更されるとしてもよい。
この構成によると、所定の情報は分配するごとに毎回変更することができる。これにより、保護制御モジュールが選択する検知モジュールを毎回変更することで、恣意的に分割データの送信先を決定できない。
ここで、前記所定の情報は、前記複数の検知モジュールが保持する部分情報を用いて生成されるとしてもよい。
この構成によると、保護制御モジュールが選択する検知モジュールを検知モジュールが決定することで、保護制御モジュールが恣意的に決定できない。
ここで、前記検知モジュールのそれぞれは、乱数を生成し、他の検知モジュールへ送信する送信手段を備え、前記保持する部分情報は、前記検知モジュールが生成した乱数であるとしてもよい。
この構成によると、保護制御モジュールが選択する検知モジュールを検知モジュールが乱数を用いて決定することで、保護制御モジュールが恣意的に決定できない。
ここで、前記情報処理装置は、管理装置と接続し、前記所定の情報は前記管理装置から受信するとしてもよい。
この構成によると、保護制御モジュールが選択する検知モジュールを管理装置が決定することで、保護制御モジュールが恣意的に決定できない。
また、本発明の別の態様の情報処理装置は、アプリケーションを保護する機能を有する保護制御モジュールと、n個の検知モジュールとを含む情報処理装置であって、前記保護制御モジュールは、暗号化された前記アプリケーションプログラムに対し、d個の処理工程から成る復号処理を実行する復号手段と、n個の前記検知モジュールのうちd個の検知モジュールを選択する選択手段と、前記d個の処理工程それぞれの出力データであるd個の被検証データを、前記d個の検知モジュールへ分配する分配手段とを備え、前記複数の検知モジュールのそれぞれは、分配された被検証データ、前記被検証データに対応する処理工程への入力データ、及び、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断する検証手段を備えることを特徴とする。
この構成によると、各検知モジュールは、保護制御モジュール自体のデータを用いた検証を行わず、保護制御モジュールが実行するアプリケーションの復号処理を検証するので、各検知モジュールに対して、保護制御モジュールが有する秘匿データが漏洩するのを防止することができる。
また、本発明によれば、複数の検知モジュールが、それぞれ異なる処理工程についての検証を行うので、各検知モジュールに対して、アプリケーションのデータが漏洩するのを防止することができる。
また、本発明によれば、復号処理のうち、どの処理工程が改ざんされているかを検知することもできる。
(18)次のように構成してもよい。
(a)本発明の別の態様は、コンピュータプログラムを保護する保護制御回路と、前記保護制御回路を監視するためのn個の検知回路と、管理装置とを含む改ざん監視システムである。
前記保護制御回路は、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成回路と、n個の前記検知回路のうち、d個の検知回路を選択する選択回路と、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知回路へ分配する分配回路とを備える。
d個の前記検知回路のそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御回路の改ざんを検出し、前記保護制御回路が改ざんされているか否かを示す判断結果を送信する。
前記管理装置は、前記検知回路のそれぞれから前記判断結果を受信し、受信した判断結果を基にして、前記保護制御回路の改ざんを管理する。
前記検知回路は、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成し、前記保護制御回路を監視するためのn個の検知回路のうち、d個の検知回路を選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知回路へ分配する保護制御回路から1個の前記分配データを受信する受信回路と、受信した前記分配データが正しいか否かを判断する検証回路と、正しいと判断した場合に、他の検知回路へ前記分配データが正しいことを示す監視結果を送信する送信回路とを備える。前記受信回路は、他の検知回路から受信した分配データが正しいことを示す監視結果を受け取り、前記検証回路は、自身の監視結果及び受信した監視結果を用いて、前記保護制御回路が改ざんされているか否かを判断し、前記送信回路は、前記保護制御回路が改ざんされているか否かを示す判断結果を送信する。
(b)本発明の別の態様は、保護対象コンピュータプログラムを保護する保護制御モジュールと、前記保護制御モジュールを監視するためのn個の検知モジュールと、管理装置とを含む改ざん監視システムである。
前記保護制御モジュールは、複数のコンピュータ命令が組み合わされて構成される制御用コンピュータプログラムを記憶しているメモリ部と、前記メモリ部に記憶されている前記制御用コンピュータプログラムから1個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備える。前記制御用コンピュータプログラムは、コンピュータに、前記保護対象コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成ステップと、n個の前記検知モジュールのうち、d個の検知モジュールを選択する選択ステップと、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配ステップとを実行させる。
d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出し、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する。
前記管理装置は、前記検知モジュールのそれぞれから前記判断結果を受信し、受信した判断結果を基にして、前記保護制御モジュールの改ざんを管理する
前記検知モジュールは、複数のコンピュータ命令が組み合わされて構成される制御用コンピュータプログラムを記憶しているメモリ部と、前記メモリ部に記憶されている前記制御用コンピュータプログラムから1個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備える。前記制御用コンピュータプログラムは、コンピュータに、前記保護制御モジュールから1個の前記分配データを受信する受信ステップと、受信した前記分配データが正しいか否かを判断する検証ステップと、正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する送信ステップとを実行させる。前記受信ステップは、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取り、前記検証ステップは、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断し、前記送信ステップは、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する。
(19)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(20)上記の各装置を構成する構成要素の一部または全部は、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に置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(21)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(22)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピ
ュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(23)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。