(58)【調査した分野】(Int.Cl.,DB名)
ホスト・デバイス(200、400)のホスト・コントローラ(220、420)により格納された保存データ(DAR)の透過的なインライン暗号化を提供するためのシステム(300、440)であって、
プロセッサ(210、410)と、
前記プロセッサにより実行されたとき前記システムに、
記憶装置プロキシ(330)、暗号化エンジン(340)、および複数のホスト・デバイス・プロキシ(350A、350B、100、240、450、460)を備えた暗号化コア(320)をインスタンス化することであって、前記複数のホスト・デバイス・プロキシの各ホスト・デバイス・プロキシは前記ホスト・コントローラを複数の永続記憶装置のうち1つの永続記憶装置に前記記憶装置プロキシを介してインタフェースし(110)、前記記憶装置プロキシは前記複数の永続記憶装置を単一の永続記憶装置として前記ホスト・コントローラに公開する、ことと、
データ転送動作を開始するための転送コマンドを、前記記憶装置プロキシにおいて、前記ホスト・コントローラから受信することと、
前記転送コマンドにより開始された前記データ転送動作と、前記暗号化エンジンの暗号化状態とに基づいて前記転送コマンドを処理することと、
前記暗号化エンジンにおいて、ゼロ化コマンドを受信することと、
前記ゼロ化コマンドを受信したことに応答して、前記暗号化エンジンに関連付けられた暗号化アルゴリズムを使用不能にし、暗号化された記憶装置のメモリに格納されたデータの少なくとも一部を使用不能にするように前記暗号化された記憶装置の組込み型コントローラに指示することと
を行わせる、実行されるべき第1の組の命令を含むコンピューティング・デバイス(310)と、
を備え、
前記複数の永続記憶装置は、暗号化されたDARを格納するために前記ホスト・デバイスに前記メモリ(130)を提供する前記暗号化された記憶装置と前記ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを含み、
前記暗号化エンジンの前記暗号化状態は、前記ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された1つまたは複数の暗号化整合性パラメータに基づいて決定される、
システム。
前記書込みコマンドを処理するステップは、前記暗号化状態が安全な状態であるとき、対応するホスト・デバイス・プロキシを介して前記書込みコマンドを前記暗号化された記憶装置にルーティングするステップを含み、
前記安全な状態は、前記システムが、前記ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された全てのデータ整合性パラメータを満たす状態である、請求項6に記載の方法。
前記暗号化エンジンの前記暗号化状態は、前記ホスト・デバイス外部のセキュリティ・アーキテクチャ(360)により設定された1つまたは複数の暗号化整合性パラメータに基づいて決定される、請求項6または7に記載の方法。
【発明を実施するための形態】
【0013】
本開示では、法的要件を満たすための詳細な構成および動作の点で特定の実施形態を説明する。添付図面にわたって、同一の要素は同様な参照番号を用いて参照される。本明細書で説明する実施形態は例示としてのみ説明され、限定ではない。当業者は、本明細書の教示事項に照らして、本明細書で説明する例示的な実施形態のある範囲の均等物がありうることを認識するであろう。最も注目すべきは、他の実施形態が可能であり、本明細書で説明する実施形態に変形を加えることができ、説明された実施形態を構成する当該コンポーネント、部分、またはステップに均等物がありうることである。明確さおよび簡潔さのため、特定の実施形態のコンポーネントまたはステップの特定の態様は過度の詳細なしに表現される。かかる詳細は、本明細書の教示事項に照らして当業者には明らかであり、かつ/または、かかる詳細は当該実施形態のより適切な態様の理解を曖昧にする。
【0014】
本明細書で説明する技術の様々な態様は一般に、とりわけ、組込み型永続記憶装置(組込み型記憶)内のホストコンピューティング・デバイス(ホスト・デバイス)により格納された保存データ(DAR)の透過的なインライン暗号化を提供するためのシステム、方法、およびコンピュータ可読記憶媒体に関する。本明細書で説明する際、「インラインの暗号化」は、ホスト・デバイスのホスト・コントローラと当該ホスト・デバイス内の組込み型記憶装置の間のデータ経路内のデータの暗号化を指す。本明細書で開示されたインライン暗号化技術は、開示された技術を実装する前のホスト・コントローラと組込み型記憶装置の間の通信が当該開示された技術を実装した後に不変のままであるという点で「透過的」である。
【0015】
本開示の幾つかの実施形態は、実施可能のために、組込み型マルチメディア・カード(eMMC)を利用してDARを格納するホスト・デバイスの点で説明される。しかし、本明細書で説明する原理は任意のタイプの組込み型記憶を利用してDARを格納するホスト・デバイスが関与する他のシナリオにも適用されうることは理解されるべきである。既知の組込み型記憶装置の例は、セキュア・デジタル(SD)カード、マルチメディア・カード(MMC)、マイクロSDカード等を含む。
【0016】
本発明の諸実施形態の概要を簡単に説明したので、本発明の諸態様を実装するためのeMMC100の1例を
図1に関して以下で説明する。上述のように、eMMC100は適切な統合された永続記憶装置の1例であり、本発明の利用または機能の範囲に関して何ら限定を示唆するものではない。eMMC100が、示したコンポーネントの任意の単一のコンポーネントまたは組合せに関する任意の依存性または要件を有するものとして解釈すべきでもない。
【0017】
引き続き
図1を参照すると、eMMC100は一般に、組込み型コントローラにより管理されたアドレス可能メモリ空間(デバイスメモリ空間)をホスト・デバイスに提供し、それにより当該ホストプロセッサを低レベルメモリ管理機能から解放する統合型または組込み型のメモリデバイスである。1実施形態では、eMMC100は、当該ホスト・デバイスのホストファイルシステムと互換であるホスト・デバイスに標準ブロックインタフェースを公開する。当業者は、eMMC100の多数の機能的および構造的態様が電子デバイス技術合同協議会(JEDEC)により公開されている様々な標準により支配されることを認識する。例えば、ホスト・コントローラと組込み型コントローラ120の間の通信が、2012年6月にJEDECにより公開されたeMMC電気標準5.0により支配されてもよい。
【0018】
図1に示すように、eMMC100はホスト・インタフェース110、組込み型コントローラ120、および複数のメモリアレイ(本明細書では集合的にメモリ130と称する)を備える。1実施形態では、ホスト・インタフェース110、組込み型コントローラ120、メモリ130は単一の半導体ダイにパッケージ化される。ホスト・インタフェース110はeMMC100をホスト・デバイスのホスト・コントローラに内部バス構造を介して通信可能に接続する。1実施形態では、eMMC100、内部バス構造、およびホスト・コントローラはホスト・デバイスのマザー・ボードにそれぞれ物理的に接続される。
【0019】
eMMC100内の接続されたホスト・インタフェース110は、メモリ130により提供されたデバイスメモリ空間を管理する専用コントローラとして動作する組込み型コントローラ120である。組込み型コントローラ120は、フラッシュ変換層(FTL)を実装することによってデバイスメモリ空間を管理する。FTLにより提供されるメモリ管理機能の例は、ブロックサイズ変換、エラー訂正、ウェア・レべリング等を含む。組込み型コントローラ120により実装されたFTLは、論理ブロックアドレス(LBA)を用いて論理アドレス空間アドレス可能としてデバイスメモリ空間をホスト・デバイスに公開する標準ブロックインタフェースを提供する。
【0020】
当該デバイスメモリ空間を論理アドレス空間としてホスト・デバイスに公開することは幾つかの利点をもたらす。まず、データを格納し取り出すためのアドレス可能メモリ空間の一貫したビューが当該ホスト・デバイスに提供される。次に、組込み型コントローラ120が、データがデバイスメモリ空間内のどこにに物理的に格納されるかを自由に管理できるようにする。組込み型コントローラ120は、データ構造(例えば、ページテーブル)を用いて一貫したアドレス可能メモリ空間を当該ホスト・デバイスに提供する。当該データ構造は、当該ホスト・デバイスが見るデータの論理アドレスとメモリ130内のデータの現在の物理的位置を表す物理アドレスとの間の関係をマップする。したがって、当該ホスト・デバイスは、内部実装の全ての態様を隠蔽するエミュレートされたブロック記憶装置のみを見るので、メモリ130に格納されたデータがどのように管理されるかについて制御を有しない。
【0021】
次に
図2に戻ると、本発明の諸態様を実装するのに適したコンピューティング・デバイスの例示的な略図が示され、一般にホスト・デバイス200として参照される。ホスト・デバイス200を、組込み型記憶装置とデータを交換できる任意のデバイスとして実装することができる。ホスト・デバイス200を実装するための適切なデバイスの例は、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、ノートパッドコンピュータ、販売端末、ゲームコンソール、娯楽機器等を含む。
【0022】
示すように、ホスト・デバイス200はプロセッサ210、ホスト・コントローラ220、内部バス構造230、およびeMMC240を備える。プロセッサ210は、1つまたは複数の実行スレッドを有するコンピュータ可読媒体に格納された命令列(例えば、アプリケーションまたはコンピュータプログラム)を解釈し実行するように構成される。プロセッサ210はまた、データ(例えば、ユーザまたは別のコンピューティング・デバイスから)入力データを受信し、その入力データを処理して出力データを生成するように構成される。1実施形態では、プロセッサ210は中央演算装置(CPU)である。
【0023】
動作の際、ホスト・コントローラ220は、プロセッサ210により指示されるようにeMMC240を有する内部バス構造230を介してデータ転送動作を開始する。データ転送動作は、プロセッサ210に関連付けられたシステムメモリ空間とeMMC240により提供されたデバイスメモリ空間の間でデータを転送する。ホスト・デバイス200において、システムメモリ空間は利用中データ(DIU)を格納するために使用され、デバイスメモリ空間はDARを格納するために使用される。
【0024】
本明細書で説明する際、「利用中データ」とは、プロセッサ(例えば、プロセッサ210)により現在実行されているコンピュータ可読命令および当該コンピュータ可読命令が利用する非永続メモリに格納された任意のデータを指す。例えば、プロセッサ210は、デバイスメモリ空間にDARとしての不揮発性記憶のためにDIUをシステムメモリ空間から転送する書込みデータ転送動作(書込み動作)を開始するようにホスト・コントローラ220に指示してもよい。別の例では、プロセッサ210は、プロセッサ210による実行のためにDARをデバイスメモリ空間からシステムメモリ空間に転送する読取りデータ転送動作(読取り動作)を開始するようにホスト・コントローラ220に指示してもよい。
【0025】
データ転送命令をプロセッサ210から受信すると、ホスト・コントローラ220は、eMMC240上で動作するデバイス固有のコマンドを生成するように構成される。ホスト・コントローラ220により生成された当該デバイス固有のコマンドは、ホスト・デバイス200により見られるeMMC240の論理アドレス空間を参照するデータに関連付けられたLBAを含む。1実施形態では、ホスト・コントローラ230により生成された当該デバイス固有のコマンドはブロック指向コマンドである。1実施形態では、ホスト・コントローラ220とeMMC240の間の通信は、JEDECにより公開された様々な標準により支配される。
【0026】
例えば、ホスト・コントローラ220は、eMMC240により格納されたDARを取り出すための読取り動作をeMMC240で開始するようにホスト・コントローラ220に指示する読取り命令をプロセッサ210から受信してもよい。応答して、ホスト・コントローラ220は、当該要求されたDARをLBAで取り出すようにeMMC240内の組込み型コントローラに指示する読取りコマンドを生成してもよい。ホスト・コントローラ220は次いで、当該読取りコマンドをeMMC240に内部バス構造230を介して通信する。当該読取りコマンドを受信した際、eMMC240内の組込み型コントローラ(例えば、
図1の組込み型コントローラ120)は、LBAを論理アドレス空間から物理アドレス空間にマップして、要求されたDARを特定する。当該組込み型コントローラは次いで、当該要求されたDARを当該物理アドレス空間位置から取り出し、それを、内部バス構造230を介してホスト・コントローラ220に返す。
【0027】
別の例として、ホスト・コントローラ220は、DIUをeMMC240のデバイスメモリ空間に格納するための書込み動作をeMMC240で開始するようにホスト・コントローラ220に指示する書込み命令をプロセッサ210から受信してもよい。応答して、ホスト・コントローラ220は、DIUを特定のLBAで格納するように当該組込み型コントローラに指示する書込みコマンドを生成してもよい。ホスト・コントローラ220は次いで、当該書込みコマンドをeMMC240に内部バス構造230を介して通信する。当該書込みコマンドを受信すると、eMMC240内の組込み型コントローラは、書込みコマンドに関連付けられたデータをデバイスメモリ空間に格納する。当該組込み型コントローラはまた、そのデータ構造を更新して、当該データが物理的に格納される物理アドレス空間位置を当該書込みコマンド内のLBAと関連付ける。当該データ構造を更新することによって、当該組込み型コントローラは、ホスト・コントローラ220がそのLBAを参照する読取りコマンドを発行したとき、当該データを続いて取り出すことができる。当該組込み型コントローラは次いで、当該データが格納されたことを確認する応答をホスト・コントローラ220に通信する。
【0028】
1実施形態では、内部バス構造230は、デバイス固有のデータ転送コマンドをホスト・コントローラ220からeMMC240内の組込み型コントローラに転送し、応答を当該組込み型コントローラからホスト・コントローラ220に転送するように適合された双方向コマンドチャネルを含む。1実施形態では、内部バス構造230は、ホスト・デバイス200のシステムメモリ空間とeMMC240のデバイスメモリ空間の間でデータを交換するための複数の双方向データ転送チャネルを含む。
【0029】
図3は、本発明の諸態様に従うインラインのDAR暗号化を提供するための暗号化デバイス300の例示的なブロック図を示す。暗号化デバイス300がそれぞれ、
図5、6、および7の方法500、600、および700の任意の組合せを実装してもよい。当業者は、
図3により示した例示的な要素は本発明を説明するための動作フレームワークを提供するように示されていることを理解しうる。したがって、幾つかの実施形において、暗号化デバイスの物理レイアウトが異なる実装方式に応じて異なってもよい。
【0030】
暗号化デバイス300は、ホスト・デバイス(例えば、
図2のホスト・デバイス200)のホスト・コントローラにより格納されたDARの透過的なインラインの暗号化を提供するように構成される。示すように、暗号化デバイス300は、ホスト・デバイス内でシステムボードに物理的に接続されたハードウェアデバイスを表す組込み型プログラム可能論理デバイス(PLD)310を含む。例えば、組込み型PLD310が、当該ホスト・デバイスのプロセッサ、ホスト・コントローラ、および1つまたは複数の統合された記憶装置(例えば、
図1のeMMC100)とともにホスト・デバイス内のマザー・ボードに物理的に取り付けられてもよい。別の例では、組込み型PLD310が、当該ホスト・デバイスのプロセッサ、ホスト・コントローラおよび1つまたは複数の統合された記憶装置を含むマザー・ボードとインタフェースするホスト・デバイス内のドーター・ボードに物理的に接続されてもよい。
【0031】
組込み型PLD310は、再構成可能論理回路または論理機能を実現できる任意の既知のハードウェアデバイスを用いて実装することができる。組込み型PLD310を実装するための適切なハードウェアデバイスの例は、プログラム可能論理アレイ(PLA)、プログラム可能アレイ論理(PAL)、FPGA、複雑プログラム可能論理デバイス(CPLD)、消去可能プログラム可能論理デバイス(EPLD)、特定用途向け集積回路(ASIC)、プログラム可能論理コントローラ(PLC)等を含む。
【0032】
組込み型PLD310により実現される再構成可能論理回路または論理機能を、デバイスプログラマを用いて構成/再構成してもよい。当該デバイスプログラマは組込み型PLD310とインタフェースして、1つまたは複数の知的財産(IP)コアを組込み型PLD310の不揮発性メモリに格納する。当業者により知られているように、IPコアが組込み型回路設計で提供する機能は、ライブラリがコンピュータソフトウェアプログラミングで提供する機能と比較可能である。組込み型PLD310の不揮発性メモリに格納されたIPコアは、暗号化コア320をインスタンス化する定義された論理回路または特定の機能を実現する。1実施形態では、暗号化コア320は、ソフトIPコア、ハードIPコア、またはその組合せを用いて実装される。
【0033】
暗号化コア320は記憶装置プロキシ330、暗号化エンジン340、および複数のホスト・デバイス・プロキシ350(例えば、復元ホストプロキシ350Aおよび暗号化されたホストプロキシ350B)、およびセキュリティ管理者インタフェース360を含む。記憶装置プロキシ330は、標準ブロックインタフェースをホスト・デバイスのホスト・コントローラに提供するように構成される。記憶装置プロキシ330により提供された標準ブロックインタフェースは、複数の永続記憶装置(例えば、
図1のeMMC100)により提供された集約デバイスメモリ空間への抽象参照である。即ち、当該標準ブロックインタフェースは、当該複数の永続記憶装置により提供された集約デバイスメモリ空間を単一の永続記憶装置としての当該ホスト・コントローラに公開する。
【0034】
記憶装置プロキシ330により提供された抽象化は、暗号化デバイス300が、集約デバイスメモリ空間がどのようにホスト・コントローラに公開されるかを制御できるようにする。例えば、暗号化デバイス300は、複数の永続記憶装置のサブセットのみを当該ホスト・コントローラに記憶装置プロキシ330を介して公開してもよい。また、暗号化デバイス300は、特定の永続記憶装置のメモリ空間のサブセットのみを当該ホスト・コントローラに記憶装置プロキシ330を介して公開してもよい。
【0035】
記憶装置プロキシ330により提供された抽象化はまた、暗号化デバイス300が、ホスト・コントローラがどのように集約デバイスメモリ空間にアクセスしうるかを制御できるようにする。例えば、暗号化デバイス300は、記憶装置プロキシ330により公開された当該集約メモリデバイス空間への読取り専用アクセスを当該ホスト・コントローラに提供し、それにより読取りデータ転送動作のみを許可してもよい。同様に、暗号化デバイス300は、記憶装置プロキシ330により公開された当該集約メモリデバイス空間への読書きアクセスを当該ホスト・コントローラに提供し、それにより読書きデータ転送動作を許可してもよい。さらに、暗号化デバイス300は、複数の永続記憶装置のサブセットへの読書きアクセスまたは読取り専用アクセスを当該ホスト・コントローラに提供してもよい。
【0036】
動作の際、記憶装置プロキシ330はさらにデータ転送コマンドを複数のホスト・デバイス・プロキシ350のうち1つのホスト・デバイス・プロキシにルーティングするように構成される。1実施形態では、記憶装置プロキシ330は、暗号化エンジン340の暗号化状態に基づいてデータ転送コマンドをルーティングするように構成される。1実施形態では、暗号化エンジン340の暗号化状態は、1つまたは複数の暗号化整合性パラメータに基づいて決定される。1実施形態では、当該1つまたは複数の暗号化整合性パラメータは、セキュリティ管理者インタフェース360を介して当該ホスト・デバイス外部のセキュリティ・アーキテクチャ管理者から受信される。1実施形態では、記憶装置プロキシ330は当該セキュリティ・アーキテクチャ管理者から受信された構成情報に基づいてデータ転送コマンドをルーティングするように構成される。
【0037】
暗号化エンジン340は暗号化されていない永続記憶装置をサポートするように構成されたヌル暗号化プラグイン342および暗号化された記憶装置をサポートするように構成された暗号化プラグイン344を含む。ヌル暗号化プラグイン342は、記憶装置プロキシ330を、暗号化されていない永続記憶装置に関連付けられた1つまたは複数のホスト・デバイス・プロキシ350にインタフェースするように構成される。ヌル暗号化プラグイン342は、記憶装置プロキシ330と当該暗号化されていない永続記憶装置との間で交換されたデータ転送コマンドおよび関連付けられたデータに対する暗号化バイパスを提供する。
【0038】
暗号化プラグイン344は、記憶装置プロキシ330を暗号化された永続記憶装置に関連付けられた1つまたは複数のホスト・デバイス・プロキシ350にインタフェースするように構成される。データ転送動作の間、データ転送コマンドに関連付けられたデータは、暗号化プラグイン344と記憶装置プロキシ330の間で伝播されるときの平文データである。暗号化プラグイン344と暗号化された永続記憶装置に関連付けられた1つまたは複数のホスト・デバイス・プロキシ350との間で伝播するとき、当該データ転送コマンドに関連付けられたデータは暗号文データである。
【0039】
暗号化プラグイン344は、暗号化/復号化アルゴリズム(暗号化アルゴリズム)を当該転送されたデータに適用することによって、当該データ転送動作の間に平文データを暗号文データに変換し、その逆も行う。1実施形態では、暗号化アルゴリズムが、セキュリティ管理者インタフェース360を介してセキュリティ・アーキテクチャ管理者から受信される。適切な暗号化アルゴリズムの例は、高度暗号化標準(AES)、ブローフィッシュ、RSA等を含む。1実施形態では、当該暗号化アルゴリズムで使用される鍵が、セキュリティ管理者インタフェース360を介して当該セキュリティ・アーキテクチャ管理者から受信される。
【0040】
暗号化プラグイン344はさらに、ゼロ化コマンドの受信に応答して1つまたは複数のアクションを実装するように構成される。例えば、ゼロ化コマンドを受信した際、暗号化プラグイン344は暗号化アルゴリズムを使用不能としてもよい。別の例として、暗号化プラグイン344は、暗号化された永続記憶装置に関連付けられたホスト・デバイス・プロキシにコマンドを発行してもよい。当該コマンドに応答して、当該暗号化された永続記憶装置のデバイス・コントローラは、当該デバイスメモリ空間に格納されたデータの少なくとも一部を使用不能にする。また、暗号化プラグイン344は、ゼロ化コマンドを受信したことに応答して、暗号化コア320に関連付けられた1つまたは複数のIPコアを使用不能にしてもよい。1実施形態では、当該ホスト・デバイスに関連付けられたネットワークインタフェースを介して、ゼロ化コマンドが当該セキュリティ・アーキテクチャ管理者から受信される。1実施形態では、1つまたは複数の暗号化整合性パラメータが違反されていると判定したことに応答して、当該ホスト・デバイスのプロセッサ上で実行されているプロセスによりゼロ化コマンドが発行される。
【0041】
図4では、本発明の諸態様に従うコンピューティング・デバイスの例示的な略図が示され、一般的にホスト・デバイス400として参照される。
図4に示した例では、ホスト・デバイス400はプロセッサ410、ホスト・コントローラ420、および内部バス構造430を含み、これらがそれぞれ実質的に
図2のプロセッサ210、ホスト・コントローラ220、および内部バス構造230と同様であってもよい。ホスト・デバイス200と異なり、ホスト・デバイス400はさらに標準ブロックインタフェースをホスト・コントローラ420に提供する暗号化デバイス440を備える。上述のように、当該標準ブロックインタフェースは、暗号化されたeMMC450および復元eMMC460により提供された集約デバイスメモリ空間とどのようにホスト・コントローラ420が相互作用するかを暗号化デバイス440が制御できるようにする抽象化の層を提供する。
【0042】
例えば、暗号化デバイス440は、DARを格納するための不揮発性メモリをホスト・デバイス400に提供するホスト・コントローラ420に、暗号化されたeMMC450を公開してもよい。本例では、暗号化デバイス440はまた、暗号化されたeMMC450への読書きアクセスをホスト・コントローラ420に提供し、それにより読書きデータ転送動作を許可してもよい。別の例として、暗号化デバイス440は、システム復元のためのデータを格納する不揮発性メモリをホスト・デバイス400に提供するホスト・コントローラ420に復元eMMC460を公開してもよい。本例では、暗号化デバイス440はまた、ホスト・コントローラ420に復元eMMC460への読取り専用アクセスを提供し、それにより読取りデータ転送動作のみを許可してもよい。
【0043】
図5乃至7は、統合された永続記憶装置に格納されたデータの透過的なインラインの暗号化をホスト・デバイスに提供するための方法の実施形態を示す。
図3に関して上述したように、暗号化コア(例えば、
図3の暗号化コア320)をインスタンス化して、当該ホスト・デバイス内の組込み型PLDを暗号化デバイスに変換してもよい。当該暗号化コアは記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備える。当該暗号化コアの記憶装置プロキシは、当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開するように構成される。さらに、当該複数のホストプロキシのうちの各ホスト・デバイス・プロキシは、その対応する永続記憶装置を当該ホスト・コントローラに当該記憶装置プロキシを介してインタフェースするように構成される。
【0044】
諸実施形態において、
図5乃至7に示す方法のうち1つまたは複数を、永続記憶装置(例えば、
図4の暗号化されたeMMC450)に格納されるホスト・コントローラ(例えば、
図4のホスト・コントローラ420)により送信されたデータを暗号化し、当該ホスト・コントローラにより当該永続記憶装置から取り出された格納されたデータを復号化する際に、
図3の暗号化デバイス300により実現してもよい。
図5乃至7に関し、図示した動作の全てを実装しないか、または、図示した動作を本明細書で説明したのと異なる順序で実装された本発明の諸実施形態があることは理解されうる。
【0045】
図5はホスト・デバイスのホスト・コントローラにより格納されたDARの透過的なインラインの暗号化を提供するための方法500の1実施形態を示す。ブロック510において、システムは、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。ブロック520において、当該暗号化コアの記憶装置プロキシはデータ転送動作を開始するための転送コマンドを当該ホスト・デバイスのホスト・コントローラから受信する。1実施形態では、当該転送コマンドは書込み動作を開始するための書込みコマンドである。1実施形態では、当該転送コマンドは、受信された動作を開始するための受信コマンドである。
【0046】
ブロック530において、当該転送コマンドが、当該転送コマンドにより開始されたデータ転送動作および当該暗号化エンジンの暗号化状態に基づいて当該システムにより処理される。1実施形態では、当該転送コマンドが、当該暗号化エンジンの暗号化状態に部分的に基づいて当該システムにより処理される。例えば、当該暗号化エンジンが安全な状態にあるとき、当該システムは、当該ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された全てのデータ整合性パラメータを満たしうる。本例では、当該システムにより暗号化されたDARおよび当該DARを暗号化するために使用される暗号化プリミティブは損なわれていない。
【0047】
別の例では、当該暗号化エンジンの暗号化状態がゼロ化状態であるとき、当該システムは、ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された全てのデータ整合性パラメータを満たすことに失敗しうる。本例では、当該システムにより暗号化されたDARおよび当該DARを暗号化するために使用される暗号化プリミティブは損なわれているかもしれない。
【0048】
1実施形態では、転送コマンドが、当該転送コマンドにより開始されたデータ転送動作に部分的に基づいて当該システムにより処理される。例えば、当該システムが、永続記憶装置(例えば、暗号化された記憶装置)を、ホスト・コントローラに書込みおよび/または読書きアクセスを提供する記憶装置プロキシを介して当該ホスト・コントローラに公開してもよい。本例では、当該システムは、当該永続記憶装置が当該ホスト・デバイスの代わりに書込み動作を実装するのを許可する。したがって、当該システムは、当該永続記憶装置の対応するホスト・デバイス・プロキシへの書込み動作を開始する転送コマンドをルーティングしてもよい。
【0049】
別の例では、当該システムが、ホスト・コントローラに読取り専用アクセスを提供する記憶装置プロキシを介して当該ホスト・コントローラに永続記憶装置(例えば、復元記憶装置)を公開してもよい。本例では、当該システムは、当該永続記憶装置がホスト・デバイスの代わりに書込み動作を実装することを許可しない。したがって、書込み動作を開始した転送コマンドに応答して、当該システムは、記憶装置プロキシに関連付けられたファイルシステムが読取り専用であることを当該ホスト・コントローラに当該記憶装置プロキシを介して知らせてもよい。しかし、読取り動作を開始した転送コマンドに応答して、当該システムは、当該永続記憶装置の対応するホスト・デバイス・プロキシに当該転送コマンドをルーティングしてもよい。
【0050】
図6はホスト・デバイスのホスト・コントローラにより格納されたDARの透過的なインラインの暗号化を提供するための方法600の1実施形態を示す。ブロック605において、システムは、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。ブロック615において、当該暗号化コアの記憶装置プロキシは、書込み動作を開始するための書込みコマンドを当該ホスト・デバイスのホスト・コントローラから受信する。
【0051】
ブロック625において、当該システムが当該暗号化エンジンの暗号化状態を決定する。1実施形態では、当該システムは、ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された1つまたは複数の暗号化整合性パラメータに基づいて当該暗号化エンジンの暗号化状態を決定する。1実施形態では、当該セキュリティ・アーキテクチャは当該1つまたは複数の暗号化整合性パラメータを、当該ホスト・デバイスのネットワークインタフェースを介してリアルタイムに更新する。
【0052】
当該システムがブロック625で当該暗号化状態がゼロ化状態であると判定した場合、方法600はブロック635に進む。ブロック635において、当該システムは、記憶装置プロキシに関連付けられたファイルシステムが読取り専用であると当該ホスト・コントローラに当該記憶装置プロキシを介して知らせる。
【0053】
当該システムがブロック625で当該暗号化状態が安全な状態であると判定した場合、方法600はブロック645に進む。ブロック645において、当該記憶装置プロキシは書込みコマンドに関連付けられた平文データを受信する。1実施形態では、当該平文データが、当該システムによりホスト・コントローラに発行された応答メッセージに続いて当該ホスト・コントローラから受信される。1実施形態では、当該平文データが、暗号化記憶装置により発行された応答メッセージに続いて当該ホスト・コントローラから受信される。ブロック655において、当該平文データが、暗号文データを生成するために暗号化エンジンで暗号化される。ブロック665において、当該システムは、当該暗号文データを、対応するホスト・デバイス・プロキシを介して、暗号化された永続記憶装置にルーティングして、当該書込みコマンドに従って格納する。
【0054】
ブロック675において、当該システムは、当該暗号化状態が安全な状態からゼロ化状態に遷移したと判定する。ブロック685において、記憶装置プロキシは、第2の書込み動作を開始するための第2の書込みコマンドをホスト・デバイスのホスト・コントローラから受信する。ブロック695において、当該システムは、当該記憶装置プロキシを介して、当該記憶装置プロキシに関連付けられたファイルシステムが読取り専用であると当該ホスト・コントローラに知らせる。
【0055】
図7は、統合された永続記憶媒体に格納されたデータの透過的なインラインの暗号化をコンピューティング・デバイスに提供するための方法700の1実施形態を示す。ブロック710において、システムは、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化する。ブロック720において、当該暗号化コアの記憶装置プロキシは、読取り動作を開始するための読取りコマンドを当該ホスト・デバイスのホスト・コントローラから受信する。
【0056】
ブロック730において、当該システムは、当該暗号化エンジンの暗号化状態を決定する。1実施形態では、当該システムは、ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された1つまたは複数の暗号化整合性パラメータに基づいて当該暗号化エンジンの暗号化状態を決定する。1実施形態では、当該セキュリティ・アーキテクチャは当該1つまたは複数の暗号化整合性パラメータを、当該ホスト・デバイスのネットワークインタフェースを介してリアルタイムに更新する。
【0057】
当該システムがブロック730で当該暗号化状態がゼロ化状態であると判定した場合、方法700はブロック740に進む。ブロック740において、当該システムは、当該読取りコマンドに関連付けられた平文データを復元記憶装置に対応するホスト・デバイス・プロキシから受信する。ブロック750において、当該平文データは記憶装置プロキシを介してホスト・コントローラにルーティングされる。
【0058】
当該システムがブロック730で当該暗号化状態が安全な状態であると判定した場合、方法700はブロック760に進む。ブロック760において、当該システムは、読取りコマンドに関連付けられた暗号文データを暗号化された記憶装置に対応するホスト・デバイス・プロキシから受信する。ブロック770において、当該暗号文データを暗号化エンジンで復号化して、当該暗号文データで符号化された平文データを復元する。ブロック780において、当該システムは当該平文データを当該ホスト・コントローラに記憶装置プロキシを介してルーティングする。
【0059】
図8は、本発明の諸実施形態を実装しうる例示的な汎用目的コンピューティングシステム800のブロック図である。示したように、コンピューティングシステム800は、以下のコンポーネント、即ち、メモリ820、1つまたは複数のプロセッサ830、I/Oインタフェース840、およびネットワークインタフェース850を直接または間接接続するバス810を備える。バス810は、コンピューティングシステム800の当該様々なコンポーネントの間でデータ、コントロール、およびコマンドを通信、送信、および転送するように構成される。当業者は、バス810は、コンピューティングシステム800の当該様々なコンポーネントを相互接続する1つまたは複数のシステムバスのネットワークを表すことを認識するであろう。当該1つまたは複数のシステムバスが、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャの何れかを用いたローカルバスを含むバス構造の幾つかのタイプの何れかであってもよい。
【0060】
メモリ820は、プロセッサ830が本明細書で説明する機能を実施できるようにプロセッサ830により実行可能である様々なコンピュータ可読媒体データおよび/または命令を含む(即ち、プロセッサ830が当該命令によりプログラムされてもよい)。一般に、コンピュータ可読媒体は、コンピューティングシステム800によりアクセス可能であり揮発性および不揮発性媒体、取外し可能および取外し不能媒体の両方を含む任意の利用可能な媒体でありうる。コンピュータ可読媒体はまた、コンピュータ記憶媒体および通信媒体の両方を含んでもよい。コンピュータ記憶媒体は信号自体を含まず、実際に信号自体を明示的に排除する。
【0061】
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータのような情報を記憶するための任意の方法または技術で実装された揮発性および不揮発性、取外し可能および取外し不能、有形および非一時的媒体を含む。コンピュータ記憶媒体はRAM、ROM、EE−PROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、DVDまたは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶装置、または所望の情報を格納するために使用できコンピューティングシステム800によりアクセスできる他の媒体またはコンピュータ記憶装置を含む。
【0062】
通信媒体は一般にコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを搬送波または他の伝送機構のような変調されたデータ信号で具現化し、任意の情報配送媒体を含む。「変調されたデータ信号」という用語は、その特性集合のうち1つまたは複数を有するかまたは当該信号内で情報を符号化するように変化する信号を意味する。例として、通信媒体は有線ネットワークまたは直接接続のような有線媒体、および音響、RF、赤外線および他の無線媒体のような無線媒体を含む。上の任意の組合せはまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0063】
コンピューティングシステム800はまた、メモリ820に格納された当該データおよび/または命令を実行する論理プロセッサに公開するプロセッサ830(例えば、実行コア)を備える。1つのプロセッサ830が
図8により示した例で示されるが、当業者は、コンピューティングシステム800が、それぞれコンピュータ可読命令を受信しそれに応じてそれらを処理する複数のプロセッサ(例えば、プロセッサ基盤ごとの複数の実行コアおよび/またはそれぞれ複数の実行コアを有する複数のプロセッサ基盤)を有してもよいことを認識するであろう。
【0064】
I/Oインタフェース840は、コンピューティングシステム800がディスプレイ、キーボード、マウス等のような様々な周辺機器と通信できるようにする。I/Oインタフェース840は、メモリ820、1つまたは複数のプロセッサ830、ネットワークインタフェース850、および任意の周辺機器の間のI/Oトラフィックを調整するように構成される。ネットワークインタフェース850は、コンピューティングシステム800がデータを他のコンピューティング・デバイスと任意の適切なネットワークを介して交換できるようにする。
【0065】
プロセッサ830は、1つまたは複数のシステムおよびマイクロコントローラ、マイクロプロセッサ、縮小命令セット回路(RISC)、特定用途向け集積回路(ASIC)、プログラム可能論理回路(PLC)、フィールドプログラム可能ゲートアレイ(FPGA)、および本明細書で説明する機能を実行できる任意の他の回路を含む任意の適切なプログラム可能回路を備える。上述の例示的な例は、「プロセッサ」という用語の定義および/または意味を決して限定しようとするものではない。
【0066】
さらに、本開示は以下の項に従う実施形態を含む。
【0067】
項1:ホスト・デバイスのホスト・コントローラにより格納された保存データ(DAR)の透過的なインライン暗号化を提供するためのシステムであって、プロセッサと、当該プロセッサにより実行されたとき当該システムに、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化し、データ転送動作を開始するための転送コマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信し、当該転送コマンドにより開始されたデータ転送動作および当該暗号化エンジンの暗号化状態に基づいて当該転送コマンドを処理することを行わせる実行されるべき第1の組の命令を含むコンピューティング・デバイスとを備え、当該複数のホスト・デバイス・プロキシのうちの各ホスト・デバイス・プロキシは当該ホスト・コントローラを複数の永続記憶装置のうち1つの永続記憶装置に当該記憶装置プロキシを介してインタフェースし、当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開し、当該複数の永続記憶装置は、暗号化されたDARを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える、システム。
【0068】
項2:当該転送コマンドが書込みコマンドであり当該暗号化状態が安全な状態であるとき、当該転送コマンドは対応する暗号化された記憶装置のホスト・デバイス・プロキシにルーティングされる、項1に記載のシステム。
【0069】
項3:対応する暗号化された記憶装置のホスト・デバイス・プロキシは、当該ホスト・コントローラに当該暗号化された記憶装置への読書きアクセスを提供する、項1に記載のシステム。
【0070】
項4:当該コンピューティング・デバイスはさらに、当該プロセッサにより実行されたとき当該システムに、当該暗号化エンジンを有する当該記憶装置プロキシを介して当該ホスト・コントローラから受信された平文データを暗号化して、暗号文データを生成させる、実施されるべき第2の組の命令を含む、項2に記載のシステム。
【0071】
項5:当該転送コマンドが読取り動作を開始し、当該暗号化状態がゼロ化状態であるとき、当該転送コマンドは対応する復元記憶装置のホスト・デバイス・プロキシにルーティングされる、項1に記載のシステム。
【0072】
項6:対応する復元記憶装置のホスト・デバイス・プロキシは、当該ホスト・コントローラに当該復元記憶装置への読取り専用アクセスを提供する、項1に記載のシステム。
【0073】
項7:ホスト・デバイスのホスト・コントローラにより格納された保存データ(DAR)の透過的なインライン暗号化を提供するための方法であって、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化するステップであって、当該複数のホスト・デバイス・プロキシのうちの各ホスト・デバイス・プロキシは当該ホスト・コントローラを複数の永続記憶装置のうち1つの永続記憶装置に当該記憶装置プロキシを介してインタフェースし、当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開する、ステップと、書込み動作を開始するための書込みコマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信するステップと、当該暗号化エンジンの暗号化状態を決定するステップと、当該暗号化状態に基づいて当該書込みコマンドを処理するステップであって、当該複数の永続記憶装置は、暗号化されたDARを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える、ステップとを含む、方法。
【0074】
項8:当該書込みコマンドを処理するステップは、当該暗号化状態が安全な状態であるとき当該対応するホスト・デバイス・プロキシを介して当該書込みコマンドを当該暗号化された記憶装置にルーティングするステップを含む、項7に記載の方法。
【0075】
項9:当該書込みコマンドに関連付けられた平文データを当該記憶装置プロキシで受信するステップと、当該平文データを当該暗号化エンジンで暗号化して暗号文データを生成するステップと、当該暗号文データを当該暗号化された記憶装置に当該対応するホスト・デバイス・プロキシを介してルーティングして当該書込みコマンドに従って格納するステップとをさらに含む、項8に記載の方法。
【0076】
項10:当該安全な状態からゼロ化状態に遷移した当該暗号化状態を決定するステップと、当該ゼロ化状態に遷移した当該暗号化状態を決定した後、第2の書込み動作を開始するための第2の書込みコマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信するステップと、当該第2の書込みコマンドに応答して、当該記憶装置プロキシに関連付けられたファイルシステムは読取り専用であることを当該ホスト・コントローラに当該記憶装置プロキシを介して知らせるステップとをさらに含む、項8に記載の方法。
【0077】
項11:当該暗号化エンジンの暗号化状態は当該ホスト・デバイス外部のセキュリティ・アーキテクチャにより設定された1つまたは複数の暗号化整合性パラメータに基づいて決定される、項7に記載の方法。
【0078】
項12:ゼロ化コマンドを当該暗号化エンジンで受信するステップと、当該ゼロ化コマンドを受信したことに応答して、当該暗号化エンジンに関連付けられた暗号化アルゴリズムを使用不能にし、当該暗号化された記憶装置のメモリに格納されたデータの少なくとも一部を使用不能にするように当該暗号化された記憶装置の組込み型コントローラに指示するステップとをさらに含む、項7に記載の方法。
【0079】
項13:当該ゼロ化コマンドは当該ホスト・デバイス外部のコンピューティング・デバイスにより開始される、項12に記載の方法。
【0080】
項14:当該書込みコマンドを処理するステップは当該暗号化状態がゼロ化状態であるとき当該記憶装置プロキシに関連付けられたファイルシステムは読取り専用であることを、当該記憶装置プロキシを介して当該ホスト・コントローラに知らせるステップを含む、項7に記載の方法。
【0081】
項15:当該暗号化エンジンは暗号化鍵を当該ホスト・デバイス外部のソースから受信する、項7に記載の方法。
【0082】
項16:ホスト・デバイスのホスト・コントローラにより格納された保存データ(DAR)の透過的なインライン暗号化を提供するためのシステムであって、プロセッサと、当該プロセッサにより実行されたとき当該システムに少なくとも、記憶装置プロキシ、暗号化エンジン、および複数のホスト・デバイス・プロキシを備えた暗号化コアをインスタンス化し、読取り動作を開始するための読取りコマンドを当該記憶装置プロキシにある当該ホスト・コントローラから受信し、当該暗号化エンジンの暗号化状態を決定し、当該暗号化状態に基づいて当該読取りコマンドを処理させる、実行されるべき第1の組の命令を含むコンピューティング・デバイスとを備え、当該複数のホスト・デバイス・プロキシのうちの各ホスト・デバイス・プロキシは当該ホスト・コントローラを複数の永続記憶装置のうち1つの永続記憶装置に当該記憶装置プロキシを介してインタフェースし、当該記憶装置プロキシは当該複数の永続記憶装置を単一の永続記憶装置としての当該ホスト・コントローラに公開し、当該複数の永続記憶装置は、暗号化されたDARを格納するための当該ホスト・デバイスにメモリを提供する暗号化された記憶装置と当該ホスト・デバイスのシステムリソースを復元するために利用可能な暗号化されていない復元データを格納するメモリを提供する復元記憶装置とを備える、システム。
【0083】
項17:当該コンピューティング・デバイスはさらに当該プロセッサにより実行されたとき当該システムに、当該暗号化状態が安全な状態であるとき、当該読取りコマンドを当該暗号化された記憶装置に当該対応するホスト・デバイス・プロキシを介してルーティングし、当該読取りコマンドに応答して、当該読取りコマンドに関連付けられた暗号文データを当該暗号化された記憶装置から受信させる、実施されるべき第2の組の命令を含む、項16に記載のシステム。
【0084】
項18:当該コンピューティング・デバイスはさらに、当該プロセッサにより実行されたとき当該システムに、当該暗号文データを当該暗号化エンジンで復号化して当該暗号文データ内で暗号化された平文データを復元し、当該平文データを当該ホスト・デバイスに当該記憶装置プロキシを介してルーティングさせる、実施されるべき第3の組の命令を含む、項17に記載のシステム。
【0085】
項19:当該コンピューティング・デバイスはさらに当該プロセッサにより実行されたとき当該システムに、当該暗号化状態がゼロ化状態であるとき、当該読取りコマンドを当該復元記憶装置に当該対応するホスト・デバイス・プロキシを介してルーティングし、当該読取りコマンドに応答して、当該読取りコマンドに関連付けられた暗号化されていない復元データを当該復元記憶装置から受信させる、実施されるべき第2の組の命令を含む、項16に記載のシステム。
【0086】
項20:当該複数の永続記憶装置のうち少なくとも1つの永続記憶装置は組込み型マルチメディア・カードである、項19に記載のシステム。
【0087】
様々な項目がメモリに格納されるかまたは使用中に記憶部に格納されているとして示されているが、これらの項目またはそれらの一部がメモリおよび他の記憶装置の間で転送されてもよいことは理解される。代替的に、他の実施形態では、当該ソフトウェアモジュールおよび/またはシステムの一部または全部を、別のデバイス上のメモリ内で実行してもよく、コンピュータ間通信を介して、示したコンピューティングシステムと通信してもよい。幾つかの実施形態では、当該システムおよび/またはモジュールの一部または全部を他の方式、例えば、少なくとも部分的にファームウェアおよび/またはハードウェアで実装または提供してもよい。当該ハードウェアは、1つまたは複数の特定用途向け集積回路(ASIC)、(例えば、適切な命令を実行することによって、および、マイクロコントローラおよび/または組込み型コントローラを含めることによって)標準統合された回路、コントローラ、フィールドプログラム可能ゲートアレイ(FPGA)、複雑プログラム可能論理デバイス(CPLD)等を含むがこれらに限られない。当該モジュール、システムおよびデータ構造の一部または全部をまた、(例えば、ソフトウェア命令または構造化データとして)適切なドライブによりまたは適切な接続を介して読み取られるハードディスク、メモリ、ネットワークまたはポータブル媒体製品のようなコンピュータ可読媒体に格納してもよい。当該システム、モジュールおよびデータ構造をまた、様々なコンピュータ可読送信媒体上で、(例えば、搬送波の一部または他のアナログまたはデジタル伝送信号として)生成されたデータ信号として送信してもよい。当該媒体には、無線ベースのおよび有線/ケーブルベースの媒体が含まれ、(例えば、単一アナログ信号または多重化アナログ信号の一部として、または複数の離散デジタルパケットまたはフレームとして)様々な形態をとってもよい。かかるコンピュータプログラム製品はまた他の実施形態では他の形態を取ってもよい。したがって、本発明を他のコンピュータシステム構成で実施してもよい。
【0088】
幾つかの実施形において上述のルーチンにより提供された機能を代替的な方式、例えばより多くのルーチンの間で分割して提供してもよく、または、より少数のルーチンに統合してもよいことは理解される。同様に、幾つかの実施形において、示したルーチンが、例えば他の示したルーチンがそれぞれかかる機能を欠くかまたはそれを含むとき、または提供された機能の数が変更されたとき、説明されたより多くのまたは少ない機能を提供してもよい。さらに、様々な動作が特定の方式(例えば、逐次的にまたは並列に)および/または特定の順序で実施されているとして図示されていることもあるが、他の実施形態では当該動作を他の順序および他の方式で実施してもよい。同様に、上述のデータ構造が、他の実施形態では異なる方式で、例えば、単一のデータ構造を複数のデータ構造に分割することによってまたは複数のデータ構造を単一のデータ構造に統合することによって、構造化されてもよく、(例えば、例えば他の示したデータ構造がそれぞれかかる機能を欠くかまたはそれを含むとき、または提供された情報の数またはタイプが変更されたとき)説明されたものより多くのまたは少ない情報を格納してもよい。
【0089】
とりわけ、「can、」「could、」「might、」「may、」「e.g.」等のような本明細書で使用した条件的言葉は、特に断らない限り、または、使用した文脈内でそれ以外に理解される限り、一般に、特定の例が特定の特徴、要素、および/またはステップを含み他の例がそれらを含まないことを伝えることを意図している。したがって、かかる条件的言葉は一般に、特徴、要素および/またはステップが何らかの方法で1つまたは複数の例に対して要求されること、または、1つまたは複数の例がこれらの特徴、要素および/またはステップが任意の特定の例に含まれるかまたは当該例で実施されるかどうかを判定し、著者の入力とともにまたは当該入力なしに、促すための論理を必ず含むことを示唆しようとするものではない。「comprising、」「including、」「having、」等の用語は同義語であり、包含的に、制約のない形式で使用され、追加の要素、特徴、動作、動作等を排除しない。また、「または」という用語は、その包括的な意味で(かつ、その排他的意味ではなく)使用され、その結果、例えば要素のリストを接続するために使用されたとき、「または」という用語は当該リスト内の要素の1つ、一部または全部を意味する。本開示の説明および添付の特許請求の範囲で使用する際、「a」、「an」および「the」という単数形は、特に明示しない限り、複数形も含むことを意図している。「comprises」または「comprising」という用語は、本明細書で使用されるときは、述べた特徴、整数、ステップ、動作、要素、および/またはコンポーネントの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、および/またはそれらのグループの存在または追加を排除しないことはさらに理解されよう。さらに、「資産」および「コンピューティング・デバイス」という用語は、本明細書で使用されるとき、交互に使用してもよい。
【0090】
一般に、上述の様々な特徴およびプロセスを互いに独立して使用してもよく、または、異なる方法で結合してもよい。全ての可能な組合せおよび部分組合せが本開示の範囲内にあると意図されている。さらに、特定の方法またはプロセスブロックを幾つかの実装では省略してもよい。本明細書で説明する方法およびプロセスはまた任意の特定の列に限定されず、それらに関連するブロックまたは状態を適切な他の列で実施することができる。例えば、説明されたブロックまたは状態を特に開示された意外の順序で実施してもよく、または複数のブロックまたは状態を単一のブロックまたは状態で結合してもよい。当該例示的なブロックまたは状態を逐次的に、並列に、または幾つかの他の方式で実施してもよい。ブロックまたは状態を、当該開示された例示的な例に追加してもよく、または、そこから削除してもよい。本明細書で説明する当該例示的なシステムおよびコンポーネントを説明されたものと異なって構成してもよい。例えば、要素を、当該開示された例示的な例に追加し、当該開示された例示的な例から削除し、または当該開示された例示的な例と比べて再配置してもよい。
【0091】
本明細書の教示事項の範囲から逸脱することなく、様々な変更を行ってもよく、均等物でその要素を置き換えてもよいことは当業者により理解されよう。さらに、本明細書の教示事項の範囲から逸脱することなく、多数の修正を行って、本明細書の教示事項を特定の状況に適合させてもよい。したがって、特許請求の範囲は本明細書で開示された特定の実装に限定されないことが意図されている。