(57)【要約】  様々な特徴は、インライン暗号化およびインライン暗号化解除に関する。一態様では、インライン読取/書込動作が、システムオンアチップ(SoC)のホストストレージコントローラによるデータのインライン暗号化/暗号化解除を容易にするためのパラメータを提供するようにオフチップストレージデバイスを構成することによって実行される。ストレージデバイスによってホストストレージコントローラに提供されるパラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を含む。ホストストレージコントローラは、パラメータを初期ベクトルとして使用して、データの暗号化/暗号化解除で使用するための暗号化キーを生成する。ホストストレージコントローラおよびオフチップストレージデバイスの例示的な読取動作と書込動作について、本明細書で説明する。
2016517241.tif 000002
【特許請求の範囲】
【請求項１】
ホストストレージコントローラの外部のストレージデバイスへの書込動作中にデータを暗号化するために使用可能な、前記ホストストレージコントローラでの方法であって、
前記ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから入手するステップと、
前記ストレージデバイスに前記書込コマンドを送るステップと、
前記データに関連するパラメータを前記ストレージデバイスから入手するステップと、
前記パラメータに基づいて暗号化キーを生成するステップと、
前記暗号化キーを使用して前記データを暗号化するステップと
を含む、方法。
【請求項２】
前記暗号化されたデータを前記ストレージデバイスに送るステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記データに関連する前記パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する、請求項1に記載の方法。
【請求項４】
前記データに関連する前記パラメータは、前記データを記憶するための論理ブロックアドレス(LBA)を含む、請求項3に記載の方法。
【請求項５】
前記データに関連する前記パラメータは、前記データ内のブロック数の表示をさらに含む、請求項3に記載の方法。
【請求項６】
前記データに関連する前記パラメータは、前記ストレージデバイスから、レディトゥートランスファ(RTT)要求データパケット内で受け取られる、請求項3に記載の方法。
【請求項７】
前記ストレージデバイスは、ユニバーサルフラッシュストレージ(UFS)デバイスであり、前記データに関連する前記パラメータは、RTT UFSプロトコル情報単位(UPIU)を含むデータパケット内で受け取られる、請求項6に記載の方法。
【請求項８】
個々の書込トランザクションに関連するキーインデックスを有する転送要求記述子を含む転送要求リストを維持するステップをさらに含む、請求項1に記載の方法。
【請求項９】
前記暗号化キーを生成するステップは、
前記ストレージデバイスから入手された前記パラメータから初期ベクトルを生成するステップと、
初期キーを入手するステップと、
前記初期キーおよび前記初期ベクトルから前記暗号化キーを生成するステップと
を含む、請求項1に記載の方法。
【請求項１０】
前記ホストストレージコントローラは、システムオンアチップ(SoC)のコンポーネントであり、前記ストレージデバイスは、前記SoCの外部のオフチップストレージデバイスであり、前記ホストストレージコントローラは、前記オフチップストレージデバイスでの記憶のために前記データのインラインデータ暗号化を実行する、請求項1に記載の方法。
【請求項１１】
ホストストレージコントローラの外部のストレージデバイスからの読取動作中にデータを暗号化解除するために使用可能な、前記ホストストレージコントローラでの方法であって、
前記ストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから入手するステップと、
前記ストレージデバイスに前記読取コマンドを送るステップと、
暗号化されたデータと前記暗号化されたデータに関連するパラメータとを前記ストレージデバイスから入手するステップと、
前記パラメータに基づいて暗号化解除キーを生成するステップと、
前記暗号化解除キーを使用して前記暗号化されたデータを暗号化解除するステップと
を含む、方法。
【請求項１２】
前記暗号化解除されたデータを、前記要求するホストソフトウェアコンポーネントに提供するステップをさらに含む、請求項11に記載の方法。
【請求項１３】
前記データに関連する前記パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する、請求項11に記載の方法。
【請求項１４】
前記暗号化されたデータに関連する前記パラメータは、前記データを読み取るための論理ブロックアドレス(LBA)を含む、請求項11に記載の方法。
【請求項１５】
前記暗号化されたデータに関連する前記パラメータは、前記暗号化されたデータ内のブロック数の表示を含む、請求項13に記載の方法。
【請求項１６】
前記暗号化されたデータに関連する前記パラメータは、前記ストレージデバイスから、プロトコル情報単位内で受け取られる、請求項13に記載の方法。
【請求項１７】
前記ストレージデバイスは、ユニバーサルフラッシュストレージ(UFS)デバイスであり、前記暗号化されたデータに関連する前記パラメータは、UFSプロトコル情報単位(UPIU)を含むデータパケット内で受け取られる、請求項16に記載の方法。
【請求項１８】
個々の読取トランザクションに関連するキーインデックスを有する転送要求記述子を含む転送要求リストを維持するステップをさらに含む、請求項15に記載の方法。
【請求項１９】
前記暗号化解除キーを生成するステップは、
前記ストレージデバイスから入手された前記パラメータから初期ベクトルを生成するステップと、
初期キーを入手するステップと、
前記初期キーおよび前記初期ベクトルから前記暗号化解除キーを生成するステップと
を含む、請求項11に記載の方法。
【請求項２０】
前記ホストストレージコントローラは、システムオンアチップ(SoC)のコンポーネントであり、前記ストレージデバイスは、前記SoCの外部のオフチップストレージデバイスであり、前記ホストストレージコントローラは、前記オフチップストレージデバイスから受け取られた暗号化されたデータのインラインデータ暗号化解除を実行する、請求項11に記載の方法。
【請求項２１】
データを記憶するためのストレージデバイスと、
前記ストレージデバイスに結合された処理回路であって、ホストストレージコントローラを有し、前記ホストストレージコントローラは、
前記ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから入手し、
前記ストレージデバイスに前記書込コマンドを送り、
前記データに関連するパラメータを前記ストレージデバイスから入手し、
前記パラメータに基づいて暗号化キーを生成し、
前記暗号化キーを使用して前記データを暗号化する
ように構成される、処理回路と
を含む、デバイス。
【請求項２２】
前記ホストストレージコントローラは、前記暗号化されたデータを前記ストレージデバイスに送るようにさらに構成される、請求項21に記載のデバイス。
【請求項２３】
前記データに関連する前記パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する、請求項21に記載のデバイス。
【請求項２４】
前記データに関連する前記パラメータは、前記データ内のブロック数の表示をさらに含む、請求項23に記載のデバイス。
【請求項２５】
前記ホストストレージコントローラは、システムオンアチップ(SoC)のコンポーネントであり、前記ストレージデバイスは、前記SoCの外部のオフチップストレージデバイスであり、前記ホストストレージコントローラは、前記オフチップストレージデバイスでの記憶のために前記データのインラインデータ暗号化を実行するように構成される、請求項21に記載のデバイス。
【請求項２６】
データを記憶するためのストレージデバイスと、
前記ストレージデバイスに結合された処理回路であって、ホストストレージコントローラを有し、前記ホストストレージコントローラは、
前記ストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから入手し、
前記ストレージデバイスに前記読取コマンドを送り、
暗号化されたデータと前記暗号化されたデータに関連するパラメータとを前記ストレージデバイスから入手し、
前記パラメータに基づいて暗号化解除キーを生成し、
前記暗号化解除キーを使用して前記暗号化されたデータを暗号化解除する
ように構成される、処理回路と
を含む、デバイス。
【請求項２７】
前記ホストストレージコントローラは、前記暗号化解除されたデータを、前記要求するホストソフトウェアコンポーネントに提供するようにさらに構成される、請求項26に記載のデバイス。
【請求項２８】
前記データに関連する前記パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する、請求項26に記載のデバイス。
【請求項２９】
前記暗号化されたデータに関連する前記パラメータは、前記暗号化されたデータ内のブロック数の表示をさらに含む、請求項28に記載のデバイス。
【請求項３０】
前記ホストストレージコントローラは、システムオンアチップ(SoC)のコンポーネントであり、前記ストレージデバイスは、前記SoCの外部のオフチップストレージデバイスであり、前記ホストストレージコントローラは、前記オフチップストレージデバイスから受け取られた暗号化されたデータのインラインデータ暗号化解除を実行するように構成される、請求項26に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条の下での優先権の主張
本特許出願は、本願の譲受人に譲渡され、これによって参照によって特に本明細書に組み込まれている、2013年4月16日に出願した米国特許仮出願第61/812616号、名称「DEVICE ASSISTED INLINE STORAGE ENCRYPTION」の優先権を主張するものである。
【０００２】
本開示は、外部記憶デバイスとともに使用されるホストストレージコントローラに関し、具体的には、データのインライン暗号化およびインライン暗号化解除に関する。
【背景技術】
【０００３】
データを保護するために、そのようなデータは、しばしば、伝送中および/または記憶される時に暗号化される。一例では、データは、ストレージバスを介してホストシステムオンアチップ(SoC)に接続された外部ストレージデバイス内に記憶される。通常のSoCは、アプリケーション処理回路と、SoCのハードウェア要素であるホストストレージコントローラとを含む可能性がある。アプリケーション処理回路は、外部ストレージデバイスから/への読取/書込トランザクションを開始するように働くホストソフトウェアを実行する。たとえば、ホストソフトウェアコンポーネントは、外部ストレージデバイスへ読取/書込トランザクションを発行するようにホストストレージコントローラに指示することができる。ホストストレージコントローラは、データをストレージデバイスに/からコピーするためにストレージバスを介して外部ストレージデバイスと通信し、その後、そのような動作の完了についてホストソフトウェアに通知する。ホストストレージコントローラは、別々のメモリバスを介してホストメモリにアクセスすることもできる。通常、ホストメモリは、一般に、悪意のある攻撃から保護された、よりセキュアなメモリであるが、外部ストレージデバイスは、一般に、そのような攻撃に脆弱な、より非セキュアなオフチップメモリデバイスである。したがって、外部ストレージデバイスに記憶されるデータは、暗号化される必要がある可能性があるが、ホストメモリに記憶されるデータは、一般に、暗号化される必要がない。暗号化プロセスは、ホストストレージコントローラから入手可能ではないパラメータを必要とする可能性がある。そのようなシステム内では、ホストストレージコントローラは、通常、制限されたコマンド復号を有する(または全く有しない)チャネルとして動作する。読取/書込動作の複雑さ(たとえば、コマンド生成/復号およびアクセス最適化)は、ホストソフトウェア内と、ストレージデバイスによって実行されるファームウェア内とにある。したがって、外部ストレージデバイス内に記憶されるデータを保護するために、データの暗号化/暗号化解除は、通常は、ホストストレージコントローラによるのではなくホストソフトウェアおよび/またはストレージデバイスによって実行される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】JESD220A標準規格文書
【非特許文献２】JESD223A標準規格文書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、その代わりにホストストレージコントローラによる効率的なインライン暗号化/暗号化解除を可能にする解決策の必要がある。
【課題を解決するための手段】
【０００６】
ホストストレージコントローラの外部のストレージデバイスへの書込動作中にデータを暗号化するために使用可能な、ホストストレージコントローラでの方法は、ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから入手するステップと、ストレージデバイスに書込コマンドを送るステップと、データに関連するパラメータをストレージデバイスから入手するステップと、パラメータに基づいて暗号化キーを生成するステップと、暗号化キーを使用してデータを暗号化するステップと含む。
【０００７】
別の態様では、ホストストレージコントローラの外部のストレージデバイスからの読取動作中にデータを暗号化解除するために使用可能な、ホストストレージコントローラでの方法は、ストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから入手するステップと、ストレージデバイスに読取コマンドを送るステップと、暗号化されたデータと暗号化されたデータに関連するパラメータとをストレージデバイスから入手するステップと、パラメータに基づいて暗号化解除キーを生成するステップと、暗号化解除キーを使用して暗号化されたデータを暗号化解除するステップとを含む。
【０００８】
さらに別の態様では、デバイスは、データを記憶するためのストレージデバイスと、ストレージデバイスに結合された処理回路であって、ホストストレージコントローラを有し、ホストストレージコントローラは、ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから入手し、ストレージデバイスに書込コマンドを送り、データに関連するパラメータをストレージデバイスから入手し、パラメータに基づいて暗号化キーを生成し、暗号化キーを使用してデータを暗号化するように構成される、処理回路とを含む。
【０００９】
さらに別の態様では、デバイスは、データを記憶するためのストレージデバイスと、ストレージデバイスに結合された処理回路であって、ホストストレージコントローラを有し、ホストストレージコントローラは、ストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから入手し、ストレージデバイスに読取コマンドを送り、暗号化されたデータと暗号化されたデータに関連するパラメータとをストレージデバイスから入手し、パラメータに基づいて暗号化解除キーを生成し、暗号化解除キーを使用して暗号化されたデータを暗号化解除するように構成される、処理回路とを含む。
【００１０】
様々な特徴、性質、および利点は、図面に関連して解釈される時に、下で示される詳細な説明から明白になり、図面では、同様の符号が、終始対応して同一になる。
【図面の簡単な説明】
【００１１】
【図１】インライン暗号化/暗号化解除を有する例示的なシステムオンアチップ(SoC)を示す図である。
【図２】例示的なアプリケーション処理回路、ホストストレージコントローラ、および外部ストレージデバイスと、それらの間で交換される情報とを示す図である。
【図３】SoCが、ストレージデバイスによって支援されるインライン暗号化/暗号化解除の態勢の整ったホストストレージコントローラを含む、例示的なSoCを詳細に示す図である。
【図４】オフチップストレージデバイスに関連するホストストレージコントローラによって実行され得る例示的なインライン暗号化/書込動作を示す図である。
【図５】ホストストレージコントローラとオフチップストレージデバイスとの間で実行される例示的なインライン暗号化/書込動作を示す図である。
【図６】ストレージデバイスによって支援されるインライン暗号化/暗号化解除のユニバーサルフラッシュストレージ(UFS:universal flash storage)実施態様に関してトランザクションキューイングとともに使用される例示的なレジスタおよびホストメモリ空間を示す図である。
【図７】UFS転送要求記述子(UTRD:UFS transfer request descriptor)がキーインデックスを含む、図6の実施態様とともに使用される例示的なUTRDを示す図である。
【図８】UFSプロトコル情報単位(UPIU:UFS protocol information unit)が論理ブロックアドレス(LBA)インジケータとブロックカウントインジケータとを含む、図6の実施態様とともに使用される例示的なレディトゥートランスファ(RTT:ready to transfer)UPIUを示す図である。
【図９】オフチップストレージデバイスに関連してホストストレージコントローラによって実行され得る例示的なインライン暗号化解除/読取動作を示す図である。
【図１０】ホストストレージコントローラとオフチップストレージデバイスとの間で実行される例示的なインライン暗号化解除/読取動作を示す図である。
【図１１】UPIUがLBAインジケータとブロックカウントインジケータとを含む、図10の実施態様とともに使用される例示的な「データイン」UPIUを示す図である。
【図１２】図1〜図11のシステム、方法、および装置を活用することができる処理システムを使用する装置のハードウェア実施態様の例を示すブロック図である。
【図１３】図12の処理回路の例示的なコンポーネントを示すブロック図である。
【図１４】図12の機械可読媒体の例示的な命令コンポーネントを示すブロック図である。
【図１５】ストレージデバイスへの書込動作中にデータを暗号化する、ホストストレージコントローラで動作可能な方法を示す図である。
【図１６】ストレージデバイスからの読取動作中にデータを暗号化解除する、ホストストレージコントローラで動作可能な方法を示す図である。
【図１７】ホストストレージコントローラによる書込動作中のデータ暗号化を容易にする、ストレージデバイスで動作可能な方法を示す図である。
【図１８】ホストストレージコントローラによる読取動作中のデータ暗号化解除を容易にする、ストレージデバイスで動作可能な方法を示す図である。
【図１９】ストレージデバイスへの書込動作中にデータを暗号化する、ホストストレージコントローラで動作可能な代替の方法を示す図である。
【図２０】ストレージデバイスからの読取動作中にデータを暗号化解除する、ホストストレージコントローラで動作可能な代替の方法を示す図である。
【発明を実施するための形態】
【００１２】
以下の説明では、本開示の様々な態様の完全な理解を提供するために具体的な詳細が与えられる。しかしながら、当業者は、これらの特定の詳細なしで諸態様を実践できることを理解するであろう。たとえば、回路が、不必要な詳細で諸態様を不明瞭にすることを避けるためにブロック図で示される場合がある。他の場合に、周知の回路、構造、および技法が、本開示の諸態様を不明瞭にしないようにするために、詳細には示されない場合がある。
【００１３】
「例示的」という単語は、本明細書では、「例、実例、または例示として働く」を意味するのに使用される。本明細書で「例示的」として説明される何らかの実施態様または態様は、必ずしも、本開示の他の態様より好ましいまたは有利と解釈されるべきではない。同様に、「諸態様」という用語は、本開示のすべての態様が、議論される特徴、利点、または動作のモードを含むことを必要としない。
【００１４】
概要
複数の新規の特徴は、ストレージデバイスによって支援されるインライン暗号化およびインライン暗号化解除に関する。一態様では、インライン読取/書込動作が、システムオンアチップ(SoC)のホストストレージコントローラによるデータのインライン暗号化/暗号化解除を容易にするためのパラメータを提供するようにオフチップストレージデバイスを構成することによって実行される。本明細書で説明される様々な例では、オフチップストレージデバイスからホストストレージコントローラによって入手されるパラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する。そのようなパラメータの特定の例は、データを暗号化/暗号化解除するためにストレージデバイスから入手される論理ブロックアドレス(LBA)である。しかしながら、高められたセキュリティを提供するために、他のパラメータを、LBAに加えてまたはその代わりに使用することができる。本明細書でインライン暗号化/暗号化解除手順の具体的な例を提供するために、以下の説明の一部は、LBAが使用される実施態様を対象とするが、LBAに加えてまたはその代わりに、他のパラメータを使用することができることを理解されたい。
【００１５】
ホストストレージコントローラは、データの暗号化/暗号化解除で使用するキーを生成しまたは他の形で入手するために、ストレージデバイスから入手したパラメータを使用し、したがって、SoCの他のコンポーネントがそのような機能を実行しまたは制御する必要を軽減して、これによってより効率的なインライン暗号化/暗号化解除を提供する。LBAが、ホストストレージコントローラによってストレージデバイスから入手される例では、LBAは、暗号化/暗号化解除で使用される初期ベクトル(または初期化ベクトル)として使用される。この手順は、ホストソフトウェアから受け取られる読取/書込コマンドからそのような情報を抽出することを試みることによるなど、オフチップストレージデバイス以外のソースから初期ベクトルを他の形で入手するインライン暗号化/暗号化解除システムとは別個である。また、初期ベクトルとしてLBAを使用することによって、初期ベクトルが、書込/暗号化動作と読取/暗号化解除動作との両方について同一になり、これによって、ホストストレージコントローラが、以前に暗号化され、オフチップストレージデバイスに記憶されたデータを暗号化解除することが可能になることに留意されたい。さらに、初期ベクトルは、データのブロックごとに異なるものになり、これによって、データのブロックごとに一意の初期値が提供される。さらに、初期ベクトルとしての使用のためにLBAまたは他の適切なパラメータをオフチップストレージデバイスから入手することによって、初期ベクトル情報を、オンチップメモリに記憶する必要がなくなり、したがって、貴重なオンチップ記憶空間が節約される。また、通常、ホストストレージコントローラは、オフチップストレージデバイスによって使用される実際のストレージアドレスを与えられるのではなく、その代わりに、データのホストメモリアドレスだけを与えられ、このホストメモリアドレスは、同一のデータに対する読取動作と書込動作との間で異なる可能性がある。したがって、ホストメモリアドレスは、通常、インライン暗号化/暗号化解除のためには使用され得ない。これに関して、ストレージデバイスによって使用されるアドレス(物理的であれ論理的であれ)は、ホストプロセッサによって使用されるメモリアドレスとは異なるアドレス空間内にある。従来、ホストストレージコントローラは、暗号化/暗号化解除での使用のためにオフチップストレージデバイスからストレージアドレスを受け取らず、したがって、これを使用することができない。
【００１６】
本明細書で説明されるいくつかの例は、以前はJoint Electron Device Engineering Council(JEDEC)と称したJEDEC Solid State Technology AssociationのUFSホストコントローラインターフェース標準規格に全般的に従って実行される読取動作と書込動作を含む。たとえば、2012年6月のJESD220A標準規格文書およびJESD223A標準規格文書を参照されたい。JEDEC UFS読取動作およびJEDEC UFS書込動作は、下で説明されるように、本明細書で開示される様々な特徴を提供するために変更される。しかしながら、本明細書で説明される特徴のうちの少なくともいくつかを、プロプライエタリシステムおよび他のシステムを含む、全般的にJEDEC標準規格に従わない他のシステムで実施できることを理解されたい。
【００１７】
インライン書込暗号化および読取暗号化解除を有する例示的デバイス
図1に、インライン暗号化/暗号化解除を有する例示的なシステムオンアチップ100をおおまかに示す。短く言うと、SoC 100は、ホストソフトウェアまたはソフトウェアコンポーネント102を実行する態勢が整ったアプリケーション処理回路101を含み、ホストストレージコントローラ104をさらに含む。この例では、ホストストレージコントローラ104は、ストレージバス108を介して外部ストレージデバイス106に書き込まれるデータを暗号化し、かつ/または同一のストレージバスを介してストレージデバイス106から読み取られるデータを暗号化解除することができるインライン暗号化/暗号化解除モジュール105を含む。これらの動作を、メモリバス112を介してアクセスされるホストメモリ110内に記憶されたデータまたは他のパラメータに関連して実行することができる。暗号化/暗号化解除モジュール105によって実行される動作を容易にするために、ストレージデバイス106は、読取動作中および書込動作中にホストストレージコントローラ104にパラメータ(LBA値など)を提供するように構成される。
【００１８】
図2は、アプリケーション処理回路202、ホストストレージコントローラ204、および外部ストレージデバイス206の例示的な読取動作と書込動作を示し、インライン暗号化/暗号化解除とともに使用するためにそれらの間で交換される情報を具体的に示すタイミング図200を提供するものである。処理は、アプリケーション処理回路202が、外部ストレージデバイス206に書き込まれるデータを識別する内部接続線を介してホストストレージコントローラ204に書込コマンド208を(具体的には図示されていない、要求するホストソフトウェアコンポーネントの代わりに)送ることから始まる。データは、ホストメモリアドレスによって識別され得る(ホストメモリデバイスは、他のコンポーネントをより明瞭に示すことを可能にするために、この図には具体的に示されていない)。ホストストレージコントローラ204は、記憶されるデータの量を示す書込コマンド要求210をストレージバス(やはり図2には図示せず)を介して外部ストレージデバイス206に送ることによって、書込コマンドに応答する。書込コマンド要求と、様々なコンポーネントの間で交換され得る他のパラメータ、データパケット、およびコマンドとを、下でJEDECベースの例に関連して提供する。
【００１９】
書込コマンド要求に応答して、外部ストレージデバイス206は、データを記憶するための適切な位置を識別するために、そのメモリを調べる。この位置は、そのストレージデバイスLBAと、そのLBAから始まって記憶されるデータのブロック数(すなわち、ブロックカウント)とによって識別される。ブロック数は、記憶されるデータの量と、ストレージデバイス内の個々のストレージブロックのサイズとに依存する。いくつかの場合に、データは、外部ストレージデバイス206内の複数の異なる位置に記憶される必要があり、したがって、複数のLBA値および対応するブロックカウントが、識別される必要がある可能性がある。図2のコンポーネントの全体的な動作を説明する際の明瞭さのために、単一のLBAだけが必要である例を提示する。その後、LBAおよびブロックカウント212が、外部ストレージデバイス206からホストストレージコントローラ204に送られる(たとえば図8を参照して下で議論される他のパラメータと一緒に)。
【００２０】
214では、ホストストレージコントローラ204が、LBA/ブロックカウントと初期キーとに基づいて暗号化キーを生成し、この初期キーは、ホストストレージコントローラ204がそれ自体で生成するか、ホストメモリから取り出すかのいずれかである。初期キーが、ホストストレージコントローラ204によって生成される場合には、ホストストレージコントローラ204は、暗号化解除での後続の使用のために、その初期キーをホストメモリ内に保存することができる。例示的な暗号化キー生成技法は、下で議論されるが、ここで、LBAは、暗号化キーを生成するための初期キーと一緒に暗号化関数に適用するための初期ベクトルとして使用される(単独でまたはブロックカウントと組み合わせて)。216では、ホストストレージコントローラ204が、外部ストレージデバイスに記憶すべきデータを内部ホストメモリから入手し、暗号化キーを使用してそのデータを暗号化する。暗号化されたデータ218が、外部ストレージデバイス206にストレージバスを介して送られ、219では、暗号化されたデータ218が、前に示されたLBAに外部ストレージデバイス206によって記憶される。212と219との間(両端を含む)のプロセスを、必要な場合に任意の回数だけ繰り返すことができることに留意されたい。図示されていない様々な肯定応答インジケータを、ストレージデバイスによってホストストレージコントローラに、およびホストストレージコントローラによってアプリケーション処理回路に、提供することができる。これらおよび他の例示的な実施詳細については、下を参照されたい。
【００２１】
後刻に、アプリケーション処理回路202が、要求するホストソフトウェアコンポーネントの代わりに、外部ストレージデバイスからデータを取り出すことを必要とする場合がある。したがって、アプリケーション処理回路202は、外部ストレージデバイス206から読み取られるべきデータを識別する読取コマンド220をホストストレージコントローラ204に送る。このデータは、やはり、ホストメモリアドレスによって識別され得る。ホストストレージコントローラ204は、取り出されるべきデータを識別するそれ自体の読取コマンド222を外部ストレージデバイス206に送ることによって、読取コマンドに応答する。外部ストレージデバイス206は、223で、そのメモリから暗号化されたデータを取り出し、224で、暗号化されたデータと対応するLBAおよびブロックカウントとをホストストレージコントローラ204に送る。やはり、例示的なJEDECベースの実施態様の詳細を、下で提示する。226では、ホストストレージコントローラ204が、LBA/ブロックカウントと初期キー(ホストメモリから取り出すことができる)とに基づいて、データの暗号化解除キーを生成する。228では、ホストストレージコントローラ204が、暗号化解除キーを使用して、外部ストレージデバイス206から取り出されたデータを暗号化解除し、230では、要求するホストソフトウェアによる使用のために、暗号化解除されたデータをホストメモリに書き込む。223と230との間(両端を含む)のプロセスをも、必要な場合に任意の回数だけ繰り返すことができることに留意されたい。
【００２２】
本明細書で説明されるインライン暗号化/暗号化解除のシステムおよび手順を、広範囲のデバイス内で、および広範囲のアプリケーションのために、活用しまたは使用することができる。具体的な例を提供するために、インライン暗号化/暗号化解除モジュールを有するホストストレージコントローラが、UFSデバイスなどのオフチップストレージデバイスを有するモバイル通信デバイス内での使用のためにSoC処理回路上で提供される、例示的なハードウェア環境を説明する。他の例示的なハードウェア環境は、他の通信デバイスおよびコンポーネントと、それらとともに使用するための様々な周辺デバイスなどを含む。さらに、(非セキュアな)オフチップストレージデバイスから前述のパラメータを受け取ることに対する代替案として、そのようなパラメータを、その代わりに、ホストストレージコントローラによって生成し、暗号化/暗号化解除での使用のためにセキュアメモリ内で維持することができ、そのような実施態様については、下で図19および図20を参照して短く説明する。
【００２３】
例示的なシステムオンアチップハードウェア環境
図3に、様々な新規の特徴を活用できる一例による、モバイル通信デバイスのSoC処理回路300を示す。このSoC処理回路は、Qualcomm Incorporated社のSnapdragon(商標)処理回路とすることができる。SoC処理回路300は、様々なソフトウェアコンポーネント313(図示の明瞭さのために、CPUコアとは別々のブロックとして図示されているが、ソフトウェアがCPUコア312内で走行できることを了解されたい)に関連して動作する態勢が整っているマルチコアCPU 312を含むアプリケーション処理回路310を含む。アプリケーション処理回路310は、通常、モバイル通信デバイスのすべてのコンポーネントの動作を制御する。一態様では、アプリケーション処理回路310は、暗号化/暗号化解除モジュール351を使用してインライン暗号化およびインライン暗号化解除を実行する態勢が整っているホストストレージコントローラ350に結合される。アプリケーション処理回路310は、SoC処理回路300の様々なコンポーネントのためのブートシーケンス命令を記憶するブートROM 318をも含むことができる。SoC処理回路300は、アプリケーション処理回路310によって制御される1つまたは複数の周辺サブシステム320をさらに含む。周辺サブシステム320は、ストレージサブシステム(たとえば、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM))、ビデオ/グラフィックスサブシステム(たとえば、ディジタル信号処理回路(DSP)、グラフィックス処理回路ユニット(GPU))、オーディオサブシステム(たとえば、DSP、アナログ-ディジタル変換器(ADC)、ディジタル-アナログ変換器(DAC))、電力管理サブシステム、セキュリティサブシステム(たとえば、他の暗号化コンポーネントおよびディジタル著作権管理(DRM)コンポーネント)、入出力(I/O)サブシステム(たとえば、キーボード、タッチスクリーン)、ならびに有線およびワイヤレスの接続性サブシステム(たとえば、universal serial bus(USB)、全地球測位システム(GPS)、Wi-Fi、Global System Mobile(GSM(登録商標))、符号分割多元接続(CDMA)、4G Long Term Evolution(LTE)モデム)を含むことができるが、これに限定されない。モデムサブシステムである例示的な周辺サブシステム320は、DSP 322、様々な他のハードウェア(HW)およびソフトウェア(SW)コンポーネント324、ならびに様々なラジオ周波数(RF)コンポーネント326を含む。一態様では、各周辺サブシステム320は、関連する周辺サブシステム320のプライマリブートイメージ(図示せず)を記憶するブートROM 328をも含む。
【００２４】
SoC処理回路300は、内部共有ストレージ332(たとえば、スタティックRAM(SRAM)、ダブルデータレート(DDR)シンクロナスダイナミック(SD)RAM、DRAM、フラッシュメモリなど)など、様々なランタイムデータまたは他のパラメータを記憶し、ホストメモリを提供するために、アプリケーション処理回路310および様々な周辺サブシステム320によって共有される、様々な内部共有HWリソース330をさらに含む。図3の例では、内部共有ストレージ332は、暗号化キーを記憶し、いくつかの例ではインライン暗号化/暗号化解除モジュール351によって使用される前述のパラメータを記憶する(具体的には、これらのパラメータがオフチップストレージデバイスによって提供されない場合に)のに使用され得るキー/パラメータストレージ要素、部分、またはコンポーネント333を含む。他の例では、キーは、モバイルデバイス内の他所に記憶され、あるいは、ホストストレージコントローラによって必要に応じて生成される。
【００２５】
一態様では、SoC 300のコンポーネント310、318、320、328、および330は、シングルチップ基板上に集積される。SoC処理回路300は、異なるチップ基板上に配置され得、1つまたは複数のバスを介してSoC処理回路300と通信することができる、様々な外部共有HWリソース340をさらに含む。外部共有HWリソース340は、たとえば、オペレーティングシステム(OS)情報、システムファイル、プログラム、アプリケーション、ユーザデータ、オーディオ/ビデオファイル、その他などの様々なタイプのデータを記憶するためにアプリケーション処理回路310および様々な周辺サブシステム320によって共有され得る、外部共有ストレージ342(たとえば、DDR RAM(登録商標)またはDRAM)および/または永久的もしくは半永久的データストレージ344(たとえば、Secure Digital(SD)カード、ハードディスクドライブ(HDD)、embedded multimedia card(e.MMCまたはe-MMC)デバイス、UFSデバイスなど)を含むことができる。外部リソースおよびデバイス340内に記憶されるデータの少なくとも一部は、書込動作中にホストストレージコントローラ350によって暗号化され得、その後、読取動作中にホストストレージコントローラによって暗号化解除され得る。
【００２６】
SoC処理回路300を組み込んだモバイル通信デバイスがアクティブ化される時に、SoC処理回路は、システムブートアッププロセスを開始する。具体的には、アプリケーション処理回路310が、様々な周辺サブシステム320のためのブートシーケンス命令を含む、SoC処理回路300のためのブート命令を取り出すために、ブートROM 318にアクセスする。周辺サブシステム320は、追加の周辺ブートROM 328を有することもできる。
【００２７】
例示的なインライン暗号化/暗号化解除手順
図4に、図3の処理回路のホストストレージコントローラまたは他の適切に態勢の整ったコンポーネント、デバイス、システム、もしくは処理回路によって使用され得る例示的なインライン暗号化/書込動作400を示す。図4の手順は、全般的に、ストレージデバイスによって支援されるインライン暗号化を提供するように変更された、JEDEC標準規格およびプロトコルに従って実行される。この例では、LBAは、初期ベクトルを生成する際の使用のためにホストストレージコントローラによってストレージデバイスから受け取られるが、すでに説明したように、LBA以外のパラメータを、その代わりに使用することができる。ステップ402では、ホストストレージコントローラが、そのホストストレージコントローラを組み込んだSoC処理回路の外部のUFSデバイスなどのオフチップストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから受け取る。この書込コマンドを、内部SoCコマンド伝送線を介して受け取ることができる。ステップ404では、ホストストレージコントローラが、ストレージバスを介してオフチップストレージデバイスにコマンド記述子ブロック(CDB)書込コマンドを送り、このコマンドは、全般的にJEDEC標準規格に従って、UFSプロトコル情報単位(UPIU)として構成される。ステップ406では、これに応答して、ホストストレージコントローラが、ストレージバスを介してオフチップストレージデバイスからレディトゥートランスファ(RTT)要求UPIUを受け取り、ここで、RTT要求UPIUは、直接メモリアクセス(DMA)コンテキストデータを有し、記憶されるべきデータのブロック数の表示と一緒に、記憶されるべきデータの最初のブロックのLBAなどの1つまたは複数のパラメータを指定するパケットヘッダを含む離散連続ブロックを伴って構成される。ステップ406のRTTが、ステップ404の直後に受け取られる必要がないことに留意されたい。そうではなく、RTTを、後刻に受け取ることができる。例示的なRTT要求UPIUを、図8に示し、下で説明する。
【００２８】
ステップ408では、ホストストレージコントローラが、データの最初のブロックのLBAとブロック数の表示とに少なくとも部分的に基づいて、たとえば初期ベクトルとしてLBAを(単独でまたはブロックカウントと組み合わせて)使用することによって、またはLBAから初期ベクトルを生成することによって、暗号化キーを生成しまたは他の形で入手する。本明細書では、「入手すること」という用語が、たとえば計算すること、コンピューティング、生成すること、獲得すること、受け取ること、取り出すこと、または何らかの他の適切な対応する行動を実行することを幅広く包含することに留意されたい。全体的なシステムのセキュリティ必要に応じて、ステップ408で様々な暗号化キー生成技法を使用することができる。少なくともいくつかの例では、ホストストレージコントローラは、初期ベクトルを生成するのにLBAを使用する(または、初期ベクトルとしてLBAを使用する)。ホストストレージコントローラは、ホストメモリから(図3のキーストレージ333からなど)初期キーをも入手する。その後、ホストストレージコントローラは、初期キーおよび初期ベクトルから暗号化キーを生成する。たとえば初期ベクトルおよび初期キーを、Advanced Encryption Standard(AES)暗号化機能に適用して、暗号化キー(暗号鍵)を生成することができる。
【００２９】
ステップ410では、ホストストレージコントローラが、暗号化キーを使用してデータを暗号化する。様々な特定の暗号化技法を、ステップ410で使用することができる。AESの例では、初期ベクトルおよび初期キーから生成された暗号化キー(暗号鍵)が、暗号化されるべきデータに1回または複数回適用され得る。また、ステップ410では、ホストストレージコントローラが、書込トランザクションのためのUFS転送要求記述子(UTRD)内にキーインデックスを保存する。UTRDのキューを有する例示的なホストメモリ空間を、図6および図7に示し、下でUFSの例について説明する。ステップ412では、ホストストレージコントローラが、1つまたは複数の「データアウト」UPIUを使用してストレージバスを介してその中での記憶のためにストレージデバイスに暗号化されたデータを送り、暗号化されたデータのストレージを確認する状況情報を有する応答UPIUを受け取る。
【００３０】
図5に、前述のストレージバスを介してホストストレージコントローラ502とオフチップストレージデバイス504との間で交換されるコマンドおよび他のパケットを示すタイミング図/流れ図500によって例示的なインライン暗号化/書込動作をさらに示す。当初に、データがオフチップストレージデバイスに書き込まれる必要があることを示す書込CDB情報を含むコマンドUPIU 506が、ホストストレージコントローラからオフチップストレージデバイスに伝送される。その後、これに応答して、オフチップストレージデバイスがデータを受け取る準備ができていることを示すRTT UPIU 508が、オフチップストレージデバイスからホストストレージコントローラに伝送される。すでに説明したように、RTT UPIUは、DMAコンテキストデータを含み、記憶されるべきデータのブロック数の表示と一緒に記憶されるべきデータの最初のブロックのLBAを含む1つまたは複数のパラメータを指定するパケットヘッダを含む離散連続ブロックを伴って構成される。図5には示されていないが、RTT UPIU 508の受取の後に、ホストストレージコントローラは、すでに説明したように、書き込まれるべきデータを暗号化する。オフチップストレージデバイスに記憶されるべき暗号化されたデータを含む1つまたは複数のデータアウトUPIU 510が、ホストストレージコントローラからオフチップストレージデバイスに伝送される。別のRTT UPIU 512に応答して、ホストストレージコントローラは、さらなる暗号化されたデータを含む1つまたは複数の追加のデータアウトUPIU 514を送る。最終的に、状況情報を含む応答UPIU 516が、全般的にJEDEC UFSプロトコルに従って、オフチップストレージデバイスからホストストレージコントローラに送られる。応答UPIUは、たとえば、データが成功して記憶されたことを示すことができる。
【００３１】
図6に、様々な前述のパラメータおよびコマンドを記憶し、維持し、または処理することができるメモリ空間600を使用する例示的なUFSホストコントローラインターフェース(HCI)の全般的なアーキテクチャを示す。より具体的には、この図は、ホストメモリ空間602と入出力(I/O)メモリ/レジスタ空間604とを示す。図6は、様々なリスト、コマンド、およびデータバッファによる例示的なトランザクションキューイングをも示す。図6の全体的な特徴を、全般的にJEDEC UFS標準規格に従って構成することができるので、この特徴については、各々がキーインデックス(KEYIDX)を有するUTRDを強調して短く説明するのみとする。ホストメモリ空間602は、各々がKEYIDXを含むUTRDをリストするUTPトランザクション要求リスト606を維持する。KEYIDXを有するUTRDは、この図では608と表される。キーインデックスを有する個々の例示的なUTRDを、図7に示し、下で説明する。図6のUTRDは、UTPトランザクション要求リスト606内でのキューイングのために入出力レジスタ/メモリ空間のUTPトランザクション要求コンポーネント610を介して受け取られる。その後、リスト606のUTRDは、JEDEC標準規格に従って、対応する応答UPIUおよび物理領域記述テーブル(PRDT:physical region description table)とともに使用するための、対応するコマンドUPIUを生成するのに使用される。図6では、コマンドUPIU、応答UPIU、およびPRDTの各グループが、612と表される。少なくともいくつかのグループ化は、グループ614によって表されるように、PRDTを含まなくてもよい。PRDTに関連するデータを、データバッファ616に記憶することができる。さらに、ホストメモリ空間602は、入出力レジスタ/メモリ空間604のUTP管理要求622を介して受け取られる様々なTM要求UPIU 620を記憶しまたはキューイングするためのUTPタスク管理要求リスト618を含む。完全さのために、入出力レジスタ/メモリ空間604の他のコンポーネントが、特に言及され、これらは、ホストコントローラ能力624、割込みおよびホスト状況インジケータ626、UFS相互接続(UIC)コマンド628、ならびにベンダ固有値630を含む。図6に示されたこれらおよび他のコンポーネントに関するさらなる情報については、前述のJEDEC文書を参照されたい。
【００３２】
図7に、702と表される、前述のキーインデックスを含む例示的なUTRD 700を示す。この例では、キーインデックスは、8ビットID:KEYIDX[7:0]である。コマンドタイプ値、全体的コマンド状況値、UTPコマンド記述子ベースアドレス値(図示のように2つの別々の部分に記憶される)、応答UPIUオフセット値、応答UPIU長さ値、PRDTオフセット値、およびPRDT長さ値など、UTRDの様々な他の要素が、完全さのために示されている。やはり、図7に示されたこれらおよび他の値に関するさらなる情報については、前述のJEDEC文書を参照されたい。
【００３３】
図8に、804と表される前述のLBAと806と表されるブロックカウントとを含むRTT UPIU 800を示す。この例では、LBAは、32ビット値:LBA[31:0]であり、ブロックカウントは、8ビット値:BLKCNT[7:0]である。論理ユニット番号(LUN)、総エクストラヘッダセグメント(EHS:extra header segment)長、データセグメント長、データバッファオフセット、データ転送カウント、およびエンドツーエンド巡回冗長検査(E2ECRC:end to end cyclic redundancy check)ヘッダなど、RTT UPIUの様々な他の要素が、完全さのために示されている。この図に注記されているように、ヘッダは、HDビットが1の場合に省略され得る。1がセットされている時に、HDビットは、すべてのヘッダセグメントのエンドツーエンドCRCが、UPIU内に含まれることを指定する。CRCフィールドは、ヘッダエリア内のすべてのフィールドを含む。CRCは、ヘッダに続く32ビット語位置に配置される。エンドツーエンドCRCは、JEDEC標準規格のすべてのバージョンで必ずしもサポートされてはおらず、したがって、HDに0をセットすることができる。図8に示されたこれらおよび他の値に関するさらなる情報については、前述のJEDEC文書を参照されたい。
【００３４】
LBAをRTT UPIU内で提供するのではなく、1つまたは複数の代替のパラメータをその代わりに提供することができることに留意されたい。一般的に言って、様々なパラメータ、具体的には暗号化/暗号化解除での使用のための初期ベクトルを生成するのに適するパラメータを、使用することができる。これに関して、パラメータは、読取コマンドと書込コマンドとについて同一であり(書込動作中に暗号化されたデータを後続の読取動作中に簡単に暗号化解除できるようにするために)、データブロックごとに一意でなければならない識別子を含まなければならない。LBAは、これらの要件のために働くので、本明細書で例示的なパラメータとして使用されるが、具体的にはLBAを変更するか破壊する可能性がある攻撃を阻止するために、追加のセキュリティ特徴を提供する他の値を、その代わりに使用することができる。
【００３５】
ここで図9〜図11に移って、インライン暗号化解除/読取動作を、これから、図4〜図8の技法を使用して以前に暗号化され、ストレージに書き込まれたデータの読取および暗号化解除での使用について説明する。
【００３６】
図9に、図3の処理回路のホストストレージコントローラまたは他の適切に態勢の整ったコンポーネント、デバイス、システム、もしくは処理回路によって実行され得る例示的なインライン暗号化解除/読取動作900を示す。ステップ902では、ホストストレージコントローラが、そのホストストレージコントローラを組み込んだSoC処理回路の外部のUFSデバイスなどのオフチップストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから受け取る。読取コマンドを、内部SoCコマンド伝送線を介して受け取ることができる。ステップ904では、ホストストレージコントローラが、ストレージバスを介してオフチップストレージデバイスにCDB読取コマンドを送り、コマンドは、全般的にJEDEC標準規格に従って、読み取られるべきデータを識別するUPIUとして構成される。ステップ906では、これに応答して、ホストストレージコントローラが、ストレージバスを介してオフチップストレージデバイスから1つまたは複数の「データイン」UPIUを受け取り、このUPIUは、やはり、取り出されるべきデータのブロック数の表示と一緒に、取り出されるべきデータの最初のブロックのLBAなどの1つまたは複数のパラメータを指定するパケットヘッダを含む離散連続ブロックを伴って構成される。例示的なデータインUPIUを、図11に示し、下で説明する。
【００３７】
ステップ908では、ホストストレージコントローラが、トランザクションのための対応するUTRD(すでに説明したように、キーインデックス値を含む)に関連するデータの最初のブロックのLBAおよびデータのブロック数に少なくとも部分的に基づいて、読み取るべきデータの暗号化解除キーを生成するか、SoCのホストメモリのキーメモリから他の形で取り出す。一例では、ホストストレージコントローラは、LBAから初期ベクトルを生成し(または、初期ベクトルとしてLBAを使用し)、メモリから初期キーを入手し(トランザクションのためのキーインデックスに関連する)、その後、初期キーおよび初期ベクトルから暗号化解除キーを生成する。システムによって使用される暗号化/暗号化解除の特定のタイプに依存して、暗号化解除キーが、単に暗号化ではなく暗号化解除のために使用される、前述の暗号化キーと同一のキーとされ得ることに留意されたい。しかしながら、いくつかの実施態様では、暗号化解除キーは、暗号化キーと異なるものとすることができ、したがって、一般性のために、本明細書では、暗号化キーと暗号化解除キーとに別々の用語を使用する。ステップ910では、ホストストレージコントローラが、暗号化解除キーを使用してデータを暗号化解除する。ステップ912では、ホストストレージコントローラが、通常はデータをシステムメモリ(たとえば、ホストメモリ)に書き込むことによって、暗号化解除されたデータを、要求するホストソフトウェアコンポーネントに提供しまたは「送る」。
【００３８】
図10に、前述のストレージバスを介してホストストレージコントローラ1002とオフチップストレージデバイス1004との間で交換されるコマンドを示すタイミング図/流れ図1000によって例示的なインライン暗号化解除/読取動作を示す。当初に、データがオフチップストレージデバイスから読み取られる必要があることを示すCDB読取情報を含むコマンドUPIU 1006が、ホストストレージコントローラからオフチップストレージデバイスに伝送される。これに応答して、暗号化されたデータを含む、1つまたは複数のデータインUPIU 1008が、オフチップストレージデバイスからホストストレージコントローラに伝送される。すでに説明したように、各データインUPIUは、読み取られるデータのブロック数の表示と一緒に、読み取られるデータの最初のブロックのLBAなどの1つまたは複数のパラメータを指定するパケットヘッダを含む離散連続ブロックを伴って構成される。最終的に、状況情報を含む応答UPIU 1010が、全般的にJEDEC UFSプロトコルに従って、ホストコントローラからオフチップストレージデバイスに送られる。応答UPIUは、たとえば、データがホストストレージコントローラによって成功して受け取られたことを示すことができる。
【００３９】
図11に、1104と表される前述のLBAおよび1106と表されるブロックカウントならびにこの図のUPIUの行1108から始まる暗号化されたデータを含む、例示的なデータインUPIU 1100を示す。やはり、LBAは、32ビット値:LBA[31:0]であり、ブロックカウントは、8ビット値:BLKCNT[7:0]である。タスクタグ、総EHS長、データセグメント長、データバッファオフセット、データ転送カウント、およびE2ECRC値を含む1つまたは複数のヘッダなど、UPIU内の様々な他の要素が、完全さのために示されている。この図に注記されているように、第1のE2ECRCヘッダは、HDビットが1の場合に省略され得る。第2のE2ECRCヘッダは、DDビットが0の場合に省略され得る。1がセットされている時に、DDビットは、データセグメントのE2ECRCがUPIU内に含まれることを指定する。32ビットCRCが、データセグメント内のすべてのフィールドにわたって計算され、UPIUの最後の語位置としてデータセグメントの末尾に配置され得る。注記したように、エンドツーエンドCRCは、JEDEC標準規格のすべてのバージョンで必ずしもサポートされてはおらず、したがって、DD(ならびにHD)に0をセットすることができる。図11に示されたこれらおよび他の値に関するさらなる情報については、前述のJEDEC文書を参照されたい。UPIUの受取時に、ホストストレージコントローラは、パケットから暗号化されたデータを抽出し、LBA値およびBLKCNT値を使用して、データを暗号化解除するための暗号化解除キーを入手しまたは生成する。LBAは、データインUPIU内に含まれるデータのための暗号化解除キーを入手しまたは生成するための初期ベクトルとして使用され得る。すでに注記したように、LBAの他にまたはこれに加えて、他のパラメータを使用することができる。他のパラメータが使用される場合に、そのパラメータは、そのパラメータが、データの特定のブロックに関する読取動作と書込動作とについて同一になる(ホストストレージコントローラが以前に暗号化されたデータを暗号化解除することを可能にするために)が、データのブロックごとに異なる(一意性を提供するために)識別子を提供するようになるように選択され、使用されなければならない。
【００４０】
例示的なシステムおよび方法
図12に、図2〜図11のシステム、方法、および装置を実施することができる全体的なシステムまたは装置1200を示す。本開示の様々な態様によれば、要素、要素の何らかの部分、または要素の何らかの組合せを、図3のSoC処理回路などの1つまたは複数の処理回路1204を含む処理システム1214を用いて実施することができる。たとえば、装置1200を、モバイル通信システムのユーザ機器(UE)とすることができる。装置1200を、無線ネットワーク制御装置(RNC)とともに使用することができる。SoCに加えて、処理回路1204の例は、マイクロプロセッシング回路、マイクロコントローラ、ディジタル信号処理回路(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、状態機械、ゲーテッドロジック、ディスクリートハードウェア回路、および本開示全体で説明される様々な機能性を実行するように構成された他の適切なハードウェアを含む。すなわち、装置1200内で利用される処理回路1204は、ストレージデバイス1205内でデータのインライン暗号化および暗号化解除を実行するためのプロセスなど、上で説明され、図2〜図12に示されたプロセス(および、図15〜図20に示され、下で議論されるプロセス)のうちの任意の1つまたは複数を実施するのに使用され得る。
【００４１】
図12の例では、処理システム1214を、全般的にバス1202によって表されるバスアーキテクチャを用いて実施することができる。バス1202は、処理システム1214の特定の応用例および全体的な設計制約に依存して、任意の個数の相互接続するバスおよびブリッジを含むことができる。バス1202は、1つまたは複数の処理回路を含む様々な回路(全般的に処理回路1204によって表される)、ストレージデバイス1205、および機械可読、プロセッサ可読、処理回路可読、またはコンピュータ可読の媒体(全般的に、非一時的機械可読媒体1206によって表される)をリンクする。バス1202は、タイミングソース、周辺機器、電圧レギュレータ、および電力管理回路などの様々な他の回路をもリンクすることができ、これらの他の回路は、当技術分野で周知であり、したがって、これ以上は説明しない。バスインターフェース1208は、バス1202とトランシーバ1210との間のインターフェースを提供する。トランシーバ1210は、伝送媒体を介して様々な他の装置と通信するための手段を提供する。装置の性質に依存して、ユーザインターフェース1212(たとえば、キーパッド、ディスプレイ、スピーカ、マイクロホン、ジョイスティック)を提供することもできる。
【００４２】
処理回路1204は、バス1202の管理と、機械可読媒体1206上に記憶されたソフトウェアの実行を含む全般的な処理との責任を負う。ソフトウェアは、処理回路1204によって実行される時に、処理システム1214に、任意の特定の装置について本明細書で説明される様々な機能を実行させる。機械可読媒体1206は、ソフトウェアを実行する時に処理回路1204によって操作されるデータを記憶するのにも使用され得る。
【００４３】
処理システム内の1つまたは複数の処理回路1204は、ソフトウェアまたはソフトウェアコンポーネントを実行することができる。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、または他のいずれとして呼ばれる場合であっても、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行のスレッド、手続き、関数、その他を意味するものとして幅広く解釈されなければならない。処理回路は、必要なタスクを実行することができる。コードセグメントは、手続き、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの何らかの組合せを表すことができる。コードセグメントを、情報、データ、引数、パラメータ、またはメモリ内容もしくはストレージ内容を渡し、かつ/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合することができる。情報、引数、パラメータ、データなどを、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む任意の適切な手段を介して渡し、転送し、または伝送することができる。
【００４４】
ソフトウェアは、機械可読媒体1206上に存在することができる。機械可読媒体1206は、非一時的機械可読媒体とすることができる。非一時的な処理回路可読、機械可読、またはコンピュータ可読の媒体は、たとえば、磁気ストレージデバイス(たとえば、ハードディスク、フロッピディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはディジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、カード、スティック、またはキードライブ)、RAM、ROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、リムーバブルディスク、ハードディスク、CD-ROM、ならびに機械またはコンピュータによってアクセスされ読み取られ得るソフトウェアおよび/または命令を記憶する任意の他の適切な媒体を含む。「機械可読媒体」、「コンピュータ可読媒体」、「処理回路可読媒体」、および/または「プロセッサ可読媒体」という用語は、ポータブルまたは固定式のストレージデバイス、光学ストレージデバイス、ならびに命令および/またはデータを記憶し、含み、または担持することのできる様々な他の媒体などの非一次的媒体を含むことができるが、これに限定されない。したがって、本明細書で説明される様々な方法を、「機械可読媒体」、「コンピュータ可読媒体」、「処理回路可読媒体」、および/または「プロセッサ可読媒体」内に記憶され、1つまたは複数の処理回路、機械、および/またはデバイスによって実行され得る命令および/またはデータによって完全にまたは部分的に実施することができる。機械可読媒体は、たとえば、搬送波、伝送線、およびコンピュータによってアクセスされ、読み取られ得るソフトウェアおよび/または命令を伝送するための任意の他の適切な媒体をも含むことができる。機械可読媒体1206は、処理システム1214内に、処理システム1214の外部に存在し、あるいは、処理システム1214を含む複数のエンティティにまたがって分散され得る。機械可読媒体1206を、コンピュータプログラム製品内で実施することができる。たとえば、コンピュータプログラム製品は、パッケージング材料内に機械可読媒体を含むことができる。当業者は、特定の応用例およびシステム全体に課せ
られる全体的な設計制約に依存して、本開示全体で提示される説明される機能性をどのようにして最もよく実施すべきかを認めるであろう。
【００４５】
たとえば、機械可読媒体1206は、処理回路1204によって実行された時に、処理回路に、ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから受け取らせ、ストレージデバイスに書込コマンドを送らせ、データに関連するパラメータをストレージデバイスから受け取らせ、パラメータに基づいて暗号化キーを生成させ、暗号化キーを使用してデータを暗号化させる、1つまたは複数の命令を有することができる。もう1つの例として、機械可読媒体1206は、処理回路1204によって実行された時に、処理回路に、ストレージデバイスからデータを入手する読取コマンドを、要求するホストソフトウェアコンポーネントから受け取らせ、ストレージデバイスに読取コマンドを送らせ、暗号化されたデータと暗号化されたデータに関連するパラメータとをストレージデバイスから受け取らせ、パラメータに基づいて暗号化解除キーを入手させ、暗号化解除キーを使用して暗号化されたデータを暗号化解除させる、1つまたは複数の命令を有することができる。
【００４６】
図面に示されたコンポーネント、ステップ、特徴、および/または機能のうちの1つまたは複数を、再配置し、かつ/または単一のコンポーネント、ステップ、特徴、または機能に組み合わせ、あるいは複数のコンポーネント、ステップ、または機能で実施することができる。追加の要素、コンポーネント、ステップ、および/または機能を、本開示から逸脱せずに追加することもできる。図に示す装置、デバイス、および/または構成要素は、図に記載した方法、特徴、またはステップのうちの1つまたは複数を実行するように構成され得る。また、本明細書で説明したアルゴリズムは、効率的にソフトウェアに実装されてもよく、かつ/またはハードウェアに組み込まれてもよい。
【００４７】
本明細書で開示される例に関連して説明される様々な例示的な論理ブロック、モジュール、回路、要素、および/またはコンポーネントを、汎用処理回路、ディジタル信号処理回路(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理コンポーネント、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、または本明細書で説明される機能を実行するように設計されたそれらの何らかの組合せを用いて実施しまたは実行することができる。汎用処理回路は、マイクロプロセッシング回路とすることができるが、代替案では、処理回路を、何らかの従来の処理回路、コントローラ、マイクロコントローラ、または状態機械とすることができる。処理回路を、コンピューティングコンポーネントの組合せ、たとえば、DSPとマイクロプロセッシング回路との組合せ、複数のマイクロプロセッシング回路、DSPコアに関連する1つもしくは複数のマイクロプロセッシング回路、または何らかの他のそのような構成として実施することもできる。
【００４８】
したがって、本開示の一態様では、図3および図12に示された処理回路300および/または1204を、図4、図5、図9、および/または図10(および/または下で議論される図15、図16、図17、図18、図19、および/または図20)で説明されるアルゴリズム、方法、および/またはステップを実行するように特に設計され、かつ/またはハードワイヤされた特殊化された処理回路(たとえば、ASIC)とすることができる。したがって、そのような特殊化された処理回路(たとえば、ASIC)を、図4、図5、図9、および/または図10(および/または下で議論される図15、図16、図17、図18、図19、および/または図20)で説明されるアルゴリズム、方法、および/またはステップを実行するための手段の一例とすることができる。機械可読記憶媒体は、特殊化された処理回路(たとえば、ASIC)によって実行された時に、その特殊化された処理回路に本明細書で説明されるアルゴリズム、方法、および/またはステップを実行させる命令を記憶することができる。
【００４９】
図13に、ストレージデバイス1205とともに使用するためのホストストレージコントローラ1301を有する処理回路1204の選択された例示的なコンポーネントを示す。具体的には、図13のホストストレージコントローラ1301は、ストレージデバイスにデータを書き込むための書込コマンドを、要求するホストソフトウェアコンポーネント(この図には図示せず)から入手するように動作可能であり、ストレージデバイスからデータを読み取るための読取コマンドを、要求するホストソフトウェアコンポーネントから入手するようにも動作可能である、読取/書込コマンド入力モジュール/回路1300を含む。ホストストレージコントローラ1301は、ストレージデバイス1205に読取コマンドおよび書込コマンドを送るように動作可能な読取/書込コマンド出力モジュール/回路1302と、LBAおよびブロックカウントまたは他の適切なパラメータなど、ストレージデバイスへ/から読み取られ/書き込まれるべきデータに関連する1つまたは複数のパラメータを入手するように動作可能なLBA/ブロックカウントパラメータ入力モジュール/回路1304とをも含む。ホストストレージコントローラ1301は、ストレージデバイスでの記憶のためにホストストレージコントローラを使用してデータを暗号化するように動作可能なインライン暗号化モジュール/回路1306と、ストレージデバイスから読み取られたデータを暗号化解除するように動作可能なインライン暗号化解除モジュール/回路1308とをも含む。さらに、ホストストレージコントローラ1301は、LBAまたはパラメータ入力モジュール/回路1304によって入手された他のパラメータに少なくとも部分的に基づいて暗号化/暗号化解除キーを入手するか他の形で生成するように動作可能なキー処理モジュール/回路を含む。
【００５０】
図13のストレージデバイス1205は、読み取られ/書き込まれるべき暗号化されたデータを示すホストストレージコントローラ1301からの読取コマンドおよび/または書込コマンドを受け取るように動作可能な読取/書込コマンド入力モジュール/回路1312を含む。LBA/ブロックカウントパラメータ出力モジュール/回路1314は、ホストストレージコントローラ1301内でのデータのインライン暗号化/暗号化解除を容易にするために、LBAおよびブロックカウントなど、読み取られ/書き込まれるべきデータに関連する1つまたは複数のパラメータを出力するように動作可能である。ストレージデバイス1205は、ホストストレージコントローラ1301から暗号化されたデータを(書込コマンドに関連して)受け取り、ホストストレージコントローラ1301に暗号化されたデータを(読取コマンドに関連して)出力するように動作可能な暗号化データ入出力モジュール/回路をも含む。暗号化データストレージユニット1318は、暗号化されたデータを記憶する。
【００５１】
図14に、図12の処理回路1204のホストストレージコントローラ1301などのホストストレージコントローラとともに使用するための機械可読、コンピュータ可読、または処理回路可読の媒体1206の選択された例示的な命令を示す。この図は、図12のデバイス1205などのストレージデバイスとともに使用するための機械可読、コンピュータ可読、または処理回路可読の媒体1401の選択された例示的な命令をも示す。短く言うと、図14の機械可読媒体1206は、図12のホストストレージコントローラ1301によって実行された時に、そのホストストレージコントローラにインライン暗号化/暗号化解除動作を制御させまたは実行させる様々な命令を含む。具体的には、読取/書込コマンド入力命令1400は、ホストストレージコントローラに、ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネント(この図には図示せず)から入手させるように動作可能であり、ホストストレージコントローラにストレージデバイスからデータを読み取る読取コマンドを要求するホストソフトウェアコンポーネントから入手させるように動作可能でもある。機械可読媒体1206は、ホストストレージコントローラに、読取コマンドおよび書込コマンドをストレージデバイス1205へ送らせるように動作可能な読取/書込コマンド出力命令1402と、ホストストレージコントローラに、LBAおよびブロックカウントなど、ストレージデバイスへ/から読み取られ/書き込まれるべきデータに関連する1つまたは複数のパラメータを入手させるように動作可能なLBA/ブロックカウントパラメータ入力命令1404とをも含む。機械可読媒体1206は、ホストストレージコントローラに、ストレージデバイスでの記憶のためにホストストレージコントローラを使用してデータを暗号化させるように動作可能なインライン暗号化命令1406と、ホストストレージコントローラに、ストレージデバイスから読み取られたデータを暗号化解除させるように動作可能なインライン暗号化解除命令1408とをも含む。さらに、機械可読媒体1206は、ホストストレージコントローラに、パラメータ入力命令1404の実行によって入手されるLBAまたは他のパラメータに少なくとも部分的に基づいて暗号化/暗号化解除キーを入手させまたは他の形で
生成させるように動作可能なキー処理命令を含む。
【００５２】
図12のストレージデバイスとともに使用するための図14の機械可読媒体1401は、読取/書込コマンド入力命令1412を含み、読取/書込コマンド入力命令1412は、ストレージデバイスの回路網によって実行された時に、ストレージデバイスに、読み取られ/書き込まれるべき暗号化されたデータを示す読取コマンドおよび/または書込コマンドを図12のホストストレージコントローラ1301から受け取らせる。LBA/ブロックカウントパラメータ出力命令1414は、ストレージデバイスに、ホストストレージコントローラ内でのデータのインライン暗号化/暗号化解除を容易にするために、LBAおよびブロックカウントなど、読み取られ/書き込まれるべきデータに関連する1つまたは複数のパラメータを出力させるように動作可能である。機械可読媒体1401は、ストレージデバイスに、ホストストレージコントローラから暗号化されたデータを(書込コマンドに関連して)受け取らせ、ホストストレージコントローラに暗号化されたデータを(読取コマンドに関連して)出力させるように動作可能な暗号化データ入出力命令をも含む。暗号化データストレージユニット1418は、暗号化されたデータを記憶する。
【００５３】
図15に、図12の処理回路1204のホストストレージコントローラ1301または書込動作中のデータのインライン暗号化のための他の適切に態勢の整ったデバイスによって実行され得る方法または手順1500を幅広く示し、要約する。ステップ1502では、ホストストレージコントローラが、ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから入手する。ステップ1504では、ホストストレージコントローラが、書込コマンドをストレージデバイスに送る。ステップ1506では、ホストストレージコントローラが、ストレージデバイスからデータに関連するパラメータを入手し、ここで、少なくともいくつかの例では、パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する。ステップ1508では、ホストストレージコントローラが、パラメータに基づいて暗号化キーを生成しまたは他の形で入手し、ステップ1510では、暗号化キーを使用してデータを暗号化する。ステップ1512では、ホストストレージコントローラが、暗号化されたデータをストレージデバイスに送る。
【００５４】
図16に、図12の処理回路1204のホストストレージコントローラ1301または読取動作中のデータのインライン暗号化解除のための他の適切に態勢の整ったデバイスによって実行され得る方法または手順1600を幅広く示し、要約する。ステップ1602では、ホストストレージコントローラが、ストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから入手する。ステップ1604では、ホストストレージコントローラが、読取コマンドをストレージデバイスに送る。ステップ1606では、ホストストレージコントローラが、ストレージデバイスから暗号化されたデータおよび暗号化されたデータに関連するパラメータを入手し、ここで、少なくともいくつかの例では、パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する。ステップ1608では、ホストストレージコントローラが、パラメータに基づいて暗号化解除キーを生成しまたは他の形で入手し、ステップ1610では、暗号化解除キーを使用して、暗号化されたデータを暗号化解除する。ステップ1612では、ホストストレージコントローラが、要求するホストソフトウェアコンポーネントに暗号化解除されたデータを提供しまたは「送る」。
【００５５】
図17に、図12のストレージデバイス1205または書込動作の一部として暗号化されたデータをホストストレージコントローラから受け取り、記憶するための他の適切に態勢の整ったデバイスによって実行され得る方法または手順1700を幅広く示し、要約する。ステップ1702では、ストレージデバイスが、ストレージデバイスに書き込まれるべきデータを示す書込コマンドをホストストレージコントローラから受け取る。ステップ1704では、ストレージデバイスが、ホストストレージコントローラによるデータのインライン暗号化を容易にするために、ホストストレージコントローラにデータに関連するパラメータを送り、ここで、少なくともいくつかの例では、パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する。ステップ1706では、ストレージデバイスが、ホストストレージコントローラからインライン暗号化されたデータを受け取り、ステップ1708では、ホストストレージコントローラから受け取られたインライン暗号化されたデータを記憶する。
【００５６】
図18に、図12のストレージデバイス1205または読取動作の一部として暗号化されたデータを取り出し、ホストストレージコントローラに送るための他の適切に態勢の整ったデバイスによって実行され得る方法または手順1800を幅広く示し、要約する。ステップ1802では、ストレージデバイスが、ストレージデバイスから読み取られるべき暗号化されたデータを示す読取コマンドをホストストレージコントローラから受け取る。ステップ1804では、ストレージデバイスが、暗号化されたデータを取り出す。ステップ1806では、ストレージデバイスが、ホストストレージコントローラによるデータのインライン暗号化解除を容易にするために、暗号化されたデータに関連するパラメータと一緒に暗号化されたデータをホストストレージコントローラに送り、ここで、少なくともいくつかの例では、パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する。
【００５７】
図19に、ホストストレージコントローラが、暗号化キーがそれから生成される前述のパラメータをストレージデバイスから受け取らない実施態様での使用のための、図12の処理回路1204のホストストレージコントローラ1301または書込動作中のデータのインライン暗号化のための他の適切に態勢の整ったデバイスによって実行され得る方法または手順1900を幅広く示し、要約する。ステップ1902では、ホストストレージコントローラが、ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから入手する。ステップ1904では、ホストストレージコントローラが、ストレージデバイスに書込コマンドを送る。ステップ1906では、ホストストレージコントローラが、ホストメモリからパラメータを入手し、ここで、パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する。ステップ1908では、ホストストレージコントローラが、パラメータに基づいて暗号化キーを生成しまたは他の形で入手し、ステップ1910では、暗号化キーを使用してデータを暗号化する。ステップ1912では、ホストストレージコントローラが、暗号化されたデータをストレージデバイスに送る。
【００５８】
図20に、ホストストレージコントローラが、暗号化解除キーがそれから生成される前述のパラメータをストレージデバイスから受け取らない実施態様での使用のための、図12の処理回路1204のホストストレージコントローラ1301または読取動作中のデータのインライン暗号化解除のための他の適切に態勢の整ったデバイスによって実行され得る方法または手順2000を幅広く示し、要約する。ステップ2002では、ホストストレージコントローラが、ストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから入手する。ステップ2004では、ホストストレージコントローラが、読取コマンドをストレージデバイスに送る。ステップ2006では、ホストストレージコントローラが、ストレージデバイスから暗号化されたデータを入手し、また、ホストメモリからパラメータを入手し、ここで、パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する。ステップ2008では、ホストストレージコントローラが、パラメータに基づいて暗号化解除キーを生成しまたは他の形で入手し、ステップ2010では、暗号化解除キーを使用して、暗号化されたデータを暗号化解除する。ステップ2012では、ホストストレージコントローラが、通常はデータをホストメモリに書き込むことによって、暗号化解除されたデータを、要求するホストソフトウェアコンポーネントに提供しまたは「送る」。
【００５９】
本開示の諸態様が、本明細書で、フローチャート、流れ図、構造図、またはブロック図として描かれるプロセスとして説明される場合があることに留意されたい。流れ図が、動作を順次プロセスとして説明する場合があるが、動作の多くを、並列にまたは同時に実行することができる。加えて、動作の順序を再配置することができる。プロセスは、その動作が完了した時に終了される。プロセスは、メソッド、関数、手続き、サブルーチン、サブプログラムなどに対応することができる。プロセスが関数に対応する時には、その終了は、呼び出す側の関数またはメイン関数への関数のリターンに対応する。
【００６０】
当業者は、本明細書で開示される諸態様に関連して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップを、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実施できることを、さらに了解するはずである。ハードウェアとソフトウェアとのこの相互交換可能性を明瞭に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、上では全般的にその機能性に関して説明された。そのような機能性が、ハードウェアまたはソフトウェアのどちらとして実施されるのかは、具体的な応用と、システム全体に課せられる設計制約とに依存する。
【００６１】
本明細書で開示される例に関連して説明される方法またはアルゴリズムを、ハードウェアで直接に、プロセッサによって実行可能なソフトウェアモジュールで、またはその両方の組合せで、処理ユニット、プログラミング命令、または他のディレクティブの形で実施することができ、単一のデバイス内に含めるか、複数のデバイスにまたがって分散させることができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で既知の任意の他の形の記憶媒体に存在することができる。プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、記憶媒体を、プロセッサに結合することができる。代替案では、記憶媒体を、プロセッサと一体とすることができる。
【００６２】
本明細書で説明される本発明の様々な特徴を、本発明から逸脱せずに異なるシステム内で実施することができる。上記の実施形態は例にすぎず、本発明を限定するものと解釈すべきではないことに留意されたい。実施形態の説明は、例示的なものであり、特許請求の範囲を限定するものではない。したがって、本技法を、他のタイプの装置にたやすく適用することができ、多数の代替案、修正形態、および変形形態が、当業者に明白である。
【符号の説明】
【００６３】
100  システムオンアチップ
101  アプリケーション処理回路
102  ソフトウェアコンポーネント
104  ホストストレージコントローラ
105  インライン暗号化/暗号化解除モジュール
106  外部ストレージデバイス
108  ストレージバス
110  ホストメモリ
112  メモリバス
202  アプリケーション処理回路
204  ホストストレージコントローラ
206  外部ストレージデバイス
208  書込コマンド
210  書込コマンド要求
212  LBA/ブロックカウント
218  暗号化されたデータ
220  読取コマンド
222  読取コマンド
224  暗号化されたデータおよびLBA/ブロックカウント
230  暗号化解除されたデータ
300  SoC処理回路
310  アプリケーション処理回路
312  CPUコア
313  ソフトウェアコンポーネント
318  ブートROM
320  周辺サブシステム
330  内部共有HWリソース
322  DSP
324  ハードウェア(HW)およびソフトウェア(SW)コンポーネント
326  ラジオ周波数(RF)コンポーネント
328  ブートROM
332  内部共有ストレージ
333  キー/パラメータストレージ要素、部分、またはコンポーネント
340  外部共有HWリソース
342  外部共有ストレージ
344  永久的もしくは半永久的データストレージ
350  ホストストレージコントローラ
351  暗号化/暗号化解除モジュール
400  インライン暗号化/書込動作
500  タイミング図/流れ図
502  ホストストレージコントローラ
504  オフチップストレージデバイス
506  コマンドUPIU
508  RTT UPIU
510  データアウトUPIU
512  RTT UPIU
514  データアウトUPIU
516  応答UPIU
600  メモリ空間
602  ホストメモリ空間
604  入出力(I/O)メモリ/レジスタ空間
606  UTPトランザクション要求リスト
608  KEYIDXを有するUTRD
610  UTPトランザクション要求コンポーネント
612  コマンドUPIU、応答UPIU、およびPRDTの各グループ
614  グループ
616  データバッファ
618  UTPタスク管理要求リスト
620  TM要求UPIU
622  UTP管理要求
624  ホストコントローラ能力
626  割込みおよびホスト状況インジケータ
628  UFS相互接続(UIC)コマンド
630  ベンダ固有値
700  UTRD
702  キーインデックス
800  RTT UPIU
804  LBA
806  ブロックカウント
900  インライン暗号化解除/読取動作
1000  タイミング図/流れ図
1002  ホストストレージコントローラ
1004  オフチップストレージデバイス
1006  コマンドUPIU
1008  UPIU内の1つまたは複数のデータ
1010  応答UPIU
1100  UPIU内の例示的なデータ
1104  LBA
1106  ブロックカウント
1108  行
1200  装置
1202  バス
1204  処理回路
1205  ストレージデバイス
1206  非一時的機械可読媒体
1208  バスインターフェース
1210  トランシーバ
1212  ユーザインターフェース
1214  処理システム
1300  読取/書込コマンド入力モジュール/回路
1301  ホストストレージコントローラ
1302  読取/書込コマンド出力モジュール/回路
1304  LBA/ブロックカウントパラメータ入力モジュール/回路
1306  インライン暗号化モジュール/回路
1308  インライン暗号化解除モジュール/回路
1312  読取/書込コマンド入力モジュール/回路
1314  LBA/ブロックカウントパラメータ出力モジュール/回路
1318  暗号化データストレージユニット
1400  読取/書込コマンド入力命令
1401  機械可読、コンピュータ可読、または処理回路可読の媒体
1402  読取/書込コマンド出力命令
1404  LBA/ブロックカウントパラメータ入力命令
1406  インライン暗号化命令
1408  インライン暗号化解除命令
1412  読取/書込コマンド入力命令
1414  LBA/ブロックカウントパラメータ出力命令
1418  暗号化データストレージユニット
1500  方法または手順
1600  方法または手順
1700  方法または手順
1800  方法または手順
1900  方法または手順
2000  方法または手順
【図１】
2016517241.tif 000003
【図２】
2016517241.tif 000004
【図３】
2016517241.tif 000005
【図４】
2016517241.tif 000006
【図５】
2016517241.tif 000007
【図６】
2016517241.tif 000008
【図７】
2016517241.tif 000009
【図８】
2016517241.tif 000010
【図９】
2016517241.tif 000011
【図１０】
2016517241.tif 000012
【図１１】
2016517241.tif 000013
【図１２】
2016517241.tif 000014
【図１３】
2016517241.tif 000015
【図１４】
2016517241.tif 000016
【図１５】
2016517241.tif 000017
【図１６】
2016517241.tif 000018
【図１７】
2016517241.tif 000019
【図１８】
2016517241.tif 000020
【図１９】
2016517241.tif 000021
【図２０】
2016517241.tif 000022
【手続補正書】
【提出日】平成27年5月23日(2015.5.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストストレージコントローラの外部のストレージデバイスへの書込動作中にデータを暗号化するために使用可能な、前記ホストストレージコントローラでの方法であって、
前記ホストストレージコントローラで、前記外部ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから入手するステップと、
前記ホストストレージコントローラから、前記外部ストレージデバイスに前記書込コマンドを送るステップと、
前記ホストストレージコントローラで、前記データに関連するパラメータを前記外部ストレージデバイスから入手するステップと、
前記ホストストレージコントローラで、前記パラメータに基づいて暗号化キーを生成するステップと、
前記ホストストレージコントローラで、前記暗号化キーを使用して前記データを暗号化するステップと
を含む、方法。
【請求項２】
前記暗号化されたデータを前記ホストストレージコントローラから前記ストレージデバイスに送るステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記データに関連する前記パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する、請求項1に記載の方法。
【請求項４】
前記データに関連する前記パラメータは、前記データを記憶するための論理ブロックアドレス(LBA)を含む、請求項3に記載の方法。
【請求項５】
前記データに関連する前記パラメータは、前記データ内のブロック数の表示をさらに含む、請求項3に記載の方法。
【請求項６】
前記データに関連する前記パラメータは、前記ストレージデバイスから、レディトゥートランスファ(RTT)要求データパケット内で受け取られる、請求項3に記載の方法。
【請求項７】
前記ストレージデバイスは、ユニバーサルフラッシュストレージ(UFS)デバイスであり、前記データに関連する前記パラメータは、RTT UFSプロトコル情報単位(UPIU)を含むデータパケット内で受け取られる、請求項6に記載の方法。
【請求項８】
個々の書込トランザクションに関連するキーインデックスを有する転送要求記述子を含む転送要求リストを維持するステップをさらに含む、請求項1に記載の方法。
【請求項９】
前記暗号化キーを生成するステップは、
前記ストレージデバイスから入手された前記パラメータから初期ベクトルを生成するステップと、
初期キーを入手するステップと、
前記初期キーおよび前記初期ベクトルから前記暗号化キーを生成するステップと
を含む、請求項1に記載の方法。
【請求項１０】
前記ホストストレージコントローラは、システムオンアチップ(SoC)のコンポーネントであり、前記ストレージデバイスは、前記SoCの外部のオフチップストレージデバイスであり、前記ホストストレージコントローラは、前記オフチップストレージデバイスでの記憶のために前記データのインラインデータ暗号化を実行する、請求項1に記載の方法。
【請求項１１】
ホストストレージコントローラの外部のストレージデバイスからの読取動作中にデータを暗号化解除するために使用可能な、前記ホストストレージコントローラでの方法であって、
前記ホストストレージコントローラで、前記外部ストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから入手するステップと、
前記ホストストレージコントローラから、前記外部ストレージデバイスに前記読取コマンドを送るステップと、
前記ホストストレージコントローラで、暗号化されたデータと前記暗号化されたデータに関連するパラメータとを前記外部ストレージデバイスから入手するステップと、
前記ホストストレージコントローラで、前記パラメータに基づいて暗号化解除キーを生成するステップと、
前記ホストストレージコントローラで、前記暗号化解除キーを使用して前記暗号化されたデータを暗号化解除するステップと
を含む、方法。
【請求項１２】
前記ホストストレージコントローラで、前記暗号化解除されたデータを、前記要求するホストソフトウェアコンポーネントに提供するステップをさらに含む、請求項11に記載の方法。
【請求項１３】
前記データに関連する前記パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する、請求項11に記載の方法。
【請求項１４】
前記暗号化されたデータに関連する前記パラメータは、前記データを読み取るための論理ブロックアドレス(LBA)を含む、請求項11に記載の方法。
【請求項１５】
前記暗号化されたデータに関連する前記パラメータは、前記暗号化されたデータ内のブロック数の表示を含む、請求項13に記載の方法。
【請求項１６】
前記暗号化されたデータに関連する前記パラメータは、前記ストレージデバイスから、プロトコル情報単位内で受け取られる、請求項13に記載の方法。
【請求項１７】
前記ストレージデバイスは、ユニバーサルフラッシュストレージ(UFS)デバイスであり、前記暗号化されたデータに関連する前記パラメータは、UFSプロトコル情報単位(UPIU)を含むデータパケット内で受け取られる、請求項16に記載の方法。
【請求項１８】
個々の読取トランザクションに関連するキーインデックスを有する転送要求記述子を含む転送要求リストを維持するステップをさらに含む、請求項15に記載の方法。
【請求項１９】
前記暗号化解除キーを生成するステップは、
前記ストレージデバイスから入手された前記パラメータから初期ベクトルを生成するステップと、
初期キーを入手するステップと、
前記初期キーおよび前記初期ベクトルから前記暗号化解除キーを生成するステップと
を含む、請求項11に記載の方法。
【請求項２０】
前記ホストストレージコントローラは、システムオンアチップ(SoC)のコンポーネントであり、前記ストレージデバイスは、前記SoCの外部のオフチップストレージデバイスであり、前記ホストストレージコントローラは、前記オフチップストレージデバイスから受け取られた暗号化されたデータのインラインデータ暗号化解除を実行する、請求項11に記載の方法。
【請求項２１】
データを記憶するためのストレージデバイスと、
前記ストレージデバイスに結合された処理回路であって、ホストストレージコントローラを有し、前記ホストストレージコントローラは、
前記ホストストレージコントローラで、前記外部ストレージデバイスにデータを書き込む書込コマンドを、要求するホストソフトウェアコンポーネントから入手し、
前記ホストストレージコントローラから、前記外部ストレージデバイスに前記書込コマンドを送り、
前記ホストストレージコントローラで、前記データに関連するパラメータを前記外部ストレージデバイスから入手し、
前記ホストストレージコントローラで、前記パラメータに基づいて暗号化キーを生成し、
前記ホストストレージコントローラで、前記暗号化キーを使用して前記データを暗号化するように構成される、処理回路と
を含む、デバイス。
【請求項２２】
前記ホストストレージコントローラは、前記暗号化されたデータを前記ストレージデバイスに送るようにさらに構成される、請求項21に記載のデバイス。
【請求項２３】
前記データに関連する前記パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する、請求項21に記載のデバイス。
【請求項２４】
前記データに関連する前記パラメータは、前記データ内のブロック数の表示をさらに含む、請求項23に記載のデバイス。
【請求項２５】
前記ホストストレージコントローラは、システムオンアチップ(SoC)のコンポーネントであり、前記ストレージデバイスは、前記SoCの外部のオフチップストレージデバイスであり、前記ホストストレージコントローラは、前記オフチップストレージデバイスでの記憶のために前記データのインラインデータ暗号化を実行するように構成される、請求項21に記載のデバイス。
【請求項２６】
データを記憶するためのストレージデバイスと、
前記ストレージデバイスに結合された処理回路であって、ホストストレージコントローラを有し、前記ストレージデバイスは、前記ホストストレージコントローラの外部であり、前記ホストストレージコントローラは、
前記ホストストレージコントローラで、前記外部ストレージデバイスからデータを読み取る読取コマンドを、要求するホストソフトウェアコンポーネントから入手し、
前記ホストストレージコントローラから前記外部ストレージデバイスに前記読取コマンドを送り、
前記ホストストレージコントローラで、暗号化されたデータと前記暗号化されたデータに関連するパラメータとを前記外部ストレージデバイスから入手し、
前記ホストストレージコントローラで、前記パラメータに基づいて暗号化解除キーを生成し、
前記ホストストレージコントローラで、前記暗号化解除キーを使用して前記暗号化されたデータを暗号化解除するように構成される、処理回路と
を含む、デバイス。
【請求項２７】
前記ホストストレージコントローラは、前記暗号化解除されたデータを、前記要求するホストソフトウェアコンポーネントに提供するようにさらに構成される、請求項26に記載のデバイス。
【請求項２８】
前記データに関連する前記パラメータは、データの特定のブロックに関する読取動作と書込動作とについて同一であるが、データのブロックごとに異なる識別子を提供する、請求項26に記載のデバイス。
【請求項２９】
前記暗号化されたデータに関連する前記パラメータは、前記暗号化されたデータ内のブロック数の表示をさらに含む、請求項28に記載のデバイス。
【請求項３０】
前記ホストストレージコントローラは、システムオンアチップ(SoC)のコンポーネントであり、前記ストレージデバイスは、前記SoCの外部のオフチップストレージデバイスであり、前記ホストストレージコントローラは、前記オフチップストレージデバイスから受け取られた暗号化されたデータのインラインデータ暗号化解除を実行するように構成される、請求項26に記載のデバイス。
【国際調査報告】
2016517241.tif 000023
2016517241.tif 000024