(57)【要約】      （修正有）【課題】統合された記憶媒体に格納されたＤＡＲを暗号化するための改良された方法及びシステムを提供する。【解決手段】ホスト・デバイスのホスト・コントローラにより格納された保存データＤＡＲの透過的なインライン暗号化を提供するために、暗号化コア３２０が、ハードウェアデバイス３１０内でインスタンス化される。暗号化コアは、記憶装置プロキシ３３０、暗号化エンジン３４０及び複数のホスト・デバイス・プロキシ３５０Ａ、３５０Ｂを含む。各ホスト・デバイス・プロキシは、記憶装置プロキシを介してホスト・デバイス内の複数の永続記憶装置のうち１つの永続記憶装置にホスト・コントローラをインタフェースする。記憶装置プロキシは、複数の永続記憶装置を単一の永続記憶装置としてのホスト・コントローラに公開する。暗号化コアは、ホスト・コントローラ及び暗号化された記憶装置の間で交換されるＤＡＲを暗号化復号化する。【選択図】図３
2018042233.tif 000002
【特許請求の範囲】
【請求項１】
ホスト・デバイス（２００、４００）のホスト・コントローラ（２２０、４２０）により格納された保存データ（ＤＡＲ）の透過的なインライン暗号化を提供するためのシステム（３００、４４０）であって、
プロセッサ（２１０、４１０）と、
前記プロセッサにより実行されたとき前記システムに、
記憶装置プロキシ（３３０）、暗号化エンジン（３４０）、および複数のホスト・デバイス・プロキシ（３５０Ａ、３５０Ｂ、１００、２４０、４５０、４６０）を備えた暗号化コア（３２０）をインスタンス化することであって、前記複数のホスト・デバイス・プロキシの各ホスト・デバイス・プロキシは前記ホスト・コントローラを複数の永続記憶装置のうち１つの永続記憶装置に前記憶装置プロキシを介してインタフェースし（１１０）、前記憶装置プロキシは前記複数の永続記憶装置を単一の永続記憶装置として前記ホスト・コントローラに公開する、ことと、
データ転送動作を開始するための転送コマンドを前記憶装置プロキシにある前記ホスト・コントローラから受信することと、
前記転送コマンドにより開始された前記データ転送動作および前記暗号化エンジンの暗号化状態に基づいて前記転送コマンドを処理することと、
を行わせる、実行されるべき第１の組の命令を含むコンピューティング・デバイス（３１０）と、
を備え、
前記複数の永続記憶装置は、メモリ（１３０）を暗号化されたＤＡＲを格納するために前記ホスト・デバイスに提供する暗号化された記憶装置と前記ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを含む、
システム。
【請求項２】
前記転送コマンドが書込みコマンドであり前記暗号化状態が安全な状態であるとき、前記転送コマンドは対応する暗号化された記憶装置のホスト・デバイス・プロキシにルーティングされる、請求項１に記載のシステム。
【請求項３】
対応する暗号化された記憶装置のホスト・デバイス・プロキシは、前記ホスト・コントローラに前記暗号化された記憶装置への読書きアクセスを提供する、請求項１または２に記載のシステム。
【請求項４】
前記転送コマンドが読取り動作を開始し、前記暗号化状態がゼロ化状態であるとき、前記転送コマンドは対応する復元記憶装置のホスト・デバイス・プロキシにルーティングされる、請求項１乃至３の何れか１項に記載のシステム。
【請求項５】
対応する復元記憶装置のホスト・デバイス・プロキシは、前記ホスト・コントローラに前記復元記憶装置への読取り専用アクセスを提供する、請求項１乃至４の何れか１項に記載のシステム。
【請求項６】
ホスト・デバイス（２００、４００）のホスト・コントローラ（２２０、４２０）により格納された保存データ（ＤＡＲ）の透過的なインライン暗号化を提供するための方法（５００、６００、７００）であって、
記憶装置プロキシ（３３０）、暗号化エンジン（３４０）、および複数のホスト・デバイス・プロキシ（３５０Ａ、３５０Ｂ、１００、２４０、４５０、４６０）を備えた暗号化コア（３２０）をインスタンス化するステップであって、前記複数のホスト・デバイス・プロキシの各ホスト・デバイス・プロキシは前記ホスト・コントローラを複数の永続記憶装置のうち１つの永続記憶装置に前記憶装置プロキシを介してインタフェースし（１１０）、前記憶装置プロキシは前記複数の永続記憶装置を単一の永続記憶装置として前記ホスト・コントローラに公開する、ステップと、
書込み動作を開始するための書込みコマンドを前記憶装置プロキシにある前記ホスト・コントローラから受信するステップと、
前記暗号化エンジンの暗号化状態を決定するステップと、
前記暗号化状態に基づいて前記書込みコマンドを処理するステップと（２１０、４１０）、
を含み、
前記複数の永続記憶装置は、メモリ（１３０）を暗号化されたＤＡＲを格納するために前記ホスト・デバイスに提供する暗号化された記憶装置と前記ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを含む、
方法。
【請求項７】
前記書込みコマンドを処理するステップは、前記暗号化状態が安全な状態であるとき、対応するホスト・デバイス・プロキシを介して前記書込みコマンドを前記暗号化された記憶装置にルーティングするステップを含む、請求項６に記載の方法。
【請求項８】
前記暗号化エンジンの前記暗号化状態は、前記ホスト・デバイス外部のセキュリティ・アーキテクチャ（３６０）により設定された１つまたは複数の暗号化整合性パラメータに基づいて決定される、請求項６または７に記載の方法。
【請求項９】
前記書込みコマンドを処理するステップは、前記暗号化状態がゼロ化状態であるとき前記憶装置プロキシに関連付けられたファイルシステムが読取り専用であることを、前記憶装置プロキシを介して前記ホスト・コントローラに知らせるステップを含む、請求項６乃至８の何れか１項に記載の方法。
【請求項１０】
前記暗号化エンジンは暗号化鍵を前記ホスト・デバイス外部のソースから受信する、請求項６乃至９の何れか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、しかし排他的にではなく、統合された永続記憶媒体を有するシステムおよびコンピューティング・デバイスに関し、より具体的には、透過的な、インラインの暗号化技術を、統合された永続記憶に格納された保存データ（ＤＡＲ）に提供するためのシステムに関する。
【背景技術】
【０００２】
組込み型マルチメディア・カード（ｅＭＭＣ）記憶装置のような統合された記憶媒体は一般に、データを格納するための統合された永続メモリをコンピューティング・デバイスに提供するために使用される。当該コンピューティング・デバイスはしばしばかかる統合された記憶媒体を使用して保存データ（ＤＡＲ）を格納する。ＤＡＲは一般にコンピューティング・デバイスのホストプロセッサにより処理されていないかまたは当該コンピューティング・デバイスのシステムメモリに常駐していないデータを指す。ＤＡＲを暗号化することに対する既存のアプローチは一般に帯域外暗号化技術である。例えば、ＤＡＲの暗号化に対する既存のアプローチを、コンピューティング・デバイスのホストプロセッサにより利用される別々のサービスとして実装してもよい。
【０００３】
かかる既存の帯域外暗号化技術は、コンピューティング・デバイスの性能を劣化させうる。例えば、他の作業を実施するためのホストプロセッサの可用性が、ＤＡＲを暗号化するために別のサービスを利用している間に低下する可能性があり、それにより当該コンピューティング・デバイスのスループットおよび／またはレイテンシ性能が劣化する。また、当該ホストプロセッサおよび当該別のサービスを接続する通信経路が損なわれる可能性があり、それにより当該暗号化技術の有効性が低下する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、統合された記憶媒体に格納されたＤＡＲを暗号化するための改良された方法およびシステムのニーズが存在する。
【課題を解決するための手段】
【０００５】
本要約は、詳細な説明において以下でさらに説明される概念の選択を簡潔な形で導入するために提供される。本要約は、クレーム発明の主要な特徴または本質的な特徴を特定しようとするものではなく、クレーム発明の範囲を限定するために使用されるものでもない。
【０００６】
本発明は、上述のように既存の暗号化技術によりホスト・デバイスの性能を劣化させることなく保存データ（ＤＡＲ）を安全に格納するためのハードウェア・ベースの、インラインの暗号化技術を開示する。例えば、帯域外暗号化技術と異なり、当該ハードウェア・ベースの暗号化エンジンの技術的効果はホスト・デバイスにインラインのＤＡＲ暗号化を透過的に提供し、それにより当該ホストプロセッサが他の作業を実施することから解放することである。当該ホストプロセッサを他の作業を実施することから解放することにより、当該ハードウェア・ベースの暗号化エンジンは当該ホスト・デバイスのスループットおよび／またはレイテンシ性能を改善する。
【０００７】
本発明の態様によれば、ホスト・デバイスのホスト・コントローラにより格納されたＤＡＲの透過的なインラインの暗号化を提供するためのシステムが提供される。当該システムは、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。当該複数のホストプロキシのうちの各ホストプロキシは、当該ホスト・コントローラを、当該記憶装置プロキシを介して複数の永続記憶装置のうち１つの永続記憶装置にインタフェースする。当該複数の永続記憶装置は、暗号化されたＤＡＲを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える。当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開する。当該システムはまた、データ転送動作を開始するための転送コマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信する。当該システムは、当該転送コマンドにより開始されたデータ転送動作および当該暗号化エンジンの暗号化状態に基づいて当該転送コマンドを処理する。
【０００８】
本発明の別の態様によれば、ホスト・デバイスのホスト・コントローラにより格納された保存データ（ＤＡＲ）の透過的なインライン暗号化を提供するための方法が提供される。当該方法は、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。当該複数のホストプロキシのうちの各ホストプロキシは、当該ホスト・コントローラを、当該記憶装置プロキシを介して複数の永続記憶装置のうち１つの永続記憶装置にインタフェースする。当該複数の永続記憶装置は、暗号化されたＤＡＲを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える。当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開する。当該方法はまた、書込み動作を開始するための書込みコマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信し、当該暗号化エンジンの暗号化状態を決定する。当該書込みコマンドは当該暗号化エンジンの暗号化状態に基づいて処理される。
【０００９】
本発明の別の態様によれば、ホスト・デバイスのホスト・コントローラにより格納された保存データ（ＤＡＲ）の透過的なインライン暗号化を提供するためのシステムが提供される。当該システムは、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。当該複数のホストプロキシのうちの各ホストプロキシは、当該記憶装置プロキシを介して当該ホスト・コントローラを複数の永続記憶装置のうち１つの永続記憶装置にインタフェースする。当該複数の永続記憶装置は、暗号化されたＤＡＲを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える。当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開する。当該システムはまた、読取り動作を開始するための読取りコマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信する。当該システムは、当該暗号化エンジンの暗号化状態に基づいて当該読取りコマンドを処理する。
【００１０】
進歩性あるシステムの追加の態様を以下で説明する。
【００１１】
上述の要約および以下の詳細な説明は添付図面と関連して読んだとき、より良く理解される。本開示を示すために、本開示の様々な態様を示す。しかし、本開示は説明した特定の態様に限定されない。以下の図面が含まれる。
【図面の簡単な説明】
【００１２】
【図１】本発明の諸態様を実装するための組込み型マルチメディア・カードの１例を示す図である。
【図２】本発明の諸態様を実装するための例示的なコンピューティング・デバイスを示す図である。
【図３】本発明の諸態様に従うインラインの暗号化デバイスの例示的な略図である。
【図４】本発明の諸態様に従う例示的なコンピューティング・デバイスを示す図である。
【図５】コンピューティング・デバイスに統合された永続記憶媒体に格納されたデータの透過的なインラインの暗号化を提供するための方法の１実施形態を示す図である。
【図６】コンピューティング・デバイスに統合された永続記憶媒体に格納されたデータの透過的なインラインの暗号化を提供するための方法の別の実施形態を示す図である。
【図７】コンピューティング・デバイスに統合された永続記憶媒体に格納されたデータの透過的なインラインの暗号化を提供するための方法の１実施形態を示す図である。
【図８】本発明の諸実施形態を実装しうる例示的な汎用目的コンピューティングシステムのブロック図である。
【発明を実施するための形態】
【００１３】
本開示では、法的要件を満たすための詳細な構成および動作の点で特定の実施形態を説明する。添付図面にわたって、同一の要素は同様な参照番号を用いて参照される。本明細書で説明する実施形態は例示としてのみ説明され、限定ではない。当業者は、本明細書の教示事項に照らして、本明細書で説明する例示的な実施形態のある範囲の均等物がありうることを認識するであろう。最も注目すべきは、他の実施形態が可能であり、本明細書で説明する実施形態に変形を加えることができ、説明された実施形態を構成する当該コンポーネント、部分、またはステップに均等物がありうることである。明確さおよび簡潔さのため、特定の実施形態のコンポーネントまたはステップの特定の態様は過度の詳細なしに表現される。かかる詳細は、本明細書の教示事項に照らして当業者には明らかであり、かつ／または、かかる詳細は当該実施形態のより適切な態様の理解を曖昧にする。
【００１４】
本明細書で説明する技術の様々な態様は一般に、とりわけ、組込み型永続記憶装置（組込み型記憶）内のホストコンピューティング・デバイス（ホスト・デバイス）により格納された保存データ（ＤＡＲ）の透過的なインライン暗号化を提供するためのシステム、方法、およびコンピュータ可読記憶媒体に関する。本明細書で説明する際、「インラインの暗号化」は、ホスト・デバイスのホスト・コントローラと当該ホスト・デバイス内の組込み型記憶装置の間のデータ経路内のデータの暗号化を指す。本明細書で開示されたインライン暗号化技術は、開示された技術を実装する前のホスト・コントローラと組込み型記憶装置の間の通信が当該開示された技術を実装した後に不変のままであるという点で「透過的」である。
【００１５】
本開示の幾つかの実施形態は、実施可能のために、組込み型マルチメディア・カード（ｅＭＭＣ）を利用してＤＡＲを格納するホスト・デバイスの点で説明される。しかし、本明細書で説明する原理は任意のタイプの組込み型記憶を利用してＤＡＲを格納するホスト・デバイスが関与する他のシナリオにも適用されうることは理解されるべきである。既知の組込み型記憶装置の例は、セキュア・デジタル（ＳＤ）カード、マルチメディア・カード（ＭＭＣ）、マイクロＳＤカード等を含む。
【００１６】
本発明の諸実施形態の概要を簡単に説明したので、本発明の諸態様を実装するためのｅＭＭＣ１００の１例を図１に関して以下で説明する。上述のように、ｅＭＭＣ１００は適切な統合された永続記憶装置の１例であり、本発明の利用または機能の範囲に関して何ら限定を示唆するものではない。ｅＭＭＣ１００が、示したコンポーネントの任意の単一のコンポーネントまたは組合せに関する任意の依存性または要件を有するものとして解釈すべきでもない。
【００１７】
引き続き図１を参照すると、ｅＭＭＣ１００は一般に、組込み型コントローラにより管理されたアドレス可能メモリ空間（デバイスメモリ空間）をホスト・デバイスに提供し、それにより当該ホストプロセッサを低レベルメモリ管理機能から解放する統合型または組込み型のメモリデバイスである。１実施形態では、ｅＭＭＣ１００は、当該ホスト・デバイスのホストファイルシステムと互換であるホスト・デバイスに標準ブロックインタフェースを公開する。当業者は、ｅＭＭＣ１００の多数の機能的および構造的態様が電子デバイス技術合同協議会（ＪＥＤＥＣ）により公開されている様々な標準により支配されることを認識する。例えば、ホスト・コントローラと組込み型コントローラ１２０の間の通信が、２０１２年６月にＪＥＤＥＣにより公開されたｅＭＭＣ電気標準５．０により支配されてもよい。
【００１８】
図１に示すように、ｅＭＭＣ１００はホスト・インタフェース１１０、組込み型コントローラ１２０、および複数のメモリアレイ（本明細書では集合的にメモリ１３０と称する）を備える。１実施形態では、ホスト・インタフェース１１０、組込み型コントローラ１２０、メモリ１３０は単一の半導体ダイにパッケージ化される。ホスト・インタフェース１１０はｅＭＭＣ１００をホスト・デバイスのホスト・コントローラに内部バス構造を介して通信可能に接続する。１実施形態では、ｅＭＭＣ１００、内部バス構造、およびホスト・コントローラはホスト・デバイスのマザー・ボードにそれぞれ物理的に接続される。
【００１９】
ｅＭＭＣ１００内の接続されたホスト・インタフェース１１０は、メモリ１３０により提供されたデバイスメモリ空間を管理する専用コントローラとして動作する組込み型コントローラ１２０である。組込み型コントローラ１２０は、フラッシュ変換層（ＦＴＬ）を実装することによってデバイスメモリ空間を管理する。ＦＴＬにより提供されるメモリ管理機能の例は、ブロックサイズ変換、エラー訂正、ウェア・レべリング等を含む。組込み型コントローラ１２０により実装されたＦＴＬは、論理ブロックアドレス（ＬＢＡ）を用いて論理アドレス空間アドレス可能としてデバイスメモリ空間をホスト・デバイスに公開する標準ブロックインタフェースを提供する。
【００２０】
当該デバイスメモリ空間を論理アドレス空間としてホスト・デバイスに公開することは幾つかの利点をもたらす。まず、データを格納し取り出すためのアドレス可能メモリ空間の一貫したビューが当該ホスト・デバイスに提供される。次に、組込み型コントローラ１２０が、データがデバイスメモリ空間内のどこにに物理的に格納されるかを自由に管理できるようにする。組込み型コントローラ１２０は、データ構造（例えば、ページテーブル）を用いて一貫したアドレス可能メモリ空間を当該ホスト・デバイスに提供する。当該データ構造は、当該ホスト・デバイスが見るデータの論理アドレスとメモリ１３０内のデータの現在の物理的位置を表す物理アドレスとの間の関係をマップする。したがって、当該ホスト・デバイスは、内部実装の全ての態様を隠蔽するエミュレートされたブロック記憶装置のみを見るので、メモリ１３０に格納されたデータがどのように管理されるかについて制御を有しない。
【００２１】
次に図２に戻ると、本発明の諸態様を実装するのに適したコンピューティング・デバイスの例示的な略図が示され、一般にホスト・デバイス２００として参照される。ホスト・デバイス２００を、組込み型記憶装置とデータを交換できる任意のデバイスとして実装することができる。ホスト・デバイス２００を実装するための適切なデバイスの例は、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、ノートパッドコンピュータ、販売端末、ゲームコンソール、娯楽機器等を含む。
【００２２】
示すように、ホスト・デバイス２００はプロセッサ２１０、ホスト・コントローラ２２０、内部バス構造２３０、およびｅＭＭＣ２４０を備える。プロセッサ２１０は、１つまたは複数の実行スレッドを有するコンピュータ可読媒体に格納された命令列（例えば、アプリケーションまたはコンピュータプログラム）を解釈し実行するように構成される。プロセッサ２１０はまた、データ（例えば、ユーザまたは別のコンピューティング・デバイスから）入力データを受信し、その入力データを処理して出力データを生成するように構成される。１実施形態では、プロセッサ２１０は中央演算装置（ＣＰＵ）である。
【００２３】
動作の際、ホスト・コントローラ２２０は、プロセッサ２１０により指示されるようにｅＭＭＣ２４０を有する内部バス構造２３０を介してデータ転送動作を開始する。データ転送動作は、プロセッサ２１０に関連付けられたシステムメモリ空間とｅＭＭＣ２４０により提供されたデバイスメモリ空間の間でデータを転送する。ホスト・デバイス２００において、システムメモリ空間は利用中データ（ＤＩＵ）を格納するために使用され、デバイスメモリ空間はＤＡＲを格納するために使用される。
【００２４】
本明細書で説明する際、「利用中データ」とは、プロセッサ（例えば、プロセッサ２１０）により現在実行されているコンピュータ可読命令および当該コンピュータ可読命令が利用する非永続メモリに格納された任意のデータを指す。例えば、プロセッサ２１０は、デバイスメモリ空間にＤＡＲとしての不揮発性記憶のためにＤＩＵをシステムメモリ空間から転送する書込みデータ転送動作（書込み動作）を開始するようにホスト・コントローラ２２０に指示してもよい。別の例では、プロセッサ２１０は、プロセッサ２１０による実行のためにＤＡＲをデバイスメモリ空間からシステムメモリ空間に転送する読取りデータ転送動作（読取り動作）を開始するようにホスト・コントローラ２２０に指示してもよい。
【００２５】
データ転送命令をプロセッサ２１０から受信すると、ホスト・コントローラ２２０は、ｅＭＭＣ２４０上で動作するデバイス固有のコマンドを生成するように構成される。ホスト・コントローラ２２０により生成された当該デバイス固有のコマンドは、ホスト・デバイス２００により見られるｅＭＭＣ２４０の論理アドレス空間を参照するデータに関連付けられたＬＢＡを含む。１実施形態では、ホスト・コントローラ２３０により生成された当該デバイス固有のコマンドはブロック指向コマンドである。１実施形態では、ホスト・コントローラ２２０とｅＭＭＣ２４０の間の通信は、ＪＥＤＥＣにより公開された様々な標準により支配される。
【００２６】
例えば、ホスト・コントローラ２２０は、ｅＭＭＣ２４０により格納されたＤＡＲを取り出すための読取り動作をｅＭＭＣ２４０で開始するようにホスト・コントローラ２２０に指示する読取り命令をプロセッサ２１０から受信してもよい。応答して、ホスト・コントローラ２２０は、当該要求されたＤＡＲをＬＢＡで取り出すようにｅＭＭＣ２４０内の組込み型コントローラに指示する読取りコマンドを生成してもよい。ホスト・コントローラ２２０は次いで、当該読取りコマンドをｅＭＭＣ２４０に内部バス構造２３０を介して通信する。当該読取りコマンドを受信した際、ｅＭＭＣ２４０内の組込み型コントローラ（例えば、図１の組込み型コントローラ１２０）は、ＬＢＡを論理アドレス空間から物理アドレス空間にマップして、要求されたＤＡＲを特定する。当該組込み型コントローラは次いで、当該要求されたＤＡＲを当該物理アドレス空間位置から取り出し、それを、内部バス構造２３０を介してホスト・コントローラ２２０に返す。
【００２７】
別の例として、ホスト・コントローラ２２０は、ＤＩＵをｅＭＭＣ２４０のデバイスメモリ空間に格納するための書込み動作をｅＭＭＣ２４０で開始するようにホスト・コントローラ２２０に指示する書込み命令をプロセッサ２１０から受信してもよい。応答して、ホスト・コントローラ２２０は、ＤＩＵを特定のＬＢＡで格納するように当該組込み型コントローラに指示する書込みコマンドを生成してもよい。ホスト・コントローラ２２０は次いで、当該書込みコマンドをｅＭＭＣ２４０に内部バス構造２３０を介して通信する。当該書込みコマンドを受信すると、ｅＭＭＣ２４０内の組込み型コントローラは、書込みコマンドに関連付けられたデータをデバイスメモリ空間に格納する。当該組込み型コントローラはまた、そのデータ構造を更新して、当該データが物理的に格納される物理アドレス空間位置を当該書込みコマンド内のＬＢＡと関連付ける。当該データ構造を更新することによって、当該組込み型コントローラは、ホスト・コントローラ２２０がそのＬＢＡを参照する読取りコマンドを発行したとき、当該データを続いて取り出すことができる。当該組込み型コントローラは次いで、当該データが格納されたことを確認する応答をホスト・コントローラ２２０に通信する。
【００２８】
１実施形態では、内部バス構造２３０は、デバイス固有のデータ転送コマンドをホスト・コントローラ２２０からｅＭＭＣ２４０内の組込み型コントローラに転送し、応答を当該組込み型コントローラからホスト・コントローラ２２０に転送するように適合された双方向コマンドチャネルを含む。１実施形態では、内部バス構造２３０は、ホスト・デバイス２００のシステムメモリ空間とｅＭＭＣ２４０のデバイスメモリ空間の間でデータを交換するための複数の双方向データ転送チャネルを含む。
【００２９】
図３は、本発明の諸態様に従うインラインのＤＡＲ暗号化を提供するための暗号化デバイス３００の例示的なブロック図を示す。暗号化デバイス３００がそれぞれ、図５、６、および７の方法５００、６００、および７００の任意の組合せを実装してもよい。当業者は、図３により示した例示的な要素は本発明を説明するための動作フレームワークを提供するように示されていることを理解しうる。したがって、幾つかの実施形において、暗号化デバイスの物理レイアウトが異なる実装方式に応じて異なってもよい。
【００３０】
暗号化デバイス３００は、ホスト・デバイス（例えば、図２のホスト・デバイス２００）のホスト・コントローラにより格納されたＤＡＲの透過的なインラインの暗号化を提供するように構成される。示すように、暗号化デバイス３００は、ホスト・デバイス内でシステムボードに物理的に接続されたハードウェアデバイスを表す組込み型プログラム可能論理デバイス（ＰＬＤ）３１０を含む。例えば、組込み型ＰＬＤ３１０が、当該ホスト・デバイスのプロセッサ、ホスト・コントローラ、および１つまたは複数の統合された記憶装置（例えば、図１のｅＭＭＣ１００）とともにホスト・デバイス内のマザー・ボードに物理的に取り付けられてもよい。別の例では、組込み型ＰＬＤ３１０が、当該ホスト・デバイスのプロセッサ、ホスト・コントローラおよび１つまたは複数の統合された記憶装置を含むマザー・ボードとインタフェースするホスト・デバイス内のドーター・ボードに物理的に接続されてもよい。
【００３１】
組込み型ＰＬＤ３１０は、再構成可能論理回路または論理機能を実現できる任意の既知のハードウェアデバイスを用いて実装することができる。組込み型ＰＬＤ３１０を実装するための適切なハードウェアデバイスの例は、プログラム可能論理アレイ（ＰＬＡ）、プログラム可能アレイ論理（ＰＡＬ）、ＦＰＧＡ、複雑プログラム可能論理デバイス（ＣＰＬＤ）、消去可能プログラム可能論理デバイス（ＥＰＬＤ）、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能論理コントローラ（ＰＬＣ）等を含む。
【００３２】
組込み型ＰＬＤ３１０により実現される再構成可能論理回路または論理機能を、デバイスプログラマを用いて構成／再構成してもよい。当該デバイスプログラマは組込み型ＰＬＤ３１０とインタフェースして、１つまたは複数の知的財産（ＩＰ）コアを組込み型ＰＬＤ３１０の不揮発性メモリに格納する。当業者により知られているように、ＩＰコアが組込み型回路設計で提供する機能は、ライブラリがコンピュータソフトウェアプログラミングで提供する機能と比較可能である。組込み型ＰＬＤ３１０の不揮発性メモリに格納されたＩＰコアは、暗号化コア３２０をインスタンス化する定義された論理回路または特定の機能を実現する。１実施形態では、暗号化コア３２０は、ソフトＩＰコア、ハードＩＰコア、またはその組合せを用いて実装される。
【００３３】
暗号化コア３２０は記憶装置プロキシ３３０、暗号化エンジン３４０、および複数のホスト・デバイス・プロキシ３５０（例えば、復元ホストプロキシ３５０Ａおよび暗号化されたホストプロキシ３５０Ｂ）、およびセキュリティ管理者インタフェース３６０を含む。記憶装置プロキシ３３０は、標準ブロックインタフェースをホスト・デバイスのホスト・コントローラに提供するように構成される。記憶装置プロキシ３３０により提供された標準ブロックインタフェースは、複数の永続記憶装置（例えば、図１のｅＭＭＣ１００）により提供された集約デバイスメモリ空間への抽象参照である。即ち、当該標準ブロックインタフェースは、当該複数の永続記憶装置により提供された集約デバイスメモリ空間を単一の永続記憶装置としての当該ホスト・コントローラに公開する。
【００３４】
記憶装置プロキシ３３０により提供された抽象化は、暗号化デバイス３００が、集約デバイスメモリ空間がどのようにホスト・コントローラに公開されるかを制御できるようにする。例えば、暗号化デバイス３００は、複数の永続記憶装置のサブセットのみを当該ホスト・コントローラに記憶装置プロキシ３３０を介して公開してもよい。また、暗号化デバイス３００は、特定の永続記憶装置のメモリ空間のサブセットのみを当該ホスト・コントローラに記憶装置プロキシ３３０を介して公開してもよい。
【００３５】
記憶装置プロキシ３３０により提供された抽象化はまた、暗号化デバイス３００が、ホスト・コントローラがどのように集約デバイスメモリ空間にアクセスしうるかを制御できるようにする。例えば、暗号化デバイス３００は、記憶装置プロキシ３３０により公開された当該集約メモリデバイス空間への読取り専用アクセスを当該ホスト・コントローラに提供し、それにより読取りデータ転送動作のみを許可してもよい。同様に、暗号化デバイス３００は、記憶装置プロキシ３３０により公開された当該集約メモリデバイス空間への読書きアクセスを当該ホスト・コントローラに提供し、それにより読書きデータ転送動作を許可してもよい。さらに、暗号化デバイス３００は、複数の永続記憶装置のサブセットへの読書きアクセスまたは読取り専用アクセスを当該ホスト・コントローラに提供してもよい。
【００３６】
動作の際、記憶装置プロキシ３３０はさらにデータ転送コマンドを複数のホスト・デバイス・プロキシ３５０のうち１つのホスト・デバイス・プロキシにルーティングするように構成される。１実施形態では、記憶装置プロキシ３３０は、暗号化エンジン３４０の暗号化状態に基づいてデータ転送コマンドをルーティングするように構成される。１実施形態では、暗号化エンジン３４０の暗号化状態は、１つまたは複数の暗号化整合性パラメータに基づいて決定される。１実施形態では、当該１つまたは複数の暗号化整合性パラメータは、セキュリティ管理者インタフェース３６０を介して当該ホスト・デバイス外部のセキュリティ・アーキテクチャ管理者から受信される。１実施形態では、記憶装置プロキシ３３０は当該セキュリティ・アーキテクチャ管理者から受信された構成情報に基づいてデータ転送コマンドをルーティングするように構成される。
【００３７】
暗号化エンジン３４０は暗号化されていない永続記憶装置をサポートするように構成されたヌル暗号化プラグイン３４２および暗号化された記憶装置をサポートするように構成された暗号化プラグイン３４４を含む。ヌル暗号化プラグイン３４２は、記憶装置プロキシ３３０を、暗号化されていない永続記憶装置に関連付けられた１つまたは複数のホスト・デバイス・プロキシ３５０にインタフェースするように構成される。ヌル暗号化プラグイン３４２は、記憶装置プロキシ３３０と当該暗号化されていない永続記憶装置との間で交換されたデータ転送コマンドおよび関連付けられたデータに対する暗号化バイパスを提供する。
【００３８】
暗号化プラグイン３４４は、記憶装置プロキシ３３０を暗号化された永続記憶装置に関連付けられた１つまたは複数のホスト・デバイス・プロキシ３５０にインタフェースするように構成される。データ転送動作の間、データ転送コマンドに関連付けられたデータは、暗号化プラグイン３４４と記憶装置プロキシ３３０の間で伝播されるときの平文データである。暗号化プラグイン３４４と暗号化された永続記憶装置に関連付けられた１つまたは複数のホスト・デバイス・プロキシ３５０との間で伝播するとき、当該データ転送コマンドに関連付けられたデータは暗号文データである。
【００３９】
暗号化プラグイン３４４は、暗号化／復号化アルゴリズム（暗号化アルゴリズム）を当該転送されたデータに適用することによって、当該データ転送動作の間に平文データを暗号文データに変換し、その逆も行う。１実施形態では、暗号化アルゴリズムが、セキュリティ管理者インタフェース３６０を介してセキュリティ・アーキテクチャ管理者から受信される。適切な暗号化アルゴリズムの例は、高度暗号化標準（ＡＥＳ）、ブローフィッシュ、ＲＳＡ等を含む。１実施形態では、当該暗号化アルゴリズムで使用される鍵が、セキュリティ管理者インタフェース３６０を介して当該セキュリティ・アーキテクチャ管理者から受信される。
【００４０】
暗号化プラグイン３４４はさらに、ゼロ化コマンドの受信に応答して１つまたは複数のアクションを実装するように構成される。例えば、ゼロ化コマンドを受信した際、暗号化プラグイン３４４は暗号化アルゴリズムを使用不能としてもよい。別の例として、暗号化プラグイン３４４は、暗号化された永続記憶装置に関連付けられたホスト・デバイス・プロキシにコマンドを発行してもよい。当該コマンドに応答して、当該暗号化された永続記憶装置のデバイス・コントローラは、当該デバイスメモリ空間に格納されたデータの少なくとも一部を使用不能にする。また、暗号化プラグイン３４４は、ゼロ化コマンドを受信したことに応答して、暗号化コア３２０に関連付けられた１つまたは複数のＩＰコアを使用不能にしてもよい。１実施形態では、当該ホスト・デバイスに関連付けられたネットワークインタフェースを介して、ゼロ化コマンドが当該セキュリティ・アーキテクチャ管理者から受信される。１実施形態では、１つまたは複数の暗号化整合性パラメータが違反されていると判定したことに応答して、当該ホスト・デバイスのプロセッサ上で実行されているプロセスによりゼロ化コマンドが発行される。
【００４１】
図４では、本発明の諸態様に従うコンピューティング・デバイスの例示的な略図が示され、一般的にホスト・デバイス４００として参照される。図４に示した例では、ホスト・デバイス４００はプロセッサ４１０、ホスト・コントローラ４２０、および内部バス構造４３０を含み、これらがそれぞれ実質的に図２のプロセッサ２１０、ホスト・コントローラ２２０、および内部バス構造２３０と同様であってもよい。ホスト・デバイス２００と異なり、ホスト・デバイス４００はさらに標準ブロックインタフェースをホスト・コントローラ４２０に提供する暗号化デバイス４４０を備える。上述のように、当該標準ブロックインタフェースは、暗号化されたｅＭＭＣ４５０および復元ｅＭＭＣ４６０により提供された集約デバイスメモリ空間とどのようにホスト・コントローラ４２０が相互作用するかを暗号化デバイス４４０が制御できるようにする抽象化の層を提供する。
【００４２】
例えば、暗号化デバイス４４０は、ＤＡＲを格納するための不揮発性メモリをホスト・デバイス４００に提供するホスト・コントローラ４２０に、暗号化されたｅＭＭＣ４５０を公開してもよい。本例では、暗号化デバイス４４０はまた、暗号化されたｅＭＭＣ４５０への読書きアクセスをホスト・コントローラ４２０に提供し、それにより読書きデータ転送動作を許可してもよい。別の例として、暗号化デバイス４４０は、システム復元のためのデータを格納する不揮発性メモリをホスト・デバイス４００に提供するホスト・コントローラ４２０に復元ｅＭＭＣ４６０を公開してもよい。本例では、暗号化デバイス４４０はまた、ホスト・コントローラ４２０に復元ｅＭＭＣ４６０への読取り専用アクセスを提供し、それにより読取りデータ転送動作のみを許可してもよい。
【００４３】
図５乃至７は、統合された永続記憶装置に格納されたデータの透過的なインラインの暗号化をホスト・デバイスに提供するための方法の実施形態を示す。図３に関して上述したように、暗号化コア（例えば、図３の暗号化コア３２０）をインスタンス化して、当該ホスト・デバイス内の組込み型ＰＬＤを暗号化デバイスに変換してもよい。当該暗号化コアは記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備える。当該暗号化コアの記憶装置プロキシは、当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開するように構成される。さらに、当該複数のホストプロキシのうちの各ホスト・デバイス・プロキシは、その対応する永続記憶装置を当該ホスト・コントローラに当該記憶装置プロキシを介してインタフェースするように構成される。
【００４４】
諸実施形態において、図５乃至７に示す方法のうち１つまたは複数を、永続記憶装置（例えば、図４の暗号化されたｅＭＭＣ４５０）に格納されるホスト・コントローラ（例えば、図４のホスト・コントローラ４２０）により送信されたデータを暗号化し、当該ホスト・コントローラにより当該永続記憶装置から取り出された格納されたデータを復号化する際に、図３の暗号化デバイス３００により実現してもよい。図５乃至７に関し、図示した動作の全てを実装しないか、または、図示した動作を本明細書で説明したのと異なる順序で実装された本発明の諸実施形態があることは理解されうる。
【００４５】
図５はホスト・デバイスのホスト・コントローラにより格納されたＤＡＲの透過的なインラインの暗号化を提供するための方法５００の１実施形態を示す。ブロック５１０において、システムは、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。ブロック５２０において、当該暗号化コアの記憶装置プロキシはデータ転送動作を開始するための転送コマンドを当該ホスト・デバイスのホスト・コントローラから受信する。１実施形態では、当該転送コマンドは書込み動作を開始するための書込みコマンドである。１実施形態では、当該転送コマンドは、受信された動作を開始するための受信コマンドである。
【００４６】
ブロック５３０において、当該転送コマンドが、当該転送コマンドにより開始されたデータ転送動作および当該暗号化エンジンの暗号化状態に基づいて当該システムにより処理される。１実施形態では、当該転送コマンドが、当該暗号化エンジンの暗号化状態に部分的に基づいて当該システムにより処理される。例えば、当該暗号化エンジンが安全な状態にあるとき、当該システムは、当該ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された全てのデータ整合性パラメータを満たしうる。本例では、当該システムにより暗号化されたＤＡＲおよび当該ＤＡＲを暗号化するために使用される暗号化プリミティブは損なわれていない。
【００４７】
別の例では、当該暗号化エンジンの暗号化状態がゼロ化状態であるとき、当該システムは、ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された全てのデータ整合性パラメータを満たすことに失敗しうる。本例では、当該システムにより暗号化されたＤＡＲおよび当該ＤＡＲを暗号化するために使用される暗号化プリミティブは損なわれているかもしれない。
【００４８】
１実施形態では、転送コマンドが、当該転送コマンドにより開始されたデータ転送動作に部分的に基づいて当該システムにより処理される。例えば、当該システムが、永続記憶装置（例えば、暗号化された記憶装置）を、ホスト・コントローラに書込みおよび／または読書きアクセスを提供する記憶装置プロキシを介して当該ホスト・コントローラに公開してもよい。本例では、当該システムは、当該永続記憶装置が当該ホスト・デバイスの代わりに書込み動作を実装するのを許可する。したがって、当該システムは、当該永続記憶装置の対応するホスト・デバイス・プロキシへの書込み動作を開始する転送コマンドをルーティングしてもよい。
【００４９】
別の例では、当該システムが、ホスト・コントローラに読取り専用アクセスを提供する記憶装置プロキシを介して当該ホスト・コントローラに永続記憶装置（例えば、復元記憶装置）を公開してもよい。本例では、当該システムは、当該永続記憶装置がホスト・デバイスの代わりに書込み動作を実装することを許可しない。したがって、書込み動作を開始した転送コマンドに応答して、当該システムは、記憶装置プロキシに関連付けられたファイルシステムが読取り専用であることを当該ホスト・コントローラに当該記憶装置プロキシを介して知らせてもよい。しかし、読取り動作を開始した転送コマンドに応答して、当該システムは、当該永続記憶装置の対応するホスト・デバイス・プロキシに当該転送コマンドをルーティングしてもよい。
【００５０】
図６はホスト・デバイスのホスト・コントローラにより格納されたＤＡＲの透過的なインラインの暗号化を提供するための方法６００の１実施形態を示す。ブロック６０５において、システムは、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。ブロック６１５において、当該暗号化コアの記憶装置プロキシは、書込み動作を開始するための書込みコマンドを当該ホスト・デバイスのホスト・コントローラから受信する。
【００５１】
ブロック６２５において、当該システムが当該暗号化エンジンの暗号化状態を決定する。１実施形態では、当該システムは、ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された１つまたは複数の暗号化整合性パラメータに基づいて当該暗号化エンジンの暗号化状態を決定する。１実施形態では、当該セキュリティ・アーキテクチャは当該１つまたは複数の暗号化整合性パラメータを、当該ホスト・デバイスのネットワークインタフェースを介してリアルタイムに更新する。
【００５２】
当該システムがブロック６２５で当該暗号化状態がゼロ化状態であると判定した場合、方法６００はブロック６３５に進む。ブロック６３５において、当該システムは、記憶装置プロキシに関連付けられたファイルシステムが読取り専用であると当該ホスト・コントローラに当該記憶装置プロキシを介して知らせる。
【００５３】
当該システムがブロック６２５で当該暗号化状態が安全な状態であると判定した場合、方法６００はブロック６４５に進む。ブロック６４５において、当該記憶装置プロキシは書込みコマンドに関連付けられた平文データを受信する。１実施形態では、当該平文データが、当該システムによりホスト・コントローラに発行された応答メッセージに続いて当該ホスト・コントローラから受信される。１実施形態では、当該平文データが、暗号化記憶装置により発行された応答メッセージに続いて当該ホスト・コントローラから受信される。ブロック６５５において、当該平文データが、暗号文データを生成するために暗号化エンジンで暗号化される。ブロック６６５において、当該システムは、当該暗号文データを、対応するホスト・デバイス・プロキシを介して、暗号化された永続記憶装置にルーティングして、当該書込みコマンドに従って格納する。
【００５４】
ブロック６７５において、当該システムは、当該暗号化状態が安全な状態からゼロ化状態に遷移したと判定する。ブロック６８５において、記憶装置プロキシは、第２の書込み動作を開始するための第２の書込みコマンドをホスト・デバイスのホスト・コントローラから受信する。ブロック６９５において、当該システムは、当該記憶装置プロキシを介して、当該記憶装置プロキシに関連付けられたファイルシステムが読取り専用であると当該ホスト・コントローラに知らせる。
【００５５】
図７は、統合された永続記憶媒体に格納されたデータの透過的なインラインの暗号化をコンピューティング・デバイスに提供するための方法７００の１実施形態を示す。ブロック７１０において、システムは、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。ブロック７２０において、当該暗号化コアの記憶装置プロキシは、読取り動作を開始するための読取りコマンドを当該ホスト・デバイスのホスト・コントローラから受信する。
【００５６】
ブロック７３０において、当該システムは、当該暗号化エンジンの暗号化状態を決定する。１実施形態では、当該システムは、ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された１つまたは複数の暗号化整合性パラメータに基づいて当該暗号化エンジンの暗号化状態を決定する。１実施形態では、当該セキュリティ・アーキテクチャは当該１つまたは複数の暗号化整合性パラメータを、当該ホスト・デバイスのネットワークインタフェースを介してリアルタイムに更新する。
【００５７】
当該システムがブロック７３０で当該暗号化状態がゼロ化状態であると判定した場合、方法７００はブロック７４０に進む。ブロック７４０において、当該システムは、当該読取りコマンドに関連付けられた平文データを復元記憶装置に対応するホスト・デバイス・プロキシから受信する。ブロック７５０において、当該平文データは記憶装置プロキシを介してホスト・コントローラにルーティングされる。
【００５８】
当該システムがブロック７３０で当該暗号化状態が安全な状態であると判定した場合、方法７００はブロック７６０に進む。ブロック７６０において、当該システムは、読取りコマンドに関連付けられた暗号文データを暗号化された記憶装置に対応するホスト・デバイス・プロキシから受信する。ブロック７７０において、当該暗号文データを暗号化エンジンで復号化して、当該暗号文データで符号化された平文データを復元する。ブロック７８０において、当該システムは当該平文データを当該ホスト・コントローラに記憶装置プロキシを介してルーティングする。
【００５９】
図８は、本発明の諸実施形態を実装しうる例示的な汎用目的コンピューティングシステム８００のブロック図である。示したように、コンピューティングシステム８００は、以下のコンポーネント、即ち、メモリ８２０、１つまたは複数のプロセッサ８３０、Ｉ／Ｏインタフェース８４０、およびネットワークインタフェース８５０を直接または間接接続するバス８１０を備える。バス８１０は、コンピューティングシステム８００の当該様々なコンポーネントの間でデータ、コントロール、およびコマンドを通信、送信、および転送するように構成される。当業者は、バス８１０は、コンピューティングシステム８００の当該様々なコンポーネントを相互接続する１つまたは複数のシステムバスのネットワークを表すことを認識するであろう。当該１つまたは複数のシステムバスが、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャの何れかを用いたローカルバスを含むバス構造の幾つかのタイプの何れかであってもよい。
【００６０】
メモリ８２０は、プロセッサ８３０が本明細書で説明する機能を実施できるようにプロセッサ８３０により実行可能である様々なコンピュータ可読媒体データおよび／または命令を含む（即ち、プロセッサ８３０が当該命令によりプログラムされてもよい）。一般に、コンピュータ可読媒体は、コンピューティングシステム８００によりアクセス可能であり揮発性および不揮発性媒体、取外し可能および取外し不能媒体の両方を含む任意の利用可能な媒体でありうる。コンピュータ可読媒体はまた、コンピュータ記憶媒体および通信媒体の両方を含んでもよい。コンピュータ記憶媒体は信号自体を含まず、実際に信号自体を明示的に排除する。
【００６１】
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータのような情報を記憶するための任意の方法または技術で実装された揮発性および不揮発性、取外し可能および取外し不能、有形および非一時的媒体を含む。コンピュータ記憶媒体はＲＡＭ、ＲＯＭ、ＥＥ−ＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤまたは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶装置、または所望の情報を格納するために使用できコンピューティングシステム８００によりアクセスできる他の媒体またはコンピュータ記憶装置を含む。
【００６２】
通信媒体は一般にコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを搬送波または他の伝送機構のような変調されたデータ信号で具現化し、任意の情報配送媒体を含む。「変調されたデータ信号」という用語は、その特性集合のうち１つまたは複数を有するかまたは当該信号内で情報を符号化するように変化する信号を意味する。例として、通信媒体は有線ネットワークまたは直接接続のような有線媒体、および音響、ＲＦ、赤外線および他の無線媒体のような無線媒体を含む。上の任意の組合せはまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００６３】
コンピューティングシステム８００はまた、メモリ８２０に格納された当該データおよび／または命令を実行する論理プロセッサに公開するプロセッサ８３０（例えば、実行コア）を備える。１つのプロセッサ８３０が図８により示した例で示されるが、当業者は、コンピューティングシステム８００が、それぞれコンピュータ可読命令を受信しそれに応じてそれらを処理する複数のプロセッサ（例えば、プロセッサ基盤ごとの複数の実行コアおよび／またはそれぞれ複数の実行コアを有する複数のプロセッサ基盤）を有してもよいことを認識するであろう。
【００６４】
Ｉ／Ｏインタフェース８４０は、コンピューティングシステム８００がディスプレイ、キーボード、マウス等のような様々な周辺機器と通信できるようにする。Ｉ／Ｏインタフェース８４０は、メモリ８２０、１つまたは複数のプロセッサ８３０、ネットワークインタフェース８５０、および任意の周辺機器の間のＩ／Ｏトラフィックを調整するように構成される。ネットワークインタフェース８５０は、コンピューティングシステム８００がデータを他のコンピューティング・デバイスと任意の適切なネットワークを介して交換できるようにする。
【００６５】
プロセッサ８３０は、１つまたは複数のシステムおよびマイクロコントローラ、マイクロプロセッサ、縮小命令セット回路（ＲＩＳＣ）、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能論理回路（ＰＬＣ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、および本明細書で説明する機能を実行できる任意の他の回路を含む任意の適切なプログラム可能回路を備える。上述の例示的な例は、「プロセッサ」という用語の定義および／または意味を決して限定しようとするものではない。
【００６６】
さらに、本開示は以下の項に従う実施形態を含む。
【００６７】
項１：ホスト・デバイスのホスト・コントローラにより格納された保存データ（ＤＡＲ）の透過的なインライン暗号化を提供するためのシステムであって、プロセッサと、当該プロセッサにより実行されたとき当該システムに、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化し、データ転送動作を開始するための転送コマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信し、当該転送コマンドにより開始されたデータ転送動作および当該暗号化エンジンの暗号化状態に基づいて当該転送コマンドを処理することを行わせる実行されるべき第１の組の命令を含むコンピューティング・デバイスとを備え、当該複数のホスト・デバイス・プロキシのうちの各ホスト・デバイス・プロキシは当該ホスト・コントローラを複数の永続記憶装置のうち１つの永続記憶装置に当該記憶装置プロキシを介してインタフェースし、当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開し、当該複数の永続記憶装置は、暗号化されたＤＡＲを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える、システム。
【００６８】
項２：当該転送コマンドが書込みコマンドであり当該暗号化状態が安全な状態であるとき、当該転送コマンドは対応する暗号化された記憶装置のホスト・デバイス・プロキシにルーティングされる、項１に記載のシステム。
【００６９】
項３：対応する暗号化された記憶装置のホスト・デバイス・プロキシは、当該ホスト・コントローラに当該暗号化された記憶装置への読書きアクセスを提供する、項１に記載のシステム。
【００７０】
項４：当該コンピューティング・デバイスはさらに、当該プロセッサにより実行されたとき当該システムに、当該暗号化エンジンを有する当該記憶装置プロキシを介して当該ホスト・コントローラから受信された平文データを暗号化して、暗号文データを生成させる、実施されるべき第２の組の命令を含む、項２に記載のシステム。
【００７１】
項５：当該転送コマンドが読取り動作を開始し、当該暗号化状態がゼロ化状態であるとき、当該転送コマンドは対応する復元記憶装置のホスト・デバイス・プロキシにルーティングされる、項１に記載のシステム。
【００７２】
項６：対応する復元記憶装置のホスト・デバイス・プロキシは、当該ホスト・コントローラに当該復元記憶装置への読取り専用アクセスを提供する、項１に記載のシステム。
【００７３】
項７：ホスト・デバイスのホスト・コントローラにより格納された保存データ（ＤＡＲ）の透過的なインライン暗号化を提供するための方法であって、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化するステップであって、当該複数のホスト・デバイス・プロキシのうちの各ホスト・デバイス・プロキシは当該ホスト・コントローラを複数の永続記憶装置のうち１つの永続記憶装置に当該記憶装置プロキシを介してインタフェースし、当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開する、ステップと、書込み動作を開始するための書込みコマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信するステップと、当該暗号化エンジンの暗号化状態を決定するステップと、当該暗号化状態に基づいて当該書込みコマンドを処理するステップであって、当該複数の永続記憶装置は、暗号化されたＤＡＲを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える、ステップとを含む、方法。
【００７４】
項８：当該書込みコマンドを処理するステップは、当該暗号化状態が安全な状態であるとき当該対応するホスト・デバイス・プロキシを介して当該書込みコマンドを当該暗号化された記憶装置にルーティングするステップを含む、項７に記載の方法。
【００７５】
項９：当該書込みコマンドに関連付けられた平文データを当該記憶装置プロキシで受信するステップと、当該平文データを当該暗号化エンジンで暗号化して暗号文データを生成するステップと、当該暗号文データを当該暗号化された記憶装置に当該対応するホスト・デバイス・プロキシを介してルーティングして当該書込みコマンドに従って格納するステップとをさらに含む、項８に記載の方法。
【００７６】
項１０：当該安全な状態からゼロ化状態に遷移した当該暗号化状態を決定するステップと、当該ゼロ化状態に遷移した当該暗号化状態を決定した後、第２の書込み動作を開始するための第２の書込みコマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信するステップと、当該第２の書込みコマンドに応答して、当該記憶装置プロキシに関連付けられたファイルシステムは読取り専用であることを当該ホスト・コントローラに当該記憶装置プロキシを介して知らせるステップとをさらに含む、項８に記載の方法。
【００７７】
項１１：当該暗号化エンジンの暗号化状態は当該ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された１つまたは複数の暗号化整合性パラメータに基づいて決定される、項７に記載の方法。
【００７８】
項１２：ゼロ化コマンドを当該暗号化エンジンで受信するステップと、当該ゼロ化コマンドを受信したことに応答して、当該暗号化エンジンに関連付けられた暗号化アルゴリズムを使用不能にし、当該暗号化された記憶装置のメモリに格納されたデータの少なくとも一部を使用不能にするように当該暗号化された記憶装置の組込み型コントローラに指示するステップとをさらに含む、項７に記載の方法。
【００７９】
項１３：当該ゼロ化コマンドは当該ホスト・デバイス外部のコンピューティング・デバイスにより開始される、項１２に記載の方法。
【００８０】
項１４：当該書込みコマンドを処理するステップは当該暗号化状態がゼロ化状態であるとき当該記憶装置プロキシに関連付けられたファイルシステムは読取り専用であることを、当該記憶装置プロキシを介して当該ホスト・コントローラに知らせるステップを含む、項７に記載の方法。
【００８１】
項１５：当該暗号化エンジンは暗号化鍵を当該ホスト・デバイス外部のソースから受信する、項７に記載の方法。
【００８２】
項１６：ホスト・デバイスのホスト・コントローラにより格納された保存データ（ＤＡＲ）の透過的なインライン暗号化を提供するためのシステムであって、プロセッサと、当該プロセッサにより実行されたとき当該システムに少なくとも、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化し、読取り動作を開始するための読取りコマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信し、当該暗号化エンジンの暗号化状態を決定し、当該暗号化状態に基づいて当該読取りコマンドを処理させる、実行されるべき第１の組の命令を含むコンピューティング・デバイスとを備え、当該複数のホスト・デバイス・プロキシのうちの各ホスト・デバイス・プロキシは当該ホスト・コントローラを複数の永続記憶装置のうち１つの永続記憶装置に当該記憶装置プロキシを介してインタフェースし、当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開し、当該複数の永続記憶装置は、暗号化されたＤＡＲを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える、システム。
【００８３】
項１７：当該コンピューティング・デバイスはさらに当該プロセッサにより実行されたとき当該システムに、当該暗号化状態が安全な状態であるとき、当該読取りコマンドを当該暗号化された記憶装置に当該対応するホスト・デバイス・プロキシを介してルーティングし、当該読取りコマンドに応答して、当該読取りコマンドに関連付けられた暗号文データを当該暗号化された記憶装置から受信させる、実施されるべき第２の組の命令を含む、項１６に記載のシステム。
【００８４】
項１８：当該コンピューティング・デバイスはさらに、当該プロセッサにより実行されたとき当該システムに、当該暗号文データを当該暗号化エンジンで復号化して当該暗号文データ内で暗号化された平文データを復元し、当該平文データを当該ホスト・デバイスに当該記憶装置プロキシを介してルーティングさせる、実施されるべき第３の組の命令を含む、項１７に記載のシステム。
【００８５】
項１９：当該コンピューティング・デバイスはさらに当該プロセッサにより実行されたとき当該システムに、当該暗号化状態がゼロ化状態であるとき、当該読取りコマンドを当該復元記憶装置に当該対応するホスト・デバイス・プロキシを介してルーティングし、当該読取りコマンドに応答して、当該読取りコマンドに関連付けられた暗号化されていない復元データを当該復元記憶装置から受信させる、実施されるべき第２の組の命令を含む、項１６に記載のシステム。
【００８６】
項２０：当該複数の永続記憶装置のうち少なくとも１つの永続記憶装置は組込み型マルチメディア・カードである、項１９に記載のシステム。
【００８７】
様々な項目がメモリに格納されるかまたは使用中に記憶部に格納されているとして示されているが、これらの項目またはそれらの一部がメモリおよび他の記憶装置の間で転送されてもよいことは理解される。代替的に、他の実施形態では、当該ソフトウェアモジュールおよび／またはシステムの一部または全部を、別のデバイス上のメモリ内で実行してもよく、コンピュータ間通信を介して、示したコンピューティングシステムと通信してもよい。幾つかの実施形態では、当該システムおよび／またはモジュールの一部または全部を他の方式、例えば、少なくとも部分的にファームウェアおよび／またはハードウェアで実装または提供してもよい。当該ハードウェアは、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、（例えば、適切な命令を実行することによって、および、マイクロコントローラおよび／または組込み型コントローラを含めることによって）標準統合された回路、コントローラ、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、複雑プログラム可能論理デバイス（ＣＰＬＤ）等を含むがこれらに限られない。当該モジュール、システムおよびデータ構造の一部または全部をまた、（例えば、ソフトウェア命令または構造化データとして）適切なドライブによりまたは適切な接続を介して読み取られるハードディスク、メモリ、ネットワークまたはポータブル媒体製品のようなコンピュータ可読媒体に格納してもよい。当該システム、モジュールおよびデータ構造をまた、様々なコンピュータ可読送信媒体上で、（例えば、搬送波の一部または他のアナログまたはデジタル伝送信号として）生成されたデータ信号として送信してもよい。当該媒体には、無線ベースのおよび有線／ケーブルベースの媒体が含まれ、（例えば、単一アナログ信号または多重化アナログ信号の一部として、または複数の離散デジタルパケットまたはフレームとして）様々な形態をとってもよい。かかるコンピュータプログラム製品はまた他の実施形態では他の形態を取ってもよい。したがって、本発明を他のコンピュータシステム構成で実施してもよい。
【００８８】
幾つかの実施形において上述のルーチンにより提供された機能を代替的な方式、例えばより多くのルーチンの間で分割して提供してもよく、または、より少数のルーチンに統合してもよいことは理解される。同様に、幾つかの実施形において、示したルーチンが、例えば他の示したルーチンがそれぞれかかる機能を欠くかまたはそれを含むとき、または提供された機能の数が変更されたとき、説明されたより多くのまたは少ない機能を提供してもよい。さらに、様々な動作が特定の方式（例えば、逐次的にまたは並列に）および／または特定の順序で実施されているとして図示されていることもあるが、他の実施形態では当該動作を他の順序および他の方式で実施してもよい。同様に、上述のデータ構造が、他の実施形態では異なる方式で、例えば、単一のデータ構造を複数のデータ構造に分割することによってまたは複数のデータ構造を単一のデータ構造に統合することによって、構造化されてもよく、（例えば、例えば他の示したデータ構造がそれぞれかかる機能を欠くかまたはそれを含むとき、または提供された情報の数またはタイプが変更されたとき）説明されたものより多くのまたは少ない情報を格納してもよい。
【００８９】
とりわけ、「ｃａｎ、」「ｃｏｕｌｄ、」「ｍｉｇｈｔ、」「ｍａｙ、」「ｅ．ｇ．」等のような本明細書で使用した条件的言葉は、特に断らない限り、または、使用した文脈内でそれ以外に理解される限り、一般に、特定の例が特定の特徴、要素、および／またはステップを含み他の例がそれらを含まないことを伝えることを意図している。したがって、かかる条件的言葉は一般に、特徴、要素および／またはステップが何らかの方法で１つまたは複数の例に対して要求されること、または、１つまたは複数の例がこれらの特徴、要素および／またはステップが任意の特定の例に含まれるかまたは当該例で実施されるかどうかを判定し、著者の入力とともにまたは当該入力なしに、促すための論理を必ず含むことを示唆しようとするものではない。「ｃｏｍｐｒｉｓｉｎｇ、」「ｉｎｃｌｕｄｉｎｇ、」「ｈａｖｉｎｇ、」等の用語は同義語であり、包含的に、制約のない形式で使用され、追加の要素、特徴、動作、動作等を排除しない。また、「または」という用語は、その包括的な意味で（かつ、その排他的意味ではなく）使用され、その結果、例えば要素のリストを接続するために使用されたとき、「または」という用語は当該リスト内の要素の１つ、一部または全部を意味する。本開示の説明および添付の特許請求の範囲で使用する際、「ａ」、「ａｎ」および「ｔｈｅ」という単数形は、特に明示しない限り、複数形も含むことを意図している。「ｃｏｍｐｒｉｓｅｓ」または「ｃｏｍｐｒｉｓｉｎｇ」という用語は、本明細書で使用されるときは、述べた特徴、整数、ステップ、動作、要素、および／またはコンポーネントの存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、および／またはそれらのグループの存在または追加を排除しないことはさらに理解されよう。さらに、「資産」および「コンピューティング・デバイス」という用語は、本明細書で使用されるとき、交互に使用してもよい。
【００９０】
一般に、上述の様々な特徴およびプロセスを互いに独立して使用してもよく、または、異なる方法で結合してもよい。全ての可能な組合せおよび部分組合せが本開示の範囲内にあると意図されている。さらに、特定の方法またはプロセスブロックを幾つかの実装では省略してもよい。本明細書で説明する方法およびプロセスはまた任意の特定の列に限定されず、それらに関連するブロックまたは状態を適切な他の列で実施することができる。例えば、説明されたブロックまたは状態を特に開示された意外の順序で実施してもよく、または複数のブロックまたは状態を単一のブロックまたは状態で結合してもよい。当該例示的なブロックまたは状態を逐次的に、並列に、または幾つかの他の方式で実施してもよい。ブロックまたは状態を、当該開示された例示的な例に追加してもよく、または、そこから削除してもよい。本明細書で説明する当該例示的なシステムおよびコンポーネントを説明されたものと異なって構成してもよい。例えば、要素を、当該開示された例示的な例に追加し、当該開示された例示的な例から削除し、または当該開示された例示的な例と比べて再配置してもよい。
【００９１】
本明細書の教示事項の範囲から逸脱することなく、様々な変更を行ってもよく、均等物でその要素を置き換えてもよいことは当業者により理解されよう。さらに、本明細書の教示事項の範囲から逸脱することなく、多数の修正を行って、本明細書の教示事項を特定の状況に適合させてもよい。したがって、特許請求の範囲は本明細書で開示された特定の実装に限定されないことが意図されている。
【符号の説明】
【００９２】
１１０  ホスト・インタフェース
１２０  デバイス・コントローラ
１３０  メモリ
２００  ホスト・デバイス
２１０  プロセッサ
２２０  ホスト・コントローラ
【図１】
2018042233.tif 000003
【図２】
2018042233.tif 000004
【図３】
2018042233.tif 000005
【図４】
2018042233.tif 000006
【図５】
2018042233.tif 000007
【図６】
2018042233.tif 000008
【図７】
2018042233.tif 000009
【図８】
2018042233.tif 000010
【外国語明細書】
2018042233000001.pdf