(57)【要約】      （修正有）【課題】検査されたデータが、データ記憶媒体から実際に読み出されたものであり、なんらかのマルウエアによって不当に提供されたものではないことを保証する。【解決手段】計算装置１０２は、インバンド・プロセッサ１１０と、リモートサーバ１０４と情報をやり取りする通信回路１１６と、オペレーション・システムの状態に関わらず、通信回路１１６を用いてリモートサーバ１０４と情報をやり取りすることができるアウト・オブ・バンド・プロセッサ１２４とを備える。アウト・オブ・バンド・プロセッサ１２４は、リモートサーバ１０４からブロック読み出し要求を受信し、少なくとも１つのホストドライバに指示して、データ記憶装置１２０にストレージ命令を送信させ、データ記憶装置１２０から読み出されたデータと、データ記憶装置１２０によって生成された認証メタデータとを受信し、データおよび認証メタデータを、リモートサーバ１０４に送信する。【選択図】図１
2011253525.tif 000002
【特許請求の範囲】
【請求項１】
計算装置上で動作し、前記計算装置のオペレーション・システムの状態に関わらず、リモートサーバ・ドライバと情報をやり取りすることができるアウト・オブ・バンドエージェント（ＯＯＢエージェント）を用いて、リモートサーバから、ブロック読み出し要求を受信する段階と、
前記ブロック読み出し要求の受信に応じて、前記計算装置のホストドライバを用いて、データ記憶装置にストレージ命令を送信する段階と、
前記ストレージ命令に応じて、前記データ記憶装置から読み出されたデータと、前記データ記憶装置により生成された認証メタデータとを受信する段階と、
前記認証メタデータを用いて、前記ＯＯＢエージェントまたは前記リモートサーバ・ドライバにより前記データを検証する段階と、
を有する方法。
【請求項２】
前記ＯＯＢエージェントを用いて、前記リモートサーバから、前記ブロック読み出し要求を受信する段階は、前記計算装置のＯＯＢプロセッサ上で動作するファームウエア・モジュールを用いて、前記ブロック読み出し要求を受信する段階を含む、
請求項１に記載の方法。
【請求項３】
前記ＯＯＢエージェントを用いて、前記リモートサーバ・ドライバから、前記ブロック読み出し要求を受信する段階は、前記計算装置の前記オペレーション・システムが動作していない間に、前記ブロック読み出し要求を受信する段階を含む、
請求項１に記載の方法。
【請求項４】
前記データ記憶装置に前記ストレージ命令を送信する段階は、前記計算装置の基本入出力システム（ＢＩＯＳ）ドライバを用いて、前記ストレージ命令を生成する段階を含む、
請求項３に記載の方法。
【請求項５】
前記データ記憶装置に前記ストレージ命令を送信する段階は、前記計算装置のアドバンスド・ホストコントローラ・インターフェース（ＡＨＣＩ）ドライバを用いて、前記ストレージ命令を送信する段階を含む、
請求項１に記載の方法。
【請求項６】
前記データ記憶装置によって生成された認証メタデータを受信する段階は、前記データ記憶装置から読み出された前記データに適用された鍵付きハッシュ関数の出力を受信する段階を含む、
請求項１に記載の方法。
【請求項７】
前記認証メタデータを用いて、前記ＯＯＢエージェントまたは前記リモートサーバ・ドライバにより前記データを検証する段階は、前記鍵付きハッシュ関数を前記データに再適用して、前記鍵付きハッシュ関数の出力を、前記認証メタデータと比較する段階を含む、
請求項６に記載の方法。
【請求項８】
前記データ記憶装置によって生成された認証メタデータを受信する段階は、前記データ記憶装置から前記データが読み出された時間を示すカウンタ値を受信する段階をさらに含む、
請求項７に記載の方法。
【請求項９】
前記認証メタデータを用いて、前記ＯＯＢエージェントまたは前記リモートサーバ・ドライバにより前記データを検証する段階は、前記カウンタ値を、期待された時間と比較する段階をさらに含む、
請求項８に記載の方法。
【請求項１０】
前記データ記憶装置によって生成された認証メタデータを受信する段階は、前記データ記憶装置から読み出されたデータと、秘密鍵とに基づく電子署名を受信する段階を含む、
請求項１に記載の方法。
【請求項１１】
前記認証メタデータを用いて、前記ＯＯＢエージェントまたは前記リモートサーバ・ドライバにより前記データを検証する段階は、前記秘密鍵に対応する公開鍵を用いて、前記電子署名を検証する段階を含む、
請求項１０に記載の方法。
【請求項１２】
前記認証メタデータを用いて前記データを検証する前記リモートサーバ・ドライバに、前記データおよび前記認証メタデータを、前記ＯＯＢエージェントを用いて送信する段階をさらに有する、
請求項１に記載の方法。
【請求項１３】
前記ＯＯＢエージェントを用いて、前記リモートサーバ・ドライバに前記データを送信する段階をさらに有し、
前記ＯＯＢエージェントは、前記データを送信する前に、前記認証メタデータを用いて前記データを検証する、
請求項１に記載の方法。
【請求項１４】
コンピュータに、
請求項１から請求項１３までの何れか一項に記載の方法を実行させるための、
プログラム。
【請求項１５】
オペレーション・システムおよび少なくとも１つのホストドライバを実行するインバンド・プロセッサと、
リモートサーバと情報をやり取りする通信回路と、
前記オペレーション・システムの状態に関わらず、前記通信回路を用いて前記リモートサーバと情報をやり取りすることができるアウト・オブ・バンド・プロセッサ（ＯＯＢプロセッサ）と、
を備え、
前記ＯＯＢプロセッサは、
前記リモートサーバからブロック読み出し要求を受信し、
前記少なくとも１つのホストドライバに指示して、データ記憶装置にストレージ命令を送信させ、
前記データ記憶装置から読み出されたデータと、前記データ記憶装置によって生成された認証メタデータとを受信し、
前記データおよび前記認証メタデータを、前記リモートサーバに送信する、
計算装置。
【請求項１６】
前記少なくとも１つのホストドライバは、前記オペレーション・システムが起動する前に、前記インバンド・プロセッサによって実行される基本入出力システム（ＢＩＯＳ）ドライバである、
請求項１５に記載の計算装置。
【請求項１７】
前記少なくとも１つのホストドライバは、前記オペレーション・システムの実行中に、前記インバンド・プロセッサによって実行されるアドバンスド・ホストコントローラ・インターフェース（ＡＨＣＩ）ドライバである、
請求項１５に記載の計算装置。
【請求項１８】
前記ＯＯＢプロセッサは、さらに、前記データおよび前記認証メタデータを、前記リモートサーバに送信する前に、前記認証メタデータを用いて前記データを検証する、
請求項１５に記載の計算装置。
【請求項１９】
オペレーション・システムおよび少なくとも１つのドライバを実行し、前記オペレーション・システムから独立したセキュア・コンテナの中で前記ドライバを実行するインバンド・プロセッサと、
リモートサーバと情報をやり取りする通信回路と、
前記オペレーション・システムの状態に関わらず、前記通信回路を用いて前記リモートサーバと情報をやり取りすることができるアウト・オブ・バンド・プロセッサと、
を備え、
前記アウト・オブ・バンド・プロセッサは、
前記リモートサーバからブロック読み出し要求を受信し、
前記セキュア・コンテナの中で動作する前記少なくとも１つのドライバに指示して、データ記憶装置にストレージ命令を送信させ、
前記データ記憶装置から読み出されたデータを、前記セキュア・コンテナの中で動作する前記少なくとも１つのドライバを経由して受信し、
前記データを、前記リモートサーバに送信する、
計算装置。
【請求項２０】
前記オペレーション・システムは、１以上のファームウエア・フックを経由して、前記セキュア・コンテナの中で動作する前記少なくとも１つのドライバに指示して、前記データ記憶装置に前記ストレージ命令を送信させることによって、前記データ記憶装置からデータを読み出す、
請求項１９に記載の計算装置。
【発明の詳細な説明】
【背景技術】
【０００１】
ハードディスクドライブまたはソリッドステートドライブのようなデータ記憶装置上に存在するデータは、例えば、変造（corruption）または悪意のあるソフトウエア（マルウエア）による攻撃の対象となる。独立系ソフトウエアベンダー（ＩＳＶ）によって、変造されたデータ若しくはマルウエアを検出する、および／または、データのバックアップコピーを提供することを目的として、データ記憶装置を検査する（scan）ウイルス防止(anti-virus)および監視(manageability)ソフトウエアパッケージが開発されている。記憶装置（storage）、セキュリティおよび監視に関するＩＳＶのいくつかは、例えばインターネットを介して、ウイルス防止検査、マルウエア除去、システム修理またはシステム・リイメージング（system reimaging）のようなサービスを提供している。これらのインターネットを使った（Internet-based）サービスは、概して、ローカルの計算装置上で動作するローカル・ソフトウエア・エージェントに未だに依存している。
【発明の概要】
【０００２】
しかしながら、これらのソフトウエア・ソリューション自体が、検出から隠れることを前提として動作するルートキット、スパイウエアおよびその他の種類のマルウエアによる攻撃の対象となる。例えば、記憶スタックの中にフィルタドライバとして隠れたマルウエアは、データ記憶装置の検査が要求されたときに、ウイルス防止または監視ソフトウエアに対して、未認証データ（non-authentic data）を提供することができるかもしれない（その結果、現実の、変造されたデータをソフトウエアから隠すことができるかもしれない。）。つまり、ウイルス防止または監視ソフトウエアによって検査されたデータは、データ記憶装置上に現実に存在するデータではないかも知れない。その上、ひとたび、ルートキットがプラットフォーム上（例えば、マスター・ブート・レコードの中）に隠れると、ルートキットは、ユーザの全ての動作を観察したり、ユーザ情報を獲得（capture）したり、ユーザの行動の迂回（circumvention）およびその他の悪意のある動作を実行したりすることができる。ユーザから隠れて、コンピュータ・システムのバックグラウンドで実行し、機密情報を収集してシステムの速度を大幅に低下させるルートキット、スパイウエアおよびその他のマルウエアが、益々発見されてきている。
【０００３】
本明細書に記載されているシステム、装置および方法が、発明を限定する目的ではなく、一例として、添付図面の中に記載されている。簡単かつ明確に説明する目的で、図面中に記載された要素は必ずしも縮尺どおりには記載されていない。例えば、説明を明確にする目的で、いくつかの要素の寸法は、他の要素と比較して大きく記載されている可能性がある。
【図面の簡単な説明】
【０００４】
【図１】リモートサーバから計算装置のデータ記憶装置の安全性検査（secure scan）を提供するように構成されたシステムの一実施形態の概略ブロック図を示す。
【図２】図１の計算装置およびリモートサーバのソフトウエア／ファームウエア環境（environment）の一実施形態の概略ブロック図を示す。
【図３】図１のシステムおよび図２のソフトウエア環境を用いて、リモートサーバからデータ記憶装置の安全性検査を提供する方法の一実施形態の概略フロー図を示す。
【図４】図１の計算装置およびリモートサーバのソフトウエア／ファームウエア環境の他の実施形態の概略ブロック図を示す。
【図５】図１のシステムおよび図４のソフトウエア環境を用いて、リモートサーバからデータ記憶装置の安全性検査を提供する方法の一実施形態の概略フロー図を示す。
【発明を実施するための形態】
【０００５】
ここに開示される概念（concept）は、様々に改変されたり、他の形態に代替されたりしてよい。一方、ここに開示される特定の例示的な実施形態は、一例として、図示されており、図面に詳細に記載されている。しかしながら、ここに開示される概念を開示された特定の形態に限定することを意図するものではなく、それどころか、添付の特許請求の範囲によって定義される発明の精神（spirit）および範囲（scope）に含まれる改変、均等物および代替物の全てをカバーすることを意図している。
【０００６】
以下の記載において、本開示の理解をより完全なものにする目的で、ロジックの実装（logic implementation）、オペコード（opcode）、オペランド特定手段（means to specify operands）、リソースのパーティショニング／シェアリング／複製の実装、システム要素のタイプおよび相互関係、ならびに、ロジックの分割／統合の選択のような、多くの特定の詳細が記載される可能性がある。しかしながら、当然のことながら、当業者であれば、そのような特定の詳細の記載がなくとも、本開示の実施形態を実施することができる。開示がわかりにくくなることを防止する目的で、他の実施形態においては、制御構造、ゲートレベル回路および完全なソフトウエア実行シーケンスの詳細について示されていない可能性がある。本明細書の記載に接した当業者は、過度の実験をしなくても、適切な機能を実行することができるであろう。
【０００７】
明細書中の「一実施形態」、「ある実施形態」、「例示的な実施形態」などへの言及は、記載されている実施形態が特定の特徴、構造または特性を含んでよいことを示す。しかし、必ずしも全ての実施形態において、当該特定の特徴、構造または特性が含まれる必要はない。さらに、そのような文言が、必ずしも同一の実施形態について言及している必要もない。その上、特定の特徴、構造または特性が、ある実施形態に関連して記載されるときには、そのことが明示的に記載されているかどうかに関わらず、他の実施形態に関しても、そのような特徴、構造または特性を生じさせることが、当業者の知識の範囲内であると考えられる。
【０００８】
開示されるいくつかの実施形態は、ハードウエア、ファームウエア、ソフトウエアまたはそれらの組合せに組み入れられてよい。開示される計算装置に組み入れられる実施形態は、１以上のバスを利用した（bus-based）要素間相互接続、および／または、１以上の２点間の（point-to-point）要素間相互接続を含んでよい。発明の実施形態は、１以上の有形の機械可読媒体に格納され、１以上のプロセッサによって読み込まれ、実行される命令（instruction）として実現されてもよい。有形の機械可読媒体は、機械（例えば計算装置）によって読み込まれる形で、情報を記憶または伝達するための有形の機構であれば、いかなるものであってもよい。例えば、有形の機械可読媒体は、リード・オンリー・メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ、および、その他の有形の媒体を含んでよい。
【０００９】
本開示は、広く、リモートサーバからデータ記憶装置の安全性検査を提供する方法および装置に関連する。これらの方法および装置は、検査されたデータが、データ記憶媒体から実際に読み出された（retrieved）ものであり、なんらかのマルウエア（例えば、計算装置上に隠れているルートキット）によって不当に提供されたものではないことを保証する。本開示によれば、アウト・オブ・バンド（ＯＯＢ）エージェントが用いられて、リモートサーバとデータ記憶媒体との間におけるブロックの読み込み／書き込みのためのインターフェースを実現する。ＯＯＢエージェントは、計算装置のホストドライバと連動して、信頼できる方法でデータ記憶装置からデータを読み出し、このデータをリモートサーバに提供する。ＯＯＢエージェントが耐タンパー性（tamper resistant）を有するので、リモートサーバは、そのデータが何らかのマルウエアによって偽造されていないことを保証されてよい。いくつかの実施形態において、ＯＯＢエージェントは、データ記憶装置の暗号化エンジンが生成した認証メタデータ（authentication metadata）を読み込んでもよい。この認証メタデータは、データがデータ記憶装置から実際に読み出されたことを検証する目的で、ＯＯＢエージェントまたはリモートサーバのいずれかによって用いられてよい。最初に、図１を参照して、システム１００の様々なハードウエア要素が以下に記載される。次に、図２および図３を参照して、システム１００のソフトウエア／ファームウエア環境として採用しうる一実施形態、および、関連する安全性検査方法３００が、以下に記載される。最後に、図４および図５を参照して、システム１００のソフトウエア／ファームウエア環境として採用しうる他の実施形態、および、関連する安全性検査方法５００が、以下に記載される。
【００１０】
図１に関連して、リモートサーバ１０４からデータ記憶装置１２０のデータの安全性検査を提供するよう構成されたシステムの一例であるシステム１００は、計算装置１０２と、リモートサーバ１０４と、計算装置１０２をリモートサーバ１０４と通信可能に結合するネットワーク１０６を含む。図１には、単一の計算装置１０２と、単一のリモートサーバ１０４と、単一のネットワーク１０６とが例示されているが、システム１００に含まれる、類似または非類似のアーキテクチャの計算装置１０２、リモートサーバ１０４およびネットワーク１０６の数はいかなるものであってもよい。例えば、計算装置１０２は、１以上のネットワーク１０６を介して、複数のリモートサーバ１０４と通信してもよく、それぞれのリモートサーバ１０４は、１以上のネットワーク１０６を介して、複数の計算装置１０２と通信してよい。
【００１１】
計算装置１０２は、本明細書に記載される機能を実行することができる電子デバイスであれば、いかなるタイプの電子デバイスとして実現されてもよい。一例として、計算装置１０２は、パーソナル・コンピュータ、ワークステーション、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、携帯型のインターネット・デバイス（mobile internet device）、携帯電話、ＰＤＡ（personal data assistant）、テレフォニー・デバイス（telephony device）、ネットワーク接続機器（network appliance）、仮想化デバイス（virtualization device）、ストレージ・コントローラまたはその他のコンピュータを利用したデバイスとして実現されてよい。図１に示された例示的な実施形態において、計算装置１０２は、インバンド・プロセッサ１１０と、チップセット１１２と、システムメモリ１１４と、通信回路１１６と、一以上の入出力デバイス１１８と、データ記憶装置１２０とを含む。いくつかの実施形態において、上述の要素のいくつかは、計算装置１０２のマザーボード上に組み込まれてよく、その他の要素は、例えばペリフェラル・ポート経由で、マザーボードと通信可能に結合されてよい。さらに、当然のことながら、計算装置１０２は、その他の要素、サブコンポーネント、ならびに、コンピュータおよび／または計算装置においてよく見られるデバイスを含んでよい。なお、説明をわかりやすくする目的で、それらは、図１には記載されていない。
【００１２】
計算装置１０２のインバンド・プロセッサ１１０は、ソフトウエア／ファームウエアを実行することができるプロセッサであれば、いかなるタイプのプロセッサであってよく、例えば、マイクロプロセッサ、デジタル・シグナル・プロセッサ、マイクロコントローラまたはそれらと同様のものであってよい。インバンド・プロセッサ１１０は、例えば、単一のプロセッサコア１２２を有するシングルコア・プロセッサとして実現されてよい。しかしながら、他の実施形態において、インバンド・プロセッサ１１０は、複数のプロセッサコア１２２を有するマルチコア・プロセッサとして実現されてよい。加えて、計算装置１０２は、１以上のプロセッサコア１２２を有するインバンド・プロセッサ１１０をさらに備えてもよい。インバンド・プロセッサ１１０は、通常、ソフトウエアスタックを実行することができる。ソフトウエアスタックは、（図２および図４に図示され、以下に記載されるように、）計算装置１０２上に存在するオペレーティング・システム２００、様々なアプリケーション、プログラム、ライブラリ、ドライバ２０２およびドライバ２０４を含んでよい。
【００１３】
計算装置１０２のチップセット１１２は、メモリコントローラ・ハブ（ＭＣＨまたはノースブリッジ）、入出力コントローラ・ハブ（ＩＣＨまたはサウスブリッジ）、および、ファームウエア・デバイスを有してよい。チップセット１１２のファームウエア・デバイスは、基本入出力システム（ＢＩＯＳ）および／または命令および／またはその他の情報（例えば、計算装置１０２を起動する間に使用されるＢＩＯＳドライバ）を記憶するメモリデバイスとして実現されてよい。その他の実施形態において、その他の構成を有するチップセットが用いられてよい。例えば、いくつかの実施形態において、チップセット１１２は、プラットフォーム・コントローラ・ハブ（ＰＣＨ）として実現されてよい。そのような実施形態において、メモリコントローラ・ハブ（ＭＣＨ）が、インバンド・プロセッサ１１０の中に組み込まれる、または、その他の方法でインバンド・プロセッサ１１０に結合されてもよく、（図１において破線で示されているように）インバンド・プロセッサ１１０が、システムメモリ１１４と直接通信してもよい。これらのいずれの構成においても、チップセット１１２は、アウト・オブ・バンド（ＯＯＢ）プロセッサ１２４を有してもよい。アウト・オブ・バンドプロセッサ１２４は、以下に、より詳細に説明される。
【００１４】
インバンド・プロセッサ１１０は、多くの信号経路を経由して、チップセット１１２と通信可能に結合される。これらの信号経路（および図１において説明されるその他の信号経路）は、計算装置１０２の要素の間の通信を促進することができる信号経路であれば、いかなるタイプの信号経路として実現されてもよい。例えば、信号経路は、いかなる数のワイヤ、ケーブル、導光路（light guide）、プリント配線基板の配線、ビア、バス、介在する装置（intervening device）および／またはそれらと同様のものであってよい。
【００１５】
計算装置１０２のシステムメモリ１１４は、多くの信号経路を経由して、チップセット１１２と通信可能に結合されてもよい。システムメモリ１１４は、１以上のメモリデバイスまたはデータ記憶番地（data storage location）として実現されてよい。１以上のメモリデバイスまたはデータ記憶番地は、例えば、ダイナミック・ランダム・アクセス・メモリデバイス（ＤＲＡＭ）、シンクロナス・ダイナミック・ランダム・アクセス・メモリデバイス（ＳＤＲＡＭ）、ダブルデータレート・シンクロナス・ダイナミック・ランダム・アクセス・メモリデバイス（ＤＤＲＳＤＲＡＭ）、フラッシュメモリデバイスおよび／または他の揮発性メモリデバイスであってよい。加えて、図１には単一のシステムメモリ１１４のみが記載されているけれども、他の実施形態においては、計算装置１０２は複数のステムメモリ・デバイスをさらに備えてもよい。オペレーティング・システム２００、アプリケーション、プログラム、ライブラリ、ドライバ２０２およびドライバ２０４は、インバンド・プロセッサ１１０によって実行されるソフトウエアスタックを構成し、実行中、システムメモリ１１４の中に駐在してもよい。さらに、システムメモリ１１４の中に記憶されるソフトウエアおよびデータは、メモリ管理操作の一部として、システムメモリ１１４およびデータ記憶装置１２０の間で交換されてよい。
【００１６】
計算装置１０２の通信回路１１６は、ネットワーク１０６を介して計算装置１０２とリモートサーバ１０４との間の通信を可能にするデバイスおよび回路であれば、いかなる数のデバイスおよび回路として実現されてもよい。ネットワーク１０６は、いかなるタイプの有線および／または無線のネットワークとして実現されてもよく、例えば、ローカルエリア・ネットワーク、ワイドエリア・ネットワーク、公衆が利用できるグローバルネットワーク（例えば、インターネット）またはそれらのいかなる組合せであってもよい。さらに、ネットワーク１０６は、計算装置１０２とリモートサーバ１０４との間の通信を促進するデバイスであれば、いかなる数のデバイスであっても有してよい。上記デバイスは、例えば、ルータ、スイッチ、介在するコンピュータおよび／またはそれらと同様のものであってよい。通信回路１１６は、ネットワーク１０６の有線および／または無線の部分を介して通信を促進する（facilitate）１以上の有線および／または無線のネットワーク・インターフェースを有してよい。通信回路１１６は、多数の信号経路を介してチップセット１１２と通信可能に結合され、インバンド・プロセッサ１１０とＯＯＢプロセッサ１２４との両方が、ネットワーク１０６にそれぞれ独立にアクセスできるようにしてよい。
【００１７】
計算装置１０２の入出力デバイス１１８は、いかなる数の周辺装置（peripheral）またはインターフェース・デバイスを有してよい。説明のための実例として、入出力デバイス１１８は、計算装置１０２のディスプレイ、マウス、キーボードおよび／または１以上の外部スピーカを有してよい。入出力デバイス１１８に含まれる特定のデバイスは、例えば、計算装置１０２の目的とする用途次第であってよい。入出力デバイス１１８は、多数の信号経路を介してチップセット１１２と通信可能に結合されてよく、いくつかの実施形態においては、インバンド・プロセッサ１１０および／またはチップセット１１２が、入出力デバイス１１８からの入力を受信したり、入出力デバイス１１８に出力を送信したりできるようにしてよい。
【００１８】
計算装置１０２は、データ記憶装置（ＤＳＤ）１２０を有してもよい。データ記憶装置１２０の一例は、短期間または長期間、データを記憶するよう構成されたデバイスであればどのようなものであってもよく、例えば、メモリデバイスおよび回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブまたはその他のデータ記憶装置であってよい。いくつかの実施形態において、ＤＳＤ１２０は、ＤＳＤ１２０が電力を供給されていないときも記憶されたデータを保持することができる不揮発性メモリを有してよい。加えて、図１には単一のＤＳＤ１２０のみが記載されているけれども、他の実施形態において、計算装置１０２は、データ記憶装置をさらに備えてよい。ＤＳＤ１２０は、多数の信号経路を経由してチップセット１１２と通信可能に結合してよい。いくつかの実施形態において、ＤＳＤ１２０は、周辺構成要素相互接続エクスプレス（ＰＣＩｅ）インターフェースまたはシリアルＡＴアタッチメント（ＳＡＴＡ）インターフェースのような高速シリアルリンクを経由してチップセット１１２と結合してよい。当然のことながら、ＤＳＤ１２０とチップセット１１２との間の他のタイプのインターフェース（例えば、パラレル信号経路）も考えられる。図１の例示的な実施形態において、ＤＳＤ１２０は、暗号化回路１２６を備えてよい。暗号化回路１２６は、（図２に示すように）ＤＳＤ１２０に、ハードウエアを利用した暗号化エンジン２１２を提供してよい。以下においてさらに記載されるように、暗号化回路１２６（およびそれとともに実現される暗号化エンジン２１２）は、ＤＳＤ１２０が、ＤＳＤ１２０から読み出されたデータに対応する認証メタデータをローカルで生成することを可能にしてよい。
【００１９】
チップセット１１２は、アウト・オブ・バンド（ＯＯＢ）プロセッサ１２４を有してよい。アウト・オブ・バンドプロセッサ１２４は、インバンド・プロセッサ１１０とは異なるプロセッサであり、通常、インバンド・プロセッサ１１０と独立して動作する。ＯＯＢプロセッサ１２４は、ソフトウエア／ファームウエアを実行することができるプロセッサであれば、いかなるタイプのプロセッサであってよく、例えば、マイクロプロセッサ、デジタル・シグナル・プロセッサ、マイクロコントローラまたはそれらと同様のものであってよく、１以上のプロセッサコア（図示しない。）を含む１以上のプロセッサを有してよい。図１において、ＯＯＢプロセッサ１２４は、チップセット１１２に統合されているように説明されているけれども、他の実施形態において、ＯＯＢプロセッサ１２４は、多数の信号経路を経由してチップセット１１２と通信可能に結合されている拡張ボード上に配された１以上の別々の集積回路として実現されてもよい。いくつかの実施形態において、ＯＯＢプロセッサ１２４は、多数の信号経路を経由して、計算装置１０２の様々な要素（例えば、システムメモリ１１４および通信回路１１６）と独立して通信可能に結合されてよい。その代案として、または、それに加えて、ＯＯＢプロセッサ１２４は、専用メモリおよび／または専用通信回路（図示されていない）のような、類似の機能を有する組み込み要素（built-in component）を有してよい。
【００２０】
ＯＯＢプロセッサ１２４は、計算装置１０２のインバンド・プロセッサ１１０またはオペレーション・システム２００の動作状態に関係なく、計算装置１０２の特定の機能を管理するように構成されている。そのような独立した動作を促進する目的で、ＯＯＢプロセッサ１２４は、計算装置１０２の電源回路（図示されていない。）に独立して接続されてよい。これにより、計算装置１０２の他の要素が出力を下げられたまたは電源を切られた場合であっても、ＯＯＢプロセッサ１２４は電力を保持することができる。さらに、ＯＯＢプロセッサ１２４は、通信回路１１６を経由して、１以上の独立したネットワーク・インターフェースを提供されてよい。通信回路１１６もまた、電源回路（図示されていない。）に独立して接続され、ネットワーク１０６を介して、アウト・オブ・バンド通信を可能にする。言い換えれば、ＯＯＢプロセッサ１２４は、インバンド・プロセッサ１１０上で動作しているオペレーション・システム２００の外側へ、ネットワーク１０６上のデバイス（例えば、リモートサーバ１０４）と直接通信することができる。実際、この通信は、ユーザに認識されることなく実行されてよい。ＯＯＢプロセッサ１２４は、計算装置１０２を、オペレーション・システム２００の起動を含む全出力運転状態に戻させることもできる。要約すれば、ＯＯＢプロセッサ１２４は、要求／コマンドの着信に基づいて、自動制御によって（intelligently）動作してよい。また、インバンド・プロセッサ１１０の電源が切られているか、待機状態で実行しているか、初期化されているか、または、通常動作中であるのかどうか、および、オペレーション・システム２００が起動しているか、実行しているか、クラッシュしているか、あるいはそうでないのかを、ネットワーク１０６上で通信してよい。
【００２１】
いくつかの説明のための実施形態において、ＯＯＢプロセッサ１２４は、インテル（登録商標）・アクティブ・マネジメント・テクノロジ（インテル（登録商標）ＡＭＴ）もしくはインテル（登録商標）ＡＭＴの一部を用いて、または、インテル（登録商標）・マネジメント・エンジン（インテル（登録商標）ＭＥ）を用いて実現されてよい。これらは全て、カルフォルニア州サンタクララのインテルコーポレーションから入手できるものであってもよく、および／または、インテルコーポレーションによって販売されているチップセットに含まれるものであってもよい。インテルＡＭＴ（登録商標）の組み込みプラットフォーム技術（embedded platform technology）は、エンドポイント・デバイス（endpoint device）のそれぞれのハードウエアおよび非揮発性メモリに格納されたソフトウエア情報に、アウト・オブ・バンドでアクセスすることを可能にする。インテルＡＭＴ（登録商標）の組み込みプラットフォーム技術（embedded platform technology）によって、機能しているオペレーション・システムおよび他の管理ツールにおいて見られるような多くのソフトウエア・エージェントが不要になる。
【００２２】
リモートサーバ１０４は、計算装置１０２とは別の計算装置であれば、いかなる計算装置として実現されてよい。一例として、リモートサーバ１０４は、パーソナル・コンピュータ、ワークステーション、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、携帯型のインターネット・デバイス（mobile internet device）、携帯電話、ＰＤＡ（personal data assistant）、テレフォニー・デバイス（telephony device）、ネットワーク接続機器（network appliance）、仮想化デバイス（virtualization device）、ストレージ・コントローラ、または、ネットワーク１０６を介して、計算装置１０２と通信するよう構成されたその他のコンピュータを利用したデバイスとして実現されてよい。図１に示される説明のための実施形態において、リモートサーバ１０４は、プロセッサ１３０と、チップセット１３２と、システムメモリ１３４と、通信回路１３６と、１以上の大容量記憶装置１３８を備える（これらのそれぞれは、計算装置１０２のインバンド・プロセッサ１１０、チップセット１１２、システムメモリ１１４、通信回路１１６およびデータ記憶装置１２０のそれぞれと、同様の構成を有してよく、同様に動作してよい。）。リモートサーバ１０４は、その他の構成を有してよく、および／または、図１に示されていないその他の要素（例えば、１以上の入出力デバイス）を有してもよいと考えられる。
【００２３】
次に、図２を参照すると、システム１００の計算装置１０２およびリモートサーバ１０４の上で動作するソフトウエア／ファームウエア環境に関する説明のための一実施形態が、簡略化されたブロック図として示されている。計算装置１０２のソフトウエアスタックは、オペレーション・システム（ＯＳ）２００と、アドバンスド・ホストコントローラ・インターフェース（ＡＨＣＩ）ドライバ２０２と、ファイルシステムおよびその他のフィルタドライバ２０４とを含む（これらのそれぞれは、インバンド・プロセッサ１１０によって実行され、および／または、システムメモリ１１４の中またはＤＳＤ１２０上に格納されてよい。）。ＯＳ２００は、ユーザスペース（リング３）に存在して（reside）、計算装置１０２のユーザが、通常、交信する（typically interact）、よりハイレベルのアプリケーションを提供する（host）。ＯＳ２００は、ＡＨＣＩドライバ２０２を含めて、カーネル（リング０）に存在するファイルシステムおよびフィルタドライバ２０４に対して、計算装置１０２のハードウエア要素（例えば、ＤＳＤ１２０）にアクセスするよう要求する。当然のことながら、いくつかの実施形態において、ＯＳ２００ならびに／またはドライバ２０２およびドライバ２０４を含むこれらのソフトウエアモジュールは、いかなるものであっても、ファームウエアまたはハードウエアの中に、部分的にまたは完全に組み入れられてよい。
【００２４】
ＡＨＣＩドライバ２０２は、ＤＳＤ１２０のインターフェース・モジュール２１０と互いに交信して、様々な読み込み／書き込み操作を実行するよう構成差荒れているので、図２においては、ＡＨＣＩドライバ２０２と、ファイルシステムおよびその他のフィルタドライバ２０４とが別々に示されている。特に、ＡＨＣＩドライバ２０２は、ＡＨＣＩドライバ２０２によってＤＳＤインターフェース・モジュール２１０に送られる可能性のあるストレージ命令（storage command）のライブラリ２０６を含む。ライブラリ２０６に含まれるこれらのストレージ命令は、ＤＳＤ１２０に対して、何らかの動作を実行させるための要求および／または命令である。例えば、ＤＳＤ１２０が、ＰＣＩｅインターフェースを経由して接続されたＮＡＮＤフラッシュメモリデバイスである場合には、ＡＨＣＩドライバ２０２は、ＤＳＤ１２０に様々な読み込み／書き込み動作を実行させるストレージ命令のうち、ＮＡＮＤ命令ライブラリ２０６を含んでよい。別の例として、ＤＳＤ１２０が、ＳＡＴＡインターフェースを経由して接続されたソリッドステートドライブである場合には、ＡＨＣＩドライバ２０２は、ＤＳＤ１２０に様々な読み込み／書き込み動作を実行させるストレージ命令のうち、ＡＴＡ命令ライブラリ２０６を含んでよい。上述の通り、ＡＨＣＩドライバ２０２が、（例えば、ＯＳ２００によって）ＤＳＤ１２０中のある特定の（certain）論理ブロックアドレス（ＬＢＡ）のデータを読み出すことを要求されると、ＡＨＣＩドライバ２０２は、ライブラリ２０６から適切なストレージ命令を選択し、このストレージ命令をＤＳＤ１２０に送信する。図２に示された説明のための実施形態は、ＡＨＣＩドライバ２０２を用いて、ＤＳＤインターフェース・モジュール２１０に対するインターフェースを実現しているけれども、ＤＳＤ１２０にアクセスすることができる計算装置１０２のホストドライバであれば（すなわち、適切なストレージ命令ライブラリ２０６を有していれば）、いかなるホストドライバであっても、ＡＨＣＩドライバ２０２に追加して、または、ＡＨＣＩドライバ２０２の代わりに用いることができると考えられる。いくつかの実施形態において、例えば、カルフォルニア州サンタクララのインテルコーポレーションから入手できる、インテル（登録商標）急速記憶テクノロジ（インテル（登録商標）ＲＳＴ）ドライバが用いられてよい。
【００２５】
図２の計算装置１０２は、ＤＳＤインターフェース・モジュール２１０のような、ＤＳＤ１２０上で実行される可能性のあるいくつかのファームウエア・モジュールと、ＯＯＢプロセッサ１２４上で実行される可能性のあるＯＯＢエージェント２１４とを有してもよい。それぞれ、ＤＳＤ１２０のファームウエアおよびチップセット１１２のファームウエアの中に存在するように記載されているけれども、ＤＳＤインターフェース・モジュール２１０およびＯＯＢエージェント２１４は、それぞれ、追加的または代替的に、１以上のハードウエアおよび／またはソフトウエアモジュールとして実現されてもよい。上述の通り、ＤＳＤインターフェース・モジュール２１０は、大抵、ＡＨＣＩドライバ２０２（または、その他のホストドライバ）からストレージ命令を受信して、ＤＳＤ１２０を制御して、様々な動作（例えば、読み込み／書き込み動作）を実行させるように構成されている。
【００２６】
ＤＳＤインターフェース・モジュール２１０は、ハードウエアを利用した暗号化エンジン２１２を有してよい。暗号化エンジン２１２は、ＤＳＤ１２０の暗号化回路１２６によって実行されるファームウエアまたはソフトウエアを含んでよい。いくつかの実施形態において、ＤＳＤインターフェース・モジュール２１０は、暗号化エンジン２１２を用いて、ＡＨＣＩドライバ２０２からの特定のストレージ命令（または、ストレージ命令の特定のクラスもしくはカテゴリ）に応じて、ＤＳＤ１２０から読み出されたデータに対応する認証メタデータを生成させるように構成されてよい。その他の実施形態において、暗号化エンジン２１２は、ＤＳＤインターフェース・モジュール２１０によって受信された何らかのストレージ命令に応じて、ＤＳＤ１２０から読み出されたデータに対応する認証メタデータを生成してよい。説明のための例として、暗号化エンジン２１２は、（信頼できるコンピューティング団体（Trusted Computing Group）によって公表された）オパールセキュリティサブシステムクラス標準に準拠するファームウエアの中に統合されてよい。
【００２７】
ＤＳＤ１２０の暗号化エンジン２１２によって生成された認証メタデータは、関連データの信頼性を検証するのに用いられる形態であれば、いかなる形態であってもよい。いくつかの実施形態において、暗号化エンジン２１２は、メッセージ認証符号（ＭＡＣ）を生成してよい。メッセージ認証符号は、ＤＳＤ１２０から読み出されたデータに対する共有秘密鍵を用いる鍵付きハッシュ関数が適用されることにより、認証メタデータの中に含まれることになる。他のいかなる要素、デバイス、または、共通鍵を所有するユーザもまた、次に、そのデータに鍵付きハッシュ関数を再適用して、その出力を、認証メタデータに含まれるＭＡＣと比較する。追加的にまたは代替的に、暗号化エンジン２１２は、認証メタデータの中に含まれることになるカウンタ値（例えば、タイムスタンプ、または、データがＤＳＤ１２０から読み出された時間を示すその他のトークン）を生成してよい。他のいかなる要素、デバイス、または、ユーザは、次に、（古いデータ（stale data）を含む）反射攻撃から保護する目的で、データがＤＳＤ１２０から読み出されたはずである時間と比較してよい。その他の実施形態において、暗号化エンジン２１２は、ＤＳＤ１２０から読み出されたデータに対する秘密鍵を用いる署名アルゴリズムを適用することによって認証メタデータに含まれることになる電子署名を生成してよい。他のいかなる要素、デバイス、または、秘密鍵に対応する公開鍵を所有するユーザは、次に、認証メタデータを用いて、署名検証アルゴリズムを適用してよい。さらに他の実施形態において、暗号化エンジン２１２は、いかなる数の暗号学的ハッシュ関数を用いて、認証メタデータを生成してよい。
【００２８】
（他の実施形態において、ＯＯＢエージェント２１４は、ハードウエア、ファームウエア、ソフトウエアまたはそれらのいかなる組み合わせとして実現されてもよいが、）ホストドライバを介して、リモートサーバ１０４にＤＳＤ１２０へのアクセスを提供するＯＯＢエージェント２１４は、図２の実施形態において、ＯＯＢプロセッサ１２４上で実行されるファームウエア・モジュールとして説明される。ＯＯＢエージェント２１４は、大抵、いつも、リモートサーバ１０４によって利用でき、上述のＯＯＢプロセッサ１２４の特性のおかげで、マルウエアによる改ざんに耐性を示す。ＯＯＢエージェント２１４は、リモート・ブロック・リード／ライト・モジュール２１６と、ＯＯＢ通信モジュール２１８と、（いくつかの実施形態において）検証モジュール２２０とを有する。ＯＯＢ通信モジュール２１８は、ＯＯＢエージェント２１４が、計算装置１０２の通信回路１１６の様々な部分を制御して、ネットワーク１０６を介して、リモートサーバ１０４との間でやりとりされる様々なネットワークメッセージの送受信を可能にする。リモート・ブロック・リード／ライト・モジュール２１６は、リモートサーバが、ＤＳＤ１２０上の特定のＬＢＡのデータを要求するためのインターフェースを提供する。ＯＯＢ通信モジュール２１８を経由して、ＤＳＤ１２０からデータを読むための要求が受信されると、リモート・ブロック・リード／ライト・モジュール２１６は、その要求を、インバンド・プロセッサ１１０上で動作するＡＨＣＩドライバ２０２に転送する。リモート・ブロック・リード／ライト・モジュール２１６とＡＨＣＩドライバ２０２との間のこのメッセージは、ホストエンベッデッドコントローラー・インターフェース（ＨＥＣＩ）、または、ＯＯＢエージェント２１４とＯＳ２００との間で共有されるその他の何らかの記憶通信路（memory channel）を用いて送信されてよい。ＡＨＣＩドライバ２０２は、ＯＯＢエージェント２１４からのそのようなメッセージを受信して、ＡＨＣＩ２０２に指示して、ライブラリ２０６から適切なストレージ命令を選択して送信させるように構成されるアプリケーションプログラム・インターフェース（ＡＰＩ）２０８を有してよい。以下において、ＯＯＢエージェント２１４のいくつかの実施形態において含まれる検証モジュール２２０がより詳細に説明される。
【００２９】
リモートサーバ１０４のソフトウエアスタックは、ＯＳ（図示されていない。）と、１以上のＩＳＶアプリケーション２２２と、リモート・ブロック・リード／ライト・ドライバ２２４と、ファイルシステムおよびその他のフィルタドライバ２２６とを有する（これらのそれぞれは、プロセッサ１３０によって実行されてよく、および／または、システムメモリ１３２もしくは大容量記憶装置１３８に記憶されよい。）。図２において説明されるように、リモートサーバ１０４は、ＤＳＤ１２０の１以上のディスクイメージ２２８（大容量記憶装置１３８に記憶される。）を有してよい。計算装置１０２の場合と同様に、リモートサーバ１０４のＯＳ（ユーザスペース中に存在する。）は、例えば、ＩＳＶアプリケーション２２２のような、よりハイレベルのアプリケーションを提供する（host）。１以上のＩＳＶアプリケーション２２２は、ＤＳＤ１２０の安全性検査を要求する、記憶装置（storage）、セキュリティおよび／または監視に関するアプリケーションとして実現されてよい。１以上のＩＳＶアプリケーション２２２は、（ＯＳを経由して）ファイルシステムおよびフィルタドライバ２２６（カーネル中に存在する。）に対して、リモートサーバ１０４のハードウエア要素（例えば、大容量記憶装置１３８）にアクセスするよう要求してよい。例えば、ＩＳＶアプリケーション２２２は、ファイルシステムおよびフィルタドライバ２２６を経由して、大容量記憶装置１３８に格納されたディスクイメージ２２８にアクセスする。当然のことながら、いくつかの実施形態において、ＯＳ、ＩＳＶアプリケーション２２２および／またはドライバ２２６を含むこれらのソフトウエアモジュールは、部分的または完全に、ファームウエアまたはハードウエアに組み入れられてもよい。
【００３０】
リモート・ブロック・リード／ライト・ドライバ２２４は、リモートサーバ１０４が、ネット経由で（remotely）計算装置１０２のＤＳＤ１２０をマウントすることを可能にする。言い換えると、リモート・ブロック・リード／ライト・ドライバ２２４は、計算装置１０２上で動作するＯＯＢエージェント２１４と連動して、リモートサーバ１０４が、ＤＳＤ１２０をマッピングした後、あたかもＤＳＤ１２０がリモートサーバ１０４のローカルのメモリデバイスに存在するかのように、ＤＳＤ１２０にアクセスすることを可能にする。リモートサーバ１０４によってＤＳＤ１２０がマウントされると、リモート・ブロック・リード／ライト・ドライバ２２４は、ＤＳＤ１２０上の特定のＬＢＡのデータを読み出すための要求を、ＯＯＢエージェントに送信してよい（上述の通り、ＯＯＢエージェントは、その後、ＡＨＣＩドライバ２０２に転送する。）。要求されたデータが返されると、ＯＯＢエージェント２１４は、ＯＯＢ通信モジュール２１８を用いて、このデータを（何らかの関連する認証メタデータ（associated authentication metadata）と一緒に）、リモートサーバ１０４のリモート・ブロック・リード／ライト・ドライバ２２４に転送してよい。リモート・ブロック・リード／ライト・ドライバ２２４は、その後、要求されたデータをＩＳＶアプリケーション２２２に提供してもよく、このデータをディスクイメージ２２８の一部として記憶してもよい。
【００３１】
リモート・ブロック・リード／ライト・ドライバ２２４は、関連する認証メタデータを用いてＤＳＤ１２０から読み出されたデータの信頼性を検証する検証モジュール２３０を有する。上述の通り、認証メタデータがＭＡＣを含む場合、（検証モジュール２３０が、暗号化エンジン２１２によって使用された共有秘密鍵を所有していると仮定すると、）検証モジュール２３０は、読み出されたデータにハッシュ関数を再適用して、その出力と、認証メタデータに含まれるＭＡＣとを比較してよい。追加的または代替的に、検証モジュール２３０は、認証メタデータ中のカウンタ値と、データがＤＳＤ１２０から読み出されたはずである時間とを比較して、反射攻撃から保護する。認証メタデータが電子署名を含む場合、（検証モジュール２３０が、暗号化エンジン２１２によって使用された秘密鍵に対応する公開鍵を所有していると仮定すると、）検証モジュール２３０は、認証メタデータを用いて、署名検証アルゴリズムを適用してよい。検証モジュール２２０は、いくつかの実施形態においてＯＯＢエージェント２１４に含まれてよく、データをリモートサーバ１０４に送信する前に、実質的に同様の方法で、ＤＳＤ１２０から読み出されたデータの信頼性を検証してよい。検証モジュール２２０を用いる実施形態においては（データの信頼性はすでに検証されているので、）、リモート・ブロック・リード／ライト・ドライバ２２４から検証モジュール２３０が省略されてよく、ＯＯＢエージェント２１４が認証メタデータをリモートサーバ１０４に送信することを見合わせてもよい。
【００３２】
ＯＯＢプロセッサ上で動作するＯＯＢエージェント２１４と、ＤＳＤ１２０上で動作する暗号化エンジン２１２のいくつかの特徴により、システム１００は、リモートサーバ１０４から、計算装置１０２のＤＳＤ１２０の安全性検査を提供することができる。図３において説明されるとおり、計算装置１０２は、ネットワーク１０６を介して安全性検査を提供する方法３００を実行するよう構成されている。一般に、方法３００には、ＤＳＤ１２０からの認証メタデータの検索（retrieval）が含まれる。認証メタデータの検索は、ＯＯＢエージェント２１４またはリモートサーバ１０４のリモート・ブロック・リード／ライト・ドライバ２２４によって、ＤＳＤ１２０から読み出されたデータの信頼性を検証するために用いられてよい。例えば、ＯＯＢプロセッサ１２４、インバンド・プロセッサ１１０およびＤＳＤ１２０のハードウエアは、システム１００のその他の要素と交信してよく、計算装置１０２のその他の要素と連動しながら、方法３００を実行してよい。方法３００は、いかなる目的に対しても、リモートサーバ１０４からのＤＳＤ１２０の安全性検査を可能にしてよい。上記の目的は限定されるものではないが、上記の目的には、ウイルス防止検査、マルウエア除去、システム修理、システム・リイメージング、および、ファイル／フォルダへの安全なアクセスが含まれる。
【００３３】
方法３００は、まず、ブロック３０２から始まる。ブロック３０２において、ＯＯＢエージェント２１４は、リモートサーバ１０４によるＤＳＤ１２０のリモートマウントを確立する。ＤＳＤ１２０のリモートマウントは、計算装置１０２またはリモートサーバ１０４のいずれかによって開始されてよい。リモートサーバを用いてデータ記憶装置をネット経由でマウントするプロセスの１つであって、方法３００のブロック３０２において採用される可能性のあるプロセスが、現在係属中の米国特許出願１２／４７５，２１６に開示されている。上記の米国特許出願は、２００９年の５月２９日に出願され、本出願の譲受人（assignee）に委譲されている。本明細書に記載されるように、リモート・ブロック・リード／ライト・ドライバ２２４が、ＤＳＤ１２０のマスターブートレコード（ＭＢＲ）、１以上のブートセクタおよび／または１以上のマスタファイルテーブル（ＭＦＴｓ）を要求して、ＯＯＢエージェント２１４が送信してよい。このデータ（大容量記憶デバイス１３８上のディスクイメージ２２８の一部に記憶されてよい。）は、リモート・ブロック・リード／ライト・ドライバ２２４がＤＳＤ１２０をマッピングすることを可能にしてよい。ＤＳＤ１２０からのデータが１以上のＩＳＶアプリケーション２２２によって要求されるときはいつでも、その後に、リモート・ブロック・リード／ライト・ドライバ２２４が、ＤＳＤ１２０のＭＢＲ、ブートセクタおよび／またはＭＦＴｓを用いて、ＯＯＢエージェント２１４からの要求に対するＬＢＡを決定してよい。
【００３４】
方法３００のブロック３０４において、ＯＯＢエージェント２１４が、ネットワーク１０６を介して、リモート・ブロック・リード／ライト・ドライバ２２４から、ブロック読み込み要求を受信する。ＯＯＢエージェント２１４は、ＯＯＢ通信モジュール２１８を用いて、この要求を受信する。当然のことながら、ＯＯＢエージェント２１４は、持続する電力と、ＯＯＢプロセッサ１２４および通信回路１１６によって維持されているアウト・オブ・バンドの通信チャネルとのおかげで、計算装置１０２のインバンド・プロセッサ１１０が、ＯＳ２００を実行していない、電力低減状態にあるまたは電源がオフの状態にあるときであっても、リモートサーバ１０４からのそのような要求を受信できる状態にある。説明のための実施形態はリモートサーバ１０４とＯＯＢプロセッサ１２４との間で（通信回路１１６および通信回路１３６を経由して、）直接通信される場合について説明しているけれども、リモートサーバ１０４が、１以上のホストを利用したチャネル（例えば、インバンド・プロセッサ１１０およびＯＳ２００をも含む。）を経由して、ＯＯＢプロセッサ１２４と通信してよいことも考えられる。
【００３５】
ブロック３０６において、ＯＯＢエージェント２１４は、リモート・ブロック・リード／ライト・モジュール２１６を用いて、計算装置１０２のインバンド・プロセッサ１１０上で動作している適切なホストドライバに対して、ブロック読み出し要求を転送する。インバンド・プロセッサ１１０がＯＳ２００を実行しているとき（すなわち、ＯＳ２００がすでに起動しているとき）、上述のように、ＯＯＢエージェント２１４が、ＡＨＣＩドライバ２０２に対して、ブロック読み出し要求を転送してよい。しかしながら、インバンド・プロセッサ１１０が電力低減状態にあるもしくは電源がオフの状態にあるとき、または、ＯＳ２００がまだ起動していないときには、その代わりに、リモート・ブロック・リード／ライト・モジュール２１６が、ブロック読み出し要求を、計算装置１０２のＢＩＯＳドライバに命令してよい（ＢＩＯＳドライバへのアクセスを与えるのに必要であれば、ＯＯＢプロセッサ１２４によって、計算装置１０２に電力が供給されてよい。）。そのような実施形態において、ＯＯＢエージェント２１４は、計算装置１０２のＯＳ２００の状態に関わらず、リモートサーバ１０４にＤＳＤ１２０へのアクセスを提供してよい。
【００３６】
ブロック３０８において、ＡＨＣＩドライバ２０２（またはその他のホストドライバ）が、認証ストレージ命令（authentication storage command）をＤＳＤインターフェース・モジュール２１０に送信する。ＡＨＣＩドライバ２０２は、ＯＯＢエージェント２１４から転送されたブロック読み出し要求を受信すると、ライブラリ２０６から、適切なＩＯＴＣＬメッセージを選択する。図２および図３の説明のための実施形態において、ＡＨＣＩドライバが、ＯＯＢ  ＡＰＩ２０８経由で読み出し要求を受信したときはいつでも、ＡＨＣＩドライバは、要求されたデータを読み出すだけでなく、ＤＳＤ１２０に認証メタデータをも生成させるストレージ命令を選択して送信する。このようにして、リモート・ブロック・リード／ライト・ドライバ２２４に起因する全ての要求が認証メタデータをもたらすことになる。認証メタデータは、ＤＳＤ１２０から読み出されたデータの信頼性を検証するのに用いられてよい。
【００３７】
ブロック３１０において、ＤＳＤインターフェース・モジュール２１０が、ＡＨＣＩ２０２からの認証ストレージ命令を受信したことに応じて、要求されたデータを、ＤＳＤ１２０から読み出し、暗号化エンジン２１２を用いて、認証メタデータを生成する。認証メタデータは、上述したタイプのものであればいかなるものであってもよく、例えば、ＭＡＣ、カウンタ値、電子署名、暗号化ハッシュ値および／またはそれらと同様のものであってよい。ブロック３１２において、ＤＳＤインターフェース・モジュール２１０は、ＤＳＤ１２０から読み出されたデータと、ＤＳＤ１２０によって生成された認証メタデータとを、ＡＨＣＩ２０２に返す。ブロック３１４において、ＡＨＣＩ２０２は、そのデータと認証メタデータとを、ＯＯＢエージェント２１４のリモート・ブロック・リード／ライト・モジュール２１６に転送する。
【００３８】
検証モジュール２２０を採用する実施形態において、方法３００は、オプションのブロック３１６に進む。ブロック３１６において、ＯＯＢエージェント２１４が、ＤＳＤ１２０によって生成された認証メタデータを用いて、ＤＳＤ１２０から読み出したデータを検証する。ＤＳＤ１２０から読み出されたデータの信頼性の検証は、上述されたいかなる方法を用いて実行されてもよい。オプションのブロック３１６の後（または、検証モジュール２２０のない実施形態においては、ブロック３１４の後）、方法３００は、ブロック３１８に進む。ブロック３１８において、ＯＯＢエージェント２１４は、ＯＯＢ通信モジュール２１８を用いて、ネットワーク１０６を介して、データおよび認証メタデータを、リモート・ブロック・リード／ライト・ドライバ２２４に送信する。
【００３９】
（ブロック３２０は、オプションのブロック３１６を実施する実施形態においては、スキップされてよいけれども、）ブロック３２０において、リモート・ブロック・リード／ライト・ドライバ２２４は、認証モジュール２３０を使用して、認証メタデータを用いてデータを検証してよい。ＤＳＤ１２０から読み出されたデータの信頼性の検証は、上述されたいかなる方法を用いて実行されてもよい。データが検証されると、リモート・ブロック・リード／ライト・ドライバ２２４は、要求されたデータをＩＳＶアプリケーション２２２に提供してよい、および／または、ディスクイメージ２２８の一部として、このデータを記憶してよい。リモート・ブロック・リード／ライト・ドライバ２２４が、ネットワーク１０６を介して、ＯＯＢエージェント２１４に別のブロック読み出し要求を送信した場合、方法３００は、ブロック３０４に戻ってよい（それぞれのサイクルの間、ブロック３０２は、繰り返されなくてもよい。）。
【００４０】
次に、図４を参照すると、システム１００の計算装置１０２およびリモートサーバ１０４上で動作するソフトウエア／ファームウエア環境の説明のための実施形態の他の例が、簡略化されたブロック図として示されている。図４の実施形態は、類似する参照番号を用いて表示される、図２と同様の要素およびモジュールを有してよい。これらの要素およびモジュールの動作は、以下で説明される動作を除いて、図２を参照して説明された要素およびモジュールの動作と、実質的に同様であってよい。例えば、ＤＳＤインターフェース・モジュール２１０、ＯＯＢエージェント２１４およびリモートサーバ１０４のソフトウエアスタック（ＯＳ、１以上のＩＳＶアプリケーション２２２、リモート・ブロック・リード／ライト・ドライバ２２４ならびにファイルシステムおよびその他のフィルタドライバ２２６を含む。）の動作は、これらのモジュールが暗号化エンジン２１２、検証モジュール２２０または検証モジュール２３０を有しないこと以外は、図２を参照して説明された要素およびモジュールと同様であってよい。この説明のための実施形態において、ＤＳＤ１２０から読み出されたデータの信頼性が、メタデータを用いることなく保証される。
【００４１】
図４に示すとおり、計算装置１０２のソフトウエアスタックは、ＯＳ２００、ＡＨＣＩドライバ２０２、ならびに、ファイルシステムおよびその他のフィルタドライバ２０４を含む（それらは、それぞれ、インバンド・プロセッサ１１０によって実行される、および／または、システムメモリ１１４もしくはＤＳＤ１２０に記憶されてよい。）。加えて、ソフトウエアスタックは、インバンド・プロセッサ１１０上で動作するセキュア・コンテナ４００を含んでよい。セキュア・コンテナ４００は、安全な（secure）メモリおよび／または実行空間（execution space）として実現されてよい。すなわち、セキュア・コンテナ４００は、ＯＳ２００から独立に維持され、ドライバ２０２およびドライバ２０４と結び付けられ、これらのソフトウエアモジュールに直接アクセスすることはできない（これにより、セキュア・コンテナ４００の安全性を維持することができる。）。図４の説明のための実施形態において、ＡＨＣＩドライバ２０２ではなく、セキュア・コンテナ内で動作するホストドライバが、ＤＳＤ１２０へのアクセスに対する直接的な責任を有する。ＯＳ２００は、やはり、ＡＨＣＩドライバ２０２を介して、ＤＳＤ１２０に間接的にアクセスする。しかし、ＡＨＣＩドライバ２０２は、チップセットファームウエア含まれる１以上のファームウエア・フック４０２を信頼して、セキュア・コンテナ４００の中で動作するドライバに要求を渡す。
【００４２】
セキュア・コンテナ４００の中で動作するドライバは、ストレージ命令ライブラリ２０６およびＯＯＢ  ＡＰＩ２０８（図２において説明された実施形態のＡＨＣＩ２０２のＯＯＢ  ＡＰＩに類似する。）を有する。この実施形態において、ＯＯＢエージェント２１４は、リモートサーバ１０４に、セキュア・コンテナ４００の中で動作するホストドライバを経由したＤＳＤ１２０へのアクセスを提供する。リモート・ブロック・リード／ライト・モジュール２１６およびＯＯＢ通信モジュール２１８は、リモート・ブロック・リード／ライト・モジュール２１６が、ＡＨＣＩ２０２ではなく、セキュア・コンテナ４００の中で動作するドライバのＯＯＢ  ＡＰＩ２０８に対して、ブロック読み出し要求を転送する点を除いて、上述のものと同様に機能する。ＯＯＢ  ＡＰＩ２０８は、ＯＯＢエージェント２１４からのメッセージを受信し、ドライバに対して、ライブラリ２０６から適切なストレージ命令を選択して送信するよう指示するように構成される。ＤＳＤ１２０から読み出されたデータは、ドライバに返され、ＯＯＢエージェント２１４に直接転送される。このデータ転送の間、ＯＳ２００および関連するドライバ２０２およびドライバ２０４が迂回されてよいので、このセキュリティ上の懸念が除去され、ＤＳＤ１２０が認証メタデータを生成する必要がない。
【００４３】
インバンド・プロセッサ１１０上で動作するセキュア・コンテナ４００と、ＯＯＢプロセッサ１２４上で動作するＯＯＢエージェント２１４との特徴のいくつかにより、システム１００は、リモートサーバ１０４からの計算装置１０２の安全性検査を提供することができる。図５において説明されるとおり、計算装置１０２は、ネットワーク１０６を介して、安全性検査を提供する方法５００を実行するように構成されてよい。一般的に、方法５００は、ＯＯＢエージェント２１４が、セキュア・コンテナ４００の中で動作するホストドライバと交信して、ＤＳＤ１２０から読み出されたデータの信頼性を保証する段階を有する。例えば、ＯＯＢプロセッサ１２４、インバンド・プロセッサ１１０およびＤＳＤ１２０のハードウエアは、システム１００のその他の要素と交信してよく、計算装置１０２のその他の要素と連動しながら、方法５００を実行してよい。方法５００は、いかなる目的に対しても、リモートサーバ１０４からのＤＳＤ１２０の安全性検査を可能にしてよい。上記の目的は限定されるものではないが、上記の目的には、ウイルス防止検査、マルウエア除去、システム修理、システム・リイメージング、および、ファイル／フォルダへの安全なアクセスが含まれる。
【００４４】
方法５００は、まず、ブロック５０２から始まる。ブロック５０２において、ＯＯＢエージェント２１４は、リモートサーバ１０４によるＤＳＤ１２０のリモートマウントを確立する。ブロック５０４において、ＯＯＢエージェント２１４が、ネットワーク１０６を介して、リモート・ブロック・リード／ライト・ドライバ２２４から、ブロック読み込み要求を受信する。ＤＳＤ１２０のリモートマウントの確立と、ブロック読み出し要求の受信は、大体、図３のブロック３０２およびブロック３０４を参照して説明されたように実行されてよい。
【００４５】
ブロック５０６において、ＯＯＢエージェント２１４は、リモート・ブロック・リード／ライト・モジュール２１６を用いて、計算装置１０２のインバンド・プロセッサ１１０上のセキュア・コンテナ４００の中で動作するホストドライバに、受信したブロック読み出し要求を転送する。ブロック５０８において、セキュア・コンテナ４００の中で動作するドライバは、ＤＳＤインターフェース・モジュール２１０に、ストレージ命令を送信する。セキュア・コンテナ４００の中で動作するドライバは、ＯＯＢエージェント２１４から転送されたブロック読み出し要求を受信すると、ライブラリ２０６から、適切なＩＯＴＣＬメッセージを選択する。
【００４６】
ブロック５１０において、セキュア・コンテナ４００の中で動作するドライバからストレージ命令を受信したことに応じて、ＤＳＤインターフェース・モジュール２１０が、要求されたデータをＤＳＤ１２０から読み出だす。ブロック５１２において、ＤＳＤインターフェース・モジュール２１０が、ドライバに、ＤＳＤ１２０から読み出されたデータを返す。ブロック５１４において、セキュア・コンテナ４００の中で動作するドライバが、データと認証メタデータとを、ＯＯＢエージェント２１４のリモート・ブロック・リード／ライト・モジュール２１６に転送する。方法５００は、ブロック５１６で終了する。ブロック５１６において、ＯＯＢエージェント２１４は、ＯＯＢ通信回路２１８を用いて、ネットワーク１０６を介して、リモート・ブロック・リード／ライト・ドライバ２２４に、データを送信する。リモート・ブロック・リード／ライト・ドライバ２２４が、ネットワーク１０６を介して、ＯＯＢエージェント２１４に別のブロック読み出し要求を送信した場合、方法５００は、ブロック５０４に戻ってよい（それぞれのサイクルの間、ブロック５０２は、繰り返されなくてもよい。）。
【００４７】
開示が図解され、図面および上述の記載により詳細に説明された。しかし、そのような図および説明は、一例と考えられるべきであり、文字通りに制限するものと考えられるべきではない。単に説明のための実施形態が示され、説明されていると理解されるべきであり、開示の精神および添付の特許請求の範囲でカバーされる全ての変更および改良が、保護されるべきと理解されるべきである。
【図１】
2011253525.tif 000003
【図２】
2011253525.tif 000004
【図３】
2011253525.tif 000005
【図４】
2011253525.tif 000006
【図５】
2011253525.tif 000007
【外国語明細書】
2011253525000001.pdf