JP3630087B2 - 自動データ処理装置 - Google Patents

自動データ処理装置 Download PDF

Info

Publication number
JP3630087B2
JP3630087B2 JP2000281632A JP2000281632A JP3630087B2 JP 3630087 B2 JP3630087 B2 JP 3630087B2 JP 2000281632 A JP2000281632 A JP 2000281632A JP 2000281632 A JP2000281632 A JP 2000281632A JP 3630087 B2 JP3630087 B2 JP 3630087B2
Authority
JP
Japan
Prior art keywords
virtual
ring
environment
virtual machine
real
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000281632A
Other languages
English (en)
Other versions
JP2001318797A (ja
Inventor
レスリー・ジェイ・フレンチ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JP2001318797A publication Critical patent/JP2001318797A/ja
Application granted granted Critical
Publication of JP3630087B2 publication Critical patent/JP3630087B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は階層的保護リングを利用してシステムオペレーションを規制するディジタルデータ処理システムの分野に係り、特に、1以上の仮想マシン(VM:virtual machine)を備えるとともに、メモリ内のロケーションへのアクセスおよび一部の命令の実行可能性を規制する階層構成された3個以上の保護リングを有し、仮想マシンの外部にアクティブセキュリティ層を備えたコンピュータシステムに関する。
【0002】
【従来の技術】
「パーソナル」コンピューティングデバイス(PC)のセキュリティ(安全性)に関する問題は、多くのコンピューティングの領域を通じてますます重要になっている。PCはデスクトップマシンの主流になりつつあり、同時にスタンドアローン型コンピュータとネットワークマシンとの間の境界線は曖昧になっている。従来のワークステーションは、小型メインフレームとともに、PCに取って代わられているが、PCは安全性が低いことでも知られている。オープン(開放型)アクセスネットワーク(例えば、インターネットや、ケーブルモデムプロバイダのアクセスネットワーク)にますます多くのシステムが接続されることにより、これらのシステムは、さまざまなアクセスレベルでの侵入を受けやすくなっている。モデムデータトランザクションのうちの最も単純なものでもそれに関わる情報は大量であり、また、ネットワーク駆動型アプリケーションが急増しているため、システムセキュリティの最初で最後の防衛線はいつも「信頼」ということになってしまう。
【0003】
セキュリティの問題に対するパッチワーク的な解決法がいくつか提案され、あるいは実装されている。最も単純なアプローチの1つは、コンピュータがリムーバブルメディア(通常はフロッピーディスク)からブートしないようにすることにより、「ブートブロック」ウィルスの拡散を防ぐことである。この方法では、ユーザがファームウェア基本入出力システム(BIOS)にアクセスし(これはパスワード保護されていることが多い)、フロッピーからブートすることができる前にマシンをリブートすることが必要である。
【0004】
第2のアプローチは、システム内のすべての既存のソフトウェアを、より安全なバージョンで置き換えることである。しかし、ソフトウェアアプリケーションの複雑さは増大しているため、悪意のあるプログラマが利用しようとする(セキュリティ)ホールやバグの供給は尽きることがない。
【0005】
第3のアプローチは、パスワードの使用および記憶データの暗号化による「秘密のベール」である。しかし、秘密性をセキュリティと同視するのは見当違いである。データを秘匿することは、発見を困難にするかもしれないが、問題の解決にはならない。データおよびパスワードファイルを窃取した後に力ずくで解読する方法は別としても、秘密化方式は、「内部」からの攻撃に非常に弱い。このような攻撃の一例は、偽装プロセスが、ユーザの鍵(キー)入力をモニタすることによって、コンピュータの暗号化鍵のコピー、または、ユーザのパスワードのコピーを取得するというものである。その後、偽装プロセスは情報を外界にブロードキャストし、侵入者が、最も高度な暗号化技術でさえもバイパスすることを可能にしてしまう。
【0006】
第4のアプローチは、ソフトウェアまたはハードウェアの「ファイアウォール」を使用し、データダウンロードおよびネットワークトランザクションをモニタするというものである。しかし、ファイアウォールは、そのフィルタと同程度にしか有用ではなく、情報の通過を許可するかどうかを決定するのに信頼に頼らなければならないことが多い。
【0007】
第5の方法は、ウィルスのコードや攻撃に対して、コードをスキャンしソフトウェア実行をモニタすることである。この方法はPCで広まっているが、その弱点も多く文書化されている。特に、未認知のコードがオペレーティングシステムの欠陥から侵入し、アンチウィルスモニタより下の動作レベルにあるシステムリソースへのアクセスが可能となるときには、この方法は弱い。この方法は、ワードプロセッサのマクロやネットワークブラウザアプリケーションのような、アプリケーション環境内で実行するためのコードにとっては、特に弱い。必然的に、マシンを完全に孤立させたままにするという「軍用型」アプローチを実装するのでなければ、未検出の侵入による内部からの攻撃は、このようなセキュリティ方式を危うくする。
【0008】
第6のアプローチは、「軍用型」アプローチと同様に、エミュレートされた「サンドボックス」環境内でソフトウェアを実行することである。ソフトウェアは、コンピュータシステムエミュレータ内にロードされて実行され、疑いのある活動がモニタされることにより、汚染された可能性のあるアプリケーションに、より大きいシステムがさらされる危険が最小化または除去される。しかし、多くのウィルスは、特定のイベントが発生するまで眠っているため、安全性を確実にするには、疑わしいアプリケーションを無期限に隔離する必要がある。そうでなければ、誤ってウィルスがないとみなされた汚染したアプリケーションがサンドボックスの外に出て、そのアプリケーションが許可されたマシン「全体」に感染する。しかし、アプリケーションを環境エミュレータ内で無期限に実行することは、長期間の動作にとっては望ましくない。エミュレータは、コードの実行にかなりの複雑さを追加する。サンドボックス環境内のソフトウェアは、コンピュータのプロセッサによって直接に実行されるのではなく、命令ごとにシミュレートされることにより、システム動作が遅くなるからである。
【0009】
さらに、一部の解決法では、サンドボックス環境を従来のオペレーティングシステムのフレームワーク内に作成しようとしている。このような実装は、それが実行される基礎となるオペレーティングシステムと同程度にしか安全ではない。例えば、サンドボックスと同じコンピュータ上で実行される特権プロセスは、サンドボックス環境のデータおよびメソッドにアクセスすることが可能である。このような特権プロセスは、サンドボックス環境の制御下にないコンピュータの一部で実行されている悪意のあるアプリケーションの結果である可能性があり、あるいは、サンドボックス実装における不測の抜け穴から生じた可能性がある。
【0010】
セキュリティに対するこれらのさまざまな「2レベル」モデルは、「全か無か」の保護であり、検証コードがオペレーティングシステムと高い特権レベルを共有するという欠点を有する。そのコードが正しく動作することをどのくらい信頼することができるかが問題となる。インタフェースにおける小さい穴(ホール)の存在でさえ、保護方式の全体を破壊する可能性がある。
【0011】
レガシー(従来の)オペレーティングシステムの主な問題点のうちの1つは、「意図」(intention)を判断することにある。セキュリティモニタが、あるオペレーションが意図されたものかどうかを推論することは困難である。ディスクフォーマットユーティリティは、ウィルスとは区別できない方法で、デバイスのブートブロックに書き込みをしようとする。ユーザがメーリングリストのすべてのユーザに電子メールを送るのは、ネットワークを通じて拡散するメールワームとは区別できないことがある。どれが正当なオペレーションであるかを「後知恵」で判断しようとすることは、最終的に失敗しやすい。ハッカーは、発見的なプロセスで、自分のコードが本当に真正であると確信させることがうまくなっているからである。
【0012】
これらのセキュリティ方法の下の、ハードウェア・ファームウェアのレベルでは、PC(例えば、Intelのアーキテクチャに基づくもの)は、特権リングとセグメントテーブルの階層を利用して、プロセスどうしが干渉や妨害をしあわないようにしている。
【0013】
メモリ4a(図1のA)は、セグメント6a〜6eと呼ばれるブロックに分けられる。あるプロセスから個々のセグメントが見えるかどうか(可視性)と、そのプロセスに与えられるアクセス権は、各プロセスに割り当てられるセグメントテーブルによって決定される。ひとまとめにして、プロセスの権利は、1つ以上のディスクリプタテーブル(DT:descriptor table)8によって決定される。メモリセグメント6a〜6eに関連づけられたディスクリプタ10a〜10e(図1のB)は、セグメントの開始アドレスおよび大きさ(長さ)、ならびに、その領域に対するアクセス権を指定する。
【0014】
セグメントは、プロセッサのアーキテクチャにより、複数のプロセスどうしの間で共有されることも可能である。あるセグメントが同一のアクセス権ですべてのプロセスから見えるようにされる場合、セグメントはグローバルテーブルにおかれることが可能である。さらに、各プロセスは、そのプロセスのみに関連づけられたディスクリプタを保持するローカルテーブルを有することも可能である。このようにして、同じメモリ領域が、相異なるプロセスからの相異なるアクセス権を有することが可能となる。
【0015】
例えばIntelアーキテクチャのCPUを用いたコンピュータでは、メインメモリに配置された単一のグローバルディスクリプタテーブル(GDT:Global Descriptor Table)があり、これは、アーキテクチャ固有のグローバルディスクリプタテーブルレジスタ(GDTR:Global Descriptor Table Register)を通じてアクセスされる。このアーキテクチャでは、複数のGDTを設け、プログラム実行中に動的にアクティブにすることが可能である。さらに、各プロセスはローカルディスクリプタテーブル(LDT:Local Descriptor Table)を有することが可能であり、これは、上記と同様にして設けられたローカルディスクリプタテーブルレジスタ(LDTR:Local Descriptor Table Register)を通じてアクセスされる。
【0016】
このプロセッサアーキテクチャは、外部ソースからまたはソフトウェアによって生成される割込みに応答してのプロセッサの動作を決定するために用いられる、もう1つのテーブルを備える。このテーブルは、割込みディスクリプタテーブルレジスタ(IDTR:Interrupt Descriptor Table Register)を通じてアクセスされる。
【0017】
ハードウェアは、ディスクリプタテーブルを参照することによって、プロセスにより使用されるアドレスをチェックし、アドレスがそのプロセスに割り当てられた空間の外部にある場合、例外が発生する。しかし、いくつかのセグメントは、いくつかのプロセスによって共有されている。これらの共有セグメントを保護するため、図2に示すような、特権リングの階層を設ける。各ディスクリプタテーブルエントリは、テーブル内のそのエントリに対するアクセス権を決定するために使用されるリング保護レベルに関連づけられる。実行中のプロセスの一部として実行されるプロシージャを含めて、すべての情報は1つのある特権リングに割り当てられる。プロシージャのカレント実行リングは、プロセスの実行中に変化することがあり、さらに、そのプロシージャに関連づけられたメモリの可視性を決定する。
【0018】
4個のリング0〜3の階層において、最も内側のリング0は最上位の特権のリングであり、最も外側のリング3は最下位の特権のリングである。内側のリングにあるプロシージャは、外側のリングにあるデータにアクセスすることができる(矢印12)。そのため、最も内側のリングで動作するプロシージャ(例えば、オペレーティングシステムのプロシージャ)は、すべてのリングにあるデータにアクセスすることができる。
【0019】
逆に、外側のリングにあるプロシージャは、保護違反例外を引き起こさずには、内側のリングにあるデータにアクセスすることはできない(矢印14)。内側リングにあるデータにアクセスするためには、プロシージャは「コールゲート」18を通じて、そのデータを含むリングに分岐しなければならない。コールゲートとは、ハードウェアによって認識される特殊な「プロシージャコール」ディスクリプタである。いったんゲートを通ると、上位に分岐することを許されたプロシージャが下位のリングに戻る保証はない。また、プロシージャが目標のリングに達した後、そのプロシージャが害悪を働かないという保証もない。
【0020】
仮想マシン環境は、システムセキュリティを維持するための有用なツールである。上記のエミュレートされたサンドボックスはその一例である。1つ以上の仮想マシンを備えたコンピュータシステムは通常、リングの階層を、より少数の実リング(単一のリングのこともある)に圧縮している。実リングには仮想マシン環境が存在し、仮想マシン内から命令が実行されるときに、この人工的環境を受け持つソフトウェアに、特権を決定することをまかせている。例えば、仮想マシンがリング3内でエミュレートされるとき、仮想マシン内のすべてのリングはリング3内からシミュレートされる。
【0021】
仮想マシン内からのコードをプロセッサ上で直接に実行することによって、エミュレータの実行が遅いという問題点を克服する、別の仮想マシン環境が開発されている。各仮想マシン環境内からのコードは、通常のタスクと同様にして実行される。環境管理ソフトウェアは、既存のオペレーティングシステム内の、または、オペレーティングシステムと連携して、オペレーティングシステム内のデバイスドライバを利用し、システムリソースへのアクセスを規制するプロセスとして動作する。残念ながら、これらの方法は、環境シミュレーションの速度の欠点は克服するものの、安全でないレガシー環境に埋め込まれたサンドボックスは、コード実行をシミュレートするソフトウェアベースのエミュレータのセキュリティ保護に欠けている。
【0022】
【発明が解決しようとする課題】
これらはすべて、過度のエミュレーションを避けながら、インタフェースにおけるホール(穴)を塞ぐ環境についてのものである。環境は、修正なしのレガシーオペレーティングシステムの使用が可能になるように、オープンでしかもサンドボックス的でなければならず、同時に、信頼性の高い多層保護および防御可能なセキュリティ制限を提供しなければならない。
【0023】
【課題を解決するための手段】
上記の問題点を解決するため、本発明の目的は、コードがプロセッサ上で直接に実行されるが、各仮想環境の周りにセキュリティシェルを実装した、仮想マシンアーキテクチャを提供することである。シェルを通じてクリティカルなシステムリソースにアクセスすること(ネットワークアクセスを含む)は、制限的であるが透過的に制御される。セキュリティ制限は、各「サンドボックス」の完全性を維持しながら、ネットワークおよびシステムのリソースへの見かけ上オープンなアクセスを可能にする。
【0024】
本発明は、すべてのインタラクションを検証しようとするのではなく、データが通る非常に狭く定義されたインタフェースを有する仮想マシンを通じて、孤立した環境を提供する。この実装は、仮想マシン内で動作するゲストレガシーオペレーティングシステムからは見えない。
【0025】
データ検証メカニズムは、同じハードウェア内に存在する孤立した仮想環境どうしの間での転送に適用される。セキュリティメカニズムはモジュール的であり、仮想ファイアウォール、ハードウェア間およびハードウェア内暗号化、ならびに、ブートブロック検証を含む。「安全でない」環境に物理ディスクを移動し、オペレーティングシステムコンフィグレーションを変更し、「安全な」環境にそのディスクを戻すことに対する保護が設けられる。廃棄または窃取されたドライブからのデータ窃取は、ディスクブートブロックの破壊とともに、防止される。不揮発性RAMデータは、制限されたアクセスによって隠され、あるいは、保護されることが可能である。各オペレーティング環境は孤立している。ファイアウォールが、マシンデータとネットワークの間に作成され、機密データを含む安全な環境から「高リスク」アプリケーションを隔離する。
【0026】
本発明は、好ましくは、物理リソースを保護する小型のコアオペレーティングシステム(例えば、1000行のオーダーのコード)であり、それにより、マシンパフォーマンスの損失を最小にし、オペレーティングシステムの全部または一部をROMのような保護されたブート可能メモリに記憶することを可能にする。コアを小さくすることにより、将来変化するセキュリティモデルに従っていることを示すために正当性証明を適用すること、および、既存のシステムへの影響を最小にしてマシンパフォーマンスの損失を防ぐことが可能となる。
【0027】
仮想マシンコアオペレーティングシステムは、特権アプリケーションとして動作する仮想マシンマネージャと同様、最上位特権リング内で動作する。仮想マシンマネージャは、各仮想環境のためのシステムリソースのエミュレーションを管理する。データ転送マネージャ(DTM:data transfer manager)は、2番目に高い特権リング内で動作し、各仮想環境を出入りするデータ転送を管理する。仮想環境内には、通常のオペレーティング環境をシミュレートするために仮想特権リングが作成される。各仮想マシンは自分自身のオペレーティングシステムを有するが、マシンリソースへのすべてのアクセスは仮想マシンコアを通して検証されるという制限された環境にある。
【0028】
一般に、仮想マシンにおけるほとんどの命令は「ネイティブ」に実行されるが、リング0実行レベルを必要とする命令のみはコアにトラップされる。実装の一部は、仮想マシンのための特権オペレーションを隠すデータ構造体(例えば、プロセッサステータスレジスタ)の管理である。この方式では、レガシーオペレーティングシステムには、自分自身の特権レベルの変化を見かけ上追跡するシステムレジスタのセットが見えることになるが、リング0命令の使用、物理メモリへのアクセスあるいは物理デバイスへのアクセスをしようとすると、まず仮想マシンコアを通ることになる。
【0029】
修正されていないオペレーティングシステムを仮想環境で実行するため、ゲストシステムには、ネイティブマシンと同一であるように見えるメモリモデルが提示される。例えば、各マシンには、(仮想)リセット時にロケーションFFFF:FFF0に(おそらくは相異なる)ブートROMが見えなければならない。そのため、仮想メモリ管理システムは、実マシン上の相異なる物理アドレスに同じ論理アドレスをマップする。
【0030】
各マシンが自分自身のブートシーケンスを通して動作することを保証するため、相異なる仮想マシンに返される結果は実際のハードウェアを反映しないことがある。例えば、マシンは、ハードウェアにあるよりも多いまたは少ない物理メモリにアクセス可能であることがあり、また、プローブに応答するバス上のすべてのデバイスが見えるとは限らない。各仮想環境に個別化されたブートROMを設けることにより、BIOSデータ構造体が、その仮想マシンに必要な仮想状態を反映するようにされる。
【0031】
同様に、ゲストマシンは、ハードウェアリソースにアクセスすることを阻止される。入出力命令、および、メモリマップドページを通じて外部デバイスにアクセスする命令もまた、コアにトラップされる。これを実現するため、コアは、可能な場合、与えられたタスクに対して個々の入出力空間アドレスがロックアウトされることが可能であるようなメモリ管理システムを使用する。
【0032】
ハードウェア割込みは、コアハンドラにトラップされ、そこから適当なマシンにディスパッチされる。このメカニズムは、1つの仮想マシンしかない場合でも適用しなければならない。割込みをイネーブル(有効)またはディスエーブル(無効)にする命令は、仮想環境内でエミュレートされているだけだからである。仮想マシンのリング0にデバイスドライバをロードすることが許可される場合に限り、割込みを直接にそのハンドラにディスパッチすることができる。これが当てはまる唯一の場合は、パフォーマンスが問題となる場合であろう。例えば、自分自身の検証領域で実行されている大容量デバイス(例えばイーサネットコントローラ)に対する複数回のデータコピーやマシン再スケジュールを避けるためである。明らかに、このメカニズムは、ファイアウォールのような高度に信頼されたアプリケーションに対してのみ利用可能である。
【0033】
仮想マシンの概念は、ハード(ディスク)ドライブのような、マシン上の補助メモリ(補助記憶領域)にも拡張される。マシンどうしが同じ物理デバイスを共有していても、それらが専用のドライブを有しているかのように、絶対ブロックアドレスへのアクセスは、トラップされ、仮想ディスクアドレスに変換される。
【0034】
ディスクへの物理攻撃を考慮して、すべてのアクセスをトラップすることにより、本発明のアーキテクチャ内で他の付加価値サービスが可能となる。例えば、本発明は、透過的なディスクミラーリング、あるいはRAID(Redundant Array of Independent Disks)システムを実装して、故障したハードウェアからのデータ回復を改善することができる。また、このレベルで可能なこととして、コアは、不揮発性RAMに記憶された鍵を用いて仮想マシン上のすべてのデータを暗号化し、ディスクが他のマシン上では読むことができないようにすることができる。さらに完全な保護のために、コアシステムをマシンごとの不揮発性RAM鍵によって保護し、仮想マシンデータが、マシン鍵とユーザによる鍵入力の両方からなる2レベル鍵を使用することが可能である。
【0035】
これらの方式を使用することを選択すると、システムセキュリティと全体としてのシステムパフォーマンスへの影響との間の妥協を必要とする。暗号化方法は、コンポーネント障害時にコンポーネントを「ホットスワップ」することがほとんど不可能であるという欠点を有する。また、ディスククラッシュからのデータ回復がずっと困難になる。
【0036】
可能性として、ネイティブシステム上では別個のリング(1〜3)で実行されるコードが、ゲストシステムでは同じ物理リング内で実行される心配がある。これにより、ユーザレベルのアプリケーションが、アクセスすることができないはずのデータ構造体を変更することができてしまう可能性がある。この心配は、メモリ管理サブシステムを用いた仮想リングシステムを実装することにより解決される。このようにして、異なる仮想リングのページは別個のまま保持され、同じ物理リング内のタスクどうしの間のタスク切り替えは、メモリアクセス制御をも切り替える。
【0037】
本発明の基本的な実装は、
・好ましくは安全なブートROMに記憶された、仮想マシンコアおよび仮想マシンマネージャのためのローダ、
・コンフィグレーションデータおよびセキュリティ鍵を保持するための不揮発性RAM内の領域、
・個々の仮想マシンを実行することを担当する仮想マシンコアスケジューラ、
・ゲスト仮想マシンのコンフィグレーション(設定)、ロード、およびセキュリティポリシーを処理する仮想マシンマネージャ、
・ゲスト仮想マシンのコンフィグレーション仕様、
・ゲスト仮想マシンのための仮想ブートROM、
・ゲスト仮想マシンのための仮想不揮発性RAMパラメータ領域、
・ゲスト仮想マシンのためのリング1タスクにロードされる安全なアプリケーション、
・ゲスト仮想マシンのためのファイルシステムを含むディスクパーティション(オペレーティングシステムおよびアプリケーションコードを含む)
を有する。
【0038】
ほとんどのマシンは、さまざまなハードウェアを含む。例えば、リムーバブルメディアデバイス、ネットワークインタフェース、および補助ハードドライブがある。これらのリソースは、コアを通じてゲストマシンどうしの間で共有されることも、特定のマシンに専用とすることも可能である。これらのコンポーネントの正確な配置は、セキュリティモデルによって決定することも可能である。例えば、仮想マシンマネージャがディスクからロードされるようにすることにより、ドライバおよびポリシーのアップグレード(おそらくは、新たなハードウェアコンフィグレーションに応じての)を容易にすることが可能である。しかし、自動ハードウェア再設定がセキュリティの脅威となる状況では、システム全体をブートROMからロードすることが可能である。
【0039】
他のセキュリティ特有のハードウェアコンポーネントをアーキテクチャに組み込むことも可能である。一例としては、2鍵暗号化方式の隠し鍵部分を実装するフュージブル(fusible)ROM(すなわち、いったん書き込んだデータを読み出すことができないROM)がある。このようなPROMがあれば、隠し鍵は、マシン上に可読形式で格納されない。このようなPROMは、チャレンジ・レスポンス認証メカニズムを実装するために使用することも可能である。
【0040】
リムーバブルメディアから安全なシステムをブートすることができることは、特に、感染したメディアがサイト付近に運ばれてきたことが知られているときには、許容できないセキュリティの抜け穴となる。既知の良好なメディアからマシンをブートすることができる場合でも、ユーザには、保護されているはずのマシンのセキュリティオプションにアクセスする機会が与えられる。しかし、このオプションを除去すれば、新たなマシンをセットアップすることは困難または不可能になってしまう。
【0041】
この問題点にはいくつかの解決法がある。第1の解決法は、ハードドライブを既存のシステムから設定することができる特殊な「セットアップ」マシンを作成することである。第2の解決法は、リムーバブルメディアからのブートを可能にするハードウェアジャンパを設けることである。第3の解決法は、リムーバブルメディアからブートできないようにする不揮発性RAMの「ディスエーブル」ビットをを設け、マシンが設定されたらそれをセットすることである。第4の解決法は、マシンが稼働し始めたら置換される特殊なブートROMをダウンロードまたは挿入することである。どのようにしてリムーバブルメディアからブートできないようにするかに関して、これらの選択肢のうちのいずれを選択するかは、個々のサイトのセキュリティ環境および運用手続きに依存する。コアがロードされ、仮想マシンマネージャが起動した後は、個々の仮想マシンが作成され、そのマシンの仮想の「リムーバブルメディアからブート」オプションを有効にする(これは後でコアから無効にすることが可能)ことによって、それらのオペレーティングシステムは従来のメカニズムによりインストールされる。
【0042】
インストールに手作業の介入を必要とすることは、デスクトップ型の企業環境ではポリシーの本質的な部分かもしれないが、国際的なインフラストラクチャ内に深く埋め込まれたアクティブなネットワークコンポーネントには不適当なことがある。このようなシステムでは、システムソフトウェアのアクティブアップグレードが重要となることがある。このような状況では、ネットワークを通じてコアシステムをロードすることが好ましい場合がある。ブートROMに復号鍵を埋め込むことにより、権限のあるサーバのみがこの初期イメージを供給することができることを保証することが可能となる。
【0043】
固定システムのインストール手続きにおけるその後のステップは、システムが実際にどのように管理される場合でも本質的に同じままである。ブート可能ハードドライブをフォーマットしパーティションを切るためのユーティリティ(そのマシン上で、または、別のシステム上で実行される)が必要である。ターゲットハードウェア上のブートROMは、適当なブート環境で再プログラムされなければならない(なお、ゲストシステムが使用するためにオリジナルのROMをイメージとして保存することも可能である)。ブート可能コアと、仮想マシンマネージャのイメージは、安全なパーティションにインストールしなければならない。
【0044】
不揮発性RAMデータは、適当なハードウェアおよびセキュリティオプションで設定されなければならない。マシンのセキュリティ鍵を生成し、システムにインストールしなければならない。おそらくは、新たにロードされるパーティション全体が暗号化されることになる。
【0045】
この時点で、システムは、仮想マシンマネージャのマシンにブート可能となる。このマシンからターゲットマシンに、コンフィグレーションを引き継ぐこと、あるいは、ディスクおよびプログラミングの情報を転送することが可能である。
【0046】
個々のゲスト仮想マシンのプロファイルを作成しなければならない。これには次のものが含まれる。
a)そのマシンのブートROMとしてインストールされるイメージ。これは、オリジナルマシンのROMであるか、あるいは、例えば別のシステムがエミュレートまたは開発される場合には別のソースからのROMであることが可能である。
b)不揮発性RAM要求に対して供給されるデータを含むファイル。これは、最初は空であるか、または、その仮想システムにとって適当な最小限のコンフィグレーションデータを含むことが可能である。
c)リング0またはリング1タスク領域にロードされるアプリケーション。
d)仮想マシンのディスクドライブにマップされるディスクの領域、および、その領域内の保護ブロックの指定(例えば、ブートセクタへの書き込み不可)。
e)専用ハードウェアや外部割り込みソースの指定。
f)専用入出力空間アドレスへのアクセス権。
【0047】
これらのデータが入力された後、ゲスト仮想マシンは、そのブートROMイメージをマップし、仮想リング0内でリセットベクタから開始することによって起動することができる。最初のブート時に、マシンは新たな未設定のシステムのように見える。ブートROMセットアッププログラム、または、ブート可能リムーバブルメディアを用いて、不揮発性RAMシャドウイメージ内のパラメータを設定することができる。例示的なマシンイメージを図13に示す。
【0048】
その後、個々のマシンは、自分自身のディスク領域をフォーマットし、オペレーティングシステムをインストールする。これは、コンフィグレーションシステムを、ファイルシステムフォーマット(例えば、DOSやLinux)とは独立にする。例示的なディスクレイアウトを図5に示す。
【0049】
補助メモリディスク60は、パーティションテーブル102、実環境パーティションおよびファイルシステム104、ファイアウォールパーティション106、および、それぞれの仮想環境専用のパーティション108a〜108dを有する。実環境パーティション104は、仮想マシンコアイメージ104a、仮想マシンマネージャリング0タスクイメージ104b、他の実環境特権タスクのイメージ104c、仮想マシンマネージャ20のデータ領域104d、および、データ転送マネージャ30(後述)のスプール領域104eを有する。仮想マシンマネージャデータ領域104dは、それぞれの仮想環境ごとに、仕様140、ブートROMイメージ150、および不揮発性RAMエミュレーションイメージ160を有する。
【0050】
通常の動作条件下では、電源投入時に、ハードウェアはブートROMからブートされる。このROMは、不揮発性RAM格納データまたは他のソースからの低レベルマシンパラメータを設定し、(非リムーバブル)ブートディスクにアクセスして仮想マシンコアをロードする。セキュリティモデルに依存して、ROMは、ロードされるシステムに対する基本的な検証を実行するために、組み込みチェックサムおよび復号機能を有することも可能である。
【0051】
仮想マシンコア初期化プロシージャは、仮想マシンマネージャをリング0タスクとしてロードし、このマネージャを実行キューに入れる。次に、コアは、仮想マシンスケジューラを起動する。これは、メインエントリポイントから仮想マシンマネージャのマシンに入る。
【0052】
この時点で、仮想マシンコアは、タスクごとではなく仮想マシンごとに、オリジナルのコアと同様の「ファンクション」のセットを実行している。ただし、仮想マシンの作成および削除という追加機能がある。これらのファンクションは、リング0コードからのみ直接にアクセス可能であり、次のものを含む。
a)物理メモリの割当ておよび解放。
b)割込みおよびトラップハンドラのインストール。
c)仮想マシンの作成および削除。
d)所定のメッセージングプロトコルを用いた仮想マシン環境どうしの間のタスク間通信(リング0およびリング1のみ)
e)割込み無効化サービスによるクリティカルセクションの実装。
f)仮想マシン間のスケジューリングおよびコンテクスト切り替え。
g)登録されたハンドラへの第1レベル割込みディスパッチ。
【0053】
通信プリミティブにより、データは、仮想マシンどうしの間で渡されるが、これは特権プログラムを通じてのみ行われる。仮想マシンマネージャは、外部イベント、入出力空間アドレスへの非リング0アクセス、および、特権命令の実行に対するトラップおよび割込みハンドラをインストールする。また、仮想マシンマネージャは、物理ディスク、キーボード、マウスおよびグラフィクスデバイスにアクセスするためのドライバ、ならびに、不揮発性RAMおよびリアルタイムクロック情報を読み出すためのドライバも含む。
【0054】
「実」環境内(仮想マシン環境の外部)では、アプリケーションは、システムのコンフィグレーション情報を含む実際のファイルシステムにアクセスすることができる。この場合も、セキュリティモデルに依存して、このブートストラップ環境で実行されるアプリケーションは、仮想マシンのディスク領域にアクセスすることも可能である。これは、例えば、既知の保存されたコピーと対照して仮想セクタ0の内容を確認するため、あるいは、既知のブートブロックウィルスがないかどうかを検査するためである。
【0055】
その後、仮想マシンマネージャは、コアファイルシステム内のコンフィグレーション情報に基づいて、他のゲスト仮想マシンを作成する。これらのマシンは、中央スケジューラの実行リストに追加される。
【0056】
個々のマシンのためのページテーブルの作成および管理、ならびにマシンの制御レジスタのシャドウテーブルの管理を担当するのは仮想マシンマネージャである。このように、中央コアは、個々のセキュリティポリシーや管理ストラテジを知っている必要がない。
【0057】
個々のマシンは、それらの機能に適当な状態で起動する。例えば、ほとんどの保護モードマシンは、それらのリセット(仮想)アドレスから起動するが、リング2で実行される。安全なマシン(例えば、ファイアウォールマシン)は、リング0アプリケーションエントリポイントから起動することが必要とされる可能性がある。
【0058】
特権のあるオペレーションやデータへのすべての企図されたアクセスは、仮想マシンマネージャにトラップされる。仮想マシンマネージャは、そのマシンに対して設定されたポリシーと、仮想マシンのシャドウ制御レジスタの現在の状態とに従って結果をエミュレートする。
【0059】
他の特権マシンに引き継がれない外部割込みは、コアによって、仮想マシンマネージャへとスケジュールされ、仮想マシンマネージャは、それらの割込みをゲスト仮想マシンに、それらのマシンの状態に従って分配する。共有リソース(例えばキーボード)について、仮想マシンマネージャは、デバイスの現在の「所有権」(ownership)を追跡し、正しい入力が正しいデバイスに送られることを保証する。ディスクアクセスについては、データは、そのディスク領域にアクセス可能なマシンに送られなければならない(あるいは、そのようなマシンから取得されなければならない)。また、見かけ上の物理アドレスは、マシンごとにマップされなければならない。同様に、不揮発性RAMのような「エミュレーション」デバイスは、要求元のマシンに適当なデータを返す。
【0060】
一般に、すべてのアプリケーションは、仮想環境で透過的に動作する。各システムは、そのシステム専用のディスクエリアのみを有するように見える。データの暗号化および復号は、透過的に処理される。マシンにマップされるデバイスは、通常のインタフェース(例えば、BIOSコンフィグレーションメニュー)を通じてアクセスされるように見える。
【0061】
仮想マシンを動作させる主な動機は、各環境が固有の保護およびセキュリティ領域を有することである。例示的な構成は、次の4つの仮想マシンを含む。
a)外部ネットワークにアクセス可能で、ウェブブラウザや電子メールアプリケーションのようなソフトウェアを実行する、安全でない「オープン」なマシン。このようなマシンは、データ窃取アプリケーションが盗んだデータを送信しないように、発信電子メールを阻止することがある。
b)発信電子メールアクセスが可能な低機密性ファイルシステム。これは、ワードプロセッサアプリケーションやその他のウィルスターゲットも実行可能である。
c)機密(または個人に損害を与える)情報を格納し操作するために使用される、外部アクセス不可能な、高機密性マシン。
d)外界に対するファイアウォールとして作用し、イーサネットインタフェースに対する直接制御を有する仮想マシン。このようなマシンは、SMTP(Simple Mail Transfer Protocol)トランザクションをエミュレートし、そのローカルスプールの限り、他のマシンが電子メールを「送信」することを可能にする。ただし、データがマシンを出る前に(例えば、物理マシンから外への、または、仮想マシンどうしの間で仮想ネットワークアダプタを通じて、送信される前に)、明示的なユーザ確認を必要とする。
【0062】
このように、アクセスおよび損害は、個々のプログラムが実行される環境に制限される。この構成でセキュリティを維持することは依然としてある程度のユーザ規律を必要とすることは確かであるが、手続きおよびポリシーが定められるだけではなく守られるという環境では、隔離規則は有効である。実際、ユーザが「作業」(play)環境を作成することを可能にすることによって、ユーザに自分のデスクトップ上での自由度をより多く与えながら、データを不要にさらさないことにより全体のセキュリティを向上させることができる。
【0063】
このモデルはビジネス用途に制限されない。例えば、家庭では、1つの仮想マシンは「子供向け」ウェブブラウザのみを実行し、監視なしのバージョンは、異なるパスワード保護された仮想領域でのみアクセス可能である(従って、暗に、フルバージョンを用いてダウンロードされたデータは他人の眼からは隠されるということになる)。
【0064】
マルチマシン仮想環境モデルを考えると、データを仮想マシンどうしの間で受け渡ししなければならない場合がある。例えば、安全でない環境で受信された電子メールメッセージを、機密領域に渡す必要がある。このようなデータ転送は、リング1アプリケーションを通じて処理される。
【0065】
リング1アプリケーションは、NFS(Network File System)によって使用されるのと同様の「シャドウドライブ」を作成し、セキュリティの高い環境のアプリケーションから開始されたオペレーションが、セキュリティの低い環境にアクセスすると、リング1にトラップされるようにする。この方式の1つの利点は、このようなインタフェースを通じてウィルスチェックを適用することができることである。リング1で特別のアプリケーションを動作させることにより、転送コードは、マシン間でデータを探索しマップするためにリング0ゲートコールのセットを使用する。
【0066】
このアプローチの欠点は、共有デバイスが、相異なるマシンからの要求が正しく処理されるとともに適当な正当性チェックとともに処理されることを保証するドライバを通じて、制御されなければならないことである。入出力アクセスは、例えばディスクアドレスを変換し、あるいは、データを読み書きするためのバッファを設けるように、必要に応じて修正されなければならない。
【0067】
本発明は、安全な小型のオペレーティングシステム上で動作することを意図しているため、ドライバはこれに応じてポートされなければならない。さまざまなハードウェアコンポーネントのための最新のドライバを維持しようとする労力は、特に、Linuxグラフィクスカードドライバに対するソースレベルサポートがほとんど全くないことにも見られるように、さまざまなメーカによる非開示に対する苦労が増大していることを考えると、過小評価されるべきでない。XFree86の場合のように、多くの場合、メーカは、ドライバのバイナリバージョンのみを供給している。
【0068】
必要とされるセキュリティが絶対的か相対的かに依存して、実行時間を改善するためのトレードオフを考慮することが可能である。例えば、「カレント」仮想マシン環境に対して、ビデオバッファに用いられるメモリマップドアパーチャへの直接アクセスを可能にすることにより、モニタへの直接書き込みが可能となる。しかし、同じビデオカードの制御レジスタへのアクセスを可能にすると、(潜在的に)アプリケーションがシステムをロックアップさせることが可能になるおそれがある。
【0069】
また、本発明は、コンピューティングデバイスがオープンアクセスネットワーキングフレームワークに埋め込まれている場合に、より安全な相互作用を可能にする。このようなアプリケーションの1つは、アクティブネットワーク(Active Network)の領域にある。この場合、データストリームがコンピュータネットワークを流れるのとともに処理がデータストリームに適用される。アクティブネットワークの重要な特徴は、処理が事前に固定されておらず、処理されるデータストリームの内容に従って処理ユニットに動的にロードされるデータおよびメソッドを含むことが可能であることである。これらのプログラム自体、データと同じオープンネットワークを通じてプロセッサに転送され、従って、悪意のある第三者による観測や干渉にさらされる。
【0070】
通常のシステムでは、アプリケーション(例えば、Java対応ウェブブラウザ)は、公衆の安全でないインターネットを通じて、信頼されるソースからモジュールをダウンロードする。セキュリティ(安全性)を高めるには、公開鍵暗号化を使用する。アプリケーションは、モジュールリポジトリへの安全なチャネルを開設しようとする場合、秘密鍵を用いて暗号化されたメッセージをリポジトリに送り、リポジトリは、公開鍵でこのメッセージを復号し、それに応答して、(公開鍵で暗号化した)適当なモジュールを送信する。モジュールは、アプリケーションに到達すると、秘密鍵で復号される。
【0071】
通常、秘密鍵は1つのマシンによって保有され、その上で実行されるアプリケーションどうしで共有される。秘密鍵は、その重要性が高いため、ブートROMまたは不揮発性RAMに記憶され、あるいは、それらに記憶された情報から導出されることが多い。この従来の方法の問題点は、悪意のあるアプリケーションもまた鍵を要求することが可能であることにより、他のアプリケーションの活動に対するデータスヌーピング(data snooping)が可能となってしまう。同様に危険なこととして、悪意のあるアプリケーションは、鍵を盗み、それを他の場所にブロードキャストすることができてしまう。
【0072】
安全な仮想環境の作成により、ある仮想環境で実行されるアプリケーションが、別の仮想環境で実行されるアプリケーションに対するスヌーピングをすることができないようになるが、鍵の公然の窃取は妨げられない。
【0073】
鍵の窃取を防ぐため、仮想環境で動作しているアプリケーションにより鍵に対する要求(例えば、所定のアドレスへのコール)がなされると、その要求はリング0コアにトラップされる。その場合、マシンの実際の鍵を提供する代わりに、仮想マシンマネージャ(またはその他の実環境タスク)は、物理マシンの鍵を用いて暗号化されたメッセージを鍵サーバに送り、1回限りのまたは短寿命の秘密鍵を要求する。
【0074】
その後、この短寿命秘密鍵は、セッション中に使用するために、要求元のアプリケーションに渡される。これらの公開鍵および秘密鍵は、個々の仮想環境に固有である。従って、その仮想環境内のすべては、他のすべての仮想環境とは独立の鍵を有し、この鍵は、仮想環境内のアプリケーションが全く知らない間に変更可能である。さらに、コアが実マシンの秘密鍵を隠しているため、この鍵は仮想環境内からは決して見えず、従って、安全である。
【0075】
【発明の実施の形態】
本発明による自動データ装置は、仮想マシン環境の周りにセキュリティシェルを作成すると同時に、仮想環境内からコードを直接に実行する。
【0076】
図2に示すように、装置は、実特権リング0〜3の階層を使用してアクセス特権を制御する。これらの実特権リングは、装置の「実」すなわち通常の処理環境からなる。
図3のAは、仮想マシン環境を含む、本発明の基本コンポーネントを示す図であり、図3のBは、Aの仮想マシン環境内の仮想リングの階層を示す図である。図3のAに示すように、実環境内には、タスク切り替え、リソース管理および割込みディスパッチを含むファンクションのセットを実装した小型のコアシステム50がある。このようなタスクの1つは、最上位特権の実リング内にある仮想マシンマネージャ20(以下「VMマネージャ」という)であり、実リングのプロパティを変更するすべての処理はこれに制約される。実環境内には、VMマネージャ20によって作成された複数の仮想マシン環境40があり、これらは実特権リング2および3に存在する。
【0077】
仮想環境40内から見ると、あらゆるものは「実」の幻影を有する。しかし、物理リソースへのコールは実際にはVMマネージャ20によって処理される。VMマネージャ20は、このようなコールを直接にトラップするか、または、コールをマスクして、アクセスが制限されるようにする。
図4は仮想環境専用のメモリのパーティションを示す図である。例えば、仮想環境40はメモリ4b内のメモリ部分40′内にある。通常、仮想環境40内で実行されるプロセスは、アドレス0から始まる連続したアドレスの範囲が見えることを期待する。しかし、仮想環境に割り当てられるメモリの部分は0から始まる可能性は低く、必ずしも連続しているわけでもない。これを調整するため、VMマネージャ20は、プロセッサのメモリ管理ユニット(MMU)のファシリティを用いて、メモリ部分40′のアドレスをマップし、仮想環境40内からすべてが通常のように見えるようにする。このようなマッピングは一般に、ページメモリ管理ユニットまたはコントローラによって実行されるため、VMマネージャ20は、利用可能なときにこのようなツールを利用することが好ましい。
【0078】
同様に、ハードドライブのような補助メモリの場合、仮想環境40内から絶対ブロックアドレスにアクセスしようとする試みは、VMマネージャ20によってトラップされ変換されなければならない。仮想環境40内からは、たとえ複数の「仮想」ドライブが物理的には同じデバイスであっても、ドライブは専用ドライブのように見える。これもまた、透過的なドライブパーティショニングによって実現することができるが、これはIntelアーキテクチャのPCによって直接にはサポートされていない。しかし、透過的パーティショニングがハードウェア・ファームウェアによってサポートされている場合、VMマネージャ20は、「仮想ドライブ」を管理するためにこのようなツールを利用することが好ましい。
【0079】
仮想環境との間のデータ転送は、特権リング1にあるデータ転送マネージャ30を通じて行われる。仮想環境40内で実行されるプロセスから見ると、データ転送マネージャ30は、イーサネットネットワークコネクションのような通信ポートであるように見える。複数の仮想環境がある場合、環境間の通信はデータ転送マネージャを通じて行われ、仮想環境どうしは通信媒体(例えば物理ローカルエリアネットワーク)を通じて接続された別個のエンティティとして互いを認識する。仮想環境40が物理コンピュータの外部のマシンと通信しようとするとき、情報は、データ転送マネージャ30からポートあるいはゲートウェイ22を通じて外界に渡る。このようなゲートウェイの例としては、イーサネット接続を行うイーサネットドライバや、モデムドライバがある。
【0080】
仮想環境40は、仮想特権リング(図3のB)に分かれる。通常、実リングと同数の仮想特権リングがあるが、仮想環境は実リングの残りの部分(すなわち、実リング2および3)のみを含むため、VMマネージャ20がディスクリプタテーブルの制御権を有する。
【0081】
第1実施例は、さらに2種類のディスクリプタテーブルを有する。第1のものは、仮想環境ディスクリプタテーブル(VEDT:virtual environment descriptor table)である。VEDTは、仮想マシン内で実行されるオペレーティングシステムソフトウェアによって作成され、そのシステムによってセグメントに割り当てられた仮想リング番号を有する。仮想マシンに関する限り、VEDTは、GDTまたはLDTとして使用することが可能である。VEDTは、仮想環境内の情報を、実リングにではなく仮想リングにマップし、セグメントを、実アドレスにではなく、仮想環境を含むメモリ部分40′のマップされたアドレスにマップする。
【0082】
追加の2番目の種類のディスクリプタテーブルは、シャドウディスクリプタテーブル(SDT:shadow descriptor table)である。SDTは、VMマネージャによって生成され、ローカル環境内のセグメントを実特権リングの階層にマップする。プロセッサが、仮想環境内から発した命令を実行しているとき、SDTは、特権を決定するために使用される。実際には、仮想環境内で使用されるVEDTごとに固有のSDTが生成される。SDTは、命令がどの特権で実行されるかに基づいて選択される。
【0083】
図6は、第1実施例の実環境および仮想環境の両方に対する特権リングおよびコールゲートを示す図である。第1実施例では、図6に示すように、仮想環境を含む実リング以外の残りの部分は、VEDTにおける仮想リング0に関連づけられたすべてのセグメントがSDTにおける実リング2に関連づけられるように分けられる。仮想リング1〜3における仮想環境内で実行される命令は、SDTにより実リング3に割り当てられる。このリング割当ての分配が好ましいのは、仮想環境40内では、レガシーOSが(ほとんどの場合)、例えば入出力オペレーションを処理するためのドライバと同様に、仮想リング0にあるからである。コールゲートが最も多く使用される場合の1つは、このような特権にアクセスする場合である。後述するように、低い特権の圧縮仮想リングから高い特権の圧縮仮想リングへのアクセスを要求するために仮想環境コールゲート118(図6)が使用されるときにはVMマネージャ20が介在しなければならないため、非圧縮リングとして仮想リング0を構成することによりVMマネージャの介入の必要が少なくなることにより、処理が高速になる。
【0084】
仮想環境内の仮想特権リングどうしの間の特権規則は、図2に関して説明したような実環境のものと同じである。仮想環境内の命令は、同位または下位の特権の仮想リングに関連づけられた情報およびリソースにアクセスすることができる。上位の特権リングにアクセスしようとする命令は、仮想コールゲート118のうちの1つを使用しなければならない。これらの仮想コールゲート118はVEDT内に現れ、対応するコールゲートがSDT内にマップされる。
【0085】
第1実施例では、仮想環境内のプロセスから情報を求める要求は、上位、下位、または同位のいずれの特権であるかにかかわらず、VEDTではなくSDTを用いて決定される。
【0086】
図7に、VEDT70および4個のSDT80a〜dを示す。(説明のため、この図のディスクリプタテーブルには特権情報のみを示すが、実際には、これらのテーブルは、メモリアドレスのような、ディスクリプタテーブルに通常見られる他の情報も含む。)SDT80a〜dのそれぞれは、仮想特権リングの階層の1つの仮想特権リングに関連づけられる。
【0087】
例えば、仮想リング0で動作する命令が情報を要求するとき、仮想リング0(80a)のSDTが、ディスクリプタ情報のためにプロセッサによって使用される。プロセッサは、この命令を、実リング2で動作する命令と見なす。命令が最上位の仮想特権リングで動作しているため、これは、仮想環境40全体の情報にアクセス可能である。従って、VMマネージャ20は、仮想環境内のすべてのセグメントについて、実リング2をSDT0(80a)に入れる。仮想リング0で動作する命令が、仮想環境内のあるセグメントへのアクセスを要求すると、プロセッサは、命令が動作している実特権リング(実リング2)を、SDT0(80a)に記録されている実特権リングと比較する。これらは等しいため、プロセッサはアクセスを許可する。
【0088】
これに対して、仮想リング3で動作する命令は、仮想リング3の外側にアクセスするには、仮想コールゲート118を使用しなければならない。仮想リング3で動作する命令に対して、プロセッサは、SDT3(80d)を用いて、特権を決定する。この場合、VEDT70に示されるように、仮想リング3に関連づけられたすべてのセグメントに対して、VMマネージャ20は、実リング3を対応するSDT3(80d)ロケーションに入れる。こうして、仮想特権リング3内の要求は合法となり、プロセッサはアクセスを許可する。
【0089】
SDT3(80d)内で、VMマネージャ20は、すべてのセグメントに対して実リング2を仮想リング0に入れる。仮想リング3内の命令が仮想リング0へのアクセスを要求すると、プロセッサは、命令の実リング(実リング3)を、要求される特権(実リング2)と比較し、例外を発行する。この遷移は、コールゲートを通じて実行されるのでなければ不法であるからである。遷移が適当なコールゲートを通じて試みられた場合、遷移は許可される。
【0090】
ある圧縮仮想リングから上位の特権の圧縮仮想リングへのアクセスが要求されると、VMマネージャが介入する。SDT3(80d)内で、VMマネージャ20は、すべてのセグメントに対して、実リング0を、上位の特権の圧縮仮想リング(リング1および2)に入れる。前と同様に、仮想リング3から仮想リング1または2への遷移がコールゲートを使用せずに試みられた場合、例外が発生する。しかし、実リング0への仮想環境コールゲート要求の実行は、VMマネージャ20にトラップされる。これは、仮想環境40内から特権オペレーションまたは特権データにアクセスしようとする場合と同様である。これらの場合、コールのターゲットアドレスが存在するメモリセグメントに要求される実特権レベルは、仮想ゲートの特権レベルにとって十分ではない。これにより、VMマネージャ20へのトラップが引き起こされるために、VMマネージャ20は、仮想リングを変更し、新たな仮想環境を反映するように実SDTテーブルを切り替えることができる。その後、VMマネージャ20は、その仮想マシンのために設定されたポリシーに従い、要求されたセグメントの対応するVEDTエントリの内容に基づいて、結果をエミュレートする。
【0091】
シャドウディスクリプタテーブル(SDT)80a〜dは、一度に1個ずつ、または、仮想環境40の形成時に全部、VMマネージャ20によって作成される。第1実施例では、SDT形成ポリシーは、仮想環境40の既知のまたは観測される挙動に基づいて、VMマネージャ20によって適応的に選択される。
【0092】
最も単純なポリシーは、個々の仮想特権リングに対して、そのリング内でプロセスが実行を開始するときに1個のSDTを作成するというものである。このSDTは、セグメントがメモリ部分40′内でロケーションを変更する(または削除もしくは追加される)か、または、その他の何らかの変更がVEDTに生じたが、実行中のプロセスはアクセス特権を変更しない場合に、修正される。実行中のプロセスが特権リングを変更すると、このSDTは廃棄され、新たなSDTが生成される。このポリシーは、仮想リング変更が頻繁である場合に、オーバーヘッドは増大するが、維持されるSDTが最小限になるという利点を有する。
【0093】
第2のSDTポリシーは、仮想環境40の形成時に仮想リングの階層全体に対してSDTを作成するというものである。VEDTに変更が生じるたびにすべてのSDTが修正される。このポリシーは、維持されるSDTは増大するが、仮想リングどうしの間の遷移は高速になるという利点を有する。このポリシーは、仮想環境内のプロセスが頻繁にリングを変更する状況に最もよく適している。
【0094】
第3のSDTポリシーは、上記の2つの混成であり、SDTは必要に応じて一度に1個ずつ作成されるが、いったん作成された後は、維持され再使用されるというものである。
【0095】
VMマネージャ20が、仮想環境40内のレガシーオペレーティングシステムを認識した場合、このレガシーOSの特性に適したSDTポリシーが実行される。環境の内容が認識されない場合、VMマネージャ20はデフォルトポリシー(例えば、第1実施例の第1のポリシー)を選択し、効率が示すところに応じてポリシーを切り替える。
【0096】
複数のディスクリプタテーブルが存在するシステムでは、それぞれをシャドウ化しなければならない。これは、グローバルテーブルとローカルテーブルの両方があるときにも当てはまる。本発明の代表的な実装では、グローバルテーブルは、VMマネージャ20が仮想マシンどうしの間を切り替えるときに変更され、ローカルテーブルは、仮想マシンのオペレーティングシステムがタスクどうしの間を切り替えるときに変更される。
【0097】
図8は、第2実施例の実環境および仮想環境の両方に対する特権リングおよびコールゲートを示す図である。本発明の第2実施例では、仮想環境は、2個の仮想リングのみを有する。一例として、Intelアーキテクチャマシンでは、標準的なDOSの実装は、2個のリング、すなわち、最上位および最下位の特権のリングのみを使用する。VMマネージャ20がこのようなレガシーオペレーティングシステムを認識すると、仮想環境40は、「クイックパススルー」(quick−pass−through)を利用して形成される。
図8に示すように、2つの仮想リングは、仮想環境40を含む2つの実リングに直接にマップされる。その結果、すべてのリングに対するSDTを維持するシャドウディスクリプタテーブル(SDT)ポリシーを使用する場合、2個のSDTのみを維持すればよい。そのため、第2実施例では、すべてのシャドウディスクリプタテーブルが環境の作成時に形成されるというSDTポリシーが、好ましいデフォルトとなる。
【0098】
本発明の第3実施例では、シャドウディスクリプタテーブル(SDT)を使用する代わりに、VMマネージャ20は、仮想環境ディスクリプタテーブル(VEDT)を修正して、実特権リングの関連づけを、対応する仮想リングの関連づけの代わりに置き換える。仮想環境内から命令が実行されると、プロセッサは、VEDTを用いて、アクセス特権を決定する。
【0099】
仮想環境内からのコードがこの置換を認識しないようにするため、VEDTを含むメモリは、仮想環境内からは読むことができないものとしてマークされる。仮想環境40内からVEDTを読もうとすると、VMマネージャ20にトラップされる。VMマネージャ20は、実特権置換を適当な仮想環境情報でマスクする。
【0100】
VEDTへの修正は、2つの方法のうちの一方により実行される。第1の方法では、仮想環境40内からVEDTに書き込みをしようとすると、VMマネージャ20にトラップされる。これにより、VMマネージャは、目的とされたエントリを横取りし、置換エントリを入れる。第1の方法は、ゲストOSがVEDTエントリを確認(読み出しを必要とする)しようとしない場合に好ましい。第2の方法は、仮想環境40内の命令が、VEDTに書き込みをすることを許容し、その後、エントリを適当な実特権リング割当てで上書きするものである。ゲストOSがエントリへの書き込みの後にそのエントリを確認する場合、VEDTを読み出そうとする試みが、VMマネージャに上書きを実行することを指示するトラップとして使用される。動作時の環境の観測に基づいて、VEDT修正あたりのトラップ数が最小となる方法を選択することが好ましい。
【0101】
本発明の実施例について説明を続けると、仮想環境との間の情報転送は、実リング1で動作するデータ転送マネージャ(DTM)によって処理される。データストリームを管理するため、DTMは、必要に応じて、データを記憶領域にスプールする(図5、DTMスプール104e)。
図9は仮想マシン環境との間の通信のための例示的なコンフィグレーションを示す図であり、ここではDTM30を用いた例示的な構成を示す。使用される個々の構成は、ユーザ初期設定、ハードウェア能力、およびマシンの要求のようなファクタに基づく。ゲートウェイ22は、リング0通信ドライバおよびデータコネクションを含む。
【0102】
図9のAに示す第1の構成では、仮想マシン40は、DTM30をローカルハブ34と見なす。完全なトランザクションのみが仮想環境どうしの間で伝達されることを保証するため、あるいは、トランザクションの内容を確認するため、DTM30は、さらに、複数のデータブロックをバッファリングするためのスプーリングシステムを実装する。ハブ34は、いかなる通信プロトコルが要求される場合でも、それを用いて実装することができる。ユーザが希望すれば、スプーリングが通常使用されるため、相異なる仮想環境に対して相異なるプロトコルをシミュレートすることも可能であり、その場合、DTM30は不可視的に変換を行う。
【0103】
図9のBに示す第2の構成では、DTM30は、各仮想環境ごとに通信チャネル(xfer)32をシミュレートする。チャネルの例としては、モデムコネクションや、NFSのような仮想ファイルシステムサービスがある。チャネルは、リング0ゲートウェイドライバ22が実際に接続されている実際のネットワークのように見えることも可能であり、また、何か他のもののシミュレーションであることも可能である。例えば、ゲートウェイは、イーサネットTCP/IPリンクであることが可能であるが、何らかの理由で、ユーザは、DTM30がモデムをシミュレートするということがある。
【0104】
図9のCに示す第3の構成では、複数のDTM30が動作し、相異なるタスクとして管理される。この場合、DTM30は、仮想マシンどうしの間のスプーリングのために共有スプーリング領域を有することが必要である。この構成は、ユーザが、さまざまな環境固有の通信機能を必要とする場合に適当である。この場合、カスタマイズされたリング1マネージャを設けることが好ましいからである。
【0105】
DTM構成(図9)において、セキュリティと速度との間で選択をしなければならない。最も高速の構成は、DTM30による関与なしにゲートウェイ22から直接に仮想マシン40にデータを流すものである。これは、サンドボックスを崩壊させる危険がある。一般に、これにより、ゲートウェイ22と仮想環境40の間のインタラクションが可能になるからである。もちろん、DTM30によるプロトコルエミュレーションは、動作を遅くする。最も安全であるが最も低速の構成は、すべてのデータをスプールし、ウィルスがないかどうか、および、データ盗取アプリケーションによる送信がないかどうかを(DTM30やその他の実環境アプリケーションによって)検査することである。ハードウェアの通信能力(例えば、複数のデータコネクション)や、ユーザによって個々の仮想環境に与えられている信頼度に基づいて、複数の構成を組み合わせて使用することも可能である。
【0106】
本発明の実施例について説明を続けると、システムは、自己の仮想環境から動作するファイアウォールを含むようにセットアップすることが可能である。
図10は仮想環境内から動作するファイアウォールを使用する本発明の例示的なコンフィグレーションを示す図であり、3つの構成例が示されている。ファイアウォールソフトウェアは、本発明のアーキテクチャ用にカスタム開発することも可能であり、あるいは、スタンドアローンマシン用の市販のファイアウォールソフトウェアによることも可能である。各ファイアウォールは、2つの側、すなわち、内側と外側を有する。保護される環境はファイアウォールの内側にある。ファイアウォールの外側には、ネットワークおよび信頼されない環境がある。ファイアウォールのそれぞれの側での通信は互いに隔離される。
【0107】
図10に示す3つの構成例は、図9に関して説明したデータ通信構成の変形である。図10のAにおいて、ファイアウォール42を含む仮想マシンは、内側および外側のリンクのために個別のDTM30を有する。図10のBでは、DTM30は、内側および外側のリンクのための個別のチャネル32をシミュレートする。図10のCでは、DTM30は、ファイアウォールの内側においてローカルハブ34をシミュレートする一方、専用のDTM30がゲートウェイ22に接続される。これらの構成は単なる例示であり、明らかに、これら以外の多くの組合せが存在する。曲げることができない要件は、ファイアウォール42の内側と外側の隔離である。ファイアウォール42は単純な必要物であるため、ファイアウォールが存在する環境には、コンパクトでセキュリティの厳格なオペレーティングシステムが好ましい。
【0108】
ファイアウォール42を含む仮想環境は、ファイアウォール42に与えられる信頼度に依存して、ゲートウェイ22からの直接データストリームが所望される環境の一例である。さらに、同じく信頼度に依存して、セキュリティ制限の重複を避けるために、ファイアウォール42の内側のDTM30には、データ窃取に対するデータストリームスキャニングのようなセキュリティ制限を少なくすることが好ましい場合がある。
【0109】
本発明の実施例への追加として、DTM30またはファイアウォール42は、データ転送が許可される前にユーザの確認を要求するように設定される。その間、データはスプール(図5、DTMスプール104eまたはファイアウォールスプール106a)に格納される。この機能は、特に、データ盗取を検出するために有用である。
【0110】
図11は、仮想環境内からディスクパーティションに格納されたデータを暗号化する例示的なコンフィグレーションを示す図である。本発明の実施例について説明を続けると、仮想マシン40と、補助メモリ60内の仮想マシンパーティション108の間でデータは暗号化される。この暗号化は、仮想マシン40内からは不可視であり、好ましくは、仮想マシンのパーティション内のすべてのデータを含む。この暗号化を、物理マシンに固有の鍵と組み合わせることにより、盗まれたハードドライブ上のすべてのデータは、覗こうとする他人の目からさらに良好に保護される。仮想マシン環境の形成時のパスワード保護は、さらにセキュリティを向上させる。この保護は、レガシーオペレーティングシステムへの変更や、データが暗号化されているという表示を仮想環境内に有することなしに得られる。
【0111】
暗号化は、暗号化部分90および復号部分92を含むVMマネージャ20(図11のA)によって、または、別個の暗号化・復号フィルタ94を通じて、実行される。フィルタ94は、すべてのデータが通る層(レイヤ)として、または、特権実環境アプリケーションを支援する協調的な「ヘルパー」として、実装される。フィルタ94は、特殊化されたソフトウェア(例えば、リング0または1におけるアプリケーションとして動作する(図11のB))、または、特殊化されたハードウェア(例えば、フュージブルROM)とすることが可能である。さらに、相異なるパーティションに対して相異なる暗号化方式を使用することが可能である。同様の方法は、リムーバブル記憶装置にも使用され、最も極端な場合には、主メモリの仮想環境部分40′を暗号化するために使用される(これは、不揮発性メインメモリを用いたシステムに有用となる)。
【0112】
同様に、暗号化は、仮想マシンを出入りするデータストリームに対しても行われる。たとえば、図12は仮想環境と外部ネットワークの間のデータ転送の暗号化および復号を行う例示的なコンフィグレーションを示す図であるが、図12のAにおいて、暗号化部分90および復号部分92は、データ転送マネージャ30に組み込まれ、図12のBでは、データは暗号化・復号フィルタ94を通る。
【0113】
もう1つの実施例として、本発明は、アクティブネットワークのコンポーネント上で動作するアプリケーションを保護するために有用である。このような構成に対するセキュリティ要求は、より高度な相互信頼が仮定される環境に対して採用されるモデルとは異なる。このことは、例えば、さまざまな文献に記載されているように、安全でないインフラストラクチャで動作するときのKerberos鍵配送方式の制限によって示されている。上記の実施例をアクティブネットワーク環境に組み込んだ場合、データセキュリティは改善される。一例として、再プログラム可能なネットワークの一部を図14に示す。これは、
・他のネットワーキングエレメントから供給されるダウンロード可能モジュールを実行可能で、公衆の、安全でないインターネットを通じて到達可能な、アクティブネットワークコンポーネント(ANC:Active Network Component)200、
・ダウンロード可能モジュールを含むアクティブリポジトリ(AR:Active Repository)210、
・ネットワーク内の「鍵サーバ」であるKServ1(230a)およびKServ2(230b)、
・正当な権限のあるアクティブコンポーネントによってのみアクセスされるアプリケーション固有データ(ASD:application−specific data)240(例えば課金データ)、
を有する。ANC200は、暗号化鍵が必要な仮想環境40を含むマシンからなる。
【0114】
このような構成では、2つの異なるセキュリティ領域がある。第1のセキュリティ領域に、アクティブネットワークでのANCマシンの認証である。第2のセキュリティ領域は、ANC200にロードされるアクティブコンポーネントの検証である。ANC200上に、本発明によって提供されるような安全な環境がなければ、第1のセキュリティは達成することができない。さらに、ダウンロードされたコンポーネントが移動中に、またはANC200上で、悪意のある第三者による修正を受けた場合、第2のセキュリティは保証することができない。本発明の安全な構成を用いた場合、周知の2鍵暗号方式を用いて、どのようにして両方のレベルの認証が可能となるかを以下で説明する。
【0115】
本発明によれば、アクティブエレメントはName(名前)によって表される。Nameは、マシンまたはアプリケーションを表すことが可能である。DNS(Domain Name System、分散型インターネットディレクトリサービス)のように、階層的にドメインとして構造化されたNameの空間が考えられるかもしれないが、マシンに対するアクティブなNameがそのインターネット構成と関係を有する必要はない(すなわち、Nameは、異なる時点では異なる物理インスタンスに関連づけられる可能性のある抽象的エンティティである)。
【0116】
それぞれのNameには、そのNameをインスタンス化しているエンティティにのみ知られるKey(秘密鍵)と、外界に知らされるClef(公開鍵)が関連づけられる。通常のモデルに従って、Keyで暗号化されたデータは、Clefで(のみ)復号可能であり、その逆も成り立つ。
【0117】
ANCマシン200は、設定されると、権限3項組{Name,Clef,Key}が与えられる。また、少なくとも1つのアクセス2項組{Name,Clef}と、鍵サーバマシン230a/bの対応するIP情報{マシン名,アドレス}(これは、ANCマシン200が鍵問合せを行うために使用することが可能)も供給される。同時に、ANCマシン200のアクセス2項組{Name−ANC,Clef−ANC}が鍵サーバ230aに入力される。秘密鍵の生成およびインストールに関するすべてのオペレーションは、安全に実行される。
【0118】
仮想環境40は、固有のClef(公開鍵)を、秘密のKey(秘密鍵)とともに受信する。このKeyは、ANC200が鍵サーバ230aに対して要求する用途限定の鍵(Key−ANC)である。好ましくは、仮想環境40内のアプリケーションがマシンの秘密鍵に関連づけられたアドレスをコールするときに最初の要求が行われ、これが自動的にリング0コアにトラップされる。実環境の暗号化を利用して、限定用途の秘密鍵に対してコアからなされる要求は、実際のハードウェアの秘密鍵を用いて符号化される。鍵サーバが応答すると、限定用途秘密鍵Keyは仮想環境(もともとコールがなされたアドレスにあるかのように)に渡されることにより、その内部のアプリケーションは、その限定用途Keyを利用して、アクティブリポジトリ210に対してモジュールを要求する。このような方式で標準となっているように、公開鍵で符号化された情報は、秘密鍵を用いてのみ復号可能であり、秘密鍵で符号化された情報は、公開鍵を用いてのみ復号可能である。
【0119】
限定用途秘密鍵を取得することは、仮想環境40内のアプリケーションの知り得る範囲外で行われる。鍵が取得されると、その仮想環境40を出入りするデータストリームは独自に符号化することが可能となるため、他の環境で実行される悪意のあるコードが、符号化されたアプリケーションのセキュリティを危険にさらすことはできなくなる。そのアプリケーションの環境の秘密鍵を危険にさらすことは不可能であるためである。
【0120】
何らかの制御メカニズム(例えば、CORBA(Common Object Request Broker Architecture))を用いて(ただし、以下のプロトコルを実装して)、アクティブリポジトリ(AR)210は、ANC200でインスタンス化された仮想環境に新たなプログラムをダウンロードするよう命令される。AR210は、ANC200のネットワークロケーションを通知されるか、または、ある位置探索・インスタンス化(安全な)メカニズムによりそれを決定する。何らかの方法で、AR210は、ANC200のネットワークアドレスを知る。また、AR210は、鍵サーバ230aのネットワークアドレスも知る。
【0121】
以下は、限定用途Keyが取得された後、モジュールを安全にダウンロードするのに必要なトランザクションの一例である。
【0122】
1.AR210は、KServ1(230a)に次の要求を送る。
<Name−AR <Clef(Name−ANC)=?>Key−ARClef−KServ1
ただし、<y>は、鍵xで暗号化された項目yを意味し、?は、この要求に対する応答として返されるべきデータを示す。秘密鍵が真に秘密のままであるという仮定の下では、KServ1(230a)以外のエンティティはこのメッセージの内容を見ることができない。
【0123】
2.KServ1(230a)は、このパケットを受信すると、次のオペレーションを実行する。
<<Name−AR <Clef(Name−ANC)=?>Key−ARClef−KServ1Key−KServ1
<<y>KeyClef=yであるため、これは次のように簡単化される。
Name−AR <Clef(Name−ANC)=?>Key−AR
Name−ARの公開鍵を適用することにより次が得られる。
<<Clef(Name−ANC)=?>Key−ARClef−AR
これは次のように簡単化される。
Clef(Name−ANC)=?
これにより、パケットが、主張されたNameエンティティからのものである場合に限り、要求が取得される。
【0124】
3.次に、鍵サーバ230aは、Name−ANCに対するClefを調べ、自己のKeyと、AR210のClefで暗号化された応答を次のように形成する。
<Name−KServ1 <Clef(Name−ANC)=Clef−ANC>Key−KServ1Clef−AR
これにより、AR210のみがこの応答を読むことができることが保証される。一見したところ、実際には公開された情報であるものを暗号化することは奇妙に思われるかもしれない。しかし、このようにすることは、公開鍵であっても、権限のあるエンティティにのみ公開されていることを意味し、セキュリティが多少向上する。さらに重要なことは、AR210のクライアントがANCマシン200に関心を持っていることを、鍵サーバ230aの「付近」をスヌープしている者が推論することができないようにすることである。このレベルでは、些細なことであっても、競争相手に何らかの推論やビジネス上の有利な立場を与えてしまうことがあるからである。
【0125】
4.AR210は、明らかな復号を実行し、ANCマシン200のアクセスコードを最終的に取得する前に、応答中のNameが既知の鍵サーバに対応することをチェックする。
【0126】
ANC200に送られる新たなプログラムが、そのソフトウェアの供給元からの機密情報への安全なアクセス(例えば、ASD240へのアクセス)を必要とし、ASD240のプロバイダが、スヌーピングに対してAR210の長期記憶装置を信頼してない場合(また、おそらく、ASD240のプロバイダは、アプリケーションがロードされることになるANCのNameのセットを事前には知らない)、AR210は、AR210およびASD240によって相互に信頼されている鍵サーバ(230b)に次のような第2の問合せを送り、新たな3項組を要求する。
【0127】
5. <Name−AR <New(Name−SecApp)=?>Key−ARClef−KServ2
ただし、Name−SecAppは、ANC200上でインスタンス化されようとしているアプリケーションのNameである。
【0128】
6.KServ2(230b)は、Clef−Ar(これは、KServ1(230a)から取得しなければならないかもしれない)を用いて要求を抽出し、新たな認証3項組を生成する。KServ2(230b)は、Name部分およびClef部分を自己のデータベースに格納しており、3項組全体をARに返す。
<Name−KServ2 <{Name−SecApp,Clef−SecApp,Key−SecApp}>Key−KServ2Clef−AR
もちろん、この場合、この応答は暗号化されることが重要である。より強力なモデルでは、これをさらにClef−ANCで暗号化することにより、AR210がデータを読み出せないようにすることが可能である。
【0129】
7.ARは、KServ1(230a)から返された鍵を用いて、再プログラミング情報をANC200に送る。
<Name−AR <New Program>Key−ARClef−ANC
【0130】
8.このパケットは、ANC200の「ファイアウォール」レベル42で横取りされ、限定用途のKey−ANCにアクセス可能な権限のある仮想マシン環境40に渡される。
<<Name−AR <New Program>Key−ARClef−ANCKey−ANC
これは、次のように簡単化される。
Name−AR <New Program>Key−AR
この時点で、送信側エンティティのNameが明らかになる(Name−AR)。セキュリティモデルに依存して、このNameは、権限のあるリストと比較してチェックされるか、または、オープンシステムでは額面通りにとられる。
【0131】
9.ステップ1〜4と全く同じステップを用いて、ANC200はClef−ARを取得し、New Program情報を回復する。
【0132】
新プログラム(New Program)がリポジトリに安全にリンクされるように、AR210は、権限3項組情報を(おそらくは、KServ2(230b)の名前およびそのロケーション情報とともに)ANC200に送る。AR210は、この情報のコピーを保持しないように信頼される(結局、AR210は、格納されたアプリケーションを修正しないように信頼される)。モデルに依存して、この新たなアプリケーション固有の鍵は、新たにロードされるコードに渡されるか、または、仮想環境の外部に保持されることが可能である。Key−SecAppおよびClef−SecAppを用いて、新たなアプリケーションは、ASD240がClef−ASDを知ることを必要とせずに、KServ2(230b)を通じてASD240への通信チャネルを確立することができる。このメカニズムにより、KServ2(230b)およびASD240は、ANC200に置かれた信頼とは独立に許可を取り消すことが可能となる。
【0133】
なお、このモデルは、仮想環境40内で動作する個々のアプリケーションが特別な方法で構成されることや、特別の言語で書かれることを必要としないことに注意すべきである。さらに、これらと同じ方法を用いて、仮想環境をサービスする暗号化サブルーチン(図12)に、固有の鍵セットを提供することも可能である。例えば、DTM30または暗号化・復号フィルタ94が、仮想環境40を出入りするデータ転送の暗号化および復号を行うために限定用途の鍵を使用することが可能である。このような場合、仮想環境40とDTM30またはフィルタ94との間を流れる暗号化されていないデータは、他のすべての仮想環境にはアクセス不可能である。
【0134】
本発明の技術思想および技術的範囲を離れることなく、本発明のさまざまな変形例を考えることが可能であることはいうまでもない。
【図面の簡単な説明】
【図1】Aは、通常のメモリに記憶されたセグメントおよびディスクリプタテーブルを示す図であり、Bは、Aのディスクリプタテーブルの内容を示す図である。
【図2】階層的特権保護方式を用いたマシン内の特権リングおよびコールゲートを示す模式図である。
【図3】Aは、仮想マシン環境を含む、本発明の基本コンポーネントを示す図であり、Bは、Aの仮想マシン環境内の仮想リングの階層を示す図である。
【図4】仮想環境専用のメモリのパーティションを示す図である。
【図5】補助メモリディスクパーティションレイアウトを示す図である。
【図6】第1実施例の実環境および仮想環境の両方に対する特権リングおよびコールゲートを示す図である。
【図7】第1実施例の仮想環境ディスクリプタテーブルおよびシャドウディスクリプタテーブルを示す図である。
【図8】第2実施例の実環境および仮想環境の両方に対する特権リングおよびコールゲートを示す図である。
【図9】仮想マシン環境との間の通信のための例示的なコンフィグレーションを示す図である。
【図10】仮想環境内から動作するファイアウォールを使用する本発明の例示的なコンフィグレーションを示す図である。
【図11】仮想環境内からディスクパーティションに格納されたデータを暗号化する例示的なコンフィグレーションを示す図である。
【図12】仮想環境と外部ネットワークの間のデータ転送の暗号化および復号を行う例示的なコンフィグレーションを示す図である。
【図13】例示的なマシンイメージを示す図である。
【図14】アクティブネットワークコンピューティングのための例示的なネットワークレイアウトを示す図である。
【符号の説明】
4a メモリ
6a〜6e セグメント
8 ディスクリプタテーブル
10a〜10e ディスクリプタ
20 仮想マシンマネージャ
22 ゲートウェイ
30 データ転送マネージャ
34 ローカルハブ
32 通信チャネル
40 仮想環境
42 ファイアウォール
50 コアシステム
60 補助メモリディスク
70 VEDT
80 SDT
90 暗号化部分
92 復号部分
94 暗号化・復号フィルタ
102 パーティションテーブル
104 実環境パーティションおよびファイルシステム
104a 仮想マシンコアイメージ
104b 仮想マシンマネージャのリング0タスクイメージ
104c 他の実環境特権タスクのイメージ
104d 仮想マシンマネージャのデータ領域
104e データ転送マネージャのスプール領域
106 ファイアウォールパーティション
106a ファイアウォールスプール
108a〜108d 仮想環境専用のパーティション
118 仮想環境コールゲート
140 仕様
150 ブートROMイメージ
160 不揮発性RAMエミュレーションイメージ
200 アクティブネットワークコンポーネント(ANC)
210 アクティブリポジトリ(AR)
230 鍵サーバ
240 アプリケーション固有データ(ASD)

