説明

セキュアなプラットフォーム間およびプラットフォーム内通信のためのシステムおよび方法

プラットフォーム上のローカルな通信、プラットフォーム間の通信、または時間を隔てた同一プログラム間の通信かどうかに関らず、ソースからデスティネーションに至るまで、機密情報を扱う通信(および通信をサポートする機能)の秘匿性および/または整合性を保護するシステムおよび方法が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施例は、概して、ネットワークセキュリティ分野に関する。本発明の実施例は、特に、プラットフォーム間およびプラットフォーム内通信のためのシステムおよび方法に関する。
【背景技術】
【0002】
コンピュータネットワークは、企業、公共機関、および個人によって広く使用されている。ソフトウェアプログラム(または単に、プログラム)は、コンピュータネットワークを介して情報を交換する。これらの通信の整合性および秘匿性を保護することは、今日のネットワーク化されたコンピュータ環境において非常に重要である。パスワード、暗号化鍵、または他の個人情報を平文で送信することは、明らかに、コンピュータシステムを敵対的な攻撃者によるセキュリティ侵害に対して脆弱にする。これは、デバッガ、マルウェア、または、攻撃者によってセキュリティ侵害されたシステム上の他のソフトウェアコンポーネントによって、鍵情報がメモリから取得されることができるためである。「鍵情報」は、広く、例えば、暗号化鍵、セッション鍵、パスワード、デジタル証明書、および/または、他の全ての機密情報を指す。
【0003】
コンピュータシステム内の機密情報を保護する従来の方法は、概して、仮想プライベートネットワーク(VPN)または専用ハードウェアに基づく。仮想プライベートネットワークは、特権モードで実行される他のソフトウェアコンポーネントによって侵害されることができるアプリケーションソフトウェアおよび/またはカーネルレベルドライバとして実装されるので、容易に回避または改ざんされることができる。
【0004】
ハードウェアによるソリューションは、トラステッドプラットフォームモジュール(TPM)、または、暗号化機能を実装するための専用コプロセッサを含んでもよい。トラステッドプラットフォームモジュールは、例えば、暗号化鍵、パスワード、および/またはデジタル証明書を格納するマイクロチップである。ハードウェアベースのセキュリティソリューションは、高価であり、他のシステムハードウェアから自身を隔離することを目的として、独立したハードウェアを使用する。更に、TPMは、概して、低帯域幅のシリアルバスを用いてチップセットに接続されるので、ネットワークトラフィックの暗号化/復号化のような、高帯域幅のデータ交換を必要とするアプリケーションには適さない。従って、従来のシステムは、ホストプロセッサ上で実行されるソフトウェア内のデータを暗号化するための、データと直接相互作用するプログラムに対してインラインであるような、コストエフェクティブ、セキュア、かつ耐タンパーな方法を欠いている。本発明の実施例は、同様の参照番号が同様の部材を指す添付図面を参照して説明されるが、添付図面によって限定されない。
【図面の簡単な説明】
【0005】
【図1】本発明の実施例により保護されうる種々の通信を示すブロック図である。
【図2A】本発明の実施例による、メモリの保護領域によって提供されるセキュリティ処理を使用するプログラムを示す第1の図である。
【図2B】本発明の実施例による、メモリの保護領域によって提供されるセキュリティ処理を使用するプログラムを示す第2の図である。
【図3A】本発明の実施例による、メモリの保護領域(例:システム管理ランダムアクセスメモリ)を初期化する方法の、特定の態様を示すフロー図である。
【図3B】本発明の実施例による、セキュアなプラットフォーム間およびプラットフォーム内通信のための方法に関する、特定の態様を示す第1のフロー図である。
【図3C】本発明の実施例による、セキュアなプラットフォーム間およびプラットフォーム内通信のための方法に関する、特定の態様を示す第2のフロー図である。
【図4】本発明の実施例による、アウトバウンドのパケットを暗号化するフレームワークを示すブロック図である。
【図5】複数の異なるネットワークレイヤにおいてネットワークセキュリティプロトコルをサポートする、本発明の実施例を示すブロック図である。
【図6】本発明の実施例により実装されるトランザクションを示すトランザクション図である。
【発明を実施するための最良の形態】
【0006】
プラットフォーム上のローカルな通信、プラットフォーム間の通信、または時間を隔てた同一プログラムによる通信かどうかに関らず、機密情報を扱う通信(および当該通信をサポートする機能)のソースからデスティネーションに至るまでの秘匿性および/または整合性を保護する、システムおよび方法が提供される。以下において詳細に説明されるように、本発明の実施例は、耐タンパーでありかつ機密情報を扱う環境において、データ(例:ネットワークトラフィック)に対するセキュリティ処理(例:暗号化)を実装することを目的として、ホストに存在するソフトウェアによって使用されうる。本発明の実施例は、また、これらのサービスを要求するプログラムのソースを、正しく識別および保護しうる。従って、本発明の実施例は、鍵情報をインラインの(更に秘匿された)プロセッサモード内で保護するための機構を提供しうる。以下において詳細に説明されるように、本発明の実施例は、プラットフォームコンポーネントとの通信の秘匿化、スプーフされない認証/承認の提供、および、起動間におけるプログラム内部状態の整合性の検証を目的として、ring−0プログラム(例:カーネルプログラム)によって使用されうる。
【0007】
説明を容易にするために、本発明の実施例は、ネットワーク上に送信されたデータの暗号化に関連して開示される。しかしながら、代替の実施例は、耐タンパーでありかつ機密情報を扱う環境において実行される必要がある、データに対するセキュリティ処理を対象としうる。例えば、本発明の実施例は、プラットフォーム間および/またはプラットフォーム内通信、および、プログラム間通信および/またはプログラム内通信の保護を対象としうる。
【0008】
図1は、本発明の実施例によって保護されうる種々の通信を示すブロック図である。図1は、プラットフォーム110および120を含む。「プラットフォーム」は、広く、データ処理を提供するハードウェア(例:プロセッサ)、ソフトウェア(例:オペレーティングシステム)、マイクロコード、チップセット、ファームウェア等を指す。参照番号130は、プラットフォーム間通信(例:プラットフォーム110と120の間)を示す。プラットフォーム110は、マイクロコントローラ・サブプラットフォーム112を含む。プログラム114(例:ホストプロセッサ上で実行される)とマイクロコントローラ・サブプラットフォーム112間におけるプラットフォーム内通信は、参照番号132によって示される。
【0009】
プログラム114および116は、ホストプロセッサ(図示されない)上で実行される2つのプログラムを表しうる。プログラムは、カーネルコンポーネント(例:ring−0プログラム)またはアプリケーションプログラム(例:ring−3プログラム)を指してもよい。プログラム間通信の例は、参照番号134によって示される、プログラム114と116間の通信である。ある実施例では、プログラム(例:プログラム114)は、自身のデータ構造および/または状態をセキュアに格納し、格納されたデータ構造および/または状態に対して長期にわたりセキュアにアクセス(例:コンテキストチェンジ間および/または処理起動間における自身の内部データ構造の整合性を定期的に確認)しうる。参照番号136は、プログラム114が自身のデータ構造および/または状態をセキュアに格納し、格納されたデータ構造および/または状態に対して長期にわたりセキュアにアクセスする、プログラム内通信の実施例を示す。
【0010】
本発明の実施例は、鍵情報と、データを暗号化/復号化するため、および/または、整合性を確認することを目的として鍵情報を用いる暗号化機能とを保護するために、システム管理モード(SMM)または類似の専用のプロセッサモードを用いてもよい。SMMは、パーティションされたメモリと、ホストシステム上で実行される他のプログラムに対して鍵情報が開示されることを防ぐコンテキストとを提供する。本発明の実施例は、鍵の格納および処理を目的として隔離された耐タンパーな環境を提供することによって、鍵情報のセキュリティを向上し、それによって、攻撃者による従来の攻撃ベクトルを介した鍵情報の取得を困難にする。
【0011】
SMM(または同様の)専用のプロセッサモードは、また、プログラムデータのセキュアな処理を提供しうる。「セキュリティ処理」は、広く、暗号化、復号化、承認、認証、整合性確認などのような、データのセキュリティを向上する処理を指す。SMMは、オペレーティングシステムに依存しない隔離された環境を提供する特別な処理モードである。プロセッサは、システム管理インタラプト(SMI)が、トリガーされて、他のプロセッサ処理モードで実行するソフトウェアからアクセス不可能なシステム管理ランダムアクセスメモリ(SMRAM)と称されるメインメモリのチップセット保護領域からコードおよびデータを実行した場合に、SMMにエンターする。
【0012】
参照を容易にするために、SMMおよび類似の専用のプロセッサモードは、集合的に管理モードと称される。ある実施例では、管理モードは、管理モードをトリガーしたプログラムから状態情報を取得する。一実施例では、プログラムは、管理モードを起動した場合、保存された状態マップまたは類似の構造を管理モードに提供する。保存された状態マップ(または類似の構造)は、管理モードにエンターしたときのプロセッサ状態に関する情報を提供する。例えば、管理モードで実行するプログラムは、起動したプログラムのプログラムカウンタを、保存された状態マップ(または類似の構造)から回復する。ある実施例では、これは、SMIをトリガーしたプログラムまでトラックバックされることができる、呼び出しのソースを検出する耐タンパーな方法を提供する。
【0013】
起動したプログラムコードの場所は、攻撃側プログラムによって上書きされることができるので、コード格納の整合性を検証または保護することが望ましい。ある実施例では、SMI通知のソースであるプログラムイメージは、適切なハードウェアまたはソフトウェアの技法を用いて認証される。プログラムイメージを認証する機構の例は、管理モード(例:SMM)または他の保護されたシステムコンポーネント(例:Navassa組込みプロセッサ)などからのイメージの検証を含み、これらに限定されない。
【0014】
図2Aから図2Bは、メモリの保護領域によって提供されるセキュリティ処理を使用するプログラムの起動を示す図である。図に示される実施例は、SMMおよびシステム管理ランダムアクセスメモリ(SMRAM)と関連して説明されうる。本発明の代替の実施例において、異なる管理モードおよび異なるメモリの保護領域が使用されうることが理解されるであろう。
【0015】
ある実施例では、SMRAM200は、正当なプログラム識別子(VPI)テーブル205、プログラム識別子(ID)から鍵識別子(PIKI)へのマッピングテーブル210、およびプログラムIDからプログラムカウンタ範囲(PIPC)へのマッピングテーブル215のデータ構造を含む。代替の実施例では、SMRAM200は、より多くのデータ構造、より少ないデータ構造、および/または異なるデータ構造を含んでもよい。
【0016】
ある実施例では、VPIテーブル205は、特定のプログラムを識別する方法に関する情報、およびメモリ内のプログラムイメージが正当であるかどうかを判定する方法に関する情報を含む。一実施例では、VPIテーブル205において識別されたプログラムは、SMMのセキュリティ処理の起動を許可されたプログラムである。一実施例では、VPIテーブル205は、セキュアチャネルを介して、トラステッドデータ格納220から提供される。あるいは、VPIテーブル205は、プラットフォームに対してセキュアなリモートOut−Of−Band(OOB)接続を提供することができる、組込み管理マイクロコントローラ(例:Intel社によって開発されたプロアクティブ/Navassaプラットフォーム)のようなローカルのトラステッドプラットフォームコンポーネントによって提供されうる。
【0017】
表1は、VPIテーブル205内に含まれうる多くのデータ構造を示す。代替の実施例では、データ構造は、別の名前を有してもよい。更に、本発明の代替の実施例では、より多くのデータ構造、より少ないデータ構造、および/または異なるデータ構造が使用されてもよい。
【表1】

