(57)【特許請求の範囲】
【請求項１】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、
前記保護制御モジュールは、
暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号手段と、
前記出力データを、少なくともｋ（ｋ≧２）個の分割データに分割する分割手段と、
分割されたｋ個の分割データを、いずれかの検知モジュールに分配する分配手段と、
前記複数の検知モジュールのそれぞれは、
分配された分割データ、前記入力データと前記復号手段が正常動作を行った場合に期待される分割データの値とに基づいて生成された検証データ、および、入力データを用いて、分配された分割データが正しいか否かを判断する検証手段を備える
ことを特徴とする情報処理装置。
【請求項２】
前記保護制御モジュールは、前記出力データの分割方法を記述した分割情報を保持しており、
前記分割手段は、前記分割情報を用いて前記出力データを分割し、
前記分配手段は、さらに、各検知モジュールに分配される分割データそれぞれに対する検証データと前記入力データとを、各検知モジュールへ送信する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記各検知モジュールは、さらに、
他の検知モジュールから、当該他の検知モジュールに分配された分割情報を取得し、  予め与えられた判定情報に基づいて、他の検知モジュールの検証手段により検証処理が行われたか否かを確認する検証確認手段を備える
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記検知モジュールのそれぞれは、
前記検証手段による検証後、分配された分割データを消去し、
他の検知モジュールが、分配された分割データを消去したか否かを確認する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記検知モジュールのそれぞれは、
他の検知モジュールの改ざん検証を行う相互監視手段を備え、
前記相互監視手段により、改ざんが検出された場合に、前記他の検知モジュールが分割データを消去していないと判断し、改ざんが検出されない場合に、前記他の検知モジュールが分割データを消去したと判断する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記分割手段は、前記出力データに対して、互いに素であるｋ個の法を取ることにより、ｋ個の分割データに分割し、
前記分割情報は、分割数ｋおよびｋ個の法の値を示し、
前記判定情報は、ｋ個の法の値を乗算した値を示す
ことをと特徴とする請求項３に記載の情報処理装置。
【請求項７】
前記検知モジュールのそれぞれは、
検証結果を外部の管理装置へ送信する送信手段を備え、
前記複数の検知モジュールのうち、少なくとも１つは、
前記外部の管理装置により前記保護制御モジュールが改ざんされていると判断された場合に、前記保護制御モジュールを更新する更新手段を備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、
前記保護制御モジュールは、
暗号化された前記アプリケーションプログラムに対し、ｋ個の処理工程から成る復号処理を実行する復号手段と、
前記ｋ個の処理工程それぞれの出力データであるｋ個の被検証データを、前記複数の検知モジュールへ分配する分配手段とを備え、
前記複数の検知モジュールのそれぞれは、
分配された被検証データ、前記被検証データに対応する処理工程への入力データ、および、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断する検証手段を備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記保護制御モジュールは、
複数のアプリケーションと
ｋ個の検証基データを保持する検証基データ保持手段と、
前記ｋ個の検証基データから各検知モジュールへ配布するｋ個の検証データを生成する検証データ生成手段とを備え、
前記ｋ個の検証基データは、前記ｋ個の処理工程のそれぞれに対応し、前記複数のアプリケーションのそれぞれについて、暗号化されたアプリケーションと、前記復号手段が正常動作を行った場合に期待される各処理工程の入力データと出力データとの対応関係を示す検証値と、複数の前記検証値を結合したデータから生成された結合データ検証値とを含み、
前記検証データ生成手段は、前記ｋ個の検証基データから、前記復号手段が復号するアプリケーションに対応する検証値、および、当該アプリケーション以外の暗号化されたアプリケーションのデータを削除することにより、ｋ個の検証データを生成する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
各検知モジュールの検証手段は、
前記被検証データと受信した前記検証データに含まれる暗号化されたアプリケーションのデータとから検証値を生成し、
生成した前記検証値と受信した前記検証データに含まれる複数の検証値とを結合して結合データを生成し、
前記結合データから結合データ検証値を生成し、生成した結合データ検証値と前記受信した検証データに含まれる前記結合データ検証値とが一致するか否かを検証する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記検知モジュールのそれぞれは、
前記検証手段による検証後、受信した検証データを消去し、
他の検知モジュールが、受信した検証データを消去したか否かを確認する
ことを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記検知モジュールのそれぞれは、
他の検知モジュールの改ざん検証を行う相互監視手段を備え、
前記相互監視手段により、改ざんが検出された場合に、前記他の検知モジュールが検証データを消去していないと判断し、改ざんが検出されない場合に、前記他の検知モジュールが前記検証データを消去したと判断する
ことを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、
前記保護制御モジュールは、
入力データに対して所定の処理を施し、出力データを出力する処理手段と、
前記複数の検知モジュールのそれぞれからチャレンジデータを受信するチャレンジデータ受信手段と、
前記処理手段にチャレンジデータを入力したときの出力データであるレスポンスデータを、各検知モジュールへ送信する送信手段とを備え、
前記複数の検知モジュールのそれぞれは、
複数のチャレンジデータについて、各チャレンジデータを入力データとしたときに前記処理手段が正常動作を行った場合に期待される出力データと前記チャレンジデータとの対応関係を示す検証データを保持する保持手段と、
１のチャレンジデータを前記保護制御モジュールへ送信するチャレンジデータ送信手段と、
前記保護制御モジュールから前記レスポンスデータを受信するレスポンスデータ受信手段と、
前記検証データを用いて、受信した前記レスポンスデータを検証する検証手段とを備え、
少なくとも２つの検知モジュールは、同一のレスポンスデータに基づいて前記保護制御モジュールを検証すること
を特徴とする請求項８に記載の情報処理装置。
【請求項１４】
前記検証データは、複数のチャレンジデータを含み、
前記チャレンジデータ送信手段は、前記検証データに含まれる前記複数のチャレンジデータから１のチャレンジデータを選択し、前記保護制御モジュールへ送信する
ことを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記保護制御モジュールは、
前記ｋ個の処理工程の処理順序を示す順序情報を生成し、
各検知モジュールへ、生成した前記順序情報を送信し、
各検知モジュールの検証手段は、
受信した前記順序情報が示す処理順序にしたがい、前記被検証データを検証する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１６】
各検知モジュールは、
当該検知モジュールが検証する処理工程の直前の処理工程に係る検証処理を行った検知モジュールから、前記被検証データを受信する被検証データ受信手段と、
前記検証手段による検証に成功すると、前記順序情報を参照し、次の処理工程に係る検証処理を行う検知モジュールを特定し、特定した前記検知モジュールへ被検証データを送信する被検証データ送信手段とを備え、
前記検証手段は、前記被検証データ受信手段が受信した前記被検証データを用いて、検証処理を行う
ことを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
各検知モジュールは、さらに、
前記受信手段が受信した前記被検証データと、前記入力データとが一致するか否かを検証する入力データ検証手段と、
前記被検証データと前記入力データとが一致しない場合、外部にその旨を通知する通知手段と
を備える特徴とする請求項１６に記載の情報処理装置。
【請求項１８】
前記検証データは、外部の管理装置のデジタル署名を含む
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１９】
前記検証データは、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに対する外部の管理装置のデジタル署名である
ことを特徴とする請求項８に記載の情報処理装置。
【請求項２０】
前記検知モジュールのそれぞれは、
検証結果を外部の管理装置へ送信する送信手段を備え、
前記複数の検知モジュールのうち、少なくとも１つは、
前記管理装置により前記保護制御モジュールが改ざんされていると判断された場合に、前記保護制御モジュールを更新する更新手段を備える
ことを特徴とする請求項８に記載の情報処理装置。
【請求項２１】
入力された暗号化データ復号し、復号結果を出力データとして出力する復号手段と、前記出力データを複数の分割データに分割する分割手段とを備え、各分割データを検証する情報処理装置と接続された管理装置であって、
前記入力データと前記復号手段が正常動作を行った場合に期待される各分割データとから、検証基データを生成する検証基データ生成手段と、
前記検証基データを前記情報処理装置へ送信する送信手段と
を備えることを特徴とする管理装置。
【請求項２２】
前記管理装置は、さらに、
前記情報処理装置から各分割データの検証結果を受信する受信手段と、
受信した前記複数の検証結果から、前記復号手段が改ざんされているか否かを判断する判断手段と、
前記判断手段により改ざんされていると判断された場合、前記情報処理装置へ前記復号手段の更新を指示する更新指示手段と
を備えることを特徴とする請求項２１に記載の管理装置。
【請求項２３】
入力された暗号化データを複数の処理工程を経て復号する復号手段を備え、各処理工程を検証する情報処理装置と接続された管理装置であって、
前記複数の処理工程への入力データと前記復号手段が正常動作を行った場合に期待される各処理工程からの出力データとから、検証基データを生成する検証基データ生成手段と、
生成した前記検証基データを前記情報処理装置へ送信する送信手段と
を備えることを特徴とする請求項２１に記載の管理装置。
【請求項２４】
前記情報処理装置の前記復号手段は、暗号化された複数のアプリケーションを復号し、
前記検証基データ生成手段は、
前記複数の処理工程のそれぞれに対応し、前記複数のアプリケーションのそれぞれについて、暗号化されたアプリケーションと、前記復号手段が正常動作を行った場合に期待される各処理工程の入力データと出力データとの対応関係を示す検証値と、複数の前記検証値を結合したデータから生成された結合データ検証値とを含む複数個の前記検証基データを生成する
ことを特徴とする請求項２３に記載の管理装置。
【請求項２５】
複数のチャレンジデータを生成するチャレンジデータ生成手段と、
各チャレンジデータを入力データとして、所定の処理が正常動作した場合に期待される出力データとの対応関係を示す検証データを生成する検証データ生成手段と、
情報処理装置へ前記チャレンジデータと前記検証データとを送信する送信手段と
を備えることを特徴とする請求項２３に記載の管理装置。
【請求項２６】
情報処理装置と管理装置とから構成される不正モジュール検知システムであって、
前記情報処理装置は、
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含み、
前記保護制御モジュールは、
暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号手段と、
前記出力データを、少なくともｋ（ｋ≧２）個の分割データに分割する分割手段と、
分割されたｋ個の分割データを、いずれかの検知モジュールに分配する分配手段とを備え、
前記複数の検知モジュールのそれぞれは、
分配された分割データ、前記入力データと前記復号手段が正常動作を行った場合に期待される分割データの値とに基づいて生成された検証データ、および、入力データを用いて、分配された分割データが正しいか否かを判断する検証手段を備え、
前記管理装置は、
前記入力データと前記復号手段が正常動作を行った場合に期待される各分割データとから、前記検証データを含む検証基データを生成する検証基データ生成手段と、
前記検証基データを前記情報処理装置へ送信する送信手段とを備える
ことを特徴とする不正モジュール検知システム。
【請求項２７】
情報処理装置と管理装置とから構成される不正モジュール検知システムであって、
前記情報処理装置は、
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含み、
前記保護制御モジュールは、
暗号化された前記アプリケーションプログラムに対し、ｋ個の処理工程から成る復号処理を実行する復号手段と、
前記ｋ個の処理工程それぞれの出力データであるｋ個の被検証データを、前記複数の検知モジュールへ分配する分配手段とを備え、
前記複数の検知モジュールのそれぞれは、
分配された被検証データ、前記被検証データに対応する処理工程への入力データ、および、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断する検証手段を備え、
前記管理装置は、
前記複数の処理工程への入力データと前記復号手段が正常動作を行った場合に期待される各処理工程からの出力データとから、前記検証データを含む検証基データを生成する検証基データ生成手段と、
生成した前記検証基データを前記情報処理装置へ送信する送信手段とを備える
ことを特徴とする不正モジュール検知システム。
【請求項２８】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置で用いられる不正モジュール検知方法であって、
前記保護制御モジュールにより、
暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号ステップと、
前記出力データを、少なくともｋ（ｋ≧２）個の分割データに分割するステップと、
分割されたｋ個の分割データを、いずれかの検知モジュールに分配するステップとを行い、
前記複数の検知モジュールのそれぞれにより、
分配された分割データ、前記入力データと前記復号ステップが正常動作を行った場合に期待される分割データの値とに基づいて生成された検証データ、および、入力データを用いて、分配された分割データが正しいか否かを判断するステップを行う
ことを特徴とする不正モジュール検知方法。
【請求項２９】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置で用いられる不正モジュール検知プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記不正モジュール検知プログラムは、
前記保護制御モジュールに、
暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号ステップと、
前記出力データを、少なくともｋ（ｋ≧２）個の分割データに分割する分割ステップと、
分割されたｋ個の分割データを、いずれかの検知モジュールに分配する分配ステップとを実行させ、
前記複数の検知モジュールのそれぞれに、
分配された分割データ、前記入力データと前記復号ステップが正常動作を行った場合に期待される分割データの値とに基づいて生成された検証データ、および、入力データを用いて、分配された分割データが正しいか否かを判断する検証ステップを実行させる
ことを特徴とする記録媒体。
【請求項３０】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置で用いられる集積回路であって、
前記保護制御モジュールは、
暗号化された前記アプリケーションプログラムに対し、ｋ個の処理工程から成る復号処理を実行する復号手段と、
前記ｋ個の処理工程それぞれの出力データであるｋ個の被検証データを、前記複数の検知モジュールへ分配する分配手段とを備え、
前記複数の検知モジュールのそれぞれは、
分配された被検証データ、前記被検証データに対応する処理工程への入力データ、および、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断する検証手段を備える
ことを特徴とする集積回路。
【請求項３１】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置で用いられる不正モジュール検知方法であって、
前記保護制御モジュールにより、
暗号化された前記アプリケーションプログラムに対し、ｋ個の処理工程から成る復号処理を実行するステップと、
前記ｋ個の処理工程それぞれの出力データであるｋ個の被検証データを、前記複数の検知モジュールへ分配するステップとを行い、
前記複数の検知モジュールのそれぞれにより、
分配された被検証データ、前記被検証データに対応する処理工程への入力データ、および、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断するステップを行う
ことを特徴とする不正モジュール検知方法。
【請求項３２】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置で用いられる不正モジュール検知プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記不正モジュール検知プログラムは、
前記保護制御モジュールに、
暗号化された前記アプリケーションプログラムに対し、ｋ個の処理工程から成る復号処理を実行する復号ステップと、
前記ｋ個の処理工程それぞれの出力データであるｋ個の被検証データを、前記複数の検知モジュールへ分配する分配ステップとを実行させ、
前記複数の検知モジュールのそれぞれに、
分配された被検証データ、前記被検証データに対応する処理工程への入力データ、および、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断する検証ステップを実行させる
ことを特徴とする記録媒体。
【請求項３３】
アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置で用いられる集積回路であって、
前記保護制御モジュールは、
暗号化された前記アプリケーションプログラムに対し、ｋ個の処理工程から成る復号処理を実行する復号手段と、
前記ｋ個の処理工程それぞれの出力データであるｋ個の被検証データを、前記複数の検知モジュールへ分配する分配手段とを備え、
前記複数の検知モジュールのそれぞれは、
分配された被検証データ、前記被検証データに対応する処理工程への入力データ、および、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断する検証手段を備える
ことを特徴とする集積回路。
【請求項３４】
入力された暗号化データ復号し、復号結果を出力データとして出力する復号手段と、前記出力データを複数の分割データに分割する分割手段を備え、各分割データを検証する情報処理装置と接続された管理装置で用いられる管理方法であって、
前記入力データと前記復号手段が正常動作を行った場合に期待される各分割データとから、検証基データを生成するステップと、
前記検証基データを前記情報処理装置へ送信するステップと
を含むことを特徴とする管理方法。
【請求項３５】
入力された暗号化データ復号し、復号結果を出力データとして出力する復号手段と、前記出力データを複数の分割データに分割する分割手段とを備え、各分割データを検証する情報処理装置と接続された管理装置で用いられる管理プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記管理プログラムは、前記管理装置に
前記入力データと前記復号手段が正常動作を行った場合に期待される各分割データとから、検証基データを生成するステップと、
前記検証基データを前記情報処理装置へ送信するステップとを実行させる
ことを特徴とする記録媒体。
【請求項３６】
入力された暗号化データ復号し、復号結果を出力データとして出力する復号手段と、前記出力データを複数の分割データに分割する分割手段とを備え、各分割データを検証する情報処理装置と接続された管理装置で用いられる集積回路であって、  前記入力データと前記復号手段が正常動作を行った場合に期待される各分割データとから、検証基データを生成する検証基データ生成手段と、
前記検証基データを前記情報処理装置へ送信する送信手段と
を備えることを特徴とする集積回路。
【請求項３７】
入力された暗号化データを複数の処理工程を経て復号する復号手段を備え、各処理工程を検証する情報処理装置と接続された管理装置で用いられる管理方法であって、
前記複数の処理工程への入力データと前記復号手段が正常動作を行った場合に期待される各処理工程からの出力データとから、検証基データを生成するステップと、
生成した前記検証基データを前記情報処理装置へ送信するステップと
を含むことを特徴とする管理方法。
【請求項３８】
入力された暗号化データを複数の処理工程を経て復号する復号手段を備え、各処理工程を検証する情報処理装置と接続された管理装置で用いられる管理プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記管理プログラムは、前記管理装置に、
前記複数の処理工程への入力データと前記復号手段が正常動作を行った場合に期待される各処理工程からの出力データとから、検証基データを生成するステップと、
生成した前記検証基データを前記情報処理装置へ送信するステップと
を含むことを特徴とする記録媒体。
【請求項３９】
入力された暗号化データを複数の処理工程を経て復号する復号手段を備え、各処理工程を検証する情報処理装置と接続された管理装置で用いられる集積回路であって、
前記複数の処理工程への入力データと前記復号手段が正常動作を行った場合に期待される各処理工程からの出力データとから、検証基データを生成する検証基データ生成手段と、    
生成した前記検証基データを前記情報処理装置へ送信する送信手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不正動作を行う可能性のあるモジュールを特定する技術に関する。
【背景技術】
【０００２】
近年、秘匿データを有しているアプリケーションプログラムが、悪意のある第三者（以下、「攻撃者」という）に解析されないようにするため、ソフトウェアによってアプリケーションプログラムを保護する技術が開発されつつある。
ソフトウェアによってアプリケーションプログラムを保護する技術として、例えば、ハッシュ値を用いた改ざん検証や、アプリケーションプログラムを利用しない時には暗号化して保存しておき、利用する時にのみ復号してメモリへロードする復号ロード機能等がある。
【０００３】
ところが、このような技術を利用しても、アプリケーションプログラムを保護するソフトウェア（以下、「保護制御モジュール」という）自体が攻撃者により改ざんされる可能性がある。保護制御モジュールが改ざんされると、アプリケーションプログラムが攻撃者の攻撃にさらされることになる。そこで、保護制御モジュールの改ざん検出を行う検知モジュールを用いて、保護制御モジュールの改ざん検出を行っている。
【０００４】
検知モジュールは、保護制御モジュールのすべてデータを読み込み、ＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値を計算することにより、保護制御モジュールの改ざん検出を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】日本国特許第３０５６７３２号公報
【特許文献２】ＷＯ２００８／０９９６８２
【非特許文献】
【０００６】
【非特許文献１】岡本龍明、山本博資、「現代暗号」、産業図書（１９９７年）
【非特許文献２】ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｘ．５０９  （１９９７  Ｅ）：  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  −  Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  −  Ｔｈｅ  Ｄｉｒｅｃｔｏｒｙ：  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ，１９９７
【非特許文献３】Ｆ．Ｐｒｅｐａｒａｔａ，Ｇ． Ｍｅｔｚｅ ａｎｄ  Ｒ．Ｔ． Ｃｈｉｅｎ，“Ｏｎ  Ｔｈｅ  Ｃｏｎｎｅｃｔｉｏｎ  ＡｓｓｉｇｎｍｅｎｔＰｒｏｂｌｅｍ  ｏｆ  Ｄｉａｇｎｏｓａｂｌｅ  Ｓｙｓｔｅｍｓ，”  ＩＥＥＥ  Ｔｒａｎｓ．  Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｍｐｕｔｅｒｓ，ｖｏｌ．１６，ｐｐ．８４８−８５４，１９６８．
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、保護制御モジュールの改ざん検出を行う検知モジュールが改ざんされセキュリティが劣化している場合、保護制御モジュールに含まれる鍵データや保護制御モジュールの機能自体を、検知モジュールに不正利用される危険性がある。そうすると、検知モジュールによって、不正なアプリケーションがインストールされ、当該アプリケーションによって、ユーザの個人情報やコンテンツなどが漏えいする可能性がある。
【０００８】
本発明は、上記の問題点に鑑みなされたものであって、保護制御モジュールの鍵データや機能を検知モジュールに知られることなく、保護制御モジュールの改ざん検出を行うことができる情報処理装置、管理装置、不正モジュール検知システム、不正モジュール検知方法、不正モジュール検知プログラムを記録している記録媒体、管理方法、管理プログラムを記録している記録媒体および集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、本発明は、アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、前記保護制御モジュールは、暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号手段と、前記出力データを、少なくともｋ（ｋ≧２）個の分割データに分割する分割手段と、分割されたｋ個の分割データを、いずれかの検知モジュールに分配する分配手段と、前記複数の検知モジュールのそれぞれは、分配された分割データ、前記入力データと前記復号手段が正常動作を行った場合に期待される分割データの値とに基づいて生成された検証データ、および、入力データを用いて、分配された分割データが正しいか否かを判断する検証手段を備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、各検知モジュールは、保護制御モジュール自体のデータを用いた検証を行わず、保護制御モジュールが実行するアプリケーションの復号処理を検証するので、各検知モジュールに対して、保護制御モジュールが有する秘匿データが漏洩するのを防止することができる。
また、本発明によれば、複数の検知モジュールが、それぞれ異なる分割データについて検証を行うので、各検知モジュールに対して、アプリケーションのデータが漏洩するのを防止することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１における不正モジュール検知システム１の全体構成図である。
【図２】実施の形態１における保護制御モジュール１２０のブロック図である。
【図３】実施の形態１における検知モジュール１３１のブロック図である。
【図４】実施の形態１における機器１００のハードウェア構成図である。
【図５】実施の形態１における機器１００のソフトウェア階層図である。
【図６】実施の形態１における判断部２１０のブロック図である。
【図７】実施の形態１における検証基データ配布部２２０のブロック図である。
【図８】実施の形態１における不正モジュール検知システム１の全体の動作を示すフローチャートである。
【図９】実施の形態１における初期設計処理のシーケンス図である。
【図１０】実施の形態１における検知モジュール初期化処理のフローチャートである。
【図１１】実施の形態１における検証基データ生成処理のフローチャートである。
【図１２】実施の形態１におけるデータ分割を説明するための図である。
【図１３】実施の形態１における分割データ１の検証データ（証明書）７０１のデータ構成を示す図である。
【図１４】実施の形態１における分割データ２の検証データ（証明書）７０２のデータ構成を示す図である。
【図１５】実施の形態１における分割データ３の検証データ（証明書）７０３のデータ構成を示す図である。
【図１６】実施の形態１における検知処理のシーケンス図である。
【図１７】実施の形態１における検知処理のシーケンス図である。
【図１８】実施の形態１における検証基データ更新処理のシーケンス図である。
【図１９】実施の形態１における相互監視処理のシーケンス図である。
【図２０】実施の形態２における検知処理のシーケンス図である。
【図２１】実施の形態２における検知処理のシーケンス図である。
【図２２】実施の形態２における検知処理のシーケンス図である。
【図２３】実施の形態３における保護制御モジュール１２０ａのブロック図である。
【図２４】実施の形態３における検知モジュール１３１ａのブロック図である。
【図２５】実施の形態３における検証基データ配布部２２０ａのブロック図である。
【図２６】実施の形態３における不正モジュール検知システムの全体の動作を示すフローチャートである。
【図２７】実施の形態３における初期設計処理のシーケンス図である。
【図２８】実施の形態３における初期設計処理のシーケンス図である。
【図２９】実施の形態３における検知モジュール初期化処理のフローチャートである。
【図３０】実施の形態３における解析・判断処理のシーケンス図である。
【図３１】実施の形態３における相互認証処理のシーケンス図である。
【図３２】実施の形態３における相互認証処理のシーケンス図である。
【図３３】実施の形態３における回復処理のフローチャートである。
【図３４】実施の形態３における相互監視処理のシーケンス図である。
【図３５】実施の形態３における更新処理のシーケンス図である。
【図３６】実施の形態３における更新処理のシーケンス図である。
【図３７】実施の形態３における相互監視処理と更新処理との連携動作について説明するための図である。
【図３８】実施の形態３における再暗号化処理のシーケンス図である。
【図３９】実施の形態３における次ラウンド準備処理のシーケンス図である。
【図４０】実施の形態４における不正モジュール検知システム２の全体構成図である。
【図４１】実施の形態４における更新モジュール１４１のブロック図である。
【図４２】実施の形態４における保護制御モジュール１２０ｂのブロック図である。
【図４３】実施の形態４におけるアクセス制御モジュール１４０のブロック図である。
【図４４】実施の形態４における機器１００ｂのハードウェア構成図である。
【図４５】実施の形態４における機器１００ｂのソフトウェア階層図である。
【図４６】実施の形態４における判断部２１０ｂのブロック図である。
【図４７】実施の形態４における更新用ソフトウェア配布部２４０のブロック図である。
【図４８】実施の形態４におけるモジュール無効化部２５０のブロック図である。
【図４９】実施の形態４における不正モジュール検知システム２の全体の動作を示すフローチャートである。
【図５０】実施の形態４における初期設計処理を説明するための図である。
【図５１】実施の形態４における初期設計処理のシーケンス図である。
【図５２】実施の形態４における更新モジュール初期化処理のフローチャートである。
【図５３】実施の形態４における検知処理のシーケンス図である。
【図５４】実施の形態４における解析・判断処理のシーケンス図である。
【図５５】実施の形態４における相互認証処理のシーケンス図である。
【図５６】実施の形態４における相互認証処理のシーケンス図である。
【図５７】実施の形態４における回復処理のフローチャートである。
【図５８】実施の形態４における相互監視処理のシーケンス図である。
【図５９】実施の形態４における更新処理のシーケンス図である。
【図６０】実施の形態４における更新処理のシーケンス図である。
【図６１】実施の形態４における相互監視処理と更新処理との連携動作について説明するための図である。
【図６２】実施の形態４における再暗号化処理のシーケンス図である。
【図６３】実施の形態４における次ラウンド準備処理のシーケンス図である。
【図６４】実施の形態４における無効化処理のシーケンス図である。
【図６５】実施の形態５における保護制御モジュール１２０ｃのブロック図である。
【図６６】実施の形態５における更新モジュール１４１ｃのブロック図である。
【図６７】実施の形態５における更新用ソフトウェア配布部２４０ｃのブロック図である。
【図６８】実施の形態５における初期設計処理のシーケンス図である。
【図６９】実施の形態５における初期設計処理のシーケンス図である。
【図７０】実施の形態５における更新モジュール初期化処理のフローチャートである。
【図７１】実施の形態５における検証基データ生成処理のフローチャートである。
【図７２】実施の形態５における検証基データ１２００のデータ構成を示す図である。
【図７３】実施の形態５における検知処理のシーケンス図である。
【図７４】実施の形態５における再暗号化処理のシーケンス図である。
【図７５】実施の形態５における次ラウンド準備処理のシーケンス図である。
【図７６】実施の形態５における検証基データ更新処理のシーケンス図である。
【図７７】実施の形態６において、復号処理を複数の復号部分処理に分割する具体例を説明するための図である。
【図７８】実施の形態６における検証基データ１３００のデータ構成を示す図である。
【図７９】実施の形態６における検証基データ生成処理のフローチャートである。
【図８０】実施の形態６における検知処理のシーケンス図である。
【図８１】実施の形態６における検知処理のシーケンス図である。
【図８２】実施の形態６における復号部分処理１の検証データ１３０１のデータ構成を示す図である。
【図８３】実施の形態６における復号部分処理２の検証データ１３０２のデータ構成を示す図である。
【図８４】実施の形態６における復号部分処理３の検証データ１３０３のデータ構成を示す図である。
【図８５】実施の形態７における検証基データ１４００のデータ構成を示すである。
【図８６】実施の形態７における検証データ１４０１のデータ構成を示す図である。
【図８７】実施の形態８における検知処理のシーケンス図である。
【図８８】実施の形態８における検知処理のシーケンス図である。
【図８９】実施の形態９における検証データ１５００のデータ構成を示す図である。
【図９０】実施の形態９における初期設計処理のシーケンス図である。
【図９１】実施の形態９における初期設計処理のシーケンス図である。
【図９２】実施の形態９における検証データ生成処理のフローチャートである。
【図９３】実施の形態９における検知処理のシーケンス図である。
【図９４】実施の形態９における検知処理のシーケンス図である。
【図９５】実施の形態９における次ラウンド準備処理のシーケンス図である。
【図９６】実施の形態９における検証データ更新処理のシーケンス図である。
【図９７】実施の形態１０における検知処理のシーケンス図である。
【図９８】実施の形態１０における検知処理のシーケンス図である。
【図９９】実施の形態１０における検知処理のシーケンス図である。
【図１００】変形例８におけるアプリの分割方法の具体例を説明するための図である。
【図１０１】変形例４１における検証基データ１６００のデータ構成を示す図である。
【発明を実施するための形態】
【００１２】
請求項１に記載の態様は、アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、前記保護制御モジュールは、暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号手段と、前記出力データを、少なくともｋ（ｋ≧２）個の分割データに分割する分割手段と、分割されたｋ個の分割データを、いずれかの検知モジュールに分配する分配手段と、前記複数の検知モジュールのそれぞれは、分配された分割データ、前記入力データと前記復号手段が正常動作を行った場合に期待される分割データの値とに基づいて生成された検証データ、および、入力データを用いて、分配された分割データが正しいか否かを判断する検証手段を備えることを特徴とする。
【００１３】
請求項２に記載の態様は、前記保護制御モジュールは、前記出力データの分割方法を記述した分割情報を保持しており、前記分割手段は、前記分割情報を用いて前記出力データを分割し、前記分配手段は、さらに、各検知モジュールに分配される分割データそれぞれに対する検証データと前記入力データとを、各検知モジュールへ送信することを特徴とする。
【００１４】
この構成によると、保護制御モジュールは、前記複数の検知モジュールに分配するための分割データを生成することができる。
請求項３に記載の態様は、前記各検知モジュールは、さらに、他の検知モジュールから、当該他の検知モジュールに分配された分割情報を取得し、予め与えられた判定情報に基づいて、他の検知モジュールの検証手段により検証処理が行われたか否かを確認する検証確認手段を備えることを特徴とする。
【００１５】
この構成によると、各検知モジュールは、前記出力データから生成されたｋ個の分割データがすべて検証されているかを確認することができるので、保護制御モジュールの不正をより正確に検知することができる。
請求項４に記載の態様は、前記検知モジュールのそれぞれは、前記検証手段による検証後、分配された分割データを消去し、他の検知モジュールが、分配された分割データを消去したか否かを確認することを特徴とする。
【００１６】
この構成によると、検知モジュール内に分割データが蓄積されないので、分割データから保護制御モジュールの情報やアプリケーションの情報が漏洩するのを防止することができる。
請求項５に記載の態様は、前記検知モジュールのそれぞれは、他の検知モジュールの改ざん検証を行う相互監視手段を備え、前記相互監視手段により、改ざんが検出された場合に、前記他の検知モジュールが分割データを消去していないと判断し、改ざんが検出されない場合に、前記他の検知モジュールが分割データを消去したと判断することを特徴とする。
【００１７】
検知モジュールは分割データを消去する機能（消去プログラム）を有する。そこで、相互監視処理により、検知モジュール自体が改ざんされていないことが確認できれば、前記消去プログラムが正常に動作し、分割データが消去されたことを保証することができる。
請求項６に記載の態様は、前記分割手段は、前記出力データに対して、互いに素であるｋ個の法を取ることにより、ｋ個の分割データに分割し、前記分割情報は、分割数ｋおよびｋ個の法の値を示し、前記判定情報は、ｋ個の法の値を乗算した値を示すことをと特徴とする。
【００１８】
この構成によると、中国人の剰余定理を用いることにより、ｋ個の分割データから基の出力データを復元することが可能となる。
請求項７に記載の態様は、前記検知モジュールのそれぞれは、検証結果を外部の管理装置へ送信する送信手段を備え、前記複数の検知モジュールのうち、少なくとも１つは、前記外部の管理装置により前記保護制御モジュールが改ざんされていると判断された場合に、前記保護制御モジュールを更新する更新手段を備えることを特徴とする。
【００１９】
この構成によると、外部の正当な管理装置が、各検知モジュールによる検証処理を用いて、保護制御モジュールが改ざんされていると判断する場合には、改ざんされた保護制御モジュールを新しい保護制御モジュールに更新することができるので、アプリケーションが保持する秘匿データが漏洩するのを防止することができる。
請求項８に記載の態様は、アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、前記保護制御モジュールは、暗号化された前記アプリケーションプログラムに対し、ｋ個の処理工程から成る復号処理を実行する復号手段と、前記ｋ個の処理工程それぞれの出力データであるｋ個の被検証データを、前記複数の検知モジュールへ分配する分配手段とを備え、前記複数の検知モジュールのそれぞれは、分配された被検証データ、前記被検証データに対応する処理工程への入力データ、および、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断する検証手段を備えることを特徴とする。
【００２０】
この構成によると、各検知モジュールは、保護制御モジュール自体のデータを用いた検証を行わず、保護制御モジュールが実行するアプリケーションの復号処理を検証するので、各検知モジュールに対して、保護制御モジュールが有する秘匿データが漏洩するのを防止することができる。
また、本発明によれば、複数の検知モジュールが、それぞれ異なる処理工程についての検証を行うので、各検知モジュールに対して、アプリケーションのデータが漏洩するのを防止することができる。
【００２１】
また、本発明によれば、復号処理のうち、どの処理工程が改ざんされているかを検知することもできる。
請求項９に記載の態様は、前記保護制御モジュールは、複数のアプリケーションとｋ個の検証基データを保持する検証基データ保持手段と、前記ｋ個の検証基データから各検知モジュールへ配布するｋ個の検証データを生成する検証データ生成手段とを備え、前記ｋ個の検証基データは、前記ｋ個の処理工程のそれぞれに対応し、前記複数のアプリケーションのそれぞれについて、暗号化されたアプリケーションと、前記復号手段が正常動作を行った場合に期待される各処理工程の入力データと出力データとの対応関係を示す検証値と、複数の前記検証値を結合したデータから生成された結合データ検証値とを含み、前記検証データ生成手段は、前記ｋ個の検証基データから、前記復号手段が復号するアプリケーションに対応する検証値、および、当該アプリケーション以外の暗号化されたアプリケーションのデータを削除することにより、ｋ個の検証データを生成することを特徴とする。
【００２２】
請求項１０に記載の態様は、各検知モジュールの検証手段は、前記被検証データと受信した前記検証データに含まれる暗号化されたアプリケーションのデータとから検証値を生成し、生成した前記検証値と受信した前記検証データに含まれる複数の検証値とを結合して結合データを生成し、前記結合データから結合データ検証値を生成し、生成した結合データ検証値と前記受信した検証データに含まれる前記結合データ検証値とが一致するか否かを検証することを特徴とする。
【００２３】
この構成によると、保護制御モジュールから各検知モジュールへ、保護制御モジュールが復号したアプリケーションに関する情報のみが開示された検証データが分配されるので、検証に不要な情報（他のアプリケーションに関する情報）が、検知モジュールが開示されるのを防止することができる。
各検知モジュールは、与えられた検証データを用いて、保護制御モジュールの検証を行うことができる。
【００２４】
請求項１１に記載の態様は、前記検知モジュールのそれぞれは、前記検証手段による検証後、受信した検証データを消去し、他の検知モジュールが、受信した検証データを消去したか否かを確認することを特徴とする。
この構成によると、検知モジュール内に検証データが蓄積されないので、検証データから保護制御モジュールの情報やアプリケーションの情報が漏洩するのを防止することができる。
【００２５】
請求項１２に記載の態様は、前記検知モジュールのそれぞれは、他の検知モジュールの改ざん検証を行う相互監視手段を備え、前記相互監視手段により、改ざんが検出された場合に、前記他の検知モジュールが検証データを消去していないと判断し、改ざんが検出されない場合に、前記他の検知モジュールが前記検証データを消去したと判断することを特徴とする。
【００２６】
この構成によると、検知モジュールは検証データを消去する機能（消去プログラム）を有する。そこで、相互監視処理により、検知モジュール自体が改ざんされていないことが確認できれば、前記消去プログラムが正常に動作し、検証データが消去されたことを保証することができる。
請求項１３に記載の態様は、アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、前記保護制御モジュールは、入力データに対して所定の処理を施し、出力データを出力する処理手段と、前記複数の検知モジュールのそれぞれからチャレンジデータを受信するチャレンジデータ受信手段と、前記処理手段にチャレンジデータを入力したときの出力データであるレスポンスデータを、各検知モジュールへ送信する送信手段とを備え、前記複数の検知モジュールのそれぞれは、複数のチャレンジデータについて、各チャレンジデータを入力データとしたときに前記処理手段が正常動作を行った場合に期待される出力データと前記チャレンジデータとの対応関係を示す検証データを保持する保持手段と、１のチャレンジデータを前記保護制御モジュールへ送信するチャレンジデータ送信手段と、前記保護制御モジュールから前記レスポンスデータを受信するレスポンスデータ受信手段と、前記検証データを用いて、受信した前記レスポンスデータを検証する検証手段とを備え、少なくとも２つの検知モジュールは、同一のレスポンスデータに基づいて前記保護制御モジュールを検証することを特徴とする。
【００２７】
請求項１４に記載の態様は、前記検証データは、複数のチャレンジデータを含み、前記チャレンジデータ送信手段は、前記検証データに含まれる前記複数のチャレンジデータから１のチャレンジデータを選択し、前記保護制御モジュールへ送信することを特徴とする。
この構成によると、各検知モジュールは、保護制御モジュール自体のデータを用いた検証を行わず、保護制御モジュールが実行する処理を検証するので、各検知モジュールに対して、保護制御モジュールが有する秘匿データが漏洩するのを防止することができる。また、本発明によれば、各検知モジュールに対して、アプリケーションのデータが漏洩するのを防止することができる。
【００２８】
請求項１５に記載の態様は、前記保護制御モジュールは、前記ｋ個の処理工程の処理順序を示す順序情報を生成し、各検知モジュールへ、生成した前記順序情報を送信し、各検知モジュールの検証手段は、受信した前記順序情報が示す処理順序にしたがい、前記被検証データを検証することを特徴とする。
請求項１６に記載の態様は、各検知モジュールは、当該検知モジュールが検証する処理工程の直前の処理工程に係る検証処理を行った検知モジュールから、前記被検証データを受信する被検証データ受信手段と、前記検証手段による検証に成功すると、前記順序情報を参照し、次の処理工程に係る検証処理を行う検知モジュールを特定し、特定した前記検知モジュールへ被検証データを送信する被検証データ送信手段とを備え、前記検証手段は、前記被検証データ受信手段が受信した前記被検証データを用いて、検証処理を行うことを特徴とする。
【００２９】
請求項１７に記載の態様は、各検知モジュールは、さらに、前記受信手段が受信した前記被検証データと、前記入力データとが一致するか否かを検証する入力データ検証手段と、前記被検証データと前記入力データとが一致しない場合、外部にその旨を通知する通知手段とを備える特徴とする。
この構成によると、前記復号手段が、ｋ個の処理工程を正しい順序で実行したかいなかを検証することができる。
【００３０】
また、各処理工程が正しい順序で実行されていなければ、保護制御モジュールが不正動作を行っているとみなして、その旨を正当な管理装置へ通知することができる。
請求項１８に記載の態様は、前記検証データは、外部の管理装置のデジタル署名を含むことを特徴とする。
請求項１９に記載の態様は、前記検証データは、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに対する外部の管理装置のデジタル署名であることを特徴とする。
【００３１】
この構成により、検証データの正当性を保証することができる。
請求項２０に記載の態様は、前記検知モジュールのそれぞれは、検証結果を外部の管理装置へ送信する送信手段を備え、前記複数の検知モジュールのうち、少なくとも１つは、前記管理装置により前記保護制御モジュールが改ざんされていると判断された場合に、前記保護制御モジュールを更新する更新手段を備えることを特徴とする。
【００３２】
この構成によると、外部の正当な管理装置が、各検知モジュールによる検証処理を用いて、保護制御モジュールが改ざんされていると判断する場合には、改ざんされた保護制御モジュールを新しい保護制御モジュールに更新することができるので、アプリケーションが保持する秘匿データが漏洩するのを防止することができる。
請求項２１に記載の態様によると、入力された暗号化データ復号し、復号結果を出力データとして出力する復号手段と、前記出力データを複数の分割データに分割する分割手段とを備え、各分割データを検証する情報処理装置と接続された管理装置であって、前記入力データと前記復号手段が正常動作を行った場合に期待される各分割データとから、検証基データを生成する検証基データ生成手段と、前記検証基データを前記情報処理装置へ送信する送信手段とを備えることを特徴とする。
【００３３】
この構成によると、情報処理層装置は、管理装置によって生成された検証基データを用いて、分割データ（復号手段の処理）を検証することができるので、検証の正当性を保証することができる。
請求項２２に記載の態様は、前記管理装置は、さらに、前記情報処理装置から各分割データの検証結果を受信する受信手段と、受信した前記複数の検証結果から、前記復号手段が改ざんされているか否かを判断する判断手段と、前記判断手段により改ざんされていると判断された場合、前記情報処理装置へ前記復号手段の更新を指示する更新指示手段とを備えることを特徴とする。
【００３４】
この構成によると、改ざんされた復号手段を更新することができるので、情報処理装置が保持する秘匿データが漏洩するのを防止することができる。
請求項２３に記載の態様は、入力された暗号化データを複数の処理工程を経て復号する復号手段を備え、各処理工程を検証する情報処理装置と接続された管理装置であって、前記複数の処理工程への入力データと前記復号手段が正常動作を行った場合に期待される各処理工程からの出力データとから、検証基データを生成する検証基データ生成手段と、生成した前記検証基データを前記情報処理装置へ送信する送信手段とを備えることを特徴とする。
【００３５】
請求項２４に記載の態様は、前記情報処理装置の前記復号手段は、暗号化された複数のアプリケーションを復号し、前記検証基データ生成手段は、前記複数の処理工程のそれぞれに対応し、前記複数のアプリケーションのそれぞれについて、暗号化されたアプリケーションと、前記復号手段が正常動作を行った場合に期待される各処理工程の入力データと出力データとの対応関係を示す検証値と、複数の前記検証値を結合したデータから生成された結合データ検証値とを含む複数個の前記検証基データを生成することを特徴とする。
【００３６】
請求項２５に記載の態様は、複数のチャレンジデータを生成するチャレンジデータ生成手段と、各チャレンジデータを入力データとして、所定の処理が正常動作した場合に期待される出力データとの対応関係を示す検証データを生成する検証データ生成手段と、情報処理装置へ前記チャレンジデータと前記検証データとを送信する送信手段とを備えることを特徴とする。  
【００３７】
この構成によると、情報処理層装置は、管理装置によって生成された検証基データを用いて、各処理工程を検証することができるので、検証の正当性を保証することができる。
以下では、本発明の実施の形態について、図面を参照しながら詳細に説明する。
＜実施の形態１＞
ここでは、実施の形態１として、本発明に係る情報処理装置および管理装置が適用された不正モジュール検知システム１について説明する。
１．不正モジュール検知システム１の構成
図１は、不正モジュール検知システム１の全体構成図である。
【００３８】
不正モジュール検知システム１は、図１に示すように、本発明に係る情報処理装置である機器１００、および、本発明の管理装置に係る管理装置２００から構成される。機器１００と管理装置２００とは、ネットワークを介して接続されている。
（１）機器１００の構成
機器１００は、ネットワークを介した様々なサービスをユーザに提供する機器である。例えば、機器１００は、コンテンツ配信サーバにアクセスし、音楽や映像などのコンテンツを購入して再生したり、金融機関のシステムにアクセスし、ネットバンキング（預金の残高照会や口座振り込みなど）を利用したりする。
【００３９】
図１に示すように、機器１００は、アプリケーションソフト（以下、「アプリ」という。）１１０、アプリ１１１、アプリ１１２、アプリ１１３、アプリ１１４、保護制御モジュール１２０、および、検知モジュール群１３０を含む。
アプリ１１０、１１１、１１２、１１３、１１４は、それぞれ、ネットワークを介して、機器１００を使用するユーザに、様々な機能を提供するためのソフトウェアである。例えば、コンテンツ配信サーバ（不図示）から音楽コンテンツや映像コンテンツを購入し、その購入したコンテンツを再生するソフトウェアや、金融機関のシステム（不図示）にアクセスし、残高確認や振り込みなどのネットバンキングを利用するためのソフトウェアである。
【００４０】
各アプリは、コンテンツ配信サーバや金融機関のシステムと認証を行うための認証鍵など、秘匿データを有している。秘匿データは、悪意のある第三者（以下、「攻撃者」という。）によりアプリから抜き取られ、不正に利用されないようにするために保護される必要があるデータである。
保護制御モジュール１２０は、攻撃者により各アプリが解析され、認証鍵などの秘匿データが抜き取られないように各アプリを保護するための機能を制御するモジュールである。アプリを保護するための機能としては、アプリを利用しない時には暗号化して保存しておき、アプリを利用する時にのみ復号してメモリへロードする復号ロード機能や、アプリが改ざんされていないかをチェックする改ざん検出機能、デバッガなどの解析ツールが動作しないかをチェックする解析ツール検出機能などがある。
【００４１】
保護制御モジュール１２０は、これらの機能の動作を制御し、各アプリが攻撃者によって解析されていないかなどをチェックする。攻撃者による攻撃を検出したときには、保護制御モジュール１２０は、攻撃が検出されたアプリの動作を停止し、当該アプリが利用していたメモリ、特に秘匿データが記録されたメモリ領域のクリア（例えば、メモリ領域を「０」で埋める）などの処理を行い、秘匿データの漏洩を防止する。
【００４２】
検知モジュール群１３０は、図１に示すように、３つの検知モジュール１３１、検知モジュール１３２、および、検知モジュール１３３から構成される。
検知モジュール１３１、１３２、１３３は、保護制御モジュール１２０が改ざんされているか否かを検証するために、保護制御モジュール１２０による暗号化コンテンツ復号処理の結果が正しいか否かを判断する。
【００４３】
また、検知モジュール１３１、１３２、１３３は、攻撃者によって検知モジュールが改ざんされ、改ざんされた検知モジュールが不正に利用されることを防止するために、相互監視処理を実施する。相互監視処理とは、検知モジュールが相互に改ざん検出処理を実施することである。これにより、検知モジュール群１３０に含まれる一部の検知モジュールが攻撃された場合であっても、それを検出することができるので、機器１００の信頼性が向上する。
【００４４】
各検知モジュールは、保護制御モジュール１２０についての検証結果、および、検知モジュール間の相互監視処理の結果を、ネットワークを介して管理装置２００へ送信する。
なお、以下では、アプリ１１０、１１１、１１２、１１３、１１４について、特にいずれかを特定しないで説明するときには、符号を省略することがある。
同様に、検知モジュール１３１、１３２、１３３について、特にいずれかを特定しないで説明するときには、符号を省略することがある。
（保護制御モジュール１２０の詳細な構成）
図２は、保護制御モジュール１２０の機能的な構成を示す機能ブロック図である。
【００４５】
同図に示すように、保護制御モジュール１２０は、受信部３０１、送信部３０２、制御部３０３、復号ロード部３０４、改ざん検出部３０５、解析ツール検出部３０６、暗復号鍵保持部３０７、検証基データ保持部３０８、検証データ生成部３０９、および、アプリ分割部３１０から構成される。
受信部３０１は、各検知モジュールから、分散情報や各種依頼などを受信する。
【００４６】
送信部３０２は、各検知モジュールへ、各種依頼などを送信する。
制御部３０３は、復号ロード部３０４、改ざん検出部３０５、および解析ツール検出部３０６を制御し、各アプリが攻撃者により攻撃されている場合に、それを検出する。
復号ロード部３０４は、暗号化されているアプリ１１０、１１１，１１２、１１３、１１４を実行するときに、暗復号鍵を用いて復号し、メモリ上にロードする処理を行う。また、アプリ１１０、１１１，１１２、１１３、１１４の実行中に、他のアプリへのコンテキストスイッチが発生すると、復号ロード部３０４は、メモリ上のデータを、暗復号鍵を用いて暗号化する。そして、再びアプリ１１０、１１１，１１２、１１３、１１４へコンテキストスイッチしたときに、暗号化したデータを復号する処理を行う。
【００４７】
改ざん検出部３０５は、各アプリが改ざんされているかどうか改ざん検出処理を実行する。改ざん検出処理には、各アプリに付加されている改ざん検出用の証明書を用いる方法と、ＭＡＣ値を比較する方法とがある。
解析ツール検出部３０６は、デバッガなどの解析ツールがインストールされたり、動作したときにそれを検出する。不正な攻撃者が各アプリを攻撃するために、解析ツールをインストールしたり、動作させることが想定されるからである。検出方法としては、例えば、ファイル名を検索する方法や、デバッガが使用する特殊なレジスタが使用されているかを調べる方法や、デバッガが設定する割り込みを検出する方法などを用いる。
【００４８】
暗復号鍵保持部３０７は、各アプリを暗復号するための暗復号鍵を保持する。
検証基データ保持部３０８は、管理装置２００から受信した検証基データを保持する。検証基データの構成は後述する。
検証データ生成部３０９は、検証基データ保持部３０８に保持している検証基データから検証データを生成する。検証データ生成処理は後述する。
【００４９】
アプリ分割部３１０は、復号ロード部３０４で復号した各アプリのデータを分割する。
（検知モジュール１３１の詳細な構成）
次に、検知モジュール１３１、１３２、１３３の詳細について説明する。
図３は、検知モジュール１３１の機能的な構成を示す機能ブロック図である。検知モジュール１３２、１３３も同様の構成を有する。
【００５０】
検知モジュール１３１は、受信部４０１、送信部４０２、制御部４０３、検証部４０４、ＭＡＣ値生成部４０５、ＭＡＣ値テーブル更新部４０６、および、検証データ保持部４０７から構成される。
受信部４０１は、管理装置２００から各種指示を受信する。また、受信部４０１は、他の検知モジュールから相互監視を行うために必要な、当該他の検知モジュールの本体を受信する。さらに、受信部４０１は、他のモジュールへ依頼した処理の結果や、他の検知モジュールによる保護制御モジュール１２０の検証結果などを受信する。
【００５１】
送信部４０２は、管理装置２００、保護制御モジュール１２０、および、他の検知モジュールへ、各種処理結果や証明書などのデータを送信する。
制御部４０３は、受信部４０１が受信した各種指示に基づいて、検証部４０４を制御し、保護制御モジュール１２０および他の検知モジュールの検証処理を行う。
検証部４０４は、検証データ保持部４０７に保持されている検証データを用いて、保護制御モジュール１２０が正常に動作しているかを検証する。
【００５２】
また、検証部４０４は、各検知モジュールに付加されている証明書や、事前に算出された検証用のＭＡＣ値などを用いて、各検知モジュールが改ざんされていないかを検証する。検証部４０４が、どのタイミングでどのモジュールの改ざん検出処理を行うのかは、予め、管理装置２００から与えられている。検証部４０４は、管理装置２００から改ざん検出対象のモジュールの変更や改ざん検出を行うタイミングの変更の指示があった場合には、指示に従って変更する。
【００５３】
ＭＡＣ値生成部４０５は、検証鍵を保持している。ＭＡＣ値生成部４０５は、検証部４０４が改ざん検出処理にＭＡＣ値を用いる場合、検証鍵を用いてＭＡＣ値を生成する。
ＭＡＣ値テーブル更新部４０６は、各モジュールのＭＡＣ値が格納されているＭＡＣ値テーブルを更新する。ＭＡＣ値テーブルには、モジュールを識別するためのモジュール識別子と、そのモジュールに対応するＭＡＣ値とが対になって格納されている。ＭＡＣ値生成部４０５は、改ざん検出処理の対象であるモジュールを取得し、ＭＡＣ値を計算する。検証部４０４は、計算されたＭＡＣ値とＭＡＣ値テーブルに格納されている対象モジュールのＭＡＣ値とを比較することにより改ざん検出を行う。
【００５４】
検証データ保持部４０７は、保護制御モジュール１２０の復号ロード部３０４が正常に動作するか否かを検証するための検証データを保持する。検証データは、保護制御モジュール１２０から与えられたものである。
なお、署名方式に関しては非特許文献１に詳しく説明されている。証明書に関しては非特許文献２に詳しく説明されている。また、分散情報に関しては特許文献２に詳しく説明されている。
（機器１００のハードウェア構成）
続いて、図４を用いて、機器１００のハードウェア構成について説明する。
【００５５】
図４に示すように、機器１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１７１、不揮発性メモリであるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲｅａｄＯｎｌｙ  Ｍｅｍｏｒｙ）１７２、ＲＡＭ（Ｒａｎｄｏｍ  ＡｃｃｅｓｓＭｅｍｏｒｙ）１７３、およびＮＩＣ（Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ）１７４などを含んで構成される。また、これらはバスを介して、相互に通信可能に接続されている。
【００５６】
ＥＥＰＲＯＭ１７２には、保護制御モジュール１２０、検知モジュール１３１、１３２、１３３、および、各アプリなどが格納されている。
ＥＥＰＲＯＭ１７２に格納されている各種モジュールをＣＰＵ１７１が実行することにより、各種モジュールの各機能部が実現される。各機能部は、具体的には、コンピュータプログラムによって記述されている。
【００５７】
ＲＡＭ１７３は、ＣＰＵ１７１のワークエリアとして用いられる。ＲＡＭ１７３には各検知モジュールおよび各アプリがロードされる。改ざん検出処理の対象となる検知モジュールは、ＲＡＭ１７３上で動作している更新モジュールである。
ＮＩＣ１７４は、ネットワークに接続するための拡張カードである。
（機器１００のソフトウェア階層）
続いて、図５を用いて、機器１００のソフトウェア階層について説明する。
【００５８】
図５に示すように、検知モジュール群１３０は、ＯＳ１８０の中に組み込まれている。アプリ１１０、１１１、１１２、１１３、１１４は、ＯＳ１８０上で動作し、保護制御モジュール１２０及びブートローダ１５０は、ＯＳ１８０の管理外にある。
機器１００の起動の際には、まず保護制御モジュール１２０および検知モジュール群１３０が起動された上でアプリが実行される。
（２）管理装置２００の構成
次に、図１に戻り、管理装置２００の構成について説明する。
【００５９】
管理装置２００は、保護制御モジュール１２０が正しく動作しているか否かを検証するために必要な検証基データを生成し、機器１００へ配布する装置である。管理装置２００は、判断部２１０、検証基データ配布部２２０、および通信部２３０から構成される。通信部２３０は、ネットワークを介して機器１００と通信を行う。なお、機器１００と管理装置２００との通信には、通信データを暗号化するセキュアな通信路を用いてもよい。
【００６０】
管理装置２００は、具体的には、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスクユニットなどを備えるコンピュータシステムである。ＣＰＵが、ＲＯＭまたはハードディスクユニットに記憶されているコンピュータプログラムにしたがって動作することにより、管理装置２００は、上記の機能を発揮する。
（判断部２１０の詳細な構成）
図６は、判断部２１０の構成を機能的に示す機能ブロック図である。同図に示すように、判断部２１０は、受信部５０１、送信部５０２、指示生成部５０３、およびモジュール特定部５０４から構成される。
【００６１】
受信部５０１は、各検知モジュールから、検証結果や各種依頼などを受信し、指示生成部５０３へ出力する。さらに、受信部５０１は、検証基データ配布部２２０から処理が完了した通知を受けると、指示生成部５０３にその旨を通知する。
送信部５０２は、指示生成部５０３によって生成された指示を、検証基データ配布部２２０へ送信する。
【００６２】
指示生成部５０３は、各検知モジュールから受信した改ざん検出結果（以下、「相互監視結果」ということがある。）を、モジュール特定部５０４に出力する。また、指示生成部５０３は、モジュール特定部５０４から、改ざんされている不正な検知モジュールを識別する情報を取得し、取得した情報を基に検証基データ配布部２２０に対する指示を生成する。また、指示生成部５０３は、各検知モジュールから検証データ生成依頼を受信すると、検証基データ配布部２２０に対する指示を生成する。
【００６３】
モジュール特定部５０４は、各検知モジュールから受信した相互監視結果を用いて、不正な検知モジュールを特定する。モジュール特定部５０４は、不正な検知モジュール識別する情報を指示生成部５０３へ出力する。
モジュール特定部５０４は、例えば、２つの検知モジュールが「改ざんされている」と判断した検知モジュールを、不正な更新モジュールであると特定する。
（検証基データ配布部２２０の詳細な構成）
図７は、検証基データ配布部２２０の構成を機能的に示す機能ブロック図である。
【００６４】
同図に示すように、検証基データ配布部２２０は、受信部６０１、送信部６０２、制御部６０３、認証部６０４、証明書生成部６０５、署名秘密鍵保持部６０６、暗号鍵保持部６０７、データ分割部６０８、アプリ保持部６０９、検証基データ生成部６１０、および保護制御モジュール保持部６１１から構成される。
受信部６０１は、各検知モジュールによる保護制御モジュールの検証結果、および、検知モジュール間の相互監視結果を受信する。
【００６５】
送信部６０２は、機器１００に対し、各アプリおよび保護制御モジュール１２０の改ざん検証の依頼や検知モジュール群１３０の相互監視処理の依頼、検証に必要な検証基データなどを送信する。
制御部６０３は、検証基データ配布部２２０内部の各構成要素を制御する。
認証部６０４は、各検知モジュール、および、保護制御モジュール１２０との間で相互認証を行う。
【００６６】
証明書生成部６０５は、署名秘密鍵保持部６０６に保持されている署名秘密鍵を用いて、保護制御モジュール１２０の復号ロード部３０４による暗号化アプリの復号処理に対する署名データを生成する。
署名秘密鍵保持部６０６は、証明書生成部６０５により署名データを生成するときに利用する管理装置２００の署名秘密鍵を保持する。
【００６７】
暗号鍵保持部６０７は、保護制御モジュール１２０と共有している暗号鍵を保持する。
データ分割部６０８は、保護制御モジュール１２０の復号ロード部３０４で実行される暗号化アプリの復号処理の出力データ（復号された平文のアプリのデータ）を、複数個の分割データに分割する。
アプリ保持部６０９は、機器１００にインストールする各アプリを保持する。
【００６８】
検証基データ生成部６１０は、復号ロード部３０４に入力される暗号化された各アプリのデータ（入力データ）と、復号ロード部３０４が正常に動作した場合に出力される平文の各アプリのデータをデータ分割部６０８により分割した各分割データとから検証基データを生成する。検証基データ生成部６１０は、生成した検証基データを機器１００へ送信する。検証基データの構成については後述する。
【００６９】
保護制御モジュール保持部６１１は、機器１００にインストールする保護制御モジュール１２０を保持する。
２．不正モジュール検知システム１の動作
（１）全体の動作概要
図８は、不正モジュール検知システム１全体の動作概要を示すフローチャートである。
【００７０】
先ず、機器１００が工場で製造される際に初期設計処理が行われる（ステップＳ１）。初期設計処理では、保護制御モジュール１２０を更新するために必要となる各種鍵データや、ソフトウェア更新後に必要となるデータ（秘密分散法を用いて分散した分散情報）などを検知モジュール１３１、１３２、１３３のそれぞれに埋め込む。
その後、機器１００が工場から出荷され、ユーザの利用に供される。
【００７１】
ユーザにより機器１００が利用される際には、機器１００内部では、保護制御モジュール１２０が、各アプリを攻撃者による攻撃から保護する。そして、検知モジュール１３１、１３２、１３３が保護制御モジュール１２０の検知処理を行う（ステップＳ２）。
また、不正モジュール検知システム１は、検知モジュール１３１、１３２、１３３が相互に改ざん検出を実行する相互監視処理を行う。相互監視処理は、ステップＳ２の検知処理の中で、定期的に実行される。
（２）初期設計処理の動作
ここでは、ステップＳ１の初期設計処理について説明する。
【００７２】
図９は、初期設計処理の動作を示すシーケンス図である。なお、ここでは、各検知モジュールがそれぞれ個別に行う処理を、検知モジュール群１３０が行う処理として記載している。
機器１００の工場製造時に、管理装置２００は、保護制御モジュール保持部６１１に保持されている保護制御モジュール１２０と、アプリ保持部６０９に保持されている各アプリを、機器１００に送信する（ステップＳ１１）。
【００７３】
機器１００は、受信したアプリや保護制御モジュール１２０をインストールする（ステップＳ１２）。また、機器１００は、アプリ、保護制御モジュール１２０に加えて、検知モジュール１３１、１３２、１３３や、機器１００の動作に必要なソフトウェアをインストールする。インストールされるソフトウェアには、改ざんの有無を検証するための証明書（改ざん検出用証明書）が付加されている。この改ざん検出用証明書は、管理装置２００の署名秘密鍵により署名が施されている。
【００７４】
ソフトウェアのインストールが終了すると、機器１００はソフトウェアが正常に動作するかをテストする初期化処理を行う（ステップＳ１３）。
検知モジュール群１３０は、検知モジュール初期化処理を行う（ステップＳ１４）。
保護制御モジュール１２０は、管理装置２００へ検証基データの送付を依頼する（ステップＳ１５）。管理装置２００は、保護制御モジュール１２０から依頼を受信すると、検証基データ生成処理を行う（ステップＳ１６）。その後、管理装置２００は、検証基データを保護制御モジュール１２０へ送信する（ステップＳ１７）。保護制御モジュール１２０は、管理装置２００から検証基データを受信し、受信した検証基データを記憶する（ステップＳ１８）。
（３）検知モジュール初期化処理の動作
ここでは、ステップＳ１４の検知モジュール初期化処理について説明する。
【００７５】
図１０は、検知モジュール１３１の初期化処理の動作を示すフローチャートである。
検知モジュール１３１は、改ざん検出対象となる他の検知モジュールに付加されている改ざん検出用証明書を検証する（ステップＳ２１）。
改ざん検出量証明書の検証は、検知モジュールのデータから検証値を生成し、生成した検証値と改ざん検出用証明書に記述されている検証値とを比較することにより行われる。なお、検証値は、ハッシュ値や署名などを用いる。
【００７６】
生成した検証値が改ざん検出用証明書に記述されている検証値と一致する場合（ステップＳ２２でＹ）、検知モジュール１３１は、他の検知モジュールと保護制御モジュール１２０それぞれに対してＭＡＣ値を生成し、ＭＡＣ値保持部に保持する（ステップＳ２３）。
生成した検証値が改ざん検出用証明書に記述されている検証値と一致しない場合（ステップＳ２２でＮ）、エラーを出力して停止する（ステップＳ２４）。
（４）検証基データ生成処理の動作
ここでは、ステップＳ１６の検証基データ生成処理について説明する。
【００７７】
図１１は、検証基データ生成処理の動作を示すフローチャートである。
検証基データ生成部６１０は、アプリ保持部６０９に保持している複数のアプリを、暗号鍵保持部６０７に保持している暗号鍵を用いて暗号化する（ステップＳ３１）。
一方、データ分割部６０８は、図１２に示すように、各アプリのデータを分割する（ステップＳ３２）。
【００７８】
分割方法は、メモリ上にロードされるアプリのデータを一定サイズで分割してもよいし、それぞれ異なるサイズに分割してもよい。また、アプリのデータの法を取ってもよい。分割されたアプリのデータを復元できるように、中国人剰余定理を用いて分割するとしてもよい。中国人剰余定理は、非特許文献１の１５ページに記載されている。
ここでは、アプリのデータを３分割した例を用いて説明する。
【００７９】
検証基データ生成部６１０は、暗号化アプリと、データ分割部６０８によって分割された各分割データ（分割データ１、分割データ２、分割データ３）との対応を示す証明書を生成する（ステップＳ３３）。さらに、検証基データ生成部６１０は、ステップＳ３３で生成した証明を含む検証基データを生成する（ステップＳ３４）。
図１３、図１４、および図１５を用いて、検証基データについて説明する。
【００８０】
図１３に記載の証明書７０１は、暗号化アプリと分割データ１との対応を示す証明書である。図１４に記載の証明書７０２は、暗号化アプリと分割データ２との対応を示す証明書である。図１５に記載の証明書７０３は、暗号化アプリと分割データ３との対応を示す証明書である。
各証明書は、分割情報、判定情報、アプリのそれぞれについて各アプリの識別情報、識別情報に対応する暗号化アプリのデータおよび検証値、ならびに、復号処理証明書から構成される。
【００８１】
分割情報は、当該分割データが、全ての分割データのうちのどの部分に該当するのかを示す情報である。
例えば、アプリのデータを一定のサイズで３分割した場合は、分割情報１は（３，１）のように記載される。これは、分割数が３であり、でそのうちの１番目のデータであることを示す。同様に、分割情報２は、（３，２）、分割情報３は、（３，３）となる。また、アプリのデータの法を取った場合、分割情報は、（３，１７）のように記載される。これは、分割数３であり、法の値が１７であることを示す。
【００８２】
なお、分割情報は、これに限定されず、それぞれの分割データが区別可能となる情報を用いればよい。
判定情報は、分割したデータのすべてが検証されたか判定するために用いられる情報である。例えば、アプリのデータを一定のサイズで３分割した場合、分割数の「３」が記載される。これにより、異なる分割データが３つ揃えば、すべての分割データが検証されたことがわかる。また、アプリのデータを７、１１、１７のそれぞれで法を取った場合、７、１１、および１７を掛け合わせた値「１３０９」が記載される。これにより、中国人剰余定理が成り立っていることがわかる。
【００８３】
また、中国人剰余定理が成り立つために、アプリの暗号化および復号に公開鍵暗号方式のＲＳＡ暗号を用いる場合には、判定情報は、ＲＳＡ暗号の公開鍵であるｎ（＝ｐ×ｑ）（ｐ、ｑは素数）の値より大きい値であればよい。また、共通鍵暗号方式のＡＥＳ暗号を用いる場合には、判定情報は、１２８ビットより大きい値であればよい。ＲＳＡ暗号に関しては非特許文献１の１１０ページから１１３ページに記載されている。
【００８４】
なお、判定情報は証明書に含めずに、予め各検知モジュールが保持するとしてもよい。また、いずれかの検知モジュールが保持しており、他の検知モジュールに送信するとしてもよい。
検証値は、暗号化したアプリのデータと分割データとを結合したデータのハッシュ値である。なお、ハッシュ値を計算する対象データとして、アプリの識別情報や保護制御モジュール１２０の識別情報などを含めてもよい。
【００８５】
復号処理証明書は、５つの検証値を結合したデータのハッシュ値を計算し、計算されたハッシュ値に対し、管理装置２００の署名秘密鍵を用いて生成された署名データである。
図１３、図１４、および図１５に記載の３つの証明書を含めて検証基データとする。
（５）検知処理の動作
ここでは、ステップＳ２の検知処理について説明する。
【００８６】
図１６および図１７は、検知処理を示すシーケンス図である。
保護制御モジュール１２０は、アプリ１１０を実行するコマンドを受け付けると、暗号化されたアプリ１１０を復号ロード部３０４で復号する（ステップＳ４１）。
次に、アプリ分割部３１０は、検証基データ保持部３０８に保持されている検証基データに含まれる分割情報に基づいて、復号したアプリ１１０を分割する（ステップＳ４２）。分割情報に、３分割することが記載されていれば、アプリを３分割する。以下、アプリを３分割した場合について説明する。
【００８７】
保護制御モジュール１２０は、アプリの識別情報と、分割データと、分割データに対応する検証データとを、各検知モジュールへ分配する。ここで、検証データとは、図１３〜１５に示した証明書のことである。検証データ生成部３０９は、検証基データ保持部３０８に保持されている検証基データから、分割データに対応する証明書を選択し、選択した証明書を検証データとする。
【００８８】
ここでは、保護制御モジュール１２０は、検知モジュール１３１へアプリ識別情報、分割データ１、および検証データ（図１３の証明書７０１）を送信し（ステップＳ４３）、検知モジュール１３２へアプリ識別情報、分割データ２、および検証データ（図１４の証明書７０２）を送信し（ステップＳ４４）、検知モジュール１３３へアプリ識別情報、分割データ３、および検証データ（図１５の証明書７０３）を送信する（ステップＳ４５）。
【００８９】
各検知モジュールは、保護制御モジュール１２０によるアプリの復号結果が正しいか否か受信した検証データを用いて検証する（ステップＳ４６）。
具体的に、各検知モジュールは、検証データに含まれる暗号化アプリのデータと分割データとから検証値を生成する。そして、生成した検証値と検証データに含まれる検証値とを比較し、両者が一致するか判断する。さらに、各検知モジュールは、復号処理証明書の署名検証を行う。
【００９０】
各検知モジュールは、検証値が一致しない、または、署名が正しくない場合には、保護制御モジュール１２０が改ざんされていると判定し（ステップＳ４７でＹ）、判断部２１０へ検出結果を送信する（ステップＳ４８）。
各検知モジュールは、検証値が一致し、かつ、署名が正しい場合には、保護制御モジュール１２０が改ざんされていない判定し（ステップＳ４７でＮ）、検証データに含まれる分割情報を、他の検知モジュールへ送信する（ステップＳ４９）。
【００９１】
そして、各検知モジュールは、保護制御モジュール１２０から送信されたすべての分割データが検証されたか否かを確認する。以下、具体的に説明する。
検知モジュール１３１は、分割情報１を検知モジュール１３２および検知モジュール１３３へ送信する。分割情報１は、分割数が３であり、そのうちの１番目のデータであることを示した情報である。
【００９２】
検知モジュール１３１は、検知モジュール１３２から分割情報２を受信し、検知モジュール１３３から分割情報３を受信する。検知モジュール１３１は、検証データに含まれる判定情報を参照することにより、アプリのデータが３分割されていることがわかる。そして、検知モジュール１３１は、受信した分割情報２および分割情報３の内容を確認することにより、２番目のデータと３番目のデータがそれぞれ検知モジュール１３２および１３３により検証されたことを知ることができる。
【００９３】
よって、各検知モジュールは、保護制御モジュール１２０から送信されたすべての分割データがいずれかの検知モジュールにより検証されたことを確認することができる。
すべての分割データが検証されていない場合、または、すべての分割データが１つの検知モジュールに送信されていた場合には、保護制御モジュール１２０が不正な動作を行ったとし、保護制御モジュール１２０が改ざんされていると判定し（ステップＳ５０でＹ）、判断部２１０へ検出結果を送信する（ステップＳ５１）。
（６）検証基データ更新処理の動作
不正モジュール検知システム１では、機器１００に新たなアプリを追加する場合、保護制御モジュール１２０が保持している検証基データを更新する必要がある。
【００９４】
ここでは、図１８のシーケンス図を用いて、機器１００に新たなアプリ（「アプリ１１５」と記載する。）を追加する場合を具体例として用い、検証基データ更新処理の動作について説明する。
機器１００に新たなアプリ１１５がダウンロードされると、保護制御モジュール１２０は、アプリ１１５を受信する（ステップＳ６１）。保護制御モジュール１２０は、暗復号鍵保持部３０７に保持されている暗復号鍵を用いてアプリ１１５を暗号化する（ステップＳ６２）。そして、保護制御モジュール１２０は、アプリ１１５の識別情報と暗号化されたアプリ１１５と検証基データの送付依頼とを管理装置２００へ送信する（ステップＳ６３）。
【００９５】
管理装置２００は、暗号化されたアプリ１１５を保護制御モジュール保持部６１１で保持している保護制御モジュール１２０の暗復号鍵で復号する。そして、復号したアプリ１１５を含む新たな検証基データを生成する（ステップＳ６４）。管理装置２００は、新たな検証基データを保護制御モジュール１２０へ送信する（ステップＳ６５）。保護制御モジュール１２０は、新たな検証基データを受信し、記憶する（ステップＳ６６）。
（７）相互監視処理の動作
次に、図１９のシーケンス図を用いて、検知モジュール群１３０の相互監視処理について説明する。
【００９６】
検知モジュール１３１は、検知モジュール１３２の改ざん検出処理を行い（ステップＳ７１）、検知モジュール１３２は、検知モジュール１３３の改ざん検出処理を行い（ステップＳ７２）、検知モジュール１３３は、検知モジュール１３１の改ざん検出処理を行う（ステップＳ７３）。
ステップＳ７１〜７３の改ざん検出処理は、検証鍵を用いて各検知モジュールのＭＡＣ値を算出し、算出したＭＡＣ値と、ＭＡＣ値テーブルに保持されているＭＡＣ値とを比較することにより行う。また、ＭＡＣ値の替わりに、各検知モジュールのハッシュ値を用いてもよい。
【００９７】
各検知モジュールは、改ざんを検出した場合（ステップＳ７４でＹ）、検出結果を判断部２１０へ送信する（ステップＳ７５）。
判断部２１０は、各検知モジュールから検出結果を受信し（ステップＳ７６）、改ざんされた検知モジュールがあるか否かを判定する（ステップＳ７７）。改ざんされた検知モジュールがある場合（ステップＳ７７でＹ）、判断部２１０は、機器１００の各検知モジュールに、検知処理（ステップＳ２）の停止を通知する（ステップＳ７８）。改ざんされた検知モジュールがない場合（ステップＳ７７でＮ）、処理を継続する。
【００９８】
ここでは、判断部２１０は、相互監視処理の結果を用いて、各検知モジュールが改ざんされているか否かを判定した。しかし、これに限定されず、判断部２１０は、上述した分割データの検証結果を送信しない場合に、当該検知モジュールを改ざんされたと判定してもよい。
３．実施の形態１の効果
実施の形態１では、保護制御モジュール１２０による暗号化アプリの復号処理を検証するので、保護制御モジュール１２０が保持する暗復号鍵を用いることなく、保護制御モジュールが改ざんされているか否かを判定することができる。
【００９９】
また、各検知モジュールは、分割データを検証するので、各検知モジュールがアプリのすべてのデータを知ることなく検証することができる。
これにより、検知モジュールが改ざんされ不正動作をしたとしても、保護制御モジュール１２０の情報やアプリの情報が漏洩することがないので、システムの安全性を高めることができる。
＜実施の形態２＞
ここでは、本発明の実施の形態２について説明する。
１．概要
実施の形態１では、各検知モジュールがアプリの分割データを収集すると、アプリのデータが漏洩する可能性がある。そこで、実施の形態２では、分割データの検証が完了した後に、分割データおよび検証データを消去することにより、アプリのデータが漏洩するのを防止する。また、実施の形態２では、分割データおよび検証データの消去後に相互監視処理を行うことにより、分割データおよび検証データが消去されたか否かを相互に確認する。
２．検知処理の動作
実施の形態２の検知処理の動作について、図２０から図２２のシーケンス図を用いて説明する。各構成要素の符号は、実施の形態１と同一の符号を用いる。
【０１００】
ステップＳ８１からステップＳ９１までの動作は、実施の形態１のステップＳ４１からステップＳ５１までの動作と同様のため、説明を省略する。
ここでは、図２２のステップＳ９２から説明する。
各検知モジュールは、受信した分割データおよび検証データ保持部４０７に記憶している検証データを消去する（ステップＳ９２）。
【０１０１】
次に、各検知モジュールは、分割データおよび検証データを消去したか否かを確認するため、相互に改ざん検出を実行する。
具体的に、検知モジュール１３１は、検知モジュール１３２の改ざん検出処理を行い（ステップＳ９３）、検知モジュール１３２は、検知モジュール１３３の改ざん検出処理を行い（ステップＳ９４）、検知モジュール１３３は、検知モジュール１３１の改ざん検出処理を行う（ステップＳ９５）。各検知モジュールによる改ざん検出処理は、相互監視処理の改ざん検出処理と同様である。
【０１０２】
各検知モジュールは、改ざんを検出した場合（ステップＳ９６でＹ）、検出結果を判断部２１０へ送信する（ステップＳ９７）。判断部２１０は、各検知モジュールから検出結果を受信し（ステップＳ９８）、各検知モジュールが改ざんされているか否かを判定する。
検知モジュールが改ざんされていると判定した場合、判断部２１０は、保護制御モジュールの検知処理が正しく行われていないとみなし、保護制御モジュール１２０の再検知を行うことを決定する（ステップＳ９９でＹ）。そして、保護制御モジュール１２０に対し、再検知処理を行う旨を通知する（ステップＳ１００）。
【０１０３】
検知モジュールが改ざんされていないと判定した場合、判断部２１０は、分割データおよび検証データが消去されたと判断する。
３．実施の形態２の効果
実施の形態２では、分割データおよび検証データを消去したことを確認するので、１つの検知モジュールが不正動作を行ったとしても、１つの分割データの漏洩だけで済み、それ以上の分割データの漏洩、さらに、アプリの全体のデータの漏洩を防止することができる。
＜実施の形態３＞
ここでは、本発明に係る実施の形態３としてソフトウェア更新システムについて説明する。
１．概要
実施の形態３のソフトウェア更新システムは、保護制御モジュールの改ざんが検出された場合に、改ざんされた保護制御モジュールを新しい保護制御モジュールへ更新する。
２．構成
（１）保護制御モジュール１２０ａの詳細な構成
図２３は、実施の形態３に係る保護制御モジュール１２０ａの構成を機能的に示す機能ブロック図である。
【０１０４】
保護制御モジュール１２０ａは、実施の形態１に係る保護制御モジュール１２０（図２）の構成要素に加えて、暗復号鍵分散部３２１、証明書生成部３２２、および暗復号鍵復元部３２３を含む。
暗復号鍵分散部３２１は、初期設計時および次ラウンド準備時に、秘密分散法を用いて、暗復号鍵から分散情報を生成する。
【０１０５】
証明書生成部３２２は、保護制御モジュール１２０ａの署名秘密鍵を保持する。そして、証明書生成部３２２は、暗復号鍵から生成された分散情報を復元したときに、正しく復元できたか否かを検証するために用いられる証明書を、署名秘密鍵を用いて生成する。
暗復号鍵復元部３２３は、配置情報に基づいて、各更新モジュールから、各更新モジュールに配布されていた分散情報を取得する。そして、暗復号鍵復元部３２３は、取得した分散情報から暗復号鍵を復元し、復元した暗復号鍵を復号ロード部３０４に送信する。
（２）検知モジュールの詳細な構成
図２４は、実施の形態３に係る検知モジュール１３１ａの構成を機能的に示す機能ブロック図である。
【０１０６】
検知モジュール１３１ａは、実施の形態１に係る検知モジュール１３１（図３）の構成要素に加えて、更新部４１０および分散情報保持部４１１を含む。
更新部４１０は、管理装置２００と連携して、機器１００のソフトウェア（各アプリ、保護制御モジュール１２０ａ、各検知モジュール）を更新する。
分散情報保持部４１１は、保護制御モジュール１２０ａが各アプリの暗復号処理に用いる暗復号鍵から生成した分散情報と、保護制御モジュール１２０ａが分散情報を配布したときの配置情報とを保持する。配置情報は、どの分散情報がどの検知モジュールに配布されたか記述した情報である。
【０１０７】
認証部４１２は、認証鍵対（認証秘密鍵および認証公開鍵）を保持しており、他のモジュールと認証処理を行う。
（３）検証基データ配布部２２０ａの詳細な構成
図２５は、実施の形態３に係る検証基データ配布部２２０ａの構成を機能的に示す機能ブロック図である。
【０１０８】
検証基データ配布部２２０ａは、実施の形態１に係る検証基データ配布部２２０（図７）の構成要素に加えて、暗号鍵生成部６２０、暗号処理部６２１、および検知モジュール選択部６２２を含む。
暗号鍵生成部６２０は、更新用ソフトウェアを何れかの検知モジュールへ送信するときに使用する暗号鍵を生成する。
【０１０９】
暗号処理部６２１は、暗号鍵生成部６２０が生成した暗号鍵を用いて、更新用ソフトウェアを暗号化する。また、暗号処理部６２１は、検知モジュール選択部６２２が選択した検知モジュールに固有の鍵を用いて、前記暗号鍵を暗号化する。
検知モジュール選択部６２２は、保護制御モジュール１２０ａを更新するときに、更新に使用する検知モジュールを選択する。
３．動作
ここでは、実施の形態３に係るソフトウェア更新システムの動作について説明する。
（１）全体の動作概略
図２６は、ソフトウェア更新システム全体の処理の流れを示したフローチャートである。
【０１１０】
ソフトウェア更新システムは、先ず、初期設計処理を行う（Ｓ１０１）。その後、各検知モジュールによる保護制御モジュール１２０ａの検証処理を行い、保護制御モジュール１２０ａが改ざんされているか否かを判断する検知処理を行う（ステップＳ１０２）。
次に、ソフトウェア更新システムは、ステップＳ１０２で保護制御モジュール１２０ａの改ざんが検出された場合に、保護制御モジュール１２０ａを解析し、更新する必要があるか否か判断する解析・判断処理を行う（ステップＳ１０３）。
【０１１１】
次に、ソフトウェア更新システムは、各検知モジュールと検証基データ配布部２２０ａとが互いに正しいソフトウェアであるか否かを確認するための相互認証処理を行う（ステップＳ１０４）。
次に、ソフトウェア更新システムは、回復処理を行う（ステップＳ１０５）。回復処理とは、検知モジュール間で相互に改ざん検出処理を行った後、更新用の保護制御モジュールを機器１００へインストールする処理、および、機器１００において、各検知モジュールに埋め込まれた分散情報を用いて、保護制御モジュールを更新する処理である。
【０１１２】
その後、ソフトウェア更新システムは、次に保護制御モジュールの更新が必要となる場合に備えて、更新に必要な鍵データや分散情報を生成し、各検知モジュールに埋め込む次ラウンド準備処理を行う（ステップＳ１０６）。その後、ソフトウェア更新システムは、ステップＳ１０２の検知処理へ戻り、処理を続ける。
（２）初期設計処理の動作
ここでは、ステップＳ１０１の期設計処理の動作について、図２７および図２８のシーケンス図を用いて説明する。なお、ステップＳ１１１からステップＳ１１３までの動作は、実施の形態１で既に説明した動作と同様のため、説明を省略する。
【０１１３】
保護制御モジュール１２０ａは、暗復号鍵から秘密分散法を用いて分散情報を生成する（ステップＳ１１４）。更に、保護制御モジュール１２０ａは、署名秘密鍵を用いて、暗復号鍵証明書を生成する（ステップＳ１１５）。保護制御モジュール１２０ａは、生成した分散情報と暗復号鍵証明書とを、各検知モジュールへ送信する（ステップＳ１１６）。
なお、保護制御モジュール１２０ａは、検知モジュール１３１、１３２、１３３が、それぞれ異なる分散情報の組を保持するように、各検知モジュールに分散情報の組を送信する。更に、保護制御モジュール１２０ａは、どの検知モジュールへどの分散情報を送信したかを示す配置情報を、各検知モジュールへ送信する。各検知モジュールに送信される配置情報は、同一の情報である。
【０１１４】
暗復号鍵から秘密分散法を用いて分散情報を生成する方式や分散情報を検知モジュールへ送信する方法については、特許文献２の４７ページから４９ページに詳しく説明されているので、ここでの説明は省略する。
保護制御モジュール１２０ａから分散情報、配置情報、および暗復号鍵証明書を受信した検知モジュール群は、検知モジュール初期化処理を行う（ステップＳ１１７）。
【０１１５】
ステップＳ１１８〜ステップＳ１２１の保護制御モジュール１２０ａ初期化処理は、実施の形態１で説明した動作と同様のため、説明を省略する。
（３）検知モジュール初期化処理の動作
ここでは、図２９に示すフローチャートを用いて、ステップＳ１１７の検知モジュール初期化処理について説明する。
【０１１６】
検知モジュール１３１ａは、保護制御モジュール１２０ａから分散情報、配置情報、および暗復号鍵証明書を受信し、分散情報保持部４１１に保持する（ステップＳ１３１）。その後の動作は、実施の形態１と同様のため、説明を省略する。
（４）検知処理の動作
実施の形態３の検知処理（ステップＳ１０２）は、実施の形態１および実施の形態２の検知処理の動作と同様のため、説明を省略する。
（５）解析・判断処理の動作
ここでは、図３０に示すシーケンス図を用いて、ステップＳ１０３の解析・判断処理の動作について説明する。各検知モジュールがそれぞれ個別に行う処理を、図３０では、検知モジュール群１３０の動作として記載している。
【０１１７】
検知処理において、各検知モジュールから保護制御モジュールについての改ざん検出結果を受信すると、判断部２１０は、受信した改ざん検出結果に基づいて、保護制御モジュール１２０ａが改ざんされているか判定する（ステップＳ１４１）。
判定方法の一例として、所定数の検知モジュールが改ざんを検出した場合には、保護制御モジュール１２０ａは改ざんされていると判定し、また、所定数未満の検知モジュールが改ざんを検出した場合には、保護制御モジュール１２０ａは改ざんされていないと判定する。前記所定数は、検知モジュール群１３０に含まれる検知モジュールの過半数としてもよい。また、各検知モジュールから分割データおよび検証データを受信して、分割データおよび検証データを用いて保護制御モジュール１２０ａの改ざんの有無を判定してもよい。
【０１１８】
保護制御モジュール１２０ａが改ざんされていると判定した場合（ステップＳ１４１でＹ）、判断部２１０は、保護制御モジュール１２０ａを回復する必要があるか否かを判断するために、検知モジュール群１３０に対して、保護制御モジュール１２０ａのどの部分が改ざんされたかなどの改ざん情報の通知を依頼する（ステップＳ１４２）。
検知モジュール群１３０は、改ざん情報の通知を依頼されると、改ざん情報を収集して（ステップＳ１４３）、判断部２１０へ通知する。
【０１１９】
判断部２１０は、改ざん情報に基づいて、保護制御モジュール１２０ａを回復するか、機器１００をリボークするか、または、何もしないかを判断する（ステップＳ１４４）。
保護制御モジュール１２０ａを回復する場合（ステップＳ１４４でＹ）、判断部２１０は、更新用の保護制御モジュールを準備し（ステップＳ１４５）、検知モジュール群１３０に、更新処理の開始を指示する（ステップＳ１４６）。
【０１２０】
また、機器１００をリボークする場合には、各アプリにサービスを提供しているサーバに対して、機器１００をリボークするように依頼する。何もしない場合（ステップＳ１４４でＮ）、検知処理へ戻る。
ステップＳ１４１で保護制御モジュール１２０ａが改ざんされていないと判定した場合（ステップＳ１４１でＮ）は、検知処理へ戻る。
（６）相互認証処理の動作
続いて、図３１および図３２に示すシーケンス図を用いて、ステップＳ１０４の相互認証処理について説明する。
【０１２１】
判断部２１０が、解析・判断処理において、保護制御モジュール１２０ａを回復する必要があると判断した場合、判断部２１０は、検証基データ配布部２２０ａへ、保護制御モジュール１２０ａの回復を指示する。
検証基データ配布部２２０ａは、各検知モジュールへ更新処理の開始を指示した後、各検知モジュールとの間で、それぞれ１対１の相互認証処理を行う。これにより、機器１００が不正なサーバと接続したり、管理装置２００が不正な機器と接続することを防止する。なお、相互認証処理において、検証基データ配布部２２０ａは、署名秘密鍵および署名公開鍵を使用し、各更新モジュールは、認証鍵対（認証秘密鍵及び認証公開鍵）を使用する。
【０１２２】
図３１は、検知モジュール１３１ａが検証基データ配布部２２０ａを認証するときのシーケンス図である。なお、検知モジュール１３２ａ、１３３ａも、図３１の検知モジュール１３１ａと同様に動作し、検証基データ配布部２２０ａを認証する。
検知モジュール１３１ａは、乱数生成器を用いて乱数（チャレンジデータ）を生成し（ステップＳ１５１）、生成したチャレンジデータを検証基データ配布部２２０ａへ送信する（ステップＳ１５２）。この時、検知モジュール１３１ａを識別するための検知モジュール識別子を、チャレンジデータと共に送信する。  
【０１２３】
検証基データ配布部２２０ａは、受信したチャレンジデータに署名秘密鍵を用いて署名データを生成し（ステップＳ１５３）、生成した署名データをレスポンスデータとして、検知モジュール１３１ａへ返信する（ステップＳ１５４）。
検知モジュール１３１ａは、検証基データ配布部２２０ａからレスポンスデータを受信すると、署名公開鍵を用いて、レスポンスデータが、チャレンジデータの署名データと一致するか否か検証する（ステップＳ１５５）。
【０１２４】
検証の結果、レスポンスデータが正しく、検証基データ配布部２２０ａが正当なモジュールである場合（ステップＳ１５６でＹ）、検知モジュール１３１ａは、処理を継続する。レスポンスデータが正しくなく、更新用ソフトウェア配布部２２０が不正なモジュールである場合（ステップＳ１５６でＮ）、検知モジュール１３１ａは、エラーを出力し、処理を停止する。
【０１２５】
次に、検証基データ配布部２２０ａが、検知モジュール１３１ａ、１３２ａ、１３３ａを認証する。
図３２は、検証基データ配布部２２０ａが各検知モジュールを認証するときのシーケンス図である。
検証基データ配布部２２０ａは、チャレンジデータを送信してきた各検知モジュールに対して、乱数生成器を用いてそれぞれ異なる乱数（チャレンジデータ）を生成し（ステップＳ１６１）、生成したチャレンジデータを、各更新モジュールへ個別に送信する（ステップＳ１６２）。
【０１２６】
各検知モジュールは、受信したチャレンジデータに認証秘密鍵を用いて署名データを生成し（ステップＳ１６３）、生成した署名データをレスポンスデータとして更新用ソフトウェア配布部２２０へ返信する。
このとき、各検知モジュールは、レスポンスデータと共に認証公開鍵と認証鍵証明書とを検証基データ配布部２２０ａへ送信する（ステップＳ１６４）。
【０１２７】
検証基データ配布部２２０ａは、それぞれの検知モジュールからレスポンスデータ、認証公開鍵、および認証鍵証明書を受信する。検証基データ配布部２２０ａは、認証鍵証明書が、自身が発行した証明書であるか否か検証し、更に、認証鍵証明書を用いて、認証公開鍵の正当性を検証する（ステップＳ１６５）。
認証鍵証明書および認証公開鍵が不正であれば（ステップＳ１６５でＮ）、検証基データ配布部２２０ａは、処理を停止する。
【０１２８】
認証鍵証明書および認証公開鍵が正当であれば、検証基データ配布部２２０ａは、認証公開鍵を用いて、受信したレスポンスデータがチャレンジデータの署名データと一致するか否か検証する（ステップＳ１６６）。
次に、検証基データ配布部２２０ａは、正しいレスポンスデータを返した検知モジュール（正当な検知モジュール）の数が、予め設定されている回復処理に必要な数以上であるかを判断する（ステップＳ１６７）。
【０１２９】
正当な検知モジュールの数が、回復処理に必要な数に満たない場合（ステップＳ１６７でＮ）、回復処理が実行できないため、検証基データ配布部２２０ａは、処理を停止する。正当な更新モジュールの数が、回復処理に必要な数を満たしている場合（ステップＳ１６７でＹ）、相互認証処理を終了し、回復処理に移る。
また、検証基データ配布部２２０ａは、相互認証処理において、正当性が確認されたすべての検知モジュールの検知モジュール識別子を記載した認証リストを作成する。そして、これ以降の回復処理では、認証リストに識別子が記載されている検知モジュールのみを利用する。
（７）回復処理の動作
続いて、図３３〜３７を用いて、ステップＳ１０５の回復処理の詳細について説明する。回復処理は、上述した相互認証処理において、相互認証が成功した場合に、改ざんされた保護制御モジュール１２０ａを、新しい更新用の保護制御モジュールへ更新する処理である。
【０１３０】
図３３は、回復処理の動作を示すフローチャートである。
先ず、各検知モジュールが、相互監視処理を行う（ステップＳ１７１）。相互監視処理では、各検知モジュールが、他の検知モジュールの改ざん検出処理を実行する。
さらに、更新用保護制御モジュールを用いて、保護制御モジュール１２０ａを更新する更新処理を行う（ステップＳ１７２）。
【０１３１】
そして、暗号化されたアプリ１１０、１１１、１１２、１１３、１１４を再暗号化する再暗号化処理を行う（ステップＳ１７３）。
（８）相互監視処理
図３４は、ステップＳ１７１の相互監視処理の詳細なシーケンス図である。
実施の形態３の相互監視処理は、実施の形態１の相互監視処理とほぼ同様であるが、  実施の形態３の相互監視処理は、各検知モジュールが、改ざん検出結果を常に判断部２１０へ送信する点が、実施の形態１と異なる（ステップＳ１８４）。
【０１３２】
また、実施の形態３の相互監視処理では、改ざんされた検知モジュールが存在する場合、ステップＳ１８７で回復処理を停止する。
（９）更新処理
続いて、図３５および図３６のシーケンス図を用いて、ステップＳ１７２の更新処理の詳細について説明する。
【０１３３】
先ず、検証基データ配布部２２０ａの証明書生成部６０５は、署名秘密鍵を用いて、更新検証証明書を生成する（ステップＳ１９１）。更新検証証明書は、新しい保護制御モジュールが正しくインストールできたか否か、各検知モジュールが確認するための証明書である。検証基データ配布部２２０ａは、生成した証明書を、各検知モジュールへ送信する（ステップＳ１９２）。
【０１３４】
次に、検証基データ配布部２２０ａの暗号鍵生成部６２０は、新しい保護制御モジュールを多重に暗号化するための暗号鍵を２つ（第１の鍵及び第２の鍵）生成する（ステップＳ１９３）。暗号処理部６２１は、第２の鍵を用いて新しい保護制御モジュールを暗号化し、暗号化新保護制御モジュールを生成する（ステップＳ１９４）。暗号処理部６２１は、暗号化新保護制御モジュールに対して、第１の鍵を用いてさらに暗号化し、多重暗号化新保護制御モジュールを生成する（ステップＳ１９５）。
【０１３５】
検証基データ配布部２２０ａは、検知モジュール群１３０から正当な検知モジュールを一つ選択し（ステップＳ１９６）、選択した検知モジュールの識別子を判断部２１０に通知する。ここでは、一例として、検知モジュール１３１ａを選択するものとする。
検証基データ配布部２２０ａは、選択した検知モジュール１３１ａへ多重暗号化新保護制御モジュールを送信し（ステップＳ１９７）、更に、第１の鍵を送信する（ステップＳ１９８）。
【０１３６】
検知モジュール１３１ａは、多重暗号化新保護制御モジュールと第１の鍵とを受信する。検知モジュール１３１は、第１の鍵を用いて、多重暗号化新保護制御モジュールを復号し、暗号化新保護制御モジュールを取得する（ステップＳ１９９）。そして、復号が終了すると、その旨を検証基データ配布部２２０ａへ通知する（ステップＳ２００）。
検証基データ配布部２２０ａは、復号終了通知を受信すると、検知モジュール群１３０から、正当なモジュールであって、且つ、ステップＳ１９６で選択した検知モジュールとは異なる検知モジュールを一つ選択する（ステップＳ２０１）。ここでは、一例として、検知モジュール１３２ａを選択するものとする。
【０１３７】
検証基データ配布部２２０ａは、選択した検知モジュール１３２ａに、第２の鍵を送信する（ステップＳ２０２）。このように、検証基データ配布部２２０ａは、多重に暗号化された新保護制御モジュールを復号するための複数の鍵を、検知モジュール群１３０に送信するタイミングを制御することにより、攻撃者が暗号化されていない新保護制御モジュールを入手することを困難にする。
【０１３８】
また、検証基データ配布部２２０ａは、検知モジュール１３１ａに対して、ステップＳ１９９で取得した暗号化新保護制御モジュールを検知モジュール１３２ａへ送信するよう依頼する（ステップＳ２０３）。
検知モジュール１３１ａは、検証基データ配布部２２０ａからの依頼を受けて、暗号化新保護制御モジュールを検知モジュール１３２ａへ送信する（ステップＳ２０４）。
【０１３９】
検知モジュール１３２ａは、検証基データ配布部２２０ａから第２の鍵を受信し、検知モジュール１３１ａから暗号化新保護制御モジュールを受信する。そして、第２の鍵を用いて、暗号化新保護制御モジュールを復号し、新しい保護制御モジュールを取得する（ステップＳ２０５）。
検知モジュール１３２ａは、ステップＳ２０５で取得した新しい保護制御モジュールを保護制御モジュール１２０ａに上書きし、更新する（ステップＳ２０６）。そして、検知モジュール１３２ａは、更新の終了を他の検知モジュールへ通知する（ステップＳ２０７）。
【０１４０】
その後、各検知モジュールは、保護制御モジュールの更新が完了したことを確認する処理を行う。実施の形態３では、特許文献３に記載されている検証とは異なり、更新後の新たな保護制御モジュールに復号処理を実行させることにより、更新の完了を確認する。
各検知モジュールは、予め受信した確認用検証データを用いる。確認用検証データは、検証値と暗号化乱数とから構成される。暗号化乱数は、乱数を新たな保護制御モジュールの暗号化鍵で暗号化して生成されたデータである。検証値は、乱数および暗号化された乱数に対し、署名秘密鍵を用いて生成された署名データである。
【０１４１】
各検知モジュールはそれぞれ、確認用検証データ内の暗号化した乱数を更新後の保護制御モジュールへ送信する（ステップＳ２０８）。保護制御モジュールは、受信した暗号化乱数を復号し（ステップＳ２０９）、復号したデータを各検知モジュールへ送信する（ステップＳ２１０）。
各検知モジュールは、保護制御モジュールから復号したデータを受信し、確認用検証データの検証値を用いて、受信したデータの検証を行う（ステップＳ２１１）。各検知モジュールは、検証結果を検証基データ配布部２２０ａへ通知する（ステップＳ２１２）。
【０１４２】
検証基データ配布部２２０ａは、各検知モジュールから送信された検証結果を受信すると、受信した検証結果から保護制御モジュールが正しく更新されたか否か判定する（ステップＳ２１３）。正しく更新されていないと判定する場合（ステップＳ２１３でＮ）、検証基データ配布部２２０ａは、機器１００を停止させる。
正しく更新されている場合（ステップＳ２１３でＹ）、検証基データ配布部２２０ａは、更新処理終了を各検知モジュールへ通知する（ステップＳ２１４）。
（１０）相互監視処理と更新処理との関係
上述した相互監視処理と更新処理とは、互いに連携しながら実行される。
【０１４３】
相互監視処理は、検証基データ配布部２２０ａから、検知モジュール群１３０に含まれる検知モジュールを送信先として、複数の鍵が送られる時と、暗号化された更新用保護制御モジュールの検知モジュール群１３０に含まれる検知モジュールでの復号処理中に定期的に実施される。定期的に実施する際の時間間隔は、例えば、更新用保護制御モジュールが通信路を通して完全に外部に出力されるまでの時間より短い間隔である。完全に外部に出力されるまでに１秒かかるのであれば、例えば、それより短い５００ミリ秒間隔のタイミングで監視処理を実行する。
【０１４４】
ここでは、図３７を用いて、相互監視処理と更新処理との連携動作について説明する。
先ず、機器１００は、管理装置２００から多重暗号化新保護制御モジュールが送付される前に、相互監視処理（相互監視１）を実施する。不正な検知モジュールを選択して、更新処理を行わないようにするためである。
その後、機器１００は、管理装置２００により送信された第１の鍵を検知モジュール１３１ａが受信する前に、相互監視処理（相互監視２）を実施し、機器１００が第１の鍵を受信する時に、不正な検知モジュールを選択していないことを確認する。
【０１４５】
さらに、検知モジュール１３１ａが第１の鍵を受信し、第１の鍵を用いて多重暗号化新保護制御モジュールを復号する間、定期的に、検知モジュール１３１ａによる復号処理を中断して、相互監視処理（相互監視３−１、３−２）を実施する。これにより、復号処理中に、検知モジュール１３１ａ、１３２ａ、１３３ａが攻撃されたとしても、暗号化新保護制御モジュールがすべて漏洩する前に検知モジュールが攻撃されたことを検出し、漏洩を防止することが可能となる。
【０１４６】
これ以降の処理は、上記と同様である。即ち、機器１００は、管理装置２００により送信された第２の鍵を検知モジュール１３２ａが受信する前に、監視処理（相互監視４）を実施し、機器１００が鍵を受信する時に、不正な検知モジュールを更新処理において、選択していないことを確認する。
さらに、検知モジュール１３２ａが第２の鍵を受信し、第２の鍵を用いて暗号化新保護制御モジュールを復号する間、定期的に、検知モジュール１３２ａによる復号処理を中断し、相互監視処理（相互監視５−１、５−２）を実施する。最後に、相互監視処理（相互監視６）を実施する。
【０１４７】
これにより、新保護制御モジュールがすべて漏洩する前に検知モジュールが攻撃されたことを検出し、漏洩を防止することが可能となる。
ここで、相互監視処理において、検知モジュールに改ざんが検出された場合には、回復処理を停止する。これにより、管理装置２００は、第１の鍵や第２の鍵の送信を中止することが可能となり、攻撃者は、多重暗号化新保護制御モジュールを復号するための鍵を入手することが不可能となる。
（１１）再暗号化処理
続いて、図３８のシーケンス図を用いて、ステップＳ１７３の再暗号化処理の詳細について説明する。
【０１４８】
先ず、更新された保護制御モジュールが、検知モジュール１３１ａ、１３２ａ、１３３ａに対して、それぞれが保持している分散情報および暗復号鍵証明書の送信を依頼する（ステップＳ２２１）。
各検知モジュールは、保護制御モジュールからの依頼を受けて、分散情報および暗復号鍵証明書を送信する（ステップＳ２２２）。
【０１４９】
保護制御モジュールは、各更新モジュールから分散情報および暗復号鍵証明書を受信し、受信した分散情報から更新前の保護制御モジュール１２０ａが使用していた暗復号鍵（ここでは、「旧暗復号鍵」という。）を復元する（ステップＳ２２３）。更に、保護制御モジュールは、暗復号鍵証明書を用いて、旧暗復号鍵が正しく復元されたか否か検証する（ステップＳ２２４）。
【０１５０】
旧暗復号鍵が正しく復元されなかった場合（ステップＳ２２４でＮ）、保護制御モジュールは、不正な検知モジュールを炙り出す（どの検知モジュールが不正な分散情報を送信したか特定する）（ステップＳ２２５）。特定された不正な検知モジュールは、管理装置２００へ通知される。
旧暗復号鍵が正しく復元された場合（ステップＳ２２４でＹ）、保護制御モジュールは、新しい暗復号鍵（ここでは、「新暗復号鍵」という。）を生成する。そして、復号ロード部は、旧暗復号鍵を用いて暗号化された各アプリを復号し、新暗復号鍵を用いて各アプリを再暗号化する（ステップＳ２２６）。
【０１５１】
ここで、ステップＳ２２５おいて、不正な検知モジュールを特定するための方法について説明する。先ず、保護制御モジュールは、各検知モジュールから分散情報の組を集め、集めた分散情報に各検知モジュールを識別するための識別情報を付加する。
その後、初期設計時に同じ値に設定されて配布された分散情報同士をグループにまとめる。そして、各グループに含まれる分散情報同士の値を比較し、同じ値になる分散情報同士を更に１つのサブグループにまとめる。そして、すべてのグループの中からサブグループを１つずつ選び出す組み合わせを全て生成する。
【０１５２】
生成した組み合わせそれぞれに対して旧暗復号鍵を生成し、正しい旧暗復号鍵が生成できたかを検証する。検証ＯＫの場合、その組み合わせに含まれるサブグループに、検証ＯＫを表す検証通過識別情報を付加する。
すべての組み合わせについて、旧暗復号鍵の生成・検証を行った後、検証通過識別情報の付いているサブグループに含まれる分散情報を取り除く。
【０１５３】
取り除かれずに残っている分散情報は、不正な値となっている。そこで、この分散情報に付加された識別情報により、不正な値となっている分散情報を送信してきた検知モジュールを特定することができる。識別情報により特定された検知モジュールが不正な更新モジュールであると特定される。
分散情報から旧暗復号鍵を復元する方法や不正な検知モジュールの特定方法については、特許文献２の５０ページから５２ページに詳しく説明されている。
（１２）次ラウンド準備処理の動作
続いて、図３９のシーケンス図を用いて、ステップＳ１０６の次ラウンド準備処理の詳細について説明する。次ラウンド準備処理では、回復処理の終了後、次の回復処理のための準備を行う。以下、具体的に説明する。
【０１５４】
まず、更新後の保護制御モジュールは、新暗復号鍵から、秘密分散法を用いて分散情報を生成し（ステップＳ２３１）、更に、署名秘密鍵を用いて、新暗復号鍵証明書を生成する（ステップＳ２３２）。そして、保護制御モジュールは、生成した分散情報と暗復号鍵証明書とを検知モジュール１３１ａ、１３２ａ、１３３ａへ送信する（ステップＳ２３３）。
【０１５５】
ここで、初期設計処理時と同様に、分散情報は、検知モジュールの数と同数が生成され、それぞれの検知モジュールが、異なる分散情報のペアを保持するように送信される。新暗復号鍵証明書は、各検知モジュールへ同じ証明書が送信される。
検知モジュール１３１ａ、１３２ａ、１３３ａは、保護制御モジュールから分散情報と新暗復号鍵証明書とを受信し、受信した分散情報と新暗復号鍵証明書とを分散情報保持部４１１に保持する（ステップＳ２３４）。
【０１５６】
保護制御モジュールは、ステップＳ２３３で分散情報と暗復号鍵証明書とを検知モジュールへ送信した後、アプリの識別情報と暗号化されたアプリと検証基データの送付依頼とを管理装置２００へ送信する（ステップＳ２３５）。そして、管理装置２００は、検証基データ生成処理を行う（ステップＳ２３６）。
次ラウンド準備処理の検証基データ生成処理は、初期設計処理の検証基データ生成処理と若干異なる。
【０１５７】
次ラウンド準備処理の検証基データ生成処理では、更新処理で生成した新暗復号鍵を用いて、受信した暗号化アプリを復号する。その後、暗号化アプリと復号したアプリとから検証基データを生成する処理は、初期設計処理の検証基データ生成処理と同様であるので、ここでは省略する。
管理装置２００は、生成した検証基データを保護制御モジュールへ送信し（ステップＳ２３７）、保護制御モジュールは、受信した検証基データを記憶する（ステップＳ２３８）。
４．実施の形態３の効果
実施の形態３では、検知処理において保護制御モジュール１２０ａの改ざんが検出された場合、保護制御モジュールを更新するので、システムの安全性を高めることができる。
＜実施の形態４＞
ここでは、本発明に係る実施の形態４として、不正モジュール検知システム２について説明する。実施の形態４では、不正であることが検知された保護制御モジュールを新たな保護制御モジュールに更新する仕組み、および、不正であることが検知された更新モジュールを無効化する仕組みについて詳しく説明する。実施の形態１〜３と重複する部分については、説明を省略または簡略化する。
１．不正モジュール検知システム２の構成
図４０は、不正モジュール検知システム２の全体構成図である。同図に示すように、不正モジュール検知システム２は、機器１００ｂと更新サーバ２００ｂとから構成される。機器１００ｂと更新サーバ２００ｂとは、ネットワークを介して接続されている。
（１）機器１００ｂの構成
機器１００ｂは、実施の形態１の機器１００と同様に、ネットワークを介した様々なサービスをユーザに提供する機器である。
【０１５８】
機器１００ｂは、アプリ１１０、アプリ１１１、保護制御モジュール１２０ｂ、更新モジュール群１３０ｂ、およびアクセス制御モジュール１４０を含む。アプリ１１０、アプリ１１１、および保護制御モジュール１２０ｂの概要は、上述した実施の形態１〜３と同様である。
更新モジュール群１３０ｂは、複数の更新モジュールから構成される。実施の形態４では、更新モジュール群１３０ｂは、更新モジュール１４１、更新モジュール１４２、および更新モジュール１４３の３つの更新モジュールから構成される。
【０１５９】
各更新モジュールは、それぞれ、保護制御モジュール１２０ｂの改ざんの有無を検出する。各更新モジュールは、保護制御モジュール１２０ｂが改ざんされている場合、更新サーバ２００から更新用の保護制御モジュールをダウンロードし、改ざんされている保護制御モジュールを更新する機能を有する。
また、更新モジュール１４１、１４２、１４３は、アプリ１１０およびアプリ１１１を更新する機能を有していてもよい。
【０１６０】
そして、更新モジュール群１３０ｂは、攻撃者によって各更新モジュールが改ざんされ、各更新モジュールを不正に利用されることを防止するために、更新モジュール同士が相互に改ざん検出を実施する。そして、改ざん検出結果を、更新サーバ２００へ送信する。更新サーバ２００により、ある更新モジュールが改ざんされていると判断された場合には、他の正常な更新モジュールは、更新サーバ２００からの無効化指示を受け、改ざんされた更新モジュールを無効化する。
【０１６１】
これにより、更新モジュール群１３０に含まれる一部の更新モジュールが攻撃され、改ざんされた場合であっても、それを検出し、攻撃に対処することが可能となる。
アクセス制御モジュール１４０は、各更新モジュールが他のモジュールを消去するために必要なアクセス情報を保持する。アクセス情報は、例えば、消去対象であるモジュールが配置されているアドレスや、消去に必要な手順が書かれた手順書などである。なお、アクセス情報は、消去対象であるモジュール毎に、それぞれ個別のアクセス情報取得鍵で暗号化されている。
（更新モジュールの詳細な構成）
ここでは、更新モジュール１４１、１４２、１４３の詳細について説明する。
【０１６２】
図４１は、更新モジュール１４１の機能的な構成を示す機能ブロック図である。更新モジュール１４２および１４３も同様の構成を有する。
更新モジュール１４１は、受信部８０１、送信部８０２、制御部８０３、更新部８０４、検証部８０５、ＭＡＣ値生成部８０６、ＭＡＣ値テーブル更新部８０７、および分散情報保持部８０８から構成される。
【０１６３】
更新モジュール１４１の各構成要素は、実施の形態３の検知モジュール１３１ａ（図２４）に含まれる各構成要素と同様の機能を有する。
（保護制御モジュール１２０ｂの詳細な構成）
図４２は、保護制御モジュール１２０ｂの機能ブロック図である。同図に示すように、保護制御モジュール１２０ｂは、受信部９０１、送信部９０２、制御部９０３、復号ロード部９０４、改ざん検出部９０５、解析ツール検出部９０６、暗復号鍵保持部９０７、暗復号鍵生成部９０８、暗復号鍵分散部９０９、証明書生成部９１０、および暗復号鍵復元部９１１から構成される。
【０１６４】
保護制御モジュール１２０ｂの各構成要素は、実施の形態３の保護制御モジュール１２０ａ（図２３）に含まれる各構成要素と同様の機能を有する。なお、図２３に記載されていない暗復号鍵生成部９０８は、アプリ１１０およびアプリ１１１を暗復号化するための暗復号鍵を生成する。
（アクセス制御モジュール１４０の詳細な構成）
図４３は、アクセス制御モジュール１４０の構成を機能的に示す機能ブロック図である。同図に示すように、アクセス制御モジュール１４０は、受信部１００１、送信部１００２、およびアクセス情報保持部１００３から構成される。
【０１６５】
受信部１００１は、更新モジュール１４１、１４２、１４３から、改ざんされた更新モジュールを消去するために必要な情報であるアクセス情報の取得依頼を受信する。
送信部１００２は、アクセス情報取得依頼に応じて、アクセス情報取得を依頼してきた更新モジュールへアクセス情報を送信する。
アクセス情報保持部１００３は、更新モジュール１４１、１４２、１４３毎に、そのモジュールを消去するためのアクセス情報を保持する。
【０１６６】
各アクセス情報は、消去対象となる更新モジュールを識別するための更新モジュール識別子が付されている。また、各アクセス情報は、アクセス情報取得鍵で暗号化されている。
更新モジュール１４１、１４２、１４３からアクセス情報取得依頼を受け付けると、アクセス情報保持部１００３は、消去対象の更新モジュールの識別子が付されたアクセス情報を、依頼元の更新モジュールへ送信する。
（機器１００ｂのハードウェア構成）
続いて、図４４を用いて、機器１００ｂのハードウェア構成について説明する。
【０１６７】
図４４に示すように、機器１００ｂは、ＣＰＵ１７１、不揮発性メモリであるＥＥＰＲＯＭ１７２、ＲＡＭ１７３、およびＮＩＣ１７４などを含む。また、これらはバスを介して、相互に通信可能に接続されている。
ＥＥＰＲＯＭ１７２には、保護制御モジュール１２０ｂ、更新モジュール１４１、１４２、１４３、およびアプリ１１０、アプリ１１１などが格納されている。
【０１６８】
ＥＥＰＲＯＭ１７２に格納されている各種モジュールをＣＰＵ１７１が実行することにより、各種モジュールの各機能部が実現される。各機能部は、具体的には、コンピュータプログラムによって記述されている。
ＲＡＭ１７３は、ＣＰＵ１７１のワークエリアとして用いられる。ＲＡＭ１７３には更新モジュール１４１、１４２、１４３、および、アプリ１１０、アプリ１１１がロードされる。改ざん検出処理および無効化処理の対象となる更新モジュールは、ＲＡＭ１７３上で動作している更新モジュールである。
【０１６９】
ＮＩＣ１７４は、ネットワークに接続するための拡張カードである。
（ソフトウェア階層）
続いて、図４５を用いて、機器１００ｂのソフトウェア階層について説明する。
図４５に示すように、アクセス制御モジュール１４０および更新モジュール群１３０ｂは、ＯＳ１８０の中に組み込まれている。アプリ１１０およびアプリ１１１は、ＯＳ１８０上で動作し、保護制御モジュール１２０ｂおよびブートローダ１６０は、ＯＳ１８０の管理外にある。
【０１７０】
機器１００ｂの起動の際には、まず保護制御モジュール１２０ｂおよび更新モジュール群１３０ｂが起動された上でアプリケーションが実行される。
（２）更新サーバ２００ｂの構成
図４０に戻り、更新サーバ２００ｂについて説明する。
更新サーバ２００ｂは、機器１００ｂの更新モジュール群１３０ｂから、改ざん検出結果を受信して、受信した改ざん検出結果を基に、無効化すべき不正な更新モジュールを特定する不正モジュール特定装置として機能する。さらに、更新サーバ２００ｂは、機器１００ｂ上で動作するソフトウェア（例えば、保護制御モジュール１２０ｂ）を更新するために必要な更新用のソフトウェアを機器１００ｂに配布するソフトウェア配布装置として機能する。
（全体構成）
図４０に示すように、更新サーバ２００ｂは、判断部２１０ｂ、通信部２３０、更新用ソフトウェア配布部２４０、およびモジュール無効化部２５０から構成される。更新サーバ２００ｂは、具体的には、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスクユニットなどを備えるコンピュータシステムである。ＣＰＵが、ＲＯＭまたはハードディスクユニットに記憶されているコンピュータプログラムにしたがって動作することにより、更新サーバ２００ｂは、上記の機能を発揮する。
【０１７１】
判断部２１０ｂは、機器１００ｂの更新モジュール群１３０ｂから、改ざん検出結果を受信して、受信した改ざん検出結果を基に、無効化すべき不正な更新モジュールを特定する。
通信部２３０は、機器１００ｂと、更新サーバ２００ｂ内部の各部との間で情報の送受信を行う。例えば、通信部２３０は、機器１００ｂから受信した改ざん検出結果を判断部２１０ｂに送信する。なお、機器１００ｂと更新サーバ２００ｂとの間の通信には、データを暗号化するなど、セキュリティの確保された通信路を用いてもよい。
【０１７２】
更新用ソフトウェア配布部２４０は、保護制御モジュール１２０ｂを更新する際に、更新モジュール１４１、１４２、１４３と連携して動作し、更新用のソフトウェアを機器１００ｂへ安全に送信する。
モジュール無効化部２５０は、更新モジュール１４１、１４２、１４３からアクセス情報取得鍵取得要求を受け付けると、要求元の更新モジュールへ、アクセス情報取得鍵を送信する。
【０１７３】
続いて、更新サーバ２００ｂの各構成要素について説明する。
（判断部２１０ｂの詳細な構成）
図４６は、判断部２１０ｂの構成を機能的に示す機能ブロック図である。
同図に示すように、判断部２１０ｂは、受信部１１０１、送信部１１０２、指示生成部１１０３、およびモジュール特定部１１０４とから構成される。
【０１７４】
判断部２１０ｂの各構成要素は、実施の形態１の判断部２１０（図６）に含まれる各構成要素と同様の機能を有する。
（更新用ソフトウェア配布部２４０の詳細な構成）
図４７は、更新用ソフトウェア配布部２４０の機能的な構成を示す機能ブロック図である。
【０１７５】
同図に示すように、更新用ソフトウェア配布部２４０は、受信部１２０１、送信部１２０２、暗号鍵生成部１２０３、暗号処理部１２０４、認証部１２０５、更新モジュール選択部１２０６、制御部１２０７、証明書生成部１２０８、署名秘密鍵保持部１２０９、更新用ソフトウェア保持部１２１０、および暗号鍵保持部１２１１から構成される。
更新用ソフトウェア配布部２４０の各構成要素は、実施の形態３の検証基データ配布部２２０ａ（図２５）に含まれる各構成要素と同様の機能を有する。更新用ソフトウェア保持部１２１０は、保護制御モジュール１２０ｂが攻撃された場合に更新するための更新用の保護制御モジュールを保持する。
（モジュール無効化部２５０の詳細な構成）
図４８は、モジュール無効化部２５０の機能的な構成を示す機能ブロック図である。
【０１７６】
同図に示すように、モジュール無効化部２５０は、受信部１３０１、送信部１３０２、アクセス情報取得鍵保持部１３０３、および更新モジュール選択部１３０４から構成される。
受信部１３０１は、判断部２１０ｂから改ざんされた不正な更新モジュールを無効化する指示を受信する。また、受信部１３０１は、更新モジュール１４１、１４２、１４３からアクセス情報取得鍵の取得依頼を受信する。
【０１７７】
送信部１３０２は、アクセス情報取得鍵の取得依頼に応じて、アクセス情報取得鍵を依頼元の更新モジュールへ送信する。
アクセス情報取得鍵保持部１３０３は、アクセス制御モジュール１４０が保持するアクセス情報を復号するための鍵であるアクセス情報取得鍵を保持する。
更新モジュール選択部１３０４は、改ざんされた不正な更新モジュールの無効化処理を行う更新モジュールを選択し、選択した更新モジュールに、不正な更新モジュールの無効化を指示する。
【０１７８】
なお、モジュール選択部１３０４が選択した更新モジュールからアクセス情報取得鍵の取得依頼があった場合には、送信部１３０２は、アクセス情報取得鍵に、消去対象となる更新モジュールの識別子を付して、前記更新モジュールへ送信する。
２．不正モジュール検知システム２の動作
続いて、不正モジュール検知システム２の動作を説明する。
（１）全体の動作概要
図４９は、不正モジュール検知システム２全体の処理の流れを示すフローチャートである。不正モジュール検知システム２全体の処理は、実施の形態３（図２６）と同様である。
（２）初期設計処理の動作
図５１は、初期設計処理のシーケンス図である。
【０１７９】
不正モジュール検知システム２は、機器１００ｂの工場製造時に、機器１００ｂの不揮発メモリへ各種ソフトウェアをインストールする（ステップＳ２６１）。
ここで、図５０を用いて、初期設計処理の際に機器１００ｂに埋め込まれる鍵について説明する。図５０は、機器１００ｂに埋め込まれる鍵を模式的に示す図である。ここでは、更新モジュール群１３０の内部に更新モジュール１４１のみ含まれている。実際には、更新モジュール１４２および１４３も含まれるが、ここでは省略する。
【０１８０】
図５０に示すように、保護制御モジュール１２０ｂには暗復号鍵が埋め込まれ、更新モジュール１４１には署名公開鍵、検証鍵および認証鍵対が埋め込まれる（この時点では、まだ、更新モジュールに分散情報の組は埋め込まれてない）。更に、更新モジュール１４１には、それぞれの更新モジュールを識別するための更新モジュール識別子が埋め込まれ、その状態で機器１００ｂにインストールされる。
【０１８１】
暗復号鍵は、アプリ１１０およびアプリ１１１を暗号化および復号するための鍵である。各アプリは、暗復号鍵を用いて暗号化された状態で不揮発メモリへ記憶され、実行時に保護制御モジュール１２０ｂにより暗復号鍵を用いて復号された後、実行される。
機器１００ｂが、コンテキストを切り替えながら複数のアプリを実行する場合には、コンテキスト切り替えのタイミングで、暗復号鍵を用いて、各アプリが使用しているデータの暗号化および復号を行うことにより、各アプリの実行時に、デバッガなどの解析ツールによって、データが抜き取られることを防止する。
【０１８２】
各更新モジュールに埋め込まれる鍵のうち、署名公開鍵は、すべての更新モジュールに共通の鍵である。検証鍵と認証鍵対とは、それぞれの更新モジュールで異なる鍵である。
ステップＳ２６１〜ステップＳ２６７までの処理は、実施の形態３のステップＳ１１３〜ステップＳ１１７（図２７）と同様である。
（３）更新モジュール初期化処理
図５２は更新モジュール初期化処理（図５１のステップＳ２６７）の動作を示すフローチャートである。図５２では、更新モジュール１４１についてのみ記載しているが、更新モジュール１４２および１４３の動作も基本的に同一である。
【０１８３】
更新モジュール初期化処理の動作は、実施の形態３（図２９）と同様である。
（４）検知処理の動作
続いて、図５３のシーケンス図を用いて不正モジュール検知システム２の検知処理（図４９のステップＳ２５２）の詳細について説明する。
機器１００ｂは、初期設定処理を終えると工場から出荷され、ユーザの元へ送られ、ユーザの元で機器１００ｂが使用される。
【０１８４】
機器１００ｂで各アプリが動作しているとき、機器１００ｂ内部では、保護制御モジュール１２０ｂが復号ロード機能、改ざん検出機能、解析ツール検出機能などの機能を制御し、各アプリを攻撃者による攻撃から保護する。
実施の形態４の検知処理は、実施の形態１〜３の検知処理と異なる。
先ず、各更新モジュールが、保護制御モジュール１２０ｂの改ざん検出を実施する（ステップＳ２８１）。改ざん検出は、検証鍵を使用して保護制御モジュール１２０ｂのＭＡＣ値を計算し、計算したＭＡＣ値とＭＡＣ値テーブルに保持されているＭＡＣ値とを比較することにより行う。
【０１８５】
ＭＡＣ値が一致すれば、保護制御モジュール１２０ｂは改ざんされていないと判定し、ＭＡＣ値が一致しなければ、保護制御モジュール１２０ｂは改ざんされていると判定する。
なお、図５３では記載を簡略化し、更新モジュール１４１のみが保護制御モジュール１２０の改ざん検出を行っているように記載されているが、当然ながら、更新モジュール１４２および１４３でも同様の処理が行われる。
【０１８６】
保護制御モジュール１２０ｂが改ざんされているか否か、即ち、ＭＡＣ値が一致するか否かを判定し（ステップＳ２８２）、保護制御モジュール１２０ｂが改ざんされていると判定した場合（ステップＳ２８２でＹ）、更新モジュール１４１は、その旨を、更新サーバ２００ｂの判断部２１０ｂおよび他の更新モジュールへ通知する（ステップＳ２８３）。
【０１８７】
保護制御モジュール１２０ｂが改ざんされていないと判定した場合（ステップＳ２８２でＮ）、更新モジュール１４１は、判断部２１０ｂや他の更新モジュールへ通知を行わず、改ざん検出処理へ戻る。
他の更新モジュールから保護制御モジュール１２０ｂが改ざんされている旨の通知を受けた更新モジュールは、検証鍵およびＭＡＣ値を用いて、保護制御モジュール１２０ｂの改ざん検出を実施する（ステップＳ２８４およびステップＳ２８６）。そして、改ざん検出結果を、判断部２１０ｂおよび他の更新モジュールへ通知する（ステップＳ２８５およびステップＳ２８７）。
（５）解析・判断処理の動作
図５４は、解析・判断処理（図４９のステップＳ２５３）の動作を示すシーケンス図である。図５４では、更新モジュール１４１、１４２、１４３のそれぞれが個別に行う処理を、更新モジュール群１３０ｂが行う処理としてまとめて記載している。
【０１８８】
解析・判断処理の動作は、実施の形態３（図３０）と同様である。
（６）相互認証処理の動作
図５５および図５６は、不正モジュール検知システム２による相互認証処理の動作の流れを示すシーケンス図である。
実施の形態３と同様に、解析・判断処理において、判断部２１０ｂが保護制御モジュール１２０を回復する必要があると判断した場合、判断部２１０ｂは更新用ソフトウェア配布部２４０へ回復指示を行う。更新用ソフトウェア配布部２４０は、各更新モジュールへ更新処理の開始を指示した後、更新用ソフトウェア配布部２４０と各更新モジュール間で、それぞれ１対１の相互認証処理を行う。
【０１８９】
図５５は、更新モジュール１４１が、更新用ソフトウェア配布部２４０を認証する処理の動作を示す。ここでは、更新モジュール１４１について記載しているが、他の更新モジュールの動作も同一である。
更新モジュール１４１が、更新用ソフトウェア配布部２４０を認証する動作は、図３１に示した実施の形態３の検知モジュール１３１ａが、検証基データ配布部２２０ａを認証する動作と同様である。
【０１９０】
次に、更新用ソフトウェア配布部２４０が、更新モジュール１４１、１４２、１４３を認証する。図５６は、更新用ソフトウェア配布部２２０が各更新モジュールを認証する処理の動作を示す。
更新用ソフトウェア配布部２４０が、各更新モジュールを認証する動作は、図３２に示した実施の形態３の検証基データ配布部２２０ａが、各更新モジュールを認証する動作と同様である。
（７）回復処理の動作
図５７は、不正モジュール検知システム２の回復処理（図４９のステップＳ２５５）の動作を示すフローチャートである。回復処理は、上述した相互認証処理において、相互認証が成功した場合に、改ざんされた保護制御モジュール１２０ｂを、新しい更新用の保護制御モジュールへ更新する処理である。
【０１９１】
回復処理は、実施の形態３（図３３）と同様に、相互監視処理（ステップＳ３２１）、更新処理（ステップＳ３２２）、および再暗号化処理（ステップＳ３２３）を含む。
（８）相互監視処理
図５８は、相互監視処理（図５７のステップＳ３２１）の動作を示すシーケンス図である。
【０１９２】
相互監視処理では、更新モジュール１４１、１４２、１４３が、更新モジュール群１３０ｂ内の他の更新モジュールに対して改ざん検出処理を実行する。相互監視処理において、どの更新モジュールに対して改ざん検出処理を実行するかは、更新モジュールが保持する監視パターンに記述されている。監視パターンには、改ざん検出対象であるモジュールに関する情報（モジュール識別子、メモリ上の位置、サイズ、アドレス、ファイル名等）が記述されている。
【０１９３】
実施の形態４の相互監視処理の動作は、実施の形態３の相互監視処理（図３４）の動作と同様である。
（９）更新処理
続いて、図５９および図６０のシーケンス図を用いて、更新処理（図５７のステップＳ３２２）について説明する。
【０１９４】
ステップＳ３４１〜ステップＳ３５７は、実施の形態３（図３５および図３６）のステップＳ１９１〜ステップＳ２０７と同様である。
更新モジュール１４１、１４２、１４３はそれぞれ、事前に受信した更新検証証明書を用いて、保護制御モジュールが正しく更新されたかを検証し（ステップＳ５８２）、検証結果を更新用ソフトウェア配布部２４０へ通知する（ステップＳ３５９）。
【０１９５】
更新用ソフトウェア配布部２４０は、各更新モジュールから送信された検証結果を受信すると、受信した検証結果から保護制御モジュールが正しく更新されたかを判定する（ステップＳ３６０）。
正しく更新されていないと判定する場合（ステップＳ３６０でＮ）、更新用ソフトウェア配布部２４０は、機器１００ｂを停止させる。
【０１９６】
正しく更新されている場合（ステップＳ３６０Ｙ）、更新用ソフトウェア配布部２４０は、更新処理終了を各更新モジュールへ通知する（ステップＳ３６１）。
各更新モジュールは、更新処理終了通知を受信すると、新しい保護制御モジュールのＭＡＣ値を生成し（ステップＳ３６２）、生成したＭＡＣ値と保護制御モジュールの識別子との組を、ＭＡＣ値テーブルに書き込む。
（１０）相互監視処理と更新処理との関係
実施の形態４に係る相互監視処理と更新処理とは、実施の形態３と同様に、互いに連携しながら実行される。
【０１９７】
図６１は、相互監視処理と更新処理との連携動作の流れを模式的に示す図である。詳細は既に実施の形態３（図３７）で説明しているので、ここでは説明を省略する。
（１１）再暗号化処理
図６２は、再暗号化処理（図５７のステップＳ３２３）の動作を示すシーケンス図である。実施の形態４の再暗号化処理は、実施の形態３（図３８）と同様である。
（１２）次ラウンド準備処理の動作
図６３は、次ラウンド準備処理（図４９のステップＳ２５６）の動作を示すシーケンス図である。次ラウンド準備処理では、回復処理の終了後、次の回復処理のための準備を行う。
【０１９８】
まず、更新後の保護制御モジュールは、新暗復号鍵から、秘密分散法を用いて分散情報を生成し（ステップＳ３８１）、更に、署名秘密鍵を用いて、新暗復号鍵証明書を生成する（ステップＳ３８２）。そして、保護制御モジュールは、生成した分散情報と暗復号鍵証明書とを各更新モジュール１４１、１４２、１４３へ送信する（ステップＳ３８３）。
ここで、初期設計処理時と同様に、分散情報は、更新モジュールの数と同数が生成され、それぞれの更新モジュールが、異なる分散情報のペアを保持するように送信される。新暗復号鍵証明書は、各更新モジュール１４１、１４２、１４３へ同じ証明書が送信される。
【０１９９】
各更新モジュール１４１、１４２、１４３は、保護制御モジュールから分散情報と新暗復号鍵証明書とを受信し、受信した分散情報と新暗復号鍵証明書とを保持する（ステップＳ３８４）。
（１３）無効化処理の動作
続いて、図６４のシーケンス図を用いて、無効化処理の詳細について説明する。
【０２００】
無効化処理は、相互認証時に認証に失敗した更新モジュールが存在する場合、回復処理内の監視処理において改ざんされた更新モジュールを検出した場合、回復処理内の再暗号化処理において不正な更新モジュールを炙り出した場合など、機器１００ｂ内部に存在する不正な（改ざんされた）モジュールを無効化する処理である。
ここでは、更新モジュール１４３が改ざんされ、それを更新モジュール１４１および１４２が検出した場合の処理を例に、無効化処理の動作の詳細を説明する。
【０２０１】
判断部２１０ｂは、更新モジュール１４１、１４２、１４３から受信した、相互監視結果を基に、どの更新モジュールが改ざんされているかを判定する（ステップＳ３９１）。判定方法としては、例えば、過半数の更新モジュールが「改ざんされている」と判断した更新モジュールを不正な更新モジュールであると判定する。
判断部２１０ｂは、改ざんされた更新モジュールの識別情報と共に、モジュール無効化部２５０へ無効化の指示を出力する（ステップＳ３９２）。
【０２０２】
モジュール無効化部２５０は、改ざんされていないと判定した更新モジュール１４１および１４２のいずれか（ここでは、更新モジュール１４１とする。）へ、改ざんされた更新モジュール１４３の無効化を依頼する（ステップＳ３９３）。
更新モジュール１４１は、モジュール無効化部２５０から、更新モジュール１４３の無効化依頼を受信すると、モジュール無効化部２５０に対し、更新モジュール１４３を無効化するためのアクセス情報取得鍵の送付を依頼する（ステップＳ３９４）。更に、更新モジュール１４１は、アクセス制御モジュール１４０へ、更新モジュール１４３を無効化するためのアクセス情報の取得を依頼する（ステップＳ３９５）。
【０２０３】
モジュール無効化部２５０は、アクセス情報取得鍵の送付依頼を受信すると、更新モジュール１４１が改ざんされていない正当な更新モジュールか否か、および、依頼されたアクセス情報取得鍵が改ざんされた不正な更新モジュール１４３を無効化するためのアクセス情報取得鍵か否かを確認する（ステップＳ３９６）。この確認は、判断部２１０ｂからモジュール無効化部２５０へ通知された更新モジュールの情報を利用して行う。
【０２０４】
確認した結果、改ざんされた更新モジュール１４３からの依頼であったり、或いは、改ざんされていない更新モジュール１４１、１４２に対するアクセス情報取得鍵の取得依頼であったりする場合には（ステップＳ３９６でＮ）、無効化処理を停止する。
確認した結果、問題なければ（ステップＳ３９６でＹ）、依頼してきた更新モジュール１４１へ更新モジュール１４３を無効化するためのアクセス情報取得鍵を送付する（ステップＳ３９７）。
【０２０５】
更新モジュール１４１は、モジュール無効化部２５０からアクセス情報取得鍵を受信し、さらに、アクセス制御モジュール１４０から暗号化されたアクセス情報を受信する（ステップＳ３９８）。更新モジュール１４１は、アクセス情報取得鍵と暗号化されたアクセス情報とから、アクセス情報を取得する（ステップＳ３９９）。取得したアクセス情報は、更新モジュール１４３を消去するための専用ドライバである。更新モジュール１４１は、専用ドライバを利用して、改ざんされた不正な更新モジュール１４３を消去する（ステップＳ４００）。
【０２０６】
更新モジュール１４１は、無効化処理が終了すると、アクセス情報取得鍵、暗号化されたアクセス情報、およびアクセス情報等を消去し、モジュール無効化部２５０へ完了通知を送信する（ステップＳ４０１）。モジュール無効化部２５０は、更新モジュール１４１から完了通知を受信したら、判断部２１０ｂへ無効化の完了通知を送信する（ステップＳ４０２）。
【０２０７】
なお、無効化処理により、分散情報を保持している更新モジュールが無効化された場合、その更新モジュールが保持していた分散情報も消去される。そこで、分散情報を保持している更新モジュールを無効化する場合は、分散情報の消去を考慮した無効化処理を行う必要がある。
分散情報の消去を考慮した無効化処理については、特許文献２の５６ページから６４ページに、「脱退処理」として詳しく説明されている。
＜実施の形態５＞
次に、本発明の実施の形態５について説明する。
【０２０８】
実施の形態４は、保護制御モジュールが改ざんされているかの検証にＭＡＣ値を用いた。
これに対し、実施の形態５は、アプリ実行時に保護制御モジュールから出力される検証データを用いて、保護制御モジュールが改ざんされているか否かを検証する。
１．構成
実施の形態５に係る不正モジュール検知システムは、実施の形態４と同様に機器１００ｂおよび更新サーバ２００ｂから構成される。以下では、実施の形態４と異なる部分を中心に説明する。
（１）保護制御モジュール１２０ｃの構成
図６５は、実施の形態５に係る保護制御モジュール１２０ｃの機能的な構成を示す機能ブロック図である。実施の形態４と同様の機能を有する構成要素は、同じ符号を付して説明を省略する。
【０２０９】
実施の形態４の保護制御モジュール１２０ｂと比較すると、保護制御モジュール１２０ｃは、暗復号鍵生成部９０８を備えていない。また、保護制御モジュール１２０ｂには存在しない検証データ生成部９１２および検証基データ保持部９１３を新たに備える。
検証基データ保持部９１３は、更新サーバ２００ｂから受信した検証基データを保持する。
【０２１０】
検証データ生成部９１２は、検証基データ保持部９１３に保持されている検証基データから検証データを生成し、更新モジュールへ送信する。
（２）更新モジュール１４１ｃの構成
図６６は、実施の形態５に係る更新モジュール１４１ｃの構成を機能的に示す機能ブロック図である。実施の形態４と同様の機能を有する構成要素は、同じ符号を付して説明を省略する。
【０２１１】
実施の形態４の更新モジュール１４１と比較すると、更新モジュール１４１ｃは、新たに検知部８１０および検証データ保持部８１１を備える。
検証部８０５は、保護制御モジュール１２０ｃと各更新モジュールとが正常に動作するか検証を行う。検証部８０５は、事前に計算されたＭＡＣ値やハッシュ値を用いて、各更新モジュールを検証する。
【０２１２】
検証部８０５は、保護制御モジュール１２０ｃの検証では、検知部８１０を用いる。検証部８０５は、保護制御モジュール１２０ｃから検証データを受け取ると、検証データを、検証データ保持部８１１に格納する。また、検証部８０５は、保護制御モジュール１２０ｃからアプリの復号処理の出力データを受け取ると、当該出力データを検知部８１０に出力する。そして、検証部８０５は、保護制御モジュール１２０ｃが正常に動作するか否かを示す検証結果を検知部８１０から受信する。
【０２１３】
検知部８１０は、検証部８０５から受け取った出力データと検証データ保持部８１１に記憶されている検証データとを用いて、検証データに含まれる署名を検証する。署名を検証することにより、保護制御モジュール１２０ｃのアプリ復号処理の入出力の対応関係が正しいか否かを検証する。検知部８１０は、検証結果を検証部８０５に送信する。
検証データ保持部８１１は、検証部８０５から受け付けた検証データを記憶する。
（３）更新ソフトウェア配布部２４０ｃの構成
図６７は、実施の形態５に係る更新用ソフトウェア配布部２４０ｃの構成を機能的に示す機能ブロック図である。実施の形態４と同様の機能を有する構成要素は、同じ符号を付して説明を省略する。
【０２１４】
実施の形態４の更新用ソフトウェア配布部２４０と比較すると、更新用ソフトウェア配布部２４０ｃは、新たに、更新用ソフトウェア実行部１２２０、アプリ保持部１２２１、および検証基データ生成部１２２２とを備える。
更新用ソフトウェア実行部１２２０は、更新用ソフトウェア保持部１２１０に保持されている更新用の保護制御モジュールを用いて暗号化アプリを実行し、復号処理の入出力データを取得する。
【０２１５】
アプリ保持部１２２１は、機器１００ｂにインストールされるアプリを保持する。
検証基データ生成部１２２２は、保護制御モジュール１２０ｃの復号ロード部９０４が正常動作した際の、暗号化アプリの復号処理の入出力データの対応関係を保証する検証基データを生成し、生成した検証基データを機器１００ｂへ送信する。検証基データの詳細は後述する。
２．動作
（１）初期設計処理の動作
ここでは、実施の形態５に係る初期設計処理の動作について説明する。
【０２１６】
図６８および図６９は、初期設定処理の動作を示すフローチャートである。なお、ここでは、実施の形態４と異なる部分を説明する。
更新サーバ２００ｂは、更新用ソフトウェア保持部１２１０に保持されている保護制御モジュール１２０ｃを、機器１００ｂに送信する（ステップＳ５０１）。
ステップＳ５０２〜ステップＳ５１１までは、実施の形態４と同様である。
【０２１７】
保護制御モジュール１２０ｃは、ステップＳ５０９およびステップＳ５１０で更新モジュール群１３０へ分散情報と暗復号鍵証明書とを送信した後、更新サーバ２００ｂへ、検証基データの送付を依頼する（ステップＳ５１２）。
更新サーバ２００ｂは、検証基データを生成する（ステップＳ５１３）。そして、更新サーバ２００ｂは、生成した検証基データを、保護制御モジュール１２０ｃへ送信する（ステップＳ５１４）。
【０２１８】
保護制御モジュール１２０ｃは、検証基データを受信して、記憶する（ステップＳ５１５）。
（２）更新モジュール初期化処理
図７０は、更新モジュール初期化処理の動作を示すフローチャートである。
更新モジュール１４１ｃは、ステップＳ５２２で更新モジュール１４２ｃおよび更新モジュール１４３ｃの改ざん検出用証明書の検証を行う。
【０２１９】
実施の形態５では、保護制御モジュール１２０ｃの改ざん検出を行う際、ＭＡＣ値を用いた検証は行わない。そのため、ステップＳ５２２で、更新モジュール１４１ｃは、保護制御モジュール１２０ｃの改ざん検出用証明書の検証を行わない。
（３）検証基データ生成処理
図７１は、検証基データ生成処理の動作を示すフローチャートである。
【０２２０】
検証基データ生成部１２２２は、機器１００ｂにインストールされる複数のアプリを保護制御モジュール１２０ｃの暗復号鍵で暗号化する（ステップＳ５３１）。
次に、検証基データ生成部１２２２は、証明書（対応関係証明書）を生成する（ステップＳ５３２）。
証明書は、保護制御モジュール１２０ｃが正常動作した際の入力データおよび出力データに対して、更新サーバ２００の署名秘密鍵保持部１２０９の署名秘密鍵を用いて生成された署名である。保護制御モジュール１２０ｃに入力されるデータは、暗号化されたアプリであり、保護制御モジュール１２０ｃから出力されるデータは、復号された平文アプリである。なお、署名生成の対象となるデータは、保護制御モジュール１２０ｃの入力データおよび出力データだけでなく、アプリの識別情報やアプリの内容を示す情報（ＤＶＤやＢＤの再生アプリ、ネットバンキングのアプリなど）を含んでもよい。また、保護制御モジュール１２０ｃの識別情報を含んでもよい。
【０２２１】
最後に検証基データ生成部１２２２は、アプリの識別情報、暗号化されたアプリのデータと証明書とから成る検証基データを生成する（ステップＳ５３３）。
図７２は、検証基データのデータ構成を示す図である。
検証基データ１２００は、複数のアプリについて、アプリ毎にアプリの識別情報と当該識別情報に対応する暗号化アプリのデータと証明書とが記載されて構成される。
（４）検知処理の動作
図７３は、検知処理の動作を示すシーケンス図である。
【０２２２】
保護制御モジュール１２０ｃは、各アプリを暗号化して保護している。実施の形態５の検知処理は、アプリの実行時に保護制御モジュール１２０ｃの検証を行うことが特徴である。
ここでは、保護制御モジュール１２０ｃがアプリ１１０を実行する場面を具体例として用い説明する。他のアプリの実行時に保護制御モジュール１２０ｃを検証する場合も同様である。
【０２２３】
保護制御モジュール１２０ｃは、アプリ１１０を実行するコマンドを受け付けると、検証データ生成部９１２が生成した検証データと、アプリ１１０の識別情報と、復号結果であるアプリ１１０のデータとを、更新モジュール１４１ｃへ送信する（ステップＳ５４１）。図７３では、記載を簡略化し、更新モジュール１４１ｃのみが保護制御モジュール１２０ｃの検証をしているが、更新モジュール１４２ｃおよび１４３ｃでも同様の処理が行われる。
【０２２４】
その後の処理についても、更新モジュール１４２ｃおよび１４３ｃについて省略しているが、基本的には、更新モジュール１４１ｃと同様の処理が行われる。
更新モジュール１４１ｃは、検証データを用いて、保護制御モジュール１２０ｃによるアプリ１１０の復号処理の入出力対応が正しいか否かを検証する（ステップＳ５４２）。更新モジュール１４１ｃは、検証データに含まれる暗号化されたアプリ１１０のデータ（入力データ）と、受信した復号結果（出力データ）とを用いて検証する。
【０２２５】
保護制御モジュール１２０ｃによる復号処理の入出力が正しくない場合（ステップＳ５４２で「正しくない」）、更新モジュール１４１ｃは、保護制御モジュール１２０ｃが改ざんされていると判定し、検証結果を判断部２１０ｂおよび他の更新モジュールへ通知する（ステップＳ５４３）。
保護制御モジュール１２０ｃによる復号処理の入出力が正しい場合（ステップＳ５４２で「正しい」）、検証モジュール１４１ｃは、判断部２１０ｂや他の更新モジュールへの通知を行わず、次のアプリ実行時に再度保護制御モジュール１２０ｃの検証を行う。
【０２２６】
更新モジュール１４２ｃおよび１４３ｃは、更新モジュール１４１ｃから保護制御モジュール１２０ｃが改ざんされているとの検証結果を通知された場合、保護制御モジュール１２０ｃへアプリの識別情報と復号したアプリのデータと検証データとの送信を依頼する（ステップＳ５４４）。
保護制御モジュール１２０ｃは、更新モジュール１４２ｃおよび１４３ｃから送信依頼を受け付けると、アプリの識別情報と復号したアプリのデータと検証データとを送信する（ステップＳ５４５）。
【０２２７】
更新モジュール１４２ｃおよび１４３ｃは、それぞれ、受信したアプリの識別情報と復号したアプリのデータと検証データとから、保護制御モジュール１２０ｃによるアプリ１１０の復号処理の入出力対応が正しいか否かを検証する（ステップＳ５４６）。そして、更新モジュール１４２ｃおよび１４３ｃは、判断部２１０ｂへ検証結果を送信し（ステップＳ５４７）、判断部２１０ｂは、検証結果を受信する。
（５）更新処理の動作
保護制御モジュール１２０ｃを更新用の新たな保護制御モジュールへ更新する場合、実施の形態５では、新たな保護制御モジュールの暗復号鍵保持部が、更新用ソフトウェア配布部２４０ｃによって生成された新暗復号鍵を保持している状態で、機器１００ｂにインストールされる。
（６）再暗号化処理の動作
図７４は、再暗号化処理の動作を示すシーケンス図である。
【０２２８】
実施の形態５では、新たな保護制御モジュールの暗復号鍵保持部には、既に新暗復号鍵は保持されている。そこで、図７４に示す再暗号化処理では、実施の形態４（図６２）のステップＳ３７６のように新暗復号鍵の生成は行わない。
そして、保護制御モジュールは、旧暗復号鍵を復元し、旧暗復号鍵を用いて暗号化されたアプリを復号し、既に保持している新暗復号鍵を用いて、アプリを再暗号化する（ステップＳ５５６）。
（７）次ラウンド準備処理の動作
図７５は、次ラウンド準備処理の動作を示すシーケンス図である。
【０２２９】
保護制御モジュール１２０ｃは、ステップＳ５６３で各更新モジュールへ分散情報と暗復号鍵証明書とを送信した後、アプリの識別情報と暗号化されたアプリと検証基データの送付依頼とを、更新サーバ２００ｂへ送信する（ステップＳ５６７）。その後、更新サーバ２００ｂは、検証基データ生成処理を行う（ステップＳ５６８）。
次ラウンド準備処理における検証基データ生成処理は、初期設計処理における検証基データ生成処理と若干異なる。
【０２３０】
更新サーバ２００ｂは、更新処理で生成した新暗復号鍵を用いて、受信した暗号化アプリを復号する。そして、暗号化されたアプリおよび復号したアプリに対して、証明書（対応関係証明書）を生成する。証明書は、更新サーバ２００ｂの署名秘密鍵を用いて生成された署名である。また、検証基データの構成は、図７２に示した構成と同様である。
更新サーバ２００ｂは、生成した検証基データを保護制御モジュールへ送信する（ステップＳ５６９）。保護制御モジュールは、検証基データを受信して、記憶する（ステップＳ５７０）。
（８）検証基データ更新処理
図７６は、検証基データ更新処理の動作を示すシーケンス図である。
【０２３１】
機器１００ｂにアプリが追加される場合、検証基データも追加する必要がある。ここでは、機器１００ｂに新たなアプリ（「アプリ１１５」という。）を追加する場合を例に説明する。
ユーザが、機器１００ｂにアプリを追加する場合、機器１００ｂ内の保護制御モジュール１２０ｃは、ダウンロードしたアプリ１１５を受信する（ステップＳ５８１）。次に、保護制御モジュール１２０ｃは、暗復号鍵を用いて受信したアプリ１１５を暗号化する（ステップＳ５８２）。そして、保護制御モジュール１２０ｃは、アプリの識別情報と暗号化されたアプリと検証基データの送付依頼とを更新サーバ２００ｂへ送信する（ステップＳ５８３）。
【０２３２】
更新サーバ２００ｂは、検証基データ生成処理を行う（ステップＳ５８４）。
検証基データ更新処理における検証基データ生成処理は、上述した次ラウンド準備処理における検証基データ生成処理と同様である。
更新サーバ２００ｂは、更新処理で生成した新暗復号鍵を用いて、受信した暗号化アプリを復号する。そして、更新サーバ２００ｂは、暗号化されたアプリおよび復号したアプリに対して、証明書（対応関係証明書）を生成する。証明書は、更新サーバ２００ｂの署名秘密鍵を用いて生成された署名である。また、検証基データの構成は、図７２に示した構成である。
【０２３３】
更新サーバ２００ｂは、生成した検証基データを、保護制御モジュール１２０ｃへ送信する（ステップＳ５８５）。保護制御モジュール１２０は、受信した検証基データを検証基データ保持部４２０へ記憶する（ステップＳ５８６）。
３．実施の形態５の効果
実施の形態５では、保護制御モジュール１２０ｃが行うアプリの復号処理が正しく実行されるか検証することにより、保護制御モジュール１２０ｃの改ざんの有無を検証した。
【０２３４】
これにより、各更新モジュールが、保護制御モジュール１２０ｃのデータを知ることなく、保護制御モジュール１２０ｃを検証することができる。そのため、仮に更新モジュールが不正動作をしたとしても、保護制御モジュール１２０ｃのデータが漏洩するのを防止することができ、システムの安全性を一層高めることができる。
＜実施の形態６＞
次に、本発明の実施の形態６について説明する。ここでは、実施の形態５と同じ符号を用いて説明する。
１．概要
実施の形態６は、保護制御モジュール１２０ｃが行うアプリの復号処理を複数の処理に分割し、各処理の入出力の対応を検証することにより、保護制御モジュール１２０ｃの改ざん検出を行うことを特徴とする。
【０２３５】
図７７は、保護制御モジュール１２０ｃの復号処理を複数の処理に分割する概要を示す図である。実施の形態６では、一例として、復号処理を、復号部分処理１、復号部分処理２、および復号部分処理３の３つに分割する。
各更新モジュールは、復号部分処理ごとに生成された検証データを用いて、各復号部分処理の入出力の対応を検証する。なお、安全性の観点から、１つの更新モジュールが３つの復号部分処理をすべて検証するのではなく、３つの更新モジュールが、それぞれ異なる復号部分処理を検証することが望ましい。
２．構成
ここでは、実施の形態５と異なる構成について説明する。
【０２３６】
実施の形態６では、検証基データ生成部１２２２が生成する検証基データの構成が異なる。
図７８は、実施の形態６における検証基データのデータ構成を示す図である。
検証基データ１３００は、復号部分処理１に関するデータ１３００ａ、復号部分処理２に関するデータ１３００ｂ、および、復号部分処理３に関するデータ１３００ｃを含む。
【０２３７】
データ１３００ａは、アプリ１１０〜１１４のすべてのアプリについて、各アプリの識別情報、当該識別情報に対応する暗号化アプリのデータ、および、暗号化アプリのデータと復号部分処理１の出力データである中間値１とから生成した対応関係証明書を含む。
データ１３００ｂは、アプリ１１０〜１１４のすべてのアプリについて、各アプリの識別情報、当該識別情報に対応する中間値１のデータ、および、中間値１と復号部分処理２の出力データである中間値２とから生成した対応関係証明書を含む。
【０２３８】
データ１３００ｃは、アプリ１１０〜１１４のすべてのアプリについて、各アプリの識別情報、当該識別情報に対応する中間値２のデータ、および、中間値２と復号部分処理３の出力データである復号したアプリのデータとから生成した対応関係証明書を含む。
なお、中間値１、中間値２、および復号したアプリのデータは、更新用ソフトウェア実行部１２２０が、アプリの復号処理を実行することにより取得する。
【０２３９】
また、各対応関係証明書は、保護制御モジュール１２０ｃが正常動作した際のそれぞれの復号部分処理の入力データおよび出力データに対して、更新サーバ２００ｂの署名秘密鍵を用いて生成する。
復号部分処理１の対応関係証明書は、暗号化された各アプリのデータをそれぞれ入力データとしたときの、入力データと保護制御モジュール１２０ｃが正常動作した際の出力データとに対して、更新サーバ２００ｂの署名秘密鍵を用いて生成した署名である。
【０２４０】
復号部分処理２の対応関係証明書は、各アプリの中間値１をそれぞれ入力データとしたときの、入力データと保護制御モジュール１２０ｃが正常動作した際の出力データとに対して、更新サーバ２００ｂの署名秘密鍵を用いて生成した署名である。
復号部分処理３の対応関係証明書は、各アプリの中間値２をそれぞれ入力データとしたときの、入力データと保護制御モジュール１２０ｃが正常動作した際の出力データとに対して、更新サーバ２００ｂの署名秘密鍵を用いて生成した署名である。
３．動作
（１）初期設計処理の動作
実施の形態６における初期設計処理の動作は、実施の形態５（図６８および図６９）と同様である。実施の形態６では、ステップＳ５０１で更新サーバ２００ｂから機器１００ｂに送信される保護制御モジュール１２０ｃは、図７７に示すように、３つの復号部分処理により暗号化アプリを復号する復号プログラムを含む。
【０２４１】
また、ステップＳ５１３の検証基データ生成処理の詳細は後述する。
（２）検証基データ生成処理
図７９は、実施の形態６に係る検証基データ生成処理の動作を示すフローチャートである。
検証基データ生成部１２２２は、アプリ保持部１２２１に保持されている複数のアプリを、保護制御モジュール１２０ｃの暗復号鍵で暗号化する（ステップＳ６０１）。
【０２４２】
次に、更新用ソフトウェア実行部１２２０は、保護制御モジュール１２０ｃの復号処理を実行し、複数の暗号化アプリを復号して、各復号部分処理の出力データである中間値および復号したアプリを取得する（ステップＳ６０２）。
次に、証明書生成部１２０８は、暗号化アプリのデータおよび中間値１の組、中間値１および中間値２組、ならびに、中間値２および復号したアプリのデータの組に対し、署名秘密鍵保持部１２０９に保持されている署名秘密鍵を用いて、証明書（対応関係証明書）を生成する（ステップＳ６０３）。
【０２４３】
最後に、検証基データ生成部１２２２は、アプリの識別情報と各復号部分処理に対する入力データと、対応関係証明書とから成る検証基データを生成する（ステップＳ６０４）。
（３）検知処理の動作
図８０および図８１は、実施の形態６に係る検知処理の動作を示すシーケンス図である。
【０２４４】
ここでは、具体例として、機器１００ｂがアプリ１１０を実行する時に、保護制御モジュール１２０ｃの検知処理を行う場合について説明する。
保護制御モジュール１２０ｃは、アプリ１１０を実行するコマンドを受信すると、検証基データ保持部９１３に保持されている検証基データ（図７８）から検証データを生成する（ステップＳ６１１）。
【０２４５】
検証データ生成部９１２は、図８２に示す復号部分処理１の検証データ１３０１と、図８３に示す復号部分処理２の検証データ１３０２と、図８４に示す復号部分処理３の検証データ１３０３とを生成する。
検証データ生成後、保護制御モジュール１２０ｃは、暗号化されたアプリ１１０を復号する（ステップＳ６１２）。
【０２４６】
保護制御モジュール１２０ｃは、一つの更新モジュールを選択し（ここでは、更新モジュール１４１ｃとする。）、選択した更新モジュール１４１ｃへ、アプリ１１０の識別情報と中間値１と復号部分処理１の検証データとを送信する（ステップＳ６１３）。
保護制御モジュール１２０ｃは、先に選択した更新モジュールとは異なる更新モジュールを選択し（ここでは、更新モジュール１４２ｃとする。）、選択した更新モジュール１４２ｃへ、アプリ１１０の識別情報と中間値２と復号部分処理２の検証データとを送信する（ステップＳ６１４）。
【０２４７】
さらに、保護制御モジュール１２０ｃは、先に選択した２つの更新モジュールとは異なる更新モジュールを選択し（ここでは、更新モジュール１４３ｃとする。）、選択した更新モジュール１４３ｃへ、アプリ１１０の識別情報と復号したアプリのデータと復号部分処理３の検証データとを送信する（ステップＳ６１５）。
そして、各更新モジュールは、受信した検証データを用いて、復号部分処理の入出力対応が正しいか否かを検証する（ステップＳ６１６、６１７、６１８）。
【０２４８】
各更新モジュールは、復号部分処理の入出力が正しくないと判定した場合、保護制御モジュール１２０が改ざんされていると判定し（ステップＳ６１９、６２０、６２１でＹ）、検証結果を、判断部２１０ｂおよび他の更新モジュールへ通知する（ステップＳ６２２）。なお、図８１では、更新モジュール１４１ｃのみが検証結果を通知するように記載しているが、更新モジュール１４２ｃおよび１４３ｃも、同様に検証結果を通知する。
【０２４９】
各更新モジュールは、復号部分処理の入出力が正しく、保護制御モジュール１２０ｃが改ざんされていないと判定する場合（ステップＳ６１９、６２０、６２１でＮ）、判断部２１０ｂや他の更新モジュールへの通知を行わず、次のアプリ実行時に再度保護制御モジュール１２０ｃの検証を行う。
（４）次ラウンド準備処理の動作
実施の形態６における次ラウンド準備処理の動作は、実施の形態５（図７５）と同様である。ただし、実施の形態６では、更新サーバ２００ｂが生成する検証基データは、図７８に示した検証基データ１３００である。
（５）検証基データ更新処理の動作
実施の形態６における検証基データ更新処理の動作は、実施の形態５（図７６）と同様の動作である。ただし、実施の形態６における検証基データ更新処理の検証基データ生成処理では、更新用ソフトウェア実行部１２２０は、暗号化アプリから中間値１、中間値２、および、復号したアプリのデータを取得する。そして、検証基データ生成部１２２２は、取得したデータを基に図７８に示す検証基データ１３００を生成する。
４．実施の形態６の効果
実施の形態６では、保護制御モジュール１２０ｃが実行する復号処理を部分処理に分割し、部分処理ごとに入出力データの対応関係を検証する。そのため、仮に更新モジュールが不正動作をしたとしても、保護制御モジュール１２０ｃが実行する復号処理の全体が漏洩するのを防止することができる。さらに、保護制御モジュール１２０ｃによる復号処理の全体のうち、どの部分が改ざんされたかを知ることができる。こ
＜実施の形態７＞
次に、本発明の実施の形態７について説明する。ここでは、実施の形態５と同じ符号を用いて説明する。
１．構成
実施の形態７は、検証基データ生成部１２２２が生成する検証基データの構成が、実施の形態５と異なる。
【０２５０】
図８５は、実施の形態７における検証基データのデータ構成を示す図である。
検証基データ１４００は、各アプリについてのアプリの識別情報と当該識別情報に対応する暗号化アプリのデータと検証値、および、復号処理証明書から構成される。
暗号化アプリのデータは、更新用ソフトウェア実行部１２２０が保護制御モジュール１２０ｃを実行し、アプリ保持部１２２１に保持されている各アプリを暗復号鍵を用いて暗号化することにより生成される。
【０２５１】
検証値は、暗号化したアプリのデータを入力データとしたときの、入力データと保護制御モジュール１２０ｃが正常動作した際の復号結果である出力データとを結合したデータのハッシュ値である。なお、検証値は、ハッシュ値を用いる代わりに、署名を用いてもよい。また、ハッシュ値を計算する対象データは、入力データおよび出力データだけでなく、アプリの識別情報やアプリの内容を示す情報（ＤＶＤやＢＤの再生アプリ、ネットバンキングのアプリなど）を含んでもよい。さらに、保護制御モジュール１２０ｃの識別情報を含んでもよい。
【０２５２】
復号処理証明書は、以下のように生成される。先ず、アプリ１１０の検証値、アプリ１１１の検証値、アプリ１１２の検証値、アプリ１１３の検証値、およびアプリ１１４の検証値をすべて結合し、結合した値からハッシュ値を計算する。次に、計算したハッシュ値に対して、更新サーバ２００ｂの署名秘密鍵を用いて署名を生成する。生成された署名が復号処理証明書となる。
【０２５３】
また、実施の形態７は、保護制御モジュール１２０ｃの検証データ生成部９１２が生成する検証データが、実施の形態５と異なる。検証データ生成部９１２は、検証基データ保持部９１３に保持されている検証基データ（図８５の検証基データ１４００）から、検証データを生成し、各更新モジュールへ送信する。
ここでは、具体例として、アプリ１１０の実行時に検証データ生成部９１２が生成する検証データについて説明する。
【０２５４】
図８６は、アプリ１１０の実行時に検証データ生成部９１２が生成する検証データ１４０１のデータ構成を示す図である。
検証データ生成部９１２は、検証基データ１４００から、アプリ１１０以外のアプリ１１１、１１２、１１３、１１４の識別情報および暗号化アプリのデータと、アプリ１１０の検証値とを削除することにより、検証データ１４０１を生成する。
【０２５５】
なお、検証データ生成部９１２は、他のアプリについても同様の方法により検証データを生成する。すなわち、検証データ生成部９１２は、検証基データ１４００から、実行するアプリ以外のアプリの識別情報と暗号化アプリのデータと実行するアプリの検証値とを削除することにより、検証データを生成する。
２．動作
（検知処理）
実施の形態７における検知処理の動作は、概ね、実施の形態５（図７３）と同様である。
【０２５６】
実施の形態７では、ステップＳ５４２の検証方法が異なる。
ステップＳ５４２において、更新モジュール１４１ｃは、検証データに含まれる暗号化アプリのデータと受信した復号アプリのデータとからハッシュ値を計算する。そして、計算したハッシュ値と検証データに含まれる他のアプリの検証値とを結合した  データから、さらにハッシュ値を計算する。最後に、更新モジュール１４１ｃは、検証データに含まれる復号処理証明書と計算されたハッシュ値とを用いて、アプリの復号処理の入出力が正しいか否かを検証する。
３．実施の形態７の効果
実施の形態７の検証データは、保護制御モジュール１２０ｃが復号したアプリに関する情報のみが開示されている。これにより、更新モジュールが不正動作をしたとしても、検証データから他のアプリに関する情報が漏洩することがない。
【０２５７】
また、実施の形態７では、検証基データを、暗号化アプリのデータ、検証値（ハッシュ値）、および、復号処理証明書（結合ハッシュ値から生成されたハッシュ値に対する署名）で構成することにより、保護制御モジュール１２０ｃが正しく復号処理を行っていることを検証することができる。
＜実施の形態８＞
次に、本発明の実施の形態８について説明する。ここでは、実施の形態５と同じ符号を用いて説明する。
１．概要
実施の形態８は、各更新モジュールが検知処理に用いる検証データを、検証後に消去することが特徴である。さらに、実施の形態８は、各更新モジュールがお互いに改ざん検出処理を行い、相互に検証データを消去したことを確認し合うことが特徴である。なお、各装置の構成は、実施の形態５と同様である。
２．動作
（検知処理）
図８７および図８８は、実施の形態８に係る検知処理の動作を示すシーケンス図である。
【０２５８】
図８７のステップＳ６５１〜ステップＳ６５７までは、実施の形態５（図７３）と同様である。ここでは、図８８のステップＳ６６１から説明する。
各更新モジュールは、検証データ保持部８１１に記憶されている検証データを消去する（ステップＳ６６１）。次に、各更新モジュールは、検証データを消去したか否かを確認するため、相互に改ざん検出処理を行う。
【０２５９】
更新モジュール１４１ｃは、更新モジュール１４２ｃの改ざん検出処理を行い（ステップＳ６６２）、更新モジュール１４２ｃは、更新モジュール１４３ｃの改ざん検出処理を行い（ステップＳ６６３）、更新モジュール１４３ｃは、更新モジュール１４１ｃの改ざん検出処理を行う（ステップＳ６６４）。
なお、改ざん検出処理は、検証鍵を用いて各更新モジュールのＭＡＣ値を計算し、ＭＡＣ値テーブルに保持されているＭＡＣ値と、計算されたＭＡＣ値とを比較することにより行われる。また、ＭＡＣ値を用いる代わりに、各更新モジュールのハッシュ値を算出し、各更新モジュールに予め付加されている証明書に記述されているハッシュ値と、算出されたハッシュ値とを比較することにより行われるとしてもよい。
【０２６０】
各更新モジュールは、改ざん検出結果を判断部２１０ｂへ送信する（ステップＳ６６５）。
判断部２１０ｂは、各更新モジュールから改ざん検出結果を受信し（ステップＳ６６７）、保護制御モジュール１２０ｃの検知処理を行った更新モジュールが改ざんされているか否か判定する（ステップＳ６６８）。
【０２６１】
更新モジュールが改ざんされていると判定した場合（ステップＳ６６８でＹ）、判断部２１０ｂは、保護制御モジュール１２０ｃの検知処理が正しく行われていないと判断し、改ざんされた更新モジュールの無効化処理を行う（ステップＳ６６９）。その後、判断部２１０ｂは、保護制御モジュール１２０ｃに対して、再度検知処理を行う旨を通知する（ステップＳ６７０）。
【０２６２】
更新モジュールが改ざんされていないと判定した場合（ステップＳ６６８でＮ）、ステップＳ６６１において検証データの消去が正しく行われたものとみなすことができる。
３．実施の形態８の効果
実施の形態８では、各更新モジュールが、検知処理に用いた検証データを消去したことを相互に確認することにより、更新モジュールにおいて検証データが蓄積されるのを防止することができる。これにより、１つの更新モジュールが不正動作をしたとしても、１つのアプリの検証データの漏洩だけで済み、それ以上の検証データの漏洩を防止することができる。
＜実施の形態９＞
次に、本発明の実施の形態９について説明する。ここでは、実施の形態５と同じ符号を用いて説明する。
１．概要
実施の形態９は、保護制御モジュールの検知処理において、アプリのデータを用いず、更新サーバ２００ｂから予め受信した検証データを用いることが特徴である。
２．構成
図８９を用いて、実施の形態９における検証データについて説明する。
【０２６３】
検証データ１５００は、更新サーバ２００ｂが生成した５つのデータのそれぞれについて、各データ識別する識別情報と、当該識別情報が示す暗号化データと、暗号化データおよび復号データに対して生成された証明書（対応関係証明書）とから構成される。
なお、対応関係証明書は、暗号化データを入力データとしたときの、入力データと保護制御モジュール１２０ｃが正常動作した際の出力データとに対し、更新サーバ２００ｂの署名秘密鍵を用いて生成した署名である。
３．動作
（１）初期設計処理の動作
図９０および図９１は、実施の形態９に係る初期設計処理の動作を示すシーケンス図である。
【０２６４】
実施の形態９に係る初期設計処理の動作は、実施の形態５（図６８）と同様である。ステップＳ７１３の更新サーバ２００ｂによる検証データ生成処理が実施の形態５と異なる。
（２）検証データ生成処理
図９２は、実施の形態９に係る検証データ生成処理の動作を示すフローチャートである。
【０２６５】
更新サーバ２００ｂは、任意の複数のデータを生成し、生成したデータをそれぞれ保護制御モジュール１２０ｃの暗復号鍵で暗号化する（ステップＳ７２１）。
そして、更新サーバ２００ｂは、生成した前記複数のデータのそれぞれについて、平文のデータおよび暗号化データを対応付けたデータに対して、対応関係証明書を生成する（ステップＳ７２２）。
【０２６６】
最後に、更新サーバ２００ｂは、各データの識別情報と暗号化データと対応関係証明書とから構成される検証データを生成する（ステップＳ７２３）。
（３）検知処理の動作
図９３および図９４は、実施の形態９に係る検知処理の動作を示すシーケンス図である。
【０２６７】
更新モジュール１４１ｃは、既に保持している検証データから１つの暗号化データを選択して保護制御モジュール１２０ｃへ送信する（ステップＳ７３１）。
保護制御モジュール１２０ｂは、受信した暗号化データを、暗復号鍵を用いて復号する（ステップＳ７３２）。保護制御モジュール１２０ｃは、復号したデータを更新モジュール１４１ｃへ送信する（ステップＳ７３３）。
【０２６８】
なお、図９３および図９４では、更新モジュール１４１ｃのみが保護制御モジュール１２０ｃの検知処理を行っているが、更新モジュール１４２ｃおよび１４３ｃにおいても同様の処理が行われる。
更新モジュール１４１ｃは、検証データと受信した復号データとを用いて、保護制御モジュール１２０ｃの復号処理の入出力の対応が正しいか否かを（ステップＳ７３４）。
【０２６９】
復号処理の入出力が正しくない場合（ステップＳ７３４で「正しくない」）、更新モジュール１４１ｃは、保護制御モジュール１２０ｃが改ざんされていると判定し、判断部２１０ｂ、更新モジュール１４２ｃ、および更新モジュール１４３ｃへ検証結果を通知する（ステップＳ７３５）。
復号処理の入出力が正しい場合（ステップＳ７３４で「正しい」）、更新モジュール１４１ｃは、判断部２１０ｂや他の更新モジュールへ検証結果を通知しない。
【０２７０】
その後、更新モジュール１４１ｃは、任意のタイミングで保護制御モジュール１２０ｃの検証を行う。更新モジュール１４１ｃは、定期的に保護制御モジュール１２０ｂの検証を行ってもよいし、保護制御モジュール１２０ｃによるアプリの実行時に行ってもよい。また、検証を行うタイミングが記載された情報を、予め更新サーバ２００ｂから更新モジュール１４１ｃに与えるとしてもよい。
【０２７１】
更新モジュール１４１ｃおよび１４３ｃは、保護制御モジュール１２０ｃが改ざんされている旨の検証結果を受け付けると、既に保持している検証データから１つの暗号化データを選択して保護制御モジュール１２０ｃへ送信する（ステップＳ７３６およびステップＳ７３７）。
保護制御モジュール１２０ｃは、受信した暗号化データを、それぞれ、暗復号鍵を用いて復号し（ステップＳ７３８）、復号したデータを対応する更新モジュール１４２ｃおよび１４３ｃへ送信する（ステップＳ７３９およびステップＳ７４０）。
【０２７２】
更新モジュール１４２ｃおよび１４３ｃは、検証データと受信した検証データとを用いて、保護制御モジュール１２０ｃの復号処理の入出力の対応が正しいか否かを検証する（ステップＳ７４１およびステップＳ７４２）。
更新モジュール１４２ｃおよび１４３ｃは、検証結果を判断部２１０ｂへ送信し（ステップＳ７４３およびステップＳ７４４）、判断部２１０ｂは、検証結果を受信する。
（４）次ラウンド準備処理の動作
図９５は、実施の形態９に係る次ラウンド準備処理の動作を示すシーケンス図である。
【０２７３】
ステップＳ８０１〜ステップＳ８１４までの処理は、実施の形態５（図７５）と同様である。ここでは、ステップＳ８０２以降について説明する。
各更新モジュールは、分散情報の保持した後、更新サーバ２００ｂへ検証データの送付依頼を送信する（ステップＳ８０５、ステップＳ８０６およびステップＳ８０７）。
更新サーバ２００ｂは、検証データ生成処理を行う（ステップＳ８０８）。次ラウンド準備処理の検証データ生成処理では、初期設計処理の検証データ生成処理と若干異なる。更新サーバ２００ｂは、更新処理で生成した新暗復号鍵を用いて、任意のデータを暗号化する。そして、平文のデータおよび暗号化データを対応付けたデータに対して、対応関係証明書を生成する。なお、検証データの構成は、図８９に示した検証データ１５００と同様である。
【０２７４】
更新サーバ２００ｂは、生成した検証データを各更新モジュールへ送信する（ステップＳ８０９）。各更新モジュールは、検証データを受信して、記憶する（ステップＳ８１０）。
（５）検証データ更新処理の動作
実施の形態９では、更新サーバ２００ｂが任意のデータから生成した検証データを用いて、保護制御モジュール１２０ｃの検知処理を行う。
【０２７５】
そこで、検知処理を繰り返し行った場合、保護制御モジュール１２０ｃが復号処理の入出力データを記憶し、それを、更新モジュールへ送信するような不正を行う可能性もある。そうすると、各更新モジュールは、保護制御モジュール１２０ｃの検知処理を正しく行うことができない。
そこで、実施の形態９では、検証データを更新することにより、検証に使用する暗号化データの種類が増やし、より安全性の高いシステムを構築することができる。なお、検証データ更新処理は、定期的に行ってもよいし、不定期に行うとしてもよい。
【０２７６】
図９６は、検証データ更新処理の動作を示すシーケンス図である。ここでは、具体例として、更新モジュール１４１ｃについて説明するが、更新モジュール１４２ｃおよび１４３ｃについても同様である。
更新モジュール１４１ｃは、検証データを更新するため、検証データの送付依頼を更新サーバ２００ｂへ送信する（ステップＳ８３１）。
【０２７７】
更新サーバ２００ｂは、検証データ生成処理を行う（ステップＳ８３２）。
検証データ更新処理の検証基データ生成処理は、次ラウンド準備処理の検証データ生成処理と同様である。更新サーバ２００ｂは、生成した検証データを更新モジュール１４１ｃへ送信する（ステップＳ８３３）。
更新モジュール１４１ｃは、検証データを受信し、記憶する（ステップＳ８３４）。
４．実施の形態９の効果
実施の形態９では、更新モジュールが、検証データの中から任意に、検証に用いる暗号化データを選択する。そのため、保護制御モジュール１２０ｃでは、不正動作を行うことが困難となる。これにより、システムの安全性を高めることができる。
＜実施の形態１０＞
最後に、本発明の実施の形態１０について説明する。ここでは、実施の形態５と同じ符号を用いて説明する。
１．概要
実施の形態１０では、実施の形態６と同様、保護制御モジュール１２０ｃによるアプリの復号処理を複数の復号部分処理に分割して検知処理を行う。実施の形態１０は、さらに、復号部分処理が実行された順序についても検証することが特徴である。
２．構成
実施の形態１０では、復号部分処理の順番を示す順序情報を用いる。順序情報は、復号部分処理の順番と、部分処理が最後の処理でなければ次の順番の復号部分処理の検証する更新モジュールを示す情報である。
【０２７８】
例えば、更新モジュール１４１ｃ、１４２ｃ，１４３ｃの識別情報をそれぞれＩＤ１、ＩＤ２、ＩＤ３とし、更新モジュール１４１ｃ、１４２ｃ、１４３ｃの順番で復号部分処理を行う場合、順序情報を（ＩＤ１、ＩＤ２，ＩＤ３）と記載してもよい。
３．動作
（検知処理の動作）
図９７から図９９は、実施の形態１０に係る検知処理の動作を示すシーケンス図である。
【０２７９】
ステップＳ９０１〜ステップＳ９０２は、実施の形態６（図８０）の処理と同様である。ステップＳ９０３から説明する。
保護制御モジュール１２０ｃは、一つの更新モジュールを選択し（ここでは、更新モジュール１４１ｃとする。）、選択した更新モジュール１４１ｃへ、アプリ１１０の識別情報と中間値１と復号部分処理１の検証データと順序情報とを送信する（ステップＳ９０３）。
【０２８０】
保護制御モジュール１２０ｃは、先に選択した更新モジュールとは異なる更新モジュールを選択し（ここでは、更新モジュール１４２ｃとする。）、選択した更新モジュール１４２ｃへ、アプリ１１０の識別情報と中間値２と復号部分処理２の検証データと順序情報とを送信する（ステップＳ９０４）。
さらに、保護制御モジュール１２０ｃは、先に選択した２つの更新モジュールとは異なる更新モジュールを選択し（ここでは、更新モジュール１４３ｃとする。）、選択した更新モジュール１４３ｃへ、アプリ１１０の識別情報と復号したアプリのデータと復号部分処理３の検証データと順序情報とを送信する（ステップＳ９０５）。
【０２８１】
更新モジュール１４１ｃは、受信した検証データを用いて、復号部分処理１の入出力対応が正しいか否かを検証する（ステップＳ９０６）。復号部分処理の入出力対応が正しくないと判定した場合、保護制御モジュール１２０ｃが改ざんされていると判定し（ステップＳ９０７でＹ）、判断部２１０ｂへ通知する（ステップＳ９０８）。
保護制御モジュール１２０ｃが改ざんされていないと判定する場合（ステップＳ９０７でＮ）、更新モジュール１４１ｃは、判断部２１０ｂへの通知を行わず、順序情報に含まれる更新モジュール識別情報にしたがい、次の更新モジュール１４２ｃへ、中間値１を送信する（ステップＳ９０９）。
【０２８２】
更新モジュール１４２ｃは、更新モジュール１４１ｃから受信した中間値１が、保護制御モジュール１２０ｃから受信した検証データに含まれる中間値１と一致するか否かを検証する（ステップＳ９１０）。
次に、更新モジュール１４２ｃは、保護制御モジュール１２０ｃから受信した中間値２と検証データを用いて、復号部分処理２の入出力対応が正しいか否かを検証する（ステップＳ９１１）。ステップＳ９０１で中間値１が一致しない場合、または、ステップＳ９１１で復号部分処理２の入出力が正しくない場合、更新モジュール１４２ｃは、保護制御モジュール１２０ｃが改ざんされていると判定する。
【０２８３】
保護制御モジュール１２０ｃが改ざんされている場合（ステップＳ９１２でＹ）、更新モジュール１４２ｃは、判断部２１０ｂへ通知する（ステップＳ９１３）。保護制御モジュール１２０ｃが改ざんされていない場合（ステップＳ９１２でＮ）、更新モジュール１４２ｃは、判断部２１０ｂへの通知を行わず、順序情報に含まれる更新モジュール識別情報にしたがい、次の更新モジュール１４３ｃへ、中間値２を送信する（ステップＳ９１４）。
【０２８４】
更新モジュール１４３ｃは、更新モジュール１４２ｃから受信した中間値２が、保護制御モジュール１２０ｃから受信した検証データに含まれる中間値２と一致するか否かを検証する（ステップＳ９１５）。
次に、更新モジュール１４２ｃは、保護制御モジュール１２０ｃから受信した中間値２と検証データを用いて、復号部分処理３の入出力対応が正しいか否かを検証する（ステップＳ９１６）。ステップＳ９１５で中間値２が一致しない場合、または、ステップＳ９１６で復号部分処理３の入出力が正しくない場合、更新モジュール１４３ｃは、保護制御モジュール１２０ｃが改ざんされていると判定する。
【０２８５】
保護制御モジュール１２０ｃが改ざんされている場合（ステップＳ９１７でＹ）、更新モジュール１４３ｃは、判断部２１０ｂへ通知する（ステップＳ９１８）。保護制御モジュール１２０ｃが改ざんされていない場合（ステップＳ９１７でＮ）、判断部２１０ｂへの通知を行わず、検知処理を終了する。
３．実施の形態１０の効果
実施の形態１０では、順序情報を用いて、復号部分処理が正しい順序で行われているかを検証することができる。
【０２８６】
また、各更新モジュールは、復号部分処理の出力データと検証データに含まれるデータとが一致するか否かを検証することで、保護制御モジュール１２０ｃまたは他の更新モジュールが不正動作を行っていることを知ることができる。
＜その他の変形例＞
なお、本発明を上記の実施の形態に基づき説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記実施の形態では、検知モジュール群、および、更新モジュール群による相互監視処理改ざんされた検知モジュールまたは更新モジュールがあると判定した場合には、判断部は、直ちに検知処理の停止を検知モジュールへ通知するとした。
【０２８７】
しかし、本発明はこれに限定するものではなく、改ざんされた検知モジュールまたは更新モジュールを無効化してもよいし、改ざんされた検知モジュールまたは更新モジュールを、それ以降の保護制御モジュール検知処理では用いないようにしてもよい。
（２）上記実施の形態の検知処理では、アプリ実行時に保護制御モジュールの復号処理を検証している。しかし、本発明はこれに限定するものではなく、アプリを暗号化する処理で検証するとしてもよい。この場合、図１６の検知処理のシーケンス図におけるステップＳ４１およびステップＳ４２に替えて、暗号化する前のアプリをアプリ分割部で分割し、分割したアプリを復号ロード部で暗号化する。ステップＳ４３以降の処理は同様である。これにより、保護制御モジュールが正しく暗号化処理を行い、アプリを保護していることを確認することができる。
【０２８８】
また、アプリの追加時に行うアプリの暗号化処理や、アプリの再暗号化時に行う暗号化処理で保護制御モジュールを検証するとしてもよい。
（３）上記実施の形態の検知処理では、検知モジュールが他の検知モジュールへ分割情報を送信し、すべての分割データが検証されているか否かを確認している。しかし、本発明はこれに限定するのではなく、検知モジュールは予めすべての分割情報を保持していてもよい。
【０２８９】
検知モジュールは、分割情報を選択し、検知モジュールから保護制御モジュールへ選択した分割情報に対応する分割データを送信するように依頼するとしてもよい。
また、各検知モジュールはそれぞれがどの分割情報を選択したのかを共有し、他の検知モジュールが選択した分割情報に対応する分割データが保護制御モジュールから送信されているか否かを確認するとしてもよい。
（４）上記実施の形態の検知処理では、アプリが実行される毎に、保護制御モジュールから検知モジュールへ分割データおよび対応する検証データを送信し、検知モジュールが検証していた。しかし、本発明はこれに限定されない。保護制御モジュールは、ステップＳ４２の後、分割データを蓄積しておき、検知モジュールから依頼を受けた時点で、蓄積された分割データおよび対応する検証データを送信するとしてもよい。
【０２９０】
この構成により、検知モジュールによる検知処理の実行回数へ減らすことができる。
また、検知処理の前に検知モジュール群において相互監視処理を行うことで、正当な検知モジュールと判断された検知モジュールを用いて、保護制御モジュールの検知処理を実行することができる。
また、保護制御モジュール内で分割データを蓄積するとき、保護制御モジュールは、各検知モジュールと鍵を共有し、各検知モジュールの共有鍵を用いて分割データを暗号化して保持しておくとしてもよい。また、保護制御モジュールの認証部が保持する公開鍵を用いて、分割データを暗号化するとしてもよい。
【０２９１】
また、一つの分割データに対し、複数の検知モジュールの鍵を用いて暗号化するとしてもよい。また、保護制御モジュールが、どの検知モジュールの鍵を用いるか選択してもよいし、管理装置が選択し、保護制御モジュールに指示するとしてもよい。さらに、管理装置が選択したことを証明するための証明書を付加してもよい。
（５）上記実施の形態の解析・判断処理では、保護制御モジュールの改ざんの有無を検知モジュールによる検出結果を用いて判断した。
【０２９２】
しかし、本発明はこれに限定するものではなく。検知モジュール群が相互監視処理を実行し、正当な検知モジュールの検出結果のみを用いて、保護制御モジュール改ざんの有無を判断するとしてもよい。また、相互監視処理で不正な検知モジュールが検出された場合、正当な検知モジュールのみに検知処理を再度実行させるとしてもよい。
（６）上記実施の形態では、保護制御モジュールと検知モジュールとは、同一機器内にインストールされているとしたが、それぞれが別の機器にインストールされてもよい。その場合、例えば、保護制御モジュールは、証明書を発行する認証局の装置にインストールされ、検知モジュールは、監査装置にインストールされてもよい。監査装置が、証明書の発行が正しいか否かを検知するシステムで用いてもよい。
（７）上記実施の形態では、具体例として、復号した平文アプリのデータを３つに分割し、それぞれの分割データの１つを検知モジュールが検証するとした。
【０２９３】
しかし、本発明はこれに限定するものではなく、アプリのデータをｋ個に分割し、各検知モジュールにｋ−１個以下の分割データを送信し、検証させるとしてもよい。
ｋ個の分割データを取得しない限り、アプリのデータを復元することはできないので、一つの検知モジュールから分割データが漏洩しても、アプリのデータが漏洩することはない。
（８）上記実施の形態では、復号した平文アプリのデータを３つに分割し、３つの分割データからアプリのデータが復元できるようにしている。
【０２９４】
しかし、本発明はこれに限定するものではなく、アプリのデータをｍ個に分割し、ｍ個のうちｋ個の分割データからアプリのデータが復元できるようにするとしてもよい。
このとき、保護制御モジュールは、分割データを送信する検知モジュールを選択し、選択した各検知モジュールにｋ−１個以下の分割データと対応する検証データとを送信する。検知モジュールは受信したｋ−１個以下の分割データと検証データを用いて検証する。
【０２９５】
具体的に例を用いて説明する。分割方法として、（ｋ、ｍ）しきい値法を用いて、アプリのデータをｍ個に分割し、ｋ個で復元できるようにしてもよい。（ｋ、ｍ）しきい値法は非特許文献１の２１４ページから２１６ページに記載されている。
（ｋ、ｍ）しきい値法では、ｙ軸切片がアプリのデータとなるｋ−１次の多項式ｆ（ｘ）を用いる。多項式ｆ（ｘ）で、ｘ＝１，・・・，ｍとしたときのｍ個の情報が分割データとなる。ｍ個の分割データのうち、ｋ個の分割データから多項式ｆ（ｘ）が一意に定まるため、ｙ軸切片のアプリのデータも一意に定まる。このときの判定情報は、ｋとなる。また、ＲＳＡ暗号における公開鍵ｎ（＝ｐｑ）を、１１８９（＝２９×４１）とした場合、判定情報は、１１８９となる。このとき、アプリのデータを７，１１，１３，１７，１９で法を取った５つに分割した場合、１１８９を超えるように、例えば（７，１１，１７）や（７，１３，１９）のように、中国人剰余定理を用いるとアプリのデータが復元できる。
【０２９６】
アプリのデータを一定サイズ（たとえば、５バイト）ごとに分割する場合には、図１００に示すように分割してもよい。分割データ１は、０バイト目から５バイト分、分割データ２は、５バイト目から５バイト分、分割データ３は、１０バイト目から５バイト分、分割データ４は、３バイト目から５バイト分、分割データ５は、８バイト目から５バイト分となる。
【０２９７】
このときの判定情報の構成は、（（１，２，３）、（１，３，４，５））となる。
保護制御モジュールは判定情報から、どの分割データを検知モジュールに送信するかを決定する。例えば、保護制御モジュールが判定情報（１，３，４，５）を用いて検証させると決定した場合、アプリ分割部で分割された分割データのうち、分割データ１，３，４，５を選択し、それぞれの分割データと対応する検証データとを、いずれかの検知モジュールへ送信する。検知モジュールは、受信した分割データと検証データとを用いて検証を行う。さらに、検知モジュールは、判定情報に基づいて、分割データ１，２，３または、分割データ１，３，４，５が検証されたことを、他の検知モジュールの分割情報を用いて確認する。
（９）上記実施の形態の検知処理において、どの検知モジュールにどの分割データを送信するか、管理装置が予め決定して制御情報として生成し、管理装置から保護制御モジュールへ、生成した制御情報を送信してもよい。
【０２９８】
また、検知モジュールが、所定の決定アルゴリズムを用いて決定してもよい。決定アルゴリズムは、例えば、乱数を発生させて、その乱数に基づいて検知処理を行う検知モジュールを決定する。このとき、すべての検知モジュールで同一の決定アルゴリズムを共有し、同じタイミングで同じ値の乱数を生成するものとする。決定した検知モジュールは、保護制御モジュールに、分割データおよび検証データの送信を依頼する。
（１０）上記実施の形態では、保護制御モジュールのアプリ復号処理またはアプリ暗号化処理ではなく、署名生成処理、署名検証処理、著作権保護の機能を実現する処理（コンテンツの権利更新などの権利管理）、ネットバンキングを実現する処理（電子マネーをはじめとする電子的価値の管理）などを検証するとしてもよい。
【０２９９】
その場合、管理装置は、あらかじめこれらの処理に対する検証基データを生成し、保護制御モジュールに送信しておく。
（１１）上記実施の形態では、検証データに全てのアプリに対する復号処理証明書を含めていたが、これに限定するものではなく、検証するアプリに対する復号処理証明書のみを検証データに含めるとしてもよい。
（１２）上記実施の形態２では、相互監視処理により改ざん検出されなかった場合、分割データが消去されたとみなした。しかし、分割データの消去を確認する方法はこれに限定されない。例えば、検証データ保持部にデータが記憶されているか否かを確認することで、分割データが消去されたことを確認してもよい。
【０３００】
また、検知モジュールは、分割データを消去するプログラムが検知モジュール内で動作したときに立ち上がるフラグを保持しておき、当該フラグを確認することで、分割データが消去されたことを確認してもよい。
（１３）上記実施の形態の検証基データ更新処理では、検証基データを生成する際に、追加アプリを保持している管理装置から保護制御モジュールへ、追加アプリを送信し、保護制御モジュールにおいて、暗号化アプリを生成してもよい。そして、保護制御モジュールは、暗号化アプリを管理装置に返送して、管理装置が検証基データを生成してもよい。
【０３０１】
また、機器は、記録媒体から追加アプリをインストールして、インストールしたアプリを暗復号鍵で暗号化し、暗号化アプリを管理装置に送信するとしてもよい。
（１４）上記実施の形態では、アプリを機器に追加するときに、検証基データの更新処理行うとしているが、本発明はこれに限定するものではなく、定期的、または、不定期に検証基データを更新するとしてもよい。
【０３０２】
例えば、アプリをダウンロードするサーバにアプリが追加されたときに、その追加アプリが機器にインストールされるのに先立って検証基データ更新処理を行うとしてもよい。これにより、追加アプリを機器にインストールするときには、機器を管理装置に接続する必要がなくなる。
（１５）上記実施の形態では、検証基データの更新処理の動作として、アプリを機器に追加するときに行うとしているが、これに限定するものではなく、予め機器に追加される取りうるアプリのデータの検証基データを生成しておくとしてもよい。
（１６）上記実施の形態における検証基データの更新処理のなかで、管理装置が、保護制御モジュールを認証してもよい。認証方法としては、保護制御モジュールの復号処理を検証してもよいし、チャレンジ・レスポンスを用いてもよい。
（１７）上記実施の形態にプログラムの難読化技術を組み合わせて、復号処理や復号部分処理に難読化を施してもよい。これにより、仮に検知モジュールが不正動作を行ったとしても、保護制御モジュールの情報がいっそう漏洩しにくくなる。
（１８）上記実施の形態の初期設計処理では、保護制御モジュールを機器にインストールした後に、管理装置で検証基データを生成し、保護制御モジュールへ送信している。
【０３０３】
しかし、本発明はこれに限定するものではなく、保護制御モジュールを機器にインストールする際、保護制御モジュールの検証基データ保持部に予め検証基データが埋め込まれた状態でインストールしてもよい。
また、更新処理のなかで、更新後の新たな保護制御モジュールを機器に送信するときも、同様に、新たな保護制御モジュールの検証基データ保持部に予め検証基データが埋め込まれた状態で送信してもよい。
（１９）上記実施の形態の検知処理では、アプリの実行時に、保護制御モジュールから検知モジュールへ、検証データとアプリの識別情報と復号したアプリのデータとを送信するとしているが、本発明はこれに限定するものではない。
【０３０４】
例えば、ユーザがアプリを実行する際の実行コマンドを管理する管理モジュールを機器にインストールしておき、管理モジュールが実行コマンドを検知したときに、管理モジュールから検知モジュールへ、アプリが実行される旨を通知し、通知を受信した検知モジュールは、保護制御モジュールへ検証データと復号したアプリのデータとを送信するように依頼してもよい。
【０３０５】
また、検知モジュール側でアプリの実行を監視し、アプリ実行時に保護制御モジュールへ検証データと復号したアプリのデータとを送信するように依頼してもよい。
（２０）上記実施の形態の検知処理では、保護制御モジュールから検知モジュールへ、アプリの識別情報、分割データ、および検証データが送信されなかった場合、検知モジュールは、保護制御モジュールが改ざんされていると判定してもよい。
（２１）上記実施の形態では、保護制御モジュールは、アプリのデータを復元できる最小の分割データのうち、１ビット以上の情報量を削減した分割データを被検証データとして検知モジュールへ送信してもよい。
【０３０６】
このとき、保護制御モジュールは、被検証データを一つの検知モジュールに送信してもよい。また、保護制御モジュールは、すべての検知モジュールに送信した被検証データを用いるとアプリのデータが復元できるように、各検知モジュールに被検証データを送信するとしてもよい。
（２２）上記実施の形態では、検知モジュールは、保護制御モジュールを検証する機能のみをもつプログラムであってもよい。
（２３）上記実施の形態では、保護制御モジュールを更新するとしたが、本発明は、保護制御モジュール以外のモジュールを更新するとしてもよい。
【０３０７】
ここでは、検知モジュール１３３を更新する場合を例に挙げ、検知モジュールの更新処理を説明する。
更新用ソフトウェア配布部は、更新用の新たな更新モジュールを複数の鍵を用いて多重に暗号化し、検知モジュール群に含まれる他の検知モジュールへ送信する。更新用の新たな検知モジュールを受信した検知モジュールは、検知モジュール１３３を更新する。
（２４）上記実施の形態における更新モジュールは、監視処理に必要な構成要素（制御部および検証部のみで構成してもよいし、更新処理に必要な構成要素（制御部および更新部）のみで構成してもよいし、無効化処理に必要な構成要素（制御部３０３および更新部３０４）のみで構成してもよい。
（２５）上記実施の形態では、更新モジュールが他の更新モジュールや保護制御モジュールの改ざん検出を行う際に、モジュール全体の改ざん検出を行うのではなく、モジュール内の一部、例えば、特定の機能や関数、鍵等の改ざん検出を行ってもよい。
【０３０８】
また、改ざん検出対象のデータを、一定サイズに分割した分割データ毎に改ざん検出を行ってもよいし、機能や関数単位で分割した分割データ毎に改ざん検出を行ってもよい。さらに、改ざん検出対象の分割データを、データの先頭から順にチェックしてよいし、ランダムな順序でチェックしてもよい。
（２６）上記実施の形態では、更新モジュールおよび保護制御モジュールを、耐タンパ化された領域に格納し、攻撃者による攻撃から保護された領域で動作するとしてもよい。
【０３０９】
監視処理に必要な構成要素のみで構成される更新モジュールが、耐タンパ化された領域に格納されている場合、他のモジュールは、当該更新モジュールから受け付けた通知を無条件に受け入れて、更新処理や無効化処理を実施してもよい。または、当該更新モジュールから受け付けた通知を、他のモジュールからの通知よりも重要度の高い通知として扱い、更新処理や無効化処理の判断を行ってもよい。
【０３１０】
また、保護制御モジュールを保護モード（耐タンパ化された領域）で実行し、更新モジュールを通常モード（耐タンパ化されていない領域）で実行してもよい。
（２７）上記実施の形態では、モジュール無効化部は、更新サーバ内に存在し、アクセス制御モジュールは、機器内に存在していた。しかし、本発明はこれに限定されず、モジュール無効化部およびアクセス制御モジュールは、いずれも機器内に存在してもよいし、いずれも更新サーバ内に存在してもよい。機器内に存在する場合には、耐タンパ化された領域に格納されてもよい。
（２８）上記実施の形態では、機器の初期設計処理を、工場出荷後に行ってもよい。また、機器の初期化設計処理は１度だけでなく、２度以上行ってもよい。
（２９）上記実施の形態では、検証用証明書、認証鍵証明書、および対応関係証明書は、いずれも更新用ソフトウェア配布部が保持する署名秘密鍵を用いて生成された。しかし、本発明はこれに限定されず、それぞれの証明書は、それぞれ別の鍵を用いて生成されてもよい。また、それぞれの証明書は、更新用ソフトウェア配布部以外の証明書発行装置により発行された証明書でもよい。
（３０）上記実施の形態における初期設計処理や次ラウンド準備処理では、更新モジュールが分散情報を保持する構成であった。しかし、分散情報は、アプリが保持する構成でもよいし、更新モジュールおよびアプリが保持する構成でもよい。
（３１）上記実施の形態の検知処理では、更新モジュールが保護制御モジュールの改ざんを検出した場合、判断部および他のすべての更新モジュールへ、その旨を通知するとした。しかし、本発明はこれに限定されず、判断部のみに通知してもよいし、と他の更新モジュールのうち、どれか１つの更新モジュールにのみ通知してもよい。
【０３１１】
また、上記実施の形態では、更新モジュールが、保護制御モジュールの改ざんを検出しなかった場合、判断部へ通知を行わないとしたが、改ざんを検出しなかった旨を判断部へ通知してもよい。
（３２）上記実施の形態の検知処理において、各更新モジュールが、他の更新モジュールで検出結果を共有するとしてもよい。また、検出結果を共有しない更新モジュールがあった場合に、当該更新モジュールを不正な更新モジュールと判断して、無効化するとしてもよい。
（３３）上記実施の形態では、解析・判断処理の動作として、改ざん情報に基づいて保護制御モジュール１２０を更新するかどうか判定するとしたが、これに限定するものではなく、改ざんされていると通知してきた更新モジュールの数によって更新するかどうかを判定してもよい。また、解析・判断時の動作として、保護制御モジュール１２０を更新するか否か、及び保護制御モジュール１２０を無効化するか否かを判断したが、これに限定するものではなく、機器１００を停止するか否かを判断するとしてもよい。
（３４）上記実施の形態における相互認証処理では、更新モジュールが、更新用ソフトウェア配布部を認証し、その後、更新用ソフトウェア配布部がそれぞれの更新モジュールを認証した。しかし、認証の順序は逆でもよい。更新用ソフトウェア配布部が、それぞれの更新モジュール認証し、その後、更新モジュールが、更新用ソフトウェア配布部を認証してもよい。
【０３１２】
また、相互認証処理で用いるチャレンジデータは、すべての更新モジュールで同じ値としてもよいし、更新モジュールを複数のグルーブに分け、それぞれのグループで異なる値にしてもよい。
（３５）上記実施の形態における相互認証処理では、各更新モジュールは、それぞれ個別に更新用ソフトウェア配布部を認証する構成を有していた。
【０３１３】
しかし、本発明はこれに限定されず、各更新モジュールが署名検証した結果を、他の更新モジュールへ通知し、更新モジュール間で検証結果を共有するとしてもよい。自更新モジュールの認証結果と他の更新モジュールから受信した認証結果とを用いて、たとえば、過半数等の更新モジュールが認証に成功した場合には更新用ソフトウェア配布部が正当であると判定し、そうでない場合には、正当ではないと判定してもよい。
（３６）上記実施の形態における相互認証処理では、正当な更新モジュールの数が、回復処理に必要な数以上あるか否かに応じて、回復処理を行うか判断した。
【０３１４】
これに替えて、不正な更新モジュールの数が、予め設定されている許容数未満か否かに応じて、回復処理を行うか判断してもよい。
また、正当な更新モジュールの数が、回復処理に必要な数に満たないと判定した場合には、機器を停止する替わりに、不正な更新モジュールを無効化してもよい。
（３７）上記実施の形態における相互認証処理では、各更新モジュールは、レスポンスデータと共に、認証公開鍵および認証鍵証明書を更新用ソフトウェア配布部へ送信した。しかし、レスポンスデータと、認証公開鍵および認証鍵証明書とは、それぞれ別のタイミングで送信してもよい。また、認証公開鍵および認証鍵証明書は、更新用ソフトウェア配布部から要求があった場合に、送信するとしてもよい。
【０３１５】
更新用ソフトウェア配布部は、すべての更新モジュールから認証公開鍵および認証鍵証明書を受信してもよいし、回復処理に必要な数の更新モジュールから認証公開鍵および認証鍵証明書を受信してもよい。
（３８）上記実施の形態では、１回の復号処理中に、２回の監視処理を実行した（監視３−１、３−２、５−１、５−２）。しかし、監視処理は２回に限定されず、復号処理にかかる時間に応じて、何回行ってもよい。
【０３１６】
また、復号処理中に監視処理を行う場合に限定されず、鍵や更新用保護制御モジュールの受信処理時や検知処理時、相互認証処理時に行ってもよい。
また、監視処理は、一定時間間隔で定期的に実施してもよいし、ランダムな時間間隔で実施してもよいし、更新サーバから指定された時間間隔で実施してもよい。
また、各更新モジュールは、監視処理を実行するタイミングを示す同期情報を外部のサーバから取得し、取得した同期情報にしたがって監視処理を実行するとしてもよい。これにより、各更新モジュールは、他の更新モジュールと同じタイミングで監視処理を実行することができるので、不正な更新モジュールの検出精度を向上させることができる。
（３９）上記実施の形態６では、復号処理を複数の復号部分処理に分割しているが、本発明は、これに限定するものではなく、アプリを多重に暗号化し、多重に暗号化されたアプリを復号するとしてもよい。
【０３１７】
アプリを三重に暗号化した場合を例に説明する。復号部分処理１は、三重暗号化アプリを二重暗号化アプリに復号する処理である。復号部分処理２は、二重暗号化アプリを暗号化アプリに復号する処理である。復号部分処理３は、暗号化アプリを平文のアプリに復号する処理である。
（４０）上記実施の形態６における検知処理では、各復号部分処理の検証を１つの更新モジュールが行っているが、これに限定されず、各復号部分処理の検証を複数の更新モジュールが行ってもよい。
（４１）上記実施の形態５および実施の形態６における検証基データは、各アプリの対応関係証明書を含む構成であった。しかし、検証基データの構成は、これに限定するものではない。例えば、実施の形態５および実施の形態６で用いる検証基データは、図１０１に示す構成であってもよい。
【０３１８】
検証基データ１６００は、各アプリについてのアプリの識別情報と当該識別情報に対応する暗号化アプリのデータ、および、証明書から構成される。
複数の暗号化アプリのデータは、更新用ソフトウェア実行部が保護制御モジュールを実行して各アプリを暗号化することにより生成される。
証明書は、各暗号化アプリのデータを入力データとし、保護制御モジュールが正常動作した際に出力される各出力データを結合し、結合したデータに更新サーバの署名秘密鍵を用いて生成された署名である。
（４２）上記実施の形態８における検知処理では、保護制御モジュールを一つのプログラムデータとみなし、所定の一部分のデータについて改ざん検出を行うとしてもよい。そのとき、各更新モジュールは、保護制御モジュールの異なる一部分のデータについて改ざん検出を行うとしてもよい。
【０３１９】
また、保護制御モジュールのデータを分割し、分割されたすべてのデータが、必ず一つ以上の更新モジュールによって、改ざん検出されるようにしてもよい。
また、改ざん検出後に、各更新モジュールでは、改ざん検出対象のデータを消去し、各更新モジュールが相互に改ざん検出を行うことで、改ざん検出対象のデータが消去されていることを確認してもよい。
（４３）上記実施の形態４〜１０では、更新モジュールは、保護制御モジュールを検証する機能のみをもつ、検知モジュールであってもよい。
（４４）上記実施の形態では、復号処理を３つの復号部分処理に分割した。しかし、本発明はこれに限定するものではなく、復号処理を２つに分割してもよいし、４つ以上に分割してもよい。また、復号処理を分割する単位はどのようなものであってもよい。復号処理に含まれる関数ごとに分割してもよいし、演算命令ごとに分割してもよい。関数や命令のブロック毎に分割してもよい。
（４５）上記実施の形態６における検知処理では、更新モジュールが検証データを保持する替わりに、保護制御モジュールが検証データを保持してもよい。保護制御モジュールは、更新モジュールから送信される暗号化データを復号し、復号したデータとともに保持している前記検証データを、更新モジュールに送信するとしてもよい。
（４６）上記実施の形態をそれぞれ組み合わせることにより、保護制御モジュールの検知処理を、（ａ）アプリの復号処理についての検証と、（ｂ）更新サーバが生成した任意のデータを用いた検証とを組み合わせてもよい。
（４７）上記の各モジュールは、具体的には、それぞれ個別のコンピュータプログラムであってもよいし、オペレーティングシステムに組み込まれるモジュールであってもよいし、オペレーティングシステムから呼び出されるドライバであってもよいし、アプリケーションプログラムであってもよい。
（４８）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
（４９）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０３２０】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０３２１】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
（５０）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
（５１）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよい。
【０３２２】
また、本発明は、前記コンピュータプログラムをコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。
また、本発明は、前記コンピュータプログラムを、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０３２３】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムを前記記録媒体に記録して移送することにより、または前記プログラムを前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（５２）上記の実施形態および上記の変形例をそれぞれ組み合わせた場合も、本発明に含まれる。
＜まとめ＞
上述したように、本発明は、所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、複数の検知モジュールと、を含む情報処理装置であって、前記保護制御モジュールは、前記アプリケーションを復号する復号手段と、前記復号手段の出力データである被検証データを送信する送信手段を備え、前記複数の検知モジュールのうちの少なくとも２つの検知モジュールの各々は、前記保護制御モジュールから前記被検証データを受信する受信手段と、検証データを保持する検証データ保持手段と、前記被検証データと前記検証データに基づいて前記保護制御モジュールを検証する第１の検証手段とを備え、前記検証データは、前記復号手段が正常動作を行った際の入力データと出力データの対応関係を示すデータであり、前記少なくとも２つの検知モジュールは、同一の被検証データに基づいて前記保護制御モジュールを検証することを特徴とする。
【０３２４】
また、本発明は、少なくとも第１のアプリケーションと第２のアプリケーションを含む複数のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、検知モジュールと、を含む情報処理装置であって、前記保護制御モジュールは、検証基データを保持する保持手段と、暗号化した前記第１のアプリケーションと暗号化した前記第２のアプリケーションを復号する復号手段と、検証データを生成する検証データ生成手段と、前記検証データと前記復号手段の出力データである被検証データを送信する送信手段とを備え、前記検知モジュールは、前記保護制御モジュールから前記被検証データと前記検証データを受信する受信手段と、前記被検証データと前記検証データに基づいて前記保護制御モジュールを検証する第１の検証手段とを備え、前記検証基データは、前記第１のアプリケーションと前記第２のアプリケーションの各々を暗号化したデータと、前記第１のアプリケーションと前記第２のアプリケーションの各々を暗号化したデータを入力データとしたときの、前記復号手段が正常動作を行った際の入力データと出力データの対応関係を示す第１の検証値と第２の検証値と、少なくとも前記第１の検証値と前記第２の検証値を含む複数の検証値の全てを結合した結合データから生成した結合データ検証値とを含み、前記検証データは、前記第１のアプリケーションを前記保護制御モジュールが復号する場合は、前記検証基データから前記第１の検証値及び、前記第１のアプリケーション以外の暗号化したアプリケーションのデータを削除したデータで構成され、前記第２のアプリケーションを前記保護制御モジュールが復号する場合は、前記検証基データから前記第２の検証値及び、前記第２のアプリケーション以外の暗号化したアプリケーションのデータを削除したデータで構成されることを特徴とする。
【産業上の利用可能性】
【０３２５】
本発明は、情報処理装置および前記情報処理装置に対してソフトウェアを提供する管理装置または更新サーバを製造および販売する産業において、情報処理装置上で動作する不正なソフトウェアを検知する技術および不正なソフトウェアを安全に更新する技術として利用することができる。
【符号の説明】
【０３２６】
１    不正モジュール検知システム
２    不正モジュール検知システム
１００、１００ｂ    機器
１２０、１２０ａ、１２０ｂ、１２０ｃ    保護制御モジュール
１３０   検知モジュール群
１３０ｂ 更新モジュール群
１３１、１３１ａ、１３２、１３２ａ、１３３、１３３ａ    検知モジュール
１４０    アクセス制御モジュール
１４１、１４１ｃ、１４２、１４２ｃ、１４３、１４３ｃ    更新モジュール
２００    管理装置
２００ｂ    更新サーバ
２１０、２１０ｂ    判断部
２２０、２２０ａ    検証基データ配布部
２３０    通信部
２４０、２４０ｃ    更新ソフトウェア配布部
２５０    モジュール無効化部
３０１    受信部
３０２    送信部
３０３    制御部
３０４    更新部
３０４    復号ロード部
３０５    改ざん検出部
３０６    解析ツール検出部
３０７    暗復号鍵保持部
３０８    検証基データ保持部
３０９    検証データ生成部
３１０    アプリ分割部
３２１    暗復号鍵分散部
３２２    証明書生成部
３２３    暗復号鍵復元部
４０１    受信部
４０２    送信部
４０３    制御部
４０４    検証部
４０５    ＭＡＣ値生成部
４０６    ＭＡＣ値テーブル更新部
４０７    検証データ保持部
４１０    更新部
４１１    分散情報保持部
４１２    認証部
４２０    検証基データ保持部
５０１    受信部
５０２    送信部
５０３    指示生成部
５０４    モジュール特定部
６０１    受信部
６０２    送信部
６０３    制御部
６０４    認証部
６０５    証明書生成部
６０６    署名秘密鍵保持部
６０７    暗号鍵保持部
６０８    データ分割部
６０９    アプリ保持部
６１０    検証基データ生成部
６１１    保護制御モジュール保持部
６２０    暗号鍵生成部
６２１    暗号処理部
６２２    検知モジュール選択部
８０１    受信部
８０２    送信部
８０３    制御部
８０４    更新部
８０５    検証部
８０６    ＭＡＣ値生成部
８０７    ＭＡＣ値テーブル更新部
８０８    分散情報保持部
８１０    検知部
８１１    検証データ保持部
９０１    受信部
９０２    送信部
９０３    制御部
９０４    復号ロード部
９０５    検出部
９０６    解析ツール検出部
９０７    暗復号鍵保持部
９０８    暗復号鍵生成部
９０９    暗復号鍵分散部
９１０    証明書生成部
９１１    暗復号鍵復元部
９１２    検証データ生成部
９１３    検証基データ保持部
１００１    受信部
１００２    送信部
１００３    アクセス情報保持部
１１０１    受信部
１１０２    送信部
１１０３    指示生成部
１１０４    モジュール特定部
１２０１    受信部
１２０２    送信部
１２０３    暗号鍵生成部
１２０４    暗号処理部
１２０５    認証部
１２０６    更新モジュール選択部
１２０７    制御部
１２０８    証明書生成部
１２０９    署名秘密鍵保持部
１２１０    更新用ソフトウェア保持部
１２１１    暗号鍵保持部
１２２０    更新用ソフトウェア実行部
１２２１    アプリ保持部
１２２２    検証基データ生成部
１３０１    受信部
１３０２    送信部
１３０３    アクセス情報取得鍵保持部
１３０４    更新モジュール選択部
【図１】
0005411282.tif 000002
【図２】
0005411282.tif 000003
【図３】
0005411282.tif 000004
【図４】
0005411282.tif 000005
【図５】
0005411282.tif 000006
【図６】
0005411282.tif 000007
【図７】
0005411282.tif 000008
【図８】
0005411282.tif 000009
【図９】
0005411282.tif 000010
【図１０】
0005411282.tif 000011
【図１１】
0005411282.tif 000012
【図１２】
0005411282.tif 000013
【図１３】
0005411282.tif 000014
【図１４】
0005411282.tif 000015
【図１５】
0005411282.tif 000016
【図１６】
0005411282.tif 000017
【図１７】
0005411282.tif 000018
【図１８】
0005411282.tif 000019
【図１９】
0005411282.tif 000020
【図２０】
0005411282.tif 000021
【図２１】
0005411282.tif 000022
【図２２】
0005411282.tif 000023
【図２３】
0005411282.tif 000024
【図２４】
0005411282.tif 000025
【図２５】
0005411282.tif 000026
【図２６】
0005411282.tif 000027
【図２７】
0005411282.tif 000028
【図２８】
0005411282.tif 000029
【図２９】
0005411282.tif 000030
【図３０】
0005411282.tif 000031
【図３１】
0005411282.tif 000032
【図３２】
0005411282.tif 000033
【図３３】
0005411282.tif 000034
【図３４】
0005411282.tif 000035
【図３５】
0005411282.tif 000036
【図３６】
0005411282.tif 000037
【図３７】
0005411282.tif 000038
【図３８】
0005411282.tif 000039
【図３９】
0005411282.tif 000040
【図４０】
0005411282.tif 000041
【図４１】
0005411282.tif 000042
【図４２】
0005411282.tif 000043
【図４３】
0005411282.tif 000044
【図４４】
0005411282.tif 000045
【図４５】
0005411282.tif 000046
【図４６】
0005411282.tif 000047
【図４７】
0005411282.tif 000048
【図４８】
0005411282.tif 000049
【図４９】
0005411282.tif 000050
【図５０】
0005411282.tif 000051
【図５１】
0005411282.tif 000052
【図５２】
0005411282.tif 000053
【図５３】
0005411282.tif 000054
【図５４】
0005411282.tif 000055
【図５５】
0005411282.tif 000056
【図５６】
0005411282.tif 000057
【図５７】
0005411282.tif 000058
【図５８】
0005411282.tif 000059
【図５９】
0005411282.tif 000060
【図６０】
0005411282.tif 000061
【図６１】
0005411282.tif 000062
【図６２】
0005411282.tif 000063
【図６３】
0005411282.tif 000064
【図６４】
0005411282.tif 000065
【図６５】
0005411282.tif 000066
【図６６】
0005411282.tif 000067
【図６７】
0005411282.tif 000068
【図６８】
0005411282.tif 000069
【図６９】
0005411282.tif 000070
【図７０】
0005411282.tif 000071
【図７１】
0005411282.tif 000072
【図７２】
0005411282.tif 000073
【図７３】
0005411282.tif 000074
【図７４】
0005411282.tif 000075
【図７５】
0005411282.tif 000076
【図７６】
0005411282.tif 000077
【図７７】
0005411282.tif 000078
【図７８】
0005411282.tif 000079
【図７９】
0005411282.tif 000080
【図８０】
0005411282.tif 000081
【図８１】
0005411282.tif 000082
【図８２】
0005411282.tif 000083
【図８３】
0005411282.tif 000084
【図８４】
0005411282.tif 000085
【図８５】
0005411282.tif 000086
【図８６】
0005411282.tif 000087
【図８７】
0005411282.tif 000088
【図８８】
0005411282.tif 000089
【図８９】
0005411282.tif 000090
【図９０】
0005411282.tif 000091
【図９１】
0005411282.tif 000092
【図９２】
0005411282.tif 000093
【図９３】
0005411282.tif 000094
【図９４】
0005411282.tif 000095
【図９５】
0005411282.tif 000096
【図９６】
0005411282.tif 000097
【図９７】
0005411282.tif 000098
【図９８】
0005411282.tif 000099
【図９９】
0005411282.tif 000100
【図１００】
0005411282.tif 000101
【図１０１】
0005411282.tif 000102