JP2005528690A - セキュア実行モード例外 - Google Patents

セキュア実行モード例外 Download PDF

Info

Publication number
JP2005528690A
JP2005528690A JP2004509788A JP2004509788A JP2005528690A JP 2005528690 A JP2005528690 A JP 2005528690A JP 2004509788 A JP2004509788 A JP 2004509788A JP 2004509788 A JP2004509788 A JP 2004509788A JP 2005528690 A JP2005528690 A JP 2005528690A
Authority
JP
Japan
Prior art keywords
security
address
security exception
register
sem
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.)
Pending
Application number
JP2004509788A
Other languages
English (en)
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2005528690A publication Critical patent/JP2005528690A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect

Abstract

セキュリティ例外を取り扱うための方法およびシステム。この方法は、セキュアメモリのベースアドレスにセキュリティ例外スタックフレーム(900)を作成することを含む。また、この方法は、フォールティングコードシーケンスアドレスおよび1つ以上のレジスタ値をセキュリティ例外スタックフレーム(900)に書き込むことと、複数のセキュリティ例外命令を実行することとを含む。

Description

本発明は、概して、コンピュータシステムに関し、さらに詳しく言えば、コンピューティングシステムにセキュリティを提供する方法に関する。
図1は、Windows(R)オペレーティングシステム(Microsoft Corp.、Redmond、WA)の実行時などに、X86プロセッサによって生成される例外スタックフレーム100の図である。例外ハンドラへのエントリ時、例外が生じたアプリケーションプログラム(すなわち、「フォールティングアプリケーション(faulting application)」)のすべてのレジスタが、コードセグメント(CS:code segment)、命令ポインタ(EIP:instruction pointer)、スタックセグメント(SS:stack segment)、スタックポインタ(ESP:stack pointer)レジスタ、およびEFLAGSを除いて保存される。これらのレジスタのコンテンツは、例外スタックフレーム100で利用可能である。
例外スタックフレーム100は、セグメント化アドレスSS:ESPで始まる。エラーコードは、例外スタックフレーム100のセグメント化アドレスSS:ESP+00hにある。フォールティングアプリケーションの命令ポインタ(EIP)レジスタのコンテンツは、例外スタックフレーム100のセグメント化アドレスSS:ESP+04hにある。フォールティングアプリケーションのコードセグメント(CS)レジスタのコンテンツは、例外スタックフレーム100のセグメント化アドレスSS:ESP+08hにある。フォールティングアプリケーションのフラグ(EFLAGS)レジスタのコンテンツは、例外スタックフレーム100のセグメント化アドレスSS:ESP+0Chにある。フォールティングアプリケーションのスタックポインタ(ESP)レジスタのコンテンツは、例外スタックフレーム100のセグメント化アドレスSS:ESP+10hにある。フォールティングアプリケーションのスタックセグメント(SS)レジスタのコンテンツは、例外スタックフレーム100のセグメント化アドレスSS:ESP+14hにある。ESP値およびSS値は、例外ハンドラへの関連するコントロール転送で特権レベルが変化すれば、例外スタックフレーム100に現れることに留意されたい。
セグメント化アドレスSS:ESP+04hにある、フォールティングアプリケーションの命令ポインタ(EIP)レジスタのコンテンツは、例外を発生したフォールティングアプリケーションにある命令をポイントする。セグメント化アドレスSS:ESP+10hにある、フォールティングアプリケーションのスタックポインタ(ESP)レジスタのコンテンツは、フォールト時間でのフォールティングアプリケーションのスタックフレームのアドレスである(すなわち、それをポイントする)。
セグメント関係の例外のエラーコードは、保護モードセレクタに非常に類似している。最上位の13ビット(ビット15:3)は、セレクタインデックスであり、ビット2は、テーブルインデックスである。しかしながら、リクエスタ特権レベル(RPL:requestor privilege level)の代わりに、ビット0およびビット1は、以下の一致を有する。すなわち、フォールトがプログラム外部のイベントによって生じたものであれば、ビット0(EXT)が設定され、セレクタインデックスがIDTのゲートディスクリプタを参照すれば、ビット1(IDT)が設定される。
図2は、Advanced Micro Devices,Inc.製のX86プロセッサにおいて使用されるSYSCALL/SYSRETターゲットアドレスレジスタ(STAR)200の図である。SYSCALL/SYSRETターゲットアドレスレジスタ(STAR)200は、「SYSRET CSセレクタおよびSSセレクタベース」フィールドと、「SYSCALL CSセレクタおよびSSセレクタベース」フィールドと、「ターゲットEIPアドレス」フィールドとを含む。
SYSCALL命令の実行前のある時点で、オペレーティングシステムは、適切なシステムサービスコードのコードセグメント(CS)の値を、SYSCALL/SYSRETターゲットアドレスレジスタ(STAR)200のSYSCALL CSセレクタおよびSSセレクタベースフィールドに書き込む。また、オペレーティングシステムは、実行予定のシステムサービスコード内にある第1の命令のアドレスを、SYSCALL/SYSRETターゲットアドレスレジスタ(STAR)200のターゲットEIPアドレスフィールドに書き込む。STARレジスタは、システムブート時に環境設定される。ターゲットEIPアドレスは、オペレーティングシステムのカーネルにある固定システムサービス領域をポイントするものであってよい。
SYSCALL命令の実行中、SYSCALL CSセレクタおよびSSセレクタベースフィールドのコンテンツは、CSレジスタにコピーされる。SYSCALL CSセレクタおよびSSセレクタベースフィールドのコンテンツに値「1000b」を加えたものが、SSレジスタにコピーされる。これによって、CSセレクタのインデックスフィールドが効果的にインクリメントされることで、結果的なSSセレクタは、CSディスクリプタの後、ディスクリプタテーブルにある次のディスクリプタをポイントする。EIPアドレスフィールドのコンテンツは、命令ポインタ(EIP)レジスタにコピーされ、実行予定の第1の命令のアドレスを指定する。
SYSCALL命令に対応するSYSRET命令実行前のある時点で、オペレーティングシステムは、呼び出しコードのコードセグメント(CS)の値を、SYSCALL/SYSRETターゲットアドレスレジスタ(STAR)200のSYSRET CSセレクタおよびSSセレクタベースフィールドに書き込む。SYSRET命令は、ECXレジスタから戻りEIPアドレスを獲得する。
本発明の1つの態様によれば、ある方法が提供される。この方法は、セキュアメモリ(保護されたメモリ)のベースアドレスにセキュリティ例外スタックフレームを作成することを含む。また、この方法は、フォールティングコードシーケンスアドレスおよび1つ以上のレジスタ値をセキュリティ例外スタックフレームに書き込むことと、複数のセキュリティ例外命令を実行することとを含む。
本発明の別の態様によれば、あるシステムが提供される。このシステムは、リクエストをモニタするように構成された1つ以上のセキュリティチェックユニットと、複数のセキュア格納位置とを含む。また、このシステムは、セキュリティカーネルを実行するように構成されたプロセッサを含む。1つ以上のセキュリティチェックユニットは、リクエストの1つ又は複数に応答してセキュリティ例外を生成するようにさらに構成される。プロセッサは、セキュアメモリ内のベースアドレスにセキュリティ例外スタックフレームを作成し、フォールティングコードシーケンスアドレスおよび1つ以上のレジスタセキュリティ例外スタックフレームに書き込むようにさらに構成される。セキュリティカーネルは、複数のセキュリティ例外命令を実行するように構成される。
本発明のさらなる別の態様によれば、機械読み取り可能媒体が提供される。機械読み取り可能媒体は、コンピュータシステムの設定で実行されるとき、この方法を実行する命令で構成される。
本発明のさらなる別の態様によれば、別の方法が提供される。この方法は、セキュリティ例外を受信することと、セキュリティ例外の受信に応答して、セキュアメモリのベースアドレスにセキュリティ例外スタックフレームを作成することとを含む。また、この方法は、フォールティングコードシーケンスアドレスおよび1つ以上のレジスタ値をセキュリティ例外スタックフレームに書き込むことと、複数のセキュリティ例外命令を実行することとを含む。
本発明は、添付の図面と組み合わせた以下の記載を参照することによって理解されてよく、図面において、参照番号が同様の要素は、それぞれ同様の要素を示す。
本発明は、さまざまな修正および別の形態が可能なものであるが、その具体的な実施形態が、例示的に図面に示され、本願明細書に記載される。しかしながら、本願明細書における具体的な実施形態の記載は、本発明を開示された特定の形態に限定することを意図したものではなく、むしろ、添付の特許請求の範囲内に定義したような本発明の趣旨および範囲内にあるすべての修正、均等物、および代替物に及ぶことが想定されていることを理解されたい。
以下、本発明の例示的な実施形態について記載する。明確にするために、本願明細書において、実際の実施例のすべての特徴が記載されているわけではない。言うまでもなく、このような実際の実施形態を開発するにあたって、システム関連の制約やビジネス関連の制約を踏まえるなど、実施例ごとにさまざまな判断を下して開発者らの意図する目的を達成していく必要があり、これは実施例によって異なることは認識されよう。さらに、このような開発作業は、複雑であり時間を要することもあるが、本願の開示内容を利用できる当業者らにとっては日常業務の一環であることも認識されよう。
図3は、CPU302、システムまたは「ホスト」ブリッジ304、メモリ306、第1のデバイスバス308(例えば、ペリフェラルコンポーネントインターコネクト、いわゆるPCIバス)、デバイスバスブリッジ310、第2のデバイスバス312(例えば、業界標準アーキテクチャ、いわゆるISAバス)、および4つのデバイスハードウェアユニット314A〜314Dを含むコンピュータシステム300の1つの実施形態の図である。ホストブリッジ304は、CPU302、メモリ306、および第1のデバイスバス308に結合される。ホストブリッジ304は、CPU302と第1のデバイスバス308との間の信号を変換し、メモリ306をCPU302および第1のデバイスバス308に動作可能に結合する。デバイスバスブリッジ310は、第1のデバイスバス308と第2のデバイスバス312との間に結合され、第1のデバイスバス308と第2のデバイスバス312との間の信号を変換する。CPU302は、セキュリティチェックユニット(SCU)316を含む。
以下に詳細に記載するように、SCU316は、メモリ(MEM)SCU316A、制御レジスタ(REG)SCU316B、および入出力(I/O)SCU316などの1つ以上の特殊化されたSCU316で具体化されてよい。MEM SCU316Aは、CPU302(すなわち、「ソフトウェア主導のアクセス」)と、さらに、さまざまなハードウェア主導のアクセスとによって発生する不正アクセスからメモリ306を保護する。REG SCU316Bは、不正アクセスから制御レジスタ(例えば、制御レジスタ508および/またはSEMレジスタ510)を保護する。I/O SCU316Cは、不正アクセスからI/O空間(例えば、I/Oポート)を保護する。
図3の実施形態において、デバイスハードウェアユニット314Aおよび314Bは、第1のデバイスバス308に結合され、デバイスハードウェアユニット314Cおよび314Dは、第2のデバイスバス312に結合される。デバイスハードウェアユニット314A〜314Dのうちの1つ以上は、例えば、ストレージデバイス(例えば、ハードディスクドライブ、フロッピードライブ、およびCD−ROMドライブ)、通信デバイス(例えば、モデムおよびネットワークアダプタ)、または入出力デバイス(例えば、ビデオデバイス、オーディオデバイス、およびプリンタ)であってよい。他の実施形態において、ホストブリッジ304は、図3に示すようなCPU302の一部であってよいことに留意されたい。
図4は、図3のコンピュータシステム300のさまざまなハードウェアおよびソフトウェアコンポーネント間の関係を示す図である。図4の実施形態において、メモリ306には、複数のアプリケーションプログラム400、オペレーティングシステム402、セキュリティカーネル404、およびデバイスドライバ406A〜406Dが格納されている。アプリケーションプログラム400、オペレーティングシステム402、セキュリティカーネル404、およびデバイスドライバ406A〜406Dは、CPU302によって実行される命令を含む。オペレーティングシステム402は、ユーザインタフェースと、ソフトウェア「プラットフォーム」とを与え、そのトップでアプリケーションプログラム400が動作する。また、オペレーティングシステム402は、例えば、ファイルシステム管理、プロセス管理、およびI/O制御を含む基本的なサポート機能を与えるものであってよい。
また、オペレーティングシステム402は、基本的なセキュリティ機能を与えるものであってもよい。例えば、CPU302(図3)は、X86命令セットの命令を実行するX86プロセッサであってよい。この状況において、CPU302は、上述したように、保護モードにおいて仮想メモリと物理メモリの保護の両方を与えるために、特殊化されたハードウェアエレメントを含んでよい。オペレーティングシステム402は、例えば、オペレーティングシステムのWindows(R)ファミリー(Microsoft Corp.、Redmond、WA)の1つであってよく、これは、保護モードにおいてCPU302を動作させ、保護モードにおいて仮想メモリとメモリ保護の両方を与えるために、CPU302の特殊化されたハードウェアエレメントを用いる。セキュリティカーネル404は、例えば、不正アクセスからメモリ306に格納されたデータを保護するために、オペレーティングシステム402によって与えられたセキュリティ機能より上位にある追加のセキュリティ機能を与える。
図4の実施形態において、デバイスドライバ406A〜406Dは、対応するデバイスハードウェアユニット314A〜314Dのそれぞれに動作的に関連付けられ、結合される。デバイスハードウェアユニット314Aおよび314Dは、例えば、「セキュア」デバイスであってよく、対応するデバイスドライバ406Aおよび406Dは、「セキュア」デバイスドライバであってよい。セキュリティカーネル404は、オペレーティングシステム402とセキュアデバイスドライバ406Aおよび406Dとの間で結合され、デバイスドライバ406Aおよび406Dと、対応するセキュアデバイス314Aおよび314Dのセキュリティ保護のために、アプリケーションプログラム400およびオペレーティングシステム402によるすべてのアクセスをモニタしてよい。セキュリティカーネル404は、アプリケーションプログラム400およびオペレーティングシステム402によってセキュアデバイスドライバ406Aおよび406Dと、対応するセキュアデバイス314Aおよび314Dへの不正アクセスを防止してよい。他方で、デバイスドライバ406Bおよび406Cは、「非セキュア」デバイスドライバであってよく、対応するデバイスハードウェアユニット314Bおよび314Cは、「非セキュア」デバイスハードウェアユニットであってよい。デバイスドライバ406Bおよび406Cと、対応するデバイスハードウェアユニット314Bおよび314Cは、例えば、「レガシー」デバイスドライバおよびデバイスハードウェアユニットであってよい。
他の実施形態において、セキュリティカーネル404は、オペレーティングシステム402の一部であってよいことに留意されたい。さらなる他の実施形態において、セキュリティカーネル404、デバイスドライバ406Aおよび406D、および/または、デバイスドライバ406Bおよび406Cは、オペレーティングシステム402の一部であってよい。また、セキュリティカーネル404は、セキュアアプリケーションメモリ空間および/またはセキュアプログラム空間へのアクセスを制御してもよい。また、SCU316は、セキュリティカーネル404に動作的に関連付けられる。
図5Aは、コンピュータシステム300のCPU302の1つの実施形態の図である。図5Aの実施形態において、CPU302Aは、実行ユニット500、メモリ管理ユニット(MMU)502、キャッシュユニット504、バスインタフェースユニット(BIU)506、制御レジスタ508のセット、およびセキュア実行モード(SEM:secure execution mode)レジスタ510のセットを含む。SEMレジスタ510のセットは、コンピュータシステム300内でセキュア実行モード(SEM)を実行するために使用される。SEMレジスタ510は、セキュリティカーネル404によってアクセスされてよい(すなわち、書き込みおよび/または読み取りされてよい)。MEM SCU316Aは、MMU502内に位置するように示されている。REG SCU316Bは、実行ユニット500内に位置するように示されている。I/O SCU316Cは、BIU506内に位置するように示されている。CPU内の他の位置も考えられる。MEM SCU316A、REG SCU316B、およびI/O SCU316Cの動作は、SEMレジスタ510のセットのコンテンツによって制御される。
図5Aの実施形態において、SEMレジスタ510のセットは、セキュア実行モード(SEM)ビットを含む。図3のコンピュータシステム300は、例えば、(i)CPU302が、X86保護モードにおいて動作するX86プロセッサである場合、(ii)メモリページングがイネーブルにされる場合、および(iii)SEMビットが「1」に設定される場合、セキュア実行モード(SEM)で動作してよい。SEMの動作およびSEMの他の動作を示す他の方法が使用されてもよい。
一般的に、制御レジスタ508のセットのコンテンツは、CPU302の動作を制御するために使用される。したがって、制御レジスタ508のセットのコンテンツは、実行ユニット500、MMU502、キャッシュユニット504、および/またはBIU506の動作を制御するために使用される。制御レジスタ508のセットは、例えば、X86プロセッサアーキテクチャの複数の制御レジスタを含んでよい。
CPU302の実行ユニット500は、命令(例えば、X86命令)およびデータをフェッチし、フェッチされた命令を実行し、命令の実行中に、信号(例えば、アドレス、データ、および制御信号)を発生する。実行ユニット500は、キャッシュユニット504に結合され、キャッシュユニット504およびBIU506を介してメモリ306から命令を受信してよい。
コンピュータシステム300のメモリ306は、各々が固有物理アドレスを有する複数のメモリ位置を含む。ページングをイネーブルにした保護モードでの動作時、CPU302のアドレス空間は、ページフレーム、いわゆる「ページ」と呼ばれる複数のブロックに分割される。他の実施形態において、メモリは、異なるように規定されたメモリ領域に分割されてよく、それを介してアクセスされてよい。典型的に、任意の時間にメモリ306内に、ページの一部分に対応するデータのみしか格納されない。
図5Aの実施形態において、命令の実行中、実行ユニット500によって発生したアドレス信号は、セグメント化(すなわち、「ロジカル」)アドレスを表す。MMU502は、実行ユニット500によって発生したセグメント化アドレスを、メモリ306の対応する物理アドレスに変換する。MMU502は、物理アドレスをキャッシュユニット504に与える。キャッシュユニット504は、実行ユニット500によって最後にフェッチされた命令およびデータを格納するために使用される比較的小さな格納ユニットである。BIU506は、キャッシュユニット504とホストブリッジ304との間に結合され、メモリ306からホストブリッジ304を経由して、キャッシュユニット504に存在しない命令およびデータをフェッチするために使用される。
キャッシュユニット504の使用は任意のものであるが、CPU302の動作効率をさらに高めることが有益な場合もあることに留意されたい。また、実行ユニット500は、実施例に応じて、命令、セキュア命令、および/または、マイクロコードを実行してよいことに留意されたい。1つの実施形態において、プロセッサ302において実行するマイクロコードは、ハードウェアであって、ソフトウェアではない。
コンピュータシステム300がSEMで動作するとき、セキュリティカーネル404は、メモリ306の保護部分において、1つ以上のセキュリティ属性データ構造(例えば、テーブル)を発生および維持する。各メモリページは、対応するセキュリティコンテクスト識別(SCID)値を有し、対応するSCID値は、セキュリティ属性データ構造内に格納されてよい。MMU502は、1つ以上のセキュリティ属性データ構造にアクセスして、対応するメモリページのSCIDを獲得するために、命令の実行中に生成されたアドレス(例えば、物理アドレス)を使用する。一般的に、コンピュータシステム300は、n個の異なるセキュリティコンテクスト識別(SCID:security context identification)値を有し、nは整数であり、n≧1である。
コンピュータシステム300がSEMで動作するとき、セキュリティメカニズムを侵害するソフトウェアによるさまざまな活動により、SEMセキュリティ例外が生じることになる。SEMセキュリティ例外は、X86「SYSENTER」および「SYSEXIT」命令の動作方法に類似した一対のレジスタ(例えば、モデル固有レジスタ、いわゆるMSR:model specific register)を介して送り出されてよい。レジスタの対は、「セキュリティ例外エントリポイント」レジスタであってよく、SEMセキュリティ例外が生じたときに命令を実行するためのブランチターゲットアドレスを規定してよい。セキュリティ例外エントリポイントレジスタは、SEMセキュリティ例外ハンドラへのエントリ時に使用される予定の、コードセグメント(CS)、命令ポインタ(EIP、または64−ビットバージョンのRIP)、スタックセグメント(SS)、およびスタックポインタ(ESP、または64−ビットバージョンのRSP)値を規定してよい。
実行ユニット500は、例外が生じた場所を示すために、先行のSS、ESP/RSP、EFLAGS、CS、およびEIP/RIP値を新しいスタックに送ってよい。さらに、実行ユニット500は、エラーコードをスタックに送ってよい。先行のSSおよびESP/RSP値が常に保存されているとき、割込(IRET)命令からの通常のリターンが使用されないこともあり、CPLが変化していなくても、スタックスイッチが常に達成されることに留意されたい。したがって、SEMセキュリティ例外ハンドラ(SMRET)からの戻りを達成するために、新しい命令が規定されてよい。
図5Bは、コンピュータシステム300のCPU302の別の実施形態の図である。図5Bの実施形態において、CPU302Bは、図5Aに関して上述した、実行ユニット500、MMU502、キャッシュユニット504、BIU505、制御レジスタ508のセット、およびセキュア実行モード(SEM)レジスタ510のセットを含む。さらに、CPU302Bは、マイクロコードエンジン550およびマイクロコードストア552を含む。マイクロコードエンジン550は、実行ユニット500、MMU502、キャッシュユニット504、BIU505、制御レジスタ508のセット、およびSEMレジスタ510のセットに結合される。マイクロコードエンジン550は、マイクロコードストア552に格納されたマイクロコード命令を実行し、マイクロコード命令、制御レジスタ508のセットのコンテンツ、およびSEMレジスタ510のセットのコンテンツに応じて、実行ユニット500、MMU502、キャッシュユニット504、およびBIU505の動作を制御する信号を発生する。図5Bの実施形態において、マイクロコードストア552に格納されたマイクロコード命令を実行するマイクロコードエンジン550は、MEM SCU316A、REG SCU316B、およびI/O SCU316Cの1つ以上を置き換えてもよい。また、X86実施形態において、マイクロコードエンジン550は、X86命令セットのより複雑な命令を実行するさい、実行ユニット500のアシストに用いられてもよい。
図5Bの実施形態において、マイクロコードストア552に格納されたマイクロコード命令の一部分が、セキュリティチェックコード554を形成する。セキュリティチェックコード554は、SEMにおいてコンピュータシステム300が動作し、実行するための実行ユニット500に命令が送られるときに実行されてよい。本質的に、セキュリティチェックコード554のマイクロコード命令を実行すると、マイクロコードエンジン550と、実行ユニット500、MMU502、およびBIU505のさまざまなものが、上述したSCU316の機能を実行する。
例えば、実行ユニット500にI/O命令が送られると、実行ユニット500は、I/O命令の存在をマイクロコードエンジン550に知らせることができる。マイクロコードエンジン550は、MMU502およびBIU505に信号をアサートしてよい。マイクロコードエンジン550からの信号に応答して、MMU502は、I/O命令を含むメモリページのセキュリティコンテクスト識別(SCID)値をBIU505に与えてよい。実行ユニット500は、I/O命令によってアクセスされるI/Oポート番号をBIU505に与えてよい。
マイクロコードエンジン550からの信号に応答して、BIU505は、セキュリティコンテクスト識別(SCID)値、およびSEM I/O許可ビットマップ800(図8を参照)にアクセスするために受信したI/Oポート番号を用いてよく、SEM I/O許可ビットマップ800からマイクロコードエンジン550に対応するビットを与えてよい。SEM I/O許可ビットマップ800からの対応するビットが、「0」にクリアされれば、マイクロコードエンジン550は、I/O命令の実行を完了するさいに実行ユニット500の助力を継続してよい。他方で、対応するビット、「1」に設定されれば、マイクロコードエンジン550は、I/O命令の実行を停止し、SEM例外ハンドラの実行を開始するように実行ユニット500に知らせてよい。
また、実行ユニット500が、実施例に応じて、標準的な命令、セキュア命令、および/またはマイクロコードを実行してよいことに留意されたい。したがって、1つの実施形態において、実行ユニット500およびマイクロコードエンジン550の両方が、マイクロコードを実行する。1つの実施形態において、プロセッサ302において実行するマイクロコードは、ハードウェアアクションであって、ソフトウェアアクションと考慮されない。
図6は、X86実施形態を記載した、MMU502の1つの実施形態の図である。図6の実施形態において、MMU502は、セグメンテーションユニット600、ページングユニット602、およびセグメンテーションユニット600およびページングユニット602の出力間を選択して、物理アドレスを発生するための選択ロジック604を含む。図示するように、ページングユニット602は、MEM SCU316Aを含む。図6に示すように、セグメンテーションユニット600は、実行ユニット500からセグメント化アドレスを受信し、出力で対応するリニアアドレスを発生するために、X86プロセッサアーキテクチャの公知のセグメント化・リニアアドレス変換メカニズムを用いてよい。図6に示すように、「PAGING」信号によってイネーブルにされると、ページングユニット602は、セグメンテーションユニット500によって発生したリニアアドレスを受信し、出力で対応する物理アドレスを発生する。PAGING信号は、X86プロセッサアーキテクチャおよび制御レジスタ508のセットの制御レジスタ0(CR0)にあるページングフラグ(PG)ビットをミラーリングしてよい。PAGING信号がディアサートされると、メモリページングはイネーブルされず、選択ロジック604は、物理アドレスとしてセグメンテーションユニット600から受信したリニアアドレスを発生する。
PAGING信号がアサートされると、メモリページングがイネーブルされ、ページングユニット602は、X86プロセッサアーキテクチャのリニア・物理アドレス変換メカニズムを用いて、セグメンテーションユニット500から受信したリニアアドレスを、対応する物理アドレスへ変換する。リニア・物理アドレスの変換動作中、選択されたページディレクトリエントリおよびページテーブルエントリのU/Sビットのコンテンツは、ページフレームへのアクセスが許可されるかを決定するために、論理ANDが実行される。同様に、選択されたページディレクトリエントリおよび選択されたページテーブルエントリのR/Wビットのコンテンツは、ページフレームへのアクセスが許可されるかを決定するために、論理ANDが実行される。U/SおよびR/Wビットの論理的な組合せが、ページフレームへのアクセスが許可されたことを示せば、ページングユニット602は、リニア・物理アドレス変換動作から得られる物理アドレスを発生する。選択ロジック604は、ページングユニット602によって発生した物理アドレスを受信し、物理アドレスとしてページングユニット602から受信した物理アドレスを発生し、物理アドレスをキャッシュユニット504に出力する。
他方で、U/SおよびR/Wビットの論理的組合せが、ページフレームへのアクセスが許可されていないことを示せば、ページングユニット602は、リニア・物理アドレス変換動作中に物理アドレスを発生しない。その代わりとして、ページングユニット602は、ページフォールト(PF)信号をアサートし、MMU502は、PF信号を実行ユニット500に送る。PF信号に応答して、実行ユニット500は、SEMセキュリティ例外ハンドラなどの例外ハンドラルーチンを実行してよく、最終的に、PF信号がアサートされたときに実行するアプリケーションプログラム400の1の実行を停止してよい。
図6の実施形態において、MMU502のページングユニット602内に、MEM SCU316Aが位置する。また、ページングユニット602は、比較的少数の最後に決定されたリニア・物理アドレス変換を格納するためのトランスレーションルックアサイドバッファ(TLB:translation lookaside buffer)を含んでよい。
図7Aは、MEM SCU316の1つの実施形態の図である。図7Aの実施形態において、MEM SCU316は、SEMレジスタ510のセットに結合されたセキュリティチェックロジック700A、およびセキュリティ属性テーブル(SAT)エントリバッファ702を含む。SATエントリは、メモリページに対応するページディレクトリおよびページテーブルエントリのU/SおよびR/Wビットより上に追加のセキュリティ情報を含んでよい。セキュリティチェックロジック700Aは、対応するメモリページへのソフトウェア主導の不正アクセスを防止するために、所与のSATエントリ内に格納された追加のセキュリティ情報を用いる。SATエントリバッファ702は、比較的少数の最後にアクセスされたメモリページを格納するために用いられる。
上述したように、SEMレジスタ510のセットは、コンピュータシステム300内においてSEMを実行するために用いられてよい。SEMレジスタ510のセットのコンテンツは、MEM SCU316Aの動作を制御する。セキュリティチェックロジック700Aは、図7Aに示すように、MMU502から通信バスを経由して、SATエントリバッファ702に格納される情報を受信する。また、セキュリティチェックロジック700Aは、ページングユニット602によって発生する物理アドレスを受信する。
図示するように、セキュリティチェックロジック700Aは、通信バスおよびSEMレジスタ510に結合される。チェックロジック700Aは、ページフォールト通知信号およびSEMセキュリティ例外通知信号を生成してよい。
図7Bは、I/O SCU316Cの1つの実施形態を示す図である。図7Bの実施形態において、I/O SCU316Cは、セキュリティチェックロジック700Bを含む。セキュリティチェックロジック700Bは、実行ユニット500から「ENABLE」信号およびI/Oポート番号を受信し、MMU502からSCID値を受信する。実行ユニット500は、I/Oアドレス空間において「ターゲット」I/OポートにアクセスするI/O命令を実行する前にENABLE信号をアサートしてよい。I/Oポート番号は、ターゲット I/Oポートの数である。SCID値は、I/O命令を含むメモリページのセキュリティコンテクストレベルを示す。
コンピュータシステム300がSEMにおいて動作するとき、セキュリティカーネル404は、メモリ306においてSEM I/O許可ビットマップ800を生成および維持してもよい。実行ユニット500が、タスクのI/O命令を実行すると、CPU302内のロジックは、まず、タスクの現行の特権レベル(CPL)と、I/O特権レベル(IOPL)とを比較してよい。タスクのCPLが、IOPLと少なくとも同程度の特権をもつものであれば(すなわち、数値的にIOPLより小さいか同等であれば)、CPU302内のロジックは、SEM I/O許可ビットマップ800をチェックしてよい。他方で、タスクのCPLが、IOPLほど特権をもたなければ(すなわち、数値的にIOPLより大きければ)、実行ユニット500は、I/O命令を実行しない。1つの実施形態において、一般保護フォールト(GPF:general protection fault)が生じる。
実行ユニット500がENABLE信号をアサートすると、セキュリティチェックロジック700Bは、ENABLE信号、受信したSCID値、および受信したI/Oポート番号を、BIU505内のロジックに出力する。BIU505内のロジックは、SCID値およびSEM I/O許可ビットマップ800へアクセスするために受信したI/Oポート番号を使用し、SEM I/O許可ビットマップ800からセキュリティチェックロジック700Bへ、対応するビットを出力する。SEM I/O許可ビットマップ800からの対応するビットが、「0」にクリアされれば、セキュリティチェックロジック700Bは、実行ユニット500に出力された出力「EXECUTE」信号をアサートしてよい。アサートされたEXECUTE信号に応答して、実行ユニット500は、I/O命令を実行してよい。他方で、対応するビットが、「1」に設定されれば、セキュリティチェックロジック700Bは、実行ユニット500に出力された出力「SEMセキュリティ例外」信号をアサートしてよい。アサートされたSEMセキュリティ例外信号に応答して、実行ユニット500は、I/O命令を実行しないことがあり、その代わりに、SEMセキュリティ例外ハンドラを実行してよい。
I/O命令が、16−ビットワードI/Oポート、または32−ビットダブルワードI/Oポートへのアクセスを試みれば、実行ユニット500は、連続して複数のバイトI/Oポート番号をセキュリティチェックロジック700Bに出力してよいセキュリティチェックロジック700Bが、バイトI/Oポート番号の各々に対してEXECUTE信号をアサートすれば、実行ユニット500は、I/O命令を実行してよい。他方で、セキュリティチェックロジック700Bが、バイトI/Oポート番号の1つ以上に対してSEMセキュリティ例外をアサートすれば、実行ユニット500は、I/O命令を実行しないことがあり、その代わりに、SEMセキュリティ例外ハンドラを実行してよい。
図8は、SEM I/O許可ビットマップ800の1つの実施形態と、SEM I/O許可ビットマップ800にアクセスするためのメカニズムの1つの実施形態を示す図である。図8のメカニズムは、BIU505内のロジック内に具体化されてよく、コンピュータシステム300がSEMにおいて動作中のときに適用されてよい。図8の実施形態において、SEM I/O許可ビットマップ800は、メモリ306の一部分に格納された単一の64k−ビット(8k−バイト)I/O許可ビットマップを含む。I/Oポート番号は、モデル固有のレジスタ802(すなわち、セキュア実行モードI/O許可ビットマップ800のベースアドレス)のコンテンツから、I/O許可ビットマップ800へのビットオフセットとして使用される。このようにしてアクセスされたビットは、I/Oポート番号によって規定されたI/Oポートに対応するビットである。
上述したように、コンピュータシステム300は、n個の異なるSCID値を有し、nは整数であり、n≧1である。SEMI/O許可ビットマップ800は、n個の異なるSCID値の各々に対して、異なるI/O許可ビットマップ800を含んでよい。別々のI/O許可ビットマップ800の各々は、64kビット、いわゆる8kバイトを含んでよい。
他の実施形態において、MSR802は、SEM I/O許可ビットマップ800の最初の(すなわち、ベース)アドレスを格納するために用いられてよい。I/OポートにアクセスするI/O命令を含むメモリページのSCID値は、モデル固有のレジスタ802(すなわち、SEM I/O許可ビットマップ800のベースアドレス)のコンテンツから、SEM I/O許可ビットマップ800を構成する1つ以上の64k−ビット(8k−バイト)I/O許可ビットマップへのオフセットとして用いられてよい。その結果、SCID値に対応するI/O許可ビットマップがアクセスされることになる。次いで、I/Oポート番号は、SCID値に対応するI/O許可ビットマップへのビットオフセットとして用いられてよい。このようにしてアクセスされるビットは、I/Oポート番号によって規定されるI/Oポートに対応するビットである。
図9は、セキュアモードSMCALL/SMRETターゲットアドレスレジスタ(SMSTAR)850およびSEMセキュリティ例外を取り扱うために使用されるセキュアモードGSベース(SMGSBASE)レジスタ852の図である。セキュリティ面から、SEMセキュリティ例外メカニズムは、SEMセキュリティ例外が生じるときにSEMセキュリティ例外ハンドラおよびスタックのアドレスを与えるために、通常モードでアクセス可能な任意の制御レジスタのコンテンツまたはデータ構造に依存できない。
SMSTARレジスタ850は、「SMRET CSセレクタおよびSSセレクタベース」フィールド、「SMCALL CSセレクタおよびSSセレクタベース」フィールド、および「ターゲットEIPアドレス」フィールドを含む。SMGSBASEレジスタ852は、セキュアモードGSベースアドレスを含む。SMSTARレジスタ850およびSMGSBASEレジスタ852に格納された値は、典型的に、ブート時に設定される。
図10は、SEMセキュリティ例外が生じるときにオペレーティングシステム402によって生成されるSEMセキュリティ例外スタックフレーム900の図である。SEMセキュリティ例外スタックフレーム900は、GS[00h]で始まる。
SEMセキュリティ例外スタックフレーム900のGS[00h]に、エラーコードがある。SEMセキュリティ例外スタックフレーム900のGS[04h]に、フォールティングアプリケーションの命令ポインタ(EIP)のコンテンツがある。SEMセキュリティ例外スタックフレーム900のGS[08h]に、フォールティングアプリケーションコードセグメント(CS)レジスタのコンテンツがある。SEMセキュリティ例外スタックフレーム900のGS[0Ch]に、フォールティングアプリケーションまたはコードセグメントのフラグ(EFLAGS)レジスタのコンテンツがある。SEMセキュリティ例外スタックフレーム900のGS[10h]に、フォールティングアプリケーションのスタックポインタ(ESP)レジスタのコンテンツがある。SEMセキュリティ例外スタックフレーム900のGS[14h]に、フォールティングアプリケーションのスタックセグメント(SS)レジスタのコンテンツがある。
図11は、図10のSEMセキュリティ例外スタックフレーム900のエラーコードの例示的なフォーマット1010の図である。図11の実施形態において、エラーコードフォーマットは、書き込み/読み取り(W/R)ビット、ユーザ/スーパーバイザ(U/S)ビット、モデル固有レジスタ(MSR)ビット、およびシステム管理割込(SMI:system management interrupt)ビットを含む。書き込み/読み取り(W/R)ビットは、書き込み動作中にSEMセキュリティ例外が発生したとき、「1」であり、読み取りまたは実行中にSEMセキュリティ例外が生じたとき、「0」である。ユーザ/スーパーバイザ(U/S)ビットは、ユーザモード(CPL=3)でセキュア実行モード(SEM)例外が生じたとき、「1」であり、スーパーバイザモード(CPL=0)でSEMセキュリティ例外が生じたとき、「0」である。
モデル固有レジスタ(MSR)ビットは、セキュアモデル固有レジスタ(MSR)へのアクセスを試みている間にSEMセキュリティ例外が生じたとき、「1」であり、セキュアMSRへのアクセスを試みている間にSEMセキュリティ例外が生じなかったとき、「0」である。システム管理割込(SMI)ビットは、システム管理割込(SMI)中にSEMセキュリティ例外が生じたとき、「1」であり、SMI中にSEMセキュリティ例外が生じたとき、「0」である。
図12は、本発明の1つの態様によれば、SEMセキュリティ例外を取り扱う方法1100の実施形態のフローチャートである。方法1100は、ブロック1105において、例えば、SMCALL命令を介して、ハードウェアかソフトウェアのいずれかを介して、SEMセキュリティ例外を生成することを含んでよい。方法1100は、ブロック1110において、ベースアドレスおよびオフセットでSEMスタックフレーム900を作成することを含む。セキュアモードGSベースアドレスは、SMGSBASEレジスタ852から読み取られる。SEMスタックポインタは、SEMスタックフレームのバイト数によってセキュアモードGSベースアドレスオフセットから形成されてよい。SEMスタックフレーム900は、SMGSBASEレジスタ852に格納されたセキュアモードGSベースアドレスによってポイントされた位置にエラーコードがあるように、メモリに書き込まれる。SEMセキュリティ例外のエラーコードは、SEM例外ハードウェアによって生成される。SEMセキュリティ例外そのものは、オペレーティングシステム402、デバイスドライバコード406、アプリケーションコード400などによって生成されたものであってよい。フォールティングコードセグメント値は、図10に示すように、GS空間に書き込まれる。
次に、方法1100は、ブロック1115において、ターゲットEIPアドレスと、SMCALL CSおよびSSセレクタ値をSMSTARレジスタ850から読み取り、ターゲットEIPアドレスと、SMCALL CSおよびSSセレクタ値を適切なレジスタに格納する。ターゲットEIPアドレスは、EIPレジスタにロードされる。CSセレクタ値は、CSレジスタにロードされ、SSセレクタ値は、SSレジスタにロードされる。SSセレクタアドレスは、CSセレクタアドレスから求められてよい。ターゲットEIPアドレスは、SEMセキュリティ例外ハンドラコードの第1の命令をポイントする。
また、方法1100は、ブロック1120において、SWAPGS命令を実行する。SWAPGS命令の実行は、SMGSBASEレジスタ902のコンテンツと、CPU402にキャッシュされたGSセグメントディスクリプタのベースアドレスとをスワッピングあるいは交換する。次のSEMセキュリティ例外ハンドラ命令は、GS空間の変位のみのアドレッシングを用いて、SEMセキュリティ例外スタックフレーム900およびSEMセキュリティ例外スタックフレーム900の上または下のメモリにアクセスできる。GS空間のアドレッシングにより、SEMセキュリティ例外ハンドラにセキュアメモリを与える。
セキュリティカーネル404のSEMセキュリティ例外ハンドラは、セキュリティビットによって保護された、例えば、SEMレジスタ510に格納された数ページの仮想メモリや、本願明細書に記載する他のセキュリティ手段を含んでよい。SEMセキュリティ例外ハンドラは、セキュリティビットによって保護された、例えば、SEMレジスタ510に格納された数ページの物理メモリや、本願明細書に記載する他のセキュリティを含んでよい。
次に、方法1100は、ブロック1120において、エラーコードを解析する。エラーコードビットは、SEMセキュリティ例外のソースが決定されると、一つずつ解析されてよい。オプションとして、方法1100は、ブロック1130において、SEMセキュリティ例外が生成される前に実行されたか、実行の準備が整った1つ以上の命令をデコードする。特定の命令およびそれらのオペランドは、SEMセキュリティ例外のソースに関する追加情報を与えてよい。方法1100は、ブロック1135において、エラーコードに基づいて、さらに、可能的に、SEMセキュリティ例外の生成を生じさせた命令の前または後の命令に基づいて、SEMセキュリティ例外を評価する。ブロック135の評価は、ルックアップテーブルを参照するか、セキュリティアルゴリズムを実行することを含む。ルックアップテーブルは、エラーコードの1つ以上、エラーコードの1ビット以上、および特定の命令の1つ以上、および/またはそれらのオペランドによってインデックス化されてよい。セキュリティアルゴリズムは、セキュリティカーネル404によって実行されるコードツリーを含んでよい。ルックアップテーブルとセキュリティアルゴリズムの両方は、正確なハードウェア310など、およびコンピュータシステム300において実行されるオペレーティングシステム402を決定することになる。
ブロック1135において、方法1100が、SEMセキュリティ例外を評価すると、方法1100は、必要に応じて、ブロック1140において、その評価に作用する。SEMセキュリティ例外は無視されてよく、動作が再開される。フォールティング命令またはコードセグメントは無視されてよい。フォールティング命令またはコードセグメントは、フォールティング命令またはコードセグメントが、仮想メモリまたはI/O空間において、プロキシによって実行されるように含まれてよい。
方法1100は、ブロック1145において、コンピュータシステム300をそのプレSEMセキュリティ例外コンフィグレーションにほぼ戻す。SEMセキュリティ例外ハンドラが存在すると、別のSWAPGS命令は、セキュアモードベースアドレス値を最初の値に戻すように実行され、SMRET命令は、ブロック1150において、前の動作モードに戻すように実行される。SWAPGS命令を実行すると、セキュリティカーネル404は、フォールティングコードのコードセグメント(CS)の値をSMSTARレジスタ850のSMRET CSセレクタおよびSSセレクタベースフィールドに書き込む。SMRET命令は、システム300を通常モードに戻してよい。SYSRET命令とは異なり、SMRET命令は、現行特権レベル(CPL)を0にしたままでよく、EFLAGS.IFビットを設定しない。
1つの実施形態において、方法1100のブロック1105〜1115は、主にハードウェアにおいて実行されるのに対して、ブロック1120〜1135は、主にソフトウェアにおいて実行されることに留意された。別の実施形態、方法1100は、主にソフトウェアにおいて実行される。さらなる別の実施形態、方法1100は、主にハードウェアにおいて実行される。1つの実施形態において、SEMセキュリティ例外を生じさせる可能性のある命令を回避するために、EIPアドレスが修正されることに留意されたい。
再度、図7Aに戻ると、コンピュータシステム300がSEMに動作しているとき、セキュリティチェックロジック700Aは、物理アドレスが存在する選択されたメモリページに関連付けられた通常の制御ビットおよび1つ以上のSEMビット509とともに、現行実行タスク(すなわち、現在実行命令)のCPLを受信する。セキュリティチェックロジック700Aは、メモリ306の該当部分へのアクセスが許可されているかを決定するために、上記情報を用いる。
CPU302は、X86プロセッサであってよく、コードセグメント(CS)レジスタ、すなわち、X86プロセッサアーキテクチャの16−ビットセグメントレジスタの1つを含んでよい。各セグメントレジスタは、セグメントと呼ばれる64kメモリブロックを選択する。ページングをイネーブル状態にした保護モードにおいて、CSレジスタにはメモリ306の実行可能なセグメントを示すセグメントセレクタがロードされる。セグメントセレクタの最高位(すなわち、最上位)ビットは、CPU302の実行ユニット500によって実行される予定の次の命令を含むメモリのセグメントを示す情報を格納するために使用される。CSレジスタによって示されたセグメントにオフセットを格納するために、命令ポインタ(IP)レジスタが使用される。CS:Iペアは、次の命令のセグメント化アドレスを示す。実行ユニット500(すなわち、現行タスクのCPL)によって現在実行されているタスクのCPLを示す値を格納するために、CSレジスタの2つの最低位(すなわち、最下位)ビットが使用される。
MEM SCU316Aのセキュリティチェックロジック700Aは、ページフォールト(「PF」)信号および「SEMセキュリティ例外」信号を発生してよく、PFおよびSEMセキュリティ例外信号をページングユニット602内のロジックに出力してよい。セキュリティチェックロジック700AがPF信号をアサートすると、MMU502は、PF信号を実行ユニット500に送る。PF信号に応答して、実行ユニット500は、PFハンドラルーチンにアクセスし実行するために、X86プロセッサアーキテクチャの公知の割込ディスクリプタテーブル(IDT)ベクトル化メカニズムを用いてよい。
セキュリティチェックロジック700Aが、SEMセキュリティ例外信号をアサートすると、MMU502は、SEMセキュリティ例外信号を実行ユニット500に送る。X86プロセッサアーキテクチャのIDTベクトル化メカニズムを用いる通常のプロセッサ例外とは異なり、SEMセキュリティ例外を取り扱うために、異なるベクトル化方法が使用されてよい。SEMセキュリティ例外は、X86「SYSENTER」および「SYSEXIT」命令が動作する方法と同様の一対のレジスタ(例えば、MSR)を介して送り出されてよい。レジスタのペアは、「セキュリティ例外エントリポイント」レジスタであってよく、SEMセキュリティ例外が生じると、命令を実行するためのブランチターゲットアドレスを規定してよい。セキュリティ例外エントリポイントレジスタは、コードセグメント(CS)、次いで、命令ポインタ(EIP、または64−ビットバージョンのRIP)、スタックセグメント(SS)、およびSEMセキュリティ例外ハンドラへのエントリ時に用いられるスタックポインタ(ESP、64−ビットバージョンのRSP)値を規定してよい。実行ユニット500は、SEMセキュリティ例外が生じた場所を示すために、前のSS、ESP/RSP、EFLAGS、CS、およびEIP/RIP値を新しいスタックに送ってよい。さらに、実行ユニット500は、エラーコードをスタックに送ってよい。上述したように、IRET命令は、SSおよびESP/RSP値が保存されている場合は使用されなくてもよく、CPLの変化が生じなくても、スタックスイッチが達成される。SEMセキュリティ例外ハンドラからの戻りは、SMRET命令を経由したものである。
上述したような本発明のいくつかの態様は、ハードウェアまたはソフトウェアにおいて実行されてよい。したがって、本願明細書の詳細な記載のいくつかの部分は、、ハードウェア実行プロセスの点で結果的に与えられ、本願明細書の詳細な記載のいくつかの部分は、結果的に、コンピューティングシステムまたはコンピューティングデバイスのメモリ内のデータビットでの動作の記号表記を伴うソフトウェア実行プロセスの点で結果的に与えられる。これらの記載および表記は、ハードウェアおよびソフトウェアの両方を用いる当業者らにそれらの働きの実体を最も効果的に伝えるために、当業者によって用いられる手段である。プロセスおよび動作は、物理量の物理的な操作を必要とする。ソフトウェアにおいて、一般に、必要不可欠なことではないが、これらの量は、格納、転送、組合せ、比較、および操作可能な電気、磁気、または光信号の形をとる。主に共通して使用するために、これらの信号を、ビット、値、要素、記号、文字、用語、数などとして参照すると利便性が良い場合がある。
しかしながら、これらの同様の用語のすべてが、適切な物理量に関連付けられ、これらの量に適用された利便性の良いラベルにすぎないことに留意されたい。本願の開示内容全体を通して、特段の記載がない限り、または明らかであるように、これらの記載は、電子デバイスのアクションおよびプロセスを参照し、このデバイスは、何らかの電子デバイスのストレージ内の物理(電子、磁気、または光)量として表されるデータを操作して、格納内または伝送またはディスプレイデバイスにおいて物理量として同様に表される他のデータに変形する。このような記載を表す用語の例は、限定するものではないが、「処理」、「コンピューティング」、「計算」、「決定」、「表示」などの用語である。
また、本発明のソフトウェア実行の態様は、典型的に、プログラム格納媒体の何らかの形態でコード化されるか、または、何らかのタイプの伝送媒体で実行されることにも留意されたい。プログラムストレージ媒体は、磁気(例えば、フロッピーディスクまたはハードドライブ)または光(例えば、コンパクトディスク読み取り専用メモリ、いわゆる「CDROM」)であってよく、読取専用またはランダムアクセスであってよい。同様に、伝送媒体は、ツイストペア線、同軸ケーブル、光ファイバ、または当業者に公知の何らかの他の適切な伝送媒体であってよい。本発明は、任意の所与の実施例のこれらの態様によって制限されるものではない。
上記に開示された特定の実施形態は、例示的なものにすぎず、本発明は、異なるように修正および実施されてよいが、同等の方法は、本願明細書の開示内容を利用できる当業者らに明らかである。さらに、特許請求の範囲に記載するもの以外、本願明細書に示された構成またはデザインの詳細には何ら制限が意図されていない。したがって、上記に開示された特定の実施形態は、変更または修正されてよく、すべてのこのような変形例は、特許請求の範囲内であると見なされることは明らかである。したがって、本願明細書において求められる保護は、特許請求の範囲において示される。
Windows(R)オペレーティングシステムの実行時など、X86プロセッサによって発生した例外スタックフレームの図。 SYSCALL/SYSRETターゲットアドレスレジスタの図。 本発明の1つの態様に従って利用されてよいコンピュータシステムの1つの実施形態のブロック図。 本発明の1つの態様による、コンピュータシステム実施形態のさまざまなハードウェアおよびソフトウェアコンポーネントのいくつかの関係を示す図。 本発明のさまざまな態様による、CPUの実施形態の図。 本発明のさまざまな態様による、CPUの実施形態の図。 本発明の1つの態様による、メモリセキュリティチェックユニット(MEM SCU)を有するページングユニットを含むMMUの1つの実施形態の図。 本発明の1つの態様による、MEM SCUの1つの実施形態の図。 本発明の1つの態様による、I/O SCUの1つの実施形態の図。 本発明のさまざまな態様による、メモリ内に格納されたセキュア実行モード(SEM)I/O許可ビットマップ1つの実施形態と、SEM I/O許可ビットマップにアクセスするためのメカニズムの1つの実施形態とを示す図。 本発明の1つの態様による、セキュアモードSMCALL/SMRETターゲットアドレスレジスタ(SMSTAR)およびSEMセキュリティ例外を取り扱うために使用されるセキュアモードGSベース(SMGSBASE)レジスタの実施形態の図。 本発明の1つの態様による、SEMセキュリティ例外が生じたときに生成されるSEMセキュリティ例外スタックフレームの1つの実施形態の図。 本発明の1つの態様による、SEMセキュリティ例外スタックフレームのエラーコードの例示的なフォーマットの図。 本発明の1つの態様による、SEM例外を取り扱う方法の実施形態のフローチャート。

