(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6585153
(24)【登録日】2019年9月13日
(45)【発行日】2019年10月2日
(54)【発明の名称】重要なまたは機密扱いの技術情報および他のデータを記憶するためのフラッシュメモリを用いたデバイス
(51)【国際特許分類】
G06F 21/60 20130101AFI20190919BHJP
G11C 16/22 20060101ALI20190919BHJP
G11C 8/20 20060101ALI20190919BHJP
H04L 9/10 20060101ALI20190919BHJP
【FI】
G06F21/60 320
G11C16/22
G11C8/20
H04L9/00 621A
【請求項の数】15
【全頁数】12
(21)【出願番号】特願2017-502687(P2017-502687)
(86)(22)【出願日】2015年5月19日
(65)【公表番号】特表2017-521795(P2017-521795A)
(43)【公表日】2017年8月3日
(86)【国際出願番号】US2015031586
(87)【国際公開番号】WO2016010625
(87)【国際公開日】20160121
【審査請求日】2017年3月14日
(31)【優先権主張番号】62/025,052
(32)【優先日】2014年7月16日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502397691
【氏名又は名称】ビーエイイー・システムズ・インフォメーション・アンド・エレクトロニック・システムズ・インテグレイション・インコーポレーテッド
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100189913
【弁理士】
【氏名又は名称】鵜飼 健
(74)【代理人】
【識別番号】100199565
【弁理士】
【氏名又は名称】飯野 茂
(72)【発明者】
【氏名】センター、ジェフリー・ビー.
【審査官】
宮司 卓佳
(56)【参考文献】
【文献】
特開2010−238216(JP,A)
【文献】
特開2008−148095(JP,A)
【文献】
米国特許出願公開第2012/0005488(US,A1)
【文献】
特開2004−152123(JP,A)
【文献】
米国特許出願公開第2004/0066274(US,A1)
【文献】
米国特許出願公開第2014/0047246(US,A1)
【文献】
特開2008−310950(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60
G11C 8/20
G11C 16/22
H04L 9/10
(57)【特許請求の範囲】
【請求項1】
ホストシステムに接続されるメモリデバイスにおける不揮発性の記憶のためのデータを暗号化し、復号する方法であって、前記ホストシステム内の少なくとも1つのプロセッサは、前記メモリデバイスにデータを書き込み、前記メモリデバイスからデータを読み出すようにプログラムされ、
不揮発性メモリを提供し、
前記ホストシステムから発し、暗号化エンジンに接続された揮発性のランダムアクセスメモリを介して供給されるデータを、前記不揮発性メモリに接続された暗号化エンジンによって暗号化することであって、前記揮発性のランダムアクセスメモリは、前記暗号化エンジンによる暗号化のため、前記ホストシステムが前記揮発性のランダムアクセスメモリに前記データを書き込むために、前記ホストシステムによってアクセス可能であり、暗号化された前記データが前記不揮発性メモリに書き込まれ、
暗号化された前記データが前記不揮発性メモリに記憶されている場合、前記不揮発性メモリに記憶された暗号化された任意のデータが復号される準備ができていることを示すプログラムフラグを設定し、
前記暗号化エンジンによって、前記揮発性のランダムアクセスメモリに書き込まれるために、前記不揮発性メモリに記憶された暗号化されたデータを復号することであって、前記ホストシステムが、復号された前記データを前記揮発性のランダムアクセスメモリから読み出すために、前記揮発性のランダムアクセスメモリは、前記ホストシステムによってアクセス可能であり、
ユーザまたは前記暗号化エンジンのいずれかによって供給される前記暗号化と前記復号のための暗号化鍵を、鍵記憶部に保持し、
有効な暗号化鍵が前記鍵記憶部に保持されているかどうかを決定し、
有効な鍵が前記鍵記憶部に保持されている場合、プログラムフラグが設定されているかどうかを決定し、
前記プログラムフラグが設定されている場合、前記不揮発性メモリにデータを書き込むことと、前記不揮発性メモリからデータを読み出すこととを含む第1の状態に遷移し、
前記プログラムフラグが設定されていない場合、前記プログラムフラグが設定されるのを待つことを含む第2の状態に遷移し、
有効な暗号化鍵が前記鍵記憶部に保持されていない場合、鍵選択の状態に従って、(a)暗号化鍵を生成することと、前記第2の状態に遷移することとを含む第3の状態に遷移すること、または、(b)有効な鍵がユーザによって入力されるのを待つことを含む第4の状態に遷移することと、のいずれかをするように前記鍵記憶部を構成する、
方法。
【請求項2】
前記第1の状態は、前記暗号化エンジンによる使用のために、前記揮発性のランダムアクセスメモリに前記データを記憶し、前記データを暗号化し、前記不揮発性メモリに暗号化された前記データを記憶することによって、前記ホストシステムにより前記メモリデバイスに与えられるデータを受け入れることを含む、請求項1に記載の方法。
【請求項3】
前記暗号化エンジンによって生成されるか、ユーザによって入力されるかにかかわらず、前記鍵記憶部の揮発性の鍵記憶メモリ領域に、前記暗号化鍵を記憶することと、
前記揮発性のランダムアクセスメモリと前記不揮発性メモリの動作領域から前記鍵記憶メモリ領域を分離することと、
を含む、請求項1に記載の方法。
【請求項4】
主電源またはバックアップバッテリのいずれかから、前記鍵記憶メモリ領域を含んで、前記メモリデバイスに電源供給することを含む、請求項3に記載の方法。
【請求項5】
前記不揮発性メモリはフラッシュメモリである、請求項1に記載の方法。
【請求項6】
前記揮発性のランダムアクセスメモリは、スタティックランダムアクセスメモリ(SRAM)である、請求項1に記載の方法。
【請求項7】
さらに、前記暗号化エンジンに関連付けられた乱数発生器から暗号化鍵を生成することを備える、請求項1に記載の方法。
【請求項8】
さらに、前記暗号化鍵が、前記ユーザによって供給されるか、または、前記暗号化エンジンによって供給されるかをユーザによって決定することを備える、請求項1に記載の方法。
【請求項9】
さらに、鍵選択およびタンパ企ての少なくとも一方に対応する入力信号に応答して前記メモリデバイスを動作させる、請求項1に記載の方法。
【請求項10】
データを記憶するためのメモリデバイスであって、
不揮発性メモリと、
ホストシステムから発するデータを暗号化し、前記不揮発性メモリに暗号化された前記データを記憶するために、および、前記不揮発性メモリに記憶された暗号化されたデータを復号するために、前記不揮発性メモリに接続された暗号化エンジンと、
前記暗号化エンジンに関連付けられ、暗号化鍵を生成するために構成された乱数発生器と、
鍵記憶部であって、前記暗号化エンジンによって生成されたか、または、ユーザによって前記鍵記憶部に入力されたかのいずれかである暗号化鍵を保持するために、前記暗号化エンジンに接続される鍵記憶部と、
前記ホストシステムが、前記ホストシステムから発する前記データを前記暗号化エンジンに供給するために、および、揮発性のランダムアクセスメモリから、前記暗号化エンジンから受け取られる復号された前記データを読み出すために、前記ホストシステムによってアクセス可能であり、前記暗号化エンジンに接続された揮発性のランダムアクセスメモリと、
前記鍵記憶部と前記揮発性のランダムアクセスメモリに接続される制御回路と、ここにおいて、前記制御回路は、鍵選択とタンパ企ての少なくとも一方に対応する入力信号に応答して、前記メモリデバイスの動作を制御するために、および、前記暗号化エンジンからの暗号化されたデータが前記不揮発性メモリに書き込まれている場合、前記不揮発性メモリにおける暗号化されたデータが前記暗号化エンジンによる復号のための準備ができていることを示すプログラムフラグを設定するために構成される、
を備え、
前記制御回路は、さらに、
(a)有効な暗号化鍵が前記鍵記憶部に保持されているかを決定するように、
(b)有効な暗号化鍵が前記鍵記憶部に保持されている場合、前記プログラムフラグが設定されているかを決定するように、
(c)前記プログラムフラグが設定されている場合、前記ホストシステムの動作に応答して、前記不揮発性メモリにデータを書き込むこと、および、前記不揮発性メモリからデータを読み出すことを含む第1の状態に遷移するように、および、
(d)前記プログラムフラグが設定されていない場合、前記プログラムフラグが設定されるまで待つことを含む第2の状態に遷移するように、
構成され、
前記制御回路は、さらに。
有効な暗号化鍵が前記鍵記憶部に保持されていない場合、前記メモリデバイスが、前記制御回路に入力される鍵選択信号に従って、
(e)前記暗号化エンジンが鍵を生成し、その後、前記メモリデバイスが前記第2の状態に遷移する、第3の状態に遷移するか、または、
(f)前記メモリデバイスが、有効な鍵がユーザによって入力されるのを待つ、第4の状態に遷移するか
のいずれかを行うように、構成される、
メモリデバイス。
【請求項11】
前記鍵記憶部は、前記揮発性のランダムアクセスメモリと前記不揮発性メモリの動作領域から分離される揮発性の鍵記憶メモリ領域を含む、請求項10に記載のメモリデバイス。
【請求項12】
さらに、前記鍵記憶メモリ領域に電力を供給するための主電源とバックアップバッテリを含む、請求項11に記載のメモリデバイス。
【請求項13】
前記第1の状態にあるとき、前記メモリデバイスが、(a)前記ホストシステムにより前記メモリデバイスに与えられたデータを受け入れ、前記暗号化エンジンによる使用のために前記揮発性のランダムアクセスメモリに前記データを記憶し、(b)前記データを暗号化し、および、(c)前記不揮発性メモリに暗号化された前記データを記憶するように、前記制御回路が構成される、請求項10に記載のメモリデバイス。
【請求項14】
前記不揮発性メモリはフラッシュメモリである、請求項10に記載のメモリデバイス。
【請求項15】
前記揮発性のランダムアクセスメモリは、スタティックランダムアクセスメモリ(SRAM)である、請求項10に記載のメモリデバイス。
【発明の詳細な説明】
【0001】
この出願は、「Self−encrypting Flash Memory」と題する、2014年7月16日に出願された米国仮特許出願第62/025,052の優先権を主張し、その内容が参照によってこの中に組み込まれる。
【技術分野】
【0002】
本発明は、概括的に、フラッシュメモリに関し、特に、重要なまたは機密扱いの技術情報および他のデータを記憶するためのフラッシュメモリを用いたデバイスに関する。
【背景技術】
【0003】
フラッシュメモリは、電気的消去可能プログラマブル読み取り専用メモリ(electronically erasable programmable read only memories:EEPROM(登録商標))から開発されたもので、一般的に、それらが存在するシステムの中のプロセッサによるアクセスおよび使用のためのプログラムや他の不揮発性データを記憶するために使用される。フラッシュメモリは、メモリ内に埋め込まれた個々のメモリセルの内部特性に応じて、NANDまたはNOR型のいずれであってもよい。フラッシュメモリに記憶されたデータの全てまたは選択されたブロックは、電気的に消去され、再プログラムされ得る。http://en.wikipedia.org/Flash_memory、および、その中で引用された文献を参照する。
【0004】
フラッシュメモリに記憶されるべきデータが占有または機密扱いである場合、データは、メモリに静止している間は暗号化されている必要があり得る。例えば、DFARS(国防省調達規則) 252.204−7012(2013年11月18日)において米国国防省(Department of Defense:DoD)によって課せられた現在の耐タンパ(anti-tamper:AT)要件に準拠するために、請負業者は、機密扱いを受けていない管理された技術情報(controlled technical information:CTI)を危うくされることから保護するために適切なセキュリティを提供する必要がある。CTIは、引用された文献において、情報のアクセス、使用、複製、修正、遂行、表示、リリース、開示、または、拡散に関する管理の対象である軍事または宇宙用途をもった技術的な情報として定義される。また、国防総省令第5200.44(2012年11月5日)を参照する。
【0005】
他の専有の用途は、重要なまたは機密扱いのソフトウェアやデータが、ホストシステムのメモリに記憶される前に暗号化されることを必要とし得る。メモリ内の記憶のためにそのようなソフトウェアやデータを暗号化するために、外部の暗号化エンジンと関連するプロセッサがシステムに追加されなければならない。即ち、システムにもともと埋め込まれたものの外部のハードウェアおよびソフトウェアが、暗号化のために必要とされる。複数のエンクロージャに含まれていてもよいこれらの追加のコンポーネントは、フラッシュメモリと該メモリにアクセスするホストシステムプロセッサとの間に課される必要があり、従って、暗号化プロセスの全体を複雑にし、遅くする。
【0006】
自己暗号化ソリッドステートディスクドライブは、例えば、米国、カリフォルニア州、アリソビエホのMicrosemi社から市販されている。しかし、これらのデバイスは、組み込みシステムの一部ではなく、それらは、動作するために、追加のバス(例えば、SATA、または、USB)とソフトウェアドライバを必要とする。しかし、知られている限り、組み込みシステムの一部であって、特別なバスやドライバなしで自己暗号化機能を特徴とするフラッシュメモリは、以前に提供または開示されていない。
【0007】
従って、外部の暗号化エンジンや追加のハードウェアとソフトウェアを必要とせずに、メモリに記憶された情報またはデータが、メモリ内に静止している間には暗号化された形態に保たれるように構成された、組み込み可能なフラッシュメモリを用いたデバイスに対する要求がある。
【発明の概要】
【0008】
本発明に従って、ホストシステムがメモリにデータを書き込み、メモリからデータを読み出すような、ホストシステムに関連付けられたフラッシュメモリ内の記憶のための機密扱いのプログラムまたは他のデータを暗号化する方法は、フラッシュメモリと、ホストシステムから発せられたデータを暗号化し、メモリに暗号化されたデータを書き込むため、および、ホストシステムによるアクセスのためにメモリに記憶されたデータを復号するための暗号化エンジンと、ホストシステムからエンジンにデータを供給するため、および、ホストシステムによるアクセスのためにエンジンから復号されたデータを受け取るためのスタティックランダムアクセスメモリ(static random access memory:SRAM)と、ユーザまたは暗号化エンジンのいずれかによって供給された暗号化鍵を保持するための鍵記憶部とを含むフラッシュメモリを用いたデバイスを提供することを含む。電源が投入されると、デバイスは、まず、有効な暗号化鍵が鍵記憶部に保持されているかどうかを決定する。保持されている場合で、プログラムフラグが設定されている場合、フラッシュメモリ内の暗号化されたデータは、エンジンによって復号され、ホストシステムによるアクセスのためにSRAMに記憶され、ホストシステムから発せられ、SRAMに記憶されたデータは、エンジンによって暗号化され、フラッシュメモリに記憶される。
【0009】
本発明の他の態様によれば、機密扱いの情報またはデータを記憶するためのフラッシュメモリを用いたデバイスは、フラッシュメモリと、ホストシステムから発するデータを暗号化し、フラッシュメモリに暗号化されたデータを記憶するため、および、メモリに記憶された暗号化されたデータを復号するための暗号化エンジンと、所望される場合、暗号化鍵を作成するための関連付けられた乱数発生器とを含む。鍵記憶部は、暗号化エンジンによって作成されるか、ユーザによって鍵記憶部に入力されるかのいずれかの暗号化鍵を保持する。スタティックランダムアクセスメモリ(SRAM)は、ホストシステムから発するデータを暗号化エンジンに供給し、ホストシステムによるアクセスのためにエンジンからの復号されたデータを受け取る。デバイスの制御回路は、まず、有効な鍵が鍵記憶部に保持されているかどうかを決定するように構成される。保持されている場合、次に、該回路は、フラッシュメモリ内の暗号化されたデータが暗号化エンジンによる復号のための準備ができていることか、または、フラッシュメモリがエンジンからの暗号化されたデータでプログラムされる準備ができていることかのいずれかを示すように、プログラムフラグが設定されているかどうかを決定する。
【0010】
本発明のより良い理解のために、添付の図面と添付の特許請求の範囲と併せて、以下の記載への参照がなされる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、本発明のフラッシュメモリを用いたデバイスの概略ブロック図である。
【
図2】
図2は、
図1のメモリデバイスの動作を示すフロー図である。
【0012】
図1は、本発明に従った、データ静止時の保護を確実にするために暗号化機能を用いるフラッシュメモリを用いたデバイス10を示す。デバイス10は、静止時の間に暗号化されているべく、ホストシステム内のプロセッサによるアクセスのためにメモリに記憶された場合、データを必要とする既存のまたは将来のホストシステムで使用され得る。この中で使用される場合、「データ」の用語は、情報が重要かまたは機密扱いにされているか否かにかかわらず、プロセッサによるアクセスのためにメモリに記憶することができる任意の情報を広く指す。
【0013】
メモリデバイス10は、従来のNANDまたはNOR型フラッシュメモリ12と、メモリ12の対応するポートに接続される入力および出力(I/O)ポートをもった暗号化エンジン14を含む。基本的に、エンジン14は、乱数発生器14aを含み、ホストシステムプロセッサから発するデータを暗号化するため、メモリ12に暗号化されたデータを書き込むため、および、ホストシステムプロセッサによって呼び出されたとき、メモリ12に記憶されたデータを復号するために、既知の方法で構成される。エンジン14は、好ましくは、連邦情報処理標準(Federal Information Processing Standards:FIPS)公報 197(2001年11月)、および、NIST(米国立国標準技術研究所)特別公報 800−90A(2012年1月)と800−38A(2001年)(これらの全ての関連する内容が参照により組み込まれる)から詳細が得られる、256ビットのAdvanced Encryption Standard(AES)を実装する。エンジン14は、また、メモリ12に記憶されるのであろう情報のために、所望または必要であれば、他の既知の暗号化鍵を実装するように構成されてもよい。
【0014】
メモリデバイス10は、また、ホストシステムとのインターフェイスをするために、スタティックランダムアクセスメモリ(SRAM)16を含む。ホストシステムプロセッサがSARAM16からの読み取り、および、SRAM16に書き込むから、デバイス10は、読み取り/書き込み動作について、典型的なフラッシュメモリより高速に応答する。加えて、デバイス10は、
図1に示されたように、暗号化エンジン14に接続されるバッテリバックアップされた鍵記憶部18と、鍵記憶部18におよびSRAM16に接続された制御回路20を含む。鍵記憶部18と制御回路20とに関連した端子またはピンが以下に記載される。鍵記憶部18および制御回路20の更なる詳細は、この技術に習熟した者には明らかである。
【0015】
鍵選択22 − ユーザが供給した暗号鍵または自己生成され暗号鍵のいずれかを記憶部が受容するように、制御回路20の端子またはピン22は、鍵記憶部18を制御するために与えられる。例えば、ピン22が「high」に設定される場合、暗号鍵はユーザによって提供される。ピン22が「low」である場合、鍵は乱数発生器14aを介して生成される。ユーザは、操作の彼または彼女の構想に基づいて、この決定をなす。ユーザが供給した鍵は、タンパ企て信号がピン24上で制御回路20に入力された(下記参照)後、フラッシュメモリ12に存在する暗号化されたデータが回復されることを可能にする。しかし、ユーザが供給する鍵は、ユーザに、管理をし、権限を付与された職員の間での鍵の配布に責任をもつことを要求する。内部で生成された鍵は、ユーザに、鍵配布を管理することを要求しないが、タンパ企て信号が回路20に入力されると、フラッシュメモリ12上に存在するすべてのデータが回復できなくなる。いずれの場合にも、ユーザが供給したか自己生成されたかにかかわらず、タンパイベントの信号がない限り、新しい鍵は、フラッシュメモリ12が暗号化されたデータで再プログラムされることを可能にする。
【0016】
鍵バス26 − これは、ユーザが供給する暗号鍵を鍵記憶部18に入力するためのシリアルバスである。例えば、鍵選択ピン22が「high」に設定されている場合、バス26はアクティブであり、ユーザが供給する鍵が鍵記憶部18の中にバス26を介して入力される。しかし、鍵選択ピン22が「low」に設定されている場合は、バス26が非動作になっている。いかなる状況においても、暗号鍵は、バス26または他の方法を介してデバイス10から読み出されることはあり得ない。
【0017】
タンパ24 − タンパ企て信号がピン24上で制御回路20に入力されると、信号が検出されたときに主電源が存在するならば、制御回路20は、SRAM16に記憶された全ての情報と鍵記憶部18に保持された全ての鍵を消去するように構成される。タンパ企てが信号されたときに主電源が存在しないならば、SRAMは何のデータも保有していないので、回路20は、鍵記憶部18によってその時保持されている鍵(もしあれば)を消去するための動作だけをする。
【0018】
Vbat28 − バックアップバッテリからの電圧が鍵記憶部18のピン28に与えられている場合、鍵記憶部18に保持されている任意の鍵は、主電源が失われた場合に保存される。主電源が存在する場合、鍵は、通常、鍵記憶部に保持されているから、フラッシュメモリを用いたデバイス10の動作や安定性に影響を与えることなく、主電源が存在している限り、バッテリは交換可能である。主電源とバックアップバッテリからのピン28上の電圧の両方がなくなった場合、鍵記憶部18は、暗号鍵を保持しなくなる。
【0019】
<動作>
図2のフロー図に示されるように、電源投入またはリセットに応じて、制御回路20は、鍵記憶部18が有効な鍵(例えば、全て1または全てゼロでない)が含まれているかどうかを決定するよう構成される。有効な鍵が見つけられた場合、回路20は、フラッシュメモリが暗号化されたデータでプログラムされていることを示すプログラムフラグを検索する。プログラムフラグが設定されている場合、回路20は、エンジン14に、フラッシュメモリ12に記憶されたデータを復号させ、SRAM16に復号されたデータを書き込ませる。プログラムフラグ設定されていない場合、回路20は、フラッシュメモリ12がエンジン14によって復号されるべきデータでプログラムされていることを示すよう、プログラムフラグが設定されるのを待つ。有効な鍵が決定されているかぎり、フラッシュメモリを用いたデバイス10は動作し続ける。
【0020】
制御回路20が、鍵記憶部18は有効な鍵を含んでいないと決定した場合、プログラムフラグは(以前に設定されているならば)クリアされ、鍵選択ピン22の状態が読み取られる。ピンが、例えば、「high」にされていた場合、回路20は、ユーザによって鍵記憶部18に供給される有効な鍵を待つ。ひとたび有効な鍵がロードされると、回路は、鍵が存在する場合について上述したように応答するよう構成される。例えば、タンパ企ての後、「有効」だが、不適当であったり、正しくなかったりした鍵がロードされた場合、暗号化エンジン14は、フラッシュメモリ12からの暗号化されたデータを処理し得るが、エンジン14は、不適当な鍵を使用しているとき、理解できるかまたは使用可能なデータを得られないことを注記する。
【0021】
ピン22が、例えば、「low」にされ、有効な鍵が鍵記憶部18に保持されていないことを示す場合、回路20は、乱数発生器14aによって提供される鍵を生成するよう構成される。ひとたび有効な鍵が生成されると、回路20は、フラッシュメモリ12が暗号化されたデータでプログラムされるのを待ち、プログラムフラグがセットされる。電源が除去され、その後復元された場合、デバイス10がプログラムフラグによって示された状態に戻るように、プログラムフラグは、好ましくは、不揮発性である。
【0022】
ユーザによって、または、自己生成されたかどうかにかかわらず、有効な鍵が鍵記憶部18に入力された後にのみ設定され得るプログラムフラグを読み取ることにより、制御回路20は、フラッシュメモリ12のプログラムされている状態とプログラムされていない状態との間を区別するように動作するよう構成される。電源投入され、記憶部18に保持された有効な鍵を有している時、プログラムフラグが設定されている場合に、不揮発性のフラッシュメモリ12に存在する任意のデータが復号され、フラグが設定されていない場合に、フラッシュメモリ12のプログラミングが許容される。
【0023】
動作中に、フラッシュメモリ12に書き込まれるべき、ホストシステムプロセッサから発する任意のデータは、メモリ12にデータを記憶する前に、エンジン14によって暗号化される。ホストシステムからのデータがメモリデバイス10のSRAM16に最初に書き込まれるので(デバイス10の動作では、全ての読み取りと書き込みはSRAM16を介する)、追加のデータを暗号化して、フラッシュメモリに書き込む処理は、アクセス時間に影響を与えない。
【0024】
本発明のフラッシュメモリを用いたデバイス10は、システムの観点から、標準的なフラッシュデバイスと同様に動作することが理解される。従って、ホストシステムへ、および、ホストシステムからの典型的なアドレス、データ、および、制御信号(
図1の下部を参照)は、ここでは詳細に記載されない。そして、ホストシステムプロセッサが、実際に、SRAM16からの読み取り/SRAM16への書き込みをするから、メモリデバイス10は、読み取り/書き込み動作に、典型的なフラッシュメモリより高速に応答する。
【0025】
メモリデバイス10は、バッテリバックアップおよびタンパ標示が利用可能である任意のホストシステムで動作し得る。また、それは、鍵無し(独自のキーを生成する)で、または、ユーザが供給する鍵を用いて動作し得る。いずれの場合も、鍵が外部から読み取られることはできない。重要なことは、デバイス10が、個別の暗号化ステップの必要性を回避し、フラッシュメモリ12に記憶されたデータが、常に、それが組み込まれるホストシステムからの介在なしで、静止時に暗号化されていることを確実にする。外部のハードウェアまたはソフトウェアは、暗号化機能を達成するために必要とされない。
【0026】
本発明のある実施形態がこの中に記載され、示されているが、様々な修正、追加、および、変更が、本発明の真意および範囲から逸脱することなくなされ得ることが、本技術に習熟した者によって理解される。従って、本発明は、添付の特許請求の範囲内にあるそのような修正、追加、および、変更の全てを包含する。
以下に、本願出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ホストシステムのフラッシュメモリにおける不揮発性の記憶のためにプログラムおよび他のデータを暗号化する方法であって、前記ホストシステム内のプロセッサは、前記フラッシュメモリにデータを書き込み、前記フラッシュメモリからデータを読み取るようにプログラムされ、
フラッシュメモリを用いたデバイスであって、フラッシュメモリと、前記ホストシステムから発するデータを暗号化し、前記フラッシュメモリに暗号化された前記データを書き込むために、および、前記ホストシステムによるアクセスのために前記フラッシュメモリに記憶されたデータを復号するために、前記フラッシュメモリに接続された暗号化エンジンと、前記ホストシステムから前記暗号化エンジンに前記データを供給するために、および、前記ホストシステムによるアクセスのために前記暗号化エンジンから復号された前記データを受け取るために前記暗号化エンジンに接続されたスタティックランダムアクセスメモリ(SRAM)と、ユーザまたは前記暗号化エンジンのいずれかによって供給された暗号化鍵を保持するための鍵記憶部と、前記フラッシュメモリを用いたデバイスのコンポーネントの動作を制御するための制御回路とを含む前記フラッシュメモリを用いたデバイスを提供することと、
有効な暗号化鍵が前記鍵記憶部に保持されているかどうかを決定することと、
有効な鍵が前記鍵記憶部に保持されている場合、次に、前記フラッシュメモリに記憶された任意の暗号化されたデータが復号される準備ができていることを示すように、プログラムフラグが設定されているかどうかを決定することと、
前記プログラムフラグが設定されている場合、前記ホストシステムの動作に従って、前記フラッシュメモリにデータを書き込むことと、前記フラッシュメモリからデータを読み取ることとを含む第1の状態に遷移することと、
前記プログラムフラグが設定されていない場合、前記プログラムフラグが設定されるのを待つことを含む第2の状態に遷移することと、
を備える方法。
[C2]
前記第1の状態は、前記暗号化エンジンによる使用のために、前記SRAMに前記データを記憶し、前記データを暗号化し、前記フラッシュメモリに暗号化された前記データを記憶することによって、前記ホストシステムにより前記フラッシュメモリを用いたデバイスに与えられるデータを受け入れることを含む、[C1]に記載の方法。
[C3]
有効な鍵が記憶部に保持されていない場合、前記制御回路に入力される鍵選択の状態に従って、(a)暗号化鍵を生成することと、前記第2の状態に遷移することとを含む第3の状態に遷移すること、または、(b)有効な鍵がユーザによって入力されるのを待つことを含む第4の状態に遷移することと、のいずれかをするように前記鍵記憶部を構成することを含む、[C1]に記載の方法。
[C4]
前記暗号化エンジンによって生成されるか、ユーザによって入力されるかにかかわらず、前記鍵記憶部の揮発性の鍵記憶メモリ領域に、前記暗号化鍵を記憶することと、
前記SRAMと前記フラッシュメモリの動作領域から前記鍵記憶メモリ領域を安全に分離することと、
を含む、[C1]に記載の方法。
[C5]
主電源またはバックアップバッテリのいずれかから、前記鍵記憶メモリ領域を含む、前記フラッシュメモリを用いたデバイスに電源供給することを含む、[C4]に記載の方法。
[C6]
重要なまたは機密扱いの情報またはデータを記憶するためのフラッシュメモリを用いたデバイスであって、
フラッシュメモリと、
ホストシステムのプロセッサから発するデータを暗号化し、前記フラッシュメモリに暗号化された前記データを記憶するために、および、前記フラッシュメモリに記憶された暗号化されたデータを復号するために、前記フラッシュメモリに接続された暗号化エンジンと、
前記暗号化エンジンに関連付けられ、所望されたときに暗号化鍵を生成するために構成された乱数発生器と、
鍵記憶部であって、前記暗号化エンジンによって生成されたか、ユーザによって前記鍵記憶部に入力されたかのいずれかである暗号化鍵を保持するために、前記暗号化エンジンに接続される鍵記憶部と、
前記ホストシステムから発する前記データを前記暗号化エンジンに供給するために、および、前記ホストシステムによるアクセスのために前記暗号化エンジンから復号された前記データを受け取り、記憶するために、前記暗号化エンジンに接続されたスタティックランダムアクセスメモリ(SRAM)と、
前記鍵記憶部と前記SRAMに接続される制御回路と、ここにおいて、前記制御回路は、鍵選択とタンパ企てに対応する入力信号に応答して、前記フラッシュメモリを用いたデバイスの動作を制御するために、および、前記フラッシュメモリにおける暗号化されたデータが前記暗号化エンジンによる復号のための準備ができているときに、および、前記フラッシュメモリが前記暗号化エンジンからの暗号化されたデータでプログラムされる準備ができているときに、プログラムフラグを設定するために、構成される、
フラッシュメモリを用いたデバイス。
[C7]
前記鍵記憶部は、前記SRAMと前記フラッシュメモリの動作領域から安全に分離される揮発性の鍵記憶メモリ領域を含む、[C6]に記載のフラッシュメモリを用いたデバイス。
[C8]
前記鍵記憶メモリ領域に電力を供給するための主電源とバックアップバッテリを含む、[C7]に記載のフラッシュメモリを用いたデバイス。
[C9]
前記制御回路は、(a)有効な暗号化鍵が前記鍵記憶部に保持されているかどうかを決定すること、(b)有効な鍵が前記鍵記憶部に保持されている場合、次に、前記プログラムフラグが設定されているかどうかを決定すること、(c)前記プログラムフラグが設定されている場合、前記ホストシステムの動作に応答して、前記フラッシュメモリにデータを書き込むことと、前記フラッシュメモリからデータを読み取ることを含む第1の状態に遷移すること、および、(d)前記プログラムフラグが設定されていない場合、前記プログラムフラグが設定されるのを待つことを含む第2の状態に遷移すること、のために動作する、[C7]に記載のフラッシュメモリを用いたデバイス。
[C10]
前記第1の状態にあるとき、前記フラッシュメモリを用いたデバイスが、(a)前記SRAMに前記データを記憶することによって、前記ホストシステムにより前記フラッシュメモリを用いたデバイスに与えられたデータを受け入れ、(b)前記データを暗号化し、および、(c)前記フラッシュメモリに暗号化された前記データを記憶する、ように、前記制御回路が構成される、[C9]に記載のフラッシュメモリを用いたデバイス。
[C11]
有効な暗号化鍵が前記鍵記憶部に保持されていない場合、前記フラッシュメモリを用いたデバイスが、前記制御回路に入力される鍵選択信号に従って、(a)前記暗号化エンジンが鍵を生成し、その後、前記フラッシュメモリを用いたデバイスが前記第2の状態に遷移する第3の状態に遷移するか、または、(b)前記フラッシュメモリを用いたデバイスが、有効な鍵がユーザによって入力されるのを待つ第4の状態に遷移するか、のいずれかを行うように、前記制御回路が構成される、[C9]に記載のフラッシュメモリを用いたデバイス。