説明

信頼できる周辺機構

ある実施形態によれば、コンピュータシステムが開示される。コンピュータシステムは中央処理装置(CPU)および該CPUに結合されたチップセットを含んでおり、該チップセットは保護レジスタおよびホストコントローラを含んでいる。コンピュータシステムはまた、ホストコントローラに結合したバスおよび該バスに結合した周辺機器も含んでいる。ホストコントローラと周辺機器との間で暗号化されたデータを送信するため、コンピュータシステムの起動時に周辺機器が信頼できるかどうかを検証するために信頼できるソフトウェアが保護レジスタにアクセスする。

【発明の詳細な説明】
【技術分野】
【0001】
ここに含まれる内容は著作権保護の対象である。著作権保有者は、誰であれ本特許開示を米国特許商標庁の特許ファイルまたは記録にある原物どおりに複製することに異は唱えないが、それ以外の点では著作権のすべての権利を留保する。
【0002】
本発明は、コンピュータシステムに関する。より詳細には、本発明は信頼できる、あるいはセキュリティで保護された環境において動作しうるコンピュータシステムに関するものである。
【背景技術】
【0003】
金銭的な取引や個人的なやりとりがローカルまたはリモートのマイクロコンピュータ上で実行されることが増すことで、「信頼できる」あるいは「セキュリティで保護された」マイクロプロセッサ環境確立に向かう趨勢となっている。こうした環境によって解決しようとする問題は、秘匿性喪失、すなわちデータが改竄されたり悪用されたりする問題である。ユーザーは個人的なデータが公になるのを望まない。データが改変されたり不適切な取引に使われることも望まない。こうしたことの例には、医療記録の漏洩やオンライン銀行その他の口座からの資金の電子的窃盗が含まれる。同様に、コンテンツプロバイダはデジタルコンテンツ(たとえば、音楽、その他のオーディオ、ビデオまたはその他一般の種類のデータ)の不正コピーからの保護を目指している。
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、コンパック、IBM、DEC、インテル、マイクロソフト、NEC、ノーザン・テレコムによって開発された2.0規格に従う汎用シリアルバス(USB: Universal Serial Bus)は、信頼できる入出力(I/O)に重大な問題を提起する。USBはコンピュータシステムとアドオンデバイス(キーボードなど)との間のプラグアンドプレイのインターフェースである。コンピュータシステムは典型的にはUSBデバイスと関連付けられるソフトウェアスタックを含んでいる。
【0005】
可能性としては、USBスタック中の悪質なコードを使ってUSB周辺機器との間でやりとりされるデータを修正したり、データの送り先を全く異なるデバイスに変更したりすることができる。悪質なUSBソフトウェアを阻むのに使われる一つの方法は、USB周辺機器との間で送受信するデータを暗号化することである。しかし、暗号を用いる方法の問題は、周辺機器に暗号化鍵を送信するのにUSBスタックが信頼できないということである。
【0006】
一つの機構は、暗号化鍵を直接キーボード周辺機器に送信することによってUSBスタックを迂回することである。そのような機構では、ユーザーは暗号化鍵を入力するためにキーボード上でキー入力をするよう促される。しかし、コンピュータシステムを立ち上げるたびにユーザーが最大63字のキー入力をしなければならないので、そのような機構は非効率的である。
【0007】
別の方法として、キーボードに不揮発性メモリ記憶装置を常備するようにしてキーボードが起動するたびにユーザーがキー入力することを避けるというものもある。これではキーボード製造のコスト増になる。さらに、そのような機構は、マウスのようなキーボード式でない周辺機器には、暗号化ドングルをコンピュータシステムと周辺機器との間にインラインで追加しない限りは使えない。これもまたコスト増につながる。
【0008】
本発明が限定ではなく例として付属の図面の符号にて示される。同様の参照符号は同様の要素を示す。
【課題を解決するための手段】
【0009】
コンピュータシステムにおいて信頼できるUSB入出力(I/O)を保証する機構が記載される。ある実施形態によれば、USBスタックを使うことなく暗号化鍵をUSB周辺機器に送信するよう、コンピュータシステム中に信頼できるポートが実装される。
【0010】
本発明の以下の詳細な説明において、本発明の完全なる理解を与えるために多くの個別の詳細が述べられる。しかし、当業者には、本発明がそうした特定の詳細でなくとも実施しうることは明らかであろう。他方、よく知られた構造やデバイスは、本発明が埋没することを避けるため、詳細ではなくブロックの形で図示されている。
【0011】
明細書における「ある実施形態」または「一つの実施形態」という言及は、その実施形態とのつながりで説明されている特定の特徴、構造または性質が本発明の少なくとも一つの実施形態において含まれることを意味する。明細書の随所で「ある実施形態において」といった表現が現れるが、必ずしもすべてが同一の実施形態を指しているものではない。
【発明を実施するための最良の形態】
【0012】
図1は、コンピュータシステム100のある実施形態のブロック図である。コンピュータシステム100は、バス105に結合された中央処理装置(CPU)102を含んでいる。ある実施形態では、CPU102はペンティアム(登録商標)プロセッサファミリーのうちのプロセッサで、米国カリフォルニア州サンタクララのインテル・コーポレーションから発売されているペンティアム(登録商標)IIプロセッサファミリー、ペンティアム(登録商標)IIIプロセッサ、ペンティアム(登録商標)IVプロセッサが含まれる。あるいはまた、他のCPUが使われてもよい。
【0013】
図2はCPU102のある実施形態を示すブロック図である。ある実施形態では、CPU102はキャッシュメモリ(キャッシュ)220、組み込み鍵230、ページテーブル(PT: page table)レジスタ240を含む。キャッシュ220の全部または一部は、秘密メモリ(PM: private memory)225を含んでいたり、あるいは秘密メモリに転換可能であったりしうる。ある実施形態によれば、秘密メモリ225は、秘密メモリとして活性化されている間は権限のないいかなるデバイス(たとえば、付随するCPU102以外のあらゆるデバイス)によるアクセスも防止するよう十分な保護のあるメモリである。
【0014】
示されている実施形態では、キャッシュ220がその一部を選択的に秘密メモリとして隔離できるためのさまざまな機能を有しうる。示されていない別の実施形態では、秘密メモリ225はキャッシュメモリ220とは別個にその外部にあって、CPU102に関連付けられている。鍵230は暗号化、復号および/またはデータおよび/もしくはコードの諸ブロックの検証のために使用される組み込み鍵でありうる。PTレジスタ240は、保護されたコードによってのみアクセスできるべきであるメモリページや保護されないメモリページを識別するためのレジスタの形のテーブルでありうる。
【0015】
図1に戻ると、バス105にはチップセット107も結合されている。チップセット107はメモリコントロールハブ(MCH: memory control hub)110を含んでいる。MCH110は、メインシステムメモリ115に結合されているメモリコントローラ112を含みうる。メインシステムメモリ115は、データおよびCPU102やシステム100に含まれる他の何らかのデバイスによって実行される命令のシーケンスを保存する。ある実施形態では、メインシステムメモリ115はダイナミックランダムアクセスメモリ(DRAM)を含むが、メインシステムメモリ115は他の種類のメモリを使って実装することもできる。バス105には、マルチCPUおよび/またはマルチシステムメモリといったように追加的なデバイスも結合されていることがある。
【0016】
図3は、メモリ115のある実施形態を示すブロック図である。図3を参照すると、メモリ115は、保護メモリテーブル320および信頼できるソフトウェア(s/w)モニタ330を含みうる。いくつかの実施形態では、保護メモリテーブル320は、メモリ115内のどのメモリブロックが直接メモリアクセス(DMA: direct memory access)転送でアクセス不能であるべきかを定義するテーブルである。
【0017】
メモリ115へのあらゆるアクセスはMCH110を通るので、MCH110はDMA転送の生起を認める前に保護メモリテーブル320を調べることができる。ある特定の実施形態では、MCH110はキャッシュ技術を使って保護メモリテーブル320への必要なアクセス回数を減らすこともできる。
【0018】
ある実施形態では、保護メモリテーブル320はビットの表として実装される。各ビットがメモリ115内の特定のメモリブロックに対応するのである(たとえば、各ビットが一つのページに対応し、論理レベル「1」がそのページがDMA転送から保護されていることを示し、論理レベル「0」がそのページがそのような保護がされていないことを示す)。ある特定の処理では、保護メモリテーブル320によってDMA転送から保護されているメモリブロックは、CPU102においてPTレジスタ240による保護された処理に制限されるのと同一のメモリブロックであってもよい。
【0019】
ある実施形態では、ひとたび保護された動作環境が確立されると、信頼できるソフトウェアモニタ330がその保護された動作環境を監視し、制御する。ある特定の実施形態では、信頼できるソフトウェアモニタ330は、保護メモリテーブル320によってデータ転送(DMA転送など)から保護されているメモリブロック内にのみ位置され、それにより信頼できるソフトウェアモニタ330が保護されていないデバイスおよび/または権限のないデバイスからのデータ転送によって侵され得ないことを保証している。保護メモリテーブル320はまた、該保護メモリテーブル320を含むメモリブロックを保護することによって、データトランザクションよる改変から自らを保護しうる。
【0020】
図1に戻ると、MCH110はまた、グラフィックアクセラレータ130に結合されたグラフィックインターフェース113を含みうる。ある実施形態では、グラフィックインターフェース113は、米国カリフォルニア州サンタクララのインテル・コーポレーションによって開発された加速グラフィックポート(AGP)仕様改訂2.0版のインターフェースに従って動作するAGPを介してグラフィックアクセラレータ130に結合される。
【0021】
ある実施形態によれば、MCH110は、さまざまな暗号化、復号、および/または検証プロセスにおいて使われるべき鍵116、保護レジスタ120および保護メモリテーブル125を含んでいる。ある実施形態では、前記保護メモリテーブル125がMCH110内で保護メモリテーブル125として実装され、前記保護メモリテーブル320は不要になる。
【0022】
別の実施形態では、保護メモリテーブル125が先述したようにメモリ115内で保護メモリテーブル320として実装され、保護メモリテーブル125が不要になる。保護メモリテーブルはまた、示されていない他の諸方法で実装することもできる。物理的な位置にかかわらず、保護メモリテーブルの目的および基本動作は実質先述した通りであってよい。
【0023】
ある実施形態では、保護レジスタ120は、CPU102内の信頼できるマイクロコードによってのみ開始されうるコマンドによって書き込まれる。保護されたマイクロコードは、その実行が権限のある命令によって、および/または権限のないデバイスには制御できないハードウェアによって開始されうるようなマイクロコードである。ある実施形態では、保護レジスタ120は、保護メモリテーブル320および信頼できるソフトウェアモニタ330の位置を識別し、および/またはそれらへのアクセスを制御するデータを保持している。
【0024】
ある実施形態では、保護レジスタ120は保護メモリテーブル320の使用を有効にしたり無効にしたりするためのレジスタを含んでおり、保護された動作環境にはいる前にDMA保護を有効にし、保護された動作環境を終了したあとにDMA保護を無効にすることができる。保護レジスタ120はまた、保護メモリテーブル320の位置を識別する書き込み可能レジスタを含んでいることができ、該位置をハードウェア配線によってMCH110に組み込む必要はない。
【0025】
ある実施形態では、保護レジスタ120は、信頼できるソフトウェアモニタ330がメモリ115の保護された位置に置かれる前の一時的な位置を含む。これにより転送のためにその位置を知ることができる。ある実施形態では、保護レジスタ120は、信頼できるソフトウェアモニタ330のメモリ115への転送後の実行開始アドレスを含みうる。これにより保護された動作環境の初期化ののち、実行が信頼できるソフトウェアモニタ330に移行されうる。
【0026】
物理トークン136は、保護された動作環境を生成し、維持するのに関係するデータを保護するための回路でありうる。ある特定の実施形態では、物理トークン136は、鍵(図示せず)を含んでおり、それは特定の暗号化、復号および/または検証プロセスのために使用される組み込み鍵でありうる。物理トークン136はまた、保護された動作環境において使用されるべきメッセージダイジェスト値その他の情報を保持するのに使われる記憶スペースを含んでいてもよい。ある実施形態では、物理トークン136内の記憶スペースは、物理トークンの電源が失われた場合にその内容を保持するための不揮発性メモリ(フラッシュメモリなど)を含んでいてもよい。
【0027】
図1に戻ると、MCH110はハブインターフェースを介して入出力制御ハブ(ICH: input/output control hub)140に結合されている。ICH140はコンピュータシステム100内の入出力(I/O)機器へのインターフェースを提供する。ICH140はホストコントローラ144を介してUSB周辺機器155に結合されうる。通常の技量を有する当業者であれば、本発明の真の範囲から外れることなく他のパケットベースのバスを実装してもよいことを理解することであろう。
【0028】
ある実施形態では、ホストコントローラ144は、周辺機器155にアドレスが割り当てられる周辺機器初期構成プロセスをサポートする。その後、ホストコントローラ144は、その周辺機器に宛てられたパケットがないかどうかバスを監視し、データの周辺機器155への転送を扱う。データは、周辺機器155に送信されるのに先立ち、ホストコントローラ144においてパケットの形にされる。はいってくるパケットはホストコントローラ144で有効性が検証される。ある実施形態では、周辺機器155はキーボードである。しかし、他の実施形態では、周辺機器155はマウス、オーディオプレーヤー、ジョイスティック、電話、スキャナ、プリンタなどを使って実装することもできる。
【0029】
デバッグポートはハードウェアやソフトウェアの設計者が製品の状態をデバッグできるようにするものである。ある実施形態では、デバッグポート146は、ホストコントローラ144にトランザクションを実行させるためのレジスタベースの機構を実装する。よって、USB上の周辺機器155に関連付けられたソフトウェアスタックおよびメモリ115が迂回できる。
【0030】
あるさらなる実施形態によれば、同様の迂回が、コンピュータシステム100の起動時に周辺機器155に暗号化鍵を送信し、周辺機器155とのUSB接続が信頼できることを検証するために実装される。そのような実施形態では、ホストコントローラ144はまた、MCH110内のレジスタ120と同様の保護レジスタを含む。したがって、信頼できるソフトウェアがホストコントローラ144内の保護レジスタにアクセスする。
【0031】
前記ソフトウェアはホストコントローラ144に、どの暗号化メッセージを周辺機器155に送信し、何のデータを周辺機器155から受信するかを示すためにレジスタ120への書き込みを行う。別の実施形態では、周辺機器155が暗号化鍵を生成し、ホストコントローラ144にその鍵を送信する。別の実施形態では、ホストコントローラ144と周辺機器155とがディフィー・ヘルマン鍵交換を実装して外部からののぞき見からの安全性を提供する。さらに別の実施形態では、ホストコントローラ144と周辺機器155とがディフィー・ヘルマン鍵交換を、仲介者(Man-In-The-Middle)攻撃のような攻撃を検査するための検証状態に加えて実装する。
【0032】
ホストコントローラ144は信頼できるポートを通じて前記鍵を読み込む。あるさらなる実施形態では、ひとたび周辺機器155が前記暗号化鍵を使うようになったら、I/Oトラフィックは標準的なUSBソフトウェアスタックおよびUSBホストコントローラ144機構を使って転送される。結果として、通常のUSBトランザクションがメモリ115内でのデータ構造によって制御され、ホストコントローラ144はこれらの構造を読み込んで適切な読み書き処理を実行する。
【0033】
図4は、暗号化鍵の周辺機器155への送信の一つの実施形態の流れ図である。処理ブロック410では、コンピュータシステム100は起動(ブート)プロセスを開始する。処理ブロック420では、信頼できるソフトウェアが暗号化鍵を生成する。ただし、上述のように、暗号化鍵は周辺機器155で生成されてもよい。
【0034】
処理ブロック430では、USBスタックを迂回して鍵が周辺機器155に送信される。上述したように、信頼できるソフトウェアは、周辺機器155への暗号化鍵の送信を開始するためにレジスタ120に書き込みを行う。暗号化鍵が周辺機器155で生成される実施形態では、鍵は周辺機器155からホストコントローラ144に送信される。
【0035】
処理ブロック440では、周辺機器155が暗号化鍵に基づいて動作しているかどうかを決定する検証プロセスが発生する。ある実施形態によれば、鍵の検証は、ディスプレイ上にメッセージを表示してユーザーにキーボード上のある文字を打つよう促すことによって行われる。その文字はホストソフトウェアによって無作為に選ばれうる。
【0036】
ユーザーがそのキーを打つと、キーボードが暗号化鍵を用いてそのキーを暗号化する。信頼できるOSソフトウェアは暗号化およびユーザーが打つことになっていたキーを知っており、したがってOSソフトウェアはメッセージを復号してそれが正しいかどうかを検証することができる。処理ブロック450では、ホストコントローラ144のセットアップが完了し、標準的なUSBトランザクションがスタックを通じて行えるようになる。
【0037】
上記の説明は、信頼できるソフトウェアおよび信頼できるレジスタを実装してUSBスタックを迂回することによって、標準的なUSBスタックを使って偽のメッセージをUSB周辺機器に送信する悪質なUSBソフトウェアを阻むものである。その結果、ユーザーがキーボードを通じて暗号化鍵を入力する必要はないし、周辺機器が不揮発性記憶を実装する必要もない。
【0038】
以上の説明を読んだ通常の技量を有する当業者には本発明の多くの改変および修正が明らかとなることは間違いないが、解説のために示され、説明されたいかなる特定の実施形態も決して限定的なものと考えられることを意図されてはいないことを理解しておくべきである。したがって、さまざまな実施形態の詳細への言及は特許請求の範囲を限定することを意図したものではない。特許請求の範囲はその中において本発明に本質的と見なされる特徴のみを挙げるものである。

