(57)【特許請求の範囲】
【請求項１】
第１不揮発性メモリと第１メモリコントローラとを備える第１メモリ装置と、
第２不揮発性メモリと第２メモリコントローラとを備える第２メモリ装置と、
を備え、
前記第２メモリコントローラは、
前記第１不揮発性メモリの認証に用いられる第１パラメータを前記第２不揮発性メモリから読み出して第１参照値を取得する第２メモリ装置側管理部、
を備え、
前記第１メモリコントローラは、
前記第１不揮発性メモリに記憶された第１チャレンジ値を取得し、取得した第１チャレンジ値を用いて物理的複製困難関数を計算して前記第１メモリコントローラの固有値を取得する第１固有値計算部と、
前記第２メモリ装置側管理部により取得された第１参照値と、前記第１メモリコントローラの固有値とを用いて前記第１不揮発性メモリを認証する第１認証部と、
前記第１認証部により前記第１不揮発性メモリが認証された場合、ホスト装置からのコマンドに応じて、前記第１不揮発性メモリからのデータの読み出し又は前記第１不揮発性メモリへのデータの書き込みを実行する第１アクセス制御部と、
を備え、
前記第２メモリコントローラは、さらに、
前記第１認証部により前記第１不揮発性メモリが認証された場合、前記ホスト装置からのコマンドに応じて、前記第２不揮発性メモリからのデータの読み出し又は前記第２不揮発性メモリへのデータの書き込みを実行する第２アクセス制御部、
を備える半導体記憶装置。
【請求項２】
請求項１に記載の半導体記憶装置であって、
前記第１メモリコントローラは、さらに、
前記第２不揮発性メモリの認証に用いられる第２パラメータを前記第１不揮発性メモリから読み出して第２参照値を取得する第１メモリ装置側管理部、
を備え、
前記第２メモリコントローラは、さらに、
前記第２不揮発性メモリに記憶された第２チャレンジ値を取得し、取得した第２チャレンジ値を用いて物理的複製困難関数を計算して前記第２メモリコントローラの固有値を取得する第２固有値計算部と、
前記第１メモリ装置側管理部により取得された第２参照値と、前記第２メモリコントローラの固有値とを用いて前記第２不揮発性メモリを認証する第２認証部と、
を備え、
前記第１アクセス制御部は、前記第２認証部により前記第２不揮発性メモリが認証された場合、前記第１不揮発性メモリからのデータの読み出し及び前記第１不揮発性メモリへのデータの書き込みを実行し、
前記第２アクセス制御部は、前記第２認証部により前記第２不揮発性メモリが認証された場合、前記第２不揮発性メモリからのデータの読み出し及び前記第２不揮発性メモリへのデータの書き込みを実行する半導体記憶装置。
【請求項３】
請求項１又は２に記載の半導体装置であって、
前記第１認証部は、
前記第１メモリコントローラの固有値からＭＡＣ値を生成するＭＡＣ値生成部と、
前記ＭＡＣ値生成部により生成されたＭＡＣ値と、前記第２メモリ装置側管理部により取得された第１参照値とを比較する比較部と、
を備える半導体記憶装置。
【請求項４】
請求項３に記載の半導体記憶装置であって、
前記第１認証部は、さらに、
前記第１メモリコントローラの固有値を分割して暗号鍵及び入力データを生成する分割部、
を備え、
前記ＭＡＣ値生成部は、前記分割部により生成された暗号鍵及び入力データを用いたハッシュ関数を計算して、前記ＭＡＣ値を生成する半導体記憶装置。
【請求項５】
請求項３又は４に記載の半導体記憶装置であって、
前記第１認証部は、前記第１メモリコントローラの固有値から第１参照値を生成し、
前記第２メモリ装置側管理部は、前記第１認証部により生成された第１参照値を前記第１パラメータとして前記第２不揮発性メモリに記憶する半導体記憶装置。
【請求項６】
請求項２に記載の半導体記憶装置であって、
前記第１不揮発性メモリは、前記第２メモリコントローラの固有値を前記第２パラメータとして予め記憶し、
前記第１認証部は、
前記第１固有値計算部により計算された第１メモリコントローラの固有値を入力データとし、前記第１不揮発性メモリに記憶された第２メモリコントローラの固有値を暗号鍵として用いたハッシュ関数を計算してＭＡＣ値を取得するＭＡＣ値生成部と、
前記ＭＡＣ値生成部により生成されたＭＡＣ値を前記第２メモリ装置側管理部により取得された第１参照値と比較する比較部と、
を備える半導体記憶装置。
【請求項７】
請求項６に記載の半導体記憶装置であって、
前記第２メモリ装置側管理部は、前記第２固有値計算部により計算された第２メモリコントローラの固有値を暗号鍵とし、前記第２不揮発性メモリから読み出した前記第１メモリコントローラの固有値を入力データとして用いたハッシュ関数により計算されたＭＡＣ値を、前記第１参照値として取得する半導体記憶装置。
【請求項８】
請求項６又は７に記載の半導体記憶装置であって、
前記第１メモリ装置側管理部は、前記第１固有値計算部により計算された第１メモリコントローラの固有値を用いて前記第１不揮発性メモリのアドレスを生成し、生成されたアドレスにより特定される前記第１不揮発性メモリの記憶領域に前記第２メモリコントローラの固有値を書き込む半導体記憶装置。
【請求項９】
請求項１ないし８のいずれかに記載の半導体記憶装置であって、
前記第１認証部は、前記ホスト装置により前記第１チャレンジ値の更新を指示された場合、前記第１不揮発性メモリに記憶された第１チャレンジ値を更新し、
前記第１固有値計算部は、更新された第１チャレンジ値を用いて新たな第１メモリコントローラの固有値を計算し、
前記第１認証部は、前記第１固有値計算部により計算された前記新たな第１メモリコントローラの固有値を用いて新たな第１パラメータを生成し、
前記第２メモリ装置側管理部は、前記第１認証部により生成された前記新たな第１パラメータを第２不揮発性メモリに記憶する半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト装置からのコマンドに応じてデータの読み出し又は書き込みを実行する半導体記憶装置に関する。
【背景技術】
【０００２】
半導体記憶装置は、メモリコントローラと、ＮＡＮＤフラッシュメモリなどの半導体メモリとを備える。メモリコントローラは、半導体メモリからのデータの読み出しの指示、あるいは半導体メモリへのデータの書き込みの指示をホスト装置から受け付けた場合、ホスト装置の指示に応じて半導体メモリに対するアクセスを制御する。
【０００３】
半導体メモリに記憶されているデータのセキュリティを確保するために、暗号鍵を用いるメモリコントローラがある。このメモリコントローラは、データの書き込みをホスト装置から指示された場合、予め設定された暗号鍵でデータを暗号化し、暗号化されたデータをメモリに書き込む。メモリコントローラは、データの読み出しをホスト装置から指示された場合、半導体メモリから読み出したデータを暗号鍵で復号し、復号されたデータをホストへ出力する。
【０００４】
近年、デバイスの個体ごとに異なる物理的性質を、セキュリティに利用する方法が検討されている。物理的複製困難関数（ＰＵＦ：Physical Unclonable Function）は、デバイスの個体ごとに異なる物理的性質を利用して、デバイスごとに固有の値を出力する関数である。
【０００５】
特許文献１には、ＰＵＦを利用して、不揮発性メモリに記憶されるデータの秘匿性を向上させる半導体装置が開示されている。
【０００６】
この半導体装置は、ＰＵＦを利用して、半導体装置に固有のユニークコード（固有値）を生成し、生成したユニークコードを外部の書き込み装置に出力する。書き込み装置は、生成されたユニークコードを暗号鍵として秘匿対象情報を暗号化すると共に、暗号化された秘匿対象情報を格納する記憶領域のアドレスを、生成されたユニークコードを利用して決定する。半導体装置は、書き込み装置の指示に応じて、書き込み装置により決定された記憶領域のアドレスに、暗号化された秘匿対象情報を書き込む。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−５３１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に係る半導体装置は、ユニークコードを外部の書き込み装置に出力する。第三者は、半導体装置を複製した場合、複製された半導体装置のユニークコードを取得することができる。第三者は、複製された半導体装置のユニークコードを用いて、複製された半導体装置に書き込むデータを暗号化したり、データの格納先のアドレスを決定したりすることができる。すなわち、特許文献１に係る半導体装置を悪意のある第三者が複製した場合、第３者が複製された半導体装置を利用することが可能であるという問題があった。
【０００９】
本発明の目的は、複製したとしてもその複製物を利用することが困難な半導体記憶装置を提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、請求項１記載の発明は、半導体記憶装置であって、第１不揮発性メモリと第１メモリコントローラとを備える第１メモリ装置と、第２不揮発性メモリと第２メモリコントローラとを備える第２メモリ装置と、を備え、前記第２メモリコントローラは、前記第１不揮発性メモリの認証に用いられる第１パラメータを前記第２不揮発性メモリから読み出して第１参照値を取得する第２メモリ装置側管理部、を備え、前記第１メモリコントローラは、前記第１不揮発性メモリに記憶された第１チャレンジ値を取得し、取得した第１チャレンジ値を用いて物理的複製困難関数を計算して前記第１メモリコントローラの固有値を取得する第１固有値計算部と、前記第２メモリ装置側管理部により取得された第１参照値と、前記第１メモリコントローラの固有値とを用いて前記第１不揮発性メモリを認証する第１認証部と、前記第１認証部により前記第１不揮発性メモリが認証された場合、ホスト装置からのコマンドに応じて、前記第１不揮発性メモリからのデータの読み出し又は前記第１不揮発性メモリへのデータの書き込みを実行する第１アクセス制御部と、を備え、前記第２メモリコントローラは、さらに、前記第１認証部により前記第１不揮発性メモリが認証された場合、前記ホスト装置からのコマンドに応じて、前記第２不揮発性メモリからのデータの読み出し又は前記第２不揮発性メモリへのデータの書き込みを実行する第２アクセス制御部、を備える。
【００１１】
請求項２記載の発明は、請求項１に記載の半導体記憶装置であって、前記第１メモリコントローラは、さらに、前記第２不揮発性メモリの認証に用いられる第２パラメータを前記第１不揮発性メモリから読み出して第２参照値を取得する第１メモリ装置側管理部、を備え、前記第２メモリコントローラは、さらに、前記第２不揮発性メモリに記憶された第２チャレンジ値を取得し、取得した第２チャレンジ値を用いて物理的複製困難関数を計算して前記第２メモリコントローラの固有値を取得する第２固有値計算部と、前記第１メモリ装置側管理部により取得された第２参照値と、前記第２メモリコントローラの固有値とを用いて前記第２不揮発性メモリを認証する第２認証部と、を備え、前記第１アクセス制御部は、前記第２認証部により前記第２不揮発性メモリが認証された場合、前記第１不揮発性メモリからのデータの読み出し及び前記第１不揮発性メモリへのデータの書き込みを実行し、前記第２アクセス制御部は、前記第２認証部により前記第２不揮発性メモリが認証された場合、前記第２不揮発性メモリからのデータの読み出し及び前記第２不揮発性メモリへのデータの書き込みを実行する。
【００１２】
請求項３記載の発明は、請求項１又は２に記載の半導体装置であって、前記第１認証部は、前記第１メモリコントローラの固有値からＭＡＣ値を生成するＭＡＣ値生成部と、前記ＭＡＣ値生成部により生成されたＭＡＣ値と、前記第２メモリ装置側管理部により取得された第１参照値とを比較する比較部と、を備える。
【００１３】
請求項４記載の発明は、請求項３に記載の半導体記憶装置であって、前記第１認証部は、さらに、前記第１メモリコントローラの固有値を分割して暗号鍵及び入力データを生成する分割部、を備え、前記ＭＡＣ値生成部は、前記分割部により生成された暗号鍵及び入力データを用いたハッシュ関数を計算して、前記ＭＡＣ値を生成する。
【００１４】
請求項５記載の発明は、請求項３又は４に記載の半導体記憶装置であって、前記第１認証部は、前記第１メモリコントローラの固有値から第１参照値を生成し、前記第２メモリ装置側管理部は、前記第１認証部により生成された第１参照値を前記第１パラメータとして前記第２不揮発性メモリに記憶する。
【００１５】
請求項６記載の発明は、請求項２に記載の半導体記憶装置であって、前記第１不揮発性メモリは、前記第２メモリコントローラの固有値を前記第２パラメータとして予め記憶し、前記第１認証部は、前記第１固有値計算部により計算された第１メモリコントローラの固有値を入力データとし、前記第１不揮発性メモリに記憶された第２メモリコントローラの固有値を暗号鍵として用いたハッシュ関数を計算してＭＡＣ値を取得するＭＡＣ値生成部と、前記ＭＡＣ値生成部により生成されたＭＡＣ値を前記第２メモリ装置側管理部により取得された第１参照値と比較する比較部と、を備える。
【００１６】
請求項７記載の発明は、請求項６に記載の半導体記憶装置であって、前記第２メモリ装置側管理部は、前記第２固有値計算部により計算された第２メモリコントローラの固有値を暗号鍵とし、前記第２不揮発性メモリから読み出した前記第１メモリコントローラの固有値を入力データとして用いたハッシュ関数により計算されたＭＡＣ値を、前記第１参照値として取得する。
【００１７】
請求項８記載の発明は、請求項６又は７に記載の半導体記憶装置であって、前記第１メモリ装置側管理部は、前記第１固有値計算部により計算された第１メモリコントローラの固有値を用いて前記第１不揮発性メモリのアドレスを生成し、生成されたアドレスにより特定される前記第１不揮発性メモリの記憶領域に前記第２メモリコントローラの固有値を書き込む。
【００１８】
請求項９記載の発明は、請求項１ないし８のいずれかに記載の半導体記憶装置であって、前記第１認証部は、前記ホスト装置により前記第１チャレンジ値の更新を指示された場合、前記第１不揮発性メモリに記憶された第１チャレンジ値を更新し、前記第１固有値計算部は、更新された第１チャレンジ値を用いて新たな第１メモリコントローラの固有値を計算し、前記第１認証部は、前記第１固有値計算部により計算された前記新たな第１メモリコントローラの固有値を用いて新たな第１パラメータを生成し、前記第２メモリ装置側管理部は、前記第１認証部により生成された前記新たな第１パラメータを第２不揮発性メモリに記憶する。
【発明の効果】
【００１９】
本発明によれば、第１メモリコントローラは、物理的複製困難関数を計算することにより第１メモリコントローラの固有値を計算し、第２メモリコントローラにおいて第２メモリ装置側管理部により取得された第１参照値を取得する。第１メモリコントローラは、計算した固有値と第１参照値とを用いて、第１不揮発性メモリを認証する。複製された半導体記憶装置は、第１メモリコントローラの固有値を計算することができないため、第１不揮発性メモリの認証を成立させることができない。従って、複製された半導体記憶装置の使用を困難とすることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施の形態に係るメモリシステムの構成を示す機能ブロック図である。
【図２】図１に示すメモリ装置２０Ａの構成を示す機能ブロック図である。
【図３】図１に示すメモリ装置２０Ｂの構成を示す機能ブロック図である。
【図４】図１に示すメモリシステムにおいて実行される初期化処理のシーケンス図である。
【図５】図４に示すＭＡＣ値生成処理のフローチャートである。
【図６】図１に示すメモリシステムにおいて実行される認証処理のシーケンス図である。
【図７】図６に示すメモリ認証処理のフローチャートである。
【図８】図１に示すメモリシステムにおいて実行される再初期化処理のシーケンス図である。
【図９】本発明の第２の実施の形態に係るメモリシステムにおけるメモリ装置２０Ａの構成を示す機能ブロック図である。
【図１０】本発明の第２の実施の形態に係るメモリシステムにおけるメモリ装置２０Ｂの構成を示す機能ブロック図である。
【図１１】本発明の第２の実施の形態に係るメモリシステムにおいて実行される初期化処理のシーケンス図である。
【図１２】本発明の第２の実施の形態に係るメモリシステムにおいて実行される認証処理のシーケンス図である。
【図１３】図１２に示す参照値生成処理のフローチャートである。
【図１４】図１２に示すメモリ認証処理のフローチャートである。
【図１５】本発明の第２の実施の形態に係るメモリシステムにおいて実行される再初期化処理のシーケンス図である。
【図１６】図３に示すメモリ装置２０Ａの変形例の構成を示す機能ブロック図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２２】
［第１の実施の形態］
｛１．メモリシステムの構成｝
｛１．１．全体構成｝
図１は、本発明の第１の実施の形態に係るメモリシステム１００の構成を示す機能ブロック図である。図１に示すように、メモリシステム１００は、ホスト装置１０と、半導体記憶装置２０とを備える。半導体記憶装置２０は、メモリ装置２０Ａ，２０Ｂを備える。メモリ装置２０Ａは、メモリコントローラ３Ａと、不揮発性メモリ４Ａとを備える。メモリ装置２０Ｂは、メモリコントローラ３Ｂと、不揮発性メモリ４Ｂとを備える。
【００２３】
不揮発性メモリ４Ａ及び４Ｂは、例えば、ＮＡＮＤフラッシュメモリであり、ホスト装置１０により使用されるデータ（ユーザデータ）を記憶する。メモリコントローラ３Ａは、ホスト装置１０から送信される指示データ１１Ａの内容に基づいて、不揮発性メモリ４Ａに対するアクセスを制御する。同様に、メモリコントローラ３Ｂは、ホスト装置１０から送信される指示データ１１Ｂの内容に基づいて、不揮発性メモリ４Ｂに対するアクセスを制御する。
【００２４】
ただし、メモリコントローラ３Ａ及び３Ｂは、不揮発性メモリ４Ａ及び４Ｂに対するユーザデータの読み出し又は書き込みを実行する前に、不揮発性メモリ４Ａ及び４Ｂをそれぞれ認証する。不揮発性メモリ４Ａ及び４Ｂの両者の認証が成立した場合、メモリコントローラ３Ａ及び３Ｂは、ユーザデータの読み出し及び書き込みを実行することができる。
【００２５】
認証に関するデータとして、不揮発性メモリ４Ａは、チャレンジ値７１Ａ及び参照値７２Ｂを格納し、不揮発性メモリ４Ｂは、チャレンジ値７１Ｂ及び参照値７２Ａを格納する。チャレンジ値７１Ａ及び参照値７２Ａは、不揮発性メモリ４Ａの認証に用いられる。チャレンジ値７１Ｂ及び参照値７２Ｂは、不揮発性メモリ４Ｂの認証に用いられる。参照値７２Ａは、メモリコントローラ３Ａで生成されるＭＡＣ（Message Authentication Code）値であり、参照値７２Ｂは、メモリコントローラ３Ｂで生成されるＭＡＣ値である。ＭＡＣ値の生成の詳細については、後述する。
【００２６】
メモリコントローラ３Ａは、チャレンジ値７１Ａを入力とした物理的複製困難関数を用いてレスポンス値を生成し、生成したレスポンス値からＭＡＣ値を計算する。メモリコントローラ３Ａは、計算されたＭＡＣ値を不揮発性メモリ４Ｂに格納された参照値７２Ａと比較して、不揮発性メモリ４Ａを認証する。
【００２７】
同様に、メモリコントローラ３Ｂは、チャレンジ値７１Ｂを入力とした物理的複製困難関数を用いてレスポンス値を生成し、生成したレスポンス値からＭＡＣ値を計算する。メモリコントローラ３Ｂは、計算されたＭＡＣ値を不揮発性メモリ４Ａに格納された参照値７２Ｂと比較して、不揮発性メモリ４Ｂを認証する。
【００２８】
従って、メモリ装置２０Ａ，２０Ｂの組み合わせでなければ、不揮発性メモリ４Ａ，４Ｂの両者の認証を成立させることができない。従って、半導体記憶装置２０の複製を困難とすることができる。
【００２９】
｛１．２．ホスト装置１０の構成｝
ホスト装置１０は、半導体記憶装置２０の工場出荷前では、テスタなどである。ホスト装置１０は、半導体記憶装置２０の工場出荷後では、ユーザが使用するＰＣ（Personal Computer）、スマートフォン、タブレット端末などである。
【００３０】
ホスト装置１０は、例えば、バス（図示省略）を介して、半導体記憶装置２０と電気的に接続されている。ホスト装置１０は、コマンド制御部１１と、データ取得部１２と、バッファ１３Ａ，１３Ｂとを備える。
【００３１】
コマンド制御部１１は、メモリコントローラ３Ａが実行すべき処理を示す指示データ１１Ａをメモリコントローラ３Ａに送信する。コマンド制御部１１は、メモリコントローラ３Ｂが実行すべき処理を示す指示データ１１Ｂをメモリコントローラ３Ｂに送信する。例えば、コマンド制御部１１は、ホスト装置１０の図示しないＣＰＵ（Central Processing Unit）からユーザデータの読み出し指示を受け付けた場合、読み出し対象のユーザデータがメモリ装置２０Ａ及び２０Ｂのどちらに記憶されているかを特定し、特定したメモリ装置に指示データを送信する。
【００３２】
データ取得部１２は、メモリコントローラ３Ａ，３Ｂから送信される応答データ１２Ａ，１２Ｂを受信し、受信した応答データ１２Ａ，１２Ｂをバッファ１３Ａ，１３Ｂに一時的に保存する。データ取得部１２は、バッファ１３Ａ又は１３Ｂに保存されたデータをホスト装置１０のメモリ等へ出力する。
【００３３】
バッファ１３Ａは、メモリコントローラ３Ａから送信された応答データ１２Ａを一時的に格納する。バッファ１３Ｂは、メモリコントローラ３Ｂから送信された応答データ１２Ｂを一時的に格納する。
【００３４】
｛１．３．メモリ装置２０Ａの構成｝
（不揮発性メモリ４Ａ）
図２は、メモリ装置２０Ａの構成を示す機能ブロック図である。図２に示すように、不揮発性メモリ４Ａの記憶領域は、認証コード領域４１Ａと、ユーザ領域４２Ａとに区分される。
【００３５】
認証コード領域４１Ａは、不揮発性メモリ４Ａ，４Ｂの認証に用いられるデータを記憶する。具体的には、認証コード領域４１Ａには、チャレンジ値７１Ａ及び参照値７２Ｂが記憶される。チャレンジ値７１Ａは、不揮発性メモリ４Ａの認証に用いられる。参照値７２Ｂは、メモリコントローラ３Ｂにより生成されるＭＡＣ値であり、不揮発性メモリ４Ｂの認証に用いられるパラメータである。参照値７２Ｂは、メモリコントローラ３ＢのＰＵＦ回路３５Ｂ（図３参照）により計算されたレスポンス値７３Ｂから生成される。チャレンジ値７１Ａ及び参照値７２Ｂは、暗号化されることなく認証コード領域４１Ａに記憶される。
【００３６】
ユーザ領域４２Ａには、ユーザデータ４３Ａ，４３Ａ，・・・が記憶される。ユーザデータ４３Ａは、ホスト装置１０により処理されるデータであり、例えば、動画像データ、音楽データなどのコンテンツデータである。
【００３７】
（メモリコントローラ３Ａ）
メモリコントローラ３Ａは、ホスト装置１０と不揮発性メモリ４Ａとの間で、読み出し用のコマンドと、不揮発性メモリ４Ａから読み出されたデータとを中継する。また、メモリコントローラ３Ａは、ホスト装置１０と不揮発性メモリ４Ａとの間で、書き込みコマンドと書き込みデータとを中継する。
【００３８】
メモリコントローラ３Ａは、ホストＩ／Ｆ３１Ａと、メモリＩ／Ｆ３２Ａと、コマンドデコーダ３３Ａと、アクセス制御部３４Ａと、ＰＵＦ回路３５Ａと、認証部３６Ａと、認証コード管理部３７Ａとを備える。
【００３９】
ホストＩ／Ｆ３１Ａは、ホスト装置１０とのインタフェース部である。ホストＩ／Ｆ３１Ａは、バスを介してホスト装置１０から指示データ１１Ａを受信する。指示データ１１Ａが書き込み指示である場合、指示データ１１Ａは、書き込みコマンドと、書き込み対象のユーザデータ４３Ａとを含む。指示データ１１Ａに含まれるユーザデータ４３Ａは、ユーザ領域４２Ａに書き込まれる。指示データ１１Ａが読み出し指示である場合、指示データ１１Ａは、読み出しコマンドを含む。また、ホスト装置１０がメモリコントローラ３Ａに認証に関する指示を出力する場合、指示データ１１Ａは、認証に関するコマンドを含む。認証に関するコマンドには、複数の種類が存在する。
【００４０】
また、ホストＩ／Ｆ３１Ａは、バスを介して、応答データ１２Ａをホスト装置１０に送信する。応答データ１２Ａは、例えば、不揮発性メモリ４Ａから読み出されたユーザデータ４３Ａを含む。
【００４１】
メモリＩ／Ｆ３２Ａは、不揮発性メモリ４Ａとのインタフェース部である。メモリＩ／Ｆ３２Ａは、アクセス制御部３４Ａから出力された読み出しコマンド２１Ａを不揮発性メモリ４Ａに送信する。メモリＩ／Ｆ３２Ａは、読み出しコマンド２１Ａの応答として、ユーザ領域４２Ａから読み出されたユーザデータ４３Ａを受信する。
【００４２】
メモリＩ／Ｆ３２Ａは、アクセス制御部３４Ａから出力された書き込みコマンド２２Ａ及びユーザデータ４３Ａを、不揮発性メモリ４Ａに送信する。ユーザデータ４３Ａは、書き込みコマンド２２Ａに基づいてユーザ領域４２Ａに記憶される。
【００４３】
コマンドデコーダ３３Ａは、ホストＩ／Ｆ３１Ａから指示データ１１Ａを取得し、取得した指示データ１１Ａに含まれるコマンドを抽出して解析する。解析の結果、メモリコントローラ３Ａが実行すべき処理が特定される。
【００４４】
アクセス制御部３４Ａは、メモリコントローラ３Ａの各機能部を制御する。また、アクセス制御部３４Ａは、不揮発性メモリ４Ａの認証が成立した場合、ユーザ領域４２Ａに対する読み出しアクセス及び書き込みアクセスを実行する。認証が成立したか否かは、後述する比較結果信号７７Ａに基づいて判断される。
【００４５】
ＰＵＦ回路３５Ａは、物理的複製困難関数が実装された回路であり、例えば、複数の論理回路により構成される。ＰＵＦ回路３５Ａは、認証コード領域４１Ａに記憶されたチャレンジ値７１Ａを用いて物理的複製困難関数を計算して、メモリコントローラ３Ａの固有値（レスポンス値７３Ａ）を取得する。
【００４６】
ＰＵＦ回路３５Ａは、アービターＰＵＦ又はグリッチＰＵＦのいずれかである。アービターＰＵＦは、チャレンジ値７１Ａを処理する際に発生する遅延のばらつきを利用して、物理的複製困難関数を計算する。グリッチＰＵＦは、チャレンジ値７１Ａをそれぞれ処理する複数のゲート回路の遅延差を利用して、物理的複製困難関数を計算する。後述するＰＵＦ回路３５Ｂ（図３参照）も同様である。
【００４７】
認証部３６Ａは、ＰＵＦ回路３５Ａにより取得されたレスポンス値７３Ａと、ホスト装置１０を介してメモリ装置２０Ｂから取得した参照値７２Ａとを用いて、不揮発性メモリ４Ａを認証する。認証部３６Ａは、分割部３６１Ａと、ＨＭＡＣ回路３６２Ａと、比較器３６３Ａとを備える。
【００４８】
分割部３６１Ａは、ＰＵＦ回路３５Ａにより取得されたレスポンス値７３Ａを入力データ７４Ａと暗号鍵７５Ａとに分割する。
【００４９】
ＨＭＡＣ回路３６２Ａは、ＨＭＡＣアルゴリズムを実行する回路である。ＨＭＡＣ回路３６２Ａは、実装されたハッシュ関数と分割部３６１Ａにより生成された暗号鍵７５Ａとの組み合わせであるＨＭＡＣアルゴリズムを実行することにより、入力データ７４ＡからＭＡＣ値７６Ａを生成する。
【００５０】
比較器３６３Ａは、ＨＭＡＣ回路３６２Ａにより生成されたＭＡＣ値７６Ａを、コマンドデコーダ３３Ａから入力した参照値７２Ａ（不揮発性メモリ４Ｂに格納された参照値７２Ａ）と比較し、その比較結果を示す比較結果信号７７Ａを生成する。比較結果信号７７Ａは、不揮発性メモリ４Ａの認証が成立したか否かを示す信号である。
【００５１】
認証コード管理部３７Ａは、認証コード領域４１Ａに対する読み出しアクセス及び書き込みアクセスを制御する。認証コード領域４１Ａに対するアクセスは、指示データ１１Ａに含まれるコマンドとして、認証に関するコマンドが特定された場合に実行される。
【００５２】
｛１．４．メモリ装置２０Ｂの構成｝
（不揮発性メモリ４Ｂ）
図３は、メモリ装置２０Ｂの構成を示す機能ブロック図である。図３に示すように、不揮発性メモリ４Ｂの記憶領域は、認証コード領域４１Ｂと、ユーザ領域４２Ｂとに区分される。ユーザ領域４２Ｂには、ユーザデータ４３Ｂ，４３Ｂ，・・・が記憶される。
【００５３】
認証コード領域４１Ｂには、チャレンジ値７１Ｂ及び参照値７２Ａが記憶される。チャレンジ値７１Ｂは、不揮発性メモリ４Ｂの認証に用いられる。参照値７２Ａは、メモリコントローラ３Ａにより生成されたＭＡＣ値であり、不揮発性メモリ４Ａの認証に用いられるパラメータである。チャレンジ値７１Ｂ及び参照値７２Ａは、暗号化されることなく認証コード領域４１Ｂに記憶される。
【００５４】
（メモリコントローラ３Ｂ）
メモリコントローラ３Ｂは、ホスト装置１０と不揮発性メモリ４Ｂとの間で、読み出し用のコマンドと、不揮発性メモリ４Ｂから読み出されたデータとを中継する。また、メモリコントローラ３Ｂは、ホスト装置１０と不揮発性メモリ４Ｂとの間で、書き込みコマンドと書き込みデータとを中継する。
【００５５】
メモリコントローラ３Ｂは、ホストＩ／Ｆ３１Ｂと、メモリＩ／Ｆ３２Ｂと、コマンドデコーダ３３Ｂと、アクセス制御部３４Ｂと、ＰＵＦ回路３５Ｂと、認証部３６Ｂと、認証コード管理部３７Ｂとを備える。メモリコントローラ３Ｂの各機能部は、メモリコントローラ３Ａの各機能部にそれぞれ対応する。このため、メモリコントローラ３Ｂの各機能部の説明を一部省略する。
【００５６】
ホストＩ／Ｆ３１Ｂは、ホスト装置１０とのインタフェース部であり、バスを介してホスト装置１０から指示データ１１Ｂを受信する。また、ホストＩ／Ｆ３１Ｂは、バスを介して、応答データ１２Ｂをホスト装置１０に送信する。
【００５７】
メモリＩ／Ｆ３２Ｂは、不揮発性メモリ４Ｂとのインタフェース部である。メモリＩ／Ｆ３２Ｂは、読み出しコマンド２１Ｂを不揮発性メモリ４Ｂに送信し、ユーザ領域４２Ｂから読み出されたユーザデータ４３Ｂを受信する。メモリＩ／Ｆ３２Ｂは、書き込みコマンド２２Ｂ及びユーザデータ４３Ｂを、不揮発性メモリ４Ｂに送信する。
【００５８】
コマンドデコーダ３３Ｂは、指示データ１１Ｂに含まれるコマンドを抽出し、メモリコントローラ３Ｂが実行すべき処理を特定する。アクセス制御部３４Ｂは、メモリコントローラ３Ｂの各機能部を制御する。また、アクセス制御部３４Ｂは、不揮発性メモリ４Ｂの認証が成立した場合、ユーザ領域４２Ｂに対する読み出しアクセス及び書き込みアクセスを実行する。
【００５９】
ＰＵＦ回路３５Ｂは、物理的複製困難関数が実装された回路である。ＰＵＦ回路３５Ｂは、認証コード領域４１Ｂに記憶されたチャレンジ値７１Ｂを入力とした物理的複製困難関数を計算して、メモリコントローラ３Ｂの固有値（レスポンス値７３Ｂ）を取得する。ＰＵＦ回路３５Ｂは、ＰＵＦ回路３５Ａと同じ回路構成を有してもよいし、異なる回路構成を有していてもよい。
【００６０】
認証部３６Ｂは、ＰＵＦ回路３５Ｂにより取得されたレスポンス値７３Ｂと、ホスト装置１０を介してメモリ装置２０Ａから取得した参照値７２Ｂとを用いて、不揮発性メモリ４Ｂを認証する。認証部３６Ｂは、分割部３６１Ｂと、ＨＭＡＣ回路３６２Ｂと、比較器３６３Ｂとを備える。
【００６１】
分割部３６１Ｂは、ＰＵＦ回路３５Ｂにより生成されたレスポンス値７３Ｂを入力データ７４Ｂと暗号鍵７５Ｂとに分割する。ＨＭＡＣ回路３６２Ｂは、実装されたハッシュ関数と分割部３６１Ｂにより生成された暗号鍵７５Ｂとの組み合わせであるＨＭＡＣアルゴリズムを実行することにより、入力データ７４ＢからＭＡＣ値７６Ｂを生成する。比較器３６３Ｂは、ＨＭＡＣ回路３６２Ｂにより生成されたＭＡＣ値７６Ｂを、コマンドデコーダ３３Ｂから入力した参照値７２Ｂ（不揮発性メモリ４Ａに格納された参照値７２Ｂ）と比較し、その比較結果を示す比較結果信号７７Ｂを生成する。
【００６２】
認証コード管理部３７Ｂは、認証コード領域４１Ｂに対する読み出しアクセス及び書き込みアクセスを制御する。
【００６３】
｛２．メモリシステム１００の動作｝
以下、メモリシステム１００の動作について詳しく説明する。具体的には、メモリシステム１００において実行される初期化処理、認証処理、再初期化処理についてそれぞれ説明する。
【００６４】
初期化処理は、認証コード領域４１Ａにチャレンジ値７１Ａ及び参照値７２Ｂを設定し、認証コード領域４１Ｂにチャレンジ値７１Ｂ及び参照値７２Ａを設定する処理である。認証処理は、メモリコントローラ３Ａが不揮発性メモリ４Ａを認証し、メモリコントローラ３Ｂが不揮発性メモリ４Ｂを認証する処理である。再初期化処理は、認証コード領域４１Ａに設定されたチャレンジ値７１Ａ及び参照値７２Ｂと、認証コード領域４１Ｂに設定されたチャレンジ値７１Ｂ及び参照値７２Ａとをそれぞれ更新する処理である。
【００６５】
以下、上記３つの処理について詳しく説明する。
【００６６】
｛２．１．初期化処理｝
図４は、メモリシステム１００において実行される初期化処理の示すシーケンス図である。初期化処理は、半導体記憶装置２０の工場出荷前に行われる。初期化処理では、テスタがホスト装置１０として、半導体記憶装置２０に接続される。
【００６７】
図４に示す処理が開始される時点で、チャレンジ値７１Ａ及び参照値７２Ｂは、認証コード領域４１Ａに設定されていない。チャレンジ値７１Ｂ及び参照値７２Ａは、認証コード領域４１Ｂに設定されていない。
【００６８】
（チャレンジ値及び参照値（ＭＡＣ値）の生成）
ホスト装置１０は、初期化コマンド５１とチャレンジ値７１Ａとを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ１０１）。ホスト装置１０は、初期化コマンド５１とチャレンジ値７１Ｂとを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ１０２）。初期化コマンド５１は、チャレンジ値の設定を指示するコマンドである。
【００６９】
最初に、初期化コマンド５１とチャレンジ値７１Ａとを含む指示データ１１Ａを受信したメモリコントローラ３Ａの動作について説明する。
【００７０】
メモリコントローラ３Ａは、指示データ１１Ａに含まれる初期化コマンド５１に基づいて、ステップＳ１０３〜Ｓ１０５を実行する。具体的には、メモリコントローラ３Ａにおいて、コマンドデコーダ３３Ａは、ホストＩ／Ｆ３１Ａを介して指示データ１１Ａを入力する。コマンドデコーダ３３Ａは、初期化コマンド５１及びチャレンジ値７１Ａを指示データ１１Ａから抽出し、抽出した初期化コマンド５１を解析して実行すべき処理を特定する。
【００７１】
コマンドデコーダ３３Ａは、抽出されたチャレンジ値７１Ａを認証コード管理部３７Ａに出力する。認証コード管理部３７Ａは、コマンドデコーダ３３Ａから出力されたチャレンジ値７１Ａを認証コード領域４１Ａの所定アドレスに書き込む（ステップＳ１０３）。メモリコントローラ３Ａは、チャレンジ値７１ＡからＭＡＣ値７６Ａを生成するために、ＭＡＣ値生成処理を実行する（ステップＳ１０４）。
【００７２】
図５は、ＭＡＣ値生成処理（ステップＳ１０４及びＳ１０７）のフローチャートである。図５に示すように、ＰＵＦ回路３５Ａは、チャレンジ値７１Ａを認証コード管理部３７Ａから取得する（ステップＳ４１）。ＰＵＦ回路３５Ａは、チャレンジ値７１Ａを入力とした物理的複製困難関数を計算して、レスポンス値７３Ａを生成する（ステップＳ４２）。レスポンス値７３Ａは、ＰＵＦ回路３５Ａが実装されたメモリコントローラ３Ａの固有値である。
【００７３】
分割部３６１Ａは、ＰＵＦ回路３５Ａにより生成されたレスポンス値７３Ａを分割して、入力データ７４Ａ及び暗号鍵７５Ａを取得する（ステップＳ４３）。例えば、レスポンス値７３Ａが２５６ビットのデータである場合、分割部３６１Ａは、レスポンス値７３Ａのうち先頭の１ビット目から１２８ビット目までのデータを暗号鍵７５Ａとして抽出する。入力データ７４Ａは、レスポンス値７３Ａのうち１２９ビット目から末尾の２５６ビット目までのデータである。
【００７４】
ＨＭＡＣ回路３６２Ａは、分割部３６１Ａにより生成された入力データ７４Ａ及び暗号鍵７５Ａを用いて、ＭＡＣ値７６Ａを生成する（ステップＳ４４）。ＨＭＡＣ回路３６２Ａは、暗号鍵７５Ａと実装されたハッシュ関数との組み合わせにより実現されるＨＭＡＣアルゴリズムを実行することにより、入力データ７４ＡからＭＡＣ値７６Ａを生成する。これにより、ＭＡＣ値生成処理（ステップＳ１０４）が終了する。
【００７５】
再び、図４を参照する。認証コード管理部３７Ａは、初期化コマンド５１に対する応答として、生成されたＭＡＣ値７６Ａをホスト装置１０に送信する（ステップＳ１０５）。データ取得部１２は、メモリコントローラ３Ａから送信されたＭＡＣ値７６Ａを、参照値７２Ａとしてバッファ１３Ａに一時的に記憶する。
【００７６】
次に、初期化コマンド５１とチャレンジ値７１Ｂとを含む指示データ１１Ｂを受信したメモリコントローラ３Ｂの動作を説明する。以下、上述のメモリコントローラ３Ａの動作と共通する部分の説明を、一部省略する。
【００７７】
コマンドデコーダ３３Ｂは、初期化コマンド５１及びチャレンジ値７１Ｂを指示データ１１Ｂから抽出する。メモリコントローラ３Ｂは、抽出された初期化コマンド５１に基づいて、ステップＳ１０６〜Ｓ１０８を実行する。
【００７８】
認証コード管理部３７Ｂは、抽出されたチャレンジ値７１Ｂを認証コード領域４１Ｂの所定のアドレスに格納する（ステップＳ１０６）。メモリコントローラ３Ｂは、図５に示すＭＡＣ値生成処理を実行して、チャレンジ値７１ＢからＭＡＣ値７６Ｂを生成する（ステップＳ１０７）。
【００７９】
具体的には、図５に示すように、ＰＵＦ回路３５Ｂは、チャレンジ値７１Ｂを認証コード管理部３７Ａから取得する（ステップＳ４１）。ＰＵＦ回路３５Ｂは、取得したチャレンジ値７１Ｂを入力とした物理的複製困難関数を計算してレスポンス値７３Ｂを生成する（ステップＳ４２）。レスポンス値７３Ｂは、ＰＵＦ回路３５Ｂが実装されたメモリコントローラ３Ｂの固有値である。
【００８０】
分割部３６１Ｂは、レスポンス値７３Ｂを分割して入力データ７４Ｂ及び暗号鍵７５Ｂを生成する（ステップＳ４３）。ＨＭＡＣ回路３６２Ｂは、暗号鍵７５Ｂと実装されたハッシュ関数との組み合わせであるＨＭＡＣアルゴリズムを実行して、入力データ７４ＢからＭＡＣ値７６Ｂを生成する（ステップＳ４４）。
【００８１】
図４に示すように、認証コード管理部３７Ｂは、初期化コマンド５１に対する応答として、生成されたＭＡＣ値７６Ｂをホスト装置１０に送信する（ステップＳ１０８）。データ取得部１２は、メモリコントローラ３Ｂから送信されたＭＡＣ値７６Ｂを、参照値７２Ｂとしてバッファ１３Ｂに一時的に記憶する。
【００８２】
後述するように、ＰＵＦ回路３５Ａ及び３５Ｂが同じ回路構成を有していても、レスポンス値７３Ａ及び７３Ｂは、互いに異なる値を有する。従って、ＨＭＡＣ回路３６２Ａ及び３６２Ｂが同じ回路構成を有していたとしても、参照値７２Ａ（ＭＡＣ値７６Ａ）は、参照値７２Ｂ（ＭＡＣ値７６Ｂ）と同じ値にならない。
【００８３】
（参照値の格納）
ホスト装置１０は、参照値７２Ａ，７２Ｂをバッファ１３Ａ，１３Ｂに格納した後に、参照値格納コマンド５２と参照値７２Ｂとを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ１０９）。ホスト装置１０は、参照値格納コマンド５２と参照値７２Ａとを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ１１０）。参照値格納コマンド５２は、このコマンドとともに送信された参照値を認証コード領域に格納することを指示するコマンドである。
【００８４】
メモリコントローラ３Ａは、受信した指示データ１１Ａに含まれる参照値７２Ｂを不揮発性メモリ４Ａに格納する（ステップＳ１１１）。具体的には、コマンドデコーダ３３Ａは、ステップＳ１０９で送信された指示データ１１Ａから、参照値格納コマンド５２及び参照値７２Ｂを抽出する。コマンドデコーダ３３Ａは、抽出された参照値格納コマンド５２に基づいて、抽出された参照値７２Ｂを認証コード管理部３７Ａに出力する。認証コード管理部３７Ａは、コマンドデコーダ３３Ａから入力した参照値７２Ｂを認証コード領域４１Ａの予め設定されたアドレスに格納する。その後、認証コード管理部３７Ａは、参照値格納コマンド５２の応答として、参照値７２Ｂの格納が完了したことをホスト装置１０に通知する（ステップＳ１１２）。
【００８５】
同様に、メモリコントローラ３Ｂにおいて、認証コード管理部３７Ｂは、指示データ１１Ｂに含まれる参照値７２Ａを認証コード領域４１Ｂに格納する（ステップＳ１１３）。その後、認証コード管理部３７Ｂは、参照値７２Ａの格納が完了したことをホスト装置１０に通知する（ステップＳ１１４）。
【００８６】
ホスト装置１０は、メモリコントローラ３Ａ，３Ｂから参照値７２Ａ，７２Ｂの格納が完了したことを通知された場合、初期化処理が終了したと判断する。初期化処理の終了後、半導体記憶装置２０は、工場から出荷される。
【００８７】
｛２．２．認証処理｝
図６は、メモリシステム１００において実行される認証処理のシーケンス図である。認証処理において、ホスト装置１０は、半導体記憶装置２０を購入したユーザのＰＣ、スマートフォン、タブレット端末などである。
【００８８】
ホスト装置１０は、電源がオンされた時、あるいは、半導体記憶装置２０がホスト装置１０に接続された時に、メモリコントローラ３Ａ，３Ｂに対して不揮発性メモリ４Ａ，４Ｂの認証を指示する。あるいは、ホスト装置１０は、一定の時間間隔で、メモリコントローラ３Ａ，３Ｂに対して不揮発性メモリ４Ａ，４Ｂの認証を指示する。
【００８９】
以下、ホスト装置１０に接続された半導体記憶装置２０の電源がオンされた場合を例に説明する。半導体記憶装置２０の電源がオンされた直後は、不揮発性メモリ４Ａ，４Ｂの両者の認証は成立していない。従って、メモリコントローラ３Ａ，３Ｂは、ホスト装置１０の指示に応じて、ユーザ領域４２Ａ，４２Ｂからのユーザデータ４３Ａ，４３Ｂの読み出し、ユーザ領域４２Ａ，４２Ｂへのユーザデータ４３Ａ，４３Ｂの書き込みを実行しない。
【００９０】
｛２．２．１．不揮発性メモリ４Ｂの認証｝
最初に、不揮発性メモリ４Ｂの認証が実行される（ステップＳ２０１〜Ｓ２０６）。ホスト装置１０は、参照値取得コマンド５３Ａを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ２０１）。参照値取得コマンド５３Ａは、不揮発性メモリ４Ａに格納された参照値７２Ｂの読み出しを指示するコマンドである。
【００９１】
メモリコントローラ３Ａは、指示データ１１Ａに含まれる参照値取得コマンド５３Ａに基づいて、認証コード領域４１Ａから参照値７２Ｂを読み出す（ステップＳ２０２）。具体的には、コマンドデコーダ３３Ａが、受信した指示データ１１Ａを解析して、参照値取得コマンド５３Ａを抽出する。コマンドデコーダ３３Ａは、抽出した参照値取得コマンド５３Ａに基づいて、認証コード管理部３７Ａに参照値７２Ｂの読み出しを指示する。認証コード管理部３７Ａは、コマンドデコーダ３３Ａの指示に応じて、認証コード領域４１Ａから参照値７２Ｂを読み出す。
【００９２】
認証コード管理部３７Ａは、参照値取得コマンド５３Ａの応答として、認証コード領域４１Ａから読み出した参照値７２Ｂをそのままホスト装置１０に送信する（ステップＳ２０３）。データ取得部１２は、メモリコントローラ３Ａから受信した参照値７２Ｂをバッファ１３Ａに格納する。このようにして、ホスト装置１０は、不揮発性メモリ４Ｂの認証に用いられる参照値７２Ｂをメモリ装置２０Ａから取得する。
【００９３】
コマンド制御部１１は、認証開始コマンド５４と、メモリ装置２０Ａから取得した参照値７２Ｂとを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ２０４）。認証開始コマンド５４は、メモリコントローラに対して不揮発性メモリの認証の実行を指示するコマンドである。
【００９４】
コマンドデコーダ３３Ｂは、ホスト装置１０から送信された指示データ１１Ｂを解析して、指示データ１１Ｂから認証開始コマンド５４及び参照値７２Ｂを抽出する。メモリコントローラ３Ｂは、抽出した認証開始コマンド５４に基づいて、不揮発性メモリ４Ｂを認証する（ステップＳ２０５）。
【００９５】
図７は、メモリ認証処理（ステップＳ２０５）のフローチャートである。後述するように、図７に示すメモリ認証処理は、ステップＳ２０５だけでなく、後述するステップＳ２１１でも実行される。図７に示す認証処理において、ステップＳ５２〜Ｓ５４の処理は、図５に示すＭＡＣ値生成処理のステップＳ４２〜Ｓ４４の処理と同じである。このため、ステップＳ５２〜Ｓ５４の詳細な説明を省略する。
【００９６】
メモリコントローラ３Ｂにおいて、ＰＵＦ回路３５Ｂは、認証コード領域４１Ｂに記憶されたチャレンジ値７１Ｂを取得する（ステップＳ５１）。具体的には、認証コード管理部３７Ｂが、認証コード領域４１Ｂからチャレンジ値７１Ｂを読み出し、読み出したチャレンジ値７１ＢをＰＵＦ回路３５Ｂに供給する。
【００９７】
ＰＵＦ回路３５Ｂは、チャレンジ値７１Ｂを入力とした物理的複製困難関数を計算して、レスポンス値７３Ｂを生成する（ステップＳ５２）。分割部３６１Ｂは、生成されたレスポンス値７３Ｂを分割して、入力データ７４Ｂ及び暗号鍵７５Ｂを生成する（ステップＳ５３）。ＨＭＡＣ回路３６２Ｂは、暗号鍵７５Ｂとハッシュ関数との組み合わせであるＨＭＡＣアルゴリズムを実行して、入力データ７４ＢからＭＡＣ値７６Ｂを生成する（ステップＳ５４）。
【００９８】
ＨＭＡＣ回路３６２Ｂは、ステップＳ５４で生成したＭＡＣ値７６Ｂを比較器３６３Ｂへ出力する。コマンドデコーダ３３Ｂは、認証開始コマンド５４に応じて、指示データ１１Ｂから抽出した参照値７２Ｂを比較器３６３Ｂへ出力する。比較器３６３Ｂは、ＨＭＡＣ回路３６２Ｂによって計算されたＭＡＣ値７６Ｂを、コマンドデコーダ３３Ｂから取得した参照値７２Ｂと比較する（ステップＳ５５）。
【００９９】
ＭＡＣ値７６Ｂが参照値７２Ｂと一致する場合（ステップＳ５５においてＹｅｓ）、比較器３６３Ｂは、不揮発性メモリ４Ｂの正当性が確認され、不揮発性メモリ４Ｂの認証が成立したと判断する（ステップＳ５６）。比較器３６３Ｂは、認証成立を示す比較結果信号７７Ｂをアクセス制御部３４Ｂに出力する。
【０１００】
一方、ステップＳ５５において、ＭＡＣ値７６Ｂが参照値７２Ｂと一致しない場合（ステップＳ５５においてＮｏ）、比較器３６３Ｂは、不揮発性メモリ４Ｂの認証が成立しなかったと判断する（ステップＳ５７）。比較器３６３Ｂは、認証不成立を示す比較結果信号７７Ｂをアクセス制御部３４Ｂに出力する。
【０１０１】
図６に示すように、メモリ認証処理（ステップＳ２０５）の後に、アクセス制御部３４Ｂは、比較結果信号７７Ｂの示す内容に応じた処理を実行する。具体的には、アクセス制御部３４Ｂは、比較結果信号７７Ｂが認証成立を示している場合、不揮発性メモリ４Ｂの認証の成立をホスト装置１０に通知する（ステップ２０６）。一方、比較結果信号７７Ｂが認証不成立を示している場合、アクセス制御部３４Ｂは、認証不成立をホスト装置１０に通知しない。この場合、アクセス制御部３４Ｂは、ホスト装置１０からのコマンドを受け付けない。
【０１０２】
｛２．２．２．不揮発性メモリ４Ａの認証｝
次に、不揮発性メモリ４Ａの認証が実行される（ステップＳ２０７〜Ｓ２１２）。ステップＳ２０７〜Ｓ２１２の説明について、上記ステップＳ２０１〜Ｓ２０６の処理と共通する点については、その説明の一部を省略する。
【０１０３】
ホスト装置１０は、参照値取得コマンド５３Ｂを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ２０７）。参照値取得コマンド５３Ｂは、不揮発性メモリ４Ｂに格納された参照値７２Ａの読み出しを指示するコマンドである。
【０１０４】
認証コード管理部３７Ｂは、指示データ１１Ｂに含まれる参照値取得コマンド５３Ｂに基づいて、認証コード領域４１Ｂから参照値７２Ａを読み出す（ステップＳ２０８）。認証コード管理部３７Ｂは、読み出した参照値７２Ａをそのままホスト装置１０に送信する（ステップＳ２０９）。データ取得部１２は、メモリコントローラ３Ｂから受信した参照値７２Ａをバッファ１３Ｂに格納する。このようにして、ホスト装置１０は、不揮発性メモリ４Ａの認証に用いられる参照値７２Ａをメモリ装置２０Ｂから取得する。
【０１０５】
コマンド制御部１１は、認証開始コマンド５４と、メモリ装置２０Ｂから取得した参照値７２Ａとを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ２１０）。コマンドデコーダ３３Ａは、受信した指示データ１１Ａから認証開始コマンド５４及び参照値７２Ａを抽出する。メモリコントローラ３Ａは、抽出した認証開始コマンド５４に基づいて、不揮発性メモリ４Ａの認証を実行する（ステップＳ２１１）。
【０１０６】
図7に示すように、ＰＵＦ回路３５Ａは、認証コード領域４１Ａに記憶されたチャレンジ値７１Ａを取得する（ステップＳ５１）。ＰＵＦ回路３５Ａは、チャレンジ値７１Ａを入力とした物理的複製困難関数を計算して、レスポンス値７３Ａを生成する（ステップＳ５２）。分割部３６１Ａは、ＰＵＦ回路３５Ａから出力されるレスポンス値７３Ａを分割して、入力データ７４Ａと暗号鍵７５Ａとを生成する（ステップＳ５３）。
【０１０７】
ＨＭＡＣ回路３６２Ａは、暗号鍵７５Ａとハッシュ関数との組み合わせであるＨＭＡＣアルゴリズムを実行して、入力データ７４ＡからＭＡＣ値７６Ａを生成する（ステップＳ５４）。比較器３６３Ａは、ＨＭＡＣ回路３６２Ａによって生成されたＭＡＣ値７６Ａを、コマンドデコーダ３３Ａから取得した参照値７２Ａと比較する（ステップＳ５５）。
【０１０８】
ＭＡＣ値７６Ａが参照値７２Ａと一致する場合（ステップＳ５５においてＹｅｓ）、比較器３６３Ａは、不揮発性メモリ４Ａの認証が成立したと判断する（ステップＳ５６）。一方、ＭＡＣ値７６Ｂが参照値７２Ｂと一致しない場合（ステップＳ５５においてＮｏ）、比較器３６３Ａは、不揮発性メモリ４Ａの認証が成立しないと判断する（ステップＳ５７）。比較器３６３Ａは、不揮発性メモリ４Ａの認証が成立したか否かを示す比較結果信号７７Ａをアクセス制御部３４Ａに出力する。
【０１０９】
図６に示すように、アクセス制御部３４Ａは、比較結果信号７７Ａが認証成立を示している場合、不揮発性メモリ４Ａの認証の成立をホスト装置１０に通知する（ステップ２１２）。一方、比較結果信号７７Ａが認証不成立を示している場合、アクセス制御部３４は、認証不成立をホスト装置１０に通知しない。
【０１１０】
ホスト装置１０は、メモリコントローラ３Ａから認証成立を通知され、かつ、メモリコントローラ３Ｂから認証成立を通知された場合、不揮発性メモリ４Ａ，４Ｂの両者で認証が成立したと判断する。この場合、ホスト装置１０は、認証の成立をメモリコントローラ３Ａ，３Ｂに通知する（ステップＳ２１３及びＳ２１４）。一方、ホスト装置１０は、メモリコントローラ３Ａ，３Ｂの少なくとも一方から認証成立の通知を受け付けなかった場合、ステップＳ２１３及びＳ２１４を実行しない。つまり、ホスト装置１０は、認証の成立をメモリコントローラ３Ａ，３Ｂに通知しない。
【０１１１】
アクセス制御部３４Ａ，３４Ｂは、不揮発性メモリ４Ａ，４Ｂの両者の認証が成立したことが通知された場合、ユーザ領域４２Ａ，４２Ｂに対するアクセスが可能となったと判断する。この場合、アクセス制御部３４Ａ，３４Ｂは、ホスト装置１０からの指示に応じて、ユーザ領域４２Ａ，４２Ｂに対するユーザデータ４３Ａ，４３Ｂの書き込み及び読み出しを実行する。
【０１１２】
一方、ホスト装置１０が、不揮発性メモリ４Ａ，４Ｂの両者の認証の成立を通知しなかった場合、メモリコントローラ３Ａ，３Ｂは、電源オンのときから継続して、ホスト装置１０の指示に応じてユーザ領域４２Ａ，４２Ｂにアクセスしない。この場合、ユーザ領域４２Ａ，４２Ｂに対するユーザデータ４３Ａ，４３Ｂの書き込み及び読み出しは実行されない。
【０１１３】
以上説明したように、メモリシステム１００において不揮発性メモリ４Ａ，４Ｂの認証が行われる際に、メモリコントローラ３Ａの固有値であるレスポンス値７３Ａと、メモリコントローラ３Ｂの固有値であるレスポンス値７３Ｂとが用いられる。このため、悪意のある第三者が半導体記憶装置２０を複製した場合、複製された半導体記憶装置２０に含まれるメモリコントローラ３Ａ，３Ｂは、それぞれ不揮発性メモリ４Ａ，４Ｂを認証することができない。この結果、第三者は、複製された半導体記憶装置２０を利用することができない。以下、その理由を詳しく説明する。
【０１１４】
ＰＵＦ回路３５Ａを構成する半導体素子（ＦＥＴ（電界効果トランジスタ）など）に含まれる不純物の分布は、半導体素子ごとに異なる。不純物の分布を全ての半導体素子で揃えることは困難である。従って、ＰＵＦ回路３５Ｂが、ＰＵＦ回路３５Ａと同じ回路構成を有していても、ＰＵＦ回路３５Ａ，３５Ｂにおける物理的構造には微小なばらつきが存在する。レスポンス値７３Ａ，７３Ｂは、ＰＵＦ回路３５Ａ，３５Ｂが有する物理的特徴を利用した物理的複製困難関数により計算される。このため、チャレンジ値７１Ａ及び７１Ｂが同一であったとしても、レスポンス値７３Ａ，７３Ｂは、メモリコントローラ３Ａ，３Ｂに固有の値となり、同一の値とはならない。
【０１１５】
一方、工場出荷後の半導体記憶装置２０が複製された場合、複製された半導体記憶装置２０におけるメモリコントローラ３Ａ，３Ｂは、オリジナルの半導体記憶装置２０におけるメモリコントローラ３Ａ，３Ｂと異なる物理的特徴を有している。従って、複製された半導体記憶装置２０におけるメモリコントローラ３Ａ，３ＢのＰＵＦ回路３５Ａ，３５Ｂは、レスポンス値７３Ａ，７３Ｂを再現することができない。
【０１１６】
複製された半導体記憶装置２０において、不揮発性メモリ４Ａには参照値７２Ｂが記憶され、複製された不揮発性メモリ４Ｂには参照値７２Ａが記憶されている。認証処理において、複製された半導体記憶装置２０のメモリコントローラ３Ａは、レスポンス値７３Ａを再現できないため、ＭＡＣ値７６Ａを参照値７２Ａに一致させることができない。同様に、複製された半導体記憶装置２０のメモリコントローラ３Ｂは、ＭＡＣ値７６Ｂを参照値７２Ｂに一致させることができない。複製された半導体記憶装置２０において、不揮発性メモリ４Ａ，４Ｂのユーザ領域４２Ａ，４２Ｂに対するアクセスが許可されることがないため、第三者は、複製された半導体記憶装置２０を使用することができない。
【０１１７】
さらに、複製された不揮発性メモリ４Ａには参照値７２Ｂが記憶され、複製された不揮発性メモリ４Ｂには参照値７２Ａが記憶される。従って、半導体記憶装置２０は、メモリ装置２０Ａ及び２０Ｂの組み合わせを維持していなければ、不揮発性メモリ４Ａ，４Ｂの両者の認証を成立させることができない。半導体記憶装置２０からメモリ装置２０Ａ及び２０Ｂのいずれか一方のみを取り出しても、取り出したメモリ装置を単独で使用することができない。メモリ装置２０Ａ及び２０Ｂのいずれか一方を他のメモリ装置に置き換えた場合も、使用することはできない。この結果、半導体記憶装置２０の不正使用を防ぐことが可能となる。
【０１１８】
｛２．３．再初期化処理｝
図８は、メモリシステム１００において実行される再初期化処理のシーケンス図である。再初期化処理において、ホスト装置１０は、半導体記憶装置２０を購入したユーザのＰＣ、スマートフォン、タブレット端末などである。
【０１１９】
図８に示す再初期化処理により、半導体記憶装置２０に記憶されているチャレンジ値７１Ａ，７１Ｂ及び参照値７２Ａ，７２Ｂが更新される。再初期化処理により、不揮発性メモリ４Ａ，４Ｂのそれぞれの認証時におけるセキュリティを向上させることができる。
【０１２０】
ホスト装置１０は、再初期化をメモリコントローラ３Ａ，３Ｂに指示する前に、メモリコントローラ３Ａ，３Ｂに不揮発性メモリ４Ａ，４Ｂの認証を実行させることが望ましい（図６参照）。不揮発性メモリ４Ａ，４Ｂの両者の認証が成立した場合、ホスト装置１０は、再初期化処理のためのコマンドをメモリコントローラ３Ａ，３Ｂに送信する。この理由は、再初期化処理を単独で実行可能とした場合、チャレンジ値７１Ａ，７１Ｂ及び参照値７２Ａ，７２Ｂを自由に変更することができ、複製された半導体記憶装置２０を動作可能とすることができるためである。
【０１２１】
なお、再初期化処理は、図４に示す初期化処理と一部の処理が重複する。このため、重複する処理についての説明を一部省略する。
【０１２２】
（チャレンジ値の更新及び参照値の再生成）
コマンド制御部１１は、再初期化コマンド５５と新たなチャレンジ値７１Ａとを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ３０１）。ホスト装置１０は、再初期化コマンド５５と新たなチャレンジ値７１Ｂとを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ３０２）。再初期化コマンド５５は、不揮発性メモリに記憶されているチャレンジ値の更新を指示するコマンドである。
【０１２３】
メモリコントローラ３Ａにおいて、コマンドデコーダ３３Ａは、受信した指示データ１１Ａから、再初期化コマンド５５及び新たなチャレンジ値７１Ａを抽出する。メモリコントローラ３Ａは、抽出された再初期化コマンド５５に基づいて、ステップＳ３０３〜Ｓ３０５を実行する。
【０１２４】
コマンドデコーダ３３Ａは、抽出された新たなチャレンジ値７１Ａを認証コード管理部３７Ａへ出力する。認証コード管理部３７Ａは、認証コード領域４１Ａに記憶されているチャレンジ値７１Ａを、コマンドデコーダ３３Ａから出力された新たなチャレンジ値７１Ａで更新する（ステップＳ３０３）。これにより、チャレンジ値７１Ａが更新される。
【０１２５】
次に、メモリコントローラ３Ａは、抽出された新たなチャレンジ値７１Ａを用いて、ＭＡＣ値生成処理を実行する（ステップＳ３０４）。ステップＳ３０４の処理は、図５に示すＭＡＣ値生成処理と同じである。この結果、新たなＭＡＣ値７６Ａが、新たなチャレンジ値７１Ａから生成される。
【０１２６】
認証コード管理部３７Ａは、再初期化コマンド５５に対する応答として、生成された新たなＭＡＣ値７６Ａをホスト装置１０に送信する（ステップＳ３０５）。データ取得部１２は、メモリコントローラ３Ａから送信された新たなＭＡＣ値７６Ａを、新たな参照値７２Ａとしてバッファ１３Ａに格納する。
【０１２７】
メモリコントローラ３Ｂは、再初期化コマンド５５を受け付けたメモリコントローラ３Ａと同様に、認証コード領域４１Ｂに記憶されているチャレンジ値７１Ｂを新たなチャレンジ値７１Ｂで更新する（ステップＳ３０６）。メモリコントローラ３Ｂは、新たなチャレンジ値７１Ｂを用いて、新たなＭＡＣ値７６Ｂを生成する（ステップＳ３０７）。ステップＳ３０７の処理は、図５に示すＭＡＣ値生成処理と同じである。
【０１２８】
メモリコントローラ３Ｂは、生成された新たなＭＡＣ値７６Ｂをホスト装置１０に送信する（ステップＳ３０８）。データ取得部１２は、メモリコントローラ３Ｂから送信された新たなＭＡＣ値７６Ｂを、新たな参照値７２Ｂとしてバッファ１３Ｂに格納する。
【０１２９】
データ取得部１２が新たな参照値７２Ａ，７２Ｂを取得した場合、コマンド制御部１１は、再初期化コマンド５６と新たな参照値７２Ｂとを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ３０９）。再初期化コマンド５６は、認証コード領域に記憶されている参照値の更新をメモリコントローラに指示するコマンドである。コマンド制御部１１は、再初期化コマンド５６と新たな参照値７２Ａとを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ３１０）。
【０１３０】
メモリコントローラ３Ａにおいて、コマンドデコーダ３３Ａは、ホスト装置１０から受信した指示データ１１Ａから、再初期化コマンド５６及び新たな参照値７２Ｂを抽出する。認証コード管理部３７Ａは、再初期化コマンド５６に基づいて、認証コード領域４１Ａに記憶されている参照値７２Ｂを、抽出された新たな参照値７２Ｂで上書きする（ステップＳ３１１）。その後、認証コード管理部３７Ａは、参照値７２Ｂの更新が完了したことをホスト装置１０に通知する（ステップＳ３１２）。
【０１３１】
メモリコントローラ３Ｂは、メモリコントローラ３Ａと同様に、再初期化コマンド５６に基づいて、認証コード領域４１Ｂに記憶されている参照値７２Ａを、新たな参照値７２Ａで上書きする（ステップＳ３１３）。そして、メモリコントローラ３Ａは、参照値７２Ａの更新が完了したことをホスト装置１０に通知する（ステップＳ３１４）。これにより、再初期化処理が終了する。その後、不揮発性メモリ４Ａの認証には、不揮発性メモリ４Ａに格納された更新後のチャレンジ値７１Ａと、不揮発性メモリ４Ｂに格納された更新後の参照値７２Ａとが用いられる。不揮発性メモリ４Ｂの認証には、不揮発性メモリ４Ｂに格納された更新後のチャレンジ値７１Ｂと、不揮発性メモリ４Ａに格納された更新後の参照値７２Ｂとが用いられる。
【０１３２】
以上説明したように、本実施の形態に係るメモリシステム１００において、メモリコントローラ３Ａは、ＰＵＦ回路３５Ａにより生成されるレスポンス値７３Ａと、不揮発性メモリ４Ｂに記憶された参照値７２Ａとを用いて、不揮発性メモリ４Ａの認証を実行する。メモリコントローラ３Ｂは、ＰＵＦ回路３５Ｂにより生成されるレスポンス値７３Ｂと、不揮発性メモリ４Ａに記憶された参照値７２Ｂとを用いて、不揮発性メモリ４Ｂの認証を実行する。不揮発性メモリ４Ａ，４Ｂの認証が成立した場合、メモリコントローラ３Ａ，３Ｂは、不揮発性メモリ４Ａ，４Ｂに対する読み出し及び書き込みを実行する。
【０１３３】
不揮発性メモリ４Ａの認証に用いられる参照値７２Ａが不揮発性メモリ４Ｂに記憶され、不揮発性メモリ４Ｂの認証に用いられる参照値７２Ｂが不揮発性メモリ４Ａに記憶される。従って、メモリコントローラ３Ａと不揮発性メモリ４Ａとを備えるメモリ装置２０Ａと、メモリコントローラ３Ｂと不揮発性メモリ４Ｂとを備えるメモリ装置２０Ｂとの組み合わせでなければ、不揮発性メモリ４Ａ，４Ｂを認証することができない。第三者が半導体記憶装置２０を複製しても、複製された半導体記憶装置２０において不揮発性メモリ４Ａ，４Ｂの認証は成立しない。従って、複製された半導体記憶装置２０の使用を防ぐことができる。
【０１３４】
なお、本実施の形態において、ＭＡＣ値が参照値として用いられる例を説明したが、これに限られない。不揮発性メモリ４Ａは、参照値７２Ｂとしてレスポンス値７３Ｂを格納し、不揮発性メモリ４Ｂは、参照値７２Ａとしてレスポンス値７３Ａを格納してもよい。この場合、比較器３６３Ａは、ＰＵＦ回路３５Ａにより生成されたレスポンス値７３Ａを、不揮発性メモリ４Ｂに格納されたレスポンス値７３Ａと比較して、不揮発性メモリ４Ａの認証が成立するか否かを判断する。また、比較器３６３Ｂは、ＰＵＦ回路３５Ｂにより生成されたレスポンス値７３Ｂを、不揮発性メモリ４Ａに格納されたレスポンス値７３Ｂと比較して、不揮発性メモリ４Ｂの認証が成立するか否かを判断する。
【０１３５】
また、本実施の形態において、分割部３６１Ａがレスポンス値７３Ａを入力データ７４Ａ及び暗号鍵７５Ａに分割し、分割部３６１Ｂがレスポンス値７３Ｂを入力データ７４Ｂ及び暗号鍵７５Ｂに分割する例を説明したが、これに限られない。例えば、ＨＭＡＣ回路３６２Ａ、３６２Ｂは、レスポンス値７３Ａ，７３Ｂをそのまま入力データ７４Ａ，７４Ｂとして用いてもよい。この場合、ＨＭＡＣ回路３６２Ａ，３６２Ｂは、予め実装された固定鍵を用いて、レスポンス値７３Ａ，７３Ｂからハッシュ値をそれぞれ計算する。
【０１３６】
［第２の実施の形態］
図９は、本実施の形態に係るメモリシステムにおけるメモリ装置２０Ａの構成を示す機能ブロック図である。図１０は、本実施の形態に係るメモリシステムにおけるメモリ装置２０Ｂの構成を示す機能ブロック図である。
【０１３７】
本実施の形態に係るメモリシステムは、上記第１の実施の形態に係るメモリシステム１００と主に以下の点で異なる。
【０１３８】
上記第１の実施の形態では、参照値７２Ｂが、認証コード領域４１Ａ内の所定のアドレスに格納され、参照値７２Ａが、認証コード領域４１Ｂ内の所定のアドレスに格納された。これに対して、本実施の形態では、レスポンス値７３Ｂが、レスポンス値７３Ａに基づいて決定されたアドレスに基づいて、認証コード領域４１Ａに格納される。レスポンス値７３Ａが、レスポンス値７３Ｂに基づいて決定されたアドレスに基づいて、認証コード領域４１Ｂに格納される。
【０１３９】
また、上記第１の実施の形態では、例えば、ＨＭＡＣ回路３６２Ａは、レスポンス値７３Ａを分割することにより生成した入力データ７４Ａ及び暗号鍵７５Ａを用いて、参照値７２Ａ（ＭＡＣ値７６Ａ）を生成した。これに対して、本実施の形態では、参照値（ＭＡＣ値）は、レスポンス値７３Ａ及び７３Ｂの一方を入力データとし、他方を暗号鍵としたＨＭＡＣアルゴリズムの実行により生成される。
【０１４０】
以下、上記の差異を中心に本実施の形態に係るメモリシステムについて中心に説明し、上記第１の実施の形態に係るメモリシステム１００と共通の部分についての説明を一部省略する。
【０１４１】
｛１．メモリ装置２０Ａ，２０Ｂの構成｝
図９に示すように、メモリコントローラ３Ａは、認証コード管理部３７Ａに代えて、認証コード管理部３８Ａを備える。認証コード管理部３８Ａは、不揮発性メモリ４Ａに格納されたレスポンス値７３Ｂを読み出し、不揮発性メモリ４Ｂの認証に用いられる参照値（ＭＡＣ値）８２Ｂを取得する。
【０１４２】
メモリコントローラ３Ａは、アドレスデコーダ３９Ａをさらに備える。アドレスデコーダ３９Ａは、ＰＵＦ回路３５Ａにより生成されるレスポンス値７３Ａを用いて、メモリコントローラ３Ｂから取得したレスポンス値７３Ｂの格納先アドレス８５Ａを決定する。
【０１４３】
また、認証部３６Ａは、ＨＭＡＣ回路３６２Ａに代えて、ＨＭＡＣ回路３６４Ａを備える。ＨＭＡＣ回路３６４Ａは、レスポンス値７３Ａ及び７３Ｂの一方をＨＭＡＣアルゴリズムの暗号鍵として使用し、他方を入力データとして使用する。
【０１４４】
図１０に示すように、メモリコントローラ３Ｂは、認証コード管理部３７Ｂに代えて、認証コード管理部３８Ｂを備える。認証コード管理部３８Ｂは、不揮発性メモリ４Ｂに格納されたレスポンス値７３Ａを読み出し、不揮発性メモリ４Ａの認証に用いられる参照値（ＭＡＣ値）８２Ａを取得する。
【０１４５】
メモリコントローラ３Ｂは、アドレスデコーダ３９Ｂをさらに備える。アドレスデコーダ３９Ｂは、ＰＵＦ回路３５Ｂにより生成されるレスポンス値７３Ｂを用いて、メモリコントローラ３Ａから取得したレスポンス値７３Ａの格納先アドレス８５Ｂを決定する。
【０１４６】
また、認証部３６Ｂは、ＨＭＡＣ回路３６２Ｂに代えて、ＨＭＡＣ回路３６４Ｂを備える。ＨＭＡＣ回路３６４Ｂは、レスポンス値７３Ａ及び７３Ｂの一方をＨＭＡＣアルゴリズムの暗号鍵として使用し、他方を入力データとして使用する。ＨＭＡＣ回路３６４Ｂに実装されるハッシュ関数は、ＨＭＡＣ回路３６４Ａに実装されるハッシュ関数と同じである。
【０１４７】
｛２．メモリシステムの動作｝
以下、本実施の形態に係るメモリシステムにおいて実行される初期化処理、認証処理、及び再初期化処理について詳しく説明する。
【０１４８】
｛２．１．初期化処理｝
図１１は、本実施の形態に係るメモリシステムにおいて実行される初期化処理のシーケンス図である。初期化処理により、チャレンジ値７１Ａ及びレスポンス値７３Ｂが、認証コード領域４１Ａに格納され、チャレンジ値７１Ｂ及びレスポンス値７３Ａが、認証コード領域４１Ｂに格納される。
【０１４９】
ホスト装置１０は、初期化コマンド６１とチャレンジ値７１Ａとを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ４０１）。ホスト装置１０は、初期化コマンド６１とチャレンジ値７１Ｂとを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ４０２）。初期化コマンド６１は、チャレンジ値の設定と、設定されたチャレンジ値を用いたレスポンス値の生成を指示するコマンドである。
【０１５０】
メモリコントローラ３Ａにおいて、コマンドデコーダ３３Ａは、指示データ１１Ａから初期化コマンド６１を抽出する。コマンドデコーダ３３Ａは、抽出した初期化コマンド６１に基づいて、指示データ１１Ａに含まれるチャレンジ値７１Ａを認証コード管理部３８Ａに出力する。認証コード管理部３８Ａは、チャレンジ値７１Ａを、認証コード領域４１Ａ内の所定のアドレスに格納する（ステップＳ４０３）。
【０１５１】
ＰＵＦ回路３５Ａは、認証コード管理部３８Ａからチャレンジ値７１Ａを取得する。ＰＵＦ回路３５Ａは、取得したチャレンジ値７１Ａを入力とした物理的複製困難関数を計算して、レスポンス値７３Ａを生成する（ステップＳ４０４）。
【０１５２】
認証コード管理部３８Ａは、ＰＵＦ回路３５Ａにより生成されたレスポンス値７３Ａを取得し、取得したレスポンス値７３Ａを、初期化コマンド６１の応答としてホスト装置１０に送信する（ステップＳ４０５）。データ取得部１２は、メモリコントローラ３Ａから送信されたレスポンス値７３Ａを、バッファ１３Ａに一時的に記憶する。
【０１５３】
メモリコントローラ３Ｂは、初期化コマンド６１に応じて、ステップＳ４０６〜Ｓ４０８を実行する。ステップＳ４０６〜Ｓ４０８の処理は、ステップＳ４０３〜Ｓ４０５と同様の処理である。
【０１５４】
すなわち、認証コード管理部３８Ｂは、指示データ１１Ｂに含まれるチャレンジ値７１Ｂを、認証コード領域４１Ｂ内の所定のアドレスに格納する（ステップＳ４０６）。ＰＵＦ回路３５Ｂは、チャレンジ値７１Ｂを入力とした物理的複製困難関数を計算して、レスポンス値７３Ｂを生成する（ステップＳ４０７）。認証コード管理部３８Ｂは、生成されたレスポンス値７３Ｂをホスト装置１０に送信する（ステップＳ４０８）。データ取得部１２は、レスポンス値７３Ｂを、バッファ１３Ｂに一時的に記憶する。
【０１５５】
ホスト装置１０のコマンド制御部１１は、レスポンス値格納コマンド６２及びレスポンス値７３Ｂを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ４０９）。ホスト装置１０は、レスポンス値格納コマンド６２及びレスポンス値７３Ａを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ４１０）。レスポンス値格納コマンド６２は、レスポンス値の認証コード領域への格納を指示するコマンドである。
【０１５６】
メモリコントローラ３Ａは、レスポンス値格納コマンド６２に基づいて、以下の処理を実行する。認証コード管理部３８Ａは、ＰＵＦ回路３５Ａにより生成されたレスポンス値７３Ａをアドレスデコーダ３９Ａに出力する。アドレスデコーダ３９Ａは、レスポンス値７３Ａを用いて、指示データ１１Ａに含まれるレスポンス値７３Ｂの格納先アドレス８５Ａを決定する（ステップＳ４１１）。格納先アドレスを決定するためのアルゴリズムは、認証コード領域４１Ａのアドレスを特定できるものであれば、特に限定されない。
【０１５７】
認証コード管理部３８Ａは、指示データ１１Ａに含まれるレスポンス値７３Ｂをコマンドデコーダ３３Ａから取得する。認証コード管理部３８Ａは、格納先アドレス８５Ａにより指定された領域（認証コード領域４１Ａ）に、レスポンス値７３Ｂを格納する（ステップＳ４１２）。そして、認証コード管理部３８Ａは、レスポンス値７３Ｂの格納完了をホスト装置１０に通知する（ステップＳ４１３）。
【０１５８】
メモリコントローラ３Ｂは、レスポンス値格納コマンド６２に基づいて、メモリコントローラ３と同様の処理を実行する。アドレスデコーダ３９Ｂは、ＰＵＦ回路３５Ｂにより生成されたレスポンス値７３Ｂを用いて、指示データ１１Ｂに含まれるレスポンス値７３Ａの格納先アドレス８５Ｂを決定する（ステップＳ４１４）。認証コード管理部３８Ｂは、格納先アドレス８５Ｂにより指定された領域（認証コード領域４１Ｂ）に、レスポンス値７３Ａを格納する（ステップＳ４１５）。そして、認証コード管理部３８Ｂは、レスポンス値７３Ａの格納完了をホスト装置１０に通知する（ステップＳ４１６）。
【０１５９】
レスポンス値７３Ｂは、レスポンス値７３Ａと異なるため、格納先アドレス８５Ｂは、格納先アドレス８５Ａにより指定される領域と異なる領域を示す。つまり、レスポンス値の格納先を示すアドレスがメモリ装置に応じて変化するため、レスポンス値の格納先を特定することが困難となり、セキュリティを向上させることができる。
【０１６０】
ホスト装置１０は、ステップＳ４１３及びＳ４１６の通知を受信することにより、初期化処理が終了したと判断する。初期化処理の終了後、半導体記憶装置２０は、工場から出荷される。
【０１６１】
｛２．２．認証処理｝
図１２は、本実施の形態に係るメモリシステムにおいて実行される認証処理のシーケンス図である。以下、図１２を参照しながら、半導体記憶装置２０の電源がオンされた場合を例にして、認証処理におけるホスト装置１０及びメモリコントローラ３Ａ，３Ｂの動作を詳しく説明する。
【０１６２】
｛２．２．１．不揮発性メモリ４Ｂの認証｝
最初に、不揮発性メモリ４Ｂの認証が実行される（ステップＳ５０１〜Ｓ５０６）。
【０１６３】
（参照値８２Ｂの生成）
ホスト装置１０は、不揮発性メモリ４Ｂの認証を指示する前に、不揮発性メモリ４Ｂの認証に用いられる参照値８２Ｂをメモリコントローラ３Ａに生成させる。具体的には、ホスト装置１０のコマンド制御部１１は、参照値生成コマンド６３Ａを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ５０１）。参照値生成コマンド６３Ａは、参照値８２Ｂの生成を指示するコマンドである。
【０１６４】
メモリコントローラ３Ａにおいて、参照値生成コマンド６３Ａが、コマンドデコーダ３３Ａにより指示データ１１Ａから抽出される。メモリコントローラ３Ａは、抽出された参照値生成コマンド６３Ａに基づいて、参照値８２Ｂを生成する（ステップＳ５０２）。
【０１６５】
図１３は、参照値生成処理（ステップＳ５０２）のフローチャートである。図１３に示す処理は、ステップＳ５０２と、後述するステップＳ５０８とで共通である。
【０１６６】
図１３に示すように、認証コード管理部３８Ａは、認証コード領域４１Ａからチャレンジ値７１Ａを読み出す（ステップＳ６１）。読み出されたチャレンジ値７１Ａは、ＰＵＦ回路３５Ａに入力される。ＰＵＦ回路３５Ａは、チャレンジ値７１Ａを入力とした物理的複製困難関数を計算して、レスポンス値７３Ａを生成する（ステップＳ６２）。ＰＵＦ回路３５Ａは、生成したレスポンス値７３Ａを認証コード管理部３８Ａに出力する。
【０１６７】
アドレスデコーダ３９Ａは、認証コード管理部３８Ａを介してレスポンス値７３Ａを取得し、取得したレスポンス値を用いて格納先アドレス８５Ａを特定する（ステップＳ６３）。認証コード管理部３８Ａは、特定した格納先アドレス８５Ａで指定される記憶領域（認証コード領域４１Ａ）から、レスポンス値７３Ｂを読み出す（ステップＳ６４）。
【０１６８】
ＨＭＡＣ回路３６４Ａは、ＰＵＦ回路３５Ａにより生成されたレスポンス値７３Ａを入力し、認証コード領域４１Ａから読み出されたレスポンス値７３Ｂを認証コード管理部３８Ａから入力する。ＨＭＡＣ回路３６４Ａは、レスポンス値７３Ａ及び７３Ｂを用いたＨＭＡＣアルゴリズムを実行して、参照値（ＭＡＣ値）８２Ｂを生成する（ステップＳ６５）。ステップＳ６５において、ＰＵＦ回路３５Ａにより生成されたレスポンス値７３Ａは、ＨＭＡＣアルゴリズムの暗号鍵として用いられる。認証コード領域４１Ａから読み出されたレスポンス値７３Ｂは、ＨＭＡＣアルゴリズムの入力データとして用いられる。参照値８２Ｂの生成により、ステップＳ５０２の処理は終了する。
【０１６９】
再び、図１２を参照する。認証コード管理部３８Ａは、ＨＭＡＣ回路３６４Ａにより生成された参照値８２Ｂを、参照値生成コマンド６３Ａの応答としてホスト装置１０に送信する（ステップＳ５０３）。データ取得部１２は、メモリコントローラ３Ａから送信された参照値８２Ｂを、バッファ１３Ａに格納する。
【０１７０】
（認証開始）
次に、コマンド制御部１１は、認証開始コマンド６４及び参照値８２Ｂを含む指示データ１１Ｂを、メモリコントローラ３Ｂに送信する（ステップＳ５０４）。コマンドデコーダ３３Ｂは、指示データ１１Ｂから認証開始コマンド６４を抽出する。メモリコントローラ３は、抽出された認証開始コマンド６４に応じて、不揮発性メモリ４Ａを認証する（ステップＳ５０５）。
【０１７１】
図１４は、メモリ認証処理（ステップＳ５０５）のフローチャートである。図１４に示す処理は、ステップＳ５０５と、後述するステップＳ５１１とで共通である。図１４に示す処理において、ステップＳ７１〜Ｓ７４の処理は、図１３に示すステップＳ６１〜Ｓ６４の処理と共通である。このため、ステップＳ７１〜Ｓ７４の処理の説明を一部省略する。
【０１７２】
認証コード管理部３８Ｂは、認証コード領域４１Ｂからチャレンジ値７１Ｂを読み出す（ステップＳ７１）。ＰＵＦ回路３５Ｂは、読み出されたチャレンジ値７１Ｂを入力とした物理的複製困難関数を計算して、レスポンス値７３Ｂを生成する（ステップＳ７２）。アドレスデコーダ３９Ｂは、生成されたレスポンス値７３Ｂを用いて、レスポンス値７３Ａの格納先アドレス８５Ｂを特定する（ステップＳ７３）。認証コード管理部３８Ｂは、特定された格納先アドレス８５Ｂにより指定される領域（認証コード領域４１Ｂ）から、レスポンス値７３Ａを読み出す（ステップＳ７４）。
【０１７３】
ＨＭＡＣ回路３６４Ｂは、ＨＭＡＣアルゴリズムを実行して、ＭＡＣ値８６Ｂを生成する（ステップＳ７５）。ステップＳ７５において、認証コード領域４１Ｂから読み出されたレスポンス値７３Ａが暗号鍵として用いられる。ＰＵＦ回路３５Ｂにより生成されたレスポンス値７３Ｂが入力データとして用いられる。
【０１７４】
比較器３６３Ｂは、ＨＭＡＣ回路３６４Ｂにより生成されたＭＡＣ値８６Ｂを、認証開始コマンド６４とともに送信された参照値８２Ｂと比較する（ステップＳ７６）。ＭＡＣ値８６Ｂが参照値８２Ｂと一致する場合（ステップＳ７６においてＹｅｓ）、比較器３６３Ｂは、不揮発性メモリ４Ｂの認証が成立したと判断する（ステップＳ７７）。一方、ＭＡＣ値７６Ｂが参照値７２Ｂと一致しない場合（ステップＳ７６においてＮｏ）、比較器３６３Ｂは、不揮発性メモリ４Ｂの認証が成立しないと判断する（ステップＳ７８）。比較器３６３Ｂは、不揮発性メモリ４Ａの認証が成立したか否かを示す比較結果信号７７Ｂをアクセス制御部３４Ｂに出力する。
【０１７５】
図１２に示すように、メモリ認証処理（ステップＳ５０５）の後に、アクセス制御部３４Ｂは、比較結果信号７７Ｂの示す内容に応じた処理を実行する。具体的には、アクセス制御部３４Ｂは、比較結果信号７７Ｂが認証成立を示している場合、不揮発性メモリ４Ｂの認証の成立をホスト装置１０に通知する（ステップＳ５０６）。一方、比較結果信号７７Ｂが認証不成立を示している場合、アクセス制御部３４Ｂは、認証不成立をホスト装置１０に通知しない。
【０１７６】
｛２．２．２．不揮発性メモリ４Ａの認証｝
不揮発性メモリ４Ｂの認証処理の後に、不揮発性メモリ４Ａの認証が実行される（ステップＳ５０７〜Ｓ５１２）。ステップＳ５０７〜Ｓ５１２の処理は、ステップＳ５０１〜Ｓ５０６の処理にそれぞれ対応する。このため、ステップＳ５０７〜Ｓ５１２の説明の一部を省略する。
【０１７７】
（参照値８２Ａの生成）
ホスト装置１０は、不揮発性メモリ４Ａの認証を指示する前に、不揮発性メモリ４Ａの認証に用いられる参照値８２Ａをメモリコントローラ３Ｂに生成させる。具体的には、コマンド制御部１１は、参照値８２Ａの生成を指示する参照値生成コマンド６３Ｂを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ５０７）。
【０１７８】
メモリコントローラ３Ａは、参照値生成コマンド６３Ｂに応じて、参照値生成処理（ステップＳ５０８）を実行して、参照値８２Ａを生成する。
【０１７９】
図１３に示すように、認証コード管理部３８Ｂは、認証コード領域４１Ｂからチャレンジ値７１Ｂを読み出す（ステップＳ６１）。ＰＵＦ回路３５Ｂは、読み出されたチャレンジ値７１Ｂを入力とした物理的複製困難関数を計算して、レスポンス値７３Ｂを生成する（ステップＳ６２）。
【０１８０】
アドレスデコーダ３９Ｂは、生成されたレスポンス値７３Ｂを用いて、認証コード領域４１Ｂに格納されたレスポンス値７３Ａの格納先アドレス８５Ｂを特定する（ステップＳ６３）。認証コード管理部３８Ｂは、格納先アドレス８５Ｂにより指定される領域（認証コード領域４１Ｂ）から、レスポンス値７３Ａを読み出す（ステップＳ６４）。
【０１８１】
ＨＭＡＣ回路３６４Ｂは、ＨＭＡＣアルゴリズムを実行して、参照値（ＭＡＣ値）８２Ａを生成する（ステップＳ６５）。ステップＳ６５において、ＰＵＦ回路３５Ｂにより生成されたレスポンス値７３Ｂは、暗号鍵として用いられる。認証コード領域４１Ｂから読み出されたレスポンス値７３Ａは、入力データとして用いられる。
【０１８２】
再び、図１２を参照する。認証コード管理部３８Ｂは、ＨＭＡＣ回路３６４Ｂにより生成された参照値８２Ａを、参照値生成コマンド６３Ｂの応答としてホスト装置１０に送信する（ステップＳ５０９）。データ取得部１２は、メモリコントローラ３Ｂから送信された参照値８２Ａを、バッファ１３Ｂに格納する。
【０１８３】
（認証開始）
コマンド制御部１１は、認証開始コマンド６４及び参照値８２Ａを含む指示データ１１Ａを、メモリコントローラ３Ａに送信する（ステップＳ５１０）。メモリコントローラ３Ａは、認証開始コマンド６４に応じて、不揮発性メモリ４Ａを認証する（ステップＳ５１１）。
【０１８４】
図１４を参照しながら、メモリ認証処理（ステップＳ５１１）を説明する。認証コード管理部３８Ａは、認証コード領域４１Ａからチャレンジ値７１Ａを読み出す（ステップＳ７１）。ＰＵＦ回路３５Ａは、読み出されたチャレンジ値７１Ａを入力とした物理的複製困難関数を計算して、レスポンス値７３Ａを生成する（ステップＳ７２）。アドレスデコーダ３９Ａは、生成されたレスポンス値７３Ａを用いて、格納先アドレス８５Ａを特定する（ステップＳ７３）。認証コード管理部３８Ａは、格納先アドレス８５Ａにより指定された領域（認証コード領域４１Ａ）からレスポンス値７３Ｂを読み出す（ステップＳ７４）。
【０１８５】
ＨＭＡＣ回路３６４Ａは、ＨＭＡＣアルゴリズムを実行して、ＭＡＣ値８６Ａを生成する（ステップＳ７５）。ステップＳ７５において、認証コード領域４１Ａから読み出されたレスポンス値７３Ｂが、暗号鍵として用いられる。ＰＵＦ回路３５Ａにより生成されたレスポンス値７３Ａが、入力データとして用いられる。
【０１８６】
比較器３６３Ａは、ＨＭＡＣ回路３６４Ａにより生成されたＭＡＣ値８６Ａを、認証開始コマンド６４とともに送信された参照値８２Ａと比較する（ステップＳ７６）。ＭＡＣ値８６Ａが参照値８２Ａと一致する場合（ステップＳ７６においてＹｅｓ）、比較器３６３Ａは、不揮発性メモリ４Ａの認証が成立したと判断する（ステップＳ７７）。一方、ＭＡＣ値７６Ａが参照値７２Ａと一致しない場合（ステップＳ７６においてＮｏ）、比較器３６３Ａは、不揮発性メモリ４Ｂの認証が成立しないと判断する（ステップＳ７８）。比較器３６３Ａは、認証が成立したか否かを示す比較結果信号７７Ａをアクセス制御部３４Ｂに出力する。
【０１８７】
図１２に示すように、メモリ認証処理（ステップＳ５１１）の後に、アクセス制御部３４Ａは、比較結果信号７７Ａの示す内容に応じた処理を実行する。具体的には、アクセス制御部３４Ａは、比較結果信号７７Ａが認証成立を示している場合、不揮発性メモリ４Ａの認証の成立をホスト装置１０に通知する（ステップＳ５１２）。一方、比較結果信号７７Ａが認証不成立を示している場合、アクセス制御部３４Ａは、認証不成立をホスト装置１０に通知しない。
【０１８８】
ホスト装置１０は、メモリコントローラ３Ａから認証成立を通知され、かつ、メモリコントローラ３Ｂから認証成立を通知された場合、不揮発性メモリ４Ａ，４Ｂの両者で認証が成立したと判断する。この場合、ホスト装置１０は、認証の成立をメモリコントローラ３Ａ，３Ｂに通知する（ステップＳ５１３及びＳ５１４）。一方、ホスト装置１０は、メモリコントローラ３Ａ，３Ｂの少なくとも一方から認証成立の通知を受け付けなかった場合、ステップＳ５１３及びＳ５１４を実行しない。つまり、ホスト装置１０は、認証の成立をメモリコントローラ３Ａ，３Ｂに通知しない。
【０１８９】
アクセス制御部３４Ａ，３４Ｂは、不揮発性メモリ４Ａ，４Ｂの両者の認証が成立したことが通知された場合、ユーザ領域４２Ａ，４２Ｂに対するアクセスが可能となったと判断する。一方、ホスト装置１０が、不揮発性メモリ４Ａ，４Ｂの両者の認証の成立を通知しなかった場合、メモリコントローラ３Ａ，３Ｂは、電源オンのときから継続して、ユーザ領域４２Ａ，４２Ｂにアクセスしない。
【０１９０】
｛２．３．再初期化処理｝
図１５は、本実施の形態に係るメモリシステムにおいて実行される再初期化処理のシーケンス図である。図１５に示す再初期化処理により、半導体記憶装置２０に記憶されているチャレンジ値７１Ａ，７１Ｂ及びレスポンス値７３Ａ，７３Ｂが更新される。上記第１の実施の形態と同様に、ホスト装置１０は、不揮発性メモリ４Ａ，４Ｂの認証が成立したことを確認した上で（図１２参照）、再初期化をメモリコントローラ３Ａ，３Ｂに指示することが望ましい。
【０１９１】
なお、再初期化処理は、図１１に示す初期化処理と一部の処理が重複する。このため、重複する処理についての説明を一部省略する。
【０１９２】
（チャレンジ値の更新及び新たなレスポンス値の生成）
コマンド制御部１１は、再初期化コマンド６５と新たなチャレンジ値７１Ａとを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ６０１）。ホスト装置１０は、再初期化コマンド６５と新たなチャレンジ値７１Ｂとを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ６０２）。再初期化コマンド６５は、認証コード領域に格納されたチャレンジ値の更新と、更新されたチャレンジ値を用いたレスポンス値の生成を指示するコマンドである。
【０１９３】
メモリコントローラ３Ａにおいて、コマンドデコーダ３３Ａは、指示データ１１Ａに含まれる新たなチャレンジ値７１Ａを認証コード管理部３８Ａへ出力する。認証コード管理部３８Ａは、認証コード領域４１Ａに記憶されているチャレンジ値７１Ａを、コマンドデコーダ３３Ａから出力された新たなチャレンジ値７１Ａで更新する（ステップＳ６０３）。ＰＵＦ回路３５Ａは、新たなチャレンジ値７１Ａを入力とした物理的複製困難関数を計算して、新たなレスポンス値７３Ａを生成する（ステップＳ６０４）。
【０１９４】
認証コード管理部３８Ａは、再初期化コマンド６５に対する応答として、生成された新たなレスポンス値７３Ａをホスト装置１０に送信する（ステップＳ６０５）。データ取得部１２は、メモリコントローラ３Ａから送信された新たなレスポンス値７３Ａをバッファ１３Ａに格納する。
【０１９５】
メモリコントローラ３Ｂにおいて、認証コード管理部３８Ｂは、認証コード領域４１Ｂに記憶されているチャレンジ値７１Ｂを新たなチャレンジ値７１Ｂで更新する（ステップＳ６０６）。ＰＵＦ回路３５Ｂは、新たなチャレンジ値７１Ｂから新たなレスポンス値７３Ｂを生成する（ステップＳ６０７）。認証コード管理部３８Ｂは、生成された新たなレスポンス値７３Ｂをホスト装置１０に送信する（ステップＳ６０８）。データ取得部１２は、メモリコントローラ３Ｂから送信された新たなレスポンス値７３Ｂをバッファ１３Ｂに格納する。
【０１９６】
（新たなレスポンス値の格納）
データ取得部１２が新たなレスポンス値７３Ａ，７３Ｂを取得した場合、コマンド制御部１１は、再初期化コマンド６６及び新たなレスポンス値７３Ｂを含む指示データ１１Ａをメモリコントローラ３Ａに送信する（ステップＳ６０９）。コマンド制御部１１は、再初期化コマンド６６及び新たなレスポンス値７３Ａを含む指示データ１１Ｂをメモリコントローラ３Ｂに送信する（ステップＳ６１０）。再初期化コマンド６６は、新たなレスポンス値の格納を指示するコマンドである。
【０１９７】
メモリコントローラ３Ａは、再初期化コマンド６６に基づいて、新たなレスポンス値７３Ａを認証コード領域４１Ｂに格納する（ステップＳ６１１〜Ｓ６１３）。
【０１９８】
アドレスデコーダ３９Ａは、ＰＵＦ回路３５Ａにより生成された新たなレスポンス値７３Ａを用いて、新たな格納先アドレス８５Ａを決定する（ステップＳ６１１）。ステップＳ６１１で生成された新たな格納先アドレス８５Ａは、初期化処理（図１１参照）のステップＳ４１１で生成された格納先アドレス８５Ａと異なる。この理由は、チャレンジ値７１Ａが更新されたことにより、格納先アドレスの決定に用いられるレスポンス値７３Ａが変化するためである。新たな格納先アドレス８５Ａで指定される領域（認証コード領域４１Ａ）に、新たなレスポンス値７３Ｂを格納する（ステップＳ６１２）。そして、認証コード管理部３８Ａは、新たなレスポンス値７３Ｂの格納完了をホスト装置１０に通知する（ステップＳ６１３）。
【０１９９】
なお、認証コード管理部３８Ａは、認証コード領域４１Ａに格納されている過去のレスポンス値７３Ｂを削除してもよいし、そのまま保持していてもよい。過去のレスポンス値を削除する場合、認証コード管理部３８Ａは、チャレンジ値７１Ａを更新する（ステップＳ６０３）際に、過去（更新前）のレスポンス値を削除すればよい。
【０２００】
メモリコントローラ３Ｂは、メモリコントローラ３Ａと同様に、再初期化コマンド６６に基づいて、認証コード領域４１Ｂに格納されたレスポンス値７３Ａを更新する（ステップＳ６１４〜Ｓ６１６）。
【０２０１】
アドレスデコーダ３９Ｂは、ＰＵＦ回路３５Ｂにより生成された新たなレスポンス値７３Ｂを用いて、新たな格納先アドレス８５Ｂを決定する（ステップＳ６１４）。認証コード管理部３８Ｂは、新たな格納先アドレス８５Ｂにより指定される領域（認証コード領域４１Ｂ）に、新たなレスポンス値７３Ａを格納する（ステップＳ６１５）。そして、認証コード管理部３８Ａは、新たなレスポンス値７３Ａの格納完了をホスト装置１０に通知する（ステップＳ６１６）。
【０２０２】
これにより、不揮発性メモリ４Ａに格納されたチャレンジ値７１Ａ及びレスポンス値７３Ｂと、不揮発性メモリ４Ｂに格納されたチャレンジ値７１Ｂ及びレスポンス値７３Ａとの更新が完了する。
【０２０３】
以上説明したように、本実施の形態に係るメモリシステムにおいて不揮発性メモリ４Ａ，の認証に、メモリコントローラ３Ａの固有値であるレスポンス値７３Ａとメモリコントローラ３Ｂの固有値であるレスポンス値７３Ｂとの両者が用いられる。従って、上記第１の実施の形態と同様に、第三者は、複製した半導体記憶装置２０を利用することができない。
【０２０４】
また、認証コード領域に格納されるレスポンス値のアドレスが、メモリコントローラと不揮発性メモリとを備えるメモリ装置ごとに変化するため、第三者が、認証コード領域における参照値の格納先アドレスを特定することが困難となる。従って、第三者は、認証コード領域に記憶されたレスポンス値を用いて、不揮発性メモリの認証を不正に成立させることを困難にすることができる。
【０２０５】
｛変形例｝
上記実施の形態において、メモリコントローラ３Ａ，３Ｂが、ホスト装置１０を介して参照値又はレスポンス値を取得する例を説明した。しかし、メモリコントローラ３Ａ，３Ｂは、参照値又はレスポンス値を直接転送するようにしてもよい。
【０２０６】
図１６は、上記第１の実施の形態に係るメモリ装置２０Ａの変形例の構成を示す機能ブロック図である。図１６に示すように、メモリコントローラ３Ａは、コントローラＩ／Ｆ４０をさらに備える。図示していないが、メモリコントローラ３ＡがコントローラＩ／Ｆ４０を備える場合、メモリコントローラ３Ｂも、コントローラＩ／Ｆ４０を備える。メモリコントローラ３Ａ，３Ｂにおける２つのコントローラＩ／Ｆ４０は、バスなどで接続される。これにより、メモリコントローラ３Ａ，３Ｂは、ホスト装置１０を介することなく、参照値７２Ａ，７２Ｂを送受信することができる。
【０２０７】
初期化処理（図４参照）において、メモリコントローラ３Ａは、ＭＡＣ値７６Ａを生成した場合（ステップＳ１０４）、生成したＭＡＣ値７６ＡをコントローラＩ／Ｆ４０を介して、メモリコントローラ３Ｂに転送する。メモリコントローラ３Ｂは、メモリコントローラ３ＡからＭＡＣ値７６Ａを受信した場合、受信したＭＡＣ値７６Ａを参照値７２Ａとして認証コード領域４１Ｂに格納する（ステップＳ１１３）。
【０２０８】
メモリコントローラ３Ａは、ステップＳ１０７において生成されたＭＡＣ値７６ＢをコントローラＩ／Ｆ４０を介してメモリコントローラ３Ｂから受信する。メモリコントローラ３Ａは、受信したＭＡＣ値７６Ｂを参照値７２Ｂとして認証コード領域４１Ａに格納する（ステップＳ１１１）。
【０２０９】
認証処理（図６参照）においても、メモリコントローラ３Ａ，３Ｂは、認証に用いる参照値７２Ａ，７２Ｂを直接やり取りすればよい。また、メモリコントローラ３Ａ，３Ｂは、不揮発性メモリ４Ｂの認証結果を相互に通知すればよい。例えば、アクセス制御部３４Ｂは、不揮発性メモリ４Ｂの認証が成立したと判断した後に不揮発性メモリ４Ａの認証成立をメモリコントローラ３Ａから通知された場合、ユーザ領域４２Ｂに対するアクセスが可能になったと判断する。
【０２１０】
上記第２の実施の形態に係る半導体記憶装置２０において、メモリコントローラ３Ａ，３Ｂが、コントローラＩ／Ｆ４０を備えていてもよい。これにより、メモリコントローラ３Ａ，３Ｂは、レスポンス値７３Ａ，７３Ｂ及び参照値８２Ａ，８２Ｂを直接送受信することができる。
【０２１１】
また、上記実施の形態において、不揮発性メモリ４Ａ，４Ｂの両者の認証が成立した場合、アクセス制御部３４Ａ，３４Ｂは、ユーザ領域４２Ａ，４２Ｂに対するアクセスを開始する例を説明したが、これに限られない。アクセス制御部３４Ａ，３４Ｂ、不揮発性メモリ４Ａ，４Ｂのいずれか一方の認証が成立した場合に、ユーザ領域４２Ａ，４２Ｂに対するアクセスを開始してもよい。あるいは、ホスト装置１０は、不揮発性メモリ４Ａ，４Ｂの認証を交互に実行してもよい。
【０２１２】
上記第１及び第２の実施の形態において、参照値７２Ａ，７２ＢがそれぞれＭＡＣ値７６Ａ，７６Ｂである場合を例に説明したが、これに限られない。例えば、メモリコントローラ３Ａ，３Ｂは、参照値７２Ａ，７２Ｂとしてレスポンス値７３Ａ，７３Ｂを用いてもよい。この場合、認証処理において、メモリコントローラ３Ａは、レスポンス値７３Ａをメモリ装置２０Ｂから取得した参照値７２Ａと比較し、メモリコントローラ３Ｂは、レスポンス値７３Ｂをメモリ装置２０Ａから取得した参照値７２Ｂと比較すればよい。つまり、メモリコントローラ３Ａは、ＰＵＦ回路３５Ａから生成されたレスポンス値７３Ａと、メモリ装置２０Ｂから取得した参照値７２Ａとを用いて、不揮発性メモリ４Ａの認証が成立するか否かを判断すればよい。メモリコントローラ３Ｂについても同様である。
【０２１３】
上記第１及び第２の実施の形態で説明したメモリコントローラ３Ａ，３Ｂの一部又は全部は、集積回路（例えば、ＬＳＩ、システムＬＳＩ等）として実現されるものであってもよい。
【０２１４】
また、上記第１及び第２の実施の形態における各処理の一部又は全部をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【０２１５】
また、上記第１及び第２の実施の形態で説明した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリを挙げることができる。
【符号の説明】
【０２１６】
１００  メモリシステム
１０  ホスト装置
２０  半導体記憶装置
２０Ａ，２０Ｂ  メモリ装置
３Ａ，３Ｂ  メモリコントローラ
４Ａ，４Ｂ  不揮発性メモリ
３１Ａ，３１Ｂ  ホストＩ／Ｆ
３２Ａ，３２Ｂ  メモリＩ／Ｆ
３３Ａ，３３Ｂ  コマンドデコーダ
３４Ａ，３４Ｂ  アクセス制御部
３５Ａ，３５Ｂ  ＰＵＦ回路
３６Ａ，３６Ｂ  認証部
３７Ａ，３７Ｂ，３８Ａ，３８Ｂ  認証コード管理部
３９Ａ，３９Ｂ  アドレスデコーダ
４０  コントローラＩ／Ｆ
３６１Ａ，３６１Ｂ  分割部
３６２Ａ，３６２Ｂ，３６４Ａ，３６４Ｂ  ＨＭＡＣ回路
３６３Ａ，３６３Ｂ  比較器
【図１】
0006430847.tif 000002
【図２】
0006430847.tif 000003
【図３】
0006430847.tif 000004
【図４】
0006430847.tif 000005
【図５】
0006430847.tif 000006
【図６】
0006430847.tif 000007
【図７】
0006430847.tif 000008
【図８】
0006430847.tif 000009
【図９】
0006430847.tif 000010
【図１０】
0006430847.tif 000011
【図１１】
0006430847.tif 000012
【図１２】
0006430847.tif 000013
【図１３】
0006430847.tif 000014
【図１４】
0006430847.tif 000015
【図１５】
0006430847.tif 000016
【図１６】
0006430847.tif 000017