【0018】
ある実施例では、PIKIテーブル210は、保護された鍵値と、鍵値を識別するために使用される鍵識別子とを含む。一実施例では、PIKIテーブル210は、特定の鍵情報を特定のプログラムに(例:PIDによって)関連付ける。ある実施例では、管理者225は、out−of−band提供処理230によってPIKIテーブル210を提供する。
【0019】
表2は、PIKIテーブル210に含まれうる多くのデータ構造を示す。代替の実施例では、データ構造は、別の名前を有してもよい。更に、本発明の代替の実施例では、より多くのデータ構造、より少ないデータ構造、および/または異なるデータ構造が使用されてもよい。
【表2】

【0020】
ある実施例では、PIPCテーブル215は、セキュリティ処理のようなSMMコンポーネント(または他のトラステッドエージェント)によって作成される。PIPCテーブル215は、特定のプログラムのホストメモリ内における場所を計算するため、および、プログラム状態をトラックするために使用されうる。表3は、PIPCテーブル215に含まれうる多くのデータ構造を示す。代替の実施例では、データ構造は、別の名前を有してもよい。更に、本発明の代替の実施例では、より多くのデータ構造、より少ないデータ構造、および/または異なるデータ構造が使用されてもよい。
【表3】

【0021】
図2Bは、本発明の実施例によるプログラムメモリ235を示す。「プログラムメモリ」は、ホストプロセッサ上で実行されるプログラムからアクセス可能なメモリ(例:ランダムアクセスメモリ(RAM))領域を指す。一実施例では、SMRAM200およびプログラムメモリ235は、共に、プロセッサのメインメモリの一部分であってもよい。代替の実施例では、SMRAM200は、ホストプロセッサのメインメモリ以外のメモリ領域内に実装されてもよい。
【0022】
ある実施例では、プログラムは、少なくとも一部分はプログラムデータテーブル(PDT240)を介して、SMMコンポーネント(例:SMM内に格納されたセキュリティプログラム)と通信する。SMMはプログラムメモリ235(およびオペレーティングシステムのメモリ)にアクセスできる高度に特権的なプロセッサモードであるので、SMMコンポーネントは、PDT240にアクセスしうる。PDT240は、プログラムデータに対して実行される特定のセキュリティ処理245を指定しうる。更に、PDT240は、プログラムデータの場所を指定しうる。例えば、図示される実施例では、データバッファポインタ(DBP)250は、データバッファ260を指し、整合性バッファポインタ(IBP)258は、整合性バッファ265を指す。更に、PDT240は、鍵識別子268を介して、プログラムデータを処理するために使用されるべき鍵情報を識別しうる。例えば、鍵識別子268は、例えばデータバッファ260内に格納されたデータを処理するために使用されうる、SMRAM200内に格納された鍵を識別しうる。
【0023】
表4は、PDT240内に含まれうる多くのデータ構造を示す。代替の実施例では、データ構造は、別の名前を有してもよい。更に、本発明の代替の実施例では、より多くのデータ構造、より少ないデータ構造、および/または異なるデータ構造が使用されてもよい。
【表4】

