(57)【要約】【課題】ハイバネーションによる起動であっても、ソフトウェアの正当性を正しく検証可能な情報処理技術を提供する。【解決手段】ＴＰＭ登録処理では、ＢＩＯＳ２０は、ハイバネーションイメージを生成する際に、これとコンテキスト情報とを用いてハッシュ値を計算してＰＣＲ５３へ登録する。ＴＰＭ５は、通常の起動時のためのＰＣＲ５１〜ＰＣＲ５３のハッシュ値の組み合わせと、ハイバネーションによる起動時のためのＰＣＲ５１,ＰＣＲ５３のハッシュ値の組み合わせと、暗号鍵とを含むブロブを生成する。正当性検証処理では、ＢＩＯＳ２０は自身のハッシュ値を計算しこれをＰＣＲ５１へ登録し、ハイバネーションイメージ及びコンテキスト情報のハッシュ値を計算してＰＣＲ５３に登録する。ＴＰＭ５は、ブロブと、ＰＣＲ５１,ＰＣＲ５３に各々登録されているハッシュ値とを用いて、ブロブに含まれる暗号鍵の取り出しを許可するか否かを判断する。【選択図】図１
2010267246.tif 000002
【特許請求の範囲】
【請求項１】
電源の供給時にのみ記憶内容を保持する主記憶部と、
前記電源の供給が切断されても記憶内容を保持する補助記憶部と、
前記電源の供給の切断時の当該情報処理装置の作動状態を示す作動状態データを生成してこれを前記補助記憶部に記憶させ、電源の再供給時に、前記補助記憶部に記憶されている前記作動状態データを読み出して当該情報処理装置の作動状態を復元するハイバネーションを行う制御部と、
配置レジスタを有し、前記配置レジスタに登録された値を用いてデータを暗号化してこれを補助記憶部に記憶させるセキュリティチップとを備え、
前記制御部は、
前記作動状態データを生成する際に、当該作動状態データを用いて演算値を計算してこれを前記配置レジスタに登録する第１登録部と、
前記ハイバネーションにおいて前記補助記憶部から前記作動状態データを読み出す際に、当該作動状態データを用いて演算値を計算してこれを前記配置レジスタに登録する第２登録部と、
前記第２登録部が登録した前記配置レジスタの値を用いて、前記セキュリティチップが暗号化したデータを復号可能か否かを判断することにより、前記ハイバネーションによる起動時の正当性を検証する検証部とを有する
ことを特徴とする情報処理装置。
【請求項２】
前記セキュリティチップは、前記配置レジスタに登録された値と、前記データとを含むブロブを生成してこれを補助記憶部に記憶させ、
前記検証部は、前記第２登録部が登録した前記配置レジスタの値と、前記ブロブに含まれる前記値とが一致する場合に、前記データの取り出しが可能であり、前記ブロブが復号可能であると判断する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記セキュリティチップは、トラストチェーンを構築する各ソフトウェアに各々対応する複数の配置レジスタを有し、各前記配置レジスタに登録された値の組み合わせと、前記データとを含むブロブを生成してこれを補助記憶部に記憶させ、
前記制御部は、
各ソフトウェアのそれぞれについて演算値を計算してこれを各々対応する前記配置レジスタに登録する第３登録部と、
前記電源の供給時に各前記ソフトウェアを起動する際に、各ソフトウェアのそれぞれについて演算値を計算してこれを各々対応する前記配置レジスタに登録する第４登録部とを更に有し、
前記検証部は、各前記配置レジスタの値について前記第４登録部が登録した値と、前記ブロブに含まれる前記値とが全て一致する場合に、前記データの取り出しが可能であり、前記ブロブが復号可能であると判断する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記セキュリティチップは、各前記ソフトウェアに各々対応して各前記配置レジスタに登録された第１の値の組み合わせと、前記作動状態データが生成される際に複数の前記配置レジスタのうち少なくとも１つに登録された第２の値と、前記データとを含むブロブを生成してこれを補助記憶部に記憶させ、
前記検証部は、各前記配置レジスタの値について前記第４登録部が登録した値と、前記ブロブに含まれる前記第１の値とが全て一致する場合及び前記第２登録部が登録した前記配置レジスタの値と、前記ブロブに含まれる前記第２の値とが一致する場合のうち少なくとも一方の場合に、前記データの取り出しが可能であり、前記ブロブが復号可能であると判断する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
電源の供給時にのみ記憶内容を保持する主記憶部と、前記電源の供給が切断されても記憶内容を保持する補助記憶部と、前記電源の供給の切断時の当該情報処理装置の作動状態を示す作動状態データを生成してこれを前記補助記憶部に記憶させ、電源の再供給時に、前記補助記憶部に記憶されている前記作動状態データを読み出して当該情報処理装置の作動状態を復元するハイバネーションを行う制御部と、配置レジスタを有し、前記配置レジスタに登録された値を用いてデータを暗号化してこれを補助記憶部に記憶させるセキュリティチップとを備える情報処理装置で実行される正当性検証方法であって、
前記制御部が、前記作動状態データを生成する際に、当該作動状態データを用いて演算値を計算してこれを前記配置レジスタに登録する第１登録ステップと、
前記制御部が、前記ハイバネーションにおいて前記補助記憶部から前記作動状態データを読み出す際に、当該作動状態データを用いて演算値を計算してこれを前記配置レジスタに登録する第２登録ステップと、
前記制御部が、前記第２登録ステップで登録した前記配置レジスタの値を用いて、前記セキュリティチップが暗号化したデータを復号可能か否かを判断することにより、前記ハイバネーションによる起動時の正当性を検証する検証ステップとを含む
ことを特徴とする正当性検証方法。
【請求項６】
請求項５に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、正当性検証方法及びプログラムに関する。
【背景技術】
【０００２】
実現可能な機能が予め組み込まれた組み込み型機器において要求される機能の増大に対応してファームウェアの容量が年々増大している。それに伴い、起動に要する時間がだんだん長くなり高機能化するほど起動が遅い機器となるのが問題になりつつある。つまり、機器において実現可能な機能は増大するが、それに比例して機器の起動速度は低下していく。リソースをロードし初期化するために大きく時間をとられるようになるからである。機器において実現可能な機能が増大するのは例えば以下の理由による。
・ＯＳ（Operating System）やファームウェアの高機能化。多量のアプリケーションを支えるために仮想記憶をサポートしたＯＳが必要になり、ＯＳのサイズが肥大化する。
・周辺機器の多様化。機器に搭載されるサポートすべきＩ／Ｏ機器が増え、そのためのファーム・アプリケーションが必要となる。特にパネル等のユーザインターフェースの高機能化により必要とされるデータ量が増大する。
・ソフトウェアの高機能化。製品の差別化を図るために高機能化する方向で競争がなされるため、ソフトウェアの機能は指数関数的に増大していく。
【０００３】
こういった状況を打破するための一つの方法が「ハイバネーション」である。ハイバネーションでは、機器の作動時にＲＡＭ（Random Access Memory）などのメインメモリに記憶されていたメモリイメージ及びＣＰＵなどのハードウェアのコンテキスト情報などの機器の作動状態を示すデータ（作動状態データという）を記憶しておく。そして起動時に、保存していたメモリイメージを展開し、メモリイメージで動作していたハードウェアのコンテキスト情報を復元し復元地点から機器が作動することで、作動状態データが記憶された時の作動状態を復元する。このようなハイバネーションによれば、通常の起動に比べ格段に早い時間で起動することができる。このハイバネーションに関する技術は、例えば特許文献１〜２に記載されている。
【０００４】
ところで、組み込み機器においてセキュリティの向上が望まれている。このようなことから、組み込み機器で動作するソフトウェアの不正な改ざんを防止する技術が開発されている。例えば、組み込み機器の内部に使用者のプライベートな情報を秘匿して保存し、その組み込み機器に対して製造メーカが保証できる正当なソフトウェアが動作することを保証する正当性検証を行なうことで、不正なソフトウェアの動作を防止するＴＰＭ（Trusted Platform Module ）を用いた仕組みが提案されている（例えば特許文献３参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献３の技術では、通常の起動時の各ソフトウェアのハッシュ値等を正当性検証時にＴＰＭに登録し、登録されたハッシュ値の組み合わせが正しいときのみブロブ（Blob）と呼ばれる鍵を暗号化したデータを復号することができる事実から正当性の検証を行っていた。つまり、通常の起動時とは異なるハイバネーションによる起動時には、ハッシュ値の組み合わせを正しく得ることができないため、ソフトウェアの正当性を正しく検証することは困難であった。
【０００６】
本発明は、上記に鑑みてなされたものであって、ハイバネーションによる起動であっても、ソフトウェアの正当性を正しく検証可能な情報処理装置、正当性検証方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置であって、電源の供給時にのみ記憶内容を保持する主記憶部と、前記電源の供給が切断されても記憶内容を保持する補助記憶部と、前記電源の供給の切断時の当該情報処理装置の作動状態を示す作動状態データを生成してこれを前記補助記憶部に記憶させ、電源の再供給時に、前記補助記憶部に記憶されている前記作動状態データを読み出して当該情報処理装置の作動状態を復元するハイバネーションを行う制御部と、配置レジスタを有し、前記配置レジスタに登録された値を用いてデータを暗号化してこれを補助記憶部に記憶させるセキュリティチップとを備え、前記制御部は、前記作動状態データを生成する際に、当該作動状態データを用いて演算値を計算してこれを前記配置レジスタに登録する第１登録部と、前記ハイバネーションにおいて前記補助記憶部から前記作動状態データを読み出す際に、当該作動状態データを用いて演算値を計算してこれを前記配置レジスタに登録する第２登録部と、前記第２登録部が登録した前記配置レジスタの値を用いて、前記セキュリティチップが暗号化したデータを復号可能か否かを判断することにより、前記ハイバネーションによる起動時の正当性を検証する検証部とを有することを特徴とする。
【０００８】
また、本発明は、電源の供給時にのみ記憶内容を保持する主記憶部と、前記電源の供給が切断されても記憶内容を保持する補助記憶部と、前記電源の供給の切断時の当該情報処理装置の作動状態を示す作動状態データを生成してこれを前記補助記憶部に記憶させ、電源の再供給時に、前記補助記憶部に記憶されている前記作動状態データを読み出して当該情報処理装置の作動状態を復元するハイバネーションを行う制御部と、配置レジスタを有し、前記配置レジスタに登録された値を用いてデータを暗号化してこれを補助記憶部に記憶させるセキュリティチップとを備える情報処理装置で実行される正当性検証方法であって、前記制御部が、前記作動状態データを生成する際に、当該作動状態データを用いて演算値を計算してこれを前記配置レジスタに登録する第１登録ステップと、前記制御部が、前記ハイバネーションにおいて前記補助記憶部から前記作動状態データを読み出す際に、当該作動状態データを用いて演算値を計算してこれを前記配置レジスタに登録する第２登録ステップと、前記制御部が、前記第２登録ステップで登録した前記配置レジスタの値を用いて、前記セキュリティチップが暗号化したデータを復号可能か否かを判断することにより、前記ハイバネーションによる起動時の正当性を検証する検証ステップとを含むことを特徴とする。
【０００９】
また、本発明は、上記の方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１０】
本発明によれば、ハイバネーションによる起動であっても、ソフトウェアの正当性を正しく検証可能になる。
【図面の簡単な説明】
【００１１】
【図１】図１は、一実施の形態に係る情報処理装置のハードウェア構成を例示する図である。
【図２】図２は、ＴＰＭの通常起動時の動作を模式的に示した図である。
【図３】図３は、ＴＰＭを用いた情報の暗号化及び復号を表す模式図である。
【図４】図４は、ＴＰＭを用いた情報の暗号化及び復号を表す模式図である。
【図５】図５は、「ハイバネーションによる起動時におけるＴＰＭ５の動作を模式的に示した図である。
【図６】図６は、トラストチェーンについて説明するための図である。
【図７】図７は、従来のＴＰＭ登録処理の手順を示すフローチャートである。
【図８】図８は、通常の起動時の正当性検証処理の手順を示すフローチャートである。
【図９】図９は、同実施の形態にかかるＴＰＭ登録処理の手順を示すフローチャートである。
【図１０】図１０は、ハイバネーションによる起動時の正当性検証処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、この発明にかかる情報処理装置、正当性検証方法及びプログラムの実施の形態を詳細に説明する。
【００１３】
図１は本実施の形態に係る情報処理装置のハードウェア構成を例示する図である。尚、本実施の形態に係る情報処理装置はパーソナルコンピュータや、コピー機能、プリンタ機能、スキャナ機能及びファクシミリ機能のうち少なくとも１つの機能を有する画像形成装置やこれらの機能のうち少なくとも２つ以上の機能を有する複合機に適用しても良い。同図に示される情報処理装置は、ＣＰＵ１，ＡＳＩＣ２，揮発性メモリ３，エンジンコントローラ４，ＴＰＭ５，不揮発メモリ６，ネットワークデバイス７及びＳＤカードＩ／Ｆ８を備える。ＣＰＵ１は、メインバス９を介してＡＳＩＣ２，エンジンコントローラ４に接続されている。ＡＳＩＣ２は揮発性メモリ３と接続されると共に、ローカルバス１０を介してＴＰＭ５，不揮発メモリ６，ネットワークデバイス７，ＳＤカードＩ／Ｆ８に接続される。
【００１４】
ＣＰＵ１は、不揮発性メモリ６に記憶された各種プログラムを実行することにより情報処理装置全体を制御して各種機能を実現させる。ＡＳＩＣ２は、例えば画像処理を行うための集積回路である。揮発性メモリ３は、各種プログラムや各種データを一時的に記憶する主記憶部であり、電源が供給されている間のみ記憶内容を保持する。不揮発メモリ６は、各種プログラムや各種データを記憶する補助記憶部であり、電源の供給が切断されてもその記憶内容を保持可能である。また、不揮発メモリ６は、ＣＰＵ１が生成したハイバネーションイメージと、ＣＰＵ１のコンテキスト情報とを記憶する。ＴＰＭ５は、ローカルバス１０上に搭載されており、秘密情報の暗号化や復号、プラットフォームの真正性を確認するプラットフォーム検証の機能を提供可能である。具体的には、ＴＰＭ５は、内部に固有の秘密情報と配置レジスタとを保持するセキュリティチップであり、ＴＰＭ５を破壊しない限りこの秘密情報を物理的に取り出せない構造となっている。本実施の形態においては、この配置レジスタとの組み合わせによりデータを暗号化したものをブロブとする。このブロブは、固有の秘密情報を保持するＴＰＭを用い且つ生成時に配置レジスタに指定された値の組み合わせが一致した場合のみブロブを復号可能になる。即ち、ブロブに含まれるデータを取り出し可能になる。このような構成により、情報処理装置では、実現可能な機能が予め組み込まれている。
【００１５】
ここで、ＴＰＭ５を用いた情報の暗号化及び復号について簡単に説明する。図２はＴＰＭの通常起動時の動作を模式的に示した図である。同図に示されるプラットフォーム５０は、ＣＰＵ１がプログラムを実行する際に揮発性メモリ３上にロードされるものである。プラットフォーム５０は、ソフトウェアとして、ＢＩＯＳ２０と、基本パッケージ２１と、アプリケーションパッケージ２２とを有する。これらの各ソフトウェアによりトラストチェーンが構築される。尚、図示しないが、基本パッケージ２１は、ＯＳを有し、ＯＳはファイルシステムを有する。また、ＢＩＯＳ２０は、ハイバネーションのために、情報処理装置の作動状態を示す作動状態データとして、揮発性メモリ３の記憶内容からハイバネーションイメージを生成し、これとＣＰＵ１のコンテキスト情報とを不揮発性メモリ６に記憶させる機能を有する。また、ＴＰＭ５は、配置レジスタとして、ＰＣＲ５１〜５３を有する。尚、ＰＣＲ５１は「ＰＣＲ０」に対応し、ＰＣＲ５２は「ＰＣＲ１」に対応し、ＰＣＲ５３は「ＰＣＲ２」に対応する。
【００１６】
プラットフォーム５０では、まず、ＢＩＯＳ２０のコア部分が起動されると、自身のハッシュ値を計算しこれをＴＰＭ５内のＰＣＲ５１へ登録する。ＢＩＯＳ２０は例えば原文から固定長の疑似乱数を生成する演算手法によってハッシュ値を計算する。その後ＢＩＯＳ全体が起動される。次に、ＢＩＯＳ２０は基本パッケージ２１に関するハッシュ値を計算しこれをＴＰＭ５内のＰＣＲ５２へ登録した後、基本パッケージ２１を起動する。基本パッケージ２１に関するハッシュ値とは、揮発性メモリ３にロードされる、ＯＳを含む実行コード及びデータを用いて得られるハッシュ値である。また、基本パッケージ２１は、アプリケーションパッケージ２２に関するハッシュ値を計算しこれをＴＰＭ５内のＰＣＲ５２へ登録した後、アプリケーションパッケージ２２を起動する。アプリケーションパッケージ２２に関するハッシュ値とは、アプリケーションパッケージ２２及び当該アプリケーションパッケージ２２で用いるデータを用いて得られるハッシュ値である。このように、ＴＰＭ５のＰＣＲ５１〜５３には、情報処理装置の起動に伴い、ＢＩＯＳ２０，基本パッケージ２１及びアプリケーションパッケージ２２から計算されるハッシュ値が登録される。
【００１７】
図３はＴＰＭを用いた情報の暗号化及び復号を表す模式図である。図３の上側はＴＰＭ５による情報「Ｄａｔａ  Ｐ」の暗号化を表している。ＴＰＭ５は暗号化を行う情報「Ｄａｔａ  Ｐ」と、「ＰＣＲ０」〜「ＰＣＲ２」に格納するハッシュ値「Ｘ」〜「Ｚ」とに基づいて、ブロブ６０を生成してこれを不揮発性メモリ６に記憶させる。
【００１８】
図３の下側はＴＰＭによるブロブ６１〜６３の復号を表している。ＴＰＭ５は、情報処理装置を起動する際に、例えばＢＩＯＳ２０，基本パッケージ２１及びアプリケーションパッケージ２２から計算された３つのハッシュ値「Ｘ」〜「Ｚ」が「ＰＣＲ０」〜「ＰＣＲ２」へ登録されている。
【００１９】
情報「Ｄａｔａ  Ｐ」を含むブロブ（Blob）６１〜６３は、ファイルシステムが管理している。ブロブ６１は、「ＰＣＲ０」に「Ｘ」が登録され、「ＰＣＲ１」に「Ｙ」が登録され、「ＰＣＲ２」に「Ｚ」が登録されている。ブロブ６２は、「ＰＣＲ０」に「Ｘ」が登録され、「ＰＣＲ１」に「Ｇ」が登録され、「ＰＣＲ２」に「Ｚ」が登録されている。また、ブロブ６３は「ＰＣＲ０」に「Ｘ」が登録されている。
【００２０】
ブロブ６１の「ＰＣＲ０」〜「ＰＣＲ２」とＴＰＭ５の「ＰＣＲ０」〜「ＰＣＲ２」とに各々登録されているハッシュ値が同じであるため、ＴＰＭ５はブロブ６１からの情報「Ｄａｔａ  Ｐ」の取り出しを許可する。また、ブロブ６２の「ＰＣＲ１」とＴＰＭ５の「ＰＣＲ１」とに登録されているハッシュ値が異なるため、ＴＰＭ５はブロブ６２からの情報「Ｄａｔａ  Ｐ」の取り出しを許可しない。さらに、ＴＰＭ５はブロブ６３の「ＰＣＲ０」とＴＰＭ５の「ＰＣＲ０」とに登録されているハッシュ値が同じであるため、ブロブ６３からの情報「Ｄａｔａ  Ｐ」の取り出しを許可する。なお、ＴＰＭ５はブロブ６３のようにハッシュ値が登録されていない「ＰＣＲ１」、「ＰＣＲ２」について、情報「Ｄａｔａ  Ｐ」の取り出しの許可又は不許可の判定に利用しない。
【００２１】
即ち、ブロブの組み合わせとして、ブロブ６３では「ＰＣＲ０」に登録された１つのハッシュ値の一致で「Ｄａｔａ  Ｐ」の取り出しが許可され、ブロブ６１〜６２では「ＰＣＲ０」〜「ＰＣＲ２」に各々登録された３つのハッシュ値の一致で「Ｄａｔａ  Ｐ」の取り出しが許可される。尚、情報「Ｄａｔａ  Ｐ」が取り出されるとは、即ち、ブロブが復号されることである。
【００２２】
ここで、正当性検証処理について説明する。ブロブには、秘密情報を暗号化したり暗号化された秘密情報を復号したりするための暗号鍵が情報「Ｄａｔａ  Ｐ」として含まれるものとする。そしてこの暗号鍵の取り出しの可否、即ち、ブロブの復号の可否が、「ＰＣＲ０」〜「ＰＣＲ２」に各々登録されたハッシュ値が全て一致するか否かにより判断される。そして、暗号鍵の取り出しが許可された場合、ＣＰＵ１は、暗号鍵を用いて、暗号化された秘密情報を復号することができる。暗号鍵の取り出しが許可されない場合、ＣＰＵ１は、正当性エラーであると判断する。このような処理が正当性検証処理である。
【００２３】
次に、ハイバネーションによる起動時におけるＴＰＭ５の動作の概略について図４を用いて説明する。プラットフォーム５０では、ＢＩＯＳ２０は、ハイバネーションイメージを生成してこれとＣＰＵ１のコンテキスト情報とを不揮発性メモリ６に記憶させたとき、ハイバネーションイメージ及びコンテキスト情報を用いてハッシュ値を計算してこれをＴＰＭ５内のＰＣＲ５３へ登録する。そして、ハイバネーションによる起動時には、ＢＩＯＳ２０のコア部分が起動されると、自身のハッシュ値を計算しこれをＴＰＭ５内のＰＣＲ５１へ登録する。その後ＢＩＯＳ２０全体が起動される。その後、ＢＩＯＳ２０は、ハイバネーションイメージ及びＣＰＵ１のコンテキスト情報を不揮発性メモリ６から読み出すと共に、ハイバネーションイメージ及びコンテキスト情報のハッシュ値を計算してこれをＴＰＭ５内のＰＣＲ５３に登録する。一方、ＴＰＭ５は、通常の起動時にブロブを復号可能な組み合わせとして、ＰＣＲ５１〜ＰＣＲ５３のハッシュ値の組み合わせ（図４に示す下段参照）と、ハイバネーションによる起動時にブロブを復号可能な組み合わせとして、ＰＣＲ５１,ＰＣＲ５３のハッシュ値の組み合わせと、暗号鍵とを含むブロブを生成してこれを不揮発性メモリ６に記憶させる。
【００２４】
ここで、本実施の形態においては、「ＰＣＲ０」〜「ＰＣＲ２」の値の組み合わせを複数有するブロブリストを取り扱う。図５は、「ＰＣＲ０」〜「ＰＣＲ２」の値の組み合わせを複数有するブロブを例示する図である。ブロブリスト６４は、「ＰＣＲ０」に「Ｘ」が登録され、「ＰＣＲ２」に「Ｗ」が登録されているpatter1ブロブ（上段参照）と、「ＰＣＲ０」に「Ｘ」が登録され、「ＰＣＲ１」に「Ｙ」が登録され、「ＰＣＲ２」に「Ｚ」が登録されているpattern2ブロブ（下段参照）とを含む。本実施の形態においては、通常の起動時には、上述したように、ＢＩＯＳ２０のハッシュ値が「ＰＣＲ０」に登録され、基本パッケージ２１のハッシュ値が「ＰＣＲ１」に登録され、アプリケーションパッケージ２２のハッシュ値が「ＰＣＲ２」に登録される。一方、ハイバネーションによる起動時には、ＢＩＯＳ２０のハッシュ値が「ＰＣＲ０」に登録され、ハイバネーションイメージ及びコンテキスト情報のハッシュ値が「ＰＣＲ２」に登録される。ＴＰＭ５は、通常の起動時には、図５に示すpattern2ブロブを用いて暗号鍵の取り出しを許可するか否かを判断し、ハイバネーションによる起動時には、図５に示すpattern1ブロブを用いて暗号鍵の取り出しを許可するか否かを判断する。このように各ブートのステージ毎に、配置レジスタである「ＰＣＲ０」〜「ＰＣＲ２」の値を設定していくことで、トラストチェーンが構築される。
【００２５】
このトラストチェーンについて図６を用いて具体的に説明する。ＢＩＯＳ２０の信頼性は、他の信頼性の元になるものでRoot of Trustとよばれる。具体的には、ＢＩＯＳ２０の信頼性は、ＴＰＭ５とＢＩＯＳ２０の一部あるいは全部を不揮発性メモリ６に記憶させることで確保するか、ＣＰＵ１の特殊な命令を利用して確保する。ここでは、なんらかの手段で、ＢＩＯＳ２０の信頼性を既に確保できているものとする。ＢＩＯＳ２０が起動した後の各処理では、基本パッケージ、アプリケーションパッケージ、ハイバネーションイメージの各場合について、メモリロードとハッシュ値の計算とは前段の信頼できるモジュールによりロードされるので信頼できる。各モジュールのハッシュ値は各モジュールの動作が信頼できるため信頼できる。信頼できるハッシュ値の組み合わせに対し、pattern1ブロブ又はpattern2ブロブからＴＰＭ５を介して正常にとりだされる暗号鍵（Ｄａｔａ  Ｐ）は信頼できる。以上のことから、最終的に、解凍できた暗号鍵は信頼できることになる。このように信頼性が連鎖することがトラストチェーンが構築されるということである。
【００２６】
次に、本実施の形態に係る情報処理装置の行うＴＰＭ登録処理及び正当性検証処理の手順について説明する。その説明の前に、まず、従来のＴＰＭ登録処理及び正当性検証処理の手順について説明する。図７は、従来のＴＰＭ登録処理の手順を示すフローチャートである。セキュリティを確保された環境又はなんらかの検証手段により正当性が証明されているＢＩＯＳ２０、基本パッケージ２１及びアプリケーションパッケージ２２のうち少なくとも１つのソフトウェアが更新されて新たにインストールされる場合、次回の起動時にブロブが正当であるためには、更新されたソフトウェアのハッシュ値を有する必要がある。この新たなハッシュ値を有するようブロブを更新するための処理が以下に説明するＴＰＭ登録処理である。尚、更新されるソフトウェアは、暗号鍵を保持しているものとする。ＢＩＯＳ２０が更新された場合（ステップＳ１：ＹＥＳ）、ＢＩＯＳ２０のハッシュ値を計算してこれをＴＰＭ５のＰＣＲ５１に登録して（ステップＳ２）、ステップＳ３に進む。ＢＩＯＳ２０が更新されていない場合（ステップＳ１：ＮＯ）もステップＳ３に進む。基本パッケージ２１が更新された場合（ステップＳ３：ＹＥＳ）、ＢＩＯＳ２０は、基本パッケージ２１に関するハッシュ値を計算してこれをＴＰＭ５のＰＣＲ５２に登録して（ステップＳ４）、ステップＳ５に進む。基本パッケージ２１が更新されていない場合（ステップＳ３：ＮＯ）もステップＳ５に進む。アプリケーションパッケージ２２が更新された場合（ステップＳ５：ＹＥＳ）、基本パッケージ２１は、アプリケーションパッケージ２２に関するハッシュ値を計算してこれをＴＰＭ５のＰＣＲ５３に登録して（ステップＳ６）、ステップＳ７に進む。アプリケーションパッケージ２２が更新されていない場合（ステップＳ５：ＮＯ）もステップＳ７に進む。ステップＳ７では、更新された各ソフトウェアはＴＰＭ５に暗号鍵を渡し、ＴＰＭ５は、当該暗号鍵（図３，５の例では「Data P」に相当する）と、ＰＣＲ５１〜５３に各々登録されたハッシュ値とを含むブロブを生成してこれをブロブリスト６４のpattern2ブロブとして不揮発性メモリ６に記憶させる。その後、情報処理装置が再起動されると、図２を用いて説明したように各ソフトウェアが起動することにより、通常の起動が行なわれる。この場合の正当性検証処理の手順については図８を用いて説明する。
【００２７】
ＢＩＯＳ２０のコア部分が起動されると（ステップＳ２１）、ＢＩＯＳ２０のコア部分は自身のハッシュ値を計算しこれをＴＰＭ５内のＰＣＲ５１へ登録する（ステップＳ２２）。この後、ＢＩＯＳ２０の全体が起動される。その後、ＢＩＯＳ２０は基本パッケージ２１に関するハッシュ値を計算しこれをＴＰＭ５内のＰＣＲ５２へ登録する（ステップＳ２３）。そして、ＢＩＯＳ２０は基本パッケージ２１を起動する（ステップＳ２４）。基本パッケージ２１は、アプリケーションパッケージ２２に関するハッシュ値を計算しこれをＴＰＭ５内のＰＣＲ５３へ登録する（ステップＳ２５）。そして、基本パッケージ２１は、アプリケーションパッケージ２２を起動する（ステップＳ２６）。次いで、ＴＰＭ５は、図７を用いて説明したＴＰＭ登録処理で生成したブロブと、ＰＣＲ５１〜５３に各々登録されているハッシュ値とを用いて、ブロブに含まれる暗号鍵の取り出しを許可するか否かを決定する。例えば図４に示されるブロブリスト６４に含まれるいずれかのブロブ（Pattern1ブロブ，Pattern2ブロブ）に対して、ＰＣＲ５１〜５３の全てについてブロブに含まれるハッシュ値と、登録されているハッシュ値とが一致する場合に、ＴＰＭ５は、ブロブに含まれる暗号鍵の取り出しを許可する（ステップＳ２７：ＹＥＳ）。この場合、ＣＰＵ１は、当該暗号鍵を用いて、暗号化された秘密情報を復号する。一方、ブロブリスト６４に含まれる全てのブロブ（Pattern1ブロブ，Pattern2ブロブ）に対して、ＰＣＲ５１〜５３のうち少なくとも１つについてブロブに含まれるハッシュ値と、登録されているハッシュ値とが一致しない場合に（ステップＳ２７：ＮＯ）、ＴＰＭ５は、ブロブに含まれる暗号鍵の取り出しを許可しない。この場合、ＣＰＵ１は、正当性エラーであるとして処理を終了する（ステップＳ２８）。
【００２８】
次に、本実施の形態にかかるＴＰＭ登録処理及び正当性検証処理の手順について説明する。本実施の形態においては、上述した従来のＴＰＭ登録処理でＰＣＲ５１〜５３に各々ハッシュ値が登録され正当性検証処理で正当性を検証可能な状態で、更に、ハイバネーションによる起動時においても正当性を正しく検証するためのＴＰＭ登録処理を行う。このような本実施の形態にかかるＴＰＭ登録処理の手順について図９を用いて説明する。
【００２９】
まず、ＰＣＲ５１〜ＰＣＲ５３には、通常の起動時にブロブを復号可能な組み合わせでハッシュ値が予め登録されるものとする（ステップＳ４０）。これは、通常起動した場合、常に成り立っているはずの条件となる。そして、ＢＩＯＳ２０は、ハイバネーションイメージを生成してこれとＣＰＵ１のコンテキスト情報とを不揮発性メモリ６に記憶させる際に（ステップＳ４１：ＹＥＳ）、ハイバネーションイメージ及びコンテキスト情報を用いてハッシュ値を計算する。そして、ＢＩＯＳ２０は、計算したハッシュ値をＴＰＭ５内のＰＣＲ５３へ登録して（ステップＳ４２）、ステップＳ４３に進む。ハイバネーションイメージを新たに生成しない場合には（ステップＳ４２：ＮＯ）、ＢＩＯＳ２０は、ステップＳ４２の処理を行なわずに、ステップＳ４３に進む。ステップＳ４３では、ＴＰＭ５は、ハイバネーションによる起動時にブロブを復号可能な組み合わせとして、ＰＣＲ５１,ＰＣＲ５３のハッシュ値の組み合わせと、暗号鍵とを含むブロブを生成してこれを例えば図５に例示されるブロブリスト６４のPattern1ブロブとして不揮発性メモリ６に記憶させる。その後、ＢＩＯＳ２０は、情報処理装置が再起動されると、ＢＩＯＳ２０のコア部分が起動する。ここでの再起動がハイバネーションによる起動である場合の正当性検証処理の手順については図１０を用いて説明する。
【００３０】
ＢＩＯＳ２０のコア部分が起動されると（ステップＳ６１）、ＢＩＯＳ２０のコア部分は自身のハッシュ値を計算しこれをＴＰＭ５内のＰＣＲ５１へ登録する（ステップＳ６２）。この後、ＢＩＯＳ２０の全体が起動される。その後、ＢＩＯＳ２０は、ハイバネーションイメージ及びＣＰＵ１のコンテキスト情報を不揮発性メモリ６から読み出すと共に、ハイバネーションイメージ及びコンテキスト情報のハッシュ値を計算してこれをＴＰＭ５内のＰＣＲ５３に登録する（ステップＳ６３）。次いで、ＴＰＭ５は、図７を用いて説明したＴＰＭ登録処理で生成したブロブと、ＰＣＲ５１,ＰＣＲ５３に各々登録されているハッシュ値とを用いて、ブロブに含まれる暗号鍵の取り出しを許可するか否かを判断する。例えば図５に示されるブロブリスト６４に含まれるいずれかのブロブ（Pattern1ブロブ，Pattern2ブロブ）に対して、ＰＣＲ５１,ＰＣＲ５３の全てについてブロブに含まれるハッシュ値と、登録されているハッシュ値とが一致する場合に、ＴＰＭ５は、ブロブに含まれる暗号鍵の取り出しを許可する（ステップＳ６４：ＹＥＳ）。この場合、ＣＰＵ１は、当該暗号鍵を用いて、暗号化された秘密情報を復号する。一方、ブロブリスト６４に含まれる全てのブロブ（Pattern1ブロブ，Pattern2ブロブ）に対して、ＰＣＲ５１,ＰＣＲ５３のうち少なくとも１つについてブロブに含まれるハッシュ値と、登録されているハッシュ値とが一致しない場合に、ＴＰＭ５は、ブロブに含まれる暗号鍵の取り出しを許可しない。この場合、ＣＰＵ１は、正当性エラーであるとして処理を終了する（ステップＳ６５）。
【００３１】
尚、図９に示したＴＰＭ登録処理後に、通常の起動が行われた場合には、例えば図５に示されるブロブリスト６４のpattern2ブロブを用いて、図８に示される通常の起動時の正当性検証処理が行われる。
【００３２】
以上のように、通常の起動時に対応する配置レジスタ値の組み合わせとハイバネーションによる起動時に対応する配置レジスタ値の組み合わせとを含むブロブリストに対して暗号鍵の取得を試みることにより、ハハイバネーションによる起動時においても、配置レジスタの値を正しく検証することができる。このため、正当にインストールされたソフトウェアについてはその正当性を認識して、起動することができる。従って、本実施の形態においては、ハイバネーションによる起動時においても、ソフトウェアの正当性を正しく検証可能である。
【００３３】
即ち、本実施の形態においては、図８に示されるような通常の起動時の正当性検証処理を行うための配置レジスタの組み合わせを含むブロブを生成し、ハイバネーションイメージが生成されることを前提として、図１０に示されるようなハイバネーションによる起動時の正当性検証処理を行うための配置レジスタの組み合わせを含むようブロブを更新することで、ハイバネーションによる起動時に図８に示される正当性検証処理を行っても、トラストチェーンが継続されることになる。
【００３４】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００３５】
上述した実施の形態において、情報処理装置で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供するように構成しても良い。
【００３６】
本実施例では、ＰＣＲレジスタを節約するために、ハイバネーションイメージのハッシュ値を記憶するＰＣＲレジスタとして、通常起動でも使用するＰＣＲレジスタ（ＰＣＲ５３）を使用したが、通常起動で使用しない別のレジスタを使用しても構わない。
【符号の説明】
【００３７】
１  ＣＰＵ
２  ＡＳＩＣ
３  揮発性メモリ
４  エンジンコントローラ
５  ＴＰＭ
６  不揮発メモリ
７  ネットワークデバイス
８  ＳＤカードＩ／Ｆ
９  メインバス
１０  ローカルバス
２０  ＢＩＯＳ
２１  基本パッケージ
２２  アプリケーションパッケージ
５０  プラットフォーム
６０〜６３  ブロブ
６４  ブロブリスト
【先行技術文献】
【特許文献】
【００３８】
【特許文献１】特開２００４−０３８５４５号公報
【特許文献２】特開２００４−０３８５４６号公報
【特許文献３】特開２００７−２５７１９７号公報
【図１】
2010267246.tif 000003
【図２】
2010267246.tif 000004
【図３】
2010267246.tif 000005
【図４】
2010267246.tif 000006
【図５】
2010267246.tif 000007
【図６】
2010267246.tif 000008
【図７】
2010267246.tif 000009
【図８】
2010267246.tif 000010
【図９】
2010267246.tif 000011
【図１０】
2010267246.tif 000012