JP4688490B2 - 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント - Google Patents

高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント Download PDF

Info

Publication number
JP4688490B2
JP4688490B2 JP2004509764A JP2004509764A JP4688490B2 JP 4688490 B2 JP4688490 B2 JP 4688490B2 JP 2004509764 A JP2004509764 A JP 2004509764A JP 2004509764 A JP2004509764 A JP 2004509764A JP 4688490 B2 JP4688490 B2 JP 4688490B2
Authority
JP
Japan
Prior art keywords
security
request
memory
access
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.)
Expired - Lifetime
Application number
JP2004509764A
Other languages
English (en)
Other versions
JP2005528686A (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.)
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 JP2005528686A publication Critical patent/JP2005528686A/ja
Application granted granted Critical
Publication of JP4688490B2 publication Critical patent/JP4688490B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols

Description

本発明は一般にメモリ管理システム及び方法に関し、さらに詳しくは、高セキュリティあるいはセキュアな(secure)計算環境を提供するメモリ管理システム及び方法に関する。
図1は、ウィンドウズ(登録商標)オペレーティング・システム(マイクロソフト社、ワシントン州レッドモンド)を実行する場合などx86プロセッサで発生する例外スタック・フレーム100の略図である。例外ハンドラへのエントリには、例外が発生したアプリケーション・プログラム[すなわち「障害の発生したアプリケーション(faulting application)」]の全レジスタが保存されるが、コード・セグメント(CS)、命令ポインタ(EIP)、スタック・セグメント(SS)、スタック・ポインタ(ESP)レジスタ群と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に現れる。
障害の発生したアプリケーションの命令ポインタ(EIP)の内容は、セグメント・アドレスSS:ESP+04hにあり、例外を発生させた障害の発生したアプリケーションの命令を示している。障害の発生したアプリケーションのスタックポインタ(ESP)レジスタの内容は、セグメント・アドレスSS:ESP+10hにあり、障害を発生したアプリケーションの障害時のスタック・フレームのアドレスである(すなわちこれを指している)。
セグメントに関連した例外のエラー・コードは保護モード・セレクタに非常に類似している。上位13ビット(ビット15:3)がセレクタ・インデックスで、ビット2がテーブル・インデックスである。しかし、要求側特権レベル(RPL)の代わりに、ビット0及び1は以下のミーティングを有する:ビット0(EXT)は障害がプログラム外部のイベントに起因した場合にセットされ、ビット1(IDT)はセレクタ・インデックスがIDT内部のゲート・デスクリプタを参照している場合にセットされる。
図2は、アドバンスド・マイクロ・デバイセズ社で製造されるx86プロセッサで使用されるSYSCALL/SYSRETターゲット・アドレス・レジスタ(STAR)200の略図である。SYSCALL/SYSRETターゲット・アドレス・レジスタ(STAR)200は、「SYSRET CSセレクタ及びSSセレクタ・ベース」フィールドと、「SYSCALL CSセレクタ及びSSセレクタ・ベース」フィールドと、「ターゲットEIPアドレス」フィールドを含む。
SYSCALL命令実行前の何らかの時点で、オペレーティング・システムは、SYSCALL/SYSRETターゲット・アドレス・レジスタ(STAR)200のSYSCALL CSセレクタ及びSSセレクタベース・フィールドへ適当なシステム・サービス・コードのコード・セグメント(CS)の値を書き込む。オペレーティング・システムはまた、SYSCALL/SYSRETターゲット・アドレス・レジスタ(STAR)200のターゲットEIPアドレス・フィールドへ、実行しようとするシステム・サービス・コード内の最初の命令のアドレスも書き込む。STARレジスタはシステム・ブート時に構成される。ターゲットEIPアドレスはオペレーティング・システム・カーネル内の固定システム・サービス領域を指すことができる。
SYSCALL命令実行中に、SYSCALL CSセレクタ及びSSセレクタベース・フィールドの内容はCSレジスタへコピーされる。SYSCALL CSセレクタ及びSSセレクタベース・フィールドの内容に値「1000b」を加えたものがSSレジスタへコピーされる。これによってCSセレクタのインデックス・フィールドを実効的にインクリメントし、こうして得られたSSセレクタがCSデスクリプタの後、デスクリプタ・テーブル内の次のデスクリプタをポイントするようにする。ターゲットEIPアドレス・フィールドの内容は命令ポインタ(EIP)レジスタへコピーされ、実行すべき最初の命令のアドレスを指定する。
SYSCALL命令に対応するSYSRET命令の実行前の何らかの時点で、オペレーティング・システムは呼出しコードのコード・セグメント(CS)の値を、SYSCALL/SYSRETターゲット・アドレス・レジスタ(STAR)200のSYSRET CSセレクタ及びSSセレクタ・ベースへ書き込む。SYSRET命令はECXレジスタからの戻りEIPアドレスを取得する。
本発明の1つの態様によれば、方法が提供される。本方法は非セキュリティ(insecure)ルーチンを実行し非セキュリティルーチンからの要求を受信することを含む。本方法はまた、ハードウェアに於いて要求の第1の評価を実行し、ソフトウェアに於いてセキュリティ(secure)ルーチンでの要求の第2の評価を実行することを含む。
本発明の別の態様によれば、コンピュータ・システムが提供される。本コンピュータ・システムはセキュリティルーチンと非セキュリティルーチンを実行するように構成可能なプロセッサを含む。本コンピュータ・システムは非セキュリティルーチンに関連する要求の第1の評価を実行するように結合されたハードウェアも含む。ハードウェアはさらにセキュリティルーチンへの要求の通知を提供するように構成される。セキュリティルーチンは要求の第2の評価を実行するように構成される。セキュリティルーチンはさらに要求への要求された応答を拒否するように構成される。
本発明は各種変更や代替の形態を許容するものであるが、本発明の特定の実施例が例として図面に図示してありまた本明細書で詳細に説明されている。しかし特定実施例の本明細書での説明は、開示された特定の形態に本発明を制限することを意図したものではなく、むしろ本発明は添付の請求の範囲で定義される本発明の趣旨と範囲とに納まる全ての変更、等価物、代替物を包含することを意図していることは理解されるべきである。
本発明は添付の図面を参照しつつ以下の詳細な説明を熟読することで理解されよう。図面に於いて同一の参照番号は同様の要素を表す。
本発明の図示した実施例について以下で説明する。簡明のため、実際の実施の全ての特徴が本明細書で説明されているわけではない。当然のことながらこのような実際の実施例の開発に当たっては数多くの実装特有の決定を行って、例えばシステム関連及びビジネス関連の制限との適合性など、開発者の特定の目標を実現する必要があり、これは実施毎に変化するものであることは理解されるであろう。さらに、このような開発努力は複雑でありまた時間がかかるが、本開示の恩恵を有する当業者には尚且つ日常的な保証であろうことも理解されよう。
図3をここで参照すると、本発明によるシステム300の1実施例が図示してある。システム300はプロセッシング・ユニット310、例えばキーボード330、マウス340、入力ペン350、モニタなどのディスプレイ・ユニット320など複数の入出力デバイスを含む。本発明で開示されるセキュリティレベル・システムは1実施例に於いてプロセッシング・ユニット310に存在する。本発明の1つの態様によれば、入出力デバイス330,340,350の一つからの入力は、プロセッシング・ユニット310に於いて、オペレーティング・システムを含む1つ又はそれ以上のソフトウェア構造体の実行を開始する。システム300内に存在するI/O空間及び/又はI/O空間に関連するメモリがアクセスされて、プロセッシング・ユニット310に存在する各種ソフトウェア構造体を実行する。本発明の実施例は1つ又はそれ以上のソフトウェア構造体によって開始されたI/O空間アクセスを、システム300内にプログラムされた所定のセキュリティエントリに基づいて制限することができる。
図4Aはコンピュータ・システム400Aの1実施例の略図で、これにはCPU402、システム又は「ホスト」ブリッジ404、メモリ406、第1のデバイス・バス408[例えばPCI(peripheral component interconnect)バス]、デバイス・バス・ブリッジ410、第2のデバイス・バス412[例えばISA(industry standard architecture)バス]、及び4台のデバイス・ハードウェア・ユニット414A〜414Dを含む。ホスト・ブリッジ404はCPU402、メモリ406、第1のデバイス・バス408へ接続される。ホスト・ブリッジ404はCPU402と第1のデバイス・バス408の間で信号を変換し、メモリ406をCPU402と第1のデバイス・バス408へ動作的に接続する。デバイス・バス・ブリッジ410は第1のデバイス・バス408と第2のデバイス・バス412の間に接続されて第1のデバイス・バス408と第2のデバイス・バス412の間で信号を変換する。
図4Aの実施例に於いて、デバイス・ハードウェア・ユニット414Aと414Bは第1のデバイス・バス408へ接続され、デバイス・ハードウェア・ユニット414Cと414Dは第2のデバイス・バス412へ接続される。デバイス・ハードウェア・ユニット414A〜414Dの1台又はそれ以上は、例えばストレージ・デバイス(例えばハードディスク・ドライブ装置、フロッピードライブ装置、CD−ROMドライブ装置など)、通信デバイス(例えばモデムやネットワーク・アダプタなど)又は入出力デバイス(例えばビデオ・デバイス、オーディオ・デバイス、及びプリンタなど)でも良い。他の実施例に於いてホスト・ブリッジ404は図4Aに図示してあるCPU402の一部をなすことがあることに注意する。
図4Bの実施例に於いて、CPU404は入出力(I/O)セキュリティチェック・ユニット(SCU)415を含む。デバイス・ハードウェア・ユニット414A〜414DはCPU404のI/O空間の各種I/Oポートへマッピングされ、CPU404はデバイス・ハードウェア・ユニット414A〜414Dと対応するI/Oポート経由で通信する。この状況で、I/OSCU415はデバイス・ハードウェア・ユニット414A〜414DをCPU404によって生成された無許可アクセスから保護するために使用する。他の実施例に於いてホスト・ブリッジ404は図4Bに図示してあるCPU404の一部をなすことがあることに注意する。
図4Cの実施例に於いて、CPU402はCPUセキュリティチェック・ユニット(SCU)416を含みホスト・ブリッジ404はホスト・ブリッジSCU418を含む。詳細に後述するように、CPUSCU416はCPU402によって生成された無許可アクセス(すなわち「ソフトウェアが開始したアクセス」)からメモリ406を保護し、ホスト・ブリッジSCU418はデバイス・ハードウェア・ユニット414A〜414Dによって開始された無許可アクセス(すなわち「ハードウェアが開始したアクセス」)からメモリ406を保護する。
図5Aは図4A又は図4Bのコンピュータ・システム400の各種ハードウェア及びソフトウェア要素の間の関係を示す略図である。図5の実施例に於いて、多数のアプリケーション・プログラム500、オペレーティング・システム502、セキュリティカーネル504、及びデバイス・ドライバ506A〜506Dがメモリ406に格納される。アプリケーション・プログラム500、オペレーティング・システム502、セキュリティカーネル504、デバイス・ドライバ506A〜506DはCPU402によって実行される命令を含む。オペレーティング・システム502はユーザ・インタフェースとソフトウェア「プラットホーム」を提供し、その上でアプリケーション・プログラム500が動作する。オペレーティング・システム502は、例えば、ファイルシステム管理、プロセス管理、及び入出力(I/O)制御を含む基本サポート関数も提供する。
オペレーティング・システム502は、基本セキュリティ関数も提供する。例えば、CPU402はx86命令セットの命令を実行するx86プロセッサである。この状況で、CPU402は前述したような保護モードに於いて仮想メモリと物理メモリの双方の保護機能を提供するように特化したハードウェア要素を含むことができる。オペレーティング・システム502は例えば、保護モードでCPU402を動作させるオペレーティング・システムのウィンドウズ(登録商標)ファミリーの一つであり、保護モードで仮想メモリとメモリ双方の保護を提供するように特化したハードウェア要素を使用する。セキュリティカーネル504はオペレーティング・システム502によって提供されるセキュリティ機能の上に追加のセキュリティ関数を提供し、例えばメモリ406に格納されたデータを無許可アクセスから保護する。
図5Aの実施例に於いて、デバイス・ドライバ506A〜506Dは、各々が対応するデバイス・ハードウェア・ユニット414A〜414Dへ動作的に関連しまた結合される。デバイス・ハードウェア・ユニット414Aと414Dは、例えば、「セキュリティ」デバイスでありこれに対応するデバイス・ドライバ506Aと506Dが「セキュリティ」デバイス・ドライバである。セキュリティカーネル504はオペレーティング・システム502とデバイス・ドライバ506Aと506Dの間に結合されてアプリケーション・プログラム500とオペレーティング・システム502による全てのアクセスをモニタし、デバイス・ドライバ506A及び506Dとこれに対応するセキュリティデバイス414A及び414Dをセキュリティ化する。セキュリティカーネル504はアプリケーション・プログラム500とオペレーティング・システム502によるデバイス・ドライバ506Aと506D及びこれに対応するセキュリティデバイス414Aと414Dへの無許可アクセスを防止する。デバイス・ドライバ506Bと506Cは逆に「非セキュリティ」デバイス・ドライバであり、これに対応するデバイス・ハードウェア・ユニット414Bと414Cが「非セキュリティ」デバイス・ハードウェア・ユニットである。デバイス・ドライバ506Bと506C及びこれに対応するデバイス・ハードウェア・ユニット414Bと414Cは例えば「レガシー」デバイス・ドライバ及びデバイス・ハードウェア・ユニットである。
他の実施例に於いて、セキュリティカーネル504はオペレーティング・システム502の一部をなすことがあることに注意する。さらに別の実施例に於いて、セキュリティカーネル504、デバイス・ドライバ506Aと506D、及び/又はデバイス・ドライバ506Bと506Cはオペレーティング・システム502の一部をなすことがある。
図5Bに示してあるように、セキュリティカーネル504はI/OSCU417へ結合される。詳細には後述するように、I/OSCU216はI/Oアドレス空間内のI/Oポートへのソフトウェアにより開始されたアクセスを全てモニタして、I/Oポートへの許可されたアクセスだけを許容する。
図5Cに示してあるように、セキュリティカーネル504はCPUSCU416及びホスト・ブリッジSCU418に(例えば、1つ又はそれ以上のデバイス・ドライバ経由で)結合される。詳細には後述するように、CPUSCU416とホスト・ブリッジSCU418はメモリ406へのアクセスを制御する。CPUSCU416はメモリ406へのソフトウェアにより開始されたアクセスを全てモニタし、ホスト・ブリッジSCU418はメモリ406へのハードウェアにより開始されたアクセスを全てモニタする。セキュリティカーネル504によって一端構成されると、CPUSCU416とホスト・ブリッジSCU418はメモリ406及びI/O空間へ許可されたアクセスだけを許容する。一実施例に於いて、CPUSCU416はレジスタ空間を保護する点に注意する。
図6Aは図4Aのコンピュータ・システム400AのCPU402の1実施例の略図である。図6Aの実施例に於いて、CPU402Aは実行ユニット600、メモリ管理ユニット(MMU)602、キャッシュ・ユニット604、バス・インタフェース・ユニット(BIU)606、制御レジスタ608のセット、セキュリティ実行モード(SEM)レジスタ610のセットを含む。SEMレジスタ610のセットは図4Aのコンピュータ・システム400A内部にセキュリティ実行モード(SEM)を実装するために使用される。SEMレジスタ610はセキュリティカーネル504によってアクセスされる(すなわち書き込み及び/又は読み出しされる)。
図6Aの実施例に於いて、SEMレジスタ610のセットはセキュリティ実行モード(SEM)ビット609を含む。図4Aのコンピュータ・システム400Aは例えば、(i)CPU402がx86保護モードで動作するx86プロセッサであり、(ii)メモリ・ページングが有効になっていて、かつ(iii)SEMビットが「1」にセットされている場合に、セキュリティ実行モード(SEM)で動作する。SEMにおける動作やSEMの他の動作を示すその他の方法も使用できる。
一般に、制御レジスタ608のセットの内容を用いてCPU402の動作を管理する。したがって、制御レジスタ608のセットの内容は実行ユニット600、MMU602、キャッシュ・ユニット604,及び/又はBIU606の動作を管理するために使用される。制御レジスタ608のセットは例えば、x86プロセッサ・アーキテクチャの多数の制御レジスタ群を含むことができる。
CPU402の実行ユニット600は命令(例えばx86命令)とデータをフェッチし、フェッチした命令を実行し、命令実行中に信号(例えばアドレス、データ、及び制御信号)を生成する。実行ユニット600はキャッシュ・ユニット604に接続されて、キャッシュ・ユニット604とBIU606経由でメモリ406からの命令を受信する。実行ユニット600は実装により、標準命令、セキュリティ命令、及び/又はマイクロコードを実行できることに注意する。一実施例に於いて、CPU402で実行するマイクロコードはハードウェアでありソフトウェアではない。
コンピュータ・システム400Aのメモリ406(例えば図4A)は多数のメモリ位置(memory location)を含み、各々がユニークな物理アドレスを有する。ページングを有効にした保護モードで動作する場合、CPU402のアドレス空間はページ・フレーム又は「ページ」と呼ばれる多数のブロックに分割される。他の実施例に於いて、メモリは定義が異なるメモリ領域に分割されるか又はこれを介してアクセスされる。代表的には、ページ群の一部に対応するデータだけが任意の時刻にメモリ406内に格納されている。
図6Aの実施例に於いて、命令実行中に実行ユニット600によって生成されたアドレス信号はセグメント化(すなわち「論理」)アドレスを表現する。MMU602は実行ユニット600によって生成されたセグメント化アドレスを、これに対応するメモリ406の物理アドレスへ変換する。MMU602はキャッシュ・ユニット604へ物理アドレスを提供する。キャッシュ・ユニット604は比較的小さなストレージ・ユニットで、実行ユニット600によって最近フェッチされた命令とデータを格納するために使用される。BIU606はキャッシュ・ユニット604とホスト・ブリッジ404の間に結合されており、ホスト・ブリッジ404経由でメモリ406から、キャッシュ・ユニット604に存在しない命令とデータをフェッチするために使用される。キャッシュ・ユニット604の使用はオプションだがCPU402の大幅な動作効率化を有利に提供できる点に注意する。
図4Aのコンピュータ・システム400AがSEMで動作する場合、セキュリティカーネル505はメモリ406に1つ又はそれ以上のセキュリティ属性データ構造(例えばテーブル)を生成し保持する。各メモリ・ページは対応するセキュリティ内容識別(SCID)値を有し、対応するSCID値がセキュリティ属性データ構造内に格納される。MMU602は命令実行中に生成したアドレス(例えば物理アドレス)を用いて1つ又はそれ以上のセキュリティ属性データ構造にアクセスし、対応するメモリ・ページのSCIDを取得する。一般に、コンピュータ・システム400Aはn個の異なるSCID値を有し、ここでnはn≧1の整数である。
図4Aのコンピュータ・システム400AがSEMで動作する場合、セキュリティメカニズムを侵害するソフトウェアによる各種活動がSEMセキュリティ例外を発生する。SEMセキュリティ例外は、x86「SYSENTER」及び「SYSEXIT」命令が動作するのと同様の方法で、一対のレジスタ(例えばモデル固有レジスタ又はMSR)経由でディスパッチされる。一対のレジスタは「セキュリティ例外エントリ・ポイント」レジスタであり、SEMセキュリティ例外が発生した場合の命令実行の分岐目標アドレスを定義する。セキュリティ例外エントリ・ポイント・レジスタはコード・セグメント(CS)を定義し、次いでSEMセキュリティ例外ハンドラ1210(図12参照)へのエントリに使用する命令ポインタ(IP又は64ビット版RIP)、スタック・セグメント(SS)、スタック・ポインタ(SP又は64ビット版RSP)の値を定義する。
ソフトウェアによる制御下で、実行ユニット600は直前のSS、SP/RSP、EFLAGS、CS、IP/RIP値を新しいスタックへプッシュして例外がどこで発生したかを表示する。さらに、実行ユニット600はエラー・コードをスタック上にプッシュする。直前のSS及びSP/RSP値がいつも保存されているので普通の割り込みからの戻り(IRET)命令は使用できず、またスタック・スイッチは、現在の特権レベル(CPL)の変更が行われない場合であっても必ず遂行される。したがって、新規命令はSEMセキュリティ例外ハンドラ1210(SMRET)からの戻り値を実行するように定義される。
図6Bは図4Bのコンピュータ・システム400BのCPU402Bの1実施例の略図である。図6Aの実施例に於いて、CPU402Bは実行ユニット600、メモリ管理ユニット(MMU)602、キャッシュ・ユニット604、バス・インタフェース・ユニット(BIU)606、制御レジスタ608のセット、及びセキュリティ例外モード(SEM)レジスタ610のセットを含む。BIU606はホスト・ブリッジ404(図2)へ結合されCPU402Bとホスト・ブリッジ404の間のインタフェースを形成する。BIU606はホスト・ブリッジ404経由でメモリ404(図2)へも結合され、CPU402Bとメモリ404との間のインタフェースを形成する。図6Aの実施例に於いて、I/OSCU417はBIU606内に配置される。
SEMレジスタ610のセットは図4Bのコンピュータ・システム400B内部でセキュリティ実行モード(SEM)を実装するために使用され、I/OSCU417の動作はSEMレジスタ610のセットの内容によって規制される。SEMレジスタ610はセキュリティカーネル504によりアクセス(すなわち書き込み及び/又は読み出し)される。
図6Bの実施例に於いて、SEMレジスタ610のセットはSEMビット609を含む。図4Bのコンピュータ・システム400Bは例えば、(i)CPU402Bがx86保護モードで動作するx86プロセッサであり、(ii)メモリ・ページングが有効になっていて、かつ(iii)SEMビットが「1」にセットしてある場合にSEMで動作する。
一般に、制御レジスタ608のセットの内容がCPU402Bの動作を規制する。したがって、制御レジスタ608のセットの内容は、実行ユニット600、MMU602、キャッシュ・ユニット604、及び/又はBIU606の動作を規制する。制御レジスタ608のセットは例えばx86プロセッサ・アーキテクチャの多数の制御レジスタ群を含むことができる。
CPU402Bの実行ユニット600は命令(例えばx86命令)とデータをフェッチし、フェッチした命令を実行し、命令実行中に信号(例えばアドレス、データ、及び制御信号)を生成する。実行ユニット600はキャッシュ・ユニット604と結合され、キャッシュ・ユニット604及びBIU606経由でメモリ406から命令を受信できる。
コンピュータ・システム400Bのメモリ406は多数のメモリ位置を含み、その各々がユニークな物理アドレスを有する。ページングを有効にした保護モードで動作する場合、CPU402Bのアドレス空間はページ・フレーム又は「ページ」と呼ばれる多数のブロックに分割される。その他のメモリ単位又は分割も企図される。ページ群の一部に対応するデータだけが任意の時刻にメモリ406内に格納されている。図6Bの実施例に於いて、命令実行中に実行ユニット600によって生成されたアドレス信号はセグメント化された(すなわち「論理」)アドレスを表現する。MMU602は実行ユニット600によって生成されたセグメント化アドレスをメモリ406の対応する物理アドレスへと変換する。MMU602はキャッシュ・ユニット604へ物理アドレスを提供する。キャッシュ・ユニット604は比較的小さなストレージ・ユニットで、実行ユニット600によって最近フェッチされた命令とデータを格納するために使用される。
BIU606はキャッシュ・ユニット604とホスト・ブリッジ404の間に結合される。BIU606はホスト・ブリッジ404経由でメモリ406から、キャッシュ・ユニット604に存在しない命令とデータをフェッチするために使用される。BIU606はI/OSCU417も含む。I/OSCU417はSEMレジスタ610、実行ユニット600、MMU602へ結合される。前述したように、I/OSCU417はI/Oアドレス空間内のI/Oポートに対するソフトウェアによって開始されたアクセスを全てモニタし、I/Oポートへの許可されたアクセスだけを通過させる。
図6Cは図4Cのコンピュータ・システム400CのCPU402Cの1実施例の略図である。図6Cの実施例に於いて、CPU402Cは実行ユニット600、メモリ管理ユニット(MMU)602、キャッシュ・ユニット604、バス・インタフェース・ユニット(BIU)606、制御レジスタ608のセット、セキュリティ実行モード(SEM)レジスタ610のセットを含む。CPUSCU416はMMU602内部に配置される。
SEMレジスタ610のセットは図4Cのコンピュータ・システム400C内部にSEMを実装するために使用され、CPUSCU416とホスト・ブリッジSCU418の動作はSEMレジスタ610のセットの内容によって規制される。SEMレジスタ610はセキュリティカーネル504からアクセス(すなわち書き込み及び/又は読み出し)される。図4Cのコンピュータ・システム400Cは例えば(i)CPU402がx86保護モードで動作するx86プロセッサであり、(ii)メモリ・ページングが有効になっていて、かつ(iii)SEMレジスタ610の内容がSEM動作を指定している場合にSEMで動作する。
図6Cの実施例に於いて、SEMレジスタ610のセットはSEMビット609を含む。コンピュータ・システム400Cの動作モードには「通常実行モード」と「セキュリティ実行モード」(SEM)を含む。コンピュータ・システム400Cは通常の場合通常実行モードで動作する。SEMレジスタ610のセットを使用してコンピュータ・システム400C内部にSEMを実装する。SEMレジスタ610はセキュリティカーネル504によりアクセス(すなわち書き込み及び/又は読み出し)される。コンピュータ・システム400Cは例えば、(i)CPU402Cがx86保護モードで動作するx86プロセッサであり、(ii)メモリ・ページングが有効になっていて、かつ(iii)SEMビット609が「1」にセットしてある場合にSEMで動作する。
一般に、制御レジスタ608のセットの内容がCPU402Cの動作を規制する。したがって、制御レジスタ608のセットの内容は、実行ユニット600、MMU602、キャッシュ・ユニット604、及び/又はBIU606の動作を規制する。制御レジスタ608のセットは例えばx86プロセッサ・アーキテクチャの多数の制御レジスタ群を含むことができる。
CPU402Cの実行ユニット600は命令(例えばx86命令)とデータをフェッチし、フェッチした命令を実行し、命令実行中に信号(例えばアドレス、データ、及び制御信号)を生成する。実行ユニット600はキャッシュ・ユニット604と結合され、キャッシュ・ユニット604及びBIU606経由でメモリ406から命令を受信できる。
コンピュータ・システム400Cのメモリ406は多数のメモリ位置を含み、その各々がユニークな物理アドレスを有する。ページングを有効にした保護モードで動作する場合、CPU402のアドレス空間はページ・フレーム又は「ページ」と呼ばれる多数のブロックに分割される。その他のメモリ単位又は分割も企図される。前述したように、ページ群の一部に対応するデータだけが任意の時刻にメモリ406内に格納されている。図6Cの実施例に於いて、命令実行中に実行ユニット600によって生成されたアドレス信号はセグメント化された(すなわち「論理」)アドレスを表現する。後述するように、MMU602は実行ユニット600によって生成されたセグメント化アドレスをメモリ406の対応する物理アドレスへと変換する。MMU602はキャッシュ・ユニット604へ物理アドレスを提供する。キャッシュ・ユニット604は比較的小さなストレージ・ユニットで、実行ユニット600によって最近フェッチされた命令とデータを格納するために使用される。BIU606はキャッシュ・ユニット604とホスト・ブリッジ404の間に結合され、ホスト・ブリッジ404経由でメモリ406から、キャッシュ・ユニット604に存在しない命令とデータをフェッチするために使用される。
図6Dはコンピュータ・システム400のCPU402の別の実施例の略図である。図6Dの実施例に於いて、CPU402Dは、実行ユニット600、メモリ管理ユニット(MMU)602、キャッシュ・ユニット604、バス・インタフェース・ユニット(BIU)606、制御レジスタ608のセット、及び図6Aに関連して前述したセキュリティ実行モード(SEM)レジスタ610のセットを含む。さらに、CPU602Dはマイクロコード・エンジン650と、セキュリティチェック・コード654を含むマイクロコード・ストア652とを含む。マイクロコード・エンジン650は実行ユニット600、MMU602、キャッシュ・ユニット604、BIU606、制御レジスタ608のセット、SEMレジスタ610のセットに接続されている。接続は共有バス構造として図示してあるが、その他の接続も企図される。マイクロコード・エンジン650はマイクロコード・ストア652に格納されているマイクロコード命令を実行し、実行ユニット600、MMU602、キャッシュ・ユニット604、及びBIU606の動作を制御し、またマイクロコード命令によっては、制御レジスタ608のセットの内容、SEMレジスタ610のセットの内容を制御する信号を発生する。図6Dの実施例に於いて、マイクロコード・ストア652に格納されているマイクロコード命令を実行するマイクロコード・エンジン650は1台又はそれ以上のCPUSCU416とI/OSCU417を置き換えることができる。x86実施例に於いて、マイクロコード・エンジン650はx86命令セットのさらに複雑な命令を実行する際に実行ユニット600の支援もする。
例えば、I/O命令が実行のために実行ユニット600へ転送された場合、実行ユニット600はマイクロコード・エンジン650へI/O命令の存在を通知する。マイクロコード・エンジンはMMU602とBIU606へ信号を発行する。マイクロコード・エンジン650からの信号に応答して、MMU602はBIU606へのI/O命令を含むメモリ・ページのセキュリティ内容識別(SCID)値を提供する。実行ユニット600はI/O命令によってアクセスされたI/Oポート番号をBIU606へ提供する。
マイクロコード・エンジン650からの信号に応答して、BIU606はセキュリティ内用識別(SCID)値と受信したI/Oポート番号とを用いてSEMI/O許可(permission)ビットマップ2200、2300(図22及び図23参照)へアクセスし、SEMI/O許可ビットマップ2200,2300から対応するビットをマイクロコード・エンジン650へ提供する。SEMI/O許可ビットマップ2200,2300からの対応するビットが「0」にクリアされている場合、マイクロコード・エンジン650はI/O命令の実行完了に於いて実行ユニット600を支援し続けることができる。他方対応するビットが「1」にセットされている場合、マイクロコード・エンジン650は実行ユニット600に信号を送ってI/O命令の実行を停止させ、SEM例外ハンドラ1210の命令実行を開始させる。
また実行ユニット600は標準命令、セキュリティ命令、及び/又はマイクロコードを実装により実行できることに注意する。つまり、一実施例に於いて、実行ユニット600とマイクロコード・エンジン650の双方がマイクロコードを実行する。
図7は例えばx86実施例を説明した図6Cなどに図示してある、MMU602の1実施例の略図である。図7の実施例に於いて、MMU602はセグメンテーション・ユニット700、ページング・ユニット702、セグメンテーション・ユニット700とページング・ユニット702の出力間で選択を行って物理アドレスを作成するための選択論理704とを含む。図7に図示してあるように、セグメンテーション・ユニット700は実行ユニット600からセグメント化アドレスを受信し、x86プロセッサ・アーキテクチャにあるセグメント化アドレスからリニア・アドレスへの周知の変換メカニズムを使用して、出力に対応するリニア・アドレスを発生する。図7に図示してあるように、「PAGING」信号によって有効にされた場合、ページング・ユニット702はセグメンテーション・ユニット700によって作成されたリニア・アドレスを受信してこれに対応する物理アドレスを出力に発生する。PAGING信号はx86プロセッサ・アーキテクチャの制御レジスタ0(CR0)と制御レジスタ608とにあるページング・フラグ(PG)ビットをミラーする。PAGING信号が停止された場合、メモリのページングは有効でなくなり、選択論理704は物理アドレスとしてセグメンテーション・ユニット700から受信したリニア・アドレスを発生する。
PAGING信号が発行されると、メモリのページングが有効になり、ページング・ユニット702は、x86プロセッサ・アーキテクチャのリニア・アドレスから物理アドレスへの変換メカニズムを使用して、セグメンテーション・ユニット700から受信したリニア・アドレスをこれに対応する物理アドレスに変換する。リニア・アドレスから物理アドレスへの変換演算中に、選択したページ・ディレクトリ・エントリと選択したページ・テーブル・エントリとにあるU/Sビットの内容が論理積(AND)され、あるページ・フレームへのアクセスが許可されるかどうかかを決定する。同様に、選択したページ・ディレクトリ・エントリと選択したページ・テーブル・エントリとにあるR/Wビットの内容が論理積(AND)されて、ページ・フレームへのアクセスが許可されるかどうかを決定する。U/SビットとR/Wビットの論理的組合せで、ページ・フレームへのアクセスが許可されることを示している場合、ページング・ユニット702はリニア・アドレスから物理アドレスへの変換演算によって得られた物理アドレスを発生する。選択論理704はページング・ユニット702が発生した物理アドレスを受信し、物理アドレスとしてページング・ユニット702から受信した物理アドレスを発生し、物理アドレスをキャッシュ・ユニット604へ提供する。
他方、U/SビットとR/Wビットの論理的組合せで、ページ・フレームへのアクセスが許可されないことを示している場合、ページング・ユニット702はリニア・アドレスから物理アドレスへの変換演算中に物理アドレスを発生しない。その代わり、ページング・ユニット702はページ・フォールト(PF)信号を発行し、MMU602がPF信号を実行ユニット600へ転送する。PF信号に応答して、実行ユニット600は例外ハンドラ・ルーチンを実行し、最終的にPF信号が発行された時点で実行されているアプリケーション・プログラム500の一つの動作を最終的に停止させる。
図7の実施例に於いて、CPUSCU416はMMU602のページング・ユニット702内部に配置されている。ページング・ユニット702は最近決定された比較的少数のリニア・アドレスから物理アドレスへの変換を格納するための変換ルックアサイド・バッファ(TLB)も含んでいる。
図8Aは図4のI/OSCU515の1実施例を示す略図である。図8Aの実施例に於いて、I/OSCU417はセキュリティチェック論理800Aを含む。セキュリティチェック論理800Aは「イネーブル(ENABLE)」信号とI/Oポート番号とをコンピュータ・システム400から受信し、またMMU602からSCID値を受信する。実行ユニット600はI/Oアドレス空間内の「目標」I/OポートにアクセスするI/O命令を実行する前にイネーブル信号を発行する。I/Oポート番号は目標I/Oポートの番号である。SCID値はI/O命令を含むメモリ・ページのセキュリティ内容レベルを表す。
コンピュータ・システムがSEMで動作する場合、セキュリティカーネル504はメモリ406に1つ又はそれ以上のセキュリティ属性データ構造(例えばテーブル)を生成して保持する。各メモリ・ページはこれに対応するSCID値を有し、対応するSCID値はセキュリティ属性データ構造内に格納される。MMU602は命令実行中に生成されたアドレスを使用して(例えば物理アドレス)、該1つ又はそれ以上のセキュリティ属性データ構造へアクセスし、対応するメモリ・ページのSCIDを取得する。一般に、コンピュータ・システム400はn個の異なるSCID値を有しており、ここでnはn≧1の整数である。
コンピュータ・システム400がSEMで動作している場合、セキュリティカーネル504もメモリ406内にSEM I/O許可(permission)ビットマップ2200、2300(例えば図22〜23)を生成して保持する。実行ユニット600があるタスクのI/O命令を実行する場合、CPU402B内部の論理が最初にタスクのCPLをI/O特権レベル(IOPL)と比較する。タスクのCPLが少なくともIOPLと同じ特権レベルである(すなわち数値的には小さいか等しい)場合、CPU402B内部の論理はSEMI/O許可ビットマップ2200,2300をチェックする。他方、タスクのCPLがIOPLと同等の特権にない(すなわち数値的には大きい)場合、実行ユニット600はI/O命令を実行しないことになる。一実施例に於いて、一般保護フォールト(GPF)が発生する。
実行ユニット600がイネーブル信号を発行した場合、セキュリティチェック論理800Aはイネーブル信号と、受信したSCID値と、受信したI/Oポート番号とをBIU406内の論理へ提供する。BIU406内部の論理はSCID値と受信したI/Oポート番号とを使用してSEMI/O許可ビットマップ2200,2300へアクセスし、SEMI/O許可ビットマップ2200,2300からの対応するビットをセキュリティチェック論理800Aへ提供する。SEMI/O許可ビットマップ2200,2300からの対応するビットが「0」にクリアされている場合、セキュリティチェック論理800Aは実行ユニット600へ提供される出力「実行(EXECUTE)」信号を発行する。発行されたEXECUTE信号に応答して、実行ユニット600はI/O命令を実行する。他方で、対応するビットが「1」にセットされている場合には、セキュリティチェック論理800Aは実行ユニット600へ提供される出力「SEM SECURITY EXCEPTION」信号を発行する。発行されたSEM SECURITY EXCEPTION信号に応答して、実行ユニット600はI/O命令を実行せず、その代わりにSEM例外ハンドラを実行する(以下を参照)。
I/O命令が16ビット・ワードI/Oポート又は32ビット・ダブルワードI/Oポートへのアクセスを試みる場合、実行ユニット600は多バイトI/Oポート番号をセキュリティチェック論理800Aに連続して提供する。セキュリティチェック論理800AがバイトI/Oポート番号の各々についてEXECUTE信号を発行する場合、実行ユニット600はI/O命令を実行できる。他方で、セキュリティチェック論理800AがバイトI/Oポート番号の1つ又はそれ以上についてSEM SECURITY EXCEPTIONを発行する場合、実行ユニット600はI/O命令を実行せず、その代わりとしてSEM例外ハンドラを実行する。
図8BはCPUSCU416の1実施例の略図である。図8Bの実施例に於いて、CPUSCU417はSEMレジスタ610のセットに接続されたセキュリティチェック論理800Bとセキュリティ属性テーブル(SAT)エントリ・バッファ802とを含む。SATエントリ1225(図12参照)はページ・ディレクトリのU/S及びR/Wビットとメモリ・ページに対応するページ・テーブル・エントリ上に追加のセキュリティ情報を含む。セキュリティチェック論理800BはSATエントリ1225の任意の一つの内部に格納された追加セキュリティ情報を使用して、対応するメモリ・ページへの無許可のソフトウェアが開始したアクセスを防止する。SATエントリ・バッファ802は最近アクセスしたメモリ・ページの比較的少数のSATエントリ1225を格納するために使用される。
前述したように、SEMレジスタ610のセットはコンピュータ・システム400内部にSEMを実装するために使用できる。SEMレジスタ610のセットの内容はI/OSCU417の動作を規制する。セキュリティチェック論理800Bは図8Bに図示してある通信バスを経由してMMU602からSATエントリ・バッファ802に格納されるべき情報を受信する。セキュリティチェック論理800Bは又ページング・ユニットによって発生した物理アドレスも受信する。
図9は、SEMセキュリティ例外を処理するために使用される、セキュリティモードSMCALL/SMRET目標アドレス・レジスタ(SMSTAR)900とセキュリティモードGSベース(SMGSBASE)レジスタ902の略図である。
セキュリティ上の理由から、SEMセキュリティ例外メカニズムは、SEMセキュリティ例外が発生した場合、いずれかのロード制御レジスタ又はデータ構造を頼ることができずSEM例外ハンドラ及びスタックのアドレスを提供することができない。
SMSTARレジスタ900は「SMRET CSセレクタ及びSSセレクタ・ベース」フィールド、「SMCALL CSセレクタ及びSSセレクタ・ベース」フィールド、「目標EIPアドレス」フィールドを含む。SMGSBASEレジスタ902はセキュリティモードGSベースアドレスを含む。SMSTARレジスタ900とSMGSBASEレジスタ902に格納される値は代表的にはブート時にセットされる。
図10AはSEM例外が発生した場合にオペレーティング・システム502によって生成されたSEM例外スタック・フレーム1000の1実施例の略図である。SEM例外スタック・フレーム1000はGS[00h]で始まる。
エラー・コードはSEM例外スタック・フレーム1000内でGS[00h]にある。フォールトを発生したアプリケーションの命令ポインタ(EIP)の内容はSEM例外スタック・フレーム1000内のGS[04h]にある。フォールトを発生したアプリケーションのコード・セグメント(CS)レジスタの内容はSEM例外スタック・フレーム1000内のGS[08h]にある。フォールトを発生したアプリケーションのフラグ(EFLAGS)レジスタの内容はSEM例外スタック・フレーム1000内のGS[0Ch]にある。フォールトを発生したアプリケーションのスタック・ポインタ(ESP)レジスタの内容はSEM例外スタック・フレーム1000内のGS[10h]にある。フォールトを発生したアプリケーションのスタック・セグメント(SS)レジスタの内容はSEM例外スタック・フレーム1000内のGS[14h]にある。
図10Bは図10AのSEM例外スタック・フレーム1000のエラー・コードの代表的フォーマット1010の略図である。図10Bの実施例に於いて、エラー・コード・フォーマットはライト/リード(W/R)ビット、ユーザ/スーパーバイザ(U/S)ビット、モデル固有レジスタ(MSR)ビット、システム管理割り込み(SMI)ビットを含む。SEMセキュリティ例外が書き込み演算中に発生した場合にはライト/リード(W/R)ビットが「1」になり、SEMセキュリティ例外が読み出し又は実行演算中に発生した場合には「0」になる。ユーザ/スーパーバイザ(U/S)ビットは、セキュリティ例外モード(SEM)例外がユーザ・モード(CPL=3)で発生した場合に「1」になり、SEMセキュリティ例外がスーパーバイザ・モード(CPL=0)で発生した場合に「0」になる。
モデル固有レジスタ(MSR)ビットはSEMセキュリティ例外がセキュリティモデル固有レジスタ(MSR)へのアクセス試行中に発生した場合「1」となり、SEMセキュリティ例外がセキュリティMSRへのアクセス試行中に発生しなかった場合に「0」となる。システム管理割り込み(SMI)ビットはSEMセキュリティ例外がシステム管理割り込み(SMI)の間に発生した場合「1」となり、SEMセキュリティ例外がSMIの間に発生しなかった場合「0」となる。
図11は本発明の一つの態様によるSEMセキュリティ例外を処理する方法1100の実施例のフローチャートを示す。方法1100はブロック1105で、ハードウェア経由又はソフトウェア経由いずれかで、例えばSMCALL命令経由で、SEMセキュリティ例外を生成するステップを含む。方法1100はブロック1110に於いてベース・アドレスにオフセットを加えた位置にSEMスタック・フレーム1000を作成するステップを含む。セキュリティモードGSベースアドレスはSMGSBASEレジスタ902から読み出される。SEMスタック・ポインタはセキュリティモードGSベースアドレスからSEMスタック・フレーム内のバイト数だけオフセットして形成される。SEM例外スタック・フレーム1000はSMGSBASEレジスタ902に格納されたセキュリティモードGSベースアドレスによって示されている位置にエラー・コードがあるようにメモリ内に書き込まれる。SEMセキュリティ例外のエラー・コードはSEM例外ハードウェアによって生成される。SEMセキュリティ例外それ自体はオペレーティング・システム502によって、デバイス・ドライバ・コード506によって、アプリケーション・コード500によって、などで生成される。フォールトを発生したコード・セグメント値は図10Aに図示してあるようにGS空間内に書き込まれる。
方法1100は次に、ブロック1115で、目標EIPアドレスとSMCALL CS及びSSセレクタの値をSMSTARレジスタ900から読み出して、目標EIPアドレスとSMCALL CS及びSSセレクタ値を適当なレジスタに書き込む。目標EIPアドレスはEIPレジスタ内にロードされる。CSセレクタ値はCSレジスタにロードされ、SSセレクタ値はSSレジスタにロードされる。SSセレクタ・アドレスはCSセレクタ・アドレスから派生できる。目標EIPアドレスはSEMセキュリティ例外ハンドラ・コードの最初の命令を示す。
方法1100は、ブロック1120でSWAPGS命令も実行する。SWAPGS命令の実行でCPU402内にキャッシュされているGSセグメント・デスクリプタのベース・アドレスとSMGSBASEレジスタ902の内容とを入れ換える。後続のSEMセキュリティ例外ハンドラ命令は、GS空間移動のみアドレシングを使用することで、SEM例外スタック・フレーム1000と、SEM例外スタック・フレーム1000より上又は下のメモリへアクセスできる。GS空間アドレシングはSEMセキュリティ例外ハンドラにセキュリティメモリを提供する。
セキュリティカーネル504のSEMセキュリティ例外ハンドラは、例えばSEMレジスタ610に格納されている又は本明細書で説明するその他のセキュリティ化手段など、セキュリティビットによって保護された数ページの仮想メモリを含む。SEMセキュリティ例外ハンドラは例えばSEMレジスタ610に格納されている又は本明細書で説明するその他のセキュリティ化手段などのセキュリティビットによって保護された数ページの保護物理メモリを含む。
方法1100は次にブロック1120でエラー・コードをパースする。エラーコード・ビットは、一度に一つづつ、SEMセキュリティ例外の発生源が決定されるように、パースされる。随意に、方法1100はSEMセキュリティ例外が発生する前に実行されたか実行の準備がなされた1つ又はそれ以上の命令を、ブロック1130でデコードする。特定の命令とそのオペランドがSEMセキュリティ例外の発生源についての付加情報を提供できる。方法1100はブロック1135でエラー・コードに基づいて、また可能ならSEMセキュリティ例外の生成の原因となった命令に先行する又はその後続の命令に基づいてSEMセキュリティ例外を評価する。ブロック1135の評価は参照テーブルを参照すること、又はセキュリティアルゴリズムを実行することを含む。参照テーブルは1つ又はそれ以上のエラー・コード、1ビット又はそれ以上のエラー・コード、及び1つ又はそれ以上の特定命令及び/又はそのオペランドによってインデックス化される。セキュリティアルゴリズムはセキュリティカーネル504によって実行されるコードツリーを含む。参照テーブルとセキュリティアルゴリズムの両方が正確なハードウェア310その他についてとコンピュータ・システム300に実装されたオペレーティング・システム402について判定する。
ブロック1135で方法1100がSEMセキュリティ例外を評価すると、方法1100はブロック1140で必要に応じてその評価に基づいて機能する。SEMセキュリティ例外は無視され演算を再開することがある。フォールトを発生した命令又はコード・セグメントが無視されることがある。フォールトを発生した命令又はコード・セグメントが内包されフォールトを発生した命令又はコード・セグメントが仮想メモリ又はI/O空間内でプロキシによって実行されるようにする。
方法1100はブロック1145でSEMセキュリティ例外前の構成へコンピュータ・システム300をほぼ復元する。SEMセキュリティ例外ハンドラが終了した場合、ブロック1150で、別のSWAPGS命令が実行されてセキュリティモード・ベースアドレス値を本来の値に戻し、またSMRET命令が実行されて直前のオペレーティングモードに復帰する。SWAPGS命令を実行する際、セキュリティカーネル504はフォールトを発生したコードのコード・セグメント(CS)の値をSMSTARレジスタ900のSMRET CSセレクタ及びSSセレクタ・ベース・フィールドに書き込む。SMRET命令はシステム300を通常モードに戻す。SYSRET命令とは異なり、SMRET命令はCPLを0のままにしておき、EFLAGS.IFビットをセットしない。
1実施例において、方法1100のブロック1105〜1115は主としてハードウェアで実行されるが、ブロック1120〜1145は主としてソフトウェアで実行されることに注意する。別の実施例において、方法1100は主としてソフトウェアで実行される。さらに別の実施例において、方法1100は主としてハードウェアで実行される。一実施例に於いて、EIPアドレスはSEMセキュリティ例外の原因となったかも知れない命令を回避するように変更される。
もう一度図8Bを参照すると、コンピュータ・システム300がSEMで動作している場合、セキュリティチェック論理800Bが現在実行しているタスク(すなわち現在実行している命令)のCPLを受信し、これと同時に通常の制御ビットと、物理アドレスが内部に存在する選択されたメモリ・ページに関連した1つ又はそれ以上のSEMビット509を受信する。セキュリティチェック論理800Bは異常の情報を用いてメモリ406のその部分へのアクセスが許可されているかを判定する。
CPU402はx86プロセッサであり、x86プロセッサ・アーキテクチャの16ビット・セグメント・レジスタの一つであるコード・セグメント(CS)レジスタを含む。各セグメント・レジスタはセグメントと呼ばれる64kブロックのメモリを選択する。ページングを有効にした保護モードに於いて、CSレジスタはメモリ406の実行可能セグメントを表すセグメント・セレクタによってロードされる。セグメント・セレクタの最高次(すなわち最上位)ビットはCPU402の実行ユニット600によって実行されるべき次の命令を含むメモリのセグメントを表示する情報を格納するために使用される。命令ポインタ(IP)レジスタはコード・セグメント(CS)レジスタによって示されたセグメントへのオフセットを格納するために使用される。CS:IPペアは次の命令のセグメント化アドレスを表示する。CSレジスタの最低次(すなわち最下位)2ビットは実行ユニット600によって現在実行されているタスクのCPL(すなわち現在のタスクのCPL)を表す値を格納するために使用される。
CPUSCU416のセキュリティチェック論理800Bはページ・フォールト(「PF」)信号と「SEM SECURITY EXCEPTION」信号を発生し、PF及びSEM SECURITY EXCEPTION信号をページング・ユニット702内部の論理へ提供する。セキュリティチェック論理800BがPF信号を発行した場合、MMU602はPF信号を実行ユニット600へ転送する。PF信号に応答して、実行ユニット600はx86プロセッサ・アーキテクチャの周知の割り込みデスクリプタ・テーブル(IDT)ベクトル化メカニズムを使用してPFハンドラ・ルーチンにアクセスし実行する。
セキュリティチェック論理800BがSEM SECURITY EXCEPTION信号を発行した場合、MMU602はSEM SECURITY EXCEPTION信号を実行ユニット600へ転送する。x86プロセッサ・アーキテクチャのIDTベクトル化メカニズムを使用する通常のプロセッサ例外とは異なり、別のベクトル化方法を用いてSEMセキュリティ例外を処理する。SEMセキュリティ例外はx86「SYSENTER」及び「SYSEXIT」命令が動作する方法と同様に一対のレジスタ(例えばMSR)を介して配当される。レジスタ対は「セキュリティ例外エントリ・ポイント」レジスタで、SEMセキュリティ例外が発生した場合の命令実行の分岐目標アドレスを定義する。
セキュリティ例外エントリ・ポイント・レジスタは、SEMセキュリティ例外ハンドラへのエントリに使用するコード・セグメント(CS)、次いで命令ポインタ(EIP、又は64ビット版RIP)、スタック・セグメント(SS)、さらにスタック・ポインタ(ESP、又は64ビット版RSP)値を定義する。実行ユニット600は直前のSS、ESP/RSP、EFLAGS、CS、EIP/RIP値を新しいスタックへプッシュしてSEMセキュリティ例外が発生した場所を表示する。さらに、実行ユニット600はエラー・コードをスタックへプッシュする。前述したように、直前のSS及びESP/RSP値が保存されているのでIRET命令は使用されず、CPLの変更が発生しない場合でもスタック・スイッチが完了する。SEMセキュリティ例外ハンドラからの戻りはSMRET命令を経由する。
図12は本発明の各種態様によるコンピュータ・システム内でセキュリティを維持するための各種実施例を含む略図1200を示す。図12に図示してあるように、オペレーティング・システムはセキュリティカーネル504を含む。セキュリティカーネル504はSEMセキュリティ例外ハンドラ1210及び/又はページ管理ルーチン1215を含む。セキュリティカーネル504はSEMセキュリティ例外1205を受信する。セキュリティカーネル504は1つ又はそれ以上の信号1255経由で現在のCPU状態1230を伝送する1つ又はそれ以上の値を受信する。セキュリティカーネル504は又当該1つ又はそれ以上の信号1255によって現在のCPU状態1230を変更することもできる。CPU状態1230は制御レジスタ1235とMSR1240に格納された値から決定される。値はCR3制御レジスタ1242、CPL1244、SEMイネーブル・ビット1246に格納された値を含む。
その他の値も、例えばページングをオン/オフするCR0、拡張機能レジスタ、又は拡張アドレシングのためのページアドレス拡張モード・レジスタなどが含まれるものとして企図している。図示した値1242,1244,1246の1つ又はそれ以上を希望に応じて除外することもできる。セキュリティカーネル504はCPU状態1230、仮想メモリ構成1220、セキュリティ属性エントリ1225の1つ又はそれ以上からのセキュリティ値及び信号1250を受信する。セキュリティ値1250Aはセキュリティカーネル504と仮想メモリ構成1220との間に図示してある。セキュリティ値1250Bはセキュリティカーネル504とセキュリティ属性エントリ1225との間に図示してある。セキュリティ値1250Cはセキュリティカーネル504とCPU状態1230との間に図示してある。
一実施例に於いて、仮想メモリ構成1220はページ管理ルーチン1215経由でセキュリティカーネル504によって1250A経由でモニタされメモリ406へのアクセスのセキュリティ性を維持している。CPU状態1230もセキュリティカーネル504によってモニタされ、適切なセキュリティがページ管理ルーチン1215によって適用されるようになっている。仮想メモリ構成1220も1250A経由でページ管理ルーチン1215によって変更される。ページ管理ルーチン1215はオペレーティング・システム502の一部を構成する。ページ管理ルーチン1215もSEMセキュリティ例外ハンドラ1210を用いて仮想メモリ構成1220への変更を監視している。
一実施例に於いて、セキュリティ属性エントリ1225は1250B経由でセキュリティカーネル504によりモニタされる。メモリ位置へのアクセス試行によりSEMセキュリティ例外ハンドラ1210に対してSEMセキュリティ例外1205を生成し、CPU状態1230のSEMへの変更を惹起する。メモリ位置へのアクセスはセキュリティ属性エントリ1225の関連する一つにより許可されるか又は拒否される。セキュリティ属性エントリ1225はメモリ406内の保護されたページにある。
一実施例において、CPU状態1230は1250C経由でセキュリティカーネル504によりモニタされる。本実施例はモード依存である。メモリ位置へのアクセス試行によりSEMセキュリティ例外ハンドラ1210に対してSEMセキュリティ例外1205を生成する。メモリ位置へのアクセスはアクセスを試みた時点でのCPU状態1230にしたがって許可されるか又は拒否される。
CPU402内部にある汎用レジスタ(図示していない)の内容はどの時点でも利用可能である。一実施例において、制御レジスタ1235へのアクセスはセキュリティビット、例えば制御レジスタ1235のTX(信頼実行)ビット又はMSR1240のSIE(セキュリティ命令)ビットなどの値に結びつけられている。同様に、MSR1240へのアクセスもセキュリティビットの値に結びつけられている。セキュリティビットがセットされていない場合には、セキュリティ感知制御レジスタ1235及びMSR1240への変更を試みることでSEMセキュリティ例外1205となる。別の実施例において、実行ページ値が制御レジスタ1235へのアクセスを制御する。
セキュリティモード例えばSEMから非セキュリティモード例えば通常モードへの移行で幾つかのレジスタの内容がクリアされる。メモリ内容は不変のままだが、幾つかのメモリアドレスは以後読み出しできなくなる。セキュリティ性を強化するため仮想メモリ構成1220を使用している場合、CR3レジスタ1242の内容が再ロードされる。これにより信頼コードで使用されている仮想メモリ構成1220とは異なる非信頼コードに仮想メモリ構成1220を提供する。セキュリティ属性エントリ1225を使用している場合には、セキュリティページに関連したエントリはページ・テーブル内で保護されているようにマークされ、CPU状態1230がセキュリティ(又は保護)モードにならない限りアクセスできなくなる。セキュリティ性を強化するためCPU状態1230を使用している場合、CPU状態1230は保護メモリへのアクセスが許容される前にセキュリティモードには入らなければならない。
一実施例において、SEMにおけるセキュリティカーネル504はページ管理ルーチン1215を実装することにより仮想メモリ構成1220に対する保護を提供できる。この保護には最小限のハードウェアを必要とし主として最高特権(SCID)レベルで実行されるソフトウェアで実現される。
SEMはページングが有効になっている保護モード環境に適用可能である。不正な又は撹乱したリニアから物理へのマッピングを作成することによりSEMに対する攻撃を防止するには、ページング構造体と制御レジスタ1235及び/又はページングに関連したMSR1240例えばCR31242を不正な変更から保護する必要がある。
仮想メモリ構成1220、セキュリティ属性エントリ1225、CPU状態1230の、図12において説明したメカニズムの一つを用いて強化したセキュリティ性は残りのメカニズムに対して排他的である。他の実施例に於いて、これらのメカニズムのうちの二つ又はそれ以上を協動して動作させることができる。
ここで図13〜図15を使ってメモリ・ページの追加セキュリティ情報が図4A〜図4Cのコンピュータ・システム400内部で使用されるアドレス変換メカニズムを使用してどのように選択されるかを説明する。図13は選択されたメモリ・ページについてSATエントリ1225の関連する一つにアクセスすることで選択されたメモリ・ページの追加セキュリティ情報を取得するためのメカニズム1300の1実施例の略図である。図13のメカニズム1300は図8A〜図8Bのセキュリティチェック論理800内部に実現され、図4A〜図4Cのコンピュータ・システム400のいずれかがSEMで動作している場合に実装し得る。メカニズム1300には、x86アドレス変換メカニズムを使用してページング・メカニズム702によって発生した物理アドレス1302、SATディレクトリ1304、SAT1306を含む多数のSAT、及びSEMレジスタ610のセットのSATベースアドレス・レジスタ1308が関係する。SATディレクトリ104及びSAT1306を含む多数のSATはセキュリティカーネル504によって作成維持されるSEMデータ構造である。後述するようにSATディレクトリ1304(存在する場合)といずれかの必要とされるSAT1306が、アクセスを受ける前にメモリ406にコピーされる。
SATベースアドレス・レジスタ1308はSATベースアドレス・レジスタ1308内部の有効なSATディレクトリ・ベースアドレスの存在を表す存在(P)ビットを含む。SATベースアドレス・レジスタ1308の最高次(すなわち最上位)ビット群はSATディレクトリ・ベースアドレスに予約されている。SATディレクトリ・ベースアドレスはSATディレクトリ1304を含むメモリ・ページのベース・アドレスである。P=1の場合、SATディレクトリ・ベースアドレスが有効であり、SATテーブル1306はメモリ・ページのセキュリティ属性を指定する。P=0の場合、SATディレクトリ・ベースアドレスは有効ではないので、SATテーブルは存在せず、メモリ・ページのセキュリティ属性はSATデフォルト・レジスタによって決定される。
図14AはSATデフォルト・レジスタ1400の1実施例の略図である。図14Aの実施例に於いて、SATデフォルト・レジスタ1400はセキュリティページ(SP)ビットを含む。SPビットは全メモリ・ページがセキュリティページ稼働かを示す。例えば、SP=0の場合全メモリ・ページはセキュリティページではなく、SP=1の場合全メモリ・ページがセキュリティページである。
ここで図13を参照しSATベースアドレス・レジスタ1308のPビットが「1」であると仮定すると、ページング論理702によって発生した物理アドレス1302は、選択されたメモリ・ページについてのSATエントリ1225の関連する一つにアクセスするための3つの部分に分割される。前述したように、SATベースアドレス・レジスタ1308のSATディレクトリ・ベースアドレスはSATディレクトリ1304を含むメモリ・ページのベース・アドレスである。SATディレクトリ1304は、SATディレクトリ・エントリ1312を含めた多数のSATディレクトリ・エントリを含む。各SATディレクトリ・エントリはこれに対応するSATをメモリ406内に保持する。物理アドレス1302の最高次又は最上位ビット群を含む物理アドレス1302の「上部」はSATディレクトリ1304へのインデックスとして使用される。SATディレクトリ・エントリ1312はSATベースアドレス・レジスタ1308のSATディレクトリ・ベースアドレスと物理アドレス1302の上部とを使用してSATディレクトリ304内部から選択される。
図14BはSATディレクトリ・エントリ・フォーマット1430の1実施例の略図である。図14Bによれば、各SATディレクトリ・エントリは存在(P)ビットを含み、これはSATディレクトリ・エントリ内部の有効なSATベース・アドレスの存在を表している。図14Bの実施例に於いて、各SATディレクトリ・エントリ1310の最高次(すなわち最上位)ビットはSATベース・アドレスに予約されている。SATベース・アドレスは対応するSATを含むメモリ・ページのベース・アドレスである。P=1の場合、SATベース・アドレスが有効で、これに対応するSATはメモリ406内に格納される。
P=0の場合、SATベース・アドレスは有効ではなく、これに対応するSATはメモリ406内に存在せず、又ストレージ・デバイス(例えばディスク・ドライブ装置)からメモリ406へコピーする必要がある。P=0の場合、セキュリティチェック論理800はページング・ユニット702内部の論理へページ・フォールトを通知し、MMU602がページ・フォールト信号を実行ユニット600(図6)へ転送する。ページ・フォールト信号に応答して、実行ユニット600はページ・フォールト・ハンドラ・ルーチンを実行し、これによってストレージ・デバイスから必要とされるSATを取り出して必要なSATをメモリ406内に格納する。必要なSATがメモリ406内に格納された後で、対応するSATディレクトリ・エントリのPビットが「1」にセットされ、メカニズム1300が継続する。
図13をもう一度参照すると、物理アドレス1302の「中央部」はSAT1306へのインデックスとして使用される。SATディレクトリ・エントリ1312はSATディレクトリ・エントリ1312のSATベース・アドレスと物理アドレス1302の中央部とを使用してSAT1306内部で選択されることになる。
図15はSATエントリ・フォーマット1500の1実施例の略図である。図15の実施例に於いて、各SATディレクトリ・エントリ1312はセキュリティページ(SP)ビットを含む。SPビットは選択されたメモリ・ページがセキュリティページか否かを表す。例えば、SP=0の場合選択されたメモリ・ページはセキュリティページではなく、SP=1の場合選択されたメモリ・ページはセキュリティページである。
BIU606はメモリ406から必要となるSEMデータ構造エントリを取り出し、SEMデータ構造エントリをMMU602へ提供する。もう一度図8Bを参照するとセキュリティチェック論理800BがMMU602とページング・ユニット702から通信バス経由でSEMデータ構造エントリを受信する。前述したように、SATエントリ・バッファ802は最近アクセスしたメモリ・ページの比較的少数のSATエントリ1225を格納するために使用される。セキュリティチェック論理800Bは任意のSATエントリ1312をSATエントリ・バッファ802へ格納し、これに併せて対応する物理アドレスの「タグ」部分も格納する。
後続のメモリ・ページ・アクセスの間、セキュリティチェック論理800Bはページング・ユニット702によって発生した物理アドレスの「タグ」部分をSATエントリ・バッファ1102に格納されたSATエントリ1225に対応する物理アドレスのタグ部分と比較する。物理アドレスのタグ部分が、SATエントリ・バッファ1102内に格納されたSATエントリ1312に対応する物理アドレスのタグ部分と一致すれば、セキュリティチェック論理800BはSATエントリ・バッファ1102内のSATエントリ1312へアクセスし、メモリ406からSATエントリ1312を取得する図13の処理を実行する必要がなくなる。セキュリティカーネル504はCPU402のSATベースアドレス・レジスタ1308の内容を書き換える(例えばコンテクスト・スイッチ)。SATベースアドレス・レジスタ1308の変更に応答して、CPUSCU417のセキュリティチェック論理800BはSATエントリ・バッファ802をフラッシュする。
図4A〜図4Cのコンピュータ・システム400がSEMで動作している場合、セキュリティチェック論理800Bは現在実行中のタスク(すなわち現在実行している命令)のCPLと、これに併せて物理アドレスが内部に存在している選択されたメモリ・ページのページ・ディレクトリ・エントリ(PDE)U/Sビット、PDE R/Wビット、ページ・テーブル・エントリ(PTE)U/Sビット、PTE R/Wビットも受信する。セキュリティチェック論理800Bは以上の情報と、これに併せて選択されたメモリ・ページに対応するSATディレクトリ・エントリ1312のSPビットとを用いて、メモリ406のアクセスが許可されているかを判定する。
図4BのCPU402Bはx86プロセッサであり、x86プロセッサ・アーキテクチャの16ビット・セグメント・レジスタの一つであるコード・セグメント(CS)レジスタを含む。各セグメント・レジスタはセグメントと呼ばれる64kブロックのメモリを選択する。ページングを有効にした保護モードでは、CSレジスタにはメモリ406の実行可能セグメントを表すセグメント・セレクタがロードされる。セグメント・セレクタの最高次(すなわち最上位)ビットはCPU402Bの実行ユニット600によって実行されるべき次の命令を含むメモリのセグメントを表す情報を格納するために使用される。命令ポインタ(IP)レジスタはCSレジスタによって示されているセグメントへのオフセットを格納するために使用する。CS:IPペアは次の命令のセグメント化アドレスを表す。CSレジスタの最低次(すなわち最下位)2ビットは実行ユニット600によって現在実行されているタスクのCPLを表す値を格納するために使用される(すなわち現行タスクのCPL)。
以下の表1は、コンピュータ・システム400BがSEMで動作している場合にCPUが開始した(すなわちソフトウェアによって開始した)メモリ・アクセスの代表的規則を示している。CPUSCU417とセキュリティカーネル504が協動して、コンピュータ・システム400がSEMで動作している場合に表1の規則を実装し、オペレーティング・システム502によって提供されるデータセキュリティ以上に、メモリ406内に格納されるデータに追加のセキュリティを提供する。
表1:コンピュータ・システム400BがSEMで動作している場合に
おけるソフトウェアで開始されたメモリ・アクセスでの代表的規則
現在実行 選択された
中の命令 メモリ・ページ 許可されるアクセス
SP CPL SP U/S R/W アクセス 備考
1 0 X X 1(R/W) R/W 全アクセス許可(1)
1 0 X X 0(R) 読み出し (2)
1 3 1 1(U) 1(R/W) 標準保護メカニズム適用
1 3 1 0(S) X なし アクセスでGPF発生(1)
1 3 0 0 1 なし アクセスでGPF発生(4)
0 0 1 X X なし アクセスでSEMセキュリティ例外発生
0 0 0 1 1 R/W 標準保護メカニズム適用(3)
0 3 X 0 X なし 注5参照
0 3 0 1 1 R/W 標準保護メカニズム適用(6)
注(1):代表的なアクセスされるページ内容はセキュリティカーネルとSEMデータ構造を含む。
注(2):書き込み試行でGPFを発生する。選択されたメモリ・ページがセキュリティページ(SP=1)だとSEMセキュリティ例外がGPFの代わりに通知される。
注(3):代表的なアクセスされるページ内容は高セキュリティアプレットを含む。
注(4):代表的なアクセスされるページ内容はOSカーネルとリング0デバイス・ドライバを含む。
注(5):全てのアクセス試行でGPFを発生する。選択されたメモリ・ページがセキュリティページ(SP=1)だとSEMセキュリティ例外がGPFの代わりに通知される。
注(6):代表的なアクセスされるページ内容はアプリケーションを含む。
上記表1では、現在実行している命令のSPビットが現在実行している命令を含むメモリ・ページに対応するSATディレクトリ・エントリ1312のSPビットである。選択されたメモリ・ページのU/Sビットは、選択されたメモリ・ページのPDE U/SビットとPTE U/Sビットとの論理積(AND)である。選択されたメモリ・ページのR/Wビットは、選択されたメモリ・ページのPDE R/WビットとPTE R/Wビットとの論理積(AND)である。記号「x」は「任意である」ことを意味し、論理値は「0」か「1」のどちらでも良い。
図8Bをもう一度参照すると、CPUSCU417のセキュリティチェック論理800Bは一般保護フォールト(「GPF」)信号と、「SEM SECURITY EXCEPTION」信号とを発生し、GPF及びSEM SECURITY EXCEPTION信号をページング・ユニット702へ提供する。セキュリティチェック論理800BがGPF信号を発行すると、MMU602はGPF信号を実行ユニット600へ転送する。GPF信号に応答して、実行ユニット600はx86プロセッサ・アーキテクチャの周知の割り込みデスクリプタ・テーブル(IDT)ベクトル化メカニズムを使用してGPFハンドラ・ルーチンへアクセスしこれを実行する。
セキュリティチェック論理800BがSEM SECURITY EXCEPTION信号を発行すると、MMU602はSEM SECURITY EXCEPTION信号を実行ユニット600へ転送する。x86プロセッサ・アーキテクチャのIDTベクトル化メカニズムを使用する通常のプロセッサ例外とは異なり、別のベクトル化方法を使用してSEMセキュリティ例外を処理する。SEMセキュリティ例外はx86の「SYSENTER」及び「SYSEXIT」命令が動作する方法と同様に一対のレジスタ(例えばMSR)経由で配当される。レジスタ対は「セキュリティ例外エントリ・ポイント」レジスタであり、SEMセキュリティ例外が発生した場合の命令実行について分岐目標アドレスを定義する。セキュリティ例外エントリ・ポイント・レジスタはコード・セグメント(CS)を定義し、次いでSEMセキュリティ例外ハンドラ1210へのエントリに使用する命令ポインタ(IP又は64ビット版RIP)、スタック・セグメント(SS)、スタック・ポインタ(SP又は64ビット版RSP)の値を定義する。ソフトウェアによる制御下で、実行ユニット600は直前のSS、SP/RSP、EFLAGS、CS、IP/RIP値を新しいスタックへプッシュして例外がどこで発生したかを表示する。さらに、実行ユニット600はエラー・コードをスタック上にプッシュする。前述したように、直前のSS及びSP/RSP値がいつも保存されているのでIRET命令は使用できず、スタック・スイッチは、現在の特権レベル(CPL)の変更が行われない場合であっても必ず遂行される。SEMセキュリティ例外ハンドラ1210からの戻り値はSMRET命令を経由する。
以下の表2は、コンピュータ・システム400がSEMで動作している場合に、デバイス・ハードウェア・ユニット414A〜414Dによって開始されたメモリ・ページ・アクセス(すなわちハードウェアによって開始されたメモリ・アクセス)についての代表的な規則を示している。このようなハードウェアで開始されたメモリ・アクセスはデバイス・ハードウェア・ユニット414A〜414D内部のバス・マスタリング回路によって開始されるか、又はデバイス・ハードウェア・ユニット414A〜414Dの要求でDMAデバイスにより開始される。コンピュータ・システム400がSEMで動作している場合にセキュリティチェック論理800は表2の規則を実施してオペレーティング・システム502によって提供されたデータセキュリティの上にメモリ406内に格納されるデータについての追加のセキュリティを提供する。以下の表2では、「目標」メモリ・ページはメモリ・アクセスのメモリ・アクセス信号によって伝送される物理アドレスが内部に存在するメモリ・ページである。
表2:コンピュータ・システム400がSEMで動作している場合の
ハードウェアで開始されたメモリ・アクセスについての代表的規則

特定の
メモリ
ページ
SP アクセス種別 動作
0 R/W アクセスは通常どおり完了する
1 読み出し アクセスは実際のメモリ内容の代わりに全部 「F」を返して完了する。
無許可アクセスは記録される
1 書き込み アクセスは完了するが書き込みデータは破棄
される。メモリ内容は変更されない。
無許可アクセスは記録される。
上記表2に於いて、目標メモリ・ページのSPビットはメモリ・アクセスの物理アドレスと対応するメモリ・ページのSATエントリ1225を取得するためすでに説明した図9のメカニズム900とを使用してホスト・ブリッジSCU418によって取得される。
表2に示してあるように、目標メモリ・ページがセキュリティページであることを示すSP=1の場合、メモリ・アクセスは無許可である。この状況に於いて、セキュリティチェック論理800はメモリ・制御装置へメモリ・アクセス信号を提供しない。メモリ・アクセス信号の一部(例えば制御信号)はメモリ・アクセスの種別を示し、ここに於いてメモリ・アクセス種別は読み出しアクセスか書き込みアクセスのどちらかである。SP=1で、かつメモリ・アクセス種別が読み出しアクセスであることをメモリ・アクセス信号が示している場合、メモリ・アクセスは無許可の読み出しアクセスであり、セキュリティチェック論理800は実際のメモリ内容の代わりに全部「F」を提供することで(すなわち偽物の読み出しデータ)無許可読み出しアクセスに応答する。セキュリティチェック論理800はまた、前述のように無許可読み出しアクセスを記録することで無許可読み出しアクセスに応答する。
SP=1かつメモリ・アクセス種別が書き込みアクセスであるとメモリ・アクセス信号が示している場合、メモリ・アクセスは無許可の書き込みアクセスである。この状況では、メモリ・アクセス信号によって伝送される書き込みデータを破棄することにより、セキュリティチェック論理800は無許可書き込みアクセスに応答する。セキュリティチェック論理800はまた、前述のように無許可書き込みアクセスを記録することで無許可書き込みアクセスに応答する。
図16Aは図4Cのホスト・ブリッジ404Cの1実施例の略図である。図16Aの実施例に於いて、ホスト・ブリッジ404Cはホスト・インタフェース1600、ブリッジ論理1602、ホスト・ブリッジSCU418、メモリ・コントローラ1604、デバイス・バス・インタフェース1606を含む。ホスト・インタフェース1600はCPU402へ接続され、デバイス・バス・インタフェース1606はデバイス・バス408へ接続される。ブリッジ論理1602はホスト・インタフェース1600とデバイス・バス・インタフェース1606の間に接続される。メモリ・コントローラ1604はメモリ406へ接続されメモリ406への全部のアクセスを実行する。ホスト・ブリッジSCU418はブリッジ論理1602とメモリ・コントローラ1604の間に接続される。前述のように、ホスト・ブリッジSCU418はデバイス・バス・インタフェース1606経由でメモリ406へのアクセスを制御する。ホスト・ブリッジSCU418はデバイス・バス・インタフェース1606経由でメモリ406へのアクセスを全てモニタし、メモリ406への許可されたアクセスだけを許容する。
図16Bは図4Cのホスト・ブリッジ404Cの別の実施例の略図である。図16Cの実施例に於いて、ホスト・ブリッジ404Cはホスト・インタフェース1600、ブリッジ論理1602、ホスト・ブリッジSCU418、メモリ・コントローラ1604、デバイス・バス・インタフェース1606、バス・アービタ1608を含む。ホスト・インタフェース1600はCPU402へ接続され、デバイス・バス・インタフェース1606はデバイス・バス408へ接続される。ブリッジ論理1602はホスト・インタフェース1600とデバイス・バス・インタフェース1606の間に接続される。メモリ・コントローラ1604はメモリ406へ接続されて、メモリ406への全てのアクセスを実行する。ホスト・ブリッジSCU418はブリッジ論理1602とメモリ・コントローラ1604の間に接続される。前述のように、ホスト・ブリッジSCU418はデバイス・バス・インタフェース1606経由でメモリ406へのアクセスを制御している。ホスト・ブリッジSCU418はデバイス・バス・インタフェース1606経由でメモリ406へのアクセスを全てモニタし、メモリ406への許可されたアクセスだけを許容する。
図16Bの実施例に於いて、バス・アービタ1608はデバイス・バス・インタフェース1606、ブリッジ論理1602、ホスト・ブリッジSCU418へ接続される。バス・アービタ1608はブリッジ論理1602、デバイス・ハードウェア・ユニット414Aと414B、及びデバイス・バス・ブリッジ410の間でデバイス・バス408の制御について調停する。(デバイス・ハードウェア・ユニット414Cと414Dはデバイス・バス・ブリッジ410経由でデバイス・バス408へアクセスする。)一般に、デバイス・バス408は許可信号を伝送する1本又はそれ以上の信号線を含み、ここに於いて許可信号はデバイス・バス408へ接続されているデバイスのどれがデバイス・バス408の制御を行っているかを表す複数状態のうちの一つの状態にある。バス・アービタ1608は許可信号を伝送する1本又はそれ以上の信号線に許可信号を駆動する。バス・アービタ1608は、代表的には、デバイス・ハードウェア・ユニット414Aと414B、及びデバイス・バス・ブリッジ410から別々の要求信号を受信し、ここに於いて各要求信号は対応するデバイスがデバイス・バス408の制御を必要とする場合に対応するデバイスによって発行される。バス・アービタ1608はデバイス・ハードウェア・ユニット414Aと414Bへ又デバイス・バス・ブリッジ410へ別々の許可信号を発行し、ここに於いて許可信号の任意の一つが発行されて対応するデバイスがデバイス・バス408の制御を許可されていることを表す。バス・アービタ1608はホスト・ブリッジSCU418と協動してコンピュータ・システム400C内部でデバイス間アクセスセキュリティを提供する。
図17は図16A及び図16Bのホスト・ブリッジSCU418の1実施例の略図である。図17の実施例に於いて、ホスト・ブリッジSCU418はSEMレジスタ1702のセットとSATエントリ・バッファ1704へ接続されたセキュリティチェック論理1700を含む。SEMレジスタ1702のセットはセキュリティチェック論理1700の動作を規制し、図9の第2のSATベースアドレス・レジスタ908を含む。SEMレジスタ1702のセットの第2のSATベースアドレス・レジスタ908は、アドレス可能なレジスタである。セキュリティカーネル504がCPU402のSEMレジスタ610のセットに於いて第2のSATベースアドレス・レジスタ908の内容を変更する場合(例えばコンテクスト・スイッチの間)、セキュリティカーネル504はホスト・ブリッジSCU418のSEMレジスタ1702のセットに於いて第2のSATベースアドレス・レジスタ908へも同一の値を書き込む。第2のSATベースアドレス・レジスタ908の変更に応答して、ホスト・ブリッジSCU418のセキュリティチェック論理1700はSATエントリ・バッファ1704をフラッシュする。
セキュリティチェック論理1700はデバイス・バス・インタフェース1606とブリッジ論理1602経由でデバイス・ハードウェア・ユニット417A〜417Dによって開始されたメモリ・アクセスのメモリ・アクセス信号を受信する。メモリ・アクセス信号はデバイス・ハードウェア・ユニット417A〜417Dからの物理アドレスと、関連する制御及び/又はデータ信号をを伝送する。セキュリティチェック論理1700は対応するメモリ・ページのSATエントリ1225を取得するためのメカニズム1300を実現し、コンピュータ・システム400がSEMで動作する場合にメカニズム1300を実装するものである。SATエントリ・バッファ1704は前述のCPUSCU416のSATエントリ・バッファ802と同様であり、最近アクセスされたメモリ・ページの比較的少数のSATエントリ1225を格納するために使用する。
コンピュータ・システム400がSEMで動作している場合、図17のセキュリティチェック論理1700は選択されたメモリ・ページに関連したSATディレクトリ・エントリ1312の追加セキュリティ情報を使用して、任意のハードウェアで開始されたメモリ・アクセスが許可されるか否かを判定する。任意のハードウェアで開始されたメモリ・アクセスが許可される場合、セキュリティチェック論理1700は当該メモリ・アクセスのメモリ・アクセス信号(すなわち物理信号並びにこれと関連する制御及び/又はデータ信号を伝送するアドレス信号)をメモリ・コントローラ1604へ提供する。メモリ・コントローラ1604は物理アドレス及びこれに関連した制御及び/又はデータ信号を使用してメモリ406へアクセスする。メモリ406のアクセスが書き込みアクセスである場合、データ信号によって伝送されるデータはメモリ406へ書き込まれる。メモリ406へのアクセスが読み出しアクセスである場合には、メモリ・コントローラ1604がメモリ406からデータを読み出して、得られた読み出しデータをセキュリティチェック論理1700へ提供する。セキュリティチェック論理1700は読み出しデータをブリッジ論理1602へ転送し、ブリッジ論理1602がデバイス・バス・インタフェース1606へデータを提供する。
他方で、任意のハードウェアで開始されたメモリ・アクセスが許可されていない場合、セキュリティチェック論理1700はメモリ406アクセスの物理アドレス及びこれに関連する制御及び/又はデータ信号をメモリ・コントローラ1604に提供しない。無許可のハードウェアで開始されたメモリ・アクセスがメモリ書き込みアクセスである場合、セキュリティチェック論理1700は書き込みアクセスの完了を通知して書き込みデータを破棄し、メモリ406を変更されないままにしておく。セキュリティチェック論理1700は又ログにログ・エントリを作成し(例えば状態レジスタの1つ又はそれ以上のビットをセットするか又はクリアする)セキュリティアクセス侵害を記録する。セキュリティカーネル504は定期的にログにアクセスしてこのようなログ・エントリをチェックする。無許可のハードウェアで開始されたメモリ・アクセスがメモリ読み出しアクセスである場合には、セキュリティチェック論理1700は読み出しデータとしてブリッジ論理1602経由でデバイス・バス・インタフェース1606へ偽の結果(例えば全部「F」)を返す。セキュリティチェック論理1700はまた前述のようにログ・エントリを作成してセキュリティアクセス侵害を記録する。
図18はホスト・ブリッジSCU418の別の実施例の略図で、ここに於いてホスト・ブリッジSCU418はアクセス許可テーブル1800を含む。一般に、アクセス許可テーブル1800はデバイス・バス408に接続されていてデバイス・バス408を駆動することができる各デバイスについて(すなわち関連するREQ#とGNT#信号を持っている各デバイス)異なるエントリのセットを有する。デバイス・ハードウェア414Aに対応する第1のエントリのセットと、デバイス・ハードウェア414Bに関連した第2のエントリのセットが図18に図示してある。追加のエントリのセットも企図される。
アクセス許可テーブル1800の各エントリはデバイス・バス408に接続されていてデバイス・バス408を駆動することが可能なデバイスに対応する。例えば、図18に於いて、デバイス・ハードウェア414Aに対応する第1のエントリのセットで第1のエントリはデバイス・ハードウェア414Bに向けられている。第1のエントリは、フレーズ"(GNT#2 ASSERTED)"を含む「GRANT SIGNAL STATE」フィールドを含み、これはGNT#2信号が発行された場合第1のエントリが適用されることを表している。第1のエントリはまた、デバイス・ハードウェア414Bに対応する「ACCESS AUTHORIZED」値を含み、これはデバイス・ハードウェア414Bがデバイス・ハードウェア414Aへのアクセスを許可されているか否かを表している。アクセス許可テーブル1800はセキュリティカーネル504によって作成され維持される。
PCIバス・プロトコルによれば、「イニシエータ」デバイスは「ターゲット」デバイスにアクセスしてバス転送又は「トランザクション」を開始する。ターゲット・デバイスはSTOP#信号を発行することによりトランザクションを終了する。イニシエータ・デバイスが発行されたSTOP#信号を検出すると、イニシエータ・デバイスはトランザクションを終了し、トランザクションを完了するためにPCIバスの制御を再調停する必要がある。何らかのデータが転送される前にターゲット・デバイスがSTOP#信号を発行した場合終了は「リトライ」と呼ばれる。
デバイス・バス408がPCIバスである実施例に於いて、デバイス・バス408は多重化アドレス及びデータ(A/D)信号線を含む。デバイス・バス408に接続されたイニシエータ・デバイスはターゲット・デバイスに割り当てられたアドレスを伝送するアドレス信号でデバイス・バス408の多重化A/D線を駆動することによりデバイス・バス408に接続されたターゲット・デバイスへアクセスする。例えばデバイス・バス408へ接続されたデバイス・ハードウェア414Bへのアクセスを制御する目的で、ホスト・ブリッジSCU418は最初にPCIバス経由でデバイス・ハードウェア414Bをプログラムしてデバイス・ハードウェア414Bを構成し、STOP#信号を発行することによる全てのアクセス試行に応答させる(すなわちPCIバス・リトライを開始することによる全てのアクセス試行を阻止する)。
ホスト・ブリッジSCU418はデバイス・バス・インタフェース1606経由でデバイス・バス408の信号線へ接続され、デバイス・バス408のGNT#及びA/D信号線をモニタしてデバイス・アクセス試行を検出する。例えば、デバイス・ハードウェア414Aがデバイス・ハードウェア414Bへのアクセスを試みたと仮定する。「イニシエータ」デバイス・ハードウェア414Aが「ターゲット」デバイス・ハードウェア414Bへのアクセスを試みた場合、デバイス・ハードウェア414BはPCIバス・リトライを開始することによる(すなわちデバイス・バス408のA/D信号線上でデバイス・ハードウェア414Bに割り当てられたアドレスを検出した後でSTOP#信号を発行することによる)アクセス試行を阻止する。この動作でデバイス・ハードウェア414Aに対し後続のアクセス試行を経由してアクセス試行をリトライするよう強制する。
デバイス・ハードウェア414Bがアクセス試行を阻止している一方で、ホスト・ブリッジSCU418はデバイス・バス408のA/D信号線上で駆動されたデバイス・ハードウェア414Bに割り当てられているアドレスを経由してアクセス試行を検出する。デバイス・ハードウェア414Aがデバイス・バス408の制御を持っているので、GNT#1信号を発行し、ホスト・ブリッジSCU418は発行されたGNT#1信号経由でイニシエータとしてデバイス・ハードウェア414Aを認識する。
ホスト・ブリッジSCU418はデバイス・ハードウェア414Aによる後続のアクセス試行を許可するか否かを判定する。ホスト・ブリッジSCU418はデバイス・ハードウェア414Bに対応するアクセス許可テーブル1800の第2のエントリのセットにアクセスして、GRANT SIGNAL STATEフィールドに"(GNT#1 ASSERTED)"を有する第2のセットの最初のエントリを選択する。第1のエントリのACCESS AUTHORIZED値は「1」で、これはデバイス・ハードウェア414Aによるデバイス・ハードウェア414Bへのアクセスが許可されていることと、デバイス・ハードウェア414Aによる後続のアクセス試行が許可されるべきであることを示している。
ACCESS AUTHORIZED値で、デバイス・ハードウェア414Aによる後続のアクセス試行が許可されるべきことを示しているので、ホスト・ブリッジSCU418はデバイス・ハードウェア414Aを識別するようにバス・アービタ1608へ信号を送信する。デバイス・バス408の制御をデバイス・ハードウェア414Aへ次回許可する直前に、バス・アービタ1608はデバイス・バス408の制御をホスト・ブリッジSCU418に許可する。ホスト・ブリッジSCU418はデバイス・バス408の信号線に信号を送信して、デバイス・ハードウェア414Aによる後続のアクセス試行を許可するようにデバイス・ハードウェア414Bを構成する。
デバイス・ハードウェア414Aによる後続のアクセス試行の直後に、バス・アービタ1608はまたデバイス・バス408の制御をホスト・ブリッジSCU418に許可する。ホスト・ブリッジSCU418はPCIバスの信号線に信号を発信し、PCIバス・リトライを開始することによる全てのアクセス試行に応答するように(すなわち、デバイス・バス408のA/D信号線上でデバイス・ハードウェア414Bに割り当てられたアドレスを検出した後でSTOP#信号を発行することにより全てのアクセス試行を阻止するように)デバイス・ハードウェア414Bを構成する。
アクセス許可テーブル1800の選択したエントリでACCESS AUTHORIZED値が「0」になっていて、イニシエータ・デバイスによるターゲット・デバイスへのアクセスが許可されずイニシエータ・デバイスによる後続のアクセス試行も許可されるべきでないことを表しているような場合では、ホスト・ブリッジSCU418はイニシエータ・デバイスによる後続のアクセス試行を許可するようにはターゲット・デバイスを構成せず、ターゲット・デバイスはPCIバス・リトライを開始することによりイニシエータ・デバイスによるアクセス試行を阻止し続ける。上記で説明したアトム的構成−アクセス−構成メカニズムでは、既存のPCIデバイスが保護されるためにはPCIバス・リトライを開始するようにプログラム可能であることだけが要求される。
ここで図19を参照すると、本発明による処理ユニット1910の1実施例の略ブロック図が図示してある。1実施例の処理ユニット310はプロセッサ1910、I/Oアクセス・インタフェース1920、I/O空間1940、プログラム可能なオブジェクト1950例えばソフトウェア・オブジェクト又は構造体を含む。プロセッサ1910はマイクロプロセッサ(例えばCPU420)であり複数のプロセッサを含むことができる(図示していない)。
一実施例において、I/O空間1940はI/Oデバイス1960例えばモデム、ディスク・ドライブ装置、ハードディスク・ドライブ装置、CD−ROMドライブ装置、DVDドライブ装置、PCMCIAカード、各種のその他入出力周辺デバイス装置(例えば414A〜414D)などへの「ゲートウェイ」を提供する。別の実施例において、I/O空間1940はI/Oデバイス1960内に統合されている。一実施例において、I/O空間1940はI/O空間1940にアドレスしこれと通信することに関連したデータを含むメモリ・ユニット1947を含む。メモリ・ユニット1947は物理メモリ例えば磁気テープ・メモリ、フラッシュ・メモリ、ランダム・アクセス・メモリ、半導体チップに搭載されるメモリ、その他等を含む物理メモリ部分を含む。半導体チップに搭載されるメモリは、例えば同期ダイナミック・ランダム・アクセス・メモリ(SDRAM)、ダブルレート・ダイナミック・ランダム・アクセス・メモリ(DDRAM)又はその他等各種の形状のいずれかを取ることができる。
プロセッサ1910はシステムI/Oアクセス・インタフェース1920経由でI/O空間1940と通信する。一実施例において、I/Oアクセス・インタフェース1920は従来の構造であり、希望する入出力データ・トランザクションを特徴付けるI/O空間1940へのI/O空間アドレスと論理信号とを提供する。本発明の実施例はマルチ・テーブルによるセキュリティベースのアクセス・システムを実行するI/Oアクセス・インタフェース1920を提供する。
一実施例において、プロセッサ1910はホスト・バス1915に接続される。プロセッサ1910はホスト・バス1915経由でI/Oアクセス・インタフェース1920及びオブジェクト1950と通信する。I/Oアクセス・インタフェース1920はホスト・バス1915とI/O空間1940に接続される。プロセッサ1910はまた周辺装置と通信するために使用するプライマリ・バス1925へも接続する。一実施例において、プライマリ・バス1925は周辺器相互接続(PCI)バス(PCI仕様書Rev.2.1. 参照)である。ディスプレイ・ユニット220やその他のデバイス(例えばPCIデバイス)を駆動するビデオ・コントローラ(図示していない)はプライマリ・バス1925へ接続される。コンピュータ・システム200は他のバス例えばセカンダリPCIバス(図示していない)又は当業者に公知のその他の周辺装置(図示していない)などを含むことがある。
プロセッサ1910はオブジェクト1950からの命令に基づいて複数のコンピュータ処理演算を実行する。オブジェクト1950は、プロセッサ1910に複数の機能を実行させるソフトウェア構造体を含む。さらに、オブジェクト1950の複数のサブセクション例えばオペレーティング・システム、ユーザ・インタフェース・ソフトウェア・システム、例えばMicrosoft Ward(登録商標)その他が同時に存在しプロセッサ1910内部の演算を実行する。本発明の実施例はプロセッサ1910に対するセキュリティレベル・アクセス及び特権を提供する。
オブジェクト1950によって提供されたソフトウェア・コードの実行に応答して、プロセッサ1910はメモリ・アクセスを含む1つ又はそれ以上のI/Oデバイス・アクセスを実行し、1つ又はそれ以上のオブジェクト1950の開始によって指示されたタスクを実行する。プロセッサ1910によって実行されるI/Oアクセスは、I/Oデバイス1960にアクセスしてI/Oデバイス1960の各々の機能例えばモデムの動作などを制御することを含む。プロセッサ1910によって実行されるI/Oアクセスはまた、実行コードの格納のためにI/Oデバイス1960のメモリ位置へアクセスすることや、保存したメモリ位置からデータを取り出すためのメモリ・アクセスを含む。
ある種のI/Oデバイス1960又はI/Oデバイス1960の一部が1つ又はそれ以上の選択されたオブジェクト1950によってアクセスを制限されることもある。同様に、I/Oデバイス1960の特定のメモリ位置に格納されているある種のデータが1つ又はそれ以上の選択されたオブジェクト1950によってアクセスを制限されることがある。本発明の実施例はシステム200内の特定のI/Oデバイス1960へ又はI/Oデバイス1960のメモリ位置へのアクセスを制限するマルチ・テーブルセキュリティアクセスを提供する。プロセッサ1910はI/Oアクセス・インタフェース1920経由でI/O空間アクセスを実行する。I/Oアクセス・インタフェース1920はI/O空間1940へのアクセスを提供し、I/O空間は複数のI/Oデバイス1960へのゲートウェイを含むことがある。マルチ・テーブル仮想メモリ・アクセス・プロトコルが本発明の少なくとも一実施例によって提供される。
ここで図20を参照すると、本発明によるI/Oアクセス・インタフェース1920の1実施例のブロック図表現が図示してある。一実施例において、I/Oアクセス・インタフェース1920はI/Oアクセス・テーブル2010、セカンダリI/Oテーブル2030、I/O空間インタフェース1945を含む。一実施例において、I/O空間インタフェース1945は、I/Oデバイス1960又はI/Oデバイス1960の一部に対する物理的位置にアドレスするために使用することのできる「仮想」I/O空間アドレスを表現している。プロセッサ1910はI/O空間インタフェース1945にアドレスすることによってI/O空間1940へアクセスすることが可能である。
本発明の実施例はマルチ・テーブルI/O及びメモリ・アクセス・システムを使用するI/Oアクセスを実行することを提供する。本発明の実施例で用いられているマルチ・テーブルI/O及びメモリ・アクセス・システムは、マルチレベル・テーブル・アドレシング方式(すなわちセカンダリI/Oテーブル2030との組合せでI/Oアクセス・テーブル2010を使用する)を使用してI/O空間インタフェース1945経由でI/O空間アドレスへアクセスする。I/Oメモリ・アドレスをプロセッサ1910が使用して希望する物理的I/O位置を特定する。
システム300は1つ又はそれ以上の他のテーブル、例えばセカンダリI/Oテーブル2030との組合せでI/Oアクセス・テーブル2010を使用して仮想I/O空間アドレスを定義する。I/Oアクセス・テーブル2010とセカンダリI/Oアクセス・テーブル2030を使用して物理的I/Oアドレスに繋がる仮想I/O空間アドレスを変換する。物理I/OアドレスはI/Oデバイス360の物理的位置、又はI/Oデバイス1960内のメモリ位置を指している。本発明の実施例により提供されるマルチレベルI/Oアクセス・テーブル・システムでは、セカンダリI/Oテーブル2030がI/Oアクセス・テーブル2010のセクション全体を定義できる。場合によっては、セカンダリI/Oテーブル2030はI/Oアクセス・テーブル2010に存在しないかも知れない仮想I/Oアドレスの一部を定義することもある。セカンダリI/Oテーブル2030はI/Oアクセス・テーブル2010によって生成された仮想I/Oアドレスに基づいた物理的I/O位置をさらに定義する微調整(fine-tuning)デバイスとして使用できる。これにより一層正確かつ高速な仮想I/Oアドレス定義が得られるようになる。
一実施例において、セカンダリ・テーブル2030はセカンダリ・テーブル2030内部に複数のサブセット・テーブルを含んでおり、メモリ・ユニット1947内に格納されるか、又はシステム300の主メモリ(図示していない)に格納される。セカンダリI/Oテーブル2030は高セキュリティレベルで格納されセキュリティでない又は確認されないソフトウェア構造体又はオブジェクト1950がセカンダリI/Oテーブル2030へのアクセスを取得できないようにしている。一実施例において、プロセッサ1910はオブジェクト1950によって送信された命令に基づいて物理的I/Oデバイス位置でのある位置へのアクセスを要求する。プロセッサ1910によってなされたメモリ・アクセス要求に応答して、I/Oアクセス・インタフェース1920はI/Oアクセス・テーブル2010に対して仮想I/Oアドレスを作成するように指示し、この仮想I/OアドレスがさらにセカンダリI/Oテーブル2030によって定義される。仮想I/OアドレスはI/O空間インタフェース1945内のある位置を指し示す。プロセッサ1910は仮想I/O位置へのアクセスを要求し、仮想I/O位置はI/Oデバイス1960内のこれに対応する位置を特定するために使用される。
プロセッサ1910によって実行されるメモリ・アクセスを実行する1実施例が図21A、図21B及び以下の説明で示される。ここで図21Aを参照すると、データ・プロセッサ又はシステム300でセキュリティレベル属性を格納し取り出すためのI/Oアクセス・システム2100の代表的1実施例が図示してある。一実施例において、I/Oアクセス・システム2100はシステム300において処理ユニット1910に統合されている。I/Oアクセス・システム2100はI/O空間1940にアクセスするためにマルチ・テーブルセキュリティ方式を使用するデータ・プロセッサ(図示していない)で有用である。例えば、I/Oアクセス・システム2100はページング方式例えばx86型マイクロプロセッサに実装されているページング方式などを使用するI/O空間1940にアドレスする場合処理ユニット1910で使用することができる。一実施例において、x86システムに於ける1メモリ・ページには4キロバイトのメモリを含む。さらに、I/Oアクセス・システム2100はページ・レベルで適切なセキュリティレベル属性を割り当てる処理ユニット1910に於いて特に用途がある。
I/Oアクセス・システム2100は、x86型マイクロプロセッサのページング・ユニットで受信される仮想、線形、又は中間アドレスに対向して、ページ部分2110とオフセット部分2120とからなるI/O空間アドレス2153を受信する。一実施例において、ページ部分2110のデータは適当なメモリ・ページをアドレスし、一方のオフセット部分2120データは選択されたページ部分2110内部の特定のオフセットI/O位置をアドレスする。I/Oアクセス・システム2100はx86型マイクロプロセッサのページング・ユニット(図示していない)で作成されるような物理アドレスを受信する。
マルチレベル参照テーブル2130は、一般に拡張セキュリティ属性テーブル(ESAT)と呼ばれるもので、物理I/Oアドレスのページ部分2110を受信する。マルチレベル参照テーブル2130はメモリの各ページ2110に関連したセキュリティ属性を格納する。言い換えれば、各ページ2110はそのページ2110に関連して何らかのセキュリティレベル属性を備えている。一実施例において、ページ2110に関連したセキュリティ属性は2130に格納される。例えば、ページ2110に関連したセキュリティ属性は、見下ろし(look down)セキュリティ内容ID、軽量コールゲート、読み取り可能、書き込み可能、実行、外部マスタ書き込み可能、外部マスタ読み取り可能、暗号化メモリ、セキュリティ命令有効、などを含む。これらの属性の多くは本開示の恩恵を受ける当業者には公知である。
一実施例において、マルチレベル参照テーブル2130はシステム300のシステム・メモリ(図示していない)に配置される。別の実施例に於いて、マルチレベル参照テーブル2130はプロセッサ1910に統合され、プロセッサにはシステム300を使用するマイクロプロセッサを含む。したがって、マルチレベル参照テーブル2130が演算可能な速度は、少なくとも部分的には、システム・メモリの速度に依存する。プロセッサ310の速度と比較した場合のシステム・メモリの速度は一般に相対的に低い。つまり、マルチレベル参照テーブル2130を使用してセキュリティ属性を取り出す処理はシステム300の全体的演算を遅くすることがある。セキュリティ属性を特定し取り出すために必要な時間間隔を低減するため、キャッシュ2140をマルチレベル参照テーブル2130と並列に実装する。キャッシュ2140はプロセッサ1910と同一の半導体上に配置されるか(すなわち、キャッシュ2140とプロセッサ1910は1個の半導体チップ上に統合されている)又はプロセッサ・ダイの外部に配置されるか、又はその両方に配置する。一般に、キャッシュ2140の速度はマルチレベル参照テーブル2130の速度より実質的に高速である。キャッシュ2140はページ部分2110と、マルチレベル参照テーブル2130内部に内包されるこれのセキュリティ属性との小さなサブセットを含む。つまり、キャッシュ2140に格納されたページ2110について、セキュリティ属性を取り出す演算は実質的に改善されている。
図21Bをここで参照すると、メモリ内にページ2110に関連したセキュリティ属性を格納して取り出すために使用されるマルチレベル参照テーブル2130の1実施例が図示してある。マルチレベル参照テーブル2130は、一般にESATディレクトリと呼ばれる第1のテーブル2150、及び一般にESATと呼ばれる第2のテーブル2152を含む。一般に、第1のテーブル2150は、ページ2110の各々についてのセキュリティ属性が格納される複数のESAT2152について開始アドレスのディレクトリを含んでいる。本明細書で図示した実施例に於いて、単一のESATディレクトリ2150を用いてI/Oデバイス1960内部のI/Oアドレス及び/又はメモリの全範囲をマッピングすることができる。
I/Oアドレス空間2153の第1の部分は最高次ビットを含み一般にディレクトリ2154(DIR)と呼ばれており、第1のテーブル2150へのポインタとして用いられる。I/O空間アドレス2153はテーブル・データ2170を含む部分も含み、この部分はアドレスしようとするテーブル2150,2152を識別することができる。I/O空間アドレス2153はさらに、特定のエントリ2160,2180へ続くテーブル2150,2152内のオフセット2120も含む。第1のテーブル2150はベース・アドレス2155でシステム・メモリ内に配置される。I/O空間アドレス2153のDIR部分2154はベース・アドレス2155に追加されてエントリ2160を特定し、このエントリは第2のテーブル2152の一つにある適当なアドレスのベース・アドレスを指すものである。一実施例において、複数の第2のテーブル2152がマルチレベル参照テーブル2130内に存在し得る。一般に、第1のテーブル2150のエントリ2160の各々一つずつは第2のテーブル2152内のアドレスの一つの開始アドレスを指している。言い換えれば、各エントリ2180はそれ自身の別々のESAT2152を指している。
一実施例において、第1のテーブル2150と、各第2のテーブル2152は物理メモリ内で1ページ2110を占有している。つまり、x86型マイクロプロセッサでページングを有効にした従来のメモリ管理ユニットは、必要に応じてシステム・メモリ内又は外部へテーブル2150,2152をスワップすることが可能である。つまり、テーブル2150,2152のマルチレベル構成のため、テーブル2152の全部がI/O空間340内に同時に存在するのが望ましい。現在メモリ・ユニット1947には配置されていないテーブル2152の一つが第1のテーブル2150のエントリ2160で要求された場合、x86マイクロプロセッサの従来のメモリ管理ユニット(図示してない)は主メモリ例えばハードディスクドライブ装置からページ2110を読み込み、要求されたページ2110をシステム・メモリに格納することで、アクセスできるようにする。この1ページ・サイズにしたテーブル2150,2152でマルチレベル参照テーブル2130を格納するために必要とされるシステム・メモリの量を減少させ、テーブル2150,2152を使用してI/O空間1940にアクセスするのに必要とされるメモリ・スワッピングの量を減少する。
一実施例において、各ページは4キロバイトの大きさであり、システム・メモリは合計16メガバイト又はそれ以上である。つまり、ページ2110内にはほぼ4000個のESATテーブル2152が存在できる。一実施例において、4000個のESATテーブル2152の各々は4000セットのセキュリティ属性を含み得る。さらに、ESATディレクトリ2150は4000個のESATテーブル2152の各々についての開始アドレスを含んでいる。第1のテーブル2150のエントリ2160は適切な第2のテーブル2152のベース・アドレスを指す。適切な第2のテーブル2152にある所望のエントリ2180はエントリ2160に含まれるベース・アドレス2155へI/O空間アドレス2153の第2の部分2152(テーブル部分)を追加することで同定される。一実施例において、エントリ2180はI/O空間340内の同定されたページ2110に関連した所定のセキュリティ属性を含む。図21Aと図21Bに図示したマルチ・テーブル方式は代表的実施例であり、本開示の恩恵を受ける当業者は本発明により各種のマルチ・テーブル方式を実現できる。
図22は、図22に於いて参照番号2200で標識されるSEMI/Oパーミッション・ビットマップの1実施例と、SEMI/Oパーミッション・ビットマップ2200にアクセスするためのメカニズムの1実施例を示す略図である。図22のメカニズムはBIU406内部の論理内部に実現でき、コンピュータ・システム400がSEMで動作している場合に適用できる。図22に於いて、SEMレジスタ610のセットはモデル固有レジスタ(MSR)2202を含む。MSR2202はSEMI/Oパーミッション・ビットマップ2200の開始(すなわちベース)アドレスを格納するために使用される。前述したように、コンピュータ・システム400はn個の異なるSCID値を有し、nはn≧1の整数である。SEMI/Oパーミッション・ビットマップ2200は、n個の異なるSCID値の各々に対して異なるI/Oパーミッション・ビットマップを含む。別々のI/Oパーミッション・ビットマップの各々は64kビット又は8kバイトを含む。
図22の実施例に於いて、I/OポートにアクセスするI/O命令を含むメモリ・ページのSCID値は、モデル固有レジスタ2202の内容(すなわちSEMI/Oパーミッション・ビットマップ2200のベース・アドレス)から、SEMI/Oパーミッション・ビットマップ2200を構成する1つ又はそれ以上の64kビット(8kバイト)I/Oパーミッション・ビットマップへの、オフセットとして使用される。その結果、SCID値に対応するI/Oパーミッション・マップがアクセスされる。I/Oポート番号はSCID値に対応するI/Oパーミッション・ビットマップへのビット・オフセットして使用される。この方法でアクセスされるビットはI/Oポート番号によって定義されたI/Oポートに対応するビットである。
図23は図23に於いて参照番号2300が標識されているSEMI/Oパーミッション・ビットマップの別の実施例と、SEMI/Oパーミッション・ビットマップへアクセスするためのメカニズムの別の実施例を示す略図である。図23のメカニズムはBIU406内部の論理内部に実現できる。図23の実施例に於いて、SEMI/Oパーミッション・ビットマップ2300は、単一の64kビット(8kバイト)I/Oパーミッション・ビットマップを含む。I/Oポート番号はモデル固有レジスタ2202(すなわちセキュリティ実行モードI/Oパーミッション・ビットマップ2200)の内容からI/Oパーミッション・ビットマップへのビット・オフセットとして使用される。この方法でアクセスされるビットはI/Oポート番号によって定義されたI/Oポートに対応するビットである。他に特に指定しない限り、SEMI/Oパーミッション・ビットマップ2200とSEMI/Oパーミッション・ビットマップ2300は相互に交換可能であることに留意する。
図24を用いて、SCID値の割当てと、これに対応するSEMI/Oパーミッション・ビットマップ2200、2300の作成が、セキュリティ目的でコンピュータ・システム400内部のデバイス・ドライバ及び関連するデバイス・ハードウェア・ユニットを「コンパートメント化」するのにどのように共用されるかを説明する。図24は図5Bと同様のコンピュータ・システム400の各種ハードウェア及びソフトウェア要素の間の関係を示す略図で、ここに於いてデバイス・ドライバ506Aとこれに対応するデバイス・ハードウェア・ユニット414Aは第1のセキュリティ「コンパートメント」2400に存在し、デバイス・ドライバ506Dとこれに対応するデバイス・ハードウェア・ユニット414Dは第2のセキュリティコンパートメント2404に存在する。セキュリティコンパートメント2400と2404は互いに独立しており動作的に隔離されている。デバイス・ドライバ506Aだけがデバイス・ハードウェア・ユニット414Aにアクセスすることを許可されており、デバイス・ドライバ506Dだけがデバイス・ハードウェア・ユニット414Dへアクセスすることを許可されている。デバイス・ドライバとこれに関連するデバイス・ハードウェア・ユニットのこのような「コンパートメント化」によって、悪意のある又は誤ったコードがデバイス・ハードウェア・ユニットの状態に悪い影響を与えるのを防止する、又はコンピュータ・システム400の正しい動作に干渉するのを防止するようにする。
例えば、図24の実施例に於いて、デバイス・ドライバ506A及び506Dの命令を含むメモリ・ページには異なるSCID値が割り当てられる。デバイス・ドライバ506AのSCID値について作成された第1のSEMI/Oパーミッション・ビットマップ2200、2300により、デバイス・ドライバ506Aは、デバイス・ハードウェア・ユニット414Aに割り当てられたコンピュータ・システム400のI/Oアドレス空間の第1の部分へアクセスすることができ、またデバイス・ドライバ506Aはデバイス・ハードウェア・ユニット414Dに割り当てられたI/Oアドレス空間の第2の部分へアクセスすることができる。同様に、デバイス・ドライバ506DのSCID値について作成された第2のSEMI/Oパーミッション・ビットマップ2200、2300により、デバイス・ドライバ506Dはデバイス・ハードウェア・ユニット414Dに割り当てられたI/Oアドレス空間の第2の部分にアクセスすることができ、又デバイス・ドライバ506Aはデバイス・ハードウェア・ユニット414Aに割り当てられたI/Oアドレス空間の第1の部分へアクセスすることができない。結果として、デバイス・ドライバ506Aだけがデバイス・ハードウェア・ユニット414Aへアクセスを許され、デバイス・ドライバ506Dだけがデバイス・ハードウェア・ユニット414Dへアクセスすることを許される。
前述したシステム300とこれに関して説明した各種の特徴に鑑み、コンピュータ・システム400をその実施例のいずれかで動作させる方法3300の実施例が図25に図示してある。方法3300はブロック3305で非セキュリティルーチンを実行することを含む。非セキュリティルーチンは動作にセキュリティプロトコルを必要としない典型的なソフトウェア・ルーチンである。非セキュリティルーチンはまた最小限のセキュリティプロトコルを備えたソフトウェア・ルーチンでもある。非セキュリティルーチンはオペレーティング・システム・コールを含む。
方法3300は又ブロック3310で非セキュリティルーチンからの要求を受信することも含む。要求は、例えば、メモリ・トランザクション、I/Oトランザクション、デバイス間トランザクション、又はソフトウェア・ルーチンを含む。要求は代表的にはコンピュータ・システム400による想定された応答に適合するはずである。方法3300はブロック3315で、ハードウェアにおける要求の第1の評価を実行する。第1の評価は特徴付け(characterization)又はその他の広範囲で潜在的なセキュリティリスク決定を含む。第1の評価は真のセキュリティリスクではないが、可能性として又は潜在的なセキュリティリスクを含むカテゴリ又はトランザクション形式に分類される要求にフラグを立てる。
方法3300は次にブロック3320で要求が潜在的にセキュリティリスクがあるかを判定する。決定ブロック3320に於いて要求が潜在的セキュリティリスクとしてみなされない場合には、方法3300はブロック3325で要求を充当する。要求は何らかのセキュリティリスクを最小限に止めるように及び/又はコンピュータ・システム400の応答時間を最大にするように充当される。ブロック3320に於いて要求が潜在的セキュリティリスクであると看做される場合には、方法3300はブロック3330でソフトウェアによるさらに詳細な第2の評価を実行する。第2の評価は要求及び、予想される応答で要求を充当する際の何らかの潜在的なセキュリティリスクについてのさらに全体的な評価を含む。
方法3300は次に決定ブロック3335で、要求がセキュリティリスクと看做されたか判定する。決定ブロック3335で要求がセキュリティリスクであると看做されなかった場合、方法3300はブロック3325で要求を充当する。要求は何らかのセキュリティリスクを最小限に止めるように及び/又はコンピュータ・システム400の応答時間を最大にするように充当される。要求が決定ブロック3335でセキュリティリスクであると看做された場合、方法3300は決定ブロック3340で、本明細書に記載した本発明の態様の1つ又はそれ以上を用いて要求にセキュリティ的に応答できるように、リスクを管理できるかを判定する。決定ブロック3340で要求を充当する際のセキュリティリスクが管理可能であると看做される場合、方法3300はブロック3345でセキュリティ版の要求に充当する。一実施例において、応答は仮想化によって実行され、要求が要求された通りには充当されなかったとの表示を非セキュリティルーチンは受け取らない。その代わり要求はコンピュータ・システム400が要求に関連したセキュリティ上の問題をトラップするか又は内包できるようにするソフトウェア構造体によって充当される。要求を充当する際のセキュリティリスクが管理不可能であると看做される場合、方法3300はブロック3350で要求を拒否するか又は無視する。方法3300はまたダミー又は所定の応答で要求に応答することもある。
ブロック3315に於ける第1の評価はハードウェアに於いて有利にも迅速に実行できる。ブロック3330に於ける第2の評価はソフトウェアに於いて有利にも一層完全に実行できる。ソフトウェア評価もまた新規セキュリティリスク・アルゴリズムが開発されたなら容易に更新することができる。
以下に示す要求及び可能性としてのセキュリティ応答は単なる例であって、何らかの特定の請求項を制限することを意図していない。セキュリティ化された極秘データを含むメモリ・ページに書き込もうとする要求を考える。書き込みは要求どおりには許可できない。メモリ・ページは仮想ページへと仮想化され、書き込みは仮想ページへ許可される。そしてコンピュータ・システム400は仮想ページへの変更を評価することができる。
次に保護レジスタへの書き込みの要求を考える。保護レジスタは仮想レジスタへ仮想化される。書き込みは仮想レジスタへ許可することができセキュリティリスクについて評価できる。さらにリアルタイム・クロックを変更する要求についても考えてみる。リアルタイム・クロックは仮想クロックへ仮想化される。要求はリアルタイム・クロックを変更すること無しに非セキュリティルーチンで充当される。
以上で説明した本発明の幾つかの態様はハードウェア又はソフトウェアに於いて実装される。つまり、本明細書の詳細な説明のある部分は結果的に、ハードウェアで実装された処理として提示され、本明細書の詳細な説明のある部分は結果的に、計算システム又は計算デバイスのメモリ内部にあるデータ・ビットに対する演算の記号表現が関係するような、ソフトウェアで実装された処理として表現される。これらの説明及び表現は当業者がその業績の本質をより効率的にハードウェアとソフトウェアの双方を使用する他の当業者へ伝達するために使用する手段である。双方の処理及び演算は物理量の物理的操作を必要とする。ソフトウェアに於いて、通常、必要ではないが、これらの量は、格納したり、転送したり、組み合わせたり、比較したり、又何らかの操作をしたりできる電気的、磁気的、又は光学的信号の形を取る。時に原理的に共通の使用の理由からこれらの信号をビット、値、要素、記号、文字、項、数、又は同様な物として参照するのが便利であることは実証されている。
しかしこれらの全てと同様の項目が、適当な物理量に関連付けられるべきことと、これらの量に適用する単に便利なラベルであることは心しておくべきである。特記するか又は何らか自明でない限り、本開示全体を通して、これらの説明は、何らかの電子デバイスのストレージ内の物理量(電気的、磁気的、又は光学的)として表現されるデータを、これも同様にストレージ内部の物理量として表現される他のデータへと、又は伝送又は表示デバイスへ、操作したり変換したりする電子デバイスの動作及び処理を表すものである。このような説明の意味する項目の代表例としては、制限を意味することなく、「処理する(processing)」、「計算する(computing)」、「計算する(calculating)」、「決定する」、「表示する」及びその他同様な項目がある。
本発明のソフトウェアで実装された態様は代表的にはプログラム・ストレージ媒体の何らかの形状で符号化されるか、何らかの種類の伝送媒体の上に実装されることも注意する。プログラム・ストレージ媒体は磁気的(例えばフロッピー・ディスク又はハードディスクドライブ)又は光学的(例えばコンパクトディスク・リード・オンリー・メモリ又は「CD−ROM」)であり、読み出し専用又はランダムアクセスできるものである。同様に、伝送媒体はツイステッドペア線、同軸ケーブル、光ファイバ、又は当該技術で公知の他の何らかの適当な伝送媒体である。本発明は何らかの任意の実装のこれらの態様によって制限されるものではない。
上記で開示した特定の実施例は単に図示を目的としており、本明細書の挟持の恩恵を受ける当業者には明らかなように異なっているが等価な方法で本発明を変更し実施することができる。さらに、以下の請求項に記載されている以外、本明細書に示した構成又は設計の詳細には制限を意図していない。したがって上記で開示した特定の実施例を変更又は改良でき、これら全ての変化が本発明の範囲と精神に含まれると看做されることは明らかである。したがって本明細書で要求する保護は以下の請求項に記載した通りである。
ウィンドウズ(登録商標)オペレーティング・システムを実行する際など、x86プロセッサにより作成される例外スタック・フレームの略図である。 SYSCALL/SYSRETターゲット・アドレス・レジスタの略図である。 本発明の1つの態様によるシステムの1実施例の略図である。 本発明の1つの態様により使用することができるコンピュータ・システムの1実施例のブロック図である。 本発明の1つの態様によるコンピュータ・システムの1実施例の略図で、中央演算処理装置(CPU)を含み、CPUはCPUによって生成される未許可アドレスからデバイス・ハードウェアを保護するために使用される入出力(I/O)セキュリティチェック・ユニット(SCU)を含む。 本発明の1つの態様によるコンピュータ・システムの1実施例の略図で、CPUセキュリティチェック・ユニット(SCU)を含むCPUと、ホスト・ブリッジSCUを含むホスト・ブリッジとを含む。 本発明の1つの態様によるコンピュータ・システム実施例の各種ハードウェア及びソフトウェア要素の間の関係を示す略図である。 本発明の1つの態様によるコンピュータ・システム実施例の各種ハードウェア及びソフトウェア要素の間の関係を示す別の略図である。 本発明の1つの態様によるコンピュータ・システム実施例の各種ハードウェア及びソフトウェア要素の間の関係を示すさらに別の略図である。 本発明の1つの態様によるCPUの1実施例の略図である。 本発明の1つの態様によるCPUの別の実施例の略図である。 本発明の1つの態様によるCPUの別の実施例の略図である。 本発明の1つの態様によるCPU SCUを備えたページング・ユニットを含むMMUの1実施例の略図である。 本発明の1つの態様によるI/OSCUの1実施例を示す略図である。 本発明の1つの態様によるCPU SCUの1実施例を示す略図である。 セキュリティ例外モード(SEM)例外を処理するために使用されるSMCALL/SMRETターゲット・アドレス・レジスタ(SMSTAR)及びセキュリティモードGSベース(SMGSBASE)レジスタの本発明の1つの態様による実施例の略図である。 SEM例外が発生した場合に生成されるSEM例外スタック・フレームの、本発明の1つの態様による1実施例の略図である。 本発明の1つの態様による、SEM例外スタック・フレームのエラー・コードの代表的フォーマットの略図である。 本発明の1つの態様によるセキュリティ実行モード例外を処理する方法の実施例のフローチャートを示す。 コンピュータ・システム内でセキュリティを保持するための、本発明の各種態様による各種実施例を含む略図である。 本発明の一実施例による、選択したメモリ・ページのセキュリティ属性テーブル(SAT)へアクセスして選択したメモリ・ページの追加セキュリティ情報を取得するためのメカニズムの1実施例の略図である。 本発明の1つの態様による、SATデフォルト・レジスタの1実施例の略図である。 本発明の1つの態様による、SATディレクトリ・エントリ・フォーマットの1実施例の略図である。 本発明の1つの態様による、SATエントリ・フォーマットの1実施例の略図である。 本発明の1つの態様による、ホスト・ブリッジSCUを含むホスト・ブリッジの1実施例の略図である。 本発明の1つの態様による、略図である。 本発明の1つの態様による、ホスト・ブリッジSCUの1実施例の略図である。 本発明の1つの態様による、アクセス許可テーブルを含むホスト・ブリッジSCUの1実施例の略図である。 本発明の1つの態様による、本発明の1実施例による図2に図示した処理ユニットのさらに詳細なブロック図表現である。 本発明の一実施例による、図19に図示したI/Oアクセス・インタフェースのさらに詳細なブロック図表現である。 本発明の各種態様による、図19〜図20に図示したプロセッサで実行されるI/O空間/I/Oメモリ・アクセスのブロック図表現である。 本発明の各種態様による、メモリ内に格納されたSEMI/O許可ビットマップの1実施例と、SEMI/O許可ビットマップにアクセスするためのメカニズムの1実施例とを示す略図である。 本発明の各種態様による、図19〜図20に図示したプロセッサで実行されるI/O空間/I/Oメモリ・アクセスのブロック図表現である。 本発明の各種態様による、図22のSEMI/O許可ビットマップの別の実施例と、SEMI/O許可ビットマップへアクセスするためのメカニズムの別の実施例とを示す略図である。 本発明の1つの態様による、コンピュータ・システムの各種ハードウェア及びソフトウェア要素の間の関係を示す略図で、第1のデバイス・ドライバとこれに対応する第1のデバイス・ハードウェア・ユニットが第1のセキュリティ「区画」内に存在し、第2のデバイス・ドライバとこれに対応する第2のデバイス・ハードウェア・ユニットが、前記第1のセキュリティ区画とは別の動作的に隔離された第2のセキュリティ区画内に存在する。 本発明の1つの態様による、セキュリティ状態を改善するためのコンピュータ・システムの動作方法の実施例のフローチャートを示す。

Claims (10)

  1. セキュリティカーネル(504)への無許可アクセスを予防するセキュリティルーチンと非セキュリティルーチンとを実行するように構成可能なプロセッサ(404)と、
    前記非セキュリティルーチンに関連する要求の第1の評価を実行するように接続され、さらに前記第1のセキュリティ評価に基づいて前記セキュリティルーチンへ前記要求の通知を提供するように構成されたハードウェアとを含み、
    前記セキュリティルーチンは、前記第1のセキュリティ評価に基づいて前記要求の第2のセキュリティ評価を実行前記要求に応えるに際してセキュリティリスクがないとの決定がされた場合は前記要求に応えることを許可し、前記要求に応えるに際してセキュリティリスクがあるがそのセキュリティリスクが管理可能であるとの決定がされた場合は前記要求に応えることを許可し、前記要求に応えるに際してセキュリティリスクがありかつそのセキュリティリスクが管理不可能であるとの決定がされた場合は前記要求により要求された応答を拒否するように構成される、コンピュータ・システム(400A−B)。
  2. 前記セキュリティルーチンは前記要求の前記第2の評価を実行するように構成されたソフトウェアセキュリティ例外ハンドラ(1210)を含む請求項1に記載のコンピュータ・システム。
  3. 前記ソフトウェアセキュリティ例外ハンドラ(1210)は前記要求が前記第2の評価を通過した場合前記要求された応答を許可するように構成される請求項2に記載のコンピュータ・システム。
  4. 前記セキュリティカーネルはオペレーティング・システム(502)の要素である請求項1に記載のコンピュータ・システム。
  5. 前記第1のセキュリティ評価では、前記要求が可能性として又は潜在的なセキュリティリスクを含むようなカテゴリ及びトランザクション形式の少なくとも一つに分類されるかどうかを判定し、前記第2のセキュリティ評価は前記要求がセキュリティリスクであるかどうかを判定するセキュリティリスク評価である請求項1に記載のコンピュータ・システム。
  6. 前記第1のセキュリティ評価では、最小限のセキュリティリスクを伴うカテゴリ又はトランザクション形式や、潜在的に高いセキュリティリスクを伴うカテゴリ又はトランザクション形式を含む複数のカテゴリと前記要求とを比較することにより、可能性として又は潜在的セキュリティリスクを含むカテゴリ及びトランザクション形式の少なくとも一つに前記要求が該当するかどうかを判定し、前記要求が潜在的に高いセキュリティリスクを伴うカテゴリの一つに該当する場合は、前記ハードウェアは前記セキュリティルーチンに前記要求を通知する請求項5に記載のコンピュータ・システム。
  7. 前記ハードウェアは、少なくともセキュリティ実行モードビット(609)を格納するセキュリティ実行モードハンドラ(610)とI/O保護ビットマップ(2200)とセキュリティ属性データ構造とを格納するメモリ(406)を含み、前記セキュリティルーチンはマイクロコード(650)と有限状態マシンの少なくとも一方を含む請求項1に記載のコンピュータ・システム。
  8. 非セキュリティルーチンを実行し、
    前記非セキュリティルーチンから要求を受け取り、
    前記要求の第1のセキュリティ評価をハードウェアで実行し、
    前記第1のセキュリティ評価に基づいて、セキュリティルーチンにおける前記要求の第2のセキュリティ評価をセキュリティカーネルのソフトウェアで実行し、
    前記第2のセキュリティ評価に基づいて、前記要求に応えるに際してセキュリティリスクがないとの決定がされた場合は前記要求に応えることを許可し、前記要求に応えるに際してセキュリティリスクがあるがそのセキュリティリスクが管理可能であるとの決定がされた場合は前記要求に応えることを許可し、前記要求に応えるに際してセキュリティリスクがありかつそのセキュリティリスクが管理不可能であるとの決定がされた場合は前記要求により要求された応答を拒否する、方法。
  9. 前記要求の前記第1の評価のハードウェアでの実行では、前記要求のカテゴリ分けをハードウェアで実行し、前記要求の前記第2の評価の前記セキュリティルーチン内のソフトウェアでの実行では、前記要求のセキュリティリスク評価を前記セキュリティルーチン内でソフトウェアで実行する請求項8に記載の方法。
  10. 前記要求のカテゴリ分けのハードウェアでの実行では、前記要求を、わずかなセキュリティリスクを伴うカテゴリと潜在的セキュリティリスクを伴うカテゴリとを含む複数のカテゴリと比較し、前記要求が潜在的セキュリティリスクを伴うカテゴリの一つに該当する場合、前記ハードウェアが前記要求を前記セキュリティルーチンへ渡す、請求項9に記載の方法。
JP2004509764A 2002-05-31 2002-12-17 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント Expired - Lifetime JP4688490B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/160,984 US20030226014A1 (en) 2002-05-31 2002-05-31 Trusted client utilizing security kernel under secure execution mode
US10/160,984 2002-05-31
PCT/US2002/040218 WO2003102745A2 (en) 2002-05-31 2002-12-17 Trusted client utilizing security kernel under secure execution mode

Publications (2)

Publication Number Publication Date
JP2005528686A JP2005528686A (ja) 2005-09-22
JP4688490B2 true JP4688490B2 (ja) 2011-05-25

Family

ID=29583316

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004509764A Expired - Lifetime JP4688490B2 (ja) 2002-05-31 2002-12-17 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント

Country Status (9)

Country Link
US (1) US20030226014A1 (ja)
EP (1) EP1509839A2 (ja)
JP (1) JP4688490B2 (ja)
KR (1) KR100975981B1 (ja)
CN (1) CN1307535C (ja)
AU (1) AU2002360617A1 (ja)
GB (1) GB2405976B (ja)
TW (1) TWI289787B (ja)
WO (1) WO2003102745A2 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
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
US8838950B2 (en) * 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
US7089397B1 (en) * 2003-07-03 2006-08-08 Transmeta Corporation Method and system for caching attribute data for matching attributes with physical addresses
US7496958B2 (en) * 2003-10-29 2009-02-24 Qualcomm Incorporated System for selectively enabling operating modes of a device
KR100591555B1 (ko) 2004-01-19 2006-06-21 주식회사 전유시스템 Pam 인증 기반 보안 커널 시스템 및 그 제어방법
US8533777B2 (en) * 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
JP2006203564A (ja) * 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
US20070168574A1 (en) * 2005-09-28 2007-07-19 Dell Products L.P. System and method for securing access to general purpose input/output ports in a computer system
US7685638B1 (en) 2005-12-13 2010-03-23 Symantec Corporation Dynamic replacement of system call tables
US8214296B2 (en) * 2006-02-14 2012-07-03 Microsoft Corporation Disaggregated secure execution environment
EP1865435A1 (en) * 2006-06-06 2007-12-12 Texas Instruments France Enhanced exception handling
US8245307B1 (en) 2006-12-18 2012-08-14 Nvidia Corporation Providing secure access to a secret
US20090144821A1 (en) * 2007-11-30 2009-06-04 Chung Shan Institute Of Science And Technology, Armaments Bureau, M.N.D. Auxiliary method for investigating lurking program incidents
KR101017015B1 (ko) * 2008-11-17 2011-02-23 (주)소만사 네트워크 기반 고성능 콘텐츠 보안 시스템 및 방법
US9348784B2 (en) * 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
CN101833621B (zh) * 2010-04-27 2011-11-30 广州广电运通金融电子股份有限公司 终端安全审计方法及系统
US8495750B2 (en) 2010-08-31 2013-07-23 International Business Machines Corporation Filesystem management and security system
KR101895453B1 (ko) 2011-11-09 2018-10-25 삼성전자주식회사 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
US9225719B2 (en) * 2011-12-12 2015-12-29 Jpmorgan Chase Bank, N.A. System and method for trusted pair security
US20150047015A1 (en) * 2012-02-27 2015-02-12 Nokia Corporation Access control for hardware units
US9204522B2 (en) * 2012-10-16 2015-12-01 Productions Resource Group, LLC Remote communications protocol
US9207940B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Robust and high performance instructions for system call
JP6370098B2 (ja) * 2014-05-16 2018-08-08 杉中 順子 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
US20170109526A1 (en) * 2015-10-20 2017-04-20 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
US10375106B1 (en) * 2016-01-13 2019-08-06 National Technology & Engineering Solutions Of Sandia, Llc Backplane filtering and firewalls
WO2017120812A1 (en) * 2016-01-14 2017-07-20 Intel Corporation Secure communication channel for system management mode
CN108345522B (zh) * 2017-12-15 2019-03-29 清华大学 用于对中央处理器cpu进行安全检测的方法、装置和系统
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11182192B2 (en) * 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US10747875B1 (en) * 2020-03-19 2020-08-18 Cyberark Software Ltd. Customizing operating system kernels with secure kernel modules

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561788A (en) * 1985-04-10 1996-10-01 Microsoft Corporation Method and system for executing programs using memory wrap in a multi-mode microprocessor
JP2001056783A (ja) * 1999-08-18 2001-02-27 Nec Software Kobe Ltd プログラム単位メモリ属性管理方式
US6249872B1 (en) * 1996-02-09 2001-06-19 Intel Corporation Method and apparatus for increasing security against unauthorized write access to a protected memory
US20020051538A1 (en) * 1997-09-16 2002-05-02 Safenet, Inc. Kernel mode protection
JP2005509946A (ja) * 2001-11-13 2005-04-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4621321A (en) * 1984-02-16 1986-11-04 Honeywell Inc. Secure data processing system architecture
US4984272A (en) * 1988-11-30 1991-01-08 At&T Bell Laboratories Secure file handling in a computer operating system
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5303378A (en) * 1991-05-21 1994-04-12 Compaq Computer Corporation Reentrant protected mode kernel using virtual 8086 mode interrupt service routines
JPH06324910A (ja) * 1993-05-13 1994-11-25 Hitachi Ltd コンピュータシステムのアクセス検出装置
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5881282A (en) * 1996-12-10 1999-03-09 Intel Corporation Controlling ill-behaved computer add-on device through a virtual execution mode
US6292798B1 (en) * 1998-09-09 2001-09-18 International Business Machines Corporation Method and system for controlling access to data resources and protecting computing system resources from unauthorized access
US7013296B1 (en) * 1999-06-08 2006-03-14 The Trustees Of Columbia University In The City Of New York Using electronic security value units to control access to a resource
US6880108B1 (en) * 1999-07-29 2005-04-12 International Business Machines Corporation Risk assessment methodology for AIX-based computer systems
US6745306B1 (en) * 1999-07-29 2004-06-01 Microsoft Corporation Method and system for restricting the load of physical address translations of virtual addresses
US6718485B1 (en) * 1999-11-16 2004-04-06 Parasoft Corporation Software emulating hardware for analyzing memory references of a computer program
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
GB0016835D0 (en) * 2000-07-07 2000-08-30 Messagelabs Limited Method of, and system for, processing email
US7185192B1 (en) * 2000-07-07 2007-02-27 Emc Corporation Methods and apparatus for controlling access to a resource
US6738875B1 (en) * 2000-07-31 2004-05-18 Microsoft Corporation Efficient write-watch mechanism useful for garbage collection in a computer system
US20020083183A1 (en) * 2000-11-06 2002-06-27 Sanjay Pujare Conventionally coded application conversion system for streamed delivery and execution
US7058978B2 (en) * 2000-12-27 2006-06-06 Microsoft Corporation Security component for a computing device
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US7130613B2 (en) * 2001-08-30 2006-10-31 Motorola, Inc. Method for reducing fraudulent system access
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US7127579B2 (en) * 2002-03-26 2006-10-24 Intel Corporation Hardened extended firmware interface framework

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561788A (en) * 1985-04-10 1996-10-01 Microsoft Corporation Method and system for executing programs using memory wrap in a multi-mode microprocessor
US6249872B1 (en) * 1996-02-09 2001-06-19 Intel Corporation Method and apparatus for increasing security against unauthorized write access to a protected memory
US20020051538A1 (en) * 1997-09-16 2002-05-02 Safenet, Inc. Kernel mode protection
JP2001056783A (ja) * 1999-08-18 2001-02-27 Nec Software Kobe Ltd プログラム単位メモリ属性管理方式
JP2005509946A (ja) * 2001-11-13 2005-04-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法

Also Published As

Publication number Publication date
KR100975981B1 (ko) 2010-08-16
WO2003102745A3 (en) 2004-03-25
WO2003102745A2 (en) 2003-12-11
JP2005528686A (ja) 2005-09-22
GB2405976B (en) 2007-02-21
CN1307535C (zh) 2007-03-28
AU2002360617A1 (en) 2003-12-19
US20030226014A1 (en) 2003-12-04
EP1509839A2 (en) 2005-03-02
KR20050006282A (ko) 2005-01-15
AU2002360617A8 (en) 2003-12-19
TW200307216A (en) 2003-12-01
CN1630849A (zh) 2005-06-22
GB2405976A (en) 2005-03-16
TWI289787B (en) 2007-11-11
GB0427590D0 (en) 2005-01-19

Similar Documents

Publication Publication Date Title
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US5469556A (en) Resource access security system for controlling access to resources of a data processing system
US6854039B1 (en) Memory management system and method providing increased memory access security
US8135962B2 (en) System and method providing region-granular, hardware-controlled memory encryption
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
US4858117A (en) Apparatus and method for preventing computer access by unauthorized personnel
US7043616B1 (en) Method of controlling access to model specific registers of a microprocessor
US4581702A (en) Critical system protection
JP4295111B2 (ja) メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法
EP1355235A2 (en) Using limits on address translation to control access to an addressable entity
US20020147916A1 (en) Method and apparatus for securing portions of memory
US7130977B1 (en) Controlling access to a control register of a microprocessor
KR101001344B1 (ko) 구획된 보안을 위한 입/출력 허가 비트맵
US7082507B1 (en) Method of controlling access to an address translation data structure of a computer system
US7451324B2 (en) Secure execution mode exceptions
US7426644B1 (en) System and method for handling device accesses to a memory providing increased memory access security
US20050165783A1 (en) Secure direct memory access through system controllers and similar hardware devices
KR100972635B1 (ko) 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법

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: 20090526

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090826

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090902

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090928

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091005

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091026

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091102

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100421

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100707

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101108

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101222

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: 20110119

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: 20110215

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4688490

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

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

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

EXPY Cancellation because of completion of term