以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
[第1の実施の形態]
{1.メモリシステムの構成}
{1.1.全体構成}
図1は、本発明の第1の実施の形態に係るメモリシステム100の構成を示す機能ブロック図である。図1に示すように、メモリシステム100は、ホスト装置10と、半導体記憶装置20とを備える。半導体記憶装置20は、メモリ装置20A,20Bを備える。メモリ装置20Aは、メモリコントローラ3Aと、不揮発性メモリ4Aとを備える。メモリ装置20Bは、メモリコントローラ3Bと、不揮発性メモリ4Bとを備える。
不揮発性メモリ4A及び4Bは、例えば、NANDフラッシュメモリであり、ホスト装置10により使用されるデータ(ユーザデータ)を記憶する。メモリコントローラ3Aは、ホスト装置10から送信される指示データ11Aの内容に基づいて、不揮発性メモリ4Aに対するアクセスを制御する。同様に、メモリコントローラ3Bは、ホスト装置10から送信される指示データ11Bの内容に基づいて、不揮発性メモリ4Bに対するアクセスを制御する。
ただし、メモリコントローラ3A及び3Bは、不揮発性メモリ4A及び4Bに対するユーザデータの読み出し又は書き込みを実行する前に、不揮発性メモリ4A及び4Bをそれぞれ認証する。不揮発性メモリ4A及び4Bの両者の認証が成立した場合、メモリコントローラ3A及び3Bは、ユーザデータの読み出し及び書き込みを実行することができる。
認証に関するデータとして、不揮発性メモリ4Aは、チャレンジ値71A及び参照値72Bを格納し、不揮発性メモリ4Bは、チャレンジ値71B及び参照値72Aを格納する。チャレンジ値71A及び参照値72Aは、不揮発性メモリ4Aの認証に用いられる。チャレンジ値71B及び参照値72Bは、不揮発性メモリ4Bの認証に用いられる。参照値72Aは、メモリコントローラ3Aで生成されるMAC(Message Authentication Code)値であり、参照値72Bは、メモリコントローラ3Bで生成されるMAC値である。MAC値の生成の詳細については、後述する。
メモリコントローラ3Aは、チャレンジ値71Aを入力とした物理的複製困難関数を用いてレスポンス値を生成し、生成したレスポンス値からMAC値を計算する。メモリコントローラ3Aは、計算されたMAC値を不揮発性メモリ4Bに格納された参照値72Aと比較して、不揮発性メモリ4Aを認証する。
同様に、メモリコントローラ3Bは、チャレンジ値71Bを入力とした物理的複製困難関数を用いてレスポンス値を生成し、生成したレスポンス値からMAC値を計算する。メモリコントローラ3Bは、計算されたMAC値を不揮発性メモリ4Aに格納された参照値72Bと比較して、不揮発性メモリ4Bを認証する。
従って、メモリ装置20A,20Bの組み合わせでなければ、不揮発性メモリ4A,4Bの両者の認証を成立させることができない。従って、半導体記憶装置20の複製を困難とすることができる。
{1.2.ホスト装置10の構成}
ホスト装置10は、半導体記憶装置20の工場出荷前では、テスタなどである。ホスト装置10は、半導体記憶装置20の工場出荷後では、ユーザが使用するPC(Personal Computer)、スマートフォン、タブレット端末などである。
ホスト装置10は、例えば、バス(図示省略)を介して、半導体記憶装置20と電気的に接続されている。ホスト装置10は、コマンド制御部11と、データ取得部12と、バッファ13A,13Bとを備える。
コマンド制御部11は、メモリコントローラ3Aが実行すべき処理を示す指示データ11Aをメモリコントローラ3Aに送信する。コマンド制御部11は、メモリコントローラ3Bが実行すべき処理を示す指示データ11Bをメモリコントローラ3Bに送信する。例えば、コマンド制御部11は、ホスト装置10の図示しないCPU(Central Processing Unit)からユーザデータの読み出し指示を受け付けた場合、読み出し対象のユーザデータがメモリ装置20A及び20Bのどちらに記憶されているかを特定し、特定したメモリ装置に指示データを送信する。
データ取得部12は、メモリコントローラ3A,3Bから送信される応答データ12A,12Bを受信し、受信した応答データ12A,12Bをバッファ13A,13Bに一時的に保存する。データ取得部12は、バッファ13A又は13Bに保存されたデータをホスト装置10のメモリ等へ出力する。
バッファ13Aは、メモリコントローラ3Aから送信された応答データ12Aを一時的に格納する。バッファ13Bは、メモリコントローラ3Bから送信された応答データ12Bを一時的に格納する。
{1.3.メモリ装置20Aの構成}
(不揮発性メモリ4A)
図2は、メモリ装置20Aの構成を示す機能ブロック図である。図2に示すように、不揮発性メモリ4Aの記憶領域は、認証コード領域41Aと、ユーザ領域42Aとに区分される。
認証コード領域41Aは、不揮発性メモリ4A,4Bの認証に用いられるデータを記憶する。具体的には、認証コード領域41Aには、チャレンジ値71A及び参照値72Bが記憶される。チャレンジ値71Aは、不揮発性メモリ4Aの認証に用いられる。参照値72Bは、メモリコントローラ3Bにより生成されるMAC値であり、不揮発性メモリ4Bの認証に用いられるパラメータである。参照値72Bは、メモリコントローラ3BのPUF回路35B(図3参照)により計算されたレスポンス値73Bから生成される。チャレンジ値71A及び参照値72Bは、暗号化されることなく認証コード領域41Aに記憶される。
ユーザ領域42Aには、ユーザデータ43A,43A,・・・が記憶される。ユーザデータ43Aは、ホスト装置10により処理されるデータであり、例えば、動画像データ、音楽データなどのコンテンツデータである。
(メモリコントローラ3A)
メモリコントローラ3Aは、ホスト装置10と不揮発性メモリ4Aとの間で、読み出し用のコマンドと、不揮発性メモリ4Aから読み出されたデータとを中継する。また、メモリコントローラ3Aは、ホスト装置10と不揮発性メモリ4Aとの間で、書き込みコマンドと書き込みデータとを中継する。
メモリコントローラ3Aは、ホストI/F31Aと、メモリI/F32Aと、コマンドデコーダ33Aと、アクセス制御部34Aと、PUF回路35Aと、認証部36Aと、認証コード管理部37Aとを備える。
ホストI/F31Aは、ホスト装置10とのインタフェース部である。ホストI/F31Aは、バスを介してホスト装置10から指示データ11Aを受信する。指示データ11Aが書き込み指示である場合、指示データ11Aは、書き込みコマンドと、書き込み対象のユーザデータ43Aとを含む。指示データ11Aに含まれるユーザデータ43Aは、ユーザ領域42Aに書き込まれる。指示データ11Aが読み出し指示である場合、指示データ11Aは、読み出しコマンドを含む。また、ホスト装置10がメモリコントローラ3Aに認証に関する指示を出力する場合、指示データ11Aは、認証に関するコマンドを含む。認証に関するコマンドには、複数の種類が存在する。
また、ホストI/F31Aは、バスを介して、応答データ12Aをホスト装置10に送信する。応答データ12Aは、例えば、不揮発性メモリ4Aから読み出されたユーザデータ43Aを含む。
メモリI/F32Aは、不揮発性メモリ4Aとのインタフェース部である。メモリI/F32Aは、アクセス制御部34Aから出力された読み出しコマンド21Aを不揮発性メモリ4Aに送信する。メモリI/F32Aは、読み出しコマンド21Aの応答として、ユーザ領域42Aから読み出されたユーザデータ43Aを受信する。
メモリI/F32Aは、アクセス制御部34Aから出力された書き込みコマンド22A及びユーザデータ43Aを、不揮発性メモリ4Aに送信する。ユーザデータ43Aは、書き込みコマンド22Aに基づいてユーザ領域42Aに記憶される。
コマンドデコーダ33Aは、ホストI/F31Aから指示データ11Aを取得し、取得した指示データ11Aに含まれるコマンドを抽出して解析する。解析の結果、メモリコントローラ3Aが実行すべき処理が特定される。
アクセス制御部34Aは、メモリコントローラ3Aの各機能部を制御する。また、アクセス制御部34Aは、不揮発性メモリ4Aの認証が成立した場合、ユーザ領域42Aに対する読み出しアクセス及び書き込みアクセスを実行する。認証が成立したか否かは、後述する比較結果信号77Aに基づいて判断される。
PUF回路35Aは、物理的複製困難関数が実装された回路であり、例えば、複数の論理回路により構成される。PUF回路35Aは、認証コード領域41Aに記憶されたチャレンジ値71Aを用いて物理的複製困難関数を計算して、メモリコントローラ3Aの固有値(レスポンス値73A)を取得する。
PUF回路35Aは、アービターPUF又はグリッチPUFのいずれかである。アービターPUFは、チャレンジ値71Aを処理する際に発生する遅延のばらつきを利用して、物理的複製困難関数を計算する。グリッチPUFは、チャレンジ値71Aをそれぞれ処理する複数のゲート回路の遅延差を利用して、物理的複製困難関数を計算する。後述するPUF回路35B(図3参照)も同様である。
認証部36Aは、PUF回路35Aにより取得されたレスポンス値73Aと、ホスト装置10を介してメモリ装置20Bから取得した参照値72Aとを用いて、不揮発性メモリ4Aを認証する。認証部36Aは、分割部361Aと、HMAC回路362Aと、比較器363Aとを備える。
分割部361Aは、PUF回路35Aにより取得されたレスポンス値73Aを入力データ74Aと暗号鍵75Aとに分割する。
HMAC回路362Aは、HMACアルゴリズムを実行する回路である。HMAC回路362Aは、実装されたハッシュ関数と分割部361Aにより生成された暗号鍵75Aとの組み合わせであるHMACアルゴリズムを実行することにより、入力データ74AからMAC値76Aを生成する。
比較器363Aは、HMAC回路362Aにより生成されたMAC値76Aを、コマンドデコーダ33Aから入力した参照値72A(不揮発性メモリ4Bに格納された参照値72A)と比較し、その比較結果を示す比較結果信号77Aを生成する。比較結果信号77Aは、不揮発性メモリ4Aの認証が成立したか否かを示す信号である。
認証コード管理部37Aは、認証コード領域41Aに対する読み出しアクセス及び書き込みアクセスを制御する。認証コード領域41Aに対するアクセスは、指示データ11Aに含まれるコマンドとして、認証に関するコマンドが特定された場合に実行される。
{1.4.メモリ装置20Bの構成}
(不揮発性メモリ4B)
図3は、メモリ装置20Bの構成を示す機能ブロック図である。図3に示すように、不揮発性メモリ4Bの記憶領域は、認証コード領域41Bと、ユーザ領域42Bとに区分される。ユーザ領域42Bには、ユーザデータ43B,43B,・・・が記憶される。
認証コード領域41Bには、チャレンジ値71B及び参照値72Aが記憶される。チャレンジ値71Bは、不揮発性メモリ4Bの認証に用いられる。参照値72Aは、メモリコントローラ3Aにより生成されたMAC値であり、不揮発性メモリ4Aの認証に用いられるパラメータである。チャレンジ値71B及び参照値72Aは、暗号化されることなく認証コード領域41Bに記憶される。
(メモリコントローラ3B)
メモリコントローラ3Bは、ホスト装置10と不揮発性メモリ4Bとの間で、読み出し用のコマンドと、不揮発性メモリ4Bから読み出されたデータとを中継する。また、メモリコントローラ3Bは、ホスト装置10と不揮発性メモリ4Bとの間で、書き込みコマンドと書き込みデータとを中継する。
メモリコントローラ3Bは、ホストI/F31Bと、メモリI/F32Bと、コマンドデコーダ33Bと、アクセス制御部34Bと、PUF回路35Bと、認証部36Bと、認証コード管理部37Bとを備える。メモリコントローラ3Bの各機能部は、メモリコントローラ3Aの各機能部にそれぞれ対応する。このため、メモリコントローラ3Bの各機能部の説明を一部省略する。
ホストI/F31Bは、ホスト装置10とのインタフェース部であり、バスを介してホスト装置10から指示データ11Bを受信する。また、ホストI/F31Bは、バスを介して、応答データ12Bをホスト装置10に送信する。
メモリI/F32Bは、不揮発性メモリ4Bとのインタフェース部である。メモリI/F32Bは、読み出しコマンド21Bを不揮発性メモリ4Bに送信し、ユーザ領域42Bから読み出されたユーザデータ43Bを受信する。メモリI/F32Bは、書き込みコマンド22B及びユーザデータ43Bを、不揮発性メモリ4Bに送信する。
コマンドデコーダ33Bは、指示データ11Bに含まれるコマンドを抽出し、メモリコントローラ3Bが実行すべき処理を特定する。アクセス制御部34Bは、メモリコントローラ3Bの各機能部を制御する。また、アクセス制御部34Bは、不揮発性メモリ4Bの認証が成立した場合、ユーザ領域42Bに対する読み出しアクセス及び書き込みアクセスを実行する。
PUF回路35Bは、物理的複製困難関数が実装された回路である。PUF回路35Bは、認証コード領域41Bに記憶されたチャレンジ値71Bを入力とした物理的複製困難関数を計算して、メモリコントローラ3Bの固有値(レスポンス値73B)を取得する。PUF回路35Bは、PUF回路35Aと同じ回路構成を有してもよいし、異なる回路構成を有していてもよい。
認証部36Bは、PUF回路35Bにより取得されたレスポンス値73Bと、ホスト装置10を介してメモリ装置20Aから取得した参照値72Bとを用いて、不揮発性メモリ4Bを認証する。認証部36Bは、分割部361Bと、HMAC回路362Bと、比較器363Bとを備える。
分割部361Bは、PUF回路35Bにより生成されたレスポンス値73Bを入力データ74Bと暗号鍵75Bとに分割する。HMAC回路362Bは、実装されたハッシュ関数と分割部361Bにより生成された暗号鍵75Bとの組み合わせであるHMACアルゴリズムを実行することにより、入力データ74BからMAC値76Bを生成する。比較器363Bは、HMAC回路362Bにより生成されたMAC値76Bを、コマンドデコーダ33Bから入力した参照値72B(不揮発性メモリ4Aに格納された参照値72B)と比較し、その比較結果を示す比較結果信号77Bを生成する。
認証コード管理部37Bは、認証コード領域41Bに対する読み出しアクセス及び書き込みアクセスを制御する。
{2.メモリシステム100の動作}
以下、メモリシステム100の動作について詳しく説明する。具体的には、メモリシステム100において実行される初期化処理、認証処理、再初期化処理についてそれぞれ説明する。
初期化処理は、認証コード領域41Aにチャレンジ値71A及び参照値72Bを設定し、認証コード領域41Bにチャレンジ値71B及び参照値72Aを設定する処理である。認証処理は、メモリコントローラ3Aが不揮発性メモリ4Aを認証し、メモリコントローラ3Bが不揮発性メモリ4Bを認証する処理である。再初期化処理は、認証コード領域41Aに設定されたチャレンジ値71A及び参照値72Bと、認証コード領域41Bに設定されたチャレンジ値71B及び参照値72Aとをそれぞれ更新する処理である。
以下、上記3つの処理について詳しく説明する。
{2.1.初期化処理}
図4は、メモリシステム100において実行される初期化処理の示すシーケンス図である。初期化処理は、半導体記憶装置20の工場出荷前に行われる。初期化処理では、テスタがホスト装置10として、半導体記憶装置20に接続される。
図4に示す処理が開始される時点で、チャレンジ値71A及び参照値72Bは、認証コード領域41Aに設定されていない。チャレンジ値71B及び参照値72Aは、認証コード領域41Bに設定されていない。
(チャレンジ値及び参照値(MAC値)の生成)
ホスト装置10は、初期化コマンド51とチャレンジ値71Aとを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS101)。ホスト装置10は、初期化コマンド51とチャレンジ値71Bとを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS102)。初期化コマンド51は、チャレンジ値の設定を指示するコマンドである。
最初に、初期化コマンド51とチャレンジ値71Aとを含む指示データ11Aを受信したメモリコントローラ3Aの動作について説明する。
メモリコントローラ3Aは、指示データ11Aに含まれる初期化コマンド51に基づいて、ステップS103〜S105を実行する。具体的には、メモリコントローラ3Aにおいて、コマンドデコーダ33Aは、ホストI/F31Aを介して指示データ11Aを入力する。コマンドデコーダ33Aは、初期化コマンド51及びチャレンジ値71Aを指示データ11Aから抽出し、抽出した初期化コマンド51を解析して実行すべき処理を特定する。
コマンドデコーダ33Aは、抽出されたチャレンジ値71Aを認証コード管理部37Aに出力する。認証コード管理部37Aは、コマンドデコーダ33Aから出力されたチャレンジ値71Aを認証コード領域41Aの所定アドレスに書き込む(ステップS103)。メモリコントローラ3Aは、チャレンジ値71AからMAC値76Aを生成するために、MAC値生成処理を実行する(ステップS104)。
図5は、MAC値生成処理(ステップS104及びS107)のフローチャートである。図5に示すように、PUF回路35Aは、チャレンジ値71Aを認証コード管理部37Aから取得する(ステップS41)。PUF回路35Aは、チャレンジ値71Aを入力とした物理的複製困難関数を計算して、レスポンス値73Aを生成する(ステップS42)。レスポンス値73Aは、PUF回路35Aが実装されたメモリコントローラ3Aの固有値である。
分割部361Aは、PUF回路35Aにより生成されたレスポンス値73Aを分割して、入力データ74A及び暗号鍵75Aを取得する(ステップS43)。例えば、レスポンス値73Aが256ビットのデータである場合、分割部361Aは、レスポンス値73Aのうち先頭の1ビット目から128ビット目までのデータを暗号鍵75Aとして抽出する。入力データ74Aは、レスポンス値73Aのうち129ビット目から末尾の256ビット目までのデータである。
HMAC回路362Aは、分割部361Aにより生成された入力データ74A及び暗号鍵75Aを用いて、MAC値76Aを生成する(ステップS44)。HMAC回路362Aは、暗号鍵75Aと実装されたハッシュ関数との組み合わせにより実現されるHMACアルゴリズムを実行することにより、入力データ74AからMAC値76Aを生成する。これにより、MAC値生成処理(ステップS104)が終了する。
再び、図4を参照する。認証コード管理部37Aは、初期化コマンド51に対する応答として、生成されたMAC値76Aをホスト装置10に送信する(ステップS105)。データ取得部12は、メモリコントローラ3Aから送信されたMAC値76Aを、参照値72Aとしてバッファ13Aに一時的に記憶する。
次に、初期化コマンド51とチャレンジ値71Bとを含む指示データ11Bを受信したメモリコントローラ3Bの動作を説明する。以下、上述のメモリコントローラ3Aの動作と共通する部分の説明を、一部省略する。
コマンドデコーダ33Bは、初期化コマンド51及びチャレンジ値71Bを指示データ11Bから抽出する。メモリコントローラ3Bは、抽出された初期化コマンド51に基づいて、ステップS106〜S108を実行する。
認証コード管理部37Bは、抽出されたチャレンジ値71Bを認証コード領域41Bの所定のアドレスに格納する(ステップS106)。メモリコントローラ3Bは、図5に示すMAC値生成処理を実行して、チャレンジ値71BからMAC値76Bを生成する(ステップS107)。
具体的には、図5に示すように、PUF回路35Bは、チャレンジ値71Bを認証コード管理部37Aから取得する(ステップS41)。PUF回路35Bは、取得したチャレンジ値71Bを入力とした物理的複製困難関数を計算してレスポンス値73Bを生成する(ステップS42)。レスポンス値73Bは、PUF回路35Bが実装されたメモリコントローラ3Bの固有値である。
分割部361Bは、レスポンス値73Bを分割して入力データ74B及び暗号鍵75Bを生成する(ステップS43)。HMAC回路362Bは、暗号鍵75Bと実装されたハッシュ関数との組み合わせであるHMACアルゴリズムを実行して、入力データ74BからMAC値76Bを生成する(ステップS44)。
図4に示すように、認証コード管理部37Bは、初期化コマンド51に対する応答として、生成されたMAC値76Bをホスト装置10に送信する(ステップS108)。データ取得部12は、メモリコントローラ3Bから送信されたMAC値76Bを、参照値72Bとしてバッファ13Bに一時的に記憶する。
後述するように、PUF回路35A及び35Bが同じ回路構成を有していても、レスポンス値73A及び73Bは、互いに異なる値を有する。従って、HMAC回路362A及び362Bが同じ回路構成を有していたとしても、参照値72A(MAC値76A)は、参照値72B(MAC値76B)と同じ値にならない。
(参照値の格納)
ホスト装置10は、参照値72A,72Bをバッファ13A,13Bに格納した後に、参照値格納コマンド52と参照値72Bとを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS109)。ホスト装置10は、参照値格納コマンド52と参照値72Aとを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS110)。参照値格納コマンド52は、このコマンドとともに送信された参照値を認証コード領域に格納することを指示するコマンドである。
メモリコントローラ3Aは、受信した指示データ11Aに含まれる参照値72Bを不揮発性メモリ4Aに格納する(ステップS111)。具体的には、コマンドデコーダ33Aは、ステップS109で送信された指示データ11Aから、参照値格納コマンド52及び参照値72Bを抽出する。コマンドデコーダ33Aは、抽出された参照値格納コマンド52に基づいて、抽出された参照値72Bを認証コード管理部37Aに出力する。認証コード管理部37Aは、コマンドデコーダ33Aから入力した参照値72Bを認証コード領域41Aの予め設定されたアドレスに格納する。その後、認証コード管理部37Aは、参照値格納コマンド52の応答として、参照値72Bの格納が完了したことをホスト装置10に通知する(ステップS112)。
同様に、メモリコントローラ3Bにおいて、認証コード管理部37Bは、指示データ11Bに含まれる参照値72Aを認証コード領域41Bに格納する(ステップS113)。その後、認証コード管理部37Bは、参照値72Aの格納が完了したことをホスト装置10に通知する(ステップS114)。
ホスト装置10は、メモリコントローラ3A,3Bから参照値72A,72Bの格納が完了したことを通知された場合、初期化処理が終了したと判断する。初期化処理の終了後、半導体記憶装置20は、工場から出荷される。
{2.2.認証処理}
図6は、メモリシステム100において実行される認証処理のシーケンス図である。認証処理において、ホスト装置10は、半導体記憶装置20を購入したユーザのPC、スマートフォン、タブレット端末などである。
ホスト装置10は、電源がオンされた時、あるいは、半導体記憶装置20がホスト装置10に接続された時に、メモリコントローラ3A,3Bに対して不揮発性メモリ4A,4Bの認証を指示する。あるいは、ホスト装置10は、一定の時間間隔で、メモリコントローラ3A,3Bに対して不揮発性メモリ4A,4Bの認証を指示する。
以下、ホスト装置10に接続された半導体記憶装置20の電源がオンされた場合を例に説明する。半導体記憶装置20の電源がオンされた直後は、不揮発性メモリ4A,4Bの両者の認証は成立していない。従って、メモリコントローラ3A,3Bは、ホスト装置10の指示に応じて、ユーザ領域42A,42Bからのユーザデータ43A,43Bの読み出し、ユーザ領域42A,42Bへのユーザデータ43A,43Bの書き込みを実行しない。
{2.2.1.不揮発性メモリ4Bの認証}
最初に、不揮発性メモリ4Bの認証が実行される(ステップS201〜S206)。ホスト装置10は、参照値取得コマンド53Aを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS201)。参照値取得コマンド53Aは、不揮発性メモリ4Aに格納された参照値72Bの読み出しを指示するコマンドである。
メモリコントローラ3Aは、指示データ11Aに含まれる参照値取得コマンド53Aに基づいて、認証コード領域41Aから参照値72Bを読み出す(ステップS202)。具体的には、コマンドデコーダ33Aが、受信した指示データ11Aを解析して、参照値取得コマンド53Aを抽出する。コマンドデコーダ33Aは、抽出した参照値取得コマンド53Aに基づいて、認証コード管理部37Aに参照値72Bの読み出しを指示する。認証コード管理部37Aは、コマンドデコーダ33Aの指示に応じて、認証コード領域41Aから参照値72Bを読み出す。
認証コード管理部37Aは、参照値取得コマンド53Aの応答として、認証コード領域41Aから読み出した参照値72Bをそのままホスト装置10に送信する(ステップS203)。データ取得部12は、メモリコントローラ3Aから受信した参照値72Bをバッファ13Aに格納する。このようにして、ホスト装置10は、不揮発性メモリ4Bの認証に用いられる参照値72Bをメモリ装置20Aから取得する。
コマンド制御部11は、認証開始コマンド54と、メモリ装置20Aから取得した参照値72Bとを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS204)。認証開始コマンド54は、メモリコントローラに対して不揮発性メモリの認証の実行を指示するコマンドである。
コマンドデコーダ33Bは、ホスト装置10から送信された指示データ11Bを解析して、指示データ11Bから認証開始コマンド54及び参照値72Bを抽出する。メモリコントローラ3Bは、抽出した認証開始コマンド54に基づいて、不揮発性メモリ4Bを認証する(ステップS205)。
図7は、メモリ認証処理(ステップS205)のフローチャートである。後述するように、図7に示すメモリ認証処理は、ステップS205だけでなく、後述するステップS211でも実行される。図7に示す認証処理において、ステップS52〜S54の処理は、図5に示すMAC値生成処理のステップS42〜S44の処理と同じである。このため、ステップS52〜S54の詳細な説明を省略する。
メモリコントローラ3Bにおいて、PUF回路35Bは、認証コード領域41Bに記憶されたチャレンジ値71Bを取得する(ステップS51)。具体的には、認証コード管理部37Bが、認証コード領域41Bからチャレンジ値71Bを読み出し、読み出したチャレンジ値71BをPUF回路35Bに供給する。
PUF回路35Bは、チャレンジ値71Bを入力とした物理的複製困難関数を計算して、レスポンス値73Bを生成する(ステップS52)。分割部361Bは、生成されたレスポンス値73Bを分割して、入力データ74B及び暗号鍵75Bを生成する(ステップS53)。HMAC回路362Bは、暗号鍵75Bとハッシュ関数との組み合わせであるHMACアルゴリズムを実行して、入力データ74BからMAC値76Bを生成する(ステップS54)。
HMAC回路362Bは、ステップS54で生成したMAC値76Bを比較器363Bへ出力する。コマンドデコーダ33Bは、認証開始コマンド54に応じて、指示データ11Bから抽出した参照値72Bを比較器363Bへ出力する。比較器363Bは、HMAC回路362Bによって計算されたMAC値76Bを、コマンドデコーダ33Bから取得した参照値72Bと比較する(ステップS55)。
MAC値76Bが参照値72Bと一致する場合(ステップS55においてYes)、比較器363Bは、不揮発性メモリ4Bの正当性が確認され、不揮発性メモリ4Bの認証が成立したと判断する(ステップS56)。比較器363Bは、認証成立を示す比較結果信号77Bをアクセス制御部34Bに出力する。
一方、ステップS55において、MAC値76Bが参照値72Bと一致しない場合(ステップS55においてNo)、比較器363Bは、不揮発性メモリ4Bの認証が成立しなかったと判断する(ステップS57)。比較器363Bは、認証不成立を示す比較結果信号77Bをアクセス制御部34Bに出力する。
図6に示すように、メモリ認証処理(ステップS205)の後に、アクセス制御部34Bは、比較結果信号77Bの示す内容に応じた処理を実行する。具体的には、アクセス制御部34Bは、比較結果信号77Bが認証成立を示している場合、不揮発性メモリ4Bの認証の成立をホスト装置10に通知する(ステップ206)。一方、比較結果信号77Bが認証不成立を示している場合、アクセス制御部34Bは、認証不成立をホスト装置10に通知しない。この場合、アクセス制御部34Bは、ホスト装置10からのコマンドを受け付けない。
{2.2.2.不揮発性メモリ4Aの認証}
次に、不揮発性メモリ4Aの認証が実行される(ステップS207〜S212)。ステップS207〜S212の説明について、上記ステップS201〜S206の処理と共通する点については、その説明の一部を省略する。
ホスト装置10は、参照値取得コマンド53Bを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS207)。参照値取得コマンド53Bは、不揮発性メモリ4Bに格納された参照値72Aの読み出しを指示するコマンドである。
認証コード管理部37Bは、指示データ11Bに含まれる参照値取得コマンド53Bに基づいて、認証コード領域41Bから参照値72Aを読み出す(ステップS208)。認証コード管理部37Bは、読み出した参照値72Aをそのままホスト装置10に送信する(ステップS209)。データ取得部12は、メモリコントローラ3Bから受信した参照値72Aをバッファ13Bに格納する。このようにして、ホスト装置10は、不揮発性メモリ4Aの認証に用いられる参照値72Aをメモリ装置20Bから取得する。
コマンド制御部11は、認証開始コマンド54と、メモリ装置20Bから取得した参照値72Aとを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS210)。コマンドデコーダ33Aは、受信した指示データ11Aから認証開始コマンド54及び参照値72Aを抽出する。メモリコントローラ3Aは、抽出した認証開始コマンド54に基づいて、不揮発性メモリ4Aの認証を実行する(ステップS211)。
図7に示すように、PUF回路35Aは、認証コード領域41Aに記憶されたチャレンジ値71Aを取得する(ステップS51)。PUF回路35Aは、チャレンジ値71Aを入力とした物理的複製困難関数を計算して、レスポンス値73Aを生成する(ステップS52)。分割部361Aは、PUF回路35Aから出力されるレスポンス値73Aを分割して、入力データ74Aと暗号鍵75Aとを生成する(ステップS53)。
HMAC回路362Aは、暗号鍵75Aとハッシュ関数との組み合わせであるHMACアルゴリズムを実行して、入力データ74AからMAC値76Aを生成する(ステップS54)。比較器363Aは、HMAC回路362Aによって生成されたMAC値76Aを、コマンドデコーダ33Aから取得した参照値72Aと比較する(ステップS55)。
MAC値76Aが参照値72Aと一致する場合(ステップS55においてYes)、比較器363Aは、不揮発性メモリ4Aの認証が成立したと判断する(ステップS56)。一方、MAC値76Bが参照値72Bと一致しない場合(ステップS55においてNo)、比較器363Aは、不揮発性メモリ4Aの認証が成立しないと判断する(ステップS57)。比較器363Aは、不揮発性メモリ4Aの認証が成立したか否かを示す比較結果信号77Aをアクセス制御部34Aに出力する。
図6に示すように、アクセス制御部34Aは、比較結果信号77Aが認証成立を示している場合、不揮発性メモリ4Aの認証の成立をホスト装置10に通知する(ステップ212)。一方、比較結果信号77Aが認証不成立を示している場合、アクセス制御部34は、認証不成立をホスト装置10に通知しない。
ホスト装置10は、メモリコントローラ3Aから認証成立を通知され、かつ、メモリコントローラ3Bから認証成立を通知された場合、不揮発性メモリ4A,4Bの両者で認証が成立したと判断する。この場合、ホスト装置10は、認証の成立をメモリコントローラ3A,3Bに通知する(ステップS213及びS214)。一方、ホスト装置10は、メモリコントローラ3A,3Bの少なくとも一方から認証成立の通知を受け付けなかった場合、ステップS213及びS214を実行しない。つまり、ホスト装置10は、認証の成立をメモリコントローラ3A,3Bに通知しない。
アクセス制御部34A,34Bは、不揮発性メモリ4A,4Bの両者の認証が成立したことが通知された場合、ユーザ領域42A,42Bに対するアクセスが可能となったと判断する。この場合、アクセス制御部34A,34Bは、ホスト装置10からの指示に応じて、ユーザ領域42A,42Bに対するユーザデータ43A,43Bの書き込み及び読み出しを実行する。
一方、ホスト装置10が、不揮発性メモリ4A,4Bの両者の認証の成立を通知しなかった場合、メモリコントローラ3A,3Bは、電源オンのときから継続して、ホスト装置10の指示に応じてユーザ領域42A,42Bにアクセスしない。この場合、ユーザ領域42A,42Bに対するユーザデータ43A,43Bの書き込み及び読み出しは実行されない。
以上説明したように、メモリシステム100において不揮発性メモリ4A,4Bの認証が行われる際に、メモリコントローラ3Aの固有値であるレスポンス値73Aと、メモリコントローラ3Bの固有値であるレスポンス値73Bとが用いられる。このため、悪意のある第三者が半導体記憶装置20を複製した場合、複製された半導体記憶装置20に含まれるメモリコントローラ3A,3Bは、それぞれ不揮発性メモリ4A,4Bを認証することができない。この結果、第三者は、複製された半導体記憶装置20を利用することができない。以下、その理由を詳しく説明する。
PUF回路35Aを構成する半導体素子(FET(電界効果トランジスタ)など)に含まれる不純物の分布は、半導体素子ごとに異なる。不純物の分布を全ての半導体素子で揃えることは困難である。従って、PUF回路35Bが、PUF回路35Aと同じ回路構成を有していても、PUF回路35A,35Bにおける物理的構造には微小なばらつきが存在する。レスポンス値73A,73Bは、PUF回路35A,35Bが有する物理的特徴を利用した物理的複製困難関数により計算される。このため、チャレンジ値71A及び71Bが同一であったとしても、レスポンス値73A,73Bは、メモリコントローラ3A,3Bに固有の値となり、同一の値とはならない。
一方、工場出荷後の半導体記憶装置20が複製された場合、複製された半導体記憶装置20におけるメモリコントローラ3A,3Bは、オリジナルの半導体記憶装置20におけるメモリコントローラ3A,3Bと異なる物理的特徴を有している。従って、複製された半導体記憶装置20におけるメモリコントローラ3A,3BのPUF回路35A,35Bは、レスポンス値73A,73Bを再現することができない。
複製された半導体記憶装置20において、不揮発性メモリ4Aには参照値72Bが記憶され、複製された不揮発性メモリ4Bには参照値72Aが記憶されている。認証処理において、複製された半導体記憶装置20のメモリコントローラ3Aは、レスポンス値73Aを再現できないため、MAC値76Aを参照値72Aに一致させることができない。同様に、複製された半導体記憶装置20のメモリコントローラ3Bは、MAC値76Bを参照値72Bに一致させることができない。複製された半導体記憶装置20において、不揮発性メモリ4A,4Bのユーザ領域42A,42Bに対するアクセスが許可されることがないため、第三者は、複製された半導体記憶装置20を使用することができない。
さらに、複製された不揮発性メモリ4Aには参照値72Bが記憶され、複製された不揮発性メモリ4Bには参照値72Aが記憶される。従って、半導体記憶装置20は、メモリ装置20A及び20Bの組み合わせを維持していなければ、不揮発性メモリ4A,4Bの両者の認証を成立させることができない。半導体記憶装置20からメモリ装置20A及び20Bのいずれか一方のみを取り出しても、取り出したメモリ装置を単独で使用することができない。メモリ装置20A及び20Bのいずれか一方を他のメモリ装置に置き換えた場合も、使用することはできない。この結果、半導体記憶装置20の不正使用を防ぐことが可能となる。
{2.3.再初期化処理}
図8は、メモリシステム100において実行される再初期化処理のシーケンス図である。再初期化処理において、ホスト装置10は、半導体記憶装置20を購入したユーザのPC、スマートフォン、タブレット端末などである。
図8に示す再初期化処理により、半導体記憶装置20に記憶されているチャレンジ値71A,71B及び参照値72A,72Bが更新される。再初期化処理により、不揮発性メモリ4A,4Bのそれぞれの認証時におけるセキュリティを向上させることができる。
ホスト装置10は、再初期化をメモリコントローラ3A,3Bに指示する前に、メモリコントローラ3A,3Bに不揮発性メモリ4A,4Bの認証を実行させることが望ましい(図6参照)。不揮発性メモリ4A,4Bの両者の認証が成立した場合、ホスト装置10は、再初期化処理のためのコマンドをメモリコントローラ3A,3Bに送信する。この理由は、再初期化処理を単独で実行可能とした場合、チャレンジ値71A,71B及び参照値72A,72Bを自由に変更することができ、複製された半導体記憶装置20を動作可能とすることができるためである。
なお、再初期化処理は、図4に示す初期化処理と一部の処理が重複する。このため、重複する処理についての説明を一部省略する。
(チャレンジ値の更新及び参照値の再生成)
コマンド制御部11は、再初期化コマンド55と新たなチャレンジ値71Aとを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS301)。ホスト装置10は、再初期化コマンド55と新たなチャレンジ値71Bとを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS302)。再初期化コマンド55は、不揮発性メモリに記憶されているチャレンジ値の更新を指示するコマンドである。
メモリコントローラ3Aにおいて、コマンドデコーダ33Aは、受信した指示データ11Aから、再初期化コマンド55及び新たなチャレンジ値71Aを抽出する。メモリコントローラ3Aは、抽出された再初期化コマンド55に基づいて、ステップS303〜S305を実行する。
コマンドデコーダ33Aは、抽出された新たなチャレンジ値71Aを認証コード管理部37Aへ出力する。認証コード管理部37Aは、認証コード領域41Aに記憶されているチャレンジ値71Aを、コマンドデコーダ33Aから出力された新たなチャレンジ値71Aで更新する(ステップS303)。これにより、チャレンジ値71Aが更新される。
次に、メモリコントローラ3Aは、抽出された新たなチャレンジ値71Aを用いて、MAC値生成処理を実行する(ステップS304)。ステップS304の処理は、図5に示すMAC値生成処理と同じである。この結果、新たなMAC値76Aが、新たなチャレンジ値71Aから生成される。
認証コード管理部37Aは、再初期化コマンド55に対する応答として、生成された新たなMAC値76Aをホスト装置10に送信する(ステップS305)。データ取得部12は、メモリコントローラ3Aから送信された新たなMAC値76Aを、新たな参照値72Aとしてバッファ13Aに格納する。
メモリコントローラ3Bは、再初期化コマンド55を受け付けたメモリコントローラ3Aと同様に、認証コード領域41Bに記憶されているチャレンジ値71Bを新たなチャレンジ値71Bで更新する(ステップS306)。メモリコントローラ3Bは、新たなチャレンジ値71Bを用いて、新たなMAC値76Bを生成する(ステップS307)。ステップS307の処理は、図5に示すMAC値生成処理と同じである。
メモリコントローラ3Bは、生成された新たなMAC値76Bをホスト装置10に送信する(ステップS308)。データ取得部12は、メモリコントローラ3Bから送信された新たなMAC値76Bを、新たな参照値72Bとしてバッファ13Bに格納する。
データ取得部12が新たな参照値72A,72Bを取得した場合、コマンド制御部11は、再初期化コマンド56と新たな参照値72Bとを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS309)。再初期化コマンド56は、認証コード領域に記憶されている参照値の更新をメモリコントローラに指示するコマンドである。コマンド制御部11は、再初期化コマンド56と新たな参照値72Aとを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS310)。
メモリコントローラ3Aにおいて、コマンドデコーダ33Aは、ホスト装置10から受信した指示データ11Aから、再初期化コマンド56及び新たな参照値72Bを抽出する。認証コード管理部37Aは、再初期化コマンド56に基づいて、認証コード領域41Aに記憶されている参照値72Bを、抽出された新たな参照値72Bで上書きする(ステップS311)。その後、認証コード管理部37Aは、参照値72Bの更新が完了したことをホスト装置10に通知する(ステップS312)。
メモリコントローラ3Bは、メモリコントローラ3Aと同様に、再初期化コマンド56に基づいて、認証コード領域41Bに記憶されている参照値72Aを、新たな参照値72Aで上書きする(ステップS313)。そして、メモリコントローラ3Aは、参照値72Aの更新が完了したことをホスト装置10に通知する(ステップS314)。これにより、再初期化処理が終了する。その後、不揮発性メモリ4Aの認証には、不揮発性メモリ4Aに格納された更新後のチャレンジ値71Aと、不揮発性メモリ4Bに格納された更新後の参照値72Aとが用いられる。不揮発性メモリ4Bの認証には、不揮発性メモリ4Bに格納された更新後のチャレンジ値71Bと、不揮発性メモリ4Aに格納された更新後の参照値72Bとが用いられる。
以上説明したように、本実施の形態に係るメモリシステム100において、メモリコントローラ3Aは、PUF回路35Aにより生成されるレスポンス値73Aと、不揮発性メモリ4Bに記憶された参照値72Aとを用いて、不揮発性メモリ4Aの認証を実行する。メモリコントローラ3Bは、PUF回路35Bにより生成されるレスポンス値73Bと、不揮発性メモリ4Aに記憶された参照値72Bとを用いて、不揮発性メモリ4Bの認証を実行する。不揮発性メモリ4A,4Bの認証が成立した場合、メモリコントローラ3A,3Bは、不揮発性メモリ4A,4Bに対する読み出し及び書き込みを実行する。
不揮発性メモリ4Aの認証に用いられる参照値72Aが不揮発性メモリ4Bに記憶され、不揮発性メモリ4Bの認証に用いられる参照値72Bが不揮発性メモリ4Aに記憶される。従って、メモリコントローラ3Aと不揮発性メモリ4Aとを備えるメモリ装置20Aと、メモリコントローラ3Bと不揮発性メモリ4Bとを備えるメモリ装置20Bとの組み合わせでなければ、不揮発性メモリ4A,4Bを認証することができない。第三者が半導体記憶装置20を複製しても、複製された半導体記憶装置20において不揮発性メモリ4A,4Bの認証は成立しない。従って、複製された半導体記憶装置20の使用を防ぐことができる。
なお、本実施の形態において、MAC値が参照値として用いられる例を説明したが、これに限られない。不揮発性メモリ4Aは、参照値72Bとしてレスポンス値73Bを格納し、不揮発性メモリ4Bは、参照値72Aとしてレスポンス値73Aを格納してもよい。この場合、比較器363Aは、PUF回路35Aにより生成されたレスポンス値73Aを、不揮発性メモリ4Bに格納されたレスポンス値73Aと比較して、不揮発性メモリ4Aの認証が成立するか否かを判断する。また、比較器363Bは、PUF回路35Bにより生成されたレスポンス値73Bを、不揮発性メモリ4Aに格納されたレスポンス値73Bと比較して、不揮発性メモリ4Bの認証が成立するか否かを判断する。
また、本実施の形態において、分割部361Aがレスポンス値73Aを入力データ74A及び暗号鍵75Aに分割し、分割部361Bがレスポンス値73Bを入力データ74B及び暗号鍵75Bに分割する例を説明したが、これに限られない。例えば、HMAC回路362A、362Bは、レスポンス値73A,73Bをそのまま入力データ74A,74Bとして用いてもよい。この場合、HMAC回路362A,362Bは、予め実装された固定鍵を用いて、レスポンス値73A,73Bからハッシュ値をそれぞれ計算する。
[第2の実施の形態]
図9は、本実施の形態に係るメモリシステムにおけるメモリ装置20Aの構成を示す機能ブロック図である。図10は、本実施の形態に係るメモリシステムにおけるメモリ装置20Bの構成を示す機能ブロック図である。
本実施の形態に係るメモリシステムは、上記第1の実施の形態に係るメモリシステム100と主に以下の点で異なる。
上記第1の実施の形態では、参照値72Bが、認証コード領域41A内の所定のアドレスに格納され、参照値72Aが、認証コード領域41B内の所定のアドレスに格納された。これに対して、本実施の形態では、レスポンス値73Bが、レスポンス値73Aに基づいて決定されたアドレスに基づいて、認証コード領域41Aに格納される。レスポンス値73Aが、レスポンス値73Bに基づいて決定されたアドレスに基づいて、認証コード領域41Bに格納される。
また、上記第1の実施の形態では、例えば、HMAC回路362Aは、レスポンス値73Aを分割することにより生成した入力データ74A及び暗号鍵75Aを用いて、参照値72A(MAC値76A)を生成した。これに対して、本実施の形態では、参照値(MAC値)は、レスポンス値73A及び73Bの一方を入力データとし、他方を暗号鍵としたHMACアルゴリズムの実行により生成される。
以下、上記の差異を中心に本実施の形態に係るメモリシステムについて中心に説明し、上記第1の実施の形態に係るメモリシステム100と共通の部分についての説明を一部省略する。
{1.メモリ装置20A,20Bの構成}
図9に示すように、メモリコントローラ3Aは、認証コード管理部37Aに代えて、認証コード管理部38Aを備える。認証コード管理部38Aは、不揮発性メモリ4Aに格納されたレスポンス値73Bを読み出し、不揮発性メモリ4Bの認証に用いられる参照値(MAC値)82Bを取得する。
メモリコントローラ3Aは、アドレスデコーダ39Aをさらに備える。アドレスデコーダ39Aは、PUF回路35Aにより生成されるレスポンス値73Aを用いて、メモリコントローラ3Bから取得したレスポンス値73Bの格納先アドレス85Aを決定する。
また、認証部36Aは、HMAC回路362Aに代えて、HMAC回路364Aを備える。HMAC回路364Aは、レスポンス値73A及び73Bの一方をHMACアルゴリズムの暗号鍵として使用し、他方を入力データとして使用する。
図10に示すように、メモリコントローラ3Bは、認証コード管理部37Bに代えて、認証コード管理部38Bを備える。認証コード管理部38Bは、不揮発性メモリ4Bに格納されたレスポンス値73Aを読み出し、不揮発性メモリ4Aの認証に用いられる参照値(MAC値)82Aを取得する。
メモリコントローラ3Bは、アドレスデコーダ39Bをさらに備える。アドレスデコーダ39Bは、PUF回路35Bにより生成されるレスポンス値73Bを用いて、メモリコントローラ3Aから取得したレスポンス値73Aの格納先アドレス85Bを決定する。
また、認証部36Bは、HMAC回路362Bに代えて、HMAC回路364Bを備える。HMAC回路364Bは、レスポンス値73A及び73Bの一方をHMACアルゴリズムの暗号鍵として使用し、他方を入力データとして使用する。HMAC回路364Bに実装されるハッシュ関数は、HMAC回路364Aに実装されるハッシュ関数と同じである。
{2.メモリシステムの動作}
以下、本実施の形態に係るメモリシステムにおいて実行される初期化処理、認証処理、及び再初期化処理について詳しく説明する。
{2.1.初期化処理}
図11は、本実施の形態に係るメモリシステムにおいて実行される初期化処理のシーケンス図である。初期化処理により、チャレンジ値71A及びレスポンス値73Bが、認証コード領域41Aに格納され、チャレンジ値71B及びレスポンス値73Aが、認証コード領域41Bに格納される。
ホスト装置10は、初期化コマンド61とチャレンジ値71Aとを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS401)。ホスト装置10は、初期化コマンド61とチャレンジ値71Bとを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS402)。初期化コマンド61は、チャレンジ値の設定と、設定されたチャレンジ値を用いたレスポンス値の生成を指示するコマンドである。
メモリコントローラ3Aにおいて、コマンドデコーダ33Aは、指示データ11Aから初期化コマンド61を抽出する。コマンドデコーダ33Aは、抽出した初期化コマンド61に基づいて、指示データ11Aに含まれるチャレンジ値71Aを認証コード管理部38Aに出力する。認証コード管理部38Aは、チャレンジ値71Aを、認証コード領域41A内の所定のアドレスに格納する(ステップS403)。
PUF回路35Aは、認証コード管理部38Aからチャレンジ値71Aを取得する。PUF回路35Aは、取得したチャレンジ値71Aを入力とした物理的複製困難関数を計算して、レスポンス値73Aを生成する(ステップS404)。
認証コード管理部38Aは、PUF回路35Aにより生成されたレスポンス値73Aを取得し、取得したレスポンス値73Aを、初期化コマンド61の応答としてホスト装置10に送信する(ステップS405)。データ取得部12は、メモリコントローラ3Aから送信されたレスポンス値73Aを、バッファ13Aに一時的に記憶する。
メモリコントローラ3Bは、初期化コマンド61に応じて、ステップS406〜S408を実行する。ステップS406〜S408の処理は、ステップS403〜S405と同様の処理である。
すなわち、認証コード管理部38Bは、指示データ11Bに含まれるチャレンジ値71Bを、認証コード領域41B内の所定のアドレスに格納する(ステップS406)。PUF回路35Bは、チャレンジ値71Bを入力とした物理的複製困難関数を計算して、レスポンス値73Bを生成する(ステップS407)。認証コード管理部38Bは、生成されたレスポンス値73Bをホスト装置10に送信する(ステップS408)。データ取得部12は、レスポンス値73Bを、バッファ13Bに一時的に記憶する。
ホスト装置10のコマンド制御部11は、レスポンス値格納コマンド62及びレスポンス値73Bを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS409)。ホスト装置10は、レスポンス値格納コマンド62及びレスポンス値73Aを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS410)。レスポンス値格納コマンド62は、レスポンス値の認証コード領域への格納を指示するコマンドである。
メモリコントローラ3Aは、レスポンス値格納コマンド62に基づいて、以下の処理を実行する。認証コード管理部38Aは、PUF回路35Aにより生成されたレスポンス値73Aをアドレスデコーダ39Aに出力する。アドレスデコーダ39Aは、レスポンス値73Aを用いて、指示データ11Aに含まれるレスポンス値73Bの格納先アドレス85Aを決定する(ステップS411)。格納先アドレスを決定するためのアルゴリズムは、認証コード領域41Aのアドレスを特定できるものであれば、特に限定されない。
認証コード管理部38Aは、指示データ11Aに含まれるレスポンス値73Bをコマンドデコーダ33Aから取得する。認証コード管理部38Aは、格納先アドレス85Aにより指定された領域(認証コード領域41A)に、レスポンス値73Bを格納する(ステップS412)。そして、認証コード管理部38Aは、レスポンス値73Bの格納完了をホスト装置10に通知する(ステップS413)。
メモリコントローラ3Bは、レスポンス値格納コマンド62に基づいて、メモリコントローラ3と同様の処理を実行する。アドレスデコーダ39Bは、PUF回路35Bにより生成されたレスポンス値73Bを用いて、指示データ11Bに含まれるレスポンス値73Aの格納先アドレス85Bを決定する(ステップS414)。認証コード管理部38Bは、格納先アドレス85Bにより指定された領域(認証コード領域41B)に、レスポンス値73Aを格納する(ステップS415)。そして、認証コード管理部38Bは、レスポンス値73Aの格納完了をホスト装置10に通知する(ステップS416)。
レスポンス値73Bは、レスポンス値73Aと異なるため、格納先アドレス85Bは、格納先アドレス85Aにより指定される領域と異なる領域を示す。つまり、レスポンス値の格納先を示すアドレスがメモリ装置に応じて変化するため、レスポンス値の格納先を特定することが困難となり、セキュリティを向上させることができる。
ホスト装置10は、ステップS413及びS416の通知を受信することにより、初期化処理が終了したと判断する。初期化処理の終了後、半導体記憶装置20は、工場から出荷される。
{2.2.認証処理}
図12は、本実施の形態に係るメモリシステムにおいて実行される認証処理のシーケンス図である。以下、図12を参照しながら、半導体記憶装置20の電源がオンされた場合を例にして、認証処理におけるホスト装置10及びメモリコントローラ3A,3Bの動作を詳しく説明する。
{2.2.1.不揮発性メモリ4Bの認証}
最初に、不揮発性メモリ4Bの認証が実行される(ステップS501〜S506)。
(参照値82Bの生成)
ホスト装置10は、不揮発性メモリ4Bの認証を指示する前に、不揮発性メモリ4Bの認証に用いられる参照値82Bをメモリコントローラ3Aに生成させる。具体的には、ホスト装置10のコマンド制御部11は、参照値生成コマンド63Aを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS501)。参照値生成コマンド63Aは、参照値82Bの生成を指示するコマンドである。
メモリコントローラ3Aにおいて、参照値生成コマンド63Aが、コマンドデコーダ33Aにより指示データ11Aから抽出される。メモリコントローラ3Aは、抽出された参照値生成コマンド63Aに基づいて、参照値82Bを生成する(ステップS502)。
図13は、参照値生成処理(ステップS502)のフローチャートである。図13に示す処理は、ステップS502と、後述するステップS508とで共通である。
図13に示すように、認証コード管理部38Aは、認証コード領域41Aからチャレンジ値71Aを読み出す(ステップS61)。読み出されたチャレンジ値71Aは、PUF回路35Aに入力される。PUF回路35Aは、チャレンジ値71Aを入力とした物理的複製困難関数を計算して、レスポンス値73Aを生成する(ステップS62)。PUF回路35Aは、生成したレスポンス値73Aを認証コード管理部38Aに出力する。
アドレスデコーダ39Aは、認証コード管理部38Aを介してレスポンス値73Aを取得し、取得したレスポンス値を用いて格納先アドレス85Aを特定する(ステップS63)。認証コード管理部38Aは、特定した格納先アドレス85Aで指定される記憶領域(認証コード領域41A)から、レスポンス値73Bを読み出す(ステップS64)。
HMAC回路364Aは、PUF回路35Aにより生成されたレスポンス値73Aを入力し、認証コード領域41Aから読み出されたレスポンス値73Bを認証コード管理部38Aから入力する。HMAC回路364Aは、レスポンス値73A及び73Bを用いたHMACアルゴリズムを実行して、参照値(MAC値)82Bを生成する(ステップS65)。ステップS65において、PUF回路35Aにより生成されたレスポンス値73Aは、HMACアルゴリズムの暗号鍵として用いられる。認証コード領域41Aから読み出されたレスポンス値73Bは、HMACアルゴリズムの入力データとして用いられる。参照値82Bの生成により、ステップS502の処理は終了する。
再び、図12を参照する。認証コード管理部38Aは、HMAC回路364Aにより生成された参照値82Bを、参照値生成コマンド63Aの応答としてホスト装置10に送信する(ステップS503)。データ取得部12は、メモリコントローラ3Aから送信された参照値82Bを、バッファ13Aに格納する。
(認証開始)
次に、コマンド制御部11は、認証開始コマンド64及び参照値82Bを含む指示データ11Bを、メモリコントローラ3Bに送信する(ステップS504)。コマンドデコーダ33Bは、指示データ11Bから認証開始コマンド64を抽出する。メモリコントローラ3は、抽出された認証開始コマンド64に応じて、不揮発性メモリ4Aを認証する(ステップS505)。
図14は、メモリ認証処理(ステップS505)のフローチャートである。図14に示す処理は、ステップS505と、後述するステップS511とで共通である。図14に示す処理において、ステップS71〜S74の処理は、図13に示すステップS61〜S64の処理と共通である。このため、ステップS71〜S74の処理の説明を一部省略する。
認証コード管理部38Bは、認証コード領域41Bからチャレンジ値71Bを読み出す(ステップS71)。PUF回路35Bは、読み出されたチャレンジ値71Bを入力とした物理的複製困難関数を計算して、レスポンス値73Bを生成する(ステップS72)。アドレスデコーダ39Bは、生成されたレスポンス値73Bを用いて、レスポンス値73Aの格納先アドレス85Bを特定する(ステップS73)。認証コード管理部38Bは、特定された格納先アドレス85Bにより指定される領域(認証コード領域41B)から、レスポンス値73Aを読み出す(ステップS74)。
HMAC回路364Bは、HMACアルゴリズムを実行して、MAC値86Bを生成する(ステップS75)。ステップS75において、認証コード領域41Bから読み出されたレスポンス値73Aが暗号鍵として用いられる。PUF回路35Bにより生成されたレスポンス値73Bが入力データとして用いられる。
比較器363Bは、HMAC回路364Bにより生成されたMAC値86Bを、認証開始コマンド64とともに送信された参照値82Bと比較する(ステップS76)。MAC値86Bが参照値82Bと一致する場合(ステップS76においてYes)、比較器363Bは、不揮発性メモリ4Bの認証が成立したと判断する(ステップS77)。一方、MAC値76Bが参照値72Bと一致しない場合(ステップS76においてNo)、比較器363Bは、不揮発性メモリ4Bの認証が成立しないと判断する(ステップS78)。比較器363Bは、不揮発性メモリ4Aの認証が成立したか否かを示す比較結果信号77Bをアクセス制御部34Bに出力する。
図12に示すように、メモリ認証処理(ステップS505)の後に、アクセス制御部34Bは、比較結果信号77Bの示す内容に応じた処理を実行する。具体的には、アクセス制御部34Bは、比較結果信号77Bが認証成立を示している場合、不揮発性メモリ4Bの認証の成立をホスト装置10に通知する(ステップS506)。一方、比較結果信号77Bが認証不成立を示している場合、アクセス制御部34Bは、認証不成立をホスト装置10に通知しない。
{2.2.2.不揮発性メモリ4Aの認証}
不揮発性メモリ4Bの認証処理の後に、不揮発性メモリ4Aの認証が実行される(ステップS507〜S512)。ステップS507〜S512の処理は、ステップS501〜S506の処理にそれぞれ対応する。このため、ステップS507〜S512の説明の一部を省略する。
(参照値82Aの生成)
ホスト装置10は、不揮発性メモリ4Aの認証を指示する前に、不揮発性メモリ4Aの認証に用いられる参照値82Aをメモリコントローラ3Bに生成させる。具体的には、コマンド制御部11は、参照値82Aの生成を指示する参照値生成コマンド63Bを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS507)。
メモリコントローラ3Aは、参照値生成コマンド63Bに応じて、参照値生成処理(ステップS508)を実行して、参照値82Aを生成する。
図13に示すように、認証コード管理部38Bは、認証コード領域41Bからチャレンジ値71Bを読み出す(ステップS61)。PUF回路35Bは、読み出されたチャレンジ値71Bを入力とした物理的複製困難関数を計算して、レスポンス値73Bを生成する(ステップS62)。
アドレスデコーダ39Bは、生成されたレスポンス値73Bを用いて、認証コード領域41Bに格納されたレスポンス値73Aの格納先アドレス85Bを特定する(ステップS63)。認証コード管理部38Bは、格納先アドレス85Bにより指定される領域(認証コード領域41B)から、レスポンス値73Aを読み出す(ステップS64)。
HMAC回路364Bは、HMACアルゴリズムを実行して、参照値(MAC値)82Aを生成する(ステップS65)。ステップS65において、PUF回路35Bにより生成されたレスポンス値73Bは、暗号鍵として用いられる。認証コード領域41Bから読み出されたレスポンス値73Aは、入力データとして用いられる。
再び、図12を参照する。認証コード管理部38Bは、HMAC回路364Bにより生成された参照値82Aを、参照値生成コマンド63Bの応答としてホスト装置10に送信する(ステップS509)。データ取得部12は、メモリコントローラ3Bから送信された参照値82Aを、バッファ13Bに格納する。
(認証開始)
コマンド制御部11は、認証開始コマンド64及び参照値82Aを含む指示データ11Aを、メモリコントローラ3Aに送信する(ステップS510)。メモリコントローラ3Aは、認証開始コマンド64に応じて、不揮発性メモリ4Aを認証する(ステップS511)。
図14を参照しながら、メモリ認証処理(ステップS511)を説明する。認証コード管理部38Aは、認証コード領域41Aからチャレンジ値71Aを読み出す(ステップS71)。PUF回路35Aは、読み出されたチャレンジ値71Aを入力とした物理的複製困難関数を計算して、レスポンス値73Aを生成する(ステップS72)。アドレスデコーダ39Aは、生成されたレスポンス値73Aを用いて、格納先アドレス85Aを特定する(ステップS73)。認証コード管理部38Aは、格納先アドレス85Aにより指定された領域(認証コード領域41A)からレスポンス値73Bを読み出す(ステップS74)。
HMAC回路364Aは、HMACアルゴリズムを実行して、MAC値86Aを生成する(ステップS75)。ステップS75において、認証コード領域41Aから読み出されたレスポンス値73Bが、暗号鍵として用いられる。PUF回路35Aにより生成されたレスポンス値73Aが、入力データとして用いられる。
比較器363Aは、HMAC回路364Aにより生成されたMAC値86Aを、認証開始コマンド64とともに送信された参照値82Aと比較する(ステップS76)。MAC値86Aが参照値82Aと一致する場合(ステップS76においてYes)、比較器363Aは、不揮発性メモリ4Aの認証が成立したと判断する(ステップS77)。一方、MAC値76Aが参照値72Aと一致しない場合(ステップS76においてNo)、比較器363Aは、不揮発性メモリ4Bの認証が成立しないと判断する(ステップS78)。比較器363Aは、認証が成立したか否かを示す比較結果信号77Aをアクセス制御部34Bに出力する。
図12に示すように、メモリ認証処理(ステップS511)の後に、アクセス制御部34Aは、比較結果信号77Aの示す内容に応じた処理を実行する。具体的には、アクセス制御部34Aは、比較結果信号77Aが認証成立を示している場合、不揮発性メモリ4Aの認証の成立をホスト装置10に通知する(ステップS512)。一方、比較結果信号77Aが認証不成立を示している場合、アクセス制御部34Aは、認証不成立をホスト装置10に通知しない。
ホスト装置10は、メモリコントローラ3Aから認証成立を通知され、かつ、メモリコントローラ3Bから認証成立を通知された場合、不揮発性メモリ4A,4Bの両者で認証が成立したと判断する。この場合、ホスト装置10は、認証の成立をメモリコントローラ3A,3Bに通知する(ステップS513及びS514)。一方、ホスト装置10は、メモリコントローラ3A,3Bの少なくとも一方から認証成立の通知を受け付けなかった場合、ステップS513及びS514を実行しない。つまり、ホスト装置10は、認証の成立をメモリコントローラ3A,3Bに通知しない。
アクセス制御部34A,34Bは、不揮発性メモリ4A,4Bの両者の認証が成立したことが通知された場合、ユーザ領域42A,42Bに対するアクセスが可能となったと判断する。一方、ホスト装置10が、不揮発性メモリ4A,4Bの両者の認証の成立を通知しなかった場合、メモリコントローラ3A,3Bは、電源オンのときから継続して、ユーザ領域42A,42Bにアクセスしない。
{2.3.再初期化処理}
図15は、本実施の形態に係るメモリシステムにおいて実行される再初期化処理のシーケンス図である。図15に示す再初期化処理により、半導体記憶装置20に記憶されているチャレンジ値71A,71B及びレスポンス値73A,73Bが更新される。上記第1の実施の形態と同様に、ホスト装置10は、不揮発性メモリ4A,4Bの認証が成立したことを確認した上で(図12参照)、再初期化をメモリコントローラ3A,3Bに指示することが望ましい。
なお、再初期化処理は、図11に示す初期化処理と一部の処理が重複する。このため、重複する処理についての説明を一部省略する。
(チャレンジ値の更新及び新たなレスポンス値の生成)
コマンド制御部11は、再初期化コマンド65と新たなチャレンジ値71Aとを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS601)。ホスト装置10は、再初期化コマンド65と新たなチャレンジ値71Bとを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS602)。再初期化コマンド65は、認証コード領域に格納されたチャレンジ値の更新と、更新されたチャレンジ値を用いたレスポンス値の生成を指示するコマンドである。
メモリコントローラ3Aにおいて、コマンドデコーダ33Aは、指示データ11Aに含まれる新たなチャレンジ値71Aを認証コード管理部38Aへ出力する。認証コード管理部38Aは、認証コード領域41Aに記憶されているチャレンジ値71Aを、コマンドデコーダ33Aから出力された新たなチャレンジ値71Aで更新する(ステップS603)。PUF回路35Aは、新たなチャレンジ値71Aを入力とした物理的複製困難関数を計算して、新たなレスポンス値73Aを生成する(ステップS604)。
認証コード管理部38Aは、再初期化コマンド65に対する応答として、生成された新たなレスポンス値73Aをホスト装置10に送信する(ステップS605)。データ取得部12は、メモリコントローラ3Aから送信された新たなレスポンス値73Aをバッファ13Aに格納する。
メモリコントローラ3Bにおいて、認証コード管理部38Bは、認証コード領域41Bに記憶されているチャレンジ値71Bを新たなチャレンジ値71Bで更新する(ステップS606)。PUF回路35Bは、新たなチャレンジ値71Bから新たなレスポンス値73Bを生成する(ステップS607)。認証コード管理部38Bは、生成された新たなレスポンス値73Bをホスト装置10に送信する(ステップS608)。データ取得部12は、メモリコントローラ3Bから送信された新たなレスポンス値73Bをバッファ13Bに格納する。
(新たなレスポンス値の格納)
データ取得部12が新たなレスポンス値73A,73Bを取得した場合、コマンド制御部11は、再初期化コマンド66及び新たなレスポンス値73Bを含む指示データ11Aをメモリコントローラ3Aに送信する(ステップS609)。コマンド制御部11は、再初期化コマンド66及び新たなレスポンス値73Aを含む指示データ11Bをメモリコントローラ3Bに送信する(ステップS610)。再初期化コマンド66は、新たなレスポンス値の格納を指示するコマンドである。
メモリコントローラ3Aは、再初期化コマンド66に基づいて、新たなレスポンス値73Aを認証コード領域41Bに格納する(ステップS611〜S613)。
アドレスデコーダ39Aは、PUF回路35Aにより生成された新たなレスポンス値73Aを用いて、新たな格納先アドレス85Aを決定する(ステップS611)。ステップS611で生成された新たな格納先アドレス85Aは、初期化処理(図11参照)のステップS411で生成された格納先アドレス85Aと異なる。この理由は、チャレンジ値71Aが更新されたことにより、格納先アドレスの決定に用いられるレスポンス値73Aが変化するためである。新たな格納先アドレス85Aで指定される領域(認証コード領域41A)に、新たなレスポンス値73Bを格納する(ステップS612)。そして、認証コード管理部38Aは、新たなレスポンス値73Bの格納完了をホスト装置10に通知する(ステップS613)。
なお、認証コード管理部38Aは、認証コード領域41Aに格納されている過去のレスポンス値73Bを削除してもよいし、そのまま保持していてもよい。過去のレスポンス値を削除する場合、認証コード管理部38Aは、チャレンジ値71Aを更新する(ステップS603)際に、過去(更新前)のレスポンス値を削除すればよい。
メモリコントローラ3Bは、メモリコントローラ3Aと同様に、再初期化コマンド66に基づいて、認証コード領域41Bに格納されたレスポンス値73Aを更新する(ステップS614〜S616)。
アドレスデコーダ39Bは、PUF回路35Bにより生成された新たなレスポンス値73Bを用いて、新たな格納先アドレス85Bを決定する(ステップS614)。認証コード管理部38Bは、新たな格納先アドレス85Bにより指定される領域(認証コード領域41B)に、新たなレスポンス値73Aを格納する(ステップS615)。そして、認証コード管理部38Aは、新たなレスポンス値73Aの格納完了をホスト装置10に通知する(ステップS616)。
これにより、不揮発性メモリ4Aに格納されたチャレンジ値71A及びレスポンス値73Bと、不揮発性メモリ4Bに格納されたチャレンジ値71B及びレスポンス値73Aとの更新が完了する。
以上説明したように、本実施の形態に係るメモリシステムにおいて不揮発性メモリ4A,の認証に、メモリコントローラ3Aの固有値であるレスポンス値73Aとメモリコントローラ3Bの固有値であるレスポンス値73Bとの両者が用いられる。従って、上記第1の実施の形態と同様に、第三者は、複製した半導体記憶装置20を利用することができない。
また、認証コード領域に格納されるレスポンス値のアドレスが、メモリコントローラと不揮発性メモリとを備えるメモリ装置ごとに変化するため、第三者が、認証コード領域における参照値の格納先アドレスを特定することが困難となる。従って、第三者は、認証コード領域に記憶されたレスポンス値を用いて、不揮発性メモリの認証を不正に成立させることを困難にすることができる。
{変形例}
上記実施の形態において、メモリコントローラ3A,3Bが、ホスト装置10を介して参照値又はレスポンス値を取得する例を説明した。しかし、メモリコントローラ3A,3Bは、参照値又はレスポンス値を直接転送するようにしてもよい。
図16は、上記第1の実施の形態に係るメモリ装置20Aの変形例の構成を示す機能ブロック図である。図16に示すように、メモリコントローラ3Aは、コントローラI/F40をさらに備える。図示していないが、メモリコントローラ3AがコントローラI/F40を備える場合、メモリコントローラ3Bも、コントローラI/F40を備える。メモリコントローラ3A,3Bにおける2つのコントローラI/F40は、バスなどで接続される。これにより、メモリコントローラ3A,3Bは、ホスト装置10を介することなく、参照値72A,72Bを送受信することができる。
初期化処理(図4参照)において、メモリコントローラ3Aは、MAC値76Aを生成した場合(ステップS104)、生成したMAC値76AをコントローラI/F40を介して、メモリコントローラ3Bに転送する。メモリコントローラ3Bは、メモリコントローラ3AからMAC値76Aを受信した場合、受信したMAC値76Aを参照値72Aとして認証コード領域41Bに格納する(ステップS113)。
メモリコントローラ3Aは、ステップS107において生成されたMAC値76BをコントローラI/F40を介してメモリコントローラ3Bから受信する。メモリコントローラ3Aは、受信したMAC値76Bを参照値72Bとして認証コード領域41Aに格納する(ステップS111)。
認証処理(図6参照)においても、メモリコントローラ3A,3Bは、認証に用いる参照値72A,72Bを直接やり取りすればよい。また、メモリコントローラ3A,3Bは、不揮発性メモリ4Bの認証結果を相互に通知すればよい。例えば、アクセス制御部34Bは、不揮発性メモリ4Bの認証が成立したと判断した後に不揮発性メモリ4Aの認証成立をメモリコントローラ3Aから通知された場合、ユーザ領域42Bに対するアクセスが可能になったと判断する。
上記第2の実施の形態に係る半導体記憶装置20において、メモリコントローラ3A,3Bが、コントローラI/F40を備えていてもよい。これにより、メモリコントローラ3A,3Bは、レスポンス値73A,73B及び参照値82A,82Bを直接送受信することができる。
また、上記実施の形態において、不揮発性メモリ4A,4Bの両者の認証が成立した場合、アクセス制御部34A,34Bは、ユーザ領域42A,42Bに対するアクセスを開始する例を説明したが、これに限られない。アクセス制御部34A,34B、不揮発性メモリ4A,4Bのいずれか一方の認証が成立した場合に、ユーザ領域42A,42Bに対するアクセスを開始してもよい。あるいは、ホスト装置10は、不揮発性メモリ4A,4Bの認証を交互に実行してもよい。
上記第1及び第2の実施の形態において、参照値72A,72BがそれぞれMAC値76A,76Bである場合を例に説明したが、これに限られない。例えば、メモリコントローラ3A,3Bは、参照値72A,72Bとしてレスポンス値73A,73Bを用いてもよい。この場合、認証処理において、メモリコントローラ3Aは、レスポンス値73Aをメモリ装置20Bから取得した参照値72Aと比較し、メモリコントローラ3Bは、レスポンス値73Bをメモリ装置20Aから取得した参照値72Bと比較すればよい。つまり、メモリコントローラ3Aは、PUF回路35Aから生成されたレスポンス値73Aと、メモリ装置20Bから取得した参照値72Aとを用いて、不揮発性メモリ4Aの認証が成立するか否かを判断すればよい。メモリコントローラ3Bについても同様である。
上記第1及び第2の実施の形態で説明したメモリコントローラ3A,3Bの一部又は全部は、集積回路(例えば、LSI、システムLSI等)として実現されるものであってもよい。
また、上記第1及び第2の実施の形態における各処理の一部又は全部をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
また、上記第1及び第2の実施の形態で説明した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリを挙げることができる。