【図面の簡単な説明】
【0039】
【図1】コンピュータシステムの一つの実施形態のブロック図である。
【図2】中央処理装置(CPU)の一つの実施形態を示すブロック図である。
【図3】メモリの一つの実施形態を示すブロック図である。
【図4】暗号化鍵を周辺機器に送信する一つの実施形態の流れ図である。

【特許請求の範囲】
【請求項1】
中央処理装置(CPU)と、
保護されたレジスタおよび
ホストコントローラを含む
前記CPUに結合されたチップセットと、
前記ホストコントローラに結合されたバスと、
前記バスに結合された周辺機器とを有するコンピュータシステムであって、当該コンピュータシステムの起動時に前記周辺機器が信頼できることを検証するために、信頼されたソフトウェアが前記保護されたレジスタにアクセスして前記ホストコントローラと前記周辺機器との間で暗号化データを送信することを特徴とするコンピュータシステム。
【請求項2】
前記暗号化用データが前記周辺機器において生成され、前記ホストコントローラに送信されることを特徴とする、請求項1記載のコンピュータシステム。
【請求項3】
前記暗号化用データが前記CPUにおいて生成され、前記周辺機器に送信されることを特徴とする、請求項1記載のコンピュータシステム。
【請求項4】
前記信頼されたソフトウェアが前記保護されたレジスタに書き込みをして前記ホストコントローラに送信すべき前記暗号化データおよび受信すべき応答データを指示することを特徴とする、請求項1記載のコンピュータシステム。
【請求項5】
前記チップセットが:
保護されたメモリテーブルと、
メモリデバイスに結合されたメモリコントローラ、
とをさらに有することを特徴とする、請求項1記載のコンピュータシステム。
【請求項6】
前記メモリコントローラに結合されたメモリデバイスをさらに有することを特徴とする、ことを特徴とする、請求項5記載のコンピュータシステム。
【請求項7】
前記ホストコントローラと前記周辺機器との間で送信されるデータが前記周辺機器に関連付けられた前記メモリデバイスにおけるスタックを迂回することを特徴とする、請求項6記載のコンピュータシステム。
【請求項8】
前記メモリデバイスが:
保護されたメモリテーブルと、
信頼されたソフトウェアモニタ、
とを有することを特徴とする、請求項7記載のコンピュータシステム。
【請求項9】
前記周辺機器がキーボードであることを特徴とする、請求項1記載のコンピュータシステム。
【請求項10】
前記周辺機器がマウスであることを特徴とする、請求項1記載のコンピュータシステム。
【請求項11】
前記周辺機器がスキャナであることを特徴とする、請求項1記載のコンピュータシステム。
【請求項12】
前記バスが汎用シリアルバスであることを特徴とする、請求項1記載のコンピュータシステム。
【請求項13】
保護されたレジスタと、
バスを介して周辺機器に結合されたホストコントローラとを有するチップセットであって、
前記周辺機器が信頼できることを検証するために、信頼されたソフトウェアが前記保護されたレジスタにアクセスして前記ホストコントローラと前記周辺機器との間で暗号化データを送信することを特徴とするチップセット。
【請求項14】
前記暗号化用データが前記周辺機器において生成され、前記ホストコントローラに送信されることを特徴とする、請求項13記載のチップセット。
【請求項15】
前記暗号化用データが前記チップセットに結合されたCPUから受信され、前記周辺機器に送信されることを特徴とする、請求項13記載のチップセット。
【請求項16】
前記信頼されたソフトウェアが前記保護されたレジスタに書き込みをして前記ホストコントローラに送信すべき前記暗号化データおよび受信すべき応答データを指示することを特徴とする、請求項13記載のチップセット。
【請求項17】
保護されたメモリテーブルと、
メモリデバイスに結合されたメモリコントローラ、
とをさらに有することを特徴とする、請求項13記載のチップセット。
【請求項18】
信頼されたソフトウェアを使ってコンピュータシステム内で暗号化鍵を生成し、
前記信頼されたソフトウェアが周辺機器に暗号化鍵の送信を開始するために前記コンピュータシステム内で信頼されたレジスタに書込みをし、
前記暗号化用鍵を前記周辺機器に送信する、
ことを有することを特徴とする方法。
【請求項19】
前記暗号化用鍵が前記周辺機器に関連付けられたメモリスタックを迂回しつつ前記周辺機器に送信されることを特徴とする、請求項18記載の方法。
【請求項20】
前記周辺機器が前記暗号化鍵に基づいて動作しているかどうかを検証することをさらに有することを特徴とする、請求項18記載の方法。
【請求項21】
中央処理装置(CPU)と、
保護されたレジスタおよび
ホストコントローラを含む
前記CPUに結合されたチップセットと、
前記チップセットに結合されたメモリデバイスと、
前記ホストコントローラに結合されたバスと、
前記バスに結合された周辺機器とを有するコンピュータシステムであって、当該コンピュータシステムの起動時に前記周辺機器が信頼できることを検証するために、信頼されたソフトウェアが前記保護されたレジスタにアクセスして前記ホストコントローラと前記周辺機器との間で暗号化データを送信することを特徴とするコンピュータシステム。
【請求項22】
前記暗号化用データが前記周辺機器において生成され、前記ホストコントローラに送信されることを特徴とする、請求項21記載のコンピュータシステム。
【請求項23】
前記暗号化用データが前記CPUにおいて生成され、前記周辺機器に送信されることを特徴とする、請求項21記載のコンピュータシステム。
【請求項24】
前記信頼されたソフトウェアが前記保護されたレジスタに書き込みをして前記ホストコントローラに送信すべき前記暗号化データおよび受信すべき応答データを指示することを特徴とする、請求項21記載のコンピュータシステム。
【請求項25】
前記チップセットが:
保護されたメモリテーブルと、
メモリデバイスに結合されたメモリコントローラ、
とをさらに有することを特徴とする、請求項21記載のコンピュータシステム。
【請求項26】
前記ホストコントローラと前記周辺機器との間で送信されるデータが前記周辺機器に関連付けられた前記メモリデバイスにおけるスタックを迂回することを特徴とする、請求項21記載のコンピュータシステム。
【請求項27】
前記メモリデバイスが:
保護されたメモリテーブルと、
信頼されたソフトウェアモニタ、
とを有することを特徴とする、請求項21記載のコンピュータシステム。
【請求項28】
前記周辺機器がキーボードであることを特徴とする、請求項21記載のコンピュータシステム。
【請求項29】
前記周辺機器がマウスであることを特徴とする、請求項21記載のコンピュータシステム。
【請求項30】
前記周辺機器がスキャナであることを特徴とする、請求項21記載のコンピュータシステム。
【請求項31】
前記バスが汎用シリアルバスであることを特徴とする、請求項21記載のコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2007−526661(P2007−526661A)
【公表日】平成19年9月13日(2007.9.13)
【国際特許分類】
【出願番号】特願2006−515365(P2006−515365)
【出願日】平成16年6月16日(2004.6.16)
【国際出願番号】PCT/US2004/019254
【国際公開番号】WO2005/006159
【国際公開日】平成17年1月20日(2005.1.20)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】