(57)【要約】  記憶位置用の外部ロッキング機構を提供するための方法およびシステム。このメモリは、ＢＩＯＳデータが組み込まれた複数の第１の格納位置と、複数の第２の格納位置とを含む。複数の第２の格納位置は、ＳＭＭにおいてのみ読み取り可能な複数の第１のブロックと、ＳＭＭならびにＳＭＭ以外の少なくとも１つの動作モードにおいて読み取り可能な複数の第２のブロックとを含む。コンピュータシステムは、バスと、バスに接続されたメモリと、バス経由でメモリにアクセスすべく接続されたデバイスとを含む。メモリには、複数のメモリユニットに分割された複数の格納位置が含まれる。デバイスには、複数のメモリユニットのうちの１以上に対するアクセスを制御するように構成された１以上のロックが含まれる。
2005515517.tif 000002
【特許請求の範囲】
【請求項１】
バスと、
前記バスに接続されたメモリであって、複数のメモリユニットに分割された複数の格納位置を含むメモリと、
前記バス経由で前記メモリにアクセスすべく接続されたデバイスと、を含み、
前記デバイスが、前記複数のメモリユニットのうちの１以上に対するアクセスを制御するように構成された１以上のロックを含むことを特徴とする、コンピュータシステム。
【請求項２】
前記メモリがＲＯＭである、請求項１記載のコンピュータシステム。
【請求項３】
前記ＲＯＭがＢＩＯＳ  ＲＯＭである、請求項２記載のコンピュータシステム。
【請求項４】
前記ロックが複数のレジスタを含み、前記複数のレジスタのうちの１以上における１以上のエントリが、前記メモリユニットのうちの１以上に対するアクセス制御設定を示すものである、請求項１記載のコンピュータシステム。
【請求項５】
前記複数のレジスタのうちの少なくとも１つが前記メモリブロックのうちの１つに対する３つのロックビットを格納するように構成され、これらの３つのロックビットが、読み出しロックビット、書き込みロックビット、ロックダウンビットであり、前記ロックダウンビットが設定されている間は前記読み出しロックビットと前記書き込みロックビットとがリセットまで永続する、請求項４記載のコンピュータシステム。
【請求項６】
前記複数のレジスタのうちの少なくとも１つが、８ビットを格納するように構成され、これらの８ビットが、前記メモリブロックのうちの１つに対する３つのロックビットと、前記メモリブロックのうちの別の１つに対する別の３つのロックビットとを含み、これら３つのロックビットが、第１の読み出しロックビットと、第１の書き込みロックビットと、第１のロックダウンビットとを含み、前記第１のロックダウンビットが設定されている間は、前記第１の読み出しロックビットと前記第１の書き込みロックビットとがリセットまで永続し、前記別の３つのロックビットが、第２の読み出しロックビットと、第２の書き込みロックビットと、第２のロックダウンビットとを含み、前記第２のロックダウンビットが設定されている間は前記第２の読み出しロックビットと前記第２の書き込みロックビットとがリセットまで永続する、請求項４記載のコンピュータシステム。
【請求項７】
ＢＩＯＳデータが組み込まれた複数の第１の格納位置と、
複数の第２の格納位置であって、
ＳＭＭにおいてのみ読み取り可能な複数の第１のブロックと、
ＳＭＭならびにＳＭＭ以外の少なくとも１つの動作モードにおいて読み取り可能な複数の第２のブロックとを含む複数の第２の格納位置と、
を含むメモリ。
【請求項８】
前記複数の第１のブロックが、
書き込み１回ロックのあるブロックと、
消去不可ロックのあるブロックと、
ＳＭＭならびにＳＭＭ以外の少なくとも１つの動作モードで書き込み可能なブロックと、
のうちの少なくとも１つを含む、請求項７記載のメモリ。
【請求項９】
前記複数の第２のブロックが、
書き込み１回ロックのあるブロックと、
消去不可ロックのあるブロックと、
ＳＭＭならびにＳＭＭ以外の少なくとも１つの動作モードで書き込み可能なブロックと、
のうちの少なくとも１つを含む、請求項７記載のメモリ。
【請求項１０】
１以上のメモリアドレスに対するメモリトランザクションを要求する処理と、
前記１以上のメモリアドレスのロックステータスを判断する処理と、
前記１以上のメモリアドレスのロックステータスを返す処理と、
この１以上のメモリアドレスに対するメモリトランザクションが許可されていないことが前記ロックステータスで示された場合に、当該１以上のメモリアドレスのロックステータスを変更可能であるか否かを判断する処理と、
前記１以上のメモリアドレスのロックステータスが変更可能である場合に、当該１以上のメモリアドレスのロックステータスを変更して前記メモリトランザクションを許可する処理とを含む、コンピュータシステムを動作させるための方法。
【請求項１１】
前記ロックステータスを判断する処理が、第１のロックビットを読み出す処理を含み、前記ロックステータスを返す処理が、前記第１のロックビットの値を返す処理を含む、請求項１０記載の方法。
【請求項１２】
前記１以上のメモリアドレスのロックステータスを変更可能であるか否かを判断する処理が、第２のロックビットを読み出す処理を含む、請求項１１記載の方法。
【請求項１３】
前記１以上のメモリアドレスのロックステータスを変更してメモリトランザクションを許可する処理が、前記第１のロックビットの値を変更する処理を含む、請求項１２記載の方法。
【請求項１４】
いずれかの記憶位置に対するメモリトランザクションの要求を第１のデバイスから発行する処理と、
このメモリトランザクションの要求を、前記記憶位置あるいはその記憶位置の内容のコピーを含まない第２のデバイスで受信する処理と、
前記メモリトランザクションの要求を発行した第１のデバイスに前記第２のデバイスから応答を返す処理とを含む、コンピュータシステムを動作させる方法。
【請求項１５】
前記第２のデバイスから応答を返す処理が、前記メモリトランザクションを前記記憶位置に達成させることなく前記メモリトランザクションを終える処理を含む、請求項１４記載の方法。
【請求項１６】
前記メモリトランザクションの要求に記憶位置で答えることなく前記メモリトランザクションの要求を終える処理をさらに含む、請求項１４記載の方法。
【請求項１７】
前記第２のデバイスが、前記第１のデバイスと前記記憶位置との間に接続されたブリッジを含み、前記メモリトランザクションの要求を発行した第１のデバイスに第２のデバイスから前記応答を返す処理が、前記メモリトランザクションの要求を発行した第１のデバイスに前記ブリッジから応答を返す処理を含む、請求項１４記載の方法。
【請求項１８】
コンピュータシステムが第１の動作モードで動作している場合に、前記メモリトランザクションの要求を発行した第１のデバイスにブリッジから前記応答を返す処理が、前記記憶位置に対するメモリトランザクションの要求の受信時にあらかじめ定められた値を持つ前記ブリッジ内のアクセスフィルタから応答する処理を含む、請求項１７記載の方法。
【請求項１９】
前記記憶位置に対するメモリトランザクションの要求を前記第１のデバイスから発行する処理が、メモリ、ＲＯＭまたはフラッシュメモリ内の記憶位置に対するメモリトランザクションの要求を前記第１のデバイスから発行する処理を含む、請求項１８記載の方法。
【請求項２０】
前記第１のデバイスがセキュリティハードウェアを含み、前記メモリトランザクションの要求を前記記憶位置あるいはその記憶位置の内容のコピーを含まない第２のデバイスで受信する処理が、前記第１のデバイス内のセキュリティハードウェアで前記メモリトランザクションの要求を受信する処理を含み、前記メモリトランザクションの要求を発行した第１のデバイスに前記第２のデバイスから応答を返す処理が、メモリトランザクションの要求を発行した前記第１のデバイスに前記セキュリティハードウェアから応答を返す処理を含む、請求項１４記載の方法。
【請求項２１】
前記応答を返す前に前記第２のデバイス内の記憶位置から第１の値を読み出す処理をさらに含み、前記第２のデバイス内の前記記憶位置が前記メモリトランザクション用の記憶位置とは異なるものである、請求項１４記載の方法。
【発明の詳細な説明】
【関連出願】
【０００１】
本件出願は、発明者デール・イー・ギューリック（Ｄａｌｅ  Ｅ．Ｇｕｌｉｃｋ）およびジェフリー・エス・ストロンギン（Ｇｅｏｆｆｒｅｙ  Ｓ．Ｓｔｒｏｎｇｉｎ）、発明の名称「Ｓｅｃｕｒｅ  Ｅｘｅｃｕｔｉｏｎ  Ｂｏｘ  ａｎｄ  Ｍｅｔｈｏｄ（セキュア実行ボックスおよび方法）」である、２００１年５月１０日に出願の係属中の米国特許出願第０９／８５２，３７２号の一部継続出願である。また、本件出願は、発明者ジェフリー・エス・ストロンギンおよびデール・イー・ギューリック、２００１年５月１０日に出願の発明の名称「Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｅｎｈａｎｃｅｄ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｍａｎａｇｅａｂｉｌｉｔｙ（セキュリティを高め、かつ管理の容易性を高めるためのコンピュータシステムアーキテクチャ）」である、係属中の米国特許出願第０９／８５２，９４２号の一部継続出願でもある。
【技術分野】
【０００２】
本発明は、広義にはコンピュータシステムに関し、特に、パーソナルコンピュータシステム内のＲＯＭ  ＢＩＯＳなどの記憶位置に対するアクセスを制御するための外部ロッキング機構に関する。
【背景技術】
【０００３】
代表的なコンピュータシステム１００を図１Ａに示す。このコンピュータシステム１００は、プロセッサ１０２と、ノースブリッジ１０４と、メモリ１０６と、Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）メモリ１０８と、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス１１０と、サウスブリッジ１１２と、バッテリと、ＡＴアタッチメント（ＡＴＡ）インタフェース１１４（より一般的にはＩｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）インタフェースとして知られる）と、ユニバーサルシリアルバス（ＵＳＢ）インタフェース１１６と、Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ（ＬＰＣ）バス１１８と、入出力コントローラチップ（Ｓｕｐｅｒ  Ｉ／ＯＴＭ）１２０と、ＢＩＯＳメモリ１２２とを含む。ノースブリッジ１０４およびサウスブリッジ１１２は、チップをひとつしか含まないものであってもよいし、全体を総称して「チップセット」と呼ぶ複数のチップを含むものであってもよい点に注意されたい。また、コンピュータシステム１００には、キャッシュ、モデム、パラレルインタフェースまたはシリアルインタフェース、ＳＣＳＩインタフェース、ネットワークインタフェースカード［「Ｓｕｐｅｒ  Ｉ／Ｏ」はカリフォルニア州サンタクララのナショナルセミコンダクターコーポレーションの商標である]など、必要に応じて他のバス、デバイスおよび／またはサブシステムを含み得る点にも注意されたい。
【０００４】
プロセッサ１０２はノースブリッジ１０４に接続されている。ノースブリッジ１０４は、プロセッサ１０２、メモリ１０６、ＡＧＰメモリ１０８、ＰＣＩバス１１０それぞれの相互インタフェースを提供する。サウスブリッジ１１２は、ＰＣＩバス１１０と、ＩＤＥインタフェース１１４やＵＳＢインタフェース１１６、ＬＰＣバス１１８に接続された周辺機器やデバイス、サブシステムそれぞれとの相互インタフェースを提供する。バッテリ１１３はサウスブリッジ１１２に接続された状態で示されている。Ｓｕｐｅｒ  Ｉ／ＯＴＭチップ１２０はＬＰＣバス１１８に接続されている。
【０００５】
ノースブリッジ１０４は、プロセッサ１０２、メモリ１０６、ＡＧＰメモリ１０８、ＰＣＩバス１１０に接続されたデバイス、サウスブリッジ１１２に接続されたデバイスおよびサブシステム同士および／またはこれらの間での通信アクセスを提供する。一般に、コンピュータシステム１００への接続用のＰＣＩバス１１０とつながるＰＣＩ「スロット」（図示せず）に、着脱自在の周辺デバイスが挿入される。あるいは、マザーボード上にあるデバイスをＰＣＩバス１１０に直接接続してもよい。
【０００６】
サウスブリッジ１１２は、ＰＣＩバス１１０と、ＬＰＣバス１１８（あるいはＸ−バスまたはＩＳＡバスなどの旧世代のバス）を介してコンピュータシステム１００に接続されているのが普通であるモデムやプリンタ、キーボード、マウスなどのさまざまなデバイスやサブシステムとの間のインタフェースを提供する。サウスブリッジ１１２には、デバイスとコンピュータシステム１００の残りの部分とを、ＩＤＥインタフェース１１４、ＵＳＢインタフェース１１６、ＬＰＣバス１１８を介してインタフェースするロジックが含まれる。
【０００７】
バッテリ１１３から予備電力を供給される、いわゆる「ＲＴＣバッテリウェル内にあるもの」１２５をはじめとする従来技術のサウスブリッジ１１２の特定の態様を図１Ｂに示す。サウスブリッジ１１２は、サウスブリッジ（ＳＢ）ＲＡＭ１２６とクロック回路１２８とを、いずれもＲＴＣバッテリウェル１２５内に含む。ＳＢ  ＲＡＭ１２６にはＣＭＯＳ  ＲＡＭ１２６ＡとＲＴＣ  ＲＡＭ１２６Ｂとが含まれる。ＲＴＣ  ＲＡＭ１２６Ｂにはクロックデータ１２９とチェックサムデータ１２７とが含まれる。また、サウスブリッジ１１２は、ＲＴＣバッテリウェル１２５の外部に、ＣＰＵインタフェース１３２と、電源・システム管理ユニット１３３と、ＰＣＩバスインタフェースロジック１３４Ａと、ＵＳＢインタフェースロジック１３４Ｃと、ＩＤＥインタフェースロジック１３４Ｂと、ＬＰＣバスインタフェースロジック１３４Ｄとを含む。
【０００８】
クロック回路１２８からの時刻データと日付データとが、クロックデータ１２９としてＲＴＣ  ＲＡＭ１２６Ｂに格納される。ＲＴＣ  ＲＡＭ１２６Ｂ内のチェックサムデータ１２７については、図２Ａを参照してブロック１４８などで後述するように、ＣＭＯＳ  ＲＡＭ１２６Ａのデータに基づいて求め、ブートプロセスの間にＢＩＯＳによって格納することができる。ＣＰＵインタフェース１３２には、割り込み信号コントローラとプロセッサ信号コントローラとを含み得る。電力・システム管理ユニット１３３には、ＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）コントローラを含み得る。
【０００９】
低消費電力設計されたコンピュータシステムの動作モードのひとつにシステム管理モード（ＳＭＭ）がある。ＳＭＭは第四世代のｘ８６プロセッサ用に作られたものである。新しい世代のｘ８６プロセッサが登場するにつれて、ＳＭＭはオペレーティングシステムにとって相対的にトランスペアレントなものとなっていった。すなわち、コンピュータシステムはオペレーティングシステムに対してほとんどまたは全く影響を与えることなくＳＭＭに入ったりこのモードから抜けたりするのである。
【００１０】
ここで図面、特に図２Ａを参照すると、ＢＩＯＳ１２２に格納されたコードを使ってコンピュータシステムを初期化する従来技術の方法のフローチャートが示されている。電源の初期化時、ブロック１３６でノースブリッジへの電源正常信号を電源にて生成する。電源から電源正常信号を受信すると、ブロック１３８でサウスブリッジ（またはノースブリッジ）がプロセッサへのリセット信号のアサートを停止する。
【００１１】
初期化時、ブロック１４０でプロセッサがデフォルトのジャンプ位置を読み出す。メモリ内のデフォルトのジャンプ位置は、ＦＦＦＦ０ｈなどの位置にあるのが普通である。ブロック１４２ではプロセッサがＲＯＭ  ＢＩＯＳ内のしかるべきＢＩＯＳコード位置（ＦＦＦＦ０ｈなど）へのジャンプを実行し、ＢＩＯＳコードをＲＡＭメモリにコピーし、ＲＡＭメモリからのＢＩＯＳコード命令の処理を開始する。プロセッサによって処理されるＢＩＯＳコードは、ブロック１４４でパワーオンセルフテスト（ＰＯＳＴ）を実行する。
【００１２】
次に、ブロック１４６において、ＢＩＯＳコードがビデオコントローラやＩＤＥコントローラ、ＳＣＳＩコントローラなどから別のＢＩＯＳコードを探し、スタートアップ情報の画面を表示する。一例として、ビデオコントローラのＢＩＯＳはＣ０００ｈにあることが多いのに対し、ＩＤＥコントローラのＢＩＯＳコードはＣ８００ｈにあることが多い。ＢＩＯＳコードは、ＲＡＭメモリのカウントアップテストや、ＣＯＭ（シリアル）ポートとＬＰＴ（パラレル）ポートの識別をはじめとするシステムインベントリなどの別のシステムテストをブロック１４８にて行うものであってもよい。また、ＢＩＯＳコードは、ブロック１５０でプラグアンドプレイデバイスや他の同様のデバイスを識別した後、識別したデバイスの概要を示す画面を表示する。
【００１３】
ブロック１５２ではＢＩＯＳコードがブート位置とこれに対応するブートセクタとを識別する。ブート位置は、フロッピードライブ、ハードドライブ、ＣＤＲＯＭ、リモートロケーションなどに存在し得る。次に、ブロック１５４でＢＩＯＳコードはブート位置のブートセクタコードをコールし、たとえばオペレーティングシステムでコンピュータシステムをブートする。
【００１４】
コールドブートまたはハード（リ）ブートの場合はブロック１３６〜１５４に記載の説明の全部または大半が行われ得る点に注意されたい。ウォームブートまたはソフト（リ）ブートの際には、ＢＩＯＳコードはＰＯＳＴやメモリテストなどをスキップしてブロック１４２からブロック１４８にジャンプするのが普通である。  
【００１５】
図２Ｂに、ＢＩＯＳ１２２に格納されたコードを使ってコンピュータシステムをＳＭＭで動作させる従来技術の方法のフローチャートが示されている。ブロック１７２では割り込みコントローラがＳＭＭの要求を受信する。割り込みコントローラは、ブロック１７４でシステム管理割り込み（ＳＭＩ＃）信号をアサートし、ＳＭＭの要求があった旨をプロセッサに伝達する。
【００１６】
ブロック１７６ではプロセッサがＳＭＭの要求を認識し、ＳＭＩ  ＡＣＴｉｖｅ（ＳＭＩＡＣＴ＃）信号をアサートする。ブロック１７８では、システムがＳＭＩＡＣＴ＃信号を認識し、システムＲＡＭへのアクセスをディスエーブルにし、システム管理ＲＡＭ（ＳＭＲＡＭ）空間へのアクセスをイネーブルにする。
【００１７】
プロセッサのカレントの状態がブロック１８０でＳＭＲＡＭに保存される。ブロック１８２ではプロセッサがＳＭＭのデフォルトの状態にリセットされ、ＳＭＭに入る。次に、プロセッサはブロック１８４でデフォルトのポインタを読み出し、ＳＭＲＡＭ空間内のしかるべき場所までジャンプする。ブロック１８６では、ＳＭＩ要求の発信元および／または性質が識別される。
【００１８】
ブロック１８８ではＳＭＩハンドラがＳＭＩ要求に応じる。ＳＭＩ要求に応じた後、ＳＭＩハンドラはブロック１９０においてＳＭＭ（ＲＳＭ）命令からのリターンをプロセッサに対して発行する。ＲＳＭ命令での動作時、ブロック１９２でプロセッサは保存された状態情報を書き戻し、通常の動作を継続する。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
ハードウェア的な観点からみると、ｘ８６の動作環境では、ユーザプライバシーの保護、企業秘密および法人資産に対するセキュリティの提供、あるいはコンテンツプロバイダの所有者の権利の保護という点ではほとんど何もしていない。これらの目標すなわちプライバシー、セキュリティ、所有権（ＰＳＯと総称する）はいずれもコンピュータがインターネットに接続される時代にあって次第に重要なものとなりつつあるが、初期のパーソナルコンピュータはＰＳＯの需要を見越して設計されたものではなかった。
【００２０】
ソフトウェア的な観点からみても、ｘ８６の動作環境がＰＳＯの点で粗末なことに変わりはない。ソフトウェア経由あるいは単にパーソナルコンピュータのカバーを開けるだけでハードウェアを直接いじることが容易であるため、セキュリティソフトウェアおよびデバイスの大半が侵入者または泥棒による危機にさらされる。パーソナルコンピュータはものの見事に使いやすいものであるが、この点はＰＳＯの問題を大きくするにすぎないのである。
【課題を解決するための手段】
【００２１】
発明の開示
本発明の一態様では、コンピュータシステムが得られる。このコンピュータシステムは、バスと、バスに接続されたメモリと、バス経由でメモリにアクセスすべく接続されたデバイスとを含む。メモリには、複数のメモリユニットに分割された複数の格納位置が含まれる。デバイスには、複数のメモリユニットのうちの１以上に対するアクセスを制御するように構成された１以上のロックが含まれる。さまざまな実施形態では、ロックが複数のレジスタを含むものであってもよい。複数のレジスタのうちの１以上における１以上のエントリを、メモリユニットのうちの１以上に対するアクセス制御設定を示すものとすることもできる。
【００２２】
本発明のもうひとつの態様では、メモリが得られる。このメモリは、ＢＩＯＳデータが組み込まれた複数の第１の格納位置と、複数の第２の格納位置とを含む。複数の第２の格納位置は、ＳＭＭにおいてのみ読み取り可能な複数の第１のブロックと、ＳＭＭならびにＳＭＭ以外の少なくとも１つの動作モードにおいて読み取り可能な複数の第２のブロックとを含む。
【００２３】
本発明のさらにもうひとつの態様では、コンピュータシステムを動作させるための方法が得られる。この方法は、１以上のメモリアドレスに対するメモリトランザクションを要求し、１以上のメモリアドレスのロックステータスを判断することを含む。また、この方法は、１以上のメモリアドレスのロックステータスを返し、この１以上のメモリアドレスに対するメモリトランザクションが許可されていないことがロックステータスで示された場合に、当該１以上のメモリアドレスのロックステータスを変更可能であるか否かを判断することも含む。また、この方法は、１以上のメモリアドレスのロックステータスが変更可能である場合に、当該１以上のメモリアドレスのロックステータスを変更してメモリトランザクションを許可することも含む。
【００２４】
本発明のさらにもうひとつの態様では、コンピュータシステムを動作させる別の方法が得られる。この方法は、いずれかの記憶位置に対するメモリトランザクションの要求を第１のデバイスから発行し、このメモリトランザクションの要求を、上記の記憶位置あるいはその記憶位置の内容のコピーを含まない第２のデバイスで受信することを含む。また、この方法は、メモリトランザクションの要求を発行した第１のデバイスに第２のデバイスから応答を返すことも含む。
【００２５】
添付の図面を参照しての以下の説明を参照することで、本発明を理解することができよう。図中、同様の構成要素には同様の参照符号を付してある。
【００２６】
本発明はさまざまな改変や別の形態が可能なものであるが、その具体的な実施形態を一例として図示し、本願明細書中にて詳細に説明する。しかしながら、本願明細書に記載の具体的な実施形態についての説明は、ここに開示の特定の形態に本発明を限定することを意図したものではなく、添付の特許請求の範囲に定義した本発明の範囲に含まれる改変例、等価物および別の形をすべて包含することを意図している点を理解されたい。
【発明を実施するための最良の形態】
【００２７】
以下、実例としての本発明の実施形態について説明する。説明を明確にするため、本願明細書では実際の実施例における特徴をすべて説明したわけではない。もちろん、このような実際の実施形態を開発するにあたっては、いずれの場合もシステム関連の制約やビジネス関連の制約を踏まえるなど、実施例ごとにさまざまな判断を行って開発者らの意図する目的を達成していく必要があり、これは実施例ごとに異なるものであることは理解できよう。さらに、このような開発作業は複雑かつ時間を要するものになる場合があるが、それでも本願の開示内容を利用できる当業者らにとっては日常業務の一環であろうことも理解できよう。参照符号にアルファベットも加えてあるのは、それぞれの参照符号を付した項目の別の実施形態または例を示すためである。
【００２８】
本発明の一態様による、セキュア実行ボックス２６０を有するコンピュータシステムにおけるデータ・コマンドフローのフローチャートの実施形態をブロック図の形で図３に示す。ユーザ入出力（Ｉ／Ｏ）データおよび／またはコマンド２０５が１以上のアプリケーション２１０との間で受け渡しされる。アプリケーション２１０は、コンピュータシステム１００または他の何らかのコンピュータシステムなどのコンピュータシステム内の暗号サービスプロバイダ２１５とデータやコマンドをやり取りする。暗号サービスプロバイダ２１５は、ハードウェア２３０に対するアクセスを提供するドライバ２２５と、ＡＰＩ（アプリケーションプログラミングインタフェース）コール２２０を使って通信するものであってもよい。
【００２９】
本発明の一態様によれば、ドライバ２２５およびハードウェア２３０は、セキュア実行モード（ＳＥＭ）２６０で動作するように構成されたセキュア実行ボックスの一部である。単にセキュリティ動作とも呼ぶ、プライバシー、セキュリティ、所有権（ＰＳＯ）についての信頼された動作を、コンピュータシステムがＳＥＭ２６０にある間に実行することができる。ユーザＩ／Ｏ２０５および／またはアプリケーション２１０からのソフトウェアコールについては、図５Ｂ（または図５Ａ）を参照して後述するＳＭＭ開始レジスタ４２５Ｂ（またはＳＭＭイニシエータ４２５Ａ）を介して、ＳＭＭ２６０にあるセキュア実行ボックスに対して行うことができる。また、同じく図５Ａおよび５Ｂを参照して後述するアクセス保護されたメイルボックスＲＡＭ４１５を介して、ＳＥＭ２６０にあるセキュア実行ボックスにパラメータを渡したりここからパラメータを取り出したりすることもできる。また、ソフトウェアコールによってＳＥＭ２６０にあるセキュア実行ボックスに対してアクセスし、詳細については後述するものなどのさまざまなセキュリティハードウェア資源を利用できる。
【００３０】
本発明の一態様による、サウスブリッジ３３０内のセキュリティハードウェア３７０と暗号化プロセッサ３０５とを含む、コンピュータシステム１００を改良したものを、その一部の実施形態のブロック図で図４に示す。サウスブリッジ３３０は、セキュリティハードウェア３７０と、割り込みコントローラ（ＩＣ）３６５と、ＵＳＢインタフェースロジック１３４Ｃと、ＬＰＣバスインタフェースロジック（ＬＰＣ  ＢＩＬ）１３４Ｄとを含む。ＩＣ３６５はプロセッサ１０２に接続されている。ＵＳＢインタフェースロジック１３４Ｃは任意のＵＳＢハブ３１５に接続されている。ＬＰＣバス１１８はＬＰＣ  ＢＩＬ１３４Ｄを介してサウスブリッジ３３０に接続されている。暗号化プロセッサ３０５はＬＰＣバス１１８にも接続されている。暗号化プロセッサ３０５内のメモリパーミッションテーブル３１０は、アドレスマッピングおよび／またはメモリレンジのパーミッション情報を提供するものである。メモリパーミッションテーブル３１０については不揮発性メモリで構成することができる。暗号化プロセッサ３０５には、ＢＩＯＳ３５５すなわちいくつかのメモリ、好ましくは読み出し専用メモリまたはフラッシュメモリを接続しておく。
【００３１】
サウスブリッジ３３０内のセキュリティハードウェア３７０は、プロセッサ１０２向けのＳＭＩ割り込み要求をＩＣ３６５に提供するように動作可能なものである。セキュリティハードウェア３７０は暗号化プロセッサ３０５と通信することもできる。ＢＩＯＳ３５５へのアクセスは暗号化プロセッサ３０５を介する経路をとる。暗号化プロセッサ３０５は、アクセス要求を受け取り、これをＢＩＯＳ３５５に転送するように構成されている。したがって、暗号化プロセッサ３０５はＢＩＯＳ３０５がどのようにアドレスマッピングされているか知ることができる。本発明の一態様によれば、セキュリティハードウェア３７０を設けたことで、コンピュータシステム１００を図３に示すセキュア実行ボックス２６０の一実施形態にすることができる。
【００３２】
ＩＣ３６５はサウスブリッジ３３０ではなくプロセッサに含まれるものであってもよい点に注意されたい。ＩＣ３６５が別のユニットである場合またはコンピュータシステム１００の別の構成要素と関連したものである場合も企図される。また、ＬＰＣバス１１８の動作は従来技術のＬｏｗ  Ｐｉｎ  Ｃｏｕｎｔ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．０（１９９７年９月２９日）に対応させられるものである点にも注意されたい。さらに、ＵＳＢインタフェースロジック１３４Ｃについてはブリッジ内の異なるバスインタフェースロジックを接続するための従来技術において周知のように、さまざまある方法のどれを使ってＬＰＣ  ＢＩＬ１３４Ｄに接続してもよい点にも注意されたい。
【００３３】
本発明のさまざまな態様による、セキュリティハードウェア３７０を含むサウスブリッジ３３０の実施形態をブロック図の形で図５Ａおよび図５Ｂに示す。図５Ａにおいて、サウスブリッジ３３０Ａは、セキュリティハードウェア３７０ＡとＩＣ３６５とを含む。セキュリティハードウェア３７０Ａは、ＳＭＭアクセスコントローラ４０２Ａと制御ロジック４２０Ａなどのサブデバイスとを含む。サブデバイスについては、コンピュータシステム１００のセキュリティハードウェアまたはセキュアアセット（ｓｅｃｕｒｅ  ａｓｓｅｔ）とも呼ぶことができる。ＳＭＭアクセスコントローラ４０２Ａは、ＳＭＭアクセスフィルタ４１０と、メイルボックスＲＡＭ４１５と、ＳＭＭイニシエータ４２５Ａとを含む。
【００３４】
図５Ａに示されるように、制御ロジック４２０は、ＳＭＭアクセスコントローラ４０２ＡおよびＳＭＭイニシエータ４２５Ａの制御動作と接続されている。セキュリティハードウェア３７０Ａへの入出力（Ｉ／Ｏ）はＳＭＭアクセスフィルタ４１０を通り、制御ロジック４２０Ａを介する経路をとる。
【００３５】
ＳＭＭアクセスコントローラ４０２ＡはＳＭＭアクセスフィルタ４１０を含むが、これらのフィルタはセキュリティハードウェア３７０Ａ内のサブデバイスに対する入力要求を受け取るように構成されている。コンピュータシステム１００がＳＭＭにあるとき、ＳＭＭアクセスフィルタはアクセス要求（読み出しや書き込みなど）を制御ロジック４２０Ａおよび／または目的とするサブデバイスに渡すように構成される。コンピュータシステム１００がＳＭＭにないときは、ＳＭＭアクセスフィルタはすべて「１」などのあらかじめ定められた値を持つすべてのアクセス要求に応答するように構成される。ＳＭＭアクセスコントローラ４０２ＡにはメイルボックスＲＡＭ４１５も含まれる。一実施形態において、メイルボックスＲＡＭ４１５は、セキュア実行ボックス２６０にパラメータを渡したりここからパラメータを取り出したりするために、たとえば各々５１２バイトのＲＡＭのバンクを２つ含む。セキュリティハードウェア３７０内に含まれるサブデバイスに渡されるまたはサブデバイスから取り出されるパラメータはメイルボックスＲＡＭ４１５でやり取りされる。ＲＡＭ４１５の一方のバンクすなわちインボックスは、コンピュータシステム全体のほとんどにとって、大半の動作モードで書き込み専用のものである。よって、インボックスにはセキュリティハードウェア３７０内に含まれるサブデバイスに渡されることになるパラメータを書き込むことができる。ＳＭＭなどの選択された動作モードの間は、インボックスに対する読み出しアクセスならびに書き込みアクセスの両方が許可される。ＲＡＭ４１５のもうひとつのバンクすなわちアウトボックスは、コンピュータシステム全体のほとんどにとって、大半の動作モードで読み出し専用のものである。よって、アウトボックスからはセキュリティハードウェア３７０内に含まれるサブデバイスから受信されることになるパラメータを読み出すことができる。選択された動作モード、好ましくはＳＭＭなどのセキュアモードの間は、アウトボックスに対する読み出しアクセスならびに書き込みアクセスの両方が許可される。
【００３６】
ＳＭＭイニシエータ４２５Ａを設けることで、コンピュータシステム１００がＳＭＭに入ることを要求するための便利な方法を都合よく得ることができる。ＳＭＭイニシエータ４２５Ａに信号を送るには要求（ＲＥＱ）ラインを使用すればよい。この信号は、ＳＭＭメモリ内でのジャンプ位置のインジケーションを提供するものとする。ＳＭＭイニシエータ４２５Ａは、たとえばＳＭＩ＃を割り込みコントローラ３６５に送信するなどの方法でＳＭＭ要求（ＳＭＭ  ＲＥＱ）ラインを使ってＳＭＭの要求をするように構成されている。また、ＳＭＭイニシエータ４２５Ａは、ＳＭＭの要求が受信され、割り込みコントローラ３６５に渡された旨を制御ロジック４２０Ａに通知するようにも構成されている。
【００３７】
図５Ｂにおいて、サウスブリッジ３３０Ｂはセキュリティハードウェア３７０Ｂを含む。ＩＣ３６５はサウスブリッジ３３０Ｂの外に示されている。セキュリティハードウェア３７０ＢはＳＭＭアクセスコントローラ４０２Ｂと制御ロジック４２０Ｂとを含む。ＳＭＭアクセスコントローラ４０２Ｂは、ＳＭＭアクセスフィルタ４１０とメイルボックスＲＡＭ４１５とを含む。ＳＭＭ開始レジスタ４２５Ｂはサウスブリッジ３３０Ｂの外に示されている。
【００３８】
図５Ｂに示されるように、制御ロジック４２０Ｂは、ＳＭＭアクセスコントローラ４０２Ｂの制御動作と接続されている。セキュリティハードウェア３７０Ｂへの入出力（Ｉ／Ｏ）信号はＳＭＭアクセスフィルタ４１０を通り、制御ロジック４２０Ｂを介する経路をとる。また、制御ロジック４２０Ｂは、ＳＭＭ開始レジスタ４２５ＢからＳＭＭの要求のインジケーションを受信するようにも接続されている。
【００３９】
ＳＭＭアクセスコントローラ４０２ＢはＳＭＭアクセスフィルタ４１０を含むが、これらのフィルタはセキュリティハードウェア３７０Ｂ内のサブデバイスに対する入力要求を受け取るように構成されている。コンピュータシステム１００がＳＭＭにあるとき、ＳＭＭアクセスフィルタはアクセス要求（読み出しや書き込みなど）を制御ロジック４２０Ｂおよび／または目的とするサブデバイスに渡すように構成される。コンピュータシステム１００がＳＭＭにないときは、ＳＭＭアクセスフィルタを、すべて「１」などのあらかじめ定められた値を持つすべてのアクセス要求に応答するように構成することができる。また、ＳＭＭアクセスコントローラ４０２Ｂには、図５Ａを参照して上述したメイルボックスＲＡＭ４１５も含まれる。
【００４０】
ＳＭＭ開始レジスタ４２５Ｂを設けることで、コンピュータシステム１００がＳＭＭに入ることを要求するための便利な方法を都合よく得ることができる。ＳＭＭ開始レジスタ４２５Ｂに信号を送るには要求（ＲＥＱ）ラインを使用すればよい。この信号は、ＳＭＭメモリ内でのジャンプ位置のインジケーションを提供するものとする。ＳＭＭ開始レジスタ４２５Ｂは、制御ロジック４２０Ｂに対するインジケーションを提供するように構成されている。制御ロジック４２０Ｂは、たとえばＳＭＩ＃を割り込みコントローラ３６５に送信するなどの方法でＳＭＭ要求（ＳＭＭ  ＲＥＱ）ラインを使ってＳＭＭの要求をするように構成されている。
【００４１】
図５Ａに示す実施形態では、ＳＭＭイニシエータ４２５ＡがＳＭＭ要求に対処するための内部ロジックを含む点に注意されたい。図５Ｂに示す実施形態では、ＳＭＭ要求に対処する上でＳＭＭ開始レジスタ４２５Ｂは制御ロジック４２０Ｂに頼っている。また、ＳＭＭイニシエータ４２５Ａはセキュリティハードウェア３７０Ａの一部であるのに対し、ＳＭＭ開始レジスタ４２５Ｂはセキュリティハードウェア３７０Ｂの一部ではない点にも注意されたい。
【００４２】
本発明の一態様による、セキュリティハードウェア３７０Ｃを含むサウスブリッジ３３０Ｃの実施形態をブロック図の形で図６に示す。図示のように、セキュリティハードウェア３７０Ｃは、ＳＭＭアクセスコントローラ４０２、制御ロジック４２０、ＴＣＯカウンタ４３０、スクラッチパッドＲＡＭ４４０、乱数ジェネレータ４５５、セキュアシステム（すなわちＳＭＭ）管理レジスタ４７０、ＯＡＲ−（Ｏｐｅｎ  Ａｔ  Ｒｅｓｅｔ）ロック４５０、ＯＡＲオーバーライドレジスタ４４５などのサブデバイスを含む。ＳＭＭアクセスコントローラ４０２はＳＭＭアクセスフィルタ４１０内に１以上のアクセスロック４６０を含む。ＳＭＭアクセスコントローラ４０２ならびに制御ロジック４２０の実施形態のいくつかの態様については、図５Ａおよび図５Ｂを参照して本願明細書で上述されている。
【００４３】
図６に示すＳＭＭアクセスコントローラ４０２の実施形態には、ＳＭＭアクセスフィルタ４１０内に１以上のアクセスロック４６０が含まれる。アクセスロック４６０は、セキュリティハードウェア３７０Ｃ内のデバイスのうちの１以上に対するアクセスを防止（またはロック）および許可（またはアンロック）する手段となる。１以上のアクセスロック４６０のさまざまな実施形態を図１０Ａ〜図１０Ｃに図示し、これらの図を参照して説明する。
【００４４】
一実施形態において、アクセスロック４６０はオープン・アット・リセット（ｏｐｅｎ  ａｔ  ｒｅｓｅｔ；ＯＡＲ）であり、ＢＩＯＳソフトウェアがセキュリティハードウェア３７０にアクセスできるようにしている。よって、ＢＩＯＳソフトウェアは、図２Ａのブロック１５４で示すブートセクタコードのコール前にアクセスロック４６０をクローズする。さまざまな実施形態において、セキュリティハードウェア３７０へのアクセスを許可すべくアクセスロック４６０を開放する動作についてはソフトウェアまたはハードウェアで行うことができる。たとえば、ＩＣ３６５またはプロセッサ１０２あるいは制御ロジック４２０からの信号によってアクセスロック４６０を開放するようにすることができる。また、ＳＭＩ＃に応答して、あるいはプロセッサ１０２がＳＭＭに入ったことに応答してアクセスロック４６０を開放するようにしても構わない。図９Ａ〜図９Ｃを参照して後述する方法９００Ａ〜９００Ｃのうちの１以上からアクセスロック４６０に関する追加情報を取得することができる。
【００４５】
ＴＣＯカウンタ（すなわちタイマー）４３０は、コンピュータシステム１００のロックアップの検出に用いられる、カウントダウンタイマーなどのプログラマブルタイマーを含むものであってもよい。ロックアップとは、１以上のサブシステムまたはコンポーネントがあらかじめ定められた時間を経過しても入力信号に応答しない、コンピュータシステム１００の状態であると定義することができる。入力信号には、コンピュータシステム１００内部からの内部信号あるいは、ユーザの入力装置（キーボード、マウス、トラックボール、バイオメトリクスデバイスなど）からの信号などコンピュータシステム１００の外からの信号を含み得る。また、ロックアップはソフトウェア的なものであってもハードウェア的なものであってもよい点にも注意されたい。本発明のさまざまな態様によれば、ＴＣＯカウンタ４３０をプログラムし、ＳＭＭ中に読み出すようにすることができる。ＴＣＯカウンタ４３０については、キックアウトタイマー４０７のデフォルトの設定時間未満の値でプログラムするのが好ましい。一実施形態では、ＴＣＯタイマー４３０はＴＣＯタイマー４３０の第１の経過時にＳＭＩ＃を生成し、その後のＴＣＯタイマー４３０の第２の経過時にＴＣＯタイマー４３０はコンピュータシステムのリセット信号を生成する。
【００４６】
一実施形態では、コンピュータシステムがＳＭＭにないときに、コンピュータシステム１００あるいはコンピュータシステム１００内で動いているソフトウェアからＴＣＯタイマー４３０にアクセスし、コンピュータシステム１００をロックアップから回復させることができる。もうひとつの実施形態では、ＳＭＭにあるときとないときの両方でコンピュータシステム１００からＴＣＯタイマー４３０にアクセスすることができる。
【００４７】
スクラッチパッドＲＡＭ４４０は、コンピュータシステム１００がＳＭＭなどの特定の動作モードにあるときにのみ利用できる、１以上のメモリのブロックを含む。セキュリティハードウェア３７０の他のサブデバイスがスクラッチパッドＲＡＭ４４０をプライベートなメモリとして利用できる場合も企図される。スクラッチパッドＲＡＭ４４０の一実施形態においては１ｋＢのメモリが使われているが、他の大きさのメモリも企図される。一実施形態ではスクラッチパッドＲＡＭはコンピュータシステム１００の全体または大半に対してオープン・アット・リセットであるが、他の実施形態ではスクラッチパッドＲＡＭはコンピュータシステムのブート中にはアクセスできないものである。
【００４８】
乱数ジェネレータ（ＲＮＧ）４５５は、あらかじめ定められた範囲内の複数のビットで生成される乱数を提供するように構成されている。一実施形態では、乱数の要求に応答して１から３２ビット長での新たな乱数が提供される。ＳＭＭの間のみなどにＲＮＧへのアクセスを制限することで、ソフトウェアがＲＮＧにアクセスするときには都合よく標準的なＡＰＩ（アプリケーションプログラミングインタフェース）を経由させることができ、セキュリティを高めてハードウェアの設計上の制約を容易にできる点に注意されたい
【００４９】
ＯＡＲロック４５０には複数のメモリユニット（レジスタなど）を含み得るものであり、これらのユニットに、たとえば下記の図７Ａおよび図７Ｂに示すＢＩＯＳ  ＲＯＭ３５５およびＳＭＭ  ＲＯＭ５５０などのＢＩＯＳ情報または他のデータの格納に用いられる１つのメモリ（または複数のメモリ）をロックする関連のプログラミングビット（またはロックビット）が含まれる。各メモリユニットは、一例として、自己に関連したロックビットを３つ有することができる。一実施形態では、８ビットのレジスタを４つ使用し、レジスタ１つにつき６４ｋＢのセグメントを２つずつで各５１２ｋＢのＲＯＭページのロックビットを格納することができる。４つのレジスタからなるブロックを１６使用すると、最大８ＭＢのＲＯＭをロックすることができる。アドレス指定については以下のようにすればよい。
【００５０】
【表１】
2005515517.tif 000003
【００５１】
それぞれの物理的なＲＯＭチップには、ストラッピングピンとして知られる識別用のピンを４つ（ＩＤ［３：０］）含み得る。このストラッピングピンを使用して、各６４ｋＢの空間を１６構成することができる。アドレスの「ｘ」はストラッピングピンのデコードすなわちインバースを表すものとすればよい。
【００５２】
ＯＡＲロック４５０からのロックレジスタには以下のものを含み得る。
【００５３】
【表２】
2005515517.tif 000004
【００５４】
一実施形態では、１ビットで書き込みアクセスを制御し、１ビットで読み出しアクセスを制御し、１ビットで他の２ビットが変更されるのを防止する。一実施形態では、ロックビットがセットされると（ロックダウンされた状態とも呼ばれる）、メモリでリセット信号が受信されるまでは書き込みアクセスのビットと読み出しアクセスのビットを再プログラムすることができない。各レジスタのレイアウトには以下のものを含み得る。
【００５５】
【表３】
2005515517.tif 000005
【００５６】
デコードでは、３つのロックビットには以下のものを含む。
【００５７】
【表４】
2005515517.tif 000006
【００５８】
図６に示すセキュリティハードウェア３７０Ｃの実施形態には、ＯＡＲオーバーライドレジスタ４４５も含まれる。ＯＡＲオーバーライドレジスタ４４５は、セキュリティハードウェア３７０Ｃ内のデバイスのうちの１以上に対するアクセスを許可（またはアンロック）および防止（またはロック）するための機構となる。また、ＯＡＲオーバーライドレジスタ４４５はアクセスロック４６０をオーバーライドするための機構にもなる。一実施形態において、ＯＡＲオーバーライドレジスタ４４５は、アクセスロック４６０によってロックされるセキュリティハードウェアへのアクセスが常に利用可能または決して利用できない状態でアクセスロック４６０を無視する第１のインジケータを含む。ＯＡＲオーバーライドレジスタ４４５には、第１のインジケータのステータスを変更できるか否かの第２のインジケータも含み得る。第１のインジケータを変更できない旨が第２のインジケータによって示された場合、変更対象となる第２のインジケータのリセットを、ＯＡＲオーバーライドレジスタ４４５を含むデバイスで必要とする形が好ましい。言葉を変えると、第２のインジケータはアクセスロック４６０の一実施形態と類似のＯＡＲであると好ましい。
【００５９】
アクセスロック４６０および／またはＯＡＲオーバーライドインジケータを使用することを含む方法については、図９Ａ〜図９Ｆを参照して後述する。１以上のアクセスロック４６０のさまざまな実施形態については図１０Ａ〜図１０Ｃに図示し、これらの図を参照して説明する。ＯＡＲオーバーライドレジスタ４４５の実施形態については図１０Ｄに図示し、同図を参照して説明する。
【００６０】
一実施形態において、アクセスロック４６０はオープン・アット・リセット（ＯＡＲ）であり、ＢＩＯＳソフトウェアがセキュリティハードウェア３７０にアクセスできるようにしている。よって、ＢＩＯＳソフトウェアは、図２Ａのブロック１５４で示すブートセクタコードのコール前にアクセスロック４６０をクローズする。さまざまな実施形態において、セキュリティハードウェア３７０へのアクセスを許可すべくアクセスロック４６０を開放する動作についてはソフトウェアまたはハードウェアで行うことができる。たとえば、ＩＣ３６５またはプロセッサ１０２あるいは制御ロジック４２０からの信号によってアクセスロック４６０を開放するようにすることができる。また、ＳＭＩ＃に応答して、あるいはプロセッサ１０２がＳＭＭに入ったことに応答してアクセスロック４６０を開放するようにしても構わない。図９Ａ〜図９Ｃを参照して後述する方法９００Ａ〜９００Ｃのうちの１以上からアクセスロック４６０に関する追加情報を取得することができる。
【００６１】
一実施形態ではセキュリティハードウェア３７０およびＳＭＭ開始レジスタ４２５ＢがすべてＲＴＣバッテリウェル１２５内にある点に注意されたい。他の実施形態では、セキュリティハードウェア３７０の選択されたサブデバイスがＲＴＣバッテリウェル１２５から除外されている。一実施形態では、スクラッチパッドＲＡＭ４４０の一部のみがＲＴＣバッテリウェル１２５内にあり、残りの部分はＲＴＣバッテリウェル１２５の外にある。たとえば、一実施形態では、メイルボックスＲＡＭ４１５がＲＴＣバッテリウェル１２５の外にある。
【００６２】
本発明のさまざまな態様による拡張ＢＩＯＳセキュリティの実施形態を図７Ａおよび図７Ｂに示す。図７Ａでは、ＢＩＯＳ  ＲＯＭ３５５およびＳＭＭ  ＲＯＭ５５０がＬＰＣバス１１８に接続されている。図示のように、シークレット（ｓｅｃｒｅｔ）６１０Ａを含む暗号化プロセッサ３０５がＢＩＯＳ  ＲＯＭ３５５とＬＰＣバス１１８との間に接続されている。図７Ｂでは、ＬＰＣバス１１８に接続された拡張ＢＩＯＳ  ＲＯＭ５５５が図示されている。拡張ＢＩＯＳ  ＲＯＭ５５５はＢＩＯＳ  ＲＯＭ３５５とＳＭＭ  ＲＯＭ５５０とを含む。
【００６３】
コンピュータシステム１００内のＢＩＯＳ  ＲＯＭ３５５のメモリ空間には、６４ｋＢのセグメントに分割された１２８ｋＢから４ＭＢのどこでも含み得る。別の４ＭＢのＳＭＭ  ＲＯＭ５５０の１以上のメモリ空間を、たとえばＲＯＭのメモリ空間の第２のページが別のチップ内にあり、別のセットの識別選択（ＩＤＳＥＬ）ピンによって選択されるページング機構を介してアドレス指定することができる。ＢＩＯＳ  ＲＯＭ３５５のメモリ空間とＳＭＭ  ＲＯＭ５５０のメモリ空間の各セグメントについては、ロック可能かつオープン・アット・リセットなものとすることができる。一実施形態では、アクセス保護機構（すなわちロック）はＢＩＯＳ  ＲＯＭ３５５またはＳＭＭ  ＲＯＭ５５０にインプリメントされるのではなく、図６を参照して上述したようにセキュリティハードウェア３７０Ｃのサウスブリッジ３３０Ｃ内にインプリメントされている。
【００６４】
一実施形態において、ＢＩＯＳ  ＲＯＭ３５５は４ＭＢのメモリ空間を含む。ＢＩＯＳ  ＲＯＭ３５５のメモリ空間に対する読み出しアクセスについてはどの時点でも制限のないようにしてもよい。ＢＩＯＳ  ＲＯＭ３５５のメモリ空間上での書き込みロックをＯＡＲとし、ＬＰＣバス１４５上の３２ビットのアドレス空間内のＦＦＦＦ，ＦＦＦＦｈからＦＦＣ０，００００ｈのメモリ空間をカバーするようにできる。
【００６５】
一実施形態では、暗号化プロセッサ３０５は特殊な暗号ハードウェアを含む特殊なプロセッサである。もうひとつの実施形態では、暗号化プロセッサ３０５は暗号ファームウェアまたはソフトウェアでプログラムされた汎用プロセッサを含む。さらに別の実施形態では、暗号化プロセッサ３０５は特殊な暗号ハードウェアを使って構成変更された汎用プロセッサを含む。
【００６６】
他の実施形態も企図されている。たとえば、ＢＩＯＳ  ＲＯＭ３５５をＬＰＣバス１１８に接続し、暗号化プロセッサ３０５をＳＭＭ  ＲＯＭ５５０とＬＰＣバス１１８との間に接続してもよい。また、暗号化プロセッサ３０５を拡張ＢＩＯＳ  ＲＯＭ５５５とＬＰＣバス１１８との間に接続してもよい。
【００６７】
本発明のさまざまな態様による、セキュアＳＭＭ動作用のＢＩＯＳ  ＲＯＭ３５５およびＳＭＭ  ＲＯＭ５５０の実施形態をそれぞれブロック図の形で図８Ａおよび図８Ｂに示す。図８Ａに示されるように、ＢＩＯＳ  ＲＯＭ３５５には、データストレージ６０８Ｂと、シークレット６１０Ｃと、プライベートメモリ６０６とを含み得る。
【００６８】
図８Ｂに示されるように、ＳＭＭ  ＲＯＭ５５０を、複数のＳＭＭ  ＲＯＭブロック６１５〜６１７と、格納されたシークレット６１０Ｄと、複数のパブリックＲＯＭブロック６２５〜６３０と、１以上の予約ＲＯＭブロック６３５と、１以上のレジスタ６４０とに分割することができる。
【００６９】
複数のＳＭＭ  ＲＯＭブロック６１５〜６１７には、ＳＭＭ  ＲＯＭ  ０ブロック６１５と、ＳＭＭ  ＲＯＭ  １ブロック６１６と、ＳＭＭ  ＲＯＭ  ２ブロック６１７とを含み得る。複数のパブリックＲＯＭブロック６２５〜６３０には、パブリックＲＯＭブロック０  ６２５とパブリックＲＯＭブロック１  ６３０とを含み得る。アクセス権、ロックステータス、ＬＰＣバス１１８空間内の３２ビットアドレス範囲の一実施形態を以下の表にあげておく。
【００７０】
【表５】
2005515517.tif 000007
【００７１】
表中、アドレス範囲の「ｘ」はストラッピングピンデコードまたはそのインバースを表すものとすればよい。一実施形態では、表中のＲＯＭブロック６１５〜６１７および６２５〜６３０は各々６４ｋＢのサイズである。一実施形態において、コンピュータシステムは、５１２ｋＢずつの１６のページに分割された、最大で８ＭＢの拡張ＢＩＯＳ  ＲＯＭ５５５ストレージをサポートすることができる。もうひとつの実施形態では、ＦＦＢｘ，ＦＦＦＦｈからＦＦＢｘ，００００ｈまでのメモリアドレスの範囲に、複数のＳＭＭ  ＲＯＭブロック６１５〜６１７と、複数のパブリックＲＯＭブロック６２５〜６３０と、１以上のレジスタ６４０とが含まれる。１以上の予約ＲＯＭブロック６３５を使用して将来の拡張に備えるようにしてもよい。１以上のレジスタ６４０には必要に応じて別のデータを格納してもよい。
【００７２】
ロックされている場合があるセキュリティハードウェア３７０にアクセスしようとする、本発明のさまざまな態様による方法９００Ａ〜９００Ｇの実施形態のフローチャートを図９Ａ〜図９Ｇに示す。図９Ａは、ブート（またはコールドリブート）プロセスの一部としてセキュリティハードウェア３７０をロックする方法９００Ａを示している。図９Ｂは、リブート（またはウォームブート）プロセスの一部としてセキュリティハードウェア３７０をアンロックした後、ロックする方法９００Ｂを示している。図９Ｃは、セキュリティハードウェア３７０をロックまたはアンロックする権利をチェックし、かつ、この権利の変更をディスエーブルにするビットをチェックする方法９００Ｃを示している。図９Ｄは、コンピュータシステム１００がＳＭＭにない間にセキュリティハードウェア３７０を使用しようとする方法９００Ｄを示している。図９Ｅは、ＯＡＲアクセスロック４６０のロックをチェックおよび／または設定し、かつロックの変更をディスエーブルにするビットをチェックする方法９００Ｅを示している。図９Ｆは、コンピュータシステム１００がＳＭＭにあるときにセキュリティハードウェア３７０をアンロックした後、ロックする方法９００Ｆを示している。図９Ｇは、コンピュータシステム１００がＳＭＭにあるときにセキュリティハードウェア３７０をアンロックした後、ロックする権利をチェックする方法９００Ｇを示している。
【００７３】
ここで図９Ａを参照すると、方法９００Ａは、ブロック９２０でプロセッサがＲＡＭメモリ内のＳＭＭ空間からのＢＩＯＳコード命令を実行することを含む。プロセッサによって実行されるＢＩＯＳコードは、ブロック９２５でパワーオンセルフテスト（ＰＯＳＴ）を行う。方法９００Ａは、ブロック９３０でセキュリティハードウェア３７０にアクセスすることを含む。セキュリティハードウェア３７０がオープン・アット・リセットではない場合、コンピュータのハードウェア３７０にアクセスがなされるとセキュリティハードウェア３７０のアンロックが開始されるようにしてもよい。セキュリティハードウェア３７０へのアクセスは、ＢＩＯＳコードによって行ってもよいし、コンピュータシステム１００内の他のデバイスまたはサブシステムによって行ってもよく、あるいは許可されるのであればコンピュータシステム１００の外から行うようにしても構わない。方法９００Ａは、任意にブロック９３２でＢＩＯＳ管理モードに入ることを含むものであってもよい。ＢＩＯＳ管理モードは、たとえば、リモートブート命令、ブートシーケンス継続のリモートパーミッションまたはセキュアパーミッション、他の遠隔操作またはハードウェアへのリモートアクセスまたはハードウェアのリモートセットアップ、あるいはブートの仕方をハードウェアコンフィギュレーションおよび／またはオペレーティングシステムまたは他のソフトウェアなどのいくつかの選択肢から選択できるようにすることができる。
【００７４】
次に、ブロック９３５において、ＢＩＯＳコードがビデオコントローラやＩＤＥコントローラ、ＳＣＳＩコントローラなどから別のＢＩＯＳコードを探し、スタートアップ情報の画面を表示する。一例として、ビデオコントローラのＢＩＯＳはＣ０００ｈにあることが多いのに対し、ＩＤＥコントローラのＢＩＯＳコードはＣ８００ｈにあることが多い。ＢＩＯＳコードは、ＲＡＭメモリのカウントアップテストや、ＣＯＭ（シリアル）ポートとＬＰＴ（パラレル）ポートの識別をはじめとするシステムインベントリなどの別のシステムテストをブロック９４０にて行うものであってもよい。また、ＢＩＯＳコードは、ブロック９４５でプラグアンドプレイデバイスや他の同様のデバイスを識別した後、識別したデバイスの概要を示す画面を表示する。
【００７５】
この方法は、ブロック９５０でセキュリティハードウェアへのアクセスロックをクローズすることを含む。ＢＩＯＳコードまたはもうひとつのデバイスあるいはコンピュータシステム１００のエージェントがアクセスロックをクローズすることができる。ブロック９５５ではＢＩＯＳコードがブート位置とこれに対応するブートセクタとを識別する。ブート位置は、フロッピードライブ、ハードドライブ、ＣＤＲＯＭ、リモートロケーションなどに存在し得る。次に、ブロック９６０でＢＩＯＳコードはブート位置のブートセクタコードをコールし、たとえばオペレーティングシステムでコンピュータシステムをブートする。
【００７６】
ここで図９Ｂを参照すると、方法９００Ｂは、ブロック９１５でセキュリティハードウェアに対するアクセスロックを開放することを含む。ブロック９２０ではプロセッサがＲＡＭメモリ内のＳＭＭ空間からのＢＩＯＳコード命令を実行する。ブロック９３０ではブート時のＳＭＭの間にコンピュータシステムがセキュリティハードウェア３７０にアクセスする。方法９００Ｂは、任意にブロック９３２でＢＩＯＳ管理モードに入ることを含むものであってもよい。
【００７７】
次に、ブロック９３５において、ＢＩＯＳコードがビデオコントローラやＩＤＥコントローラ、ＳＣＳＩコントローラなどから別のＢＩＯＳコードを探し、スタートアップ情報の画面を表示する。一例として、ビデオコントローラのＢＩＯＳはＣ０００ｈにあることが多いのに対し、ＩＤＥコントローラのＢＩＯＳコードはＣ８００ｈにあることが多い。ＢＩＯＳコードは、ブロック９４５でプラグアンドプレイデバイスや他の同様のデバイスを識別した後、識別したデバイスの概要を示す画面を表示する。
【００７８】
ブロック９５０ではＢＩＯＳコードがセキュリティハードウェアへのアクセスロックをクローズする。ブロック９５５ではＢＩＯＳコードがブート位置とこれに対応するブートセクタとを識別する。ブート位置は、フロッピードライブ、ハードドライブ、ＣＤＲＯＭ、リモートロケーションなどに存在し得る。次に、ブロック９６０でＢＩＯＳコードはブート位置のブートセクタコードをコールし、たとえばオペレーティングシステムでコンピュータシステムをブートする。
【００７９】
ここで図９Ｃに移り、方法９００Ｃは、判断ブロック９４６でＯＡＲロックを設定するか否かを判断することを含む。判断ブロック９４６のＯＡＲロックは、図６を参照して上述した第１のインジケータに対応するものであってもよい。また、判断ブロック９４６のＯＡＲロックは、図１０Ｄを参照して後述するＯＡＲロックオーバーライドビット１０５０を設定することに対応するものであってもよい。ＯＡＲロックを設定するという判断に至った場合は、一実施形態によればブロック９４７においてセキュリティハードウェア３７０へのすべてのアクセスをブロックする。ＯＡＲロックを設定しないという判断に至った場合は、方法９００Ｃは判断ブロック９４８に移る。判断ブロック９４８では、方法９００ＣはＯＡＲロック変更ビットを設定するか否かを判断する。判断ブロック９４８のＯＡＲロック変更ビットは、図６を参照して上述した第２のインジケータに対応するものであってもよい。また、判断ブロック９４８のＯＡＲロック変更ビットは、図１０Ｄを参照して後述する変更ＯＡＲロックオーバーライドビット１０５５を設定することに対応するものであってもよい。判断ブロック９４８でＯＡＲロック変更ビットを設定するという判断に至った場合は、一実施形態によれば、ブロック９４９でＯＡＲロックの変更自体がロックされているため、その後ＯＡＲロックを変更することはできない。
【００８０】
ここで図９Ｄに移ると、方法９００Ｄは、ブロック９０４においてプロセッサ１０２などのプロセッサをＳＭＭ以外のモードで動作させることを含む。ブロック９０６では、プロセッサによって処理されるコードは、セキュリティハードウェア３７０あるいは、アクセスロック４６０に類似のアクセスロックのチェックを行わないとアクセスできないことがある他のハードウェアのいずれにもアクセスしようとする。この方法では、判断ブロック９０７において、セキュリティハードウェア３７０を利用できるか否かを確認するためのチェックを行う。判断ブロック９０７でセキュリティハードウェア３７０を利用できない場合、方法９００Ｄは終了するかリターンする。判断ブロック９０７でセキュリティハードウェア３７０を利用できる場合は、方法９６０Ｄはブロック９３０でセキュリティハードウェア３７０にアクセスする。任意に、この方法は、必要に応じてブロック９５０でセキュリティハードウェアへのアクセスロックをクローズすることを含む。
【００８１】
ここで図９Ｅに移ると、方法９００Ｅは、図９Ｄの判断ブロック９０７の実施形態を含む。方法９００Ｅは、判断ブロック９９０においてすべてのセキュリティハードウェアへのアクセスがロックアウトされているか、すなわち禁じられているか否かをチェックすることを含む。すべてのセキュリティハードウェアへのアクセスがロックアウトされている場合は、判断ブロック９９０において方法９００Ｅは判断ブロック９９２に移る。すべてのセキュリティハードウェアへのアクセスがロックアウトされていない場合は、方法９００Ｅは判断ブロック９９１に移る。判断ブロック９９１では、方法９００Ｅは要求されたセキュリティハードウェアがロックアウトされているか否かを（１以上のアクセスロックを別途使用するなどして）チェックする。
【００８２】
要求されたセキュリティハードウェアがロックアウトされている場合は、方法９６０Ｅは判断ブロック９９２に移る。要求されたセキュリティハードウェアがロックアウトされていない場合は、方法９６０Ｅは直接ブロック９９３に移る。判断ブロック９９２では、方法９６０Ｅは要求されたセキュリティハードウェアのアクセスロックを、たとえばアンロックするなどの形で変更可能であるか否かをチェックする。要求されたセキュリティハードウェアのアクセスロックを変更できない場合は、判断ブロック９９２において方法９００Ｅはセキュリティハードウェアへのアクセスを中止する。要求されたセキュリティハードウェアのアクセスロックを変更できる場合は、方法９００Ｅは、要求されたセキュリティハードウェアのアクセスロックを判断ブロック９９３で変更すべく、たとえばユーザからの承認を判断ブロック９９２において要求する。要求されたセキュリティハードウェアのアクセスロックの変更承認が得られなかった場合は、方法９００Ｅはセキュリティハードウェアへのアクセスを中止する。要求されたセキュリティハードウェアのアクセスロック変更の承認が得られた場合は、方法９００Ｅはブロック９９４に移り、ロックを変更して要求されたセキュリティハードウェアへのアクセスを許可する。
【００８３】
判断ブロック９９３ではどのような承認方法を使用してもよい点に注意されたい。オブザーバによる監視下でセキュリティ性を持つ従来技術において周知の承認方法を使用してもよい。
【００８４】
ここで図９Ｆに移ると、方法９００Ｆは、ブロック９０５においてＲＡＭメモリ内のＳＭＭ空間にプロセッサがコード命令をロードすることを含む。このＳＭＭ空間へのコード命令のロードについては、たとえばＳＭＩ＃に応答して行うようにすることができる。ブロック９１５ではセキュリティハードウェアに対するアクセスロックを開放する。アクセスロックの開放については、ＳＭＭコード命令によって行ってもよいし、ハードウェア機構で行ってもよく、両方で行ってもよい。
【００８５】
ブロック９２０ではプロセッサがＲＡＭメモリ内のＳＭＭ空間からのコード命令を処理する。方法９００Ｆは、ブロック９３０でセキュリティハードウェア３７０にアクセスすることを含む。コンピュータシステムがＳＭＭにあり、アクセスロックはブロック９１５においてすでに開放されているため、コンピュータシステム１００のサブシステムの大半またはすべてが必要に応じてセキュリティハードウェアを利用できる状態にある。
【００８６】
方法９００Ｆは、ブロック９５０でセキュリティハードウェア３７０へのアクセスロックをクローズすることを含む。ブロック９６５ではプロセッサが前の状態をリロードし、動作を継続する。ブロック９３０で説明した動作を行いながらブロック９２０でのＳＭＭコード命令の処理を継続してもよい点に注意されたい。好ましくは、ブロック９２０におけるＳＭＭコード命令の処理の終了後にブロック９５０で説明した動作を行う。
【００８７】
ここで図９Ｇに移ると、方法９００Ｇは、ブロック９０５においてＲＡＭメモリ内のＳＭＭ空間にプロセッサがコード命令をロードすることを含む。このＳＭＭ空間へのコード命令のロードについては、たとえばＳＭＩ＃に応答して行うようにすることができる。次に、方法９００Ｇはセキュリティハードウェアを利用できるか否かを判断ブロック９０７においてチェックする。セキュリティハードウェアを利用できない場合は、判断ブロック９０７で方法９００Ｇはセキュリティハードウェアへのアクセスを中止する。セキュリティハードウェアを利用できる場合は、方法９００Ｇはブロック９２０へと進む。
【００８８】
ブロック９２０ではプロセッサがＲＡＭメモリ内のＳＭＭ空間からのコード命令を実行する。方法９００Ｆは、ブロック９３０でセキュリティハードウェア３７０にアクセスすることを含む。コンピュータシステムがＳＭＭにあり、アクセスロックは判断ブロック９０７での判断時に開放されているため、コンピュータシステム１００のサブシステムの大半またはすべてが必要に応じてセキュリティハードウェアを利用できる状態にある。
【００８９】
方法９００Ｇは、ブロック９５０でセキュリティハードウェア３７０へのアクセスロックをクローズすることを含む。ブロック９６５ではプロセッサが前の状態をリロードし、動作を継続する。ブロック９３０で説明した動作を行いながらブロック９２０でのＳＭＭコード命令の実行を継続してもよい点に注意されたい。好ましくは、ブロック９２０におけるＳＭＭコード命令の処理の終了後にブロック９５０で説明した動作を行う。
【００９０】
セキュリティハードウェア３７０をロックおよびアンロックする、アクセスロック以外のプロセスを利用してもよい点に注意されたい。方法９００Ａ〜９００Ｇは、こうした他のプロセスにも及ぶことを想定したものである。
【００９１】
本開示の目的で、コンピュータシステムには通常モードとＳＭＭの２種類の動作モードがあるものとする。ＳＭＭではないブートフェーズがあるが、これらのフェーズは、定義によればＳＭＭと同じように信頼されているため、本願明細書ではＳＭＭに匹敵すると見なす。ＳＭＭをどのように機能させるかをブートコードによってコンフィギュレーションおよびアレンジする。ＳＭＭの信頼性はブートコードの信頼性から得られるものである。標準的なブートシーケンスを有効にできることが企図される。バリエーションとしては、パラメータをユーザが入力できるようにするセットアップ環境への移行があげられる。入力パラメータを用いることで、たとえば、ＢＩＯＳコードを修正することが可能である。大半のセットアップ環境ではオペレーティングシステムをロードして通常モードで動作する前にリセットに戻る。これはオペレーティングシステムをロードすることに代わる管理コードの一形態であって、通常モードの一部ではない。意図したとおり、このモードではアクセスロックは設定されない。これはブートプロセスの一部であってＳＭＭと同じように信頼されているが、セットアップ環境内部でリモートアクセスが可能なのであれば、セキュリティ対策をとることもできる。
【００９２】
図６に示すアクセスロック４６０の実施形態４６０Ａ、４６０Ｂ、４６０Ｃをブロック図の形で図１０Ａ、図１０Ｂ、図１０Ｃに示す。図１０Ｄには、図６からＯＡＲオーバーライドレジスタ４５５の実施形態のブロック図を示す。図１０Ａに示す実施形態４６０Ａでは、１以上のアクセスロック４６０に隔離ビットレジスタ１００５が含まれる。隔離ビットレジスタ１００５に格納されたビットは、フラグとして設定またはクリアできるものである。図１０Ｂに示す実施形態４６０Ｂでは、１以上のアクセスロック４６０に、セキュリティハードウェア３７０内のすべてのデバイスをロックまたはアンロックするための２以上の隔離用ビットを格納するように構成された隔離レジスタが２以上含まれる。隔離レジスタ１００５に格納された隔離ビットに優先される別のビットによって、特権のロック用のフラグビットとアンロック用のフラグビットとを別々にすることが可能になる。たとえば、書き込み特権をロックすることができる間に、読み出し特権をアンロックすることができる。図１０Ｃの実施形態では、１以上のアクセスロック４６０に、セキュリティハードウェア３７０Ｃ内のデバイスごとに１以上の隔離レジスタ１０１５Ａ〜１０１５Ｎが含まれる。
【００９３】
図１０Ｄでは、少なくとも１つのＯＡＲロックオーバーライドビットを格納するＯＡＲロックオーバーライドレジスタ１０５０と、少なくとも１つの変更ＯＡＲロックオーバーライドビットを格納する変更ＯＡＲロックオーバーライドレジスタ１０５５とがＯＡＲオーバーライド４４５に含まれる。本発明の一実施形態によれば、ＯＡＲロックオーバーライドビットが設定されていない場合、セキュリティハードウェア３７０へのアクセスはアクセスロック４６０の設定に応じて判断される。ＯＡＲロックオーバーライドビットが設定されている場合は、実装に応じてセキュリティハードウェア３７０が常に利用可能または決して利用できないことを優先して、アクセスロック４６０は無視される。好ましくは、ＯＡＲロックオーバーライドビットが設定されている間はセキュリティハードウェアは決して利用できない。ＯＡＲロックオーバーライドビットの設定は、変更ＯＡＲロックオーバーライドビットが設定されていなくてもＳＭＭで（あるいは承認付きで）変更できるようにしてもよい。好ましくは、変更ＯＡＲロックオーバーライドビットはアクセスロック４６０の一実施形態と同様にＯＡＲであり、さまざまな実施形態では、たとえばブロック９５０でブート時間にアクセスロック４６０を用いて設定できるものである。
【００９４】
本発明のさまざまな態様による、ストレージへのセキュアアクセスのための方法１１００Ａ、１１００Ｂ、１１１０Ａ、１１２０の実施形態のフローチャートを、図１１Ａ、図１１Ｂ、図１２、図１３に示す。図１１Ａは、記憶装置へのセキュアアクセスをセキュリティデバイスによって管理する、本発明の一態様による方法１１００Ａのフローチャートを示している。図１１Ｂは、メモリへのセキュアアクセスを暗号化プロセッサによって管理する、本発明の一態様による方法１１００Ｂのフローチャートを示している。図１２は、チャレンジレスポンス認証プロトコルを使用し、セキュリティデバイスによって記憶装置に対するセキュアアクセス制御を行う、本発明の一態様による方法１１１０Ａのフローチャートを示している。図１３は、シークレットを使ってセキュア記憶装置へのデータアクセスをアンロックする方法１１２０のフローチャートを示している。
【００９５】
図１１Ａに移ると、方法１１００Ａは、セキュリティデバイスに接続された記憶装置に関連した格納位置に対するトランザクション要求をセキュリティデバイスで受信する（ブロック１１０５Ａ）ことを含む。セキュリティデバイスは、記憶装置に対するアクセス制御を提供する（ブロック１１１０Ａ）。ブロック１１１０Ａに示すアクセス制御の一実施形態を、図１２に示す方法１１００Ｂによって例示する。
【００９６】
方法１１００Ａによれば、セキュリティデバイスは、記憶装置のアドレスマッピングに従ってトランザクション要求における格納位置をマップする（ブロック１１１５Ａ）。セキュリティデバイスは記憶装置にトランザクション要求を提供する（ブロック１１２０Ａ）。通常の状況下では、要求されたトランザクションを記憶装置が行うことになる（ブロック１１２５Ａ）。
【００９７】
さまざまな実施形態において、記憶装置に対するセキュリティを提供するように構成された暗号化プロセッサまたはロジックのブロックを、方法１１００Ａに関連したセキュリティデバイスに含み得る。記憶装置としては、メモリあるいは、ハードドライブまたはオプティカルドライブといった磁気記憶媒体または光記憶媒体などの電子記憶媒体があげられる。メモリとしては、ＲＡＭ、ＲＯＭ、あるいはフラッシュメモリがあげられる。ハードドライブまたはオプティカルドライブは、固定であっても着脱自在であってもよい。トランザクション要求には、たとえば、読み出し要求、書き込み要求あるいは読み出し要求と書き込み要求との組み合わせを含み得る。さまざまな実施形態において、メモリ（または記憶装置）はさらに、それ自体のセキュリティハードウェアを含むものであってもよい点に注意されたい。
【００９８】
図１１Ｂに移ると、方法１１００Ｂは、暗号化プロセッサに接続されたメモリに関連した記憶位置に対するトランザクション要求を暗号化プロセッサで受信する（ブロック１１０５Ｂ）ことを含む。暗号化プロセッサはメモリに対するアクセス制御を提供する（ブロック１１１OＢ）。ブロック１１１０Ｂに示すアクセス制御の一実施形態を図１２に例示する。
【００９９】
方法１１００Ｂによれば、暗号化プロセッサは、メモリのアドレスマッピングに従ってトランザクション要求における記憶位置をマップする（ブロック１１１５Ｂ）。暗号化プロセッサはメモリにトランザクション要求を提供する（ブロック１１２０Ｂ）。通常の状況下では、要求されたトランザクションをメモリが行うことになる（ブロック１１２５Ｂ）。
【０１００】
図１２に移ると、方法１１１０Ａは、ロックが格納位置に合ったしかるべき場所にあるか否かをセキュリティデバイスで判断する（ブロック１２０５）ことを含む。その格納位置に対するトランザクション要求が受信されている場合もある。ロックがしかるべき場所にない（ブロック１２１０）場合、方法１１１０Ａは認証部分を通過する。ロックがしかるべき場所にある（ブロック１２１０）場合、セキュリティデバイスは格納位置に対するチャレンジを提供する（ブロック１２１５）。チャレンジについては、格納位置あるいは格納位置を含む記憶装置に関連させておくことができる。このチャレンジはトランザクション要求に応答するものであってもよい。次に、セキュリティデバイスがチャレンジに対する応答を受信する（ブロック１２２０）。セキュリティデバイスは、この応答を想定される応答と比較することでこれを評価する（ブロック１２２５）。評価が正しくない（ブロック１２３０）場合、この方法は終了する。評価が正しい（ブロック１２３０）場合、この方法は、セキュリティデバイスから記憶装置へのトランザクション要求の提供に進む（ブロック１２３５）。
【０１０１】
さまざまな実施形態において、記憶装置に対するセキュリティを提供するように構成された暗号化プロセッサまたはロジックのブロックを、方法１１１０Ａに関連したセキュリティデバイスに含み得る。記憶装置としては、メモリあるいは、ハードドライブまたはオプティカルドライブといった磁気記憶媒体または光記憶媒体などの電子記憶媒体があげられる。メモリとしては、ＲＡＭ、ＲＯＭ、あるいはフラッシュメモリがあげられる。ハードドライブまたはオプティカルドライブは、固定であっても着脱自在であってもよい。トランザクション要求には、たとえば、読み出し要求、書き込み要求あるいは読み出し要求と書き込み要求との組み合わせを含み得る。
【０１０２】
図１３を参照すると、方法１１２０は、記憶装置にシークレットを格納する（ブロック１３０５）ことを含む。記憶装置は物理的なデバイスの一部のみを含むものであってもよい。記憶装置自体を従来技術において周知のいずれかの記憶装置として実現するようにしてもよい。また、この方法１１２０は、データを記憶装置に格納（ブロック１３１０）し、コードを記憶装置に格納する（ブロック１３１５）ことを含むものであってもよい。さらに、方法１１２０は、記憶装置に格納されたデータまたは記憶装置自体を守るためのロック（単数または複数のロックビットなど）を提供する（ブロック１３１５）ことを含むものであってもよい。方法１１２０の上記のステップ（ブロック１３０５〜１３２０）は、記憶装置の製造時、インストール時または初期化時など、時間的に比較的近いタイミングで行い得るものである。
【０１０３】
方法１１２０には、たとえば記憶装置を含むコンピュータシステムまたは記憶装置と通信するように接続されたコンピュータシステムのブート時など、記憶装置からシークレットを読み取る（ブロック１３２５）ことも含まれる。シークレットをセキュアな状態に維持するには、記憶装置がセキュアな構成または信頼できる構成のときにシークレットの読み出しを行うと好ましい。また、方法１１２０では、記憶装置からコードを読み出すこともできる（ブロック１３３０）。方法１１２０は、シークレットをセキュアな位置に格納（ブロック１３２５）し、コードをセキュアな位置に格納（ブロック１３３０）することもできる。セキュアな場所は上述したＳＭＭメモリ空間にあってもよいし、セキュアメモリ内、レジスタ内にあってもよく、プロセッサ１０２内またはサウスブリッジ３３０内などコンピュータシステム１００の他の格納位置内にあってもよい。
【０１０４】
さまざまな実施形態において、メモリあるいは、ハードドライブまたはオプティカルドライブといった磁気記憶媒体または光記憶媒体などの電子記憶媒体を、方法１１２０に関連した記憶装置に含み得る。メモリとしては、ＲＡＭ、ＲＯＭ、あるいはフラッシュメモリがあげられる。ハードドライブまたはオプティカルドライブは、固定であっても着脱自在であってもよい。方法１１２０における読み出しは、たとえば、読み出し要求、書き込み要求あるいは読み出し要求と書き込み要求との組み合わせなど、どのようなトランザクション要求についてのものでもよい。
【０１０５】
本願開示の目的において、ＲＯＭについて説明した内容は、フラッシュメモリや他の実質的に不揮発性のメモリタイプにも適用されるものとする。以上、本願明細書に開示の本発明の方法をフローチャートの形で説明してきたが、さまざまな実施形態においてこれらのフローチャートのさまざまな要素を省略または異なる順序で実行してもよい点に注意されたい。また、本願に開示の本発明の方法では実施例のバリエーションを認めている点にも注意されたい。
【０１０６】
上記に開示したような本発明のいくつかの態様は、ハードウェアまたはソフトウェアで実現できるものである。したがって、結果として本願明細書に記載の詳細な説明の内容については、ハードウェアで実現できるプロセスに関するものもあれば、コンピュータシステムまたはコンピューティングデバイスのメモリ内のデータビットについての動作を記号的に表現した内容に関係のある、ソフトウェアで実現できるプロセスに関するものもある。これらの説明および表現は、当業者らが自分たちの行っている作業の内容を、ハードウェアとソフトウェアの両方を使用している他の当業者に最も効率よく伝達するのに使用する手段である。両方のプロセスおよび動作には物理的な量を物理的に操作する必要がある。ソフトウェアでは、必ずしも必要というわけではないが、これらの量は格納や転送、結合、比較、あるいは操作が可能な電気信号や磁気信号、あるいは光信号の形態をとるのが普通である。主に一般利用の観点から、場合によってはこれらの信号をビットや値、エレメント、シンボル、文字、項、数などで参照すると都合がよいことが明らかになっている。
【０１０７】
しかしながら、上記の用語および同様の用語はすべてしかるべき物理的な量に関連付けられるものであり、これらの量に付される都合のよいラベルにすぎない点に留意すべきである。特に明記する場合または自明であろうと思われる場合を除き、本願開示全体を通して、これらの説明は、いくつかの電子デバイスのストレージ内で物理的な（電子的、磁気的または光学的）量として表されるデータを操作し、ストレージ内あるいは送信デバイスまたはディスプレイデバイスで同様に物理的な量として表される他のデータに変換する電子デバイスの行為およびプロセスについてのものである。このような説明を示す代表的な用語としては、「ｐｒｏｃｅｓｓｉｎｇ（処理する／処理／プロセッシング）」、「ｃｏｍｐｕｔｉｎｇ（コンピューティング）」、「ｃａｌｃｕｌａｔｉｎｇ（計算する／計算）」、「ｄｅｔｅｒｍｉｎｉｎｇ（判断する／判定する／判断／判定）」、「ｄｉｓｐｌａｙｉｎｇ（表示する／表示）」などの用語があるが、これに限定されるものではない。
【０１０８】
また、ソフトウェアで実現される本発明の態様は一般に、何らかの形のプログラム格納媒体でエンコードされるか、何らかのタイプの送信媒体を使って実現される点に注意されたい。プログラム格納媒体としては、磁気（フロッピーディスクまたはハードドライブなど）または光（コンパクトディスク読み出し専用メモリすなわち「ＣＤ  ＲＯＭ」など）があげられ、読み出し専用メモリであってもランダムアクセスメモリであってもよい。同様に、送信媒体はツイストペア線であってもよいし、同軸ケーブル、光ファイバまたは従来技術において周知の他の何らかの好適な送信媒体であってもよい。本発明は特定の実施例のいずれの態様にも限定されるものではない。
【０１０９】
本発明は本願明細書の教示内容の利益を享受する当業者らに自明の上記とは異なるが等価な方法で改変および実施することのできるものであるため、上記にて開示した個々の実施形態は一例にすぎない。さらに、添付の請求の範囲に記載したものを除き、本願明細書に図示した構成または設計の詳細に対する限定を何ら意図するものではない。したがって、上記にて開示した個々の実施形態を変更または改変してもよく、そのような変形例はいずれも本発明の範囲に包含されるとみなせることは明白である。よって、本願明細書で求める保護は添付の請求の範囲に記載のとおりである。
【図面の簡単な説明】
【０１１０】
【図１Ａ】従来技術のコンピュータシステムのブロック図である。
【図１Ｂ】従来技術のサウスブリッジのブロック図である。
【図２Ａ】ＲＯＭに格納されたコードを使ってコンピュータシステムを動作させるための従来技術の方法のフローチャートである。
【図２Ｂ】ＲＯＭに格納されたコードを使ってコンピュータシステムを動作させるための従来技術の方法のフローチャートである。
【図３】本発明の一態様による、セキュア実行ボックスを有するコンピュータシステムにおけるデータ・コマンドフローの実施形態のフローチャートである。
【図４】本発明の一態様による、サウスブリッジ内のセキュリティハードウェアと暗号化プロセッサとを含むコンピュータシステムの実施形態のブロック図である。
【図５Ａ】本発明の多様な態様による、ＳＭＭを制御するためのセキュリティハードウェアを含むサウスブリッジの実施形態のブロック図である。
【図５Ｂ】本発明の多様な態様による、ＳＭＭを制御するためのセキュリティハードウェアを含むサウスブリッジの実施形態のブロック図である。
【図６】本発明の一態様による、セキュアＳＭＭ動作用のセキュリティハードウェアを含むサウスブリッジの実施形態のブロック図である。
【図７Ａ】本発明の多様な態様によるセキュアメモリの実施形態を示す図である。
【図７Ｂ】本発明の多様な態様によるセキュアメモリの実施形態を示す図である。
【図８Ａ】本発明の多様な態様による、セキュアＳＭＭ動作用のＢＩＯＳ  ＲＯＭの実施形態のブロック図である。
【図８Ｂ】本発明の多様な態様による、セキュアＳＭＭ動作用のＳＭＭ  ＲＯＭの実施形態のブロック図である。
【図９Ａ】本発明の多様な態様による、ロックすることのできるセキュリティハードウェアにアクセスするための方法の実施形態のフローチャートである。
【図９Ｂ】本発明の多様な態様による、ロックすることのできるセキュリティハードウェアにアクセスするための方法の実施形態のフローチャートである。
【図９Ｃ】本発明の多様な態様による、ロックすることのできるセキュリティハードウェアにアクセスするための方法の実施形態のフローチャートである。
【図９Ｄ】本発明の多様な態様による、ロックすることのできるセキュリティハードウェアにアクセスするための方法の実施形態のフローチャートである。
【図９Ｅ】本発明の多様な態様による、ロックすることのできるセキュリティハードウェアにアクセスするための方法の実施形態のフローチャートである。
【図９Ｆ】本発明の多様な態様による、ロックすることのできるセキュリティハードウェアにアクセスするための方法の実施形態のフローチャートである。
【図９Ｇ】本発明の多様な態様による、ロックすることのできるセキュリティハードウェアにアクセスするための方法の実施形態のフローチャートである。
【図１０Ａ】本発明の多様な態様による、図６に示すアクセスロック４６０の実施形態のブロック図である。
【図１０Ｂ】本発明の多様な態様による、図６に示すアクセスロック４６０の実施形態のブロック図である。
【図１０Ｃ】本発明の多様な態様による、図６に示すアクセスロック４６０の実施形態のブロック図である。
【図１０Ｄ】本発明の多様な態様による、オーバーライドレジスタの実施形態のブロック図である。
【図１１Ａ】本発明の多様な態様による、ストレージに対するセキュアアクセスのための方法の実施形態のフローチャートである。
【図１１Ｂ】本発明の多様な態様による、ストレージに対するセキュアアクセスのための方法の実施形態のフローチャートである。
【図１２】本発明の多様な態様による、ストレージに対するセキュアアクセスのための方法の実施形態のフローチャートである。
【図１３】本発明の多様な態様による、ストレージに対するセキュアアクセスのための方法の実施形態のフローチャートである。
【図１Ａ】
2005515517.tif 000008
【図１Ｂ】
2005515517.tif 000009
【図２Ａ】
2005515517.tif 000010
【図２Ｂ】
2005515517.tif 000011
【図３】
2005515517.tif 000012
【図４】
2005515517.tif 000013
【図５Ａ】
2005515517.tif 000014
【図５Ｂ】
2005515517.tif 000015
【図６】
2005515517.tif 000016
【図７Ａ】
2005515517.tif 000017
【図７Ｂ】
2005515517.tif 000018
【図８Ａ】
2005515517.tif 000019
【図８Ｂ】
2005515517.tif 000020
【図９Ａ】
2005515517.tif 000021
【図９Ｂ】
2005515517.tif 000022
【図９Ｃ】
2005515517.tif 000023
【図９Ｄ】
2005515517.tif 000024
【図９Ｅ】
2005515517.tif 000025
【図９Ｆ】
2005515517.tif 000026
【図９Ｇ】
2005515517.tif 000027
【図１０Ａ】
2005515517.tif 000028
【図１０Ｂ】
2005515517.tif 000029
【図１０Ｃ】
2005515517.tif 000030
【図１０Ｄ】
2005515517.tif 000031
【図１１Ａ】
2005515517.tif 000032
【図１１Ｂ】
2005515517.tif 000033
【図１２】
2005515517.tif 000034
【図１３】
2005515517.tif 000035
【国際調査報告】
2005515517.tif 000036
2005515517.tif 000037
2005515517.tif 000038
2005515517.tif 000039
2005515517.tif 000040
2005515517.tif 000041