Claims (10)

  1. セキュアメモリ内のベースアドレスにセキュリティ例外スタックフレーム(900)を作成し、
    フォールティングコードシーケンスアドレスおよび1つ以上のレジスタ値を前記セキュリティ例外スタックフレーム(900)に書き込み、
    複数のセキュリティ例外命令を実行する、方法。
  2. 前記セキュリティ例外スタックフレーム(900)の作成では、ハードウェアセキュア実行モードセキュリティ例外およびソフトウェアセキュア実行モードセキュリティ例外の少なくとも1つを含むセキュリティ例外を受信し、
    前記セキュアメモリの前記ベースアドレスに前記セキュリティ例外スタックフレーム(900)の作成では、前記セキュリティ例外と関連付けられたエラーコードの位置を識別する、請求項1に記載の方法。
  3. 前記セキュアメモリの前記ベースアドレスの前記セキュリティ例外スタックフレーム(900)の作成では、
    エラーコード上にターゲットアドレスを書き込み、
    1つ以上のレジスタ(510)から複数のレジスタ値を書き込む、請求項1に記載の方法。
  4. ターゲットアドレスおよび複数のレジスタ値を1つ以上のセキュアレジスタ(510)から読み取る、請求項1に記載の方法。
  5. 前記セキュアメモリの前記ベースアドレスに前記セキュリティ例外スタックフレーム(900)の作成では、前記ベースアドレスおよび前記セキュアメモリにあるオフセットにスタックポインタを書き込む、請求項1に記載の方法。
  6. セキュリティレジスタ(902)にあるアドレスと、ベースメモリアドレスレジスタからのアドレスとをスワッピングし、前記ベースメモリアドレスレジスタからの前記アドレスと、前記セキュリティレジスタ(902)にある前記アドレスとをスワッピングする、請求項1に記載の方法。
  7. 前記複数のセキュリティ例外命令の実行では、エラーコードの解析、または、前記セキュリティ例外の原因を決定するためのフォールティング命令のデコードがなされる、請求項1に記載の方法。
  8. リクエストをモニタするように構成され、リクエストの一つに応答してセキュリティ例外を生成するようにさらに構成された、1つ以上のセキュリティチェックユニット(316)と、
    複数のセキュア格納位置(510)と、
    セキュアメモリ内のベースアドレスにセキュリティ例外スタックフレーム(900)を作成し、フォールティングコードシーケンスアドレスおよび1つ以上のレジスタ値を前記セキュリティ例外スタックフレーム(900)に書き込むように構成されたプロセッサ(302)と、を含み、
    前記プロセッサ(302)は、セキュリティカーネル(404)を実行するようにさらに構成され、当該セキュリティカーネル(404)が、複数のセキュリティ例外命令を実行するように構成される、システム。
  9. 前記セキュリティカーネル(404)は、エラーコード、ハードウェアセキュア実行モードセキュリティ例外通知、およびソフトウェアセキュア実行モードセキュリティ例外通知の少なくとも1つを含む、セキュリティ例外通知を受信するようにさらに構成される、請求項8に記載のシステム。
  10. 前記プロセッサ(302)が、
    1つ以上のセキュアレジスタ(510)から1つ以上のレジスタ値を読み取り、
    前記セキュリティメモリへ1つ以上のレジスタ値を書き込み、
    前記セキュリティカーネル(404)に制御を移すようにさらに構成される、請求項8に記載のシステム。
