説明

暗号鍵保護方法及び半導体記憶装置

【課題】ファイルデータを不正アクセスから保護する。
【解決手段】管理情報によってパスワード参照が有効とされる第1状態では、パスワード照合結果に応じてファイルデータを鍵で復号することを許可し、管理情報によってパスワード参照が無効とされる第2状態では、パスワード入力がなくとも上記ファイルデータを上記鍵で復号することを許可する。上記第1状態にあることを意味する管理情報は、第1スレッショルド電圧(9112)及びそれよりも低い第2スレッショルド電圧(9111)を用いて記録する。上記第2状態にあることを意味する管理情報は、第3スレッショルド電圧(9111)及び上記第3スレッショルド電圧(9111)よりも低い第4スレッショルド電圧(9110)を用いて記録する。パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留しないようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体記憶装置の暗号鍵保護技術、さらには不揮発性メモリを用い、格納ファイルデータを暗号化するための鍵データと使用者を識別するためのパスワード情報の保護を強化するための技術に関する。
【背景技術】
【0002】
特許文献1には、データを記憶する磁気ディスクメディアと、パスワードを記憶する不揮発性メモリと、入力パスワードを不揮発性メモリに記憶されているパスワードと照合する照合手段と、照合手段の照合結果に応じて磁気ディスクメディアのデータへのアクセスを制御する制御手段とを具備する磁気ディスク装置が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−165439号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
一般的に、不揮発性メモリの一例とされるフラッシュメモリは、外部端子を有するICチップとしてパッケージ化されており、データシートなどで公開されたメモリ制御信号をその端子を通じて送ることで、格納データの読み書きができる。これは磁気ディスクメディアの読み書きに比べ容易である。
【0005】
例えば特許文献1のように、記憶装置内のファイルデータへのアクセスを制限するためのパスワード情報を不揮発性メモリに格納した場合、基板上の不揮発性メモリに直接電気信号を送って、そのパスワード情報を書き換えることは容易である。もしその不揮発性メモリの記録内容が、パスワードが未設定であるときの状態に改竄されたならば、記憶装置内の制御手段はパスワードロックされていないものと誤解するため、第三者にファイルデータが不正に読み出される虞れがある。このような脅威から半導体記憶装置を保護することは極めて重要とされる。
【0006】
本発明の目的は、半導体記憶装置に格納されたファイルデータを不正アクセスから保護するための技術を提供することにある。
【0007】
本発明の上記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【0009】
すなわち、管理情報によってパスワード参照が有効とされる第1状態では、パスワード照合結果に応じて、ファイルデータを鍵で復号することを許可し、管理情報によってパスワード参照が無効とされる第2状態では、パスワード入力がなくとも、上記ファイルデータを上記鍵で復号することを許可する。上記第1状態にあることを意味する管理情報は、第1スレッショルド電圧、及び上記第1スレッショルド電圧よりも低い第2スレッショルド電圧を用いて記録する。上記第2状態にあることを意味する管理情報は、第3スレッショルド電圧、及び上記第3スレッショルド電圧よりも低い第4スレッショルド電圧を用いて記録する。パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留しないようにする。これにより、第三者がパスワード管理ブロックにパスワード無効状態を意味するエントリの複製を追記し、アンロック(Unlocked)状態に偽装し、パスワードなしにファイルデータを読み出すという攻撃手法は不可能となる。
【発明の効果】
【0010】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0011】
すなわち、本発明によれば、パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留することがない。したがって、第三者がパスワード管理ブロックにパスワード無効状態を意味するエントリの複製を追記し、アンロック(Unlocked)状態に偽装し、パスワードなしにファイルデータを読み出すという攻撃手法は不可能となる。ゆえに、紛失や盗難により第三者の手に渡った半導体記憶装置に格納されたファイルデータを不正アクセスから保護できる。
【図面の簡単な説明】
【0012】
【図1】本発明を適用した半導体記憶装置の内部構造を示す図である。
【図2】メモリブロックに格納する各種データを示す図である。
【図3】起動時のパスワードロック状態判定処理の流れを示す図である。
【図4】UNLOCKコマンド処理の流れを示す図である。
【図5】DISABLE PASSWORDコマンド処理の流れを示す図である。
【図6】ERASE PREPARE・ERASE UNITコマンド処理の流れを示す図である。
【図7】SET PASSWORD(ユーザパスワード)コマンド処理の流れを示す図である。
【図8】SET PASSWORD(マスタパスワード)コマンド処理の流れを示す図である。
【図9】フラッシュメモリブロックの構造とメモリセルのスレッショルド電圧分布を示す図である。
【図10】パスワード管理エントリのビット符号化方式を説明するための図である。
【図11】パスワード管理ブロックの状態遷移パターンを示す図である。
【発明を実施するための形態】
【0013】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0014】
1.代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0015】
〔1〕本発明の代表的な実施の形態に係る暗号鍵保護方法は、入力されたファイルデータを暗号化して不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を、上記不揮発性メモリの他部に記憶する半導体記憶装置(1000)を用いて以下のように行われる。
【0016】
すなわち、上記管理情報によってパスワード参照が有効とされる第1状態においては、入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号することを許可する。上記管理情報によって上記パスワード参照が無効とされる第2状態においては、パスワード入力がなくとも、上記ファイルデータを上記鍵で復号することを許可する。上記第1状態にあることを意味する上記管理情報は、第1スレッショルド電圧(9112)、及び上記第1スレッショルド電圧(9112)よりも低い第2スレッショルド電圧(9111)を用いて上記メモリセルアレイに記録する。上記第2状態にあることを意味する上記管理情報は、第3スレッショルド電圧(9111)、及び上記第3スレッショルド電圧(9111)よりも低い第4スレッショルド電圧(9110)を用いて上記メモリセルアレイに記録する。
【0017】
上記の構成によれば、パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留しないようにできる。したがって、第三者がパスワード管理ブロックにパスワード無効状態を意味するエントリの複製を追記し、アンロック(Unlocked)状態に偽装し、パスワードなしにファイルデータを読み出すという攻撃手法は不可能となる。
【0018】
〔2〕上記〔1〕において、上記第2スレッショルド電圧は、上記第3スレッショルド電圧以上に設定される。
【0019】
〔3〕上記〔1〕又は〔2〕において、上記第2状態から上記第1状態に遷移するときには、上記第2状態にあることを意味する上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、上記第1状態にあることを意味する上記管理情報を重ねて記録することができる。
【0020】
〔4〕上記〔1〕又は〔2〕において、上記管理情報の内容更新は、上記第1スレッショルド電圧(9112)以上の第5スレッショルド電圧(9113)を用いて、古い上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、所定の値を重ねて記録し、未記録のメモリセルアレイに、新しい上記管理情報を記録することができる。
【0021】
〔5〕本発明の代表的な実施の形態に係る半導体記憶装置(1000)は、複数のスレッショルド電圧を識別することにより、1セルに2ビット以上を記録可能なメモリセルアレイを含んで成る不揮発性メモリ(1100〜1115)を備える。さらに外部のホストデバイスから入力されたファイルデータを暗号化して上記不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を上記不揮発性メモリの他部に記憶する。そして半導体記憶装置(1000)は、上記半導体記憶装置の暗号鍵を保護可能なコントローラ(1020)を含む。このコントローラは、上記管理情報によってパスワード参照が有効とされる第1状態においては、上記ホストデバイスから入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可する。また、上記コントローラは、上記管理情報によって上記パスワード参照が無効とされる第2状態においては、上記ホストデバイスからのパスワード入力がなくとも、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可する。そして、上記第1状態にあることを意味する上記管理情報は、第1スレッショルド電圧(9112)、及び上記第1スレッショルド電圧(9112)よりも低い第2スレッショルド電圧(9111)を用いて上記メモリセルアレイに記録される。上記第2状態にあることを意味する上記管理情報は、第3スレッショルド電圧(9111)、及び上記第3スレッショルド電圧(9111)よりも低い第4スレッショルド電圧(9110)を用いて上記メモリセルアレイに記録される。上記第2スレッショルド電圧は、上記第3スレッショルド電圧以上に設定される。
【0022】
上記構成の半導体記憶装置においては、パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留しないようにできる。したがって、第三者がパスワード管理ブロックにパスワード無効状態を意味するエントリの複製を追記し、アンロック(Unlocked)状態に偽装し、パスワードなしにファイルデータを読み出すという攻撃手法は不可能となる。
【0023】
〔6〕上記〔5〕において、上記コントローラは、上記第2状態から上記第1状態に遷移するときには、上記第2状態にあることを意味する上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、上記第1状態にあることを意味する上記管理情報を重ねて記録する。
【0024】
〔7〕上記〔5〕において、上記コントローラは、上記管理情報の内容を更新するときには上記第1スレッショルド電圧(9112)以上の第5スレッショルド電圧(9113)を用いて、古い上記管理情報を記録しているメモリセルアレイの同一物理アドレスに所定の値を重ねて記録し、未記録のメモリセルアレイに新しい上記管理情報を記録する。
【0025】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0026】
図1には、本発明にかかる半導体記憶装置1000の構成例が示される。半導体記憶装置1000は、ホストインタフェース1010、メモリコントローラ1020、ホストデータバッファ1030、テンポラリデータバッファ1040、複数(例えば16枚)のフラッシュメモリチップ1100〜1115を含み、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。
【0027】
ホストインタフェース1010は、外部のホストデバイス1500と接続されるインタフェース機構であり、ホストデバイス1500からリード/ライト要求コマンドに応答して、フラッシュメモリに格納されたデータをホストデバイス1500に送信したり、フラッシュメモリに格納すべきライトデータをホストデバイス1500から受信したりする。尚、ホストデバイス1500は、リード/ライトを要求するデータの論理的な格納位置を論理アドレス(以下、LBA(Logical Block Address))によって指定する。このアドレスはフラッシュメモリチップ1100〜1115をメモリコントローラ1020がアクセスする時に用いる物理アドレスとは異なる仮想的なアドレスである。
【0028】
ホストインタフェース1010の機構及びコマンドやデータの送受信のプロトコルについては、標準的なハードディスク装置と互換性のあるインタフェース規格(例えば、パラレルATA、シリアルATA)に準拠する。これらの標準規格では、パスワードを付したコマンドによってユーザが認証されたときにのみ、上記リード/ライト動作を許可するパスワード機能も規定されている。半導体記憶装置1000はこの機能をサポートする。ホストデバイス1500には、ユーザがデータをリード/ライトするときにパスワードを入力するためのパスワード入力手段1510が接続されている。これは例えばキーボードなどである。
【0029】
半導体記憶装置1000は、ユーザのデータを暗号化した状態でフラッシュメモリに格納する。これは、もし当該データが平文状態でフラッシュメモリチップに格納されていたならば、たとえインタフェース上でパスワードによりユーザを制限しても、第三者が半導体記憶装置1000を分解してフラッシュメモリチップを外し、それを直接読むことにより当該データの内容を不正に知ることができてしまうからである。
【0030】
ホストデータバッファ1030は、主にRAM(Random Access Memory)により構成される揮発性メモリである。ホストデバイス1500からのライト要求によって受信したライトデータは、フラッシュメモリチップ1100〜1115に書き込まれる前に、フラッシュメモリチップに入力すべき所定量に達するまでホストデータバッファ1030に格納される。ホストデバイス1500からのリード要求に応答して送信すべきリードデータは、フラッシュメモリチップ1100〜1115から読み出された後に、ホストデバイス1500に出力すべき所定量に達するまでホストデータバッファ1030に格納される。
【0031】
テンポラリデータバッファ1040は、主にRAMにより構成される揮発性メモリである。フラッシュメモリチップ1100〜1115のある物理アドレスに格納されたデータを別の物理アドレスに移動する必要が生じたときに、フラッシュメモリチップから読み出した当該データを一時的にテンポラリデータバッファ1040に保持する。
【0032】
メモリコントローラ1020は、ホストインタフェース1010、ホストデータバッファ1030、テンポラリデータバッファ1040、フラッシュメモリチップ1100〜1115と接続され、ROM(Read Only Memory)を有し、そこに書かれたプログラムに従って、それら周辺要素を制御するマイクロプロセッサである。例えばこのマイクロプロセッサは、上に述べたような、ホストデバイス1500からのリード/ライト要求コマンド・ユーザ認証に関するコマンドの解釈、ホストデバイス1500との間のデータ送受信、ホストデータバッファ1030やテンポラリデータバッファ1040へのアクセス(リード/ライト)を実行する。さらにこのマイクロプロセッサは、フラッシュメモリチップ1100〜1115の制御(リード/プログラム/消去)、ユーザ認証用パスワードの設定・照合、データ暗号鍵の生成、格納データの暗号化・復号などを実行する。メモリコントローラ1020は、ユーザ認証や格納データの暗号化・復号に用いる暗号処理手段1021、コントローラ鍵Kc1022、ダミーユーザパスワードUD1023、ダミーマスタパスワードMD1024を備える。暗号処理手段1021は、例えばAES(Advanced Encryption Standard)という標準的な共通鍵暗号方式に準拠し、上記ROMプログラムに従って鍵・パスワード・データを暗号化・復号するハードウェアロジック回路である。Kc1022、UD1023、MD1024は、いずれも同型式のメモリコントローラ1020に共通の秘密の固定データで、メモリコントローラ1020を製造するメーカが、それらを上記ROMに埋め込む。特に、UD1023、MD1024は、ユーザ認証によるアクセス制限が有効か無効かをメモリコントローラ1020が判断するときに用いられるが、その詳細は後述する。
【0033】
各フラッシュメモリチップ内の不揮発性メモリ領域は、複数(例えば、4096個)のブロック1300〜1311で構成される。格納されたデータはブロックを単位として消去される。ブロックは、複数(例えば、128個)のページ1400で構成される。フラッシュメモリに格納すべきデータはページを単位としてプログラムされる。例えば、ページサイズは4224バイトである。各ブロック内の128個のページをプログラムする順序は昇順であり、基本的にNo.0、No.1、…、No.127の順でプログラムしなければならない。ただし、その途中で、1つのページのプログラムを複数回に分けることは可能である。また、プログラム済みのページを未プログラム状態に戻すときは、そのページが属するブロックを消去し、当該ブロック内の全てのページを未プログラム状態にしなければならない。
【0034】
各チップにおいて上記ブロックは0番から4095番までナンバリングされており、偶数番ブロックの集合と奇数番ブロックの集合はそれぞれプレイン0、プレイン1と呼ばれる。各プレインは消去/プログラム/リード回路を独立に持っており、隣接する2ブロック(すなわち、整数N=0〜2047について2N番と(2N+1)番の2ブロック)を同時に消去することができる。また、それら隣接2ブロック内の同一番号の2ページを同時にプログラム/リードすることができる。
【0035】
図9の(a)には、フラッシュメモリブロックの構成例が示される。
【0036】
1つのメモリブロックを構成するメモリセルアレイ9020は、m本のワードライン9050(WL1〜WLm)とn本のビットライン9010(BL1〜BLn)とm×n個のメモリセルM1〜Mmn(9080、9081、9082、9083など)からなる。このメモリセルのゲートはm本のワードライン9050によって横方向にnセルずつ接続されている。また、メモリセルのソース−チャネル−ドレインのパスはn本のビットライン9010によって縦方向にmセルずつ連結されている。すなわち、NAND型構成である。メモリセルアレイ9020の一辺には行デコーダ9030が位置し、ストリング選択ラインSSL9040、ワードライン9050及び接地選択ラインGSL9041と連結される。行デコーダ9030はメモリチップへ与えられたアドレスに従って該当するメモリブロックを選択するデコーディングと選択されたストリング内で一つのワードラインを選択するデコーディングの組み合わせによってワードライン選択が行なわれる。また、メモリセルアレイ9020の別の一辺にはビットライン9010に連結されるページバッファ9000が位置する。行デコーダ9030やページバッファ9000には電圧発生回路(図示しない)によりメモリセルを読み書きするための可変電圧が供給される。図中の9060はビットライン電流が流れ込む接地である。メモリセルアレイ9020は1セル当たり2ビットのデータビットを貯蔵する多値メモリセルで構成される。
【0037】
1ワードライン上のメモリセルが1ページ分のデータビットを記録するのに使用される。1ブロック内のページ数が128のとき、m=128である。また、1バイトのデータの記録に4セル必要であるため、ページサイズが4224バイトのとき、n=4224×4=16896である。
【0038】
各セルのデータビットは下位データビットと上位データビットに区分される。ここで下位データビットをLSBと定義し、上位データビットをMSBと定義する。例えば、MSBが論理値“1”で、LSBが論理値“0”のセルデータは(1、0)と表す。データビットはメモリセルトランジスタのフローティングゲートにチャージされた電荷のスレッショルド電圧分布に従って区別される。
【0039】
図9の(b)には、メモリセルのスレッショルド電圧分布とデータビット状態の関係が示される。例えば、データビットに対応するスレッショルド電圧分布は、(1、1)に対しては−2.7V以下(9110)、(1、0)に対しては0.3V〜0.7Vの範囲(9111)、(0、0)に対しては1.3V〜1.7Vの範囲(9112)、(0、1)に対しては2.3V〜2.7Vの範囲(9113)であるとする。各々のデータビットは隣接するデータビットと1ビットだけ異なって変化する。したがって、最も低いスレッショルド電圧分布に対応するデータビットを(1、1)とすれば、低電位側から(1、1)、(1、0)、(0、0)、(0、1)の順になる。
【0040】
ページ読み出し動作時には、行デコーダ9030によって選択されたワードラインにはスレッショルド電圧を区別するためにVrd1=0V(9120)、Vrd2=1.0V(9121)、Vrd3=2.0V(9122)が供給され、非選択されたワードラインにはVread=6Vが供給される。
【0041】
ワードライン9050に供給される電圧によってメモリセルがオンセル(On−Cell)であるか、オフセル(Off−Cell)であるかが決められる。ワードライン電圧がスレッショルド電圧より高ければ、オフセルになってビットラインはプリチャージされ、ワードライン電圧がスレッショルド電圧より低ければ、オンセルになってビットラインはディスチャージされる。選択されたワードラインにおいて3つのワードライン電圧を試すことによって、各メモリセルのデータビットを検知し、読み出すページデータを構成する。
【0042】
ページプログラム動作では、F−Nトンネリング(Fowler Nordheim Tunneling)を利用して、選択されたメモリセルトランジスタのフローティングゲートに電子を注入し、所望のスレッショルド電圧に到逹させる。該当するワードライン上のメモリセルのゲートにはプログラム電圧(例えば、14V〜19V)が印加され、チャネルには接地電圧または所定の電圧が印加されるようにする。プログラムされるセルのフローティングゲートとチャネルとの間に形成された高い電界によってチャネルの電子がフローティングゲートとチャネルとの間の酸化膜を通過するトンネリングが起こり、フローティングゲートに電子が蓄積され、当該メモリセルのスレッショルド電圧が上昇する。一方、プログラムする必要がないメモリセルには、チャネルに電源電圧が印加されるようにし、トンネリングを抑止する。
【0043】
図9の(b)における矢印9100、9101、9102は、プログラム動作におけるデータビットの状態遷移を示す。プログラム動作はLSBプログラム動作とMSBプログラム動作の二つの段階に分けて進行される。まず、LSBプログラム動作はLSBを論理値“0”にしたいメモリセルに適用されるもので、(1、1)からLSBのみ論理値“0”になるようにプログラムする工程であり、プログラムされたセルは矢印9100のように(1、0)になる。MSBプログラム動作はLSBプログラムの完了を感知した後、MSBを0にしたいメモリセルに適用されるもので、LSBプログラムの結果によってMSBをプログラムする工程である。もしLSBに論理値“1”が感知されたら、データ貯蔵状態は(1、1)であるので、矢印9102のようにMSBを0にプログラムして(0、1)にする。もしLSBに0が感知されたら、データ貯蔵状態は(1、0)であるので、矢印9101のようにMSBを0にプログラムして(0、0)になるようにする。このように、2回のプログラム動作により、4種類のデータビット状態をメモリセルにプログラムする。尚、フラッシュメモリチップ1100〜1115は、(1、1)から(1、0)へのLSBプログラム9100、及び(1、0)から(0、0)へのMSBプログラム9101を、メモリコントローラ1020からの1回のプログラム制御によって続けて実施することも、2回のプログラム制御によって分けて実施することもできるように構成されている。
【0044】
図9の(b)における破線矢印9103は、ブロック消去動作におけるデータビットの状態遷移を示す。メモリコントローラ1020からの消去制御によって指定されたブロック内のすべてのメモリセルのデータ貯蔵状態は(1、1)に戻される。
【0045】
図2には、半導体記憶装置1000内のフラッシュメモリブロック(1300〜1311など)適用例が示される。搭載されたメモリブロックのほとんどは、ユーザのファイルデータ2320を記録するためのファイルデータブロック群2300として利用される。記録するファイルデータ2320は、FDn2321のようにセクタ(例えば512バイト)単位に分割され、装置固有のデータ暗号鍵Kd2240でそれぞれをEFDn2322のように暗号化し、それらで構成される暗号化ファイルデータ2310をファイルデータブロック群2300内に格納する。
【0046】
また、搭載されたメモリブロックの1つを、半導体記憶装置1000のシリアルナンバー2110を記録するための固有情報ブロック2100として利用する。シリアルナンバー2110は製造時にユニークな値として記録される。このとき、メモリコントローラ1020はこの値に基づいて擬似乱数を生成し、これを装置自身のデータ暗号鍵Kd2240とする。
【0047】
さらに、搭載されたメモリブロックの1つを、パスワード管理ブロック2200として利用する。パスワード管理ブロック2200は、上記データ暗号鍵Kd2240を、ユーザパスワードUPとともに記録するためのブロックである。
【0048】
半導体記憶装置1000にユーザパスワードUPによるアクセス制限がかけられているときは、データ暗号鍵Kd2240はユーザパスワードUPを知らなければ復元できないように暗号化されて記録される。一方、アクセス制限がかけられていないときは、データ暗号鍵Kd2240はメモリコントローラ1020が持つダミーユーザパスワードUD1023を用いて復元できるように暗号化されて記録される。このようなデータ暗号鍵Kd2240と各種パスワード値を含む情報を記録する単位を「エントリ」と呼ぶ。
【0049】
アクセス制限がかけられているときは、ホストデバイス1500からのパスワード認証コマンドによって、正しいユーザパスワードUPまたはマスタパスワードMPが入力されると、メモリコントローラ1020は暗号処理手段1021でデータ暗号鍵Kd2240を復元する。その後、ホストデバイス1500からのリード要求コマンドを受けると、メモリコントローラ1020はファイルデータブロック群2300内に格納された暗号化ファイルデータ2310を暗号処理手段1021によりデータ暗号鍵Kd2240で復号し、ファイルデータ2320を出力する。また、ホストデバイス1500からのライト要求コマンドを受けると、メモリコントローラ1020は入力されたファイルデータ2320を暗号処理手段1021によりデータ暗号鍵Kd2240で暗号化し、暗号化ファイルデータ2310をファイルデータブロック群2300内に格納する。
【0050】
ホストデバイス1500からのパスワード設定/解除コマンドによって、アクセス制限のあり/なしがスイッチする。この変化に依存してパスワード管理ブロック2200に新しいエントリが記録される。そのため、パスワード管理ブロック2200にはユーザの意志によって好きなだけ多数回の書き換えが発生する。一般にフラッシュメモリのブロックを書き換えるときは、プログラム→消去→プログラム→消去・・・を繰り返す必要があるが、フラッシュメモリの書き換え寿命は有限(例えば10000回)である。そこで、メモリコントローラ1020はできるだけパスワード管理ブロック2200を消去しないように書き換えを行うことが好ましい。また、パスワード管理ブロック2200に記録するエントリのサイズは高々4キロバイトである。そこで、パスワード管理ブロック2200を1回消去するたびに128個のページへ未書き込みページがなくなるまでページ昇順に複数回のエントリ追記を実施して、フラッシュメモリの書き換え寿命を浪費しない方式で記録する。図2には、パスワード管理ブロック2200が最後に消去されてからページNo.0(2210)からページNo.123(2220)まではエントリが記録されてきて、ページNo.124(2230)以降のページにはまだエントリが記録されていないことが示される。ページNo.123(2220)に書かれているのが最新エントリであり、そこには現在の有効なデータ暗号鍵Kd、ユーザパスワードUPが含まれる。
【0051】
尚、エントリにはKdやUPの他に、マスタパスワードMPとよばれる情報が含まれる。マスタパスワードMPはユーザパスワードUPを失念したときの補助パスワードであり、マスタパスワードMPをユーザ認証に使ってファイルデータにアクセスできる。また、これはユーザパスワードUPを失念したときのリセットパスワードでもあり、マスタパスワードMPによりユーザパスワードUPを無効にする(アクセス制限を解除する)ことができる。その返りに、フラッシュメモリに格納されたファイルデータは無意味なダミーデータにする。
【0052】
さらに、エントリには上記の他に、セキュリティレベルとよばれる情報が含まれる。セキュリティレベルとはパスワードによる認証方法を指定するものである。High(ハイ)レベルとMaximum(マキシマム)レベルの2種類があり、前者のレベルでは、パスワード認証コマンドでユーザパスワードUPとマスタパスワードMPのいずれかが正しく入力されれば、ファイルデータの読み書きを許可する。後者のレベルでは、パスワード認証コマンドでユーザパスワードUPが正しく入力されたときにのみ、ファイルデータの読み書きを許可する。セキュリティレベルの設定は、パスワードを設定するためのパスワード設定コマンドを用いて行う。以上の機能仕様は、ATA標準規格に準拠している。
【0053】
次に、パスワード管理ブロック2200に記録するエントリ内容の詳細を説明する。以下の説明において、データAとデータBをシャッフル化する一方向性変換を「s」とし、そのシャッフル出力値をs(A、B)と表す。また、鍵KでデータDを暗号化したものをE(K、D)と表す。エントリはエントリ識別子EID2255と、5つの情報要素を含む。以下、5つの情報要素のそれぞれをV値2250、W値2251、X値2252、Y値2253、Z値2254と呼ぶ。まず、V値2250はコントローラ鍵Kc1022とユーザパスワードUP2241のシャッフル値s(Kc、UP)を鍵としてデータ暗号鍵Kd2240を暗号化したE(s(Kc、UP)、Kd)である。W値2251はコントローラ鍵Kc1022とマスタパスワードMP2242のシャッフル値s(Kc、MP)を鍵としてデータ暗号鍵Kd2240を暗号化したE(s(Kc、MP)、Kd)である。X値2252はコントローラ鍵Kc1022とデータ暗号鍵Kd2240のシャッフル値s(Kc、Kd)を鍵としてユーザパスワードUP2241を暗号化したE(s(Kc、Kd)、UP)である。Y値2253はコントローラ鍵Kc1022とデータ暗号鍵Kd2240のシャッフル値s(Kc、Kd)を鍵としてマスタパスワードMP2242を暗号化したE(s(Kc、Kd)、MP)である。最後に、Z値2254はコントローラ鍵Kc1022とデータ暗号鍵Kd2240のシャッフル値s(Kc、Kd)を鍵としてセキュリティレベルLV2243を暗号化したE(s(Kc、Kd)、LV)である。尚、ユーザパスワードUPによるアクセス制限がかけられていないときは、上記のUP2241はダミーユーザパスワードUD1023に等しい。また、マスタパスワードMPが未設定のときは、上記のMP2242はダミーマスタパスワードMD1024に等しい。
【0054】
以上の説明において、各種鍵のサイズは128ビット(16バイト)、各種パスワードのサイズは32バイト、セキュリティレベルのサイズは1バイトである。そのため、それらを組み合わせて構成されるV値2250、W値2251、X値2252、Y値2253、Z値2254のサイズはいずれも高々64バイトである。また、EID2255は、エントリの状態や種類(エントリタイプ)を識別するために各エントリの先頭1バイトに記録される。エントリタイプは次の4つである。[1]未書込みのエントリ、[2]ユーザパスワードによるアクセス制限がかかっていないこと(ユーザパスワード無効)を示すエントリ、[3]ユーザパスワードによるアクセス制限がかかっていること(ユーザパスワード有効)を示すエントリ、[4]すでに使用されていない情報要素を含む不要エントリ。EID2255の符号値については後述する。
【0055】
パスワードによるファイルデータへのアクセス制限機能に関して、半導体記憶装置1000がサポートするATA標準コマンドは以下の5つである。尚、ATAの規格により、マスタパスワードは一度設定されると、変更することは可能だが未設定状態に戻すことはできない。
【0056】
(1)UNLOCK・・・ユーザパスワードまたはマスタパスワードによりユーザを認証し、ファイルデータへのアクセスを可能にする(一時的にアンロックする)。
【0057】
(2)DISABLE PASSWORD・・・ユーザパスワードを無効化し、ファイルデータへのアクセス制限を解除する(恒久的にアンロックする)。
【0058】
(3)ERASE PREPARE・・・次のERASE UNITコマンドの直前に発行する準備コマンド。
【0059】
(4)ERASE UNIT・・・既存のファイルデータを無意味な状態にし、ユーザパスワードを無効化し、ファイルデータへのアクセス制限を解除する(恒久的にアンロックする)。
【0060】
(5)SET PASSWORD・・・・ユーザパスワードまたはマスタパスワードをセキュリティレベルとともに設定・変更する。ユーザパスワードの設定の場合は、ハードリセット後にファイルデータへのアクセス制限が有効になる(ロックされる)。
【0061】
半導体記憶装置1000の起動時にメモリコントローラ1020はパスワードロック状態を判定する。そのフローチャートを図3(a)に示す。まず電源供給が開始されてハードリセットが実行されると(3010)、メモリコントローラ1020はパスワード管理ブロック2200に最後に書かれたエントリを読み出し、そこに設定されているユーザパスワードUPがダミーユーザパスワードUDであるかを調べる(3020)。結果が真(UP=UD)ならば、Unlockedモードとなり(3030)、ユーザによるファイルデータの読み書きを無条件で許可する状態となる。一方、偽(UP≠UD)ならば、Lockedモードとなり(3040)、ユーザによる正しいパスワードの提示がなければファイルデータの読み書きを許可しない状態となる。ステップ3020での判定方法の詳細を図3(b)に示す。パスワード管理ブロック2200に最後に書かれたエントリ内からV値2250及びX値2252を抽出し、メモリコントローラ1020が持つKc1022とUD1023のシャッフル値を鍵としてV値2250を復号する。この復号値をKd'3021とする。そして、Kc1022とKd'3021のシャッフル値を鍵としてX値2252を復号する。この復号値がUD1023と一致していればステップ3020の結果は真である。そのとき、Kd'3021はデータ暗号鍵Kd2240に一致するため、メモリコントローラ1020はKd'3021を復号鍵として暗号化ファイルデータ2310からファイルデータ2320を正しく復元することができる。一方、上記復号値がUD1023と一致していなければステップ3020の結果は偽である。そのときは、Kd'3021でファイルデータ2320を正しく復元することができず、ファイルデータ2320は漏洩しえない。
【0062】
ホストデバイス1500が半導体記憶装置1000にUNLOCKコマンドを発行した時にメモリコントローラ1020が行う処理のフローチャートを図4(a)に示す。まずUNLOCKコマンドを受信すると(4010)、メモリコントローラ1020は当該コマンド内のパラメータを見て、パスワード比較対象がマスタパスワードMPかユーザパスワードUPかを調べる(4020)。対象がマスタパスワードMPならばステップ4030、ユーザパスワードUPならばステップ4040に遷移する。ステップ4030、4040いずれにおいてもパスワード管理ブロック2200に最後に書かれたエントリを読み出し、そこに設定されているマスタパスワードMP/ユーザパスワードUPと、当該コマンドで受け取った入力パスワードが一致するかを調べる。ステップ4030については、結果が真ならば、最後に書かれたエントリに設定されているセキュリティレベルLVがHighかを調べる(4050)。結果が真ならば、Unlockedモードとなり(4060)、ユーザによるファイルデータの読み書きを許可する状態となる。一方、ステップ4030または4050の結果が偽ならば、Lockedモードを維持し、ユーザによる正しいパスワードの提示があるまでファイルデータの読み書きを許可しない。また、ステップ4040については、結果が真ならば、Unlockedモードとなり(4060)、ユーザによるファイルデータの読み書きを許可する状態となる。一方、結果が偽ならば、Lockedモードを維持し、ユーザによる正しいパスワードの提示があるまでファイルデータの読み書きを許可しない。ステップ4030及び4040での判定方法の詳細を図4(b)に示す。パスワード管理ブロック2200に最後に書かれたエントリ内から、ステップ4030ではW値2251及びY値2253を、ステップ4040ではV値2250及びX値2252を抽出する。メモリコントローラ1020が持つKc1022と当該コマンドによる入力パスワード4011のシャッフル値を鍵としてW値2251/V値2250を復号する。この復号値をKd'4012とする。そして、Kc1022とKd'4012のシャッフル値を鍵としてY値2253/X値2252を復号する。この復号値が入力パスワード4011と一致していればステップ4030/4040の結果は真である。そのとき、Kd'4012はデータ暗号鍵Kd2240に一致するため、メモリコントローラ1020はKd'4012を復号鍵として暗号化ファイルデータ2310からファイルデータ2320を正しく復元することができる。一方、上記復号値が入力パスワード4011と一致していなければステップ4030/4040の結果は偽である。そのときは、Kd'4012でファイルデータ2320を正しく復元することができず、ファイルデータ2320は漏洩しえない。尚、ステップ4030の時はさらにZ値2254を抽出し、Kc1022とKd'4012のシャッフル値を鍵としてこれを復号し、セキュリティレベルLV4013を復元する。これはステップ4050で使用する。
【0063】
ホストデバイス1500が半導体記憶装置1000にDISABLE PASSWORDコマンドを発行した時にメモリコントローラ1020が行う処理のフローチャートを図5(a)に示す。まずDISABLE PASSWORDコマンドを受信すると(5010)、メモリコントローラ1020は当該コマンド内のパラメータを見て、パスワード比較対象がマスタパスワードMPかユーザパスワードUPかを調べる。そしてパスワード管理ブロック2200に最後に書かれたエントリを読み出し、そこに設定されている対象パスワードと当該コマンドで受け取った入力パスワードが一致するかを調べる(5020)。その判定方法は図4(b)の場合と同様である。ステップ5020の結果が真ならば、ユーザパスワードUPは無効化され(5030)、Unlockedモードになり(5040)、以後ユーザパスワードの提示がなくてもファイルデータの読み書きを許可する状態となる。一方、ステップ5020の結果が偽ならば、ユーザパスワードUPは無効化されずに処理を終了する。ステップ5030での無効化の詳細を図5(b)に示す。パスワード管理ブロック2200に最後に書かれたエントリの中でV値2250及びX値2252のみ内容を更新したエントリデータを作成し、パスワード管理ブロック2200に(後で述べる)所定の方式で追記する。新しいV値2250は、メモリコントローラ1020が持つKc1022とUD1023のシャッフル値を鍵としてKd2240を暗号化したものである。このKd2240はステップ5020の成功(パスワードの一致)を通じて正しく復元されたデータ暗号鍵Kdである。これは図4(b)でのKd'4012とKd2240の一致と同様である。また、新しいX値2252は、Kc1022とKd2240のシャッフル値を鍵としてUD1023を暗号化したものである。このようなエントリを追記することにより、電源供給をリセットしたときに図3(a)のステップ3020の結果は真となるため、Unlockedモードは継続される。
【0064】
ホストデバイス1500が半導体記憶装置1000にERASE PREPARE及びERASE UNITコマンドを発行した時にメモリコントローラ1020が行う処理のフローチャートを図6(a)に示す。まずERASE PREPAREコマンドを受信し(6010)、次にERASE UNITコマンドを受信する(6020)。この2コマンドは連続発行する必要がある。これはユーザの手違いにより不用意にファイルデータが失われることを防ぐためである。メモリコントローラ1020は、パスワード管理ブロック2200に最後に書かれたエントリを読み出し、そこに設定されているマスタパスワードMPと、ERASE UNITコマンドで受け取った入力パスワードが一致するかを調べる(6030)。ステップ6030の結果が真ならば、データ暗号鍵Kd2240は変更され(6040)、ユーザパスワードUPは無効化され(6050)、Unlockedモードになる(6060)。一方、ステップ6030の結果が偽ならば、そのまま処理を終了する。ステップ6040では、例えば、現在のKd2240に基づいて擬似乱数を発生し、新しいKd2240とする。ステップ6050は、Kd2240に新しい値を用いる以外は、図5(b)の場合と同様である。このように、パスワードによるアクセス制限が無効化されても、Kd2240が変更されたことによって、それまでに格納された暗号化ファイルデータ2310はファイルデータ2320へと正しく復元できなくなる。すなわちファイルデータが全て消去されたことと同然である。ステップ6030での判定方法の詳細を図6(b)に示す。パスワード管理ブロック2200に最後に書かれたエントリ内から、W値2251及びY値2253を抽出する。メモリコントローラ1020が持つKc1022とERASE UNITコマンドによる入力パスワード6021のシャッフル値を鍵としてW値2251を復号する。この復号値をKd'6031とする。そして、Kc1022とKd'6031のシャッフル値を鍵としてY値2253を復号する。この復号値が入力パスワード6021と一致していればステップ6030の結果は真である。一方、上記復号値が入力パスワード6021と一致していなければステップ6030の結果は偽である。
【0065】
ホストデバイス1500が半導体記憶装置1000にユーザパスワードを設定するためのSET PASSWORDコマンドを発行した時にメモリコントローラ1020が行う処理のフローチャートを図7(a)に示す。まずSET PASSWORDコマンドを受信すると(7010)、メモリコントローラ1020は半導体記憶装置1000がUnlockedモードであるかを調べる(7020)。結果が偽ならばそのまま処理を終了する。結果が真ならば、当該コマンド内のパラメータを見て、パスワード設定対象がユーザパスワードUPであることと、要求されたセキュリティレベルLV(HighかMaximumか)を確認し、パスワード管理ブロック2200に、入力されたセキュリティレベルLVとユーザパスワードUPを設定する(7030)。ステップ7030での設定方法の詳細を図7(b)に示す。パスワード管理ブロック2200に最後に書かれたエントリの中でV値2250、X値2252及びZ値2254のみ内容を更新したエントリデータを作成し、パスワード管理ブロック2200に(後で述べる)所定の方式で追記する。新しいV値2250は、メモリコントローラ1020が持つKc1022と当該コマンドで受け取った入力パスワード7011のシャッフル値を鍵としてKd2240を暗号化したものである。このKd2240はそれまでに図3〜6のようなコマンドプロセスでUnlockedモードになった際に正しく復元された(または新しく変更された)データ暗号鍵Kdである。また、新しいX値2252は、Kc1022とKd2240のシャッフル値を鍵として入力パスワード7011を暗号化したものである。また、新しいZ値2254は、Kc1022とKd2240のシャッフル値を鍵として当該コマンドで要求されたセキュリティレベルLV7012を暗号化したものである。このようなエントリを追記することにより、電源供給をリセットしたときに図3(a)のステップ3020の結果は偽となるため、Lockedモードに推移する。そして、ここで設定したユーザパスワードUPの提示がなければファイルデータ2320にアクセスできなくなる。
【0066】
ホストデバイス1500が半導体記憶装置1000にマスタパスワードを設定するためのSET PASSWORDコマンドを発行した時にメモリコントローラ1020が行う処理のフローチャートを図8(a)に示す。まずSET PASSWORDコマンドを受信すると(8010)、メモリコントローラ1020は半導体記憶装置1000がUnlockedモードであるかを調べる(8020)。結果が偽ならばそのまま処理を終了する。結果が真ならば、当該コマンド内のパラメータを見て、パスワード設定対象がマスタパスワードMPであることと、要求されたセキュリティレベルLV(HighかMaximumか)を確認し、パスワード管理ブロック2200に、入力されたセキュリティレベルLVとマスタパスワードMPを設定する(8030)。ステップ8030での設定方法の詳細を図8(b)に示す。パスワード管理ブロック2200に最後に書かれたエントリの中でW値2251、Y値2253及びZ値2254のみ内容を更新したエントリデータを作成し、パスワード管理ブロック2200に(後で述べる)所定の方式で追記する。新しいW値2251は、メモリコントローラ1020が持つKc1022と当該コマンドで受け取った入力パスワード8011のシャッフル値を鍵としてKd2240を暗号化したものである。このKd2240はそれまでに図3〜6のようなコマンドプロセスでUnlockedモードになった際に正しく復元された(または新しく変更された)データ暗号鍵Kdである。また、新しいY値2253は、Kc1022とKd2240のシャッフル値を鍵として入力パスワード8011を暗号化したものである。また、新しいZ値2254は、Kc1022とKd2240のシャッフル値を鍵として当該コマンドで要求されたセキュリティレベルLV8012を暗号化したものである。
【0067】
パスワード管理ブロック2200にエントリを記録する時は、エントリ識別子(EID2255)と、その5つの情報要素(V値2250、W値2251、X値2252、Y値2253、Z値2254)に特別な符号化を施す。図10(a)はその符号化規則を示したものである。EIDの符号値は、エントリタイプが未書込みエントリのときFFh、ユーザパスワード無効エントリのときBBh、ユーザパスワード有効エントリのとき22h、不要エントリのとき00hである。また、V〜Zの各値を0と1の2進数で表現したときの各1ビットを2ビットで符号化する。符号化規則はエントリタイプに応じて4パターンに分けられる3パターンに分けられる。まず、未書込みのエントリは、5つの情報要素を記録する場所の全てのビット値を(1、1)に符号化する。ユーザパスワードが無効(恒久アンロック)であるときのエントリは、ビット値0を(1、0)に、ビット値1を(1、1)に符号化する。ユーザパスワードが有効(ロック)であるときのエントリは、ビット値0を(0、0)に、ビット値1を(1、0)に符号化する。そして、図2のページNo.0(2210)〜No.122(2211)に記録されたエントリのように現在使われていない不要エントリは、5つの情報要素を記録する場所の全てのビット値を(0、0)に符号化する。尚、この符号化によってV〜Zの各値を記録するための容量は元のサイズの2倍になるが、それでも尚、それら5つの情報要素を含むエントリのサイズはページサイズ4KBよりも小さい。また、以上4種類の符号規則では、エントリタイプによって符号値(1、0)や(0、0)で表されるビット値が変わるという特徴があるが、メモリコントローラ1020がエントリを読むときには、まずEIDの値を参照することで1つの符号規則を特定できるため、符号値(1、0)や(0、0)を正しいビット値へ復元することができる。
【0068】
次に、図11を参照しながら、図5〜図8の処理中に発生するエントリ追記の方法を説明する。
【0069】
図11の(a)は、ユーザパスワードが無効のときにSET PASSWORD(User)コマンドによってユーザパスワードを有効にするとき(図7のステップ7030)のエントリ追記方法である。エントリタイプが変わることによって、図10の(a)中の矢印10000、10010、10020、10030で示すように4通りの符号変換が発生しうる。それぞれの変換を実現するため、図10の(b)のように、フラッシュメモリセルのプログラム操作によってスレッショルド電圧を上昇させたり、維持したりする。ゆえに、メモリコントローラ1020は、ユーザパスワードが無効であることを意味するエントリ11010を含むページに再度プログラムを施すことで、ユーザパスワードが有効であることを意味するエントリ11020に更新することができる。
【0070】
図11の(b)は、ユーザパスワードが有効のときにDISABLE PASSWORDコマンドによってユーザパスワードを無効にするとき(図5のステップ5030)のエントリ追記方法である。メモリコントローラ1020は、ユーザパスワードが有効であることを意味するエントリ11030を含むページに再度プログラムを施すことで、不要を意味するエントリ11040に更新する。このとき図10の(c)のように、フラッシュメモリセルのプログラム操作によってスレッショルド電圧を上昇させたり、維持したりして、図10の(a)において矢印10040で示すような符号変換を実現する。そして、エントリ11030があったページの次番号の未書き込みページ11050にユーザパスワードが無効であることを意味するエントリ11060を追記する。ただし、エントリ11030があったページが最終ページ(No.127)であるときはエントリ11040への更新を実施せずに、パスワード管理ブロック2200を消去して、その先頭ページ(No.0)にユーザパスワードが無効であることを意味するエントリを記録する。
【0071】
図11(c)は、ユーザパスワードが有効のときにSET PASSWORDコマンドによってユーザパスワードやマスタパスワードを設定・変更するとき(図7のステップ7030、図8のステップ8030)のエントリ追記方法である。メモリコントローラ1020は、ユーザパスワードが有効であることを意味するエントリ11070を含むページに再度プログラムを施すことで、不要を意味するエントリ11080に更新する。このとき図10の(c)のように、フラッシュメモリセルのプログラム操作によってスレッショルド電圧を上昇させたり、維持したりして、図10の(a)中の矢印10040で示すような符号変換を実現する。そして、エントリ11070があったページの次番号の未書き込みページ11090にユーザパスワードが有効であることを意味するエントリ11100を追記する。ただし、エントリ11070があったページが最終ページ(No.127)であるときはエントリ11080への更新を実施せずに、パスワード管理ブロック2200を消去して、その先頭ページ(No.0)にユーザパスワードが有効であることを意味するエントリを記録する。
【0072】
図11の(d)は、ユーザパスワードが無効のときにSET PASSWORD(Master)コマンドによってマスタパスワードを設定・変更するとき(図8のステップ8030)のエントリ追記方法である。メモリコントローラ1020は、ユーザパスワードが無効であることを意味するエントリ11110を含むページに再度プログラムを施すことで、不要を意味するエントリ11120に更新する。このとき図10(c)のように、フラッシュメモリセルのプログラム操作によってスレッショルド電圧を上昇させたり、維持したりして、図10の(a)中の矢印10040で示すような符号変換を実現する。そして、エントリ11110があったページの次番号の未書き込みページ11130にユーザパスワードが無効であることを意味するエントリ11140を追記する。ただし、エントリ11110があったページが最終ページ(No.127)であるときはエントリ11120への更新を実施せずに、パスワード管理ブロック2200を消去して、その先頭ページ(No.0)にユーザパスワードが無効であることを意味するエントリを記録する。
【0073】
尚、図11(a)でのエントリ更新(11010→11020)において、エントリ識別子EIDはBBhから22hに変化するが、これは図10(b)の10020及び10030のようなフラッシュメモリセルのプログラム操作によって実現できる。
【0074】
また、図11(b)でのエントリ更新(11030→11040、11050→11060)において、エントリ識別子EIDはそれぞれ22hから00hに、FFhからBBhに変化するが、これは図10(b)の10020及び10030のようなフラッシュメモリセルのプログラム操作によって実現できる。
【0075】
さらに、図11(c)でのエントリ更新(11070→11080、11090→11100)において、エントリ識別子EIDはそれぞれ22hから00hに、FFhから22hに変化するが、これは図10(b)の10000、10020及び10030のようなフラッシュメモリセルのプログラム操作によって実現できる。
【0076】
そして、図11(d)でのエントリ更新(11110→11120、11130→11140)において、エントリ識別子EIDはそれぞれBBhから00hに、FFhからBBhに変化するが、これは図10の(b)における10000、10020及び10030のようなフラッシュメモリセルのプログラム操作によって実現できる。
【0077】
図11のような追記方法により、半導体記憶装置1000は、メモリブロック書き換え寿命の向上と、不正利用に対するセキュリティ向上の2つの効果を享受する。
【0078】
前者の理由については、図11(a)のようにエントリ11010をエントリ11020に書き換えることで、結果的にフラッシュメモリの同一物理アドレスのエントリが上書きされるため、未書き込みページを消費することなくユーザパスワード設定処理を実現することができるからである。例えば、ユーザパスワードの無効化と有効化を交互に行った場合、パスワード管理ブロック2200の消去1回当たり、2×128ページ=256回のエントリ更新ができる。1回の書き込みで1ページずつを消費する通常のフラッシュメモリ記録方式に比べてメモリブロックの寿命は2倍になる。
【0079】
後者の理由については、図11(d)のようにエントリ11110をエントリ11120に書き換えることで、結果的にフラッシュメモリの同一物理アドレスのエントリが上書きされるため、ユーザパスワードが無効であることを意味するエントリ情報がパスワード管理ブロック2200上に残らないからである。これについて補足すると、もしユーザパスワードが無効であることを意味するエントリ情報が残っていたならば、そのエントリの複製をメモリコントローラ1020を介さずに次の未書き込みページに記録することで、ユーザパスワードが無効化であるとメモリコントローラ1020を誤解させることができる。例えば、ユーザパスワードによりアクセス制限がかけられた半導体記憶装置1000が第三者の手に渡ったとき、その第三者がそれを分解してフラッシュメモリチップのインタフェース端子に直接電気信号を送って上記の複製を行えば、(第三者にとって未知の)ユーザパスワードを無効化してアクセス制限を解除することができる。これにより第三者はパスワードなしでファイルデータを読み出すことができる。図11のような追記方法は、このような不正が防止できるため、セキュリティが向上するのである。尚、前述のように、Kd2240は半導体記憶装置1000に固有であり、他の製品のパスワード管理ブロックからユーザパスワード無効状態を意味するエントリを複製をしても、Kdが違えばファイルデータを正しく復元できない。ゆえに、ファイルデータが不正に解読されることはない。
【0080】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0081】
例えば、上記実施の形態では、2ビット/セルの多値フラッシュメモリに対する本発明の適用例であるが、それ以上の記録密度の多値フラッシュメモリに対しても本発明は適用できる。例えば、3ビット/セルの多値フラッシュメモリでは以下のとおりである。まず、8通りのプログラム状態(1、1、1)〜(0、0、0)から、少なくとも3つの状態を選び、図10(a)のように、「有効」を符号化する2つの状態電位のうち低電位のほうが、「無効」を符号化する2つの状態電位のうち高電位のほうと同じかそれ以上であるようにする。そして「不要」を符号化する2つの状態電位のうち低電位のほうが、「有効」を符号化する2つの状態電位のうち高電位のほうと同じかそれ以上であるように選択する。これにより、無効エントリに有効/不要エントリを、また有効エントリに不要エントリを重ねて記録することができる。このように、いかなる多値フラッシュメモリに対しても本発明が効果を奏することは明白である。
【符号の説明】
【0082】
1000 半導体記憶装置
1020 メモリコントローラ
1030 ホストデータバッファ
1040 テンポラリデータバッファ
1100〜1115 フラッシュメモリチップ
1500 ホストデバイス
2200 パスワード管理ブロック

【特許請求の範囲】
【請求項1】
メモリセルアレイを含む不揮発性メモリを備え、入力されたファイルデータを暗号化して上記不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を、上記不揮発性メモリの他部に記憶する半導体記憶装置における暗号鍵保護方法であって、
上記管理情報によってパスワード参照が有効とされる第1状態においては、入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号することを許可し、
上記管理情報によって上記パスワード参照が無効とされる第2状態においては、パスワード入力がなくとも、上記ファイルデータを上記鍵で復号することを許可し、
上記第1状態にあることを意味する上記管理情報は、第1スレッショルド電圧、及び上記第1スレッショルド電圧よりも低い第2スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第2状態にあることを意味する上記管理情報は、第3スレッショルド電圧、及び上記第3スレッショルド電圧よりも低い第4スレッショルド電圧を用いて上記メモリセルアレイに記録することを特徴とする暗号鍵保護方法。
【請求項2】
複数のスレッショルド電圧を識別することにより、1セルに2ビット以上を記録可能なメモリセルアレイを含んで成る不揮発性メモリを備え、ホストデバイスから入力されたファイルデータを暗号化して上記不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を、上記不揮発性メモリの他部に記憶する半導体記憶装置における暗号鍵保護方法であって、
上記管理情報によってパスワード参照が有効とされる第1状態においては、上記ホストデバイスから入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可し、
上記管理情報によって上記パスワード参照が無効とされる第2状態においては、上記ホストデバイスからのパスワード入力がなくとも、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可し、
上記第1状態にあることを意味する上記管理情報は、第1スレッショルド電圧、及び上記第1スレッショルド電圧よりも低い第2スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第2状態にあることを意味する上記管理情報は、第3スレッショルド電圧、及び上記第3スレッショルド電圧よりも低い第4スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第2スレッショルド電圧は、上記第3スレッショルド電圧以上に設定することを特徴とする暗号鍵保護方法。
【請求項3】
上記第2状態から上記第1状態に遷移するときには、上記第2状態にあることを意味する上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、上記第1状態にあることを意味する上記管理情報を重ねて記録する請求項1又は2記載の暗号鍵保護方法。
【請求項4】
上記管理情報の内容更新は、上記第1スレッショルド電圧以上の第5スレッショルド電圧を用いて、古い上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、所定の値を重ねて記録し、未記録のメモリセルアレイに、新しい上記管理情報を記録する請求項1又は2記載の暗号鍵保護方法。
【請求項5】
複数のスレッショルド電圧を識別することにより、1セルに2ビット以上を記録可能なメモリセルアレイを含んで成る不揮発性メモリを備え、外部のホストデバイスから入力されたファイルデータを暗号化して上記不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を上記不揮発性メモリの他部に記憶する半導体記憶装置であって、
上記半導体記憶装置の暗号鍵を保護可能なコントローラを含み、
上記コントローラは、
上記管理情報によってパスワード参照が有効とされる第1状態においては、上記ホストデバイスから入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可し、
上記管理情報によって上記パスワード参照が無効とされる第2状態においては、上記ホストデバイスからのパスワード入力がなくとも、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可し、
上記第1状態にあることを意味する上記管理情報は、第1スレッショルド電圧、及び上記第1スレッショルド電圧よりも低い第2スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第2状態にあることを意味する上記管理情報は、第3スレッショルド電圧、及び上記第3スレッショルド電圧よりも低い第4スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第2スレッショルド電圧は、上記第3スレッショルド電圧以上に設定されて成ることを特徴とする上記半導体記憶装置。
【請求項6】
上記コントローラは、上記第2状態から上記第1状態に遷移するときには、上記第2状態にあることを意味する上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、上記第1状態にあることを意味する上記管理情報を重ねて記録する請求項5記載の半導体記憶装置。
【請求項7】
上記コントローラは、上記管理情報の内容を更新するときには、上記第1スレッショルド電圧以上の第5スレッショルド電圧を用いて、古い上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、所定の値を重ねて記録し、未記録のメモリセルアレイに、新しい上記管理情報を記録する請求項5記載の半導体記憶装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2010−193013(P2010−193013A)
【公開日】平成22年9月2日(2010.9.2)
【国際特許分類】
【出願番号】特願2009−33186(P2009−33186)
【出願日】平成21年2月16日(2009.2.16)
【出願人】(000233169)株式会社日立超エル・エス・アイ・システムズ (327)
【Fターム(参考)】