Claims (41)

  1. システムリソースおよびメモリへのアクセスを制御するために少なくとも3個の実特権リングを用いて情報を処理するとともに、少なくとも1つの仮想マシン環境を提供し、情報および特権は所定のリングに関連づけられている自動データ処理装置において、
    実リングプロパティを変更する処理が制限された最上位特権の実リングと、第2位特権の実リングと、残りの実リングと、からなる実環境と、
    前記最上位特権の実リングで動作する仮想マシンマネージャと、
    前記残りの実リングおよびメモリの一部をからなる仮想マシン環境と、
    前記第2位特権の実リングで動作し、前記仮想マシン環境を出入りする情報転送を処理する第1データ転送マネージャと、
    前記仮想マシン環境内にある階層仮想特権リングと、
    前記仮想マシン環境内の情報に対する特権リングの関連づけを含み、前記仮想マシン環境内に形成された仮想環境ディスクリプタテーブルと、
    前記第1データ転送マネージャおよび前記仮想マシン環境を含む仮想ファイアウォールと、
    からなり、
    前記仮想マシン環境内の情報は前記階層仮想特権リングに関連づけられ、前記メモリの一部内に記憶され、
    前記自動データ処理装置によって処理される情報は、同位または下位の特権の実リングに関連づけられたシステムリソースおよび情報にアクセス可能であり、
    前記仮想マシン環境内の情報は、前記自動データ処理装置によって処理される場合、同位または下位の特権の仮想特権リングに関連づけられたシステムリソースおよび情報にアクセス可能であるとともに、前記仮想マシン環境の前記メモリの一部内のメモリロケーションにのみアクセス可能であり、
    仮想特権リングに関連づけられた情報にとって利用可能な実特権は、前記自動データ処理装置によって処理される場合、前記残りの実リングのうち前記仮想マシン環境を含む実リングを超える実特権へのアクセスが要求されるときに前記仮想マシンマネージャによって制御され、
    前記メモリの一部は主メモリおよび補助記憶領域を含む、
    ことを特徴とする自動データ処理装置。
  2. 前記自動データ処理装置は、
    仮想特権リングに対して前記仮想マシンマネージャによって生成され、前記仮想マシン環境内の情報を実特権リングの階層にマップするシャドウディスクリプタテーブルをさらに有し、
    前記仮想環境ディスクリプタテーブルは、前記仮想特権リングの階層への関連づけを含み、
    仮想特権リングに関連づけられた情報が前記自動データ処理装置によって処理されるとき、該情報が関連づけられた仮想特権リングに対応するシャドウディスクリプタテーブルが、アクセス特権を決定するために使用される、
    ことを特徴とする請求項1記載の自動データ処理装置。
  3. 前記仮想マシンマネージャは、仮想特権リング内で処理を開始するときに、処理されるべき情報に対応する仮想特権リングに対するシャドウディスクリプタテーブルを生成する、ことを特徴とする請求項2記載の自動データ処理装置。
  4. 前記仮想マシンマネージャは、前記仮想環境ディスクリプタテーブルに変更が生じたときにシャドウディスクリプタテーブルを更新することを特徴とする請求項3記載の自動データ処理装置。
  5. 前記自動データ処理装置によって処理される情報が仮想特権リングを変更するときに、前記仮想マシンマネージャは、処理の変更先の仮想特権リングに対するシャドウディスクリプタテーブルを生成することを特徴とする請求項3記載の自動データ処理装置。
  6. 前記仮想マシンマネージャは、情報が処理された各仮想特権リングに対するシャドウディスクリプタテーブルを含む複数のシャドウディスクリプタテーブルを保持することを特徴とする請求項5記載の自動データ処理装置。
  7. 前記仮想マシンマネージャは、前記仮想環境ディスクリプタテーブルに変更がなされるときに、前記複数のシャドウディスクリプタテーブルを更新することを特徴とする請求項6記載の自動データ処理装置。
  8. 前記仮想マシンマネージャは、前記メモリの一部内の情報が再配置されるときに、前記複数のシャドウディスクリプタテーブルを再生成することを特徴とする請求項6記載の自動データ処理装置。
  9. 前記仮想マシンマネージャは、前記仮想特権リングの階層の各仮想リングに対するシャドウディスクリプタテーブルを含む複数のシャドウディスクリプタテーブルを生成し保持することを特徴とする請求項2記載の自動データ処理装置。
  10. 前記仮想マシンマネージャは、前記仮想環境ディスクリプタテーブルに変更が生じたときに前記複数のシャドウディスクリプタテーブルを更新することを特徴とする請求項9記載の自動データ処理装置。
  11. 前記仮想マシンマネージャは、前記メモリの一部内の情報が再配置されるときに、前記複数のシャドウディスクリプタテーブルを再生成することを特徴とする請求項9記載の自動データ処理装置。
  12. 実特権リングの階層は4個のリングを有し、
    第3位特権の実リングは、最上位特権の仮想リングを有し、
    第4位特権の実リングは、仮想特権リングの階層の残りの部分を有することを特徴とする請求項2記載の自動データ処理装置。
  13. 最上位特権の仮想リングに対して前記仮想マシンマネージャによって生成されるシャドウディスクリプタテーブルは、前記仮想マシン環境内のすべての情報から前記第3位特権の実リングへのマッピングからなり、
    前記仮想リングの階層の残りの部分の仮想リングに対して前記仮想マシンマネージャによって生成されるシャドウディスクリプタテーブルは、
    前記最上位特権の仮想リングに関連づけられた情報に対する、前記第3位特権の実リングへのマッピングと、
    前記シャドウディスクリプタテーブルが生成された仮想特権リングと同位または下位の特権の仮想リングに関連づけられた情報に対する、前記第4位特権の実リングへのマッピングと、
    前記シャドウディスクリプタテーブルが生成された仮想特権リングより上位の特権の仮想リングに関連づけられた情報に対する、前記最上位特権の実リングへのマッピングと、からなり、それにより、前記仮想マシンマネージャは、前記仮想リングの階層の残りの部分内の上位特権の仮想リングに関連づけられた情報へのアクセスを求める要求をトラップする、
    ことを特徴とする請求項12記載の自動データ処理装置。
  14. 実特権リングの階層への情報の関連づけからなり、シャドウディスクリプタテーブルを含み、かつ前記実環境の全体に対するグローバルディスクリプタテーブルをさらに有することを特徴とする請求項2記載の自動データ処理装置。
  15. 前記仮想マシン環境内の情報は、
    最上位特権を有する仮想特権リングと、
    最下位特権を有する仮想特権リングと、
    からなる2個のリングのみに関連づけられる、
    ことを特徴とする請求項1記載の自動データ処理装置。
  16. 実特権リングの階層は4個の特権リングを有することにより、前記仮想マシン環境は2個の実リングを有し、
    第3位特権の実リングは、最上位特権の仮想リングを有し、
    第4位特権の実リングは、最下位特権の仮想リングを有することを特徴とする請求項15記載の自動データ処理装置。
  17. 前記仮想マシン環境内から、処理される情報に対する、前記仮想環境ディスクリプタテーブル内の前記仮想特権リングの階層への関連づけを記録しようとする試みがなされると、前記仮想マシンマネージャは、前記仮想特権リングの階層への関連づけの代わりに、前記仮想環境ディスクリプタテーブル内の実特権リングの階層への関連づけを記録し、
    前記仮想マシン環境内に関連づけられた情報が前記自動データ処理装置によって処理されるとき、前記仮想環境ディスクリプタテーブルが、アクセス特権を決定するために使用される
    ことを特徴とする請求項1記載の自動データ処理装置。
  18. 前記仮想マシンマネージャは、前記仮想環境ディスクリプタテーブルが形成されるとき、および、前記仮想環境ディスクリプタテーブルを修正しようとする試みがなされるごとに、前記仮想特権リングの階層への関連づけの代わりに前記仮想環境ディスクリプタテーブル内の実特権リングの階層への関連づけを記録する、ことを特徴とする請求項17記載の自動データ処理装置。
  19. 前記仮想マシンマネージャは、前記仮想環境ディスクリプタテーブル内の仮想特権リング関連づけを記録しようとする試みを許可した後、前記仮想マシンマネージャは、上書きにより、実特権リング関連づけを置き換えることを特徴とする請求項17記載の自動データ処理装置。
  20. 前記仮想環境ディスクリプタテーブル内の仮想特権リング関連づけを記録しようとする試みは、前記仮想マシンマネージャによってトラップされ、前記仮想マシンマネージャは、代わりに実特権リング関連づけを記録することを特徴とする請求項17記載の自動データ処理装置。
  21. 前記仮想マシン環境と別の仮想マシン環境との間、および、前記仮想マシン環境と前記実環境との間の情報転送は、データ転送マネージャによって処理されることを特徴とする請求項1記載の自動データ処理装置。
  22. 前記自動データ処理装置は、データ転送マネージャスプールをさらに有し、
    データ転送マネージャによって処理される情報転送は前記データ転送マネージャスプールに一時的に格納されることを特徴とする請求項1記載の自動データ処理装置。
  23. 前記データ転送マネージャは、仮想マシン環境を出る情報転送を確認することをユーザに求めることを特徴とする請求項22記載の自動データ処理装置。
  24. 前記自動データ処理装置は、
    前記第2特権の実リングで動作し、仮想マシン環境を出入りする情報転送を処理する第2データ転送マネージャをさらに有し、
    前記仮想ファイアウォールは、前記第2データ転送マネージャをさらに有し、
    前記第1データ転送マネージャは、前記仮想マシン環境と、ファイアウォールの外部との間の情報転送を処理し、
    前記第2データ転送マネージャは、前記仮想マシン環境と、ファイアウォールの内部との間の情報転送を処理する、
    ことを特徴とする請求項記載の自動データ処理装置。
  25. 前記第1データ転送マネージャは、前記仮想マシン環境と、ファイアウォールの外側との間の情報転送を、前記仮想マシン環境と、ファイアウォールの内側との間の情報転送から隔離することを特徴とする請求項記載の自動データ処理装置。
  26. 前記自動データ処理装置は、ファイアウォールスプールをさらに有し、
    前記ファイアウォールを通しての情報転送は前記ファイアウォールスプールに一時的に格納されることを特徴とする請求項記載の自動データ処理装置。
  27. 前記ファイアウォールは、ファイアウォールの内側からファイアウォールの外側への情報転送を確認することをユーザに求めることを特徴とする請求項26記載の自動データ処理装置。
  28. システムリソースおよびメモリへのアクセスを制御するために少なくとも3個の実特権リングを用いて情報を処理するとともに、少なくとも1つの仮想マシン環境を提供し、情報および特権は所定のリングに関連づけられている自動データ処理装置において、
    実リングプロパティを変更する処理が制限された最上位特権の実リングと、第2位特権の実リングと、残りの実リングと、からなる実環境と、
    前記最上位特権の実リングで動作する仮想マシンマネージャと、
    前記残りの実リングおよびメモリの一部をからなる仮想マシン環境と、
    前記第2位特権の実リングで動作し、前記仮想マシン環境を出入りする情報転送を処理する第1データ転送マネージャと、
    前記仮想マシン環境内にある階層仮想特権リングと、
    前記仮想マシン環境内の情報に対する特権リングの関連づけを含み、前記仮想マシン環境内に形成された仮想環境ディスクリプタテーブルと、
    実環境秘密暗号化鍵を記憶する不揮発性メモリと、
    からなり、
    前記仮想マシン環境内の情報は前記階層仮想特権リングに関連づけられ、前記メモリの一部内に記憶され、
    前記自動データ処理装置によって処理される情報は、同位または下位の特権の実リングに関連づけられたシステムリソースおよび情報にアクセス可能であり、
    前記仮想マシン環境内の情報は、前記自動データ処理装置によって処理される場合、同位または下位の特権の仮想特権リングに関連づけられたシステムリソースおよび情報にアクセス可能であるとともに、前記仮想マシン環境の前記メモリの一部内のメモリロケーションにのみアクセス可能であり、
    仮想特権リングに関連づけられた情報にとって利用可能な実特権は、前記自動データ処理装置によって処理される場合、前記残りの実リングのうち前記仮想マシン環境を含む実リングを超える実特権へのアクセスが要求されるときに前記仮想マシンマネージャによっ て制御され、
    前記メモリの一部は主メモリおよび補助記憶領域を含み、
    前記実環境秘密暗号化鍵は、前記自動データ処理装置に固有であり、
    前記実環境秘密暗号化鍵へのアクセスは、前記最上位特権の実リングおよび前記第2位特権の実リングに制限される
    ことを特徴とする自動データ処理装置
  29. 前記仮想マシンマネージャは、前記実環境秘密暗号化鍵に対応する実環境公開暗号化鍵を用いて、前記仮想マシン環境から前記メモリの一部の前記補助記憶領域への情報転送を暗号化し、
    前記仮想マシンマネージャは、前記実環境秘密暗号化鍵を用いて、前記メモリの一部の前記補助記憶領域から前記仮想マシン環境への情報転送を復号し、
    前記暗号化および復号は、前記仮想マシン環境内からは不可視であることを特徴とする請求項28記載の自動データ処理装置。
  30. 実環境暗号化鍵は、前記仮想マシン環境を出る情報転送を暗号化し、前記仮想マシン環境に入る情報転送を復号するために、前記仮想マシン環境の外部で適用され、
    暗号化および復号の適用は、前記仮想マシン環境内からは不可視であることを特徴とする請求項28記載の自動データ処理装置。
  31. 前記仮想マシン環境内に転送される復号された情報は、他の仮想マシン環境にはアクセス不可能であることを特徴とする請求項30記載の自動データ処理装置。
  32. 実環境暗号化鍵は、前記仮想マシンマネージャによって適用されることを特徴とする請求項30記載の自動データ処理装置。
  33. 実環境暗号化鍵は、前記データ転送マネージャによって適用されることを特徴とする請求項30記載の自動データ処理装置。
  34. 前記仮想マシン環境には、仮想環境秘密暗号化鍵および仮想環境公開暗号化鍵が割り当てられ、これらの暗号化鍵は、実環境および他の仮想マシン環境の暗号化鍵とは異なり、他の仮想マシン環境にはアクセス不可能であることを特徴とする請求項28記載の自動データ処理装置。
  35. 仮想環境暗号化鍵は、前記仮想マシン環境を出る情報転送を暗号化し、前記仮想マシン環境に入る情報転送を復号するために、前記仮想マシン環境の外部で適用され、
    前記仮想マシン環境内に転送される復号された情報は、他の仮想マシン環境にはアクセス不可能であることを特徴とする請求項34記載の自動データ処理装置。
  36. 仮想環境暗号化鍵は、前記仮想マシンマネージャによって適用されることを特徴とする請求項35に記載の装置。
  37. 仮想環境暗号化鍵は、前記データ転送マネージャによって適用されることを特徴とする請求項35記載の自動データ処理装置。
  38. 仮想環境暗号化鍵は、前記仮想環境内にアクセス可能であることにより、前記仮想環境内のプロシージャは、前記仮想マシン環境に入る情報転送を復号し、前記仮想マシン環境を出る情報転送を暗号化することを特徴とする請求項34記載の自動データ処理装置。
  39. 前記自動データ処理装置は、外部鍵サーバから仮想環境暗号化鍵を取得することを特徴とする請求項34記載の自動データ処理装置。
  40. 前記自動データ処理装置と外部鍵サーバとの間の、鍵取得に関するトランザクションは、実環境秘密暗号化鍵を用いて安全にされることを特徴とする請求項39記載の自動データ処理装置。
  41. 前記仮想特権リングの階層の数は、前記実特権リングの階層の数に等しいことを特徴とする請求項1記載の自動データ処理装置。
