【解決手段】ホスト装置1は、不揮発性メモリ3の認証を指示する認証コマンド12をメモリコントローラ4に送信する。メモリコントローラ4において、鍵生成回路44は、不揮発性メモリ3からチャレンジ値31a及び参照値31bを取得する。鍵生成回路44は、チャレンジ値31aを入力とした物理的複製困難関数を計算して、メモリコントローラ4の固有値(レスポンス値44a)を生成する。鍵生成回路44は、レスポンス値44a及び参照値31bを用いて、不揮発性メモリ3の正当性を判断する。アクセス制御部43は、不揮発性メモリ3の認証が成立した場合、ホスト装置1からの要求に基づいて、不揮発性メモリ3からのデータの読み出し、又は不揮発性メモリ3へデータの書き込みを実行する。
【発明を実施するための形態】
【0023】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【0024】
[第1の実施の形態]
{1.メモリシステムの構成}
{1.1.全体構成}
図1は、本発明の第1の実施の形態に係るメモリシステム100の構成を示す機能ブロック図である。
図1に示すように、メモリシステム100は、ホスト装置1と、不揮発性記憶装置2とを備える。不揮発性記憶装置2は、不揮発性メモリ3と、メモリコントローラ4とを備える。
【0025】
ホスト装置1は、例えば、バス(図示省略)を介して、不揮発性記憶装置2と電気的に接続されている。ホスト装置1は、不揮発性メモリ3からデータを読み出すための読み出しコマンドを不揮発性記憶装置2に送信する。ホスト装置1は、読み出しコマンドに応じて不揮発性メモリ3から読み出されたデータを受信する。また、ホスト装置1は、不揮発性メモリ3にデータを書き込むための書き込みコマンド及び書き込みデータを不揮発性記憶装置2に送信する。
【0026】
ホスト装置1は、不揮発性記憶装置2に送信するコマンド及びデータを、予め設定された暗号鍵8aを用いて暗号化して送信する。不揮発性記憶装置2からホスト装置1に送信されるデータも、暗号鍵8aにより暗号化されている。ホスト装置1は、不揮発性記憶装置2から送信されたデータを暗号鍵8aにより復号し、復号したデータを処理する。
【0027】
{1.2.不揮発性メモリ3}
不揮発性メモリ3は、例えば、NANDフラッシュメモリであり、メモリコントローラ4の制御に従って、データの読み出しまたはデータの書き込みを行う。
【0028】
不揮発性メモリ3の記憶領域は、認証コード領域31と、ユーザ領域32とに区分される。認証コード領域31は、不揮発性メモリ3の認証に用いられるデータを記憶する。具体的には、認証コード領域31には、チャレンジ値31a及び参照値31bが記憶される。参照値31bは、後述する鍵生成回路44により生成されたMAC(Message Authentication Code)値である。チャレンジ値31a及び参照値31bは、暗号化されることなく、認証コード領域31に記憶される。
【0029】
ユーザ領域32には、ホスト装置1により処理される暗号化データ32a,32a,・・・が記憶される。暗号化データ32a,32a,・・・は、ホスト装置1により処理されるデータ(コンテンツデータや、ホスト装置1により生成されたデータなど)を暗号化したデータである。暗号化データ32aの生成には、レスポンス値44aが暗号鍵として用いられている。レスポンス値44aの詳細については、後述する。
【0030】
メモリコントローラ4は、不揮発性メモリ3の認証が成立しない場合、ユーザ領域32にアクセスすることができない。しかし、メモリコントローラ4は、不揮発性メモリ3の認証が成立しているか否かに関係なく、認証コード領域31にアクセスすることが可能である。
【0031】
{1.3.メモリコントローラ4の構成}
メモリコントローラ4は、ホスト装置1と不揮発性メモリ3との間で、読み出し用のコマンドと、不揮発性メモリ3から読み出されたデータとを中継する。また、メモリコントローラ4は、ホスト装置1と不揮発性メモリ3との間で、書き込みコマンドと書き込みデータとを中継する。
【0032】
メモリコントローラ4は、ホストI/F41と、メモリI/F42と、アクセス制御部43と、鍵生成回路44と、ステータス管理部45とを備える。
【0033】
ホストI/F41は、ホスト装置1とのインターフェース部である。ホストI/F41は、例えば、バスによりホスト装置1と接続される。ホストI/F41は、バスを介してホスト装置1から暗号化データ11を受信する。暗号化データ11は、認証コマンド12又は読み出しコマンド13が暗号鍵8aにより暗号化されたデータである。あるいは、暗号化データ11は、書き込みコマンド14及び書き込みデータ15が暗号鍵8aにより暗号化されたデータである。
【0034】
ホストI/F41は、バスを介して、暗号化/復号回路431により暗号化された暗号化データ21をホスト装置1に送信する。暗号化データ21は、例えば、平文データ22を暗号鍵8aにより暗号化したデータである。平文データ22は、レスポンス値44aを暗号鍵として、不揮発性メモリ3から読み出された暗号化データ32aを復号することにより生成される。
【0035】
メモリI/F42は、不揮発性メモリ3とのインターフェース部である。メモリI/F42は、コマンド制御部434から出力された読み出しコマンド16を不揮発性メモリ3に送信する。メモリI/F42は、読み出しコマンド16の応答として、不揮発性メモリ3から読み出された暗号化データ32aを受信する。
【0036】
メモリI/F42は、コマンド制御部434から出力された書き込みコマンド17と、暗号化/復号回路432により生成された暗号化データ18とを、不揮発性メモリ3に送信する。暗号化データ18は、レスポンス値44aを暗号鍵として、書き込みデータ15(平文データ)を暗号化することにより生成される。暗号化データ18は、書き込みコマンド17に基づいて、暗号化データ32aとしてユーザ領域32に記憶される。
【0037】
アクセス制御部43は、不揮発性メモリ3の認証が成立した場合、ユーザ領域32に対する読み出しアクセス及び書き込みアクセスを行う。アクセス制御部43は、暗号化/復号回路431,432と、デコーダ433と、コマンド制御部434とを備える。
【0038】
暗号化/復号回路431は、ホストI/F41を介してホスト装置1から受信した暗号化データ11を、暗号鍵8aを用いて復号する。暗号鍵8aは、メモリコントローラ4に予め設定されている。復号されたデータのうち、コマンドデータは、デコーダ433に供給される。コマンドデータは、本実施の形態では、認証コマンド12、読み出しコマンド13、及び書き込みコマンド14のいずれかである。なお、復号されたデータが書き込みコマンド14を含む場合、暗号化/復号回路431は、復号されたデータのうち、書き込みデータ15(平文データ)を暗号化/復号回路432に出力する。
【0039】
また、暗号化/復号回路431は、暗号鍵8aを用いて、暗号化/復号回路432から出力された平文データ22を暗号化する。
【0040】
暗号化/復号回路432は、書き込みデータ15を暗号化して暗号化データ18を生成する。暗号化/復号回路432は、鍵生成回路44から供給されるレスポンス値44aを暗号鍵として使用する。暗号化データ18は、メモリI/F42を介して不揮発性メモリ3に送信され、暗号化データ32aとしてユーザ領域32に書き込まれる。
【0041】
また、暗号化/復号回路432は、ユーザ領域32から読み出された暗号化データ32aをレスポンス値44aを暗号鍵として用いて復号して、平文データ22を生成する。平文データ22は、暗号化/復号回路431に入力される。
【0042】
デコーダ433は、暗号化/復号回路431からコマンドデータを取得してデコードする。デコーダ433は、デコードしたコマンドデータに基づいて、ホスト装置1により指示された処理(認証処理、読み出し処理、書き込み処理)を特定する。
【0043】
コマンド制御部434は、デコーダ433により特定された処理に応じたコマンド(読み出しコマンド16又は書き込みコマンド17)を、メモリI/F42を介して不揮発性メモリ3に送信する。
【0044】
ステータス管理部45は、不揮発性記憶装置2のステータスを管理し、必要に応じて不揮発性記憶装置2のステータスを示すステータス信号45aをホスト装置1に送信する。例えば、ステータス管理部45は、不揮発性メモリ3の認証が成立しなかった場合、不揮発性メモリ3の認証不成立を示すステータス信号45aをホスト装置1に送信する。
【0045】
なお、
図1では、ステータス信号45aが、ステータス管理部45から直接ホスト装置1へ送信されているが、実際には、ステータス信号45aは、暗号化/復号回路431により暗号化された上で送信される。
【0046】
鍵生成回路44は、暗号化/復号回路432で用いられる暗号鍵(レスポンス値44a)を生成する。また、鍵生成回路44は、メモリコントローラ4に接続された不揮発性メモリ3の正当性を検証する認証を行う。
【0047】
図2は、鍵生成回路44の構成を示す機能ブロック図である。
図2に示すように、鍵生成回路44は、PUF回路51と、認証部52とを備える。
【0048】
PUF回路51は、物理的複製困難関数が実装された回路であり、例えば、複数の論理回路により構成される。PUF回路51は、不揮発性メモリ3の認証コード領域31から取得したチャレンジ値31aを入力して、メモリコントローラ4の固有値(レスポンス値44a)を出力する。
【0049】
認証部52は、PUF回路51から出力されたレスポンス値44aと、不揮発性メモリ3の認証コード領域31から取得した参照値31bとを用いて、不揮発性メモリ3の正当性を検証する。認証部52は、HMAC(Hash-based Message Authentication Code)回路53と、比較器54とを備える。
【0050】
HMAC回路53は、レスポンス値44aを入力としたハッシュ関数を計算して、MAC値53aを出力する。
【0051】
比較器54は、HMAC回路53から出力するMAC値53aを、認証コード領域31から取得した参照値31bと比較する。比較器54は、その比較結果を示す認証結果信号54aをステータス管理部45、暗号化/復号回路432、及びコマンド制御部434に出力する。
【0052】
{2.メモリコントローラ4の動作}
{2.1.実行すべき処理の特定}
図3は、メモリコントローラ4の動作を示すフローチャートである。以下、
図3を参照しながら、メモリコントローラ4の動作について詳しく説明する。
【0053】
メモリコントローラ4は、ホスト装置1から暗号化データ11を受信した場合、
図3に示す処理を開始する。
【0054】
暗号化/復号回路431は、暗号鍵8aを用いて暗号化データ11を復号する(ステップS1)。暗号化/復号回路431は、復号されたデータの中からコマンドデータを抽出し、抽出したコマンドデータをデコーダ433に出力する。
【0055】
デコーダ433は、暗号化/復号回路431からコマンドを入力し、入力したコマンドをデコードする。デコーダ433は、デコードの結果に基づいて、実行すべき処理を特定する(ステップS2)。つまり、デコーダ433は、コマンドデータが認証コマンド12、読み出しコマンド13、及び書き込みコマンド14のいずれに該当するかを判断する。
【0056】
コマンドデータが認証コマンド12である場合(ステップS3においてYes)、メモリコントローラ4は、不揮発性メモリ3の正当性を検証する認証処理を実行する(ステップS4)。コマンドが認証コマンド12でない場合(ステップS3においてNo)、メモリコントローラ4は、コマンドデータが読み出しコマンド13であるか否かを判断する(ステップS5)。
【0057】
コマンドデータが読み出しコマンド13である場合(ステップS5においてYes)、メモリコントローラ4は、不揮発性メモリ3のユーザ領域32から暗号化データ32aを読み出す処理を実行する。コマンドデータが書き込みコマンド14である場合(ステップS5においてNo)、メモリコントローラ4は、不揮発性メモリ3のユーザ領域32に暗号化データ32aを書き込む処理を実行する。
【0058】
{2.2.認証処理(ステップS4)}
図4は、認証処理(ステップS4)のフローチャートである。以下、
図4を参照しながら、認証処理(ステップS4)について詳しく説明する。
【0059】
上述のように、認証処理(ステップS4)は、デコーダ433が認証コマンド12を受け付けたときに実行される。例えば、ホスト装置1は、不揮発性記憶装置2が接続された後に、定期的に認証コマンド12を送信する。これにより、不揮発性メモリ3の正当性を定期的に確認することができる。
【0060】
不揮発性記憶装置2の工場出荷前に、認証コード領域31には、チャレンジ値31aが記憶される。鍵生成回路44は、後述する処理により、認証コード領域31に記憶されたチャレンジ値31aを用いて参照値31b(MAC値)を生成する。鍵生成回路44により生成された参照値31bが、チャレンジ値31aとともに認証コード領域31に記憶された後に、不揮発性記憶装置2が出荷される。
【0061】
メモリコントローラ4は、不揮発性メモリ3の認証コード領域31からチャレンジ値31a及び参照値31bを取得する(ステップS41)。具体的には、コマンド制御部434が、チャレンジ値31a及び参照値31bを読み出すための読み出しコマンド16を、メモリI/F42を介して不揮発性メモリ3に出力する。認証コード領域31は、不揮発性メモリ3が認証されているか否かに関係なく、読み出しアクセスが可能な領域として設定されている。このため、不揮発性メモリ3は、読み出しコマンド16に応答して、チャレンジ値31a及び参照値31bをメモリコントローラ4に出力する。不揮発性メモリ3から読み出されたチャレンジ値31aは、PUF回路51に入力され、参照値31bは、比較器54に入力される。
【0062】
PUF回路51は、チャレンジ値31aを入力とした物理的複製困難関数を計算して、レスポンス値44aを生成する(ステップS42)。レスポンス値44aは、PUF回路51が実装されたメモリコントローラ4の固有値である。レスポンス値44aは、同一の製造ラインで生成された複数のメモリコントローラ4において互いに異なる。以下、この理由を説明する。
【0063】
PUF回路51を構成する半導体素子(FET(電界効果トランジスタ)など)に含まれる不純物の分布は、半導体素子ごとに異なる。不純物の分布を全ての半導体素子で揃えることは困難である。つまり、同じ回路構成を有する複数のPUF回路51であっても、複数のPUF回路51における物理的構造には微小なばらつきが存在する。レスポンス値44aは、PUF回路51が有する物理的特徴を利用して計算されるため、PUF回路51が実装されたメモリコントローラ4に固有の値となる。
【0064】
PUF回路51は、アービターPUF又はグリッチPUFのいずれかである。アービターPUFは、チャレンジ値31aを処理する際に発生する遅延のばらつきを利用して、レスポンス値44aを計算する。グリッチPUFは、チャレンジ値31aをそれぞれ処理する複数のゲート回路の遅延差を利用して、レスポンス値44aを計算する。
【0065】
次に、HMAC回路53は、PUF回路51により計算されたレスポンス値44aを取得し、取得したレスポンス値44aからMAC値53aを計算する(ステップS43)。MAC値53aの計算には、ハッシュ関数が用いられる。
【0066】
比較器54は、HMAC回路53からMAC値53aを取得し、取得したMAC値53aを参照値31bと比較する(ステップS44)。
【0067】
参照値31bがMAC値53aと一致する場合(ステップS45においてYes)、メモリコントローラ4は、不揮発性メモリ3の正当性が確認され、不揮発性メモリ3の認証が成立したと判断する。比較器54は、認証成立を示す認証結果信号54aを暗号化/復号回路432と、コマンド制御部434と、ステータス管理部45に出力する。
【0068】
ステータス管理部45は、認証成立を示す認証結果信号54aに基づいて、ホスト装置1に認証成立を示すステータス信号45aを送信する(ステップS46)。ホスト装置1は、認証成立を示すステータス信号45aを受けて、不揮発性メモリ3に対するデータの書き込み及びデータの読み出しが可能となったと判断する。
【0069】
暗号化/復号回路432は、認証成立を示す認証結果信号54aに基づいて、レスポンス値44aを暗号化処理及び復号処理のための暗号鍵に設定する(ステップS47)。コマンド制御部434は、認証成立を示す認証結果信号54aに基づいて、ユーザ領域32に対応するアドレスに対するアクセスが可能となったと判断する。
【0070】
このように、不揮発性メモリ3の認証が成立した場合、メモリコントローラ4は、不揮発性メモリ3のユーザ領域32に対するアクセスを実行することが可能となる。
【0071】
ステップS45において、参照値31bがMAC値53aと一致しない場合(ステップS45においてNo)、メモリコントローラ4は、不揮発性メモリ3の認証が成立しなかったと判断する。比較器54は、認証不成立を示す認証結果信号54aを暗号化/復号回路432と、コマンド制御部434と、ステータス管理部45に出力する。
【0072】
ステータス管理部45は、認証不成立を示す認証結果信号54aに基づいて、ホスト装置1に認証不成立を示すステータス信号45aを送信する(ステップS48)。ホスト装置1は、認証不成立を示すステータス信号45aを受けて、不揮発性メモリ3に対するデータの書き込み及びデータの読み出しができないと判断する。
【0073】
また、暗号化/復号回路432は、認証不成立を示す認証結果信号54aを受けた場合、レスポンス値44aを暗号鍵に設定しない。また、コマンド制御部434は、認証不成立を示す認証結果信号54aを受けた場合、ユーザ領域32に対してアクセスする読み出しコマンド16及び書き込みコマンド17を不揮発性メモリ3に出力しない。
【0074】
このように、メモリコントローラ4は、PUF回路51により生成されるレスポンス値44aと、不揮発性メモリ3に記憶された参照値31bとを用いて、不揮発性メモリ3を認証する。レスポンス値44aは、PUF回路51の物理的特徴に依存したメモリコントローラ4の固有値であり、レスポンス値44aから計算される参照値31bも、メモリコントローラ4の固有値である。従って、メモリコントローラ4と同一の構成を有するメモリコントローラは、レスポンス値44a及び参照値31bを再現することができない。
【0075】
不揮発性メモリ3とメモリコントローラ4とを備える不揮発性記憶装置2を複製した場合、メモリコントローラ4で計算されたレスポンス値44a及び参照値31bが、複製された不揮発性記憶装置2の不揮発性メモリに記憶される。しかし、複製された不揮発性記憶装置2において、メモリコントローラは、レスポンス値44a及び参照値31bを再現することができないため、不揮発性メモリ3を認証することができない。
【0076】
このように、メモリコントローラ4がPUF回路51により計算されたレスポンス値4
4aを用いて不揮発性メモリ3の認証を行うことにより、違法に複製された不揮発性記憶装置2の使用を妨げることが可能となる。
【0077】
{2.3.読み出し処理(ステップS6)}
以下、メモリコントローラ4が実行する読み出し処理(ステップS6)について説明する。読み出し処理(ステップS6)は、上述の認証処理(ステップS4)により、不揮発性メモリ3の認証が成立したと判断された後に実行される。
【0078】
図3に示すように、実行すべき処理が読み出しである場合(ステップS5においてYes)、メモリコントローラ4は、読み出し処理(ステップS6)を実行する。
【0079】
メモリコントローラ4において、アドレス変換部(図示省略)が、読み出しコマンド13に含まれる論理アドレスを物理アドレスに変換する。コマンド制御部434は、メモリI/F42を介して、物理アドレスを含む読み出しコマンド16を不揮発性メモリ3に送信する。
【0080】
不揮発性メモリ3は、メモリコントローラ4から送信された読み出しコマンド16に基づいて、ユーザ領域32から暗号化データ32aを読み出す。不揮発性メモリ3は、読み出した暗号化データ32aを、メモリI/F42を介してメモリコントローラ4へ送信する。
【0081】
暗号化/復号回路432は、不揮発性メモリ3から送信された暗号化データ32aを復号して、平文データ22を生成する。暗号化データ32aの復号の際に、レスポンス値44aが暗号鍵として用いられる。暗号化/復号回路432は、平文データ22を暗号化/復号回路431に出力する。暗号化/復号回路431は、暗号鍵8aを用いて、平文データ22を暗号化して暗号化データ21を生成する。暗号化データ21は、ホストI/F41を介してホスト装置1へ送信される。
【0082】
{2.4.書き込み処理(ステップS7)}
以下、メモリコントローラ4が実行する書き込み処理(ステップS7)について説明する。書き込み処理(ステップS7)は、読み出し処理(ステップS6)と同様に、上述の認証処理(ステップS4)により、不揮発性メモリ3の認証が成立したと判断された後に実行される。
【0083】
図3に示すように、実行すべき処理が書き込みである場合(ステップS5においてNo)、メモリコントローラ4は、書き込み処理(ステップS7)を実行する。
【0084】
メモリコントローラ4において、アドレス変換部(図示省略)が、書き込みコマンド14に含まれる論理アドレスを物理アドレスに変換する。コマンド制御部434は、メモリI/F42を介して、物理アドレスを含む書き込みコマンド17を不揮発性メモリ3に送信する。
【0085】
また、暗号化/復号回路431は、復号された暗号化データ11に含まれる書き込みデータ15を取得し、取得した書き込みデータ15を暗号化/復号回路432に出力する。暗号化/復号回路432は、レスポンス値44aを暗号鍵として用いて書き込みデータ15を暗号化して、暗号化データ18を生成する。生成された暗号化データ18は、メモリI/F42を介して、不揮発性メモリ3に送信される。不揮発性メモリ3は、コマンド制御部434から送信された書き込みコマンド17に基づいて、暗号化データ18を不揮発性メモリ3に記憶する。
【0086】
[第2の実施の形態]
{1.メモリシステムの構成}
図5は、本発明の第2の実施の形態に係るメモリシステム200の構成を示す機能ブロック図である。
図5に示すメモリシステム200において、不揮発性記憶装置2は、メモリコントローラ4に代えて、メモリコントローラ5を備える。
【0087】
メモリコントローラ5は、ホスト装置1からの指示に応じて、不揮発性メモリ3の認証に用いられるチャレンジ値31a及び参照値31bを更新する。チャレンジ値31aは、ホスト装置1により指定された値に更新される。
【0088】
以下、上記第1の実施の形態に係るメモリコントローラ4と異なる点を中心に、メモリコントローラ5について詳しく説明する。
【0089】
{2.メモリコントローラ5の構成}
メモリコントローラ5は、ホストI/F41と、メモリI/F42と、アクセス制御部43と、鍵生成回路44と、ステータス管理部45とに加えて、レジスタ46を備える。レジスタ46は、認証コード更新コマンド19に含まれる更新用チャレンジ値61を一時的に格納する。認証コード更新コマンド19は、認証コード領域31に記憶されたチャレンジ値31a及び参照値31bの更新する処理(更新処理)を指示するコマンドである。
【0090】
{3.メモリコントローラ5の動作}
メモリコントローラ5は、メモリコントローラ4と同様に、認証処理(ステップS4)、読み出し処理(ステップS6)、及び書き込み処理(ステップS7)を実行する。
【0091】
ホスト装置1は、更新用チャレンジ値61を含む認証コード更新コマンド19を暗号鍵8aにより暗号化して暗号化データ11を生成し、メモリコントローラ5に送信する。メモリコントローラ5において、暗号化/復号回路431は、暗号化データを復号し、復号されたデータからコマンドデータを抽出する。デコーダ433は、抽出されたコマンドデータをデコードして、実行すべき処理が更新処理であると判断する。
【0092】
図6は、メモリコントローラ5により実行される更新処理のフローチャートである。メモリコントローラ5は、暗号化/復号回路431により復号されたデータに含まれる更新用チャレンジ値61を一時的に保存する(ステップS80)。具体的には、暗号化/復号回路431は、暗号化データ11から復号されたデータの中から、更新用チャレンジ値61を取得してレジスタ46に供給する。レジスタ46は、更新用チャレンジ値61を格納する。
【0093】
メモリコントローラ5は、ステップS81〜S85を実行して、不揮発性メモリ3を認証する。ステップS81〜S85は、
図4に示すステップS41〜S45と同じである。つまり、メモリコントローラ5は、現時点で、認証コード領域31に記憶されているチャレンジ値31a及び参照値31bを用いて、不揮発性メモリ3の正当性を判断する。
【0094】
参照値31bがHMAC回路53により計算されたMAC値53aに一致する場合(ステップS85においてYes)、不揮発性メモリ3の認証が成立する。この場合、メモリコントローラ5は、ステップS86〜S89を実行して、認証コード領域31に記憶されたチャレンジ値31a及び参照値31bを更新する。
【0095】
具体的には、メモリコントローラ5は、認証コード領域31に記憶されたチャレンジ値31aを、レジスタ46に記憶された更新用チャレンジ値61で上書きする(ステップS86)。
【0096】
なお、暗号化/復号回路432に設定された暗号鍵(レスポンス値44a)は、更新されない。ユーザ領域32に記憶されている暗号化データ32a,32a,・・・が、更新される前のチャレンジ値31aから生成されたレスポンス値44aにより暗号化されているためである。
【0097】
鍵生成回路44は、レジスタ46から更新用チャレンジ値61を取得する。PUF回路51は、更新用チャレンジ値61を入力とした物理的複製困難関数を計算して、レスポンス値44aを新たに計算する(ステップS87)。HMAC回路53は、PUF回路51により計算された新たなレスポンス値44aからMAC値53aを新たに計算する(ステップS88)。メモリコントローラ5は、認証コード領域31に記憶されている参照値31bを新たに計算されたMAC値53aで上書きする(ステップS89)。
【0098】
その後、ステータス管理部45は、チャレンジ値31a及び参照値31bの更新が完了したことを示すステータス信号45aをホスト装置1に送信する(ステップS90)。
【0099】
参照値31bがHMAC回路53により計算されたMAC値53aに一致しない場合(ステップS85においてNo)、不揮発性メモリ3の認証が成立しない。この場合、ステータス管理部45は、チャレンジ値31a及び参照値31bの更新ができないことを示すステータス信号45aをホスト装置1に送信する(ステップS91)。
【0100】
このように、本実施の形態に係るメモリシステム200は、不揮発性メモリ3の認証に用いられるチャレンジ値31a及び参照値31bを更新することができる。これにより、メモリシステム200のセキュリティを向上させることができる。
【0101】
なお、第1の実施の形態において、PUF回路51が、チャレンジ値31aを入力として物理的複製困難関数を計算する例を説明したが、これに限られない。メモリコントローラ4は、チャレンジ値31aを用いずに不揮発性メモリの認証を実行してもよい。この場合、PUF回路は、チャレンジ値31aを使用しないSRAM PUFが実装されていればよい。
【0102】
第2の実施の形態において、ホスト装置1が、更新用チャレンジ値61を指定する場合を例に説明したが、これに限られない。メモリコントローラ5が、認証コード更新コマンド19に応じて、更新用チャレンジ値61を作成してもよい。例えば、メモリコントローラ5は、認証コード領域31からチャレンジ値31aを取得し、取得したチャレンジ値31aをインクリメントすることにより、更新用チャレンジ値61を作成してもよい。なお、更新用チャレンジ値61の作成方法は、チャレンジ値31aのインクリメントに限定されず、他の計算方法を用いてもよい。あるいは、メモリコントローラ5は、乱数発生器を用いて、更新用チャレンジ値61を作成してもよい。
【0103】
第2の実施の形態において、チャレンジ値31a及び参照値31bが更新された場合であっても、暗号化/復号回路432に設定された暗号鍵(レスポンス値44a)が更新されない例を説明したが、これに限られない。メモリコントローラ5は、チャレンジ値31aの更新時に、暗号化/復号回路432に設定された暗号鍵を更新してもよい。
【0104】
この場合、更新用チャレンジ値61から計算されたレスポンス値44aが、新たな暗号鍵として暗号化/復号回路432に設定される。暗号化/復号回路432は、暗号鍵の履歴を管理するとともに、ユーザ領域32に記憶された暗号化データ32aと暗号鍵との対応関係を示すテーブルを保持する。暗号化/復号回路432は、不揮発性メモリ3のユーザ領域32から読み出された暗号化データ32aを復号する場合、上記の対応関係を示すテーブルに基づいて復号に用いる暗号鍵を特定すればよい。
【0105】
上記第1及び第2の実施の形態において、参照値31bがMAC値である場合を例に説明したが、これに限られない。例えば、メモリコントローラ4,5は、参照値31bとしてレスポンス値44aを用いてもよい。
【0106】
上記第1及び第2の実施の形態で説明したメモリコントローラ4,5の一部又は全部は、集積回路(例えば、LSI、システムLSI等)として実現されるものであってもよい。
【0107】
また、上記第1及び第2の実施の形態における各処理の一部又は全部をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0108】
また、上記第1及び第2の実施の形態で説明した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリを挙げることができる。