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

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

Info

Publication number
JP2008500655A
JP2008500655A JP2007515704A JP2007515704A JP2008500655A JP 2008500655 A JP2008500655 A JP 2008500655A JP 2007515704 A JP2007515704 A JP 2007515704A JP 2007515704 A JP2007515704 A JP 2007515704A JP 2008500655 A JP2008500655 A JP 2008500655A
Authority
JP
Japan
Prior art keywords
program
memory
software program
data
protected area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007515704A
Other languages
English (en)
Other versions
JP4774049B2 (ja
Inventor
ダーハム、デービッド
ジマー、ヴィンセント
サヒタ、ラビ
ラジャゴパル、プリヤ
シュエスラー、トラビス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2008500655A publication Critical patent/JP2008500655A/ja
Application granted granted Critical
Publication of JP4774049B2 publication Critical patent/JP4774049B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

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

Claims (38)

  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に記載のシステム。
JP2007515704A 2004-06-29 2005-06-24 セキュアなプラットフォーム間およびプラットフォーム内通信のための方法およびプログラム Expired - Fee Related JP4774049B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/881,777 US20050289311A1 (en) 2004-06-29 2004-06-29 System and method for secure inter-platform and intra-platform communications
US10/881,777 2004-06-29
PCT/US2005/022577 WO2006012341A1 (en) 2004-06-29 2005-06-24 System and method for secure inter-platform and intra-platform communications

Publications (2)

Publication Number Publication Date
JP2008500655A true JP2008500655A (ja) 2008-01-10
JP4774049B2 JP4774049B2 (ja) 2011-09-14

Family

ID=35207467

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007515704A Expired - Fee Related JP4774049B2 (ja) 2004-06-29 2005-06-24 セキュアなプラットフォーム間およびプラットフォーム内通信のための方法およびプログラム

Country Status (6)

Country Link
US (1) US20050289311A1 (ja)
EP (1) EP1761837B1 (ja)
JP (1) JP4774049B2 (ja)
CN (1) CN100533333C (ja)
AT (1) ATE511672T1 (ja)
WO (1) WO2006012341A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070327A (ja) * 2007-09-18 2009-04-02 Panasonic Corp 情報端末及び情報端末の制御方法
US8694794B2 (en) 2009-09-29 2014-04-08 Lenovo (Singapore) Pte Ltd. Method for protecting a privilege level of system management mode of a computer system
JP2015512581A (ja) * 2012-03-19 2015-04-27 マイクロチップ テクノロジー インコーポレイテッドMicrochip Technology Incorporated 内蔵コントローラを介するシステムのためのセンサデータのセキュリティの向上
JP2016511872A (ja) * 2013-01-22 2016-04-21 アマゾン・テクノロジーズ、インコーポレイテッド 仮想化された環境における特権的な暗号サービス

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627086B2 (en) * 2004-10-11 2014-01-07 Telefonaktiebolaget Lm Ericsson (Publ) Secure loading and storing of data in a data processing device
US7594269B2 (en) * 2004-10-29 2009-09-22 Intel Corporation Platform-based identification of host software circumvention
US7739517B2 (en) * 2005-03-31 2010-06-15 Intel Corporation Hardware-based authentication of a software program
US7870565B2 (en) * 2005-06-30 2011-01-11 Intel Corporation Systems and methods for secure host resource management
US20070006307A1 (en) * 2005-06-30 2007-01-04 Hahn Scott D Systems, apparatuses and methods for a host software presence check from an isolated partition
US7669242B2 (en) * 2005-06-30 2010-02-23 Intel Corporation Agent presence monitor configured to execute in a secure environment
US7953980B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
US8839450B2 (en) 2007-08-02 2014-09-16 Intel Corporation Secure vault service for software components within an execution environment
US20070067590A1 (en) * 2005-09-22 2007-03-22 Uday Savagaonkar Providing protected access to critical memory regions
US7921463B2 (en) * 2005-09-30 2011-04-05 Intel Corporation Methods and apparatus for providing an insertion and integrity protection system associated with a wireless communication platform
US7698542B2 (en) * 2006-08-25 2010-04-13 Infineon Technologies Ag Circuit and method for comparing program counter values
US7802050B2 (en) * 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US7822207B2 (en) * 2006-12-22 2010-10-26 Atmel Rousset S.A.S. Key protection mechanism
US20080163375A1 (en) * 2006-12-28 2008-07-03 Savagaonkar Uday R Embedding and patching integrity information in a program file having relocatable file sections
DE102007045909A1 (de) * 2007-09-26 2009-08-06 T-Mobile Internationale Ag Verfahren zum Schutz vor Viren/Spam in Mobilfunknetzen
US8099718B2 (en) 2007-11-13 2012-01-17 Intel Corporation Method and system for whitelisting software components
US8266707B2 (en) 2008-02-28 2012-09-11 Intel Corporation Tamper resistant method, apparatus and system for secure portability of digital rights management-protected content
JP5466645B2 (ja) * 2008-08-22 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶装置、情報処理装置およびプログラム
US8843742B2 (en) * 2008-08-26 2014-09-23 Hewlett-Packard Company Hypervisor security using SMM
US8364601B2 (en) * 2008-12-31 2013-01-29 Intel Corporation Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain
US8819225B2 (en) * 2010-11-15 2014-08-26 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor
CN102065021B (zh) * 2011-01-28 2012-12-26 北京交通大学 基于NetFPGA的IPSecVPN实现系统及方法
US8839444B2 (en) * 2011-03-31 2014-09-16 Kaspersky Lab Zao Automatic analysis of software license usage in a computer network
US8875240B2 (en) 2011-04-18 2014-10-28 Bank Of America Corporation Tenant data center for establishing a virtual machine in a cloud environment
US10496824B2 (en) * 2011-06-24 2019-12-03 Microsoft Licensing Technology, LLC Trusted language runtime on a mobile platform
US9183031B2 (en) 2012-06-19 2015-11-10 Bank Of America Corporation Provisioning of a virtual machine by using a secured zone of a cloud environment
US10289570B2 (en) * 2015-12-24 2019-05-14 Mcafee, Llc Detecting data corruption by control flow interceptions
US11438155B2 (en) * 2017-01-24 2022-09-06 Microsoft Technology Licensing, Llc Key vault enclave
US10275367B2 (en) 2017-04-24 2019-04-30 Hewlett-Packard Development Company, L.P. Command source verification
CN115004634B (zh) * 2020-04-03 2023-12-19 Oppo广东移动通信有限公司 信息处理方法、装置、设备及存储介质
CN114595265A (zh) * 2020-12-04 2022-06-07 上海唯链信息科技有限公司 一种数据处理方法、装置、存储介质及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003104981A2 (en) * 2002-06-07 2003-12-18 Intel Corporation System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557798A (en) * 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5944821A (en) * 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US6105137A (en) * 1998-07-02 2000-08-15 Intel Corporation Method and apparatus for integrity verification, authentication, and secure linkage of software modules
JP4763866B2 (ja) * 1998-10-15 2011-08-31 インターシア ソフトウェア エルエルシー 2重再暗号化によりデジタルデータを保護する方法及び装置
CN1460208A (zh) 1999-10-25 2003-12-03 凤凰技术有限公司 使用主叫用户地址的安全软件smi调度
US6658515B1 (en) * 2000-01-25 2003-12-02 Dell Usa, L.P. Background execution of universal serial bus transactions
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
US7093118B2 (en) * 2001-06-27 2006-08-15 Intel Corporation System and method for external bus device support
JP2003281071A (ja) * 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003104981A2 (en) * 2002-06-07 2003-12-18 Intel Corporation System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070327A (ja) * 2007-09-18 2009-04-02 Panasonic Corp 情報端末及び情報端末の制御方法
US8694794B2 (en) 2009-09-29 2014-04-08 Lenovo (Singapore) Pte Ltd. Method for protecting a privilege level of system management mode of a computer system
JP2015512581A (ja) * 2012-03-19 2015-04-27 マイクロチップ テクノロジー インコーポレイテッドMicrochip Technology Incorporated 内蔵コントローラを介するシステムのためのセンサデータのセキュリティの向上
JP2016511872A (ja) * 2013-01-22 2016-04-21 アマゾン・テクノロジーズ、インコーポレイテッド 仮想化された環境における特権的な暗号サービス

Also Published As

Publication number Publication date
EP1761837A1 (en) 2007-03-14
EP1761837B1 (en) 2011-06-01
JP4774049B2 (ja) 2011-09-14
ATE511672T1 (de) 2011-06-15
CN100533333C (zh) 2009-08-26
US20050289311A1 (en) 2005-12-29
WO2006012341A1 (en) 2006-02-02
CN1961271A (zh) 2007-05-09

Similar Documents

Publication Publication Date Title
JP4774049B2 (ja) セキュアなプラットフォーム間およびプラットフォーム内通信のための方法およびプログラム
CN109858265B (zh) 一种加密方法、装置及相关设备
CN106815494B (zh) 一种基于cpu时空隔离机制实现应用程序安全认证的方法
KR101067399B1 (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
US9514300B2 (en) Systems and methods for enhanced security in wireless communication
JP6370722B2 (ja) データセンタへのプラットフォームの内包検証
US11374734B2 (en) Method and system for key distribution and exchange for data processing accelerators
KR100996784B1 (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
CN107567630B (zh) 受信输入/输出设备的隔离
US11233652B2 (en) Method and system to derive a session key to secure an information exchange channel between a host system and a data processing accelerator
US20080134321A1 (en) Tamper-resistant method and apparatus for verification and measurement of host agent dynamic data updates
WO2016074506A1 (zh) 应用程序完整性验证方法及网络设备
US20060005015A1 (en) System and method for secure inter-platform and intra-platform communications
US11392687B2 (en) Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
JP6951375B2 (ja) 情報処理装置、情報処理方法及びプログラム
US11609766B2 (en) Method and system for protecting data processed by data processing accelerators
EP3356987B1 (en) Securely writing data to a secure data storage device during runtime
US20230409700A1 (en) Systems and methods for managing state
CN111868723A (zh) 病毒免疫计算机系统和方法
Jiang et al. An effective authentication for client application using ARM trustzone
Jain et al. Security analysis of remote attestation
EP3525391A1 (en) Device and method for key provisioning
Wang et al. Coprocessor-based hierarchical trust management for software integrity and digital identity protection
CN116938463A (zh) 应用运行环境的可信性检测方法、设备及介质
Malipatlolla Sustainable Trusted Computing: A Novel Approach for a Flexible and Secure Update of Cryptographic Engines on a Trusted Platform Module

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100601

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100901

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100908

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100930

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101007

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101029

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110401

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110408

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110607

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110624

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4774049

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees