JP2005521941A - コンパートメント化されたセキュリティのための入出力許可ビットマップ - Google Patents

コンパートメント化されたセキュリティのための入出力許可ビットマップ Download PDF

Info

Publication number
JP2005521941A
JP2005521941A JP2003581027A JP2003581027A JP2005521941A JP 2005521941 A JP2005521941 A JP 2005521941A JP 2003581027 A JP2003581027 A JP 2003581027A JP 2003581027 A JP2003581027 A JP 2003581027A JP 2005521941 A JP2005521941 A JP 2005521941A
Authority
JP
Japan
Prior art keywords
permission
port
instruction
security context
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003581027A
Other languages
English (en)
Other versions
JP4391832B2 (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 JP2005521941A publication Critical patent/JP2005521941A/ja
Application granted granted Critical
Publication of JP4391832B2 publication Critical patent/JP4391832B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Bus Control (AREA)

Abstract

I/O命令を選択的に実行するための方法ならびに装置。この方法は、I/O許可ビットマップ(600)をメモリ(206)に作成するステップと、I/Oポート番号とセキュリティコンテキスト識別情報値とを受信するステップとを有する。この方法は、前記セキュリティコンテキスト識別情報値と前記I/Oポート番号とを使用して、記憶されている前記I/O許可ビットマップ(600)にアクセスして、前記I/Oポートに対応する許可ビットを取得するステップと、前記I/Oポートに対応する前記許可ビットの値に応じて前記I/O命令を実行するステップと、も有する。I/O許可ビットマップ(600)は、複数の許可ビットを含む。前記許可ビットの各々は、複数のI/Oポートのうちの異なる1つに対応している。前記許可ビットの各々は、対応するI/Oポートへのアクセスが許可されるかどうかを示す値を有する。前記I/Oポート番号は前記I/O命令によって参照されるI/Oポートを示す。前記セキュリティコンテキスト識別情報値は前記I/O命令を格納しているメモリ場所のセキュリティコンテキストレベルを示す。

Description

本発明は、概して、メモリ管理のシステムならびに方法に関し、本発明は、より詳細には、メモリに記憶されたデータの保護を行うメモリ管理のシステムならびに方法に関する。
80x86(すなわち「x86」)プロセッサアーキテクチャでは、メモリアドレス空間とは別個に入出力(I/O)アドレス空間を利用できる。x86のI/Oアドレス空間は、8ビットのデータを単位する64キロの連続するブロックであり、そのアドレス範囲は0〜65,535(0000h〜FFFFh、「h」は16進数を示す)を占め、通常は周辺機器(例えばキーボード、ディスクドライブ等)との間の通信に使用される。周辺機器は、通常「I/Oポート」、あるいは略して「ポート」と呼ばれる特別なアクセスレジスタを備える。I/Oポートは8ビットポート、16ビットポートまたは32ビットポートのいずれかであり得る。8ビットポートは、そのポートの一意的なバイトアドレスを使用してアクセスされる。16ビットI/Oポートは隣接する2個のバイトを有し、32ビットI/Oポートは、隣接する4個のバイトを有する。16ビットI/Oポートおよび32ビットI/Oポートは、これらの隣接する全バイトのうちの最下位のアドレスを使用してアクセスされる。
x86プロセッサのI/Oアドレス空間でのアドレスは、x86プロセッサに結合されている複数の周辺機器の別個のポートに対応し得る。x86プロセッサは、アドレス信号線にM/IO(メモリI/O)信号を送り、このM/IO信号は、アドレス信号線上をアドレス信号によって伝えられるアドレスが、メモリアドレス空間のアドレスであるかI/Oアドレス空間のアドレスであるかを示している。
x86命令セットは、I/Oアドレス空間にアクセスするための特別なI/O命令を有している。x86のI/O命令は、x86プロセッサの内蔵レジスタとI/Oアドレス空間にマップされたI/Oポートの間、およびx86プロセッサに結合されたメモリとI/Oポートとの間でデータを交換するための方法を提供する。x86のI/O命令は、「IN」(ポートからの入力)および「OUT」(ポートへの出力)のレジスタI/O命令のほか、「INS」(ポートからの文字列の入力)および「OUTS」(ポートへの文字列の出力)のブロックI/O命令または文字列I/O命令を備える。ブロックx86命令は、I/Oポートからメモリに、メモリからI/Oポートに、直接データを転送する。
「タスク」とは、実行の連続的な1つのスレッド(thread)である。80286以降のx86プロセッサは、複数のタスクを並行して実行できるマルチタスク処理に対応している。実際には、所定の時間に1つのタスクしか実行されておらず、x86プロセッサは単に複数のタスクを切り替えているだけである。
最近のx86プロセッサは、実アドレスすなわち「リアル」モード、保護された仮想アドレスすなわち「プロテクト」モード、および仮想8086すなわち「仮想」モードを含む、数種類の異なるモードのいずれか1つで実行することが可能である。プロテクトモードにおいて、I/O命令の使用は、FLAGSレジスタにあるIOPL(I/O特権レベル)フィールドの設定によって制御される。80386以降のx86プロセッサでは、I/Oアドレス空間にマップされた個々のポートに対するアクセスは、タスクのタスク状態セグメント(TSS)内のI/O許可ビットマップによって制御される。プロテクトモードのオペレーティングシステムの大半は、I/Oポートへのアクセスをオペレーティングシステム自身(特権レベル0)のほか、少数の「信頼された」デバイスドライバ(特権レベル1)に制限している。
80386以降のx86プロセッサがプロテクトモードで動作している場合、2種類のメカニズムを使用して、タスクによるI/Oアドレス空間へのアクセスを制限し得る。第1に、I/O命令の使用は、フラグ(EFLAGS)レジスタにあるI/O特権レベル(IOPL)フィールドの設定によって制御される。第2に、I/O空間にある個々のI/Oポートへのアクセスは、各タスクのタスク状態セグメント(TSS)内のI/O許可ビットマップによって制御され得る。I/O許可ビットマップのメカニズムは、80386以降のx86プロセッサのみに実装されている点が留意される。
プロテクトモードのオペレーティングシステムの大半は、I/O命令の使用を、オペレーティングシステム自身のほか、少数の「信頼された」デバイスドライバに制限しようとする。x86プロセッサアーキテクチャの同心円状の特権モデルにおいては、プロテクトモードのオペレーティングシステムソフトウェアは、通常、特権レベル0の内側のリングで実行しており、信頼されたドライバソフトウェアは、通常、この内側のリングを囲む特権レベル1のリング、または特権レベル0で実行している。アプリケーションプログラムは、通常、特権レベル3の外側のリングで実行している。
プロテクトモードで実行しているx86プロセッサがタスクのI/O命令を実行する場合、x86プロセッサは、最初に、タスクの現在の特権レベル(CPL)とI/O特権レベル(IOPL)とを比較する。タスクの現在の特権レベル(CPL)が、I/O特権レベル(IOPL)と少なくとも同等である(すなわち現在の特権レベルの数値がIOPL以下である)場合、x86プロセッサはそのI/O命令を実行する。タスクの現在の特権レベル(CPL)が、I/O特権レベル(IOPL)と同等ではない(すなわち現在の特権レベルの数値がIOPLを越える)場合、x86プロセッサは、タスクのタスク状態セグメント(TSS)にあるI/O許可ビットマップを検査する。
ここで、図1を用いて、x86アーキテクチャの公知のI/O許可ビットマップ保護メカニズムを示す。図1は、メモリ100に記憶されているタスク状態セグメント102(TSS)と、対応するI/O許可ビットマップ104とを示す図である。タスク状態セグメント(TSS)103は、メモリセグメントの先頭(すなわちベース)から始まり、I/O許可ビットマップメモリ104はセグメントの終端(すなわち境界)で終わっている。タスク状態セグメント(TSS)102は、メモリセグメント内の相対アドレス66hに16ビットの「I/Oマップベース」を有する。このI/Oマップベースは、対応するI/O許可ビットマップ104の先頭バイトのオフセットを、バイト単位で表した値を格納している。
I/O許可ビットマップ104の各ビットは、I/O空間におけるバイトに対応している。例えば、I/O許可ビットマップ104の先頭のビットは、I/O空間のアドレス「0」の8ビットポートを表し、第2のビットは、I/O空間のアドレス「1」の8ビットポートを表す、という風に続いていく。アクセス先のI/Oポートの番号は、I/O許可ビットマップ104におけるビットオフセットとして使用される。アクセス先のI/Oポートに対応するI/O許可ビットマップ104のビットが「0」にクリアされている場合、x86プロセッサ(メモリ100に結合されており、I/O保護ビットマップ104にアクセスしている)はI/O命令を実行する。このビットが「1」にセットされている場合、x86プロセッサはI/O命令を実行せず、一般保護フォールトを生成する。アクセス先のI/Oポートが16ビットワードまたは32ビットダブルワードのI/Oポートである場合、x86プロセッサがI/O命令を実行するためには、ポートの隣り合ったバイトに対するビットの全てが「0」にクリアされている必要がある。
I/O空間の使用度は得てして低く、I/O空間内の64キロのポートの全てを表すには8キロバイトが必要となるため、I/O許可ビットマップの保護メカニズムは、I/O許可ビットマップを圧縮する方法を備えている。I/O許可ビットマップの終端を越えたアドレスを有するI/Oポートは、I/O許可ビットマップにある対応するビットが「1」にセットされているように扱われる。
x86プロセッサアーキテクチャのI/O保護ビットマップメカニズムが不十分で、I/Oアドレス空間が適切に保護されないという問題が生ずる。例えば、管理者レベル[スーパーバイザレベル(supervisor lever)、例えば、CPL=0を有する]で実行しているどのタスクも、I/Oアドレス空間の任意のポートにいつでもアクセスすることができる。さらに、管理者レベルで実行している第1のタスクが、第2のタスクのI/O許可ビットマップのビットを変更して、第2のタスクが、I/Oアドレス空間の任意のポートまたは全てのポートにアクセスできるようにすることができる。その後、第2のタスクは、これらのポートの1つ以上にアクセスする可能性がある。本発明は、x86アーキテクチャのI/O空間の保護が不十分であるという上記の問題を解決し得るか、少なくとも低減し得るシステムおよび/または方法を対象したものである。
本発明の一態様においては、入出力(I/O)命令を選択的に実行するための方法が提供される。この方法は、入出力(I/O)許可ビットマップをメモリに作成するステップと、I/Oポート番号とセキュリティコンテキスト識別情報(SCID)値とを受信するステップと、を有する。この方法は、前記SCID値と前記I/Oポート番号とを使用して、記憶されている前記I/O許可ビットマップにアクセスし、前記I/Oポートに対応する許可ビットを取得するステップと、前記I/Oポートに対応する前記許可ビットの値に応じて前記I/O命令を実行するステップと、も有する。I/O許可ビットマップは、複数の許可ビットを有する。前記許可ビットの各々は、複数のI/Oポートのうちの異なる1つに対応している。前記許可ビットの各々は、対応するI/Oポートへのアクセスが許可されるかどうかを示す値を有する。前記I/Oポート番号は前記I/O命令によって参照されるI/Oポートを示す。前記SCID値は前記I/O命令を格納しているメモリ場所のセキュリティコンテキストレベルを示す。
添付の図面と併せて下記の説明を読めば、本発明を理解できるであろう。添付の図面においては、同一の参照符号は同じ要素を指している。
本発明は、種々の変形および代替形態を取り得るが、その特定の実施形態が、図面に例として図示され、ここに詳細に記載されているに過ぎない。しかし、この詳細な説明は、本発明を特定の実施形態に限定することを意図するものではなく、反対に、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことを理解すべきである。
本発明の例示的な実施形態を下記に記載する。簡潔を期すために、実際の実装の特徴を全て本明細書に記載することはしない。当然、実際の実施形態の開発においては、システム上の制約およびビジネス上の制約に適合させるなど、開発の具体的な目的を達するために、実装に固有の判断が数多く必要とされ、この判断は実装によって変わるということが理解される。さらに、この種の開発作業は複雑かつ時間がかかるものであるが、本開示による利益を受ける当業者にとって日常的な作業であるということが理解されよう。
図2は、CPU(プロセッサ)202、システムブリッジまたは「ホスト」ブリッジ204、メモリ206、第1デバイスバス208(例えば、周辺機器相互接続(PCI)バス)、デバイスバスブリッジ210、第2デバイスバス212(例えば、業界標準アーキテクチャ(ISA)バス)、および4つのデバイスハードウェアユニット214A〜214Dを備えたコンピュータシステム200の一実施形態を示す図である。ホストブリッジ204は、CPU202、メモリ206、および第1デバイスバス208に結合されている。ホストブリッジ204は、CPU202と第1デバイスバス208との間で信号の変換を行うと共に、メモリ206を、CPU202と第1デバイスバス208とに動作可能に結合している。デバイスバスブリッジ210は、第1デバイスバス208と第2デバイスバス212との間に結合されており、第1デバイスバス208と第2デバイスバス212との間で信号の変換を行う。図2の実施形態において、デバイスハードウェアユニット214A,214Bは第1デバイスバス208に結合されており、デバイスハードウェアユニット214C,214Dは第2デバイスバス212に結合されている。デバイスハードウェアユニット214A〜214Dの1つ以上は、例えば、記憶装置(ハードディスクドライブ、フロッピードライブおよびCD−ROMドライブなど)、通信装置(モデムおよびネットワークアダプタなど)または入出力装置(ビデオ機器、オーディオ機器およびプリンタなど)であり得る。
図2の実施形態において、CPU202は、入出力(I/O)セキュリティチェックユニット(SCU)216を有する。デバイスハードウェアユニット214A〜214Dは、CPU202のI/O空間のさまざまなI/Oポートにマップされ得、CPU202は、デバイスハードウェアユニット214A〜214Dと、対応するI/Oポートを介して通信し得る。
この場合、I/O SCU216は、CPU202によって生成される権限のないアクセスからデバイスハードウェアユニット214A〜214Dを保護するために使用される。別の実施形態においては、図2に示すホストブリッジ204は、CPU202に内蔵されてもよい点が留意される。
図3は、図2のコンピュータシステム200の各種ハードウェアコンポーネントおよびソフトウェアコンポーネントの間の関係を示す図である。図3の実施形態において、複数のアプリケーションプログラム300、オペレーティングシステム302、セキュリティカーネル304、およびデバイスドライバ306A〜306Dがメモリ206に記憶されている。アプリケーションプログラム300、オペレーティングシステム302、セキュリティカーネル304、およびデバイスドライバ306A〜306Dは、CPU202によって実行される命令を含む。オペレーティングシステム302はユーザーインターフェースおよびソフトウェアの「プラットホーム」を提供しており、このプラットホームの最上層においてアプリケーションプログラム300が実行している。また、オペレーティングシステム302は、例えばファイルシステム管理、プロセス管理、および入出力(I/O)制御などの基本的な支援機能を提供している。
また、オペレーティングシステム302は、基本的なセキュリティ機能を提供し得る。例えば、CPU202(図2)はx86命令セットの命令を実行するx86プロセッサであり得る。この場合、上記したように、CPU202は、プロテクトモードで仮想メモリおよび実メモリの保護の機能の両方を提供する専用のハードウェア要素を有し得る。例えば、オペレーティングシステム302は、Windows(登録商標)オペレーティングシステムファミリ(マイクロソフト コーポレイション、ワシントン州レドモンド所在)の1つであり得る。このオペレーティングシステムは、CPU202をプロテクトモードで動作させ、CPU202の専用のハードウェア要素を使用して、プロテクトモードで仮想メモリおよびメモリ保護の両方を提供する。
下記にさらに詳述するように、セキュリティカーネル304は、オペレーティングシステム302によって提供されるセキュリティ機能を越える付加的なセキュリティ機能を提供し、メモリ206に記憶されているデータを権限のないアクセスから保護する。図3に示すように、セキュリティカーネル304はI/O SCU216に結合されている。下記に詳述するように、I/O SCU216は、ソフトウェアが行った、I/Oアドレス空間内のI/Oポートに対するアクセスを全て監視して、I/Oポートに対する正当なアクセスのみを許可する。
図3の実施形態において、デバイスドライバ306A〜306Dは、対応するデバイスハードウェアユニット214A〜214Dにそれぞれ動作的に関連付けられ、かつ結合されている。例えば、デバイスハードウェアユニット214A,214Dは、「セキュアな(セキュリティ保護された)」デバイスであり得、対応するデバイスドライバ306A,306Dは「セキュアな」デバイスドライバであり得る。セキュリティカーネル304は、オペレーティングシステム302とセキュアなデバイスドライバ306A,306Dとの間に結合されており、アプリケーションプログラム300およびオペレーティングシステム302が行うアクセスを全て監視して、デバイスドライバ306A,306Dおよび対応するセキュアなデバイス214A,214Dを保護し得る。セキュリティカーネル304は、アプリケーションプログラム30およびオペレーティングシステム302によって行われる、デバイスドライバ306A,306Dおよび対応するセキュアなデバイス214A,214Dへの権限のないアクセスを阻止し得る。これに対し、デバイスドライバ306B,306Cは、「非セキュアな」デバイスドライバであり得、対応するデバイスハードウェアユニット214B,214Cは「非セキュアな」デバイスハードウェアユニットであり得る。デバイスドライバ306B,306Cおよび対応するデバイスハードウェアユニット214B,214Cは、例えば、旧来のデバイスドライバである「レガシー」デバイスドライバおよびデバイスハードウェアユニットであり得る。
別の実施形態においては、セキュリティカーネル304がオペレーティングシステム302に内蔵されてもよい点が留意される。さらに別の実施形態においては、セキュリティカーネル304、デバイスドライバ306A,306D、および/またはデバイスドライバ306B,306Cがオペレーティングシステム302に内蔵されてもよい。
図4は、図2のコンピュータシステム200のCPU202の一実施形態を示す図である。図4の実施形態において、CPU202は、実行ユニット400、メモリ管理ユニット(MMU)402、キャッシュユニット404、バスインタフェースユニット(BIU)406、制御レジスタの組408、およびセキュア実行モード(SEM)レジスタの組410を有する。BIU406は、ホストブリッジ204(図2)に結合されており、CPU202とホストブリッジ204との間のインタフェースを形成している。また、BIU406は、ホストブリッジ204を介してメモリ206(図2)に結合されており、CPU202とメモリ206との間のインタフェースを形成している。図4の実施形態において、I/O SCU216は、BIU406に内蔵されている。
以下に詳述するように、SEMレジスタの組410は、図2のコンピュータシステム200内でセキュア実行モード(SEM)を実装するために使用され、I/O SCU216の動作はSEMレジスタの組410の記憶内容によって支配される。SEMレジスタ410は、セキュリティカーネル304(図3)によってアクセスされる(すなわち書き込みおよび/または読み込みが行われる)。
図4の実施形態において、SEMレジスタの組410は、セキュア実行モード(SEM)ビットを有する。図2のコンピュータシステム200は、例えば、(i)CPU202がx86プロテクトモードで実行しているx86プロセッサであり、(ii)メモリページングが有効となっており、かつ(iii)SEMビットが「1」にセットされている場合に、セキュア実行モード(SEM)で動作し得る。
一般に、制御レジスタの組408の記憶内容は、CPU202の動作を支配する。したがって、制御レジスタの組408の記憶内容は、実行ユニット400、MMU402、キャッシュユニット404、および/またはBIU406の動作を支配する。例えば、制御レジスタの組408は、x86プロセッサアーキテクチャの制御レジスタを複数有し得る。
CPU202の実行ユニット400は、命令(例えばx86命令)およびデータをフェッチし、フェッチされた命令を実行して、命令の実行中に信号(例えばアドレス信号、データ信号および制御信号)を生成する。実行ユニット400は、キャッシュユニット404に結合されており、キャッシュユニット404およびBIU406を介してメモリ206(図2)から命令を受信し得る。
コンピュータシステム200のメモリ206(図2)は、各々が一意的な物理アドレスを有する複数のメモリ場所を有し得る。ページングを有効にしてプロテクトモードで動作している場合、CPU202のアドレス空間は、ページフレームまたは「ページ」と呼ばれる複数のブロックに分割される。任意の時間において、メモリ206には、ページの一部に対応するデータのみが記憶されている。図4の実施形態において、命令の実行中に実行ユニット400によって生成されるアドレス信号は、セグメント化された(すなわち「論理」)アドレスである。MMU402は、実行ユニット400によって生成されたセグメント化アドレスを、メモリ206の対応する物理アドレスに変換する。MMU402は、物理アドレスをキャッシュユニット404に提供する。キャッシュユニット404は、実行ユニット400が最近フェッチした命令およびデータを記憶するために使用される比較的小さな記憶装置である。
BIU406は、キャッシュユニット404とホストブリッジ204との間に結合されている。BIU406は、キャッシュユニット404に存在しない命令およびデータを、ホストブリッジ204を介してメモリ206からフェッチするために使用される。BIU406は、I/O SCU216も備えている。I/O SCU216は、SEMレジスタ410、実行ユニット400およびMMU402に結合されている。上記したように、I/O SCU216は、ソフトウェアが行った、I/Oアドレス空間内のI/Oポートに対するアクセスを全て監視して、I/Oポートに対する正当なアクセスのみを許可する。
図5は、図4のI/O SCU216の一実施形態を示す図である。図5の実施形態において、I/O SCU216は、セキュリティ検査ロジック500を備える。セキュリティ検査ロジック500は、実行ユニット400から「ENABLE」信号およびI/Oポート番号を、MMU402からセキュリティコンテキスト識別情報(SCID)値を受信する。実行ユニット400は、I/Oアドレス空間内の「対象の」I/OポートにアクセスするI/O命令を実行する前に、ENABLE信号をアサートし得る。I/Oポート番号は対象のI/Oポートの番号である。SCID値は、I/O命令を格納しているメモリページのセキュリティコンテキストレベルを示す。
図2のコンピュータシステム200がセキュア実行モード(SEM)で動作している場合、セキュリティカーネル304(図3)は、1つ以上のセキュリティ属性データ構造(テーブルなど)をメモリ206(図2)に生成し、保持する。各メモリページは、対応するセキュリティコンテキスト識別情報(SCID)値を有しており、この対応するセキュリティコンテキスト識別情報(SCID)値は、セキュリティ属性データ構造に記憶され得る。MMU402は、命令の実行中に生成されるアドレス(例えば物理アドレス)を使用して、1つ以上のセキュリティ属性データ構造にアクセスして、対応するメモリページのセキュリティコンテキスト識別情報(SCID)を取得する。一般に、コンピュータシステム200は、n個の別のセキュリティコンテキスト識別情報(SCID)値を有しており、nはn≧1の整数である。
また、図2のコンピュータシステム200がセキュア実行モード(SEM)で動作している場合、セキュリティカーネル304(図3)は、セキュア実行モード(SEM)I/O許可ビットマップもメモリ206(図2)に生成し、保持する。実行ユニット400(図4)がタスクのI/O命令を実行する場合、CPU202内のロジックは、最初にタスクの現在の特権レベル(CPL)とI/O特権レベル(IOPL)とを比較し得る。タスクの現在の特権レベル(CPL)が、I/O特権レベル(IOPL)と少なくとも同等である(すなわち現在の特権レベルの数値がIOPL以下である)場合、CPU202内のロジックはセキュア実行モード(SEM)I/O許可ビットマップを検査し得る。これに対し、タスクの現在の特権レベル(CPL)が、I/O特権レベル(IOPL)と同等ではない(すなわち現在の特権レベルの数値がIOPLを越える)場合、実行ユニット400はI/O命令を実行しない。一実施形態において、一般保護フォールトが発生する。
実行ユニット400(図4)がENABLE信号をアサートすると、セキュリティ検査ロジック500は、ENABLE信号、受け取ったセキュリティコンテキスト識別情報(SCID)値、および受け取ったI/Oポート番号をBIU406内のロジックに提供する。BIU406内のロジックは、セキュリティコンテキスト識別情報(SCID)値と受け取ったI/Oポート番号とを使用して、セキュア実行モード(SEM)I/O許可ビットマップにアクセスし、セキュア実行モード(SEM)I/O許可ビットマップにある対応するビットを、セキュリティ検査ロジック500に提供する。セキュア実行モード(SEM)I/O許可ビットマップの対応するビットが「0」にクリアされている場合、セキュリティ検査ロジック500は、出力「EXECUTE」信号をアサートし、これが実行ユニット400に提供され得る。EXECUTE信号がアサートされると、実行ユニット400はI/O命令を実行し得る。これに対し、対応するビットが「1」にセットされている場合、セキュリティ検査ロジック500は、出力「SEM SECURITY EXCEPTION(SEMセキュリティ例外)」信号をアサートし、これが実行ユニット400に提供される。SEM SECURITY EXCEPTION信号がアサートされると、実行ユニット400は、I/O命令を実行する代わりに、セキュア実行モード(SEM)例外ハンドラを実行し得る。
16ビットワードのI/Oポートまたは32ビットダブルワードのI/OポートにアクセスするI/O命令の場合、実行ユニット400は、複数バイトのI/Oポート番号をセキュリティ検査ロジック500に連続して提供し得る。セキュリティ検査ロジック500がI/Oポート番号のバイトの各々に対してEXECUTE信号をアサートすると、実行ユニット400はそのI/O命令を実行し得る。これに対し、セキュリティ検査ロジック500が、I/Oポート番号のバイトの1つ以上に対してSEM SECURITY EXCEPTIONをアサートすると、実行ユニット400はI/O命令を実行する代わりに、セキュア実行モード(SEM)例外ハンドラを実行し得る。
図6は、図6に600によって示すセキュア実行モード(SEM)I/O許可ビットマップの一実施形態と、セキュア実行モード(SEM)I/O許可ビットマップ600にアクセスするためのメカニズムの一実施形態とを示す図である。図6のメカニズムは、BIU406(図4)内のロジックに実装され得、コンピュータシステム200がセキュア実行モード(SEM)で実行している場合に該当し得る。図6において、セキュア実行モード(SEM)レジスタ410は、モデル固有レジスタ(MSR)602を有する。モデル固有レジスタ(MSR)602は、セキュア実行モード(SEM)I/O許可ビットマップ600の先頭(すなわちベース)アドレスを記憶するために使用される。上記したように、コンピュータシステム200は、n個の別のセキュリティコンテキスト識別情報(SCID)値を有しており、nはn≧1の整数である。セキュア実行モード(SEM)I/O許可ビットマップ600は、n個の別のセキュリティコンテキスト識別情報(SCID)値の各々に対応した、別個のI/O許可ビットマップを有する。別個のI/O許可ビットマップの各々は、64キロビットすなわち8キロバイトを有する。
図6の実施形態において、I/OポートにアクセスするI/O命令を格納しているメモリページのセキュリティコンテキスト識別情報(SCID)値が、セキュア実行モード(SEM)I/O許可ビットマップを構成している1つ以上の64キロビット(8キロバイト)のI/O許可ビットマップ600において、モデル固有レジスタ602の記憶内容(すなわちセキュア実行モードI/O許可ビットマップ600のベースアドレス)からのオフセットとして使用される。この結果、セキュリティコンテキスト識別情報(SCID)値に対応したI/O許可ビットマップがアクセスされる。次に、I/Oポート番号が、セキュリティコンテキスト識別情報(SCID)値に対応するI/O許可ビットマップのビットオフセットとして使用される。上記の方法でアクセスされたビットは、I/Oポート番号によって定義されるI/Oポートに対応するビットとなる。
図7は、図7に700によって示すセキュア実行モード(SEM)I/O許可ビットマップの別の実施形態と、セキュア実行モード(SEM)I/O許可ビットマップ700にアクセスするためのメカニズムの別の実施形態とを示す図である。図7のメカニズムは、BIU406(図4)にあるロジックに実装され得る。図7の実施形態において、セキュア実行モード(SEM)I/O許可ビットマップ700は、64キロビット(8キロバイト)I/O許可ビットマップを1つ有する。I/Oポート番号が、I/O許可ビットマップにおける、モデル固有レジスタ602の記憶内容(すなわちセキュア実行モードI/O許可ビットマップ600のベースアドレス)からのビットオフセットとして使用される。上記の方法でアクセスされたビットは、I/Oポート番号によって定義されるI/Oポートに対応するビットとなる。
図8は、図2のコンピュータシステム200のCPU202の別法による実施形態を示す図である。図8の実施形態において、上記したCPU202は、実行ユニット400、メモリ管理ユニット(MMU)402、キャッシュユニット404、バスインタフェースユニット(BIU)406、制御レジスタの組408、およびセキュアな実行モード(SEM)レジスタの組410を備える。これに加え、CPU202はマイクロコードエンジン800およびマイクロコード記憶装置802を備える。マイクロコードエンジン800は、実行ユニット400、MMU402、キャッシュユニット404、BIU406、制御レジスタの組408、およびセキュア実行モード(SEM)レジスタの組410に結合されている。マイクロコードエンジン800は、マイクロコード記憶装置802に記憶されているマイクロコード命令を実行して、マイクロコード命令、制御レジスタの組408の記憶内容、およびセキュア実行モード(SEM)レジスタの組410の記憶内容に応じて、実行ユニット400、MMU402、キャッシュユニット404、およびBIU406の動作を制御する信号を発生する。また、マイクロコードエンジン800は、x86命令セットのより複雑な命令を実行することによって、実行ユニット400を支援し得る。
図8の実施形態において、マイクロコード802に記憶されているマイクロコード命令の一部は、I/Oセキュリティ検査コード804を構成している。図2のコンピュータシステム200がセキュア実行モード(SEM)で動作している場合、I/Oセキュリティ検査コード804が実行されて、I/O命令が実行のために実行ユニット400に転送される。基本的に、I/Oセキュリティ検査コード804のマイクロコード命令は、上記したI/O SCU216(図2〜4)の機能をマイクロコードエンジン800およびBIU406に実行させる。
例えば、I/O命令が実行のために実行ユニット400に転送される際に、実行400は、マイクロコードエンジン800に対して、I/O命令の存在を知らせ得る。マイクロコードエンジンは、MMU402およびBIU406に信号をアサートし得る。MMU402は、マイクロコードエンジン800からの信号に応答して、I/O命令を格納しているメモリページのセキュリティコンテキスト識別情報(SCID)値をBIU406に提供し得る。実行ユニット400は、I/O命令によってアクセスされるI/Oポート番号をBIU406に提供し得る。
BIU406は、マイクロコードエンジン800からの信号に応答して、上記したように、セキュリティコンテキスト識別情報(SCID)値と受け取ったI/Oポート番号とを使用して、セキュア実行モード(SEM)I/O許可ビットマップにアクセスし、セキュア実行モード(SEM)I/O許可ビットマップにある対応するビットをマイクロコードエンジン800に提供し得る。セキュア実行モード(SEM)I/O許可ビットマップのビットが「0」にクリアされている場合、マイクロコードエンジン800は、実行ユニット400がI/O命令の実行を完了するのを支援し得る。これに対し、対応するビットが「1」にセットされている場合、マイクロコードエンジンは、実行ユニット400に信号を送ってI/O命令の実行を中止させ、セキュア実行モード(SEM)例外ハンドラの命令の実行を開始する。
ここで、図9を用いて、セキュリティコンテキスト識別情報(SCID)値を割り当て、対応する実行モード(SEM)I/O許可ビットマップを生成することによって、図2に示したコンピュータシステム200のデバイスドライバと、関連するデバイスハードウェアユニットとがセキュリティを目的として「コンパートメント化」される様子を示す。図9は、図2のコンピュータシステム200の各種ハードウェアコンポーネントおよびソフトウェアコンポーネントの間の関係を示す図であり、デバイスドライバ306Aと対応するデバイスハードウェアユニット214Aとは、第1のセキュリティ「コンパートメント」900に存在し、デバイスドライバ306Dと対応するデバイスハードウェアユニット214Dとは第2のセキュリティコンパートメント902に存在する。セキュリティコンパートメント900,902は、動作的に相互に隔離されている。デバイスドライバ306Aのみがデバイスハードウェアユニット214Aへのアクセスを許可され、デバイスドライバ306Dのみがデバイスハードウェアユニット214Dへのアクセスを許可されている。デバイスドライバと関連するデバイスハードウェアユニットとがこのように「コンパートメント化」されていることにより、悪意のあるコードや異常なコードが、デバイスハードウェアユニットの状態に悪影響を及ぼしたり、図2のコンピュータシステム200の正常な動作を妨害することが阻止される。
例えば、図9の実施形態において、デバイスドライバ306A,306Dの命令を含むメモリページに、異なるセキュリティコンテキスト識別情報(SCID)値が割り当てられ得る。デバイスドライバ306AのSCID値に対して生成された第1のセキュア実行モード(SEM)I/O許可ビットマップは、デバイスハードウェアユニット214Aに割り当てられているコンピュータシステム200のI/Oアドレス空間の第1部分にデバイスドライバ306Aがアクセスするのを許可し、デバイスハードウェアユニット214Dに割り当てられたI/Oアドレス空間の第2部分にデバイスドライバ306Aがアクセスするのを許可しないことがあり得る。同様に、デバイスドライバ306DのSCID値に対して生成された第2のセキュア実行モード(SEM)I/O許可ビットマップは、デバイスハードウェアユニット214Dに割り当てられたI/Oアドレス空間の第2部分にデバイスドライバ306Dがアクセスするのを許可し、デバイスハードウェアユニット214Aに割り当てられたI/Oアドレス空間の第1部分にデバイスドライバ306Aがアクセスするのを許可しないことがあり得る。この結果、デバイスドライバ306Aのみがデバイスハードウェアユニット214Aへのアクセスを許可され、デバイスドライバ306Dのみがデバイスハードウェアユニット214Dへのアクセスを許可される。
上記に開示した本発明の態様の一部は、ハードウェアに実装されても、ソフトウェアに実装されてもよい。このため、本明細書の詳細な説明には、ハードウェアによって実装される処理として記載されたものもあれば、演算システムまたは演算装置のメモリ内のデータビットの操作の記号的表記を含む、ソフトウェアによって実装される処理として記載されたものもある。このような記述および表現は、当業者が、ハードウェアおよびソフトウェアを用いた、自身の作業の内容を他の当業者に効率的に伝えるために用いられているものである。この処理および操作は、いずれも物理量の物理的な操作を必要とする。ソフトウェアにおいては、この物理量は通常、記憶、転送、結合、比較などの操作が可能な電気信号、磁気信号、または光学信号の形を取るが、必ずしもこれらに限定されない。主に公共の利用に供するという理由で、これらの信号を、ビット、値、要素、記号、文字、語(term)、数字などとして参照すれば、時として利便性が高いことが知られている。
しかし、上記の全用語ならびに類似の用語は、適切な物理量に関連付けられており、この物理量を表す簡便な標識に過ぎないという点を留意すべきである。特段の断りのない限り、もしくはそうではないことが自明ではない限り、本開示の全てにおいて、その記載内容は、電子装置の記憶領域内で物理(電子的、磁気的、または光学的な)量として表されるデータを、記憶装置、伝送装置または表示装置内で同様に物理量として表される他のデータへと操作および変換する電子装置の動作および処理を指す。このような内容を示す表現としては「処理」、「演算」、「計算」、「判定」、「表示」などがあるが、これらに限定されない。
ソフトウェアによって実装する本発明の態様は、典型的には、ある種のプログラム記憶媒体に符号化されているか、ある種の伝送媒体を介して実装されるという点に留意すべきである。プログラム記憶媒体は、磁気を利用したもの(例えば、フロッピードライブやハードドライブ)でも、光学を利用したもの(例えば、コンパクトディスクの読み取り専用記憶装置、すなわち「CD−ROM」)でもよく、読み取り専用であっても、ランダムアクセス可能なものであってもよい。同様に、伝送媒体は、より線対、同軸ケーブル、ファイバのほか、当業界に公知の伝送媒体であってもよい。本発明は、いずれの特定の実装の態様にも限定されない。
上記に記載した特定の実施形態は例に過ぎず、本発明は、本開示の教示から利益を得る当業者にとって自明の、同等の別法によって変更および実施されてもよい。さらに、ここに記載した構成または設計の詳細が、添付の特許請求の範囲以外によって制限を受けることはない。このため、上記に記載した特定の実施形態を変形または変更することが可能であり、この種の変形例の全てが本発明の範囲ならびに趣旨に含まれることが意図されることが明らかである。したがって、ここに保護を請求する対象は、添付の特許請求の範囲に記載したとおりである。
メモリに記憶されているx86アーキテクチャのタスク状態セグメント(TSS)と、x86アーキテクチャの対応するI/O許可ビットマップとを示す図である。 中央処理装置(CPU)、システムブリッジまたは「ホスト」ブリッジ、メモリ、第1デバイスバス(例えば、周辺機器相互接続(PCI)バス)、デバイスバスブリッジ、第2デバイスバス(例えば、業界標準アーキテクチャ(ISA)バス)、および4つのデバイスハードウェアユニットを備えたコンピュータシステムの一実施形態を示す図であり、CPUは、CPUによって生成される権限のないアクセスからデバイスハードウェアユニットを保護するための入出力(I/O)セキュリティチェックユニット(SCU)を備える。 図2のコンピュータシステムの各種ハードウェアコンポーネントおよびソフトウェアコンポーネントの間の関係を示す図である。 図2のコンピュータシステム200のCPUの一実施形態を示す図であり、CPUは、実行ユニット、メモリ管理ユニット(MMU)、および実行ユニットとMMUとに結合されたバスインタフェースユニット(BIU)を備え、BIUはI/O SCUを備える。 図4のI/O SCUの一実施形態を示す図である。 図2のメモリに記憶されているセキュア実行モード(SEM)I/O許可ビットマップの一実施形態と、SEM I/O許可ビットマップにアクセスするためのメカニズムの一実施形態とを示す図である。 図6のSEM I/O許可ビットマップの別の実施形態と、SEM I/O許可ビットマップにアクセスするためのメカニズムの別の実施形態とを示す図である。 図2のコンピュータシステムのCPUの別法による実施形態を示す図であり、CPUは、実行ユニット、MMU、実行ユニットとMMUとに結合されたバスインタフェースユニット(BIU)、および実行ユニットとMMUとBIUとに結合されたマイクロコードエンジンを備え、マイクロコードエンジンは、マイクロコード記憶装置に記憶されているマイクロコード命令を実行して、マイクロコード命令に応じて実行ユニット、MMU、およびBIUの動作を制御する信号を生成する。 図2のコンピュータシステムの各種ハードウェアコンポーネントおよびソフトウェアコンポーネントの間の関係を示す図であり、第1のデバイスドライバおよび対応する第1のデバイスハードウェアユニットは第1のセキュリティ「コンパートメント」に存在し、第2のデバイスドライバおよび対応する第2のデバイスハードウェアユニットは、第2のセキュリティコンパートメントに存在し、第1のセキュリティコンパートメントから動作的に分離されている。

Claims (10)

  1. メモリ(206)に結合するためのプロセッサ(202)であって、前記プロセッサ(202)は、
    I/O命令を実行するように構成された実行ユニット(400)と、
    前記メモリ(206)にデータを記憶するように構成されたメモリ管理ユニット(402)と、
    入出力(I/O)ポート番号と前記I/Oポート番号に対応する許可ビットとを受信し、前記許可ビットの値に応じて出力信号を生成するために結合されたバスインタフェースユニット(406)と、を備え、
    前記実行ユニット(400)は、前記出力信号を受信するために結合され、かつ前記出力信号に応じて前記I/O命令を実行するように構成されているプロセッサ。
  2. 前記I/Oポート番号は、I/O命令によって参照される入出力(I/O)ポートの番号を示し、前記バスインタフェースユニット(406)はセキュリティコンテキスト識別情報値を受信するために結合されており、前記セキュリティコンテキスト識別情報値は前記I/O命令を格納しているメモリ場所のセキュリティコンテキストレベルを示し、前記バスインタフェースユニット(406)は、前記セキュリティコンテキスト識別情報値と前記I/Oポート番号とを使用して前記メモリ(206)に記憶されている入出力(I/O)許可ビットマップ(600)にアクセスし、前記許可ビットを取得するように構成されている請求項1に記載のプロセッサ(202)。
  3. 前記バスインタフェースユニット(406)は前記実行ユニット(400)と前記メモリ管理ユニット(402)とに接続されており、前記I/Oポート番号は前記実行ユニット(400)から受信され、前記セキュリティコンテキスト識別情報は前記メモリ管理ユニット(402)から受信される請求項2に記載のプロセッサ(202)。
  4. 前記I/Oポート番号と前記セキュリティコンテキスト識別情報とはI/O命令の実行中に前記実行ユニット(400)によって受信される請求項2に記載のプロセッサ(202)。
  5. 前記I/O許可ビットマップ(600)は複数の許可ビットを有し、前記許可ビットの各々は、複数のI/Oポートのうちの異なる1つに対応しており、前記許可ビットの各々は、対応するI/Oポートへのアクセスが許可されるかどうかを示す値を有する請求項2に記載のプロセッサ(202)。
  6. 前記I/O許可ビットマップ(600)のベースアドレスを記憶するように構成されたモデル固有レジスタ(602)をさらに備え、前記バスインタフェースユニット(406)は、前記I/O許可ビットマップ(600)にアクセスして、前記I/Oポート番号を、前記I/O許可ビットマップ(600)における、前記モデル固有レジスタ(602)の記憶内容からのビットオフセットとして使用することによって前記I/Oポート番号に対応する前記許可ビットを取得する請求項2に記載のプロセッサ(202)。
  7. 前記I/O許可ビットマップ(600)はプライマリI/O許可ビットマップ(600)であり、前記プライマリI/O許可ビットマップ(600)は複数のセカンダリI/O許可ビットマップを有し、前記セカンダリI/O許可ビットマップの各々は複数の許可ビットを含み、前記セカンダリI/O許可ビットマップのうちの所定の1つの許可ビットの各々は、複数のI/Oポートのうちの異なる1つに対応しており、前記許可ビットの各々は、対応するI/Oポートへのアクセスが許可されるかどうかを示す値を有し、前記セカンダリI/O許可ビットマップの各々は、複数のセキュリティコンテキスト識別情報値のうちの異なる1つに対応している請求項2に記載のプロセッサ(202)。
  8. 前記実行ユニット(400)、前記メモリ管理ユニット(402)、および前記バスインタフェースユニット(406)に結合され、かつマイクロコード記憶装置(802)に記憶されているマイクロコード命令を実行するように構成されたマイクロコードエンジン(800)をさらに備え、前記マイクロコードエンジン(800)は前記マイクロコード命令のうちの少なくとも1つの実行中に制御信号を発生し、前記マイクロコード命令の一部は、前記マイクロコードエンジン(800)に制御信号を発生させ、その結果前記バスインタフェースユニット(406)は、
    I/O命令によって参照される入出力(I/O)ポートの番号を示す前記入出力(I/O)ポート番号と、前記I/O命令を格納しているメモリ場所のセキュリティコンテキストレベルを示すセキュリティコンテキスト識別情報値とを受信して、
    前記セキュリティコンテキスト識別情報値と前記I/Oポート番号とを使用して前記メモリ(206)に記憶されている入出力(I/O)許可ビットマップ(600)にアクセスして、前記I/Oポートに対応する前記許可ビットを取得し、前記許可ビットの値に応じて出力信号を発生し、
    前記実行ユニット(400)は前記出力信号を受信するために結合され、かつ前記出力信号に応じて前記I/O命令を実行するように構成されている請求項1に記載のプロセッサ(202)。
  9. 入出力(I/O)命令を選択的に実行するための方法であって、
    入出力(I/O)許可ビットマップ(600)をメモリ(206)に作成するステップと、前記I/O許可ビットマップ(600)は複数の許可ビットを有し、前記許可ビットの各々は、複数のI/Oポートのうちの異なる1つに対応しており、前記許可ビットの各々は、対応するI/Oポートへのアクセスが許可されるかどうかを示す値を有し、
    前記I/O命令によって参照されるI/Oポートを示すI/Oポート番号と、前記I/O命令を格納しているメモリ場所のセキュリティコンテキストレベルを示すセキュリティコンテキスト識別情報値とを受信するステップと、
    前記セキュリティコンテキスト識別情報値と前記I/Oポート番号とを使用して、記憶されている前記I/O許可ビットマップ(600)にアクセスして、前記I/Oポートに対応する許可ビットを取得するステップと、
    前記I/Oポートに対応する前記許可ビットの値に応じて前記I/O命令を実行するステップと、を有する方法。
  10. I/Oポート番号とセキュリティコンテキスト識別情報値とを受信するステップは、前記I/O命令の実行中に前記I/Oポート番号と前記セキュリティコンテキスト識別情報値とを受信するステップをさらに有し、前記I/Oポートに対応する前記許可ビットの値に応じて前記I/O命令を実行するステップは、前記I/Oポートに対応する許可ビットの前記値が、前記I/Oポートへのアクセスが許されることを示す場合に、前記I/O命令を実行するステップをさらに有する請求項9に記載の方法。
JP2003581027A 2002-03-27 2002-12-17 コンパートメント化されたセキュリティのための入出力許可ビットマップ Expired - Fee Related JP4391832B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/107,784 US7493498B1 (en) 2002-03-27 2002-03-27 Input/output permission bitmaps for compartmentalized security
PCT/US2002/040396 WO2003083671A1 (en) 2002-03-27 2002-12-17 Input/output permission bitmaps for compartmentalized security

Publications (2)

Publication Number Publication Date
JP2005521941A true JP2005521941A (ja) 2005-07-21
JP4391832B2 JP4391832B2 (ja) 2009-12-24

Family

ID=28673583

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003581027A Expired - Fee Related JP4391832B2 (ja) 2002-03-27 2002-12-17 コンパートメント化されたセキュリティのための入出力許可ビットマップ

Country Status (8)

Country Link
US (1) US7493498B1 (ja)
JP (1) JP4391832B2 (ja)
KR (1) KR101001344B1 (ja)
CN (1) CN1320466C (ja)
AU (1) AU2002361757A1 (ja)
DE (1) DE10297687B4 (ja)
GB (1) GB2404058B (ja)
WO (1) WO2003083671A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022344A (ja) * 2013-07-16 2015-02-02 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
CA2551045C (en) * 2005-06-30 2008-04-22 Hitachi, Ltd. Input-output control apparatus, input-output control method, process control apparatus and process control method
JPWO2007040228A1 (ja) * 2005-10-04 2009-04-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム
KR101540798B1 (ko) * 2008-11-21 2015-07-31 삼성전자 주식회사 가상화 환경에서 보안 정보를 제공하기 위한 장치 및 방법
CN102375947A (zh) * 2010-08-16 2012-03-14 伊姆西公司 用于隔离计算环境的方法和系统
CN103632088A (zh) 2012-08-28 2014-03-12 阿里巴巴集团控股有限公司 一种木马检测方法及装置
US9043632B2 (en) 2012-09-25 2015-05-26 Apple Inc. Security enclave processor power control
US8775757B2 (en) 2012-09-25 2014-07-08 Apple Inc. Trust zone support in system on a chip having security enclave processor
US9047471B2 (en) 2012-09-25 2015-06-02 Apple Inc. Security enclave processor boot control
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
US8832465B2 (en) * 2012-09-25 2014-09-09 Apple Inc. Security enclave processor for a system on a chip
US9547778B1 (en) 2014-09-26 2017-01-17 Apple Inc. Secure public key acceleration
CN106326130B (zh) * 2015-06-16 2019-03-15 辰芯科技有限公司 寄存器地址空间的控制方法、控制器及片上系统
US10261748B2 (en) * 2015-12-18 2019-04-16 Intel Corporation Technologies for protecting audio data with trusted I/O
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
WO2022171299A1 (en) * 2021-02-12 2022-08-18 Huawei Technologies Co., Ltd. Low overhead active mitigation of security vulnerabilities by memory tagging

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146565A (en) * 1986-07-18 1992-09-08 Intel Corporation I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
US5596739A (en) * 1994-02-08 1997-01-21 Meridian Semiconductor, Inc. Method and apparatus for detecting memory segment violations in a microprocessor-based system
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
JPH10232878A (ja) * 1997-02-19 1998-09-02 Hitachi Ltd ドキュメント管理方法および装置
JP4522548B2 (ja) * 2000-03-10 2010-08-11 富士通フロンテック株式会社 アクセス監視装置及びアクセス監視方法
US6978018B2 (en) * 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022344A (ja) * 2013-07-16 2015-02-02 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法

Also Published As

Publication number Publication date
AU2002361757A1 (en) 2003-10-13
US7493498B1 (en) 2009-02-17
CN1623143A (zh) 2005-06-01
GB0423536D0 (en) 2004-11-24
DE10297687T5 (de) 2005-07-07
KR20040101332A (ko) 2004-12-02
GB2404058B (en) 2005-11-02
CN1320466C (zh) 2007-06-06
WO2003083671A1 (en) 2003-10-09
GB2404058A (en) 2005-01-19
DE10297687B4 (de) 2008-11-13
KR101001344B1 (ko) 2010-12-14
JP4391832B2 (ja) 2009-12-24

Similar Documents

Publication Publication Date Title
JP4391832B2 (ja) コンパートメント化されたセキュリティのための入出力許可ビットマップ
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US6823433B1 (en) Memory management system and method for providing physical address based memory access security
US6854039B1 (en) Memory management system and method providing increased memory access security
KR101455011B1 (ko) 메시지 시그널 인터럽션을 i/o 어댑터 이벤트 통지로 변환
JP4295111B2 (ja) メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法
US7149854B2 (en) External locking mechanism for personal computer memory locations
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
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
US4581702A (en) Critical system protection
JP4564756B2 (ja) セキュア実行モードで動作し得るプロセッサを含むコンピュータシステムの初期化方法
KR101514872B1 (ko) 컴퓨팅 환경의 인에이블/디스에이블 어댑터들
US7130977B1 (en) Controlling access to a control register of a microprocessor
AMD et al. Technology (IOMMU) specification
JP3982687B2 (ja) 分離実行環境での複数の分離メモリへのアクセスの制御
US7451324B2 (en) Secure execution mode exceptions
JP2005512228A (ja) 強化されたメモリアクセスセキュリティを提供する、メモリに対するデバイスのアクセスを制御するシステムおよび方法
KR100972635B1 (ko) 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법
JP2023094536A (ja) 信頼ドメインのための入/出力拡張を実装するための回路および方法
WO2018235858A1 (ja) 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090826

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

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

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

Free format text: PAYMENT UNTIL: 20121016

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees