JP3830942B2 - セキュリティ上注意を要する命令(セキュリティ・センシティブ・インストラクション)の実行を制限する方法及び装置 - Google Patents

セキュリティ上注意を要する命令(セキュリティ・センシティブ・インストラクション)の実行を制限する方法及び装置 Download PDF

Info

Publication number
JP3830942B2
JP3830942B2 JP2003550034A JP2003550034A JP3830942B2 JP 3830942 B2 JP3830942 B2 JP 3830942B2 JP 2003550034 A JP2003550034 A JP 2003550034A JP 2003550034 A JP2003550034 A JP 2003550034A JP 3830942 B2 JP3830942 B2 JP 3830942B2
Authority
JP
Japan
Prior art keywords
security
processor
instructions
instruction
executed
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
JP2003550034A
Other languages
English (en)
Other versions
JP2005512182A (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 JP2005512182A publication Critical patent/JP2005512182A/ja
Application granted granted Critical
Publication of JP3830942B2 publication Critical patent/JP3830942B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

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

Description

本発明は、概略、コンピュータに関し、特に、コンピュータシステムにおいてセキュアな動作を確保するための方法及び装置に関する。
パーソナルコンピュータのような汎用コンピュータシステムは、シングルタスクを実行するものから、複数のタスクを同時に実行するものへと進歩してきた。マルチタスクを行うシステムは、セキュリティ及び保護サービスに対して、ユーザプロセスからオペレーティングシステムを保護すること及び複数のプロセスをお互いから保護することを要求している。保護なしでは、例えば、悪劣(rogue)プログラムが、オペレーティングシステムや他のプロセス用に確保されたメモリ空間内にあるプログラムコードやデータを予想を超えて破壊してしまう可能性があるからである。
x86マイクロプロセッサ環境においては、典型的には、特権レベルを可変とすることにより悪劣プログラムの可能性を減ずるように、セキュリティ機能が実装されている。異なるタイプのソフトウェアがこれらの可変特権レベルにおいて実行され、その結果、コンピュータシステムのリソースに対して可変アクセスを有している。図1に示されるように、コンピュータのオペレーティングシステムは、最高位の特権レベル(即ち、レベル0)にて動作しており、このレベル0にて動作することにより、オペレーティングシステムは仮想的にコンピュータシステムにおける如何なるシステムリソースにも殆ど自由にアクセスすることを許可されている。ソフトウェアドライバもまた、最高位特権レベルにて動作することを許されている。一方、アプリケーションプログラムは、典型的には、最下位の特権レベル(即ち、レベル3)にて動作し、システムリソースに対するアクセスは大抵許可されるが、オペレーティングシステムによる許可がある場合に限られている。従って、少なくとも理論上は、オペレーティングシステムは、任意のアプリケーションプログラムが他のアプリケーションプログラムに割り当てられたシステムリソースをアクセスすることを防ぐ。例えば、オペレーティングシステムは物理メモリ内の空間をアプリケーションプログラムに割り当て、それにより、アプリケーションプログラムは割り当てられた空間内のみにおいて殆ど自由にリード・ライトすることができる。つまり、オペレーティングシステムは、通常、任意のアプリケーションプログラムが他のアプリケーションプログラムに割り当てられた物理メモリの一部の内容を書き換えてしまうことを防止する。
しかしながら、オペレーティングシステムやドライバに到達するようなセキュリティ上の欠陥やバグが生じることは避けられない。悪劣なプログラムやドライバはこれらのセキュリティ上の欠陥やバグを偶然に又は意図的に用いて、それら悪劣なプログラムやドライバからのアクセスが排除されるべきであったメモリの部分に対するアクセスを得る。保護されていたメモリであってもプログラムやドライバが一旦アクセスしてしまえば、そのプログラムやドライバがターゲットとされたソフトウェア(それらに関連する周辺機器を含む)の動作を妨害し、又は、奪い取ってしまうことさえも可能となる。例えば、データプロセッサにおけるモデムの動作は、当該モデムに本来関連付けられていたアプリケーションプログラム又はドライバのメモリ空間に対するアクセスを得る悪劣プログラムによって無茶苦茶にされてしまうにちがいない。その悪劣プログラムは、その後、モデムに対して、電話網上で権限もなく望ましくもないコールを行わせるか、又は、当該電話網上における適切な動作を邪魔するように命じるに違いない。
マイクロソフトのウィンドウズ(登録商標)オペレーティングシステムの最新バージョンであるウィンドウズ(登録商標)2000は、現在、そのカーネルとそれに関連するカーネルモードのドライバに包含された100万行以上のコードを有している。このため、100万行以上のコードがシステムリソースに対して殆ど自由にアクセスすることができる。従って、オペレーティングシステムの純然たる規模に起因して、更なる欠陥やバグが見つかってしまうことは避けられないだろう。このため、悪劣プログラムが、未だ発見されていないセキュリティ上の欠陥やバグを非常にうまい具合に見つけ出し、悪劣プログラムからのアクセスを保護されていたメモリの部分に対するアクセスを偶然に又は意図的に得てしまうかもしれない。
本発明は、上述した問題のうちの一以上を克服し、又は、少なくとも、その問題による影響を減ずることを目的とする。
本発明の一の側面において、ある方法が提供される。その方法は第1のセキュリティ識別子(ID)をプロセッサにより実行される予定の複数の命令の夫々又は一組の命令と関連付けることを含む。プロセッサ上で稼働中のソフトウェアコードにより複数の命令のうちの少なくとも一つ又は一組の命令を実行することについての要求がなされる。プロセッサ上で稼働中のソフトウェアコードに関連付けられた第2のセキュリティIDが取得される。第2のセキュリティIDと第1のセキュリティIDとが比較される。第2のセキュリティIDが第1のセキュリティIDと一致した場合に、要求された命令又は一組の命令が実行される。
本発明の他の側面においては、ある装置が提供される。その装置はプロセッサを備えている。プロセッサは、その上でコードを走らせるためのものであり、且つ、プロセッサにより実行される予定の複数の命令の夫々又は一組の命令を第1のセキュリティ識別子(ID)と関連付けるためのものである。プロセッサは、当該プロセッサ上で稼働中のコードにより複数の命令のうちの少なくとも一つ又は一組の命令を実行することについての要求を受けて、当該コードに関連付けられた第2のセキュリティIDを取得し、第2のセキュリティIDを第1のセキュリティIDと比較して、第2のセキュリティIDが第1のセキュリティIDと一致した場合に、要求された命令又は一組の命令を実行する。
本発明の他の側面においては、ある物品が提供される。その物品は、特定の命令を含む一以上の機械可読なストレージメディアを備えている。特定の命令が実行されると、プロセッサは、プロセッサにより実行される予定の複数の命令の夫々又は一組の命令と第1のセキュリティ識別子(ID)とを関連付けることができ、そして、当該特定の命令は、プロセッサ上で稼働中のソフトウェアコードによってその複数の命令の少なくとも一つ又は一組の命令を実行することについて要求する。
本発明は、以下の説明及びそれに関連する付属図面を参照することにより、理解されるであろう。ここで、各図面において、参照符号の最も左側の桁は、当該参照符号が最初に用いられた図面を示している。
本発明については、様々な変形及び置換が可能であるが、特定の実施例が図に例示され且つここに詳細に説明される。しかしながら、ここにおける特定の実施例に関する記述は開示した特定の形態に本発明を限定することを意図したものではなく、逆に、付属のクレームに定義されたような発明の精神及び技術的範囲内に属する変形例、均等物及び置換のすべてをカバーすることが意図される。
本発明の実施例について以下に説明する。分かり易くするために、本明細書においては、実際に実施されるもののすべての特徴は説明しない。勿論、そういった現実的な実施例の開発においては、システム関連又はビジネス関連の制約の遵守のような、その開発特有の目的であって、実施例間において互いに異なることを達成するために、個々の実施に特有な決定が多数なされるはずであると思われる。また、かかる開発努力は複雑で時間を要するものであるがそれにも拘らず本件開示による利益を受ける分野における当業者にとっては日常的な業務であると思われる。
ここで図面に戻り、特に、図2を参照すると、本発明の一実施例によるセキュリティ上注意を要する命令の実行を制限するためのコンピュータシステム200に関する簡略化されたブロック図が示されている。図示された実施例において、最も簡略化された形態の一つとして示されているコンピュータシステム200は、プロセッサユニット205、少なくとも一つの入力デバイス210及び少なくとも一つの出力デバイス215を備えている。入力デバイス210は、例えば、キーボード、マウス、タッチパッド、タッチスクリーンなどを含んでいても良い。出力デバイス215は、モニタ、プリンタ及び/又は、プロセッサユニット205により処理された情報をシステム200のユーザに伝えるためのその他のデバイスを含んでいても良い。
図示された実施例によれば、プロセッサユニット205は、セキュリティアクセス技術を採用しており、その技術は、システム200がある種のセキュリティ上注意を要する命令をプロセッサユニット205で実行することを制限する。セキュリティ上注意を要する命令は、プロセッサユニット205上で稼働中のある種のコードにより実行されることについて制限を設けたいような命令又は一組の命令を含んでいても良い。
入力デバイス210を介してシステム200のユーザから入力がなされると、プロセッサユニット205内における一以上のソフトウェア構造又はソフトウェアコードの実行が開始されても良い。プロセッサユニット205内部にあるメモリはその後アクセスされて、所望とするタスクを実現するための様々なソフトウェア構造又はソフトウェアコードが実行される。プロセッサユニット205によって採用されたセキュリティアクセス技術は、プロセッサ内部にプログラムされた所定のセキュリティエントリに基づいてプロセッサ205により実行される予定のいくつかのセキュリティ上注意を要する命令の実行を制限しても良く、従って、ある計算タスクがプロセッサユニット205によって実行されるのを禁止する。
次いで、図3を参照すると、システム200におけるプロセッサユニット205のより詳細な図が示されている。本発明の一実施例によれば、プロセッサユニット205は、プロセッサ305を備えている。プロセッサ305は、図示された実施例においては、マイクロプロセッサの形態をとっている。しかしながら、本発明の精神及び技術的範囲から逸脱しないのであれば、プロセッサ305がその他の様々なプロセッサタイプの形態をとっても良いし、複数のプロセッサを含んでいても良いことは理解されるであろう。プロセッサユニット205は、システムメモリコントローラ310及びメモリモジュール315を更に含んでいる。図示された実施例によれば、メモリモジュール315は、物理メモリ350を含んでいる。この物理メモリ350は、シンクロナス・ダイナミック・ランダム・アクセス・メモリ(SDRAM)又はダブルレート・ダイナミック・ランダム・アクセス・メモリ(DDRAM)の形態をとっても良い。しかしながら、物理メモリ350が様々な他のメモリタイプの形態をとっても良く、従って、上述した例に限定される必要はないことは理解されるであろう。
プロセッサ305は、システムバス330を通じて、システムメモリコントローラ310を介してメモリモジュール315と通信する。一実施例によれば、システムメモリコントローラ310はメモリアドレス及び論理信号をメモリモジュール315に提供し、プロセッサ305による所望とされたメモリトランザクションの特徴づけをする。
周辺機器345との通信用に用いられているプライマリバス335もまた、ホストブリッジ340を通じてホストバス330に接続されている。一実施例において、プライマリバス335は、PCI(Peripheral Component Interconnect)バス(PCI Specification,Rev.2.1参照)の形態をとっている。本発明の精神及び技術的範囲から逸脱しない限り、プロセッサユニット205がセカンダリPCIバス(図示せず)のような他のバスや様々な他の周辺機器(図示せず)を含んでいても良いことは理解されるであろう。
一実施例において、プロセッサ305は、実行可能な命令に基づいて、複数のコンピュータ処理操作を行う。プロセッサ上で稼働中のソフトウェアコードにより特定の命令を実行するといった要求を受けて、プロセッサ305は、メモリアクセスプロシジャを行い、そのコードにより要求された適切な遂行を行う。プロセッサ305は、システムメモリコントローラ310を介して、メモリアクセスを行う。システムメモリコントローラ310は、メモリモジュール315における物理メモリ350に対するアクセスを提供し、特定の命令が実行される間に所望とするタスクを実現する。
ここで、図4を参照すると、本発明の一実施例によるシステムメモリコントローラ310のより詳細な図が示されている。システムメモリコントローラ310は、仮想メモリアクセステーブル405と仮想メモリ410とを備えている。プロセッサ305は仮想メモリアクセステーブル405を用いて仮想(又は線形)メモリアドレスを得る。この仮想メモリアドレスは、仮想メモリ410内における特定の位置を示す。一旦、特定の仮想メモリアドレスが決定されると、仮想メモリ410がアクセスされ、仮想メモリアクセステーブル405から得られた仮想メモリアドレスに対応する物理メモリアドレスが決定される。仮想メモリ410から得られた物理メモリアドレスは、物理メモリ350内部における特定のメモリ位置に対するポインタである。物理メモリ350は、プロセッサ305上で現在稼働中のソフトウェアコードによって所望される命令が行われるために必要となるメモリ空間を提供する。(上述したように)仮想メモリアドレスを得るためのプロセスは最も過度に単純化された形態にて説明されていること、及び、仮想メモリアドレスを得るために仮想メモリアクセステーブル405に加えて他の様々なテーブルがアクセスされても良いことは理解されるだろう。仮想メモリアドレスを得るためのこれら特定のプロシジャは、当業者に知られている。従って、本発明を不必要に不明瞭とすることを避けるべく、それらのプロシジャに関する詳細はここでは提供しない。
一実施例によれば、セキュリティ識別子(ID)は特定のセキュリティ上注意を要する命令又は一組の命令であってプロセッサ305により実行可能なものに関連付けられても良い。一実施例において、セキュリティIDは固定値であっても良く、それに代えて、プロセッサ305内にあっても良いプログラマブル・レジスタ(図示せず)内に格納されても良い。図示された実施例によれば、セキュリティ上注意を要する命令は仮想メモリのベースを規定するCR3への移動、プロセッサ305の動作モードを規定するCR0への移動、及び/又は、プロセッサ305の様々なサブモードを規定するCR4への移動を含んでいても良い。更に、様々な実行可能な命令用のセキュリティIDを規定するプログラマブル・レジスタを書換設定するようないかなる命令を、セキュリティ上注意を要するものとしても良い。上述の例のリストが限定列挙したものとは限らないということは理解されるであろう。故に、プロセッサ305により実行される様々な他のタイプの命令はセキュリティ上注意を要するものと考えられても良く、従って、上記の例に限定される必要はない。
現時点でプロセッサ305により実行されているソフトウェアコード(例えば、ドライバ、サービス、カーネルルーチン、アプリケーションコードなど)に関連付けられたセキュリティIDは、セキュリティ上注意を要する命令又は一組の命令であって当該コードが実行したいものに対応する仮想メモリテーブル405上のアドレスを参照することにより、得られる。プロセッサ305上で現在実行されているコードにより特定のセキュリティ上注意を要する命令が要求されると、仮想メモリアクセステーブル405のアドレスを参照することにより得られた現在実行中のコードのセキュリティIDが、プロセッサ305によって、特定のセキュリティ上注意を要する命令又は一組の命令であって当該コードが実行したいものに関するセキュリティIDと比較される。上述したように、セキュリティ上注意を要する命令のセキュリティIDは固定値であってもよく、プログラマブル・レジスタに格納された変更可能なものであってもよい。セキュリティIDが一致した場合、プロセッサ305は、当該プロセッサ上で稼働中のソフトウェアコードにより要求されたように、セキュリティ上注意を要する命令又は一組の命令を実行する。一方、現在実行中のコードのセキュリティIDと所望とするセキュリティ上注意を要する命令のセキュリティIDとが一致しない場合、プロセッサ305は、セキュリティ上注意を要する命令又は一組の命令をプロセッサ305上で稼働中のソフトウェアコードによって要求されたように実行することを拒む。
ここで、図5を参照すると、一実施例によるプロセス500であって、プロセッサ305上で稼働中のコードによりセキュリティ上注意を要する命令が実行されることを制限するためのプロセス500が示されている。プロセス500はブロック505から開始する。ブロック505においては、命令又は一組の(即ち、一群の)命令がセキュリティ上注意を要するものとして分類され、かかる命令の夫々又は一組の命令は、プロセッサ305において、一つのセキュリティIDに関連付けられる。一実施例によれば、セキュリティIDは、セキュリティ上注意を要する命令に関連付けられた一定値であっても良い(即ち、セキュリティ上注意を要する命令が固定のセキュリティIDを持っていても良い)。代替実施例において、セキュリティ上注意を要する命令のセキュリティIDはプロセッサ305におけるプログラマブル・レジスタ(図示せず)内に格納されても良い。ここで、プログラマブル・レジスタは、プロセッサ上で稼働中のオペレーティングシステムにより書換可能なものとしてもよい。本発明の精神及び技術的範囲を逸脱することのない限り、セキュリティ上注意を要する命令とセキュリティIDを関連付けるための他の方法が、上述した例に加えて、行われても良いことは理解されるであろう。
ブロック510において、プロセッサ305は、当該プロセッサ上で現在稼働中のソフトウェアコードがセキュリティ上注意を要すると分類された命令を実行しようとしているか否かを判断する。一実施例において、プロセッサ305は、プロセッサ305におけるプログラマブル・レジスタを参照することにより、要求された命令がセキュリティ上注意を要するものかどうかを、例えば、セキュリティIDがそれに関連しているかどうかを理解するために、判断しても良い。ブロック510において、プロセッサ305上で現在稼働中のソフトウェアコードがセキュリティ上注意を要する命令を実行しようとするものでない場合(即ち、要求された命令に関連付けられたセキュリティIDがなかった場合)、プロセッサ305は、ブロック515において、セキュリティ・プロシジャを呼び出すことなく、当該命令を実行する(即ち、当該命令はプロセッサ305により通常の手法で実行される)。しかしながら、プロセッサ305上で現在稼働中のソフトウェアコードがブロック510においてセキュリティ上注意を要する命令を実行しようとしていた場合には、セキュリティ・プロシジャがブロック520においてプロセッサ305により呼び出され、プロセッサ305上で稼働中のコードがセキュリティ上注意を要する命令を実行する権限を有するかどうかについて判断がなされる。
プロセス500は、次いで、ブロック525に進む。ここでは、プロセッサ305上で稼働中のソフトウェアコードのセキュリティIDが、当該コードが実行しようとしているセキュリティ上注意を要する命令に対応する仮想メモリテーブル405のアドレスを参照することにより、取得される。プロセッサ上で稼働中のソフトウェアコードに関連付けられたセキュリティIDを取得した後、プロセッサ305は、ブロック530において、該コードが実行しようとしているセキュリティ上注意を要する命令についてのセキュリティIDを取得する。一実施例において、セキュリティ上注意を要する命令についてのセキュリティIDはプログラマブル・レジスタ(図示せず)から得ることとしても良い。
仮想メモリテーブル405から特定の命令に関連付けられたセキュリティIDを得ると、プロセッサ305は、ブロック535において、プロセッサ305上で稼働中のコードに関連付けられたセキュリティIDと特定の命令に関連付けられたセキュリティIDとを比較する。ブロック540において、プロセッサ305は、プロセッサ上で稼働中のコードに関連付けられたセキュリティIDと、当該コードが実行しようとしている特定の命令に関連付けられたセキュリティIDと一致するかどうか判断する。
プロセッサ上で稼働中のコードに関連付けられたセキュリティIDと特定の命令に関連付けられたセキュリティIDとが一致しない場合、プロセッサ305は、ブロック545において、プロセッサ上で稼働中のソフトウェアコードによりセキュリティ上注意を要する命令が実行されることを拒む。プロセッサ上で稼働中のコードに関連付けられたセキュリティIDとセキュリティ上注意を要する命令に関連付けられたセキュリティIDとが一致した場合、プロセッサ305はブロック550において、そのセキュリティ上注意を要する命令を実行する。一実施例によれば、セキュリティIDが一致した場合、プロセッサ305により実行される予定のソフトウェアコードに対応する仮想メモリアドレスが仮想メモリアドレステーブル405から取得され、その仮想メモリアドレスを用いて仮想メモリ410から物理アドレスが取得され、物理メモリ350内部のメモリ空間がプロセッサ305からアクセス可能となり、所望とされる命令であってセキュリティ上注意を要するものが実行される。
一実施例によれば、プロセッサ305によりセキュリティ上注意を要する命令が実行されるためには、セキュリティIDが互いに完全に一致することが必要とされる。しかしながら、それに代えて、セキュリティIDが複数のフィールドに分解され、結果として、マルチレイヤーのセキュリティ技術を提供することとしても良い。従って、ソフトウェアコード及びセキュリティ上注意を要する命令はすべて固有のセキュリティIDを有するのではあるが、セキュリティID内部における共通のフィールド又はコンポーネントが、所望とする命令であってセキュリティ上注意を要するものの実行を許可するだろう。このように、セキュリティIDは、クラス、ファミリ、又は、他のグループ情報であって、それらの一部が一致したことにより、特定クラスのコードが特定の命令又は一組の命令を実行可能となるようなものを確立し示唆するように設定されていても良い。
例えば、一実施例において、セキュリティIDはクラスとサブクラスフィールドを備えていても良いし、セキュリティID間のクラスフィールドが一致した場合に、セキュリティID間の比較用としてはセキュリティID間のサブクラスを無視しても良い。従って、この特定の実施例において、セキュリティ上注意を要する命令のプロセッサ305による実行は、セキュリティIDのうち少なくともクラスフィールドが一致した場合に、許可されることとしても良い。他の実施例において、セキュリティID間(若しくは、例えば、クラスフィールドのようなセキュリティIDの一部)の比較は必ずしも正確な算術上の一致でなくとも良い。例えば、プロセッサ305上で稼働中のコードに関連付けられたセキュリティIDのクラスフィールドがセキュリティ上注意を要する命令に関連付けられたセキュリティIDのクラスコード以上である(又は、それに代えて、以下である)場合、セキュリティ上注意を要する命令の実行が許可されても良い。しかしながら、セキュリティIDに関する特定のフォーマットは必ずしも上述した例に限定される必要はない。
以上開示された特定の実施例は単なる例であり、本発明は異なるが等価な手法であってここに教授したことの利益を受ける分野における当業者にとって明らかな手法に従って変更され実施されても良い。更に、以下のクレームに記されたこと以外、ここに示された構成又は設計の詳細に制限はない。それゆえ、以上開示された特定の実施例は置き換えられ又は変更されても良いことは明らかであり、かかる変形のすべては本発明の精神及び技術的範囲内に属するものと考えられる。従って、ここに求める保護は、以下のクレームに規定されるようなものである。
図1は、コンピュータシステムに実装された従来のセキュリティ技術の一実施例を概略的に示す。 図2は、本発明の一実施例によるセキュリティアクセス技術を採用したプロセッサユニットを含むコンピュータシステムの簡略化されたブロック図である。 図3は、図2に示されるプロセッサユニットのより詳細な図である。 図4は、図3に示されるシステムメモリコントローラのより詳細な図である。 図5Aは、本発明の一実施例により、セキュリティ上注意を要する命令の実行を制限するための方法を示す図である。 図5Bは、本発明の一実施例により、セキュリティ上注意を要する命令の実行を制限するための方法を示す図である。

Claims (10)

  1. 第1のセキュリティ識別子(ID)を、プロセッサ(305)により実行される予定の複数の命令の夫々又は一組の命令と関連付けるステップ;
    前記プロセッサ(305)上で稼働中のソフトウェアコードにより前記複数の命令の少なくとも一つ又は一組の命令を実行することについて要求するステップ;
    前記プロセッサ(305)上で稼働する前記ソフトウェアコードに関連付けられた第2のセキュリティIDを仮想メモリテーブル(405)から取得するステップ;
    該第2のセキュリティIDを前記第1のセキュリティIDと比較するステップ;及び
    前記第2のセキュリティIDが前記第1のセキュリティIDと一致した場合に、前記要求された命令又は一組の命令を実行するステップ;
    を備える方法。
  2. 前記第1及び第2のセキュリティIDが一致しなかった場合に、前記要求された命令又は一組の命令の前記実行を拒むステップ
    を更に備える請求項1の方法。
  3. 第1のセキュリティ識別子(ID)を関連付けるステップは、プロセッサ(305)により実行される予定の複数の命令の夫々または一組の命令と共に第1のセキュリティ識別子(ID)を格納するステップを更に備える、請求項1又は2の方法。
  4. 第1のセキュリティ識別子(ID)を関連付けるステップは:
    プロセッサ(305)により実行される予定の複数の命令のうち、少なくとも一つの命令又は一組の命令を、セキュリティ上注意を有する命令であると分類するステップ;及び
    セキュリティ上注意を要すると分類された命令の夫々又は一組の命令と第1のセキュリティ識別子(ID)を関連付けるステップ;
    を更に備える、請求項1、2又は3の方法。
  5. 前記プロセッサ(305)上で稼働する前記ソフトウェアコードに関連付けられた第2のセキュリティIDを取得するステップは:
    前記要求された命令がセキュリティ上注意を要する命令であると分類されているか否かを判断するステップ;及び
    前記要求された命令がセキュリティ上注意を要する命令であると判断された場合に、前記プロセッサ(305)上で稼働する前記ソフトウェアコードに関連付けられた第2のセキュリティIDを取得するステップ;
    を更に備える、請求項4の方法。
  6. プロセッサ(305)及び仮想メモリテーブル(405)を備える装置であって、前記プロセッサは、その上でコードを走らせるためのものであり、且つ、プロセッサ(305)により実行される予定の複数の命令の夫々又は一組の命令を第1のセキュリティ識別子(ID)と関連付けるためのものである装置において、
    前記プロセッサ(305)は、前記プロセッサ上で稼働中のコードにより前記複数の命令の少なくとも一つ又は一組の命令を実行するという要求を受けて、前記コードに関連付けられた第2のセキュリティIDを前記仮想メモリテーブル(405)から取得し、該第2のセキュリティIDを前記第1のセキュリティIDと比較し、前記第2のセキュリティIDが前記第1のセキュリティIDと一致した場合に、前記要求された命令又は一組の命令を実行する、装置。
  7. 前記第1及び第2のセキュリティIDが一致しなかった場合に、前記プロセッサ(305)は、前記要求された命令又は一組の命令の前記実行を拒む、請求項6の装置。
  8. 前記プロセッサ(305)は、プロセッサにより実行される予定の複数の命令の夫々または一組の命令と共に第1のセキュリティ識別子(ID)をプログラマブル・レジスタ内部に格納する、請求項6又は7の装置。
  9. 前記プロセッサ(305)は、プロセッサ(305)により実行される予定の複数の命令のうち、少なくとも一つの命令又は一組の命令を、セキュリティ上注意を有する命令であると分類し、セキュリティ上注意を要すると分類された命令の夫々又は一組の命令と第1のセキュリティ識別子(ID)を関連付ける、請求項6、7又は8の装置。
  10. 前記プロセッサ(305)は、前記要求された命令がセキュリティ上注意を要する命令であると分類されているか否かを判断し、前記要求された命令がセキュリティ上注意を要する命令であると判断された場合に、前記プロセッサ(305)上で稼働する前記ソフトウェアコードに関連付けられた第2のセキュリティIDを取得する、請求項9の装置。
JP2003550034A 2001-12-03 2002-09-12 セキュリティ上注意を要する命令(セキュリティ・センシティブ・インストラクション)の実行を制限する方法及び装置 Expired - Lifetime JP3830942B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/005,248 US7865948B1 (en) 2001-12-03 2001-12-03 Method and apparatus for restricted execution of security sensitive instructions
PCT/US2002/028855 WO2003048908A2 (en) 2001-12-03 2002-09-12 Method and apparatus for restricted execution of security sensitive instructions

Publications (2)

Publication Number Publication Date
JP2005512182A JP2005512182A (ja) 2005-04-28
JP3830942B2 true JP3830942B2 (ja) 2006-10-11

Family

ID=21714930

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003550034A Expired - Lifetime JP3830942B2 (ja) 2001-12-03 2002-09-12 セキュリティ上注意を要する命令(セキュリティ・センシティブ・インストラクション)の実行を制限する方法及び装置

Country Status (8)

Country Link
US (1) US7865948B1 (ja)
EP (1) EP1451665A2 (ja)
JP (1) JP3830942B2 (ja)
KR (1) KR100939328B1 (ja)
CN (1) CN1307502C (ja)
AU (1) AU2002333566A1 (ja)
TW (1) TWI263132B (ja)
WO (1) WO2003048908A2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1698958A1 (fr) * 2005-02-25 2006-09-06 Axalto SA Procédé de sécurisation de l'ecriture en mémoire contre des attaques par rayonnement ou autres
US8352713B2 (en) * 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
US8245307B1 (en) 2006-12-18 2012-08-14 Nvidia Corporation Providing secure access to a secret
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
EP2856377B1 (en) * 2012-06-01 2017-09-27 Intel Corporation Identification and execution of subsets of a plurality of instructions in a more secure execution environment
CN104601353B (zh) * 2013-10-31 2018-07-06 北京神州泰岳软件股份有限公司 一种网络安全生产设备的运维操作方法和系统
CN111382429B (zh) * 2018-12-27 2022-12-27 华为技术有限公司 指令的执行方法、装置及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US494238A (en) * 1893-03-28 Windmill
US5027273A (en) 1985-04-10 1991-06-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
JPH0743672B2 (ja) * 1987-02-18 1995-05-15 株式会社東芝 メモリ保護違反検出装置
US4962538A (en) * 1989-02-13 1990-10-09 Comar, Inc. Image analysis counting system
US4962533A (en) 1989-02-17 1990-10-09 Texas Instrument Incorporated Data protection for computer systems
US5469556A (en) * 1989-12-12 1995-11-21 Harris Corporation Resource access security system for controlling access to resources of a data processing system
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5802590A (en) * 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
JPH08272625A (ja) * 1995-03-29 1996-10-18 Toshiba Corp マルチプログラム実行制御装置及び方法
JP2001510597A (ja) * 1995-11-20 2001-07-31 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ コンピュータプログラム頒布システム
US5835594A (en) 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
JP2000181898A (ja) 1998-12-14 2000-06-30 Nec Corp フラッシュメモリ搭載型シングルチップマイクロコンピュータ
FI991134A (fi) * 1999-05-18 2000-11-19 Sonera Oyj Ohjelmiston testaus
US7178031B1 (en) * 1999-11-08 2007-02-13 International Business Machines Corporation Wireless security access management for a portable data storage cartridge
FR2802666B1 (fr) * 1999-12-17 2002-04-05 Activcard Systeme informatique pour application a acces par accreditation
US7281103B2 (en) 2003-10-01 2007-10-09 Kabushiki Kaisha Toshiba Microcomputer with a security function for accessing a program storage memory

Also Published As

Publication number Publication date
KR20050027084A (ko) 2005-03-17
CN1307502C (zh) 2007-03-28
EP1451665A2 (en) 2004-09-01
AU2002333566A1 (en) 2003-06-17
TW200300880A (en) 2003-06-16
US7865948B1 (en) 2011-01-04
AU2002333566A8 (en) 2003-06-17
CN1613039A (zh) 2005-05-04
KR100939328B1 (ko) 2010-01-28
WO2003048908A2 (en) 2003-06-12
WO2003048908A3 (en) 2004-04-22
JP2005512182A (ja) 2005-04-28
TWI263132B (en) 2006-10-01

Similar Documents

Publication Publication Date Title
US7631160B2 (en) Method and apparatus for securing portions of memory
EP2748753B1 (en) Method and apparatus for controlling access to a resource in a computer device
RU2313126C2 (ru) Система и способ для защиты от недоверенного кода режима управления с системой с помощью переадресации прерывания режима управления системой и создания контейнера виртуальной машины
JP4756603B2 (ja) データプロセッサ
JP4759059B2 (ja) メモリページをプログラムに対応付けるページカラーリング
JP4818793B2 (ja) マイクロコンピュータ及びメモリアクセスの制御方法
JP4481180B2 (ja) 保護をコンピュータ特権レベルから切り離すことによるコンピュータシステムへの柔軟な保護モデルの提供
US20070055837A1 (en) Memory protection within a virtual partition
JP4399270B2 (ja) データプロセッサのセキュリティを改善させるための方法ならびに装置
US20050240701A1 (en) Interrupt control apparatus
JP2007058776A (ja) メモリアクセス制御装置
KR100931706B1 (ko) 타겟 보안을 결정하기 위한 물리적 어드레스-기반 보안에관한 방법 및 장치
JP3830942B2 (ja) セキュリティ上注意を要する命令(セキュリティ・センシティブ・インストラクション)の実行を制限する方法及び装置
US8443451B2 (en) Manually controlled application security environments
KR100941743B1 (ko) 타겟 보안을 이용한 입력/출력 디바이스들의 다중-테이블액세싱을 위한 방법 및 장치
JP2019525319A (ja) コンテキストベースの保護システム
CN117916720A (zh) 调节对内存的访问
KR20040057256A (ko) 메모리보호장치 및 그 제어방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060609

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060712

R150 Certificate of patent or registration of utility model

Ref document number: 3830942

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100721

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20110721

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20110721

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120721

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20120721

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130721

Year of fee payment: 7

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

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