(57)【要約】      （修正有）【課題】誤り訂正能力を超える誤りが発生した場合であっても、誤り発生を適切に検出する。【解決手段】不揮発性記憶システム１０００において、不揮発性メモリＭＥＭからデータを読み出す場合、誤り訂正処理部２５は、メモリインターフェース部２６が取得した読み出しデータに対して、エラー訂正復号化処理を実行することで、読み出しデータに対応する認証コード化データを取得し、取得した認証コード化データから、データと、認証コードとを分離する。認証コード生成部２４１は、認証コード化データから分離されたデータに基づいて、認証コードを生成する。認証コード検出部２４２は、認証コード化データから分離することで取得された認証コードである第１認証コードと、認証コード化データから分離されたデータに基づいて生成された認証コードである第２認証コードと、を比較し、比較結果を示すフラグデータを出力する。【選択図】図１
2014191372.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
認証コード生成部と、
認証コード検出部と、
誤り訂正処理部と、
前記不揮発性メモリにデータを書き込む処理、および／または、前記不揮発性メモリからデータを読み出す処理の制御を行うメモリインターフェース部と、
を備え、
（１）前記不揮発性メモリにデータを書き込む場合、
前記認証コード生成部は、前記不揮発性メモリへの書き込みデータに基づいて、認証コードを生成し、生成した認証コードを前記書き込みデータに付与する処理を実行することで、認証コード化データを取得し、
前記誤り訂正処理部は、前記認証コード化データに対して、エラー訂正符号化処理を実行し、
前記メモリインターフェース部は、前記誤り訂正処理部により前記エラー訂正符号化処理が実行された前記認証コード化データを、前記不揮発性メモリに対する書き込みデータとして、前記不揮発性メモリに出力し、
（２）前記不揮発性メモリからデータを読み出す場合、
前記メモリインターフェース部は、前記不揮発性メモリから読み出しデータを取得し、
前記誤り訂正処理部は、前記メモリインターフェース部が取得した読み出しデータに対して、エラー訂正復号化処理を実行することで、前記読み出しデータに対応する認証コード化データを取得し、取得した前記認証コード化データから、データと、認証コードとを分離し、
前記認証コード生成部は、前記誤り訂正処理部により前記認証コード化データから分離されたデータに基づいて、認証コードを生成し、
前記認証コード検出部は、前記誤り訂正処理部により、前記認証コード化データから分離することで取得された認証コードである第１認証コードと、前記認証コード生成部により、前記認証コード化データから分離されたデータに基づいて生成された認証コードである第２認証コードと、を比較し、比較結果を示すフラグデータを出力する、
不揮発性記憶システム。
【請求項２】
ホスト装置と不揮発性記憶装置とを備え、前記ホスト装置と前記不揮発性記憶装置との間で、コマンドおよび／またはデータが送受信される不揮発性記憶システムであって、
前記不揮発性記憶装置は、
不揮発性メモリと、
前記不揮発性メモリを制御するメモリコントローラと、
を備え、
前記メモリコントローラは、
認証コード生成部と、
認証コード検出部と、
誤り訂正処理部と、
前記不揮発性メモリにデータを書き込む処理、および／または、前記不揮発性メモリからデータを読み出す処理の制御を行うメモリインターフェース部と、
を備え、
（１）前記不揮発性メモリにデータを書き込む場合、
前記認証コード生成部は、前記不揮発性メモリへの書き込みデータに基づいて、認証コードを生成し、生成した認証コードを前記書き込みデータに付与する処理を実行することで、認証コード化データを取得し、
前記誤り訂正処理部は、前記認証コード化データに対して、エラー訂正符号化処理を実行し、
前記メモリインターフェース部は、前記誤り訂正処理部により前記エラー訂正符号化処理が実行された前記認証コード化データを、前記不揮発性メモリに対する書き込みデータとして、前記不揮発性メモリに出力し、
（２）前記不揮発性メモリからデータを読み出す場合、
前記メモリインターフェース部は、前記不揮発性メモリから読み出しデータを取得し、
前記誤り訂正処理部は、前記メモリインターフェース部が取得した読み出しデータに対して、エラー訂正復号化処理を実行することで、前記読み出しデータに対応する認証コード化データを取得し、取得した前記認証コード化データから、データと、認証コードとを分離し、
前記認証コード生成部は、前記誤り訂正処理部により前記認証コード化データから分離されたデータに基づいて、認証コードを生成し、
前記認証コード検出部は、前記誤り訂正処理部により、前記認証コード化データから分離することで取得された認証コードである第１認証コードと、前記認証コード生成部により、前記認証コード化データから分離されたデータに基づいて生成された認証コードである第２認証コードと、を比較し、比較結果を示すフラグデータを出力する、
不揮発性記憶システム。
【請求項３】
前記認証コード生成部は、改竄防止技術を用いて、前記認証コードを生成する、
請求項１または２に記載の不揮発性記憶システム。
【請求項４】
前記認証コード生成部は、
（１）前記不揮発性メモリにデータを書き込む場合、
前記不揮発性メモリへの書き込みデータに基づいて、一方向ハッシュ関数により算出した値を取得することで、前記認証コードを生成し、
（２）前記不揮発性メモリからデータを読み出す場合、
前記誤り訂正処理部により前記認証コード化データから分離されたデータに基づいて、一方向ハッシュ関数により算出した値を取得することで、前記認証コードを生成する、
請求項３に記載の不揮発性記憶システム。
【請求項５】
前記認証コード生成部は、なりすまし防止技術を用いて、前記認証コードを生成する、
請求項１または２に記載の不揮発性記憶システム。
【請求項６】
前記認証コード生成部は、
（１）前記不揮発性メモリにデータを書き込む場合、
鍵情報に用いて、前記不揮発性メモリへの書き込みデータから、メッセージ認証コードを算出することで、前記認証コードを生成し、
（２）前記不揮発性メモリからデータを読み出す場合、
前記鍵情報に用いて、前記誤り訂正処理部により前記認証コード化データから分離されたデータから、メッセージ認証コードを算出することで、前記認証コードを生成する、
請求項５に記載の不揮発性記憶システム。
【請求項７】
請求項２から６のいずれかに記載の不揮発性記憶システムに用いられる前記不揮発性記憶装置。
【請求項８】
請求項２から６のいずれかに記載の不揮発性記憶システムに用いられる前記メモリコントローラ。
【請求項９】
不揮発性メモリと、前記不揮発性メモリにデータを書き込む処理、および／または、前記不揮発性メモリからデータを読み出す処理の制御を行うメモリインターフェース部と、を含む不揮発性記憶システムに用いられるデータ処理方法をコンピュータで実行するためのプログラムであって、
前記データ処理方法は、
前記不揮発性メモリにデータを書き込むデータ書き込みステップと、
前記不揮発性メモリからデータを読み出すデータ読み出しステップと、
を備え、
前記データ書き込みステップは、
前記不揮発性メモリへの書き込みデータに基づいて、認証コードを生成し、生成した認証コードを前記書き込みデータに付与する処理を実行することで、認証コード化データを取得するステップと、
前記認証コード化データに対して、エラー訂正符号化処理を実行するステップと、
前記メモリインターフェース部により、前記誤り訂正処理部により前記エラー訂正符号化処理が実行された前記認証コード化データを、前記不揮発性メモリに対する書き込みデータとして、前記不揮発性メモリに出力するステップと、
を備え、
前記データ読み出しステップは、
前記メモリインターフェース部により、前記不揮発性メモリから読み出しデータを取得するステップと、
前記メモリインターフェース部が取得した読み出しデータに対して、エラー訂正復号化処理を実行することで、前記読み出しデータに対応する認証コード化データを取得し、取得した前記認証コード化データから、データと、認証コードとを分離するステップと、
前記誤り訂正処理部により前記認証コード化データから分離されたデータに基づいて、認証コードを生成するステップと、
前記認証コード化データから分離することで取得された認証コードである第１認証コードと、前記認証コード化データから分離されたデータに基づいて生成された認証コードである第２認証コードと、を比較し、比較結果を示すフラグデータを出力するステップと、
を備える
データ処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶装置に記憶されるデータの誤り検出技術に関する。
【背景技術】
【０００２】
近年、ＮＡＮＤフラッシュメモリなどの不揮発性半導体メモリにおいて、プロセス技術の微細化等に伴うデータ信頼性の低下を防ぐ多様な技術が提案されている。そのような技術の１つとして、誤り訂正符号を用いて、不揮発性半導体メモリの記憶データの誤り検出を行う技術がある。
【０００３】
一般的に、ＮＡＮＤフラッシュメモリなどの不揮発性半導体メモリを用いた不揮発性記憶装置では、誤り訂正回路（ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）回路）を備えている。このような不揮発性記憶装置では、記憶したデータに誤りがあった場合、誤り訂正回路により、当該データに対して誤り検出処理や誤り訂正処理を行うことで、当該記憶データに誤りがあることを検出したり、当該記憶データを正しいデータに訂正したりすることができる。不揮発性記憶装置では、このように誤り検出・訂正処理を行うことで、不揮発性半導体メモリの記憶データの信頼性を確保している。
【０００４】
ところが、誤り訂正回路（ＥＣＣ回路）では、誤り訂正能力を超える誤りが発生した場合、その挙動を保証することができない。
【０００５】
この問題に対処するために、例えば、特許文献１の技術では、誤り位置多項式により算出した誤り数と、誤りロケータ計算＆誤り訂正器により、誤り無し領域と訂正対象領域とから構成されるデータのうち、訂正対象領域をチェン探索して算出した誤り数とを比較する。そして、比較した結果、一致しない場合は誤り訂正能力を超える誤りが発生したと判断している。そして、特許文献１の技術では、誤り訂正能力を超える誤りが発生したと判断した場合、誤り訂正を行わないようにすることで、データに誤り訂正能力を超える誤りがある場合に、さらなる誤りを付加することを防止している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１１９０１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１の技術における、誤り訂正能力を超える誤りが発生したとする判断は、必ずしも正しいとは限らない。
【０００８】
例えば、所定のメモリ領域に格納する、あるいは、格納された符号データ（データ＋シンドローム）が、何らかのイレギュラーアクセスやデータ送受信系統のトラブル等によって、すべて「０ｘ００」（「０ｘ」は１６進数表示を示す。）にデータ化けしてしまった場合、誤り訂正回路（ＥＣＣ）は、誤り訂正能力を超える誤りが発生しているにも関わらず、誤りなしデータと判断する。つまり、符号データ（データ＋シンドローム）が、全て「０ｘ００」である場合、シンドロームの値も全て「０ｘ００」であるので、誤り訂正回路は、当該シンドロームの値に基づいて、当該符号データには「誤りなし」と誤判定する。
【０００９】
このように、上記特許文献１の技術では、上記のような場合、誤り訂正能力を超える誤りが発生しているにも関わらず、誤り発生を検出することができない。
【００１０】
そこで、本発明は、上記問題点に鑑み、誤り訂正能力を超える誤りが発生した場合であっても、誤り発生を適切に検出することができる不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、第１の発明は、不揮発性メモリと、認証コード生成部と、認証コード検出部と、誤り訂正処理部と、メモリインターフェース部と、を備える不揮発性記憶システムである。
【００１２】
メモリインターフェース部は、不揮発性メモリにデータを書き込む処理、および／または、不揮発性メモリからデータを読み出す処理の制御を行う。
（１）不揮発性メモリにデータを書き込む場合、
認証コード生成部は、不揮発性メモリへの書き込みデータに基づいて、認証コードを生成し、生成した認証コードを書き込みデータに付与する処理を実行することで、認証コード化データを取得し、
誤り訂正処理部は、認証コード化データに対して、エラー訂正符号化処理を実行し、
メモリインターフェース部は、誤り訂正処理部によりエラー訂正符号化処理が実行された認証コード化データを、不揮発性メモリに対する書き込みデータとして、不揮発性メモリに出力する。
（２）不揮発性メモリからデータを読み出す場合、
メモリインターフェース部は、不揮発性メモリから読み出しデータを取得し、
誤り訂正処理部は、メモリインターフェース部が取得した読み出しデータに対して、エラー訂正復号化処理を実行することで、読み出しデータに対応する認証コード化データを取得し、取得した認証コード化データから、データと、認証コードとを分離し、
認証コード生成部は、誤り訂正処理部により認証コード化データから分離されたデータに基づいて、認証コードを生成し、
認証コード検出部は、誤り訂正処理部により、認証コード化データから分離することで取得された認証コードである第１認証コードと、認証コード生成部により、認証コード化データから分離されたデータに基づいて生成された認証コードである第２認証コードと、を比較し、比較結果を示すフラグデータを出力する。
【００１３】
この不揮発性記憶システムでは、不揮発性メモリへのデータ書き込み処理において、認証技術を用いて生成した認証コードを含めた書き込みデータを不揮発性メモリに書き込み、データ読み出し処理において、読み出しデータから、データ書き込み時に書き込みデータに含めた認証コードと同じ値の認証コードを取得できるか否かを判断することにより、データの信頼性を適切に判断することができる。
【００１４】
このように、この不揮発性記憶システムでは、データ読み出し処理において、読み出しデータから、データ書き込み時に含めた認証コードを正しく復元できるか否かを判断するので、誤り訂正能力を超える誤りが発生した場合であっても、誤り発生を適切に検出することができる。
【００１５】
なお、「フラグデータ」とは、比較結果（上記比較処理の結果）を示すデータであれば、どのような形式のデータであってもよく、フラグ形式のデータに限定されない。
【００１６】
第２の発明は、ホスト装置と不揮発性記憶装置とを備え、ホスト装置と不揮発性記憶装置との間で、コマンドおよび／またはデータが送受信される不揮発性記憶システムである。
【００１７】
不揮発性記憶装置は、不揮発性メモリと、メモリコントローラと、を備える。
【００１８】
メモリコントローラは、認証コード生成部と、認証コード検出部と、誤り訂正処理部と、メモリインターフェース部と、を備える。
【００１９】
メモリインターフェース部は、不揮発性メモリにデータを書き込む処理、および／または、不揮発性メモリからデータを読み出す処理の制御を行う。
（１）不揮発性メモリにデータを書き込む場合、
認証コード生成部は、不揮発性メモリへの書き込みデータに基づいて、認証コードを生成し、生成した認証コードを書き込みデータに付与する処理を実行することで、認証コード化データを取得し、
誤り訂正処理部は、認証コード化データに対して、エラー訂正符号化処理を実行し、
メモリインターフェース部は、誤り訂正処理部によりエラー訂正符号化処理が実行された認証コード化データを、不揮発性メモリに対する書き込みデータとして、不揮発性メモリに出力する。
（２）不揮発性メモリからデータを読み出す場合、
メモリインターフェース部は、不揮発性メモリから読み出しデータを取得し、
誤り訂正処理部は、メモリインターフェース部が取得した読み出しデータに対して、エラー訂正復号化処理を実行することで、読み出しデータに対応する認証コード化データを取得し、取得した認証コード化データから、データと、認証コードとを分離し、
認証コード生成部は、誤り訂正処理部により認証コード化データから分離されたデータに基づいて、認証コードを生成し、
認証コード検出部は、誤り訂正処理部により、認証コード化データから分離することで取得された認証コードである第１認証コードと、認証コード生成部により、認証コード化データから分離されたデータに基づいて生成された認証コードである第２認証コードと、を比較し、比較結果を示すフラグデータを出力する。
【００２０】
これにより、不揮発性メモリとメモリコントローラとを備える不揮発性記憶装置と、ホスト装置とを用いて、不揮発性記憶システムを構成することができる。
【００２１】
そして、この不揮発性記憶システムでは、不揮発性メモリへのデータ書き込み処理において、認証技術を用いて生成した認証コードを含めた書き込みデータを不揮発性メモリに書き込み、データ読み出し処理において、読み出しデータから、データ書き込み時に書き込みデータに含めた認証コードと同じ値の認証コードを取得できるか否かを判断することにより、データの信頼性を適切に判断することができる。
【００２２】
このように、この不揮発性記憶システムでは、データ読み出し処理において、読み出しデータから、データ書き込み時に含めた認証コードを正しく復元できるか否かを判断するので、誤り訂正能力を超える誤りが発生した場合であっても、誤り発生を適切に検出することができる。
【００２３】
第３の発明は、第１または第２の発明であって、認証コード生成部は、改竄防止技術を用いて、認証コードを生成する。
【００２４】
これにより、この不揮発性記憶システムでは、改竄防止技術を用いて生成した認証コードを用いて、データ誤り発生の有無を適切に判断することができる。
【００２５】
第４の発明は、第３の発明であって、認証コード生成部は、
（１）不揮発性メモリにデータを書き込む場合、不揮発性メモリへの書き込みデータに基づいて、一方向ハッシュ関数により算出した値を取得することで、認証コードを生成し、
（２）不揮発性メモリからデータを読み出す場合、誤り訂正処理部により認証コード化データから分離されたデータに基づいて、一方向ハッシュ関数により算出した値を取得することで、認証コードを生成する。
【００２６】
これにより、この不揮発性記憶システムでは、一方向ハッシュ関数を用いた改竄防止技術により生成した認証コードを用いて、データ誤り発生の有無を適切に判断することができる。
【００２７】
第５の発明は、第１または第２の発明であって、認証コード生成部は、なりすまし防止技術を用いて、認証コードを生成する。
【００２８】
これにより、この不揮発性記憶システムでは、なりすまし防止技術を用いて生成した認証コードを用いて、データ誤り発生の有無を適切に判断することができる。
【００２９】
第６の発明は、第５の発明であって、認証コード生成部は、
（１）不揮発性メモリにデータを書き込む場合、鍵情報に用いて、不揮発性メモリへの書き込みデータから、メッセージ認証コードを算出することで、認証コードを生成し、
（２）不揮発性メモリからデータを読み出す場合、鍵情報に用いて、誤り訂正処理部により認証コード化データから分離されたデータから、メッセージ認証コードを算出することで、認証コードを生成する。
【００３０】
これにより、この不揮発性記憶システムでは、メッセージ認証コード技術を用いたなりすまし防止技術により生成した認証コードを用いて、データ誤り発生の有無を適切に判断することができる。
【００３１】
第７の発明は、第２から第６のいずれかの発明である不揮発性記憶システムに用いられる不揮発性記憶装置である。
【００３２】
これにより、第２から第６のいずれかの発明である不揮発性記憶システムを構成する不揮発性記憶装置を実現することができる。
【００３３】
第８の発明は、第２から第６のいずれかの発明である不揮発性記憶システムに用いられるメモリコントローラである。
【００３４】
これにより、第２から第６のいずれかの発明である不揮発性記憶システムを構成するメモリコントローラを実現することができる。
【００３５】
第９の発明は、不揮発性メモリと、不揮発性メモリにデータを書き込む処理、および／または、不揮発性メモリからデータを読み出す処理の制御を行うメモリインターフェース部と、を含む不揮発性記憶システムに用いられるデータ処理方法をコンピュータで実行するためのプログラムである。
【００３６】
データ処理方法は、不揮発性メモリにデータを書き込むデータ書き込みステップと、不揮発性メモリからデータを読み出すデータ読み出しステップと、を備える。
【００３７】
データ書き込みステップは、
不揮発性メモリへの書き込みデータに基づいて、認証コードを生成し、生成した認証コードを書き込みデータに付与する処理を実行することで、認証コード化データを取得するステップと、
認証コード化データに対して、エラー訂正符号化処理を実行するステップと、
メモリインターフェース部により、誤り訂正処理部によりエラー訂正符号化処理が実行された認証コード化データを、不揮発性メモリに対する書き込みデータとして、不揮発性メモリに出力するステップと、を備える。
【００３８】
データ読み出しステップは、
メモリインターフェース部により、不揮発性メモリから読み出しデータを取得するステップと、
メモリインターフェース部が取得した読み出しデータに対して、エラー訂正復号化処理を実行することで、読み出しデータに対応する認証コード化データを取得し、取得した認証コード化データから、データと、認証コードとを分離するステップと、
誤り訂正処理部により認証コード化データから分離されたデータに基づいて、認証コードを生成するステップと、
認証コード化データから分離することで取得された認証コードである第１認証コードと、認証コード化データから分離されたデータに基づいて生成された認証コードである第２認証コードと、を比較し、比較結果を示すフラグデータを出力するステップと、を備える。
【００３９】
これにより、第１の発明と同様の効果を奏するデータ処理方法をコンピュータで実行するためのプログラムを実現することができる。
【発明の効果】
【００４０】
本発明によれば、誤り訂正能力を超える誤りが発生した場合であっても、誤り発生を適切に検出することができる不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラムを実現することができる。
【図面の簡単な説明】
【００４１】
【図１】第１実施形態に係る不揮発性記憶システム１０００の概略構成図。
【図２】符号データ（不揮発性メモリＭＥＭへの書き込みデータ）のフォーマット（一例）を示す図。
【図３】第２実施形態に係る不揮発性記憶システム２０００の概略構成図。
【図４】符号データ（不揮発性メモリＭＥＭへの書き込みデータ）のフォーマット（一例）を示す図。
【発明を実施するための形態】
【００４２】
［第１実施形態］
第１実施形態について、図面を参照しながら、以下、説明する。
【００４３】
＜１．１：不揮発性記憶システムの構成＞
図１は、第１実施形態に係る不揮発性記憶システム１０００の概略構成図である。
【００４４】
不揮発性記憶システム１０００は、図１に示すように、ホスト装置１と、不揮発性記憶装置２と、備える。ホスト装置１と不揮発性記憶装置２とは、例えば、バスで接続されている。
【００４５】
不揮発性記憶装置２は、図１に示すように、メモリコントローラＭＣと、不揮発性メモリＭＥＭと、を備える。
【００４６】
メモリコントローラＭＣは、図１に示すように、ホストＩＦ部２１と、コマンド制御部２２と、アドレス変換部２３と、認証処理部２４と、誤り訂正処理部２５と、メモリＩＦ部２６と、を備える。
【００４７】
ホスト装置１は、バス（クロック信号、データ、コマンド等を送受信するための通信路）を介して、不揮発性記憶装置２と電気的に接続することが可能である。ホスト装置１は、不揮発性記憶装置２に対して、コマンド、データ等を送信し、および／または、不揮発性記憶装置２から、ステータス信号やデータ等を受信する。
【００４８】
不揮発性記憶装置２は、データを記憶することができる不揮発性メモリＭＥＭと、不揮発性メモリＭＥＭを制御するメモリコントローラＭＣとを備える。不揮発性記憶装置２は、バス（クロック信号、データ、コマンド等を送受信するための通信路）を介して、ホスト装置１と電気的に接続することが可能である。不揮発性記憶装置２は、ホスト装置１から、コマンド、データ等を受信し、および／または、ホスト装置１へ、ステータス信号やデータ等を送信する。
【００４９】
不揮発性メモリＭＥＭは、例えば、ＮＡＮＤフラッシュメモリであり、メモリコントローラＭＣの制御に従い、データの書き込みおよび／または読み出しを行うことができるメモリである。
【００５０】
メモリコントローラＭＣは、不揮発性メモリＭＥＭのデータの書き込み処理および／または読み出し処理の制御を行う。メモリコントローラＭＣは、図１に示すように、ホストＩＦ部２１と、コマンド制御部２２と、アドレス変換部２３と、認証処理部２４と、誤り訂正処理部２５と、メモリＩＦ部２６と、を備える。
【００５１】
ホストＩＦ部２１は、ホスト装置１とのインターフェース部である。ホストＩＦ部２１は、例えば、バスにより、ホスト装置１と接続され、バスを介して、ホスト装置１から、データ、コマンド等を受信する。また、ホストＩＦ部は、バスを介して、ホスト装置１へ、ステータス信号、データ等を送信する。
【００５２】
ホストＩＦ部２１は、ホスト装置１から受信したコマンドを、コマンド制御部２２に出力する。また、ホストＩＦ部２１は、ホスト装置１から受信したコマンドが書き込みコマンドである場合、当該書き込みコマンドに付随する書き込みデータを認証処理部２４の認証コード生成部２４１に出力する。
【００５３】
また、ホストＩＦ部２１は、認証処理部２４から出力される読み出しデータと比較結果フラグとを入力する。そして、ホストＩＦ部２１は、入力された読み出しデータと比較結果フラグとを、バスを介して、ホスト装置１へ送信する。
【００５４】
コマンド制御部２２は、ホストＩＦ部２１からの出力を入力とする。コマンド制御部２２は、ホストＩＦ部２１から出力されるコマンドをデコードし、当該コマンドで指定されている論理アドレスを取得する。そして、コマンド制御部２２は、取得した論理アドレスに関する情報をアドレス変換部２３に出力する。
【００５５】
アドレス変換部２３は、コマンド制御部２２から出力される論理アドレスに関する情報を入力する。また、アドレス変換部２３は、論理アドレス／物理アドレス変換テーブルを有している。アドレス変換部２３は、論理アドレス／物理アドレス変換テーブルに基づいて、コマンド制御部２２から入力された論理アドレスを物理アドレスに変換する。そして、アドレス変換部２３は、当該物理アドレスに関する情報をメモリＩＦ部２６に出力する。
【００５６】
認証処理部２４は、図１に示すように、認証コード生成部２４１と、認証コード検出部２４２と、を備える。
【００５７】
認証コード生成部２４１は、ホストＩＦ部２１から出力される書き込みコマンドに付随する書き込みデータを入力する。認証コード生成部２４１は、入力された書き込みデータに基づいて、認証コードを生成する。そして、認証コード生成部２４１は、ホストＩＦ部２１から入力された書き込みデータと、生成した認証コードとを誤り訂正処理部２５のＥＣＣ符号化部２５１に出力する。
【００５８】
また、認証コード生成部２４１は、誤り訂正処理部２５のＥＣＣ復号化部２５２から出力されるデータを入力する。そして、認証コード生成部２４１は、入力されたデータに基づいて、認証コードを生成する。そして、認証コード生成部２４１は、生成した認証コードを認証コード検出部２４２に出力する。また、認証コード生成部２４１は、誤り訂正処理部２５のＥＣＣ復号化部２５２から出力されるデータを、ホストＩＦ部２１に出力する。
【００５９】
認証コード検出部２４２は、認証コード生成部２４１から出力される認証コードと、誤り訂正処理部２５のＥＣＣ復号化部２５２から出力される認証コードとを入力する。そして、認証コード検出部２４２は、入力された２つの認証コードを比較し、その比較結果を示すフラグデータをホストＩＦ部２１に出力する。
【００６０】
誤り訂正処理部２５は、図１に示すように、ＥＣＣ符号化部２５１と、ＥＣＣ復号化部２５２とを備える。
【００６１】
ＥＣＣ符号化部２５１は、認証コード生成部２４１から出力される書き込みデータと、認証コードとを入力する。そして、ＥＣＣ符号化部２５１は、入力された書き込みデータと認証コードとに基づいて、シンドロームを算出する。そして、ＥＣＣ符号化部２５１は、書き込みデータと、認証コードと、算出したシンドロームとを、不揮発性メモリＭＥＭへの書き込みデータとして、メモリＩＦ部２６に出力する。
【００６２】
ＥＣＣ復号化部２５２は、メモリＩＦ部２６から出力される読み出しデータを入力する。ＥＣＣ復号化部２５２は、入力された読み出しデータに対して誤り訂正処理を実行し、誤り訂正処理後のデータを認証コード検出部２４２に出力する。
【００６３】
メモリＩＦ部２６は、不揮発性メモリＭＥＭに対してデータを書き込む処理、および／または、不揮発性メモリＭＥＭからデータを読み出す処理の制御を行うインターフェース部である。
【００６４】
不揮発性メモリＭＥＭに対してデータを書き込む処理を行う場合、メモリＩＦ部２６は、アドレス変換部２３から出力される物理アドレス（書き込みアドレス）と、ＥＣＣ符号化部２５１から出力される書き込みデータとを入力する。そして、メモリＩＦ部２６は、不揮発性メモリＭＥＭにおいて、当該物理アドレス（書き込みアドレス）に、ＥＣＣ符号化部２５１から出力される書き込みデータが書き込まれるように、不揮発性メモリＭＥＭに対して、データ書き込み制御を行う。
【００６５】
不揮発性メモリＭＥＭからデータを読み出す処理を行う場合、メモリＩＦ部２６は、アドレス変換部２３から出力される物理アドレス（読み出しアドレス）を入力する。そして、メモリＩＦ部２６は、不揮発性メモリＭＥＭにおいて、当該物理アドレス（読み出しアドレス）に、記憶されているデータを読み出すように、不揮発性メモリＭＥＭに対して、データ読み出し制御を行う。
【００６６】
＜１．２：不揮発性記憶システムの動作＞
以上のように構成された不揮発性記憶システム１０００の動作について、図面を参照しながら、説明する。なお、以下では、データ書き込み処理と、データ読み出し処理とに分けて、図１に付した処理番号（図１中に括弧で付した番号）の順に、説明する。
【００６７】
（１．２．１：データ書き込み処理）
まず、データ書き込み処理について、説明する。
【００６８】
≪処理（１）≫
ホスト装置１は、メモリコントローラＭＣに対して、書き込みコマンドと書き込みデータを送信する。
【００６９】
≪処理（２）≫
ホストＩＦ部２１は、書き込みコマンドを取得し、取得した書き込みコマンドをコマンド制御部２２に出力する。
【００７０】
≪処理（３）≫
コマンド制御部２２は、書き込みコマンドをデコードし、書き込み論理アドレスを取得する。そして、コマンド制御部２２は、取得した書き込み論理アドレスに関する情報をアドレス変換部２３に出力する。
【００７１】
≪処理（４）≫
アドレス変換部２３は、論理アドレス／物理アドレス変換テーブルに基づいて、入力された書き込み論理アドレスを物理アドレスに変換して、メモリＩＦ部２６に出力する。
【００７２】
≪処理（５）≫
ホストＩＦ部は、書き込みコマンドに付随する書き込みデータ（これをＤ１と表記する。）を、認証コード生成部２４１（例えば、ハッシュ値生成回路）に出力する。
【００７３】
≪処理（６）≫
認証コード生成部２４１（例えば、ハッシュ値生成回路）は、ホストＩＦ部から出力された書き込みデータの認証コード（例えば、ハッシュ値）（これをＨ１と表記する。）を算出する。例えば、認証コードをハッシュ値とする場合、認証コード生成部２４１は、書き込みデータに対して、一方向ハッシュ関数（例えば、ＳＨＡ−１，ＳＨＡ−２、ＭＤ５、ＲＩＰＥＭＤ−１６０等）を施すことで（書き込みデータを入力（キー）として一方向ハッシュ関数を施すことで）、ハッシュ値を算出する。
【００７４】
そして、認証コード生成部２４１（例えば、ハッシュ値生成回路）は、ホストＩＦ部から出力された書き込みデータ（Ｄ１）と、算出した認証コード（例えば、ハッシュ値）（Ｈ１）とを誤り訂正処理部２５のＥＣＣ符号化部に出力する。
【００７５】
≪処理（７）≫
誤り訂正処理部２５のＥＣＣ符号化部２５１は、処理（６）で取得した「書き込みデータ＋認証コード」（例えば、「書き込みデータ＋ハッシュ値」）のシンドローム（これをＳ１と表記する。）を算出する。そして、ＥＣＣ符号化部２５１は、「書き込みデータ＋認証コード」（例えば、「書き込みデータ＋ハッシュ値」）とシンドローム値とを、不揮発性メモリＭＥＭへの書き込みデータ(符号データ)（これをＤ１＋Ｈ１＋Ｓ１と表記する。）として、メモリＩＦ部２６に出力する。
【００７６】
なお、図２に、符号データ（不揮発性メモリＭＥＭへの書き込みデータ）のフォーマット（一例）を示す。
【００７７】
図２に示すように、符号データは、データＤ１と、認証コードＨ１（例えば、ハッシュ値）と、シンドロームＳ１と、からなる。
【００７８】
誤り訂正処理部２５のＥＣＣ符号化部２５１は、図２の「データＤ１＋認証コードＨ１（例えば、ハッシュ値）」（図２のシンドローム算出対象データＤ２）を、シンドロームの算出対象として、シンドロームＳ１を算出する。そして、ＥＣＣ符号化部２５１は、「データＤ１＋認証コードＨ１（例えば、ハッシュ値）」（図２のシンドローム算出対象データＤ２）に、算出したシンドロームＳ１を付加して、図２のデータフォーマットを有する符号データを生成する。そして、ＥＣＣ符号化部２５１は、生成した符号データを、不揮発性メモリＭＥＭへの書き込みデータとして、メモリＩＦ部２６に出力する。
【００７９】
≪処理（８）≫
メモリＩＦ部２６は、アドレス変換部２３から出力される書き込みアドレスと、ＥＣＣ符号化部２５１から出力される書き込みデータ(符号データ)とを不揮発性メモリＭＥＭに出力する。そして、不揮発性メモリＭＥＭにおいて、メモリＩＦ部２６により指定された書き込みアドレスに、当該書き込みデータが、書き込まれる。
【００８０】
（１．２．２：データ読み出し処理）
次に、データ読み出し処理について、説明する。
【００８１】
≪処理（９）≫
ホスト装置１は、メモリコントローラＭＣに対して、読み出しコマンドを送信する。
【００８２】
≪処理（１０）≫
ホストＩＦ部２１は、読み出しコマンドを取得し、取得した読み出しコマンドを、コマンド制御部２２に出力する。
【００８３】
≪処理（１１）≫
コマンド制御部２２は、読み出しコマンドをデコードし、読み出し論理アドレスを取得する。そして、コマンド制御部２２は、取得した読み出し論理アドレスに関する情報をアドレス変換部２３に出力する。
【００８４】
≪処理（１２）≫
アドレス変換部２３は、論理アドレス／物理アドレス変換テーブルに基づいて、入力された読み出し論理アドレスを物理アドレスに変換して、メモリＩＦ部２６に出力する。
【００８５】
≪処理（１３）≫
メモリＩＦ部２６は、アドレス変換部２３から出力される読み出しアドレスを不揮発性メモリＭＥＭに出力する。
【００８６】
そして、不揮発性メモリＭＥＭにおいて、メモリＩＦ部２６により指定された読み出しアドレスから、データが読み出される。
【００８７】
≪処理（１４）≫
不揮発性メモリＭＥＭは、データ読み出し処理を開始し、読み出しデータ（符号データ）（これをＤ１’＋Ｈ１’＋Ｓ１’と表記する。）をメモリＩＦ部２６に出力する。
【００８８】
≪処理（１５）≫
メモリＩＦ部２６は、不揮発性メモリＭＥＭからの読み出しデータを取得し、取得した読み出しデータを誤り訂正処理部２５のＥＣＣ復号化部２５２に出力する。
【００８９】
≪処理（１６）≫
ＥＣＣ復号化部２５２は、読み出しデータ（符号データ）の誤り訂正処理を実行し、誤り訂正処理後の読み出しデータ（符号データに含まれるデータ部（実データ））（これをＤ１’と表記する。）を、認証処理部２４の認証コード生成部２４１（例えば、ハッシュ値生成回路）に出力する。
【００９０】
≪処理（１７）≫
認証コード生成部２４１（例えば、ハッシュ値生成回路）は、処理（１６）により取得した読み出しデータ（符号データに含まれるデータ部）の認証コード（例えば、ハッシュ値）（これをＨ１’’と表記する。）を算出するとともに、読み出しデータ（符号データのデータ部）（Ｄ１’）をホストＩＦ部２１に出力する。
【００９１】
≪処理（１８）≫
認証コード生成部２４１（例えば、ハッシュ値生成回路）は、処理（１７）により算出された認証コード（例えば、ハッシュ値）（Ｈ１’’）を、認証コード検出部２４２に出力する。
【００９２】
≪処理（１９）≫
ＥＣＣ復号化部２５２は、誤り訂正処理後の読み出しデータ（符号データの認証コード（例えば、符号データのハッシュ値）（これをＨ１’と表記する。））を、認証コード検出部２４２に出力する。
【００９３】
≪処理（２０）≫
認証コード検出部２４２は、処理（１８）により取得した認証コード（例えば、ハッシュ値）（Ｈ１’’）と、処理（１９）により取得した認証コード（例えば、ハッシュ値）（Ｈ１’）とを比較し、その比較結果を示すフラグデータを生成する。
【００９４】
具体的には、処理（１８）により取得した認証コード（以下、例えば、ハッシュ値）（Ｈ１’’）と、処理（１９）により取得した認証コード（例えば、ハッシュ値）（Ｈ１’）とが一致している場合、認証コード検出部２４２は、誤り訂正処理後の読み出しデータ（符号データのデータ部Ｄ１’）は、正常に誤り訂正が実施されたと判断し、フラグデータを、「正常に誤り訂正が実施された」ことを示す値（例えば、「０」）に設定する。
【００９５】
一方、処理（１８）により取得した認証コード（以下、例えば、ハッシュ値）（Ｈ１’’）と、処理（１９）により取得した認証コード（例えば、ハッシュ値）（Ｈ１’）とが不一致である場合、認証コード検出部２４２は、誤り訂正能力を超える誤りが発生したと判断し、フラグデータを、「誤り訂正能力を超える誤りが発生した」ことを示す値（例えば、「１」）に設定する。
【００９６】
そして、認証コード検出部２４２は、上記のようにして生成したフラグデータを、ホストＩＦ部２１に出力する。
【００９７】
≪処理（２１）≫
ホストＩＦ部２１は、誤り訂正処理後の読み出しデータ（符号データのデータ部）と、認証コード（例えば、ハッシュ値）の比較結果を示すフラグデータとを、ホスト装置１に送信する。
【００９８】
ホスト装置１は、メモリコントローラＭＣのホストＩＦ部２１から受信した読み出しデータと、フラグデータとを受信する。ホスト装置１は、受信したフラグデータから、受信した読み出しデータの信頼性を確認することができるので、データ信頼性に基づいて、受信した読み出しデータに対して、適宜処理を行う。
【００９９】
以上のように、不揮発性記憶システム１０００では、不揮発性メモリＭＥＭへのデータ書き込み処理において、認証技術（例えば、一方向ハッシュ関数を用いた改竄防止技術）を用いて生成した認証コードを含めた書き込みデータを不揮発性メモリＭＥＭに書き込む。そして、データ読み出し処理において、読み出しデータから、データ書き込み時に書き込みデータに含めた認証コードと同じ値の認証コードを取得できるか否かを判断することにより、つまり、誤り訂正能力以上の誤りが発生したデータを改竄データとみなすことで、不揮発性記憶システム１０００では、データの信頼性を適切に判断することができる。
【０１００】
このように、不揮発性記憶システム１０００では、データ読み出し処理において、読み出しデータから、データ書き込み時に含めた認証コードを正しく復元できるか否かを判断する。したがって、不揮発性記憶システム１０００では、不揮発性メモリの所定のメモリ領域に格納する、あるいは、格納された符号データ（データ＋シンドローム）が、何らかのイレギュラーアクセス（予期せぬアクセスや不正なアクセス）やデータ送受信系統のトラブル等により、誤り訂正能力を超える誤りが発生した場合であっても、誤り発生を適切に検出することができる。
【０１０１】
例えば、メモリＩＦ部２６から誤り訂正処理部２５のＥＣＣ復号化部２５２に出力されるデータ(Ｄ１’＋Ｈ１’＋Ｓ１’)が全て「０ｘ００」である場合、ＥＣＣ復号化部２５２により取得されるデータＤ１’および認証コードＨ１’は、ともに、全て「０ｘ００」である。一方、認証コード生成部２４１によりデータＤ１’から生成される認証コードＨ１’’（例えば、ハッシュ値）は、「０ｘ００」からのみなるデータにはならない。全て「０ｘ００」の入力データ（全バイトが「０ｘ００」のデータ）に対して、誤り訂正符号化処理や、ＣＲＣ符号化処理を実行すると、その出力は、全て「０ｘ００」のデータ（全バイトが「０ｘ００」のデータ）となるが、全て「０ｘ００」のデータ（全バイトが「０ｘ００」のデータ）に対して、一方向ハッシュ関数（認証コードを生成する関数）による認証処理を実行すると、その出力は、全て「０ｘ００」のデータ（全バイトが「０ｘ００」のデータ）にはならない。
【０１０２】
したがって、全て「０ｘ００」の入力データ（全バイトが「０ｘ００」のデータ）が入力されている場合（誤り訂正処理における誤り訂正能力を超える誤りが発生している場合の一例）、認証コード検出部２４２では、認証コードＨ１’と認証コードＨ１’’とが一致しないことを示すフラグデータが生成される。つまり、このフラグデータは、誤り訂正処理における誤り訂正能力を超える誤りが発生している場合であっても、データに誤りが発生していることを正しく示すことができる。
【０１０３】
その結果、不揮発性記憶システム１０００では、フラグデータを参照することで、誤り訂正処理における誤り訂正能力を超える誤りが発生している場合であっても、読み出しデータに誤りがあるのか否かを適切に判断することができる。
【０１０４】
［第２実施形態］
次に、第２実施形態について、説明する。
【０１０５】
＜２．１：不揮発性記憶システムの構成＞
図３は、第２実施形態に係る不揮発性記憶システム２０００の概略構成図である。
【０１０６】
本実施形態に係る不揮発性記憶システム２０００は、図３に示すように、ホスト装置１と、不揮発性記憶装置２Ａとを備える。
【０１０７】
不揮発性記憶装置２Ａは、メモリコントローラＭＣＡと、不揮発性メモリＭＥＭとを備える。
【０１０８】
メモリコントローラＭＣＡは、第１実施形態のメモリコントローラＭＣにおいて、認証処理部２４を、認証処理部２４Ａに置換した構成を有している。
【０１０９】
つまり、本実施形態の不揮発性記憶システム２０００では、第１実施形態の不揮発性記憶システム１０００において、認証処理部２４を、認証処理部２４Ａに置換した構成を有しており、この点のみが相違する。それ以外については、本実施形態の不揮発性記憶システム２０００は、第１実施形態の不揮発性記憶システム１０００と同様である。
【０１１０】
第１実施形態では、認証コードが、例えば、一方向ハッシュ関数により取得されるハッシュ値であることを想定して説明したが、本実施形態では、認証コードが、例えば、メッセージ認証コード（ＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値）であることを想定している。
【０１１１】
つまり、第１実施形態では、認証処理部が、改竄防止技術を用いて処理を実行するのに対して、本実施形態では、認証処理部が、なりすまし防止技術を用いて処理を実行する。
【０１１２】
以下では、本実施形態に特有の部分を中心に説明し、第１実施形態と同様の部分については、同一符号を付し、詳細な説明は省略する。
【０１１３】
認証処理部２４Ａは、図３に示すように、認証コード生成部２４１Ａと、認証コード検出部２４２Ａと、鍵情報格納部２４３と、を備える。
【０１１４】
認証コード生成部２４１Ａは、ホストＩＦ部２１から出力される書き込みコマンドに付随する書き込みデータと、鍵情報格納部２４３から出力される鍵情報（共有鍵暗号方式の共有鍵の情報）とを入力する。認証コード生成部２４１Ａは、鍵情報格納部からの鍵情報、つまり、共有鍵を用いて、入力された書き込みデータからＭＡＣ値を算出することで、認証コード（ＭＡＣ値）を生成する。そして、認証コード生成部２４１は、ホストＩＦ部２１から入力された書き込みデータと、生成した認証コード（ＭＡＣ値）とを誤り訂正処理部２５のＥＣＣ符号化部２５１に出力する。
【０１１５】
また、認証コード生成部２４１Ａは、誤り訂正処理部２５のＥＣＣ復号化部２５２から出力されるデータを入力する。そして、認証コード生成部２４１Ａは、入力されたデータに基づいて、鍵情報格納部２４３からの鍵情報、つまり、共有鍵を用いて、認証コード（ＭＡＣ値）を生成する。そして、認証コード生成部２４１は、生成した認証コード（ＭＡＣ値）を認証コード検出部２４２Ａに出力する。また、認証コード生成部２４１Ａは、誤り訂正処理部２５のＥＣＣ復号化部２５２から出力されるデータを、ホストＩＦ部２１に出力する。
【０１１６】
認証コード検出部２４２Ａは、認証コード生成部２４１Ａから出力される認証コード（ＭＡＣ値）と、誤り訂正処理部２５のＥＣＣ復号化部２５２から出力される認証コード（ＭＡＣ値）とを入力する。そして、認証コード検出部２４２Ａは、入力された２つの認証コード（ＭＡＣ値）を比較し、その比較結果を示すフラグデータをホストＩＦ部２１に出力する。
【０１１７】
鍵情報格納部２４３は、共有鍵暗号方式による共有鍵を格納保持しており、当該共有鍵に関する情報（鍵情報）を、認証コード生成部２４１Ａに出力する。
【０１１８】
＜２．２：不揮発性記憶システムの動作＞
以上のように構成された不揮発性記憶システム２０００の動作について、図面を参照しながら、説明する。なお、以下では、データ書き込み処理と、データ読み出し処理とに分けて、図３に付した処理番号（図３中に括弧で付した番号）の順に、説明する。
【０１１９】
（２．２．１：データ書き込み処理）
まず、データ書き込み処理について、説明する。
【０１２０】
≪処理（１）≫
ホスト装置１は、メモリコントローラＭＣＡに対して、書き込みコマンドと書き込みデータを送信する。
【０１２１】
≪処理（２）≫
ホストＩＦ部２１は、書き込みコマンドを取得し、取得した書き込みコマンドをコマンド制御部２２に出力する。
【０１２２】
≪処理（３）≫
コマンド制御部２２は、書き込みコマンドをデコードし、書き込み論理アドレスを取得する。そして、コマンド制御部２２は、取得した書き込み論理アドレスに関する情報をアドレス変換部２３に出力する。
【０１２３】
≪処理（４）≫
アドレス変換部２３は、論理アドレス／物理アドレス変換テーブルに基づいて、入力された書き込み論理アドレスを物理アドレスに変換して、メモリＩＦ部２６に出力する。
【０１２４】
≪処理（５）≫
ホストＩＦ部は、書き込みコマンドに付随する書き込みデータ（これをＤ１と表記する。）を、認証コード生成部２４１Ａ（例えば、ハッシュ値生成回路）に出力する。
【０１２５】
≪処理（６）≫
認証コード生成部２４１Ａは、鍵情報格納部２４３に格納保持されている鍵情報、つまり、共有鍵を用いて、ホストＩＦ部から出力された書き込みデータから、認証コード（ＭＡＣ値）（これをＭ１と表記する。）を算出する。
【０１２６】
そして、認証コード生成部２４１Ａは、ホストＩＦ部から出力された書き込みデータ（Ｄ１）と、算出した認証コード（ＭＡＣ値）（Ｍ１）とを誤り訂正処理部２５のＥＣＣ符号化部に出力する。
【０１２７】
≪処理（７）≫
誤り訂正処理部２５のＥＣＣ符号化部２５１は、処理（６）で取得した「書き込みデータ＋認証コード（ＭＡＣ値）」のシンドローム（これをＳ１と表記する。）を算出する。そして、ＥＣＣ符号化部２５１は、「書き込みデータ＋認証コード（ＭＡＣ値）」とシンドローム値とを、不揮発性メモリＭＥＭへの書き込みデータ(符号データ)（これをＤ１＋Ｍ１＋Ｓ１と表記する。）として、メモリＩＦ部２６に出力する。
【０１２８】
なお、図４に、符号データ（不揮発性メモリＭＥＭへの書き込みデータ）のフォーマット（一例）を示す。
【０１２９】
図４に示すように、符号データは、データＤ１と、認証コードＭ１（ＭＡＣ値）と、シンドロームＳ１と、からなる。
【０１３０】
誤り訂正処理部２５のＥＣＣ符号化部２５１は、図２の「データＤ１＋認証コードＭ１（ＭＡＣ値）」（図４のシンドローム算出対象データＤ２）を、シンドロームの算出対象として、シンドロームＳ１を算出する。そして、ＥＣＣ符号化部２５１は、「データＤ１＋認証コードＭ１（ＭＡＣ値）」（図４のシンドローム算出対象データＤ２）に、算出したシンドロームＳ１を付加して、図４のデータフォーマットを有する符号データを生成する。そして、ＥＣＣ符号化部２５１は、生成した符号データを、不揮発性メモリＭＥＭへの書き込みデータとして、メモリＩＦ部２６に出力する。
【０１３１】
≪処理（８）≫
メモリＩＦ部２６は、アドレス変換部２３から出力される書き込みアドレスと、ＥＣＣ符号化部２５１から出力される書き込みデータ(符号データ)とを不揮発性メモリＭＥＭに出力する。そして、不揮発性メモリＭＥＭにおいて、メモリＩＦ部２６により指定された書き込みアドレスに、当該書き込みデータが、書き込まれる。
【０１３２】
（２．２．２：データ読み出し処理）
次に、データ読み出し処理について、説明する。
【０１３３】
≪処理（９）≫
ホスト装置１は、メモリコントローラＭＣＡに対して、読み出しコマンドを送信する。
【０１３４】
≪処理（１０）≫
ホストＩＦ部２１は、読み出しコマンドを取得し、取得した読み出しコマンドを、コマンド制御部２２に出力する。
【０１３５】
≪処理（１１）≫
コマンド制御部２２は、読み出しコマンドをデコードし、読み出し論理アドレスを取得する。そして、コマンド制御部２２は、取得した読み出し論理アドレスに関する情報をアドレス変換部２３に出力する。
【０１３６】
≪処理（１２）≫
アドレス変換部２３は、論理アドレス／物理アドレス変換テーブルに基づいて、入力された読み出し論理アドレスを物理アドレスに変換して、メモリＩＦ部２６に出力する。
【０１３７】
≪処理（１３）≫
メモリＩＦ部２６は、アドレス変換部２３から出力される読み出しアドレスを不揮発性メモリＭＥＭに出力する。
【０１３８】
そして、不揮発性メモリＭＥＭにおいて、メモリＩＦ部２６により指定された読み出しアドレスから、データが読み出される。
【０１３９】
≪処理（１４）≫
不揮発性メモリＭＥＭは、データ読み出し処理を開始し、読み出しデータ（符号データ）（これをＤ１’＋Ｍ１’＋Ｓ１’と表記する。）をメモリＩＦ部２６に出力する。
【０１４０】
≪処理（１５）≫
メモリＩＦ部２６は、不揮発性メモリＭＥＭからの読み出しデータを取得し、取得した読み出しデータを誤り訂正処理部２５のＥＣＣ復号化部２５２に出力する。
【０１４１】
≪処理（１６）≫
ＥＣＣ復号化部２５２は、読み出しデータ（符号データ）の誤り訂正処理を実行し、誤り訂正処理後の読み出しデータ（符号データに含まれるデータ部（実データ））（これをＤ１’と表記する。）を、認証処理部２４Ａの認証コード生成部２４１Ａに出力する。
【０１４２】
≪処理（１７）≫
認証コード生成部２４１Ａは、鍵情報格納部２４３の鍵情報（共有鍵）を用いて、処理（１６）により取得した読み出しデータ（符号データに含まれるデータ部）の認証コード（ＭＡＣ値）（これをＭ１’’と表記する。）を算出するとともに、読み出しデータ（符号データのデータ部）（Ｄ１’）をホストＩＦ部２１に出力する。
【０１４３】
≪処理（１８）≫
認証コード生成部２４１Ａは、処理（１７）により算出された認証コード（ＭＡＣ値）（Ｍ１’’）を、認証コード検出部２４２Ａに出力する。
【０１４４】
≪処理（１９）≫
ＥＣＣ復号化部２５２は、誤り訂正処理後の読み出しデータ（符号データに含まれる認証コード（符号データのＭＡＣ値）（これをＭ１’と表記する。））を、認証コード検出部２４２Ａに出力する。
【０１４５】
≪処理（２０）≫
認証コード検出部２４２Ａは、処理（１８）により取得した認証コード（ＭＡＣ値Ｍ１’’）と、処理（１９）により取得した認証コード（ＭＡＣ値Ｍ１’）とを比較し、その比較結果を示すフラグデータを生成する。
【０１４６】
具体的には、処理（１８）により取得した認証コード（ＭＡＣ値Ｍ１’’）と、処理（１９）により取得した認証コード（ＭＡＣ値Ｍ１’）とが一致している場合、認証コード検出部２４２は、誤り訂正処理後の読み出しデータ（符号データに含まれるデータ部Ｄ１’）は、正常に誤り訂正が実施されたと判断し、フラグデータを、「正常に誤り訂正が実施された」ことを示す値（例えば、「０」）に設定する。
【０１４７】
一方、処理（１８）により取得した認証コード（ＭＡＣ値Ｍ１’’）と、処理（１９）により取得した認証コード（ＭＡＣ値Ｍ１’）とが不一致である場合、認証コード検出部２４２Ａは、誤り訂正能力を超える誤りが発生したと判断し、フラグデータを、「誤り訂正能力を超える誤りが発生した」ことを示す値（例えば、「１」）に設定する。
【０１４８】
そして、認証コード検出部２４２Ａは、上記のようにして生成したフラグデータを、ホストＩＦ部２１に出力する。
【０１４９】
≪処理（２１）≫
ホストＩＦ部２１は、誤り訂正処理後の読み出しデータ（符号データのデータ部）と、認証コード（ＭＡＣ値）の比較結果を示すフラグデータとを、ホスト装置１に送信する。
【０１５０】
ホスト装置１は、メモリコントローラＭＣＡのホストＩＦ部２１から受信した読み出しデータと、フラグデータとを受信する。ホスト装置１は、受信したフラグデータから、受信した読み出しデータの信頼性を確認することができるので、データ信頼性に基づいて、受信した読み出しデータに対して、適宜処理を行う。
【０１５１】
以上のように、不揮発性記憶システム２０００では、不揮発性メモリＭＥＭへのデータ書き込み処理において、認証技術（なりすまし防止技術）を用いて生成した認証コード（ＭＡＣ値）を含めた書き込みデータを不揮発性メモリＭＥＭに書き込み、データ読み出し処理において、読み出しデータから、データ書き込み時に書き込みデータに含めた認証コード（ＭＡＣ値）と同じ値の認証コード（ＭＡＣ値）を取得できるか否かを判断することにより、つまり、誤り訂正能力以上の誤りが発生したデータをなりすましデータとみなすことで、データの信頼性を適切に判断することができる。
【０１５２】
このように、不揮発性記憶システム２０００では、データ読み出し処理において、読み出しデータから、データ書き込み時に含めた認証コードを正しく復元できるか否かを判断する。したがって、不揮発性記憶システム２０００では、不揮発性メモリの所定のメモリ領域に格納する、あるいは、格納された符号データ（データ＋シンドローム）が、何らかのイレギュラーアクセス（予期せぬアクセスや不正なアクセス）やデータ送受信系統のトラブル等により、誤り訂正能力を超える誤りが発生した場合であっても、誤り発生を適切に検出することができる。
【０１５３】
例えば、メモリＩＦ部２６から誤り訂正処理部２５のＥＣＣ復号化部２５２に出力されるデータ(Ｄ１’＋Ｍ１’＋Ｓ１’)が全て「０ｘ００」である場合、ＥＣＣ復号化部２５２により取得されるデータＤ１’および認証コード（ＭＡＣ値）Ｍ１’は、ともに、全て「０ｘ００」である。一方、認証コード生成部２４１ＡによりデータＤ１’から生成される認証コード（ＭＡＣ値）Ｍ１’’は、「０ｘ００」からのみなるデータにはならない。全て「０ｘ００」の入力データ（全バイトが「０ｘ００」のデータ）に対して、誤り訂正符号化処理や、ＣＲＣ符号化処理を実行すると、その出力は、全て「０ｘ００」のデータ（全バイトが「０ｘ００」のデータ）となるが、全て「０ｘ００」のデータ（全バイトが「０ｘ００」のデータ）に対して、鍵情報に基づいて、ＭＡＣ値を算出すると、その出力は、全て「０ｘ００」のデータ（全バイトが「０ｘ００」のデータ）にはならない。
【０１５４】
したがって、全て「０ｘ００」の入力データ（全バイトが「０ｘ００」のデータ）が入力されている場合（誤り訂正処理における誤り訂正能力を超える誤りが発生している場合の一例）、認証コード検出部２４２Ａでは、認証コードＭ１’と認証コードＭ１’’とが一致しないことを示すフラグデータが生成される。つまり、このフラグデータは、誤り訂正処理における誤り訂正能力を超える誤りが発生している場合であっても、データに誤りが発生していることを正しく示すことができる。
【０１５５】
その結果、不揮発性記憶システム２０００では、フラグデータを参照することで、誤り訂正処理における誤り訂正能力を超える誤りが発生している場合であっても、読み出しデータに誤りがあるのか否かを適切に判断することができる。
【０１５６】
［他の実施形態］
上記実施形態では、不揮発性記憶装置（２、２Ａ）に、認証処理部（２４、２４Ａ）を備える構成について説明したが、これに限定されることはなく、例えば、ホスト装置が認証処理部を備える構成であってもよい。この場合、不揮発性記憶装置側の認証処理部は省略することができる。また、上記の場合、ホスト装置が認証コード（例えば、ハッシュ値やＭＡＣ値）を生成し、生成した認証コードを、書き込みコマンドに含めて、不揮発性記憶装置へ送信するようにしてもよい。また、上記の場合、不揮発性記憶装置からホスト装置へ送信される読み出しデータは、符号データのデータ部と、認証コード（例えば、ハッシュ値やＭＡＣ値）とを含むデータとすることが好ましい。
【０１５７】
また、第１実施形態と第２実施形態とを組み合わせてもよい。
【０１５８】
また、ホスト装置が不揮発性記憶装置を認証するための認証処理機構（認証処理を行う機能部）を有する場合、当該認証処理機構を用いて、第１、第２実施形態で説明した認証処理を実行するようにしてもよい。この場合、不揮発性記憶装置を認証するための認証処理機構を併用して、上記実施形態で説明した認証処理を実行することができるので、別途、認証処理部を設ける必要がなくなり、製造コスト等を抑えることができる。
【０１５９】
上記実施形態の一部または全部を組み合わせて、不揮発性記憶システム、不揮発性記憶装置等を構成するようにしてもよい。
【０１６０】
また、上記実施形態の不揮発性記憶システム、不揮発性記憶装置の一部または全部は、集積回路（例えば、ＬＳＩ、システムＬＳＩ等）として実現されるものであってもよい。
【０１６１】
上記実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置（ＣＰＵ）により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ＲＯＭなどの記憶装置に格納されており、ＲＯＭにおいて、あるいはＲＡＭに読み出されて実行される。
【０１６２】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る不揮発性記憶システム、不揮発性記憶装置をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
【０１６３】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【０１６４】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリを挙げることができる。
【０１６５】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【０１６６】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【０１６７】
１０００、２０００  不揮発性記憶システム
１  ホスト装置
２  不揮発性記憶装置
ＭＣ、ＭＣＡ  メモリコントローラ
ＭＥＭ  不揮発性メモリ
２１  ホストＩＦ部
２４、２４Ａ  認証処理部
２４１、２４１Ａ  認証コード生成部
２４２、２４２Ａ  認証コード検出部
２４３  鍵情報格納部
２５  誤り訂正処理部
２５１  ＥＣＣ符号化部
２５２  ＥＣＣ復号化部
２６  メモリＩＦ部
【図１】
2014191372.tif 000003
【図２】
2014191372.tif 000004
【図３】
2014191372.tif 000005
【図４】
2014191372.tif 000006