説明

リモートサーバからデータ記憶装置の安全性を検査する方法および装置

【課題】検査されたデータが、データ記憶媒体から実際に読み出されたものであり、なんらかのマルウエアによって不当に提供されたものではないことを保証する。
【解決手段】計算装置102は、インバンド・プロセッサ110と、リモートサーバ104と情報をやり取りする通信回路116と、オペレーション・システムの状態に関わらず、通信回路116を用いてリモートサーバ104と情報をやり取りすることができるアウト・オブ・バンド・プロセッサ124とを備える。アウト・オブ・バンド・プロセッサ124は、リモートサーバ104からブロック読み出し要求を受信し、少なくとも1つのホストドライバに指示して、データ記憶装置120にストレージ命令を送信させ、データ記憶装置120から読み出されたデータと、データ記憶装置120によって生成された認証メタデータとを受信し、データおよび認証メタデータを、リモートサーバ104に送信する。

【発明の詳細な説明】
【背景技術】
【0001】
ハードディスクドライブまたはソリッドステートドライブのようなデータ記憶装置上に存在するデータは、例えば、変造(corruption)または悪意のあるソフトウエア(マルウエア)による攻撃の対象となる。独立系ソフトウエアベンダー(ISV)によって、変造されたデータ若しくはマルウエアを検出する、および/または、データのバックアップコピーを提供することを目的として、データ記憶装置を検査する(scan)ウイルス防止(anti-virus)および監視(manageability)ソフトウエアパッケージが開発されている。記憶装置(storage)、セキュリティおよび監視に関するISVのいくつかは、例えばインターネットを介して、ウイルス防止検査、マルウエア除去、システム修理またはシステム・リイメージング(system reimaging)のようなサービスを提供している。これらのインターネットを使った(Internet-based)サービスは、概して、ローカルの計算装置上で動作するローカル・ソフトウエア・エージェントに未だに依存している。
【発明の概要】
【0002】
しかしながら、これらのソフトウエア・ソリューション自体が、検出から隠れることを前提として動作するルートキット、スパイウエアおよびその他の種類のマルウエアによる攻撃の対象となる。例えば、記憶スタックの中にフィルタドライバとして隠れたマルウエアは、データ記憶装置の検査が要求されたときに、ウイルス防止または監視ソフトウエアに対して、未認証データ(non-authentic data)を提供することができるかもしれない(その結果、現実の、変造されたデータをソフトウエアから隠すことができるかもしれない。)。つまり、ウイルス防止または監視ソフトウエアによって検査されたデータは、データ記憶装置上に現実に存在するデータではないかも知れない。その上、ひとたび、ルートキットがプラットフォーム上(例えば、マスター・ブート・レコードの中)に隠れると、ルートキットは、ユーザの全ての動作を観察したり、ユーザ情報を獲得(capture)したり、ユーザの行動の迂回(circumvention)およびその他の悪意のある動作を実行したりすることができる。ユーザから隠れて、コンピュータ・システムのバックグラウンドで実行し、機密情報を収集してシステムの速度を大幅に低下させるルートキット、スパイウエアおよびその他のマルウエアが、益々発見されてきている。
【0003】
本明細書に記載されているシステム、装置および方法が、発明を限定する目的ではなく、一例として、添付図面の中に記載されている。簡単かつ明確に説明する目的で、図面中に記載された要素は必ずしも縮尺どおりには記載されていない。例えば、説明を明確にする目的で、いくつかの要素の寸法は、他の要素と比較して大きく記載されている可能性がある。
【図面の簡単な説明】
【0004】
【図1】リモートサーバから計算装置のデータ記憶装置の安全性検査(secure scan)を提供するように構成されたシステムの一実施形態の概略ブロック図を示す。
【図2】図1の計算装置およびリモートサーバのソフトウエア/ファームウエア環境(environment)の一実施形態の概略ブロック図を示す。
【図3】図1のシステムおよび図2のソフトウエア環境を用いて、リモートサーバからデータ記憶装置の安全性検査を提供する方法の一実施形態の概略フロー図を示す。
【図4】図1の計算装置およびリモートサーバのソフトウエア/ファームウエア環境の他の実施形態の概略ブロック図を示す。
【図5】図1のシステムおよび図4のソフトウエア環境を用いて、リモートサーバからデータ記憶装置の安全性検査を提供する方法の一実施形態の概略フロー図を示す。
【発明を実施するための形態】
【0005】
ここに開示される概念(concept)は、様々に改変されたり、他の形態に代替されたりしてよい。一方、ここに開示される特定の例示的な実施形態は、一例として、図示されており、図面に詳細に記載されている。しかしながら、ここに開示される概念を開示された特定の形態に限定することを意図するものではなく、それどころか、添付の特許請求の範囲によって定義される発明の精神(spirit)および範囲(scope)に含まれる改変、均等物および代替物の全てをカバーすることを意図している。
【0006】
以下の記載において、本開示の理解をより完全なものにする目的で、ロジックの実装(logic implementation)、オペコード(opcode)、オペランド特定手段(means to specify operands)、リソースのパーティショニング/シェアリング/複製の実装、システム要素のタイプおよび相互関係、ならびに、ロジックの分割/統合の選択のような、多くの特定の詳細が記載される可能性がある。しかしながら、当然のことながら、当業者であれば、そのような特定の詳細の記載がなくとも、本開示の実施形態を実施することができる。開示がわかりにくくなることを防止する目的で、他の実施形態においては、制御構造、ゲートレベル回路および完全なソフトウエア実行シーケンスの詳細について示されていない可能性がある。本明細書の記載に接した当業者は、過度の実験をしなくても、適切な機能を実行することができるであろう。
【0007】
明細書中の「一実施形態」、「ある実施形態」、「例示的な実施形態」などへの言及は、記載されている実施形態が特定の特徴、構造または特性を含んでよいことを示す。しかし、必ずしも全ての実施形態において、当該特定の特徴、構造または特性が含まれる必要はない。さらに、そのような文言が、必ずしも同一の実施形態について言及している必要もない。その上、特定の特徴、構造または特性が、ある実施形態に関連して記載されるときには、そのことが明示的に記載されているかどうかに関わらず、他の実施形態に関しても、そのような特徴、構造または特性を生じさせることが、当業者の知識の範囲内であると考えられる。
【0008】
開示されるいくつかの実施形態は、ハードウエア、ファームウエア、ソフトウエアまたはそれらの組合せに組み入れられてよい。開示される計算装置に組み入れられる実施形態は、1以上のバスを利用した(bus-based)要素間相互接続、および/または、1以上の2点間の(point-to-point)要素間相互接続を含んでよい。発明の実施形態は、1以上の有形の機械可読媒体に格納され、1以上のプロセッサによって読み込まれ、実行される命令(instruction)として実現されてもよい。有形の機械可読媒体は、機械(例えば計算装置)によって読み込まれる形で、情報を記憶または伝達するための有形の機構であれば、いかなるものであってもよい。例えば、有形の機械可読媒体は、リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ、および、その他の有形の媒体を含んでよい。
【0009】
本開示は、広く、リモートサーバからデータ記憶装置の安全性検査を提供する方法および装置に関連する。これらの方法および装置は、検査されたデータが、データ記憶媒体から実際に読み出された(retrieved)ものであり、なんらかのマルウエア(例えば、計算装置上に隠れているルートキット)によって不当に提供されたものではないことを保証する。本開示によれば、アウト・オブ・バンド(OOB)エージェントが用いられて、リモートサーバとデータ記憶媒体との間におけるブロックの読み込み/書き込みのためのインターフェースを実現する。OOBエージェントは、計算装置のホストドライバと連動して、信頼できる方法でデータ記憶装置からデータを読み出し、このデータをリモートサーバに提供する。OOBエージェントが耐タンパー性(tamper resistant)を有するので、リモートサーバは、そのデータが何らかのマルウエアによって偽造されていないことを保証されてよい。いくつかの実施形態において、OOBエージェントは、データ記憶装置の暗号化エンジンが生成した認証メタデータ(authentication metadata)を読み込んでもよい。この認証メタデータは、データがデータ記憶装置から実際に読み出されたことを検証する目的で、OOBエージェントまたはリモートサーバのいずれかによって用いられてよい。最初に、図1を参照して、システム100の様々なハードウエア要素が以下に記載される。次に、図2および図3を参照して、システム100のソフトウエア/ファームウエア環境として採用しうる一実施形態、および、関連する安全性検査方法300が、以下に記載される。最後に、図4および図5を参照して、システム100のソフトウエア/ファームウエア環境として採用しうる他の実施形態、および、関連する安全性検査方法500が、以下に記載される。
【0010】
図1に関連して、リモートサーバ104からデータ記憶装置120のデータの安全性検査を提供するよう構成されたシステムの一例であるシステム100は、計算装置102と、リモートサーバ104と、計算装置102をリモートサーバ104と通信可能に結合するネットワーク106を含む。図1には、単一の計算装置102と、単一のリモートサーバ104と、単一のネットワーク106とが例示されているが、システム100に含まれる、類似または非類似のアーキテクチャの計算装置102、リモートサーバ104およびネットワーク106の数はいかなるものであってもよい。例えば、計算装置102は、1以上のネットワーク106を介して、複数のリモートサーバ104と通信してもよく、それぞれのリモートサーバ104は、1以上のネットワーク106を介して、複数の計算装置102と通信してよい。
【0011】
計算装置102は、本明細書に記載される機能を実行することができる電子デバイスであれば、いかなるタイプの電子デバイスとして実現されてもよい。一例として、計算装置102は、パーソナル・コンピュータ、ワークステーション、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、携帯型のインターネット・デバイス(mobile internet device)、携帯電話、PDA(personal data assistant)、テレフォニー・デバイス(telephony device)、ネットワーク接続機器(network appliance)、仮想化デバイス(virtualization device)、ストレージ・コントローラまたはその他のコンピュータを利用したデバイスとして実現されてよい。図1に示された例示的な実施形態において、計算装置102は、インバンド・プロセッサ110と、チップセット112と、システムメモリ114と、通信回路116と、一以上の入出力デバイス118と、データ記憶装置120とを含む。いくつかの実施形態において、上述の要素のいくつかは、計算装置102のマザーボード上に組み込まれてよく、その他の要素は、例えばペリフェラル・ポート経由で、マザーボードと通信可能に結合されてよい。さらに、当然のことながら、計算装置102は、その他の要素、サブコンポーネント、ならびに、コンピュータおよび/または計算装置においてよく見られるデバイスを含んでよい。なお、説明をわかりやすくする目的で、それらは、図1には記載されていない。
【0012】
計算装置102のインバンド・プロセッサ110は、ソフトウエア/ファームウエアを実行することができるプロセッサであれば、いかなるタイプのプロセッサであってよく、例えば、マイクロプロセッサ、デジタル・シグナル・プロセッサ、マイクロコントローラまたはそれらと同様のものであってよい。インバンド・プロセッサ110は、例えば、単一のプロセッサコア122を有するシングルコア・プロセッサとして実現されてよい。しかしながら、他の実施形態において、インバンド・プロセッサ110は、複数のプロセッサコア122を有するマルチコア・プロセッサとして実現されてよい。加えて、計算装置102は、1以上のプロセッサコア122を有するインバンド・プロセッサ110をさらに備えてもよい。インバンド・プロセッサ110は、通常、ソフトウエアスタックを実行することができる。ソフトウエアスタックは、(図2および図4に図示され、以下に記載されるように、)計算装置102上に存在するオペレーティング・システム200、様々なアプリケーション、プログラム、ライブラリ、ドライバ202およびドライバ204を含んでよい。
【0013】
計算装置102のチップセット112は、メモリコントローラ・ハブ(MCHまたはノースブリッジ)、入出力コントローラ・ハブ(ICHまたはサウスブリッジ)、および、ファームウエア・デバイスを有してよい。チップセット112のファームウエア・デバイスは、基本入出力システム(BIOS)および/または命令および/またはその他の情報(例えば、計算装置102を起動する間に使用されるBIOSドライバ)を記憶するメモリデバイスとして実現されてよい。その他の実施形態において、その他の構成を有するチップセットが用いられてよい。例えば、いくつかの実施形態において、チップセット112は、プラットフォーム・コントローラ・ハブ(PCH)として実現されてよい。そのような実施形態において、メモリコントローラ・ハブ(MCH)が、インバンド・プロセッサ110の中に組み込まれる、または、その他の方法でインバンド・プロセッサ110に結合されてもよく、(図1において破線で示されているように)インバンド・プロセッサ110が、システムメモリ114と直接通信してもよい。これらのいずれの構成においても、チップセット112は、アウト・オブ・バンド(OOB)プロセッサ124を有してもよい。アウト・オブ・バンドプロセッサ124は、以下に、より詳細に説明される。
【0014】
インバンド・プロセッサ110は、多くの信号経路を経由して、チップセット112と通信可能に結合される。これらの信号経路(および図1において説明されるその他の信号経路)は、計算装置102の要素の間の通信を促進することができる信号経路であれば、いかなるタイプの信号経路として実現されてもよい。例えば、信号経路は、いかなる数のワイヤ、ケーブル、導光路(light guide)、プリント配線基板の配線、ビア、バス、介在する装置(intervening device)および/またはそれらと同様のものであってよい。
【0015】
計算装置102のシステムメモリ114は、多くの信号経路を経由して、チップセット112と通信可能に結合されてもよい。システムメモリ114は、1以上のメモリデバイスまたはデータ記憶番地(data storage location)として実現されてよい。1以上のメモリデバイスまたはデータ記憶番地は、例えば、ダイナミック・ランダム・アクセス・メモリデバイス(DRAM)、シンクロナス・ダイナミック・ランダム・アクセス・メモリデバイス(SDRAM)、ダブルデータレート・シンクロナス・ダイナミック・ランダム・アクセス・メモリデバイス(DDRSDRAM)、フラッシュメモリデバイスおよび/または他の揮発性メモリデバイスであってよい。加えて、図1には単一のシステムメモリ114のみが記載されているけれども、他の実施形態においては、計算装置102は複数のステムメモリ・デバイスをさらに備えてもよい。オペレーティング・システム200、アプリケーション、プログラム、ライブラリ、ドライバ202およびドライバ204は、インバンド・プロセッサ110によって実行されるソフトウエアスタックを構成し、実行中、システムメモリ114の中に駐在してもよい。さらに、システムメモリ114の中に記憶されるソフトウエアおよびデータは、メモリ管理操作の一部として、システムメモリ114およびデータ記憶装置120の間で交換されてよい。
【0016】
計算装置102の通信回路116は、ネットワーク106を介して計算装置102とリモートサーバ104との間の通信を可能にするデバイスおよび回路であれば、いかなる数のデバイスおよび回路として実現されてもよい。ネットワーク106は、いかなるタイプの有線および/または無線のネットワークとして実現されてもよく、例えば、ローカルエリア・ネットワーク、ワイドエリア・ネットワーク、公衆が利用できるグローバルネットワーク(例えば、インターネット)またはそれらのいかなる組合せであってもよい。さらに、ネットワーク106は、計算装置102とリモートサーバ104との間の通信を促進するデバイスであれば、いかなる数のデバイスであっても有してよい。上記デバイスは、例えば、ルータ、スイッチ、介在するコンピュータおよび/またはそれらと同様のものであってよい。通信回路116は、ネットワーク106の有線および/または無線の部分を介して通信を促進する(facilitate)1以上の有線および/または無線のネットワーク・インターフェースを有してよい。通信回路116は、多数の信号経路を介してチップセット112と通信可能に結合され、インバンド・プロセッサ110とOOBプロセッサ124との両方が、ネットワーク106にそれぞれ独立にアクセスできるようにしてよい。
【0017】
計算装置102の入出力デバイス118は、いかなる数の周辺装置(peripheral)またはインターフェース・デバイスを有してよい。説明のための実例として、入出力デバイス118は、計算装置102のディスプレイ、マウス、キーボードおよび/または1以上の外部スピーカを有してよい。入出力デバイス118に含まれる特定のデバイスは、例えば、計算装置102の目的とする用途次第であってよい。入出力デバイス118は、多数の信号経路を介してチップセット112と通信可能に結合されてよく、いくつかの実施形態においては、インバンド・プロセッサ110および/またはチップセット112が、入出力デバイス118からの入力を受信したり、入出力デバイス118に出力を送信したりできるようにしてよい。
【0018】
計算装置102は、データ記憶装置(DSD)120を有してもよい。データ記憶装置120の一例は、短期間または長期間、データを記憶するよう構成されたデバイスであればどのようなものであってもよく、例えば、メモリデバイスおよび回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブまたはその他のデータ記憶装置であってよい。いくつかの実施形態において、DSD120は、DSD120が電力を供給されていないときも記憶されたデータを保持することができる不揮発性メモリを有してよい。加えて、図1には単一のDSD120のみが記載されているけれども、他の実施形態において、計算装置102は、データ記憶装置をさらに備えてよい。DSD120は、多数の信号経路を経由してチップセット112と通信可能に結合してよい。いくつかの実施形態において、DSD120は、周辺構成要素相互接続エクスプレス(PCIe)インターフェースまたはシリアルATアタッチメント(SATA)インターフェースのような高速シリアルリンクを経由してチップセット112と結合してよい。当然のことながら、DSD120とチップセット112との間の他のタイプのインターフェース(例えば、パラレル信号経路)も考えられる。図1の例示的な実施形態において、DSD120は、暗号化回路126を備えてよい。暗号化回路126は、(図2に示すように)DSD120に、ハードウエアを利用した暗号化エンジン212を提供してよい。以下においてさらに記載されるように、暗号化回路126(およびそれとともに実現される暗号化エンジン212)は、DSD120が、DSD120から読み出されたデータに対応する認証メタデータをローカルで生成することを可能にしてよい。
【0019】
チップセット112は、アウト・オブ・バンド(OOB)プロセッサ124を有してよい。アウト・オブ・バンドプロセッサ124は、インバンド・プロセッサ110とは異なるプロセッサであり、通常、インバンド・プロセッサ110と独立して動作する。OOBプロセッサ124は、ソフトウエア/ファームウエアを実行することができるプロセッサであれば、いかなるタイプのプロセッサであってよく、例えば、マイクロプロセッサ、デジタル・シグナル・プロセッサ、マイクロコントローラまたはそれらと同様のものであってよく、1以上のプロセッサコア(図示しない。)を含む1以上のプロセッサを有してよい。図1において、OOBプロセッサ124は、チップセット112に統合されているように説明されているけれども、他の実施形態において、OOBプロセッサ124は、多数の信号経路を経由してチップセット112と通信可能に結合されている拡張ボード上に配された1以上の別々の集積回路として実現されてもよい。いくつかの実施形態において、OOBプロセッサ124は、多数の信号経路を経由して、計算装置102の様々な要素(例えば、システムメモリ114および通信回路116)と独立して通信可能に結合されてよい。その代案として、または、それに加えて、OOBプロセッサ124は、専用メモリおよび/または専用通信回路(図示されていない)のような、類似の機能を有する組み込み要素(built-in component)を有してよい。
【0020】
OOBプロセッサ124は、計算装置102のインバンド・プロセッサ110またはオペレーション・システム200の動作状態に関係なく、計算装置102の特定の機能を管理するように構成されている。そのような独立した動作を促進する目的で、OOBプロセッサ124は、計算装置102の電源回路(図示されていない。)に独立して接続されてよい。これにより、計算装置102の他の要素が出力を下げられたまたは電源を切られた場合であっても、OOBプロセッサ124は電力を保持することができる。さらに、OOBプロセッサ124は、通信回路116を経由して、1以上の独立したネットワーク・インターフェースを提供されてよい。通信回路116もまた、電源回路(図示されていない。)に独立して接続され、ネットワーク106を介して、アウト・オブ・バンド通信を可能にする。言い換えれば、OOBプロセッサ124は、インバンド・プロセッサ110上で動作しているオペレーション・システム200の外側へ、ネットワーク106上のデバイス(例えば、リモートサーバ104)と直接通信することができる。実際、この通信は、ユーザに認識されることなく実行されてよい。OOBプロセッサ124は、計算装置102を、オペレーション・システム200の起動を含む全出力運転状態に戻させることもできる。要約すれば、OOBプロセッサ124は、要求/コマンドの着信に基づいて、自動制御によって(intelligently)動作してよい。また、インバンド・プロセッサ110の電源が切られているか、待機状態で実行しているか、初期化されているか、または、通常動作中であるのかどうか、および、オペレーション・システム200が起動しているか、実行しているか、クラッシュしているか、あるいはそうでないのかを、ネットワーク106上で通信してよい。
【0021】
いくつかの説明のための実施形態において、OOBプロセッサ124は、インテル(登録商標)・アクティブ・マネジメント・テクノロジ(インテル(登録商標)AMT)もしくはインテル(登録商標)AMTの一部を用いて、または、インテル(登録商標)・マネジメント・エンジン(インテル(登録商標)ME)を用いて実現されてよい。これらは全て、カルフォルニア州サンタクララのインテルコーポレーションから入手できるものであってもよく、および/または、インテルコーポレーションによって販売されているチップセットに含まれるものであってもよい。インテルAMT(登録商標)の組み込みプラットフォーム技術(embedded platform technology)は、エンドポイント・デバイス(endpoint device)のそれぞれのハードウエアおよび非揮発性メモリに格納されたソフトウエア情報に、アウト・オブ・バンドでアクセスすることを可能にする。インテルAMT(登録商標)の組み込みプラットフォーム技術(embedded platform technology)によって、機能しているオペレーション・システムおよび他の管理ツールにおいて見られるような多くのソフトウエア・エージェントが不要になる。
【0022】
リモートサーバ104は、計算装置102とは別の計算装置であれば、いかなる計算装置として実現されてよい。一例として、リモートサーバ104は、パーソナル・コンピュータ、ワークステーション、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、携帯型のインターネット・デバイス(mobile internet device)、携帯電話、PDA(personal data assistant)、テレフォニー・デバイス(telephony device)、ネットワーク接続機器(network appliance)、仮想化デバイス(virtualization device)、ストレージ・コントローラ、または、ネットワーク106を介して、計算装置102と通信するよう構成されたその他のコンピュータを利用したデバイスとして実現されてよい。図1に示される説明のための実施形態において、リモートサーバ104は、プロセッサ130と、チップセット132と、システムメモリ134と、通信回路136と、1以上の大容量記憶装置138を備える(これらのそれぞれは、計算装置102のインバンド・プロセッサ110、チップセット112、システムメモリ114、通信回路116およびデータ記憶装置120のそれぞれと、同様の構成を有してよく、同様に動作してよい。)。リモートサーバ104は、その他の構成を有してよく、および/または、図1に示されていないその他の要素(例えば、1以上の入出力デバイス)を有してもよいと考えられる。
【0023】
次に、図2を参照すると、システム100の計算装置102およびリモートサーバ104の上で動作するソフトウエア/ファームウエア環境に関する説明のための一実施形態が、簡略化されたブロック図として示されている。計算装置102のソフトウエアスタックは、オペレーション・システム(OS)200と、アドバンスド・ホストコントローラ・インターフェース(AHCI)ドライバ202と、ファイルシステムおよびその他のフィルタドライバ204とを含む(これらのそれぞれは、インバンド・プロセッサ110によって実行され、および/または、システムメモリ114の中またはDSD120上に格納されてよい。)。OS200は、ユーザスペース(リング3)に存在して(reside)、計算装置102のユーザが、通常、交信する(typically interact)、よりハイレベルのアプリケーションを提供する(host)。OS200は、AHCIドライバ202を含めて、カーネル(リング0)に存在するファイルシステムおよびフィルタドライバ204に対して、計算装置102のハードウエア要素(例えば、DSD120)にアクセスするよう要求する。当然のことながら、いくつかの実施形態において、OS200ならびに/またはドライバ202およびドライバ204を含むこれらのソフトウエアモジュールは、いかなるものであっても、ファームウエアまたはハードウエアの中に、部分的にまたは完全に組み入れられてよい。
【0024】
AHCIドライバ202は、DSD120のインターフェース・モジュール210と互いに交信して、様々な読み込み/書き込み操作を実行するよう構成差荒れているので、図2においては、AHCIドライバ202と、ファイルシステムおよびその他のフィルタドライバ204とが別々に示されている。特に、AHCIドライバ202は、AHCIドライバ202によってDSDインターフェース・モジュール210に送られる可能性のあるストレージ命令(storage command)のライブラリ206を含む。ライブラリ206に含まれるこれらのストレージ命令は、DSD120に対して、何らかの動作を実行させるための要求および/または命令である。例えば、DSD120が、PCIeインターフェースを経由して接続されたNANDフラッシュメモリデバイスである場合には、AHCIドライバ202は、DSD120に様々な読み込み/書き込み動作を実行させるストレージ命令のうち、NAND命令ライブラリ206を含んでよい。別の例として、DSD120が、SATAインターフェースを経由して接続されたソリッドステートドライブである場合には、AHCIドライバ202は、DSD120に様々な読み込み/書き込み動作を実行させるストレージ命令のうち、ATA命令ライブラリ206を含んでよい。上述の通り、AHCIドライバ202が、(例えば、OS200によって)DSD120中のある特定の(certain)論理ブロックアドレス(LBA)のデータを読み出すことを要求されると、AHCIドライバ202は、ライブラリ206から適切なストレージ命令を選択し、このストレージ命令をDSD120に送信する。図2に示された説明のための実施形態は、AHCIドライバ202を用いて、DSDインターフェース・モジュール210に対するインターフェースを実現しているけれども、DSD120にアクセスすることができる計算装置102のホストドライバであれば(すなわち、適切なストレージ命令ライブラリ206を有していれば)、いかなるホストドライバであっても、AHCIドライバ202に追加して、または、AHCIドライバ202の代わりに用いることができると考えられる。いくつかの実施形態において、例えば、カルフォルニア州サンタクララのインテルコーポレーションから入手できる、インテル(登録商標)急速記憶テクノロジ(インテル(登録商標)RST)ドライバが用いられてよい。
【0025】
図2の計算装置102は、DSDインターフェース・モジュール210のような、DSD120上で実行される可能性のあるいくつかのファームウエア・モジュールと、OOBプロセッサ124上で実行される可能性のあるOOBエージェント214とを有してもよい。それぞれ、DSD120のファームウエアおよびチップセット112のファームウエアの中に存在するように記載されているけれども、DSDインターフェース・モジュール210およびOOBエージェント214は、それぞれ、追加的または代替的に、1以上のハードウエアおよび/またはソフトウエアモジュールとして実現されてもよい。上述の通り、DSDインターフェース・モジュール210は、大抵、AHCIドライバ202(または、その他のホストドライバ)からストレージ命令を受信して、DSD120を制御して、様々な動作(例えば、読み込み/書き込み動作)を実行させるように構成されている。
【0026】
DSDインターフェース・モジュール210は、ハードウエアを利用した暗号化エンジン212を有してよい。暗号化エンジン212は、DSD120の暗号化回路126によって実行されるファームウエアまたはソフトウエアを含んでよい。いくつかの実施形態において、DSDインターフェース・モジュール210は、暗号化エンジン212を用いて、AHCIドライバ202からの特定のストレージ命令(または、ストレージ命令の特定のクラスもしくはカテゴリ)に応じて、DSD120から読み出されたデータに対応する認証メタデータを生成させるように構成されてよい。その他の実施形態において、暗号化エンジン212は、DSDインターフェース・モジュール210によって受信された何らかのストレージ命令に応じて、DSD120から読み出されたデータに対応する認証メタデータを生成してよい。説明のための例として、暗号化エンジン212は、(信頼できるコンピューティング団体(Trusted Computing Group)によって公表された)オパールセキュリティサブシステムクラス標準に準拠するファームウエアの中に統合されてよい。
【0027】
DSD120の暗号化エンジン212によって生成された認証メタデータは、関連データの信頼性を検証するのに用いられる形態であれば、いかなる形態であってもよい。いくつかの実施形態において、暗号化エンジン212は、メッセージ認証符号(MAC)を生成してよい。メッセージ認証符号は、DSD120から読み出されたデータに対する共有秘密鍵を用いる鍵付きハッシュ関数が適用されることにより、認証メタデータの中に含まれることになる。他のいかなる要素、デバイス、または、共通鍵を所有するユーザもまた、次に、そのデータに鍵付きハッシュ関数を再適用して、その出力を、認証メタデータに含まれるMACと比較する。追加的にまたは代替的に、暗号化エンジン212は、認証メタデータの中に含まれることになるカウンタ値(例えば、タイムスタンプ、または、データがDSD120から読み出された時間を示すその他のトークン)を生成してよい。他のいかなる要素、デバイス、または、ユーザは、次に、(古いデータ(stale data)を含む)反射攻撃から保護する目的で、データがDSD120から読み出されたはずである時間と比較してよい。その他の実施形態において、暗号化エンジン212は、DSD120から読み出されたデータに対する秘密鍵を用いる署名アルゴリズムを適用することによって認証メタデータに含まれることになる電子署名を生成してよい。他のいかなる要素、デバイス、または、秘密鍵に対応する公開鍵を所有するユーザは、次に、認証メタデータを用いて、署名検証アルゴリズムを適用してよい。さらに他の実施形態において、暗号化エンジン212は、いかなる数の暗号学的ハッシュ関数を用いて、認証メタデータを生成してよい。
【0028】
(他の実施形態において、OOBエージェント214は、ハードウエア、ファームウエア、ソフトウエアまたはそれらのいかなる組み合わせとして実現されてもよいが、)ホストドライバを介して、リモートサーバ104にDSD120へのアクセスを提供するOOBエージェント214は、図2の実施形態において、OOBプロセッサ124上で実行されるファームウエア・モジュールとして説明される。OOBエージェント214は、大抵、いつも、リモートサーバ104によって利用でき、上述のOOBプロセッサ124の特性のおかげで、マルウエアによる改ざんに耐性を示す。OOBエージェント214は、リモート・ブロック・リード/ライト・モジュール216と、OOB通信モジュール218と、(いくつかの実施形態において)検証モジュール220とを有する。OOB通信モジュール218は、OOBエージェント214が、計算装置102の通信回路116の様々な部分を制御して、ネットワーク106を介して、リモートサーバ104との間でやりとりされる様々なネットワークメッセージの送受信を可能にする。リモート・ブロック・リード/ライト・モジュール216は、リモートサーバが、DSD120上の特定のLBAのデータを要求するためのインターフェースを提供する。OOB通信モジュール218を経由して、DSD120からデータを読むための要求が受信されると、リモート・ブロック・リード/ライト・モジュール216は、その要求を、インバンド・プロセッサ110上で動作するAHCIドライバ202に転送する。リモート・ブロック・リード/ライト・モジュール216とAHCIドライバ202との間のこのメッセージは、ホストエンベッデッドコントローラー・インターフェース(HECI)、または、OOBエージェント214とOS200との間で共有されるその他の何らかの記憶通信路(memory channel)を用いて送信されてよい。AHCIドライバ202は、OOBエージェント214からのそのようなメッセージを受信して、AHCI202に指示して、ライブラリ206から適切なストレージ命令を選択して送信させるように構成されるアプリケーションプログラム・インターフェース(API)208を有してよい。以下において、OOBエージェント214のいくつかの実施形態において含まれる検証モジュール220がより詳細に説明される。
【0029】
リモートサーバ104のソフトウエアスタックは、OS(図示されていない。)と、1以上のISVアプリケーション222と、リモート・ブロック・リード/ライト・ドライバ224と、ファイルシステムおよびその他のフィルタドライバ226とを有する(これらのそれぞれは、プロセッサ130によって実行されてよく、および/または、システムメモリ132もしくは大容量記憶装置138に記憶されよい。)。図2において説明されるように、リモートサーバ104は、DSD120の1以上のディスクイメージ228(大容量記憶装置138に記憶される。)を有してよい。計算装置102の場合と同様に、リモートサーバ104のOS(ユーザスペース中に存在する。)は、例えば、ISVアプリケーション222のような、よりハイレベルのアプリケーションを提供する(host)。1以上のISVアプリケーション222は、DSD120の安全性検査を要求する、記憶装置(storage)、セキュリティおよび/または監視に関するアプリケーションとして実現されてよい。1以上のISVアプリケーション222は、(OSを経由して)ファイルシステムおよびフィルタドライバ226(カーネル中に存在する。)に対して、リモートサーバ104のハードウエア要素(例えば、大容量記憶装置138)にアクセスするよう要求してよい。例えば、ISVアプリケーション222は、ファイルシステムおよびフィルタドライバ226を経由して、大容量記憶装置138に格納されたディスクイメージ228にアクセスする。当然のことながら、いくつかの実施形態において、OS、ISVアプリケーション222および/またはドライバ226を含むこれらのソフトウエアモジュールは、部分的または完全に、ファームウエアまたはハードウエアに組み入れられてもよい。
【0030】
リモート・ブロック・リード/ライト・ドライバ224は、リモートサーバ104が、ネット経由で(remotely)計算装置102のDSD120をマウントすることを可能にする。言い換えると、リモート・ブロック・リード/ライト・ドライバ224は、計算装置102上で動作するOOBエージェント214と連動して、リモートサーバ104が、DSD120をマッピングした後、あたかもDSD120がリモートサーバ104のローカルのメモリデバイスに存在するかのように、DSD120にアクセスすることを可能にする。リモートサーバ104によってDSD120がマウントされると、リモート・ブロック・リード/ライト・ドライバ224は、DSD120上の特定のLBAのデータを読み出すための要求を、OOBエージェントに送信してよい(上述の通り、OOBエージェントは、その後、AHCIドライバ202に転送する。)。要求されたデータが返されると、OOBエージェント214は、OOB通信モジュール218を用いて、このデータを(何らかの関連する認証メタデータ(associated authentication metadata)と一緒に)、リモートサーバ104のリモート・ブロック・リード/ライト・ドライバ224に転送してよい。リモート・ブロック・リード/ライト・ドライバ224は、その後、要求されたデータをISVアプリケーション222に提供してもよく、このデータをディスクイメージ228の一部として記憶してもよい。
【0031】
リモート・ブロック・リード/ライト・ドライバ224は、関連する認証メタデータを用いてDSD120から読み出されたデータの信頼性を検証する検証モジュール230を有する。上述の通り、認証メタデータがMACを含む場合、(検証モジュール230が、暗号化エンジン212によって使用された共有秘密鍵を所有していると仮定すると、)検証モジュール230は、読み出されたデータにハッシュ関数を再適用して、その出力と、認証メタデータに含まれるMACとを比較してよい。追加的または代替的に、検証モジュール230は、認証メタデータ中のカウンタ値と、データがDSD120から読み出されたはずである時間とを比較して、反射攻撃から保護する。認証メタデータが電子署名を含む場合、(検証モジュール230が、暗号化エンジン212によって使用された秘密鍵に対応する公開鍵を所有していると仮定すると、)検証モジュール230は、認証メタデータを用いて、署名検証アルゴリズムを適用してよい。検証モジュール220は、いくつかの実施形態においてOOBエージェント214に含まれてよく、データをリモートサーバ104に送信する前に、実質的に同様の方法で、DSD120から読み出されたデータの信頼性を検証してよい。検証モジュール220を用いる実施形態においては(データの信頼性はすでに検証されているので、)、リモート・ブロック・リード/ライト・ドライバ224から検証モジュール230が省略されてよく、OOBエージェント214が認証メタデータをリモートサーバ104に送信することを見合わせてもよい。
【0032】
OOBプロセッサ上で動作するOOBエージェント214と、DSD120上で動作する暗号化エンジン212のいくつかの特徴により、システム100は、リモートサーバ104から、計算装置102のDSD120の安全性検査を提供することができる。図3において説明されるとおり、計算装置102は、ネットワーク106を介して安全性検査を提供する方法300を実行するよう構成されている。一般に、方法300には、DSD120からの認証メタデータの検索(retrieval)が含まれる。認証メタデータの検索は、OOBエージェント214またはリモートサーバ104のリモート・ブロック・リード/ライト・ドライバ224によって、DSD120から読み出されたデータの信頼性を検証するために用いられてよい。例えば、OOBプロセッサ124、インバンド・プロセッサ110およびDSD120のハードウエアは、システム100のその他の要素と交信してよく、計算装置102のその他の要素と連動しながら、方法300を実行してよい。方法300は、いかなる目的に対しても、リモートサーバ104からのDSD120の安全性検査を可能にしてよい。上記の目的は限定されるものではないが、上記の目的には、ウイルス防止検査、マルウエア除去、システム修理、システム・リイメージング、および、ファイル/フォルダへの安全なアクセスが含まれる。
【0033】
方法300は、まず、ブロック302から始まる。ブロック302において、OOBエージェント214は、リモートサーバ104によるDSD120のリモートマウントを確立する。DSD120のリモートマウントは、計算装置102またはリモートサーバ104のいずれかによって開始されてよい。リモートサーバを用いてデータ記憶装置をネット経由でマウントするプロセスの1つであって、方法300のブロック302において採用される可能性のあるプロセスが、現在係属中の米国特許出願12/475,216に開示されている。上記の米国特許出願は、2009年の5月29日に出願され、本出願の譲受人(assignee)に委譲されている。本明細書に記載されるように、リモート・ブロック・リード/ライト・ドライバ224が、DSD120のマスターブートレコード(MBR)、1以上のブートセクタおよび/または1以上のマスタファイルテーブル(MFTs)を要求して、OOBエージェント214が送信してよい。このデータ(大容量記憶デバイス138上のディスクイメージ228の一部に記憶されてよい。)は、リモート・ブロック・リード/ライト・ドライバ224がDSD120をマッピングすることを可能にしてよい。DSD120からのデータが1以上のISVアプリケーション222によって要求されるときはいつでも、その後に、リモート・ブロック・リード/ライト・ドライバ224が、DSD120のMBR、ブートセクタおよび/またはMFTsを用いて、OOBエージェント214からの要求に対するLBAを決定してよい。
【0034】
方法300のブロック304において、OOBエージェント214が、ネットワーク106を介して、リモート・ブロック・リード/ライト・ドライバ224から、ブロック読み込み要求を受信する。OOBエージェント214は、OOB通信モジュール218を用いて、この要求を受信する。当然のことながら、OOBエージェント214は、持続する電力と、OOBプロセッサ124および通信回路116によって維持されているアウト・オブ・バンドの通信チャネルとのおかげで、計算装置102のインバンド・プロセッサ110が、OS200を実行していない、電力低減状態にあるまたは電源がオフの状態にあるときであっても、リモートサーバ104からのそのような要求を受信できる状態にある。説明のための実施形態はリモートサーバ104とOOBプロセッサ124との間で(通信回路116および通信回路136を経由して、)直接通信される場合について説明しているけれども、リモートサーバ104が、1以上のホストを利用したチャネル(例えば、インバンド・プロセッサ110およびOS200をも含む。)を経由して、OOBプロセッサ124と通信してよいことも考えられる。
【0035】
ブロック306において、OOBエージェント214は、リモート・ブロック・リード/ライト・モジュール216を用いて、計算装置102のインバンド・プロセッサ110上で動作している適切なホストドライバに対して、ブロック読み出し要求を転送する。インバンド・プロセッサ110がOS200を実行しているとき(すなわち、OS200がすでに起動しているとき)、上述のように、OOBエージェント214が、AHCIドライバ202に対して、ブロック読み出し要求を転送してよい。しかしながら、インバンド・プロセッサ110が電力低減状態にあるもしくは電源がオフの状態にあるとき、または、OS200がまだ起動していないときには、その代わりに、リモート・ブロック・リード/ライト・モジュール216が、ブロック読み出し要求を、計算装置102のBIOSドライバに命令してよい(BIOSドライバへのアクセスを与えるのに必要であれば、OOBプロセッサ124によって、計算装置102に電力が供給されてよい。)。そのような実施形態において、OOBエージェント214は、計算装置102のOS200の状態に関わらず、リモートサーバ104にDSD120へのアクセスを提供してよい。
【0036】
ブロック308において、AHCIドライバ202(またはその他のホストドライバ)が、認証ストレージ命令(authentication storage command)をDSDインターフェース・モジュール210に送信する。AHCIドライバ202は、OOBエージェント214から転送されたブロック読み出し要求を受信すると、ライブラリ206から、適切なIOTCLメッセージを選択する。図2および図3の説明のための実施形態において、AHCIドライバが、OOB API208経由で読み出し要求を受信したときはいつでも、AHCIドライバは、要求されたデータを読み出すだけでなく、DSD120に認証メタデータをも生成させるストレージ命令を選択して送信する。このようにして、リモート・ブロック・リード/ライト・ドライバ224に起因する全ての要求が認証メタデータをもたらすことになる。認証メタデータは、DSD120から読み出されたデータの信頼性を検証するのに用いられてよい。
【0037】
ブロック310において、DSDインターフェース・モジュール210が、AHCI202からの認証ストレージ命令を受信したことに応じて、要求されたデータを、DSD120から読み出し、暗号化エンジン212を用いて、認証メタデータを生成する。認証メタデータは、上述したタイプのものであればいかなるものであってもよく、例えば、MAC、カウンタ値、電子署名、暗号化ハッシュ値および/またはそれらと同様のものであってよい。ブロック312において、DSDインターフェース・モジュール210は、DSD120から読み出されたデータと、DSD120によって生成された認証メタデータとを、AHCI202に返す。ブロック314において、AHCI202は、そのデータと認証メタデータとを、OOBエージェント214のリモート・ブロック・リード/ライト・モジュール216に転送する。
【0038】
検証モジュール220を採用する実施形態において、方法300は、オプションのブロック316に進む。ブロック316において、OOBエージェント214が、DSD120によって生成された認証メタデータを用いて、DSD120から読み出したデータを検証する。DSD120から読み出されたデータの信頼性の検証は、上述されたいかなる方法を用いて実行されてもよい。オプションのブロック316の後(または、検証モジュール220のない実施形態においては、ブロック314の後)、方法300は、ブロック318に進む。ブロック318において、OOBエージェント214は、OOB通信モジュール218を用いて、ネットワーク106を介して、データおよび認証メタデータを、リモート・ブロック・リード/ライト・ドライバ224に送信する。
【0039】
(ブロック320は、オプションのブロック316を実施する実施形態においては、スキップされてよいけれども、)ブロック320において、リモート・ブロック・リード/ライト・ドライバ224は、認証モジュール230を使用して、認証メタデータを用いてデータを検証してよい。DSD120から読み出されたデータの信頼性の検証は、上述されたいかなる方法を用いて実行されてもよい。データが検証されると、リモート・ブロック・リード/ライト・ドライバ224は、要求されたデータをISVアプリケーション222に提供してよい、および/または、ディスクイメージ228の一部として、このデータを記憶してよい。リモート・ブロック・リード/ライト・ドライバ224が、ネットワーク106を介して、OOBエージェント214に別のブロック読み出し要求を送信した場合、方法300は、ブロック304に戻ってよい(それぞれのサイクルの間、ブロック302は、繰り返されなくてもよい。)。
【0040】
次に、図4を参照すると、システム100の計算装置102およびリモートサーバ104上で動作するソフトウエア/ファームウエア環境の説明のための実施形態の他の例が、簡略化されたブロック図として示されている。図4の実施形態は、類似する参照番号を用いて表示される、図2と同様の要素およびモジュールを有してよい。これらの要素およびモジュールの動作は、以下で説明される動作を除いて、図2を参照して説明された要素およびモジュールの動作と、実質的に同様であってよい。例えば、DSDインターフェース・モジュール210、OOBエージェント214およびリモートサーバ104のソフトウエアスタック(OS、1以上のISVアプリケーション222、リモート・ブロック・リード/ライト・ドライバ224ならびにファイルシステムおよびその他のフィルタドライバ226を含む。)の動作は、これらのモジュールが暗号化エンジン212、検証モジュール220または検証モジュール230を有しないこと以外は、図2を参照して説明された要素およびモジュールと同様であってよい。この説明のための実施形態において、DSD120から読み出されたデータの信頼性が、メタデータを用いることなく保証される。
【0041】
図4に示すとおり、計算装置102のソフトウエアスタックは、OS200、AHCIドライバ202、ならびに、ファイルシステムおよびその他のフィルタドライバ204を含む(それらは、それぞれ、インバンド・プロセッサ110によって実行される、および/または、システムメモリ114もしくはDSD120に記憶されてよい。)。加えて、ソフトウエアスタックは、インバンド・プロセッサ110上で動作するセキュア・コンテナ400を含んでよい。セキュア・コンテナ400は、安全な(secure)メモリおよび/または実行空間(execution space)として実現されてよい。すなわち、セキュア・コンテナ400は、OS200から独立に維持され、ドライバ202およびドライバ204と結び付けられ、これらのソフトウエアモジュールに直接アクセスすることはできない(これにより、セキュア・コンテナ400の安全性を維持することができる。)。図4の説明のための実施形態において、AHCIドライバ202ではなく、セキュア・コンテナ内で動作するホストドライバが、DSD120へのアクセスに対する直接的な責任を有する。OS200は、やはり、AHCIドライバ202を介して、DSD120に間接的にアクセスする。しかし、AHCIドライバ202は、チップセットファームウエア含まれる1以上のファームウエア・フック402を信頼して、セキュア・コンテナ400の中で動作するドライバに要求を渡す。
【0042】
セキュア・コンテナ400の中で動作するドライバは、ストレージ命令ライブラリ206およびOOB API208(図2において説明された実施形態のAHCI202のOOB APIに類似する。)を有する。この実施形態において、OOBエージェント214は、リモートサーバ104に、セキュア・コンテナ400の中で動作するホストドライバを経由したDSD120へのアクセスを提供する。リモート・ブロック・リード/ライト・モジュール216およびOOB通信モジュール218は、リモート・ブロック・リード/ライト・モジュール216が、AHCI202ではなく、セキュア・コンテナ400の中で動作するドライバのOOB API208に対して、ブロック読み出し要求を転送する点を除いて、上述のものと同様に機能する。OOB API208は、OOBエージェント214からのメッセージを受信し、ドライバに対して、ライブラリ206から適切なストレージ命令を選択して送信するよう指示するように構成される。DSD120から読み出されたデータは、ドライバに返され、OOBエージェント214に直接転送される。このデータ転送の間、OS200および関連するドライバ202およびドライバ204が迂回されてよいので、このセキュリティ上の懸念が除去され、DSD120が認証メタデータを生成する必要がない。
【0043】
インバンド・プロセッサ110上で動作するセキュア・コンテナ400と、OOBプロセッサ124上で動作するOOBエージェント214との特徴のいくつかにより、システム100は、リモートサーバ104からの計算装置102の安全性検査を提供することができる。図5において説明されるとおり、計算装置102は、ネットワーク106を介して、安全性検査を提供する方法500を実行するように構成されてよい。一般的に、方法500は、OOBエージェント214が、セキュア・コンテナ400の中で動作するホストドライバと交信して、DSD120から読み出されたデータの信頼性を保証する段階を有する。例えば、OOBプロセッサ124、インバンド・プロセッサ110およびDSD120のハードウエアは、システム100のその他の要素と交信してよく、計算装置102のその他の要素と連動しながら、方法500を実行してよい。方法500は、いかなる目的に対しても、リモートサーバ104からのDSD120の安全性検査を可能にしてよい。上記の目的は限定されるものではないが、上記の目的には、ウイルス防止検査、マルウエア除去、システム修理、システム・リイメージング、および、ファイル/フォルダへの安全なアクセスが含まれる。
【0044】
方法500は、まず、ブロック502から始まる。ブロック502において、OOBエージェント214は、リモートサーバ104によるDSD120のリモートマウントを確立する。ブロック504において、OOBエージェント214が、ネットワーク106を介して、リモート・ブロック・リード/ライト・ドライバ224から、ブロック読み込み要求を受信する。DSD120のリモートマウントの確立と、ブロック読み出し要求の受信は、大体、図3のブロック302およびブロック304を参照して説明されたように実行されてよい。
【0045】
ブロック506において、OOBエージェント214は、リモート・ブロック・リード/ライト・モジュール216を用いて、計算装置102のインバンド・プロセッサ110上のセキュア・コンテナ400の中で動作するホストドライバに、受信したブロック読み出し要求を転送する。ブロック508において、セキュア・コンテナ400の中で動作するドライバは、DSDインターフェース・モジュール210に、ストレージ命令を送信する。セキュア・コンテナ400の中で動作するドライバは、OOBエージェント214から転送されたブロック読み出し要求を受信すると、ライブラリ206から、適切なIOTCLメッセージを選択する。
【0046】
ブロック510において、セキュア・コンテナ400の中で動作するドライバからストレージ命令を受信したことに応じて、DSDインターフェース・モジュール210が、要求されたデータをDSD120から読み出だす。ブロック512において、DSDインターフェース・モジュール210が、ドライバに、DSD120から読み出されたデータを返す。ブロック514において、セキュア・コンテナ400の中で動作するドライバが、データと認証メタデータとを、OOBエージェント214のリモート・ブロック・リード/ライト・モジュール216に転送する。方法500は、ブロック516で終了する。ブロック516において、OOBエージェント214は、OOB通信回路218を用いて、ネットワーク106を介して、リモート・ブロック・リード/ライト・ドライバ224に、データを送信する。リモート・ブロック・リード/ライト・ドライバ224が、ネットワーク106を介して、OOBエージェント214に別のブロック読み出し要求を送信した場合、方法500は、ブロック504に戻ってよい(それぞれのサイクルの間、ブロック502は、繰り返されなくてもよい。)。
【0047】
開示が図解され、図面および上述の記載により詳細に説明された。しかし、そのような図および説明は、一例と考えられるべきであり、文字通りに制限するものと考えられるべきではない。単に説明のための実施形態が示され、説明されていると理解されるべきであり、開示の精神および添付の特許請求の範囲でカバーされる全ての変更および改良が、保護されるべきと理解されるべきである。

【特許請求の範囲】
【請求項1】
計算装置上で動作し、前記計算装置のオペレーション・システムの状態に関わらず、リモートサーバ・ドライバと情報をやり取りすることができるアウト・オブ・バンドエージェント(OOBエージェント)を用いて、リモートサーバから、ブロック読み出し要求を受信する段階と、
前記ブロック読み出し要求の受信に応じて、前記計算装置のホストドライバを用いて、データ記憶装置にストレージ命令を送信する段階と、
前記ストレージ命令に応じて、前記データ記憶装置から読み出されたデータと、前記データ記憶装置により生成された認証メタデータとを受信する段階と、
前記認証メタデータを用いて、前記OOBエージェントまたは前記リモートサーバ・ドライバにより前記データを検証する段階と、
を有する方法。
【請求項2】
前記OOBエージェントを用いて、前記リモートサーバから、前記ブロック読み出し要求を受信する段階は、前記計算装置のOOBプロセッサ上で動作するファームウエア・モジュールを用いて、前記ブロック読み出し要求を受信する段階を含む、
請求項1に記載の方法。
【請求項3】
前記OOBエージェントを用いて、前記リモートサーバ・ドライバから、前記ブロック読み出し要求を受信する段階は、前記計算装置の前記オペレーション・システムが動作していない間に、前記ブロック読み出し要求を受信する段階を含む、
請求項1に記載の方法。
【請求項4】
前記データ記憶装置に前記ストレージ命令を送信する段階は、前記計算装置の基本入出力システム(BIOS)ドライバを用いて、前記ストレージ命令を生成する段階を含む、
請求項3に記載の方法。
【請求項5】
前記データ記憶装置に前記ストレージ命令を送信する段階は、前記計算装置のアドバンスド・ホストコントローラ・インターフェース(AHCI)ドライバを用いて、前記ストレージ命令を送信する段階を含む、
請求項1に記載の方法。
【請求項6】
前記データ記憶装置によって生成された認証メタデータを受信する段階は、前記データ記憶装置から読み出された前記データに適用された鍵付きハッシュ関数の出力を受信する段階を含む、
請求項1に記載の方法。
【請求項7】
前記認証メタデータを用いて、前記OOBエージェントまたは前記リモートサーバ・ドライバにより前記データを検証する段階は、前記鍵付きハッシュ関数を前記データに再適用して、前記鍵付きハッシュ関数の出力を、前記認証メタデータと比較する段階を含む、
請求項6に記載の方法。
【請求項8】
前記データ記憶装置によって生成された認証メタデータを受信する段階は、前記データ記憶装置から前記データが読み出された時間を示すカウンタ値を受信する段階をさらに含む、
請求項7に記載の方法。
【請求項9】
前記認証メタデータを用いて、前記OOBエージェントまたは前記リモートサーバ・ドライバにより前記データを検証する段階は、前記カウンタ値を、期待された時間と比較する段階をさらに含む、
請求項8に記載の方法。
【請求項10】
前記データ記憶装置によって生成された認証メタデータを受信する段階は、前記データ記憶装置から読み出されたデータと、秘密鍵とに基づく電子署名を受信する段階を含む、
請求項1に記載の方法。
【請求項11】
前記認証メタデータを用いて、前記OOBエージェントまたは前記リモートサーバ・ドライバにより前記データを検証する段階は、前記秘密鍵に対応する公開鍵を用いて、前記電子署名を検証する段階を含む、
請求項10に記載の方法。
【請求項12】
前記認証メタデータを用いて前記データを検証する前記リモートサーバ・ドライバに、前記データおよび前記認証メタデータを、前記OOBエージェントを用いて送信する段階をさらに有する、
請求項1に記載の方法。
【請求項13】
前記OOBエージェントを用いて、前記リモートサーバ・ドライバに前記データを送信する段階をさらに有し、
前記OOBエージェントは、前記データを送信する前に、前記認証メタデータを用いて前記データを検証する、
請求項1に記載の方法。
【請求項14】
コンピュータに、
請求項1から請求項13までの何れか一項に記載の方法を実行させるための、
プログラム。
【請求項15】
オペレーション・システムおよび少なくとも1つのホストドライバを実行するインバンド・プロセッサと、
リモートサーバと情報をやり取りする通信回路と、
前記オペレーション・システムの状態に関わらず、前記通信回路を用いて前記リモートサーバと情報をやり取りすることができるアウト・オブ・バンド・プロセッサ(OOBプロセッサ)と、
を備え、
前記OOBプロセッサは、
前記リモートサーバからブロック読み出し要求を受信し、
前記少なくとも1つのホストドライバに指示して、データ記憶装置にストレージ命令を送信させ、
前記データ記憶装置から読み出されたデータと、前記データ記憶装置によって生成された認証メタデータとを受信し、
前記データおよび前記認証メタデータを、前記リモートサーバに送信する、
計算装置。
【請求項16】
前記少なくとも1つのホストドライバは、前記オペレーション・システムが起動する前に、前記インバンド・プロセッサによって実行される基本入出力システム(BIOS)ドライバである、
請求項15に記載の計算装置。
【請求項17】
前記少なくとも1つのホストドライバは、前記オペレーション・システムの実行中に、前記インバンド・プロセッサによって実行されるアドバンスド・ホストコントローラ・インターフェース(AHCI)ドライバである、
請求項15に記載の計算装置。
【請求項18】
前記OOBプロセッサは、さらに、前記データおよび前記認証メタデータを、前記リモートサーバに送信する前に、前記認証メタデータを用いて前記データを検証する、
請求項15に記載の計算装置。
【請求項19】
オペレーション・システムおよび少なくとも1つのドライバを実行し、前記オペレーション・システムから独立したセキュア・コンテナの中で前記ドライバを実行するインバンド・プロセッサと、
リモートサーバと情報をやり取りする通信回路と、
前記オペレーション・システムの状態に関わらず、前記通信回路を用いて前記リモートサーバと情報をやり取りすることができるアウト・オブ・バンド・プロセッサと、
を備え、
前記アウト・オブ・バンド・プロセッサは、
前記リモートサーバからブロック読み出し要求を受信し、
前記セキュア・コンテナの中で動作する前記少なくとも1つのドライバに指示して、データ記憶装置にストレージ命令を送信させ、
前記データ記憶装置から読み出されたデータを、前記セキュア・コンテナの中で動作する前記少なくとも1つのドライバを経由して受信し、
前記データを、前記リモートサーバに送信する、
計算装置。
【請求項20】
前記オペレーション・システムは、1以上のファームウエア・フックを経由して、前記セキュア・コンテナの中で動作する前記少なくとも1つのドライバに指示して、前記データ記憶装置に前記ストレージ命令を送信させることによって、前記データ記憶装置からデータを読み出す、
請求項19に記載の計算装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−253525(P2011−253525A)
【公開日】平成23年12月15日(2011.12.15)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−103280(P2011−103280)
【出願日】平成23年5月2日(2011.5.2)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】