特許第5721901号(P5721901)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マカフィー, インコーポレイテッドの特許一覧

特許5721901ウェアレベリングを有するメモリ装置の暗号化
<>
  • 特許5721901-ウェアレベリングを有するメモリ装置の暗号化 図000002
  • 特許5721901-ウェアレベリングを有するメモリ装置の暗号化 図000003
  • 特許5721901-ウェアレベリングを有するメモリ装置の暗号化 図000004
  • 特許5721901-ウェアレベリングを有するメモリ装置の暗号化 図000005
  • 特許5721901-ウェアレベリングを有するメモリ装置の暗号化 図000006
  • 特許5721901-ウェアレベリングを有するメモリ装置の暗号化 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5721901
(24)【登録日】2015年4月3日
(45)【発行日】2015年5月20日
(54)【発明の名称】ウェアレベリングを有するメモリ装置の暗号化
(51)【国際特許分類】
   G06F 12/16 20060101AFI20150430BHJP
   G06F 12/14 20060101ALI20150430BHJP
   G06F 21/60 20130101ALI20150430BHJP
   G06F 21/79 20130101ALI20150430BHJP
   G11C 16/02 20060101ALI20150430BHJP
【FI】
   G06F12/16 310A
   G06F12/14 510D
   G06F21/60 320
   G06F21/79
   G11C17/00 601C
