(57)【特許請求の範囲】
【請求項１】
コマンドコードの入力に応答して、それらに対応する所定の内部動作を行う不揮発性メモリにおいて、前記コマンドコードが供給される複数の入力端子と、前記入力端子に対応して設けられ、暗号データを記憶し、前記入力端子に供給された前記コマンドコードを前記暗号データに従って変換するコマンド変換回路と、前記コマンド変換回路により変換された変換コマンドコードをデコードし、対応するコマンドの供給を認識するコマンドデコーダとを有することを特徴とする不揮発性メモリ。
【請求項２】
請求項１において、前記入力端子は、前記コマンドコードに続いて前記所定の内部動作の為のアドレス信号またはデータ信号が供給され、前記コマンド変換回路は、前記コマンドデコーダが前記対応するコマンドの供給を認識した後は、前記暗号データに従う変換を行わないことを特徴とする不揮発性メモリ。
【請求項３】
請求項１または２において、前記コマンド変換回路は、前記暗号コードを記録する不揮発性の暗号コード記憶トランジスタを有することを特徴とする不揮発性メモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリなどの不揮発性メモリに関し、特に、プログラムや消去などのコマンドを暗号化することを可能にした不揮発性メモリに関する。
【０００２】
【従来の技術】
フラッシュメモリは、電源をオフにしてもデータを保持し、高速アクセスが可能な半導体メモリとして広く利用される。フラッシュメモリは、電源に依存しないことから、例えば電池により駆動される携帯電話や携帯情報端末などで利用される場合がある。
【０００３】
かかるフラッシュメモリに、出荷時に特定のデータを記憶させ、その携帯電話や携帯情報端末がその記憶データに従って特定の機能を実現できるようにする場合がある。例えば、携帯電話に設けられたフラッシュメモリにその電話を使用できる国コードを記憶させ、外国で安価に入手した携帯電話がその国で利用されるのを制限する場合がある。そのような場合、フラッシュメモリの情報を簡単に書き換えることができることは、携帯電話供給者の市場コントロールを形骸化させ好ましくない。或いは、フラッシュメモリに固有の識別コードが工場出荷時に記録され、その後その識別コードを読み出して所定の機能を実現させる場合も考えられる。かかる識別コードは、通常の読み出しコマンドとは異なる特殊なコマンドを与えなければ読み出すことはできない。
【０００４】
フラッシュメモリの使用形態は、それが使用される装置やデバイスの所定の機能を実現するための変数や特殊コードなどを記録し、比較的長期間にわたりその記録情報を利用することが少なくない。そして、フラッシュメモリの場合、データの書き込み（プログラム）、消去、そして、識別コードなどの特定情報の読み出しを行う為には、特殊なコマンドコード列をアドレス端子とデータ端子から入力することが必要である。特に、消去の場合は、プログラムや特定情報読み出しに比較して、より複雑で長いコマンドコードの入力が要件になっている。そして、それらのコマンドコード列は、フラッシュメモリの供給者や、それを装着する完成品の供給者のみが知りうるコードであり、末端の通常需用者には通常知られていない。
【０００５】
【発明が解決しようとする課題】
しかしながら、通常の需用者であっても、フラッシュメモリの業界あるいはメーカで設定されているコマンドコード列を知ることは可能であり、かかるコマンドコード列を入手した悪意の需用者が、不正にフラッシュメモリ内の情報を読み出したり、書き換えたりすることが可能である。
【０００６】
上記の例でいえば、より安価な外国で携帯電話を入手し、よりサービスは高いが携帯電話自体も高価な国に持ち込み、フラッシュメモリ内の国コードを書き換えて使用する場合がある。また、フラッシュメモリ内部の特殊コードを不正に読み出して、それに対応して機能プログラムを改造することなども考えられる。
【０００７】
そこで、本発明の目的は、内部のデータの書き換えや読み出しを困難にすることができる不揮発性メモリまたはフラッシュメモリを提供することにある。
【０００８】
更に、本発明の目的は、内部のデータの書き換えや読み出しに必要なコマンドコード列を暗号化することができる不揮発性メモリまたはフラッシュメモリを提供することにある。
【０００９】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの側面は、フラッシュメモリなどの不揮発性メモリにおいて、プログラムや消去或いは特殊情報読み出しの為のコマンドコードに対して、暗号化を行うことができるようにする。その好ましい態様では、不揮発性メモリ内に、コマンドコードが入力される入力バッファの後段に、暗号コードを記憶し入力されたコマンドコードを当該暗号コードに従って変換するコマンド変換回路を設けることを特徴とする。また、別の好ましい態様では、コマンド変換回路により変換されたコマンドコードに従って所定のコマンドの供給を認識した後は、当該コマンド変換回路は、不活性状態または非選択状態になることを特徴とする。それにより、コマンドコードに続いて入力されるアドレスやデータに対しては、入力されたアドレスやデータをそのまま内部回路に供給することができる。
【００１０】
上記の目的を達成するために、本発明の別の側面は、プログラム、消去または特殊読み出しのコマンドコードの入力に応答して、それらに対応する所定の内部動作を行う不揮発性メモリにおいて、前記コマンドコードが供給される複数の入力端子と、前記入力端子に対応して設けられ、暗号データを記憶し、前記入力端子に供給された前記コマンドコードを前記暗号データに従って変換するコマンド変換回路と、前記コマンド変換回路により変換された変換コマンドコードをデコードし、対応するコマンドの供給を認識するコマンドデコーダとを有することを特徴とする。
【００１１】
上記の発明における好適な態様では、前記入力端子は、前記コマンドコードに続いて前記所定の内部動作の為のアドレス信号またはデータ信号が供給され、前記コマンド変換回路は、前記コマンドデコーダが前記対応するコマンドの供給を認識した後は、前記暗号データに従う変換を行わないことを特徴とする。
【００１２】
更に、上記の発明における別の態様では、前記コマンド変換回路は、前記暗号コードを記録する不揮発性の暗号コード記憶トランジスタを有することを特徴とする。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。
【００１４】図１は、本実施の形態例における不揮発性メモリの全体構成図である。セルマトリクスＭＣ内には、ワード線ＷＬとビット線ＢＬとの交差位置にフローティングゲートを有するメモリセルトランジスタが設けられる。ビット線ＢＬは、Ｙデコーダ１２からのコラム選択信号により導通するＹゲート１０を介してデータラッチ回路１８に接続される。また、ワード線ＷＬは、Ｘデコーダ１４により選択され所定の電圧に駆動される。また、メモリセルトランジスタのソース端子は、ソース線ＳＬに接続され、所定の電圧に制御される。データラッチ回路１８は、入出力バッファ２０に接続され、データ入出力端子Ｄ0−Ｄjから供給されるデータ入力をラッチし、また、メモリセルから読み出されるデータ出力をラッチする。
【００１５】
アドレスバッファ２２は、供給されるアドレス信号Ａ0−Ａkを入力し、アドレスラッチ回路１６にそのアドレス信号を供給する。アドレスラッチ回路１６にラッチされたアドレス信号は、Ｘデコーダ１４及びＹデコーダ１２に供給され、デコードされる。
【００１６】
不揮発性メモリの一つであるフラッシュメモリは、データのプログラム、消去などは、外部から供給されるコマンドコード列に応じて内部で実行される。そのために、メモリはコマンドデコーダ２６を有する。コマンドデコーダ２６には、データ入出力端子Ｄ0−Ｄj及びアドレス入力端子Ａ0−Ａkから供給される一連のコマンドコードをデコードし、所定のコマンドをアクノリッジ（認識）する。
【００１７】
そして、例えば、プログラムPGMS、消去C8、オートセレクトＡＳが認識され、それらに対応する制御信号を内部回路に供給する。また、消去コマンドC8を認識した後は、チップ全体を消去するチップイレーズERS、またはメモリセルマトリクス内の所定のセクタ領域を消去するセクタイレーズSERSのいずれかを後続のコマンドコード列から認識し、対応する制御信号を内部回路に供給する。
【００１８】
コマンドデコーダ２６には、それ以外にリセット信号RESET、ライトイネーブル信号WE、チップイネーブル信号CEなども与えられる。
【００１９】
プログラム制御信号PGMS、チップイレーズ制御信号ERS及びセクタイレーズ制御信号SERSは、プログラム・消去回路２８に供給され、メモリセルトランジスタへのプログラムまたは消去の為に、ワード線ＷＬ、ビット線ＢＬ、ソース線ＳＬが所定の電圧または状態に制御される。
【００２０】
また、オートセレクトエリア１１は、例えば製造ＩＤや製造会社ＩＤなどの特殊な情報が記録される領域であり、オートセレクトコマンドASによりその領域１１のデータが読み出される。
【００２１】
本実施の形態例の不揮発性メモリは、コマンドコードが入力される入力バッファ（データ入出力バッファ２０及びアドレスバッファ２２）の後段に、暗号コードを記憶し入力されたコマンドコードを当該暗号コードに従って変換するコマンド変換回路２４，２５を有する。このコマンド変換回路２４，２５内には、暗号コードを記憶する暗号コード記憶部を有し、フラッシュメモリを内蔵する携帯電話などを製造する会社が、所定の暗号コードを書き込むことができる。そして、コマンド変換回路２４，２５は、その書き込まれた暗号コードにしたがって供給されるコマンドコードをコマンドデコーダが解読できる通常のコマンドコードに変換する。
【００２２】
従って、暗号コードを知っている者にしか、暗号化されたコマンドコードを知ることができず、一般の需用者がプログラムや消去などの内部の情報を変更するために必要なコマンドコードを与えることはできず、不正な情報の変更を困難にすることができる。また、所定の領域の情報を読み出すオートセレクトのコマンドコードも暗号化することができ、不正にこの領域の情報を読み出すことは困難になる。
【００２３】
図２は、コマンド切替回路の構成を示す図である。図２には、アドレスバッファ２２、データ入力バッファ２０及びコマンドデコーダ２６、コマンド切替回路２４，２５と共に示される。アドレス端子Ａ0−Ａkとデータ入出力端子Ｄ0−Ｄjから入力されるコマンドコード信号は、それぞれアドレスバッファ２２及びデータ入力バッファ２０により内部に取り込まれる。そして、それらの取り込まれたコマンドコード信号は、コマンド変換回路２４，２５を経由して、コマンドデコーダ２６に供給される。また、通常のアドレス信号は、アドレスラッチ１６に、通常のデータ入力信号は、データラッチ１８にそれぞれ供給される。
【００２４】
コマンド変換回路２４，２５は、アドレス端子Ａ0−Ａk及びデータ入出力端子Ｄ0−Ｄjそれぞれに対して、変換部５０と切替部４０とを有する。変換部５０内には、暗号コードが記憶され、入力されたコマンドコード信号がその暗号コードに従って変換される。また、切替部４０は、切替信号Ｚ、ＺＢによって、変換部５０で暗号コードに従って変換された信号か、或いは入力されたままの信号かのいずれかに切り替える。
【００２５】
切替信号発生部３０は、上記の切替信号Ｚ、ＺＢを生成する。切替信号ＺＢは、切替信号Ｚの反転信号であり、Ｈレベルの時に変換された信号を有効にし、Ｌレベルの時に入力された信号を有効にする。切替信号発生部３０は、ＮＯＲゲート３１と、インバータ及びNORゲートから構成されるラッチ回路３２とインバータ３３で構成される。ＮＯＲゲート３１には、オートセレクト信号AS、プログラム信号PGMS、消去アクノリッジ信号Ｃ８が入力され、いずれの信号がＨレベルになってもＮＯＲゲート３１の出力はＬレベルになり、切替信号ＺをＨレベルに、反転信号ZBをＬレベルにする。また、リセット信号RESETのＨレベルにより、切替信号ＺがＬレベルに反転信号ZBがＨレベルにそれぞれされる。
【００２６】
リセット信号RESETのＨレベルにより、切替信号ＺがＬレベルにその反転信号ZBがＨレベルになり、それにより変換部５０により暗号コードにより変換された信号がNANDゲート４２を通過して、コマンドデコーダ２６に供給される。また、オートセレクト信号AS、プログラム信号PGMS、消去アクノリッジ信号Ｃ８のいずれかのＨレベルにより、切替信号ＺがＨレベルにその反転信号ＺＢがＬレベルになり、変換部５０での変換信号の出力がＮＡＮＤゲート４２で禁止され、入力された信号の出力がNANDゲート４１により許可される。
【００２７】
従って、コマンド変換回路２４，２５は、後述する通り、リセット信号RESETに応答して、入力されたコマンドコード信号を暗号コードによる変換処理を行う。そして、コマンドデコーダ２６が、一旦、オートセレクトAS、プログラムPGMS又は消去C8を認識すると、切替信号Ｚ、ＺＢの状態が反転され、コマンド変換回路２４，２５は、上記の変換処理を行わないで、供給されたアドレス信号とデータ信号をそのまま、コマンドデコーダまたはアドレスラッチやデータラッチに供給する。
【００２８】
図３は、変換部の回路図である。また、図４は、その変換部での変換テーブルを示す図である。変換部５０は、暗号コード記憶部５２と、暗号コード書き込み回路５７と、ENORゲート５６とを有する。暗号コード記憶部５２内には、フローティングゲートを有する記憶トランジスタ５４と電源Ｖccに接続された負荷抵抗５３とを有し、記憶トランジスタ５４に電子を注入することで、暗号コードの記憶が行われる。
【００２９】
暗号コード書き込み回路５７は、入力INに接続される。例えば入力INに所定の電位が印加された時に、暗号コード記憶トランジスタ５４へのプログラム状態になり、トランジスタ５４のコントロールゲートに接続される端子Ｓ１に例えば１０Ｖを印加し、トランジスタ５４のドレインノードＮ１には例えば５Ｖを印加する。これによりトランジスタ５４のフローティングゲートに電子が注入されて、その閾値電圧が高くなる。
【００３０】
暗号コード記憶部５２の記憶トランジスタ５４は、初期状態では電子がフローティングゲートに注入されていない、即ち、閾値電圧が低い状態になっている。この状態では、図４に示される通り、ノードN1がＬレベル、インバータ５５の出力E1はＨレベル（論理１）になる。従って、ENORゲート５６は、入力信号INの反転を行わず、そのまま出力する。
【００３１】
暗号コード記憶部５２の記憶トランジスタ５４は、プログラムを行うことにより暗号コードが記憶される。その結果、記憶トランジスタ５４の閾値電圧が高くなり、そのドレインノードN1はＨレベル、インバータ５５の出力E1はＬレベル（論理０）になる。従って、ENORゲート５６は、入力信号INの反転を行って、出力する。
【００３２】
上記の通り、コマンド変換回路２４，２５内の変換部５０に、暗号コードを書き込むと（プログラム）、それに対応するアドレス端子またはデータ入力端子に入力されるコマンドコード信号が反転される。暗号コードが書き込まれない場合は、それに対応するアドレス端子またはデータ入力端子に入力されるコマンドコード信号の反転はされない。その結果、暗号コードに従って、入力されたコマンドコード信号が変換されて、コマンドデコーダ２６に供給される。従って、暗号コードを入力した者にしか、暗号化されたコマンドコードを入力することができず、一般の需用者がたとえプログラムや消去のコマンドコードを知り得ても、暗号コードを知らない限り、不正に内部の情報を書き換えたり、オートセレクトエリアの情報を不正に読み出したりすることは困難である。また、各フラッシュメモリに異なる暗号コードを書き込むことにより、大量のフラッシュメモリへの不正な書き換えまたは読み出しを困難にすることができる。
【００３３】
図５は、コマンドデコーダ２６によるコマンド認識のフローチャート図である。図５のコマンド認識のフローをコマンド変換回路の動作と共に説明する。コマンドコードは、一例として、１２本のアドレス端子と８本のデータ入力端子とから、それぞれ１２ビットと８ビットの信号が供給されるものとする。そして、フローチャート内には、このコマンドコードが、１６進法表示で示される。例えば、ステップＳ２では、コマンドコード「555AA」の入力が行われるが、１２ビットのアドレス端子から「555」が入力され、８ビットのデータ入力端子から「AA」が入力される。
【００３４】
図５に示される通り、最初にリセット信号RESETが入力される。このリセット信号RESETにより、図２に示したラッチ回路３２のNORゲートの出力がＬレベルになり、切替信号ＺはＬレベル、その反転切替信号ZBはＨレベルされ、コマンド変換回路２４，２５は、コマンドコードを暗号コードにより変換するモードになる。
【００３５】
図５の例では、オートセレクトコマンドASの認識は、コマンドデコーダ２６が、コマンドコードとして「555AA」「2AA55」「55590」を連続して供給された時に行われる（Ｓ２，Ｓ３，Ｓ４）。オートセレクトASが認識されると（Ｓ５）、オートセレクト領域１１の記憶情報が読み出される（Ｓ６）。
【００３６】
この時、コマンド変換回路２４，２５は、入力されるコマンドコードを暗号コードにより反転して変換する。従って、外部から暗号コードに従う暗号化されたオートセレクトのコマンドコードが供給されると、コマンド変換回路２４，２５により変換され、上記の通常のコマンドコードがコマンドデコーダ２６に供給される。コマンドデコーダ２６がオートセレクトを認識するとオートセレクト信号ASがＨレベルになり、コマンド変換回路２４，２５内のラッチ回路３２の状態を反転し、その後の暗号コードによる変換処理は行われない。
【００３７】
次に、プログラムコマンドPGMSの認識は、コマンドデコーダ２６が、コマンドコードとして「555AA」「2AA55」「555A0」を連続して供給された時に行われる（Ｓ２，Ｓ３，Ｓ７）。この場合も、外部からは暗号コードに応じて暗号化されたコマンドコードが供給され、コマンド変換回路２４，２５にて変換され、上記の３つのコマンドコードが連続してコマンドデコーダ２６に供給される。
【００３８】
コマンドデコーダ２６が、プログラムコマンドを認識すると（Ｓ８）、コマンド変換回路２４，２５は変換モードが解消され、その後に入力されるプログラムの為のアドレス信号やデータ信号は、暗号コードにより変換されることなく、そのままアドレスラッチ１６やデータラッチ１８に供給される（Ｓ９）。これにより、プログラムに必要なアドレス信号とデータ信号は、暗号化コードを気にすることなく、そのまま入力することができる。その後、プログラム・消去回路２８により、所定のアドレスのメモリセルに対してプログラムが行われる（Ｓ１０）。
【００３９】
次に、コマンドデコーダ２６が、コマンドコードとして「555AA」「2AA55」「55580」を連続して供給されると（Ｓ２，Ｓ３，Ｓ１１）、消去コマンドC8を認識する（Ｓ１２）。消去には、チップ全体を消去するチップイレーズと、チップ内のセクタ単位で消去を行うセクタイレーズとがある。しかし、消去動作は、記憶データの消滅を意味するので、特別の長いコマンドコードの入力が要求されている。従って、上記の消去コマンドC8の入力に続いて、更に３回のコマンドコードの入力が要求される。
【００４０】
消去コマンドC8がコマンドデコーダ２６により認識されると、切替信号発生部３０内のラッチ回路３２の状態が反転され、コマンド変換回路２４，２５の暗号コードに従う変換動作は禁止される。
【００４１】
続いて、コマンドデコーダ２６が、コマンドコードして「555AA」「2AA55」「55510」を連続して供給されると（Ｓ１３，Ｓ１４，Ｓ１５）、チップイレーズERSが認識される（Ｓ１６）。それに応答して、チップ内の全てのメモリトランジスタへの消去が行われる（Ｓ１７）。この時のコマンドコードは、外部からのコードがそのままコマンドデコーダ２６に供給される。なお、チップイレーズには、その後のアドレスの供給は不要である。
【００４２】
また、消去コマンドC8の認識後に、コマンドデコーダ２６が、コマンドコードして「555AA」「2AA55」及び「データ30」を連続して供給されると（Ｓ１３，Ｓ１４，Ｓ１８）、セクタイレーズSERSが認識される（Ｓ１９）。この時のコマンドコードも、外部からのコードがそのままコマンドデコーダ２６に供給される。さらに、その後のアドレス信号やデータ信号に対しても暗号コードによる変換は行われない。
【００４３】
セクタイレーズSERSが認識されると（Ｓ１９）、消去対象のセクタアドレスが入力され（Ｓ２０）、そのセクタの消去が実行される（Ｓ２１）。セクタアドレス信号は、暗号コードにより暗号化する必要はない。
【００４４】
図６は、暗号化コマンドと変換後の通常コマンドとの関係を示す図である。図６（Ａ）は、プログラムの場合の通常のコマンドシーケンスを示す。図５にて説明した通り、プログラムコマンドは、コマンドコードとして「555AA」「2AA55」「555A0」が連続して供給された時に認識される。即ち、２進法で示すと、図６に示される通り、アドレス端子Ａ0−Ａkとデータ入力端子Ｄ0−Ｄjにそれぞれ「0101 0101 0101」「1010 1010」、「0010 1010 1010」「0101 0101」、「0101 0101 0101」「1010 0000」が連続して供給されると、プログラムコマンドが認識される。その後、プログラムアドレスPAとプログラムデータPDとが、アドレス端子とデータ入力端子とに供給される。
【００４５】
さて、今仮に、暗号コードが、アドレス側で（1111 1011 1101）、データ側で（1111 0011）が暗号コード記憶部５２の記憶トランジスタにプログラムされているとする。即ち、アドレス側で上位から６ビット目と１１ビット目の記憶トランジスタがプログラム（データ０）され、データ側で上位から５，６ビット目の記憶トランジスタがプログラム（データ０）されているとする。
【００４６】
図６（Ｂ）は、上記の暗号コードに対する暗号化されたコマンドシーケンスを示す。上記の暗号コードでは、アドレス側で上位から６ビット目と１１ビット目がプログラムされているので、暗号化コマンドコードとしては、そのビットの信号は反転され必要がある。同様に、データ側で上位から５，６ビット目がプログラムされているので、暗号化コマンドコードとして、そのビットの信号は反転される必要がある。
【００４７】
即ち、図６（Ｂ）に示される通り、暗号化コマンドは、アドレス端子Ａ0−Ａkとデータ入力端子Ｄ0−Ｄjでそれぞれ「0101 0001 0111」「10100110」、「00101110 1000」「01011001」、「0101 0001 0111」「10101100」である。これらの暗号化されたコマンドコードが連続して供給されると、コマンド変換回路２４，２５では、アドレス側で（1111 1011 1101）、データ側で（1111 0011）の暗号コードにより上記の供給されたコマンドコードを変換し、図６（Ｃ）に示される通り、通常のコマンドコード（図６（Ａ））と同じコマンドコードに変換される。
【００４８】
また、暗号化されたコマンドコードを入力する場合でも、プログラムコマンドが認識された後は、コマンド変換回路の変換機能がリセットされるので、その後のプログラムアドレスPAとプログラムデータPDとは、暗号化されない通常のアドレスとデータを与えることができる。
【００４９】
以上の通り、本実施の形態例によれば、コマンド変換回路を設けてそこに暗号コードを記憶することにより、メモリ内部のデータの変更を伴うプログラムコマンドや消去コマンドを、任意の暗号コードで暗号化することができる。従って、暗号コードを記憶した者にしか、その後のデータの変更を行うことはできない。また、オートセレクトコマンドについても同様の暗号コードの記憶をすることにより、オートセレクト領域のデータの読み出しも、暗号コードを知る者にしか行うことができなくなる。
【００５０】
以上、本発明の保護範囲は、上記の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【００５１】
【発明の効果】
以上、本発明によれば、不揮発性メモリ内部のデータを不正に変更したり、不正に読み出したりすることが困難になる。
【図面の簡単な説明】
【図１】本実施の形態例における不揮発性メモリの全体構成図である。
【図２】コマンド切替回路の構成を示す図である。
【図３】変換部の回路図である。
【図４】変換部での変換テーブルを示す図である。
【図５】コマンドデコーダによるコマンド認識のフローチャート図である。
【図６】暗号化コマンドと変換後の通常コマンドとの関係を示す図である。
【符号の説明】
ＭＣ セルマトリクス
２０ データ入出力バッファ
２２ アドレス入力バッファ
２４，２５ コマンド変換回路
２６ コマンドデコーダ
５０ 変換部
５２ 暗号コード記憶部
【図１】
0003892994.tif 000002
【図２】
0003892994.tif 000003
【図３】
0003892994.tif 000004
【図４】
0003892994.tif 000005
【図５】
0003892994.tif 000006
【図６】
0003892994.tif 000007