クライアント側のブートドメインおよびブート規則
【課題】ユーザが入手可能なソフトウェアコンポーネントの選択肢を制限することなく、信用できるオペレーティングシステムの識別数を減らす。
【解決手段】ブート規則は、コンポーネントおよびブート証明書の内容に基づいて、ソフトウェアコンポーネントの妥当性を決定する。クライアントコンピュータは、検証済みオペレーティングシステムのアイデンティティおよびブート証明書を、コンテンツプロバイダなどのサーバコンピュータに伝送し、コンテンツプロバイダは、そのコンテンツを検証済みオペレーティングシステムに任せるかどうかを判定する。ダウンロードされたデータは、検証済みオペレーティングシステムの識別子から導出された鍵を介して、パーマネント記憶装置上で安全に保護される。ブート証明書、コンポーネント証明書、および安全保護されたコンテンツによって、ブートドメインが定義される。
【解決手段】ブート規則は、コンポーネントおよびブート証明書の内容に基づいて、ソフトウェアコンポーネントの妥当性を決定する。クライアントコンピュータは、検証済みオペレーティングシステムのアイデンティティおよびブート証明書を、コンテンツプロバイダなどのサーバコンピュータに伝送し、コンテンツプロバイダは、そのコンテンツを検証済みオペレーティングシステムに任せるかどうかを判定する。ダウンロードされたデータは、検証済みオペレーティングシステムの識別子から導出された鍵を介して、パーマネント記憶装置上で安全に保護される。ブート証明書、コンポーネント証明書、および安全保護されたコンテンツによって、ブートドメインが定義される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータのオペレーティングシステムに関し、より具体的には、オペレーティングシステムによってロードされたコンポーネントを検証することに関する。
【背景技術】
【0002】
コンテンツがますますデジタル形式で送達されるようになり、デジタルコンテンツは、ますますイントラネット、インターネット、ケーブルTVネットワークなど専用ネットワークおよび公衆ネットワークを介してオンラインで送達されるようになっている。クライアントにとっては、デジタル形式によってより複雑化されたコンテンツが可能となり、オンライン送達によって適時性および利便性が向上する。発行者にとってデジタルコンテンツは、送達コストを引き下げてくれるものでもある。残念なことに発行者の考えでは、これらの価値ある特性よりも、オンラインでの情報送達によって、発行者側の負担および損害をもたらしてオリジナルと遜色のないデジタルコンテンツの取得およびコンテンツの違法コピーが比較的容易に行われるという、相対する欠点の方が重視されることが多い。
【0003】
コンテンツの盗難や不正使用を防ぐために、コンテンツプロバイダは、信用できるソフトウェアに、したがって加入者コンピュータ上で実行するソフトウェアが信用できることを証明可能な加入者コンピュータにのみ、コンテンツをダウンロードさせることになる。この信用という概念は、その性質上、信用できるコンポーネントのみをロードし、何らかの種類の安全保護記憶装置(secure storage)を提供するコンピュータ上で実行中の、信用できるオペレーティングシステムを有することを前提としている。そこで、コンテンツプロバイダがオペレーティングシステムを信用してコンテンツを与えるかどうかを聡明に判断できるような特性を使用して、オペレーティングシステムを識別することが1つの問題となる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第7,174,457号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1は、オペレーティングシステムによってロードされるすべてのソフトウェアコンポーネントの暗号ダイジェスト(digest)である一意のオペレーティングシステム識別子の一実施形態について開示している。ただし、コンピュータには、膨大な数の異なるハードウェアコンポーネントが含まれており、対応するサポートソフトウェアコンポーネントは、機能強化および問題解決のために頻繁に更新され、その結果、オペレーティングシステムのアイデンティティ(identity)数はほぼ無限となる。コンテンツプロバイダは、信用できるこうしたアイデンティティのリストを維持するか、またはこうしたリストの維持を第三者に委託することができるが、当分野で必要とされるのは、ユーザが入手可能なソフトウェアコンポーネントの選択肢を制限することなく、信用できるオペレーティングシステムの識別数を減らす方法である。
【0006】
本発明は、前述の欠点、短所、および問題点を対象とするものであり、以下の明細書を読み、研究することによって理解されよう。
【課題を解決するための手段】
【0007】
クライアントコンピュータ上の検証済みのオペレーティングシステムにロードされる各ソフトウェアコンポーネントは、ブート証明書に関するブート規則セットを満たすものでなければならない。適切なブート証明書は、コンピュータのブートごとに、ユーザによってあるいはデフォルトで選択される。検証済みオペレーティングシステムの識別子は、ブート証明書から作成される。ブート証明書は、ブート証明書の下でブートされたオペレーティングシステムの妥当性を証明するブート機関(boot authority)によって発行(publish)および署名される。オペレーティングシステムの各ソフトウェアコンポーネントは、ブート証明書に署名した同一のブート機関によって発行および署名されたコンポーネント証明書と関連付けられる。ブート規則は、コンポーネントおよびブート証明書の内容に基づいて、ソフトウェアコンポーネントの妥当性を決定する。
【0008】
クライアントコンピュータは、検証済みオペレーティングシステムのアイデンティティおよびブート証明書を、コンテンツプロバイダなどのサーバコンピュータに伝送し、コンテンツプロバイダは、そのコンテンツを与える検証済みオペレーティングシステムが信用できるかどうかを判定する。ダウンロードされたデータは、検証済みオペレーティングシステムの識別子から導出された鍵を介して、パーマネント記憶装置上で安全に保護される。ブート証明書、コンポーネント証明書、および安全保護されたコンテンツによってブートドメインが定義される。
【0009】
2つまたはそれ以上のブートコンポーネントの組み合わせを使用して、検証済みのオペレーティングシステムをブートすることができる。ブート証明書およびコンポーネント証明書の更新、基礎となるコンポーネント、並びに検証済みオペレーティングシステムのアイデンティティおよびそのブートドメインに与える影響などについても説明する。
【0010】
コンテンツプロバイダは、どのブート機関およびそれらの機関からのどのブート証明書を信用するかを決めるだけでよいため、少数のアイデンティティを追跡するだけでよい。クライアントコンピュータが制限されているのは、検証済みオペレーティングシステムにロードされたコンポーネントが、コンテンツプロバイダによって信用されたブート機関のうち1つによって証明されなければならないことだけである。クライアントコンピュータは、検証済みでないオペレーティングシステムの下で動作することができるが、検証済みブートドメインの下で格納されたデータにはアクセスすることができない。
【0011】
本発明では、様々な範囲のシステム、クライアント、サーバ、メソッド、およびコンピュータ読取り可能媒体について説明する。図面を参照し、以下の詳細な説明を読めば、この概要で説明した本発明の態様および利点に加えて、本発明のその他の態様および利点が明らかになろう。
【図面の簡単な説明】
【0012】
【図1A】共に使用すると本発明の実施形態が実施可能となるハードウェアおよび動作環境を示す図である。
【図1B】本発明の例示的実施形態で使用するためのクライアントコンピュータを示す図である。
【図2】本発明の例示的実施形態のシステムレベルの概要を示す図である。
【図3】図2に示された本発明の例示的実施形態で使用されるブート証明書とコンポーネント証明書との間の対話を示す時間線図である。
【図4】本発明の例示的実施形態により、ブート時にクライアントが実行するメソッドを示す流れ図である。
【図5】本発明の例示的実施形態により、新しいコンポーネント証明書を取得する際にクライアントが実行するメソッドを示す流れ図である。
【図6】本発明の例示的実施形態により、更新されたコンポーネント証明書を取得する際にクライアントが実行するメソッドを示す流れ図である。
【図7A】本発明の例示的実施形態により、ダウンロードされたコンテンツを取得する際にクライアントが実行するメソッドを示す流れ図である。
【図7B】本発明の例示的実施形態により、ダウンロードされたコンテンツを取得する際にクライアントが実行するメソッドを示す流れ図である。
【図8A】本発明の例示的実施で使用するための、ブート証明書のデータ構造を示す図である。
【図8B】本発明の例示的実施で使用するための廃棄リストエントリのデータ構造を示す図である。
【図9】本発明の例示的実施で使用するための、コンポーネント証明書のデータ構造を示す図である。
【図10】本発明の例示的実施で使用するための時間証明書のデータ構造を示す図である。
【発明を実施するための形態】
【0013】
以下の、本発明の例示的実施形態の詳細な説明では、本明細書の一部を形成する添付の図面を参照しており、本発明が実施可能な特有の例示的実施形態が例として示されている。これらの実施形態は、当業者であれば本発明が実施できる程度に詳細に記載されており、他の実施形態が利用可能であること、並びに本発明の精神または範囲を逸脱することなく論理的、機械的、電気的、および他の変更が実施可能であることが理解されよう。したがって、以下の詳細な説明は、限定的な意味を持つものではない。
【0014】
詳細な説明は、5つのセクションに分けられている。第1のセクションでは、共に使用すると本発明の実施形態が実施可能となるハードウェアおよび動作環境について説明する。第2のセクションでは、本発明のシステムレベルの概要が示される。第3のセクションでは、本発明の例示的実施形態に関するメソッドが提供される。第4のセクションでは、Microsoft(登録商標) Corporationのオペレーティングシステムである「WINDOWS(登録商標)」ファミリで使用するための、本発明の特定の実施形態について説明する。最後に第5のセクションでは、詳細な説明の結論が示される。
【0015】
ハードウェアおよび動作環境
図1Aは、共に使用すると本発明の実施形態が実施可能となるハードウェアおよび動作環境を示す図である。図1Aの記述は、共に使用すると本発明が実施可能となる好適なコンピュータハードウェアおよび好適なコンピューティング環境の簡単な概要について説明することを意図するものである。必須ではないが、本発明は、パーソナルコンピュータなどのコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈で説明される。一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。
【0016】
さらに、当業者であれば、本発明が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な大衆消費電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成でも実施可能であることを理解されよう。本発明は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される分散型コンピューティング環境でも実施可能である。分散型コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートのどちらのメモリ記憶デバイスに配置することも可能である。
【0017】
本発明を実施するための図1Aの例示的なハードウェアおよび動作環境には、コンピュータ20の形式の汎用コンピューティングデバイスが含まれており、これが、処理ユニット21、システムメモリ22、並びに、システムメモリを含む様々なシステムコンポーネントを処理ユニット21に結合するように動作可能なシステムバス23を含む。処理ユニット21は1つだけでも複数でもよいため、コンピュータ20の処理装置には、単一の中央処理ユニット(CPU)、または一般に並列処理環境と呼ばれる複数の処理ユニットが含まれる。コンピュータ20は、従来型コンピュータ、分散型コンピュータ、または任意の他のタイプのコンピュータであってよく、本発明はこれに限定されるものではない。
【0018】
システムバス23は、メモリバスまたはメモリ制御装置、周辺バス、および任意のバスアーキテクチャの変形を使用するローカルバスを含む、いくつかのタイプのバス構造のうちいずれであってもよい。システムメモリは、単にメモリと呼ぶことも可能であり、読み取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。起動時などにコンピュータ20内の要素間で情報を転送するのを助ける、基本ルーチンを含む基本入力出力システム(BIOS)26は、ROM24に格納される。さらにコンピュータ20には、図示されていないハードディスクとの間で読取りおよび書込みを実行するためのハードディスクドライブ27、取外し可能磁気ディスク29との間で読取りまたは書込みを実行するための磁気ディスクドライブ28、並びにCD−ROMまたは他の光媒体などの取外し可能光ディスク31との間で読取りまたは書込みを実行するための光ディスクドライブ30が含まれる。
【0019】
ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれ、ハードディスクドライブインターフェース32、磁気ディスクドライブインターフェース33、および光ディスクドライブインターフェース34によって、システムバス23に接続される。ドライブおよびそれらの関連付けられたコンピュータ読取り可能媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、およびコンピュータ20に関する他のデータの不揮発性記憶装置を提供する。当業者は、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)などの、コンピュータがアクセス可能なデータを格納できる任意のタイプのコンピュータ読取り可能媒体が例示的な動作環境で使用できることを理解されたい。
【0020】
オペレーティングシステム35、1つ以上のアプリケーションプログラム36、他のプログラムモジュール37、およびプログラムデータ38を含むいくつかのプログラムモジュールが、ハードディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25に格納可能である。ユーザは、キーボード40およびポインティングデバイス42などの入力デバイスを介して、コマンドおよび情報をパーソナルコンピュータ20に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用アンテナ、スキャナなどが含まれる。これらおよび他の入力デバイスは、システムバスに結合されたシリアルポートインターフェース46を介して処理ユニット21に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースによって接続することもできる。モニタ47または他のタイプのディスプレイデバイスも、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続される。典型的にコンピュータには、モニタに加えて、スピーカおよびプリンタなどの他の周辺出力デバイス(図示せず)が含まれる。
【0021】
コンピュータ20は、リモートコンピュータ49などの1つ以上のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作可能である。これらの論理接続は、コンピュータ20に結合されたかまたはその一部である通信デバイスによって達成されるが、本発明は、特定タイプの通信デバイスに限定されるものではない。リモートコンピュータ49は、他のコンピュータ、サーバ、ルータ、ネットワークPC、クライアント、ピアデバイス、または他の共通ネットワークノードであってよく、図1ではメモリ記憶デバイス50のみが記載されているが、典型的には、コンピュータ20に関して上記で述べた要素の多くまたはすべてを含む。図1Aに示された論理接続には、ローカルエリアネットワーク(LAN)51およびワイドエリアネットワーク(WAN)52が含まれる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでよく見られるものである。
【0022】
LANネットワーキング環境で使用される場合、コンピュータ20は、通信デバイスの一種であるネットワークインターフェースまたはアダプタ53を介してローカルネットワーク51に接続される。WANネットワーキング環境で使用される場合、典型的にコンピュータ20には、インターネットなどのワイドエリアネットワーク52を介した通信を確立するための、モデム54、一種の通信デバイス、または任意の他のタイプの通信デバイスが含まれる。モデム54は内蔵型でも外付けでもよく、シリアルポートインターフェース46を介してシステムバス23に接続される。ネットワーク化された環境では、パーソナルコンピュータ20に関して、あるいはその一部として示されたプログラムモジュールをリモートメモリ記憶デバイスに格納することができる。図示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するためには、他の手段および通信デバイスが使用可能であることを理解されよう。
【0023】
以上、共に使用すると本発明の実施形態が実施可能となるハードウェアおよび動作環境について説明してきた。共に使用すると本発明の実施形態が実施可能となるコンピュータは、従来型コンピュータ、分散型コンピュータ、または任意の他のタイプのコンピュータであってよく、本発明はこれらに限定されるものではない。こうしたコンピュータには、典型的に、処理装置として1つ以上の処理ユニットと、メモリとしてコンピュータ読取り可能媒体とが含まれる。コンピュータは、ネットワークアダプタまたはモデムなどの通信デバイスを含むことも可能であるため、他のコンピュータと通信上で結合することができる。
【0024】
好適なクライアントコンピュータの一実施形態例は、特許文献1に記載されており、図1Bでは加入者ユニット124として図示されている。加入者ユニット124のCPU140は、次に簡単に説明するように、コンピュータにロードされているブートブロックおよびOSコンポーネントのアイデンティティを認証し、このアイデンティティに基づいて、引用符付け(quoting)および安全保護記憶装置動作を提供することができる。加入者ユニット124に関する様々な実施形態の詳細な説明は、関連する出願に記載されている。
【0025】
CPU140は処理装置160を備えており、暗号化アクセラレータ162を備えることもできる。CPU140は、一般に暗号化機能に関連する集中的な数学計算を支援するアクセラレータ162を使用するかまたは使用せずに、署名、暗号化、復号、および認証などの暗号化機能を実施することができる。
【0026】
CPU製造業者は、CPU140に、CPUに固有の公開鍵と秘密鍵のペア164を備え付ける。考察のために、CPUの公開鍵を「KCPU」と呼び、対応する秘密鍵を「KCPU-1」と呼ぶ。他の物理的実施には、メインCPUがアクセス権を有する外部デバイス上に鍵を格納することが含まれる(格納された秘密情報には、任意アプリケーションまたはオペレーティングシステムコードがアクセスすることはできない)。秘密鍵は決して明らかにされることがなく、以下で論じるように、コンテンツプロバイダからのチャレンジ(challenge)に応じるときなどに、様式化されたステートメントに署名するという特有の目的のためにのみ使用される。
【0027】
製造業者は、周知の仕様に従ってCPUを生産したことを保証する署名済み証明書166も発行する。一般に、証明書は、製造業者が鍵ペア164を作成し、その鍵ペアをCPU140に配置し、その後秘密鍵「KCPU-1」の独自の知識を破棄したことを保証するものである。この方法では、CPUのみがCPUの秘密鍵KCPU-1を知っており、同じ鍵は他のCPUに発行されず、製造業者はその記録をいっさい保持しない。証明書は、原則的に、処理装置に関連付けられた別の物理デバイス上に格納することが可能であるが、論理的には対応する鍵を備えた処理装置に属したままである。
【0028】
製造業者は公開および秘密の署名鍵、KMFRおよびKMFR-1のペアを有する。秘密鍵KMFR-1を知っているのは製造業者だけであるが、公開鍵KMFRは大衆が入手することができる。製造業者の証明書166には、製造業者の公開鍵KMFR、CPUの公開鍵KCPU、および前述の証拠が含まれる。製造業者は、その秘密署名鍵KMFR-1を使用して、以下のように証明書に署名する。
【0029】
Mfr.Certificate=(KMFR,Certifies−for−Boot,KCPU),signed by KMFR-1
述語(predicate)「certifies−for−boot」は、CPUおよびCPU鍵ペアが周知の仕様に従って作成されたことを、製造業者が誓約するものである。この誓約は、さらに、以下でより詳細に説明するように、CPUが認証済みのブート手順を正しく実行できることを言明するものである。製造業者証明書166には大衆がアクセス可能であるが、製造業者の秘密鍵KMFR-1を知らなければ偽造することはできない。
【0030】
証明書のチェーンは、中間証明書および追加の鍵ペアを使用して、製造業者の証明書から拡張することができる。製造業者の証明書の代わりにチェーン内の中間証明書を使用して検証が実行されると、重要な「ルート」鍵ペア、すなわちKCPU/KCPU-1およびKMFR/KMFR-1を頻繁に使用することが極めて少なくなるため、ルート鍵が盗まれる確率も少なくなる。
【0031】
CPU140は、内部ソフトウェアアイデンティティレジスタ(SIR)168を有し、これが、認証済みオペレーティングシステム180のアイデンティティ、またはオペレーティングシステム180の認証が不可能であるとCPUが判断した場合は所定の偽の値(例えばゼロ)を含む。オペレーティングシステム(OS)180はメモリ142に格納され、CPU140で実行される。オペレーティングシステム180は、ブート動作時にCPUに対してオペレーティングシステムを認証するのに使用されるコードブロック182を有する。ブートブロック182は、オペレーティングシステムまたはオペレーティングシステムのクラス(例えば同一の製造業者によって署名されたもの)を一意に決定する。
【0032】
システムレベルの概要
本発明の例示的実施形態の動作のシステムレベルの概要について、図2の参照によって説明する。図1Aのクライアントコンピュータ20などの加入者コンピュータ200が、WAN52などのワイドエリアネットワークを介してリモートコンピュータ49などのコンテンツプロバイダのサーバコンピュータ220に接続される。図2では、加入者コンピュータ200およびコンテンツプロバイダ220のコンポーネントによって実施されるプロセスが、矢印で示されている。これらプロセスの多くには、公開/秘密鍵ペア、デジタル署名、デジタル証明書、および/または暗号アルゴリズム、あるいはこれら標準の暗号化機能の組み合わせのいずれかが組み込まれている。こうした機能は、以下の記述にある加入者コンピュータのCPUによって提供されるものと想定されるが、当業者であればすぐに理解されるように、他の周知の暗号メカニズムによって提供される場合もある。
【0033】
図2に示された例示的実施形態では、加入者コンピュータ200で実行中のオペレーティングシステムのアイデンティティをコンテンツプロバイダ220に対して証明するために、コンポーネント証明書およびブート証明書の組合せが使用される。各コンポーネント証明書は、対応するコンポーネントの妥当性およびセキュリティをブート機関が保証していることを示すために、秘密鍵を使用して、ブート機関によって発行および署名される。各ブート機関は、コンポーネント証明書上の署名を検証するのに必要な公開鍵を含むブート証明書も発行する。クライアントコンピュータ200がブートされると、ロードされたコンポーネントを検証するために、ブート機関の特定の組合せが選択される。図2では、以下の考察をわかりやすくするために、2つのコンポーネント証明書および2つのブート証明書のみが示されている。当業者であれば、実際には、通常2つより多くのコンポーネント証明書が使用されること、および異なる数のブート証明書が等しく適用可能であることが容易に理解されよう。
【0034】
オペレーティングシステム211のブートブロック(基本コンポーネント)は、オペレーティングシステムのベンダによって署名され、ベンダによって発行されたブート証明書201を使用して検証されたコンポーネント証明書205に関連付けられる。ハードウェアデバイスドライバなど、コンピュータ200を動作させるのに必要な追加のソフトウェアコンポーネントは、コンポーネント証明書207に関連付けられる。ソフトウェアコンポーネントのコンポーネント証明書207は、独立したブート機関によって署名され、独立したブート機関によって発行されたブート証明書203を使用して検証される。
【0035】
クライアントコンピュータ200がブートされると、オペレーティングシステム211用のブートローダ209が、ブート証明書201、203に対して、ロードされる各コンポーネントのコンポーネント証明書を検証する。結果として生じるオペレーティングシステム211のアイデンティティは、ブートブロックとブート証明書201、203の組合せの暗号ダイジェストであり、以前に図1BでSIR168について説明したように、内部ソフトウェアアイデンティティレジスタ(SIR)213に記録される。検証できないコンポーネントがロードされると、アイデンティティは、未検証オペレーティングシステムであることを示すデフォルト値に設定される。
【0036】
加入者コンピュータ200がプロバイダ220にコンテンツ221のダウンロードを要求すると、コンテンツプロバイダ220は、現在のオペレーティングシステム211のコンポーネントを検証するのに使用されるブート証明書を要求するチャレンジメッセージ(「nonce」)を加入者コンピュータ200に伝送する。加入者コンピュータ200は、ブート証明書201、203、SIR213の現在の値、およびnonceを含む認証メッセージを伝送する。加入者コンピュータは、そのCPUの秘密鍵を使用して値に署名することにより、SIR213のアイデンティティを保証する。
【0037】
コンテンツプロバイダ220は、加入者コンピュータ200との信用関係を確立するべきであるかどうかを判定するために、証明書201、203およびアイデンティティを検査する。確立すべきである場合、コンテンツプロバイダ220はコンテンツを加入者コンピュータ200にダウンロードする。コンテンツが永久に加入者コンピュータ200に格納されるものである場合、オペレーティングシステム211はコンテンツを記憶デバイス215に書き込み、コンテンツへの未許可のアクセスを防ぐために、格納されたコンテンツすなわち「秘密情報」217のアイデンティティへのアクセスに鍵を掛ける。デバイス215は、ディスクドライブとして図2に示されているが、こうした図は、デバイスの範囲を安全保護された記憶装置として働くことに限定する意図で示されたものではない。
【0038】
例示的実施形態では、各コンポーネント証明書は限定期間内で有効であり、各ブート証明書には発行日が記載されている。証明書間の対話は、図3で時間線を使用して示されているように、相対日付に基づいている。ブート証明書301には時間マーク1の発行日があり、ブート証明書302には時間マーク4の発行日がある。コンポーネント証明書303は時間マーク5、コンポーネント証明書304は時間マーク3、コンポーネント証明書305は時間マーク2、コンポーネント証明書306は時間マーク6で満了する。時間マーク1から4の間の任意の時間に加入者コンピュータ200がブートされると、ロードされるコンポーネントに関する各コンポーネント証明書の満了日を、ブート証明書の発行日に照らしてチェックする。コンポーネント証明書が発行日時点で有効である限り、コンポーネントはロードされる。したがって、コンポーネント証明書303、304、305、306に関連付けられたコンポーネントは、ブート証明書301を使用しているときには常時ロードされ、コンピュータは、検証済みオペレーティングシステムに常時ブート可能となる。
【0039】
ただし、ブート証明書302を使用してブートする場合、コンポーネント証明書304、305の有効期間がブート証明書302の発行日以前に満了しているため、これらに関連付けられたコンポーネントを検証することはできない。これらのコンポーネントをロードしなければならない場合、オペレーティングシステムのアイデンティティは、未検証オペレーティングシステムの値に設定される。新しいコンポーネント証明書は、ブート証明書302の下で、検証済みオペレーティングシステム内のコンポーネントをロードする必要がある。新しいコンポーネント証明書を取得するプロセスはオペレーティングシステムによって自動的に処理され、これについては次のセクションで説明する。
【0040】
関連付けられたコンポーネント証明書の満了日以前は、特定バージョンのコンポーネントが脆弱(vulnerability)であることがわかっているため、本発明の代替実施形態では、各ブート証明書に廃棄リストを関連付けている。廃棄リストにコンポーネントが掲載された場合、ブート証明書はそのコンポーネントの更新済みバージョンが取得されるまで、そのコンポーネントを検証しない。以前と同様に、未検証コンポーネントがロードされる場合、アイデンティティは未検証値に設定される。一実施形態では、廃棄リストに、更新済みバージョンのコンポーネントのオンラインアドレス(URL)も含まれるため、次のセクションで説明するように、オペレーティングシステムは新しいバージョンを自動的に取得できる。脆弱な各コンポーネントがその名前およびバージョンまたはその暗号ダイジェストで識別される廃棄リストの一実施形態例については、以下でより詳細に説明する。
【0041】
1つ以上のブート証明書の有効期間が満了しているために、コンテンツプロバイダがコンテンツのダウンロードを拒否した場合、現行のオペレーティングシステムは、後で発行されたブート証明書を取得して、新しいブート証明書の下でそれ以降のブート時に使用することができる。既存のコンテンツは、オペレーティングシステムのアイデンティティを介して安全保護されているため、新しいブート証明書を使用してブートすると、コンテンツにアクセスできないことになる。したがって現行のオペレーティングシステムは、システムがリブートされる前に、新しいアイデンティティを使用してコンテンツを格納しなおす。後で発行されたブート証明書を取得してコンテンツの安全保護をやり直すプロセスについても、次のセクションで説明する。
【0042】
以上、本発明の例示的実施形態の動作のシステムレベルの概要について、詳細に述べてきた。ブートドメインはクライアントの加入者コンピュータ上で作成され、ブート証明書、コンポーネント証明書、および格納された秘密情報によって定義される。加入者コンピュータにロードされるソフトウェアコンポーネントは、指定されたブート規則に従って、証明書を使用して検証される。オペレーティングシステムのアイデンティティは、コンポーネントの検証に使用されるブート証明書を反映するように作成される。コンテンツプロバイダは、オペレーティングシステムのアイデンティティおよびブート証明書に基づいて、そのオペレーティングシステムを信用してもよいかどうかを判定する。本発明はブート証明書とコンポーネント証明書のいずれかの特定の組合せに限定されるものではないが、わかりやすくするために、オペレーティングシステムが2つのブート証明書および2つのコンポーネント証明書を使用しているものとして説明してきた。
【0043】
本発明の例示的実施形態のメソッド
前のセクションでは、本発明の例示的実施形態の動作のシステムレベルの概要について説明した。このセクションでは、こうした例示的実施形態のクライアント、すなわち加入者コンピュータによって実行される特定のメソッドについて、一連の流れ図を参照しながら説明する。クライアントによって実行されるメソッドは、コンピュータ実行可能命令からなるコンピュータプログラムを構成する。流れ図を参照しながらメソッドについて説明していくことで、当業者であれば、好適にコンピュータ化されたクライアント(コンピュータ読取り可能媒体からの命令を実行するクライアントの処理装置)でメソッドを実施するためのこうした命令を含む、こうしたプログラムを開発することができるようになる。
【0044】
初めに図4を参照すると、本発明の例示的実施形態に従って加入者コンピュータによって実行されるメソッドの流れ図が示されている。このメソッドには、ブートプロセスの一部として実行する必要のある行為が含まれている。ブートプロセスが開始されると、ブートマネージャがユーザに対して、オペレーティングシステムコンポーネントを検証するのに使用できるブート証明書を選択するように提示する(ブロック401)。ユーザが所望のブート証明書を選択すると、ブートローダは、ブートブロックおよび選択されたブート証明書に基づいて、検証済みオペレーティングシステムのアイデンティティを作成する(ブロック403)。ロードされる各コンポーネントは、そのコンポーネント証明書をブート証明書の1つと照合することによって検証される(ブロック405)。検証プロセスでは、コンポーネント証明書の署名(ブロック407)、コンポーネント証明書の満了日(ブロック409)、および廃棄リスト(ブロック411)をチェックして、コンポーネントがロードできるかどうかを判定する。コンポーネント証明書が3つのテストすべてに合格した場合、すなわち、ブート規則を満たしている場合に、対応するコンポーネントがロードされる(ブロック413)。
【0045】
コンポーネント証明書がブート規則の1つを満たしていない場合、ブートローダはユーザに対して、対応するコンポーネントのローディング選択を提示し、未検証のオペレーティングシステムにブートするか、またはそのコンポーネントをロードしない(ブロック415)。コンポーネントが必要であれば、ブートローダは、そのオペレーティングシステムのアイデンティティを、未検証オペレーティングシステムであることを示す値に設定し(ブロック417)、コンポーネントをロードする(ブロック413)。ユーザがコンポーネントをロードしないことを選択すると、検証済みアイデンティティは保存される。
【0046】
ブートプロセスは、すべてのコンポーネントがロードされるまで、ブート規則に従って進められる(ブロック419)。
【0047】
オペレーティングシステムのブートが完了したときに、1つ以上のコンポーネントが検証できていない場合、図5および6にそれぞれ示されているように、有効なコンポーネント証明書または更新済みコンポーネントのいずれかが取得できる機会がユーザに与えられる。
【0048】
コンポーネント証明書が満了しており、ユーザが新しい証明書を取得することを選択した場合(図5のブロック501)、オペレーティングシステムは、満了した証明書に署名したブート機関に対して新しいコンポーネント証明書を要求する(ブロック503)。新しいコンポーネント証明書を受け取ると、後続のブートで使用するために、満了した証明書の代わりに格納される(ブロック505)。
【0049】
コンポーネントのバージョンが廃棄リストに掲載されており、ユーザが更新済みバージョンの取得を選択した場合(図6のブロック601)、オペレーティングシステムは、コンポーネントに関連付けられたダウンロードサイトに対して更新済みバージョンを要求する(ブロック603)。一実施形態では、サイトのURLが廃棄リストに格納されている。更新済みバージョンの新しいコンポーネント証明書もダウンロードされる。更新済みコンポーネントの証明書および新しいコンポーネントの証明書は、次回ブート時の検証およびロードのために格納される(ブロック605)。
【0050】
図7Aおよび7Bは、プロバイダにコンテンツを要求する際に、加入者コンピュータが実行するプロセスを示す図である。加入者コンピュータは、プロバイダに要求メッセージを送り(ブロック701)、応答でチャレンジnonceを受け取る(ブロック703)。加入者コンピュータは、ブート証明書、オペレーティングシステムアイデンティティ、およびnonceを含む認証メッセージを、プロバイダに返送する(ブロック705)。
【0051】
プロバイダは、ブート証明書およびオペレーティングシステムアイデンティティに基づいてオペレーティングシステムを信用した場合(ブロック707)、加入者コンピュータにコンテンツをダウンロードし(ブロック709)、加入者コンピュータは、このオペレーティングシステムアイデンティティに基づいて、パーマネント記憶装置上でコンテンツを安全に保護する(ブロック711)。
【0052】
プロバイダが、コンポーネントを検証するのに使用されるブート証明書が満了日を過ぎていると判断した場合、加入者コンピュータはユーザに対して、新しいブート証明書を取得する機会を提示する(ブロック713)。加入者コンピュータは、対応するブート機関に対して新しいブート証明書を要求し(ブロック715)、古いバージョンを上書きせずに新しいブート証明書を格納する(ブロック717)。
【0053】
現行のオペレーティングシステムは、新しいブート証明書を発行したブート機関によって署名されたそれぞれのコンポーネント証明書を検証することによって、新しいブート証明書によって定義されたオペレーティングシステムがブートするかどうかを判定する(ブロック719)。新しいブート証明書と照合した際に、1つ以上のコンポーネント証明書が満了しているため(ブロック735)、あるいは、1つ以上のコンポーネントが新しいブート証明書に関連付けられた廃棄リストに掲載されているバージョンであるため(ブロック737)に、新しいオペレーティングシステムが不合格になる場合がある。新しいコンポーネント証明書は、図5に関連して上述したプロセスを使用して取得され、更新済みコンポーネントは、図6に関連して上述したプロセスを使用して取得される。
【0054】
現行のオペレーティングシステムは、新しいオペレーティングシステムがブートされると判断した場合、新しいブートコンポーネントに基づいて新しいオペレーティングシステムアイデンティティを作成する(ブロック721)。それぞれのオペレーティングシステムアイデンティティは関連付けられたブートドメインにある秘密情報を制御するので、新しいオペレーティングシステムアイデンティティに対して新しいブートドメインを作成しなければならない。それぞれの秘密情報は、新しいブートドメインの一部となるかどうかを判定するために評価される(ブロック723)。新しいブートドメインに関する秘密情報の選択は、新しいブート証明書を現行のブート証明書としてブート機関から取得すること(ブロック725)、新しいブート証明書を現行のブート証明書の後に発行すること(ブロック727)、並びに、コンテンツが新しいブート証明書の発行日以前に満了しないこと(ブロック729)という、3つの規則で管理される。資格付与された秘密情報が現行のオペレーティングシステムアイデンティティを使用して開封(unseal)され、コンテンツのコピーが作成され、そのコピーが新しいオペレーティングシステムアイデンティティを使用して再度密封(re-seal)される(ブロック731)。このプロセスは、適切な秘密情報がすべて新しいブートドメイン内に密封(seal)されるまで続行する(ブロック733)。特定のブート証明書の組合せの下で次に加入者コンピュータがブートされたときに、新しいブート証明書が有効となり、新しいブートドメイン内の秘密情報にアクセスできるようになる。当業者であれば、この手順が通常のオペレーティングシステム更新プロセスの一部として自動化できるものであることを、容易に理解されよう。
【0055】
一実施形態では、古いブートドメイン内の秘密情報は、新しいブート証明書の下で最初にブートが成功した時点で削除される。代替実施形態では、満了となったコンテンツだけが削除される。
【0056】
以上、本発明の例示的実施形態のクライアントによって実行される特定のメソッドについて説明した。クライアントコンピュータによって実行されるメソッドは、400〜417、501〜505、601〜605、および701〜737のすべての行為を含む流れ図を参照しながら示した。
【0057】
1.Microsoft(登録商標)「WINDOWS(登録商標)」での実施
この詳細な説明のセクションでは、本発明の特定の実施について、Microsoft(登録商標) Corporationのオペレーティングシステムである「WINDOWS(登録商標)」ファミリに関して説明する。Microsoft(登録商標)は、様々なバージョンの「WINDOWS(登録商標)」オペレーティングシステムのブートブロックに関するブート証明書およびコンポーネント証明書を発行することで、ブート機関としての役割を果たす。「WINDOWS(登録商標)」オペレーティングシステムのブートマネージャおよびブートローダは、前のセクションで説明したメソッドに従って動作するように拡張される。「WINDOWS(登録商標)」オペレーティングシステムの実施で使用するためのブート証明書およびコンポーネント証明書の例示的実施形態は、それぞれ、図8Aおよび9に示されている。廃棄リストエントリの例示的実施形態は、図8Bに示されている。追加の証明書、時間証明書の例示的実施形態は、図10に示されている。
【0058】
初めに図8Aを見ると、ブート証明書800の一実施形態には、5つの定数フィールドと3つのオプションフィールドが含まれる。定数フィールドには、ブート機関の識別子801、証明書の発行日802、証明書のダイジェスト803、ブート機関の公開鍵804、および証明書800を発行したブート機関、すなわちフィールド801で識別されたブート機関のデジタル署名808が含まれる。公開鍵804は、ブート証明書800上のデジタル署名808を検証する場合、並びに同一のブート機関によって署名されたコンポーネント証明書を検証する場合に使用される。
【0059】
一実施形態では、ブート証明書800にはブート証明書の満了日805が含まれる。「WINDOWS(登録商標)」オペレーティングシステムは、この満了日805を使用して、コンテンツプロバイダからの通知がなくとも、新しいブート証明書が必要であるときを判定する。
【0060】
代替実施形態では、ブート証明書800には廃棄リスト806が含まれる。廃棄リストの機能については前のセクションで説明した。廃棄リスト806のエントリの例示的実施形態が、図8Bに示されている。各エントリ810には、廃棄されたコンポーネントの名前およびバージョン811、廃棄されたコンポーネントの暗号ダイジェスト812、並びにコンポーネントの更新済みバージョンを含むダウンロードサイトのURL813が含まれる。
【0061】
他の実施形態では、ブート証明書800に、フィールド801によって識別されたブート機関が署名した各コンポーネントをロードする前に、ブートプロセスによって実行されるコマンドスクリプト形式のブート規則807が含まれる。他の代替実施形態では、ブート規則807は一連のオペレーティングシステムコマンドである。
【0062】
図9に示されるコンポーネント証明書の例示的実施形態は、「WINDOWS(登録商標)」オペレーティングシステムにロードするためのコンポーネントを保証するすべてのブート機関によって実施される。コンポーネント証明書900には、ブート機関のアイデンティティ901、対応するコンポーネントの名前およびバージョン902、コンポーネントのダイジェスト903、コンポーネント証明書の発行日904、証明書の満了日904、およびブート機関のデジタル署名906が含まれる。ブート機関のブート証明書800にある公開鍵は、コンポーネント証明書のデジタル署名906を検証する際に使用される。
【0063】
ブート証明書800に廃棄リスト806が含まれる場合、「WINDOWS(登録商標)」オペレーティングシステムは、コンポーネント証明書にある名前およびバージョン902並びにダイジェスト903と、廃棄リスト806にあるそれぞれのエントリ810とを照合して、コンポーネントが廃棄されたものかどうかを判定する。コンポーネントが廃棄されている場合、ユーザが選択したときに、エントリ810にあるURLアドレスから新しいバージョンが取得される。
【0064】
「WINDOWS(登録商標)」オペレーティングシステムの実施では、コンテンツの時間制限をブート証明書のみを使用した場合に可能な期間よりも短く設定することができる。図10に示した時間証明1000の例示的実施形態には、ブート証明書800と同じ定数フィールドが含まれるが、時間証明書には発行日および発行時間1002が含まれる点は異なっている。時間証明書1000は、ブート証明書と共にオペレーティングシステムアイデンティティに折り込まれ、認証メッセージの一部としてコンテンツプロバイダに送信される。時間証明書1000を使用することは、発行日および発行時間1002より後の日付および時間にコンピュータがブートされたことを、「WINDOWS(登録商標)」オペレーティングシステムが保証するのと等価である。
【0065】
コンテンツプロバイダは、すぐに満了してしまうコンテンツをダウンロードする前に、現行の時間証明書があれば、それが古すぎるかどうかを判定する。古すぎる場合、または現行の時間証明書がない場合、加入者コンピュータは新しい時間証明書を獲得し、新しい時間証明書を含むオペレーティングシステムアイデンティティの下でリブートしなければならない。時間証明書はオペレーティングシステムアイデンティティの一部であるため、古いアイデンティティの下で密封された秘密情報は、ブート証明書に関して前のセクションで説明したように、新しいブートドメインにコピーするために評価しなければならない。この場合、既存のコンテンツの満了日は、時間証明書の発行日および発行時間に基づいて決定される。さらに、新しいオペレーティングシステムアイデンティティが有効になった時点で、満了済みのコンテンツは削除される。
【0066】
結論
以上、クライアントのブートドメインおよびブート規則について説明した。本明細書では、特定の実施形態について図示および説明してきたが、当業者であれば、図示された特定の実施形態が、同じ目的を達成するように計算された任意の配置構成に置き換えられることを理解されよう。
【0067】
例えば、当業者であれば、任意の組織がブート機関としての役割を果たせることを理解されよう。どのブート機関を信用するかは、それぞれ個々のコンテンツプロバイダが決めることである。さらに、当業者であれば、ブート証明書のバージョンを変更するには、ブートドメイン内のすべての秘密情報を開封し、再度密封しなければならないことから、コンポーネント証明書の有効期間が典型的にはブート証明書のそれよりも短くなっていることを理解されよう。
【0068】
さらに、本発明は、コンピュータの電源が投入された結果としてオペレーティングシステムをロードするという点に関して説明してきたが、当業者であれば、本発明が、既に実行中のオペレーティングシステムの制御下でオペレーティングシステムをロードするか、または未検証のオペレーティングシステムを実行中のコンピュータ上にある保護されたアドレス領域にオペレーティングシステムをロードするためにも使用できるものであることを理解されよう。
【0069】
本明細書で使用された専門用語は、コンピュータを機能させるために異なるソフトウェアコンポーネントをロードしなければならないすべてのオペレーティングシステム環境を含むことを意味するものである。
【技術分野】
【0001】
本発明は、一般に、コンピュータのオペレーティングシステムに関し、より具体的には、オペレーティングシステムによってロードされたコンポーネントを検証することに関する。
【背景技術】
【0002】
コンテンツがますますデジタル形式で送達されるようになり、デジタルコンテンツは、ますますイントラネット、インターネット、ケーブルTVネットワークなど専用ネットワークおよび公衆ネットワークを介してオンラインで送達されるようになっている。クライアントにとっては、デジタル形式によってより複雑化されたコンテンツが可能となり、オンライン送達によって適時性および利便性が向上する。発行者にとってデジタルコンテンツは、送達コストを引き下げてくれるものでもある。残念なことに発行者の考えでは、これらの価値ある特性よりも、オンラインでの情報送達によって、発行者側の負担および損害をもたらしてオリジナルと遜色のないデジタルコンテンツの取得およびコンテンツの違法コピーが比較的容易に行われるという、相対する欠点の方が重視されることが多い。
【0003】
コンテンツの盗難や不正使用を防ぐために、コンテンツプロバイダは、信用できるソフトウェアに、したがって加入者コンピュータ上で実行するソフトウェアが信用できることを証明可能な加入者コンピュータにのみ、コンテンツをダウンロードさせることになる。この信用という概念は、その性質上、信用できるコンポーネントのみをロードし、何らかの種類の安全保護記憶装置(secure storage)を提供するコンピュータ上で実行中の、信用できるオペレーティングシステムを有することを前提としている。そこで、コンテンツプロバイダがオペレーティングシステムを信用してコンテンツを与えるかどうかを聡明に判断できるような特性を使用して、オペレーティングシステムを識別することが1つの問題となる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第7,174,457号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1は、オペレーティングシステムによってロードされるすべてのソフトウェアコンポーネントの暗号ダイジェスト(digest)である一意のオペレーティングシステム識別子の一実施形態について開示している。ただし、コンピュータには、膨大な数の異なるハードウェアコンポーネントが含まれており、対応するサポートソフトウェアコンポーネントは、機能強化および問題解決のために頻繁に更新され、その結果、オペレーティングシステムのアイデンティティ(identity)数はほぼ無限となる。コンテンツプロバイダは、信用できるこうしたアイデンティティのリストを維持するか、またはこうしたリストの維持を第三者に委託することができるが、当分野で必要とされるのは、ユーザが入手可能なソフトウェアコンポーネントの選択肢を制限することなく、信用できるオペレーティングシステムの識別数を減らす方法である。
【0006】
本発明は、前述の欠点、短所、および問題点を対象とするものであり、以下の明細書を読み、研究することによって理解されよう。
【課題を解決するための手段】
【0007】
クライアントコンピュータ上の検証済みのオペレーティングシステムにロードされる各ソフトウェアコンポーネントは、ブート証明書に関するブート規則セットを満たすものでなければならない。適切なブート証明書は、コンピュータのブートごとに、ユーザによってあるいはデフォルトで選択される。検証済みオペレーティングシステムの識別子は、ブート証明書から作成される。ブート証明書は、ブート証明書の下でブートされたオペレーティングシステムの妥当性を証明するブート機関(boot authority)によって発行(publish)および署名される。オペレーティングシステムの各ソフトウェアコンポーネントは、ブート証明書に署名した同一のブート機関によって発行および署名されたコンポーネント証明書と関連付けられる。ブート規則は、コンポーネントおよびブート証明書の内容に基づいて、ソフトウェアコンポーネントの妥当性を決定する。
【0008】
クライアントコンピュータは、検証済みオペレーティングシステムのアイデンティティおよびブート証明書を、コンテンツプロバイダなどのサーバコンピュータに伝送し、コンテンツプロバイダは、そのコンテンツを与える検証済みオペレーティングシステムが信用できるかどうかを判定する。ダウンロードされたデータは、検証済みオペレーティングシステムの識別子から導出された鍵を介して、パーマネント記憶装置上で安全に保護される。ブート証明書、コンポーネント証明書、および安全保護されたコンテンツによってブートドメインが定義される。
【0009】
2つまたはそれ以上のブートコンポーネントの組み合わせを使用して、検証済みのオペレーティングシステムをブートすることができる。ブート証明書およびコンポーネント証明書の更新、基礎となるコンポーネント、並びに検証済みオペレーティングシステムのアイデンティティおよびそのブートドメインに与える影響などについても説明する。
【0010】
コンテンツプロバイダは、どのブート機関およびそれらの機関からのどのブート証明書を信用するかを決めるだけでよいため、少数のアイデンティティを追跡するだけでよい。クライアントコンピュータが制限されているのは、検証済みオペレーティングシステムにロードされたコンポーネントが、コンテンツプロバイダによって信用されたブート機関のうち1つによって証明されなければならないことだけである。クライアントコンピュータは、検証済みでないオペレーティングシステムの下で動作することができるが、検証済みブートドメインの下で格納されたデータにはアクセスすることができない。
【0011】
本発明では、様々な範囲のシステム、クライアント、サーバ、メソッド、およびコンピュータ読取り可能媒体について説明する。図面を参照し、以下の詳細な説明を読めば、この概要で説明した本発明の態様および利点に加えて、本発明のその他の態様および利点が明らかになろう。
【図面の簡単な説明】
【0012】
【図1A】共に使用すると本発明の実施形態が実施可能となるハードウェアおよび動作環境を示す図である。
【図1B】本発明の例示的実施形態で使用するためのクライアントコンピュータを示す図である。
【図2】本発明の例示的実施形態のシステムレベルの概要を示す図である。
【図3】図2に示された本発明の例示的実施形態で使用されるブート証明書とコンポーネント証明書との間の対話を示す時間線図である。
【図4】本発明の例示的実施形態により、ブート時にクライアントが実行するメソッドを示す流れ図である。
【図5】本発明の例示的実施形態により、新しいコンポーネント証明書を取得する際にクライアントが実行するメソッドを示す流れ図である。
【図6】本発明の例示的実施形態により、更新されたコンポーネント証明書を取得する際にクライアントが実行するメソッドを示す流れ図である。
【図7A】本発明の例示的実施形態により、ダウンロードされたコンテンツを取得する際にクライアントが実行するメソッドを示す流れ図である。
【図7B】本発明の例示的実施形態により、ダウンロードされたコンテンツを取得する際にクライアントが実行するメソッドを示す流れ図である。
【図8A】本発明の例示的実施で使用するための、ブート証明書のデータ構造を示す図である。
【図8B】本発明の例示的実施で使用するための廃棄リストエントリのデータ構造を示す図である。
【図9】本発明の例示的実施で使用するための、コンポーネント証明書のデータ構造を示す図である。
【図10】本発明の例示的実施で使用するための時間証明書のデータ構造を示す図である。
【発明を実施するための形態】
【0013】
以下の、本発明の例示的実施形態の詳細な説明では、本明細書の一部を形成する添付の図面を参照しており、本発明が実施可能な特有の例示的実施形態が例として示されている。これらの実施形態は、当業者であれば本発明が実施できる程度に詳細に記載されており、他の実施形態が利用可能であること、並びに本発明の精神または範囲を逸脱することなく論理的、機械的、電気的、および他の変更が実施可能であることが理解されよう。したがって、以下の詳細な説明は、限定的な意味を持つものではない。
【0014】
詳細な説明は、5つのセクションに分けられている。第1のセクションでは、共に使用すると本発明の実施形態が実施可能となるハードウェアおよび動作環境について説明する。第2のセクションでは、本発明のシステムレベルの概要が示される。第3のセクションでは、本発明の例示的実施形態に関するメソッドが提供される。第4のセクションでは、Microsoft(登録商標) Corporationのオペレーティングシステムである「WINDOWS(登録商標)」ファミリで使用するための、本発明の特定の実施形態について説明する。最後に第5のセクションでは、詳細な説明の結論が示される。
【0015】
ハードウェアおよび動作環境
図1Aは、共に使用すると本発明の実施形態が実施可能となるハードウェアおよび動作環境を示す図である。図1Aの記述は、共に使用すると本発明が実施可能となる好適なコンピュータハードウェアおよび好適なコンピューティング環境の簡単な概要について説明することを意図するものである。必須ではないが、本発明は、パーソナルコンピュータなどのコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈で説明される。一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。
【0016】
さらに、当業者であれば、本発明が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な大衆消費電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成でも実施可能であることを理解されよう。本発明は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される分散型コンピューティング環境でも実施可能である。分散型コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートのどちらのメモリ記憶デバイスに配置することも可能である。
【0017】
本発明を実施するための図1Aの例示的なハードウェアおよび動作環境には、コンピュータ20の形式の汎用コンピューティングデバイスが含まれており、これが、処理ユニット21、システムメモリ22、並びに、システムメモリを含む様々なシステムコンポーネントを処理ユニット21に結合するように動作可能なシステムバス23を含む。処理ユニット21は1つだけでも複数でもよいため、コンピュータ20の処理装置には、単一の中央処理ユニット(CPU)、または一般に並列処理環境と呼ばれる複数の処理ユニットが含まれる。コンピュータ20は、従来型コンピュータ、分散型コンピュータ、または任意の他のタイプのコンピュータであってよく、本発明はこれに限定されるものではない。
【0018】
システムバス23は、メモリバスまたはメモリ制御装置、周辺バス、および任意のバスアーキテクチャの変形を使用するローカルバスを含む、いくつかのタイプのバス構造のうちいずれであってもよい。システムメモリは、単にメモリと呼ぶことも可能であり、読み取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。起動時などにコンピュータ20内の要素間で情報を転送するのを助ける、基本ルーチンを含む基本入力出力システム(BIOS)26は、ROM24に格納される。さらにコンピュータ20には、図示されていないハードディスクとの間で読取りおよび書込みを実行するためのハードディスクドライブ27、取外し可能磁気ディスク29との間で読取りまたは書込みを実行するための磁気ディスクドライブ28、並びにCD−ROMまたは他の光媒体などの取外し可能光ディスク31との間で読取りまたは書込みを実行するための光ディスクドライブ30が含まれる。
【0019】
ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれ、ハードディスクドライブインターフェース32、磁気ディスクドライブインターフェース33、および光ディスクドライブインターフェース34によって、システムバス23に接続される。ドライブおよびそれらの関連付けられたコンピュータ読取り可能媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、およびコンピュータ20に関する他のデータの不揮発性記憶装置を提供する。当業者は、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)などの、コンピュータがアクセス可能なデータを格納できる任意のタイプのコンピュータ読取り可能媒体が例示的な動作環境で使用できることを理解されたい。
【0020】
オペレーティングシステム35、1つ以上のアプリケーションプログラム36、他のプログラムモジュール37、およびプログラムデータ38を含むいくつかのプログラムモジュールが、ハードディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25に格納可能である。ユーザは、キーボード40およびポインティングデバイス42などの入力デバイスを介して、コマンドおよび情報をパーソナルコンピュータ20に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用アンテナ、スキャナなどが含まれる。これらおよび他の入力デバイスは、システムバスに結合されたシリアルポートインターフェース46を介して処理ユニット21に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースによって接続することもできる。モニタ47または他のタイプのディスプレイデバイスも、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続される。典型的にコンピュータには、モニタに加えて、スピーカおよびプリンタなどの他の周辺出力デバイス(図示せず)が含まれる。
【0021】
コンピュータ20は、リモートコンピュータ49などの1つ以上のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作可能である。これらの論理接続は、コンピュータ20に結合されたかまたはその一部である通信デバイスによって達成されるが、本発明は、特定タイプの通信デバイスに限定されるものではない。リモートコンピュータ49は、他のコンピュータ、サーバ、ルータ、ネットワークPC、クライアント、ピアデバイス、または他の共通ネットワークノードであってよく、図1ではメモリ記憶デバイス50のみが記載されているが、典型的には、コンピュータ20に関して上記で述べた要素の多くまたはすべてを含む。図1Aに示された論理接続には、ローカルエリアネットワーク(LAN)51およびワイドエリアネットワーク(WAN)52が含まれる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでよく見られるものである。
【0022】
LANネットワーキング環境で使用される場合、コンピュータ20は、通信デバイスの一種であるネットワークインターフェースまたはアダプタ53を介してローカルネットワーク51に接続される。WANネットワーキング環境で使用される場合、典型的にコンピュータ20には、インターネットなどのワイドエリアネットワーク52を介した通信を確立するための、モデム54、一種の通信デバイス、または任意の他のタイプの通信デバイスが含まれる。モデム54は内蔵型でも外付けでもよく、シリアルポートインターフェース46を介してシステムバス23に接続される。ネットワーク化された環境では、パーソナルコンピュータ20に関して、あるいはその一部として示されたプログラムモジュールをリモートメモリ記憶デバイスに格納することができる。図示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するためには、他の手段および通信デバイスが使用可能であることを理解されよう。
【0023】
以上、共に使用すると本発明の実施形態が実施可能となるハードウェアおよび動作環境について説明してきた。共に使用すると本発明の実施形態が実施可能となるコンピュータは、従来型コンピュータ、分散型コンピュータ、または任意の他のタイプのコンピュータであってよく、本発明はこれらに限定されるものではない。こうしたコンピュータには、典型的に、処理装置として1つ以上の処理ユニットと、メモリとしてコンピュータ読取り可能媒体とが含まれる。コンピュータは、ネットワークアダプタまたはモデムなどの通信デバイスを含むことも可能であるため、他のコンピュータと通信上で結合することができる。
【0024】
好適なクライアントコンピュータの一実施形態例は、特許文献1に記載されており、図1Bでは加入者ユニット124として図示されている。加入者ユニット124のCPU140は、次に簡単に説明するように、コンピュータにロードされているブートブロックおよびOSコンポーネントのアイデンティティを認証し、このアイデンティティに基づいて、引用符付け(quoting)および安全保護記憶装置動作を提供することができる。加入者ユニット124に関する様々な実施形態の詳細な説明は、関連する出願に記載されている。
【0025】
CPU140は処理装置160を備えており、暗号化アクセラレータ162を備えることもできる。CPU140は、一般に暗号化機能に関連する集中的な数学計算を支援するアクセラレータ162を使用するかまたは使用せずに、署名、暗号化、復号、および認証などの暗号化機能を実施することができる。
【0026】
CPU製造業者は、CPU140に、CPUに固有の公開鍵と秘密鍵のペア164を備え付ける。考察のために、CPUの公開鍵を「KCPU」と呼び、対応する秘密鍵を「KCPU-1」と呼ぶ。他の物理的実施には、メインCPUがアクセス権を有する外部デバイス上に鍵を格納することが含まれる(格納された秘密情報には、任意アプリケーションまたはオペレーティングシステムコードがアクセスすることはできない)。秘密鍵は決して明らかにされることがなく、以下で論じるように、コンテンツプロバイダからのチャレンジ(challenge)に応じるときなどに、様式化されたステートメントに署名するという特有の目的のためにのみ使用される。
【0027】
製造業者は、周知の仕様に従ってCPUを生産したことを保証する署名済み証明書166も発行する。一般に、証明書は、製造業者が鍵ペア164を作成し、その鍵ペアをCPU140に配置し、その後秘密鍵「KCPU-1」の独自の知識を破棄したことを保証するものである。この方法では、CPUのみがCPUの秘密鍵KCPU-1を知っており、同じ鍵は他のCPUに発行されず、製造業者はその記録をいっさい保持しない。証明書は、原則的に、処理装置に関連付けられた別の物理デバイス上に格納することが可能であるが、論理的には対応する鍵を備えた処理装置に属したままである。
【0028】
製造業者は公開および秘密の署名鍵、KMFRおよびKMFR-1のペアを有する。秘密鍵KMFR-1を知っているのは製造業者だけであるが、公開鍵KMFRは大衆が入手することができる。製造業者の証明書166には、製造業者の公開鍵KMFR、CPUの公開鍵KCPU、および前述の証拠が含まれる。製造業者は、その秘密署名鍵KMFR-1を使用して、以下のように証明書に署名する。
【0029】
Mfr.Certificate=(KMFR,Certifies−for−Boot,KCPU),signed by KMFR-1
述語(predicate)「certifies−for−boot」は、CPUおよびCPU鍵ペアが周知の仕様に従って作成されたことを、製造業者が誓約するものである。この誓約は、さらに、以下でより詳細に説明するように、CPUが認証済みのブート手順を正しく実行できることを言明するものである。製造業者証明書166には大衆がアクセス可能であるが、製造業者の秘密鍵KMFR-1を知らなければ偽造することはできない。
【0030】
証明書のチェーンは、中間証明書および追加の鍵ペアを使用して、製造業者の証明書から拡張することができる。製造業者の証明書の代わりにチェーン内の中間証明書を使用して検証が実行されると、重要な「ルート」鍵ペア、すなわちKCPU/KCPU-1およびKMFR/KMFR-1を頻繁に使用することが極めて少なくなるため、ルート鍵が盗まれる確率も少なくなる。
【0031】
CPU140は、内部ソフトウェアアイデンティティレジスタ(SIR)168を有し、これが、認証済みオペレーティングシステム180のアイデンティティ、またはオペレーティングシステム180の認証が不可能であるとCPUが判断した場合は所定の偽の値(例えばゼロ)を含む。オペレーティングシステム(OS)180はメモリ142に格納され、CPU140で実行される。オペレーティングシステム180は、ブート動作時にCPUに対してオペレーティングシステムを認証するのに使用されるコードブロック182を有する。ブートブロック182は、オペレーティングシステムまたはオペレーティングシステムのクラス(例えば同一の製造業者によって署名されたもの)を一意に決定する。
【0032】
システムレベルの概要
本発明の例示的実施形態の動作のシステムレベルの概要について、図2の参照によって説明する。図1Aのクライアントコンピュータ20などの加入者コンピュータ200が、WAN52などのワイドエリアネットワークを介してリモートコンピュータ49などのコンテンツプロバイダのサーバコンピュータ220に接続される。図2では、加入者コンピュータ200およびコンテンツプロバイダ220のコンポーネントによって実施されるプロセスが、矢印で示されている。これらプロセスの多くには、公開/秘密鍵ペア、デジタル署名、デジタル証明書、および/または暗号アルゴリズム、あるいはこれら標準の暗号化機能の組み合わせのいずれかが組み込まれている。こうした機能は、以下の記述にある加入者コンピュータのCPUによって提供されるものと想定されるが、当業者であればすぐに理解されるように、他の周知の暗号メカニズムによって提供される場合もある。
【0033】
図2に示された例示的実施形態では、加入者コンピュータ200で実行中のオペレーティングシステムのアイデンティティをコンテンツプロバイダ220に対して証明するために、コンポーネント証明書およびブート証明書の組合せが使用される。各コンポーネント証明書は、対応するコンポーネントの妥当性およびセキュリティをブート機関が保証していることを示すために、秘密鍵を使用して、ブート機関によって発行および署名される。各ブート機関は、コンポーネント証明書上の署名を検証するのに必要な公開鍵を含むブート証明書も発行する。クライアントコンピュータ200がブートされると、ロードされたコンポーネントを検証するために、ブート機関の特定の組合せが選択される。図2では、以下の考察をわかりやすくするために、2つのコンポーネント証明書および2つのブート証明書のみが示されている。当業者であれば、実際には、通常2つより多くのコンポーネント証明書が使用されること、および異なる数のブート証明書が等しく適用可能であることが容易に理解されよう。
【0034】
オペレーティングシステム211のブートブロック(基本コンポーネント)は、オペレーティングシステムのベンダによって署名され、ベンダによって発行されたブート証明書201を使用して検証されたコンポーネント証明書205に関連付けられる。ハードウェアデバイスドライバなど、コンピュータ200を動作させるのに必要な追加のソフトウェアコンポーネントは、コンポーネント証明書207に関連付けられる。ソフトウェアコンポーネントのコンポーネント証明書207は、独立したブート機関によって署名され、独立したブート機関によって発行されたブート証明書203を使用して検証される。
【0035】
クライアントコンピュータ200がブートされると、オペレーティングシステム211用のブートローダ209が、ブート証明書201、203に対して、ロードされる各コンポーネントのコンポーネント証明書を検証する。結果として生じるオペレーティングシステム211のアイデンティティは、ブートブロックとブート証明書201、203の組合せの暗号ダイジェストであり、以前に図1BでSIR168について説明したように、内部ソフトウェアアイデンティティレジスタ(SIR)213に記録される。検証できないコンポーネントがロードされると、アイデンティティは、未検証オペレーティングシステムであることを示すデフォルト値に設定される。
【0036】
加入者コンピュータ200がプロバイダ220にコンテンツ221のダウンロードを要求すると、コンテンツプロバイダ220は、現在のオペレーティングシステム211のコンポーネントを検証するのに使用されるブート証明書を要求するチャレンジメッセージ(「nonce」)を加入者コンピュータ200に伝送する。加入者コンピュータ200は、ブート証明書201、203、SIR213の現在の値、およびnonceを含む認証メッセージを伝送する。加入者コンピュータは、そのCPUの秘密鍵を使用して値に署名することにより、SIR213のアイデンティティを保証する。
【0037】
コンテンツプロバイダ220は、加入者コンピュータ200との信用関係を確立するべきであるかどうかを判定するために、証明書201、203およびアイデンティティを検査する。確立すべきである場合、コンテンツプロバイダ220はコンテンツを加入者コンピュータ200にダウンロードする。コンテンツが永久に加入者コンピュータ200に格納されるものである場合、オペレーティングシステム211はコンテンツを記憶デバイス215に書き込み、コンテンツへの未許可のアクセスを防ぐために、格納されたコンテンツすなわち「秘密情報」217のアイデンティティへのアクセスに鍵を掛ける。デバイス215は、ディスクドライブとして図2に示されているが、こうした図は、デバイスの範囲を安全保護された記憶装置として働くことに限定する意図で示されたものではない。
【0038】
例示的実施形態では、各コンポーネント証明書は限定期間内で有効であり、各ブート証明書には発行日が記載されている。証明書間の対話は、図3で時間線を使用して示されているように、相対日付に基づいている。ブート証明書301には時間マーク1の発行日があり、ブート証明書302には時間マーク4の発行日がある。コンポーネント証明書303は時間マーク5、コンポーネント証明書304は時間マーク3、コンポーネント証明書305は時間マーク2、コンポーネント証明書306は時間マーク6で満了する。時間マーク1から4の間の任意の時間に加入者コンピュータ200がブートされると、ロードされるコンポーネントに関する各コンポーネント証明書の満了日を、ブート証明書の発行日に照らしてチェックする。コンポーネント証明書が発行日時点で有効である限り、コンポーネントはロードされる。したがって、コンポーネント証明書303、304、305、306に関連付けられたコンポーネントは、ブート証明書301を使用しているときには常時ロードされ、コンピュータは、検証済みオペレーティングシステムに常時ブート可能となる。
【0039】
ただし、ブート証明書302を使用してブートする場合、コンポーネント証明書304、305の有効期間がブート証明書302の発行日以前に満了しているため、これらに関連付けられたコンポーネントを検証することはできない。これらのコンポーネントをロードしなければならない場合、オペレーティングシステムのアイデンティティは、未検証オペレーティングシステムの値に設定される。新しいコンポーネント証明書は、ブート証明書302の下で、検証済みオペレーティングシステム内のコンポーネントをロードする必要がある。新しいコンポーネント証明書を取得するプロセスはオペレーティングシステムによって自動的に処理され、これについては次のセクションで説明する。
【0040】
関連付けられたコンポーネント証明書の満了日以前は、特定バージョンのコンポーネントが脆弱(vulnerability)であることがわかっているため、本発明の代替実施形態では、各ブート証明書に廃棄リストを関連付けている。廃棄リストにコンポーネントが掲載された場合、ブート証明書はそのコンポーネントの更新済みバージョンが取得されるまで、そのコンポーネントを検証しない。以前と同様に、未検証コンポーネントがロードされる場合、アイデンティティは未検証値に設定される。一実施形態では、廃棄リストに、更新済みバージョンのコンポーネントのオンラインアドレス(URL)も含まれるため、次のセクションで説明するように、オペレーティングシステムは新しいバージョンを自動的に取得できる。脆弱な各コンポーネントがその名前およびバージョンまたはその暗号ダイジェストで識別される廃棄リストの一実施形態例については、以下でより詳細に説明する。
【0041】
1つ以上のブート証明書の有効期間が満了しているために、コンテンツプロバイダがコンテンツのダウンロードを拒否した場合、現行のオペレーティングシステムは、後で発行されたブート証明書を取得して、新しいブート証明書の下でそれ以降のブート時に使用することができる。既存のコンテンツは、オペレーティングシステムのアイデンティティを介して安全保護されているため、新しいブート証明書を使用してブートすると、コンテンツにアクセスできないことになる。したがって現行のオペレーティングシステムは、システムがリブートされる前に、新しいアイデンティティを使用してコンテンツを格納しなおす。後で発行されたブート証明書を取得してコンテンツの安全保護をやり直すプロセスについても、次のセクションで説明する。
【0042】
以上、本発明の例示的実施形態の動作のシステムレベルの概要について、詳細に述べてきた。ブートドメインはクライアントの加入者コンピュータ上で作成され、ブート証明書、コンポーネント証明書、および格納された秘密情報によって定義される。加入者コンピュータにロードされるソフトウェアコンポーネントは、指定されたブート規則に従って、証明書を使用して検証される。オペレーティングシステムのアイデンティティは、コンポーネントの検証に使用されるブート証明書を反映するように作成される。コンテンツプロバイダは、オペレーティングシステムのアイデンティティおよびブート証明書に基づいて、そのオペレーティングシステムを信用してもよいかどうかを判定する。本発明はブート証明書とコンポーネント証明書のいずれかの特定の組合せに限定されるものではないが、わかりやすくするために、オペレーティングシステムが2つのブート証明書および2つのコンポーネント証明書を使用しているものとして説明してきた。
【0043】
本発明の例示的実施形態のメソッド
前のセクションでは、本発明の例示的実施形態の動作のシステムレベルの概要について説明した。このセクションでは、こうした例示的実施形態のクライアント、すなわち加入者コンピュータによって実行される特定のメソッドについて、一連の流れ図を参照しながら説明する。クライアントによって実行されるメソッドは、コンピュータ実行可能命令からなるコンピュータプログラムを構成する。流れ図を参照しながらメソッドについて説明していくことで、当業者であれば、好適にコンピュータ化されたクライアント(コンピュータ読取り可能媒体からの命令を実行するクライアントの処理装置)でメソッドを実施するためのこうした命令を含む、こうしたプログラムを開発することができるようになる。
【0044】
初めに図4を参照すると、本発明の例示的実施形態に従って加入者コンピュータによって実行されるメソッドの流れ図が示されている。このメソッドには、ブートプロセスの一部として実行する必要のある行為が含まれている。ブートプロセスが開始されると、ブートマネージャがユーザに対して、オペレーティングシステムコンポーネントを検証するのに使用できるブート証明書を選択するように提示する(ブロック401)。ユーザが所望のブート証明書を選択すると、ブートローダは、ブートブロックおよび選択されたブート証明書に基づいて、検証済みオペレーティングシステムのアイデンティティを作成する(ブロック403)。ロードされる各コンポーネントは、そのコンポーネント証明書をブート証明書の1つと照合することによって検証される(ブロック405)。検証プロセスでは、コンポーネント証明書の署名(ブロック407)、コンポーネント証明書の満了日(ブロック409)、および廃棄リスト(ブロック411)をチェックして、コンポーネントがロードできるかどうかを判定する。コンポーネント証明書が3つのテストすべてに合格した場合、すなわち、ブート規則を満たしている場合に、対応するコンポーネントがロードされる(ブロック413)。
【0045】
コンポーネント証明書がブート規則の1つを満たしていない場合、ブートローダはユーザに対して、対応するコンポーネントのローディング選択を提示し、未検証のオペレーティングシステムにブートするか、またはそのコンポーネントをロードしない(ブロック415)。コンポーネントが必要であれば、ブートローダは、そのオペレーティングシステムのアイデンティティを、未検証オペレーティングシステムであることを示す値に設定し(ブロック417)、コンポーネントをロードする(ブロック413)。ユーザがコンポーネントをロードしないことを選択すると、検証済みアイデンティティは保存される。
【0046】
ブートプロセスは、すべてのコンポーネントがロードされるまで、ブート規則に従って進められる(ブロック419)。
【0047】
オペレーティングシステムのブートが完了したときに、1つ以上のコンポーネントが検証できていない場合、図5および6にそれぞれ示されているように、有効なコンポーネント証明書または更新済みコンポーネントのいずれかが取得できる機会がユーザに与えられる。
【0048】
コンポーネント証明書が満了しており、ユーザが新しい証明書を取得することを選択した場合(図5のブロック501)、オペレーティングシステムは、満了した証明書に署名したブート機関に対して新しいコンポーネント証明書を要求する(ブロック503)。新しいコンポーネント証明書を受け取ると、後続のブートで使用するために、満了した証明書の代わりに格納される(ブロック505)。
【0049】
コンポーネントのバージョンが廃棄リストに掲載されており、ユーザが更新済みバージョンの取得を選択した場合(図6のブロック601)、オペレーティングシステムは、コンポーネントに関連付けられたダウンロードサイトに対して更新済みバージョンを要求する(ブロック603)。一実施形態では、サイトのURLが廃棄リストに格納されている。更新済みバージョンの新しいコンポーネント証明書もダウンロードされる。更新済みコンポーネントの証明書および新しいコンポーネントの証明書は、次回ブート時の検証およびロードのために格納される(ブロック605)。
【0050】
図7Aおよび7Bは、プロバイダにコンテンツを要求する際に、加入者コンピュータが実行するプロセスを示す図である。加入者コンピュータは、プロバイダに要求メッセージを送り(ブロック701)、応答でチャレンジnonceを受け取る(ブロック703)。加入者コンピュータは、ブート証明書、オペレーティングシステムアイデンティティ、およびnonceを含む認証メッセージを、プロバイダに返送する(ブロック705)。
【0051】
プロバイダは、ブート証明書およびオペレーティングシステムアイデンティティに基づいてオペレーティングシステムを信用した場合(ブロック707)、加入者コンピュータにコンテンツをダウンロードし(ブロック709)、加入者コンピュータは、このオペレーティングシステムアイデンティティに基づいて、パーマネント記憶装置上でコンテンツを安全に保護する(ブロック711)。
【0052】
プロバイダが、コンポーネントを検証するのに使用されるブート証明書が満了日を過ぎていると判断した場合、加入者コンピュータはユーザに対して、新しいブート証明書を取得する機会を提示する(ブロック713)。加入者コンピュータは、対応するブート機関に対して新しいブート証明書を要求し(ブロック715)、古いバージョンを上書きせずに新しいブート証明書を格納する(ブロック717)。
【0053】
現行のオペレーティングシステムは、新しいブート証明書を発行したブート機関によって署名されたそれぞれのコンポーネント証明書を検証することによって、新しいブート証明書によって定義されたオペレーティングシステムがブートするかどうかを判定する(ブロック719)。新しいブート証明書と照合した際に、1つ以上のコンポーネント証明書が満了しているため(ブロック735)、あるいは、1つ以上のコンポーネントが新しいブート証明書に関連付けられた廃棄リストに掲載されているバージョンであるため(ブロック737)に、新しいオペレーティングシステムが不合格になる場合がある。新しいコンポーネント証明書は、図5に関連して上述したプロセスを使用して取得され、更新済みコンポーネントは、図6に関連して上述したプロセスを使用して取得される。
【0054】
現行のオペレーティングシステムは、新しいオペレーティングシステムがブートされると判断した場合、新しいブートコンポーネントに基づいて新しいオペレーティングシステムアイデンティティを作成する(ブロック721)。それぞれのオペレーティングシステムアイデンティティは関連付けられたブートドメインにある秘密情報を制御するので、新しいオペレーティングシステムアイデンティティに対して新しいブートドメインを作成しなければならない。それぞれの秘密情報は、新しいブートドメインの一部となるかどうかを判定するために評価される(ブロック723)。新しいブートドメインに関する秘密情報の選択は、新しいブート証明書を現行のブート証明書としてブート機関から取得すること(ブロック725)、新しいブート証明書を現行のブート証明書の後に発行すること(ブロック727)、並びに、コンテンツが新しいブート証明書の発行日以前に満了しないこと(ブロック729)という、3つの規則で管理される。資格付与された秘密情報が現行のオペレーティングシステムアイデンティティを使用して開封(unseal)され、コンテンツのコピーが作成され、そのコピーが新しいオペレーティングシステムアイデンティティを使用して再度密封(re-seal)される(ブロック731)。このプロセスは、適切な秘密情報がすべて新しいブートドメイン内に密封(seal)されるまで続行する(ブロック733)。特定のブート証明書の組合せの下で次に加入者コンピュータがブートされたときに、新しいブート証明書が有効となり、新しいブートドメイン内の秘密情報にアクセスできるようになる。当業者であれば、この手順が通常のオペレーティングシステム更新プロセスの一部として自動化できるものであることを、容易に理解されよう。
【0055】
一実施形態では、古いブートドメイン内の秘密情報は、新しいブート証明書の下で最初にブートが成功した時点で削除される。代替実施形態では、満了となったコンテンツだけが削除される。
【0056】
以上、本発明の例示的実施形態のクライアントによって実行される特定のメソッドについて説明した。クライアントコンピュータによって実行されるメソッドは、400〜417、501〜505、601〜605、および701〜737のすべての行為を含む流れ図を参照しながら示した。
【0057】
1.Microsoft(登録商標)「WINDOWS(登録商標)」での実施
この詳細な説明のセクションでは、本発明の特定の実施について、Microsoft(登録商標) Corporationのオペレーティングシステムである「WINDOWS(登録商標)」ファミリに関して説明する。Microsoft(登録商標)は、様々なバージョンの「WINDOWS(登録商標)」オペレーティングシステムのブートブロックに関するブート証明書およびコンポーネント証明書を発行することで、ブート機関としての役割を果たす。「WINDOWS(登録商標)」オペレーティングシステムのブートマネージャおよびブートローダは、前のセクションで説明したメソッドに従って動作するように拡張される。「WINDOWS(登録商標)」オペレーティングシステムの実施で使用するためのブート証明書およびコンポーネント証明書の例示的実施形態は、それぞれ、図8Aおよび9に示されている。廃棄リストエントリの例示的実施形態は、図8Bに示されている。追加の証明書、時間証明書の例示的実施形態は、図10に示されている。
【0058】
初めに図8Aを見ると、ブート証明書800の一実施形態には、5つの定数フィールドと3つのオプションフィールドが含まれる。定数フィールドには、ブート機関の識別子801、証明書の発行日802、証明書のダイジェスト803、ブート機関の公開鍵804、および証明書800を発行したブート機関、すなわちフィールド801で識別されたブート機関のデジタル署名808が含まれる。公開鍵804は、ブート証明書800上のデジタル署名808を検証する場合、並びに同一のブート機関によって署名されたコンポーネント証明書を検証する場合に使用される。
【0059】
一実施形態では、ブート証明書800にはブート証明書の満了日805が含まれる。「WINDOWS(登録商標)」オペレーティングシステムは、この満了日805を使用して、コンテンツプロバイダからの通知がなくとも、新しいブート証明書が必要であるときを判定する。
【0060】
代替実施形態では、ブート証明書800には廃棄リスト806が含まれる。廃棄リストの機能については前のセクションで説明した。廃棄リスト806のエントリの例示的実施形態が、図8Bに示されている。各エントリ810には、廃棄されたコンポーネントの名前およびバージョン811、廃棄されたコンポーネントの暗号ダイジェスト812、並びにコンポーネントの更新済みバージョンを含むダウンロードサイトのURL813が含まれる。
【0061】
他の実施形態では、ブート証明書800に、フィールド801によって識別されたブート機関が署名した各コンポーネントをロードする前に、ブートプロセスによって実行されるコマンドスクリプト形式のブート規則807が含まれる。他の代替実施形態では、ブート規則807は一連のオペレーティングシステムコマンドである。
【0062】
図9に示されるコンポーネント証明書の例示的実施形態は、「WINDOWS(登録商標)」オペレーティングシステムにロードするためのコンポーネントを保証するすべてのブート機関によって実施される。コンポーネント証明書900には、ブート機関のアイデンティティ901、対応するコンポーネントの名前およびバージョン902、コンポーネントのダイジェスト903、コンポーネント証明書の発行日904、証明書の満了日904、およびブート機関のデジタル署名906が含まれる。ブート機関のブート証明書800にある公開鍵は、コンポーネント証明書のデジタル署名906を検証する際に使用される。
【0063】
ブート証明書800に廃棄リスト806が含まれる場合、「WINDOWS(登録商標)」オペレーティングシステムは、コンポーネント証明書にある名前およびバージョン902並びにダイジェスト903と、廃棄リスト806にあるそれぞれのエントリ810とを照合して、コンポーネントが廃棄されたものかどうかを判定する。コンポーネントが廃棄されている場合、ユーザが選択したときに、エントリ810にあるURLアドレスから新しいバージョンが取得される。
【0064】
「WINDOWS(登録商標)」オペレーティングシステムの実施では、コンテンツの時間制限をブート証明書のみを使用した場合に可能な期間よりも短く設定することができる。図10に示した時間証明1000の例示的実施形態には、ブート証明書800と同じ定数フィールドが含まれるが、時間証明書には発行日および発行時間1002が含まれる点は異なっている。時間証明書1000は、ブート証明書と共にオペレーティングシステムアイデンティティに折り込まれ、認証メッセージの一部としてコンテンツプロバイダに送信される。時間証明書1000を使用することは、発行日および発行時間1002より後の日付および時間にコンピュータがブートされたことを、「WINDOWS(登録商標)」オペレーティングシステムが保証するのと等価である。
【0065】
コンテンツプロバイダは、すぐに満了してしまうコンテンツをダウンロードする前に、現行の時間証明書があれば、それが古すぎるかどうかを判定する。古すぎる場合、または現行の時間証明書がない場合、加入者コンピュータは新しい時間証明書を獲得し、新しい時間証明書を含むオペレーティングシステムアイデンティティの下でリブートしなければならない。時間証明書はオペレーティングシステムアイデンティティの一部であるため、古いアイデンティティの下で密封された秘密情報は、ブート証明書に関して前のセクションで説明したように、新しいブートドメインにコピーするために評価しなければならない。この場合、既存のコンテンツの満了日は、時間証明書の発行日および発行時間に基づいて決定される。さらに、新しいオペレーティングシステムアイデンティティが有効になった時点で、満了済みのコンテンツは削除される。
【0066】
結論
以上、クライアントのブートドメインおよびブート規則について説明した。本明細書では、特定の実施形態について図示および説明してきたが、当業者であれば、図示された特定の実施形態が、同じ目的を達成するように計算された任意の配置構成に置き換えられることを理解されよう。
【0067】
例えば、当業者であれば、任意の組織がブート機関としての役割を果たせることを理解されよう。どのブート機関を信用するかは、それぞれ個々のコンテンツプロバイダが決めることである。さらに、当業者であれば、ブート証明書のバージョンを変更するには、ブートドメイン内のすべての秘密情報を開封し、再度密封しなければならないことから、コンポーネント証明書の有効期間が典型的にはブート証明書のそれよりも短くなっていることを理解されよう。
【0068】
さらに、本発明は、コンピュータの電源が投入された結果としてオペレーティングシステムをロードするという点に関して説明してきたが、当業者であれば、本発明が、既に実行中のオペレーティングシステムの制御下でオペレーティングシステムをロードするか、または未検証のオペレーティングシステムを実行中のコンピュータ上にある保護されたアドレス領域にオペレーティングシステムをロードするためにも使用できるものであることを理解されよう。
【0069】
本明細書で使用された専門用語は、コンピュータを機能させるために異なるソフトウェアコンポーネントをロードしなければならないすべてのオペレーティングシステム環境を含むことを意味するものである。
【特許請求の範囲】
【請求項1】
クライアントコンピュータにブートドメインを確立するための、コンピュータで実行される方法であって、
前記ブートドメインに関連付けられたブート証明書を選択するステップと、
前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成するステップと、
前記ブート証明書に基づくブート規則セットに従って複数のオペレーティングシステムコンポーネントをそれぞれ1つずつロードするステップと
を備え、
前記複数のオペレーティングシステムコンポーネントのそれぞれはコンポーネント証明書に関連付けられており、前記ブート規則セットは、
前記ブート証明書を発行したブート機関によって各コンポーネント証明書が署名されていること、
前記ブート証明書の発行日時点で各コンポーネント証明書が有効であること、及び、
前記ブート証明書に関連付けられた廃棄リストに各コンポーネントがリストされていないこと
を含むこと
を特徴とする方法。
【請求項2】
新しいコンポーネント証明書を取得して前記ブート証明書の前記発行日時点で満了しているコンポーネント証明書を置き換えるステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項3】
新しいコンポーネントを取得して前記ブート証明書に関連付けられた前記廃棄リストにリストされているコンポーネントを置き換えるステップと、
前記新しいコンポーネントについて関連付けられたコンポーネント証明書を取得するステップと
をさらに備えることを特徴とする請求項1に記載の方法。
【請求項4】
クライアントコンピュータにブートドメインを確立するための、コンピュータで実行される方法であって、
前記ブートドメインに関連付けられたブート証明書を選択するステップと、
前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成するステップと、
前記ブート証明書に基づくブート規則セットに従って複数のオペレーティングシステムコンポーネントをそれぞれ1つずつロードするステップと、
前記オペレーティングシステムの前記検証済みのオペレーティングシステムアイデンティティに基づく鍵を使用して、前記ブートドメインで使用するためのデータを安全に保護するステップと、
新しいブート証明書を取得するステップと、
前記新しいブート証明書から新しい検証済みのオペレーティングシステムアイデンティティを作成するステップと、
前記新しい検証済みのオペレーティングシステムアイデンティティを使って前記ブートドメイン内のデータを再度安全に保護するステップと
を備えることを特徴とする方法。
【請求項5】
前記複数のオペレーティングシステムコンポーネントのうち1つが前記ブート規則セットを満たさない場合に、未検証のオペレーティングシステムアイデンティティを作成するステップをさらに備えることを特徴とする請求項4に記載の方法。
【請求項6】
前記ブートドメイン内のデータを再度安全に保護するステップは、
前記新しいブート証明書がブート証明書を発行したブート機関と同一のブート機関によって発行されたことを検証すること、
前記新しいブート証明書が、ブート証明書よりも後の日付で発行されたことを検証すること、
前記ブートドメイン内のデータが満了していないことを検証すること、
前記ブートドメイン内のデータを検証済みのオペレーティングシステムアイデンティティを使って開封(unseal)すること、
前記データをコピーすること、及び、
前記新しい検証済みのオペレーティングシステムアイデンティティを使って前記データの該コピーを密封(seal)すること
を含むことを特徴とする請求項4に記載の方法。
【請求項7】
コンピュータ化されたシステムであって、
処理ユニットと、
システムバスを介して前記処理ユニットに結合されたシステムメモリと、
システムバスを介して前記処理ユニットに結合されたコンピュータ読取り可能媒体と、
前記処理ユニットによって前記コンピュータ読取り可能媒体から実行されて、前記処理ユニットに、本システムのユーザに対してブート証明書を選択するように要求させるブートマネージャと、
前記処理ユニットによって前記コンピュータ読取り可能媒体から実行されて前記ブート証明書のブート規則セットに基づいて前記処理ユニットに後続のソフトウェアコンポーネントをブートさせるブートローダであって、前記ブート規則が満たされているとき、前記処理ユニットに前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成させるブートローダと、
前記処理ユニットに結合されたワイドエリアネットワーク接続と、
前記ブート規則に従ってブートされ、前記処理ユニットに、前記検証済みのオペレーティングシステムアイデンティティ及びブート証明書をサーバコンピュータに伝送させ、及び、前記検証済みのオペレーティングシステムアイデンティティを介して前記サーバコンピュータからダウンロードされたデータを安全に保護させる検証済みのオペレーティングシステムと
を備えたことを特徴とするコンピュータ化されたシステム。
【請求項8】
前記検証済みのオペレーティングシステムは、さらに前記処理ユニットに、新しいブート証明書を取得させ、前記新しいブート証明書から新しい検証済みのオペレーティングシステムアイデンティティを作成させ、前記検証済みのオペレーティングシステムアイデンティティで安全に保護されたダウンロード済みのデータを開封させ、さらに前記新しい検証済みのオペレーティングシステムアイデンティティを介してダウンロード済みのデータを再度密封させることを特徴とする請求項7に記載のコンピュータ化されたシステム。
【請求項9】
コンピュータ実行可能モジュールを格納しているコンピュータ読取り可能媒体であって、前記モジュールは、
複数のブートドメインのうち1つに関連付けられたブート証明書を決定するためのブートマネージャと、
前記ブート証明書に関するブート規則セットに従って複数のオペレーティングシステムコンポーネントをそれぞれ1つずつロードし、さらに前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成するためのブートローダを含み、
前記複数のオペレーティングシステムコンポーネントがそれぞれコンポーネント証明書に関連付けられており、前記ブート規則セットは、
各コンポーネント証明書が前記ブート証明書を発行したブート機関によって署名されていること、
各コンポーネント証明書が、前記ブート証明書の発行日時点で有効であること、及び、
各コンポーネントが前記ブート証明書に関連付けられた廃棄リストに掲載されていないことを含むこと
を特徴とするコンピュータ読取り可能媒体。
【請求項10】
さらに前記ブートローダは、前記複数のオペレーティングシステムコンポーネントのうち1つが前記ブート規則セットを満たしていない場合に、未検証のオペレーティングシステムアイデンティティを作成することを特徴とする請求項9に記載のコンピュータ読取り可能媒体。
【請求項11】
クライアントとサーバコンピュータの間でデータを転送する方法であって、
前記クライアントコンピュータによってブート証明書を取得するステップと、
前記クライアントコンピュータによって前記ブート証明書から指定された複数のオペレーティングシステムコンポーネントをロードして、前記クライアントコンピュータ上にある検証済みのオペレーティングシステムをブートするステップと、
前記クライアントコンピュータによって、前記ブート証明書から検証済みの前記オペレーティングシステムに関する検証済みのオペレーティングシステムアイデンティティを作成するステップと、
前記クライアントコンピュータによって、前記検証済みのオペレーティングシステムアイデンティティ及び前記ブート証明書をサーバコンピュータに伝送するステップと、
前記サーバコンピュータによって、前記検証済みのオペレーティングシステムアイデンティティ及び前記ブート証明書に基づいて、前記クライアントコンピュータがどのデータを利用できるかを決定するステップと、
前記サーバコンピュータによって、利用可能なデータを前記クライアントコンピュータにダウンロードするステップと、
前記クライアントコンピュータによって、前記検証済みのオペレーティングシステムアイデンティティを介して前記クライアントコンピュータ上にダウンロードされた前記データを安全に保護するステップと
を備えることを特徴とする方法。
【請求項12】
前記複数のオペレーティングシステムコンポーネントのロードは、異なるオペレーティングシステムの制御下で実行されることを特徴とする請求項11に記載の方法。
【請求項13】
前記複数のオペレーティングシステムコンポーネントは、保護されたアドレス領域内にロードされることを特徴とする請求項11に記載の方法。
【請求項14】
コンピュータ上にブートドメインを確立するために、コンピュータ実行可能命令を格納しているコンピュータ読取り可能媒体であって、前記命令は、
前記ブートドメインに関連付けられたブート証明書を取得すること、
前記ブート証明書に指定されたオペレーティングシステムをブートすることであって、前記ブート証明書に関連付けられたブート規則セットを決定すること、及び、前記ブート規則の遵守に関して、前記オペレーティングシステムの複数のコンポーネントをそれぞれ1つずつ評価することを含む、ブートすること、
前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成すること、
前記ブート規則を遵守している前記複数のコンポーネントをそれぞれ1つずつロードすること、
新しいブート証明書を取得すること、
前記新しいブート証明書から新しい検証済みのオペレーティングシステムアイデンティティを作成すること、及び、
前記新しい検証済みのオペレーティングシステムアイデンティティを使って前記ブートドメイン内のデータを再度安全に保護すること
を含むことを特徴とするコンピュータ読取り可能媒体。
【請求項15】
前記命令が、
前記複数のコンポーネントのうち1つが前記ブート規則を遵守していない場合に、未検証のオペレーティングシステムアイデンティティを作成することをさらに含むことを特徴とする請求項14に記載のコンピュータ読取り可能媒体。
【請求項1】
クライアントコンピュータにブートドメインを確立するための、コンピュータで実行される方法であって、
前記ブートドメインに関連付けられたブート証明書を選択するステップと、
前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成するステップと、
前記ブート証明書に基づくブート規則セットに従って複数のオペレーティングシステムコンポーネントをそれぞれ1つずつロードするステップと
を備え、
前記複数のオペレーティングシステムコンポーネントのそれぞれはコンポーネント証明書に関連付けられており、前記ブート規則セットは、
前記ブート証明書を発行したブート機関によって各コンポーネント証明書が署名されていること、
前記ブート証明書の発行日時点で各コンポーネント証明書が有効であること、及び、
前記ブート証明書に関連付けられた廃棄リストに各コンポーネントがリストされていないこと
を含むこと
を特徴とする方法。
【請求項2】
新しいコンポーネント証明書を取得して前記ブート証明書の前記発行日時点で満了しているコンポーネント証明書を置き換えるステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項3】
新しいコンポーネントを取得して前記ブート証明書に関連付けられた前記廃棄リストにリストされているコンポーネントを置き換えるステップと、
前記新しいコンポーネントについて関連付けられたコンポーネント証明書を取得するステップと
をさらに備えることを特徴とする請求項1に記載の方法。
【請求項4】
クライアントコンピュータにブートドメインを確立するための、コンピュータで実行される方法であって、
前記ブートドメインに関連付けられたブート証明書を選択するステップと、
前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成するステップと、
前記ブート証明書に基づくブート規則セットに従って複数のオペレーティングシステムコンポーネントをそれぞれ1つずつロードするステップと、
前記オペレーティングシステムの前記検証済みのオペレーティングシステムアイデンティティに基づく鍵を使用して、前記ブートドメインで使用するためのデータを安全に保護するステップと、
新しいブート証明書を取得するステップと、
前記新しいブート証明書から新しい検証済みのオペレーティングシステムアイデンティティを作成するステップと、
前記新しい検証済みのオペレーティングシステムアイデンティティを使って前記ブートドメイン内のデータを再度安全に保護するステップと
を備えることを特徴とする方法。
【請求項5】
前記複数のオペレーティングシステムコンポーネントのうち1つが前記ブート規則セットを満たさない場合に、未検証のオペレーティングシステムアイデンティティを作成するステップをさらに備えることを特徴とする請求項4に記載の方法。
【請求項6】
前記ブートドメイン内のデータを再度安全に保護するステップは、
前記新しいブート証明書がブート証明書を発行したブート機関と同一のブート機関によって発行されたことを検証すること、
前記新しいブート証明書が、ブート証明書よりも後の日付で発行されたことを検証すること、
前記ブートドメイン内のデータが満了していないことを検証すること、
前記ブートドメイン内のデータを検証済みのオペレーティングシステムアイデンティティを使って開封(unseal)すること、
前記データをコピーすること、及び、
前記新しい検証済みのオペレーティングシステムアイデンティティを使って前記データの該コピーを密封(seal)すること
を含むことを特徴とする請求項4に記載の方法。
【請求項7】
コンピュータ化されたシステムであって、
処理ユニットと、
システムバスを介して前記処理ユニットに結合されたシステムメモリと、
システムバスを介して前記処理ユニットに結合されたコンピュータ読取り可能媒体と、
前記処理ユニットによって前記コンピュータ読取り可能媒体から実行されて、前記処理ユニットに、本システムのユーザに対してブート証明書を選択するように要求させるブートマネージャと、
前記処理ユニットによって前記コンピュータ読取り可能媒体から実行されて前記ブート証明書のブート規則セットに基づいて前記処理ユニットに後続のソフトウェアコンポーネントをブートさせるブートローダであって、前記ブート規則が満たされているとき、前記処理ユニットに前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成させるブートローダと、
前記処理ユニットに結合されたワイドエリアネットワーク接続と、
前記ブート規則に従ってブートされ、前記処理ユニットに、前記検証済みのオペレーティングシステムアイデンティティ及びブート証明書をサーバコンピュータに伝送させ、及び、前記検証済みのオペレーティングシステムアイデンティティを介して前記サーバコンピュータからダウンロードされたデータを安全に保護させる検証済みのオペレーティングシステムと
を備えたことを特徴とするコンピュータ化されたシステム。
【請求項8】
前記検証済みのオペレーティングシステムは、さらに前記処理ユニットに、新しいブート証明書を取得させ、前記新しいブート証明書から新しい検証済みのオペレーティングシステムアイデンティティを作成させ、前記検証済みのオペレーティングシステムアイデンティティで安全に保護されたダウンロード済みのデータを開封させ、さらに前記新しい検証済みのオペレーティングシステムアイデンティティを介してダウンロード済みのデータを再度密封させることを特徴とする請求項7に記載のコンピュータ化されたシステム。
【請求項9】
コンピュータ実行可能モジュールを格納しているコンピュータ読取り可能媒体であって、前記モジュールは、
複数のブートドメインのうち1つに関連付けられたブート証明書を決定するためのブートマネージャと、
前記ブート証明書に関するブート規則セットに従って複数のオペレーティングシステムコンポーネントをそれぞれ1つずつロードし、さらに前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成するためのブートローダを含み、
前記複数のオペレーティングシステムコンポーネントがそれぞれコンポーネント証明書に関連付けられており、前記ブート規則セットは、
各コンポーネント証明書が前記ブート証明書を発行したブート機関によって署名されていること、
各コンポーネント証明書が、前記ブート証明書の発行日時点で有効であること、及び、
各コンポーネントが前記ブート証明書に関連付けられた廃棄リストに掲載されていないことを含むこと
を特徴とするコンピュータ読取り可能媒体。
【請求項10】
さらに前記ブートローダは、前記複数のオペレーティングシステムコンポーネントのうち1つが前記ブート規則セットを満たしていない場合に、未検証のオペレーティングシステムアイデンティティを作成することを特徴とする請求項9に記載のコンピュータ読取り可能媒体。
【請求項11】
クライアントとサーバコンピュータの間でデータを転送する方法であって、
前記クライアントコンピュータによってブート証明書を取得するステップと、
前記クライアントコンピュータによって前記ブート証明書から指定された複数のオペレーティングシステムコンポーネントをロードして、前記クライアントコンピュータ上にある検証済みのオペレーティングシステムをブートするステップと、
前記クライアントコンピュータによって、前記ブート証明書から検証済みの前記オペレーティングシステムに関する検証済みのオペレーティングシステムアイデンティティを作成するステップと、
前記クライアントコンピュータによって、前記検証済みのオペレーティングシステムアイデンティティ及び前記ブート証明書をサーバコンピュータに伝送するステップと、
前記サーバコンピュータによって、前記検証済みのオペレーティングシステムアイデンティティ及び前記ブート証明書に基づいて、前記クライアントコンピュータがどのデータを利用できるかを決定するステップと、
前記サーバコンピュータによって、利用可能なデータを前記クライアントコンピュータにダウンロードするステップと、
前記クライアントコンピュータによって、前記検証済みのオペレーティングシステムアイデンティティを介して前記クライアントコンピュータ上にダウンロードされた前記データを安全に保護するステップと
を備えることを特徴とする方法。
【請求項12】
前記複数のオペレーティングシステムコンポーネントのロードは、異なるオペレーティングシステムの制御下で実行されることを特徴とする請求項11に記載の方法。
【請求項13】
前記複数のオペレーティングシステムコンポーネントは、保護されたアドレス領域内にロードされることを特徴とする請求項11に記載の方法。
【請求項14】
コンピュータ上にブートドメインを確立するために、コンピュータ実行可能命令を格納しているコンピュータ読取り可能媒体であって、前記命令は、
前記ブートドメインに関連付けられたブート証明書を取得すること、
前記ブート証明書に指定されたオペレーティングシステムをブートすることであって、前記ブート証明書に関連付けられたブート規則セットを決定すること、及び、前記ブート規則の遵守に関して、前記オペレーティングシステムの複数のコンポーネントをそれぞれ1つずつ評価することを含む、ブートすること、
前記ブート証明書から検証済みのオペレーティングシステムアイデンティティを作成すること、
前記ブート規則を遵守している前記複数のコンポーネントをそれぞれ1つずつロードすること、
新しいブート証明書を取得すること、
前記新しいブート証明書から新しい検証済みのオペレーティングシステムアイデンティティを作成すること、及び、
前記新しい検証済みのオペレーティングシステムアイデンティティを使って前記ブートドメイン内のデータを再度安全に保護すること
を含むことを特徴とするコンピュータ読取り可能媒体。
【請求項15】
前記命令が、
前記複数のコンポーネントのうち1つが前記ブート規則を遵守していない場合に、未検証のオペレーティングシステムアイデンティティを作成することをさらに含むことを特徴とする請求項14に記載のコンピュータ読取り可能媒体。
【図1A】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図8A】
【図8B】
【図9】
【図10】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図8A】
【図8B】
【図9】
【図10】
【公開番号】特開2009−123247(P2009−123247A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2009−57984(P2009−57984)
【出願日】平成21年3月11日(2009.3.11)
【分割の表示】特願2001−544115(P2001−544115)の分割
【原出願日】平成12年12月7日(2000.12.7)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願日】平成21年3月11日(2009.3.11)
【分割の表示】特願2001−544115(P2001−544115)の分割
【原出願日】平成12年12月7日(2000.12.7)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]