(57)【要約】  開示の実施形態は、ストレージ装置とホスト間のデータ伝送を保護するシステムを提供する。動作中、システムは、ホスト上で実行するデバイス・ドライバから、入出力（Ｉ／Ｏ）コマンド、及びＩ／Ｏコマンドに関連する暗号コンテキストを取得する。次に、システムは、ホストとストレージ装置間のストレージ・コントローラ・バス・インターフェースを用いて、暗号コンテキストをＩ／Ｏコマンドに関連するデータへ適用する。暗号コンテキストによって、ストレージ装置とホスト間で暗号化形式のデータを伝送することが可能である。最後に、システムは、ストレージ・コントローラ・バス・インターフェースを用いて、Ｉ／Ｏコマンドをストレージ装置へ発行する。このＩ／Ｏコマンドは、ストレージ装置により処理される。
2015513743.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ装置とホスト間のデータ伝送を保護する方法であって、
前記ホスト上で実行するデバイス・ドライバから、入出力（Ｉ／Ｏ）コマンド、及び前記Ｉ／Ｏコマンドに関連する暗号コンテキストを取得することと、
前記ホストと前記ストレージ装置間のストレージ・コントローラ・バス・インターフェースを用いることと、を含み、前記ストレージ・コントローラ・バス・インターフェース用いることにより、
前記ストレージ装置と前記ホスト間での暗号化形式のデータ送信を可能とする、前記暗号コンテキストを前記Ｉ／Ｏコマンドに関連するデータに適用し、
前記ストレージ装置により処理される、前記Ｉ／Ｏコマンドを前記ストレージ装置へ発行する、方法。
【請求項２】
前記Ｉ／Ｏコマンドが前記ストレージ装置により完了した後、前記完了したＩ／Ｏコマンドを前記デバイス・ドライバに通知することを更に含む、請求項１に記載の方法。
【請求項３】
前記Ｉ／Ｏコマンド、及び前記暗号コンテキストを前記ホストから取得することは、
前記デバイス・ドライバから前記Ｉ／Ｏコマンドに関連する１組のメモリ・アドレス及び前記暗号コンテキストを取得することと、
直接メモリ・アクセス（ＤＭＡ）を用いて、前記Ｉ／Ｏコマンド及び前記暗号コンテキストを前記ホスト上の前記メモリ・アドレスから前記ストレージ・コントローラ・バス・インターフェース上のバッファーへと伝送することと、を伴う、請求項１に記載の方法。
【請求項４】
前記暗号コンテキストを前記Ｉ／Ｏコマンドに関連する前記データに適用することは、
前記Ｉ／Ｏコマンドが書き込みコマンドに対応している場合、前記暗号コンテキストを用いて前記データを暗号化してから、前記Ｉ／Ｏコマンドを前記ストレージ装置に発行することと、
前記Ｉ／Ｏコマンドが読み取りコマンドに対応している場合、前記Ｉ／Ｏコマンドが前記ストレージ装置により処理された後、前記暗号コンテキストを用いて前記データを復号化することと、を伴う、請求項１に記載の方法。
【請求項５】
前記Ｉ／Ｏコマンドが前記読み取りコマンドに対応する場合、前記方法は、
前記復号化データを前記ホスト上の１組のメモリ・アドレスに伝送することを更に含む、請求項４に記載の方法。
【請求項６】
前記暗号コンテキストは、アプリケーション、ファイル、及び利用者の少なくとも１つに関連する、請求項１に記載の方法。
【請求項７】
前記暗号コンテキストは、
１つ以上のキーと、
初期ベクトルと、を含む、請求項１に記載の方法。
【請求項８】
ストレージ装置とホスト間のデータ伝送を保護するシステムにおいて、
ホスト上で実行し、入出力（Ｉ／Ｏ）コマンド、及び前記Ｉ／Ｏコマンドに関連する暗号コンテキストを前記ホストと前記ストレージ装置間のストレージ・コントローラ・バス・インターフェースに供給するように構成されるデバイス・ドライバと、
前記ストレージ・コントローラ・バス・インターフェースと、を含み、前記ストレージ・コントローラ・バス・インターフェースは、
前記ストレージ装置と前記ホスト間での暗号化形式のデータ送信を可能とする、前記暗号コンテキストを前記Ｉ／Ｏコマンドに関連するデータに適用し、
前記ストレージ装置により処理される、前記Ｉ／Ｏコマンドを前記ストレージ装置へ発行するように構成される、システム。
【請求項９】
前記ホストによる前記ストレージ装置の使用中に前記暗号コンテキストを作成、管理するように構成されるファイルシステムを更に備える、請求項８に記載のシステム。
【請求項１０】
前記Ｉ／Ｏコマンドが前記ストレージ装置により完了した後、前記ストレージ・コントローラは更に、
前記デバイス・ドライバに前記完了したＩ／Ｏコマンドを通知するように構成される、請求項８に記載のシステム。
【請求項１１】
前記Ｉ／Ｏコマンド及び記暗号コンテキストを前記ストレージ・コントローラ・バス・インターフェースに供給することは、
前記Ｉ／Ｏコマンドに関連する１組のメモリ・アドレス及び前記暗号コンテキストを前記ストレージ・コントローラ・バス・インターフェースに供給することと、
直接メモリ・アクセス（ＤＭＡ）を用いて、前記Ｉ／Ｏコマンド及び前記暗号コンテキストを、前記ホスト上の前記メモリ・アドレスから前記ストレージ・コントローラ・バス・インターフェース上のバッファーへと伝送することと、を伴う、請求項８に記載のシステム。
【請求項１２】
前記暗号コンテキストを前記Ｉ／Ｏコマンドに関連する前記データに適用することは、
前記Ｉ／Ｏコマンドが書き込みコマンドに対応している場合、前記暗号コンテキストを用いて前記データを暗号化してから、前記Ｉ／Ｏコマンドを前記ストレージ装置に発行することと、
前記Ｉ／Ｏコマンドが読み取りコマンドに対応している場合、前記Ｉ／Ｏコマンドが前記ストレージ装置により処理された後、前記暗号コンテキストを用いて前記データを復号化することと、を伴う、請求項８に記載のシステム。
【請求項１３】
前記Ｉ／Ｏコマンドが前記読み取りコマンドに対応する場合、前記ストレージ・コントローラ・バス・インターフェースは、
前記復号化データを前記ホスト上の１組のメモリ・アドレスに伝送するように更に構成される、請求項１２に記載のシステム。
【請求項１４】
前記復号化データは、ＤＭＡを用いて前記１組のメモリ・アドレスに伝送される、請求項１３に記載のシステム。
【請求項１５】
前記暗号コンテキストは、アプリケーション、ファイル、及び利用者のうちの少なくとも１つに関連する、請求項８に記載のシステム。
【請求項１６】
前記暗号コンテキストは、
１つ以上のキーと、
初期ベクトルと、を含む、請求項８に記載のシステム。
【請求項１７】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令が、コンピュータによって実行された時、ストレージ装置とホスト間のデータ伝送を保護する方法を前記コンピュータに実行させ、前記方法は、
前記ホスト上で実行するデバイス・ドライバから、入出力（Ｉ／Ｏ）コマンドリ、及び前記Ｉ／Ｏコマンドに関連する暗号コンテキストを取得することと、
前記ホストと前記ストレージ装置間のストレージ・コントローラ・バス・インターフェースを用いることと、を含み、前記ストレージ・コントローラ・バス・インターフェースを用いることは、
前記ストレージ装置と前記ホスト間での暗号化形式のデータ送信を可能とする、前記暗号コンテキストを前記Ｉ／Ｏコマンドに関連するデータに適用し、
前記ストレージ装置により処理される、前記Ｉ／Ｏコマンドを前記ストレージ装置へ発行する、コンピュータ可読記憶媒体。
【請求項１８】
前記方法が、
前記Ｉ／Ｏコマンドが前記ストレージ装置により完了した後、前記完了したＩ／Ｏコマンドを前記デバイス・ドライバに通知することを更に含む、請求項１７に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記Ｉ／Ｏコマンド及び前記暗号コンテキストを前記ホストから取得することは、
前記デバイス・ドライバから前記Ｉ／Ｏコマンドに関連する１組のメモリ・アドレス、及び前記暗号コンテキストを取得することと、
直接メモリ・アクセス（ＤＭＡ）を用いて、前記Ｉ／Ｏコマンド、及び前記暗号コンテキストを前記ホスト上の前記メモリ・アドレスから前記ストレージ・コントローラ・バス・インターフェース上のバッファーへと伝送することと、を伴う、請求項１７に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記暗号コンテキストを前記Ｉ／Ｏコマンドに関連する前記データに適用することは、
前記Ｉ／Ｏコマンドが書き込みコマンドに対応している場合、前記暗号コンテキストを用いて前記データを暗号化してから、前記Ｉ／Ｏコマンドを前記ストレージ装置に発行することと、
前記Ｉ／Ｏコマンドが読み取りコマンドに対応している場合、前記Ｉ／Ｏコマンドが前記ストレージ装置により処理された後、前記暗号コンテキストを用いて前記データを復号化することと、を伴う、請求項１７に記載のコンピュータ可読記憶媒体。
【請求項２１】
前記Ｉ／Ｏコマンドが前記読み取りコマンドに対応している場合、前記方法は、
前記復号化データを前記ホスト上の１組のメモリ・アドレスに伝送することを更に含む、請求項２０に記載のコンピュータ可読記憶媒体。
【請求項２２】
前記暗号コンテキストは、アプリケーション、ファイル、及び利用者の少なくとも１つに関連する、請求項１７に記載のコンピュータ可読記憶媒体。
【請求項２３】
前記暗号コンテキストは、
１つ以上のキーと、
初期ベクトルと、を含む、請求項１７に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
（発明の分野）
本実施形態は、コンピュータシステム用のストレージ装置に関する。具体的には、本実施形態は、ストレージ・コントローラ・バス・インターフェースを用いてストレージ装置、及びストレージ装置と接続するホスト装置間で伝送されるデータを暗号化、及び復号化する技術に関する。
【０００２】
（関連技術に関する説明）
近年のコンピュータシステムは、主として、プロセッサ及びメモリを含むマザーボードを、様々なインターフェースを介してマザーボードに接続する１組の周辺構成要素と合わせて含む。例えば、シリアル・アドバンスド・テクノロジー・アタッチメント（ＳＡＴＡ）インターフェースは、ストレージ装置（例えば、ハードディスク・ドライブ（ＨＤＤ）、光学ドライブ、固形状態ドライブ（ＳＳＤ）、ハイブリッド・ハードドライブ（ＨＨＤ）等）、及びマザーボード間のデータ伝送を支援可能であり、周辺機器相互接続エクスプレス（ＰＣＩｅ）バスでは、マザーボードと複数の統合、及び／又はアドオン周辺機器との通信が可能である。
【０００３】
コンピュータシステムにおけるこの様なデータ伝送は、数多くのセキュリティ問題及び／又は欠点を伴うことがある。とりわけ、暗号化されていない平文形式でデータを記憶及び／又は送信するストレージ装置は、盗聴者及び／又は攻撃者による未承認のアクセスに対して脆弱な場合がある。例えば、データをストレージ装置内に記憶されている間、及び／又はＨＤＤとコンピュータシステムのマザーボード間のインターフェース（例えば、ＳＡＴＡインターフェース）を介した伝送中に、ＨＤＤ上で暗号化されていないデータの機密性が損なわれる恐れがある。一方、記憶前にＨＤＤにより暗号化されたデータは、記憶されている間に保護可能であるが、ＨＤＤとマザーボード間の伝送前には暗号化されないことがあり、それ故、ＨＤＤ外部からの未承認のアクセスに対して脆弱となる。
【０００４】
データをより安全にするために、マザーボード上の中央処理ユニット（ＣＰＵ）によってデータを暗号化してから、ストレージ装置とのインターフェースを介してデータを送信することも可能である。この結果、データが記憶されている間、及びインターフェースを介したデータの送信中に、データの機密性を維持できる。だが、ＣＰＵに基づく記憶データの暗号化では、ＣＰＵがデータを逐次取り出して、データを複製し、複製したデータを暗号化してから、データをストレージ装置に送信することが要求され、コンピュータシステムの計算オーバーヘッド及び／又は電力消費が増加する場合がある。
【０００５】
従って、コンピュータシステムにおけるデータ記憶と伝送の保護に関わる電力消費及び／又は計算オーバーヘッドを低減させる機構が、求められる。
【発明の概要】
【０００６】
開示の実施形態は、ストレージ装置とホスト間のデータ伝送を保護するシステムを提供している。動作中、システムは、ホスト上で実行するデバイス・ドライバから、入出力（Ｉ／Ｏ）コマンド及びＩ／Ｏコマンドに関連する暗号コンテキストを取得する。次に、システムは、ホストとストレージ装置間のストレージ・コントローラ・バス・インターフェースを用いて、暗号コンテキストをＩ／Ｏコマンドに関連するデータへ適用する。暗号コンテキストによって、ストレージ装置とホスト間で暗号化形式のデータを伝送できる。最後に、システムは、ストレージ・コントローラ・バス・インターフェースを用いて、Ｉ／Ｏコマンドをストレージ装置へ発行する。このＩ／Ｏコマンドは、ストレージ装置により処理される。
【０００７】
一部の実施形態では、Ｉ／Ｏコマンドがストレージ装置により完了した後、更に、システムは、完了したＩ／Ｏコマンドをデバイス・ドライバに通知する。
【０００８】
ある実施形態では、ホストからのＩ／Ｏコマンド及び暗号コンテキストの取得することには、
（ｉ）デバイス・ドライバからＩ／Ｏコマンドに関連する１組のメモリ・アドレス及び暗号コンテキストを取得することと、
（ｉｉ）直接メモリ・アクセス（ＤＭＡ）を用いて、Ｉ／Ｏコマンド及び暗号コンテキストをホスト上のメモリ・アドレスからストレージ・コントローラ・バス・インターフェース上のバッファーへと伝送することと、を伴う。
【０００９】
ある実施形態では、システムは、Ｉ／Ｏコマンドの種類に基づいてＩ／Ｏコマンドを処理する。Ｉ／Ｏコマンドが書き込みコマンドに対応していれば、システムは、暗号コンテキストでデータを暗号化してから、Ｉ／Ｏコマンドをストレージ装置に発行する。Ｉ／Ｏコマンドが読み取りコマンドに対応していれば、システムは、Ｉ／Ｏコマンドがストレージ装置により処理された後、暗号コンテキストでデータを復号化する。
【００１０】
ある実施形態では、Ｉ／Ｏコマンドが読み取りコマンドに対応していれば、システムは、更に、復号化データをホスト上の１組のメモリ・アドレスに伝送してから（例えば、ＤＭＡを用いて）、デバイス・ドライバに完了したＩ／Ｏコマンドを通知する。
【００１１】
ある実施形態では、暗号コンテキストは、アプリケーション、ファイル、及び利用者の少なくとも１つに関連している。即ち、暗号コンテキストにより、様々な暗号化細粒度でホスト内のデータを暗号化可能であり、したがって、従来のブロックに基づくストレージ装置上の暗号化及び復号化よりも柔軟的にデータを保護できる。
【００１２】
ある実施形態では、暗号コンテキストには、１つ以上のキー及び初期ベクトルが含まれる。例えば、キー及び／又は初期ベクトルを用いて、データのＡＥＳ−ＸＴＳ暗号化を実行できる。
【図面の簡単な説明】
【００１３】
【図１】開示の実施形態に係るシステムの概要を示す図である。
【００１４】
【図２】開示の実施形態に係わるストレージ・コントローラ・バス・インターフェースを示す図である。
【００１５】
【図３】開示の実施形態に係わる例示的な暗号コンテキストを示す図である。
【００１６】
【図４】開示の実施形態に係わるストレージ装置とホスト間のデータ伝送を保護するためのプロセスについて説明する流れ図である。
【００１７】
【図５】開示の実施形態に係るコンピュータシステムを示す図である。
【００１８】
これら図面において、類似の参照番号は、図の同じ要素を示している。
【発明を実施するための形態】
【００１９】
以下の記述は、あらゆる当業者が本実施形態を作成し、これを使用できるように提示されており、特定の用途及びその要件の状況内で提供されている。開示される実施形態に対する様々な改良は、当業者にはすぐ分かるであろう。本明細書において定義されている一般原理は、本開示の精神や範囲から逸脱することなく他の実施形態及び応用に適用可能である。従って、本発明は、示されている実施形態のみに限定されるものではなく、本明細書で開示されている原理及び特徴と整合する最も広い範囲を許容するものとする。
【００２０】
この詳細な説明において述べられているデータ構造及びコードは、主として、コンピュータ可読記憶媒体上に記憶され、このコンピュータ可読記憶媒体は、コンピュータシステムにより使用されるコード及び／又はデータを記憶可能とする任意のデバイス又は媒体でもよい。コンピュータ可読記憶媒体には、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（ディジタル多用途ディスク、若しくは、ディジタルビデオディスク）等の磁気光学記憶デバイス、又は現在公知とされるか、あるいは、今後開発されるコード、及び／又はデータを記憶可能とする他の媒体が含まれるが、これらに限定されるものではない。
【００２１】
この詳細説明項内で述べられている方法及びプロセスは、上述のコンピュータ可読記憶媒体に記憶可能なコード及び／又はデータとして具現化できる。コンピュータシステムが、コンピュータ可読記憶媒体上に記憶されたコード及び／又はデータを読み取り、実行すると、コンピュータシステムは、データ構造及びコードとして具現化され、並びにコンピュータ可読記憶媒体内に記憶された方法及びプロセスを実行する。
【００２２】
更に、本明細書で述べられている方法及びプロセスを、ハードウェア・モジュール又は装置に含めてもよい。これらのモジュール又は装置には、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定時刻において特定のソフトウェア・モジュール若しくはコード部を実行する専用、あるいは、共有プロセッサ、及び／又は、現在公知とされるか、あるいは、今後開発される他のプログラマブルロジックデバイスを含むことが可能であるが、これらに限定されるものではない。ハードウェア・モジュール又は装置が動作すると、その内部に含まれている方法及びプロセスを実行する。
【００２３】
開示の実施形態は、コンピュータシステム内でデータを転送するための方法及びシステムを提供する。図１で示すように、コンピュータシステムには、ストレージ装置１１０、例えば、ハードディスク・ドライブ（ＨＤＤ）、固形状態ドライブ（ＳＳＤ）、及び／若しくはプロセッサ（例えば、中央処理ユニット（ＣＰＵ））に接続するハイブリッド・ハードドライブ（ＨＨＤ）、並びに／又はシリアルＡＴＡ（ＳＡＴＡ）インターフェースの様なストレージ・コントローラ・バス・インターフェース１０８を介したコンピュータシステム内のメモリを含められる。
【００２４】
ストレージ装置１１０は、プロセッサ上で実行するアプリケーション１０２及び／又はファイルシステム１０４用にデータを記憶可能である。データにアクセス及び／又はこれを変更するために、アプリケーション１０２は、ファイルシステム１０４への１つ以上のファイルのシステム呼び出しを実行可能であり、ファイルシステム１０４は、システム呼び出しに対応する入出力（Ｉ／Ｏ）要求を、ストレージ装置１１０用のデバイス・ドライバ１０６へと発行できる。次に、デバイス・ドライバ１０６は、要求ファイル（複数）に関連する論理ブロックアドレス（ＬＢＡ）、複数のブロック、及び／又は他の情報を含むＩ／Ｏコマンド１１４を構築して、Ｉ／Ｏコマンド１１４をストレージ・コントローラ・バス・インターフェース１０８を介してストレージ装置１１０に送信できる。そして、ストレージ装置１１０は、Ｉ／Ｏコマンド１１４内で指定されたブロックからの読み取り及び／又はブロックへの書き込みによって、Ｉ／Ｏコマンド１１４を処理できる。
【００２５】
当業者であれば、データがストレージ装置１１０上に記憶されている間、及び／又はストレージ・コントローラ・バス・インターフェース１０８を介して送信される間、コンピュータシステム上の暗号化されていないデータは、未承認のアクセスに対して脆弱である場合があることを認識しているであろう。この様な脆弱性を緩和するために、ストレージ装置１１０、及び／又はコンピュータシステムのＣＰＵ上で実行するプロセスによって、データを暗号化できる。例えば、ストレージ装置１１０用のコントローラは、１２８ビット次世代標準暗号化方式（ＡＥＳ）でデータを暗号化することで、ストレージ装置１１０上でデータを保護できる。
【００２６】
だが、ＣＰＵ及び／又はストレージ装置１１０によるデータの暗号化は、多くの欠点を伴うことがある。まず、ストレージ装置１１０により暗号化されたデータは、ストレージ・コントローラ・バス・インターフェース１０８を介した伝送用に暗号化されていないことがあり、したがって、攻撃者による傍受に対して脆弱である。一方、ストレージ・コントローラ・バス・インターフェース１０８を介したストレージ装置１１０への伝送前のＣＰＵによるデータ暗号化は、データ記憶が記憶されている間及び伝送中の未承認のデータ・アクセスを防止できるが、コンピュータシステムの計算オーバーヘッド及び／又は電力消費を増加させることがある。例えば、ＣＰＵは、データを第１バッファーから第２バッファーに複製して、第２バッファー内のデータを暗号化し、このデータをストレージ装置１１０に伝送することによって、ストレージ装置１１０に書き込み中にデータを保護できる。データの複製及び暗号化に関連する更なるＣＰＵサイクルによって、対応する書き込みの遅延、並びに書き込み実行中にＣＰＵにより消費される電力量の増加が発生する場合がある。
【００２７】
１つ以上の実施形態において、図１のシステムでは、ストレージ・コントローラ・バス・インターフェース１０８上で暗号化を実行することで、ストレージ装置１１０上でのＣＰＵに基づくデータの暗号化に関連する電力消費及び／又は遅延が低減される。上述の様に、アプリケーション１０２及び／又はコンピュータシステムの構成要素は、ファイルシステム１０４へのシステム呼び出しを実行することで、ストレージ装置１１０上でのデータの読み取り及び／又は書き込みが可能である。
【００２８】
次に、ファイルシステム１０４は、デバイス・ドライバ１０６へのシステム呼び出し用の暗号コンテキスト１１２を提供できる。１つ以上の実施形態において、暗号コンテキスト１１２により、ストレージ装置１１０とコンピュータシステム間で暗号化形式のデータを送信できる。例えば、暗号コンテキスト１１２には、データのＡＥＳ−ＸＴＳ暗号化で使用するための１つ以上のキー及び初期ベクトルを含められる。そして、暗号コンテキスト１１２を用いて、コンピュータシステム上でデータを暗号化してからデータをストレージ装置１１０に送信し、データをストレージ装置１１０から受信した後、コンピュータシステム上でデータを復号化できる。暗号コンテキストについては、図３と関連して以下でより詳細に述べる。
【００２９】
１つ以上の実施形態において、ファイルシステム１０４には、種々の暗号化細粒度でのデータの暗号化及び復号化を管理する機能が含まれる。例えば、ファイルシステム１０４は、ストレージ装置１１０上でのデータの暗号化及び復号化で使用される暗号コンテキスト１１２を含む１組の暗号コンテキストを保守できる。更に、ファイルシステム１０４は、各暗号化からのキー及び／又は初期ベクトルをアプリケーション、ファイル、及び／又は利用者に割り当てることが可能である。そして、アプリケーション、ファイル、及び／又は利用者に関連するデータを、対応する暗号コンテキストで暗号化及び復号化できる。即ち、ファイルシステム１０４は、ブロック単位でデータの暗号化と復号化を実行するストレージ装置（例えば、ストレージ装置１１０）及び／又はコントローラよりも柔軟的にコンピュータシステム上でデータを保護できる。
【００３０】
暗号コンテキスト１１２を利用できるようになると、デバイス・ドライバ１０６は、コンピュータシステム上のメモリに暗号コンテキスト１１２を配置して、暗号コンテキスト１１２用のメモリ・アドレスをストレージ・コントローラ・バス・インターフェース１０８に供給できる。更に、デバイス・ドライバ１０６は、システム呼び出しに基づいてメモリ内でＩ／Ｏコマンド１１４を構築して、Ｉ／Ｏコマンド１１４のメモリ・アドレスをストレージ・コントローラ・バス・インターフェース１０８へ供給できる。そして、ストレージ・コントローラ・バス・インターフェース１０８は、直接メモリアクセス（ＤＭＡ）を用いて、Ｉ／Ｏコマンド１１４及び暗号コンテキスト１１２をコンピュータシステム上のメモリ・アドレスからバッファー１１６へと伝送できる。Ｉ／Ｏコマンド１１４及び暗号コンテキスト１１２がバッファー１１６内にあれば、図２と関連して以下で詳細に説明するように、ストレージ・コントローラ・バス・インターフェース１０８は、暗号コンテキスト１１２をＩ／Ｏコマンド１１４に関連するデータに適用して、ストレージ装置１１０による処理のためのＩ／Ｏコマンド１１４をストレージ装置１１０へ発行する。
【００３１】
図２では、開示の実施形態に係わるストレージ・コントローラ・バス・インターフェース１０８を示している。前述の様に、ストレージ・コントローラ・バス・インターフェース１０８を用いて、ストレージ装置（例えば、図１のストレージ装置１１０）とホスト（例えば、コンピュータシステム）間でデータを送信できる。例えば、ストレージ・コントローラ・バス・インターフェース１０８は、ＳＡＴＡ−ＨＤＤをＣＰＵ及びホスト上のメモリを含むマザーボードに接続するアドバンスト・ホスト・コントローラ・インターフェース（ＡＨＣＩ）コントローラ（例えば、ホスト・バス・アダプター）に対応可能である。あるいは、ＳＳＤ上における１組のＮＡＮＤチップをマザーボードに接続するＳＳＤ用の統合ＮＡＮＤコントローラによって、ストレージ・コントローラ・バス・インターフェース１０８を実施可能である。
【００３２】
更に、ストレージ・コントローラ・バス・インターフェース１０８は、ストレージ装置１１０とホスト間の暗号化形式のデータを記憶及び伝送可能とすることで、未承認のアクセスを防止できる。まず、ストレージ・コントローラ・バス・インターフェース１０８は、周辺機器相互接続エクスプレス（ＰＣＩｅ）インターフェースの様なインターフェース２０２、及びＤＭＡエンジン２０４を用いて、ホスト上で実行するデバイス・ドライバ（例えば、図１のデバイス・ドライバ１０６）から、Ｉ／Ｏコマンド（例えば、図１のＩ／Ｏコマンド１１４）、及びこのＩ／Ｏコマンドに関連する暗号コンテキスト（例えば、図１の暗号コンテキスト１１２）を取得する。例えば、デバイス・ドライバは、Ｉ／Ｏコマンドに関連する１組のメモリ・アドレス及び暗号コンテキストをストレージ・コントローラ・バス・インターフェース１０８に供給可能であり、ＤＭＡエンジン２０４は、メモリインターフェース２０２を用いて、ホストのＣＰＵに直接アクセスせずに、Ｉ／Ｏコマンド、関連データ、及び／又は暗号コンテキストを、ホスト上のメモリ・アドレスからバッファー１１６に伝送できる。
【００３３】
データを保護するために、ストレージ・コントローラ・バス・インターフェース１０８の暗号装置２０６は、暗号コンテキストをデータに適用可能であり、これにより、ストレージ装置とホスト間で暗号化形式のデータを伝送できる。例えば、暗号装置２０６には、並列で動作する１組の暗号エンジンを含むことが可能であり、各暗号エンジンは、暗号コンテキストからの１組のキー及び初期ベクトルを用いて、データの一部に対してＡＥＳ−ＸＴＳ暗号化を実行する。
【００３４】
更に、ストレージ・コントローラ・バス・インターフェース１０８内のコマンド処理装置２０８は、Ｉ／Ｏコマンドを処理して、ストレージ装置による処理のためにストレージ装置とストレージ装置インターフェース２１０（例えば、ＳＡＴＡインターフェース）を介してＩ／Ｏコマンドを発行する。例えば、Ｉ／Ｏコマンドが書き込みコマンドに対応する場合、暗号装置２０６は、暗号コンテキストを用いてデータを暗号化してから、コマンド処理装置２０８は、Ｉ／Ｏコマンドをストレージ装置へ発行することが可能である。Ｉ／Ｏコマンドが読み取りコマンドに対応する場合、Ｉ／Ｏコマンドがストレージ装置により処理されて、データがストレージ装置インターフェース２１０を介して受信された後、暗号装置２０６は、暗号コンテキストを用いてデータを復号化してもよい。そして、ストレージ・コントローラ・バス・インターフェース１０８は、データを要求するアプリケーション及び／又は構成要素によって使用するために復号化データをホスト上の１組のメモリ・アドレスに伝送できる（例えば、メモリインターフェース２０２及びＤＭＡエンジン２０４を用いて）。
【００３５】
ストレージ・コントローラ・バス・インターフェース１０８の動作は、ストレージ装置インターフェース２１０を介して送られるデータを暗号化及び復号化するのに使用されるブロック・サイズに、メモリの読み取り及び書き込み用の最小ブロック・サイズを設定することで（例えば、メモリインターフェース２０２を介して）、更に支援可能である。例えば、ストレージ装置は、ページサイズが４ＫＢのＳＳＤに対応可能である。従って、各ページは、ストレージ装置とストレージ・コントローラ・バス・インターフェース１０８間で伝送される最小データ単位に相当可能である。同様に、メモリインターフェース２０２を介したＩ／Ｏの最小ブロック・サイズは、データの暗号化及び復号化を容易にするように４ＫＢに設定可能である（例えば、暗号装置２０６が全ページのみを暗号化及び復号化することを許可することにより）。
【００３６】
Ｉ／Ｏコマンドがストレージ装置により完了した後、更に、ストレージ・コントローラ・バス・インターフェース１０８は、完了したＩ／Ｏコマンドをデバイス・ドライバに通知してもよい。例えば、ストレージ・コントローラ・バス・インターフェース１０８は、メモリインターフェース２０２を介して完了したＩ／Ｏコマンドの通知をデバイス・ドライバに送信してもよい。そして、ストレージ・コントローラ・バス・インターフェース１０８は、デバイス・ドライバから新規Ｉ／Ｏコマンド及び暗号コンテキストを取得可能であり、ストレージ装置への未処理のＩ／Ｏコマンドが全て完了するまで、上記の方法で新規Ｉ／Ｏコマンドを処理する。
【００３７】
ストレージ・コントローラ・バス・インターフェース１０８により、ストレージ装置上のデータの暗号化及び復号化が可能となるので、データがストレージ装置上に記憶されている間、及びストレージ装置とホスト間のデータ伝送中、未承認のアクセスからデータを（例えば、ストレージ・コントローラ・バス・インターフェース１０８を介して）保護可能である。更に、ストレージ・コントローラ・バス・インターフェース１０８は、ＣＰＵに基づくデータの暗号化に関連する性能オーバーヘッド及び／又は電力消費を低減できる。例えば、書き込みコマンドを逐次作成して、書き込みコマンドに関連するデータを複製し、複製に対して暗号処理を実行してから、書き込みコマンド及び暗号化データをストレージ装置に送信することで、ＣＰＵは、ストレージ装置への書き込みを実行できる。一方、ストレージ・コントローラ・バス・インターフェース１０８は、データを複製せずに、並びに／又は他のＩ／Ｏコマンドが、ＣＰＵ及び／若しくはストレージ装置により作成、送信、及び／若しくは処理される間、書き込みコマンドに関連するデータを暗号化できる。同様に、ＣＰＵからストレージ・コントローラ・バス・インターフェース１０８へのデータ暗号化のオフロードによって、暗号化に関連する電力消費を１０Ｗ以上から３Ｗ以下までに抑えられる。
【００３８】
図３は開示の実施形態に係わる例示的な暗号コンテキストを示す図である。暗号コンテキストは、他の暗号コンテキストと共に暗号コンテキスト・テーブルに記憶可能であり、暗号コンテキスト・テーブル内のエントリーを、図１のストレージ・コントローラ・バス・インターフェース１０８の様なストレージ・コントローラ・バス・インターフェース用のコマンドリスト（例えば、ＡＨＣＩコマンドリスト）のＩ／Ｏコマンドと照合可能である。例えば、暗号コンテキスト・テーブルの暗号コンテキストは、インデックスをコマンドリスト内で対応するＩ／Ｏコマンドと共有可能である。そして、インデックスを暗号コンテキスト・テーブル及びコマンドリスト双方に供給することで、暗号コンテキストとＩ／Ｏコマンドを取り出せる。
【００３９】
図３で示す様に、暗号コンテキストは、１６個の３２ビット・データ語から構成可能である。第１データ語（例えば、「ＤＷ０」）には、ブロック・サイズ３０２、１組の予備ビット３０４及びイネーブル・ビット３０６を含められる。ブロック・サイズ３０２は、暗号化される各ブロックの長さを指定し、４０９６バイトの２xの乗数として表記可能である。例えば、ブロック・サイズ３０２の値０は、各ブロックが４０９６バイト長であることを示し、値１は、各ブロックが８１９２バイト長であることを示し、値２は、各ブロックが１６３８４バイト長であることを示すことが可能である。第１データ語の第２半部では、予備ビット３０４を０にクリア可能であり、イネーブル・ビット３０６を用いて、暗号コンテキストに関連するデータの暗号化及び／又は復号化を有効若しくは無効にできる。例えば、イネーブル・ビット３０６を、ブロック暗号化を有効とするよう設定して、ブロックの暗号化を無効とするようクリアできる。
【００４０】
第２データ語（例えば、「ＤＷ１」）には、暗号コンテキストを用いて暗号化されるブロック数を示すブロック・カウント３０８を含められてもよい。ブロック・カウント３０８は、初期ベクトルテーブルから取得する必要のあるデータ量を決定するために、ＤＭＡエンジン（例えば、図２のＤＭＡエンジン２０４）によって使用可能である。更に、第３、第４データ語（例えば、「ＤＷ２」と「ＤＷ３」）における初期ベクトルテーブル・アドレス３１０及び初期ベクトルテーブル・アドレス上位部３１２は、初期ベクトルテーブル用の６４ビット・アドレスを指定可能である。
【００４１】
最後に、暗号コンテキストの残りの部分（例えば、「ＤＷ４」〜「ＤＷ１５」）は、データのＡＥＳ−ＸＴＳ暗号化で使用するための２つの１２８ビット・キー３１４〜３１６及び１つの１２８ビット初期ベクトル３１８を含むことができる。この結果、サイズが４ＫＢのＩ／Ｏの場合、暗号コンテキスト・テーブルからの暗号コンテキストの取得だけを必要とし、初期ベクトルテーブル・アドレス３１０及び初期ベクトルテーブル・アドレス上位部３１２を用いた初期ベクトルテーブルの独立取得は必要としないよう、暗号コンテキストを構成できる。
【００４２】
図４は、開示の実施形態に係わるストレージ装置とホスト間のデータ伝送を保護するためのプロセスについて説明する流れ図である。１つ以上の実施形態において、１つ以上のステップの省略、繰り返し、及び／又は、異なる順序での実行が可能である。従って、図４で示すステップの特定の配列は、実施形態の範囲を限定するように解釈すべきでない。
【００４３】
まず、Ｉ／Ｏコマンド、及びＩ／Ｏコマンドに関連する暗号コンテキストを、ホスト上で実行するデバイス・ドライバから取得する（動作４０２）。Ｉ／Ｏコマンド及び暗号コンテキストを得るために、Ｉ／Ｏコマンドに関連する１組のメモリ・アドレス及び暗号コンテキストをデバイス・ドライバから取得してもよい。次に、ＤＭＡを用いて、Ｉ／Ｏコマンド及び暗号コンテキストを、ホスト上のメモリ・アドレスからホストとストレージ装置間のストレージ・コントローラ・バス・インターフェース上のバッファーに伝送してもよい。
【００４４】
ストレージ・コントローラ・バス・インターフェースは、暗号コンテキストをＩ／Ｏコマンドに関連するデータに適用し、ストレージ装置による処理のためにＩ／Ｏコマンドをストレージ装置に発行することで、Ｉ／Ｏコマンドを処理できる。暗号コンテキストによって、ストレージ装置とホスト間で暗号化形式のデータを伝送可能とし、これにより、データの機密性が保護される。更に、ストレージ・コントローラ・バス・インターフェースは、暗号コンテキストをアプリケーション、ファイル、及び／又は利用者に関連するデータに適用してもよい。即ち、暗号コンテキストにより、様々な暗号化細粒度でホスト内のデータを暗号化可能であり、これにより、従来のブロックに基づくストレージ装置上の暗号化及び復号化よりも柔軟的にデータを保護できる。
【００４５】
更に、ストレージ・コントローラ・バス・インターフェースは、Ｉ／Ｏコマンドの種類に基づいてＩ／Ｏコマンドを処理してもよい（動作４０４）。Ｉ／Ｏコマンドが読み取りコマンドに対応していれば、ストレージ・コントローラ・バス・インターフェースは、Ｉ／Ｏコマンドをストレージ装置に発行し（動作４０６）、データがストレージ装置から取り出された後、暗号コンテキストを用いてデータを復号化してもよい（動作４０８）。データが復号化されたら、ストレージ・コントローラ・バス・インターフェースは、ホストによる使用のために、復号化データをホスト上の１組のメモリ・アドレスへ伝送してもよい（動作４１０）。Ｉ／Ｏコマンドが書き込みコマンドに対応している場合、ストレージ・コントローラ・バス・インターフェースは、書き込むデータを暗号化してから（動作４１２）、Ｉ／Ｏコマンドをストレージ装置に発行する（動作４１４）。最後に、Ｉ／Ｏコマンドがストレージ装置及び／又はストレージ・コントローラ・バス・インターフェースにより完了した後、デバイス・ドライバには、完了したＩ／Ｏコマンドが通知される（動作４１６）。
【００４６】
図５は、開示の実施形態に係るコンピュータシステム５００を示す。コンピュータシステム５００は、プロセッサ５０２、メモリ５０４、ストレージ５０６、及び／又は、電子計算装置内で見られる他の構成要素を含む装置にしてもよい。プロセッサ５０２は、コンピュータシステム５００内で他のプロセッサとの並列処理及び／又はマルチスレッド動作に対応してもよい。また、コンピュータシステム５００は、キーボード５０８、マウス５１０、及び表示装置５１２などの入出力（Ｉ／Ｏ）装置を含んでもよい。
【００４７】
コンピュータシステム５００は、本実施形態の様々な構成要素を実行する機能を備えてもよい。具体的には、コンピュータシステム５００は、コンピュータシステム５００上のハードウェア資源及びソフトウェア資源の使用を調整するオペレーティングシステム（図示せず）、並びに利用者向けの専用タスクを実行する１つ以上のアプリケーションを含んでもよい。利用者向けのタスクを実行するために、アプリケーションは、オペレーティングシステムからコンピュータシステム５００上のハードウェア資源の使用を取得し、並びにオペレーティングシステムによって提供されるハードウェア・フレームワーク及び／又はソフトウェア・フレームワークを介して利用者と相互作用できる。
【００４８】
１つ以上の実施形態において、コンピュータシステム５００は、ストレージ装置（例えば、ストレージ５０６）とホスト間のデータ伝送を保護するシステムを提供する。このシステムは、デバイス・ドライバ、及びホストとストレージ装置間のストレージ・コントローラ・バス・インターフェースを含むことが可能である。デバイス・ドライバは、ホスト上で実行して、入出力（Ｉ／Ｏ）コマンド、及びＩ／Ｏコマンドに関連する暗号コンテキストをストレージ・コントローラ・バス・インターフェースに供給可能である。ストレージ・コントローラ・バス・インターフェースは、暗号コンテキストをＩ／Ｏコマンドに関連するデータに適用して、ストレージ装置とホスト間での暗号化形式のデータ送信を可能とする。ストレージ・コントローラ・バス・インターフェースは、ストレージ装置によるＩ／Ｏコマンドの処理のために、Ｉ／Ｏコマンドをストレージ装置に発行可能でもある。最後に、システムは、ホストによるストレージ装置の使用中に暗号コンテキストを作成及び管理するファイルシステムを含められる。
【００４９】
更に、コンピュータシステム５００の１つ以上の構成要素は、遠隔配置され、ネットワークを介して他の構成要素と接続されてもよい。また、本実施形態の一部（例えば、デバイス・ドライバ、ストレージ・コントローラ・バス・インターフェース、ファイルシステム、ストレージ装置等）は、本実施形態を実装する分散システムの種々のノード上に配置することもできる。例えば、本実施形態をリモート記憶デバイスとホストの間でデータを伝送するクラウドコンピューティング・システムで実現してもよい。
【００５０】
様々な実施形態に関する上記説明は、実例及び説明のみのために提示した。これらは、網羅的とすること、又は本発明を開示形態に制約することを意図するものではない。したがって、多くの改良、及び変形形態は、当業者に明らかであろう。加えて、上記の開示は、本発明を制限することを意図したものではない。
【図１】
2015513743.tif 000003
【図２】
2015513743.tif 000004
【図３】
2015513743.tif 000005
【図４】
2015513743.tif 000006
【図５】
2015513743.tif 000007
【国際調査報告】
2015513743.tif 000008
2015513743.tif 000009