JP2004509788A 2002-05-31 2002-12-17 セキュア実行モード例外 Pending JP2005528690A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/161,500 US7451324B2 (en) 2002-05-31 2002-05-31 Secure execution mode exceptions
PCT/US2002/040219 WO2003102770A1 (en) 2002-05-31 2002-12-17 Secure execution mode exceptions

Publications (1)

Publication Number Publication Date
JP2005528690A true JP2005528690A (ja) 2005-09-22

Family

ID=29583455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004509788A Pending JP2005528690A (ja) 2002-05-31 2002-12-17 セキュア実行モード例外

Country Status (7)

Country Link
US (1) US7451324B2 (ja)
EP (1) EP1509843A1 (ja)
JP (1) JP2005528690A (ja)
KR (1) KR100992611B1 (ja)
CN (1) CN1628284B (ja)
AU (1) AU2002361717A1 (ja)
WO (1) WO2003102770A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015514252A (ja) * 2012-03-30 2015-05-18 インテル コーポレイション オペレーティングシステムに対する悪意ある活動のレポート
JP2017526071A (ja) * 2014-08-18 2017-09-07 ビットディフェンダー アイピーアール マネジメント リミテッド 仮想マシンを終了する際に現在のプロセッサ命令の結果を公開するためのシステムおよび方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334123B2 (en) * 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
US7784063B2 (en) * 2004-01-09 2010-08-24 Hewlett-Packard Development Company, L.P. Method and apparatus for system caller authentication
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
US7685638B1 (en) 2005-12-13 2010-03-23 Symantec Corporation Dynamic replacement of system call tables
US8572729B1 (en) * 2006-01-30 2013-10-29 Mcafee, Inc. System, method and computer program product for interception of user mode code execution and redirection to kernel mode
US8214296B2 (en) * 2006-02-14 2012-07-03 Microsoft Corporation Disaggregated secure execution environment
EP1881404A1 (fr) * 2006-07-20 2008-01-23 Gemplus Procédé de protection dynamique des données lors de l'exécution d'un code logiciel en langage intermédiaire dans un appareil numérique
GB2478733B (en) 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
US9298911B2 (en) 2013-03-15 2016-03-29 Intel Corporation Method, apparatus, system, and computer readable medium for providing apparatus security
CN106569904A (zh) * 2015-10-09 2017-04-19 中兴通讯股份有限公司 一种信息存储方法和装置、及服务器
US10146606B2 (en) * 2016-04-06 2018-12-04 Dell Products, Lp Method for system debug and firmware update of a headless server
CN106454914A (zh) * 2016-11-10 2017-02-22 邦彦技术股份有限公司 一种ims的大批量业务出现异常的定位方法及装置
US11783064B2 (en) * 2017-07-10 2023-10-10 Intel Corporation Techniques to provide hardware enforced protection environment for a system management mode
CN107807870B (zh) * 2017-10-30 2021-04-27 郑州云海信息技术有限公司 一种存储服务器主板掉电保护功能的测试方法和系统
CN109787777B (zh) * 2017-11-10 2020-04-03 北京金山云网络技术有限公司 一种网卡模式切换方法、装置、电子设备及存储介质
CN112269597B (zh) * 2020-10-23 2023-03-24 中国人民解放军战略支援部队信息工程大学 处理器指令异常行为检测方法及系统
US11797713B2 (en) 2020-12-16 2023-10-24 International Business Machines Corporation Systems and methods for dynamic control of a secure mode of operation in a processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784631A (en) * 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
US5369770A (en) * 1992-11-02 1994-11-29 Microsoft Corporation Standardized protected-mode interrupt manager
US5535397A (en) * 1993-06-30 1996-07-09 Intel Corporation Method and apparatus for providing a context switch in response to an interrupt in a computer process
US5937186A (en) * 1994-03-24 1999-08-10 International Business Machines Corporation Asynchronous interrupt safing of prologue portions of computer programs
US6957332B1 (en) * 2000-03-31 2005-10-18 Intel Corporation Managing a secure platform using a hierarchical executive architecture in isolated execution mode
US6792499B1 (en) * 2000-11-14 2004-09-14 Cypress Semiconductor Corp. Dynamic swapping of memory bank base addresses
US6697959B2 (en) * 2000-12-20 2004-02-24 Bull Hn Information Systems Inc. Fault handling in a data processing system utilizing a fault vector pointer table
US6725362B2 (en) * 2001-02-06 2004-04-20 Intel Corporation Method for encoding an instruction set with a load with conditional fault instruction

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015514252A (ja) * 2012-03-30 2015-05-18 インテル コーポレイション オペレーティングシステムに対する悪意ある活動のレポート
JP2017526071A (ja) * 2014-08-18 2017-09-07 ビットディフェンダー アイピーアール マネジメント リミテッド 仮想マシンを終了する際に現在のプロセッサ命令の結果を公開するためのシステムおよび方法