JP2000281632A 2000-05-10 2000-09-18 自動データ処理装置 Expired - Fee Related JP3630087B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US56862900A 2000-05-10 2000-05-10
US09/568629 2000-05-10

Publications (2)

Publication Number Publication Date
JP2001318797A JP2001318797A (ja) 2001-11-16
JP3630087B2 true JP3630087B2 (ja) 2005-03-16

Family

ID=24272065

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000281632A Expired - Fee Related JP3630087B2 (ja) 2000-05-10 2000-09-18 自動データ処理装置

Country Status (1)

Country Link
JP (1) JP3630087B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392694B2 (en) 2018-10-04 2022-07-19 Samsung Electronics Co., Ltd. Electronic apparatus and controlling method thereof

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
AU2003224841A1 (en) 2002-04-12 2003-10-27 Johnson & Johnson Vision Care, Inc. Method and system for recording data monitored during the manufacture of molded ophthalmic lenses
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
US7757231B2 (en) 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US7409719B2 (en) * 2004-12-21 2008-08-05 Microsoft Corporation Computer security management, such as in a virtual machine or hardened operating system
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US8327353B2 (en) 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
JP2007133807A (ja) * 2005-11-14 2007-05-31 Hitachi Ltd データ処理システム、ストレージ装置及び管理装置
JP2009537892A (ja) * 2006-05-18 2009-10-29 サンギュ イ クライアントおよびサーバの保護方法
JP4907371B2 (ja) * 2007-02-01 2012-03-28 株式会社日立ソリューションズ ウィルス感染及び機密情報漏洩防止対策システム
JP4686790B2 (ja) * 2007-02-07 2011-05-25 勝治 花田 周辺機器の遠隔地への増設方法
US8479194B2 (en) 2007-04-25 2013-07-02 Microsoft Corporation Virtual machine migration
JP4987555B2 (ja) * 2007-04-27 2012-07-25 株式会社東芝 情報処理装置、および情報処理システム
JP2010282242A (ja) * 2007-08-20 2010-12-16 Nec Corp アクセス制御システム、アクセス制御方法およびアクセス制御用プログラム
WO2011152910A1 (en) * 2010-06-02 2011-12-08 Vmware, Inc. Securing customer virtual machines in a multi-tenant cloud
JP5178871B2 (ja) * 2011-03-29 2013-04-10 富士ソフト株式会社 クライアント機器およびシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392694B2 (en) 2018-10-04 2022-07-19 Samsung Electronics Co., Ltd. Electronic apparatus and controlling method thereof

