(57)【要約】  管理装置２００ｄは、暗号化アプリケーションプログラムの復号鍵を分解して、複数の分散鍵を生成する分散鍵生成部２５１ｄ及び複数の前記分散鍵を複数の検知モジュールに出力する出力部２５２ｄを備える。各検知モジュールは、前記分散鍵を内部に記憶する。保護制御モジュール１２０ｄは、複数の検知モジュールから前記分散鍵を取得する取得部３８１ｄ、複数の前記分散鍵を統合して、前記復号鍵を復元する復元部３８２ｄ、前記復号鍵を用いて、暗号化アプリケーションプログラムを復号する復号部３８３ｄ及び復号終了後、前記復号鍵を消去する消去部３８４ｄを備える。
2012124270.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールと、管理装置とを含む改ざん監視システムであって、
前記管理装置は、
暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成手段と、
生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力手段とを備え、
各検知モジュールは、前記分散鍵を取得して内部に記憶し、
前記保護制御モジュールは、
複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得手段と、
取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元手段と、
前記復元手段により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号手段と、
前記復号手段による復号が終了した後、前記復号鍵を消去する消去手段とを備える
ことを特徴とする改ざん監視システム。
【請求項２】
前記管理装置は、さらに、
暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理を施し、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換を施して、復号検証値を生成し、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データを生成する検証データ生成手段を含み、
前記出力手段は、さらに、前記検証データを前記保護制御モジュールへ出力し、
前記復号手段は、暗号化された前記アプリケーションプログラムに対して、複数の復号部分処理から構成される復号処理を施し、
前記保護制御モジュールは、さらに、前記復号手段における復号部分処理毎に、当該復号部分処理からの出力データ及び受け取った前記検証データを検知モジュールへ出力する第二出力手段を含み、
前記検知モジュールは、
前記出力データ及び前記検証データを受け取る受信手段と、
受け取った前記出力データ及び前記検証データを用いて、検証を行い、検証に失敗した場合に、その検証結果を出力する検証手段とを含む
ことを特徴とする請求項１に記載の改ざん監視システム。
【請求項３】
前記検証手段は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる前記復号検証値と、生成した前記第二検証値とが一致するか否かを判断することにより、前記検証を行い、一致しない場合に、検証に失敗したとみなして、前記検証結果を出力する
ことを特徴とする請求項２に記載の改ざん監視システム。
【請求項４】
前記保護制御モジュールは、さらに、他の一個以上のアプリケーションプログラムを保護し、
前記管理装置は、さらに、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値を生成し、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書を生成する証明書生成手段を含み、
前記検証データ生成手段は、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データを生成し、
前記出力手段は、前記証明書を含む前記検証データを前記保護制御モジュールへ出力し、
前記第二出力手段は、前記証明書を含む前記検証データを前記検知モジュールへ出力し、
前記受信手段は、前記証明書を含む前記検証データを受け取り、
前記検証手段は、さらに、復号部分処理毎に、受け取った前記検証データに含まれる前記証明書を用いて、検証を行う
ことを特徴とする請求項２に記載の改ざん監視システム。
【請求項５】
前記検証手段は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる他の前記アプリケーションプログラムについての前記復号検証値及び生成した前記第二検証値、並びに、前記証明書を用いて、前記検証を行う
ことを特徴とする請求項４に記載の改ざん監視システム。
【請求項６】
複数の前記復号部分処理は、それぞれ、複数の前記検知モジュールに対応しており、
前記第二出力手段は、各復号部分処理に対応する前記検知モジュールに対して、当該復号部分処理からの前記出力データ及び前記検証データを出力する
ことを特徴とする請求項２に記載の改ざん監視システム。
【請求項７】
各検知モジュールは、さらに、自身に対応する前記復号部分処理を識別する識別情報を、他の検知モジュールに対して送信する送信手段を含み、
各検知モジュールの前記受信手段は、さらに、他の検知モジュールから、当該他の検知モジュールに対応する前記復号部分処理を識別する識別情報を受け取り、
各検知モジュールの前記検証手段は、さらに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報の重複性、並びに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報と、複数の前記復号部分処理をそれぞれ識別する識別情報との網羅性について検証を行う
ことを特徴とする請求項６に記載の改ざん監視システム。
【請求項８】
各検知モジュールの前記検証手段は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報に重複があるか、又は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報が、複数の復号部分処理を識別する全ての識別情報を網羅していない場合に、検証に失敗した旨を示す検証結果を出力する
ことを特徴とする請求項７に記載の改ざん監視システム。
【請求項９】
前記保護制御モジュールには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されており、
各検知モジュールは、前記復号が終了し、前記復号鍵が消去されたのち、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証手段を含む
ことを特徴とする請求項１に記載の改ざん監視システム。
【請求項１０】
前記分散鍵生成手段は、生成された複数の分散鍵の加算により前記復号鍵が得られるように、複数の前記分散鍵を生成し、
前記復元手段は、複数の前記分散鍵の加算により、前記復号鍵を復元する
ことを特徴とする請求項１に記載の改ざん監視システム。
【請求項１１】
前記分散鍵生成手段は、秘密分散法を用いて、前記復号鍵から複数の前記分散鍵を生成し、
前記復元手段は、前記秘密分散法を用いて、複数の前記分散鍵から前記復号鍵を復元する
ことを特徴とする請求項１に記載の改ざん監視システム。
【請求項１２】
前記保護制御モジュールは、さらに、暗号化された前記アプリケーションプログラムを前記検知モジュールに対して出力する第二出力手段を含み、
各検知モジュールは、
前記保護制御モジュールから、暗号化された前記アプリケーションプログラムを取得する第二取得手段と、
記憶している前記分散鍵を用いて、暗号化された前記アプリケーションプログラムを部分復号して、部分復号文を生成する第二復号手段と、
生成した前記部分復号文を前記保護制御モジュールへ出力する第三出力手段とを含み、
前記取得手段は、各検知モジュールから、前記部分復号文を取得し、
前記復号手段は、取得した複数の前記部分復号文を用いて、暗号化された前記アプリケーションプログラムを復号する
ことを特徴とする請求項１に記載の改ざん監視システム。
【請求項１３】
前記アプリケーションプログラムは、ＲＳＡ暗号方式により、暗号化され、
前記第二復号手段は、暗号化された前記アプリケーションプログラムに対して、前記分散鍵の値によるべき乗を施して、前記部分復号文を生成し、
前記復号手段は、複数の前記部分復号文の値を乗ずることより、暗号化された前記アプリケーションプログラムを復号する
ことを特徴とする請求項１２に記載の改ざん監視システム。
【請求項１４】
前記保護制御モジュールは、さらに、全ての前記検知モジュールから、複数の検知モジュールを選択する選択手段を含み、
前記第二出力手段は、前記選択手段により選択された前記検知モジュールに対して、暗号化された前記アプリケーションプログラムを出力する
ことを特徴とする請求項１２に記載の改ざん監視システム。
【請求項１５】
前記保護制御モジュールには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されており、
各検知モジュールは、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証手段を含む
ことを特徴とする請求項１２に記載の改ざん監視システム。
【請求項１６】
複数の前記検知モジュールのうち、一の前記検知モジュールは、無効化されており、
前記分散鍵生成手段は、さらに、無効化された前記検知モジュールに割り当てられた前記分散鍵を分解して、複数の再分散鍵を生成し、
前記出力手段は、さらに、生成した複数の再分散鍵を、それぞれ、無効化されていない複数の前記検知モジュールに出力し、
無効化されていない各検知モジュールは、さらに、前記再分散鍵を取得し、取得した前記再分散鍵を用いて、記憶している前記分散鍵を更新して新たな分散鍵を生成する分散鍵更新手段を含む
ことを特徴とする請求項１に記載の改ざん監視システム。
【請求項１７】
前記分散鍵生成手段は、生成された複数の再分散鍵の加算により前記分散鍵が得られるように、複数の前記再分散鍵を生成し、
前記分散鍵更新手段は、記憶している前記分散鍵に取得した前記再分散鍵を加算することにより、新たな前記分散鍵を生成する
ことを特徴とする請求項１６に記載の改ざん監視システム。
【請求項１８】
複数の前記検知モジュールは、第一及び第二のグループに分類されており、
前記分散鍵生成手段は、さらに、前記復号鍵を分解して、複数の第二分散鍵を生成し、
前記出力手段は、生成した複数の前記分散鍵を、それぞれ、前記第一のグループに属する複数の前記検知モジュールに出力し、さらに、生成した複数の前記第二分散鍵を、それぞれ、前記第二のグループに属する複数の前記検知モジュールに出力し、
前記第一のグループに属する各検知モジュールは、前記分散鍵を取得して内部に記憶し、
前記第二のグループに属する各検知モジュールは、前記第二分散鍵を取得して内部に記憶し、
前記取得手段は、第一又は第二のグループに属する複数の前記検知モジュールからそれぞれ前記分散鍵又は前記第二分散鍵を取得し、
前記復元手段は、取得した複数の前記分散鍵を統合して、又は取得した複数の前記第二分散鍵を統合して、前記復号鍵を復元する
ことを特徴とする請求項１に記載の改ざん監視システム。
【請求項１９】
前記保護制御モジュール及び複数の前記検知モジュールは、それぞれ、コンピュータプログラムであって、
前記アプリケーションプログラム、前記保護制御モジュール及び複数の前記検知モジュールは、情報処理装置に記憶されている
ことを特徴とする請求項１に記載の改ざん監視システム。
【請求項２０】
前記出力手段は、前記情報処理装置の初期設定時に、複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する
ことを特徴とする請求項１９に記載の改ざん監視システム。
【請求項２１】
前記取得手段は、前記情報処理装置において前記アプリケーションプログラムを実行する際に、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する
ことを特徴とする請求項１９に記載の改ざん監視システム。
【請求項２２】
アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置であって、
暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成手段と、
生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力手段と
を備えることを特徴とする管理装置。
【請求項２３】
前記管理装置は、さらに、
暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理を施し、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換を施して、復号検証値を生成し、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データを生成する検証データ生成手段を含み、
前記出力手段は、さらに、前記検証データを前記保護制御モジュールへ出力する
ことを特徴とする請求項２２に記載の管理装置。
【請求項２４】
前記保護制御モジュールは、さらに、他の一個以上のアプリケーションプログラムを保護し、
前記管理装置は、さらに、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値を生成し、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書を生成する証明書生成手段を含み、
前記検証データ生成手段は、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データを生成し、
前記出力手段は、前記証明書を含む前記検証データを前記保護制御モジュールへ出力する
ことを特徴とする請求項２３に記載の管理装置。
【請求項２５】
前記分散鍵生成手段は、生成された複数の分散鍵の加算により前記復号鍵が得られるように、複数の前記分散鍵を生成する
ことを特徴とする請求項２２に記載の管理装置。
【請求項２６】
前記分散鍵生成手段は、秘密分散法を用いて、前記復号鍵から複数の前記分散鍵を生成する
ことを特徴とする請求項２２に記載の管理装置。
【請求項２７】
複数の前記検知モジュールのうち、一の前記検知モジュールは、無効化されており、
前記分散鍵生成手段は、さらに、無効化された前記検知モジュールに割り当てられた前記分散鍵を分解して、複数の再分散鍵を生成し、
前記出力手段は、さらに、生成した複数の再分散鍵を、それぞれ、無効化されていない複数の前記検知モジュールに出力する
ことを特徴とする請求項２２に記載の管理装置。
【請求項２８】
前記分散鍵生成手段は、生成された複数の再分散鍵の加算により前記分散鍵が得られるように、複数の前記再分散鍵を生成する
ことを特徴とする請求項２７に記載の管理装置。
【請求項２９】
複数の前記検知モジュールは、第一及び第二のグループに分類されており、
前記分散鍵生成手段は、さらに、前記復号鍵を分解して、複数の第二分散鍵を生成し、
前記出力手段は、生成した複数の前記分散鍵を、それぞれ、前記第一のグループに属する複数の前記検知モジュールに出力し、さらに、生成した複数の前記第二分散鍵を、それぞれ、前記第二のグループに属する複数の前記検知モジュールに出力する
ことを特徴とする請求項２２に記載の管理装置。
【請求項３０】
前記保護制御モジュール及び複数の前記検知モジュールは、それぞれ、コンピュータプログラムであって、
前記アプリケーションプログラム、前記保護制御モジュール及び複数の前記検知モジュールは、情報処理装置に記憶されており、
前記出力手段は、前記情報処理装置の初期設定時に、複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する
ことを特徴とする請求項２２に記載の管理装置。
【請求項３１】
アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールであって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
各検知モジュールにより、前記分散鍵が内部に記憶され、
前記保護制御モジュールは、
複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得手段と、
取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元手段と、
前記復元手段により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号手段と、
前記復号手段による復号が終了した後、前記復号鍵を消去する消去手段と
を備えることを特徴とする保護制御モジュール。
【請求項３２】
前記管理装置により、さらに、暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理が施され、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換が施されて、復号検証値が生成され、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データが生成され、前記検証データが前記保護制御モジュールへ出力され、
前記復号手段は、暗号化された前記アプリケーションプログラムに対して、複数の復号部分処理から構成される復号処理を施し、
前記保護制御モジュールは、さらに、前記復号手段における復号部分処理毎に、当該復号部分処理からの出力データ及び受け取った前記検証データを検知モジュールへ出力する第二出力手段を含む
ことを特徴とする請求項３１に記載の保護制御モジュール。
【請求項３３】
前記保護制御モジュールは、さらに、他の一個以上のアプリケーションプログラムを保護し、
前記管理装置により、さらに、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値が生成され、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書が生成され、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データが生成され、前記証明書を含む前記検証データが前記保護制御モジュールへ出力され、
前記第二出力手段は、前記証明書を含む前記検証データを前記検知モジュールへ出力する
ことを特徴とする請求項３２に記載の保護制御モジュール。
【請求項３４】
複数の前記復号部分処理は、それぞれ、複数の前記検知モジュールに対応しており、
前記第二出力手段は、各復号部分処理に対応する前記検知モジュールに対して、当該復号部分処理からの前記出力データ及び前記検証データを出力する
ことを特徴とする請求項３２に記載の保護制御モジュール。
【請求項３５】
前記管理装置により、生成された複数の分散鍵の加算により前記復号鍵が得られるように、複数の前記分散鍵が生成され、
前記復元手段は、複数の前記分散鍵の加算により、前記復号鍵を復元する
ことを特徴とする請求項３１に記載の保護制御モジュール。
【請求項３６】
前記管理装置により、秘密分散法を用いて、前記復号鍵から複数の前記分散鍵が生成され、
前記復元手段は、前記秘密分散法を用いて、複数の前記分散鍵から前記復号鍵を復元する
ことを特徴とする請求項３１に記載の保護制御モジュール。
【請求項３７】
前記保護制御モジュールは、さらに、暗号化された前記アプリケーションプログラムを前記検知モジュールに対して出力する第二出力手段を含み、
各検知モジュールにより、前記保護制御モジュールから、暗号化された前記アプリケーションプログラムが取得され、記憶している前記分散鍵を用いて、暗号化された前記アプリケーションプログラムを部分復号して、部分復号文が生成され、生成された前記部分復号文が前記保護制御モジュールへ出力され、
前記取得手段は、各検知モジュールから、前記部分復号文を取得し、
前記復号手段は、取得した複数の前記部分復号文を用いて、暗号化された前記アプリケーションプログラムを復号する
ことを特徴とする請求項３１に記載の保護制御モジュール。
【請求項３８】
前記アプリケーションプログラムは、ＲＳＡ暗号方式により、暗号化され、
前記検知モジュールにより、暗号化された前記アプリケーションプログラムに対して、前記分散鍵の値によるべき乗を施して、前記部分復号文が生成され、
前記復号手段は、複数の前記部分復号文の値を乗ずることより、暗号化された前記アプリケーションプログラムを復号する
ことを特徴とする請求項３７に記載の保護制御モジュール。
【請求項３９】
前記保護制御モジュールは、さらに、全ての前記検知モジュールから、複数の検知モジュールを選択する選択手段を含み、
前記第二出力手段は、前記選択手段により選択された前記検知モジュールに対して、暗号化された前記アプリケーションプログラムを出力する
ことを特徴とする請求項３７に記載の保護制御モジュール。
【請求項４０】
複数の前記検知モジュールは、第一及び第二のグループに分類されており、
前記管理装置により、さらに、前記復号鍵を分解して、複数の第二分散鍵が生成され、生成した複数の前記分散鍵が、それぞれ、前記第一のグループに属する複数の前記検知モジュールに出力され、さらに、生成した複数の前記第二分散鍵が、それぞれ、前記第二のグループに属する複数の前記検知モジュールに出力され、
前記第一のグループに属する各検知モジュールにより、前記分散鍵が内部に記憶され、
前記第二のグループに属する各検知モジュールにより、前記第二分散鍵が内部に記憶され、
前記取得手段は、第一又は第二のグループに属する複数の前記検知モジュールからそれぞれ前記分散鍵又は前記第二分散鍵を取得し、
前記復元手段は、取得した複数の前記分散鍵を統合して、又は取得した複数の前記第二分散鍵を統合して、前記復号鍵を復元する
ことを特徴とする請求項３１に記載の保護制御モジュール。
【請求項４１】
前記保護制御モジュール及び複数の前記検知モジュールは、それぞれ、コンピュータプログラムであって、
前記アプリケーションプログラム、前記保護制御モジュール及び複数の前記検知モジュールは、情報処理装置に記憶されている
ことを特徴とする請求項３１に記載の保護制御モジュール。
【請求項４２】
前記取得手段は、前記情報処理装置において前記アプリケーションプログラムを実行する際に、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する
ことを特徴とする請求項４１に記載の保護制御モジュール。
【請求項４３】
アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールであって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
前記検知モジュールは、
前記分散鍵を取得する取得手段と、
取得した前記分散鍵を記憶する記憶手段と、
前記保護制御モジュールに対して、前記分散鍵を出力する出力手段と
を備えることを特徴とする検知モジュール。
【請求項４４】
前記管理装置により、暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理が施され、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換が施されて、復号検証値が生成され、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データが生成され、さらに、前記検証データが前記保護制御モジュールへ出力され、
前記保護制御モジュールにより、暗号化された前記アプリケーションプログラムに対して、複数の復号部分処理から構成される復号処理が施され、さらに、前記復号手段における復号部分処理毎に、当該復号部分処理からの出力データ及び受け取った前記検証データが検知モジュールへ出力され、
前記検知モジュールは、さらに、
前記出力データ及び前記検証データを受け取る受信手段と、
受け取った前記出力データ及び前記検証データを用いて、検証を行い、検証に失敗した場合に、その検証結果を出力する検証手段とを含む
ことを特徴とする請求項４３に記載の検知モジュール。
【請求項４５】
前記検証手段は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる前記復号検証値と、生成した前記第二検証値とが一致するか否かを判断することにより、前記検証を行い、一致しない場合に、検証に失敗したとみなして、前記検証結果を出力する
ことを特徴とする請求項４４に記載の検知モジュール。
【請求項４６】
前記保護制御モジュールにより、さらに、他の一個以上のアプリケーションプログラムが保護され、
前記管理装置により、さらに、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値が生成され、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書が生成され、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データが生成され、前記証明書を含む前記検証データが前記保護制御モジュールへ出力され、
前記保護制御モジュールにより、前記証明書を含む前記検証データが前記検知モジュールへ出力され、
前記受信手段は、前記証明書を含む前記検証データを受け取り、
前記検証手段は、さらに、復号部分処理毎に、受け取った前記検証データに含まれる前記証明書を用いて、検証を行う
ことを特徴とする請求項４４に記載の検知モジュール。
【請求項４７】
前記検証手段は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる他の前記アプリケーションプログラムについての前記復号検証値及び生成した前記第二検証値、並びに、前記証明書を用いて、前記検証を行う
ことを特徴とする請求項４６に記載の検知モジュール。
【請求項４８】
複数の前記復号部分処理は、それぞれ、複数の前記検知モジュールに対応しており、
前記保護制御モジュールにより、各復号部分処理に対応する前記検知モジュールに対して、当該復号部分処理からの前記出力データ及び前記検証データが出力され、
前記検知モジュールは、さらに、自身に対応する前記復号部分処理を識別する識別情報を、他の検知モジュールに対して送信する送信手段を含み、
前記受信手段は、さらに、他の検知モジュールから、当該他の検知モジュールに対応する前記復号部分処理を識別する前記識別情報を受け取り、
前記検証手段は、さらに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報の重複性、並びに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報と、複数の前記復号部分処理をそれぞれ識別する識別情報との網羅性について検証を行う
ことを特徴とする請求項４４に記載の検知モジュール。
【請求項４９】
前記検証手段は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報に重複があるか、又は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報が、複数の復号部分処理を識別する全ての識別情報を網羅していない場合に、検証に失敗した旨を示す検証結果を出力する
ことを特徴とする請求項４８に記載の検知モジュール。
【請求項５０】
前記保護制御モジュールには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されており、
前記検知モジュールは、さらに、前記復号が終了し、前記復号鍵が消去されたのち、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証手段を含む
ことを特徴とする請求項４３に記載の検知モジュール。
【請求項５１】
前記保護制御モジュールにより、さらに、暗号化された前記アプリケーションプログラムが前記検知モジュールに対して出力され、
前記検知モジュールは、さらに、
前記保護制御モジュールから、暗号化された前記アプリケーションプログラムを取得する第二取得手段と、
記憶している前記分散鍵を用いて、暗号化された前記アプリケーションプログラムを部分復号して、部分復号文を生成する第二復号手段と、
生成した前記部分復号文を前記保護制御モジュールへ出力する第三出力手段とを含む
ことを特徴とする請求項４３に記載の検知モジュール。
【請求項５２】
前記アプリケーションプログラムは、ＲＳＡ暗号方式により、暗号化され、
前記第二復号手段は、暗号化された前記アプリケーションプログラムに対して、前記分散鍵の値によるべき乗を施して、前記部分復号文を生成する
ことを特徴とする請求項５１に記載の検知モジュール。
【請求項５３】
前記保護制御モジュールには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されており、
前記検知モジュールは、さらに、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証手段を含む
ことを特徴とする請求項５１に記載の検知モジュール。
【請求項５４】
複数の前記検知モジュールのうち、一の検知モジュールは、無効化されており、
前記管理装置により、さらに、無効化された前記検知モジュールに割り当てられた前記分散鍵が分解され、複数の再分散鍵が生成され、生成された複数の再分散鍵が、それぞれ、無効化されていない複数の前記検知モジュールに出力され、
無効化されていない前記検知モジュールは、さらに、前記再分散鍵を取得し、取得した前記再分散鍵を用いて、記憶している前記分散鍵を更新して新たな分散鍵を生成する分散鍵更新手段を含む
ことを特徴とする請求項４３に記載の検知モジュール。
【請求項５５】
前記管理装置により、生成された複数の再分散鍵の加算により前記分散鍵が得られるように、複数の前記再分散鍵が生成され、
前記分散鍵更新手段は、記憶している前記分散鍵に取得した前記再分散鍵を加算することにより、新たな前記分散鍵を生成する
ことを特徴とする請求項５４に記載の検知モジュール。
【請求項５６】
前記保護制御モジュール及び複数の前記検知モジュールは、それぞれ、コンピュータプログラムであって、
前記アプリケーションプログラム、前記保護制御モジュール及び複数の前記検知モジュールは、情報処理装置に記憶されている
ことを特徴とする請求項４３に記載の検知モジュール。
【請求項５７】
アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置において用いられる制御方法であって、
暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成ステップと、
生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力ステップと
を含むことを特徴とする制御方法。
【請求項５８】
アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置において用いられる制御用のコンピュータプログラムを記録しているコンピュータ読取可能な記録媒体であって、
暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成ステップと、
生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力ステップとを
コンピュータである前記管理装置に実行させるためのコンピュータプログラムを記録している記録媒体。
【請求項５９】
アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置において用いられる制御用のコンピュータプログラムであって、
暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成ステップと、
生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力ステップとを
コンピュータである前記管理装置に実行させるためのコンピュータプログラム。
【請求項６０】
アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置を構成する集積回路であって、
暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成手段と、
生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力手段と
を備えることを特徴とする集積回路。
【請求項６１】
アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールにおいて用いられる制御方法であって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
各検知モジュールにより、前記分散鍵が内部に記憶され、
前記制御方法は、
複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得ステップと、
取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元ステップと、
前記復元ステップにより復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号ステップと、
前記復号ステップによる復号が終了した後、前記復号鍵を消去する消去ステップと
を含むことを特徴とする制御方法。
【請求項６２】
アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールにおいて用いられる制御用のコンピュータプログラムを記録しているコンピュータ読取可能な記録媒体であって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
各検知モジュールにより、前記分散鍵が内部に記憶され、
コンピュータである前記保護制御モジュールに、
複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得ステップと、
取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元ステップと、
前記復元ステップにより復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号ステップと、
前記復号ステップによる復号が終了した後、前記復号鍵を消去する消去ステップと
を実行させるためのコンピュータプログラムを記録している記録媒体。
【請求項６３】
アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールにおいて用いられる制御用のコンピュータプログラムであって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
各検知モジュールにより、前記分散鍵が内部に記憶され、
コンピュータである前記保護制御モジュールに、
複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得ステップと、
取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元ステップと、
前記復元ステップにより復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号ステップと、
前記復号ステップによる復号が終了した後、前記復号鍵を消去する消去ステップと
を実行させるためのコンピュータプログラム。
【請求項６４】
アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールを構成する集積回路であって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
各検知モジュールにより、前記分散鍵が内部に記憶され、
前記集積回路は、
複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得手段と、
取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元手段と、
前記復元手段により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号手段と、
前記復号手段による復号が終了した後、前記復号鍵を消去する消去手段と
を備えることを特徴とする集積回路。
【請求項６５】
アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールにおいて用いられる方法であって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
前記方法は、
前記分散鍵を取得する取得ステップと、
取得した前記分散鍵を記憶させる記憶ステップと、
前記保護制御モジュールに対して、前記分散鍵を出力する出力ステップと
を含むことを特徴とする方法。
【請求項６６】
アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールにおいて用いられるコンピュータプログラムを記録しているコンピュータ読取可能な記録媒体であって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
コンピュータである前記検知モジュールに、
前記分散鍵を取得する取得ステップと、
取得した前記分散鍵を記憶させる記憶ステップと、
前記保護制御モジュールに対して、前記分散鍵を出力する出力ステップと
を実行させるためのコンピュータプログラムを記録している記録媒体。
【請求項６７】
アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールにおいて用いられるコンピュータプログラムであって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
コンピュータである前記検知モジュールに、
前記分散鍵を取得する取得ステップと、
取得した前記分散鍵を記憶させる記憶ステップと、
前記保護制御モジュールに対して、前記分散鍵を出力する出力ステップと
を実行させるためのコンピュータプログラム。
【請求項６８】
アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールを構成する集積回路であって、
管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、
前記集積回路は、
前記分散鍵を取得する取得手段と、
取得した前記分散鍵を記憶する記憶手段と、
前記保護制御モジュールに対して、前記分散鍵を出力する出力手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置等の機器内部で動作するモジュール等の改ざんを監視する技術に関する。
【背景技術】
【０００２】
近年、秘匿データを有しているアプリケーションプログラムが、悪意のある第三者（以下、「攻撃者」という）に不正に解析されないようにするため、ソフトウェアによってアプリケーションプログラムを保護する技術が開発されつつある（特許文献２、特許文献３）。【０００３】
ソフトウェアによってアプリケーションプログラムを保護する技術として、例えば、アプリケーションプログラムに対するハッシュ値を用いた改ざん検証や、アプリケーションプログラムを利用しないときには、当該アプリケーションプログラムを暗号化して保存しておき、利用するときにのみ、暗号化アプリケーションプログラムを復号してメモリへロードする復号ロード機能等がある。【０００４】
ところが、このような技術を利用しても、アプリケーションプログラムを保護するソフトウェア（以下、「保護制御モジュール」という）自体が攻撃者により改ざんされると、アプリケーションプログラムが攻撃者の攻撃を受けることになる。そこで、保護制御モジュールに対する改ざん検出を行う検知モジュールを用いて、保護制御モジュールの改ざん検出を行っている（特許文献２、特許文献３）。【０００５】
検知モジュールは、保護制御モジュールを構成する全てのデータを読み込み、ＭＡＣ（Message Authentication Code）値を計算することにより、保護制御モジュールの改ざん検出を行う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２００８／０９９６８２号
【特許文献２】国際公開第２００９／１１８８００号
【特許文献３】国際公開第２０１０／０９２８３２号
【特許文献４】日本国特許第２９４８８１４号明細書
【非特許文献】
【０００７】
【非特許文献１】岡本龍明、山本博資、「現代暗号」、産業図書（１９９７年）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、保護制御モジュールの改ざん検出を行う検知モジュールが改ざんされている場合、保護制御モジュールに含まれているアプリケーションプログラムの復号鍵が、改ざんされた検知モジュールにより不正に取得される危険性がある。そうすると、不正に取得された復号鍵を用いて、暗号化されたアプリケーションプログラムが復号され、不正なアプリケーションプログラムが情報処理装置にインストールされ、この不正なアプリケーションプログラムによって、利用者の個人情報やコンテンツなどが漏えいする可能性がある。【０００９】
本発明は、上記の問題点に鑑みなされたものであって、保護制御モジュールからアプリケーションプログラムの復号鍵が不正に取得される可能性を低くすることができる改ざん監視システム、管理装置、保護制御モジュール、検知モジュール、集積回路、方法、コンピュータプログラム及びコンピュータプログラムを記憶している記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールと、管理装置とを含む改ざん監視システムであって、前記管理装置は、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成手段と、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力手段とを備え、各検知モジュールは、前記分散鍵を取得して内部に記憶し、前記保護制御モジュールは、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得手段と、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元手段と、前記復元手段により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号手段と、前記復号手段による復号が終了した後、前記復号鍵を消去する消去手段とを備えることを特徴とする。
【発明の効果】
【００１１】
上記構成によれば、保護制御モジュールは、常時、復号鍵を保持することなく、暗号化されたアプリケーションプログラムを復号する時間帯においてのみ、復号鍵を保持し、復号終了後には、当該復号鍵を消去するので、保護制御モジュールから、前記復号鍵が不正に漏洩する可能性を低くすることができる。【００１２】
こうして、改ざん監視システムの安全性を高めることができる。 
【図面の簡単な説明】
【００１３】
【図１】本発明に係る実施の形態１としての改ざん監視システム１０ｄの全体構成を示す。
【図２】本発明に係る実施の形態２としての検知システム１０の全体構成を示す。
【図３】管理装置２００の判断部２１０の構成を示すブロック図である。
【図４】管理装置２００のソフトウェア配布部２２０の構成を示すブロック図である。
【図５】検証基データ６４０のデータ構造の一例を示す。
【図６】複数の第一復号部分処理６５１、第二復号部分処理６５２及び第三復号部分処理６５３から構成される復号処理６５０を示す概念図である。
【図７】暗復号鍵６３１の分解及び検知モジュール群１３０への分散を示す概念図である。
【図８】機器１００のハードウェア構成の一例を示す。
【図９】機器１００のソフトウェア階層構造の一例を示す。
【図１０】保護制御モジュール１２０の構成を示すブロック図である。
【図１１】検知モジュール群１３０からの分散鍵の収集及び暗復号鍵６３１の復元を示す概念図である。
【図１２】第一復号部分処理の検証データ３４１のデータ構造の一例を示す。
【図１３】第二復号部分処理の検証データ３４２のデータ構造の一例を示す。
【図１４】第三復号部分処理の検証データ３４３のデータ構造の一例を示す。
【図１５】検知モジュール１３１の構成を示すブロック図である。
【図１６】検知システム１０における全体の動作を示すフローチャートである。
【図１７】検知システム１０における初期設定の動作を示すシーケンス図である。
【図１８】管理装置２００における検証基データの生成の動作を示すフローチャートである。
【図１９】検知システム１０における検知の動作を示すシーケンス図である。図２０へ続く。
【図２０】検知システム１０における検知の動作を示すシーケンス図である。図２１へ続く。
【図２１】検知システム１０における検知の動作を示すシーケンス図である。図２２から続く。
【図２２】本発明に係る実施の形態３としての検知システム１０ａにおける私有鍵６３１ａの分解及び検知モジュール群１３０ａへの分散を示す概念図である。
【図２３】保護制御モジュール１２０ａの構成を示すブロック図である。
【図２４】検知モジュール選択部３１０が有する検知モジュールリスト３５１のデータ構造の一例を示す。
【図２５】検知モジュール１３１ａの構成を示すブロック図である。
【図２６】検知システム１０ａにおける初期設定の動作を示すシーケンス図である。
【図２７】検知システム１０ａにおける検知の動作を示すフローチャートである。
【図２８】保護制御モジュール１２０ａに対する検知の動作を示すシーケンス図である。
【図２９】検知システム１０ａにおけるアプリの復号の動作を示すフローチャートである。
【図３０】本発明に係る実施の形態４としての検知システム１０ｂにおける私有鍵６３１ｂの分解及び検知モジュール群１３０ｂへの分散を示す概念図である。
【図３１】検知システム１０ｂにおける検知モジュール群１３０ｂの構成を示す。検知モジュール１３２ｂは、無効化されている。
【図３２】検知システム１０ｂにおける再分散鍵の生成を説明する概念図である。
【図３３】検知システム１０ｂにおける検知モジュール１３１ｂの構成を示すブロック図である。
【図３４】検知システム１０ｂにおける再分散鍵による分散鍵の更新を説明する概念図である。
【図３５】検知システム１０ｂにおける再分散鍵による分散鍵の更新の動作を示すシーケンス図である。
【図３６】本発明に係る実施の形態の変形例における分散鍵の生成及び検知モジュール群１３０ｃへの分散を示す概念図である。
【図３７】検知モジュール選択部３１０が有する検知モジュールリスト３５１ａのデータ構造の一例を示す。
【発明を実施するための形態】
【００１４】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールと、管理装置とを含む改ざん監視システムである。前記管理装置は、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成手段と、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力手段とを備える。各検知モジュールは、前記分散鍵を取得して内部に記憶する。前記保護制御モジュールは、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得手段と、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元手段と、前記復元手段により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号手段と、前記復号手段による復号が終了した後、前記復号鍵を消去する消去手段とを備える。
【００１５】
ここで、前記管理装置は、さらに、暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理を施し、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換を施して、復号検証値を生成し、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データを生成する検証データ生成手段を含み、前記出力手段は、さらに、前記検証データを前記保護制御モジュールへ出力し、前記復号手段は、暗号化された前記アプリケーションプログラムに対して、複数の復号部分処理から構成される復号処理を施し、前記保護制御モジュールは、さらに、前記復号手段における復号部分処理毎に、当該復号部分処理からの出力データ及び受け取った前記検証データを検知モジュールへ出力する第二出力手段を含み、前記検知モジュールは、前記出力データ及び前記検証データを受け取る受信手段と、受け取った前記出力データ及び前記検証データを用いて、検証を行い、検証に失敗した場合に、その検証結果を出力する検証手段とを含むとしてもよい。
【００１６】
ここで、前記検証手段は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる前記復号検証値と、生成した前記第二検証値とが一致するか否かを判断することにより、前記検証を行い、一致しない場合に、検証に失敗したとみなして、前記検証結果を出力するとしてもよい。
【００１７】
ここで、前記保護制御モジュールは、さらに、他の一個以上のアプリケーションプログラムを保護し、前記管理装置は、さらに、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値を生成し、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書を生成する証明書生成手段を含み、前記検証データ生成手段は、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データを生成し、前記出力手段は、前記証明書を含む前記検証データを前記保護制御モジュールへ出力し、前記第二出力手段は、前記証明書を含む前記検証データを前記検知モジュールへ出力し、前記受信手段は、前記証明書を含む前記検証データを受け取り、前記検証手段は、さらに、復号部分処理毎に、受け取った前記検証データに含まれる前記証明書を用いて、検証を行うとしてもよい。
【００１８】
ここで、前記検証手段は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる他の前記アプリケーションプログラムについての前記復号検証値及び生成した前記第二検証値、並びに、前記証明書を用いて、前記検証を行うとしてもよい。
【００１９】
ここで、複数の前記復号部分処理は、それぞれ、複数の前記検知モジュールに対応しており、前記第二出力手段は、各復号部分処理に対応する前記検知モジュールに対して、当該復号部分処理からの前記出力データ及び前記検証データを出力するとしてもよい。
【００２０】
ここで、各検知モジュールは、さらに、自身に対応する前記復号部分処理を識別する識別情報を、他の検知モジュールに対して送信する送信手段を含み、各検知モジュールの前記受信手段は、さらに、他の検知モジュールから、当該他の検知モジュールに対応する前記復号部分処理を識別する識別情報を受け取り、各検知モジュールの前記検証手段は、さらに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報の重複性、並びに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報と、複数の前記復号部分処理をそれぞれ識別する識別情報との網羅性について検証を行うとしてもよい。
＃請求項８
ここで、各検知モジュールの前記検証手段は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報に重複があるか、又は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報が、複数の復号部分処理を識別する全ての識別情報を網羅していない場合に、検証に失敗した旨を示す検証結果を出力するとしてもよい。
【００２１】
ここで、前記保護制御モジュールには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されており、各検知モジュールは、前記復号が終了し、前記復号鍵が消去されたのち、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証手段を含むとしてもよい。
【００２２】
ここで、前記分散鍵生成手段は、生成された複数の分散鍵の加算により前記復号鍵が得られるように、複数の前記分散鍵を生成し、前記復元手段は、複数の前記分散鍵の加算により、前記復号鍵を復元するとしてもよい。
【００２３】
ここで、前記分散鍵生成手段は、秘密分散法を用いて、前記復号鍵から複数の前記分散鍵を生成し、前記復元手段は、前記秘密分散法を用いて、複数の前記分散鍵から前記復号鍵を復元するとしてもよい。
【００２４】
ここで、前記保護制御モジュールは、さらに、暗号化された前記アプリケーションプログラムを前記検知モジュールに対して出力する第二出力手段を含み、各検知モジュールは、前記保護制御モジュールから、暗号化された前記アプリケーションプログラムを取得する第二取得手段と、記憶している前記分散鍵を用いて、暗号化された前記アプリケーションプログラムを部分復号して、部分復号文を生成する第二復号手段と、生成した前記部分復号文を前記保護制御モジュールへ出力する第三出力手段とを含み、前記取得手段は、各検知モジュールから、前記部分復号文を取得し、前記復号手段は、取得した複数の前記部分復号文を用いて、暗号化された前記アプリケーションプログラムを復号するとしてもよい。
【００２５】
ここで、前記アプリケーションプログラムは、ＲＳＡ暗号方式により、暗号化され、前記第二復号手段は、暗号化された前記アプリケーションプログラムに対して、前記分散鍵の値によるべき乗を施して、前記部分復号文を生成し、前記復号手段は、複数の前記部分復号文の値を乗ずることより、暗号化された前記アプリケーションプログラムを復号するとしてもよい。
【００２６】
ここで、前記保護制御モジュールは、さらに、全ての前記検知モジュールから、複数の検知モジュールを選択する選択手段を含み、前記第二出力手段は、前記選択手段により選択された前記検知モジュールに対して、暗号化された前記アプリケーションプログラムを出力するとしてもよい。
【００２７】
ここで、前記保護制御モジュールには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されており、各検知モジュールは、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証手段を含むとしてもよい。
【００２８】
ここで、複数の前記検知モジュールのうち、一の前記検知モジュールは、無効化されており、前記分散鍵生成手段は、さらに、無効化された前記検知モジュールに割り当てられた前記分散鍵を分解して、複数の再分散鍵を生成し、前記出力手段は、さらに、生成した複数の再分散鍵を、それぞれ、無効化されていない複数の前記検知モジュールに出力し、無効化されていない各検知モジュールは、さらに、前記再分散鍵を取得し、取得した前記再分散鍵を用いて、記憶している前記分散鍵を更新して新たな分散鍵を生成する分散鍵更新手段を含むとしてもよい。
【００２９】
ここで、前記分散鍵生成手段は、生成された複数の再分散鍵の加算により前記分散鍵が得られるように、複数の前記再分散鍵を生成し、前記分散鍵更新手段は、記憶している前記分散鍵に取得した前記再分散鍵を加算することにより、新たな前記分散鍵を生成するとしてもよい。
【００３０】
ここで、複数の前記検知モジュールは、第一及び第二のグループに分類されており、前記分散鍵生成手段は、さらに、前記復号鍵を分解して、複数の第二分散鍵を生成し、前記出力手段は、生成した複数の前記分散鍵を、それぞれ、前記第一のグループに属する複数の前記検知モジュールに出力し、さらに、生成した複数の前記第二分散鍵を、それぞれ、前記第二のグループに属する複数の前記検知モジュールに出力し、前記第一のグループに属する各検知モジュールは、前記分散鍵を取得して内部に記憶し、前記第二のグループに属する各検知モジュールは、前記第二分散鍵を取得して内部に記憶し、前記取得手段は、第一又は第二のグループに属する複数の前記検知モジュールからそれぞれ前記分散鍵又は前記第二分散鍵を取得し、前記復元手段は、取得した複数の前記分散鍵を統合して、又は取得した複数の前記第二分散鍵を統合して、前記復号鍵を復元するとしてもよい。
【００３１】
ここで、前記保護制御モジュール及び複数の前記検知モジュールは、それぞれ、コンピュータプログラムであって、前記アプリケーションプログラム、前記保護制御モジュール及び複数の前記検知モジュールは、情報処理装置に記憶されているとしてもよい。
【００３２】
ここで、前記出力手段は、前記情報処理装置の初期設定時に、複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力するとしてもよい。
【００３３】
ここで、前記取得手段は、前記情報処理装置において前記アプリケーションプログラムを実行する際に、複数の前記検知モジュールからそれぞれ前記分散鍵を取得するとしてもよい。
【００３４】
また、本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置であって、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成手段と、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力手段とを備えることを特徴とする。
【００３５】
ここで、前記管理装置は、さらに、暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理を施し、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換を施して、復号検証値を生成し、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データを生成する検証データ生成手段を含み、前記出力手段は、さらに、前記検証データを前記保護制御モジュールへ出力するとしてもよい。
【００３６】
ここで、前記保護制御モジュールは、さらに、他の一個以上のアプリケーションプログラムを保護し、前記管理装置は、さらに、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値を生成し、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書を生成する証明書生成手段を含み、前記検証データ生成手段は、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データを生成し、前記出力手段は、前記証明書を含む前記検証データを前記保護制御モジュールへ出力するとしてもよい。
【００３７】
ここで、前記分散鍵生成手段は、生成された複数の分散鍵の加算により前記復号鍵が得られるように、複数の前記分散鍵を生成するとしてもよい。
【００３８】
ここで、前記分散鍵生成手段は、秘密分散法を用いて、前記復号鍵から複数の前記分散鍵を生成するとしてもよい。
【００３９】
ここで、複数の前記検知モジュールのうち、一の前記検知モジュールは、無効化されており、前記分散鍵生成手段は、さらに、無効化された前記検知モジュールに割り当てられた前記分散鍵を分解して、複数の再分散鍵を生成し、前記出力手段は、さらに、生成した複数の再分散鍵を、それぞれ、無効化されていない複数の前記検知モジュールに出力するとしてもよい。
【００４０】
ここで、前記分散鍵生成手段は、生成された複数の再分散鍵の加算により前記分散鍵が得られるように、複数の前記再分散鍵を生成するとしてもよい。
【００４１】
ここで、複数の前記検知モジュールは、第一及び第二のグループに分類されており、前記分散鍵生成手段は、さらに、前記復号鍵を分解して、複数の第二分散鍵を生成し、前記出力手段は、生成した複数の前記分散鍵を、それぞれ、前記第一のグループに属する複数の前記検知モジュールに出力し、さらに、生成した複数の前記第二分散鍵を、それぞれ、前記第二のグループに属する複数の前記検知モジュールに出力するとしてもよい。
【００４２】
ここで、前記保護制御モジュール及び複数の前記検知モジュールは、それぞれ、コンピュータプログラムであって、前記アプリケーションプログラム、前記保護制御モジュール及び複数の前記検知モジュールは、情報処理装置に記憶されており、前記出力手段は、前記情報処理装置の初期設定時に、複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力するとしてもよい。
【００４３】
また、本発明の一態様は、アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールである。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。各検知モジュールにより、前記分散鍵が内部に記憶される。前記保護制御モジュールは、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得手段と、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元手段と、前記復元手段により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号手段と、前記復号手段による復号が終了した後、前記復号鍵を消去する消去手段とを備えることを特徴とする。
【００４４】
ここで、前記管理装置により、さらに、暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理が施され、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換が施されて、復号検証値が生成され、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データが生成され、前記検証データが前記保護制御モジュールへ出力され、前記復号手段は、暗号化された前記アプリケーションプログラムに対して、複数の復号部分処理から構成される復号処理を施し、前記保護制御モジュールは、さらに、前記復号手段における復号部分処理毎に、当該復号部分処理からの出力データ及び受け取った前記検証データを検知モジュールへ出力する第二出力手段を含むとしてもよい。
【００４５】
ここで、前記保護制御モジュールは、さらに、他の一個以上のアプリケーションプログラムを保護し、前記管理装置により、さらに、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値が生成され、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書が生成され、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データが生成され、前記証明書を含む前記検証データが前記保護制御モジュールへ出力され、前記第二出力手段は、前記証明書を含む前記検証データを前記検知モジュールへ出力するとしてもよい。
【００４６】
ここで、複数の前記復号部分処理は、それぞれ、複数の前記検知モジュールに対応しており、前記第二出力手段は、各復号部分処理に対応する前記検知モジュールに対して、当該復号部分処理からの前記出力データ及び前記検証データを出力するとしてもよい。
【００４７】
ここで、前記管理装置により、生成された複数の分散鍵の加算により前記復号鍵が得られるように、複数の前記分散鍵が生成され、前記復元手段は、複数の前記分散鍵の加算により、前記復号鍵を復元するとしてもよい。
【００４８】
ここで、前記管理装置により、秘密分散法を用いて、前記復号鍵から複数の前記分散鍵が生成され、前記復元手段は、前記秘密分散法を用いて、複数の前記分散鍵から前記復号鍵を復元するとしてもよい。
【００４９】
ここで、前記保護制御モジュールは、さらに、暗号化された前記アプリケーションプログラムを前記検知モジュールに対して出力する第二出力手段を含み、各検知モジュールにより、前記保護制御モジュールから、暗号化された前記アプリケーションプログラムが取得され、記憶している前記分散鍵を用いて、暗号化された前記アプリケーションプログラムを部分復号して、部分復号文が生成され、生成された前記部分復号文が前記保護制御モジュールへ出力され、前記取得手段は、各検知モジュールから、前記部分復号文を取得し、前記復号手段は、取得した複数の前記部分復号文を用いて、暗号化された前記アプリケーションプログラムを復号するとしてもよい。
【００５０】
ここで、前記アプリケーションプログラムは、ＲＳＡ暗号方式により、暗号化され、前記検知モジュールにより、暗号化された前記アプリケーションプログラムに対して、前記分散鍵の値によるべき乗を施して、前記部分復号文が生成され、前記復号手段は、複数の前記部分復号文の値を乗ずることより、暗号化された前記アプリケーションプログラムを復号するとしてもよい。
【００５１】
ここで、前記保護制御モジュールは、さらに、全ての前記検知モジュールから、複数の検知モジュールを選択する選択手段を含み、前記第二出力手段は、前記選択手段により選択された前記検知モジュールに対して、暗号化された前記アプリケーションプログラムを出力するとしてもよい。
【００５２】
ここで、複数の前記検知モジュールは、第一及び第二のグループに分類されており、前記管理装置により、さらに、前記復号鍵を分解して、複数の第二分散鍵が生成され、生成した複数の前記分散鍵が、それぞれ、前記第一のグループに属する複数の前記検知モジュールに出力され、さらに、生成した複数の前記第二分散鍵が、それぞれ、前記第二のグループに属する複数の前記検知モジュールに出力され、前記第一のグループに属する各検知モジュールにより、前記分散鍵が内部に記憶され、前記第二のグループに属する各検知モジュールにより、前記第二分散鍵が内部に記憶され、前記取得手段は、第一又は第二のグループに属する複数の前記検知モジュールからそれぞれ前記分散鍵又は前記第二分散鍵を取得し、前記復元手段は、取得した複数の前記分散鍵を統合して、又は取得した複数の前記第二分散鍵を統合して、前記復号鍵を復元するとしてもよい。
【００５３】
ここで、前記保護制御モジュール及び複数の前記検知モジュールは、それぞれ、コンピュータプログラムであって、前記アプリケーションプログラム、前記保護制御モジュール及び複数の前記検知モジュールは、情報処理装置に記憶されているとしてもよい。
【００５４】
ここで、前記取得手段は、前記情報処理装置において前記アプリケーションプログラムを実行する際に、複数の前記検知モジュールからそれぞれ前記分散鍵を取得するとしてもよい。
【００５５】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールである。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。前記検知モジュールは、前記分散鍵を取得する取得手段と、取得した前記分散鍵を記憶する記憶手段と、前記保護制御モジュールに対して、前記分散鍵を出力する出力手段とを備えることを特徴とする。
【００５６】
ここで、前記管理装置により、暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理が施され、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換が施されて、復号検証値が生成され、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データが生成され、さらに、前記検証データが前記保護制御モジュールへ出力される。前記保護制御モジュールにより、暗号化された前記アプリケーションプログラムに対して、複数の復号部分処理から構成される復号処理が施され、さらに、前記復号手段における復号部分処理毎に、当該復号部分処理からの出力データ及び受け取った前記検証データが検知モジュールへ出力される。前記検知モジュールは、さらに、前記出力データ及び前記検証データを受け取る受信手段と、受け取った前記出力データ及び前記検証データを用いて、検証を行い、検証に失敗した場合に、その検証結果を出力する検証手段とを含むとしてもよい。
【００５７】
ここで、前記検証手段は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる前記復号検証値と、生成した前記第二検証値とが一致するか否かを判断することにより、前記検証を行い、一致しない場合に、検証に失敗したとみなして、前記検証結果を出力するとしてもよい。
【００５８】
ここで、前記保護制御モジュールにより、さらに、他の一個以上のアプリケーションプログラムが保護される。前記管理装置により、さらに、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値が生成され、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書が生成され、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データが生成され、前記証明書を含む前記検証データが前記保護制御モジュールへ出力される。前記保護制御モジュールにより、前記証明書を含む前記検証データが前記検知モジュールへ出力される。前記受信手段は、前記証明書を含む前記検証データを受け取り、前記検証手段は、さらに、復号部分処理毎に、受け取った前記検証データに含まれる前記証明書を用いて、検証を行うとしてもよい。
【００５９】
ここで、前記検証手段は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる他の前記アプリケーションプログラムについての前記復号検証値及び生成した前記第二検証値、並びに、前記証明書を用いて、前記検証を行うとしてもよい。
【００６０】
ここで、複数の前記復号部分処理は、それぞれ、複数の前記検知モジュールに対応している。前記保護制御モジュールにより、各復号部分処理に対応する前記検知モジュールに対して、当該復号部分処理からの前記出力データ及び前記検証データが出力される。前記検知モジュールは、さらに、自身に対応する前記復号部分処理を識別する識別情報を、他の検知モジュールに対して送信する送信手段を含み、前記受信手段は、さらに、他の検知モジュールから、当該他の検知モジュールに対応する前記復号部分処理を識別する前記識別情報を受け取り、前記検証手段は、さらに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報の重複性、並びに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報と、複数の前記復号部分処理をそれぞれ識別する識別情報との網羅性について検証を行うとしてもよい。
【００６１】
ここで、前記検証手段は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報に重複があるか、又は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報が、複数の復号部分処理を識別する全ての識別情報を網羅していない場合に、検証に失敗した旨を示す検証結果を出力するとしてもよい。
【００６２】
ここで、前記保護制御モジュールには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されている。前記検知モジュールは、さらに、前記復号が終了し、前記復号鍵が消去されたのち、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証手段を含むとしてもよい。
【００６３】
ここで、前記保護制御モジュールにより、さらに、暗号化された前記アプリケーションプログラムが前記検知モジュールに対して出力される。前記検知モジュールは、さらに、前記保護制御モジュールから、暗号化された前記アプリケーションプログラムを取得する第二取得手段と、記憶している前記分散鍵を用いて、暗号化された前記アプリケーションプログラムを部分復号して、部分復号文を生成する第二復号手段と、生成した前記部分復号文を前記保護制御モジュールへ出力する第三出力手段とを含むとしてもよい。
【００６４】
ここで、前記アプリケーションプログラムは、ＲＳＡ暗号方式により、暗号化され、前記第二復号手段は、暗号化された前記アプリケーションプログラムに対して、前記分散鍵の値によるべき乗を施して、前記部分復号文を生成するとしてもよい。
【００６５】
ここで、前記保護制御モジュールには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されている。前記検知モジュールは、さらに、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証手段を含むとしてもよい。
【００６６】
ここで、複数の前記検知モジュールのうち、一の検知モジュールは、無効化されている。前記管理装置により、さらに、無効化された前記検知モジュールに割り当てられた前記分散鍵が分解され、複数の再分散鍵が生成され、生成された複数の再分散鍵が、それぞれ、無効化されていない複数の前記検知モジュールに出力される。無効化されていない前記検知モジュールは、さらに、前記再分散鍵を取得し、取得した前記再分散鍵を用いて、記憶している前記分散鍵を更新して新たな分散鍵を生成する分散鍵更新手段を含むとしてもよい。
【００６７】
ここで、前記管理装置により、生成された複数の再分散鍵の加算により前記分散鍵が得られるように、複数の前記再分散鍵が生成される。前記分散鍵更新手段は、記憶している前記分散鍵に取得した前記再分散鍵を加算することにより、新たな前記分散鍵を生成するとしてもよい。
【００６８】
ここで、前記保護制御モジュール及び複数の前記検知モジュールは、それぞれ、コンピュータプログラムであって、前記アプリケーションプログラム、前記保護制御モジュール及び複数の前記検知モジュールは、情報処理装置に記憶されているとしてもよい。
【００６９】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置において用いられる制御方法であって、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成ステップと、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力ステップとを含むことを特徴とする。
【００７０】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置において用いられる制御用のコンピュータプログラムを記録しているコンピュータ読取可能な記録媒体であって、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成ステップと、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力ステップとコンピュータである前記管理装置に実行させるためのコンピュータプログラムを記録している。
【００７１】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置において用いられる制御用のコンピュータプログラムであって、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成ステップと、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力ステップとコンピュータである前記管理装置に実行させるためのコンピュータプログラムである。
【００７２】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置を構成する集積回路であって、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成手段と、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力手段とを備えることを特徴とする。
【００７３】
本発明の一態様は、アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールにおいて用いられる制御方法である。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、各検知モジュールにより、前記分散鍵が内部に記憶される。前記制御方法は、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得ステップと、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元ステップと、前記復元ステップにより復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号ステップと、前記復号ステップによる復号が終了した後、前記復号鍵を消去する消去ステップとを含むことを特徴とする。
【００７４】
本発明の一態様は、アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールにおいて用いられる制御用のコンピュータプログラムを記録しているコンピュータ読取可能な記録媒体である。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、各検知モジュールにより、前記分散鍵が内部に記憶される。前記記録媒体は、コンピュータである前記保護制御モジュールに、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得ステップと、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元ステップと、前記復元ステップにより復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号ステップと、前記復号ステップによる復号が終了した後、前記復号鍵を消去する消去ステップとを実行させるためのコンピュータプログラムを記録している。
【００７５】
本発明の一態様は、アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールにおいて用いられる制御用のコンピュータプログラムである。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、各検知モジュールにより、前記分散鍵が内部に記憶される。前記コンピュータプログラムは、コンピュータである前記保護制御モジュールに、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得ステップと、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元ステップと、前記復元ステップにより復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号ステップと、前記復号ステップによる復号が終了した後、前記復号鍵を消去する消去ステップとを実行させる。
【００７６】
本発明の一態様は、アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールを構成する集積回路である。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、各検知モジュールにより、前記分散鍵が内部に記憶される。前記集積回路は、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得手段と、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元手段と、前記復元手段により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号手段と、前記復号手段による復号が終了した後、前記復号鍵を消去する消去手段とを備えることを特徴とする。
【００７７】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールにおいて用いられる方法である。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。前記方法は、前記分散鍵を取得する取得ステップと、取得した前記分散鍵を記憶させる記憶ステップと、前記保護制御モジュールに対して、前記分散鍵を出力する出力ステップとを含むことを特徴とする。
【００７８】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールにおいて用いられるコンピュータプログラムを記録しているコンピュータ読取可能な記録媒体である。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。前記記録媒体は、コンピュータである前記検知モジュールに、前記分散鍵を取得する取得ステップと、取得した前記分散鍵を記憶させる記憶ステップと、前記保護制御モジュールに対して、前記分散鍵を出力する出力ステップとを実行させるためのコンピュータプログラムを記録している。
【００７９】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールにおいて用いられるコンピュータプログラムである。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。前記コンピュータプログラムは、コンピュータである前記検知モジュールに、前記分散鍵を取得する取得ステップと、取得した前記分散鍵を記憶させる記憶ステップと、前記保護制御モジュールに対して、前記分散鍵を出力する出力ステップとを実行させる。
【００８０】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールを構成する集積回路である。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。前記集積回路は、前記分散鍵を取得する取得手段と、取得した前記分散鍵を記憶する記憶手段と、前記保護制御モジュールに対して、前記分散鍵を出力する出力手段とを備えることを特徴とする。
【００８１】
１．実施の形態１
ここでは、本発明に係る実施の形態１としての改ざん監視システム１０ｄについて説明する。
【００８２】
（１）改ざん監視システム１０ｄの構成
改ざん監視システム１０ｄは、図１に示すように、保護制御モジュール１２０ｄ、複数の検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄ及び管理装置２００ｄから構成されている。
【００８３】
保護制御モジュール１２０ｄは、アプリケーションプログラムを保護する。検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄは、それぞれ、保護制御モジュール１２０ｄの改ざんを監視する。
【００８４】
管理装置２００ｄは、図１に示すように、分散鍵生成部２５１ｄ及び出力部２５２ｄから構成されている。
【００８５】
分散鍵生成部２５１ｄは、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する。
【００８６】
出力部２５２ｄは、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する。
【００８７】
検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄは、それぞれ、分散鍵を取得して内部に記憶する。
【００８８】
保護制御モジュール１２０ｄは、図１に示すように、取得部３８１ｄ、復元部３８２ｄ、復号部３８３ｄ及び消去部３８４ｄから構成されている。
【００８９】
取得部３８１ｄは、複数の検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄから、それぞれ、分散鍵を取得する。
【００９０】
復元部３８２ｄは、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する。
【００９１】
復号部３８３ｄは、復元部３８２ｄにより復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する。
【００９２】
消去部３８４ｄは、復号部３８３ｄによる復号が終了した後、前記復号鍵を消去する。
【００９３】
この構成によれば、保護制御モジュール１２０ｄは、常時、復号鍵を保持することなく、暗号化されたアプリケーションプログラムを復号する時間帯においてのみ、復号鍵を保持し、復号終了後には、当該復号鍵を消去するので、保護制御モジュール１２０ｄから、前記復号鍵が不正に漏洩する可能性を低くすることができる。
【００９４】
こうして、改ざん監視システム１０ｄの安全性を高めることができる。 
【００９５】
（２）管理装置２００ｄは、さらに、検証データ生成部（図示していない）を含むとしてもよい。検証データ生成部は、暗号化された改ざんのない前記アプリケーションプログラムに対し、複数の復号部分処理から構成される復号処理を施し、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換を施して、復号検証値を生成し、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データを生成する。
【００９６】
出力部２５２ｄは、さらに、前記検証データを保護制御モジュール１２０ｄへ出力する。
【００９７】
復号部３８３ｄは、暗号化された前記アプリケーションプログラムに対して、複数の復号部分処理から構成される復号処理を施す。
【００９８】
保護制御モジュールは、さらに、第二出力部（図示していない）を含む。第二出力部は、復号部３８３ｄにおける復号部分処理毎に、当該復号部分処理からの出力データ及び受け取った前記検証データを検知モジュール１３１ｄへ出力する。
【００９９】
検知モジュール１３１ｄは、受信部（図示していない）と検証部（図示していない）とを含む。
【０１００】
受信部は、前記出力データ及び前記検証データを受け取る。
【０１０１】
検証部は、受け取った前記出力データ及び前記検証データを用いて、検証を行い、検証に失敗した場合に、その検証結果を出力する。
【０１０２】
この構成によると、検知モジュールは、前記出力データ及び前記検証データを用いて、保護制御モジュール１２０ｄが有する復号処理を構成する復号部分処理についての改ざんの検証を行うことができる。
【０１０３】
（３）検証部は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる前記復号検証値と、生成した前記第二検証値とが一致するか否かを判断することにより、前記検証を行い、一致しない場合に、検証に失敗したとみなして、前記検証結果を出力するとしてもよい。
【０１０４】
（４）保護制御モジュール１２０ｄは、さらに、他の一個以上のアプリケーションプログラムを保護するとしてもよい。
【０１０５】
管理装置２００ｄは、さらに、証明書生成手段（図示していない）を含む。
【０１０６】
証明書生成手段は、他の前記アプリケーションプログラムについて、復号部分処理毎に復号検証値を生成し、復号部分処理毎に、前記アプリケーションプログラム及び他のアプリケーションプログラムを含む複数の前記アプリケーションプログラムについて生成された複数の前記復号検証値に対しデジタル署名を施して証明書を生成する。
【０１０７】
検証データ生成部は、復号部分処理毎に生成された他の前記アプリケーションプログラムについての前記復号検証値及び復号部分処理毎に生成された前記証明書を含む前記検証データを生成する。
【０１０８】
出力部２５２ｄは、前記証明書を含む前記検証データを保護制御モジュール１２０ｄへ出力する。
【０１０９】
第二出力部は、前記証明書を含む前記検証データを検知モジュール１３１ｄへ出力する。
【０１１０】
受信部は、前記証明書を含む前記検証データを受け取る。
【０１１１】
検証部は、さらに、復号部分処理毎に、受け取った前記検証データに含まれる前記証明書を用いて、検証を行う。
【０１１２】
この構成によると、検知モジュールは、複数のアプリケーションプログラムが動作する場合において、前記出力データ及び前記検証データを用いて、保護制御モジュール１２０ｄが有する復号処理を構成する復号部分処理についての改ざんの検証を行うことができる。
【０１１３】
（５）検証部は、前記検証データに含まれている前記入力データ及び受け取った前記出力データの両方に、一方向性の前記変換と同一の変換を施して、第二検証値を生成し、前記検証データに含まれる他の前記アプリケーションプログラムについての前記復号検証値及び生成した前記第二検証値、並びに、前記証明書を用いて、前記検証を行うとしてもよい。
【０１１４】
（６）複数の前記復号部分処理は、それぞれ、複数の前記検知モジュールに対応している。
【０１１５】
第二出力部は、各復号部分処理に対応する前記検知モジュールに対して、当該復号部分処理からの前記出力データ及び前記検証データを出力するとしてもよい。
【０１１６】
この構成によると、各検知モジュールは、対応する復号部分処理について、検証を行うので、復号部分処理との対応関係を有さない検知モジュールが改ざんされた場合には、改ざんの検証に影響させないようにすることができる。
【０１１７】
（７）各検知モジュールは、さらに、自身に対応する前記復号部分処理を識別する識別情報を、他の検知モジュールに対して送信する送信部を含むとしてもよい。
【０１１８】
各検知モジュールの受信部は、さらに、他の検知モジュールから、当該他の検知モジュールに対応する前記復号部分処理を識別する識別情報を受け取る。
【０１１９】
各検知モジュールの検証部は、さらに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報の重複性、並びに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報と、複数の前記復号部分処理をそれぞれ識別する識別情報との網羅性について検証を行う。
【０１２０】
この構成によると、各検知モジュールは、前記重複性及び前記網羅性について検証を行うので、複数の検知モジュールが同一の復号部分処理を検証するにように改ざんされる場合や、検知モジュールが対応する復号部分処理を検証しないように改ざんされた場合においても、このような改ざんを検出することができる。
【０１２１】
（８）各検知モジュールの検証部は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報に重複があるか、又は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報が、複数の復号部分処理を識別する全ての識別情報を網羅していない場合に、検証に失敗した旨を示す検証結果を出力するとしてもよい。
【０１２２】
（９）保護制御モジュール１２０ｄには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されている。
【０１２３】
各検知モジュールは、前記復号が終了し、前記復号鍵が消去されたのち、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証部を含むとしてもよい。
【０１２４】
この構成によると、改ざん検出用証明書を用いた検出を行うことができる。
【０１２５】
（１０）分散鍵生成部２５１ｄは、生成された複数の分散鍵の加算により前記復号鍵が得られるように、複数の前記分散鍵を生成するとしてもよい。
【０１２６】
復元部３８２ｄは、複数の前記分散鍵の加算により、前記復号鍵を復元する。
【０１２７】
この構成によると、元の復号鍵を復元することができる。
【０１２８】
（１１）分散鍵生成部２５１ｄは、秘密分散法を用いて、前記復号鍵から複数の前記分散鍵を生成するとしてもよい。
【０１２９】
復元部３８２ｄは、前記秘密分散法を用いて、複数の前記分散鍵から前記復号鍵を復元する。
【０１３０】
この構成によると、元の復号鍵を復元することができる。
【０１３１】
（１２）保護制御モジュール１２０ｄは、さらに、暗号化された前記アプリケーションプログラムを前記検知モジュールに対して出力する第二出力部を含むとしてもよい。
【０１３２】
各検知モジュールは、第二取得部と、第二復号部と、第三出力部とを含む。
【０１３３】
第二取得部は、保護制御モジュール１２０ｄから、暗号化された前記アプリケーションプログラムを取得する。
【０１３４】
第二復号部は、記憶している前記分散鍵を用いて、暗号化された前記アプリケーションプログラムを部分復号して、部分復号文を生成する。
【０１３５】
第三出力部は、生成した前記部分復号文を保護制御モジュール１２０ｄへ出力する。
【０１３６】
取得部３８１ｄは、各検知モジュールから、前記部分復号文を取得する。
【０１３７】
復号部３８３ｄは、取得した複数の前記部分復号文を用いて、暗号化された前記アプリケーションプログラムを復号する。
【０１３８】
この構成によれば、保護制御モジュール１２０ｄは、常時、復号鍵を保持することがない。このため、保護制御モジュール１２０ｄから、前記復号鍵が不正に漏洩する可能性がない。
【０１３９】
（１３）前記アプリケーションプログラムは、ＲＳＡ暗号方式により、暗号化されているとしてもよい。
【０１４０】
第二復号部は、暗号化された前記アプリケーションプログラムに対して、前記分散鍵の値によるべき乗を施して、前記部分復号文を生成する。
【０１４１】
復号部３８３ｄは、複数の前記部分復号文の値を乗ずることより、暗号化された前記アプリケーションプログラムを復号する。
【０１４２】
この構成によれば、暗号化されたアプリケーションプログラムを復号することができる。
【０１４３】
（１４）保護制御モジュール１２０ｄは、さらに、全ての前記検知モジュールから、複数の検知モジュールを選択する選択部を含むとしてもよい。
【０１４４】
第二出力部は、選択部により選択された前記検知モジュールに対して、暗号化された前記アプリケーションプログラムを出力する。
【０１４５】
この構成によれば、選択された検知モジュールが部分復号を行うので、選択されなかった検知モジュールが改ざんされた場合であっても、検証に影響させないようにすることができる。
【０１４６】
（１５）保護制御モジュール１２０ｄには、改ざんのない前記保護制御モジュールに対してデジタル署名を施して生成された改ざん検出用証明書が付されているとしてもよい。
【０１４７】
各検知モジュールは、前記改ざん検出用証明書を用いて、前記保護制御モジュールに対する改ざんの検出を行う検証部を含む。
【０１４８】
この構成によると、改ざん検出用証明書を用いた検出を行うことができる。
【０１４９】
（１６）複数の前記検知モジュールのうち、一の前記検知モジュールは、無効化されているとしてもよい。
【０１５０】
分散鍵生成部２５１ｄは、さらに、無効化された前記検知モジュールに割り当てられた前記分散鍵を分解して、複数の再分散鍵を生成する。
【０１５１】
出力部２５２ｄは、さらに、生成した複数の再分散鍵を、それぞれ、無効化されていない複数の前記検知モジュールに出力する。
【０１５２】
無効化されていない各検知モジュールは、さらに、前記再分散鍵を取得し、取得した前記再分散鍵を用いて、記憶している前記分散鍵を更新して新たな分散鍵を生成する分散鍵更新部を含む。
【０１５３】
この構成によると、一の検知モジュールが無効化されている場合であっても、保護制御モジュールは、無効化されていない検知モジュールから、新たな分散鍵を取得して、復号鍵を復元することができる。
【０１５４】
（１７）分散鍵生成部２５１ｄは、生成された複数の再分散鍵の加算により前記分散鍵が得られるように、複数の前記再分散鍵を生成するとしてもよい。
【０１５５】
分散鍵更新部は、記憶している前記分散鍵に取得した前記再分散鍵を加算することにより、新たな前記分散鍵を生成する。
【０１５６】
（１８）複数の前記検知モジュールは、第一及び第二のグループに分類されているとしてもよい。
【０１５７】
分散鍵生成部２５１ｄは、さらに、前記復号鍵を分解して、複数の第二分散鍵を生成する。
【０１５８】
出力部２５２ｄは、生成した複数の前記分散鍵を、それぞれ、前記第一のグループに属する複数の前記検知モジュールに出力し、さらに、生成した複数の前記第二分散鍵を、それぞれ、前記第二のグループに属する複数の前記検知モジュールに出力する。
【０１５９】
前記第一のグループに属する各検知モジュールは、前記分散鍵を取得して内部に記憶する。
【０１６０】
前記第二のグループに属する各検知モジュールは、前記第二分散鍵を取得して内部に記憶する。
【０１６１】
取得部３８１ｄは、第一又は第二のグループに属する複数の前記検知モジュールからそれぞれ前記分散鍵又は前記第二分散鍵を取得する。
【０１６２】
復元部３８２ｄは、取得した複数の前記分散鍵を統合して、又は取得した複数の前記第二分散鍵を統合して、前記復号鍵を復元する。
【０１６３】
上記の構成によると、第一のグループに属する検知モジュールが改ざんされた場合であっても、第二のグループに属する検知モジュールを用いて、検証を行うことができる。また、第二のグループに属する検知モジュールが改ざんされた場合であっても、第一のグループに属する検知モジュールを用いて、検証を行うことができる。
【０１６４】
（１９）保護制御モジュール１２０ｄ及び複数の検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄは、それぞれ、コンピュータプログラムであるとしてもよい。
【０１６５】
前記アプリケーションプログラム、保護制御モジュール１２０ｄ及び複数の検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄは、情報処理装置に記憶されている。
【０１６６】
（２０）出力部２５２ｄは、前記情報処理装置の初期設定時に、複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力するとしてもよい。
【０１６７】
（２１）取得部３８１ｄは、前記情報処理装置において前記アプリケーションプログラムを実行する際に、複数の検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄからそれぞれ前記分散鍵を取得するとしてもよい。
【０１６８】
（２２）管理装置２００ｄにより、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄに出力されるとしてもよい。ここで、検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄは、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する。
【０１６９】
検知モジュール１３１ｄ、１３２ｄ、・・・、１３５ｄのうちの一の検知モジュールは、取得部と、記憶部と、出力部とを備えるとしてもよい。
【０１７０】
取得部は、前記分散鍵を取得する。
【０１７１】
記憶部は、取得した前記分散鍵を記憶する。
【０１７２】
出力部は、保護制御モジュール１２０ｄに対して、前記分散鍵を出力する。
【０１７３】
２．実施の形態２
ここでは、本発明に係る実施の形態２としての検知システム１０について説明する。
【０１７４】
２．１  検知システム１０の構成
検知システム１０は、図２に示すように、機器１００及び管理装置２００から構成され、機器１００と管理装置２００とは、インターネットに代表されるネットワーク２０を介して、接続されている。
【０１７５】
機器１００は、様々なサービスを利用者に提供する情報処理装置である。例えば、機器１００は、ネットワーク２０を介して、コンテンツ配信サーバ装置（図示していない）にアクセスし、音楽や映像などのコンテンツを購入して再生する。また、機器１００は、ネットワーク２０を介して、金融機関のサーバ装置（図示していない）にアクセスし、ネットバンキング（預金の残高照会や口座振り込みなど）を行う。
【０１７６】
機器１００は、例えば、ＰＣ（パーソナルコンピュータ）、携帯電話機、携帯情報端末装置、デジタル放送受信装置、ＤＶＤ（Digital Versatile Disc）プレーヤ、ＢＤ（Blu-ray Disc）プレーヤ、コンテンツ記録装置等である。
【０１７７】
機器１００には、アプリケーションプログラムがインストールされており、このアプリケーションプログラムが実行される。また、機器１００には、コンピュータプログラムである保護制御モジュール１２０及び複数の検知モジュール１３１、１３２、・・・、１３５がインストールされている。保護制御モジュール１２０は、アプリケーションプログラムを保護する。また、複数の検知モジュール１３１、１３２、・・・、１３５は、それぞれ、保護制御モジュール１２０に対する改ざんを監視する。
【０１７８】
管理装置２００は、保護制御モジュール１２０及び複数の検知モジュール１３１、１３２、・・・、１３５を管理する。
【０１７９】
２．２  管理装置２００の構成
管理装置２００は、保護制御モジュール１２０が正しく動作しているか否かを検証するために必要な検証基データを生成し、機器１００へ出力する。
【０１８０】
管理装置２００は、図２に示すように、判断部２１０、ソフトウェア配布部２２０及び通信部２３０から構成される。
【０１８１】
管理装置２００は、具体的には、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ハードディスクユニット、ＮＩＣ（Network Interface Card）などを備えるコンピュータシステムである。ＲＯＭ又はハードディスクユニットには、管理装置２００の動作を制御するための制御用のコンピュータプログラムが記憶されている。ＣＰＵが、これらの制御用のコンピュータプログラムに従って動作することにより、管理装置２００の判断部２１０及びソフトウェア配布部２２０は、その機能を発揮する。また、通信部２３０は、ＮＩＣにより、その機能を発揮する。
【０１８２】
（１）判断部２１０
判断部２１０は、機器１００内部に記憶されているコンピュータプログラム（アプリケーションプログラム（以下、「アプリ」という。）１１０、１１１、１１２、１１３、１１４、保護制御モジュール１２０及び検知モジュール群１３０）の状態に応じて、機器１００が実行すべき処理を決定し、ソフトウェア配布部２２０に各種指示を行う。
【０１８３】
判断部２１０は、図３に示すように、受信部５０１、送信部５０２及び指示生成部５０３から構成されている。
【０１８４】
受信部５０１は、各検知モジュールから、検出結果や各種依頼などを受信し、受信した検出結果や各種依頼などを指示生成部５０３へ出力する。また、受信部５０１は、ソフトウェア配布部２２０から、処理の完了を示す通知を受信し、受信した通知を指示生成部５０３に出力する。
【０１８５】
送信部５０２は、指示生成部５０３から指示を受け取り、受け取った指示をソフトウェア配布部２２０へ送信する。
【０１８６】
指示生成部５０３は、保護制御モジュール１２０から検証基データの生成依頼を受け取る。検証基データの生成依頼を受け取ると、検証基データの生成指示を生成し、生成した検証基データの生成指示を、送信部５０２を介して、ソフトウェア配布部２２０へ出力する。
【０１８７】
（２）ソフトウェア配布部２２０
ソフトウェア配布部２２０は、機器１００内部に記憶されている保護制御モジュール１２０が検知される際に、各検知モジュールが検証に用いる検証データを含む検証基データを保護制御モジュール１２０へ送信する。
【０１８８】
ソフトウェア配布部２２０は、図４に示すように、受信部６０１、送信部６０２、制御部６０３、認証部６０４、証明書生成部６０５、署名私有鍵保持部６０６、暗復号鍵保持部６０７、ソフトウェア保持部６０８、検証基データ生成部６０９及び分散鍵生成部６１０から構成されている。
【０１８９】
（署名私有鍵保持部６０６）
署名私有鍵保持部６０６は、署名私有鍵Ｐｒｋ（６３２）を保持している。署名私有鍵Ｐｒｋ（６３２）は、管理装置２００に割り当てられた公開鍵暗号方式の私有鍵であり、証明書生成部６０５により証明書を生成するときに利用される。
【０１９０】
ここで、公開鍵暗号方式は、一例として、ＲＳＡによるものである。
【０１９１】
（暗復号鍵保持部６０７）
暗復号鍵保持部６０７は、アプリを暗号化するため及び暗号化アプリを復号するために用いられる暗復号鍵ｄ（６３１）を保持している。暗復号鍵ｄ（６３１）は、秘密暗号方式の秘密鍵である。暗復号鍵ｄ（６３１）は、一例として、１２８ビット長のＡＥＳ（Advanced Encryption Standard）の秘密鍵である。
【０１９２】
（ソフトウェア保持部６０８）
ソフトウェア保持部６０８は、コンピュータプログラムとしての保護制御モジュール１２０、コンピュータプログラムとしての検知モジュール群１３０及びコンピュータプログラムとしてのアプリ１１０、１１１、・・・、１１４を予め記憶している。
【０１９３】
保護制御モジュール１２０、検知モジュール群１３０及びアプリ１１０、１１１、・・・、１１４は、機器１００にインストールされる。保護制御モジュール１２０、検知モジュール群１３０及びアプリ１１０、１１１、・・・、１１４については、後述する。
【０１９４】
（受信部６０１）
受信部６０１は、機器１００の各検知モジュールから、ネットワーク２０及び通信部２３０を介して、保護制御モジュール１２０に対する検出結果を受信し、受信した検出結果を制御部６０３へ出力する。
【０１９５】
（送信部６０２）
送信部６０２は、制御部６０３の制御により、機器１００内部の各アプリ及び保護制御モジュール１２０に対する改ざん検証の依頼、それらの検証に必要な検証基データなどを、通信部２３０及びネットワーク２０を介して、機器１００へ送信する。
【０１９６】
（制御部６０３）
制御部６０３は、ソフトウェア配布部２２０の各構成要素を制御する。
【０１９７】
また、制御部６０３は、分散鍵生成部６１０により生成された複数の分散鍵を、それぞれ、送信部６０２、通信部２３０及びネットワーク２０を介して、機器１００の複数の検知モジュール１３１、１３２、・・・、１３５へ出力する。
【０１９８】
さらに、制御部６０３は、検証基データ生成部６０９により生成された検証基データ６４０（後述する）を、送信部６０２、通信部２３０及びネットワーク２０を介して、機器１００の保護制御モジュール１２０へ出力する。
【０１９９】
（認証部６０４）
認証部６０４は、各検知モジュールや保護制御モジュール１２０との間で相互認証を行う。
【０２００】
（検証基データ生成部６０９）
検証基データ生成部６０９は、以下に示すように、暗号化された改ざんのないアプリに対し、複数の復号部分処理から構成される復号処理を施し、復号部分処理毎に、当該復号部分処理への入力データ及び当該復号部分処理からの出力データの両方に対して、一方向性の変換を施して、復号検証値を生成し、復号部分処理毎に前記入力データ及び前記復号検証値を含む検証データを生成する。
【０２０１】
具体的には、検証基データ生成部６０９は、次に示すように、図５に示す第一復号部分処理データ６４１、第二復号部分処理データ６４２及び第三復号部分処理データ６４３を含む検証基データ６４０を生成し、生成した検証基データ６４０を制御部６０３へ出力する。
【０２０２】
（ａ）検証基データ生成部６０９は、判定情報を生成する。ここでは、以下に説明する復号アルゴリズムＤを構成する復号サブプロセス（復号部分処理とも呼ぶ。）の数を、判定情報とする。後述するように、一例として、復号サブプロセスの数は、「３」であるので、判定情報を「３」とする。
【０２０３】
（ｂ）次に、検証基データ生成部６０９は、ソフトウェア保持部６０８から、アプリ１１０、１１１、・・・、１１４を読み出す。アプリ１１０、１１１、・・・、１１４には、ファイル名が付されており、アプリ１１０、１１１、・・・、１１４それぞれのファイル名から識別情報を抽出する。ここでは、アプリ１１０、１１１、・・・、１１４それぞれのファイル名から、識別情報「１１０」、「１１１」、「１１２」、「１１３」及び「１１４」が抽出されるものとする。
【０２０４】
（ｃ）検証基データ生成部６０９は、暗復号鍵保持部６０７から暗復号鍵ｄ（６３１）を読み出す。次に、検証基データ生成部６０９は、ソフトウェア保持部６０８に記憶されている保護制御モジュール１２０に含まれている復号ロード部３０４（後述する）を実行状態とし、復号ロード部３０４に対して、読み出した暗復号鍵ｄ（６３１）を用いて、読み出したアプリ１１０、１１１、・・・、１１４を暗号化アルゴリズムＥにより、暗号化するように制御する。ここで、暗号化アルゴリズムＥは、一例として、秘密鍵暗号方式のＡＥＳである。こうして、アプリ１１０、１１１、・・・、１１４から、それぞれ、暗号化アプリ１１０ｅ、１１１ｅ、・・・、１１４ｅが生成される。
【０２０５】
（ｄ）次に、検証基データ生成部６０９は、実行状態とした復号ロード部３０４に対して、暗号化アプリ１１０ｅ、１１１ｅ、・・・、１１４ｅを、読み出した暗復号鍵ｄ（６３１）を用いて、暗号化アルゴリズムＥの逆変換である復号アルゴリズムＤにより、復号して、復号アプリ１１０ｄ、１１１ｄ、・・・、１１４ｄを生成するように、制御する。
【０２０６】
ここで、復号アルゴリズムＤは、複数の復号サブプロセス（復号部分処理）から構成されている。暗号文は、複数の復号サブプロセスを順次経ることにより、平文に変換される。複数個の復号サブプロセスから構成される復号処理の例は、ＤＥＳ（Data Encryption Standard）及びＡＥＳである。ここでは、一例として、復号アルゴリズムＤは、３個の復号サブプロセスから構成されているものとする。
【０２０７】
復号ロード部３０４により実行される復号処理６５０は、図６に一例として示すように、３個の復号サブプロセス（復号部分処理）を順次経て、つまり、第一復号部分処理６５１、第二復号部分処理６５２及び第三復号部分処理６５３を順次経て、なされる。
【０２０８】
具体的には、図６に示すように、暗号化アプリ６６１は、第一復号部分処理６５１を経て、第一中間アプリ６６２に変換される。次に、第一中間アプリ６６２は、第二復号部分処理６５２を経て、第二中間アプリ６６３に変換される。次に、第二中間アプリ６６３は、第三復号部分処理６５３を経て、復号アプリ６６４に変換される。
【０２０９】
このとき、検証基データ生成部６０９は、復号ロード部３０４に対して、復号処理６５０の最終結果である復号アプリ６６４とともに、第一復号部分処理６５１の出力である第一中間アプリ６６２及び第二復号部分処理６５２の出力である第二中間アプリ６６３をも出力するように、制御する。
【０２１０】
こうして、暗号化アプリ１１０ｅ、１１１ｅ、・・・、１１４ｅのそれぞれについて、復号アプリ１１０ｄ、１１１ｄ、・・・、１１４ｄが生成され、暗号化アプリ１１０ｅ、１１１ｅ、・・・、１１４ｅのそれぞれについて、第一中間アプリ１１０ｄａ、１１１ｄａ、・・・、１１４ｄａが生成され、第二中間アプリ１１０ｄｂ、１１１ｄｂ、・・・、１１４ｄｂが生成される。
【０２１１】
（ｅ）検証基データ生成部６０９は、次に示すようにして、各復号サブプロセス（復号部分処理）について、アプリ毎に、復号検証値を生成する。
【０２１２】
第一復号部分処理６５１について、検証基データ生成部６０９は、暗号化アプリ１１０ｅ及び第一中間アプリ１１０ｄａをこの順序で結合して、結合体を生成し、生成した結合体に対して、ハッシュを施して、復号検証値Ａ（６４５ａ）を生成する。
【０２１３】
復号検証値Ａ（６４５ａ）＝Ｈａｓｈ（暗号化アプリ１１０ｅ｜｜第一中間アプリ１１０ｄａ）
ここで、一例として、ハッシュＳＨＡ−１を用いる。しかし、これには限定されない。ＳＨＡ−２、ＳＨＡ−３やブロック暗号を用いたＣＢＣ−ＭＡＣ（Cipher Block Chaining - Message Authentication Code）などを用いるとしてもよい。
【０２１４】
また、Ｈａｓｈ（ｘ）は、データｘに対して、ハッシュを施して生成したハッシュ値を示し、（ａ｜｜ｂ）は、データａとデータｂとをこの順序で結合して生成した結合体を示す。
【０２１５】
暗号化アプリ１１１ｅ、１１２ｅ、・・・、１１４ｅについても同様にして、復号検証値Ｂ（６４５ｂ）、復号検証値Ｃ（６４５ｃ）、復号検証値Ｄ（６４５ｄ）及び復号検証値Ｅ（６４５ｅ）を生成する。
【０２１６】
復号検証値Ｂ（６４５ｂ）＝Ｈａｓｈ（暗号化アプリ１１１ｅ｜｜第一中間アプリ１１１ｄａ）
復号検証値Ｃ（６４５ｃ）＝Ｈａｓｈ（暗号化アプリ１１２ｅ｜｜第一中間アプリ１１２ｄａ）
復号検証値Ｄ（６４５ｄ）＝Ｈａｓｈ（暗号化アプリ１１３ｅ｜｜第一中間アプリ１１３ｄａ）
復号検証値Ｅ（６４５ｅ）＝Ｈａｓｈ（暗号化アプリ１１４ｅ｜｜第一中間アプリ１１４ｄａ）
次に、第二復号部分処理６５２について、検証基データ生成部６０９は、第一中間アプリ１１０ｄａ及び第二中間アプリ１１０ｄｂをこの順序で結合して、結合体を生成し、生成した結合体に対して、ハッシュを施して、復号検証値Ｆ（６４５ｆ）を生成する。
【０２１７】
復号検証値Ｆ（６４５ｆ）＝Ｈａｓｈ（第一中間アプリ１１０ｄａ｜｜第二中間アプリ１１０ｄｂ）
第一中間アプリ１１１ｄａ、１１２ｄａ、・・・、１１４ｄａについても、同様にして、復号検証値Ｇ（６４５ｇ）、復号検証値Ｈ（６４５ｈ）、復号検証値Ｉ（６４５ｉ）及び復号検証値Ｊ（６４５ｊ）を生成する。
【０２１８】
復号検証値Ｇ（６４５ｇ）＝Ｈａｓｈ（第一中間アプリ１１１ｄａ｜｜第二中間アプリ１１１ｄｂ）
復号検証値Ｈ（６４５ｈ）＝Ｈａｓｈ（第一中間アプリ１１２ｄａ｜｜第二中間アプリ１１２ｄｂ）
復号検証値Ｉ（６４５ｉ）＝Ｈａｓｈ（第一中間アプリ１１３ｄａ｜｜第二中間アプリ１１３ｄｂ）
復号検証値Ｊ（６４５ｊ）＝Ｈａｓｈ（第一中間アプリ１１４ｄａ｜｜第二中間アプリ１１４ｄｂ）
次に、第三復号部分処理６５３について、検証基データ生成部６０９は、第二中間アプリ１１０ｄｂ及び復号アプリ１１０ｄをこの順序で結合して、結合体を生成し、生成した結合体に対して、ハッシュを施して、復号検証値Ｋ（６４５ｋ）を生成する。
【０２１９】
復号検証値Ｋ（６４５ｋ）＝Ｈａｓｈ（第二中間アプリ１１０ｄｂ｜｜復号アプリ１１０ｄ）
第二中間アプリ１１１ｄｂ、１１２ｄｂ、・・・、１１４ｄｂについても、同様にして、復号検証値Ｌ（６４５ｌ）、復号検証値Ｍ（６４５ｍ）、復号検証値Ｎ（６４５ｎ）及び復号検証値Ｏ（６４５ｏ）を生成する。
【０２２０】
復号検証値Ｌ（６４５ｌ）＝Ｈａｓｈ（第二中間アプリ１１１ｄｂ｜｜復号アプリ１１１ｄ）
復号検証値Ｍ（６４５ｍ）＝Ｈａｓｈ（第二中間アプリ１１２ｄｂ｜｜復号アプリ１１２ｄ）
復号検証値Ｎ（６４５ｎ）＝Ｈａｓｈ（第二中間アプリ１１３ｄｂ｜｜復号アプリ１１３ｄ）
復号検証値Ｏ（６４５ｏ）＝Ｈａｓｈ（第二中間アプリ１１４ｄｂ｜｜復号アプリ１１４ｄ）
（ｆ）検証基データ生成部６０９は、次に示すようにして、各復号サブプロセス（復号部分処理）について、復号証明書を生成する。
【０２２１】
第一復号部分処理６５１について、検証基データ生成部６０９は、復号検証値Ａ（６４５ａ）、復号検証値Ｂ（６４５ｂ）、復号検証値Ｃ（６４５ｃ）、復号検証値Ｄ（６４５ｄ）及び復号検証値Ｅ（６４５ｅ）をこの順序で結合して、結合体を生成する。次に、生成した結合体に対して、ハッシュを施して、ハッシュ値を生成する。次に、生成したハッシュ値を証明書生成部６０５へ出力して、署名私有鍵Ｐｒｋ（６３２）を用いて、生成したハッシュ値に署名生成アルゴリズムＳｉｇｎを施して、復号処理証明書６４６ａを生成させる。
【０２２２】
復号処理証明書６４６ａ＝Ｓｉｇｎ（Ｐｒｋ、Ｈａｓｈ（Ａ｜｜Ｂ｜｜Ｃ｜｜Ｄ｜｜Ｅ））
ここで、署名生成アルゴリズムＳｉｇｎは、例えば、ＲＳＡ署名、ＤＳＡ（Digital Signature Algorithm）や楕円曲線ＤＳＡなどの公開鍵暗号をベースとした署名方式のアルゴリズムである。なお、署名生成アルゴリズムＳｉｇｎは、これらには限定されない。他にも、ＭＡＣ（Message Authentication Code）などの共通鍵暗号やハッシュ関数をベースとした署名方式のアルゴリズムであるとしてもよい。
【０２２３】
署名生成アルゴリズムに関しては、非特許文献１の１７１ページから１８７ページに詳しく説明されている。
【０２２４】
また、Ｓｉｇｎ（ｘ、ｙ）は、私有鍵ｘを用いて、データｙに対して、署名生成アルゴリズムＳｉｇｎを施して生成した署名データを示す。
【０２２５】
次に、第二復号部分処理６５２について、検証基データ生成部６０９は、復号検証値Ｆ（６４５ｆ）、復号検証値Ｇ（６４５ｇ）、復号検証値Ｈ（６４５ｈ）、復号検証値Ｉ（６４５ｉ）及び復号検証値Ｊ（６４５ｊ）をこの順序で結合して、結合体を生成する。次に、生成した結合体に対して、ハッシュを施して、ハッシュ値を生成する。次に、生成したハッシュ値を証明書生成部６０５へ出力して、署名私有鍵Ｐｒｋ（６３２）を用いて、生成したハッシュ値に署名生成アルゴリズムＳｉｇｎを施して、復号処理証明書６４６ａを生成させる。
【０２２６】
復号処理証明書６４６ｂ＝Ｓｉｇｎ（Ｐｒｋ、Ｈａｓｈ（Ｆ｜｜Ｇ｜｜Ｈ｜｜Ｉ｜｜Ｊ））
次に、第三復号部分処理６５３について、検証基データ生成部６０９は、復号検証値Ｋ（６４５ｋ）、復号検証値Ｌ（６４５ｌ）、復号検証値Ｍ（６４５ｍ）、復号検証値Ｎ（６４５ｎ）及び復号検証値Ｏ（６４５ｏ）をこの順序で結合して、結合体を生成する。次に、生成した結合体に対して、ハッシュを施して、ハッシュ値を生成する。次に、生成したハッシュ値を証明書生成部６０５へ出力して、署名私有鍵Ｐｒｋ（６３２）を用いて、生成したハッシュ値に署名生成アルゴリズムＳｉｇｎを施して、復号処理証明書６４６ｃを生成させる。
【０２２７】
復号処理証明書６４６ｃ＝Ｓｉｇｎ（Ｐｒｋ、Ｈａｓｈ（Ｋ｜｜Ｌ｜｜Ｍ｜｜Ｎ｜｜Ｏ））
（ｇ）検証基データ生成部６０９は、第一復号部分処理６５１について、識別情報「１１０」、暗号化アプリ１１０ｅ及び復号検証値Ａ（６４５ａ）を第一組とし、識別情報「１１１」、暗号化アプリ１１１ｅ及び復号検証値Ｂ（６４５ｂ）を第二組とし、識別情報「１１２」、暗号化アプリ１１２ｅ及び復号検証値Ｃ（６４５ｃ）を第三組とし、識別情報「１１３」、暗号化アプリ１１３ｅ及び復号検証値Ｄ（６４５ｄ）を第四組とし、識別情報「１１４」、暗号化アプリ１１４ｅ及び復号検証値Ｅ（６４５ｅ）を第五組とし、判定情報「３」、第一組、第二組、・・・、第五組及び復号処理証明書６４６ａを含む第一復号部分処理データ６４１を生成する。
【０２２８】
次に、検証基データ生成部６０９は、第二復号部分処理６５２について、識別情報「１１０」、第一中間アプリ１１０ｄａ及び復号検証値Ｆ（６４５ｆ）を第一組とし、識別情報「１１１」、第一中間アプリ１１１ｄａ及び復号検証値Ｇ（６４５ｇ）を第二組とし、識別情報「１１２」、第一中間アプリ１１２ｄａ及び復号検証値Ｈ（６４５ｈ）を第三組とし、識別情報「１１３」、第一中間アプリ１１３ｄａ及び復号検証値Ｉ（６４５ｉ）を第四組とし、識別情報「１１４」、第一中間アプリ１１４ｄａ及び復号検証値Ｊ（６４５ｊ）を第五組とし、判定情報「３」、第一組、第二組、・・・、第五組及び復号処理証明書６４６ｂを含む第二復号部分処理データ６４２を生成する。
【０２２９】
次に、検証基データ生成部６０９は、第三復号部分処理６５３について、識別情報「１１０」、第二中間アプリ１１０ｄｂ及び復号検証値Ｋ（６４５ｋ）を第一組とし、識別情報「１１１」、第二中間アプリ１１１ｄｂ及び復号検証値Ｌ（６４５ｌ）を第二組とし、識別情報「１１２」、第二中間アプリ１１２ｄｂ及び復号検証値Ｍ（６４５ｍ）を第三組とし、識別情報「１１３」、第二中間アプリ１１３ｄｂ及び復号検証値Ｎ（６４５ｎ）を第四組とし、識別情報「１１４」、第二中間アプリ１１４ｄｂ及び復号検証値Ｏ（６４５ｏ）を第五組とし、判定情報「３」、第一組、第二組、・・・、第五組及び復号処理証明書６４６ｃを含む第三復号部分処理データ６４３を生成する。
【０２３０】
（ｈ）次に、検証基データ生成部６０９は、第一復号部分処理データ６４１、第二復号部分処理データ６４２及び第三復号部分処理データ６４３を含む検証基データ６４０を生成する。
【０２３１】
このようにして生成した検証基データ６４０を図５に示す。
【０２３２】
図５に一例として示すように、検証基データ６４０は、第一復号部分処理データ６４１、第二復号部分処理データ６４２及び第三復号部分処理データ６４３を含む。
【０２３３】
第一復号部分処理データ６４１は、判定情報「３」、第一組、第二組、・・・、第五組及び復号処理証明書６４６ａを含む。第一組は、識別情報「１１０」、暗号化アプリ１１０ｅ及び復号検証値Ａ（６４５ａ）を含む。第二組は、識別情報「１１１」、暗号化アプリ１１１ｅ及び復号検証値Ｂ（６４５ｂ）を含む。第三組は、識別情報「１１２」、暗号化アプリ１１２ｅ及び復号検証値Ｃ（６４５ｃ）を含む。第四組は、識別情報「１１３」、暗号化アプリ１１３ｅ及び復号検証値Ｄ（６４５ｄ）を含む。第五組は、識別情報「１１４」、暗号化アプリ１１４ｅ及び復号検証値Ｅ（６４５ｅ）を含む。
【０２３４】
第二復号部分処理データ６４２及び第三復号部分処理データ６４３についても、第一復号部分処理データ６４１と同様の構成を有している。
【０２３５】
（証明書生成部６０５）
証明書生成部６０５は、検証基データ生成部６０９から署名対象とするデータを受け取る。データを受け取ると、証明書生成部６０５は、署名私有鍵保持部６０６から署名私有鍵Ｐｒｋ（６３２）を読み出す。
【０２３６】
次に、証明書生成部６０５は、署名生成アルゴリズムＳｉｇｎによるデジタル署名により、読み出した署名私有鍵Ｐｒｋ（６３２）を用いて、受け取ったデータに対する署名データを生成し、生成した署名データを検証基データ生成部６０９へ出力する。                
【０２３７】
ここで、署名生成アルゴリズムＳｉｇｎについては、上述した通りである。
【０２３８】
（分散鍵生成部６１０）
分散鍵生成部６１０は、以下に示すようにして、暗復号鍵保持部６０７により保持されている暗復号鍵ｄ（６３１）を分解し、複数個の分散鍵を生成する。
【０２３９】
分散鍵を生成する方法の一例として、分散鍵生成部６１０は、生成された全ての分散鍵を加算すると、元の暗復号鍵ｄ（６３１）が生成できるように、複数個の分散鍵を生成する。
【０２４０】
例えば、暗復号鍵ｄ（６３１）を、５個の分散鍵に分解する場合、ｄ＝ｄ１＋ｄ２＋ｄ３＋ｄ４＋ｄ５となるように分散鍵ｄ１、ｄ２、・・・、ｄ５を生成する。
【０２４１】
この場合には、一例として、分散鍵生成部６１０は、乱数ｒ１を生成して、分散鍵ｄ１とし、乱数ｒ２を生成して、分散鍵ｄ２とし、乱数ｒ３を生成して、分散鍵ｄ３とし、乱数ｒ４を生成して、分散鍵ｄ４とする。
【０２４２】
ｄ１＝ｒ１
ｄ２＝ｒ２
ｄ３＝ｒ３
ｄ４＝ｒ４
次に、分散鍵生成部６１０は、ｄ５を、ｄ５＝ｄ−（ｄ１＋ｄ２＋ｄ３＋ｄ４）により、算出する。
【０２４３】
このようにして、暗復号鍵ｄから、分散鍵ｄ１、ｄ２、ｄ３、ｄ４及びｄ５を生成するので、ｄ＝ｄ１＋ｄ２＋ｄ３＋ｄ４＋ｄ５を満たすこととなる。
【０２４４】
また、分散鍵生成部６１０は、暗復号鍵保持部６０７により保持されている暗復号鍵ｄ（６３１）を秘密情報とし、暗復号鍵ｄ（６３１）から秘密分散法を用いて生成した複数個の分散情報をそれぞれ分散鍵としてもよい。秘密分散法は、非特許文献１に記載されている。
【０２４５】
一例として、図７に示すように、分散鍵生成部６１０は、ランダムに整数ａ1 、ａ2 、・・・、ａn-1 を選択し、図７の式６に示すように、（ｎ−１）次多項式を設定する。
【０２４６】
式６において、ｄは、定数項であり、ｄは、暗復号鍵である。整数ａ1 、ａ2 、・・・、ａn-1 は、それぞれ、次数が１以上の項の係数である。分散鍵生成部６１０は、図７の式６に示す（ｎ−１）次多項式を用いて、式１〜式５に示すように、アプリ毎に、分散鍵ｄｊ＝ｆ（ｊ）（ｊ＝１、２、・・・、ｎ）を生成する。
【０２４７】
次に、分散鍵生成部６１０は、生成した複数個の分散鍵ｄ１、ｄ２、・・・、ｄ５を、制御部６０３、送信部６０２、通信部２３０及びネットワーク２０を介して、機器１００の検知モジュール群１３０へ送信する。
【０２４８】
（３）通信部２３０
通信部２３０は、ネットワーク２０を介して、機器１００と通信を行う。通信部２３０は、機器１００から受信した情報に応じて、管理装置２００内部の各部に対して当該受信した情報を出力する。また、管理装置２００内部の各部から受け取った指示や情報を機器１００に送信する。具体的には、ソフトウェア配布部２２０から受け取った指示や通知などを機器１００に送信したり、機器１００から受け取った改ざん検出の検出結果などの情報を判断部２１０に送信したりする。
【０２４９】
なお、通信部２３０は、機器１００と管理装置２００との間の通信においては、データを暗号化して通信するセキュリティの確保された通信路を用いるとしてもよい。
【０２５０】
２．３  機器１００の構成
機器１００は、図２に示すように、内部にアプリ１１０、１１１、１１２、１１３、１１４、保護制御モジュール１２０及び検知モジュール群１３０などのコンピュータプログラムを記憶しており、機器１００においては、これらのコンピュータプログラムが動作する。
【０２５１】
（１）機器１００のハードウェア構成
機器１００は、図８に示すように、ＣＰＵ１７１、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）１７２、ＲＡＭ１７３、ＮＩＣ１７４、バス１７５及びその他のデバイス等を含んで構成されている。ＣＰＵ１７１、ＥＥＰＲＯＭ１７２、ＲＡＭ１７３及びＮＩＣ１７４は、バス１７５を介して、相互に通信可能に接続されている。
【０２５２】
ＥＥＰＲＯＭ１７２は、不揮発性の半導体メモリであり、ブートローダ１９０、保護制御モジュール１２０、検知モジュール１３１、１３２、・・・、１３５、アプリ１１０、１１１、・・・、１１４及びＯＳ（Operating System）１８０などのコンピュータプログラムを格納するための領域を備えている。ＥＥＰＲＯＭ１７２に格納されているコンピュータプログラムがＲＡＭ１７３にロードされ、ＲＡＭ１７３にロードされたコンピュータプログラムをＣＰＵ１７１が実行することにより、各コンピュータプログラムが有する機能が実現される。
【０２５３】
ＲＡＭ１７３は、揮発性の半導体メモリであり、上記のコンピュータプログラム及びその他のデータを記憶するための領域を備えている。ＲＡＭ１７３には、保護制御モジュール１２０、検知モジュール１３１、１３２、・・・、１３５、アプリ１１０、１１１、・・・、１１４及びＯＳ１８０などのコンピュータプログラムルがロードされる。また、ＲＡＭ１７３は、ＣＰＵ１７１のワークエリアとして用いられる。
【０２５４】
ＮＩＣ１７４は、ネットワーク２０に接続するための拡張カードである。
【０２５５】
（２）機器１００のソフトウェア構成
次に、機器１００におけるソフトウェア構成について説明する。
【０２５６】
機器１００においては、図９に示すように、ブートローダ１９０、保護制御モジュール１２０、ＯＳ１８０及びアプリ１１０、１１１、・・・、１１４が記憶されている。ＯＳ１８０は、検知モジュール群１３０を含み、検知モジュール群１３０は、検知モジュール１３１、１３２、１３３、１３４及び１３５を含む。
【０２５７】
機器１００の電源が投入されると、最初に、ブートローダ１９０が動作し、続いて、保護制御モジュール１２０がＲＡＭ１７３にロードされ、保護制御モジュール１２０が動作可能となる。続いて、ＯＳ１８０がＲＡＭ１７３にロードされ、ＯＳ１８０が動作する。このとき、ＯＳ１８０には、検知モジュール群１３０が含まれているので、検知モジュール群１３０が動作可能となる。次に、アプリ１１０、１１１、・・・、１１４のいずれか又は全てがＲＡＭ１７３にロードされ、アプリ１１０、１１１、・・・、１１４が実行可能となる。
【０２５８】
（３）保護制御モジュール１２０
保護制御モジュール１２０は、攻撃者により各アプリが解析されないように、また、秘匿データが各アプリから抜き取られないように、各アプリを保護するための機能を有し、これらの機能が発揮されるように制御するためのコンピュータプログラムである。なお、秘匿データは、後述するように、各アプリによって保持されている秘密にすべきデータである。
【０２５９】
保護制御モジュール１２０により、アプリを保護するための一の機能は、復号ロード機能である。復号ロード機能は、アプリを利用しないときには、当該アプリを暗号化して保存しておき、アプリを利用するときにのみ、暗号化アプリを復号して平文のアプリを生成し、生成した平文のアプリをメモリへロードする。また、別の機能は、アプリが改ざんされているか否かを判断する改ざん検出機能である。さらに、別の機能は、デバッガなどの解析ツールが動作している否かを判断する解析ツール検出機能である。
【０２６０】
保護制御モジュール１２０は、これらの機能による動作を制御し、各アプリが攻撃者による解析や攻撃などがされているか否かを判断する。攻撃者による攻撃などを検出したときには、保護制御モジュール１２０は、攻撃が検出されたアプリの動作を停止する。また、当該アプリが利用していたメモリ、特に秘匿データが記録されたメモリ領域をクリアするなどの処理を行う。例えば、当該メモリ領域を「０」で埋めつくす。こうして、秘匿データの漏洩を防止する。
【０２６１】
保護制御モジュール１２０は、複数の検知モジュール１３１、１３２、・・・、１３５からそれぞれ分散鍵を取得し、次に、取得した複数の前記分散鍵を統合して、暗復号鍵を復元し、前記暗復号鍵を用いて、暗号化されたアプリを復号し、暗号化されたアプリの復号が終了した後、前記暗復号鍵を消去する。
【０２６２】
保護制御モジュール１２０は、図１０に示すように、受信部３０１、送信部３０２、制御部３０３、復号ロード部３０４、改ざん検出部３０５、解析ツール検出部３０６、暗復号鍵復元部３０７、検証基データ保持部３０８及び検証データ生成部３０９を含んでいる。
【０２６３】
また、保護制御モジュール１２０には、改ざん検出用証明書３３１が添付されている。
【０２６４】
（改ざん検出用証明書３３１）
改ざん検出用証明書３３１は、保護制御モジュール１２０自体の改ざんを検出するための証明書である。改ざん検出用証明書３３１は、保護制御モジュール１２０の全体に対して、ハッシュＳＨＡ−１を施して、ハッシュ値を生成し、生成したハッシュ値に対して、管理装置２００によって保持されている署名私有鍵６３２を用いて、署名生成アルゴリズムＳｉｇｎによるデジタル署名を施して、生成した署名データを含んでいる。
【０２６５】
ここで、署名生成アルゴリズムＳｉｇｎについては、上述した通りである。
【０２６６】
また、ハッシュＳＨＡ−１を用いるとしているが、これには限定されない。ＳＨＡ−２、ＳＨＡ−３やブロック暗号を用いたＣＢＣ−ＭＡＣ（Cipher Block Chaining - Message Authentication Code）などを用いるとしてもよい。
【０２６７】
（受信部３０１）
受信部３０１は、各検知モジュールから、分散情報や各種依頼などを受信する。
【０２６８】
（送信部３０２）
送信部３０２は、各検知モジュール１３１、１３２、・・・、１３５へ、各種依頼などを送信する。
【０２６９】
（制御部３０３）
制御部３０３は、復号ロード部３０４、改ざん検出部３０５及び解析ツール検出部３０６を制御して動作させ、各アプリが攻撃者により攻撃されている場合に、攻撃を検出する。
【０２７０】
制御部３０３は、機器１００の検知モジュール１３１、１３２、・・・、１３５から、それぞれ、受信部３０１を介して、分散鍵を取得する。
【０２７１】
制御部３０３は、暗号化アプリの復号が終了した後、暗復号鍵復元部３０７により生成され、暗号化アプリの復号に用いられた暗復号鍵６３１を消去する。
【０２７２】
制御部３０３は、前記復号部分処理毎に、当該復号部分処理からの出力データ及び受け取った前記検証データを検知モジュールへ出力する。一例として、制御部３０３は、送信部３０２を介して、第一中間アプリ及び検証データを、検知モジュール１３１へ送信し、第二中間アプリ及び検証データを、検知モジュール１３２へ送信し、復号アプリ及び検証データを、検知モジュール１３３へ送信する。
【０２７３】
また、制御部３０３は、送信部３０２を介して、アプリの識別情報を、一例として、検知モジュール１３１、検知モジュール１３２及び検知モジュール１３３へ送信する。
【０２７４】
（復号ロード部３０４）
復号ロード部３０４は、機器１００内部に保持されている暗号化アプリ１１０ｅ、１１１ｅ、・・・、１１４ｅを実行するときに、暗復号鍵復元部３０７により復元された暗復号鍵６３１を用いて、復号アルゴリズムＤにより、暗号化アプリ１１０ｅ、１１１ｅ、・・・、１１４ｅを復号して、平文のアプリ１１０、１１１、・・・、１１４を生成し、生成したアプリ１１０、１１１、・・・、１１４をＲＡＭ１７３上にロードする処理を行う。
【０２７５】
また、例えば、アプリ１１０の実行中に、他のアプリ１１２へのコンテキストスイッチが発生したときに、暗復号鍵６３１を用いて、暗号化アルゴリズムＥにより、ＲＡＭ１７３上に記憶されているアプリ１１０に関係するデータを暗号化して暗号化データを生成し、生成した暗号化データを一時的に記憶しておき、再び、アプリ１１０へコンテキストスイッチしたときに、記憶している暗号化データを復号して、データを生成し、生成したデータをＲＡＭ１７３上に格納する処理を行う。なお、コンテキストスイッチとは、複数のモジュールが１つのＣＰＵを共有できるように、ＣＰＵの状態（コンテキスト）を保存したり復元したりする過程のことである。
【０２７６】
また、復号ロード部３０４は、暗号化されたアプリに対して、復号アルゴリズムＤにより、複数の復号部分処理から構成される復号処理を施す。ここで、複数の復号部分処理から構成される復号処理については、既に、図６を用いて説明している。
【０２７７】
なお、復号ロード部３０４において用いられる暗号化アルゴリズムＥ及び復号アルゴリズムＤは、一例として、秘密鍵暗号方式のＡＥＳである。また、ＤＥＳであるとしてもよい。
【０２７８】
（改ざん検出部３０５）
改ざん検出部３０５は、各アプリが改ざんされているかどうかを確認する改ざん検出処理を実行する。改ざん検出処理は、各アプリに付加されている改ざん検出用の証明書を用いることにより、行われる。なお、ＭＡＣ値を比較することにより、改ざん検出を行うとしてもよい。
【０２７９】
（解析ツール検出部３０６）
解析ツール検出部３０６は、デバッガなどの解析ツールがインストールされたり、動作したりしたときに、それらを検出する。不正な攻撃者が各アプリを攻撃するために、解析ツールをインストールしたり、動作させることが想定されるからである。例えば、デバッガなどの解析ツールが格納されているファイル名を検索したり、デバッガが使用する特殊なレジスタが使用されているか否かを調べたり、デバッガが設定する割り込みを検出したりする方法などを用いる。
【０２８０】
（暗復号鍵復元部３０７）
暗復号鍵復元部３０７は、図１１に一例として示すように、複数の検知モジュールから受信した複数の分散鍵を統合して、各アプリを暗復号するための暗復号鍵６３１を復元する。
【０２８１】
上述したように、分散鍵生成部６１０において、生成された全ての分散鍵を加算すると、元の暗復号鍵ｄ（６３１）が生成できるように、複数個の分散鍵を生成した場合には、暗復号鍵復元部３０７は、全ての分散鍵を加算することにより、元の暗復号鍵６３１を復元する。
【０２８２】
例えば、ｄ＝ｄ１＋ｄ２＋ｄ３＋ｄ４＋ｄ５となるように、暗復号鍵ｄから複数の分散鍵ｄ１、ｄ２、ｄ３、ｄ４、ｄ５を生成した場合、ｄ＝ｄ１＋ｄ２＋ｄ３＋ｄ４＋ｄ５により、暗復号鍵を復元する。
【０２８３】
秘密分散法を用いて、暗復号鍵を分解した場合には、秘密分散法による秘密情報の復元方法により、暗復号鍵を復元する。一例として、図７の式１〜式５に示すようして、分散鍵を生成した場合には、ｎ個の分散鍵を収集すると、ｎ−１次の多項式ｙ＝ｆ（ｘ）のｎ個の座標（αj 、ｆ（αj ））から、多項式ｙ＝ｆ（ｘ）が一意に定まる。その結果、多項式の定数項ｄを求めることができる。
【０２８４】
秘密分散法による秘密情報の復元に関しては非特許文献１に詳しく説明されている。
【０２８５】
（検証基データ保持部３０８）
検証基データ保持部３０８は、管理装置２００から受信した検証基データ６４０を保持する。検証基データ６４０のデータ構造については、上述した通りである。
【０２８６】
（検証データ生成部３０９）
検証データ生成部３０９は、検証基データ保持部３０８に保持されている検証基データ６４０から、第一復号部分処理データ６４１を抽出し、抽出した第一復号部分処理データ６４１を検証データ３４１とする。また、検証基データ６４０から、第二復号部分処理データ６４２を抽出し、抽出した第一復号部分処理データ６４１を検証データ３４２とする。また、検証基データ６４０から、第三復号部分処理データ６４３を抽出し、抽出した第一復号部分処理データ６４１を検証データ３４３とする。
【０２８７】
図１２〜図１４に、それぞれ、検証データ３４１、検証データ３４２及び検証データ３４３のデータ構造の一例を示す。
【０２８８】
検証データ生成部３０９は、一例として、生成した検証データ３４１を、制御部３０３及び送信部３０２を介して、検知モジュール１３１へ送信する。検知モジュール１３１は、検証データ３４１を保持する。
【０２８９】
また、検証データ生成部３０９は、一例として、生成した検証データ３４２を、制御部３０３及び送信部３０２を介して、検知モジュール１３２へ送信する。検知モジュール１３２は、検証データ３４２を保持する。
【０２９０】
さらに、検証データ生成部３０９は、一例として、生成した検証データ３４３を、制御部３０３及び送信部３０２を介して、検知モジュール１３３へ送信する。検知モジュール１３３は、検証データ３４３を保持する。
【０２９１】
（４）検知モジュール群１３０
検知モジュール群１３０は、図２に示すように、５個の検知モジュール１３１、１３２、１３３、１３４及び１３５を含んでいる。
【０２９２】
検知モジュール１３１、１３２、１３３、１３４及び１３５は、それぞれ、保護制御モジュール１２０が改ざんされているか否かを検出する機能を持つコンピュータプログラムである。
【０２９３】
各検知モジュールは、管理装置２００から分散鍵を取得して、内部に記憶する。また、各検知モジュールは、保護制御モジュール１２０に対する改ざんの検出結果を、ネットワーク２０を介して、管理装置２００へ送信する。
【０２９４】
検知モジュール１３１は、図１５に示すように、受信部４０１、送信部４０２、制御部４０３、検証部４０４、検証データ保持部４０５及び分散鍵保持部４０６から構成される。
【０２９５】
検知モジュール１３２、１３３、１３４、１３５も、検知モジュール１３１と同様の構成を有するので、これらについての説明を省略する。
【０２９６】
（受信部４０１）
受信部４０１は、管理装置２００から、各種指示を受信する。また、他のモジュールへ依頼した処理の結果や、他の検知モジュールによる保護制御モジュール１２０に対する改ざんの検出結果を受信する。
【０２９７】
（送信部４０２）
送信部４０２は、管理装置２００、保護制御モジュール１２０、他の検知モジュールへ、各種処理結果などのデータを送信する。
【０２９８】
（制御部４０３）
制御部４０３は、受信部４０１が受信した各種指示や通知に基づいて、検証部４０４を制御し、保護制御モジュール１２０に対する検証処理を行う。
【０２９９】
また、制御部４０３は、保護制御モジュール１２０から、受信部４０１を介して、当該検知モジュールに対応する復号部分処理について、当該復号部分処理からの出力データ及び当該復号部分処理について生成された検証データを受け取る。一例として、検知モジュール１３１の制御部４０３は、第一中間アプリ及び検知モジュール１３１に対応する復号部分処理について生成された検証データを受け取る。また、検知モジュール１３２の制御部４０３は、第二中間アプリ及び検知モジュール１３２に対応する復号部分処理について生成された検証データを受け取る。さらに、検知モジュール１３３の制御部４０３は、復号アプリ及び検知モジュール１３３に対応する復号部分処理について生成された検証データを受け取る。
【０３００】
次に、制御部４０３は、当該検知モジュールに対応する復号部分処理について、受け取った出力データ及び検証データを検証部４０４へ出力する。一例として、検知モジュール１３１の制御部４０３は、第一中間アプリ及び検知モジュール１３１に対応する復号部分処理について生成された検証データを検証部４０４へ出力する。また、検知モジュール１３２の制御部４０３は、第二中間アプリ及び検知モジュール１３２に対応する復号部分処理について生成された検証データを検証部４０４へ出力する。さらに、検知モジュール１３３の制御部４０３は、復号アプリ及び検知モジュール１３３に対応する復号部分処理について生成された検証データを検証部４０４へ出力する。
【０３０１】
（検証部４０４）
検証部４０４は、保護制御モジュール１２０が正常に動作しているか否かの検証を行う。検証部４０４は、制御部４０３から受け取った出力データ及び検証データを用いて、検証を行い、検証に失敗した場合に、その検証結果を出力する。
【０３０２】
以下に詳細に説明する。
【０３０３】
（ａ）検証部４０４は、アプリ１１０、１１１、・・・、１１４のいずれかが実行されている場合に、検証データ保持部４０５に保持されている検証データ３４１を用いて、保護制御モジュール１２０に対する検証を行う。
【０３０４】
検証部４０４は、検証データに含まれている入力データ及び受け取った出力データの両方に、検証基データ生成部６０９により用いられる一方向性の前記変換と同一の変換を施して、第二検証値を生成し、検証データに含まれる復号検証値と、生成した前記第二検証値とが一致するか否かを判断することにより、検証を行い、一致しない場合に、検証に失敗したとみなして、検証結果を出力する。
【０３０５】
ここでは、検証部４０４は、検知モジュール１３１を構成する要素であるとして説明する。また、アプリ１１０が実行されているものとする。
【０３０６】
検証部４０４は、保護制御モジュール１２０から、受信部４０１、制御部４０３を介して、アプリ１１０の識別情報、アプリ１１０の第一中間アプリ及び検証データ３４１を受け取る。
【０３０７】
次に、検証部４０４は、受け取った検証データ３４１から、受け取った識別情報に対応する暗号化アプリを抽出し、抽出した暗号化アプリと受け取った第一中間アプリとをこの順序で結合して結合体を生成し、生成した結合体にハッシュＨａｓｈを施して、ハッシュ値を算出する。
【０３０８】
次に、検証部４０４は、検証データ３４１から、受け取った識別情報に対応する復号検証値を抽出し、抽出した復号検証値と算出したハッシュ値とが一致するか否かを判断する。
【０３０９】
抽出した復号検証値と算出したハッシュ値とが一致しない場合には、検証は失敗である。
【０３１０】
抽出した復号検証値と算出したハッシュ値とが一致する場合に、受け取った検証データ３４１から、復号処理証明書を抽出し、受け取った検証データ３４１から、受け取った識別情報に対応する復号検証値以外の全ての復号検証値Ｂ、Ｃ、Ｄ、Ｅを抽出し、算出したハッシュ値と、抽出した全ての復号検証値Ｂ、Ｃ、Ｄ、Ｅとを結合して結合体を生成し、署名公開鍵Ｐｂｋを用いて、生成した結合体と抽出した復号処理証明書とに対して、署名検証アルゴリズムＶｒｆｙを施す。
【０３１１】
検出結果＝Ｖｒｆｙ（Ｐｂｋ、復号処理証明書、（ハッシュ値｜｜Ｂ｜｜Ｃ｜｜Ｄ｜｜Ｅ））
ここで、署名検証アルゴリズムＶｒｆｙは、署名生成アルゴリズムＳｉｇｎに対応する署名検証アルゴリズムであり、例えば、ＲＳＡ署名、ＤＳＡ（Digital Signature Algorithm）や楕円曲線ＤＳＡなどの公開鍵暗号をベースとした署名方式のアルゴリズムである。
【０３１２】
また、署名公開鍵Ｐｂｋは、署名私有鍵Ｐｒｋ（６３２）に対応し、管理装置２００に割り当てられた公開鍵暗号方式の公開鍵である。
【０３１３】
また、Ｖｒｆｙ（ｘ、ｙ、ｚ）は、公開鍵ｘを用いて、署名データｙ及びデータｚに対して、署名検証アルゴリズムＶｒｆｙを施して得られた検出結果を示す。検出結果は、成功及び失敗の何れか一方を示す。
【０３１４】
復号検証値による検証及び復号処理証明書による検証の両方に成功した場合に、検証データを用いた検証に成功したものとする。また、復号検証値による検証及び復号処理証明書による検証のいずれか一方に、失敗した場合に、検証データを用いた検証に失敗したものとする。
【０３１５】
なお、検証部４０４が検知モジュール１３２を構成する要素である場合には、検証部４０４は、保護制御モジュール１２０から、アプリ１１０の識別情報、アプリ１１０の第二中間アプリ及び検証データ３４２を受け取る。次に、受け取った検証データ３４２から、受け取った識別情報に対応する第一中間アプリを抽出し、抽出した第一中間アプリと受け取った第二中間アプリとをこの順序で結合して結合体を生成し、生成した結合体にハッシュＨａｓｈを施して、ハッシュ値を算出する。次に、検証データ３４２から、受け取った識別情報に対応する復号検証値を抽出し、抽出した復号検証値と算出したハッシュ値とが一致するか否かを判断する。また、受け取った検証データ３４２から、復号処理証明書を抽出し、受け取った検証データ３４２から、受け取った識別情報に対応する復号検証値以外の全ての復号検証値Ｇ、Ｈ、Ｉ、Ｊを抽出し、算出したハッシュ値と、抽出した全ての復号検証値Ｇ、Ｈ、Ｉ、Ｊとを結合して結合体を生成し、署名公開鍵Ｐｂｋを用いて、生成した結合体と抽出した復号処理証明書とに対して、署名検証アルゴリズムＶｒｆｙを施す。
【０３１６】
また、検証部４０４が検知モジュール１３３を構成する要素である場合には、検証部４０４は、保護制御モジュール１２０から、アプリ１１０の識別情報、アプリ１１０の復号アプリ及び検証データ３４３を受け取る。次に、受け取った検証データ３４３から、受け取った識別情報に対応する第二中間アプリを抽出し、抽出した第二中間アプリと受け取った復号アプリとをこの順序で結合して結合体を生成し、生成した結合体にハッシュＨａｓｈを施して、ハッシュ値を算出する。次に、検証データ３４３から、受け取った識別情報に対応する復号検証値を抽出し、抽出した復号検証値と算出したハッシュ値とが一致するか否かを判断する。また、受け取った検証データ３４３から、復号処理証明書を抽出し、受け取った検証データ３４３から、受け取った識別情報に対応する復号検証値以外の全ての復号検証値Ｌ、Ｍ、Ｎ、Ｏを抽出し、算出したハッシュ値と、抽出した全ての復号検証値Ｌ、Ｍ、Ｎ、Ｏとを結合して結合体を生成し、署名公開鍵Ｐｂｋを用いて、生成した結合体と抽出した復号処理証明書とに対して、署名検証アルゴリズムＶｒｆｙを施す。
【０３１７】
また、アプリ１１１、１１２、・・・、１１４を実行する場合においても、上記と同様である。
【０３１８】
（ｂ）また、検証部４０４は、アプリ１１０、１１１、・・・、１１４のいずれかが実行されている場合に、以下に示すようにして、復号部分処理を識別する識別子を用いて、検証を行う。
【０３１９】
検証部４０４は、他のアプリから受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報の重複性、並びに、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する識別情報と、複数の前記復号部分処理をそれぞれ識別する識別情報との網羅性について検証を行う。検証部４０４は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報に重複がある場合、又は、受け取った前記識別情報及び自身に対応する前記復号部分処理を識別する前記識別情報が、複数の復号部分処理を識別する全ての識別情報を網羅していない場合に、検証に失敗した旨を示す検証結果を出力する。
【０３２０】
ここでは、検証部４０４は、検知モジュール１３１を構成する要素であるとして説明する。
【０３２１】
検証部４０４は、検知モジュール１３２及び１３３から、それぞれ、復号部分処理を識別する識別子を受信する。
【０３２２】
次に、検証部４０４は、自身が検証に用いた復号部分処理を識別する識別子と、他の複数の検知モジュールからそれぞれ受信した複数の識別子とを用いて、全ての復号部分処理に対応する検証が何れかの検知モジュールによりなされるか否かを検証する。
【０３２３】
例えば、検証部４０４が検証に用いた復号部分処理を識別する識別子が、図６に示す第一復号部分処理６５１を識別するものであり、他の検知モジュールから２個の識別子を受信し、それぞれの識別子が、図６に示す第二復号部分処理６５２及び第三復号部分処理６５３を識別するものである場合に、全ての復号部分処理に対応する検証がなされたと判断する。
【０３２４】
また、例えば、検証部４０４は、自身が検証に用いた復号部分処理を識別する識別子及び受信した複数の識別子のうちに、一致するものが存在する場合に、全ての復号部分処理に対応する検証がなされていないと判断する。
【０３２５】
また、例えば、検証部４０４は、検証部４０４自身が検証に用いた復号部分処理を識別する識別子及び受信した複数の識別子のうち、図６に示す各復号部分処理を識別する識別子が存在しなければ、全ての復号部分処理に対応する検証がなされていないと判断する。
【０３２６】
全ての復号部分処理に対応する検証がなされた場合に、復号部分処理の識別子による検証に成功したものとし、全ての復号部分処理に対応する検証がなされていない場合に、復号部分処理の識別子による検証に失敗したものとする。
【０３２７】
（ｃ）さらに、検証部４０４は、アプリ１１０、１１１、・・・、１１４のいずれも実行されていない場合に、以下に示すようにして、保護制御モジュール１２０に付加されている改ざん検出用証明書３３１を用いて改ざん検出処理を行う。
【０３２８】
検証部４０４は、保護制御モジュール１２０の全体に対して、ハッシュＳＨＡ−１を施して、ハッシュ値を生成し、署名公開鍵Ｐｂｋを用いて、生成したハッシュ値及び改ざん検出用証明書３３１に対して、署名検証アルゴリズムＶｒｆｙによるデジタル署名検証を施す。
【０３２９】
ここで、予め計算されたメッセージ認証コード（Message Authentication Code）（以下、「ＭＡＣ値」という。）を用いてもよい。ＭＡＣ値を用いる場合、検証部４０４が保持する検証鍵を用いてＭＡＣ値を生成し、計算されたＭＡＣ値と管理装置２００から予め受信し、保持していたＭＡＣ値とを比較することにより改ざん検出を行う。
【０３３０】
（検証データ保持部４０５）
検証データ保持部４０５は、保護制御モジュール１２０の復号ロード部３０４が正常に動作するか否かを検証するための検証データ３４１を保持する。検証データ３４１は、保護制御モジュール１２０から送信されたものである。
【０３３１】
なお、検知モジュール１３２の検証データ保持部４０５は、検証データ３４２を保持する。また、検知モジュール１３３の検証データ保持部４０５は、検証データ３４３を保持する。
【０３３２】
（５）アプリ１１０、１１１、・・・、１１４
アプリ１１０、１１１、・・・、１１４は、それぞれ、機器１００を使用する利用者に、様々な機能を提供するためのコンピュータプログラムである。
【０３３３】
例えば、アプリ１１０は、ネットワーク２０を介して、コンテンツ配信サーバ装置から、音楽コンテンツや映像コンテンツを購入し、購入したコンテンツを再生するためのコンピュータプログラムである。また、アプリ１１１は、金融機関のサーバ装置にアクセスし、残高確認や振り込みなどのネットバンキングを利用するためのコンピュータプログラムである。
【０３３４】
各アプリは、コンテンツ配信サーバ装置や金融機関のサーバ装置との間で、相手の装置が正当かどうかの認証を行うための認証鍵、自身が確かに本人であることを証明するためのパスワードなど、他人に知られてはならない秘匿データを保持している。秘匿データは、悪意のある第三者（以下、「攻撃者」という。）によりアプリから抜き取られることがないようにするため、また、抜き取られた秘匿データが不正に利用されないようにするために、保護される必要がある。
【０３３５】
２．４  検知システム１０の動作
（１）全体の動作概要
検知システム１０全体の概要の動作について、図１６に示すフローチャートを用いて、説明する。
【０３３６】
検知システム１０の動作においては、図１６に示すように、機器１００が工場で製造される際に、初期設定処理として、保護制御モジュール１２０、検知モジュール群１３０、アプリ１１０、１１１、・・・、その他のコンピュータプログラムが機器１００にインストールされる。また、保護制御モジュール１２０内へ検証基データ６４０が埋め込まれる（ステップＳ１００）。
【０３３７】
その後、機器１００が工場から出荷され、利用者の利用に供される。
【０３３８】
利用者により機器１００が利用される際には、機器１００内部では、検知処理として、保護制御モジュール１２０が各アプリを攻撃者による攻撃から保護し、各アプリを実行する。これと同時に、各検知モジュールは、保護制御モジュール１２０が攻撃されていないかを検証する。機器１００内部に記憶されているコンピュータプログラム（保護制御モジュール１２０及び検知モジュール群１３０）が攻撃され改ざんされた場合には、改ざんされていない検知モジュールは、これらのコンピュータプログラムが改ざんされた旨を管理装置２００に通知する。また、機器１００は、これらのコンピュータプログラムが改ざんされた旨を、当該機器１００が有する表示部に表示してもよい（ステップＳ２００）。
【０３３９】
（２）初期設定処理の動作
次に、初期設定処理について、図１７に示すシーケンス図を用いて、説明する。
【０３４０】
ここでは、検知モジュール１３１、１３２、１３３、１３４、１３５の各々が個別に行う処理を、検知モジュール群１３０が行うものとして、まとめて記載している。
【０３４１】
工場において、機器１００を製造する際に、管理装置２００のソフトウェア配布部２２０の分散鍵生成部６１０は、暗復号鍵保持部６０７により保持されている暗復号鍵６３１を分解して複数の分散鍵を生成し、複数の分散鍵を、ソフトウェア保持部６０８に保持されている検知モジュール１３１、１３２、・・・、１３５に書き込む（ステップＳ１０００）。
【０３４２】
次に、制御部６０３は、送信部６０２、通信部２３０を介して、保護制御モジュール１２０、検知モジュール群１３０、アプリ１１０、１１１、・・・、１１４及びその他の機器１００の動作に必要なコンピュータプログラムを、機器１００に送信する。これらのコンピュータプログラムには、これらのコンピュータプログラムの改ざんを検証するための証明書（改ざん検出用証明書）が付加されている。機器１００は、それぞれ、証明書が付加された保護制御モジュール１２０、検知モジュール群１３０、アプリ１１０、１１１、・・・、１１４及びその他のコンピュータプログラムを受信する（ステップＳ１００１）。
【０３４３】
機器１００のＥＥＰＲＯＭ１７２に、それぞれ証明書が付加された保護制御モジュール１２０、検知モジュール群１３０、アプリ１１０、１１１、・・・、１１４及びその他のコンピュータプログラムがインストールされる（ステップＳ１００２）。
【０３４４】
これらのコンピュータプログラムのインストールが終わると、機器１００の初期設定を行うコンピュータプログラムや、機器１００正常に動作するかをテストするためのコンピュータプログラムなどを実行し、機器１００の初期化処理を行う。また、保護制御モジュール１２０に対して、初期化指示を行う（ステップＳ１００３）。
【０３４５】
保護制御モジュール１２０は、初期化指示を受け取ると、管理装置２００に対して、検証基データ６４０の送付を依頼する（ステップＳ１００４）。  
【０３４６】
管理装置２００は、保護制御モジュール１２０から検証基データ６４０の送付の依頼を受信すると、検証基データ６４０の生成処理を実行する（ステップＳ１００５）。
【０３４７】
検証基データ６４０の生成処理が完了すると、管理装置２００は、検証基データ６４０を保護制御モジュール１２０へ送信する（ステップＳ１００６）。保護制御モジュール１２０は、管理装置２００から検証基データ６４０を受信し、受信した検証基データ６４０検証基データ保持部３０８へ記憶する（ステップＳ１００７）。
【０３４８】
（３）検証基データ６４０の生成の動作
検証基データ６４０の生成の動作について、図１８に示すフローチャートを用いて説明する。
【０３４９】
検証基データ生成部６０９は、ソフトウェア保持部６０８から、アプリ１１０、１１１、・・・、１１４を読み出す。次に、検証基データ生成部６０９は、ソフトウェア保持部６０８に記憶されている保護制御モジュール１２０に含まれている復号ロード部３０４を実行可能状態にし、復号ロード部３０４は、暗復号鍵６３１を用いて、暗号化アルゴリズムＥにより、アプリ１１０、１１１、・・・、１１４を暗号化する（ステップＳ１１０１）。
【０３５０】
復号ロード部３０４は、復号アルゴリズムＤにより、暗号化アプリ１１０ｅ、１１１ｅ、・・・、１１４ｅを復号し、各暗号化アプリについて、各復号部分処理の出力データである第一中間アプリ、第二中間アプリ及び復号アプリを出力し、検証基データ生成部６０９は、各暗号化アプリについて、暗号化アプリ、第一中間アプリ、第二中間アプリ及び復号アプリを取得する（ステップＳ１１０２）。
【０３５１】
各暗号化アプリについて、検証基データ生成部６０９は、証明書生成部６０５に対して、暗号化アプリ及び第一中間アプリの組、第一中間アプリ及び第二中間アプリの組、並びに、第二中間アプリ及び復号アプリの組に対し、復号検証値を生成するように制御し、複数の復号検証値に対して、署名私有鍵保持部６０６に保持されている署名私有鍵６３２を用いて、復号処理証明書を生成する（ステップＳ１２０３）。
【０３５２】
最後に、検証基データ生成部６０９は、第一復号部分処理データ６４１、第二復号部分処理データ６４２及び第三復号部分処理データ６４３を含む検証基データ６４０を生成する（ステップＳ１１０４）。
【０３５３】
（４）検知処理の動作
ここでは、図１６のステップＳ２００に示す検知処理の詳細について、図１９〜図２１に示すシーケンス図を用いて、説明する。
【０３５４】
機器１００は、初期化処理を終えると、工場から出荷され、利用者の元へ送られる。利用者が機器１００を使用し、各アプリを利用しているときには、機器１００内部では、保護制御モジュール１２０が復号ロード機能、改ざん検出機能及び解析ツール検出機能などの機能を発揮するように制御し、各アプリを攻撃者による攻撃から保護する。
【０３５５】
ここでは、アプリ１１０を実行する際に、保護制御モジュール１２０に対する検証を行う場合を例として説明する。
【０３５６】
なお、他のアプリ１１１、１１２、１１３、１１４を実行する際に、保護制御モジュール１２０に対する検証を行う場合も、アプリ１１０を実行する場合と同様の動作であるので、説明を省略する。
【０３５７】
また、アプリの実行以外の場合においては、保護制御モジュール１２０に付加されている改ざん検出用証明書を用いて、保護制御モジュール１２０に対する改ざん検出処理を行う。この場合に、予め計算されたＭＡＣ値を用いるとしてもよい。
【０３５８】
保護制御モジュール１２０は、アプリ１１０を実行するコマンドを受信すると（ステップＳ２０００）、各検知モジュールに対する分散鍵の送信依頼を生成し（ステップＳ２００１）、各検知モジュールに対して、生成した送信依頼を送信する（ステップＳ２００２）。
【０３５９】
図１９においては、検知モジュール１３１、１３２、１３３に対して、送信依頼を送信しているが、検知モジュール１３４、１３５に対しても、同様に、分散鍵の送信依頼を送信する。
【０３６０】
各検知モジュールは、保護制御モジュール１２０から送信依頼を受信し（ステップＳ２００２）、保持している分散鍵を読み出し（ステップＳ２００３）、読み出した分散鍵を保護制御モジュール１２０へ送信する（ステップＳ２００４）。
【０３６１】
保護制御モジュール１２０は、複数の分散鍵から暗復号鍵を復元する（ステップＳ２００５）。
【０３６２】
保護制御モジュール１２０は、暗号化アプリ１１０ｅを復号ロード部３０４により復号し、アプリ１１０を実行する（ステップＳ２００６）。
【０３６３】
保護制御モジュール１２０の制御部３０３は、アプリの復号が完了した後、復元した暗復号鍵を消去する（ステップＳ２００７）。
【０３６４】
次に、保護制御モジュール１２０は、各復号部分処理について、検証基データ保持部３０８に保持されている検証基データ６４０から検証データを生成する（ステップＳ２００８）。
【０３６５】
保護制御モジュール１２０の制御部３０３は、送信部３０２を介して、アプリの識別情報、第一中間アプリ及び検証データを、検知モジュール１３１へ送信し（ステップＳ２００９ａ）、アプリの識別情報、第二中間アプリ及び検証データを、検知モジュール１３２へ送信し（ステップＳ２００９ｂ）、アプリの識別情報、復号アプリ及び検証データを、検知モジュール１３３へ送信する（ステップＳ２００９ｃ）。
【０３６６】
各検知モジュールは、検証データを用いて、復号部分処理の入出力対応が正しいか否かを検証する。具体的には、各検知モジュールは、検証データ内のデータと、受信した中間アプリ又は復号アプリから復号検証値を生成し、生成した復号検証値と検証データ内の復号検証値と比較し、両者が一致するか判断する。さらに、復号処理証明書の署名検証を行う。（ステップＳ２０１０ａ、Ｓ２０１０ｂ及びＳ２０１０ｃ）。
【０３６７】
各検知モジュールは、検証データを用いた検証に失敗した場合、つまり、復号検証値が一致しない場合、又は、復号処理証明書の署名検証に失敗した場合には、保護制御モジュール１２０が改ざんされていると判定し（ステップＳ２０１１ａ、Ｓ２０１１ｂ又はＳ２０１１ｃで「Ｙ」）、判断部２１０へ検出結果を送信する（ステップＳ２０１２ａ、Ｓ２０１２ｂ又はＳ２０１２ｃ）。各検知モジュールは、検証値が一致し、かつ、復号処理証明書の署名検証に成功した場合には、保護制御モジュール１２０が改ざんされていないと判定し（ステップＳ２０１１ａ、Ｓ２０１１ｂ又はＳ２０１１ｃで「Ｎ」）、検証データの復号部分処理を識別する識別子を他の検知モジュールへ送信する（ステップＳ２０１３ａ、Ｓ２０１３ｂ又はＳ２０１３ｃ）。具体的には、検知モジュール１３１は、第一復号部分処理を検証した旨の通知や第一復号部分処理を識別する識別子を送信する。そして、各検知モジュールは、各復号部分処理を識別する識別子を用いて、保護制御モジュール１２０の全ての復号部分処理が検証されたか否かを確認する（ステップＳ２０１４ａ、Ｓ２０１４ｂ又はＳ２０１４ｃ）。
【０３６８】
全ての復号部分処理が検証されていない場合、または、複数の復号部分処理が１個の検知モジュールに送信されていた場合には、保護制御モジュール１２０が不正動作を行ったものとし、保護制御モジュール１２０が改ざんされていると判定し（ステップＳ２０１４ａ、Ｓ２０１４ｂ又はＳ２０１４ｃで「Ｙ」）、判断部２１０へ検出結果を送信する（ステップＳ２０１５ａ、Ｓ２０１５ｂ又はＳ２０１５ｃ）。
【０３６９】
全ての復号部分処理が検証されている場合（ステップＳ２０１４ａ、Ｓ２０１４ｂ又はＳ２０１４ｃで「Ｎ」）、何もしない。
【０３７０】
保護制御モジュール１２０は、ＯＳ１８０から、アプリが終了したことを示す終了通知を受け取り（ステップＳ２０１６）、終了通知を各検知モジュールに通知する（ステップＳ２０１７）。
【０３７１】
各検知モジュールは、保護制御モジュール１２０からアプリが終了したことを示す終了通知を受信後、又は、アプリが動作していない場合において、改ざん検出用証明書３３１を用いて、保護制御モジュール１２０の改ざん検出を行う（ステップＳ２０１８ａ、Ｓ２０１８ｂ又はＳ２０１８ｃ）。ここで、各検知モジュールの検証部４０４は、検証部４０４が保持する検証鍵を使用して保護制御モジュール１２０のＭＡＣ値を計算し、計算したＭＡＣ値と保持しているＭＡＣ値とを比較し、ＭＡＣ値が一致すれば、保護制御モジュール１２０は改ざんされていないと判定し、ＭＡＣ値が一致しなければ、保護制御モジュール１２０は改ざんされていると判定してもよい。
【０３７２】
保護制御モジュール１２０が改ざんされていると判定する場合（Ｓ２０１９ａ、Ｓ２０１９ｂ又はＳ２０１９ｃで「Ｙ」）、各検知モジュールは、検出結果を、判断部２１０へ通知する（Ｓ２０２０ａ、Ｓ２０２０ｂ又はＳ２０２０ｃ）。
【０３７３】
保護制御モジュール１２０が改ざんされていないと判定する場合（Ｓ２０１９ａ、Ｓ２０１９ｂ又はＳ２０１９ｃで「Ｎ」）、何もしない。
【０３７４】
２．５  検知システム１０の効果
検知システム１０では、アプリの実行中において（図１９のステップＳ２０００からＳ２０１５）、複数の分散鍵から暗復号鍵を復元して（ステップＳ２００５）から、暗復号鍵を消去する（ステップＳ２００７）までの期間においては、保護制御モジュール１２０は、アプリの暗復号鍵を保持している。
【０３７５】
しかし、当該アプリの実行中においては、保護制御モジュールが暗復号鍵を保持しているのは、暗復号鍵の復元（ステップＳ２００５）から、暗復号鍵の消去（ステップＳ２００７）までの期間内に限られており、改ざんされた不正な検知モジュールが、保護制御モジュール１２０から暗復号鍵を不正に取得する可能性を低くすることができる。
【０３７６】
アプリの実行が終了した後、つまり、アプリが実行されていない場合には（図１９のステップＳ２０１５以降）、保護制御モジュール１２０は、アプリの暗復号鍵を保持していない。このため、検知モジュールが、改ざん検出用証明書を用いて、保護制御モジュール１２０の改ざん検出を行うとしても、不正な検知モジュールは、暗復号鍵を取得することができず、保護制御モジュール１２０の暗復号鍵が漏洩することがないので、検知システム１０の安全性を高めることができる。
【０３７７】
３．実施の形態３
ここでは、本発明に係る実施の形態３としての検知システム１０ａ（図示していない）について説明する。
【０３７８】
３．１  概要
検知システム１０では、検知モジュールに分散鍵を書き込み、アプリを復号して実行する場合において、保護制御モジュールは、複数の検知モジュールから分散鍵を収集し、収集した分散鍵を用いて、一時的に暗復号鍵を復元している。この場合に、不正な検知モジュールによる暗復号鍵の不正な取得を防ぐために、アプリ復号中には、検知モジュールによる改ざん検出用証明書を用いた改ざん検出やＭＡＣ値を用いた改ざん検出をさせていない。
【０３７９】
これに対して、検知システム１０ａにおいては、保護制御モジュールが暗復号鍵を復元することなく、検知モジュールは、アプリの復号の一部分を実行する。
【０３８０】
これにより、アプリ復号時において、検知モジュールにより、改ざん検出用証明書を用いた改ざん検出やＭＡＣ値を用いた改ざん検出を行っても、不正な検知モジュールに暗復号鍵を取得されることはない。
【０３８１】
検知システム１０ａでは、アプリの暗復号には公開鍵暗号方式のＲＳＡ暗号を用いる。ＲＳＡ暗号に関しては非特許文献１に記載されているので、ここでの説明は省略する。
【０３８２】
また、検知システム１０ａでは、平文のアプリをＭと表現する。ＲＳＡ暗号方式による公開鍵ｅを用いた暗号化を、Ｍ＾ｅと表現し、暗号化アプリをＣと表現する。従って、Ｃ＝Ｍ＾ｅである。また、ＲＳＡ暗号方式による私有鍵ｄを用いた復号を、Ｃ＾ｄと表現する。従って、Ｍ＝Ｃ＾ｄである。なお、ａ＾ｂは、ａをｂ乗する演算を示す。
【０３８３】
３．２  検知システム１０ａの構成
検知システム１０ａは、検知システム１０と同様の構成を有している。ここでは、検知システム１０との相違点を中心として、説明する。
【０３８４】
管理装置２００のソフトウェア配布部２２０のソフトウェア保持部６０８は、保護制御モジュール１２０に代えて、保護制御モジュール１２０ａを記憶しており、検知モジュール群１３０に代えて、検知モジュール群１３０ａを記憶している。検知モジュール群１３０ａは、検知モジュール１３１ａ、１３２ａ、１３３ａ、１３４ａ及び１３５ａを含んでいる。
【０３８５】
また、機器１００には、保護制御モジュール１２０及び検知モジュール群１３０に代えて、保護制御モジュール１２０ａ及び検知モジュール群１３０ａがインストールされている。
【０３８６】
（１）管理装置２００のソフトウェア配布部２２０
管理装置２００のソフトウェア配布部２２０に含まれる暗復号鍵保持部６０７は、暗復号鍵ｄ（６３１）に代えて、私有鍵ｄ（６３１ａ）を記憶している。
【０３８７】
管理装置２００のソフトウェア配布部２２０に含まれる分散鍵生成部６１０は、一例として図２２に示すように、ｄ＝ｄ１＋ｄ２＋ｄ３＝ｄ１＋ｄ４＋ｄ５を満たすように、私有鍵ｄ（６３１ａ）を分解して、複数の分散鍵ｄ１（６４１ａ）、分散鍵ｄ２（６４２ａ）、分散鍵ｄ３（６４３ａ）、分散鍵ｄ４（６４４ａ）及び分散鍵ｄ５（６４５ａ）を生成する。
【０３８８】
具体的には、分散鍵生成部６１０は、乱数ｒ１を生成し、生成した乱数ｒ１を分散鍵ｄ１（６４１ａ）とし、乱数ｒ２を生成し、生成した乱数ｒ２を分散鍵ｄ２（６４２ａ）とし、乱数ｒ３を生成し、生成した乱数ｒ３を分散鍵ｄ４（６４４ａ）とする。
【０３８９】
ｄ１＝ｒ１
ｄ２＝ｒ２
ｄ４＝ｒ３
次に、分散鍵生成部６１０は、分散鍵ｄ３（６４３ａ）を、ｄ３＝ｄ−ｄ１−ｄ２により算出し、分散鍵ｄ５（６４５ａ）を、ｄ５＝ｄ−ｄ１−ｄ４により算出する。
【０３９０】
このようにして、私有鍵ｄから、分散鍵ｄ１、ｄ２、ｄ３、ｄ４及びｄ５を生成するので、ｄ＝ｄ１＋ｄ２＋ｄ３＝ｄ１＋ｄ４＋ｄ５を満たすこととなる。
【０３９１】
次に、分散鍵生成部６１０は、図２２に示すように、生成した複数個の分散鍵ｄ１（６４１ａ）、ｄ２（６４２ａ）、・・・、ｄ５（６４５ａ）を、制御部６０３、送信部６０２、通信部２３０及びネットワーク２０を介して、それぞれ、機器１００の検知モジュール群１３０ａの検知モジュール１３１ａ、１３２ａ、１３３ａ、１３４ａ及び１３４ａへ送信する。
【０３９２】
機器１００の検知モジュール群１３０ａの検知モジュール１３１ａ、１３２ａ、１３３ａ、１３４ａ及び１３４ａにおいては、それぞれ、分散鍵ｄ１（６４１ａ）、ｄ２（６４２ａ）、・・・、ｄ５（６４５ａ）が記憶される。
【０３９３】
（２）保護制御モジュール１２０ａ
保護制御モジュール１２０ａは、図２３に示すように、受信部３０１、送信部３０２、制御部３０３、復号ロード部３０４、改ざん検出部３０５、解析ツール検出部３０６及び検知モジュール選択部３１０を含んでいる。
【０３９４】
保護制御モジュール１２０ａには、改ざん検出用証明書３３１ａが添付されている。改ざん検出用証明書３３１ａは、改ざん検出用証明書３３１と同様に、保護制御モジュール１２０ａ自体の改ざん検出するための証明書である。
【０３９５】
ここで、保護制御モジュール１２０と同様の機能を有する構成要素は、同じ符号を付しており、これらについての説明を省略する。
【０３９６】
保護制御モジュール１２０ａの構成と保護制御モジュール１２０の構成とを比較すると、保護制御モジュール１２０ａは、暗復号鍵復元部３０７、検証基データ保持部３０８及び検証データ生成部３０９を含んでいない。また、保護制御モジュール１２０ａは、保護制御モジュール１２０には存在しない検知モジュール選択部３１０を含む。
【０３９７】
（３）検知モジュール選択部３１０
検知モジュール選択部３１０は、以下に示すようにして、アプリの復号時に、当該アプリの復号を実行させる検知モジュールを選択する。
【０３９８】
検知モジュール選択部３１０は、一例として図２４に示すように、アプリの復号をさせる検知モジュールの組合せを示す検知モジュールリスト３５１を保持している。
【０３９９】
検知モジュールリスト３５１は、インデックスと検知モジュール識別子群とからなる組を複数個保持している。各組は、アプリの復号をさせる複数の検知モジュールを示している。
【０４００】
インデックスは、対応する検知モジュール識別子群を識別するための識別情報である。検知モジュール識別子群は、複数の検知モジュール識別子を含む。複数の検知モジュール識別子は、それぞれ、複数の検知モジュールを識別するための識別情報である。これらの複数の検知モジュールは、アプリの復号をさせる検知モジュールである。これらの複数の検知モジュールには、アプリの復号をさせるための分散鍵が記憶されている。
【０４０１】
図２４に示すように、検知モジュールリスト３５１は、インデックス３６１「１」と、検知モジュール識別子「１３１」、「１３２」及び「１３３」を含む検知モジュール識別子群３６２とからなる組を有し、インデックス３６３「２」と、検知モジュール識別子「１３１」、「１３４」及び「１３５」を含む検知モジュール識別子群３６４とからなる組を有する。
【０４０２】
ここで、検知モジュール識別子「１３１」、「１３２」、「１３３」、「１３４」及び「１３５」により識別される検知モジュールは、それぞれ、検知モジュール１３１ａ、１３２ａ、１３３ａ、１３４ａ及び１３５ａであるとする。
【０４０３】
従って、検知モジュールリスト３５１に含まれている一つの組の検知モジュール識別子群内の複数の検知モジュール識別子により識別される複数の検知モジュールを全て用い、それぞれの検知モジュールに記憶されている分散鍵から、私有鍵を復元することができる。
【０４０４】
例えば、インデックス３６１「１」に対応する検知モジュール識別子群３６２には、検知モジュール識別子「１３１」、「１３２」及び「１３３」が含まれている。検知モジュール識別子「１３１」、「１３２」及び「１３３」は、それぞれ、検知モジュール１３１ａ、１３２ａ及び１３３ａを識別する。検知モジュール１３１ａ、１３２ａ及び１３３ａには、それぞれ、図２２に示すように、分散鍵ｄ１（６４１ａ）、分散鍵ｄ２（６４２ａ）及び分散鍵ｄ３（６４３ａ）が記憶されている。これらの分散鍵ｄ１（６４１ａ）、分散鍵ｄ２（６４２ａ）及び分散鍵ｄ３（６４３ａ）を加算することにより、私有鍵６３１ａを算出することができる。
【０４０５】
また、インデックス３６３「２」に対応する検知モジュール識別子群３６４についても、同様にして、検知モジュール識別子群３６４内の検出モジュール識別子「１３１」、「１３４」及び「１３５」により識別される検知モジュールに記憶されている分散鍵ｄ１（６４１ａ）、分散鍵ｄ４（６４４ａ）及び分散鍵ｄ５（６４５ａ）を加算することにより、私有鍵６３１ａを算出することができる。
【０４０６】
ここで、検知モジュールリスト３５１は、図２４に示すように、二組を含んでいるが、これには限定されない。検知モジュールリスト３５１は、さらに多くの組を含むとしてもよい。
【０４０７】
検知モジュール選択部３１０は、制御部３０３の制御により、アプリの復号時に、検知モジュールリスト３５１から、ランダムに一つのインデックスを選択する。次に、選択したインデックスに対応する検知モジュール識別子群を抽出し、抽出した検知モジュール識別子群を制御部３０３へ出力する。
【０４０８】
（４）検知モジュール１３１ａの構成
検知モジュール１３１ａは、図２５に示すように、受信部４０１、送信部４０２、制御部４０３、検証部４０４、分散鍵保持部４０６及び復号部４１０から構成されている。
【０４０９】
ここで、検知モジュール１３１と同様の機能を有する構成要素について、同じ符号を付しており、その説明を省略する。
【０４１０】
検知モジュール１３１の構成と比較すると、検知モジュール１３１ａは、検証データ保持部４０５を備えていない。また、検知モジュール１３１には存在しない復号部４１０を含む。
【０４１１】
検知モジュール１３２ａ、１３３ａ、１３４ａ及び１３５ａも、検知モジュール１３１ａと同様の構成を有しているので、これらについての説明を省略する。
【０４１２】
復号部４１０は、ＲＳＡ暗号方式により、分散鍵保持部４０６により保持する分散鍵ｄ１（６４１ａ）を用いて、暗号化アプリＣ（１１０）を復号して、復号文Ｍ１を生成する。
【０４１３】
Ｍ１＝Ｃ＾ｄ１
次に、復号部４１０は、復号文Ｍ１を、制御部４０３及び送信部４０２を介して、保護制御モジュール１２０ａへ出力する。
【０４１４】
なお、検知モジュール１３２ａの復号部４１０も、同様に、ＲＳＡ暗号方式により、検知モジュール１３２ａの分散鍵保持部４０６により保持する分散鍵ｄ２（６４２ａ）を用いて、暗号化アプリＣ（１１０）を復号して、復号文Ｍ２を生成する。
【０４１５】
Ｍ２＝Ｃ＾ｄ２
次に、復号部４１０は、復号文Ｍ１を、制御部４０３及び送信部４０２を介して、保護制御モジュール１２０ａへ出力する。
【０４１６】
また、検知モジュール１３３ａの復号部４１０も、同様に、ＲＳＡ暗号方式により、検知モジュール１３３ａの分散鍵保持部４０６により保持する分散鍵ｄ３（６４３ａ）を用いて、暗号化アプリＣ（１１０）を復号して、復号文Ｍ３を生成する。
【０４１７】
Ｍ３＝Ｃ＾ｄ３
次に、復号部４１０は、復号文Ｍ１を、制御部４０３及び送信部４０２を介して、保護制御モジュール１２０ａへ出力する。
【０４１８】
さらに、検知モジュール１３４ａの復号部４１０及び検知モジュール１３５ａの復号部４１０についても、同様である。
【０４１９】
３．３  検知システム１０ａの動作
（１）初期設定の動作
検知システム１０ａにおける初期設定の動作について、図２６に示すシーケンス図を用いて説明する。
【０４２０】
工場において、機器１００を製造する際に、管理装置２００のソフトウェア配布部２２０の分散鍵生成部６１０は、暗復号鍵保持部６０７により保持されている私有鍵６３１ａを分解して複数の分散鍵６４１ａ、６４２ａ、・・・、６４５ａを生成し、生成した複数の分散鍵６４１ａ、６４２ａ、・・・、６４５ａを、ソフトウェア保持部６０８に保持されている検知モジュール１３１ａ、１３２ａ、・・・、１３５ａに書き込む（ステップＳ１１００）。
【０４２１】
次に、制御部６０３は、送信部６０２、通信部２３０を介して、保護制御モジュール１２０ａ、検知モジュール群１３０ａ、アプリ１１０ａ、１１１ａ、・・・、１１４ａ及びその他の機器１００の動作に必要なコンピュータプログラムを、機器１００に送信する。これらのコンピュータプログラムには、これらのコンピュータプログラムの改ざんを検証するための証明書（改ざん検出用証明書）が付加されている。なお、アプリ１１０ａ、１１１ａ、・・・、１１４ａは、暗号化されている。機器１００は、それぞれ、証明書が付加された保護制御モジュール１２０ａ、検知モジュール群１３０ａ、アプリ１１０ａ、１１１ａ、・・・、１１４ａ及びその他のコンピュータプログラムを受信する（ステップＳ１１０１）。
【０４２２】
機器１００のＥＥＰＲＯＭ１７２に、それぞれ証明書が付加された保護制御モジュール１２０ａ、検知モジュール群１３０ａ、アプリ１１０ａ、１１１ａ、・・・、１１４ａ及びその他のコンピュータプログラムがインストールされる（ステップＳ１１０２）。
【０４２３】
これらのコンピュータプログラムのインストールが終わると、機器１００の初期設定を行うコンピュータプログラムや、機器１００正常に動作するかをテストするためのコンピュータプログラムなどを実行し、機器１００の初期化処理を行う（ステップＳ１１０３）。
【０４２４】
（２）検知処理の動作
検知システム１０ａにおける検知処理の動作について、図２７に示すフローチャートを用いて説明する。
【０４２５】
検知処理においては、保護制御モジュール検知処理（Ｓ２０１）とアプリ復号処理（Ｓ２０２）とが並列に動作する。言い換えると、同一時間帯内において、保護制御モジュール検知処理（Ｓ２０１）とアプリ復号処理（Ｓ２０２）とが動作する。
【０４２６】
保護制御モジュール検知処理においては、保護制御モジュール１２０ａが改ざんされているか否かの改ざん検出を行う。アプリ復号処理においては、アプリ実行時に各検知モジュールに埋め込まれている分散鍵を用いて、アプリの復号処理を行う。
【０４２７】
それぞれの詳細については、後述する。
【０４２８】
なお、保護制御モジュール検知処理は、アプリ復号処理が実行しているか否かに関わらず、定期的又は非定期的に実行されるものとする。
【０４２９】
（２−１）保護制御モジュール検知処理の動作
保護制御モジュール検知処理においては、検知モジュール１３１ａ、１３２ａ、１３３ａ、１３４ａ及び１３５ａは、改ざん検出用証明書３３１ａを用いて、保護制御モジュール１２０ａに対する改ざん検出を実施する。
【０４３０】
なお、各検知モジュールは、検証部４０４が保持する検証鍵を使用して保護制御モジュール１２０ａのＭＡＣ値を計算し、計算したＭＡＣ値と保持しているＭＡＣ値とを比較することにより行うとしてもよい。ＭＡＣ値が一致すれば、保護制御モジュール１２０ａは改ざんされていないと判定し、ＭＡＣ値が一致しなければ、保護制御モジュール１２０ａは改ざんされていると判定する。
【０４３１】
保護制御モジュール検知の動作について、図２８に示すシーケンス図を用いて説明する。
【０４３２】
なお、図２８においては、記載を簡略化して、検知モジュール１３１ａが保護制御モジュール１２０ａの改ざん検出を行っている。当然ながら、検知モジュール１３２ａ、１３３ａ、１３４ａ及び１３５ａにおいても、同様の処理が行われる。
【０４３３】
検知モジュール１３１ａは、改ざん検出用証明書３３１ａを用いて、保護制御モジュール１２０ａに対する改ざん検出を実施する（ステップＳ２１０１）。
【０４３４】
保護制御モジュール１２０ａが改ざんされていると判定する場合（Ｓ２１０１で「改ざんされている」）、検知モジュール１３１ａは、保護制御モジュール１２０ａが改ざんされていることを示す改ざん検出結果を、管理装置２００の判断部２１０へ通知する（Ｓ２１０２）。
【０４３５】
保護制御モジュール１２０ａが改ざんされていないと判定する場合（Ｓ２１０１で「改ざんされていない」）、検知モジュール１３１ａは、判断部２１０へ通知を行わず、改ざん検出処理（ステップＳ２１０１）へ戻る。
【０４３６】
判断部２１０は、検知モジュール１３１ａ、１３２ａ、１３３ａ、１３４ａ及び１３５ａから改ざん検出結果を受信する。
【０４３７】
（２−２）アプリの復号の動作
検知システム１０ａにおけるアプリの復号の動作について、図２９に示すシーケンス図を用いて説明する。
【０４３８】
保護制御モジュール１２０ａは、アプリ１１０ａを実行するコマンドを受信すると（ステップＳ２１１０）、検知モジュール選択部３１０は、どの検知モジュールに暗号化アプリＣを復号させるかを選択する（ステップＳ２１１１）。ここでは、検知モジュール１３１ａ、１３２ａ、１３３ａを選択するものとする。
【０４３９】
次に、保護制御モジュール１２０ａは、暗号化アプリＣを読み出し（ステップＳ２１１２）、選択した検知モジュールに対して暗号化アプリＣを送信する（ステップＳ２１１３）。
【０４４０】
各検知モジュールは、暗号化アプリを受信し（ステップＳ２１１３）、保持している分散鍵を用いて、暗号化アプリを部分復号する（ステップＳ２１１４ａ、Ｓ２１１４ｂ、Ｓ２１１４ｃ）。具体的には、検知モジュール１３１ａは、保持している分散鍵ｄ１を用いて、暗号化アプリＣを復号して復号文Ｍ１＝Ｃ＾ｄ１を計算し（ステップＳ２１１４ａ）、検知モジュール１３１ｂは、保持している分散鍵ｄ２を用いて、暗号化アプリＣを復号して復号文Ｍ２＝Ｃ＾ｄ２を計算し（ステップＳ２１１４ｂ）、検知モジュール１３１ｃは、保持している分散鍵ｄ３を用いて、暗号化アプリＣを復号して復号文Ｍ３＝Ｃ＾ｄ３を計算する（ステップＳ２１１４ｃ）。
【０４４１】
各検知モジュールは部分復号したアプリを保護制御モジュール１２０ａへ送信する（ステップＳ２１１５ａ、Ｓ２１１５ｂ、Ｓ２１１５ｃ）。検知モジュール１３１ａは、復号文Ｍ１を保護制御モジュール１２０ａへ送信し（ステップＳ２１１５ａ）、検知モジュール１３１ｂは、復号文Ｍ２を保護制御モジュール１２０ａへ送信し（ステップＳ２１１５ｂ）、検知モジュール１３１ｃは、復号文Ｍ３を保護制御モジュール１２０ａへ送信する（ステップＳ２１１５ｃ）。
【０４４２】
次に、保護制御モジュール１２０ａは、各検知モジュールから部分復号により得られた復号文Ｍ１、Ｍ２及びＭ３を受信する（ステップＳ２１１５ａ、Ｓ２１１５ｂ、Ｓ２１１５ｃ）。
【０４４３】
保護制御モジュール１２０ａは、部分復号により得られた復号文を用いてアプリを復号し、アプリを実行する（ステップＳ２１１６）。具体的には、復号文Ｍ１と復号文Ｍ２と復号文Ｍ３とを乗じて、アプリを生成する。
【０４４４】
Ｍ１×Ｍ２×Ｍ３
＝（Ｃ＾ｄ１）×（Ｃ＾ｄ２）×（Ｃ＾ｄ３）
＝Ｃ＾（ｄ１＋ｄ２＋ｄ３）
＝Ｃ＾ｄ
＝（Ｍ＾ｅ）＾ｄ
＝Ｍ＾（ｅ×ｄ）
＝Ｍ＾１＝Ｍ
となり、平文のアプリＭを求めることができる。
【０４４５】
保護制御モジュール１２０ａは、アプリの復号が完了した後、各検知モジュールにアプリ復号完了を通知する（ステップＳ２１１７）。
【０４４６】
（２−３）保護制御モジュール検知処理とアプリ復号処理の関係
上述したように、保護制御モジュール検知処理とアプリ復号処理とは、並行して動作する。アプリ復号時以外では、保護制御モジュール１２０ａが動作することが少ないので、保護制御モジュール検知処理の実行頻度を低くするとしてもよい。一方、アプリ復号時には、保護制御モジュールによるアプリを保護するための動作が多いので、保護制御モジュール検知処理の実行頻度を高くするとしてもよい。なお、アプリ復号時とは、図２９に示すステップＳ２１１５ａ、Ｓ２１１５ｂ、Ｓ２１１５ｃにおいて、各検知モジュールが保護制御モジュール１２０ａへ部分復号により得られた復号文を送信したときから、ステップＳ２１１７において、保護制御モジュール１２０ａから各検知モジュールへアプリ復号完了通知を送信するまでを言う。
【０４４７】
３．４  検知システム１０ａの効果
検知システム１０ａにおいては、アプリの私有鍵を保護制御モジュール１２０ａ内で復元しないため、保護制御モジュール１２０ａが改ざんされた場合であっても、アプリの私有鍵の漏洩を防止することができる。
【０４４８】
また、アプリ復号時であるか否かに関わらず、検知モジュールは、改ざん検出用証明書を用いて、保護制御モジュール１２０に対する改ざん検出を行うことができる。
【０４４９】
これにより、保護制御モジュール１２０ａが改ざんされたとしても、直ちに検出することができ、システムの安全性を高めることができる。
【０４５０】
４．実施の形態４
ここでは、本発明に係る実施の形態４としての検知システム１０ｂ（図示していない）について説明する。
【０４５１】
４．１  概要
検知システム１０ｂでは、各検知モジュールが保持する分散鍵を更新する。
【０４５２】
検知モジュールが改ざんされた場合、検知システム１０における暗復号鍵の復元や検知システム１０ａにおけるアプリの復号ができない恐れがある。なお、検知モジュールが改ざんされているかの検出を行う相互監視処理やどの検知モジュールが改ざんされているかのモジュール特定処理は、特許文献３に詳しく説明されているので、ここでの説明は省略する。
【０４５３】
そこで、検知システム１０ｂでは、各検知モジュールが保持する分散鍵を更新することにより、暗復号鍵の復元やアプリの復号ができるようにする。
【０４５４】
４．２  検知システム１０ｂの構成
検知システム１０ｂは、検知システム１０ａと同様の構成を有している。ここでは、検知システム１０ａとの相違点を中心として説明する。
【０４５５】
管理装置２００のソフトウェア配布部２２０のソフトウェア保持部６０８は、検知モジュール群１３０ａに代えて、検知モジュール群１３０ｂを記憶している。検知モジュール群１３０ｂは、検知モジュール１３１ｂ、１３２ｂ、１３３ｂ、１３４ｂ及び１３５ｂを含んでいる。
【０４５６】
また、機器１００には、検知モジュール群１３０ａに代えて、検知モジュール群１３０ｂがインストールされている。
【０４５７】
検知システム１０ｂにおいては、図３０に示すように、私有鍵ｄ（６３１ｂ）から生成した複数の分散鍵ｄ１（６４１ｂ）、ｄ２（６４２ｂ）、ｄ３（６４３ｂ）、ｄ４（６４４ｂ）及びｄ５（６４５ｂ）が、それぞれ、検知モジュール群１３０ｂの検知モジュール１３１ｂ、１３２ｂ、１３３ｂ、１３４ｂ及び１３５ｂに書き込まれているとする。ここで、ｄ＝ｄ１＋ｄ２＋ｄ３＋ｄ４＋ｄ５を満たすものとする。
【０４５８】
（１）判断部２１０
判断部２１０は、検知モジュール群１３０ｂ内の改ざんされた検知モジュールを特定する。相互監視処理や改ざんされた検知モジュールの特定に関しては、特許文献３に詳しく説明されているので、ここでの説明は省略する。
【０４５９】
ここでは、図３１に示すように、検知モジュール１３２ｂが無効化対象の検知モジュールであるとして、説明する。
【０４６０】
判断部２１０は、無効化対象である検知モジュールを識別する識別子をソフトウェア配布部２２０へ出力する。ここでは、一例として、判断部２１０は、無効化対象である検知モジュール１３２ｂを識別する識別子をソフトウェア配布部２２０の分散鍵生成部６１０へ出力する。
【０４６１】
（２）ソフトウェア配布部２２０
（暗復号鍵保持部６０７）
暗復号鍵保持部６０７は、検知モジュール群１３０ｂに含まれる検知モジュール１３１ｂ、１３２ｂ、・・・、１３５ｂについて、それぞれの検知モジュールを識別する識別子と、それぞれの検知モジュールに対して送信した分散鍵とを対応付けて記憶している。
【０４６２】
（分散鍵生成部６１０）
分散鍵生成部６１０は、判断部２１０から無効化対象である検知モジュールを識別する識別子を受け取る。次に、受け取った識別子に対応する分散鍵を暗復号鍵保持部６０７から読み出す。ここでは、一例として、ソフトウェア配布部２２０は、無効化対象である検知モジュール１３２ｂに対して送信された分散鍵ｄ２を読み出す。
【０４６３】
次に、分散鍵生成部６１０は、無効化対象である検知モジュールに対して送信された分散鍵を分解して、さらに複数個の再分散鍵を生成する。ここで、生成する再分散鍵の数は、検知モジュール群１３０ｂに含まれる全ての検知モジュールから、無効化対象となった検知モジュールを除いた残りの検知モジュールの数に等しい。
【０４６４】
一例として、分散鍵生成部６１０は、図３２に示すように、分散鍵ｄ２を、４個に分解して、再分散鍵ｄ２１、ｄ２３、ｄ２４、ｄ２５を生成する。このとき、ｄ２＝ｄ２１＋ｄ２３＋ｄ２４＋ｄ２５を満たすようにする。
【０４６５】
分散鍵ｄ２から再分散鍵ｄ２１、ｄ２３、ｄ２４、ｄ２５を生成する方法については、私有鍵ｄから分散鍵ｄ１、ｄ２、ｄ３、ｄ４及びｄ５を生成する方法と同様である。
【０４６６】
次に、分散鍵生成部６１０は、生成した複数の再分散鍵を、制御部６０３、送信部６０２、通信部２３０及びネットワーク２０を介して、機器１００において、無効化対象とならなかった検知モジュールに対して、送信する。一例として、分散鍵生成部６１０は、生成した再分散鍵ｄ２１、ｄ２３、ｄ２４及びｄ２５を、それぞれ、検知モジュール１３１ｂ、１３３ｂ、１３４ｂ及び１３５ｂに対して送信する。
【０４６７】
（３）検知モジュール１３１ｂの構成
検知モジュール１３１ｂは、図３３に示すように、受信部４０１、送信部４０２、制御部４０３、検証部４０４、分散鍵保持部４０６、復号部４１０及び分散鍵更新部４２０から構成されている。
【０４６８】
ここで、検知モジュール１３１ａと同様の機能を有する構成要素について、同じ符号を付しており、その説明を省略する。
【０４６９】
検知モジュール１３１ａの構成と比較すると、検知モジュール１３１ｂは、検知モジュール１３１ａには存在しない分散鍵更新部４２０を含む。
【０４７０】
検知モジュール１３２ｂ、１３３ｂ、１３４ｂ及び１３５ｂも、検知モジュール１３１ｂと同様の構成を有しているので、これらについての説明を省略する。
【０４７１】
分散鍵更新部４２０は、管理装置２００から、再分散鍵を受け取り、分散鍵保持部４０６から分散鍵を読み出し、読み出した分散鍵に、受け取った再分散鍵を加算し、加算結果を新たな分散鍵として、分散鍵保持部４０６に記憶されている分散鍵に上書きする。
【０４７２】
一例として、分散鍵更新部４２０は、管理装置２００から、再分散鍵ｄ２１を受信し、分散鍵保持部４０６には、図３２に示すように、分散鍵ｄ１（６４１ｂ）が記憶されているとする。分散鍵更新部４２０は、分散鍵保持部４０６から分散鍵ｄ１（６４１ｂ）を読み出し、図３４に示すように、読み出した分散鍵ｄ１（６４１ｂ）に、受信した再分散鍵ｄ２１を加算して、新たな分散鍵ｄ１＋ｄ２１（６４１ｃ）を生成し、生成した分散鍵ｄ１＋ｄ２１（６４１ｃ）を、分散鍵保持部４０６に記憶されている分散鍵ｄ１（６４１ｂ）に上書きする。
【０４７３】
検知モジュール１３３ｂ、１３４ｂ及び１３５ｂは、図３４に示すように、検知モジュール１３１ｂと同様に、再分散鍵ｄ２３、ｄ２４及びｄ２５を受信し、それぞれ、記憶している分散鍵ｄ３、ｄ４及びｄ５に受信した再分散鍵ｄ２３、ｄ２４及びｄ２５を加算して、新たな分散鍵ｄ３＋ｄ２３（６４３ｃ）、新たな分散鍵ｄ４＋ｄ２４（６４４ｃ）及び新たな分散鍵ｄ５＋ｄ２５（６４５ｃ）を生成し、生成した新たな分散鍵６４３ｃ、６４４ｃ及び６４５ｃを記憶する。
【０４７４】
これにより、検知モジュール１３２ｂが無効化されたとしても、検知モジュール群１３０ｂの検知モジュール１３１ｂ、１３３ｂ、１３４ｂ、１３５ｂが保持する分散鍵から私有鍵ｄが求めることができる。
【０４７５】
４．３  検知システム１０ｂの動作
検知システム１０ｂにおける分散鍵の更新処理の動作について、図３５に示すシーケンス図を用いて説明する。
【０４７６】
ここでは、図３１に示すように、検知モジュール１３２ｂが無効化対象の検知モジュールである。
【０４７７】
判断部２１０は、無効化対象である検知モジュールを識別する識別子をソフトウェア配布部２２０へ出力する（ステップＳ３０００）。
【０４７８】
ソフトウェア配布部２２０の分散鍵生成部６１０は、受け取った識別子に対応する分散鍵を取得し（ステップＳ３００１）、取得した分散鍵を分解して複数の再分散鍵を生成し（ステップＳ３００２）、生成した再分散鍵を、無効化されていない各検知モジュールへ送信する（ステップＳ３００３）。
【０４７９】
無効化されていない各検知モジュールは、管理装置２００から再分散鍵を受信し（ステップＳ３００３）、分散鍵保持部４０６に記憶されている分散鍵に、受信した再分散鍵を加算して、新たな分散鍵を生成し、生成した分散鍵を、分散鍵保持部４０６に上書きすることにより、分散鍵を更新する（ステップＳ３００４）。
【０４８０】
こうして、無効化対象の検知モジュールが無効化されたとしても、検知モジュール群１３０ｂの無効化されていない検知モジュール１３１ｂ、１３３ｂ、１３４ｂ、１３５ｂにより保持されている分散鍵から私有鍵ｄを求めることができる。
【０４８１】
４．４  検知システム１０ｂの効果
検知システム１０ｂでは、分散鍵を記憶する検知モジュールが改ざんされ、当該検知モジュールが無効化されたとしても、無効化されていない検知モジュールに記憶されている分散鍵を更新することにより、アプリを復号するための私有鍵が復元できないという事態を防止することができる。
【０４８２】
こうして、改ざんされた検知モジュールを無効化して、システムの安全性を高めながら、アプリを復号するための私有鍵を復元することができる。
【０４８３】
５．その他の変形例
なお、本発明を上記実施の形態に基づいて説明しているが、本発明は、上記実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０４８４】
（１）各実施の形態において、検知処理後に検知モジュール間で相互監視処理を行うとしてもよい。なお、相互監視処理に関しては、特許文献２に詳しく説明されているので、ここでは説明を省略する。
【０４８５】
（２）上記変形例（１）では、検知処理の結果、保護制御モジュールが正常で、かつ、相互監視の結果、不正動作を行う検知モジュールを発見した場合、保護制御モジュールが発見した検知モジュールを無効化するとしてもよい。
【０４８６】
また、正常な検知モジュールが無効化処理を行うとしてもよい。
【０４８７】
また、検知処理の結果、保護制御モジュールが異常で、かつ、相互監視の結果、不正動作を行う検知モジュールが発見できなかった場合、保護制御モジュールを更新するとしてもよい。
【０４８８】
なお、検知モジュールの無効化処理や保護制御モジュールの更新処理に関しては、特許文献２に詳しく説明されているので、ここでは説明を省略する。
【０４８９】
（３）検知システム１０においては、図１９のステップＳ２００５で暗復号鍵を復元しているが、保護制御モジュール１２０は、さらに復元した暗復号鍵が正しいか否かを検証するとしてもよい。
【０４９０】
この場合に、保護制御モジュール１２０は、初期設定処理時に、管理装置２００から暗復号鍵の検証値を受信する。この検証値は、復号鍵のハッシュ値であってもよいし、復号鍵のＭＡＣ値であってもよい。保護制御モジュール１２０は、ステップＳ２００５で暗復号鍵を復元後、検証値を用いて復元した暗復号鍵が正しいかどうか検証する。
【０４９１】
これにより、復元した暗復号鍵が正しくないことを検出することができ、システムの安全性を向上することができる。
【０４９２】
（４）検知システム１０においては、図１９のステップＳ２００４で各検知モジュールから分散鍵を受信し、ステップＳ２００５で暗復号鍵を復元しているが、保護制御モジュール１２０は、さらに検知モジュールから受信した分散鍵が正しいか否かを検証するとしてもよい。
【０４９３】
この場合、保護制御モジュール１２０は、初期設定処理時に、管理装置２００から各検知モジュールの分散鍵の検証値を受信する。この検証値は、分散鍵のハッシュ値であってもよいし、分散鍵のＭＡＣ値であってもよい。
【０４９４】
保護制御モジュール１２０は、図１９のステップＳ２００４で各検知モジュールから分散鍵を受信した後、ステップＳ２００５で暗復号鍵を復元する前に、検証値を用いて受信した分散鍵が正しいかどうか検証する。
【０４９５】
これにより、復元した暗復号鍵が正しくないことを検出することができ、どの検知モジュールが異常な分散鍵を送信したかを特定することができる。こうして、異常な分散鍵を送信した検知モジュールは改ざんされていると判断し、改ざんされた検知モジュールを無効化することにより、システムの安全性を向上することができる。
【０４９６】
（５）検知システム１０ａにおいては、図２９のステップＳ２１１６でアプリを復号しているが、保護制御モジュール１２０ａは、さらに復号したアプリが正しいかを検証するとしてもよい。
【０４９７】
この場合に、保護制御モジュール１２０ａは、初期設定処理時に、管理装置２００からアプリの検証値を受信する。この検証値は、アプリのハッシュ値であってもよいし、アプリのＭＡＣ値であってもよい。保護制御モジュール１２０ａは、図２９のステップＳ２１１６でアプリを復号後、検証値を用いて復号したアプリが正しいかどうか検証する。
【０４９８】
これにより、復号したアプリが正しくないことを検出することができ、システムの安全性を向上することができる。
【０４９９】
（６）検知システム１０ａにおいては、図２９のステップＳ２１１５ａ、Ｓ２１１５ｂ及びＳ２１１５ｃで、暗号化アプリを部分復号して得られた復号文Ｍ１、Ｍ２及びＭ３を受信し、ステップＳ２１１６でアプリを復号しているが、保護制御モジュール１２０ａは、さらに検知モジュールから受信した部分復号により得られた復号文が正しいかを検証するとしてもよい。
【０５００】
この場合、保護制御モジュール１２０ａは、初期設定処理時に、管理装置２００から部分復号により得られた復号文の検証値を受信する。この検証値は、部分復号により得られた復号文のハッシュ値であってもよいし、部分復号により得られた復号文のＭＡＣ値であってもよい。
【０５０１】
保護制御モジュール１２０ａは、図２９のステップＳ２１１６でアプリを復号する前に、検証値を用いて検知モジュールから受信した部分復号により得られた復号文が正しいか否かを検証する。
【０５０２】
これにより、検知モジュールから受信した部分復号により得られた復号文が正しくないことを検出することができ、どの検知モジュールが異常な復号文を送信したかを特定することができる。こうして、異常な復号文を送信した検知モジュールは改ざんされていると判断し、改ざんされた検知モジュールを無効化することで、システムの安全性を向上することができる。
【０５０３】
（７）検知システム１０においては、初期設定において、次に示すようにして、暗復号鍵を分解するとしてもよい。
【０５０４】
分散鍵生成部６１０は、図３６に示すように、暗復号鍵ｄ（６３１）を分解して、分散鍵ｄ１（６５１）、ｄ２（６５２）、ｄ３（６５３）、ｄ４（６５４）、ｄ５（６５５）及びｄ６（６５６）を生成する。
【０５０５】
ここで、ｄ＝ｄ１（＋）ｄ２（＋）ｄ３＝ｄ４（＋）ｄ５（＋）ｄ６を満たすものとする。このとき、（＋）は、排他的論理和を表す。
【０５０６】
暗復号鍵を復元するときには、検知モジュール選択部３１０に保持されている検知モジュール群を含む検知モジュールリストから、検知モジュールの組合せを選択し、選択された検知モジュールに分散鍵を送信しておく。
【０５０７】
一例として、検知モジュール選択部３１０が保持する検知モジュールリスト３５１ａを図３７に示す。
【０５０８】
保護制御モジュール１２０は、各検知モジュールから分散鍵を受信し、受信した複数の分散鍵を用いて、暗復号鍵を復元する。
【０５０９】
検知モジュール選択部３１０が検知モジュール１３１、１３２、１３３を選択した場合、受信した分散鍵からｄ１（＋）ｄ２（＋）ｄ３を計算し、暗復号鍵ｄを復元する。
【０５１０】
これにより、暗復号鍵を取得しようとする攻撃者は、暗復号鍵が復元できる組合せを知らない限り、暗復号鍵が復元できない。
【０５１１】
さらに、攻撃者が検知モジュールをランダムに攻撃し、検知モジュール１３１、１３２、１３３を含む４つ以上の検知モジュールから分散鍵を取得したとしても、正しい組合せの検知モジュール（例えば、検知モジュール１３１、１３２、１３３）を選択しない限り、暗復号鍵を復元することはできない。
【０５１２】
攻撃者が検知モジュール１３１、１３２、１３３、１３４から、分散鍵ｄ１、ｄ２、ｄ３及びｄ４を取得し、ｄ１（＋）ｄ２（＋）ｄ３（＋）ｄ４を計算しても、ｄ≠ｄ１（＋）ｄ２（＋）ｄ３（＋）ｄ４であり、攻撃者は、暗復号鍵ｄを求めることができない。
【０５１３】
秘密分散法を用いた分解では、分散鍵ｄ１、ｄ２、ｄ３、ｄ４から暗復号ｄは求めることができるが、排他的論理和を用いた分解では、暗復号鍵ｄを求めることができない。
【０５１４】
（８）検知システム１０では、図２１のステップＳ２０１６において保護制御モジュール１２０がアプリの終了を通知し、検知モジュールは、アプリの終了を受信後、改ざん検出用証明書による改ざん検出を行っている。
【０５１５】
しかし、本発明はこれに限定されない。図１９のステップＳ２００７において、暗復号鍵を消去した後、保護制御モジュール１２０は、検知モジュールに暗復号鍵の消去を通知し、暗復号鍵の消去の通知を受け取った後で、検知モジュールは、改ざん検出用証明書による改ざん検出を行うとしてもよい。
【０５１６】
また、保護制御モジュール１２０は、図１９のステップＳ２００６において、暗号化アプリの復号を完了した直後に、暗復号鍵を消去するものとし（Ｓ２００７）、保護制御モジュール１２０は、暗号化アプリの復号が完了すると、暗号化アプリの復号の完了の通知を各検知モジュールへ送信し、各検知モジュールは、暗号化アプリの復号の完了の通知を受け取った後に、改ざん検出用証明書による改ざん検出を行うとしてもよい。
【０５１７】
（９）検知システム１０においては、図２１のステップＳ２０１６において保護制御モジュール１２０がアプリの終了を通知し、検知モジュールは、アプリの終了の通知を受け取ると、改ざん検出用証明書による改ざん検出を行っている。
【０５１８】
しかし、保護制御モジュール１２０が改ざんされている場合、保護制御モジュール１２０は、アプリの終了を通知しない可能性がある。
【０５１９】
また、変形例（８）においては、保護制御モジュール１２０は、検知モジュールに暗復号鍵の消去を通知し、暗復号鍵の消去の通知を受け取った後で、検知モジュールは、改ざん検出用証明書による改ざん検出を行ってもよいとしている。
【０５２０】
しかし、保護制御モジュール１２０が改ざんされている場合、保護制御モジュール１２０は、暗復号鍵の消去を通知しない可能性がある。
【０５２１】
さらに、変形例（８）においては、保護制御モジュール１２０は、暗号化アプリの復号が完了すると、暗号化アプリの復号の完了の通知を各検知モジュールへ送信し、各検知モジュールは、暗号化アプリの復号の完了の通知を受け取った後に、改ざん検出用証明書による改ざん検出を行うとしてもよい。
【０５２２】
しかし、保護制御モジュール１２０が改ざんされている場合、保護制御モジュール１２０は、暗号化アプリの復号の完了の通知しない可能性がある。
【０５２３】
そのため、このような場合に備えて、アプリの実行の開始から、一定期間が過ぎても、上記の通知がされない場合には、検知モジュールは、保護制御モジュール１２０の改ざん検出を実行するとしてもよい。ここで、一定期間は、例えば、アプリの復号に要する時間であるとしてもよい。また、一定期間は、サーバから予め通知されている時間であるとしてもよい。
【０５２４】
（１０）各実施の形態及び変形例においては、各検知モジュールは、１個の分散鍵を保持しているが、これには限定されない。
【０５２５】
第１の検知モジュールは、自身に割り当てられた分散鍵を保持するとともに、他の第２の検知モジュールに割り当てられた分散鍵を保持するとしてもよい。このとき、第２の検知モジュールが攻撃された場合、攻撃された第２の検知モジュールの分散鍵を保持している第１の検知モジュールは、攻撃された第２の検知モジュールに割り当てられた分散鍵を分解して、再分散鍵を生成し、生成した再分散鍵を他の攻撃されていない検知モジュールに送信するとしてもよい。これにより、サーバ装置を介さずに、攻撃されていない検知モジュールが保持する分散鍵の更新が可能となる。他の検知モジュールの分散鍵を保持し、分散鍵の更新を行う処理に関しては、特許文献１に詳しく説明されているので、ここでは省略する。
【０５２６】
（１１）各実施の形態及び変形例において、第１の検知モジュールが改ざんされた場合、改ざんされた第１の検知モジュールの無効化処理を実行するとしてもよい。
【０５２７】
また、無効化処理を実行後、新たな第２の検知モジュールを機器内に追加してインストールするとしてもよい。このとき、新たな第２の検知モジュールに予め分散鍵ｄｘを保持した状態でインストールする。ここで、無効化処理で無効化された第１の検知モジュールの分散鍵をｄｙとする。第２の検知モジュールは、分散鍵の差分ｄｙ−ｄｘを他の第３の検知モジュールに送信する。第３の検知モジュールは、分散鍵の差分ｄｙ−ｄｘを受信し、保持する分散鍵ｄｚに差分ｄｙ−ｄｘを加算することで、分散鍵を更新する。
【０５２８】
これにより、暗復号鍵ｄの値を変更せずに、改ざんされた検知モジュールの無効化処理及び新たな検知モジュールの追加処理を実行することができる。
【０５２９】
また、無効化された第１の検知モジュールの分散鍵が漏洩している可能性があるが、新たな検知モジュール群の分散鍵のいずれとも等しくないため、新たな検知モジュール群の分散鍵の漏洩にはつながらない。上記を担保するために、ｄｘ−ｄｙ＋ｄｚが他の検知モジュールの分散鍵と同じ値とならないにする。
【０５３０】
（１２）各実施の形態及び変形例においては、各検知モジュールは、１個の分散鍵を保持しているが、これには、限定されない。
【０５３１】
第１の検知モジュールが、自分に割り当てられた分散鍵を保持するとともに、他の第２の検知モジュールの分散鍵を保持するとしてもよい。このとき、第２の検知モジュールが攻撃された場合、攻撃された第２の検知モジュールの分散鍵を保持している第１の検知モジュールが、攻撃された第２の検知モジュールの分散鍵をサーバ装置に送信する。サーバ装置は、分散鍵を受信し、受信した分散鍵を分解して、複数の再分散鍵を生成し、生成した複数の再分散鍵を、攻撃されていない検知モジュールへ送信する。攻撃されていない各検知モジュールは、再分散鍵を受け取り、自身の保持する分散鍵を更新する。サーバ装置が、分散鍵を受信した以降の処理は、図３５のステップＳ３００２以降の処理と同様であるので、ここでは省略する。
【０５３２】
（１３）各記実施の形態及び変形例においては、全ての検知モジュールの分散鍵が互いに等しくならないよう、分散鍵を生成するとしてもよい。これにより、それぞれの検知モジュールから分散鍵が漏洩しても、他の検知モジュールの分散鍵が漏洩しない。
【０５３３】
これに対して、もし、二つの検知モジュールの分散鍵が同じであれば、これらのいずれかの検知モジュールの分散鍵が漏洩すると、二つの検知モジュールの両方の分散秘密の漏洩につながってしまう。
【０５３４】
（１４）検知システム１０ｂにおいては、管理装置２００は、無効化対象の検知モジュールの分散鍵を取得し、取得した分散鍵を分解して、複数の再分散鍵を生成し、生成した複数の再分散鍵を、それぞれ、無効化対象でない検知モジュールへ送信する。無効化対象でない各検知モジュールは、再分散鍵を受信し、受信した再分散鍵を用いて、当該検知モジュールが保持する分散鍵を更新している。しかし、これには、限定されない。
【０５３５】
管理装置２００は、私有鍵ｄから再度各検知モジュールに送信すべき分散鍵を新たに生成しなおし、新たな分散鍵を無効化対象でない各検知モジュールに送信する。無効化対象でない各検知モジュールは、受信した新たな分散鍵を分散鍵保持部４０６で保持する分散鍵に置き換えるとしてもよい。
【０５３６】
（１５）上記の各モジュールは、具体的には、それぞれ個別のコンピュータプログラムであってもよいし、オペレーティングシステムに組み込まれるモジュールであってもよいし、オペレーティングシステムから呼ばれるドライバであってもよいし、アプリケーションプログラムであってもよい。
【０５３７】
（１６）次のように構成してもよい。
【０５３８】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置であるとしてもよい。前記管理装置は、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成回路と、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力回路とを備えるとしてもよい。
【０５３９】
また、本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置を構成する集積回路であるとしてもよい。前記集積回路は、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成回路と、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力回路とを備えるとしてもよい。
【０５４０】
さらに、本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールと、前記保護制御モジュールの改ざんを監視する複数の検知モジュールとを管理する管理装置であるとしてもよい。前記管理装置は、複数のコンピュータ命令が組み合わされて構成されるコンピュータプログラムを記憶しているメモリ部と、前記メモリ部に記憶されている前記コンピュータプログラムから１個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備えるとしてもよい。前記コンピュータプログラムは、コンピュータである前記管理装置に、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵を生成する分散鍵生成ステップと、生成した複数の前記分散鍵を、それぞれ、複数の前記検知モジュールに出力する出力ステップとを実行させるとしてもよい。
【０５４１】
（１７）次のように構成してもよい。
【０５４２】
本発明の一態様は、アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールであるとしてもよい。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、各検知モジュールにより、前記分散鍵が内部に記憶される。前記保護制御モジュールは、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得回路と、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元回路と、前記復元回路により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号回路と、前記復号回路による復号が終了した後、前記復号鍵を消去する消去回路とを備えるとしてもよい。
【０５４３】
また、本発明の一態様は、アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールを構成する集積回路であるとしてもよい。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、各検知モジュールにより、前記分散鍵が内部に記憶される。前記集積回路は、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得回路と、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元回路と、前記復元回路により復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号回路と、前記復号回路による復号が終了した後、前記復号鍵を消去する消去回路とを備えるとしてもよい。
【０５４４】
さらに、本発明の一態様は、アプリケーションプログラムを保護し、複数の検知モジュールにより改ざんを監視される保護制御モジュールであるとしてもよい。前記保護制御モジュールは、複数のコンピュータ命令が組み合わされて構成されるコンピュータプログラムを記憶しているメモリ部と、前記メモリ部に記憶されている前記コンピュータプログラムから１個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備える。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵を分解して、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力され、各検知モジュールにより、前記分散鍵が内部に記憶される。前記コンピュータプログラムは、コンピュータである前記保護制御モジュールに、複数の前記検知モジュールからそれぞれ前記分散鍵を取得する取得ステップと、取得した複数の前記分散鍵を統合して、前記復号鍵を復元する復元ステップと、前記復元ステップにより復元された前記復号鍵を用いて、暗号化された前記アプリケーションプログラムを復号する復号ステップと、前記復号ステップによる復号が終了した後、前記復号鍵を消去する消去ステップとを実行させるとしてもよい。
【０５４５】
（１８）次のように構成してもよい。
【０５４６】
本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールであるとしてもよい。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。前記検知モジュールは、前記分散鍵を取得する取得回路と、取得した前記分散鍵を記憶する記憶回路と、前記保護制御モジュールに対して、前記分散鍵を出力する出力回路とを備えるとしてもよい。
【０５４７】
また、本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールを構成する集積回路であるとしてもよい。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。前記集積回路は、前記分散鍵を取得する取得回路と、取得した前記分散鍵を記憶する記憶回路と、前記保護制御モジュールに対して、前記分散鍵を出力する出力回路とを備えるとしてもよい。
【０５４８】
また、本発明の一態様は、アプリケーションプログラムを保護する保護制御モジュールに対して、改ざんを監視する複数の検知モジュールのうちの一の検知モジュールであるとしてもよい。前記検知モジュールは、複数のコンピュータ命令が組み合わされて構成されるコンピュータプログラムを記憶しているメモリ部と、前記メモリ部に記憶されている前記コンピュータプログラムから１個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備えるとしてもよい。管理装置により、暗号化された前記アプリケーションプログラムを復号するための復号鍵が分解され、複数の分散鍵が生成され、生成された複数の前記分散鍵が、それぞれ、複数の前記検知モジュールに出力される。前記コンピュータプログラムは、コンピュータである前記検知モジュールに、前記分散鍵を取得する取得ステップと、取得した前記分散鍵を前記メモリ部に記憶させるステップと、前記保護制御モジュールに対して、前記分散鍵を出力する出力ステップとを実行させるとしてもよい。
【０５４９】
（１９）次のように構成してもよい。
【０５５０】
本発明の一態様は、アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、前記検知モジュールのそれぞれは、アプリケーションを暗復号する暗復号鍵を分解した分散鍵を保持する分散鍵保持手段と、前記分散鍵を前記保護制御モジュールへ送信する送信手段とを備え、前記保護制御モジュールは、暗号化された前記アプリケーションの復号時に、前記検知モジュールから分散鍵を受信する受信手段と、前記分散鍵から前記暗復号鍵を復元する暗復号鍵復元手段と、前記暗復号鍵を用いて暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号手段とを備えることを特徴とする。
【０５５１】
この構成によれば、アプリ復号時には保護制御モジュールによる暗号化アプリの復号処理を検証するので、保護制御モジュールが保持する暗復号鍵を検知モジュールに公開することなく、保護制御モジュールが改ざんされているか否かを判定することができる。
【０５５２】
また、アプリ復号時以外、検知モジュールが分散鍵を送信してから、暗復号鍵の消去通知を受けるまでの期間以外では、保護制御モジュールはアプリの暗復号鍵を保持しないため、検知モジュールが保護制御モジュールを改ざん検出で、保護制御モジュールが改ざんされているか否かを保護制御モジュールのデータを読み込み、改ざん検出用証明書を用いて、判定することができる。
【０５５３】
これにより、検知モジュールが改ざんされ不正動作をしたとしても、保護制御モジュールの情報やアプリの情報が漏洩することがないので、システムの安全性を高めることができる。 
【０５５４】
また、保護制御モジュールはアプリの暗復号鍵を保持しないため、保護制御モジュールが攻撃されたとしても暗復号鍵が漏洩することがなく、保護制御モジュールの情報やアプリの情報が漏洩することがないので、システムの安全性を高めることができる。
【０５５５】
ここで、前記保護制御モジュールは、前記出力データを、少なくともｋ（ｋ≧２）個の分解データに分解する分解手段と、分解されたｋ個の分解データを、いずれかの検知モジュールに分配する分配手段と、前記複数の検知モジュールのそれぞれは、分配された分解データ、前記入力データと前記復号手段が正常動作を行った場合に期待される、分解データの値とに基づいて生成された検証データ、および、入力データを用いて、分配された分解データが正しいか否かを判断する検証手段を備えるとしてもよい。
【０５５６】
これにより、アプリ復号時には保護制御モジュール１２０による暗号化アプリの復号処理を検証するので、保護制御モジュール１２０が保持する暗復号鍵を検知モジュールに公開することなく、保護制御モジュール１２０が改ざんされているか否かを判定することができる。
【０５５７】
ここで、前記保護制御モジュールは、前記暗復号鍵を消去する消去手段を備え、前記検知モジュールは、前記保護制御モジュールが改ざんされているか否かを検証する改ざん検出手段を備え、前記保護制御モジュールが前記暗復号鍵復元手段で前記暗復号鍵を復元してから前記消去手段で暗復号鍵を消去が完了するまでの時間以外には、前記改ざん検出手段を実行するとしてもよい。
【０５５８】
これにより、アプリ復号時以外、検知モジュールが分散鍵を送信してから、暗復号鍵の消去通知を受けるまでの期間以外では、保護制御モジュールはアプリの暗復号鍵を保持しないため、検知モジュールが保護制御モジュールを改ざん検出で、保護制御モジュールが改ざんされているか否かを保護制御モジュールのデータを読み込み、改ざん検出用証明書を用いて、判定することができる。
【０５５９】
ここで、前記保護制御モジュールは、前記消去手段を実行後、前記検知モジュールに消去完了を通知する通知送信手段を備え、前記検知モジュールは、前記保護制御モジュールから暗復号鍵の消去完了の通知を受信する通知受信手段と、前記通知手段による前記通知の受信により、前記消去手段で暗復号鍵の消去が完了したと判断するとしてもよい。
【０５６０】
また、本発明の別の態様である情報処理装置は、アプリケーションを保護する機能を有する保護制御モジュールと、複数の検知モジュールとを含む情報処理装置であって、前記検知モジュールのそれぞれは、アプリケーションを復号する復号鍵を分解した分散鍵を保持する分散鍵保持手段と、暗号化された前記アプリケーションが入力データとして入力され、前記入力データを前記分散鍵で部分復号し、復号結果を出力データとして出力する部分復号手段と、前記出力データを保護制御モジュールへ送信する送信手段とを備え、前記保護制御モジュールは、前記検知モジュールから出力データを受信する受信手段と、複数の前記出力データから復号した前記アプリケーションを計算するアプリケーション復号手段とを備えることを特徴とする。
【０５６１】
これにより、アプリの暗復号鍵を保護制御モジュール内で復元しないため、保護制御モジュールが改ざんされた場合であっても、アプリの暗復号鍵の漏洩を防止することができる。
【０５６２】
ここで、前記検知モジュールは、前記保護制御モジュールが改ざんされているか否かを検証する改ざん検出手段とを備えるとしてもよい。
【０５６３】
これにより、アプリ復号時に関わらず、検知モジュールが保護制御モジュールを改ざん検出で、保護制御モジュールが改ざんされているか否かを保護制御モジュールのデータを読み込み、改ざん検出用証明書を用いて、判定することができる。さらに、保護制御モジュールが改ざんされたとしてもすぐに検出することができ、システムの安全性を高めることができる。
【０５６４】
ここで、前記改ざん検出手段は、前記検知モジュールの前記復号手段の実行開始から前記保護制御モジュールの前記アプリケーション復号手段の実行完了まで時間は、前記保護制御モジュールの検知処理の実行頻度を高くするとしてもよい。
【０５６５】
ここで、前記保護制御モジュールは、前記アプリケーション復号手段を実行後、前記検知モジュールに実行完了を通知する通知送信手段を備え、前記検知モジュールは、前記保護制御モジュールから前記アプリケーション復号手段の実行完了の通知を受信する通知受信手段と、前記通知手段による前記通知の受信により、前記アプリケーション復号手段の実行が完了したと判断するとしてもよい。
【０５６６】
ここで、前記検知モジュールは、ネットワークを介して管理装置と接続し、前記管理装置から更新用の分散鍵を受信する分散鍵受信手段と、前記分散鍵受信手段で受信した分散鍵と前記分散鍵保持手段で保持している分散鍵から新しい分散鍵を生成し、前記分散鍵保持手段で保持する分散鍵を更新する更新手段とを備えるとしてもよい。
【０５６７】
これにより、アプリの暗復号鍵を保持する検知モジュールが改ざんされたとしても、改ざんされた検知モジュール以外の検知モジュールが保持する分散鍵を更新することで、アプリの暗復号鍵が復元できないことを防止することができる。また、検知モジュールが改ざんされたとしても、アプリの暗復号ができ、改ざんされた検知モジュールを無効化することで、システムの安全性を高めることができる。
【０５６８】
ここで、前記情報処理装置は、ネットワークを介して管理装置と接続し、前記管理装置から検知モジュールが前記管理装置から更新用の分散鍵を受信する分散鍵受信手段と、前記分散鍵受信手段で受信した分散鍵と前記分散鍵保持手段で保持している分散鍵から新しい分散鍵へ更新する更新手段とを備えることを特徴とする。
【０５６９】
また、本発明の別の態様である管理装置は、入力された暗号化データを複数の処理工程を経て復号する復号手段を備え、各処理工程を検証する情報処理装置と接続された管理装置であって、前記複数の処理工程への入力データと前記復号手段が正常動作を行った場合に期待される各処理工程からの出力データとから、検証基データを生成する検証基データ生成手段と、生成した前記検証基データを前記情報処理装置へ送信する送信手段とを備えることを特徴とする。
【０５７０】
ここで、前記情報処理装置の前記復号手段は、暗号化された複数のアプリケーションを復号し、前記検証基データ生成手段は、前記複数の処理工程のそれぞれに対応し、前記複数のアプリケーションのそれぞれについて、暗号化されたアプリケーションと、前記復号手段が正常動作を行った場合に期待される各処理工程の入力データと出力データとの対応関係を示す検証値と、複数の前記検証値を結合したデータから生成された結合データ検証値とを含む複数個の前記検証基データを生成するとしてもよい。
【０５７１】
（２０）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０５７２】
（２１）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０５７３】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
【０５７４】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０５７５】
（２２）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０５７６】
（２３）本発明の一態様は、各装置の動作を制御する制御方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０５７７】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０５７８】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０５７９】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０５８０】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。      
【０５８１】
（２４）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０５８２】
本発明にかかる改ざん監視システムは、保護制御モジュールが、常時、復号鍵を保持することなく、暗号化されたアプリケーションプログラムを復号する時間帯においてのみ、復号鍵を保持し、復号終了後には、当該復号鍵を消去するので、保護制御モジュールから、前記復号鍵が不正に漏洩する可能性を低くすることができ、情報処理装置等の機器内部で動作するモジュール等の改ざんを監視する技術として有用である。
【符号の説明】
【０５８３】
１０、１０ａ、１０ｂ  検知システム
１０ｄ  改ざん監視システム
１００  機器
１１０、１１１、１１２、１１３、１１４  アプリ
１２０、１２０ａ、１２０ｂ  保護制御モジュール
１３０、１３０ａ、１３０ｂ  検知モジュール群
１３１、１３２、１３３、１３４、１３５  検知モジュール
１７１  ＣＰＵ
１７２  ＥＥＰＲＯＭ
１７３  ＲＡＭ
１７４  ＮＩＣ
１８０  ＯＳ
１９０  ブートローダ
２００、２００ｄ  管理装置
２１０  判断部
２２０  ソフトウェア配布部
２３０  通信部
３０１  受信部
３０２  送信部
３０３  制御部
３０４  復号ロード部
３０５  改ざん検出部
３０６  解析ツール検出部
３０７  暗復号鍵復元部
３０８  検証基データ保持部
３０９  検証データ生成部
３１０  検知モジュール選択部
４０１  受信部
４０２  送信部
４０３  制御部
４０４  検証部
４０５  検証データ保持部
４０６  分散鍵保持部
４１０  復号部
４２０  分散鍵更新部
５０１  受信部
５０２  送信部
５０３  指示生成部
６０１  受信部
６０２  送信部
６０３  制御部
６０４  認証部
６０５  証明書生成部
６０６  署名私有鍵保持部
６０７  暗復号鍵保持部
６０８  ソフトウェア保持部
６０９  検証基データ生成部
６１０  分散鍵生成部
【図１】
2012124270.tif 000003
【図２】
2012124270.tif 000004
【図３】
2012124270.tif 000005
【図４】
2012124270.tif 000006
【図５】
2012124270.tif 000007
【図６】
2012124270.tif 000008
【図７】
2012124270.tif 000009
【図８】
2012124270.tif 000010
【図９】
2012124270.tif 000011
【図１０】
2012124270.tif 000012
【図１１】
2012124270.tif 000013
【図１２】
2012124270.tif 000014
【図１３】
2012124270.tif 000015
【図１４】
2012124270.tif 000016
【図１５】
2012124270.tif 000017
【図１６】
2012124270.tif 000018
【図１７】
2012124270.tif 000019
【図１８】
2012124270.tif 000020
【図１９】
2012124270.tif 000021
【図２０】
2012124270.tif 000022
【図２１】
2012124270.tif 000023
【図２２】
2012124270.tif 000024
【図２３】
2012124270.tif 000025
【図２４】
2012124270.tif 000026
【図２５】
2012124270.tif 000027
【図２６】
2012124270.tif 000028
【図２７】
2012124270.tif 000029
【図２８】
2012124270.tif 000030
【図２９】
2012124270.tif 000031
【図３０】
2012124270.tif 000032
【図３１】
2012124270.tif 000033
【図３２】
2012124270.tif 000034
【図３３】
2012124270.tif 000035
【図３４】
2012124270.tif 000036
【図３５】
2012124270.tif 000037
【図３６】
2012124270.tif 000038
【図３７】
2012124270.tif 000039
【国際調査報告】
2012124270.tif 000040
2012124270.tif 000041
2012124270.tif 000042
2012124270.tif 000043