(57)【要約】【解決手段】  安全な起動処理は、ＣＰＵ（１００）の一体化部分であり一旦起動前情報がプログラムされたら改変されることがない不揮発性メモリ（１０３）に基いて達成される。リセットイベント又は電源投入イベントの間には、起動ルーチンの一部分の署名を照合するための公開復号化鍵が収容されていてもよい内部不揮発性メモリ（１０３）から実行が開始されてよい。起動ルーチンの該当する部分の照合は、内部ランダムアクセスメモリ（１０１）を用いて達成され、それにより起動ルーチンの照合の間の外部からのアクセスが回避される。従って、高度な耐改ざん性が、例えばＢＩＯＳチップの交換によるＢＩＯＳ改変に関して得られる。【選択図】図１ｂ
2011527777.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム（１５０）を起動するための方法であって、
中央処理ユニット（１００）の不揮発性メモリ（１０３）に記憶され、前記中央処理ユニット（１００）のコア回路（１０２）に前記中央処理ユニットの内部揮発性メモリ（１０１）を初期化させる第１の命令を含む第１の一連のデータ（１０３Ａ）にアクセスすることと、
第２の一連のデータ（１２１）の完全性を照合するための署名と前記中央処理ユニット（１００）に前記コンピュータシステム（１００）のシステムメモリ（１１０）を初期化させる第２の命令（１２１Ａ）とを備える前記第２の一連のデータ（１２１）のイメージを不揮発性メモリ（１２０）から前記初期化された内部揮発性メモリ（１０１）に読み込むことと、
前記署名と前記第１の一連のデータに含まれる復号化鍵とを用いて前記第２の一連のデータ（１２１）の前記完全性を照合することと、
前記第２の一連のデータ（１２１）の照合が成功したときに前記第２の命令（１２１Ａ）を用いて前記システムメモリ（１１０）を初期化することとを備えた方法。
【請求項２】
前記不揮発性メモリ（１２０）から前記システムメモリ（１１０）に第３の一連のデータ（１２１Ｂ）を読み込むと共に前記第３の一連のデータ（１２１Ｂ）の完全性を照合することと、
前記第３の一連のデータ（１２１Ｂ）に含まれ、前記コンピュータシステム（１５０）に接続された起動可能デバイスから前記システムメモリ（１２０）にオペレーティングシステムを読み込ませる第３の命令（１２１Ｂ）を実行することとを更に備えている、請求項１の方法。
【請求項３】
前記第３の一連のデータ（１２１Ｂ）の完全性を照合することは、前記第３の一連のデータ（１２１Ｂ）に対するハッシュ値を決定することと、前記決定されたハッシュ値を前記第２の一連のデータ（１２１Ａ）に含まれる前記第３の一連のデータ（１２１Ｂ）の当初のハッシュ値と比較することとを備えている、請求項２の方法。
【請求項４】
前記内部揮発性メモリ（１０１）を初期化することは、前記中央処理ユニット（１００）のデータキャッシュ（１０１Ａ）及び命令キャッシュ（１０１Ｂ）を初期化することを備えており、前記第２の一連のデータ（１２１Ａ）は前記データキャッシュ（１０１Ａ）に読み込まれ、
前記方法は、前記第２の一連のデータ（１２１Ａ）の完全性の照合が成功したときに前記第２の一連のデータ（１２１Ａ）を前記命令キャッシュ（１０１Ｂ）に複写して前記第２の命令（１２１Ａ）を実行することを更に備えている、請求項１の方法。
【請求項５】
前記第２の一連のデータ（１２１）を前記内部揮発性メモリ（１０１）に読み込むことは、ハッシュアルゴリズムを実行して前記第２の一連のデータ（１２１）のハッシュ値を決定することを備えており、
前記第２の一連のデータ（１２１）の完全性を照合することは、前記第２の一連のデータ（１２１）の前記ハッシュ値を、前記暗号化鍵を前記署名に適用することによって得られる当初のハッシュ値と比較することを備えている、請求項１の方法。
【請求項６】
前記中央処理ユニット（１００）がリセットされ又は電源投入されるときはいつでも前記第１の一連のデータ（１０３Ａ）がアクセスされる、請求項１の方法。
【請求項７】
前記第２の一連のデータ（１２１）の照合成功の後に少なくとも前記復号化鍵への外部アクセスが可能になるように前記第１の一連のデータ（１０３Ａ）のアドレスを前記中央処理ユニット（１００）の仮想アドレス空間内で再配置することを更に備えた、請求項１の方法。
【請求項８】
少なくとも前記第２の一連のデータ（１２１）の照合状態に関する状態情報を提供することを更に備えた、請求項１の方法。
【請求項９】
前記第１の一連のデータ（１０３Ａ）を前記システムメモリ（１２０）内に複写することを更に備えた、請求項１の方法。
【請求項１０】
前記第１の一連のデータ（１０３Ａ）は前記中央処理ユニット（１００）の前記内部揮発性メモリ（１０３）を初期化するための起動前命令及びデータ値を備えており、前記第２の一連のデータ（１２１）は起動命令及び起動データ値を備えている、請求項１の方法。
【請求項１１】
ＣＰＵコア（１０２）、揮発性ランダムアクセスメモリ（１０１）、不揮発性メモリ（１０３）並びに前記ＣＰＵコア（１０２）、前記揮発性ランダムアクセスメモリ（１０１）及び前記不揮発性メモリ（１０３）を接続するためのバスシステム（１０４）を画定する回路素子が形成された基板と、
前記不揮発性メモリ（１０３）に記憶され、前記ＣＰＵコア（１０２）によって実行可能な命令と前記揮発性ランダムアクセスメモリ（１０１）を初期化すると共に起動ルーチンの少なくとも一部を照合するためのデータ値とを含む起動前情報（１０３Ａ）と、を備えた中央処理ユニット（１００）。
【請求項１２】
前記起動前情報（１０３Ａ）は前記起動ルーチンの前記少なくとも一部の署名を復号化することを可能にするように構成された一つ以上の復号化鍵を含む、請求項１１の中央処理ユニット（１００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、完全性(integrity)が高められたコンピュータシステム及びそれに実装される関連するメカニズムの分野に関し、強化された安全性基準の提供を可能にし、それにより安全なコンピュータプラットフォームを必要とするアプリケーションの性能を高めるものである。
【背景技術】
【０００２】
コンピュータシステムの広範囲にわたる使用は、電子的コンピュータシステムに基く情報処理の著しい増大を招き、極めて大量のデジタルデータの創出、配布及び処理を伴うものとなってきている。データ記憶容量及び高速化された処理速度を考慮したコンピュータシステム資源の増大に伴い、オーディオデータ、映画等の大容量のデータセットの複製がますます多くの人々にとって利用可能になってきており、電子的な形態で提供されるデータの多くに関連するであろういかなる保護的権利の存在にもかかわらず、そのような複製はしばしば実行される。このように、電子データの不法な複製、保管及び再配布により、甚大なる経済的損害が生じる可能性がある。また、インターネット等の広範囲に及ぶネットワークを介したアプリケーションプログラムの配布は、悪意のあるソフトウエアアプリケーションを配布する可能性をももたらすかもしれず、それらは次いでデータ及び／又は該当するコンピュータプラットフォームの構成を操作するために使用されかねない。例えば、私的環境において、また、特に産業界においては、例えば、記憶されたデータ等のソフトウエアファイルを操作し、プラットフォームの実際の使用者が知らないうちにインターネットを介して情報を通信し、サービス拒否攻撃(denial of service attack)を開始し、それによりプラットフォームの特定の状態を必要とする専用のアプリケーションに対して場合によってはプラットフォームをもはや使用不可能な状況にしてしまいかねないソフトウエアアプリケーションを導入することによって、著しい損害が生じる可能性がある。
【０００３】
これらの理由により、コンピュータプラットフォームの完全性を高め、例えば悪意のあるソフトウエア、サービス拒否攻撃、データ傍受(sniffing)、なりすまし(spoofing)等の形をとる外部攻撃の「成功」の蓋然性を低減し、また、コンピュータプラットフォームの内部操作に関するデータ完全性をも高めるためのメカニズムの開発について多大な努力がなされている。例えば、データの伝送及び記憶の間における第三者によるデータの改ざん(tampering)に対して高度な耐力を有するデータ交換を可能にする対称又は非対称な暗号化／復号化技術のような多くの暗号化技術が利用可能である。例えば、非対称暗号化技術では、私的鍵及び公開鍵の対が、それらの鍵の一方によりデータを暗号化するために、またそれらの鍵の他方によりそのデータを復号化するために用いられてよく、それらの鍵の一方には公然とアクセス可能である。これらの技術はデータ伝送及びデータ記憶において完全性を高めるであろうが、特にコンピュータの安全性を高めることが意図された多くのアプリケーションは、信頼されたプラットフォーム構成(trusted platform configuration)に頼っているであろうから、考慮対象となるコンピュータプラットフォームの実際の構成は、それでもなお多くの攻撃の可能性をもたらすであろう。
【０００４】
信頼されたコンピュータプラットフォームは、ハードウエア構成の他にソフトウエアアプリケーションも専用の構成にあるであろうことが仮想されるコンピュータシステムと考えることができる。しかしながら、安全なプラットフォーム構成は、信頼されたプラットフォームレベルの「連鎖」を確立することによってのみ成立させることができ、後続のレベルの完全性がすでに照合されている場合にのみ各後続のレベルは先行するレベルによって初期化することができる。従って、システムレベルでの完全性は完全性照合の連鎖を通して維持することができ、認証ステップの連鎖のルートは、最上位レベル、即ちユーザアプリケーションのレベルを初期化した後のシステムの完全性に関する高い信頼性を達成するために、高度な耐改ざん性を備えていなければならないであろう。
【０００５】
典型的なコンピュータプラットフォームでは、例えば、中央処理ユニット（ＣＰＵ）を初期化し、通常はＣＰＵの外部に設けられるシステムメモリを初期化し、外部の大容量記憶デバイスからシステムメモリにオペレーティングシステムを読み込み、最後にユーザアプリケーションを実行することに関して、システムの初期化は種々の程度の抽象化(abstraction)を必要とする。このように、オペレーティングシステムは、「疑わしい」処理によって呼び出されるかもしれず、それによりハードウエア及びソフトウエアの構成要素を改変して基本プラットフォーム構成を操作する機会を与えることがあるから、システム全体の総合的な完全性を高めることを考慮すると、オペレーティングシステムを読み込むのに先立つ種々のシステム活動がオペレーティングシステム及びユーザアプリケーションの完全性に依存して安全であると考えられてよいとの仮定は、十分でないかもしれない。従って、システムメモリ等のコンピュータシステムの種々のハードウエア構成部品を初期化する処理及び、より高位のシステムレベルを初期化するためのそこに含まれる命令の実行は、ブートストラップ(boot strapping)又はブーティング(booting)と称されることもあり、強化されたシステム全体の完全性を提供するために信頼性の連鎖に組み込まれねばならないであろう。
【０００６】
電源投入後又はリセットイベント後にコンピュータシステムを初期化するための典型的な起動シーケンスは、ＣＰＵの「電源投入自己診断」をもたらし、そこでは、プロセッサもまた、プロセッサのリセットベクタ(reset vector)によって示される専用の入力アドレスにて命令の実行を開始する。即ち、最初のプロセッサ自己診断の後、命令の実行は典型的にはソフトウエアルーチンのアドレスであってよいエントリーポイントにて開始されてよく、しばしばＢＩＯＳ（基本入出力システム(basic input/output system)）と称されるそのソフトウエアルーチンは、コンピュータプラットフォームの専用外部不揮発性メモリに記憶されていてよい。ＢＩＯＳの制御の下、残りの自己診断が実行されてよく、また、プラットフォームのハードウエア構成が決定又は「測定」されてよい。その後、例えばコンピュータシステムのハードディスク、ディスク、ＣＤ−ＲＯＭ、拡張カード等の大容量記憶デバイスのような起動可能デバイスの探索が実行されてよく、そこから主要な起動ブロックがシステムメモリに読み込まれてよく、次いで制御はその主要な起動ブロックに移されて、オペレーティングシステムがシステムメモリに読み込まれてよい。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
起動処理全体の安全性についてもこれを高めるために多大なる努力がなされてきてはいるが、例えばＢＩＯＳソフトウエアが収容されている不揮発性メモリチップの交換のようなプラットフォームの改変を考慮すると、該当するチップの交換は従って信頼性の連鎖を妨げかねず、それにより後続の全ての照合ステップを信頼できないものにしてしまうことがあるので、起動処理に対しての信頼できる、測定のための信頼性のコアルート(core root of trust for measurement)（ＣＲＴＭ）を提供することは難しい。
【０００８】
本開示は、上述した一つ以上の問題の影響を回避し又は少なくとも低減することができる種々の装置及び方法を対象としている。
【課題を解決するための手段】
【０００９】
以下、ここに開示される幾つかの側面の基本的理解のために、開示の簡略化された概要を提示する。この概要は網羅的な概観ではなく、また、要所となる若しくは臨界的な発明の要素を特定し又は発明の範囲を画定することが意図されているわけではない。その唯一の目的は、幾つかの概念を単純化された形態で以下に論じられる更に詳細な説明への序として提示することである。
【００１０】
概して、本開示は、実行可能な命令及びデータ値を含んでよい特定の一連のデータがその内部で提供される、測定のための信頼性の静的ルート(static root of trust for measurement)を確立することによって、コンピュータシステムの完全性を高めるための装置及びメカニズムに関連し、それら命令及びデータ値には、起動に際してはどのような場合でも、専用のデータセットへの裏をかいたアクセス(circumventing access)の可能性無しにマイクロプロセッサがアクセス可能であり、プラットフォームの初期化のための確定したルートが得られる。また、一連のデータは、あらゆる攻撃に対する高レベルな耐性が達成され得るように実装される。一連のデータに含まれる命令の実行の間、対応するルーチンは変更又は中断されないであろうから、起動前(pre-boot)の一連の命令及びデータ値として考えられてよいこの一連のデータの高度な完全性が提供され得る。起動前データのそれぞれの命令の処理は、考慮しているシステムの起動時に必須であるので、専用の一連の起動前データが後続の照合ステップの連鎖のための静的コアルートを提示してから、信頼されたソフトウエアの連鎖が開始されてよく、それにより高度なシステム完全性の確立が可能になる。そのために、起動前データセットはＣＰＵコアそれ自体の内部の不揮発性メモリ内に維持されていてよく、それによりＢＩＯＳチップ等を交換することに関するいかなる攻撃をも十分に回避することができる。
【００１１】
ここに開示される一つの例示的な方法は、コンピュータシステムを起動することに関連する。方法は、中央処理ユニット（ＣＰＵ）の不揮発性メモリ領域に記憶される第１の一連のデータにアクセスすることを備えており、第１の一連のデータは、ＣＰＵのコア回路にＣＰＵのランダムアクセスメモリを初期化させる第１の命令を含む。方法は、第２の一連のデータのイメージを不揮発性メモリから初期化されたランダムアクセスメモリに読み込むことを更に備えており、第２の一連のデータは、第２の一連のデータの完全性を照合するための署名を備え、更に、ＣＰＵにコンピュータシステムのシステムメモリを初期化させる第２の命令を備えている。更に、方法は、署名と第１の一連のデータに含まれる復号化鍵とを用いて第２の一連のデータの完全性を照合することを備えている。最後に、方法は、第２の一連のデータの照合が成功したときに、第２の命令を用いてシステムメモリを初期化することを備えている。
【００１２】
ここに開示される更なる例示的な方法は、コンピュータシステムの起動に関連し、電源投入イベント及びリセットイベントの少なくとも一方の場合にＣＰＵの内部不揮発性メモリにアクセスすることを備えている。不揮発性メモリには、ＣＰＵの内部ランダムアクセスメモリを初期化し且つコンピュータシステムの不揮発性メモリに記憶される起動命令及び起動データ値の少なくとも一部の完全性を照合するための起動前命令及びデータ値が収容されている。方法は、起動前命令を実行することによって起動命令及び起動データ値の一部を不揮発性メモリから内部ランダムアクセスメモリに読み込むことを更に備えている。また、起動命令及び起動データ値の一少なくとも一部の完全性は、起動前命令を実行することにより照合される。最後に、方法は、起動命令及び起動データ値の少なくとも一部の完全性の照合が成功した後に起動命令を実行することを備えている。
【００１３】
ここに開示される一つの例示的な中央処理ユニット（ＣＰＵ）は、ＣＰＵコア、ランダムアクセスメモリ、不揮発性メモリ並びにＣＰＵコア、ランダムアクセスメモリ及び不揮発性メモリを接続するためのバスシステムを画定する回路素子が形成された基板を備えている。また、ＣＰＵは不揮発性メモリ内に記憶された起動前情報を備えており、起動前情報は、ＣＰＵコアによって実行可能な命令を含み、更に揮発性ランダムアクセスメモリを初期化すると共に外部メモリデバイスから供給されるべき起動ルーチンの少なくとも一部を照合するためのデータ値を備えている。
【００１４】
ここに開示される更なる例示的な側面においては、上述の中央処理ユニットは、ＣＰＵに加えてシステムメモリ、起動ルーチンが収容されるメモリデバイス並びにシステムメモリ及び起動ルーチンが収容されるメモリデバイスをＣＰＵと接続するためのインタフェースシステムを備えたコンピュータシステムの一部であってよい。
【図面の簡単な説明】
【００１５】
本開示は、以下の説明を添付図面と併せて参照することにより理解することができ、添付図面において同等の参照番号は同等の要素を示す。
【００１６】
【図１ａ】図１ａは例示的な実施形態に従いランダムアクセスメモリ（キャッシュ(cache)）、ＣＰＵコア及び起動前情報が収容される不揮発性メモリを含む中央処理ユニット（ＣＰＵ）を模式的に示す図である。
【図１ｂ】図１ｂは他の例示的な実施形態に従い内部起動前情報が収容されるＣＰＵを含むコンピュータシステムを模式的に示す図である。
【図１ｃ】図１ｃは例示的な実施形態に従い起動情報の第１の部分の署名を創出するための処理の間に命令及びデータ値を含むブートストラップデータを操作するための処理ステップを模式的に示す図である。
【図１ｄ】図１ｄは例示的な実施形態に従い起動情報の一部の署名を照合するための処理を模式的に示す図である。
【図１ｅ】図１ｅは一つの例示的な実施形態に従い図１ｂに示されるコンピュータシステムの動作を説明するためのフローダイアグラムである。
【図１ｆ】図１ｆは更に他の例示的な実施形態に従い図１ａのＣＰＵのようなＣＰＵを含むコンピュータシステムの動作を説明するためのフローダイアグラムである。
【００１７】
ここに開示される主題は種々の改変及び代替的な形態を許容し得る一方で、その特定の実施形態は、図面内の例によって示されておりここに詳細に説明されている。しかしながら、特定の実施形態のここでの説明は、開示された特定の形態に本発明を限定することを意図しているのではなく、むしろ添付の特許請求の範囲に規定された本発明の精神及び範囲内にある全ての改変、均等なもの及び代替案を網羅する意図であることが理解されるべきである。
【発明を実施するための形態】
【００１８】
種々の例示的な実施形態が以下に説明される。明瞭のために、実際の実装の全ての特徴は本明細書において説明されていない。言うまでもなく、そのようないかなる実際の実施形態の開発においても、一つの実装と他とで異なるものになるであろうシステム関連及びビジネス関連の制約の遵守のような開発者の特定の目標を達成するために、多くの実装固有の決定がなされなければならないことは理解されるであろう。また、そのような開発努力は得てして複雑で時間のかかるものになろうが、この開示の利益を享受する当業者にとっては経常的業務であろうことが理解されよう。
【００１９】
添付図面を参照して本主題を説明する。種々の構成、システム及び装置が、説明のみを目的とし且つ当業者に周知の詳細と相まって本開示を不明確にすることのないように、図面内に模式的に描かれている。それでもなお、本開示の例示的な実例を説明するために添付図面が含まれているものである。ここで用いられている語句(words and phrases)は、関連分野も含めた当業者によるそれらの語句の理解と矛盾しないように理解され且つ解釈されるべきである。用語又は句(term or phrase)の特別な定義、即ち当業者によって理解されるような通常の慣例的な意味とは異なる定義は、ここでの用語又は句の一貫した用法によって暗示されることを意図したものではない。用語又は句が特別な意味、即ち当業者によって理解される以外の意味を有することが意図される限りにおいて、そのような特別の定義は、用語又は句に対する特別な定義を直接的に且つ明白に提供する方法で明細書中に明示的に記載されるであろう。
【００２０】
概して、本開示は、起動又はリセットあるいはシステムの初期化を必要とする他の動作状態に際して、命令を実行し、中央処理ユニットの一部として動作する不揮発性メモリに記憶されたデータを用いて、その不揮発性メモリに収容されている一連のデータを操作する可能性を著しく減少させるためのシステム及びメカニズムを提供する。従って、不揮発性メモリの内容は、ＣＰＵの電源投入又はリセットの場合に第１の命令が不揮発性メモリから確実に取り込まれるようにすることによって、ＣＰＵ及びコンピュータシステム全体の初期化の間に測定のための信頼性の静的ルートとして用いられてよい。このように、そこに収容されている一連のデータは、起動前又はＢＩＯＳ前構成要素(pre-boot or pre-BIOS component)として機能してよく、それらは、動作データ状の変数やＢＩＯＳソフトウエアの一部を実行するためのスタック(stack)及び情報を記憶するのに用いられてよい内部ランダムアクセスメモリのような更なるシステム構成要素の初期化を可能にするであろう。例えば、ランダムアクセスメモリの一部としてのデータキャッシュ、及び命令キャッシュは、内部不揮発性メモリの起動前データによって初期化されてよく、そこに収容されているデータへの初期化処理の間における外部アクセスの可能性を十分に回避することができる。つまり、ランダムアクセスメモリ領域、即ちデータキャッシュ及び命令キャッシュは、ＣＰＵ内部構成部品であり、特に外部システムメモリがこの段階で初期化されていないときに、好ましからざる操作を極めて困難なものにすることができる。ＢＩＯＳ完全性を考慮した一つ以上の署名の照合が、ランダムアクセスメモリ内において、命令キャッシュに適合するサイズを有するように構成される第１の部分に対して実行され得るように、ＢＩＯＳルーチンは、ランダムアクセスメモリの記憶容量に応じて二つ以上の部分に分割されていてよい。このように、起動情報のこの部分は、その完全性を照合した後に、ランダムアクセスメモリから直接的に実行されてよい。従って、起動前命令を実行することによるランダムアクセスメモリの初期化及び起動情報の一部分の読み込みの間は、起動前情報は外部からアクセスされなくてすみ、第１の署名照合処理のいかなる操作をも実質的に回避することができる。幾つかの例示的な実施形態では、例えばＢＩＯＳ改訂版(upgrade veisions)等の完全性を評価するための復号化鍵にアクセスすることを目的とした外部アプリケーションによる署名照合の後に、起動前情報がアクセスされてよい。
【００２１】
従って、起動情報の第１の部分の署名照合の後、フロー制御はこの部分に移ってよく、システムメモリを初期化し且つ残りの起動情報を複写する一方で起動情報の更なる部分の完全性も照合することによって、更なる起動処理が継続されてよい。それ故、ＣＰＵの一体化部分として提供される不揮発性メモリに収容されるデータ、即ち命令及びデータ値は、測定のための信頼性の静的コアルートとして用いられてよく、それにより耐改ざん性ハードウエア及びソフトウエア構成を達成し得るコンピュータプラットフォームの提供が可能になる。特に、ＢＩＯＳチップの交換のような攻撃を考慮すると、ここに開示される実施形態のメカニズムは、信頼できるコンピュータプラットフォームの必要性に基くであろう金融取引又はデジタル著作権管理のコンテキストにおいてプラットフォームを使用する典型的な実用上のアプリケーションに対して強化された安全性を提供することができる。
【００２２】
図１ａは測定のための信頼性のコアルート（ＣＲＴＭ）が高度な耐改ざん性(tamper resistance)で実装された例示的な実施形態に従う中央処理ユニット（ＣＰＵ）１００を模式的に示している。ＣＰＵ１００は、算術演算、論理演算等を実行するようなデータ処理のための構成要素を含んでよいＣＰＵコア１０２を備えていてよい。ＣＰＵコア１０２は、ＣＰＵ１００の全般的な構成に適合するように、複数のスタティックＲＡＭセル等を備えていてよいランダムアクセスメモリ１０１に機能的に接続されている。一つの例示的な実施形態では、ＲＡＭ１０１は、データキャッシュ１０１Ａとしても示される第１のメモリ部分と命令キャッシュ１０１Ｂとして示される第２の部分とを備えていてよい。例えば、ＲＡＭ１０１は、高性能な集積回路において典型的に求められるような、ＣＰＵ１００の全体的な性能を高めるための高速メモリ技術によって実現され得る。しかしながら、ＣＰＵ１００の初期化の間における外部からのアクセスの可能性なしにＣＰＵコア１０２を介したメモリ１０１の直接制御が達成可能である限りにおいて、任意の適切なメモリ技術がメモリ１０１に対して使用可能であることは理解されるべきである。
【００２３】
また、ＣＰＵ１００は、任意の適切なメモリ技術において、例えばフラッシュメモリの形態で又は任意の他のリードオンリメモリ技術において提供され得る不揮発性メモリ１０３を備えていてよく、不揮発性メモリ１０３は、メモリ１０３の内容を改変するための外部アクセスを可能にしなくてよい。それ故に、メモリ１０３は安全なメモリ領域(secure memory area)とみなしてよく、従ってその内容は信頼性の静的ルートを提示することができる。この目的のために、ＣＰＵコア１０２により実行可能な命令及びそれら命令のオペランド等を表すデータ値として理解されるべき一連のデータ１０３Ａが、メモリ１０３の少なくとも一部分、すなわちメモリ１０３の当該部分が一旦プログラムされたら新たなデータで上書きすることのできない部分に設けられている。一連のデータ１０３Ａが収容されているメモリ１０３は、電源投入又はリセットに際してメモリの規定アドレスへのジャンプが実行されるように、バスシステム１０４によってＣＰＵコア１０２に接続されていてよい。従って、ＣＰＵコア１０２のリセットベクタのための「ハードウエア組み込み」目標(“hard-wired” target)が、少なくとも電源投入イベント及びリセットイベントに対して命令の実行が安全なメモリ１０３から開始されることを確実にするために設けられていてよい。
【００２４】
ＣＰＵ１００のための特定のデバイスアーキテクチュアに従ってトランジスタ要素、キャパシタ、抵抗等を形成可能なＣＭＯＳプロセス等のような考慮中の技術に基いて形成される複数の回路要素を、半導体基板等の適切なキャリア材質で支えることができる高度な半導体製造技術に基いて、ＣＰＵ１００が形成可能であることは理解されるべきである。従って、ここで例示される実施形態では、ＣＰＵ１００の種々の構成部品は、共通の製造処理フローを経て共通の基板上に形成することができ、それによりメモリ１０１及び１０３は、デバイス１００の内部の又は一体的な構成部品として提供され得る。例えば、それぞれの製造技術は十分に確立されており、揮発性且つ高速のメモリセルは、ＣＰＵコア１０２で必要とされるであろう不揮発性メモリセル及び高性能論理ゲートと共に形成可能である。また、一連のデータ１０３Ａが収容されるメモリ１０３又は少なくともその一部をプログラミングした後には、データビットを変更するためのそれ以降のアクセスを阻み、データセット１０３Ａのための保護された環境が提供され得るように、適切なメカニズムが設けられていてよい。
【００２５】
図１ｂは既に説明したような一連のデータ１０３Ａのための保護された環境を提供するＣＰＵ１００を備えたコンピュータシステム１５０を模式的に示しており、図示された実施形態では、ＣＰＵ１００はデータキャッシュ１０１Ａ及び命令キャッシュ１０１Ｂの形態にあるランダムアクセスメモリ１０１を備えていてよく、ランダムアクセスメモリ１０１（データキャッシュ１０１Ａ）は、起動情報の一部に適合し且つデータセット１０３Ａの命令を実行するときに「システムＲＡＭ」として作動するように例えば６４ｋＢのサイズを有していてよい。同様に命令キャッシュ１０１Ｂは６４ｋＢのサイズで設けられていてよく、照合処理の間メモリ１０１から実行されることになる起動情報の該当する部分のサイズに適合する他の適切なメモリサイズが用いられてよいことは理解されるべきである。同様に、内部不揮発性メモリ１０３は、コンピュータシステム１５０用の測定のための信頼性のコアルートを提示するデータ１０３Ａに対する要求に適合するように、任意の適切なサイズ、例えば３２ｋを備えていてよい。例えば、一連のデータ１０３Ａは、照合処理を実行するのに起動情報の該当する部分を内部メモリ１０１に取り込む(load)ための安全なロードルーチンを提示する命令及びデータ値を備えていてよい。また、一連のデータ１０３Ａは、起動情報の署名された部分をメモリ１０１内で照合可能にするために、非対称暗号化／復号化アルゴリズムの公開鍵を提示する一つ以上の復号鍵を備えていてよい。データセット１０３Ａにおける公開鍵の数が、例えば高度な完全性等を有するそれぞれの鍵ペアを提供するための適切な基盤を維持することを考慮した安全性の考察に従って選択されてよいことは理解されるべきである。
【００２６】
コンピュータシステム１５０は、ダイナミックＲＡＭセル等のランダムアクセスメモリセルを含む例えば任意の適切なメモリデバイスの形態のシステムメモリ１１０を更に備えていてよい。システムメモリ１１０のサイズは、性能及び記憶能力を考慮したシステム１５０の要求に適合していてよい。また、システム１５０は、ＢＩＯＳ情報とも称される情報を収容することができるフラッシュメモリ等の不揮発性メモリ１２０を備えていてよく、少なくともその一部は署名部分であり、即ち、署名部分は暗号化メカニズムと組み合わされる適切なハッシュ(hash)アルゴリズムに基いて得られる署名を備えていてよく、そのために、前述したように一つ以上の適切な暗号鍵が一連のデータ１０３Ａに含まれていてよい。
【００２７】
一つの例示的な実施形態では、不揮発性メモリ１２０は二つの部分、即ち第１の部分及び第２の部分に分割される起動情報を収容していてよく、第１の部分は、システムメモリ１１０等の他のシステム構成要素を初期化するためのデータ及び命令を備えていてよく、他のシステム構成要素は、起動情報の第２の部分を収容可能であって、ＣＰＵ１００により提供される保護された環境に基いて第１の部分がひとたび照合されたら第２の部分を実行するためのものである。不揮発性メモリ１２０内の起動情報の更に詳細な構成は、図１ｃ及び１ｄを参照しながら後で説明する。
【００２８】
コンピュータシステム１５０は、システムメモリ１１０及び不揮発性メモリ１２０をＣＰＵ１００と動作的に接続するように構成されたインタフェースシステム１４０を更に備えていてよい。一つの例示的な実施形態では、システム１５０は、例えば起動ソース及び関連するパラメータに関するプラットフォーム固有の情報を収容可能な１回書き込み可能メモリ１３０を更に備えていてよい。例えば、図示されるように、１回書き込み可能メモリ１３０は、内部メモリ１０３から起動するか否かをＣＰＵ１００に対して示すために、起動オプションに関する情報を備えていてよい。また、メモリ１３０内に設けられたセキュリティビットは、リセット後のＣＰＵ１００の初期命令取り込み(initial instruction fetch)が何処に根ざしているかを決定する個別のビットを含んでいてよい。例えば、このビットが「１」にセットされると、実行は内部メモリ１０３に移され、それにより安全な起動処理が可能になる。幾つかの例では、開発／デバッグの目的のために安全な起動機能を無効にすることが望ましいことがある。他の例では、プラットフォームの要求に応じて、信頼されたプラットフォームセキュリティ特性を無効にし又はバイバスすることが望ましいこともある。この場合、このビットの状態の変化が安全な起動処理の間に許容可能でなくてよい。この目的のために、全てのデバッグモード（ＪＴＡＧ、…）は少なくとも起動時の間は無効にされる。それぞれのデバッグモードを無効にした後に安全な起動処理は実行されてよく、そのことは後で更に詳しく説明する。同様にメモリ１３０は安全な起動処理の間にデバッグ特性を制御するためのビットを含んでいてよく、それにより開発期間には有利なものとなるが、製品においてはデバッグ特性の当該制御は無効にされることとなる。これらのセキュリティビットに加えて、メモリ１３０は、他の情報、例えばデジタル著作権管理アプリケーション等に使用可能であろう製造供給元識別又は任意の固有番号を備えていてよい。他の例示的な実施形態では、１回書き込み可能メモリ１３０は、省略されてよく又は開発及び実際の適用に際しての安全な起動処理を制御する他の情報を収容するように設けられてよいことが理解されるべきである。
【００２９】
図１ｃは不揮発性メモリ１２０に記憶されていてよい起動情報１２１の構成を模式的に示している。図１ｃに示される実施形態では、ＢＩＯＳとも称されることのある起動情報１２１は、前述したようにメモリ１０１のサイズに適合するサイズを有する命令及びデータ値を含む一連のデータを表してよい第１の部分１２１Ａを備えていてよい。例えば、ＲＡＭ領域１０１Ａ、１０１Ｂの各々のための上述した例示的な所定値６４ｋＢに対して、第１の部分１２１Ａの最大サイズは概ね３２ｋＢに制限されてよい。しかしながら、ＲＡＭ１０１の範囲内における利用可能な記憶容量に応じて第１の部分１２１Ａの他の適切なサイズが適用可能であることは理解されるべきである。また、典型的な起動ルーチンは数百ｋＢｙｔｅ以上のサイズを有することがあるので、起動情報１２１がメモリ１０１のサイズを超えてしまい起動処理の全部がメモリ１０１に基いて実行することができなくなるような起動情報１２１に対して第１の部分１２１Ａを備えることが必要になり得ることも理解されるべきである。他の例では、十分な記憶スペースが利用可能である場合には、起動情報１２１全体が安全な起動処理の間に用いられてよく、このことは後で更に詳細に論ずる。
【００３０】
このように、図１ｃに示されるように第１の部分１２１Ａが設けられている場合には、第１の部分１２１Ａは第２の部分１２１Ｂに対する初期ＢＩＯＳ「ローダ」(BIOS “loader”)として機能し、第１の部分１２１Ａはその内部に第２の部分１２１Ｂについて得られたハッシュ値を含んでいてよい。第２の部分１２１Ｂについてのハッシュ値もまた、第１の部分１２１Ａに含まれる署名によって、第１の部分１２１Ａに対して得られたハッシュ値に基いて保護されていてよく、そのハッシュ値は専用の信頼性センター(trust center)において得られたものであってよい。このように、第２の部分のハッシュ値の暗号化は必要でないかもしれない。第１の部分１２１Ａに対するハッシュ値の署名は、安全な起動処理の間に第１の部分１２１Ａを照合するために用いられてよい。従って、第１の部分１２１Ａは、必要とされるプラットフォーム初期化活動、例えばメモリ制御器等の初期化を実行するように構成されてよく、その初期化に次いで第２の部分１２１Ｂはメモリ１２０から初期化されたシステムメモリ１１０へと隠される。
【００３１】
第１の部分１２１Ａの実行に際しては、システムメモリ１１０に複写されたイメージ１２１Ｂに対してもハッシュ値が計算されてよく、そのハッシュ値は次いで第１の部分１２１Ａに当初含まれていたハッシュ値と比較されてよい。このように、第２の部分１２１Ｂの完全性は、第１の部分１２１Ａに含まれるハッシュ値に基いて照合することができ、それにより完全性の信頼された連鎖が提供される。従って、図１ｃに示されるように、第１の部分１２１Ａは、適切な信頼できる環境に基き適切な信頼性センターにおいて遂行され得る署名を得るように処理されてよい。この目的のために、安全なハッシュアルゴリズムを適用して、例えばｈａｓｈ０、ｈａｓｈ１、ｈａｓｈ２と示される一つ以上のハッシュ値を適切な制御データと共に提供することができる。その後、任意の適切な暗号化技術、例えば適切な私有鍵を利用したＲＳＡ（リベスト(Rivest)、シャミア(Shamir)、エーデルマン(Adelman)）アルゴリズムが用いられてよく、それにより図１ｃの右側に示されるように暗号化されたハッシュ値を得ることができる。前述したように、適切な数の公開鍵がデータセット１０３Ａに含まれていてよく、それにより図１ｃに示されるシーケンスの間に創出された署名又は暗号化されたハッシュ値の復号化が可能になる。
【００３２】
図１ｄは、システム１５０の起動時にデータセット１０３Ａに基いて実行されてよい、第１の部分１２１Ａに含まれる署名の照合のためのシーケンスを模式的に示している。照合は、例えば公開鍵を用いるＲＳＡアルゴリズムに基いて達成可能であり、それによりｈａｓｈ０、ｈａｓｈ１、ｈａｓｈ２等の最初に創出されたハッシュ値を得ることができる。それらの最初に創出されたハッシュ値は、次いで、ＲＡＭメモリ１０１に複写されている第１の部分１２１Ａについて適切なハッシュアルゴリズムを適用することにより得られるであろうそれぞれのハッシュ値と比較されてよい。もし算出されたハッシュ値が図１ｄの左側に示されるように第１の部分１２１Ａにおける署名を復号化して得られた最初に生成されたハッシュ値と一致すれば、第１の部分１２１Ａは照合されたとみなしてよい。
【００３３】
図１ｅ及び１ｆを参照して、例示的な実施形態に従うシステム１５０の動作を安全な起動処理の間について更に詳細に説明する。前述したように、安全なプラットフォームを提供することを考慮すると、考慮中のコンピュータシステムの電源投入又はリセット後におけるオペレーティングシステムの安全な起動を可能にするためには、信頼性の静的ルートが実装されていなければならないであろう。この目的のために、いかなる外部操作に対しても十分な耐性のある信頼された一連のデータ１０３Ａに基いて少なくとも第１の部分１２１Ａを照合することにより、信頼されたＢＩＯＳ情報１２１の規定の実行が達成され得る。このように、システムが起動するたびに安全な起動処理が開始され、暗号化法を用いることによって、当初のハードウエア及びソフトウエアの構成についての完全性の照合を達成することができる。従って、起動情報１２１、即ち図示された実施形態では部分１２１Ａ、１２１Ｂの完全性を照合するときに、起動処理の全体の完全性を確認することができ、それにより、次いで安全性に敏感なアプリケーションを実行するために用いられるであろうオペレーティングシステムの信頼に足る初期化が可能になる。一方、例えば部分１２１Ａ又は１２１Ｂの照合の間における完全性の試験が不合格であれば、例えばシステムにより提供されるサービスを制限し、あるいは他の例示的な実施形態では起動処理を実際上無効にするような適切な指針が適用される。
【００３４】
このように、ここで開示される安全な起動アーキテクチャは、与えられたセキュリティシステムのあらゆる状況に対して作用する攻撃として理解されるべき「クラスブレイク(class breaks)」から保護することができる。例えば、外部ソースで生成された一片のソフトウエアが、インストールが容易で且つセキュリティ／保護の測定の回避を可能にし、それによりプラットフォームの権限のない使用を可能にしてしまうクラスブレイクであると考えられることがある。デジタル著作権管理（ＤＲＭ）の環境においては、ＤＲＭ保護されたデータファイルが一旦破られればクラスブレイクは既に与えられている可能性があり、保護されていないファイルの再配布が可能になってしまう。そこで、ここに開示されているメカニズム及びシステムによれば、ＣＰＵそれ自体の内部の集積化部分に基いて保護された環境を得ることができ、それによりＣＰＵそれ自体の操作を必要とし、あるいは起動情報を署名し秘密鍵を維持するための基盤におけるそれぞれの欠陥を必要とし、いずれの場合においても時間的金銭的に多大なる労力が必要になるであろうから、クラスブレイクに関する安全性の強化が可能になる。
【００３５】
図１ｅはシステム１５０の動作について説明するためのフローダイアグラムを模式的に示している。ステップＳ１００では、システム１５０がリセットされてよく、あるいは電力がシステム１５０に供給されてよく、あるいは安全な起動処理を必要とするであろう他のイベントが生じてよい。その結果、適切な自己診断(self-test)がＣＰＵコア１０２によって実行されてよく、レジスタ等のそれぞれの部品が初期化されてよい。幾つかの実施形態では、安全な起動処理が有効にされずにオペレーティングシステムの動作状態がシステム１５０の管理下に留まっていてよいことは理解されるべきである。ステップＳ１１０では、内部不揮発性メモリ１０３を対応するリセットベクタアドレスにマッピング(mapping)することで取得可能な第１の命令が内部不揮発性メモリ１０３から取り込まれる。その結果、リセットベクタへのジャンプが任意の外部イベントに起因する場合にはいつでもＣＰＵ１００は安全なデータセット１０３Ａに基いて実行を開始する。ステップＳ１２０では、データセット１０３Ａに含まれる命令の実行により内部ランダムアクセスメモリ１０１が初期化されてよい。ステップＳ１３０では、起動情報１２１の少なくとも一部、例えばその署名を含む第１の部分１２１Ａが内部ランダムアクセスメモリ１０１に読み込まれてよい。ステップＳ１４０では、データセット１０３Ａ内に含まれる復号化鍵を用いることにより、起動情報１２１又はその第１の部分１２１Ａの完全性が照合されてよい。
【００３６】
即ち、メモリ１０１を初期化した後に起動情報１２１又は少なくとも第１の部分１２１Ａに対する署名チェックが開始される。この目的ために、幾つかの実施形態では、起動情報１２１又はその第１の部分１２１Ａに対する一つ以上の署名がスキップされ得るＳＨＡ１等の安全なハッシュアルゴリズムに基いてハッシュ値が計算されてよい。更に、１回書き込み可能メモリ１３０に収容される製造供給元識別のような付加的情報が場合によっては用いられてよく、また一つ以上のハッシュ値を計算するために含まれていてよい。一つ以上の計算されたハッシュ値は、次いで、図１ｂを参照して既に説明したように、データ１２１又は１２１Ａの専用の場所に含まれる一つ以上のハッシュ値と比較されてよい。そのために、一つ以上の署名からのハッシュ値が、当初のハッシュ値を得るために、データセット１０３Ａに含まれる公開復号化鍵を用いて検索(retrieve)されてよい。計算されたハッシュ値及び当初のハッシュ値の両方が一致する場合には、起動情報１２１又はその第１の部分１２１ＡはステップＳ１５０で信頼できるものとみなされ、起動処理はステップＳ１６０で継続される。ステップＳ１５０で完全性チェックが不合格の場合には、ステップＳ１７０において対応する起動障害が表示されてよく、一つの実施形態では、起動処理を終了すること及び対応するエラーコードを発行することを伴ってよい。
【００３７】
上述した実施形態では、起動情報１２１又はその第１の部分１２１Ａでの実行に移る前に、安全な起動処理、即ちステップＳ１００乃至Ｓ１５０で表される処理フローは、システム１５０のどの構成部品に対してもいかなるリセット手続きをも適用しないので、システム１５０のハードウエア構成の信頼できる「測定」が可能である。
【００３８】
図１ｆは他の例示的な実施形態に従う安全な起動処理を模式的に示している。図示されるように、ステップＳ１０１では、安全な起動処理が有効にされているか否かが決定されてよい。メモリ１３０に含まれるそれぞれのセキュリティビットをセットすることにより、該当する表示が得られる。ステップＳ１００により、前述したように不揮発性メモリ１０３から実行が開始される。ステップＳ１０２では、例えば出力ポートを適切に設定するために状態情報が供給されてよい。例えばステップＳ１０２では、内部自己診断の間に安全な起動処理が開始されることが表示されてよい。ステップＳ１２０では、システム１５０と特にＣＰＵ１００とが初期化されてよく、ステップＳ１２０は例えば一つ以上のステップＳ１２１乃至Ｓ１２９を備えていてよい。例えばステップＳ１２１では、本当に最初の命令が確実にメモリ１０３から取り込まれるようにするために、メモリ１０３のアドレスが適切に再配置されてよい。ステップＳ１２２では起動ソースが検出されてよく、起動ソースはステップＳ１２３で初期化されてよい。また、メモリ１０１、即ちデータキャッシュ１０１Ａ及び命令キャッシュ１０１ＢはステップＳ１２４、Ｓ１２５において初期化されてよく、ステップＳ１２６ではデータキャッシュのための非現実(unreal)モードがセットアップされてよい。更に、起動情報１２１又はその第１の部分１２１Ａのイメージがデータキャッシュ１０１Ａに複写されてよく、ステップＳ１２８ではデータキャッシュ１０１Ａにおける変数に対して記憶スペースが割り当てられてよい。最後にもし必要であればステップＳ１２９において製造供給元識別が検索されてよい。
【００３９】
ステップＳ１４１において起動情報１２１又はその第１の部分１２１Ａが読まれ、ステップＳ１４２においては、最初のハッシュ値を得るために該当するハッシュアルゴリズムが実行されてよい。ステップＳ１４３では、前回読まれたデータブロックが最後のブロックであったか否かが決定される。もし否であれば、処理フローはステップＳ１４１に戻り更なるデータブロックが読み込まれ、続いてステップＳ１４２でハッシュ値が計算されると共に前回得られた値が更新される。ステップＳ１４３で最後のブロックが読まれると、ステップＳ１４４では算出されたハッシュ値が記憶され、ステップＳ１４５にてデータ１２１又は１２１Ａの関連する部分が読まれて、そこに含まれる署名が得られる。例えば、この目的のために情報１２１又はその部分１２１Ａのヘッダブロックが用いられてよい。ステップＳ１４６では一つ以上の署名が読み出され、ステップＳ１４７では、ステップＳ１４６で得られた署名を復号化するために一つ以上の公開鍵が適用される。ステップＳ１５０では、ステップＳ１４４で記憶された単一又は複数のハッシュ値がステップＳ１４７を実行して得られた元のハッシュ値と比較され、それによりデータ１２１又は１２１Ａが信頼に値するものか否かを決定することができる。
【００４０】
ステップＳ１５０でハッシュ値が一致すれば、前回初期化された命令キャッシュは起動データ１２１又は１２１Ａで更新されてよく、それらはデータキャッシュ１０１Ａにその時点で収容されているものであるから、その内部の起動データが照合される。ステップＳ１６２では安全な起動処理の状態が表示されてよく、最終的にはステップＳ１６３において命令キャッシュからの命令を実行することで起動が継続されてよく、その命令には、例えば、システムメモリ１１０の初期化と、起動データ１２１の任意の残りの部分、例えば第２の部分１２１Ｂを検索することと、それらの完全性を、ハッシュ値を算出し算出されたハッシュ値を第１の部分１２１Ａに含まれる元のハッシュ値と比較することにより照合することとが含まれる。ステップＳ１５０で完全性が確認されない場合には、ステップ１７１で対応する状態情報（例えば０ｘＣＤ）が提供されてよく、一つの実施形態ではステップＳ１７２において実行が終了してよい。
【００４１】
その結果、ここに開示されるシステム及びメカニズムは、不揮発性メモリに収納される起動前ルーチンであって、不揮発性メモリにデータが一旦プログラムされたら上書きすることのできない起動前ルーチンに基いて、安全な起動処理を提供することによって、コンピュータプラットフォームの強化された完全性を提供する。不揮発性メモリはＣＰＵそれ自体の一部であるから、署名された起動情報又は少なくとも起動情報の署名された部分に適用されてよい適切な復号化鍵をも収容するその不揮発性内部メモリに記憶された起動前情報に基いて、システムの初期化を完遂することができる。起動情報又はその一部に対する適切なハッシュ値を算出するための処理及び起動情報内に暗号化された形態で記憶されている当初創出された値との比較は、ＣＰＵの内部ランダムアクセスメモリを用いて達成することができるので、外部からのアクセスの可能性、ひいてはシステム構成の操作の可能性を阻むことが可能になる。従って、内部に記憶された起動前情報は、システム初期化の間に測定のための信頼性のコアルートとして用いることができる。
【００４２】
以上開示された特定の実施形態は例示にすぎず、本発明は改変されてよく、また、ここでの示唆の利益を享受する当業者に明らかな、均等であるが異なるやり方で実施されてよい。例えば、上述した処理ステップは異なる順序で実行されてよい。また、以下の特許請求の範囲に記載されていることを除き、ここで示されている構成又は設計の詳細に限定することは意図されていない。従って、以上開示された特定の実施形態が変更され又は修正されてよく、そのような全ての変形が本発明の精神及び範囲内にあるものとみなされることは明らかである。従って、ここでの保護の対象は以下の特許請求の範囲に記載された通りである。
【図１ａ】
2011527777.tif 000003
【図１ｂ】
2011527777.tif 000004
【図１ｃ】
2011527777.tif 000005
【図１ｄ】
2011527777.tif 000006
【図１ｅ】
2011527777.tif 000007
【図１ｆ】
2011527777.tif 000008
【国際調査報告】
2011527777.tif 000009
2011527777.tif 000010