【請求項の数】18
【全頁数】14
(21)【出願番号】特願2014-503983(P2014-503983)
(86)(22)【出願日】2012年4月5日
(65)【公表番号】特表2014-516438(P2014-516438A)
(43)【公表日】2014年7月10日
(86)【国際出願番号】US2012032330
(87)【国際公開番号】WO2012138865
(87)【国際公開日】20121011
【審査請求日】2013年10月4日
(31)【優先権主張番号】13/079,889
(32)【優先日】2011年4月5日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】505418238
【氏名又は名称】マカフィー, インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ハント,サイモン
【審査官】 滝谷 亮一
(56)【参考文献】
【文献】 特開2009−015357(JP,A)
【文献】 国際公開第2008/090928(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/16
G06F 12/14
G06F 21/62
G11C 16/02
(57)【特許請求の範囲】
【請求項1】
データ処理装置により実行される方法であって、前記方法は、
コンピュータにより、メモリ装置のアドレスマップにアクセスするステップであって、前記アドレスマップは、前記メモリ装置の第1のメモリ位置と第2のメモリ位置とを参照し、前記第1のメモリ位置は前記メモリ装置に対するフルディスク暗号化動作により暗号化されるべきデータを格納する、ステップと、
前記コンピュータにより、前記第2の位置に対して暗号化動作を実行しないで、前記第2のメモリ位置を暗号化されていると指定するステップと、
前記コンピュータにより、前記メモリ装置の暗号化されていると未だ指定されていないメモリ位置に格納されたデータのみを暗号化するステップであって、該暗号化の後に、前記第1のメモリ位置と前記第2のメモリ位置のデータはディスク暗号化されていると指定される、ステップと、
を有する方法。
【請求項2】
前記第2のメモリ位置を暗号化されていると指定するステップは、
連続する第2のメモリ位置の1又は複数のセットを決定するステップと、
連続する第2のメモリ位置の各セットについて、
対応する位置範囲を決定するステップであって、前記対応する位置範囲は、開始論理アドレスと終了論理アドレスを指定する、ステップと、
前記対応する位置範囲を暗号化されていると指定するステップと、
を有する、請求項1に記載の方法。
【請求項3】
メモリ装置の前記論理アドレスマップは、ディスクドライブの論理アドレスを表す、請求項1又は2に記載の方法。
【請求項4】
前記メモリ装置は、固体メモリ装置であり、物理アドレスマップを含み、前記物理アドレスマップは前記論理アドレスを物理アドレスにマッピングする、請求項1乃至3のいずれか一項に記載の方法。
【請求項5】
前記固体メモリ装置は、フラッシュメモリ装置である、請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
前記データを暗号化した後に、前記コンピュータにより、メモリ装置の論理アドレスマップにアクセスするステップと、
前記コンピュータにより、前記第2のメモリ位置を復号化されているとして指定するステップと、
前記コンピュータにより、前記メモリ装置の前記第1のメモリ位置に格納されたデータのみを復号化するステップであって、前記第1のメモリ位置及び前記第2のメモリ位置のデータは復号化されているとして指定される、ステップと、
を更に有する請求項1乃至のいずれか一項に記載の方法。
【請求項7】
前記第2のメモリ位置を暗号化されていると指定するステップは、リブート環境から前記第2のメモリ位置を暗号化されていると指定するステップを有し、
前記メモリ装置の暗号化されていると未だ指定されていないメモリ位置に格納されたデータのみを暗号化するステップは、ホストオペレーティングシステム環境から、前記メモリ装置の暗号化されていると未だ指定されていないメモリ位置に格納されたデータのみを暗号化するステップを有する、
請求項1乃至のいずれか一項に記載の方法。
【請求項8】
前記アドレスマップにアクセスするステップは、前記メモリ装置の論理アドレスマップにアクセスするステップを有し、前記論理アドレスマップは、前記メモリ装置の第1のメモリ位置及び第2のメモリ位置を論理アドレスにより参照し、前記第1及び第2のメモリ位置は、マッピングテーブルで前記論理アドレスにマッピングされた物理アドレスによりアドレス指定される物理メモリ位置に対応し、
前記第2のメモリ位置を暗号化されていると指定するステップは、前記第2の論理メモリ位置を暗号化されていると指定するステップを有する、
請求項1乃至のいずれか一項に記載の方法。
【請求項9】
前記第2のメモリ位置は、空きメモリ位置を有する、請求項1乃至のいずれか一項に記載の方法。
【請求項10】
命令を格納している少なくとも1つの機械アクセス可能記憶媒体であって、前記命令は、機械により実行されると前記機械に、
前記メモリ装置のアドレスマップにアクセスするステップであって、前記アドレスマップは、前記メモリ装置の第1のメモリ位置と第2のメモリ位置とを参照し、前記第1のメモリ位置は前記メモリ装置に対するフルディスク暗号化動作により暗号化されるべきデータを格納する、ステップと、
前記第2の位置に対して暗号化動作を実行しないで、前記第2のメモリ位置を暗号化されていると指定するステップと、
前記メモリ装置の暗号化されていると未だ指定されていないメモリ位置に格納されたデータのみを暗号化するステップであって、該暗号化の後に、前記第1のメモリ位置と前記第2のメモリ位置のデータはディスク暗号化されていると指定される、ステップと、
を含む動作を実行させる、記憶媒体。
【請求項11】
前記第2のメモリ位置を暗号化されていると指定するステップは、
連続する第2のメモリ位置の1又は複数のセットを決定するステップと、
連続する第2のメモリ位置の各セットについて、
対応する位置範囲を決定するステップであって、前記対応する位置範囲は、開始論理アドレスと終了論理アドレスを指定する、ステップと、
前記対応する位置範囲を暗号化されていると指定するステップと、
を有する、請求項10に記載の記憶媒体。
【請求項12】
メモリ装置の前記論理アドレスマップは、ディスクドライブの論理アドレスを表す、請求項10又は11に記載の記憶媒体。
【請求項13】
前記メモリ装置は、固体メモリ装置であり、物理アドレスマップを含み、前記物理アドレスマップは前記論理アドレスを物理アドレスにマッピングする、請求項10乃至12のいずれか一項に記載の記憶媒体。
【請求項14】
前記固体メモリ装置は、フラッシュメモリ装置である、請求項10乃至13のいずれか一項に記載の記憶媒体。
【請求項15】
前記命令は、実行されると前記機械に、さらに、
前記データを暗号化した後に、メモリ装置の論理アドレスマップにアクセスするステップと、
前記第2のメモリ位置を復号化されているとして指定するステップと、
前記メモリ装置の前記第1のメモリ位置に格納されたデータのみを復号化するステップであって、前記第1のメモリ位置及び前記第2のメモリ位置のデータは復号化されているとして指定される、ステップと、
を含む動作を更に実行させる、請求項10乃至14のいずれか一項に記載の記憶媒体。
【請求項16】
前記第2のメモリ位置を暗号化されていると指定するステップは、リブート環境から前記第2のメモリ位置を暗号化されていると指定するステップを有し、
前記メモリ装置の暗号化されていると未だ指定されていないメモリ位置に格納されたデータのみを暗号化するステップは、ホストオペレーティングシステム環境から、前記メモリ装置の暗号化されていると未だ指定されていないメモリ位置に格納されたデータのみを暗号化するステップを有する、
請求項10乃至15のいずれか一項に記載の記憶媒体。
【請求項17】
前記アドレスマップにアクセスするステップは、前記メモリ装置の論理アドレスマップにアクセスするステップを有し、前記論理アドレスマップは、前記メモリ装置の第1のメモリ位置及び第2のメモリ位置を論理アドレスにより参照し、前記第1及び第2のメモリ位置は、マッピングテーブルで前記論理アドレスにマッピングされた物理アドレスによりアドレス指定される物理メモリ位置に対応し、
前記第2のメモリ位置を暗号化されていると指定するステップは、前記第2の論理メモリ位置を暗号化されていると指定するステップを有する、
請求項10乃至16のいずれか一項に記載の記憶媒体。
【請求項18】
モリ装置のアドレスマップにアクセスする手段であって、前記アドレスマップは、前記メモリ装置の第1のメモリ位置と第2のメモリ位置とを参照し、前記第1のメモリ位置は前記メモリ装置に対するフルディスク暗号化動作により暗号化されるべきデータを格納する、手段と、
前記第2の位置に対して暗号化動作を実行しないで、前記第2のメモリ位置を暗号化されていると指定する手段と、
前記メモリ装置の暗号化されていると未だ指定されていないメモリ位置に格納されたデータのみを暗号化するステップであって、該暗号化の後に、前記第1のメモリ位置と前記第2のメモリ位置のデータはディスク暗号化されていると指定される、手段と、
を含むシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本願明細書は、暗号化に関する。
【背景技術】
【0002】
フルディスク暗号化は、ハードディスクドライブにある全てのデータを暗号化する技術である。多くのフィアルシステムでは、ハードディスクドライブからのデータの削除は、実際には、ハードディスクドライブからデータを削除していない。代わりに、該データにより占有されていたメモリ位置が、未使用としてマークされ、実際のデータは残ったままである。したがって、フルディスク暗号化技術は、ハードディスクドライブの使用及び未使用部分の両方を暗号化して、暗号化されていないデータが残されないようにする。
【0003】
ハードドライブへのデータの書き込みは、物理的記憶媒体に比べて相対的に非破壊処理である。つまり、データは、記憶媒体の劣化を伴わずに、非常に多くの回数、ハードドライブのメモリ位置に書き込むことができる。しかしながら、幾つかの種類のコンピュータ記憶装置は、ハードドライブに比べてリード及びライト動作の観点から相対的に限られた寿命しか有しない。固体ドライブ及びUSBフラッシュドライブは、メモリセルがプログラミング及び消去の繰り返しにより最終的に消耗する消去可能なコンピュータ記憶装置の例である。このようなメモリ装置の全体的寿命を延ばすために、ブロック又はページのようなメモリ装置のアドレス可能セクションは、ウェアレベリングと同じようなレートでプログラミング及び/又は消去できる。ウェアレベリングは、メモリ装置のメモリセルが等しく損耗し、例えばメモリセルのプログラミング及び/又は消去がメモリ装置の寿命に渡って全てのメモリセルで同様のレートで生じる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
フルディスク暗号化は、メモリセルの使用及び未使用部分の両方を暗号化し、暗号化されていないデータが存在しないようにするので、フルディスク暗号化は、固体ドライブの経時劣化を早め、ウェアレベリング動作のために使用されるウェアレベリングテーブルの拡大を早めてしまう。これは、記憶装置の寿命を不要に短縮し、リード及びライトアクセス回数を減少させてしまう。
【課題を解決するための手段】
【0005】
概して、本願明細書に記載する主題の1つの新規な態様は、方法により実施され得る。前記方法は、コンピュータにより、メモリ装置のアドレスマップにアクセスするステップであって、前記アドレスマップは、前記メモリ装置の第1のメモリ位置と第2のメモリ位置とを参照し、前記第1のメモリ位置は前記メモリ装置に対するフルディスク暗号化動作により暗号化されるべきデータを格納する、ステップと、前記コンピュータにより、前記第2の位置に対して暗号化動作を実行しないで、前記第2のメモリ位置を暗号化されていると指定するステップと、前記コンピュータにより、前記メモリ装置の前記第1のメモリ位置に格納されたデータのみを暗号化するステップであって、前記第1のメモリ位置と前記第2のメモリ位置のデータはディスク暗号化されていると指定される、ステップと、を有する。上述の態様の他の実施形態は、対応するシステム、装置及び上記方法の動作を実行するよう構成されコンピュータ記憶装置上にエンコードされたコンピュータプログラムを含む。
【0006】
本願明細書に記載する主題の特定の実施形態は、以下の利点のうちの1又は複数を実現するために実施され得る。空きメモリ位置を暗号化しないことにより、その位置のプログラミングを回避する。それにより、その位置に対するリード及びライトサイクルの回数を低減し、さらには、ウェアテーブルの不要な拡張を回避する。また、これは、ウェアテーブルが複雑性の点で不要に拡張されないので、全ての位置がフルディスク暗号化によりプログラミングされている固体メモリ装置に比べて、リード及びライトのときの性能を向上できる。
【0007】
本願明細書に記載する主題の1又は複数の実施形態の詳細は、添付の図面及び以下の説明で説明される。主題の他の特徴、態様及び利点は、説明、図面及び請求の範囲から明らかになる。
【図面の簡単な説明】
【0008】
図1】固体ドライブにおける論理メモリアドレスの物理メモリアドレスへのマッピング例のブロック図である。
図2】ウェアレベリングを実施するメモリ装置の暗号化例のブロック図である。
図3】ウェアレベリングを有するメモリ装置のデータを暗号化する処理例のフロー図である。
図4】ウェアレベリングを有するメモリ装置のデータを暗号化する別の処理例のフロー図である。
図5】ウェアレベリングを有するメモリ装置のデータを復号化する処理例のフロー図である。
図6図1−5に関して説明される処理及びシステムを実施するために用いられ得る例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0009】
種々の図面を通じて同様の参照符号及び記号は同様の要素を示す。
【0010】
図1は、固体ドライブメモリ装置130における論理メモリアドレスの物理メモリアドレスへのマッピング例のブロック図である。メモリ装置130は、固体メモリ装置、例えばフラッシュドライブを有する。論理アレイのような論理−物理マッピング102は、論理メモリ位置をメモリ装置130内の物理的位置にマッピングする。例えば、オペレーティングシステムは、ハードドライブの論理メモリ位置にアクセスするよう構成され得る。例えば、論理的位置は、使用されるアドレス方式に依存して、512バイト又は4096バイトのブロックのような隣接論理ブロックのセットとしてアドレス指定される。しかしながら、メモリ装置130は、例えばNOR又はNANDフラッシュメモリであっても良く、メモリ装置130の物理的トランジスタアレイアーキテクチャによって、異なるアドレス方式を実装する。したがって、論理−物理マッピング102は、ハードディスク表面110の論理アドレスをメモリ装置130の物理アドレスにマッピングする。
【0011】
多くのハードディスクドライブアーキテクチャでは、データは、格納されるとき、同じ位置に再書き込みされ得る。ハードディスクドライブの磁気媒体は、メモリ装置130のトランジスタと比べてより多くのリード及びライトサイクルに損傷することなく耐えられるので、ウェアレベリングは、論理−物理マッピング102と共に、メモリ装置130内の位置を通じて均等に、プログラミング及び消去動作を分配するために用いられる。一般に、ウェアレベリングは、メモリ装置内の物理メモリ位置の間で書き込み動作を均一に分布させることにより、固体メモリ装置の寿命を延ばす技術である。
【0012】
簡易なウェアレベリング動作は、論理−物理マッピング102に反映される。例えば、メモリ装置が、それぞれデータ105、110、115により表される3個のファイルを格納すると仮定する。説明を簡単にするため、データは、論理アドレス及び物理アドレスの両方により定められる連続した位置に格納される。第1のファイルのデータ105は、第1の連続論理メモリ位置セットに格納される。第1の連続論理メモリ位置セットは、メモリ位置130内の第1の連続物理メモリ位置セットに対応する。第2及び第3のファイルのデータ110及び115は、連続論理メモリ位置に格納される。しかしながら、第1のファイルのデータ110は、メモリ装置130内の第1の連続物理メモリ位置セットに格納され、第2のファイルのデータ115は、メモリ装置130内の第2の連続物理メモリ位置セットに格納される。
【0013】
ポインタ120は、ライト動作中にデータを格納するために用いられるメモリ装置130内の次の位置(例えば、メモリ位置、メモリブロック)を指すために用いられる。ポインタ120及びマッピング102は、メモリ装置130と関連するメモリ制御ロジック112により制御される。両者は、一つには、ウェアレベリング動作を達成するために用いられる。
【0014】
第2のファイルのデータがユーザにより更新され、第2のファイルのデータ115の論理メモリ位置は変わらないと仮定する。しかしながら、データ115を格納するために用いられる物理メモリ位置は変更される。例えば、ファイルが約20メガバイトのサイズであると仮定する。更新されたデータ115は、メモリ装置130の上の図のポインタ120の位置から、メモリ装置130に書き込まれる。書き込み動作の終わりに、ポインタ120は、前のポインタ位置からデータ115の20MBを格納するために必要な量だけ進められ、ファントムブロック116により示されるメモリ位置に前に格納されていた変更されたデータ115は、ファントムブロック116の終わりとポインタ120との間の範囲にある位置に保存される。
【0015】
別の一般的に用いられる処理及びコンピュータ装置は、フルディスク暗号化である。フルディスク暗号化は、ハードディスクドライブの全てのメモリ位置を暗号化する。幾つかのフルディスク暗号化技術では、マスタブートレコードが暗号化されずに残される。しかしながら、幾つかの他のフルディスク暗号化技術は、マスタブートレコードも暗号化できる。実際のハードディスクドライブでは、ファイルが削除されるとき、実際の基礎データは、ハードディスクドライブのメモリ位置に格納されたままである。したがって、フルディスク暗号化は、消去されていないファイルに格納されたデータ、並びに削除されたファイルのデータの一部及びハードディスクドライブに格納された他のデータの両方へのアクセスを禁止するために用いられる。
【0016】
フルディスク暗号化はハードディスク全体を暗号化するので、フルディスク暗号化を使用すると、論理アドレスにより定められる各位置は、暗号化データを書き込まれる。したがって、論理ハードドライブ全体のこの暗号化の結果、メモリ装置130のメモリ位置のほぼ全部がマッピングされ及び使用される。これは、メモリ装置130内の各メモリ位置が経験するプログラミングサイクルの数を劇的に増大させ、したがって、メモリ装置130の経時劣化を早め、及び/又はリード及びライト動作回数に関する性能を劣化させ得る進行した状態へ論理−物理マッピング102を進めてしまう。
【0017】
幾つかの実装では、メモリ装置130は、データがメモリ装置内の他の位置に格納されるとき、元の位置にある残存データを消去する「フラッシング」動作を実施し得る。例えば、ファントムブロック116により示されるような、始めにデータ115を格納していたメモリ位置は、データ115が新しい位置に保存された後に消去される。したがって、ファントムブロック116により示されるメモリ位置は、データ115が保存された後に空になる(例えば、全ての値が論理0になり、又は全ての値が論理1になる)。
【0018】
したがって、データが格納されていない装置130の実際の物理メモリ位置のデータを暗号化するために如何なる動作(practical)も必要はない。したがって、装置ロジック112は、フルディスク暗号化処理中のメモリ装置130に対するプログラミング動作の量を削減するウェアレベリング技術を実施できる。
【0019】
他の実装では、メモリ装置130は、フラッシング動作を実施しなくても良い。したがって、残存データは、幾つかのメモリ位置に保持されても良い。しかしながら、これらの物理メモリ位置は、もはや、データが格納される論理位置として論理的にマッピングされないので、妥協の危険は比較的小さい。したがって、残存データを格納している装置130の実際の物理メモリ位置のデータを暗号化することは、スキップできる。またもや、装置ロジック112は、フルディスク暗号化処理中のメモリ装置130に対するプログラミング動作の量を削減するウェアレベリング技術を実施できる。
【0020】
図2は、ウェアレベリングを実施するメモリ装置の暗号化例のブロック図である。前述のように、フルディスク暗号化は、ハードディスク全体を暗号化し、ハードディスクの全データを保護する。しかしながら、ハードディスクと異なり、メモリ装置は、データ105、110、115を格納するために用いられる位置以外の位置にデータを格納しない(或いは、代替で、これらの他の位置に格納されたデータは、データを格納する論理位置に論理的にマッピングされない)。したがって、メモリ装置130は、フルディスク暗号化の目標を実質的に達成するために、データ105、11、115を暗号化する必要があるだけである。
【0021】
図3を参照して、メモリ装置130のデータ105、11、115を暗号化する処理の一例を説明する。図3は、ウェアレベリングを有するメモリ装置のデータを暗号化する例示的な処理300のフロー図である。この処理は、コンピュータ装置に格納されるソフトウェアにより実施できる。図3の限定の一例は、処理は、プリブート及びポストブート環境の両方で生じる。本願明細書で用いられるように、プリブート環境は、主オペレーティングシステムをブートする前のコンピュータ装置上の環境である。
【0022】
処理300は、プリブート環境のインスタンスを作成する(302)。例えば、コンピュータで動作するプログラムは、オペレーティングシステムをリブートさせ、コンピュータにプリブート環境で以下のステップの幾つかを実行させるフラグを設定させても良い。
【0023】
処理300は、復号化の初期状態を有するボリュームの暗号化を示すマップを生成する(304)。例えば、処理300は、装置130の論理−物理マッピング102にアクセスし、全ての論理位置、したがって全ての物理位置を暗号化されていないとして指定しても良い。
【0024】
処理300は、空きメモリ位置を識別する(306)。空きメモリ位置は、データを格納するために利用可能な位置である。例えば、処理300は、空きメモリ位置として割り当てられていないメモリ位置であると示される、ディスク表面110の図の論理位置を識別しても良い。これらの論理位置は、データを格納するために利用可能であると示される、メモリ装置130内の物理位置(つまり、空き位置、又はデータが別の位置に書き込まれた後にデータが未だ格納されていない位置)に対応する。
【0025】
処理300は、空きメモリ位置を暗号化されているとして指定する(310)。例えば、空きとして指定される論理位置は、図2のディスク表面110の図における「UE->E」動作により示されるように、暗号化されているとしても指定される。割り当ては、各未使用セクタにより詳細に記述されても良く、又は幾つかの実装では、未使用ブロックに渡る範囲により未使用空間の連続ブロックを詳細に記述しても良い。位置は、実際の暗号化動作を実行せずに、暗号化されているとして指定される。
【0026】
未使用範囲は、それらが対応するメモリ位置に格納されたデータを有しないので、ホストオペレーティングシステムはそれらを読み出そうとせず、それらに格納されたデータは値を有しないだろう(例えば、空き位置又は記憶のために利用可能な位置である)。範囲が暗号化されていることを示すだけで、ホストオペレーティングシステムの暗号化処理は、これらの位置を暗号化しない。これは、ウェアレベリングテーブルの増大を防ぎ、メモリ装置130内の実際の物理メモリ位置の不要なプログラミングを防ぐ。
【0027】
処理300は、プリブート環境からホストオペレーティングシステム環境へブートする(312)。例えば、処理が、空きメモリ位置を暗号化されていると指定するときに、該空きメモリ位置の識別を終了した後に、処理300は、コンピュータ装置に、ホストオペレーティングシステムへとブートさせる。
【0028】
処理300は、暗号化されていると指定されていないメモリ位置を暗号化する(314)。例えば、ホストオペレーティングシステムで動作する暗号化処理は、空きメモリ位置の暗号化を示すマップにアクセスする。したがって、これらの位置は暗号化されない。代わりに、暗号化されている位置のみが、実際のデータを格納しているとして示される位置である。図2の例では、実際のデータを格納している位置は、データ105、110、115の記憶に対応する論理メモリ位置である。暗号化処理中、データ105、110、115は暗号化され、暗号化データ105’、110’、115’を生成する。
【0029】
暗号化データは、ポインタ120の位置から書き込まれる。例えば、メモリ装置130は100GBの固体ドライブであり、ポインタは概ね50GBの位置にある物理メモリ位置を参照していたと仮定する。また、データ105、110、115は全部で25GBであると仮定する。フルディスク暗号化の結果として、ポインタは、約75GBの位置へ進められる(つまり、暗号化データ105’、110’、115’のサイズに対応する25GBだけ進められる)。
【0030】
上述の例は、3個の連続するデータブロックに関して説明した。実際には、ポインタ120は、メモリ装置の全てのメモリ位置130を通じて1回以上循環され、メモリ装置130の物理位置内で部分的に細分化されたファイルを生じ得る。とにかく、空きメモリ位置を暗号化されているとして指定するマップを生成する同じ処理は、ファイルがメモリ装置130内で細分化されるときに適用される。このような状況では、暗号化データは、図2に示すような連続ブロックを形成しないかも知れない。しかし、ウェアレベリングテーブルの拡張、及びメモリ装置130内の物理メモリ位置に対する不要なリード及びライト動作は、依然として低減されるだろう。
【0031】
図4は、ウェアレベリングを有するメモリ装置のデータを暗号化する別の例示的な処理400のフロー図である。処理400は処理300と異なり、処理400では、プリブート環境とポストブート環境との間で区分されるが、必須ではない。例えば、処理400を実施するコンピュータ装置は固体ドライブを備えると仮定する。オペレーティングシステム及びプログラムがディスク表面110及び論理−物理マッピング120に依存するアドレス指定処理を実施する間、データはコンピュータに格納され得る。これは、フルディスク暗号化処理中に、空きメモリ位置が暗号化されているとして自動的に指定できることを示す。
【0032】
処理400は、メモリ装置の第1及び第2の位置を参照するメモリマップにアクセスする(402)。第1のメモリ位置は、メモリ装置に対するフルディスク暗号化動作により暗号化されるべきデータを格納する。例えば、第1のメモリ位置は、論理メモリ位置、したがってデータ105、110、115を格納するために用いられる物理メモリ位置に対応する。第2のメモリ位置は、ライト動作のために利用可能なメモリ位置、例えばメモリ装置130内の空きメモリ位置又は残存データを格納するメモリ装置130内の位置に対応する。
【0033】
処理400は、第2のメモリ位置を暗号化されているとして指定する(404)。例えば、空きとして指定される論理位置は、ディスク表面110の図における「UE->E」動作により示されるように、暗号化されているとしても指定される。この指定は、実際の暗号化動作の使用を含まない。
【0034】
処理400は、メモリ装置の第1のメモリ位置に格納されたデータのみを暗号化する(406)。こうすることにより、第1のメモリ位置及び第2のメモリ位置のデータは、ディスク暗号化されていると指定される。
【0035】
処理400は、メモリ装置全体を暗号化されているとして指定する(408)。例えば、処理400は、メモリ装置130全体が暗号化されていると指定することにより、フルディスク暗号化動作を完了する。
【0036】
その後、データは、メモリ装置130から読み出され、ランダムアクセスメモリ内で復号化され得る。これは通常動作の一部である。同様に、データは、メモリ装置130に書き込まれる前に、ランダムアクセスメモリ内で暗号化され得る。
【0037】
図5は、ウェアレベリングを有するメモリ装置のデータを復号化する例示的な処理500のフロー図である。処理500は、処理300及び400と同じ目的を有する。つまり、ウェアレベリングテーブルの拡張を低減し、及びメモリ装置130の物理位置の不要なプログラミング動作の回数を低減する。
【0038】
処理500は、メモリ装置の第1及び第2の位置を参照するメモリマップにアクセスする(502)。第1のメモリ位置は、メモリ装置に対するフルディスク復号化動作により復号化されるべきデータを格納する。例えば、第1のメモリ位置は、論理メモリ位置、したがって図2の暗号化データ105’、110’、115’を格納するために用いられる物理メモリ位置に対応する。第2のメモリ位置は、ライト動作のために利用可能なメモリ位置、例えばメモリ装置130内の空きメモリ位置に対応する。
【0039】
処理500は、第2のメモリ位置を暗号化されていないとして指定する(504)。例えば、空きと指定される論理位置は、暗号化されているとしても指定される。
【0040】
処理500は、第1のメモリ装置にあるデータのみを復号化し(506)、次にメモリ装置全体を復号化されているとして指定する(508)。
【0041】
本願明細書に記載される主題及び動作の実施例は、本願明細書に開示した構造及びそれらの構造的等価物を含むデジタル電子回路、又はコンピュータソフトウェア、ファームウェア、ハードウェア、又はそれらの1以上の組合せで実装できる。本願明細書に記載される主題及び動作の実施例は、データ処理装置により実行するために又はデータ処理装置の動作を制御するためにコンピュータ記憶媒体上にエンコードされた1又は複数のコンピュータプログラム、つまりコンピュータプログラム命令の1又は複数のモジュールで実装できる。
【0042】
コンピュータ記憶媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶担体、ランダム若しくはシリアルアクセスメモリアレイ若しくは素子、又はそれらの1以上の組合せであり又はそれに含まれ得る。コンピュータ記憶媒体は、1又は複数の別個の物理コンポーネント又は媒体(例えば、複数のCD、ディスク又は他の記憶装置)でもあり又はそれに含まれ得る。
【0043】
本願明細書に記載した動作は、1又は複数のコンピュータ可読記憶装置に格納された若しくは他のソースから受信されたデータに対して、データ処理装置により実行される動作として実装され得る。
【0044】
用語「データ処理装置」は、データを処理するあらゆる種類の装置、素子、機械を包含し、例としてプログラマブルプロセッサ、コンピュータ、システムオンチップ、又はそれらの複数若しくは組合せを含む。装置は、特定目的論理回路、例えばFPGA(field programmable gate array)又はASIC(application-specific integrated circuit)を含み得る。装置は、ハードウェアに加えて、問題のコンピュータプログラムのために実行環境を生成するコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、プラットフォーム間ランタイム環境、仮想機械、又はそれらの1又は複数の組合せも含み得る。装置及び実行環境は、ウェブサービス、分散型コンピューティング及びグリッドコンピューティング基盤のような種々の異なるコンピューティングモデル基盤を実現できる。
【0045】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られている)は、コンパイル済みの又はインタープリット済みの言語、宣言型又は手続き型言語を含む任意の形式のプログラミング言語で記述できる。また、コンピュータプログラムは、スタンドアロン型プログラムとして、又はモジュール、サブルーチン、オブジェクト若しくはコンピューティング環境での使用に適した他のユニットを含む任意の形式で展開できる。コンピュータプログラムは、ファイルシステムにおけるファイルに対応しても良いが、必須ではない。プログラムは、他のプログラム又はデータを保持するファイルの一部(例えば、マークアップ言語文書内に格納された1又は複数のスクリプト)に、問題のプログラムに特化した単一ファイル内に、又は複数の協調ファイル(例えば、1又は複数のモジュール、サブプログラム又はコードの一部を格納するファイル)内に格納され得る。コンピュータプログラムは、1つのコンピュータで又は1箇所若しくは複数箇所に分散して置かれ通信ネットワークにより相互接続される複数のコンピュータで実行されるよう配置できる。
【0046】
本願明細書に記載した処理及び論理フローは、入力データに対して作用し出力を生成することにより動作を実行するために、1又は複数のコンピュータプログラムを実行する1又は複数のプログラマブルプロセッサにより実行され得る。処理及び論理フローは、特定目的論理回路、例えばFPGA(field programmable gate array)又はASIC(application-specific integrated circuit)により実行でき、また装置は特定目的論理回路、例えばFPGA又はASICとしても実装できる。
【0047】
コンピュータプログラムの実行に適したプロセッサは、例えば、汎用及び特定目的プロセッサの両方、及び任意の種類のデジタルコンピュータの1又は複数のプロセッサを含む。概して、プロセッサは、命令及びデータを読み出し専用メモリ又はランダムアクセスメモリ又はそれらの両方から受信する。コンピュータの基本要素は、命令に従って動作を実行するプロセッサと、命令及びデータを格納する1又は複数のメモリ装置である。概して、コンピュータは、データを格納する1又は複数の大容量記憶装置、例えば磁気、光磁気ディスク若しくは光ディスクを含み、又はこれらからデータを受信し若しくはこれらにデータを転送するために動作可能に結合される。しかしながら、コンピュータはこのような装置を有する必要はない。さらに、コンピュータは、別の装置、例えば少数の例を挙げると、携帯電話機、PDA(personal digital assistant)、モバイルオーディオ若しくはビデオプレイヤ、ゲーム端末、GPS(Global Positioning System)受信機、又はポータブル記憶装置(例えば、USB(universal serial bus)フラッシュドライブ)に備えられても良い。コンピュータプログラム命令及びデータを格納するのに適する装置は、あらゆる形式の不揮発性メモリ、媒体及びメモリ装置を含み、例えば、半導体メモリ素子、例えばEPROM、EEPROM及びフラッシュメモリ素子、磁気ディスク、例えば内蔵ハードディスク若しくは取り外し可能ディスク、光磁気ディスク、及びCD−ROM及びDVD−ROMディスクを含む。プロセッサ及びメモリは、特定目的論理回路により補強され、又はそれに組み込まれ得る。
【0048】
図6は例示的なコンピュータシステムを示す。図6は、図1−5に関して上述した処理及びシステムを実施するために用いられ得る例示的なコンピュータシステム600のブロック図である。システム600は、プロセッサ610、メモリ620、記憶装置630及び入力/出力装置640を有する。各コンポーネント610、620、630、640は、例えば、システムバス650を用いて相互接続できる。プロセッサ610は、システム600内で実行のために命令を処理できる。プロセッサ610は、システム620内に又は記憶装置630に格納された命令を処理できる。
【0049】
メモリ620は、システム600内で情報を格納する。ある実装では、メモリ620は、コンピュータ可読媒体である。ある実装では、メモリ620は、揮発性メモリユニットである。別の実装では、メモリ620は、不揮発性メモリユニットである。
【0050】
記憶装置630は、システム600に大容量記憶を提供できる。ある実装では、記憶装置630は、コンピュータ可読媒体である。種々の異なる実装では、記憶装置630は、例えば、ハードディスクドライブ、光ディスクドライブ、固体ドライブ、及び/又は他の大容量記憶装置を含み得る。
【0051】
入力/出力装置640は、システム600に入力/出力動作を提供する。ある実装では、入力/出力装置640は、1又は複数のネットワークインタフェース装置、例えばEthernet(登録商標)カード、シリアル通信装置、例えばRS−232ポート、及び/又は無線インタフェース装置、例えば802.11カードを含み得る。別の実装では、入力/出力装置は、入力デ―タを受信し及び他の入力/出力装置、例えばキ―ボード、プリンタ及びディスプレイ装置660へ出力データを送信するよう構成されるドライバ装置を含み得る。
【0052】
本願明細書は多くの特定の実装の詳細を含むが、これらは、発明の範囲又は請求の範囲の限定ではなく、特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。本願明細書に別個の実施形態の文脈で記載された特定の特徴は、単一の実施形態の中で組み合わせて実装することもできる。反対に、本願明細書に単一の実施形態の文脈で記載された特定の特徴は、複数の実施形態で別個に又は任意の適切な実施形態で実装することもできる。
【0053】
さらに、特徴は、特定の組合せで動作するとして上述され、そのように最初に請求されるが、請求される組合せの中の1又は複数の特徴は、幾つかの場合には該組合せから削除され、請求される組合せは小結合又は小結合の変形を対象とし得る。
【0054】
同様に、動作は特定の順序で図示されたが、これは、所望の結果を達成するために、このような動作が図示の特定の順序で又は連続的順序で実行されることを要求すると又は全ての図示の動作が実行されると理解されるべきではない。特定の環境では、マルチタスク及び並列処理が有利であっても良い。さらに、上述の実施形態における種々のシステムコンポーネントの分離は、全ての実施形態においてこのような分離を必要とすると理解されるべきではない。また、記載したプログラムコンポーネント及びシステムが概して単一のソフトウェアプロダクトに統合され又は複数のソフトウェアプロダクトにパッケージ化できることが理解されるべきである。
【0055】
したがって、主題の特定の実施形態が記載された。他の実施形態も添付の請求の範囲に包含される。幾つかの例では、請求項に記載された動作は、異なる順序で実行でき、依然として所望の結果を達成する。さらに、図示された処理は、所望の結果を達成するために、必ずしも図示された特定の順序又はシーケンシャルな順序である必要はない。特定の実装では、マルチタスク及び並列処理が有利であっても良い。
【0056】
[関連出願の参照]
本願は、米国特許出願番号13/079,889号、出願日2011年4月5日の優先権の利益を主張する。該米国特許出願は、参照されることによりここに全内容が組み込まれる。
図1
図2
図3
図4
図5
図6