Also Published As

Publication number Publication date
CN1628284B (zh) 2013-04-24
KR20040111714A (ko) 2004-12-31
KR100992611B1 (ko) 2010-11-08
EP1509843A1 (en) 2005-03-02
US20030226022A1 (en) 2003-12-04
CN1628284A (zh) 2005-06-15
US7451324B2 (en) 2008-11-11
WO2003102770A1 (en) 2003-12-11
AU2002361717A1 (en) 2003-12-19

Similar Documents

Publication Publication Date Title
US6823433B1 (en) Memory management system and method for providing physical address based memory access security
US20030226014A1 (en) Trusted client utilizing security kernel under secure execution mode
US6854039B1 (en) Memory management system and method providing increased memory access security
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
US8051301B2 (en) Memory management system and method providing linear address based memory access security
US8135962B2 (en) System and method providing region-granular, hardware-controlled memory encryption
US7043616B1 (en) Method of controlling access to model specific registers of a microprocessor
US7451324B2 (en) Secure execution mode exceptions
US7127548B2 (en) Control register access virtualization performance improvement in the virtual-machine architecture
US7130977B1 (en) Controlling access to a control register of a microprocessor
JP2022503562A (ja) 範囲チェック命令
US7082507B1 (en) Method of controlling access to an address translation data structure of a computer system
JPS6248258B2 (ja)
KR101001344B1 (ko) 구획된 보안을 위한 입/출력 허가 비트맵
US7426644B1 (en) System and method for handling device accesses to a memory providing increased memory access security
JP2021512400A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
US7383584B2 (en) System and method for controlling device-to-device accesses within a computer system
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
US20210157601A1 (en) Exception interception
WO2023209323A1 (en) Exception return state lock parameter

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081001

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081008

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081110

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090413

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090420

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090513

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090520

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090615

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090622

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100202

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100602

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100714

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20101008