(57)【要約】本発明はメモリの一部を守るための方法および装置を提供するものである。この方法は、保護対象となる情報を特定し、情報が格納されたメモリの少なくとも１つの物理アドレスを、読み出し不可および書き込み不可の少なくとも一方であるとして示すことを含む。この方法は、情報にアクセスしたい旨の要求をプログラムから受け取ることを含む。この方法はさらに、プログラムが情報にアクセスする権限を持つという判断結果に応答して情報にアクセスすることを含む。
2004530979.tif 000002
【特許請求の範囲】
【請求項１】
保護対象となる情報を特定する処理と、
情報が格納されたメモリ（１１５）の一部が読み出し可または読み出し不可のうちの少なくとも一方であることを示す処理と、
この情報にアクセスしたい旨の要求をプログラムから受け取る処理と、
このプログラムが前記情報にアクセスする権限を持つか否かの判断結果に基づいて前記情報にアクセスする処理とを含む、コンピュータシステム（１００）においてセキュリティを提供するための方法。
【請求項２】
前記メモリの少なくとも１つの物理アドレスを示す処理が、
前記メモリ（１１５）の一部に関連した物理アドレスに対応するエントリを有するテーブルを生成する処理と、
前記テーブルのエントリにおけるアクセス権を、前記メモリ（１１５）の一部に関連した対応の物理アドレスに割り当てる処理とを含む、請求項１記載の方法。
【請求項３】
特権メモリ領域を定義すべく少なくとも１つのレジスタに書き込む処理と、
少なくとも１つのコンピュータ命令を、特権メモリ領域に常駐する特権命令として定義する処理と、
保護対象となる情報を特定する処理と、
情報が格納されたメモリの少なくとも１つの物理アドレスに少なくとも読み出しアクセス権を割り当てる処理と、
割り当てられたアクセス権に基づいて、特権命令を利用して情報へのアクセスを制御する処理とを含む、セキュリティを提供するための方法。
【請求項４】
前記情報が格納されたメモリの少なくとも１つの物理アドレスに少なくとも書き込みアクセス権を割り当てる処理をさらに含む、請求項３記載の方法。
【請求項５】
前記メモリ（１１５）の少なくとも１つの物理アドレスに割り当てる処理が、
前記メモリ（１１５）の１つ以上の物理アドレスについて少なくとも１つのエントリを有するテーブルを生成する処理と、
前記テーブルのエントリにおいて、前記メモリ（１１５）の物理アドレスに関連したアクセス権を示すことを含む、請求項４記載の方法。
【請求項６】
メモリ（１１５）と、
前記メモリと通信可能な状態で接続されたプロセッサ（１０５）であって、
情報が格納された前記メモリ（１１５）の少なくとも一部を少なくとも読み出し保護されたものであるとして特定し、
前記メモリ（１１５）の一部に格納された情報にアクセスしたい旨の要求をプログラムから受け取り、
このプログラムが前記情報にアクセスする権限を持つか否かの判断結果に基づいて、前記情報へのアクセスを許可することができるプロセッサ（１０５）と、を含むことを特徴とする、セキュリティを提供するための装置。
【請求項７】
前記プロセッサ（１０５）が、
前記メモリ（１l５）の一部の物理アドレスに関連した１つ以上のエントリを有するテーブルを生成し、
前記エントリにおいて、読み出しアクセスおよび書き込みアクセスのうちの少なくとも一方と前記メモリ（１１５）の一部に格納された情報に対するアクセス権とを示すことができる、請求項６記載の装置。
【請求項８】
プログラムがオペレーティングシステムである、請求項７記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は広義にはセキュリティに関し、特に、データ処理システム内でメモリの一部を保護するための方法および装置に関する。
【背景技術】
【０００２】
パーソナルコンピュータ用のマイクロプロセッサは一般に、コンピュータのプログラマが利用できるさまざまなハードウェア保護機構を提供すべく設計されている。これらの保護機構はパーソナルコンピュータ上で動くオペレーティングシステム（ＯＳ）の完全性とセキュリティとを保つ上で不可欠なものであることが多い。
【０００３】
たとえば、ｘ８６マイクロプロセッサのアーキテクチャでは、セグメントレベルとページレベルで動作する保護機構が得られる。ｘ８６マイクロプロセッサのセグメント保護機構では一般に０から３の４段階の特権レベルが認識される。この場合、特権レベルが高くなればなるほど特権は低くなる。よって、特権レベルがゼロのソフトウェアアプリケーションが最も特権が高く、普通は実質的にすべてのリソース（資源）に対してすべての権利が与えられている。ｘ８６の保護機構には特定のセグメントまたはページに対するアクセスを特権レベルに基づいて制限する機能がある。たとえば、オペレーティングシステムの重要なコードやデータを、アプリケーションコードを含むセグメントよりも特権の大きいセグメントにおけば、これを保護することができる。このマイクロプロセッサの保護機構では、アプリケーションコードに対して、特定の制御された方法でのみオペレーティングシステムのコードやデータへのアクセスを許可するようにすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
オペレーティングシステムは特権レベル０で動作するのが普通であり、ハードウェア保護機構と何通りかの特権レベルとを使って自己の制御下にあるリソースを保護している。現代のオペレーティングシステムとこれに関連するドライバでは、コードが百万行を超えることも珍しくない。つまり、ｘ８６のアーキテクチャにおいては、コードのすべての行がコンピュータの全リソースに対する完全なアクセス権を持つことになる。当然ながら、既存のオペレーティングシステムや新たなオペレーティングシステムが複雑でサイズも大きいことからシステムの完全性とセキュリティを維持するのが非常に難しくなっていった。特に、複雑なことがままある昨今の大きなオペレーティングシステムにセキュリティ面での弱点（あるいは他のバグ）が全くない状態を保証するのは困難である。こうしたセキュリティ面での弱点があると、ひいてはオペレーティングシステムで管理している資源が危険にさらされ、オペレーティングシステムとプラットフォームの全体がウイルスや他の悪意のあるプログラムからの攻撃を受けやすいものになってしまう。
【０００５】
ｘ８６のアーキテクチャでは、たとえば、メモリの一部分に対する読み書き保護を行うための機構が提供されていない。現在は、ページテーブルを利用してメモリの選択した領域に対する書き込み保護を行っているが、読み出しについてはメモリの該当する領域を保護する同等の機構が存在しない。したがって、悪意のあるプログラムで新たなページテーブルマッピングを作成して書き込み保護を回避されてしまわれかねない。つまり、０の特権レベルで動作しているプログラムは、まず保護されたメモリ領域の物理アドレスにマッピングするエイリアスのページテーブルを作成し、続いてそのテーブルエントリを更新して保護されたメモリ領域を書き込み可にすることで、保護されたメモリ領域にアクセスすることができる。こうしてこのプログラムは承認なくしてメモリ領域にアクセスすることが可能なのである。
【０００６】
本発明は、上記にて述べた１つ以上の問題による影響を排除または少なくとも軽減することを目的とするものである。
【課題を解決するための手段】
【０００７】
発明の開示
本発明の一態様では、メモリの一部を保護するための方法が得られる。この方法は、保護対象となる情報を確認し、この情報が格納されたメモリの少なくとも１つの物理アドレスを、読み出しと書き込みのうちの少なくとも一方が不可であると示すことを含む。この方法は、上記の情報にアクセスするためにプログラムから要求を受け取ることを含む。また、この方法はさらに、プログラムがその情報にアクセスできる権限を持つものであると判断したことに応答して上記の情報にアクセスすることを含む。
【０００８】
本発明のもうひとつの態様では、メモリの一部を保護するための装置が得られる。この装置は特権コードを持つメモリを有する。特権コードは、選択された情報を保護するための要求を受け取り、この情報が格納されたメモリの少なくとも１つの物理アドレスを、読み出しと書き込みのうちの少なくとも一方が不可であると示すことができる。特権コードは、上記の情報にアクセスするためにプログラムから要求を受け取ることができる。特権コードはさらに、プログラムがその情報にアクセスできる権限を持つものであると判断したことに応答して上記の情報にアクセスすることができる。
【０００９】
添付の図面を参照しての以下の説明を参照することで、本発明を理解することができよう。同図において、同様の参照符号は同様の構成要素を示す。
【００１０】
本発明はさまざまな改変や別の形態が可能なものであるが、その具体的な実施形態を一例として図示し、本願明細書にて詳細に説明する。しかしながら、本願明細書に記載の具体的な実施形態についての説明はここに開示の特定の形態に本発明を限定することを意図したものではなく、むしろ、添付の特許請求の範囲に定義したような本発明の趣旨および範囲に包含される改変例、均等物および別の例をすべてカバーすることを想定している点を理解されたい。
【発明を実施するための最良の形態】
【００１１】
以下、実例としての本発明の実施形態について説明する。説明を明確にするため、本願明細書では実際の実施例における特徴をすべて説明したわけではない。もちろん、このような実際の実施形態を開発するにあたっては、いずれの場合もシステム関連の制約やビジネス関連の制約を踏まえるなど、実施例ごとにさまざまな判断を行って開発者らの意図する目的を達成していく必要があり、これは実施例によって異なることは理解できよう。さらに、このような開発作業は複雑かつ時間を要するものになる場合があるが、それでも本願の開示内容を利用できる当業者らにとっては日常業務の一環であろうことも理解できよう。
【００１２】
以下、図面を参照すると、図１は代表的なコンピュータシステム１００を示している。コンピュータシステム１００は、プロセッサ１０５と、ノースブリッジ１１０と、メモリ１１５と、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス１２５と、サウスブリッジ１３０と、ＡＴアタッチメント（ＡＴＡ）インタフェース（より一般的にはＩｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）インタフェースとして知られる）１３５と、業界標準アーキテクチャ（ＩＳＡ）バス１４５と、入出力コントローラチップ１５０と、キーボード・マウスコントローラ（ＫＢＣ）インタフェースと、フロッピーディスクコントローラ（ＦＤＣ）インタフェースと、Ｘ−バス１５５と、読み出し専用メモリ（ＲＯＭ）１６０とを含む。ノースブリッジ１１０およびサウスブリッジ１３０は、ひとつのチップの一部であってもよいし、複数のチップであってもよい。限定されるものではないが、図示の実施形態におけるプロセッサ１０５はｘ８６プロセッサである。ｘ８６プロセッサのアーキテクチャについては、「Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｍａｎｕａｌ」という文献の第３巻に記載されており、その記載内容全体を本願明細書に援用する。
【００１３】
コンピュータシステム１００には、所望の構成に応じて、他のバス、デバイスおよび／またはサブシステムを含み得る。たとえば、コンピュータシステム１００には、キャッシュ、モデム、パラレルインタフェースまたはシリアルインタフェース、ＳＣＳＩインタフェース、ネットワークインタフェースカードなどを含み得る。
【００１４】
図示の実施形態において、プロセッサ１０５は、スーパー特権コードが格納されるメモリ領域を画定する第１および第２のレジスタ１６２、１６４を含む。詳細については後述するように、本発明によるスーパー特権コードはコンピュータシステム１００の選択した資源に対するアクセスを制御するセキュリティレベルが高いコンピュータ命令セットを含む。
【００１５】
プロセッサ１０５はノースブリッジ１１０に接続されている。ノースブリッジ１１０は、プロセッサ１０５、メモリ１１５、ＰＣＩバス１２５それぞれの相互インタフェースを提供する。サウスブリッジ１３０は、ＰＣＩバス１２５と、ＩＤＥインタフェース１３５、ＩＳＡバス１４５、Ｘ−バス１５５に接続された周辺機器やデバイス、サブシステムとの相互インタフェースを提供する。Ｉ／Ｏインタフェース１５０はＩＳＡバス１４５に接続されている。
【００１６】
ノースブリッジ１１０は、プロセッサ１０５、メモリ１１５、ＰＣＩバス１２５に接続されたデバイス、サウスブリッジ１３０に接続されたデバイスおよびサブシステム同士および／またはこれらの間での通信アクセスを提供する。一般に、コンピュータシステム１００への接続用のＰＣＩバス１２５とつながるＰＣＩ「スロット」（図示せず）に、着脱自在の周辺デバイスが挿入される。あるいは、マザーボード上にあるデバイスをＰＣＩバス１２５に直接接続してもよい。
【００１７】
サウスブリッジ１３０は、ＰＣＩバス１２５と、さまざまなデバイスおよびサブシステム、特に、Ｘ−バス１５５、ＩＳＡバス１４５、さらにごく最近ではＩＤＥインタフェース１３５を介してコンピュータシステム１００に接続されているのが普通であるモデムやプリンタ、キーボード、マウスなどのレガシーデバイスとの相互インタフェースを提供する。サウスブリッジ１３０には、レガシーデバイスとコンピュータシステム１００の残りの部分とを、ＩＤＥインタフェース１３５、ＩＳＡバス１４５、Ｘ−バス１５５を介してインタフェースするロジックが含まれる。
【００１８】
ＩＤＥインタフェース１３５には、ハードドライブなどの記憶装置１７５が接続されている。記憶装置１７５には、１つ以上のオペレーティングシステム（ＯＳ）やデバイスドライバ、他のアプリケーションなどを格納しておくことができる。ｘ８６アーキテクチャではオペレーティングシステムとこれに関連するデバイスドライバは一般に特権レベル０で動作し、ＯＳおよびデバイスドライバがシステム１００のさまざまなリソースにアクセスできるようになっている。記憶装置１７５にインストールし得るオペレーティングシステムの一例に、現時点ではＭｉｃｒｏｓｏｆｔ（Ｒ）がサポートしているＷｉｎｄｏｗｓ（Ｒ）がある。Ｗｉｎｄｏｗｓ（Ｒ）オペレーティングシステムは通常、記憶装置１７５用のデバイスドライバ、Ｉ／Ｏインタフェース１５０用のデバイスドライバといったシステム１００のリソースを制御するためのさまざまなデバイスドライバと一緒に出荷される。また、Ｗｉｎｄｏｗｓ（Ｒ）オペレーティングシステムでサードパーティのデバイスドライバを利用することもできる。
【００１９】
ＲＯＭ１６０にはＢＩＯＳ（基本入出力システム）が含まれる場合がある。これは、コンピュータシステム１００上で動作するオペレーティングシステムと記憶装置１７５や入出力インタフェース１５０などの付属デバイスとの間のデータフローを管理するためのものである。本発明の一実施形態では、コンピュータシステム１００が起動される際にＳＰＣが実質的にＢＩＯＳと同時に初期化されるように、スーパー特権コード（ＳＰＣ）をＲＯＭ１６０に格納しておくことができる。図示の実施形態ではスーパー特権コードがＲＯＭ１６０に常駐しているが、プロセッサ１０５のローカルメモリ（図示せず）内、記憶装置１７５内、あるいはＳＰＣを実行できる他の適当なメモリ位置をはじめとする他の場所にＳＰＣが常駐していてもよい点に注意されたい。別の実施形態では、ＳＰＣをオペレーティングシステムの一部として実現でき、この場合ＳＰＣは記憶装置１７５に格納されることになる可能性が最も高い。
【００２０】
ここで図２を参照すると、プロセッサ１０５の具体的な一実施形態が図示されている。特に、図２ではプロセッサ１０５はｘ８６プロセッサである。プロセッサ１０５のｘ８６アーキテクチャは、プロテクトモード、実アドレスモード、システム管理モードを含む複数の動作モードをサポートしている。プロテクトモードはプロセッサ１０５の素のまま（ネイティブ）の動作モードである。プロテクトモードでは、プロセッサ１０５のすべての命令と機能とを利用できる。実アドレスモードはＩｎｔｅｌ（Ｒ）８０８６プロセッサのプログラミング環境を提供するものであり、システム管理モードは電源管理機能とＯＥＭでの個別対応機能とを実現するためのトランスペアレントな機構をオペレーティングシステムに持たせるためのものである。
【００２１】
図２に示されるように、プロセッサ１０５は、グローバルディスクリプタテーブル（ＧＤＴ）２１０と、ローカルディスクリプタテーブル（ＬＤＴ）２１５と、タスクステートセグメント（ＴＳＳ）２２０と、割り込みディスクリプタテーブル（ＩＤＴ）２２５と、ＩＤＴレジスタ２３０と、５つの制御レジスタ２３５（ａ〜ｅ）と、タスクレジスタ２４０とを含む。プロテクトモードでの動作時には実質的にすべてのメモリアクセスがＧＤＴ２１０または（オプションの）ＬＤＴ２１５のいずれかを通る。ＧＤＴ２１０およびＬＤＴ２１５にはセグメントディスクリプタと呼ばれるエントリが設けられている。セグメントディスクリプタは、セグメントのベースアドレスと、アクセス権、タイプ、使用方法に関する情報を示すものである。セグメントディスクリプタは各々、ＧＤＴ２１０またはＬＤＴ２１５へのインデックスとなる、自己に関連付けられたセグメントセレクタを有する。
【００２２】
ＴＳＳ２２０は、タスクを実行する環境の状態を定義するものである。ＴＳＳ２２０には、汎用レジスタ（図示せず）、セグメントレジスタ、ＥＦＬＡＧＳレジスタ２４５、セグメントセレクタ、３つのスタックセグメント（特権レベル０、１、２のそれぞれに１スタックずつ）のスタックポインタの状態が含まれる。また、ＴＳＳ２２０には、タスクに関連するＬＤＴ２１５のセグメントセレクタとページ・テーブルのベースアドレスも含まれる。
【００２３】
タスクレジスタ２４０には、現行タスクのＴＳＳ２２０のセグメントセレクタと、ベースアドレスと、セグメントリミットと、ディスクリプタ属性とが保持される。タスクレジスタ２４０はＧＤＴ２１０に格納されたＴＳＳディスクリプタを参照する。このとき、ベースアドレスがＴＳＳ２２０のリニアアドレスを指定し、セグメントリミットがＴＳＳ２２０内でのバイト数を指定する。タスクレジスタ２４０のセグメントセレクタ部のロードはＬＴＲ命令によって行われ、同じセグメントセレクタ部のストアはＳＴＲ命令によって行われる。ＬＴＲ命令によってセグメントセレクタがタスクレジスタ２４０にロードされると、ＴＳＳディスクリプタからのベースアドレス、リミット、ディスクリプタ属性が自動的にタスクレジスタ２４０にロードされる。タスクの切り替えが発生すると、新しいタスクのＴＳＳ２２０のセグメントセレクタとディスクリプタとがタスクレジスタ２４０に自動的にロードされる。新たなＴＳＳ情報がレジスタ２４０に書き込まれるまではタスクレジスタ２４０の内容が自動保存されることはない。
【００２４】
ＩＤＴ２２５は、外部割り込みと、ソフトウェア割り込みと、例外とを処理する。ＩＤＴ２２５には、割り込みハンドラおよび例外ハンドラへのアクセスを提供するためのゲートディスクリプタが集められている。ＩＤＴ２２５内のゲートディスクリプタのタイプとしては、割り込みゲート、トラップゲート、タスクゲートがあり得る。内部ハードウェア、外部割り込みコントローラあるいはソフトウェアから割り込みベクタを受け取ると、プロセッサ１０５は割り込みハンドラまたは例外ハンドラにアクセスする。ＧＤＴ２１０と同様にＩＤＴ２２５もセグメントではない。ＩＤＴ２２５のベースのリニアアドレスはＩＤＴレジスタ（ＩＤＴＲ）２３０に格納されている。
【００２５】
制御レジスタ２３５（ａ〜ｅ）は、プロセッサ１０５の動作モードと現在実行しているタスクの特性とを定めるものである。制御レジスタ２３５（ａ〜ｅ）には、システムレベルの動作を制御するためのさまざまなフラグとデータフィールドが格納されている。具体的には、ＣＲ０レジスタ２３５ａには、プロセッサ１０５の動作モードと状態とを制御するシステム制御フラグが格納されている。ＣＲ１レジスタ２３５ｂは予約済みである。ＣＲ２レジスタ２３５ｃにはページ・フォルトリニアアドレスが含まれる。ＣＲ３レジスタ２３５ｄは、ページ・ディレクトリベースレジスタと呼ばれることも多く、ページディレクトリ２５０のベースの物理アドレスと２つのフラグとを含む。これらの２つのフラグは、プロセッサ１０５の内部データキャッシュ（図示せず）でのページディレクトリ２５０のキャッシングを制御する。ＣＲ４レジスタ２３５ｅには、アーキテクチャのいくつかの拡張機能をイネーブルにする一連のフラグが格納されている。
【００２６】
プロセッサ１０５のｘ８６アーキテクチャは、メモリ１１５の直接的な物理アドレス指定（図１参照）または（ページングによる）仮想メモリをサポートすることができる。物理アドレスの使用時には、リニアアドレスは物理アドレスとして扱われる。ページングの使用時には、コードセグメント、データセグメント、スタックセグメント、システムセグメントを実質的にすべて、さらにはＧＤＴ２１０およびＩＤＴ２１５をページングすることができる。
【００２７】
物理メモリ１１５内のページの位置は、４つまでのタイプまたはレベルのシステムデータ構造に含まれる。ページングデータのベース物理アドレスは制御レジスタＣＲ３  ２３５ｄに格納されている。ページングを行うには、リニアアドレスを複数の部分に分割し、それぞれのページングテーブルとページフレーム２６０とに別個のオフセットを与えるようにする。図２に示す代表的な一実施形態では２レベルからなるシステムデータ構造について説明する。ページディレクトリ２５０のエントリには、ページテーブル２５５のベースの物理アドレス、アクセス権、メモリ管理情報が格納されている。ページテーブル２５５のエントリには、ページフレームの物理アドレス、アクセス権、メモリ管理情報が格納されている。ページディレクトリ２５０のベース物理アドレスは制御レジスタＣＲ３  ２３５ｄに格納されている。図２に示すページングのための代表的な実施形態では、リニアアドレスを３つの部分に分割し、ページディレクトリ２５０、ページテーブル２５５、ページフレーム２６０に別個のオフセットを与えるようにしている。
【００２８】
本発明によれば、ＳＰＣは一連の「スーパー特権」命令を含む。これらの命令については、これに対するアクセス権のあるプログラムを呼ぶことで実行できる。本願明細書では、「プログラム」という用語を、プロシージャ、機能、ルーチンなどのコードのブロックまたは論理ユニットを示す一般的な用語として用いる。したがって、たとえば「プログラム」がオペレーティングシステムのこともあれば他のアプリケーションのこともある。選択されたＳＰＣ命令に対するアクセスを制限すれば、このようにしない限り既存のシステムでは得られない一定レベルのセキュリティをコンピュータシステム１００に付加することができる。すなわち、本発明が誕生したことで、０の特権レベルで動作するプログラム（オペレーティングシステム、関連のデバイスドライバなど）がシステム１００のリソースに対するアクセス権を自動的に得ることはなくなる。代わりに、詳細については後述するように、本発明のＳＰＣでは０の特権レベルで動作する異なるプログラムに違った特権を選択的に与えることができる。
【００２９】
図３は、代表的な「スーパー特権」命令３３０と、これらの命令を呼び出す権限のあるプログラムに与えられる関連のアクセス権３２５とのリストを示している。たとえば、エントリ３５０には、オペレーティングシステムだけがＣＲ３レジスタ２３５ｄにアクセスする権限を持つとある。したがって、オペレーティングシステムがＣＲ３レジスタ２３５ｄにアクセスしようとすればＳＰＣはこのアクセスを完了させるが、ＯＳ以外のプログラムからのＣＲ３レジスタ２３５ｄへのアクセス要求は拒否される。ＳＰＣが選択されたプログラムにスーパー特権命令３３０を実行させる機構の詳細については、図４を参照して後述する。
【００３０】
図３に示すアクセス権は例示目的に限ったものである点に注意されたい。アクセス権３２５ならびに選択された特権命令３３０は実施例に固有のものであり得るため、実施例ごとに異なる場合があることは当業者であれば分かるであろう。エントリ３６０にはＯＳとこれに関連したデバイスドライバがＧＤＴ２１０に対するアクセス権を持つことが示されており、一方、エントリ３６５は０の特権レベルで動作するアプリケーションであれば何であってもＩＤＴＲ２３０へのアクセス権があることを示している。エントリ３７０には、ＯＳおよびデバイスドライバがタスクレジスタ２４０に対するアクセス権を持つことが示されている。
【００３１】
図４は図１のコンピュータシステム１００で利用できる方法を示している。図４の方法は、コンピュータシステム１００の起動時にＳＰＣを初期化するブロック４１０で開始される。初期化の際、ＳＰＣはプロセッサ１０５の第１および第２のレジスタ１６２、１６４に書き込みを行って、ＳＰＣを格納するための保護されたメモリ領域を定義する。別の実施形態では、２つのレジスタ１６２、１６４ではなく１つのレジスタを使って保護されたメモリ領域を定義可能な点に注意されたい。すなわち、１つのレジスタを利用してメモリ領域の開始アドレスを特定することができ、あらかじめ選択されたオフセット値を利用してＳＰＣが格納されるメモリ領域の終了アドレスを定義することができる。
【００３２】
２つのレジスタ１６２、１６４は、一度書き込まれると保護されたメモリ領域を定義し、ここにＳＰＣが常駐する。保護されたメモリ領域は、メモリ１１５、ＲＯＭ１６０、あるいはそこからＳＰＣを実行できる他の何らかの記憶領域に定義できるものである。メモリ１１５内のメモリ領域をポイントするようにレジスタをプログラムする場合は、ＳＰＣは２つのレジスタ１６２、１６４によって定義される保護されたメモリ領域に自己をコピーし、この場所でＳＰＣは他のあらゆるプログラムから遮蔽される。別の実施形態では、ＳＰＣは、２つのレジスタ１６２、１６４をプログラムし、単純にＳＰＣが最初に常駐している場所であるＲＯＭ１６０をポイントすることができる。この場合、ＳＰＣはその後ＲＯＭ１６０から直接的に実行できるが、性能速度を高めるのであればメモリ１１５からＳＰＣを実行すると望ましいことがある。
【００３３】
ブロック４２０でプログラム（オペレーティングシステムなど）から命令を実行しようとすると、ブロック４３０ではこの命令がＳＰＣの一部である選択された特権命令のうちのひとつ（図３の３３０参照）であるか否かがプロセッサ１０５によって判断される。命令が特権命令３３０のひとつではない場合は、プロセッサ１０５はブロック４３５でこの命令を完了できるようにする。しかしながら、プログラムが実行している命令が特権命令３３０のひとつであれば、プロセッサ１０５はブロック４４０で例外を生成する。ブロック４５０では、プロセッサ１０５によって生成された例外をＳＰＣで捕捉する。
【００３４】
ブロック４６０では、特権命令を実行しようとしているプログラムがしかるべきアクセス権を持っているか否かをＳＰＣで判断する。呼び出し元のプログラムに対するアクセス権については、たとえば図３に示すようにプログラムごとに付与するようにできる。呼び出し元のプログラムを特定するために、一実施形態において、ＳＰＣは呼び出し元のプログラムのアドレスに基づいてスタックを参照する。あるいは、ＳｏｆｔＩＣＥなどの誰にでも手に入るデバッガを利用して、呼び出し元のプログラムの位置を検証してもよい。この特権命令の実行権限のあるプログラムが呼び出し元である場合、ＳＰＣはブロック４６５で特権命令を実行する。
【００３５】
ＳＰＣは、おそらく呼び出し元のプログラムのインストール時にインストールされたプログラムのシグネチャに基づいて呼び出し元のプログラムを検証することができる。たとえば呼び出し元のプログラムがオペレーティングシステムであるとすると、このオペレーティングシステムのシグネチャは、おそらくインストール時に生成されたもので、後でこれをオペレーティングシステムからの呼び出しの検証に利用することができる。
【００３６】
ブロック４６０において呼び出し元のプログラムが特権命令に対するアクセス権を持たないものであるとＳＰＣが判断すると、ブロック４７０ではこの要求が拒否される。特権命令へのアクセスを拒否できる理由はいくつかある。まず、呼び出し元のプログラムが特権命令へのアクセス権を持たない場合、その特権命令を実行しようとする呼び出し元のプログラムからの要求を拒絶できる。次に、呼び出し元のプログラムの信憑性をＳＰＣで確認できない場合に、特権命令へのアクセスを拒絶できる。すなわち、呼び出し元のプログラムがその特権命令を呼び出すアクセス権を持っているとしても、このプログラムが（呼び出し元のプログラムになりすましている悪意のあるコードとの対比で）特権命令を実行しようとしている本当に権限のある呼び出し元のプログラムであることをＳＰＣがスタックを使って確認できなければ、その要求を拒否できる。
【００３７】
図４の方法をさらに分かりやすく示すために、ここでひとつの例をあげておく。一例として、ブロック４２０でオペレーティングシステムがＣＲ３レジスタ２３５ｄを書き換えようとしていると仮定する。さらに、同じく一例として、ＳＰＣには図３の特権命令３３０が含まれると仮定し、図３に列挙されたプログラムが特権命令３３０に対するアクセス権３２５を持つものと仮定する。ブロック４３０ではＣＲ３レジスタ２３５ｄへのアクセスが特権命令であるか否かをプロセッサ１０５で判断する。図３によれば特権命令であるため、プロセッサ１０５はブロック４４０で例外を生成する。ブロック４５０では、ブロック４４０でプロセッサ１０５が生成した例外をＳＰＣで捕捉する。
【００３８】
次にＳＰＣは、ＣＲ３レジスタ２３５ｄを書き換えるアクセス権がオペレーティングシステム（すなわち呼び出し元のプログラム）にあるか否かをブロック４６０で判断する。ＣＲ３レジスタ２３５ｄの書き換えを認める前に、ＳＰＣではまずＣＲ３レジスタ２３５ｄを書き換えたいという最初の要求が本当にこのオペレーティングシステムからのものであることを確認しようとする。オペレーティングシステムの要求を認証するひとつの方法に、スタックを参照するやり方がある。スタックからのアドレスでこれが本当にＣＲ３レジスタ３２５ｄの書き換え要求を出したオペレーティングシステムであることが確認されると、ブロック４６５において、ＳＰＣは命令を実行してＣＲ３レジスタ２３５ｄを書き換える。ＳＰＣが命令を実行してＣＲ３レジスタ２３５ｄを書き換えれば、この要求は特権命令を変更する権限のあるＳＰＣからのものであるためプロセッサ１０５は例外を生成することなくこの要求を完了することになる。
【００３９】
本発明によれば、プロセッサ１０５はメモリの物理アドレスに基づいて読み出し／書き込み保護テーブルを管理する。代表的な読み出し／書き込み保護テーブル５１０を図５に示す。スーパー特権コードは、保護テーブル５１０のメモリアドレスに関連した読み出しおよび書き込み保護インジケータを更新する。一実施形態では、保護テーブル５１０を読み出し／書き込み保護ビットマップとすることができる。
【００４０】
図５は、メモリ１１５の各物理アドレス位置５１５に、読み出しフィールド５２０と書き込みフィールド５３０とアクセスフィールド５４０とを含む状態を示しているが、他の実施形態では実施例によってフィールドの数を増減してもよいことは当業者であれば理解できよう。読み出しフィールド５２０は、それぞれのメモリアドレス５１５が読み出し可であるか不可であるかを示すものであり、書き込みフィールド５３０はそれぞれのメモリ位置５１５が書き込み可であるか不可であるかを示すものである。アクセスフィールド５４０は、それぞれのメモリ位置５１５にアクセスする権限のあるプログラムを特定するためのものである。たとえば、メモリ位置１０００〜１００３にはオペレーティングシステムだけがアクセスすることができる。図５には各メモリ位置５１５がそれぞれそのメモリ位置５１５に関連した読み出しフィールド５２０と書き込みフィールド５３０とアクセスフィールド５４０とを持つ形で示してあるが、本願明細書ではこのようなフィールドを個々のメモリ位置にではなくメモリ位置のブロックに関連付けることのできる形も企図している。
【００４１】
図６に示す方法をシステム１００（図１参照）で利用して、メモリ１１５の選択した領域を保護することができる。図６の方法は、保護対象となるデータまたは情報の選択された部分をプログラム（オペレーティングシステム、デバイスドライバなど）で指定するブロック６１０で開始される。一例において、オペレーティングシステム（すなわちプログラム）はＩＤＴ２２５が格納されているメモリの領域を保護が必要なものであるとして特定することができる。ＩＤＴ２２５を保護するにあたって、オペレーティングシステムは、求められている保護のタイプに応じて、ＩＤＴ２２５が格納されている関連のメモリ位置５１５を、読み出し不可、書き込み不可またはその両方としてマークするようＳＰＣに要求する。
【００４２】
ブロック６２０では、ＳＰＣは、プログラムによる保護が求められているデータまたは情報が格納されているメモリ１１５の領域に対応する保護テーブル５１０（図５参照）を更新する。すなわちＳＰＣはメモリ領域に読み出し不可、書き込み不可、あるいはその両方としてマークを付ける。一実施形態では、ＳＰＣだけが保護テーブル５１０の書き換えを認められているため、ウイルスなどの権限のないプログラムがメモリ１１５の保護された領域へのアクセス権を得てしまうのを防止できる。別の実施形態では、ＳＰＣは、保護されたメモリ領域へのアクセス権のあるプログラムに対して保護テーブル５１０を直接書き換えることを許可する。たとえば、図５では、オペレーティングシステムにはメモリ位置１０００〜１００３へのアクセス権があるため、ＳＰＣはオペレーティングシステムにこれらの位置５１５についての読み出しおよび書き込みのアクセス権の変更を許可する。ＳＰＣは、上述したようにスタックを利用して、これが（悪意のある何らかのプログラムとの対比で）本当に保護テーブルの書き換えを求めているオペレーティングシステムであることを確認することができる。
【００４３】
ブロック６３０ではプログラムが保護されたメモリ位置５１５へのアクセスを要求し、ブロック６４０では、このプログラムが保護されたメモリ位置５１５へのアクセス権を持つか否かをＳＰＣで判断する。メモリ位置が読み出し不可かつ書き込み不可である場合は、呼び出し元のプログラムはその保護されたメモリ位置５１５の中身に対して書き込みも読み出しも行うことはできない。こうした読み出し保護によって、悪意のあるプログラムがエイリアスのページテーブルエントリを作成して保護されたメモリ位置５１５をマッピングしようとした場合であっても、このプログラムから保護されたメモリへのアクセスは防止される。
【００４４】
ブロック６４０において呼び出し元のプログラムには保護されたメモリへのアクセス権がないとＳＰＣが判断すると、ＳＰＣはブロック６４０においてその要求を拒否する。ブロック６４０で呼び出し元のプログラムにアクセス権があるとＳＰＣが判断した場合は、ＳＰＣはそのアクセスを完了させる。一実施形態におけるアクセス権については図５に示すようにして定義すればよい。
【００４５】
本発明では、メモリ位置５１５あるいはメモリ領域にアクセス権を割り当てることで、権限のないメモリアクセスを防止することができる。このため、プログラムでエイリアスのページテーブルを作成し、関連したメモリを書き込み可であるとマークすることによって、既存のセキュリティ機構を欺くのはもはや簡単ではなくなる。アクセスを物理的なレベルで制御すれば、保護されたメモリ位置に仮想のページをマッピングし、そのエイリアスのページテーブルエントリで保護されたメモリが書き込み可であると示すような行為をプログラムで行うことで権限なくアクセスできてしまうのを、本発明によって困難にすることができる。
【００４６】
ＩＤＴ、ＧＤＴ、ＬＤＴなどのさまざまなテーブルを本発明で保護することができる。また、暗号化キーなどの他の特徴を本発明で保護することもできる。
【００４７】
本願明細書に記載の発明の概念から逸脱することなく上記にて例示した内容をさまざまに変更し得ることは本願の開示内容を利用できる当業者であれば理解できよう。したがって、本発明の排他的な権利を定義することになるのは上記の単なる例示ではなく添付の特許請求の範囲である。
【図面の簡単な説明】
【００４８】
【図１】本発明によるコンピュータシステムの実施形態のブロック図を示している。
【図２】図１のコンピュータシステムで利用できるプロセッサの一実施形態を示している。
【図３】図１のコンピュータシステムで特権を与えることのできる代表的な命令の一覧を示している。
【図４】図１のコンピュータシステムで利用できる、本発明による方法を示している。
【図５】図１のコンピュータシステムにおけるメモリの選択されたメモリ位置を保護するための代表的なテーブルを示している。
【図６】図１のコンピュータシステムで利用できる、本発明による方法を示している。
【図１】
2004530979.tif 000003
【図２】
2004530979.tif 000004
【図３】
2004530979.tif 000005
【図４】
2004530979.tif 000006
【図５】
2004530979.tif 000007
【図６】
2004530979.tif 000008
【国際公開パンフレット】
2004530979.tif 000009
2004530979.tif 000010
2004530979.tif 000011
2004530979.tif 000012
2004530979.tif 000013
2004530979.tif 000014
2004530979.tif 000015
2004530979.tif 000016
2004530979.tif 000017
2004530979.tif 000018
2004530979.tif 000019
2004530979.tif 000020
2004530979.tif 000021
2004530979.tif 000022
2004530979.tif 000023
2004530979.tif 000024
2004530979.tif 000025
2004530979.tif 000026
【国際公開パンフレット（コレクトバージョン）】
2004530979.tif 000027
2004530979.tif 000028
【手続補正書】
【提出日】平成15年9月1日(2003.9.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのコンピュータ命令を特権命令として定義する処理と、
保護対象となる情報を特定する処理と、
情報が格納されたメモリ（１１５）の少なくとも１つの物理アドレスに少なくとも読み出しアクセス権を割り当てる処理と、
割り当てられたアクセス権に基づいて、特権命令を利用して前記情報へのアクセスを制御する処理とを含み、さらに
特権メモリ領域を定義すべく少なくとも１つのレジスタ（１６２、１６４）に書き込む処理を含み、前記特権命令が前記特権メモリ領域に常駐していることを特徴とする、コンピュータシステム（１００）においてセキュリティを提供するための方法。
【請求項２】
前記情報が格納されたメモリの少なくとも１つの物理アドレスに少なくとも書き込みアクセス権を割り当てる処理をさらに含む、請求項１記載の方法。
【請求項３】
前記メモリ（１１５）の少なくとも１つの物理アドレスに割り当てる処理が、
前記メモリ（１１５）の１つ以上の物理アドレスについて少なくとも１つのエントリを有するテーブルを生成する処理と、
テーブルのエントリにおいて、メモリ（１１５）の物理アドレスに関連したアクセス権を示す処理とを含む、請求項２記載の方法。
【請求項４】
少なくとも１つの物理アドレスに保護対象となる情報が格納され、読み出しアクセス権が割り当てられたメモリ（１１５）と、
前記メモリと通信可能な状態で接続されたプロセッサ（１０５）であって、
少なくとも１つのコンピュータ命令を特権命令として定義し、
割り当てられたアクセス権に基づいて、前記特権命令を利用して前記情報へのアクセスを制御することができるプロセッサ（１０５）とを含み、
前記特権命令が前記メモリ（１１５）の特権領域に常駐し、
前記メモリ（１１５）の前記特権領域が少なくとも１つのレジスタ（１６２、１６４）によって定義されるものである、セキュリティを提供するための装置。
【請求項５】
前記プロセッサ（１０５）が、
前記メモリ（１１５）の一部の物理アドレスに関連した１つ以上のエントリを有するテーブルを生成し、
前記エントリにおいて、前記メモリ（１１５）の一部に格納された前記情報に対する読み出しアクセス権および書き込みアクセス権のうちの少なくとも一方を示すことができる、請求項４に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
本発明は、上記にて述べた１つ以上の問題による影響を排除または少なくとも軽減することを目的とするものである。
コンピュータのセキュリティを得るためにさまざまなシステムが考案されている。特に、ｘ８６プロセッサでの細粒度保護ドメインにシステムを適用した例が、品川高廣ら、「Ｅｘｐｌｏｉｔｉｎｇ  ｓｅｇｍｅｎｔａｔｉｏｎ  ｍｅｃｈａｎｉｓｍ  ｆｏｒ  ｐｒｏｔｅｃｔｉｎｇ  ａｇａｉｎｓｔ  ｍａｌｉｃｉｏｕｓ  ｍｏｂｉｌｅ  ｃｏｄｅ」、Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ、ＴＲ００−０２、［オンライン］、２０００年５月１７日、第１〜１６頁（ＸＰ００２２４２９３７）に記載されている。このシステムでは、多重保護ページテーブルを利用して、メモリの各ページに対するプログラムコード（保護ドメイン）の各セクションのアクセス権を定義する。ページテーブルは、メモリの他の領域と同じようにして保護されるポリシーモジュールによって生成される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
本願明細書に記載の発明の概念から逸脱することなく上記にて例示した内容をさまざまに変更し得ることは本願の開示内容を利用できる当業者であれば理解できよう。したがって、本発明を定義するのは添付の特許請求の範囲である。




【国際調査報告】
2004530979.tif 000029
2004530979.tif 000030
2004530979.tif 000031
2004530979.tif 000032