JP2004537786A - オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム - Google Patents
オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム Download PDFInfo
- Publication number
- JP2004537786A JP2004537786A JP2003504201A JP2003504201A JP2004537786A JP 2004537786 A JP2004537786 A JP 2004537786A JP 2003504201 A JP2003504201 A JP 2003504201A JP 2003504201 A JP2003504201 A JP 2003504201A JP 2004537786 A JP2004537786 A JP 2004537786A
- Authority
- JP
- Japan
- Prior art keywords
- secure
- hardware
- services
- software
- platform
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
Abstract
【解決手段】このインタフェースは、少なくとも4つの特権レベルと、非特権命令と、非特権レジスタと、特権命令と、特権レジスタと、ファームウェアインタフェースとを提供するハードウェアプラットフォームを使用する。このインタフェースは、すべての特権命令、特権レジスタ、およびファームウェアインタフェースを、オペレーティングシステムおよびカスタム制御プログラムによる直接アクセスから隠蔽し、一組の呼び出し可能なソフトウェアサービスだけでなく、ハードウェアプラットフォームによって提供される非特権命令および非特権レジスタをオペレーティングシステムおよびカスタム制御プログラムに提供する。
Description
【0001】
本発明は、コンピュータアーキテクチャ、オペレーティングシステム、コンピュータシステムセキュリティに関し、特に、安全なメモリ管理と、ディスパッチ可能オブジェクトのディスパッチと、例外処理と、インタラプト処理と、デバッグおよび性能監視と、暗号サービスと、安全なリポジトリサービスとを、オペレーティングシステムおよびカスタマイズされた制御プログラムに提供する安全なマシンおよび安全なマシンインタフェースに関する。
【0002】
[相互参照]
この出願は、いずれも2001年6月8日に出願された係属中の米国仮出願第60/296,958号、第60/296,957号、および第60/297,175号の出願日の利益を主張する。
【背景技術】
【0003】
[発明の背景]
コンピュータセキュリティは、大学のコンピュータ機関、政府のコンピュータ機関、および民間のコンピュータ機関で熱心に研究される極めて重要な研究分野となっている。
コンピュータシステムの製造者およびユーザは、長年、コンピュータシステム内の記憶データ、処理リソース、および他の計算リソースへのアクセスを制御する安全なコンピュータシステムを提供するように試みてきたが、コンピュータ製造者およびユーザのこの相当な努力は、まだ、安全なコンピュータシステムの作成には成功していない。
多くの悪名高いコンピュータシステムセキュリティ侵害が、過去数年に広く公表されている。
これらのコンピュータシステムセキュリティ侵害には、ATMシステムおよび金融機関内のコンピュータシステムからの現金の窃盗、政府のコンピュータシステム、商用のコンピュータシステム、および個人のコンピュータシステムからの極秘文書および情報ならびに秘密文書および秘密情報の取得、電子メールおよび他のインターネット関連サービスを通じた多くの極めて犠牲が大きくかつ損害を与えるコンピュータウィルスの蔓延、ならびに他の多くの深刻なセキュリティ侵害が含まれる。
【0004】
今日まで、商用のコンピュータシステムのコンピュータセキュリティの問題は、大部分は受身の体制で対処されてきた。
一般に、セキュリティの問題は、潜在的なセキュリティ侵害を含む新しい市販のコンピュータシステムの製造後に認識され、幾分場当たり的な設計後の方法論を通じて対処される。
セキュリティ技法は、一般に、基礎を成すコンピュータ技術およびリソースの発展の結果として発展する。
既存のシステムにおいて、さまざまなセキュリティの問題を認識して、パッチすることができるが、潜在的な多くのさらなるセキュリティの問題は、多くの場合認識されないままであり、不注意のエラーおよび偶然のエラーを通じて、またはより一般的には、悪意のあるユーザおよびコンピュータエンティティによるコンピュータシステムセキュリティ機能の体系的な究明を通じて、後に発見されるために供されている。
【0005】
後述する本発明は、オペレーティングシステムと、オペレーティングシステムおよびコンピュータシステムのセキュリティとに関する。
この議論を円滑にし、さらに背景の議論を円滑にするために、まず、コンピュータハードウェアアーキテクチャおよびオペレーティングシステムの簡潔な概要を以下に提供する。
【0006】
図1は、汎用コンピュータシステム内のハードウェアレイヤ、オペレーティングシステムレイヤ、およびアプリケーションプログラムレイヤを示すブロック図である。
コンピュータシステム100は、ハードウェアレイヤ102と、オペレーティングシステムレイヤ104と、アプリケーションプログラミングレイヤ106とを備えると考えることができる。
コンピュータシステムは、多くの付加的なコンポーネント、サブレイヤ、および論理エンティティと相互関係を有し、かなり複雑であるが、図1に示す3つのレイヤの階層は、コンピュータソフトウェア業界およびコンピュータハードウェア業界内で共通に使用されるコンピュータシステムの論理ビューを表す。
【0007】
ハードウェアレイヤ102は、コンピュータシステムの物理コンポーネントを備える。
これらの物理コンポーネントは、多くのコンピュータシステムでは、プロセッサ108、メモリストレージコンポーネント110、112、および114、内部バスおよび信号線116〜119、バス相互接続デバイス120および122、ならびにさまざまなマイクロプロセッサに基づく周辺インタフェースカード124〜129を含む。
プロセッサ108は、命令実行デバイスであり、内部メモリコンポーネント110、112、および114から当該プロセッサが取得した命令のストリームを実行する。
プロセッサは、レジスタ130と呼ばれる高速アクセスが可能な少数のメモリストレージコンポーネントを含む。
その上、現代のプロセッサは、比較的少ない量の記憶された命令も含むことができる。
一般に、データおよび命令は、内部バス116および117とバス相互接続デバイス120とを介して、読み出し専用メモリ(「ROM」)コンポーネント110から読み出され、また、メモリコンポーネント112および114から読み出され、当該メモリコンポーネント112および114に書き込まれる。
さらに大きなデータ記憶容量は、例えば、ディスクドライブ、CD−ROMドライブ、DVDドライブなどの周辺データ記憶デバイス、および他の、内部バス116、118、および119と、相互接続デバイス120および122と、周辺機器相互接続カード124〜129の1つまたは2つ以上のものとを介して、プロセッサによりアクセスされるコンポーネントに存在する。
例えば、大きなプログラムの記憶された命令は、プログラムの実行中に、必要に応じて検索され、内部メモリコンポーネント112および114に記憶されるようにディスクドライブ上に存在することがある。
より高機能なコンピュータは、それに相応して、より複雑な内部バス相互接続および追加されたコンポーネントと共に複数のプロセッサを含むことがある。
【0008】
オペレーティングシステムレイヤ104は、さまざまなソフトウェアルーチンを備えた論理レイヤである。
このさまざまなソフトウェアルーチンは、プロセッサ108または一組のプロセッサのうちの1つまたは2つ以上のプロセッサ上で実行され、コンピュータシステムの物理コンポーネントを管理する。
コンピュータオペレーティングシステムは、一般に、コンピュータシステムの最下位レベルのソフトウェアレイヤと考えられており、結合されたハードウェア/ソフトウェア環境を作成するように機能する。
この環境では、アプリケーションプログラムを含むユーザプログラムが実行でき、ユーザが、さまざまな入出力(I/O)デバイスを通じてコンピュータシステムのサービスをインタラクティブに使用することがサポートされる。
【0009】
従来のコンピュータシステムのオペレーティングシステムのルーチンは、ユーザレベルのアプリケーションプログラムよりも高い優先度で実行される。
そして、これらのルーチンは、多くのアプリケーションプログラムの同時並行した実行を調整し、各アプリケーションプログラムに実行時環境を提供する。
このランタイム環境は、プロセッサ時間と、アプリケーションプログラムに提供されるアドレス空間によってアドレス指定されるメモリの少なくとも1つの領域と、さまざまなデータ入力サービスおよびデータ出力サービスを含む。
これらのデータ入力サービスおよびデータ出力サービスには、メモリコンポーネントへのアクセスと、周辺機器へのアクセスと、通信媒体へのアクセスと、他の内部デバイスおよび外部デバイスへのアクセスとが含まれる。
【0010】
現在実行中の各プログラムは、プロセスと、さまざまな状態変数によって定義される論理エンティティと、オペレーティングシステムによって管理されるデータ構造体との関連で実行される。
オペレーティングシステムによって管理される1つの重要な内部データ構造体は、1つまたは2つ以上のプロセスキュー132である。
このプロセスキュー132は、現在アクティブな各プロセスに対して、プロセス制御ブロックまたは同様のデータ構造体を含む。
このプロセス制御ブロックまたは同様のデータ構造体は、オペレーティングシステムによって管理される現在アクティブなプロセスの状態を定義するデータを記憶するものである。
オペレーティングシステム104は、各同時並行プログラムに対して、そのプログラムが、コンピュータハードウェア102を連続的に使用しているという錯覚を与える。
しかし、実際には、オペレーティングシステム104は、いかなる瞬間においても、1つのプロセッサにつき、せいぜい1つのプログラムしか実行しておらず、現在アクティブなさまざまなプログラム間の実行を高速に切り換え、プログラムの実行の再起動に先立ってそのプログラムのコンテクストを復元し、かつ、プログラムがアイドル状態になり、別のプログラムが実行可能になると、プログラムのコンテクストをメモリに記憶する。
また、オペレーティングシステム104は、実行中のプログラムに、幾分一般化した論理インタフェースも提供する。
この論理インタフェースを通じて、実行中のプログラムは、多くのタイプのリモートコンピュータリソースおよびローカルコンピュータリソースにアクセスしてこれらを使用することができる。
これらのコンピュータリソースには、物理メモリ、マスストレージデバイス、通信ネットワーク、I/Oデバイス、および他のリソースが含まれる。
【0011】
アプリケーションプログラミングおよびユーザインタフェースレイヤ106は、ユーザが見ることができるコンピュータシステムのレイヤである。
アプリケーションプログラムは、メモリ領域内に記憶された一組の命令およびデータ134と、オペレーティングシステムのインタフェースを通じてアプリケーションプログラムによりアクセスされるリソース136〜142とを備える。
メモリ領域内に記憶された一組の命令およびデータは、アプリケーションプログラムを実行するプロセスに対してオペレーティングシステムにより提供されるアドレス空間内でアドレス指定されている。
リソース136〜142は、アプリケーションプログラムが、外部デバイスおよびデータベース管理システムにデータを記憶すること、外部デバイスおよびデータベース管理システムからデータを検索すること、内部クロックの値およびシステム環境設定情報などのシステム情報を取得すること、および付加的なサービスにアクセスすることを可能にする。
このメモリ領域およびリソースは、ハードウェアメモリ、データ記憶装置、通信手段、および他のコンポーネント内に実装され、図1では、論理的な意味で、アプリケーションプログラミングおよびユーザインタフェースレイヤ106内に示される。
【0012】
初期のコンピュータシステムには、オペレーティングシステムは存在しなかった。
図2は、初期のコンピュータシステムを示すブロック図である。
単一のアプリケーションプログラム202は、簡単なハードウェアインタフェース206を介してコンピュータシステムハードウェア204とインタフェースされて、コンピュータシステムハードウェア204上で直接実行される。
ハードウェアインタフェース206は、コンピュータシステムハードウェアによって提供される機械語命令およびレジスタを含む。
アプリケーションプログラムは、紙テープまたは穿孔された一組のカードとしてマシンにロードされ、実行時にアプリケーションプログラムによって必要とされるルーチンを提供するさまざまな計算ライブラリおよびI/Oライブラリをコード化した一組の紙テープまたは穿孔されたカードもともマシンにロードされる。
初期のマシンでは、1つのアプリケーションプログラムは、ロードされ、完了するまで実行される。
アプリケーションプログラムの実行のスケジューリングは、人間のシステム管理者が、アプリケーションプログラムをコード化した紙テープまたは穿孔されたカードを棚またはトレイに物理的に並べて、アプリケーションプログラムに割り当てられた優先度に従って、先入れ先実行の順序により手動で再配列することによって実行される。
【0013】
オペレーティングシステムは、アプリケーションプログラムのロードおよび実行に関連したシステム管理を自動化したいという願望と、多くのユーザにコンピュータシステムの同時並行使用およびインタラクティブな使用を可能にする必要性とから生まれた。
オペレーティングシステムは、例えばIBM System/360シリーズなどのメインフレームコンピュータシステム用に開発された。
図3は、初期のメインフレームコンピュータ内のオペレーティングシステムの論理的配置を示すブロック図である。
オペレーティングシステムの最も特権を有する部分は、通常、カーネル302と呼ばれ、ハードウェアインタフェースを通じてコンピュータハードウェア304とインタフェースする。
カーネル302には、非特権命令および特権命令と、非特権レジスタおよび特権レジスタと、ハードウェア割り込みメカニズムとが含まれる。
レジスタおよび命令は、オペレーティングシステムの所定のマシン機能を予約して高レベルのアプリケーションプログラムがその機能にアクセスすることを防止するために、特権の組と非特権の組とに分割される。
例えば、実行中のプログラムの実行優先度の設定に関与するレジスタは、一般に特権を有し、これにより、アプリケーションプログラムが、オペレーティングシステムのスケジューリングおよびアプリケーションプログラムの優先順位を妨げたり破損したりすることが防止される。
オペレーティングシステムは、特権命令および非特権命令の双方と、特権レジスタおよび非特権レジスタの双方と、ハードウェア割り込みメカニズムへのフルアクセスを有するが、非特権命令および非特権レジスタのみを、オペレーティングシステムインタフェース308を介してアプリケーションプログラムに公開する(expose)。
非特権命令に加えて、オペレーティングシステムインタフェースは、多くの種々のオペレーティングシステムサービスルーチンを提供する。
例えば、アプリケーションプログラム300がオペレーティングシステムインタフェース上で実行される場合に、アプリケーションプログラム300は、オペレーティングシステムがなかった初期のコンピュータシステムの場合のように、I/Oライブラリと共にパッケージ化される必要はないが、オペレーティングシステム302によって提供されるI/Oサービスルーチンを介してI/Oデバイスにアクセスすることができる。
【0014】
現代のパーソナルコンピュータ(「PC」)システムでは、オペレーティングシステムは、システム内のほぼ等しい論理的配置に存在する。
図4は、現代のPCのアプリケーションレイヤ、オペレーティングシステムレイヤ、およびハードウェアレイヤのブロック図である。
しかし、PCハードウェア404とオペレーティングシステム406との間のインタフェース402は、新しいファームウェアサービスインタフェースを含む。
このファームウェアサービスインタフェースは、オプションとして、部分的に、アプリケーションプログラムに公開されることがある。
ファームウェアインタフェースは、表示機能を含むハードウェア機能の制御を提供するさまざまなファームウェアルーチンを含む。
【0015】
現代のオペレーティングシステムの内部では、ハードウェア特権レベルが使用されて、オペレーティングシステムと、他のルーチンおよびプログラムとの間でリソースが分割される。
図5A〜図5Dは、汎用コンピュータハードウェアシステムの基本的な特権レベルのメカニズムおよび機能を示している。
いかなる時間においても、実行されるプログラムは、現在の特権レベルと関連付けられる。
この特権レベルは、プロセッサステータスレジスタ504内のビットフィールド502に保持される。
このプロセッサステータスレジスタは、プロセッサの基本的状態を制御し、かつ反映する。
現在の多くのコンピュータシステムは、特権および非特権の2つの特権レベルのみを使用する。
したがって、特権レベルのビットフィールドには、現在の特権レベルを制御するのに、1ビットのみが必要とされる。
現代のコンピュータシステムは、数年前のシステムも同様であるが、3つ以上の特権レベルを使用する。
一般に、特権レベルのビットフィールド内のnビットにより、通常、特権レベルの中で最も高い特権を有する特権レベル0から特権レベル2n−1までの2n個の別々の特権レベルが可能になる。
コンピュータシステム内のリソースは、一般に、1つまたは2つ以上の特権レベルで実行されるプロセスにのみアクセス可能なリソースの組に分割される。
例えば、図5Bに示すように、多くの共通のマシンアーキテクチャは、命令セット506を、非特権命令508の組と特権命令510の組とに分割する。
非特権命令は、あらゆる特権レベルで実行されるプロセスにアクセス可能であるのに対して、特権命令は、特権レベル0で実行されるプロセスにのみアクセス可能である。
一般に、オペレーティングシステムのカーネルルーチンは、特権レベル0で実行され、正しく構成されている場合には、特権命令の組を独占的に使用することができ、これにより、アプリケーションレベルのプロセス生成の実行と、そのプロセスの実行と、そのプロセスのスケジューリングとを管理する。
さらに、図5Cに示すように、ハードウェアレジスタセット512の全体は、非特権レジスタのセット514と特権レジスタセット516とに分割される。
非特権レジスタは、あらゆる特権レベルで実行されるプロセスにアクセス可能であるのに対して、特権レジスタは、特権レベル0で実行されるプロセスにのみアクセス可能である。
例えば、プロセッサステータスレジスタ504は特権レジスタである。
これにより、カーネルでないコードが、その現在の特権レベルを高くして、カーネルでないコードにアクセスできないように意図されたリソースにアクセスすることが防止される。
【0016】
また、図5Dに示すように、メモリも、特権レベルに関して分割することができる。
通常、メモリ518は、ページ(例えば、メモリページ520)に分割される。
メモリページは、I/O操作、仮想メモリと物理メモリの間のマッピング、および他のタイプのオペレーティングシステムの活動に関するメモリの基本単位である。
多くのシステムでは、各メモリページは、特権レベル表示522は、ページ520と関連付けられるなど、1つまたは2つ以上の特権レベルの表示と関連付けられることがある。
これらの表示は、メモリページ内にタグとして直接組み込まれもよいし、メモリページを記述または参照する補助データ構造体に存在してもよい。
命令セットおよびレジスタは、多くの場合、上述したように、特権レベルに基づく異なる2つのパーティションにのみ分割されるのに対して、特権レベルに関するメモリページの分割は、より複雑となり得る。
例えば、あるページは、特権レベル0〜2で実行されるプロセスにアクセス可能にされることがあり、別のページは、2n個のすべての特権レベルで実行されるプロセスにアクセス可能とされることがあり、それ以外のページは、特権レベル0で実行されるプロセスにのみアクセス可能とされることがある。
【0017】
リソースの分割は、信頼性のある安全なオペレーティングシステムの設計に使用される基本的な技法であるが、それだけでは、十分ではない。
ハードウェアレベルの特権に基づく分割を通じてだけでは対処できないセキュリティおよび信頼性の多くの態様が存在する。
図6は、多くの現代のコンピュータシステムに存在するセキュリティおよび信頼性の侵害の一例を示している。
コンピュータシステムの簡略化したブロック図の表現602が、図6に示されている。
通常、オペレーティングシステム供給業者は、ハードウェア供給業者によって提供されるハードウェアレイヤ606上で実行されるオペレーティングシステムレイヤ604を供給する。
多くの現代のコンピュータシステムでは、第三者の供給業者が、周辺ハードウェアI/Oデバイスを提供することができ、この周辺ハードウェアI/Oデバイスが、ハードウェア供給業者またはコンピュータシステムの所有者によってコンピュータシステムハードウェアに組み込まれる。
これらの周辺ハードウェアデバイスは、I/Oドライバとして知られているインタフェースソフトウェアルーチンを必要とする。
I/Oドライバは、インストールされて、オペレーティングシステム内で実行されるか、または、オペレーティングシステムと共に実行される。
例えば、図6では、I/Oドライバ608は、オペレーティングシステムレイヤ604内に存在する。
一般に、I/Oドライバ608は、特権レジスタ、および、アプリケーションレベルのプログラムによってアクセスできることを意図していないメモリリソースとインタフェースするために、最も高い特権レベルで実行される必要がある。
例えば、図6では、メモリリソースのマシン用の部分610が示されている。
メモリのある領域612は、アプリケーションレベルのプログラムによるアクセスを対象としている。
メモリの別の領域614は、オペレーティングシステムルーチンのみによるアクセスを対象としている。
この領域は、例えば、記憶された暗号鍵情報616を含むことがある。
メモリの別の領域618は、I/Oドライバ608およびオペレーティングシステムによる使用を対象とし、I/Oドライバおよびオペレーティングシステムがデータの交換に使用するI/Oバッファを含む。
【0018】
I/Oドライバが、正しく記述され、悪意のコードを含んでいない場合には、I/Oドライバルーチンは、メモリのI/Oバッファ領域618からの読み出し、および、当該領域への書き込みを行うだけであり、メモリ操作を通じて、オペレーティングシステムの妨害もできないし、アプリケーションルーチンの妨害もできない。
しかしながら、ハードウェア供給業者もオペレーティングシステム供給業者も、I/Oドライバの内容を管理しない。
彼らは、認証方法を使用して、I/Oドライバが、特定の第三者の供給業者から入手されたものであると判定することがある。
彼らは、I/Oドライバのインストールに先立ってI/Oドライバをテストすることさえある。
第三者の供給業者の中には、自身のI/Oドライバのソースコードを検査に利用できるようにせず、これにより、オペレーティングシステム供給業者およびハードウェア供給業者がI/Oドライバを独立に検証できる範囲を制限する供給業者がいる。
I/Oドライバは、悪意の目的で挿入されたトロイの木馬コードを含んだり、あるいは、バグを含んだりすることが可能である。
いずれの場合も、I/Oドライバは、I/Oバッファ領域618以外の、I/Oドライバのアクセスが禁止されるように意図されたメモリの部分にアクセスを試みることができる。
現在の多くのコンピュータシステムでは、I/Oドライバが、システム内の任意のメモリ領域の読み出しおよび書き込みを行うことを防止するものは存在しない。
その理由は、I/Oドライバが、一般に、カーネルレベルの特権で実行されるからである。
誤ったプログラムまたは悪意のプログラムが、一旦、カーネルレベルの特権で実行されると、そのプログラムは、オペレーティングシステムに利用可能なリソースのフルセットを使用することができる。
この場合に、例えば、I/Oドライバ内のトロイの木馬ルーチンは、I/Oドライバの動作中に実行を開始し、オペレーティングシステム614に割り当てられたメモリに記憶された暗号鍵616にアクセスし、他のオペレーティングシステムのルーチンおよびハードウェアリソースを使用して、その暗号鍵を遠隔のエンティティにエクスポートすることができる。
【特許文献1】
米国特許第5043878号
【特許文献2】
米国特許第6131165号
【特許文献3】
米国特許第5774652号
【特許文献4】
米国特許第5948064号
【発明の開示】
【発明が解決しようとする課題】
【0019】
図6に示す問題は、現在のコンピュータシステムに起こり得るほとんど無限個のセキュリティ問題のほんの1つにすぎない。
確認されている多くの問題に対して、その問題に関連したシステムの脆弱性を解消または縮小する試みとして、さまざまな対策を設計して、オペレーティングシステムに追加設置することができる。
しかしながら、このような対策は、一般に、たった1つの問題または少数の問題に特有のものであり、非常に多くの別の脆弱性は、検出されない状態にあり、今後のセキュリティ問題の潜在的な原因のままである。
時々、試みた処置が、不完全であるか、または、誤っていることがある。
ある特定の場合には、試みた処置が、それ自体、別の問題の原因となる。
安全なシステムを製造することが望ましいことであることは認識されているにもかかわらず、今日まで、十分に安全で汎用的な商用のコンピュータシステムは、作成されてこなかった。
実際には、コンピュータシステムのセキュリティの一般的な概念は、長年の間、設計努力および開発努力に動機を与えてきたが、コンピュータセキュリティと、コンピュータセキュリティに関連した問題を解決する合理的なアプローチとの明確で包括的な理解は、得難い状態のままであった。
したがって、コンピュータシステムの設計者、製造者、開発者、およびユーザは、コンピュータセキュリティと、安全なコンピュータシステムと、コンピュータセキュリティの方法論との包括的な理解の必要性を認識してきた。
【課題を解決するための手段】
【0020】
[発明の概要]
本発明の一実施の形態は、結合されたハードウェアおよびソフトウェアの安全なプラットフォームと、コンピュータシステム内でオペレーティングシステムおよびカスタマイズされた制御プログラムがインタフェースする、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースとを提供する。
本発明のこの実施の形態は、少なくとも4つの特権レベル、すなわち非特権命令、非特権レジスタ、特権命令、特権レジスタと、ファームウェアインタフェースとを提供するハードウェアプラットフォームを使用する。
結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースは、特権命令と、特権レジスタと、ファームウェアインタフェースとを、オペレーティングシステムおよびカスタマイズされた制御プログラムから隠蔽し、一組の呼び出し可能なソフトウェアサービスだけでなく、ハードウェアプラットフォームによって提供される非特権命令および非特権レジスタをオペレーティングシステムおよびカスタマイズされた制御プログラムに提供する。
呼び出し可能なソフトウェアサービスは、ハードウェアの特権命令および特権レジスタの公開も行わず、特権命令および特権レジスタのシミュレーションも行わないハードウェアリソースの動作制御用の一組の安全なプラットフォーム管理サービスを提供する。
また、この呼び出し可能なサービスは、安全なリポジトリとも呼ばれる一組のセキュリティ管理サービスも提供する。
この一組のセキュリティ管理サービスは、内部で生成された秘密データを使用し、各セキュリティ管理サービスは、内部の秘密データをこのセキュリティ管理サービス自体以外のどの計算エンティティにも公開せずに、この内部の秘密データを管理する。
【発明を実施するための最良の形態】
【0021】
[発明の詳細な説明]
本発明は、コンピュータシステムおよびコンピュータオペレーティングシステムに関する。
より詳細には、本発明の一実施の形態は、結合されたハードウェアおよびソフトウェアの安全なプラットフォーム(combined-hardware-and-software secure-platform)、および、安全な基盤を提供する、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース(combined-hardware-and-software secure-platform interface)に関する。
この安全な基盤は、安全なコンピュータシステムを作成するために、当該基盤上で、1つまたは2つ以上のオペレーティングシステムをレイヤ化することができるものである。
結合されたハードウェアおよびソフトウェアのプラットフォーム、ならびに、結合されたハードウェアおよびソフトウェアのプラットフォームインタフェースは、マシン/オペレーティングシステムインタフェースの発展した段階を表す。
図2〜図4を参照して上述したように、マシン/オペレーティングシステムインタフェースは、図2に示したような一組の命令およびレジスタから、図5に示したような一組の非特権命令および非特権レジスタと、一組の特権命令および特権レジスタと、ハードウェア割り込みメカニズムと、一組のファームウェア実施サービスとに発展した。
本発明の一実施の形態は、安全なプラットフォームおよび安全なプラットフォーム/オペレーティングシステムインタフェースである。
この安全なプラットフォーム/オペレーティングシステムインタフェースは、一組の非特権命令および非特権レジスタと一組の安全なプラットフォームサービスとを提供する。
この一組の安全なプラットフォームサービスは、メモリ管理と、ディスパッチ可能オブジェクトのディスパッチと、例外処理と、割り込み処理と、デバッグおよび性能監視と、暗号サービスと、安全なデータリポジトリサービスと、ドメイン制御サービスと、論理的なプロセッサ制御サービスおよび物理的なプロセッサ制御サービスと、ドメイン間通信サービスおよびドメイン内通信サービスと、プラットフォームポリシー管理サービスと、呼び出し側認証サービスと、他のサービスとにサポートを提供する呼び出し可能なルーチンを含む。
本発明のこの実施の形態の別のビューは、ちょうど図4に示すシステムのファームウェアおよびハードウェアが、図2および図3に示す初期のシステムに対して新しい異なるタイプのマシンを表すように、ハードウェアおよびその上に位置する安全なプラットフォームソフトウェアが、共に、新しいタイプのマシンを表すことである。
この新しいマシンは、安全で基本的な機能を提供し、それらの機能の上に、安全なオペレーティングシステムおよび安全なシステムを構築することができる。
オペレーティングシステムは、単にハードウェア特権レベルに頼るのではなく、当該オペレーティングシステムよりも高い特権レベルで実行され、かつ、当該オペレーティングシステムに対して安全な状態に維持される、基本的な機能の一式全てを使用することができる。
【0022】
結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースを説明するために、セキュリティの議論と、結合されたハードウェアおよびソフトウェアの安全なプラットフォームでの使用に適したハードウェアプラットフォームの一例と、暗号化の一般的な議論とが、以下の3つの小節に提示される。
その後、4番目の小節、ならびにそれに続く付録Aおよび付録Bでは、本発明の一実施の形態を表す、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースの詳細な説明が詳述される。
【0023】
<コンピュータセキュリティ>
コンピュータセキュリティを定義する多くの異なる方法がある。
コンピュータシステムに発生するセキュリティ問題およびセキュリティ欠陥は、いずれの部類も、当初はシステム設計者によってセキュリティの問題として認識されなかった問題を表すことがかなり頻繁にある。
「コンピュータセキュリティ」という用語を適切かつ包括的に定義することが、安全なコンピュータシステムの設計において、重要かつ不可欠なステップを構成し得る。
本発明の一実施の形態を表す、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースの設計のステップは、安全なコンピュータシステムが、少なくとも以下の9つの特性およびプロパティを包含することを認識することである。
【0024】
[可用性]
可用性のあるシステムは、エンドユーザが、システムサービスを起動する時は常に、正常に機能して応答するものと信用でき、かつ、頼ることができるシステムである。
可用性は、信頼できるハードウェアコンポーネントの冗長構成をシステム内に組み込み、かつ、ハードウェアコンポーネントまたはソフトウェアコンポーネントのいずれかの誤った動作の検出および/または補償を行うことにより、部分的に対処することができる。
しかしながら、可用性は、検出可能なエラーの部類を拡大し、かつ、エラーの発生により生じる損害を制限することにより、大幅に促進することもできる。
【0025】
[秘密性]
コンピュータシステム内に記憶された情報、ネットワーク全体にわたって通信される情報、または、アーカイブ記憶装置に存在する情報は、認可された関係者のみが理解できる必要がある。
秘密性は、認可された関係者のみが、データおよびシステム情報を理解できるように制限できることを確実にするのに使用可能な暗号数字(cryptographic cipher)および暗号プロトコルを指定することによって、大幅に促進することができる。
このような制限は、ファイルデータの暗号化、ページングデータの暗号化、ローカルなシステムコンポーネント間の通信の暗号化、およびインターネット上の通信の暗号化を介して行われる。
【0026】
[認証]
人の同一性、サーバの同一性、クライアントの同一性、機器の同一性、印刷サブシステムの同一性、記憶サブシステムの同一性、ならびにデータの生成およびアクセスを行う他のハードウェアおよびソフトウェアコンポーネントの同一性は、サービスがこれらのエンティティに提供される前に、正確に確認する必要がある。
認証は、このようなすべての同一性を認証できる暗号手段および暗号プロトコルを指定することよって、大幅に促進することができる。
【0027】
[アクセス制御]
コンピュータシステム内に記憶された情報またはアーカイブ記憶装置に存在する情報へのアクセスは、適切に認可された場合にのみ許可される必要がある。
アクセス制御は、ある範囲のアクセス制御方式を提供することによって促進することができる。
【0028】
[否認防止性(nonrepudiation)]
電子商取引による取引では、メッセージの送信関係者も、メッセージの受信関係者も、取引を指定するメッセージおよび取引を行うメッセージの存在ならびに送信を否認できないようにすべきである。
例えば、「機械装置」の発送を注文するメッセージを送信した関係者は、後に、「機械装置」を注文しなかったと主張できないことを保証する手段を提供する必要がある。
否認防止は、取引の関係者に責任があることを確実にするために使用できる暗号メカニズムおよび暗号プロトコル、例えばデジタル署名などを特定することによって促進することができる。
【0029】
[ポリシー制御]
所有者および管理者は、システムのセキュリティエレメントの挙動を統率する彼らの制御ポリシー下で、それらのシステムを定義する能力を身に付ける必要がある。
【0030】
[デジタル権利保護]
安全なシステムは、デジタルコンテンツを保護する必要があり、特に、デジタル画像を、認可されていない複製から保護する必要がある。
例として、貨幣、MPEG家庭用娯楽コンテンツ、美術の高品質画像、および限定配布用の印刷された資料が含まれる。
【0031】
[プライバシー]
プライバシーのプロパティは、上述したプロパティによって決まるが、人およびグループの素性に関連した情報の管理および制御を行う付加機能を必要とする。
個人のプライベートな情報は、認可されていないアクセスから保護する必要がある。
場合によっては、アクセスが認可されている場合であっても、個人の素性は、開示されるべきではない。
プライバシーを保護するシステムの機能としては、次のものが含まれる。
すなわち、
(1)収集の目的に見合った、当該目的の範囲を超えない合法的な方法による個人情報の合法的収集、
(2)正確で最新の個人情報の保持、
(3)情報の保持、使用、または第三者への転送について個人の同意を得て、個人情報を公正で合法的に処理すること、
(4)個人は、自身の情報を修正または削除する権利を含めて、自身の情報にアクセスする権利を与えられるべきであること、
(5)個人は、どの個人情報が収集されるのかと、その使用目的と、責任を有するエンティティと、個人がその情報の使用に関して有する選択肢とを告げられる必要があること、
(6)個人は、自身の個人情報を取り扱う選択肢の選択および/または更新を行う能力を与えられる必要があること、ならびに
(7)プライベート情報が正確かつ合法的に取り扱われたことを監視機関または実施機関に実証する手段が提供される必要があること
が含まれる。
【0032】
[データ完全性(data integrity)]
コンピュータシステムに保管されているデータは、高価で重要な資産である。
安全なシステムは、データ資産が失われることもなく、損傷も受けることなく、かつ、認可されていない改竄、削除、偽造、置換、または他の形式の不正変更を受けないことを確実にする必要がある。
うまく設計されたファイルとデータベースシステムとの結合、体系的なバックアップおよび復元手順、ならびにデータ自体の完全性および秘密性のための暗号による保護は、このプロパティを保証するために必要である。
【0033】
<現代のコンピュータアーキテクチャ>
Intel(登録商標)のIA−64コンピュータアーキテクチャに従って構築されたプロセッサは、安全なプラットフォームソフトウェアレイヤとの結合に適した現代の一連のコンピュータハードウェアプラットフォームの1つの基本的なハードウェアインタフェースを表す。
この基本的なハードウェアインタフェースにより、本発明の一実施の形態を表す、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースが作成される。
図7は、現代の一プロセッサ内のレジスタを示すブロック図である。
これらのレジスタは、プロセッサの実行状態を定義する値を保持し、この値は、メモリに保存されると、実行中のプロセスの実行停止前の状態を記録する。
メモリに保存されたある種のレジスタを回復させることにより、割り込まれたプロセスの実行を再開することができる。
図7に示すレジスタセットは、かなり複雑であり、重要度の高いレジスタのいくつかのみを、以下に説明する。
【0034】
1つの重要なレジスタは、プロセスステータスレジスタ(「PSR(process status register)」)702である。
PSRは、64ビットレジスタであり、現在実行中のプロセスの制御情報を含む。
PSRは、多くのビットフィールドを備える。
これらのビットフィールドには、現在実行中のプロセスが実行されている時の現在の特権レベル(「CPL(current privilege level)」)を含む2ビットフィールドが含まれる。
0、1、2、および3の4つの特権レベルが存在する。
最も高い特権レベルは、特権レベル0である。
最も低い特権レベルは、特権レベル3である。
特権レベル0で実行されているプロセスのみが、「システムレジスタセット」として知られているレジスタのサブセットを含む所定のマシンリソースにアクセスして、操作することが許可される。
このシステムレジスタセットは、図7では、下部の長方形704内に示されている。
これらのシステムレジスタは、一組の領域レジスタ706と、一組の保護キーレジスタ708と、データおよび命令の変換索引バッファレジスタ710と、一組のデバッグブレークポイントレジスタ712と、一組の性能監視環境設定レジスタ714と、一組の制御レジスタ716とを含む。
1つの制御レジスタ、すなわち、割り込みプロセッサステータスレジスタ(「IPSR(interruption processor status register)」)718は、最も近時の割り込まれたプロセスのPSRの値を記憶する。
割り込みステータスレジスタ(「ISR(interruption status register)」)720は、最も近時に発生した割り込みの性質を示す多数のフィールドを含む。
他の制御レジスタは、他のイベントに関連した情報を記憶する。
他のイベントに関連した情報としては、仮想アドレス変換フォルトに関連した仮想メモリアドレス変換情報、最後に実行に成功した命令バンドルへのポインタ、および他のこのような情報などである。
外部制御インタラプトレジスタ722の組は、インタラプトベクタを設定するために、部分的に使用される。
【0035】
図7の上部の長方形領域724に示すレジスタは、「アプリケーションレジスタセット」として知られている。
これらのレジスタは、一組の汎用レジスタ726を含む。
そのうちの16個のレジスタ728は、割り込み処理コードの即値レジスタを提供するためにバンクされる。
少なくとも96個の汎用レジスタ730が、汎用レジスタスタックを形成する。
その部分部分は、バンクメモリから自動的に記憶および検索を行うことができ、これにより、呼び出した側のソフトウェアルーチンと呼び出された側のソフトウェアルーチンとの間の関連付けが容易になる。
また、アプリケーションレジスタセットは、浮動小数点レジスタ732、述語レジスタ(predicate register)734、分岐レジスタ736、命令ポインタ738、現フレームマーカ740、ユーザマスク742、性能監視データレジスタ744、プロセッサ識別子746、アドバンストロードアドレステーブル748、および一組の特定のアプリケーションレジスタ750も含む。
【0036】
IA−64アーキテクチャは、プロセッサステータスレジスタに2ビットの特権レベルフィールドを設け、これにより、PL0、PL1、PL2、およびPL3の4つの特権レベルを提供する。
PL0は、最も高い特権を有するカーネル特権レベルである。
PL1は、その次に高い特権を有する特権レベルである。
PL2は、その次に高い特権を有するレベルである。
PL3は、アプリケーションレベルの特権レベルである。
【0037】
以下に、図8〜図11を参照して、IA−64コンピュータアーキテクチャのメモリおよび仮想アドレス変換アーキテクチャを説明する。
IntelのIA−64コンピュータアーキテクチャにおいて定義される仮想アドレス空間は、例えば、図8に示す領域802〜807などの224個の領域を含む。
各領域は、連続した仮想メモリアドレスによって連続的にアドレス指定される261バイトを含む。
したがって、仮想メモリアドレス空間は、全体で、285バイトのメモリからなるアドレス空間に及ぶものとみなすことができる。
次に、85バイトの仮想メモリアドレス808は、24ビットの領域フィールド810および61ビットのアドレスフィールド812を備えるものとみなすことができる。
【0038】
一方で、一般に、仮想メモリアドレスは、64ビットの量としてコード化される。
図9は、領域レジスタと、保護キーレジスタと、変換索引バッファ(「TLB(translation look-aside buffer)」)とに記憶された情報を介した64ビットの仮想メモリアドレスの物理メモリアドレスへの変換を示している。
Intel(登録商標)のIA−64アーキテクチャでは、仮想アドレスは、64ビットのコンピュータワードであり、図9では、3つのフィールド904〜906に分割された64ビット量902によって表されている。
最初の2つのフィールド904および905は、メモリページのサイズに応じたサイズを有する。
メモリページのサイズは、ある範囲のメモリページサイズ内で調整することができる。
1番目のフィールド904は、「オフセット」と呼ばれる。
オフセットは、メモリページ内のバイトを指定する整数である。
例えば、メモリページが、4096バイトを含む場合、オフセットは、0〜4095の値を2進法で表現するために12ビットを含む必要がある。
2番目のフィールド905は、仮想ページアドレスを含む。
仮想ページアドレスは、物理メモリにマッピングされる、仮想アドレス空間内のメモリページを指定する。
このメモリページは、さらに、ディスクなどのマスストレージデバイスに記憶されたメモリページによってバックアップされる。
3番目のフィールド906は、3ビットのフィールドであり、仮想メモリの領域の識別子を含んだ領域レジスタを指定し、仮想ページアドレス905によって指定される仮想メモリページが含まれる。
【0039】
仮想メモリアドレス902の物理メモリアドレス908への変換は、時にカーネルおよびオペレーティングシステムのルーチンと組み合わせて、プロセッサにより実行される。
この物理メモリアドレス908には、コンピュータシステムの物理メモリコンポーネントのページを参照する物理ページ番号912に加えて、仮想メモリアドレスのオフセット904と同じオフセット910が含まれる。
仮想メモリアドレスから物理メモリアドレスへの変換が、TLB914に含まれる場合には、仮想メモリアドレスから物理メモリアドレスへの変換は、オペレーティングシステムが介入することなく、もっぱらプロセッサによって実行することができる。
プロセッサは、領域レジスタセレクタフィールド906を使用して、一組の領域レジスタ918内のレジスタ916を選択する。
選択された領域レジスタ916は、24ビットの領域識別子を含む。
プロセッサは、選択された領域レジスタに含まれる領域識別子と、ハードウェア機能の仮想ページアドレス905とを共に使用して、領域識別子および仮想メモリアドレスを含むTLBエントリ920を選択する。
この領域識別子および仮想メモリアドレスは、選択された領域レジスタ916に含まれる領域識別子および仮想ページアドレス905と一致するものである。
TLBエントリ922などの各TLBエントリは、領域識別子924と、TLBエントリ926によって記述されたメモリページと関連付けられた保護キーと、仮想ページアドレス928と、アクセス権フィールド930を共に構成する特権フィールドおよびアクセスモードフィールドと、物理メモリページアドレス932とを含むフィールドを収容する。
【0040】
TLBのエントリであって、仮想メモリアドレスの領域レジスタセレクタフィールドによって指定された領域レジスタ内に含まれる領域識別子を含み、かつ、仮想メモリアドレス内で指定された仮想ページアドレスを含むエントリが、発見できる場合には、プロセッサは、仮想メモリアドレスによって記述された仮想メモリページが、現在実行中のプロセスによってアクセス可能かどうかを判断する。
TLBエントリ内のアクセス権が、現在実行中のプロセスがそのメモリページにアクセスすることを許可しており、かつ、TLBエントリ内の保護キーが、現在実行中のプロセスがそのメモリページにアクセスすることを許可するアクセスモードと関連した保護キーレジスタ934内に発見できる場合には、現在実行中のプロセスは、そのメモリページにアクセスすることができる。
TLBエントリ内に含まれるアクセス権は、3ビットのアクセスモードフィールドおよび2ビットの特権レベルフィールドを含む。
3ビットのアクセスモードフィールドは、特権の読み出し、書き込み、および実行のうちの1つまたはそれらの組み合わせを示す。
2ビットの特権レベルフィールドは、アクセスを行うプロセスによって必要とされる特権レベルを指定する。
各保護キーレジスタは、アクセスモードフィールドと関連付けられた24ビットの保護キーと、保護キーレジスタが現在有効であるかどうかを示す有効ビットとを含む。
アクセスモードフィールドは、アクセスモードの読み出し、書き込み、および実行が許可されたことを指定する。
したがって、TLBエントリによって記述されたメモリページにアクセスするには、アクセスを行うプロセスは、保護キーレジスタ内の有効な保護キーと、TLBエントリのメモリページとに関連付けられたアクセスモードと適合した方法でページにアクセスする必要があり、かつ、TLBエントリ内のメモリページと関連付けられた特権レベルと適合した特権レベルで実行されている必要がある。
【0041】
仮想メモリアドレス内の仮想ページアドレスと、仮想メモリアドレスの領域レジスタ選択フィールドによって選択された領域識別子とに等しい領域識別子と、仮想ページアドレスとを有するエントリが、TLB内で発見できない場合には、TLBミスが発生し、ハードウェアは、カーネルメモリに位置するVHPTと呼ばれる構成されたマッピング制御テーブルから正しいTLBエントリを突き止めるように試みる。
ハードウェアが、マッピング制御テーブルから正しいTLBエントリを突き止めることができない場合には、TLBフォルトが発生し、指定されたメモリページを物理メモリ内で発見するために、カーネルまたはオペレーティングシステムのルーチンが起動される。
あるいは、必要に応じて、指定されたメモリページを外部デバイスから物理メモリにロードするために、カーネルまたはオペレーティングシステムのルーチンが起動される。
その後、適切に変換したものが、VHPTおよびTLBにエントリとして挿入される。
仮想メモリアドレスの物理メモリアドレスへの変換を試みた時に、プロセスが、有効な保護キーを保護キーレジスタ934内に発見しなかった場合、または、現在実行中のプロセスが試みたアクセスが、TLBエントリのアクセスモードと適合しない場合、または、保護キーレジスタの保護キー内の読み出し/書き込み/実行ビットと適合しない場合、もしくは、現在実行中のプロセスの特権レベルが、TLBエントリによって必要とされる特権レベルより低い場合には、カーネルルーチンによって操作されるフォルトが発生し、カーネルルーチンは、オペレーティングシステムのルーチンへ実行をディスパッチする。
【0042】
図10は、オペレーティングシステムのルーチンが、仮想メモリアドレスに対応する物理メモリのメモリページを発見するのに使用するデータ構造体の一形式を示している。
仮想メモリアドレス902は、図10において、図9と同じフィールドおよび符号で示されている。
オペレーティングシステムのルーチンは、領域セレクタフィールド906および仮想ページアドレス905を使用して、仮想ページテーブル1004内のエントリ1002を選択する。
仮想ページテーブルエントリ1002は、物理メモリのページ1008を参照する物理ページアドレス1006を含む。
仮想メモリアドレスのオフセット904は、仮想メモリページ1008の適切なバイト位置1010を選択するために使用される。
仮想ページテーブル1002は、物理アドレスが有効であるかどうかを示すビットフィールド1012を含む。
物理アドレスが有効でない場合には、オペレーティングシステムは、物理メモリ内のメモリページを選択してそのメモリページを含め、そのメモリページの内容を、例えばディスクドライブ1014などの外部記憶デバイスから検索する。
仮想ページテーブルのエントリ1002は、付加フィールドを含み、この付加フィールドから、TLBエントリに必要とされる情報を検索することができる。
オペレーティングシステムが、仮想メモリアドレスの物理メモリアドレスへのマッピングに成功するとすぐに、そのマッピングは、仮想ページテーブルのエントリに入力され、また、TLBエントリとしてフォーマットされた後、TLBに挿入される。
【0043】
図11は、TLBエントリに使用されるアクセス権のコード化を示している。
アクセス権は、3ビットのTLB.arモードフィールド1102および2ビットのTLB.pl特権レベルフィールド1104を備える。
TLB.arモードフィールド1102は、読み出し権、書き込み権、実行権、および組み合わせアクセス権を指定する。
TLB.pl特権レベルフィールド1104は、メモリページと関連付けられた特権レベルを指定する。
図11では、TLB.arフィールドおよびTLB.plフィールドにそれぞれ含まれる可能な値のアクセス権が示されている。
アクセス権は、現在のプロセスが実行される特権レベルによって決まることに留意されたい。
したがって、例えば、TLB.arが0に等しく、かつ、TLB.plが3に等しいTLBエントリによって指定されるメモリページには、あらゆる特権レベルで実行されるルーチンが、読み出しのためにアクセスすることができる。
このことは、図11では、各特権レベル1106〜1109に対応する列の文字「R」によって示される。
これに対して、TLB.arが0に等しく、かつ、TLB.plが0に等しいTLBエントリによって記述されるメモリページには、特権レベル0で実行されるプロセスのみが、読み出しによりアクセスすることができる。
このことは、図11では、特権レベル0に対応する列の下のある文字「R」1110によって示される。
図11に記述したアクセス権は、図4を参照して行った上記議論による特権レベルによってネストする。
一般に、特定の特権レベルで実行されるプロセスは、その特権レベルおよびそれより低いすべての特権レベルに関連付けられたメモリページにアクセスすることができる。
TLBエントリに含まれるアクセス権のみを使用すると、レベル3で実行されるプロセスおよびレベル0で実行されるカーネルルーチンにはアクセス可能であるが、特権レベル2で実行されるオペレーティングシステムのルーチンにはアクセス可能でないメモリ領域を作成することができない。
また、特権レベル3で実行されるルーチンにアクセス可能なあらゆるメモリページは、特権レベル2で実行されるオペレーティングシステムのルーチンにもアクセス可能である。
【0044】
コンピュータリソースが、特権レベルに従って分割されるので、プロセスは、一般に、その実行中のプロセスの特権レベルまたはそれより低い特権レベルに関連付けられたメモリページからの命令およびデータにアクセスする。
なお、特権レベル0は、最も高い特権レベルとみなされる。
実行中のプロセスには、ハードウェア生成割り込みによって割り込みが行われることがある。
この場合、割り込み処理ルーチンが、ハードウェアによって自動的に起動され、特権レベル0で実行される。
割り込みが、部分的に、または、完全に処理されるとすぐに、割り込み処理ルーチンは、インタラプトからの復帰(「rfi(return from interrupt)」)命令を実行して、前に実行中のルーチンにおけるインタラプト発生ポイントに実行を戻し、そのCPLを、前に実行中のルーチンが割り込み前に実行されていたCPLに再び下げることができる。
【0045】
割り込みプロセスを図12に示す。
図12では、アプリケーションプログラムを実行しているプロセスは、アプリケーションプログラムのプロセスの低い特権レベルと関連付けられたメモリページ1202からの命令を実行する。
このメモリページからの命令の実行は、濃い曲線の矢印、すなわち塗りつぶされた曲線の矢印1204〜1206によって表されている。
特権レベル0の割り込み処理ルーチンの実行は、薄い曲線の矢印、すなわちアウトライン型の曲線の矢印1208によって図12に示されている。
最初、アプリケーションプログラムのプロセスは、メモリ位置1210−1215に記憶された命令を逐次的に実行する。
メモリ位置1215に記憶された命令の実行中、マシン割り込みが発生し、特権レベル0の割り込みハンドラが起動される。
起動後、割り込みハンドラは、特権レベル0に関連付けられたメモリページ1218内のメモリ位置1216に記憶された命令の実行を開始する。
割り込みハンドラは、メモリ位置1220に記憶されたrfi命令を最後に実行する前に、多数の命令を実行する。
rfi命令の実行により、CPLは、アプリケーションプログラムのプロセスが割り込み発生前に実行されていた低い特権レベルに再び降格され、制御は、濃い矢印、すなわち塗りつぶされた矢印1205によって示されるように、アプリケーションプログラムに戻される。
その後、アプリケーションプログラムは、濃い矢印、すなわち塗りつぶされた矢印1206によって示されるように、実行を再開する。
所定のタイプの割り込みでは、特権レベル0のインタラプトハンドラは、完全に割り込みを受けたプロセスの状況の中で実行することができる。
より複雑な割り込み処理を行うために、オペレーティングシステムは、アプリケーションプログラムのプロセスに関連付けられた状況情報を、そのプロセスと関連付けられたPCBに記憶して、割り込みハンドラが実行できる新しい状況を準備することができる。
そして、割り込みの処理に続いて、アプリケーションプログラムのプロセスが復元される時、アプリケーションプログラムの状況が復元される。
【0046】
アプリケーションプログラムのプロセスが、そのアプリケーションプログラムのプロセスの特権レベルよりも高い特権レベルで実行されるオペレーティングシステムのサブルーチンまたは機能を呼び出す必要がある場合が存在する。
PSRは、特権レベル0のルーチンによってのみアクセスおよび変更を行うことができるので、それより低い特権レベルで実行されるアプリケーションプログラムは、CPLを直接変更することができない。
このような呼び出しを実行する1つの方法は、コード化されたパラメータを含む「ブレーク」命令を実行することである。
この命令は、特権レベル0の割り込みを引き起こし、ブレーク命令のコード化されたパラメータはデコードされて、所望の特権レベル0の機能に制御を送ることができる。
しかしながら、IA−64コンピュータアーキテクチャは、より高速なメカニズムを提供し、このメカニズムによって、アプリケーションプログラムのプロセスは、特権レベル0のプロセスを起動することができる。
図13は、アプリケーションレベルのルーチンに、より高い特権レベルのルーチンの呼び出しを許可するCPL昇格メカニズムを示している。
図13は、図12に使用されるのと同じ表示規則を使用する。
塗りつぶされた矢印1302によって表される実行中のアプリケーションプログラムは、より高い特権レベルのルーチン「A」を呼び出すために、メモリ位置1304に記憶された呼び出し命令を実行する。
この高い特権レベルのルーチンは、その高い特権レベルに関連付けられたメモリページ1306に記憶されている。
この高い特権レベルのルーチンは、メモリ位置1308に記憶されたepc命令を最初に実行する。
このepc命令は、CPLを、当該命令を含むメモリページと関連付けられたCPLに昇格させる。
その後、呼び出されたルーチンは、その高い特権レベルで実行可能であり、br.ret命令1310で実行を終了する。
br.ret命令は、アプリケーションレベルのプログラムに実行を戻し、自動的に、CPLを、そのアプリケーションレベルのプログラムがサブルーチン呼び出し前に実行されていたCPLに再び降格させる。
このメカニズムは、アプリケーションプログラムがCPLを昇進させて、保護されたコンピュータリソースへの認可されていないアクセスを実行する手段を提供するものではないことに留意されたい。
特権レベル0で実行される命令だけが、唯一、メモリページを特権レベルに関連付けることができる。
したがって、epcのCPL昇格命令を使用するルーチンは、最初に、特権レベル0のルーチンによって設定される必要がある。
このように、オペレーティングシステムは、epcメカニズムを使用して、低い特権レベルのルーチンから呼び出し可能なオペレーティングシステムエントリポイントを安全に作成することができる。
【0047】
<暗号化技術>
6つの基本タイプの暗号技法が存在する。
すなわち、
(1)対称(秘密)鍵暗号、
(2)非対称(公開/秘密)鍵暗号、
(3)一方向ハッシュ関数、
(4)メッセージ認証コード、
(5)デジタル署名、および
(6)乱数発生器
である。
【0048】
[暗号化/復号]
対称鍵暗号および非対称鍵暗号は、ともに、データを非常に徹底的にスクランブルして、正しい鍵を持たない攻撃者が、スクランブルされていないオリジナルのデータの内容も意味も判断できないようにするために使用される。
データ自体は、どの形式のデジタル情報であってもよく、あらゆる言語の文字や数字、言葉や句読点や制御の特別なシンボル、またはビデオ画像およびオーディオ画像を含む。
【0049】
データをスクランブルするプロセスは、データを「暗号化する(encrypting)」または「暗号文に変える(enciphering)」と呼ばれる。
スクランブルを解除してデータをそのオリジナルの形式に再び戻す逆操作は、データを「復号する(decrypting)」または「解読する(deciphering)」と呼ばれる。
スクランブルされていないオリジナルのデータは、「平文」と呼ばれる。
スクランブルされたデータは、「暗号文」と呼ばれる。
暗号化および復号を行う多くの異なるアルゴリズムが存在する。
暗号化および復号のアルゴリズムは、一般に、2つの入力引数を取り込み、出力として、暗号化されたデータまたは復号されたデータをそれぞれ生成する。
第1の入力引数は、暗号化または復号の対象となるデータである。
第2の入力引数は、「鍵」と呼ばれる。
最良な実践では、暗号化および復号の方式の秘密性が、鍵にのみ備わっているとみなされる。
暗号化および復号は、次のように簡潔に記述することができる。
暗号文=暗号化(平文,暗号鍵)
平文=復号(暗号文,復号鍵)
【0050】
[対称鍵暗号]
対称鍵暗号では、暗号化されたメッセージの送信者および受信者の双方が、同じ秘密鍵を使用する。
例えば、秘密鍵を単語「applesauce(アップルソース)」とすると、上記方程式は次のようになる。
暗号文=暗号化(平文,「applesauce」)
平文=復号(暗号文,「applesauce」)
【0051】
標準的に使用される鍵は、長くランダムなビット列である。
鍵の長さは、具体的な対称暗号によって決定される。
鍵のバイナリ値は、それらの値が十分予測不可能であることを保証するように構成されるプロセスによって発生される。
【0052】
対称暗号は、(1)ブロック暗号、および(2)ストリーム暗号の2つの基本タイプを有する。
ブロック暗号は、単一の固定サイズのブロックを一度に暗号化するか、または、復号する。
ブロックのサイズは、具体的なブロック暗号によって定められる。
ストリーム暗号は、一連のバイナリ値を発生し、この一連のバイナリ値は、暗号化を行うために平文とXOR演算されるか、または、復号を行うために暗号文とXOR演算される。
ストリーム暗号によって発生される各バイナリ値のサイズは、具体的なストリーム暗号によって定められる。
【0053】
対称鍵暗号は、高速に実行される。
セキュリティおよび性能の理由から、対称暗号は、非常に高く位置付けられる。
あらゆる大容量の機密データの交換にとって、対称鍵暗号は、その高い性能により好ましい選択である。
対称暗号を実施するにあたっての難問は、秘密鍵の配布および管理であり、これは、「鍵配布問題(Key Distribution Problem)」とうまく名付けられている。
【0054】
鍵配布問題、すなわち、秘密に通信を行う必要のある人の各ペアまたはプログラムの各ペアに、ネットワークを通じてユニークな秘密鍵を安全に配布するプロセスの定義は、非常に複雑である。
システム全体が、この機能を実行するためだけに構築されている。
開発されたあるシステムは、単純に、全体のサーバを、秘密鍵配布を行う信用される第三者であるタスクに専用化している。
【0055】
[非対称鍵暗号]
非対称鍵暗号では、データの暗号化に使用される鍵は、データの復号に使用される鍵とは異なる鍵である。
暗号化および復号の双方に同じ秘密鍵を使用する対称鍵暗号と異なり、非対称鍵暗号は、2つの異なる鍵を使用する。
非対称鍵暗号の利点は、それらの鍵の一方だけをプライベート(すなわち秘密)に維持する必要があるということである。
他方の鍵は、広く知られてもよい、すなわち公開されてもよい。
この理由から、非対称鍵暗号は、「公開/秘密(public/private)」鍵暗号と広く呼ばれる。
非対称暗号は、鍵配布の問題を大幅に改善する。
非対称鍵暗号を記号で表すと、次のようになる。
暗号文=暗号化(平文,公開鍵)
平文=復号(暗号文,プライベート鍵)
【0056】
最も広く使用される非対称暗号は、「RSA」と呼ばれ、これは、その発明者達の姓の頭文字から構成される頭字語である。
RSAは、2つの秘密の素数の積を法とする非常に大きな整数で動作する。
RSAの公開鍵およびプライベート鍵は、それぞれ、このような大きな整数のペアである。
今日の良好なセキュリティでは、1024ビットから2048ビットの整数が使用されるが、アプリケーションの中には、512ビットの整数を使用し続けるものもある。
RSAの暗号強度は、積を2つの秘密の素数に因数分解する困難さに由来する。
【0057】
より最近の研究では、「楕円曲線」上に位置する点からなる有限個の群が、非対称暗号についてRSAよりもおそらく高い強度の基数を提供することが示された。
楕円曲線に基づく方式のセキュリティは、楕円曲線上の離散対数問題を解く困難さに由来する(詳細については、Blake、Seroussi、Smart著のElliptic Curves in Cryptography, Cambridge Univ. Press, 1999を参照されたい)。
計算に必要とされる鍵は、RSAに必要とされる鍵よりも短い。
例えば、1024ビットのRSAの鍵と強度が同等の楕円曲線の鍵は、200ビットよりも短い長さになる。
しかしながら、計算は、RSAの計算よりも複雑である。
非対称暗号の第1の不利な点は、はるかに多くの計算を必要とすることである。
換言すると、非対称暗号は、対照暗号よりも極めて遅い。
対称暗号および非対称暗号の相対的な強度および弱点のために、通常の実践では、鍵の配布には非対称鍵暗号が使用され、転送されるデータの大部分には、対称鍵暗号が使用される。
【0058】
[一方向ハッシュ関数]
一方向ハッシュ関数は、任意の入力ビットストリームを固定サイズの結果に変換するアルゴリズムである。
一方向ハッシュ関数が「一方向」と呼ばれる理由は、ハッシュ関数を実行することが直接的であるからであるが、ハッシュ関数の逆を計算することはおそらく不可能であること、すなわち、固定サイズのハッシュ関数の出力のみを与えて、入力ビットストリームを計算することはおそらく不可能であることによる。
【0059】
さらに、安全なハッシュ関数は、可能な範囲内で、関数の出力のすべてのビットの値が、入力のすべてのビットの値によって影響を受けるように設計され、かつ、所与のハッシュ出力値に対して、同一のハッシュ関数出力を生成する別の入力ビットストリームを発見することが、非常に困難となるように設計される。
安全なハッシュ関数のこれらのプロパティにより、入力ビットストリームの識別「署名」または識別「ダイジェスト(digest)」としてハッシュ出力値を使用することが合理的に可能となる。
ハッシュ関数出力は、入力ビットストリームの電子指紋(electric fingerprints)と同様である。
【0060】
安全なハッシュ関数は、通常、2つのフェーズで動作する。
第1に、任意の長さの入力ビットストリームが、特定の方法で、複数の固定ブロックサイズにパッド(pad)される。
通常、入力ストリーム全体のビット長は、最終のパッドブロックの最後の64ビットのダブルワードに、最終の64ビット値として現れる。
第2に、パッドされた入力は、各ブロックから次のブロックの処理への出力値を初期入力値として使用して、ハッシュ関数により一度に1ブロックずつ処理される。
最終ブロックを処理した後の結合された結果が、ハッシュ関数の出力となる。
これを記号で表すと次のようになる。
メッセージダイジェスト=ハッシュ関数(パッド関数(メッセージ入力ビット))
【0061】
ハッシュ関数は、最も多目的で、かつ、広く使用される暗号ツールの1つである。
ハッシュ関数は、ほとんどすべてのインターネットプロトコルに使用される。
一般の実践では、多くのエレメントを論理的に関連付けることが必要となるときは常に、それらエレメントを表すバイト列が連結されて、全体の結果がハッシュされる。
これは、全体の順序付けられた関連だけでなく、すべてのエレメントを反映する電子指紋を生成する。
文書、データ構造体、およびコード画像のハッシュ値は、デジタル署名にとって非常に重要である。
【0062】
[メッセージ認証コード]
メッセージ認証コード(「MAC(Message Authentication Code)」)は、メッセージおよびデータの秘密性を保護するのではなく、それらの認証および完全性を保護するように設計される。
MACは、メッセージまたはデータの最後に追加される値であり、この値により、メッセージまたはデータの内容が、いかなる方法によっても変更されていないことを保証することできる。
【0063】
MACは、対称鍵暗号と同様に、秘密鍵を使用する。
メッセージの内容を保護することは重要ではないが、その完全性を保証することだけが重要な場合には、秘密鍵が使用されて、MACが計算され、その後、MACはメッセージの最後に追加される。
秘密鍵を知るいかなる関係者も、受信したメッセージからMACを再計算することができ、新しく計算された値を、受信したメッセージの最後に追加されたMACと比較することができる。
新しく計算された値と、送信された値とが一致した場合には、そのメッセージは、正しく送信されていることになる。
【0064】
MACは、安全なIP(「IPsec」)に使用されて、パケットの内容が送信中に変更されていないことを保証する。
また、MACは、銀行間のメッセージの認証を行う転送プロトコルにも使用される。
また、MACは、ファイルまたはデータベースに記憶されるデータに取り付けることもできる。
すべての場合において、秘密鍵を知るいかなる者も、MACが計算されたデータが変更されていないことを検証することができる。
MACの計算は、データに対称鍵暗号を利用するか、または、時に、データの安全なハッシュに対称鍵暗号を利用することもある。
【0065】
[デジタル署名]
デジタル署名は、記憶されたデータまたは送信されたデータの完全性の保証を提供する点においてMACと類似している。
しかし、デジタル署名は、使用される秘密事項およびそれらの秘密事項の配布に関してMACと異なる。
【0066】
MACでは、MACの計算に使用される秘密鍵を知る人からなる集合は、空集合ではない。
その集合の人々のいずれもが、秘密鍵により計算されたMACを検証することができる。
また、同時に、これらの人々のいずれもが、異なるメッセージまたはデータのMACを計算したり、あるいは、変更されたメッセージまたはデータのMACを偽造したりすることができる。
秘密鍵を知るすべての人は、互いに信用し合って、秘密鍵を秘密に維持すること、および、秘密鍵を適切に使用することの双方を行う必要がある。
【0067】
MACは、秘密事項を保持する者が一個人しかいない場合には、よく機能する。
この人は、秘密事項を使用して、自身のデータを保護することでき、その完全性を保証することができる。
また、MACは、2人からなる組に対してもよく機能する。
これら2人は、秘密事項を明かさないように互いを信用し合い、各メッセージの完全性が危険にさらされていないことを知りつつ、メッセージを往復して送信することができる。
これらのモデルは、多くの重要な状況に適合する。
【0068】
デジタル署名は、署名を作成できる者が一人の関係者しかいないが、署名の作成後は、誰もがその署名を検証できる場合の完全性の保護メカニズムである。
このモデルでは、一人の指定された関係者、すなわち有効な秘密事項の唯一の保持者が、署名を計算して、データの最後に追加することを担当することになる。
このことは、データに「署名する」と呼ばれる。
データに署名が行われた後、誰もが、その指定された関係者、より正確には、指定された秘密鍵が、実際に署名を計算したことを検証することができる。
このモデルは、多くの重要な取引の状況および実用的な状況に適合する。
【0069】
デジタル署名は、非対称鍵暗号の注目すべきプロパティを使用することによって計算される。
すなわち、デジタル署名は、逆にも機能する。
非対称鍵暗号に関する前節において、我々は、記号として、以下のものを記載した。
暗号文=暗号化(平文,公開鍵)
平文=復号(暗号文,プライベート鍵)
しかし、これらの鍵を逆の順序で使用できることが分かる。
すなわち、次のようなる。
暗号文=暗号化(平文,プライベート鍵)
平文=復号(暗号文,公開鍵)
【0070】
前者の場合には、秘密鍵の所有者が復号を行い、誰もが暗号化を行うことができる。
後者の場合には、秘密鍵の所有者が暗号化を行い、誰もが復号を行うことができる。
後者の場合が、デジタル署名に使用される。
【0071】
デジタル署名は、単独で使用することもできるし、あるいは、秘密性を保護するために設計された暗号化と組み合わせて使用することもできる。
多くの場合、データの内容が秘密であることは重要ではなく、データが正確であることが極めて重要である。
デジタル署名は、データのすべてをプライベート鍵で暗号化することにより計算されるとは限らない。
むしろ、デジタル署名は、プライベート鍵を使用して、データの安全なハッシュを暗号化することにより計算される。
実際上、我々は、まず、データの電子指紋を取り、次に、この電子指紋をプライベート鍵で暗号化する。
記号で表すと、次のようになる。
デジタル署名=暗号化(ハッシュ関数(メッセージ入力ビット),プライベート鍵)
電子指紋=復号(デジタル署名,公開鍵)
【0072】
また、デジタル署名は、2つのステップで検証も行われる。
まず、データの内容の電子指紋が、ハッシュ関数を使用して再計算される。
次に、追加されたデジタル署名が、公開鍵を使用して復号される。
再計算された電子指紋と復号されたデジタル署名とが一致すると、その署名は、検証されたことになる。
【0073】
[乱数発生器]
乱数は、暗号アルゴリズムおよび暗号プロトコルの全体にわたって使用される。
乱数は、鍵、チャレンジ値(challenge value)、ノンス(nonce)、パスワード用のプリハッシュの追加値などに使用される。
ある形式の物理的なランダム性に基づくハードウェアデバイスが、登場し始めている。
もちろん、このようなハードウェアデバイスに関連する問題は、当該ハードウェアデバイスが正しく動作することを保証するために検査中である。
十分予測不可能な数値を計算する計算手段は存在し、それらの数値は、真の乱数の代わりに使用することができる。
このような数値は、「擬似乱数」(「PRN(Pseudo-Random Number)」)と呼ばれる。
擬似乱数発生方法のあるものは、コンピュータシステム内のランダムなイベントの物理測定値、例えばタイプ速度、任意のマウスの動作、ディスクI/Oインタラプトの到着時間などに基づく値を使用する。
他のものは、対称暗号、または、例えば因数分解問題などの数学の難問の困難さに基づいている。
十分予測不可能な値を生成する擬似乱数発生器(「PRNG(Pseudo random number generator)」)は、「暗号的に強い擬似乱数発生器(「CSPRNG(Cryptographically Strong Pseudo Random Number Generator)」)と呼ばれる。
【0074】
<本発明の安全なプラットフォームカーネルの実施の形態>
図14は、IA−64プロセッサに基づくマシン上にオペレーティングシステムを直接レイヤ化したものを示している。
この直接的なレイヤ化のアプローチでは、オペレーティングシステム1402は、IA−64アーキテクチャ特有のインタフェース1404を使用する。
このインタフェース1404は、オペレーティングシステムのサービスを介してアプリケーションプログラムの管理および分配を行うコンピュータリソースとして、IA−64プロセッサに基づくマシン1406によって提供される。
IA−64アーキテクチャ特有のインタフェース1404は、非特権命令および特権命令と、非特権レジスタおよび特権レジスタと、ハードウェア割り込みメカニズムと、ファームウェアインタフェースとを備える。
しかしながら、IA−64ハードウェアインタフェース上へのオペレーティングシステムの直接的なレイヤ化を使用することにより、現在のオペレーティングシステムに本来備わっている多くのセキュリティ問題およびセキュリティ欠陥を、IA−64アーキテクチャの機能を使用して容易に対処することはできない。
一例として、I/Oドライバが、継続してオペレーティングシステム内に組み込まれ、PL0で実行されている場合に、図6に示した問題は、このコンピュータシステムの潜在的な脆弱性のまま残る。
オペレーティングシステムは、比較的大きなプログラムであり、正確さおよび安全な動作のために検証することは実際には不可能である。
【0075】
本発明の一実施の形態は、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースである。
この結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースは、1つまたは2つ以上のコンピュータオペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なレイヤを提供するものである。
結合されたハードウェアおよびソフトウェアの安全なプラットフォーム(「SP」)は、オペレーティングシステムまたはカスタマイズされた制御プログラムが、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース(「SPI」)を介して、非特権機械語命令および非特権レジスタに直接アクセスすることを可能にすると共に、特権機械語命令および特権レジスタを公開することなく、オペレーティングシステムまたはカスタマイズされた制御プログラムにハードウェアの制御を提供するソフトウェアルーチンの起動を可能にする。
その上、SPおよびSPIは、一組の安全なリポジトリサービスを提供する。
このリポジトリサービスには、特に、暗号化サービスおよび復号サービスと、セキュリティポリシー管理と、例えば平文による暗号鍵などの内部で生成された秘密データを使用する他のセキュリティ関連サービスとが含まれる。
この秘密データは、オペレーティングシステムおよびカスタマイズされた制御プログラムに公開することもできないし、結合されたハードウェアおよびソフトウェアの安全なプラットフォームのソフトウェア部分の他のルーチンに公開することもできない。
SPIは、ハードウェアだけでなく、ファームウェアインタフェースおよびソフトウェアルーチンの拡張可能セットをも含むマシンに対するマシンインタフェースと考えることができる。
このハードウェアには、1つまたは2つ以上のプロセッサ、バス、メモリコンポーネント、および図1に示す他のハードウェアコンポーネントが含まれる。
このように、SPIは、SPに対するインタフェースであり、ハードウェア、ファームウェア、およびソフトウェアの複合マシンに対するインタフェースである。
また、SPIは、オペレーティングシステムおよびカスタマイズされた制御プログラムの下に位置する新しいタイプのソフトウェアレイヤによって提供されるインタフェースと考えることもできる。
【0076】
図15は、コンピュータシステム内のSPを示すブロック図である。
このコンピュータシステムは、SPならびに1つまたは2つ以上のオペレーティングシステムおよびカスタマイズされた制御プログラムを備える。
SPI1502は、SPのソフトウェアレイヤ1504と、1つまたは2つ以上のオペレーティングシステムおよび/またはカスタマイズされた制御プログラム1506との間に位置する。
SPは、ソフトウェアレイヤ1504と、ハードウェアおよびファームウェアのプラットフォームインタフェース1508と、ハードウェアおよびファームウェアのプラットフォーム1510とを備える。
上述したように、ハードウェアインタフェース1508に設けられた非特権命令および非特権レジスタは、図15の縦の矢印1512によって示すように、SPI1502によって直接公開される。
縦の破線1514の右にある、ハードウェアインタフェースの他のコンポーネントは、公開されない。
その代わりに、これらのハードウェアインタフェースコンポーネントを通じて提供される機能は、SPIの安全なプラットフォームサービスコンポーネント1516および安全なリポジトリサービスコンポーネント1518を介して、オペレーティングシステムおよびカスタマイズされた制御プログラムに利用可能にされる。
【0077】
SPが提供する機能に加えて、SPが、オペレーティングシステムまたは従来の仮想マシンと全く異なること、および、SPIが、オペレーティングシステムインタフェースまたは仮想マシンインタフェースと異なることを強調することは重要である。
仮想マシンは、特権命令および特権レジスタと、下に位置するハードウェアプラットフォームのファームウェアインタフェースとを直接公開するか、または、シミュレーションする、下に位置するハードウェアプラットフォームのソフトウェアの抽象化である。
仮想マシンは、例えばオペレーティングシステムの開発などの多くの状況で役立つ。
しかし、SPは、仮想マシンインタフェースとは異なる。
SPIは、特権命令および特権レジスタならびにファームウェアインタフェースへの、上に位置するオペレーティングシステムによるアクセスを故意に妨げる。
さらに、SPメカニズムは、拡張可能な良質な組の安全なサービス、例えば暗号サービスなどを提供する。
これらの安全なサービスは、仮想マシンによって提供される機能の範囲をかなり越えて拡張されているものである。
SPの安全なサービスは、それらのコードイメージ画像およびコードデータを、上に位置するオペレーティングシステムおよびカスタム制御プログラムから完全に区画化されて隔離することにより、安全なものとされている。
この区画化および隔離は、オペレーティングシステムおよびカスタム制御プログラムが、特権命令および特権レジスタならびにファームウェアインタフェースへのいかなる直接アクセスも持たないとの理由によってのみ可能である。
したがって、例えば、SP暗号サービスは、暗号鍵の実際の値、および、暗号鍵から導出される鍵とする材料(keying material)を、すべてのオペレーティングシステム、カスタム制御プログラム、およびアプリケーションプログラムから完全に隠蔽することができる。
一方、それにもかかわらず、それらのオペレーティングシステム、カスタム制御プログラム、およびアプリケーションプログラムは、その暗号サービスを自由に使用することが許可されている。
【0078】
SPは、オペレーティングシステムの安全なプラットフォームではあるが、SPは、単独では、SP上に構築されるコンピュータシステムのセキュリティを保証しない。
オペレーティングシステムなどのシステム制御プログラムと異なり、SPは、非特権命令および非特権レジスタに加えて、一組の呼び出し可能なメカニズムのみを提供する。
これらのSPメカニズムは、基本的なビルディングブロックを提供し、このビルディングブロックから、後述するように、安全なシステムを構築することができる。
SPメカニズムにより、オペレーティングシステムは、下に位置するハードウェアの十分な制御を実行することが可能になり、これによって、全てのオペレーティングシステムのサービスをアプリケーションプログラムおよびユーザに提供することが可能になる。
しかし、SPIは、いかなる特権命令も特権レジスタもファームウェアインタフェースも、上に位置するオペレーティングシステムやカスタム制御プログラムに公開することなく、この機能を提供する。
本発明のIA−64の実施の形態では、内部的に、SPメカニズムは、ウィルス攻撃および侵入攻撃に対する脆弱性を縮小するように設計された方法で、IA−64アーキテクチャの保護機能を一貫して利用する。
使用される手法は、次のものを含む。
すなわち、すべての実行可能コードイメージは、設定されて実行可能になる前に、まず、それらのデジタル署名をチェックすることにより、正当であることが確認されることと、実行可能コードイメージは、実行可能および書き込み可能の双方に同時に許可されることは決してないことと、スタックおよびデータ領域は、読み出しまたは書き込みは可能であるが、決して実行することができないことと、SPメカニズムは、特権レベルおよび保護キーの使用によって区画化されて、これにより、各メカニズムのコードおよびデータは、上に位置するすべてのオペレーティングシステムおよびカスタム制御プログラムから隔離され、かつ、他のすべてのSPメカニズムから隔離されることとを含む。
SPの上に位置するオペレーティングシステムおよびカスタム制御プログラムも、同様のメモリ保護手法を採用することができ、これにより、自身のセキュリティを改善することができる。
しかし、実際には、あらゆるオペレーティングシステムまたはカスタム制御プログラムは、SPインタフェースによって保護を行うツールを提供されているにもかかわらず、自身を適切に保護できないことがある。
【0079】
SPは、システムのリソースを、1つまたは2つ以上の重複しない、相互に隔離されたパーティションに編成する。
このパーティションは、「ドメイン」と呼ばれる。
各ドメインは、オペレーティングシステムまたはカスタム制御プログラムの制御下で動作する。
SPは、ある範囲の仮想メモリアドレスと、ある範囲の物理メモリアドレスと、多数の論理CPUおよび物理CPUと、一組のI/Oデバイスと、一組の識別値とを各ドメインに割り当てる。
SPサービスを提供するために、SPソフトウェアレイヤは、ハードウェアレイヤによって一般に提供される非特権命令、非特権レジスタ、および他のプロセッサ機能に加えて、SPハードウェアレイヤからのある特定の機能を必要とする。
第1の重要な追加機能は、さまざまなプロセスを実行できる少なくとも4つの特権レベルを設けることである。
SPのソフトウェアレイヤは、ソフトウェアレイヤの独占的な使用のために、最も高い2つの特権レベルPL0およびPL1を確保する。
少なくとも3番目の特権レベルPL2は、オペレーティングシステムのルーチンおよびカスタム制御プログラム用に残され、4番目の特権レベルPL3は、アプリケーションプログラム用に残される。
5つ以上の特権レベルを提供するハードウェアも、使用することができ、この場合、付加的な特権レベルは、必要とされないか、または、オペレーティングシステムが使用するためにオペレーティングシステムレイヤに割り当てられる。
本発明の一実施の形態では、PL0で実行されるSPメカニズムは、安全なプラットフォームカーネル(「SPK(Secure Platform Kernel)」)と呼ばれ、PL1で実行されるSPコードは、安全なプラットフォームグローバルサービス(「SPGS(Secure Platform Global Service)」)と呼ばれる。
ドメイン内で実行されるオペレーティングシステムまたはカスタム制御プログラムは、安全なプラットフォームサービスを起動することによって、そのドメインに割り当てられた論理リソースおよび物理リソースを管理する。
このドメインのオペレーティングシステムまたはカスタム制御プログラムは、SPインタフェースより上の最も高い特権レベルで動作し、SPインタフェースは、SPGSおよびSPKの動作特権レベルよりも低い特権レベルである。
【0080】
第2の重要な追加機能は、少なくとも2次元のメモリ分割制御が、オペレーティングシステムに基づくドメイン間でのメモリの分割および各ドメイン内でのメモリの分割と、SP、オペレーティングシステム、およびユーザレベルのアプリケーションプログラムのプロセス間でのメモリの分割とを行うSPに利用可能となることである。
図16は、この第2のメモリ分割機能を示している。
第2のメモリ分割機能はSPによって必要とされ、Intel(登録商標)のIA−64プロセッサアーキテクチャなどの現代のプロセッサアーキテクチャによって提供される。
図16では、全仮想メモリ空間が、大きな長方形1602によって表されている。
全仮想メモリ空間の一部1604は、大きな長方形1602の横方向の全範囲にわたる横方向の長方形として示され、SPのソフトウェアレイヤのみにアクセス可能である。
全仮想メモリ空間の第2の部分は、大きな長方形1602の横方向の全範囲にわたる横方向の長方形1606として示され、各ドメイン内において、そのドメインを管理するオペレーティングシステムによって使用される。
全仮想メモリ空間の第3の部分は、大きな長方形1602の横方向の全範囲にわたる横方向の長方形1608として示され、各ドメイン内の個々のアプリケーションプログラムおよび他のユーザレベルのプロセスによって使用される。
図9を参照して上述したように、TLBエントリのメモリページと関連付けられた特権レベルは、異なる特権レベルで実行されるプロセス間でメモリを分割することを可能にする。
しかし、この特権レベルは、ドメインおよび各ドメイン内で動作するアプリケーションの横方向の分割には十分ではない。
このように、SPのプロセス、オペレーティングシステムのプロセス、およびユーザレベルのプロセスが、異なる特権レベルで実行されているという条件において、横方向のSPのパーティション1604内、横方向のオペレーティングシステムのパーティション1606内、および横方向のユーザレベルのパーティション1608内のメモリの分割を、特権レベルに基づくメモリの分割を使用して部分的に達成することができる。
しかしながら、特権レベルに基づくメモリの分割は、例えば、ユーザレベルのプロセスに割り当てられたメモリの領域を、オペレーティングシステムのプロセスによるアクセスから保護することができない。
【0081】
SPは、多数の同時に実行されるオペレーティングシステムにサービスを提供する。
ここで、各オペレーティングシステムは、多数の種々のユーザレベルのプロセスを管理する。
あるオペレーティングシステムに割り当てられたメモリを、別のオペレーティングシステムによるアクセスから保護するために、オペレーティングシステムのメモリ空間1606およびユーザレベルのメモリ空間1608は、さらにドメインに分割される。
単一のオペレーティングシステムと、そのオペレーティングシステムによって管理されるすべてのユーザレベルのプロセスとが、共にドメインを備え、各ドメインは、仮想メモリの別々の部分を割り当てられる。
したがって、図16において、第1のオペレーティングシステムは、オペレーティングシステムのメモリ空間1606の第1の部分1610を使用し、第2のオペレーティングシステムは、オペレーティングシステムの全メモリ空間1606の第2の部分1612を使用し、第3のオペレーティングシステムは、オペレーティングシステムの全メモリ空間1606の第3の部分1614を使用する。
また、ユーザレベルのメモリ空間1608もドメインに分割される。
その結果、図16において、仮想メモリ空間の小部分1616〜1619、およびオペレーティングシステムのメモリ空間の第1の部分1610は、共に、第1のドメインであるドメイン0に割り当てられたメモリ空間を構成する。
ユーザレベルのメモリ部分1620〜1623およびオペレーティングシステムのメモリ部分1612は、共に、第2のドメインであるドメイン1に割り当てられたメモリを構成する。
ユーザレベルのメモリ部分1624〜1627およびオペレーティングシステムのメモリ部分1614は、共に、第3のドメインであるドメイン2に割り当てられたメモリ空間を構成する。
もちろん、実際のコンピュータシステムでは、特定のドメインに割り当てられたメモリ量は、他のドメインに割り当てられたメモリ量と異なることがあり、異なる個数のユーザプロセスが、異なるドメイン内で実行されることがある。
【0082】
本発明の一実施の形態では、SPは、図9を参照して上述した領域レジスタおよび領域識別子を使用して、メモリをドメインについて分割する。
したがって、共に1つのドメインを構成する各オペレーティングシステムおよびそのオペレーティングシステムによって管理されるプロセスは、特定の組の領域識別子を割り当てられ、それらを独占的に使用する。
図16に示すように、領域識別子に基づくメモリ分割は、2次元のメモリ分割メカニズムのうちの1次元1628と考えることができる。
【0083】
ドメイン間の領域識別子に基づくメモリ分割に加えて、SPは第2の分割メカニズムを必要とする。
この第2の分割メカニズムは、オペレーティングシステムおよびユーザレベルのプロセスに割り当てられたメモリからSPに割り当てられたメモリを分割するだけでなく、オペレーティングシステムとユーザレベルのプロセスとの間で、ドメイン内のメモリを分割するものである。
図16では、この第2の分割メカニズムは、メモリ分割の第2の次元1630として表されている。
説明されたSPの実施の形態では、この第2のメモリ分割次元は、SPソフトウェアレイヤおよびドメインオペレーティングシステム用の領域識別子を含む一定の個数の領域レジスタを割り当てることによって提供される。
残りの領域レジスタは、各ユーザレベルのプロセス用の領域識別子を含む。
IA−64の保護キーは、メモリ領域1604、1606、および1608のすべてにわたって、さらに細かな粒度の区画化を提供する。
例えば、保護キーは、SPKレイヤ内のメカニズムを区画化するのに使用される。
SPは、すべてのレジスタ、物理メモリ、および保護キーを制御するので、SPは、物理メモリと1組の識別子とを、各ドメインの独占的使用のために割り当てることができる。
保護キーに基づくメモリ分割を使用することにより、原則として、メモリの特定の領域を任意のプロセスに割り当てることができ、その領域は、そのプロセスによって独占的にアクセスされる。
【0084】
このように、領域識別子によるメモリの横方向の分割、および、領域レジスタによるメモリの横方向の分割を使用すると、Intel(登録商標)のIA−64アーキテクチャによって提供されるメモリ保護メカニズムにより、SPは、メモリを分割して、SPのみによって独占的にアクセス可能なメモリの領域と、SPおよびある他のオペレーティングシステムまたはユーザレベルのエンティティのみによって独占的にアクセス可能なメモリの領域と、一組のオペレーティングシステムおよびユーザレベルのエンティティならびにSPによってアクセス可能なメモリの領域とを提供することができる。
Intel(登録商標)のIA−64アーキテクチャによって提供される保護キーメカニズムは、さらに細かな粒度を提供する。
現在のコンピュータシステムでは、特権レベル0で実行されるオペレーティングシステム、または、特権レベル0で実行される必要があるI/Oドライバもしくは他の居住者のいずれも、状態を操作して、コンピュータシステム内のすべてのメモリへアクセスすることができる。
これと対照的に、図16に示す2次元メモリ分割方式を使用するSPに基づくシステムでは、SPは、システム内の多くの同時並行実行中のオペレーティングシステムの1つにのみアクセス可能なメモリ領域と、特定のユーザレベルのプロセスにのみアクセス可能なメモリ領域とを提供することができる。
例えば、図16では、SPは、保護キーの割り当てを制御することにより、特定のSPメカニズムのみがアクセス可能なメモリ領域、例えばメモリ領域1632を自ら割り当てることができる。
このようなSPメカニズム独占領域は、暗号鍵の実際の値を記憶するためにSPによって使用され、これにより、いかなるオペレーティングシステムもユーザレベルのプロセスも、秘密鍵の材料にアクセスすることができない。
もちろん、SPKは、特権レベル0で動作するので、悪意のSPKコードはメモリ保護を回避できることになる。
SPKコードを信用する基本は、
(1)限られた個数のSPKメカニズムが存在すること、
(2)各SPKメカニズムは、比較的小さく、分かりやすく、独立しており、かつ、自己充足していること、
(3)SPKソースコードは、独立した専門家によって公開され、詳しく調べられること、
(4)SPKコードの開発プロセスは、複数の人達による詳細なコード検査を含むこと、および
(5)SPKコードイメージは、実行前にデジタル署名され、検証されること
を含む。
【0085】
多くの現在利用可能コンピュータシステムでは、I/Oデバイスのコントローラは、物理メモリに直接アクセスすることができる。
SPは、SP以外のどのルーチンによる物理メモリへの直接アクセスも、外部ハードウェアによる物理メモリへの直接アクセスも許可しない。
その代わり、SPのハードウェアコンポーネントは、I/Oハードウェアにアクセス可能な物理アドレスをハードウェアバスアダプタおよびルーティングコンポーネント内に制限するための仮想アドレスから物理アドレスへの変換を提供するメカニズム、または他の手段を含む必要がある。
これにより、I/Oコントローラは、その目的でSPにより割り当てられたメモリ領域のみとデータを交換することができ、I/Oコントローラに割り当てられたメモリ領域以外のメモリにアクセスすることはできない。
【0086】
SPのソフトウェアレイヤ(図16の1604)は、ハードウェアファームウェアインタフェース(図15の1508)とインタフェースし、また、1つまたは2つ以上のオペレーティングシステムとSPI(図15の1502)を介してインタフェースする。
SPのソフトウェアレイヤは、それ自体少なくとも2つのレイヤに分割され、その少なくとも1つは内部インタフェースである。
図17は、SPのソフトウェアレイヤのブロック図である。
SPのソフトウェアレイヤ1702は、破線1704に沿って、安全なプラットフォームグローバルサービス(「SPGS」)レイヤ1706と、安全なプラットフォームカーネル(「SPK」)レイヤ1708とに分割される。
本発明の一実施の形態では、SPGS1706のルーチンは、特権レベルPL1で実行されるのに対して、SPK1708のルーチンはPL0で実行される。
この内部分割によって、比較的小さなSPKを構成することができる。
この比較的小さなSPKは、形式的検証方法であるコードウォークスルーによって検証することができ、最終的には、セキュリティおよびコンピュータオペレーティングシステムの団体内の専門家への公開により検証することができる。
このように、SPKの最も高い特権コードを、可能な限りバグのない強固なものとすることができ、システムの他のすべての部分は、トロイの木馬や、他のプロセスに割り当てられた保護メモリ領域に有害にアクセスして当該領域を変更できるバグ生成型PL0コードから十分に保護される。
【0087】
SPGSインタフェースは、論理的に、次の3つの主なサブインタフェースを備える。
(1)SPプラットフォーム管理サービス1710。SPプラットフォーム管理サービス1710は、システムの論理リソースおよび物理リソースを環境設定する手段と、ドメインオペレーティングシステムまたはカスタム制御プログラムがマシンの特権状態に作用する手段とを提供する。
(2)SPセキュリティ管理サービス1712。SPセキュリティ管理サービス1712は、SPの暗号機能および安全な記憶機能を提供する。これらの機能には、例えば、さまざまなシステムコンポーネントを隔離する個別の保護キーによって、それぞれ保護可能な個別の機能コンポーネントが含まれる。
(3)SP拡張部1714。SP拡張部1714は、SPの機能要求を次第に拡張することを可能にし、例えば暗号アルゴリズムの追加といったSPへの機能の追加を可能にする。図17では、これらのサブインタフェースの分割は、関連した議論を明確にするためにSPKに対して実行される。SPインタフェースは、全体的に、SPKメカニズムに加えて、SPKメカニズムを順に起動するSPGSサービスからも構成することができるし、SPKメカニズムを必要に応じて起動するSPGSサービスからも構成することができる。
【0088】
SPプラットフォーム管理サービスのサブインタフェース1710は、
(1)SPプラットフォームサービス1716、
(2)ドメイン制御サービス1718、
(3)プロセッサ制御サービス1720、
(4)プラットフォームポリシー制御サービス1722、ならびに
(5)ドメイン間サービスおよびドメイン内サービス1724
を含む。
SPプラットフォームサービス1716は、特権動作を必要とする機能、SPリソースを伴う機能、またはセキュリティ依存の機能を実行するオペレーティングシステムまたはカスタム制御プログラムによって起動される。
ドメイン制御サービス1718は、ドメインの生成、環境設定、再初期化、およびシャットダウンを提供する。
プロセッサ制御サービス1720は、論理CPUおよび物理CPUの環境設定およびスケジューリングを提供する。
プラットフォームポリシー制御サービス1722は、例えばシステムリソースの割り当てなどのプラットフォームポリシーの仕様、保存、および適用を提供する。
ドメイン間サービスおよびドメイン内サービス1724は、ドメイン内の論理CPU間およびドメイン間の論理CPU間でのイベントの伝達、ドメイン間でのリソースの共有、ならびに高速ネットワーク接続またはデータ交換のためのデータ転送の提供を提供する。
SPプラットフォーム管理サービス1710は、後述する1つまたは2つ以上のSPメカニズムを順に起動することができる。
SPプラットフォーム管理サービスは、SPメカニズムを呼び出す前にパラメータが正当であることを確認し、かつ呼び出しを認証する。
いくつかの具体的なSPプラットフォームサービスルーチンインタフェースのさらに詳細な内容は、付録Aに提供される。
【0089】
SPセキュリティ管理サービスのサブインタフェース1712は、
(1)安全なリポジトリサービス1726、および
(2)呼び出し側認証サービス1728
を含む。
安全なリポジトリサービス1726は、オペレーティングシステム、カスタム制御プログラム、またはユーザアプリケーションプログラムによって起動され、システムの最も高い特権レベルPL0で実行される特定のメカニズムにのみ利用可能な秘密事項を使用する機能を提供する。
これらの特定のメカニズムには、
(a)1つまたは2つ以上の暗号アルゴリズムを使用してデータの暗号化および復号を提供する暗号サービス、および
(b)安全なデータサービス
が含まれる。
呼び出し側認証サービス1728は、ドメインが、SPのみにアクセス可能な状態に維持される安全なタグをシステムオブジェクトと関連付ける手段と、ドメインが、そのタグを使用して、プラットフォームおよび安全なリポジトリサービスへのアクセスを認証する手段とを提供する。
上記システムオブジェクトには、特定のユーザ、アプリケーションプログラム、オペレーティングシステムコンポーネント、ディレクトリ、ファイルおよびディスパッチ可能オブジェクトが含まれる。
これらの機能によって使用される秘密事項には、暗号鍵の材料が含まれる。
鍵を隠すことにより、ドメインオペレーティングシステム、カスタム制御プログラム、またはユーザアプリケーションプログラムが、たとえ攻撃者によって危険にさらされても、鍵を使用するドメインからでさえも、鍵の材料を安全な状態に維持することができる。
安全なシステムは、特定のインタフェースを通じて行う場合を除いて、アクセスも変更もできないリポジトリ、例えば安全なログを確立する必要がある。
SPは、ドメインオペレーティングシステムまたはカスタム制御プログラムが、安全なリポジトリに貢献でき、かつ照会できる基本的な機能を提供する。
具体的なSPリポジトリサービスのルーチンインタフェースのさらに詳細な内容は、付録Bに提供される。
【0090】
SPプラットフォームサービス1716は、メモリ管理サービス、プロセス管理サービス、および割り込み管理サービスを含む。
メモリ管理サービスは、仮想アドレスと物理アドレスとのマッピングの生成、操作、および削除の制御と、プロセッサTLB(図9の914)および仮想ページテーブル(図10の1004)の制御とを提供する。
IA−64に基づくSPの実施は、領域識別子の重複しない組を各ドメインに割り当てる。
これにより、拡張された仮想アドレスは、すべてのドメインにわたってユニークなものとなる。
また、各ドメインには、重複しない範囲の物理メモリも割り当てられる。
これにより、あるドメインが、別のドメインの物理メモリにアクセスできないことが保証される。
また、メモリのすべてのページは保護キーとも関連付けられる。
これにより、メモリアクセスの区画化または他のさらに細かな粒度の制御が可能になる。
【0091】
プロセス管理サービスは、物理プロセッサ上でのプロセスの実行の制御を提供する。
SPは、ディスパッチ可能オブジェクトおよび論理CPUという2つのプロセッサに関連した抽象化を実施する。
ディスパッチ可能オブジェクトは保存された制御のスレッドであり、ドメイン内の関連付けられたアドレス指定状況である。
ディスパッチ可能オブジェクトは、制御のスレッドが以前に割り込みを受けたポイントで実行を再開するのに必要な状態を含む。
アドレス指定状況は、関連付けられた領域IDおよび保護キーの組であり、ドメインの組から引き出される。
これらの値は、ディスパッチ可能オブジェクトの合法的な拡張仮想アドレス指定状況を決定する。
オペレーティングシステムまたはカスタム制御プログラムは、現在の実行状態をあるディスパッチ可能オブジェクトに保存し、別のディスパッチ可能オブジェクトから実行状態を復元することにより、ディスパッチ可能オブジェクトをスケジューリングする。
【0092】
論理CPUは、1つまたは2つ以上の物理プロセッサのドメインのビューである。
ドメインは、1つまたは2つ以上の論理プロセッサを持つことができる。
あるドメインの論理プロセッサの個数、および、すべてのドメインの論理プロセッサの総数は、システムの物理プロセッサよりも少なくてもよいし、等しくてもよいし、あるいは多くてもよい。
論理プロセッサは、SPによってスケジューリングされて、物理プロセッサにディスパッチされる。
オペレーティングシステムまたはカスタム制御プログラムは、一般にこのスケジューリングに気付かない。
これにより、OSが関与することなく、CPUの環境設定に対する変更が可能となる。
【0093】
SP割り込み管理サービスは、直接割り込みの処理、および、その後のオペレーティングシステムまたはカスタム制御プログラムへの割り込みの通知のディスパッチを提供する。
割り込みは、特定の処理ルーチンへの制御の転送を引き起こす任意のイベントである。
IA−64アーキテクチャによって定義されるように、割り込みは次の4つのカテゴリーに分割される。
(1)アボート:アボートは、プロセッサのリセットまたは内部マシンの故障のいずれかで発生する。
(2)フォルト:フォルトは、実行できないか、または実行されるべきでない動作を指定する命令により発生する同期インタラプト、あるいはその命令が実行される前に、システムの介入が必要とされる同期インタラプトである。
(3)トラップ:トラップは、完了した命令がシステムの介入を必要とする場合に発生する同期インタラプトである。
(4)非同期インタラプト:非同期インタラプトは、外部エンティティまたはプロセッサとは独立したエンティティが発生する非同期のイベントまたは信号を表す。
このイベントには、I/Oデバイスに関連したイベントが含まれる。
非同期インタラプトは、優先クラス内における非同期インタラプトの発生時間順でハンドラに配布される必要がある。
図17では、アボート、フォルト、およびトラップが、「例外」と呼ばれ、非同期インタラプトが「インタラプト」と呼ばれる。
【0094】
さまざまなPSKメカニズムが、図17の破線1704と論理的に一致した内部SPK/SPGSインタフェースを通じてSPGSに提供される。
SPKメカニズムは、呼び出しを介してSPGSによってアクセスされる。
SPKは、呼び出し側プロセスの状況の中で一般に実行される一組のメカニズムを備える。
SPKメカニズムは、
(1)メモリ管理メカニズム1730、
(2)プロセッサディスパッチメカニズム1732、
(3)例外処理メカニズム1734、
(4)インタラプト処理メカニズム1736、
(5)デバッグおよび監視メカニズム1738、
(6)暗号メカニズムおよび記憶装置1740、
(7)安全なリポジトリメカニズムおよび記憶装置1742
を含む。
【0095】
メモリ管理メカニズムは、TLB、VHPT、および他のページテーブルへの変換を挿入する特権動作を実行する。
プロセッサディスパッチメカニズムは、ディスパッチ可能オブジェクトおよび論理CPUへの状態の保存、ならびに、ディスパッチ可能オブジェクトおよび論理CPUからの状態の復元を処理する。
これらのメカニズムは、例えばアドレス指定状況などの状態の多くが特権を有することから必要とされる。
例外処理メカニズムは、フォルト、トラップ、特別なハードウェアイベント、およびSP発生イベントを取り扱う。
特別なハードウェアイベントは、例えば、マシンチェックやハードウェア環境設定の変更などである。
オペレーティングシステムまたはカスタム制御プログラムは、SPIを介して例外ハンドラルーチンを登録し、例外が発生した時に例外ハンドラルーチンが起動されるようにする。
例外が発生すると、SPは最小量のプロセッサの状態を保存し、次に、登録された例外ハンドラに制御を転送する。
フォルトおよびトラップの中には、性能のため、または、ドメインオペレーティングシステムもしくはカスタム制御プログラムに対するインタフェースを簡略にするために、SPによって直接処理されるものがある。
オペレーティングシステムまたはカスタム制御プログラムが、インタラプトイベントの通知を受信する必要がある場合には、オペレーティングシステムまたはカスタム制御プログラムは、対応するドメインにおいて発生が予想される各インタラプトに対して、SPIを介してインタラプトハンドラルーチンを登録する。
インタラプトが発生すると、SPは、予め構成された特別の実行環境で、関連付けられたハンドラルーチンを起動し、高速のインタラプト応答を可能にする。
インタラプトは、時間順を維持した方法で各オペレーティングシステムまたは各カスタム制御プログラムへ配信するために、SPによってキューに入れられる。
SPによって提供される1つの特別なインタラプトは、タイマチック(timer tic)であり、これは一定時間間隔で発生するインタラプトである。
各オペレーティングシステムまたは各カスタム制御プログラムは、この一定時間間隔の任意の整数倍の時間間隔で通知を受けることを指定することができる。
【0096】
デバッグおよび監視メカニズムは、マシンレジスタの集まりを使用して、デバッグおよび性能監視を援助する。
このSPメカニズムは、オペレーティングシステムまたはカスタム制御プログラムに必要な特権アクセスを実行して、デバッグおよび性能監視のマシンリソースを利用する。
暗号メカニズムおよび安全な記憶メカニズムは、暗号機能、復号機能、および鍵管理機能を提供する。
暗号アルゴリズムには、標準的な対称鍵ブロック暗号および対称鍵ストリーム暗号、公開鍵暗号、ならびに安全なハッシュ関数が含まれる。
鍵管理機能には、鍵生成、鍵インポート、鍵エクスポート、および鍵の材料準備が含まれる。
安全なリポジトリメカニズムおよび記憶メカニズムは、秘密データを、関連付けられたアクセス方法と共に含むソフトウェアオブジェクトであって、システムの最も高い特権レベルに存在するソフトウェアオブジェクトとみなすことができる。
このメカニズムの組は、拡張可能である。
【0097】
<安全なブートプロセス>
適切な構造化および実施により、オペレーティングシステムが、安全な基盤をユーザレベルのアプリケーションおよびプロセスに提供できるように、SPは、システムのコンポーネントを安全にできるメカニズムを提供する。
SPの重要なコンポーネントは、安全なブート手順である。
この安全ブート手順は、最初の電源投入から、1つまたは2つ以上のオペレーティングシステムのプロセスの開始までの一連の既知の正しいシステム状態を保証するものである。
図18は、安全なブートプロセスに関連したシステムのハードウェアコンポーネントのブロック図である。
関連するハードウェアコンポーネントは、
(1)プロセッサ1802、
(2)読み出し専用メモリ(「ROM」)1806、
(3)メインメモリ1816、
(4)マスストレージデバイス1818、ならびに
(5)さまざまな内部バス1824〜1829およびバスブリッジ/ルータ/コントローラ1830〜1832
を含む。
プロセッサ1802は、初期ファームウェア正当性確認メカニズム1804を含む。
この初期ファームウェア正当性確認メカニズム1804は、アクティブロジックおよび記憶されたファームウェア命令を備える。
ROM1806は、デジタル署名されたファームウェア命令の組1808〜1811を含む(デジタル署名は、小さなフィールド1812〜1815として示される)。
これらのファームウェア命令の組は、n個の異なるファームウェア命令の組を表し、各組は、安全なブートプロセスの異なるフェーズに関連する。
マスストレージデバイス1818は、OSローダプログラムおよび少なくとも1つのOS1820の命令と共に、当該OSローダのデジタル署名1822および当該OSのデジタル署名1823を記憶する。
さまざまな内部バス1824〜1829およびバスブリッジ/ルータ/コントローラ1830〜1832は、上記コンポーネント間のデータ通信を容易にする。
【0098】
図19は、SPの安全なブートプロセスコンポーネントの一実施の形態を表す安全なブートプロセス「secure_boot(安全なブート)」の制御流れ図である。
図19では、secure_bootは、シングルプロセッサシステム用に説明されるが、マルチプロセッサシステムをブートする代わりとなるsecure_bootルーチンは、図19を参照して説明されるsecure_bootルーチンを直接拡張したものとなる。
ステップ1902では、secure_bootは、プロセッサに電源を投入し、プロセッサを制御して、プロセッサの一部として含まれるあらゆる自己テストルーチンを実行する。
ステップ1904では、secure_bootは、フェーズ1のファームウェア命令の組(図18の1808)のデジタル署名(図18の1812)の正当性を確認する。
ステップ1906では、secure_bootは、プロセッサを制御して、フェーズ1のファームウェア命令の組を実行する。
次に、ステップ1908〜1912を備えたwhileループにおいて、secure_bootは、ステップ1908で、次のファームウェア命令の組をチェックする。
ステップ1908で、これから実行される別の組のファームウェア命令が残っていると判断されると、secure_bootは、ステップ1909で、そのファームウェア命令の組を実行のためにメインメモリに移動させるかどうかを判断する。
この次のファームウェア命令の組が、メインメモリに移動される場合には、secure_bootは、ステップ1910で、この次のファームウェア命令の組をROMからメインメモリにコピーする。
次に、ステップ1911で、secure_bootは、このコードを実行可能にすることができ、コードの変更を防止すると共に、この次の組の命令に関連付けられたデジタル署名の正当性を確認する。
正当性の確認に続いて、secure_bootは、ステップ1912で、プロセッサを制御して、この次の命令の組を実行する。
「正当性を確認する」という用語は、以下では、デジタル署名の正当性の確認、および、実行可能ではあるが書き込み可能ではないコードアクセスの許可の設定を意味するために使用される。
もちろん、例えばステップ1904および1911といったすべてのデジタル署名の正当性の確認ステップにおいて、デジタル署名が正当であると確認できない場合には、secure_bootは、エラーを返し、機能しなくなる。
正当であると確認できないファームウェアまたはソフトウェアは、secure_bootが再実行される前に、訂正される必要がある。
【0099】
ROMのファームウェア命令の組のすべてが、secure_bootによって正当であると確認され、かつ、実行されるとすぐに、secure_bootは、ステップ1914で、SPローダをマスストレージデバイスからメモリにロードする。
そして、secure_bootは、ステップ1916で、SPローダに含まれるデジタル署名の正当性を確認する。
secure_bootは、ステップ1918で、SPローダを実行してSPソフトウェアをロードし、SPソフトウェアに関連付けられたデジタル署名の正当性を確認し、その後、1つまたは2つ以上のSPGSルーチンを実行する。
ファームウェア命令およびSPコードイメージのさまざまなフェーズは、異なるプライベート鍵によって署名されている可能性があり、デジタル署名の正当性の確認を行うために、対応する公開鍵を必要とする可能性があることに留意されたい。
実行可能なコードイメージの正当性が確認されるとすぐに、そのコードイメージに含まれるあらゆる公開鍵を信用することができる。
安全なブートプロセスは、安全なブートプロセスの開始時にハードウェアによって実行された正当性の確認に基づいて、信用チェーン(chain of trust)を構築し、検証された最後のコードイメージの実行を通じて信用チェーンを延長するプロセスとみなすことができる。
すべてのOSローダおよびOSは、この信用チェーンをOSレイヤおよびアプリケーションレイヤに延長することが可能であり、かつ、そのことが推奨される。
【0100】
ステップ1920では、SPGSは、ルート(root)暗号鍵を取得する必要がある。
これは、外部からその鍵を供給することにより行うことができるか、または、プラットフォームに実装されたセキュリティチップ、例えばTCPAチップなどによって行うことができる。
これらのルート鍵を使用し、OSがSPを越えて信用チェーンを延長するように設計されていたと仮定すると、SPGSは、OSローダをロードし、正当性を確認し、OSローダを実行して少なくとも1つのOSをロードし、OSの正当性を確認し、そして、ステップ1924で、少なくとも1つのOSを実行する。
OSが実行を開始する時点では、十分に正当性が確認され認証された安全なSPが、OSをサポートするためにすでに初期化されている。
その後、システム動作中は、SPによって提供される良質な組のサービスを使用してシステムセキュリティを維持することが、ステップ1924で起動された1つまたは2つ以上のOSの責務である。
OSが、たとえ、成功した攻撃によって侵入されたとしても、現在のOSの脆弱性とは反対に、攻撃者は、特権レベル0を取得しない。
【0101】
本発明を、特定の実施の形態の観点で記載してきたが、本発明をこの実施の形態に限定することを意図するものではない。
本発明の精神内における変更は、当業者に明らかであろう。
例えば、本発明の一実施の形態を表す結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースは、多くの異なるプログラミング言語およびプログラム仕様言語によるほとんど無限の個数の異なるルーチンインタフェースにより実施することができる。
記載された実施の形態は、ハードウェアレイヤの主要なコンポーネントとして、Intel(登録商標)のIA−64アーキテクチャを特徴として備えているが、他の異なる現代のコンピュータプロセッサアーキテクチャを、安全なプラットフォームのハードウェアレイヤに使用することもできる。
本発明の一実施の形態を表す、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースは、上述したサービスおよび機能に加えて、さらに別のサービスおよび機能を提供するように拡張することができ、多くの別の、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースを考案することができる。
【0102】
上記記載は、説明の目的で、具体的な専門用語を使用して本発明の十分な理解を提供した。
しかしながら、本発明を実施に移すのに、その具体的な詳細は必要とされないことが、当業者には明らかであろう。
上記本発明の具体的な実施の形態の記載は、例証および記載の目的で提供されている。
それらの記載は、網羅することを意図するものではなく、また、開示された正確な形式に本発明を限定することを意図するものでもない。
多くの変更および変形が、上記教示を考慮して可能なことは明らかである。
実施の形態は、本発明の原理およびその実際の適用を最も良く説明するために示され、かつ、記載されており、これにより、他の当業者は、本発明、および、予想される特定の使用に適したさまざまな変更を有するさまざまな実施の形態を最も良く利用することが可能になる。
本発明の範囲は、特許請求の範囲の請求項およびそれらの均等物によって定義されることが意図されている。
【0103】
[付録A]
本発明の実施の形態では、安全なプラットフォームサービスは、すべてのオペレーティングシステムおよびカスタム制御プログラムに、下に位置するハードウェア特権レジスタおよび命令によって実施される機能を提供する。
これは、SPGSおよびSPKによって提供されたプラットフォームサービスに対する、構成されたソフトウェアインタフェースによって行われる。
【0104】
いくつかのプラットフォームサービスは、ある特権レベルレジスタおよび特権レベル命令によって提供される機能を抽象化する。
他のプラットフォームサービスは、特定の特権レジスタおよび/または特権命令に密接に対応する。
安全なプラットフォームアーキテクチャの目的は、各オペレーティングシステムおよび各カスタム制御プログラムに、下に位置するハードウェアの全機能を提供することである。
ただし、この全機能は、その制御下にあるそれらのシステムリソースのみに提供される。
【0105】
安全なプラットフォームサービスは、いくつかのサービスのカテゴリーを備える。
これらのサービスは、オペレーティングシステムまたはカスタム制御プログラムに次のことを可能にするサービスを含む。
・物理メモリアドレス指定および仮想メモリアドレス指定の管理
・I/O操作およびDMA I/O操作のアドレス指定の管理
・ディスパッチ可能なオブジェクト(「DO(dispatchable object)」、さまざまなオペレーティングシステムによって「プロセス」や「タスク」や「スレッド」と呼ばれるエレメントの状態保存領域)の管理
・同期割り込みおよび非同期割り込みの管理
【0106】
本発明の一実施の形態では、これらのカテゴリーの2〜3の代表的なサービスインタフェースは、以下のものを含む。
【0107】
<アドレス指定>
spSetPageSize(ページサイズ、仮想アドレス、サイズ)
仮想アドレスの範囲のページサイズを指定する。
【0108】
Old_Attributes=spMapMemory(仮想アドレス、物理アドレス、サイズ、プロパティ);
仮想アドレスの範囲をマッピングする。
【0109】
spSyncMappings(仮想アドレス、サイズ);
複数のプロセッサ間のマッピングを同期させる。
【0110】
I/O Address=spEnableDMAmap(仮想アドレス、サイズ、読み出し|書き込み);
DMA I/Oの読み出し操作または書き込み操作用の物理アドレスのマッピングを確立する。
【0111】
spDisableDMAmap(仮想アドレス、サイズ);
DMA I/O操作用の物理アドレスのマッピングを無効にする。
【0112】
<プロパティ>
プロパティ値は、マッピングの設定可能パラメータをドメインOSとSPとの間で通信するために使用される。
例として、以下の表に記載のものが含まれる。
【0113】
【表1】
【0114】
<ディスパッチ可能オブジェクト(注1)>
(注1)このインタフェースは、IA−64特有である。
他のアーキテクチャについて類似のインタフェースを定義することができる。
【0115】
[初期化および起動]
void(*os_entry)(spHandle defaultDO,spHandle CPU)
これは、OSブートイメージからのエントリアドレスである。
実行は、(MPシステムの)ブートプロセッサのここで開始する。
実行環境は、このルーチンをC言語で記述できるように十分初期化されている。
SPサービスが利用可能である。
【0116】
void(*os_mp_entry)(spHandle defaultDo,spHandle CPU)
これは、マルチプロセッサの動作が直ちに開始可能な場合に、OSによって登録されるエントリアドレスである。
実行環境は、カーネルの追加機能が初期化されて有効にされる点を除いて、OSエントリポイントと同じである。
【0117】
spErr spStartMP(void(*mpEntry)(spHandle,spHandle))
マルチプロセッサ動作に移行した時にOSから呼び出されると、他のCPUは、この読み出しが復帰する前に実行を開始することができる。
【0118】
[プロセス管理]
spErr spCreateDO(spHandle *newDO,void *stack, void *rse, unsigned int flags)
指定されたstack(スタック)/RSE領域を有する新しいディスパッチ可能なオブジェクトを生成する。
flags(フラグ)は、さまざまな生成モード、例えば、親のDO仮想アドレス指定をコピー/共有/書き込み時コピー(copy-on-write)のいずれにするかを指定する。
stackおよびRSE領域は、親のDOによってアクセス可能でなければならない。
【0119】
spErr spSwithcDo(spHandle newDO, int die)
現在のCPUの実行を、指定されたDOに切り換える。
die(消滅)フラグが設定されている場合には、現在のDOは、この呼び出しが復帰する前に削除される。
newDO(新しいDO)が、合法的なDOハンドルでもなく、すでにディスパッチされているわけでもない場合には、この呼び出しは、失敗に終わることがある。
【0120】
spErr spResume(spResumeState *resumeState)
構成されたプロセス状態、または、予め保存されたプロセス状態を再開する。
この呼び出しは、特権状態の変更、例えばドメイン制御されるPSRビットの変更が必要な場合に使用される。
【0121】
spErr spDeleteDO(spHandle victim)
指定されたDOを削除する。
指定されたDOは、この呼び出しが復帰する前に削除される。
newDOが、合法的なDOハンドルでもないか、あるいは現在ディスパッチされている場合には、この呼び出しは、失敗に終わることがある。
【0122】
デバッグおよび性能監視
spErr spGetDebugInfo(struct spDebugInfo *debugConfig)
次の情報、すなわち、データブレークレジスタの個数、命令ブレークレジスタの個数、有効な最大データアドレスマスク、および有効な最大命令マスクを記憶する。
ブレークレジスタが利用可能でない場合には、値は、ゼロに設定される。
SPは、1つまたは2つ以上の高い特権レベルのレジスタを自己が使用するために予約することができるので、戻り値は、実際のハードウェアより少なくなることがある。
【0123】
spErr spSetDBR(int reg,void *addr,unsigned long mask,unsigned int mode)
spErr spSetIBR(int reg,void *addr,unsigned long mask,unsigned int mode)
(access & mask)==(addr & mask)である場合に、データ(命令)デバッグフォルトを発生させるために、指定されたデータ(命令)ブレークレジスタを設定する。
mode(モード)パラメータは、データブレークポイントの読み出しアクセスおよび/または書き込みアクセス、命令ブレークポイントの実行、およびアクセス特権レベル(ドメインOSの特権レベル、アプリケーションの非特権レベル)を指定する。
modeが0である場合に、指定されたデバッグレジスタは、無効にされる。
【0124】
reg(レジスタ)が有効なデバッグレジスタでなく、addr(アドレス)が無効である場合、または、mask(マスク)またはmodeが、ハードウェアによって受け付けられない場合に、この呼び出しは失敗に終わる。
【0125】
spErr spSetPMC(int reg,unsigned int event,unsigned int flags)
指定された汎用モニタの制御を設定する。
4≦reg≦7である。
event(イベント)は、実施に固有のものである。
flagsパラメータは、どの特権レベルが監視されるか、関連付けられたカウンタをリセットするかどうか、および有効なモニタが特権を有するか、または、アプリケーション制御下にあるかを指定する。
【0126】
他の呼び出しと異なり、これは、アプリケーション(特権レベル3)から呼び出すことができる。
regが無効である場合、または、アプリケーションが特権を有するモニタを設定しようとした場合に、この呼び出しは失敗に終わる。
【0127】
spErr spReadPMD(unsigned long long *val,int reg)
指定された汎用モニタのイベントカウントを読み出す。
4≦reg≦7である。
【0128】
他の呼び出しと異なり、これは、アプリケーション(特権レベル3)から呼び出すことができる。
regが無効である場合に、この呼び出しは失敗に終わる。
モニタが特権を有し、かつ、呼び出し側が特権レベル3である場合に、IA−64ハードウェアの挙動との一貫性を保つために、値0が戻される。
【0129】
spErr spSetPMCX(int reg,unsigned long val,unsigned int flags)
指定された汎用モニタの制御を設定する。
reg<4またはreg>7である。
val(変数)は、実施に固有のものである。
【0130】
他の呼び出しと異なり、これは、アプリケーション(特権レベル3)から呼び出すことができる。
regが実施されておらず、valが違法な場合、または、アプリケーションが、特権を有するモニタを設定しようとした場合に、この呼び出しは失敗に終わる。
【0131】
spErr spReadPMDX(unsigned long long *val,int reg)
指定された性能監視データのイベントカウントを読み出す。
0≦reg≦255である。
【0132】
他の呼び出しと異なり、これは、アプリケーション(特権レベル3)から呼び出すことができる。
regが無効である場合に、この呼び出しは失敗に終わる。
モニタが実施されていないか、または、特権を有し、かつ、呼び出し側が特権レベル3である場合に、IA−64ハードウェアの挙動との一貫性を保つために、値0が戻される。
【0133】
[スケジューリングおよびシャットダウン]
spErr spDispatchAffinity(int value)
現在のCPUのディスパッチとの親和性(affinity)を設定する。
valueは、最後のCPUへの再ディスパッチの相対的な重要度である。
0≦value≦100である。
【0134】
spErr spPause(void)
現在のCPUを、準備状態にあるスケジューリングプールに入れる。
【0135】
spErr spHalt(void)
外部インタラプトがドメインに配信されるまで、現在のCPUのスケジューリングを一時的に停止する。
プロセッサ間通信は、外部インタラプトとしてモデル化されることに留意されたい。
【0136】
spErr spShutDown(void)
現在のCPUをスケジューリングから永久に取り除き、関連付けられたすべての状態を削除する。
【0137】
<割り込み>
IA−64アーキテクチャは、割り込みを、特定の処理ルーチンへの制御の引渡しを引き起こすイベントとして定義する。
4つの割り込みのクラスがある。
【0138】
1.アボート:プロセッサがマシンチェック(内部故障)またはプロセッサのリセットを検出した場合の割り込みである。
アボートは、PALに基づく割り込みである。
アボートは、ドメインOSに反映される場合もあるし、反映されない場合もある。
2.インタラプト:プロセッサがサービスの実行要求を受信した場合の割り込みである。
インタラプトは、外部I/Oによる場合もあるし、他のプロセッサによる場合もあるし、CPUの内部イベント(例えばタイマチック)による場合もある。
3.フォルト:現在のItaniumまたはIA−32の命令であって、実行できない動作もしくは実行されるべきでない動作、または、その命令が実行される前にシステムの介入が必要とされる動作を要求する命令に対して発生する割り込みである。
フォルトは、命令ストリームに対して非同期である。
4.トラップ:ちょうど実行されたIA−32またはItaniumの命令が、システムの介入を必要とする時に発生する割り込みである。
トラップは、命令ストリームに対して同期している。
【0139】
アボート、フォルト、およびトラップは、例外(exceptions)と総称される。
【0140】
spErr spRegisterISR(int vector,void(*isr)(...),void *param)
外部インタラプトがドメインに配信される時に呼び出されるルーチンを登録する。
【0141】
spErr spRegisterHandler(void(*eHandler)(...),void *param)
例外がドメイン内に発生した時に呼び出されるルーチンを登録する。
【0142】
spErr spSPL(int level)
指定されたlevel(レベル)以下のベクタ上のすべてのインタラプトの配信を防止する。
level==SPDISABLEINTRの場合には、すべてのインタラプトは無効にされる。
level==SPENABLEINTRの場合には、すべてのインタラプトは有効にされる。
インタプラトレベルが低い場合には、任意の有効にされた保留中のインタラプトを、呼び出しが復帰する前に配信することができる。
【0143】
spErr spSignal(spHandle logicalCPU,void *message)
指定されたCPUにプロセッサ間の「インタラプト」を配信する。
64ビットのmessage(メッセージ)の値および送信側CPU用のハンドルは、インタラプト値として配信される。
【0144】
[付録B]
本発明の実施の形態では、安全なリポジトリサービスが、オペレーティングシステム、カスタム制御プログラム、およびユーザアプリケーションに、当該サービス自体以外では決してアクセス可能であってはならない重要なデータの処理と、場合によっては当該重要なデータの保存とを必要とする機能を提供する。
SPアーキテクチャの構造によって、このような重要なデータを操作する機能のバイナリコードイメージに加えてこのような重要なデータも、オペレーティングシステムのコードによっても、カスタム制御プログラムのコードによっても、アプリケーションのコードによっても直接読み出しできず、また、直接変更できないことが保証される。
【0145】
安全なリポジトリサービスの第1の例は、暗号サービスである。
暗号サービスは、平文の暗号鍵の材料などのデータによる処理、および、当該データの保管を必要とする。
暗号サービスの基本的な組は、本発明のあらゆる実施の形態において必要不可欠である。
安全なリポジトリサービスの追加例としては、操作可能なセキュリティポリシーおよび状態データを利用するサービスや、重要な会計監査情報をログに記録するサービスや、暗号サービスの代わりの組もしくは高級な組を提供するサービスが含まれる。
上記操作可能なセキュリティポリシーおよび状態データは、例えば、IPSecおよびSELinuxに必要とされるものである。
暗号サービスの基本的な組のソースコードだけでなく、SPKのすべてのソースコードも、公開され、公共のセキュリティに開放される。
付加物を有する安全なリポジトリサービスのプロバイダは、自身の付加物の詳細を自由に公開することもできるし、秘密にすることもできる。
【0146】
SPアーキテクチャは、組み込まれ得る安全なリポジトリサービスの組について制限はない。
このアーキテクチャは、慎重に構造化されて、安全なリポジトリサービスの各組を区画化されている。
これにより、各組は、他のすべての安全なリポジトリサービスと、SPの安全なプラットフォームサービスとの双方から隔離される。
これは、重要なデータおよびコードイメージを、オペレーティングシステムおよびアプリケーションだけでなく、他のすべてのSPGSコンポーネントおよびSPKコンポーネントからも保護することによって、それら重要なデータおよびコードイメージへの直接アクセスをさらに制限する。
これは、従来のオペレーティングシステムアーキテクチャと明らかに大きく異なる。
従来のオペレーティングシステムアーキテクチャでは、限られた量の重要なデータを、成功した攻撃者から保護することにさえも、専用の特別な目的のハードウェアが必要とされる。
特別な目的のハードウェアを備えていても、このような攻撃者は、メインメモリの他のすべてのデータもしくは外部記憶デバイスに記憶された他のすべてのデータに自由にアクセスすることができるか、または、当該特別な目的のハードウェアの可用性もしくは内部状態とインタフェースすることができる。
大きなサーバでは、コスト、重要なデータの量、および性能のボトルネックを回避する必要性から、十分な量の専用の特別な目的のハードウェアモジュールが十分な解決策となることが妨げられている。
これに対して、SPアーキテクチャは、安全に保護されなければならないデータを保持および処理するすべてのメインプロセッサの利用、および、必要に応じて大量のメインメモリの利用が可能となる。
【0147】
本発明の一実施の形態では、IA−64の保護キーレジスタを使用して、区画が実施される。
SPへのエントリにおいて、ハードウェアの状態は、指定された区画にのみアクセスを制限するように設定され、制御は、指定されたサービスに渡される。
この関連付けを統率するすべてのSPのソースコードは、公開され、公共のセキュリティに開放されてもよい。
【0148】
暗号サービスの基本的な組の正確なレパートリは、SSL/TLS(注2)、TCPA(Trusted Computing Platform Alliance)の主仕様のバージョン1.0(注3)、またはMicrosoft CAPI(Crypto API)仕様(注4)などの必要とされる暗号の標準規格にサポートを提供するために選択される。
ハードウェアセキュリティチップが、現在、開発され、ハードウェアに組み込まれて、いくつかの基本的な暗号機能にサポートを提供している。
SPの暗号サービスの基本的な組の実施は、構造化され、これらのセキュリティチップが存在する場合に、その使用を可能にする。
【0149】
広範に見ると、基本的な暗号サービスは、対称鍵および非対称鍵の生成手段、エクスポート手段、インポート手段、取り替え手段、保存手段、および破壊手段を含む。
また、内部の使用またはサポートされた標準規格に必要な暗号のレパートリの暗号機能および復号機能の一式が含まれる。
同様に、乱数発生器およびユニークのIDの発生器だけでなく、暗号のハッシュ関数、メッセージ認証機能、デジタル署名機能の必要な一式も提供される。
【0150】
(注2)詳細は、http://www.ietf.org/ID.htmlに見ることができる。
(注3)この仕様の変更が現在予定されている。
詳細は、http://www.trustedpc.org/home/pdf/Mainv1_0.pdfに見ることができる。
(注4)詳細は、http://www.microsoft.com/technet/security/prodtech.cryptech.aspに見ることができる。
【図面の簡単な説明】
【0151】
【図1】汎用コンピュータシステム内のハードウェアレイヤ、オペレーティングシステムレイヤ、およびアプリケーションプログラムレイヤを示すブロック図である。
【図2】初期のコンピュータシステムを示すブロック図である。
【図3】初期のメインフレームコンピュータ内のオペレーティングシステムの論理的配置を示すブロック図である。
【図4】現代のPCのアプリケーションレイヤ、オペレーティングシステムレイヤ、およびハードウェアレイヤのブロック図である。
【図5A】汎用コンピュータハードウェアシステムの基本的な特権レベルのメカニズムおよび機能である。
【図5B】汎用コンピュータハードウェアシステムの基本的な特権レベルのメカニズムおよび機能である。
【図5C】汎用コンピュータハードウェアシステムの基本的な特権レベルのメカニズムおよび機能である。
【図5D】汎用コンピュータハードウェアシステムの基本的な特権レベルのメカニズムおよび機能である。
【図6】多くの現代のコンピュータシステムに存在するセキュリティおよび信頼性の侵害の一例を示す図である。
【図7】一タイプの現代のプロセッサ内のレジスタを示すブロック図である。
【図8】現代の一コンピュータアーキテクチャによって提供される仮想アドレス空間を示す図である。
【図9】領域レジスタと、保護キーレジスタと、変換索引バッファとに記憶された情報を介した仮想メモリアドレスの物理メモリアドレスへの変換を示す図である。
【図10】オペレーティングシステムのルーチンが、仮想メモリアドレスに対応する物理メモリのメモリページを発見するのに使用するデータ構造体を示す図である。
【図11】TLBエントリに使用されるアクセス権のコード化を示す図である。
【図12】割り込みメカニズムを示す図である。
【図13】アプリケーションレベルのルーチンに、より高い特権レベルのルーチンの呼び出しを許可するCPL昇格メカニズムを示す図である。
【図14】IA−64プロセッサに基づくマシン上におけるオペレーティングシステムの直接的なレイヤ化を示す図である。
【図15】結合されたハードウェアおよびソフトウェアの安全なプラットフォームと、1つまたは2つ以上のオペレーティングシステムおよびカスタマイズされた制御プログラムとを備えたコンピュータシステム内のSPインタフェースを示すブロック図である。
【図16】SPによって必要とされ、Intel(登録商標)のIA−64プロセッサアーキテクチャなどの現代のプロセッサアーキテクチャによって提供される第2のメモリ分割機能を示す図である。
【図17】SPのソフトウェアレイヤによって提供される機能のブロック図である。
【図18】安全なブートプロセスに関連したシステムのハードウェアコンポーネントのブロック図である。
【図19】SPの安全なブートプロセスコンポーネントの一実施の形態を表す安全なブートプロセス「secure_boot」の制御流れ図である。
【符号の説明】
【0152】
1502・・・結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース(SPI)、
1504・・・結合されたハードウェアおよびソフトウェアの安全なプラットフォーム(SP)のソフトウェアレイヤ、
1506・・・オペレーティングシステム(OS)および/またはカスタマイズされた制御プログラム、
1508・・・ハードウェアおよびファームウェアのプラットフォームインタフェース、
1510・・・ハードウェアおよびファームウェアのプラットフォーム、
1602・・・全仮想メモリ空間、
1606・・・オペレーティングシステムのメモリ空間、
1608・・・ユーザレベルのメモリ空間、
1710・・・SPプラットフォーム管理サービス、
1716・・・プラットフォームサービス、
1718・・・ドメイン制御サービス、
1720・・・プロセッサ制御サービス、
1722・・・プラットフォームポリシー制御サービス、
1724・・・ドメイン間およびドメイン内サービス、
1712・・・SPセキュリティ管理サービス、
1726・・・安全なリポジトリサービス、
1728・・・呼び出し側認証サービス、
1714・・・SP拡張部、
1730・・・メモリ管理メカニズム、
1732・・・プロセッサディスパッチメカニズム、
1734・・・例外処理メカニズム、
1736・・・インタラプト処理メカニズム、
1738・・・デバッグおよび監視メカニズム、
1740・・・暗号メカニズムおよび記憶装置、
1742・・・安全なリポジトリメカニズムおよび記憶装置、
1804・・・初期ファームウェア正当性確認メカニズム、
1808,1809,1810,1811・・・デジタル署名されたファームウェア命令の組、
1812,1813,1814,1815・・・デジタル署名、
1820・・・OS、
1822・・・OSローダのデジタル署名、
1823・・・OSのデジタル署名、
Claims (42)
- ハードウェアが、多数の特権レベルと、非特権命令と、非特権レジスタと、特権命令と、特権レジスタとを提供する、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースであって、
前記ハードウェアの命令セットのアーキテクチャによって提供される非特権命令および非特権レジスタと、
一組の呼び出し可能なソフトウェアサービスであって、起動されると、呼び出し側プログラムの特権レベルよりも高い特権を与えられる特権レベルで実行することができ、かつ、前記ハードウェアの特権命令および特権レジスタを公開することなく、特権命令および特権レジスタをシミュレーションすることなく、ハードウェアリソースの動作制御を提供する、一組の呼び出し可能なソフトウェアサービスと
を備える
結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース。 - 前記ハードウェアは、
非特権命令と、
非特権レジスタと、
特権命令と、
特権レジスタと
に加えて、
ファームウェアインタフェースと、
少なくとも4つの特権レベルと
を提供し、また、
I/O操作によってアクセスできる物理メモリアドレスを制限する手段
も提供する
請求項1に記載の結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース。 - 前記一組の呼び出し可能なソフトウェアサービスは、ハードウェアの特権命令および特権レジスタを公開せず、かつ、
特権命令および特権レジスタをシミュレーションしないハードウェアリソースの動作制御を呼び出し側に提供する一組の安全なプラットフォーム管理サービスと、
内部で生成された秘密データを使用する一組のセキュリティ管理サービスであって、各セキュリティ管理サービスが、内部の秘密データを該セキュリティ管理サービス以外の計算エンティティに公開せずに、該内部の秘密データを管理する、一組のセキュリティ管理サービスと
を含む
請求項1に記載の結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース。 - 安全なプラットフォーム管理サービスは、
オペレーティングシステムまたはカスタム制御プログラムによって起動されて、特権操作を使用する機能、SPリソースを関与させる機能、または、セキュリティに依存する機能を実行するプラットフォームサービスと、
ドメインの生成と、環境設定と、再初期化と、シャットダウンとを提供するドメイン制御サービスと、
論理CPUおよび物理CPUの環境設定とスケジューリングとを提供するプロセッサ制御サービスと、
例えばシステムリソースの割り当てといったプラットフォームポリシーの仕様と、保存と、適用とを提供するプラットフォームポリシー制御サービスと、
ドメイン内の論理CPU間のイベントおよびドメイン間のイベントの伝達と、ドメイン間でのリソースの共有と、ドメイン間での高速ネットワーク接続またはデータ交換のためのデータ転送の提供とを提供するドメイン間およびドメイン内サービスと
を含む
請求項1に記載の結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース。 - セキュリティ管理サービスは、
オペレーティングシステム、カスタム制御プログラム、またはユーザアプリケーションプログラムによって起動される安全なリポジトリサービスであって、システムの最も高い特権レベルで実行される所定のプロセスにのみ利用可能な秘密事項を使用する機能を提供する、安全なリポジトリサービスと、
ドメインが、安全なタグを、特定のユーザ、アプリケーションプログラム、オペレーティングシステムのコンポーネント、ディレクトリ、ファイル、ディスパッチ可能オブジェクト、または、特定のユーザ、アプリケーションプログラム、オペレーティングシステムのコンポーネント、ディレクトリ、ファイル、およびディスパッチ可能オブジェクトを含む他のシステムオブジェクトに関連付け、かつ、そのタグを使用して、プラットフォームサービスおよび安全なリポジトリサービスへのアクセスを認証する手段を提供する呼び出し側認証サービスと
を含む
請求項1に記載の結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース。 - 前記安全なリポジトリサービスは、
一方向ハッシュ関数と、メッセージ認証コードと、デジタル署名と、乱数とを計算する機能を含む1つまたは2つ以上の暗号機能を使用したデータの暗号化および復号を提供する暗号サービスと、
安全なログと、ポリシーデータベースと、他のすべてのシステムコンポーネントから区画化されて隔離される必要のある秘密データを使用する他の形式のサービスとを含む安全なデータサービスと
を含む
請求項5に記載の結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース。 - コンピュータ読み取り可能媒体にコード化された
請求項1に記載の結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースのソフトウェア部分を実施するコンピュータ命令。 - 少なくとも1つのユーザレベルプログラムと、
少なくとも1つのオペレーティングシステムと、
ハードウェアプラットフォームと、
請求項1に記載の結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースと
を備えるコンピュータシステム。 - オペレーティングシステムまたはカスタマイズされた制御プログラムの一方である制御プログラムのホストコンピュータとして機能するコンピュータシステムであって、
多数の実行特権レベルと、
非特権命令と、
非特権レジスタと、
特権命令と、
特権レジスタと
を提供するハードウェアプラットフォームと、
前記特権命令および前記特権レジスタの一方または双方を必要とする操作を実行する前記制御プログラムによって呼び出し可能であり、かつ、起動されると、前記制御プログラムが実行される特権レベルよりも高い特権を与えられる特権レベルで実行することができる一組のソフトウェアサービスであって、その呼び出し側プログラムは、特権命令および特権レジスタをシミュレーションすることもなく、特権命令および特権レジスタを前記制御プログラムに公開することもない、一組の呼び出し可能なソフトウェアサービスと、
最も高い特権レベルで実行される安全なプラットフォームカーネルと
を備えるコンピュータシステム。 - 前記安全なプラットフォームカーネルは、前記ソフトウェアサービスの実行の起動前に、該ソフトウェアサービスに対する呼び出しを認証する
請求項9に記載のコンピュータシステム。 - 前記特権命令および前記特権レジスタを隠蔽し、前記ハードウェアの命令セットアーキテクチャによって提供される前記非特権命令および前記非特権レジスタと、
前記一組の呼び出し可能なソフトウェアサービスとにインタフェースと
を提供する
結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェース
をさらに備える請求項9に記載のコンピュータシステム。 - 前記ハードウェアは、
非特権命令と、
非特権レジスタと、
特権命令と、
特権レジスタと
に加えて、
ファームウェアインタフェースと、
少なくとも4つの特権レベルと
を提供し、
I/O操作によってアクセスできる物理メモリアドレスを制限する手段
も提供する
請求項9に記載のコンピュータシステム。 - 前記一組の呼び出し可能なソフトウェアサービスは、前記ハードウェアの特権命令および特権レジスタを公開せず、かつ、
特権命令および特権レジスタをシミュレーションしないハードウェアリソースの動作制御用の一組の安全なプラットフォーム管理サービスと、
内部で生成された秘密データを使用する一組のセキュリティ管理サービスであって、各セキュリティ管理サービスが、内部の秘密データを該セキュリティ管理サービス以外の計算エンティティに公開せずに、該内部の秘密データを管理する、一組のセキュリティ管理サービスと
を含む
請求項9に記載のコンピュータシステム。 - 前記安全なプラットフォーム管理サービスは、
オペレーティングシステムまたはカスタム制御プログラムによって起動されて、特権操作を使用する機能、SPリソースを関与させる機能、または、セキュリティに依存する機能を実行するプラットフォームサービスと、
ドメインの生成と、環境設定と、再初期化と、シャットダウンとを提供するドメイン制御サービスと、
論理CPUおよび物理CPUの環境設定とスケジューリングとを提供するプロセッサ制御サービスと、
例えばシステムリソースの割り当てといったプラットフォームポリシーの仕様と、保存と、適用とを提供するプラットフォームポリシー制御サービスと、
ドメイン内の論理CPU間のイベントおよびドメイン間のイベントの伝達と、ドメイン間でのリソースの共有と、ドメイン間での高速ネットワーク接続またはデータ交換のためのデータ転送の提供とを提供するドメイン間およびドメイン内サービスと
を含む
請求項13に記載のコンピュータシステム。 - 前記セキュリティ管理サービスは、
オペレーティングシステム、カスタム制御プログラム、またはユーザアプリケーションプログラムによって起動される安全なリポジトリサービスであって、システムの最も高い特権レベルで実行される所定のプロセスにのみ利用可能な秘密事項を使用する機能を提供する、安全なリポジトリサービスと、
ドメインが、安全なタグを、特定のユーザ、アプリケーションプログラム、オペレーティングシステムのコンポーネント、ディレクトリ、ファイル、ディスパッチ可能オブジェクト、または、特定のユーザ、アプリケーションプログラム、オペレーティングシステムのコンポーネント、ディレクトリ、ファイル、およびディスパッチ可能オブジェクトを含む他のシステムオブジェクトに関連付け、かつ、そのタグを使用して、プラットフォームサービスおよび安全なリポジトリサービスへのアクセスを認証する手段とを提供する呼び出し側認証サービスと
を含む請求項13に記載のコンピュータシステム。 - 前記安全なリポジトリサービスは、
一方向ハッシュ関数と、メッセージ認証コードと、デジタル署名と、乱数とを計算する機能を含む1つまたは2つ以上の暗号機能を使用したデータの暗号化および復号を提供する暗号サービスと、
安全なログと、ポリシーデータベースと、他のすべてのシステムコンポーネントから区画化されて隔離される必要のある秘密データを使用する他の形式のサービスとを含む安全なデータサービスと
を含む請求項15に記載のコンピュータシステム。 - メモリ管理メカニズムと、
ディスパッチメカニズムと、
例外メカニズムと、
インタラプトメカニズムと、
デバッグおよび監視メカニズムと、
暗号メカニズムと、
暗号記憶メカニズムと、
安全なリポジトリメカニズムと、
安全なリポジトリ記憶メカニズムと、
を含むさまざまな安全なプラットフォームカーネルメカニズムを提供する内部インタフェースと
をさらに含む請求項9に記載のコンピュータシステム。 - ハードウェア、ソフトウェア、ファームウェア、または、ハードウェアとソフトウェアとファームウェアとの2つもしくは3つの組み合わせに組み込まれる安全なブートプロセスであって、オペレーティングシステムが実行される時まで該システムを初期化するように実行される各ファームウェアルーチンおよび各ソフトウェアルーチンを認証し、かつ、正当性を確認する安全なブートプロセス
をさらに含む請求項9に記載のコンピュータシステム。 - 前記安全なブートプロセスは、オペレーティングシステムのルーチンおよびユーザアプリケーションプログラムを含むファームウェアルーチンまたはソフトウェアルーチンの実行前に、各ファームウェアルーチンおよび各ソフトウェアルーチンの正当性を確認する
請求項18に記載のコンピュータシステム。 - コンピュータシステムをセキュリティ保護する方法であって、
多数の特権レベルと、エンティティによるメモリのユニットへのアクセスを制御するメモリ区画化機構と、各領域が多数のメモリユニットを備える領域の組にメモリを分割するメモリ分割機構とを、ハードウェアプラットフォームに提供することと、
起動されると、呼び出し側プログラムの特権レベルよりも高い特権を与えられる特権レベルで実行することができ、かつ、前記ハードウェアの特権命令および特権レジスタを公開することなく、特権命令および特権レジスタをシミュレーションすることなく、ハードウェアリソースの動作制御を提供し、かつ、前記ハードウェアプラットフォームと共に、結合されたハードウェアおよびソフトウェアの安全なプラットフォームを構成する、一組の呼び出し可能なソフトウェアサービスを提供することと、
非特権命令および非特権レジスタをオペレーティングシステムおよびカスタム制御プログラムに公開し、かつ、前記呼び出し可能なソフトウェアルーチンにインタフェースを提供し、かつ、前記特権命令および前記特権レジスタを隠蔽する、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースを提供することと、
前記結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースとインタフェースするオペレーティングシステムまたはカスタム制御プログラムを起動することと
を含むコンピュータシステムをセキュリティ保護する方法。 - 前記ハードウェアプラットフォームは、
非特権命令と、
非特権レジスタと、
特権命令と、
特権レジスタと
に加えて、
ファームウェアインタフェースと、
少なくとも4つの特権レベルと
を提供し、また、
I/O操作によってアクセスできる物理メモリアドレスを制限する手段
も提供する
請求項20に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記一組の呼び出し可能なソフトウェアサービスは、
前記ハードウェアの特権命令および特権レジスタを公開せず、かつ、特権命令および特権レジスタをシミュレーションしないハードウェアリソースの動作制御を呼び出し側に提供する一組の安全なプラットフォーム管理サービスと、
内部で生成された秘密データを使用する一組のセキュリティ管理サービスであって、各セキュリティ管理サービスは、内部の秘密データを該セキュリティ管理サービス以外の計算エンティティに公開せずに、該内部の秘密データを管理する、一組のセキュリティ管理サービスと
を含む
請求項20に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記安全なプラットフォーム管理サービスは、
前記オペレーティングシステムまたはカスタム制御プログラムによって起動されて、特権操作を使用する機能、SPリソースを関与させる機能、または、セキュリティに依存する機能を実行するプラットフォームサービスと、
ドメインの生成と、環境設定と、再初期化と、シャットダウンとを提供するドメイン制御サービスと、
論理CPUおよび物理CPUの環境設定とスケジューリングとを提供するプロセッサ制御サービスと、
例えばシステムリソースの割り当てといったプラットフォームポリシーの仕様と、保存と、適用とを提供するプラットフォームポリシー制御サービスと、
ドメイン内の論理CPU間のイベントおよびドメイン間のイベントの伝達と、ドメイン間でのリソースの共有と、ドメイン間での高速ネットワーク接続またはデータ交換のためのデータ転送の提供とを提供するドメイン間およびドメイン内サービスと
を含む
請求項22に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記セキュリティ管理サービスは、
オペレーティングシステム、カスタム制御プログラム、またはユーザアプリケーションプログラムによって起動される安全なリポジトリサービスであって、システムの最も高い特権レベルで実行される所定のプロセスにのみ利用可能な秘密事項を使用する機能を提供する、安全なリポジトリサービスと、
ドメインが、安全なタグを、特定のユーザ、アプリケーションプログラム、オペレーティングシステムのコンポーネント、ディレクトリ、ファイル、ディスパッチ可能オブジェクト、または、特定のユーザ、アプリケーションプログラム、オペレーティングシステムのコンポーネント、ディレクトリ、ファイル、およびディスパッチ可能オブジェクトを含む他のシステムオブジェクトに関連付け、かつ、そのタグを使用して、プラットフォームサービスおよび安全なリポジトリサービスへのアクセスを認証する、手段を提供する呼び出し側認証サービスと
を含む請求項22に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記安全なリポジトリサービスは、
一方向ハッシュ関数と、メッセージ認証コードと、デジタル署名と、乱数とを計算する機能を含む1つまたは2つ以上の暗号機能を使用したデータの暗号化および復号を提供する暗号サービスと、
安全なログと、ポリシーデータベースと、他のすべてのシステムコンポーネントから区画化されて隔離される必要のある秘密データを使用する他の形式のサービスといった安全なデータサービスと
を含む請求項24に記載のコンピュータシステムをセキュリティ保護する方法。 - メモリ管理メカニズムと、
ディスパッチメカニズムと、
例外メカニズムと、
インタラプトメカニズムと、
デバッグおよび監視メカニズムと、
暗号メカニズムと、
暗号記憶メカニズムと、
安全なリポジトリメカニズムと、
安全なリポジトリ記憶メカニズムと、
を含むさまざまな安全なプラットフォームカーネルメカニズムを提供する内部インタフェースを提供することと
をさらに含む請求項20に記載のコンピュータシステムをセキュリティ保護する方法。 - ハードウェア、ソフトウェア、およびファームウェアに組み込まれる安全なブートプロセスであって、オペレーティングシステムの実行に至るまで実行されて前記システムを初期化する各ファームウェアルーチンおよび各ソフトウェアルーチンを認証し、かつ、正当性を確認する安全なブートプロセスを提供すること
をさらに含む請求項20に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記安全なブートプロセスは、オペレーティングシステムのルーチンおよびユーザアプリケーションプログラムを含むファームウェアルーチンまたはソフトウェアルーチンの実行前に、各ファームウェアルーチンおよび各ソフトウェアルーチンの正当性を確認する
請求項27に記載のコンピュータシステムをセキュリティ保護する方法。 - 請求項20に記載のコンピュータシステムをセキュリティ保護する方法によって提供される結合されたハードウェアおよびソフトウェアの安全なプラットフォームのソフトウェア部分を実施する
コンピュータ命令。 - 少なくとも1つのユーザレベルプログラムと、
少なくとも1つのオペレーティングシステムと、
ハードウェアプラットフォームと、
請求項20に記載のコンピュータシステムをセキュリティ保護する方法によって提供される結合されたハードウェアおよびソフトウェアの安全なプラットフォームと
を備えるコンピュータシステム。 - 多数の特権レベルと、
特権命令および特権レジスタと、
非特権命令および非特権レジスと、
エンティティによるメモリのユニットへのアクセスを制御するメモリ区画化機構と、
各領域が多数のメモリユニットを備える領域の組にメモリを分割するメモリ分割機構と
を有する
ハードウェアプラットフォームを含むコンピュータシステムをセキュリティ保護する方法であって、
ソフトウェアレイヤを提供することであって、
前記ハードウェアの特権命令および特権レジスタを公開せず、かつ、特権命令および特権レジスタをシミュレーションしないハードウェアリソースの動作制御用の一組の安全なプラットフォーム管理サービスと、
内部で生成された秘密データを使用する一組のセキュリティ管理サービスであって、各セキュリティ管理サービスが、内部の秘密データを該セキュリティ管理サービス以外の計算エンティティに公開せずに、該内部の秘密データを管理する、一組のセキュリティ管理サービスと、
を含むソフトウェアレイヤを提供すること、
非特権命令および非特権レジスタをオペレーティングシステムおよびカスタム制御プログラムに公開し、かつ、前記呼び出し可能なソフトウェアルーチンにインタフェースを提供し、かつ、前記特権命令および前記特権レジスタを隠蔽する、結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースを提供することと
を含むコンピュータシステムをセキュリティ保護する方法。 - 前記ハードウェアは、
非特権命令と、
非特権レジスタと、
特権命令と、
特権レジスタと
に加えて、
ファームウェアインタフェースと、少なくとも4つの特権レベル
を提供し、かつ、
I/O操作によってアクセスできる物理メモリアドレスを制限する手段を提供する
請求項31に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記一組の呼び出し可能なソフトウェアルーチンは、起動されると、呼び出し側プログラムの特権レベルより高い特権を与えられる少なくとも2つの特権レベルで実行することができる
請求項31に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記安全なプラットフォーム管理サービスは、
オペレーティングシステムまたはカスタム制御プログラムによって起動されて、特権操作を使用する機能、SPリソースを関与させる機能、または、セキュリティに依存する機能を実行するプラットフォームサービスと、
ドメインの生成と、環境設定と、再初期化と、シャットダウンとを提供するドメイン制御サービスと、
論理CPUおよび物理CPUの環境設定とスケジューリングとを提供するプロセッサ制御サービスと、
例えばシステムリソースの割り当てといったプラットフォームポリシーの仕様と、保存と、適用とを提供するプラットフォームポリシー制御サービスと、
ドメイン内の論理CPU間のイベントおよびドメイン間のイベントの伝達と、ドメイン間でのリソースの共有と、ドメイン間での高速ネットワーク接続またはデータ交換のためのデータ転送の提供とを提供するドメイン間およびドメイン内サービスと
を含む請求項31に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記セキュリティ管理サービスは、
オペレーティングシステム、カスタム制御プログラム、またはユーザアプリケーションプログラムによって起動される安全なリポジトリサービスであって、システムの最も高い特権レベルで実行される所定のプロセスにのみ利用可能な秘密事項を使用する機能を提供する、安全なリポジトリサービスと、
ドメインが、安全なタグを、特定のユーザ、アプリケーションプログラム、オペレーティングシステムのコンポーネント、ディレクトリ、ファイル、ディスパッチ可能オブジェクト、または、特定のユーザ、アプリケーションプログラム、オペレーティングシステムのコンポーネント、ディレクトリ、ファイル、およびディスパッチ可能オブジェクトを含む他のシステムオブジェクトに関連付け、かつ、そのタグを使用して、プラットフォームサービスおよび安全なリポジトリサービスへのアクセスを認証する、手段を提供する呼び出し側認証サービスと
を含む請求項31に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記安全なリポジトリサービスは、
一方向ハッシュ関数と、メッセージ認証コードと、デジタル署名と、乱数とを計算する機能を含む1つまたは2つ以上の暗号機能を使用したデータの暗号化および復号を提供する暗号サービスと、
安全なログと、ポリシーデータベースと、他のすべてのシステムコンポーネントから区画化されて隔離される必要のある秘密データを使用する他の形式のサービスといった安全なデータサービスと
を含む請求項35に記載のコンピュータシステムをセキュリティ保護する方法。 - メモリ管理メカニズムと、
ディスパッチメカニズムと、
例外メカニズムと、
インタラプトメカニズムと、
デバッグおよび監視メカニズムと、
暗号メカニズムと、
暗号記憶メカニズムと、
安全なリポジトリメカニズムと、
安全なリポジトリ記憶メカニズムと、
を含むさまざまな安全なプラットフォームカーネルメカニズムを提供する内部インタフェースと
をさらに含む請求項31に記載のコンピュータシステムをセキュリティ保護する方法。 - ハードウェア、ソフトウェア、およびファームウェアに組み込まれる安全なブートプロセスであって、オペレーティングシステムが実行される時まで該システムを初期化するように実行される各ファームウェアルーチンおよび各ソフトウェアルーチンを認証し、かつ、正当性を確認する、安全なブートプロセスを提供すること
をさらに含む請求項31に記載のコンピュータシステムをセキュリティ保護する方法。 - 前記安全なブートプロセスは、オペレーティングシステムのルーチンおよびユーザアプリケーションプログラムを含むファームウェアルーチンまたはソフトウェアルーチンの実行前に、各ファームウェアルーチンおよび各ソフトウェアルーチンの正当性を確認する
請求項38に記載のコンピュータシステムをセキュリティ保護する方法。 - 請求項31に記載のコンピュータシステムをセキュリティ保護する方法によって提供される結合されたハードウェアおよびソフトウェアの安全なプラットフォームインタフェースのソフトウェア部分を実施する
コンピュータ命令。 - 少なくとも1つのユーザレベルプログラムと、
少なくとも1つのオペレーティングシステムと、
ハードウェアプラットフォームと、
請求項31に記載のコンピュータシステムをセキュリティ保護する方法によって提供される結合されたハードウェアおよびソフトウェアの安全なプラットフォームと
を備えるコンピュータシステム。 - 結合されたハードウェアおよびソフトウェアの安全なプラットフォームであって、
多数の特権レベルの1つでプロセスまたはルーチンを実行する手段と、
特権命令および特権レジスタと、
非特権命令および非特権レジスタと、
メモリを区画化する手段であって、これによって、プロセスまたはルーチンによるメモリのユニットへのアクセスを制御する、メモリを区画化する手段と、
各領域が多数のメモリユニットを備える領域の組にメモリを分割する手段と
を提供するハードウェアレイヤと、
前記ハードウェアの特権命令および特権レジスタを公開せず、かつ、特権命令および特権レジスタをシミュレーションしないハードウェアリソースの動作制御用の安全なプラットフォーム管理サービスと、
内部で生成された秘密データを使用するセキュリティ管理サービスであって、各セキュリティ管理サービスが、内部の秘密データを該セキュリティ管理サービス以外の計算エンティティに公開せずに、該内部の秘密データを管理する、セキュリティ管理サービスと
を提供する手段と、
前記ハードウェアの命令セットアーキテクチャによって提供される前記非特権命令および前記非特権レジスタへのアクセスと、
前記安全なプラットフォーム管理サービスおよび前記セキュリティ管理サービスへのアクセスと
を、呼び出し側のオペレーティングシステムまたはカスタマイズされた制御アクセスルーチンに提供する一方、前記特権命令および前記特権レジスタを隠蔽する
インタフェース手段と
を備える結合されたハードウェアおよびソフトウェアの安全なプラットフォーム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29695701P | 2001-06-08 | 2001-06-08 | |
US29695801P | 2001-06-08 | 2001-06-08 | |
US29717501P | 2001-06-08 | 2001-06-08 | |
US10/118,646 US7073059B2 (en) | 2001-06-08 | 2002-04-08 | Secure machine platform that interfaces to operating systems and customized control programs |
PCT/US2002/018180 WO2002101504A2 (en) | 2001-06-08 | 2002-06-07 | Secure machine platform that interfaces to operating systems and customized control programs |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004537786A true JP2004537786A (ja) | 2004-12-16 |
JP2004537786A5 JP2004537786A5 (ja) | 2009-07-16 |
JP4498735B2 JP4498735B2 (ja) | 2010-07-07 |
Family
ID=27494216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003504201A Expired - Fee Related JP4498735B2 (ja) | 2001-06-08 | 2002-06-07 | オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム |
Country Status (6)
Country | Link |
---|---|
US (1) | US7073059B2 (ja) |
JP (1) | JP4498735B2 (ja) |
DE (1) | DE10292364T5 (ja) |
GB (1) | GB2381630B (ja) |
HK (1) | HK1054799B (ja) |
WO (1) | WO2002101504A2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010503115A (ja) * | 2006-09-22 | 2010-01-28 | インテル コーポレイション | 仮想マシン環境におけるゲスト間での情報の共有 |
JP2012119012A (ja) * | 2012-02-17 | 2012-06-21 | Renesas Electronics Corp | プロセッサ、バスインターフェース装置、およびコンピュータシステム |
US8898666B2 (en) | 2010-12-21 | 2014-11-25 | Panasonic Intellectual Property Corporation Of America | Virtual machine system and virtual machine system control method for controlling program execution on a plurality of processors that have a plurality of privileged modes |
JP2022500889A (ja) * | 2018-07-29 | 2022-01-04 | ヌーヴェン コーポレイションNouvenn Corporation | データ通信ネットワークのセキュリティ方法 |
Families Citing this family (152)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7536524B2 (en) * | 1998-07-31 | 2009-05-19 | Kom Networks Inc. | Method and system for providing restricted access to a storage medium |
US9361243B2 (en) | 1998-07-31 | 2016-06-07 | Kom Networks Inc. | Method and system for providing restricted access to a storage medium |
US8234477B2 (en) | 1998-07-31 | 2012-07-31 | Kom Networks, Inc. | Method and system for providing restricted access to a storage medium |
US6792392B1 (en) * | 2000-06-30 | 2004-09-14 | Intel Corporation | Method and apparatus for configuring and collecting performance counter data |
US6886038B1 (en) | 2000-10-24 | 2005-04-26 | Microsoft Corporation | System and method for restricting data transfers and managing software components of distributed computers |
WO2002099598A2 (en) | 2001-06-07 | 2002-12-12 | First Usa Bank, N.A. | System and method for rapid updating of credit information |
EP1276033B1 (de) * | 2001-07-10 | 2012-03-14 | Trident Microsystems (Far East) Ltd. | Speichereinrichtung mit Datenschutz in einem Prozessor |
US7266839B2 (en) | 2001-07-12 | 2007-09-04 | J P Morgan Chase Bank | System and method for providing discriminated content to network users |
US6745307B2 (en) * | 2001-10-31 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method and system for privilege-level-access to memory within a computer |
US7987501B2 (en) | 2001-12-04 | 2011-07-26 | Jpmorgan Chase Bank, N.A. | System and method for single session sign-on |
US7840800B2 (en) * | 2001-12-12 | 2010-11-23 | Gemalto Sa | Method and system for module chaining control in a modular software architecture |
US6963932B2 (en) * | 2002-01-30 | 2005-11-08 | Intel Corporation | Intermediate driver having a fail-over function for a virtual network interface card in a system utilizing Infiniband architecture |
US7571318B2 (en) * | 2002-03-27 | 2009-08-04 | Advanced Micro Devices, Inc. | Method and apparatus for improved security in a data processor |
US8850223B1 (en) * | 2002-07-19 | 2014-09-30 | F5 Networks, Inc. | Method and system for hard disk emulation and cryptographic acceleration on a blade server |
DE10240584A1 (de) * | 2002-08-28 | 2004-03-11 | Pilz Gmbh & Co. | Sicherheitssteuerung zum fehlersicheren Steuern von sicherheitskritischen Prozessen sowie Verfahren zum Aufspielen eines neuen Betriebsprogrammes auf eine solche |
US7302566B2 (en) * | 2002-09-13 | 2007-11-27 | Wayne Yingling | Internet security system |
US8301493B2 (en) | 2002-11-05 | 2012-10-30 | Jpmorgan Chase Bank, N.A. | System and method for providing incentives to consumers to share information |
GB2396712B (en) * | 2002-11-18 | 2005-12-07 | Advanced Risc Mach Ltd | Handling multiple interrupts in a data processing system utilising multiple operating systems |
US7337442B2 (en) * | 2002-12-03 | 2008-02-26 | Microsoft Corporation | Methods and systems for cooperative scheduling of hardware resource elements |
US20040111414A1 (en) * | 2002-12-06 | 2004-06-10 | International Business Machines Corporation | System and method for selective execution of statements with surrogate authority |
FR2849233B1 (fr) * | 2002-12-24 | 2005-05-20 | Trusted Logic | Procede de securisation des systemes informatiques par confinement logiciel |
US7509644B2 (en) * | 2003-03-04 | 2009-03-24 | Secure 64 Software Corp. | Operating system capable of supporting a customized execution environment |
JP4945053B2 (ja) | 2003-03-18 | 2012-06-06 | ルネサスエレクトロニクス株式会社 | 半導体装置、バスインターフェース装置、およびコンピュータシステム |
GB2399902A (en) * | 2003-03-28 | 2004-09-29 | Hewlett Packard Development Co | Security in trusted computing systems |
US7529368B2 (en) * | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent output feedback mode cryptographic functions |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US7539876B2 (en) * | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
US7321910B2 (en) * | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7536560B2 (en) * | 2003-04-18 | 2009-05-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
US7844053B2 (en) * | 2003-04-18 | 2010-11-30 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US8060755B2 (en) * | 2003-04-18 | 2011-11-15 | Via Technologies, Inc | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine |
US7542566B2 (en) * | 2003-04-18 | 2009-06-02 | Ip-First, Llc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
US7529367B2 (en) * | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent cipher feedback mode cryptographic functions |
US7392400B2 (en) * | 2003-04-18 | 2008-06-24 | Via Technologies, Inc. | Microprocessor apparatus and method for optimizing block cipher cryptographic functions |
US7532722B2 (en) * | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
US7502943B2 (en) * | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
US7900055B2 (en) * | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
US7519833B2 (en) * | 2003-04-18 | 2009-04-14 | Via Technologies, Inc. | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine |
US20040250086A1 (en) * | 2003-05-23 | 2004-12-09 | Harris Corporation | Method and system for protecting against software misuse and malicious code |
US7444668B2 (en) | 2003-05-29 | 2008-10-28 | Freescale Semiconductor, Inc. | Method and apparatus for determining access permission |
US7469417B2 (en) * | 2003-06-17 | 2008-12-23 | Electronic Data Systems Corporation | Infrastructure method and system for authenticated dynamic security domain boundary extension |
US8838950B2 (en) * | 2003-06-23 | 2014-09-16 | International Business Machines Corporation | Security architecture for system on chip |
US20050015430A1 (en) * | 2003-06-25 | 2005-01-20 | Rothman Michael A. | OS agnostic resource sharing across multiple computing platforms |
JP4624732B2 (ja) * | 2003-07-16 | 2011-02-02 | パナソニック株式会社 | アクセス方法 |
US7398390B2 (en) * | 2003-08-08 | 2008-07-08 | Hewlett-Packard Development Company, L.P. | Method and system for securing a computer system |
CA2536502A1 (en) | 2003-08-29 | 2005-03-10 | Tgbw Inc. | Flash memory distribution of digital content |
US7669239B2 (en) * | 2003-09-15 | 2010-02-23 | Jpmorgan Chase Bank, N.A. | Secure network system and associated method of use |
US7921300B2 (en) * | 2003-10-10 | 2011-04-05 | Via Technologies, Inc. | Apparatus and method for secure hash algorithm |
US20050091496A1 (en) * | 2003-10-23 | 2005-04-28 | Hyser Chris D. | Method and system for distributed key management in a secure boot environment |
US7178015B2 (en) * | 2004-01-12 | 2007-02-13 | Hewlett-Packard Development Company, L.P. | Security measures in a partitionable computing system |
US7698552B2 (en) * | 2004-06-03 | 2010-04-13 | Intel Corporation | Launching a secure kernel in a multiprocessor system |
US7334163B1 (en) * | 2004-06-16 | 2008-02-19 | Symantec Corporation | Duplicating handles of target processes without having debug privileges |
US7802110B2 (en) * | 2004-08-25 | 2010-09-21 | Microsoft Corporation | System and method for secure execution of program code |
US7765579B2 (en) * | 2004-09-07 | 2010-07-27 | Greencastle Technology, Inc. | Security deployment system |
US20080104695A1 (en) * | 2004-12-09 | 2008-05-01 | Jean-Philippe Fassino | Device and Method for Controlling Access, Core with Components Comprising Same and Use Thereof |
US20060208928A1 (en) * | 2004-12-14 | 2006-09-21 | Paul Mackerras | Encoding scheme to resist code injection attacks |
JP4810846B2 (ja) * | 2005-03-15 | 2011-11-09 | 富士ゼロックス株式会社 | プログラムデータの不正利用を阻止するプログラム |
US8619971B2 (en) * | 2005-04-01 | 2013-12-31 | Microsoft Corporation | Local secure service partitions for operating system security |
EP1713000A1 (en) * | 2005-04-11 | 2006-10-18 | Jaluna SA | Memory protection system |
US8086871B2 (en) * | 2005-04-26 | 2011-12-27 | International Business Machines Corporation | Method for fast decryption of processor instructions in an encrypted instruction power architecture |
US20070180269A1 (en) * | 2006-02-01 | 2007-08-02 | International Business Machines Corporation | I/O address translation blocking in a secure system during power-on-reset |
US20070192830A1 (en) * | 2006-02-15 | 2007-08-16 | O'connor Dennis M | Security module having access limited based upon security level of code seeking access |
US20070235517A1 (en) * | 2006-03-30 | 2007-10-11 | O'connor Clint H | Secure digital delivery seal for information handling system |
US20070261124A1 (en) * | 2006-05-03 | 2007-11-08 | International Business Machines Corporation | Method and system for run-time dynamic and interactive identification of software authorization requirements and privileged code locations, and for validation of other software program analysis results |
US7424398B2 (en) * | 2006-06-22 | 2008-09-09 | Lexmark International, Inc. | Boot validation system and method |
GB0615392D0 (en) * | 2006-08-03 | 2006-09-13 | Wivenhoe Technology Ltd | Pseudo random number circuitry |
US8479264B2 (en) * | 2006-09-29 | 2013-07-02 | Micron Technology, Inc. | Architecture for virtual security module |
US8903888B1 (en) | 2006-10-27 | 2014-12-02 | Hewlett-Packard Development Company, L.P. | Retrieving data of a virtual machine based on demand to migrate the virtual machine between physical machines |
US8296760B2 (en) * | 2006-10-27 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine |
US8185893B2 (en) | 2006-10-27 | 2012-05-22 | Hewlett-Packard Development Company, L.P. | Starting up at least one virtual machine in a physical machine by a load balancer |
US9092250B1 (en) | 2006-10-27 | 2015-07-28 | Hewlett-Packard Development Company, L.P. | Selecting one of plural layouts of virtual machines on physical machines |
US8732699B1 (en) | 2006-10-27 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Migrating virtual machines between physical machines in a define group |
US7657791B2 (en) | 2006-11-15 | 2010-02-02 | Qualcomm Incorporated | Method and system for a digital signal processor debugging during power transitions |
US8533530B2 (en) * | 2006-11-15 | 2013-09-10 | Qualcomm Incorporated | Method and system for trusted/untrusted digital signal processor debugging operations |
US8370806B2 (en) * | 2006-11-15 | 2013-02-05 | Qualcomm Incorporated | Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor |
US8341604B2 (en) | 2006-11-15 | 2012-12-25 | Qualcomm Incorporated | Embedded trace macrocell for enhanced digital signal processor debugging operations |
US8380966B2 (en) | 2006-11-15 | 2013-02-19 | Qualcomm Incorporated | Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging |
US8336046B2 (en) | 2006-12-29 | 2012-12-18 | Intel Corporation | Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources |
KR101396831B1 (ko) * | 2007-03-30 | 2014-05-21 | 삼성전자주식회사 | 메모리 접근 제어 방법 |
US8484516B2 (en) * | 2007-04-11 | 2013-07-09 | Qualcomm Incorporated | Inter-thread trace alignment method and system for a multi-threaded processor |
US8904552B2 (en) * | 2007-04-17 | 2014-12-02 | Samsung Electronics Co., Ltd. | System and method for protecting data information stored in storage |
US8006254B2 (en) * | 2007-10-04 | 2011-08-23 | International Business Machines Corporation | Bequeathing privilege to a dynamically loaded module |
US8341626B1 (en) | 2007-11-30 | 2012-12-25 | Hewlett-Packard Development Company, L. P. | Migration of a virtual machine in response to regional environment effects |
EP2240861A4 (en) * | 2008-01-25 | 2011-04-06 | Fasoo Com Co Ltd | SYSTEM AND METHOD FOR PREVENTING CLIENT DRM INCIDENT THROUGH SEPARATE PROCESS EXECUTION |
US8085265B2 (en) * | 2008-04-23 | 2011-12-27 | Honeywell International Inc. | Methods and systems of generating 3D user interface for physical environment |
US8307340B2 (en) * | 2008-09-26 | 2012-11-06 | Microsoft Corporation | Hardware abstraction in embedded systems |
JP2012510118A (ja) | 2008-11-26 | 2012-04-26 | カルガリー・サイエンティフィック・インコーポレイテッド | アプリケーションプログラムの状態への遠隔アクセスを提供するための方法およびシステム |
GB0823162D0 (en) * | 2008-12-18 | 2009-01-28 | Solarflare Communications Inc | Virtualised Interface Functions |
US20100174631A1 (en) * | 2009-01-07 | 2010-07-08 | Onbest Technology Holdings Limited | Secure device firmware |
RU2564538C2 (ru) * | 2009-02-03 | 2015-10-10 | Калгари Сайентифик Инк. | Способ и система обеспечения взаимодействия со множеством приложений при использовании отдельного интерфейса пользователя |
US10055105B2 (en) | 2009-02-03 | 2018-08-21 | Calgary Scientific Inc. | Method and system for enabling interaction with a plurality of applications using a single user interface |
US8850601B2 (en) * | 2009-05-18 | 2014-09-30 | Hewlett-Packard Development Company, L.P. | Systems and methods of determining a trust level from system management mode |
US8923519B2 (en) * | 2009-05-29 | 2014-12-30 | Alcatel Lucent | Method of efficient secure function evaluation using resettable tamper-resistant hardware tokens |
US8875219B2 (en) * | 2009-07-30 | 2014-10-28 | Blackberry Limited | Apparatus and method for controlled sharing of personal information |
WO2011042892A1 (en) * | 2009-10-09 | 2011-04-14 | Nokia Corporation | Platform security |
US8499304B2 (en) | 2009-12-15 | 2013-07-30 | At&T Mobility Ii Llc | Multiple mode mobile device |
US9087200B2 (en) | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
JP5380392B2 (ja) * | 2010-08-04 | 2014-01-08 | ルネサスエレクトロニクス株式会社 | 半導体装置、バスインターフェース装置、およびコンピュータシステム |
GB2482700A (en) * | 2010-08-11 | 2012-02-15 | Advanced Risc Mach Ltd | Memory access control |
FR2964812B1 (fr) * | 2010-09-09 | 2013-04-12 | Mobilegov France | Procede d'authentification pour l'acces a un site web |
GB2483907A (en) * | 2010-09-24 | 2012-03-28 | Advanced Risc Mach Ltd | Privilege level switching for data processing circuitry when in a debug mode |
US9741084B2 (en) | 2011-01-04 | 2017-08-22 | Calgary Scientific Inc. | Method and system for providing remote access to data for display on a mobile device |
CA2734860A1 (en) * | 2011-03-21 | 2012-09-21 | Calgary Scientific Inc. | Method and system for providing a state model of an application program |
US9038176B2 (en) | 2011-03-31 | 2015-05-19 | Mcafee, Inc. | System and method for below-operating system trapping and securing loading of code into memory |
US9262246B2 (en) | 2011-03-31 | 2016-02-16 | Mcafee, Inc. | System and method for securing memory and storage of an electronic device with a below-operating system security agent |
US9317690B2 (en) * | 2011-03-28 | 2016-04-19 | Mcafee, Inc. | System and method for firmware based anti-malware security |
CN103827823A (zh) | 2011-07-29 | 2014-05-28 | 惠普发展公司,有限责任合伙企业 | 迁移虚拟机 |
US9176739B2 (en) | 2011-08-05 | 2015-11-03 | Cisco Technology, Inc. | System and method for checking run-time consistency for sequentially and non-sequentially fetched instructions |
CA2844667C (en) * | 2011-08-08 | 2018-07-17 | Gennady Slobodsky | System and method for electronic distribution of software and data |
SG10201606764XA (en) | 2011-08-15 | 2016-10-28 | Calgary Scient Inc | Non-invasive remote access to an application program |
US9720747B2 (en) | 2011-08-15 | 2017-08-01 | Calgary Scientific Inc. | Method for flow control and reliable communication in a collaborative environment |
CN103959708B (zh) | 2011-09-30 | 2017-10-17 | 卡尔加里科学公司 | 包括用于协作远程应用共享和注释的交互式数字表层的非耦合应用扩展 |
KR20140106551A (ko) | 2011-11-23 | 2014-09-03 | 캘거리 싸이언티픽 인코포레이티드 | 협업 원격 애플리케이션 공유 및 회의를 위한 방법들 및 시스템들 |
US9342394B2 (en) | 2011-12-29 | 2016-05-17 | Intel Corporation | Secure error handling |
WO2013128284A1 (en) | 2012-03-02 | 2013-09-06 | Calgary Scientific Inc. | Remote control of an application using dynamic-linked library (dll) injection |
US9729673B2 (en) | 2012-06-21 | 2017-08-08 | Calgary Scientific Inc. | Method and system for providing synchronized views of multiple applications for display on a remote computing device |
US8938796B2 (en) | 2012-09-20 | 2015-01-20 | Paul Case, SR. | Case secure computer architecture |
KR102017828B1 (ko) * | 2012-10-19 | 2019-09-03 | 삼성전자 주식회사 | 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들 |
TWI463320B (zh) * | 2012-11-29 | 2014-12-01 | Mstar Semiconductor Inc | 記憶體存取權限控制方法與相關記憶體管理系統 |
US9251377B2 (en) | 2012-12-28 | 2016-02-02 | Intel Corporation | Instructions processors, methods, and systems to process secure hash algorithms |
US8924741B2 (en) | 2012-12-29 | 2014-12-30 | Intel Corporation | Instruction and logic to provide SIMD secure hashing round slice functionality |
US9158704B2 (en) * | 2013-01-24 | 2015-10-13 | Wisconsin Alumni Research Foundation | Virtual memory management system with reduced latency |
US10038550B2 (en) | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
GB2534693B (en) * | 2013-11-08 | 2017-02-08 | Exacttrak Ltd | Data accessibility control |
JP2017505473A (ja) | 2013-11-29 | 2017-02-16 | カルガリー サイエンティフィック インコーポレイテッド | クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供方法 |
US10503510B2 (en) | 2013-12-27 | 2019-12-10 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US9912481B2 (en) | 2014-03-27 | 2018-03-06 | Intel Corporation | Method and apparatus for efficiently executing hash operations |
US9317719B2 (en) | 2014-09-04 | 2016-04-19 | Intel Corporation | SM3 hash algorithm acceleration processors, methods, systems, and instructions |
US9658854B2 (en) | 2014-09-26 | 2017-05-23 | Intel Corporation | Instructions and logic to provide SIMD SM3 cryptographic hashing functionality |
US9921984B2 (en) * | 2014-12-23 | 2018-03-20 | Intel Corporation | Delivering interrupts to user-level applications |
US11310348B2 (en) | 2015-01-30 | 2022-04-19 | Calgary Scientific Inc. | Highly scalable, fault tolerant remote access architecture and method of connecting thereto |
US10015264B2 (en) | 2015-01-30 | 2018-07-03 | Calgary Scientific Inc. | Generalized proxy architecture to provide remote access to an application framework |
US9785783B2 (en) * | 2015-07-23 | 2017-10-10 | Ca, Inc. | Executing privileged code in a process |
US9996479B2 (en) * | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US20170109526A1 (en) * | 2015-10-20 | 2017-04-20 | Intel Corporation | Systems and methods for providing anti-malware protection and malware forensics on storage devices |
US9779248B1 (en) | 2016-03-30 | 2017-10-03 | Microsoft Technology Licensing, Llc | Protection of secured boot secrets for operating system reboot |
US10114768B2 (en) * | 2016-08-29 | 2018-10-30 | Intel Corporation | Enhance memory access permission based on per-page current privilege level |
US10713177B2 (en) | 2016-09-09 | 2020-07-14 | Intel Corporation | Defining virtualized page attributes based on guest page attributes |
CN109688086A (zh) * | 2017-10-19 | 2019-04-26 | 北京京东尚科信息技术有限公司 | 用于终端设备的权限控制方法和装置 |
US11741196B2 (en) * | 2018-11-15 | 2023-08-29 | The Research Foundation For The State University Of New York | Detecting and preventing exploits of software vulnerability using instruction tags |
DE102019201244A1 (de) * | 2019-01-31 | 2020-08-06 | Robert Bosch Gmbh | Verfahren zum Überprüfen eines Softwaremoduls |
US11221778B1 (en) * | 2019-04-02 | 2022-01-11 | Pure Storage, Inc. | Preparing data for deduplication |
US11797717B2 (en) * | 2019-05-21 | 2023-10-24 | Micron Technology, Inc. | Bus encryption for non-volatile memories |
FR3098613A1 (fr) * | 2019-07-09 | 2021-01-15 | STMicroelectronics (Grand Ouest) SAS | Procede de gestion du fonctionnement d’au moins un logiciel applicatif chiffre et circuit integre correspondant |
CN110597754B (zh) * | 2019-08-02 | 2023-02-21 | 北京多思安全芯片科技有限公司 | 一种主从式安全处理器 |
CN111859396B (zh) * | 2020-07-21 | 2023-10-03 | 中国人民解放军国防科技大学 | 支持通用/可信双计算体系的软硬协同多层次密码服务方法及系统 |
FR3115622A1 (fr) * | 2020-10-27 | 2022-04-29 | Stmicroelectronics (Rousset) Sas | Elément sécurisé |
CN112379911B (zh) * | 2020-11-10 | 2022-11-11 | 杭州万高科技股份有限公司 | 固件模块注册信息处理方法、系统、存储介质、智能手机 |
US11709786B2 (en) | 2021-04-29 | 2023-07-25 | Renesas Electronic Corporation | Device and method of secure decryption by virtualization and translation of physical encryption keys |
US11726811B2 (en) * | 2021-06-18 | 2023-08-15 | Vmware, Inc. | Parallel context switching for interrupt handling |
CN114416173B (zh) * | 2022-03-28 | 2022-10-25 | 荣耀终端有限公司 | 版本切换方法和终端设备 |
US11811681B1 (en) | 2022-07-12 | 2023-11-07 | T-Mobile Usa, Inc. | Generating and deploying software architectures using telecommunication resources |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6073762A (ja) * | 1983-09-29 | 1985-04-25 | Fujitsu Ltd | 記憶保護方式 |
JPS625441A (ja) * | 1985-02-18 | 1987-01-12 | Nec Corp | 情報処理装置 |
JPS62276634A (ja) * | 1985-09-18 | 1987-12-01 | Nec Corp | 仮想計算機システム |
JPH05204760A (ja) * | 1992-01-29 | 1993-08-13 | Nec Corp | 仮想計算機システムの制御方式 |
JPH06332803A (ja) * | 1993-05-25 | 1994-12-02 | Hitachi Ltd | 仮想計算機システムにおけるtlb制御方法 |
US5774652A (en) * | 1995-09-29 | 1998-06-30 | Smith; Perry | Restricted access computer system |
US5948064A (en) * | 1997-07-07 | 1999-09-07 | International Business Machines Corporation | Discovery of authentication server domains in a computer network |
JP2000057045A (ja) * | 1998-06-18 | 2000-02-25 | Sun Microsyst Inc | 保護されたメモリシステム内のサ―ビスへのアクセスを制御するための許可 |
JP2000076087A (ja) * | 1998-08-28 | 2000-03-14 | Hitachi Ltd | マルチオペレーティングシステム制御方法 |
JP2001056783A (ja) * | 1999-08-18 | 2001-02-27 | Nec Software Kobe Ltd | プログラム単位メモリ属性管理方式 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
AU6104800A (en) | 1999-07-16 | 2001-02-05 | Intertrust Technologies Corp. | Trusted storage systems and methods |
-
2002
- 2002-04-08 US US10/118,646 patent/US7073059B2/en active Active
- 2002-06-07 JP JP2003504201A patent/JP4498735B2/ja not_active Expired - Fee Related
- 2002-06-07 GB GB0304527A patent/GB2381630B/en not_active Expired - Lifetime
- 2002-06-07 DE DE10292364T patent/DE10292364T5/de not_active Ceased
- 2002-06-07 WO PCT/US2002/018180 patent/WO2002101504A2/en active Application Filing
-
2003
- 2003-09-11 HK HK03106566.8A patent/HK1054799B/zh not_active IP Right Cessation
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6073762A (ja) * | 1983-09-29 | 1985-04-25 | Fujitsu Ltd | 記憶保護方式 |
JPS625441A (ja) * | 1985-02-18 | 1987-01-12 | Nec Corp | 情報処理装置 |
JPS62276634A (ja) * | 1985-09-18 | 1987-12-01 | Nec Corp | 仮想計算機システム |
JPH05204760A (ja) * | 1992-01-29 | 1993-08-13 | Nec Corp | 仮想計算機システムの制御方式 |
JPH06332803A (ja) * | 1993-05-25 | 1994-12-02 | Hitachi Ltd | 仮想計算機システムにおけるtlb制御方法 |
US5774652A (en) * | 1995-09-29 | 1998-06-30 | Smith; Perry | Restricted access computer system |
US5948064A (en) * | 1997-07-07 | 1999-09-07 | International Business Machines Corporation | Discovery of authentication server domains in a computer network |
JP2000057045A (ja) * | 1998-06-18 | 2000-02-25 | Sun Microsyst Inc | 保護されたメモリシステム内のサ―ビスへのアクセスを制御するための許可 |
JP2000076087A (ja) * | 1998-08-28 | 2000-03-14 | Hitachi Ltd | マルチオペレーティングシステム制御方法 |
JP2001056783A (ja) * | 1999-08-18 | 2001-02-27 | Nec Software Kobe Ltd | プログラム単位メモリ属性管理方式 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010503115A (ja) * | 2006-09-22 | 2010-01-28 | インテル コーポレイション | 仮想マシン環境におけるゲスト間での情報の共有 |
US8898666B2 (en) | 2010-12-21 | 2014-11-25 | Panasonic Intellectual Property Corporation Of America | Virtual machine system and virtual machine system control method for controlling program execution on a plurality of processors that have a plurality of privileged modes |
JP2012119012A (ja) * | 2012-02-17 | 2012-06-21 | Renesas Electronics Corp | プロセッサ、バスインターフェース装置、およびコンピュータシステム |
JP2022500889A (ja) * | 2018-07-29 | 2022-01-04 | ヌーヴェン コーポレイションNouvenn Corporation | データ通信ネットワークのセキュリティ方法 |
Also Published As
Publication number | Publication date |
---|---|
HK1054799A1 (en) | 2003-12-12 |
WO2002101504A2 (en) | 2002-12-19 |
GB2381630A (en) | 2003-05-07 |
WO2002101504A3 (en) | 2003-08-28 |
US20020194389A1 (en) | 2002-12-19 |
HK1054799B (zh) | 2005-09-23 |
DE10292364T5 (de) | 2004-09-02 |
US7073059B2 (en) | 2006-07-04 |
GB2381630B (en) | 2005-03-30 |
GB0304527D0 (en) | 2003-04-02 |
JP4498735B2 (ja) | 2010-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4498735B2 (ja) | オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム | |
US10885202B2 (en) | Method and apparatus to provide secure application execution | |
US9989043B2 (en) | System and method for processor-based security | |
KR100611687B1 (ko) | 멀티-토큰 실 및 실 해제 | |
KR100996784B1 (ko) | 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체 | |
KR101067399B1 (ko) | 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체 | |
US8332635B2 (en) | Updateable secure kernel extensions | |
KR101457355B1 (ko) | 보안 애플리케이션 실행을 제공하는 방법 및 장치 | |
Yee | Using secure coprocessors | |
US6438666B2 (en) | Method and apparatus for controlling access to confidential data by analyzing property inherent in data | |
US6385727B1 (en) | Apparatus for providing a secure processing environment | |
US7886162B2 (en) | Cryptographic secure program overlays | |
US8438658B2 (en) | Providing sealed storage in a data processing device | |
US20130232344A1 (en) | Technique for supporting multiple secure enclaves | |
AU743775B2 (en) | An apparatus for providing a secure processing environment | |
Gallery | An overview of trusted computing technology | |
Gilmont et al. | Architecture of security management unit for safe hosting of multiple agents | |
Park et al. | CAFE: A virtualization-based approach to protecting sensitive cloud application logic confidentiality | |
JP6777288B2 (ja) | プロセッサ | |
Bove | Secure Services for Standard RISC-V Architectures | |
AU750573B2 (en) | Method and apparatus for controlling access to confidential data | |
Batten | Trusted execution: applications and verification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050606 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081120 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090219 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090226 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090519 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20090519 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20090519 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091014 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100107 |
|
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: 20100317 |
|
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: 20100414 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4498735 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 3 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 3 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140423 Year of fee payment: 4 |
|
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 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |