(57)【要約】  セキュリティ上注意を要する命令の実行を制限する方法及び装置。第一のセキュリティ識別子（ＩＤ）はプロセッサ（３０５）により実行される予定の複数の命令のうちの各々、又は一組の命令に関する。プロセッサ（３０５）上で稼働中のソフトウェアコードは複数の命令のうちの少なくとも一つ又は一組の命令を実行することを要求する。プロセッサ（３０５）は、当該プロセッサ上で稼働中のソフトウェアコードに関連した第２のセキュリティ識別子（ＩＤ）を取得し、その第２のセキュリティＩＤを第１のセキュリティＩＤと比較する。プロセッサ（３０５）は、第２のセキュリティＩＤが第１のセキュリティＩＤと一致した場合に、要求された命令又は一組の命令を実行する。
2005512182.tif 000002
【特許請求の範囲】
【請求項１】
第１のセキュリティ識別子（ＩＤ）を、プロセッサ（３０５）により実行される予定の複数の命令の夫々又は一組の命令と関連付けるステップ；
前記プロセッサ（３０５）上で稼働中のソフトウェアコードにより前記複数の命令の少なくとも一つ又は一組の命令を実行することについて要求するステップ；
前記プロセッサ（３０５）上で稼働する前記ソフトウェアコードに関連付けられた第２のセキュリティＩＤを取得するステップ；
該第２のセキュリティＩＤを前記第１のセキュリティＩＤと比較するステップ；及び
前記第２のセキュリティＩＤが前記第１のセキュリティＩＤと一致した場合に、前記要求された命令又は一組の命令を実行するステップ；
を備える方法。
【請求項２】
前記第１及び第２のセキュリティＩＤが一致しなかった場合に、前記要求された命令又は一組の命令の前記実行を拒むステップ
を更に備える請求項１の方法。
【請求項３】
第１のセキュリティ識別子（ＩＤ）を関連付けるステップは、プロセッサ（３０５）により実行される予定の複数の命令の夫々または一組の命令と共に第１のセキュリティ識別子（ＩＤ）を格納するステップを更に備える、請求項１の方法。
【請求項４】
第１のセキュリティ識別子（ＩＤ）を関連付けるステップは：
プロセッサ（３０５）により実行される予定の複数の命令のうち、少なくとも一つの命令又は一組の命令を、セキュリティ上注意を有する命令であると分類するステップ；及び
セキュリティ上注意を要すると分類された命令の夫々又は一組の命令と第１のセキュリティ識別子（ＩＤ）を関連付けるステップ；
を更に備える、請求項１の方法。
【請求項５】
前記プロセッサ（３０５）上で稼働する前記ソフトウェアコードに関連付けられた第２のセキュリティＩＤを取得するステップは：
前記要求された命令がセキュリティ上注意を要する命令であると分類されているか否かを判断するステップ；及び
前記要求された命令がセキュリティ上注意を要する命令であると判断された場合に、前記プロセッサ（３０５）上で稼働する前記ソフトウェアコードに関連付けられた第２のセキュリティＩＤを取得するステップ；
を更に備える、請求項４の方法。
【請求項６】
プロセッサ（３０５）を備える装置であって、前記プロセッサは、その上でコードを走らせるためのものであり、且つ、プロセッサ（３０５）により実行される予定の複数の命令の夫々又は一組の命令を第１のセキュリティ識別子（ＩＤ）と関連付けるためのものである装置において、
前記プロセッサ（３０５）は、前記プロセッサ上で稼働中のコードにより前記複数の命令の少なくとも一つ又は一組の命令を実行するという要求を受けて、前記コードに関連付けられた第２のセキュリティＩＤを取得し、該第２のセキュリティＩＤを前記第１のセキュリティＩＤと比較し、前記第２のセキュリティＩＤが前記第１のセキュリティＩＤと一致した場合に、前記要求された命令又は一組の命令を実行する、装置。
【請求項７】
前記第１及び第２のセキュリティＩＤが一致しなかった場合に、前記プロセッサ（３０５）は、前記要求された命令又は一組の命令の前記実行を拒む、請求項６の装置。
【請求項８】
前記プロセッサ（３０５）は、プロセッサにより実行される予定の複数の命令の夫々または一組の命令と共に第１のセキュリティ識別子（ＩＤ）をプログラマブル・レジスタ内部に格納する、請求項６の装置。
【請求項９】
前記プロセッサ（３０５）は、プロセッサ（３０５）により実行される予定の複数の命令のうち、少なくとも一つの命令又は一組の命令を、セキュリティ上注意を有する命令であると分類し、セキュリティ上注意を要すると分類された命令の夫々又は一組の命令と第１のセキュリティ識別子（ＩＤ）を関連付ける、請求項６の装置。
【請求項１０】
前記プロセッサ（３０５）は、前記要求された命令がセキュリティ上注意を要する命令であると分類されているか否かを判断し、前記要求された命令がセキュリティ上注意を要する命令であると判断された場合に、前記プロセッサ（３０５）上で稼働する前記ソフトウェアコードに関連付けられた第２のセキュリティＩＤを取得する、請求項９の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概略、コンピュータに関し、特に、コンピュータシステムにおいてセキュアな動作を確保するための方法及び装置に関する。
【背景技術】
【０００２】
パーソナルコンピュータのような汎用コンピュータシステムは、シングルタスクを実行するものから、複数のタスクを同時に実行するものへと進歩してきた。マルチタスクを行うシステムは、セキュリティ及び保護サービスに対して、ユーザプロセスからオペレーティングシステムを保護すること及び複数のプロセスをお互いから保護することを要求している。保護なしでは、例えば、悪劣（ｒｏｇｕｅ）プログラムが、オペレーティングシステムや他のプロセス用に確保されたメモリ空間内にあるプログラムコードやデータを予想を超えて破壊してしまう可能性があるからである。
【０００３】
ｘ８６マイクロプロセッサ環境においては、典型的には、特権レベルを可変とすることにより悪劣プログラムの可能性を減ずるように、セキュリティ機能が実装されている。異なるタイプのソフトウェアがこれらの可変特権レベルにおいて実行され、その結果、コンピュータシステムのリソースに対して可変アクセスを有している。図１に示されるように、コンピュータのオペレーティングシステムは、最高位の特権レベル（即ち、レベル０）にて動作しており、このレベル０にて動作することにより、オペレーティングシステムは仮想的にコンピュータシステムにおける如何なるシステムリソースにも殆ど自由にアクセスすることを許可されている。ソフトウェアドライバもまた、最高位特権レベルにて動作することを許されている。一方、アプリケーションプログラムは、典型的には、最下位の特権レベル（即ち、レベル３）にて動作し、システムリソースに対するアクセスは大抵許可されるが、オペレーティングシステムによる許可がある場合に限られている。従って、少なくとも理論上は、オペレーティングシステムは、任意のアプリケーションプログラムが他のアプリケーションプログラムに割り当てられたシステムリソースをアクセスすることを防ぐ。例えば、オペレーティングシステムは物理メモリ内の空間をアプリケーションプログラムに割り当て、それにより、アプリケーションプログラムは割り当てられた空間内のみにおいて殆ど自由にリード・ライトすることができる。つまり、オペレーティングシステムは、通常、任意のアプリケーションプログラムが他のアプリケーションプログラムに割り当てられた物理メモリの一部の内容を書き換えてしまうことを防止する。
【０００４】
しかしながら、オペレーティングシステムやドライバに到達するようなセキュリティ上の欠陥やバグが生じることは避けられない。悪劣なプログラムやドライバはこれらのセキュリティ上の欠陥やバグを偶然に又は意図的に用いて、それら悪劣なプログラムやドライバからのアクセスが排除されるべきであったメモリの部分に対するアクセスを得る。保護されていたメモリであってもプログラムやドライバが一旦アクセスしてしまえば、そのプログラムやドライバがターゲットとされたソフトウェア（それらに関連する周辺機器を含む）の動作を妨害し、又は、奪い取ってしまうことさえも可能となる。例えば、データプロセッサにおけるモデムの動作は、当該モデムに本来関連付けられていたアプリケーションプログラム又はドライバのメモリ空間に対するアクセスを得る悪劣プログラムによって無茶苦茶にされてしまうにちがいない。その悪劣プログラムは、その後、モデムに対して、電話網上で権限もなく望ましくもないコールを行わせるか、又は、当該電話網上における適切な動作を邪魔するように命じるに違いない。
【０００５】
マイクロソフトのウィンドウズ（登録商標）オペレーティングシステムの最新バージョンであるウィンドウズ（登録商標）２０００は、現在、そのカーネルとそれに関連するカーネルモードのドライバに包含された１００万行以上のコードを有している。このため、１００万行以上のコードがシステムリソースに対して殆ど自由にアクセスすることができる。従って、オペレーティングシステムの純然たる規模に起因して、更なる欠陥やバグが見つかってしまうことは避けられないだろう。このため、悪劣プログラムが、未だ発見されていないセキュリティ上の欠陥やバグを非常にうまい具合に見つけ出し、悪劣プログラムからのアクセスを保護されていたメモリの部分に対するアクセスを偶然に又は意図的に得てしまうかもしれない。
【０００６】
本発明は、上述した問題のうちの一以上を克服し、又は、少なくとも、その問題による影響を減ずることを目的とする。
【発明の開示】
【０００７】
本発明の一の側面において、ある方法が提供される。その方法は第１のセキュリティ識別子（ＩＤ）をプロセッサにより実行される予定の複数の命令の夫々又は一組の命令と関連付けることを含む。プロセッサ上で稼働中のソフトウェアコードにより複数の命令のうちの少なくとも一つ又は一組の命令を実行することについての要求がなされる。プロセッサ上で稼働中のソフトウェアコードに関連付けられた第２のセキュリティＩＤが取得される。第２のセキュリティＩＤと第１のセキュリティＩＤとが比較される。第２のセキュリティＩＤが第１のセキュリティＩＤと一致した場合に、要求された命令又は一組の命令が実行される。
【０００８】
本発明の他の側面においては、ある装置が提供される。その装置はプロセッサを備えている。プロセッサは、その上でコードを走らせるためのものであり、且つ、プロセッサにより実行される予定の複数の命令の夫々又は一組の命令を第１のセキュリティ識別子（ＩＤ）と関連付けるためのものである。プロセッサは、当該プロセッサ上で稼働中のコードにより複数の命令のうちの少なくとも一つ又は一組の命令を実行することについての要求を受けて、当該コードに関連付けられた第２のセキュリティＩＤを取得し、第２のセキュリティＩＤを第１のセキュリティＩＤと比較して、第２のセキュリティＩＤが第１のセキュリティＩＤと一致した場合に、要求された命令又は一組の命令を実行する。
【０００９】
本発明の他の側面においては、ある物品が提供される。その物品は、特定の命令を含む一以上の機械可読なストレージメディアを備えている。特定の命令が実行されると、プロセッサは、プロセッサにより実行される予定の複数の命令の夫々又は一組の命令と第１のセキュリティ識別子（ＩＤ）とを関連付けることができ、そして、当該特定の命令は、プロセッサ上で稼働中のソフトウェアコードによってその複数の命令の少なくとも一つ又は一組の命令を実行することについて要求する。
【発明を実施するための最良の形態】
【００１０】
本発明は、以下の説明及びそれに関連する付属図面を参照することにより、理解されるであろう。ここで、各図面において、参照符号の最も左側の桁は、当該参照符号が最初に用いられた図面を示している。
本発明については、様々な変形及び置換が可能であるが、特定の実施例が図に例示され且つここに詳細に説明される。しかしながら、ここにおける特定の実施例に関する記述は開示した特定の形態に本発明を限定することを意図したものではなく、逆に、付属のクレームに定義されたような発明の精神及び技術的範囲内に属する変形例、均等物及び置換のすべてをカバーすることが意図される。
本発明の実施例について以下に説明する。分かり易くするために、本明細書においては、実際に実施されるもののすべての特徴は説明しない。勿論、そういった現実的な実施例の開発においては、システム関連又はビジネス関連の制約の遵守のような、その開発特有の目的であって、実施例間において互いに異なることを達成するために、個々の実施に特有な決定が多数なされるはずであると思われる。また、かかる開発努力は複雑で時間を要するものであるがそれにも拘らず本件開示による利益を受ける分野における当業者にとっては日常的な業務であると思われる。
【００１１】
ここで図面に戻り、特に、図２を参照すると、本発明の一実施例によるセキュリティ上注意を要する命令の実行を制限するためのコンピュータシステム２００に関する簡略化されたブロック図が示されている。図示された実施例において、最も簡略化された形態の一つとして示されているコンピュータシステム２００は、プロセッサユニット２０５、少なくとも一つの入力デバイス２１０及び少なくとも一つの出力デバイス２１５を備えている。入力デバイス２１０は、例えば、キーボード、マウス、タッチパッド、タッチスクリーンなどを含んでいても良い。出力デバイス２１５は、モニタ、プリンタ及び／又は、プロセッサユニット２０５により処理された情報をシステム２００のユーザに伝えるためのその他のデバイスを含んでいても良い。
【００１２】
図示された実施例によれば、プロセッサユニット２０５は、セキュリティアクセス技術を採用しており、その技術は、システム２００がある種のセキュリティ上注意を要する命令をプロセッサユニット２０５で実行することを制限する。セキュリティ上注意を要する命令は、プロセッサユニット２０５上で稼働中のある種のコードにより実行されることについて制限を設けたいような命令又は一組の命令を含んでいても良い。
【００１３】
入力デバイス２１０を介してシステム２００のユーザから入力がなされると、プロセッサユニット２０５内における一以上のソフトウェア構造又はソフトウェアコードの実行が開始されても良い。プロセッサユニット２０５内部にあるメモリはその後アクセスされて、所望とするタスクを実現するための様々なソフトウェア構造又はソフトウェアコードが実行される。プロセッサユニット２０５によって採用されたセキュリティアクセス技術は、プロセッサ内部にプログラムされた所定のセキュリティエントリに基づいてプロセッサ２０５により実行される予定のいくつかのセキュリティ上注意を要する命令の実行を制限しても良く、従って、ある計算タスクがプロセッサユニット２０５によって実行されるのを禁止する。
【００１４】
次いで、図３を参照すると、システム２００におけるプロセッサユニット２０５のより詳細な図が示されている。本発明の一実施例によれば、プロセッサユニット２０５は、プロセッサ３０５を備えている。プロセッサ３０５は、図示された実施例においては、マイクロプロセッサの形態をとっている。しかしながら、本発明の精神及び技術的範囲から逸脱しないのであれば、プロセッサ３０５がその他の様々なプロセッサタイプの形態をとっても良いし、複数のプロセッサを含んでいても良いことは理解されるであろう。プロセッサユニット２０５は、システムメモリコントローラ３１０及びメモリモジュール３１５を更に含んでいる。図示された実施例によれば、メモリモジュール３１５は、物理メモリ３５０を含んでいる。この物理メモリ３５０は、シンクロナス・ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）又はダブルレート・ダイナミック・ランダム・アクセス・メモリ（ＤＤＲＡＭ）の形態をとっても良い。しかしながら、物理メモリ３５０が様々な他のメモリタイプの形態をとっても良く、従って、上述した例に限定される必要はないことは理解されるであろう。
【００１５】
プロセッサ３０５は、システムバス３３０を通じて、システムメモリコントローラ３１０を介してメモリモジュール３１５と通信する。一実施例によれば、システムメモリコントローラ３１０はメモリアドレス及び論理信号をメモリモジュール３１５に提供し、プロセッサ３０５による所望とされたメモリトランザクションの特徴づけをする。
【００１６】
周辺機器３４５との通信用に用いられているプライマリバス３３５もまた、ホストブリッジ３４０を通じてホストバス３３０に接続されている。一実施例において、プライマリバス３３５は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（ＰＣＩ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｒｅｖ．２．１参照）の形態をとっている。本発明の精神及び技術的範囲から逸脱しない限り、プロセッサユニット２０５がセカンダリＰＣＩバス（図示せず）のような他のバスや様々な他の周辺機器（図示せず）を含んでいても良いことは理解されるであろう。
【００１７】
一実施例において、プロセッサ３０５は、実行可能な命令に基づいて、複数のコンピュータ処理操作を行う。プロセッサ上で稼働中のソフトウェアコードにより特定の命令を実行するといった要求を受けて、プロセッサ３０５は、メモリアクセスプロシジャを行い、そのコードにより要求された適切な遂行を行う。プロセッサ３０５は、システムメモリコントローラ３１０を介して、メモリアクセスを行う。システムメモリコントローラ３１０は、メモリモジュール３１５における物理メモリ３５０に対するアクセスを提供し、特定の命令が実行される間に所望とするタスクを実現する。
【００１８】
ここで、図４を参照すると、本発明の一実施例によるシステムメモリコントローラ３１０のより詳細な図が示されている。システムメモリコントローラ３１０は、仮想メモリアクセステーブル４０５と仮想メモリ４１０とを備えている。プロセッサ３０５は仮想メモリアクセステーブル４０５を用いて仮想（又は線形）メモリアドレスを得る。この仮想メモリアドレスは、仮想メモリ４１０内における特定の位置を示す。一旦、特定の仮想メモリアドレスが決定されると、仮想メモリ４１０がアクセスされ、仮想メモリアクセステーブル４０５から得られた仮想メモリアドレスに対応する物理メモリアドレスが決定される。仮想メモリ４１０から得られた物理メモリアドレスは、物理メモリ３５０内部における特定のメモリ位置に対するポインタである。物理メモリ３５０は、プロセッサ３０５上で現在稼働中のソフトウェアコードによって所望される命令が行われるために必要となるメモリ空間を提供する。（上述したように）仮想メモリアドレスを得るためのプロセスは最も過度に単純化された形態にて説明されていること、及び、仮想メモリアドレスを得るために仮想メモリアクセステーブル４０５に加えて他の様々なテーブルがアクセスされても良いことは理解されるだろう。仮想メモリアドレスを得るためのこれら特定のプロシジャは、当業者に知られている。従って、本発明を不必要に不明瞭とすることを避けるべく、それらのプロシジャに関する詳細はここでは提供しない。
【００１９】
一実施例によれば、セキュリティ識別子（ＩＤ）は特定のセキュリティ上注意を要する命令又は一組の命令であってプロセッサ３０５により実行可能なものに関連付けられても良い。一実施例において、セキュリティＩＤは固定値であっても良く、それに代えて、プロセッサ３０５内にあっても良いプログラマブル・レジスタ（図示せず）内に格納されても良い。図示された実施例によれば、セキュリティ上注意を要する命令は仮想メモリのベースを規定するＣＲ３への移動、プロセッサ３０５の動作モードを規定するＣＲ０への移動、及び／又は、プロセッサ３０５の様々なサブモードを規定するＣＲ４への移動を含んでいても良い。更に、様々な実行可能な命令用のセキュリティＩＤを規定するプログラマブル・レジスタを書換設定するようないかなる命令を、セキュリティ上注意を要するものとしても良い。上述の例のリストが限定列挙したものとは限らないということは理解されるであろう。故に、プロセッサ３０５により実行される様々な他のタイプの命令はセキュリティ上注意を要するものと考えられても良く、従って、上記の例に限定される必要はない。
【００２０】
現時点でプロセッサ３０５により実行されているソフトウェアコード（例えば、ドライバ、サービス、カーネルルーチン、アプリケーションコードなど）に関連付けられたセキュリティＩＤは、セキュリティ上注意を要する命令又は一組の命令であって当該コードが実行したいものに対応する仮想メモリテーブル４０５上のアドレスを参照することにより、得られる。プロセッサ３０５上で現在実行されているコードにより特定のセキュリティ上注意を要する命令が要求されると、仮想メモリアクセステーブル４０５のアドレスを参照することにより得られた現在実行中のコードのセキュリティＩＤが、プロセッサ３０５によって、特定のセキュリティ上注意を要する命令又は一組の命令であって当該コードが実行したいものに関するセキュリティＩＤと比較される。上述したように、セキュリティ上注意を要する命令のセキュリティＩＤは固定値であってもよく、プログラマブル・レジスタに格納された変更可能なものであってもよい。セキュリティＩＤが一致した場合、プロセッサ３０５は、当該プロセッサ上で稼働中のソフトウェアコードにより要求されたように、セキュリティ上注意を要する命令又は一組の命令を実行する。一方、現在実行中のコードのセキュリティＩＤと所望とするセキュリティ上注意を要する命令のセキュリティＩＤとが一致しない場合、プロセッサ３０５は、セキュリティ上注意を要する命令又は一組の命令をプロセッサ３０５上で稼働中のソフトウェアコードによって要求されたように実行することを拒む。
【００２１】
ここで、図５を参照すると、一実施例によるプロセス５００であって、プロセッサ３０５上で稼働中のコードによりセキュリティ上注意を要する命令が実行されることを制限するためのプロセス５００が示されている。プロセス５００はブロック５０５から開始する。ブロック５０５においては、命令又は一組の（即ち、一群の）命令がセキュリティ上注意を要するものとして分類され、かかる命令の夫々又は一組の命令は、プロセッサ３０５において、一つのセキュリティＩＤに関連付けられる。一実施例によれば、セキュリティＩＤは、セキュリティ上注意を要する命令に関連付けられた一定値であっても良い（即ち、セキュリティ上注意を要する命令が固定のセキュリティＩＤを持っていても良い）。代替実施例において、セキュリティ上注意を要する命令のセキュリティＩＤはプロセッサ３０５におけるプログラマブル・レジスタ（図示せず）内に格納されても良い。ここで、プログラマブル・レジスタは、プロセッサ上で稼働中のオペレーティングシステムにより書換可能なものとしてもよい。本発明の精神及び技術的範囲を逸脱することのない限り、セキュリティ上注意を要する命令とセキュリティＩＤを関連付けるための他の方法が、上述した例に加えて、行われても良いことは理解されるであろう。
【００２２】
ブロック５１０において、プロセッサ３０５は、当該プロセッサ上で現在稼働中のソフトウェアコードがセキュリティ上注意を要すると分類された命令を実行しようとしているか否かを判断する。一実施例において、プロセッサ３０５は、プロセッサ３０５におけるプログラマブル・レジスタを参照することにより、要求された命令がセキュリティ上注意を要するものかどうかを、例えば、セキュリティＩＤがそれに関連しているかどうかを理解するために、判断しても良い。ブロック５１０において、プロセッサ３０５上で現在稼働中のソフトウェアコードがセキュリティ上注意を要する命令を実行しようとするものでない場合（即ち、要求された命令に関連付けられたセキュリティＩＤがなかった場合）、プロセッサ３０５は、ブロック５１５において、セキュリティ・プロシジャを呼び出すことなく、当該命令を実行する（即ち、当該命令はプロセッサ３０５により通常の手法で実行される）。しかしながら、プロセッサ３０５上で現在稼働中のソフトウェアコードがブロック５１０においてセキュリティ上注意を要する命令を実行しようとしていた場合には、セキュリティ・プロシジャがブロック５２０においてプロセッサ３０５により呼び出され、プロセッサ３０５上で稼働中のコードがセキュリティ上注意を要する命令を実行する権限を有するかどうかについて判断がなされる。
【００２３】
プロセス５００は、次いで、ブロック５２５に進む。ここでは、プロセッサ３０５上で稼働中のソフトウェアコードのセキュリティＩＤが、当該コードが実行しようとしているセキュリティ上注意を要する命令に対応する仮想メモリテーブル４０５のアドレスを参照することにより、取得される。プロセッサ上で稼働中のソフトウェアコードに関連付けられたセキュリティＩＤを取得した後、プロセッサ３０５は、ブロック５３０において、該コードが実行しようとしているセキュリティ上注意を要する命令についてのセキュリティＩＤを取得する。一実施例において、セキュリティ上注意を要する命令についてのセキュリティＩＤはプログラマブル・レジスタ（図示せず）から得ることとしても良い。
【００２４】
仮想メモリテーブル４０５から特定の命令に関連付けられたセキュリティＩＤを得ると、プロセッサ３０５は、ブロック５３５において、プロセッサ３０５上で稼働中のコードに関連付けられたセキュリティＩＤと特定の命令に関連付けられたセキュリティＩＤとを比較する。ブロック５４０において、プロセッサ３０５は、プロセッサ上で稼働中のコードに関連付けられたセキュリティＩＤと、当該コードが実行しようとしている特定の命令に関連付けられたセキュリティＩＤと一致するかどうか判断する。
【００２５】
プロセッサ上で稼働中のコードに関連付けられたセキュリティＩＤと特定の命令に関連付けられたセキュリティＩＤとが一致しない場合、プロセッサ３０５は、ブロック５４５において、プロセッサ上で稼働中のソフトウェアコードによりセキュリティ上注意を要する命令が実行されることを拒む。プロセッサ上で稼働中のコードに関連付けられたセキュリティＩＤとセキュリティ上注意を要する命令に関連付けられたセキュリティＩＤとが一致した場合、プロセッサ３０５はブロック５５０において、そのセキュリティ上注意を要する命令を実行する。一実施例によれば、セキュリティＩＤが一致した場合、プロセッサ３０５により実行される予定のソフトウェアコードに対応する仮想メモリアドレスが仮想メモリアドレステーブル４０５から取得され、その仮想メモリアドレスを用いて仮想メモリ４１０から物理アドレスが取得され、物理メモリ３５０内部のメモリ空間がプロセッサ３０５からアクセス可能となり、所望とされる命令であってセキュリティ上注意を要するものが実行される。
【００２６】
一実施例によれば、プロセッサ３０５によりセキュリティ上注意を要する命令が実行されるためには、セキュリティＩＤが互いに完全に一致することが必要とされる。しかしながら、それに代えて、セキュリティＩＤが複数のフィールドに分解され、結果として、マルチレイヤーのセキュリティ技術を提供することとしても良い。従って、ソフトウェアコード及びセキュリティ上注意を要する命令はすべて固有のセキュリティＩＤを有するのではあるが、セキュリティＩＤ内部における共通のフィールド又はコンポーネントが、所望とする命令であってセキュリティ上注意を要するものの実行を許可するだろう。このように、セキュリティＩＤは、クラス、ファミリ、又は、他のグループ情報であって、それらの一部が一致したことにより、特定クラスのコードが特定の命令又は一組の命令を実行可能となるようなものを確立し示唆するように設定されていても良い。
【００２７】
例えば、一実施例において、セキュリティＩＤはクラスとサブクラスフィールドを備えていても良いし、セキュリティＩＤ間のクラスフィールドが一致した場合に、セキュリティＩＤ間の比較用としてはセキュリティＩＤ間のサブクラスを無視しても良い。従って、この特定の実施例において、セキュリティ上注意を要する命令のプロセッサ３０５による実行は、セキュリティＩＤのうち少なくともクラスフィールドが一致した場合に、許可されることとしても良い。他の実施例において、セキュリティＩＤ間（若しくは、例えば、クラスフィールドのようなセキュリティＩＤの一部）の比較は必ずしも正確な算術上の一致でなくとも良い。例えば、プロセッサ３０５上で稼働中のコードに関連付けられたセキュリティＩＤのクラスフィールドがセキュリティ上注意を要する命令に関連付けられたセキュリティＩＤのクラスコード以上である（又は、それに代えて、以下である）場合、セキュリティ上注意を要する命令の実行が許可されても良い。しかしながら、セキュリティＩＤに関する特定のフォーマットは必ずしも上述した例に限定される必要はない。
【００２８】
以上開示された特定の実施例は単なる例であり、本発明は異なるが等価な手法であってここに教授したことの利益を受ける分野における当業者にとって明らかな手法に従って変更され実施されても良い。更に、以下のクレームに記されたこと以外、ここに示された構成又は設計の詳細に制限はない。それゆえ、以上開示された特定の実施例は置き換えられ又は変更されても良いことは明らかであり、かかる変形のすべては本発明の精神及び技術的範囲内に属するものと考えられる。従って、ここに求める保護は、以下のクレームに規定されるようなものである。
【図面の簡単な説明】
【００２９】
【図１】図１は、コンピュータシステムに実装された従来のセキュリティ技術の一実施例を概略的に示す。
【図２】図２は、本発明の一実施例によるセキュリティアクセス技術を採用したプロセッサユニットを含むコンピュータシステムの簡略化されたブロック図である。
【図３】図３は、図２に示されるプロセッサユニットのより詳細な図である。
【図４】図４は、図３に示されるシステムメモリコントローラのより詳細な図である。
【図５Ａ】図５Ａは、本発明の一実施例により、セキュリティ上注意を要する命令の実行を制限するための方法を示す図である。
【図５Ｂ】図５Ｂは、本発明の一実施例により、セキュリティ上注意を要する命令の実行を制限するための方法を示す図である。
【図１】
2005512182.tif 000003
【図２】
2005512182.tif 000004
【図３】
2005512182.tif 000005
【図４】
2005512182.tif 000006
【図５Ａ】
2005512182.tif 000007
【図５Ｂ】
2005512182.tif 000008
【手続補正書】
【提出日】平成16年5月5日(2004.5.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のセキュリティ識別子（ＩＤ）を、プロセッサ（３０５）により実行される予定の複数の命令の夫々又は一組の命令と関連付けるステップ；
前記プロセッサ（３０５）上で稼働中のソフトウェアコードにより前記複数の命令の少なくとも一つ又は一組の命令を実行することについて要求するステップ；
前記プロセッサ（３０５）上で稼働する前記ソフトウェアコードに関連付けられた第２のセキュリティＩＤを仮想メモリテーブル（４０５）から取得するステップ；
該第２のセキュリティＩＤを前記第１のセキュリティＩＤと比較するステップ；及び
前記第２のセキュリティＩＤが前記第１のセキュリティＩＤと一致した場合に、前記要求された命令又は一組の命令を実行するステップ；
を備える方法。
【請求項２】
前記第１及び第２のセキュリティＩＤが一致しなかった場合に、前記要求された命令又は一組の命令の前記実行を拒むステップ
を更に備える請求項１の方法。
【請求項３】
第１のセキュリティ識別子（ＩＤ）を関連付けるステップは、プロセッサ（３０５）により実行される予定の複数の命令の夫々または一組の命令と共に第１のセキュリティ識別子（ＩＤ）を格納するステップを更に備える、請求項１又は２の方法。
【請求項４】
第１のセキュリティ識別子（ＩＤ）を関連付けるステップは：
プロセッサ（３０５）により実行される予定の複数の命令のうち、少なくとも一つの命令又は一組の命令を、セキュリティ上注意を有する命令であると分類するステップ；及び
セキュリティ上注意を要すると分類された命令の夫々又は一組の命令と第１のセキュリティ識別子（ＩＤ）を関連付けるステップ；
を更に備える、請求項１、２又は３の方法。
【請求項５】
前記プロセッサ（３０５）上で稼働する前記ソフトウェアコードに関連付けられた第２のセキュリティＩＤを取得するステップは：
前記要求された命令がセキュリティ上注意を要する命令であると分類されているか否かを判断するステップ；及び
前記要求された命令がセキュリティ上注意を要する命令であると判断された場合に、前記プロセッサ（３０５）上で稼働する前記ソフトウェアコードに関連付けられた第２のセキュリティＩＤを取得するステップ；
を更に備える、請求項４の方法。
【請求項６】
プロセッサ（３０５）及び仮想メモリテーブル（４０５）を備える装置であって、前記プロセッサは、その上でコードを走らせるためのものであり、且つ、プロセッサ（３０５）により実行される予定の複数の命令の夫々又は一組の命令を第１のセキュリティ識別子（ＩＤ）と関連付けるためのものである装置において、
前記プロセッサ（３０５）は、前記プロセッサ上で稼働中のコードにより前記複数の命令の少なくとも一つ又は一組の命令を実行するという要求を受けて、前記コードに関連付けられた第２のセキュリティＩＤを前記仮想メモリテーブル（４０５）から取得し、該第２のセキュリティＩＤを前記第１のセキュリティＩＤと比較し、前記第２のセキュリティＩＤが前記第１のセキュリティＩＤと一致した場合に、前記要求された命令又は一組の命令を実行する、装置。
【請求項７】
前記第１及び第２のセキュリティＩＤが一致しなかった場合に、前記プロセッサ（３０５）は、前記要求された命令又は一組の命令の前記実行を拒む、請求項６の装置。
【請求項８】
前記プロセッサ（３０５）は、プロセッサにより実行される予定の複数の命令の夫々または一組の命令と共に第１のセキュリティ識別子（ＩＤ）をプログラマブル・レジスタ内部に格納する、請求項６又は７の装置。
【請求項９】
前記プロセッサ（３０５）は、プロセッサ（３０５）により実行される予定の複数の命令のうち、少なくとも一つの命令又は一組の命令を、セキュリティ上注意を有する命令であると分類し、セキュリティ上注意を要すると分類された命令の夫々又は一組の命令と第１のセキュリティ識別子（ＩＤ）を関連付ける、請求項６、７又は８の装置。
【請求項１０】
前記プロセッサ（３０５）は、前記要求された命令がセキュリティ上注意を要する命令であると分類されているか否かを判断し、前記要求された命令がセキュリティ上注意を要する命令であると判断された場合に、前記プロセッサ（３０５）上で稼働する前記ソフトウェアコードに関連付けられた第２のセキュリティＩＤを取得する、請求項９の装置。
【国際調査報告】
2005512182.tif 000009
2005512182.tif 000010