(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022090362
(43)【公開日】2022-06-17
(54)【発明の名称】メモリシステム、コントローラおよび制御方法
(51)【国際特許分類】
H04L 9/10 20060101AFI20220610BHJP
【FI】
H04L9/00 621Z
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2020202723
(22)【出願日】2020-12-07
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】鈴木 健聡
(57)【要約】
【課題】補助データ量の増大を防止しつつ、経時変化による誤り訂正能力の低下を防止することができるメモリシステムを提供する。
【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。コントローラは、不揮発性メモリへのデータの書き込みまたは不揮発性メモリからのデータの読み出しを制御する。コントローラは、コントローラ内の回路素子の特性を利用して取得される識別情報を用いて、不揮発性メモリに書き込まれるデータの暗号化に係わる暗号鍵を作成する。コントローラは、暗号鍵の再作成時において取得される識別情報に含まれ得るエラーを訂正するための補助データを作成する。コントローラは、回路素子の特性の経時変化による識別情報の経時変化傾向に関する経時変化情報を取得して補助データに付加する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリへのデータの書き込みまたは前記不揮発性メモリからのデータの読み出しを制御するコントローラと、
を具備し、
前記コントローラは、
前記コントローラ内の回路素子の特性を利用して取得される識別情報を用いて、前記不揮発性メモリに書き込まれるデータの暗号化に係わる暗号鍵を作成し、
前記暗号鍵の再作成時において取得される前記識別情報に含まれ得るエラーを訂正するための補助データを作成し、
前記回路素子の特性の経時変化による前記識別情報の経時変化傾向に関する経時変化情報を取得して前記補助データに付加する、
メモリシステム。
【請求項2】
前記コントローラは、
前記暗号鍵の再作成時において取得される前記識別情報に対して、前記経時変化情報を用いた経時変化補正を実行し、
前記経時変化補正後の前記識別情報に対して、前記補助データを用いたエラー訂正を実行する、
請求項1に記載のメモリシステム。
【請求項3】
前記経時変化情報は、前記識別情報として取得されるビット列中の経時変化による反転の可能性が高いビットの位置情報を含む請求項1または2に記載のメモリシステム。
【請求項4】
前記コントローラは、
前記位置情報に基づき、前記識別情報として取得されるビット列を、経時変化による反転の可能性が高いビットからなる第1ビット列と、残りの経時変化による反転の可能性が低いビットからなる第2ビット列とに分割し、
前記識別情報として取得されるビット列の経時変化補正を含むエラー訂正において、前記第1ビット列に対しては第1強度のエラー訂正能力を設定し、前記第2ビット列に対しては前記第1強度よりも強度の低い第2強度のエラー訂正能力を設定する、
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、対応する経過時間が異なる複数の前記経時変化情報を取得して前記補助データに付加する請求項1~4のいずれか1項に記載のメモリシステム。
【請求項6】
前記暗号鍵は、前記不揮発性メモリに書き込まれるデータを暗号化するための第1暗号鍵または前記第1暗号鍵を暗号化するための第2暗号鍵である請求項1~5のいずれか1項に記載のメモリシステム。
【請求項7】
デバイスを制御するコントローラであって、
前記コントローラ内の回路素子の特性を利用して識別情報を取得し、前記識別情報を用いて、前記デバイスによって扱われるデータの暗号化に係わる暗号鍵を作成し、
前記暗号鍵の再作成時において取得される前記識別情報に含まれ得るエラーを訂正するための補助データを作成し、
前記回路素子の特性の経時変化による前記識別情報の経時変化傾向に関する経時変化情報を取得して前記補助データに付加する、
コントローラ。
【請求項8】
前記コントローラは、
前記暗号鍵の再作成時において取得される前記識別情報に対して、前記経時変化情報を用いた経時変化補正を実行し、
前記経時変化補正後の前記識別情報に対して、前記補助データを用いたエラー訂正を実行する、
請求項7に記載のコントローラ。
【請求項9】
前記経時変化情報は、前記識別情報として取得されるビット列中の経時変化による反転の可能性が高いビットの位置情報を含む請求項7または8に記載のコントローラ。
【請求項10】
対応する経過時間が異なる複数の前記経時変化情報を取得して前記補助データに付加する請求項7~9のいずれか1項に記載のコントローラ。
【請求項11】
不揮発性メモリへのデータの書き込みまたは前記不揮発性メモリからのデータの読み出しを制御するコントローラの制御方法であって、
前記コントローラ内の回路素子の特性を利用して取得される識別情報を用いて、前記不揮発性メモリに書き込まれるデータの暗号化に係わる暗号鍵を作成し、
前記暗号鍵の再作成時において取得される前記識別情報に含まれ得るエラーを訂正するための補助データを作成し、
前記回路素子の特性の経時変化による前記識別情報の経時変化傾向に関する経時変化情報を取得して前記補助データに付加する、
制御方法。
【請求項12】
前記暗号鍵の再作成時において取得される前記識別情報に対して、前記補助データに付加されている前記経時変化情報を用いた経時変化補正を実行し、
前記経時変化補正後の前記識別情報に対して、前記補助データを用いたエラー訂正を実行する、
請求項11に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム、コントローラおよび制御方法に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。NAND型フラッシュメモリを備えるSSD(solid state drive)などのメモリシステムは、サーバやPC(personal computer)といった情報処理装置のストレージとして使用されている。
【0003】
また、近年、データのセキュリティに対する関心が高まっている。これに伴い、データを暗号化して不揮発性メモリに格納する暗号化機能を有するメモリシステムの需要が増加している。
【0004】
データの暗号化に適用し得るセキュリティ技術の一つとして、回路素子の特性のばらつきを指紋(識別情報)として利用するPUF(physical unclonable function)が知られている。PUFには、回路素子の特性の経時変化という問題が存在する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願公開第2019/0138753号明細書
【特許文献2】米国特許出願公開第2017/0063559号明細書
【特許文献3】特開2020-102827号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の一実施形態は、補助データ量の増大を防止しつつ、経時変化による誤り訂正能力の低下を防止することができるメモリシステム、コントローラおよび制御方法を提供する。
【課題を解決するための手段】
【0007】
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。コントローラは、不揮発性メモリへのデータの書き込みまたは不揮発性メモリからのデータの読み出しを制御する。コントローラは、コントローラ内の回路素子の特性を利用して取得される識別情報を用いて、不揮発性メモリに書き込まれるデータの暗号化に係わる暗号鍵を作成する。コントローラは、暗号鍵の再作成時において取得される識別情報に含まれ得るエラーを訂正するための補助データを作成する。コントローラは、回路素子の特性の経時変化による識別情報の経時変化傾向に関する経時変化情報を取得して補助データに付加する。
【図面の簡単な説明】
【0008】
【
図1】ホストに接続された実施形態のメモリシステムの一構成例を示す図
【
図2】PUFの出力分布シフトとエラー訂正範囲との関係を示す図
【
図3】実施形態のメモリシステムにおける補助データの構成の概要を示す図
【
図4】実施形態のメモリシステムのKEK作成部の一構成例を示す図
【
図5】実施形態のメモリシステムにおけるPUFによって取得される指紋とセキュアスケッチによって作成される補助データとの関係を示す図
【
図6】実施形態のメモリシステムにおける経時変化情報の一作成例を示す図
【
図7】従来のメモリシステムのエラー訂正能力或いは初期エントロピーと、本実施形態のメモリシステム1のエラー訂正能力或いは初期エントロピーとを比較する図
【
図8】実施形態のメモリシステムのエラー訂正能力と符号語長と、比較例のエラー訂正能力と符号語長とを比較する図
【
図9】実施形態のメモリシステムにおける経時変化情報ΔSを用いた経時変化補正の一例を示す図
【
図10】
図9で示した経時変化のエラービット情報を基にエラー訂正をする場合のより具体的な実施例を示す第1図
【
図11】
図9で示した経時変化のエラービット情報を基にエラー訂正をする場合のより具体的な実施例を示す第2図
【
図12】実施形態のメモリシステムのエンロールメント時(KEK登録時)の動作手順を示すフローチャート
【
図13】実施形態のメモリシステムの認証時(KEK再作成時)の動作手順を示すフローチャート
【
図14】実施形態のメモリシステム1の経時変化傾向が織り込まれた補助データの作成の第1例の動作手順を示すフローチャート
【
図15】実施形態のメモリシステム1の経時変化傾向が織り込まれた補助データの作成の第2例の動作手順を示すフローチャート
【発明を実施するための形態】
【0009】
以下、実施の形態について、図面を参照して説明する。
【0010】
図1は、本実施形態のメモリシステム1の一構成例を示す図である。
図1には、メモリシステム1と、メモリシステム1に接続されるホスト2とを含む、情報処理システムの一構成が併せて示されている。ホスト2は、サーバやPCといった情報処理装置である。
【0011】
メモリシステム1は、コントローラ11と、DRAM(dynamic RAM[random access memory])12と、NAND型フラッシュメモリ(NANDメモリ)13とを有する。コントローラ11は、たとえばSoC(System on a chip)として構成される。ここでは、メモリシステム1が、NANDメモリ13を備えるSSDとして実現されている場合について例示するが、これに限らず、メモリシステム1は、HDD(hard disk drive)などとして実現されてもよい。DRAM12は、コントローラ11に内蔵されてもよい。
【0012】
コントローラ11は、ホスト2からコマンドを受け付け、DRAM12をバッファとして利用しながら、ホスト2から転送されてくるデータのNANDメモリ13への書き込み処理や、ホスト2から要求されたデータのNANDメモリ13からの読み出し処理などを実行する。
【0013】
コントローラ11は、制御回路110と、ホストインターフェース回路120と、DRAMインターフェース回路130と、NANDインターフェース回路140とを有する。
【0014】
制御回路110は、メモリシステム1全体の動作を総合的に制御する。制御回路110は、ライト制御部111と、リード制御部112と、DEK(data encryption key)作成部113と、KEK(key encryption key)作成部114と、DEK暗号化/復号部115と、データ暗号化/復号部116とを有する。これらの各部(111~116)は、ハードウェア(電気回路)によって実現されてもよい。あるいは、コントローラ11内のプロセッサ210がプログラムを実行することによって実現されてもよい。
図1には、コントローラ11内のプロセッサ210がプログラムを実行することによって各部(111~116)が実現される例が示されている。プログラムは、たとえば、NANDメモリ13に格納され、メモリシステム1の電源オン時やリセット時にコントローラ11内のメモリ(図示せず)やDRAM12にロードされる。コントローラ11内のメモリは、揮発性のメモリである。
【0015】
ライト制御部111は、ホスト2からのライトコマンドに応じて、当該ライトコマンドに付随するライトデータをNANDメモリ13へ書き込む。リード制御部112は、ホスト2からのリードコマンドに応じて、当該リードコマンドで指定されるリードデータをNANDメモリ13から読み出す。以下、ライトデータやリードデータを、ユーザデータとも称する。
【0016】
本実施形態のメモリシステム1は、NANDメモリ13上のデータの秘匿性を高めるための暗号化機能を提供する。DEK作成部113は、NANDメモリ13へ書き込むユーザデータを暗号化し、または、暗号化された状態でNANDメモリ13から読み出されたユーザデータを復号するためのデータ暗号鍵(DEK)を作成する。DEK作成部113は、たとえばホスト2上でユーザが入力する任意の値を用いてDEKを作成する。DEK作成部113は、たとえば乱数を用いてDEKを作成してもよい。DEK作成部113によって作成されたDEKは、暗号化された状態でNANDメモリ13に格納される。DEKは、たとえばメモリシステム1の電源オン時やリセット時、NANDメモリ13から読み出されてKEKにより復号され、コントローラ11内のメモリに格納される。前述したように、コントローラ11内のメモリは、揮発性のメモリである。
【0017】
KEK作成部114は、DEKを暗号化し、または、暗号化された状態のDEKを復号するための鍵暗号鍵(KEK)を作成する。KEK作成部114は、セキュリティ技術の一つであるPUFで取得した指紋(識別情報)を用いてKEKを作成する。PUFは、回路素子の特性を利用して指紋を取得する。回路素子は、たとえばSRAM(static RAM)である。回路素子の特性とは、たとえば電源オン直後における回路素子の初期状態の個体差である。本実施形態のメモリシステム1における指紋取得対象の回路素子は、コントローラ11内、より好ましくは、KEK作成部114が存在する制御回路110内に設けられる(指紋取得対象素子200)。KEKは、NANDメモリ13には格納されず、DEKを復号するときにのみKEK作成部114内のレジスタに一時保存され、DEK復号後は上書き消去される。前述したように、コントローラ11内のメモリは、揮発性のメモリである。
【0018】
KEK作成部114は、KEKの登録時、指紋と乱数からKEKを作成する。また、KEK作成部114は、たとえばメモリシステム1の電源オン時やリセット時、コントローラ11内のメモリから消失しているKEKを再作成する。KEK作成部114は、KEKの登録時、KEKの再作成時に取得される指紋に含まれ得るエラー(KEKの登録時に取得された指紋との誤差)を訂正するための補助データを作成する。KEK作成部114は、この補助データをNANDメモリ13に格納する。KEK作成部114は、KEKの再作成時、補助データを用いて、当該KEKの再作成時に取得される指紋からKEKの登録時に取得された指紋を復元する。補助データを作成し、かつ、補助データを用いて、雑音(エラー)を含む指紋から本来の指紋を抽出するモジュールは、ファジー抽出器などと称される。また、ファジー抽出器の一構成要素である、補助データを作成するモジュールは、セキュアスケッチなどと称される。つまり、KEK作成部114は、セキュアスケッチを含むファジー抽出器の機能を備えている。補助データは、ヘルパデータとも称される。
【0019】
たとえば、メモリシステム1が不正者に持ち去られ、暗号鍵を探るために、解体が行われたと想定する(侵襲攻撃)。解体時、回路素子(指紋取得対象素子200)の特性は変化する。そのため、略同一の指紋が取得される可能性は極めて低く、たとえ補助データを用いてもエラー訂正が不可能なため登録時のKEKを再現することができない。DEK鍵を復号することができないため、よって、NANDメモリ13上のデータの秘匿性は保たれる。略同一の指紋とは、KEKの登録時に取得された指紋を補助データで復元することができるまでに近似する指紋である。
【0020】
あるいは、NANDメモリ13が着脱自在に構成されており、抜脱された状態のNANDメモリ13が不正者に持ち去られたと想定する。このNANDメモリ13が、同一仕様の別のメモリシステム1に装着されたとしても、回路素子(指紋取得対象素子200)が物理的に異なる当該別のメモリシステム1において略同一の指紋が取得される可能性は極めて低く、よって、NANDメモリ13上のデータの秘匿性は保たれる。
【0021】
DEK暗号化/復号部115は、KEKを用いて、DEKを暗号化し、または、暗号化された状態のDEKを復号する。データ暗号化/復号部116は、DEKを用いて、ユーザデータを暗号化し、または、暗号化された状態のユーザデータを復号する。
【0022】
ホストインターフェース回路120は、ホスト2との通信を制御する。DRAMインターフェース回路130は、DRAM12との通信を制御する。NANDインターフェース回路140は、NANDメモリ13との通信を制御する。
【0023】
ところで、KEKの再作成時に取得される指紋は、回路素子の特性の経時変化により、KEKの登録時から変化する。
図2は、PUFの出力分布シフトとエラー訂正範囲との関係を示す図である。
【0024】
図2(A)は、従来におけるPUFの出力分布シフトとエラー訂正範囲との関係を示している。縦軸が確率密度、横軸がPUF出力値(取得指紋)である。補助データは、初期状態(ここでは、KEKの登録時)におけるピーク値である指紋Wに近似する指紋W´を指紋Wに訂正するためのデータとして作成される。そして、従来、補助データによる訂正可能範囲は、初期状態におけるピーク値である指紋Wを基準とする固定的な範囲となっていた。そのため、回路素子の特性の経時変化により、分布がずれると、訂正可能な範囲が減少する。つまり、誤り訂正能力が低下する。ΔWnは、経時変化による分布のシフト量である。また、誤り訂正能力の低下を防止するために、分布のずれを補い得る補助データを作成するとした場合、補助データ量が増大する。
【0025】
そこで、本実施形態のメモリシステム1においては、KEKの登録時、回路素子の特性の経時変化による指紋の経時変化傾向に関する情報(経時変化情報)を取得し、当該KEK登録時に作成する補助データに付加する。KEKの再作成時には、取得された指紋に対して、経時変化情報を用いた経時変化補正を実行し、経時変化補正後の指紋に対して、補助データを用いたエラー訂正を実行する。つまり、本実施形態のメモリシステム1においては、
図2(B)に示すように、補助データによる訂正可能範囲(幅)を不変とすることができる。
【0026】
これにより、本実施形態のメモリシステム1は、補助データ量の増大を抑止しつつ、経時変化による誤り訂正能力の低下を防止する。
【0027】
図3は、本実施形態のメモリシステム1における補助データの構成の概要を示す図である。破線の左側のエンロールメントとは、準備段階であり、本実施形態のメモリシステム1においては、KEKの登録時に相当する。破線の右側の認証とは、使用段階であり、本実施形態のメモリシステム1においては、KEKの再作成時に相当する。
【0028】
回路素子(指紋取得対象素子200)の特性を利用して取得する指紋Wの経時変化シフト量ΔWには、回路素子に固有の傾向がある。そこで、本実施形態のメモリシステム1においては、指紋W´を指紋Wに訂正するための補助データSを作成することに加えて、指紋W´+ΔWを指紋W´に訂正するための経時変化情報ΔSを作成する。以下、補助データSと経時変化情報ΔSとを補助データPと総称することがある(P=S+ΔS)。本実施形態のメモリシステム1は、経時変化シフト量ΔWの傾向(ΔS)が織り込まれた補助データPを作成する。
【0029】
補助データSと経時変化情報ΔSとからなる補助データPを作成する本実施形態のメモリシステム1は、取得された指紋W´+ΔWに対して、経時変化情報ΔSを用いて、指紋W´に訂正するための経時変化補正を実行する。本実施形態のメモリシステム1は、この経時変化補正後の指紋W´に対して、補助データSを用いて、指紋Wに訂正するためのエラー訂正を実行する。
【0030】
図4は、KEK作成部114の一構成例を示す図である。
【0031】
前述したように、KEK作成部114は、セキュアスケッチを含むファジー抽出器の機能を備えている。
図4中、破線300で示されるブロックは、エンロールメント、つまりKEKの登録時に稼働するブロックである。また、破線400で示されるブロックは、認証、つまりKEKの再作成時に稼働するブロックである。
【0032】
KEKの登録時に稼働するブロック300は、PUF部310と、乱数生成部(RNG:random number generator)320と、セキュアスケッチ部330と、ハッシュ関数部340とを有する。また、セキュアスケッチ部330は、BCH符号化部331と、論理演算部332と、経時補正部333とを有する。
【0033】
PUF部310は、回路素子(指紋取得対象素子200)の特性を利用して指紋Wを取得する。乱数生成部320は、たとえばシステム時刻を使って乱数rを生成する。
【0034】
セキュアスケッチ部330のBCH符号化部331は、乱数生成部320によって生成された乱数rを使って、KEKの再作成時に取得される指紋W´に含まれ得るエラーを訂正するためのBCH符号rencを作成する。論理演算部332は、BCH符号化部331によって作成されたBCH符号rencと、PUF部310によって取得された指紋Wとの排他的論理和を取って、補助データSを作成する。経時補正部333は、一定時間経過後の状態を疑似的に構築する環境下の回路素子(指紋取得対象素子200)からPUF部310によって取得される指紋W+ΔWを用いて、経時変化情報ΔSnを取得する。一定時間経過後の状態は、温度、電圧、クロックジッタ等の変動を付加することで構築する。経時変化情報ΔSnの取得については後述する。
【0035】
図5に、PUF部310によって取得される指紋と、セキュアスケッチ部330によって作成される補助データとの関係を示す。Wは、KEK登録時にPUF部310によって取得される指紋である。Sは、セキュアスケッチ部330によって作成される補助データである。ΔW
0は、t
0時間経過後にPUF部410によって取得される指紋に含まれる経時変化シフト量である。ΔS
0は、セキュアスケッチ部330によって作成されるt
0時間経過後の経時変化シフト量ΔW
0の傾向を示す経時変化情報ΔS
0である。ΔW
1は、t
1時間経過後にPUF部410によって取得される指紋に含まれる経時変化シフト量である。ΔS
1は、セキュアスケッチ部330によって作成されるt
1時間経過後の経時変化シフト量ΔW
1の傾向を示す経時変化情報である。ΔW
2は、t
2時間経過後にPUF部410によって取得される指紋に含まれる経時変化シフト量である。ΔS
2は、セキュアスケッチ部330によって作成されるt
2時間経過後の経時変化シフト量ΔW
2の傾向を示す経時変化情報である。また、前述のΔWは、ΔW
0、ΔW
1、ΔW
2、…の総称であり、前述のΔSは、ΔS
0、ΔS
1、ΔS
2、…の総称である。
【0036】
図4に戻って、KEK作成部114の一構成例の説明を続ける。
【0037】
ハッシュ関数部340は、ハッシュ関数を用いて、PUF部310によって取得された指紋WからKEKを作成する。前述したように、このKEKは、NANDメモリ13には格納されない。補助データPだけが、NANDメモリ13に格納される。
【0038】
一方、KEKの再作成時に稼働するブロック400は、PUF部410と、エラー補正部420と、ハッシュ関数部430とを有する。PUF部410とハッシュ関数部430とは、ブロック300のPUF部310とハッシュ関数部340とそれぞれ同じものである。エラー補正部420は、経時補正部421と、第1論理演算部422と、BCH復号部423と、BCH符号化部424と、第2論理演算部425とを有する。BCH符号化部424は、セキュアスケッチ330のBCH符号化部331同じものであるが異なっていてもよい。
【0039】
PUF部410は、回路素子(指紋取得対象素子200)の特性を利用して指紋W´+ΔWnを取得する。エラー補正部420の経時補正部421は、補助データSに付加された経時変化情報ΔSnを用いて、PUF部410によって取得された指紋W´+ΔWnに対して経時変化補正を行う。第1論理演算部422は、経時補正部421による経時補正後の指紋W´と、補助データSとの排他的論理和を取って、BCH符号renc´を作成する。このBCH符号renc´は、セキュアスケッチ部330のBCH符号化部331によって作成されるBCH符号rencにエラーが含まれているものとみなすことができる。BCH復号部423は、エラー訂正を行いつつ、このBCH符号renc´を乱数rに復号する。
【0040】
BCH符号化部424は、BCH復号部423によって復元された乱数rを使って、BCH符号rencを作成する。第2論理演算部425は、BCH符号化部424によって作成されたBCH符号rencと、補助データSとの論理和を取って、指紋Wを復元する。
【0041】
ハッシュ関数部430は、ハッシュ関数を用いて、第2論理演算部425によって復元された指紋WからKEKを再作成する。
【0042】
エラー訂正能力を強化して、指紋W´+ΔWnを指紋Wに訂正するための補助データSを作成する場合、補助データSの量が膨大となる、或いは初期エントロピーが減少する。これに対して、本実施形態のメモリシステム1は、指紋W´+ΔWnを指紋W´に訂正するための経時変化情報ΔSを作成して、指紋W´を指紋Wに訂正するための補助データSに付加する。本実施形態のメモリシステム1は、まず、経時変化情報ΔSを用いて、指紋W´+ΔWnを指紋W´に訂正し、次に、補助データSを用いて、指紋W´を指紋Wに訂正する。この手順を踏むことにより、本実施形態のメモリシステム1は、補助データP(S+ΔS)のデータ量の増大を防止しながら、初期エントロピーの減少も防ぐ。
【0043】
図6は、本実施形態のメモリシステム1における経時変化情報ΔSの一作成例を示す図である。
【0044】
ここでは、最長256ビットのデータまで経時変化補正を施すことができる経時変化情報ΔSを作成する場合を想定する。KEK作成部114、より具体的には、セキュアスケッチ部330の経時補正部333は、一定時間経過後の状態を疑似的に構築する環境下の回路素子(指紋取得対象素子200)からPUF部310が取得する256ビットのデータを取得する。
【0045】
経時補正部333は、取得された複数の256ビットのデータを解析して、経時変化を起こしやすいビット位置を特定する。経時補正部333は、各ビットが経時変化補正対象のデータのビットと一対一で対応づけられる256ビットのデータであって、経時変化しないビットは0で埋め、経時変化するビットは1で埋めたデータを経時変化情報ΔSとして作成する。
図6の元のデータとは、本実施形態のメモリシステム1においては、指紋Wを用いて作成される、指紋W´を指紋Wに訂正するための補助データSである。
【0046】
図7は、従来のメモリシステム1のエラー訂正能力或いは初期エントロピーと、本実施形態のそれを比較する図である。ここでは、BCH符号化部331が127ビット符号語を生成する場合を想定する。また、KEKの登録直後、つまりエンロールメント直後の初期状態においては初期エントロピーが36ビット或いは29ビットの場合を想定する。初期状態においては、KEKの再作成時、つまり認証時における経時変化シフト量ΔWは0である。従来例1と従来例2ではでは通常のエラーと経時変化のエラーΔWの合計15ビットまで訂正が可能である。従来例1で経時変化が9ビット発生した場合には通常のエラーは6ビットまでしか訂正できない。従来例2では経時変化ΔWが15ビット発生した場合にはエラー訂正可能であるが、通常エラーは訂正できない。
【0047】
従来例3では経時変化ΔWを15ビット、通常エラーを6ビット、全体で21ビットのエラー訂正能力をもたせた場合である。ただし、この場合にはメッセージ長r、即ち初期エントロピーが29ビットに低下するのを免れない。つまりセキュリティ強度が大きく低下することになる。
【0048】
一方、本実施形態のメモリシステム1は初期エントロピーの低下なしに経時変化によるエラー15ビットを訂正しながら、通常のエラー6ビットが訂正可能である。
【0049】
図8は、本実施形態のメモリシステム1のエラー訂正能力と符号語長と、比較例のエラー訂正能力と符号語長とを比較する図である。
【0050】
ここでは、乱数生成部320が130或いは131ビットのデータ長(メッセージ長)の乱数を生成する場合を想定する。また、KEKの登録直後、つまりエンロールメント直後の初期状態において131ビット中18ビットのエラーを訂正可能なエラー訂正能力を備えることを想定する。
【0051】
初期状態においては、KEKの再作成時、つまり認証時における経時変化シフト量ΔWは0である。従って、必要なエラー訂正能力は18(18+0)ビットとなる。18ビットをエラー訂正するためにBCH符号化部331が作成するBCH符号rencは255ビットとなる。そのため、論理演算部332によって作成される補助データP(S)は255ビットとなる。
【0052】
比較例1は、補助データP(Sのみ)にて、初期状態と同等のエラー訂正能力を、経時変化シフト量ΔWが最大37ビットまで維持する場合の例である。この場合、必要なエラー訂正能力は55(18+37)ビットである。55ビットをエラー訂正するためのBCH符号rencは511ビットとなる。補助データP(S)は511ビットとなる。
【0053】
一方、本実施形態のメモリシステム1は、補助データP(S+ΔS)にて、初期状態と同等のエラー訂正能力を、経時変化シフト量ΔWが最大131ビットまで維持する。この場合、必要なエラー訂正能力は149(18+131)ビットである。149ビットをエラー訂正するためのBCH符号rencのデータ量は、通常ならば、比較例1の511ビットを超える膨大な量となる。これに対して、経時変化シフト量ΔWの傾向を示す経時変化情報ΔS(131ビット)を作成して補助データSに付加する本実施形態のメモリシステム1においては、補助データP(S+ΔS)のデータ量は、比較例1の511ビットよりも少ない386(255+131)ビットで済む。より具体的には、t0時間経過後の補助データP(S+ΔS0)、t1時間経過後の補助データP(S+ΔS1)、t2時間経過後の補助データP(S+ΔS2)のいずれも386ビットとなる。ΔSを時系列的に何段階分作成するかは、仕様などによって任意に決定可能である。
【0054】
このように、本実施形態のメモリシステム1は、補助データ量の増大を防止しつつ、経時変化による誤り訂正能力の低下を防止することができる。
【0055】
図9は、本実施形態のメモリシステム1における経時変化情報ΔSを用いた経時変化補正の一例を示す図である。
【0056】
経時変化情報ΔSを参照することで、経時変化を起こしやすいビット位置を認識することができる。そこで、経時変化補正の対象データ中の経時変化を起こしやすいビットのみを抽出し、順番に並べる。また、同様に残りの経時変化を起こしにくいビットのデータも抽出して順番に並べる。つまり、経時変化を起こしやすいビットのデータの部分と、経時変化を起こしにくいビットのデータの部分とに分けるように、経時変化補正の対象データを並べ替える。ここでは、経時変化を起こしやすいビットのデータの部分、経時変化を起こしにくいビットのデータの部分、の順に並べる例を示すが、逆であってもよい。そして、並べ替え後の経時変化補正の対象データ中の経時変化を起こしやすいビットのデータの部分に対しては、エラー訂正能力を通常よりも強力(大)に設定し、一方、経時変化を起こしにくいビットのデータの部分に対しては、エラー訂正能力を通常に設定する(
図9(A))。
【0057】
つまり、本実施形態のメモリシステム1は、補助データ量の増大を防止しつつ、初期エントロピーと経時変化による誤り訂正能力の低下を防止することに加えて、経時変化を起こしやすいビットのデータの部分に対してのみ、エラー訂正能力を通常よりも強力(大)に設定するという効率化を図る。
【0058】
メモリシステム1は、経時変化を起こしやすいビットのデータの部分と、経時変化を起こしにくいビットのデータの部分とに対して、それぞれ、エラー訂正を行った後、元の順に並べ、経時変化補正が施されたデータを復元する(
図9(B))。
【0059】
図10および
図11は、
図9で示した経時変化のエラービット情報を基にエラー訂正をする場合のより具体的な実施例である。まず、エンロールメント時には乱数部320からの出力であるメッセージr(U1)をr1、r2(U2)に分割する(r=r1+r2)。ここでr1のビット長とr2のビット長の比率は将来に経時変化が発生すると予測されるPUF部(310)からのw1と、残りのビットw2の比と同じになる。即ちr1/r2=w1/w2となるようにr1、r2を設定する。メッセージr1はエラー訂正能力の高い巡回符号器(U3)に入力し、符号語(r1と誤り検出符号c1)を生成する。同様にメッセージr2はエラー訂正能力の低い巡回符号器(U4)に入力し、符号語(r2と誤り検出符号c2)を生成する。
【0060】
一方、PUF部(301)からの出力w(U7)は将来に経時変化が発生するビット(*で表現するU6)を含む。wはw1とw2に分割する(w=w1+w2)(U8)。ここでw1は将来に経時変化が発生すると予測されるw中の各ビットから抽出したビット列の集合である。w2は残りの経時変化が発生しにくいビットの集合である。これら並べ替えたw1+w2(U8)と上述した符号語(U5)をそれぞれXOR回路(U9)に入力し、出力としてヘルパデータS(U10)を得る。
【0061】
次に認証ではPUF部(310)からの出力w´(U12)には経時変化のビットエラー(*)と通常のビットエラー(★で示すU11)の2種類が含まれる。w´をエンロールメントでの手順と同様にw1´とw2´に分割する(w´=w1´+w2´)(U13)。ここでw1´は経時変化が発生すると予測されたw´中の各ビットから抽出したビット列の集合である。w2´は残りの経時変化が発生しにくいビットの集合である。
【0062】
並べ替えたw1´+w2´(U13)はヘルパデータS(U14)と共にXOR回路(U15)に入力する。すると出力に経時変化によるエラービットと通常エラーを含んだ符号語(r1´+c2´)と、通常のエラービットを含んだ符号語(r2´+c2´)がそれぞれ得られる。経時変化によるエラービットと通常エラーを含んだ符号語(r1´+c2´)はエンロールメント時に予想できていたために、強力なエラー訂正能力をもつ巡回符号検出器(U17)に入力する。出力としてエラー訂正されたr1を得る(U19)。同様に通常のエラービットのみを含んだ符号語(r2´+c2´)はエラー訂正能力の低い巡回符号検出器(U18)に入力し、エラー訂正された出力r2を得る(U19)。r1とr2は元の経時変化位置情報ビット(
図9(A))を参照し元のメッセージrを復元する。
【0063】
なお、r1+c1、r2+c2の組み合わせは、エラー訂正能力や初期エントロピーに応じて生成可能な符号語長の長さの範囲で任意に選択可能である。例えば、(63ビット、63ビット)、(127ビット、63ビット)、(255ビット、127ビット)である。
【0064】
図12は、本実施形態のメモリシステム1のエンロールメント時(KEK登録時)の動作手順を示すフローチャートである。
【0065】
―メモリシステム1(KEK作成部114)は、回路素子(指紋取得対象素子200)の特性を利用して指紋を取得する(S101)。メモリシステム1は、取得した指紋を用いて、暗号鍵(KEK)を作成する(S102)。
【0066】
メモリシステム1は、暗号鍵の再作成時に取得される指紋に含まれ得るエラーを訂正するための補助データを作成する(S103)。また、メモリシステム1は、回路素子の特性の経時変化傾向に関する経時変化情報を取得する(S104)。経時変化情報の取得については、
図13、
図14を参照して詳述する。
【0067】
メモリシステム1は、経時変化情報を付加した補助データを不揮発性メモリ(NANDメモリ13)に格納する(S105)。S102で作成した暗号鍵は、揮発性メモリに格納されることはあっても、不揮発性メモリに格納されることはない。
【0068】
図13は、本実施形態のメモリシステム1の認証時(KEK再作成時)の動作手順を示すフローチャートである。
【0069】
メモリシステム1(KEK作成部114)は、回路素子(指紋取得対象素子200)の特性を利用して指紋を取得する(S201)。メモリシステム1は、まず、補助データに付加されている経時変化情報を用いて、取得した指紋に対して経時補正を実行する(S202)。次に、メモリシステム1は、補助データを用いて、経時補正後の指紋に対してエラー補正を実行する(S203)。
【0070】
メモリシステム1は、エラー補正後の指紋を用いて、エンロールメント時の暗号鍵を再作成する(S204)。この暗号鍵も、揮発性メモリに格納されるのみであり、不揮発性メモリに格納されることはない。
【0071】
図14は、本実施形態のメモリシステム1の経時変化傾向が織り込まれた補助データの作成の第1例の動作手順を示すフローチャートである。
【0072】
メモリシステム1(KEK作成部114)は、回路素子(指紋取得対象素子200)の特性を調べるためのチャレンジ入力を行う(S301)。チャレンジ入力は、回路素子から何らかのレスポンスを得られるものであれば、どのようなものであってもよい。メモリシステム1は、このチャレンジ入力を、温度、電圧、クロックジッタ等の変動を付加しながら、規定回数以上繰り返す。温度、電圧、クロックジッタ等の変動の付加は、一定時間経過後の状態を疑似的に構築することを意図するものである。メモリシステム1は、チャレンジ入力に対して回路素子から得られるレスポンス(PUFレスポンス)の分布を測定する(S302)。PUFレスポンスは、
図2のPUF出力値と同義である。
【0073】
規定回数以上繰り返される、チャレンジ入力およびレスポンスの分布の測定には、補助データSの作成を意図するもの、経時変化情報ΔS0の作成を意図するもの、経時変化情報ΔS1の作成を意図するもの、経時変化情報ΔS2の作成を意図するもの、などが含まれ得る。
【0074】
メモリシステム1は、チャレンジ入力およびレスポンスの分布の測定を規定回数以上行うと(S303:Yes)、当該規定回数以上の測定結果に基づき、指紋として取得されるビット列中の経時変化可能性の高いビット位置を特定する(S304)。特定不能であった場合(S305:Yes)、メモリシステム1は、S301~S304の処理を再実行する。
【0075】
経時変化可能性の高いビット位置が特定された場合(S305:No)、メモリシステム1は、レスポンスの分布中央値を特定する(S306)。メモリシステム1は、S304の特定結果と、S306の特定結果とに基づき、経時変化情報が織り込まれた補助データを作成する(S307)。
【0076】
図15は、本実施形態のメモリシステム1の経時変化傾向が織り込まれた補助データの作成の第2例の動作手順を示すフローチャートである。この第2例は、経時変化可能性が極めて高いビットを最初から除去する点と、経時変化可能性が通常より高いビットについてはエラー訂正能力が強力(大)な補助データを作成する点とが要点である。
【0077】
S401~S405までは、
図14のS301~S305までと同じである。経時変化可能性の高いビット位置が特定されると(S405:No)、メモリシステム1(KEK作成部114)は、当該特定されたビット位置の各ビットについて、特定の閾値以上に不安定か否かを判定する(S406)。特定の閾値以上に不安定である場合(S406:Yes)、メモリシステム1は、そのビットを除去する(S407)。
【0078】
続いて、メモリシステム1は、特定されたビット位置の各ビットについて、特定の閾値以下で不安定か否かを判定する(S408)。メモリシステム1は、特定の閾値以下で不安定なビット群(S408:Yes)と、それ以外のビット群(S408:No)とに分け、前者についてはS409~S410の処理を実行し、後者についてはS411の処理を実行する。
【0079】
具体的には、特定の閾値以下で不安定なビット群について、メモリシステム1は、不安定なビット位置を特定し(S409)、エラー訂正能力が強力(大)な補助データを計算する(S410)。一方、それ以外のビット群について、メモリシステム1は、エラー訂正能力が通常(小)の補助データを計算する(S411)。
【0080】
メモリシステム1は、S409で特定された不安定なビット位置と、S410で計算されエラー訂正能力が強力(大)な補助データと、S411で計算されたエラー訂正能力が通常(小)の補助データとを組み合わせて、経時変化情報が織り込まれた補助データを作成する(S307)。
【0081】
以上のように、本実施形態のメモリシステム1は、エンロールメント時、回路素子(指紋取得対象素子200)の特性を利用して取得される指紋の経年変化傾向を補助データに織り込むことにより、補助データ量の増大を防止しつつ、経時変化による誤り訂正能力の低下を防止することができる
なお、ここでは、PUFの出力である指紋を、DEKを暗号化するためのKEKを作成するために使用する例について説明したが、その用途は、これに限らない。たとえば、KEKによるDEKの暗号化が行われない場合において、DEKを作成するために使用してもよい。さらには、指紋の用途は、暗号鍵の作成に限られない。本実施形態において説明した指紋の経年変化傾向を補助データに織り込む方法は、メモリシステムに限らず、PUFでセキュリティ強化を図る様々なシステムに適用することができる。
【0082】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0083】
1…メモリシステム、2…ホスト、11…コントローラ、12…DRAM、13…NANDメモリ、110…制御回路、111…ライト制御部、112…リード制御部、113…DEK作成部、114…KEK作成部、115…DEK暗号化/復号部、116…データ暗号化/復号部、120…ホストインターフェース回路、130…DRAMインターフェース回路、140…NANDインターフェース、200…指紋取得対象素子、310…PUF部、320…乱数生成部、330…セキュアスケッチ部、331…BCH符号化部、332…論理演算部、333…経時補正部、340…ハッシュ関数部、410…PUF部、420…エラー補正部、421…経時補正部、422…第1論理演算部、423…BCH復号部、424…BCH符号化部、425…第2論理演算部、430…ハッシュ関数部。