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