Also Published As

Publication number Publication date
JP2001318797A (ja) 2001-11-16

Similar Documents

Publication Publication Date Title
US10956184B2 (en) On-demand disposable virtual work system
US6836888B1 (en) System for reverse sandboxing
US9934407B2 (en) Apparatus for and method of preventing unsecured data access
US9424430B2 (en) Method and system for defending security application in a user's computer
JP3630087B2 (ja) 自動データ処理装置
KR101179849B1 (ko) 가상머신 템플릿 이미지의 구동방법
US7506170B2 (en) Method for secure access to multiple secure networks
US7690023B2 (en) Software safety execution system
US8881284B1 (en) Method and system for secure network access using a virtual machine
US7975117B2 (en) Enforcing isolation among plural operating systems
US20150019864A1 (en) Secure Virtual Machine
CN108595982B (zh) 一种基于多容器分离处理的安全计算架构方法及装置
JP2002318719A (ja) 高信頼計算機システム
EP2499598A1 (en) System and method for preventing data loss using virtual machine wrapped applications
Seong et al. Security Improvement of File System Filter Driver in Windows Embedded OS.
Runge SELinux: A new approach to secure systems
Murray et al. An exfiltration subversion demonstration
Rehman et al. The use of mTags for mandatory security: a case study
Kleidermacher Towards a High Assurance Multi-level Secure PC for Intelligence Communities
Rahalkar et al. Operating System Basics
Jaeger Security Kernels
Butler Leveraging Emerging Disk Functionality for New Security Services
Weidner Common Criteria EAL4+ Evaluated Configuration Guide for SUSE LINUX Enterprise Server on IBM Hardware
Turnbull Securing Files and File Systems

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041101

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041207

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20071224

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081224

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091224

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091224

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101224

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101224

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111224

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111224

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121224

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121224

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees