(57)【要約】【課題】ＯＳと独立した処理を実現するために必要なデータ、アルゴリズムをセキュアな状態で保存し、制御部内にてセキュアな状態でソフトウェアの認証処理を正しく実行する。【解決手段】ハッシュ値テーブルは、予めプロセッサ内部のハッシュ値テーブル用メモリ１４に書き込まれている。このように、システムモジュールの照合用ハッシュ値がプロセッサ内部のハッシュ値テーブル用メモリ１４に存在することにより、ハッシュテーブルの改ざんや消去をすることはできず、照合用ハッシュ値として信頼できる状態である。【選択図】  図３
2004280284.tif 000002
【特許請求の範囲】
【請求項１】
システムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器の制御プロセッサであって、
前記システムモジュールの改ざんや消去を判断するための演算を行う暗号演算部と、
前記システムモジュールを読み込むのに必要な処理を行う初期プログラムローダーを書き込んだ記憶部と、
前記システムモジュールの改ざんや消去を判断するために用いられるハッシュ値テーブルを記憶するハッシュ値テーブル用記憶部と
を備えることを特徴とする制御プロセッサ。
【請求項２】
固有の秘密鍵をさらに備えることを特徴とする請求項１記載の制御プロセッサ。
【請求項３】
前記ハッシュ値テーブル用記憶部は、予めハッシュ値テーブルを記憶していることを特徴とする請求項１記載の制御プロセッサ。
【請求項４】
前記ハッシュ値テーブル用記憶部は、起動時に外部からハッシュ値テーブルを読み出して記憶することを特徴とする請求項１記載の制御プロセッサ。
【請求項５】
前記システムモジュールの更新が要求されたときには、システムモジュールを更新する権利をチェックし、更新する権利を有するシステムモジュールだけを判断して、更新を実行することを特徴とする請求項４記載の制御プロセッサ。
【請求項６】
前記システムモジュールのハッシュ値を計算し、前記ハッシュ値テーブル用記憶部に記憶されているハッシュ値テーブルの値と比較して前記システムモジュールの改ざんや消去を判断することを特徴とする請求項１記載の制御プロセッサ。
【請求項７】
複数のシステムモジュールをまとめて一つと見なすことによって、前記ハッシュ値テーブルを限られた前記ハッシュ値テーブル用記憶部の中で管理することを特徴とする請求項１又は４記載の制御プロセッサ。
【請求項８】
システムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器の制御プロセッサであって、
前記システムモジュールの改ざんや消去を判断するための演算を行う暗号演算部と、
前記システムモジュールを読み込むのに必要な処理を行う初期プログラムローダーを書き込んだ記憶部と、
前記システムモジュールの権利者によって付加されている公開鍵基盤ベースの電子署名を検証するために用いる公開鍵証明書と
を備えることを特徴とする制御プロセッサ。
【請求項９】
前記システムモジュールの更新が要求されたときには、システムモジュールを更新する権利をチェックし、更新する権利を有するシステムモジュールだけを判断して、更新を実行することを特徴とする請求項８記載の制御プロセッサ。
【請求項１０】
システムモジュールを記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器であって、
前記システムモジュールの改ざんや消去を判断するための演算を行う暗号演算部と、前記システムモジュールを読み込むのに必要な処理を行う初期プログラムローダーを書き込んだ記憶部と、前記システムモジュールの改ざんや消去を判断するために用いられるハッシュ値テーブルを記憶するハッシュ値テーブル用記憶部とを備える制御プロセッサ
を有することを特徴とする電子機器。
【請求項１１】
システムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器であって、
前記システムモジュールの改ざんや消去を判断するための演算を行う暗号演算部と、前記システムモジュールを読み込むのに必要な処理を行う初期プログラムローダーを書き込んだ記憶部と、前記システムモジュールの権利者によって付加されている公開鍵基盤ベースの電子署名を検証するために用いる公開鍵証明書とを内部に記憶し処理可能な制御プロセッサ
を有することを特徴とする電子機器。
【請求項１２】
システムモジュールを記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行うための電子機器のプログラム起動方法であって、
前記システムモジュールのハッシュ値を計算し、ハッシュ値テーブル用記憶部に記憶されているハッシュ値テーブルの値と比較して前記システムモジュールの改ざんや消去を判断する
ことを特徴とする電子機器のプログラム起動方法。
【請求項１３】
システムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行うための電子機器のプログラム起動方法であって、
公開鍵証明書を用いて前記システムモジュールの権利者によって付加されている公開鍵基盤ベースの電子署名を検証する
ことを特徴とする電子機器のプログラム起動方法。
【請求項１４】
システムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行うための電子機器のシステムモジュール更新方法であって、
前記システムモジュールの更新が要求されたときには、起動時に外部からハッシュ値テーブルを読み出して記憶するハッシュ値テーブル用記憶部内の前記ハッシュ値テーブルを用いて、システムモジュールを更新する権利をチェックし、更新する権利を有するシステムモジュールだけを判断して、更新を実行する
ことを特徴とする電子機器のシステムモジュール更新方法。
【請求項１５】
システムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行うための電子機器のシステムモジュール更新方法であって、
前記システムモジュールの更新が要求されたときには、公開鍵を用いてシステムモジュールを更新する権利をチェックし、更新する権利を有するシステムモジュールだけを判断して、更新を実行する
ことを特徴とする電子機器のシステムモジュール更新方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器の制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法に関する。
【０００２】
【従来の技術】
パーソナルコンピュータを始めとしたデジタル機器がインターネットに接続されるようになり、クラッカー等と呼ばれる悪意を持った者による破壊行為や、コンピュータウィルスの侵入等といった攻撃は増加の一途を辿っている。こうした攻撃に耐えられる安全なシステムを構成する方策の一つとして、機器内で動作するソフトウェアについて信頼できるデジタル認証方式を使い、認証された信頼できるソフトウェアだけを起動することが考えられている。
【０００３】
しかし、マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）社のウィンドウズ（Ｗｉｎｄｏｗｓ；登録商標）や、リナックス（Ｌｉｎｕｘ）等の従来からの基本ソフトウェアシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：ＯＳ）では、こうしたソフトウェアの信頼性についての対策が採られていない。また、こうした認証機能を後から追加するにしても、ＯＳの中心たるカーネル（Ｋｅｒｎｅｌ）等を含めたシステム全体に信頼できるものであるかどうかの明確な根拠が無いため、システム全体の信頼性に疑問が生じる。
【０００４】
このような現状において、例えば、特開２００２−１５２１９６号公報には、ソフトウェアを認証して実行するという、以下のプログラム認証方法が開示されている。先ず、携帯機器の、組み込み機能部により、ハッシュ値がプログラム本体とプログラムの出所由来を表す公開鍵と対をなす秘密鍵とによって生成されたものであることを確認する。次に、親機器が、公開鍵及び秘密鍵を用いた公開鍵方式により携帯機器の認証を行い、認証が成功した場合に、携帯機器によるハッシュ値確認に基づいてプログラムが真正な出所由来をもつものかを判定する。このように、親機器が携帯機器の認証に成功し、かつプログラムが真正な出所由来をもつものであるときに公開鍵でプログラムを認証したとする。そして、認証したソフトウェアを実行する。
【０００５】
また、特開平１０−３３３９０２号公報には、以下の改ざん検知機能付きコンピュータシステムが開示されている。制御部のＲＯＭに格納されたブート（Ｂｏｏｔ）プログラムにて、基本入出力システム（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ：ＢＩＯＳ）を初期化した後に、補助記憶装置に格納された第１の保存情報をＯＳを介さずに読み込み、その読み込み内容にしたがって被検査ファイルをＯＳを介さずに読み込む。これらの読み込み内容とＲＯＭに格納された第２保存情報とを用いて被検査ファイルの改ざんの有無を検査する。改ざん無しを確認後に、ＯＳローダーを呼び出してＯＳを起動させる。このため、ＯＳローダー（Ｌｏａｄｅｒ）やＯＳを起動する前に、ＯＳローダーやＯＳファイル、或いはその他の任意のファイルの改ざんの有無を、確実に、検証することができるという効果をもたらす技術である。
【０００６】
【特許文献１】
特開２００２−１５２１９６号
【特許文献２】
特開平１０−３３３９０２号
【０００７】
【発明が解決しようとする課題】
ところで、前記特許文献１、特許文献２に開示された技術は、制御部に外部からハッシュ値などのデータや、アルゴリズムを読み出し、制御部内にて実行するものであったので、補助記憶装置等が攻撃を受けた場合には認証処理が正しいか否かの判定が困難になる。
また、ＯＳなどのシステムモジュールを更新するときの対策は採られていなかった。
【０００８】
本発明は、前記実情に鑑みてなされたものであり、ＯＳと独立した処理を実現するために必要なデータ、アルゴリズムをセキュアな状態で保存し、制御部内にてセキュアな状態でソフトウェアの認証処理を正しく実行することができる電子機器及び電子機器のプログラム起動方法の提供を目的とする。
【０００９】
また、本発明は、前記実情に鑑みてなされたものであり、システムモジュールの更新をセキュアな状態で行うことができる電子機器のシステムモジュール更新方法の提供を目的とする。
【００１０】
【課題を解決するための手段】
本発明に係る制御プロセッサは、前記課題を解決するために、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器の制御プロセッサであって、前記システムモジュールの改ざんや消去を判断するための演算を行う暗号演算部と、前記システムモジュールを読み込むのに必要な処理を行う初期プログラムローダーを書き込んだ記憶部と、前記システムモジュールの改ざんや消去を判断するために用いられるハッシュ値テーブルを記憶するハッシュ値テーブル用記憶部とを備える。
【００１１】
また、本発明に係る制御プロセッサは、前記課題を解決するために、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器の制御プロセッサであって、前記システムモジュールの改ざんや消去を判断するための演算を行う暗号演算部と、前記システムモジュールを読み込むのに必要な処理を行う初期プログラムローダーを書き込んだ記憶部と、前記システムモジュールの権利者によって付加されている公開鍵基盤ベースの電子署名を検証するために用いる公開鍵証明書とを備える。
【００１２】
本発明に係る電子機器は、前記課題を解決するために、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器であって、前記システムモジュールの改ざんや消去を判断するための演算を行う暗号演算部と、前記システムモジュールを読み込むのに必要な処理を行う初期プログラムローダーを書き込んだ記憶部と、前記システムモジュールの改ざんや消去を判断するために用いられるハッシュ値テーブルを記憶するハッシュ値テーブル用記憶部とを備える制御プロセッサを有する。
【００１３】
また、本発明に係る電子機器は、前記課題を解決するために、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行う電子機器であって、前記システムモジュールの改ざんや消去を判断するための演算を行う暗号演算部と、前記システムモジュールを読み込むのに必要な処理を行う初期プログラムローダーを書き込んだ記憶部と、前記システムモジュールの権利者によって付加されている公開鍵基盤ベースの電子署名を検証するために用いる公開鍵証明書とを内部に記憶し処理可能な制御プロセッサを有する。
【００１４】
本発明に係る電子機器のプログラム起動方法は、前記課題を解決するために、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行うための電子機器のプログラム起動方法であって、前記システムモジュールのハッシュ値を計算し、ハッシュ値テーブル用記憶部に記憶されているハッシュ値テーブルの値と比較して前記システムモジュールの改ざんや消去を判断する。
【００１５】
また、本発明に係る電子機器のプログラム起動方法は、前記課題を解決するために、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行うための電子機器のプログラム起動方法であって、公開鍵証明書を用いて前記システムモジュールの権利者によって付加されている公開鍵基盤ベースの電子署名を検証する。
【００１６】
本発明に係る電子機器のシステムモジュール更新方法は、前記課題を解決するために、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行うための電子機器のシステムモジュール更新方法であって、前記システムモジュールの更新が要求されたときには、起動時に外部からハッシュ値テーブルを読み出して記憶するハッシュ値テーブル用記憶部内の前記ハッシュ値テーブルを用いて、システムモジュールを更新する権利をチェックし、更新する権利を有するモジュールだけを判断して、更新を実行する。
【００１７】
また、本発明に係る電子機器のシステムモジュール更新方法は、前記課題を解決するために、ＯＳ、アプリケーションといったソフトウェアであるシステムモジュールを外部の記憶部から読み出して実行し、かつネットワークに接続してデータの送受信を行うための電子機器のシステムモジュール更新方法であって、前記システムモジュールの更新が要求されたときには、公開鍵を用いてシステムモジュールを更新する権利をチェックし、更新する権利を有するモジュールだけを判断して、更新を実行する。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら説明する。この実施の形態は、インターネット等のネットワークと接続され、ネットワークを通してビデオ、オーディオ、テキストデータ或いはコントロールデータ等を、このネットワークに接続された他の電子機器や、情報提供業者のサーバに対して送受信するネットワーク接続型電子機器である。例えば、インターネットを通してビデオデータを送信するビデオカメラや、デジタルスチルカメラ、さらにはインターネットを通してビデオデータサービスサーバからビデオデータをダウンロードするネット接続型のビデオ再生装置、ビデオ記録再生装置や、またオーディオデータサービスサーバからオーディオデータをダウンロードするネット接続型のオーディオ再生装置、オーディオ記録再生装置等を挙げることができる。
【００１９】
以下では、ネットワーク接続型電子機器と呼ぶが、前記各装置、機器に限定されるものではなく、ネットワーク接続可能であれば携帯電話、携帯情報端末、或いはモニタ装置等、いわゆる民生用電子機器（ｃｏｎｓｕｍｅｒ  ｅｌｅｃｔｒｏｎｉｃｓ：ＣＥ）全般に及ぶ。もちろん、ネットワークに接続する業務用の電子機器も対象となる。コンピュータがＯＳの下、複数の任意のソフトウェア開発業者が製造した複数のソフトウェアを実行するのに比べ、前記ネットワーク接続型電子機器は、用途を絞り、機器製造者又は機器製造者によりライセンスを付与された出所由来の分かっているソフトウェア開発業者が製造したソフトウェアを実行する。
【００２０】
先ず、ネットワーク接続型電子機器１の第１実施例について説明する。この第１実施例は、図１に示すように、制御プロセッサ（Ｐｒｏｃｅｓｓｏｒ）２が内部バス３を介してＲＯＭ４、ＲＡＭ５、入力／出力インターフェース（Ｉ／Ｏ用Ｉ／Ｆ）６、及びネットワークＩ／Ｆ７と接続している構成を採る。
【００２１】
制御プロセッサ２は、システム全体を安全に起動するために、システムで動作する全てのシステムモジュール、例えばＯＳやアプリケーションといったソフトウェアなどを認証、すなわち完全性の検査をしてから実行する。このような認証を行うには、認証の根拠（始まり、起点）が必要である。
【００２２】
図２に示すように、Ａは信頼できる（信頼する）のであれば、→ＡによってＢの完全性（Ｉｎｔｅｇｒｉｔｙ）を証明できる。また、Ｂの完全性を証明できたのであれば、→ＢによってＢ１の完全性を証明できる。また、Ａは信頼できるのであり、よって→ＡによってＣの完全性は証明できる。このように、Ａを信頼できれば、Ａを認証の根拠とし、Ｂ、Ｂ１、Ｂ２・・・や、Ｃ、Ｃ１、Ｃ２・・・といった認証の連鎖を構築できる。
【００２３】
そこで、制御プロセッサ２は、前記認証の根拠を確保するために、セキュア（Ｓｅｃｕｒｅ）なデバイスを用いている。具体的に制御プロセッサ２は、ネットワーク接続型電子機器１をセキュアに起動し、実行するため、後述の暗号演算回路、ＩＰＬ（Ｉｎｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）を書き込んだＲＯＭ、制御プロセッサ固有の秘密鍵、ハッシュ値テーブル用メモリを一体化している。つまり、本来であれば、内部バスを介して外部に接続されることになるいくつかのデバイスを１チップ化している。
【００２４】
ＲＯＭ４は、制御プロセッサ２に対して内部バス３を介して接続された補助記憶部である。また、ＲＡＭ５は、同様に内部バス３を介して接続された補助記憶装置及びワークエリアとして用いられる。Ｉ／Ｏ用Ｉ／Ｆ６は、キー操作部、ジョグダイヤルなど入力操作部用のインターフェースである。また、映像出力部、又は音声出力部などの出力部用のインターフェースでもある。ネットワークＩ／Ｆ７は、インターネットなどのネットワークに接続するためのインターフェースである。
【００２５】
制御プロセッサ２は、詳細な構成を図３に示すように、暗号演算回路１１、ＩＰＬを書き込んだＲＯＭ（以下、ＩＰＬ用ＲＯＭという）１２、制御プロセッサ固有の秘密鍵１３、ハッシュ値テーブル用メモリ１４を一体に１チップ化している。
【００２６】
暗号演算回路１１には、ネットワーク接続型電子機器１で必要となる暗号用演算、認証用演算、例えばＳＨＡ１、ＭＤ５、ＭＡＳＨなどのハッシュ関数、ＨＭＡＣ−ＳＨＡ１などのハッシュ関数、ＥＣＣなどの署名に関する演算、ＡＥＳ、ＤＥＳ、Ｔｒｉｐｌｅ−ＤＥＳなどの共通鍵暗号の演算、ＲＳＡなどの公開鍵暗号の演算等が含まれる。
【００２７】
暗号用演算は、ネットワークで送信するメッセージを第三者が理解できないようにする演算である。さらに、暗号用演算は、ＲＡＭや二次記憶装置等に情報を保存する場合などにも利用される。
【００２８】
認証用演算は、認証処理に関わる演算であり、認証する対象により、相手認証、ユーザ認証、メッセージ認証、デジタル認証に分かれる。特に、デジタル認証は、文書の正当性を保証する技術であり、公開鍵を用いる演算により行われる。
【００２９】
ハッシュ関数は、デジタル認証や完全性検査に利用される数学的処理法である。長いデータを攪乱し、一定の長さ（例えば、１２８ビット、１６０ビット等）のハッシュ値に圧縮する。ハッシュ値から入力を推定することが困難なこと、及び二つの異なるデータのハッシュ値が一致する確率が極めて小さいことが安全なハッシュ関数の条件である。
【００３０】
署名に関する演算としては、公開鍵暗号の一種である、楕円暗号（Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｃｒｙｐｔｏｓｙｓｔｅｍ：ＥＣＣ）を用いる。従来のＲＳＡ暗号に比べて鍵のサイズが小さくて済む。一般的に、１０２４ビットのデータ長を持つＲＳＡ暗号とほぼ同水準の強度を１６０ビットのＥＣＣで実現できる。もちろん、前記ＲＳＡ暗号を用いてもよいし、他の署名アルゴリズムを用いてもよい。
【００３１】
共通鍵暗号は、暗号化する鍵と復号する鍵が同じであり、送信者と受信者がともに秘密に持っている暗号である。秘密鍵暗号とも呼ばれている。共通鍵暗号の演算は、前もって送信者と受信者の間で秘密鍵を共有し、暗号化の演算を行う。ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）は、手順公開型の共通鍵暗号である。ブロック長は、１２８ビット、鍵長は１２８／１９２／２５６ビットから選択される。ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）も、手順公開型の共通鍵暗号である。データを５６ビットの鍵＋８ビットのパリティ部分の計６４ビットのデータ・ブロック単位に暗号化する。Ｔｒｉｐｌｅ−ＤＥＳは、安全性を高めるためＤＥＳを３段並べて鍵を長くした方式である。
【００３２】
公開鍵暗号は、暗号化する鍵と復号する鍵が異なり、片方の鍵を公開し、もう一方の鍵は秘密にした暗号であり、非対称暗号とも呼ばれている。公開鍵暗号を守秘に使う場合、送信者は受信者の公開鍵を用いて暗号化し、暗号文を送る。受信者は、自分だけが知っている秘密鍵を用いて復号し、元の平文を得る。ＲＳＡ（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ  Ｓｃｈｅｍｅ）は、大きな整数ｎを素因数分解することの難しさに安全性の根拠をおいている。
【００３３】
なお、暗号演算回路１１は、これらの暗号用演算、認証用演算、ハッシュ関数、署名に関する演算、共通鍵暗号の演算、開鍵暗号の演算等を、全て必須とするものではないが、少なくとも主に認証処理に関わる暗号演算処理を行う。
【００３４】
ＩＰＬ用ＲＯＭ１２に書き込まれるＩＰＬとは、ネットワーク接続型電子機器１が、ＯＳ、アプリケーションなどのソフトウェアやオブジェクトであるシステムモジュールを読み込むのに必要な最低限の処理、例えば、メモリテストなど、である。また、後述するシステムモジュールの読み出し、完全性の確認に関係する処理などもＩＰＬに含まれており、この完全性の確認に関係する処理の部分が重要である。
【００３５】
制御プロセッサ固有の秘密鍵１３は、Ｋとして説明する。この秘密鍵（Ｋ）１３は、制御プロセッサに固有の鍵であり、前記共通鍵暗号を復号するのに使われる。もちろん、暗号化するのにも使われる。また、後述の第２実施例などでは、ハッシュ値テーブルのチェックにも使われる。システムモジュールが秘密鍵Ｋによって暗号化されている場合には、復号の際に使われることになる。
【００３６】
ハッシュ値テーブル用メモリ１４は、この第１実施例では、予めハッシュ値テーブルを記録している。図４には、ネットワーク接続型電子機器１が起動する際に、図１のＲＯＭ４又はＲＡＭ５等から読み込むシステムモジュールと、ハッシュ値に関するテーブルを示す。ＲＯＭ４又はＲＡＭ５等からロードするシステムモジュール２１、アルゴリズム２２、ハッシュ値２３によって構成される。アルゴリズム２２をシステムモジュール２１に適用したときに得られるハッシュ値２３という構成になる。すなわち、モジュールＡにＳＨＡ１演算というアルゴリズムを適用してハッシュ値を計算すると、”８３ｆ９ｃ９ａｅｅ９８９３ｂ９ｄｅｆｂａ９８８３１８７ｆ３８ｂｃ８ｆ９ａａ８２４”となることを意味している。
【００３７】
ここでは、便宜上、ロードするモジュール２１、アルゴリズム２２、ハッシュ値２３としているが、実際には前記電子機器が理解できる形式になっている。
【００３８】
また、図４のハッシュ値テーブルは、システムモジュールを読み込む順番も示している。ここで、前記電子機器はＡ、Ｂ、Ｃ、Ｄの順番でシステムモジュールを読み込む。
【００３９】
このハッシュ値テーブルは、前述したように、予めプロセッサ内部のハッシュ値テーブル用メモリ１４に書き込まれている。このように、システムモジュールの照合用ハッシュ値がプロセッサ内部のハッシュ値テーブル用メモリ１４に存在することにより、ハッシュテーブルの改ざんや消去をすることはできず、照合用ハッシュ値として信頼できる状態である。
【００４０】
なお、ハッシュ値テーブルは、ハッシュ値テーブル用メモリに予め書き込まれておらず、前記電子機器の起動フロー中にプロセッサ内部のハッシュ値テーブル用メモリに書き込れるようにしてもよい。この場合についての詳細は後述する。
【００４１】
図５は、ハッシュ値テーブルがハッシュ値テーブル用メモリに予め書き込まれている場合の、前記電子機器の起動時の処理手順を表している。ハッシュ値テーブルの存在する場所ごとに記述する。
【００４２】
前記電子機器の電源がオンになったとき、制御プロセッサ２のＩＰＬ用ＲＯＭ１２にあるＩＰＬが実行される（ステップＳ１）。次に、ハッシュ値テーブル用メモリ１４に書き込まれているハッシュ値テーブルを参照し、外部メモリ、例えばＲＡＭ５からシステムモジュールを読み出す（ステップＳ２）。次に読み出してきたシステムモジュールの完全性のチェックを行う（ステップＳ３）。
【００４３】
完全性のチェックは、システムモジュールに、図４のアルゴリズム２２を適用し、ハッシュ値２３と照合することによって行う（ステップＳ３）。ハッシュ値が一致しなかった場合（ＮＧ）、システムモジュールに不具合（改ざんなど）があったことを主原因とし、エラーを判断して終了とする。このとき、前記電子機器を起動しない。或いは、前記電子機器にエラーコード等を出力する機能があれば、エラーであることと、エラーコードを出力してもよい（ステップＳ４）。ステップＳ３にて、ハッシュ値が一致した場合（ＯＫ）、システムモジュール全てが読み込まれたかどうかをチェックし（ステップＳ５）、読み込まれていれば（ＹＥＳ）、前記電子機器は起動終了（ステップＳ６）、読み込まれていなければ（ＮＯ）、ステップＳ２へ戻り次のシステムモジュールを読み込む。
【００４４】
このように、ネットワーク接続型電子機器１の第１実施例は、図３に示すように、暗号演算回路１１、ＩＰＬ用ＲＯＭ１２、制御プロセッサ固有の秘密鍵１３、ハッシュ値テーブル用メモリ１４を一体に１チップ化している。特に、ハッシュ値テーブルメモリ１４には、予めハッシュ値テーブルを書き込んでいるため、ハッシュテーブルの改ざんや消去をすることはできず、照合用ハッシュ値として信頼できる状態である。このため、第１実施例によれば、起動直後のネットワーク接続型電子機器１は、悪意を持った改ざんを受けていない信頼できるソフトウェア群によって動作していると信頼することができる。また、その後に使用されるアプリケーション等についても、それが改ざんされたり、或いは、置き換えられたりといったような、使用者、或いは管理者が意図しない変更を加えられていないことを認証する際の根拠として、このシステムを利用することができる。
【００４５】
次に、ネットワーク接続型電子機器１の第２実施例について説明する。この第２実施例も前記図１に示すように、制御プロセッサ２が内部バス３を介してＲＯＭ４、ＲＡＭ５、入力／出力インターフェース（Ｉ／Ｏ用Ｉ／Ｆ）６、及びネットワークＩ／Ｆ７と接続している構成である。ただし、ハッシュ値テーブルは、図３のハッシュ値テーブル用メモリ１４に予め書き込まれておらず、前記電子機器の起動フロー中にプロセッサ内部のハッシュ値テーブル用メモリに書き込れる。ハッシュ値テーブルは、プロセッサ固有の秘密鍵Ｋ１３、或いはＫをもとに生成される鍵Ｋ’によって暗号化されて、外部メモリ４又は５に保存されているとする。
【００４６】
この第２実施例の処理手順について図６を参照して説明する。先ず、電子機器の電源がオンになったとき、制御プロセッサのＩＰＬ用ＲＯＭ１２にあるＩＰＬが実行される（ステップＳ１１）。次にハッシュ値テーブルを外部メモリから読み出す（ステップＳ１２）。次に読み出してきたハッシュ値テーブルのチェックを行う（ステップＳ１３）。
【００４７】
このステップＳ１３におけるハッシュ値テーブルのチェックは、プロセッサ固有の秘密鍵Ｋ１３或いはＫから生成する別の鍵Ｋ’によってハッシュ値テーブルを復号して行われる。復号して得る情報がハッシュ値テーブルの形式になっているかどうかをチェックする。
【００４８】
ステップＳ１３によるチェックの結果、ハッシュ値テーブルの形式が正しくない場合、ハッシュ値テーブルに不具合（改ざんなど）があるのが主原因であるので、前記電子機器は起動しない、或いは、前記機器にエラー出力する機能があれば、エラーを出力する（ステップＳ１４）。ステップＳ１３によるチェックの結果、ハッシュ値テーブルの形式が正しい場合（ＯＫ）、ハッシュ値テーブルをハッシュ値テーブル用メモリ１４に展開する（ステップＳ１５）。
【００４９】
次にハッシュ値テーブルを参照し、外部メモリからシステムモジュールを読み出す（ステップＳ１６）。そして、読み出してきたシステムモジュールの完全性のチェックを行う（ステップＳ１７）。完全性のチェックは、図４のシステムモジュール２１にアルゴリズム２２を適用し、ハッシュ値２３と照合する。
【００５０】
ステップＳ１７におけるモジュールチェックにてハッシュ値が一致しなかった場合、システムモジュールに不具合（改ざんなど）があるのが主原因であり、前記電子機器は起動しない、或いは、前記電子機器にエラー出力する機能があれば、エラー出力する（ステップＳ１８）。
【００５１】
ステップＳ１７におけるシステムモジュールチェックにてハッシュ値が一致した場合、システムモジュール全てが読み込まれたかどうかチェックし（ステップＳ１９）、読み込まれていれば前記電子機器は起動終了し（ステップＳ１９）、読み込まれていなければ、ステップＳ１６へ戻り外部メモリから次のシステムモジュールを読み込む。
【００５２】
なお、図６に示した処理手順では、システムモジュールは暗号化されていないが、プロセッサ固有の秘密鍵Ｋ或いはＫから生成する別の鍵Ｋ’によって暗号化されていてもよく、この場合、図６のステップＳ１７の完全性のチェックの前であって、ステップＳ１６のシステムモジュールの読み出しの後に復号すればよい。
【００５３】
このように、ネットワーク接続型電子機器１の第２実施例は、図３に示すように、暗号演算回路１１、ＩＰＬ用ＲＯＭ１２、制御プロセッサ固有の秘密鍵１３、ハッシュ値テーブル用メモリ１４を一体に１チップ化している。特に、ハッシュ値テーブルメモリ１４には、前記電子機器の起動フロー中に、外部メモリからハッシュ値テーブルが書き込まれ、動作中はそのまま制御プロセッサ２に一体化されたハッシュ値テーブル用メモリ１４に格納されることになるので、ハッシュテーブルの改ざんや消去をすることはできず、照合用ハッシュ値として信頼できる状態である。このため、第２実施例によれば、起動直後のネットワーク接続型電子機器１は、悪意を持った改ざんを受けていない信頼できるソフトウェア群によって動作していると信頼することができる。また、その後に使用されるアプリケーション等についても、それが改ざんされたり、或いは、置き換えられたりといったような、使用者、或いは管理者が意図しない変更を加えられていないことを認証する際の根拠として、このシステムを利用することができる。
【００５４】
次に、ネットワーク接続型電子機器１の第３実施例について説明する。この第３実施例も前記図１に示すように、制御プロセッサが内部バス３を介してＲＯＭ４、ＲＡＭ５、入力／出力インターフェース（Ｉ／Ｏ用Ｉ／Ｆ）６、及びネットワークＩ／Ｆ７と接続している構成である。ただし、前記制御プロセッサ２に代わり、図７に示す制御プロセッサ３０を用いる。
【００５５】
図７において、制御プロセッサ３０は、ネットワーク接続型電子機器１をセキュアに起動し、実行するため、暗号演算回路３１、ＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）を書き込んだＲＯＭ３２、制御プロセッサ固有の秘密鍵３３、ＣＡ（Ｃｅｒｔｉｆｉｃａｔｅ  Ａｕｔｈｏｒｉｔｙ）の公開鍵証明書３４、権利者の公開鍵証明書３５によって構成される。特に、二種類の公開鍵証明書を制御プロセッサ３０内に格納しているのは特徴的である。これらの公開鍵証明書は、後述の図８のシステムモジュール一覧と、システムモジュールに、モジュールの権利者（モジュール作成者、モジュール配布者、電子機器製造者などのいずれか）によって付加されている公開鍵基盤（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ：ＰＫＩ）ベースの電子署名を検証するために用いられる。この電子署名を検証することによりシステムモジュールの完全性を維持するというところに特徴がある。
【００５６】
暗号演算回路３１には、前記暗号演算回路１１と同様にネットワーク接続型電子機器１で必要となる暗号用演算、認証用演算、例えば、ＳＨＡ１、ＭＤ５などのハッシュ関数、ＨＭＡＣ−ＳＨＡ１などのハッシュ関数、ＥＣＣなどの署名に関する演算、ＡＥＳ、Ｔｒｉｐｌｅ−ＤＥＳなどの共通鍵演算の演算、ＲＳＡなどの公開鍵暗号の演算等が含まれる。これらの演算は、全てが必須ではないが、少なくとも主に認証処理に関わる暗号演算処理を行う。
【００５７】
ＩＰＬ用ＲＯＭ３２に書き込まれるＩＰＬとは、ネットワーク接続型電子機器１がソフトウェアであるシステムモジュールを読み込むのに必要な最低限の処理、例えば、メモリテストなど、である。また、後述するシステムモジュール読み出し、認証に関係する処理などもＩＰＬに含まれており、この認証に関係する処理の部分が重要である。
【００５８】
制御プロセッサ固有の秘密鍵３３は、前記秘密鍵１３と同様に、Ｋとして説明する。この秘密鍵（Ｋ）３３は、制御プロセッサに固有の鍵であり、暗号を復号するのに使われる。もちろん、暗号化する場合にも使われる。
【００５９】
ＣＡ公開鍵証明書３４は、認証局（Ｃｅｒｔｉｆｉｃａｔｅ  Ａｕｔｈｏｒｉｔｙ：ＣＡ）が発行したデジタル証明書である。ＣＡ公開鍵が添付されている。文書の正当性を保証するために使われる。
【００６０】
権利者公開鍵証明書３５は、モジュールの権利者（モジュール作成者、モジュール配布者、前記電子機器製造者などのいずれか）の公開鍵を証明するデジタル証明書である。権利者公開鍵が添付されている。
【００６１】
図８は、前記電子機器が読み込むべきシステムモジュール一覧と読み込み順番を表しており、ＩＰＬ用ＲＯＭ３２に格納されているＩＰＬは外部メモリからシステムモジュールを読み込む前にこれを読み込むような処理を行う。便宜上、ロードするシステムモジュールとしているが、実際には前記機器が理解できる形式になっている。また、図８のシステムモジュール一覧も、システムモジュールと同様にモジュールの権利者（モジュール作成者、モジュール配布者、前記電子機器製造者などのいずれか）によってＰＫＩベースの電子署名が付加されている。この第３実施例は、前述したように制御プロセッサ３０を用いて、ＰＫＩベースの電子署名を検証することによりシステムモジュールの完全性を維持することができる。
【００６２】
図９には、第３実施例の起動時の処理手順を表している。前記電子機器の電源がオンになったとき、プロセッサのＩＰＬ用ＲＯＭ３２にあるＩＰＬが実行される（ステップＳ２１）。次にＣＡの公開鍵証明書３４を読み出し（ステップＳ２２）、チェックする（ステップＳ２３）。なお、プロセッサ内に記録されていることからステップＳ２３のチェックは省略することが可能である。
【００６３】
ステップＳ２３のチェックでＣＡ公開鍵証明書３４が正しくなかった場合、ＣＡの公開鍵証明書３４の不具合が主原因であり、前記電子機器は起動しない、或いは、電子機器にエラー出力する機能があればエラーを出力する。
【００６４】
次に権利者の公開鍵証明書３５を読み出し（ステップＳ２４）、チェックする（ステップＳ２５）。制御プロセッサ３０内に記録されていることからステップＳ２５のチェックは省略することが可能である。
【００６５】
ステップＳ２５のチェックで正しくなかった場合、権利者の公開鍵証明書３５の不具合が主原因であり、前記電子機器は起動しない、或いは、電子機器にエラー出力する機能があればエラーを出力する。
【００６６】
次に外部メモリにある図８のモジュールリストを読み出す（ステップＳ２６）。そして、読み出してきたモジュールリストの署名をチェックする（ステップＳ２７）。ここでの署名のチェックには、権利者公開鍵証明書に添付されている権利者の公開鍵を用いて検証する。
【００６７】
ステップＳ２７のチェックで正しくなかった場合、モジュールリストの不具合（改ざんなど）が主原因であり、前記電子機器は起動しない、或いは、電子機器にエラー出力する機能があればエラーを出力する。
【００６８】
次にモジュールリストを参照し、外部メモリからシステムモジュールを読み出す（ステップＳ２８）。次に読み出してきたシステムモジュールの署名をチェックする（ステップＳ２９）。このチェックはステップＳ２７のチェックと同じである。
【００６９】
ステップＳ２９のチェックで正しくなかった場合、システムモジュールの不具合（改ざんなど）が主原因であり、前記電子機器は起動しない、或いは、電子機器にエラー出力する機能があればエラーを出力する。
【００７０】
次にシステムモジュール全てが読み込まれたかどうかをチェックし（ステップＳ３０）、読み込まれていれば前記電子機器は起動終了（ステップＳ３１）、読み込まれていなければステップＳ２８へ戻り次のシステムモジュールを読み込む。
【００７１】
なお、この図９の処理では、システムモジュールは暗号化されていないが、プロセッサ固有の秘密鍵Ｋ或いはＫから生成する別の鍵Ｋ’によって暗号化されていてもよく、この場合、署名のチェックの前に復号すればよい。
【００７２】
このように、ネットワーク接続型電子機器１の第３実施例は、図７に示すように、ＣＡの公開鍵証明書３４、権利者の公開鍵証明書３５を制御プロセッサ３０内に格納し、システムモジュール一覧と、システムモジュールに、モジュールの権利者（モジュール作成者、モジュール配布者、電子機器製造者などのいずれか）によって付加されている公開鍵基盤（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ：ＰＫＩ）ベースの電子署名を検証するのに用いるので、システムモジュールの完全性を維持することができる。このため、第３実施例によれば、起動直後のネットワーク接続型電子機器１は、悪意を持った改ざんを受けていない信頼できるソフトウェア群によって動作していると信頼することができる。また、その後に使用されるアプリケーション等についても、それが改ざんされたり、或いは、置き換えられたりといったような、使用者、或いは管理者が意図しない変更を加えられていないことを認証する際の根拠として、このシステムを利用することができる。
【００７３】
次に、ネットワーク接続型電子機器１の第４実施例について説明する。この第４実施例も前記図１に示すように、制御プロセッサ２が内部バス３を介してＲＯＭ４、ＲＡＭ５、入力／出力インターフェース（Ｉ／Ｏ用Ｉ／Ｆ）６、及びネットワークＩ／Ｆ７と接続している構成である。そして、前記第２実施例のように、図３に示した前記制御プロセッサ２が一体化しているハッシュ値テーブル用メモリ１４には、ハッシュ値テーブルが予め書き込まれておらず、前記電子機器の起動フロー中に外部メモリ（例えばＲＯＭ４やＲＡＭ５）から読み出されて書き込まれる。このような構成の制御プロセッサ２は、システムモジュールの権利者が作成したシステムモジュールを更新するという処理を行うものである。
【００７４】
図１０には、システムモジュールの権利者が作成する更新モジュールを示す。モジュール５１、アルゴリズム５２、更新前ハッシュ値５３、更新後ハッシュ値５４、新システムモジュール５５によって構成される。
【００７５】
更新モジュールは、どのシステムモジュールを更新するのかを限定する情報と、新システムモジュールによって構成されていればよく、必ずしも図１０の構成というわけではない。
【００７６】
システムモジュールの権利者は、プロセッサ固有の秘密鍵Ｋ１３を用いて、先の更新モジュールのハッシュ値Ｈを計算する。例えば、更新モジュールをＭとすると、
Ｈ＝ＨＭＡＣ−ＳＨＡ１（Ｋ、Ｍ）
といった演算を行う。これは、ハッシュ関数ＳＨＡ１に鍵Ｋを付け加えた演算である。ここで用いているプロセッサ固有の秘密鍵Ｋは、システムモジュールの権利者と前記電子機器（厳密にはプロセッサ）の間で予め共有している。よって、ＨＭＡＣ−ＳＨＡ１によるハッシュ値を用いることにより、前記電子機器はシステムモジュールの権利者、厳密には更新モジュールにシステムモジュールを更新する権利があるかどうかの検査を行うことができる。
【００７７】
システムモジュールの権利者は、更新モジュールＭとハッシュ値Ｈを前記電子機器に、例えばメモリ４又は５を介して与える。
【００７８】
図１１には、この第４実施例におけるシステムモジュール更新時の処理手順を示す。先ず、制御プロセッサ２は、更新モジュールＭ、プロセッサ固有の秘密鍵Ｋ、ハッシュ値Ｈを読み込む（ステップＳ４１）。次にハッシュ値Ｈ’を計算し、
Ｈ’＝ＨＭＡＣ−ＳＨＡ１（Ｋ、Ｍ）
システムモジュールの権利者から受け取ったハッシュ値Ｈと一致するかどうか検査する（ステップＳ４２）。すなわち、
Ｈ’＝Ｈ
が成立するかどうかを検査する。この検査によって、前記電子機器はシステムモジュールの権利者が正しい相手であるか否かを判断する。検査によって、プロセッサ固有の秘密鍵Ｋを、システムモジュールの権利者が前記電子機器と共有していることが分かるためである。ここで、一致しなければ、エラー処理、例えば、「アップデートに失敗しました」などのメッセージを出力して停止する。また、エラーコードを出力して停止してもよい。
【００７９】
ステップＳ４２の検査にて、計算したハッシュ値Ｈ’と、受け取ったハッシュ値Ｈとが一致していた場合（ＯＫ）、図１０に示した更新モジュールＭからモジュール５１を取り出し（ステップＳ４３）、ハッシュ値テーブル（図４）にそのモジュールが存在するかどうかを確認する（ステップＳ４４）。存在しない場合はエラー処理を行う。
【００８０】
ステップＳ４４における確認により、モジュール５１に相当するモジュールが図４のハッシュ値テーブルに存在していた場合、更新モジュールＭから更新前ハッシュ値５３を取り出し（ステップＳ４５）、ハッシュ値テーブル（図４）の該当するハッシュ値と一致するかどうか確認する（ステップＳ４６）。一致しない場合はエラー処理を行う。
【００８１】
ステップＳ４６において一致していた場合（ＯＫ）、更新モジュールＭから更新後のハッシュ値５４を取り出す（ステップＳ４７）。次に、更新モジュールＭから新システムモジュール５５を取り出し（ステップＳ４８）、ハッシュ値を計算する（ステップＳ４９）。このハッシュ値の計算は更新モジュールＭのアルゴリズム５２を用いる。ステップＳ４９の演算の結果とステップＳ４７で取り出した更新後ハッシュ値が一致するかどうかを確認し（ステップＳ５０）。一致しない場合はエラー処理を行う。
【００８２】
ステップＳ５０にて一致していた場合、システムモジュールを更新し（ステップＳ５１）、ハッシュ値テーブルを更新する（ステップＳ５２）。
【００８３】
例えば、システムモジュールの権利者が作成した更新モジュールＭが図４に示したテーブル中のモジュールＣに関するものである場合について以下に説明する。図１１にあっては、モジュール５１が“Ｃ”であり、アルゴリズム５２が“ＳＨＡ１”である。
【００８４】
先ず、図１１のステップＳ４１にて、制御プロセッサ２は、更新モジュールＭ、プロセッサ固有の秘密鍵Ｋ、ハッシュ値Ｈを読み込む。このハッシュ値Ｈは、システムの権利者が、プロセッサ固有の秘密鍵Ｋ１３を用いて、
Ｈ＝ＨＭＡＣ−ＳＨＡ１（Ｋ、Ｍ）
として計算したものである。図４においては、“９ａａ８ｂ７ｂ３ｃ・・・ｄｂａ”となっている。
【００８５】
制御プロセッサ２は、ステップＳ４２にて、プロセッサ固有の秘密鍵１３と、更新モジュールＭとから、
Ｈ’＝ＨＭＡＣ−ＳＨＡ１（Ｋ、Ｍ）
のようにハッシュ値Ｈ’を計算し、システムモジュールの権利者から受け取ったハッシュ値Ｈと一致するかどうか検査する。ここで、制御プロセッサ２の計算したハッシュ値Ｈ’も、“９ａａ８ｂ７ｂ３ｃ・・・ｄｂａ”であれば、制御プロセッサ２は、ステップＳ４３にて、図１０に示した更新モジュールＭからモジュール５１を取り出し、ハッシュ値テーブル（図４）にそのモジュールが存在するかどうかを確認する（ステップＳ４４）。
【００８６】
ステップＳ４４では、モジュール５１に相当するモジュールが図４のハッシュ値テーブルにＣとして存在している。そこで、ステップＳ４５にて、更新モジュールＭから更新前ハッシュ値５３を取り出し、ハッシュ値テーブル（図４）の該当するハッシュ値と一致するかどうか確認する（ステップＳ４６）。ここでは、“９ａａ８ｂ７ｂ３ｃ・・・ｄｂａ”として一致しているとする。
【００８７】
ステップＳ４７において、更新モジュールＭから更新後のハッシュ値５４を取り出す。例えば、更新後のハッシュ値は“ｆ９ｂ１８ｄ３４８・・・２３４９ａ”であったとする。次に、更新モジュールＭから新システムモジュール５５としてＣを取り出し（ステップＳ４８）、更新モジュールＭのアルゴリズム５２を用いて、ハッシュ値を計算する（ステップＳ４９）。ここでの計算によるハッシュ値も“ｆ９ｂ１８ｄ３４８・・・２３４９ａ”であったとする。
【００８８】
そして、ステップＳ４９の演算の結果とステップＳ４７で取り出した更新後ハッシュ値の一致をステップＳ５０にて確認し、システムモジュールＣを更新し（ステップＳ５１）、ハッシュ値テーブルを更新する（ステップＳ５２）。これにより、図１２に示すように、システムモジュールＣの更新後のハッシュ値テーブルが得られる。
【００８９】
このように、ネットワーク接続型電子機器１の第４実施例は、図３に示すように、暗号演算回路１１、ＩＰＬ用ＲＯＭ１２、制御プロセッサ固有の秘密鍵１３、ハッシュ値テーブル用メモリ１４を一体に１チップ化している。ハッシュ値テーブルメモリ１４には、前記電子機器の起動フロー中に、外部メモリからハッシュ値テーブルが書き込まれ、動作中はそのまま制御プロセッサ２に一体化されたハッシュ値テーブル用メモリ１４に格納されることになる。そして、この第４実施例は、システムモジュールの権利者が作成したシステムモジュールを更新するという処理を行うとき、システムモジュールを更新する権利をチェックし、更新する権利を有するシステムモジュールだけを正確に判断し、更新を実行することができる。セキュアな状態を維持したままでの更新が可能となるので、システムモジュールの更新後にシステムを起動しても、システムは悪意を持った改ざんなどを受けていない信頼できるソフトウェア群によって動作していると信頼することができる。また、その後に使用されるアプリケーション等についても、それが改ざんされたり、或いは、置き換えられたりといったような、使用者、或いは管理者が意図しない変更を加えられていないことを認証する際の根拠として、このシステムを利用することができる。
【００９０】
次に、ネットワーク接続型電子機器１の第５実施例について説明する。この第５実施例も前記図１に示すように、制御プロセッサが内部バス３を介してＲＯＭ４、ＲＡＭ５、入力／出力インターフェース（Ｉ／Ｏ用Ｉ／Ｆ）６、及びネットワークＩ／Ｆ７と接続している構成である。ただし、前記第３実施例と同様に前記制御プロセッサ２に代わり、図７に示す制御プロセッサ３０を用いる。そして、この制御プロセッサ３０は、システムモジュールの権利者が作成したシステムモジュールを更新するという処理を行うものである。
【００９１】
図１３には、システムモジュールの権利者が作成する更新モジュールを示す。モジュール７１、新システムモジュール７２によって構成される。
【００９２】
システムモジュールの権利者は、自身の秘密鍵ＳＭを用いて、先の更新モジュールの署名Ｄを計算する。例えば、更新モジュールをＭとすると、
Ｄ＝ＤＳＡ（ＳＭ、Ｍ）
といった演算を行う。秘密鍵ＳＭは、制御プロセッサ３０に含まれる権利者公開鍵証明書３５の公開鍵に対応する秘密鍵である。システムモジュールの権利者は、更新モジュールＭと署名Ｄを前記電子機器１に与える。
【００９３】
図１４は第５実施例におけるシステムモジュール更新時の処理手順を示す図である。システムモジュールの更新が行われるのは前記電子機器１が起動してからであるため、起動時に、ＣＡ公開鍵証明書の検査、権利者公開鍵証明書の検査が行われている。よってここでは同様の処理を省略しているが、省略せずに同様の検査を行ってもよい。その場合は、ステップＳ６１の前に、図９のステップＳ２１からステップＳ２５の処理を行う。
【００９４】
図１４において、先ず、更新モジュールＭ、署名Ｄ、権利者公開鍵を読み込む（ステップＳ６１）。次に署名Ｄの検証を行う（ステップＳ６２）。署名の検証は、前記署名生成のアルゴリズムに対応する検証アルゴリズムを用いる。署名が正しくなければ、エラー処理、例えば、「アップデートに失敗しました」などのメッセージを出力して停止するか、或いはエラーコードを出力して停止する。
【００９５】
ステップＳ６２にて更新モジュールをチェックし、署名が正しい場合、更新モジュールＭからモジュール７１を取り出し（ステップＳ６３）、図８に示したシステムモジュール一覧にそのモジュールが存在するかどうかを確認する（ステップＳ６４）。存在しない場合はエラー処理を行う。
【００９６】
ステップＳ６４でのモジュールの存在確認において、存在していた場合、更新モジュールＭから新システムモジュールを取り出し（ステップＳ６５）、新システムモジュールの署名を検証する（ステップＳ６６）。署名が正しくなければエラー処理を行う。ステップＳ６６にて署名が正しいと判断した場合、システムモジュールを更新する（ステップＳ６７）。
【００９７】
このように、ネットワーク接続型電子機器１の第５実施例は、図７に示すように、ＣＡの公開鍵証明書３４、権利者の公開鍵証明書３５を制御プロセッサ３０内に格納し、システムモジュール一覧と、システムモジュールに、モジュールの権利者（モジュール作成者、モジュール配布者、電子機器製造者などのいずれか）によって付加されている公開鍵基盤（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ：ＰＫＩ）ベースの電子署名を検証するのに用いる。そして、この第５実施例は、システムモジュールの権利者が作成したシステムモジュールを更新するという処理を行うとき、オブジェクトを更新する権利をチェックし、権利を有するオブジェクトだけを正確に判断し、更新を実行することができる。セキュアな状態を維持したままでの更新が可能となるので、システムモジュールの更新後にシステムを起動しても、システムは悪意を持った改ざんなどを受けていない信頼できるソフトウェア群によって動作していると信頼することができる。また、その後に使用されるアプリケーション等についても、それが改ざんされたり、或いは、置き換えられたりといったような、使用者、或いは管理者が意図しない変更を加えられていないことを認証する際の根拠として、このシステムを利用することができる。
【００９８】
さらに、この第５実施例のような方式であれば、複数のシステムモジュールの権利者が存在することを許すことができる。複数のシステムモジュールの権利者が存在する場合は、システムモジュールの権利者の数だけその公開鍵証明書を制御プロセッサ３０内部に記録しておけばよい。
【００９９】
ところで、ネットワーク接続型電子機器１の第１実施例、第２実施例及び第４実施例では、図３に示す構成において、ハッシュ値テーブル用メモリ１４に、予め又は機器起動中に、ハッシュ値テーブルを書き込んでいた。このハッシュ値テーブルを用いて、前記電子機器１を起動する際に、利用するシステムモジュールの完全性（Ｉｎｔｅｇｒｉｔｙ）の検査を実施することにより、正しいモジュールによって起動することを保証し、セキュアな状態での前記電子機器１の起動を行っている。このシステムモジュールの完全性の検査のためには、前記電子機器１にて利用する全モジュールのハッシュ値が必要となる。しかしながら、ハッシュ値テーブル用メモリ１４の限られたメモリ資源において、全モジュールのハッシュ値を記録することは困難である場合がある。
【０１００】
そこで、ハッシュ用テーブルメモリ１４が有限である前記電子機器において、システムモジュールのハッシュ値を管理する場合、複数のシステムモジュールをまとめて一つのシステムモジュールと見なすことにより、システムモジュールが増大したとしてもハッシュ値テーブルを限られたメモリの中で管理することができる。
【０１０１】
以下、システムモジュールが、非圧縮の場合について説明する。図１５は、システムモジュールを一意に定めるモジュールＩＤ８１と、モジュール名８２を示している。モジュールＩＤ８１が”１、２、３、４、５、６、７”であるシステムモジュールの名前が、”Ａ、Ｃ、Ｇ、Ｄ、Ｂ、Ｆ、Ｅ”であることを示している。ここでは明示的にシステムモジュール名８２を示しているが、利用対象物内で識別できるもの、例えば、システムモジュールが記録されているアドレスなどであってもよい。
【０１０２】
図１６は、各モジュールごとのハッシュ値を示している。ハッシュ値ごとのＩＤ９１とシステムモジュール９２、ハッシュ値を導出するアルゴリズム９３、ハッシュ値９４によって構成される。ここではアルゴリズム９３としてアルゴリズム名を示しているが利用対象内で識別できるもの、例えば、アルゴリズムを呼び出す命令などであってもよい。この図１６において、例えば、ハッシュ値のＩＤが５の場合、それは図１５のシステムモジュールＩＤが５、すなわちシステムモジュール名がＢであるものをアルゴリズム「ＳＨＡ１」によってハッシュ値を導出し、その結果が１６進数で「８ｄ３４ｆｂａ０１ｂ８８ｄａ３ｆ９ｅａｃ０３９４ｂｄ４ｂｃａ８４ｄａ９４ａｂｄａ」であることを意味する。
【０１０３】
図１５、図１６の状態のとき、二つのモジュールＳ，Ｐが追加された場合について図１７を用いて説明する。新たに、システムモジュールＩＤ８１が８でシステムモジュール名８２がＳのシステムモジュールと、システムモジュールＩＤ８１が９でシステムモジュール名８２がＰのシステムモジュールが追加されている。図１８には、図１７の各モジュールごとのハッシュ値を示す。単純に、ＩＤ９１が８と９という下２行が増えている。
【０１０４】
図１８に示した情報を圧縮したものが図１９である。図１８に対して図１９では、システムモジュールＩＤ１０２が４と５、７と８が統合されてハッシュ値１０４が計算されている。統合したことにより図１９と図１６は見かけ上同じサイズとなる。ここで見かけ上としたのは、図１９のシステムモジュールＩＤ１０２の部分に統合した分の情報が付加していることを考慮していないからである。
【０１０５】
どの部分を統合するかは、連続するシステムモジュールＩＤを複数個、連続しないシステムモジュールＩＤを複数個のどちらかであってもよく、またいくつ統合してもよい。
【０１０６】
また、統合する方法は、ここでは複数個のシステムモジュールを一つのシステムモジュールと見なしてハッシュ値を計算している。すなわち、通常、ハッシュ値＝ハッシュ関数（システムモジュール１個）としている部分を、
ハッシュ値＝ハッシュ関数（モジュール｜モジュール｜・・｜モジュール）
としてハッシュ値を計算する。記号「｜」は連接を意味している。
【０１０７】
図２０は、ハッシュ値表を更新する処理のフロー図である。システムモジュールが追加（ステップＳ７１）された場合、システムモジュール表を更新（ステップＳ７２）する。これは図１５から図１８への追加である。次にシステムモジュールを追加したことにより、メモリが限界に達するかどうかを確認（ステップＳ７３）する。これは、追加したシステムモジュールの個数ｎとシステムモジュール１個あたり消費するメモリ量ｙによって
ｎｙ
だけ増加することから、現在のメモリ使用量ｍ、メモリに限界値Ｍとすると、
Ｍ＞ｍ＋ｎｙ  （１）
が成立するかどうかを計算する。式（１）が成立する場合、追加したシステムモジュールのハッシュ値を計算（ステップＳ７５）する。これは、図１８に対応する。式（１）が成立しない場合、システムモジュールＩＤを統合（ステップＳ７４）する。これは図１９の（１０２）の部分にあたる。その後、ハッシュ値を計算（ステップＳ７５）する。これは、図１９に対応する。
【０１０８】
次に、複数個のシステムモジュールを圧縮して一つと見なした場合について述べる。図２１は、図１７に示した例と同様に、図１５にシステムモジュールＰとシステムモジュールＳを追加したものである。図２１のシステムモジュールＩＤ１１１が４の場合、システムモジュールＤとシステムモジュールＢが統合されていることを意味する。同様にシステムモジュールＩＤが６の場合、システムモジュールＥとシステムモジュールＳが統合されていることを意味する。図２２は、このときの各モジュールのハッシュ値を示している。システムモジュールＩＤとハッシュ値ごとのＩＤ１２１は１対１対応を採るために、図２２にはシステムモジュールＩＤは必要としない。結果的に、前記例よりも保持すべき情報は図２２のシステムモジュールＩＤ分だけ少なくなる。
【０１０９】
どの部分を統合するかは、連続するシステムモジュールＩＤを複数個、連続しないシステムモジュールＩＤを複数個のどちらであってもよく、またいくつ統合してもよい。図２２の例では、図１７におけるシステムモジュールＩＤが４と５，７と８を統合している。
【０１１０】
複数個のシステムモジュールを統合する方法は、単純にシステムモジュールを統合する方法、システムモジュールを圧縮しつつ統合する方法がある。
【０１１１】
図２３は、ハッシュ値表を更新する処理のフロー図である。システムモジュールが追加（ステップＳ８１）された場合、システムモジュール表を更新（ステップＳ８２）する。これは図１５から図１８への追加である。次にシステムモジュールを追加したことにより、メモリが限界に達するかどうかを確認（ステップＳ８３）する。これは、前記例と同様の計算式（１）を用いる。式（１）が成立する場合、追加したシステムモジュールのハッシュ値を計算（ステップＳ８５）する。これは、図１８に対応する。式（１）が成立しない場合、システムモジュールを統合（ステップＳ８４）する。これは、図２１の（１１２）の部分に対応する。その後、ハッシュ値を計算（ステップＳ８５）する。これは、図２２に対応する。
【０１１２】
以下には、メモリ効率利用の効果について説明する。前述したように、システムモジュールのハッシュ値を管理する場合、複数のシステムモジュールをまとめて一つのシステムモジュールと見なすことにより、メモリを効率よく利用することができるだけでなく、統合することにより、あるシステムモジュールに対する改ざん攻撃を行うことが難しくなる。これは、どのシステムモジュールを統合しているかの情報を入手しなければ、事実上、改ざんできないからである。
【０１１３】
なお、ハッシュ値テーブルの実装において、ハッシュ計算の対象となる全てのシステムモジュールをテーブルの段数にあわせて区分けすることになるが、この分け方は、計算速度や効率を考慮して設計されなければならない。考慮すべき点として、
（ａ）ハッシュテーブルの各段のハッシュ値計算に含まれるシステムモジュールのサイズの合計を各段で同程度にする。
（ｂ）同じハッシュ値計算に含まれる各システムモジュールは、論理的に、或いは物理的に近い位置にあり、ファイルアクセス時間の総計が効率的であるようにする。
（ｃ）ハッシュ値計算に含まれるシステムモジュール数を、ハッシュテーブル各段でほぼ同じになるようにする。
といったことが想定されるが、どの条件を優先するかは機器の能力や用途、構造等に応じて決めればよい。
【０１１４】
【発明の効果】
本発明によれば、ＯＳと独立した処理を実現するために必要なデータ、アルゴリズムをセキュアな状態で保存し、制御部内にてセキュアな状態でソフトウェアの認証処理を正しく実行することができる。また、システムモジュールの更新をセキュアな状態で行うことができる。
【図面の簡単な説明】
【図１】ネットワーク接続型電子機器の第１実施例のブロック図である。
【図２】認証の連鎖を説明するための図である。
【図３】制御プロセッサの構成を示す図である。
【図４】ハッシュテーブルを示す図である。
【図５】ネットワーク接続型電子機器の第１実施例の起動時の処理手順を示すフローチャートである。
【図６】ネットワーク接続型電子機器の第２実施例の起動時の処理手順を示すフローチャートである。
【図７】ネットワーク接続型電子機器の第３実施例を構成する制御プロセッサを示す図である。
【図８】システムモジュール一覧を示す図である。
【図９】ネットワーク接続型電子機器の第３実施例の起動時の処理手順を示すフローチャートである。
【図１０】ネットワーク接続型電子機器の第４実施例が更新する更新モジュールを示す図である。
【図１１】ネットワーク接続型電子機器の第４実施例の起動時の処理手順を示すフローチャートである。
【図１２】システムモジュールの更新後のハッシュ値テーブルを示す図である。
【図１３】システムモジュールの権利者が作成する更新モジュールを示す図である。
【図１４】ネットワーク接続型電子機器の第５実施例の起動時の処理手順を示すフローチャートである。
【図１５】システムモジュールを一意に定めるモジュールＩＤと、システムモジュール名を示す図である。
【図１６】各システムモジュールごとのハッシュ値を示している図である。
【図１７】二つのシステムモジュールＳ，Ｐが追加された場合のシステムモジュールＩＤと、システムモジュール名を示す図である。
【図１８】前記図１７の各モジュールごとのハッシュ値を示す図である。
【図１９】前記図１８に示した情報を圧縮したハッシュ値を示す図である。
【図２０】ハッシュ値表を更新する処理手順を示すフローチャートである。
【図２１】前記図１５にシステムモジュールＰとシステムモジュールＳを追加した場合のシステムモジュールＩＤと、システムモジュール名を示す図である。
【図２２】システムモジュールＩＤ分だけ少なくなったハッシュ値表を示す図である。
【図２３】ハッシュ値表を更新する処理手順を示すフローチャートである。
【符号の説明】
１  ネットワーク接続型電子機器、２  制御プロセッサ、１１  暗号演算回路、１２  ＩＰＬ用ＲＯＭ、１３  秘密鍵、１４  ハッシュ値テーブル用メモリ、３０  制御プロセッサ、３１  暗号演算回路、３２  ＩＰＬ用ＲＯＭ、３３  秘密鍵、３４  ＣＡ公開鍵証明書、３５  権利者公開鍵証明書
【図１】
2004280284.tif 000003
【図２】
2004280284.tif 000004
【図３】
2004280284.tif 000005
【図４】
2004280284.tif 000006
【図５】
2004280284.tif 000007
【図６】
2004280284.tif 000008
【図７】
2004280284.tif 000009
【図８】
2004280284.tif 000010
【図９】
2004280284.tif 000011
【図１０】
2004280284.tif 000012
【図１１】
2004280284.tif 000013
【図１２】
2004280284.tif 000014
【図１３】
2004280284.tif 000015
【図１４】
2004280284.tif 000016
【図１５】
2004280284.tif 000017
【図１６】
2004280284.tif 000018
【図１７】
2004280284.tif 000019
【図１８】
2004280284.tif 000020
【図１９】
2004280284.tif 000021
【図２０】
2004280284.tif 000022
【図２１】
2004280284.tif 000023
【図２２】
2004280284.tif 000024
【図２３】
2004280284.tif 000025