(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンを動作させる情報処理装置であって、
前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を格納する依存情報格納部と、
前記複数の仮想マシンそれぞれに対応し、前記複数の仮想マシンそれぞれの持つ機能の完全性の検証に用いる検証情報をそれぞれ格納する複数の状態格納部と
前記複数の仮想マシンの起動を管理し、起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御しかつ前記他の仮想マシンの状態格納部から前記起動すべき仮想マシンが使用する機能の検証情報を読み出し、前記起動すべき仮想マシンの状態格納部に反映する仮想マシン管理部と
ことを特徴とする情報処理装置。
【請求項２】
前記複数の状態格納部はそれぞれ複数の記録領域を持ち、前記複数の状態格納部それぞれに対応する仮想マシンについて、前記仮想マシンの持つ１以上の機能の完全性の検証に用いる検証情報を前記複数の記録領域のいずれかに格納し、
前記仮想マシン管理部は、前記起動すべき仮想マシンの依存情報が、前記他の仮想マシンの持つ１以上の機能のうち一部を使用することを示している場合、前記他の仮想マシンの状態格納部に格納されている検証情報のうち、前記起動すべき仮想マシンが使用する機能に対応する記録領域に記録されている検証情報を前記起動すべき仮想マシンの状態格納部に反映し、前記起動すべき仮想マシンが使用する機能に対応しない記録領域の検証情報は前記起動すべき仮想マシンの状態格納部に反映しない
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、更に、前記複数の仮想マシンそれぞれに対応する複数の耐タンパーモジュールを備え、
前記複数の状態格納部はそれぞれ、前記複数の耐タンパーモジュールのそれぞれに含まれ、
前記複数の仮想マシンそれぞれの持つ機能は、前記複数の仮想マシンそれぞれに対応する耐タンパーモジュールによって実現される
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記複数の仮想マシンそれぞれは、複数のステークホルダーそれぞれに対応しており、
前記複数のステークホルダーそれぞれは、各ステークホルダーが対応する仮想マシンの持つ機能のみを使用する第１ステークホルダーモデル、他の仮想マシンの持つ機能の一部を使用する第２ステークホルダーモデル、および、他の仮想マシンの持つ機能の全てを使用する第３ステークホルダーモデルのいずれかのステークホルダーモデルに対応し、
前記依存情報は、前記依存情報が対応する仮想マシンのステークホルダーモデルが前記第１ステークホルダーモデル、前記第２ステークホルダーモデル、第３ステークホルダーモデルのいずれであるかを示し、
前記仮想マシン管理部は、前記依存情報に基づいて前記起動すべき仮想マシンのステークホルダーモデルを判断する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記依存情報は、前記依存情報に対応する仮想マシンが使用する機能を持つ他の仮想マシンを示す情報と、前記依存情報に対応する仮想マシンが使用する機能の検証情報が格納されている記録領域を示す情報とを含む
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記仮想マシン管理部は、前記起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが使用する機能の検証情報が格納されている記録領域として、他の仮想マシンの記録領域の一部を示している場合、前記起動すべき仮想マシンのステークホルダーモデルを第２ステークホルダーモデルであると判断する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記仮想マシン管理部は、前記起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが使用する機能の検証情報が格納されている記録領域として、他の仮想マシンの記録領域の全部を示している場合、前記起動すべき仮想マシンのステークホルダーモデルを第３ステークホルダーモデルであると判断する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記仮想マシンの持つ機能は１以上のモジュールによって実現されており、
前記複数の状態格納部は、それぞれ、自身が対応する仮想マシンの持つ機能について、前記機能を実現するモジュールが起動する毎に、前記起動したモジュールを示す情報を、前記複数の状態格納部それぞれに格納されている検証情報に累積することで、前記検証情報を更新し、
前記仮想マシン管理部は、前記検証情報の初期値として、前記起動すべき仮想マシンが使用する機能の検証情報を前記起動すべき仮想マシンの状態格納部に格納することで、前記起動すべき仮想マシンの状態格納部に、前記起動すべき仮想マシンが使用する機能の検証情報を反映する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記情報処理装置は、前記仮想マシン管理部によって制御された順序に従った前記複数の仮想マシンの起動が完了すると、前記複数の状態格納部に格納されている検証情報に基づいて前記情報処理装置全体の完全性を検証する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記情報処理装置は、更に、
外部のサーバからの認証要求を受け付ける受信部と、
前記認証要求が受け付けられると、前記仮想マシン管理部によって制御された順序に従った前記複数の仮想マシンの起動が完了した後で、前記複数の状態格納部に格納されている検証情報を前記外部のサーバへ送信する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
前記情報処理装置は、更に、
前記仮想マシン管理部について、前記仮想マシン管理部の持つ１以上の機能の完全性の検証に用いる検証情報を格納する管理状態格納部を備え、
前記依存情報は、更に、前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが前記仮想マシン管理部の持つ機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが前記仮想マシン管理部の機能を使用しないことを示す管理依存情報を含み、
前記仮想マシン管理部は、更に、前記複数の仮想マシンのいずれかを起動する際に、起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが仮想マシン管理部の機能のいずれかを使用することを示していれば、前記仮想マシン管理部の管理状態格納部から前記起動すべき仮想マシンが使用する機能の検証情報を読み出し、前記起動すべき仮想マシンの状態格納部に反映する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１２】
複数の仮想マシンを動作させる携帯端末であって、
前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を格納する依存情報格納部と、
前記複数の仮想マシンそれぞれに対応し、前記複数の仮想マシンそれぞれの持つ機能の完全性の検証に用いる検証情報をそれぞれ格納する複数の状態格納部と、
前記複数の仮想マシンの起動を管理し、起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御しかつ前記他の仮想マシンの状態格納部から前記起動すべき仮想マシンが使用する機能の検証情報を読み出し、前記起動すべき仮想マシンの状態格納部に反映する仮想マシン管理部とを備える
ことを特徴とする携帯端末。
【請求項１３】
複数の仮想マシンを動作させる情報処理装置の制御方法であって、
前記情報処理装置は、
前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を含んだ依存情報を格納する依存情報格納部と、
前記複数の仮想マシンそれぞれに対応し、前記複数の仮想マシンそれぞれの持つ機能の完全性の検証に用いる検証情報をそれぞれ格納する複数の状態格納部と
を備え、
前記制御方法は、
起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断するステップと、
前記複数の仮想マシンの起動を管理し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御するステップと、
前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンの状態格納部から前記起動すべき仮想マシンが使用する機能の検証情報を読み出し、前記起動すべき仮想マシンの状態格納部に反映するステップと
を含むことを特徴とする制御方法。
【請求項１４】
コンピュータを、複数の仮想マシンを動作させる情報処理装置として機能させるための制御プログラムを記録した記録媒体であって、
前記制御プログラムは、前記コンピュータを、
前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を格納する依存情報格納部と、
前記複数の仮想マシンそれぞれに対応し、前記複数の仮想マシンそれぞれの持つ機能の完全性の検証に用いる検証情報をそれぞれ格納する複数の状態格納部と、
前記複数の仮想マシンの起動を管理し、起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御しかつ前記他の仮想マシンの状態格納部から前記起動すべき仮想マシンが使用する機能の検証情報を読み出し、前記起動すべき仮想マシンの状態格納部に反映する仮想マシン管理部として機能させる
ことを特徴とする記録媒体。
【請求項１５】
複数の仮想マシンを動作させる情報処理装置を制御する集積回路であって、
前記情報処理装置は、
前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を含んだ依存情報を格納する依存情報格納部と、
前記複数の仮想マシンそれぞれに対応し、前記複数の仮想マシンそれぞれの持つ機能の完全性の検証に用いる検証情報をそれぞれ格納する複数の状態格納部と
を備え、
前記集積回路は、
前記複数の仮想マシンの起動を管理し、起動すべき仮想マシンの依存情報が前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御しかつ前記他の仮想マシンの状態格納部から前記起動すべき仮想マシンが使用する機能の検証情報を読み出し、前記起動すべき仮想マシンの状態格納部に反映する
ことを特徴とする集積回路
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化技術を利用した複数のステークホルダーを備える装置において、各ステークホルダー間の依存関係に基づきセキュアブート処理する情報処理装置に関するものである。
【背景技術】
【０００２】
近年、情報セキュリティへの意識の高まりと共に、データを保護する技術ニーズが高まってきている。
これを背景として、セキュアなコンピュータプラットフォームを開発、普及させることを目的として、Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（ＴＣＧ）が設立された。ＴＣＧでは、Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ（ＴＰＭ）と呼ばれるセキュリティコアモジュールを利用し、安全な端末環境を実現している（非特許文献１〜３参照）。ＴＣＧの基本機能として、特徴的な機能が２つある。まず、端末起動時から、ＯＳやアプリケーションが起動するまでの各モジュールのインテグリティ情報を計測し、計測した値を、それより前のモジュールのインテグリティ情報を連鎖させる累積処理（ＴＣＧのＴＰＭ＿Ｅｘｔｅｎｄコマンドに相当する処理）をし、その累積値をＴＰＭ内のＰｌａｔｆｏｒｍ  Ｃｏｎｆｉｇｒａｔｉｏｎ  Ｒｅｇｉｓｔｅｒｓ（ＰＣＲ）と呼ばれるレジスタに格納するＴｒｕｓｔｅｄ  Ｂｏｏｔ機能がある。また、ＰＣＲに蓄積した値を端末環境情報として、外部のサーバーに通知し、外部のサーバーでは、期待される環境情報であるかどうかを検証するというＡｔｔｅｓｔａｔｉｏｎ機能がある。これらの機能を利用し、リモートで端末の環境の正当性を検証可能であることが、ＴＣＧ技術のメリットの１つである。
【０００３】
また、ＴＣＧは、ＴＰＭ搭載端末として、携帯電話もターゲットとしており、携帯電話向けのＴＰＭの仕様も規格化されている（非特許文献３、４）。携帯電話向けのＴＰＭは、Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ（ＭＴＭ）と呼ばれている。ＭＴＭは、ＴＰＭの機能を実現しながらも、一部のコマンドを携帯電話向けにコマンドを修正したり、新規コマンドが追加されている。その追加機能として、セキュアブート機能と、マルチステークホルダーモデルを定義している。
【０００４】
セキュアブートとは、携帯電話の端末起動時から、ＯＳやアプリケーションが起動するまでの各モジュールのインテグリティ情報を計測し、計測した値が期待される値であるかを、ローカル端末内で検証しながらブートする方式である。
【０００５】
また、マルチステークホルダーモデルとは、デバイスメーカー、キャリア、アプリケーションサービス提供者、ユーザーといった携帯電話端末内に存在する複数のステークホルダーが所有する権利物を安全に利用するための実装モデルを定義したものである。各ステークホルダーの権利物として、例えば、デバイスメーカーであれば、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｍｏｂｉｌｅ  Ｅｑｕｉｐｍｅｎｔ  Ｉｄｅｎｔｉｔｙ（ＩＭＥＩ）であり、キャリアであれば、Ｓｕｂｓｃｒｉｂｅｒ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｍｏｄｕｌｅ（ＳＩＭ）関連情報であり、アプリケーションサービス提供者であれば、サービス提供されたデータであり、ユーザーであれば、アドレス帳が挙げられる。要するに、マルチステークホルダーモデルとは、それぞれのステークホルダーが利用するＭＴＭを、個別に割り当てることでそれぞれの権利物を安全に利用するモデルである。仮想化技術を用いることで、１つの端末内に、複数のＭＴＭを仮想的に実現することが可能となる。
【０００６】
特許文献１は、仮想化技術を利用して仮想ＴＰＭを実現する技術を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００８−５００６５１号公報
【非特許文献】
【０００８】
【非特許文献１】ＴＰＭ  Ｍａｉｎ，Ｐａｒｔ１  Ｄｅｓｉｇｎ  Ｐｒｉｎｃｉｐｌｅｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献２】ＴＰＭ  Ｍａｉｎ，Ｐａｒｔ２  ＴＰＭ  Ｓｔｒｕｃｔｕｒｅｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ１．２  Ｌｅｖｅｌ２  Ｒｅｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献３】ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ３  Ｃｏｍｍａｎｄｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献４】ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．０  Ｒｅｖｉｓｉｏｎ  １（１２  Ｊｕｎｅ  ２００７）
【非特許文献５】ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ１．０  Ｒｅｖｉｓｉｏｎ１（１２  Ｊｕｎｅ  ２００７）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１は、仮想化技術を利用し、仮想マシンモニター上で仮想マシンを動作させる方法であって、仮想マシンが利用するＴＰＭは、仮想ＴＰＭとして実現される。その仮想ＴＰＭが持つ鍵や証明書などのセンシティブな情報は、別途、端末内に備える物理ＴＰＭを利用して保護される。この特許文献１の実装モデルでは、端末起動時から仮想マシンモニター層までのインテグリティ値を連鎖処理した値は、物理ＴＰＭのＰＣＲに格納される。また、仮想マシンのインテグリティ値を連鎖処理した値は、それぞれの仮想マシンに割り当てられた仮想ＴＰＭのＰＣＲに格納される。ここで、仮想化技術は、仮想マシンが、あたかも１台の実マシンのように振る舞うことを可能にする技術であるため、ＴＣＧにおけるセキュアブート処理のインテグリティ値の連鎖処理が、仮想マシンで閉じてしまうことになる。すなわち、仮想マシンモニターから仮想マシンが起動するまでのインテグリティの連鎖が、途中で切れてしまうことになる。したがって、インテグリティ値の確認によって、端末環境の正当性を検証しようとしても、仮想マシンより下の層の環境、すなわち仮想マシンモニター層の環境の正当性を検証することができないという課題があった。
【００１０】
また、マルチステークホルダーモデルでは、ステークホルダー間で依存関係を持たせるという、トラストモデルを定義している。トラストモデルとは、具体的には、キャリアがデバイスメーカーのＭＴＭを利用して、デバイスメーカーの権利物であるＩＭＥＩデータを参照するなどといった例を実現するためのモデルである。この場合、キャリアは、デバイスメーカー環境を信頼した上で、デバイスメーカーのＭＴＭ機能を利用する。しかしながら、特許文献１では、仮想マシン間の信頼関係はないという前提における技術であるので、このようなトラストモデルを定義したマルチステークホルダーモデルの実装、および所定のトラストモデルで起動しているかどうか検証することができないという課題があった。
【００１１】
そこで、本発明はこれらの課題を解決するもので、仮想化技術により、マルチステークホルダーモデルを実現しつつ、マルチステークホルダーモデルで定義されるステークホルダー間の信頼関係（トラストモデル）を維持した状態でセキュアブートさせる方法と、さらには、仮想マシンモニターの環境も含めて端末の正当性検証が可能になる方法を実現する。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために、本発明に係る情報処理装置は、複数の仮想マシンを動作させる情報処理装置であって、前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を格納する依存情報格納部と、前記複数の仮想マシンの起動を管理し、起動すべき仮想マシンの依存情報が前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御する仮想マシン管理部とを備える。
【発明の効果】
【００１３】
本発明の一実施態様である情報処理装置は、上述の構成を備えることにより、複数の仮想マシンのうち、他の仮想マシンの機能を使用するものを特定でき、特定された仮想マシンを、前記他の仮想マシンが必ず起動状態になってから起動させ、前記特定された仮想マシンに前記他の仮想マシンの機能を確実に使用させることができる。したがって、複数の仮想マシンを所定の信頼関係を維持した状態で起動させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態１におけるマルチステークホルダーモデルにおけるトラストモデルを示す図
【図２】本発明の実施の形態１における情報処理端末を示す図
【図３】本発明の実施の形態１における仮想マシンの構成を示す図
【図４】本発明の実施の形態１における仮想マシンモニターの構成を示す図
【図５】本発明の実施の形態１におけるＴＰＭ証明書を示す図
【図６】本発明の実施の形態１におけるＴＰＭ証明書によるトラストモデル表現を示した図
【図７】本発明の実施の形態１におけるモジュール証明書を示した図
【図８】本発明の実施の形態１におけるトラストモデルに基づいたセキュアブートのフローチャート
【図９】本発明の実施の形態１におけるＰＣＲの初期値設定のフローチャート
【図１０】本発明の実施の形態１におけるセキュアブート詳細フローチャート
【図１１】本発明の実施の形態２におけるＡｔｔｅｓｔａｔｉｏｎモデルを示す図
【図１２】本発明の実施の形態２におけるＡｔｔｅｓｔａｔｉｏｎモデルのシーケンス図
【図１３】本発明の実施の形態３における情報処理端末の構成を示す図
【発明を実施するための形態】
【００１５】
請求項１に記載の態様である情報処理装置は、複数の仮想マシンを動作させる情報処理装置であって、前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を格納する依存情報格納部と、前記複数の仮想マシンの起動を管理し、起動すべき仮想マシンの依存情報が前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御する仮想マシン管理部とを備える。
【００１６】
また、前記情報処理装置は、更に、前記複数の仮想マシンそれぞれに対応し、前記複数の仮想マシンそれぞれの持つ機能の完全性の検証に用いる検証情報をそれぞれ格納する複数の状態格納部を備え、前記仮想マシン管理部は、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンの状態格納部から前記起動すべき仮想マシンが使用する機能の検証情報を読み出し、前記起動すべき仮想マシンの状態格納部に反映することとしてもよい。
【００１７】
この構成によれば、複数の仮想マシンのそれぞれを、前記検証情報に係る機能を持つ他の仮想マシンの完全性を引き継いだ状態で起動し、動作させることができる。したがって、仮想マシン間の信頼関係を維持した状態で、検証情報を用いた検証を行うことができる。これにより、仮想マシンが所定の信頼関係を維持した状態で起動しているか検証することができ、信頼関係を維持した状態でのセキュアブートが可能となる。
【００１８】
また、前記複数の状態格納部はそれぞれ複数の記録領域を持ち、前記複数の状態格納部それぞれに対応する仮想マシンについて、前記仮想マシンの持つ１以上の機能の完全性の検証に用いる検証情報を前記複数の記録領域のいずれかに格納し、前記仮想マシン管理部は、前記起動すべき仮想マシンの依存情報が、前記他の仮想マシンの持つ１以上の機能のうち一部を使用することを示している場合、前記他の仮想マシンの状態格納部に格納されている検証情報のうち、前記起動すべき仮想マシンが使用する機能に対応する記録領域に記録されている検証情報を前記起動すべき仮想マシンの状態格納部に反映し、前記起動すべき仮想マシンが使用する機能に対応しない記録領域の検証情報は前記起動すべき仮想マシンの状態格納部に反映しないこととしてもよい。
【００１９】
この構成によれば、他の仮想マシン１以上の機能のうち一部を使用する場合には、使用する機能に対応する検証情報のみを引き継ぐ。したがって、起動すべき仮想マシンの機能のうち、他の仮想マシンの機能を用いる機能については、当該他の仮想マシンの機能も含めて正当性を検証しつつ、他の仮想マシンの機能を用いない機能については、起動すべき仮想マシンのみで正当性の検証を完結させることができる。これにより、各機能の検証に、仮想マシン間の信頼関係を適切に反映することができる。
【００２０】
また、前記情報処理装置は、更に、前記複数の仮想マシンそれぞれに対応する複数の耐タンパーモジュールを備え、前記複数の状態格納部はそれぞれ、前記複数の耐タンパーモジュールのそれぞれに含まれ、前記複数の仮想マシンそれぞれの持つ機能は、前記複数の仮想マシンそれぞれに対応する耐タンパーモジュールによって実現されることとしてもよい。
【００２１】
この構成によれば、検証情報を改ざんされることなく仮想マシン間で受け渡し、改ざんない状態で機能を実施することができる。
また、前記複数の仮想マシンそれぞれは、複数のステークホルダーそれぞれに対応しており、前記複数のステークホルダーそれぞれは、各ステークホルダーが対応する仮想マシンの持つ機能のみを使用する第１ステークホルダーモデル、他の仮想マシンの持つ機能の一部を使用する第２ステークホルダーモデル、および、他の仮想マシンの持つ機能の全てを使用する第３ステークホルダーモデルのいずれかのステークホルダーモデルに対応し、前記依存情報は、前記依存情報が対応する仮想マシンのステークホルダーモデルが前記第１ステークホルダーモデル、前記第２ステークホルダーモデル、第３ステークホルダーモデルのいずれであるかを示し、前記仮想マシン管理部は、前記依存情報に基づいて前記起動すべき仮想マシンのステークホルダーモデルを判断することとしてもよい。
【００２２】
また、前記依存情報は、前記依存情報に対応する仮想マシンが使用する機能を持つ他の仮想マシンを示す情報と、前記依存情報に対応する仮想マシンが使用する機能の検証情報が格納されている記録領域を示す情報とを含むこととしてもよい。
【００２３】
また、前記仮想マシン管理部は、前記起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが使用する機能の検証情報が格納されている記録領域として、他の仮想マシンの記録領域の一部を示している場合、前記起動すべき仮想マシンのステークホルダーモデルを第２ステークホルダーモデルであると判断することとしてもよい。
【００２４】
また、前記仮想マシン管理部は、前記起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが使用する機能の検証情報が格納されている記録領域として、他の仮想マシンの記録領域の全部を示している場合、前記起動すべき仮想マシンのステークホルダーモデルを第３ステークホルダーモデルであると判断することとしてもよい。
【００２５】
この構成によれば、仮想マシンのステークホルダーモデルを正確に特定し、特定したステークホルダーモデルに基づいて、前記仮想マシンを起動させることができる。
また、前記仮想マシンの持つ機能は１以上のモジュールによって実現されており、前記複数の状態格納部は、それぞれ、自身が対応する仮想マシンの持つ機能について、前記機能を実現するモジュールが起動する毎に、前記起動したモジュールを示す情報を、前記複数の状態格納部それぞれに格納されている検証情報に累積することで、前記検証情報を更新し、前記仮想マシン管理部は、前記検証情報の初期値として、前記起動すべき仮想マシンが使用する機能の検証情報を前記起動すべき仮想マシンの状態格納部に格納することで、前記起動すべき仮想マシンの状態格納部に、前記起動すべき仮想マシンが使用する機能の検証情報を反映することとしてもよい。
【００２６】
この構成によれば、各仮想マシンそれぞれは、自仮想マシンの検証情報を生成する場合に、他の仮想マシンの検証情報を初期値として受け継ぐことができるので、他の仮想マシンの完全性をも保証できる自仮装マシンの検証情報を生成することができる。
【００２７】
また、前記情報処理装置は、前記仮想マシン管理部によって制御された順序に従った前記複数の仮想マシンの起動が完了すると、前記複数の状態格納部に格納されている検証情報に基づいて前記情報処理装置全体の完全性を検証することとしてもよい。
【００２８】
この構成によれば、仮想マシンを使用する構成において、装置全体としての完全性を確認することができる。
また、前記情報処理装置は、更に、外部のサーバからの認証要求を受け付ける受信部と、前記認証要求が受け付けられると、前記仮想マシン管理部によって制御された順序に従った前記複数の仮想マシンの起動が完了した後で、前記複数の状態格納部に格納されている検証情報を前記外部のサーバへ送信することとしてもよい。
【００２９】
この構成によれば、サービスを提供するサーバー装置側において、情報処理装置内の完全性についての検証をすることができる。
また、前記情報処理装置は、更に、前記仮想マシン管理部について、前記仮想マシン管理部の持つ１以上の機能の完全性の検証に用いる検証情報を格納する管理状態格納部を備え、前記依存情報は、更に、前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが前記仮想マシン管理部の持つ機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが前記仮想マシン管理部の機能を使用しないことを示す管理依存情報を含み、前記仮想マシン管理部は、更に、前記複数の仮想マシンのいずれかを起動する際に、起動すべき仮想マシンの依存情報が、前記起動すべき仮想マシンが仮想マシン管理部の機能のいずれかを使用することを示していれば、前記仮想マシン管理部の管理状態格納部から前記起動すべき仮想マシンが使用する機能の検証情報を読み出し、前記起動すべき仮想マシンの状態格納部に反映することとしてもよい。
【００３０】
この構成によれば、複数の仮想マシンのそれぞれを、各仮想マシンの依存情報が示す他の仮想マシン若しくは仮想マシン管理部の機能についての完全性を引き継いだ状態で起動し、動作させることができる。したがって、仮想マシンモニター（仮想マシン管理部）の環境も含めて端末の正当性検証が可能になる。
【００３１】
請求項１３に記載の態様である携帯端末は、複数の仮想マシンを動作させる携帯端末であって、前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を格納する依存情報格納部と、前記複数の仮想マシンの起動を管理し、起動すべき仮想マシンの依存情報が前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御する仮想マシン管理部とを備える。
【００３２】
請求項１４に記載の態様である制御方法は、複数の仮想マシンを動作させる情報処理装置の制御方法であって、前記情報処理装置は、前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を含んだ依存情報を格納する依存情報格納部を備え、前記制御方法は、起動すべき仮想マシンの依存情報が前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断するステップと、前記複数の仮想マシンの起動を管理し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御するステップとを含む。
【００３３】
請求項１５に記載の態様である記録媒体は、複数の仮想マシンを動作させる情報処理装置の制御プログラムを記録した記録媒体であって、前記情報処理装置は、前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を含んだ依存情報を格納する依存情報格納部を備え、前記制御プログラムは、起動すべき仮想マシンの依存情報が前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断するステップと、前記複数の仮想マシンの起動を管理し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御するステップとを含む。
【００３４】
請求項１６に記載の態様である集積回路は、複数の仮想マシンを動作させる情報処理装置を制御する集積回路であって、前記情報処理装置は、前記複数の仮想マシンそれぞれについて、前記複数の仮想マシンそれぞれが他の仮想マシンの持つ１以上の機能のうちのいずれかを使用すること、若しくは、前記複数の仮想マシンそれぞれが他の仮想マシンの機能を使用しないことを示す依存情報を含んだ依存情報を格納する依存情報格納部を備え、前記集積回路は、前記複数の仮想マシンの起動を管理し、起動すべき仮想マシンの依存情報が前記起動すべき仮想マシンが他の仮想マシンの機能を使用することを示す場合、前記起動すべき仮想マシンは前記他の仮想マシンに依存すると判断し、前記起動すべき仮想マシンが他の仮想マシンに依存する場合、前記他の仮想マシンを起動した後で前記起動すべき仮想マシンを起動するよう前記複数の仮想マシンの起動の順序を制御する。
【００３５】
この構成によれば、複数の仮想マシンのうち、他の仮想マシンの機能を使用するものを特定でき、特定された仮想マシンを、前記他の仮想マシンが必ず起動状態になってから起動させ、前記特定された仮想マシンに前記他の仮想マシンの機能を確実に使用させることができる。
【００３６】
以下、本発明の実施の形態について、図面を参照しながら説明する。
（実施の形態１）
本発明の実施の形態について、説明する。以降、本実施の形態で示すＴＰＭは、ＴＣＧで仕様化されているＴｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅの機能を有するセキュリティコアモジュールであるとして、以降説明する。  
【００３７】
＜マルチステークホルダーモデルにおけるトラストモデル＞
まず、マルチステークホルダーについて携帯電話を例として説明する。携帯電話には、デバイスメーカー、キャリア、アプリケーションサービス提供者、ユーザーといった複数のステークホルダーが存在する。各ステークホルダーは、各自の権利物を所有している。各ステークホルダーの権利物は、例えば、デバイスメーカーであれば、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｍｏｂｉｌｅ  Ｅｑｕｉｐｍｅｎｔ  Ｉｄｅｎｔｉｔｙ（ＩＭＥＩ）であり、キャリアであれば、Ｓｕｂｓｃｒｉｂｅｒ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｍｏｄｕｌｅ（ＳＩＭ）関連情報であり、アプリケーションサービス提供者であれば、サービス提供されたデータであり、ユーザーであれば、アドレス帳が挙げられる。マルチステークホルダーモデルとは、それぞれのステークホルダーが利用するＴＰＭを、個別に割り当てることでそれぞれの権利物を安全に利用するモデルである。
【００３８】
図１は、マルチステークホルダーモデルにおけるトラストモデルを示した図である。
トラストモデルとして、３つのモデルが定義される。また、図１には図示していないが、各ステークホルダーは、各自のステークホルダーの権利物を管理しており、ステークホルダーの所有する権利物は、各ステークホルダーに対応づけられたＴＰＭを利用して、安全にアクセスする。以下、それぞれ３つのモデルについて説明する。
【００３９】
図１（ａ）は、Ｉｎｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌを示している。このモデルは、各ステークホルダー間に信頼の依存関係はないモデルである。例えば、ステークホルダー１（１０１）が、ＴＰＭ１（１０３）を利用し、ステークホルダー２（１０２）は、ＴＰＭ２（１０４）を利用するモデルである。
【００４０】
図１（ｂ）は、Ｉｎｔｅｒｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌを示している。このモデルは、ステークホルダー間で、部分的に依存関係のあるモデルである。例えば、ステークホルダー１（１１１）は、ＴＰＭ１（１１３）を利用し、ステークホルダー２（１１２）は、ＴＰＭ２（１１４）を利用する。ここまでは、Ｉｎｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌと同じであるが、図１（ｂ）に示しているように、一部領域が重なっている部分が存在する。これは、ステークホルダー２（１１２）が、ＴＰＭ２（１１４）以外に、ＴＰＭ１（１１３）の機能を利用することを表している。例えば、携帯電話の場合、ステークホルダー２（１１２）が、キャリアであって、ステークホルダー１（１１１）がデバイスメーカーであった場合、キャリアが、デバイスメーカーの権利物であるＩＭＥＩにアクセスするといった例である。
【００４１】
図１（ｃ）は、Ｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌを示している。このモデルは、ステークホルダー間で、あるステークホルダーが、別のステークホルダーに完全に依存するモデルである。これは、ステークホルダー１（１２１）がＴＰＭ１（１２３）を利用し、ステークホルダー２（１２２）もＴＰＭ１（１２３）を利用するモデルである。携帯電話の場合、ステークホルダー２が、キャリアであって、ステークホルダー１がデバイスメーカーであった場合、デバイスメーカーの権利物であるＩＭＥＩは、ＴＰＭ１（１２３）の機能により保護され、キャリアの権利物であるＳＩＭ情報もＴＰＭ１（１２３）の機能を利用して安全に保護される。
【００４２】
＜情報処理端末＞
図２は、マルチステークホルダーモデルを仮想化技術で実現した場合の情報処理端末の全体構成図である。
【００４３】
情報処理端末１０は、ＣＰＵ１１、Ｉ／Ｏデバイス１２、ＲＡＭなどの揮発メモリ１３、ＲＯＭやＦｌａｓｈなどの不揮発メモリ１２などのハードウェア群と、ＴＰＭ（８２）を含んだトラステッドビルディングブロック８０（以降、ＴＢＢと省略）、そして、仮想ＴＰＭ制御部５０と仮想トラステッドビルディングブロック（６０、７０）（以降、仮想ＴＢＢと省略）等を含んだ仮想マシンモニター４０と仮想マシン（２０、３０）のソフトウェア群から構成される。仮想マシン（２０，３０）や仮想マシンモニター４０等のソフトウェアは、不揮発性メモリ、もしくは不揮発メモリに記憶されているプログラムをＣＰＵ１１によって実行することによって実現される。また、図１では、ＴＰＭ（８２）は、ハードウェア群には含まない構成となっているが、言うまでもなくＴＰＭ（８２）もハードウェア群に含まれてもよい。また、情報処理端末１０がセキュアな実行環境を備えるのであれば、ＴＰＭ（８２）をソフトウェアで実現してもよい。本実施の形態１では、ＴＰＭ（８２）は、ハードウェアとして説明する。
【００４４】
ＴＢＢ８０は、ＴＰＭ８２と、計測・検証部８１からなる。ＴＰＭ８０は、ＴＣＧで仕様化されるＴｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅの機能を有するセキュリティモジュールである。計測・検証部８１は、ＴＣＧにおける、Ｒｏｏｔ  ｏｆ  Ｔｒｕｓｔ  ｆｏｒ  Ｍｅａｓｕｒｅｍｅｎｔ（ＲＴＭ）とＲｏｏｔ  ｏｆ  Ｔｒｕｓｔ  ｆｏｒ  Ｖｅｒｉｆｉｃａｔｉｏｎ（ＲＴＶ）であり、セキュアブート処理の最初に起動するモジュールである。端末自身がセキュアブートでなくトラステッドブートのみをサポートするのであれば、ＲＴＶは存在せず、Ｃｏｒｅ  Ｒｏｏｔ  ｏｆ  Ｔｒｕｓｔ  ｆｏｒ  Ｍｅａｓｕｒｅｍｅｎｔ（ＣＲＴＭ）であってもよい。計測・検証部８１は、図２には記載しないＩｎｉｔｉｔａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ（ＩＰＬ）などを記憶しているブートＲＯＭに含まれる。さらに、ここでのブートＲＯＭは、書き換え不可能なセキュアなＲＯＭであることが望ましい。
【００４５】
仮想マシンモニター４０は、仮想ＴＰＭ制御部５０、仮想ＴＢＢ（６０、７０）、デバイスドライバ４１、ＴＰＭインターフェース４２を含んでおり、仮想マシン（２０、３０）を動作させるためのインフラストラクチャを提供するソフトウェアである。
【００４６】
仮想ＴＢＢ１（６０）は、仮想マシン１（２０）が利用するトラスデットビルディングブロックであり、仮想計測・検証部（６１）と仮想ＴＰＭ１（６２）を含む。仮想ＴＢＢ１（６０）は、ＴＢＢ８０と同等の機能を仮想的に実現している部であり、仮想ＴＰＭ１（６２）は、ＴＰＭ８２と同等の機能を仮想的に実現している部であり、仮想計測・検証部６１は、計測・検証部８１と同等の機能を仮想的に実現している部である。ここでの仮想的に実現とは、ソフトウェアで実現していることを示す。
【００４７】
仮想ＴＢＢ２（７０）は、仮想マシン２（３０）が利用するためのトラスデットビルディングである。仮想ＴＢＢ２（７０）およびそれを構成する仮想計測・検証部７１、仮想ＴＰＭ２（７２）は、上述した仮想ＴＢＢ１（６０）と同等な機能を有するので、説明を省略する。
【００４８】
仮想ＴＰＭ制御部５０は、仮想マシン（２０、３０）から仮想ＴＰＭインターフェース（２１、２２）を介して要求されたＴＰＭコマンドを、適切な仮想ＴＰＭ（６２、７２）に処理依頼を振り分けたり、仮想ＴＰＭからの処理結果を、適切な仮想マシン（２０、３０）に返したりする、いわゆる仮想ＴＰＭをマネージメントする部である。
【００４９】
ＴＰＭインターフェース（４２）は、ＴＰＭ（８２）へアクセスするためのインターフェースであって、例えば、ＴＣＧのソフトウェアスタックであるＴｒｕｓｔｅｄ  Ｓｏｆｔｗａｒｅ  Ｓｔａｃｋ（ＴＳＳ）である。
【００５０】
デバイスドライバ４１は、ハードウェア群にあるＩ／Ｏデバイスなどのハードウェアにアクセスするためのドライバソフトウェアである。
仮想マシン１（２０）、仮想マシン２（３０）は、仮想マシンモニター４０上で動作する仮想マシンであり、１つの仮想マシンが、１つのステークホルダー環境として動作する。仮想マシン１、仮想マシン２については、図３を用いて詳細を説明する。
【００５１】
＜仮想マシン＞
仮想マシン１（２０）は、上述したように１つのステークホルダーとして動作し、それぞれ、ＯＳローダー１（２０）、ゲストＯＳ１（２４）、アプリケーション１（２５）、仮想ＴＰＭインターフェース（２１）を含む構成としている。仮想ＴＰＭインターフェース（２１）は、仮想ＴＰＭ（６２）へのアクセスするためのインターフェースであり、ＴＣＧにおけるＴＳＳインターフェースである。ＴＳＳの実体は、図示していないが、仮想マシンモニター４０に実装されるものとする。
【００５２】
仮想マシン１（２０）は、仮想マシンモニター（４０）起動後に起動される。仮想マシンの起動順としては、ＯＳローダー１（２３）、ゲストＯＳ１（２４）、アプリケーション１（２５）の順である。仮想マシン１（２０）は、仮想マシン１（３０）の起動の際に、仮想ＴＰＭインターフェース２１を介して、仮想ＴＰＭ１（６２）の機能を利用しながら、ブートする。
【００５３】
仮想マシン２（２０）も、仮想マシンモニター（４０）起動後に起動される。仮想マシンの起動順としては、ＯＳローダー２（３３）、ゲストＯＳ２（３４）、アプリケーション１（３５）の順である。仮想マシン２（３０）は、仮想マシン２（３０）の起動の際に、仮想ＴＰＭインターフェース３１を介して、仮想ＴＰＭ２（７２）の機能を利用しながら、ブートする。ブートシーケンス詳細については、図８、９を用いて後述する。
【００５４】
＜仮想マシンモニター＞
次に、図４を用いて、仮想マシンモニターの詳細について説明する。なお、以下では、図２の説明において説明していない構成要素についてのみ説明する。
【００５５】
仮想ＴＰＭ制御部４０は、トラストモデル管理部４１０とブート制御部４２０から構成される。
トラストモデル管理部４１０は、図１で説明したマルチステークホルダーモデルにおけるトラストモデルを管理している。具体的には、図１の３つのトラストモデルを、図５を用いて後述するＴＰＭ証明書で表現し、それらのＴＰＭ証明書（４１１、４１２、４１３）を管理する。ＴＰＭ証明書（４１１、４１２、４１３）は、各ＴＰＭに付与される証明書であって、本実施の形態１では、ＴＰＭ８２はＴＰＭ証明書４１１が付与され、仮想ＴＰＭ１（６２）は仮想ＴＰＭ１証明書４１２が付与され、仮想ＴＰＭ２（７２）は仮想ＴＰＭ２証明書４１３が付与される。
【００５６】
ブート制御部４２０は、モジュール証明書格納部４２１、ブート検証部４２３と、ＰＣＲ初期値設定部４２２、から構成される。
モジュール証明書格納部４２１には、各仮想マシンのセキュアブートシーケンスの際に、起動すべきモジュールが改竄されずにブートされているかどうかを検証する際に利用されるモジュール証明書を格納する。モジュール証明書は、認証用のインテグリティ値および、認証用の累積インテグリティ情報を含んだ証明書であり、ＴＣＧにおけるＲｅｆｅｒｎｅｃｅ  Ｉｎｔｅｇｔｉｒｙ  Ｍｅｔｒｉｃｓ（ＲＩＭ）証明書に相当するものである。モジュール証明書については、図７を用いて後述する。
【００５７】
ＴＰＭ（８２）、仮想ＴＰＭ（６２、６３）は、それぞれ１６個のＰＣＲを備えている。ＰＣＲは、Ｐｌａｔｆｏｒｍ  Ｃｏｎｆｉｇｒａｔｉｏｎ  Ｒｅｇｉｓｔｅｒｓと呼ばれるレジスタであり、ＴＣＧのＴＰＭ＿Ｅｘｔｅｎｄコマンドにより生成されたインテグリティ値が格納される。また、なお、ＰＣＲの個数は、１６個に限定されるわけではなく、それより多くても少なくても良い。なお、本実施の形態では、ＴＣＧの仕様で決められている個数以上の数を備えるものとする。
【００５８】
ＰＣＲ初期値設定部４２２は、トラストモデル管理部４１０にて管理されているＴＰＭ証明書もしくは仮想ＴＰＭ証明書に基づき、仮想マシンモニターおよび、仮想マシンそれぞれが利用するＴＰＭのＰＣＲ８３、仮想ＴＰＭのＰＣＲ（６３、７３）の初期値を設定する。
【００５９】
ブート検証部４２３は、トラストモデル管理部４１０にて管理されているＴＰＭ証明書もしくは仮想ＴＰＭ証明書に基づき、各仮想マシンの起動前に、トラストモデルに基づいた信頼関係を維持しつつ起動しているかどうかを検証する部である。
【００６０】
＜トラストモデルを定義したＴＰＭ証明書＞
次に、図５を用いて、トラストモデルを定義したＴＰＭ証明書について説明する。ＴＰＭ証明書のフォーマットは、ＴＰＭ証明書４１１、仮想ＴＰＭ１証明書４１２、仮想ＴＰＭ２証明書４１３は、すべて同じフォーマットであるとする。具体的には、Ｘ．５０９形式のフォーマットを利用する。ＴＰＭ証明書は、Ｘ．５０９のバージョンを示す証明書バージョン５０１、発行者によって一意な値を割り振られたシリアルナンバー５０２、証明書の署名検証に用いる署名アルゴリズムを示す署名アルゴリズム情報５０３、発行者情報５０４、証明書の有効期間５０５、証明書を受ける対象を示したサブジェクト５０６、鍵値や公開鍵アルゴリズムを示す公開鍵情報５０７、ＴＰＭバージョン５０８、トラストモデル識別情報５０９と依存ＴＰＭ証明書識別情報５１０と依存ＴＰＭ−ＰＣＲ番号５１１、拡張領域５１２、そしてこれらのデータに対する署名データ５１３から構成される。
【００６１】
拡張領域５１２には、ＣＲＬやＩＳＯ９００００などの製造プロセスや、ＥＡＬなどのコモンクライテリアといったセキュリティ関連情報を載せてもよいし、機能制御の条件と機能制御の内容が記載されてもよい。
【００６２】
本実施の形態では、トラストモデルを定義するため、トラストモデル識別情報５０９と依存ＴＰＭ証明書識別情報５１０と依存ＴＰＭ−ＰＣＲ番号５１１とを証明書に含ませている。以下、これらの構成について詳細に説明する。
【００６３】
トラストモデル情報識別情報５０９は、３つのトラストモデルであるＩｎｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌ、Ｉｎｔｅｒｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌ、Ｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌを識別するため情報が記載される。
【００６４】
依存ＴＰＭ証明書識別情報５１０は、トラストモデルにおける信頼関係のあるＴＰＭ証明書へのポインタ情報を格納する。
依存ＴＰＭ−ＰＣＲ番号５１１は、トラストモデルに基づき、起動済み環境のＴＰＭもしくは仮想ＴＰＭの信頼の依存関係のあるＰＣＲ番号を示している。
【００６５】
本実施の形態では、各ＴＰＭまたは仮想ＴＰＭは、依存ＴＰＭ証明書識別情報５１０が示すＴＰＭまたは仮想ＴＰＭの持つＰＣＲのうち、依存ＴＰＭ−ＰＣＲ番号５１１が示すＰＣＲの値を、自身のＰＣＲの初期値として設定した上でセキュアブートを行う。ここで、ある仮想マシンＢが別の仮想マシンＡに依存する場合、すなわち、仮想マシンＡの起動後に仮想マシンＢを起動させる必要があるモデルを考える。この場合、仮想マシンＢが正しく起動しているかを確認するだけでは仮想マシンＡが正しく起動した後に、仮想マシンＢが起動しているのかが分からない。そこで、以下のようにして、仮想マシンＡの検証に用いる値（ＰＣＲ値）を仮想マシンＢの検証に用いる値に引き継ぐ必要がある。これは、仮想マシンＢのＴＰＭのＰＣＲ値の初期値として、仮想マシンＡのモジュールの起動が完了した後のＰＣＲ値を代入することで実現できる。仮想マシンＢのＰＣＲ値にも仮想マシンＡのＰＣＲ値を引き継ぐことが出来る。セキュアブートにおけるＰＣＲの累積処理では、各モジュールの起動のたびに、現在ＰＣＲに入っている値とそのモジュールから計算したインテグリティ値とを反映した値を計算し、新たなＰＣＲ値としてＰＣＲに格納する。そのため、仮想マシンＡのＰＣＲ値を初期値とすれば、仮想マシンＢのＰＣＲ値に仮想マシンＡのＰＣＲ値が反映されることとなる。なお、仮想マシンモニターと仮想マシンの間でＰＣＲ値を引き継ぐ場合も同様である。
【００６６】
前述の通り、各ＴＰＭは複数個のＰＣＲを持つ。ここで、各ＰＣＲは、それぞれが異なるモジュールについてのＰＣＲ値を格納する。ここで、各仮想マシンは、トラストモデルに応じて自身が依存する仮想マシンまたは仮想マシンモニターの機能のどれを使用するかが異なる。そのため、各仮想マシンのトラストモデルがどのモデルかによって、どのＰＣＲ値を引き継ぐべきかが異なる。
【００６７】
まず、Ｉｎｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌの場合、仮想マシンは仮想マシンモニターにのみ依存する。そのため、仮想マシンモニターの環境情報であるインテグリティ情報が格納されているＰＣＲ値を引き継ぐ。本実施の形態１では、仮想マシンモニターの環境情報がＰＣＲ０からＰＣＲ２に格納されているものとして、以降、図６から図８を用いて説明する。
【００６８】
また、Ｉｎｔｅｒｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌの場合は、仮想マシンは自分自身が依存する仮想マシンのうちの一部の機能のみを使う。そのため、その機能についてのＰＣＲ値のみを引き継げばよい。
【００６９】
また、Ｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌの場合、仮想マシンは自分自身が依存する仮想マシンの全ての機能を使う。そのため、全ての機能についてのＰＣＲ値を引き継ぐ必要があるので、全ＰＣＲ値を引き継ぐ必要がある。
【００７０】
本実施の形態では、このような制御を実現するため、ＴＰＭ証明書に含ませたトラストモデル情報識別情報５０９、依存ＴＰＭ証明書識別情報５１０、依存ＴＰＭ−ＰＣＲ番号５１１を用いる。これらの情報の利用方法については、図６から図８を用いて具体的に説明する。
【００７１】
なお、ここではＴＰＭ証明書を、公開鍵証明書として説明していたが、公開鍵証明書に限定されることなく、属性証明書であってもよい。公開鍵証明書であれば、ＴＣＧにおけるＥｎｄｏｒｓｅｍｅｎｔ  Ｋｅｙ（ＥＫ）証明書としてトラストモデルを表現してもよいし、属性証明書であればＴＣＧにおけるＰｌａｔｆｏｒｍ証明書としてトラストモデルを表現してもよい。
【００７２】
なお、証明書のフォーマットとしてＸ．５０９形式であると説明したが、これに限定されない。証明書として必要な情報を含んでいればよく、他のフォーマットを用いてもよい。
【００７３】
＜トラストモデルを表現したＴＰＭ証明書の例＞
図６は、トラストモデルを表現したＴＰＭ証明書の具体例である。
なお、本実施の形態１では、仮想マシンモニターが起動する際に、計測された累積インテグリティ値は、ＴＰＭ８２のＰＣＲ８３に記録され、仮想マシン１（２０）が起動する際に、計測された累積インテグリティ値は、仮想ＴＰＭ１（６２）のＰＣＲ６３に記録され、仮想マシン２（３０）が起動する際に、計測された累積インテグリティ値は、仮想ＴＰＭ２（７２）のＰＣＲ７３に記録されるものとする。また、ＴＰＭ証明書の識別情報を「ＣＥＲＴ０００」、仮想ＴＰＭ１証明書の識別情報を「ＣＥＲＴ００１」、仮想ＴＰＭ２証明書の識別情報を「ＣＥＲＴ００２」として説明する。図６のＴＰＭ証明書は、トラストモデルに関する情報しか図示していないが、各ＴＰＭ証明書は、実際には、図５で説明したフォーマットを持つ。
【００７４】
図６（ａ）は、Ｉｎｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌの具体例である。この例では、Ｉｎｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌを示すトラストモデル識別情報を「００１」としている。また、この例は、ＣＥＲＴ００１がＣＥＲＴ０００に信頼の依存関係があることを示し、ＣＥＲＴ００２もＣＥＲＴ０００に信頼の依存関係があることを示している。これは、仮想マシン１が、仮想マシンモニターを信頼し、仮想マシン２も仮想マシンモニターを信頼することを示している。言い換えると、仮想マシンモニター起動後、仮想マシン１、仮想マシン２が起動されなければならないということを示している。この例では、ＣＥＲＴ００１の依存ＴＰＭ証明書識別情報５１０が「ＣＥＲＴ０００」に、依存ＴＰＭ−ＰＣＲ番号５１１が「ＰＣＲ［０−２］」になっている。これは、ＣＥＲＴ００１対応する仮想ＴＰＭ１が、ＣＥＲＴ０００に対応するＴＰＭに対して依存関係があり、仮想マシン１が起動する前に、仮想ＴＰＭ１のＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］の初期値として、ＴＰＭのＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］が設定されることを示す。同様にＣＥＲＴ００２の各フィールドの値は、ＣＥＲＴ００２に対応する仮想ＴＰＭ２が、ＣＥＲＴ０００に対応するＴＰＭに対して依存関係があり、仮想マシン１が起動する前に、仮想ＴＰＭ１のＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］の初期値として、ＴＰＭのＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］が設定されることを示す。また、この例では、ＣＥＲＴ００１とＣＥＲＴ００２のトラストモデル識別情報５１１が「００１」となっており、仮想マシン１も仮想マシン２もＩｎｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌで動作していることが示されている。
【００７５】
図６（ｂ）は、Ｉｎｔｅｒｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌの具体例である。なお、この例は、図１（ｂ）のモデルにおけるステークホルダー１と、ステークホルダー２が重なっている部分のモジュール（すなわち、ステークホルダー２から利用されるステークホルダー１のモジュール）のインテグリティ値が連鎖した値が、ＴＰＭ１のＰＣＲ［７］に記録されるものとして説明する。この例では、Ｉｎｔｅｒｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌを示すトラストモデル識別情報を「００２」としている。また、ＣＥＲＴ００２がＣＥＲＴ００１に信頼の依存関係があることを示し、ＣＥＲＴ１がＣＥＲＴ０００に信頼の依存関係があることを示している。これは、仮想マシン２が仮想マシン１を信頼し、仮想マシン１が仮想マシンモニターを信頼しているという信頼のチェーンを表している。言い換えると、仮想マシンモニター起動完了後に仮想マシン１が起動し、その次に仮想マシン１起動完了後に仮想マシン２が起動されなければならないということを示している。この例では、ＣＥＲＴ００２の依存ＴＰＭ証明書識別情報５１０が「ＣＥＲＴ０００」に、依存ＴＰＭ−ＰＣＲ番号５１１が「ＰＣＲ［０−２］」になっている。これは、ＣＥＲＴ００１に対応する仮想ＴＰＭ１が、ＣＥＲＴ０００に対応するＴＰＭに対して依存関係があり、仮想マシン１が起動する前に、仮想ＴＰＭ１のＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］の初期値として、ＴＰＭのＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］が設定されることを示す。また、この例では、ＣＥＲＴ００２の依存ＴＰＭ証明書識別情報５１０が「ＣＥＲＴ００１」に、依存ＴＰＭ−ＰＣＲ番号５１１が「ＰＣＲ［０−２、７］」になっている。これは、ＣＥＲＴ００２に対応する仮想ＴＰＭ２が、ＣＥＲＴ０００に対応するＴＰＭに対して依存関係があり、仮想マシン１が起動する前に、仮想ＴＰＭ１のＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］とＰＣＲ［７］の初期値として、ＴＰＭのＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］とＰＣＲ［７］が設定されることを示す。また、この例では、ＣＥＲＴ００１とＣＥＲＴ００２のトラストモデル識別情報５１１が「００２」となっており、仮想マシン１も仮想マシン２もＩｎｔｅｒｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌで動作していることが示されている。
【００７６】
図６（ｃ）は、Ｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌの具体例である。この例では、Ｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌを示すトラストモデル識別情報を「００３」としている。また、この例は、ＣＥＲＴ００２がＣＥＲＴ００１に信頼の依存関係があることを示し、ＣＥＲＴ００１がＣＥＲＴ０００に信頼の依存関係があることを示している。これは、仮想マシン２が、仮想マシン１を信頼し、仮想マシン１が仮想マシンモニターを信頼しているという信頼のチェーンを表している。言い換えると、仮想マシンモニター起動完了後に仮想マシン１が起動し、仮想マシン１起動完了後に仮想マシン２が起動されなければならないということを示している。この例では、ＣＥＲＴ００２の依存ＴＰＭ証明書識別情報５１０が「ＣＥＲＴ０００」に、依存ＴＰＭ−ＰＣＲ番号５１１が「ＰＣＲ［０−２］」になっている。これは、仮想マシン１が起動する前に、仮想ＴＰＭ１のＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］の初期値を、ＴＰＭのＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］の値に設定することを示す。また、ステークホルダー２がステークホルダー１の全環境に依存するモデルであるため、ＣＥＲＴ００２の依存ＴＰＭ−ＰＣＲ番号５１２には、「ＡＬＬ」と記載される。これは、仮想マシン２が起動する前に、仮想ＴＰＭ２の全ＰＣＲ（ＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］、・・・、ＰＣＲ［１５］）の初期値を、仮想ＴＰＭ１の全ＰＣＲ（ＰＣＲ［０］、ＰＣＲ［１］、ＰＣＲ［２］、・・・、ＰＣＲ［１５］）に設定することを示す。これらＰＣＲの初期値の設定フローについては、図９を用いて後述する。
【００７７】
＜モジュール証明書＞
次に、モジュール証明書の説明を行う。図７は、セキュアブート処理の際に利用するモジュール証明書を示したものである。モジュール証明書７００は、セキュアブートの対象となるモジュール毎に付与される証明書であり、モジュール識別情報７０１、モジュールバージョン情報７０２、この証明書を検証するために使われる署名アルゴリズムを示す署名アルゴリズム情報７０３、期待されるモジュールのインテグリティ値である認証インテグリティ値７０４、期待される連鎖処理されたインテグリティ値が格納されたＰＣＲの値を示す認証ＰＣＲ値７０５、連鎖処理する対象となるＰＣＲ値番号を示すＰＣＲインデックス７０６、モジュール証明書自身を検証するために利用する検証鍵を識別するための検証鍵情報７０７、そして、証明書自身の完全性を検証するために利用される署名データ７０８から構成される。モジュール証明書７００は、ＴＣＧにおけるＲｅｆｅｒｅｎｃｅ  Ｉｎｔｅｇｒｉｔｙ  Ｍｅｔｒｉｃｓ（ＲＩＭ）証明書として実現してもよい。
【００７８】
＜トラストモデルに基づいたセキュアブート概要＞
次に、図８を用いてトラストモデルに基づいてマルチステークホルダー環境におけるセキュアブートの全体シーケンスについて説明する。
【００７９】
まず、電源起動後、図２で示すＴＢＢ８０の計測・検証部８１が起動し、ＴＰＭ証明書４１１を署名検証する。すなわち、署名データ５１３と予め保持している検証鍵を用いて署名検証を行うことでＴＰＭ証明書に対する改竄の有無を確認する。なお、以下で述べるＴＰＭ証明書およびモジュール証明書の署名検証も同様の処理である。（ステップＳ８０１）。
【００８０】
次に、ＴＰＭ証明書４１１の依存ＴＰＭ証明書識別情報５１０および依存ＴＰＭ−ＰＣＲ番号５１１に基づき、ＴＰＭのＰＣＲの初期値を設定する。依存ＴＰＭ証明書情報および依存ＴＰＭ−ＰＣＲ番号がＮＵＬＬを示していれば、ＴＰＭ８０のＰＣＲ８３をゼロで初期化する（ステップＳ８０２）。
【００８１】
次に、仮想マシンモニターの環境をセキュアブートする（ステップＳ８０３）。セキュアブートの詳細ステップについては、図１０を用いて後述する。
次に、仮想ＴＰＭ制御部のブート制御部４２０のブート検証部４２３が、トラストモデル管理部４１０から仮想ＴＰＭ証明書を参照し、次にブートすべき仮想マシンに対応する仮想ＴＰＭ証明書に対して署名検証する（ステップＳ８０４）。次にブートすべき仮想マシンの特定方法は、ＴＰＭ証明書の信頼関係を示すトラストモデル識別情報５０９や、依存ＴＰＭ証明書識別情報５１０を参照することでなされる。次に実行すべき仮想マシンに対する仮想ＴＰＭ証明書について、Ｓ８０４の署名検証結果が検証ＮＧであれば、ブート処理を中止する（ステップＳ８０８）。そうでなく、Ｓ８０５の仮想ＴＰＭ証明書の署名検証結果が検証ＯＫであれば、ステップＳ８０５へ処理を移す。
【００８２】
次に、仮想ＴＰＭ制御部のブート制御部４２０のＰＣＲ初期値設定部４２２が、Ｓ８０５にて署名検証した仮想ＴＰＭ証明書の依存ＴＰＭ証明書識別情報５１０および依存ＴＰＭ−ＰＣＲ番号５１２に基づき、その仮想ＴＰＭ証明書に対応する仮想ＴＰＭのＰＣＲの初期値を設定する（ステップＳ８０５）。ＰＣＲの初期値の設定の詳細なフローは、図9を用いて説明する。
【００８３】
次に、ステップＳ８０４にて検証した仮想ＴＰＭ証明書に対応する仮想マシンをセキュアブートする（ステップＳ８０６）。
次に、全ての仮想マシンのセキュアブートが完了したかどうかを確認する（ステップＳ８０９）。なお、全ての仮想マシンのセキュアブートが完了したか否かの確認は、ブート検証部において、フラグを用いた実装などで実現する。
【００８４】
＜ＴＰＭ証明書を用いたＰＣＲ設定処理＞
ここでは、図８のＳ８０２、Ｓ８０５のＴＰＭおよび仮想ＴＰＭのＰＣＲの設定方法のフローについて説明する。
【００８５】
まず、ＴＰＭ証明書もしくは仮想ＴＰＭ証明書のトラストモデル識別情報５０９を参照し、その識別情報の値をＴＲＵＳＴ＿ＭＯＤＥＬとして管理する（ステップＳ９０１）。ここでのＴＲＵＳＴ＿ＭＯＤＥＬは、特定のレジスタであってもよいし、ＲＡＭ上の一時変数であってもよい。セキュアブートの間、不揮発しない形で管理できればよいものとする。
次に、Ｓ９０１で参照している証明書の依存ＴＰＭ識別情報５１０を参照する（ステップＳ９０２）。依存ＴＰＭ識別情報５１０が「ＮＵＬＬ」であれば、その証明書からは、信頼先がない、すなわち、その環境内における信頼根となることを示している。本実施の形態１においては、全てのトラストモデルにおいて、全ての仮想マシンは、仮想マシンモニター上で動作するので、仮想マシンモニター層のＴＰＭに対応するＴＰＭ証明書の依存ＴＰＭ識別情報５１０は、ＮＵＬＬとなる。したがって、Ｓ９０２の結果、ＮＵＬＬであれば、その証明書がＴＰＭ証明書であり、これから起動される環境が、仮想マシンモニターであるとＰＣＲ初期値設定部４２２が認識する（ステップＳ９０３）。そうでなく、Ｓ９０２の結果、ＮＵＬＬでなければ、その証明書は、仮想マシンが利用する仮想ＴＰＭに対応付けられた仮想ＴＰＭ証明書であり、これから起動される環境が、仮想マシンであるとＰＣＲ初期値設定部４２２が認識する（ステップＳ９０６）。
【００８６】
次に、Ｓ９０３の処理において、ＰＣＲ初期値設定部４２２は、仮想マシンモニター環境を起動前に、ＴＰＭの初期値を設定するために、依存ＴＰＭ−ＰＣＲ番号５１１をチェックする（ステップＳ９０４）。Ｓ９０４の結果、依存ＴＰＭ−ＰＣＲ番号５１１が、「ＮＵＬＬ」であれば、ＴＰＭのＰＣＲを０で初期化する（ステップＳ９０５）。Ｓ９０４の結果、ＮＵＬＬでないならば、エラー処理を行う（ステップＳ９１３）。なぜなら、本来、ＴＰＭ証明書は信頼の依存先がない証明書であるので、依存ＴＰＭ−ＰＣＲ番号が設定されていないはずであり、設定されていれば証明書の内容に矛盾が生じるためエラーとする。
【００８７】
次に、Ｓ９０６以降の処理について説明する。
Ｓ９０６において起動対象となる仮想マシンの仮想ＴＰＭ証明書の依存関係を調べる。依存ＴＰＭ識別情報を参照し、依存先がＴＰＭ証明書であるのか、もしくは、仮想ＴＰＭ証明書であるのかを判別する（ステップＳ９０７）。Ｓ９０７の結果、依存ＴＰＭ識別情報がＴＰＭ証明書を示していれば、Ｓ９０８へ処理を移す。そうでなく、Ｓ９０７の結果、依存ＴＰＭが仮想ＴＰＭ証明書を示していれば、Ｓ９１２へ処理を移す。
【００８８】
次に、依存ＴＰＭ−ＰＣＲ番号５１１をチェックする（ステップＳ９０８）。Ｓ９０８の結果、依存ＴＰＭ−ＰＣＲ番号５１１が、「ＮＵＬＬ」であれば、仮想ＴＰＭのＰＣＲの初期値を０で初期化する（ステップＳ９０９）。そうでなく、Ｓ９０８の結果、依存ＴＰＭ−ＰＣＲ番号が、特定のＰＣＲ番号を示していれば、依存先のＴＰＭから、依存ＴＰＭ−ＰＣＲ番号５１１で指定されたＰＣＲ値を参照し、そのＰＣＲ値を仮想ＴＰＭのＰＣＲの初期値として設定する（ステップＳ９１０）。そうでなく、Ｓ９０８の結果、依存ＴＰＭ−ＰＣＲ番号５１１が、「ＡＬＬ」を示していれば、ＴＰＭの全ＰＣＲの値を参照し、そのＰＣＲ値を仮想ＴＰＭのＰＣＲの初期値として設定する（ステップＳ９１１）。
【００８９】
続いて、Ｓ９０７の結果、依存ＴＰＭが仮想ＴＰＭ証明書を示していれば、Ｓ９１２以降のフローについて説明する。Ｓ９１２では、Ｓ９０４、Ｓ９０８と同様に、証明書内のＴＰＭ−ＰＣＲ番号５１１をチェックする（ステップＳ９１２）。Ｓ９１２の結果、依存ＴＰＭ−ＰＣＲ番号が「ＮＵＬＬ」であれば、エラー処理を行う（ステップＳ９１３）。なぜなら、Ｓ９０７にて仮想ＴＰＭ証明書に依存先があると判別されているため、依存先があるにもかかわらず、「ＮＵＬＬ」となっているのは、証明書として矛盾を示すためである。
【００９０】
そうでなく、Ｓ９１２の結果、ＴＰＭ−ＰＣＲ番号５１１が特定のＰＣＲ番号を示していれば、Ｓ９０１で設定したＴＲＵＳＴ  ＭＯＤＥＬがＩＮＴＥＲＤＥＰＥＮＤＥＮＴ  ＭＯＤＥＬであるかどうかを確認する（ステップＳ９１４）。Ｓ９１４の結果、ＹＥＳ（トラストモデル識別情報５０９がＩＮＴＥＲＤＥＰＥＮＤＥＮＴ  ＭＯＤＥＬである）ならば、依存先の仮想ＴＰＭから、依存ＴＰＭ−ＰＣＲ番号５１１で指定されたＰＣＲ値を参照し、そのＰＣＲ値を依存元となる仮想ＴＰＭのＰＣＲの初期値として設定する（ステップＳ９１５）。Ｓ９１４の結果、ＮＯ（トラストモデル識別情報５０９がＩＮＴＥＲＤＥＰＥＮＤＮＴ  ＭＯＤＥＬでない）ならば、エラー処理を行う（ステップＳ９１２）。ここでエラー処理を行う理由は、特定のＰＣＲ番号に依存しているということは、ＩＮＴＥＲＤＥＰＥＮＤＥＮＴ  ＭＯＤＥＬを示すことになるはずであるが、トラストモデル識別情報とＩＮＴＥＲＤＥＰＥＮＤＥＮＴ  ＭＯＤＥＬでないのであれば、それは証明書として矛盾が生じるからである。
【００９１】
そうでなく、Ｓ９１２の結果、ＴＰＭ−ＰＣＲ番号５１１が「ＡＬＬ」を示していれば、Ｓ９０１で設定したＴＲＵＳＴ＿ＭＯＤＥＬがＤＥＰＥＮＤＥＮＴ  ＭＯＤＥＬであるかどうかを確認する（ステップＳ９１６）。Ｓ９１６の結果、ＹＥＳ（トラストモデル識別情報５０９がＤＥＰＥＮＤＥＮＴ  ＭＯＤＥＬである）ならば、依存先の仮想ＴＰＭから、全てのＰＣＲ値を参照して、その値を依存元となる仮想ＴＰＭの全てのＰＣＲの初期値として設定する（ステップＳ９１５）。Ｓ９１４の結果、ＮＯ（トラストモデル識別情報５０９がＤＥＰＥＮＤＮＴ  ＭＯＤＥＬでない）ならば、エラー処理を行う（ステップＳ９１２）。ここでエラー処理を行う理由は、全てのＰＣＲ番号に依存しているということは、ＤＥＰＥＮＤＥＮＴ  ＭＯＤＥＬを示すことになるはずであるが、トラストモデル識別情報とＤＥＰＥＮＤＥＮＴ  ＭＯＤＥＬでないのであれば、それは証明書として矛盾が生じるからである。
【００９２】
なお、図９におけるＳ９１３のエラー処理の例としては、ブート処理を中止することが考えられる。また、ブート処理を中止することなく、情報処理端末として利用できる機能を制限した形で端末を起動させるようにしてもよい。例えば、携帯電話であれば、エマージェンシーコールだけ可能な状態となるように起動するようにしてもよい。
【００９３】
＜セキュアブート処理詳細＞
図１０は、図８におけるＳ８０３やＳ８０６のセキュアブート処理の詳細を示したフローである。基本的には、ＴＣＧの非特許文献４にて記載されるセキュアブート処理と同等のブート手法であるが、本実施の形態１では、図７、図８で示したように、仮想マシンモニターと、各仮想マシンの起動において、ＴＰＭ・仮想ＴＰＭのＰＣＲに設定される初期値が異なる。非特許文献４では、ＴＰＭ・仮想ＴＰＭのＰＣＲに設定される初期値は常に「０」であるが、本実施の形態ではトラストモデルによっては「０」ではない初期値が設定される。このような構成によって、仮想マシンモニターと仮想マシン間、また各仮想マシン間でインテグリティ値情報を連鎖させるという点が非特許文献４の内容と異なる。
【００９４】
以下、図１０を用いて、本実施の形態におけるセキュアブート処理フローを説明する。
まず、最初に起動すべきモジュールのインテグリティ値を計測する（ステップＳ１００１）。例えば、Ｓ８０３の仮想マシンモニターのセキュアブート処理であれば、まずＴＢＢ８０の計測・検証部８１が起動し、仮想マシンモニター４０のインテグリティ値を計測する。Ｓ８０６における「仮想マシンをセキュアブート」の処理であれば、まず仮想ＴＢＢの計測・検証部が起動し、ＯＳローダーを検証する。
【００９５】
次に、Ｓ１００１で計測したインテグリティ値と、図８で説明したモジュール証明書に記載される認証インテグリティ値７０４と照合する（ステップＳ１００２）。Ｓ１００２の照合の結果、両者の値が等しくなければ、Ｓ１００８へ処理を移しセキュアブートを中止する。そうでなく、Ｓ１００２の照合の結果、両者の値が等しければ、Ｓ９０３へ処理を移す。
【００９６】
次に、モジュール証明書の署名検証をする（ステップＳ１００３）。Ｓ１００３の署名検証の結果が、検証ＮＧであれば、Ｓ１００８へ処理を移しセキュアブートを中止する。
そうでなく、Ｓ１００３の署名検証の結果が、検証ＯＫであれば、Ｓ１００４へ処理を移す。ここでの署名検証処理は、モジュール証明書に記載される検証鍵識別情報７０７に対応する鍵を用いて検証を行う。
【００９７】
次に、ＴＰＭもしくは仮想ＴＰＭのＰＣＲの値と、モジュール証明書に記載される認証ＰＣＲ７０５が等しいかどうかを照合する（ステップＳ１００４）。Ｓ８０３における「仮想マシンモニターのセキュアブート」の処理であれば、ＴＰＭのＰＣＲの値と、モジュール証明書に記載される認証ＰＣＲ７０５の値が等しいかどうかを照合し、Ｓ８０５における「仮想マシンのセキュアブート」の処理であれば、仮想ＴＰＭのＰＣＲの値と、モジュール証明書７００に記載される認証ＰＣＲ７０５の値が等しいかどうかを照合する。Ｓ１００４の照合の結果、等しくないと判断されれば、Ｓ９０８へ処理を移し、セキュアブート処理を中止する。そうでなく、Ｓ１００４の照合の結果、等しいと判断されれば、Ｓ９０５へ処理を移す。
【００９８】
次に、モジュール証明書７００内の認証インテグリティ値７０４と、ＰＣＲインデックス７０６に指定された番号のＰＣＲ値を利用して連鎖処理を行い、連鎖した結果をＰＣＲインデックス７０６で指定されたＰＣＲ番号に格納する（ステップＳ１００５）。
【００９９】
次に、Ｓ１００１、Ｓ１００２で検証されたモジュールを実行する（ステップＳ１００６）。
次に、セキュアブートが完了したかどうかを確認する（ステップＳ１００７）。セキュアブートが完了せず、セキュアブート対象のモジュールがブートされずに残っていれば、Ｓ１００１へ処理を移し、セキュアブート処理を継続する。全てのセキュアブート対象のモジュールが検証され、実行されていればセキュアブート処理は終了する。
【０１００】
ここでの仮想マシンのセキュアブートの対象とするモジュールは、ＯＳローダー、ゲストＯＳ、そしてアプリケーションまで含めても良いし、アプリケーションまで含めずゲストＯＳ環境までとしても良い。
（実施の形態２）
本実施の形態２では、ネットワーク経由の外部のサーバーに端末環境情報を通知し、サーバー側で端末の環境の正当性を検証するモデルを説明する。この検証モデルは、ＴＣＧにおけるＡｔｔｅｓｔａｔｉｏｎ機能をベースとする。本実施の形態で説明するモデルは、従来のＡｔｔｅｓｔａｔｉｏｎ機能にはない、マルチステークホルダーモデル端末が想定されるトラストモデルで起動しているかどうかをサーバー側で検証することを可能にするモデルである。
【０１０１】
＜Ａｔｔｅｓｔａｔｉｏｎ処理の概要＞
図１１は、実施の形態１の情報処理端末１０００と同等の構成をとるが、ネットワーク３０００経由で、外部のサービス提供サーバー２０００に対して端末環境情報を通知できる点が異なる。具体的には、情報処理端末１０００は、仮想マシン１（１０１０）、仮想マシン２（１０２０）にそれぞれ通知部（１０１１、１０２１）を備える。さらに、仮想ＴＰＭ１（１０３１）、仮想ＴＰＭ２（１０２１）は、外部のサービス提供サーバー２０００からＡｔｔｅｓｔａｔｉｏｎ処理要求の結果として署名データを生成する。具体的には、ＴＰＭのＰＣＲ値に対して、図示しないＡｔｔｅｓｔａｔｉｏｎ  Ｉｄｅｎｔｉｔｙ  Ｋｅｙ（ＡＩＫ）を用いて、署名を生成する。ＡＩＫは、公開鍵暗号における鍵ペアであり秘密鍵は情報処理端末内でセキュアに保持し、その秘密鍵に対応する公開鍵は、外部のサービスサーバーが保持する。ＡＩＫの公開鍵の正当性については、ＣＡ（Ｃｅｒｔｉｆｉｃａｔｉｏｎ  Ａｕｔｈｏｒｉｔｙ）が作成した公開鍵証明書（ＡＩＫ証明書）を利用することで検証できる。証明書の発行プロセスや公開鍵証明書を利用した鍵の検証方法は、一般に広く知られるＰｕｂｌｉｃ  Ｋｅｙ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ（ＰＫＩ）技術を用いるので、説明を省略する。
【０１０２】
＜Ａｔｔｅｓｔａｔｉｏｎシーケンス＞
続いて、図１２を用いて本実施の形態２におけるＡｔｔｅｓｔａｔｉｏｎのシーケンスについて説明する。この図１２のシーケンスでは、情報処理端末が、外部のサービス提供サーバーに対して、サービスを要求し、サービス提供サーバーは、Ａｔｔｅｓｔａｔｉｏｎ機能を利用し、情報処理端末の正当性を確認した上で、サービスを提供する例で説明する。
【０１０３】
まず、情報処理端末が、情報処理端末を識別するための端末識別情報と共に、サービス提供サーバーに対して、サービス要求を行う（ステップＳ１１０１）。
次に、サービス提供サーバーは、トラストモデル管理データベースにアクセスし、端末識別情報に対応するＴＰＭ証明書および仮想ＴＰＭ証明書を参照し、情報処理端末のトラストモデルを判別する。トラストモデル判別後、サービス提供サーバーが検証したいＰＣＲ番号を決定する。例えば、図６（ｃ）のトラストモデルにおいて、仮想マシンモニターと仮想マシン１の間のトラストモデルを検証する場合、仮想マシン１のＴＰＭ証明書識別情報であるＣＥＲＴ００１と、識別情報と、ＰＣＲ番号０、１、２を指定する（ステップＳ１１０２）。
【０１０４】
次に、サービス提供サーバーは、ノンス（乱数）を生成し、Ｓ１１０１で決定した仮想ＴＰＭ証明書ＩＤとＰＣＲ番号とノンスを情報処理端末へ送信する（ステップＳ１１０３）。
【０１０５】
次に、サービスを要求した仮想マシンが、Ｓ１１０３の情報を受信し、受信した情報を仮想マシンモニター１０３０の仮想ＴＰＭ制御部１０３３に通知する（ステップＳ１１０４）。
【０１０６】
次に、仮想ＴＰＭ制御部は、Ｓ１１０４で受信した情報から、仮想ＴＰＭに対して、ノンスと、指定されたＰＣＲに対して署名生成依頼し、仮想ＴＰＭで指定されたＰＣＲ値情報とノンスに対してＡＩＫ秘密鍵を利用し、署名生成を行う（ステップＳ１１０５）。Ｓ１１０５における署名生成は、ＴＣＧで仕様化されているＴＰＭ＿ＱｕｏｔｅやＴＰＭ＿Ｑｕｏｔｅ２コマンドを利用する。
【０１０７】
次に、情報処理端末は、通知部を利用し、署名したデータとノンス、ＰＣＲ、そしてＡＩＫ証明書をサービス提供サーバーに送信する（ステップＳ１１０６）。
次に、サービス提供サーバーは、ＡＩＫ証明書の正当性をチェックする（ステップＳ１１０７）。ＡＩＫ証明書は、ＣＡ（Ｃｅｒｔｉｆｉｃａｔｅ  Ａｕｔｈｏｒｉｔｙ）が発行しているので、ＣＡの公開鍵で検証する。Ｓ１１０７の検証の結果、チェックＮＧであれば、情報処理端末にエラーを送信する（ステップＳ１１１１）。そうでなく、Ｓ１１０７の検証の結果、チェックＯＫであれば、ステップＳ１１０８へ処理を移す。
【０１０８】
次に、ノンスのデータを検証する。サービス提供サーバーが指定したノンスであるかどうかを確認する（ステップＳ１１０８）。Ｓ１１０８にて、チェックＮＧであれば、情報処理端末にエラーを送信する（ステップＳ１１１１）。そうでなく、Ｓ１１０８の検証の結果、チェックＯＫであれば、ステップＳ１１０９へ処理を移す。
【０１０９】
次に、サービス提供サーバーは、認証ＰＣＲデータベース２００２にアクセスし、Ｓ１１０３で指定した仮想ＴＰＭ証明書の識別情報に対応する認証ＰＣＲと、情報処理端末から送信されたＰＣＲの値とを比較することで情報処理端末の正当性を検証する（ステップＳ１１０９）。Ｓ１１０９の検証結果が、チェックＮＧであれば、エラーを送信する（ステップＳ１１１１）。そうでなく、Ｓ１１０９の検証結果が、ＯＫであれば、すなわち、両者のＰＣＲが等しければ、サービス提供サーバーは、サービス提供サーバーが指定した仮想マシン環境においてトラストモデルが維持された形で、正常に起動していると判断し、情報処理端末に対してサービスを提供する。
【０１１０】
このようにすることで、サービス提供サーバーは、正当性の検証された情報処理端末にのみサービスを提供することができる。さらには、サービス提供サーバーは、従来技術においては、サービスを要求してきた端末が、仮想マシンモニター上で動作しているかの判別ができなかったが、トラストモデル管理データベース内でトラストモデルを定義したＴＰＭ証明書・仮想ＴＰＭ証明書を保持しているので、仮想マシンモニター上で動作しているマシンの判別が可能になる。さらには、マルチステークホルダーモデルのような仮想マシン間で依存関係のある構成の端末においても、トラストモデル管理データベース内の証明書を参照することで、どのトラストモデルで動作しているかどうか、そして、期待されるトラストモデルに基づいて、起動しているかどうかを判別することができ、サービス提供者は、より柔軟に情報処理端末内の環境の正当性を検証できる。
【０１１１】
以上で、実施の形態２の説明を終わる。
Ｓ１１０７からＳ１１０９のサービス提供サーバー側での検証ステップについて説明したが、これらの検証のステップに限定されなくてもよい。例えば、認証ＰＣＲデータベースの認証ＰＣＲとＳ１１０１で送信したノンス情報に対して生成した認証ハッシュ値と、Ｓ１１０６にて受け付けた署名データをＡＩＫ証明書に記載される公開鍵で復号し、復号されたハッシュ値とを、比較することで検証してもよい。
（実施の形態３）
本実施の形態３では、情報処理端末１２００は、実施の形態１、２の仮想マシンとは別に、さらに管理用のマシン環境（管理マシン１２０１）を備える。図１３は、管理用マシンを備えた情報処理端末１２００の全体構成図である。実施の形態１、２と大きく異なる点は、仮想マシンモニター内に存在した仮想ＴＰＭ制御部１２０２、仮想トラステッドビルディングブロック（１２３０，１２４０）が管理マシン１２０１内に、そして仮想マシンモニター１２０３に、仮想ＴＰＭ制御通知部１２０４が新規に構成されている点である。実施の形態１、２で説明した機能と同一の機能を実現する部分については説明を省略し、実施の形態１、２と異なる機能を有する部分のみについて説明をする。
【０１１２】
仮想ＴＰＭ制御通知部１２０４は、仮想マシン（１２１１、１２２０）の仮想ＴＰＭインターフェース（１２１１、１２２２）から仮想ＴＰＭの処理要求を受付け、受付けた仮想ＴＰＭ処理要求を、管理マシン１２０１の仮想ＴＰＭ制御部１２０２に通知する。
【０１１３】
仮想ＴＰＭ管理部１２０２は、仮想ＴＰＭ制御通知部１２０４から通知された仮想ＴＰＭ処理要求を、適切な仮想ＴＢＢ内の仮想ＴＰＭに対して処理要求をする。図１３の例では、仮想マシン１２１０からの仮想ＴＰＭ処理要求であれば、仮想ＴＰＭ１（１２３２）へ、また、仮想マシン１２２０からの仮想ＴＰＭ処理要求であれば、仮想ＴＰＭ２（１２４２）へ処理要求を行う。
【０１１４】
仮想ＴＰＭによる仮想ＴＰＭ処理要求の結果は、仮想ＴＰＭ管理部１２０２から仮想ＴＰＭ制御通知部を介し、要求元である仮想マシンへ処理結果を返す。図１１の例では、仮想ＴＰＭ１（１２３２）からの仮想ＴＰＭ処理結果であれば、仮想マシン１（１２１０）へ、そして仮想ＴＰＭ２（１２４２）からの仮想ＴＰＭ処理結果であれば、仮想マシン２（１２２０）へ、処理結果を返す。
【０１１５】
また、仮想マシンからデバイスへの処理用要求は、仮想デバイスドライバ（１２１２、１２２３）から仮想マシンモニター１２０３を経由し、管理マシン１２０１のデバイスドライバ１２６０に処理が依頼され、デバイスドライバ１２６０がデバイスに対する処理を行う。デバイスの処理結果は、デバイスへの処理用要求と逆のフローで処理結果が返るので、詳細説明は省略する。
【０１１６】
また、本実施の形態３において、管理マシンは、ＴＰＭ１２７２を利用してセキュアな処理を実行する。したがって、管理マシンの環境情報となるインテグリティ値は、ＴＰＭ１２７２に記録される。この場合、仮想マシンモニターのインテグリティ値と、管理マシンのインテグリティ値とを連鎖し、連鎖した値は、ＴＰＭ１２７２に記録される。また、図１２に図示しないＴＰＭ証明書は、仮想マシンモニターと管理マシンが利用するＴＰＭ１２７２に対応づけられた証明書とする。これにより、仮想マシンを、仮想マシンモニターに対してだけでなく管理マシンに対しても信頼の依存関係を持たせることが可能となる。このＴＰＭ証明書を利用して、セキュアブートすることで、仮想マシンモニターのインテグリティ値だけでなく、管理マシンのインテグリティ値も、仮想マシンのインテグリティ値に連鎖させることができ、連鎖した値は、仮想ＴＰＭのＰＣＲに記録される。このように仮想マシン環境および管理マシンの正当性を検証しながら、情報処理端末を起動させることが可能になる。
【０１１７】
また、実施の形態２のようなＡｔｔｅｓｔａｔｉｏｎ処理を行う場合、仮想マシンは、図１２に図示しない仮想マシンの通知部により、仮想マシンの環境情報と、仮想マシンモニターおよび管理マシンのインテグリティ値とを連鎖させた値を外部のサービス提供サーバーに送信することが可能となる。これにより外部のサービス提供サーバーにて、情報処理端末の全環境情報の正当性を検証することが可能となる。
【０１１８】
なお、仮想マシンに通知部を持たせず、管理マシン内に通知部を持たせるようにしてもよい。これにより、外部サービス提供サーバーからのＡｔｔｅｓｔａｔｉｏｎ処理結果が、仮想マシンが正当でないという結果であった場合に、管理マシンが、仮想マシンの停止や、仮想マシンに対する機能を制限させてもよい。
【０１１９】
以上で、実施の形態３の説明を終わる。
なお、仮想マシン間、あるいは仮想マシンと仮想マシンモニター・管理マシン間でインテグリティ値を連鎖させず、それぞれのマシン内だけで連鎖処理を閉じるようにしてもよい。この場合、ＴＰＭ証明書によって起動の順序だけを制御する。このようにすることで、マシンごとに独立した環境情報がそれぞれのＴＰＭのＰＣＲに記録されるようになり、個々のマシン環境を個別に検証することも可能となる。
【０１２０】
また、ＴＰＭのＰＣＲを２重に持たせるようにしてもよい。この場合、依存関係のある環境情報を連鎖させたインテグリティ情報を記録するＰＣＲ群と、依存関係のある環境情報を連鎖させないインテグリティ情報を記録するＰＣＲ群とを持たせる。また、この場合、モジュール証明書に記載される認証ＰＣＲの領域も２重に持つようにし、１つは依存関係のある環境情報を連鎖させたインテグリティ情報を示した認証ＰＣＲ値と、もう１つは依存関係のある環境情報を連鎖させないインテグリティ情報を示した認証ＰＣＲ値とする。このようにすることで、情報処理端末内の個別のマシン環境情報の正当性検証と、情報処理端末の全環境の正当性検証の２つの検証が可能となり、セキュアブートによる検証およびＡｔｔｅｓｔａｔｉｏｎによる検証が、より柔軟になる。
【０１２１】
（その他変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０１２２】
（１）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。また、各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むものではなく、これらの一部から構成されているとしてもよい。
【０１２３】
（２）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０１２４】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１２５】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【０１２６】
（３）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０１２７】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１２８】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０１２９】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１３０】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０１３１】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１３２】
（５）本発明の一実施態様である情報処理装置は、複数のステークホルダーの各々に対応する複数の仮想マシンと、前記複数の仮想マシンの各々に対応する複数の耐タンパモジュールと、前記複数の仮想マシンと前記複数の耐タンパモジュールとの間の処理を管理する管理部とを具備し、前記複数の仮想マシンの各々は、前記複数の仮想マシンの相互間において依存関係を持たせた証明書を有するものである。
【０１３３】
この構成によると、前記複数の仮想マシンの各々の依存関係を、証明書を用いて管理することにより、前記複数の仮想マシンの各々の依存関係は改竄されたものではないことが保証されるので、前記複数の仮想マシンが所望の依存関係で正規に動作することを保証できる。
【０１３４】
また、本発明の一実施態様である情報処理装置は、前記情報処理装置において、複数の仮想マシンの各々が、複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動するものである。
【０１３５】
この構成によると、複数の仮想マシンの各々が起動する際、複数の仮想マシンの相互間において依存関係を証明する証明書を参照して証明書の依存関係に従った順序で起動するので、予め定められた所望の順序で前記複数の仮想マシンが相互に関連して起動するのを保証できる。
【０１３６】
また、本発明の一実施態様である情報処理装置は、前記情報処理装置において、複数の仮想マシンの各々が、複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動し、証明書の依存関係に従った順序による起動により最終的に得られた検証値を有する耐タンパモジュールは、前記検証値に基づいて前記複数の仮想マシン全体の検証を行うものである。
【０１３７】
この構成によると、複数の仮想マシンの各々が起動する際、複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動することにより、複数の仮想マシンの各々が相互に関連した検証値を、証明書の依存関係に従った順序による起動によって最終的に得られた検証値として得ることができるので、複数の仮想マシンの起動がステークホルダー単位となって起動の連鎖が途切れるのを防止できる。
【０１３８】
また、前記情報処理装置において、複数のステークホルダーの各々が、各ステークホルダーが対応する耐タンパモジュールのみを利用する第１ステークホルダーモデル、あるステークホルダーが対応する耐タンパモジュール及び他のステークホルダーに対応する耐タンパモジュールの一領域を利用する第２ステークホルダーモデル、及びあるステークホルダーが対応する耐タンパモジュールを有さず他のステークホルダーに対応する耐タンパモジュールの全領域を利用する第３ステークホルダーモデルの中のいずれかのステークホルダーモデルに対応し、複数の仮想マシンの各々は、複数のステークホルダーの各々のステークモデルを表現した証明書であって前記複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動するものである。
【０１３９】
この構成によると、複数の仮想マシンの各々が起動する際、前記複数のステータスホルダーの各々のステークホルダーモデルを表現した証明書であって複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動することにより、複数の仮想マシンの各々が相互に関連した検証値を、証明書の依存関係に従った順序による起動によって最終的に得られた検証値として得ることができるので、複数の仮想マシンの起動がステークホルダー単位となって起動の連鎖が途切れるのを防止できる。
【０１４０】
また、複数のステータスホルダーの各々のステークモデルを表現した証明書であって複数のステータスホルダーの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動することにより、各仮想マシンは対応するステークホルダーモデルに従って起動していることが保証されるので、正しいステークホルダーモデルで動作していることの判別を確実にできる。
【０１４１】
また、前記情報処理装置において、証明書が、ステークモデルのタイプ、自己の仮想マシンが連鎖する他の仮想マシンを示すポインタ、自己の仮想マシンが連鎖する他の仮想マシンに対応する耐タンパモジュール内のレジスタを示すＰＣＲ番号を含むものである。
【０１４２】
また、前記情報処理装置において、複数の仮想マシンの各々が、証明書に基づいて連鎖する仮想マシンのステークホルダーモデルを判断する場合であって、証明書のポインタが示すステークホルダーモデルが第２ステークホルダーモデル及び第３ステークホルダーモデルのいずれであることを示す場合、証明書のＰＣＲ番号に基づいて自己の仮想マシンのステークホルダーモデルが第２ステークホルダーモデル又は第３ステークホルダーモデルかを判断するものである。
【０１４３】
この構成によると、証明書を用いてセキュアブートする際に、第２ステークホルダー及び第３ステークホルダーが、他のステークホルダーに対応する耐タンパモジュールを利用するという共通する性格を有するために、証明書が第２ステークホルダーモデル及び第３ステークホルダーモデルの双方を示すことになる場合であっても、証明書のＰＣＲ番号に基づいて自己のステークホルダーが第２ステークホルダーモデル又は第３ステークホルダーモデルかを判断することにより、いずれのステークホルダーモデルかの判断が可能となるので、各仮想マシンは対応するステークホルダーモデルの誤判断を簡易な構成により容易に防止できる。
【０１４４】
また、前記情報処理装置において、複数の仮想マシンの各々が、証明書のＰＣＲ番号が連鎖する仮想マシンに対応する耐タンパモジュール内のレジスタの一領域を示す場合、自己の仮想マシンのステークホルダーモデルが第２ステークホルダーモデルであると判断するものである。
【０１４５】
また、前記情報処理装置において、連鎖する仮想マシンの耐タンパモジュール内のレジスタの一領域は、前記複数の仮想マシンの一が、連鎖する仮想マシンに対応する耐タンパモジュール内のレジスタを重複して利用する領域である。
【０１４６】
また、前記情報処理装置において、前記複数の仮想マシンの各々が、前記証明書のＰＣＲ番号が連鎖する仮想マシンに対応する耐タンパモジュール内のレジスタの全領域を示す場合、自己のステークホルダーモデルが第３ステークホルダーモデルであると判断するものである。
【０１４７】
また、前記情報処理装置において、前記管理部が、外部のサーバー装置から認証要求（ＡＴＴＥＳＴＡＴＩＯＮ）があった場合、前記証明書の依存関係に従った順序による起動により最終的に得られた検証値を前記サーバー装置に送信するものである。
【０１４８】
この構成によると、サービスを提供するサーバー装置側において、情報処理装置内の複数の仮想マシンが正しいステークホルダーモデルで動作していることを確実に検証できる。
【０１４９】
また、前記情報処理装置において、複数の仮想マシンの各々が、起動する際に所定の検証用演算により改ざんチェックするものである。
また、前記情報処理装置において、複数の仮想マシンの各々が、所定の検証用演算により改ざんチェックする際、前記管理部の検証により得られた検証値に基づいて、前記複数の仮想マシンの各々の検証値を連鎖させて前記所定の検証用演算を行うものである。
【０１５０】
この構成によると、管理部の検証により得られた検証値に基づいて、複数の仮想マシンの各々の検証値を連鎖させて前記所定の検証用演算を行うことにより、管理部の検証値を前記前記複数の仮想マシンにおける検証用演算に反映させるので、複数の仮想マシンが正しい管理部を介在して動作していることを確認できる。
【０１５１】
また、前記情報処理装置において、複数の仮想マシン中で、セキュアブートにより最終的に得られた検証値を有する耐タンパモジュールが、耐タンパモジュール内に前記検証値を保持するものである。
【０１５２】
また、前記情報処理装置において、セキュアブートにより最終的に得られた検証値を有する耐タンパモジュールが、前記検証値に基づいて前記複数の仮想マシン及び前記管理部を含めた全体の検証を行うものである。
【０１５３】
また、前記情報処理装置において、所定の検証用演算はハッシュ演算であり、検証値はハッシュ値としたものである。
また、前記情報処理装置において、証明書が、複数の仮想マシンの相互間および複数の仮想マシンと管理部との相互間における依存関係を証明しているものである。
【０１５４】
この構成によると、証明書に、複数の仮想マシンの相互間および複数の仮想マシンと管理部との相互間における依存関係を証明させることにより、証明書は管理部を含めた複数の仮想マシンの各々の依存関係を証明することになるので、管理部を含めた複数の仮想マシンの各々の依存関係は改竄されたものではないことが保証され、管理部を含めた複数の仮想マシンが所望の依存関係で正規に動作することを保証できる。
【０１５５】
また、前記情報処理装置において、複数の仮想マシンの各々が、複数の仮想マシンの相互間、および複数の仮想マシンと管理部との相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動するものである。
【０１５６】
この構成によると、前記複数の仮想マシンの各々が起動する際、管理部を含めた複数の仮想マシンの相互間において依存関係を証明する証明書を参照して証明書の依存関係に従った順序で起動するので、予め定められた所望の順序で管理部を含めて複数の仮想マシンが相互に関連して起動するのを保証できる。
【０１５７】
また、前記情報処理装置において、複数の仮想マシンの各々は、複数の仮想マシンの相互間、および複数の仮想マシンと管理部との相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動し、証明書の依存関係に従った順序による起動により最終的に得られた検証値を有する耐タンパモジュールは、検証値に基づいて複数の仮想マシン全体の検証を行うものである。
【０１５８】
この構成によると、複数の仮想マシンの各々が起動する際、管理部を含めた複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動することにより、管理部を含めた複数の仮想マシンの各々が相互に関連した検証値を、証明書の依存関係に従った順序による起動によって最終的に得られた検証値として得ることができるので、管理部を含めて複数の仮想マシンの起動がステークホルダー単位となって起動の連鎖が途切れるのを防止できる。
【０１５９】
また、前記情報処理装置において、複数のステークホルダーの各々が、各ステークホルダーが対応する耐タンパモジュールのみを利用する第１ステークホルダーモデル、あるステークホルダーが対応する耐タンパモジュール及び他のステークホルダーに対応する耐タンパモジュールの一領域を利用する第２ステークホルダーモデル、及びあるステークホルダーが対応する耐タンパモジュールを有さず他のステークホルダーに対応する耐タンパモジュールの全領域を利用する第３ステークホルダーモデルの中のいずれかのステークホルダーモデルに対応し、複数の仮想マシンの各々が、複数のステークホルダーの各々のステークモデルを表現した証明書であって複数の仮想マシンの相互間および複数の仮想マシンと管理部との相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動するものである。
【０１６０】
この構成によると、複数の仮想マシンの各々が起動する際、管理部を含めた複数のステータスホルダーの各々のステークホルダーモデルを表現した証明書であって複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動することにより、管理部を含めて複数の仮想マシンの各々が相互に関連した検証値を、証明書の依存関係に従った順序による起動によって最終的に得られた検証値として得ることができるので、管理部を含めて複数の仮想マシンの起動がステークホルダー単位となって起動の連鎖が途切れるのを防止できる。
【０１６１】
また、前記情報処理装置において、管理部に対応する第２の耐タンパーモジュールを設け、証明書が、ステークモデルのタイプ、自己の仮想マシンが連鎖する他の仮想マシンを示すポインタ、自己の仮想マシンが連鎖する他の仮想マシンに対応する耐タンパモジュール内のレジスタを示すＰＣＲ番号、及び前記第２の耐タンパモジュール内のレジスタを示すＰＣＲ番号を含むものである。
【０１６２】
また、本発明の一実施態様である情報処理装置は、前記情報処理装置の機能を備えた携帯端末機器である。
また、本発明の一実施態様である制御方法は、複数のステークホルダーの各々に対応する複数の仮想マシンと、複数の仮想マシンの各々に対応する複数の耐タンパモジュールと、複数の仮想マシンと複数の耐タンパモジュールとの間の処理を管理する管理部とを具備した情報処理装置の制御方法であって、複数の仮想マシンの各々は、複数の仮想マシンの相互間において依存関係を持たせた証明書を有し、複数の仮想マシンの各々は、複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動し、証明書の依存関係に従った順序による起動により最終的に得られた検証値を有する耐タンパモジュールは、検証値に基づいて前記複数の仮想マシン全体の検証を行うものである。
【０１６３】
この構成によると、複数の仮想マシンの各々の依存関係を、証明書を用いて管理することにより、複数の仮想マシンの各々の依存関係は改竄されたものではないことが保証されるので、複数の仮想マシンが所望の依存関係で正規に動作することを保証できる。
【０１６４】
また、複数の仮想マシンの各々が起動する際、複数の仮想マシンの相互間において依存関係を証明する証明書を参照して証明書の依存関係に従った順序で起動するので、予め定められた所望の順序で複数の仮想マシンが相互に関連して起動するのを保証できる。
【０１６５】
また、本発明の一実施態様である制御プログラムは、複数のステークホルダーの各々に対応する複数の仮想マシンと、前記複数の仮想マシンの各々に対応する複数の耐タンパモジュールと、前記複数の仮想マシンと前記複数の耐タンパモジュールとの間の処理を管理する管理部とを具備した情報処理装置の制御プログラムであって、前記複数の仮想マシンの各々は、前記複数の仮想マシンの相互間において依存関係を持たせた証明書を有し、前記制御プログラムは、前記複数の仮想マシンの各々を、前記複数の仮想マシンの相互間において依存関係を持たせた前記証明書を用いて、前記証明書の依存関係に従った順序で起動し、前記証明書の依存関係に従った順序による起動により最終的に得られた検証値を有する耐タンパモジュールに、前記検証値に基づいて前記複数の仮想マシン全体の検証を行わせるものである。
【０１６６】
この構成によると、複数の仮想マシンの各々の依存関係を、証明書を用いて管理することにより、複数の仮想マシンの各々の依存関係は改竄されたものではないことが保証されるので、複数の仮想マシンが所望の依存関係で正規に動作することを保証できる。
【０１６７】
また、複数の仮想マシンの各々が起動する際、複数の仮想マシンの相互間において依存関係を証明する証明書を参照して証明書の依存関係に従った順序で起動するので、予め定められた所望の順序で複数の仮想マシンが相互に関連して起動するのを保証できる。
【０１６８】
また、本発明の一実施態様である集積回路は、情報処理装置で用いられる集積回路であって、複数のステークホルダーの各々に対応する複数の仮想マシンと、前記複数の仮想マシンの各々に対応する複数の耐タンパモジュールと、前記複数の仮想マシンと前記複数の耐タンパモジュールとの間の処理を管理する管理部とを具備し、前記複数の仮想マシンの各々は、前記複数の仮想マシンの相互間において依存関係を持たせた証明書を有するものである。
【０１６９】
この構成によると、前記複数の仮想マシンの各々の依存関係を、証明書を用いて管理することにより、前記複数の仮想マシンの各々の依存関係は改竄されたものではないことが保証されるので、前記複数の仮想マシンが所望の依存関係で正規に動作することを保証できる。
【０１７０】
（６）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１７１】
本発明にかかる仮想マシンのセキュアブート制御方法を利用により、複数の仮想マシンの各々が起動する際、複数の仮想マシンの相互間において依存関係を持たせた証明書を用いて、証明書の依存関係に従った順序で起動することにより、複数の仮想マシンの各々が相互に関連した検証値を、証明書の依存関係に従った順序による起動によって最終的に得られた検証値として得ることができるので、複数の仮想マシンの起動がステークホルダー単位となって起動の連鎖が途切れるのを防止できる。
【符号の説明】
【０１７２】
１０１、１０２、１１１、１１２、１２１、１２２  ステークホルダー
１０３、１０４、１１３、１１４、１２３  ＴＰＭ
１０、１０００、１２００  情報処理端末
１１、１２８０  ＣＰＵ
１２、１２８１  Ｉ／Ｏデバイス
１３、１２８２  揮発メモリ
１４、１２８３  不揮発メモリ
２０、３０、１０１０、１０２０、１２１０、１２２０  仮想マシン
２１、３１、１２１１、１２２２  仮想ＴＰＭインターフェース
２２、３２、１２１２、１２２３  仮想デバイスドライバ
２５、３５  アプリケーション
２４、３４  ゲストＯＳ
２３、３３  ＯＳローダー
４０、１０３０、１２０３  仮想マシンモニター
４１、１２６０  デバイスドライバ
４２、１２５０  ＴＰＭインターフェース
５０、１０３３、１２０２  仮想ＴＰＭ制御部
６０、７０、１２３０、１２４０  仮想ＴＢＢ
６１、７１、１２３１、１２４１  仮想計測・検証部
６２、７２、１０３１、１０３２、１２３２、１２４２  仮想ＴＰＭ
８０、１２７０  ＴＢＢ
８１、１２７１  計測・検証部
８２、１０４０、１２７２  ＴＰＭ
６３、７３、８３  ＰＣＲ
４１０  トラストモデル管理部
４１１  ＴＰＭ証明書
４１２、４１３  仮想ＴＰＭ証明書
４２０  ブート制御部
４２１  モジュール証明書格納部
４２２  ＰＣＲ初期値設定部
４２３  ブート制御部
５０１  証明書バージョン
５０２  シリアルナンバー
５０３、７０３  署名アルゴリズム
５０４  発行者情報
５０５  有効期間
５０６  サブジェクト
５０７  公開鍵情報
５０８  ＴＰＭバージョン
５０９  トラストモデル識別情報
５１０  依存ＴＰＭ証明書識別情報
５１１  依存ＴＰＭ−ＰＣＲ番号
５１２  拡張領域
５１３、７０８  署名データ
７０１  モジュール識別情報
７０２  モジュールバージョン情報
７０４  認証インテグリティ値
７０５  認証ＰＣＲ値
７０６  ＰＣＲインデックス
７０７  検証鍵識別情報
２０００  サービス提供サーバー
３０００  ネットワーク
２００１  ＡＩＫ証明書データベース
２００２  認証ＰＣＲデータベース
２００３  トラストモデル管理データベース
１０１１、１０２１  通知部
１０２１  管理マシン
１２０４  仮想ＴＰＭ制御通知部
【図１】
0005411122.tif 000002
【図２】
0005411122.tif 000003
【図３】
0005411122.tif 000004
【図４】
0005411122.tif 000005
【図５】
0005411122.tif 000006
【図６】
0005411122.tif 000007
【図７】
0005411122.tif 000008
【図８】
0005411122.tif 000009
【図９】
0005411122.tif 000010
【図１０】
0005411122.tif 000011
【図１１】
0005411122.tif 000012
【図１２】
0005411122.tif 000013
【図１３】
0005411122.tif 000014