【0024】
PDT240は脆弱なメモリ領域に「存在」するので、ある実施例では、このデータ構造の整合性およびこのデータバッファ(例:データバッファ260および/または整合性バッファ265)の整合性が保証される必要がある。データの正当性を保証する1つの機構は、データ構造を所有する正当なプログラムのみがこれらのデータ構造を変更することを許可されるように保証することである。一実施例では、この機構は、プログラム開始通知とプログラム終了通知の間におけるPDT240に対する全ての正当な変更を、SMMコンポーネントに関連づけるプログラムによって実装される。この方法において、SMMコンポーネントは、PDT240が変更される前に実行しているプログラムをトラックすることができる。
【0025】
プログラム開始通知270は、プログラムがSMMコンポーネントによって提供されるセキュリティ処理を起動することを、SMMコンポーネントに通知する。ある実施例では、プログラム開始通知270は、プログラムが起動されたらすぐに、かつ、プログラムがPDT240の内部データ構造を変更し始める前に、プログラムまたはデバイスドライバによって発行される。一実施例では、プログラム開始通知270は、SMI通知である。ある実施例では、プログラム開始通知ハンドラ(図示されない)は、プログラム開始通知270を受信しうる。ハンドラは、例えば、プログラムカウンタが適切な範囲内にあり、かつ、この範囲内のプログラムのイメージが変更されていない場合に、テーブルエントリに対してプログラム開始通知(PSN)インジケータ218をTRUEに設定することによって、プログラムイメージを検証し、呼び出し側のソースをPIPCテーブル215に記録しうる。PSNハンドラがリターンした直後、プログラム/ドライバは、自身の内部データ構造を設定し、処理通知ハンドラ(図示されない)に対するインプットとして使用されうるPDTテーブル240を設定しうる。プログラム/ドライバは、(悪意のあるコードの実行を生じうる)コンテキストスイッチを回避することを目的としてこれを行う場合、インタラプトを無効化し、それによって、処理通知の前に悪意のあるコードがプログラムのデータまたは状態を変更することを防ぐ。
【0026】
「処理通知」は、プログラム/ドライバによるSMMコンポーネントに対するセキュリティ処理の提供要求(例:セキュアなデータを提供すること、および/または、プログラムデータを処理すること)を指す。ある実施例では、処理通知は、SMI通知と共に実装されうる。一実施例では、SMI通知は、SMIプログラム開始通知270の正常終了後にのみ、プログラムまたはデバイスドライバによって発行されうる。ある実施例では、この通知に対するSMIハンドラは、起動側のプログラムカウンタを、例えば保存済み状態マップ(SSM)から回復し、回復されたプログラムカウンタがPCB222とPCL224の間にあるPIPCテーブル215内のエントリを検索する。適合する範囲がPIPCテーブル215内に見つかった場合、SMIハンドラは、プログラム開始通知270が同一プログラムによって以前正常に起動されたことを意味するように、PIPCエントリに対するPSN値218がTRUEに設定されていることを確認しうる。PSN値218がTRUEである場合、ハンドラは、この通知の前にプログラムによって設定されたPDT240からデータを読み込み、提供された鍵ID268に対して指定された処理要求245を適用する。
【0027】
ある実施例では、処理要求245は、SMMコンポーネントに対するセキュリティ処理を指定する。セキュリティ処理は、機密データの取得を含んでもよい、および/または、プログラムデータに対するセキュリティ処理の起動を含んでもよい。セキュリティ処理の例は、暗号化処理、復号化処理、および/または、暗号化および/または復号化されたデータの整合性確認を含み、これらに限定されない。
【0028】
ある実施例では、暗号化処理は、ハンドラ(例:SMIハンドラ)に、PDTエントリのDBP250により参照されるバッファ(例:データバッファ260)に対して、選択された暗号化アルゴリズムを実行させうる。ある実施例では、暗号化コードは、選択された鍵ID268に対応する、SMRAM内に格納された鍵を使用する。SMMのリターンの際に、データバッファ260は、暗号化され、セキュアな通信の準備が整う。ある実施例では、鍵情報は、起動側のプログラムに漏洩されない。管理モードは、(例:起動側プログラムのプログラムイメージがメモリ内で検証済みの場合)起動側プログラムに代わって、正しい鍵情報(例:鍵ID268によって識別される)を使用する。
【0029】
ある実施例では、整合性確認処理は、ハンドラに、例えば整合性バッファポインタ(IBP)258によって参照される整合性バッファ265に対して、選択された整合性確認アルゴリズムを実行させうる。ある実施例では、ハンドラは、データマスクポインタ(DMP)252によって指定されたバッファ265の領域をスキップしうる。整合性確認アルゴリズムは、少なくとも部分的に、鍵ID268によって識別される関連するセッション鍵に基づいてもよい。一実施例では、整合性確認アルゴリズムの結果は、整合性バッファ265内に格納されるハッシュ方法認証コード(HMAC)において提供される。整合性確認アルゴリズムの例は、セキュアハッシュアルゴリズム1(SHA1)またはメッセージダイジェスト5(MD5)を含み、これらに限定されない。
【0030】
ある実施例では、復号化処理は、SMIハンドラに、DMP252によってマスクされた領域をスキップして、DBP250によって参照される1つ以上のバッファに対して復号化アルゴリズムを実行させうる。ある実施例では、SMM復号化コード(図示されない)は、鍵ID268に対応する、SMRAM200内に格納された鍵を使用しうる。SMMがリターンした際に、DBP250によって参照されるバッファは、復号化されて読み取り準備が整う、または、エラーコード(EC)272が、PDT240において適切なエントリに設定される。
【0031】
復号化処理と同様の方法で、DBP250によって参照されるデータバッファの整合性は、SMMコードによって検証されうる。整合性確認は、少なくとも一部は、IBP258によって参照される整合性バッファ内に提供されるHMACと、SMRAM200内に存在する鍵ID268に対する関連するセッション鍵値とに基づいてもよい。そして、整合性確認の成功または失敗は、対応するPDTエントリに対するPDTエラーコードEC272を介して、SMIを起動したプログラムに通知されることができる。
【0032】
ある実施例では、(例:公開/プライベート暗号化処理のための)プライベート鍵は、SMMによって保護されることができる。一実施例では、SMMコンポーネントは、公開/プライベート鍵ペアの作成のような、公開/プライベート処理を提供しうる。ある実施例では、SMM処理は、保護されたプライベート鍵を用いて、Diffie−Hellman変換を実行する。SMM処理は、鍵ID268によって識別されるプライベート鍵によってデータを暗号化しうる。同様に、SMM処理は、鍵ID268によって識別されるプライベート鍵を用いてデータを復号化しうる。
【0033】
ある実施例では、プログラム終了通知275は、プログラムが呼び出し側に対してリターンする前に、プログラムセグメントによるSMM機能の使用の終了を示すことを目的として、プログラムまたはデバイスドライバによって発行されうる。ある実施例では、プログラム終了通知275は、SMI通知である。この通知に対するハンドラ(例:SMIハンドラ)は、SSMの回復済みプログラムカウンタに適合するエントリに対して、PIPCテーブル215のPSN値をTRUEからFALSEにリセットする。一実施例では、SMMモジュールは、プログラム開始通知270が正規のプログラムイメージから再度正しく起動されるまで、このプログラムからの以降の処理通知に対して動作しない。これは、プログラムのデータ構造を変更し、SMI処理通知を起動する正規のプログラムコードの直前の命令にジャンプすることによって、他の悪意のあるプログラムがこのプログラムIDに対するSMMモジュールの回避を試みることを、効果的に締め出す。プログラム開始通知270とプログラム終了通知275の間の全ての処理通知を関連付けることによって、プログラムの作者は、プログラムの正当なイメージから起動された処理通知の前に実行された、通知270と通知275の間における全てのプログラムセグメントが許可されることを保証される。
【0034】
図3Aから図3Cを参照すると、本発明の実施例に関連する特定の方法は、フローチャートと関連して、コンピュータソフトウェアおよびハードウェアの形で説明される。コンピュータデバイスによって実行される方法は、コンピュータ実行可能な命令群を構成する、ステートマシンまたはコンピュータプログラムを備えてもよい。コンピュータ実行可能な命令群は、コンピュータプログラム言語によって書かれてもよい、または、ファームウェアロジックに組み込まれてもよい。広く認識された標準に準拠するプログラム言語によって書かれた場合、そのような命令群は、多くのハードウェアプラットフォームにおいて実行されることができる。更に、本発明の実施例は、特定のプログラム言語と関連して説明されるものではない。本願明細書において説明される本発明の実施例を実装することを目的として、多様なプログラム言語が使用されうることが理解されるであろう。更に、当該技術分野では、ソフトウェアは、いかなる形式(例:プログラム、手順、処理、アプリケーション等)においても、動作を実行するもの、または、結果を生じるものとして説明されるのが一般的である。そのような表現は、単に、コンピュータデバイスによるソフトウェアの実行がデバイスにある動作を実行させること、または、結果を生じさせることを簡潔に説明する方法である。
【0035】
図3Aから図3Cは、本発明の実施例による、セキュアなプラットフォーム間およびプラットフォーム内通信を目的とした方法の、選択された態様を示すフロー図である。図3Aから図3Cにおいて説明される方法は、図2Aから図2Bに関連して説明されたデータ構造と共に実装されうる。代替の実施例では、図3Aから図3Cにおいて説明される方法は、異なるデータ構造と共に実装されてもよい。
【0036】
図3Aは、本発明の実施例による、メモリの保護領域(例:図2Aに示されるSMRAM200)を初期化する方法の特定の態様を示すフロー図である。処理ブロック305を参照すると、VPIテーブル(例:図2Aに示されるVPIテーブル205)には、プログラム識別子情報がロードされる。一実施例では、VPIテーブルは、セキュアなout−of−bandチャネルを介してロードされる。処理ブロック310を参照すると、PIKIテーブル(例:図2Aに示されるPIKIテーブル210)には、鍵値(例:図2Aに示される鍵値212)、および、プログラム識別子(例:図2Aに示されるプログラムID216)に関連付けられた対応する鍵識別子(例:図2Aに示される鍵ID214)のような、機密情報がロードされる。
【0037】
処理ブロック315を参照すると、SMMモジュール(または他のトラステッドエージェント)は、プログラムメモリ(例:図2Bに示されるプログラムメモリ235)において、処理ブロック310において提供されたプログラムIDに対応するプログラムを検索する。処理ブロック320を参照すると、SMMモジュールは、発見された各プログラムの関連するプログラムIDに対して、プログラムカウンタベース(PCB)(例:図2Aに示されるPCB222)およびプログラムカウンタリミット(PCL)(例:図2Aに示されるPCB224)を設定する。
【0038】
図3Bから図3Cは、本発明の実施例による、セキュアなプラットフォーム間およびプラットフォーム内通信を目的とした方法の、特定の態様を示すフロー図である。処理ブロック325を参照すると、プログラム開始通知(例:図2Bに示されるプログラム開始通知270)は、SMMをトリガーする。SMMモジュールは、処理ブロック330において、例えば保存済み状態マップから、プログラムカウンタを回復する。処理ブロック335を参照すると、SMMモジュールは、PIPCテーブル内で、プログラム開始通知を送信したプログラムに対応するエントリを検索する。ある実施例では、エントリが見つかった場合、SMMモジュールは、処理ブロック340において、回復されたプログラムカウンタがPCBとPCLの間にあるかどうかを確認する。回復されたプログラムカウンタがPCBとPCLの間にあるかどうかを確認することは、プログラム開始通知が実際にプログラムによって送信されたものであり、悪意のあるソフトウェアによって送信されたものではないことを保証することを補助する。いくつかの実施例では、SMMモジュールは、処理ブロック345において示されるように、(例:ハッシュ値を計算し、計算されたハッシュ値とVPIテーブル内に格納された予め定められたハッシュ値とを比較することによって)呼び出し側プログラムイメージがVPIテーブル内のエントリと一致するかどうか再検証する。
【0039】
処理ブロック350を参照すると、プログラム開始通知フラグは、trueに設定され、制御は、起動したプログラムに戻される。ある実施例では、起動したプログラムは、ここで、プログラムデータテーブル(PDT)(例:図2Bに示されるPDT240)内のデータを変更することが可能となる。処理ブロック355において、プログラムは、バッファの場所を(図2Bに示されるDBP250およびIBP258により)更新し、適切な鍵識別子(例:図2Bに示される鍵識別子268)を提供する。プログラムは、処理ブロック360において、バッファに関連する処理(例:バッファの割り当て等)を完了する。処理ブロック365を参照すると、プログラムは、処理通知(例:SMI通知)をトリガーし、制御をSMMに戻す。
【0040】
処理ブロック370を参照すると、SMMモジュールは、保存済み状態マップ(SSM)からプログラムカウンタを回復する。SMMモジュールは、375において、PIPCテーブル内で、起動したプログラムに対応するエントリをサーチする。処理ブロック376を参照すると、SMMモジュールは、回復されたプログラムカウンタが、呼び出し側プログラムに対応するPIPCテーブルのエントリに記録されたように、PCBとPCLの間にあるかどうかを決定する。一実施例では、PCBとPCLに許可される範囲は複数存在しうる。そのような実施例では、SMMモジュールは、プログラムカウンタがPCBとPCLに対して許可された複数の範囲のうちの1つに収まるかどうかを判定する。処理ブロック378を参照すると、SMMモジュールは、呼び出し側プログラムのPIPCテーブルエントリのプログラム開始通知フラグがTRUEに設定されているかどうかを決定する。ある実施例では、処理ブロック376または378において確認される条件のいずれかがTRUEでない場合、SMMモジュールは、処理ブロック380において、適切なエラーコード(例:図2Bに示されるエラーコード272)を設定し、制御を呼び出し側プログラムに戻す。処理ブロック382を参照すると、SMMモジュールは、処理要求(例:図2Bに示される処理要求245)によって指定されたように、処理を実行する。処理は、データバッファポインタ(図2Bに示されるDPB250)によって参照されるデータバッファ内にあるデータに対して実行されうる。SMMモジュールは、データを処理することを目的として、対応するプログラムIDおよび鍵IDに対して、鍵値(図2Aに示される鍵値212)を使用しうる。ある実施例では、SMMモジュールは、データマスクバッファ(図2Bに示されるデータマスクバッファ256)によって指定された、マスクされた領域をスキップする。
【0041】
処理が正常終了した場合、SMMモジュールは、処理ブロック384において、エラーコードをNONEに設定し、制御を起動したプログラムに戻してもよい。処理ブロック386を参照すると、プログラムは、プログラムデータテーブルが承認されないプログラムによって変更されることを防ぐことを目的として、プログラム終了通知を送信しうる。SMMモジュールは、処理ブロック388において、呼び出し側プログラムのプログラムカウンタを回復する。SMMモジュールは、390において、呼び出し側プログラムに対応するエントリをPIPCテーブル内で検索する。ある実施例では、SMMモジュールは、処理ブロック392において、呼び出し側プログラムのプログラムカウンタがPCBとPCLの間にあるかどうかを決定する。プログラム開始通知フラグは、処理ブロック394においてFALSEに設定され、制御は、396において、呼び出し側プログラムに戻される。ある実施例では、プログラムデータテーブルは、プログラム開始通知フラグがFALSEに設定されている間、変更されることができない。
【0042】
図4は、本発明の実施例による、アウトバウンドのパケットを暗号化するフレームワーク400を示すブロック図である。本発明の実施例を説明することを目的として、図4は、 フレームワーク400の伝送キューを参照する。図4のアウトバウンドキューに関連して説明された処理は、また、プラットフォーム400の受信側のインバウンドキュー(図示されない)に対して適応されうることが理解されるであろう。
【0043】
図に示されるフレームワーク400の実施例は、プロセッサ405、物理メモリ410、入出力(I/O)コントローラハブ415、およびメディアアクセスコントローラ(MAC)デバイス420を含む。プロセッサ405は、マイクロプロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、中央処理装置(CPU)、プログラム可能論理デバイス(PLD)、および、システムストレージ(例:メモリ410)からの命令群にアクセスし、デコードし、算術および論理処理を実行することによってこれらの命令群を実行する同様のデバイスを含んでもよい。
【0044】
物理メモリ410は、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、ランダムアクセスメモリ(RAM)、不揮発ランダムアクセスメモリ(NVRAM)、キャッシュメモリ、フラッシュメモリ、および他のメモリデバイスを含む、多様なメモリデバイスを有してもよい。ある実施例では、物理メモリ410は、SMRAM425およびドライバメモリ430を含む。一実施例では、SMRAM425およびドライバメモリ430は、同一のメモリデバイスの2つの領域である。代替の実施例では、SMRAM425およびドライバメモリ430は、独立したメモリデバイスとして実装される。
【0045】
一実施例では、I/Oコントローラハブ(ICH)415は、フレームワーク400と周辺機器I/Oデバイス間のインタフェース、および、フレームワーク400と、外部ネットワーク(図示されない)へのインタフェースを提供しうるMACデバイス420との間のインタフェースを提供しうる。
【0046】
ある実施例では、フレームワーク400は、以下に説明されるようにパケットを伝送する。ネットワークデバイスドライバ(図示されない)は、参照番号435によって示されるSMIプログラム開始通知を生成する。SMIハンドラは、デバイスドライバのプログラムカウンタを回復し、回復されたプログラムカウンタとPIPCテーブル440に格納された許可可能なプログラムカウンタ値の範囲と比較する。ある実施例では、デバイスドライバのアドレスは、回復されたプログラムカウンタから取得される。
【0047】
ネットワークデバイスドライバは、450において、伝送(例:インタラプトの無効化と共に)することを目的として、1つまたは複数のバッファ445を設定する。1つまたは複数のバッファ445が設定された後、ネットワークデバイスドライバは、参照番号455によって示されるように、「暗号」および/または「整合性生成」通知タイプの処理要求を指定するSMI処理通知を発生させる。SMIハンドラは、1つまたは複数のバッファ445内に格納された、伝送される準備が整ったフレームの物理アドレスを記録する。ある実施例では、PDT内のDBPは、1つまたは複数のバッファ445の物理アドレスを指定する。
【0048】
ある実施例では、SMIハンドラは、例えば、送信準備が整ったデータを保持する1つまたは複数のバッファ445に対して、暗号コード460および/または整合性生成コードを実行する。ある実施例では、1つまたは複数のバッファ445が適切に暗号化される、および/または、整合性HMACがPDT(図示されない)の整合性バッファポインタによって参照されるバッファにおいて生成される。そして、制御は、ネットワークデバイスドライバに戻される。ある実施例では、デバイスドライバは、1つまたは複数のバッファ445に格納されたフレームをMACデバイス420に送信することを目的として、ダイレクトメモリアクセスを使用する。参照番号465は、ダイレクトメモリアクセスを介して、MACデバイス420に送信されるバッファされたデータを示す。MACデバイス420は、1つまたは複数のバッファ445から回復したデータを伝送した後に、完全な信号をプロセッサ405に対して送信する。ある実施例では、デバイスドライバは、伝送が完了した後に、SMIプログラム終了通知をトリガーする。
【0049】
図4に示されるように(例:参照番号435、450、および455)、本発明の実施例は、プラットフォーム内通信およびプラットフォーム間通信を提供しうる。プラットフォーム内通信の一つの例は、セキュリティコンポーネントの存在を確立することを目的とした、ホスト上のセキュリティソフトウェアと、プラットフォーム(プロアクティブ/Navassa)の組込み管理プロセッサ上のファームウェアセキュリティエージェントとの間における認証されたハートビートメッセージである。
【0050】
標準的なハートビート通信は、プラットフォーム上のセキュリティエージェントの存在を確立する。この通信は、機密情報を扱うものであり、ある実施例では、スプーフィングに対して保護されうる。この通信は、例えば、ダイレクトメモリアクセスまたは専用管理バスのような、いかなる媒体を介してもよい。ある実施例では、(上記に説明された通り)整合性確認および/または暗号化処理は、耐タンパーでありかつ機密情報を扱う環境におけるハートビートメッセージに対して適用されうる。組込み管理プロセッサは、ハートビートメッセージを検証できるように、鍵を設定しうる。ある実施例では、使用される鍵は、ハートビートによって存在が確立されたセキュリティソフトウェアに対して漏洩されない。この場合、通信するエンドポイントは、ホストソフトウェア、および、組込み管理コントローラ上の管理ソフトウェアでありうる。同様の概念が、機密情報を扱うプログラム間通信の秘匿化、または、単一プログラムのデータに関する整合性保護(この単一のプログラムがデータ交換のソースかつデスティネーション)に用いられることができる。一実施例では、代替実施例における反射攻撃を防ぐことを目的として、鍵と連動してランダムなナンスが使用されうる。
【0051】
図4(例:参照番号435および452)に示されるように、本発明の実施例は、プログラム内通信およびプログラム間通信を提供しうる。ある実施例では、プログラムは、カーネルコンポーネント(例:ring−0プログラム)である。一実施例では、プログラムは、アプリケーション(例:ring−3プログラム)である。プログラムがアプリケーションである、ある実施例では、保護された通信は、プロセス間および/またはプロセス内通信として称されうる。例えば、ある実施例では、プログラムは、データおよび状態を所有するプログラムに認識されずに他のプログラムがデータまたは状態を変更できないように、自身のデータおよび状態を起動間で保護しうる。
【0052】
そのような実施例では、「正規の」プログラムは、同一(または他の)正規のプログラムのみがデータにアクセスできるように、データを暗号化および復号化することによってデータを隠蔽および開示することを目的として、SMM保護鍵を使用しうる。代替の実施例では、プログラムは、プログラムが起動された場合に以前の起動からデータが変更されていないことを確認することを目的として、内部プログラム状態のHMACを計算することによって自身の状態の整合性を確認するために、SMM保護鍵を使用することができる。プログラムがリターンする前に、プログラムは、次の起動時に検証されるべき自身の内部状態または他のデータのための新規HMACを生成することを目的として、SMIを発行しうる。あるいは、プログラムは、自身の内部データ構造に対してハッシュ値またはランニングチェックサムを作成し、署名するため、または、自身のデータ構造に対してハッシュ/チェックサムを生成したプログラムの整合性を保護するために、単にSMMコンポーネントを使用することができる。そのような実施例では、プログラムは、SMIプログラム終了通知の前かつSMIプログラム開始通知の後に、自身の内部データ構造のハッシュ/チェックサムを計算する。処理通知は、このハッシュ/チェックサムが使用される前にその整合性を確認するために使用されることができる。そして、プログラムが自身のデータ構造の変更とそのハッシュ/チェックサムの更新を完了した後、新規の整合性HMACが再び生成されうる。ある実施例では、整合性検証におけるエラーは、PDT(例:図2Bに示されるPDT240)のエラーコードを介して呼び出し側プログラムにレポートされる。
【0053】
図5は、複数の異なるレイヤにおいてネットワークセキュリティプロトコルをサポートする、本発明の実施例を示すフレームワーク500である。ある実施例では、フレームワーク500は、ネットワークレイヤセキュリティ(例:インターネットプロトコルセキュリティ(IPSEC)、トランスポートレイヤセキュリティ(TLS)、および/またはアプリケーションレイヤセキュリティー)をサポートしうる。
【0054】
一実施例では、ネットワークドライバ510は、多様なネットワークレイヤプロトコル522−526から受信されたフレーム記述子に、追加のメタデータ(例532、534、および536)の「タグ」を付す。これらのタグは、また、SMRAMにおいて(鍵と共に)予め提供され、例えば、どの暗号化アルゴリズムを使用するのか、どの鍵を使用するのか、およびどのレイヤを暗号化するのかを決定することを目的として、SMIハンドラによって使用される。ある実施例では、上位プロトコルレイヤ(例:プロトコルレイヤ522から526)は、また、攻撃者がフレームをセキュアなセッションに入力することを防ぐことを目的として、ネットワークドライバ510への呼び出し時に、ソースが検証される。
【0055】
図6は、本発明の実施形態により実装されるトランザクション600を示すトランザクション図である。トランザクション600は、ホストネットワークデバイスドライバ605、ホスト物理メモリ610、SMIハンドラ615、およびネットワークコントローラ620を含む。ある実施例では、デバイスドライバ605は、SMIハンドラ615に、プログラム開始SMI通知625を送信させる。SMIハンドラ615は、例えば、保存済み状態マップ(図示されない)によって、デバイスドライバ605を、トランザクションのソースのプログラムとして識別しうる。SMIハンドラは、参照番号630において、制御をデバイスドライバ605に戻す。
【0056】
ある実施例では、デバイスドライバ605は、632によって示されるように、トランザクション600中のコンテキストスイッチに対して保護することを目的として、インタラプトを無効化しうる。そして、デバイスドライバ605は、634によって示されるように、伝送される準備が整ったフレームバッファを、First In First Out(FIFO)キュー(キューは図示されない)に伝送しうる。一実施例では、インタラプトは、636によって示されるように、FIFOキューがロードされた場合に有効化される。そして、デバイスドライバ605は、638によって示されるように、暗号化処理SMI通知をSMIハンドラ615に送信しうる。
【0057】
SMIハンドラ615は、ソースプログラムカウンタがデバイスドライバ605に対応することを確認することを目的として、ソースプログラムカウンタを再確認する。ある実施例では、SMIハンドラ615は、例えば、SMRAM内に格納された鍵情報を使用するデバイスドライバ605に対するプログラムデータテーブルにおいて指定されるデータを暗号化する。SMIハンドラ615は、処理SMIリターン640により制御をデバイスドライバ605に戻しうる。デバイスドライバ605は、参照番号645によって示されるようにパケットの送信準備が整ったことを示すことを目的としてネットワークコントローラ620に通知しうる。ネットワークコントローラ620は、例えば、パケットをホスト物理メモリ内のネットワークインタフェースカードメモリに送信するために、ダイレクトメモリアクセスを使用しうる。ある実施例では、ネットワークコントローラ620は、650において、パケットが送信されたことをデバイスドライバ605に通知する。
【0058】
本発明の実施例の要素は、また、マシン実行可能な命令群を格納するためのマシンアクセス可能な媒体として提供されうる。マシンアクセス可能な媒体は、マシン(例:コンピュータ、ネットワークデバイス、パーソナルデジタルアシスタント、製造ツール、1つ以上のプロセッサのセットを有する全てのデバイスなど)によってアクセス可能な形態で情報を提供(例:格納および/または伝送)する、全ての機構を含む。例えば、マシンアクセス可能な媒体は、記録可能/記録不可能な媒体(リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス等)、および、電気、光、音、または他の形態の伝播信号(例:搬送波、赤外線信号、デジタル信号等)などを含む。
【0059】
本願明細書における「一実施例」または「ある実施例」は、実施例に関連して説明された特定の機能、構造、または性質が、本発明の少なくとも一実施例に含まれることを意味する。従って、本願明細書における2つ以上の「ある実施例」、「一実施例」、または「代替の実施例」は、必ずしも全て同一の実施例を参照しない。更に、特定の機能、構造、または性質は、本発明の1つ以上の実施例において適切に組み合わされてもよい。
【0060】
同様に、本発明の実施形態に関する上記の説明では、1つ以上の発明の態様に関する理解を促進する形で発明内容を開示することを目的として、種々の機能が一実施例、図、またはその説明に組合せられることがあると理解されるべきである。しかしながら、当該開示方法は、特許請求される発明が、各請求項において明示的に記載されている内容よりも多くの機能を必要とするように解釈されるべきではない。添付の特許請求の範囲が示すように、発明の態様は、上記に開示された実施例の全ての機能よりも少ない機能に収まる。従って、添付の特許請求の範囲は、詳細な説明に明示的に組み込まれる。

