(57)【特許請求の範囲】
【請求項１】
情報処理装置であって、
第１シーケンスでブートされることが期待される複数のプログラムである第１プログラムと第２シーケンスでブートされることが期待される複数のプログラムである第２プログラムとを含む複数のプログラムを格納するプログラム格納手段と、
前記第１プログラムのうちブートされた１以上のプログラムを示す第１蓄積情報を管理する第１管理手段と、
前記第２プログラムのうちブートされた１以上のプログラムを示す第２蓄積情報を管理する、前記第１管理手段とは異なる第２管理手段と、
全ての前記第１プログラムを前記第１シーケンスでブートしたことを示す第１期待蓄積情報と第２設定情報と同じであることが期待される第１設定情報とを含む第１証明書および、前記第２プログラムのいずれもブートされていないことを示す第２期待蓄積情報と前記第２蓄積情報に蓄積される値である前記第２設定情報とを含む第２証明書を格納する証明書格納手段と、
前記第１シーケンスの最後のプログラムがブートされた場合で、かつ、前記第２シーケンスの最初のプログラムがブートされる前に、
（i）前記第１蓄積情報が前記第１期待蓄積情報と一致した場合、全ての前記第１プログラムが前記第１シーケンスでブートされたことを検証するよう、前記第１管理手段を制御し、
（ii）前記第２蓄積情報が前記第２期待蓄積情報と一致した場合、前記第２プログラムのいずれもブートされていないことを検証するよう、前記第２管理手段を制御し、
（iii）前記第１設定情報が前記第２設定情報と一致することを検証し、かつ、
（iv）（ａ）全ての前記第１プログラムが前記第１シーケンスでブートされたこと、（ｂ）前記第２プログラムのいずれもブートされていないこと、および（ｃ）前記第１設定情報が前記第２設定情報と一致することを検証する場合、全ての前記第１プログラムが前記第１シーケンスでブートされ、かつ、前記第２プログラムのいずれもブートされていないことを示すために、前記第２設定情報を前記第２蓄積情報に蓄積するよう、前記第２管理手段を制御する、制御手段とを備える
ことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記制御手段は、さらに、（ａ）全ての前記第１プログラムが前記第１シーケンスでブートされたこと、（ｂ）前記第２プログラムのいずれもブートされていないこと、および（ｃ）前記第１設定情報が前記第２設定情報と一致することを検証する場合、全ての前記第１プログラムが前記第１シーケンスでブートされ、かつ、前記第２プログラムのいずれもブートされていないことを示すために、前記第１設定情報を前記第１蓄積情報に蓄積するよう、前記第１管理手段を制御する
ことを特徴とする情報処理装置。
【請求項３】
請求項１に記載の情報処理装置であって、
前記第１管理手段は、前記第１シーケンスでブートされた複数のプログラムのそれぞれを表す複数の第１代表情報を蓄積することにより前記第１蓄積情報を生成し、かつ、生成された前記第１蓄積情報を格納し、
前記第２管理手段は、前記第１管理手段とは異なる方法で、前記第２シーケンスでブートされた複数のプログラムのそれぞれを表す複数の第２代表情報を蓄積することにより前記第２蓄積情報を生成し、かつ、生成された前記第２蓄積情報を格納する
ことを特徴とする情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記第２証明書は、前記第２期待蓄積情報と比較される前記第２蓄積情報をどのレジスタに格納すべきかを示すレジスタ識別子を含み、
前記第２管理手段は、（i）前記レジスタの代わりに、仮想識別子によって特定される格納場所へ前記第２蓄積情報を格納し、（ii）前記仮想識別子と前記レジスタ識別子との対応付けを示すマッピングテーブルを管理し、かつ、（iii）前記第２プログラムのいずれもブートされていないことを検証するために前記第２管理手段を制御する場合、前記第２証明書に含まれるレジスタ識別子と前記マッピングテーブルとを用いて前記第２蓄積情報を格納している前記格納場所を検索する
ことを特徴とする情報処理装置。
【請求項５】
請求項３に記載の情報処理装置であって、
前記第１代表情報のそれぞれは、前記第１シーケンスでブートされた１以上のプログラムそれぞれから算出されたハッシュ値であるか、または、前記第１シーケンスでブートされた１以上のプログラムのうちの１つを示す文字列のハッシュ値である
ことを特徴とする情報処理装置。
【請求項６】
請求項３に記載の情報処理装置であって、
前記第２代表情報のそれぞれは、前記第２シーケンスでブートされた１以上のプログラムそれぞれから算出されたハッシュ値であるか、または、前記第２シーケンスでブートされた１以上のプログラムのうちの１つを示す文字列のハッシュ値である
ことを特徴とする情報処理装置。
【請求項７】
請求項１に記載の情報処理装置であって、
前記第１管理手段は、ＰＣＲと一時的ＰＣＲと仮想ＰＣＲとのいずれか１つを用いて前記第１蓄積情報を管理し、かつ、
前記第２管理手段は、ＰＣＲと一時的ＰＣＲと仮想ＰＣＲとのいずれか１つを用いて前記第２蓄積情報を管理する
ことを特徴とする情報処理装置。
【請求項８】
情報処理装置用の情報処理方法であって、
前記情報処理装置は、
第１シーケンスでブートされることが期待される複数のプログラムである第１プログラムと第２シーケンスでブートされることが期待される複数のプログラムである第２プログラムとを含む複数のプログラムを格納するプログラム格納手段と、
前記第１プログラムのうちブートされた１以上のプログラムを示す第１蓄積情報を管理する第１管理手段と、
前記第２プログラムのうちブートされた１以上のプログラムを示す第２蓄積情報を管理する、前記第１管理手段とは異なる第２管理手段と、
全ての前記第１プログラムを前記第１シーケンスでブートしたことを示す第１期待蓄積情報と第２設定情報と同じであることが期待される第１設定情報とを含む第１証明書および、前記第２プログラムのいずれもブートされていないことを示す第２期待蓄積情報と前記第２蓄積情報に蓄積される値である前記第２設定情報とを含む第２証明書を格納する証明書格納手段とを備え、
前記情報処理方法は、
前記第１シーケンスの最後のプログラムがブートされた場合で、かつ、前記第２シーケンスの最初のプログラムがブートされる前に、
（i）前記第１蓄積情報が前記第１期待蓄積情報と一致した場合、全ての前記第１プログラムが前記第１シーケンスでブートされたことを検証するよう、前記第１管理手段を制御し、
（ii）前記第２蓄積情報が前記第２期待蓄積情報と一致した場合、前記第２プログラムのいずれもブートされていないことを検証するよう、前記第２管理手段を制御し、
（iii）前記第１設定情報が前記第２設定情報と一致することを検証し、かつ、
（iv）（ａ）全ての前記第１プログラムが前記第１シーケンスでブートされたこと、（ｂ）前記第２プログラムのいずれもブートされていないこと、および（ｃ）前記第１設定情報が前記第２設定情報と一致することを検証する場合、全ての前記第１プログラムが前記第１シーケンスでブートされ、かつ、前記第２プログラムのいずれもブートされていないことを示すために、前記第２設定情報を前記第２蓄積情報に蓄積するよう、前記第２管理手段を制御する、制御ステップを含む
ことを特徴とする情報処理方法。
【請求項９】
情報処理装置用の情報処理プログラムを記録している記録媒体であって、
前記情報処理装置は、
第１シーケンスでブートされることが期待された複数のプログラムである第１プログラムと第２シーケンスでブートされることが期待された複数のプログラムである第２プログラムとを含む複数のプログラムを格納するプログラム格納手段と、
前記第１プログラムのうちブートされた１以上のプログラムを示す第１蓄積情報を管理する第１管理手段と、
前記第２プログラムのうちブートされた１以上のプログラムを示す第２蓄積情報を管理する、前記第１管理手段とは異なる第２管理手段と、
全ての前記第１プログラムを前記第１シーケンスでブートしたことを示す第１期待蓄積情報と第２設定情報と同じであることが期待される第１設定情報とを含む第１証明書および、前記第２プログラムのいずれもブートされていないことを示す第２期待蓄積情報と前記第２蓄積情報に蓄積される値である前記第２設定情報とを含む第２証明書を格納する証明書格納手段とを備え、
前記情報処理プログラムは、
前記第１シーケンスの最後のプログラムがブートされた場合で、かつ、前記第２シーケンスの最初のプログラムがブートされる前に、
（i）前記第１蓄積情報が前記第１期待蓄積情報と一致した場合、全ての前記第１プログラムが前記第１シーケンスでブートされたことを検証するよう、前記第１管理手段を制御し、
（ii）前記第２蓄積情報が前記第２期待蓄積情報と一致した場合、前記第２プログラムのいずれもブートされていないことを検証するよう、前記第２管理手段を制御し、
（iii）前記第１設定情報が前記第２設定情報と一致することを検証し、かつ、
（iv）（ａ）全ての前記第１プログラムが前記第１シーケンスでブートされたこと、（ｂ）前記第２プログラムのいずれもブートされていないこと、および（ｃ）前記第１設定情報が前記第２設定情報と一致することを検証する場合、全ての前記第１プログラムが前記第１シーケンスでブートされ、かつ、前記第２プログラムのいずれもブートされていないことを示すために、前記第２設定情報を前記第２蓄積情報に蓄積するよう、前記第２管理手段を制御することを、前記情報処理装置に実行させる
ことを特徴とする記録媒体。
【請求項１０】
情報処理装置に用いられる集積回路デバイスであって、
前記情報処理装置は、
第１シーケンスでブートされることが期待された複数のプログラムである第１プログラムと第２シーケンスでブートされることが期待された複数のプログラムである第２プログラムとを含む複数のプログラムを格納するプログラム格納手段と、
前記第１プログラムのうちブートされた１以上のプログラムを示す第１蓄積情報を管理する第１管理手段と、
前記第２プログラムのうちブートされた１以上のプログラムを示す第２蓄積情報を管理する、前記第１管理手段とは異なる第２管理手段と、
全ての前記第１プログラムを前記第１シーケンスでブートしたことを示す第１期待蓄積情報と第２設定情報と同じであることが期待される第１設定情報とを含む第１証明書および、前記第２プログラムのいずれもブートされていないことを示す第２期待蓄積情報と前記第２蓄積情報に蓄積される値である前記第２設定情報とを含む第２証明書を格納する証明書格納手段とを備え、
前記集積回路デバイスは、
第１シーケンスの最後のプログラムがブートされた場合で、かつ、第２シーケンスの最初のプログラムがブートされる前に、
（i）前記第１蓄積情報が前記第１期待蓄積情報と一致した場合、全ての前記第１プログラムが前記第１シーケンスでブートされたことを検証するよう、前記第１管理手段を制御し、
（ii）前記第２蓄積情報が前記第２期待蓄積情報と一致した場合、前記第２プログラムのいずれもブートされていないことを検証するよう、前記第２管理手段を制御し、
（iii）前記第１設定情報が前記第２設定情報と一致することを検証し、かつ、
（iv）（ａ）全ての前記第１プログラムが前記第１シーケンスでブートされたこと、（ｂ）前記第２プログラムのいずれもブートされていないこと、および（ｃ）前記第１設定情報が前記第２設定情報と一致することを検証する場合、全ての前記第１プログラムが前記第１シーケンスでブートされ、かつ、前記第２プログラムのいずれもブートされていないことを示すために、前記第２設定情報を前記第２蓄積情報に蓄積するよう、前記第２管理手段を制御する
ことを特徴とする集積回路デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラムを実行する情報処理装置であって、特に、互いに異なるシーケンスで実行される複数のプログラムを信頼できる方法で起動する情報処理装置に関する。
【背景技術】
【０００２】
例えば、「ｔｈｅ  Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ’ｓ  （ＴＣＧ）  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  （ＭＴＭ）  ｄｏｃｕｍｅｎｔｓ  ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｖｅｒｓｉｏｎ  １．０  １２  Ｊｕｎｅ  ２００７」（非特許文献１）、および、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．０  １２  Ｊｕｎｅ  ２００７」（非特許文献２）のような先導的な先行文献は、装置をどのようにして、保証、また、信頼できる方法で起動するかを記述している。これらの方法は、信頼性や安全性がブートプロセスの間保持されるということを保証するため徹底的に見直されてきており、その結果、安全にブートができる装置の実装を要求する人々に有用な基準を提供している。このセキュアブートプロセスのキーコンポーネントは、ＲＩＭ（Ｒｅｆｅｒｅｎｃｅ  Ｉｎｔｅｇｒｉｔｙ  Ｍｅｔｒｉｃｓ）証明書である。これは、現在期待されるプラットフォームの状態がどのようなものであるべきかを定義する署名つきの構造体である。プラットフォーム状態は、プラットフォーム設定レジスタ（ＰＣＲｓ）の集合に対するハッシュによって表され、各ＰＣＲは一般に定義されたハッシュ値を含む。これらのＰＣＲは、完全性測定（ｉｎｔｅｇｒｉｔｙ  ｍｅａｓｕｒｅｍｅｎｔ）情報として用いられるものであり、期待される装置の状態を定義するためにＲＩＭ証明書に記録されていてもよい。さらに、ＲＩＭ証明書はまた、現在の状態が検証される場合に、拡張されるべきＰＣＲを特定する。この拡張の処理では、特定されたＰＣＲの値を取得し、ＲＩＭ証明書内で定義される新たな既知の値に連結された前のＰＣＲ値に基づいて新たなハッシュ値を算出する。ＴＣＧによって定義される典型的なセキュアブートシーケンスは、コアコンポーネントの初期化および自己検証から開始する。ここで、コアコンポーネントとは、検証および測定の信頼性のルート（ＲＴＶ＋ＲＴＭ）、ＭＴＭ自体、および関連するコアＭＴＭインターフェースコンポーネント等である。次に、ファームウェアの他の部分をサポートする追加コンポーネントが、信頼できる方法で起動される。ここで信頼できる方法とは、各コンポーネントが信頼性のあるコンポーネントから立ち上げられたものであることを保証するために、制御が渡される前に信頼済みのコンポーネントにより各コンポーネントを検証してから、自分自身を検証するような方法である。検証→実行→自己検証というこのシーケンスには、システム内において信頼性のルートから各コンポーネントへ動的に信頼性の境界を拡張するという効果がある。そして、最後に、オペレーティングシステムを起動して、ＭＴＭサービスへとアクセスするクライアントアプリケーションに対し、安全で信頼性のあるパスを提供する。
【０００３】
上記イベントシーケンス内に出現の可能性がある追加関数が存在する。ＴＣＧでは、装置はＭＴＭを１以上有することが可能であり、そのＭＴＭのうちいくつかはセキュアブート中に開始されなければならず、その他のＭＴＭはアプリケーション空間内にロードされても構わないと明記している。あるいは、特願２００８−２６４５３０号において記載したように一時的ＰＣＲを定義するか、または、米国特許出願公開第２００６／０２１２９３９号明細書（特許文献１）において記載したように仮想ＰＣＲを定義してもよい。ＰＣＲセットを管理（かつ、先行技術において定義されたような他のサービスを提供）するこれらの関数およびモジュールを、１つのＰＣＲ領域が１つのＰＣＲセットを管理する１対１の関係がある「ＰＣＲ領域」として本願でまとめて記述する。また、「ＰＣＲ領域状態」は、任意の時点におけるＰＣＲ領域１つからの１以上のＰＣＲの値の集合として定義される。特定ＰＣＲの値を示すことにより、領域状態は、どのコンポーネントがその領域内ですでにアクティブであるかを表す。上述したとおり、ＰＣＲ領域ごとに、拡張動作の特定期待シーケンスが存在するので、任意のＰＣＲ領域状態を見ることにより、拡張動作の期待シーケンスを介してその進展を判断することができる。このように、コンポーネント実行の期待シーケンスを介して進展を間接的に判断できる。ＴＣＧ仕様書では、この状態を、参照用領域のＰＣＲを示すＴＰＭ＿ＰＣＲ＿ＳＥＬＥＣＴＩＯＮと、ＴＰＭ＿ＰＣＲ＿ＳＥＬＥＣＴＩＯＮで示されたＰＣＲの合成ハッシュを格納するＴＰＭ＿ＣＯＭＰＯＳＩＴＥ＿ＨＡＳＨとで表してもよい。ＲＩＭ証明書はこのようなＰＣＲ領域状態を含み、有効とみなされる証明書の領域に設定しなければならないＰＣＲ値を示す。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００６／０２１２９３９号明細書
【非特許文献】
【０００５】
【非特許文献１】ｔｈｅ  Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ’ｓ  （ＴＣＧ）  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  （ＭＴＭ）  ｄｏｃｕｍｅｎｔｓ  ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｖｅｒｓｉｏｎ  １．０  １２  Ｊｕｎｅ  ２００７
【非特許文献２】ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．０  １２  Ｊｕｎｅ  ２００７
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」によると、第１ＰＣＲ領域が第２ＰＣＲ領域の親である場合、その第２ＰＣＲ領域は、信頼性の推移チェーンを壊すことなく、自分自身を評価した測定に基づき、自身の領域にＰＣＲを設定することができない。ゆえに、先行技術で述べたように、各領域は独立した信頼性のチェーンを有する必要があり、その結果、第２領域のクライアントは第２ＰＣＲ領域のＰＣＲ値のみを調べることによって第１領域の信頼性を検証することができない。
【０００７】
したがって、第２ＰＣＲ領域のクライアントが第２ＰＣＲ領域のＰＣＲ値のみを調べることによって第１領域の信頼性の検証が可能な、両ＰＣＲ領域を統合する信頼性の単一チェーンを形成するため、これら２つの信頼性のチェーンをつなぎ合わせる装置が必要である。
【０００８】
２つの信頼性のチェーンをつなぎ合わせる場合、つなぎ合わせの行為が、２つの信頼性のチェーンの両所有者が相互に同意することによって承認され、かつ、どちらか一方の所有者がこの同意を一方的に無効にできることは有益であろう。
【０００９】
ゆえに、本願では、領域ごとの信頼性のチェーンをつなぎ合わせることによって信頼性を維持したまま、２つのＰＣＲ領域間における信頼性のブリッジを実現する方法、システムおよびコンピュータプログラム製品を提案する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明における情報処理装置は、第１シーケンスでブートされることが期待される複数のプログラムである第１プログラムと第２シーケンスでブートされることが期待される複数のプログラムである第２プログラムとを含む複数のプログラムを格納するプログラム格納手段と、前記第１プログラムのうちブートされた１以上のプログラムを示す第１蓄積情報を管理する第１管理手段と、前記第２プログラムのうちブートされた１以上のプログラムを示す第２蓄積情報を管理する、前記第１管理手段とは異なる第２管理手段と、全ての前記第１プログラムを前記第１シーケンスでブートしたことを示す第１期待蓄積情報と第２設定情報と同じであることが期待される第１設定情報とを含む第１証明書および、前記第２プログラムのいずれもブートされていないことを示す第２期待蓄積情報と前記第２蓄積情報に蓄積される値である前記第２設定情報とを含む第２証明書を格納する証明書格納手段と、前記第１シーケンスの最後のプログラムがブートされた場合で、かつ、前記第２シーケンスの最初のプログラムがブートされる前に、（ｉ）前記第１蓄積情報が前記第１期待蓄積情報と一致した場合、全ての前記第１プログラムが前記第１シーケンスでブートされたことを検証するよう、前記第１管理手段を制御し、（ｉｉ）前記第２蓄積情報が前記第２期待蓄積情報と一致した場合、前記第２プログラムのいずれもブートされていないことを検証するよう、前記第２管理手段を制御し、（ｉｉｉ）前記第１設定情報が前記第２設定情報と一致することを検証し、かつ、（ｉｖ）（ａ）全ての前記第１プログラムが前記第１シーケンスでブートされたこと、（ｂ）前記第２プログラムのいずれもブートされていないこと、および（ｃ）前記第１設定情報が前記第２設定情報と一致することを検証する場合、全ての前記第１プログラムが前記第１シーケンスでブートされ、かつ、前記第２プログラムのいずれもブートされていないことを示すために、前記第２設定情報を前記第２蓄積情報に蓄積するよう、前記第２管理手段を制御する、制御手段とを備えることを特徴とする情報処理装置である。
【００１１】
この構成によると、情報処理装置は、２つの証明書を用いて第１のプログラムと第２のプログラムとの関連付けを強化する。
【００１２】
ここで、情報処理装置が次の検証を行う場合、その情報処理装置は第２設定情報を第２蓄積情報に蓄積する。（ｉ）第１蓄積情報が第１期待蓄積情報と一致する場合、全ての第１プログラムが第１シーケンスでブートされたことを検証する。（ｉｉ）第２蓄積情報が第２期待蓄積情報と一致する場合、第２プログラムのいずれもブートされていないことを検証する。（ｉｉｉ）第１設定情報が第２設定情報と一致することを検証する。
【００１３】
ゆえに、情報処理装置は、第１プログラムと第２プログラムとのブート状態が適切であることを検証することによって領域ごとの信頼性のチェーンをつなぎ合わせることにより信頼性を維持したまま、第２設定情報を蓄積することによって、２つの領域（つまり、第１プログラムおよび第２プログラム）間の信頼性をブリッジすることができる。
【発明の効果】
【００１４】
本発明によれば、複数のプログラムをより信頼性の高い方法で起動することができる。
【図面の簡単な説明】
【００１５】
後述の好ましい実施形態の詳細な説明を以下の図面と共に考察することで、本発明のよりよい理解が得られる。
【図１Ａ】図１Ａは、先行技術を表すブロック図である。
【図１Ｂ】図１Ｂは、先行技術を表すブロック図である。
【図２】図２は、先行技術に係るＲＩＭ証明書である。
【図３】図３は、先行技術に従って信頼性のチェーンがどのように形成されたかを示す。
【図４Ａ】図４Ａは、本発明に係る情報処理装置の構成の一例を示すブロック図である。
【図４Ｂ】図４Ｂは、本発明に係る第１証明書および第２証明書の一例を示す模式図である。
【図５】図５は、本発明に従って信頼性のチェーンがどのように形成されたかを示す。
【図６Ａ】図６Ａは、ＰＣＲ領域間のブリッジを構築する間のモジュール間通信を示す。
【図６Ｂ】図６Ｂは、ＰＣＲ領域間のブリッジを構築する間のモジュール間通信の他の実施形態である。
【図７】図７は、ＰＣＲ領域を初期化するフローチャートである。
【図８Ａ】図８Ａは、ＰＣＲ領域を初期化するフローチャートである。
【図８Ｂ】図８Ｂは、ＰＣＲ領域を初期化するフローチャートの他の実施形態である。
【図９】図９は、ＰＣＲ領域のＰＣＲを初期化するフローチャートである。
【図１０】図１０は、親領域用のＲＩＭ証明書を検証するフローチャートである。
【図１１】図１１は、先行技術に係る仮想ＰＣＲである。
【図１２】図１２は、本発明に係る仮想ＰＣＲおよびＲＩＭ証明書である。
【発明を実施するための形態】
【００１６】
本発明の第１の形態における情報処理装置は、第１シーケンスでブートされることが期待される複数のプログラムである第１プログラムと第２シーケンスでブートされることが期待される複数のプログラムである第２プログラムとを含む複数のプログラムを格納するプログラム格納手段と、前記第１プログラムのうちブートされた１以上のプログラムを示す第１蓄積情報を管理する第１管理手段と、前記第２プログラムのうちブートされた１以上のプログラムを示す第２蓄積情報を管理する、前記第１管理手段とは異なる第２管理手段と、全ての前記第１プログラムを前記第１シーケンスでブートしたことを示す第１期待蓄積情報と第２設定情報と同じであることが期待される第１設定情報とを含む第１証明書および、前記第２プログラムのいずれもブートされていないことを示す第２期待蓄積情報と前記第２蓄積情報に蓄積される値である前記第２設定情報とを含む第２証明書を格納する証明書格納手段と、前記第１シーケンスの最後のプログラムがブートされた場合で、かつ、前記第２シーケンスの最初のプログラムがブートされる前に、（ｉ）前記第１蓄積情報が前記第１期待蓄積情報と一致した場合、全ての前記第１プログラムが前記第１シーケンスでブートされたことを検証するよう、前記第１管理手段を制御し、（ｉｉ）前記第２蓄積情報が前記第２期待蓄積情報と一致した場合、前記第２プログラムのいずれもブートされていないことを検証するよう、前記第２管理手段を制御し、（ｉｉｉ）前記第１設定情報が前記第２設定情報と一致することを検証し、かつ、（ｉｖ）（ａ）全ての前記第１プログラムが前記第１シーケンスでブートされたこと、（ｂ）前記第２プログラムのいずれもブートされていないこと、および（ｃ）前記第１設定情報が前記第２設定情報と一致することを検証する場合、全ての前記第１プログラムが前記第１シーケンスでブートされ、かつ、前記第２プログラムのいずれもブートされていないことを示すために、前記第２設定情報を前記第２蓄積情報に蓄積するよう、前記第２管理手段を制御する、制御手段とを備えることを特徴とする情報処理装置である。
【００１７】
この構成によると、情報処理装置は、２つのブリッジング証明書を用いて、（第１プログラムおよび第２プログラムに対応する）これら２つのＰＣＲ領域のリンクを行う。ここで、領域とは、上で定義したように、ＰＣＲを管理する関数およびモジュールの集合のことである。そして、本発明では、これら２つの証明書に含まれる情報を用いることによって、２つのＰＣＲ領域により構築された２つの信頼性のチェーンをつなぎ合わせ、本発明における信頼性の保証を高める。
【００１８】
さらに、この構成により、情報処理装置では、信頼性のチェーンごとのオーナーが、独立してそれら自身の証明書を無効にできて、上記つなぎ合わせを承認する証明書を生成することが可能になる。
【００１９】
本発明の第２の形態における情報処理装置は、前記制御手段が、さらに、（ａ）全ての前記第１プログラムが前記第１シーケンスでブートされたこと、（ｂ）前記第２プログラムのいずれもブートされていないこと、および（ｃ）前記第１設定情報が前記第２設定情報と一致することを検証する場合、全ての前記第１プログラムが前記第１シーケンスでブートされ、かつ、前記第２プログラムのいずれもブートされていないことを示すために、前記第１設定情報を前記第１蓄積情報に蓄積するよう、前記第１管理手段を制御することを特徴とする情報処理装置である。
【００２０】
この構成によると、情報処理装置は、第１設定情報を第１蓄積情報に蓄積することによって、検証の成功を第１プログラムの領域に反映する。したがって、情報処理装置は、第１プログラムの領域からも検証が成功したかどうかを確認することができる。
【００２１】
本発明の第３の形態における情報処理装置は、前記第１管理手段が、前記第１シーケンスでブートされた複数のプログラムのそれぞれを表す複数の第１代表情報を蓄積することにより前記第１蓄積情報を生成し、かつ、生成された前記第１蓄積情報を格納し、前記第２管理手段は、前記第１管理手段とは異なる方法で、前記第２シーケンスでブートされた複数のプログラムのそれぞれを表す複数の第２代表情報を蓄積することにより前記第２蓄積情報を生成し、かつ、生成された前記第２蓄積情報を格納することを特徴とする情報処理装置である。
【００２２】
この構成によると、情報処理装置は、互いに異なる方法で第１蓄積情報および第２蓄積情報それぞれを管理することができる。したがって、情報処理装置は、第１蓄積情報と第２蓄積情報とをより柔軟に管理することができる。
【００２３】
本発明の第４の形態における情報処理装置は、前記第２証明書が、前記第２期待蓄積情報と比較される前記第２蓄積情報をどのレジスタに格納すべきかを示すレジスタ識別子を含み、前記第２管理手段は、（ｉ）前記レジスタの代わりに、仮想識別子によって特定される格納場所へ前記第２蓄積情報を格納し、（ｉｉ）前記仮想識別子と前記レジスタ識別子との対応付けを示すマッピングテーブルを管理し、かつ、（ｉｉｉ）前記第２プログラムのいずれもブートされていないことを検証するために前記第２管理手段を制御する場合、前記第２証明書に含まれるレジスタ識別子と前記マッピングテーブルとを用いて前記第２蓄積情報を格納している前記格納場所を検索することを特徴とする情報処理装置である。
【００２４】
米国特許出願公開第２００６／０２１２９３９号明細書（特許文献１）において記載したような先行技術によると、識別子としてＧＵＩＤを用いて仮想ＰＣＲを名付ける。しかしながら、ＴＣＧが定義したＲＩＭ証明書の構造体では、互換性のない小さな整数インデックスが用いられる。ゆえに、従来の仮想ＰＣＲでは、ＴＣＧが定義したＲＩＭ証明書の構造体を用いることができない。この構成によると、情報処理装置は、第２証明書に含まれるレジスタ識別子とマッピングテーブルとを用いて第２蓄積情報を格納する格納場所を検索する。ゆえに、この構成により、情報処理装置では、ＴＣＧがすでに定義している小さな整数形式を用いてこれらの仮想ＰＣＲにインデックスを付けることが可能になる。すなわち、たとえ証明書が、（小さな整数インデックスに対応する）レジスタ識別子を用いて蓄積情報を格納している場所を示す従来の形式であったとしても、情報処理装置は蓄積情報を見つけることができる。
【００２５】
本発明の第５の形態における情報処理装置は、前記第１代表情報のそれぞれが、前記第１シーケンスでブートされた１以上のプログラムそれぞれから算出されたハッシュ値であるか、または、前記第１シーケンスでブートされた１以上のプログラムのうちの１つを示す文字列のハッシュ値であることを特徴とする情報処理装置である。
【００２６】
本発明の第６の形態における情報処理装置は、前記第２代表情報のそれぞれが、前記第２シーケンスでブートされた１以上のプログラムそれぞれから算出されたハッシュ値であるか、または、前記第２シーケンスでブートされた１以上のプログラムのうちの１つを示す文字列のハッシュ値であることを特徴とする情報処理装置である。
【００２７】
本発明の第７の形態における情報処理装置は、前記第１管理手段が、ＰＣＲと一時的ＰＣＲと仮想ＰＣＲとのいずれか１つを用いて前記第１蓄積情報を管理し、かつ、前記第２管理手段は、ＰＣＲと一時的ＰＣＲと仮想ＰＣＲとのいずれか１つを用いて前記第２蓄積情報を管理することを特徴とする情報処理装置である。
【００２８】
この構成によると、情報処理装置は、第１蓄積情報および第２蓄積情報として、ＰＣＲ体系の任意の組み合わせを用いることができる。したがって、情報処理装置は、第１蓄積情報と第２蓄積情報とをより柔軟に管理することができる。
【００２９】
以下に、本発明の好ましい実施形態を説明する。
【００３０】
図１Ａに、当該システムがＭＲＴＭ（Ｍｏｂｉｌｅ  Ｒｅｍｏｔｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ）およびＭＬＴＭ（Ｍｏｂｉｌｅ  Ｌｏｃａｌ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ）を含む場合の「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」における実施例に係る先行技術を示す。まず最初に、後述するコンポーネントから構成されるモバイル装置１００がある。この図の下から始めると、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」で定義されたようなＲｏＴ（信頼性のルート）１１８と、ＰＣＲセット１２０とを含むＭＲＴＭ１１６がある。１２２に示したように、このＰＣＲセットは複数の個別ＰＣＲを含んでおり、この図では、０から１５の計１６個ある。ＭＲＴＭ１１６の上には、様々なハードウェアおよびファームウェアの初期化関数を実行し、かつ、他のコンポーネントにサービスを提供する第１ブートコンポーネント１１４および第２ブートコンポーネント１１２がある。これらのコンポーネントの後にＭＬＴＭ１０４があり、このＭＬＴＭもまた、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」で定義されたようなＲｏＴ（信頼性のルート）１０６と、ＰＣＲセット１０８とを含む。１１０に示したように、このＰＣＲセットは複数の個別ＰＣＲを含んでおり、この図では、０から１５の計１６個ある。先行技術によると、ＭＬＴＭ１０４はいくつかの関数をＭＲＴＭ１１６に任せることが可能であるが、２つのＰＣＲセット１０８および１２０と２つのＲｏＴ１０６および１１８とは独立して動作する。そして、第１アプリケーション１０２をモバイル装置１００上で実行し、ＭＬＴＭ１０４によって提供される「ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」で定義されたような機能性にアクセスしたい場合は第１アプリケーションがＭＬＴＭ１０４と通信を行っても構わない。
【００３１】
図１Ｂに、当該システムがＭＲＴＭ（Ｍｏｂｉｌｅ  Ｒｅｍｏｔｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ）およびｔＰＣＲ（一時的ＰＣＲ）マネージャーを含む場合の特願２００８−２６４５３０号における実施形態に係る先行技術の他の形態を示す。当該システムの下層は図１Ａと同様である。まず最初に、後述するコンポーネントから構成されるモバイル装置１００がある。この図の下から始めると、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」で定義されたようなＲｏＴ（信頼性のルート）１１８と、ＰＣＲセット１２０とを含むＭＲＴＭ１１６がある。１２２に示したように、このＰＣＲセットは複数の個別ＰＣＲを含んでおり、この図では、０から１５の計１６個ある。ＭＲＴＭ１１６の上には、様々なハードウェアおよびファームウェアの初期化関数を実行し、かつ、他のコンポーネントにサービスを提供する第１ブートコンポーネント１１４および第２ブートコンポーネント１１２がある。先行技術では、これらのコンポーネントは別個のコンポーネントとして図示されていないが、単一のセキュアブートコンポーネントオブジェクトとしてまとめてグループ化されている。これらのコンポーネントの後にｔＰＣＲ（一時的ＰＣＲ）マネージャー２００があり、このマネージャーもまた、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」で定義されたようなＲｏＴ（信頼性のルート）１０６と、一時的ＰＣＲセット２０２とを含む。２０４に示したように、この一時的ＰＣＲセットは複数の個別ｔＰＣＲを含んでおり、この図では、０から１５の計１６個ある。先行技術によると、これらの値はｔＰＣＲマネージャー２００の作成時点で定義されたｔＰＣＲの基準値であり、ｔＰＣＲマネージャー２００の動作中はｔＰＣＲ値の変化が別の方法で記録されることに注意されたい。２つのＰＣＲセット１２０および２０２と２つのＲｏＴ１０６および１１８は独立して動作し、先行技術によると、ｔＰＣＲマネージャー２００はいくつかの関数をＭＲＴＭ１１６に任せることが可能である。そして、第１アプリケーション１０２をモバイル装置１００上で実行し、ｔＰＣＲマネージャー２００によって提供される特願２００８−２６４５３０号で定義されたような機能性にアクセスしたい場合は第１アプリケーションがｔＰＣＲマネージャー２００と通信を行っても構わない。
【００３２】
図２に、先行技術の他の形態、つまり、ＰＣＲ領域の期待状態と状態変化とを定義するために用いられるＲＩＭ（Ｒｅｆｅｒｅｎｃｅ  Ｉｎｔｅｇｒｉｔｙ  Ｍｅｔｒｉｃｓ）証明書の構造体３００を示す。状態の検証が成功した上で実行するために、期待状態は、ＰＣＲ領域に格納されたＰＣＲセットの値の代表値によって表され、状態変化は、同じＰＣＲ領域内の指名ＰＣＲへの拡張用値によって表される。当該構造体のフォーマットは「ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」で詳しく述べられているため、簡単な説明のみすると、各構造体は、この構造体のタイプがＲＩＭ証明書であることを示すｔａｇ  ３０２で始まる。ｌａｂｅｌ  ３０４はＲＩＭ証明書の識別子を含み、ｒｉｍＶｅｒｓｉｏｎ  ３０６はバージョン番号を保持する。ｒｅｆｅｒｅｎｃｅＣｏｕｎｔｅｒ  ３０８はロールバックやリフラッシュ等の攻撃からシステムを保護する単調カウンタを参照する。ｓｔａｔｅ  ３１０は、証明書を使用する時点でなくてはならないＰＣＲの状態を表す値およびフラグを含み、ｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ  ３１２  および  ｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ  ３１４は共に、ｓｔａｔｅ  ３１０がシステムの状態を正確に表している場合に成立する状態変化を定義している。また、先行技術によると、一部の証明書に対しては、ｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ  ３１４は検証が必要なモジュールのハッシュ値を含む。ｐａｒｅｎｔＩＤ  ３１６はＲＩＭ証明書の完全性を検証するために用いられるキー識別子を含み、ｅｘｔｅｎｓｉｏｎＤｉｇｅｓｔＳｉｚｅ  ３１８およびｅｘｔｅｎｓｉｏｎＤｉｇｅｓｔ  ３２０は証明書で定義された拡張データのハッシュおよびその長さを表し、そして、ｉｎｔｅｇｒｉｔｙＣｈｅｃｋＳｉｚｅ  ３２２およびｉｎｔｅｇｒｉｔｙＣｈｅｃｋ  ３２４は構造体が改ざんされていないことを検証する役目を果たす構造体の暗号ハッシュを表している。本発明では、ｌａｂｅｌ  ３０４、ｓｔａｔｅ  ３１０、ｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ  ３１２およびｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ  ３１４のフィールド使用法について特に注目する。その他のフィールドは、先行技術のとおりに設定および使用するとしても構わない。
【００３３】
図３に、当該システムがＭＲＴＭ（Ｍｏｂｉｌｅ  Ｒｅｍｏｔｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ）およびｔＰＣＲ（一時的ＰＣＲ）マネージャーを含む場合における先行技術の他の形態を示す。図１Ｂを基に、先行技術に係るＲＩＭ証明書の使用について図示する。前述したように、当該システムの下層は図１Ａと同様である。まず最初に、後述するコンポーネントから構成されるモバイル装置１００がある。この図の下から始めると、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」で定義されたようなＲｏＴ（信頼性のルート）１１８と、ＰＣＲセット１２０を含むＭＲＴＭ１１６がある。ＭＲＴＭ  １１６の上には、様々なハードウェアおよびファームウェアの初期化関数を実行し、かつ、他のコンポーネントにサービスを提供する第１ブートコンポーネント１１４および第２ブートコンポーネント１１２がある。これらのコンポーネントの後にｔＰＣＲ（一時的ＰＣＲ）マネージャー２００があり、このマネージャーもまた、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」で定義されたようなＲｏＴ（信頼性のルート）１０６と、一時的ＰＣＲセット２０２を含む。先行技術によると、ｔＰＣＲマネージャー２００はいくつかの関数をＭＲＴＭ１１６に任せることが可能である。そして、第１アプリケーション１０２をモバイル装置１００上で実行し、ｔＰＣＲマネージャー２００によって提供される機能性にアクセスしたい場合は第１アプリケーションがｔＰＣＲマネージャー２００と通信を行っても構わない。
【００３４】
先行技術によると、ＲＩＭ証明書の検証および拡張を利用することによって異なる別個の信頼性のチェーンが２つ当該システム内に構築される。信頼性の第１チェーン４１８を構築するために、ＲＩＭ証明書である第１証明書４００、第２証明書４０２、第３証明書４０４、第４証明書４０６、第５証明書４０８および第６証明書４１０を用いてＭＲＴＭ１１６内のＰＣＲ１２０をテストおよび拡張する。先行技術によると、第１証明書４００はＭＲＴＭ１１６の自己検証用であり、第２証明書４０２は、起動前に第１ブートコンポーネント１１４を検証するためＭＲＴＭ１１６が用いる。前記コンポーネントを起動する際には第３証明書４０４が自己検証用に用いられ、検証―起動―自己検証のパターンが第２ブートコンポーネント１１２に対しても第４証明書４０６および第５証明書４０８を用いて繰り返される。そして、第６証明書４１０を用いてｔＰＣＲマネージャー２００を起動前に検証する。このシーケンスにより、ＰＣＲ１２０から全てのコンポーネントを介して第２ブートコンポーネント１１２まで拡張する信頼性の第１チェーン４１８が構築される。この信頼性のチェーンを強調するために、ＭＲＴＭ１１６、ＲｏＴ１１８およびＰＣＲ１２０を左下から右上への斜線で陰を付け、また、第１証明書４００、第２証明書４０２、第３証明書４０４、第４証明書４０６、第５証明書４０８および第６証明書４１０の証明書も同様に陰を付けて、それらがＭＲＴＭのＰＣＲ１２０で定義された状態を検証かつ拡張することを示している。
【００３５】
信頼性の第２チェーン４２０を構築するために、ＲＩＭ証明書である第１０証明書４１２、第１１証明書４１４および第１２証明書４１６を用いてｔＰＣＲマネージャー２００内のｔＰＣＲ２０２をテストおよび拡張する。ｔＰＣＲマネージャー２００は、ｔＰＣＲ２０２を実行してそれらの初期値に初期化してから、第１０証明書４１２を用いて自身を検証する。要求が第１アプリケーション１０２の起動に及ぶ場合は、第１１証明書４１４を用いて第１アプリケーション１０２の完全性とｔＰＣＲ２０２の状態とを検証した後に、証明書が拡張され、アプリケーションが実行される。そして、第１アプリケーション１０２は、ｔＰＣＲ２０２の状態をテストおよび拡張する第１２証明書４１６を用いて自身を検証する。このシーケンスにより、ｔＰＣＲ２０２から全てのコンポーネントを介して第１アプリケーション１０２まで拡張する、未結合の信頼性の第２チェーン４２０が構築される。この信頼性のチェーンを強調するために、ｔＰＣＲマネージャー２００、ＲｏＴ  １０６およびｔＰＣＲ２０２を左上から右下への斜線で陰を付け、また、第１０証明書４１２、第１１証明書４１４および第１２証明書４１６の証明書も同様に陰を付けて、それらがｔＰＣＲマネージャーのｔＰＣＲ２０２で定義された状態を検証かつ拡張することを示している。
【００３６】
ここで、本発明に係る情報処理装置について説明する。
【００３７】
図４Ａは、本発明に係る情報処理装置１０の構成の一例を示すブロック図である。なお、情報処理装置１０は、例えば、モバイル装置１００である。
【００３８】
図４Ａに示す情報処理装置１０は、プログラム格納部２０と、第１管理部３０と、第２管理部４０と、証明書格納部５０と、制御部６０とを備える。
【００３９】
プログラム格納部２０は、複数の第１プログラム２１と複数の第２プログラム２２とを格納するメモリなどである。例えば、プログラム格納部２０は、モバイル装置１００が備える内部メモリなどである。なお、プログラム格納部２０は、後述する図５には示されていない。なお、図５は、本発明の情報処理装置１０によって、信頼性のチェーンがどのようにして形成されるかを説明するための模式図である。
【００４０】
第１プログラム２１は、第１シーケンスでブートされることが期待される複数のプログラムである。例えば、第１プログラム２１は、図５に示す第１ブートコンポーネント１１４および第２ブートコンポーネント１１２に相当する。
【００４１】
第２プログラム２２は、第２シーケンスでブートされることが期待される複数のプログラムである。例えば、第２プログラム２２は、図５に示す第１アプリケーション１０２に相当する。
【００４２】
第１管理部３０は、複数の第１プログラム２１のうちブートされた１以上のプログラムを示す第１蓄積情報を管理する。例えば、第１管理部３０は、図５に示すＰＣＲセット１２０を管理するＭＲＴＭ１１６に相当する。
【００４３】
例えば、第１管理部３０は、複数の第１代表情報を蓄積することで第１蓄積情報を生成し、生成した第１蓄積情報をＰＣＲセット１２０に格納する。複数の第１代表情報はそれぞれ、第１シーケンスでブートされるプログラムを表している。例えば、第１代表情報は、第１シーケンスでブートされた１以上のプログラムのそれぞれから算出されたハッシュ値、または、第１シーケンスでブートされた１以上のプログラムを示す文字列のハッシュ値である。
【００４４】
第２管理部４０は、複数の第２プログラム２２のうちブートされた１以上のプログラムを示す第２蓄積情報を管理する。例えば、第２管理部４０は、図５に示すｔＰＣＲセット２０２を管理するｔＰＣＲマネージャー２００に相当する。
【００４５】
例えば、第２管理部４０は、複数の第２代表情報を蓄積することで第２蓄積情報を生成し、生成した第２蓄積情報をｔＰＣＲセット２０２に格納する。複数の第２代表情報はそれぞれ、第２シーケンスでブートされるプログラムを表している。例えば、第２代表情報は、第２シーケンスでブートされた１以上のプログラムのそれぞれから算出されたハッシュ値、または、第２シーケンスでブートされた１以上のプログラムを示す文字列のハッシュ値である。
【００４６】
証明書格納部５０は、第１証明書５１と第２証明書５２とを格納するメモリなどである。第１証明書５１および第２証明書５２は、第１シーケンスと第２シーケンスとの間の信頼性のチェーンをつなぎ合わせるために用いられる証明書である。つまり、第１証明書５１および第２証明書５２は、全ての第１プログラム２１が第１シーケンスでブートされた後、第２プログラム２２がブートされる前に用いられる証明書である。なお、証明書格納部５０は、図５には示されていない。
【００４７】
図４Ｂは、第１証明書５１および第２証明書５２の一例を示す模式図である。
【００４８】
図４Ｂに示すように第１証明書５１は、第１期待蓄積情報５１ａと第１設定情報５１ｂとを含んでいる。第１証明書５１は、全ての第１プログラム２１が正しくブートされたことを検証するために用いられる。例えば、第１証明書５１は、図５に示す第１ブリッジング証明書５０２に相当する。なお、第１証明書５１の具体的な構造は、図２に示すＲＩＭ証明書と同じ構造である。
【００４９】
第１期待蓄積情報５１ａは、第１シーケンスで全ての第１プログラム２１がブートされたことを示す情報である。例えば、第１期待蓄積情報５１ａは、図２に示すＲＩＭ証明書の構造では、ｓｔａｔｅ３１０に格納される、ＰＣＲセット１２０の状態を示す値である。第１期待蓄積情報５１ａは、ＰＣＲセット１２０の状態を検証するために、すなわち、第１シーケンスで第１プログラム１２０が正しくブートされたか否かを検証するために用いられる情報である。
【００５０】
第１設定情報５１ｂは、第２証明書５２に含まれる第２設定情報５２ｂと等しいことが期待される情報である。つまり、第１証明書５１および第２証明書５２が共に改竄されていない適切な証明書である場合、第１設定情報５１ｂと第２設定情報５２ｂとは一致する。すなわち、第１設定情報５１ｂは、第１証明書５１と第２証明書５２とが適切な証明書であるか否かを検証するために用いられる情報である。例えば、第１設定情報５１ｂは、図２に示すＲＩＭ証明書の構造では、ｍｅａｓｕｒｅｍｅｎｔＰＣＲｉｎｄｅｘ３１２およびｍｅｓｕｒｅｍｅｎｔＶａｌｕｅ３１４に格納される値であり、例えば、ハッシュ値である。
【００５１】
また、図４Ｂに示すように、第２証明書５２は、第２期待蓄積情報５２ａと第２設定情報５２ｂとを含んでいる。第２証明書５２は、第２プログラム２２のいずれもブートされていないことを検証するために用いられる。例えば、第２証明書５２は、図５に示す第２ブリッジング証明書５０６に相当する。なお、第２証明書５２の具体的な構造は、図２に示すＲＩＭ証明書と同じ構造である。
【００５２】
第２期待蓄積情報５２ａは、第２プログラム２２のいずれもブートされていないことを示す情報である。例えば、第２期待蓄積情報５２ａは、図２に示すＲＩＭ証明書の構造では、ｓｔａｔｅ３１０に格納される、ｔＰＣＲセット２０２の状態を示す値である。第２期待蓄積情報５２ａは、ｔＰＣＲセット２０２の状態を検証するために、すなわち、第２プログラム２２がいずれもブートされていないか否かを検証するために用いられる情報である。
【００５３】
第２設定情報５２ｂは、第２蓄積情報に蓄積される値を示す情報である。例えば、第２設定情報５２ｂは、図２に示すＲＩＭ証明書の構造では、ｍｅａｓｕｒｅｍｅｎｔＰＣＲｉｎｄｅｘ３１２およびｍｅｓｕｒｅｍｅｎｔＶａｌｕｅ３１４に格納される値であり、例えば、ハッシュ値である。
【００５４】
図４Ａに戻り、制御部６０は、本実施の形態の情報処理装置１０の動作を制御する。具体的には、第１シーケンスの最後のプログラムがブートされた場合で、かつ、第２シーケンスの最初のプログラムがブートされる前に、第１管理部３０および第２管理部４０を制御することで、検証と情報の蓄積とを行う。例えば、制御部６０は、後述する図６Ａなどのセキュアブート６００に相当する（図５には図示されていない）。制御部６０の具体的な処理は以下の通りである。
【００５５】
制御部６０は、第１シーケンスの最後のプログラムがブートされた場合で、かつ、第２シーケンスの最初のプログラムがブートされる前に、まず、第１管理部３０を制御することで、第１蓄積情報が第１期待蓄積情報と一致するか否かを判定する。つまり、制御部６０は、ＰＣＲセット１２０の状態が第１証明書５１に含まれる第１期待蓄積情報５１ａに一致するかを判定することで、全ての第１プログラム２１が第１シーケンスで正しくブートされたことを検証する。ＰＣＲセット１２０の状態が第１期待蓄積情報５１ａに一致する場合が、全ての第１プログラム２１が第１シーケンスで正しくブートされたことを示す。
【００５６】
また、制御部６０は、第２管理部４０を制御することで、第２蓄積情報が第２期待蓄積情報と一致するか否かを判定する。つまり、制御部６０は、ｔＰＣＲセット２０２の状態が第２証明書５２に含まれる第２期待蓄積情報５２ａに一致するかを判定することで、第２プログラム２２のいずれもブートされていないことを検証する。ｔＰＣＲセット２０２の状態が第２期待蓄積情報５２ａに一致する場合が、第２プログラム２２のいずれもブートされていないことを示す。
【００５７】
さらに、制御部６０は、第１設定情報と第２設定情報とが一致するか否かを検証する。つまり、制御部６０は、第１証明書５１に含まれる第１設定情報５１ｂと第２証明書５２に含まれる第２設定情報５２ｂとが一致するか否かを検証することで、第１証明書５１と第２証明書５２とが、改竄などされていない適切な証明書であることを検証する。第１設定情報５１ｂと第２設定情報５２ｂとが一致した場合が、第１証明書５１と第２証明書５２とが適切な証明書であることを示す。
【００５８】
また、制御部６０は、全ての第１プログラム２１が第１シーケンスでブートされたこと、第２プログラム２２のいずれもブートされていないこと、および、第１設定情報５１ｂと第２設定情報５２ｂとが一致することが検証された場合、第２設定情報５２ｂを第２蓄積情報に蓄積するように、第２管理部４０を制御する。これにより、第２蓄積情報は、全ての第１プログラム２１が第１シーケンスでブートされ、かつ、第２プログラム２２のいずれもがブートされていないことを示すようになる。つまり、制御部６０は、第２管理部４０を制御することで、第２設定情報５２ｂを第２蓄積情報に蓄積することで、すなわち、第２設定情報５２ｂをｔＰＣＲセット２０２に拡張することで、全ての第１プログラム２１が第１シーケンスでブートされ、かつ、第２プログラム２２のいずれもがブートされていないことをｔＰＣＲセット２０２の状態に反映させる。
【００５９】
なお、制御部６０は、全ての第１プログラム２１が第１シーケンスでブートされたこと、第２プログラム２２のいずれもブートされていないこと、および、第１設定情報５１ｂと第２設定情報５２ｂとが一致することが検証された場合、第１設定情報５１ｂを第１蓄積情報に蓄積するように、第１管理部３０を制御してもよい。これにより、第１蓄積情報は、全ての第１プログラム２１が第１シーケンスでブートされ、かつ、第２プログラム２２のいずれもがブートされていないことを示すようになる。つまり、制御部６０は、第１管理部３０を制御することで、第１設定情報５１ｂを第１蓄積情報に蓄積することで、すなわち、第１設定情報５２ｂをＰＣＲセット１２０に拡張することで、全ての第１プログラム２１が第１シーケンスでブートされ、かつ、第２プログラム２２のいずれもがブートされていないことをＰＣＲセット１２０の状態に反映させてもよい。
【００６０】
以上の構成により、本実施の形態に係る情報処理装置１０は、第１証明書５１と第２証明書５２とを用いることで、第１シーケンスと第２シーケンスとの間の信頼性のチェーンをつなげることができるので、第１シーケンスと第２シーケンスとの間の独立性を保ちつつ、信頼性をより高めることができる。
【００６１】
図５に、図３で説明した先行技術に基づく本発明におけるＲＩＭ証明書の使用法を示す。２つの図を比較すると、すぐに目を引く違いは、前述の第１０証明書４１２が第１０’証明書５０８になり、かつ、その陰の付け方がＭＲＴＭ１１６内の状態を検証かつ拡張する証明書であることを示すように変更されている点である。また、２つの新たな証明書、第１ブリッジング証明書５０２および第２ブリッジング証明書５０６が存在する。これらの変更によって新たな信頼性の第１チェーン５００が本発明に基づいてどのように構築されるかについて、以下に詳細を述べる。
【００６２】
図３で述べたように、当該システムの下層は図１Ａと同様である。まず最初に、後述するコンポーネントから構成されるモバイル装置１００がある。この図の下から始めると、「ＴＣＧＭｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」で定義されたようなＲｏＴ（信頼性のルート）１１８と、ＰＣＲセット１２０とを含むＭＲＴＭ１１６がある。ＭＲＴＭ  １１６の上には、様々なハードウェアおよびファームウェアの初期化関数を実行し、かつ、他のコンポーネントにサービスを提供する第１ブートコンポーネント１１４および第２ブートコンポーネント１１２がある。これらのコンポーネントの後にｔＰＣＲ（一時的ＰＣＲ）マネージャー２００があり、このマネージャーもまた、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」で定義されたようなＲｏＴ（信頼性のルート）１０６と、一時的ＰＣＲセット２０２を含む。先行技術によると、ｔＰＣＲマネージャー２００はいくつかの関数をＭＲＴＭ１１６に任せることが可能である。そして、第１アプリケーション１０２をモバイル装置１００上で実行し、ｔＰＣＲマネージャー２００によって提供される機能性にアクセスしたい場合は第１アプリケーションがｔＰＣＲマネージャー２００と通信を行っても構わない。
【００６３】
次に、ＲＩＭ証明書である第１証明書４００  、第２証明書４０２、第３証明書４０４、第４証明書４０６  、第５証明書４０８および第６証明書４１０を用いてＭＲＴＭ１１６内のＰＣＲ１２０をテストおよび拡張する。先行技術によると、第１証明書４００はＭＲＴＭ１１６の自己検証用であり、第２証明書４０２は、起動前に第１ブートコンポーネント１１４を検証するためＭＲＴＭ１１６によって用いられる。前記コンポーネントを起動する際には第３証明書４０４が自己検証用に用いられ、検証―起動―自己検証のパターンが第２ブートコンポーネント１１２に対しても第４証明書４０６および第５証明書４０８を用いて繰り返される。そして、第６証明書４１０を用いてｔＰＣＲマネージャー２００を起動前に検証する。
【００６４】
ここで、ｔＰＣＲマネージャー２００は、第１０’証明書５０８を用いて自分自身を実行かつ検証して、ＭＲＴＭ１１６に検証を要求し、ＭＲＴＭ１１６のＰＣＲ１２０から拡張する信頼性のチェーンにｔＰＣＲマネージャー２００自身を加える。ｔＰＣＲマネージャー２００は、初期ｔＰＣＲ２０２を規定の初期値に設定するなど他の初期化を行う。好ましい実施形態において、ｔＰＣＲ０の初期値はｔＰＣＲマネージャー２００を実行しているプラットフォームを表す値に設定され、ｔＰＣＲ１の初期値はｔＰＣＲマネージャー２００のＲｏＴ１０６のハッシュに、その他全てのｔＰＣＲ初期値は０に設定される。
【００６５】
信頼性のチェーンがＰＣＲ１２０からｔＰＣＲ２０２へブリッジ可能であって、結果的に２つのＰＣＲ領域を介した単一の連続チェーンとなるためには、２つのＲＩＭ証明書、第１ブリッジング証明書５０２および第２ブリッジング証明書５０６が必要である。これらのＲＩＭ証明書のフォーマットは図２で示したものと同じである。他のＲＩＭ証明書とこれらのＲＩＭ証明書とを区別するのは、これらのＲＩＭ証明書の使用法と、ｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ３１２およびｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ３１４フィールドの特定値である。第１ブリッジング証明書５０２には、ＭＲＴＭ１１６内で検証されるＰＣＲ状態、すなわち、ＰＣＲ１２０で生じる状態変化が記載され、ＭＲＴＭ１１６により検証される先行技術で説明したような完全性チェック値によって保護される。第２ブリッジング証明書５０６には、ｔＰＣＲマネージャー２００内で検証されるｔＰＣＲ状態、すなわち、ｔＰＣＲ２０２で生じる状態変化が記載され、ｔＰＣＲマネージャー２００により検証される先行技術で説明したような完全性チェック値によって保護される。第２ブリッジング証明書５０６が先行技術で定義したような内部ＲＩＭ証明書であり、かつ、ｔＰＣＲマネージャー２００がキー情報用の格納空間を保護しなかった場合の好ましい実施形態では、第２ブリッジング証明書５０６の完全性チェック値の検証をＭＲＴＭ１１６コンポーネントに任せる。
【００６６】
また、別々の領域２つのブリッジはこれらの２つの証明書内で定義され、２つのブリッジング証明書をつなげる線５０４で図式的に示される。図２で図示したように、ＲＩＭ証明書３００内には、成立する状態変化を共に定義するｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ  ３１２およびｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ３１４がある。先行技術で説明したような証明書発行機関は、それら自身の間でこれらのフィールド２つに対するある値について同意を行い、それぞれが自身の証明書を生成して装置に証明書を配信する。ゆえに、初期化中に、ｔＰＣＲマネージャー２００は、第１ブリッジング証明書５０２および第２ブリッジング証明書５０６の両方を検索し、第１ブリッジング証明書５０２に現在のＭＲＴＭのＰＣＲ１２０状態が記載されているという検証をＭＲＴＭ１１６に要求し、第２ブリッジング証明書５０６に現在のｔＰＣＲマネージャーのｔＰＣＲ２０２状態が記載されているかを自分自身で検証し、ｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ３１２およびｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ３１４の値が第１ブリッジング証明書５０２および第２ブリッジング証明書５０６の両方において同じであることを検証することによって、ブリッジ５０４を構築できることを確立し、そして、第２ブリッジング証明書５０６においてｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ３１４をｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ３１２へ拡張して、ｔＰＣＲ２０２の初期状態として新たな値を設定する。このようにして、ＭＲＴＭのＰＣＲ１２０とｔＰＣＲ２０２とのブリッジが構築され、信頼性の第１チェーン５００はｔＰＣＲ２０２まで拡張される。
【００６７】
アプリケーション空間における証明書およびｔＰＣＲの使用法は、図３で説明したとおりに進展する。例えば、要求が第１アプリケーション１０２の起動に及ぶ場合は、第１１証明書４１４を用いて第１アプリケーション１０２の完全性とｔＰＣＲ２０２の状態とを検証した後に、証明書が拡張され、アプリケーションが実行される。そして、第１アプリケーション１０２は、ｔＰＣＲ２０２の状態をテストする第１２証明書４１６を用いて自身を検証する。このシーケンスにより、ｔＰＣＲ２０２から全てのコンポーネントを介して第１アプリケーション１０２まで拡張する、未結合の信頼性の第２チェーン４２０が構築される。このように、第１アプリケーション１０２がいったん実行されると、信頼性の第１チェーン５００は、図示したようにＭＲＴＭのＰＣＲ１２０からずっと第１アプリケーション１０２へ伸びている。
【００６８】
図６Ａに、図１Ｂに基づいた、ＰＣＲ領域間のブリッジを構築する間のモジュール間通信を示す。関連モジュールは、セキュアブート６００とＭＲＴＭのＰＣＲ１２０とｔＰＣＲマネージャー２００と一時的ＰＣＲ２０２である。セキュアブート６００は、ＭＲＴＭ１１６、第１ブートコンポーネント１１４および第２ブートコンポーネント１１２が提供する機能を網羅する。本図の右側に、先行技術６０２の部分と本発明６０４の部分とである当該通信の区分を示す。
【００６９】
先行技術によると、まず、ｔＰＣＲマネージャーモジュール２００の起動前に、セキュアブート６００モジュールが、ｔＰＣＲマネージャーの起動前検証ＲＩＭ証明書（このＲＩＭ証明書は図５の第６証明書４１０である）を取得し６０６、ＲＩＭ証明書の値を用いてｔＰＣＲマネージャーのイメージのハッシュを算出かつ検証し６０８、そのＲＩＭ証明書を検証してＭＲＴＭのＰＣＲ１２０に拡張する６１０。そして、制御をｔＰＣＲマネージャーに渡す６１２。次に、ｔＰＣＲマネージャー２００は、先行技術に従って自己検証を行う必要があるため、後にロードする自分自身のＲＩＭ証明書（このＲＩＭ証明書は図５の第１０’証明書５０８である）を検索する６１４。ここで先行技術に係る通信は終了するので、次からが本発明に係る通信である。
【００７０】
図５で図示したように、自己検証のＲＩＭ証明書である第１０’証明書５０８は親領域、ここではセキュアブート６００からのＰＣＲを用いるため、ＲＩＭ証明書を検証してその値を拡張する要求がセキュアブートに送信される６１６。そして、セキュアブート６００は自身のＭＲＴＭのＰＣＲ１２０を用いてＲＩＭ証明書を検証かつ拡張する６１８。ここで、ｔＰＣＲマネージャー２００は期待された信頼できる環境に存在すると証明されたことになり、図３の説明において述べたように自身の一時的ＰＣＲを初期化することができる６２０。次に、ｔＰＣＲマネージャーは、セキュアブートにブリッジングＲＩＭ証明書を要求し６２２、自分自身のブリッジングＲＩＭ証明書を検索する６２４。これらはそれぞれ、図５の第１ブリッジング証明書５０２と第２ブリッジング証明書５０６とに対応している。そして、ｔＰＣＲマネージャー２００は、ｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ３１２およびｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ３１４の値が２つのＲＩＭ証明書で同じであることを検証し６２６、６２２で検索されたＲＩＭ証明書が有効であることを確認するようセキュアブートに要求する６２８。後ほどより詳しく説明するが、ｔＰＣＲマネージャー２００とセキュアブート６００との通信チャネルが改ざんされることを防ぐため、この動作６２２はセキュアなチャネル上で行われる。先行技術によると、好ましい実装では、「Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ」が定義したＯＳＡＰプロトコルが用いられる。そして、セキュアブートは、ＭＲＴＭのＰＣＲ１２０に格納された値に対して第１ブリッジング証明書５０２のＰＣＲ値を検証する６３０。好ましい実装では、ｔＰＣＲマネージャー２００はＭＲＴＭのＰＣＲ１２０の拡張された値をテストせず、ブリッジングＲＩＭ証明書の拡張用値は拡張されない点に注意されたい。しかしながら、ＭＲＴＭ１１６の子でもある第２ＰＣＲ領域がＭＲＴＭのＰＣＲ１２０を介して第１ＰＣＲ領域が存在するか否かをテストしたい場合のような他の実装では、値をＭＲＴＭのＰＣＲ１２０に拡張してもよい。
【００７１】
セキュアブートのブリッジングＲＩＭ証明書が正常に検証されると、ＭＲＴＭのＰＣＲ１２０から一時的ＰＣＲ２０２へ信頼性のチェーンを拡張する最終ステップは、第２ブリッジング証明書５０６を検証して一時的ＰＣＲ２０２へ拡張することであり６３２、ブリッジングＲＩＭ証明書のｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ３１２とｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ３１４との値に記述されたＰＣＲを介して２つの領域間にブリッジが構築される。ｔＰＣＲマネージャーの使用を希望するアプリケーションはこの拡張された値をテストすることができ、さらに、これらのアプリケーションへ信頼性のチェーンを拡張する。
【００７２】
図６Ｂに、図１Ｂに基づいた、ＰＣＲ領域間のブリッジを構築する間のモジュール間通信のその他の実施形態を示す。この図に示されたフローは、上記図６Ａのフローを再現したものであり、ブリッジング動作の成功の証明として親領域のブリッジングＲＩＭ証明書を親領域に拡張するという最終ステップが付け加わる。第２ブリッジング証明書５０６を検証して一時的ＰＣＲ２０２へ拡張する６３２ことによってＭＲＴＭのＰＣＲ１２０から一時的ＰＣＲ２０２へ信頼性のチェーンが構築された後に、ｔＰＣＲマネージャー２００は、６２２で検索されたＲＩＭ証明書が有効であることを再確認するようセキュアブートに要求し６５０、有効であれば、６５２に示すように、親領域のＰＣＲ１２０へ、すなわち、指示されたｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ３１４の値を指示されたｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ３１２へ拡張する。
【００７３】
図７および図８Ａに、図６Ａで図示したモジュール間通信に基づく、ＰＣＲ領域を初期化するフローチャートを示す。本フローチャートはｔＰＣＲマネージャー２００の初期化だけを説明するのではなく、同じプロセスを用いてＭＬＴＭ１０４などを初期化してもよいことに注意されたい。本プロセスは、図６Ａにおける本発明６０４の線の始点で図示されたポイント、すなわち、領域の初期化開始７００から始まる。まず、ＰＣＲは、後述するプロセスにおいて基準初期値に初期化され７０２、ブリッジングＲＩＭ証明書を親領域に要求する７０４。これを図５と関連付けると、要求された証明書とは第１ブリッジング証明書５０２であり、親領域とはＭＲＴＭ１１６および関連モジュールである。証明書が正しく受信されなかった場合７０６、エラーが返され７２０、領域の初期化は失敗となる。ＯＫの場合はモジュール自身のＲＩＭ証明書が検索され（第２ブリッジング証明書５０６）、前記証明書が見つからなかった場合７１０はエラーが返され７２０、領域の初期化は失敗となる。次に、２つの証明書のｍｅａｓｕｒｅｍｅｎｔＰＣＲＩｎｄｅｘ３１２およびｍｅａｓｕｒｅｍｅｎｔＶａｌｕｅ３１４フィールドを比較し７１２、等しくなければエラーが返され７２０、領域の初期化は失敗となる。等しい場合は、次に、親領域へのセキュアな通信チャネルを開く７１４。先行技術によると、好ましい実装では、「Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ」が定義したＯＳＡＰプロトコルが用いられる。そして、親領域からのブリッジングＲＩＭ証明書が後述するプロセスにおいて検証され７１６、７１４で開かれたセキュアなチャネルを閉じる７１８。
【００７４】
フローチャートは図８Ａに続き、７１６における先の親ＰＣＲ領域のＲＩＭ証明書の検証結果をチェックする８００。チェックが失敗であればエラーが返され７２０、領域の初期化は失敗となる。チェックが成功した場合は、新たな領域用のブリッジングＲＩＭ証明書を検証して新たな領域内に拡張する８０２。―  図５によると、第２ブリッジング証明書５０６はｔＰＣＲマネージャー２００によって検証され、結果として得られた拡張された値をｔＰＣＲ２０２に格納される一時的ＰＣＲ基準値として用いる。特願２００８−２６４５３０号で記載したような先行技術によると、ｔＰＣＲマネージャー２００自身は第２ブリッジング証明書５０６のｉｎｔｅｇｒｉｔｙＣｈｅｃｋ３２４の検証を許可するキーを有していないが、その代わりに、完全性検証を親領域に任せる。子領域がＭＬＴＭ１０４である図１Ａで図示した好ましい実施形態では、本検証をＭＬＴＭ１０４自体で行っても構わない。
【００７５】
検証および拡張動作が失敗した場合８０４、前述のとおりエラーが返され７２０、領域の初期化は失敗となる。そうでない場合は、領域の初期化ルーチンは成功ステータスコードを返す８０６。
【００７６】
その他の好ましい実施形態では、新たな領域用のブリッジングＲＩＭ証明書の検証および拡張８０２が成功した証明を親領域に付け加える。図７および図８Ｂに、図６Ｂで図示したモジュール間通信に基づく、ＰＣＲ領域を初期化するフローチャートを示す。フローチャートは、上述したとおり、検証および拡張動作が成功したかどうかのチェックへ進むが８０４、図８Ａのようにすぐに成功コードを返すのではなく、親領域へのセキュアな通信チャネルを開く８５０。先行技術によると、好ましい実装では、「Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ」が定義したＯＳＡＰプロトコルが用いられる。そして、親領域からのブリッジングＲＩＭ証明書が、好ましい実装では「Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ」のモバイルトラステッドモジュールのＭＴＭ＿ＶｅｒｉｆｙＲＩＭＣｅｒｔＡｎｄＥｘｔｅｎｄ  ＡＰＩを用いて検証かつ拡張され８５２、８５０で開かれたセキュアなチャネルを閉じる８５４。検証および拡張動作が失敗した場合８５６、前述したようにエラーが返され７２０、領域の初期化は失敗となる。そうでない場合は、領域の初期化ルーチンは成功ステータスコードを返す８０６。
【００７７】
図９に、ＰＣＲ領域のＰＣＲを初期化するフローチャートを示す。ＰＣＲを初期化する単純な本プロセス９００は、ＰＣＲ領域を表す値にＰＣＲ０を設定する９０２ことで開始する。先行技術によると、これは「ＨＷプラットフォームの関連特性」である。ソフトウェアに実装されたＭＬＴＭまたはｔＰＣＲマネージャーに対し、このような値は適合していなくてもよいため、例えば、「Ｐａｎａｓｏｎｉｃ  ｔＰＣＲ  Ｍａｎａｇｅｒ  ｖ１」など、アプリケーションおよびリビジョンレベルを識別する文字列のハッシュで置き換えることが可能である。次に、ＰＣＲ１はＲｏＴ、つまり、図１Ａおよび図１Ｂで図示されたＲｏＴブロック１０６のハッシュに初期化される９０４。そして、残りのＰＣＲは０に初期化され９０６、本プロセスは呼び出し側へリターンする９０８。
【００７８】
図１０に、図７の７１６で説明したプロセスを実装した、親領域用のＲＩＭ証明書を検証するフローチャートを示す。本プロセスの要件は、実ＰＣＲ値のハッシュ値を算出し、その値を保存ハッシュ値と比較することである。本ルーチンは１０００から始まり、まず、親領域にＲＩＭ証明書の検証を要求する１００２。好ましい実装では、これはＡＰＩ  ＭＴＭ＿ＶｅｒｉｆｙＲＩＭＣｅｒｔを用いて、ＲＩＭ証明書の構造体３００のフィールドが正しく構成されているか、および、ｉｎｔｅｇｒｉｔｙＣｈｅｃｋＳｉｚｅ３２２とｉｎｔｅｇｒｉｔｙＣｈｅｃｋＤａｔａ３２４とがその構造体に対して有効な署名を含んでいるかをチェックする。本ステップは、ｓｔａｔｅフィールド３１０によって定義された実ＰＣＲ値のいかなる妥当性チェックも行わないことに注意されたい。この検証が成功しなかった場合１００４、プロセスは検証失敗エラーを呼び出し側のプロセスに返す１０２２。そうでない場合は、実ＰＣＲ１２０が期待値に設定されているかどうか把握するために、ｓｔａｔｅフィールド３１０に定義された個々のフィールドのハッシュをチェックする必要がある。これを行うには、まず、ハッシュ算出を初期化し１００６、そして、ｓｔａｔｅ．ｐｃｒＳｅｌｅｃｔｉｏｎフィールド３１０に設定されたビットごとに１００８、このビットに対応するＰＣＲインデックスの値を親領域に要求する１０１０。
【００７９】
そのデータの検索に失敗した場合１０１２、プロセスは検証失敗エラーを呼び出し側のプロセスに返し１０２２、そうでない場合は、返されたＰＣＲ値をＰＣＲ値全ての合成ハッシュに付け加える１０１４。ＰＣＲを表すｓｔａｔｅ．ｐｃｒＳｅｌｅｃｔｉｏｎ３１０のビット全てがテストされるまで、本ループを繰り返す。最終検証を行うために、ハッシュ算出を終了させ１０１６、算出したハッシュをｓｔａｔｅ．ｄｉｇｅｓｔＡｔＲｅｌｅａｓｅ３１０に格納されているハッシュと比較する。フィールドが等しくない場合１０１８、プロセスは検証失敗エラーを呼び出し側のプロセスに返し１０２２、そうでない場合は、親ＲＩＭ証明書が有効であると分かるため、成功検証コードを呼び出し側のプロセスに返す１０２０。
【００８０】
図１１に、米国特許出願公開第２００６／０２１２９３９号明細書（特許文献１）に係る先行技術の他の形態を示す。モバイル装置１００内に、２列のテーブル１１０２を管理する仮想ＰＣＲマネージャー１１００がある。第１列目は仮想ＰＣＲ用の識別子であって、１つの具体例であるＧＵＩＤ（Ｇｌｏｂａｌ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒｓ）１１０４  を有し、第２列目は実仮想ＰＣＲ値１１０６である。
【００８１】
図１２に、本発明に係る仮想ＰＣＲとＲＩＭ証明書とを示す。図１１で図示したように、第１列目が仮想ＰＣＲ用の識別子であって、１つの具体例であるＧＵＩＤ（Ｇｌｏｂａｌ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒｓ）１１０４を有する２列のテーブル１１０２を管理する仮想ＰＣＲマネージャー１１００がある。この第２列目は実仮想ＰＣＲ値１１０６である。任意のＲＩＭ証明書１２００のＰＣＲ参照をインデックス番号からＧＵＩＤに変換するため、インデックスをＧＵＩＤにマッピングする新たなテーブル１２０２を定義する。このテーブルは、仮想ＰＣＲマネージャー１１００によってそのコンポーネントの初期化中に作成され、２つの列を含む。第１列目にはテーブル１１０２を評価するＧＵＩＤ内のＧＵＩＤ１１０４を参照するＧＵＩＤ１２０４を含む。このテーブル１２０２の順序は、本テーブルの第１行目がＲＩＭ証明書１２００のＰＣＲ０に対応するため、（特定の順序がない先行技術に係るテーブル１１０２とは違って）重要である。ゆえに、本テーブル１２０２に格納されたＧＵＩＤを検索することによって、対応するＰＣＲ値をテーブル１１０２から検索することができる。本テーブル１２０２の第２列目１２０６にはこの行のＰＣＲが検証済みかどうかを示す指示子が含まれる。この列は、「ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」で定義されているＭＴＭ＿ＰＥＲＭＡＮＥＮＴ＿ＤＡＴＡ−＞ｖｅｒｉｆｉｅｄＰＣＲｓを具体化したものである。当業者であれば、先行技術に係る上述のものと同類のビットマップなど、この列１２０６の他の実装が可能であると分かるであろう。
【００８２】
さらに、クライアントがテーブル１１０２の仮想ＰＣＲの変換を行うよう仮想ＰＣＲマネージャーに要求すればいつでも、要求された仮想ＰＣＲのＧＵＩＤが検証済みの仮想ＰＣＲでないことを保証するため、本テーブル１２０２をチェックしなければならない。好ましい実施形態では、仮想ＰＣＲマネージャー１１００の初期化時にＧＵＩＤ列１２０４をランダムに生成するため、クライアントにそのＧＵＩＤ列を知られることはない。図示したテーブル１２０２において、ＧＵＩＤ１１に対する列１２０６の空白は、未検証のＰＣＲであることを示している。
【００８３】
このように、本実施の形態に係る情報処理装置１０では、第２証明書５２は、第２期待蓄積情報５２ａと比較される第２蓄積情報を、ｔＰＣＲセット２０２のどのレジスタに格納すべきかを示すレジスタ識別子を含んでいてもよい。つまり、ここでいうレジスタ識別子とは、例えば、図１２に示す例では、ＲＩＭ証明書１２００における「ＰＣＲ  ０」および「ＰＣＲ  １５」などの「０」および「１５」に相当する。
【００８４】
そして、第２管理部４０は、仮想識別子とレジスタ識別子との対応付けを示すマッピングテーブル（図１２に示すテーブル１２０２）を管理すればよい。仮想識別子は、図１２に示す例では、ＧＵＩＤ１２０４に相当する。そして、第２管理部４０は、レジスタの代わりに、仮想識別子によって特定される格納場所へ第２蓄積情報を格納する。
【００８５】
また、第２管理部４０は、第２プログラムのいずれもブートされていないことを検証するように制御される際には、第２証明書５２に含まれるレジスタ識別子とマッピングテーブルとを利用することで第２蓄積情報を格納している格納場所を検索する。
【００８６】
このように、ＧＵＩＤなどの仮想識別子とマッピングテーブルを用いた場合にも、本発明は適用することができる。
【００８７】
本発明は上記の実施形態に基づいて述べられているが、本発明は明らかにそのような実施の形態に限定されるものではない。下記のケースもまた本発明に含まれる。
【００８８】
（１）上述の実施形態は、モバイルトラステッドモジュールおよびセキュアブートの仕様の要件に従う。しかしながら、本発明を、「Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ’ｓ  ＴＣＧ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐａｒｔ  ＩＩ  −  Ｉｎｔｅｇｒｉｔｙ  Ｍａｎａｇｅｍｅｎｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．」で定義したような、トラステッドプラットフォームモジュールを備え、かつ／または、トラステッドブート仕様をサポートするシステムに適用してもよい。
【００８９】
（２）上述の実施形態では、ＭＴＭ仕様書と同様の方法で検証は行われた。しかしながら、本発明を他の検証システムに適用してもよい。ただし、コンポーネントをチェーンのように検証する検証方法で検証システムがシステムのコンポーネントを検証できる場合（例えば、あるコンポーネントがそのコンポーネントの後に起動する他のコンポーネントを検証する）に限る。例えば、ハッシュ値のＭＴＭへの拡張などの動作はＴＣＧ仕様書に固有なものであるため、省略してもよい。
【００９０】
（３）上述の実施形態では、証明書（ＲＩＭ証明書）内でハッシュ値を使用することにより検証は行われた。しかしながら、ハッシュ値を使用しない他の検証方法が本発明に適用されてもよい。
【００９１】
従来のチェックサムや、コンポーネントから抽出される別のデータ（例えば、コンポーネントから抽出される第１所定ビット）が、検証を行うために使用されてもよい。また、証明書は、完全性チェック値を含むデータの集合に置き換えられてもよい。
【００９２】
さらに、検証方法は、コンポーネントから抽出される値と期待される値が等しいか否かをチェックすることに限定されない。例えば、コンポーネントのサイズを確認し、もしサイズが所定量より大きいか、または小さいなら、コンポーネントは検証されたと判断されるとしてもよい。これらの検証方法は、ハッシュ値と、その期待値とを比較するほど厳密なものではないが、それよりも高速に行われる。
【００９３】
（４）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【００９４】
（５）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。ＲＡＭには、コンピュータプログラムが記憶されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【００９５】
さらに、各装置を構成する構成部品の各ユニットは、別個の個別チップとして、または、一部もしくは全てを含む単一のチップとして作られてもよい。
【００９６】
さらに、ここでは、ＬＳＩが述べられているが、集積化の程度の違いにより、指定ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩが使用される場合もある。
【００９７】
さらに、回路の集積化の手段は、ＬＳＩに限定されるものではなく、専用回路、もしくは汎用プロセッサによる実装も利用できる。さらに、ＬＳＩが製造された後にプログラム可能なフィールドプログラムゲートアレイ（ＦＰＧＡ）を使用することもまた可能であり、またＬＳＩ内で回路セルの接続および設定を再構成可能なリコンフィギュラブルプロセッサも使用可能である。
【００９８】
さらに、もしＬＳＩに置き換わる集積回路技術が半導体技術もしくは他の派生する技術の進歩を通じて現われるのであれば、その技術は当然に構成要素の集積化を実現するために使用することができる。バイオ技術の適用が予想される。
【００９９】
（６）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。ＩＣカードまたはモジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。ＩＣカードまたはモジュールは、上記の超多機能ＬＳＩに含まれるとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ＩＣカードまたはモジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０１００】
（７）本発明は、上記に示す方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムなどのデジタル信号であるとしてもよい。
【０１０１】
また、本発明は、コンピュータプログラムまたはデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
【０１０２】
また、本発明は、コンピュータプログラムまたはデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１０３】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記憶しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するとしてもよい。
【０１０４】
また、プログラムまたはデジタル信号を記録媒体に記録して移送することにより、またはプログラムまたはデジタル信号を、ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１０５】
（８）本技術分野の当業者にとっては、説明した実施形態の、本発明固有の教示および利点から原理的に離れることのない多くの変形がありえることを容易に理解することができるだろう。また、上記変更および実施形態の任意の組み合わせは、本発明の範囲内に含まれる。
【産業上の利用可能性】
【０１０６】
本発明は、パーソナルコンピュータ、携帯電話、オーディオプレーヤ、テレビ、ビデオレコーダなどの、プログラムデータの更新を行う情報通信機器、および、家電機器などに利用することができる。
【符号の説明】
【０１０７】
１０  情報処理装置
２０  プログラム格納部
２１  第１プログラム
２２  第２プログラム
３０  第１管理部
４０  第２管理部
５０  証明書格納部
５１  第１証明書
５１ａ  第１期待蓄積情報
５１ｂ  第１設定情報
５２  第２証明書
５２ａ  第２期待蓄積情報
５２ｂ  第２設定情報
６０  制御部
１００  モバイル装置
１０２  第１アプリケーション
１０４  ＭＬＴＭ
１０６、１１８  ＲｏＴ
１０８、１２０  ＰＣＲセット
１１０、１２２  ＰＣＲ
１１２  第２ブートコンポーネント
１１４  第１ブートコンポーネント
１１６  ＭＲＴＭ
２００  ｔＰＣＲマネージャー
２０２  ｔＰＣＲセット
【図１Ａ】
0005443498.tif 000002
【図１Ｂ】
0005443498.tif 000003
【図２】
0005443498.tif 000004
【図３】
0005443498.tif 000005
【図４Ａ】
0005443498.tif 000006
【図４Ｂ】
0005443498.tif 000007
【図５】
0005443498.tif 000008
【図６Ａ】
0005443498.tif 000009
【図６Ｂ】
0005443498.tif 000010
【図７】
0005443498.tif 000011
【図８Ａ】
0005443498.tif 000012
【図８Ｂ】
0005443498.tif 000013
【図９】
0005443498.tif 000014
【図１０】
0005443498.tif 000015
【図１１】
0005443498.tif 000016
【図１２】
0005443498.tif 000017