JP5662037B2 - 不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング - Google Patents

不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング Download PDF

Info

Publication number
JP5662037B2
JP5662037B2 JP2010046014A JP2010046014A JP5662037B2 JP 5662037 B2 JP5662037 B2 JP 5662037B2 JP 2010046014 A JP2010046014 A JP 2010046014A JP 2010046014 A JP2010046014 A JP 2010046014A JP 5662037 B2 JP5662037 B2 JP 5662037B2
Authority
JP
Japan
Prior art keywords
data
information
memory
secret
volatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010046014A
Other languages
English (en)
Other versions
JP2010231778A5 (ja
JP2010231778A (ja
Inventor
ケニス・ハーマン
マシュー・バイオム
マイケル・ジェイ.・スミス
トーマス・エム.・トエルケス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2010231778A publication Critical patent/JP2010231778A/ja
Publication of JP2010231778A5 publication Critical patent/JP2010231778A5/ja
Application granted granted Critical
Publication of JP5662037B2 publication Critical patent/JP5662037B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Description

本発明は、NAND型フラッシュメモリなどの不揮発性メモリに格納するためにデータをホワイトニングおよび管理するためのシステム、方法、および、装置に関する。
NAND型フラッシュメモリおよびその他の不揮発性メモリは、通例、大容量記憶装置として電子デバイス内で用いられる。例えば、携帯型メディアプレーヤは、しばしば、音楽、ビデオ、および、その他のメディアを格納するためにフラッシュメモリを備えている。
記憶容量を維持または増大させつつ、これらの電子デバイスのサイズを減少させるために、フラッシュ型およびその他のタイプのメモリセルは、絶えず小型化および高密度化されている。これは、不揮発性メモリへの書き込みおよび不揮発性メモリからの読み出しの信頼性を低下させるプログラムディスターブなどの問題を引き起こしうる。特に、1または複数のページ(例えば、不揮発性メモリに一度に書き込むことのできるデータの単位)のプログラミングの際に、メモリセルに格納されるデータビットがほぼすべて同じ値(例えば、ほぼすべてが1または0)である場合、これらのメモリセルに印加されたプログラミング電圧が、近接するメモリセルに強い電界効果を及ぼしうる。この結果、影響を受けたメモリセルが不正確にプログラミングされたり部分的にプログラミングされたりする場合があり、それによって、次の読み出し動作中にデータが不正確に解釈される可能性が増大しうる。
NAND型フラッシュメモリなどの不揮発性メモリへの格納に向けてデータに対してホワイトニングまたはその他の管理を行うためのシステム、装置、および、方法が提供されている。「ホワイトニング」とは、一般に、データシーケンスのランダム性を増大させることを意味し、データシーケンスの1および0の数が大きく偏る可能性を低減しうるものである。データのホワイトニングは、次世代標準暗号化方式(AES)に基づくブロック暗号などの暗号化モジュールを用いて実行できる。暗号化モジュールは、秘密情報(例えば、個人情報)のセキュリティを提供するために用いられてもよいため、ここに開示する実施形態は、ホワイトニング専用のハードウェアを必要とすることなくデータホワイトニングを提供できる。
一部の実施形態では、メディアプレーヤなどの電子デバイスが提供される。電子デバイスは、システム・オン・チップ(SoC)と、フラッシュメモリなどの不揮発性メモリとを備えてよい。SoCは、暗号化モジュールとメモリインターフェースとを備えてよい。メモリインターフェースは、読み出しコマンドおよび書き込みコマンドに応答して、それぞれ、不揮発性メモリに対してデータの読み出しおよびプログラミングを行うために、不揮発性メモリと通信することができる。一部の実施形態において、メモリインターフェースは、不揮発性メモリと、読み出しおよび書き込みコマンドを発行しうるSoCのファイルシステムとの間のインターフェースとして機能しうるトランスレーションレイヤを備えてよい。
プログラムディスターブまたはその他の信頼性の問題を防止するために、メモリインターフェースは、ファイルシステムが暗号化を要求する秘密データだけでなく、不揮発性メモリに書き込まれるすべてのデータを暗号化するよう、暗号化モジュールに指示することができる。メモリインターフェースは、暗号化を要求されていない非秘密データ、および、不揮発性メモリに格納される任意のメモリ管理データを暗号化することができる。メモリ管理データは、メタデータとも呼ばれ、秘密または非秘密データの格納を管理するためにメモリインターフェースによって生成される任意のデータを含みうる。一部の実施形態において、メタデータは、ファイルシステムがデータのために提供するアドレス(すなわち、「論理アドレス」)と、不揮発性メモリにおいてデータが格納されるまたは格納されたアドレス(すなわち、「物理アドレス」)との間のマッピングの追跡記録を保持しうるメモリマップ情報を含んでよい。
SoCの暗号化モジュールは、1または複数の初期値を用いてデータを暗号化および復号することが可能であり、かかる初期値は、「暗号化シード」とも呼ばれる。AESエンジンについては、暗号化シードは、鍵および初期化ベクトル(「IV」)を含みうる。メモリインターフェースは、読み出しまたはプログラミングされるデータのタイプ(秘密データ、非秘密データ、または、メタデータ)に基づいて、暗号化シードを生成または選択することができる。一部の実施形態において、メモリインターフェースは、データを書き込みまたは読み出しするためのコマンドをファイルシステムから受信することができると共に、情報が秘密であるか非秘密であるかを検出することができる。データが秘密である場合には、メモリモジュールは、ファイルシステムによって提供された安全なプライベート鍵および初期化ベクトルを用いてデータを暗号化することができる。一方、非秘密データについては、メモリインターフェースは、所定のホワイトニング鍵と、データの論理アドレスに基づいて生成されうるIVとを用いることができる。
この技術によると、メモリインターフェースは、データの物理アドレスに依存しうる暗号化シードを用いることなく、秘密および非秘密データをホワイトニングすることができる。したがって、秘密および非秘密データは、前の物理アドレスに基づいてデータを復号し、新しい物理アドレスに基づいてデータを再暗号化する必要なく、(例えば、有効な情報および空きブロックを整理するためにデータが移動されるガベージコレクションまたはウェアレベリングの際に)不揮発性メモリの異なる物理ロケーション間で移動されることができる。
一部の実施形態では、メモリインターフェースによって生成されたメタデータは、不揮発性メモリ内に維持されてよい。これらの実施形態において、メモリインターフェースは、メタデータが不揮発性メモリに格納される前にホワイトニングするために、メタデータを暗号化することができる。AESエンジンについては、メモリインターフェースは、所定のホワイトニング鍵と、メタデータが格納される物理アドレスに基づいて生成されうるIVとをAESエンジンに供給することができる。IVは、物理アドレスに基づく場合があるため、秘密データまたは非秘密データの場合と異なり、メモリインターフェースは、(例えば、ガベージコレクション中に)異なる物理ロケーションの間でメタデータを移動させる際に、メタデータの各ページに対して復号および再暗号化を実行してよい。
本発明の上述およびその他の態様および利点については、添付の図面を参照しつつ行う以下の詳細な説明で詳述する。なお、図面において、同じ符号は同じ構成要素を指すものとする。
本発明の一実施形態に従って構成された電子デバイスを示す概略図。
本発明の一実施形態に従って構成され、電子デバイスに実装されたシステム・オン・チップを示す概略図。
本発明の一実施形態に従って不揮発性メモリにデータを書き込むための処理の一例を示すフローチャート。
本発明の一実施形態に従って不揮発性メモリからデータを読み出すための処理の一例を示すフローチャート。
本発明の一実施形態に従って不揮発性メモリの物理ページ間でデータを移動させるための処理の一例を示すフローチャート。
図1は、電子デバイス100の概略図である。いくつかの実施形態において、電子デバイス100は、携帯型メディアプレーヤ(例えば、カリフォルニア州クパチーノのアップル社が提供するiPod(登録商標))、携帯電話(例えば、アップル社が提供するiPhone(登録商標))、ポケットサイズのパーソナルコンピュータ、携帯情報端末(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、および、任意の他の適切なタイプの電子デバイスであってもよいし、それらを含むものであってもよい。
電子デバイス100は、システム・オン・チップ(SoC)110および不揮発性メモリ160を備えてよい。不揮発性メモリ160は、フローティングゲート技術に基づくNAND型フラッシュメモリであってよく、それぞれ一度に消去可能である複数の「ブロック」に分けられ、さらに、それぞれ一度にプログラム可能かつ読み出し可能である複数の「ページ」に分けられてよい。不揮発性メモリ160の各ページは、物理ページアドレスを用いてアドレス指定できる。図1(および、それ以降の図)と、開示されている様々な実施形態は、フラッシュ技術を用いるものについて説明しているが、任意のその他のタイプの不揮発性メモリを実装することも可能である。例えば、不揮発性メモリ160は、NAND型フラッシュメモリ、NOR型フラッシュメモリ、任意の次世代不揮発性メモリ、または、それらの組み合わせを含みうる。また、一部の実施形態において、不揮発性メモリ160は、オフチップではなくシステム・オン・チップ110上に実装されてよく、電子デバイス100は、図の簡単のために図1では図示していないが、電源または任意のユーザ入出力デバイスなど、他の構成要素を備えうる。
システム・オン・チップ110は、SoC制御回路120、暗号化モジュール130、メモリ140、および、不揮発性メモリインターフェース150を備えてよい。SoC制御回路120は、SoC110の全体的な動作および機能と、その他の構成要素を制御しうる。例えば、ユーザ入力またはアプリケーションの指示に応答して、SoC制御回路120は、不揮発性メモリ160からデータを取得または不揮発性メモリ160にデータを格納するために、不揮発性メモリインターフェース150に読み出しまたは書き込みコマンドを発行してよい。SoC制御回路120は、電子デバイス100の機能を実現するよう動作する、任意の組み合わせのハードウェア、ソフトウェア、および、ファームウェア、並びに、任意のコンポーネント、回路、または、ロジックを備えてよい。
メモリ140は、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイナミックランダムクセスメモリ(SDRAM)、ダブルデータレート(DDR)RAM、キャッシュメモリ、または、読み出し専用メモリ(ROM)などの、任意の適切なタイプの揮発性または不揮発性メモリを備えていてよい。メモリ140は、不揮発性メモリ160に対するプログラムまたは読み出しのためのデータを一時的に格納できるデータソースを備えてよい。一部の実施形態において、メモリ140は、SoC制御回路120またはメモリインターフェース150によって実行できるファームウェアまたはソフトウェアアプリケーションを格納する、ファームウェアまたはソフトウェアに一次記憶を提供する、または、それらの両方を行うことが可能である。
不揮発性メモリインターフェース150は、任意の適切な組み合わせのハードウェアおよびソフトウェアを備えてよく、SoC制御回路120および不揮発性メモリ160の間のドライバまたはインターフェース(例えば、フラッシュインターフェース)として機能しうる。例えば、メモリインターフェース150は、SoC制御回路120からの読み出しまたは書き込みコマンドを解釈して、不揮発性メモリ160のバスプロトコルに適合する読み出しまたはプログラミングの命令を生成できる。メモリインターフェース150は、不揮発性メモリ160のページおよびブロックを管理するために、これらの機能と、後述するように、不揮発性メモリ160に格納されるデータをホワイトニングするよう暗号化モジュール130に指示すること、および、ウェアレベリングまたはガベージコレクション中に不揮発性メモリ160の物理ロケーション間でデータページを移動することなど、その他の任意の適切な機能とを実行できる。メモリインターフェース150は、SoC制御回路120とは別個のモジュールとして図示されているが、一部の実施形態では、これらのモジュールは、ハードウェアまたはソフトウェア構成要素(または両方)を共有してよく、機能の一部に互換性があってもよい。
暗号化モジュール130は、適切な暗号に基づいて暗号化および復号を実行するよう構成された任意のハードウェアまたはソフトウェア、もしくは、それらの組み合わせであってもよいし、それらを含むものであってもよい。例えば、暗号化モジュール130は、次世代標準暗号化方式(AES)、データ暗号化規格(DES)、または、RSAに基づいてよい。暗号化モジュール130は、不揮発性メモリ160に格納された、または、(例えば、図1には示していないが、Wi−Fi(登録商標)回路などの通信回路を用いて)電子デバイス100に対して送受信される、秘密データ(個人情報または課金情報など)にセキュリティを提供できる。セキュリティの提供に加えて、暗号化モジュール130が用いる暗号化アルゴリズムは、自身が暗号化するデータのホワイトニングまたはランダム化を行うさらなる機能を提供してもよい。したがって、暗号化モジュール130は、データが秘密でない場合でもデータの暗号化を指示されてよく、その結果、そのデータは、不揮発性メモリ160に書き込まれる前にホワイトニングされることができる。このように、プログラムディスターブおよびその他の信頼性の問題を、低減することができる。
暗号化モジュール130は、SoC制御回路120または不揮発性メモリインターフェース150によって提供される1または複数の「暗号化シード」を用いて、データを暗号化および復号できる。なお、暗号化シードは、暗号化または復号を実行するために暗号化アルゴリズムによって必要とされうる。一部の実施形態において、特にAESに基づく暗号化モジュールについて、暗号化シードは、鍵および初期化ベクトル(「IV」)を含みうる。元の暗号化されていないデータを暗号化データから回復するために、復号に用いる暗号化シードは、もともと暗号化に用いたシードと同じである必要があってよい。したがって、電子デバイスがこれらの暗号化シードを管理および生成するために利用できる様々な技術を図示した図2ないし図5を参照しつつ、様々な特徴を以下で開示する。
ここで、図2によると、システム・オン・チップ(SoC)210の概略図が示されている。SoC210は、SoC110のより詳細な図であってもよいし、完全に異なる実装のシステム・オン・チップであってもよい。SoC210は、SoC制御回路220、暗号化モジュール230、および、不揮発性メモリインターフェース250を備えてよく、これらの構成要素は、それぞれ、図1の同じ名称の構成要素について上述した特徴および機能のいずれかを有するものであり、その逆も成り立つ。例えば、一部の実施形態において、暗号化モジュール230は、次世代標準暗号化方式(AES)エンジンであってもよいし、それを備えるものであってもよい。AESエンジンは、暗号化シードを取得するための鍵入力およびIV入力と、データ入力(図示せず)から受信したデータの暗号化を有効または無効にするためのイネーブル入力とを有してよい。
図2にはメモリモジュールが図示されていないが、1または複数の適切なバッファまたはその他の一時記憶モジュールを、図2に示した任意の様々な構成要素の間に提供できることを理解されたい。これらのメモリモジュールは、SoC制御回路220の内部、SoC制御回路220の外部(例えば、図1のメモリ140)、もしくは、不揮発性メモリインターフェース250の内部または外部など、SoC210の任意の適切な位置に配置されてよい。
SoC制御回路220は、電子デバイス(例えば、図1の電子デバイス100)の一般的な機能を提供できる。例えば、SoC制御回路220は、ユーザが起動した任意のアプリケーション(例えば、音楽またはその他のメディアアプリケーション)を実行することが可能であり、電子デバイスのオペレーティングシステムを備えることができる。動作中、アプリケーションおよびその他のプログラムまたはファームウェアは、大容量記憶装置(例えば、図1の不揮発性メモリ160)にデータを格納したり、そこからデータを取り出したりすることが必要になる場合がある。SoC制御回路220は、情報のタイプ、実行されているアプリケーション、または、電子デバイスを操作している特定のユーザなど、様々な要素に基づいて、データを「秘密」または「非秘密」情報として割り振ってよい。「秘密データ」は、一般に、データを暗号化する指示と共に(例えば、後述のファイルシステム222から)保存に向けて提供される任意の情報のことを指しうる。秘密データとしては、例えば、個人情報およびクレジットカード情報が挙げられる。
SoC制御回路220は、アプリケーションまたはオペレーティングシステムによって指示された読み出しおよび書き込みコマンドを発行するために、ファイルシステム222を備えてよい。ファイルシステム222は、ファイルアロケーションテーブル(FAT)ファイルシステムなど、任意の適切なタイプのファイルシステムを含みうる。各読み出しまたは書き込みコマンドと共に、ファイルシステム222は、データが読み出しまたは書き込みされる場所を示す論理アドレスを提供することができる。ファイルシステム222は、さらに、オペレーティングシステムまたはアプリケーションが、データが秘密であると判定したか否かについての情報を提供できる。秘密データについては、ファイルシステム222は、読み出しまたは書き込みコマンドと共にプライベート鍵および初期化ベクトルを提供できる。データが秘密でない場合、ファイルシステム222は、有効な暗号化シードを提供しなくてよい。例えば、ファイルシステム222は、有効な暗号化シードの代わりにNULL値を提供してよい。
ファイルシステム222は、電子デバイス(例えば、NAND型フラッシュ)に実装された不揮発性メモリに直接的には適合していないプロトコルを用いて、論理アドレスおよび暗号化シードと共に、読み出しおよび書き込み要求を提供してよい。例えば、ファイルシステム222によって提供される論理アドレスは、ハードドライブを用いたシステムに典型的な規則またはプロトコルを用いてよい。ハードドライブを用いたシステムは、フラッシュメモリと違って、ブロック消去を最初に実行することなくメモリロケーションに上書きすることができ、デバイスの寿命を延ばすために、ウェアレベリングを実行する必要がない。したがって、SoC210は、不揮発性メモリインターフェース250を備えてよく、不揮発性メモリインターフェース250は、不揮発性メモリに適した方法でファイルシステム要求を処理するために、任意のメモリ固有(例えば、フラッシュ固有)またはベンダー固有(もしくは両方)の機能を実行できる。
不揮発性メモリインターフェース250は、トランスレーションレイヤ252と、マルチプレクサ254および256と、バスコントローラ258とを備えていてよい。一部の実施形態において、トランスレーションレイヤ252は、フラッシュトランスレーションレイヤであってよい。トランスレーションレイヤ252は、ファイルシステム222からの読み出しまたは書き込みコマンドを解釈して、読み出しおよび書き込みコマンドを不揮発性メモリに適切な命令に翻訳することができる。より具体的には、書き込み/プログラム動作において、ファイルシステム222から受信した論理アドレスが、不揮発性メモリ上の消去済みの空き物理ロケーションに対応しないこともあるため、トランスレーションレイヤ252は、その論理アドレスに直接的にデータを書き込めないことがある。その代わり、トランスレーションレイヤ252は、ファイルシステム222から受信した論理アドレスを、不揮発性メモリ上の空き物理アドレスに変換できる。読み出し動作において、トランスレーションレイヤ252は、受信した論理アドレスに対応する格納データの実際の物理アドレスを決定できる。
トランスレーションレイヤ252は、論理および物理アドレス間のこのマッピングを維持するために、メモリ管理データ(すなわち「メタデータ」)を生成できる。メモリ「管理データ」すなわち「メタデータ」は、ファイルシステムによって提供されない任意のデータを含んでよく、かかるデータは、インターフェース250の構成要素(例えば、トランスレーションレイヤ252)によって生成されてよい。トランスレーションレイヤ252は、さらに、後述するように、ガベージコレクションまたはウェアレベリングの実行など、不揮発性メモリのストレージを管理するための任意の他の適切なタスクを実行できる。
メモリ管理データ(例えば、決定された物理アドレス)を用いて、トランスレーションレイヤ252は、バスコントローラ258に読み出し要求および書き込み要求を提供することが可能であり、不揮発性メモリ上の記憶空間を解放するために、バスコントローラ258に消去要求を発行することが可能である。バスコントローラ258は、要求された読み出し、書き込み、および、消去動作を実行するために、不揮発性メモリが利用するバスプロトコルを用いて、不揮発性メモリと通信しうる。一部の実施形態において、バスコントローラ258は、ベンダー固有の不揮発性メモリと通信することができる「メモリテクノロジドライバ」を備えてよい。
不揮発性メモリインターフェース250は、バスコントローラ258に不揮発性メモリへのデータの書き込みを行わせる前に、暗号化モジュール230がデータをホワイトニングすることを可能にする。一部の実施形態において、トランスレーションレイヤ252は、暗号化モジュール230が、格納に先立って、あらゆるタイプのデータまたはメタデータ(例えば、秘密データ、非秘密データ、または、メモリ管理データ)を暗号化することを可能にし、その結果、ホワイトニングされたデータは、プログラム/読み出し/消去ディスターブの発生を低減または最小化することができる。データをホワイトニングするために、トランスレーションレイヤ252は、どちらの暗号化シード(ここでは、鍵および初期化ベクトル)を暗号化モジュール230に提供すべきかを決定しうる。暗号化シードは、復号が実行された時に回復可能であるように、かつ、利用可能な場合にはファイルシステム222によって提供された安全な暗号鍵が用いられるように選択されてよく、しばしば、そのように選択されることが好ましい。
トランスレーションレイヤ252は、暗号化モジュール230が用いる鍵を選択するよう、マルチプレクサ254を制御しうる。一部の実施形態において、トランスレーションレイヤ252は、暗号化/ホワイトニングされるデータのタイプに基づいて、プライベート鍵および所定のホワイトニング鍵のいずれかを選択してよい。トランスレーションレイヤ252は、秘密データのための読み出しまたは書き込みコマンドが受信されたことの検出に応答して、ファイルシステム222によって提供されうるプライベート鍵を選択してよい。他のタイプのデータ(例えば、非秘密データまたは非メタデータ)については、有効なプライベート鍵が提供されなくてもよいため、トランスレーションレイヤ252は、所定のホワイトニング鍵を選択してよい。ホワイトニング鍵は、様々な値の内の任意の値を取ってよく、一部の実施形態においては、ハードコード化されてもよいし、インターフェース250内にハードワイヤードされてもよい。ホワイトニング鍵は、セキュリティのためだけでなく、ホワイトニングに適した値を有していてよい。例えば、デバイスシミュレーションまたは数理モデルを用いて、様々なデータ値に対して(他のホワイトニング鍵の候補よりも)高度なホワイトニングを提供するように、ホワイトニング鍵の値を予め決定してよい。したがって、一部の実施形態において、ホワイトニング鍵の値は、読み出しまたは書き込みされるデータに依存しなくてよい。また、ホワイトニング鍵の値は、ロケーション非依存(例えば、データの対応する論理または物理アドレスに依存しない)であってよい。
トランスレーションレイヤ252は、暗号化モジュール230が用いる初期化ベクトルを選択するよう、マルチプレクサ256を制御しうる。プライベート鍵の場合と同様に、ファイルシステム222は、秘密情報に対応する読み出しまたは書き込みコマンドと共に初期化ベクトルを提供できる。この初期化ベクトルは、読み出しまたは書き込みコマンドと共に受信した論理アドレスに基づいてよい。ファイルシステム222は、セキュリティを増すために論理アドレスに基づくIVを提供できる。特に、ファイルシステム222が、複数の論理アドレスに同じデータを格納するための書き込みコマンドを発行した場合、結果として生じる暗号化データは、同じにならない。
他のタイプのデータ(例えば、非秘密データまたはメタデータ)については、トランスレーションレイヤ252は、論理に基づいたIVを用いるか物理アドレスに基づいたIVを用いるかを選択することができる。さらに具体的には、インターフェース250は、格納または取り出される情報の物理アドレスまたは論理アドレスに基づいて初期化ベクトルを算出することが可能であり、トランスレーションレイヤ252は、これらのベクトルから選択するよう、マルチプレクサ256を制御しうる。上述のように、(論理または物理)アドレスに基づく初期化ベクトルを用いることにより、セキュリティを向上できる。また、トランスレーションレイヤ252は、有効な論理および物理アドレスと共にメタデータを維持することができるので、論理または物理アドレスに基づいてデータを暗号化することで、インターフェース250が後の復号のためにIVを再構築することを可能にできる。
メタデータは、論理アドレスと関連づけられていない場合があるため、トランスレーションレイヤ252は、メタデータの暗号化または復号のために、物理アドレスに基づくIVを選択することができる。すなわち、メタデータは、ファイルシステム222によって提供される代わりに、インターフェース250によって生成されてよいため、論理アドレスからは、有効なIVを生成できない。一部の実施形態において、不揮発性メモリに格納される、または、格納された任意の情報に対して、トランスレーションレイヤ252は、論理アドレスを利用できない場合(例えば、メタデータまたは任意のその他の適切な情報の場合)には物理アドレスに基づくIVを選択してよい。
トランスレーションレイヤ252は、論理アドレスに基づくIVを用いて非秘密データを暗号化または復号することを可能にすることができる。一部の実施形態において、不揮発性メモリに格納される、または、格納された任意の情報に対して、トランスレーションレイヤ252は、非秘密または秘密データなどについては、利用できる時はいつでも論理アドレスを用いて情報を暗号化することを可能にできる。特にガベージコレクションまたはウェアレベリングの際には、これにより、効果的なメモリ管理が可能になる。トランスレーションレイヤ252は、プログラミングおよび消去動作が不揮発性メモリ内で均一に分散されることを保証し、消去のためにブロックを解放するために、ウェアレベリングおよびガベージコレクションを実行できる。ウェアレベリングおよびガベージコレクションは、或る物理アドレスから新たな物理アドレスにページを移動させることを含みうる。物理アドレスの変化に影響されえない論理アドレスに基づくIVを用いることによって、トランスレーションレイヤ252は、データを復号および再暗号化する必要なしに、秘密および非秘密データを移動することができる。すなわち、(物理データに基づいて暗号化される)メタデータの移動で必要とされうるように、以前の物理アドレスに基づいて格納されたデータを復号し、新たな物理アドレスを用いてデータを再暗号化する動作は、トランスレーションレイヤ252では必要としなくてよい。不揮発性メモリ上の物理ロケーション間でのデータの移動については、図5を参照しつつ以下で詳述する。
ここで、図3ないし5によると、フラッシュメモリなどの不揮発性メモリに格納するためにデータのホワイトニングを行うための処理の例を示すフローチャートが示されている。これらの処理の工程は、図2のインターフェース250などのメモリインターフェースによってまたは、電子デバイスの任意の構成要素または構成要素の組み合わせによって実行されてよい。ただし、簡単のため、メモリインターフェースによって実行されるものとして、処理を説明しているが、それに限定されない。
最初に図3によると、書き込みコマンドに応答して、不揮発性メモリ(例えば、NAND型フラッシュメモリ)に格納するためにデータをホワイトニングするための処理300のフローチャートが図示されている。処理300は工程302から開始しうる。工程304で、メモリインターフェースは、論理アドレスにデータを書き込むためのコマンドを受信することができる。一部の実施形態において、書き込みコマンドは、ファイルシステム(例えば、FATファイルシステム)から受信されてよく、データは、オンチップメモリ(例えば、図1のメモリ140)に格納されてよい。データをホワイトニングするのにどちらの暗号化シードを用いるかを決定するために、メモリインターフェースは、工程306で、データが秘密情報であるか非秘密情報であるかを判定することができる。メモリインターフェースは、有効な暗号化シード(例えば、プライベート鍵およびIV)が書き込みコマンドの一部として受信された場合には、データが秘密であると検出してよい。データが秘密であると、メモリインターフェースが判定した場合、工程308で、メモリインターフェースは、受信したプライベート鍵およびIVを選択することができる。一方、これらの暗号化シードの値は、ファイルシステムによって提供されない場合もあり、その際、処理300は、工程310に進んでよい。工程310で、メモリインターフェースは、所定のホワイトニング鍵を選択することができ、工程312で、データの論理アドレスに基づいて、初期化ベクトルを生成することができる。
工程308または工程312から、処理300は、工程314に進みうる。工程314で、メモリインターフェースは、選択された鍵と、選択または生成された初期化ベクトルとを用いて、データを暗号化することができる。これは、暗号化モジュール(図2の暗号化モジュール230など)のイネーブル信号をアサートすると共に、選択/生成された鍵およびIVを暗号化モジュールに提供することを含みうる。このように、秘密データに対して、データはファイルシステムによって指定された方法で保護されることが可能であり、同様にホワイトニングされることが可能である。非秘密データは、暗号化される必要はないのだが、プログラムディスターブまたはその他の読み出し/書き込み/消去の問題を防ぐために、ホワイトニング用に設計された鍵を用いて暗号化されてよい。
工程316に進んで、メモリインターフェースは、不揮発性メモリ上にプログラミングされるべきデータのためのメタデータを算出することができる。例えば、フラッシュメモリについて、メモリインターフェースは、(工程304で受信した)論理アドレスとフラッシュメモリの物理アドレスとの間のマッピングの形態のメタデータを生成することができるフラッシュトランスレーションレイヤを備えてよい。マッピングおよび任意のその他の適切なメタデータを用いて、メモリインターフェースは、(例えば、バスコントローラを介して)、算出された物理アドレスで不揮発性メモリ上に暗号化/ホワイトニングされたデータをプログラミングすることができる。したがって、工程306ないし工程318(図3において点線で囲まれたサブ処理305)は、ファイルシステムによって指示されたようにデータを格納するためにメモリインターフェースが実行する工程であってよい。
メモリインターフェースは、例えば、後にデータを読み出すためのコマンドが受信された時に、格納されたデータの物理アドレスを呼び出すことができるように、工程316で算出されたメタデータを維持する必要がありうる。したがって、処理300は、不揮発性メモリにメタデータを格納するために、サブ処理319の工程に進みうる。まず、工程320で、メモリインターフェースは、ホワイトニング鍵を選択できる。そのホワイトニング鍵は、(例えば、工程310で)非秘密データのために選択されたホワイトニング鍵と同じであってもよいし、同じでなくてもよい。次いで、工程322で、メモリインターフェースは、不揮発性メモリの物理アドレスに基づいて、初期化ベクトルを生成できる。この工程は、メモリインターフェースが、不揮発性メモリ内でメタデータを格納する場所を決定し、決定された物理アドレスを用いて初期化ベクトルを算出することを含みうる。一部の実施形態において、メモリインターフェースは、後の取り出しに向けてメタデータの格納場所を示すために、(例えば、メモリインターフェースの内部のメモリに)不揮発性メモリに対するポインタを維持してもよいし、各ブロック内の特定のページをメタデータの格納用に割り当ててもよい。
工程324に進んで、メモリモジュールは、選択された鍵および生成された初期化ベクトルを用いて、メタデータを暗号化できる。このように、工程326で不揮発性メモリに格納される前に、メタデータは、潜在的なプログラムディスターブまたはその他の読み出し/書き込み/消去の問題を回避するために、暗号化モジュールによってホワイトニングされることもできる。次いで、処理300は、工程328で終了してよく、これで、(ファイルシステムによって指示されたように)ホワイトニング済みの秘密または非秘密データと、格納データに関連づけられたホワイトニング済みメモリ管理データとの不揮発性メモリへの格納が完了する。
図4は、例えば、ファイルシステムから受信した読み出しコマンドを処理するために、メモリインターフェースが実行できる処理400を示すフローチャートである。処理400は、処理300の逆の動作と見なすことができる。したがって、上述の図3の工程の記載を、図4の対応する工程にも適用できることから、図4については簡潔な説明にとどめている。
処理400は工程402から開始しうる。次いで、工程404で、メモリインターフェースは、論理アドレスからデータを読み出すためのコマンドを受信しうる。要求されたデータが格納されている不揮発性メモリの物理アドレスを特定するために、メモリインターフェースは、サブ処理405の工程を実行することができる。サブ処理405は、格納されたメタデータを取得および処理するための工程を含みうる。特に、メモリインターフェースは、工程406で、不揮発性メモリの特定の物理ロケーションから、格納されたメタデータを読み出し、工程408でホワイトニング鍵を選択し、工程410で特定の物理ロケーションに基づいて初期化ベクトルを生成し、ホワイトニング鍵と生成された初期化ベクトルとを用いてメタデータを復号することができる。次いで、メタデータの復号が完了すると、メモリインターフェースは、読み出しコマンドによって要求されたデータの物理アドレスを決定するために、工程412でメタデータを解釈することができる。
次に、処理400は、要求されたデータを読み出して、処理し、ファイルシステムに提供するための工程を含むサブ処理413に進んでよい。まず、工程414において、メモリインターフェースは、メタデータから予め決定した物理アドレスから、格納されたデータを読み出すことができる。次いで、メモリインターフェースは、(秘密データのために)工程418でファイルシステムから受信したプライベート鍵およびIVを選択するか、もしくは、(非秘密データのために)工程420でホワイトニング鍵を選択し工程422で論理アドレスに基づいてIVを生成することができる。工程418または工程422に続いて、メモリインターフェースは、選択/生成された鍵および初期化ベクトルを用いて、秘密または非秘密データを復号することができる。これで、ファイルシステムによって要求された、元々のホワイトニングされていないデータを生成でき、メモリインターフェースは、工程426でファイルシステムにこのデータを提供できる。処理400は、工程428で終了してよい。
次に図5によると、不揮発性メモリ(例えば、フラッシュメモリ)の物理ページおよび/またはブロックの間でデータを移動させるためにメモリインターフェースが実行できる処理500のフローチャートが図示されている。データは、様々な理由で、或る物理ロケーションから別の物理ロケーションに移動されうる。例えば、メモリインターフェースは、不揮発性メモリ上で消去および再書き込みの分布を一様にするためにウェアレベリングを実行する際に、データまたはメタデータを移動しうる。あるいは、メモリインターフェースは、メモリセルのブロックの信頼性が実質的に低下した場合に、消去のためにブロックを解放するため、または、ブロックの使用を中止するために、そのブロックからデータまたはメタデータを移動しうる。メモリインターフェース(特に、トランスレーションレイヤ)は、様々な理由で、ページの再マッピングを開始しうるため、処理500の工程は、移動時にデータが暗号化/復号される(またはされない)方法に主に焦点を置き、実行される特定の管理動作には焦点を置いていない。これは、単に図を必要以上に複雑にすることを防ぐためのものであり、処理500の一般的な特徴は、不揮発性メモリの異なる物理アドレス間でのデータ移動を含む任意のメモリ管理動作に組み込まれてもよいし適合されてもよいことを理解されたい。
処理500は工程502から開始しうる。次いで、工程504で、メモリインターフェースは、不揮発性メモリの物理アドレスからページを読み出すことができる。工程506で、メモリインターフェースは、ページが含むデータのタイプを決定することができる。例えば、メモリインターフェースは、ブロック内でのページの場所に基づいて、または、任意のその他の適切な方法を用いて、ページがデータ(例えば、秘密または非秘密データ)とメタデータのいずれを含むかを決定できる。ページがデータを含む場合、メモリインターフェースは、工程508で新たな物理アドレスにデータを格納できる。メモリインターフェースは、暗号化モジュールを用いてデータの復号および再暗号化を行う必要なく、新たな物理ページアドレスにデータを格納できる。すなわち、メモリインターフェースは、データを移動させる際に、暗号化モジュールを無効化または迂回することができる。これは、データが、秘密であろうとなかろうと、データの物理アドレスにもとより依存しない暗号化シードを用いて暗号化されていてよいからである。したがって、データの物理アドレスの変更は、データの暗号化/ホワイトニング方法に影響することがない。
工程508に続いて、メモリインターフェースは、工程510で、格納されたデータに対応するメタデータを更新することができる。これにより、メモリインターフェースは、(変更されない)データの論理アドレスと、データが実際に書き込まれる場所との間の適切なマッピングを維持することができる。メタデータ自体が不揮発性メモリに格納されてよいため、工程510は、データに対応するメタデータの読み出し、更新、および、書き込みを行うことを含んでよい。これらの工程は、図が必要以上に複雑になるのを避けるために、図5には示されていないが、図3および4に関連して上述したメタデータの書き込みおよび読み出しの工程と同様の工程を含みうる。
工程506において、工程504で読み出したページがメタデータを含むと、メモリインターフェースが決定した場合、処理500は工程512に移動しうる。秘密または非秘密データと違って、メタデータは、或る物理ロケーションから別の物理ロケーションに移動される時に、復号および再暗号化される必要がありうる。これは、上述のように、メタデータの復号は、(論理アドレスではなく)メタデータが格納されている場所の物理アドレスを用いることを含むため、物理アドレスの変更により、メタデータの管理を最新に保つために、暗号化の変更が必要となりうるからである。したがって、工程512で、メモリインターフェースは、メタデータが格納された物理アドレスに基づいて、初期化ベクトルを生成できる。次いで、工程514で、メタデータは、生成した初期化ベクトルとホワイトニング鍵とを用いて復号されてよい。次に、工程516で、メモリインターフェースは、メタデータが格納される新たな物理アドレスに基づいて、新たな初期化ベクトルを生成してよく、工程518で、新たな初期化ベクトルとホワイトニング鍵とを用いてメタデータを再暗号化することができる。次いで、再暗号化されたメタデータは、工程520で、新たな物理アドレスに格納されてよい。
工程510または工程520に続いて、処理500は、工程522に進むことができる。工程522で、メモリインターフェースは、さらなるページを移動させるか否かを決定できる。移動させる場合、処理500は、工程504に戻ることができ、メモリインターフェースは、別の物理アドレスからデータを読み出すことができる。移動させない場合、処理500は、工程524に進んで終了してよい。
図3ないし5の処理は例示にすぎないことを理解されたい。本発明の範囲から逸脱することなく、任意の工程を追加、修正、結合、または、再構成することが可能であり、任意のさらなる工程をすることができる。例えば、暗号化モジュールが鍵およびIV以外の暗号化シードを用いる場合、図3ないし5の工程を修正して、異なる暗号化シードを生成することも可能であり、メタデータの暗号化シードは、物理アドレスに基づいてよく、秘密および非秘密データのシードは、論理アドレスに基づいてよい。
また、不揮発性メモリに情報を格納するための本開示のさまざまな実施形態は、秘密データ、非秘密データ、および、メモリ管理データ(すなわち「メタデータ」)の格納に関連して説明されている。これは例示にすぎず、本開示の特徴は、格納された情報がこれら3つのカテゴリに分類されないデバイス実装でも利用可能であることを理解されたい。特に、他のデバイス実装について、デバイスは、(データの移動を効率化できるように)可能であればいつでも論理アドレスに基づいた暗号化シードを用いることが可能であり、論理アドレスが提供されない場合には物理アドレスを用いることができる。アドレスに基づかない暗号化シードについて、デバイスは、プライベート鍵が提供されない場合に、ホワイトニング鍵またはその他の所定の鍵を用いることが可能であり、ホワイトニング鍵は、高度なホワイトニングを提供する能力ゆえに選択されてもよい。
上述の本発明の実施形態は、限定ではなく例示を目的としたものであり、本発明は、以下の特許請求の範囲によってのみ限定される。
適用例1:システムであって、不揮発性メモリと、システム・オン・チップ(SoC)と、を備え、
前記システム・オン・チップは、非秘密データおよびメモリ管理データの内の少なくとも一方を含むデータをホワイトニングするよう構成された暗号化モジュールと、前記暗号化モジュールに接続され、前記ホワイトニングされたデータを前記不揮発性メモリに格納するよう構成されたメモリインターフェースと、を備える、システム。
適用例2:適用例1に記載のシステムであって、前記暗号化モジュールは、次世代標準暗号化方式(AES)エンジンを備える、システム。
適用例3:適用例1に記載のシステムであって、前記データは、秘密データをさらに含み、前記SoCは、前記秘密データおよび非秘密データを前記不揮発性メモリとやり取りするためのコマンドを前記メモリインターフェースに発行するよう構成されたファイルシステムをさらに含み、前記メモリインターフェースは、前記不揮発性メモリ内の前記秘密データまたは前記非秘密データの格納を管理するための前記メモリ管理データを生成するよう構成されたメモリトランスレーションレイヤを備える、システム。
適用例4:適用例3に記載のシステムであって、前記ファイルシステムは、さらに、前記秘密データと共に暗号鍵を提供し、前記非秘密データと共に暗号鍵を提供しないよう構成されている、システム。
適用例5:不揮発性メモリ内のユーザデータの格納を管理するための装置であって、前記ユーザデータのためのメモリ管理データを生成する手段と、前記メモリ管理データを格納する前記不揮発性メモリの第1の物理アドレスを選択する手段と、前記選択された第1の物理アドレスに基づいて、第1の暗号化シードを算出する手段と、前記選択された第1の物理アドレスに格納するために、前記第1の暗号化シードを用いて前記メモリ管理データを暗号化する手段と、を備える、装置。
適用例6:適用例5に記載の装置であって、さらに、前記不揮発性メモリに前記ランダム化されたメモリ管理データをプログラミングする手段を備える、装置。
適用例7:適用例5に記載の装置であって、前記暗号化する手段は、次世代標準暗号化方式(AES)エンジンを備え、前記第1の暗号化シードは、初期ベクトルを含む、装置。
適用例8:適用例7に記載の装置であって、さらに、前記AESエンジンのための秘密鍵として所定の鍵を選択する手段を備え、前記所定の鍵は、前記選択された第1の物理アドレスの値に依存しない、装置。
適用例9:適用例5に記載の装置であって、前記メモリ管理データは、前記ユーザデータの論理アドレスを前記ユーザデータの物理アドレスと関連づけるメモリマップ情報を含む、装置。
適用例10:適用例5に記載の装置であって、さらに、第1の物理アドレスから第2の物理アドレスに前記メモリ管理データを移動させる手段を備え、前記移動させる手段は、前記第1の暗号化シードを用いて前記メモリ管理データを復号するよう前記暗号化モジュールに指示する手段と、前記第2の物理アドレスに基づいて第2の暗号化シードを算出する手段と、前記不揮発性メモリの前記第2の物理アドレスに格納するために、前記第2の暗号化シードを用いて前記メモリ管理データを暗号化するよう、前記暗号化する手段に指示する手段と、を備える、装置。
適用例11:システムであって、暗号化モジュールと、不揮発性メモリを管理するためのメモリインターフェースであって、前記暗号化モジュールと通信するよう動作可能であるメモリインターフェースと、を備え、
前記インターフェースは、非秘密データを含む情報を論理アドレスに格納するためのコマンドを受信し、前記論理アドレスに基づいて暗号化シードを生成し、前記不揮発性メモリの第1の物理アドレスに格納するために、前記暗号化シードを用いて前記情報を暗号化するよう、前記暗号化モジュールに指示し、前記第1の物理アドレスから前記不揮発性メモリの第2の物理アドレスに前記暗号化された情報を移動させる時に、前記情報の復号を迂回するよう構成されている、システム。
適用例12:適用例1または11に記載のシステムであって、前記不揮発性メモリはNAND型フラッシュメモリを含む、システム。
適用例13:適用例11に記載のシステムであって、前記メモリインターフェースは、さらに、前記コマンドが少なくとも1つの暗号化シードを欠いていることに基づいて、前記情報が非秘密データを含むことを検出するよう構成されている、システム。
適用例14:適用例11に記載のシステムであって、前記メモリインターフェースは、前記不揮発性メモリのガベージコレクションを開始するよう構成されており、前記暗号化された情報は、前記ガベージコレクション中に、前記第1の物理アドレスから前記第2の物理アドレスに移動される、システム。
適用例15:適用例11に記載のシステムであって、前記メモリインターフェースは、ファイルシステムと通信するよう動作可能であり、前記コマンドは、前記ファイルシステムから受信される、システム。
適用例16:適用例11に記載のシステムであって、前記メモリインターフェースは、さらに、前記論理アドレスを前記第2の物理アドレスに関連づけるように、メモリ管理データを更新し、前記論理アドレスから前記情報を取り出すための読み出しコマンドを受信し、前記メモリ管理データを用いて、前記第2の物理ロケーションを決定し、前記論理アドレスに基づいて前記暗号化シードを再生成し、前記再生成された暗号化シードを用いて前記情報を復号するよう、前記暗号化モジュールに指示するように構成されている、システム。
適用例17:メモリインターフェースを用いて不揮発性メモリを管理する方法であって、前記不揮発性メモリに格納する情報を受信する工程と、前記情報が、秘密情報であるか非秘密情報であるかを検出する工程と、前記検出に基づいて、プライベート鍵およびホワイトニング鍵のいずれかを選択する工程と、前記選択された鍵を用いた前記情報の暗号化を有効にして、前記不揮発性メモリに格納する前記情報を暗号化する工程と、を備える、方法。
適用例18:適用例17に記載の方法であって、前記検出する工程は、前記プライベート鍵が、前記不揮発性メモリに前記情報を書き込むためのコマンドと共に受信されたか否かを判定する工程を備える、方法。
適用例19:適用例17に記載の方法であって、前記ホワイトニング鍵の値は、前記情報および前記情報に関連づけられたアドレスに依存しない、方法。
適用例20:適用例17に記載の方法であって、さらに、前記情報が秘密情報であると検出された場合に、第1の初期化ベクトルを受信する工程と、前記情報が非秘密情報であると検出された場合に、第2の初期化ベクトルを生成する工程と、前記情報が秘密情報であるか非秘密情報であるかに基づいて、前記第1および第2の初期化ベクトルのいずれかを選択する工程と、を備える、方法。
適用例21:適用例17に記載の方法であって、さらに、前記受信した情報のメモリ管理データを生成する工程と、前記不揮発性メモリに格納するために、前記ホワイトニング鍵を用いた前記メモリ管理データの暗号化を有効にする工程と、を備える、方法。
適用例22:メモリインターフェースを用いて不揮発性メモリに格納する情報を準備する方法であって、前記情報は論理アドレスに関連づけられており、前記方法は、前記論理アドレスに基づいて前記情報を暗号化する工程と、前記論理アドレスを前記不揮発性メモリの第1の物理アドレスと対応づけるメモリ管理データを生成する工程と、前記不揮発性メモリの第2の物理アドレスに基づいて前記メモリ管理データを暗号化する工程と、前記第1の物理アドレスに前記暗号化された情報を格納する工程と、前記不揮発性メモリの前記第2の物理アドレスに前記暗号化されたメモリ管理データを格納する工程と、を備える、方法。
適用例23:適用例22に記載の方法であって、さらに、前記第1の物理アドレスから前記不揮発性メモリの第3の物理アドレスに前記暗号化された情報を移動させる工程を備え、前記暗号化された情報は、前記移動させる工程の間、暗号化されたままである、方法。
適用例24:適用例17または22に記載の方法であって、前記不揮発性メモリはNAND型フラッシュメモリを含む、方法。
適用例25:適用例22に記載の方法であって、前記不揮発性メモリは、複数のページを有するNAN型フラッシュメモリを含み、前記第1および第2の物理アドレスの各々は、前記複数のページの内の1つに関連づけられる、方法。

Claims (9)

  1. 不揮発性メモリを管理するためのシステムであって、
    不揮発性メモリと、
    システム・オン・チップ(SoC)と、
    を備え、
    前記システム・オン・チップは、
    データをホワイトニングするよう構成された暗号化モジュールと、
    前記暗号化モジュールに接続され、受け取ったデータが非秘密データまたは秘密データのいずれであるかを検出するように構成されたメモリインターフェースと、を備え、
    前記受け取ったデータが非秘密データである場合、前記暗号化モジュールは前記受け取った非秘密データをホワイトニングし、前記メモリインターフェースは前記ホワイトニングされた非秘密データを前記不揮発性メモリ内に格納する、システム。
  2. 請求項1に記載のシステムであって、前記暗号化モジュールは、次世代標準暗号化方式(AES)エンジンを備える、システム。
  3. 請求項1に記載のシステムであって、
    前記SoCは、前記秘密データおよび非秘密データを前記不揮発性メモリとやり取りするためのコマンドを前記メモリインターフェースに発行するよう構成されたファイルシステムをさらに含み、
    前記メモリインターフェースは、前記不揮発性メモリ内の前記秘密データまたは前記非秘密データの格納を管理するためのメモリ管理データを生成するよう構成されたメモリトランスレーションレイヤを備える、システム。
  4. 請求項3に記載のシステムであって、前記ファイルシステムは、さらに、
    前記秘密データと共に暗号鍵を提供し、前記非秘密データと共に暗号鍵を提供しないよう構成されている、システム。
  5. メモリインターフェースを用いて不揮発性メモリを管理する方法であって、
    前記不揮発性メモリに格納する情報を受信する工程と、
    前記情報が、秘密情報であるか非秘密情報であるかを検出する工程と、
    前記検出に基づいて、プライベート鍵およびホワイトニング鍵のいずれかを選択する工程と、前記ホワイトニング鍵は前記情報が非秘密情報である場合に選択され、
    前記情報が非秘密情報である場合に、前記選択されたホワイトニング鍵を用いた前記情報のホワイトニングを有効にして、前記不揮発性メモリに格納する前記情報をホワイトニングする工程と、
    を備える、方法。
  6. 請求項5に記載の方法であって、前記検出する工程は、前記プライベート鍵が、前記不揮発性メモリに前記情報を書き込むためのコマンドと共に受信されたか否かを判定する工程を備える、方法。
  7. 請求項5に記載の方法であって、前記ホワイトニング鍵の値は、前記情報および前記情報に関連づけられたアドレスに依存しない、方法。
  8. 請求項5に記載の方法であって、さらに、
    前記情報が秘密情報であると検出された場合に、第1の初期化ベクトルを受信する工程と、
    前記情報が非秘密情報であると検出された場合に、第2の初期化ベクトルを生成する工程と、
    前記情報が秘密情報であるか非秘密情報であるかに基づいて、前記第1および第2の初期化ベクトルのいずれかを選択する工程と、
    を備える、方法。
  9. 請求項5に記載の方法であって、さらに、
    前記受信した情報のメモリ管理データを生成する工程と、
    前記不揮発性メモリに格納するために、前記ホワイトニング鍵を用いた前記メモリ管理データの暗号化を有効にする工程と、
    を備える、方法。
JP2010046014A 2009-03-04 2010-03-03 不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング Expired - Fee Related JP5662037B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/398,090 2009-03-04
US12/398,090 US8589700B2 (en) 2009-03-04 2009-03-04 Data whitening for writing and reading data to and from a non-volatile memory

Publications (3)

Publication Number Publication Date
JP2010231778A JP2010231778A (ja) 2010-10-14
JP2010231778A5 JP2010231778A5 (ja) 2013-03-21
JP5662037B2 true JP5662037B2 (ja) 2015-01-28

Family

ID=42097383

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010046014A Expired - Fee Related JP5662037B2 (ja) 2009-03-04 2010-03-03 不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング

Country Status (5)

Country Link
US (2) US8589700B2 (ja)
EP (1) EP2226810A1 (ja)
JP (1) JP5662037B2 (ja)
KR (2) KR101155697B1 (ja)
WO (1) WO2010101598A1 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832458B2 (en) * 2005-03-22 2014-09-09 Seagate Technology Llc Data transcription in a data storage device
WO2008070814A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a scalable, composite, reconfigurable backplane
US8589700B2 (en) * 2009-03-04 2013-11-19 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
JP5492679B2 (ja) * 2009-06-30 2014-05-14 パナソニック株式会社 記憶装置およびメモリコントローラ
US8250380B2 (en) * 2009-12-17 2012-08-21 Hitachi Global Storage Technologies Netherlands B.V. Implementing secure erase for solid state drives
KR20120002760A (ko) * 2010-07-01 2012-01-09 삼성전자주식회사 낸드 플래쉬 메모리의 동작 신뢰성을 향상시키는 데이터 기록 방법 및 데이터 기록 장치
US20120117303A1 (en) 2010-11-04 2012-05-10 Numonyx B.V. Metadata storage associated with flash translation layer
JP5664347B2 (ja) * 2011-03-04 2015-02-04 ソニー株式会社 仮想メモリシステム、仮想メモリの制御方法、およびプログラム
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
US8705291B2 (en) 2011-05-27 2014-04-22 Seagate Technology Llc Sanitizing a non-volatile memory through charge accumulation
GB2494625A (en) * 2011-09-06 2013-03-20 St Microelectronics Grenoble 2 Minimizing the latency of a scrambled memory access by sending a memory access operation to the encryption engine and the memory controller in parallel
US8886963B2 (en) 2011-09-15 2014-11-11 Apple Inc. Secure relocation of encrypted files
US8751819B1 (en) * 2011-09-22 2014-06-10 Symantec Corporation Systems and methods for encoding data
KR101871509B1 (ko) * 2011-12-15 2018-06-27 주식회사 케이티 장치, 게이트웨이, 장치 및 게이트웨이의 데이터 전송 방법, 및 네트워크 어플리케이션 서버
US9117508B2 (en) * 2012-01-19 2015-08-25 Rambus Inc. Integrated circuit with adaptive power state management
JP5875441B2 (ja) 2012-03-29 2016-03-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データを暗号化する装置及び方法
KR101975027B1 (ko) * 2012-05-04 2019-05-03 삼성전자주식회사 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들
DE102012209404A1 (de) * 2012-06-04 2013-12-05 Robert Bosch Gmbh Vorrichtung zur Ausführung eines kryptographischen Verfahrens und Betriebsverfahren hierfür
US8924832B1 (en) * 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US9881161B2 (en) 2012-12-06 2018-01-30 S-Printing Solution Co., Ltd. System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
KR20140073384A (ko) * 2012-12-06 2014-06-16 삼성전자주식회사 보안 부팅을 수행하는 칩 시스템과 이를 이용하는 화상형성장치 및 그 보안 부팅 방법
US9330275B1 (en) * 2013-03-28 2016-05-03 Amazon Technologies, Inc. Location based decryption
US9665501B1 (en) 2013-06-18 2017-05-30 Western Digital Technologies, Inc. Self-encrypting data storage device supporting object-level encryption
US9294266B2 (en) 2013-06-27 2016-03-22 Qualcomm Incorporated Method and apparatus to encrypt plaintext data
US20160335201A1 (en) * 2014-01-28 2016-11-17 Hewlett Packard Enterprise Development Lp Data and instruction set encryption
KR20150111692A (ko) * 2014-03-26 2015-10-06 삼성전자주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러를 포함하는 메모리 시스템
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
CN104598357B (zh) * 2015-02-12 2018-05-08 兆讯恒达微电子技术(北京)有限公司 一种数据抗干扰保护方法
US9620242B1 (en) 2015-07-10 2017-04-11 The United States Of America As Represented By The Secretary Of The Navy Methods and apparatuses including one or more interrupted integrated circuit operations for characterizing radiation effects in integrated circuits
US9860841B2 (en) * 2015-08-20 2018-01-02 Apple Inc. Communications fabric with split paths for control and data packets
US10671762B2 (en) * 2015-09-29 2020-06-02 Apple Inc. Unified addressable memory
CN105243344B (zh) * 2015-11-02 2020-09-01 上海兆芯集成电路有限公司 具有硬盘加密功能的芯片组以及主机控制器
US9946744B2 (en) * 2016-01-06 2018-04-17 General Motors Llc Customer vehicle data security method
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10037164B1 (en) * 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
KR102543267B1 (ko) * 2016-07-13 2023-06-13 삼성에스디에스 주식회사 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치
US11030102B2 (en) 2018-09-07 2021-06-08 Apple Inc. Reducing memory cache control command hops on a fabric
US11100011B2 (en) 2018-12-13 2021-08-24 Sony Semiconductor Israel Ltd. Flash translation layer with hierarchical security
CN112115076A (zh) * 2019-06-20 2020-12-22 慧荣科技股份有限公司 使用者数据的加解密装置及方法
CN112231719A (zh) * 2019-07-15 2021-01-15 美光科技公司 密码密钥管理
US11681635B2 (en) 2020-09-07 2023-06-20 Mellanox Technologies, Ltd. Secure flash controller
US11580091B2 (en) 2020-11-10 2023-02-14 Northrop Grumman Systems Corporation Method of ensuring confidentiality and integrity of stored data and metadata in an untrusted environment
KR102462829B1 (ko) * 2021-01-20 2022-11-04 고려대학교 산학협력단 Nand 플래시 메모리의 보안 카피-백 프로그램 방법

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US6249866B1 (en) * 1997-09-16 2001-06-19 Microsoft Corporation Encrypting file system and method
US6785810B1 (en) * 1999-08-31 2004-08-31 Espoc, Inc. System and method for providing secure transmission, search, and storage of data
US7349987B2 (en) * 2000-11-13 2008-03-25 Digital Doors, Inc. Data security system and method with parsing and dispersion techniques
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
JP4045777B2 (ja) * 2001-10-30 2008-02-13 株式会社日立製作所 情報処理装置
JP2003242030A (ja) * 2001-12-14 2003-08-29 Matsushita Electric Ind Co Ltd メモリ管理装置及びメモリ管理方法
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US20050050342A1 (en) * 2003-08-13 2005-03-03 International Business Machines Corporation Secure storage utility
US7152138B2 (en) * 2004-01-30 2006-12-19 Hewlett-Packard Development Company, L.P. System on a chip having a non-volatile imperfect memory
DE602005015178D1 (de) * 2004-02-05 2009-08-13 Research In Motion Ltd Speicherung auf einem chip,erzeugung und handhabung eines geheimschlüssels
US7360057B2 (en) * 2005-03-22 2008-04-15 Seagate Technology, Llc Encryption of data in a range of logical block addresses
US20060224902A1 (en) * 2005-03-30 2006-10-05 Bolt Thomas B Data management system for removable storage media
US7657754B2 (en) * 2005-12-08 2010-02-02 Agere Systems Inc Methods and apparatus for the secure handling of data in a microcontroller
US8464073B2 (en) * 2006-09-13 2013-06-11 Stec, Inc. Method and system for secure data storage
JP2008090451A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 記憶装置
US20080107275A1 (en) * 2006-11-08 2008-05-08 Mehdi Asnaashari Method and system for encryption of information stored in an external nonvolatile memory
US7876894B2 (en) * 2006-11-14 2011-01-25 Mcm Portfolio Llc Method and system to provide security implementation for storage devices
KR101449673B1 (ko) 2006-12-24 2014-10-13 샌디스크 아이엘 엘티디 에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
US7984360B2 (en) * 2006-12-31 2011-07-19 Ramot At Tel Aviv University Ltd. Avoiding errors in a flash memory by using substitution transformations
US8683228B2 (en) * 2007-01-16 2014-03-25 Terry Lee Stokes System and method for WORM data storage
JP4498370B2 (ja) * 2007-02-14 2010-07-07 株式会社東芝 データ書き込み方法
JP5028577B2 (ja) * 2007-02-19 2012-09-19 株式会社メガチップス メモリ制御方法およびメモリシステム
JP2009157836A (ja) * 2007-12-27 2009-07-16 Toshiba Corp メモリシステム
JP5019611B2 (ja) * 2007-12-27 2012-09-05 株式会社東芝 メモリシステム
US8301912B2 (en) * 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
US8230158B2 (en) * 2008-08-12 2012-07-24 Micron Technology, Inc. Memory devices and methods of storing data on a memory device
JP2010108029A (ja) * 2008-10-28 2010-05-13 Panasonic Corp 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8589700B2 (en) * 2009-03-04 2013-11-19 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory

Also Published As

Publication number Publication date
US8589700B2 (en) 2013-11-19
US20140075208A1 (en) 2014-03-13
KR101155697B1 (ko) 2012-06-12
US20100229005A1 (en) 2010-09-09
KR20110134339A (ko) 2011-12-14
WO2010101598A1 (en) 2010-09-10
EP2226810A1 (en) 2010-09-08
JP2010231778A (ja) 2010-10-14
KR101534370B1 (ko) 2015-07-09
KR20100100649A (ko) 2010-09-15
US8918655B2 (en) 2014-12-23

Similar Documents

Publication Publication Date Title
JP5662037B2 (ja) 不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング
KR100969758B1 (ko) 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치
US8886963B2 (en) Secure relocation of encrypted files
US20140032935A1 (en) Memory system and encryption method in memory system
JP2010231778A5 (ja)
TWI679554B (zh) 資料儲存裝置以及其操作方法
US9069978B2 (en) Data storage device and data protection method
US11748273B2 (en) Secure data communication with memory sub-system
KR101496975B1 (ko) 고체 상태 디스크 및 이에 대한 입출력방법
US11644983B2 (en) Storage device having encryption
TWI775284B (zh) 記憶系統、其控制方法及資訊處理系統
US11556252B2 (en) Storage device and method of operating the same
TW202011248A (zh) 資料儲存裝置以及其操作方法
JP2013062616A (ja) 記憶装置、データ記憶方法、及びデータコントローラ
US20240097885A1 (en) Memory controller and storage device including same
TWI509457B (zh) 資料儲存裝置以及其資料保護方法
US20240078322A1 (en) Memory system, memory controller and operation method thereof
US20230289071A1 (en) Electronic device and method of operating the same
Lee et al. Secure Deletion for Flash-Based Self-Encrypting Drives

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140311

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140609

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140630

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140723

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141014

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141204

R150 Certificate of patent or registration of utility model

Ref document number: 5662037

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees