(57)【要約】  プラットフォームにセキュリティを提供するための鍵材料を、オンラインおよびオフライン両方で、遠隔のプラットフォームに対してセキュアにプロビジョンする。鍵材料のセキュアなプロビジョンは、プラットフォームにインストールされるファームウェアの改定に基づいている。【選択図】図１
2013545388.tif 000002
【特許請求の範囲】
【請求項１】
システムのハードウェアデバイスが、暗号化されているセキュリティ鍵を受信する手段であって、前記ハードウェアデバイスの保護されているメモリに固有デバイス鍵を書き込むことにより前記ハードウェアデバイスの鍵生成サーバが埋め込んだ前記固有デバイス鍵から導出したベースプロビジョン鍵を用いて暗号化され、前記固有デバイス鍵から導出したプロビジョン識別子に関連付けられているプロビジョンサーバが維持するデータベースに格納されている、暗号化されているセキュリティ鍵を受信する手段と、
前記ハードウェアデバイスが、ソフトウェアからアクセス不可能な前記保護されているメモリに格納されている前記固有デバイス鍵から前記ベースプロビジョン鍵を導出する段階と、
前記ハードウェアデバイスが、前記導出されたベースプロビジョン鍵を利用して、前記暗号化されているセキュリティ鍵を復号する段階と
を備える方法。
【請求項２】
前記保護されているメモリは、書き込みが一度だけ許可されたメモリである、請求項１に記載の方法。
【請求項３】
前記鍵生成サーバは、信頼のおける環境で動作するオフラインサーバである、請求項１または２に記載の方法。
【請求項４】
前記固有デバイス鍵から導出される前記プロビジョン識別子と前記プロビジョン鍵とは、対称鍵である、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記固有デバイス鍵のコピーは、前記固有デバイス鍵が前記保護されているメモリに書き込まれた後は第１のサーバが利用できない、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記ハードウェアデバイスは、通信ネットワークを介して前記暗号化されているセキュリティ鍵を受信する、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記ハードウェアデバイスは、前記システムの記憶媒体から前記暗号化されているセキュリティ鍵を受信する、請求項１から５のいずれか一項に記載の方法。
【請求項８】
前記ハードウェアデバイスにインストールするために利用可能なファームウェアに関連付けられている最新のファームウェアバージョン番号に基づいて導出されたプロビジョン鍵を、前記ハードウェアデバイスが、前記ベースプロビジョン鍵から導出する段階をさらに備える、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記ハードウェアデバイスが、前記プロビジョン鍵により暗号化されたデバイス認証鍵を受信する段階と、
前記ハードウェアデバイスが、前記最新のファームウェアバージョン番号または前のファームウェアバージョン番号に関連付けられている前記プロビジョン鍵に関連付けられている前記暗号化されているデバイス認証鍵を復号する段階と
をさらに備える、請求項８に記載の方法。
【請求項１０】
装置であって、システム内のハードウェアデバイスを備え、
前記ハードウェアデバイスは、
前記ハードウェアデバイスの保護されているメモリに固有デバイス鍵を書き込むことにより前記ハードウェアデバイスの鍵生成サーバが埋め込んだ前記固有デバイス鍵から導出したベースプロビジョン鍵を用いて暗号化され、前記固有デバイス鍵から導出したプロビジョン識別子に関連付けられているプロビジョンサーバが維持するデータベースに格納されている、暗号化されているセキュリティ鍵を受信して、
ソフトウェアからアクセス不可能な前記保護されているメモリに格納されている前記固有デバイス鍵から前記ベースプロビジョン鍵を導出して、
前記導出されたベースプロビジョン鍵を利用して、前記暗号化されているセキュリティ鍵を復号する、装置。
【請求項１１】
前記保護されているメモリは、書き込みが一度だけ許可されたメモリである、請求項１０に記載の装置。
【請求項１２】
前記鍵生成サーバは、信頼のおける環境で動作するオフラインサーバである、請求項１０または１１に記載の装置。
【請求項１３】
前記固有デバイス鍵から導出される前記プロビジョン識別子と前記プロビジョン鍵とは、対称鍵である、請求項１０から１２のいずれか一項に記載の装置。
【請求項１４】
前記固有デバイス鍵が前記保護されているメモリに書き込まれた後は、第１のサーバが前記固有デバイス鍵のコピーを利用できない、請求項１０から１３のいずれか一項に記載の装置。
【請求項１５】
前記ハードウェアデバイスは、通信ネットワークを介して前記暗号化されているセキュリティ鍵を受信する、請求項１０から１４のいずれか一項に記載の装置。
【請求項１６】
前記ハードウェアデバイスは、前記システムの記憶媒体から前記暗号化されているセキュリティ鍵を受信する、請求項１０から１４のいずれか一項に記載の装置。
【請求項１７】
前記ハードウェアデバイスは、前記ハードウェアデバイスにインストールするために利用可能なファームウェアに関連付けられている最新のファームウェアバージョン番号に基づいて導出されたプロビジョン鍵を、前記ベースプロビジョン鍵から導出する、請求項１０から１６のいずれか一項に記載の装置。
【請求項１８】
前記ハードウェアデバイスは、
前記プロビジョン鍵により暗号化されたデバイス認証鍵を受信して、
前記最新のファームウェアバージョン番号または前のファームウェアバージョン番号に関連付けられている前記プロビジョン鍵に関連付けられている前記暗号化されているデバイス認証鍵を復号する、請求項１７に記載の装置。
【請求項１９】
プロセッサに実行されるとコンピュータに、
前記ハードウェアデバイスの保護されているメモリに固有デバイス鍵を書き込むことにより前記ハードウェアデバイスの鍵生成サーバが埋め込んだ前記固有デバイス鍵から導出したベースプロビジョン鍵を用いて暗号化され、前記固有デバイス鍵から導出したプロビジョン識別子に関連付けられているプロビジョンサーバが維持するデータベースに格納されている、暗号化されているセキュリティ鍵を、システムのハードウェアデバイスが受信する手順と、
前記ハードウェアデバイスが、ソフトウェアからアクセス不可能な前記保護されているメモリに格納されている前記固有デバイス鍵から前記ベースプロビジョン鍵を導出する手順と、
前記ハードウェアデバイスが、前記導出されたベースプロビジョン鍵を利用して、前記暗号化されているセキュリティ鍵を復号する手順と
を実行させるためのプログラム。
【請求項２０】
さらに、前記ハードウェアデバイスが、前記ハードウェアデバイスにインストールするために利用可能なファームウェアに関連付けられている最新のファームウェアバージョン番号に基づいて導出されたプロビジョン鍵を、前記ベースプロビジョン鍵から導出する手順を実行させるための、請求項１９に記載のプログラム。
【請求項２１】
システムであって、
ディスクドライブと、
ハードウェアデバイスと
を備え、
前記ハードウェアデバイスは、
前記ハードウェアデバイスの保護されているメモリに固有デバイス鍵を書き込むことにより前記ハードウェアデバイスの鍵生成サーバが埋め込んだ前記固有デバイス鍵から導出したベースプロビジョン鍵を用いて暗号化され、前記固有デバイス鍵から導出したプロビジョン識別子に関連付けられているプロビジョンサーバが維持するデータベースに格納されている、暗号化されているセキュリティ鍵を受信して、
ソフトウェアからアクセス不可能な前記保護されているメモリに格納されている前記固有デバイス鍵から前記ベースプロビジョン鍵を導出して、
前記導出されたベースプロビジョン鍵を利用して、前記暗号化されているセキュリティ鍵を復号する、システム。
【請求項２２】
前記暗号化されているセキュリティ鍵は、前記ディスクドライブを介してアクセス可能な記憶媒体に格納されており、前記ハードウェアデバイスは、前記暗号化されているセキュリティ鍵を前記ディスクドライブから受信する、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して情報処理分野に関し、特にコンピューティングシステムおよびマイクロプロセッサのセキュリティ分野に関する。
【背景技術】
【０００２】
暗号アルゴリズムおよびこれを利用するプロトコルは、乱数に基づく鍵を必要とする。たとえば鍵は、ブロックまたはストリーム暗号に利用されるＡＥＳ（Advanced Encryption Standard）およびＤＥＳ（Data Encryption Standard）等の対称鍵アルゴリズムを利用する秘密／共有鍵、および、ＲＳＡ（Rivest, Shamir, Adleman）およびＤＳＡ（Digital Signal Algorithm）等の非対称鍵アルゴリズムが利用する公開鍵／秘密鍵等であってよい。
【０００３】
トラステッドプラットフォームモジュール（ＴＰＭ）は、トラステッドコンピューティングの特徴を利用可能とするためのトラステッドプラットフォームの仕様に合致した集積回路（デバイス）である。ＴＭＰの製造業者は、各ＴＭＰに非対称鍵をプロビジョンする。この非対称鍵は、暗号化のため、および、他の鍵を取得するために利用することができる。
【０００４】
請求されている主題の実施形態の特徴は、以下の詳細な記載を、図面を参照しながら読むことで明らかになる。図面では同様の参照番号が同様の部材を表している。
【図面の簡単な説明】
【０００５】
【図１】製造環境で初期鍵のプロビジョンを実行するシステムを示すブロック図である。
【図２】ハードウェアデバイスへのデバイス固有鍵１１０の基本的な初期製造プロビジョン方法を示すフローグラフである。
【図３】ハードウェアデバイスに対する、共有鍵保護を伴うデバイス固有鍵１１０の基本的な初期製造プロビジョン方法を示すフローグラフである。
【図４】ハードウェアデバイスへのデバイス固有鍵１１０のセキュアな初期製造プロビジョン方法を示すフローグラフである。
【図５】鍵生成サーバ、プロビジョンサーバ、および通信ネットワークに連結されたデバイスを含むプラットフォームを含むシステムを示す。
【図６】デバイスがプロビジョンサーバから鍵を取得するオンラインによる方法の一実施形態を示す。
【図７】デバイスに実装されている、暗号化鍵を復号する方法を示す。
【図８】トラステッドプラットフォームのトラステッドコンピューティングベース（ＴＣＢ）の一実施形態を示すブロック図である。
【図９】図８のＴＣＢのセキュリティの脆弱性から復旧するための方法を示すフローグラフである。
【図１０】前の格納鍵を計算するために鍵生成を実行するためのハッシュチェイン方法の一実施形態を示すフローグラフである。
【図１１】格納鍵を導出するために回復不可能なＴＣＢが実行する方法の一実施形態を示すフローグラフである。
【図１２】２レイヤのＴＣＢのブロック図を示す。
【図１３】復旧可能なレイヤを保護するためにハッシュチェインを利用するハイブリッド方法を示すブロック図である。
【図１４】プラットフォームとプロビジョンサーバとの間にプロトコルをプロビジョンするデバイス認証鍵（ＤＡＫ）の一実施形態を示す。
【図１５】プラットフォームとプライバシーをサポートするためのプロビジョンサーバとの間に図１４のプロトコルを再度プロビジョンするための一実施形態を示す。
【図１６】格納鍵で暗号化したプラットフォームのＤＡＫを格納するプロビジョンサーバとプラットフォームとの間のＤＡＫバックアップ取得プロトコルの一実施形態を示す。
【図１７】不揮発性書き換え可能メモリにＰ−ＳＶＮを格納する方法の一実施形態のフローグラフを示す。
【発明を実施するための形態】
【０００６】
以下の詳細な記載は、請求されている主題の例である実施形態を参照しながら行われるが、当業者であれば数多くの代替例、変更例、および変形例を想到する。したがって請求されている主題は広義にとらえられることを意図しており、その定義は、添付請求項のみによって行われることが意図されている。
【０００７】
プラットフォームにセキュリティを提供するために利用される鍵のプロビジョン方法の１つに、ハードウェアデバイスの製造業者が、ハードウェアデバイスの製造中に、プログラム可能な書き込みが一度だけ可能なメモリに、鍵（鍵材料）を永久的格納する、というものがある。鍵は、プラットフォームにハードウェアデバイスを設置する前にハードウェアデバイスに格納されてよい。たとえば書き込みが一度だけ可能なメモリは、ファームウェアもソフトウェアもアクセスできないハードウェアデバイスのセキュアな領域の複数のヒューズであってよい。
【０００８】
しかし、すべての鍵材料が、書き込みが一度だけ可能なメモリに格納されるので、デバイス製造業者は、製造プロセス中にハードウェアデバイスに鍵材料をプロビジョンすることしかできない。加えて、ハードウェアデバイスにセキュアにプロビジョンされる鍵の数が多いと、書き込みが一度だけ可能なメモリではこれに対応して大きな領域が必要とされ、プラットフォームへの追加費用が高くなる。
【０００９】
別の鍵材料プロビジョン方法として、デバイス製造業者が、固有の非対称デバイス認証鍵（ＤＡＫ）を製造プロセス中に、書き込みが一度だけ可能なメモリに格納する、というものがある。後でプロビジョンサーバは、インタラクティブ型のプロビジョンプロトコルを用いてプラットフォームに設置されたハードウェアデバイスに遠隔操作によって鍵（送信鍵）をプロビジョンすることができる。ハードウェアデバイスから受けた、格納ＤＡＫを検証した後で、プロビジョンサーバが鍵材料をハードウェアデバイスに送信する。この方法の欠点には、ハードウェアデバイスに固有のＤＡＫを格納するときに利用される、書き込みが一度だけ可能なメモリの領域のサイズ、書き込みが一度だけ可能なメモリに鍵を格納する製造業者のテストマシンによってセキュリティが脅かされる可能性、オフラインでのプロビジョンがサポートされないこと（つまり、ハードウェアデバイスが設置されているプラットフォームが利用できるインターネット接続が存在しない）、および、ハードウェアデバイスで、より大きなトラステッドコンピューティングベース（ＴＣＢ）のサイズのためにより大きなメモリを必要とする、非対称鍵の演算が利用される点、が含まれる。
【００１０】
本発明の一実施形態では、鍵プロビジョン方法は、対称鍵を利用して、オンラインおよびオフラインのプロビジョン両方をサポートする。対称鍵は、メッセージの受信者および送信者両方ともにより、メッセージの暗号化および復号化の際に利用され、共有される。加えて、ハードウェアデバイスの製造中には、攻撃に対してセキュリティを提供する初期鍵プロビジョン方法を実行して、デバイス固有鍵１１０をハードウェアデバイスに格納する。鍵プロビジョンサーバは、製造テストマシンによりテストされる各ハードウェアデバイスの固有プロビジョン鍵を格納するプロビジョンデータベースを含む。プロビジョン鍵を利用することで、オフラインおよびオンラインのプロビジョンがサポートされる。
【００１１】
図１は、製造環境で初期鍵のプロビジョンを実行するシステム１００を示すブロック図である。システム１００は、ハードウェアデバイス１０２、製造テスタマシン１０４、および、鍵生成サーバ１０６を含む。製造テストマシン１０４および鍵生成サーバ１０６は、セキュアなチャネル１０８経由で通信する。セキュアなチャネルは、２つの実体の間の、認証されて暗号化されている通信チャネルのことである。たとえば、プラットフォームは、トランスポートレイヤセキュリティ（ＴＬＳ）を利用して、サーバとの間にセキュアなチャネルをセットアップして、オンラインバンキングを実行することが可能である。
【００１２】
製造中に、デバイス固有鍵１１０は、鍵生成サーバ１０６によりハードウェアデバイス１０２に割り当てられて、ハードウェアデバイス１０２の保護されているメモリ１０９に格納される。このデバイス固有鍵１１０は、ハードウェアにより保護され、後の時点でも、ハードウェア１０２が後でインストールされるプラットフォームで実行されるソフトウェアには公開されない。ハードウェアデバイス１０２がインストールされるプラットフォームは、たとえばモバイルフォンまたはコンピュータであってよい任意のコンピュータデバイスであってよい。
【００１３】
一実施形態では、ハードウェアデバイス１０２はプロセッサであってよい。プロセッサとしては、シングルコアのＩｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）  ＩＶ（登録商標）プロセッサ、シングルコアのＩｎｔｅｌ（登録商標）Ｃｅｌｅｒｏｎプロセッサ、Ｉｎｔｅｌ（登録商標）ＸＳｃａｌｅプロセッサ、または、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）  Ｄ、Ｉｎｔｅｌ（登録商標）Ｘｅｏｎ（登録商標）プロセッサ、または、Ｉｎｔｅｌ（登録商標）Ｃｏｒｅ（登録商標）Ｄｕｏプロセッサ等のマルチコアのプロセッサ、または、任意の他の種類のプロセッサであってよい。別の実施形態では、ハードウェアデバイス１０２が、入出力デバイスとの間の通信を制御するために、プラットフォーム上のプロセッサに連結される集積回路であってもよい。集積回路は、互いに協働するよう設計されている、チップセットにおける複数の集積回路の１つであってよい。例えばチップセットの集積回路は、プロセッサを、メモリ、グラフィックコントローラ等の高速デバイスにリンクすることができ、チップセットの別の集積回路が、プロセッサを、周辺コントローラインターフェース（ＰＣＩ）、ユニバーサルシリアルバス（ＵＳＢ）またはイーサネット（登録商標）等の通信プロトコルを介してアクセスされる低速の周辺機器にリンクさせることができてよい。
【００１４】
鍵生成サーバ１０６は、ハードウェアデバイス１０２に割り当てられるハードウェアデバイス固有鍵１１０、および、たとえばＡＥＳ等の暗号復号アルゴリズムで利用可能な鍵等のプラットフォームが利用する他の鍵を含む鍵材料を生成するオフラインのサーバである。オフラインのサーバは、インターネットを介して外部の実体と直接相互作用しない、鍵生成のためのセキュアな機器である。鍵生成サーバ１０６は、セキュアで、保護された環境で動作する。ハードウェアデバイス１０２にデバイス固有鍵１１０を最初にプロビジョンする際に利用可能な方法は数多くある。利用される方法は、製造環境のセキュリティレベルに依存している。これら方法のうち３つを、図２から図４を参照して後述する。
【００１５】
図２は、ハードウェアデバイスへのデバイス固有鍵１１０の基本的な初期製造プロビジョン方法を示すフローグラフである。
【００１６】
ブロック２００で、鍵生成サーバ１０６は、製造テストマシン１０４に連結されているハードウェアデバイス１０２に対してランダムにデバイス固有鍵を選択する。処理はブロック２０２に続く。
【００１７】
ブロック２０２で、鍵生成サーバ１０６は、テスト中のハードウェアデバイス１０２のデバイス固有鍵１１０を、セキュアなチャネル１０８を利用して製造テストマシン１０４に送信する。デバイス固有鍵１１０を受け取ると、製造テストマシン１０４は、デバイス固有鍵１１０を、保護されたメモリ１０９に格納するが、この、保護されたメモリ１０９は、ハードウェアデバイス１０２内のフラッシュメモリデバイス等の、書き込みが一度だけ可能なメモリまたは書き換え可能なメモリ等であってよい。一実施形態では、書き込みが一度だけ可能なメモリは、複数のヒューズを含み、固有鍵は、ヒューズを飛ばして、デバイス１０２にデバイス固有鍵１１０を永久格納することによって格納される。処理はブロック２０４に続く。
【００１８】
ブロック２０４で、鍵生成サーバ１０６は、様々な一方向関数を利用して、デバイス固有鍵からハードウェアデバイス１０２のためのプロビジョン鍵８０４およびプロビジョン識別子を導出する。プロビジョン鍵８０４およびプロビジョン識別子に関しては後述する。一方向関数を利用すると、プロビジョン鍵８０４およびプロビジョン識別子は、デバイス固有鍵１１０から導出されるが、プロビジョン鍵８０４またはプロビジョン識別子からは、デバイス固有鍵１１０は導出できない。一実施形態では、一方向関数は、鍵導出に利用される擬似乱数関数（ＰＲＦ）（たとえばハッシュベースのメッセージ認証符号（ＨＭＡＣ）およびＡＥＳ−ＣＭＡＣ（Advanced Encryption Standard-Cipher-Based Message Authentication Code）であってよい）である。プロビジョン識別子およびプロビジョン鍵８０４は、ハードウェアデバイス１０２に固有である。処理はブロック２０６に続く。
【００１９】
ブロック２０６で、鍵生成サーバ１０６は、デバイス固有鍵１１０から導出されるプロビジョン鍵およびプロビジョン識別子をプロビジョンデータベース１１２に格納して、後で、他のセキュリティ鍵をハードウェアデバイス１０２にオンザフィールドでプロビジョンするのに備えさせる。処理はブロック２０８に続く。
【００２０】
ブロック２０８で、鍵生成サーバ１０６は、プロビジョンデータベース１１２に格納されているプロビジョン鍵およびプロビジョン識別子（ＩＤ）を生成するために利用した、鍵生成サーバ１０６に格納されているデバイス固有鍵１１０のコピーを削除する。
【００２１】
図３は、ハードウェアデバイスへの、共有鍵保護が行われたデバイス固有鍵の初期製造プロビジョン方法を示すフローグラフである。セキュリティを向上させるために、鍵生成サーバ１０６は、各ハードウェアデバイス１０２埋め込まれた共有鍵でデバイス固有鍵を暗号化して、該ハードウェアデバイス１０２のみがデバイス固有鍵を復号できるようにしている。製造テストマシン１０４は、共有鍵を格納せず、共有鍵にアクセスもできない。したがって製造テストマシン１０４は、鍵生成サーバ１０６が生成したデバイス固有鍵１１０を復号することができない。
【００２２】
ブロック３００で、テスト対象のハードウェアデバイス１０２の論理には、対称共有鍵（ＳＫ）が埋め込まれている。共有鍵は、複数のデバイスについて同じものである。共有鍵は、ハードウェアデバイス１０２および鍵生成サーバ１０６には知らされるが、製造テストマシン１０４には知らされない。一実施形態では、鍵生成サーバが共有鍵を生成する。鍵生成サーバ１０６は、各ハードウェアデバイス１０２についてランダムにデバイス固有鍵を選択する。鍵生成サーバ１０６は、鍵生成サーバ１０６が知らされた共有鍵を利用して、デバイス固有鍵を暗号化する。共有鍵には二つの目的がある。つまり、（１）悪意のある製造テスタに対する保護を追加すること、および、（２）デバイス１０２の製造後のデバイス固有鍵の保護を強化すること、である。処理はブロック３０２に続く。
【００２３】
ブロック３０２で、鍵生成サーバ１０６は、セキュアなチャネル１０８を利用して製造テストマシン１０４に、暗号化されているデバイス固有鍵を送信する。製造テストマシン１０４は、この暗号化されているデバイス固有鍵を、ハードウェアデバイス１０２の、保護されているメモリ１０９（たとえば書き込みが一度だけ可能なメモリ（ヒューズ））に格納する。ハードウェアデバイス１０２は、デバイス固有鍵の暗号化に鍵生成サーバ１０６が利用する共有鍵を格納しているので、ハードウェアデバイス１０２は、格納した暗号化されているデバイス固有鍵にアクセスして、共有鍵を用いて復号を行い、デバイス固有鍵を得ることができる。処理はブロック３０４に続く。
【００２４】
ブロック３０４で、鍵生成サーバ１０６は、図２の実施形態との関連で上述したように、デバイス固有鍵からプロビジョン識別子とプロビジョン鍵とを導出する。処理はブロック３０６に続く。
【００２５】
ブロック３０６で、鍵生成サーバ１０６は、自らが生成したデバイス固有鍵１１０を削除して、デバイス固有鍵１１０から導出したプロビジョン鍵およびプロビジョン識別子を、プロビジョンデータベース１１２に格納する。
【００２６】
図４は、ハードウェアデバイスへのデバイス固有鍵のセキュアな初期製造プロビジョン方法を示すフローグラフである。図４との関連で説明される方法は、デバイス固有鍵がデバイスで生成され、ほかのハードウェアデバイス１０２へ通信チャネル経由で送信されない点で、図２および図３との関連で説明する方法よりもセキュアである。ハードウェアデバイス１０２は、論理に埋め込まれた対称共有鍵（ＧＫ）を有している。ＧＫは、ハードウェアデバイス１０２および鍵生成サーバ１０６は知らされるが、製造テストマシン１０４には知らされない。図３との関連で説明した実施形態で説明したＧＫに加えて、本実施形態では、ハードウェアデバイス１０２には、非対称鍵対（つまり、公開暗号鍵（ＰＥＫ）および秘密復号鍵（ＰＤＫ））が埋め込まれている。この非対称鍵対は、鍵生成サーバ１０６にも格納される。
【００２７】
ハードウェアデバイス１０２は、本発明の範囲外である公知の方法を利用して、固有デバイス鍵１１０を生成する。たとえば、固有デバイス鍵１１０は、ランダムゲート技術（a random gates technique）またはＰＵＦ（physically unclonable function）をファジー・エクストラクター（fuzzy extractor）により生成することができる。ハードウェアデバイス１０２は、デバイス固有鍵１１０からプロビジョン識別子（ＩＤ）およびプロビジョン鍵を導出して、ＰＥＫを利用して２つの鍵を暗号化して、共有鍵を利用して２つの鍵のメッセージ認証コード（ＭＡＣ）を計算する。利用される関数の例は以下の通りとなる。
C1 = RSA-Enc(PEK, プロビジョン ID ||プロビジョン鍵), 
C2 = MAC(GK, C1),
暗号文= C1 || C2.
【００２８】
RSA-Enc(K, M)は、ＲＳＡ（Rivest, Shamir and Adleman）公開暗号鍵Ｋを利用してメッセージＭのＲＳＡ暗号を行うことを示している。一実施形態では、メッセージ認証コード（ＭＡＣ）関数がＨＭＡＣである。別の実施形態では、ＭＡＣ関数がＡＥＳ−ＣＭＡＣ．５である。ハードウェアデバイス１０２は、暗号文（暗号化された鍵）を製造テストマシン１０４に出力する。
【００２９】
ブロック４００で、鍵生成サーバ１０６は、製造テストマシン１０４からセキュアなチャネル１０８経由で暗号文を受信する。処理はブロック４０２に続く。
【００３０】
ブロック４０２で、鍵生成サーバ１０６は、各暗号文についてＧＫを利用してＭＡＣを検証して、ＰＤＫを利用して復号を行う。鍵生成サーバ１０６は、セキュアなチャネル１０８を介してセキュアにハードウェアデバイス１０２のプロビジョン鍵およびプロビジョンＩＤを取得する。一実施形態では、鍵生成サーバ１０６が、受信した暗号化に対して以下の関数を実行して、ハードウェアデバイス１０２に格納されているデバイス固有鍵１１０から導出される、プロビジョン識別子およびプロビジョン鍵を取得する。  Ｃ２＝ＭＡＣ（ＧＫ，Ｃ１）を、ＧＫを用いて検証する
PDKを利用して、プロビジョン ID || プロビジョン鍵 = RSA-Dec(PDK, C1)とする
処理は、ブロック４０４に続く。
【００３１】
ブロック４０４で、鍵生成サーバ１０６が、プロビジョン識別子とプロビジョン鍵とをプロビジョンデータベース１１２に格納する。
【００３２】
ハードウェアデバイス１０２は、製造された後でＯＥＭ（Original Equipment Manufacturers）に送られて、プラットフォームに設置されてよい。通常、プラットフォームがエンドユーザに配信される。ハードウェアデバイスの製造業者は、ハードウェアデバイス１０２を含むプラットフォームのエンドユーザに対して、鍵を送信する（プロビジョンする）必要があると思われる。たとえば、ハードウェアデバイスの製造業者は、たとえばデバイス認証対称鍵、トラステッドプラットフォームモジュール（ＴＰＭ）保証鍵、ＨＤＣＰ（High-bandwidth Digital Content Protection）鍵、またはＡＡＣＳ（Advanced Access Content System）デバイス鍵等のハードウェアデバイス１０２ごとに固有の鍵を含む鍵、または、共通鍵を、ハードウェアデバイス１０２に送信する（プロビジョンする）。
【００３３】
ハードウェアデバイス１０２に鍵を送信する前に、ハードウェアデバイス１０２に、製造した鍵のみを確実にプロビジョンするために、ハードウェアデバイスの製造業者は、鍵を、プロビジョンデータベース１１２に格納されている、ハードウェアデバイス１０２に関連付けられたプロビジョン鍵を利用して暗号化する。デバイス製造業者は、このプロビジョン方法を複数回行うことで、複数のハードウェアデバイス１０２に、製造した鍵をそれぞれプロビジョンすることができる。
【００３４】
鍵生成サーバ１０６のプロビジョンデータベース１１２は、製造テストマシン１０４によりテストされた各ハードウェアデバイス１０２のプロビジョン識別子およびプロビジョン鍵を格納する。あるプロビジョン識別子およびプロビジョン鍵に関連づけられたハードウェアデバイス１０２に対して鍵をプロビジョンするために、鍵生成サーバ１０６は、当該ハードウェアデバイス１０２にプロビジョンする鍵材料を準備する。鍵材料は、「鍵ブロブ」と称される場合もあり、ＴＰＭ鍵等の１つの鍵であってもよいし、ＴＰＭ鍵とＨＤＣＰ鍵といったように、複数の鍵であってもよい。ハードウェアデバイス１０２ごとに異なる鍵材料が割り当てられてよい。
【００３５】
鍵生成サーバ１０６は、プロビジョン鍵を利用して鍵材料を暗号化することができる。暗号は、ＡＥＳ−ＧＣＭ（Advanced Encryption Standard-Galois/Counter Mode）モードの暗号方式またはＡＥＳ−ＣＢＣ（Advanced Encryption Standard- Cipher Block Chaining）モードの暗号方式等の任意の暗号アルゴリズムが、擬似乱数関数（ＰＲＦ）と組み合わせられた、任意の鍵ラップ（暗号）アルゴリズムにより実行することができる。ＡＥＳ−ＧＣＭおよびＡＥＳ−ＣＢＣは、ＮＩＳＴ規格のＦＩＰＳ−１９７で定義されている。鍵生成サーバ１０６は、プロビジョンデータベース１１２を準備して、プロビジョンＩＤおよび対応する暗号化鍵をすべて格納する。
【００３６】
図５は、鍵生成サーバ１０６、プロビジョンサーバ５００、および、ハードウェアデバイス１０２を含むプラットフォーム５０２が、通信ネットワーク５０４に連結されたシステムを示す。一実施形態では、システムはさらに、取り外し可能記憶媒体（ＣＤまたはＤＶＤ）を有するＣＤまたはＤＶＤ等のディスクドライブであってよい記憶装置５０６を含む。
【００３７】
鍵生成サーバ１０６は、プロビジョンデータベース１１２の内容をプロビジョンサーバ５００に送り、プロビジョンサーバ５００が、通信ネットワーク５０４を介して、ハードウェアデバイス１０２が設置されているプラットフォーム５０２に鍵のオンラインでのプロビジョンを行うことができるようにする。プロビジョンデータベース１１２は、フラッシュメモリまたはＣＤまたはＤＶＤ等の不揮発性メモリデバイス等の取り外し可能な記憶媒体に格納して、ハードウェアデバイス１０２に対して鍵をオフラインでプロビジョンするようにしてもよい。
【００３８】
ハードウェアデバイス１０２がプラットフォームに設置されており（たとえばホストシステムに設置されており）、鍵が無効になっていると気づいた場合には、デバイスは、プロビジョンサーバ５００にコンタクトするための要求を発行する。一実施形態では、要求は、ハードウェアデバイス１０２から、プラットフォーム５０２のホストネットワークスタックを介して、セキュアな通信チャネルを通ってプロビジョンサーバ５００へと送信される。セキュアなチャネルは、人が介在する攻撃に対してロバストなので、ホストネットワークスタックが壊れている場合であっても、ファームウェアのみがプロビジョンＩＤおよびプロビジョン鍵にアクセスすることができることから、鍵プロビジョンのセキュリティは影響されない。
【００３９】
図６は、ハードウェアデバイス１０２がプロビジョンサーバから鍵を取得するオンラインによる方法の一実施形態を示す。
【００４０】
ブロック６００で、プラットフォームのハードウェアデバイス１０２は、ハードウェアデバイスの保護されているメモリ１０９（ヒューズまたはランダムゲート等）に格納されているデバイス固有鍵を取得する。ハードウェアデバイス固有鍵１１０が暗号化されている場合には、ハードウェアデバイス１０２は、共有鍵（ＧＫ）を利用して復号化を行う。ハードウェアデバイス１０２は、上述したように鍵生成サーバ１０６と協働して、擬似乱数関数を利用することで、デバイス固有鍵からプロビジョンＩＤを導出する。処理はブロック６０２に続く。
【００４１】
ブロック６０２で、ハードウェアデバイス１０２は、セキュアなチャネルをセットアップするために、プロビジョンサーバ５００との間での鍵交換プロトコルを開始する。一実施形態では、鍵交換プロトコルは、ＳＳＬ（Secure Sockets Layer）／ＴＬＳ（Transport Layer Security）セッションを利用して、プロビジョンサーバが認証されたものであるかを検証する。通信ネットワーク５０４経由でプロビジョンＩＤを明らかにすることに関してプライバシーの心配がない一実施形態では、セキュリティチャネルが不要であり、利用しない。処理はブロック６０４に続く。
【００４２】
ブロック６０４では、ハードウェアデバイス１０２がプロビジョンＩＤをプロビジョンサーバ５００に通信ネットワーク（たとえばインターネット）を介してセキュアなチャネルで送る。処理はブロック６０６に続く。
【００４３】
ブロック６０６で、プロビジョンサーバ５００は、プロビジョンデータベース１１２からプロビジョンＩＤを受信して、プロビジョンデータベースに格納されているプロビジョンＩＤに関連付けられた暗号化された鍵を取得する。ハードウェアデバイス１０２は、セキュアなチャネルを介してプロビジョンサーバ５００から暗号化された鍵を受信する。
【００４４】
ハードウェアデバイス１０２が通信ネットワークにアクセスを有さない実施形態も可能であり、この場合には、ハードウェアデバイス１０２にセキュリティ機能を提供するために、鍵のプロビジョンが必要となる。取り外し可能な記憶媒体のプロビジョンデータベース１１２をハードウェアデバイス１０２のエンドユーザに提供することで、鍵を、ハードウェアデバイス１０２にオフラインでプロビジョンすることができる。エンドユーザは、取り外し可能な記憶媒体に含まれた形でプロビジョンデータベース全体を受け取るが、このプロビジョンデータベースのなかで、固有デバイス鍵から導出ししたハードウェアデバイスのプロビジョン鍵が暗号化した鍵のみを利用することができる。
【００４５】
ハードウェアデバイス１０２は、オフラインのプロビジョンでも、オンラインプロビジョンで説明した方法を利用してプロビジョンＩＤを取得する。しかし、プロビジョンＩＤを通信ネットワークで送信する代わりに、ハードウェアデバイス１０２は、プロビジョンＩＤに関連付けられている暗号化された鍵を求めて、ローカルのプロビジョンデータベースを検索することもできる。
【００４６】
図７は、ハードウェアデバイス１０２に実装されている、暗号化鍵を復号する方法を示す。図７に示す方法は、オンラインまたはオフラインプロビジョンを利用してプロビジョンされた暗号化鍵に関するものである。
【００４７】
ブロック７００で、ハードウェアデバイス１０２は、ハードウェアデバイス１０２に格納されている、自身のデバイス固有鍵１１０を取得する。処理はブロック７０２に続く。
【００４８】
ブロック７０２で、ハードウェアデバイス１０２は、デバイス固有鍵１１０から、一方向擬似乱数関数（ＰＲＦ）を利用して、プロビジョン鍵および格納鍵を導出する。導出された格納鍵は、プラットフォームの任意の秘密を隠すために利用することができる。導出されたプロビジョン鍵をプロビジョンに利用する。処理はブロック７０４に続く。
【００４９】
ブロック７０４で、ハードウェアデバイス１０２は、導出されたプロビジョン鍵を利用して、図６を参照して説明したオンラインまたはオフライン鍵プロビジョン方法を利用して取得された暗号化された鍵を復号する。処理はブロック７０６に続く。
【００５０】
ブロック７０６で、ハードウェアデバイス１０２は、セキュアなストレージにローカルに、暗号化鍵を格納する。別の実施形態では、暗号化された鍵は、格納鍵と擬似乱数関数とを利用して再度暗号化することができ、この再度行われた暗号化の結果は、受信された暗号化された鍵の代わりに、ローカルにセキュアなストレージに格納することができる。
【００５１】
ハードウェアデバイス１０２は、鍵材料を暗号化するために利用されるプロビジョン鍵を導出することができるので、ハードウェアデバイス１０２の製造業者から鍵材料（暗号化された鍵）を遠隔で成功裏に取得することができる。攻撃者（たとえばマルウェア）は、擬似乱数関数とともに利用されてプロビジョン鍵が導出されるデバイス固有鍵１１０なしに、ハードウェアデバイス製造業者から鍵材料を取得することはできない。攻撃者は、取り外し可能な記憶媒体を介してプロビジョンデータベースにアクセスを有する場合はあるが、攻撃者は、有効なプロビジョン鍵なしには暗号化された鍵を復号することはできない。図３との関連で説明した共有鍵を利用する実施形態では、製造テストマシン１０４が壊れている場合には、攻撃者は、すべてのデバイス固有鍵が製造テストマシン１０４にはわからない共有鍵によって暗号化されているために、製造業者から暗号化された鍵を取得することができない。図４との関連で説明した実施形態では、製造テストマシン１０４が共有鍵について知っていたとしても、デバイス固有鍵またはプロビジョン鍵のことを知ることはできない。
【００５２】
小型の、書き込みが一度だけ可能なメモリは、ハードウェアデバイス１０２を悪意のある攻撃者から守るために利用される他の鍵を導出するために利用されるハードウェアデバイス１０２の信頼の連鎖（root of trust）として、デバイス固有鍵を格納する。一実施形態では、書き込みが一度だけ可能なメモリは、１２８ビットである。別の実施形態では書き込みが一度だけ可能なメモリが２５６ビットである。他の実施形態では、書き込みが一度だけ可能なメモリは、１２８ビットまたは１９２ビット、または、対称暗号で利用される鍵の長さに応じた別のサイズである。製造プロセス中にハードウェアデバイス１０２に鍵を格納する方法は、悪意のある製造テストマシン１０４に対してロバストであるが、これは、デバイスの製造が他の実体に委託される場合には重要である。少なくともプロセッサと１以上の集積回路を有するチップセットを含むプラットフォームでは、チップセットの各集積回路およびプロセッサは、デバイス固有鍵を有するセキュリティエンジンを含みうる。鍵のプロビジョンは簡単でスケーリング可能であり、対称鍵演算を利用するために、トラステッドコンピューティングベース（ＴＣＢ）のサイズを低減させることができる。
【００５３】
トラステッドプラットフォームは、通常、実行環境の設定を証明するため、または、プラットフォームの認証のために、デバイス認証鍵（ＤＡＫ）を有している。ＤＡＫは、図６から図７を参照して説明したオンラインまたはオフラインのプロビジョン方法を利用してトラステッドプラットフォームにプロビジョンすることができる。トラステッドプラットフォームはさらに、プラットフォーム鍵および秘密を暗号化するために利用される格納ルート鍵（ＳＲＫ）を有してよい。一実施形態では、ＤＡＫは、ＤＡＡ（Direct Anonymous Attestation）鍵または任意の他の種類のデジタル署名鍵であってよい。
【００５４】
ＤＡＡは、匿名の署名を提供するための暗号プロトコルである。ＤＡＡは、トラステッドプラットフォームモジュール（ＴＰＭ）専用に設計される。ＤＡＡは、トラステッドプラットフォームのユーザのプライバシーを守りつつ、トラステッドプラットフォームを遠隔に認証することができる。
【００５５】
例えばプラットフォームの悪意のある攻撃（たとえばソフトウェアウィルス）に対するプラットフォームのトラステッドコンピューティングベース（ＴＣＢ）の脆弱性が見つかると、プラットフォームに別のバージョンのファームウェアをインストールすることで脆弱性を是正することができる。しかしプラットフォームは、他の実体（外部の実体）によってファームウェアの脆弱性が是正されたことを暗号的に証明することはできない。
【００５６】
図８は、トラステッドプラットフォームのトラステッドコンピューティングベース（ＴＣＢ）８００の一実施形態を示すブロック図である。
【００５７】
トラステッドコンピューティングベース８００の鍵構造では、プラットフォーム５０２のハードウェアデバイス１０２に埋め込まれたデバイス固有鍵１１０が存在している。デバイス固有鍵１１０は、ハードウェアデバイス１０２の保護されたストレージ１０９に永久的に格納されている。このデバイス固有鍵１１０は、プラットフォームの他の鍵の「ルート鍵」であり、トラステッドコンピューティングベース８００のいくつかの他の鍵（たとえば、プロビジョンＩＤ８０２、プロビジョンベース鍵８２２、プロビジョン鍵８０４、および格納鍵８０６）が、このデバイス固有鍵１１０から導出される。
【００５８】
プロビジョンＩＤ８０２およびプロビジョン鍵８０４は、鍵プロビジョンサーバ５００から固有のＤＡＫ鍵をダウンロードするために利用される。格納鍵８０６は、ＤＡＫ鍵を含む、プラットフォーム５０２の鍵および秘密を暗号化するために利用される。
【００５９】
ＴＣＢ８０２内のアップグレードされたファームウェアを機能させるためには、これら導出鍵（たとえばプロビジョンＩＤ８０２、プロビジョン鍵８０４、および格納鍵８０６）にアクセスする必要がある。固有識別子は、ファームウェアの異なるバージョンを識別するように割り当てられている。一実施形態では、固有識別子は、不揮発性メモリの復旧不可能なファームウェアコード８１８に格納され、復旧不可能なＴＣＢ８１０が読み出すことができるセキュリティバージョン番号（ＳＶＮ）８０８である。他の実施形態では、ファームウェアの異なるバージョンを識別するための固有識別子を割り当てる代わりに、ファームウェアの画像の各バージョンに対して暗号関数を実行することにより、各ファームウェアのバージョンの固有識別子を導出することができる。
【００６０】
デバイス固有鍵１１０から導出した鍵（つまり、プロビジョンＩＤ８０２、プロビジョン鍵８０４、および格納鍵８０６）は、復旧不可能として指定され、「復旧不可能なＴＣＢ」と称される場合もあるＴＣＢ８１０の署名検証部分で計算される。プロビジョン鍵８０４および格納鍵８０６は、セキュリティバージョン番号８０８に基づいて導出され、ＴＣＢ８１０の署名検証部分から、ＴＣＢ８００の復旧可能部分に出力される。鍵がデバイス固有鍵１１０から導出された後で、ＴＣＢ８１０の署名検証部分は、デバイス固有鍵１１０へのアクセスを「ロック」して、ＴＣＢ８００の復旧可能な部分が、デバイス固有鍵１１０（たとえば未加工の「ルート鍵」）にアクセスしないようにする。プロビジョン鍵８０４および格納鍵８０６が、ＴＣＢの復旧可能な部分に格納されると、ＴＣＢ８００のＳＶＮ８０８に更新があった場合、プロビジョン鍵８０４および格納鍵８０６が更新される。たとえば鍵の導出は、デバイスの起動時に復旧可能なＴＣＢ８１０内で実行される。新たなファームウェアがプラットフォームにインストールされるたびに、デバイスの再起動が実行されて、これにより新たなプロビジョン鍵および格納鍵がデバイスの再起動中に計算されることになる。
【００６１】
図９は、ＴＣＢ８００のセキュリティの脆弱性から復旧するための方法を示すフローグラフである。セキュリティの脆弱性が復旧可能なＴＣＢで見つかると、ＴＣＢの復旧をトリガする。
【００６２】
ブロック９００で、ＴＣＢ８００にセキュリティの脆弱性が見つかると、プラットフォーム／ハードウェアの製造業者は、脆弱性を是正するソフトウェア修正を含むファームウェアの新たなバージョンを生成する。ファームウェアの新たなバージョンには、セキュリティバージョン番号８０８が割り当てられる。ファームウェアがマルウェアではなく、プラットフォーム／ハードウェア製造業者のものであることを検証するために、ファームウェアの新たなバージョンには、ハードウェアの製造業者のデジタル署名（暗号化）がなされている。復旧可能なＴＣＢ８１０は、製造業者の公開鍵（つまり、ハードウェアデバイス１０２に埋め込まれているファームウェア検証鍵）を利用して署名を検証することができ、新たなファームウェア画像が、ハードウェアの製造業者からのものであり、マルウェアではないことを確かめることができる。製造業者は、この新たなファームウェア画像を公知の方法（たとえばＯＥＭ（Original Equipment Manufacturer）またはソフトウェア製造業者のソフトウェアアップデート）を利用して各プラットフォームに配信することができる。処理はブロック９０２に続く。
【００６３】
ブロック９０２で、ファームウェアの新たなバージョンがプラットフォームにインストールされた後で、ＴＣＢ８００の署名検証部分が、プラットフォームのハードウェアデバイス１０２に埋め込まれているファームウェア検証鍵８２０を利用して、復旧可能なＴＣＢの新たなファームウェアの署名を検証する。ＴＣＢ８１０の署名検証部分は、ファームウェアに埋め込まれている新たなファームウェアのセキュリティバージョン番号（ＳＶＮ）８０８を取得して、ハードウェアデバイス１０２に格納されているデバイス固有鍵１１０を取得する。プロビジョンＩＤ８０２およびプロビジョンベース鍵８２２が、デバイス固有鍵１１０から導出される。プロビジョン鍵８０４は、プロビジョンベース鍵８２２およびＳＶＮ８０８から導出される。格納鍵８０６は、デバイス固有鍵１１０およびＳＶＮ８０８から導出される。これらの鍵の導出方法については後述する。導出されたプロビジョン鍵ＩＤ８０２、プロビジョン鍵８０４、および格納鍵８０６は、復旧可能なＴＣＢに送られる。処理はブロック８０４に続く。
【００６４】
ブロック９０６で、新たなＤＡＫを新たなバージョンのファームウェアについて生成する。ＴＣＢの復旧がトリガされると、ハードウェアの製造業者は、ＤＡＫを、ファームウェアの新たなバージョンを受信した各プラットフォーム５０２に再度プロビジョンして、セキュリティの脆弱性を是正する。鍵生成サーバ１０６は、ＤＡＫを生成して、それぞれのプラットフォームに通信ネットワーク５０４経由で送信する。前述したように、鍵生成サーバ１０６のプロビジョンデータベース１１２は、プロビジョンＩＤ８０２およびプロビジョンベース鍵８２２を、製造テストデバイスがテストした各ハードウェアデバイス１０２について格納する。プロビジョン鍵８０４は、格納されているプロビジョンベース鍵８２２から、最新のセキュリティバージョン番号８０８に基づいて導出される。一実施形態では、選択される鍵導出方法が、ブロック９０４で利用されるものと同じである。新たな固有のＤＡＫがハードウェアデバイス１０２について生成されて、プロビジョン鍵８０４を利用して暗号化される。任意の対称暗号アルゴリズム（たとえばＡＥＳ−ＧＣＭ）を利用することができる。鍵生成サーバ１０６は、各データベースエントリがプロビジョン鍵８０４と対応する暗号化されたＤＡＫとを有するようなＤＡＫプロビジョンデータベースを準備する。鍵生成サーバ１０６は、ＤＡＫプロビジョンデータベースを鍵プロビジョンサーバ５００に送信する。各プラットフォームは、鍵プロビジョンサーバ５００から新たなＤＡＫをダウンロードする。
【００６５】
復旧可能なＴＣＢは、プロビジョンＩＤ８０２とプロビジョン鍵８０４とを有し、プロビジョンプロトコルを利用してプロビジョンサーバ５００と通信して、プラットフォーム５０２から新たなＤＡＫ鍵を取得する。プラットフォーム５０２は、自身のプロビジョンＩＤ８０２を、プロビジョンサーバ５００の公開鍵を利用して暗号化して、暗号化されたプロビジョンＩＤをプロビジョンサーバ５００に送る。プロビジョンサーバ５００は、受信した暗号されているプロビジョンＩＤを、秘密鍵を利用して復号して、要求を発するプラットフォーム５０２の、暗号化されていないプロビジョンＩＤ８０２を得る。プロビジョンサーバ５００は、プラットフォーム５０２のハードウェアデバイス１０２のために新たなプロビジョン鍵により暗号化された、新たな暗号化ＤＡＫ鍵を格納するプロビジョンＩＤ８０２に対応するエントリを求めて、ＤＡＫプロビジョンデータベースを検索する。プロビジョンサーバ５００は、暗号化された新たなＤＡＫをプラットフォーム５０２に送る。プラットフォーム５０２は、新たなＤＡＫを、新たなプロビジョン鍵を利用して復号する。プラットフォーム５０２は、新たなＤＡＫを、自身の新たな格納鍵８０６を用いて再度暗号化して、暗号化された新たなＤＡＫをセキュアに格納する。暗号化された新たなＤＡＫは、プラットフォーム５０２の不揮発性メモリに格納される。不揮発性メモリはＢＩＯＳフラッシュメモリ、チップセットフラッシュメモリ、固体ドライブ、または、ハードディスクドライブであってよい。ＤＡＫが格納鍵により暗号化されているために、不揮発性メモリが攻撃者により万一アクセスされた場合であっても、攻撃者はＤＡＫを復号することができない。
【００６６】
プラットフォーム５０２が、セキュリティの脆弱性を是正するために新たなファームウェアをインストールしていない場合には、最新のＳＶＮに対応する新たなプロビジョン鍵８０４を導出することができない。したがって、プラットフォーム５０２は、たとえ暗号化された新たなＤＡＫをプロビジョンサーバ５００から受け取った場合であっても、新たなＤＡＫを復号することができない。処理はブロック９０８に続く。
【００６７】
ブロック９０８で、プラットフォーム５０２が、新たなＳＶＮを有する新たなファームウェアをインストールすると、さらに、新たなＳＶＮに対応する新たな格納鍵８０６も有することになる。ファームウェアがアップグレードされる前に、プラットフォーム５０２は、プラットフォーム鍵材料と秘密とを、古いＳＶＮに対応する古い格納鍵８０６を利用して暗号化しているはずである。したがってプラットフォーム５０２は、鍵の移行を行う（つまり、新たな格納鍵を利用して、すべてのプラットフォーム鍵材料を再度暗号化する）。古い格納鍵で暗号化した各データアイテムについて（鍵材料であっても秘密であっても）、プラットフォーム５０２は、古い格納鍵を利用して復号を行い、暗号化されていないデータの整合性を検証する。プラットフォーム５０２は、次に、新たな格納鍵を利用してデータを再度暗号化して、暗号化されたデータをプラットフォームの不揮発性メモリに格納する。上述したように、不揮発性メモリとは、ＴＣＢ以外のメモリのことである。
【００６８】
攻撃者がＴＣＢファームウェアの古いバージョンを破壊して、古いバージョンに関連付けられている格納鍵８０６を抽出してしまっている場合には、ファームウェアを更新した後であっても攻撃者がプラットフォームの秘密（新しいＤＡＫを含む）を復号できてしまうことから、新たな格納鍵を導出する。
【００６９】
現在の復旧可能なＴＣＴにソフトウェアの脆弱性が見つかった場合には、脆弱性を直す復旧可能なＴＣＢファームウェアを更新して、新たなＳＶＮ８０８を割り当てることによって、復旧することができる。ＴＣＢの古いバージョンは、新たなプロビジョン鍵８０４または新たな格納鍵８０６がそれぞれ新たなＳＶＮ８０８を利用して導出されることから、新たなＤＡＫ鍵をダウンロードしてラップする（暗号化する）ために利用されるこれら鍵にアクセスしたり導出したりすることはできない。加えて、プラットフォーム５０２の製造業者は、前のＴＣＢバージョンに関連付けられているＤＡＫを無効化することができる。新たなＤＡＫをダウンロードした後で、各プラットフォーム５０２は、この新たなＤＡＫを利用して、暗号的に、ＴＣＢ８００のどのバージョンが利用されているかを証明することができる。
【００７０】
復旧可能なＴＣＢが、脆弱性を是正する新たなファームウェアでアップグレードされていない場合には、復旧可能なＴＣＢは、最新のＳＶＮのプロビジョン鍵８０４を取得することができないので、ＤＡＫ鍵の現在のバージョンを取得することができない。さらに、復旧可能なＴＣＢが、鍵の移行目的で前の格納鍵８２４へのアクセスを得て、復旧可能なＴＣＢが新たなＳＶＮにアップグレードされている場合には、新たな復旧可能なＴＣＢは、前のバージョンのデータと鍵とを復号して、これらを新たな格納鍵を利用して暗号化することができる。
【００７１】
次に、鍵を導出して、前の格納鍵を計算する方法を説明する。一実施形態では、ＳＶＮに割り当てられている初期値が１であり、新たなファームウェアの更新が行われるたびに、ＳＶＮを１ずつ増分する。ＳＫ［ｉ］は、ＳＶＮｉに対応する格納鍵のことを示す。プロビジョンＩＤおよびプロビジョン鍵８０４は、以下のようにして計算される。
プロビジョンID = PRF(デバイス固有鍵, "プロビジョンID"), 
プロビジョンベース鍵= PRF(デバイス固有鍵, "プロビジョンベース鍵"),
プロビジョン鍵 = PRF(プロビジョンベース鍵, "プロビジョン鍵" || SVN).
【００７２】
一実施形態では、復旧可能なＴＣＢが、前の格納鍵８２４すべてを、ｉ＝１、…に対して、ＳＶＮについて、ＳＫ[ｉ]＝ＰＲＦ（デバイス固有鍵"格納鍵"｜｜ｉ）、として計算する。
【００７３】
次に、復旧不可能なＴＣＢが、すべての格納鍵を復旧可能なＴＣＢに送信する。
【００７４】
別の実施形態では、前の格納鍵を１つだけ計算する。格納鍵８０６が保護するデータのストレージを制御するプラットフォーム５０２は、現在の格納鍵と、前の格納鍵とに対するアクセスのみを必要とする。前の格納鍵とは、直前のファームウェア更新が行われる前にプラットフォーム５０２が利用していた格納鍵のことである。
【００７５】
ファームウェアは、前のＳＶＮを利用してすべての既存のデータを復号してから、現在のＳＶＮを利用してデータを暗号化することができ、こうすることで、この遷移中以外に古いＳＶＮ鍵が不要となる。復旧不可能なＴＣＢ８１０は、２つの格納鍵（つまり、現在のＳＶＮ用の第１の格納鍵８０６と、前のＳＶＮ用の第２の格納鍵８２４）を出力する。プラットフォームのユーザは一部のファームウェアのアップグレードを省くことがあるので、前のＳＶＮ（ｐＳＶＮ）は、ＳＶＮ−１ではない場合もある。復旧不可能なＴＣＢ８０２は以下を計算する。
SK[SVN] = PRF(デバイス固有鍵, "格納鍵" || SVN).
SK[pSVN] = PRF(デバイス固有鍵, "格納鍵" || pSVN).
ＳＶＮは現在の鍵であり、ｐＳＶＮは前のＳＶＮであり、ＰＲＦは擬似乱数関数である。
【００７６】
ＳＶＮ８０８は、ＴＣＢ８００のファームウェアから入手可能である。ｐＳＶＮは、格納されている不揮発性メモリから復旧可能なＴＣＢ８１０に提供することができる。たとえばチップセットＴＣＢ復旧を実装するときに、プラットフォームが、ＢＩＯＳ（Built In Operating System）のフラッシュ分割テーブル（ＦＰＴ）パーティションにｐＳＶＮを格納する。プロセッサＴＣＢ復旧を実装する実施形態では、前の格納鍵を、ｐＳＶＮを利用せずに導出することができる。
【００７７】
図１０は、前の格納鍵を計算するために鍵生成を実行するためのハッシュチェイン方法の一実施形態を示すフローグラフである。保護されるデータを格納する領域（部分）を制御しないプラットフォーム５０２において、前から保護されているデータに適切なアクセスを保証するためには、前の格納鍵８２４が複数必要となる。
【００７８】
ブロック１０００で、復旧可能なＴＣＢファームウェアから現在のＳＶＮ８０８が読み出される。処理はブロック１００２に続く。
【００７９】
ブロック１００２で、最大数の復旧可能な前のＳＶＮ（「ｎ」）がある。たとえば一実施形態では、復旧可能な前のＳＶＮの最大数は３２であってよい。現在のＳＶＮが、復旧可能な前のＳＶＮの最大数未満である場合には、処理はブロック１００４に続く。そうではない場合には、ＳＶＮがｎより大きいので、プロビジョン鍵および格納鍵が導出できず、ＴＣＢを復旧できない。
【００８０】
ブロック１００４で、最大数の復旧可能な格納鍵に対応する格納鍵の値をSK[n] = PRF(デバイス固有鍵, "格納鍵" || n)として計算する。処理はブロック１００６に続く。
【００８１】
ブロック１００６で、最大数−１までのすべての格納鍵をSK[i] = ハッシュ(SK[i+ 1 ]) （i = 1 , ... , n- 1）のようにして計算する。
【００８２】
ＳＫ[ｉ]が与えられると、すべての前のファームウェアバージョンの格納鍵は、ハッシュ関数を計算することで得られる。しかしＳＫ[ｉ]が所与であっても、格納鍵の将来のバージョンは、デバイス固有鍵１１０なしには導出できない。処理はブロック１００８に続く。ブロック１００８で、ＳＫ［ＳＶＮ］を出力する。
【００８３】
復旧不可能なＴＣＢ８１０は、格納鍵８０６を１つ出力するだけでよい。しかし、前の格納鍵の最大数が増加すると、格納鍵を導出する際の計算量が増加するが、前の格納鍵の最大数を小さくすると、復旧できる前の格納鍵の数も小さくなる。
【００８４】
また別の実施形態では、一部の格納鍵を直接デバイス固有鍵１１０から導出して、他の格納鍵は次のバージョンのハッシュから計算する。格納鍵の値は以下のように定義されている。
SK[i] = PRF(デバイス固有鍵, "格納鍵" | | i) （iがnの乗数である場合）
SK[i] = ハッシュ(SK[i+l]) （iが nの乗数ではない場合）
ｎはチェックポイントの整数である。
【００８５】
図１１は、格納鍵を導出するために回復不可能なＴＣＢが実行する方法の一実施形態を示すフローグラフである。
【００８６】
ブロック１１００で、ＳＶＮ８０８は、復旧不可能なＴＣＢファームウェアから読み出される。処理はブロック１１０２に続く。
【００８７】
ブロックで、現在の格納鍵を、デバイス固有鍵１１０を以下のように利用して導出する。
m = [SVN / n]とする。
SK[m-n] = PRF(デバイス固有鍵, "格納鍵" || m-n);
i = mn-1, …, SVNについて, SK[i] = ハッシュ( SK[i+l] ).
処理は、ブロック１１０４に続く。
【００８８】
ブロック１１０４で、前の格納鍵を、現在の格納鍵を利用して以下のように計算する。
i = 1 , . . , m - 1について , SK[i-n] = PRF(デバイス固有鍵, "格納鍵" II i-n)を計算する。  処理は、ブロック１１０６に続く。
【００８９】
ブロック１１０６で、計算された格納鍵SK[SVN], SK[n], SK[2n]…SK[(m-l)-n]を復旧可能なＴＣＢに出力する。SK[SVN], SK[n], SK[2n]…SK[(m-l)-n]が所与の場合、復旧可能なＴＣＢは、任意のi = 1 ,… SVNについてSK[i]を計算することができる。
【００９０】
１つの復旧可能なＴＣＢについての前の格納鍵８２４を計算する方法の実施形態を説明してきた。しかし、プラットフォームは、複数の復旧可能なＴＣＢのレイヤを有する場合がある。一実施形態では、ＴＣＢの各レイヤが銘々ＳＶＮ８０８を有している場合がある。各レイヤは、前のレイヤが計算する導出鍵を有している。セキュリティバージョン番号が整数である場合、ＴＣＢの各レイヤは、次のレイヤのＴＣＢファームウェアの署名を検証する必要があるだろう。たとえば一実施形態では、復旧不可能なＴＣＢがファームウェアパッチローダであってよく、レイヤ１のＴＣＢがファームウェアレイヤ１であり、レイヤ２のＴＣＢがより高いレベルの技術のファームウェア実装であってよい。
【００９１】
図１２は、復旧可能なＴＣＢ８１０およびレイヤ１のＴＣＢ１２０２を示すブロック図である。起動シーケンス中に（つまり、プラットフォームに電力を投入するたびに）、復旧不可能なＴＣＢ８１０が、デバイス固有鍵１１０を受け取る。
【００９２】
ブロック１２０４で、復旧不可能なＴＣＢ８１０は、復旧不可能なＴＣＢファームウェアの署名を検証して、ブロック１２０６にＴＣＢの復旧不可能なＳＶＮを送る。ブロック１２０６では、復旧不可能なＴＣＢが、受信したデバイス固有鍵１１０と復旧不可能なＴＣＢのＳＶとに擬似乱数関数を実行することに基づいて、レイヤ１のＴＣＢ１２０２の鍵を導出する。
【００９３】
ブロック１２０８のレイヤ１のＴＣＢ１２０２で、レイヤ１のＴＣＢ１２０２は、レイヤ１のＴＣＢファームウェアの署名をチェックする。ブロック１２１０で、レイヤ１のＴＣＢ１２０２は、ブロック１２１０で受信した導出された復旧不可能なＴＣＢ鍵およびレイヤ１のＴＣＢのＳＶＮに擬似乱数関数を実行することに基づいて、レイヤ２のＴＣＢ（不図示）の鍵を導出する。ｋ個の鍵を生成するためには、ブロック１２０４、１２０６、１２０８、および１２１０に示す鍵生成関数をｋ回繰り返す。
【００９４】
前述した、現在の鍵と前の鍵とを利用する実施形態では、各レベルのマルチレイヤのＴＣＢが、そのレイヤのＳＶＮおよびｐＳＶＮに基づいて２つの鍵を生成することができる。これら２つの鍵は、前のレイヤのＳＶＮおよびｐＳＶＮの鍵から導出される。
【００９５】
図１０を参照して説明したハッシュチェイン法は、１つのレイヤのＴＣＢ復旧を行うことができるが、複数のレイヤにあわせスケーリングはできない。
【００９６】
プラットフォームがランタイムにクエリ可能であるアクティブな復旧可能レイヤを含む場合には、ハイブリッド法は、ハッシュチェインを利用して、復旧可能なレイヤを保護する。復旧可能なレイヤは、残りのレイヤのＳＶＮを格納して、要求に応じて様々なレイヤのｐＳＶＮの任意の組み合わせの格納鍵を導出することができる。
【００９７】
図１３は、復旧可能なレイヤを保護するためにハッシュチェインを利用するハイブリッド方法を示すブロック図である。復旧不可能なＴＣＢレイヤ８１０、レイヤ１のＴＣＢ１３００、レイヤ２のＴＣＢ１３０２、およびレイヤ３の１３０４という４つのレイヤが示されている。図示されている４つのレイヤすべてを、プロセッサユニットの実施形態に実装することができる。チップセットの実施形態では、通常、これらレイヤの２つのみ（つまり、復旧不可能なＴＣＢレイヤ８１０およびレイヤ１のＴＣＢ１３００）が利用される。鍵レジスタ１３１４は、プロセッサユニットの実施形態の復旧不可能なＴＣＢレイヤ８１０およびレイヤ３  １３０４が利用するプロセッサユニットまたはチップセットの特別なレジスタであってよい。
【００９８】
各レイヤ（ｉ）のＴＣＢは、TCB[i] = ＴＣＢレイヤｉのSVN、として計算される。
【００９９】
復旧不可能なＴＣＢレイヤ８１０は、格納されているデバイス固有鍵１１０を受信して、レイヤ１の復旧可能なＴＣＢファームウェアの整合性およびソースを検証して、ＰＲＦループ１３１２のハッシュチェインを利用してＳＫ[ＴＣＢ[１]]を計算する。ＰＲＦループ１３１２は、鍵の特定の改定版の特定のレイヤのプロビジョン鍵を導出して、鍵レジスタにレイヤ１のＣＢ１３００のプロビジョン鍵を格納する。ＰＲＦループはさらに、レイヤ１のＳＶＮ１３０５、レイヤ２のＳＶＮ１３０６、および、レイヤ３のＳＶＮ１３０８も生成する。ＰＲＦループ１３１２で実行されるＰＲＦ関数は、ルート鍵および現在のＴＣＢバージョン（または前のＴＣＢバージョン番号）に実行されるハッシュ関数である。
【０１００】
レイヤ１のＴＣＢ１３０２は、レイヤ２の整合性およびソースを検証して、ＰＲＦループ１３１２が保護されているレジスタ（たとえばＴＣＢＳＶＮレジスタ１３１０）に生成したレイヤ２のセキュリティバージョン番号（ＳＶＮ）１３０６を格納する。ＴＣＢＳＶＮレジスタ１３１０は、他のレイヤにより書き換えられないよう保護されている。
【０１０１】
レイヤ２から最後のレイヤまでは、レイヤ１  １３００との関連で説明したものと同じ動作を実行する。最後のレイヤで実装される命令は、レイヤ１の関数ｇｅｔＫｅｙ（ＴＣＢ＿ｒｅｑｕｅｓｔ［］）を呼び出すことができ、この関数は以下の処理を行う。
i = 1 , ...について , TCBレイヤは以下をカウントする。
TCB_request[i] > TCB[i]の場合には, 失敗（failure）を返す。
TCB_request[i] < TCB[i]の場合には、
チェインを利用して、tmp = SK[TCB_request[i]]として、
PRF(tmp, "格納鍵" || j || k)を返す;
ここでjおよびkは、それぞれレイヤ１のＴＣＢ１３００およびレイヤ２のＴＣＢ１３０２のＳＶＮである 。
【０１０２】
レイヤ１がアクティブであり続けている限り、ＴＣＢレイヤの前の順列（permutation）の格納鍵８０６を導出する。
【０１０３】
レイヤ３の１３０４はさらに、プロビジョン鍵の前のバージョンを生成することを要求されている場合、鍵レジスタ１３１４に格納されているプロビジョン鍵を利用して、ＰＲＦループ１３１８のＰＲＦ関数を随意で実行する。ＰＲＦ関数は１３２０で、鍵レジスタ１３１４に格納されている、または、格納されているレイヤ２のＳＶＮ１３０６および格納されているレイヤ３のＳＶＮ１３０８でＰＲＦループ１３１８に導出されたプロビジョン鍵に実行される。格納鍵は、このＰＲＦ関数１３２６の結果に基づいて計算される。
【０１０４】
破損しているプラットフォームは、プロビジョンサーバ５００からの新たなＤＡＫを受信することを妨げられる。各プラットフォームは、自身の復旧可能なＴＣＢファームウェアが更新されると、新たなＤＡＫを受信することができる。プラットフォームが無効化されている場合（たとえばプラットフォームのデバイス固有鍵１１０が悪意のハードウェアの攻撃中に抽出された場合）、ＤＡＫ再プロビジョンプロトコルは、新たなＤＡＫをプラットフォームに提供しない。
【０１０５】
図１４は、プラットフォーム５０２とプロビジョンサーバ５００との間にプロトコルをプロビジョンするデバイス認証鍵（ＤＡＫ）の一実施形態を示す。
【０１０６】
１４００で、プラットフォーム５０２とプロビジョンサーバ５００とは、標準的なプロトコル（たとえばＴＬＳ／ＳＳＬ）を利用してセキュアな通信チャネルをセットアップする。
【０１０７】
１４０２で、プラットフォーム５０２は、自身の前のＤＡＫを利用してメッセージを暗号化して、暗号化したメッセージをプロビジョンサーバ５００に送信する。プロビジョンサーバ５００は、前のＤＡＫをチェックして、前のＤＡＫに無効化チェックを行い、無効化されているかどうかを確かめる。プラットフォーム５０２が無効化されている場合には、プロビジョンサーバ５００はプロトコルを終了させる。
【０１０８】
１４０４で、プラットフォームは、セキュアなチャネルでプロビジョンＩＤ８０２をプロビジョンサーバ５００に送信する。プロビジョンサーバ５００はＤＡＫプロビジョンデータベース内を、受信したプロビジョンＩＤ（ハードウェアデバイス１０２それぞれに１つ）を利用して検索して、プラットフォーム５０２の暗号化された新たなＤＡＫを取得する。
【０１０９】
１４０６で、プロビジョンサーバ５００は、新たな暗号化されたＤＡＫをプラットフォーム５０２に送信する。
【０１１０】
プラットフォーム５０２にプロビジョンした後でＤＡＫを削除する、というプロビジョンサーバ５００のプライバシー要件がある実施形態では、ＤＡＫの再プロビジョンを修正して、プロビジョンサーバ５００にＤＡＫを格納する。
【０１１１】
図１５は、プラットフォーム５０２とプライバシーをサポートするためのプロビジョンサーバ５００との間に図１４のプロトコルを再度プロビジョンするための一実施形態を示す。
【０１１２】
図１４を参照して説明したように、１４００で、プラットフォーム５０２は、プロビジョンサーバ５００との間でセキュアなチャネルをセットアップする。
【０１１３】
１４０２で、プラットフォーム５０２は、前のＤＡＫをプロビジョンサーバ５００に送ることで、自身が無効化されていないことを証明する。
【０１１４】
１４０４で、プラットフォーム５０２は、セキュアなチャネルでプロビジョンＩＤをプロビジョンサーバ５００に送信する。プロビジョンサーバ５００は、前のＤＡＫに合致するものを探してＤＡＫプロビジョンデータベースを検索して、プラットフォーム５０２の新たなＤＡＫを取得する。
【０１１５】
１５０６で、プロビジョンサーバ５００は、プロビジョン鍵８０４を用いて暗号化された新たなＤＡＫを、プラットフォーム５０２に送り返す。プラットフォーム５０２は、暗号化されたＤＡＫを、そのプロビジョン鍵８０４を利用して復号する。
【０１１６】
１５０８で、プラットフォーム５０２は、受信した新たなＤＡＫを、格納鍵８０６を利用して再度暗号化するが、この格納鍵８０６は、プロビジョンサーバ５００および鍵生成サーバ１０６には知らされていない。プラットフォーム５０２は、格納鍵８０６で暗号化された新たなＤＡＫを、プロビジョンサーバ５００に送る。プロビジョンサーバ５００は、プラットフォームのＤＡＫをデータベースから削除して、格納鍵で暗号化された新たなＤＡＫをデータベースに格納する。
【０１１７】
図１６は、格納鍵で暗号化したプラットフォームのＤＡＫを格納するプロビジョンサーバ５００とプラットフォームとの間のＤＡＫバックアップ取得プロトコルの一実施形態を示す。
【０１１８】
プラットフォームが自身のＤＡＫを失った場合には、プロビジョンサーバ５００のデータベースに格納されているＤＡＫをダウンロードすることができる。
【０１１９】
１６００で、プラットフォーム５０２は、プロビジョンサーバの公開鍵を利用して自身のプロビジョンＩＤ８０４を暗号化して、暗号化したプロビジョンＩＤをプロビジョンサーバ５００に送信する。暗号化されたプロビジョンＩＤを受信すると、プロビジョンサーバ５００は、プロビジョンＩＤを復号して、プロビジョンサーバのデータベースを、プロビジョンＩＤに対応するエントリを探すべく検索する。
【０１２０】
１６０２で、プロビジョンサーバ５００は、プロビジョンサーバ５００のデータベースに格納されているプラットフォームの格納鍵８０６で暗号化されたＤＡＫをプラットフォームに送信する。暗号化されたＤＡＫを受信すると、プラットフォーム５０２は、その格納鍵を利用して、受信した暗号化されているＤＡＫ（ＤＡＫのバックアップコピー）を復号する。
【０１２１】
前のセキュリティバージョン番号（ＰＳＶＮ）は、不揮発性書き換え可能メモリ（たとえばプラットフォーム５０２のフラッシュメモリ）に格納される。簡単な、消耗を予防する保護アルゴリズムを利用して、不揮発性書き換え可能メモリの消去サイクルを防止するために最少のフラッシュファイルシステムサポートによって不揮発性書き換えメモリに永続的にＰＳＶＮを格納する。
【０１２２】
不揮発性書き換え可能メモリ（たとえばフラッシュメモリ）の６４バイトのブロック（パーティション）を利用して、前のセキュリティバージョン（ＰＳＶＮ）を格納する。各バイトが潜在的なＰＳＶＮを表しており、６４バイトのブロックの１つのバイトのみが各時点で有効である。６４バイトブロックの１バイトの初期値は２５５である（１６進法表現で０ｘＦＦ）。そのバイトの値が０である場合には（１６進法表現の０ｘ００）、ＳＶＮエントリが既に利用されており、今は無効であることになる。任意の他の値（１から２５４（１６進法表現で０ｘ０１−０ｘＦＥ））が、ＰＳＶＮエントリが有効であることを示す。
【０１２３】
図１７は、不揮発性書き換え可能メモリにＰ−ＳＶＮを格納する方法の一実施形態のフローグラフを示す。
【０１２４】
ブロック１７００で、現在のバイトのアドレスが６４バイトのブロックの最大バイトのアドレス未満である場合には、処理はブロック１７０２に続く。
【０１２５】
ブロック１７０２で、現在のアドレスの６４バイトのブロックのバイトが読み出される。処理はブロック１７０４に続く。
【０１２６】
ブロック１７０４で、値がゼロである場合には、処理はブロック１７０５に続く。ゼロではない場合には、処理はブロック１７０６に続く。
【０１２７】
ブロック１７０５で、６４バイトブロックのアドレスを増分して、次のバイトの位置を読み出す。処理はブロック１７００に続く。
【０１２８】
ブロック１７０６で、値が２５５である場合には、アクティブなＰＳＶＮがないことになる。処理はブロック１７０８に続く。値が２５５でない場合には、値は１から２５４のいずれかであり、ＰＳＶＮが有効であることになる。処理はブロック１７１０に続く。
【０１２９】
ブロック１７１０で、前のルート鍵を導出する。
【０１３０】
ブロック１７０８では、ＰＳＶＮエントリの数（ＰＳＶＮエントリを格納するためにリザーブされている６４バイトのブロックで利用可能な位置の数）が６４を超えており、プロビジョン鍵を導出することができず、ＤＡＫ鍵を取り換える（rekeyed）ことができない。
【０１３１】
プラットフォームが、新たなＤＡＫのプロビジョンを促すことにより、ＴＣＢが是正されているかを証明する方法および装置を説明してきた。この方法および装置は、マネジャビリチェインジン（ＭＥ）およびＴＰＭ等のセキュリティアプリケーションによって利用することができる。
【０１３２】
当業者であれば、本発明の実施形態に関する方法を、コンピュータ利用可能な媒体を含むコンピュータプログラムプロダクトに具現化することができることを理解する。たとえば、コンピュータ利用可能媒体は、読み取り専用メモリデバイス（たとえば、コンピュータ可読プログラムコードが格納されたＣＤ  ＲＯＭディスク、または従来のＲＯＭデバイス、または、コンピュータディスク）からなってよい。
【０１３３】
本発明の実施形態は、その実施形態を参照して図示して説明してきたが、当業者であれば、添付請求項に含まれる本発明の実施形態の範囲から逸脱せずに、さまざまな変更を行い、詳細を特定することができることを理解する。
【図１】
2013545388.tif 000003
【図２】
2013545388.tif 000004
【図３】
2013545388.tif 000005
【図４】
2013545388.tif 000006
【図５】
2013545388.tif 000007
【図６】
2013545388.tif 000008
【図７】
2013545388.tif 000009
【図８】
2013545388.tif 000010
【図９】
2013545388.tif 000011
【図１０】
2013545388.tif 000012
【図１１】
2013545388.tif 000013
【図１２】
2013545388.tif 000014
【図１３】
2013545388.tif 000015
【図１４】
2013545388.tif 000016
【図１５】
2013545388.tif 000017
【図１６】
2013545388.tif 000018
【図１７】
2013545388.tif 000019
【国際調査報告】
2013545388.tif 000020
2013545388.tif 000021