(57)【特許請求の範囲】
【請求項１】
保護されたプラットフォーム１００に一意の初期キーを記憶するためのキー記憶域１５５と、そして
前記初期キーに基づいてキーの階層を作成する前記保護されたプラットフォーム１００中の暗号キー作成装置２００と
から構成され、
前記暗号キー作成装置２００は、
ローディング・ソフトウェア・コード・キー２２５およびロード済みソフトウェア・コードのＩＤ２２８をハッシュすることにより、ロード済みソフトウェア・コード・キー２３０を生成するためのキー生成装置２１０と、そして
キー選択関数を適用して前記ロード済みソフトウェア・コード・キー２３０から前記ロード済みソフトウェア・コードのための対称暗号キー２４０を選択するためのキー選択装置２２０と
を含む
ことを特徴とするマイクロプロセッサ・システム。
【請求項２】
分離実行環境での使用のためにプラットフォームを保護するためにマイクロプロセッサ・システムで実行される方法であって、
保護されたプラットフォーム１００に一意の初期キーをキー記憶域１５５に記憶するステップと、そして
前記保護されたプラットフォーム１００中の前記初期キーに基づいてキーの階層を作成するステップと、
を含み、
前記キーの階層を作成するステップが、
前記ローディング・ソフトウェア・コード・キー２２５および前記ロード済みソフトウェア・コードのＩＤ２２８をハッシュすることにより、ロード済みソフトウェア・コード・キー２３０を生成するステップと、そして
キー選択関数を適用して前記ロード済みソフトウェア・コード・キー２３０から前記ロード済みソフトウェア・コードのための対称暗号キー２４０を選択するステップと
を含む
ことを特徴とする方法。
【発明の詳細な説明】
【０００１】
（背景）
１．発明の分野
本発明は、マイクロプロセッサに関する。より詳細には、本発明は、プロセッサのセキュリティに関する。
【０００２】
２．関連技術の説明
マイクロプロセッサと通信技術の進歩は、従来のビジネスの方法を超えた多数の応用の機会をもたらしている。今や、電子商取引（Ｅコマース）およびビジネス・ツー・ビジネス（Ｂ２Ｂ）取引が普及しつつあり、引き続き速さを増して世界の市場全体で行われている。残念ながら、最新のマイクロプロセッサ・システムは、便利で効率的なビジネスの方法、通信方法、取引方法をユーザに提供するが、悪意ある攻撃を受けやすい。これらの攻撃の例をいくつか挙げると、ウィルス、侵入、セキュリティの侵害、改ざんがある。したがって、コンピュータ・システムの保全性を保護し、ユーザの信頼を高めるために、コンピュータのセキュリティがますます重要になってきている。
【０００３】
悪意ある攻撃により生じる脅威は、多くの形態をとり得る。ハッカーによる遠隔からの侵入攻撃は、何千人または何百万人ものユーザに接続されているシステムの正常な動作を混乱させる。ウィルス・プログラムは、シングル・ユーザ・プラットフォームのコードおよび／またはデータを破壊する。
【０００４】
攻撃から保護するための既存の技術には多くの欠点がある。アンチ・ウィルス・プログラムは、既知のウィルスのスキャンおよび検出しか行えない。暗号化またはその他のセキュリティ技術を使用したセキュリティ・コプロセッサまたはスマート・カードは、速度性能、メモリ容量、フレキシビリティにおいて限界がある。さらにオペレーティング・システムを再設計すると、ソフトウェアの互換性の問題が生じ、開発努力への多額の投資を必要とする。
【０００５】
本発明の特徴および利点は、本発明の以下の詳細な説明から明らかになるであろう。
【０００６】
（説明）
以下の説明では、本発明のある種の特徴を論ずるために専門用語を使用している。例えば、「プラットフォーム」には、記憶された情報に異なる機能を実行するハードウェア機器およびソフトウェアが含まれる。プラットフォームの例としては、コンピュータ（例えば、デスクトップ、ラップトップ、ハンドヘルド、サーバ、ワークステーションなど）、卓上型事務機器（例えば、プリンタ、スキャナ、ファクシミリ装置など）、無線電話機、テレビのセットトップ・ボックスなどが挙げられるが、それらのみに限定または制限されるものではない。「ソフトウェア・モジュール」には、実行されると、ある種の機能を実行するコードが含まれる。「ナブ（ｎｕｂ）」は、一連のコード命令であり、可能であれば、ソフトウェア・モジュールからのコード・サブセットである。「リンク」は、１つまたは複数の情報伝送媒体（例えば、電線、光ファイバ、ケーブル、バス、または無線信号技術）として広く定義される。さらに、「情報」という用語は、データ、アドレス、および／または制御の１ビットまたは複数ビットとして定義される。「ハッシュ関数」は、固定長表現への情報の一方向変換を実行する、数学的またはその他の機能である。この表現は、通常、「ハッシュ値」または「ダイジェスト」と呼ばれ、もとの情報よりも実質的にサイズが小さい。
【０００７】
本発明は、保護されたプラットフォームの分離実行環境で使用するためのキー階層を生成する方法、装置、およびシステムである。分離実行で動作している特定のコードに秘密を結び付けるためには、標準対称暗号用の一連の対称キーを含むキー階層を利用する。保護されたプラットフォームは、ノーマル実行モードおよび分離実行モードの１つに構成されるプロセッサを含む。キー記憶域は、そのプラットフォームに一意の初期キーを格納している。保護されたプラットフォームに設置された暗号キー作成装置はこの初期キーに基づいてキーの階層を作成する。暗号キー作成装置は、ロード済みソフトウェア・コードの秘密を保護するための一連の対称暗号キーを作成する。
【０００８】
以下の記述では、説明の目的で、本発明が完全に理解できるように多数の詳細事項を記載する。しかし、本発明を実施するためにこれらの特定の詳細事項が必要ではないことが、当業者には明らかであろう。それ以外の場合には、本発明が不明瞭にならないように、周知の電気構造および電気回路を構成図の形態で示してある。
【０００９】
アーキテクチャの概要
コンピュータ・システムまたはプラットフォームにセキュリティを与えるための１つの原則は、分離実行アーキテクチャという概念である。分離実行アーキテクチャは、コンピュータ・システムまたはプラットフォームのオペレーティング・システムと直接的または間接的に相互作用するハードウェアおよびソフトウェアのコンポーネントの論理的および物理的定義を含む。オペレーティング・システムおよびプロセッサは、様々な動作モードに対応する、リングと呼ばれるいくつかのレベルの階層を備えることができる。リングは、オペレーティング・システム内で専用タスクを実行するように設計されたハードウェアおよびソフトウェアのコンポーネントの論理区分である。この区分は、一般に、特権、すなわちプラットフォームに変更を施す能力の程度またはレベルに基づく。例えば、リング０は最も内側のリングであり、階層の最上レベルにある。リング０は、最も重要な特権コンポーネントを包含する。さらに、リング０中のモジュールは、それよりも特権度の低いデータにアクセスすることもできるが、その反対は不可能である。リング３は最も外側のリングであり、階層の最低レベルにある。リング３は、一般に、ユーザ・レベルまたはアプリケーション・レベルを包含し、最小特権を有する。リング１およびリング２は中間リングを表し、その特権のレベルが減少していく。
【００１０】
図１Ａは、本発明の一実施形態による論理動作アーキテクチャ５０を示す図である。論理動作アーキテクチャ５０は、オペレーティング・システムのコンポーネントおよびプロセッサのアブストラクションである。論理動作アーキテクチャ５０は、リング０  １０、リング１  ２０、リング２  ３０、リング３  ４０、およびプロセッサ・ナブ・ローダ５２を含む。プロセッサ・ナブ・ローダ５２は、プロセッサ・エグゼクティブ（ＰＥ）ハンドラのインスタンスである。ＰＥハンドラは、後述するように、プロセッサ・エグゼクティブ（ＰＥ）をハンドルおよび／または管理するために使用される。論理動作アーキテクチャ５０は、ノーマル実行モードおよび分離実行モードの２種類のオペレーション・モードを有する。論理動作アーキテクチャ５０中の各リングは、両方のモードで動作することができる。プロセッサ・ナブ・ローダ５２は、分離実行モードにおいてのみ動作する。
【００１１】
リング０  １０は、ノーマル実行リング０  １１および分離実行リング０  １５の２つの部分を含む。ノーマル実行リング０  １１は、オペレーティング・システムにとって重要なソフトウェア・モジュールを含み、これは、通常、カーネルと呼ばれる。これらのソフトウェア・モジュールは、プライマリ・オペレーティング・システム（例えばカーネル）１２、ソフトウェア・ドライバ１３、およびハードウェア・ドライバ１４を含む。分離実行リング０  １５は、オペレーティング・システム（ＯＳ）ナブ１６およびプロセッサ・ナブ１８を含む。ＯＳナブ１６およびプロセッサ・ナブ１８は、それぞれＯＳエグゼクティブ（ＯＳＥ）およびプロセッサ・エグゼクティブ（ＰＥ）のインスタンスである。ＯＳＥおよびＰＥは、分離域および分離実行モードに関連する保護された環境で動作するエグゼクティブ・エンティティ（executive entity）の一部である。プロセッサ・ナブ・ローダ５２は、システム中のチップセット内に保持される保護ブートストラップ・ローダ・コードであり、後述するように、プロセッサまたはチップセットから分離域にプロセッサ・ナブ１８をロードする責任をもつ。
【００１２】
同様に、リング１  ２０、リング２  ３０、およびリング３  ４０は、それぞれ、ノーマル実行リング１  ２１、リング２  ３１、リング３  ４１、および分離実行リング１  ２５、リング２  ３５、リング３  ４５を含む。特に、ノーマル実行リング３は、Ｎ個のアプリケーション４２１〜４２Ｎを含み、分離実行リング３は、Ｋ個のアプレット４６１〜４６Ｋを含む。
【００１３】
分離実行アーキテクチャの１つの概念は、システム・メモリ中に、分離域と呼ばれる分離された領域を作成することである。この分離域は、コンピュータ・システム中のプロセッサとチップセットの両方によって保護される。この分離領域は、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）アクセス・チェックによって保護されるキャッシュ・メモリ中にあってもよい。また、この分離領域は、後述するように、複数の分離メモリ域に細分することもできる。この分離領域へのアクセスは、分離読込みおよび書込みサイクルと呼ばれる、専用バス（例えば、メモリ読込みおよび書込み）サイクルを使って、プロセッサのフロント・サイド・バス（ＦＳＢ）からのみ可能である。この専用バス・サイクルは、スヌーピングにも使用される。この分離読込み／書込みサイクルは、プロセッサが分離実行モードで実行することにより発行される。分離実行モードの初期化は、プロセッサ中の特権命令をプロセッサ・ナブ・ローダ５２と組み合わせて使用して行う。プロセッサ・ナブ・ローダ５２は、リング０のナブ・ソフトウェア・モジュール（例えば、プロセッサ・ナブ１８）を検証し、分離域中にロードする。プロセッサ・ナブ１８は、分離実行のためのハードウェア関連のサービスを提供する。
【００１４】
プロセッサ・ナブ１８の１つのタスクは、リング０のＯＳナブ１６を検証して分離域中にロードし、プラットフォーム、プロセッサ・ナブ１８、およびオペレーティング・システム・ナブ１６の組み合わせに一意のキー階層のルートを生成することである。プロセッサ・ナブ１８は、オペレーティング・システム・ナブ１６の検証、ロード、ロギングを含む、分離域の初期設定と低レベル管理、およびオペレーティング・システム・ナブの秘密を保護するために使用される対称キーの管理を行う。プロセッサ・ナブ１８はまた、他のハードウェアによって提供される低レベルのセキュリティ・サービスに、アプリケーション・プログラム・インタフェース（ＡＰＩ）アブストラクションを提供する。
【００１５】
オペレーティング・システム・ナブ１６は、プライマリＯＳ１２中のサービス（例えば、オペレーティング・システム中の非保護セグメント）へのリンクを提供し、分離域内のページ管理を提供し、また、アプレット４６１〜４６Ｋを含めて、リング３のアプリケーション・モジュール４５を、分離域中の割り振られた保護ページ中にロードする責任を有する。オペレーティング・システム・ナブ１６は、またリング０サポート・モジュールをロードすることができる。
【００１６】
オペレーティング・システム・ナブ１６は、分離域と通常の（例えば非分離）メモリの間のデータのページングをサポートすることを選択することができる。その場合、オペレーティング・システム・ナブ１６は、ページを通常のメモリに追い出す前に、分離域のページを暗号化しハッシングする責任と、ページを復元したときにそのページの内容をチェックする責任も有する。分離モード・アプレット４６１〜４６Ｋ、およびそれらのデータは、他のアプレットから、また、非分離スペースのアプリケーション（例えば４１１〜４２Ｎ）、ダイナミック・リンク・ライブラリ（ＤＬＬ）、ドライバ、およびさらにはプライマリ・オペレーティング・システム１２からのあらゆるソフトウェア攻撃に対して耐偽造性および耐監視性を有する。プロセッサ・ナブ１８またはオペレーティング・システム・ナブ１６のみがアプレットの実行を干渉または監視することができる。
【００１７】
図１Ｂは、本発明の一実施形態によるオペレーティング・システム１０中の様々なエレメントおよびプロセッサのアクセス可能性を示す図である。説明のために、リング０  １０およびリング３  ４０のみを示している。論理動作アーキテクチャ５０中の様々な要素は、それらのリング階層および実行モードに従って、アクセス可能物理メモリ６０にアクセスする。
【００１８】
アクセス可能物理メモリ６０は、分離域７０および非分離域８０を含む。分離域７０は、アプレット・ページ７２およびナブ・ページ７４を含む。非分離域８０は、アプリケーション・ページ８２およびオペレーティング・システム・ページ８４を含む。分離域７０は、分離実行モードで動作するオペレーティング・システムの要素およびプロセッサからのみアクセス可能である。非分離域８０は、リング０のオペレーティング・システムのすべての要素およびプロセッサからアクセス可能である。
【００１９】
プライマリＯＳ１２、ソフトウェア・ドライバ１３、およびハードウェア・ドライバ１４を含むノーマル実行リング０  １１は、ＯＳページ８４およびアプリケーション・ページ８２の両方にアクセスすることができる。アプリケーション４２１〜４２Ｎを含むノーマル実行リング３は、アプリケーション・ページ８２のみにアクセスすることができる。しかし、ノーマル実行リング０  １１およびリング３  ４１は、分離域７０にアクセスすることはできない。
【００２０】
ＯＳナブ１６およびプロセッサ・ナブ１８を含む分離実行リング０  １５は、アプレット・ページ７２およびナブ・ページ７４を含む分離域７０と、アプリケーション・ページ８２およびＯＳページ８４を含む非分離域８０とにアクセスすることができる。アプレット４６１〜４６Ｋを含む分離実行リング３  ４５は、アプリケーション・ページ８２およびアプレット・ページ７２のみにアクセスすることができる。アプレット４６１〜４６Ｋは、分離域７０中に常駐する。
【００２１】
図１Ｃは、本発明の一実施形態を実施することができるプラットフォーム１００を示す図である。プラットフォーム１００は、プロセッサ１１０、ホスト・バス１２０、メモリ・コントローラ・ハブ（ＭＣＨ）１３０、システム・メモリ１４０、入出力コントローラ・ハブ（ＩＣＨ）１５０、不揮発性メモリまたはシステム・フラッシュ１６０、乱数発生器１６６、大容量記憶装置１７０、入出力装置１７５、トークン・バス１８０、マザーボード（ＭＢ）・トークン１８２、リーダ１８４、およびトークン１８６を含む。ＭＣＨ１３０は、分離実行モード、ホストから周辺機器へのバス・インタフェース、メモリ、コントロールなど、複数の機能を統合するチップセットに統合することができる。同様に、ＩＣＨ１５０も、入出力機能の実行のために、ＭＣＨ１３０と一緒にまたは分離して、チップセット中に統合することができる。わかりやすくするために、すべての周辺バスを示してはいない。システム１００はまた、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＡＧＰ（ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ユニバーサル・シリアル・バス（ＵＳＢ）などの周辺バスも含むことが考えられる。
【００２２】
プロセッサ１１０は、複雑命令セット・コンピュータ（ＣＩＳＣ）、縮小命令セット・コンピュータ（ＲＩＳＣ）、超長命令語（ＶＬＩＷ）、またはハイブリッド・アーキテクチャなど、任意の種類のアーキテクチャの中央処理装置を表す。一実施形態では、プロセッサ１１０は、ペンティアム（登録商標）・シリーズ、ＩＡ−３２（商標）、ＩＡ−６４（商標）などのインテル・アーキテクチャ（ＩＡ）プロセッサと互換性がある。プロセッサ１１０は、ノーマル実行モード１１２および分離実行回路１１５を含む。ノーマル実行モード１１２は、プロセッサ１１０が、非安全環境、すなわち分離実行モードによって提供されるセキュリティ機能がない通常のモードで動作するモードである。分離実行回路１１５は、プロセッサ１１０が分離実行モードで動作することを可能にするメカニズムを提供する。分離実行回路１１５は、分離実行モードのためのハードウェアおよびソフトウェアのサポートを提供する。このサポートには、分離実行のための構成、分離域の定義、分離命令の定義（例えば、復号および実行）、分離アクセス・バス・サイクルの生成、分離モード割込みの生成が含まれる。
【００２３】
一実施形態では、プラットフォーム１００は、たった１つの主要中央処理装置、例えばプロセッサ１１０のみを備えるデスクトップ・コンピュータなどの単一プロセッサ・システムであってよい。他の実施形態では、プラットフォーム１００は、図１Ｃに示すように、複数のプロセッサ、例えばプロセッサ１１０、１１０ａ、１１０ｂを含むことができる。したがって、プラットフォーム１００は、任意の数のプロセッサを有するマルチプロセッサ・コンピュータ・システムであってよい。例えば、マルチプロセッサ・プラットフォーム１００は、サーバまたはワークステーション環境の一部として動作することができる。プロセッサ１１０の基本的な記述およびオペレーションを以下に詳説して示す。当業者は、プロセッサ１１０の基本的な記述およびオペレーションが、図１Ｃに示す他のプロセッサ１１０ａおよび１１０ｂにも、また本発明の一実施形態によるマルチプロセッサ・プラットフォーム１００中で利用することができる任意の数の他のプロセッサにも適用できることを認識されよう。
【００２４】
プロセッサ１１０はまた、複数の論理プロセッサを有することができる。論理プロセッサはスレッドと呼ばれることもあり、あるアーキテクチャ状態、および何らかのパーティション・ポリシーに従って割り振られた物理資源を有する物理プロセッサ内の機能ユニットである。本発明のコンテキストにおいては、「スレッド」および「論理プロセッサ」という用語を同じものを意味するために使用している。マルチスレッド・プロセッサは、複数のスレッドまたは複数の論理プロセッサを有するプロセッサである。マルチプロセッサ・システム（例えば、プロセッサ１１０、１１０ａ、１１０ｂを含むシステム）は、複数のマルチスレッド・プロセッサを有することができる。
【００２５】
ホスト・バス１２０は、プロセッサ１１０、またはプロセッサ１１０、１１０ａ、１１０ｂが他のプロセッサまたは装置、例えばＭＣＨ１３０と通信することを可能にするインタフェース信号を供給する。ノーマル・モードに加えて、ホスト・バス１２０は、プロセッサ１１０が分離実行モードに構成されている場合に、メモリ読込みおよび書込みサイクルのための対応するインタフェース信号を用いる分離アクセス・バス・モードを提供する。分離アクセス・バス・モードは、プロセッサ１１０が分離実行モードである間に開始されたメモリ・アクセスに対してアサートされる。分離アクセス・バス・モードはまた、アドレスが分離域のアドレス範囲内にあり、プロセッサ１１０が分離実行モードで初期化された場合に、命令プリフェッチ・サイクルおよびキャッシュ・ライトバック・サイクルに対してアサートされる。プロセッサ１１０は、分離アクセス・バス・サイクルがアサートされ、プロセッサ１１０が分離実行モードに初期化された場合に、分離域のアドレス範囲内にあるキャッシュ・アドレスへのスヌープ・サイクルに応答する。
【００２６】
ＭＣＨ１３０は、システム・メモリ１４０やＩＣＨ１５０などのメモリおよび入出力装置の制御および構成を行う。ＭＣＨ１３０は、分離メモリ読込みおよび書込みサイクルを含めて、メモリ参照バス・サイクルに対する分離アクセスのアサートを認識し、サービスするためのインタフェース回路を提供する。さらに、ＭＣＨ１３０は、システム・メモリ１４０中の分離域を表すメモリ・レンジ・レジスタ（例えばベース・レジスタおよび長さレジスタ）を備える。ＭＣＨ１３０は、構成されると、分離アクセス・バス・モードがアサートされていない分離域に対するアクセスを打ち切る。
【００２７】
システム・メモリ１４０は、システム・コードおよびデータを記憶する。システム・メモリ１４０は、一般に、ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）またはＳＲＡＭ（スタティック・ランダム・アクセス／メモリ）で実装される。システム・メモリ１４０は、アクセス可能物理メモリ６０（図１Ｂに示す）を含む。アクセス可能物理メモリは、ロード済みオペレーティング・システム１４２、分離域７０（図１Ｂ）、および分離制御／ステータス・スペース１４８を含む。ロード済みオペレーティング・システム１４２は、システム・メモリ１４０中にロード済みオペレーティング・システムの一部である。ロード済みＯＳ１４２は、一般に、ブート読出し専用メモリ（ＲＯＭ）などのブート記憶域中のあるブート・コードによって、大容量記憶装置からロードされる。分離域７０（図１Ｂ）は、プロセッサ１１０が分離実行モードで動作しているときに定義するメモリ域である。分離域へのアクセスは、プロセッサ１１０および／またはＭＣＨ１３０、あるいは分離域の諸機能を統合する他のチップセットによって制限され、また実施される。分離制御／ステータス・スペース１４８は、プロセッサ１１０および／またはＭＣＨ１３０によって定義される、入出力に似た独立したアドレス・スペースである。分離制御／ステータス・スペース１４８は、主として、分離実行制御およびステータス・レジスタを含む。分離制御／ステータス・スペース１４８は、既存のどのアドレス・スペースとも重ならず、分離バス・サイクルを使ってアクセスされる。システム・メモリ１４０はまた、図示していないその他のプログラムまたはデータを含む。
【００２８】
ＩＣＨ１５０は、分離実行機能を有する、システム中の既知の１地点を表す。わかりやすくするために、ＩＣＨ１５０のみを示してある。システム１００は、ＩＣＨ１５０と同様の多くのＩＣＨを備えることができる。複数のＩＣＨがある場合は、分離域の構成およびステータスを制御するように指定したＩＣＨが選択される。一実施形態では、この選択が外部ストラッピング・ピンによって行われる。当業者には知られているように、プログラマブル構成レジスタを使用することを含めて、他の選択方法を使用することもできる。ＩＣＨ１５０は、従来の入出力機能に加えて、分離実行モードをサポートするように設計されたいくつかの機能を有する。特に、ＩＣＨ１５０は、分離バス・サイクル・インタフェース１５２、プロセッサ・ナブ・ローダ５２（図１Ａに示す）、ダイジェスト・メモリ１５４、暗号キー記憶域１５５、暗号バッシュ・ユニット１５７、分離実行論理プロセッサ・マネージャ１５６、およびトークン・バス・インタフェース１５９を含む。
【００２９】
分離バス・サイクル・インタフェース１５２は、分離読込みおよび書込みバス・サイクルなどの分離バス・サイクルを認識し、サービスするための分離バス・サイクル信号へのインタフェースとなる回路を含む。
【００３０】
プロセッサ・ナブ・ローダ５２は、図１Ａに示すように、プロセッサ・ナブ・ローダ・コードおよびそのダイジェスト（例えばハッシュ）値を含む。プロセッサ・ナブ・ローダ５２は、該当する分離命令（例えばＩｓｏ＿Ｉｎｉｔ）を実行することによって呼び出され、分離域７０に転送される。プロセッサ・ナブ・ローダ５２は、分離域から、システム・フラッシュからのプロセッサ・ナブ１８（例えば、不揮発性メモリ１６０中のプロセッサ・ナブ・コード１８）を分離域７０中にコピーし、その保全性を検証してログし、プロセッサ・ナブの秘密を保護するために使用する対称キーを管理する。一実施形態では、プロセッサ・ナブ・ローダ５２は、読出し専用メモリ（ＲＯＭ）として実装する。セキュリティの目的で、プロセッサ・ナブ・ローダ５２は不変であり、耐偽造性があり、代用不能である。
【００３１】
ダイジェスト・メモリ１５４は、ロードしたソフトウェア・モジュールのダイジェスト（例えば、ハッシュ）値を記憶する。特に、ダイジェスト・メモリは、監査ログのハッシュ（またはハッシュを計算するために必要とされる値の状態）を記憶することが期待される。監査ログは、監査ログ・エントリを含む。各監査ログ・エントリは、少なくとも、プロセッサ・ナブ１８、オペレーティング・システム（ＯＳ）ナブ１６、分離域にロードされるその他の重要なモジュール（例えばリング０モジュール）など、ロード済みコードの暗号ハッシュを含む。特に、監査ログは、プラットフォーム１００の電源投入後、何の情報がシステム・メモリ１４０に無事にロード済みかを表すデータのリストである。例えば、表しているデータが、プラットフォーム１００の現在のパワー・サイクルの間にシステム・メモリ１４０にロード済み各ソフトウェア・モジュールのハッシュ値であることもある。したがって、監査ログは、プラットフォームにロード済み情報（例えば、分離実行のコンフィギュレーションおよびオペレーションを制御するリング０コード）を識別する指紋の役割を果たすことができ、現在の分離実行の状態を証明または立証するために使用される。
【００３２】
暗号キー記憶域１５５は対称暗号化／復号キー、例えば初期キー（後に詳述）を保持する。初期キーはプラットフォーム１００に一意である。一実施形態では、初期キーが外部ハードウェアの乱数発生器によって生成され、製造時に、入出力コントローラ・ハブ（ＩＣＨ）１５０のヒューズにプログラムされる。別の一実施形態では、プラットフォーム１００自体が、最初にパワーアップしたときに、プラットフォームの内部ハードウェアである乱数発生器１６６を使って初期キーを生成する。どちらの場合も、初期キーは暗号キー記憶域１５５の保護不揮発性メモリ中に記憶される。しかし、プラットフォームの他の区域内の保護不揮発性メモリに初期キーを記憶することが可能であることも認識されたい。
【００３３】
暗号ハッシュ・ユニット１５７は、入力情報に一方向ハッシュ関数を実行する論理を含む。「一方向」という用語は、固定長ハッシュ値からもとの情報の識別可能な一部を回復するための逆の関数が容易に存在しないことを表す。ハッシュ関数の例としては、カリフォルニア州、レッドウッド市のＲＳＡセキュリティ株式会社（ＲＳＡ  Ｄａｔａ  Ｓｅｃｕｒｉｔｙ）が提供するＭＤ５、または「連邦情報処理標準刊行（Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ  Ｐｕｂｌｉｃａｔｉｏｎ）」（１９９５年４月１７日）という名称の１９９５年刊行の「安全ハッシュ標準」ＦＩＰＳ１８０−１で指定されている安全ハッシュアルゴリズム（ＳＨＡ−１）が挙げられる。暗号ハッシュ・ユニット１５７を使用して、プロセッサ・ナブ・キー、ＯＳナブ・キー、アプレット・キーを生成するハッシュ関数を実行することができる。これらのキーについては後に詳説する。
【００３４】
分離実行論理処理マネージャ１５６は、分離実行モードで動作する論理プロセッサのオペレーションを管理する。一実施形態では、分離実行論理処理マネージャ１５６は、分離実行モードで参加している論理プロセッサの数を追跡する論理プロセッサ・カウント・レジスタを含む。トークン・バス・インタフェース１５９は、トークン・バス１８０へのインタフェースとなる。
【００３５】
不揮発性メモリ１６０は、不揮発性の情報を記憶する。一般に、不揮発性メモリ１６０は、フラッシュ・メモリで実装される。不揮発性メモリ１６０は、プロセッサ・ナブ１８を含む。
【００３６】
プロセッサ・ナブ１８は、オペレーティング・システム・ナブ１６の検証、ロード、ロギングを含む、分離域（システム・メモリ１４０中の）の初期設定と低レベル管理、およびオペレーティング・システム・ナブの秘密を保護するために使用される対称キーの管理を行う。プロセッサ・ナブ１８はまた、他のハードウェアによって提供される低レベルのセキュリティ・サービスに、アプリケーション・プログラム・インタフェース（ＡＰＩ）アブストラクションを提供する。プロセッサ・ナブ１８はまた、相手先商標製造会社（ＯＥＭ）またはオペレーティング・システム・ベンダー（ＯＳＶ）が、起動ディスクによって配布することもできる。
【００３７】
大容量記憶装置１７０は、コード（例えば、プロセッサ・ナブ１８）、プログラム、ファイル、データ、アプリケーション（例えば、アプリケーション４２１〜４２Ｎ）、アプレット（例えば、アプレット４６１〜４６Ｋ）、オペレーティング・システムなどのアーカイブ情報を記憶する。大容量記憶装置１７０は、コンパクト・ディスク（ＣＤ）ＲＯＭ１７２、フロッピー（登録商標）・ディスケット１７４、ハード・ドライブ１７６、および他の任意の磁気または光学記憶装置を含むことができる。大容量記憶装置１７０は、機械可読媒体を読むメカニズムを提供する。
【００３８】
入出力装置１７５には、入出力機能を実行するためのどのような入出力装置も含めることができる。入出力装置１７５の例としては、入力装置（例えば、キーボード、マウス、トラックボール、ポインティング・デバイス）のためのコントローラ、メディア・カード（例えば、オーディオ、ビデオ、グラフィックス）、ネットワーク・カード、およびその他の任意の周辺コントローラが挙げられる。
【００３９】
トークン・バス１８０は、ＩＣＨ１５０と、システム中の様々なトークンの間のインタフェースを提供する。トークンは、セキュリティ機能を備えた専用の入出力機能を実行する装置である。トークンは、少なくとも一対の予約目的の公開／秘密キーのペアと、秘密キーを使ってデータに署名を行う能力を含めて、スマート・カードと同様の特性を有する。トークン・バス１８０に接続されたトークンの例としては、マザーボード・トークン１８２、トークン・リーダ１８４、およびその他のポータブル・トークン１８６（例えば、スマート・カード）が挙げられる。ＩＣＨ１５０中のトークン・バス・インタフェース１５９は、トークン・バス１８０を介してＩＣＨ１５０に接続し、分離実行の状態を証明するように命令されたときに、対応するトークン（例えば、マザーボード・トークン１８２、トークン１８６）が有効な分離ダイジェスト情報にのみ署名するようにする。セキュリティの目的で、トークンはダイジェスト・メモリに接続されるべきである。
【００４０】
ソフトウェアとして実装される場合、本発明の要素は、必要なタスクを実行するためのコード・セグメントである。プログラムすなわちコード・セグメントは、プロセッサ可読媒体など機械可読媒体に記憶するか、あるいは、搬送波中で実施されたコンピュータ・データ信号、すなわち搬送波によって変調された信号によって伝送媒体を介して伝送することができる。「プロセッサ可読媒体」には、情報を記憶または転送することができるどのような媒体も含めることができる。プロセッサ可読媒体の例としては、電子回路、半導体メモリ・デバイス、ＲＯＭ、フラッシュ・メモリ、消去可能プログラム可能ＲＯＭ（ＥＰＲＯＭ）、フロッピー・ディスケット、コンパクト・ディスクＣＤ−ＲＯＭ、光ディスク、ハード・ディスク、光ファイバ媒体、無線周波数（ＲＦ）リンクなどが挙げられる。コンピュータ・データ信号には、電子ネットワーク・チャネル、光ファイバ、空気、電磁気、ＲＦリンクなどの伝送媒体を介して伝播することができるどのような信号も含めることができる。コード・セグメントは、インターネット、イントラネットなどのコンピュータ・ネットワークを介してダウンロードすることができる。
【００４１】
分離実行環境で使用するためのキー階層の生成
本発明は、保護されたプラットフォームの分離実行環境で使用するためのキー階層を生成する方法、装置、およびシステムである。秘密を分離実行で動作している特定のコードに結び付けるためには、標準対称暗号用の一連の対称キーを含むキー階層を利用する。
【００４２】
図２は、本発明の一実施形態による、暗号キー作成装置２００を示す図である。暗号キー作成装置は、キー生成装置２１０およびキー選択装置２２０を含む。分離実行環境において現在アクティブな（すなわち、すでに分離メモリ域にロードされている）ソフトウェア・コードには、ローディング・ソフトウェア・コード・キー２２５が関連付けられている。現在アクティブなローディング・ソフトウェア・コードは、その後に続くソフトウェア・コードをロードするために使用される。続いて分離実行環境にロードされているソフトウェア・コードには、ロード済みソフトウェア・コードのＩＤ２２８として示すＩＤ値が関連づけられている。ＩＤ２２８は、ロード済みソフトウェア・コードのハッシュであってもよい。しかし、ロード済みソフトウェア・コードの承認済みＩＤであってもよい。
【００４３】
ＩＤ２２８がロード済みソフトウェア・コードの承認済みＩＤである実施形態では、このＩＤ２２８は、アクティブなローディング・ソフトウェア・コードの内部に保持されている証明書検証ルート・キーと突き合わせて検証された証明書によって、そのアクティブなローディング・ソフトウェア・コードに伝達することができる。一実施形態では、この証明書は、証明内容およびその証明内容へのデジタル署名からなる。証明内容は、少なくともロード済みソフトウェア・コードのハッシュとＩＤ２２８の値からなることが可能である。使用可能な証明書の１例として、ＳＰＫＩ認可証明書（ＩＥＴＦ  ＲＦＣ２６９３（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ  Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ  ２６９３）の、Ｅｌｌｉｓｏｎらによる「ＳＰＫ１証明書理論（ＳＰＫ１  Ｃｅｒｔｉｆｉｃａｔｅ  Ｔｈｅｏｒｙ）」（１９９９年９月）を参照）がある。しかし、当業者は、広範にわたる様々な証明書フォーマットも使用可能であることを認識されたい。
【００４４】
ローディング・ソフトウェア・コード・キー２２５およびロード済みソフトウェア・コードのＩＤ２２８は、キー生成装置２１０に入力として供給される。キー生成装置２１０は、ロード済みソフトウェア・コードのためのロード済みソフトウェア・コード・キー２３０を生成する。キー生成装置２１０は、暗号ハッシュの特性を有する関数を利用して、ロード済みソフトウェア・コード・キー２３０を生成する。したがって、一実施形態では、キー生成装置２１０はハッシュ関数を使用することができる。キー生成装置は、ローディング・ソフトウェア・コード・キー２２５およびロード済みソフトウェア・コードのＩＤ２２８をハッシュして、ロード済みソフトウェア・コード・キー２３０を生成する。例えば、ＳＨＡ−１をベースとするＨＭＡＣを使用することができる（ＩＥＴＦ  ＲＦＣ２１０４（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ  Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ  ２１０４）の、Ｋｒａｗｃｙｚｋらによる「ＨＭＡＣ：メッセージ認証のためのキー・ハッシュ（ＨＭＡＣ：  Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ）」（１９９７年２月）を参照）。しかし、一般に受容されている他の暗号ハッシュ関数も同様に使用できることを認識されたい。さらに、一実施形態では、暗号ハッシュ・ユニット１５７（図１Ｃ）を使ってハッシュ関数を実行することができる。また、広範にわたる様々な種類の一方向関数を使ってロード済みソフトウェア・コード・キー２３０を生成することができることを認識されたい。
【００４５】
一般に、ロード済みソフトウェア・コード・キー２３０はハッシュ関数の出力値のサイズであるが、少なくとも暗号的に安全であるための十分なビット数を備えていれば、どのようなサイズでもかまわない。しかし、ロード済みソフトウェア・コードのためのロード済みソフトウェア・コード・キー２３０は、トリプルＤＥＳ（データ暗号化標準）またはＡＥＳ（ＮＩＳＴ（米国連邦情報技術局）が選択している新しい高度暗号化標準）などの所望の対称暗号で使用できるほど小さくすることはできない。したがって、キー選択装置２２０は、適切なサイズ（例えば、１１２、１６８、１２８、または２５６ビット）のキーをより大きいロード済みソフトウェア・コード・キー２３０から選択するキー選択関数を適用して、ロード済みソフトウェア・ソフトウェア・コードのための対称暗号キー２４０を生成する。
【００４６】
キー生成装置２１０は、Ｇ（）で示す生成関数を実行して、第１のキー（Ｋ１で示す）からの第２のキー（Ｋ２で示す）、およびＩＤを生成する。等式は、Ｋ２＝Ｇ（ＩＤ、Ｋ１）という形をとる。一実施形態では、生成される第２のキーＫ２はロード済みソフトウェア・コード・キー２３０である。したがって、等式Ｋ２＝Ｇ（ＩＤ、Ｋ１）は、Ｇ（）関数を利用してロード済みソフトウェア・コード・キー２３０を生成する。ここで、ＩＤは、ロード済みソフトウェア・コードのＩＤ２２８であり、Ｋ１はローディング・ソフトウェア・コード・キー２２５である。前述のように、生成関数Ｇ（）は、暗号ハッシュ関数であってもよい。Ｇ（）関数については、本特許の残りの部分でも、プロセッサ・ナブ・キー、ＯＳナブ・キー、アプレット・キーなどのキーの生成を説明するために触れる。これらについては後で詳述する。
【００４７】
キー選択装置２２０は、第２のキーＫ２から第３のキー（Ｋ３で示す）を生成するためのキー選択関数Ｓ（）を実行する。等式はＫ３＝Ｓ（Ｋ２）という形をとる。キー選択関数Ｓ（）は、所望の対称暗号で使用できるほど十分に小さい対称暗号キーになるようにＫ３を生成する。一実施形態では、生成される第３のキーＫ３がロード済みソフトウェア・コードのための対称暗号キー２４０である。前述のように、キー選択装置２２０は、より大きなロード済みソフトウェア・コード・キー２３０から適切なサイズ（例えば、１１２、１６８、１２８または２５６ビット）の対称暗号キー２４０（Ｋ３）を選択するキー選択関数Ｓ（）を適用して、ロード済みソフトウェア・コードのための対称暗号キー２４０を生成する。Ｓ（）関数については、本特許の残りの部分でも、プロセッサ・ナブ暗号キー、ＯＳナブ暗号キー、アプレット暗号キーなどの暗号キーの選択を説明するために触れる。これらについては後で詳述する。
【００４８】
したがって、現在、分離実行環境の制御下にあるあらゆるロード済みソフトウェア・モジュールは、少なくとも２つのキー、ロード済みソフトウェア・コード・キー２３０、およびロード済みソフトウェア・コードのための対称暗号キー２４０を有する。ソフトウェア・モジュールが複数の暗号化アルゴリズムを使用している場合、そのソフトウェア・モジュールは、形態が対称暗号キー２４０と同様の複数の対称暗号キーを有する場合がある。ロード済みソフトウェア・コード・キー２３０から選択できるキーが１つしかない場合、その長い方のキーの１つまたは複数の互いに素なセグメントの排他的論理和をその選択に使うことができる。ただし、それらのセグメントは所望のキーの長さである。生成すべき暗号キーが複数ある場合は、キー生成の対象であるアルゴリズムに固有の、ランダムに生成された大きな値をキーとして使用し、Ｓ（）にＨＭＡＣのような関数を使用することができる。
【００４９】
キーの階層
図３は、本発明の一実施形態による、キー階層３０１を生成するプロセス３００を示す図である。プロセス３００がキー階層３０１を生成する。このキー階層３０１は、前述のように、暗号キー作成装置２００が生成した複数の対称キーを含む。このキーは、分離実行において動作する特定のコードに秘密を結び付けるために使用される。
【００５０】
分離実行域（例えば、図１Ａおよび１Ｂに示す分離実行リング０  １５および分離実行リング３  ４５）は層の中に存在する。特に分離実行および以下の説明に関連するものは、プロセッサ・ナブ１８、ＯＳナブ１６、およびアプレット４６である（前に、本特許の「アーキテクチャの概要」の図１Ａおよび１Ｂを参照して詳説した）。最初にプロセッサ・ナブ１８がロードされ、分離実行環境を制御する。プロセス３００は、最初に、キー生成装置２１０でプロセッサ・ナブ・キー（ＰＮＫ）３２５を生成する。キー生成装置２１０は、初期キー（ＩＫ）３１０およびプロセッサ・ナブＩＤ（ＰＮＩＤ）３２０を入力として使用する。キー生成装置２１０は、次のような生成関数を実行する。すなわちＰＮＫ＝Ｇ（ＩＫ、ＰＮＩＤ）。ここで、ＩＫ３１０はプラットフォームに固有の初期キーであり、ＰＮＩＤ３２０は、プロセッサ・ナブのＩＤである。前述のように、生成関数Ｇ（）は暗号ハッシュ関数でもよい。ＩＤは、上述のように、コード自体のハッシュ、またはある証明されたＩＤ値でもよい。しかし、証明された値である場合は、プロセッサ・ナブ・ローダがそのＩＤ値を有する証明書の妥当性検査を行うことができなければならない。
【００５１】
次に、プロセス３００は、キー選択装置２２０を使ってプロセッサ・ナブ暗号キー（ＰＮＣＫ）３２７を生成する。キー選択装置２２０は、次のようなキー選択関数を実行する。すなわちＰＮＣＫ＝Ｓ（ＰＮＫ）。ここで、ＰＮＫ３２５は、プロセッサ・ナブ・キーである。前述のように、キー選択関数Ｓ（）は、所望の対称暗号で使用できるほど小さい暗号キーを生成する。例えば、キー選択装置２２０は、キー選択関数Ｓ（）を適用して、ＰＮＫ３２５から適切なサイズ（例えば１１２、１６８、１２８または２５６ビット）の対称キーＰＮＣＫ３２７を選択する。プロセッサ・ナブ１８は、ＰＮＣＫ３２７を使って、ＯＳナブ１６、アプレット４６、および非分離実行コードからその秘密を保護する。
【００５２】
一実施形態では、初期キー（ＩＫ）３１０は、外部ハードウェアの乱数発生器によって生成され、製造時に、入出力コントローラ・ハブ（ＩＣＨ）１５０（図１Ｃ）のヒューズにプログラムされる。別の実施形態では、プラットフォーム自体が、最初にパワーアップしたときに、プラットフォームの内部ハードウェアである乱数発生器１６６（図１Ｃ）を使ってＩＫ３１０を生成し、次いで、そのＩＫ３１０は、ＩＣＨ１５０内の暗号キー記憶域１５５（図１Ｃ）の不揮発性メモリ中に記憶される。この実施形態は、製造中にＩＫ３１０が漏洩する機会を減らす。どちらの場合も、ＩＫ３１０は暗号キー記憶域１５５の保護不揮発性メモリ中に記憶される。しかし、プラットフォームの他の区域内の保護不揮発性メモリにＩＫ３１０を記憶することが可能であることを認識されたい。
【００５３】
他のソフトウェア・モジュール（例えば、ＯＳナブ１６、アプレット４６など）が分離実行域中にロードされると、新しくロード済みモジュールのキーがローディング・モジュールのキーに取って代わる。しかし、ＩＫ３１０は取って代わられることはなく、そのロケーションが読まれることを防ぐハードウェア設定フラグの設定によって、アクセス不能になっている。このフラグは、分離域の全域再初期化によってのみクリアされる。生成されたキーは、上書きされ、したがって利用不能になる。
【００５４】
前述のように、プロセッサ・ナブ１８が最初にロードされると、プロセス３００は、プロセッサ・ナブ・キー（ＰＮＫ）３２５およびプロセッサ・ナブ暗号キー（ＰＮＣＫ）３２７を作成させる。プロセッサ・ナブが、それのみがアクセス可能ないずれかの秘密を記憶する必要がある場合は、ＰＮＣＫ３２７をその目的のための暗号キーとして使用することができる。プロセッサ・ナブがＯＳナブ１６をロードして、それに制御を移すことを決定すると、前述のＰＮＫ３２５およびＰＮＣＫ３２７を生成するためのプロセス３００と同じプロセスを利用して、ＯＳナブ・キー（ＯＳＮＫ）３３５およびＯＳナブ暗号キー（ＯＳＮＣＫ）３３７が生成される。さらに、ＯＳＮＫ３３５およびＯＳＮＣＫ３３７は、暗号キー記憶域中のＰＮＫ３２５およびＰＮＣＫ３２７に取って代わる。ＯＳナブは、ＯＳＮＣＫ３３７を使用して、その秘密を他のＯＳナブ、アプレット、および非分離実行コードから保護する。このとき、このＯＳナブが将来、使用できるように利用可能にするべき秘密がある場合は、ＯＳＮＣＫ３３７によって暗号化することが可能である。しかし、ＰＮＣＫ３２７のもとで暗号化した秘密は、このプラットフォームにロードされるＯＳナブまたはその他のソフトウェアには利用できない。
【００５５】
このプロセス３００は、ソフトウェア・コード・ローディングの任意およびすべての層について、逐次的に繰り返すことができる。図３は、プロセッサ・ナブ、ＯＳナブ、アプレット−１、およびアプレット−１のサブプロセスの４層を示す。プロセス３００は、前述のプロセッサ・ナブおよびＯＳナブ・キーを生成するためのプロセス３００と同じプロセスを利用して、アプレット−１およびアプレット−１のサブプロセス・キー（Ａ１ＳＫ）３５５のためのアプレット−１キー（Ａ１Ｋ）３４５およびアプレット−１暗号キー（Ａ１ＣＫ）３４７、およびアプレット−１のサブプロセスのためのアプレット−１サブプロセス暗号キー（Ａ１ＳＣＫ）３５７を生成する。キー階層３０１およびプロセス３００は例にすぎず、その他のキー階層、およびそれらのキー階層を作成するプロセスも、分離実行環境で秘密を保護するために可能であることを認識されたい。
【００５６】
データのバックアップおよび復元のための別の実施形態
図４は、本発明の一実施形態による、データのバックアップおよび復元を可能にする初期キーを保存するシステム４００を示す図である。
【００５７】
上述のように、初期キー（ＩＫ）３１０は各プラットフォームに一意のものであり、そのプラットフォーム中にロックされる（すなわち、暗号キー記憶域１５５（図１Ｃ）の保護不揮発性メモリ中に永久的に記憶されている）。残念なことに、この実施形態では、ＩＫ３１０をバックアップまたは復元する方法はない。本発明の別の実施形態では、図４に示すように、ＩＫ３１０のバックアップおよび復元が可能である。これは、貴重な秘密をプラットフォームに束縛し、次に、いつかハードウェアをアップグレードしたいと考えるユーザにとっては望ましい。プラットフォームの所有者がより新しい、より高速なハードウェアを使用することを決定するとアップグレードが生じる。あるいは、プラットフォームに突然の大きな故障が発生して交換が必要になるとアップグレードが生じる。
【００５８】
この実施形態では、新しい初期キー（ＩＫ）３１０が生成された場合（復元された場合ではなく）にはいつでもクリアされる、キー保存済みフラグ４０２が不揮発性メモリ内にある。このフラグがクリアされている限り、暗号化装置４０４は、ＩＫ３１０を暗号化することができる。暗号化装置４０４は、ユーザ（おそらくプラットフォーム所有者）が提供する暗号キー４２０を使って、ＩＫ３１０を暗号化する暗号化関数を実行する。暗号化の結果は、保存済みＩＫ４１０である。保存済みＩＫ４１０は、誰でも読むことができる。特に、保存済みＩＫ４１０は、通常のバックアップ・ユーティリティでバックアップすることができる。保存済みＩＫ４１０が生成されると、ＩＫ３１０のそれ以降の保存を禁じるキー保存済みフラグ４０２が立てられる。
【００５９】
ユーザは、将来いつでも、該当する暗号キー４２０およびその前に保存されたＩＫ４１０を、復号関数を実行してＩＫ３１０を上書きする復号装置４３０に供給することができる。これによって、プラットフォームの所有者は、故障したプラットフォームを、そのプラットフォームの分離域中に束縛されていたすべての秘密を含めて交換することができる。暗号化装置４０４および復号装置４３０の暗号化関数および復号関数は、それぞれ、トリプルＤＥＳ（データ暗号化標準）またはＡＥＳ（ＮＩＳＴ（米国連邦情報技術局）が選択している新しい高度暗号化標準）などの一般に受け容れられている対称暗号関数でよい。
【００６０】
図５は、本発明の一実施形態による、キー階層を生成するプロセスをさらに示す流れ図である。
【００６１】
「開始」すると、プロセス５００は、（例えば乱数に基づき）プラットフォームに一意の初期キーを生成する（ブロック５１０）。次いで、プロセス５００は初期キーを記憶する（ブロック５２０）。次に、プロセッサ５００は、プロセッサ・ナブのＩＤを使って初期キーをハッシュすることにより、プロセッサ・ナブ・キーを作成する（ブロック５３０）。次いで、プロセス５００は、プロセッサ・ナブ・キーに基づいてより小さいプロセッサ・ナブ暗号キーを選択する（ブロック５４０）。ブロック５５０で、プロセス５００は、ＯＳナブのＩＤを使ってプロセッサ・ナブをハッシュすることにより、ＯＳナブ・キーを作成する。次いで、プロセス５００は、ＯＳナブ・キーに基づいてより小さいＯＳナブ暗号キーを選択する（ブロック５６０）。次に、プロセス５００は、アプレットのＩＤを使ってＯＳナブ・キーをハッシュすることにより、アプレット・キーを作成する（ブロック５７０）。ブロック５８０で、プロセス５００は、アプレット・キーに基づき、より小さいアプレット暗号キーを選択する。次いで、プロセス５００は終了する。
【００６２】
本発明を例示的実施形態を参照して説明してきたが、この説明は、限定的な意味をもつものとして解釈されることを意図したものではない。本発明のその他の実施形態と同様に、例示的実施形態のさまざまな修正形態が、本発明が関係する当分野の技術者には明らかであろうが、それらは、本発明の趣旨および範囲内に含まれるものとみなされる。
【図面の簡単な説明】
【図１Ａ】  本発明の一実施形態によるオペレーティング・システムを示す図である。
【図１Ｂ】  本発明の一実施形態によるオペレーティング・システム中の様々なエレメントおよびプロセッサのアクセス可能性を示す図である。
【図１Ｃ】  本発明の一実施形態を実施することができるコンピュータ・システムを示す図である。
【図２】  本発明の一実施形態による暗号キー作成装置を示す図である。
【図３】  本発明の一実施形態による、キー階層を生成するプロセスを示す図である。
【図４】  本発明の一実施形態による、データのバックアップおよび復元を可能にするための初期キーを保存するシステムを示す図である。
【図５】  本発明の一実施形態による、キー階層を生成するプロセスをさらに示す流れ図である。
【図１Ａ】
0004822646.tif 000002
【図１Ｂ】
0004822646.tif 000003
【図１Ｃ】
0004822646.tif 000004
【図２】
0004822646.tif 000005
【図３】
0004822646.tif 000006
【図４】
0004822646.tif 000007
【図５】
0004822646.tif 000008