(57)【要約】  【課題】機器におけるソフトウェア更新処理に対する信頼性を高め、より安全にソフトウェアを更新することができるソフトウェア更新システムを提供する。  【解決手段】更新サーバ２００は、機器１００から、保護制御モジュール１２０及び更新モジュール群１３０に含まれる各更新モジュールの改ざんに係る検証結果を取得する。更新サーバ２００は、取得した検証機器に応じて、機器１００の処理順序を決定する。具体的に、保護制御モジュール１２０及び更新モジュールが共に不正であると判断する場合、更新サーバ２００は、不正な更新モジュールの無効化に優先して、不正な保護制御モジュール１２０を更新する指示を、機器１００に送信する。【選択図】図５
2010152877.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置と正当な管理装置とがネットワークを介して接続されており、前記情報処理装置上で動作するソフトウェアを更新するソフトウェア更新システムであって、
前記情報処理装置は、
ソフトウェアを更新する機能を有し、相互に改ざんの有無を検証し合う複数の更新モジュールと、
前記複数の更新モジュールによる検証結果を、前記管理装置へ送信する送信手段とを備え、
前記管理装置は、
前記複数の更新モジュールによる検証結果を受信する受信手段と、
受信した前記検証結果に基づき、各更新モジュールが正当であるか否か判断する判断手段と、
前記判断手段からの指示を受け、不正であると判断された更新モジュールの無効化指示を前記情報処理装置に送信する無効化手段とを備える
ことを特徴とするソフトウェア更新システム。
【請求項２】
前記複数の更新モジュールのそれぞれは、他の更新モジュールを無効化する機能を有し、
前記無効化手段は、無効化処理を行う更新モジュールを選択し、前記判断手段により不正であると判断された前記更新モジュールを指定する識別情報を含む前記無効化指示を、選択された前記更新モジュールへ送信し、
前記無効化指示を受け付けた更新モジュールは、前記識別情報により指定される更新モジュールを無効化する
ことを特徴とする請求項１に記載のソフトウェア更新システム。
【請求項３】
前記情報処理装置は、
秘匿データを保護する機能を有する保護制御モジュールを含み、
前記複数の更新モジュールのそれぞれは、更に、前記保護制御モジュールの改ざんの有無を検証し、前記管理装置から前記保護制御モジュールの更新用ファイルを受信すると、前記保護制御モジュールを更新し、
前記管理装置は、更に、
前記判断手段からの指示を受け、不正な保護制御モジュールを更新するための更新用ファイルを前記情報処理装置へ配布する配布手段を備え、
前記受信手段は、更に、前記保護制御モジュールに係る検証結果を受信し、
前記判断手段は、前記保護制御モジュールに係る検証結果を用いて前記保護制御モジュールが正当であるか否か判断し、判断結果と予め保持している判断基準とに応じて決定される処理順序に従い前記無効化手段及び前記配布手段へ指示を出力する
ことを特徴とする請求項２に記載のソフトウェア更新システム。
【請求項４】
前記判断手段は、前記保護制御モジュールが不正であると判断する場合、前記更新モジュールの無効化に優先して、前記保護制御モジュールを更新するように前記処理順序を決定する
ことを特徴とする請求項３に記載のソフトウェア更新システム。
【請求項５】
前記判断手段は、前記保護制御モジュールが正当であると判断する場合、前記更新モジュールの無効化を優先的に行うように前記処理順序を決定する
ことを特徴とする請求項３に記載のソフトウェア更新システム。
【請求項６】
前記判断手段は、前記保護制御モジュールが不正であると判断し、且つ、前記複数の更新モジュールの全てが不正であると判断する場合、前記無効化手段及び前記配布手段への指示に代えて、前記情報処理装置を停止させる指示を生成し、
前記情報処理装置は、前記管理装置から停止の指示を受信すると、処理を停止する
ことを特徴とする請求項３に記載のソフトウェア更新システム。
【請求項７】
前記保護制御モジュールは、更に、前記複数の更新モジュールの改ざんの有無を検証し、
前記受信手段は、更に、前記保護制御モジュールによる前記複数の更新モジュールに係る検証結果を受信し、
前記判断手段は、
前記保護制御モジュールにより改ざんが検出された更新モジュールに係る、他の更新モジュールによる検証結果を用いて、当該更新モジュールが正当であるか否かを判断し、
当該更新モジュールが不正であると判断する場合に、前記保護制御モジュールは正当であると判断し、当該更新モジュールが正当であると判断する場合に、前記保護制御モジュールが不正であると判断する
ことを特徴とする請求項３に記載のソフトウェア更新システム。
【請求項８】
前記管理装置は、更に、
前記判断手段からの指示を受けて、前記情報処理装置に追加の更新モジュールを送信するモジュール追加手段を備え、
前記判断手段は、前記情報処理装置へ無効化指示を送信した後において、前記情報処理装置に含まれる更新モジュールの数が所定値以下であるか否か判断し、更新モジュールの数が所定値以下の場合、前記モジュール追加手段に更新モジュールの追加を指示する
ことを特徴とする請求項３に記載のソフトウェア更新システム。
【請求項９】
前記判断手段は、前記保護制御モジュールが正当であるか否かの判断結果に応じて決定される処理順序に従い、前記モジュール追加手段及び前記配布手段へ指示を出力する
ことを特徴とする請求項８に記載のソフトウェア更新システム。
【請求項１０】
前記判断手段は、前記保護制御モジュールが不正であると判断する場合、前記追加の更新モジュールの送信に優先して、前記保護制御モジュールを更新するように前記処理順序を決定する
ことを特徴とする請求項９に記載のソフトウェア更新システム。
【請求項１１】
前記判断手段は、前記保護制御モジュールが正当であると判断する場合、前記追加の更新モジュールの送信を優先的に行うように前記処理順序を決定する
ことを特徴とする請求項９に記載のソフトウェア更新システム。
【請求項１２】
前記情報処理装置は、更に、
前記秘匿データを含み、且つ、暗号化されているアプリケーションプログラムを備え、
前記複数の更新モジュールは、各更新モジュールが多角形の端点に位置するように仮想的に配置されており、
前記複数の更新モジュールのそれぞれは、前記暗号化アプリケーションプログラムを復号するための復号鍵から所定の鍵分散法に従って生成された複数の分散鍵のうち、自身に割り当てられた分散鍵及び前記多角形における両隣の端点に配置されている更新モジュールに割り当てられた分散鍵を保持しており、
前記保護制御モジュールは、前記複数の更新モジュールから、少なくとも３個の分散鍵を取得して前記復号鍵を復元し、前記暗号化アプリケーションプログラムを復号する
ことを特徴とする請求項８に記載のソフトウェア更新システム。
【請求項１３】
前記判断手段は、不正であると判断された更新モジュールが無効化されることにより、ある更新モジュールの両隣の更新モジュールが無効化される場合、前記モジュール追加手段に、前記両隣の更新モジュールのうち、少なくとも一方の更新モジュールの追加を指示する
ことを特徴とする請求項１２記載のソフトウェア更新システム。
【請求項１４】
前記判断手段は、前記保護制御モジュールが不正であると判断する場合、前記更新モジュールの両隣の更新モジュールのうち、少なくとも一方の更新モジュールの追加に優先して、前記保護制御モジュールを更新するように前記処理順序を決定する
ことを特徴とする請求項１３に記載のソフトウェア更新システム。
【請求項１５】
前記判断手段は、前記保護制御モジュールが正当であると判断する場合、前記更新モジュールの両隣の更新モジュールのうち、少なくとも一方の更新モジュールの追加を優先的に行うように前記処理順序を決定する
ことを特徴とする請求項１３に記載のソフトウェア更新システム。
【請求項１６】
前記保護制御モジュールは、更に、前記アプリケーションプログラムの改ざんの有無を検出し、
前記複数の更新モジュールのそれぞれは、前記モジュール追加手段から追加の更新モジュールを受信すると、受信した更新モジュールを追加する機能を有し、
前記モジュール追加手段から追加の更新モジュールを受信した更新モジュールは、前記保護制御モジュールによる前記アプリケーションプログラムの改ざん検出が終了したのちに、受信した更新モジュールを追加する
ことを特徴とする請求項１３に記載のソフトウェア更新システム。
【請求項１７】
前記判断手段は、不正であると判断された更新モジュールが無効化されることにより、ある更新モジュールの片隣の更新モジュールのみが無効化される場合には、前記モジュール追加手段に、前記片隣の更新モジュールの追加を指示しない
ことを特徴とする請求項１３に記載のソフトウェア更新システム。
【請求項１８】
ソフトウェアを更新する機能を有し、相互に改ざんの有無を検証し合う複数の更新モジュールを備える情報処理装置から、前記複数の更新モジュールによる検証結果を受信する受信手段と、
受信した前記検証結果に基づき、各更新モジュールが正当であるか否か判断する判断手段と、
前記判断手段からの指示を受け、不正であると判断された更新モジュールの無効化指示を前記情報処理装置に送信する無効化手段とを備える
ことを特徴とする管理装置。
【請求項１９】
ソフトウェアを更新する機能を有し、相互に改ざんの有無を検証し合う複数の更新モジュールを備える情報処理装置から、前記複数の更新モジュールによる検証結果を受信する受信ステップと、
受信した前記検証結果に基づき、各更新モジュールが正当であるか否か判断する判断ステップと、
前記判断ステップからの指示を受け、不正であると判断された更新モジュールの無効化指示を前記情報処理装置に送信する無効化ステップと
を含むコンピュータプログラムを記録しているコンピュータ読み取り可能な記録媒体。
【請求項２０】
ソフトウェアを更新する機能を有し、相互に改ざんの有無を検証し合う複数の更新モジュールを備える情報処理装置から、前記複数の更新モジュールによる検証結果を受信する受信手段と、
受信した前記検証結果に基づき、各更新モジュールが正当であるか否か判断する判断手段と、
前記判断手段からの指示を受け、不正であると判断された更新モジュールの無効化指示を前記情報処理装置に送信する無効化手段とを備える
ことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器内部で動作するソフトウェアを更新する技術に関し、特に、当該機器が、サーバからの指示に従って安全にソフトウェアを更新する技術に関する。
【背景技術】
【０００２】
従来、機器内部のソフトウェアを更新するには、更新モジュールが定期的にネットワーク上のサーバに更新用ファイルが存在するか否かを確認する。そして、更新用ファイルが存在する場合、更新モジュールは、更新用ファイルをダウンロードし、ダウンロードした更新用ファイルで前記ソフトウェアを更新する。
しかし、更新モジュールが悪意の第三者により改ざんされると、ソフトウェアの更新が正しく行われない可能性がある。
【０００３】
そこで、機器内部に複数の更新モジュール（更新モジュール群）を保持しておき、各更新モジュールが相互に改ざんの有無を検証し合う。そして、改ざんされていることが検出された更新モジュールを無効化する、という技術が提案されている。これにより、更新モジュールの一つが改ざんされた場合であっても、残りの有効な更新モジュールを用いて、更新すべきソフトウェアを正しく更新することが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３０５６７３２号公報（第４−６頁、図２）
【特許文献２】ＷＯ２００８／０９９６８２
【非特許文献】
【０００５】
【非特許文献１】岡本龍明、山本博資、「現代暗号」、産業図書（１９９７年）
【非特許文献２】ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｘ．５０９  （１９９７  Ｅ）：Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ−Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ−Ｔｈｅ  Ｄｉｒｅｃｔｏｒｙ：Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ，１９９７
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、更新モジュールを無効化するか否かの判断や、処理順序の決定を機器内部だけで行うと、安全性が低下するという問題がある。
本発明は、上記の問題点に鑑みなされたものであって、更新モジュールの無効化の決定や処理順序の決定を機器内部で行うことなく、機器におけるソフトウェア更新処理に対する信頼性を高め、より安全にソフトウェアを更新することができるソフトウェア更新システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明の一実施態様であるソフトウェア更新システムは、情報処理装置と正当な管理装置とがネットワークを介して接続されており、前記情報処理装置上で動作するソフトウェアを更新するソフトウェア更新システムであって、前記情報処理装置は、ソフトウェアを更新する機能を有し、相互に改ざんの有無を検証し合う複数の更新モジュールと、前記複数の更新モジュールによる検証結果を、前記管理装置へ送信する送信手段とを備え、前記管理装置は、前記複数の更新モジュールによる検証結果を受信する受信手段と、受信した前記検証結果に基づき、各更新モジュールが正当であるか否か判断する判断手段と、前記判断手段からの指示を受け、不正であると判断された更新モジュールの無効化指示を前記情報処理装置に送信する無効化手段とを備えることを特徴とする。
【発明の効果】
【０００８】
上記の構成によると、正当な管理装置は、各更新モジュールから受信した検証結果を用いて各更新モジュールが不正であるか否か判断するので、改ざんされた更新モジュールが改ざんされていない他の更新モジュールを改ざんされていると偽って管理装置に通知した場合であっても、管理装置は、いずれの更新モジュールが不正であるかを適切に判断することができる。
【０００９】
さらに、管理装置から情報処理装置へ、不正であると判断された更新モジュールを無効化する指示を送信するので、改ざんされた不正な更新モジュールが、改ざんされていない更新モジュールを「改ざんされた」と偽って検証した場合であっても、正当な更新モジュールが無効化されることを防止し、且つ、不正な更新モジュールが情報処理装置内に残存するのを防止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態１におけるソフトウェア更新システム１０の全体構成図である。
【図２】本発明の実施の形態１における機器１００の構成図である。
【図３】本発明の実施の形態１における更新モジュール群１３０の構成図である。
【図４】本発明の実施の形態１におけるハードウェア構成図である。
【図５】本発明の実施の形態１における更新サーバ２００の構成図である。
【図６】本発明の実施の形態１における更新モジュールの構成図である。
【図７】本発明の実施の形態１における監視パターン情報の構成図である。
【図８】本発明の実施の形態１における更新モジュール本体の構成図である。
【図９】本発明の実施の形態１における保護制御モジュール１２０の構成図である。
【図１０】本発明の実施の形態１におけるアクセス制御モジュール１４０の構成図である。
【図１１】本発明の実施の形態１における判断部２１０の構成図である。
【図１２】本発明の実施の形態１における更新用ソフトウェア配布部２２０の構成図である。
【図１３】本発明の実施の形態１におけるモジュール無効化部２３０の構成図である。
【図１４】本発明の実施の形態１におけるモジュール追加部２４０の構成図である。
【図１５】本発明の実施の形態１における監視パターン更新部２５０の構成図である。
【図１６】本発明の実施の形態１におけるソフトウェア更新システム１０のフローチャートである。
【図１７】本発明の実施の形態１におけるソフトウェア更新システム１０の初期設計時の動作概要図である。
【図１８】本発明の実施の形態１における初期設計処理のシーケンス図である。
【図１９】本発明の実施の形態１における初期設計処理（更新モジュール初期化処理）のフローチャートである。
【図２０】本発明の実施の形態１における検知処理のシーケンス図である。
【図２１】本発明の実施の形態１における解析・判断処理のシーケンス図である。
【図２２】本発明の実施の形態１における解析・判断処理（通常時判断処理）のシーケンス図である。
【図２３】本発明の実施の形態１における解析・判断処理（相互監視処理）のシーケンス図である。
【図２４】本発明の実施の形態１における解析・判断処理（通常時無効化判断処理）のフローチャートである。
【図２５】本発明の実施の形態１における無効化処理のシーケンス図である。
【図２６】本発明の実施の形態１における解析・判断処理（追加判断処理）のフローチャートである。
【図２７】本発明の実施の形態１における追加処理のシーケンス図である。
【図２８】本発明の実施の形態１における解析・判断処理（監視パターン更新判断処理）のフローチャートである。
【図２９】本発明の実施の形態１における相互認証処理のシーケンス図である。
【図３０】本発明の実施の形態１における相互認証処理のシーケンス図である。
【図３１】本発明の実施の形態１における回復処理のフローチャートである。
【図３２】本発明の実施の形態１における回復処理のシーケンス図である。
【図３３】本発明の実施の形態１における回復処理（更新処理）のシーケンス図である。
【図３４】本発明の実施の形態１における回復処理（更新処理）のシーケンス図である。
【図３５】本発明の実施の形態１における回復処理（回復時相互監視処理）のシーケンス図である。
【図３６】本発明の実施の形態１における回復処理（回復時判断処理）のフローチャートである。
【図３７】本発明の実施の形態１における回復処理（再暗号化処理）のシーケンス図である。
【図３８】本発明の実施の形態１における回復処理（回復時無効化判断処理）のフローチャートである。
【図３９】本発明の実施の形態１における次ラウンド準備処理のシーケンス図である。
【図４０】本発明の実施の形態１における監視パターンの更新例の図である。
【図４１】本発明の実施の形態１における通常時の処理の優先順位の図である。
【図４２】本発明の実施の形態１における回復時の処理の優先順位の図である。
【図４３】本発明の実施の形態２における更新モジュールの構成図である。
【図４４】本発明の実施の形態２における監視パターン更新検証例の図である。
【図４５】本発明の実施の形態２における監視パターン更新部２５０の構成図である。
【図４６】本発明の実施の形態２における監視パターン更新処理のシーケンス図である。
【図４７】本発明の実施の形態２における新監視パターンへの更新処理のシーケンス図である。
【図４８】本発明の実施の形態３における更新モジュール群１３０の構成図である。
【図４９】本発明の実施の形態３における更新モジュールが保持する分散情報の構成例の図である。
【図５０】本発明の実施の形態３における解析・判断処理（通常時無効化判断処理）のフローチャートである。
【図５１】本発明の実施の形態３における更新モジュールが半数以上危殆化した例の図である。
【図５２】本発明の実施の形態３における更新モジュールの３つが危殆化した例の図である。
【図５３】本発明の実施の形態３における更新モジュール１３１の両隣の更新モジュールが危殆化した例の図である。
【図５４】本発明の実施の形態３における回復処理（回復時判断処理）のフローチャートである。
【図５５】本発明の変形例１における回復処理（更新処理）のシーケンス図である。
【図５６】本発明の変形例１における回復処理（更新処理）のシーケンス図である。
【図５７】本発明の変形例４７における追加用更新モジュールの分割例の図である。
【図５８】本発明の変形例６９における解析・判断処理（追加判断処理）のフローチャートである。
【図５９】本発明の変形例７１における更新モジュールが保持する分散情報の構成例の図である。
【図６０】本発明の変形例７２における更新モジュールが保持する分散情報の構成例の図である。
【図６１】本発明の実施の形態２の相互監視において各モジュールの監視先、監視元を表す模式図である。
【発明を実施するための形態】
【００１１】
請求項１に記載の態様であるソフトウェア更新システムは、情報処理装置と正当な管理装置とがネットワークを介して接続されており、前記情報処理装置上で動作するソフトウェアを更新するソフトウェア更新システムであって、前記情報処理装置は、ソフトウェアを更新する機能を有し、相互に改ざんの有無を検証し合う複数の更新モジュールと、前記複数の更新モジュールによる検証結果を、前記管理装置へ送信する送信手段とを備え、前記管理装置は、前記複数の更新モジュールによる検証結果を受信する受信手段と、受信した前記検証結果に基づき、各更新モジュールが正当であるか否か判断する判断手段と、前記判断手段からの指示を受け、不正であると判断された更新モジュールの無効化指示を前記情報処理装置に送信する無効化手段とを備えることを特徴とする。
【００１２】
請求項２に記載の態様であるソフトウェア更新システムにおいて、前記複数の更新モジュールのそれぞれは、他の更新モジュールを無効化する機能を有し、前記無効化手段は、無効化処理を行う更新モジュールを選択し、前記判断手段により不正であると判断された前記更新モジュールを指定する識別情報を含む前記無効化指示を、選択された前記更新モジュールへ送信し、前記無効化指示を受け付けた更新モジュールは、前記識別情報により指定される更新モジュールを無効化するように構成してもよい。
【００１３】
この構成によると、管理装置の無効化手段が、正当な更新モジュールを選択して無効化処理を実施させることにより、情報処理装置では、不正な更新モジュールの無効化を正しく行うことが可能となる。
請求項３に記載の態様であるソフトウェア更新システムにおいて、前記情報処理装置は、秘匿データを保護する機能を有する保護制御モジュールを含み、前記複数の更新モジュールのそれぞれは、更に、前記保護制御モジュールの改ざんの有無を検証し、前記管理装置から前記保護制御モジュールの更新用ファイルを受信すると、前記保護制御モジュールを更新し、前記管理装置は、更に、前記判断手段からの指示を受け、不正な保護制御モジュールを更新するための更新用ファイルを前記情報処理装置へ配布する配布手段を備え、前記受信手段は、更に、前記保護制御モジュールに係る検証結果を受信し、前記判断手段は、前記保護制御モジュールに係る検証結果を用いて前記保護制御モジュールが正当であるか否か判断し、判断結果と予め保持している判断基準とに応じて決定される処理順序に従い前記無効化手段及び前記配布手段へ指示を出力するように構成してもよい。
【００１４】
この構成によると、管理装置は、情報処理装置の状態に応じた処理順序に従い、前記無効化手段及び前記配布手段へ指示を出力するので、情報処理装置は、安全な処理順序で不正な更新モジュールの無効化処理及び不正な保護制御モジュールの更新処理を行うことができる。
請求項４に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、前記保護制御モジュールが不正であると判断する場合、前記更新モジュールの無効化に優先して、前記保護制御モジュールを更新するように前記処理順序を決定するように構成してもよい。
【００１５】
この構成によると、秘匿データを保護する機能を有する保護制御モジュールが不正であると判断する場合、前記保護制御モジュールの更新処理を優先して行うので、更新モジュールの無効化処理中に、不正な保護制御モジュールを介して本来保護すべき秘匿データが攻撃されるのを防止することができる。
請求項５に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、前記保護制御モジュールが正当であると判断する場合、前記更新モジュールの無効化を優先的に行うように前記処理順序を決定するように構成してもよい。
【００１６】
この構成によると、秘匿データを保護する機能を有する保護制御モジュールが健全な状態であることを確認した後に、更新モジュールを無効化するので、更新モジュールの無効化処理中に、不正な保護制御モジュールを介して、本来保護すべき秘匿データが攻撃されるのを防止することができる。
請求項６に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、前記保護制御モジュールが不正であると判断し、且つ、前記複数の更新モジュールの全てが不正であると判断する場合、前記無効化手段及び前記配布手段への指示に代えて、前記情報処理装置を停止させる指示を生成し、前記情報処理装置は、前記管理装置から停止の指示を受信すると、処理を停止するように構成してもよい。
【００１７】
この構成によると、情報処理装置が攻撃されている可能性が高い場合には、管理装置から情報処理装置の処理を停止させることができるので、情報処理装置への攻撃が、ネットワークを介して接続されている他の装置に影響を及ぼすのを防止することができる。
請求項７に記載の太陽であるソフトウェア更新システムにおいて、前記保護制御モジュールは、更に、前記複数の更新モジュールの改ざんの有無を検証し、前記受信手段は、更に、前記保護制御モジュールによる前記複数の更新モジュールに係る検証結果を受信し、前記判断手段は、前記保護制御モジュールにより改ざんが検出された更新モジュールに係る、他の更新モジュールによる検証結果を用いて、当該更新モジュールが正当であるか否かを判断し、当該更新モジュールが不正であると判断する場合に、前記保護制御モジュールは正当であると判断し、当該更新モジュールが正当であると判断する場合に、前記保護制御モジュールが不正であると判断するように構成してもよい。
【００１８】
この構成によると、保護制御モジュールによる改ざん検出結果と、各更新モジュールによる改ざん検出結果とを用いることで、保護制御モジュールが正当であるか不正であるかを確実に判断することが可能となる。
請求項８に記載の態様であるソフトウェア更新システムにおいて、前記管理装置は、更に、前記判断手段からの指示を受けて、前記情報処理装置に追加の更新モジュールを送信するモジュール追加手段を備え、前記判断手段は、前記情報処理装置へ無効化指示を送信した後において、前記情報処理装置に含まれる更新モジュールの数が所定値以下であるか否か判断し、更新モジュールの数が所定値以下の場合、前記モジュール追加手段に更新モジュールの追加を指示するように構成してもよい。
【００１９】
この構成によると、相互検証を行う複数の更新モジュールの数を一定に保つことができるので、情報処理装置は、更新モジュールの改ざん検証を安定して行うことができる。
請求項９に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、前記保護制御モジュールが正当であるか否かの判断結果に応じて決定される処理順序に従い、前記モジュール追加手段及び前記配布手段へ指示を出力するように構成してもよい。
【００２０】
この構成によると、情報処理装置は、安全な処理順序で更新モジュールの追加処理及び不正な保護制御モジュールの更新処理を行うことができる。
請求項１０に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、前記保護制御モジュールが不正であると判断する場合、前記追加の更新モジュールの送信に優先して、前記保護制御モジュールを更新するように前記処理順序を決定するように構成してもよい。
【００２１】
この構成によると、更新モジュールの追加処理中に、不正な保護制御モジュールを介して、本来保護すべき秘匿データが攻撃されるのを防止することができる。
請求項１１に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、前記保護制御モジュールが正当であると判断する場合、前記追加の更新モジュールの送信を優先的に行うように前記処理順序を決定するように構成してもよい。
【００２２】
この構成によると、保護制御モジュールが正当であるとことを確認した後に、更新モジュールの追加処理を行うので、更新モジュールの追加処理中に、不正な保護制御モジュールを介して、本来保護すべき秘匿データが攻撃されるのを防止することができる。
請求項１２に記載の態様であるソフトウェア更新システムにおいて、前記情報処理装置は、更に、前記秘匿データを含み、且つ、暗号化されているアプリケーションプログラムを備え、前記複数の更新モジュールは、各更新モジュールが多角形の端点に位置するように仮想的に配置されており、前記複数の更新モジュールのそれぞれは、前記暗号化アプリケーションプログラムを復号するための復号鍵から所定の鍵分散法に従って生成された複数の分散鍵のうち、自身に割り当てられた分散鍵及び前記多角形における両隣の端点に配置されている更新モジュールに割り当てられた分散鍵を保持しており、前記保護制御モジュールは、前記複数の更新モジュールから、少なくとも３個の分散鍵を取得して前記復号鍵を復元し、前記暗号化アプリケーションプログラムを復号するように構成してもよい。
【００２３】
この構成によると、複数の更新モジュールのそれぞれに分散鍵を割り当てることにより、保護制御モジュールが解析されても復号鍵が暴露されず、アプリケーションプログラムの機密性を担保することができる。
請求項１３に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、不正であると判断された更新モジュールが無効化されることにより、ある更新モジュールの両隣の更新モジュールが無効化される場合、前記モジュール追加手段に、前記両隣の更新モジュールのうち、少なくとも一方の更新モジュールの追加を指示するように構成してもよい。
【００２４】
この構成によると、ある更新モジュールに割り当てられた分散鍵を保持する更新モジュールの数を複数に維持できるので、ある更新モジュールの両隣の更新モジュールが無効化され、更に、ある更新モジュールが無効化された場合であっても、前記復号鍵を復元することができる。
請求項１４に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、前記保護制御モジュールが不正であると判断する場合、前記更新モジュールの両隣の更新モジュールのうち、少なくとも一方の更新モジュールの追加に優先して、前記保護制御モジュールを更新するように前記処理順序を決定するように構成してもよい。
【００２５】
この構成によると、保護制御モジュールが不正であると判断する場合、保護制御モジュールの更新処理を優先して行うので、更新モジュールの追加処理中に、不正な保護制御モジュールを介して、本来保護すべき秘匿データが攻撃されるのを防止することができる。
請求項１５に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、前記保護制御モジュールが正当であると判断する場合、前記更新モジュールの両隣の更新モジュールのうち、少なくとも一方の更新モジュールの追加を優先的に行うように前記処理順序を決定するように構成してもよい。
【００２６】
この構成によると、保護制御モジュールが正当であることを確認した後に、更新モジュールの追加処理を行うので、更新モジュールの追加処理中に、不正な保護制御モジュールを介して、本来保護すべき秘匿データが攻撃されるのを防止することができる。
請求項１６に記載の態様であるソフトウェア更新システムにおいて、前記保護制御モジュールは、更に、前記アプリケーションプログラムの改ざんの有無を検出し、前記複数の更新モジュールのそれぞれは、前記モジュール追加手段から追加の更新モジュールを受信すると、受信した更新モジュールを追加する機能を有し、前記モジュール追加手段から追加の更新モジュールを受信した更新モジュールは、前記保護制御モジュールによる前記アプリケーションプログラムの改ざん検出が終了したのちに、受信した更新モジュールを追加するように構成してもよい。
【００２７】
この構成によると、本来保護すべき秘匿データを含むアプリケーションプログラムの改ざん検出処理を優先的に行うことにより、更新モジュールの追加処理中に、アプリケーションプログラムが攻撃されるのを防止することができる。
請求項１７に記載の態様であるソフトウェア更新システムにおいて、前記判断手段は、不正であると判断された更新モジュールが無効化されることにより、ある更新モジュールの片隣の更新モジュールのみが無効化される場合には、前記モジュール追加手段に、前記片隣の更新モジュールの追加を指示しないように構成してもよい。
【００２８】
この構成によると、前記片隣の更新モジュールが無効化されたとしても、前記更新モジュールに割り当てられた分散鍵を保有する更新モジュールは複数存在するので、更新モジュールの追加処理を行わなくとも、前記復号鍵を復元することができる。
以下では、本発明に係る一つの実施形態であるソフトウェア更新システムについて、図面を参照して説明する。
（実施の形態１）
１．ソフトウェア更新システム１０の構成
図１は、本発明の実施の形態１におけるソフトウェア更新システム１０の全体構成図である。
【００２９】
ソフトウェア更新システム１０は、図１に示すように、本発明の情報処理装置である機器１００と、本発明の管理装置である更新サーバ２００とから構成され、機器１００と更新サーバ２００とは、ネットワークを介して接続されている。
機器１００は、ユーザに対してネットワークを利用した様々な機能を提供する情報処理装置である。具体的には、機器１００は、ネットワークを介して、音楽コンテンツや映像コンテンツ等を購入し、再生する。また、機器１００は、ネットワークを介して、ネットバンキングサービス（残高照会や振り込み等）を利用する。
【００３０】
２．機器１００の構成
ここでは、図２から図４を用いて、機器１００の構成について説明する。
機器１００は、図２に示すように、アプリ１１０、アプリ１１１、保護制御モジュール１２０、更新モジュール群１３０及びアクセス制御モジュール１４０から構成される。
アプリ１１０及びアプリ１１１は、ネットワークを介して、機器１００を使用するユーザに、様々な機能を提供するためのソフトウェアである。例えば、コンテンツ配信サーバ（不図示）から音楽コンテンツや映像コンテンツを購入し、その購入したコンテンツを再生するソフトウェアや、金融機関のシステム（不図示）にアクセスし、残高照会や振り込み等のネットバンキングを行うためのソフトウェアである。
【００３１】
アプリ１１０及びアプリ１１１は、コンテンツ配信サーバや金融機関のシステムと認証を行うための認証鍵など、秘匿データを有している。秘匿データは、悪意のある第三者（攻撃者）によりアプリから抜き取られ、不正に利用されないよう保護する必要があるデータである。
保護制御モジュール１２０は、攻撃者によりアプリ（１１０、１１１）が解析され、認証鍵などの秘匿データが抜き取られないようにアプリ（１１０、１１１）を保護するための機能を制御するモジュールである。アプリを保護するための機能としては、アプリを利用しない時には暗号化して保存しておき、アプリを利用する時にのみ復号してメモリへロードする復号ロード機能や、アプリが改ざんされていないかをチェックする改ざん検出機能、デバッガなどの解析ツールが動作しないかをチェックする解析ツール検出機能などがある。
【００３２】
保護制御モジュール１２０は、これらの機能の動作を制御し、アプリ（１１０、１１１）が攻撃者によって解析されていないかなどをチェックする。保護制御モジュール１２０が、アプリ（１１０、１１１）に対する攻撃を検出したときには、アプリ（１１０、１１１）の動作を停止し、アプリ（１１０、１１１）が利用していたメモリ、特に秘匿データが記録されたメモリ領域のクリアなどの処理を行い、秘匿データの漏洩を防止する。
【００３３】
図３は、実施の形態１に係る更新モジュール群１３０の構成図である。更新モジュール群１３０は、更新モジュール１３１、更新モジュール１３２及び更新モジュール１３３から構成される。
更新モジュール１３１、更新モジュール１３２及び更新モジュール１３３は、機器１００の外部にある更新サーバ２００から更新用のソフトウェアを受信し、受信した更新用のソフトウェアを用いて、機器１００の内部のソフトウェア（アプリ１１０、アプリ１１１、保護制御モジュール１２０等）を更新する機能を備える。
【００３４】
更に、更新モジュール群１３０は、攻撃者によって各更新モジュールが改ざんされ、各更新モジュールを不正に利用されることを防止するために、更新モジュール同士が相互に改ざん検出を実施する。これにより、更新モジュール群１３０の一部が攻撃され、改ざんされた場合においても、それを検出し、攻撃に対処することが可能となる。なお、各更新モジュール（１３１、１３２、１３３）の構成については後述する。
【００３５】
アクセス制御モジュール１４０は、更新モジュール（１３１、１３２、１３３）が他のモジュールを消去するために必要なアクセス情報を保持する。アクセス情報は、消去対象であるモジュールの消去に必要な情報（モジュールが配置されているアドレスや消去に必要な手順が書かれた手順書等）である。アクセス制御モジュール１４０は、消去対象であるモジュール毎に、それぞれ個別のアクセス情報取得鍵で暗号化された状態のアクセス情報を保持している。
【００３６】
ここで、図２に戻って、機器１００のソフトウェア階層について説明する。図２に示すように、アクセス制御モジュール１４０及び更新モジュール群１３０は、ＯＳ１５０の中に組み込まれている。アプリ１１０及びアプリ１１１は、ＯＳ１５０上で動作し、保護制御モジュール１２０及びブートローダ１６０は、ＯＳ１５０の管理外にある。
機器１００の起動の際には、まず保護制御モジュール１２０及び更新モジュール群１３０が起動された上でアプリケーションが実行される。
【００３７】
続いて、図４を用いて、機器１００のハードウェア構成について説明する。図４に示すように、機器１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１７１、不揮発メモリ（例えば、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ Ｏｎｌｙ  Ｍｅｍｏｒｙ））１７２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）１７３、及びＮＩＣ（Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ）１７４等を含んで構成され、これらはバスを介して相互に通信可能に接続されている。
【００３８】
ＥＥＰＲＯＭ１７２には、保護制御モジュール１２０、更新モジュール（１３１、１３２、１３３）、及びアプリ（１１０、１１１）等が格納されている。
ＥＥＰＲＯＭ１７２に格納されている各種モジュールをＣＰＵ１７１が実行することにより、各種モジュールの各機能部が実現される。各機能部は、具体的には、コンピュータプログラムによって記述されている。
【００３９】
ＲＡＭ１７３は、ＣＰＵ１７１のワークエリアとして用いられる。ＲＡＭ１７３には更新モジュール（１３１、１３２、１３３）及びアプリ（１１０、１１１）がロードされる。ＲＡＭ１７３上で動作している更新モジュールが、保護制御モジュール１２０による改ざんチェック及び無効化の対象となる。
ＮＩＣ１７４は、ネットワークに接続するための拡張カードである。
【００４０】
３．更新サーバ２００の構成
次に、更新サーバ２００の構成について説明する。更新サーバ２００は、機器１００内部のソフトウェアを更新するために必要な更新用のソフトウェアを配布する装置である。
図５は、実施の形態１における更新サーバ２００の構成図である。更新サーバ２００は、判断部２１０、更新用ソフトウェア配布部２２０、モジュール無効化部２３０、モジュール追加部２４０、監視パターン更新部２５０及び通信部２６０から構成される。
【００４１】
判断部２１０は、機器１００内部のソフトウェア（アプリ１１０、１１１、保護制御モジュール１２０、更新モジュール群１３０）の状態に応じて、予め与えられた判断基準を用いて、機器１００が次に実行すべき処理を決定する。そして、更新サーバ２００内部の各モジュール（更新用ソフトウェア配布部２２０、モジュール無効化部２３０、モジュール追加部２４０、監視パターン更新部２５０）に指示を行う。
【００４２】
更新用ソフトウェア配布部２２０は、機器１００内部のソフトウェア（アプリ１１０、１１１、保護制御モジュール１２０）を更新する時に、判断部２１０の更新処理開始指示に応じて、更新モジュール群１３０と連携して動作し、更新用のソフトウェアを機器１００へ安全に送信する。
モジュール無効化部２３０は、機器１００の更新モジュール群１３０の更新モジュールを無効化する時に、判断部２１０のモジュール無効化の指示に応じて、更新モジュール群１３０と連携して動作し、アクセス情報取得鍵を、無効化対象である更新モジュールの無効化処理を行う更新モジュールへ配布する。
【００４３】
モジュール追加部２４０は、機器１００の更新モジュール群１３０に更新モジュールを追加する時に、判断部２１０のモジュール追加の指示に応じて、更新モジュール群１３０と連携し、追加用の更新モジュールを機器１００へ安全に送信する。
監視パターン更新部２５０は、機器１００の更新モジュール群１３０の監視パターンを更新する時に、判断部２１０の監視パターン更新の指示に応じて、更新モジュール群１３０と連携し、更新モジュール群１３０内の各更新モジュールの監視パターンを更新するために必要なデータを送信する。
【００４４】
通信部２６０は、機器１００との間で情報の送受信を行う。通信部２６０は、機器１００から受信した情報を、情報の種類に応じて、更新サーバ２００の各部に出力する。また、通信部２６０は、更新サーバ２００の各部から指示や情報を受け取り、機器１００に送信する。
具体的には、通信部２６０は、更新処理の際に、更新用ソフトウェア配布部２２０から受け取った指示や通知などを機器１００に送信したり、機器１００から受信した改ざん検出の結果を判断部２１０に送信したりする。
【００４５】
また、通信部２６０は、無効化処理では、モジュール無効化部２３０と機器１００との間で指示や情報を送受信する。また、通信部２６０は、追加処理では、モジュール追加部２４０と機器１００との間で指示や情報を送受信し、監視パターン更新処理では、監視パターン更新部２５０と機器１００との間で指示や情報を送受信する。
機器１００と更新サーバ２００とは、ネットワークを介して接続され、機器１００内部のソフトウェア（アプリ１１０、１１１、保護制御モジュール１２０）を更新する場合には、更新モジュール群１３０と更新用ソフトウェア配布部２２０とが連携して動作し、機器１００内部のソフトウェアを更新するために、更新用のソフトウェアをインストールする。
【００４６】
また、機器１００内部のソフトウェア（アプリ１１０、１１１、保護制御モジュール１２０、更新モジュール１３１、１３２、１３３）が攻撃され改ざんされた場合には、改ざんされていない更新モジュールとアクセス制御モジュール１４０とモジュール無効化部２３０とが連携して動作し、改ざんされたソフトウェアを消去する。
また、更新モジュール群１３０の更新モジュールの数が消去により減少した場合には、改ざんされていない更新モジュールとモジュール追加部２４０とが連携して動作し、更新モジュールを追加する。
【００４７】
また、更新モジュールの消去や追加により更新モジュール間の相互監視の監視パターンに変更が必要になった場合には、監視パターン更新部２５０と更新モジュール群１３０とが連携して動作し、監視パターンを更新する。
なお、機器１００と更新サーバ２００との間の通信は、データを暗号化する等により、セキュリティを確保した通信路を用いてもよい。
【００４８】
４．更新モジュール１３１、１３２、１３３の構成
次に、更新モジュール群１３０に含まれる更新モジュールの構成について説明する。ここでは、更新モジュール１３１の構成について説明するが、他の更新モジュールも基本的に同一の構成を有する。
図６は、更新モジュール１３１の構成図である。更新モジュール１３１は、更新モジュール本体、更新モジュール検証用証明書、ＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値テーブル及び監視パターン情報から構成される。
【００４９】
更新モジュール本体は、ソフトウェアの更新処理を行うプログラムである。更新モジュール本体の詳細は後述する。
更新モジュール検証用証明書は、更新モジュール本体が改ざんされていないかを検証するための証明書である。更新モジュール本体を検証するモジュールは、更新モジュール本体と本検証用証明書とを取得し、更新モジュール本体が改ざんされていないか検証を行う。
【００５０】
ＭＡＣ値テーブルは、モジュールの改ざんの有無の検証にＭＡＣ値を利用する場合に使用されるテーブルである。本テーブルには、モジュールを識別するためのモジュール識別子と、そのモジュールに対応するＭＡＣ値とが対になって格納されている。モジュールの改ざん検出は、対象のモジュールを取得し、ＭＡＣ値を計算し、計算されたＭＡＣ値とＭＡＣ値テーブルに格納されている対象モジュールのＭＡＣ値とを比較することにより行う。
【００５１】
監視パターン情報は、更新モジュールが相互監視を行うときの監視対象に関する情報である。図７は、監視パターン情報の構成図である。監視パターン情報は、監視パターン本体、監視頻度及び検証値リストから構成される。
監視パターン本体には、監視対象であるモジュールに関する情報（例えば、モジュール識別子、メモリ上の位置、サイズ、アドレス、ファイル名等）が記述されている。監視パターン本体には、複数の監視パターンが記述可能であり、複数の監視パターンを記述する場合には、それぞれを、監視パターン識別子で区別する。監視パターン本体のデータ構造は、先頭にヘッダ情報として監視パターンの数と監視パターンそれぞれのサイズとが記述され、それ以降に、監視パターン識別子と監視パターンとの組が記述される。
【００５２】
監視頻度は、監視パターン本体に記述されている監視対象を監視するタイミングに関する情報である。監視パターン情報に監視頻度を含めることにより、監視の頻度を任意に調整できるので、更新モジュールの改ざんを適切に検証できる。
タイミングに関する情報としては、監視を行う時刻や、繰り返し監視を行う場合はその時間間隔などである。また、監視パターン本体に複数の監視パターンが記述されている場合には、監視パターン毎に監視頻度を記述してもよい。その場合、監視頻度と、その監視頻度を利用する監視パターンの監視パターン識別子とを記述する。また、複数の監視パターンのうち、使用する監視パターンを選択するタイミングを記述してもよい。更新モジュール１３１、１３２、１３３は、タイミング情報に応じて、監視パターンに記述されているモジュールを監視する。
【００５３】
検証値リストは、監視パターン本体及び監視頻度を、更新サーバ２００から正しく取得し、更新できたかを検証するための検証値が記述されている。
続いて、図８を用いて更新モジュール本体について説明する。図８は、更新モジュール１３１における更新モジュール本体の構成図である。同図に示すように、更新モジュール本体は、受信部３０１、送信部３０２、制御部３０３、更新部３０４、検証部３０５、ＭＡＣ値生成部３０６、ＭＡＣ値テーブル更新部３０７、監視パターン取得部３０８、監視パターン更新部３０９及び分散情報保持部３１０から構成される。
【００５４】
受信部３０１は、更新サーバ２００から、各種指示、通知、更新用ソフトウェアを受信する。また、受信部３０１は、相互監視を行うために必要な、他の更新モジュールの更新モジュール本体及び更新用モジュール検証用証明書を受信する。さらに、受信部３０１は、他のモジュールへ依頼した処理の結果を受信したり、他の更新モジュールによる保護制御モジュール１２０の監視結果を受信する。
【００５５】
送信部３０２は、更新サーバ２００、保護制御モジュール１２０、他の更新モジュール、アクセス制御モジュール１４０へ、各種処理結果や証明書などのデータを送信する。
制御部３０３は、受信部３０１が受信した各種指示及び通知に基づいて、更新部３０４、検証部３０５及び監視パターン更新部３０９を制御し、保護制御モジュール１２０、更新モジュール１３２及び更新モジュール１３３の更新処理及び検証処理、監視パターンの更新処理を行う。
【００５６】
更新部３０４は、更新サーバ２００と連携して、機器１００内部のソフトウェア（アプリ１１０、１１１、保護制御モジュール１２０、更新モジュール１３２、１３３）を更新する。
検証部３０５は、保護制御モジュール１２０、更新モジュール１３２、１３３が正当か否かの検証を行う。検証方法としては、各モジュールに付加されている検証用の証明書を用いる方法や、事前に計算されたメッセージ認証コード（ＭＡＣ）値を用いる方法がある。
【００５７】
検証部３０５がどのモジュールをどのタイミングで検証するかは、監視パターン情報に記述されている。検証部３０５は、監視パターン情報から、監視パターン本体及び監視頻度を取得し、それらの情報に応じて検証を行う。監視パターンが複数ある場合には、更新サーバ２００からの指示に応じて、利用する監視パターン及び監視頻度を変更する。例えば、更新サーバ２００から、利用する監視パターン及び監視頻度をその都度指示してもよいし、どの時刻にどの監視パターン、どの監視頻度で監視を行うかが記述されたタイムチャートを用いて指示してもよい。また、機器１００の状態と、監視パターン及び監視頻度とを対応付けたものを用いて指示してもよい。
【００５８】
機器１００の状態の具体例としては、「保護制御モジュール更新状態」、「保護制御モジュール非更新状態」や、「検証処理中」、「解析・判断処理中」、「回復処理中」などがある。そして、機器１００の状態が「保護制御モジュール非更新状態」の場合、大まかな監視パターンで監視頻度を低くし、機器１００の状態が「保護制御モジュール更新状態」の場合、細かな監視パターンで監視頻度を高くしてもよい。
【００５９】
このように、保護制御モジュール１２０の回復時に更新モジュールの検証をより厳重に行うことにより、更新モジュールが改ざんされ、更新モジュールの正常な動作が妨害されるのを一層効果的に防止できる。
ＭＡＣ値生成部３０６は、検証部３０５が使用するＭＡＣ値を生成する。ＭＡＣ値生成部３０６は、予め保持している検証鍵を用いてＭＡＣ値を生成する。
【００６０】
ＭＡＣ値テーブル更新部３０７は、各モジュールのＭＡＣ値が格納されているＭＡＣ値テーブルを更新する。
監視パターン取得部３０８は、検証部３０５が検証処理を行うときの、監視対象のモジュールが記述されている監視パターンを取得する。監視パターンが複数ある場合には、取得する監視パターンの識別子を検証部３０５から指示し、監視パターン取得部３０８は指示された監視パターンを、監視パターン情報から取得する。
【００６１】
監視パターン更新部３０９は、更新サーバ２００から監視パターン更新の指示を受けると、本モジュール（更新モジュール１３１）が保持する監視パターンを、更新サーバ２００から受信した新たな監視パターンへ更新する処理を行う。
分散情報保持部３１０は、保護制御モジュール１２０がアプリ（１１０、１１１）の暗復号処理を行うときに用いる暗復号鍵から生成された分散情報（ｓｈａｒｅ）と、保護制御モジュール１２０が分散情報を配布したときの配置情報とを保持する。配置情報は、どの分散情報をどの更新モジュールに配布したかを記述した情報である。
【００６２】
署名方式に関しては、非特許文献１に詳しく説明されており、証明書に関しては、非特許文献２に詳しく説明されている。また、分散情報に関しては、特許文献２に詳しく説明されている。
５．保護制御モジュール１２０の構成
図９は、機器１００の保護制御モジュール１２０の構成図である。同図に示すように、保護制御モジュール１２０は、受信部４０１、送信部４０２、制御部４０３、復号ロード部４０４、改ざん検出部４０５、解析ツール検出部４０６、暗復号鍵保持部４０７、暗復号鍵生成部４０８、暗復号鍵分散部４０９、証明書生成部４１０及び暗復号鍵復元部４１１から構成される。
【００６３】
受信部４０１は、更新モジュール１３１、１３２、１３３から、分散情報や各種依頼などを受信する。
送信部４０２は、更新モジュール１３１、１３２、１３３へ、各種依頼などを送信する。
制御部４０３は、復号ロード部４０４、改ざん検出部４０５及び解析ツール検出部４０６を制御し、アプリ（１１０、１１１）が攻撃者により攻撃されている場合に、それを検出する。
【００６４】
復号ロード部４０４は、暗号化して機器１００内部に保持されているアプリ（１１０、１１１）を実行するときに、暗復号鍵を用いて復号し、メモリ上にロードする処理を行う。また、アプリ（１１０、１１１）の実行中に、他のアプリへのコンテキストスイッチが発生した場合には、メモリ上のデータを、暗復号鍵を用いて暗号化する。そして、再びアプリ（１１０、１１１）へコンテキストスイッチしたときに、暗号化したデータを復号する。
【００６５】
さらに、復号ロード部４０４は、後述する再暗号化処理において、暗復号鍵復元部４１１から入力される復元された暗復号鍵を用いて、アプリ（１１０、１１１）を復号し、暗復号鍵保持部４０７が保持している新たな暗復号鍵を用いて、アプリ（１００、１１１）を暗号化する。
改ざん検出部４０５は、アプリ（１１０、１１１）の改ざんの有無を検出する改ざん検出処理を実行する。改ざん検出部４０５は、アプリ（１１０、１１１）に付加されている改ざん検出用の証明書を用いて改ざん検出処理を行ってもよいし、ＭＡＣ値を比較する方法を用いてもよい。
【００６６】
解析ツール検出部４０６は、デバッガなどの解析ツールがインストールされたり、動作したときにそれを検出する。不正な攻撃者がアプリ（１１０、１１１）を攻撃するために、解析ツールをインストールしたり、動作させることが想定されるからである。検出方法としては、例えば、ファイル名を検索する方法や、デバッガが使用する特殊なレジスタが使用されているかを調べる方法や、デバッガが設定する割り込みを検出する方法などを用いる。
【００６７】
暗復号鍵保持部４０７は、アプリ（１１０、１１１）を暗復号するための暗復号鍵を保持する。
暗復号鍵生成部４０８は、アプリ（１１０、１１１）を暗復号するための暗復号鍵を生成する。
暗復号鍵分散部４０９は、初期設計時及び次ラウンド準備時に、秘密分散法を用いて、暗復号鍵から分散情報を生成する。
【００６８】
証明書生成部４１０は、暗復号鍵から生成された分散情報を復元したときに、正しく復元できたか否かを検証するために使用する証明書を生成する。
暗復号鍵復元部４１１は、更新モジュールの構成に基づいて、各更新モジュールから分散情報を取得し、取得した分散情報から暗復号鍵を復元する。なお、更新モジュールの構成とは、更新モジュール群１３０内の分散情報の配置情報である。暗復号鍵復元部４１１は、復元した暗復号鍵を復号ロード部４０４に出力する。
【００６９】
６．アクセス制御モジュール１４０の構成
図１０は、機器１００のアクセス制御モジュール１４０の構成図である。同図に示すように、アクセス制御モジュール１４０は、受信部５０１、送信部５０２及びアクセス情報保持部５０３から構成される。
受信部５０１は、更新モジュール（１３１、１３２、１３３）から、改ざんされた更新モジュールを消去するために必要な情報であるアクセス情報の取得依頼を受信する。
【００７０】
送信部５０２は、アクセス情報取得依頼に応じて、アクセス情報取得を依頼してきた更新モジュールへアクセス情報を送信する。
アクセス情報保持部５０３は、更新モジュール１３１、１３２、１３３毎に、そのモジュールを消去するためのアクセス情報を保持する。
各アクセス情報は、消去対象となる更新モジュールの識別子（更新モジュール識別子）が付されており、識別子によって更新モジュールと対応付けられている。各アクセス情報は、アクセス情報取得鍵で暗号化されている。
【００７１】
更新モジュール１３１、１３２、１３３から、アクセス情報取得依頼があると、アクセス情報保持部５０３は、消去対象の更新モジュールの識別子が付されたアクセス情報を、送信部５０２を介して、更新モジュールへ送信する。
７．判断部２１０の構成
図１１は、更新サーバ２００の判断部２１０の構成図である。同図に示すように、判断部２１０は、受付部６０１、指示部６０２、指示生成部６０３、不正モジュール特定部６０４、判断基準読込部６０５及び判断基準格納部６０６から構成される。
【００７２】
受付部６０１は、更新モジュール１３１、１３２、１３３から、分散情報、各種依頼などを受信し、指示生成部６０３へ出力する。さらに、受付部６０１は、更新サーバ２００内の各部（更新用ソフトウェア配布部２２０、モジュール無効化部２３０、モジュール追加部２４０、監視パターン更新部２５０）から、処理が完了した通知を受け付けると、指示生成部６０３へ出力する。
【００７３】
指示部６０２は、指示生成部６０３で生成された指示を更新サーバ２００内の各部へ出力する。
指示生成部６０３は、判断基準読込部６０５から受け付けた判断基準に基づいて、機器１００の処理の優先順位を決定し、更新サーバ２００内の各部へ出力すべき指示を生成する。
【００７４】
具体的に、保護制御モジュール１２０が改ざんされていない場合、指示生成部６０３は、モジュール無効化部２３０へ更新モジュールの無効化処理を指示し、その後、モジュール追加部２４０へ更新モジュールの追加処理を指示し、さらに、その後、監視パターン更新部２５０へ監視パターンの更新処理を指示する。
一方、保護制御モジュール１２０が改ざんされている場合、指示生成部６０３は、更新用ソフトウェア配布部２２０へ保護制御モジュール１２０の回復処理を指示し、その後、モジュール無効化部２３０へ更新モジュールの無効化処理を指示する。更に、その後、モジュール追加部２４０へ更新モジュールの追加処理を指示し、監視パターン更新部２５０へ監視パターンの更新処理を指示する。
【００７５】
不正モジュール特定部６０４は、更新モジュール１３１、１３２、１３３から受信した相互監視結果（改ざん検出結果）を用いて、更新モジュールが改ざんされているか否かを判定し、更新モジュールが改ざんされていると判定した場合には、どの更新モジュールが改ざんされたかを特定する。さらに、不正モジュール特定部６０４は、更新モジュール１３１、１３２、１３３から受信した保護制御モジュール１２０についての改ざん検出結果から、保護制御モジュール１２０が改ざんされているか否かを判定する。
【００７６】
判断基準読込部６０５は、判断基準格納部６０６に格納されている判断基準を読み込み、指示生成部６０３へ出力する。
判断基準格納部６０６は、予め与えられた判断基準を格納している。判断基準は、機器１００の状態と処理の優先順位とを対応付けたものである。
８．更新用ソフトウェア配布部２２０の構成
図１２は、更新サーバ２００の更新用ソフトウェア配布部２２０の構成図である。同図に示すように、更新用ソフトウェア配布部２２０は、受信部７０１、送信部７０２、暗号鍵生成部７０３、暗号処理部７０４、認証部７０５、更新モジュール選択部７０６、制御部７０７、証明書生成部７０８、署名秘密鍵保持部７０９、更新用ソフトウェア保持部７１０及び暗号鍵保持部７１１から構成される。
【００７７】
受信部７０１は、更新モジュール１３１、１３２、１３３から保護制御モジュール１２０の改ざん検出結果や、他の更新モジュールの相互監視結果（改ざん検出結果）を受信する。
送信部７０２は、機器１００内部のソフトウェア（アプリ１１０、１１１、保護制御モジュール１２０）を更新する必要があるときに、更新モジュール１３１、１３２、１３３へ、更新処理開始の依頼、更新用ソフトウェア、復号に必要な鍵などのデータを送信する。
【００７８】
暗号鍵生成部７０３は、更新用ソフトウェアを更新モジュール１３１、１３２、１３３へ送信するときに使用する暗号鍵を生成する。
暗号処理部７０４は、暗号鍵生成部７０３が生成した暗号鍵を用いて、更新用ソフトウェアを暗号化する。また、各更新モジュールに固有の鍵を用いて、暗号鍵を暗号化する。
認証部７０５は、更新モジュール１３１、１３２、１３３、及び、保護制御モジュール１２０と相互認証を行う。
【００７９】
更新モジュール選択部７０６は、保護制御モジュール１２０を更新するときに、更新処理にどの更新モジュールを使用するかを選択する。そして、更新モジュール選択部７０６は、更新用の保護制御モジュールの暗号化に用いられた暗号鍵を、選択した更新モジュールに固有の鍵を用いて暗号化し、選択した更新モジュールへ送信する。
制御部７０７は、更新用ソフトウェア配布部２２０内の各構成要素を制御する。具体的には、制御部７０７は、複数の暗号鍵を用いた更新用ソフトウェアの多重暗号化、多重暗号化に使用した複数の暗号鍵の暗号化、及び、暗号化した更新用ソフトウェアと暗号鍵との更新モジュールへの送信を制御する。
【００８０】
ここで、暗号鍵及び更新用ソフトウェアは、一度に更新モジュール１３１、１３２、１３３へ送信するのではなく、更新処理の中で、それぞれのデータが必要になったタイミングで、それぞれの更新モジュール１３１、１３２、１３３へ送信する。
証明書生成部７０８は、署名秘密鍵を用いて、更新モジュール１３１、１３２、１３３の認証公開鍵に対する認証証明書を生成する。また、証明書生成部７０８は、更新用の新保護制御モジュールに対する更新検証証明書を生成する。更新検証証明書は、保護制御モジュールが正しく更新されたか否かを検証するために用いられる。
【００８１】
署名秘密鍵保持部７０９は、証明書生成部７０８による証明書の生成に用いられる署名秘密鍵を保持する。
更新用ソフトウェア保持部７１０は、保護制御モジュール１２０が攻撃された時に更新するための更新用の保護制御モジュールを保持する。
暗号鍵保持部７１１は、暗号鍵生成部７０３により生成された暗号鍵及び暗号処理部７０４により暗号化された暗号鍵を保持する。
【００８２】
９．モジュール無効化部２３０の構成
図１３は、更新サーバ２００のモジュール無効化部２３０の構成図である。同図に示すように、モジュール無効化部２３０は、受信部８０１、送信部８０２、アクセス情報取得鍵保持部８０３及び更新モジュール選択部８０４から構成される。
受信部８０１は、判断部２１０から不正に改ざんされた更新モジュールを消去する指示を受け付ける。また、受信部８０１は、機器１００の更新モジュール１３１、１３２、１３３からアクセス情報取得鍵の取得依頼を受信する。
【００８３】
送信部８０２は、アクセス情報取得鍵の取得依頼に応じて、アクセス情報取得鍵を、依頼してきた更新モジュールへ送信する。
アクセス情報取得鍵保持部８０３は、アクセス制御モジュール１４０が保持するアクセス情報を復号するためのアクセス情報取得鍵を保持する。
更新モジュール選択部８０４は、無効化対象の更新モジュール（改ざんされたと判定された更新モジュール）を消去する無効化処理を行う更新モジュールを選択し、選択した更新モジュールに、無効化処理を指示する。更新モジュール選択部８０４は、選択した更新モジュール（無効化処理を行う更新モジュール）からアクセス情報取得鍵の取得依頼があった場合には、消去対象となる更新モジュールの識別子を付加したアクセス情報取得鍵を、無効化処理を行う更新モジュールへ送信する。
【００８４】
１０．モジュール追加部２４０の構成
図１４は、更新サーバ２００のモジュール追加部２４０の構成図である。同図に示すように、モジュール追加部２４０は、受信部９０１、送信部９０２、更新モジュール選択部９０３、更新モジュール保持部９０４、更新モジュール分割部９０５及び制御部９０６から構成される。
【００８５】
受信部９０１は、判断部２１０から更新モジュール追加の指示と、この時点で更新モジュール群１３０に含まれている更新モジュールのリストとを受信する。
送信部９０２は、機器１００へ、追加用の更新モジュール及び更新モジュールが正しく追加されたかを検証するための検証値を送信する。また、送信部９０２は、判断部２１０へ、更新モジュールの追加処理の終了を通知する。
【００８６】
更新モジュール選択部９０３は、判断部２１０から受信した更新モジュールのリストから、更新モジュールの追加処理を行う更新モジュールを選択する。
更新モジュール保持部９０４は、追加用の更新モジュールを保持する。
更新モジュール分割部９０５は、更新モジュール保持部９０４から追加用の更新モジュールを１つ取得し、更新モジュール選択部９０３が選択した数に応じて、追加用の更新モジュールを分割する。更新モジュール分割部９０５は、分割した更新モジュールを、更新モジュール選択部９０３が選択した各更新モジュールへ送信する。
【００８７】
制御部９０６は、判断部２１０及び更新モジュール１３１、１３２、１３３と連携して、更新モジュールの追加処理を制御する。
１１．監視パターン更新部２５０の構成
図１５は、更新サーバ２００の監視パターン更新部２５０の構成図である。同図に示すように、監視パターン更新部２５０は、受信部１００１、送信部１００２、監視パターン生成部１００３、監視パターン分割部１００４及び制御部１００５から構成される。
【００８８】
受信部１００１は、判断部２１０から、監視パターン更新の指示と、この時点で更新モジュール群１３０に含まれている更新モジュールのリストとを受信する。
送信部１００２は、機器１００へ更新用の監視パターンを送信する。また、送信部１００２は、判断部２１０へ監視パターンの更新処理の終了を通知する。
監視パターン生成部１００３は、判断部２１０から受信した更新モジュールのリストから、どの更新モジュールがどの更新モジュールを監視するかを決定し、監視パターンを生成する。監視パターンの一例としては、各更新モジュールが他のすべての更新モジュールを監視するとしてもよい。
【００８９】
監視パターン分割部１００４は、監視パターン生成部１００３により生成された監視パターンを、それぞれの更新モジュール毎の監視パターンに分割する。そして、監視パターン分割部１００４は、分割した監視パターンを更新用の監視パターンとして、それぞれの更新モジュールに送信する。
制御部１００５は、監視パターン生成部１００３と監視パターン分割部１００４とを制御し、監視パターンの更新処理を行う。
【００９０】
１２．ソフトウェア更新システム１０の動作
続いて、図１６を用いて、ソフトウェア更新システム１０の動作について説明する。
先ず、ソフトウェア更新システム１０のインストール処理を説明する。インストール処理には、大まかに以下の９つの処理が含まれる。
１つ目は、初期設定処理である。初期設定処理では、ソフトウェア更新に必要な各種鍵データ及びソフトウェア更新後に必要となるデータから秘密分散法を用いて生成された分散情報を、各更新モジュール１３１、１３２、１３３に埋め込む。
【００９１】
２つ目は、検知処理である。検知処理では、機器１００内部のソフトウェア（アプリ１１０や１１１、保護制御モジュール１２０）が改ざんされていないかを検出する。
３つ目は、解析・判断処理である。解析・判断処理では、改ざんが検出された場合に、どのモジュールが改ざんされたかの判定、及び改ざんされた原因の解析を行い、改ざんされたモジュールを含むソフトウェアを更新するか否かを判定する。そして、ソフトウェアを更新する場合は、改ざんされた箇所を修正した更新用のソフトウェアを生成し、更新モジュール１３１、１３２、１３３へ更新処理の実施を通知する。
【００９２】
４つ目は、相互認証処理である。相互認証処理では、更新モジュール１３１、１３２、１３３と更新用ソフトウェア配布部２２０とが互いに正しいソフトウェアであるかどうかを確認するために、相互に認証処理を行う。
５つ目は、回復処理である。回復処理では、更新用のソフトウェアを機器１００へインストールし、更に、更新モジュール１３１、１３２、１３３へ埋め込まれた分散情報から元のデータを復元する。
【００９３】
６つ目は、次ラウンド準備処理である。次ラウンド準備処理では、次のソフトウェア更新のための分散情報を生成し、各更新モジュールに埋め込む。
７つ目は、無効化処理である。無効化処理では、検知処理、相互認証処理、回復処理において、更新モジュール１３１、１３２、１３３又は保護制御モジュール１２０が不正に改ざんされたことを検知した場合に、改ざんされたモジュールを消去する。
【００９４】
８つ目は、追加処理である。追加処理では、無効化処理によって更新モジュールが減少した場合、インストール処理を確実に行うために、更新モジュールを増やしたい場合などに、更新モジュールを追加する。
９つ目は、監視パターン更新処理である。監視パターン更新処理では、無効化処理や追加処理により、更新モジュール群１３０の構成を変更した場合に、監視パターンの更新が必要であれば、監視パターンを更新する。
【００９５】
上記９つの処理のうち、初期設定処理、検知処理、解析・判断処理、相互認証処理、回復処理及び次ラウンド処理は、図１６に示す順序で行われる。無効化処理、追加処理及び監視パターン更新処理は、図１６に記載されたそれぞれの処理の中で必要に応じて呼び出される。
図１６は、ソフトウェア更新システム１０の全体的な動作の流れを示すフローチャートである。
【００９６】
ソフトウェア更新システム１０は、機器１００の工場製造時に初期設計処理を行い、各更新モジュール１３１、１３２、１３３へ分散情報を埋め込む。その後、機器１００は、工場から出荷され、ユーザにより利用される。
ユーザにより機器１００が利用される際には、機器１００は、検知処理を行う。具体的には、保護制御モジュール１２０がアプリ（１１０、１１１）を攻撃者による攻撃から保護する。これと同時に、更新モジュール１３１、１３２、１３３が保護制御モジュール１２０の改ざん検出を実施し、保護制御モジュール１２０が攻撃されていないかをチェックする。
【００９７】
更新サーバ２００が、検知処理を行った更新モジュールから、保護制御モジュールが改ざんされた旨の通知を受信した場合、更新サーバ２００は、解析・判断処理を行う。保護制御モジュール１２０が改ざんされたと判明した場合には、相互認証処理、回復処理、次ラウンド準備処理を行った後、再び、検知処理へ戻る。
なお、本発明のソフトウェア更新システムは、上記のすべての処理は必須ではない。ソフトウェア更新システムは、外部から更新のトリガを与えられて、更新を行う処理（回復処理）があればよい。
【００９８】
以下では、上記の９つの処理について、それぞれの詳細を説明する。
１３．初期設計処理の動作
ここでは、図１７〜図１９を用いて、初期設計処理について説明する。
図１８は、ソフトウェア更新システム１０による初期設計処理の動作を示すシーケンス図である。
【００９９】
機器１００の工場製造時に、機器１００の不揮発メモリへアプリ（１１０、１１１）、保護制御モジュール１２０、更新モジュール（１３１、１３２、１３３）などをインストールする（Ｓ１０００）。
これらのソフトウェアには、ソフトウェアが改ざんされているか否かを検証するための改ざん検出用証明書が付加されている。この改ざん検出用証明書は、更新サーバ２００の更新用ソフトウェア配布部２２０が保持する署名秘密鍵により署名が施されている。なお、Ｓ１０００では、上記のソフトウェア以外にも、機器１００の動作に必要なソフトウェアがインストールされる。
【０１００】
ここで、図１７を用いて、初期設計処理の際に機器１００に埋め込まれる鍵について説明する。図１７は、機器１００に埋め込まれる鍵を模式的に示す図である。ここでは、更新モジュール１３１だけ示し、更新モジュール１３２及び１３３については省略する。
図１７に示すように、保護制御モジュール１２０には暗復号鍵が埋め込まれ、更新モジュール１３１、１３２、１３３には署名公開鍵、検証鍵及び認証鍵対が埋め込まれる（この時点では、まだ、更新モジュールに分散情報の組は埋め込まれてない）。更に、更新モジュール１３１、１３２、１３３には、それぞれ更新モジュールを識別するための更新モジュール識別子が埋め込まれ、その状態でインストールされる。
【０１０１】
暗復号鍵は、アプリ（１１０、１１１）を暗号化及び復号するための鍵である。アプリ（１１０、１１１）は、暗復号鍵を用いて暗号化された状態で不揮発メモリへ記憶され、実行時に保護制御モジュール１２０により暗復号鍵を用いて復号された後、実行される。機器１００が、コンテキストを切り替えながら複数のアプリを実行する場合には、コンテキスト切り替えのタイミングで、暗復号鍵を用いて、アプリ（１１０、１１１）が使用しているデータの暗号化及び復号を行うことにより、アプリ（１１０、１１１）実行時に、デバッガなどの解析ツールによって、データが抜き取られることを防止する。
【０１０２】
更新モジュール１３１、１３２、１３３に埋め込まれる鍵のうち、署名公開鍵はすべての更新モジュールで共通の鍵である。検証鍵と認証鍵対は、それぞれの更新モジュールで異なる鍵である。
図１８に戻って説明を続ける。Ｓ１０００で各ソフトウェアをインストールした後、初期設定を行うソフトウェア、正常に動作するかをテストするためのソフトウェアなどを実行し、機器１００を初期化する（Ｓ１００１）。
【０１０３】
Ｓ１００１の初期化処理では、保護制御モジュール１２０、更新モジュール１３１、１３２、１３３でも、それぞれ初期化処理が行われる。
保護制御モジュール１２０は、暗復号鍵から秘密分散法を用いて分散情報を生成する（Ｓ１００２）。更に、保護制御モジュール１２０は、署名秘密鍵を用いて、暗復号鍵の復元時に、暗復号鍵が正しく復元できたか否かを確認するための証明書（暗復号鍵証明書）を生成する（Ｓ１００３）。
【０１０４】
保護制御モジュール１２０は、生成した分散情報と暗復号鍵証明書とを、更新モジュール１３１、１３２、１３３へ送信する（Ｓ１００４）。ここで、保護制御モジュール１２０は、分散情報保持部３１０を備える更新モジュールと同数の分散情報を生成する。そして、それぞれの更新モジュール１３１、１３２、１３３が、異なる分散情報の組を保持するように送信する。更に、保護制御モジュール１２０は、どの更新モジュールへどの分散情報を送信したかを示す分散情報の配置情報を送信する。暗復号鍵証明書と配置情報とは、すべての更新モジュール１３１、１３２、１３３へ同じ情報が送信される。
【０１０５】
暗復号鍵から秘密分散法を用いて分散情報を生成する方法や、分散情報を更新モジュールへ送信する方法については、特許文献２の４７ページから４９ページに詳しく説明されている。特許文献２における秘密鍵ｄを本実施の形態の暗復号鍵に対応させ、認証局装置を保護制御モジュール１２０に対応させ、分散情報保持装置を更新モジュール１３１、１３２、１３３に対応させることで、特許文献２と同じ方法を用いることができる。
【０１０６】
保護制御モジュール１２０から分散情報、配置情報及び暗復号鍵証明書を受信した更新モジュール群１３０は、更新モジュール初期化処理へ移行する。
１３．１．更新モジュール初期化処理
図１９は、更新モジュール初期化処理を示すフローチャートである。ここでは、更新モジュール１３１について説明するが、他の更新モジュール１３２、１３３の動作も基本的に同一である。
【０１０７】
更新モジュール１３１は、保護制御モジュール１２０から分散情報、配置情報及び暗復号鍵証明書を受信し、受信した各情報を分散情報保持部３１０に保持する（Ｓ１００５）。
更に、更新モジュール１３１は、改ざん検出対象である他の更新モジュール１３２、１３３及び保護制御モジュール１２０の改ざん検出用証明書の検証を行う（Ｓ１００６）。この検証は、各モジュールからハッシュ値を生成し、生成したハッシュ値とそれぞれの改ざん検出用証明書に記述されているハッシュ値とを比較することにより行う。
【０１０８】
生成した各ハッシュ値がそれぞれの改ざん検出用証明書に記述されているハッシュ値と一致するか否かを判定し、一致すれば、他の更新モジュール１３２、１３３、保護制御モジュール１２０のそれぞれに対してＭＡＣ値を生成する。そして、生成したＭＡＣ値を、ＭＡＣ値テーブルとして保持する（Ｓ１００７）。
少なくとも１のハッシュ値が、改ざん検出用証明書に記述されているハッシュ値と一致しなければ、更新モジュール１３１は、エラーを出力して停止する（Ｓ１００８）。
【０１０９】
１４．検知処理の動作
機器１００は、初期設計処理を終えると工場から出荷され、ユーザの元へ送られる。ユーザの元で機器１００が使用される。
アプリ（１１０、１１１）を利用しているときには、機器１００内部では、保護制御モジュール１２０が復号ロード機能、改ざん検出機能、解析ツール検出機能などの機能を制御し、アプリ（１１０、１１１）を攻撃者による攻撃から保護する。
【０１１０】
ここでは、図２０のシーケンス図を用いて、検知処理の動作について説明する。
更新モジュール１３１、１３２、１３３は、保護制御モジュール１２０の改ざん検出を実施する（Ｓ２０００）。
改ざん検出は、検証鍵を使用して保護制御モジュール１２０のＭＡＣ値を計算し、計算したＭＡＣ値とＭＡＣ値テーブルに保持されているＭＡＣ値とを比較することにより行う。ＭＡＣ値が一致すれば、保護制御モジュール１２０は改ざんされていないと判定し、ＭＡＣ値が一致しなければ、保護制御モジュール１２０は改ざんされていると判定する。
【０１１１】
なお、図２０では記載を簡略化し、更新モジュール１３１のみが保護制御モジュールの改ざん検出を行っているように記載されているが、当然、更新モジュール１３２、１３３でも同様の処理が行われる。
その後の処理についても、更新モジュール１３１が保護制御モジュール１２０の改ざんを検出した場合を中心に記載しているが、更新モジュール１３２、１３３が保護制御モジュール１２０の改ざんを検出した場合も基本的には同様の処理が行われる。
【０１１２】
保護制御モジュール１２０が改ざんされているか否か、即ち、ＭＡＣ値が一致するか否かを判定し、保護制御モジュール１２０が改ざんされていると判定した場合には、更新モジュール１３１は、その旨を、更新サーバ２００の判断部２１０及び他の更新モジュールへ通知する（Ｓ２００１）。
保護制御モジュール１２０が改ざんされていないと判定した場合には、更新モジュール１３１は、判断部２１０や他の更新モジュールへ通知を行わず、Ｓ２０００の改ざん検出処理へ戻る。
【０１１３】
他の更新モジュールから保護制御モジュール１２０が改ざんされている旨の通知を受けた更新モジュールは、検証鍵及びＭＡＣ値を用いて、保護制御モジュール１２０の改ざん検出を実施する（Ｓ２００２）。そして、改ざん検出結果を、判断部２１０及び他の更新モジュールへ通知する（Ｓ２００３）。
判断部２１０は、更新モジュール１３１、１３２、１３３から改ざん検出結果を受信する。
【０１１４】
１５．解析・判断処理の動作
次に、図２１を用いて、解析・判断処理の動作について説明する。図２１は、解析・判断処理の動作の流れを示すシーケンス図である。図２１では、各更新モジュール１３１、１３２、１３３が個別に行う処理を、更新モジュール群１３０が行う処理としてまとめて記載している。
【０１１５】
検知処理において、更新モジュールから判断部２１０へ、保護制御モジュール１２０の改ざんを検出した旨の通知（Ｓ２００１またはＳ２００３）があった場合、判断部２１０は、更新モジュールから通知された改ざん検出結果に基づいて、保護制御モジュール１２０が不正であるか正当であるか（改ざんされているか否か）を判定する（Ｓ３０００）。
判定方法の一例として、例えば、所定数の更新モジュールが改ざんを検出した場合には、保護制御モジュール１２０は不正である（改ざんされている）と判定し、また、所定数未満の更新モジュールが改ざんを検出した場合には、保護制御モジュール１２０は正当である（改ざんされていない）と判定する。前記所定数は、更新モジュール群１３０に含まれる更新モジュールの過半数としてもよい。
【０１１６】
保護制御モジュール１２０が不正である（改ざんされている）と判定した場合、判断部２１０は、保護制御モジュール１２０を回復する必要があるか否かを判断するために、更新モジュールに対して、保護制御モジュール１２０のどの部分が改ざんされたかなどの改ざん情報の通知を依頼する（Ｓ３００１）。判断部２１０は、改ざん情報に基づいて、保護制御モジュール１２０を回復する必要があるか否かを判断する（Ｓ３００２）。
【０１１７】
Ｓ３００２の「回復する必要があるか否か」の判断に代えて、「リボークするか否か」を判断するとしてもよい。
Ｓ３００２の判断の結果、回復する必要がある場合、更新用の保護制御モジュールを準備し（Ｓ３００３）、更新モジュールに、更新処理の開始を指示する（Ｓ３００４）。また、リボークする場合には、アプリ（１１０、１１１）にサービスを提供しているサーバに対して、機器１００をリボークするように依頼する（Ｓ３００５）。
【０１１８】
保護制御モジュール１２０が正当である（改ざんされていない）と判定した場合には、更新モジュール群１３０を更新する必要があるか否かを判断するために、通常時判断処理に移行する（Ｓ３００６）。
１５．１．通常時判断処理
図２２は、解析・判断処理の通常時判断処理（Ｓ３００６）のシーケンス図である。
【０１１９】
更新サーバ２００の判断部２１０は、更新モジュール群１３０に対し、相互監視処理の指示を送信し、更新モジュール群１３０は相互監視処理を行う（Ｓ３１００）。更新モジュール群１３０は、相互監視処理による検出結果を、判断部２１０に通知する。
判断部２１０は、検出結果の通知を受けると、通常時無効化判断処理を行い（Ｓ３２００）、追加判断処理（Ｓ３３００）、監視パターン更新判断処理（Ｓ３４００）を行う。
【０１２０】
１５．２．相互監視処理
図２３は、相互監視処理（Ｓ３１００）の詳細なシーケンス図である。
更新モジュール群１３０内の更新モジュール１３１、１３２、１３３は、それぞれ、他の更新モジュールに対して改ざん検出の処理を実施し、攻撃者により改ざんされていた場合には、それを検出する。
【０１２１】
具体的には、更新モジュール１３１が更新モジュール１３２の改ざん検出を行い（Ｓ３１０１）、更新モジュール１３２が更新モジュール１３３の改ざん検出を行い（Ｓ３１０２）、更新モジュール１３３が更新モジュール１３１の改ざん検出を行う（Ｓ３１０３）。
改ざん検出は、検証鍵を用いて各更新モジュールのＭＡＣ値を計算し、計算したＭＡＣ値と、ＭＡＣ値テーブルに保持されているＭＡＣ値とを比較することで行う。そして、各更新モジュールは、改ざん検出処理の結果を、判断部２１０及び他の更新モジュールへ通知する。
【０１２２】
各更新モジュールの改ざん検出処理が完了すると、通常時判断処理に戻る。
１５．３．通常時無効化判断処理
図２４は、通常時判断処理の通常時無効化判断処理（Ｓ３２００）の詳細なフローチャートである。
図２４を用いて、通常時無効化判断処理について説明する。
【０１２３】
判断部２１０の不正モジュール特定部６０４において不正であると判定された更新モジュールが、更新モジュール群１３０の半数以上である場合（Ｓ３２０１）、判断部２１０の指示生成部６０３は、更新モジュール群１３０の全体を更新する指示を生成し、更新モジュール群１３０全体を更新する（Ｓ３２０２）。
更新モジュール群１３０の全体を更新することにより、更新モジュールの正常な動作が妨害されるのを防止できる。
【０１２４】
判断部２１０の不正モジュール特定部６０４において不正であると判定された更新モジュールが、更新モジュール群１３０の半数未満である場合（Ｓ３２０１）、不正モジュール特定部６０４は、更新モジュール群１３０のいずれかの更新モジュールが危殆化しているか判定し（Ｓ３２０３）、危殆化されていると判定された更新モジュールの無効化処理を実施する（Ｓ３２０４）。無効化処理についての詳細は後述する。
【０１２５】
通常時無効化判断処理では、保護制御モジュール１２０が改ざんされていないことを確認した上で、更新モジュールが危殆化していた場合、無効化処理を行うため、更新モジュールの無効化処理の間に、不正な保護制御モジュールを介してアプリ（１１０、１１１）が攻撃されるのを防止できる。
いずれの更新モジュールも危殆化していないと判定した場合、または、無効化処理が完了すると、通常時判断処理に戻る。
【０１２６】
１５．４．追加判断処理
次に、追加判断処理について説明する。図２６は、通常時判断処理の追加判断処理（Ｓ３３００）の詳細なフローチャートである。
判断部２１０は、更新モジュール群１３０の更新モジュールの数が所定値以下であるかを判定し（Ｓ３３０１）、所定値以下の場合、追加処理を行う（Ｓ３３０２）。追加処理についての詳細は後述する。更新モジュールの数が所定値以上であった場合、または、追加処理が終了すると、通常時判断処理に戻る。
【０１２７】
追加処理により更新モジュールを追加することで、相互監視処理を行う更新モジュールの数を一定数に保つことができるので、更新モジュールの改ざんを更新モジュール群１３０の内部で安定して自己検証することができる。
また、保護制御モジュール１２０が改ざんされていないことを確認した上で追加処理を行うので、更新モジュールの追加処理の間に、不正な保護制御モジュールを介してアプリ（１１０、１１１）が攻撃されるのを防止できる。
【０１２８】
なお、更新モジュールの数が所定値以下でなくても、判断部２１０が更新モジュールの追加が必要と判断した場合には、追加処理を行ってもよい。
具体的には、更新モジュールの数が所定値以上であったとしても、幾つかの更新モジュールが短い期間に連続して危殆化した場合は、すぐに所定値以下になる可能性がある。このような場合、更新モジュール全体の安全性を向上させるために、更新モジュールの数が所定値以上であったとしても、更新モジュールを追加してもよい。
【０１２９】
ここで、「所定値」とは、システム設計時に決定する値であり、例えば、「システム設計時の更新モジュールの数の過半数」、或いは「４つ」などの具体的な数値が考えられる。
また、新たな更新モジュールを更新モジュール群に追加する処理に代えて、更新モジュール群自体を更新してもよい。例えば、更新モジュールの数が所定値より大きい場合には、更新モジュールを更新モジュール群に追加し、所定値以下の場合には、更新モジュール群自体を更新するというような処理を行ってもよい。更新モジュール群を一新することにより、各更新モジュールの正常な動作が妨害されるのを防止できる。
【０１３０】
１５．５．監視パターン更新判断処理
次に、図２８を用いて、監視パターン更新判断処理を説明する。図２８は、通常時判断処理の監視パターン更新判断処理（Ｓ３４００）の詳細なフローチャートである。
判断部２１０は、無効化処理や追加処理により、更新モジュール群１３０の構成に変更があった場合、監視パターンの更新が必要であるかを判断する（Ｓ３４０１）。監視パターンの更新が必要であると判断した場合、監視パターン更新部２５０へ更新を指示し、監視パターン更新部２５０は、監視パターン更新処理を行う（Ｓ３４０２）。  
【０１３１】
監視パターンを更新する必要がないと判断した場合、または、監視パターン更新処理が完了すると、通常時判断処理へ戻る。
監視パターン更新処理（Ｓ３４０２）では、監視されない更新モジュールが存在しないように監視パターンを更新する。以下、具体的に説明する。
更新モジュールＡが更新モジュールＢを監視していた時に、更新モジュールＡが無効化された場合、更新モジュールＢはどの更新モジュールからも監視されない可能性がある。そのため、更新モジュールＢも、いずれかの更新モジュールにより監視される新たな監視パターンを生成し、更新モジュールＡを除いた更新モジュールの監視パターンを更新する。
【０１３２】
また、更新モジュールＣが新たに更新モジュール群に追加された場合、従来の監視パターンでは更新モジュールＣを監視する更新モジュールがないため、更新モジュールＣを含めた更新モジュール群での新たな監視パターンを生成し、更新モジュールＣを含めたすべての更新モジュールの監視パターンを更新する。
これにより、更新モジュールの無効化後であっても、また、新たな更新モジュールの追加後であっても相互監視を維持し、更新モジュールの正常な動作が妨害されるのを防止できる。
【０１３３】
１６．相互認証処理の動作
ここでは、図２９及び図３０を用いて、ソフトウェア更新システム１０による相互認証処理の動作について説明する。
更新サーバ２００の判断部２１０が、解析・判断処理において、保護制御モジュール１２０を回復する必要があると判断した場合、判断部２１０は、更新用ソフトウェア配布部２２０へ、保護制御モジュール１２０の回復を指示する。
【０１３４】
更新用ソフトウェア配布部２２０は、更新モジュール１３１、１３２、１３３へ更新処理の開始を指示した後、各更新モジュールとの間で、それぞれ１対１の相互認証処理を行う。これにより、機器１００が不正なサーバと接続したり、更新サーバ２００が不正な機器と接続することを防止する。なお、相互認証処理において、更新サーバ２００は、署名秘密鍵及び署名公開鍵を使用し、各更新モジュールは、認証鍵対（認証秘密鍵及び認証公開鍵）を使用する。
【０１３５】
図２９は、更新モジュール１３１が更新用ソフトウェア配布部２２０を認証するときのシーケンス図である。なお、更新モジュール１３２、１３３も図２９と同様に動作し、更新用ソフトウェア配布部２２０を認証する。
更新モジュール１３１は、乱数生成器を用いて乱数を生成し（Ｓ４０００）、生成した乱数をチャレンジデータとして更新用ソフトウェア配布部２２０へ送信する（Ｓ４００１）。この時、更新モジュール１３１を識別するための更新モジュール識別子を、チャレンジデータと共に送信する。
【０１３６】
更新用ソフトウェア配布部２２０は、受信したチャレンジデータに署名秘密鍵を用いて署名データを生成し（Ｓ４００２）、生成した署名データをレスポンスデータとして、更新モジュール１３１へ返信する（Ｓ４００３）。
更新モジュール１３１は、更新用ソフトウェア配布部２２０からレスポンスデータを受信すると（Ｓ４００４）、署名公開鍵を用いて、受信したレスポンスデータが、チャレンジデータの署名データになっているか検証する（Ｓ４００５）。
【０１３７】
検証の結果、レスポンスデータが正しく、更新用ソフトウェア配布部２２０が正当なモジュールである場合、更新モジュール１３１は、処理を継続する。レスポンスデータが正しくなく、更新用ソフトウェア配布部２２０が正当なモジュールでない場合には、更新モジュール１３１は、エラーを出力し、処理を停止する（Ｓ４００６）。
次に、更新用ソフトウェア配布部２２０が、更新モジュール１３１、１３２、１３３を認証する。
【０１３８】
図３０は、更新用ソフトウェア配布部２２０が各更新モジュールを認証するときのシーケンス図である。
更新用ソフトウェア配布部２２０は、チャレンジデータを送信してきた各更新モジュールに対して、乱数生成器を用いてそれぞれ異なる乱数を生成し（Ｓ４１００）、チャレンジデータとして各更新モジュールへ個別に送信する（Ｓ４１０１）。
【０１３９】
各更新モジュールは、受信したチャレンジデータに認証秘密鍵を用いて署名データを生成し（Ｓ４１０２）、生成した署名データをレスポンスデータとして更新用ソフトウェア配布部２２０へ返信する（Ｓ４１０３）。
このとき、各更新モジュールは、レスポンスデータと共に認証公開鍵と認証鍵証明書とを更新用ソフトウェア配布部２２０へ送信する。
【０１４０】
更新用ソフトウェア配布部２２０は、それぞれの更新モジュールからレスポンスデータ、認証公開鍵及び認証鍵証明書を受信する（Ｓ４１０４）。更新用ソフトウェア配布部２２０は、認証鍵証明書が、自身が発行した証明書であるか否か検証し、更に、認証鍵証明書を用いて、認証公開鍵の正当性を検証する（Ｓ４１０５）。
認証鍵証明書及び認証公開鍵が不正であれば、更新用ソフトウェア配布部２２０は、処理を停止する（Ｓ４１０６）。
【０１４１】
認証鍵証明書及び認証公開鍵が正当であれば、更新用ソフトウェア配布部２２０は、認証公開鍵を用いて、受信したレスポンスデータがチャレンジデータの署名データになっているか検証する（Ｓ４１０７）。
次に、更新用ソフトウェア配布部２２０は、正しいレスポンスデータを返した更新モジュール（正当な更新モジュール）の数が、予め設定されている回復処理に必要な数以上であるかを判断する。正当な更新モジュールの数が、回復処理に必要な数に満たなかった場合、回復処理が実行できないため、更新用ソフトウェア配布部２２０は、処理を停止する（Ｓ４１０６）。正当な更新モジュールの数が、回復処理に必要な数を満たしている場合、相互認証処理を終了し、回復処理に移る。
【０１４２】
また、更新用ソフトウェア配布部２２０は、相互認証処理において、正当性が確認されたすべての更新モジュールの更新モジュール識別子を記載した認証リストを作成する。そして、これ以降の回復処理では、認証リストに識別子が記載されている更新モジュールのみを利用する。
１７．回復処理の動作
ここでは、図３１から図３８を用いて、ソフトウェア更新システム１０による回復処理の動作について説明する。
【０１４３】
相互認証処理において、相互認証が成功した場合、改ざんされた保護制御モジュール１２０を新保護制御モジュールへ更新する回復処理を実施する。
まず、図３１を用いて回復処理の大まかな流れを説明する。図３１は、回復処理の全体の流れを示したフローチャートである。同図に示すように、回復処理は、大きく６つの処理からなる。
【０１４４】
１つ目の処理は、新保護制御モジュールを用いて、改ざんされた保護制御モジュール１２０を更新する更新処理（Ｓ５０００）である。
２つ目の処理は、更新モジュール１３１、１３２．１３３が相互に改ざん検出処理を実施する回復時相互監視処理（Ｓ５１００）である。
３つ目の処理は、暗号化されたアプリ（１１０、１１１）を再暗号化する、再暗号化処理（Ｓ５３００）である。
【０１４５】
４つ目の処理は、更新モジュール群１３０内の更新モジュールが危殆化していた場合に無効化処理を行うか判断する、回復時無効化判断処理（Ｓ５４００）である。
５つ目の処理は、無効化後の更新モジュール群１３０内の更新モジュールの数により、更新モジュールの追加処理を行うか判断する、追加判断処理（Ｓ５５００）である。
６つ目の処理は、更新モジュールの無効化又は／及び追加が行われた場合に、監視パターンを更新するか判断する、監視パターン更新判断処理（Ｓ５６００）である。
【０１４６】
なお、本発明のソフトウェア更新システムは、上記のすべての処理は必須ではない。ソフトウェア更新システムは、外部から更新のトリガを与えられて、新保護制御モジュールを用いて、改ざんされた保護制御モジュール１２０を更新する更新処理（Ｓ５０００）、及び、更新モジュールが相互に改ざん検出を実施する回復時相互監視処理（Ｓ５１００）があればよい。
【０１４７】
上記６つの処理について、その詳細を順に説明する。
１７．１．更新処理
ここでは、図３３及び図３４を用いて、更新処理（Ｓ５０００）の一例を説明する。
先ず、更新用ソフトウェア配布部２２０の証明書生成部７０８は、署名秘密鍵を用いて、更新検証証明書を生成する（Ｓ５００１）。更新検証証明書は、新保護制御モジュールが正しくインストールできたかを各更新モジュール１３１、１３２、１３３が確認するための証明書である。更新用ソフトウェア配布部２２０は、生成した証明書を、各更新モジュールへ送信する（Ｓ５００２）。
【０１４８】
次に、更新用ソフトウェア配布部２２０の暗号鍵生成部７０３は、新保護制御モジュールを多重に暗号化するための暗号鍵を２つ（第１の鍵及び第２の鍵）生成する（Ｓ５００３）。復号ロード部４０４は、第２の鍵を用いて新保護制御モジュールを暗号化し、暗号化新保護制御モジュールを生成する（Ｓ５００４）。復号ロード部４０４は、暗号化新保護制御モジュールに対して、第１の鍵を用いてさらに暗号化し、多重暗号化新保護制御モジュールを生成する（Ｓ５００５）。
【０１４９】
更新用ソフトウェア配布部２２０は、更新モジュール群１３０から正当な更新モジュールを一つ選択し（Ｓ５００６）、選択した更新モジュールの識別子を判断部２１０に通知する。Ｓ５００６では、判断部２１０内の不正モジュール特定部６０４に記憶されている危殆化した更新モジュール以外の更新モジュールを選択する。ここでは、一例として、更新モジュール１３１を選択するものとする。
【０１５０】
更新用ソフトウェア配布部２２０は、選択した更新モジュール１３１へ多重暗号化新保護制御モジュールを送信し（Ｓ５００７）、更に、第１の鍵を送信する（Ｓ５００８）。
更新モジュール１３１は、多重暗号化新保護制御モジュールと第１の鍵とを受信する（Ｓ５００９）。更新モジュール１３１は、第１の鍵を用いて、多重暗号化新保護制御モジュールを復号し、暗号化新保護制御モジュールを取得する（Ｓ５０１０）。そして、復号が終了すると、その旨を更新用ソフトウェア配布部２２０へ通知する（Ｓ５０１１）。
【０１５１】
更新用ソフトウェア配布部２２０は、復号終了通知を受信すると、更新モジュール群１３０から、正当なモジュールであって、且つ、Ｓ５００６で選択した更新モジュールとは異なる更新モジュールを一つ選択する（Ｓ５０１２）。ここでは、一例として、更新モジュール１３２を選択するものとする。
更新モジュールの選択は、上記と同様に判断部２１０内の不正モジュール特定部６０４に記憶されている危殆化した更新モジュール以外の更新モジュールを選択する。
【０１５２】
更新用ソフトウェア配布部２２０は、選択した更新モジュール１３２に、第２の鍵を送信する（Ｓ５０１３）。さらに、更新用ソフトウェア配布部２２０は、更新モジュール１３１に対して、Ｓ５０１０で取得した暗号化新保護制御モジュールを更新モジュール１３２へ送信するよう依頼する（Ｓ５０１４）。
更新モジュール１３１は、更新用ソフトウェア配布部２２０からの依頼を受けて、暗号化新保護制御モジュールを更新モジュール１３２へ送信する（Ｓ５０１５）。
【０１５３】
更新モジュール１３２は、更新用ソフトウェア配布部２２０から第２の鍵を受信し、更新モジュール１３１から暗号化新保護制御モジュールを受信する（Ｓ５０１６）。そして、第２の鍵を用いて、暗号化新保護制御モジュールを復号し、新保護制御モジュールを取得する（Ｓ５０１７）。
更新モジュール１３２は、Ｓ５０１７で取得した新保護制御モジュールを保護制御モジュール１２０に上書きし、更新する（Ｓ５０１８）。そして、更新モジュール１３２は、更新の終了を他の更新モジュールへ通知する（Ｓ５０１９）。
【０１５４】
続いて、各更新モジュール１３１、１３２、１３３のそれぞれは、事前に受信した更新検証証明書を用いて、保護制御モジュールが正しく更新されたか否か検証し（Ｓ５０２０）、検証結果を更新用ソフトウェア配布部２２０へ通知する（Ｓ５０２１）。
更新用ソフトウェア配布部２２０は、各更新モジュールから送信された検証結果を受信すると、保護制御モジュールが正しく更新されたかを判定する（Ｓ５０２２）。正しく更新されていないと判定する場合は、更新用ソフトウェア配布部２２０は、機器１００を停止させる（Ｓ５０２３）。
【０１５５】
正しく更新されている場合には、更新用ソフトウェア配布部２２０は、更新処理の終了を各更新モジュールへ通知する（Ｓ５０２４）。
各更新モジュールは、更新処理終了通知を受信すると、新保護制御モジュールのＭＡＣ値を生成し、生成したＭＡＣ値と保護制御モジュールの識別子との組を、ＭＡＣ値テーブルに書き込む（Ｓ５０２５）。
【０１５６】
以上説明したように、更新処理では、更新用ソフトウェア配布部２２０が更新用の新保護制御モジュールを複数の鍵を用いて多重に暗号化し、更新モジュール群１３０へ送信する。更新モジュール群１３０は、受信した新保護制御モジュールで、保護制御モジュール１２０を更新する。
この時、更新用ソフトウェア配布部２２０は、多重に暗号化された新保護制御モジュールを復号するための複数の鍵を、更新モジュール群１３０に送信するタイミングを制御することにより、攻撃者が暗号化されていない新保護制御モジュールを入手することを困難にする。
【０１５７】
１７．２．回復時相互監視処理
ここでは、図３５及び図３６を用いて、回復時相互監視処理（Ｓ５１００）の一例を説明する。
判断部２１０は、更新モジュール群１３０へ相互監視処理の指示を送信し、更新モジュール群１３０は相互監視処理を行う（Ｓ５１０１）。Ｓ５１０１の詳細は、図２３の相互監視処理（Ｓ３１００）と同様であるので、ここでは説明を省略する。
【０１５８】
各更新モジュールは改ざん検出を行い、改ざん検出結果を判断部２１０へ送信する（Ｓ５１０２）。なお、相互監視処理の結果、改ざんされた更新モジュールを検出しなかった場合、判断部２１０への通知は行わなくてよい。判断部２１０は、検出結果を用いて、回復時判断処理を行う（Ｓ５１０３）。
このように、回復時相互監視処理では、更新モジュール群１３０が相互監視処理を行うので、回復処理中に一部の更新モジュールが改ざんされた場合であっても、改ざん検出が可能となる。さらに、回復時相互監視処理を定期的に実施することにより、新保護制御モジュールのすべてが完全に漏洩する前に改ざんを検出して、新保護制御モジュールのすべてが漏洩するのを防止することが可能となる。
【０１５９】
１７．３．回復時判断処理
ここでは、図３６を用いて、回復時判断処理（Ｓ５１０３）の詳細について説明する。
まず、判断部２１０において、いずれかの更新モジュールが危殆化しているか判定する（Ｓ５１１０）。いずれの更新モジュールも危殆化していない場合、回復時判断処理を終了し、図３５の回復時相互監視処理へ戻る。
【０１６０】
いずれかの更新モジュールが危殆化している場合、判断部２１０は、更新モジュール群に含まれる更新モジュールの内、半数以上が危殆化しているか判定する（Ｓ５１１１）。半数以上危殆化している場合には、機器１００を停止する（Ｓ５１１２）。
機器１００を停止することにより、機器１００が改ざんされ、不正に動作し、ネットワークを介して接続された他の機器に影響することを防止できる。また、保護制御モジュール１２０も危殆化している場合、アプリ（１１０、１１１）が攻撃されている可能性が高く、アプリ（１１０、１１１）への攻撃が他の機器に影響することも防止できる。
【０１６１】
更新モジュールの半数未満が危殆化していた場合には、不正モジュール特定部６０４は、どの更新モジュールが危殆化しているかを特定し、特定した更新モジュールの識別子を、不正モジュール特定部６０４の内部に記憶する（Ｓ５１１３）。
次に、不正モジュール特定部６０４は、更新処理で選択した更新モジュールが危殆化しているかを判定する（Ｓ５１１４）。更新処理で選択した更新モジュールが危殆化している場合には、更新処理時に不正を働く可能性があるため、更新用ソフトウェア配布部２２０及び更新モジュール群１３０に更新処理の中止を通知する（Ｓ５１１５）。更新用ソフトウェア配布部２２０及び更新モジュール群１３０へ通知後、回復処理開始に戻る。
【０１６２】
回復処理開始に戻ることにより、回復時無効化判断処理（Ｓ５３００）や追加判断処理（Ｓ５４００）へ処理が移行しないため、危殆化した更新モジュールの無効化処理及び追加処理より、保護制御モジュールの更新処理を優先的に行うことができる。保護制御モジュールの更新処理を優先的に行うことにより、不正な保護制御モジュールを介して、アプリ（１１０、１１１）が攻撃されるのを防止できる。
【０１６３】
更新処理に選択した更新モジュールが危殆化していないと判定した場合、回復時相互監視処理を終了する。
１７．４．更新処理と回復時相互監視処理との関係
ここでは、図３２を用いて、更新処理と回復時相互監視処理との連携動作の詳細について説明する。回復時相互監視処理は、更新処理と連携するだけでなく、更新処理の開始から終了まで定期的に繰り返して行なわれる。回復時相互監視処理は、新保護制御モジュールがネットワークを介して完全に外部に出力されるまでに要する時間より短い時間間隔で繰り返し実施する必要がある。例えば、新保護制御モジュールが完全に外部に出力されるまでに１秒かかるのであれば、それより短い５００ミリ秒間隔のタイミングで回復時相互監視処理を実行する。以下、詳細に説明する。
【０１６４】
先ず、機器１００は、更新サーバ２００から多重暗号化新保護制御モジュールが送付される前に、回復時相互監視処理（相互監視１）を実施する。不正な更新モジュールを選択して、更新処理を行わないようにするためである。
その後、機器１００は、更新サーバ２００により送信された第１の鍵を更新モジュール１３１が受信する前に、回復時相互監視処理（相互監視２）を実施し、機器１００が第１の鍵を受信する時に、不正な更新モジュールを選択していないことを確認する。
【０１６５】
さらに、更新モジュール１３１が第１の鍵を受信し、第１の鍵を用いて多重暗号化新保護制御モジュールを復号する間、定期的に、更新モジュール１３１による復号処理を中断して、回復時相互監視処理（相互監視３−１、３−２）を実施する。これにより、復号処理中に、更新モジュール１３１、１３２、１３３が攻撃されたとしても、暗号化新保護制御モジュールがすべて漏洩する前に更新モジュールが攻撃されたことを検出し、漏洩を防止することが可能となる。
【０１６６】
これ以降の処理は、上記と同様である。即ち、機器１００は、更新サーバ２００により送信された第２の鍵を更新モジュール１３２が受信する前に、回復時相互監視処理（相互監視４）を実施し、機器１００が鍵を受信する時に、不正な更新モジュールを更新処理において、選択していないことを確認する。
さらに、更新モジュール１３２が第２の鍵を受信し、第２の鍵を用いて暗号化新保護制御モジュールを復号する間、定期的に、更新モジュール１３２による復号処理を中断し、回復時相互監視処理（相互監視５−１、５−２）を実施する。最後に、回復時相互監視処理（相互監視６）を実施する。
【０１６７】
これにより、新保護制御モジュールがすべて漏洩する前に更新モジュールが攻撃されたことを検出し、漏洩を防止することが可能となる。
ここで、各回復時相互監視処理において、更新モジュールに改ざんが検出されたた場合には、更新サーバ２００の判断部２１０によって、回復時判断処理を行う（Ｓ５１０３）。これにより、更新サーバ２００は、第１の鍵や第２の鍵の送信を中止することが可能となり、攻撃者は、多重暗号化新保護制御モジュールを復号するための鍵を入手することが不可能となる。
【０１６８】
１７．５．再暗号化処理
次に、図３７を用いて、回復処理の再暗号化処理（Ｓ５２００）の一例について説明する。
先ず、更新された保護制御モジュール（以下、「保護制御モジュール１２１」と記載する。）が、各更新モジュール１３１、１３２、１３３に対して、それぞれが保持している分散情報及び暗復号鍵証明書の送信を依頼する（Ｓ５２０１）。
【０１６９】
各更新モジュール１３１、１３２、１３３は、保護制御モジュール１２１からの依頼を受けて、分散情報及び暗復号鍵証明書を送信する（Ｓ５２０２）。
保護制御モジュール１２１は、各更新モジュール１３１、１３２、１３３から分散情報及び暗復号鍵証明書を受信し（Ｓ５２０３）、受信した分散情報から更新前の保護制御モジュール１２０が使用していた暗復号鍵（旧暗復号鍵）を復元する（Ｓ５２０４）。更に、保護制御モジュール１２１は、暗復号鍵証明書を用いて、旧暗復号鍵が正しく復元されたか否か検証する（Ｓ５２０５）。
【０１７０】
旧暗復号鍵が正しく復元されなかった場合、保護制御モジュール１２１は、不正な更新モジュールを炙り出す（どの更新モジュールが不正な分散情報を送信したか特定する）（Ｓ５２０６）。特定された不正な更新モジュールは、更新サーバ２００へ通知される。
旧暗復号鍵が正しく復元された場合、保護制御モジュール１２１の暗復号鍵生成部４０８は、新しい暗復号鍵（新暗復号鍵）を生成する（Ｓ５２０７）。そして、復号ロード部４０４は、旧暗復号鍵を用いて暗号化されたアプリ（１１０、１１１）を復号し、新暗復号鍵を用いてアプリ（１１０、１１１）を再暗号化する（Ｓ５２０８）。
【０１７１】
ここで、Ｓ５２０６において、不正な更新モジュールを特定するための方法について説明する。先ず、保護制御モジュール１２１は、各更新モジュールから分散情報の組を集め、集めた分散情報に各更新モジュールを識別するための識別情報を付加する。
その後、初期設計時に同じ値に設定されて配布された分散情報同士をグループにまとめる。そして、各グループに含まれる分散情報同士の値を比較し、同じ値になる分散情報同士を更に１つのサブグループにまとめる。そして、すべてのグループの中からサブグループを１つずつ選び出す組み合わせを全て生成する。
【０１７２】
生成した組み合わせそれぞれに対して旧暗復号鍵を生成し、正しい旧暗復号鍵が生成できたかを検証する。検証ＯＫの場合、その組み合わせに含まれるサブグループに、検証ＯＫを表す検証通過識別情報を付加する。
すべての組み合わせについて、旧暗復号鍵の生成・検証を行った後、検証通過識別情報の付いているサブグループに含まれる分散情報を取り除く。
【０１７３】
取り除かれずに残っている分散情報は、不正な値となっている。そこで、この分散情報に付加された識別情報により、不正な値となっている分散情報を送信してきた更新モジュールを特定することができる。識別情報により特定された更新モジュールが不正な更新モジュールであると特定される。
分散情報から旧暗復号鍵を復元する方法や不正な更新モジュールの特定方法については、特許文献２の５０ページから５２ページに詳しく説明されている。特許文献２における秘密鍵ｄを本実施形態の暗復号鍵に対応させ、認証局装置を本実施形態の保護制御モジュール１２１に対応させ、分散情報保持装置を更新モジュール１３１、１３２、１３３に対応させることで、特許文献２と同じ方法が利用可能である。
【０１７４】
１７．６．回復時無効化判断処理
次に、図３８を用いて、回復処理の回復時無効化判断処理（Ｓ５３００）について説明する。
回復時無効化判断処理（Ｓ５３００）は、回復時相互監視処理（Ｓ５１００）で改ざんが検出され、図３６のＳ５１１３において、危殆化した更新モジュールを記憶した場合、どの更新モジュールが危殆化しているのか判定し（Ｓ５３０１）、危殆化していると判定された更新モジュールに対し、無効化処理を行う（Ｓ５３０２）。無効化処理の詳細は後述する。
【０１７５】
１７．７．追加判断処理
追加判断処理（Ｓ５４００）は、通常時判断処理（図２１のＳ３００６）で行う追加判断処理（図２２のＳ３３００）と同様である。ここでは説明を省略する。
１７．８．監視パターン更新判断処理
監視パターン更新判断処理（Ｓ５５００）は、通常時判断処理（図２１のＳ３００６）で行う監視パターン更新判断処理（図２２のＳ３４００）と同様である。ここでは説明を省略する。
【０１７６】
１８．次ラウンド準備処理の動作
ここでは、図３９のフローチャートを用いて、次ラウンド準備処理の動作について説明する。次ラウンド準備処理では、回復処理の終了後、次の回復処理のための準備を行う。以下、具体的に説明する。
まず、保護制御モジュール１２１は、新しい暗復号鍵から、秘密分散法を用いて分散情報を生成し（Ｓ６０００）、更に、署名秘密鍵を用いて、新暗復号鍵証明書を生成する（Ｓ６００１）。そして、保護制御モジュール１２１は、生成した分散情報と暗復号鍵証明書とを各更新モジュール１３１、１３２、１３３へ送信する（Ｓ６００２）。
【０１７７】
ここで、初期設計処理時と同様に、分散情報は、更新モジュールの数と同数が生成され、それぞれの更新モジュールが、異なる分散情報のペアを保持するように送信される。新暗復号鍵証明書は、各更新モジュール１３１、１３２、１３３へ同じ証明書が送信される。
各更新モジュール１３１、１３２、１３３は、保護制御モジュール１２１から分散情報と新暗復号鍵証明書とを受信し、受信した分散情報と新暗復号鍵証明書とを分散情報保持部３１０に保持する（Ｓ６００３）。
【０１７８】
１９．無効化処理の動作
ここでは、図２５のフローチャートを用いて、ソフトウェア更新システム１０における無効化処理の動作について説明する。
無効化処理は、相互認証時に認証に失敗した更新モジュールが存在する場合、通常時判断処理時に改ざんされた更新モジュールが検出された場合、保護制御モジュール１２０の改ざんが検出された場合など、機器１００内部に存在する不正な（改ざんされた）モジュールを無効化する処理である。
【０１７９】
ここでは、具体例として、通常時判断処理時に、更新モジュール１３１、１３２が、更新モジュール１３３の改ざんを検出した場合の無効化処理について説明する。
判断部２１０は、更新モジュール１３１、１３２、１３３から受信した、相互監視結果を基に、どの更新モジュールが改ざんされているかを判定する（Ｓ７００１）。判定方法としては、例えば、所定数の更新モジュールが改ざんされていると判定している場合に、その更新モジュールは改ざんされていると判定する。
【０１８０】
判断部２１０は、改ざんされた更新モジュールの識別情報と共に、モジュール無効化部２３０へ無効化の指示を出力する（Ｓ７００２）。
モジュール無効化部２３０は、改ざんされていないと判定した更新モジュール１３１及び１３２のいずれか（ここでは、更新モジュール１３１とする。）へ、改ざんされた更新モジュール１３３の無効化を依頼する（Ｓ７００３）。
【０１８１】
更新モジュール１３１は、モジュール無効化部２３０から、更新モジュール１３３の無効化依頼を受信すると、モジュール無効化部２３０に対し、更新モジュール１３３を無効化するためのアクセス情報取得鍵の送付を依頼する（Ｓ７００４）。更に、更新モジュール１３１は、アクセス制御モジュール１４０へ、更新モジュール１３３を無効化するためのアクセス情報の取得を依頼する（Ｓ７００５）。
【０１８２】
モジュール無効化部２３０は、アクセス情報取得鍵の送付依頼を受信すると、更新モジュール１３１が正当な（改ざんされていない）更新モジュールか否か、及び、依頼されたアクセス情報取得鍵が不正な（改ざんされた）更新モジュール１３３を無効化するためのアクセス情報取得鍵か否かを確認する（Ｓ７００６）。この確認は、判断部２１０からモジュール無効化部２３０へ通知された更新モジュールの情報を利用して行う。
【０１８３】
確認した結果、改ざんされた更新モジュール１３３からの依頼であったり、或いは、改ざんされていない更新モジュール（１３１、１３２）に対するアクセス情報取得鍵の取得依頼であったりする場合には、無効化処理を停止する（Ｓ７００７）。確認した結果、問題なければ、依頼してきた更新モジュール１３１へ更新モジュール１３３を無効化するためのアクセス情報取得鍵を送付する（Ｓ７００８）。
【０１８４】
更新モジュール１３１は、モジュール無効化部２３０からアクセス情報取得鍵を受信し、さらに、アクセス制御モジュール１４０から暗号化されたアクセス情報を受信する（Ｓ７００９）。更新モジュール１３１は、アクセス情報取得鍵と暗号化されたアクセス情報とから、アクセス情報を取得する（Ｓ７０１０）。取得したアクセス情報は、更新モジュール１３３を消去するための専用ドライバである。更新モジュール１３１は、専用ドライバを利用して、改ざんされた不正な更新モジュール１３３を消去する（Ｓ７０１１）。
【０１８５】
更新モジュール１３１は、無効化処理が終了すると、アクセス情報取得鍵、暗号化されたアクセス情報、及び、アクセス情報等を消去し、モジュール無効化部２３０へ完了通知を送信する（Ｓ７０１２）。モジュール無効化部２３０は、更新モジュール１３１から完了通知を受信したら、判断部２１０へ無効化の完了通知を送信する（Ｓ７０１３）。
なお、無効化処理により、分散情報保持部３１０を備える更新モジュールが無効化された場合、その更新モジュールが保持していた分散情報も消去される。そこで、分散情報保持部３１０を備える更新モジュールを無効化する場合は、分散情報の消去を考慮した無効化処理を行う必要がある。
【０１８６】
分散情報の消去を考慮した無効化処理については、特許文献２の５６ページから６４ページに、「脱退処理」として詳しく説明されている。特許文献２における秘密鍵ｄを、本実施形態の暗復号鍵に対応させ、分散情報保持装置を、本実施形態の更新モジュール１３１、１３２、１３３に対応させることで、特許文献２と同じ方法が利用可能である。なお、分散情報の消去を考慮した無効化処理を行うには、無効化する不正な更新モジュール以外に、正当な更新モジュールが最低３つ必要である。無効化処理に保護制御モジュール１２０を使用する場合は、初期設計時と同じ方法で再度分散情報を生成し、配布すればよい。
【０１８７】
以上説明したように、本実施形態では、更新モジュール群１３０内の複数の更新モジュールが相互監視処理を行うので、改ざんされた更新モジュールを検出することが可能となり、ソフトウェア更新システムの信頼性を高めることができる。また、改ざんされた更新モジュールを無効化するので、改ざんされた更新モジュールによる不正動作を防止することができる。
【０１８８】
２０．追加処理の動作
次に、図２７のフローチャートを用いて、ソフトウェア更新システム１０における追加処理の動作について説明する。追加処理は、図２６のＳ３３０２の詳細であり、機器１００内部の更新モジュールの数を増やすために更新モジュールを追加する処理である。
ここでは、更新モジュール１３１、１３２を用いて、新たな更新モジュールを追加する処理を例に説明する。
【０１８９】
判断部２１０は、更新モジュール群１３０に更新モジュールの追加が必要であると判断すると、モジュール追加部２４０へ更新モジュールの追加を指示する。このとき、追加の指示と同時に、現在の機器１００内部の正当な更新モジュールの一覧（リスト）を通知する。
判断部２１０からの指示を受けると、先ず、更新モジュール選択部９０３は、判断部２１０から受信した正当な更新モジュールのリストから、追加処理を実施する更新モジュールを選択する（Ｓ３３１０）。
【０１９０】
選択する方法としては、例えば、ランダムに選択してもよいし、リストの上から順番に選択してもよいし、一番多くの更新モジュールから監視されている更新モジュールを選択してもよい。更新モジュール選択部９０３が選択する更新モジュールの数は、１つでもよいし、半数の更新モジュールを選択してもよいし、すべての更新モジュールを選択してもよい。選択する方法及び選択する数は、システム設計時に決めてもよいし、その都度、判断部２１０が指示してもよい。
【０１９１】
次に、更新モジュール分割部９０５は、更新モジュール保持部９０４から追加用更新モジュールを取得し、追加用更新モジュールを、追加処理を実施する更新モジュールの数と同数に分割する（Ｓ３３１１）。
その後、更新モジュール分割部９０５は、分割した追加用更新モジュールを、更新モジュール選択部９０３が選択した更新モジュールのそれぞれへ送信する（Ｓ３３１２）。このとき、更新モジュール分割部９０５は、分割された追加用更新モジュールを書き込む領域を示す情報も送信する。また、更新モジュール保持部９０４から取得する追加用更新モジュールには、そのモジュールを検証するための検証用証明書が付加されている。
【０１９２】
このように、追加の権限を一つの更新モジュールに独占させるのではなく、複数の更新モジュールに分散することにより、追加の権限を有する更新モジュールが改ざんされたことにより、不正な更新モジュールが追加される危険性を低下させることができる。
分割した追加用更新モジュールを受信した各更新モジュールは、それぞれ指定された領域に、分割された追加用更新モジュールを書き込む（Ｓ３３１３）。書き込みが終了した更新モジュールは、追加処理の終了をモジュール追加部２４０へ通知する（Ｓ３３１４）。
【０１９３】
モジュール追加部２４０の制御部９０６は、分割した追加用更新モジュールを送信したすべての更新モジュールから追加処理の終了通知を受け取ると、更新モジュール群１３０のすべての更新モジュールに対して、追加した更新モジュールの検証情報を送付し、検証を依頼する（Ｓ３３１５）。検証情報は、追加した更新モジュールが書き込まれた領域の先頭アドレス及びサイズである。
【０１９４】
検証情報を受信した更新モジュールは、検証情報を基に更新モジュールを読み込み、更新モジュールに付加されている検証用証明書を用いて検証を実施する（Ｓ３３１６）。検証が終了した更新モジュールは、検証結果をモジュール追加部２４０へ通知する（Ｓ３３１７）。
制御部９０６は、更新モジュールから通知された検証結果から、更新モジュールが正しく追加されたかを判定する（Ｓ３３１８）。そして、判定結果と追加処理の終了とを、判断部２１０へ通知する（Ｓ３３１９）。
【０１９５】
なお、分散情報保持部３１０を備える更新モジュールを追加する場合、追加する更新モジュールに分散情報を配布する必要がある。追加する更新モジュールに分散情報を配布する方法については、特許文献２の６４ページから７９ページに詳しく説明されている。ここで、特許文献２における秘密鍵ｄを、本実施形態の暗復号鍵に対応させ、分散情報保持装置を、本実施形態の更新モジュール１３１、１３２、１３３に対応させることで、特許文献２と同じ方法が利用可能である。なお、追加する更新モジュールに分散情報を配布する場合、追加する追加用更新モジュール以外に、正当な更新モジュールが最低３つ必要である。保護制御モジュール１２０を使用する場合は、初期設計時と同じ方法で再度分散情報を生成し、配布すればよい。
【０１９６】
以上説明したように、本実施形態によると、更新モジュールを追加することにより、機器１００内の更新モジュールの数を一定数に保つことが可能となり、更新モジュールの改ざんを更新モジュール群１３０内で安定して検証することができる。これにより、ソフトウェア更新システムの信頼性を高めることができる。
２１．監視パターン更新処理
ここでは、ソフトウェア更新システム１０における監視パターン更新処理について説明する。監視パターン更新処理は、更新モジュールの無効化処理や追加処理を行った後に、監視パターンを更新する必要あると判断された場合、機器１００内部の更新モジュール群１３０の監視パターンを更新する処理である。  
【０１９７】
具体例として、図４０において、更新モジュールＡを無効化し、更新モジュールＤを追加した場合に、監視パターンを更新する処理について説明する。
図４０Ａに示すように、更新モジュールＡが更新モジュールＢを監視し、更新モジュールＢが更新モジュールＣを監視し、更新モジュールＣが更新モジュールＡを監視しているとする。
【０１９８】
この状態で、更新モジュールＡを無効化し、更新モジュールＤを追加した場合を考える。更新モジュールＡは無効化されるため、更新モジュールＢはどの更新モジュールからも監視されなくなる。また、更新モジュールＤは新たに追加したため、どの更新モジュールからも監視されない。そこで、監視パターンの更新処理を行う必要がある。
更新する監視パターンとして、例えば、図４０Ｂに示すように、更新モジュールＢが更新モジュールＣを監視し、更新モジュールＣが更新モジュールＤを監視し、更新モジュールＤが更新モジュールＢを監視するという監視パターンに更新する。
【０１９９】
このように、無効化処理や追加処理の後に監視パターンを更新することにより、どの更新モジュールからも監視されない更新モジュールを無くし、すべての更新モジュールが監視される状態を保つことが可能となる。
また、更新サーバ２００から、逐次監視パターンを変更できるので、監視パターンを見破られて、更新モジュールが改ざんされるのを防止することができる。その結果、不正な更新モジュールを介して保護制御モジュール１２０が改ざんされるのを防止し、不正な保護制御モジュールによってアプリ（１１０、１１１）が攻撃されるのを防止することができる。
【０２００】
２２．更新サーバ２００が保持する判断基準
実施の形態１では、機器１００の状態に応じて、機器１００が行う処理の処理順序が異なる。管理サーバ２００の判断部２１０は、機器１００にどの処理を優先させるか、判断基準を用いて判断する。
具体的に、判断部２１０は、保護制御モジュール１２０が改ざんされているときに機器１００が行う処理の優先順位と、保護制御モジュール１２０が改ざんされていないときに機器１００が行う処理の優先順位とを対応付けた判断基準を保持している。
【０２０１】
図４１は、保護制御モジュール１２０が改ざんされていない場合の処理順序を示す図である。保護制御モジュール１２０が改ざんされていない場合、機器１００は、更新モジュールの無効化処理、追加処理、監視パターン更新処理の順序で行う。
例えば、通常時判断処理において、更新モジュール１３３が改ざんされていると判断された場合、機器１００は、更新モジュール１３３の無効化処理を行い、更新モジュール１３３を無効化したことにより、更新モジュールの数が所定値以下となる場合には、更新モジュールの追加処理を行う。また、無効化された更新モジュール１３３が監視をしていた更新モジュールや、新たに追加された更新モジュールを監視するために、監視パターンの更新を更新する。
【０２０２】
図４２は、保護制御モジュールが改ざんされている場合の処理順序を示す図である。保護制御モジュール１２０が改ざんされている場合、回復時相互監視処理で更新モジュール１３３が改ざんされていることを検知しても、更新モジュール１３３の無効化処理に優先して、保護制御モジュール１２０の回復処理を行う。
更新モジュール１３３の無効化処理に優先して、保護制御モジュール１２０の回復処理を行うことにより、更新モジュール１３３の無効化処理中に、改ざんされた保護制御モジュール１２０を介して、本来保護されるべきアプリ（１１０、１１１）が攻撃されるのを防止することができる。
【０２０３】
機器１００は、保護制御モジュール１２０の回復処理が完了した後に、更新モジュール１３３の無効化処理を行う。さらに、必要に応じて、更新モジュールの追加処理及び監視パターン更新処理を行う。
（実施の形態２）
実施の形態１では、ある更新モジュールが無効化されることによって、他の更新モジュールから監視されない更新モジュールが存在してしまうことのないよう、監視パターンの更新処理（Ｓ３４０２）を行っていた。本実施の形態では、さらに、監視モジュールにおいて監視パターンの更新処理が確実に行われたか否かを他の更新モジュールが検証し、更新後の監視パターンが常に用いられることを保証する。これにより、古い監視パターンに基づき他の更新モジュールから一切監視されていないなど不正な動作をしうる更新モジュールが動作してしまうのを避けることができる。さらに、本実施の形態では、更新サーバ２００の監視パターン更新部２５０が、更新モジュール１３１〜１３３の構成に応じた適切な監視パターンを生成している。以下、それぞれの詳細について説明する。なお、実施の形態１と同じ構成要素については同じ符号を用いるものとし、実施の形態１で既に説明した処理についての説明は省略する。
【０２０４】
２３．各部の構成
まず、更新モジュール１３１〜１３３の構成について説明し、次に、監視パターン更新部２５０の構成について説明する。
図４３は、本発明の実施の形態２における更新モジュール１３１〜１３３の構成を示す図である。
【０２０５】
更新モジュール本体は、図８に示した実施の形態１の更新モジュール本体の構成要素に加え、監視パターン更新検証部３１１、モジュール機能通知部３１２、機能情報保持部３１３を備える。
監視パターン更新検証部３１１は、他のモジュールの監視パターン本体を取得し、取得した監視パターンを用いて、他のモジュールが正しい監視パターンに更新したか否か検証する。ここで、検証対象となるのは、自身の監視パターン本体に記述されている監視先の更新モジュールである。また、検証には、更新サーバ２００から受信した監視パターン情報に含まれる検証値リストを使用する。実施の形態２における検証値リスト中に、自身の監視パターン本体を検証するための検証値、監視パターン本体に記述されている監視先に係る監視パターン本体を検証するための検証値が格納されている。検証値としては、ハッシュ値、ＭＡＣ値などがあるが、ここでは、一例としてハッシュ値を用いる。
【０２０６】
ハッシュ値を用いて監視先の監視パターンを検証する際には、まず監視先の監視パターン本体を取得してハッシュ値を算出し、算出したハッシュ値と、自身の監視パターン情報に含まれる監視先の検証値とを比較することで行う。比較の結果一致した場合、正しい監視パターンに更新されたと判定する。
機能情報保持部３１３は、各更新モジュールが、検証（監視）機能、更新機能、分散情報保持機能の３つの機能のうちいずれを有しているかを示す機能情報を保持している。更新モジュール本体は、３つの機能のうち少なくとも１つを有していればよい。
【０２０７】
モジュール機能通知部３１２は、機能情報保持部３１３が保持する機能情報を更新サーバ２００へ通知する。
図４４は、監視パターン更新検証についての更新モジュール相互の対応関係を模式的に示す図である。図４４は、具体的には、３つの更新モジュール（更新モジュール１、更新モジュール２、更新モジュール３）が機器１００内に存在する場合について示している。
【０２０８】
それぞれの更新モジュールは、まず、自身の監視パターンを、更新サーバ２００から通知された監視パターンに更新する。次に、各監視モジュールは、他の更新モジュールが正しく監視パターンを更新したか否かを検証する。監視対象がいずれの更新モジュールであるかは、自身の監視パターン本体に記述されている。図４４の例では、更新モジュール１に係る更新後の監視パターンは、更新モジュール１が更新モジュール２と更新モジュール３を監視すべきことを示している。また、更新モジュール２に係る更新後の監視パターンは、更新モジュール２が更新モジュール１を監視すべきことを示し、更新モジュール３に係る更新後の監視パターンは、更新モジュール３が更新モジュール２を監視すべきことを示している。
【０２０９】
監視パターンの検証には、監視パターン本体と一緒に更新サーバ２００から送信されてきた検証値リストを使用する。検証値リストには、監視パターンの検証に利用する検証値が格納されている。
図４４の例では、更新モジュール１の検証値リストには、更新モジュール２と更新モジュール３の監視パターンの更新を検証するための検証値が格納されている。また、更新モジュール２の検証値リストには、更新モジュール１の監視パターンの更新を検証するための検証値が格納され、更新モジュール３の検証値リストには、更新モジュール２の監視パターンの更新を検証するための検証値が格納されている。
【０２１０】
次に、監視パターン更新部２５０について説明する。
図４５は、監視パターン更新部２５０の構成を示すブロック図である。
図４５に示すように、本実施の形態に係る監視パターン更新部２５０は、図１５を用いて説明した実施の形態１に係る監視パターン更新部２５０の構成要素に加え、機能情報取得部１００６、更新完了判定部１００７を備える。
【０２１１】
機能情報取得部１００６は、機器１００内の更新モジュール１３１〜１３３それぞれがどのような機能を持っているかを示す情報（機能情報）を、それぞれの更新モジュールから取得する。機能情報は、具体的には、更新モジュールが備え得る機能である検証（監視）機能、更新機能、分散情報保持機能のうち１つ以上を示す。
監視パターン生成部１００３は、機能情報取得部１００６が取得した機能情報に基づいてまず監視モジュール群全体の新たな監視パターンを生成する。監視パターン生成部１００３は、各監視モジュールが、少なくとも１つの他の監視モジュールから監視されることとなるように監視パターンを生成する。監視パターンの一例については、図６１を用いて説明する。
【０２１２】
図６１は、新たな監視パターンに従って、各更新モジュールが、他のいずれの更新モジュールを監視するかを模式的に示している。なお、これまで、更新モジュールは３個（更新モジュール１３１〜１３３）の例で説明しているが、図６１においては、更新モジュールのバリエーションを増やすために更新モジュールが７個（更新モジュール１３１〜１３７）の例で説明している。ここで、図中の更新モジュールにおいては、検証（監視）機能を有するものには、その機能を実現する監視部を図中に記載しており、更新機能を有するものにはその機能を実現する更新部を記載している。また、検証（監視）機能、更新機能の両方を有する更新モジュールについては、監視部、更新部の両方を記載している。なお、上述の更新モジュールの説明では、各更新モジュールが、監視部、更新部の双方を有する構成で説明していたが、監視部、更新部のいずれか一方しか有しない更新モジュールが混在していてもよいこととしている。
【０２１３】
また、図６１の監視パターンは以下に示す規則に従い構成されている。
まず、監視部のみを有する更新モジュール１３１、１３２、１３５、１３７は、監視部を有する最低１つ以上の他の更新モジュールから監視される。また、更新部のみを有する更新モジュール１３３、１３６は、監視部を有する２以上の更新モジュールから監視される。そして、監視部と更新部の両方を有する更新モジュール１３４は、自モジュール以外の全ての監視部から監視される。この規則は、他のモジュールの更新を行う更新部は、他のモジュールの不正動作を監視する監視部よりも厳格に管理される必要があり、監視部、更新部の両方を有する監視モジュールは、更新部のみを有するものよりもさらに厳格に管理されるべきことに基づいている。
【０２１４】
なお、監視するモジュールが増すほど、監視されるモジュールの安全性は増すが、各モジュールの処理は複雑になり、プロセッサ等ハードウェアの処理負担も増す。よって、監視パターンは、システムの処理性能等に応じて最適なパターンを生成すればよい。
また、回復処理時には、更新機能が正しく動作する必要があるため、回復処理時に用いる監視パターンとして、更新機能を持つ更新モジュールが多くの更新モジュールから監視され、検証（監視）機能と更新機能を持つ更新モジュールは他の更新モジュールを監視しないような監視パターンを生成するとしてもよい。このように、監視パターンは１パターンに限らず複数パターンを保持しておき、各処理、場面等に応じた監視パターンを使い分けることとしてもよい。
【０２１５】
次に、監視パターン分割部１００４は、監視パターン生成部１００３が生成した新監視パターン（全体）を、個々の更新モジュール毎の監視パターンに分割し、更新モジュール毎の新監視パターンを生成する
図６１に示す例の場合、更新モジュール１３１は、更新モジュール１３３、１３４を監視するので、更新モジュール１３１に係る新監視パターンには更新モジュール１３３及び１３４を識別する識別子が記載される。また、更新モジュール１３４については、更新モジュール１３３、１３６、１３７を監視するので、更新モジュール１３４に係る新監視パターンには、更新モジュール１３３、１３６、１３７のそれぞれを識別する識別子が記載される。
【０２１６】
更新完了判定部１００７は、更新モジュール１３１〜１３３の相互監視結果（監視パターン更新検証結果等）を受信し、すべての更新モジュールにおいて、監視パターンが正しく更新できたかどうかを判定する。正しく更新できたと判定できた場合には、監視パターン更新処理を終了する。正しく更新できていない場合には、再度、監視パターン更新処理を実施する。ここで、更新モジュール１３ｘのそれぞれは、監視パターン更新処理において、更新前の更新パターンをバックアップしておいてもよい。そして、全ての更新モジュールにおいて監視パターンが正しく更新できたと確認できた場合に、バックアップしていた更新パターンを削除することとしてもよい。
【０２１７】
２４．監視パターン更新処理の動作
ソフトウェア更新システム１０における監視パターン更新処理の動作について図４６のフローチャートを用いて説明する。
更新サーバ２００の判断部２１０により、監視パターンの更新が必要と判断された場合（Ｓ３４０１）に、更新サーバ２００の監視パターン更新部２５０と、機器１００内部の更新モジュール１３１〜１３３において監視パターンの更新処理が開始される。
【０２１８】
まず、更新サーバ２００の監視パターン更新部２５０における機能情報取得部１００６が、監視パターンを生成するために必要な、更新モジュールの機能情報を取得するために、機器１００内のすべての更新モジュールに対して機能情報通知依頼を行う（Ｓ８００１）。
機能情報通知依頼を受けた更新モジュール１３１〜１３３において、モジュール機能通知部３１１が機能情報保持部３１２に保持している機能情報を取得し、監視パターン更新部２５０へ通知する（Ｓ８００２）。
【０２１９】
機能情報の通知を受けた監視パターン更新部２５０は、その機能情報を元に、監視パターン生成部１００３により新監視パターン（全体）を生成する。
次に、監視パターン分割部１００４は、監視パターン生成部１００３が生成した新監視パターン（全体）を、個々の更新モジュール毎の監視パターンに分割し、更新モジュール毎の新監視パターンを生成する（Ｓ８００４）。生成した新監視パターンは、それぞれの更新モジュールへ送付する（Ｓ８００５）。
【０２２０】
新監視パターンを受信したそれぞれの更新モジュールは、各自の監視パターンを更新し、更に他の更新モジュールが正しく監視パターンを更新したかを検証し（Ｓ８００６）、その結果（相互監視結果）を監視パターン更新部２５０へ通知する（Ｓ８００７）。各更新モジュールにおける監視パターンの更新処理（Ｓ８００６）の詳細は後述する。
相互監視結果の通知を受けた監視パターン更新部２５０は、更新終了判定部１００７により、相互監視結果から正しく監視パターンの更新処理が終了したか否かを判定する。その結果、正しく監視パターンを更新しなかった不正な更新モジュールがあった場合には、その不正な更新モジュール以外の更新モジュールを監視対象とする新監視パターン（全体）を生成する（Ｓ８００３）。不正な更新モジュールがなかった場合には、更新モジュール１３１〜１３３へ監視パターンの更新処理の終了を通知する（Ｓ８００９）。
【０２２１】
監視パターンの更新処理の終了通知を受けた更新モジュール１３１〜１３３は、他の更新モジュールの監視パターンが更新されているので、それぞれに対応するＭＡＣ値を再計算し、ＭＡＣ値テーブルを更新する（Ｓ８０１０）。
次に、各更新モジュールにおける監視パターンの更新処理（Ｓ８００６）の詳細について図４７のフローチャートを用いて説明する。ここで、以下では、図４４の場合と同様に３つの更新モジュールがある場合の処理について説明する。なお、更新モジュールの数や、更新される監視パターンが本説明と異なる場合であっても以下の説明と同様の方法を用い得る。
【０２２２】
先ず、監視パターン更新部２５０からそれぞれの更新モジュールへ新監視パターンが通知される。新監視パターンを受信したそれぞれの更新モジュールは、監視パターン更新部３０９を用いて、自身の監視パターン情報を、受信した新監視パターンへ更新する（Ｓ８１０１）。更新が終了すると、検証リストを用いて、自身の監視パターンが正しく更新されたか検証し、監視パターンの反映終了を更新サーバ２００へ通知する（Ｓ８１０２）。
【０２２３】
更新サーバ２００では、監視パターン更新部２５０が更新モジュールからの監視パターンの反映終了の通知を受け、各更新モジュールへ更新検証を依頼する（Ｓ８１０３）。
更新検証依頼を受けた更新モジュールは、更新した新監視パターン本体に記述されている更新モジュールの監視パターン本体を検証する（Ｓ８１０４）。例えば、図４４に示した様に監視パターンが更新されたとすると、更新モジュール１は、更新モジュール２と更新モジュール３の監視パターンの更新を検証し、更新モジュール２は、更新モジュール１の監視パターンの更新を検証し、更新モジュール３は、更新モジュール２の監視パターンの更新を検証する。監視パターン本体の検証には、更新サーバ２００から受信した監視パターン情報の検証値リスト内の検証値を利用し、検証を行う。検証が終了すれば、それぞれの更新モジュールは、その検証結果を更新サーバ２００へ通知する。
【０２２４】
監視パターンの更新の検証が終了した更新モジュールは、次に、更新した新監視パターン本体に記述されている更新モジュールの更新モジュール本体を検証する（Ｓ８１０５）。更新モジュール本体の検証には、更新モジュール検証用証明書を利用する。検証が終了すれば、それぞれの更新モジュールはその検証結果を更新サーバ２００へ通知する。
以上で、各更新モジュールにおける監視パターンの更新処理は終了する。この後は、上述したように、監視パターン更新部２５０が相互監視結果として監視パターンの更新検証結果と更新モジュール本体の検証結果を受信し、更新完了判定部１００７が更新の完了を判定する処理を行う。
【０２２５】
（実施の形態３）
上述の実施の形態１では、暗復号鍵に対し秘密分散法を用いて分散情報を生成し、各更新モジュール自身に割り当てられた分散情報を保持するものとしていた。本実施の形態では、各更新モジュールには、各更新モジュール自身に割り当てられた分散情報だけでなく、他の更新モジュールの分散情報をも保持する機能が追加されている。この機能により、一部の更新モジュールが無効化されても、残りの更新モジュールから暗復号鍵を復元しうる。よって、暗復号鍵を復元するために更新モジュールが改ざんされたとしても、改ざんされた更新モジュールを無効化することなく、正常な更新モジュールのみで動作を継続できる。以下、実施の形態３における処理の詳細について説明する。
【０２２６】
図４８は、更新モジュール群１３０の構成図である。
図４９は、自身の分散情報だけでなく、隣接する更新モジュールの分散情報を保持する場合における、分散情報の持ち合いを説明するための図である。
実施の形態３では、更新モジュールは、図４８、図４９に示すように一例として７つである。
【０２２７】
本実施の形態でも、実施の形態１で説明した初期設計処理（図１８）を行うが、初期設計処理において、保護制御モジュール１２０が暗復号鍵から秘密分散法を用いて分散情報を生成する（Ｓ１００２）点が実施の形態１と異なっている。このとき、図４９に示すように、各更新モジュールの分散情報と隣接する更新モジュールの分散情報を各更新モジュールへ送信する。例えば、更新モジュール１３１では、更新モジュール１３１の分散情報である分散情報１と隣接する更新モジュール２の分散情報２と更新モジュール７の分散情報７を保持する。この処理により、更新モジュール１３２が改ざんされた場合においても、更新モジュール１３１が分散情報２を保持しているため暗復号鍵の復元をすることができる。
【０２２８】
次に、隣接する更新モジュールの分散情報を保持した場合の各判断処理について図面を用い説明する。以下の説明において、実施の形態１と同じ処理については同じ符号を用いることとし、説明については省略する。
２５．通常時無効化判断処理
まず、通常時無効化判断処理について説明する。
【０２２９】
図５０は、通常時判断処理の通常時無効化判断処理のフローチャートである。
図５０において、実施の形態１の通常時無効化判断処理（図２４）と同じ処理については同じ符号を用い、詳細な説明は省略する
図５１は、更新モジュール群１３０のうち、半数以上が危殆化した例を示す図である。
通常時無効化判断処理では、図５１に示すように、判断部２１０が、更新モジュールが半数以上危殆化しているか否かを判定（Ｓ３２０１）し、半数以上危殆化している場合には、判断部２１０内の指示生成部６０３で更新モジュール群１３０全体を更新する指示を生成し、更新モジュール全体を更新する（Ｓ３２０２）。
【０２３０】
また、判断部２１０は、更新モジュールの連続３つが危殆化しているかを判定し（Ｓ３２０Ａ）、連続３つが危殆化していた場合には、判断部２１０内の指示生成部６０３で更新モジュール群１３０全体を更新する指示を生成し、更新モジュール全体を更新する。
図５２は、更新モジュール群１３０のうち、更新モジュール１３１、１３２、１３７の３つが危殆化した例を示す図である。ここで、連続３つとは、更新モジュール１３１、更新モジュール１３２、更新モジュール１３７が同じ分散情報１を持つ関係のように、分散情報を保持する更新モジュールの構成において、同じ分散情報を保持する更新モジュールの関係を表す。更新モジュール１３１、更新モジュール１３２と更新モジュール１３７が改ざんされ危殆化した場合、更新モジュール１３１の分散情報１が取得できず、暗復号鍵の復元をすることができなくなる。そのため、保護制御モジュール１２０が更新モジュール全体を更新し、暗復号鍵を再分散する必要がある。具体的には、Ｓ３２０２と同様に更新モジュール全体を更新した後に、判断部２１０が保護制御モジュール１２０に暗復号鍵の更新と再分散の通知を行う。そして保護制御モジュール１２０が、現在の暗復号鍵でアプリ（１１０、１１１）を復号し、暗復号鍵を更新して、新しい暗復号鍵でアプリを暗号化する。さらに、保護制御モジュール１２０は、暗復号鍵から秘密分散法を用いて分散情報を生成し、更に署名秘密鍵を用いて暗復号鍵の復元時に正しく復元できたかを確認するための証明書（暗復号鍵証明書）を生成する。生成した分散情報と暗復号鍵証明書と隣接する更新モジュールの分散情報と暗復号鍵証明書をそれぞれ、更新モジュール１３１〜１３７へ送信する。
【０２３１】
なお、暗復号鍵から秘密分散法を用いて分散情報を生成する方式や分散情報を更新モジュールへ送信する方法については、特許文献２の４７ページから４９ページに詳しく説明されているので説明は省略する。また、特許文献２における秘密鍵ｄを暗復号鍵に、認証局装置を保護制御モジュール１２０に、分散情報保持装置を更新モジュール１３１〜１３３に対応させることで、特許文献２と同じ方法が利用可能である。
【０２３２】
また、連続３つが危殆化していないと判断した場合において、隣接する更新モジュールが危殆化していると判定した場合には、更新モジュール全体の更新を行う（Ｓ３２０Ｂ）。
図５３は、更新モジュール群１３０のうち、更新モジュール１３１の隣接する更新モジュール１３２、１３７が危殆化した例を示す図である。
【０２３３】
隣接する更新モジュールが危殆化した場合、特許文献２の脱退処理を行うことができない。この場合、危殆化した更新モジュールの無効化処理を行った後、更新モジュール全体の分散情報を更新する。分散情報を更新する方法は上記の更新モジュール全体の分散情報の更新と同様であるので省略する。
２６．回復時判断処理
回復時判断処理（Ｓ５１０３）の詳細について図５４を用いて説明する。
【０２３４】
図５４は、回復時相互監視処理の回復時判断処理を示すフローチャートである。図５４において、実施の形態１の回復時判断処理（図３６）と同じ処理については同じ符号を用いており、重複する説明については省略する。
判断部２１０は、更新モジュールが半数以上が危殆化しているかを判定し（Ｓ５１１１）、更新モジュールの危殆化が半数未満であった場合、更新モジュールの連続３つが危殆化しているかを判定する（Ｓ５１１Ａ）。更新モジュールの連続３つが危殆化していた場合には、暗復号鍵の復元をすることができなくなるため機器１００を停止する。
【０２３５】
上記のように、更新モジュールＡの分散情報を両隣の更新モジュールに保持させることにより、保護制御モジュール１２０の更新処理中に更新モジュールＡが改ざんされたとしても、更新モジュールＡの分散情報を両隣の更新モジュールから取得することによって保護制御モジュールの暗復号鍵を復元することができる。また、連続３つの更新モジュールが危殆化しているか否かを判定し、危殆化していた場合には、更新モジュール全体の分散情報を更新することで、保護制御モジュール１２０の暗復号鍵が復元できない状況を事前に防ぐことができる。これにより、保護制御モジュールの更新処理を正しく行うことができる。
【０２３６】
（その他の変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記実施の形態では、保護制御モジュール１２０を更新するとしたが、これに限定するものではなく、更新モジュールやアプリ等、保護制御モジュール１２０以外のモジュールを更新するとしてもよい。以下、更新モジュール１３３を更新する場合を例に、更新モジュールの更新処理を説明する。
【０２３７】
更新モジュールの更新処理では、保護制御モジュールを更新する場合と同様に、更新用ソフトウェア配布モジュール２１０が、新更新モジュール１３３を複数の鍵を用いて多重に暗号化し、更新モジュール群１３０に含まれる更新モジュール（更新モジュール１３３を除く）を送信先として送信する。更新モジュール群１３０に含まれる更新モジュールは、更新モジュール１３３を新更新モジュール１３３に更新する。この時、多重に暗号化された新更新モジュール１３３を復号するための複数の鍵を、更新モジュール群１３０に含まれる更新モジュールへ送信するタイミングを更新用ソフトウェア配布部２２０が制御することで、攻撃者が暗号化されていない新更新モジュール１３３を入手することを不可能にする。
【０２３８】
図５５〜５６は、更新モジュールの更新処理の一例を示すフローチャートである。ここでは、上述したように更新モジュール１３３を更新するものとする。図５５〜５６は、基本的には、図３３〜３４と同様である。異なる点は、更新対象となる更新モジュール１３３には、更新検証証明書や、復号終了通知、更新終了通知が送信されないことである。
以下、更新モジュール１３１、１３２が更新モジュール１３３を更新する処理を例に、更新モジュールの更新の処理について詳細に説明する。
【０２３９】
まず、更新用ソフトウェア配布部２２０は、新更新モジュール１３３の証明書（更新検証証明書）を証明書生成部４０８を用いて生成し（Ｓ９００１）、各更新モジュール１３１〜１３２へ送信する（Ｓ９００２）。この証明書を用い更新モジュール１３１〜１３２は、新更新モジュール１３３が正しくインストールできたか否かを確認できる。更新検証証明書の生成には、署名秘密鍵を利用する。各更新モジュールは、更新検証証明書を受信する。
【０２４０】
次に、更新用ソフトウェア配布部２２０は、暗号鍵生成部４０３を用いて、新更新モジュール１３３を多重に暗号化するための暗号鍵を２つ（第１の鍵、第２の鍵）生成する（Ｓ９００３）。そして、暗号化部４０４を利用して、第２の鍵を用いて新更新モジュール１３３を暗号化し、暗号化新更新モジュール１３３を生成する（Ｓ９００４）。更に暗号化新更新モジュール１３３に対して、第１の鍵を用いてさらに暗号化し、多重暗号化新更新モジュール１３３を生成する（Ｓ９００５）。
【０２４１】
更新用ソフトウェア配布部２２０は、更新モジュール群１３０から一つの更新モジュール（ここでは、更新モジュール１３１）を選択する（Ｓ９００６）。更新モジュールの選択では、判断部２１０内の不正モジュール特定部６０４に記憶されている危殆化した更新モジュール以外の更新モジュールを選択する。また、選択した更新モジュールの識別子を判断部２１０に送信する。更新用ソフトウェア配布部２２０は、選択した更新モジュールに多重暗号化新更新モジュール１３３を送信する（Ｓ９００７）。更に、更新モジュール１３１へ第１の鍵を送信する（Ｓ９００８）。
【０２４２】
更新モジュール１３１は、多重暗号化新更新モジュール１３３と第１の鍵を受信し（Ｓ９００９）、第１の鍵を用いて、多重暗号化新更新モジュール１３３を復号し、暗号化新更新モジュール１３３を取得する（Ｓ９０１０）。復号が終了すると、その旨を更新用ソフトウェア配布部２２０へ通知する（Ｓ９０１１）。
更新用ソフトウェア配布部２２０は、復号終了通知を受信すると、更新モジュール群１３０から上記とは異なる更新モジュール（ここでは、更新モジュール１３２）を１つ選択する（Ｓ９０１２）。更新モジュールの選択は、上記と同様に判断部２１０内の不正モジュール特定部６０４に記憶されている危殆化した更新モジュール以外の更新モジュールを選択する。更新用ソフトウェア配布部２２０は、選択した更新モジュールに第２の鍵を送信する（Ｓ９０１３）。さらに、更新モジュール１３１に対して、暗号化新更新モジュール１３３を更新モジュール１３２へ送信するよう依頼する（Ｓ９０１４）。
【０２４３】
更新モジュール１３１は、更新用ソフトウェア配布部２２０からの依頼を受けて、暗号化新更新モジュール１３３を更新モジュール１３２へ送信する（Ｓ９０１５）。
更新モジュール１３２は、更新用ソフトウェア配布部２２０から第２の鍵を受信し、更新モジュール１３１から暗号化新更新モジュール１３３を受信する（Ｓ９０１６）。そして、第２の鍵を用いて、暗号化新更新モジュール１３３を復号し、新更新モジュールを１３３取得する（Ｓ９０１７）。
【０２４４】
更新モジュール１３２は、取得した新更新モジュール１３３を更新モジュール１３３に上書きし、新たな更新モジュール１３３に更新する（Ｓ９０１８）。そして、更新の終了を更新モジュール１３３以外の他の更新モジュールへ通知する（Ｓ９０１９）。
更新モジュール１３１〜１３２はそれぞれ、事前に受信した更新検証証明書を用いて、更新モジュール１３３が正しく更新されたかを検証し（Ｓ９０２０）、検証結果を更新用ソフトウェア配布部２２０へ通知する（Ｓ９０２１）。
【０２４５】
更新用ソフトウェア配布部２２０は、各更新モジュールから送信された通知を受信すると、検証結果から更新モジュール１３３が正しく更新されたかを判定し（Ｓ９０２２）、正しく更新されていない場合には、機器１００を停止する（Ｓ９０２３）。
正しく更新されている場合には、更新処理の終了を更新モジュール１３３以外の各更新モジュールへ通知する（Ｓ９０２４）。
【０２４６】
更新モジュール１３１〜１３２はそれぞれ、更新処理の終了の通知を受けて、更新モジュール１３３のＭＡＣ値を生成し、ＭＡＣ値テーブルへ更新モジュール１３３の識別子とＭＡＣ値の組を保存する（Ｓ９０２５）。
また、更新モジュールを上書きするとしたが、これに限定するものではなく、改ざんされた更新モジュールを無効化してから、上書きをするとしてもよい。
【０２４７】
なお、更新モジュールを上書きするとしたが、これに限定するものではなく、保護制御モジュール１２０やアプリ等、更新モジュール以外のモジュールを上書きするとしてもよい。アプリ１００、１１０は、上述した機能以外の機能を提供するソフトウェアであってもよい。
また、一つでも更新モジュールが改ざんされている場合には、改ざんされていない更新モジュールが全ての更新モジュール及び保護制御モジュール１２０を更新あるいは上書きするとしてもよい。
【０２４８】
また、更新用ソフトウェア配布部２２０は、各更新モジュールから送信された通知を受信すると、検証結果から更新モジュール１３３が正しく更新されたかを判定し（Ｓ９０２２）、正しく更新されていない場合には、機器１００を停止する（Ｓ９０２３）としたが、これに限定するものではなく、再度更新モジュール更新処理を行うとしてもよい。
（２）上記実施の形態では、更新モジュール１３ｘ（ｘは１〜７）は、受信部３０１、送信部３０２、制御部３０３、更新部３０４、検証部３０５、ＭＡＣ値生成部３０６、ＭＡＣ値テーブル更新部３０７、監視パターン取得部３０８、監視パターン更新部３０９、分散情報保持部３１０を含んで構成されるとしたが、これに限定されるものではない。例えば、監視処理に必要な構成要素（制御部３０３、検証部３０５、監視パターン取得部３０８、監視パターン更新部３０９）のみで構成されるとしてもよい。また、更新処理に必要な構成要素（制御部３０３、更新部３０４）のみで構成されるとしてもよい。また、無効化処理に必要な構成要素（制御部３０３、更新部３０４）のみで構成されるとしてもよい。さらに、上記の組み合わせから構成されるとしてもよい。
【０２４９】
この時、更新モジュール群１３０に含まれる更新モジュール全体として、監視処理と更新処理に必要な構成要素を含むよう構成されていればよい。
（３）上記実施の形態では、更新モジュール１３ｘにおいて検証部３０５により他の更新モジュールや保護制御モジュール１２０の改ざんチェックを実行するとしたが、改ざんチェック対象はモジュール全体に限定するものではなく、モジュール内の一部、例えば、特定の機能や関数、鍵等のデータであってもよい。また、一度に改ざん対象全てを改ざんチェックするのではなく、改ざん対象の一部を改ざんチェックするだけでもよい。この場合、改ざん対象を一定のサイズに分割した部分毎に改ざんチェックしてもよいし、機能や関数単位で分割した部分毎に改ざんチェックしてもよい。さらに、改ざん対象の一部を、改ざんチェックの度に順番に改ざんチェックするとしてもよいし、改ざんチェックする部分を改ざんチェックの度にランダムに決定してもよし、どの部分を改ざんチェックするかを他のモジュールや機器１００外部などから指定されることとしてもよい。
（４）上記実施の形態では、特に明示はしなかったが、重要度の高いモジュールについて、耐タンパ化された領域など、攻撃者による攻撃から保護されている領域で動作させることとしてもよい。例えば、更新モジュール１３ｘや保護制御モジュール１２０を、上述のような保護されている領域で動作させてもよい。監視処理に必要な構成要素のみで構成される更新モジュールが、攻撃者による攻撃から保護されている領域で動作する場合には、他の更新モジュールや判断部２１０は、その保護された領域にある更新モジュールから、他の更新モジュールや保護制御モジュール１２０が攻撃されたことを検知した旨の通知を受けたときに、その通知を無条件に受け入れ、更新処理や無効化処理を実施することとしてもよい。また、その通知を他のモジュールからの通知よりも重要な通知として扱い、更新処理や無効化処理の判断を行ってもよい。
【０２５０】
また、保護制御モジュールは、保護モード（耐タンパ化された領域等）で動作し、更新モジュールは、通常モード（耐タンパ化されていない領域等）で動作するとしてもよい。
（５）上記実施の形態では、モジュール無効化部２３０は、更新サーバ２００にあり、アクセス制御モジュール１４０は、機器１００にあるとしたが、これに限定するものではない。例えば、モジュール無効化部２３０とアクセス制御モジュール１４０とはそれぞれ、機器１００にあってもよいし、更新サーバ２００にあってもよいし、各更新モジュール内にあってもよい。また、アクセス情報取得鍵配布モジュール２２０とアクセス制御モジュール１４０とは、別々のモジュールではなく１つのモジュールであってもよい。モジュール無効化部２３０とアクセス制御モジュール１４０とが１つのモジュールである場合には、更新モジュールへアクセス情報取得鍵と暗号化アクセス情報とを送信するのではなく、アクセス情報を直接送信してもよい。さらに、モジュール無効化部２３０やアクセス制御モジュール１４０が機器１００内にあるときには、耐タンパ化などにより攻撃から保護される領域にあるとしてもよい。
（６）上記実施の形態では、更新サーバ２００は、判断部２１０と更新用ソフトウェア配布部２２０、モジュール無効化部２３０、モジュール追加部２４０、監視パターン更新部２５０、通信部２６０とから構成されるとしたが、これに限定するものではなく、判断部２１０と更新用ソフトウェア配布部２２０、モジュール無効化部２３０、モジュール追加部２４０、監視パターン更新部２５０、通信部２６０が、１つのモジュールであってもよいし、どれか１つのモジュールのみで構成されてもよいし、上記の組み合わせから構成されるとしてもよい。
（７）上記実施の形態では、ソフトウェア更新システム１０は、機器１００の工場製造時に初期設計処理を行うとしたが、これに限定するものではなく、販売後など工場出荷後のどこかで初期化処理を実施してもよい。また、初期化処理は１度だけでなく、２度以上実施してもよい。
（８）上記実施の形態では、初期設計処理の動作として、検証用証明書及び認証鍵証明書は、更新用ソフトウェア配布部２２０が保持する署名秘密鍵を用いて生成された証明書であるとしたが、これに限定するものではなく、それぞれ別の鍵を用いて生成されてもよいし、更新用ソフトウェア配布部２２０以外の証明書発行装置により発行された証明書でもよい。
【０２５１】
（９）上記実施の形態では、初期設計処理や次ラウンド準備処理の動作として、暗復号鍵から生成する分散情報を更新モジュール１３ｘへ送信し、更新モジュール１３ｘが分散情報を保持するとしたが、これに限定するものではなく、更新モジュールの代わりにアプリが保持するとしてもよいし、更新モジュール１３ｘとアプリとが保持するとしてもよい。
（１０）上記実施の形態では、検知処理の動作として、更新モジュール１３ｘが保護制御モジュール１２０の改ざん検出を行うときに、検証鍵を使用して計算したＭＡＣ値を用いて改ざん検出処理を行うとしたが、これに限定するものではなく、保護制御モジュール１２０の改ざん検出用証明書を用いて検証するとしてもよい。また、ＭＡＣ値や証明書のようにハッシュ値を利用した改ざん検証を行うのではなく、ログをチェックすることで改ざん検証を行うとしてもよい。
（１１）上記実施の形態では、検知処理の動作として、更新モジュール１３ｘが保護制御モジュール１２０の改ざんを検出した場合、判断部２１０と他の更新モジュールへ通知するとしたが、これに限定するものではなく、判断部２１０と他の更新モジュールのうち、どれか１つ以上のモジュールに通知するとしてもよい。また、保護制御モジュール１２０の改ざんを検出した場合、更新モジュールを停止するとしてもよいし、機器１００や保護制御モジュール１２０を停止するとしてもよい。更に、改ざんされた保護制御モジュールを消去するとしてもよい。さらに、更新モジュール１３１〜１３３が保護制御モジュール１２０の改ざんを検出しなかった場合、更新用ソフトウェア配布モジュール２１０へ通知を行わないとしたが、これに限定するものではなく、改ざん検出処理を実施した結果として、改ざんを検出しなかった旨を通知するとしてもよい。
（１２）上記実施の形態では、検知処理の動作として、更新モジュール１３ｘは、他の更新モジュールに保護制御モジュールの改ざん検出結果を送信しないとしたが、それぞれの更新モジュールで検出結果を共有するとしてもよい。また、検出結果を共有しない更新モジュールがあった場合に、当該更新モジュールを不正な更新モジュールと判断して無効化するとしてもよい。
（１３）上記実施の形態では、解析・判断処理の動作として、改ざん情報に基づいて保護制御モジュール１２０を更新するかどうか判定するとしたが、これに限定するものではなく、改ざんされていると通知してきた更新モジュールの数によって更新するか否かを判定してもよい。また、解析・判断時の動作として、保護制御モジュール１２０を更新するか否か、及び保護制御モジュール１２０を無効化するか否かを判断したが、これに限定するものではなく、機器１００を停止するか否かを判断するとしてもよい。
（１４）上記実施の形態では、相互認証処理の動作として、更新モジュール１３１〜１３３が更新用ソフトウェア配布部２２０を認証し、その後、更新用ソフトウェア配布部２２０がそれぞれの更新モジュール１３１〜１３３を認証するとしたが、これに限定するものではなく、更新用ソフトウェア配布部２２０がそれぞれの更新モジュール１３１〜１３３を認証し、その後、更新モジュール１３１〜１３３が更新用ソフトウェア配布部２２０を認証してもよいし、それぞれの更新モジュール１３１〜１３３と更新用ソフトウェア配布部２２０とが個別に認証処理を行ってもよい。
（１５）上記実施の形態では、相互認証処理の動作として、更新用ソフトウェア配布部２２０がそれぞれの更新モジュール１３ｘを認証する処理において、チャレンジデータをそれぞれの更新モジュールで異なる値にするとしたが、これに限定するものではなく、チャレンジデータを全ての更新モジュールで同じ値としてもよいし、更新モジュール１３ｘを複数のグルーブに分けた場合のそれぞれのグループで異なる値にしてもよい。
（１６）上記実施の形態では、相互認証処理の動作として、それぞれの更新モジュール１３ｘが、更新用ソフトウェア配布部２２０を認証する処理において、それぞれの更新モジュール１３ｘが個別に更新用ソフトウェア配布部２２０を認証するとしたが、これに限定するものではなく、署名検証した結果を他の更新モジュールへ通知し、更新モジュール間で検証結果を共有し、自更新モジュールの認証結果と他の更新モジュールから受信した認証結果とから、更新用ソフトウェア配布部２２０が正当かどうかをそれぞれ判定してもよい。判定方法としては、例えば、一定数（例えば、過半数等）の更新モジュールが認証に成功した場合には正当であると判定し、認証に成功しなかった場合には、正当ではないと判定する方法がある。
【０２５２】
（１７）上記実施の形態では、相互認証処理の動作として、更新サーバ２００は署名秘密鍵と署名公開鍵とを使用して相互認証処理を実施するとしたが、これに限定するものではなく、署名秘密鍵と署名公開鍵とは別に、相互認証に使用する認証鍵対を用いるとしてもよい。この時、更新サーバ２００の認証鍵対のうちの認証公開鍵は、予め更新モジュール１３ｘで保持するとしてもよいし、相互認証処理時に更新サーバ２００から更新モジュール１３ｘへ送信するとしてもよい。
（１８）上記実施の形態では、相互認証処理の動作として、正当なモジュールであると検証できた更新モジュールが、回復処理に必要な数以上あるかどうかで、その後の回復処理を実施するかどうか判定したが、これに限定するものではなく、不正な更新モジュールの数が、予め設定されている許容数未満かどうかで回復処理を実施するかどうか判定してもよい。また、相互認証処理において、回復処理に必要な数に満たないと判定した場合には、機器を停止するとしたが、更新モジュールを無効化してもよい。
（１９）上記実施の形態では、相互認証処理の動作として、更新用ソフトウェア配布モジュール２１０がそれぞれの更新モジュール１３１〜１３３を認証する時に、更新モジュール１３１〜１３３は、レスポンスデータと一緒に認証公開鍵と認証鍵証明書とを更新用ソフトウェア配布部２２０へ送信するとしたが、これに限定するものではなく、それぞれ別のタイミングで送信してもよい。また、認証公開鍵や認証鍵証明書は、更新用ソフトウェア配布部２２０から要求があったときにのみそれぞれ送信するとしてもよい。この時、更新用ソフトウェア配布部２２０は、全ての更新モジュールの認証公開鍵や認証鍵証明書を受信してもよいし、予め設定されている、回復処理に必要な数以上、或いは予め設定されている、不正な更新モジュールの許容数未満の更新モジュールの認証公開鍵と認証鍵証明書とを受信してもよい。
（２０）上記実施の形態では、回復処理の動作として、監視処理を１回の復号中（監視３−１、３−２、５−１、５−２）に２回実施するとしたが、これに限定するものではなく、復号処理の時間にあわせて監視処理を３回以上行ってもよいし、復号処理以外であっても、鍵や更新用保護制御モジュールの受信処理時や検知処理時、相互認証処理時に監視処理を行ってもよい。また、監視処理を一定時間間隔で定期的に実施するとしたが、これに限定するものではなく、更新処理を複数のブロックに分割し、その処理ブロックの処理が終わるごとに実施してもよいし、ランダムな時間間隔で実施してもよいし、更新サーバ２００から指定された時間間隔で実施してもよい。
【０２５３】
また、各更新モジュールは、監視処理を実行するタイミングを示す同期情報を外部のサーバから取得し、取得した同期情報にしたがって監視処理を実行するとしてもよい。これにより、各更新モジュールは、他の更新モジュールと同じタイミングで監視処理を実行することができるので、不正な更新モジュールの検出精度を向上させることができる。
さらに、通常時と回復処理時とにおける検知頻度を変更するとしてもよい。例えば、通常時より回復処理時の検知頻度を高くすることにより、回復処理中の保護制御モジュールの保護に万全を期すことができる。検知頻度の変更は、回復処理中であってもよい。
（２１）上記実施の形態１や実施の形態２では、回復処理の動作として、監視処理のパターンは、更新モジュール１３１が更新モジュール１３２の改ざん検出を行い、更新モジュール１３２が更新モジュール１３３の改ざん検出を行い、更新モジュール１３３が更新モジュール１３１の改ざん検出を行うものであったが、これに限定するものではない。例えば、更新モジュール１３１が更新モジュール１３３の改ざん検出を行い、更新モジュール１３２が更新モジュール１３１の改ざん検出を行い、更新モジュール１３３が更新モジュール１３２の改ざん検出を行うなど、予め決められたパターンで改ざん検出するとしてもよいし、どの更新モジュールの改ざん検出を行うかをランダムに決定してもよいし、他のモジュールや機器１００外部から与えられるとしてもよい。また、各更新モジュールは、当該更新モジュール（自更新モジュール）が改ざんされていないかを検証するとしてもよい。さらに、自更新モジュールの改ざんを検出した場合に、自更新モジュール自身を無効化するとしてもよい。更に、複数の監視パターンを保持している場合、全ての更新モジュールが他の更新モジュールから監視される必要はなく、ある監視パターンでは、他の更新モジュールから監視されない更新モジュールがあってもよい。また、全ての更新モジュールは、複数の更新モジュールから監視されてもよい。また、監視処理のパターンを変更する場合は、改ざん検出の処理毎など、一定の間隔で変更するとしてもよいし、ランダムなタイミングで変更するとしてもよいし、他のモジュールや機器１００外部から与えられたタイミングで変更するとしてもよい。また、複数の更新モジュールは、改ざん検出の結果を、更新サーバ２００により指定される順序で、更新サーバ２００に送信してもよい。
（２２）上記実施の形態１や実施の形態２では、回復処理の動作として、監視処理時に、更新モジュール１３１が更新モジュール１３２の改ざん検出を行い、更新モジュール１３２が更新モジュール１３３の改ざん検出を行い、更新モジュール１３３が更新モジュール１３１の改ざん検出を行うというように、全ての更新モジュールが監視処理を行うとしたが、これに限定するものではなく、一つの更新モジュールが更新処理を実施し、他の更新モジュールが監視処理を実施してもよい。このときの監視パターンとしては、更新処理を行っている更新モジュールを、１つの更新モジュールが監視してもよいし、複数または全ての更新モジュールが監視してもよい。例えば、更新モジュール１３１が更新モジュール１３２の改ざん検出を行い、更新モジュール１３２が更新モジュール１３３の改ざん検出を行い、更新モジュール１３３が更新処理を行う。これにより、更新処理を中断することなく監視処理も実施できる。
【０２５４】
また、上記実施の形態１や実施の形態２では、更新モジュール１３１が更新モジュール１３２の改ざん検出を行い、更新モジュール１３２が更新モジュール１３３の改ざん検出を行い、更新モジュール１３３が更新モジュール１３１の改ざん検出を行うというように、監視構成としてループ方式を用いたが、複数の更新モジュールの各々が相互に監視し合う構成としてもよいし、それらを組み合わせてもよい。複数の更新モジュールの各々が相互に監視し合う構成とすることにより、改ざん検証精度をさらに高めることができる。
（２３）上記実施の形態では、回復処理の動作として、更新モジュール１３２は、取得した更新用保護制御モジュール１２１を保護制御モジュール１２０に上書きし、保護制御モジュール１２０を更新するとしたが、これに限定するものではなく、更新用ソフトウェア配布モジュール２１０から保護制御モジュール１２０と更新用保護制御モジュール１２１との差分を取得し、差分のみを更新するとしてもよいし、更新用保護制御モジュール１２１を保護制御モジュール１２０とは別の領域へ書き込み、保護制御モジュール１２０に代わって、更新用保護制御モジュール１２１が実行されるようにしてもよい。
（２４）上記実施の形態では、回復処理の動作として、監視処理により更新モジュール１３ｘの改ざんが検出された場合、改ざん検出の通知を受けた判断部２１０は、直ちに回復処理を停止するとしたが、これに限定するものではなく、更新用ソフトウェア配布部２２０から更新モジュールへ、鍵などのデータを次に送信するタイミングで回復処理を停止するとしてもよい。また、回復処理を停止するのではなく、改ざんされた更新モジュールを使用せずに、正常な更新モジュールを用いて回復処理を行うとしてもよい。また、監視処理により改ざんが検出された場合だけでなく、検知処理時に保護制御モジュール１２０によって改ざんが検出された更新モジュールや、相互認証処理時に認証に失敗した更新モジュールについても同様に、当該更新モジュールを使用せずに回復処理を行うとしてもよい。さらに、改ざんされた更新モジュールが存在する場合には、保護制御モジュールの更新を行わないとしてもよい。
（２５）上記実施の形態では、回復処理の動作として、更新処理において復号に使用する更新モジュールを、更新用ソフトウェア配布部２２０が更新モジュール群１３０から一つ選択するとしたが、その選択方法は、予め決められた更新モジュールを選択するとしてもよいし、ランダムに決定するとしてもよいし、機器１００から通知された情報を元に決定するとしてもよいし、相互認証時に認証した順番に応じて選択するとしてもよい。
（２６）上記実施の形態では、回復処理の動作として、更新処理において更新用ソフトウェア配布部２２０が更新用保護制御モジュール１２１を複数の鍵を用いて多重に暗号化するとしたが、これに限定するものではなく、更新用保護制御モジュール１２１を複数の部分に分割した分割モジュールを生成し、分割モジュールそれぞれを個別に暗号化し、更新モジュールと一対一に対応する形態で、更新モジュールへ送信するとしてもよい。この場合、更新処理としては、暗号化した分割モジュールと暗号に使用した鍵を送信するときに、それらを１度に全て送信するのではなく、１つの暗号化した分割モジュールの復号処理が終了するまで、他の暗号化した分割モジュールと鍵を送信しないように、更新モジュールへの送信を制御する。別の方法として、暗号化した分割モジュールは１度に更新モジュールへ送信し、それらを復号するための鍵の送信のタイミングのみを制御するとしてもよいし、鍵は１度に更新モジュールへ送信し、暗号化した分割モジュールの送信のタイミングのみを制御するとしてもよいし、全ての鍵と暗号化した分割モジュールを１度に送信するとしてもよい。また、分割モジュールは、１つの鍵で暗号化されるのではなく、複数の鍵を用いて多重に暗号化されてもよい。この場合、鍵や多重暗号化した分割モジュールの送信制御は、更新用保護制御モジュール１２１を複数の鍵を用いて多重に暗号化した時と同様である。更に、暗号化した分割モジュールとそれを復号する鍵は、１つの更新モジュールへ送信してもよいし、それぞれ別の更新モジュールへ送信し、機器１００内部で更新モジュール同士が協調動作するとしてもよい。その際、分割モジュールを受信する前後で監視処理を実施してもよい。また、監視処理により、改ざんされた不正な更新モジュールが検出された場合、次の分割モジュールを送信するタイミングで更新処理を停止してもよい。さらに、複数の更新モジュールは、改ざんされた更新モジュールが存在する場合には、それを更新サーバに通知し、更新サーバは、改ざんされた更新モジュールには復号鍵を送信しないとしてもよい。分割モジュールはそれぞれ異なる暗号鍵で暗号化されていてもよい。
【０２５５】
（２７）上記実施の形態では、回復処理の動作として、暗復号鍵（旧暗復号鍵）で暗号化されたアプリ１１０、１１１を新しい暗復号鍵（新暗復号鍵）を用いて再暗号化するとしたが、これに限定するものではなく、再暗号化処理を行わなくてもよい。この時、新暗復号鍵を生成せずに旧暗復号鍵を使い続けるとしてもよいし、旧暗復号鍵と新暗復号鍵を保持しておき、アプリによって使用する鍵を変える構成にしてもよいし、旧暗復号鍵が必要になったときには分散情報から再び生成するとしてもよい。旧暗復号鍵を使用し続ける場合は、保護制御モジュール１２０が更新される度に旧暗復号鍵が増えることになる。また、各更新モジュールで新暗復号鍵と旧暗復号鍵の分散情報を保持しておく必要がある。
（２８）上記実施の形態において、保護制御モジュール１２１が正しく更新されなかった場合に機器１００を停止するとしたが、これに限定するものではなく、再度、相互認証処理及び回復処理を実施するとしても良い。
（２９）上記実施の形態において、無効化処理の動作として、アクセス情報は、更新モジュールを消去するための専用ドライバであるとしたが、これに限定するものではなく、更新モジュールを消去するための専用プログラムであってもよいし、更新モジュールを消去するための手順が記された手順書であってもよいし、消去する更新モジュールのアドレスであってもよいし、更新モジュールを消去するプログラムのアドレスであってもよいし、更新モジュールを消去するための機能を動作させるためのレジスタやメモリのアドレスやレジスタやメモリに設定する値であってもよい。また、アクセス情報は、コード部分を消去する旨が記述された情報であってもよい。この場合、コード位置はヘッダに格納されており、ヘッダを参照して消去すべきコード部分を判断するとしてもよい。さらに、アクセス制御モジュール自体が暗号鍵で暗号化されているとしてもよい。その場合には、改ざんされていない更新モジュールは、更新サーバから、アクセス制御モジュールを暗号化した暗号鍵に対応する復号鍵を取得し、取得した復号鍵を用いてアクセス制御モジュールを復号し、改ざんされた更新モジュールに対応するアクセス情報をアクセス制御モジュールから取得し、取得したアクセス情報に基づいて、改ざんされた更新モジュールを無効化するとしてもよい。
（３０）上記実施の形態において、無効化処理の動作として、改ざんされた更新モジュール全体を消去するとしたが、これに限定するものではなく、改ざんされた不正な更新モジュールの一部、例えば、他のモジュールを読み込むための読み込み機能など特定の機能や関数、鍵や他のモジュールをアクセスするための情報（チケット、トークン、ソケット）などのデータを消去するとしてもよいし、他のプログラムからアクセスできなくしてもよいし、不活性化してもよいし、更新してもよい。また、改ざんされた更新モジュールを無効化した後、無効化処理を行った更新モジュールは、アクセス制御モジュールに格納されている、無効化した更新モジュールに対応するアクセス情報を消去するとしてもよい。
【０２５６】
（３１）上記実施の形態において、改ざんされた不正な更新モジュールを無効化するとしたが、これに限定するものではなく、改ざんされた不正な更新モジュールを無効化しないとしてもよい。このとき、どのくらいの部分が改ざんされているか、どの部分が改ざんされたか等によって、無効化するかどうかを判断してもよいし、改ざんされた不正な更新モジュールの数によって無効化する更新モジュール数を決めてもよい。
（３２）上記実施の形態１や実施の形態２では、更新モジュールの数を３として説明したが、これに限定されるものでなく、更新モジュールは、複数あればよい。
（３３）上記実施の形態では、アクセス制御モジュール１４０及び更新モジュール群１３０は、ＯＳ１５０の中に組み込まれているとしたが、更新モジュールがＯＳを更新する機能を備えている場合等には、更新モジュールは、ＯＳの管理外にプログラムとして格納されているとしてもよい。また、保護制御モジュールがＯＳに組み込まれているとしてもよい。
（３４）機器１００は、具体的には、携帯電話等の携帯端末やデジタルテレビ等、双方向のデータ通信が可能な機器であればよい。
（３５）上記実施の形態では、アクセス情報は、更新モジュール毎にそれぞれ個別のアクセス情報取得鍵で暗号化されているとしたが、同一のアクセス情報取得鍵で暗号化されているとしてもよい。その場合には、正常な更新モジュールが更新サーバにアクセスして、アクセス情報取得鍵に対応した復号鍵を取得し、取得した復号鍵を用いてアクセス制御モジュールを復号し、アクセス制御モジュールから、改ざんされた更新モジュールに対応するアクセス情報を取得し、取得したアクセス情報に基づいて、改ざんされた更新モジュールを無効化するとしてもよい。
（３６）上記実施の形態では、保護制御モジュールが改ざんされている場合に、当該保護制御モジュールを更新し、その際、更新モジュール群に含まれる複数の更新モジュールの各々が、他の更新モジュールの改ざん検証を行うとしたが、改ざんの有無に関わらず、例えば、保護制御モジュールのバージョンをアップさせる場合等において改ざん検証を行うとしてもよい。
（３７）上記実施の形態では、更新用の保護制御モジュールは、複数の暗号鍵で暗号化されていたが、一つの暗号鍵で暗号化されているとしてもよい。その場合、当該暗号鍵に対応する復号鍵が複数に分割され、分割された復号鍵の全てが、改ざんされていない更新モジュールを送信先として送信され、分割された全ての復号鍵を用いて、改ざんされていない更新モジュールは、更新用の保護制御モジュールを復号するとしてもよい。
【０２５７】
（３８）上記実施の形態では、更新モジュール１３１、１３２、１３３が、保護制御モジュール１２０の改ざん検出を実施しているが、さらに、保護制御モジュール１２０が各更新モジュールの改ざん検出を実施してもよい。
以下では、保護制御モジュール１２０が、各更新モジュールの改ざん検出をする処理について説明する。
【０２５８】
保護制御モジュール１２０は、更新モジュール１３１、１３２、１３３の改ざんの有無を、改ざん検出用証明書を用いて検証する。更新モジュール１３１、１３２、１３３のうち、何れかの更新モジュールの改ざんが検出された場合には、保護制御モジュール１２０は、その旨を判断部２１０に通知する。改ざんが検出されない場合には、判断部２１０への通知は行わない。
【０２５９】
保護制御モジュール１２０から改ざん検出の通知があった場合、判断部２１０は、保護制御モジュール１２０自体が改ざんされていないかを確認するために、更新モジュール１３１、１３２，１３３へ、保護制御モジュール１２０の改ざん検出処理を依頼する。
判断部２１０から依頼を受けた各更新モジュールは、保護制御モジュール１２０の改ざん検出を実施し、改ざん検出結果を判断部２１０へ通知する。なお、保護制御モジュール１２０が改ざんされていた場合でも、他の更新モジュールへは通知しない。以降の処理は、実施の形態１における検知処理と同様であるので、省略する。
【０２６０】
次に、保護制御モジュール１２０が改ざんされているか否かを判断するために保護制御モジュール１２０による各更新モジュールの改ざん検出結果を用いる例について説明する。
上述したように、検知処理時に、保護制御モジュール１２０が、各更新モジュール１３１、１３２、１３３の改ざん検出を実施する。保護制御モジュール１２０は、更新モジュールの改ざんを検出した場合、その旨を判断部２１０に通知する。
【０２６１】
通知を受けた判断部２１０は、各更新モジュール１３１、１３２、１３３へ、相互監視を依頼し、各更新モジュールは相互に改ざん検出を実施する。
判断部２１０は、各更新モジュールから相互監視の結果を受け取ると、相互監視の結果から、保護制御モジュール１２０が改ざんを検出した更新モジュールは、改ざんされているか否かを判断する。
【０２６２】
相互検視の結果から、前記更新モジュールが改ざんされていると判断する場合、判断部２１０は、保護制御モジュール１２０は、正当であると判断する。一方、相互監視の結果から、前記更新モジュールが改ざんされていないと判断する場合、判断部２１０は、保護制御モジュール１２０は、不正であると判断する。
例えば、保護制御モジュール１２０が、更新モジュール１３２の改ざんを検出した場合に、相互監視によっても、同様に、更新モジュール１３２は改ざんされていると判断された場合、保護制御モジュール１２０による検出結果は、正しかったことが証明されるので、保護制御モジュール１２０は改ざんされていないことがわかる。一方、相互監視の結果、更新モジュール１３２は改ざんされていないと判断された場合、保護制御モジュール１２０による検出結果は正しくなかったことが証明されるので、保護制御モジュールは改ざんされていることがわかる。
（３９）上記実施の形態では、各更新モジュールに保護制御モジュール１２０を更新するための機能を予め保持させていたが、これに限定するものではなく、保護制御モジュールの改ざんを検出し、保護制御モジュール１２０を更新する必要が生じたときに、保護制御モジュール１２０を更新するためのアクセス情報を取得することにより、保護制御モジュール１２０を更新する機能を更新モジュールに付加するとしてもよい。このとき、モジュール無効化部２３０は、アクセス情報取得鍵保持部８０３に加え、保護制御モジュール１２０を更新するためのアクセス情報取得鍵を保持している。また、アクセス制御モジュール１４０は、各更新モジュールのアクセス情報に加え、保護制御モジュール１２０の暗号化アクセス情報を保持している。
【０２６３】
更新モジュールに保護制御モジュールを更新する機能を付加する処理を説明する。実施の形態１と同じ処理については同じ符号を用いる。更新処理において、更新用ソフトウェア配布部２２０が更新用保護制御モジュール１２１を複数の鍵を用いて多重に暗号化し、多重暗号化更新用保護制御モジュールと第１の鍵とを、更新モジュール群１３０に含まれる更新モジュール１３１に送信する（Ｓ５００１からＳ５００９）。更新モジュール群１３０に含まれる更新モジュールは、更新用ソフトウェア配布部２２０から第２の鍵を受信し、多重暗号化された更新用保護制御モジュールを復号し、更新用保護制御モジュールを取得する（Ｓ５０１２からＳ５０１６）。
【０２６４】
更新用保護制御モジュールを取得後、更新モジュール１３２は、保護制御モジュール１２０を更新用保護制御モジュール１２１へ更新するために、モジュール無効化部２３０に対し保護制御モジュール１２０を更新するためのアクセス情報取得鍵を送付するよう依頼する。さらに、アクセス制御モジュール１４０に対し保護制御モジュール１２０を更新するためのアクセス情報を送信するよう依頼する。
【０２６５】
モジュール無効化部２３０は、アクセス情報取得鍵の送付依頼を受けると、依頼元の更新モジュールが保護制御モジュール１２０を更新する更新モジュールであるかどうかを、更新用ソフトウェア配布部２２０に問い合わせ、保護制御モジュール１２０を更新する更新モジュールであった場合には、依頼元の更新モジュール１３２へ、保護制御モジュール１２０を更新するためのアクセス情報取得鍵を送付する。
【０２６６】
アクセス情報モジュール１４０は、更新モジュール１３２からアクセス情報の送信依頼を受け付けると、保護制御モジュール１２０に対応する暗号化アクセス情報を更新モジュール１３２に送信する。
更新モジュール１３２は、モジュール無効化部２３０からアクセス情報取得鍵を受信し、アクセス制御モジュール１４０から暗号化アクセス情報を受信すると、受信したアクセス情報取得鍵を用いて、暗号化アクセス情報を復号し、アクセス情報を取得する。取得したアクセス情報は、保護制御モジュール１２０を更新するための専用ドライバである。更新モジュール１３２は、そのドライバを利用して、保護制御モジュール１２０を更新用保護制御モジュール１２１へ更新する。そして、更新の終了を他の更新モジュールへ通知する。
【０２６７】
更新モジュール群１３０に含まれる各更新モジュールは、保護制御モジュール１２０が更新用保護制御モジュール１２１へ正しく更新されたか検証し、正しく更新されている場合には、保護制御モジュール１２１のＭＡＣ値を生成する。
（４０）上記実施の形態では、判断基準は判断部２１０内の判断基準格納部６０６に格納されているとしたが、これに限定するものではなく、判断基準は更新サーバ２００の外部の装置やサーバに格納してもよいし、判断基準を読み込む場合に、その都度外部から取得してもよい。
（４１）上記実施の形態では、判断基準は判断部２１０内の判断基準格納部６０６に予め格納されているとしたが、これに限定するものではなく、予め格納されている判断基準を更新サーバ２００内部で変更してもよいし、外部の装置やサーバから判断基準を取得して変更してもよい。
（４２）上記実施の形態では、更新モジュールは監視パターン情報を１つ持つとしているが、監視パターン情報を複数持ってもよい。また、監視パターン情報を複数持つ場合、更新モジュール群１３０で一斉に監視パターンを切り替えてもよいし、各更新モジュールが個別に判断し切り替えてもよい。切り替えるタイミングは、機器１００内で判断してもよいし、更新サーバ２００から通知してもよいし、切り替えタイミングを判断するアルゴリズムを更新サーバ２００から事前に通知し、そのアルゴリズムを使用して機器１００で切り替えタイミングを判断してもよい。また、複数の監視パターン情報と一緒に、監視パターンを切り替えるタイミングやどの監視パターンをいつ使うかの情報を持ってもよい。これにより、機器１００と更新サーバ２００が通信不可能な状況においても、様々な監視パターンを組み合わせた監視を機器１００単独で実施することが可能となる。また、監視パターンの更新が必要になった時に、更新サーバ２００から切り替えの指示のみを行えばよいため、機器１００と更新サーバ２００との通信量を減らすことが可能となる。
（４３）上記実施の形態では、監視パターン情報の監視頻度として、監視対象を、監視するタイミングに関する情報から構成されるとしたが、これに限定するものではなく、複数の監視パターンのうち、どの監視パターンを使用するかのタイミングや、監視パターンの選択アルゴリズムを含むとしてもよい。これにより、同じ監視頻度であっても異なる監視パターンを選択することが可能となり、攻撃者による、監視される更新モジュールの予想が困難になる。
（４４）上記実施の形態では、監視パターン本体の構造が、先頭にヘッダ情報として監視パターンの数と監視パターンそれぞれのサイズが記述され、それ以降に、監視パターン識別子と監視パターンの組がそれぞれ並ぶ構造になるとしたが、これに限定するものではなく、単に、監視パターン１つを記述するだけでもよいし、監視パターンのサイズを固定長のサイズとし、監視パターン本体にサイズを記述しないとしてもよい。また、ヘッダ情報として監視パターンの数を記述し、それ以降に、サイズと監視パターン識別子、監視パターンの組がそれぞれ並ぶ構造になっていてもよい。更に、複数の監視パターンの並び順は、監視対象であるモジュールに関する情報（モジュール識別子、メモリ上の位置、サイズ、アドレス、ファイル名等）に応じた順番で並べてもよいし、監視パターンのサイズに応じた順番で並べてもよいし、監視パターン識別子に応じた順番で並べてもよいし、それらの情報とは無関係に並べてもよい。但し、ヘッダ情報としてサイズを記述する場合には、サイズの順番と、それに対応する監視パターン識別子と監視パターンの組の順番は一致している必要がある。
【０２６８】
（４５）上記実施の形態では、追加処理の動作として、更新モジュール分割部９０５が追加処理を実施する更新モジュールの数と同数に分割するとしたが、これに限定するものではなく、更新処理を実施する更新モジュールの数より少なく分割してもよいし、多く分割してもよい。例えば、少ない場合には、分割した追加用更新モジュール（追加用更新モジュール部分）の一部を２以上の複数の更新モジュールに送信し、多い場合には、一部の更新モジュールが複数の追加用更新モジュール部分を受信するとしてもよい。これにより、追加処理を実施する更新モジュールの数と、追加用更新モジュールを分割する数を、異なる数にすることが可能となる。また、１つの追加用更新モジュール部分を複数の更新モジュールに送信することで、どちらか一方の更新モジュールが攻撃され不正なものとなった場合にも、同じ追加用更新モジュール部分を受信した更新モジュールが追加処理を行うことで、更新モジュールの追加処理を継続することが可能になる。さらに、１つの更新モジュールが複数の追加用更新モジュール部分を受信することが可能になるため、追加用更新モジュールを細かく分割し、連続しない複数の追加用更新モジュール部分をそれぞれの更新モジュールへ送信することで、攻撃者による解析を困難にすることが可能となる。
【０２６９】
さらに、更新モジュール保持部９０４に、予め分割された追加用更新モジュールを保持してもよい。そのように保持しても、モジュール追加部は、機器１００内部の更新モジュールの数によらず、追加処理が可能となる。また、あらかじめ分割方法・分割数が決まっている場合にも、追加処理を実施する更新モジュールの数によらず追加処理を実施することが可能になる。
（４６）上記実施の形態では、分割した追加用更新モジュールを受信した各更新モジュールは、それぞれ独立に追加処理を実施するとしたが、これに限定するものではなく、それぞれの更新モジュールが連携して、順番に追加処理を実施するとしてもよい。この場合、図２７の追加処理のシーケンス図において、各更新モジュールで追加処理が終了したときに、「追加処理終了通知」をモジュール追加部のみへ通知しているが、この「追加処理終了通知」を他の更新モジュールへも通知することで、他の更新モジュールが何番目の追加処理まで終了したかを認識できるようにする、あるいは、「追加処理終了通知」を次の更新モジュールへ通知することで、順番に処理が可能になるようにする必要がある。
【０２７０】
追加処理を実行する順番に関しては、例えば、それぞれの更新モジュールに追加処理を行う優先順位を付加し、その優先順位に応じて、更新サーバ２００により選択された更新モジュールが順に追加処理を実行してもよい。この時、優先順位はシステム設計時に決定してもよいし、サーバから事前に優先順位が通知されるとしてもよいし、機器内でその都度ランダムに決定されるとしてもよい。また、優先順位ではなく、分割した追加用更新モジュールを各更新モジュールへ送信するときに、処理順番を一緒に送信してもよい。処理順番の決定方法としては、例えば、更新モジュール選択部９０３が選択したときの順番に応じて追加処理の順番を決定してもよいし、ランダムな順番にしてもよいし、たくさんのモジュールから監視されている更新モジュールの処理順番が後になるように順番を決めてもよい。また、更新モジュール分割部９０５が追加用更新モジュールを分割するときに、セキュリティ上重要な情報が含まれる部分の処理順番が後になるように順番を決めてもよいし、サイズの大きな部分から順番に追加処理が実施されるように順番を決めてもよい。
【０２７１】
さらに、機器１００の内部で追加処理の順番を認識するのではなく、更新サーバ２００が追加処理の順番を認識し、更新サーバ２００において機器１００に送付する順番、およびタイミングを制御してもよい。
（４７）上記実施の形態では、更新モジュールを１つ追加する処理を説明したが、これに限定するものではなく、複数の更新モジュールを同時に追加するとしてもよい。図５７は、複数の更新モジュールを同時に追加するときの分割方法の一例を示す図である。図５７において、３つの更新モジュールを用いて追加処理を実施するとき、まず、それぞれの追加用更新モジュールを、追加処理する更新モジュールと同じ数の３つに分割し、それぞれに書き込み順を付加する。そして、追加用更新モジュール１部分１と追加用更新モジュール２部分１を更新モジュール１３１へ、追加用更新モジュール１部分２と追加用更新モジュール２部分２を更新モジュール１３２へ、追加用更新モジュール１部分３と追加用更新モジュール２部分３を更新モジュール１３３へ送信する。それぞれの更新モジュールでは、受信した追加用更新モジュール部分に付加されている書き込み順番に応じて追加処理を実施する。ここで、複数の追加用更新モジュールをそれぞれ同じ数に分割したが、これに限定するものではなく、すべての追加用更新モジュールで所定の数に分割するとしてもよい。また、複数の更新モジュールを同時に追加するとしたが、これに限定するものではなく、更新モジュールとダミーモジュールを追加してもよい。これにより、複数の更新モジュールを一度に追加することが可能となり、機器１００のセキュリティ強度を向上させることが可能になる。また、複数の追加用更新モジュールの部分が一緒になった状態で、更新サーバ２００から機器１００へ送信、追加処理が実施されるため、攻撃者による解析が困難になる。さらに、ダミーモジュールも含めることにより、より解析を困難にすることが可能となる。
（４８）上記実施の形態では、機器１００が追加用更新モジュールを更新サーバ２００から受信するとしたが、これに限定するものではなく、初期設計処理時に、各更新モジュールへ追加用更新モジュール部分を予め格納してもよい。また、追加用更新モジュール部分ではなく、追加用更新モジュール部分を生成するプログラムを予め格納し、追加処理が必要な時に各更新モジュールが追加用更新モジュール部分を生成してもよい。この場合、モジュール追加部２４０において、更新モジュール保持部９０４と更新モジュール分割部９０５は不要であり、追加処理を行う更新モジュールを選択し、選択した更新モジュールへ処理開始の指示を送信するのみでよい。
（４９）上記実施の形態では、追加用更新モジュールを機器１００が受信した時に追加処理を行うが、これに限定するものではなく、更新サーバ２００から分割された追加用更新モジュールと更新モジュール検証情報を機器１００があらかじめ受信し、更新モジュール群１３０による相互監視の結果や、保護制御モジュール１２０による更新モジュールのチェック結果から、正常な更新モジュールの数が過半数などの所定の値以下になったことを検出したときに、更新サーバ２００と通信することなく、あらかじめ受信した追加用更新モジュールを用いて追加処理を実施してもよい。これにより、機器１００がネットワークから切断されていた場合にも、更新モジュールの追加処理が可能となり、セキュリティ強度を保つことが可能となる。
（５０）上記実施の形態では、監視パターン更新部２５０では、監視パターンを生成するとしたが、これに限定するものではなく、監視パターンを予め格納しているとしてもよい。また、監視パターンは更新サーバ２００の外部の装置やサーバから与えられてもよい。これにより、監視パターン更新部２５０の処理を減らすことが可能となるため、監視パターンの更新処理を迅速に行うことが可能となる。
（５１）上記実施の形態では、監視パターン更新部２５０では、生成した新監視パターンを機器１００へ送付するとしたが、これに限定するものではなく、監視パターン生成プログラムを機器１００に送付するとしてもよい。このとき、監視パターン生成プログラムを受信した機器１００は、監視パターン生成プログラムを実行して監視パターンを生成し、生成した監視パターンに従って監視する。これにより、機器１００の内部状態に応じて最適な監視パターンを生成することが可能となり、不正な更新モジュールを検知しやすくなる。
【０２７２】
（５２）上記実施の形態では、初期設計処理の動作として、機器１００の工場製造時に、予め監視パターンをインストールしてもよいし、更新サーバ２００から入手してもよい。また、監視パターンがインストールされていない場合には、デフォルトの監視パターンを使用するとしてもよい。デフォルトの監視パターンは、例えば、すべての他の更新モジュールを監視する監視パターンや実施の形態１のように更新モジュールが３つの場合、更新モジュール１３１が更新モジュール１３２を監視し、更新モジュール１３２が更新モジュール１３３を監視し、更新モジュール１３３が更新モジュール１３１を監視するように、リングのような監視パターンであってもよい。
（５３）上記実施の形態では、初期化設計処理の動作として、ユーザがセキュリティレベルを設定してもよい。設定したセキュリティレベルに合わせて、更新モジュールの数や監視の頻度を設定できるとしてもよい。また、ユーザが設定したセキュリティレベルにおいて、更新モジュールの数が足りない場合、更新サーバ２００から更新モジュールを入手してもよい。また、セキュリティレベルに合わせて、監視パターンを入手してもよい。このことにより、セキュリティレベル適切に設定でき、セキュリティ強度を保つことが可能となる。
（５４）上記実施の形態では、更新モジュール初期化処理の動作として、自身の監視パターンがあるか否かを検証してもよい。また、監視パターンが存在しない場合には、更新サーバ２００に問い合わせをし、監視パターンを入手してもよい。
（５５）上記実施の形態では、解析・判断処理の動作として、検知処理の結果を基に、保護制御モジュール１２０が改ざんされていると判断し、回復するかの判断をしているが、これに限定するものではなく、機器１００と同様の第三の機器の保護制御モジュールが改ざんされた情報を基に、保護制御モジュール１２０を回復するか判断してもよいし、外部から保護制御モジュール危殆化情報を取得するとしてもよい。保護制御モジュール危殆化情報として、例えば、同じ実装方法の保護制御モジュールが改ざんされたなどの情報がある。
【０２７３】
（５６）上記実施の形態３では、通常時無効化判断処理の動作として、更新モジュールが半数以上危殆化と判断した場合、更新モジュール全体を更新しているが、これに限定するものではなく、機器を停止するとしてもよい。
（５７）上記実施の形態では、通常時無効化判断処理の動作として、更新モジュールが半数以上危殆化と判断した場合、更新モジュール群１３０全体を更新しているが、これに限定するものではなく、危殆化している更新モジュールの全てに対し、無効化処理を行い、無効化処理が完了した後に、更新モジュールの追加処理を行うとしてもよい。
（５８）上記実施の形態では、追加判断処理の動作として、更新モジュールが所定値以下の場合、追加処理を行うとしたが、これに限定するものではなく、無効化処理が行われたか否かを判断し、無効化処理が行われていた場合に、追加処理を行うとしてもよい。また、追加処理は１回に限らず複数回行ってもよい。さらに、所定値を増やし、初期の更新モジュールの数より多くなるように追加してもよい。また、追加処理を実施するのではなく更新モジュール全体を更新してもよい。このことにより、更新モジュール数が一定数で維持することができ、機器１００内のセキュリティ強度を保つことができる。
（５９）上記実施の形態では、監視パターン更新判断処理の動作として、無効化処理や追加処理により更新モジュールの構成が変更されたことで、監視パターンの更新が必要であるか否かを判断しているが、これに限定するものではなく、ある一定時間が経過したことで監視パターンの更新の判断をしてもよいし、通常時と回復時のような機器１００内部の状態に応じて監視パターンの更新の判断をしてもよい。また、第三の機器の監視パターンが更新された情報を入手し、監視パターンの更新の判断をしてもよいし、更新サーバ２００の外部の装置やサーバから情報を入手し、監視パターンの更新を判断してもよい。更に、相互監視の結果、不正な更新モジュールが判明した場合に監視パターンを更新すると判断してもよい。これにより、攻撃者による攻撃が行われる前、或いは攻撃直後に監視パターンの更新を行うことが可能となるため、攻撃を困難にできる。
【０２７４】
（６０）上記実施の形態では、追加処理の動作として、更新モジュールの検証情報を受信した更新モジュールは、追加用更新モジュールの検証を実施し（Ｓ３３１６）、モジュール追加部２４０の制御部９６０が、検証結果から、追加用更新モジュールが正しく追加されたかを判定（Ｓ３３１８）しているが、これに限定するものではなく、モジュール追加部２４０の制御部９６０が追加した更新モジュールの検証情報とは異なった検証情報を更新モジュールに送信し、異なった検証情報で検証させることで、更新モジュールからの通知される検証結果が正しくないことを確認することで、追加用更新モジュールの検証が正しく実施されているかを検証するとしてもよい。また、更新モジュール分割部９０５が誤った更新モジュールを分割し、更新モジュールへ送信し、制御部９６０が正しい更新モジュールの検証情報を送信することで、更新モジュールからの通知される検証結果が正しくないことを確認することで、追加用更新モジュールの検証が正しく実施されているかを検証するとしてもよい。このことにより、追加用更新モジュールの検証（Ｓ３３１６）が正しく動作しているかの確認ができ、検証機能が正しく動作していることで、機器１００内に不正な更新モジュールが追加されることを防止できる。
（６１）上記実施の形態では、通常時無効化判断処理の動作として、更新モジュールが半数以上危殆化と判断した場合、更新モジュール全体を更新しているが、これに限定するものではなく、監視機能の限界を超えているかを判断し、超えている場合に、更新モジュール全体を更新してもよい。監視機能の限界を超えている場合として、例えば、半数以上の所定のしきい値を超えた場合、監視機能の限界を超えていると判断してもよい。また、監視機能を持たない更新モジュールが存在する場合において、更新モジュール全体の数では半数以下だが、監視機能を持つ更新モジュールが半数以上危殆化した場合は監視機能の限界を超えていると判断する。
（６２）上記実施の形態では、監視パターン更新判断処理の動作として、無効化処理や追加処理による更新モジュールの構成が変更されたことで、監視パターンの更新が必要であるか否かを判断しているが、これに限定するものではなく、相互監視処理で、何らかの不正を検出した場合に監視パターンを更新すると判断してもよい。これにより、どの更新モジュールが不正なのか、また、どのような不正なのかなど詳細に不正の確認をすることができる。
（６３）上記実施の形態では、相互監視処理の動作として、更新モジュール群１３０内の更新モジュール１３１〜１３３がそれぞれ他の更新モジュールに対して改ざん検出の処理を実施し、攻撃者により改ざんされていた場合にはそれを検出するとしているが、これに限定するものではなく、改ざんされていた位置や量の度合いにより、不正を検出するとしてもよいし、更新モジュールのログをチェックして不正を検出するとしてもよい。
【０２７５】
（６４）上記実施の形態では、相互認証処理の動作として、正しいレスポンスデータを返す更新モジュールの数を判定し、回復処理に必要な更新モジュールの数が満たされていれば、回復処理に移行するが、このとき、正しいレスポンスデータを返さない更新モジュールを記憶する機能を追加してもよい。正しいレスポンスデータを返さない更新モジュールは改ざんされている可能性があり、記憶することで、更新処理に用いる更新モジュールを選択する（Ｓ５００６）が正しいレスポンスデータを返さない更新モジュールを選択しないことで、正しいレスポンスデータを返さない更新モジュールが改ざんされていて、更新処理が正常に行えなくなることを防止することができる。また、正しいレスポンスデータを返さない更新モジュールを除いた監視パターンに更新するとしてもよい。このことにより、回復時相互監視処理の相互監視処理（Ｓ５１０１）の動作において、正しいレスポンスデータを返した更新モジュール群のみで相互監視を行うことができる。
（６５）本発明の実施の形態２では、監視パターンの更新処理の動作として、監視パターン分割部１００４が新監視パターン（全体）を分割し、それぞれの更新モジュールに送るとしているが、これに限定するものではなく、新監視パターン（全体）を機器１００に送り、更新モジュールが新監視パターン（全体）から自身の監視パターンを取得し、更新してもよい。
（６６）本発明の実施の形態２では、監視パターンの更新処理の動作として、更新した新監視パターン本体に記述されている更新モジュールの、監視パターン本体を検証するとしているが、すべての更新モジュールを検証してもよいし、機器１００内で予め決められた更新モジュールを検証してもよいし、更新サーバ２００がどの更新モジュールを検証するかを通知してもよいし、すべての更新モジュールが検証されるのであればランダムに決定してもよい。
（６７）本発明の実施の形態２では、監視パターンの更新処理の動作として、監視パターン分割部１００４が新監視パターン（全体）を分割してそれぞれの更新モジュールに送るとしているが、これに限定するものではない。例えば、以下のように、監視パターンを取得してもよい。まず、更新サーバ２００がある更新モジュールに新監視パターン（全体）を送信し、新監視パターン（全体）を受信した更新モジュールが、新監視パターン（全体）のうち自身の監視パターンのみを取得して、他の更新モジュールに転送する。さらに、新監視パターン（全体）を受信した他の更新モジュールが、新監視パターン（全体）のうち自身の監視パターンのみを取得して、新監視パターンを取得していない他の更新モジュールへ送信する。これをすべての更新モジュールについて繰り返すことで、各更新モジュールが自身の監視パターンを取得できる。
【０２７６】
また、更新サーバは、それぞれの更新モジュールのみが復号できるように当該更新モジュールに係る新監視パターンを暗号化し、暗号化新監視パターン（全体）をある更新モジュールに送信する。新監視パターン（全体）を受信した更新モジュールは、自身の新監視パターンのみを復号することで自身の監視パターンを入手して、古くなった監視パターンを更新してもよい。
（６８）本発明の実施の形態３では、初期設計処理の動作として、隣接する更新モジュールの分散情報を保持するとしているが、これに限定するものではなく、隣接する更新モジュールの分散情報だけでなく、隣接する更新モジュールが隣接する自身以外の更新モジュールの分散情報を保持するようにしてもよい。具体的には、更新モジュールＡの一方に隣接する更新モジュールＢが隣接する更新モジュールＣの分散情報も更新モジュールＡが保持するようにしてもよい。この場合、更新モジュールＡは自身の分散情報を含め、分散情報４つを保持することになる。また、通常時無効化判断処理の動作として、隣接する両隣の更新モジュールが危殆化したと判断しても、更新モジュール全体を更新する必要はなく、危殆化した更新モジュールに無効化処理を行い、特許文献２の脱退処理を行うことで、分散情報の持ち合いが行われる。ただし、再暗号化処理において、暗復号鍵の復元の動作では、危殆化していない更新モジュールの持つ分散情報が正しいかどうか、特許文献２の分散情報の検証処理を行う。分散情報の検証処理の詳細な方法は特許文献２の５７ページに詳しく説明されているので、ここでの説明は省略する。上記の処理により、更新モジュールＣに隣接する更新モジュールが危殆化しても、更新モジュールＡが更新モジュールＣの分散情報を保持するため、特許文献２のにおける分散情報の検証処理を行うことができ、更新モジュールＣの分散情報の正当性を検証し、暗復号鍵の復元処理（Ｓ５２０４）において、正しく復元できなくなることを防止することができる。
【０２７７】
（６９）本発明の実施の形態３では、通常時無効化判断処理の動作として、隣接する更新モジュールが危殆化したと判定した場合（Ｓ３２０Ｂ）、更新モジュール全体を更新するとしたが、これに限定するものではなく、危殆化した更新モジュールの無効化処理を行い、更新モジュール全体を更新しなくてもよい。ただし、図５８に示すように、更新モジュール１３１の保持する分散情報１を他の更新モジュールが保持しなくなるため、追加処理が必要となる。この場合の追加判断処理を図５８を用いて説明する。隣接する更新モジュールが危殆化し、無効化処理のみが行われたかを判定し（Ｓ３３０Ａ）、無効化されている場合には、追加処理を行う。更新モジュール１３１に隣接する更新モジュール１３２と更新モジュール１３７が無効化された場合、分散情報１を保持する更新モジュールは更新モジュール１３１のみになり、次に更新モジュール１３１が攻撃された場合、暗復号鍵の復元をすることができなくなる。この場合、更新モジュールを追加し、追加した更新モジュールに分散情報１を保持させることで、更新モジュール１３１が攻撃されても、暗復号鍵が復元できなくなることを回避することができる。ここで、追加した更新モジュールに分散情報１を保持させるのではなく、保護制御モジュール１２０が更新モジュール全体の分散情報を更新するとしてもよい。更新モジュール全体の分散情報を更新する方法は、通常時無効化判断処理における更新モジュール全体の分散情報の更新方法と同様であるので、ここでは省略する。上記のようにすることにより、分散情報１を複数の更新モジュールで保持することができるため、更新モジュール１３１が改ざんされた場合においても、暗復号鍵の復元ができなくなることを防止できる。
（７０）本発明の実施の形態３では、通常時無効化判断処理の動作として、ある更新モジュール１３Ａに隣接する更新モジュールのどちらか一方（ここでは、更新モジュール１３）が危殆化した場合において、特許文献２の脱退処理を行わず、更新モジュール１３Ｂの無効化処理を行ってもよい。このことにより、更新モジュール１３Ａの分散情報Ａはどちらか一方が保持しているため、追加処理の必要がなく、追加処理を行わないことで複数の更新モジュールが不正動作を行わないかの検証を継続するなど他の処理を行うことができる。
【０２７８】
また、保護制御モジュール１２０がアプリ（１１０、１１１）が改ざんされていないかを検証した後において、更新モジュール１３Ａに隣接するように更新モジュールの追加処理を行うとしてもよい。このことにより、本来守るべきのアプリが改ざんされていないかを検証する処理を終わらせてから、更新モジュール１３Ａに隣接する更新モジュールの追加を行うので、隣接する更新モジュールを追加しなくても前記所定の復号鍵は復元できる場合にまで、前記一方に隣接する更新モジュールの追加作業を優先させて、前記追加作業の間に前記所定のアプリケーションが攻撃されるのを防止できる。
（７１）本発明の実施の形態３では、初期設計処理の動作として、全ての更新モジュールが隣接する更新モジュールの分散情報を保持するとしたが、これに限定するものではなく、ある更新モジュールの分散情報は隣接する更新モジュールとさらに他の更新モジュールが保持するとしてもよい。以下、図５９を用いて具体的に説明する。実施の形態３では、隣接する更新モジュールの分散情報を保持するため、分散情報１は更新モジュール１３１、１３２、１３７が保持していた。そのため、通常時無効化判断処理や回復時判断処理の動作として、更新モジュール１３１、１３２、１３７の連続３つが危殆化した場合、分散情報１が復元できなくなるため、機器を停止するなどの処理を行っていた。図５９のように、分散情報１を更新モジュール１３１、１３２、１３３、１３７が保持するようにすることで、通常時無効化判断処理や回復時判断処理で更新モジュール１３１、１３２、１３７の連続３つが危殆化した場合においても、分散情報１が復元できなくなることはないため、分散情報１に関しては、通常時無効化判断処理や回復時判断処理の動作として、連続４つが危殆化しているかの判定となる。ただし、分散情報２から分散情報７に関しては、隣接する更新モジュールのみが保持しているため、連続３つが危殆化しているかの判定となる。このように、各分散情報を持ち合いする数が違う場合には、分散情報ごとに持ち合いの数を考慮して判定する必要がある。実施の形態３では、分散情報の持ち合いの数がすべて３のため、分散情報ごとの判定が考慮不要となる。
【０２７９】
（７２）本発明の実施の形態３では、初期設計処理の動作として、保護制御モジュール１２０の暗復号鍵を全ての更新モジュールが一様に保持するとしたが、これに限定するものではなく、暗復号鍵を分割し、分割した暗復号鍵の１つに対して、秘密分散法を用いて分散情報を生成するとしてもよい。具体的な例として、図６０を用いて説明する。保護制御モジュール１２０は暗復号鍵を分割鍵１と分割鍵２の２つに分割する。それぞれの分割鍵に初期設計処理と同様に秘密分散法を用いて、分割鍵１が分散情報１から分散情報５に、分割鍵２が分散情報６から分散情報１０となるように分散情報を生成する。分割鍵１の分散情報を更新モジュール１３０１から１３０５に送信し、分割鍵２の分散情報を更新モジュール１３０６から１３１０に送信する。暗復号鍵の復元では、各更新モジュールから分散情報を受信し、分割鍵を復元し、復元した分割鍵から暗復号鍵を復元する。また、通常時無効化判断処理や回復時判断処理の動作では、分割鍵に対する分散情報を持つ更新モジュールの構成において、連続３つ更新モジュールが危殆化しているかの判定を行う。また、無効化処理や追加処理に用いる特許文献２の脱退処理や追加処理は、分割鍵の分散情報を持つ更新モジュールの構成で行う。
（７３）本発明の実施の形態３では、保護制御モジュール１２０が暗復号鍵の分散情報の配置情報を生成しているが、これに限定するものではなく、更新サーバ２００が配置情報を生成し、保護制御モジュール１２０に送信するとしてもよいし、外部の装置やサーバから入手するとしてもよい。また、分散情報の持ち合いの数を更新サーバ２００から入力するとしてもよい。この時、持ち合いの数によって、更新サーバ２００内で通常時無効化判断処理や回復時判断処理の更新モジュールのうち更新モジュールの構成で連続いくつが危殆化するかを判定する数を決定してもよい。
（７４）本発明の実施の形態３では、保護制御モジュール１２０が暗復号鍵の分散情報の配置情報を記憶しているが、これに限定するものではなく、保護制御モジュール１２０が分散情報の配置情報を更新サーバ２００に送信し、更新サーバ２００が記憶してもよいし、更新サーバ２００が更新モジュール群１３０に通知依頼を送信し、更新モジュール群１３０から受信してもよいし、更新サーバ２００の外部の装置やサーバから入手するとしてもよい。
（７５）実施の形態２では、Ｓ８１０１において新監視パターンを受信したそれぞれの更新モジュールは、監視パターン更新部３０９を用いて、自身の監視パターン情報を、受信した新監視パターンへ更新することとしていたが、更新前の監視パターンを保持しておくものとしてもよい。そして、Ｓ８１０２において、監視パターン更新部２５０が全更新モジュールから監視パターンの反映終了の通知を受け取った場合、すなわち、全ての更新パターンの更新が完了した場合に、監視パターン更新部２５０は、各更新モジュールに更新前の監視パターン破棄の指示を送信する。そして、各更新モジュールは、監視パターン破棄の指示を受けた場合に、更新前の監視パターンを破棄する。全ての更新パターンの更新が完了しなかった場合、新監視パターンの方を破棄する。
【０２８０】
ここで、全ての監視パターンの更新が完了したか否かは、監視パターン更新部２５０側で行ってもよいし、更新モジュール側で行なってもよい。監視パターン更新部２５０で行う場合であれば、監視パターン更新部２５０が、新監視パターンを各更新モジュールに送信してから一定時間内に、全更新モジュールから反映終了の通知を受け取らなかった場合に、全ての更新パターンの更新が完了しなかったと判断する。この場合に、監視パターン更新部２５０が、各更新モジュールに更新前の監視パターンを破棄するよう指示する。
【０２８１】
また、全ての監視パターンの更新が完了したか否かを更新モジュール側で行う場合には、監視パターン更新部２５０が、全更新モジュールから反映終了の通知を受け取ったときに、各更新モジュールに全ての更新パターンの更新が完了した旨を通知する。各更新モジュールは、新監視パターンを受け取ってから一定時間内に、全ての監視パターンの更新が完了した旨の通知を受け取った場合に更新前の監視パターンを破棄し、全ての監視パターンの更新が完了した旨の通知を受け取らなかった場合には、新監視パターンを破棄する。
（７６）上記実施の形態１において、各更新モジュールは、ＭＡＣ値テーブルに格納されているＭＡＣ値を用いて、他の更新モジュールの改ざんの有無を検出する。ここで、ＭＡＣ値テーブル自体が改ざんされた場合には、更新モジュールの改ざん検出が正しく実施されない可能性がある。例えば、更新モジュールが改ざんされた場合であっても、ＭＡＣ値テーブルに格納されているＭＡＣ値も同じ攻撃者により改ざんされていた場合、更新モジュールが改ざんされているにもかかわらず、改ざんは無いと検出される。
【０２８２】
また、上記実施の形態１において、各更新モジュールは、検証値リストに格納されている検証値を用いて、監視パターン及び監視頻度を正しく更新できたか否かを検証する。ここで、検証値リスト自体が改ざんされた場合には、監視パターン及び監視頻度の検証が正しく実施されない可能性がある。
そこで、これらの問題に対応するために、実施の形態１において、各更新モジュールは、ＭＡＣ値テーブル及び検証値リストを保護するための保護プログラムを実装して、ＭＡＣ値テーブル及び検証値リストを保護するとしてもよい。
【０２８３】
この場合、相互監視において、各更新モジュールは相互に、各更新モジュールに実装されている保護プログラムの改ざん検出を行うとしてもよい。
そして、保護プログラムの改ざんが検出されない場合、その更新モジュールにおいては、ＭＡＣ値テーブル及び検証値リストが改ざんされていないとみなし、保護プログラムの改ざんが検出された場合、その更新モジュールにおいて、ＭＡＣ値テーブル及び検証値リストが改ざんされているとみなすことができる。
【０２８４】
また、ＭＡＣ値テーブル及び検証値リストを保護するための保護プログラムは、例えば、ＭＡＣ値テーブル及び検証値リストを、暗号化／復号するプログラムでもよいし、署名生成プログラムであってもよい。このとき、ＭＡＣ値テーブル及び検証値リストにパディングデータを付加してもよい。これにより、復号時又は署名検証時にパディングデータが正しいか否かを判断することにより、ＭＡＣ値テーブル及び検証値リストの改ざんを検出することができる。
【０２８５】
また、ＭＡＣ値テーブル自体のＭＡＣ値を生成しておくことにより、ＭＡＣ値テーブルの改ざんを検出するとしてもよい。このとき、ＭＡＣ値を検証すための鍵に難読化を施してもよい。同様に、検証値リストのＭＡＣ値を生成しておくことにより、検証値リストの改ざんを検証するとしてもよい。
ＭＡＣ値テーブル及び検証値リストの検証は、定期的に行っても良いし、不定期に行っても良い。不定期に行う場合には、例えば、更新モジュール群１３０による相互監視処理の前に行うとしてもよい。
（７７）上記の各モジュールは、具体的には、それぞれ個別のコンピュータプログラムであってもよいし、オペレーティングシステムに組み込まれるモジュールであってもよいし、オペレーティングシステムから呼ばれるドライバであってもよいし、アプリケーションプログラムであってもよい。
（７８）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
（７９）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０２８６】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０２８７】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
（８０）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
（８１）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０２８８】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０２８９】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０２９０】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（８２）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０２９１】
本発明は、ユーザに対してネットワークを利用した様々な機能を提供する情報処理装置を製造及び販売する産業において、前記情報処理装置で利用されるソフトウェアを製作及び販売する産業において、前記情報処理装置に対してソフトウェアを提供する管理装置を製造及び販売する産業において、安全にソフトウェアを更新する技術として利用することができる。
【符号の説明】
【０２９２】
１０      ソフトウェア更新システム
１００    機器
１１０    アプリ
１１１    アプリ
１２０    保護制御モジュール
１３０    更新モジュール群
１３１    更新モジュール
１３２    更新モジュール
１３３    更新モジュール
１４０    アクセス制御モジュール
１６０    ブートローダ
２００    更新サーバ
２１０    判断部
２２０    更新用ソフトウェア配布部
２３０    モジュール無効化部
２４０    モジュール追加部
２５０    監視パターン更新部
２６０    通信部
３０１    受信部
３０２    送信部
３０３    制御部
３０４    更新部
３０５    検証部
３０６    ＭＡＣ値生成部
３０７    ＭＡＣ値テーブル更新部
３０８    監視パターン取得部
３０９    監視パターン更新部
３１０    分散情報保持部
４０１    受信部
４０２    送信部
４０３    制御部
４０４    暗号化部
４０５    検出部
４０６    解析ツール検出部
４０７    暗復号鍵保持部
４０８    暗復号鍵生成部
４０９    暗復号鍵分散部
４１０    証明書生成部
４１１    暗復号鍵復元部
５０１    受信部
５０２    送信部
５０３    アクセス情報保持部
６０１    受付部
６０２    指示部
６０３    指示生成部
６０４    不正モジュール特定部
６０５    判断基準読込部
６０６    判断基準格納部
７０１    受信部
７０２    送信部
７０３    暗号鍵生成部
７０４    暗号処理部
７０５    認証部
７０６    更新モジュール選択部
７０７    制御部
７０８    証明書生成部
７０９    署名秘密鍵保持部
７１０    更新用ソフトウェア保持部
７１１    暗号鍵保持部
８０１    受信部
８０２    送信部
８０３    アクセス情報取得鍵保持部
８０４    更新モジュール選択部
９０１    受信部
９０２    送信部
９０３    更新モジュール選択部
９０４    更新モジュール保持部
９０５    更新モジュール分割部
９０６    制御部
１００１  受信部
１００２  送信部
１００３  監視パターン生成部
１００４  監視パターン分割部
１００５  制御部
【図１】
2010152877.tif 000003
【図２】
2010152877.tif 000004
【図３】
2010152877.tif 000005
【図４】
2010152877.tif 000006
【図５】
2010152877.tif 000007
【図６】
2010152877.tif 000008
【図７】
2010152877.tif 000009
【図８】
2010152877.tif 000010
【図９】
2010152877.tif 000011
【図１０】
2010152877.tif 000012
【図１１】
2010152877.tif 000013
【図１２】
2010152877.tif 000014
【図１３】
2010152877.tif 000015
【図１４】
2010152877.tif 000016
【図１５】
2010152877.tif 000017
【図１６】
2010152877.tif 000018
【図１７】
2010152877.tif 000019
【図１８】
2010152877.tif 000020
【図１９】
2010152877.tif 000021
【図２０】
2010152877.tif 000022
【図２１】
2010152877.tif 000023
【図２２】
2010152877.tif 000024
【図２３】
2010152877.tif 000025
【図２４】
2010152877.tif 000026
【図２５】
2010152877.tif 000027
【図２６】
2010152877.tif 000028
【図２７】
2010152877.tif 000029
【図２８】
2010152877.tif 000030
【図２９】
2010152877.tif 000031
【図３０】
2010152877.tif 000032
【図３１】
2010152877.tif 000033
【図３２】
2010152877.tif 000034
【図３３】
2010152877.tif 000035
【図３４】
2010152877.tif 000036
【図３５】
2010152877.tif 000037
【図３６】
2010152877.tif 000038
【図３７】
2010152877.tif 000039
【図３８】
2010152877.tif 000040
【図３９】
2010152877.tif 000041
【図４０】
2010152877.tif 000042
【図４１】
2010152877.tif 000043
【図４２】
2010152877.tif 000044
【図４３】
2010152877.tif 000045
【図４４】
2010152877.tif 000046
【図４５】
2010152877.tif 000047
【図４６】
2010152877.tif 000048
【図４７】
2010152877.tif 000049
【図４８】
2010152877.tif 000050
【図４９】
2010152877.tif 000051
【図５０】
2010152877.tif 000052
【図５１】
2010152877.tif 000053
【図５２】
2010152877.tif 000054
【図５３】
2010152877.tif 000055
【図５４】
2010152877.tif 000056
【図５５】
2010152877.tif 000057
【図５６】
2010152877.tif 000058
【図５７】
2010152877.tif 000059
【図５８】
2010152877.tif 000060
【図５９】
2010152877.tif 000061
【図６０】
2010152877.tif 000062
【図６１】
2010152877.tif 000063