【特許請求の範囲】
【請求項1】
ホストシステムのプログラムメモリにおいて実行されるソフトウェアプログラムからの処理通知に応じて、ホストオペレーティングシステムからアクセスできないメモリの保護領域を有する管理モードを起動することと、
前記管理モードが起動された場合、セキュリティ処理を前記メモリの保護領域から前記プログラムメモリにおいて実行されるソフトウェアプログラムに提供することと
を備え、
前記ホストオペレーティングシステムは、一時的に前記ホストシステムの制御を前記管理モードに譲る
方法。
【請求項2】
前記ソフトウェアプログラムがプログラムメモリ内で実行していることを示す開始通知に応じて、前記管理モードを起動することと、
前記ソフトウェアプログラムがプログラムメモリにおいて実行していることを示すために、前記メモリの保護領域に開始インジケータを設定することと
を更に備える請求項1に記載の方法。
【請求項3】
前記セキュリティ処理を前記メモリの保護領域から前記プログラムメモリにおいて実行する前記ソフトウェアプログラムに提供することは、
前記開始インジケータが設定されている場合、前記メモリの保護領域から前記プログラムメモリにおいて実行する前記ソフトウェアプログラムに対して前記セキュリティ処理を提供すること
を更に備える請求項2に記載の方法。
【請求項4】
前記ソフトウェアプログラムが前記開始通知を提供したことを検証すること
を更に備える請求項2に記載の方法。
【請求項5】
前記ソフトウェアが前記開始通知を提供したことを検証することは、
前記開始通知の受信に応じて、前記ソフトウェアプログラムのプログラムカウンタ値を取得することと、
前記プログラムカウンタ値を許可されたプログラムカウンタ値の範囲と比較することと
を備える請求項4に記載の方法。
【請求項6】
前記ソフトウェアプログラムの整合性を検証すること
を更に備える請求項4に記載の方法。
【請求項7】
前記ソフトウェアプログラムの前記整合性を検証することは、
前記ソフトウェアプログラムのイメージの少なくとも一部分のハッシュ値を計算することと、
前記ソフトウェアプログラムが変更されたかどうかを決定するために、前記計算されたハッシュ値を予め定められたハッシュ値と比較することと
を備える請求項6に記載の方法。
【請求項8】
前記ソフトウェアプログラムはカーネルプログラムである請求項1に記載の方法。
【請求項9】
前記カーネルプログラムはデバイスドライバである請求項8に記載の方法。
【請求項10】
前記セキュリティ処理を前記メモリの保護領域から前記プログラムメモリにおいて実行する前記ソフトウェアプログラムに対して提供することは、前記メモリの保護領域に格納された前記ソフトウェアプログラムに対するデータにアクセスすることを備える請求項1に記載の方法。
【請求項11】
前記メモリの保護領域に格納された前記ソフトウェアプログラムに対するデータにアクセスすることは、
前記ソフトウェアプログラムに対する鍵情報にアクセスすること
を備え、
前記鍵情報は、前記メモリの保護領域に格納される
請求項10に記載の方法。
【請求項12】
前記ソフトウェアプログラムに対する鍵情報にアクセスすることは、
暗号化処理のための暗号化鍵、および、整合性確認処理のためのセッション鍵のうちの少なくとも1つにアクセスすること
を備える請求項11に記載の方法。
【請求項13】
前記セキュリティ処理を前記メモリの保護領域から前記プログラムメモリにおいて実行する前記ソフトウェアプログラムに提供することは、
前記ソフトウェアプログラムのデータに対してセキュリティ処理を提供すること
を備える請求項1に記載の方法。
【請求項14】
前記ソフトウェアプログラムの前記データは、
前記ソフトウェアプログラムの状態情報、
前記ソフトウェアプログラムと同一の前記プロセッサ上で実行する第2のソフトウェアプログラムに送信される送信バッファデータ、
前記ホストシステムの他のプロセッサ上で実行する第2のソフトウェアプログラムに送信される送信バッファデータ、および、
他のホストシステム上で実行する第2のソフトウェアプログラムに送信される送信バッファデータ
のうちの少なくとも1つを備える請求項13に記載の方法。
【請求項15】
前記ソフトウェアプログラムのデータに対して前記セキュリティ処理を提供することは、
前記データを暗号化すること、
前記データを復号化すること、
前記データの整合性を確認すること、および、
前記データに整合性情報を追加すること
のうちの少なくとも1つを備える請求項13に記載の方法。
【請求項16】
前記データの前記整合性を確認することとは、
前記データのハッシュ値を計算することと、
前記計算されたハッシュ値を予め定められたハッシュ値と比較することと
を備える請求項15に記載の方法。
【請求項17】
セキュアチャネルを介して前記セキュリティ処理を開始すること
を更に備える請求項1に記載の方法。
【請求項18】
前記セキュアチャネルを介して前記セキュリティ処理を開始することは、
それぞれが前記管理モードを起動することを承認されているソフトウェアプログラムを識別する1つ以上のプログラム識別子を、前記メモリの保護領域に格納することと、
鍵情報を前記メモリの保護領域に格納することと
を備え、
前記鍵情報は、前記少なくとも1つ以上のプログラム識別子によって識別されるソフトウェアプログラムによりアクセスされる
請求項17に記載の方法。
【請求項19】
ソフトウェアプログラムからのセキュリティ処理の起動に応じてホストオペレーティングシステムが一時的にホストシステムの制御を前記セキュリティ処理に譲り、セキュアなメモリに存在する前記セキュリティ処理を起動する命令群を有する前記ソフトウェアプログラムの命令群を実行するホストプロセッサと、
前記ホストプロセッサと通信可能になるように接続された、前記ソフトウェアプログラムのデータを格納するプログラムメモリと
を備え、
前記セキュアなメモリは、前記ソフトウェアプログラムの前記データを処理する前記セキュリティ処理を提供するために、前記ホストオペレーティングシステムからは認識されず、前記プログラムメモリと通信可能になるように接続される
装置。
【請求項20】
前記ソフトウェアプログラムは、ネットワークデバイスドライバであり、前記プログラムメモリは、伝送データを格納する伝送バッファである請求項19に記載の装置。
【請求項21】
前記セキュリティ処理は、
前記伝送データの暗号化および前記伝送データの前記整合性確認のうちの少なくとも1つ
である請求項20に記載の装置。
【請求項22】
前記プログラムメモリから前記伝送データを受信し、ネットワークを介して他のホストシステムに前記伝送データを送信する、前記プログラムメモリと通信可能になるように接続されたネットワークインタフェース
を更に備える請求項20に記載の装置。
【請求項23】
装置によって実行された場合に、前記装置に処理を実行させる命令群を提供する電子的にアクセス可能な媒体を備え、
前記処理は、
ホストオペレーティングシステムは一時的にホストシステムの制御を管理モードに譲り、前記ホストシステムのプログラムメモリ内で実行されるソフトウェアプログラムからの処理通知に応じて、前記ホストオペレーティングシステムからアクセスできないメモリの保護領域を有する前記管理モードを起動することと、
前記管理モードが起動された場合、前記メモリの保護領域からセキュリティ処理を前記プログラムメモリ内で実行する前記ソフトウェアプログラムに提供することと
を備える製品。
【請求項24】
前記電子的にアクセス可能な媒体は、前記装置によって実行された場合に、前記装置により、更に、
前記ソフトウェアプログラムがプログラムメモリ内で実行していることを示す開始通知に応じて前記管理モードを起動させ、
前記ソフトウェアプログラムがプログラムメモリ内で実行していることを示すために、前記メモリの保護領域内の開始インジケータを設定させる
命令群を提供する請求項23に記載の製品。
【請求項25】
前記装置によって実行された場合に、前記装置に、前記メモリの保護領域から前記セキュリティ処理を前記プログラムメモリ内で実行する前記ソフトウェアプログラムに対して提供させる前記命令群は、前記装置に、
前記開始インジケータが設定されている場合、前記メモリの保護領域から前記セキュリティ処理を前記プログラムメモリ内で実行する前記ソフトウェアプログラムに対して提供させる
請求項24に記載の製品。
【請求項26】
前記電子的にアクセス可能な媒体は、前記装置によって実行された場合に、前記装置に、更に、
前記ソフトウェアプログラムが前記開始通知を提供したことを検証
させる命令群を提供する請求項24に記載の製品。
【請求項27】
前記装置によって実行された場合に、前記装置に、前記ソフトウェアプログラムが前記開始通知を提供したかどうかを検証させる前記命令群は、前記装置に、
前記開始通知の受信に応じて、前記ソフトウェアプログラムのプログラムカウンタ値を取得させ、
前記プログラムカウンタ値とプログラムカウンタ値の許可される範囲を比較させる
請求項26に記載の製品。
【請求項28】
前記電子的にアクセス可能な媒体は、前記装置によってアクセスされた場合、前記装置に、更に、
前記ソフトウェアプログラムの前記整合性を検証させる
命令群を提供する請求項26に記載の製品。
【請求項29】
前記装置によって実行された場合に、前記装置に、前記ソフトウェアプログラムの前記整合性を検証させる前記命令群は、前記装置に、
前記ソフトウェアプログラムのイメージの少なくとも一部のハッシュ値を計算させ、
前記ソフトウェアプログラムが変更されたかどうかを決定するために、前記計算されたハッシュ値を予め定められたハッシュ値と比較させる
請求項28に記載の製品。
【請求項30】
前記装置によって実行された場合に、前記装置に、前記メモリの保護領域から前記セキュリティ処理を前記プログラムメモリで実行する前記ソフトウェアプログラムに対して提供させる前記命令群は、前記装置に、
前記メモリの保護領域内に格納された、前記ソフトウェアプログラムの鍵情報にアクセスさせる
請求項23に記載の製品。
【請求項31】
前記装置によって実行された場合に、前記装置に、前記メモリの保護領域から前記セキュリティ処理を前記プログラムメモリで実行する前記ソフトウェアプログラムに対して提供させる前記命令群は、前記装置に、
前記ソフトウェアプログラムのデータに対してセキュリティ処理を提供させる
請求項23に記載の製品。
【請求項32】
前記装置によって実行された場合に、前記装置に、前記メモリの保護領域から前記セキュリティ処理を前記プログラムメモリで実行する前記ソフトウェアプログラムに対して提供させる前記命令群は、前記装置に、
前記データの暗号化、
前記データの復号化、および、
前記データの整合性確認
のうちの少なくとも1つを実行させる請求項31に記載の製品。
【請求項33】
前記電子的にアクセス可能な媒体は、前記装置によってアクセスされた場合、前記装置に、更に、
セキュアチャネルを介して前記セキュリティ処理を開始させる
命令群を提供する請求項23に記載の製品。
【請求項34】
前記装置によって実行された場合に、前記装置に、前記メモリの保護領域から前記セキュリティ処理を前記プログラムメモリで実行する前記ソフトウェアプログラムに対して提供させる前記命令群は、前記装置に、
前記メモリの保護領域内に、それぞれが前記管理モードの起動を承認されたソフトウェアプログラムを識別する、1つ以上のプログラム識別子を格納させ、
前記メモリの保護領域内に鍵情報を格納させ、
前記鍵情報は、前記1つ以上のプログラム識別子のうちの少なくとも1つによって識別されるソフトウェアプログラムによってアクセスされる
請求項33に記載の製品。
【請求項35】
ホストオペレーティングシステムが一時的にホストシステムの制御をセキュリティ処理に譲り、セキュアなメモリに存在する前記セキュリティ処理を起動する命令群を有するソフトウェアプログラムの命令群を実行するホストプロセッサと、
前記ホストプロセッサと通信可能になるように接続された、前記ソフトウェアプログラムのデータを格納するシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスと
を備え、
前記セキュアなメモリは、前記ソフトウェアプログラムの前記データを処理する前記セキュリティ処理を提供するために、前記ホストオペレーティングシステムからは認識されず、前記SDRAMデバイスと通信可能になるように接続される
システム。
【請求項36】
前記ソフトウェアプログラムはネットワークデバイスドライバであり、前記プログラムメモリは伝送データを格納する伝送バッファである請求項35に記載の装置。
【請求項37】
前記セキュリティ処理は、
前記伝送データの暗号化、および、
前記伝送データの前記整合性確認
のうちの少なくとも1つである請求項36に記載の装置。
【請求項38】
前記プログラムメモリから前記伝送データを受信し、ネットワークを介して他のホストシステムに前記伝送データを送信する前記SDRAMデバイスと通信可能になるように接続されたネットワークインタフェースを更に備える請求項36に記載のシステム。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図3C】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2008−500655(P2008−500655A)
【公表日】平成20年1月10日(2008.1.10)
【国際特許分類】
【出願番号】特願2007−515704(P2007−515704)
【出願日】平成17年6月24日(2005.6.24)
【国際出願番号】PCT/US2005/022577
【国際公開番号】WO2006/012341
【国際公開日】平成18年2月2日(2006.2.2)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】