(57)【特許請求の範囲】
【請求項１】
セキュアブート装置が、完全性を検証しながら複数のコンポーネントを予め定められた順序で実行するセキュアブート方法であって、
前記セキュアブート装置は、状態格納部と、判断部と、抑制部と、更新部と、決定部と、ブート部とを備え、
前記複数のコンポーネントは、それぞれを識別する論理識別子を有し、
前記状態格納部には、前記複数のコンポーネントのうち、ブートされようとした１以上のコンポーネントのそれぞれのブートが成功したか否かを示す情報である現在の状態情報が格納されてあり、
前記セキュアブート方法は、前記判断部が、前記複数のコンポーネントのうちの１つのである第１コンポーネントが破損しているか否かを判断し、
前記抑制部が、前記第１コンポーネントが破損したと判断された場合、前記第１コンポーネントのブートを抑制し、
前記更新部が、前記第１コンポーネントのブートが抑制された場合、前記第１コンポーネントのブートが成功しなかったことを示すように前記現在の状態情報を更新し、
前記決定部が、前記第１コンポーネントのブートが成功したか否かと、前記第１コンポーネントより前にブートされようとした１つ以上のコンポーネントのそれぞれのブートが成功したか否かとの組み合わせのそれぞれに対し、前記複数のコンポーネントのうちの次にブートすべきコンポーネントの論理識別子を対応付けた第１マッピングテーブルを用いて、前記現在の状態情報に合致する組み合わせに対応付けられた、次にブートすべきコンポーネントの論理識別子を、前記第１マッピングテーブルから取得し、取得した前記論理識別子が示すコンポーネントを、次にブートされる第２コンポーネントと決定し、
前記ブート部が、前記第２コンポーネントのブートを開始する
セキュアブート方法。
【請求項２】
前記セキュアブート装置は、さらに、取得部を備え、
完全性測定証明書は、コンポーネントが破損しているか否かを判断するために用いられる完全性測定値を含み、
前記取得部が、前記複数のコンポーネントのそれぞれを識別する論理識別子と、対応するコンポーネントの前にブートされようとした１つ以上のコンポーネントのそれぞれのブートが成功したか否かを示す期待状態情報と、当該完全性測定値に対応する論理識別子によって識別されるコンポーネントが破損しているかを判断するための完全性測定値を含む完全性測定証明書とが互いに対応付けられた第２マッピングテーブルを探索することで、完全性測定証明書を取得し、
前記取得部が、取得された完全性測定証明書から前記完全性測定値を抽出し、
前記判断部によって行われる、前記第１コンポーネントが破損しているか否かの判断は、前記第１コンポーネントの検証値を算出し、算出された検証値を、前記取得された完全性測定証明書に含まれる前記完全性測定値と比較することで、実行される 
請求項１記載のセキュアブート方法。
【請求項３】
前記判断部によって行われる、前記第１コンポーネントが破損しているか否かの判断は、前記第１コンポーネントのブートを開始した後に実行され、
前記抑制部によって行われる前記ブートの抑制では、前記第１コンポーネントのブートが、前記第１コンポーネントが破損していると判断された場合に中止される
請求項１記載のセキュアブート方法。
【請求項４】
完全性を検証しながら複数のコンポーネントを予め定められた順序で実行するセキュアブート装置であって、
前記複数のコンポーネントは、それぞれを識別する論理識別子を有し、
前記セキュアブート装置は、
前記複数のコンポーネントのうち、ブートされようとした１以上のコンポーネントのそれぞれのブートが成功したか否かを示す情報である現在の状態情報を格納する状態格納部と、
前記複数のコンポーネントのうちの１つのである第１コンポーネントが破損しているか否かを判断する判断部と、
前記第１コンポーネントが破損したと判断された場合、前記第１コンポーネントのブートを抑制する抑制部と、
前記第１コンポーネントのブートが抑制された場合、前記第１コンポーネントのブートが成功しなかったことを示すように前記現在の状態情報を更新する更新部と、
前記第１コンポーネントのブートが成功したか否かと、前記第１コンポーネントより前にブートされようとした１つ以上のコンポーネントのそれぞれのブートが成功したか否かとの組み合わせのそれぞれに対し、前記複数のコンポーネントのうちの次にブートすべきコンポーネントの論理識別子を対応付けた第１マッピングテーブルを用いて、前記現在の状態情報に合致する組み合わせに対応付けられた、次にブートすべきコンポーネントの論理識別子を、前記第１マッピングテーブルから取得し、取得した前記論理識別子が示すコンポーネントを、次にブートされる第２コンポーネントと決定する決定部と、
前記第２コンポーネントのブートを開始するブート部とを備える
セキュアブート装置。
【請求項５】
完全性測定証明書は、コンポーネントが破損しているか否かを判断するために用いられる完全性測定値を含み、
前記セキュアブート装置は、さらに、取得部を備え、
前記取得部は、前記複数のコンポーネントのそれぞれを識別する論理識別子と、対応するコンポーネントの前にブートされようとした１つ以上のコンポーネントのそれぞれのブートが成功したか否かを示す期待状態情報と、当該完全性測定値に対応する論理識別子によって識別されるコンポーネントが破損しているかを判断するための完全性測定値を含む完全性測定証明書とが互いに対応付けられた第２マッピングテーブルを探索することで、完全性測定証明書を取得し、取得された完全性測定証明書から第１完全性測定値を抽出し、
前記判断部は、前記第１コンポーネントの検証値を算出し、算出された検証値を、前記取得された完全性測定証明書に含まれる前記完全性測定値と比較することで、前記第１コンポーネントが破損しているか否かを判断する
請求項４記載のセキュアブート装置。
【請求項６】
前記判断部は、前記第１コンポーネントのブートを開始した後に、前記第１コンポーネントが破損しているか否かを判断し、
前記抑制部は、前記第１コンポーネントが破損していると判断された場合に、前記第１コンポーネントのブートを中止する
請求項４記載のセキュアブート装置。
【請求項７】
完全性を検証しながら複数のコンポーネントを予め定められた順序で実行するセキュアブート方法をコンピュータからなるセキュアブート装置に実行させるコンピュータ読み取り可能な媒体に記録されたプログラムであって、
前記セキュアブート装置は、状態格納部と、判断部と、抑制部と、更新部と、決定部と、ブート部とを備え、
前記複数のコンポーネントは、それぞれを識別する論理識別子を有し、
前記状態格納部には、前記複数のコンポーネントのうち、ブートされようとした１以上のコンポーネントのそれぞれのブートが成功したか否かを示す情報である現在の状態情報が格納されてあり、
前記プログラムは、
前記判断部が、前記複数のコンポーネントのうちの１つである第１コンポーネントが破損しているか否かを判断し、
前記抑制部が、前記第１コンポーネントが破損したと判断された場合、前記第１コンポーネントのブートを抑制し、
前記更新部が、前記第１コンポーネントのブートが抑制された場合、前記第１コンポーネントのブートが成功しなかったことを示すように前記現在の状態情報を更新し、
前記決定部が、前記第１コンポーネントのブートが成功したか否かと、前記第１コンポーネントより前にブートされようとした１つ以上のコンポーネントのそれぞれのブートが成功したか否かとの組み合わせのそれぞれに対し、前記複数のコンポーネントのうちの次にブートすべきコンポーネントの論理識別子を対応付けた第１マッピングテーブルを用いて、前記現在の状態情報に合致する組み合わせに対応付けられた、次にブートすべきコンポーネントの論理識別子を、前記第１マッピングテーブルから取得し、取得した前記論理識別子が示すコンポーネントを、次にブートされる第２コンポーネントと決定し、
前記ブート部が、前記第２コンポーネントのブートを開始する
ように前記セキュアブート方法を前記セキュアブート装置に実行させるプログラム。
【請求項８】
完全性を検証しながら複数のコンポーネントを予め定められた順序で実行する集積回路であって、
前記複数のコンポーネントは、それぞれを識別する論理識別子を有し、
前記集積回路は、
前記複数のコンポーネントのうち、ブートされようとした１以上のコンポーネントのそれぞれのブートが成功したか否かを示す情報である現在の状態情報を格納する状態格納部と、
前記複数のコンポーネントのうちの１つのである第１コンポーネントが破損しているか否かを判断する判断部と、
前記第１コンポーネントが破損したと判断された場合、前記第１コンポーネントのブートを抑制する抑制部と、
前記第１コンポーネントのブートが抑制された場合、前記第１コンポーネントのブートが成功しなかったことを示すように前記現在の状態情報を更新する更新部と、
前記第１コンポーネントのブートが成功したか否かと、前記第１コンポーネントより前にブートされようとした１つ以上のコンポーネントのそれぞれのブートが成功したか否かとの組み合わせのそれぞれに対し、前記複数のコンポーネントのうちの次にブートすべきコンポーネントの論理識別子を対応付けた第１マッピングテーブルを用いて、前記現在の状態情報に合致する組み合わせに対応付けられた、次にブートすべきコンポーネントの論理識別子を、前記第１マッピングテーブルから取得し、取得した前記論理識別子が示すコンポーネントを、次にブートされる第２コンポーネントと決定する決定部と、
前記第２コンポーネントのブートを開始するブート部とを備える
集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアブートを実行するシステムにおいて、オプショナルな又は失敗コンポーネントをサポートするシステムに関する。
【背景技術】
【０００２】
例えば、Trusted Computing Group (TCG) のMobile Trusted Module (MTM) documents TCG Mobile Reference Architecture version 1.0 12 June 2007（非特許文献１）およびTCG Mobile Trusted Module Specification version 1.0 12 June 2007（非特許文献２）のようなイニシアチブは、装置をどのようにして、保証され、また、信頼された方法で起動させるかを記述している。これらの方法は、信頼性や安全性がブートプロセスの間保持されるということを確実にするため完全に見直されてきており、その結果、安全にブートができる装置の実装を要求する人々に有用な基準を提供する。このセキュアブートプロセスのキーコンポーネントは、RIM証明書である。これは、現在期待されるプラットフォームの状態がどのようなものであるべきかを定義する署名構造である。プラットフォームの状態は、それぞれが一般に定義されたハッシュ値を含むプラットフォーム設定レジスタ(PCRs)の集合に対するハッシュによって表される。これらのレジスタは完全性測定（integrity measurement）として用いられるものであり、期待される装置の状態を定義するためにRIM証明書に記録されていても良い。さらに、RIM証明書は、また、もし現在の状態が検証される場合に、拡張されるべきレジスタを特定する。この拡張の処理では、指定されたレジスタの値を取得し、RIM証明書内で定義される新たな既知の値と以前のレジスタ値とを連結させた値に基づいて新たなハッシュ値を計算する。TCGによって定義される典型的なセキュアブートシーケンスは、コアコンポーネントの初期化および自己検証から開始する。ここで、コアコンポーネントとは、検証及び測定(RTV+RTM)、MTM自体や結合されたコアMTMインタフェースなどの信頼性のルートである。次に、ファームウェアの他の部分をサポートする追加コンポーネントが、信頼された方法で起動される。ここで信頼された方法とは、例えば、各追加コンポーネントが、各追加コンポーネントの起動時に、先にブートされた他のコンポーネントによって検証されることである。そして、最後に、オペレーティングシステムが、クライアントアプリケーションに対して、MTMサービスへとアクセスする安全で信頼されたパスを提供するために起動される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２００５／０１３８４１４号明細書
【非特許文献】
【０００４】
【非特許文献１】TCG Mobile Reference Architecture version 1.0 12 June 2007
【非特許文献２】TCG Mobile Trusted Module Specification version 1.0 12 June 2007
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、仕様書は、完全に成功するか失敗するかのどちらかの結果にしかならない単一の制御パスのみを提供しており、融通の利かない内容となっている。言い換えると、もし１つのコンポーネントのブートプロセスが失敗すると、他のコンポーネントの全ては、たとえ、そのコンポーネント自身のブートプロセスが成功していたとしても使用されないこととなる。
【０００６】
さらに、TCG仕様書は、携帯電話などの携帯端末でリソースが限られていることを、監査し、確認する機能を提供している。仕様書では、これらの監査の形態はMTMではオプショナルであると定義されているが、これには下記に示す問題を生じる。上述したように、この機構はオプショナルに過ぎないが、この機構に対するブートプロセスが失敗すると、携帯電話の全てのコンポーネントが使用できなくなる。さらに、この形態は実装されることを必要とされないにも関わらず(というのもオプショナルなため)、この形態を実装しなくては、検証が常に失敗することとなる。これは、他のプロセスに対して、ブートプロセス中でなぜ若しくはどこで失敗があったのかを検出することをより難しくする。さらに、装置製造者は、所定の信頼されたコンポーネントをオプションとして提供することを望むことがある。
【０００７】
さらに多くの市場では、ユーザが現在サービス契約していない、若しくは、現在のサービス契約の場所の外にある携帯電話からでも緊急電話をできるようにするという、サービスプロバイダへの法的な要求がある。MTMを備えた電話では、証明書がリボークされたり、重要でないコンポーネントのデータ破損があった場合、全く操作できない電話となってしまうため、この法的な要求に応えることができない。
【０００８】
ジマーらによる米国特許出願公開第２００５／０１３８４１４号明細書（特許文献１）では、オプショナルなコンポーネントの様々なブート方法が開示されているが、オプショナルなコンポーネントは、明示的なスイッチに応じて実装されている：例えば、コンポーネントプログラムファイルの破損、若しくは、ハードウェアの初期化の失敗のようなオプショナルなコンポーネントを処理するときに生じるエラーをどのように処理するかということを考慮していない。
【０００９】
従って、必要なことは、TCG携帯電話ワーキンググループによって定義されるセキュアブートの状況内でオプショナルなコンポーネントをサポートする方法であり、たとえいくつかのRIM証明書(RIM Cert/RIM Certs)がリボークされ、若しくは、コンポーネントが機能していなくても、少ない機能で動作する方法であり、また、セキュアブートが終了した後、MTMの状態を決定する、より簡単な、リソース負荷のより少ない方法である。
【００１０】
従来技術では、単一の定義されたシーケンスに応じてブートする方法を述べているが、そこでは、もし１つの必須でないコンポーネントが失敗若しくは存在しないなら、何をするのかを提案していない。さらに、失敗の状態は、セキュアブート全体で記録されるのみであり、各個別のコンポーネントごとに記録されていない。結果として、RIM証明書が必要とされる箇所の各役割のうち、たった一つしか用いることができない。
【課題を解決するための手段】
【００１１】
そのため、ブートされている装置の安全性や信頼性を保持しつつ、セキュアブートに関する複数の実行シーケンスを定義することで、オプショナルかつ失敗したコンポーネントのために装置をサポートすることのできるシステムや方法については、満たされないニーズがあり、このようなシステムや方法を得ることは大いに役立つことである。
【００１２】
さらに、上記に加えて、セキュアブートシステム内の各個別のコンポーネントの成功若しくは失敗を記録することで、ユーザがセキュアブートが完了した後に安全な環境の状態を決定できるシステムや方法に関して満たされていない要求があり、このようなシステムや方法を得ることは大いに役立つことである。
【００１３】
さらに、上記に加えて、各役割ごとに複数のRIM 証明書を使用することで装置の安全性や信頼性を保持する一方、オプショナルなコンポーネントをサポートできるようにするシステムや方法については、満たされていない要求があり、このようなシステムや方法を得ることは大いに役立つことである。
【００１４】
本発明に係る好ましい実施の形態においては、各個別のコンポーネントの成功若しくは失敗は、全ての他の信頼コンポーネントによって利用できるテーブル内に記録される。
【００１５】
本発明の別の好ましい実施の形態においては、複数の実行シーケンスは、所定のコンポーネントが失敗した後に実行すべき代替コンポーネントを記述するテーブル内に記述される。このテーブルは、失敗したモジュールや、以前に実行した、若しくは、失敗したコンポーネントの状態に関する識別子の組み合わせを用いて索引が付けられる。
【００１６】
本発明の別の好ましい形態においては、各個別のコンポーネントが以前に実行した、若しくは、失敗したコンポーネントの状態に応じて正確に検証するために、各コンポーネントは、コンポーネントを実行する前に明らかにしなくてはならない様々な有効な前提条件を記述する複数のRIM証明書を有する。
【発明の効果】
【００１７】
本発明によれば、信頼性及び安全性を確保したブートプロセスにおいて、１つのコンポーネントのブートプロセスが失敗した場合であっても、失敗に対応したブートプロセスを実行することができる。
【００１８】
２００８年１月３０日に出願された特開２００８−０１９３７９号公報の開示であって、明細書、図面及び特許請求の範囲を含む開示は、その全てが参照として本願に取り込まれる。
【図面の簡単な説明】
【００１９】
本発明のよりよい理解は、後述のより好ましい実施の形態の詳細な記述を以下の図面と共に考察することで、得られることができる。
【図１】図１は、従来技術を表すブロック図を示す。
【図２】図２は、従来のセキュアブートのシーケンスを示す。
【図３】図３は、オプショナルなコンポーネントを有するセキュアブートを表すブロック図を示す。
【図４】図４は、エラー検出及びオプショナルなコンポーネントを有するセキュアブートの追加のシーケンスを示す。
【図５ａ】図５ａは、オプショナルなコンポーネントをサポートするために必要とされるテーブルを表す追加のデータを含むRIM証明書を示す。
【図５ｂ】図５ｂは、RIM証明書に付されるＩＤ−証明書対応テーブルを示す。
【図５ｃ】図５ｃは、RIM証明書に付される次コンポーネントテーブルを示す。
【図６】図６は、本発明に係るオプショナルなコンポーネントを有するセキュアブートを実行する処理のフローチャートを示す。
【図７】図７は、本発明に係るオプショナルなコンポーネントを有するセキュアブートを実行する処理のフローチャートを示す。
【図８】図８は、本発明に係るオプショナルなコンポーネントを有するセキュアブートを実行する処理のフローチャートを示す。
【図９】図９は、本発明に係るオプショナルなコンポーネントを有するセキュアブートを実行する処理のフローチャートを示す。
【図１０】図１０は、本発明における追加機能の処理のフローチャートを示す。
【発明を実施するための形態】
【００２０】
（実施の形態）
本発明は、セキュアブートを実行するシステム内でオプショナル若しくは失敗のコンポーネントをサポートするためのシステムに関する。後述する追加のRIM証明書及びデータテーブルを提供することにより、セキュアブートをサポートする装置の開発者は、起動に失敗したコンポーネントを扱う柔軟さを有するシステムや、セキュアブートの結果である信頼された環境内で、コンポーネントの状態を報告できる装置を生産できる。
【００２１】
セキュアブートをサポートする装置でのオプショナルなコンポーネントを扱うために新たな方法が述べられる。以下では、説明のため、複数の仕様書の詳細が本発明の徹底した理解を提供するために説明される。他の例では、よく知られた構造や装置が、説明を容易にするために、その詳細を説明することなく、ブロック図の形態で示される。しかし、当業者であれば、変形することで、若しくは、これらの具体的な詳細がなくても、本発明を実施できることは明らかである。より好ましい実施の形態の記述は、ここで主張する請求の範囲を限定するものではない。
【００２２】
図１は、従来技術を示す。この図は、信頼エリア100内で例えばRTV+RTM及びMTMインタフェースのようなコア要素が自己検証した後の時間における、ある瞬間でのセキュアブートプロセスの状態をとらえたものである。MTM102は、この信頼エリア100のコアである。しかし、信頼エリア100内の他のキーアイテムとして、セキュアブートが正確に進行しているか否かを示すシステム状態104のフラグ；システム状態104を設定するシステムエラー記録部106；信頼エリア100に追加される次のコンポーネントを立ち上げる責任のあるランチャ108；要求された成功RIM証明書114を調べる認証データベース110がある。これらの成功RIM証明書114は、セキュアブートが完全に成功した時の期待されるプラットフォーム状態を記述する。RIM証明書は、セキュアブートが成功若しくは正確でない結果となったかを確認するために、改竄から保護されるべきである。そのため、それらは、完全性が保護されており、完全性保護112されたデータ項目のセットに入れられる。TCGによって定義されるように、この完全性の保護は、RIM証明書内に署名入りハッシュを埋め込むことにより達成され、これにより、MTM102が改竄を検出することが可能となる。
【００２３】
セキュアブートの目的は、信頼エリア100を、例えば信頼コンポーネント1 116、信頼コンポーネント2 118、信頼コンポーネント3 120のような追加的なコンポーネントまで包含するよう拡張することである。ランチャ108から信頼コンポーネント1 116、信頼コンポーネント2 118、信頼コンポーネント3 120を介する122，124，126で示される点線は、従来技術の一つの側面における通常の実行パスを示す。従来技術の別の側面においては、最終の信頼コンポーネントとしてのオペレーティングシステム(図示せず)と共に、更なる信頼コンポーネントが存在してもよい。信頼コンポーネントを立ち上げるために特定のシーケンスは、セキュアブートシステムの設計によって定義される。
【００２４】
図２は、図１に示す方法における従来のセキュアブートプロセスの結果を示す。ここで、標準的なセキュアブートはMTMから開始し、それから信頼コンポーネント1 116が動作し、信頼コンポーネント2 118、そして、信頼コンポーネント3 120、信頼コンポーネント4 200、信頼コンポーネント5 202、それから最後にオペレーティングシステム204へと制御が移る。信頼コンポーネント2 118、信頼コンポーネント4 200、及び信頼コンポーネント5 202は、信頼コンポーネント1 116、及び信頼コンポーネント3 120により提供される基本的なサービスに加え、さらにオプショナルなサービスを提供するコンポーネントである。成功の場合には、フロー206で示されるように、全てのコンポーネントは動作に成功し、完全に動作している信頼エリア208を利用することができる。しかしながら、フロー210では、信頼コンポーネント4 200がロードに失敗し、そのために失敗状態となることによって信頼エリア212の全てが使用できない。信頼エリアの線図208、212内では、MTMはMTM102を表し、TC1は信頼コンポーネント1 116を表し、TC2は信頼コンポーネント2 118を表し、TC3は信頼コンポーネント3 120を表し、TC4は信頼コンポーネント4 200を表し、TC5は信頼コンポーネント5 202を表し、OSはオペレーティングシステム204を表す。全てのコンポーネントは、MTM102に依存し、またさらに信頼コンポーネント2 118は、信頼コンポーネント1 116に依存し、信頼コンポーネント4 200及び信頼コンポーネント5 202は信頼コンポーネント3 120に依存する。オペレーティングシステム204は、信頼コンポーネント1 116及び信頼コンポーネント3 120に依存する。斜線部分は使用できないコンポーネントを示す。
【００２５】
図３は、図１に示す従来技術に基づく本発明を示す。この図は、例えば信頼エリア100内のRTV+RTM及びMTMインタフェースのようなコア要素が自己検証をした後の時間における、ある瞬間でのセキュアブートプロセスの状態をとらえたものである。MTM102は、この信頼エリア100のコアである。しかし、信頼エリア100内の他のキーアイテムとして、以下のものがある。セキュアブート内のコンポーネントの各々が開始し及び正確に動作しているか否かを示すコンポーネントエラー状態300のフラグ；適切なコンポーネントに関するコンポーネントエラー状態300を設定するコンポーネントエラー記録部302；ＩＤ−証明書対応テーブル306及びコンポーネントエラー状態300に応じて要求された成功RIM証明書114若しくは失敗RIM証明書308を検索する証明書検索部304；これらの失敗RIM証明書308は、セキュアブート中に１以上のコンポーネントが正確に動作するのを失敗した時に期待されるプラットフォーム状態を記述する。次に立ち上げるコンポーネントを選択するための次コンポーネントテーブル312及びコンポーネントエラー状態300を使用する失敗シーケンサ324については、図９で詳細が述べられる。これらRIM証明書114及び308、次コンポーネントテーブル312及びＩＤ−証明書対応テーブル306は、完全性を保護されるべきであり、完全性保護112されたデータ項目のセット内に入れられる。図１で示しているが、完全性保護は、非本質的な特性と言うより、むしろデータの本質的な特性である。また、成功RIM証明書114及び失敗RIM証明書308のフォーマットは、一致するものである；キーとなる違いは、それらがＩＤ−証明書対応テーブル306に応じて割り当てられる役割である；このテーブルに基づく以外、２つの違いを区別することは不可能であり、また、実際、他の箇所で区別する必要はない。
【００２６】
オプショナルなコンポーネントを伴うセキュアブートの目的は、もし可能なら全ての追加的なコンポーネントである、信頼コンポーネント1 116、信頼コンポーネント2 118、及び信頼コンポーネント3 120を包含するよう、信頼エリアを拡張することであるが、もしどれかのコンポーネントが開始を失敗したなら、信頼エリア100はそれらをカバーするようには拡張しない。信頼コンポーネント1 116、信頼コンポーネント2 118、信頼コンポーネント3 120を介する122，124，126で示されるランチャ108からの点線は、従来技術の一つの側面に応じた通常の実行パスを示す。従来技術の別の側面においては、最終の信頼コンポーネントとしてのオペレーティングシステム（図示せず）と共に、更なる信頼コンポーネントが存在してもよい。信頼コンポーネント1 116、失敗シーケンサ324、及び信頼コンポーネント3 120を介する326，328で示される太線は、本発明の一つの側面に応じるものであり、信頼コンポーネント2 118が開始に失敗したら、代わりの実行パスとして有効となる。
【００２７】
図４は、本発明から生じる新たな結果を示す。使用されるコンポーネントは図２で記述されたものであり、成功結果である208は、もちろん一つの妥当な結果である。しかしながら、失敗状態212の代わりに、新たなフロー400では、失敗している信頼コンポーネント4 200を飛び越える（スキップする）ことができ、機能は限定されるが、機能している信頼エリア402を生成するために信頼コンポーネント5 202に続くことができる。同様に、フロー404は、信頼コンポーネント2 118及び信頼コンポーネント5 202の両方が正確な動作に失敗し、機能が限定されるが、別の機能している信頼エリア406を生成する場合を示している。信頼エリアの線図208、402及び406では、TC1は信頼コンポーネント1 116を表し、TC2は信頼コンポーネント2 118を表し、TC3は信頼コンポーネント3 120を表し、TC4は信頼コンポーネント4 200を表し、TC5は信頼コンポーネント5 202を表し、OSはオペレーティングシステム204を表す。全てのコンポーネントはMTMに依存し、また加えて信頼コンポーネント2 118は、信頼コンポーネント1 116に依存し、信頼コンポーネント4 200及び信頼コンポーネント5 202は信頼コンポーネント3 120に依存する。オペレーティングシステム204は信頼コンポーネント1 116及び信頼コンポーネント3 120に依存する。斜線部分は使用できないコンポーネントを示す。
【００２８】
図５ａはRIM証明書500、従来技術により定義されるRIM証明書の拡張である成功RIM証明書114及び失敗RIM証明書308の詳細を示す。オプショナルなコンポーネントのサポートができるようにするため、mapIDtoCertTableSize 504、mapIDtoCertTable 506、nextComponentTableSize 508、nextComponentTable 510が証明書に加えられ、extension Digest 502のエントリは、これらの追加されたデータの暗号法のハッシュ値を含む。この拡張されたRIM証明書の例は１つだけでよく、また実施の形態ではこれらのテーブルをRTV+RTMが自己認証に使用する単一のRIM証明書に付加する。しかし、従来技術のこの側面は、ここでは述べない。
【００２９】
技術分野の当業者は、RIM証明書500を使用することなくmapIDtoCertTable 506及びnextComponentTable 510の完全性を有効にする他の方法、例えば、各テーブルそれぞれ若しくは一緒に署名者及び信頼エリア100の両方に既知の秘密鍵を使用した暗号法の署名など、他の方法があることを理解することができるであろう。
【００３０】
図５ｂは、論理識別子や以前のソフトウェアコンポーネントから実際のRIM証明書までのマッピングを示すデータエントリを伴うmapIDtoCertTable 506のフォーマットを示す。第一列の論理証明書ID520は、RIM証明書のための特定の役割を示す識別子であり、システムの他の部分がRIM証明書を要求するために使用する識別子である。第二列の依存する信頼コンポーネントの状態522は、どの信頼コンポーネントエラー状態のセットに、各列が関するかを示すフラグのセットである。第三列の依存する信頼コンポーネントのマスク524は、どのコンポーネントが状態をチェックされたかを示すフラグのセットである。実施の形態では、これらの２つの列は、ビットマップを使用して実装される。最後に、RIM証明書ラベル526の列は、RIM証明書データベースから成功RIM証明書114若しくは失敗RIM証明書308を検索するために使用される実際のRIM証明書ラベルを保持する。この値は、TCGで定義されるRIM証明書のラベルフィールド512を表す。
【００３１】
図５ｃは、サンプルのデータエントリを伴うnextComponentTable 510のフォーマットを示す。第一列の失敗した信頼コンポーネント540は、失敗したコンポーネントを示す識別子である。第二列の依存する信頼コンポーネントの状態542は、どの信頼コンポーネントエラー状態300のセットが、現在の列に関するかを示すフラグのセットである。第三列の依存する信頼コンポーネントのマスク544は、どのコンポーネントが状態をチェックされたかを示すフラグのセットである。実施の形態では、これらの２つの列は、ビットマップを使用して実装される。最後に、立ち上げる信頼コンポーネント546の列は、所定の失敗した信頼コンポーネント540および信頼コンポーネントの状態542のセットについて、次にどのモジュールを立ち上げるべきか、若しくは、セキュアブートが回復できない状態になったためにブートを途中停止させるべきか否かを記述する識別子を保持する。図４を参照するならば、もし信頼コンポーネント1 116若しくは信頼コンポーネント3 120が読み込みに失敗したら、次に立ち上げるべき信頼コンポーネント546がブート中止であることを示すエントリとなる；これは、なぜならこれらの２つのコンポーネントは完全に信頼されたシステムの動作に必要な基本コンポーネントであるためである。もし信頼コンポーネント2 118、信頼コンポーネント4 200若しくは信頼コンポーネント5 202が失敗なら、例えば信頼コンポーネント3 120、信頼コンポーネント5 202及びオペレーティングシステム204それぞれが、次に立ち上げるべき信頼コンポーネント546である、ということを示すエントリがあっても良い。
【００３２】
MapIDtoCertTable 506及びnextComponentTable 510のテーブルの内容は、特定の装置のため要求されるセキュアブートシーケンスの設計によって定義される。上記の実施の形態では、テーブルはRTV+RTMが自己認証に使用するRIM証明書に付されるとして述べているが、TCGによって定義されるRIM証明書発行局(最もありえそうなのは装置製造者)が、これらのテーブルを生成し、データを特定のRIM証明書に追加し、それからその証明書に署名し、そして装置が使用できるようにすると思われる。しかしながら、これらのテーブルは、別のパーティによって生成され、別々にRIM認証局から送られてもよい。さらに、セキュアブートシステムが自身のセキュアブートシーケンスを分析できるなら、セキュアブートシステムが自身でこれらのテーブルを生成するとしてもよい。
【００３３】
これらのテーブルは、どのコンポーネントが別のコンポーネントに依存しているかを示す情報に応じて生成される。もし、コンポーネントAが別のコンポーネントBに依存している場合、コンポーネントAは、コンポーネントBのブート手順が失敗したなら、ブートされるべきではない。そして、もしコンポーネントAがコンポーネントBから独立しているならば、たとえコンポーネントBのブートが成功しなくとも、コンポーネントAのブート手順からブートプロセスを再開することができる。もちろん、これらのテーブルは、より多くの情報に応じて生成されることができる。例えば、それらは、もし別の独立のブート手順が失敗したならば、いくつかのコンポーネントがブートされるべきでないことを示す情報に応じて生成されることができる。この情報は、各コンポーネントの作者によって生成及び提供されることができる。
【００３４】
図６から図９は、本発明に係るセキュアブートシステムのキーとなる箇所の間での制御フローシーケンスを示す。まず、従来技術に応じた図６では、システムは電源オンで開始する(600)。それからシステムの基本ブートの実行が進行し(602)、RTV，RTM，MTM等の初期化を行い(604)、信頼エリア自己検証のためのRIM証明書を要求し(608)、RIM証明書内で特定されるレジスタのサブセットを連結することで、RIM証明書をMTMに拡張し(610)、そして、それらのハッシュを計算し、それから従来技術で述べられるRIM証明書内で記録された値とこのハッシュ値とを比較する。それから、これらのハッシュが等しいならば、RIM証明書内で特定された拡張の値を、RIM証明書内でまた特定されるレジスタに拡張する。拡張動作の結果で、この拡張が正しく動作したかを確認し(612)、そして失敗の場合、システムは失敗状態に入る(614)。ここで、本発明によれば、次コンポーネントテーブル312及びＩＤ−証明書対応テーブル306は、これらの２つのキーテーブルが改竄されていないことを保証するためにそれらの完全性をチェックさせる(616)；実施の形態では、これは図５ａに示される拡張された情報が608で読み出される自己検証に関するRIM証明書に存在する、ということをチェックすることで実行される。しかし、技術分野の当業者であれば、これらのテーブルの提供及びこのデータが改竄されていないことを保証するほかの方法があることを理解することができるだろう。
【００３５】
次に、信頼コンポーネント1の検証のためRIM証明書を要求する過程において(618)、期待される現在の状態及び期待される信頼コンポーネント1 116の状態を示すRIM証明書を得る。この信頼コンポーネントは、RIM証明書に記述されたものと同じ方法で計算されたハッシュ値を信頼コンポーネント1用のハッシュ計算値として有し(620)、それから値が等しいか否かを確認する(622)。もしハッシュ値が等しくないなら、例えば意図しない、若しくは、故意の破損のようにコンポーネントに問題があることを示している。それから、CPUは、失敗シーケンサにエラーを処理させるため(624)、信頼コンポーネント1のハッシュエラーがあったことを示すインジケータとともに、失敗シーケンサに制御を渡す。この過程は下記の図９に示される。もしハッシュ値が等しいならば、コンポーネントエラー記録部は、このコンポーネントのハッシュチェックが成功だったと記録する(626)。この処理は図７に続く。
【００３６】
図７は、セキュアブートシーケンスでの更なる処理を示す。以前に得られたRIM証明書は、このRIM証明書で定義された値を、従来技術と同様、このRIM証明書で定義されたＰＣＲに加えることで、MTM中に拡張される(700)。この拡張が正しく動作したかを確認するため、拡張動作の結果が確認される(702)。もし正しく動作していないなら、失敗シーケンサにエラーを処理させるため、失敗シーケンサに制御を渡す。この処理は後述の図９で述べられている。もしハッシュ値が正確に拡張されているなら、これはコンポーネントが信頼エリアから完全に信頼されることができることを示している。したがって、信頼コンポーネント1が立ち上げられ(706)、この新しいコンポーネントに制御を渡す。
【００３７】
第一プロセスは、コンポーネントやこのコンポーネントが制御するハードウェア等の要求される初期化を実行する、信頼コンポーネントが初期化することである(708)。コンポーネントは初期化の成功を自己確認し(710)、そしてもしエラーが発生していると、信頼コンポーネントは、失敗シーケンサにエラーを処理させるため、現在の信頼コンポーネントが初期化に失敗したことを示すエラーコードとともに、失敗シーケンサに制御を渡す(712)。このプロセスは後述の図９で述べる。もしエラーがなかったなら、コンポーネントエラー記録部は、このコンポーネントの初期化が成功したと記録する(714)。次に、信頼コンポーネントは、期待される現在の状態や所定のレジスタに拡張すべき所定の値が記述されたRIM証明書を得るために、自己検証のためのRIM証明書を要求する(716)。このRIM証明書は、従来技術にしたがって、MTMに拡張され(718)、拡張動作の成功若しくはその他が確認される(720)。もし拡張動作が失敗なら、信頼コンポーネントは、失敗シーケンサにエラーを処理させるため、現在の信頼コンポーネントが自己検証に失敗したことを示すエラーコードとともに、失敗シーケンサに制御を渡す(722)。この過程は後述の図９で示される。もし値が正確に拡張したなら、現在の信頼コンポーネントは、要求されるほかのタスクの実行を継続できる(724)。処理は図８に続く。
【００３８】
図８は、さらに、セキュアブートシーケンスの処理を示す。最初に、ロードすべき更なる信頼コンポーネントがあるかを確認し(800)、ないなら、セキュアブートは成功で終了する(802)。本実施の形態では、もしオプショナルなコンポーネントの検証が失敗なら、このオプショナルなコンポーネントはブートされない。そのため、ステップ802では、たとえセキュアブートが成功で終了しても、いくつかのオプショナルなコンポーネントはブートされていないことがある。実施の形態では、これは現実のチェックではないが；実施の形態のオペレーティングシステムにおける読込シーケンスでの最後のコンポーネントは、実行するよう定義された他のタスクが完了すると(724)、他のコンポーネントを探さないよう実装される。もし立ち上げる他のコンポーネントがあるなら、次の信頼コンポーネントの検証のためのRIM証明書が要求され(804)、期待される現在の状態及び期待される次の信頼コンポーネントの状態を記述するRIM証明書が得られる。ここで、次の信頼コンポーネントとは、次にブートされるべき信頼コンポーネントを意味する。信頼コンポーネントは、次の信頼コンポーネント向けのハッシュ計算値として、RIM証明書で述べられるのと同じ方法で計算(806)されたハッシュ値を有し、この計算されたハッシュ値が次の信頼コンポーネントのRIM証明書内に記録されたハッシュ値と等しいかの確認を実行する(808)。等しくないなら、故意又は偶然の破損のようなコンポーネントの問題があることを示し、信頼コンポーネントは、失敗シーケンサにエラーを処理させるため、次の信頼コンポーネントのハッシュが有効でないことを示すエラーコードとともに失敗シーケンサに制御を渡す(810)。この過程は後述の図９で述べられている。もしハッシュ値が等しいなら、コンポーネントエラー記録部は、次の信頼コンポーネントのハッシュ確認が成功だったと記録する(812)。次に、このRIM証明書は従来技術に従ってMTMに拡張され(814)、そして拡張動作の成功若しくは他が確認される(816)。もし拡張動作が失敗なら、信頼コンポーネントは(818)、失敗シーケンサにエラーを処理させるために、次の信頼コンポーネントのMTMへの拡張が失敗だったと示すエラーコードとともに失敗シーケンサに制御を渡す。この処理は後述の図９で述べられる。もし一方、拡張されたハッシュが正確なら、これは、次の信頼コンポーネントが信頼エリアから完全に信頼されることができることを示し(820)、ステップ708から、処理が繰り返される。この後、次の追加的なコンポーネントが立ち上げられ(708)、そして、示されているとおり、制御フローは上記の信頼コンポーネントの初期化に続く。
【００３９】
図９は、本発明に係る失敗シーケンサ動作を示す。まず、渡されたエラーコードがコンポーネントエラー状態300に記録される(900)。続いて(902)、現在の全てのコンポーネントエラー状態がコンポーネントエラー状態300から取り出され、次に立ち上げるべき信頼コンポーネントを見つけるべく次コンポーネントテーブル312を調べるために使用される(904)。チェックは、定義された次のコンポーネントがあるかどうかによってなされ(906)、そして、もしなければ、セキュアブートは、失敗状態に入り(908)、装置は、安全な方法で開始を失敗することとなる。もし次の信頼コンポーネントがあるなら、次の信頼コンポーネントの検証のためのRIM証明書を要求する処理により、期待される現在状態及び期待される次の信頼コンポーネントの状態が記述される失敗RIM証明書を得る(910)。ここで、次の信頼コンポーネントとは、次にブートされるべき信頼コンポーネントを意味する。次の信頼コンポーネントは(912)、自身のハッシュ値を計算させ、計算されたハッシュ値は、RIM証明書内のハッシュ値と比較される(914)。もしそれらが等しくないなら、偶然若しくは故意の破損のようなコンポーネントの問題があることを示している。そこで、失敗シーケンサは、次の信頼コンポーネントのハッシュ値が妥当でなかったことを示すエラーコードとともに、制御を失敗シーケンサの開始時点に戻し(916)、失敗シーケンサが誤りを処理し、制御フローは、コンポーネントエラー記録部に適切なエラーを記録する処理から続けられる(900)。ハッシュ値が等しいなら、それからコンポーネントエラー記録部は、次の信頼コンポーネントが成功したハッシュ確認を記録する(918)。次に、このRIM証明書が従来技術に従ってMTMに拡張され(920)、そして拡張動作の成功若しくはその他が確認される(922)。拡張動作が失敗なら、失敗シーケンサにエラーを処理させるため、失敗シーケンサは次の信頼コンポーネントの拡張が有効でなかったと示すエラーコードとともに、制御を失敗シーケンサの開始時点に戻し(926)、制御フローは、コンポーネントエラー記録部に適切なエラーを記録する処理から続けられる(900)。ハッシュ値が正確に拡張されたなら、これは次の信頼コンポーネントが信頼エリアにより完全に信頼できることを示し(924)、そこで次の追加コンポーネントは立ち上げられ、制御フローに示すように、上記の信頼コンポーネントの初期化に(708)続く。
【００４０】
上述したように、本発明の一態様に係るセキュアブート方法は、完全性を検証しながら複数のコンポーネントを予め定められた順序で実行するセキュアブート方法であって、第１コンポーネントより前にブートされようとした１つ以上のコンポーネントのそれぞれのブートが成功したか否かを示す情報である現在の状態情報を取得し、前記複数のコンポーネントのそれぞれを識別する論理識別子と、対応するコンポーネントの前にブートされようとした１つ以上のコンポーネントのそれぞれのブートが成功したか否かを示す状態情報と、対応する状態情報によってブートが成功したことが示されている１つ以上のコンポーネントのブートが、真に成功しているかを検証するための値である完全性測定値とが互いに対応付けられた第１マッピングテーブルを探索することで、前記第１コンポーネントと、前記現在の状態情報によって示される状態とに対応する第１完全性測定値を取得し、ブートされた１つ以上のコンポーネントに基づいて計算された値である現在の完全性測定値を取得し、前記第１完全性測定値と前記現在の完全性測定値とを比較することで、前記現在の状態情報によってブートが成功したことが示されている１つ以上のコンポーネントのブートが、真に成功したか否かを検証し、前記検証が成功である場合に、前記第１コンポーネントのブートを開始し、前記第１コンポーネントのブートが成功に終わった場合に、前記第１コンポーネントのブートが成功したことを示すように、前記現在の状態情報を更新する。
【００４１】
また、セキュアブート方法は、さらに、前記第１コンポーネントが改竄されているか否かを判断し、前記検証が成功である場合であっても、前記第１コンポーネントが改竄されたと判断された場合、前記第１コンポーネントのブートを抑制し、前記ブートが抑制された場合、前記第１コンポーネントのブートが成功しなかったことを示すように前記現在の状態情報を更新し、前記第１コンポーネントのブートが成功したか否かと、前記現在の状態情報が、前記第１コンポーネントが依存するコンポーネントである第３コンポーネントのブートが成功したことを示すか否かとに対応する識別子を取得するように、前記第１コンポーネントのブートが成功したか否かの状態と、前記第３コンポーネントのブートが成功したか否かの状態とに関連付けられた第２コンポーネントの複数の候補の論理識別子を含む第２マッピングテーブルを探索することで、次にブートされる第２コンポーネントを決定し、前記第２コンポーネントのブートを開始してもよい。
【００４２】
また、前記完全性測定値のそれぞれは、完全性測定証明書に含まれてもよく、前記完全性測定証明書は、完全性測定値と、当該完全性測定値に対応する論理識別子によって識別されるコンポーネントが改竄されているか否かを判断するために用いられる検証値とを含み、前記第１完全性測定値の取得では、前記状態情報のそれぞれと前記完全性測定証明書のそれぞれとが互いに関連付けられた前記第１マッピングテーブルを探索することで、完全性測定証明書が取得されてもよく、前記第１完全性測定値は、取得された完全性測定証明書から抽出されてもよく、前記第１コンポーネントが改竄されているか否かの判断は、前記第１コンポーネントの検証値を算出し、算出された検証値を、前記取得された完全性測定証明書に含まれる前記検証値と比較することで、実行されてもよい。
【００４３】
また、前記第１コンポーネントが改竄されているか否かの判断は、前記第１コンポーネントのブートを開始した後に実行されてもよく、前記ブートの抑制では、前記第１コンポーネントのブートが、前記第１コンポーネントが改竄されていると判断された場合に中止されてもよい。
【００４４】
また、前記セキュアブート方法は、さらに、前記第１コンポーネントが改竄されていると判断された場合に、前記第１コンポーネントのブートが成功しなかったことを示す失敗値を取得し、前記失敗値を用いることで、前記現在の完全性測定値を更新し、前記第１マッピングテーブルを探索することで、前記第２コンポーネントの論理識別子と、前記第１コンポーネントのブートが成功しなかったことを示す更新された現在の状態情報によって示される状態とに対応する第２完全性測定値を取得し、前記第２完全性測定値と前記更新された現在の完全性測定値とを比較することで、（ａ）前記更新された現在の状態情報によってブートが成功したことが示されている１つ以上のコンポーネントのブートが、真に成功したか否かと、（ｂ）前記更新された現在の状態情報によってブートが成功しなかったことを示されている１つ以上のコンポーネントが、真に成功していないか否かとの状態を検証し、前記検証が成功である場合に、前記第２コンポーネントをブートしてもよい。
【００４５】
また、前記第１コンポーネントが改竄されていると判断された場合に、前記現在の完全性測定値は更新されなくてもよく、前記セキュアブート方法は、さらに、前記第１マッピングテーブルを探索することで、前記第２コンポーネントの論理識別子と、前記第１コンポーネントのブートが成功しなかったことを示す更新された現在の状態情報によって示される状態とに対応する第２完全性測定値を取得し、前記第２完全性測定値と前記現在の完全性測定値とを比較することで、前記更新された現在の状態情報によってブートが成功したことが示されている１つ以上のコンポーネントのブートが、真に成功したか否かを検証し、前記検証が成功である場合に、前記第２コンポーネントをブートしてもよい。
【００４６】
また、本発明の一態様に係る方法は、完全性測定によって検証されるソフトウェアコンポーネントを実行する方法であって、（ａ）論理識別子及び以前のソフトウェアコンポーネントの状態情報から、検証データを含む実際の完全性測定証明書へのマッピングを提供し、（ｂ）前記マッピングから、与えられた前記コンポーネントの検証用の証明書を識別する論理識別子と前記以前のソフトウェアコンポーネントの状態とを検索することで、完全性測定証明書を取得し、（ｃ）実行すべき前記コンポーネントのチェック値を計算し、（ｄ）前記完全性測定が前記完全性測定証明書内の完全性測定値に一致しているか、及び、前記計算されたチェック値が前記完全性測定証明書内のチェック値に一致しているかを検証し、（ｅ）前記検証が成功なら、前記記録された測定の指示を含むように、現在の完全性測定を更新し、（ｆ）前記検証が成功なら、前記コンポーネントを実行する。
【００４７】
また、上記方法は、さらに、（ａ）前記検証が不成功ならば、前記マッピングから、与えられた前記コンポーネントの検証失敗証明書、及び前記以前のコンポーネント状態を特定する所定の論理識別子を検索して、失敗完全性測定の証明書を取得し、（ｂ）現在の完全性測定を、前記失敗完全性測定証明書に記録される不成功完全性測定の指示を含むよう更新してもよい。
【００４８】
また、上記方法は、さらに、（ａ）前記検証が不成功なら、論理識別子及び以前のソフトウェアコンポーネントの状態情報からコンポーネント識別子へのマッピングを提供し、（ｂ）前記マッピングから、与えられた前記失敗コンポーネントと前記以前のコンポーネント状態を識別する所定の論理識別子に関する前記マッピングを検索することで、実行されるべき代替ソフトウェアコンポーネントを取得してもよい。
【００４９】
また、本発明の一態様に係る方法は、ソフトウェアコンポーネントが、完全性測定によって自身を検証する方法であって、（ａ）論理識別子及び以前のソフトウェアコンポーネント状態情報から、検証データを含む実際の完全性測定認証へのマッピングを提供し、（ｂ）前記マッピングから、前記コンポーネントの自己検証証明書を識別する論理識別子と、前記以前のコンポーネント状態とを検索することで、完全性測定証明書を取得し、（ｃ）前記完全性測定が前記完全性測定証明書内の完全性測定値に一致するか検証し、（ｄ）前記検証が成功なら、現在の完全性測定を、前記完全性測定認証内に記録された成功完全性測定の指示を含むよう更新する。
【００５０】
また、上記方法は、さらに、（ａ）前記検証が不成功ならば、前記マッピングから、前記コンポーネントの自己検証失敗証明書を識別する論理識別子と、前記以前のコンポーネント状態とを検索することで、完全性測定の証明書を取得してもよい。
【００５１】
また、上記方法は、さらに、（ａ）前記認証が不成功なら、論理識別子及び以前のソフトウェアコンポーネントの状態情報からコンポーネント識別子へのマッピングを提供し、（ｂ）前記マッピングから、前記失敗コンポーネントを示す所定の論理識別子、及び前記以前のコンポーネント状態を検索することで、実行されるべき代替コンポーネントを取得してもよい。
【００５２】
また、本発明の一態様に係る装置は、完全性測定によるソフトウェア検証を実行する装置であって、（ａ）実行する前に検証される１つ以上の信頼ソフトウェアコンポーネントを記録するコンポーネント記録部と、（ｂ）前記信頼ソフトウェアの完全性を検証する検証部と、（ｃ）前記検証が成功なら前記コンポーネントを実行する実行部と、（ｄ）いくつかの前記信頼ソフトウェアコンポーネントの検証の失敗、及び前記検証に失敗した信頼ソフトウェアコンポーネントと関連のない他のコンポーネントの実行を処理する失敗シーケンサ部とを備える。
【００５３】
また、前記検証とは、前記完全性測定が前記完全性測定証明書内の完全性測定値に一致するか、及び前記計算チェック値が前記完全性測定証明書内のチェック値に一致するかを検証することを意味してもよく、前記装置は、さらに、（ａ）実行すべき前記コンポーネントのチェック値を計算する計算部と、（ｂ）前記マッピングから、前記コンポーネントの検証証明書を識別する論理識別子と、及び前記信頼ソフトウェアコンポーネント状態とを検索して、完全性測定証明書を取得する調査部と、（ｃ）論理識別子及び以前の信頼ソフトウェアコンポーネント状態情報から検証データを含む実際の完全性測定証明書へマップするマッピング部と、（ｄ）前記検証が成功なら、現在の完全性測定を、前記記録された測定の指示を含むように更新する更新部とを備えてもよい。
【００５４】
また、前記信頼ソフトウェアコンポーネントは、いくつかの信頼機能を実行するためにプログラムされていてもよい。
【００５５】
また、前記信頼ソフトウェアコンポーネントは、実行ソフトウェアを保護するための信頼された実行環境を提供するオペレーティングシステムであってもよく、前記装置は、さらに、（ａ）１つ以上のオペレーティングシステムを制御するハイパーバイザと、（ｂ）前記オペレーティングシステムの少なくとも１つの検証の失敗に対処する失敗シーケンサ部とを備え、前記装置は、前記検証に失敗した信頼ソフトウェアコンポーネントと関連のない他のオペレーティングシステムを実行してもよい。
【００５６】
本発明は上記の実施の形態に基づいて述べられているが、本発明は明らかにそのような実施の形態に限定されるのではない、ということを留意すべきである。下記のケースもまた本発明に含まれる。
【００５７】
(1)上記の実施の形態では、コンポーネントが正確にブートされないなら、システムは失敗状態をMTMに反映させることなしに、次のモジュールを探した。しかしながら、システムは、失敗状態をMTMに反映してもよい。図１０は、本発明のこのような拡張を示す。コンポーネントエラー記録部に適切なエラーを記録する処理の後に失敗シーケンサによって生成されるエラーを正確に記述するため(900)、CPUは、信頼コンポーネントの失敗を有効にするRIM証明書を要求する(1000)。この失敗RIM証明書308は、現在の失敗状態を正確に記述する拡張する値を含む。このRIM証明書は、失敗状態を記述する値をRIM証明書内で記述されたレジスタに拡張させる(1002)。この拡張動作の成功若しくは失敗が確認され(1004)、そして失敗なら、セキュアブートは失敗状態に入り(1006)、装置は安全な方法で、開始に失敗する。もし成功なら、それから制御フローは、上述した通り他のコンポーネントの開始を試み続けるため現在のコンポーネントエラー状態情報を取り出すべく現在のコンポーネントエラー状態を取得する処理に戻る(902)。
【００５８】
(2)仮想環境の場合、実施の形態では、ハイパーバイザが、実行すべき最後の信頼コンポーネントとなる。他の実施の形態では、例えばオペレーティングシステム等の他の信頼コンポーネントが、ハイパーバイザ信頼コンポーネントの実行の後に実行される。
【００５９】
(3)上述の実施の形態では、各コンポーネントの検証は、それらの各々が立ち上げされる前に実行された。しかしながら、本発明は、各コンポーネントが立ち上げされた後に検証が実行されるシステムに適用できる。その場合、システムは、仮にコンポーネントの検証が失敗したなら、各コンポーネントを中止する。
【００６０】
(4)上述の実施の形態では、検証はTCG検証と同様の方法で実行された。しかしながら、検証システムが、コンポーネントが鎖のように(例えば、一つのコンポーネントが、この一つのコンポーネントの後に立ち上がる別のコンポーネントを検証するように)検証される検証方法を使用するシステム、のコンポーネントを検証することができる限り、本発明は別の検証システムにも適用することができる。例えば、MTMへのハッシュ値の拡張は省略されてもよいが、それはこの動作は、TCGの仕様に特有のものだからである。
【００６１】
(5)上述の実施の形態では、検証は証明書(RIM Cert)内のハッシュ値を使用することに
より実行された。しかしながら、ハッシュ値を使用しない他の検証方法が本発明に適用されても良い。
【００６２】
従来のチェックサムや、コンポーネントから抽出される別のデータ(例えば、コンポーネントから抽出される第一所定ビット)が、検証を実行するために使用されても良い。また、証明書は、完全性測定値を含むデータグループに置き換えられても良い。
【００６３】
さらに、認証方法は、コンポーネントから抽出される値および期待される値が等しいか否かをチェックすることに限定されない。例えば、コンポーネントのサイズを確認し、もしサイズが所定量より大きい若しくは小さいなら、コンポーネントは検証されたと判断されるとしてもよい。これらの検証方法は、ハッシュ値と、その期待値とを比較するほど厳密なものではないが、迅速に実行される。
【００６４】
(6)上述した装置の各々は、特にマイクロプロセッサ、ROM、RAM、ハードディスク、表示部、キーボード、マウス等を含むコンピュータシステムである。コンピュータプログラムが、RAM若しくはハードディスクに格納される。各装置は、コンピュータプログラムに
応じたマイクロプロセッサの動作を介してそれらの機能を実現する。ここで、コンピュータシステムは、コンピュータの動作を示す複数の命令コードを組み合わせることで構成される。
【００６５】
(7)各装置を構成する構成部品の一部若しくは全ては、単一のシステムLSI(Large-Scale Integration)から構成されても良い。システムLSIは、１つのチップ上に構成部を集積化することにより製造される超多機能LSIであり、特にマイクロプロセッサ、ROM、RAM等を含むことにより構成されるコンピュータシステムである。コンピュータプログラムはRAM内に記録される。システムLSIはコンピュータプログラムに応じたマイクロプロセッサの動作を介して機能を達成する。
【００６６】
さらに、各装置を構成する構成部品の各ユニットは、個別のチップとして、又は、一部若しくは全てを含む単一のチップとして作られても良い。
【００６７】
さらに、ここでは、LSIが述べられているが、集積化の程度の違いにより、指定IC、LSI、スーパLSIが使用される場合もある。
【００６８】
さらに、回路の集積化の手段は、LSIに限定されるものではなく、専用回路、若しくは汎用プロセッサによる実装も利用できる。さらに、LSIが製造された後にプログラム可能なフィールドプログラムゲートアレイ(FPGA)を使用することもまた可能であり、またLSI内で回路セルの接続及び設定を再構成可能なリコンフィギュアラブルプロセッサも使用可能である。
【００６９】
さらに、もしLSIに置き換わる集積回路技術が半導体技術若しくは他の派生する技術の進歩を通じて現われるのであれば、その技術は当然に構成要素の集積化を実現するために使用することができる。
【００７０】
(8)各装置を構成する構成部品の一部若しくは全ては、装置と着脱できるICカードや独立したモジュールとして構成してもよい。ICカードやモジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。また、ICカード若しくはモジュールは、上述したスーパマルチ機能LSIに含まれても良い。ICカード若しくはモジュールは、コンピュータプログラムに応じたマイクロプロセッサの動作を介してその機能を達成する。また、ICカード若しくはモジュールは、耐タンパ化されて実装されても良い。
【００７１】
(9)本発明は、上述した方法を実現するためにコンピュータを使用するコンピュータプログラムであってもよいし、コンピュータプログラムを含むデジタル信号としてもよい。
【００７２】
さらに、本発明は、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc)、半導体メモリ等のコンピュータ読取可能な記録媒体に、コンピュータプログラムやデジタル信号を記録することにより実現されても良い。さらに、本発明は、これらの記録媒体に記録されたデジタル信号を含む。
【００７３】
さらに、本発明はまた、電話通信線、無線若しくは有線の通信線、インターネットに代表されるネットワーク、データブロードキャスト等を介した、上記のコンピュータプログラム若しくはデジタル信号の送信により実現されてもよい。
【００７４】
本発明はまた、マイクロプロセッサとメモリを含み、メモリが上記のコンピュータプログラムを記録し、マイクロプロセッサがコンピュータプログラムに応じて動作するコンピュータシステムとしてもよい。
【００７５】
さらに、プログラムやデジタル信号を上記の記録媒体に記録することで転送したり、若しくは上述のネットワーク等を介してプログラム若しくはデジタル信号を転送することにより、別の独立したコンピュータシステムを使用する実行もまた可能となる。
【００７６】
(10)本技術分野の当業者にとっては、説明した実施の形態の、本発明固有の教示及び利点から原理的に離れることのない多くの変形がありえることを容易に理解することができるだろう。また、上記変更及び実施の形態の任意の組み合わせは、本発明の範囲内に含まれる。
【産業上の利用可能性】
【００７７】
本発明は、例えば、携帯電話などに用いることができる。
【符号の説明】
【００７８】
１０２  ＭＴＭ
１０４  システム状態
１０６  システムエラー記録部
１０８  ランチャ
１１０  証明書データベース
１１２  完全性保護
１１４  成功ＲＩＭ証明書
１１６  信頼コンポーネント１
１１８  信頼コンポーネント２
１２０  信頼コンポーネント３
１２２、１２４、１２６  通常の実行パス
２００  信頼コンポーネント４
２０２  信頼コンポーネント５
２０４  オペレーションシステム
３００  コンポーネントエラー状態
３０２  コンポーネントエラー記録部
３０４  証明書探索部
３０６  ＩＤ−証明書対応テーブル
３０８  失敗ＲＩＭ証明書
３１２  次コンポーネントテーブル
３２４  失敗シーケンサ
３２６、３２８  エラー時の実行パス
【図１】
0005399397.tif 000002
【図２】
0005399397.tif 000003
【図３】
0005399397.tif 000004
【図４】
0005399397.tif 000005
【図５ａ】
0005399397.tif 000006
【図５ｂ】
0005399397.tif 000007
【図５ｃ】
0005399397.tif 000008
【図６】
0005399397.tif 000009
【図７】
0005399397.tif 000010
【図８】
0005399397.tif 000011
【図９】
0005399397.tif 000012
【図１０】
0005399397.tif 000013