(57)【特許請求の範囲】
【請求項１】
ホストシステムに接続されるメモリデバイスにおける不揮発性の記憶のためのデータを暗号化し、復号する方法であって、前記ホストシステム内の少なくとも１つのプロセッサは、前記メモリデバイスにデータを書き込み、前記メモリデバイスからデータを読み出すようにプログラムされ、
不揮発性メモリを提供し、
前記ホストシステムから発し、暗号化エンジンに接続された揮発性のランダムアクセスメモリを介して供給されるデータを、前記不揮発性メモリに接続された暗号化エンジンによって暗号化することであって、前記揮発性のランダムアクセスメモリは、前記暗号化エンジンによる暗号化のため、前記ホストシステムが前記揮発性のランダムアクセスメモリに前記データを書き込むために、前記ホストシステムによってアクセス可能であり、暗号化された前記データが前記不揮発性メモリに書き込まれ、
暗号化された前記データが前記不揮発性メモリに記憶されている場合、前記不揮発性メモリに記憶された暗号化された任意のデータが復号される準備ができていることを示すプログラムフラグを設定し、
前記暗号化エンジンによって、前記揮発性のランダムアクセスメモリに書き込まれるために、前記不揮発性メモリに記憶された暗号化されたデータを復号することであって、前記ホストシステムが、復号された前記データを前記揮発性のランダムアクセスメモリから読み出すために、前記揮発性のランダムアクセスメモリは、前記ホストシステムによってアクセス可能であり、
ユーザまたは前記暗号化エンジンのいずれかによって供給される前記暗号化と前記復号のための暗号化鍵を、鍵記憶部に保持し、
有効な暗号化鍵が前記鍵記憶部に保持されているかどうかを決定し、
有効な鍵が前記鍵記憶部に保持されている場合、プログラムフラグが設定されているかどうかを決定し、
前記プログラムフラグが設定されている場合、前記不揮発性メモリにデータを書き込むことと、前記不揮発性メモリからデータを読み出すこととを含む第１の状態に遷移し、
前記プログラムフラグが設定されていない場合、前記プログラムフラグが設定されるのを待つことを含む第２の状態に遷移し、
有効な暗号化鍵が前記鍵記憶部に保持されていない場合、鍵選択の状態に従って、（ａ）暗号化鍵を生成することと、前記第２の状態に遷移することとを含む第３の状態に遷移すること、または、（ｂ）有効な鍵がユーザによって入力されるのを待つことを含む第４の状態に遷移することと、のいずれかをするように前記鍵記憶部を構成する、
方法。
【請求項２】
前記第１の状態は、前記暗号化エンジンによる使用のために、前記揮発性のランダムアクセスメモリに前記データを記憶し、前記データを暗号化し、前記不揮発性メモリに暗号化された前記データを記憶することによって、前記ホストシステムにより前記メモリデバイスに与えられるデータを受け入れることを含む、請求項１に記載の方法。
【請求項３】
前記暗号化エンジンによって生成されるか、ユーザによって入力されるかにかかわらず、前記鍵記憶部の揮発性の鍵記憶メモリ領域に、前記暗号化鍵を記憶することと、
前記揮発性のランダムアクセスメモリと前記不揮発性メモリの動作領域から前記鍵記憶メモリ領域を分離することと、
を含む、請求項１に記載の方法。
【請求項４】
主電源またはバックアップバッテリのいずれかから、前記鍵記憶メモリ領域を含んで、前記メモリデバイスに電源供給することを含む、請求項３に記載の方法。
【請求項５】
前記不揮発性メモリはフラッシュメモリである、請求項１に記載の方法。
【請求項６】
前記揮発性のランダムアクセスメモリは、スタティックランダムアクセスメモリ（ＳＲＡＭ）である、請求項１に記載の方法。
【請求項７】
さらに、前記暗号化エンジンに関連付けられた乱数発生器から暗号化鍵を生成することを備える、請求項１に記載の方法。
【請求項８】
さらに、前記暗号化鍵が、前記ユーザによって供給されるか、または、前記暗号化エンジンによって供給されるかをユーザによって決定することを備える、請求項１に記載の方法。
【請求項９】
さらに、鍵選択およびタンパ企ての少なくとも一方に対応する入力信号に応答して前記メモリデバイスを動作させる、請求項１に記載の方法。
【請求項１０】
データを記憶するためのメモリデバイスであって、
不揮発性メモリと、
ホストシステムから発するデータを暗号化し、前記不揮発性メモリに暗号化された前記データを記憶するために、および、前記不揮発性メモリに記憶された暗号化されたデータを復号するために、前記不揮発性メモリに接続された暗号化エンジンと、
前記暗号化エンジンに関連付けられ、暗号化鍵を生成するために構成された乱数発生器と、
鍵記憶部であって、前記暗号化エンジンによって生成されたか、または、ユーザによって前記鍵記憶部に入力されたかのいずれかである暗号化鍵を保持するために、前記暗号化エンジンに接続される鍵記憶部と、
前記ホストシステムが、前記ホストシステムから発する前記データを前記暗号化エンジンに供給するために、および、揮発性のランダムアクセスメモリから、前記暗号化エンジンから受け取られる復号された前記データを読み出すために、前記ホストシステムによってアクセス可能であり、前記暗号化エンジンに接続された揮発性のランダムアクセスメモリと、
前記鍵記憶部と前記揮発性のランダムアクセスメモリに接続される制御回路と、ここにおいて、前記制御回路は、鍵選択とタンパ企ての少なくとも一方に対応する入力信号に応答して、前記メモリデバイスの動作を制御するために、および、前記暗号化エンジンからの暗号化されたデータが前記不揮発性メモリに書き込まれている場合、前記不揮発性メモリにおける暗号化されたデータが前記暗号化エンジンによる復号のための準備ができていることを示すプログラムフラグを設定するために構成される、
を備え、
前記制御回路は、さらに、
（ａ）有効な暗号化鍵が前記鍵記憶部に保持されているかを決定するように、
（ｂ）有効な暗号化鍵が前記鍵記憶部に保持されている場合、前記プログラムフラグが設定されているかを決定するように、
（ｃ）前記プログラムフラグが設定されている場合、前記ホストシステムの動作に応答して、前記不揮発性メモリにデータを書き込むこと、および、前記不揮発性メモリからデータを読み出すことを含む第１の状態に遷移するように、および、
（ｄ）前記プログラムフラグが設定されていない場合、前記プログラムフラグが設定されるまで待つことを含む第２の状態に遷移するように、
構成され、
前記制御回路は、さらに。
有効な暗号化鍵が前記鍵記憶部に保持されていない場合、前記メモリデバイスが、前記制御回路に入力される鍵選択信号に従って、
（ｅ）前記暗号化エンジンが鍵を生成し、その後、前記メモリデバイスが前記第２の状態に遷移する、第３の状態に遷移するか、または、
（ｆ）前記メモリデバイスが、有効な鍵がユーザによって入力されるのを待つ、第４の状態に遷移するか
のいずれかを行うように、構成される、
メモリデバイス。
【請求項１１】
前記鍵記憶部は、前記揮発性のランダムアクセスメモリと前記不揮発性メモリの動作領域から分離される揮発性の鍵記憶メモリ領域を含む、請求項１０に記載のメモリデバイス。
【請求項１２】
さらに、前記鍵記憶メモリ領域に電力を供給するための主電源とバックアップバッテリを含む、請求項１１に記載のメモリデバイス。
【請求項１３】
前記第１の状態にあるとき、前記メモリデバイスが、（ａ）前記ホストシステムにより前記メモリデバイスに与えられたデータを受け入れ、前記暗号化エンジンによる使用のために前記揮発性のランダムアクセスメモリに前記データを記憶し、（ｂ）前記データを暗号化し、および、（ｃ）前記不揮発性メモリに暗号化された前記データを記憶するように、前記制御回路が構成される、請求項１０に記載のメモリデバイス。
【請求項１４】
前記不揮発性メモリはフラッシュメモリである、請求項１０に記載のメモリデバイス。
【請求項１５】
前記揮発性のランダムアクセスメモリは、スタティックランダムアクセスメモリ（ＳＲＡＭ）である、請求項１０に記載のメモリデバイス。
【発明の詳細な説明】
【関連出願】
【０００１】
この出願は、「Ｓｅｌｆ−ｅｎｃｒｙｐｔｉｎｇ Ｆｌａｓｈ Ｍｅｍｏｒｙ」と題する、２０１４年７月１６日に出願された米国仮特許出願第６２／０２５，０５２の優先権を主張し、その内容が参照によってこの中に組み込まれる。
【技術分野】
【０００２】
本発明は、概括的に、フラッシュメモリに関し、特に、重要なまたは機密扱いの技術情報および他のデータを記憶するためのフラッシュメモリを用いたデバイスに関する。
【背景技術】
【０００３】
フラッシュメモリは、電気的消去可能プログラマブル読み取り専用メモリ（electronically erasable programmable read only memories：ＥＥＰＲＯＭ（登録商標））から開発されたもので、一般的に、それらが存在するシステムの中のプロセッサによるアクセスおよび使用のためのプログラムや他の不揮発性データを記憶するために使用される。フラッシュメモリは、メモリ内に埋め込まれた個々のメモリセルの内部特性に応じて、ＮＡＮＤまたはＮＯＲ型のいずれであってもよい。フラッシュメモリに記憶されたデータの全てまたは選択されたブロックは、電気的に消去され、再プログラムされ得る。http://en.wikipedia.org/Flash_memory、および、その中で引用された文献を参照する。
【０００４】
フラッシュメモリに記憶されるべきデータが占有または機密扱いである場合、データは、メモリに静止している間は暗号化されている必要があり得る。例えば、ＤＦＡＲＳ（国防省調達規則） ２５２．２０４−７０１２（２０１３年１１月１８日）において米国国防省（Department of Defense：ＤｏＤ）によって課せられた現在の耐タンパ（anti-tamper：ＡＴ）要件に準拠するために、請負業者は、機密扱いを受けていない管理された技術情報（controlled technical information：ＣＴＩ）を危うくされることから保護するために適切なセキュリティを提供する必要がある。ＣＴＩは、引用された文献において、情報のアクセス、使用、複製、修正、遂行、表示、リリース、開示、または、拡散に関する管理の対象である軍事または宇宙用途をもった技術的な情報として定義される。また、国防総省令第５２００．４４（２０１２年１１月５日）を参照する。
【０００５】
他の専有の用途は、重要なまたは機密扱いのソフトウェアやデータが、ホストシステムのメモリに記憶される前に暗号化されることを必要とし得る。メモリ内の記憶のためにそのようなソフトウェアやデータを暗号化するために、外部の暗号化エンジンと関連するプロセッサがシステムに追加されなければならない。即ち、システムにもともと埋め込まれたものの外部のハードウェアおよびソフトウェアが、暗号化のために必要とされる。複数のエンクロージャに含まれていてもよいこれらの追加のコンポーネントは、フラッシュメモリと該メモリにアクセスするホストシステムプロセッサとの間に課される必要があり、従って、暗号化プロセスの全体を複雑にし、遅くする。
【０００６】
自己暗号化ソリッドステートディスクドライブは、例えば、米国、カリフォルニア州、アリソビエホのＭｉｃｒｏｓｅｍｉ社から市販されている。しかし、これらのデバイスは、組み込みシステムの一部ではなく、それらは、動作するために、追加のバス（例えば、ＳＡＴＡ、または、ＵＳＢ）とソフトウェアドライバを必要とする。しかし、知られている限り、組み込みシステムの一部であって、特別なバスやドライバなしで自己暗号化機能を特徴とするフラッシュメモリは、以前に提供または開示されていない。
【０００７】
従って、外部の暗号化エンジンや追加のハードウェアとソフトウェアを必要とせずに、メモリに記憶された情報またはデータが、メモリ内に静止している間には暗号化された形態に保たれるように構成された、組み込み可能なフラッシュメモリを用いたデバイスに対する要求がある。
【発明の概要】
【０００８】
本発明に従って、ホストシステムがメモリにデータを書き込み、メモリからデータを読み出すような、ホストシステムに関連付けられたフラッシュメモリ内の記憶のための機密扱いのプログラムまたは他のデータを暗号化する方法は、フラッシュメモリと、ホストシステムから発せられたデータを暗号化し、メモリに暗号化されたデータを書き込むため、および、ホストシステムによるアクセスのためにメモリに記憶されたデータを復号するための暗号化エンジンと、ホストシステムからエンジンにデータを供給するため、および、ホストシステムによるアクセスのためにエンジンから復号されたデータを受け取るためのスタティックランダムアクセスメモリ（static random access memory：ＳＲＡＭ）と、ユーザまたは暗号化エンジンのいずれかによって供給された暗号化鍵を保持するための鍵記憶部とを含むフラッシュメモリを用いたデバイスを提供することを含む。電源が投入されると、デバイスは、まず、有効な暗号化鍵が鍵記憶部に保持されているかどうかを決定する。保持されている場合で、プログラムフラグが設定されている場合、フラッシュメモリ内の暗号化されたデータは、エンジンによって復号され、ホストシステムによるアクセスのためにＳＲＡＭに記憶され、ホストシステムから発せられ、ＳＲＡＭに記憶されたデータは、エンジンによって暗号化され、フラッシュメモリに記憶される。
【０００９】
本発明の他の態様によれば、機密扱いの情報またはデータを記憶するためのフラッシュメモリを用いたデバイスは、フラッシュメモリと、ホストシステムから発するデータを暗号化し、フラッシュメモリに暗号化されたデータを記憶するため、および、メモリに記憶された暗号化されたデータを復号するための暗号化エンジンと、所望される場合、暗号化鍵を作成するための関連付けられた乱数発生器とを含む。鍵記憶部は、暗号化エンジンによって作成されるか、ユーザによって鍵記憶部に入力されるかのいずれかの暗号化鍵を保持する。スタティックランダムアクセスメモリ（ＳＲＡＭ）は、ホストシステムから発するデータを暗号化エンジンに供給し、ホストシステムによるアクセスのためにエンジンからの復号されたデータを受け取る。デバイスの制御回路は、まず、有効な鍵が鍵記憶部に保持されているかどうかを決定するように構成される。保持されている場合、次に、該回路は、フラッシュメモリ内の暗号化されたデータが暗号化エンジンによる復号のための準備ができていることか、または、フラッシュメモリがエンジンからの暗号化されたデータでプログラムされる準備ができていることかのいずれかを示すように、プログラムフラグが設定されているかどうかを決定する。
【００１０】
本発明のより良い理解のために、添付の図面と添付の特許請求の範囲と併せて、以下の記載への参照がなされる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明のフラッシュメモリを用いたデバイスの概略ブロック図である。
【図２】図２は、図１のメモリデバイスの動作を示すフロー図である。
【詳細な説明】
【００１２】
図１は、本発明に従った、データ静止時の保護を確実にするために暗号化機能を用いるフラッシュメモリを用いたデバイス１０を示す。デバイス１０は、静止時の間に暗号化されているべく、ホストシステム内のプロセッサによるアクセスのためにメモリに記憶された場合、データを必要とする既存のまたは将来のホストシステムで使用され得る。この中で使用される場合、「データ」の用語は、情報が重要かまたは機密扱いにされているか否かにかかわらず、プロセッサによるアクセスのためにメモリに記憶することができる任意の情報を広く指す。
【００１３】
メモリデバイス１０は、従来のＮＡＮＤまたはＮＯＲ型フラッシュメモリ１２と、メモリ１２の対応するポートに接続される入力および出力（Ｉ／Ｏ）ポートをもった暗号化エンジン１４を含む。基本的に、エンジン１４は、乱数発生器１４ａを含み、ホストシステムプロセッサから発するデータを暗号化するため、メモリ１２に暗号化されたデータを書き込むため、および、ホストシステムプロセッサによって呼び出されたとき、メモリ１２に記憶されたデータを復号するために、既知の方法で構成される。エンジン１４は、好ましくは、連邦情報処理標準（Federal Information Processing Standards：ＦＩＰＳ）公報 １９７（２００１年１１月）、および、ＮＩＳＴ（米国立国標準技術研究所）特別公報 ８００−９０Ａ（２０１２年１月）と８００−３８Ａ（２００１年）（これらの全ての関連する内容が参照により組み込まれる）から詳細が得られる、２５６ビットのＡｄｖａｎｃｅｄ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ（ＡＥＳ）を実装する。エンジン１４は、また、メモリ１２に記憶されるのであろう情報のために、所望または必要であれば、他の既知の暗号化鍵を実装するように構成されてもよい。
【００１４】
メモリデバイス１０は、また、ホストシステムとのインターフェイスをするために、スタティックランダムアクセスメモリ（ＳＲＡＭ）１６を含む。ホストシステムプロセッサがＳＡＲＡＭ１６からの読み取り、および、ＳＲＡＭ１６に書き込むから、デバイス１０は、読み取り／書き込み動作について、典型的なフラッシュメモリより高速に応答する。加えて、デバイス１０は、図１に示されたように、暗号化エンジン１４に接続されるバッテリバックアップされた鍵記憶部１８と、鍵記憶部１８におよびＳＲＡＭ１６に接続された制御回路２０を含む。鍵記憶部１８と制御回路２０とに関連した端子またはピンが以下に記載される。鍵記憶部１８および制御回路２０の更なる詳細は、この技術に習熟した者には明らかである。
【００１５】
鍵選択２２  −  ユーザが供給した暗号鍵または自己生成され暗号鍵のいずれかを記憶部が受容するように、制御回路２０の端子またはピン２２は、鍵記憶部１８を制御するために与えられる。例えば、ピン２２が「ｈｉｇｈ」に設定される場合、暗号鍵はユーザによって提供される。ピン２２が「ｌｏｗ」である場合、鍵は乱数発生器１４ａを介して生成される。ユーザは、操作の彼または彼女の構想に基づいて、この決定をなす。ユーザが供給した鍵は、タンパ企て信号がピン２４上で制御回路２０に入力された（下記参照）後、フラッシュメモリ１２に存在する暗号化されたデータが回復されることを可能にする。しかし、ユーザが供給する鍵は、ユーザに、管理をし、権限を付与された職員の間での鍵の配布に責任をもつことを要求する。内部で生成された鍵は、ユーザに、鍵配布を管理することを要求しないが、タンパ企て信号が回路２０に入力されると、フラッシュメモリ１２上に存在するすべてのデータが回復できなくなる。いずれの場合にも、ユーザが供給したか自己生成されたかにかかわらず、タンパイベントの信号がない限り、新しい鍵は、フラッシュメモリ１２が暗号化されたデータで再プログラムされることを可能にする。
【００１６】
鍵バス２６  −  これは、ユーザが供給する暗号鍵を鍵記憶部１８に入力するためのシリアルバスである。例えば、鍵選択ピン２２が「ｈｉｇｈ」に設定されている場合、バス２６はアクティブであり、ユーザが供給する鍵が鍵記憶部１８の中にバス２６を介して入力される。しかし、鍵選択ピン２２が「ｌｏｗ」に設定されている場合は、バス２６が非動作になっている。いかなる状況においても、暗号鍵は、バス２６または他の方法を介してデバイス１０から読み出されることはあり得ない。
【００１７】
タンパ２４  −  タンパ企て信号がピン２４上で制御回路２０に入力されると、信号が検出されたときに主電源が存在するならば、制御回路２０は、ＳＲＡＭ１６に記憶された全ての情報と鍵記憶部１８に保持された全ての鍵を消去するように構成される。タンパ企てが信号されたときに主電源が存在しないならば、ＳＲＡＭは何のデータも保有していないので、回路２０は、鍵記憶部１８によってその時保持されている鍵（もしあれば）を消去するための動作だけをする。
【００１８】
Ｖｂａｔ２８  −  バックアップバッテリからの電圧が鍵記憶部１８のピン２８に与えられている場合、鍵記憶部１８に保持されている任意の鍵は、主電源が失われた場合に保存される。主電源が存在する場合、鍵は、通常、鍵記憶部に保持されているから、フラッシュメモリを用いたデバイス１０の動作や安定性に影響を与えることなく、主電源が存在している限り、バッテリは交換可能である。主電源とバックアップバッテリからのピン２８上の電圧の両方がなくなった場合、鍵記憶部１８は、暗号鍵を保持しなくなる。
【００１９】
＜動作＞
図２のフロー図に示されるように、電源投入またはリセットに応じて、制御回路２０は、鍵記憶部１８が有効な鍵（例えば、全て１または全てゼロでない）が含まれているかどうかを決定するよう構成される。有効な鍵が見つけられた場合、回路２０は、フラッシュメモリが暗号化されたデータでプログラムされていることを示すプログラムフラグを検索する。プログラムフラグが設定されている場合、回路２０は、エンジン１４に、フラッシュメモリ１２に記憶されたデータを復号させ、ＳＲＡＭ１６に復号されたデータを書き込ませる。プログラムフラグ設定されていない場合、回路２０は、フラッシュメモリ１２がエンジン１４によって復号されるべきデータでプログラムされていることを示すよう、プログラムフラグが設定されるのを待つ。有効な鍵が決定されているかぎり、フラッシュメモリを用いたデバイス１０は動作し続ける。
【００２０】
制御回路２０が、鍵記憶部１８は有効な鍵を含んでいないと決定した場合、プログラムフラグは（以前に設定されているならば）クリアされ、鍵選択ピン２２の状態が読み取られる。ピンが、例えば、「ｈｉｇｈ」にされていた場合、回路２０は、ユーザによって鍵記憶部１８に供給される有効な鍵を待つ。ひとたび有効な鍵がロードされると、回路は、鍵が存在する場合について上述したように応答するよう構成される。例えば、タンパ企ての後、「有効」だが、不適当であったり、正しくなかったりした鍵がロードされた場合、暗号化エンジン１４は、フラッシュメモリ１２からの暗号化されたデータを処理し得るが、エンジン１４は、不適当な鍵を使用しているとき、理解できるかまたは使用可能なデータを得られないことを注記する。
【００２１】
ピン２２が、例えば、「ｌｏｗ」にされ、有効な鍵が鍵記憶部１８に保持されていないことを示す場合、回路２０は、乱数発生器１４ａによって提供される鍵を生成するよう構成される。ひとたび有効な鍵が生成されると、回路２０は、フラッシュメモリ１２が暗号化されたデータでプログラムされるのを待ち、プログラムフラグがセットされる。電源が除去され、その後復元された場合、デバイス１０がプログラムフラグによって示された状態に戻るように、プログラムフラグは、好ましくは、不揮発性である。
【００２２】
ユーザによって、または、自己生成されたかどうかにかかわらず、有効な鍵が鍵記憶部１８に入力された後にのみ設定され得るプログラムフラグを読み取ることにより、制御回路２０は、フラッシュメモリ１２のプログラムされている状態とプログラムされていない状態との間を区別するように動作するよう構成される。電源投入され、記憶部１８に保持された有効な鍵を有している時、プログラムフラグが設定されている場合に、不揮発性のフラッシュメモリ１２に存在する任意のデータが復号され、フラグが設定されていない場合に、フラッシュメモリ１２のプログラミングが許容される。
【００２３】
動作中に、フラッシュメモリ１２に書き込まれるべき、ホストシステムプロセッサから発する任意のデータは、メモリ１２にデータを記憶する前に、エンジン１４によって暗号化される。ホストシステムからのデータがメモリデバイス１０のＳＲＡＭ１６に最初に書き込まれるので（デバイス１０の動作では、全ての読み取りと書き込みはＳＲＡＭ１６を介する）、追加のデータを暗号化して、フラッシュメモリに書き込む処理は、アクセス時間に影響を与えない。
【００２４】
本発明のフラッシュメモリを用いたデバイス１０は、システムの観点から、標準的なフラッシュデバイスと同様に動作することが理解される。従って、ホストシステムへ、および、ホストシステムからの典型的なアドレス、データ、および、制御信号（図１の下部を参照）は、ここでは詳細に記載されない。そして、ホストシステムプロセッサが、実際に、ＳＲＡＭ１６からの読み取り／ＳＲＡＭ１６への書き込みをするから、メモリデバイス１０は、読み取り／書き込み動作に、典型的なフラッシュメモリより高速に応答する。
【００２５】
メモリデバイス１０は、バッテリバックアップおよびタンパ標示が利用可能である任意のホストシステムで動作し得る。また、それは、鍵無し（独自のキーを生成する）で、または、ユーザが供給する鍵を用いて動作し得る。いずれの場合も、鍵が外部から読み取られることはできない。重要なことは、デバイス１０が、個別の暗号化ステップの必要性を回避し、フラッシュメモリ１２に記憶されたデータが、常に、それが組み込まれるホストシステムからの介在なしで、静止時に暗号化されていることを確実にする。外部のハードウェアまたはソフトウェアは、暗号化機能を達成するために必要とされない。
【００２６】
本発明のある実施形態がこの中に記載され、示されているが、様々な修正、追加、および、変更が、本発明の真意および範囲から逸脱することなくなされ得ることが、本技術に習熟した者によって理解される。従って、本発明は、添付の特許請求の範囲内にあるそのような修正、追加、および、変更の全てを包含する。
以下に、本願出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ホストシステムのフラッシュメモリにおける不揮発性の記憶のためにプログラムおよび他のデータを暗号化する方法であって、前記ホストシステム内のプロセッサは、前記フラッシュメモリにデータを書き込み、前記フラッシュメモリからデータを読み取るようにプログラムされ、
フラッシュメモリを用いたデバイスであって、フラッシュメモリと、前記ホストシステムから発するデータを暗号化し、前記フラッシュメモリに暗号化された前記データを書き込むために、および、前記ホストシステムによるアクセスのために前記フラッシュメモリに記憶されたデータを復号するために、前記フラッシュメモリに接続された暗号化エンジンと、前記ホストシステムから前記暗号化エンジンに前記データを供給するために、および、前記ホストシステムによるアクセスのために前記暗号化エンジンから復号された前記データを受け取るために前記暗号化エンジンに接続されたスタティックランダムアクセスメモリ（ＳＲＡＭ）と、ユーザまたは前記暗号化エンジンのいずれかによって供給された暗号化鍵を保持するための鍵記憶部と、前記フラッシュメモリを用いたデバイスのコンポーネントの動作を制御するための制御回路とを含む前記フラッシュメモリを用いたデバイスを提供することと、
有効な暗号化鍵が前記鍵記憶部に保持されているかどうかを決定することと、
有効な鍵が前記鍵記憶部に保持されている場合、次に、前記フラッシュメモリに記憶された任意の暗号化されたデータが復号される準備ができていることを示すように、プログラムフラグが設定されているかどうかを決定することと、
前記プログラムフラグが設定されている場合、前記ホストシステムの動作に従って、前記フラッシュメモリにデータを書き込むことと、前記フラッシュメモリからデータを読み取ることとを含む第１の状態に遷移することと、
前記プログラムフラグが設定されていない場合、前記プログラムフラグが設定されるのを待つことを含む第２の状態に遷移することと、
を備える方法。
［Ｃ２］
前記第１の状態は、前記暗号化エンジンによる使用のために、前記ＳＲＡＭに前記データを記憶し、前記データを暗号化し、前記フラッシュメモリに暗号化された前記データを記憶することによって、前記ホストシステムにより前記フラッシュメモリを用いたデバイスに与えられるデータを受け入れることを含む、［Ｃ１］に記載の方法。
［Ｃ３］
有効な鍵が記憶部に保持されていない場合、前記制御回路に入力される鍵選択の状態に従って、（ａ）暗号化鍵を生成することと、前記第２の状態に遷移することとを含む第３の状態に遷移すること、または、（ｂ）有効な鍵がユーザによって入力されるのを待つことを含む第４の状態に遷移することと、のいずれかをするように前記鍵記憶部を構成することを含む、［Ｃ１］に記載の方法。
［Ｃ４］
前記暗号化エンジンによって生成されるか、ユーザによって入力されるかにかかわらず、前記鍵記憶部の揮発性の鍵記憶メモリ領域に、前記暗号化鍵を記憶することと、
前記ＳＲＡＭと前記フラッシュメモリの動作領域から前記鍵記憶メモリ領域を安全に分離することと、
を含む、［Ｃ１］に記載の方法。
［Ｃ５］
主電源またはバックアップバッテリのいずれかから、前記鍵記憶メモリ領域を含む、前記フラッシュメモリを用いたデバイスに電源供給することを含む、［Ｃ４］に記載の方法。
［Ｃ６］
重要なまたは機密扱いの情報またはデータを記憶するためのフラッシュメモリを用いたデバイスであって、
フラッシュメモリと、
ホストシステムのプロセッサから発するデータを暗号化し、前記フラッシュメモリに暗号化された前記データを記憶するために、および、前記フラッシュメモリに記憶された暗号化されたデータを復号するために、前記フラッシュメモリに接続された暗号化エンジンと、
前記暗号化エンジンに関連付けられ、所望されたときに暗号化鍵を生成するために構成された乱数発生器と、
鍵記憶部であって、前記暗号化エンジンによって生成されたか、ユーザによって前記鍵記憶部に入力されたかのいずれかである暗号化鍵を保持するために、前記暗号化エンジンに接続される鍵記憶部と、
前記ホストシステムから発する前記データを前記暗号化エンジンに供給するために、および、前記ホストシステムによるアクセスのために前記暗号化エンジンから復号された前記データを受け取り、記憶するために、前記暗号化エンジンに接続されたスタティックランダムアクセスメモリ（ＳＲＡＭ）と、
前記鍵記憶部と前記ＳＲＡＭに接続される制御回路と、ここにおいて、前記制御回路は、鍵選択とタンパ企てに対応する入力信号に応答して、前記フラッシュメモリを用いたデバイスの動作を制御するために、および、前記フラッシュメモリにおける暗号化されたデータが前記暗号化エンジンによる復号のための準備ができているときに、および、前記フラッシュメモリが前記暗号化エンジンからの暗号化されたデータでプログラムされる準備ができているときに、プログラムフラグを設定するために、構成される、
フラッシュメモリを用いたデバイス。
［Ｃ７］
前記鍵記憶部は、前記ＳＲＡＭと前記フラッシュメモリの動作領域から安全に分離される揮発性の鍵記憶メモリ領域を含む、［Ｃ６］に記載のフラッシュメモリを用いたデバイス。
［Ｃ８］
前記鍵記憶メモリ領域に電力を供給するための主電源とバックアップバッテリを含む、［Ｃ７］に記載のフラッシュメモリを用いたデバイス。
［Ｃ９］
前記制御回路は、（ａ）有効な暗号化鍵が前記鍵記憶部に保持されているかどうかを決定すること、（ｂ）有効な鍵が前記鍵記憶部に保持されている場合、次に、前記プログラムフラグが設定されているかどうかを決定すること、（ｃ）前記プログラムフラグが設定されている場合、前記ホストシステムの動作に応答して、前記フラッシュメモリにデータを書き込むことと、前記フラッシュメモリからデータを読み取ることを含む第１の状態に遷移すること、および、（ｄ）前記プログラムフラグが設定されていない場合、前記プログラムフラグが設定されるのを待つことを含む第２の状態に遷移すること、のために動作する、［Ｃ７］に記載のフラッシュメモリを用いたデバイス。
［Ｃ１０］
前記第１の状態にあるとき、前記フラッシュメモリを用いたデバイスが、（ａ）前記ＳＲＡＭに前記データを記憶することによって、前記ホストシステムにより前記フラッシュメモリを用いたデバイスに与えられたデータを受け入れ、（ｂ）前記データを暗号化し、および、（ｃ）前記フラッシュメモリに暗号化された前記データを記憶する、ように、前記制御回路が構成される、［Ｃ９］に記載のフラッシュメモリを用いたデバイス。
［Ｃ１１］
有効な暗号化鍵が前記鍵記憶部に保持されていない場合、前記フラッシュメモリを用いたデバイスが、前記制御回路に入力される鍵選択信号に従って、（ａ）前記暗号化エンジンが鍵を生成し、その後、前記フラッシュメモリを用いたデバイスが前記第２の状態に遷移する第３の状態に遷移するか、または、（ｂ）前記フラッシュメモリを用いたデバイスが、有効な鍵がユーザによって入力されるのを待つ第４の状態に遷移するか、のいずれかを行うように、前記制御回路が構成される、［Ｃ９］に記載のフラッシュメモリを用いたデバイス。
【図１】
0006585153.tif 000002
【図２】
0006585153.tif 000003