JP6067757B2 - ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用 - Google Patents

ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用 Download PDF

Info

Publication number
JP6067757B2
JP6067757B2 JP2014559992A JP2014559992A JP6067757B2 JP 6067757 B2 JP6067757 B2 JP 6067757B2 JP 2014559992 A JP2014559992 A JP 2014559992A JP 2014559992 A JP2014559992 A JP 2014559992A JP 6067757 B2 JP6067757 B2 JP 6067757B2
Authority
JP
Japan
Prior art keywords
command
host
data
bus interface
context
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014559992A
Other languages
English (en)
Other versions
JP2015513743A (ja
Inventor
クリストファー ジェイ サルコーン
クリストファー ジェイ サルコーン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2015513743A publication Critical patent/JP2015513743A/ja
Application granted granted Critical
Publication of JP6067757B2 publication Critical patent/JP6067757B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices

Description

(発明の分野)
本実施形態は、コンピュータシステム用のストレージ装置に関する。具体的には、本実施形態は、ストレージ・コントローラ・バス・インターフェースを用いてストレージ装置、及びストレージ装置と接続するホスト装置間で伝送されるデータを暗号化、及び復号化する技術に関する。
(関連技術に関する説明)
近年のコンピュータシステムは、主として、プロセッサ及びメモリを含むマザーボードを、様々なインターフェースを介してマザーボードに接続する1組の周辺構成要素と合わせて含む。例えば、シリアル・アドバンスド・テクノロジー・アタッチメント(SATA)インターフェースは、ストレージ装置(例えば、ハードディスク・ドライブ(HDD)、光学ドライブ、固形状態ドライブ(SSD)、ハイブリッド・ハードドライブ(HHD)等)、及びマザーボード間のデータ伝送を支援可能であり、周辺機器相互接続エクスプレス(PCIe)バスでは、マザーボードと複数の統合、及び/又はアドオン周辺機器との通信が可能である。
コンピュータシステムにおけるこの様なデータ伝送は、数多くのセキュリティ問題及び/又は欠点を伴うことがある。とりわけ、暗号化されていない平文形式でデータを記憶及び/又は送信するストレージ装置は、盗聴者及び/又は攻撃者による未承認のアクセスに対して脆弱な場合がある。例えば、データをストレージ装置内に記憶されている間、及び/又はHDDとコンピュータシステムのマザーボード間のインターフェース(例えば、SATAインターフェース)を介した伝送中に、HDD上で暗号化されていないデータの機密性が損なわれる恐れがある。一方、記憶前にHDDにより暗号化されたデータは、記憶されている間に保護可能であるが、HDDとマザーボード間の伝送前には暗号化されないことがあり、それ故、HDD外部からの未承認のアクセスに対して脆弱となる。
データをより安全にするために、マザーボード上の中央処理ユニット(CPU)によってデータを暗号化してから、ストレージ装置とのインターフェースを介してデータを送信することも可能である。この結果、データが記憶されている間、及びインターフェースを介したデータの送信中に、データの機密性を維持できる。だが、CPUに基づく記憶データの暗号化では、CPUがデータを逐次取り出して、データを複製し、複製したデータを暗号化してから、データをストレージ装置に送信することが要求され、コンピュータシステムの計算オーバーヘッド及び/又は電力消費が増加する場合がある。
従って、コンピュータシステムにおけるデータ記憶と伝送の保護に関わる電力消費及び/又は計算オーバーヘッドを低減させる機構が、求められる。
開示の実施形態は、ストレージ装置とホスト間のデータ伝送を保護するシステムを提供している。動作中、システムは、ホスト上で実行するデバイス・ドライバから、入出力(I/O)コマンド及びI/Oコマンドに関連する暗号コンテキストを取得する。次に、システムは、ホストとストレージ装置間のストレージ・コントローラ・バス・インターフェースを用いて、暗号コンテキストをI/Oコマンドに関連するデータへ適用する。暗号コンテキストによって、ストレージ装置とホスト間で暗号化形式のデータを伝送できる。最後に、システムは、ストレージ・コントローラ・バス・インターフェースを用いて、I/Oコマンドをストレージ装置へ発行する。このI/Oコマンドは、ストレージ装置により処理される。
一部の実施形態では、I/Oコマンドがストレージ装置により完了した後、更に、システムは、完了したI/Oコマンドをデバイス・ドライバに通知する。
ある実施形態では、ホストからのI/Oコマンド及び暗号コンテキストの取得することには、
(i)デバイス・ドライバからI/Oコマンドに関連する1組のメモリ・アドレス及び暗号コンテキストを取得することと、
(ii)直接メモリ・アクセス(DMA)を用いて、I/Oコマンド及び暗号コンテキストをホスト上のメモリ・アドレスからストレージ・コントローラ・バス・インターフェース上のバッファーへと伝送することと、を伴う。
ある実施形態では、システムは、I/Oコマンドの種類に基づいてI/Oコマンドを処理する。I/Oコマンドが書き込みコマンドに対応していれば、システムは、暗号コンテキストでデータを暗号化してから、I/Oコマンドをストレージ装置に発行する。I/Oコマンドが読み取りコマンドに対応していれば、システムは、I/Oコマンドがストレージ装置により処理された後、暗号コンテキストでデータを復号化する。
ある実施形態では、I/Oコマンドが読み取りコマンドに対応していれば、システムは、更に、復号化データをホスト上の1組のメモリ・アドレスに伝送してから(例えば、DMAを用いて)、デバイス・ドライバに完了したI/Oコマンドを通知する。
ある実施形態では、暗号コンテキストは、アプリケーション、ファイル、及び利用者の少なくとも1つに関連している。即ち、暗号コンテキストにより、様々な暗号化細粒度でホスト内のデータを暗号化可能であり、したがって、従来のブロックに基づくストレージ装置上の暗号化及び復号化よりも柔軟的にデータを保護できる。
ある実施形態では、暗号コンテキストには、1つ以上のキー及び初期ベクトルが含まれる。例えば、キー及び/又は初期ベクトルを用いて、データのAES−XTS暗号化を実行できる。
開示の実施形態に係るシステムの概要を示す図である。
開示の実施形態に係わるストレージ・コントローラ・バス・インターフェースを示す図である。
開示の実施形態に係わる例示的な暗号コンテキストを示す図である。
開示の実施形態に係わるストレージ装置とホスト間のデータ伝送を保護するためのプロセスについて説明する流れ図である。
開示の実施形態に係るコンピュータシステムを示す図である。
これら図面において、類似の参照番号は、図の同じ要素を示している。
以下の記述は、あらゆる当業者が本実施形態を作成し、これを使用できるように提示されており、特定の用途及びその要件の状況内で提供されている。開示される実施形態に対する様々な改良は、当業者にはすぐ分かるであろう。本明細書において定義されている一般原理は、本開示の精神や範囲から逸脱することなく他の実施形態及び応用に適用可能である。従って、本発明は、示されている実施形態のみに限定されるものではなく、本明細書で開示されている原理及び特徴と整合する最も広い範囲を許容するものとする。
この詳細な説明において述べられているデータ構造及びコードは、主として、コンピュータ可読記憶媒体上に記憶され、このコンピュータ可読記憶媒体は、コンピュータシステムにより使用されるコード及び/又はデータを記憶可能とする任意のデバイス又は媒体でもよい。コンピュータ可読記憶媒体には、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、CD(コンパクトディスク)、DVD(ディジタル多用途ディスク、若しくは、ディジタルビデオディスク)等の磁気光学記憶デバイス、又は現在公知とされるか、あるいは、今後開発されるコード、及び/又はデータを記憶可能とする他の媒体が含まれるが、これらに限定されるものではない。
この詳細説明項内で述べられている方法及びプロセスは、上述のコンピュータ可読記憶媒体に記憶可能なコード及び/又はデータとして具現化できる。コンピュータシステムが、コンピュータ可読記憶媒体上に記憶されたコード及び/又はデータを読み取り、実行すると、コンピュータシステムは、データ構造及びコードとして具現化され、並びにコンピュータ可読記憶媒体内に記憶された方法及びプロセスを実行する。
更に、本明細書で述べられている方法及びプロセスを、ハードウェア・モジュール又は装置に含めてもよい。これらのモジュール又は装置には、特定用途向け集積回路(ASIC)チップ、フィールドプログラマブルゲートアレイ(FPGA)、特定時刻において特定のソフトウェア・モジュール若しくはコード部を実行する専用、あるいは、共有プロセッサ、及び/又は、現在公知とされるか、あるいは、今後開発される他のプログラマブルロジックデバイスを含むことが可能であるが、これらに限定されるものではない。ハードウェア・モジュール又は装置が動作すると、その内部に含まれている方法及びプロセスを実行する。
開示の実施形態は、コンピュータシステム内でデータを転送するための方法及びシステムを提供する。図1で示すように、コンピュータシステムには、ストレージ装置110、例えば、ハードディスク・ドライブ(HDD)、固形状態ドライブ(SSD)、及び/若しくはプロセッサ(例えば、中央処理ユニット(CPU))に接続するハイブリッド・ハードドライブ(HHD)、並びに/又はシリアルATA(SATA)インターフェースの様なストレージ・コントローラ・バス・インターフェース108を介したコンピュータシステム内のメモリを含められる。
ストレージ装置110は、プロセッサ上で実行するアプリケーション102及び/又はファイルシステム104用にデータを記憶可能である。データにアクセス及び/又はこれを変更するために、アプリケーション102は、ファイルシステム104への1つ以上のファイルのシステム呼び出しを実行可能であり、ファイルシステム104は、システム呼び出しに対応する入出力(I/O)要求を、ストレージ装置110用のデバイス・ドライバ106へと発行できる。次に、デバイス・ドライバ106は、要求ファイル(複数)に関連する論理ブロックアドレス(LBA)、複数のブロック、及び/又は他の情報を含むI/Oコマンド114を構築して、I/Oコマンド114をストレージ・コントローラ・バス・インターフェース108を介してストレージ装置110に送信できる。そして、ストレージ装置110は、I/Oコマンド114内で指定されたブロックからの読み取り及び/又はブロックへの書き込みによって、I/Oコマンド114を処理できる。
当業者であれば、データがストレージ装置110上に記憶されている間、及び/又はストレージ・コントローラ・バス・インターフェース108を介して送信される間、コンピュータシステム上の暗号化されていないデータは、未承認のアクセスに対して脆弱である場合があることを認識しているであろう。この様な脆弱性を緩和するために、ストレージ装置110、及び/又はコンピュータシステムのCPU上で実行するプロセスによって、データを暗号化できる。例えば、ストレージ装置110用のコントローラは、128ビット次世代標準暗号化方式(AES)でデータを暗号化することで、ストレージ装置110上でデータを保護できる。
だが、CPU及び/又はストレージ装置110によるデータの暗号化は、多くの欠点を伴うことがある。まず、ストレージ装置110により暗号化されたデータは、ストレージ・コントローラ・バス・インターフェース108を介した伝送用に暗号化されていないことがあり、したがって、攻撃者による傍受に対して脆弱である。一方、ストレージ・コントローラ・バス・インターフェース108を介したストレージ装置110への伝送前のCPUによるデータ暗号化は、データ記憶が記憶されている間及び伝送中の未承認のデータ・アクセスを防止できるが、コンピュータシステムの計算オーバーヘッド及び/又は電力消費を増加させることがある。例えば、CPUは、データを第1バッファーから第2バッファーに複製して、第2バッファー内のデータを暗号化し、このデータをストレージ装置110に伝送することによって、ストレージ装置110に書き込み中にデータを保護できる。データの複製及び暗号化に関連する更なるCPUサイクルによって、対応する書き込みの遅延、並びに書き込み実行中にCPUにより消費される電力量の増加が発生する場合がある。
1つ以上の実施形態において、図1のシステムでは、ストレージ・コントローラ・バス・インターフェース108上で暗号化を実行することで、ストレージ装置110上でのCPUに基づくデータの暗号化に関連する電力消費及び/又は遅延が低減される。上述の様に、アプリケーション102及び/又はコンピュータシステムの構成要素は、ファイルシステム104へのシステム呼び出しを実行することで、ストレージ装置110上でのデータの読み取り及び/又は書き込みが可能である。
次に、ファイルシステム104は、デバイス・ドライバ106へのシステム呼び出し用の暗号コンテキスト112を提供できる。1つ以上の実施形態において、暗号コンテキスト112により、ストレージ装置110とコンピュータシステム間で暗号化形式のデータを送信できる。例えば、暗号コンテキスト112には、データのAES−XTS暗号化で使用するための1つ以上のキー及び初期ベクトルを含められる。そして、暗号コンテキスト112を用いて、コンピュータシステム上でデータを暗号化してからデータをストレージ装置110に送信し、データをストレージ装置110から受信した後、コンピュータシステム上でデータを復号化できる。暗号コンテキストについては、図3と関連して以下でより詳細に述べる。
1つ以上の実施形態において、ファイルシステム104には、種々の暗号化細粒度でのデータの暗号化及び復号化を管理する機能が含まれる。例えば、ファイルシステム104は、ストレージ装置110上でのデータの暗号化及び復号化で使用される暗号コンテキスト112を含む1組の暗号コンテキストを保守できる。更に、ファイルシステム104は、各暗号化からのキー及び/又は初期ベクトルをアプリケーション、ファイル、及び/又は利用者に割り当てることが可能である。そして、アプリケーション、ファイル、及び/又は利用者に関連するデータを、対応する暗号コンテキストで暗号化及び復号化できる。即ち、ファイルシステム104は、ブロック単位でデータの暗号化と復号化を実行するストレージ装置(例えば、ストレージ装置110)及び/又はコントローラよりも柔軟的にコンピュータシステム上でデータを保護できる。
暗号コンテキスト112を利用できるようになると、デバイス・ドライバ106は、コンピュータシステム上のメモリに暗号コンテキスト112を配置して、暗号コンテキスト112用のメモリ・アドレスをストレージ・コントローラ・バス・インターフェース108に供給できる。更に、デバイス・ドライバ106は、システム呼び出しに基づいてメモリ内でI/Oコマンド114を構築して、I/Oコマンド114のメモリ・アドレスをストレージ・コントローラ・バス・インターフェース108へ供給できる。そして、ストレージ・コントローラ・バス・インターフェース108は、直接メモリアクセス(DMA)を用いて、I/Oコマンド114及び暗号コンテキスト112をコンピュータシステム上のメモリ・アドレスからバッファー116へと伝送できる。I/Oコマンド114及び暗号コンテキスト112がバッファー116内にあれば、図2と関連して以下で詳細に説明するように、ストレージ・コントローラ・バス・インターフェース108は、暗号コンテキスト112をI/Oコマンド114に関連するデータに適用して、ストレージ装置110による処理のためのI/Oコマンド114をストレージ装置110へ発行する。
図2では、開示の実施形態に係わるストレージ・コントローラ・バス・インターフェース108を示している。前述の様に、ストレージ・コントローラ・バス・インターフェース108を用いて、ストレージ装置(例えば、図1のストレージ装置110)とホスト(例えば、コンピュータシステム)間でデータを送信できる。例えば、ストレージ・コントローラ・バス・インターフェース108は、SATA−HDDをCPU及びホスト上のメモリを含むマザーボードに接続するアドバンスト・ホスト・コントローラ・インターフェース(AHCI)コントローラ(例えば、ホスト・バス・アダプター)に対応可能である。あるいは、SSD上における1組のNANDチップをマザーボードに接続するSSD用の統合NANDコントローラによって、ストレージ・コントローラ・バス・インターフェース108を実施可能である。
更に、ストレージ・コントローラ・バス・インターフェース108は、ストレージ装置110とホスト間の暗号化形式のデータを記憶及び伝送可能とすることで、未承認のアクセスを防止できる。まず、ストレージ・コントローラ・バス・インターフェース108は、周辺機器相互接続エクスプレス(PCIe)インターフェースの様なインターフェース202、及びDMAエンジン204を用いて、ホスト上で実行するデバイス・ドライバ(例えば、図1のデバイス・ドライバ106)から、I/Oコマンド(例えば、図1のI/Oコマンド114)、及びこのI/Oコマンドに関連する暗号コンテキスト(例えば、図1の暗号コンテキスト112)を取得する。例えば、デバイス・ドライバは、I/Oコマンドに関連する1組のメモリ・アドレス及び暗号コンテキストをストレージ・コントローラ・バス・インターフェース108に供給可能であり、DMAエンジン204は、メモリインターフェース202を用いて、ホストのCPUに直接アクセスせずに、I/Oコマンド、関連データ、及び/又は暗号コンテキストを、ホスト上のメモリ・アドレスからバッファー116に伝送できる。
データを保護するために、ストレージ・コントローラ・バス・インターフェース108の暗号装置206は、暗号コンテキストをデータに適用可能であり、これにより、ストレージ装置とホスト間で暗号化形式のデータを伝送できる。例えば、暗号装置206には、並列で動作する1組の暗号エンジンを含むことが可能であり、各暗号エンジンは、暗号コンテキストからの1組のキー及び初期ベクトルを用いて、データの一部に対してAES−XTS暗号化を実行する。
更に、ストレージ・コントローラ・バス・インターフェース108内のコマンド処理装置208は、I/Oコマンドを処理して、ストレージ装置による処理のためにストレージ装置とストレージ装置インターフェース210(例えば、SATAインターフェース)を介してI/Oコマンドを発行する。例えば、I/Oコマンドが書き込みコマンドに対応する場合、暗号装置206は、暗号コンテキストを用いてデータを暗号化してから、コマンド処理装置208は、I/Oコマンドをストレージ装置へ発行することが可能である。I/Oコマンドが読み取りコマンドに対応する場合、I/Oコマンドがストレージ装置により処理されて、データがストレージ装置インターフェース210を介して受信された後、暗号装置206は、暗号コンテキストを用いてデータを復号化してもよい。そして、ストレージ・コントローラ・バス・インターフェース108は、データを要求するアプリケーション及び/又は構成要素によって使用するために復号化データをホスト上の1組のメモリ・アドレスに伝送できる(例えば、メモリインターフェース202及びDMAエンジン204を用いて)。
ストレージ・コントローラ・バス・インターフェース108の動作は、ストレージ装置インターフェース210を介して送られるデータを暗号化及び復号化するのに使用されるブロック・サイズに、メモリの読み取り及び書き込み用の最小ブロック・サイズを設定することで(例えば、メモリインターフェース202を介して)、更に支援可能である。例えば、ストレージ装置は、ページサイズが4KBのSSDに対応可能である。従って、各ページは、ストレージ装置とストレージ・コントローラ・バス・インターフェース108間で伝送される最小データ単位に相当可能である。同様に、メモリインターフェース202を介したI/Oの最小ブロック・サイズは、データの暗号化及び復号化を容易にするように4KBに設定可能である(例えば、暗号装置206が全ページのみを暗号化及び復号化することを許可することにより)。
I/Oコマンドがストレージ装置により完了した後、更に、ストレージ・コントローラ・バス・インターフェース108は、完了したI/Oコマンドをデバイス・ドライバに通知してもよい。例えば、ストレージ・コントローラ・バス・インターフェース108は、メモリインターフェース202を介して完了したI/Oコマンドの通知をデバイス・ドライバに送信してもよい。そして、ストレージ・コントローラ・バス・インターフェース108は、デバイス・ドライバから新規I/Oコマンド及び暗号コンテキストを取得可能であり、ストレージ装置への未処理のI/Oコマンドが全て完了するまで、上記の方法で新規I/Oコマンドを処理する。
ストレージ・コントローラ・バス・インターフェース108により、ストレージ装置上のデータの暗号化及び復号化が可能となるので、データがストレージ装置上に記憶されている間、及びストレージ装置とホスト間のデータ伝送中、未承認のアクセスからデータを(例えば、ストレージ・コントローラ・バス・インターフェース108を介して)保護可能である。更に、ストレージ・コントローラ・バス・インターフェース108は、CPUに基づくデータの暗号化に関連する性能オーバーヘッド及び/又は電力消費を低減できる。例えば、書き込みコマンドを逐次作成して、書き込みコマンドに関連するデータを複製し、複製に対して暗号処理を実行してから、書き込みコマンド及び暗号化データをストレージ装置に送信することで、CPUは、ストレージ装置への書き込みを実行できる。一方、ストレージ・コントローラ・バス・インターフェース108は、データを複製せずに、並びに/又は他のI/Oコマンドが、CPU及び/若しくはストレージ装置により作成、送信、及び/若しくは処理される間、書き込みコマンドに関連するデータを暗号化できる。同様に、CPUからストレージ・コントローラ・バス・インターフェース108へのデータ暗号化のオフロードによって、暗号化に関連する電力消費を10W以上から3W以下までに抑えられる。
図3は開示の実施形態に係わる例示的な暗号コンテキストを示す図である。暗号コンテキストは、他の暗号コンテキストと共に暗号コンテキスト・テーブルに記憶可能であり、暗号コンテキスト・テーブル内のエントリーを、図1のストレージ・コントローラ・バス・インターフェース108の様なストレージ・コントローラ・バス・インターフェース用のコマンドリスト(例えば、AHCIコマンドリスト)のI/Oコマンドと照合可能である。例えば、暗号コンテキスト・テーブルの暗号コンテキストは、インデックスをコマンドリスト内で対応するI/Oコマンドと共有可能である。そして、インデックスを暗号コンテキスト・テーブル及びコマンドリスト双方に供給することで、暗号コンテキストとI/Oコマンドを取り出せる。
図3で示す様に、暗号コンテキストは、16個の32ビット・データ語から構成可能である。第1データ語(例えば、「DW0」)には、ブロック・サイズ302、1組の予備ビット304及びイネーブル・ビット306を含められる。ブロック・サイズ302は、暗号化される各ブロックの長さを指定し、4096バイトの2xの乗数として表記可能である。例えば、ブロック・サイズ302の値0は、各ブロックが4096バイト長であることを示し、値1は、各ブロックが8192バイト長であることを示し、値2は、各ブロックが16384バイト長であることを示すことが可能である。第1データ語の第2半部では、予備ビット304を0にクリア可能であり、イネーブル・ビット306を用いて、暗号コンテキストに関連するデータの暗号化及び/又は復号化を有効若しくは無効にできる。例えば、イネーブル・ビット306を、ブロック暗号化を有効とするよう設定して、ブロックの暗号化を無効とするようクリアできる。
第2データ語(例えば、「DW1」)には、暗号コンテキストを用いて暗号化されるブロック数を示すブロック・カウント308を含められてもよい。ブロック・カウント308は、初期ベクトルテーブルから取得する必要のあるデータ量を決定するために、DMAエンジン(例えば、図2のDMAエンジン204)によって使用可能である。更に、第3、第4データ語(例えば、「DW2」と「DW3」)における初期ベクトルテーブル・アドレス310及び初期ベクトルテーブル・アドレス上位部312は、初期ベクトルテーブル用の64ビット・アドレスを指定可能である。
最後に、暗号コンテキストの残りの部分(例えば、「DW4」〜「DW15」)は、データのAES−XTS暗号化で使用するための2つの128ビット・キー314〜316及び1つの128ビット初期ベクトル318を含むことができる。この結果、サイズが4KBのI/Oの場合、暗号コンテキスト・テーブルからの暗号コンテキストの取得だけを必要とし、初期ベクトルテーブル・アドレス310及び初期ベクトルテーブル・アドレス上位部312を用いた初期ベクトルテーブルの独立取得は必要としないよう、暗号コンテキストを構成できる。
図4は、開示の実施形態に係わるストレージ装置とホスト間のデータ伝送を保護するためのプロセスについて説明する流れ図である。1つ以上の実施形態において、1つ以上のステップの省略、繰り返し、及び/又は、異なる順序での実行が可能である。従って、図4で示すステップの特定の配列は、実施形態の範囲を限定するように解釈すべきでない。
まず、I/Oコマンド、及びI/Oコマンドに関連する暗号コンテキストを、ホスト上で実行するデバイス・ドライバから取得する(動作402)。I/Oコマンド及び暗号コンテキストを得るために、I/Oコマンドに関連する1組のメモリ・アドレス及び暗号コンテキストをデバイス・ドライバから取得してもよい。次に、DMAを用いて、I/Oコマンド及び暗号コンテキストを、ホスト上のメモリ・アドレスからホストとストレージ装置間のストレージ・コントローラ・バス・インターフェース上のバッファーに伝送してもよい。
ストレージ・コントローラ・バス・インターフェースは、暗号コンテキストをI/Oコマンドに関連するデータに適用し、ストレージ装置による処理のためにI/Oコマンドをストレージ装置に発行することで、I/Oコマンドを処理できる。暗号コンテキストによって、ストレージ装置とホスト間で暗号化形式のデータを伝送可能とし、これにより、データの機密性が保護される。更に、ストレージ・コントローラ・バス・インターフェースは、暗号コンテキストをアプリケーション、ファイル、及び/又は利用者に関連するデータに適用してもよい。即ち、暗号コンテキストにより、様々な暗号化細粒度でホスト内のデータを暗号化可能であり、これにより、従来のブロックに基づくストレージ装置上の暗号化及び復号化よりも柔軟的にデータを保護できる。
更に、ストレージ・コントローラ・バス・インターフェースは、I/Oコマンドの種類に基づいてI/Oコマンドを処理してもよい(動作404)。I/Oコマンドが読み取りコマンドに対応していれば、ストレージ・コントローラ・バス・インターフェースは、I/Oコマンドをストレージ装置に発行し(動作406)、データがストレージ装置から取り出された後、暗号コンテキストを用いてデータを復号化してもよい(動作408)。データが復号化されたら、ストレージ・コントローラ・バス・インターフェースは、ホストによる使用のために、復号化データをホスト上の1組のメモリ・アドレスへ伝送してもよい(動作410)。I/Oコマンドが書き込みコマンドに対応している場合、ストレージ・コントローラ・バス・インターフェースは、書き込むデータを暗号化してから(動作412)、I/Oコマンドをストレージ装置に発行する(動作414)。最後に、I/Oコマンドがストレージ装置及び/又はストレージ・コントローラ・バス・インターフェースにより完了した後、デバイス・ドライバには、完了したI/Oコマンドが通知される(動作416)。
図5は、開示の実施形態に係るコンピュータシステム500を示す。コンピュータシステム500は、プロセッサ502、メモリ504、ストレージ506、及び/又は、電子計算装置内で見られる他の構成要素を含む装置にしてもよい。プロセッサ502は、コンピュータシステム500内で他のプロセッサとの並列処理及び/又はマルチスレッド動作に対応してもよい。また、コンピュータシステム500は、キーボード508、マウス510、及び表示装置512などの入出力(I/O)装置を含んでもよい。
コンピュータシステム500は、本実施形態の様々な構成要素を実行する機能を備えてもよい。具体的には、コンピュータシステム500は、コンピュータシステム500上のハードウェア資源及びソフトウェア資源の使用を調整するオペレーティングシステム(図示せず)、並びに利用者向けの専用タスクを実行する1つ以上のアプリケーションを含んでもよい。利用者向けのタスクを実行するために、アプリケーションは、オペレーティングシステムからコンピュータシステム500上のハードウェア資源の使用を取得し、並びにオペレーティングシステムによって提供されるハードウェア・フレームワーク及び/又はソフトウェア・フレームワークを介して利用者と相互作用できる。
1つ以上の実施形態において、コンピュータシステム500は、ストレージ装置(例えば、ストレージ506)とホスト間のデータ伝送を保護するシステムを提供する。このシステムは、デバイス・ドライバ、及びホストとストレージ装置間のストレージ・コントローラ・バス・インターフェースを含むことが可能である。デバイス・ドライバは、ホスト上で実行して、入出力(I/O)コマンド、及びI/Oコマンドに関連する暗号コンテキストをストレージ・コントローラ・バス・インターフェースに供給可能である。ストレージ・コントローラ・バス・インターフェースは、暗号コンテキストをI/Oコマンドに関連するデータに適用して、ストレージ装置とホスト間での暗号化形式のデータ送信を可能とする。ストレージ・コントローラ・バス・インターフェースは、ストレージ装置によるI/Oコマンドの処理のために、I/Oコマンドをストレージ装置に発行可能でもある。最後に、システムは、ホストによるストレージ装置の使用中に暗号コンテキストを作成及び管理するファイルシステムを含められる。
更に、コンピュータシステム500の1つ以上の構成要素は、遠隔配置され、ネットワークを介して他の構成要素と接続されてもよい。また、本実施形態の一部(例えば、デバイス・ドライバ、ストレージ・コントローラ・バス・インターフェース、ファイルシステム、ストレージ装置等)は、本実施形態を実装する分散システムの種々のノード上に配置することもできる。例えば、本実施形態をリモート記憶デバイスとホストの間でデータを伝送するクラウドコンピューティング・システムで実現してもよい。
様々な実施形態に関する上記説明は、実例及び説明のみのために提示した。これらは、網羅的とすること、又は本発明を開示形態に制約することを意図するものではない。したがって、多くの改良、及び変形形態は、当業者に明らかであろう。加えて、上記の開示は、本発明を制限することを意図したものではない。

Claims (23)

  1. ストレージ装置とホスト間のデータ伝送を保護する方法であって、
    前記方法は、
    前記ホスト上で実行するデバイス・ドライバから、入出力(I/O)コマンド、及び前記I/Oコマンドに関連する暗号コンテキストを取得することであって、前記ホストから前記I/Oコマンド及び前記暗号コンテキストを取得することは、前記I/Oコマンド及び前記暗号コンテキストを前記ホスト上の1組のメモリ・アドレスからストレージ・コントローラ・バス・インターフェース上のバッファーに伝送することと、
    ストレージ・コントローラ・バス・インターフェースを用いて、前記ストレージ装置と前記ホストとの間での暗号化形式のデータ送信を可能とする前記暗号コンテキストを前記I/Oコマンドに関連するデータに適用することと、
    前記I/Oコマンドが、書き込みコマンドに対応する場合には、前記I/Oコマンドを前記ストレージ装置へ発行する前に、前記ストレージ・コントローラ・バス・インターフェースを用いて、前記データを暗号化することと、
    前記I/Oコマンドが、読み取りコマンドに対応する場合には、前記I/Oコマンドが、前記ストレージ装置により処理された後に、前記ストレージ・コントローラ・バス・インターフェースを用いて、前記データを復号化することとを含む、方法。
  2. 前記I/Oコマンドが前記ストレージ装置により完了した後、前記完了したI/Oコマンドを前記デバイス・ドライバに通知することを更に含む、請求項1に記載の方法。
  3. 前記I/Oコマンド、及び前記暗号コンテキストを前記ホストから取得することは、
    前記デバイス・ドライバから前記I/Oコマンドに関連する前記1組のメモリ・アドレス及び前記暗号コンテキストを取得することと、
    直接メモリ・アクセス(DMA)を用いて、前記I/Oコマンド及び前記暗号コンテキストを前記ホスト上の前記メモリ・アドレスから前記ストレージ・コントローラ・バス・インターフェース上のバッファーへと伝送することと、を含む、請求項1に記載の方法。
  4. 前記暗号コンテキストを前記I/Oコマンドに関連する前記データに適用することは、
    前記I/Oコマンドが書き込みコマンドに対応しているときに、前記暗号コンテキストを用いて前記データを暗号化してから、前記I/Oコマンドを前記ストレージ装置に発行することと、
    前記I/Oコマンドが読み取りコマンドに対応しているときに、前記I/Oコマンドが前記ストレージ装置により処理された後、前記暗号コンテキストを用いて前記データを復号化することと、を含む、請求項1に記載の方法。
  5. 前記I/Oコマンドが前記読み取りコマンドに対応する場合、前記方法は、
    前記復号化データを前記ホスト上の1組のメモリ・アドレスに伝送することを更に含む、請求項4に記載の方法。
  6. 前記暗号コンテキストは、アプリケーション、ファイル、及び利用者の少なくとも1つに関連する、請求項1に記載の方法。
  7. 前記暗号コンテキストは、
    1つ以上のキーと、
    初期ベクトルと、を含む、請求項1に記載の方法。
  8. ストレージ装置とホスト間のデータ伝送を保護するシステムにおいて、前記システムは、
    前記ストレージ装置と前記ホストとの間での暗号化形式のデータ送信を可能とする暗号コンテキストを前記I/Oコマンドに関連するデータに適用し、処理のために前記I/Oコマンドを前記ストレージ装置へ発行するストレージ・コントローラ・バス・インターフェースと、
    前記ホスト上で実行し、前記I/Oコマンドに関連する、前記ホスト上の1組のメモリ・アドレス及び前記暗号化コンテキストをストレージ・コントローラ・バス・インターフェースに供給し、前記I/Oコマンド及び前記暗号化コンテキストに対する前記1組のメモリ・アドレスから前記ストレージ・コントローラ・バス・インターフェースへの直接メモリ・アクセス(DMA)伝送を構成するデバイス・ドライバと、
    を備えるシステム。
  9. 前記ホストによる前記ストレージ装置の使用中に前記暗号コンテキストを作成、管理するように構成されるファイルシステムを更に備える、請求項8に記載のシステム。
  10. 前記I/Oコマンドが前記ストレージ装置により完了した後、前記ストレージ・コントローラは更に、
    前記デバイス・ドライバに前記完了したI/Oコマンドを通知するように構成される、請求項8に記載のシステム。
  11. 前記ストレージ・コントローラ・バス・インターフェースは、DMAエンジンと共に、前記ホストの中央処理装置に直接アクセスせずに、前記ホストへの、又は前記ホストからの伝送を実行する、請求項8に記載のシステム。
  12. 前記暗号コンテキストを前記I/Oコマンドに関連する前記データに適用することは、
    前記I/Oコマンドが書き込みコマンドに対応している場合、前記暗号コンテキストを用いて前記データを暗号化してから、前記I/Oコマンドを前記ストレージ装置に発行することと、
    前記I/Oコマンドが読み取りコマンドに対応している場合、前記I/Oコマンドが前記ストレージ装置により処理された後、前記暗号コンテキストを用いて前記データを復号化することと、を含む、請求項8に記載のシステム。
  13. 前記I/Oコマンドが前記読み取りコマンドに対応する場合、前記ストレージ・コントローラ・バス・インターフェースは、
    前記復号化データを前記ホスト上の1組のメモリ・アドレスに伝送するように更に構成される、請求項12に記載のシステム。
  14. 前記復号化データは、DMAを用いて前記1組のメモリ・アドレスに伝送される、請求項13に記載のシステム。
  15. 前記暗号コンテキストは、アプリケーション、ファイル、及び利用者のうちの少なくとも1つに関連する、請求項8に記載のシステム。
  16. 前記暗号コンテキストは、
    1つ以上のキーと、
    初期ベクトルと、を含む、請求項8に記載のシステム。
  17. 命令を記憶する持続性コンピュータ可読記憶媒体であって、前記命令が、1又は複数のプロセッサによって実行された時、ストレージ装置とホスト間のデータ伝送を保護する動作を前記1又は複数のプロセッサに実行させ、前記動作は、
    前記ホスト上で実行するデバイス・ドライバから、入出力(I/O)コマンドリ、及び前記I/Oコマンドに関連する暗号コンテキストを取得することであって、前記I/Oコマンド及び前記暗号コンテキストを前記ホストから取得することは、前記I/Oコマンド及び前記暗号コンテキストを前記ホスト上の1組のメモリ・アドレスからストレージ・コントローラ・バス・インターフェース上のバッファーに伝送することと、
    前記ストレージ・コントローラ・バス・インターフェースを用いて前記ストレージ装置と前記ホスト間での暗号化形式のデータ送信を可能とする前記暗号コンテキストを前記I/Oコマンドに関連するデータに適用することと、
    前記I/Oコマンドが書き込みコマンドに対応しているときに、前記I/Oコマンドを前記ストレージ装置へ発行する前に、前記ストレージ・コントローラ・バス・インターフェースを用いて、前記データを暗号化することと、
    前記I/Oコマンドが読み取りコマンドに対応しているときに、前記I/Oコマンドが、前記ストレージ装置により処理された後に、前記ストレージ・コントローラ・バス・インターフェースを用いて、前記データを復号化することと、
    を含む、コンピュータ可読記憶媒体。
  18. 前記I/Oコマンドが前記ストレージ装置により完了した後、前記完了したI/Oコマンドを前記デバイス・ドライバに通知することを含む更なる動作を実行する命令を更に含む、請求項17に記載のコンピュータ可読記憶媒体。
  19. 前記I/Oコマンド及び前記暗号コンテキストを前記ホストから取得することは、
    直接メモリ・アクセス(DMA)を用いて、前記I/Oコマンド、及び前記暗号コンテキストを前記ホスト上の前記メモリ・アドレスから前記ストレージ・コントローラ・バス・インターフェース上のバッファーへと伝送することと、を含む、請求項17に記載のコンピュータ可読記憶媒体。
  20. 前記DMAを用いることは、DMAエンジンを用いて、前記ホストの中央処理装置に直接アクセスせずに、前記ホスト上で、前記メモリ・アドレスへの又は前記メモリ・アドレスから伝送することを備える請求項19に記載のコンピュータ可読記憶媒体。
  21. 前記I/Oコマンドが前記読み取りコマンドに対応しているときに、
    前記復号化データを前記ホスト上の1組のメモリ・アドレスに伝送することを含む更なる動作を実行する命令を更に含む、請求項17に記載のコンピュータ可読記憶媒体。
  22. 前記暗号コンテキストは、アプリケーション、ファイル、及び利用者の少なくとも1つに関連する、請求項17に記載のコンピュータ可読記憶媒体。
  23. 前記暗号コンテキストは、
    1つ以上のキーと、
    初期ベクトルと、を含む、請求項17に記載のコンピュータ可読記憶媒体。
JP2014559992A 2012-02-29 2013-02-27 ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用 Active JP6067757B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/408,725 2012-02-29
US13/408,725 US9152825B2 (en) 2012-02-29 2012-02-29 Using storage controller bus interfaces to secure data transfer between storage devices and hosts
PCT/US2013/028053 WO2013130632A1 (en) 2012-02-29 2013-02-27 Using storage controller bus interfaces to secure data transfer between storage devices and hosts

Publications (2)

Publication Number Publication Date
JP2015513743A JP2015513743A (ja) 2015-05-14
JP6067757B2 true JP6067757B2 (ja) 2017-01-25

Family

ID=47892000

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014559992A Active JP6067757B2 (ja) 2012-02-29 2013-02-27 ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用

Country Status (7)

Country Link
US (1) US9152825B2 (ja)
EP (1) EP2803012B1 (ja)
JP (1) JP6067757B2 (ja)
KR (1) KR101742364B1 (ja)
CN (1) CN104160407B (ja)
AU (1) AU2013226133B2 (ja)
WO (1) WO2013130632A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665501B1 (en) * 2013-06-18 2017-05-30 Western Digital Technologies, Inc. Self-encrypting data storage device supporting object-level encryption
US9461815B2 (en) * 2013-10-18 2016-10-04 Advanced Micro Devices, Inc. Virtualized AES computational engine
KR102263880B1 (ko) * 2014-06-19 2021-06-11 삼성전자주식회사 호스트 컨트롤러 및 시스템-온-칩
US9661007B2 (en) * 2015-03-18 2017-05-23 Intel Corporation Network interface devices with remote storage control
US10140457B2 (en) * 2015-07-31 2018-11-27 Intel Corporation Secure input/output device management
CN105243344B (zh) * 2015-11-02 2020-09-01 上海兆芯集成电路有限公司 具有硬盘加密功能的芯片组以及主机控制器
US10225247B2 (en) 2015-12-14 2019-03-05 Intel Corporation Bidirectional cryptographic IO for data streams
US10157153B2 (en) 2016-02-03 2018-12-18 Qualcomm Incorporated Inline cryptographic engine (ICE) for peripheral component interconnect express (PCIe) systems
US10310990B2 (en) 2016-06-24 2019-06-04 Hewlett Packard Enterprise Development Lp Direct memory access encryption with application provided keys
US10476846B2 (en) * 2016-08-05 2019-11-12 The Boeing Company Data-at-rest (DAR) encryption for integrated storage media
US10896267B2 (en) * 2017-01-31 2021-01-19 Hewlett Packard Enterprise Development Lp Input/output data encryption
US10417458B2 (en) * 2017-02-24 2019-09-17 Microsoft Technology Licensing, Llc Securing an unprotected hardware bus
US11080409B2 (en) * 2018-11-07 2021-08-03 Ngd Systems, Inc. SSD content encryption and authentication
CN110245526B (zh) * 2019-05-07 2021-04-23 杭州电子科技大学 一种基于PCIe接口的加密方法
US11249924B2 (en) * 2019-11-25 2022-02-15 Micron Technology, Inc. Secure data communication with memory sub-system
CN114691049B (zh) * 2022-04-29 2023-03-17 无锡众星微系统技术有限公司 一种存储设备的i/o控制方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005505853A (ja) * 2001-10-12 2005-02-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ユーザデータを読出し又は書込みするための装置及び方法
JP2004070499A (ja) * 2002-08-02 2004-03-04 Fujitsu Ltd メモリデバイスおよび暗号化/復号方法
ATE549687T1 (de) * 2004-12-21 2012-03-15 Sandisk Corp Speichersystem mit in-stream- datenverschlüsselung/-entschlüsselung
US20070180539A1 (en) 2004-12-21 2007-08-02 Michael Holtzman Memory system with in stream data encryption / decryption
US7849330B2 (en) * 2006-03-20 2010-12-07 Hitachi, Ltd. Apparatus and method for secure data disposal
JP2007328619A (ja) * 2006-06-08 2007-12-20 Toshiba Corp メモリシステム
IL177756A (en) * 2006-08-29 2014-11-30 Lior Frenkel Encryption-based protection against attacks
US8464073B2 (en) * 2006-09-13 2013-06-11 Stec, Inc. Method and system for secure data storage
KR101206542B1 (ko) * 2006-12-18 2012-11-30 주식회사 엘지씨엔에스 하드웨어 기반의 동적공격 탐지 및 차단을 지원하는네트워크 보안 장치 및 방법
US20080181406A1 (en) * 2007-01-30 2008-07-31 Technology Properties Limited System and Method of Storage Device Data Encryption and Data Access Via a Hardware Key
JP4347350B2 (ja) * 2007-02-15 2009-10-21 富士通株式会社 データ暗号転送装置、データ復号転送装置、データ暗号転送方法およびデータ復号転送方法
US8539245B2 (en) * 2010-08-06 2013-09-17 Intel Corporation Apparatus and method for accessing a secure partition in non-volatile storage by a host system enabled after the system exits a first instance of a secure mode
US8190784B1 (en) * 2011-03-30 2012-05-29 Emc Corporation In-band transport mechanism for carrying communications among functional components of a storage I/O interface stack

Also Published As

Publication number Publication date
US9152825B2 (en) 2015-10-06
EP2803012A1 (en) 2014-11-19
JP2015513743A (ja) 2015-05-14
WO2013130632A1 (en) 2013-09-06
US20130227301A1 (en) 2013-08-29
AU2013226133A1 (en) 2014-08-28
CN104160407B (zh) 2017-04-05
AU2013226133B2 (en) 2016-01-21
CN104160407A (zh) 2014-11-19
KR20140117635A (ko) 2014-10-07
KR101742364B1 (ko) 2017-05-31
EP2803012B1 (en) 2020-08-05

Similar Documents

Publication Publication Date Title
JP6067757B2 (ja) ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用
US20230110230A1 (en) Technologies for secure i/o with memory encryption engines
EP3355232B1 (en) Input/output data encryption
US20190229924A1 (en) Key rotating trees with split counters for efficient hardware replay protection
KR101880075B1 (ko) 중복 제거 기반 데이터 보안
US10810138B2 (en) Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME)
TWI567557B (zh) 具防護重播攻擊之用於記憶體加密的可微調加密模式
JP2016517241A (ja) ストレージデバイスによって支援されるインライン暗号化および暗号化解除
JP2005303981A (ja) データストレージシステムにおける暗号化変換の方法と装置
JP2014530371A (ja) ファイル暗号化方法及び装置、ファイル復号方法及び装置
TW201723918A (zh) 安全子系統
CN111949372B (zh) 一种虚拟机迁移方法、通用处理器及电子设备
US11036652B2 (en) Secured access control in a storage system
US11494351B2 (en) Deduplication of encrypted data
WO2020118583A1 (zh) 数据处理方法、电路、终端设备及存储介质
JP2023542936A (ja) チャネル暗号化区別のためのメタデータ調整(metadata tweak)
KR20090059602A (ko) 세션 메모리 버스를 구비한 암호화 장치
CN113536331B (zh) 存储器和计算系统的数据安全
US11861374B2 (en) Batch transfer of commands and data in a secure computer system
US20230208821A1 (en) Method and device for protecting and managing keys
JP6107286B2 (ja) 分散ストレージシステム、ノード、データ管理方法、及びプログラム
EP4202740A1 (en) Process object re-keying during process creation in cryptographic computing
CN113536331A (zh) 存储器和计算系统的数据安全
JP2009075474A (ja) 暗号処理装置
JP2011129073A (ja) ホストコントローラ、情報処理装置および情報処理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160601

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161028

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161221

R150 Certificate of patent or registration of utility model

Ref document number: 6067757

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250