JP2002287978A - コンピュータにおいてコードを安全に初期化するための方法およびシステム - Google Patents

コンピュータにおいてコードを安全に初期化するための方法およびシステム

Info

Publication number
JP2002287978A
JP2002287978A JP2001357612A JP2001357612A JP2002287978A JP 2002287978 A JP2002287978 A JP 2002287978A JP 2001357612 A JP2001357612 A JP 2001357612A JP 2001357612 A JP2001357612 A JP 2001357612A JP 2002287978 A JP2002287978 A JP 2002287978A
Authority
JP
Japan
Prior art keywords
memory
processor
central processing
computer
trusted core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2001357612A
Other languages
English (en)
Other versions
JP4486288B2 (ja
JP2002287978A5 (ja
Inventor
Paul England
イングランド ポール
Bryan Willman
ウィルマン ブライアン
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 JP2002287978A publication Critical patent/JP2002287978A/ja
Publication of JP2002287978A5 publication Critical patent/JP2002287978A5/ja
Application granted granted Critical
Publication of JP4486288B2 publication Critical patent/JP4486288B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • 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
    • 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
    • G06F9/4405Initialisation of multiprocessor systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 コンピュータにおいてコードを安全に初期化
するための方法およびシステムを提供する。 【解決手段】 メモリコントローラ106は、CPUお
よび他のI/Oバスマスタがコード(たとえば、トラス
テッドコア)初期化プロセス中にメモリ110にアクセ
スするのを防止する。メモリコントローラ106は、C
PUをコンピュータにおいてリセットし、CPUがメモ
リの特定の場所(CPUに対してメモリコントローラに
よって識別される)でアクセスを開始できるようにす
る。初期化プロセスがそのCPUによって実行された
後、コードは動作状態であり、他のいかなるCPUも
(リセットされた後に)メモリにアクセスすることがで
き、(開始されたコードによって課せられたいかなる制
御も受ける)他のいかなるバスマスタもメモリ110に
アクセスすることができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、安全なコード実行
に関し、より詳細には、コンピュータにおいてコードを
安全に初期化するための方法およびシステムに関する。
【0002】
【従来の技術】人々がコンピュータを信用できるように
することは、ますます重要なゴールとなってきている。
この信用は一般に、コンピュータが格納あるいは受信す
る情報を正しく使用することを信用できることに集中し
ている。厳密にこの信用が何を内含するかは、環境に基
づいて変わる可能性がある。たとえば、マルチメディア
コンテンツプロバイダは、コンピュータが不適切にそれ
らのコンテンツをコピーしないことを信用できることを
望む。もう1つの例として、ユーザは自分のコンピュー
タが内密の金融情報(たとえば、銀行口座番号)を適切
な宛先のみに転送すること(たとえば、この情報を自分
の銀行に渡すことはできるが、それ以外のところには渡
すことができないようにすること)を信用できることを
望む。残念ながら、大抵のコンピュータの一般に開かれ
た特性が与えられると、幅広い範囲のアプリケーション
を大抵の現在のコンピュータ上で、ユーザが知ることな
く実行させることができ、これらのアプリケーションが
この信用を損なう(たとえば、ユーザの金融情報を、あ
る他の宛先へ不当な使用のために転送する)おそれがあ
る。
【0003】これらの信用の問題に対処するため、コン
ピュータまたはその一部を信用できるようにする、異な
る機構が提案されている(また、新しい機構が開発され
ている)。一般に、これらの機構は、ある種類の認証手
順を内含しており、コンピュータが、少なくともその一
部(たとえば、メモリのある領域、あるアプリケーショ
ンなど)が少なくともそれらがそれら自体を提示するも
のと同じように信用できること(たとえば、コンピュー
タまたはアプリケーションが実際に、それが主張するも
のであること)を認証あるいは証明することができる。
すなわち、これらの機構は、不当なアプリケーションが
別のアプリケーションのふりをすること(あるいは、コ
ンピュータが別のコンピュータのふりをできるようにす
ること)を防止する。このような機構を確立することが
できるようになった後、ユーザまたは他者(たとえば、
コンテンツプロバイダ)が、特定のアプリケーションを
信用できるものとして受け入れるかどうかについての判
断を行うことができる(たとえば、コンピュータが、特
定のアプリケーションがそれ自体の主張するアプリケー
ションであるという、コンテンツプロバイダの満足を証
明することができるようになった後、マルチメディアコ
ンテンツプロバイダが、特定のアプリケーションを信用
できるものとして受け入れることができる)。しかし、
このような機構をコンピュータ上に設置することは困難
である可能性があり、これは、この機構に干渉する不当
なアプリケーション(たとえば、信用されている機構の
ふりをする不当なアプリケーション)に対する保護が必
要となるからである。
【0004】1つの解決策は、コンピュータをブートす
るための信用できる機構を含むコンピュータを構築する
ことである。しかし、コンピュータをブートすること
は、典型的には、様々なコード片を使用することを含
み、これはしばしば基本入出力システム(BIOS)と
呼ばれ、また、潜在的に多数のオプションの読取り専用
メモリ(ROM)またはBIOS拡張機能を使用するこ
とを含み、これはオペレーティングシステムをある他の
記憶デバイス(典型的にはハードディスクドライブ)か
らロードするように動作する。したがって、コンピュー
タをブートするための信用できる機構は、BIOSが信
用できるものであり、オプションの各ROMが信用でき
るものであり、各BIOS拡張機能が信用できるもので
あることを、信用できるオペレーティングシステムをコ
ンピュータにロードできるようになる前に必要とする。
これらの各構成要素を信用できるものにすることが困難
であるだけでなく、BIOS、オプションのROM、お
よびBIOS拡張機能が頻繁に、コンピュータにおいて
再書き込みすることができるデバイス(たとえば、フラ
ッシュメモリ)上に格納され、したがって、これらの保
全性が損なわれる。したがって、コンピュータをブート
するための信用できる機構を含むコンピュータを構築す
ることは、問題がある可能性がある。
【0005】
【発明が解決しようとする課題】よって本発明の目的
は、これらの欠点に対処し、コンピュータにおいてコー
ドを安全に初期化するための方法およびシステムを提供
することにある。
【0006】
【課題を解決するための手段】コンピュータにおいてコ
ードを安全に初期化できるようにするための方法および
システムが本明細書に記載されている。
【0007】本発明の一形態によれば、メモリコントロ
ーラが、CPUおよび他のI/Oバスマスタがコード
(たとえば、OS、マイクロカーネル、または他のトラ
ステッドコア)初期化プロセス中にメモリにアクセスす
るのを防止する。メモリコントローラは、CPUをコン
ピュータにおいてリセットし、CPUがメモリの特定の
場所(CPUに対してメモリコントローラによって識別
される)でアクセスを開始できるようにする。初期化プ
ロセスがそのCPUによって実行された後、コードが動
作状態であり、他のいかなるCPUも(リセットされた
後に)メモリにアクセスすることができ、(開始された
コードによって課せられたいかなる制御も受ける)他の
いかなるバスマスタもメモリにアクセスすることができ
る。
【0008】請求項1に係る本発明は、1つまたは複数
のコンピュータ可読媒体であって、コンピュータの1つ
または複数のプロセッサによって実行されたとき、前記
コンピュータの動作を、信用されていないコードに基づ
いて開始できるようにすること、前記信用されていない
コードの制御下で、トラステッドコアをメモリにロード
すること、前記コンピュータにおける1つまたは複数の
中央処理装置の各々および1つまたは複数のバスマスタ
の各々が前記メモリにアクセスするのを防止すること、
前記1つまたは複数の中央処理装置の各々をリセットす
ること、1つの中央処理装置が前記メモリにアクセス
し、かつ前記トラステッドコアを初期化するためにトラ
ステッドコア初期化コードを実行できるようにするこ
と、および、前記トラステッドコアの実行が初期化され
た後、前記コンピュータにおける他のいかなる中央処理
装置およびいかなるバスマスタも前記メモリにアクセス
できるようにすることを含む動作を前記1つまたは複数
のプロセッサに実行させる複数の命令が格納されている
ことを特徴とする1つまたは複数のコンピュータ可読媒
体である。
【0009】請求項2に係る本発明は、前記1つまたは
複数のプロセッサは、1つまたは複数のメモリコントロ
ーラの1つまたは複数のコントローラを含むことを特徴
とする請求項1に記載の1つまたは複数のコンピュータ
可読媒体である。
【0010】請求項3に係る本発明は、前記1つまたは
複数のメモリコントローラは、前記1つまたは複数の中
央処理装置の間で分散されていることを特徴とする請求
項2に記載の1つまたは複数のコンピュータ可読媒体で
ある。
【0011】請求項4に係る本発明は、前記複数の命令
は、前記1つまたは複数のメモリコントローラによって
実行されるマイクロコードを含むことを特徴とする請求
項2に記載の1つまたは複数のコンピュータ可読媒体で
ある。
【0012】請求項5に係る本発明は、前記信用されて
いないコードは、基本入出力システム(BIOS)から
のコードおよび複数のオプションの読取り専用メモリ
(ROM)からのコードを含むことを特徴とする請求項
1に記載の1つまたは複数のコンピュータ可読媒体であ
る。
【0013】請求項6に係る本発明は、前記防止するこ
とは、前記1つまたは複数の中央処理装置の各々および
前記1つまたは複数のバスマスタの各々が前記メモリに
アクセスすることを、前記1つまたは複数の中央処理装
置の1つから受信された、トラステッドコア初期化コマ
ンドに応答して、防止することを含むことを特徴とする
請求項1に記載の1つまたは複数のコンピュータ可読媒
体である。
【0014】請求項7に係る本発明は、前記トラステッ
ドコアをロードすることは、前記トラステッドコアの異
なる部分を複数の異なるソースからコピーすることを含
むことを特徴とする請求項1に記載の1つまたは複数の
コンピュータ可読媒体である。
【0015】請求項8に係る本発明は、前記トラステッ
ドコアをロードすることは、前記トラステッドコアの異
なる部分を1つまたは複数のソースからコピーするこ
と、および、前記異なる部分を結合して前記トラステッ
ドコアを組み立てることを含むことを特徴とする請求項
1に記載の1つまたは複数のコンピュータ可読媒体であ
る。
【0016】請求項9に係る本発明は、前記異なる部分
を結合することは、前記異なる部分のビットの排他的論
理和を取ることを含むことを特徴とする請求項1に記載
の1つまたは複数のコンピュータ可読媒体である。
【0017】請求項10に係る本発明は、前記トラステ
ッドコアをロードすることは、前記トラステッドコアの
少なくとも一部を、ローカルの大容量記憶デバイスから
前記メモリにコピーすることを含むことを特徴とする請
求項1に記載の1つまたは複数のコンピュータ可読媒体
である。
【0018】請求項11に係る本発明は、前記トラステ
ッドコアをロードすることは、前記トラステッドコアの
少なくとも一部を、リモートデバイスから前記メモリに
コピーすることを含むことを特徴とする請求項1に記載
の1つまたは複数のコンピュータ可読媒体である。
【0019】請求項12に係る本発明は、前記トラステ
ッドコアをロードすることは、前記トラステッドコアの
少なくとも一部を、前記コンピュータのチップからコピ
ーすることを含むことを特徴とする請求項1に記載の1
つまたは複数のコンピュータ可読媒体である。
【0020】請求項13に係る本発明は、前記防止する
ことは、前記1つまたは複数の中央処理装置および前記
1つまたは複数のバスマスタからの、前記メモリへのア
クセスのためのすべての要求を無視することを含むこと
を特徴とする請求項1に記載の1つまたは複数のコンピ
ュータ可読媒体である。
【0021】請求項14に係る本発明は、前記複数の命
令はさらに、前記メモリにおける前記トラステッドコア
の暗号化措置を抽出すること、および前記抽出された暗
号化措置を格納することを含む動作を前記1つまたは複
数のプロセッサに実行させることを特徴とする請求項1
に記載の1つまたは複数のコンピュータ可読媒体であ
る。
【0022】請求項15に係る本発明は、前記複数の命
令はさらに、暗号化プロセッサをリセットすること、前
記暗号化プロセッサに、前記暗号化措置を抽出するよう
に要求すること、および前記抽出された暗号化措置を、
前記暗号化プロセッサから受信することを含む動作を前
記1つまたは複数のプロセッサに実行させることを特徴
とする請求項14に記載の1つまたは複数のコンピュー
タ可読媒体である。
【0023】請求項16に係る本発明は、前記1つまた
は複数の中央処理装置の各々をリセットすることは、プ
ロセッサバスリセット信号を前記1つまたは複数の中央
処理装置の各々にアサートすることを含むことを特徴と
する請求項1に記載の1つまたは複数のコンピュータ可
読媒体である。
【0024】請求項17に係る本発明は、前記複数の命
令はさらに、中央処理装置リセットベクトルを、初期化
ベクトルにマップすること、前記中央処理装置リセット
ベクトルに対応する読取り要求を、前記1つの中央処理
装置から受信すること、前記読取り要求に応答して、前
記初期化ベクトルを前記1つの中央処理装置に返すこ
と、および前記1つの中央処理装置は、前記初期化ベク
トルで開始して、前記メモリにアクセスできるようにす
ることを含む動作を前記1つまたは複数のプロセッサに
実行させることを特徴とする請求項1に記載の1つまた
は複数のコンピュータ可読媒体である。
【0025】請求項18に係る本発明は、前記初期化ベ
クトルは、前記メモリにおける前記トラステッドコード
内のアドレスであることを特徴とする請求項17に記載
の1つまたは複数のコンピュータ可読媒体である。
【0026】請求項19に係る本発明は、前記複数の命
令はさらに、前記中央処理装置リセットベクトルを、追
加の中央処理装置開始ベクトルに、前記初期化ベクトル
を前記1つの中央処理装置に返した後に再マップするこ
と、および別の中央処理装置からの、前記中央処理装置
リセットベクトルに対応する、他のいかなる読取り要求
にも応答して、前記追加の中央処理装置開始ベクトルを
返すことを含む動作を前記1つまたは複数のプロセッサ
に実行させることを特徴とする請求項17に記載の1つ
または複数のコンピュータ可読媒体である。
【0027】請求項20に係る本発明は、前記初期化ベ
クトルは、前記メモリにおける前記トラステッドコード
内のアドレスであり、前記追加の中央処理装置開始ベク
トルおよび前記初期化ベクトルは、前記メモリにおける
前記トラステッドコード内の異なるアドレスであること
を特徴とする請求項19に記載の1つまたは複数のコン
ピュータ可読媒体である。
【0028】請求項21に係る本発明は、前記初期化ベ
クトルおよび前記追加の中央処理装置開始ベクトルは、
前記トラステッドコアから得られることを特徴とする請
求項19に記載の1つまたは複数のコンピュータ可読媒
体である。
【0029】請求項22に係る本発明は、前記複数の命
令はさらに、マイクロコードを、前記メモリにおけるト
ラステッドコアから前記1つの中央処理装置へ、前記中
央処理装置をリセットした後にロードすることを含む動
作を前記1つまたは複数のプロセッサに実行させること
を特徴とする請求項1に記載の1つまたは複数のコンピ
ュータ可読媒体である。
【0030】請求項23に係る本発明は、信用できない
コードに基づいて、コンピュータをブートするステップ
と、トラステッドコアをメモリにロードするステップ
と、前記トラステッドコアの安全な実行を開始するステ
ップとを含むことを特徴とする方法である。
【0031】請求項24に係る本発明は、前記トラステ
ッドコアの実行を終了することができるようにするステ
ップと、前記トラステッドコアの安全な実行を、前記コ
ンピュータをリブートすることなく、再び開始するステ
ップとをさらに含むことを特徴とする請求項23に記載
の方法である。
【0032】請求項25に係る本発明は、前記トラステ
ッドコアの実行を終了することができるようにするステ
ップと、別のトラステッドコアをメモリにロードするス
テップと、前記他のトラステッドコアの安全な実行を開
始するステップとをさらに含むことを特徴とする請求項
23に記載の方法である。
【0033】請求項26に係る本発明は、前記トラステ
ッドコアおよび前記他のトラステッドコアは、同じトラ
ステッドコアの異なるバージョンであることを特徴とす
る請求項25に記載の方法である。
【0034】請求項27に係る本発明は、前記開始する
ステップは、前記トラステッドコアの安全な実行を、前
記1つまたは複数の中央処理装置の1つから受信され
た、トラステッドコア初期化コマンドに応答して、開始
するステップを含むことを特徴とする請求項23に記載
の方法である。
【0035】請求項28に係る本発明は、前記開始する
ステップは、前記トラステッドコアの安全な実行を、前
記コンピュータにおけるプロセッサによってサポートさ
れるいかなる追加のバストランザクションも必要とする
ことなく、開始するステップを含むことを特徴とする請
求項23に記載の方法である。
【0036】請求項29に係る本発明は、前記トラステ
ッドコアの安全な実行を開始するステップは、前記コン
ピュータにおける1つまたは複数の中央処理装置の各々
が前記メモリにアクセスするのを防止するステップと、
前記コンピュータにおける1つまたは複数のバスマスタ
の各々が前記メモリにアクセスするのを防止するステッ
プと、前記1つまたは複数の中央処理装置の各々をリセ
ットするステップと、1つの中央処理装置が前記メモリ
にアクセスし、かつトラステッドコア初期化プロセスを
実行できるようにするステップと、前記トラステッドコ
ア初期化プロセスの実行後、他のいかなる中央処理装置
およびいかなる前記1つまたは複数のバスマスタも前記
メモリにアクセスできるようにするステップとを含むこ
とを特徴とする請求項23に記載の方法である。
【0037】請求項30に係る本発明は、中央処理装置
リセットベクトルを、初期化ベクトルにマップするステ
ップと、前記中央処理装置リセットベクトルに対応する
読取り要求を、前記1つの中央処理装置から受信するス
テップと、前記読取り要求に応答して、前記初期化ベク
トルを前記1つの中央処理装置に返すステップと、前記
1つの中央処理装置が、前記初期化ベクトルで開始し
て、前記メモリにアクセスできるようにするステップと
をさらに含むことを特徴とする請求項29に記載の方法
である。
【0038】請求項31に係る本発明は、前記初期化ベ
クトルは、前記メモリにおける前記トラステッドコード
内のアドレスであることを特徴とする請求項30に記載
の方法である。
【0039】請求項32に係る本発明は、前記中央処理
装置リセットベクトルを、追加の中央処理装置開始ベク
トルに、前記初期化ベクトルを前記1つの中央処理装置
に返した後に再マップするステップと、別の中央処理装
置からの、前記中央処理装置リセットベクトルに対応す
る、他のいかなる読取り要求にも応答して、前記追加の
中央処理装置開始ベクトルを返すステップとをさらに含
むことを特徴とする請求項30に記載の方法である。
【0040】請求項33に係る本発明は、前記初期化ベ
クトルは、前記メモリにおける前記トラステッドコード
内のアドレスであり、前記追加の中央処理装置開始ベク
トルおよび前記初期化ベクトルは、前記メモリにおける
前記トラステッドコード内の異なるアドレスであること
を特徴とする請求項32に記載の方法である。
【0041】請求項34に係る本発明は、前記トラステ
ッドコアをロードするステップは、前記トラステッドコ
アの異なる部分を、ローカルの大容量記憶デバイス、リ
モートデバイスおよびローカルのチップセットのうちの
1つまたは複数を含む、複数の異なるソースからコピー
するステップを含むことを特徴とする請求項23に記載
の方法である。
【0042】請求項35に係る本発明は、プロセッサに
よって、請求項23に記載の方法を実行するように実行
可能であるコンピュータプログラムを含むことを特徴と
する1つまたは複数のコンピュータ可読メモリである。
【0043】請求項36に係る本発明は、コンピュータ
が、信用できないコードに基づいて、動作を開始できる
ようにするステップと、前記信用できないコードの制御
下で、追加のコードをメモリにロードするステップと、
前記追加のコードの実行を、前記コンピュータにおける
前記信用できないコードにも関わらず、安全な方法にお
いて開始するステップとを含むことを特徴とする方法で
ある。
【0044】請求項37に係る本発明は、前記開始する
ステップは、前記追加のコードの実行を、前記コンピュ
ータにおける前記信用できないコードおよび前記コンピ
ュータの他の先に存在する状態にも関わらず、安全な方
法において開始するステップをさらに含むことを特徴と
する請求項36に記載の方法である。
【0045】請求項38に係る本発明は、前記追加のコ
ードの実行を安全な方法において開始するステップは、
前記コンピュータにおける1つまたは複数の中央処理装
置の各々が前記メモリにアクセスするのを防止するステ
ップと、前記コンピュータにおける1つまたは複数のバ
スマスタの各々が前記メモリにアクセスするのを防止す
るステップと、前記1つまたは複数の中央処理装置の各
々をリセットするステップと、1つの中央処理装置が前
記メモリにアクセスし、コード初期化プロセスを実行で
きるようにするステップと、前記コード初期化プロセス
の実行後、他のいかなる中央処理装置およびいかなる前
記1つまたは複数のバスマスタも前記メモリにアクセス
できるようにするステップとを含むことを特徴とする請
求項36に記載の方法である。
【0046】請求項39に係る本発明は、前記開始する
ステップは、前記追加のコードの実行を、前記コンピュ
ータにおけるプロセッサによってサポートされるいかな
る追加のバストランザクションも必要とすることなく、
安全な方法において開始するステップを含むことを特徴
とする請求項36に記載の方法である。
【0047】請求項40に係る本発明は、中央処理装置
リセットベクトルを、初期化ベクトルにマップするステ
ップと、前記中央処理装置リセットベクトルに対応する
読取り要求を、前記1つの中央処理装置から受信するス
テップと、前記読取り要求に応答して、前記初期化ベク
トルを前記1つの中央処理装置に返すステップと、前記
1つの中央処理装置が、前記初期化ベクトルで開始し
て、前記メモリにアクセスできるようにするステップと
をさらに含むことを特徴とする請求項36に記載の方法
である。
【0048】請求項41に係る本発明は、前記中央処理
装置リセットベクトルを、追加の中央処理装置開始ベク
トルに、前記初期化ベクトルを前記1つの中央処理装置
に返した後に再マップするステップと、別の中央処理装
置からの、前記中央処理装置リセットベクトルに対応す
る、他のいかなる読取り要求にも応答して、前記追加の
中央処理装置開始ベクトルを返すステップとをさらに含
むことを特徴とする請求項40に記載の方法である。
【0049】請求項42に係る本発明は、前記トラステ
ッドコアを、中央処理装置がリセットされた後に実行を
開始するアドレスに現れるように、再マップするステッ
プをさらに含むことを特徴とする請求項36に記載の方
法である。
【0050】請求項43に係る本発明は、中央処理装置
から、中央処理装置リセットベクトルに対応する読取り
要求を受信するステップと、前記読取り要求に、前記中
央処理装置に前記トラステッドコアの開始場所へジャン
プさせるための命令により応答するステップとをさらに
含むことを特徴とする請求項36に記載の方法である。
【0051】請求項44に係る本発明は、前記追加のコ
ードをロードするステップは、前記追加のコードの異な
る部分を、ローカルの大容量記憶デバイス、リモートデ
バイスおよびローカルのチップセットのうちの1つまた
は複数を含む、複数の異なるソースからコピーするステ
ップを含むことを特徴とする請求項36に記載の方法で
ある。
【0052】請求項45に係る本発明は、プロセッサに
よって、請求項36に記載の方法を実行するように実行
可能であるコンピュータプログラムを含むことを特徴と
する1つまたは複数のコンピュータ可読メモリである。
【0053】請求項46に係る本発明は、プロセッサと
の通信を可能にするための第1のインターフェースと、
システムメモリとの通信を可能にするための第2のイン
ターフェースと、前記第1のインターフェースおよび前
記第2のインターフェースに結合され、プロセッサをリ
セットするため、かつ、前記プロセッサがコード初期化
プロセスを実行できるようにし、他のいかなるプロセッ
サもが前記システムメモリにアクセスするのを防止する
ための、コントローラとを含むことを特徴とするメモリ
コントローラである。
【0054】請求項47に係る本発明は、前記メモリコ
ントローラはプロセッサに含まれることを特徴とする請
求項46に記載のメモリコントローラである。
【0055】請求項48に係る本発明は、前記第1のイ
ンターフェースは、プロセッサバスインターフェースを
含むことを特徴とする請求項46に記載のメモリコント
ローラである。
【0056】請求項49に係る本発明は、前記メモリコ
ントローラは、前記プロセッサバスインターフェースを
必要とすることなく、前記プロセッサバス上のいかなる
追加のコマンドもサポートするように動作することを特
徴とする請求項48に記載のメモリコントローラであ
る。
【0057】請求項50に係る本発明は、前記システム
メモリは、ダイナミックランダムアクセスメモリを含む
ことを特徴とする請求項46に記載のメモリコントロー
ラである。
【0058】請求項51に係る本発明は、前記コントロ
ーラはさらに、前記プロセッサが前記コード初期化プロ
セスを実行できるようにし、いかなるバスマスタもが前
記システムメモリにアクセスするのを防止するためのも
のであることを特徴とする請求項46に記載のメモリコ
ントローラである。
【0059】請求項52に係る本発明は、前記コントロ
ーラはさらに、前記プロセッサが前記コード初期化プロ
セスを実行できるようにする前に、前記メモリコントロ
ーラに結合された、他のいかなるプロセッサをもリセッ
トし、前記1つの処理が前記コード初期化プロセスを実
行するまで、前記メモリコントローラに結合された、他
のいかなるプロセッサおよびいかなるバスマスタもが、
前記システムメモリにアクセスするのを防止し、前記コ
ード初期化プロセスの実行後、前記メモリコントローラ
に結合された、他のいかなる中央処理装置、および、前
記メモリコントローラに結合されたいかなるバスマスタ
も前記メモリにアクセスできるようにするためのもので
あることを特徴とする請求項46に記載のメモリコント
ローラである。
【0060】請求項53に係る本発明は、前記コントロ
ーラはさらに、プロセッサリセットベクトルを初期化ベ
クトルにマップし、前記プロセッサリセットベクトルに
対応する読取り要求を、前記プロセッサから受信し、前
記読取り要求に応答して、前記初期化ベクトルを前記プ
ロセッサに返し、前記プロセッサは、前記初期化ベクト
ルで開始して、前記メモリにアクセスできるようにする
ためのものであることを特徴とする請求項46に記載の
メモリコントローラである。
【0061】請求項54に係る本発明は、前記初期化ベ
クトルは、前記コード初期化プロセス内のアドレスであ
ることを特徴とする請求項53に記載のメモリコントロ
ーラである。
【0062】請求項55に係る本発明は、前記コントロ
ーラはさらに、前記プロセッサリセットベクトルを、追
加のプロセッサ開始ベクトルに、前記初期化ベクトルを
前記プロセッサに返した後に再マップし、別のプロセッ
サからの、前記プロセッサリセットベクトルに対応す
る、他のいかなる読取り要求にも応答して、前記追加の
プロセッサ開始ベクトルを返すためのものであることを
特徴とする請求項53に記載のメモリコントローラであ
る。
【0063】請求項56に係る本発明は、前記初期化ベ
クトルは、前記コード初期化プロセス内のアドレスであ
り、前記追加のプロセッサ開始ベクトルおよび前記初期
化ベクトルは、前記コード初期化プロセス内の異なるア
ドレスであることを特徴とする請求項55に記載のメモ
リコントローラである。
【0064】請求項57に係る本発明は、リセット信号
をプロセッサにアサートするためのプロセッサリセット
部と、前記プロセッサが、トラステッドコア初期化プロ
セスの実行を完了するまで、いかなるバスマスタもがメ
モリにアクセスするのを防止するための、メモリ保護部
とを含むことを特徴とする装置である。
【0065】請求項58に係る本発明は、プログラマブ
ルロジックデバイスを含むことを特徴とする請求項57
に記載の装置である。
【0066】請求項59に係る本発明は、前記プロセッ
サリセット部は、プロセッサバスインターフェースを含
むことを特徴とする請求項57に記載の装置である。
【0067】請求項60に係る本発明は、前記メモリ保
護部は、いかなるバスマスタから受信された、前記メモ
リにアクセスするためのいかなる要求をも無視する制御
ロジックを含むことを特徴とする請求項57に記載の装
置である。
【0068】請求項61に係る本発明は、前記メモリ保
護部に結合され、前記プロセッサが前記トラステッドコ
ア初期化プロセスの実行を完了するまで、別のプロセッ
サがメモリにアクセスするのを防止するためのコントロ
ーラをさらに含むことを特徴とする請求項57に記載の
装置である。
【0069】請求項62に係る本発明は、前記メモリ保
護部に結合されたコントローラであって、プロセッサリ
セットベクトルを初期化ベクトルにマップし、前記プロ
セッサリセットベクトルに対応する読取り要求を、前記
プロセッサから受信し、前記読取り要求に応答して、前
記初期化ベクトルを前記プロセッサに返し、前記プロセ
ッサが、前記初期化ベクトルで開始して、前記メモリに
アクセスできるようにするためのコントローラをさらに
含むことを特徴とする請求項57に記載の装置である。
【0070】請求項63に係る本発明は、前記コントロ
ーラはさらに、前記プロセッサリセットベクトルを、追
加のプロセッサ開始ベクトルに、前記初期化ベクトルを
前記プロセッサに返した後に再マップし、別のプロセッ
サからの、前記プロセッサリセットベクトルに対応す
る、別の読取り要求に応答して、前記追加のプロセッサ
開始ベクトルを返すためのものであることを特徴とする
請求項62に記載の装置である。
【0071】請求項64に係る本発明は、前記トラステ
ッドコアの一部が格納される記憶部をさらに含むことを
特徴とする請求項57に記載の装置である。
【0072】請求項65に係る本発明は、前記記憶部に
格納された前記トラステッドコアの前記一部は、プラッ
トフォームトラステッドコア部を含むことを特徴とする
請求項64に記載の装置である。
【0073】請求項66に係る本発明は、プロセッサ
と、バスマスタと、システムメモリと、前記プロセッ
サ、前記バスマスタおよび前記システムメモリに結合さ
れたメモリコントローラとを含み、前記メモリコントロ
ーラは、信用できないコードに基づいて動作する、前記
プロセッサおよび前記バスマスタからの前記システムメ
モリへのアクセスを可能にすること、前記プロセッサ
を、トラステッドコア初期化プロセスを開始するために
リセットすること、および前記バスマスタが前記システ
ムメモリにアクセスすることを、前記トラステッドコア
初期化プロセスが完了される後まで、防止することを行
うように構成されることを特徴とするコンピュータであ
る。
【0074】請求項67に係る本発明は、複数の追加の
プロセッサをさらに含み、前記複数の追加のプロセッサ
が前記システムメモリにアクセスすることを、前記トラ
ステッドコア初期化プロセスが完了される後まで、防止
することを特徴とする請求項66に記載のコンピュータ
である。
【0075】請求項68に係る本発明は、コンピュータ
における異なるトラステッドコアの実行を、前記コンピ
ュータをリブートする必要なく、逐次開始できるように
するステップを含むことを特徴とする方法である。
【0076】請求項69に係る本発明は、前記開始でき
るようにするステップは、前記異なるトラステッドコア
の実行を、任意の回数で開始できるようにするステップ
をさらに含むことを特徴とする請求項68に記載の方法
である。
【0077】請求項70に係る本発明は、前記異なるト
ラステッドコアは、同じトラステッドコアの異なるバー
ジョンであることを特徴とする請求項68に記載の方法
である。
【0078】
【発明の実施の形態】以下、図面を参照して、本発明の
実施の形態を詳細に説明する。なお、図面全体で同じ番
号を使用して、同様の構成要素および/または特徴を表
す。
【0079】コンピュータにおけるコード(たとえば、
ソフトウェア命令)の安全な初期化を可能にするための
方法およびシステムが、本明細書に記載されている。こ
の安全なコード初期化プロセス(secure code initializ
ation process)は、主として、コンピュータにおいてト
ラステッドコア(trusted core)を初期化することに関連
して記載してある。しかし、安全なコード初期化プロセ
スを使用して、幅広い種類のタイプのコードのいずれを
も、コードがどの程度信用できるかに関わらず、安全に
初期化することができる。本明細書で記載された機構(m
echanism)は、特定の関心のあるものであり、これは、
コアCPU(core-CPU)に対する変更が必要とされず、ロ
ジックをサポートするCPUに対する変更がほとんど必
要とされないからである。
【0080】本明細書で使用されるように、「トラステ
ッド(信用されている:trusted)」コードは、特性(nat
ure)において不変であり、識別(identity)において不変
であるコードを指す。トラステッドコードは、コンピュ
ータの他の部分(たとえば、コード)により不正に変更
されることを免れており、信頼性を有して、かつ曖昧で
なく識別することができる。すなわち、「このコードは
誰か」と尋ねる他のいかなるエンティティ(entity)また
は構成要素(component)にも、「これはコードxyzで
ある」と伝えることができ、このコードが(ある詐称者
ではなく)真にコードxyzであること、および、コー
ドxyzが本物であることを保証することができる。信
用(trust)は、コードのいかなる質または有用性の面を
も扱わず、特性の不変性および識別の不変性のみを扱
う。本明細書に記載された方法およびシステムを使用し
て、トラステッドコード(trusted code)が、それが順序
正しい状態で実行を開始したことを知ることができるよ
うにし、初期化の不変性(immutability of initializat
ion)を提供することができる。
【0081】図1は、本発明のある実施形態による、例
示的コンピュータ100を例示するブロック図である。
コンピュータ100は、幅広い種類のコンピューティン
グデバイスを表すことを意図するものであり、これら
は、パーソナルコンピュータ(PC)、ハンドヘルドま
たはポケットデバイス、携帯情報端末(PDA)、ゲー
ム用コンソール、インターネット器具、マルチプロセッ
サまたはシングルプロセッサシステム、マイクロプロセ
ッサベースまたはプログラマブル消費者電化製品、ネッ
トワークPC、ミニコンピュータ、メインフレームコン
ピュータ、埋め込み型システムなどである。
【0082】コンピュータ100は、1つまたは複数の
中央処理装置(CPU)またはプロセッサ102,10
4、メモリコントローラ106、I/Oコントローラ1
08、およびシステムメモリ110を含む。CPU10
2および104は、幅広い種類のプロセッサのいずれか
を表し、これらは、x86アーキテクチャ(または互換
性のある)プロセッサ、PowerPCアーキテクチャ
(または互換性のある)プロセッサなどである。多数
(n)のCPU102、104が図1において例示され
るが、コンピュータ100は、他の実施形態として、単
一のCPUのみと共に実施することができる。CPU1
02,104は共に、メモリコントローラ106へ、プ
ロセッサバス112を介して結合される。
【0083】メモリコントローラ106は、分離した構
成要素として例示されるが、他の実施形態として、割り
込みコントローラ、AGP(accelerated graphics por
t)などを含むブリッジなど、別の構成要素またはデバイ
スに組み込むことができる。メモリコントローラ106
は、CPU102,104、I/Oコントローラ10
8、およびメモリ110と通信する。メモリ110は、
ランダムアクセスメモリ(RAM)など、システムメモ
リを表す。I/Oコントローラ108は、I/Oバス1
14、および、コンピュータ100内の他の構成要素に
結合された、様々なI/Oデバイスの間のブリッジまた
はインターフェースとして動作する。幅広い種類の従来
のI/Oデバイスのいずれも、I/Oバス114に結合
することができる。例示された例では、大容量記憶デバ
イスコントローラ116がバス114および大容量記憶
デバイス(たとえば、ハードディスク)118に結合さ
れ、ROM120(BIOS122、および、オプショ
ンのROMおよび/またはBIOS拡張機能124を含
む)がバス114に結合され、アダプタコントローラ1
26がバス114およびネットワークアダプタ128
(たとえば、ネットワークインターフェースカード(N
IC)またはモデム)に結合される。
【0084】メモリコントローラ106は、プロセッサ
バスインターフェース130、メモリインターフェース
132、I/Oインターフェース134、制御ロジック
(プロセッサまたはコントローラとも呼ばれる)13
6、ダイジェスト138、2つのリセットベクトル14
0,142、および初期化パラメータ(initializationp
arameter)153を含む。プロセッサバスインターフェ
ース130は、メモリコントローラ106とプロセッサ
バス112の間のインターフェースとして動作し、メモ
リコントローラ106がコマンドおよび要求をCPU1
02,104から受信し、さらに、応答およびコマンド
をCPU102,104に送ることができるようにす
る。メモリインターフェース132は、システムメモリ
110へのインターフェースとして動作し、コントロー
ラ106が、メモリ110に格納されたデータを読み取
り、データをメモリ110に書き込むことができるよう
にする。I/Oインターフェース134は、I/Oコン
トローラ108へのインターフェースとして動作し、I
/Oコントローラ108を介して、I/O構成要素11
8、120および128がメモリコントローラ106と
通信し、メモリコントローラ106がI/O構成要素1
18、120および128と通信することができるよう
にする。例示された例では、コントローラ106の内部
の構成要素(たとえば、制御ロジック136、リセット
ベクトル140、142など)へ、かつ/または、それ
からの通信が、適切なインターフェースを介して渡され
る。
【0085】I/Oバス114に結合されたI/O構成
要素のうち選択されたものが、バスマスタとして動作す
ることができる。バスマスタは、アドレスバス信号およ
び他のバス制御信号をバス上で駆動することができるデ
バイス(典型的には、CPU以外)を指す。バスマスタ
の例は、大容量記憶デバイスコントローラ116および
ネットワークアダプタコントローラ126である。バス
マスタは、メモリ110と、I/Oコントローラ108
および106を介して通信して、メモリ110へ、かつ
/または、それからの直接メモリアクセス(DMA)転
送を実行することなどができ、それにより、CPU10
2,104がこのような転送を直接管理しなければなら
ないことを軽減する。
【0086】図1の例示された例では、I/Oコントロ
ーラ108がメモリコントローラ106と直接通信す
る。他の実施形態として、これらの通信が、メモリコン
トローラ106を通過せず、プロセッサを介してI/O
ブリッジ(図示せず)を通ることができる。加えて、I
/Oブリッジへのプロセッサも、I/Oコントローラ1
08とCPU102,104の間の、プロセッサバス1
12上の通信を可能にする。一実施形態では、メモリコ
ントローラ106が「チップセット」の一部として含ま
れ、これもI/Oブリッジへのプロセッサなどを含む。
チップセットは、コンピュータのサブシステムの間のイ
ンターフェースを提供する1つまたは複数のチップのセ
ットを指し、CPU,メモリ,I/Oデバイスなどが対
話することができるようにするためのバスおよび電子機
器を含む。
【0087】制御ロジック136は、トラステッドコア
をコンピュータ100において安全にロードできること
を保証(ensure)するように動作し、メモリ110へのア
クセスを特定の環境下でのみ可能とし、これについては
以下でより詳細に論じる。制御ロジック136は、マイ
クロコード(マイクロコントローラのみがアクセス可能
である不揮発性の安全な場所(たとえば、コントローラ
106内)に格納されたもの)を実行するマイクロコン
トローラ,プログラマブルロジックデバイス,または他
の特定用途向け集積回路(ASIC)など、様々な方法
のいずれにおいても実施することができる。
【0088】コンピュータ100の起動(たとえば、電
源を入れるか、あるいはリセットすること)において、
メモリ110の状態は一般的には保証されない。メモリ
110は一般的にはダイナミックRAM(DRAM)で
あり、これは、その状態を維持するために定期的なリフ
レッシュを必要とし、そのため、コンピュータ100の
電源が入っていなかったときにいかなる状態も失われて
いるようになる。メモリ110は、電源を入れたときに
特定の状態(たとえば、すべてのゼロまたはすべての1
を格納する)となるように構成することができ、あるい
は、他の実施形態として、メモリ110がランダム値を
格納することができる(たとえば、電源が入っている間
に、個々のメモリセルがどのような値に安定されるかに
関わらず)。それにも関わらず、メモリ110は、信頼
性のあるデータまたは命令を、電源を入れるときに格納
しない。コンピュータシステム全体または単にメモリの
起動時に、メモリの内容が幾分ランダムであることに留
意されたい。しかし、CPUの電源を入れること、およ
び/または、リセットすることは、通常、メモリの状態
を変えない(そのため、メモリの内容は、CPUを単に
リセットした後に必ずしもランダムではない)。
【0089】コンピュータ100の電源が入れられた
後、CPU102,104のうちの1つが、最終的に命
令の実行を開始する。CPU102,104のうちの1
つのみが最初に命令の実行を開始することができるか、
あるいは他の実施形態として、CPU102,104の
うちの1つを、コンピュータのブートを開始するために
選択することができる。幅広い種類のアービトレーショ
ン機構(arbitration mechanism)のいずれかを使用し
て、多数のCPUのどれがコンピュータのブートを開始
するためのものであるかを決定することができ、これら
は、事前に構成された(pre-configured)デフォルトプロ
セッサ,分散アービトレーション方式(distributed arb
itration scheme),プロセッサバス112に結合された
アービトレーションデバイスまたは構成要素(componen
t)(図示せず)などである。
【0090】CPUの数、または、どのCPUが命令の
実行を開始するかに関わらず、少なくとも1つのCPU
が命令の実行を開始する。コンピュータ100の電源が
ちょうど入れられたとき、命令はCPUのキャッシュメ
モリに(あるいは、コンピュータ100において存在す
ることができる、他のいかなるキャッシュメモリにも)
格納されていない。CPUは命令をBIOS122から
得て、これらの命令の実行を開始する。一実施形態で
は、CPUが、最初に特定のアドレス(たとえば、FF
FFFFF016)のための読取り要求を、プロセッサ
バス112上に配置するように構成される。メモリコン
トローラ106は、CPUが命令の実行を開始するべき
である、BIOSブートブロックのアドレス(BIOS
122におけるアドレス)により応答する。メモリコン
トローラ106によって返されたこのアドレスは、リセ
ットベクトル(reset vector)と呼ばれ、この(一般的
な)例では、外部ロジックによって提供される。代替実
施では、CPUが単に命令を特定の場所(たとえば、0
000000016)から直接取り出すことを開始し、
そのため、この場合、リセットベクトルが固定される。
【0091】次いで、CPUが、このリセットベクトル
で開始して、命令のロードおよび実行を開始する。ロー
ドされた命令はROM120からのものであり、BIO
S122、ならびに1つまたは複数のオプションのRO
Mおよび/またはBIOS拡張機能124からの命令を
含むことができる。ROM120からのいくつかの命令
は、命令がメモリ110に(ROM120、または、大
容量記憶デバイス118など、別のデバイスから)ロー
ドされる結果となり、これらが、次いで、CPUによっ
てロードされ、実行される。
【0092】したがって、オペレーティングシステムの
様々な構成要素144がメモリ110へ、ROM120
および/または他のデバイス(たとえば、記憶デバイス
118)からロードされる。構成要素(component)14
4は、BIOS122、ならびにオプションのROMお
よびBIOS拡張機能(extension)124の一部を含む
ことができる。OS構成要素144は、ワシントン州レ
ドモンドのMicrosoft Corp.から入手可
能なオペレーティングシステムのWindows(登録
商標)ファミリのいずれかなど、汎用オペレーティング
システムの選択された構成要素も含むことができる。
【0093】最終的に、トラステッドコア(trusted cor
e)がメモリ110にロードされる。これは、たとえば、
BIOS122、オプションのROMまたはBIOS拡
張機能124、OS構成要素144または別のアプリケ
ーション(図示せず)における命令に応答して行うこと
ができる。トラステッドコアは、信用できるコード(た
とえば、ソフトウェア命令)を指し、これは、コンピュ
ータ100の動作の少なくとも一部を制御し、それ自体
をコンピュータ100の特定のハードウェア上で(少な
くともある範囲まで)保護する方法を知っているもので
ある。それ自体を保護することにおいて、トラステッド
コアは、トラステッドコアの制御下で動作中の他のアプ
リケーションも保護することができる。トラステッドコ
アによって提供された保護の量、ならびに、このような
保護がトラステッドコアによって提供される方法は、コ
ンピュータ,コンピュータ(またはCPU)のアーキテ
クチャ、およびトラステッドコアの間で変わる可能性が
ある。トラステッドコアは、一般的なオペレーティング
システムの機能性のすべて、または、他の実施形態とし
て、選択された機能性のみを含むことができる。トラス
テッドコアは一般的には、ある方法において暗号により
証明され、トラステッドコアの保全性を後に検証できる
ようにする。たとえば、トラステッドコアの暗号化措置
(cryptographic measure)を、トラステッドコアから抽
出(extract)し、トラステッドコアと共に大容量記憶デ
バイス118上(あるいは、あるリモートデバイス上)
に格納することができる。トラステッドコアが後にメモ
リ110にロードされたとき、コンピュータ100の構
成要素が、メモリ110におけるトラステッドコアの暗
号化措置を、格納された暗号化措置と比較するために抽
出することができ、2つの措置(measure)が合致した場
合、トラステッドコアがデバイス118上あるいはメモ
リ110内にある間に(たとえば、不当なユーザまたは
プログラムによって)改変されていないことを安全に保
証することができる。
【0094】例示された例では、抽出された暗号化措置
(cryptographic measure)がダイジェスト138に格納
される。ダイジェスト138は、トラステッドコアがロ
ードされたときにその暗号化措置を格納するために使用
される1つまたは複数のレジスタ(または、他の記憶機
構)を指す。1つのそのような手段が「暗号化ダイジェ
スト(cryptographic digest)」であり、これは、SHA
−1(Secure Hash Algorithm 1)など、一方向ハッシュ
演算を使用して計算される。暗号化ダイジェストは、ダ
イジェストされたときに同じハッシュ値(hash value)を
生成する第2のプレイメージ(pre-image)(この場合、
第2のトラステッドコア)を見つけることが極度に困難
であるという特性を有する。よって、ダイジェストレジ
スタ(digest-register)は、使用中のトラステッドコア
を一意に表すものと見なすことができる値を含む。暗号
手法の基本的な紹介については、Bruce Schn
eier著のテキスト「Applied Crypto
graphy: Protocols,Algorit
hms,and Source Code inC」,
John Wiley & Sons,著作権1994
年(または、著作年1996年の第2版)を参照された
い。
【0095】他の実施形態として、ダイジェスト以外の
手段を使用することができる。たとえば、ロジックが、
トラステッドコアにデジタル証明書が添付されることを
必要とする可能性がある。チップセット(chipset)は、
証明書がトラステッドコアイメージに合致することを保
証することができ、次いで、証明書、証明書から得られ
た公開鍵、またはレジスタにおける証明書のダイジェス
トを保存することができる。
【0096】最終的に、コンピュータは、動作中のコン
ピュータのための「信用の根元(root of trust)」を提
供する構成要素をロードかつ初期化するための準備がで
きる。以前のコンピュータにおいて直面した著しい問題
は、CPUまたは他のデバイスが不正を働くようにプロ
グラムすることによって、事前に実行したすべてのコー
ドが、トラステッドコアの実行をくつがえす可能性があ
ることである。たとえば、悪質なOSローダは、バスマ
スタリングコントローラが、短い遅延の後、新しい構成
要素を、信用されていないコードをその上に書き込むこ
とによって、くつがえすべきであるように構成すること
ができる。本明細書に記載された本発明は、事前に実行
するすべてのコードを信用のあるチェーン(trust chai
n)から除去する。
【0097】トラステッドコア(trusted core)は、幅広
い種類の方法のいずれにおいても、それ自体を信用でき
るようにするために動作することができる。トラステッ
ドコアが動作する方法は変わる可能性があり、同じよう
に、トラステッドコアによって提供された安全性または
信用可能性の量も変わる可能性がある。図2および図3
は、トラステッドコアを実施することができる例示的方
法を例示する。しかし、図2および図3は、トラステッ
ドコアを実施することができる方法の例のみを例示し、
トラステッドコアを実際には異なる方法において実施す
ることができる。一般に、トラステッドコアは、リング
(ring),カーテニング(curtaining)など、コンピュータ
構成要素によって提供されるどのような機構も使用し
て、実行できるようになった後にそれ自体を保護するこ
とができる。
【0098】本明細書に記載された本発明は、コードの
特性を、「信用の根元」を含むものであると限定しない
ことに留意されたい。このコードが、それ自体を、それ
が動作する可能性のあるコード、またはそれがプログラ
ムする可能性のあるデバイスから、保護するための手段
(CPUメモリコントローラのプログラミングなど)を
取ることが予想される。しかし、「信用の根元」を、完
全なOS、マイクロカーネル、ハイパーバイザ、また
は、特定の安全性のサービスを提供する、ある小型の構
成要素にすることができる。以下で、このような構成要
素を「トラステッドコア」と称する。
【0099】図2では、トラステッドコアが、図1のC
PU102,104の異なる特権レベル(privilege lev
el)(たとえば、x86アーキテクチャプロセッサにお
けるリング)を利用することによって実施される。例示
された例では、これらの特権レベルがリングと呼ばれる
が、異なるプロセッサアーキテクチャを使用する代替実
施は、異なる名称を使用することができる。多数のリン
グが、ソフトウェアが実行することができる、優先順序
が付けられたレベルのセットを提供し、これはしばしば
4レベル(リング0,1,2および3)を含む。リング
0は通常、もっとも特権のあるリング(most privileged
ring)と呼ばれる。リング0において実行するソフトウ
ェア処理は通常、より特権の少ないリングにおいて実行
する処理より多い機能(たとえば、命令)にアクセスす
ることができる。さらに、特定のリングにおいて実行す
るプロセッサは、より高い優先順位のリングにおけるコ
ードまたはデータを改変することができない。例示され
た例では、トラステッドコア160がリング0において
実行し、オペレーティングシステム162がリング1に
おいて実行し、アプリケーションがリング3において実
行する。したがって、トラステッドコア160が、より
特権の多いレベルで動作し、オペレーティングシステム
162の実行を、このレベルから制御することができ
る。加えて、トラステッドコア160(リング0におい
て実行)のコードおよび/またはデータを、オペレーテ
ィングシステム162(リング1において実行)または
アプリケーション164(リング3において実行)によ
って直接改変することができない。むしろ、このような
いかなる改変も、オペレーティングシステム162また
はアプリケーション164が、トラステッドコア160
に改変を行うように要求すること(たとえば、メッセー
ジを、トラステッドコア160に送信すること、トラス
テッドコア160の機能を呼び出すこと、などによる)
によって行われなければならない。
【0100】他の実施形態として、オペレーティングシ
ステムを、トラステッドコア160として動作するメモ
リ管理構成要素と、OS162として動作するオペレー
ティングシステムの残りに分離することができる。次い
で、トラステッドコア160が、すべてのページマップ
(page map)を制御し、したがって、リング3において実
行するトラステッドエージェント(trusted agent)を他
の構成要素(OS162を含む)から遮蔽(shield)する
ことができる。この代替方法では、追加の制御を(たと
えば、図1のメモリコントローラ106において)追加
して、トラステッドコアを、リング特権に従わない他の
バスマスタから保護する必要もある。
【0101】図3では、トラステッドコアが、コンピュ
ータ100内で2つの分離した「空間(space)」を確立
することによって実施される。すなわち、トラステッド
空間(trusted space)166(保護された並列領域(para
llel area)、またはカーテニングされたメモリ(curtain
ed memory)とも呼ばれる)、およびノーマル(信用され
ていない:untrusted)空間168である。これらの空間
を、たとえば、コンピュータ100内の1つまたは複数
のアドレス範囲にすることができる。トラステッド空間
166もノーマル空間168も、ユーザ空間およびカー
ネル空間を含み、トラステッドコア170は、トラステ
ッド空間166のカーネル空間において実施される。様
々なトラステッドアプレット(trusted applet),アプリ
ケーション、および/またはエージェントが、トラステ
ッド空間166のユーザ空間内で、トラステッドコア1
70の制御下で実行することができる。しかし、ノーマ
ル空間168において実行するいかなるアプリケーショ
ン174,オペレーティングシステム176、またはデ
バイスドライバ178も、トラステッドコア170によ
って、トラステッド空間166にアクセスするのを防止
される。したがって、トラステッド空間166における
アプリケーションまたはデータに改変を行うことは、ト
ラステッドコア170によって承認されない限りできな
い。
【0102】図1に戻ると、トラステッドコア146が
3つの部分において例示されている。すなわち、プラッ
トフォームトラステッドコア部(platform trusted core
portion)148、コモントラステッドコア部(common t
rusted core portion)150、および、トラステッドコ
アデータ部(trusted core data portion)152であ
る。これらの部分148,150および152は、メモ
リ110において隣接して配置されるように例示される
が、これらの部分をそのように配置する必要はない。た
とえば、異なる部分を、異なる、隣接していない領域に
格納することができ、各部の異なるセクションを、異な
る、隣接していない領域に格納することができる。他の
実施形態として、トラステッドコア146が実行時に動
作する方法に応じて、これらの部分を、メモリ110内
で物理的に隣接した場所に配置する必要のある可能性が
ある(つまり、実際には、RAMの物理的に隣接した場
所に格納され、仮想メモリによる別のデバイスにページ
アウトされない)。
【0103】トラステッドコアデータ部152は、メモ
リ110の、トラステッドコアによって使用されたデー
タを格納するために使用される領域である。プラットフ
ォームトラステッドコア部148は、コンピュータ10
0において使用された特定のハードウェアに固有である
コードを含む(たとえば、特定のタイプのCPU、その
タイプのチップセットなど)。コモントラステッドコア
部は、トラステッドコアの動作および機能性を実施する
が、コンピュータ100において使用された特定のハー
ドウェアに固有ではないコードを含む。2つの部分14
8および150を分離することによって、コンピュータ
100のハードウェアとの対話方法の細部(たとえば、
タイマを設定する方法)を、部分148によって部分1
50に抽象化することができ、そのため、同じコモント
ラステッドコア部を異なるコンピュータ上で使用するこ
とができる。たとえば、コモントラステッドコアコード
150は、すべてのタイマが同じ方法で設定されたかの
ように動作することができ、プラットフォームトラステ
ッドコアコード148は、コード150からの命令を、
その下にあるコンピュータ100のハードウェアによっ
て実際に理解されるコマンドに変換するように動作す
る。
【0104】トラステッドコア146をメモリ110
に、同じソース、または他の実施形態として、異なるソ
ースからロードすることができる。例として、プラット
フォームトラステッドコア部148をメモリ110に、
コンピュータ100のチップセット(チップセットは、
バスおよび電子機器を含む、コンピュータのサブシステ
ムの間のインターフェースを提供して、CPU,メモ
リ,I/Oデバイスなどが対話することができるように
する、1つまたは複数のチップのセットを指し、これ
は、メモリコントローラ106,I/Oコントローラ1
08、および、バス112および114を含むことがで
きる)からロードすることができ、コモントラステッド
コア部150をメモリ110に、大容量記憶デバイス1
18からロードすることができる。もう1つの例とし
て、1つの部分148,150または152をメモリ1
10に、ネットワークアダプタ128から(たとえば、
リモートサーバから)ロードすることができ、あるい
は、これらの部分をすべてネットワークアダプタ128
からロードすることができるが異なるソース(たとえ
ば、異なるリモートサーバ)からはロードできない。加
えて、1つまたは複数の部分148,150および15
2の異なる部分を、異なるソースからロードすることが
できる(たとえば、部分150の一部をメモリ110
に、大容量記憶デバイス118からロードすることがで
き、部分150の別の一部をリモートサーバから、ネッ
トワークアダプタ128を介してロードすることができ
る)。
【0105】加えて、各部を、1つまたは複数のソース
からの様々なオーバーレイされた部分を結合することに
よって、生成することができる。たとえば、第1部をあ
るソース(たとえば、ローカルのディスク)から読み取
ることができ、第2部を別のソース(たとえば、ネット
ワークを介したリモートサーバ)から読み取ることがで
き、次いで、2つの部分を結合して(たとえば、各部分
のビットの排他的論理和を取る)この部分を生成するこ
とができる。
【0106】トラステッドコア146を安全な場所に格
納すること、および/または、安全な方法においてメモ
リ110にロードすることが必要ないことに留意された
い。トラステッドコア146を、公にアクセス可能な
(または、半ば公にアクセス可能な)いかなる領域にも
格納することができ、これは、大容量記憶デバイス11
8、ネットワークアダプタ128を介してアクセスされ
るリモートサーバなどである。むしろ、トラステッドコ
ア146の暗号化措置(cryptographic measure)を、メ
モリ110にロードした後に(かつ、これが、信用され
ていないコードによるさらなる修正が可能でないように
保護された後に)検証することができる。暗号化措置
は、幅広い種類の従来の方法のいずれにおいても生成す
ることができ、トラステッドコアにおけるいかなる変更
も暗号化措置において反映されるように設計される。た
とえば、不当なユーザが、トラステッドコアの安全性を
くつがえすための試みにおいて、命令を削除あるいは修
正すること、または、新しい命令を追加することによっ
て、トラステッドコアを改変しようと試みた場合、この
改変が暗号化措置において反映される(そのため、後に
生成されたいかなる暗号化措置も、先に生成された暗号
化措置に合致しないようになり、これは命令における変
更による)。一実施態様では、暗号化措置は、トラステ
ッドコアのダイジェスト値を、よく知られているSH
A,SHA−1,MD5(メッセージダイジェスト5)
などのアルゴリズムに従うなどして生成することによっ
て得られる。
【0107】この暗号化措置は、本明細書に記載された
安全な初期化プロセス中に生成され、後に挑戦者(chall
enger)(たとえば、銀行,IT管理者,スマートカード
など)により使用可能となる。ダイジェストの解釈は、
いくつかの方法において行うことができる。これは、企
業がそのトラステッドコアの予想値をそのwebサイト
上で公開するなど、「よく知られた(well known)」値に
することができる。他の実施形態として、企業が、それ
が書き込む、各トラステッドコアのための証明書を生成
し、これを、トラステッドコアと共に出荷する(あるい
は、webサイト上で使用可能にする)ことができる。
これにより、挑戦者がダイジェストを見て、ダイジェス
トを「命名する(name)」証明書を求める(あるいは、探
す)ことができる。証明書がダイジェストを命名するの
で、この証明書をコア自体に入れるべきではないことに
留意されたい。
【0108】本明細書に記載された初期化プロセス(ini
tialization process)は、ユーザが「トラステッドコ
ア」として動作するように試みることができるものを限
定するものではなく、ユーザが、実質的にいかなる命令
のセットも、トラステッドコアとして動作するように試
みることができることに留意されたい。しかし、トラス
テッドコアが不正に変更された場合、「トラステッドコ
ア」として動作しようと試みている命令(トラステッド
コアを不正に変更したもの)は、他の関係者から信用さ
れなくなり、これは、トラステッドコアを不正に変更し
たものが、異なる暗号化措置を有するようになり、トラ
ステッドコアを不正に変更しないものにアクセス可能で
ある鍵にアクセスできなくなるからである。
【0109】本明細書に記載された初期化プロセスによ
り、当然かつ容易に、コンピュータが、異なるトラステ
ッドコアを逐次、任意の回数で、システムをリブート(r
e-boot)することなく動作できることにも留意された
い。たとえば、ユーザは、トラステッドコアxの実行を
開始し、次いで、トラステッドコアy(これを、トラス
テッドコアxの異なるバージョン、または、まったく異
なるトラステッドコアにすることができる)の実行に切
り替え、次いで、トラステッドコアzに切り替える(あ
るいは、トラステッドコアxに戻る)ことなどができ
る。
【0110】メモリコントローラ106は、トラステッ
ドコア146がメモリ110にロードされた後、これ
を、コンピュータ100のいかなる先の状態もが初期化
プロセスの保全性を損なうことのないような方法におい
て、初期化し、実行を開始できることを保証するように
動作する。メモリコントローラ106が、トラステッド
コアを初期化することができる安全な環境を提供するよ
うに動作することに留意されたい。しかし、初期化プロ
セスが完了した後、トラステッドコア146が、それ自
体の安全性の責任を負う。加えて、メモリコントローラ
106は、トラステッドコア146によって提供された
信用可能性または安全性に関するいかなる保証または確
信も生成しない。
【0111】トラステッドコア146の初期化は、トラ
ステッドコア146の実行を開始することを指す。この
初期化は一般的には、トラステッドコア146が全体と
してメモリ110にロードされた後に起こるが、代替実
施態様では、コード146のいくつかの部分を、初期化
プロセスが起こった後にメモリにロードできるようにす
ることができる。初期化プロセスは、トラステッドコア
初期化命令のセットによって実行され、これは、トラス
テッドコア146の一部である(また、場合によって
は、1つまたは複数の部分148、150および152
の一部である)。初期化プロセスによって実行される厳
密な動作は、トラステッドコアが動作する特定の方法、
ならびに、コンピュータ100の特定のハードウェア
(たとえば、CPUアーキテクチャ)に基づいて変わる
可能性があるが、一般に、トラステッドコアによって提
供された保護を確立すること(たとえば、トラステッド
空間をセットアップすること)、および、CPUを初期
化してこの保護を使用するようにすることを含む。「初
期化コード(initialization code)」が行わなければな
らないことの1つが「リセットベクトル(reset vecto
r)」を提供することであり、これは適所に残され、常
に、リセット,開始(initiate),ホットプラグ追加(hot
-plug add)などが行われるいかなるプロセッサをも処理
する準備ができている。これを行うことにより、トラス
テッドコアが、その継続された保全性を、マシンのCP
U構成における深い変更(たとえば、新しいものがオン
ザフライで追加される)に対して保証する。
【0112】トラステッドコア146の初期化は、CP
U102,104のうちの1つによって発行された「ト
ラステッドコア初期化(trusted core initializatio
n)」コマンドに応答して開始する。トラステッドコア初
期化コマンドは一般に、コンピュータ100のブート中
に発行されるが、コンピュータ100が完全にブートさ
れている間あるいはその後のいかなるときにも起こる可
能性がある。トラステッドコア初期化コマンドは、トラ
ステッドコア初期化をトリガするように設計されてお
り、幅広い種類の方法のいずれにおいても実施すること
ができる。たとえば、このコマンドを、特定のポートへ
の書き込み、特定のアドレスへの書き込みなどにするこ
とができるが、ポートまたはアドレスは、トラステッド
コアが、コアが制御を獲得した後にハードウェアが提供
する保護手段がどんなものであれ、それを使用してポー
トまたはアドレスを保護することができるという特性を
有するべきである。これは、トラステッドコアが動作中
になった後、信用されていないいかなるコードもこれを
メモリから除去したり置き換えることができる、単純な
サービス拒絶攻撃に対して、脆弱ではないことを保証す
るものである。他の実施形態として、このような保護が
提供されなかった(たとえば、トラステッドコア初期化
コマンドを、ある保護不可能なポートによって呼び出さ
なければならない)場合、これを「一回実行(run onc
e)」の動作にすることができ、これは、システムがリブ
ートされるまで、その機能を再度実行することを拒絶す
るものである。しかし、このようなマシンは、トラステ
ッドコアを停止かつ開始するか、あるいは、ブートにつ
き複数のトラステッドコアを使用するための能力を失
う。
【0113】一実施態様では、トラステッドコア初期化
コマンドが3つのパラメータ、すなわち、開始、コード
長およびメモリ長を含む。開始パラメータは、メモリ1
10においてトラステッドコア146が開始する場所を
指す(たとえば、プラットフォームトラステッドコア部
148の最初の命令のメモリアドレス)。他の実施形態
として、特に、トラステッドコア146が物理的に隣接
したメモリに位置しない実施形態では、メモリ記述子リ
スト(MDL)を開始パラメータとして識別することが
でき、メモリコントローラ106に対してどのメモリペ
ージがトラステッドコアを含むかを識別する。コード長
パラメータは、トラステッドコア146のコードの長さ
(たとえば、バイト数)を指す(たとえば、部分148
および150の結合であるが、トラステッドコアデータ
部152を除く)。メモリ長パラメータは、トラステッ
ドコアの長さ(たとえば、バイト数)を指す(たとえ
ば、すべての3つの部分148,150および152の
結合)。これらのパラメータが、トラステッドコア初期
化コマンドの前に(あるいは、その一部として)、メモ
リコントローラ106に渡される。一実施態様では、3
つのパラメータが、CPU102,104のうちの1つ
によって、トラステッドコア初期化コマンドの発行の前
に、メモリコントローラ106のパラメータレジスタ1
53にロードされる。
【0114】トラステッドコア初期化コマンドを受信す
ると、メモリコントローラ106がメモリ110を、す
べてのCPU102,104およびコンピュータ100
における他のいかなるバスマスタ(bus master)からも保
護する。CPU102,104、ならびに、コンピュー
タ100における他のいかなるバスマスタも、メモリ1
10に直接アクセスできず、むしろメモリコントローラ
106を介してメモリ110にアクセスしなければなら
ないことを考えると、メモリコントローラ106が容易
にメモリ110をCPUおよびバスマスタから保護する
ことができる。メモリ110を保護することによって、
メモリコントローラ106は、他のコード(たとえば、
CPUによって実行中であるか、あるいは別のバスマス
タを制御しているもの)が、トラステッドコア初期化プ
ロセスを干渉しないことを保証する。メモリ110の保
護において、メモリコントローラ106は最初に、メモ
リ110へのアクセスを、メモリリフレッシュコントロ
ーラ(図示せず)からのメモリリフレッシュ信号のみに
することができ、これは、DRAMをリフレッシュさ
せ、その状態を維持することができる。
【0115】要素化されたメモリ(factored memory)、
つまり、多数のメモリコントローラを有する多数のメモ
リのブロックを有するマシンでは、多数の異なる手法を
使用することができる。1つの手法では、多数のメモリ
コントローラが互いに調整して、トラステッドコア初期
化オペレータをすべてのメモリに渡って適用する。もう
1つの手法では、トラステッドコア初期化を行うために
選択されたメモリコントローラ/メモリが、そのすべて
を行い(そのため、トラステッドコア全体が1つの「バ
ンク」にロードされる)、他のメモリコントローラがこ
れを無視する。すべてのトラステッドコアが単一の保護
メモリバンクにあるので、他の動作は重要ではない。選
択されたメモリコントローラがなお、すべてのCPUの
挙動を強制し、そのため、プラットフォームのハードウ
ェアが、これを行うことができるようにセットアップさ
れる。
【0116】メモリコントローラ106における制御ロ
ジック136も、トラステッドコア初期化ビット154
を、メモリコントローラ106の安全部分156内に設
定する。この安全部分156は、制御ロジック136の
みが安全部分156内のレジスタおよび/またはメモリ
にアクセスできることにおいて安全である。安全部分1
56は、メモリコントローラ106の外部のコンピュー
タ100における他の構成要素に対して可視にすること
はできず、あるいは、他の実施形態として、制御ロジッ
ク136が単に、安全部分156内のいかなるレジスタ
またはメモリにもアクセスしようと試みる、メモリコン
トローラ106で受信されたいかなるコマンドも、無視
(あるいは、拒絶)することができる。トラステッドコ
ア初期化ビット154により、制御ロジック136は、
トラステッドコア初期化プロセスが進行中であるかどう
かを知ることができ、ビット154の使用については以
下でより詳細に論じる。
【0117】メモリコントローラ106は、様々な異な
る方法においてメモリ110を保護することができる。
一実施態様では、メモリコントローラ106は、CPU
102,104が読み取りまたは書き込み要求をプロセ
ッサバス112上に発行するのを防止し、それにより、
CPU102,104がメモリ110にアクセスするの
を防止する。CPU102,104をバスから離してお
く方法は、CPU102,104およびプロセッサバス
112のアーキテクチャに基づいて変わる(たとえば、
あるIntelアーキテクチャの実施では、CPUが読
み取りおよび書き込み要求をバス上に発行するのを防止
することができ、これは、BNR#(Block Next Reques
t)信号をプロセッサバス112上にアサートすることに
よって、あるいは、各CPUがリセットされるまでその
動作を停止する停止(たとえば、HLT)コマンドをC
PUに発行することによって行われる)。CPU10
2,104は最終的に、再度読み取りおよび書き込み要
求をプロセッサバス112上に発行することができるよ
うになるので、制御ロジック136も、メモリコントロ
ーラ106がCPU102,104からメモリ110に
おけるトラステッドコア146のアドレス範囲に受信す
るすべての要求を比較し、メモリコントローラ106が
CPU102,104からこのトラステッドコア初期化
プロセス中に受信する(たとえば、ビット154セット
による)、このアドレス範囲内であるいかなる要求も、
従来の方法において受け入れられ、応答されるが、この
アドレス範囲内でないか、あるいはCPU102,10
4以外の構成要素からのいかなる要求も拒絶される(た
とえば、メモリコントローラ106が、要求を確認する
ことを拒絶することができる、要求を否定することがで
きる、など)。他の実施形態として、このアドレス範囲
内でなく受信された要求を許可することができるが、こ
のようなメモリの領域が保護されていないことを理解す
ることを伴う。
【0118】メモリコントローラ106は、I/Oバス
114上の他のバスマスタがメモリ110にアクセスす
ることも防止する。加えて、メモリコントローラ106
は、I/Oバス114上の他のバスマスタが(たとえ
ば、CPU内あるいはバス112上の)キャッシュメモ
リに影響を与えることを、このようないかなるトランザ
クションをもバス112上に発行しないことなどによっ
て、防止することができる。たとえば、メモリコントロ
ーラ106が、I/Oコントローラ108に信号をI/
Oバス114上にアサートさせることができ、これによ
り、いかなるバスマスタもが読み取りおよび書き込み要
求をバス114上に発行するのを防止する。もう1つの
例として、メモリコントローラ106が単に、I/Oコ
ントローラ108から受信するいかなるメモリアクセス
要求も無視することができ、これは、I/Oインターフ
ェース134にこのような要求を否定させ、このような
要求の受け入れまたは確認を拒絶させることなどによっ
て行う。メモリ110へのアクセスを防止することは、
CPUのアクセスおよびI/Oバスマスタのアクセスの
ための類似の様式において実施することができるが、初
期化プロセス中に、CPUのアクセスが可能とされて
も、I/Oバスマスタのアクセスが可能とされないこと
に留意されたい。
【0119】メモリコントローラ106は、トラステッ
ドコア初期化コマンドを受信すると、即時にメモリ11
0を保護することができ、あるいは、他の実施形態とし
て、メモリ110を保護する前に、ある期間、あるい
は、ある他の動作が発生するまで待機することができ
る。たとえば、特定のバスマスタが、トラステッドコア
初期化コマンドが受信されたときに、長いDMA転送の
処理中である可能性があり、メモリコントローラ106
が、DMA転送を完了させることを選択することができ
る。メモリ110の保護を即時にすることはできない
が、トラステッドコア初期化プロセスはメモリ110が
保護されるまで進行しない。
【0120】メモリ110が保護された後、制御ロジッ
ク136が、トラステッドコア146に基づいてダイジ
ェスト値を生成する。他の実施形態として、専用の暗号
化プロセッサなど、もう1つの構成要素(図示せず)
が、ダイジェスト値を生成するために一時的にメモリ1
10にアクセスできるようにすることができる(あるい
は、ダイジェストを暗号化プロセッサにおいて保持する
ことができ、これは、暗号化プロセッサが私的にメモリ
コントローラと共に作業して、ダイジェスト操作を、C
PUが初期化プロセスを実行中である(かつ、暗号化プ
ロセッサのこの要求を行う、信用されていないソフトウ
ェアによってだますことができない)ときにのみ実行す
る限りである)。しかし、このアクセスは、暗号化プロ
セッサがメモリ110からしか読み取ることができない
ようにするなど、限定することができる。このダイジェ
ストは、上述したような同じ暗号化機構を使用して生成
される。次いで、制御ロジック136が、生成されたダ
イジェスト値をダイジェスト138として、メモリコン
トローラ106の安全部分156に格納する。次いで、
ダイジェスト138を、トラステッドコア146による
後続の証明および/または認証のために使用することが
できる。
【0121】次いで、制御ロジック136が、リセット
ベクトルを新しいリセットベクトルにマップし、これは
初期化ベクトルと呼ばれ、メモリコントローラ106が
プロセッサバス112上の特定のアドレス(たとえば、
FFFFFFF016)のための次の読み取り要求に、
初期化ベクトルにより応答するようにする。CPUが常
に、(リセットベクトル取り出し手順によって供給され
た間接化技法を使用するのではなく)分かっている場所
から実行を開始する状況では、制御ロジック136が命
令を、メモリサブシステムから取り出された命令の最初
のものまたは少数のものとして発行するように構成し、
これにより、CPUに、トラステッドコア(たとえば、
JUMP動作)の開始時に命令の実行を開始させるか、
あるいは、他の実施形態として、トラステッドコアを再
マップさせて、固定プロセッサリセットベクトルに現れ
るようにする。この初期化ベクトルは、トラステッドコ
ア146の最初のアドレスである。一実施態様では、こ
のマッピングが、制御ロジック136によって実施さ
れ、トラステッドコア146の開始場所(たとえば、ト
ラステッドコア初期化コマンドのパラメータとして受信
されたもの)をリセットベクトル140として書き込
む。メモリコントローラ106が、プロセッサバス11
2上の特定のアドレス(たとえば、FFFFFFF0
16)のための読み取り要求を受信するときは、制御ロ
ジック136が安全部分156のビット154をチェッ
クする。このビットが設定された場合、マップされたリ
セットベクトル140が、要求側のCPUに、リセット
ベクトルとして返される。しかし、このビットが設定さ
れていなかった場合、最初のBIOSブートブロックア
ドレスが要求側のCPUに返される。
【0122】次いで、制御ロジック136が、リセット
信号をプロセッサバス112上のCPUにアサートす
る。多数のCPUがプロセッサバス112上にある状況
では、リセット信号がすべてのCPUにアサートされる
(他の実施形態として、リセット信号を単一のCPUに
向けて送ることができる)。リセット信号がアサートさ
れる方法(および、リセット信号自体の特性)は、CP
U102,104およびプロセッサバス112のアーキ
テクチャに基づいて変わる可能性がある(たとえば、あ
るIntelアーキテクチャの実施では、プロセッサバ
ス112上のすべてのCPUを、RESET#信号をプ
ロセッサバス112上にアサートすることによってリセ
ットすることができる)。
【0123】他の実施形態として、他の機構を使用し
て、プロセッサバス112上のCPUをリセットするこ
とができる。CPUをリセットする目的は、CPUのそ
の状態(たとえば、CPUのレジスタ、キャッシュ、バ
ッファなどの内に存在する可能性のある、すべての命令
およびデータ)をクリアして、その以前の状態がトラス
テッドコア初期化プロセスの実行保全性を損なう可能性
のないようにすることである。たとえば、CPUのキャ
ッシュに格納されている不当なアプリケーションの命令
は、トラステッドコア初期化プロセスの保全性を損なう
ことができない。
【0124】プロセッサバス112上のCPUをリセッ
トすることに加えて、プロセッサバス112上でメモリ
を含む、他のいかなるキャッシュメモリまたは他のデバ
イスもリセットされる。たとえば、追加のL3キャッシ
ュ(図示せず)もプロセッサバス112に結合すること
ができ、この場合、制御ロジック136がL3キャッシ
ュならびにCPUをリセットする。プロセッサバス11
2上のこれらの追加のキャッシュメモリまたは他のデバ
イスは、様々な方法のいずれにおいてもリセットするこ
とができ、これらは、ランダム値をメモリに書き込むこ
と、ゼロまたは1の文字列をメモリに書き込むこと、電
力をメモリから除去すること(たとえば、一時的にDR
AMをリフレッシュしないこと)、特定のバストランザ
クション(specific bus transaction)を発行してキャッ
シュ全体または特定のキャッシュ線エントリ(specific
cache-line entry)を無効にすることなどである。
【0125】CPU102,104(および、プロセッ
サバス112上の他のいかなるキャッシュまたはデバイ
ス(メモリコントローラ106を除く))をリセットし
た後、メモリコントローラ106により、プロセッサバ
ス112上のCPUの1つがメモリ110にアクセスで
きるようにする。例示された例では、CPU102,1
04のいずれもが、最初にメモリ110にアクセスでき
るようにすることができる(が、ただ1つのみが可能と
される)。メモリコントローラ106は、多数のプロセ
ッサのうちのどれがメモリ110にアクセスできるよう
にするかを、様々な方法のうちのいずれにおいても決定
することができ、これらは、ある所定の設定、ランダム
決定、ある外部の(あるいは、CPU内部の)バスアー
ビトレーション機構が決定できるようにすることなどで
ある。
【0126】考察のため、メモリコントローラ106
が、CPU102がメモリ110にアクセスできるよう
にすることを決定すると仮定する。次いで、メモリコン
トローラ106は、CPU102がプロセッサバス11
2にアクセスできるようにする(他のすべてのCPU1
04はなお、プロセッサバス112にアクセスするのを
防止される)。CPUがリセットされた後、CPUは、
そのいかなるキャッシュまたはバッファにおいても命令
を有していない(あるいは、少なくとも、CPUが読み
取る命令またはデータがない)ようになる。したがっ
て、CPU102は、実行するための命令を、プロセッ
サバス112上で特定のアドレス(たとえば、FFFF
FFF016)をアサートすることによって要求する。
メモリコントローラ106がこの要求を受信し、制御ロ
ジック136が、トラステッドコア初期化プロセスビッ
ト154が設定されていることを決定し、そのため、メ
モリコントローラ106がリセットベクトル140をC
PU102に返す。特定のアドレス(たとえば、FFF
FFFF016)を受信すると、制御ロジックが追加の
プロセッサ毎のベクトルビット158を設定する。この
ビット158により、制御ロジック136が、別の特定
のアドレス(たとえば、FFFFFFF016)が受信
された場合に、リセットベクトル140がすでに別のプ
ロセッサに返されていることを知ることができる。ビッ
ト158の使用については以下でより詳細に論じる。
【0127】リセットベクトル140を受信すると、C
PU102は、プロセッサバス112上に、リセットベ
クトル140におけるメモリアドレスのための読み取り
要求を発行し、これはトラステッドコア146における
最初の命令である(また、トラステッドコア初期化プロ
セスにおける最初の命令である)。したがって、CPU
102が、トラステッドコアコード146の実行を開始
する。CPU102がリセットされたので、先にCPU
102にロードされた命令(たとえば、不当なコード)
が、トラステッドコア146のその実行に影響を与える
ことはできない。加えて、他のすべてのバスマスタがメ
モリ110にアクセスすることが防止されるので、これ
らが、CPU102によってメモリ110から取り込み
かつ実行中のコード146を改変することはできない。
【0128】CPU102は、トラステッドコアコード
146の取り込みおよび実行を継続し、これにより、コ
ンピュータ100においてトラステッドコアを初期化す
る。上述のように、トラステッドコアが初期化される厳
密な方法は、コンピュータ100のアーキテクチャ、C
PU102,104、実施中のトラステッドコアのタイ
プなどに基づいて変わる可能性がある。この初期化プロ
セスの一部として、トラステッドコア146が多数のプ
ロセッサをサポートする場合、追加のCPU開始ベクト
ルがリセットベクトル142としてロードされる。この
追加のCPU開始ベクトルは、コード146において、
追加のプロセッサが命令の実行を開始した場合に追加の
命令が取り込まれるメモリアドレスを識別する。この第
2のリセットベクトルを使用して、たとえば、追加のプ
ロセッサに、トラステッドコアにおいて、トラステッド
コア146の開始ではない他のところ(たとえば、コー
ド146のトラステッドコア初期化部分の開始以外)で
命令の実行を開始させることができる。しかし、他のC
PUは、「初期化の終了(end of initialization)」ま
で動作することができないので、142のベクトルは
「初期化の終了」後まで使用されない。
【0129】最終的に、トラステッドコア初期化プロセ
スが完了し、「初期化の終了」コマンドがCPU102
によって発行される。初期化の終了コマンドを、上述の
トラステッドコア初期化コマンドに類似した、様々な方
法のいずれにおいてもアサートすることができる。初期
化の終了コマンドを受信すると、メモリコントローラ1
06により、プロセッサバス112上のすべての残りの
CPU104がメモリ110にアクセスできるようにな
る。これらの各CPU104はリセットされており、そ
れらのキャッシュまたはバッファのいずれにおいても命
令を有していない(あるいは、少なくとも、有効な命令
がない)ようになる。したがって、各CPU104は、
命令を実行するように、プロセッサバス112上で特定
のアドレス(たとえば、FFFFFFF016)をアサ
ートすることによって要求する。メモリコントローラ1
06がこれらの要求を受信し、制御ロジック136が、
追加のプロセッサベクトルビット158が設定されてい
ることを決定し、そのため、メモリコントローラ106
がリセットベクトル142を各CPU104に返す。
【0130】次いで、制御ロジック136は、トラステ
ッドコア初期化プロセスが完了したときトラステッドコ
ア初期化ビット154をクリアする。メモリコントロー
ラ106は、他のバスマスタがメモリ110にアクセス
するのを防止することもやめる。したがって、別のバス
マスタからの不当なコードに対するいかなる追加の保護
も、メモリコントローラ106ではなくトラステッドコ
ア146の実行によって防止されるものである。
【0131】各CPU104は、リセットベクトル14
2を受信すると、プロセッサバス112上に、リセット
ベクトル142におけるメモリアドレスのための読み取
り要求を発行し、これは、トラステッドコア146にお
ける命令である。したがって、各CPU104は、トラ
ステッドコアコード146における命令の実行を開始す
る。各CPU104がリセットされると、先にCPU1
04にロードされた命令(たとえば、不当なコード)
は、トラステッドコア146のその実行に影響を与える
ことはできない。
【0132】一実施態様では、1つまたは複数のCPU
102,104が、正しく機能するために、マイクロコ
ードがそれにロードされることを必要とする可能性があ
る。このマイクロコードは、たとえば、CPUにおける
エラーまたは他のバグを修正し、CPUの固有の命令セ
ットとは異なる命令セットを露出することなどができ
る。このマイクロコードを、トラステッドコア146に
(たとえば、トラステッドコアデータ部152におい
て)含めることができ、命令を、トラステッドコア初期
化プロセスに含めて、マイクロコードを適切なCPUに
ロードすることができる。加えて、マイクロコードが本
物であることを検証することができ、これは、ダイジェ
ストを計算し、これをマイクロコード内で証明されたダ
イジェスト(たとえば、マイクロコードの作成者または
配布者によってそこに配置されたもの)に対して比較し
て、このマイクロコードが、マイクロコードの配布者に
よって署名された以後に改変されていないことを保証す
ることなどによる。
【0133】一実施態様では、メモリコントローラ10
6は、トラステッドコア初期化コマンドに応答して、以
下の保証を提供する。 ・メモリに対するすべてのI/Oアクセスが停止する。
リフレッシュコントローラおよびCPU(リセットされ
た後)を除き、どの構成要素もメモリにアクセスできな
い。 ・トラステッドコアの暗号化措置は、メモリに対するI
/Oアクセスが停止した後に計算される。 ・どのCPUも、リセットされた後まで再起動できず、
メモリにアクセスできない。 ・すべてのCPUは、トラステッドコアコードにおける
2つの場所のうちの一方で命令の実行を開始し、これら
の場所が、トラステッドコアコードから設定される。 ・CPUのうちの1つのみが、2つの場所のうちの一方
で命令の実行を開始し、他のものはすべて、トラステッ
ドコア初期化プロセスの終了まで待機し、2つの場所の
うちの他方で命令の実行を開始する。 ・メモリに対するI/Oアクセスは、トラステッドコア
初期化プロセスが完了するまで可能にされない。
【0134】加えて、メモリコントローラ106は、い
かなる割り込みもインターセプトかつ禁ずるように動作
することもできる。たとえば、メモリコントローラ10
6は、コンピュータ100のための割り込みコントロー
ラを含むか、あるいは他の実施形態としてそれと通信す
ることができる。トラステッドコア初期化プロセス中に
受信されたいかなる割り込みも禁ずることができる。他
の実施形態として、メモリコントローラ106が割り込
みに関与することができない(たとえば、CPU10
2,104がリセットされ、メモリコントローラ106
およびトラステッドコア146によって、命令を得るた
めのそれらの能力が制限されるため)。
【0135】加えて、ある実施形態では、トラステッド
コア初期化プロセスが、トラステッドコアの保護あるい
はカーテニングされた空間内である、メモリのある領域
(実および/または仮想領域のいずれか)を確立する。
トラステッドコアの動作中に、トラステッドコアは、そ
の保護された空間内で実行中のトラステッドアプリケー
ションのみが、その保護された空間内の他のメモリアド
レスにアクセスできることを保証するように動作する。
これらの実施形態では、メモリコントローラ106のす
べての制御(たとえば、パラメータレジスタ153な
ど、コントローラ106のアドレス指定可能な部分)
は、保護された空間内に含まれる。加えて、トラステッ
ドコア初期化コマンドが発行される機構(たとえば、特
定のレジスタアドレス、特定のポートなど)も保護され
た空間に含まれ、信用できないコードがトラステッドコ
ア初期化コマンドを再発行するのを防止する。
【0136】ある実施態様では、CPU102,104
が2つの動作モード、すなわち、実モード(real mode)
および保護モード(protected mode)をサポートする。実
モードは、前のCPU(たとえば、Intel 808
6プロセッサ)のプログラミング環境を提供することを
指し、保護モードは、CPUのすべての命令およびアー
キテクチャの特徴を使用可能にする。これらの実施態様
では、CPU102,104が、電源が入れられたとき
に(かつ、RESET#信号に応答して)、実モードに
初期化される。トラステッドコア初期化プロセスが開始
し、これは、各CPUについて、そのCPUを保護モー
ドに移行し、次いでメモリページングをオンにすること
によって行う(メモリページングは、仮想メモリを指
し、メモリの「ページ」をCPUによって参照すること
ができ、メモリ110と別の記憶デバイス(たとえば、
デバイス118)の間で必要とされたときにスワップす
ることができる)。したがって、トラステッドコア初期
化プロセスにおいて、リセットされ、メモリへのアクセ
スが許可される追加のCPUについて(最初のCPUの
後)、これらが実モードにおいて、保護モードおよびオ
ンにされたページングに移行されるために十分長く動作
することができることに配慮するべきである。これは、
たとえば、追加のプロセッサ開始ベクトル(リセットベ
クトル142)の選択における配慮によって実施するこ
とができる。
【0137】また、トラステッドコアの外部のコード
が、強制のプロセッサリセットを構成した場合(これは
しばしばプログラムにより可能であり、一般的にはPC
クラスのマシンで可能である)、プロセッサは、動作中
のコアを潜在的にくつがえす可能性のあるコードではな
く、トラステッドコアを実行することによって起動する
ことにも留意されたい。この場合、そのコアは、これを
例外条件として処理することを選択し、すべての既存の
内部状態を破棄する(メモリをクリアする)ことがで
き、あるいは、実行を継続するための動作を取ることが
できる(たとえば、プロセッサのリセット前に実施され
ていたCPU保護プロファイルを再ロードする)。
【0138】トラステッドコア初期化プロセスには、プ
ロセッサバス112においていかなる追加のバストラン
ザクションも必要ではなく、CPU102,104にお
ける追加のピン、または、CPU102,104への他
のこのような修正も必要ではないことに留意されたい。
むしろ、初期化プロセスがメモリコントローラにおいて
(たとえば、チップセットにおいて)実施され、それに
よりCPUへのいかなる修正の必要性も防止される。
【0139】本明細書では、主としてコンピュータのブ
ート中に実行されるものとして論じたが、トラステッド
コア初期化プロセスを異なる時点で実行することができ
る。たとえば、トラステッドコアが動作することを必要
とするアプリケーションが実行される(たとえば、ユー
ザが、保護される必要のあるマルチメディアコンテンツ
をダウンロードしようとする)まで、トラステッドコア
をメモリ110にロードすることができず、トラステッ
ドコア初期化コマンドを発行することができない。加え
て、トラステッドコア初期化プロセスを、多くの回数繰
り返すことができる。例として、トラステッドコアコー
ドは、トラステッドコアの実行を終了する「トラステッ
ドコアを終了させる(terminate trusted core)」コマン
ドを有している可能性がある。しかし、トラステッドコ
アを、後の時点で再度メモリ110にロードすることが
でき(それが実際に実行終了の一部として除去されたか
のように)、トラステッドコア初期化プロセスを、トラ
ステッドコアコードが再度実行を開始するために繰り返
すことができる。また、多数の異なるトラステッドコア
を、一度に1つずつ、交互に動作することができる。
【0140】加えて、トラステッドコア初期化プロセス
が完了し、他のCPUがメモリにアクセスできるように
された後、これらの追加のCPUが、トラステッドコア
初期化プロセスが開始するときにコンピュータにおいて
存在している必要がないことに留意されたい。例とし
て、コンピュータは、CPUを「ホットプラグ(hot-plu
g)」する(コンピュータの動作中にCPUをコンピュー
タに追加する)ための能力をサポートすることができ
る。このような新たに追加されたいかなるCPUもメモ
リにアクセスすることができ、命令の実行を追加のプロ
セッサリセットベクトルで開始する。
【0141】図1は、単一のメモリコントローラ106
がメモリ110へのアクセスを制御する例示的アーキテ
クチャを例示する。他の実施形態として、トラステッド
コア初期化プロセスを、多数のメモリコントローラがあ
るアーキテクチャにおいて実施することができる。
【0142】図4は、本発明のある実施形態による、分
散メモリコントローラを使用した例示的コンピュータア
ーキテクチャを例示する。コンピュータ200は、プロ
セッサバス206に結合された多数(m)のCPU20
2,204を含むように例示される。CPU202,2
04は、様々なI/O構成要素(図示せず)と、ブリッ
ジ208を介して通信する。加えて、各CPU202,
204はメモリコントローラ210を含む。個別のメモ
リコントローラ210は、分散メモリコントローラアー
キテクチャを実施し、これは、図1のメモリコントロー
ラ106に類似した機能を実行する。ただし、個別のコ
ントローラ210は多数のCPUに渡って分散してい
る。分散メモリコントローラアーキテクチャは、幅広い
種類の従来の方法のいずれにおいても実施することがで
き、追加の結合部(図示せず)を個別のメモリコントロ
ーラ210の間に含めて、通信をメモリコントローラ2
10の間で渡すことができるようにすることができる
(たとえば、個別のメモリコントローラ210の同期化
のため)。
【0143】図4の例では、各CPUは、それ自体の直
接接続されたメモリを含む。コンピュータ200に含ま
れたバスロジックおよびプロトコルは、各CPUによる
全体のメモリサブシステムのビューがコヒーレントの状
態であることを保証する。このようなメモリアーキテク
チャはしばしば、キャッシュコヒーレント不均等メモリ
アクセスシステム(CC−NUMA)と呼ばれる。他の
実施形態として、それ自体の接続されたメモリを有する
各CPUではなく、メモリコントローラを多数のCPU
の間に分散させて、単一の共有システムメモリにアクセ
スすることができる。
【0144】図5は、本発明のある実施形態による、コ
ード初期化プロセスのための例示的処理を例示する流れ
図である。図5の処理は、図1のコンピュータ100ま
たは図4のコンピュータ200など、コンピュータによ
って実施され、ソフトウェアにおいて実施することがで
きる。図5の処理を、トラステッドコア初期化プロセ
ス、または、他の実施形態として、他のコードのための
初期化プロセスのために使用することができる。
【0145】最初に、コンピュータのための通常のブー
ト処理が、必ずしも安全ではないBIOSを使用して開
始される(動作252)。最終的に、コードがメモリに
ロードされ(動作254)、コード初期化コマンドが受
信される(動作256)。コード初期化コマンドに応答
して、メモリがすべてのプロセッサおよびバスマスタか
ら保護される(動作258)。次いで、メモリにおける
コードの暗号化措置が抽出され、安全な場所に格納され
る(動作260)。次いで、プロセッサリセットベクト
ルが、メモリにおけるコードの開始など、初期化ベクト
ルにマップされる(動作262)。
【0146】プロセッサリセットベクトルが初期化ベク
トルにマップされた後、すべてのプロセッサはリセット
され(動作264)、プロセッサのうちの1つがメモリ
にアクセスできるようになる(動作266)。次いで、
処理は、メモリにアクセスできるようにされたプロセッ
サがメモリからコード初期化プロセスを実行するまで待
機する(動作268)。コード初期化プロセスの終了が
信号により通知され、これは、たとえば、コード初期化
プロセスを実行するプロセッサから発行されたコマンド
による。コード初期化プロセスが終了した後、プロセッ
サリセットベクトルは追加のプロセッサ開始ベクトルに
再マップされる(動作270)。次いで、コンピュータ
における他のいかなるプロセッサもメモリにアクセスで
きるようになり(動作272)、コンピュータにおける
他のいかなるバスマスタもメモリにアクセスできるよう
になる(動作274)。
【0147】本明細書の考察では、本発明の実施形態
を、1つまたは複数の従来のプロセッサまたはコントロ
ーラ(たとえば、図1の制御ロジック136)によって
実行されるプログラムモジュールまたはコードなど、一
般にプロセッサ実行可能命令に関して記載してある。一
般に、プログラムモジュールまたはコードは、ルーチ
ン、プログラム、オブジェクト、コンポーネント、デー
タ構造などを含み、これらが特定のタスクを実行し、あ
るいは、特定の抽象データ型を実施する。分散環境(dis
tributed environment)では、プログラムモジュールま
たはコードは、多数のメモリ記憶デバイスに位置するこ
とができる。
【0148】他の実施形態として、本発明の実施形態
を、ハードウェア、または、ハードウェア、ソフトウェ
アおよび/またはファームウェアの組み合わせにおいて
実施することができる。たとえば、本発明のすべてまた
は一部を、1つまたは複数の特定用途向け集積回路(A
SIC)またはプログラマブルロジックデバイス(PL
D)において実施することができる。
【0149】コンピューティングデバイス(図1のデバ
イス100または図4のデバイス200など)は、一般
的には、少なくともある形式のコンピュータ可読媒体を
含む。コンピュータ可読媒体は、コンピューティングデ
バイスによってアクセスすることができる、いかなる使
用可能な媒体にすることもできる。例として、限定では
なく、コンピュータ可読媒体は、コンピュータ記憶媒体
および通信媒体を含むことができる。コンピュータ記憶
媒体は、揮発性および不揮発性,取外し可能および取外
し不能な媒体であって、情報の格納のためのいずれかの
方法または技術において実施されたものを含む。これら
情報は、コンピュータ可読命令,データ構造,プログラ
ムモジュールまたは他のデータなどである。コンピュー
タ記憶媒体には、RAM,ROM,EEPROM,フラ
ッシュメモリまたは他のメモリ技術,CD−ROM,デ
ジタル多用途ディスク(DVD)または他の光学記憶装
置,磁気カセット,磁気テープ,磁気ディスク記憶装置
または他の磁気記憶デバイス、または、所望の情報を格
納するために使用することができ、コンピューティング
デバイスによってアクセスすることができる、他のいか
なる媒体もが含まれるが、これらに限定されるものでは
ない。通信媒体は、一般的には、コンピュータ可読命
令、データ構造、プログラムモジュールまたは他のデー
タを、搬送波などの変調データ信号または他の移送機構
において実施し、いかなる情報送達媒体をも含む。「変
調データ信号(modulate data signal)」という用語は、
1つまたは複数のその特性セットを有するか、あるい
は、信号において情報を符号化するような方法において
変更された信号を意味する。例として、限定ではなく、
通信媒体には、有線ネットワークまたは直接有線接続な
どの有線媒体、および、音波,RF,赤外線および他の
無線媒体などの無線媒体が含まれる。上記のいかなるも
のの組み合わせもコンピュータ可読媒体の範囲内に含ま
れるべきである。
【0150】例示のため、オペレーティングシステムな
ど、プログラムおよび他の実行可能プログラム構成要素
は、本明細書において離散的ブロック(discrete block)
として例示したが、このようなプログラムおよび構成要
素が様々な時点でコンピュータの異なる記憶構成要素に
おいて存在し、コンピュータのデータプロセッサによっ
て実行されることを理解されたい。
【0151】(むすび)上記の説明は、構造上の特徴お
よび/または方法上の動作に特有である言語を使用した
が、付属の特許請求の範囲において定義された本発明に
ついては、記載された特定の特徴または動作に限定され
ないことを理解されたい。むしろ、特定の特徴および動
作は、本発明を実施する例示的形式として開示したもの
である。
【図面の簡単な説明】
【図1】本発明の一実施形態によるコンピュータを示す
ブロック図である。
【図2】トラステッドコアを実現する手法を示す図であ
る。
【図3】トラステッドコアを実現する手法を示す図であ
る。
【図4】本発明の一実施形態による、分散メモリコント
ローラを使用したコンピュータアーキテクチャを示す図
である。
【図5】本発明の一実施形態による、コード初期化プロ
セスを示す流れ図である。
【符号の説明】
102,104,202,204 CPU 106,210 メモリコントローラ 110 メモリ 112,206 プロセッサバス 114 I/Oバス 118 大容量記憶デバイス 120 ROM 122 BIOS 124 オプションのROM/BIOS拡張 130 プロセッサバスインターフェース 132 メモリインターフェース 136 制御ロジック 138 ダイジェスト 140,142 リセットベクトル 145 初期化ビット 146,160,170 トラステッドコア 158 ベクトルビット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ブライアン ウィルマン アメリカ合衆国 98034 ワシントン州 カークランド 80 プレイス ノースイー スト 10901 Fターム(参考) 5B054 AA08 CC01 CC02 5B076 AA01

Claims (70)

    【特許請求の範囲】
  1. 【請求項1】 1つまたは複数のコンピュータ可読媒体
    であって、コンピュータの1つまたは複数のプロセッサ
    によって実行されたとき、 前記コンピュータの動作を、信用されていないコードに
    基づいて開始できるようにすること、 前記信用されていないコードの制御下で、トラステッド
    コアをメモリにロードすること、 前記コンピュータにおける1つまたは複数の中央処理装
    置の各々および1つまたは複数のバスマスタの各々が前
    記メモリにアクセスするのを防止すること、前記1つま
    たは複数の中央処理装置の各々をリセットすること、 1つの中央処理装置が前記メモリにアクセスし、かつ前
    記トラステッドコアを初期化するためにトラステッドコ
    ア初期化コードを実行できるようにすること、および、 前記トラステッドコアの実行が初期化された後、前記コ
    ンピュータにおける他のいかなる中央処理装置およびい
    かなるバスマスタも前記メモリにアクセスできるように
    することを含む動作を前記1つまたは複数のプロセッサ
    に実行させる複数の命令が格納されていることを特徴と
    する1つまたは複数のコンピュータ可読媒体。
  2. 【請求項2】 前記1つまたは複数のプロセッサは、1
    つまたは複数のメモリコントローラの1つまたは複数の
    コントローラを含むことを特徴とする請求項1に記載の
    1つまたは複数のコンピュータ可読媒体。
  3. 【請求項3】 前記1つまたは複数のメモリコントロー
    ラは、前記1つまたは複数の中央処理装置の間で分散さ
    れていることを特徴とする請求項2に記載の1つまたは
    複数のコンピュータ可読媒体。
  4. 【請求項4】 前記複数の命令は、前記1つまたは複数
    のメモリコントローラによって実行されるマイクロコー
    ドを含むことを特徴とする請求項2に記載の1つまたは
    複数のコンピュータ可読媒体。
  5. 【請求項5】 前記信用されていないコードは、基本入
    出力システム(BIOS)からのコードおよび複数のオ
    プションの読取り専用メモリ(ROM)からのコードを
    含むことを特徴とする請求項1に記載の1つまたは複数
    のコンピュータ可読媒体。
  6. 【請求項6】 前記防止することは、前記1つまたは複
    数の中央処理装置の各々および前記1つまたは複数のバ
    スマスタの各々が前記メモリにアクセスすることを、前
    記1つまたは複数の中央処理装置の1つから受信され
    た、トラステッドコア初期化コマンドに応答して、防止
    することを含むことを特徴とする請求項1に記載の1つ
    または複数のコンピュータ可読媒体。
  7. 【請求項7】 前記トラステッドコアをロードすること
    は、前記トラステッドコアの異なる部分を複数の異なる
    ソースからコピーすることを含むことを特徴とする請求
    項1に記載の1つまたは複数のコンピュータ可読媒体。
  8. 【請求項8】 前記トラステッドコアをロードすること
    は、前記トラステッドコアの異なる部分を1つまたは複
    数のソースからコピーすること、および、前記異なる部
    分を結合して前記トラステッドコアを組み立てることを
    含むことを特徴とする請求項1に記載の1つまたは複数
    のコンピュータ可読媒体。
  9. 【請求項9】 前記異なる部分を結合することは、前記
    異なる部分のビットの排他的論理和を取ることを含むこ
    とを特徴とする請求項1に記載の1つまたは複数のコン
    ピュータ可読媒体。
  10. 【請求項10】 前記トラステッドコアをロードするこ
    とは、前記トラステッドコアの少なくとも一部を、ロー
    カルの大容量記憶デバイスから前記メモリにコピーする
    ことを含むことを特徴とする請求項1に記載の1つまた
    は複数のコンピュータ可読媒体。
  11. 【請求項11】 前記トラステッドコアをロードするこ
    とは、前記トラステッドコアの少なくとも一部を、リモ
    ートデバイスから前記メモリにコピーすることを含むこ
    とを特徴とする請求項1に記載の1つまたは複数のコン
    ピュータ可読媒体。
  12. 【請求項12】 前記トラステッドコアをロードするこ
    とは、前記トラステッドコアの少なくとも一部を、前記
    コンピュータのチップからコピーすることを含むことを
    特徴とする請求項1に記載の1つまたは複数のコンピュ
    ータ可読媒体。
  13. 【請求項13】 前記防止することは、前記1つまたは
    複数の中央処理装置および前記1つまたは複数のバスマ
    スタからの、前記メモリへのアクセスのためのすべての
    要求を無視することを含むことを特徴とする請求項1に
    記載の1つまたは複数のコンピュータ可読媒体。
  14. 【請求項14】 前記複数の命令はさらに、 前記メモリにおける前記トラステッドコアの暗号化措置
    を抽出すること、および前記抽出された暗号化措置を格
    納することを含む動作を前記1つまたは複数のプロセッ
    サに実行させることを特徴とする請求項1に記載の1つ
    または複数のコンピュータ可読媒体。
  15. 【請求項15】 前記複数の命令はさらに、 暗号化プロセッサをリセットすること、 前記暗号化プロセッサに、前記暗号化措置を抽出するよ
    うに要求すること、および前記抽出された暗号化措置
    を、前記暗号化プロセッサから受信することを含む動作
    を前記1つまたは複数のプロセッサに実行させることを
    特徴とする請求項14に記載の1つまたは複数のコンピ
    ュータ可読媒体。
  16. 【請求項16】 前記1つまたは複数の中央処理装置の
    各々をリセットすることは、プロセッサバスリセット信
    号を前記1つまたは複数の中央処理装置の各々にアサー
    トすることを含むことを特徴とする請求項1に記載の1
    つまたは複数のコンピュータ可読媒体。
  17. 【請求項17】 前記複数の命令はさらに、 中央処理装置リセットベクトルを、初期化ベクトルにマ
    ップすること、 前記中央処理装置リセットベクトルに対応する読取り要
    求を、前記1つの中央処理装置から受信すること、 前記読取り要求に応答して、前記初期化ベクトルを前記
    1つの中央処理装置に返すこと、および前記1つの中央
    処理装置は、前記初期化ベクトルで開始して、前記メモ
    リにアクセスできるようにすることを含む動作を前記1
    つまたは複数のプロセッサに実行させることを特徴とす
    る請求項1に記載の1つまたは複数のコンピュータ可読
    媒体。
  18. 【請求項18】 前記初期化ベクトルは、前記メモリに
    おける前記トラステッドコード内のアドレスであること
    を特徴とする請求項17に記載の1つまたは複数のコン
    ピュータ可読媒体。
  19. 【請求項19】 前記複数の命令はさらに、 前記中央処理装置リセットベクトルを、追加の中央処理
    装置開始ベクトルに、前記初期化ベクトルを前記1つの
    中央処理装置に返した後に再マップすること、および別
    の中央処理装置からの、前記中央処理装置リセットベク
    トルに対応する、他のいかなる読取り要求にも応答し
    て、前記追加の中央処理装置開始ベクトルを返すことを
    含む動作を前記1つまたは複数のプロセッサに実行させ
    ることを特徴とする請求項17に記載の1つまたは複数
    のコンピュータ可読媒体。
  20. 【請求項20】 前記初期化ベクトルは、前記メモリに
    おける前記トラステッドコード内のアドレスであり、前
    記追加の中央処理装置開始ベクトルおよび前記初期化ベ
    クトルは、前記メモリにおける前記トラステッドコード
    内の異なるアドレスであることを特徴とする請求項19
    に記載の1つまたは複数のコンピュータ可読媒体。
  21. 【請求項21】 前記初期化ベクトルおよび前記追加の
    中央処理装置開始ベクトルは、前記トラステッドコアか
    ら得られることを特徴とする請求項19に記載の1つま
    たは複数のコンピュータ可読媒体。
  22. 【請求項22】 前記複数の命令はさらに、マイクロコ
    ードを、前記メモリにおけるトラステッドコアから前記
    1つの中央処理装置へ、前記中央処理装置をリセットし
    た後にロードすることを含む動作を前記1つまたは複数
    のプロセッサに実行させることを特徴とする請求項1に
    記載の1つまたは複数のコンピュータ可読媒体。
  23. 【請求項23】 信用できないコードに基づいて、コン
    ピュータをブートするステップと、 トラステッドコアをメモリにロードするステップと、 前記トラステッドコアの安全な実行を開始するステップ
    とを含むことを特徴とする方法。
  24. 【請求項24】 前記トラステッドコアの実行を終了す
    ることができるようにするステップと、 前記トラステッドコアの安全な実行を、前記コンピュー
    タをリブートすることなく、再び開始するステップとを
    さらに含むことを特徴とする請求項23に記載の方法。
  25. 【請求項25】 前記トラステッドコアの実行を終了す
    ることができるようにするステップと、 別のトラステッドコアをメモリにロードするステップ
    と、 前記他のトラステッドコアの安全な実行を開始するステ
    ップとをさらに含むことを特徴とする請求項23に記載
    の方法。
  26. 【請求項26】 前記トラステッドコアおよび前記他の
    トラステッドコアは、同じトラステッドコアの異なるバ
    ージョンであることを特徴とする請求項25に記載の方
    法。
  27. 【請求項27】 前記開始するステップは、前記トラス
    テッドコアの安全な実行を、前記1つまたは複数の中央
    処理装置の1つから受信された、トラステッドコア初期
    化コマンドに応答して、開始するステップを含むことを
    特徴とする請求項23に記載の方法。
  28. 【請求項28】 前記開始するステップは、前記トラス
    テッドコアの安全な実行を、前記コンピュータにおける
    プロセッサによってサポートされるいかなる追加のバス
    トランザクションも必要とすることなく、開始するステ
    ップを含むことを特徴とする請求項23に記載の方法。
  29. 【請求項29】 前記トラステッドコアの安全な実行を
    開始するステップは、 前記コンピュータにおける1つまたは複数の中央処理装
    置の各々が前記メモリにアクセスするのを防止するステ
    ップと、 前記コンピュータにおける1つまたは複数のバスマスタ
    の各々が前記メモリにアクセスするのを防止するステッ
    プと、 前記1つまたは複数の中央処理装置の各々をリセットす
    るステップと、 1つの中央処理装置が前記メモリにアクセスし、かつト
    ラステッドコア初期化プロセスを実行できるようにする
    ステップと、 前記トラステッドコア初期化プロセスの実行後、他のい
    かなる中央処理装置およびいかなる前記1つまたは複数
    のバスマスタも前記メモリにアクセスできるようにする
    ステップとを含むことを特徴とする請求項23に記載の
    方法。
  30. 【請求項30】 中央処理装置リセットベクトルを、初
    期化ベクトルにマップするステップと、 前記中央処理装置リセットベクトルに対応する読取り要
    求を、前記1つの中央処理装置から受信するステップ
    と、 前記読取り要求に応答して、前記初期化ベクトルを前記
    1つの中央処理装置に返すステップと、 前記1つの中央処理装置が、前記初期化ベクトルで開始
    して、前記メモリにアクセスできるようにするステップ
    とをさらに含むことを特徴とする請求項29に記載の方
    法。
  31. 【請求項31】 前記初期化ベクトルは、前記メモリに
    おける前記トラステッドコード内のアドレスであること
    を特徴とする請求項30に記載の方法。
  32. 【請求項32】 前記中央処理装置リセットベクトル
    を、追加の中央処理装置開始ベクトルに、前記初期化ベ
    クトルを前記1つの中央処理装置に返した後に再マップ
    するステップと、 別の中央処理装置からの、前記中央処理装置リセットベ
    クトルに対応する、他のいかなる読取り要求にも応答し
    て、前記追加の中央処理装置開始ベクトルを返すステッ
    プとをさらに含むことを特徴とする請求項30に記載の
    方法。
  33. 【請求項33】 前記初期化ベクトルは、前記メモリに
    おける前記トラステッドコード内のアドレスであり、前
    記追加の中央処理装置開始ベクトルおよび前記初期化ベ
    クトルは、前記メモリにおける前記トラステッドコード
    内の異なるアドレスであることを特徴とする請求項32
    に記載の方法。
  34. 【請求項34】 前記トラステッドコアをロードするス
    テップは、前記トラステッドコアの異なる部分を、ロー
    カルの大容量記憶デバイス、リモートデバイスおよびロ
    ーカルのチップセットのうちの1つまたは複数を含む、
    複数の異なるソースからコピーするステップを含むこと
    を特徴とする請求項23に記載の方法。
  35. 【請求項35】 プロセッサによって、請求項23に記
    載の方法を実行するように実行可能であるコンピュータ
    プログラムを含むことを特徴とする1つまたは複数のコ
    ンピュータ可読メモリ。
  36. 【請求項36】 コンピュータが、信用できないコード
    に基づいて、動作を開始できるようにするステップと、 前記信用できないコードの制御下で、追加のコードをメ
    モリにロードするステップと、 前記追加のコードの実行を、前記コンピュータにおける
    前記信用できないコードにも関わらず、安全な方法にお
    いて開始するステップとを含むことを特徴とする方法。
  37. 【請求項37】 前記開始するステップは、前記追加の
    コードの実行を、前記コンピュータにおける前記信用で
    きないコードおよび前記コンピュータの他の先に存在す
    る状態にも関わらず、安全な方法において開始するステ
    ップをさらに含むことを特徴とする請求項36に記載の
    方法。
  38. 【請求項38】 前記追加のコードの実行を安全な方法
    において開始するステップは、 前記コンピュータにおける1つまたは複数の中央処理装
    置の各々が前記メモリにアクセスするのを防止するステ
    ップと、 前記コンピュータにおける1つまたは複数のバスマスタ
    の各々が前記メモリにアクセスするのを防止するステッ
    プと、 前記1つまたは複数の中央処理装置の各々をリセットす
    るステップと、 1つの中央処理装置が前記メモリにアクセスし、コード
    初期化プロセスを実行できるようにするステップと、 前記コード初期化プロセスの実行後、他のいかなる中央
    処理装置およびいかなる前記1つまたは複数のバスマス
    タも前記メモリにアクセスできるようにするステップと
    を含むことを特徴とする請求項36に記載の方法。
  39. 【請求項39】 前記開始するステップは、前記追加の
    コードの実行を、前記コンピュータにおけるプロセッサ
    によってサポートされるいかなる追加のバストランザク
    ションも必要とすることなく、安全な方法において開始
    するステップを含むことを特徴とする請求項36に記載
    の方法。
  40. 【請求項40】 中央処理装置リセットベクトルを、初
    期化ベクトルにマップするステップと、 前記中央処理装置リセットベクトルに対応する読取り要
    求を、前記1つの中央処理装置から受信するステップ
    と、 前記読取り要求に応答して、前記初期化ベクトルを前記
    1つの中央処理装置に返すステップと、 前記1つの中央処理装置が、前記初期化ベクトルで開始
    して、前記メモリにアクセスできるようにするステップ
    とをさらに含むことを特徴とする請求項36に記載の方
    法。
  41. 【請求項41】 前記中央処理装置リセットベクトル
    を、追加の中央処理装置開始ベクトルに、前記初期化ベ
    クトルを前記1つの中央処理装置に返した後に再マップ
    するステップと、 別の中央処理装置からの、前記中央処理装置リセットベ
    クトルに対応する、他のいかなる読取り要求にも応答し
    て、前記追加の中央処理装置開始ベクトルを返すステッ
    プとをさらに含むことを特徴とする請求項40に記載の
    方法。
  42. 【請求項42】 前記トラステッドコアを、中央処理装
    置がリセットされた後に実行を開始するアドレスに現れ
    るように、再マップするステップをさらに含むことを特
    徴とする請求項36に記載の方法。
  43. 【請求項43】 中央処理装置から、中央処理装置リセ
    ットベクトルに対応する読取り要求を受信するステップ
    と、 前記読取り要求に、前記中央処理装置に前記トラステッ
    ドコアの開始場所へジャンプさせるための命令により応
    答するステップとをさらに含むことを特徴とする請求項
    36に記載の方法。
  44. 【請求項44】 前記追加のコードをロードするステッ
    プは、前記追加のコードの異なる部分を、ローカルの大
    容量記憶デバイス、リモートデバイスおよびローカルの
    チップセットのうちの1つまたは複数を含む、複数の異
    なるソースからコピーするステップを含むことを特徴と
    する請求項36に記載の方法。
  45. 【請求項45】 プロセッサによって、請求項36に記
    載の方法を実行するように実行可能であるコンピュータ
    プログラムを含むことを特徴とする1つまたは複数のコ
    ンピュータ可読メモリ。
  46. 【請求項46】 プロセッサとの通信を可能にするため
    の第1のインターフェースと、 システムメモリとの通信を可能にするための第2のイン
    ターフェースと、 前記第1のインターフェースおよび前記第2のインター
    フェースに結合され、プロセッサをリセットするため、
    かつ、前記プロセッサがコード初期化プロセスを実行で
    きるようにし、他のいかなるプロセッサもが前記システ
    ムメモリにアクセスするのを防止するための、コントロ
    ーラとを含むことを特徴とするメモリコントローラ。
  47. 【請求項47】 前記メモリコントローラはプロセッサ
    に含まれることを特徴とする請求項46に記載のメモリ
    コントローラ。
  48. 【請求項48】 前記第1のインターフェースは、プロ
    セッサバスインターフェースを含むことを特徴とする請
    求項46に記載のメモリコントローラ。
  49. 【請求項49】 前記メモリコントローラは、前記プロ
    セッサバスインターフェースを必要とすることなく、前
    記プロセッサバス上のいかなる追加のコマンドもサポー
    トするように動作することを特徴とする請求項48に記
    載のメモリコントローラ。
  50. 【請求項50】 前記システムメモリは、ダイナミック
    ランダムアクセスメモリを含むことを特徴とする請求項
    46に記載のメモリコントローラ。
  51. 【請求項51】 前記コントローラはさらに、前記プロ
    セッサが前記コード初期化プロセスを実行できるように
    し、いかなるバスマスタもが前記システムメモリにアク
    セスするのを防止するためのものであることを特徴とす
    る請求項46に記載のメモリコントローラ。
  52. 【請求項52】 前記コントローラはさらに、 前記プロセッサが前記コード初期化プロセスを実行でき
    るようにする前に、前記メモリコントローラに結合され
    た、他のいかなるプロセッサをもリセットし、 前記1つの処理が前記コード初期化プロセスを実行する
    まで、前記メモリコントローラに結合された、他のいか
    なるプロセッサおよびいかなるバスマスタもが、前記シ
    ステムメモリにアクセスするのを防止し、 前記コード初期化プロセスの実行後、前記メモリコント
    ローラに結合された、他のいかなる中央処理装置、およ
    び、前記メモリコントローラに結合されたいかなるバス
    マスタも前記メモリにアクセスできるようにするための
    ものであることを特徴とする請求項46に記載のメモリ
    コントローラ。
  53. 【請求項53】 前記コントローラはさらに、 プロセッサリセットベクトルを初期化ベクトルにマップ
    し、 前記プロセッサリセットベクトルに対応する読取り要求
    を、前記プロセッサから受信し、 前記読取り要求に応答して、前記初期化ベクトルを前記
    プロセッサに返し、 前記プロセッサは、前記初期化ベクトルで開始して、前
    記メモリにアクセスできるようにするためのものである
    ことを特徴とする請求項46に記載のメモリコントロー
    ラ。
  54. 【請求項54】 前記初期化ベクトルは、前記コード初
    期化プロセス内のアドレスであることを特徴とする請求
    項53に記載のメモリコントローラ。
  55. 【請求項55】 前記コントローラはさらに、 前記プロセッサリセットベクトルを、追加のプロセッサ
    開始ベクトルに、前記初期化ベクトルを前記プロセッサ
    に返した後に再マップし、 別のプロセッサからの、前記プロセッサリセットベクト
    ルに対応する、他のいかなる読取り要求にも応答して、
    前記追加のプロセッサ開始ベクトルを返すためのもので
    あることを特徴とする請求項53に記載のメモリコント
    ローラ。
  56. 【請求項56】 前記初期化ベクトルは、前記コード初
    期化プロセス内のアドレスであり、前記追加のプロセッ
    サ開始ベクトルおよび前記初期化ベクトルは、前記コー
    ド初期化プロセス内の異なるアドレスであることを特徴
    とする請求項55に記載のメモリコントローラ。
  57. 【請求項57】 リセット信号をプロセッサにアサート
    するためのプロセッサリセット部と、 前記プロセッサが、トラステッドコア初期化プロセスの
    実行を完了するまで、いかなるバスマスタもがメモリに
    アクセスするのを防止するための、メモリ保護部とを含
    むことを特徴とする装置。
  58. 【請求項58】 プログラマブルロジックデバイスを含
    むことを特徴とする請求項57に記載の装置。
  59. 【請求項59】 前記プロセッサリセット部は、プロセ
    ッサバスインターフェースを含むことを特徴とする請求
    項57に記載の装置。
  60. 【請求項60】 前記メモリ保護部は、いかなるバスマ
    スタから受信された、前記メモリにアクセスするための
    いかなる要求をも無視する制御ロジックを含むことを特
    徴とする請求項57に記載の装置。
  61. 【請求項61】 前記メモリ保護部に結合され、前記プ
    ロセッサが前記トラステッドコア初期化プロセスの実行
    を完了するまで、別のプロセッサがメモリにアクセスす
    るのを防止するためのコントローラをさらに含むことを
    特徴とする請求項57に記載の装置。
  62. 【請求項62】 前記メモリ保護部に結合されたコント
    ローラであって、 プロセッサリセットベクトルを初期化ベクトルにマップ
    し、 前記プロセッサリセットベクトルに対応する読取り要求
    を、前記プロセッサから受信し、 前記読取り要求に応答して、前記初期化ベクトルを前記
    プロセッサに返し、 前記プロセッサが、前記初期化ベクトルで開始して、前
    記メモリにアクセスできるようにするためのコントロー
    ラをさらに含むことを特徴とする請求項57に記載の装
    置。
  63. 【請求項63】 前記コントローラはさらに、 前記プロセッサリセットベクトルを、追加のプロセッサ
    開始ベクトルに、前記初期化ベクトルを前記プロセッサ
    に返した後に再マップし、 別のプロセッサからの、前記プロセッサリセットベクト
    ルに対応する、別の読取り要求に応答して、前記追加の
    プロセッサ開始ベクトルを返すためのものであることを
    特徴とする請求項62に記載の装置。
  64. 【請求項64】 前記トラステッドコアの一部が格納さ
    れる記憶部をさらに含むことを特徴とする請求項57に
    記載の装置。
  65. 【請求項65】 前記記憶部に格納された前記トラステ
    ッドコアの前記一部は、プラットフォームトラステッド
    コア部を含むことを特徴とする請求項64に記載の装
    置。
  66. 【請求項66】 プロセッサと、 バスマスタと、 システムメモリと、 前記プロセッサ、前記バスマスタおよび前記システムメ
    モリに結合されたメモリコントローラとを含み、前記メ
    モリコントローラは、 信用できないコードに基づいて動作する、前記プロセッ
    サおよび前記バスマスタからの前記システムメモリへの
    アクセスを可能にすること、 前記プロセッサを、トラステッドコア初期化プロセスを
    開始するためにリセットすること、および前記バスマス
    タが前記システムメモリにアクセスすることを、前記ト
    ラステッドコア初期化プロセスが完了される後まで、防
    止することを行うように構成されることを特徴とするコ
    ンピュータ。
  67. 【請求項67】 複数の追加のプロセッサをさらに含
    み、前記複数の追加のプロセッサが前記システムメモリ
    にアクセスすることを、前記トラステッドコア初期化プ
    ロセスが完了される後まで、防止することを特徴とする
    請求項66に記載のコンピュータ。
  68. 【請求項68】 コンピュータにおける異なるトラステ
    ッドコアの実行を、前記コンピュータをリブートする必
    要なく、逐次開始できるようにするステップを含むこと
    を特徴とする方法。
  69. 【請求項69】 前記開始できるようにするステップ
    は、前記異なるトラステッドコアの実行を、任意の回数
    で開始できるようにするステップをさらに含むことを特
    徴とする請求項68に記載の方法。
  70. 【請求項70】 前記異なるトラステッドコアは、同じ
    トラステッドコアの異なるバージョンであることを特徴
    とする請求項68に記載の方法。
JP2001357612A 2000-11-22 2001-11-22 コンピュータにおいてトラステッドコア初期化プロセスを安全に実行するためのプログラム、方法、メモリコントローラ、装置及びコンピュータ Expired - Fee Related JP4486288B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/721,398 US6938164B1 (en) 2000-11-22 2000-11-22 Method and system for allowing code to be securely initialized in a computer
US09/721,398 2000-11-22

Publications (3)

Publication Number Publication Date
JP2002287978A true JP2002287978A (ja) 2002-10-04
JP2002287978A5 JP2002287978A5 (ja) 2005-07-14
JP4486288B2 JP4486288B2 (ja) 2010-06-23

Family

ID=24897825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001357612A Expired - Fee Related JP4486288B2 (ja) 2000-11-22 2001-11-22 コンピュータにおいてトラステッドコア初期化プロセスを安全に実行するためのプログラム、方法、メモリコントローラ、装置及びコンピュータ

Country Status (4)

Country Link
US (3) US6938164B1 (ja)
EP (1) EP1209563B1 (ja)
JP (1) JP4486288B2 (ja)
AT (1) ATE521937T1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006221633A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc マルチプロセッサシステムにおいてプロセッサのセキュアな連携を行う方法および装置
JP2006221634A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc セキュアなプロセッサの処理の移行を実施する方法および装置
JP2006221631A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc プロセッサと外部のデバイスとの間にセキュアセッションを実現する方法および装置
JP2009532783A (ja) * 2006-03-30 2009-09-10 シリコン イメージ,インコーポレイテッド 共用不揮発性メモリ・アーキテクチャ
JP2009217845A (ja) * 2004-11-12 2009-09-24 Sony Computer Entertainment Inc セキュアなデータ処理とデータ伝送とを行う方法および装置
US7831839B2 (en) 2005-02-07 2010-11-09 Sony Computer Entertainment Inc. Methods and apparatus for providing a secure booting sequence in a processor
JP2012508931A (ja) * 2008-11-14 2012-04-12 マイクロソフト コーポレーション モバイル装置とコンピュータを組み合わせ、安全な個人ごとの環境を生成する装置および方法
US9141829B2 (en) 2004-06-30 2015-09-22 Socionext Inc. Secure processor and a program for a secure processor
JP2016197436A (ja) * 2006-05-26 2016-11-24 インテル・コーポレーション ポイントツーポイント相互接続システム上のセキュアな環境初期化命令の実行

Families Citing this family (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6976162B1 (en) 2000-06-28 2005-12-13 Intel Corporation Platform and method for establishing provable identities while maintaining privacy
US6938164B1 (en) * 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US7818808B1 (en) 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US7392541B2 (en) * 2001-05-17 2008-06-24 Vir2Us, Inc. Computer system architecture and method providing operating-system independent virus-, hacker-, and cyber-terror-immune processing environments
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US7024555B2 (en) * 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
US7159240B2 (en) * 2001-11-16 2007-01-02 Microsoft Corporation Operating system upgrades in a trusted operating system environment
US7096203B2 (en) * 2001-12-14 2006-08-22 Duet General Partnership Method and apparatus for dynamic renewability of content
US7313705B2 (en) * 2002-01-22 2007-12-25 Texas Instrument Incorporated Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory
US7631196B2 (en) * 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7603551B2 (en) 2003-04-18 2009-10-13 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7130977B1 (en) 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Controlling access to a control register of a microprocessor
US7603550B2 (en) 2002-04-18 2009-10-13 Advanced Micro Devices, Inc. Computer system including a secure execution mode-capable CPU and a security services processor connected via a secure communication path
US7165135B1 (en) 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
US7130951B1 (en) 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
US7043616B1 (en) 2002-04-18 2006-05-09 Advanced Micro Devices, Inc. Method of controlling access to model specific registers of a microprocessor
US7082507B1 (en) 2002-04-18 2006-07-25 Advanced Micro Devices, Inc. Method of controlling access to an address translation data structure of a computer system
US7007159B2 (en) * 2002-05-10 2006-02-28 Intel Corporation System and method for loading and integrating a firmware extension onto executable base system firmware during initialization
US7216369B2 (en) * 2002-06-28 2007-05-08 Intel Corporation Trusted platform apparatus, system, and method
US7093115B2 (en) * 2002-12-19 2006-08-15 Intel Corporation Method and apparatus for detecting an interruption in memory initialization
US7146477B1 (en) 2003-04-18 2006-12-05 Advanced Micro Devices, Inc. Mechanism for selectively blocking peripheral device accesses to system memory
US7725740B2 (en) * 2003-05-23 2010-05-25 Nagravision S.A. Generating a root key for decryption of a transmission key allowing secure communications
US7530103B2 (en) * 2003-08-07 2009-05-05 Microsoft Corporation Projection of trustworthiness from a trusted environment to an untrusted environment
CN1871568B (zh) 2003-08-26 2010-04-28 松下电器产业株式会社 程序执行设备
US7210009B2 (en) * 2003-09-04 2007-04-24 Advanced Micro Devices, Inc. Computer system employing a trusted execution environment including a memory controller configured to clear memory
US8079034B2 (en) 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US7739521B2 (en) 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations
DE20314722U1 (de) * 2003-09-23 2005-02-10 Scm Microsystems Gmbh Vorrichtung für sicheren Zugriff auf Digitalmedien-Inhalte, virtueller Multischnittstellen-Treiber und System für sicheren Zugriff auf Digitalmedien-Inhalte
US7496958B2 (en) * 2003-10-29 2009-02-24 Qualcomm Incorporated System for selectively enabling operating modes of a device
US20050132186A1 (en) * 2003-12-11 2005-06-16 Khan Moinul H. Method and apparatus for a trust processor
US20050132031A1 (en) * 2003-12-12 2005-06-16 Reiner Sailer Method and system for measuring status and state of remotely executing programs
US8037314B2 (en) 2003-12-22 2011-10-11 Intel Corporation Replacing blinded authentication authority
US7802085B2 (en) 2004-02-18 2010-09-21 Intel Corporation Apparatus and method for distributing private keys to an entity with minimal secret, unique information
US7620949B2 (en) 2004-03-31 2009-11-17 Intel Corporation Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment
US8145816B2 (en) * 2004-09-15 2012-03-27 Intel Corporation System and method for deadlock free bus protection of resources during search execution
US7840962B2 (en) 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US20060101310A1 (en) * 2004-10-22 2006-05-11 Nimrod Diamant Device, system and method for verifying integrity of software programs
US8146078B2 (en) 2004-10-29 2012-03-27 Intel Corporation Timer offsetting mechanism in a virtual machine environment
US8924728B2 (en) 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
US7738484B2 (en) * 2004-12-13 2010-06-15 Intel Corporation Method, system, and apparatus for system level initialization
US7734741B2 (en) * 2004-12-13 2010-06-08 Intel Corporation Method, system, and apparatus for dynamic reconfiguration of resources
US7337367B2 (en) * 2005-01-06 2008-02-26 International Business Machines Corporation Management of memory controller reset
US7395405B2 (en) 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7600256B2 (en) * 2005-02-04 2009-10-06 Microsoft Corporation Security critical data containers
JP4628149B2 (ja) * 2005-03-14 2011-02-09 株式会社エヌ・ティ・ティ・ドコモ アクセス制御装置及びアクセス制御方法
US8463968B2 (en) * 2005-03-31 2013-06-11 Intel Corporation Mechanism for a shared serial peripheral interface
US7363564B2 (en) 2005-07-15 2008-04-22 Seagate Technology Llc Method and apparatus for securing communications ports in an electronic device
US7822978B2 (en) * 2005-07-22 2010-10-26 Intel Corporation Quiescing a manageability engine
US20090006795A1 (en) * 2005-08-22 2009-01-01 Steven Bress Security protection for cumputer long-term memory devices
US8201240B2 (en) * 2005-09-16 2012-06-12 Nokia Corporation Simple scalable and configurable secure boot for trusted mobile phones
US7809957B2 (en) 2005-09-29 2010-10-05 Intel Corporation Trusted platform module for generating sealed data
US8484232B2 (en) * 2005-11-22 2013-07-09 International Business Machines Corporation Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value
US7734903B2 (en) * 2005-12-08 2010-06-08 Electronics And Telecommunications Research Institute Multi-processor system and method for controlling reset and processor ID thereof
US7676531B2 (en) * 2005-12-22 2010-03-09 Sony Computer Entertainment Inc. Methods and apparatus for random number generation
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
EP2008164A2 (en) 2006-03-30 2008-12-31 Silicon Image, Inc. Inter-port communication in a multi- port memory device
US7464228B2 (en) * 2006-05-31 2008-12-09 Dell Products L.P. System and method to conserve conventional memory required to implement serial ATA advanced host controller interface
US7757098B2 (en) 2006-06-27 2010-07-13 Intel Corporation Method and apparatus for verifying authenticity of initial boot code
US7765392B2 (en) * 2006-06-29 2010-07-27 Intel Corporation Method and apparatus for establishing processor as core root of trust for measurement
US20080046891A1 (en) * 2006-07-12 2008-02-21 Jayesh Sanchorawala Cooperative asymmetric multiprocessing for embedded systems
US20080098120A1 (en) * 2006-10-23 2008-04-24 Microsoft Corporation Authentication server auditing of clients using cache provisioning
WO2008078564A1 (ja) 2006-12-22 2008-07-03 Panasonic Corporation 情報処理装置、集積回路、方法、およびプログラム
US7765374B2 (en) * 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US20090136038A1 (en) * 2007-11-27 2009-05-28 Ememory Technology Inc. Apparatus for receiving encrypted digital data and cryptographic key storage unit thereof
US8024557B2 (en) * 2007-12-31 2011-09-20 Icera, Inc. Booting an integrated circuit
CN102016866B (zh) * 2008-03-04 2014-05-21 苹果公司 基于授予承载商的权利授权在设备上执行软件代码的系统和方法
JP2010267135A (ja) * 2009-05-15 2010-11-25 Toshiba Corp メモリコントローラ
US8989705B1 (en) 2009-06-18 2015-03-24 Sprint Communications Company L.P. Secure placement of centralized media controller application in mobile access terminal
US8417962B2 (en) 2010-06-11 2013-04-09 Microsoft Corporation Device booting with an initial protection component
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8904189B1 (en) * 2010-07-15 2014-12-02 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
WO2013012436A1 (en) 2011-07-18 2013-01-24 Hewlett-Packard Development Company, L.P. Reset vectors for boot instructions
WO2013082144A1 (en) * 2011-11-29 2013-06-06 Rutgers, The State University Of New Jersey Ensuring system integrity using limited local memory
US8712407B1 (en) 2012-04-05 2014-04-29 Sprint Communications Company L.P. Multiple secure elements in mobile electronic device with near field communication capability
US9027102B2 (en) 2012-05-11 2015-05-05 Sprint Communications Company L.P. Web server bypass of backend process on near field communications and secure element chips
US8862181B1 (en) 2012-05-29 2014-10-14 Sprint Communications Company L.P. Electronic purchase transaction trust infrastructure
KR20130134918A (ko) * 2012-05-31 2013-12-10 삼성전자주식회사 불휘발성 메모리를 포함하는 컴퓨터 시스템 및 컴퓨터 시스템의 동작방법
US9282898B2 (en) 2012-06-25 2016-03-15 Sprint Communications Company L.P. End-to-end trusted communications infrastructure
US9066230B1 (en) 2012-06-27 2015-06-23 Sprint Communications Company L.P. Trusted policy and charging enforcement function
US8649770B1 (en) * 2012-07-02 2014-02-11 Sprint Communications Company, L.P. Extended trusted security zone radio modem
US8667607B2 (en) 2012-07-24 2014-03-04 Sprint Communications Company L.P. Trusted security zone access to peripheral devices
US8863252B1 (en) 2012-07-25 2014-10-14 Sprint Communications Company L.P. Trusted access to third party applications systems and methods
US9183412B2 (en) 2012-08-10 2015-11-10 Sprint Communications Company L.P. Systems and methods for provisioning and using multiple trusted security zones on an electronic device
US9215180B1 (en) 2012-08-25 2015-12-15 Sprint Communications Company L.P. File retrieval in real-time brokering of digital content
US9015068B1 (en) 2012-08-25 2015-04-21 Sprint Communications Company L.P. Framework for real-time brokering of digital content delivery
US8954588B1 (en) 2012-08-25 2015-02-10 Sprint Communications Company L.P. Reservations in real-time brokering of digital content delivery
US8752140B1 (en) 2012-09-11 2014-06-10 Sprint Communications Company L.P. System and methods for trusted internet domain networking
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
US9578664B1 (en) 2013-02-07 2017-02-21 Sprint Communications Company L.P. Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system
US9161227B1 (en) 2013-02-07 2015-10-13 Sprint Communications Company L.P. Trusted signaling in long term evolution (LTE) 4G wireless communication
US9104840B1 (en) 2013-03-05 2015-08-11 Sprint Communications Company L.P. Trusted security zone watermark
US9613208B1 (en) 2013-03-13 2017-04-04 Sprint Communications Company L.P. Trusted security zone enhanced with trusted hardware drivers
US8881977B1 (en) 2013-03-13 2014-11-11 Sprint Communications Company L.P. Point-of-sale and automated teller machine transactions using trusted mobile access device
US9049013B2 (en) 2013-03-14 2015-06-02 Sprint Communications Company L.P. Trusted security zone containers for the protection and confidentiality of trusted service manager data
US9049186B1 (en) 2013-03-14 2015-06-02 Sprint Communications Company L.P. Trusted security zone re-provisioning and re-use capability for refurbished mobile devices
US9021585B1 (en) 2013-03-15 2015-04-28 Sprint Communications Company L.P. JTAG fuse vulnerability determination and protection using a trusted execution environment
US8984592B1 (en) 2013-03-15 2015-03-17 Sprint Communications Company L.P. Enablement of a trusted security zone authentication for remote mobile device management systems and methods
US9191388B1 (en) 2013-03-15 2015-11-17 Sprint Communications Company L.P. Trusted security zone communication addressing on an electronic device
US9374363B1 (en) 2013-03-15 2016-06-21 Sprint Communications Company L.P. Restricting access of a portable communication device to confidential data or applications via a remote network based on event triggers generated by the portable communication device
US9171243B1 (en) 2013-04-04 2015-10-27 Sprint Communications Company L.P. System for managing a digest of biographical information stored in a radio frequency identity chip coupled to a mobile communication device
US9324016B1 (en) 2013-04-04 2016-04-26 Sprint Communications Company L.P. Digest of biographical information for an electronic device with static and dynamic portions
US9454723B1 (en) 2013-04-04 2016-09-27 Sprint Communications Company L.P. Radio frequency identity (RFID) chip electrically and communicatively coupled to motherboard of mobile communication device
US9838869B1 (en) 2013-04-10 2017-12-05 Sprint Communications Company L.P. Delivering digital content to a mobile device via a digital rights clearing house
US9443088B1 (en) 2013-04-15 2016-09-13 Sprint Communications Company L.P. Protection for multimedia files pre-downloaded to a mobile device
US9069952B1 (en) 2013-05-20 2015-06-30 Sprint Communications Company L.P. Method for enabling hardware assisted operating system region for safe execution of untrusted code using trusted transitional memory
US9560519B1 (en) 2013-06-06 2017-01-31 Sprint Communications Company L.P. Mobile communication device profound identity brokering framework
US9183606B1 (en) 2013-07-10 2015-11-10 Sprint Communications Company L.P. Trusted processing location within a graphics processing unit
US9208339B1 (en) 2013-08-12 2015-12-08 Sprint Communications Company L.P. Verifying Applications in Virtual Environments Using a Trusted Security Zone
US9185626B1 (en) 2013-10-29 2015-11-10 Sprint Communications Company L.P. Secure peer-to-peer call forking facilitated by trusted 3rd party voice server provisioning
US9191522B1 (en) 2013-11-08 2015-11-17 Sprint Communications Company L.P. Billing varied service based on tier
US9161325B1 (en) 2013-11-20 2015-10-13 Sprint Communications Company L.P. Subscriber identity module virtualization
US9118655B1 (en) 2014-01-24 2015-08-25 Sprint Communications Company L.P. Trusted display and transmission of digital ticket documentation
US9226145B1 (en) 2014-03-28 2015-12-29 Sprint Communications Company L.P. Verification of mobile device integrity during activation
US9230085B1 (en) 2014-07-29 2016-01-05 Sprint Communications Company L.P. Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services
US9779232B1 (en) 2015-01-14 2017-10-03 Sprint Communications Company L.P. Trusted code generation and verification to prevent fraud from maleficent external devices that capture data
US9838868B1 (en) 2015-01-26 2017-12-05 Sprint Communications Company L.P. Mated universal serial bus (USB) wireless dongles configured with destination addresses
US9473945B1 (en) 2015-04-07 2016-10-18 Sprint Communications Company L.P. Infrastructure for secure short message transmission
US10298617B2 (en) * 2015-07-08 2019-05-21 T-Mobile Usa, Inc. Trust policy for telecommunications device
US10140457B2 (en) 2015-07-31 2018-11-27 Intel Corporation Secure input/output device management
US9819679B1 (en) 2015-09-14 2017-11-14 Sprint Communications Company L.P. Hardware assisted provenance proof of named data networking associated to device data, addresses, services, and servers
US10282719B1 (en) 2015-11-12 2019-05-07 Sprint Communications Company L.P. Secure and trusted device-based billing and charging process using privilege for network proxy authentication and audit
US9817992B1 (en) 2015-11-20 2017-11-14 Sprint Communications Company Lp. System and method for secure USIM wireless network access
US10037201B2 (en) * 2016-02-26 2018-07-31 Dell Products L.P. Secure live media boot system
US10055572B1 (en) * 2017-06-12 2018-08-21 Mucteba Celik Systems and methods for preventing windows kernel code or drivers from being executed
US10499249B1 (en) 2017-07-11 2019-12-03 Sprint Communications Company L.P. Data link layer trust signaling in communication network
CN107707981B (zh) * 2017-09-27 2020-10-30 晶晨半导体(上海)股份有限公司 一种基于Trustzone技术的微码签名安全管理系统及方法
US10482258B2 (en) * 2017-09-29 2019-11-19 Nxp Usa, Inc. Method for securing runtime execution flow
WO2019112606A1 (en) * 2017-12-08 2019-06-13 Hewlett-Packard Development Company, L.P. Blocking systems from responding to bus mastering capable devices
US10534730B1 (en) * 2018-12-20 2020-01-14 Ati Technologies Ulc Storing microcode for a virtual function in a trusted memory region
CN111382107B (zh) * 2018-12-29 2023-04-25 阿里巴巴集团控股有限公司 一种应用处理器、协处理器及数据处理设备

Family Cites Families (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677546A (en) * 1984-08-17 1987-06-30 Signetics Guarded regions for controlling memory access
US4977594A (en) 1986-10-14 1990-12-11 Electronic Publishing Resources, Inc. Database usage metering and protection system and method
US4827508A (en) 1986-10-14 1989-05-02 Personal Library Software, Inc. Database usage metering and protection system and method
US5050213A (en) 1986-10-14 1991-09-17 Electronic Publishing Resources, Inc. Database usage metering and protection system and method
US5140634A (en) 1987-09-07 1992-08-18 U.S Philips Corporation Method and apparatus for authenticating accreditations and for authenticating and signing messages
US4969189A (en) 1988-06-25 1990-11-06 Nippon Telegraph & Telephone Corporation Authentication system and apparatus therefor
US5023907A (en) 1988-09-30 1991-06-11 Apollo Computer, Inc. Network license server
US5175829A (en) * 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
DE3906349A1 (de) 1989-03-01 1990-09-13 Hartmut Hennige Verfahren und vorrichtung zur vereinfachung des gebrauchs einer vielzahl von kreditkarten u. dgl.
US6507909B1 (en) * 1990-02-13 2003-01-14 Compaq Information Technologies Group, L.P. Method for executing trusted-path commands
US5335334A (en) 1990-08-31 1994-08-02 Hitachi, Ltd. Data processing apparatus having a real memory region with a corresponding fixed memory protection key value and method for allocating memories therefor
FR2673476B1 (fr) 1991-01-18 1996-04-12 Gemplus Card Int Procede securise de chargement de plusieurs applications dans une carte a memoire a microprocesseur.
EP0510244A1 (en) 1991-04-22 1992-10-28 Acer Incorporated Method and apparatus for protecting a computer system from computer viruses
US5940504A (en) 1991-07-01 1999-08-17 Infologic Software, Inc. Licensing management system and method in which datagrams including an address of a licensee and indicative of use of a licensed product are sent from the licensee's site
GB2260629B (en) 1991-10-16 1995-07-26 Intel Corp A segment descriptor cache for a microprocessor
US5557518A (en) 1994-04-28 1996-09-17 Citibank, N.A. Trusted agents for open electronic commerce
JP3073590B2 (ja) 1992-03-16 2000-08-07 富士通株式会社 電子化データ保護システム、使用許諾者側装置および使用者側装置
US5408647A (en) 1992-10-02 1995-04-18 Compaq Computer Corporation Automatic logical CPU assignment of physical CPUs
US5349643A (en) * 1993-05-10 1994-09-20 International Business Machines Corporation System and method for secure initial program load for diskless workstations
US5449367A (en) * 1993-08-02 1995-09-12 Kadry; Othman Pre-tied knot for surgical use and method of using same
US5544246A (en) 1993-09-17 1996-08-06 At&T Corp. Smartcard adapted for a plurality of service providers and for remote installation of same
FR2713803B1 (fr) 1993-12-07 1996-01-12 Gemplus Card Int Carte à mémoire et procédé de fonctionnement.
US5867655A (en) * 1993-12-08 1999-02-02 Packard Bell Nec Method to store privileged data within the primary CPU memory space
US5491827A (en) 1994-01-14 1996-02-13 Bull Hn Information Systems Inc. Secure application card for sharing application data and procedures among a plurality of microprocessors
US5812980A (en) 1994-02-22 1998-09-22 Sega Enterprises, Ltd. Program operating apparatus
US5473692A (en) 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5654746A (en) 1994-12-01 1997-08-05 Scientific-Atlanta, Inc. Secure authorization and control method and apparatus for a game delivery service
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
CN101398871B (zh) 1995-02-13 2011-05-18 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
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
JPH08305638A (ja) * 1995-05-01 1996-11-22 Nec Corp Romデータ検査方法
US5745886A (en) 1995-06-07 1998-04-28 Citibank, N.A. Trusted agents for open distribution of electronic money
US5664016A (en) 1995-06-27 1997-09-02 Northern Telecom Limited Method of building fast MACS from hash functions
US5671280A (en) 1995-08-30 1997-09-23 Citibank, N.A. System and method for commercial payments using trusted agents
US5721781A (en) 1995-09-13 1998-02-24 Microsoft Corporation Authentication system and method for smart card transactions
US5812662A (en) 1995-12-18 1998-09-22 United Microelectronics Corporation Method and apparatus to protect computer software
US5724527A (en) 1995-12-28 1998-03-03 Intel Corporation Fault-tolerant boot strap mechanism for a multiprocessor system
US5787427A (en) 1996-01-03 1998-07-28 International Business Machines Corporation Information handling system, method, and article of manufacture for efficient object security processing by grouping objects sharing common control access policies
AU1690597A (en) 1996-01-11 1997-08-01 Mitre Corporation, The System for controlling access and distribution of digital property
US6038551A (en) 1996-03-11 2000-03-14 Microsoft Corporation System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer
US5991876A (en) 1996-04-01 1999-11-23 Copyright Clearance Center, Inc. Electronic rights management and authorization system
US5916987A (en) * 1996-05-29 1999-06-29 Mitsui Chemicals, Inc. Thiol and Sulfur-containing O-(meth) acrylate compounds and use thereof
US5778070A (en) * 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US5872847A (en) 1996-07-30 1999-02-16 Itt Industries, Inc. Using trusted associations to establish trust in a computer network
US5841869A (en) 1996-08-23 1998-11-24 Cheyenne Property Trust Method and apparatus for trusted processing
US5892902A (en) 1996-09-05 1999-04-06 Clark; Paul C. Intelligent token protected system with network authentication
US5958050A (en) 1996-09-24 1999-09-28 Electric Communities Trusted delegation system
US6006332A (en) 1996-10-21 1999-12-21 Case Western Reserve University Rights management system for digital media
US6367012B1 (en) 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
US5892904A (en) 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US6009274A (en) 1996-12-13 1999-12-28 3Com Corporation Method and apparatus for automatically updating software components on end systems over a network
US6381741B1 (en) 1998-05-18 2002-04-30 Liberate Technologies Secure data downloading, recovery and upgrading
US6192473B1 (en) 1996-12-24 2001-02-20 Pitney Bowes Inc. System and method for mutual authentication and secure communications between a postage security device and a meter server
US6073124A (en) 1997-01-29 2000-06-06 Shopnow.Com Inc. Method and system for securely incorporating electronic information into an online purchasing application
US6542610B2 (en) 1997-01-30 2003-04-01 Intel Corporation Content protection for digital transmission systems
US5953502A (en) 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US5920861A (en) 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
US6477648B1 (en) 1997-03-23 2002-11-05 Novell, Inc. Trusted workstation in a networked client/server computing system
US6212636B1 (en) 1997-05-01 2001-04-03 Itt Manufacturing Enterprises Method for establishing trust in a computer network via association
US6557104B2 (en) * 1997-05-02 2003-04-29 Phoenix Technologies Ltd. Method and apparatus for secure processing of cryptographic keys
US6229894B1 (en) 1997-07-14 2001-05-08 Entrust Technologies, Ltd. Method and apparatus for access to user-specific encryption information
JPH1145507A (ja) 1997-07-24 1999-02-16 Toshiba Corp 情報再生装置、認識装置、情報処理システム
US5919257A (en) 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
US6032257A (en) 1997-08-29 2000-02-29 Compaq Computer Corporation Hardware theft-protection architecture
US6304970B1 (en) * 1997-09-02 2001-10-16 International Business Mcahines Corporation Hardware access control locking
US6185678B1 (en) 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6148387A (en) 1997-10-09 2000-11-14 Phoenix Technologies, Ltd. System and method for securely utilizing basic input and output system (BIOS) services
US6026166A (en) 1997-10-20 2000-02-15 Cryptoworx Corporation Digitally certifying a user identity and a computer system in combination
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
US5991399A (en) 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
EP0935182A1 (en) * 1998-01-09 1999-08-11 Hewlett-Packard Company Secure printing
WO1999036848A1 (en) * 1998-01-20 1999-07-22 Examsoft Worldwide, Inc. Secure exam method
US6560706B1 (en) 1998-01-26 2003-05-06 Intel Corporation Interface for ensuring system boot image integrity and authenticity
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6148402A (en) 1998-04-01 2000-11-14 Hewlett-Packard Company Apparatus and method for remotely executing commands using distributed computing environment remote procedure calls
US6009401A (en) 1998-04-06 1999-12-28 Preview Systems, Inc. Relicensing of electronically purchased software
US6175917B1 (en) 1998-04-23 2001-01-16 Vpnet Technologies, Inc. Method and apparatus for swapping a computer operating system
US6118873A (en) 1998-04-24 2000-09-12 International Business Machines Corporation System for encrypting broadcast programs in the presence of compromised receiver devices
US6223284B1 (en) 1998-04-30 2001-04-24 Compaq Computer Corporation Method and apparatus for remote ROM flashing and security management for a computer system
US6092189A (en) 1998-04-30 2000-07-18 Compaq Computer Corporation Channel configuration program server architecture
US6363486B1 (en) 1998-06-05 2002-03-26 Intel Corporation Method of controlling usage of software components
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US6279111B1 (en) * 1998-06-12 2001-08-21 Microsoft Corporation Security model using restricted tokens
US6189100B1 (en) 1998-06-30 2001-02-13 Microsoft Corporation Ensuring the integrity of remote boot client data
US6105137A (en) 1998-07-02 2000-08-15 Intel Corporation Method and apparatus for integrity verification, authentication, and secure linkage of software modules
JP3673644B2 (ja) * 1998-07-06 2005-07-20 キヤノン株式会社 光走査光学系及びそれを用いた画像形成装置
US7346580B2 (en) 1998-08-13 2008-03-18 International Business Machines Corporation Method and system of preventing unauthorized rerecording of multimedia content
US6230285B1 (en) 1998-09-08 2001-05-08 Symantec Corporation Boot failure recovery
US6327652B1 (en) 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6330588B1 (en) 1998-12-21 2001-12-11 Philips Electronics North America Corporation Verification of software agents and agent activities
US6272629B1 (en) 1998-12-29 2001-08-07 Intel Corporation Method and apparatus for establishing network connection for a processor without an operating system boot
US6263431B1 (en) 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US7130831B2 (en) 1999-02-08 2006-10-31 Copyright Clearance Center, Inc. Limited-use browser and security system
US6480961B2 (en) 1999-03-02 2002-11-12 Audible, Inc. Secure streaming of digital audio/visual content
US6546489B1 (en) * 1999-03-04 2003-04-08 Western Digital Ventures, Inc. Disk drive which provides a secure boot of a host computer system from a protected area of a disk
US6389537B1 (en) 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6480948B1 (en) * 1999-06-24 2002-11-12 Cirrus Logic, Inc. Configurable system memory map
US6477252B1 (en) * 1999-08-29 2002-11-05 Intel Corporation Digital video content transmission ciphering and deciphering method and apparatus
JP3488172B2 (ja) 2000-03-27 2004-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報提供方法およびシステム
US20020042754A1 (en) 2000-10-10 2002-04-11 Del Beccaro David J. System and method for receiving broadcast audio/video works and for enabling a consumer to purchase the received audio/video works
US6938164B1 (en) 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US6665854B2 (en) 2000-12-04 2003-12-16 Matsushita Electric Industrial Co., Ltd. Method and apparatus of checking mount quality of circuit board
US7580988B2 (en) 2001-04-05 2009-08-25 Intertrust Technologies Corporation System and methods for managing the distribution of electronic content

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141829B2 (en) 2004-06-30 2015-09-22 Socionext Inc. Secure processor and a program for a secure processor
US11550962B2 (en) 2004-06-30 2023-01-10 Socionext Inc. Secure processor and a program for a secure processor
US10685145B2 (en) 2004-06-30 2020-06-16 Socionext Inc. Secure processor and a program for a secure processor
US10303901B2 (en) 2004-06-30 2019-05-28 Socionext Inc. Secure processor and a program for a secure processor
US10095890B2 (en) 2004-06-30 2018-10-09 Socionext Inc. Secure processor and a program for a secure processor
US9672384B2 (en) 2004-06-30 2017-06-06 Socionext Inc. Secure processor and a program for a secure processor
US9652635B2 (en) 2004-06-30 2017-05-16 Socionext Inc. Secure processor and a program for a secure processor
US9536110B2 (en) 2004-06-30 2017-01-03 Socionext Inc. Secure processor and a program for a secure processor
JP2009217845A (ja) * 2004-11-12 2009-09-24 Sony Computer Entertainment Inc セキュアなデータ処理とデータ伝送とを行う方法および装置
US8001377B2 (en) 2004-11-12 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for secure data processing and transmission
JP4522372B2 (ja) * 2005-02-07 2010-08-11 株式会社ソニー・コンピュータエンタテインメント プロセッサと外部のデバイスとの間にセキュアセッションを実現する方法および装置
US8185748B2 (en) 2005-02-07 2012-05-22 Sony Computer Entertainment Inc. Methods and apparatus for facilitating a secure processor functional transition
JP4606339B2 (ja) * 2005-02-07 2011-01-05 株式会社ソニー・コンピュータエンタテインメント セキュアなプロセッサの処理の移行を実施する方法および装置
JP4601557B2 (ja) * 2005-02-07 2010-12-22 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステムにおいてプロセッサのセキュアな連携を行う方法および装置
US7831839B2 (en) 2005-02-07 2010-11-09 Sony Computer Entertainment Inc. Methods and apparatus for providing a secure booting sequence in a processor
JP2006221633A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc マルチプロセッサシステムにおいてプロセッサのセキュアな連携を行う方法および装置
JP2006221631A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc プロセッサと外部のデバイスとの間にセキュアセッションを実現する方法および装置
JP2006221634A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc セキュアなプロセッサの処理の移行を実施する方法および装置
JP2009532783A (ja) * 2006-03-30 2009-09-10 シリコン イメージ,インコーポレイテッド 共用不揮発性メモリ・アーキテクチャ
JP2016197436A (ja) * 2006-05-26 2016-11-24 インテル・コーポレーション ポイントツーポイント相互接続システム上のセキュアな環境初期化命令の実行
JP2012508931A (ja) * 2008-11-14 2012-04-12 マイクロソフト コーポレーション モバイル装置とコンピュータを組み合わせ、安全な個人ごとの環境を生成する装置および方法

Also Published As

Publication number Publication date
US20050235166A1 (en) 2005-10-20
EP1209563B1 (en) 2011-08-24
US6938164B1 (en) 2005-08-30
ATE521937T1 (de) 2011-09-15
EP1209563A2 (en) 2002-05-29
US7543335B2 (en) 2009-06-02
US7721341B2 (en) 2010-05-18
JP4486288B2 (ja) 2010-06-23
EP1209563A3 (en) 2004-12-15
US20050144476A1 (en) 2005-06-30

Similar Documents

Publication Publication Date Title
JP4486288B2 (ja) コンピュータにおいてトラステッドコア初期化プロセスを安全に実行するためのプログラム、方法、メモリコントローラ、装置及びコンピュータ
US6223284B1 (en) Method and apparatus for remote ROM flashing and security management for a computer system
JP4793733B2 (ja) 高インテグリティファームウェア
US10275598B2 (en) Providing a secure execution mode in a pre-boot environment
KR101093124B1 (ko) 메모리를 소거하는 메모리 제어기를 포함하는 신뢰성있는실행 환경을 이용한 컴퓨터 시스템
US7020772B2 (en) Secure execution of program code
US5944821A (en) Secure software registration and integrity assessment in a computer system
JP4288209B2 (ja) システム・オン・チップのためのセキュリティ・アーキテクチャ
JP5643901B2 (ja) プラットフォーム・ファームウェア・アーマリング技術
US7010684B2 (en) Method and apparatus for authenticating an open system application to a portable IC device
US7139915B2 (en) Method and apparatus for authenticating an open system application to a portable IC device
US20070276969A1 (en) Method and device for controlling an access to peripherals
US8327415B2 (en) Enabling byte-code based image isolation
US20100228997A1 (en) Method and apparatus for verifying authenticity of initial boot code
TW201535145A (zh) 使用保護讀取儲存器安全地儲存韌體數據之系統及方法
JP2011527777A (ja) 安全な起動メカニズムを備えたコンピュータシステム
JP2013537672A (ja) オペレーティングシステム(os)に依存しないウイルス対策(av)スキャナに対して強制的なセキュリティポリシーを実施する方法および装置
US8108905B2 (en) System and method for an isolated process to control address translation
US20190370439A1 (en) Secure system on chip for protecting software program from tampering, rehosting and piracy and method for operating the same
US11544382B2 (en) Regulating messages warning about impacts of firmware changes
US20040083379A1 (en) Data processing system and method
KR20220070462A (ko) 부트로더를 위한 보안 버퍼
JP2018036695A (ja) 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041122

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041122

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20041122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070126

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070220

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20070522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070620

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070626

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100224

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100326

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees