JP5378460B2 - 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法 - Google Patents

状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法 Download PDF

Info

Publication number
JP5378460B2
JP5378460B2 JP2011147422A JP2011147422A JP5378460B2 JP 5378460 B2 JP5378460 B2 JP 5378460B2 JP 2011147422 A JP2011147422 A JP 2011147422A JP 2011147422 A JP2011147422 A JP 2011147422A JP 5378460 B2 JP5378460 B2 JP 5378460B2
Authority
JP
Japan
Prior art keywords
operating system
loader
state
machine
key
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.)
Active
Application number
JP2011147422A
Other languages
English (en)
Other versions
JP2011187089A (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011187089A publication Critical patent/JP2011187089A/ja
Application granted granted Critical
Publication of JP5378460B2 publication Critical patent/JP5378460B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Manipulator (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Sealing Devices (AREA)
  • Spinning Or Twisting Of Yarns (AREA)
  • Operation Control Of Excavators (AREA)
  • Numerical Control (AREA)

Description

本発明は、一般にコンピューティングの分野に関する。より詳細には、本発明は、既知の安全な状態からシステムが進行するように保証するメカニズムを提供し、このメカニズムは、システムの適切な挙動を充分に保証することが可能なやり方でシステムをブートするために使用することができる。また、このように適切な挙動を保証することにより、不適切な状況で1つまたは複数のキーが配布されるのを防止することができる。
コンピュータのセキュリティは、しばしば、ソフトウェアコンポーネントの挙動が予測可能であることに依存している。一般に、システムのセキュリティは、その挙動が理解されている、良好な状態から進行する既知のプログラムが、予測できる形で動作するという前提から導かれる。逆に、セキュリティの妨害は、コンピュータシステムをその設計者の意図しないかたちで振る舞わせることを含むことがあるが、一般に、このような妨害は、既知のプログラムを置き換えるまたは変更することにより、またはその挙動が理解されていない状態においてプログラムを実行することにより実現することができる。したがって、コンピューティング環境に関するセキュリティを提供することの一態様は、現在使用されている既知のプログラムを確認し、それが既知の良好な状態から進行していることを確認することを含む。
挙動の予測可能性が特に重要になる1つの領域として、オペレーティングシステムおよびそのコンポーネントをロードする場合がある。オペレーティングシステム自体がその挙動に関してあるレベルの信頼性を提供するように、オペレーティングシステムを設計することができるが、オペレーティングシステムがロードされるのに先立つ時間では、オペレーティングシステムを攻撃から守るインフラストラクチャがまだ確立されていない(または確立するプロセスの最中である)ことがあるので、システムが攻撃に対して特に脆弱である。したがって、オペレーティングシステムをある種の攻撃から保護するためには、オペレーティングシステムが予測可能なかたちでロードされるよう保証することが重要である。
オペレーティングシステムの非セキュアなロードから生じ得る、あるタイプのセキュリティ違反は、特定の制限された機能を使用可能にするキーの保護に関係する。限定ではなく例として挙げると、Microsoft Windows(登録商標)オペレーティングシステムでは、システムキーすなわち「SYSKEY」が利用されており、プロセスの適切な実行をSYSKEYの使用可能性に依存させることにより様々なプロセスを保護するために用いられている。たとえば、暗号化された形態でオペレーティングシステムによって格納されている個人情報を解読するために必要なキーを、SYSKEYから派生可能
にすることができる。
従来、制限されている動作を実行するために必要なキーは、ログオン手順によって保護されている。通常は、システムの使用開始に先立って、ユーザは、(たとえば、ユーザ名/パスワードの組合せなど適切なログオン信用証明情報を提供することにより)自身の認証を適切に行わなければならない。キーの使用は、ユーザが適切に認証を行った場合のみ可能であり、システムは、ユーザが適切にログオンすることに失敗したと決定するのに先立って、ユーザに、制限された回数の試行(たとえば3回)のみを許可する。(このタイプのログオンの試行回数に対する制限では、たとえば盗まれたラップトップコンピュータについて、しらみつぶしに試行してパスワードを推測することにより、保護された機能が権限のないユーザに使用可能になることが防止される。)ただし、キーに対するアクセスを保護するためのログオン手順の使用は、オペレーティングシステムローダが、オペレーティングシステムを正当なログオンプログラムにより適切にロードすること、および、実行され得る不正なコードによって、違うやり方でキーが使用可能にされていることがないことを仮定している。不正なローダが代わりに使用され、不正なローダによりオペレーティングシステムと共に不正なログオンプログラムがロードされる場合、適切な信用証明情報の入力なしに、キーが使用可能になることや、キーが漏洩することさえある。オペレーティングシステムのロードにより、セキュリティ違反の機会が与えられることになるので、このような状況でキーを保護するためには、オペレーティングシステムのロードが適切に行われることを確認できる環境でそのロードを行う必要がある。
オペレーティングシステムのロードプロセスのセキュリティの確認において生じる1つの問題は、正当なオペレーティングシステムのロードは、多数の異なるプログラムを伴う(たとえば、システムのブート手順の際に実行するpre−OSプログラムである、多数の異なる「オプションROM」が存在する)可能性があり、オペレーティングシステムのロードの一部として実行され得る数多くの異なる手順があることである。したがって、ロード中に正当な異なるマシン状態が数え切れないほどあり、このようなすべての状態を識別し、マシンが既知の良好な状態にあることを確認することは不可能な作業と判明することがある。ただし、ロード手順のすべての部分が、セキュリティとかかわり合いを持つわけではない。そのセキュリティ評価をまったく試みずにロードを進行させ、しかし次いで、キーの配布などセキュリティに関係する機能に影響を与えるおそれがある任意のプロシージャを開始するのに先立って、環境を既知の良好な状態に設定すると、より効率的になり得る。より一般的には、セキュリティとかかわり合いを持つ動作を行うのを許可するのに先立ち、システムを既知の良好な状態に設定することができる限り、どのタイプのセキュリティ評価も行わずに、ある時間その任意のシステムが実行されるのを可能にすることができる。
上記に鑑みて、従来技術の欠点を克服するメカニズムが必要である。
本発明により、ロードが適切に実行されることを確認することができる状況でオペレーティングシステムのロードが可能になる。マシンが起動する場合、ごく初期の始動手順(たとえば、BIOS、オプションROM、マスタブートレコード、ブートセクタなど)が実行される。このような初期の手順が実行された後、オペレーティングシステムローダが起動し、それにより様々な予備タスクを実行することができる。オペレーティングシステムローダが起動しこのような予備タスクを実行した後、オペレーティングシステムローダの妥当性検証が行われる。
この妥当性検証は、ローダ自体またはその一部分に対する妥当性試験(たとえば、ローダの識別および正当性の評価を目的とするチェックサムまたは他の試験)、および、現在のマシン状態を評価すること(または、マシンが既知の良好な状態に準拠するようにすること)を含む。ローダ(または関連する部分)が正当であることが分かり、そのマシン状態が、ローダが適切に振る舞うことが事前に確認されたマシン状態である場合、ローダの挙動を予測することができる。したがって、これにより、適切なマシン状態のもとで動作する正当なローダが、保護された機能(たとえばシステムキーなどの暗号鍵)を使用可能
にするデータを不適切な状況で配布するコンポーネントをロードしないことを保証することができる。
妥当性検証は、高保証環境で実行されるバリデータ(validator)によって実施されることが好ましい。高保証環境とは、そこで行われるプロセスが期待通りに実行されることを、比較的高い水準で保証することが可能な環境である。したがって、バリデータが適切に動作することの保証は、高保証環境で実行されるプロセスにより(たとえば、そのバイナリの署名を確認することにより)バリデータが確認されること、および、高保証環境におけるプロセスは適切に実行されるという基本的な信頼から導かれる。(あるいは、少なくとも、高保証環境が、このような環境で動作するプロセスの正当な動作に干渉
しないかまたは干渉を許可しないという、ある水準の保証があるが、この場合、高保証環境においてプロセスを実施するプログラムが、期待通りに適切に実行されることが信頼される、別個の根拠を有する必要がある。)高保証環境では、特定のオブジェクト(たとえば特定のプログラム)にデータを密封する記憶機能であるシールドストレージ(sealed storage)を提供することができ、(高保証環境によって確認されるように)密封されたデータがその密封されたオブジェクト以外のオブジェクトに開放されないように高保証環境によって制御される。バリデータは、シールドストレージを使用して、それ自体にキー(たとえばSYSKEY)を密封し、キーを開放することを適切なオブジェクトに対する場合を除き拒否することができ、この場合、その状況(たとえばマシン状態)は、ある基準を満たしている。
本発明の他の特徴を以下に述べる。
上述の要約および以下に述べる好ましい実施形態の説明は、添付の図面と併せて読めばさらに理解されよう。本発明を例示する目的で、添付の図面に本発明の構成例を示すが、本発明は、開示の特定の方法および手段に限定されない。
本発明の態様を実装することができるコンピューティング環境の例を示すブロック図である。 適切な動作がシステムキーに依存しているプロセスを用いるシステムのブロック図である。 システムキーに解読を依存させることにより、暗号化されたデータを権限のない解読から保護する暗号化ファイルシステムのブロック図である。 本発明の態様による妥当性検証を用いたブートプロセスの例を示す流れ図である。 本発明の態様によるバリデータの例を示すブロック図である。 本発明の態様による、システムキーを保護するプロセスの例を示す流れ図である。
概観
オペレーティングシステムのもとで行われ得るいくつかのプロセスは、それらの適切な動作について1つまたは複数のキーに依存している。キーへのアクセスは、ログオンプログラムなどの認証プログラムにより制御することができ、ユーザがユーザ名/パスワードの組合せなど適切な信用証明情報を提供しない限り、認証プログラムは、1つ(または複数)のキーの使用を可能にすることを拒否する。したがって、適切な信用証明情報がない場合、ログオンプログラムがキーを使用可能にすることを拒否することにより、パスワードを知らないユーザに対して、いくつかのプロセス(たとえば暗号化ファイルの解読)を中断する(または完全に阻止する)ことができる。ログオンプログラムは、キーに対するアクセスを許可/禁止する(gate)のに有効であるが、オペレーティングシステムローダが欺かれて、ログオンプログラムが課している認証ルールの外部でキーを配布する異なるコンポーネントを、ロードする可能性がある。したがって、このようにキーが配布される場合、キーを保護するためには、オペレーティングシステムのロードプロセスを保護する必要がある。本発明により、ロードプロセスを保護するために使用することができるメカニズムが提供される。
例示的コンピューティング構成
図1は、本発明の諸態様を実施することができる例示的コンピューティング環境を示す。コンピューティングシステム環境100は、適切なコンピューティング環境の一例にすぎず、本発明の用途および機能の範囲にどのような限定も示唆する意図はない。また、コンピューティング環境100は、例示的動作環境100に示すコンポーネントのいずれか1つまたは組合せに関係する、どのような依存性または要件も有していると解釈されるべきではない。
本発明は、他の多数の汎用または専用のコンピューティングシステム環境または構成で使用することができる。本発明での使用に適切となり得る周知のコンピューティングシステム、環境、および/または構成の例には、これだけに限定しないが、パーソナルコンピュータ、サーバコンピュータ、携帯用またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、組込みシステム、および、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
本発明は、コンピュータにより実行されるプログラムモジュールなどコンピュータに実行可能な命令の一般的コンテキストにおいて説明することができる。一般的に、プログラムモジュールには、特定のタスクを実行するまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。本発明はまた、通信ネットワークまたは他のデータ伝送媒体を介して連結されるリモート処理装置によってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含め、ローカルとリモートの両方のコンピュータ記憶媒体に、プログラムモジュールおよび他のデータを配置することができる。
図1を参照すると、本発明を実装するための例示的システムが、コンピュータ110の形態で汎用コンピューティング装置を含んでいる。コンピュータ110のコンポーネントには、これだけに限定しないが、処理装置120、システムメモリ130、および、システムメモリを含め様々なシステムコンポーネントを処理装置120に結合するシステムバス121が含まれ得る。処理装置120は、たとえばマルチスレッド(multi−threaded)プロセッサ上でサポートされる、複数論理処理装置を表すこともできる。システムバス121は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのうち任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げれば、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISA(拡張ISA)バス、VESA(ビデオ電子規格協会)ローカルバス、および、メザニン(Mezzanine)バスとしても知られるPCI(周辺コンポーネント相互接続)バスが含まれる。システムバス121は、通信を行う装置間のポイントツーポイント接続または交換ファブリックなどとして実施することもできる。
コンピュータ110は、通常多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスすることができる任意の利用可能な媒体とすることができ、それには、揮発性と非揮発性の両方の媒体、および、リムーバルと非リムーバルの両方の媒体が含まれる。限定ではなく例として挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と非揮発性の両方の媒体、および、リムーバルと非リムーバルの両方の媒体が含まれる。コンピュータ記憶媒体には、これだけに限定しないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、あるいは、CDROM、DVD(デジタル多用途ディスク)、または他の光ディスクストレージ、あるいは、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ110によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号に情報を符号化するように1つまたは複数のその特性が設定または変更された信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれることになる。
システムメモリ130は、コンピュータ記憶媒体を、ROM(リードオンリメモリ)131およびRAM(ランダムアクセスメモリ)132などの揮発性および/または非揮発性のメモリの形態で含む。始動時などにコンピュータ110内の要素間で情報を転送するのを助ける基本的ルーチンを含むBIOS(基本入出力システム)133は、通常、ROM131に格納されている。RAM132は、通常、処理装置120により、即座にアクセス可能および/または現在処理中である、データおよび/またはプログラムモジュールを含む。図1は、限定ではなく例として、オペレーティングシステム134、アプリケー
ションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110は、他のリムーバル/非リムーバル、および揮発性/非揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図1では、非リムーバルで非揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ141、リムーバルで非揮発性の磁気ディスク152から読み取りまたはそれに書込みを行う磁気ディスクドライブ151、および、CD−ROMまたは他の光媒体などリムーバルで非揮発性の光ディスク156から読み取りまたはそれに書き込む光ディスクドライブ155を示している。例示的動作環境において使用することができる他のリムーバル/非リムーバルで揮発性/非揮発性のコンピュータ記憶媒体には、これだけに限定しないが、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、半導体RAM、および半導体ROMなどが含まれる。ハードディスクドライブ141は、通常、インターフェース140などの非リムーバルメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、
インターフェース150などのリムーバルメモリインターフェースによってシステムバス121に接続される。
前述の図1に示すドライブおよび関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ110のための他のデータの、ストレージを提供する。たとえば、図1では、ハードディスク141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するものとして図示されている。これら
のコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じにすることも異なるようにすることもできることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、これらが少なくとも互いに異なるコピーであることを示すために、ここでは異なる番号を与えている。ユーザは、キーボード162、およびマウス、トラックボール、またはタッチパッドとして通常は言及されるポインティングデバイス161などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、マイク、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、多くの場合、システムバスに結合されたユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、またはUSB(ユニバーサルシリアルバス)など他のインターフェースおよびバス構造によって接続してもよい。モニタ191または他のタイプの表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。このコンピュータはまた、モニタに加え、スピーカ197およびプリンタ196など他の出力周辺装置を含むこともでき、これらは、出力周辺装置インターフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作することもできる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、図1にはメモリ記憶装置181のみが示されているが、通常、コンピュータ110に関係する上述の要素の多くまたは全部を含む。図1に示す論理接続は、LAN(ローカルエリアネットワーク)171、およびWAN(広域ネットワーク)173を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
LANネットワーク環境で使用する場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用する場合、コンピュータ110は、通常、モデム172、または、インターネットなどのWAN173を介して接続を確立する他の手段を含む。モデム172は、内蔵でも外部のモデルでもよく、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。図1に、限定ではなく例として、メモリ装置181に常駐するリモートアプリケーションプログラム185が示されている。ここに示したネットワーク接続は例示であり、コンピュータ間で接続リンクを確立する他の手段を使用することもできることが認識されよう。
キーにより保護される動作
コンピューティング環境は、そこで行われる特定のプロセスがその適切な動作について依存するキーを利用することができる。Microsoft Windows(登録商標)オペレーティングシステムで使用されるシステムキーすなわち「SYSKEY」は、このようなキーの一例であるが、限定的例ではない。好ましい実施形態では、プロセスが依存するキーは、一意で、暗号的にランダムなパープラットフォーム(per−platform)キーであり、つまり、2つのマシンを仮定すると、この2つのマシンはおそらく異なるキーを有する。したがって、少なくとも、あるプラットフォームのキーがその外部
で利用不可能であることを保証する、有効なメカニズムが採用されている限り、このようなキーに依存するプロセスは、あるプラットフォームから別のプラットフォームに移植できることがめったにない。
図2は、キーに依存するプロセスが実行されているシステムの例を示す。プロセス202は、適切に動作するためにキー204に依存している。プロセス202とは、プロセスの従来の概念、すなわちオペレーティングシステムにより管理されるか、またはアドレス空間に割り当てられる実行単位に限られず、より一般的に、コンピュータ上で実行することができる任意の動作または一連の動作のことを示すことに留意されたい。さらに、この例は、暗号鍵に依存するプロセスを示すが、本明細書に使用される用語「プロセス」は、暗号操作を行うプロセスに限定されないことに留意されたい。
図2に示すように、キー204がプロセス202への入力として使用可能な場合、プロセス202は適切に動作する。一方、キー204がプロセス202への入力として使用可能でない場合、プロセス202は適切に動作しない。キー保護メカニズム206は、キー204へのアクセスを制御する。つまり、メカニズム206がプロセス202にキー204を提供するかまたは提供しないかは、該当するセキュリティ条件が満たされているかどうかに応じて変わる。たとえば、メカニズム206がキー204の使用を可能にするのに先立って、ユーザがログインして適切なパスワードを提供することが必要なことがある。
プロセス202が正しく動作するのを防止するためのキー204の否認は、場合によっては望ましい結果となることに留意されたい。たとえば、暗号化/解読ファイルは、キー204に保護されるプロセス202の一例である。ファイルの適切な解読を、キー204へのアクセスに依存させることができる。ユーザが適切にログインして自身を認証することができなかった場合、ログインが不能であることが、コンピュータが所望のユーザ以外の人物によって操作されていること(たとえばラップトップが盗まれた場合)を示す可能性があるため、ファイルの解読を進行しないことが望ましいことがある。したがって、キー保護メカニズム206は、関連するセキュリティ条件が満たされていることによりキー204へのアクセスを提供することができ、このようなセキュリティ条件が満たされていない場合に中断する必要があるプロセスを、中断するために、キー204の否認を用いることができる。このようにプロセスを中断することができるメカニズム206の能力は、これらのプロセスが適切な動作のために必要とするキー204に依存する。というのは、この依存性により、プロセスを中断するためにキー204を否認する動作が可能になるか
らである。
図3は、キー204に依存するプロセスの具体的(ただし非限定的)例を示す。図3の例において、この例示的プロセスは、ファイルを暗号化した形態で格納し、また暗号化したファイルを解読する、暗号化ファイルシステム(EFS)302である。このようなファイル暗号化の目的の1つは、ラップトップコンピュータが盗まれた場合、窃盗犯がラップトップコンピュータ上のデータを回復するのを防止することであることに留意されたい。ファイル304が生成されて格納される場合、このファイルはEFS302に提供される。次いで、EFS302は、ファイル304を暗号化し、ファイル304を暗号化ファイル306に変換し、それをハードディスク141に格納する。暗号化ファイル306を取り出すよう要求が行われた場合、EFS302は、暗号化ファイル306を取り出し、それを解読して解読ファイル308を生成する。(実際は、暗号化ファイル308の実体は、元のファイル304と同じであるが、図3では、わかりやすくするために、このファイルの2つのインスタンスを別々に示している。つまり、ファイル304が元のファイルであり、解読ファイル308は、EFS302によって暗号化され、格納され、取り出され、さらに解読された後のファイルであり元と同じファイルである。)
EFS302への1つの入力は、コンテンツキー(content key)310であることに留意されたい。コンテンツキー310は、暗号化方法に対し入力として機能する対称鍵であることが好ましい。コンテンツキー310は、暗号化ファイル306を作成するためファイル304を暗号化するために使用され、また、解読ファイル308を作成するために暗号化ファイル306を解読するためにも使用される。キー310を、ある種の取り出しが容易な場所に格納すると、データを保護するEFS302の能力が直ちに無効になるおそれがあることは認識されよう。つまり、コンテンツキーがハードディスク上で容易に利用可能である場合、またはコンテンツキーがラップトップのある種の既知の特徴(たとえばプロセッサシリアル番号)から容易に導き出すことができる場合、窃盗犯がキーを容易に発見し解読することができるため、ファイルが暗号化された形態で格納されているかどうかによって違いが生じないことになる。したがって、真の所有者の協力によってのみ可能なある種のやり方でキーを導き出すことによってキーを保護することが望ましい。キーを保護するための1つの方法では、キー204を入力として受け取りキー20
4の関数としてコンテンツキー310を導出する、キー生成モジュール312を使用する。したがって、キー204が適切なセキュアな状況のもとでのみ提供される限り、コンテンツキー310が同様に適切な状況のもとでのみ導出されることになる。言い換えれば、キー204の使用可能性に、コンテンツキー310の導出を依存させることにより、キー204に与えられているどのような保護も、コンテンツキー310へ拡張することができる。たとえば、キー204を提供するために、ユーザが適切なパスワードを提供してログインすることが必要な場合、ユーザが適切にログインしない限りコンテンツキー310が使用可能にはならないことを保証することができる。
したがって、適切なセキュリティのコンテキスト(たとえば、正しいパスワードを提示しログインした正当なユーザ)が存在する場合のみ外部に与えられるキー204に、他のプロセスが依存していることがあるので、不適切な状況のもとでキー204が外部に出ないように保護することが重要である。後で述べるように、キー204を悪用をもたらし得る形でマシンに配布させることになる1つの場合として、オペレーティングシステムの不正コンポーネントが正当なコンポーネント(ここでは、正当なコンポーネントはキー204を保護することができると想定されている)を取り替える可能性がある、非セキュアの環境でマシンをブートすることがある。したがって、キー204が配布され得るのに先立ちマシンが既知の(安全な)環境でブートされることを保証するメカニズムを以下で述べる。
状態検証を有するブートプロセス
図4は、ブート手順で使用される典型的な一連の事象を示す。
最初に、マシンの電源が入れられる。通常のマシンは、電源がオンになった時に、ある種の固定アドレスにある命令の実行を開始するように構成されている。通常そのアドレスで収容されている命令は、「BIOS」402、または「基本入出力システム」として知られている。BIOS402の実行が完了すると、BIOS402は、「オプションROM」404と呼ばれる小規模なプログラムの実行を開始する。オプションROMは、たとえばマシンに対してハードウェアパスワードを設定することや、いくつかのオペレーティングシステムのうちどれをブートするかを選択することなど、非常に基本的な初期ブート機能を実行するプログラムである。オプションROM404の実行後、マシンはマスタブートレコード(MBR)406をロードするように命令される。
MBR406は実行可能プログラムである。通常、MBR406は、コンピュータのハードディスクの最初のセクタにあり、ブートをさらに行うために使用するパーティションを、パーティションテーブル内で参照することから開始する。(たとえば、ディスクは、異なるオペレーティングシステムにより使用するためにパーティションに分けることができ、各オペレーティングシステムは、異なるブート手順を必要とすることがある。)適切なパーティションを参照した後、MBR406は、そのパーティションに関連するブート
セクタ408に制御を転送する。次いで、ブートセクタは、オペレーティングシステムローダ410をロードするプロセスを開始し、このローダが最終的にオペレーティングシステムをロードする。このようなコンポーネントが例示のブートプロセスにどのように適合するかを単に示すために図4にMBR406を示しており、本発明は、MBR406を使用するブート手順に限定されないことに留意されたい。
オペレーティングシステムローダ410が実行されている時間中に、ローダおよびマシン状態が検証される(450)。(この文脈で「マシン」は、物理的マシンまたは仮想マシンを表すことができる。)この妥当性検証は、高保証環境で動作する信頼できるソフトウェアコンポーネント(この実施形態については後でさらに詳細に説明する)によって行われ、したがって、ローダ410の妥当性検証が適切に行われるある程度の保証/信頼性が存在する。基本的には、オペレーティングシステムローダ410がマシンの制御を有する間の関連するマシン状態の側面を検証すること、および、ローダ410を検証することにより、オペレーティングシステムコンポーネント(たとえば、ハードウェア抽象化層(HAL)、カーネル、ドライバなど(416))の不当または不正なバージョンが、ログオンプログラム418が実行される時間までしばらくロードされないというある程度の保証を実現することが可能である。オペレーティングシステムがロードされた後に最初に行うことの1つは、キー204へのアクセスを許可/禁止するログオンプログラム418の実行であるため、ログオンプログラム418が実行される時間まで不正なコンポーネントがロードされるのを防止することは重要であり、不正コンポーネントがロードされた場合には、このコンポーネントにより、ログオンプログラム418が、不適切な状況でキー204が配布されることになり得るような誤った挙動をするおそれがあり、これによって、上述のようにキー204の保護に依存するすべてのコンポーネントのセキュリティが脅かされることになる。したがって、キー204の保護は、オペレーティングシステムローダ410が実行されてからログオンプログラムが完了する時間までマシン状態の厳格な制御を行うことにより達成することができる。
妥当性検証450は、オペレーティングシステムローダ410が実行されている期間に行われる。妥当性検証は、ローダおよびマシン状態を検証することを含み、マシン状態を既知の良好な状態に設定することも含むことができる。このマシン状態の検証および設定の背後にある基本的な考え方は、ローダが実行される際のマシン状態を、ローダがいかなる不正なコンポーネントもロードすることがなく、つまりセキュリティ違反をもたらすようにローダが振る舞うようなことがない状態にすることである。妥当性検証450は、ローダのコードが、実際に、適切に振る舞うように事前に確認されているコードであることを保証し、さらに、この既知のコードが適切に振る舞う状態にマシンがあることを(マシンが既にその状態にあることを確認することにより、またはマシンをその状態に置くことにより)保証する。この技法では、マシンの既存の(安全な)状態を活用して、マシンの将来の状態も安全になることが保証できるが、オペレーティングシステムローダ410の挙動が、既知で理解されていることだけではなく厳格に制限されることによって、このようなマシン状態の活用による保証が可能になることが認識されよう。この所見に基づくと、数多くの異なるソースからの非常に様々なコード、および、このようなコードを実行した結果としてマシンが置かれ得る非常に幅広い状態により、これらの様々な異なるコードモジュールすべてを実行しながらマシンの挙動を決定することが不可能でない場合でも困難になるため、妥当性検証450は、あまりに早い時期(たとえば、オプションROM404またはMBR406が実行される時間)に行うべきではないことが認識されよう。したがって、ローダ410が実行されている時間において適切な状態にマシンを置くことができるかぎり、ローダ410の実行に先立ってマシンがどの状態にあるかを問題にしない
ことが好ましい。
好ましい実施形態では、ローダ410の実行は、第1段(412)および第2段(414)の2つの段に分割される。好ましくは、第2段に進むのに先立ち、第2段を実装するコードを検証し(450)、次いで、妥当性検証450を行う信頼されるコードは、明確に定義された入口点で第2段へジャンプする。(妥当性検証を行う「信頼されるコード」は、高保証環境で実行される上述のプログラムである。)「信頼される」ことは、絶対的に誤らないことを含意するのではなく、そのコードが適切にジョブを行うことを想定する根拠があることを意味するにすぎないことは当業者には理解されよう。プログラムの挙動は、それが実行されている環境に影響される可能性があるため、信頼されるコードが高保証環境で実行されることは、信頼されるコードが適切に動作することを意味する。つまり、(1)信頼されるコードは、いくつかの期待に準拠する環境でその機能を適切に実行することを信頼することができ、(2)高保証環境が、このような期待に準拠する環境を適切に提供することを信頼することができる。次いで、第2段では、第1段から受け取った任意の情報を(ある定義された基準に従って)検証する。第1段と第2段の境界線は、セキュリティに関係するタスクが適切に行われないようにするおそれがある事象が発生し得るのに先立つ時点で、関連するプログラムおよび状態を検証することができる限り、どのようなセキュリティ検査も行わず、また、ある種のセキュリティに関連するタスクにいかなる影響(たとえばキー204の配布など)をもたらさずに実施することができるブート手順のいくつかの側面があり得ることを反映している。さらに、ブートプロセスにおいて時期尚早に状態の妥当性検証を試みることに関する問題があり得る。つまり、正当なブート手順が取ることができる実際の実行経路はかなり可変であるため、このような変化しやすい状況では妥当なマシン状態と妥当でないマシン状態の違いを定義することが難しくなる。マシンが経過する任意の状態が妥当であるかどうか決定することを試みずに、単にこれらの任意の可変状態を経過してロードが進行することを可能にすることは理にかなっているといえる。したがって、第1段は、どのような妥当性検証もなしに進行するロードの部分である。第1段の終わりにローダおよびマシン状態を検証し、第2段が開始する。このような境界線の前提は、どんなセキュリティの制約なしにある特定の時点までプロセスを実行することができることであり、その時点では、マシンについてすべての関連するファクタが検証され、マシンが既知の良好な状態に置かれ、基本的にその状態では、マシンをセキュリティの観点から受け入れられない状態に置くことがある事前のいかなる動作の効果も無効にされる。ロードプロセスの第1段と第2段の間に境界線が引かれるちょうどその時点は、状況に対しかなり特定的であり(たとえば、ローダコードはどのようであるか?、ロードの一部分としてどんなタスクが必要か?)、ある種のトレードオフを示す。つまり、一方では、境界線を将来の動作のために充分に遅い時点にすべきであり、正当な
挙動が不正な挙動から区別することがうまくできるように、正当なロードの挙動における可変数を充分に小さくすべきである。(上述のように、早い時期の手順においては、多数のオプションROMおよび他の可変数により、可能な実行経路の数が多くなり、それによって、正当な挙動を不正な挙動と区別することが困難になる。)他方で、この境界線は、セキュリティにたとえばキーが不適切に配布されることなど影響を与え得る任意の事象(たとえばログオンプログラムのロード)に先行するために早い時期にすべきである。一般に、第1段と第2段の間の境界線では、ある期間、「ありのまま(raw)」(または「オープン」、「無効」)の状態で任意のシステムを実行し、次いで、挙動を確認するために必要な任意のコンポーネント(たとえば高保証環境)も開始し、次いで、これらのコンポーネントを使用して、マシンの現在の状態を検証する(あるいはマシンを既知の良好な状態にする)ことが可能であり、この時点では、後でセキュリティに影響(たとえばキーの配布)を与える可能性があることを行う、プロセスが進行することを可能にすることができる。
妥当性検証450
妥当性検証450は、基本的に、オペレーティングシステムローダ410が既知の信頼できるプログラムであることを確認する(または、より詳細には、好ましい実施形態ではローダの第2段を確認する)動作であり、そのプログラムが実行されているマシンが既知の良好な状態であることを保証する。したがって、妥当性検証は、(1)ローダプログラム(またはローダプログラムの第2段)を検証して、それが信じられているように既知の信頼されるプログラムであることを保証すること、および、(2)関連するマシンの状態を、ローダが適切に振る舞うことが分かっている既知の良好な状態に変更することの2つの部分を有する。(1)および(2)を行う前提は、既知のマシン状態で動作する既知のプログラムが、既知のように振る舞うことである。
妥当性検証の第1の部分すなわちローダの検査は、様々な方法で行うことができる。最も単純な例では、既知のプログラムのハッシュ(これは暗号的に署名してデジタル署名を作成しても、あるいは偽装ができない何らかの方法で格納してもよい)がある場合があり、それを実際の実行されているプログラムと比較することができる。プログラム全体にわたりハッシュを取ることの問題は、正当なプログラムの異なるインスタンスが若干異なるイメージを有することがあり、したがって、既知のプログラムと、そのプログラムの実行されているインスタンスの間で、完全な識別を必要とするように計算されたハッシュは、制限が強くなりすぎることがある。妥当性検証は、プログラムが想定されたとおりであることを保証するが、過度に制限されないように行われることが好ましく、たとえば、妥当性検証プロセスは、固定されていることが分かっているプログラムコンポーネントのハッシュを比較することができ、時間が経過するにつれて変化し得るプログラムコンポーネントに対して他の試験を実施することができることが好ましい。妥当性検証を行うコンポーネントは、検証されるプログラムの特性に適合させるべきであり、本発明は、プログラムを妥当性検証するどの特定の技法にも限定されない。
妥当性検証の第2の部分すなわちマシン状態の確認/設定は、好ましくは、状態のすべての関連する「ソース」を既知の値に設定することによって行われる。通常、オペレーティングプログラムに影響をおよぼすことができる関連状態は、3つのソース、すなわちCPU、チップセット、およびメモリによってもたらされる。したがって、これらの項目は、妥当性検証時に既知の良好な状態にすることができる。たとえばCPUは、既知の状態たとえばring 0にされプログラムカウンタが既知の位置を指し、すべてのデータレジスタは、ゼロにセットされ、ローダプログラムが格納されているメモリ以外のすべてのメモリは、ゼロにセットされる。この状態のマシンでローダが実行されている際にローダが適切に振る舞うことが確認された場合、ローダを検証すること、および、マシンの既知の良好な状態への配置することの組合せにより、ログオンプログラム418が実行される時間までの適切な挙動が保証される。上述のように、ログオンプログラム418が実行されるまでの適切な挙動による利益の1つは(利益はこれだけではないが)、不適切な状況でキー204の配布を引き起こす不正コンポーネントがロードされないことである。
妥当性検証プロセスにより、不正コンポーネントからオペレーティングシステムのロードを保護するためには、妥当性検証プロセス自体が適切に実行されることを充分に保証する必要があることに留意されたい。妥当性検証プロセスの正当性は、高保証コンピューティング環境の環境上または環境内で実行される、信頼されるエージェントとして、バリデータを実装することにより保証することができる。たとえば、制限された1組の機能を実施する小規模のオペレーティングシステムがあっても、その仕様によってこのオペレーティングシステムは高水準の保証が実現される。このようなオペレーティングシステムは、単一マシン上の他のオペレーティングシステムと一緒に稼動することができ、ハイパーバイザ(hypervisor)または仮想マシンモニタなどの監視コンポーネントによって、このような高保証のオペレーティングシステムを、システム上の他の(より安全ではない)環境から隔離させることができる。(一実施形態では、相互に隔離されたある状態でハイパーバイザにより維持され、オペレーティングシステムが稼動することができる環境である、パーティションが、ハイパーバイザにより実現される。)さらに、高保証コンポーネントは、パープラットフォーム暗号キーを適用しそれを強力に保護するハードウェアモジュールなど信頼ルート(root of trust)に対する排他的アクセスを有することができる。バリデータは、このような高保証環境で実行されるプログラム(または「エージェント」)とすることができ、高保証環境は、それ自体が攻撃に抵抗することが信頼される限り、高保証環境外部からの不適切な挙動を引き起こす攻撃に、バリデータがさらされないという保証を提供する。さらに、上述のように、高保証環境は、シールドストレージ(すなわち、あるデータを格納し、また、データが密封される特定のオブジェクトのみに、そのデータを開放する能力)を提供することができ、バリデータは、このシールドストレージを使用して、配布されるキーを格納することができる。バリデータは、高保証環境と一体になった部分とすることができるが、高保証環境で実行される別個のコンポーネントとすることもできることに留意されたい。
図5は、上述の手順に従う妥当性検証を行うバリデータ550の例を示す。バリデータ550は、ローダ410があるセットの既知の基準に対して正当および/または準拠となっているかどうか評価する能力を有する。したがって、バリデータ550は、マシン状態502を評価および/または影響を与える能力を有する。これらの能力の組合せを使用し
て、ローダ410が実行を期待されるローダであること、および、ローダ40が適切に振る舞うことが分かっているマシン状態に、ローダが実行されるマシンが置かれていることを保証することにより、ローダ410が適切に振る舞うことを保証することができる。
構造的には、バリデータ550は、2つのコンポーネント、すなわち汎用部分504およびローダ専用部分506を含むことができる。「汎用部分」504は、多くの様々なバリデータ(またはすべてのバリデータ)に共通のコードを含む。ローダ専用部分506は、特定のローダ410の妥当性検査に特定的に関係するコードであり、つまり、ローダ410の正当なインスタンス(またはローダ410の第2段)がどのように見えるかを理解し、ローダ410がこの理解に従っていることを保証するために検査を実施するコードである。したがって、ローダ専用部分506は、汎用部分504と組み合わせて、完全なバリデータを形成する。
バリデータ550は、キー204がローダに提供されるかどうかを最終的に決定するコンポーネントである(次いで、このローダが、前述のようにログオンプログラムによって許可される方法に従ってオペレーティングシステムで使用するために、後でそのキーをオペレーティングシステムに提供する)。バリデータ550は、シールドストレージ機能508でバリデータ550にキー204を密封することにより、キー204を保護することができる。シールドストレージ機能508は、高保証コンピューティング環境の機能とすることができる。シールドストレージ機能508は、高保証環境で実行されているコンポーネントが、それ自体に任意のデータを密封するのを許可することができ、それにより他のコンポーネントがこのデータを取り出すことができなくなる。たとえば、バリデータ550のローダ専用部分506は、それ自体にキー204を密封することができる。シールドストレージ機能508は、ローダ専用部分506以外のどのコンポーネントがキー204を取り出すのも防止する。したがって、キー204を取得することができるのはローダ専用部分506のみのため、キー204が保護され、ローダ専用部分506は、キー204の不正な配布を引き起こすことがないと信頼するローダだけに、キー204を配布する。他の実施形態では、バリデータ、および第2段のローダ410を含むコンポーネントの組合せに基づいてキーが密封される。このような実施形態では、バリデータ506のローダ専用部分を除去することができる。というのは、既知の正当な第2段のローダについてのバイナリが、密封する測定基準の部分であるので、シールドストレージメカニズム自体が、キーが開放され得るのに先立ち、正当な第2段のローダの存在を基本的に保証するためである。
SYSKEYを保護するプロセスの例
図6は、前述の本発明の態様によるキーを保護するプロセスの例を示す。マシンが始動した後のある時点で、オペレーティングシステムローダが実行される(602)。オペレーティングシステムローダの実行中、ローダおよびマシン状態が検証され(604)、それによりローダが、上述の理由により予測可能な挙動をすることが保証される。ローダおよびマシン状態が検証された後、ローダは、不正コンポーネントがロードされるのを防止しながらオペレーティングシステムをロードするために使用される(606)。(上述のように、ローダおよびマシン状態の妥当性が検証されることは、ローダの将来の挙動が不正コンポーネントのロードを引き起こさないことが分かることを意味する。)オペレーティングシステムがロードされた後、ログオンプログラムが実行され、キーへのアクセスを許可/禁止する。
他の実施形態の例
本発明のメカニズムは、オペレーティングシステムのロードを実行するのに使用することができるだけでなく、一般に、いくつかの特定の機能を実行するために妥当性検証を必要としながらも、一方でありのままの(検証されていない)状態としてある機能を、システムが実行することを可能にするために使用することができることに留意されたい。たとえば、あるコンピュータは、何らかの妥当性検証なしにいくつかの機能を実行することができる(たとえばコンピュータがラジオとして動作することができる)が、このコンピュータがより機密性のある機能(たとえばハードディスクからファイルを読み取る)を実行することができるのに先立ち妥当性検証を行わなければならないことがある。一般に、1つのマシンを器具(appliance)および汎用PCの両方として見ることができ、妥当性検証/ログオンは、器具の役割では必要とされないが、汎用PCの役割では必要とされる。
さらに、バリデータは、特定のキーのセットをログオンプログラムに対して開放/非開放のいずれかを行うことに限定されず、より一般的に、特定のソフトウェアスタックに対して特有のキーのセットを開放するように構成することができる。たとえば、あるソフトウェアスタックが第1のキーを得ることができる場合、バリデータは、「より重みのある検証がされた」ソフトウェアスタックのみに第2のキーを開放することができる。
さらに、キーは、必ずしもログオン手順によって開放される必要がなく、任意の妥当性検証手順によって提供することができる。たとえば、DVDプレーヤのバイナリは、バリデータがこのプレーヤを正当なバイナリであると決定した後に、ログオンを必要とせずにたとえばDVD機能キーを取得することができる。
さらに、いくつかのプログラムは、妥当性検証なしに、ある形態で動作することができるが、特定の機能を提示することが許可されるのに先立ち、ある種の妥当性検証を必要とする。たとえば、電話アプリケーションは、ログオンを必要とせず開始することができるが、アプリケーションの暗号機能が働くのを許可するキーが配布できるのに先立って、ログオンを必要とすることがある。
以上の例は、単に説明のために提示したものであり、本発明を限定すると解釈すべきではない。本発明を様々な実施形態を参照して説明したが、本発明に使用された言葉は、限定ではなく説明および例示のための言葉であることを理解されたい。さらに、特定の手段、材料、および実施形態を参照して本発明を説明したが、本発明に開示の細目に本発明が限定されることは意図されず、むしろ本発明は、添付の特許請求の範囲の範囲にあるような、すべての機能的に均等な構造、方法、および用途にまで拡張される。本明細書の教示
の利益を得る当業者は、その態様において、本発明の範囲および趣旨から逸脱することなく、本発明に多数の修正および変更を加えることができる。
100 コンピューティング環境
120 処理装置
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 非リムーバル非揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 リムーバル非揮発性メモリインターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 LAN
172 モデム
173 WAN
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺装置インターフェース
196 プリンタ
197 スピーカ

Claims (14)

  1. オペレーティングシステムのブートを、前記ブートの信頼性に関する保証が提供される状況で実施するためのシステムであって、
    前記オペレーティングシステムをロードするオペレーティングシステムローダの正当性または識別を評価し、前記オペレーティングシステムローダが動作するマシン状態をさらに評価し、前記オペレーティングシステムローダが前記オペレーティングシステムをロードするのを進行することを、前記オペレーティングシステムローダの正当性または識別が確認されたかどうかに応じて許可または不許可とし、前記オペレーティングシステムローダが進行することを許可するのに先立って前記マシンを既知の状態にする、バリデータを含み、
    前記オペレーティングシステムローダが動作を開始した後、ただし前記オペレーティングシステムローダがカーネルまたはデバイスドライバを初期化するのに先立ち、前記バリデータは、前記オペレーティングシステムローダの正当性または識別、および前記マシン状態を評価し、前記マシン状態を評価することは、前記オペレーティングシステムローダが動作中のマシンの状態が前記既知の状態であることを確認することを含む、ことを特徴とするシステム。
  2. キーが前記バリデータに密封され、前記バリデータは、前記オペレーティングシステムローダが進行を許可された場合、前記キーを開放し、オペレーティングシステムローダに前記キーを提供することを特徴とする請求項1に記載のシステム。
  3. 前記マシン状態を評価することは、前記オペレーティングシステムローダが動作中のプロセッサのリング状態、プログラムカウンタの状態、データレジスタの状態、および前記オペレーティングシステムローダが格納されている領域以外のメモリ領域の状態が前記既知の状態であることを確認することを含む、ことを特徴とする請求項1に記載のシステム。
  4. 前記バリデータは、
    バリデータのクラスに共通である汎用部分と、
    前記オペレーティングシステムローダに特定的な専用部分と
    を含み、前記バリデータが、異なるオペレーティングシステムローダを検証するために使用される場合、前記専用部分を、異なる部分で置き換えることができることを特徴とする請求項1に記載のシステム。
  5. 前記マシンは物理マシンを含むことを特徴とする請求項1に記載のシステム。
  6. 前記マシンは仮想マシンを含むことを特徴とする請求項1に記載のシステム。
  7. オペレーティングシステムをブートする方法であって、
    基本入出力システム、オプションROM、マスタブートレコード、およびブートセクタを実行すること、
    オペレーティングシステムローダを開始すること、
    前記オペレーティングシステムローダを検証すること、
    前記オペレーティングシステムローダ実行するマシンの状態を検証すること、および、
    前記オペレーティングシステムローダおよび前記マシンの前記状態が妥当であると決定された場合、前記オペレーティングシステムローダがオペレーティングシステムをロードするのを許可することを含み、
    前記オペレーティングシステムローダの検証、および前記マシン状態の検証の前記動作は、前記オペレーティングシステムローダが少なくとも1つの動作を実行した後、実施され、前記マシン状態の検証は、前記少なくとも1つの動作を実行した後のマシンの状態が既知の状態であることを検証することを含む、ことを特徴とする方法。
  8. 前記オペレーティングシステム下で少なくとも1つの機能を適切に実行するために必要なキーが、オペレーティングシステムローダの検証、およびマシン状態の検証の前記動作を実施する、バリデータに密封され、
    前記オペレーティングシステムローダおよび前記マシン状態が妥当とされた場合、前記キーを開放し、前記オペレーティングシステムローダに前記キーを提供することをさらに含むことを特徴とする請求項7に記載の方法。
  9. 前記オペレーティングシステムがロードされた後、前記キーへのアクセスを許可/禁止するログオンプログラムを実行することをさらに含むことを特徴とする請求項に記載の方法。
  10. 前記ログオンプログラムは、ユーザが認証手順を正常に完了したかどうかに応じて、前記オペレーティングシステムのコンポーネントが前記キーを使用することを許可または不許可とすることを特徴とする請求項に記載の方法。
  11. 前記マシン状態の検証は、前記少なくとも1つの動作を実行した後のプロセッサのリング状態、プログラムカウンタの状態、データレジスタの状態、および前記オペレーティングシステムローダが格納されている領域以外のメモリ領域の状態が前記既知の状態であることを確認することを含む、ことを特徴とする請求項7に記載の方法。
  12. 前記マシン状態がリセットされることにより、前記ローダが、前記オペレーティングシステムをロードするために適切に機能することが防止されるのに先立つ時点で、前記オペレーティングシステムローダの検証、および前記マシン状態の検証の前記動作が実施されることを特徴とする請求項に記載の方法。
  13. 前記マシンが物理マシンを含むことを特徴とする請求項7に記載の方法。
  14. 前記マシンが仮想マシンを含むことを特徴とする請求項7に記載の方法。
JP2011147422A 2004-06-30 2011-07-01 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法 Active JP5378460B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/882,134 US7694121B2 (en) 2004-06-30 2004-06-30 System and method for protected operating system boot using state validation
US10/882,134 2004-06-30

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005179527A Division JP4796340B2 (ja) 2004-06-30 2005-06-20 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2011187089A JP2011187089A (ja) 2011-09-22
JP5378460B2 true JP5378460B2 (ja) 2013-12-25

Family

ID=35106886

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2005179527A Active JP4796340B2 (ja) 2004-06-30 2005-06-20 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法
JP2011147422A Active JP5378460B2 (ja) 2004-06-30 2011-07-01 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2005179527A Active JP4796340B2 (ja) 2004-06-30 2005-06-20 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法

Country Status (21)

Country Link
US (1) US7694121B2 (ja)
EP (1) EP1612666B1 (ja)
JP (2) JP4796340B2 (ja)
KR (1) KR101176646B1 (ja)
CN (1) CN100454246C (ja)
AT (1) ATE488800T1 (ja)
AU (1) AU2005201995B2 (ja)
BR (1) BRPI0501783B1 (ja)
CA (1) CA2507793C (ja)
CO (1) CO5700184A1 (ja)
DE (1) DE602005024744D1 (ja)
HK (1) HK1087216A1 (ja)
IL (1) IL168907A (ja)
MX (1) MXPA05005764A (ja)
MY (1) MY143926A (ja)
NO (1) NO332737B1 (ja)
NZ (1) NZ540356A (ja)
RU (1) RU2413295C2 (ja)
SG (1) SG118327A1 (ja)
TW (1) TWI438686B (ja)
ZA (1) ZA200504397B (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972590B2 (en) * 2000-09-14 2015-03-03 Kirsten Aldrich Highly accurate security and filtering software
US20060075236A1 (en) * 2004-09-30 2006-04-06 Marek James A Method and apparatus for high assurance processing
CN101213560B (zh) * 2005-06-28 2011-06-01 松下电器产业株式会社 验证方法、信息处理装置及集成电路
KR100736083B1 (ko) * 2005-10-28 2007-07-06 삼성전자주식회사 멀티 로딩 장치 및 방법
US8291226B2 (en) * 2006-02-10 2012-10-16 Qualcomm Incorporated Method and apparatus for securely booting from an external storage device
US8234717B2 (en) 2006-04-12 2012-07-31 Eugrid, Inc. Accessing and checking the validity of control information stored in external storage
JP4822544B2 (ja) * 2006-04-26 2011-11-24 株式会社リコー 複数のモジュール構成情報を管理できる画像形成装置
JP4898823B2 (ja) * 2006-10-20 2012-03-21 パナソニック株式会社 アプリケーション情報改竄監視装置及び方法
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US7765374B2 (en) * 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
KR101209252B1 (ko) 2007-02-02 2012-12-06 삼성전자주식회사 전자기기의 부팅 방법 및 부팅 인증 방법
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US8458460B2 (en) * 2007-09-27 2013-06-04 Intel Corporation Digest generation from instruction op-codes
US8683213B2 (en) * 2007-10-26 2014-03-25 Qualcomm Incorporated Progressive boot for a wireless device
US7865712B2 (en) * 2007-12-26 2011-01-04 Intel Corporation Method and apparatus for booting a processing system
JP5062687B2 (ja) * 2008-03-31 2012-10-31 Eugrid株式会社 情報処理装置
WO2009153387A1 (en) 2008-06-16 2009-12-23 Nokia Siemens Networks Oy Software loading method and apparatus
KR101013419B1 (ko) * 2008-08-29 2011-02-14 주식회사 안철수연구소 시스템 보호 장치 및 방법
US8302182B2 (en) * 2008-09-01 2012-10-30 Mediatek Inc. Embedded system with authentication, and associated authentication method
KR101197182B1 (ko) * 2008-12-23 2012-11-02 한국전자통신연구원 컴퓨터 시스템에서의 해킹 방지 장치 및 방법
GB2471282B (en) * 2009-06-22 2015-02-18 Barclays Bank Plc Method and system for provision of cryptographic services
GB2471464A (en) * 2009-06-29 2011-01-05 Nokia Corp Procedure for generating a merged command list form the static lists to be used to start up or boot up the host device.
CN102844764B (zh) * 2010-04-12 2015-12-16 交互数字专利控股公司 启动过程中的阶段性控制释放
CN102024105A (zh) * 2010-11-16 2011-04-20 深圳市文鼎创数据科技有限公司 安全认证方法和装置
US9154299B2 (en) * 2010-12-13 2015-10-06 Novell, Inc. Remote management of endpoint computing device with full disk encryption
WO2013009619A2 (en) * 2011-07-08 2013-01-17 Openkeak Inc. System and method for validating components during a booting process
US20130086371A1 (en) * 2011-09-30 2013-04-04 Pradeep Bisht Method for device-less option-rom bios load and execution
TWI450194B (zh) * 2011-11-10 2014-08-21 Inst Information Industry 作業系統處理方法以及系統、以及儲存其之電腦可讀取記錄媒體
US8572410B1 (en) 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
US9058504B1 (en) * 2013-05-21 2015-06-16 Malwarebytes Corporation Anti-malware digital-signature verification
US9053216B1 (en) 2013-08-09 2015-06-09 Datto, Inc. CPU register assisted virtual machine screenshot capture timing apparatuses, methods and systems
US9167002B2 (en) 2013-08-15 2015-10-20 Microsoft Technology Licensing, Llc Global platform health management
US9304887B2 (en) 2013-09-16 2016-04-05 International Business Machines Corporation Method and system for operating system (OS) verification
US9195831B1 (en) 2014-05-02 2015-11-24 Google Inc. Verified boot
US10140454B1 (en) * 2015-09-29 2018-11-27 Symantec Corporation Systems and methods for restarting computing devices into security-application-configured safe modes
US10177910B2 (en) * 2016-08-31 2019-01-08 Microsoft Technology Licensing, Llc Preserving protected secrets across a secure boot update
US10069633B2 (en) * 2016-09-30 2018-09-04 Data I/O Corporation Unified programming environment for programmable devices
KR101887974B1 (ko) * 2016-12-01 2018-08-13 현대오트론 주식회사 엔진제어기의 안전부팅을 위한 시스템 및 방법
TWI616774B (zh) * 2016-12-08 2018-03-01 緯創資通股份有限公司 電子裝置及其安全起動方法
EP3333748A1 (de) * 2016-12-08 2018-06-13 Siemens Aktiengesellschaft Geräteeinheit geeignet für den betrieb im geschützten und/oder offenen betriebszustand sowie zugehöriges verfahren
US9817675B1 (en) * 2017-01-31 2017-11-14 Hytrust, Inc. Methods and systems for attaching an encrypted data partition during the startup of an operating system
JP6990994B2 (ja) * 2017-05-26 2022-01-12 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
CN109040088B (zh) * 2018-08-16 2022-02-25 腾讯科技(深圳)有限公司 认证信息传输方法、密钥管理客户端及计算机设备
JP7077872B2 (ja) * 2018-08-29 2022-05-31 日本電気株式会社 情報処理装置、情報処理方法、およびプログラム
JP7077873B2 (ja) * 2018-08-29 2022-05-31 日本電気株式会社 情報処理装置、情報処理方法、およびプログラム
RU2720220C1 (ru) * 2019-06-21 2020-04-28 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" (Госкорпорация "Росатом") Способ загрузки программного обеспечения
WO2021030903A1 (en) * 2019-08-16 2021-02-25 Zao John Kar Kin System and method for performing trusted computing with remote attestation and information isolation on heterogeneous processors over open interconnect

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210875A (en) * 1989-08-25 1993-05-11 International Business Machines Corporation Initial bios load for a personal computer system
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
US5943422A (en) * 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
CN1912885B (zh) * 1995-02-13 2010-12-22 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US6658568B1 (en) * 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
NL1000530C2 (nl) * 1995-06-08 1996-12-10 Defil N V Holland Intertrust A Filtreerwerkwijze.
JPH096232A (ja) * 1995-06-21 1997-01-10 Ricoh Elemex Corp 暗号化システム、復号化システム、情報秘匿処理システムおよび情報秘匿通信システム
US5920861A (en) * 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US6249866B1 (en) * 1997-09-16 2001-06-19 Microsoft Corporation Encrypting file system and method
US6112181A (en) * 1997-11-06 2000-08-29 Intertrust Technologies Corporation Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6189100B1 (en) 1998-06-30 2001-02-13 Microsoft Corporation Ensuring the integrity of remote boot client data
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6330670B1 (en) * 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
JP3273926B2 (ja) * 1999-02-12 2002-04-15 株式会社神戸製鋼所 ディジタル信号処理装置
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US6757824B1 (en) * 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
US6711675B1 (en) * 2000-02-11 2004-03-23 Intel Corporation Protected boot flow
FI114416B (fi) * 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
DE60228027D1 (de) * 2001-07-06 2008-09-18 Texas Instruments Inc Sicherer Bootloader zum Sichern digitaler Geräte
US20030028765A1 (en) * 2001-07-31 2003-02-06 Cromer Daryl Carvis Protecting information on a computer readable medium
US7191464B2 (en) * 2001-10-16 2007-03-13 Lenovo Pte. Ltd. Method and system for tracking a secure boot in a trusted computing environment
US7137004B2 (en) * 2001-11-16 2006-11-14 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7243230B2 (en) * 2001-11-16 2007-07-10 Microsoft Corporation Transferring application secrets in a trusted operating system environment
US7159240B2 (en) * 2001-11-16 2007-01-02 Microsoft Corporation Operating system upgrades in a trusted operating system environment
GB2382419B (en) * 2001-11-22 2005-12-14 Hewlett Packard Co Apparatus and method for creating a trusted environment
US7631196B2 (en) * 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
JP3863447B2 (ja) * 2002-03-08 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 認証システム、ファームウェア装置、電気機器、及び認証方法
US7343493B2 (en) * 2002-03-28 2008-03-11 Lenovo (Singapore) Pte. Ltd. Encrypted file system using TCPA
US7565509B2 (en) * 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US6986006B2 (en) * 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
EP1495401B1 (en) 2002-04-18 2007-01-24 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US7085933B2 (en) * 2002-06-11 2006-08-01 Lenvo (Singapore) Pte, Ltd. Computer system apparatus and method for improved assurance of authentication
US7200758B2 (en) * 2002-10-09 2007-04-03 Intel Corporation Encapsulation of a TCPA trusted platform module functionality within a server management coprocessor subsystem
US7974416B2 (en) * 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
US6959262B2 (en) * 2003-02-27 2005-10-25 Hewlett-Packard Development Company, L.P. Diagnostic monitor for use with an operating system and methods therefor

Also Published As

Publication number Publication date
AU2005201995B2 (en) 2010-06-17
AU2005201995A1 (en) 2006-01-19
JP2011187089A (ja) 2011-09-22
EP1612666A1 (en) 2006-01-04
NO20052391L (no) 2006-01-02
MXPA05005764A (es) 2006-01-11
NO20052391D0 (no) 2005-05-18
DE602005024744D1 (de) 2010-12-30
MY143926A (en) 2011-07-29
TWI438686B (zh) 2014-05-21
US20060005034A1 (en) 2006-01-05
RU2413295C2 (ru) 2011-02-27
CN1716199A (zh) 2006-01-04
EP1612666B1 (en) 2010-11-17
CA2507793C (en) 2013-07-23
ATE488800T1 (de) 2010-12-15
HK1087216A1 (en) 2006-10-06
NO332737B1 (no) 2012-12-27
SG118327A1 (en) 2006-01-27
US7694121B2 (en) 2010-04-06
IL168907A (en) 2011-09-27
NZ540356A (en) 2006-11-30
RU2005115918A (ru) 2006-11-20
ZA200504397B (en) 2007-03-28
BRPI0501783A (pt) 2006-02-07
JP2006018825A (ja) 2006-01-19
JP4796340B2 (ja) 2011-10-19
TW200602978A (en) 2006-01-16
KR20060047897A (ko) 2006-05-18
CA2507793A1 (en) 2005-12-30
KR101176646B1 (ko) 2012-08-23
BRPI0501783B1 (pt) 2017-05-02
CO5700184A1 (es) 2006-11-30
CN100454246C (zh) 2009-01-21

Similar Documents

Publication Publication Date Title
JP5378460B2 (ja) 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法
US11514159B2 (en) Method and system for preventing and detecting security threats
US8656146B2 (en) Computer system comprising a secure boot mechanism
EP3125149B1 (en) Systems and methods for securely booting a computer with a trusted processing module
US8213618B2 (en) Protecting content on client platforms
RU2390836C2 (ru) Отображение достоверности из высоконадежной среды на незащищенную среду
KR20140016280A (ko) 운영 체제 구성 값 보호
WO2012119218A1 (en) Method and system for dynamic platform security in a device operating system
Safford et al. A trusted linux client (tlc)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130305

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130605

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130628

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130712

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130719

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130925

R150 Certificate of patent or registration of utility model

Ref document number: 5378460

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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