(57)【要約】【課題】ファイルデータを不正アクセスから保護する。【解決手段】管理情報によってパスワード参照が有効とされる第１状態では、パスワード照合結果に応じてファイルデータを鍵で復号することを許可し、管理情報によってパスワード参照が無効とされる第２状態では、パスワード入力がなくとも上記ファイルデータを上記鍵で復号することを許可する。上記第１状態にあることを意味する管理情報は、第１スレッショルド電圧（９１１２）及びそれよりも低い第２スレッショルド電圧（９１１１）を用いて記録する。上記第２状態にあることを意味する管理情報は、第３スレッショルド電圧（９１１１）及び上記第３スレッショルド電圧（９１１１）よりも低い第４スレッショルド電圧（９１１０）を用いて記録する。パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留しないようにする。【選択図】図９
2010193013.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルアレイを含む不揮発性メモリを備え、入力されたファイルデータを暗号化して上記不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を、上記不揮発性メモリの他部に記憶する半導体記憶装置における暗号鍵保護方法であって、
上記管理情報によってパスワード参照が有効とされる第１状態においては、入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号することを許可し、
上記管理情報によって上記パスワード参照が無効とされる第２状態においては、パスワード入力がなくとも、上記ファイルデータを上記鍵で復号することを許可し、
上記第１状態にあることを意味する上記管理情報は、第１スレッショルド電圧、及び上記第１スレッショルド電圧よりも低い第２スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第２状態にあることを意味する上記管理情報は、第３スレッショルド電圧、及び上記第３スレッショルド電圧よりも低い第４スレッショルド電圧を用いて上記メモリセルアレイに記録することを特徴とする暗号鍵保護方法。
【請求項２】
複数のスレッショルド電圧を識別することにより、１セルに２ビット以上を記録可能なメモリセルアレイを含んで成る不揮発性メモリを備え、ホストデバイスから入力されたファイルデータを暗号化して上記不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を、上記不揮発性メモリの他部に記憶する半導体記憶装置における暗号鍵保護方法であって、
上記管理情報によってパスワード参照が有効とされる第１状態においては、上記ホストデバイスから入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可し、
上記管理情報によって上記パスワード参照が無効とされる第２状態においては、上記ホストデバイスからのパスワード入力がなくとも、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可し、
上記第１状態にあることを意味する上記管理情報は、第１スレッショルド電圧、及び上記第１スレッショルド電圧よりも低い第２スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第２状態にあることを意味する上記管理情報は、第３スレッショルド電圧、及び上記第３スレッショルド電圧よりも低い第４スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第２スレッショルド電圧は、上記第３スレッショルド電圧以上に設定することを特徴とする暗号鍵保護方法。
【請求項３】
上記第２状態から上記第１状態に遷移するときには、上記第２状態にあることを意味する上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、上記第１状態にあることを意味する上記管理情報を重ねて記録する請求項１又は２記載の暗号鍵保護方法。
【請求項４】
上記管理情報の内容更新は、上記第１スレッショルド電圧以上の第５スレッショルド電圧を用いて、古い上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、所定の値を重ねて記録し、未記録のメモリセルアレイに、新しい上記管理情報を記録する請求項１又は２記載の暗号鍵保護方法。
【請求項５】
複数のスレッショルド電圧を識別することにより、１セルに２ビット以上を記録可能なメモリセルアレイを含んで成る不揮発性メモリを備え、外部のホストデバイスから入力されたファイルデータを暗号化して上記不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を上記不揮発性メモリの他部に記憶する半導体記憶装置であって、
上記半導体記憶装置の暗号鍵を保護可能なコントローラを含み、
上記コントローラは、
上記管理情報によってパスワード参照が有効とされる第１状態においては、上記ホストデバイスから入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可し、
上記管理情報によって上記パスワード参照が無効とされる第２状態においては、上記ホストデバイスからのパスワード入力がなくとも、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可し、
上記第１状態にあることを意味する上記管理情報は、第１スレッショルド電圧、及び上記第１スレッショルド電圧よりも低い第２スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第２状態にあることを意味する上記管理情報は、第３スレッショルド電圧、及び上記第３スレッショルド電圧よりも低い第４スレッショルド電圧を用いて上記メモリセルアレイに記録し、
上記第２スレッショルド電圧は、上記第３スレッショルド電圧以上に設定されて成ることを特徴とする上記半導体記憶装置。
【請求項６】
上記コントローラは、上記第２状態から上記第１状態に遷移するときには、上記第２状態にあることを意味する上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、上記第１状態にあることを意味する上記管理情報を重ねて記録する請求項５記載の半導体記憶装置。
【請求項７】
上記コントローラは、上記管理情報の内容を更新するときには、上記第１スレッショルド電圧以上の第５スレッショルド電圧を用いて、古い上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、所定の値を重ねて記録し、未記録のメモリセルアレイに、新しい上記管理情報を記録する請求項５記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置の暗号鍵保護技術、さらには不揮発性メモリを用い、格納ファイルデータを暗号化するための鍵データと使用者を識別するためのパスワード情報の保護を強化するための技術に関する。
【背景技術】
【０００２】
特許文献１には、データを記憶する磁気ディスクメディアと、パスワードを記憶する不揮発性メモリと、入力パスワードを不揮発性メモリに記憶されているパスワードと照合する照合手段と、照合手段の照合結果に応じて磁気ディスクメディアのデータへのアクセスを制御する制御手段とを具備する磁気ディスク装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１６５４３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般的に、不揮発性メモリの一例とされるフラッシュメモリは、外部端子を有するＩＣチップとしてパッケージ化されており、データシートなどで公開されたメモリ制御信号をその端子を通じて送ることで、格納データの読み書きができる。これは磁気ディスクメディアの読み書きに比べ容易である。
【０００５】
例えば特許文献１のように、記憶装置内のファイルデータへのアクセスを制限するためのパスワード情報を不揮発性メモリに格納した場合、基板上の不揮発性メモリに直接電気信号を送って、そのパスワード情報を書き換えることは容易である。もしその不揮発性メモリの記録内容が、パスワードが未設定であるときの状態に改竄されたならば、記憶装置内の制御手段はパスワードロックされていないものと誤解するため、第三者にファイルデータが不正に読み出される虞れがある。このような脅威から半導体記憶装置を保護することは極めて重要とされる。
【０００６】
本発明の目的は、半導体記憶装置に格納されたファイルデータを不正アクセスから保護するための技術を提供することにある。
【０００７】
本発明の上記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【０００９】
すなわち、管理情報によってパスワード参照が有効とされる第１状態では、パスワード照合結果に応じて、ファイルデータを鍵で復号することを許可し、管理情報によってパスワード参照が無効とされる第２状態では、パスワード入力がなくとも、上記ファイルデータを上記鍵で復号することを許可する。上記第１状態にあることを意味する管理情報は、第１スレッショルド電圧、及び上記第１スレッショルド電圧よりも低い第２スレッショルド電圧を用いて記録する。上記第２状態にあることを意味する管理情報は、第３スレッショルド電圧、及び上記第３スレッショルド電圧よりも低い第４スレッショルド電圧を用いて記録する。パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留しないようにする。これにより、第三者がパスワード管理ブロックにパスワード無効状態を意味するエントリの複製を追記し、アンロック（Ｕｎｌｏｃｋｅｄ）状態に偽装し、パスワードなしにファイルデータを読み出すという攻撃手法は不可能となる。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、本発明によれば、パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留することがない。したがって、第三者がパスワード管理ブロックにパスワード無効状態を意味するエントリの複製を追記し、アンロック（Ｕｎｌｏｃｋｅｄ）状態に偽装し、パスワードなしにファイルデータを読み出すという攻撃手法は不可能となる。ゆえに、紛失や盗難により第三者の手に渡った半導体記憶装置に格納されたファイルデータを不正アクセスから保護できる。
【図面の簡単な説明】
【００１２】
【図１】本発明を適用した半導体記憶装置の内部構造を示す図である。
【図２】メモリブロックに格納する各種データを示す図である。
【図３】起動時のパスワードロック状態判定処理の流れを示す図である。
【図４】ＵＮＬＯＣＫコマンド処理の流れを示す図である。
【図５】ＤＩＳＡＢＬＥ  ＰＡＳＳＷＯＲＤコマンド処理の流れを示す図である。
【図６】ＥＲＡＳＥ  ＰＲＥＰＡＲＥ・ＥＲＡＳＥ  ＵＮＩＴコマンド処理の流れを示す図である。
【図７】ＳＥＴ  ＰＡＳＳＷＯＲＤ（ユーザパスワード）コマンド処理の流れを示す図である。
【図８】ＳＥＴ  ＰＡＳＳＷＯＲＤ（マスタパスワード）コマンド処理の流れを示す図である。
【図９】フラッシュメモリブロックの構造とメモリセルのスレッショルド電圧分布を示す図である。
【図１０】パスワード管理エントリのビット符号化方式を説明するための図である。
【図１１】パスワード管理ブロックの状態遷移パターンを示す図である。
【発明を実施するための形態】
【００１３】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１４】
１．代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕本発明の代表的な実施の形態に係る暗号鍵保護方法は、入力されたファイルデータを暗号化して不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を、上記不揮発性メモリの他部に記憶する半導体記憶装置（１０００）を用いて以下のように行われる。
【００１６】
すなわち、上記管理情報によってパスワード参照が有効とされる第１状態においては、入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号することを許可する。上記管理情報によって上記パスワード参照が無効とされる第２状態においては、パスワード入力がなくとも、上記ファイルデータを上記鍵で復号することを許可する。上記第１状態にあることを意味する上記管理情報は、第１スレッショルド電圧（９１１２）、及び上記第１スレッショルド電圧（９１１２）よりも低い第２スレッショルド電圧（９１１１）を用いて上記メモリセルアレイに記録する。上記第２状態にあることを意味する上記管理情報は、第３スレッショルド電圧（９１１１）、及び上記第３スレッショルド電圧（９１１１）よりも低い第４スレッショルド電圧（９１１０）を用いて上記メモリセルアレイに記録する。
【００１７】
上記の構成によれば、パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留しないようにできる。したがって、第三者がパスワード管理ブロックにパスワード無効状態を意味するエントリの複製を追記し、アンロック（Ｕｎｌｏｃｋｅｄ）状態に偽装し、パスワードなしにファイルデータを読み出すという攻撃手法は不可能となる。
【００１８】
〔２〕上記〔１〕において、上記第２スレッショルド電圧は、上記第３スレッショルド電圧以上に設定される。
【００１９】
〔３〕上記〔１〕又は〔２〕において、上記第２状態から上記第１状態に遷移するときには、上記第２状態にあることを意味する上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、上記第１状態にあることを意味する上記管理情報を重ねて記録することができる。
【００２０】
〔４〕上記〔１〕又は〔２〕において、上記管理情報の内容更新は、上記第１スレッショルド電圧（９１１２）以上の第５スレッショルド電圧（９１１３）を用いて、古い上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、所定の値を重ねて記録し、未記録のメモリセルアレイに、新しい上記管理情報を記録することができる。
【００２１】
〔５〕本発明の代表的な実施の形態に係る半導体記憶装置（１０００）は、複数のスレッショルド電圧を識別することにより、１セルに２ビット以上を記録可能なメモリセルアレイを含んで成る不揮発性メモリ（１１００〜１１１５）を備える。さらに外部のホストデバイスから入力されたファイルデータを暗号化して上記不揮発性メモリの一部に記憶し、上記ファイルデータを復号するための鍵を含む管理情報を上記不揮発性メモリの他部に記憶する。そして半導体記憶装置（１０００）は、上記半導体記憶装置の暗号鍵を保護可能なコントローラ（１０２０）を含む。このコントローラは、上記管理情報によってパスワード参照が有効とされる第１状態においては、上記ホストデバイスから入力されたパスワードの照合を行い、その照合結果に応じて、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可する。また、上記コントローラは、上記管理情報によって上記パスワード参照が無効とされる第２状態においては、上記ホストデバイスからのパスワード入力がなくとも、上記ファイルデータを上記鍵で復号し、上記ホストデバイスへ読み出すことを許可する。そして、上記第１状態にあることを意味する上記管理情報は、第１スレッショルド電圧（９１１２）、及び上記第１スレッショルド電圧（９１１２）よりも低い第２スレッショルド電圧（９１１１）を用いて上記メモリセルアレイに記録される。上記第２状態にあることを意味する上記管理情報は、第３スレッショルド電圧（９１１１）、及び上記第３スレッショルド電圧（９１１１）よりも低い第４スレッショルド電圧（９１１０）を用いて上記メモリセルアレイに記録される。上記第２スレッショルド電圧は、上記第３スレッショルド電圧以上に設定される。
【００２２】
上記構成の半導体記憶装置においては、パスワード有効状態では、パスワード管理ブロック内のメモリページ上にパスワード無効状態を意味するエントリ履歴が残留しないようにできる。したがって、第三者がパスワード管理ブロックにパスワード無効状態を意味するエントリの複製を追記し、アンロック（Ｕｎｌｏｃｋｅｄ）状態に偽装し、パスワードなしにファイルデータを読み出すという攻撃手法は不可能となる。
【００２３】
〔６〕上記〔５〕において、上記コントローラは、上記第２状態から上記第１状態に遷移するときには、上記第２状態にあることを意味する上記管理情報を記録しているメモリセルアレイの同一物理アドレスに、上記第１状態にあることを意味する上記管理情報を重ねて記録する。
【００２４】
〔７〕上記〔５〕において、上記コントローラは、上記管理情報の内容を更新するときには上記第１スレッショルド電圧（９１１２）以上の第５スレッショルド電圧（９１１３）を用いて、古い上記管理情報を記録しているメモリセルアレイの同一物理アドレスに所定の値を重ねて記録し、未記録のメモリセルアレイに新しい上記管理情報を記録する。
【００２５】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２６】
図１には、本発明にかかる半導体記憶装置１０００の構成例が示される。半導体記憶装置１０００は、ホストインタフェース１０１０、メモリコントローラ１０２０、ホストデータバッファ１０３０、テンポラリデータバッファ１０４０、複数（例えば１６枚）のフラッシュメモリチップ１１００〜１１１５を含み、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。
【００２７】
ホストインタフェース１０１０は、外部のホストデバイス１５００と接続されるインタフェース機構であり、ホストデバイス１５００からリード／ライト要求コマンドに応答して、フラッシュメモリに格納されたデータをホストデバイス１５００に送信したり、フラッシュメモリに格納すべきライトデータをホストデバイス１５００から受信したりする。尚、ホストデバイス１５００は、リード／ライトを要求するデータの論理的な格納位置を論理アドレス（以下、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ））によって指定する。このアドレスはフラッシュメモリチップ１１００〜１１１５をメモリコントローラ１０２０がアクセスする時に用いる物理アドレスとは異なる仮想的なアドレスである。
【００２８】
ホストインタフェース１０１０の機構及びコマンドやデータの送受信のプロトコルについては、標準的なハードディスク装置と互換性のあるインタフェース規格（例えば、パラレルＡＴＡ、シリアルＡＴＡ）に準拠する。これらの標準規格では、パスワードを付したコマンドによってユーザが認証されたときにのみ、上記リード／ライト動作を許可するパスワード機能も規定されている。半導体記憶装置１０００はこの機能をサポートする。ホストデバイス１５００には、ユーザがデータをリード／ライトするときにパスワードを入力するためのパスワード入力手段１５１０が接続されている。これは例えばキーボードなどである。
【００２９】
半導体記憶装置１０００は、ユーザのデータを暗号化した状態でフラッシュメモリに格納する。これは、もし当該データが平文状態でフラッシュメモリチップに格納されていたならば、たとえインタフェース上でパスワードによりユーザを制限しても、第三者が半導体記憶装置１０００を分解してフラッシュメモリチップを外し、それを直接読むことにより当該データの内容を不正に知ることができてしまうからである。
【００３０】
ホストデータバッファ１０３０は、主にＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）により構成される揮発性メモリである。ホストデバイス１５００からのライト要求によって受信したライトデータは、フラッシュメモリチップ１１００〜１１１５に書き込まれる前に、フラッシュメモリチップに入力すべき所定量に達するまでホストデータバッファ１０３０に格納される。ホストデバイス１５００からのリード要求に応答して送信すべきリードデータは、フラッシュメモリチップ１１００〜１１１５から読み出された後に、ホストデバイス１５００に出力すべき所定量に達するまでホストデータバッファ１０３０に格納される。
【００３１】
テンポラリデータバッファ１０４０は、主にＲＡＭにより構成される揮発性メモリである。フラッシュメモリチップ１１００〜１１１５のある物理アドレスに格納されたデータを別の物理アドレスに移動する必要が生じたときに、フラッシュメモリチップから読み出した当該データを一時的にテンポラリデータバッファ１０４０に保持する。
【００３２】
メモリコントローラ１０２０は、ホストインタフェース１０１０、ホストデータバッファ１０３０、テンポラリデータバッファ１０４０、フラッシュメモリチップ１１００〜１１１５と接続され、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を有し、そこに書かれたプログラムに従って、それら周辺要素を制御するマイクロプロセッサである。例えばこのマイクロプロセッサは、上に述べたような、ホストデバイス１５００からのリード／ライト要求コマンド・ユーザ認証に関するコマンドの解釈、ホストデバイス１５００との間のデータ送受信、ホストデータバッファ１０３０やテンポラリデータバッファ１０４０へのアクセス（リード／ライト）を実行する。さらにこのマイクロプロセッサは、フラッシュメモリチップ１１００〜１１１５の制御（リード／プログラム／消去）、ユーザ認証用パスワードの設定・照合、データ暗号鍵の生成、格納データの暗号化・復号などを実行する。メモリコントローラ１０２０は、ユーザ認証や格納データの暗号化・復号に用いる暗号処理手段１０２１、コントローラ鍵Ｋｃ１０２２、ダミーユーザパスワードＵＤ１０２３、ダミーマスタパスワードＭＤ１０２４を備える。暗号処理手段１０２１は、例えばＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）という標準的な共通鍵暗号方式に準拠し、上記ＲＯＭプログラムに従って鍵・パスワード・データを暗号化・復号するハードウェアロジック回路である。Ｋｃ１０２２、ＵＤ１０２３、ＭＤ１０２４は、いずれも同型式のメモリコントローラ１０２０に共通の秘密の固定データで、メモリコントローラ１０２０を製造するメーカが、それらを上記ＲＯＭに埋め込む。特に、ＵＤ１０２３、ＭＤ１０２４は、ユーザ認証によるアクセス制限が有効か無効かをメモリコントローラ１０２０が判断するときに用いられるが、その詳細は後述する。
【００３３】
各フラッシュメモリチップ内の不揮発性メモリ領域は、複数（例えば、４０９６個）のブロック１３００〜１３１１で構成される。格納されたデータはブロックを単位として消去される。ブロックは、複数（例えば、１２８個）のページ１４００で構成される。フラッシュメモリに格納すべきデータはページを単位としてプログラムされる。例えば、ページサイズは４２２４バイトである。各ブロック内の１２８個のページをプログラムする順序は昇順であり、基本的にＮｏ．０、Ｎｏ．１、…、Ｎｏ．１２７の順でプログラムしなければならない。ただし、その途中で、１つのページのプログラムを複数回に分けることは可能である。また、プログラム済みのページを未プログラム状態に戻すときは、そのページが属するブロックを消去し、当該ブロック内の全てのページを未プログラム状態にしなければならない。
【００３４】
各チップにおいて上記ブロックは０番から４０９５番までナンバリングされており、偶数番ブロックの集合と奇数番ブロックの集合はそれぞれプレイン０、プレイン１と呼ばれる。各プレインは消去／プログラム／リード回路を独立に持っており、隣接する２ブロック（すなわち、整数Ｎ＝０〜２０４７について２Ｎ番と（２Ｎ＋１）番の２ブロック）を同時に消去することができる。また、それら隣接２ブロック内の同一番号の２ページを同時にプログラム／リードすることができる。
【００３５】
図９の（ａ）には、フラッシュメモリブロックの構成例が示される。
【００３６】
１つのメモリブロックを構成するメモリセルアレイ９０２０は、ｍ本のワードライン９０５０（ＷＬ１〜ＷＬｍ）とｎ本のビットライン９０１０（ＢＬ１〜ＢＬｎ）とｍ×ｎ個のメモリセルＭ１〜Ｍｍｎ（９０８０、９０８１、９０８２、９０８３など）からなる。このメモリセルのゲートはｍ本のワードライン９０５０によって横方向にｎセルずつ接続されている。また、メモリセルのソース−チャネル−ドレインのパスはｎ本のビットライン９０１０によって縦方向にｍセルずつ連結されている。すなわち、ＮＡＮＤ型構成である。メモリセルアレイ９０２０の一辺には行デコーダ９０３０が位置し、ストリング選択ラインＳＳＬ９０４０、ワードライン９０５０及び接地選択ラインＧＳＬ９０４１と連結される。行デコーダ９０３０はメモリチップへ与えられたアドレスに従って該当するメモリブロックを選択するデコーディングと選択されたストリング内で一つのワードラインを選択するデコーディングの組み合わせによってワードライン選択が行なわれる。また、メモリセルアレイ９０２０の別の一辺にはビットライン９０１０に連結されるページバッファ９０００が位置する。行デコーダ９０３０やページバッファ９０００には電圧発生回路（図示しない）によりメモリセルを読み書きするための可変電圧が供給される。図中の９０６０はビットライン電流が流れ込む接地である。メモリセルアレイ９０２０は１セル当たり２ビットのデータビットを貯蔵する多値メモリセルで構成される。
【００３７】
１ワードライン上のメモリセルが１ページ分のデータビットを記録するのに使用される。１ブロック内のページ数が１２８のとき、ｍ＝１２８である。また、１バイトのデータの記録に４セル必要であるため、ページサイズが４２２４バイトのとき、ｎ＝４２２４×４＝１６８９６である。
【００３８】
各セルのデータビットは下位データビットと上位データビットに区分される。ここで下位データビットをＬＳＢと定義し、上位データビットをＭＳＢと定義する。例えば、ＭＳＢが論理値“１”で、ＬＳＢが論理値“０”のセルデータは（１、０）と表す。データビットはメモリセルトランジスタのフローティングゲートにチャージされた電荷のスレッショルド電圧分布に従って区別される。
【００３９】
図９の（ｂ）には、メモリセルのスレッショルド電圧分布とデータビット状態の関係が示される。例えば、データビットに対応するスレッショルド電圧分布は、（１、１）に対しては−２．７Ｖ以下（９１１０）、（１、０）に対しては０．３Ｖ〜０．７Ｖの範囲（９１１１）、（０、０）に対しては１．３Ｖ〜１．７Ｖの範囲（９１１２）、（０、１）に対しては２．３Ｖ〜２．７Ｖの範囲（９１１３）であるとする。各々のデータビットは隣接するデータビットと１ビットだけ異なって変化する。したがって、最も低いスレッショルド電圧分布に対応するデータビットを（１、１）とすれば、低電位側から（１、１）、（１、０）、（０、０）、（０、１）の順になる。
【００４０】
ページ読み出し動作時には、行デコーダ９０３０によって選択されたワードラインにはスレッショルド電圧を区別するためにＶｒｄ１＝０Ｖ（９１２０）、Ｖｒｄ２＝１．０Ｖ（９１２１）、Ｖｒｄ３＝２．０Ｖ（９１２２）が供給され、非選択されたワードラインにはＶｒｅａｄ＝６Ｖが供給される。
【００４１】
ワードライン９０５０に供給される電圧によってメモリセルがオンセル（Ｏｎ−Ｃｅｌｌ）であるか、オフセル（Ｏｆｆ−Ｃｅｌｌ）であるかが決められる。ワードライン電圧がスレッショルド電圧より高ければ、オフセルになってビットラインはプリチャージされ、ワードライン電圧がスレッショルド電圧より低ければ、オンセルになってビットラインはディスチャージされる。選択されたワードラインにおいて３つのワードライン電圧を試すことによって、各メモリセルのデータビットを検知し、読み出すページデータを構成する。
【００４２】
ページプログラム動作では、Ｆ−Ｎトンネリング（Ｆｏｗｌｅｒ  Ｎｏｒｄｈｅｉｍ  Ｔｕｎｎｅｌｉｎｇ）を利用して、選択されたメモリセルトランジスタのフローティングゲートに電子を注入し、所望のスレッショルド電圧に到逹させる。該当するワードライン上のメモリセルのゲートにはプログラム電圧(例えば、１４Ｖ〜１９Ｖ)が印加され、チャネルには接地電圧または所定の電圧が印加されるようにする。プログラムされるセルのフローティングゲートとチャネルとの間に形成された高い電界によってチャネルの電子がフローティングゲートとチャネルとの間の酸化膜を通過するトンネリングが起こり、フローティングゲートに電子が蓄積され、当該メモリセルのスレッショルド電圧が上昇する。一方、プログラムする必要がないメモリセルには、チャネルに電源電圧が印加されるようにし、トンネリングを抑止する。
【００４３】
図９の（ｂ）における矢印９１００、９１０１、９１０２は、プログラム動作におけるデータビットの状態遷移を示す。プログラム動作はＬＳＢプログラム動作とＭＳＢプログラム動作の二つの段階に分けて進行される。まず、ＬＳＢプログラム動作はＬＳＢを論理値“０”にしたいメモリセルに適用されるもので、（１、１）からＬＳＢのみ論理値“０”になるようにプログラムする工程であり、プログラムされたセルは矢印９１００のように（１、０）になる。ＭＳＢプログラム動作はＬＳＢプログラムの完了を感知した後、ＭＳＢを０にしたいメモリセルに適用されるもので、ＬＳＢプログラムの結果によってＭＳＢをプログラムする工程である。もしＬＳＢに論理値“１”が感知されたら、データ貯蔵状態は（１、１）であるので、矢印９１０２のようにＭＳＢを０にプログラムして（０、１）にする。もしＬＳＢに０が感知されたら、データ貯蔵状態は（１、０）であるので、矢印９１０１のようにＭＳＢを０にプログラムして（０、０）になるようにする。このように、２回のプログラム動作により、４種類のデータビット状態をメモリセルにプログラムする。尚、フラッシュメモリチップ１１００〜１１１５は、（１、１）から（１、０）へのＬＳＢプログラム９１００、及び（１、０）から（０、０）へのＭＳＢプログラム９１０１を、メモリコントローラ１０２０からの１回のプログラム制御によって続けて実施することも、２回のプログラム制御によって分けて実施することもできるように構成されている。
【００４４】
図９の（ｂ）における破線矢印９１０３は、ブロック消去動作におけるデータビットの状態遷移を示す。メモリコントローラ１０２０からの消去制御によって指定されたブロック内のすべてのメモリセルのデータ貯蔵状態は（１、１）に戻される。
【００４５】
図２には、半導体記憶装置１０００内のフラッシュメモリブロック（１３００〜１３１１など）適用例が示される。搭載されたメモリブロックのほとんどは、ユーザのファイルデータ２３２０を記録するためのファイルデータブロック群２３００として利用される。記録するファイルデータ２３２０は、ＦＤｎ２３２１のようにセクタ（例えば５１２バイト）単位に分割され、装置固有のデータ暗号鍵Ｋｄ２２４０でそれぞれをＥＦＤｎ２３２２のように暗号化し、それらで構成される暗号化ファイルデータ２３１０をファイルデータブロック群２３００内に格納する。
【００４６】
また、搭載されたメモリブロックの１つを、半導体記憶装置１０００のシリアルナンバー２１１０を記録するための固有情報ブロック２１００として利用する。シリアルナンバー２１１０は製造時にユニークな値として記録される。このとき、メモリコントローラ１０２０はこの値に基づいて擬似乱数を生成し、これを装置自身のデータ暗号鍵Ｋｄ２２４０とする。
【００４７】
さらに、搭載されたメモリブロックの１つを、パスワード管理ブロック２２００として利用する。パスワード管理ブロック２２００は、上記データ暗号鍵Ｋｄ２２４０を、ユーザパスワードＵＰとともに記録するためのブロックである。
【００４８】
半導体記憶装置１０００にユーザパスワードＵＰによるアクセス制限がかけられているときは、データ暗号鍵Ｋｄ２２４０はユーザパスワードＵＰを知らなければ復元できないように暗号化されて記録される。一方、アクセス制限がかけられていないときは、データ暗号鍵Ｋｄ２２４０はメモリコントローラ１０２０が持つダミーユーザパスワードＵＤ１０２３を用いて復元できるように暗号化されて記録される。このようなデータ暗号鍵Ｋｄ２２４０と各種パスワード値を含む情報を記録する単位を「エントリ」と呼ぶ。
【００４９】
アクセス制限がかけられているときは、ホストデバイス１５００からのパスワード認証コマンドによって、正しいユーザパスワードＵＰまたはマスタパスワードＭＰが入力されると、メモリコントローラ１０２０は暗号処理手段１０２１でデータ暗号鍵Ｋｄ２２４０を復元する。その後、ホストデバイス１５００からのリード要求コマンドを受けると、メモリコントローラ１０２０はファイルデータブロック群２３００内に格納された暗号化ファイルデータ２３１０を暗号処理手段１０２１によりデータ暗号鍵Ｋｄ２２４０で復号し、ファイルデータ２３２０を出力する。また、ホストデバイス１５００からのライト要求コマンドを受けると、メモリコントローラ１０２０は入力されたファイルデータ２３２０を暗号処理手段１０２１によりデータ暗号鍵Ｋｄ２２４０で暗号化し、暗号化ファイルデータ２３１０をファイルデータブロック群２３００内に格納する。
【００５０】
ホストデバイス１５００からのパスワード設定／解除コマンドによって、アクセス制限のあり／なしがスイッチする。この変化に依存してパスワード管理ブロック２２００に新しいエントリが記録される。そのため、パスワード管理ブロック２２００にはユーザの意志によって好きなだけ多数回の書き換えが発生する。一般にフラッシュメモリのブロックを書き換えるときは、プログラム→消去→プログラム→消去・・・を繰り返す必要があるが、フラッシュメモリの書き換え寿命は有限（例えば１００００回）である。そこで、メモリコントローラ１０２０はできるだけパスワード管理ブロック２２００を消去しないように書き換えを行うことが好ましい。また、パスワード管理ブロック２２００に記録するエントリのサイズは高々４キロバイトである。そこで、パスワード管理ブロック２２００を１回消去するたびに１２８個のページへ未書き込みページがなくなるまでページ昇順に複数回のエントリ追記を実施して、フラッシュメモリの書き換え寿命を浪費しない方式で記録する。図２には、パスワード管理ブロック２２００が最後に消去されてからページＮｏ．０（２２１０）からページＮｏ．１２３（２２２０）まではエントリが記録されてきて、ページＮｏ．１２４（２２３０）以降のページにはまだエントリが記録されていないことが示される。ページＮｏ．１２３（２２２０）に書かれているのが最新エントリであり、そこには現在の有効なデータ暗号鍵Ｋｄ、ユーザパスワードＵＰが含まれる。
【００５１】
尚、エントリにはＫｄやＵＰの他に、マスタパスワードＭＰとよばれる情報が含まれる。マスタパスワードＭＰはユーザパスワードＵＰを失念したときの補助パスワードであり、マスタパスワードＭＰをユーザ認証に使ってファイルデータにアクセスできる。また、これはユーザパスワードＵＰを失念したときのリセットパスワードでもあり、マスタパスワードＭＰによりユーザパスワードＵＰを無効にする（アクセス制限を解除する）ことができる。その返りに、フラッシュメモリに格納されたファイルデータは無意味なダミーデータにする。
【００５２】
さらに、エントリには上記の他に、セキュリティレベルとよばれる情報が含まれる。セキュリティレベルとはパスワードによる認証方法を指定するものである。Ｈｉｇｈ（ハイ）レベルとＭａｘｉｍｕｍ（マキシマム）レベルの２種類があり、前者のレベルでは、パスワード認証コマンドでユーザパスワードＵＰとマスタパスワードＭＰのいずれかが正しく入力されれば、ファイルデータの読み書きを許可する。後者のレベルでは、パスワード認証コマンドでユーザパスワードＵＰが正しく入力されたときにのみ、ファイルデータの読み書きを許可する。セキュリティレベルの設定は、パスワードを設定するためのパスワード設定コマンドを用いて行う。以上の機能仕様は、ＡＴＡ標準規格に準拠している。
【００５３】
次に、パスワード管理ブロック２２００に記録するエントリ内容の詳細を説明する。以下の説明において、データＡとデータＢをシャッフル化する一方向性変換を「ｓ」とし、そのシャッフル出力値をｓ（Ａ、Ｂ）と表す。また、鍵ＫでデータＤを暗号化したものをＥ（Ｋ、Ｄ）と表す。エントリはエントリ識別子ＥＩＤ２２５５と、５つの情報要素を含む。以下、５つの情報要素のそれぞれをＶ値２２５０、Ｗ値２２５１、Ｘ値２２５２、Ｙ値２２５３、Ｚ値２２５４と呼ぶ。まず、Ｖ値２２５０はコントローラ鍵Ｋｃ１０２２とユーザパスワードＵＰ２２４１のシャッフル値ｓ（Ｋｃ、ＵＰ）を鍵としてデータ暗号鍵Ｋｄ２２４０を暗号化したＥ（ｓ（Ｋｃ、ＵＰ）、Ｋｄ）である。Ｗ値２２５１はコントローラ鍵Ｋｃ１０２２とマスタパスワードＭＰ２２４２のシャッフル値ｓ（Ｋｃ、ＭＰ）を鍵としてデータ暗号鍵Ｋｄ２２４０を暗号化したＥ（ｓ（Ｋｃ、ＭＰ）、Ｋｄ）である。Ｘ値２２５２はコントローラ鍵Ｋｃ１０２２とデータ暗号鍵Ｋｄ２２４０のシャッフル値ｓ（Ｋｃ、Ｋｄ）を鍵としてユーザパスワードＵＰ２２４１を暗号化したＥ（ｓ（Ｋｃ、Ｋｄ）、ＵＰ）である。Ｙ値２２５３はコントローラ鍵Ｋｃ１０２２とデータ暗号鍵Ｋｄ２２４０のシャッフル値ｓ（Ｋｃ、Ｋｄ）を鍵としてマスタパスワードＭＰ２２４２を暗号化したＥ（ｓ（Ｋｃ、Ｋｄ）、ＭＰ）である。最後に、Ｚ値２２５４はコントローラ鍵Ｋｃ１０２２とデータ暗号鍵Ｋｄ２２４０のシャッフル値ｓ（Ｋｃ、Ｋｄ）を鍵としてセキュリティレベルＬＶ２２４３を暗号化したＥ（ｓ（Ｋｃ、Ｋｄ）、ＬＶ）である。尚、ユーザパスワードＵＰによるアクセス制限がかけられていないときは、上記のＵＰ２２４１はダミーユーザパスワードＵＤ１０２３に等しい。また、マスタパスワードＭＰが未設定のときは、上記のＭＰ２２４２はダミーマスタパスワードＭＤ１０２４に等しい。
【００５４】
以上の説明において、各種鍵のサイズは１２８ビット（１６バイト）、各種パスワードのサイズは３２バイト、セキュリティレベルのサイズは１バイトである。そのため、それらを組み合わせて構成されるＶ値２２５０、Ｗ値２２５１、Ｘ値２２５２、Ｙ値２２５３、Ｚ値２２５４のサイズはいずれも高々６４バイトである。また、ＥＩＤ２２５５は、エントリの状態や種類（エントリタイプ）を識別するために各エントリの先頭１バイトに記録される。エントリタイプは次の４つである。［１］未書込みのエントリ、［２］ユーザパスワードによるアクセス制限がかかっていないこと（ユーザパスワード無効）を示すエントリ、［３］ユーザパスワードによるアクセス制限がかかっていること（ユーザパスワード有効）を示すエントリ、［４］すでに使用されていない情報要素を含む不要エントリ。ＥＩＤ２２５５の符号値については後述する。
【００５５】
パスワードによるファイルデータへのアクセス制限機能に関して、半導体記憶装置１０００がサポートするＡＴＡ標準コマンドは以下の５つである。尚、ＡＴＡの規格により、マスタパスワードは一度設定されると、変更することは可能だが未設定状態に戻すことはできない。
【００５６】
（１）ＵＮＬＯＣＫ・・・ユーザパスワードまたはマスタパスワードによりユーザを認証し、ファイルデータへのアクセスを可能にする（一時的にアンロックする）。
【００５７】
（２）ＤＩＳＡＢＬＥ  ＰＡＳＳＷＯＲＤ・・・ユーザパスワードを無効化し、ファイルデータへのアクセス制限を解除する（恒久的にアンロックする）。
【００５８】
（３）ＥＲＡＳＥ  ＰＲＥＰＡＲＥ・・・次のＥＲＡＳＥ  ＵＮＩＴコマンドの直前に発行する準備コマンド。
【００５９】
（４）ＥＲＡＳＥ  ＵＮＩＴ・・・既存のファイルデータを無意味な状態にし、ユーザパスワードを無効化し、ファイルデータへのアクセス制限を解除する（恒久的にアンロックする）。
【００６０】
（５）ＳＥＴ  ＰＡＳＳＷＯＲＤ・・・・ユーザパスワードまたはマスタパスワードをセキュリティレベルとともに設定・変更する。ユーザパスワードの設定の場合は、ハードリセット後にファイルデータへのアクセス制限が有効になる（ロックされる）。
【００６１】
半導体記憶装置１０００の起動時にメモリコントローラ１０２０はパスワードロック状態を判定する。そのフローチャートを図３（ａ）に示す。まず電源供給が開始されてハードリセットが実行されると（３０１０）、メモリコントローラ１０２０はパスワード管理ブロック２２００に最後に書かれたエントリを読み出し、そこに設定されているユーザパスワードＵＰがダミーユーザパスワードＵＤであるかを調べる（３０２０）。結果が真（ＵＰ＝ＵＤ）ならば、Ｕｎｌｏｃｋｅｄモードとなり（３０３０）、ユーザによるファイルデータの読み書きを無条件で許可する状態となる。一方、偽（ＵＰ≠ＵＤ）ならば、Ｌｏｃｋｅｄモードとなり（３０４０）、ユーザによる正しいパスワードの提示がなければファイルデータの読み書きを許可しない状態となる。ステップ３０２０での判定方法の詳細を図３（ｂ）に示す。パスワード管理ブロック２２００に最後に書かれたエントリ内からＶ値２２５０及びＸ値２２５２を抽出し、メモリコントローラ１０２０が持つＫｃ１０２２とＵＤ１０２３のシャッフル値を鍵としてＶ値２２５０を復号する。この復号値をＫｄ'３０２１とする。そして、Ｋｃ１０２２とＫｄ'３０２１のシャッフル値を鍵としてＸ値２２５２を復号する。この復号値がＵＤ１０２３と一致していればステップ３０２０の結果は真である。そのとき、Ｋｄ'３０２１はデータ暗号鍵Ｋｄ２２４０に一致するため、メモリコントローラ１０２０はＫｄ'３０２１を復号鍵として暗号化ファイルデータ２３１０からファイルデータ２３２０を正しく復元することができる。一方、上記復号値がＵＤ１０２３と一致していなければステップ３０２０の結果は偽である。そのときは、Ｋｄ'３０２１でファイルデータ２３２０を正しく復元することができず、ファイルデータ２３２０は漏洩しえない。
【００６２】
ホストデバイス１５００が半導体記憶装置１０００にＵＮＬＯＣＫコマンドを発行した時にメモリコントローラ１０２０が行う処理のフローチャートを図４（ａ）に示す。まずＵＮＬＯＣＫコマンドを受信すると（４０１０）、メモリコントローラ１０２０は当該コマンド内のパラメータを見て、パスワード比較対象がマスタパスワードＭＰかユーザパスワードＵＰかを調べる（４０２０）。対象がマスタパスワードＭＰならばステップ４０３０、ユーザパスワードＵＰならばステップ４０４０に遷移する。ステップ４０３０、４０４０いずれにおいてもパスワード管理ブロック２２００に最後に書かれたエントリを読み出し、そこに設定されているマスタパスワードＭＰ／ユーザパスワードＵＰと、当該コマンドで受け取った入力パスワードが一致するかを調べる。ステップ４０３０については、結果が真ならば、最後に書かれたエントリに設定されているセキュリティレベルＬＶがＨｉｇｈかを調べる（４０５０）。結果が真ならば、Ｕｎｌｏｃｋｅｄモードとなり（４０６０）、ユーザによるファイルデータの読み書きを許可する状態となる。一方、ステップ４０３０または４０５０の結果が偽ならば、Ｌｏｃｋｅｄモードを維持し、ユーザによる正しいパスワードの提示があるまでファイルデータの読み書きを許可しない。また、ステップ４０４０については、結果が真ならば、Ｕｎｌｏｃｋｅｄモードとなり（４０６０）、ユーザによるファイルデータの読み書きを許可する状態となる。一方、結果が偽ならば、Ｌｏｃｋｅｄモードを維持し、ユーザによる正しいパスワードの提示があるまでファイルデータの読み書きを許可しない。ステップ４０３０及び４０４０での判定方法の詳細を図４（ｂ）に示す。パスワード管理ブロック２２００に最後に書かれたエントリ内から、ステップ４０３０ではＷ値２２５１及びＹ値２２５３を、ステップ４０４０ではＶ値２２５０及びＸ値２２５２を抽出する。メモリコントローラ１０２０が持つＫｃ１０２２と当該コマンドによる入力パスワード４０１１のシャッフル値を鍵としてＷ値２２５１／Ｖ値２２５０を復号する。この復号値をＫｄ'４０１２とする。そして、Ｋｃ１０２２とＫｄ'４０１２のシャッフル値を鍵としてＹ値２２５３／Ｘ値２２５２を復号する。この復号値が入力パスワード４０１１と一致していればステップ４０３０／４０４０の結果は真である。そのとき、Ｋｄ'４０１２はデータ暗号鍵Ｋｄ２２４０に一致するため、メモリコントローラ１０２０はＫｄ'４０１２を復号鍵として暗号化ファイルデータ２３１０からファイルデータ２３２０を正しく復元することができる。一方、上記復号値が入力パスワード４０１１と一致していなければステップ４０３０／４０４０の結果は偽である。そのときは、Ｋｄ'４０１２でファイルデータ２３２０を正しく復元することができず、ファイルデータ２３２０は漏洩しえない。尚、ステップ４０３０の時はさらにＺ値２２５４を抽出し、Ｋｃ１０２２とＫｄ'４０１２のシャッフル値を鍵としてこれを復号し、セキュリティレベルＬＶ４０１３を復元する。これはステップ４０５０で使用する。
【００６３】
ホストデバイス１５００が半導体記憶装置１０００にＤＩＳＡＢＬＥ  ＰＡＳＳＷＯＲＤコマンドを発行した時にメモリコントローラ１０２０が行う処理のフローチャートを図５（ａ）に示す。まずＤＩＳＡＢＬＥ  ＰＡＳＳＷＯＲＤコマンドを受信すると（５０１０）、メモリコントローラ１０２０は当該コマンド内のパラメータを見て、パスワード比較対象がマスタパスワードＭＰかユーザパスワードＵＰかを調べる。そしてパスワード管理ブロック２２００に最後に書かれたエントリを読み出し、そこに設定されている対象パスワードと当該コマンドで受け取った入力パスワードが一致するかを調べる（５０２０）。その判定方法は図４（ｂ）の場合と同様である。ステップ５０２０の結果が真ならば、ユーザパスワードＵＰは無効化され（５０３０）、Ｕｎｌｏｃｋｅｄモードになり（５０４０）、以後ユーザパスワードの提示がなくてもファイルデータの読み書きを許可する状態となる。一方、ステップ５０２０の結果が偽ならば、ユーザパスワードＵＰは無効化されずに処理を終了する。ステップ５０３０での無効化の詳細を図５（ｂ）に示す。パスワード管理ブロック２２００に最後に書かれたエントリの中でＶ値２２５０及びＸ値２２５２のみ内容を更新したエントリデータを作成し、パスワード管理ブロック２２００に（後で述べる）所定の方式で追記する。新しいＶ値２２５０は、メモリコントローラ１０２０が持つＫｃ１０２２とＵＤ１０２３のシャッフル値を鍵としてＫｄ２２４０を暗号化したものである。このＫｄ２２４０はステップ５０２０の成功（パスワードの一致）を通じて正しく復元されたデータ暗号鍵Ｋｄである。これは図４（ｂ）でのＫｄ'４０１２とＫｄ２２４０の一致と同様である。また、新しいＸ値２２５２は、Ｋｃ１０２２とＫｄ２２４０のシャッフル値を鍵としてＵＤ１０２３を暗号化したものである。このようなエントリを追記することにより、電源供給をリセットしたときに図３（ａ）のステップ３０２０の結果は真となるため、Ｕｎｌｏｃｋｅｄモードは継続される。
【００６４】
ホストデバイス１５００が半導体記憶装置１０００にＥＲＡＳＥ  ＰＲＥＰＡＲＥ及びＥＲＡＳＥ  ＵＮＩＴコマンドを発行した時にメモリコントローラ１０２０が行う処理のフローチャートを図６（ａ）に示す。まずＥＲＡＳＥ  ＰＲＥＰＡＲＥコマンドを受信し（６０１０）、次にＥＲＡＳＥ  ＵＮＩＴコマンドを受信する（６０２０）。この２コマンドは連続発行する必要がある。これはユーザの手違いにより不用意にファイルデータが失われることを防ぐためである。メモリコントローラ１０２０は、パスワード管理ブロック２２００に最後に書かれたエントリを読み出し、そこに設定されているマスタパスワードＭＰと、ＥＲＡＳＥ  ＵＮＩＴコマンドで受け取った入力パスワードが一致するかを調べる（６０３０）。ステップ６０３０の結果が真ならば、データ暗号鍵Ｋｄ２２４０は変更され（６０４０）、ユーザパスワードＵＰは無効化され（６０５０）、Ｕｎｌｏｃｋｅｄモードになる（６０６０）。一方、ステップ６０３０の結果が偽ならば、そのまま処理を終了する。ステップ６０４０では、例えば、現在のＫｄ２２４０に基づいて擬似乱数を発生し、新しいＫｄ２２４０とする。ステップ６０５０は、Ｋｄ２２４０に新しい値を用いる以外は、図５（ｂ）の場合と同様である。このように、パスワードによるアクセス制限が無効化されても、Ｋｄ２２４０が変更されたことによって、それまでに格納された暗号化ファイルデータ２３１０はファイルデータ２３２０へと正しく復元できなくなる。すなわちファイルデータが全て消去されたことと同然である。ステップ６０３０での判定方法の詳細を図６（ｂ）に示す。パスワード管理ブロック２２００に最後に書かれたエントリ内から、Ｗ値２２５１及びＹ値２２５３を抽出する。メモリコントローラ１０２０が持つＫｃ１０２２とＥＲＡＳＥ  ＵＮＩＴコマンドによる入力パスワード６０２１のシャッフル値を鍵としてＷ値２２５１を復号する。この復号値をＫｄ'６０３１とする。そして、Ｋｃ１０２２とＫｄ'６０３１のシャッフル値を鍵としてＹ値２２５３を復号する。この復号値が入力パスワード６０２１と一致していればステップ６０３０の結果は真である。一方、上記復号値が入力パスワード６０２１と一致していなければステップ６０３０の結果は偽である。
【００６５】
ホストデバイス１５００が半導体記憶装置１０００にユーザパスワードを設定するためのＳＥＴ  ＰＡＳＳＷＯＲＤコマンドを発行した時にメモリコントローラ１０２０が行う処理のフローチャートを図７（ａ）に示す。まずＳＥＴ  ＰＡＳＳＷＯＲＤコマンドを受信すると（７０１０）、メモリコントローラ１０２０は半導体記憶装置１０００がＵｎｌｏｃｋｅｄモードであるかを調べる（７０２０）。結果が偽ならばそのまま処理を終了する。結果が真ならば、当該コマンド内のパラメータを見て、パスワード設定対象がユーザパスワードＵＰであることと、要求されたセキュリティレベルＬＶ（ＨｉｇｈかＭａｘｉｍｕｍか）を確認し、パスワード管理ブロック２２００に、入力されたセキュリティレベルＬＶとユーザパスワードＵＰを設定する（７０３０）。ステップ７０３０での設定方法の詳細を図７（ｂ）に示す。パスワード管理ブロック２２００に最後に書かれたエントリの中でＶ値２２５０、Ｘ値２２５２及びZ値２２５４のみ内容を更新したエントリデータを作成し、パスワード管理ブロック２２００に（後で述べる）所定の方式で追記する。新しいＶ値２２５０は、メモリコントローラ１０２０が持つＫｃ１０２２と当該コマンドで受け取った入力パスワード７０１１のシャッフル値を鍵としてＫｄ２２４０を暗号化したものである。このＫｄ２２４０はそれまでに図３〜６のようなコマンドプロセスでＵｎｌｏｃｋｅｄモードになった際に正しく復元された（または新しく変更された）データ暗号鍵Ｋｄである。また、新しいＸ値２２５２は、Ｋｃ１０２２とＫｄ２２４０のシャッフル値を鍵として入力パスワード７０１１を暗号化したものである。また、新しいＺ値２２５４は、Ｋｃ１０２２とＫｄ２２４０のシャッフル値を鍵として当該コマンドで要求されたセキュリティレベルＬＶ７０１２を暗号化したものである。このようなエントリを追記することにより、電源供給をリセットしたときに図３（ａ）のステップ３０２０の結果は偽となるため、Ｌｏｃｋｅｄモードに推移する。そして、ここで設定したユーザパスワードＵＰの提示がなければファイルデータ２３２０にアクセスできなくなる。
【００６６】
ホストデバイス１５００が半導体記憶装置１０００にマスタパスワードを設定するためのＳＥＴ  ＰＡＳＳＷＯＲＤコマンドを発行した時にメモリコントローラ１０２０が行う処理のフローチャートを図８（ａ）に示す。まずＳＥＴ  ＰＡＳＳＷＯＲＤコマンドを受信すると（８０１０）、メモリコントローラ１０２０は半導体記憶装置１０００がＵｎｌｏｃｋｅｄモードであるかを調べる（８０２０）。結果が偽ならばそのまま処理を終了する。結果が真ならば、当該コマンド内のパラメータを見て、パスワード設定対象がマスタパスワードＭＰであることと、要求されたセキュリティレベルＬＶ（ＨｉｇｈかＭａｘｉｍｕｍか）を確認し、パスワード管理ブロック２２００に、入力されたセキュリティレベルＬＶとマスタパスワードＭＰを設定する（８０３０）。ステップ８０３０での設定方法の詳細を図８（ｂ）に示す。パスワード管理ブロック２２００に最後に書かれたエントリの中でＷ値２２５１、Ｙ値２２５３及びZ値２２５４のみ内容を更新したエントリデータを作成し、パスワード管理ブロック２２００に（後で述べる）所定の方式で追記する。新しいＷ値２２５１は、メモリコントローラ１０２０が持つＫｃ１０２２と当該コマンドで受け取った入力パスワード８０１１のシャッフル値を鍵としてＫｄ２２４０を暗号化したものである。このＫｄ２２４０はそれまでに図３〜６のようなコマンドプロセスでＵｎｌｏｃｋｅｄモードになった際に正しく復元された（または新しく変更された）データ暗号鍵Ｋｄである。また、新しいＹ値２２５３は、Ｋｃ１０２２とＫｄ２２４０のシャッフル値を鍵として入力パスワード８０１１を暗号化したものである。また、新しいＺ値２２５４は、Ｋｃ１０２２とＫｄ２２４０のシャッフル値を鍵として当該コマンドで要求されたセキュリティレベルＬＶ８０１２を暗号化したものである。
【００６７】
パスワード管理ブロック２２００にエントリを記録する時は、エントリ識別子（ＥＩＤ２２５５）と、その５つの情報要素（Ｖ値２２５０、Ｗ値２２５１、Ｘ値２２５２、Ｙ値２２５３、Ｚ値２２５４）に特別な符号化を施す。図１０（ａ）はその符号化規則を示したものである。ＥＩＤの符号値は、エントリタイプが未書込みエントリのときＦＦｈ、ユーザパスワード無効エントリのときＢＢｈ、ユーザパスワード有効エントリのとき２２ｈ、不要エントリのとき００ｈである。また、Ｖ〜Ｚの各値を０と１の２進数で表現したときの各１ビットを２ビットで符号化する。符号化規則はエントリタイプに応じて４パターンに分けられる３パターンに分けられる。まず、未書込みのエントリは、５つの情報要素を記録する場所の全てのビット値を（１、１）に符号化する。ユーザパスワードが無効（恒久アンロック）であるときのエントリは、ビット値０を（１、０）に、ビット値１を（１、１）に符号化する。ユーザパスワードが有効（ロック）であるときのエントリは、ビット値０を（０、０）に、ビット値１を（１、０）に符号化する。そして、図２のページＮｏ．０（２２１０）〜Ｎｏ．１２２（２２１１）に記録されたエントリのように現在使われていない不要エントリは、５つの情報要素を記録する場所の全てのビット値を（０、０）に符号化する。尚、この符号化によってＶ〜Ｚの各値を記録するための容量は元のサイズの２倍になるが、それでも尚、それら５つの情報要素を含むエントリのサイズはページサイズ４ＫＢよりも小さい。また、以上４種類の符号規則では、エントリタイプによって符号値（１、０）や（０、０）で表されるビット値が変わるという特徴があるが、メモリコントローラ１０２０がエントリを読むときには、まずＥＩＤの値を参照することで１つの符号規則を特定できるため、符号値（１、０）や（０、０）を正しいビット値へ復元することができる。
【００６８】
次に、図１１を参照しながら、図５〜図８の処理中に発生するエントリ追記の方法を説明する。
【００６９】
図１１の（ａ）は、ユーザパスワードが無効のときにＳＥＴ  ＰＡＳＳＷＯＲＤ（Ｕｓｅｒ）コマンドによってユーザパスワードを有効にするとき（図７のステップ７０３０）のエントリ追記方法である。エントリタイプが変わることによって、図１０の（ａ）中の矢印１００００、１００１０、１００２０、１００３０で示すように４通りの符号変換が発生しうる。それぞれの変換を実現するため、図１０の（ｂ）のように、フラッシュメモリセルのプログラム操作によってスレッショルド電圧を上昇させたり、維持したりする。ゆえに、メモリコントローラ１０２０は、ユーザパスワードが無効であることを意味するエントリ１１０１０を含むページに再度プログラムを施すことで、ユーザパスワードが有効であることを意味するエントリ１１０２０に更新することができる。
【００７０】
図１１の（ｂ）は、ユーザパスワードが有効のときにＤＩＳＡＢＬＥ  ＰＡＳＳＷＯＲＤコマンドによってユーザパスワードを無効にするとき（図５のステップ５０３０）のエントリ追記方法である。メモリコントローラ１０２０は、ユーザパスワードが有効であることを意味するエントリ１１０３０を含むページに再度プログラムを施すことで、不要を意味するエントリ１１０４０に更新する。このとき図１０の（ｃ）のように、フラッシュメモリセルのプログラム操作によってスレッショルド電圧を上昇させたり、維持したりして、図１０の（ａ）において矢印１００４０で示すような符号変換を実現する。そして、エントリ１１０３０があったページの次番号の未書き込みページ１１０５０にユーザパスワードが無効であることを意味するエントリ１１０６０を追記する。ただし、エントリ１１０３０があったページが最終ページ（Ｎｏ．１２７）であるときはエントリ１１０４０への更新を実施せずに、パスワード管理ブロック２２００を消去して、その先頭ページ（Ｎｏ．０）にユーザパスワードが無効であることを意味するエントリを記録する。
【００７１】
図１１（ｃ）は、ユーザパスワードが有効のときにＳＥＴ  ＰＡＳＳＷＯＲＤコマンドによってユーザパスワードやマスタパスワードを設定・変更するとき（図７のステップ７０３０、図８のステップ８０３０）のエントリ追記方法である。メモリコントローラ１０２０は、ユーザパスワードが有効であることを意味するエントリ１１０７０を含むページに再度プログラムを施すことで、不要を意味するエントリ１１０８０に更新する。このとき図１０の（ｃ）のように、フラッシュメモリセルのプログラム操作によってスレッショルド電圧を上昇させたり、維持したりして、図１０の（ａ）中の矢印１００４０で示すような符号変換を実現する。そして、エントリ１１０７０があったページの次番号の未書き込みページ１１０９０にユーザパスワードが有効であることを意味するエントリ１１１００を追記する。ただし、エントリ１１０７０があったページが最終ページ（Ｎｏ．１２７）であるときはエントリ１１０８０への更新を実施せずに、パスワード管理ブロック２２００を消去して、その先頭ページ（Ｎｏ．０）にユーザパスワードが有効であることを意味するエントリを記録する。
【００７２】
図１１の（ｄ）は、ユーザパスワードが無効のときにＳＥＴ  ＰＡＳＳＷＯＲＤ（Ｍａｓｔｅｒ）コマンドによってマスタパスワードを設定・変更するとき（図８のステップ８０３０）のエントリ追記方法である。メモリコントローラ１０２０は、ユーザパスワードが無効であることを意味するエントリ１１１１０を含むページに再度プログラムを施すことで、不要を意味するエントリ１１１２０に更新する。このとき図１０（ｃ）のように、フラッシュメモリセルのプログラム操作によってスレッショルド電圧を上昇させたり、維持したりして、図１０の（ａ）中の矢印１００４０で示すような符号変換を実現する。そして、エントリ１１１１０があったページの次番号の未書き込みページ１１１３０にユーザパスワードが無効であることを意味するエントリ１１１４０を追記する。ただし、エントリ１１１１０があったページが最終ページ（Ｎｏ．１２７）であるときはエントリ１１１２０への更新を実施せずに、パスワード管理ブロック２２００を消去して、その先頭ページ（Ｎｏ．０）にユーザパスワードが無効であることを意味するエントリを記録する。
【００７３】
尚、図１１（ａ）でのエントリ更新（１１０１０→１１０２０）において、エントリ識別子ＥＩＤはＢＢｈから２２ｈに変化するが、これは図１０（ｂ）の１００２０及び１００３０のようなフラッシュメモリセルのプログラム操作によって実現できる。
【００７４】
また、図１１（ｂ）でのエントリ更新（１１０３０→１１０４０、１１０５０→１１０６０）において、エントリ識別子ＥＩＤはそれぞれ２２ｈから００ｈに、ＦＦｈからＢＢｈに変化するが、これは図１０（ｂ）の１００２０及び１００３０のようなフラッシュメモリセルのプログラム操作によって実現できる。
【００７５】
さらに、図１１（ｃ）でのエントリ更新（１１０７０→１１０８０、１１０９０→１１１００）において、エントリ識別子ＥＩＤはそれぞれ２２ｈから００ｈに、ＦＦｈから２２ｈに変化するが、これは図１０（ｂ）の１００００、１００２０及び１００３０のようなフラッシュメモリセルのプログラム操作によって実現できる。
【００７６】
そして、図１１（ｄ）でのエントリ更新（１１１１０→１１１２０、１１１３０→１１１４０）において、エントリ識別子ＥＩＤはそれぞれＢＢｈから００ｈに、ＦＦｈからＢＢｈに変化するが、これは図１０の（ｂ）における１００００、１００２０及び１００３０のようなフラッシュメモリセルのプログラム操作によって実現できる。
【００７７】
図１１のような追記方法により、半導体記憶装置１０００は、メモリブロック書き換え寿命の向上と、不正利用に対するセキュリティ向上の２つの効果を享受する。
【００７８】
前者の理由については、図１１（ａ）のようにエントリ１１０１０をエントリ１１０２０に書き換えることで、結果的にフラッシュメモリの同一物理アドレスのエントリが上書きされるため、未書き込みページを消費することなくユーザパスワード設定処理を実現することができるからである。例えば、ユーザパスワードの無効化と有効化を交互に行った場合、パスワード管理ブロック２２００の消去１回当たり、２×１２８ページ＝２５６回のエントリ更新ができる。１回の書き込みで１ページずつを消費する通常のフラッシュメモリ記録方式に比べてメモリブロックの寿命は２倍になる。
【００７９】
後者の理由については、図１１（ｄ）のようにエントリ１１１１０をエントリ１１１２０に書き換えることで、結果的にフラッシュメモリの同一物理アドレスのエントリが上書きされるため、ユーザパスワードが無効であることを意味するエントリ情報がパスワード管理ブロック２２００上に残らないからである。これについて補足すると、もしユーザパスワードが無効であることを意味するエントリ情報が残っていたならば、そのエントリの複製をメモリコントローラ１０２０を介さずに次の未書き込みページに記録することで、ユーザパスワードが無効化であるとメモリコントローラ１０２０を誤解させることができる。例えば、ユーザパスワードによりアクセス制限がかけられた半導体記憶装置１０００が第三者の手に渡ったとき、その第三者がそれを分解してフラッシュメモリチップのインタフェース端子に直接電気信号を送って上記の複製を行えば、（第三者にとって未知の）ユーザパスワードを無効化してアクセス制限を解除することができる。これにより第三者はパスワードなしでファイルデータを読み出すことができる。図１１のような追記方法は、このような不正が防止できるため、セキュリティが向上するのである。尚、前述のように、Ｋｄ２２４０は半導体記憶装置１０００に固有であり、他の製品のパスワード管理ブロックからユーザパスワード無効状態を意味するエントリを複製をしても、Ｋｄが違えばファイルデータを正しく復元できない。ゆえに、ファイルデータが不正に解読されることはない。
【００８０】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００８１】
例えば、上記実施の形態では、２ビット／セルの多値フラッシュメモリに対する本発明の適用例であるが、それ以上の記録密度の多値フラッシュメモリに対しても本発明は適用できる。例えば、３ビット／セルの多値フラッシュメモリでは以下のとおりである。まず、８通りのプログラム状態（１、１、１）〜（０、０、０）から、少なくとも３つの状態を選び、図１０（ａ）のように、「有効」を符号化する２つの状態電位のうち低電位のほうが、「無効」を符号化する２つの状態電位のうち高電位のほうと同じかそれ以上であるようにする。そして「不要」を符号化する２つの状態電位のうち低電位のほうが、「有効」を符号化する２つの状態電位のうち高電位のほうと同じかそれ以上であるように選択する。これにより、無効エントリに有効／不要エントリを、また有効エントリに不要エントリを重ねて記録することができる。このように、いかなる多値フラッシュメモリに対しても本発明が効果を奏することは明白である。
【符号の説明】
【００８２】
１０００  半導体記憶装置
１０２０  メモリコントローラ
１０３０  ホストデータバッファ
１０４０  テンポラリデータバッファ
１１００〜１１１５  フラッシュメモリチップ
１５００  ホストデバイス
２２００  パスワード管理ブロック
【図１】
2010193013.tif 000003
【図２】
2010193013.tif 000004
【図３】
2010193013.tif 000005
【図４】
2010193013.tif 000006
【図５】
2010193013.tif 000007
【図６】
2010193013.tif 000008
【図７】
2010193013.tif 000009
【図８】
2010193013.tif 000010
【図９】
2010193013.tif 000011
【図１０】
2010193013.tif 000012
【図１１】
2010193013.tif 000013