(57)【特許請求の範囲】
【請求項１】
複数のメモリセルが配置されるメモリセルアレイと、
乱数を発生させる乱数生成回路と、
を具備し、
前記乱数生成回路は、
前記メモリセルの複数の閾値電圧分布のそれぞれの範囲内から制御パラメータとなる読み出し電圧を設定し、  
前記制御パラメータに基づいて、前記メモリセルからデータを読み出し、前記読み出し結果に基づいて乱数パラメータを生成する乱数制御回路と、
前記乱数パラメータをシード値として用いて前記乱数を発生させる擬似乱数生成回路と、
を備え、
前記乱数制御回路は、
前記制御パラメータを生成する制御パラメータ発生回路と、
入力される前記メモリセルの読み出しデータについて積算処理を行って前記乱数パラメータを生成する積算回路と、
を備え、
前記制御パラメータ発生回路は、
ページアドレス設定回路と、
読み出し電圧設定回路と、
を備え、
前記制御パラメータを生成する際、
前記ページアドレス設定回路は、第１の信号及び前記乱数に基づいて、前記制御パラメータの一部となる前記メモリセルアレイのページアドレスを設定し、
前記読み出し電圧設定回路は、前記第１の信号及び前記乱数に基づいて、前記制御パラメータの一部となる前記読み出し電圧を設定する
半導体記憶装置。
【請求項２】
複数のメモリセルが配置されるメモリセルアレイと、
乱数を発生させる乱数生成回路と、
を具備し、
前記乱数生成回路は、
前記メモリセルの複数の閾値電圧分布のそれぞれの範囲内から制御パラメータとなる読み出し電圧を設定し、  
前記制御パラメータに基づいて、前記メモリセルからデータを読み出し、前記読み出し結果に基づいて乱数パラメータを生成する乱数制御回路と、
前記乱数パラメータをシード値として用いて前記乱数を発生させ、前記乱数を前記乱数制御回路に帰還させる擬似乱数生成回路とを備え、
前記乱数制御回路は、
前記制御パラメータを生成する制御パラメータ発生回路と、
入力される前記メモリセルの読み出しデータについて積算処理を行って前記乱数パラメータを生成する積算回路と、
を備え、
前記制御パラメータ発生回路は、
ページアドレス設定回路と、
読み出し電圧設定回路と、
を備え、
前記制御パラメータを生成する際、
前記ページアドレス設定回路は、第１の信号及び前記乱数に基づいて、前記制御パラメータの一部となる前記メモリセルアレイのページアドレスを設定し、
前記読み出し電圧設定回路は、前記第１の信号及び前記乱数に基づいて、前記制御パラメータの一部となる前記読み出し電圧を設定する
半導体記憶装置。
【請求項３】
前記擬似乱数生成回路に与えるクロックを発生させるクロック発生回路を更に具備する
請求項１または２に記載の半導体記憶装置。
【請求項４】
前記擬似乱数生成回路は、設定信号入力端子に前記シード値が入力され、データ入力端子に前記乱数が入力され、クロック入力部に前記クロック生成回路より発生される前記クロックが入力されるレジスタ回路を備える
請求項３に記載の半導体記憶装置。
【請求項５】
前記乱数制御回路は、前記読み出し電圧を設定する際、
前記メモリセルの各閾値分布を、前記閾値分布の中心点を基準として、所定の幅で複数のレベルに区切り、前記レベルを選択することを特徴とする請求項１乃至４のいずれか一項に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
半導体記憶装置に関するものである。
【背景技術】
【０００２】
セキュリティーを要する分野において、秘密鍵や複数者間の認証処理におけるチャレンジデータなどを生成するために、乱数発生器が用いられる。
【０００３】
近年では、例えば、スマートフォンやタブレットPCなど、回路規模および消費電流の制約が厳しい環境においても、商用コンテンツの利用や課金・決済などに用いるために性能のよい乱数を必要とする環境が増えてきている。
【０００４】
一方で、ここで例に挙げたスマートフォンやタブレットPCなどのモバイル機器においては、不揮発性メモリとして、例えば、ＮＡＮＤ型フラッシュメモリ等が主流として用いられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−５５２０５号公報
【特許文献２】特開２００８−１１７４７１号公報
【特許文献３】特開２００４−３２６８６７号公報
【特許文献４】特開２００８−２６９４７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
高性能な乱数を生成することができ、予測困難性を向上できる半導体記憶装置を提供する。
【課題を解決するための手段】
【０００７】
実施形態によれば、一態様に係る半導体記憶装置は、複数のメモリセルが配置されるメモリセルアレイと、乱数を発生させる乱数生成回路と、を具備し、前記乱数生成回路は、前記メモリセルの複数の閾値電圧分布のそれぞれの範囲内から制御パラメータとなる読み出し電圧を設定し、前記制御パラメータに基づいて、前記メモリセルからデータを読み出し、前記読み出し結果に基づいて乱数パラメータを生成する乱数制御回路と、前記乱数パラメータをシード値として用いて前記乱数を発生させる擬似乱数生成回路とを備え、前記乱数制御回路は、前記制御パラメータを生成する制御パラメータ発生回路と、入力される前記メモリセルの読み出しデータについて積算処理を行って前記シード値を生成する積算回路と、を備え、前記制御パラメータ発生回路は、ページアドレス設定回路と、読み出し電圧設定回路と、を備え、前記制御パラメータを生成する際、前記ページアドレス設定回路は、第１の信号及び前記乱数に基づいて、前記制御パラメータの一部となる前記メモリセルアレイのページアドレスを設定し、前記読み出し電圧設定回路は、前記第１の信号及び前記乱数に基づいて、前記制御パラメータの一部となる前記読み出し電圧を設定する。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る半導体記憶装置の全体構成例を示すブロック図。
【図２】図１中のブロック（BLOCK）を示す等価回路図。
【図３】消去状態のメモリセルを示す断面図。
【図４】電子を注入する際のメモリセルを示す断面図。
【図５】書き込み状態のメモリセルを示す断面図。
【図６】電子を放出する際のメモリセルを示す断面図。
【図７】２値メモリセルの閾値分布を示す図。
【図８】ベリファイ動作有無の閾値分布を示す図。
【図９】多値メモリセルの閾値分布を示す図。
【図１０】多値メモリセルの劣化モードの閾値分布を示す図。
【図１１】第１の実施形態に係る乱数発生回路を示すブロック図。
【図１２】図１１中の擬似乱数発生回路の構成例を示す等価回路図。
【図１３】図１１中の乱数制御回路の構成例を示すブロック図。
【図１４Ａ】図１３中の制御パラメータ発生回路の構成例を示すブロック図。
【図１４Ｂ】ページアドレス設定回路によって読み出し対象に設定されたページに記録されるデータを示す図。
【図１５】図１３中の積算回路の構成例を示すブロック図。
【図１６】図１５中の積算回路の構成例を示すブロック図。
【図１７】制御パラメータによるデータ読み出しを示す図。
【図１８】制御パラメータによるデータ読み出しを示す図。
【図１９】制御パラメータと閾値分布との関係を示す図（ＭＬＣ）。
【図２０】制御パラメータと閾値分布との関係を示す図（ＳＬＣ）。
【図２１】第２の実施形態に係る乱数発生回路を示すブロック図。
【図２２】第３の実施形態に係る乱数発生回路を示すブロック図。
【図２３】第４の実施形態に係る乱数発生回路を示すブロック図。
【図２４】第５の実施形態に係るシステムを示すブロック図。
【図２５】比較例１に係るプロトコルを示すブロック図。
【図２６】比較例２に係るプロトコルを示すブロック図。
【図２７】第６の実施形態に係る構成例を示すブロック図。
【図２８】第６の実施形態に係る認証フローを示すフロー図。
【図２９】第７の実施形態に係る構成例を示すブロック図。
【図３０】第７の実施形態に係る認証フローを示すフロー図。
【図３１】第８の実施形態に係る構成例を示すブロック図。
【図３２】第８の実施形態に係る認証フローを示すフロー図。
【図３３】第８の実施形態に係る秘密情報のデータ転送を示すブロック図。
【図３４】第９の実施形態に係る構成例を示すブロック図。
【図３５】第９の実施形態に係る認証フローを示すフロー図。
【図３６】第１０の実施形態に係る構成例を示すブロック図。
【図３７】第１０の実施形態に係る認証フローを示すフロー図。
【図３８】第１１の実施形態に係る構成例を示すブロック図。
【図３９】第１１の実施形態に係る認証フローを示すフロー図。
【図４０】第１２の実施形態に係る構成例を示すブロック図。
【図４１】第１２の実施形態に係る認証フローを示すフロー図。
【図４２】第１３の実施形態に係るID retrieval process(1)を示すブロック図。
【図４３】第１３の実施形態に係るID retrieval process(2)を示すブロック図。
【図４４】第１３の実施形態に係るID retrieval process(3)を示すブロック図。
【図４５】第１３の実施形態に係るID retrieval process(4)を示すブロック図。
【図４６】第１４の実施形態に係るID biding process(1)を示すブロック図。
【図４７】第１４の実施形態に係るID biding process(2)を示すブロック図。
【図４８】第１５の実施形態に係る構成例を示すブロック図。
【図４９】第１６の実施形態に係る構成例を示すブロック図。
【図５０】第１７の実施形態に係る構成例を示すブロック図。
【発明を実施するための形態】
【０００９】
［乱数発生器（乱数発生回路）について］
まず、実施形態の説明の前に、乱数発生器（乱数発生回路）の概要について説明する。
【００１０】
上述のように、セキュリティーを要する分野において、秘密鍵や複数者間の認証処理におけるチャレンジデータなどを生成するために、乱数発生器が用いられる。この乱数発生器は、大別すると、以下の２つに分類される。
【００１１】
第１には、確定的乱数発生器（Deterministic RNG）もしくは疑似乱数発生器（Pseudo RNG）と呼ばれているものがある。これらの乱数発生器は、所定の初期値（シード）を設定することで乱数を発生する。確定的乱数発生器の例としては、FIPS 140-2 Annex Cに列挙されている暗号器に基づくものや、簡易的なものとしては線形帰還シフトレジスタ(LFSR:Linear Feedback Shift Resistor)からなるＭ系列発生器などが存在する。確定的乱数発生器は、ソフトウェア単独、ハードウェア単独、両者の併用など、の構成をとることができる。
【００１２】
第２には、不確定的乱数発生器（Nondeterministic RNG）もしくは物理乱数発生器（Physical RNG）と呼ばれているものであり、主としてハードウェアから構成される。不確定的乱数発生器の例としては、電気回路の熱雑音（ジョンソンノイズ）を増幅した回路や、高速発振回路と非周期の平滑化回路による構成などが存在する。
【００１３】
ここで、上記乱数発生器から生成される乱数として要求される主な性能としては、以下の３つの性能がある。
【００１４】
「予測困難性」：予測困難性とは、観測された乱数から、次段の乱数を予測できないことをいう。そのためには、例えば、非周期性、非規則性等が求められる。
【００１５】
「一様性」：一様性とは、出力される乱数において、0と1との出現確率が統計的に同等であることをいう。
【００１６】
「長周期性」：長周期性とは、出力される乱数が再度出力される周期が十分に長いことをいう。
【００１７】
ここで、一様性、長周期性については、確定的乱数発生器として上に例として挙げたＭ系列発生器を適切なレジスタ段数で構成することで実現可能である。一方で、予測困難性については、Ｍ系列発生器では観測された乱数列から容易にＭ系列発生器の構成が判明するため、出力乱数が予測でき、要求性能を満たすことが困難である。このため、コンテンツ保護や決済用セキュリティーの秘密鍵生成などに用いる場合、前述のFIPS 140-2 Annex Cに列挙された暗号器に基づくものを用いるか、もしくはICカードなどでは不確定的乱数発生器を独自の方法構成することなどが必要である。
【００１８】
しかしながら、暗号器に基づく確定的乱数発生器は、ハードウェアにより実現する場合は多倍長演算回路や多段非線形回路などを要し、通常数10K〜100Kゲート以上の回路規模を要する。一方で、不確定的乱数発生器として例に挙げた熱雑音増幅回路でも、熱雑音は大きい場合でも数十μV で、演算増幅器や差動アンプを使い、4 〜 5 桁増幅して、更に0と1 のバランスを調整する回路が付加されるため、回路規模は大きくなる。また、高速発振回路と非周期の平滑化回路による構成でも、発振回路が持つ周期性が乱数に残ってしまう傾向があり、更に消費電流が大きくなるという傾向がある。
【００１９】
そのため、上記のように、回路規模および消費電流の制約が厳しい環境においては、上記に挙げたものを適用することは困難である。
【００２０】
近年では、上述したように、スマートフォンやタブレットPCなど、回路規模および消費電流の制約が厳しい環境においても、商用コンテンツの利用や課金・決済などに用いるために性能のよい乱数を必要とする環境が増えてきている。
【００２１】
一方で、ここで例に挙げたスマートフォンやタブレットPCなどのモバイル機器においては、不揮発性メモリとして、例えば、ＮＡＮＤ型フラッシュメモリ等が主流として用いられるという現状がある。
【００２２】
そのため、ＮＡＮＤ型フラッシュメモリ等の半導体記憶装置が、乱数生成機能を有している場合の利用価値は高い。
【００２３】
そこで、以下の実施形態では、半導体記憶装置として、ＮＡＮＤ型フラッシュメモリを一例に挙げ、半導体記憶装置内に乱数発生器を構成する具体例について提案する。
【００２４】
以下、実施形態について図面を参照して説明する。この説明においては、半導体記憶装置の一例として、ＮＡＮＤ型フラッシュメモリを挙げて説明するが、これに限られることはない。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【００２５】
［第１の実施形態］  
第１の実施形態に係る半導体記憶装置について、図１乃至図２０を用いて説明する。
【００２６】
＜１．構成例＞  
１−１．全体構成例  
まず、図１を用い、第１の実施形態に係る半導体記憶装置の全体構成例について説明する。図示するように、本例では、ＮＡＮＤ型フラッシュメモリが一例として示される。
【００２７】
本例に係るＮＡＮＤ型フラッシュメモリは、メモリセルアレイ１１、乱数発生回路１６、制御回路１９、ビット線制御回路５２、カラムデコーダ５３、データ入出力バッファ５４、データ入出力端子５５、ワード線駆動回路５６、制御信号入力端子５８、電源発生回路５９を備える。
【００２８】
メモリセルアレイ１１は、複数のブロック（ＢＬＯＣＫ１〜ＢＬＯＣＫｎ）により構成される。複数のブロック（ＢＬＯＣＫ１〜ＢＬＯＣＫｎ）のそれぞれは、ワード線およびビット線の交差位置に配置される複数のメモリセルを備える。詳細については、後述する。
【００２９】
乱数発生回路１６は、外部から入力される乱数トリガーコマンドに伴い制御回路１９から出力される乱数トリガー信号に従い、所定の乱数を必要に応じて発生させる。発生された乱数は、制御回路１９の制御に従い、秘密鍵や認証処理におけるチャレンジデータの生成などに用いられ、また必要に応じて、データ入出力端子５５を介して外部のホスト装置に送信される。
【００３０】
本例に係る乱数発生回路１６は、所定の初期値（シード値）を設定することで乱数を発生させる擬似乱数発生回路等を備えるものであり、擬似乱数発生回路としては、例えば、線形帰還シフトレジスタ（LFSR: Linear Feedback Shift Resistor）等がある。詳細については、後述する。
【００３１】
ビット線制御回路５２は、ビット線を介してメモリセルアレイ１１中のメモリセルのデータを読み出し、ビット線を介してメモリセルアレイ１１中のメモリセルの状態を検出する。また、ビット線制御回路５２は、ビット線を介してメモリセルアレイ１１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行う。
【００３２】
ビット線制御回路５２内には、図示しないページバッファ等のデータ記憶回路が設けられ、このデータ記憶回路は、カラムデコーダ５３によって選択される。データ記憶回路に読み出されたメモリセルのデータは、データ入出力バッファ５４を介してデータ入出力端子５５から外部へ出力される。
【００３３】
データ入出力端子５５は、例えば、外部のホスト装置等に接続される。データ入出力端子５５は、例えば８ビット、または１６ビットのバス幅を有している。ＮＡＮＤ型フラッシュメモリはトグルモードインターフェース（toggle mode interface）などの高速インターフェース規格をサポートしてもよい。トグルモードインターフェースでは、例えば、データストローブ信号（DQS）の立ち上がり、立ち下がり両エッジに同期してデータ入出力端子５５を介したデータ転送が行われる。
【００３４】
ホスト装置は、例えば、マイクロコンピュータ等であって、データ入出力端子５５から出力されたデータを受ける。ホスト装置は、ＮＡＮＤ型フラッシュメモリの動作を制御する各種コマンドＣＭＤ（書き込みコマンド、読み出しコマンド、消去コマンド、ステータスリードコマンド、乱数トリガーコマンド等）、アドレスＡＤＤ、およびデータＤＴを出力する。ホスト装置からデータ入出力端子５５に入力された書き込みデータＤＴは、データ入出力バッファ５４を介して、カラムデコーダ５３によって選択された上記データ記憶回路（図示せず）に供給される。一方、コマンドＣＭＤおよびアドレスＡＤＤは、制御回路１９に供給される。
【００３５】
ワード線駆動回路５６は、制御回路１９の制御に従い、メモリセルアレイ１１中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
【００３６】
電圧発生回路５９は、制御回路１９の制御に従い、図示中の接続された上記構成回路の動作に必要な電圧を供給する。例えば、電圧発生回路５９は、ホスト装置から供給される外部電圧を昇圧して、読み出し、書き込みあるいは消去時にワード線に印加される電圧を生成する。
【００３７】
制御回路（Controller）１９は、ＮＡＮＤ型フラッシュメモリの全体の動作を制御するために、接続される各回路に必要な制御信号および制御電圧を与える。制御回路１９は、メモリセルアレイ１１、乱数発生回路１６、ビット線制御回路５２、カラムデコーダ５３、データ入出力バッファ５４、ワード線駆動回路５６、電圧発生回路５９に接続される。接続された上記構成回路は、制御回路１９によって制御される。
【００３８】
制御回路１９は、制御信号入力端子５８に接続され、ホスト装置から制御信号入力端子５８を介して入力されるＷＥ（ライト・イネーブル）信号、ＲＥ（リード・イネーブル）信号、ＡＬＥ（アドレス・ラッチ・イネーブル）信号、ＣＬＥ（コマンド・ラッチ・イネーブル）信号等の制御信号の組み合わせによって制御される。
【００３９】
ここで、機能的に表現すれば、上記ワード線駆動回路５６、ビット線制御回路５２、カラムデコーダ５３、制御回路１９は、データ書き込み回路、データ読み出し回路、およびデータ消去回路を構成する。ホスト装置は、ＮＡＮＤ型フラッシュメモリが書き込み、読み出し、消去などの内部動作を実行中であるか否かを、図示せぬＲＹ／ＢＹ（レディー／ビジー）信号出力端子をモニタすることで検知する。制御回路１９は、ＲＹ／ＢＹ信号出力端子を介して、ＲＹ／ＢＹ信号を出力する。
【００４０】
１−２．ブロック（ＢＬＯＣＫ）の構成例  
次に、図２を用い、第１の実施形態に係るメモリセルアレイを構成するブロック（ＢＬＯＣＫ）の構成例について説明する。ここでは、図１中の一ブロック（ＢＬＯＣＫ１）を一例に挙げて説明する。ここで、このブロックＢＬＯＣＫ１中のメモリセルは、一括してデータ消去されるため、ブロックはデータ消去単位である。
【００４１】
ブロックＢＬＯＣＫ１は、ワード線方向（ＷＬ方向）に配置される複数のメモリセルユニットＭＵから構成される。メモリセルユニットＭＵは、ＷＬ方向と交差するビット線方向（ＢＬ方向）に配置され、電流経路が直列接続される８個のメモリセルＭＣ０〜ＭＣ７からなるＮＡＮＤストリング（メモリセルストリング）と、ＮＡＮＤストリングの電流経路の一端に接続されるソース側の選択トランジスタＳ１と、ＮＡＮＤストリングの電流経路の他端に接続されるドレイン側の選択トランジスタＳ２とから構成される。
【００４２】
尚、本例では、メモリセルユニットＭＵは、８個のメモリセルＭＣ０〜ＭＣ７から構成されるが、２つ以上のメモリセル、例えば、５６個、３２個等から構成されていればよく、８個に限定されるというものではない。
【００４３】
ソース側の選択トランジスタＳ１の電流経路の他端はソース線ＳＬに接続される。ドレイン側の選択トランジスタＳ２の電流経路の他端は、各メモリセルユニットＭＵに対応してメモリセルユニットＭＵの上方に設けられ、ＢＬ方向に延出するビット線ＢＬｍ−１に接続される。
【００４４】
ワード線ＷＬ０〜ＷＬ７は、ＷＬ方向に延び、ＷＬ方向の複数のメモリセルの制御ゲート電極に共通に接続される。選択ゲート線ＳＧＳは、ＷＬ方向に延び、ＷＬ方向の複数の選択トランジスタＳ１に共通に接続される。選択ゲート線ＳＧＤも、ＷＬ方向に延び、ＷＬ方向の複数の選択トランジスタＳ２に共通に接続される。
【００４５】
また、ワード線ＷＬ０〜ＷＬ７ごとにページ（ＰＡＧＥ）が存在する。例えば、図中の破線で囲って示すように、ワード線ＷＬ７には、ページ７（ＰＡＧＥ７）が存在する。このページ（ＰＡＧＥ）ごとに、後述するデータ読み出し動作、データ書き込み動作が行われるため、ページ（ＰＡＧＥ）はデータ読み出し単位であり、データ書き込み単位である。
【００４６】
１−３．メモリセルＭＣについて  
次に、図３乃至図６を用い、セル構成およびデータ書き込み等がされる場合のメモリセルＭＣについて説明する。
【００４７】
図３は、消去状態（Erase state）のメモリセルＭＣを示す。図示するように、メモリセルＭＣは、半導体基板（Si-sub）５１上に、トンネル絶縁膜（Tunnel Oxide）ＴＯ、浮遊ゲート（Floating Gate）ＦＧ、ゲート間絶縁膜（Inter-gate Oxide）ＩＧＯ、および制御ゲート（Control Gate）ＣＧが順次積層され、半導体基板５１中にこの積層構造を挟むように隔離してソース（Source）およびドレイン（Drain）が設けられる。
【００４８】
消去状態のメモリセルＭＣは、浮遊ゲートＦＧに電子が注入されておらず、浮遊ゲートＦＧは正に帯電している。
【００４９】
図４は、浮遊ゲートに電子を注入する（Inserting election）際のメモリセルＭＣを示す。図示するように、制御ゲートＣＧに書き込み電圧Ｖpgmを与えることで、ソースドレインのチャネルを介してトンネル絶縁膜ＴＯをトンネルさせた電子が、浮遊ゲートＦＧに注入される。以下、浮遊ゲートＦＧに電子を注入する動作を、データ書き込みと表現する場合がある。
【００５０】
図５は、書き込み状態（Programmed state）のメモリセルＭＣを示す。図示するように、書き込み状態のメモリセルＭＣは、浮遊ゲートＦＧに電子が注入されており、浮遊ゲートＦＧは負に帯電している。浮遊ゲートＦＧに電子が十分に注入されることにより、書き込み状態のメモリセルＭＣの閾値電圧は、消去状態のメモリセルＭＣの閾値電圧よりも高くなる。メモリセルＭＣは、この閾値電圧の変化を利用してデータを記憶する。
【００５１】
図６は、浮遊ゲートから電子を放出する（Extracting election）際のメモリセルＭＣを示す。図示するように、半導体基板５１に消去電圧Ｖeraを与えることで、浮遊ゲートＦＧに注入された電子を、トンネル絶縁膜ＴＯをトンネルさせて、半導体基板５１に放出する。以下、浮遊ゲートＦＧから電子を放出する動作を、データ消去と表現する場合がある。
【００５２】
なお、本例の場合、データ書き込み、データ読み出しは、上述のページ（ＰＡＧＥ）単位で行われる。また、データ消去は、上述のブロック（ＢＬＯＣＫ）単位で行われる。
【００５３】
１−４．閾値電圧分布について  
次に、メモリセルの閾値電圧分布について説明する。
【００５４】
１−４−１．２値メモリセル（ＳＬＣ：Single Level Cell）の閾値分布  
まず、図７を用い、２値メモリセル（ＳＬＣ：Single Level Cell）の閾値分布について説明する。
【００５５】
２値メモリセルの閾値分布（Vth分布）では、上記に示した動作により、メモリセルにデータを記録した後において、図示するような’１’、’０’の分布を示す。ここでは、消去状態（Erase state）に’１’を割り当て、書き込み状態（Programmed state）に’０’を割り当てている。
【００５６】
なお、データ書き込み動作およびデータ消去動作の際には、書き込み電圧または消去電圧の印加後に、各メモリセルの閾値電圧を検査し、目標レベルに到達しないセルについては再度データ書き込み、またはデータ消去動作を継続的に制御して行うベリファイ（Verify）動作を行う。そのため、’１’、’０’分布には、上記ベリファイ動作が完了した否かを判定するためのベリファイレベル（Verify level）が設けられる。
【００５７】
ここで、制御の例としては、制御回路（Controller）１９により、データ書き込み動作において、制御ゲートに印加する電圧を増す、電圧印加時間を増す、電圧印加回数を増す等を複合的に行うことで、各メモリセルの閾値電圧を目標レベルに到達させる。また、データ消去においても、同様に、半導体基板５１中のｐウェル（Pwell）に印加する電圧を増す、電圧印加時間を増す、電圧印加回数を増すなどを複合的に行うことで、各メモリセルの閾値電圧を目標レベルに到達させる。このようにして、書き込まれたデータは、図示するように所定の’１’、’０’の分布幅を持つ。
【００５８】
データの読出しにおいては、’０’分布と’１’分布との中間に読み出し電圧（Threshold of read level）を設定することで、各メモリセルがいずれのデータを保持しているかを判別する。具体的には、制御ゲートＣＧに読み出し電圧を印加した際に、メモリセルＭＣがオン状態となれば’１’と判別し、メモリセルＭＣがオフ状態のままであれば’０’と判別する。
【００５９】
１−４−２．ベリファイ動作について  
次に、図８を用い、ベリファイ動作前後の閾値分布について説明する。
【００６０】
図８（ａ）は、上記ベリファイ動作を行わない場合（Without verify）の閾値分布を示す。図８（ｂ）は、上記ベリファイ動作を行った場合（With verify）の閾値分布を示す。
【００６１】
図示するように、ベリファイ動作を行った場合のほうが、行わない場合に比べて、閾値分布が狭くなる。これは、個々のメモリセルによって１回の書き込み電圧の印加で注入される電子の量にばらつきがあり、早く書き込まれるメモリセルと、遅く書き込まれるメモリセルとが存在するためである。
【００６２】
図８（ａ）では、ベリファイ動作を行わないため、既に十分電子が注入されたメモリセルに対しても書き込みが継続され、結果として閾値分布全体が広がっている。一方図８（ｂ）では、１回の書き込み電圧の印加毎に各メモリセルの閾値電圧を検査し、ベリファイレベルに到達したメモリセルについては以降の電子注入を禁止（抑制）し、ベリファイレベルに到達しないメモリセルについては再度書き込み電圧を印加して電子注入を継続する。結果として、ベリファイ動作を行わない場合と比較して、閾値分布は狭くなる。
【００６３】
１−４−３．多値メモリセル（ＭＬＣ：Multi Level Cell）の閾値分布  
次に、図９を用い、多値メモリセル（ＭＬＣ：Multi Level Cell）の閾値分布について説明する。
【００６４】
多値メモリセルでは、上記した書き込み状態（Programmed state）における電子の注入量を細かく制御することで、例えば１個のメモリセルに２ビットを保持する場合は４つの閾値分布を形成し、また１個のメモリセルに３ビットを保持する場合は８つの閾値分布を形成する。
【００６５】
多値メモリセルの閾値分布（Vth分布）のうち、本例では、１個のメモリセルに２ビットのデータを記録する例を示す。そのため、４つの閾値分布に対して、閾値電圧の低い方から順に、図示するような’１１’、’０１’、’００’、’１０’を割り当てる。なお、以下では便宜的に、４つの閾値分布を閾値電圧の低い方から順に’Ｅ’レベル、’Ａ’レベル、’Ｂ’レベル、’Ｃ’レベルと記載する場合がある。
【００６６】
多値メモリセルのデータ書き込みの場合でも、上記２値メモリセルのデータ書き込みと同様に、目標とする閾値電圧に到達するよう、適宜書き込み動作を制御する。また、’１１’、’０１’、’００’、’１０’分布には、同様にそれぞれベリファイレベル（Verify level）が設けられる。
【００６７】
多値メモリセルにおいて、データ読み出しの際には、各分布の中間において、読み出しの電圧TH1, TH2, TH3を設定することで、各メモリセルが’１１’、’０１’、’００’、’１０’のいずれのデータを保持しているかを判別する。
【００６８】
ここで、TH2以上か否かによって識別可能なビットすなわち以下図面におけるMSBビットと、TH1以上かつTH3以下か否かによって識別可能なビットすなわち以下図面におけるLSBビットは、各々異なるページにアサインされることが多く、各々Lower page、Upper pageなどと呼ばれる。つまり、TH1, TH2, TH3を同時に用いて1つのページを読み出すのではなく、Lower pageを読み出す場合はTH2を、Upper pageを読み出す場合はTH1及びTH3を用いる。
【００６９】
１−４−４．劣化モードの閾値分布  
まず、図１０を用い、劣化モードの閾値分布について説明する。ここでは、多値メモリセルにおける劣化モードを一例に挙げる。
【００７０】
上記のように、メモリセルにデータを書き込んだ後、同メモリセルもしくは同メモリセルに近接メモリするセルに対してデータ読出しやデータ書込み動作を行うと、同セルの制御ゲートＣＧと半導体基板５１中のｐウェル（Pwell）との間で、書き込み電圧よりも小さいが所定の電圧が印加されるため、弱い書込み状態となり、閾値電圧が高い方向へとシフトする（Direction of read / program disturb）。これは、リードディスターブ、プログラムディスターブと称され、閾値分布の幅が広くなり、読み出し性能の劣化を生じ得る。これらディスターブは、ＮＡＮＤ型フラッシュメモリの利用状況によって大きく左右される。
【００７１】
メモリセルが受けるプログラムディスターブの影響に関しては、例えば、特開２００８−１１７４７１号公報（米国特許番号７６１３０４８として登録された米国出願１１／９３４３３０が優先権基礎として主張する）に開示されている。メモリセルが受けるリードディスターブの影響に関しては、例えば、特開２００４−３２６８６７号公報（米国特許番号７０９９１９０として登録された米国出願１０／８２２１７７が優先権基礎として主張する）に開示されている。これらの全内容は参照により組み込まれる。
【００７２】
一方、メモリセルにデータを書き込んだ後、一定期間放置すると、浮遊ゲートＦＧ中に保持されている電子がデトラップされ、閾値電圧が低い方向へとシフトする（Direction of data retention）。これは、データリテンションと呼ばれ、閾値分布の幅が広くなり、読み出し性能の劣化を生じ得る。データリテンションは、放置時間、放置時の温度・湿度などの環境によって大きく左右される。また、メモリセルの書き換え回数（例えば、消去回数）が多くなると、データリテンションが悪化することが知られている。
【００７３】
メモリセルのデータリテンション特性に関しては、例えば、特開２００８−２６９４７３号公報（米国出願１２／１０７９８４が優先権基礎として主張する）に開示されており、これらの全内容は参照により組み込まれる。
【００７４】
このほか、データ書き込みの直後において、トンネル酸化膜ＴＯにトラップされた電子が、浮遊ゲートＦＧにトラップされた電子と見掛け上区別がつかないため、これが抜け落ちるか否かで閾値電圧が変化するという現象も生じ得る。例えば、本例のようなＮＡＮＤ型フラッシュメモリの場合、製造プロセス微細化に伴って高密度化されているため、浮遊ゲートＦＧに保持できる電子量が減少し、トンネル酸化膜ＴＯにトラップされた電子の相対寄与率が上がることから、劣化モードとして大きな要因となり得る。
【００７５】
以上のように、ＮＡＮＤ型フラッシュメモリのメモリセルは、その利用状況、利用環境などの多様な要因により、データ書込み後の閾値電圧分布の状態が変動する。また、再生時の環境においても、温度など利用環境により、閾値電圧分布は一定ではない。更に、それら特性は、製造時のばらつきによっても大きく変動するため、各ＮＡＮＤ型フラッシュメモリにおける各メモリセルの状態を予測することはほぼ不可能といえる。
【００７６】
そこで、本例では、もともとＮＡＮＤ型フラッシュメモリが物理的に有するこの予測困難性を、乱数生成回路１６における予測困難性に利用する。そのことで、回路規模および消費電力の増大を極小化でき、高性能な乱数を生成することができる。具体的な構成等については、後述する。
【００７７】
なお、本例では、半導体記憶装置として、ＮＡＮＤ型フラッシュメモリを一例に挙げて説明しているが、これに限られることはない。例えば、ＤＲＡＭ（Dynamic Random Access Memory）やＭＲＡＭ（Magnetic Random Access Memory）等の半導体記憶装置においても、ＮＡＮＤ型フラッシュメモリと同様に、読み出しデータ等がばらつく現象が発生しているからである。
【００７８】
１−５．乱数発生回路１６について  
次に、図１１を用い、第１の実施形態に係る乱数発生回路１６の構成例について説明する。  
図示するように、第１の実施形態に係る乱数生成回路１６は、クロック発生回路１６０、線形帰還シフトレジスタ１６１、およびTRNGコントローラ１６２を備える。
【００７９】
クロック発生回路（Clock Generator）１６０は、所定のクロックＣＬＫを、線形帰還シフトレジスタ１６１に供給する。なお、クロック発生回路１６０は、必ずしも乱数発生回路１６０内に配置される必要はなく、ＮＡＮＤ型フラッシュメモリが有するものから必要なクロックＣＬＫを供給されても良い。または、ＮＡＮＤ型フラッシュメモリ外部から供給されるクロックＣＬＫを用いても良い。
【００８０】
線形帰還シフトレジスタ（LFSR: Linear Feedback Shift Resistor）（擬似乱数発生回路）１６１は、供給された動作クロックＣＬＫにより、所定の初期値を以って動作を開始し、TRNGコントローラ１６２から入力される信号PRESET, CLRにより、乱数（Random Number）を発生させる。
【００８１】
TRNGコントローラ（TRNG Controller）（乱数制御回路）１６２は、制御回路（Controller）１９から供給される乱数生成トリガー信号を受け取り、処理を開始する。ここで、制御回路（Controller）１９からから供給される乱数生成トリガー信号としては、ＮＡＮＤ型フラッシュメモリの外部のホスト装置から入力された乱数生成に係わる要求コマンド（乱数トリガーコマンド）などを用いて発生させた信号などを用いても良い。あるいは、ＮＡＮＤ型フラッシュメモリに新たな制御信号入力端子を追加し、当該制御信号入力端子からの入力に従い乱数生成トリガー信号を生成しても良い。
【００８２】
TRNGコントローラ１６２は、乱数生成トリガー信号を受領後、LFSR１６１から入力された乱数を用いて、読み出し電圧設定パラメータ（Read voltage parameter）を設定する。読み出し電圧設定パラメータ（Read voltage parameter）は、この乱数生成回路１６の外部にあるデータ入出力バッファ５４等を介して、制御回路（Controller）１９へと出力される。または、乱数生成回路１６から制御回路（Controller）１９へ直接読み出し電圧設定パラメータ（Read voltage parameter）を出力しても良い。
【００８３】
続いて、制御回路（Controller）１９は、同読み出し電圧設定パラメータ（Read voltage parameter）に従って、メモリセルアレイ１１に対してデータ読み出し動作を行う。このデータ読み出し処理がなされたデータ（Page Data）は、順次、ビット線制御回路５２中のページバッファ等を介して、TRNG Controller１６２へと入力される。
【００８４】
続いて、TRNG Controller１６２は、読み出しデータに依存したPRESET値（シード値）を生成し、同PRESET値をLFSR１６１へと供給する。
【００８５】
続いて、LFSR１６１は受領したPRESET値を自身のレジスタに格納し、これをシード値として利用し、乱数を生成する。
【００８６】
上記一連の動作により、LFSR１６１の初期動作時に設定されているシード値が固定であっても、乱数生成トリガー信号が入力されるまでの時間自身が乱数生成パラメータとして寄与する。さらに、同LFSR１６１から出力される乱数によって定められた読み出し電圧設定パラメータ（Read voltage parameter）により、読み出しデータが変化するため、これを再度LFSR１６１のシード値としてセットすることにより、乱数性を向上させることができる。
【００８７】
ここで、乱数生成トリガー信号が、LFSR１６１の動作開始時から常に固定時間経過後に入力された場合では、読み出し電圧設定パラメータ（Read voltage parameter）は、固定となる。しかし、その場合でも前述のように、ＮＡＮＤ型フラッシュメモリが有する劣化モードや、環境依存性などにより、読み出されるデータは一意ではないため、シード値も変化することが十分に期待できる。
【００８８】
尚、本構成例では、LFSR１６１を利用する形態について示したが、要求レベルに応じて他の疑似乱数発生器などを代わりに用いることも可能である。例えば、より高度な乱数生成機能を提供したい場合、TRNG Controller１６２を物理乱数シードとして利用し、LFSR１６１に代わってFIPS 140-2に示されているようなAES（Advanced Encryption System）暗号に基づく疑似乱数発生器や、楕円曲線暗号に基づく疑似乱数発生器、離散対数暗号に基づく疑似乱数発生器などを用いることも可能である。これに対して、本実施形態に係る乱数生成回路１６は、疑似乱数発生器の弱点ともなり得るシード設定方法に対して有効な解決策と言える。
【００８９】
その他、前記一連の動作を更に複数回繰り返すことで、乱数性を更に向上させることができる。すなわち、仮にLFSR１６１が出力する読み出し電圧設定パラメータ（Read voltage parameter）が固定化され、読み出したデータの乱数性が低い場合においても、1bitでも異なっていれば、次段の処理に用いる読み出し電圧設定パラメータ（Read voltage parameter）も異なるため、乱数性が向上する。
【００９０】
１−５−１．線形帰還シフトレジスタ（LFSR）１６１の構成例  
次に、図１２を用い、第１の実施形態に係る線形帰還シフトレジスタ（LFSR: Linear Feedback Shift Resistor）１６１の構成例について説明する。  
図示するように、第１の実施形態に係る線形帰還シフトレジスタ（LFSR）１６１は、複数のレジスタ回路ＲＧ１〜ＲＧ１６および排他的論理和回路ＸＯＲ１〜ＸＯＲ４から構成される。
【００９１】
複数のレジスタ回路ＲＧ１〜ＲＧ１６のそれぞれのPRE端子にはレジスタ設定信号受領部としてTRNGコントローラ１６２よりPRESET信号が入力され、CLR端子にはレジスタ設定信号受領部としてTRNGコントローラ１６２よりCLR信号が入力され、D端子にはデータ入力部としてＸＯＲ４の出力または前段のレジスタ回路の出力が入力され、C端子にはクロック入力部としてクロック発生回路１６０よりクロックＣＬＫが入力され、Q端子はデータ出力部として出力データを出力する。複数のレジスタ回路ＲＧ１〜ＲＧ１６は、前段の出力Qが次段の入力Dとなるように直列に接続される。  
本例では、後述するように16ビットの例を示すために、最終段のレジスタ回路ＲＧ１６の出力Qを乱数（Random Number）として用いる。必要なビット数に応じて、必要なレジスタ回路ＲＧ１〜ＲＧ１６の出力Qを乱数（Random Number）として用いることが可能である。
【００９２】
排他的論理和回路ＸＯＲ１〜ＸＯＲ４は、その入力および出力が直列に接続される。排他的論理和回路ＸＯＲ４の他方の入力はレジスタ回路ＲＧ１２の出力Qに接続され、出力はレジスタ回路ＲＧ１の入力Dに接続される。排他的論理和回路ＸＯＲ３の他方の入力はレジスタ回路ＲＧ１３の出力Qに接続され、出力は排他的論理和回路ＸＯＲ４の入力に接続される。排他的論理和回路ＸＯＲ２の他方の入力はレジスタ回路ＲＧ１４の出力Qに接続され、出力は排他的論理和回路ＸＯＲ３の入力に接続される。排他的論理和回路ＸＯＲ１の入力はレジスタ回路ＲＧ１５、１６の出力Qに接続され、出力は排他的論理和回路ＸＯＲ２の入力に接続される。
【００９３】
上記レジスタ回路ＲＧ１〜ＲＧ１６と同様に、排他的論理和回路ＸＯＲ１〜ＸＯＲ４についても、必要なビット数および対応するレジスタ回路ＲＧに合わせて、必要に応じて配置することが可能である。
【００９４】
本例のような疑似乱数の生成に用いる場合、最大巡回周期を有する多項式に従って、LFSR１６１中のレジスタ回路ＲＧ１〜１６と排他的論理和回路ＸＯＲ１〜ＸＯＲ４とが接続される。本例のような構成によって出力された乱数系列は、Ｍ系列などと称される。
【００９５】
１−５−２．TRNGコントローラ（TRNG Controller）１６２の構成例  
次に、図１３を用い、第１の実施形態に係るTRNGコントローラ（TRNG Controller）１６２の構成例について説明する。  
図示するように、TRNG コントローラ（乱数制御回路）１６２は、読み出し電圧設定パラメータ発生回路１６２Ａおよび積算回路１６２Ｂにより構成される。
【００９６】
読み出し電圧設定パラメータ発生回路（Read voltage parameter generator）（パラメータ発生回路）１６２Ａは、LFSR１６１の出力（output）を乱数生成トリガー信号によってラッチした後、LFSR出力を後述するパラメータに展開して、読み出し電圧設定パラメータ（Read voltage parameter）として出力する。
【００９７】
積算回路（Accumulators）１６２Ｂは、メモリセルアレイ１１より読み出した読み出しデータ（Page Data）を受領した後、積算処理を行い、ランダムシード値（Random seed）を、LFSR１６１へ出力する。このランダムシード値（Random seed）は、LFSR１６１のレジスタ設定用パラメータである上記PRESET信号, CLR信号の形式として出力される。
【００９８】
１−５−３．パラメータ発生回路（Read voltage parameter generator）１６２Ａの構成例  
次に、図１４Ａを用い、上記図１３中のパラメータ発生回路（Read voltage parameter generator）１６２Ａの構成例について説明する。  
図示するように、パラメータ発生回路１６２Ａは、ページアドレス設定回路（Page address setting）１６２Ａ−１、読出し電圧設定回路（Vth level setting）１６２Ａ−２を備える。
【００９９】
ページアドレス設定回路（Page address setting）１６２Ａ−１は、コントローラ１９からの乱数生成トリガー信号を受けて、LFSR１６１の出力値を用いて、読み出すPage addressの制御パラメータを生成する。これは、各Pageに記録されているデータが異なる場合、ベースとなるデータを変更することが乱数性の向上に更に寄与するためである。
【０１００】
ここで、図１４Ｂを用いて、ページアドレス設定回路１６２Ａ−１によって読み出し対象に設定されたページに記録されているデータについて説明する。読み出し対象ページに記録されているデータは、乱数列によって撹拌されたデータであること、ＮＡＮＤ型フラッシュメモリ毎に異なるデータを含むこと、同ページ内のデータは外部から読み出すことができないこと、所定タイミングで更新されること、などを満たしていることが望ましい。
【０１０１】
乱数列によって撹拌されたデータであること（Randomized data）、については、後述するように読み出されたデータは所定サイズ毎に区切られたセグメント単位で積算処理をするため、セグメント内においてデータの偏りがないことが望ましいためである。仮に、セグメント内のデータに偏りがあった場合、例えばデータの全てが1、もしくは0であった場合、設定された読出し電圧によっては読み出しデータの変動が生じない場合が起こりうるためであり、1と0の生起確率ができるだけ同じ、すなわち乱数列によって撹拌されたデータであることが望ましい。
【０１０２】
ＮＡＮＤ型フラッシュメモリ毎に異なるデータを含むこと（Chip unique data）、については、全てのデータが全てのＮＡＮＤ型フラッシュメモリチップで共通である場合、読出し電圧と読み出しデータ間の関係において、全チップで共通の傾向が生じる可能性があるためであり、少なくとも一部のデータが異なっていることが望ましい。
【０１０３】
同ページ内のデータは外部から読み出すことができないこと（Read inhibited area）、については、読み出しページ内のデータが攻撃者に入手されるか否かによって、攻撃の難易度が大きく異なるためである。例えば、何らかの手法により読み出し電圧が攻撃者に取得された場合、ページに記録されているデータと前記読み出し電圧の組み合わせから、フリップする可能性のあるビットを予想する難易度は、攻撃者がデータを把握しているか否かによって大きく異なるためである。
【０１０４】
所定タイミングで更新されること（Renewal data）、については記録されているデータの少なくとも一部が更新されると、読み出すデータが必ず異なることが保証され、ひいてはランダムシード値が必ず更新されるためである。更新のタイミングとしては、ＮＡＮＤ型フラッシュメモリの電源立ち上げ後、ＮＡＮＤ型フラッシュメモリに乱数生成に係わるコマンドが入力された後、乱数生成後、などが考えられる。更新データとしては、更新用データフィールドをページデータの一部に設けて、同フィールド内のデータの加算による更新、同フィールド内のデータとして生成した乱数を記録、同フィールド内のデータとして記録済みデータと生成した乱数の排他的論理和を記録、などの方法が考えられる。
【０１０５】
読出し電圧設定回路（Vth level setting）１６２Ａ−２は、コントローラ１９からの乱数生成トリガー信号を受けて、LFSR１６１の出力値を用いて、セルアレイからページを読み出す際の読み出し電圧の制御パラメータを生成する。
【０１０６】
上記回路１６２Ａ−１、１６２Ａ−２が生成する両パラメータが、読み出し電圧設定パラメータ（Read voltage parameter）信号として出力される。それは、読み出すページが、多値メモリセルの前述のLower page、Upper pageのどちらに相当するかによって、読出し電圧設定回路（Vth level setting）１６２Ａ−２から出力される必要なパラメータが相違してくるからである。
【０１０７】
１−５−４．積算回路（Accumulators）１６２Ｂの構成例  
次に、図１５を用い、上記図１３中のTRNG Controller１６２内の積算回路（Accumulators）１６２Ｂの構成例について説明する。  
図示するように、積算回路（Accumulators）１６２Ｂは、複数の積算回路（Accumulator）(1)-(N)を有し、読みだしたページデータ（Page Data）からLFSR１６１へのシード設定値（Accumulated data）を算出する。
【０１０８】
メモリセルアレイ１１より読み出され、複数の積算回路（Accumulator）(1)-(N)に入力されるページデータ（Page Data）は、所定のデータ長毎に分割され、各々積算処理がなされる。分割された各データをセグメント（Segment 1- N）と呼ぶ。積算回路（Accumulator）(1)-(N)は、セグメントのビット加算を行う。ここで、ビット加算とは排他的論理和を用い、すなわちセグメント内のビットにおいて、1の個数が奇数であれば1を、偶数であれば0を出力する。
【０１０９】
複数の積算回路（Accumulator）(1)-(N)の個数は、必要に応じて配置すれば良い。例えば、本例では、LFSR１６１への出力ビットが、16ビットであれば良いため、積算回路の個数は、１６個（N=16）である。
【０１１０】
本例に係る積算回路（Accumulators）１６２Ｂの構成により、積算処理をすることによって、仮に読出しデータのほとんど全てが前回の読出しデータと同じであっても、1ビットでも異なるものが存在すれば積算結果が異なるため、情報エントロピーを増加させる効果があり、そのため乱数性の向上に寄与できる。
【０１１１】
また、各セグメント毎（Segment 1- N）に算出された積算データは、各々LFSR１６１のシード設定値へと利用される。
【０１１２】
尚、本例では、複数の積算回路を有する場合を記しているが、単一の積算部のみを用い、セグメント境界毎にリセットを行う構成も同様に可能である。
【０１１３】
また、以下のように単一のレジスタ回路と単一の排他的論理和回路から構成されるフィードバックレジスタを用いるだけで、積算部を構成することが可能である。
【０１１４】
１−５−４．積算回路（Accumulator）(1)の構成例  
次に、図１６を用い、上記図１５中の積算回路（Accumulator）の構成例について説明する。ここでは、積算回路（Accumulator）(1)を例に挙げる。
【０１１５】
図示するように、本例に係る積算回路（Accumulator）(1)は、排他的論理和回路ＸＯＲ０およびレジスタ回路ＲＧ０から構成される。
【０１１６】
排他的論理和回路ＸＯＲ０の入力にはセグメントデータ（Segment Data(1)）、レジスタ回路ＲＧ０の出力Qが入力され、出力はレジスタ回路ＲＧ０の入力Dに接続される。
【０１１７】
レジスタ回路ＲＧ０には、それぞれクロックCLK、プリチャージ信号PRE、クリア信号CLRが入力され、出力端子Qから積算信号（Accumulated data）が出力される。
【０１１８】
このように、本例に係る積算回路（Accumulator）では、単一のレジスタ回路と単一排他的論理和回路から構成されるフィードバックレジスタのみで構成することが可能である。その他の積算回路（Accumulator）(2)-(N)についても同様である。
【０１１９】
＜２．制御パラメータ（Read voltage parameter）によるデータ読み出し動作＞  
次に、図１７乃至図２０を用い、上記構成例により設定される読み出し電圧設定パラメータ（Read voltage parameter）によるデータ読み出し動作について説明する。
【０１２０】
２−１．多値メモリセルにおけるデータ読み出し（'A', 'B', 'C'）  
まず、図１７を用い、多値メモリセルにおける読み出し電圧設定パラメータによるデータ読み出しについて説明する。図示するように、ここでは、読み出し電圧TH1’/Th2’/Th3’を、閾値電圧分布’Ａ’、’Ｂ’、’Ｃ’の中心基準とする場合である。
【０１２１】
TRNGコントローラ（TRNG Controller）１６２によって指定された読み出し電圧設定パラメータ（Read voltage parameter）は、制御回路１９の制御により、メモリセルアレイ１１の所定ページを読み出す際の読み出し電圧として利用される。
【０１２２】
通常のデータ読出しにおいて、データ読み出し基準（読み出し電圧）は、図示するTH1/Th2/Th3のように、各閾値電圧分布の間の中間レベルを目標に設定されている。
【０１２３】
しかしながら、本例に係る読み出し電圧設定パラメータ（Read voltage parameter）によれば、各閾値電圧分布の分布’Ａ’、’Ｂ’、’Ｃ’の中心点、すなわち図中の読み出し電圧TH1’/Th2’/Th3’を、データ読み出し基準として設定する。このように、データ読み出し基準を、各閾値電圧分布の分布’Ａ’、’Ｂ’、’Ｃ’の中心に設定することで、微小な閾値電圧レベルの変動においても、検出ビットのフリップ数を最大化することが可能となる。
【０１２４】
より具体的には、閾値電圧分布の分布’Ａ’、’Ｂ’、’Ｃ’の中心点を基準とし、一定の幅を読み出し電圧TH1’/Th2’/Th3’の設定範囲とし、同範囲内において、LFSR１６１から出力された乱数を基に、TRNG Controller１６２は読み出し電圧設定パラメータ（Read voltage parameter）を選択する。詳細については、後述する。
【０１２５】
２−２．多値メモリセルにおけるデータ読み出し（'E', 'A', 'B'）  
次に、図１８を用い、多値メモリセルにおける制御パラメータによるデータ読み出しについて説明する。
【０１２６】
図示する例は、読み出し電圧TH1’/Th2’/Th3’を、閾値電圧分布’Ｅ’、’Ａ’、’Ｂ’の中間レベルを目標に設定する点で、上記図１７に示した例と相違する。
【０１２７】
必要に応じて、このように設定することも同様に可能である。
【０１２８】
２−３．読み出し電圧設定パラメータ（Read voltage parameter）と閾値電圧との関係（ＭＬＣ）  
次に、図１９を用い、２−１及び２−２において説明した多値メモリセル（ＭＬＣ）における読み出し電圧設定パラメータ（Read voltage parameter）と閾値電圧との関係について、両例を包含した具体的なパラメータ設定方法を説明する。
【０１２９】
上記パラメータ設定回路（Vth parametter setting）１６２Ａ−２が出力する読み出し電圧設定パラメータ（Read voltage parameter）と、多値モードにおける各閾値電圧の関係例は、図示するようになる。
【０１３０】
図示するように、本例では、閾値電圧分布’Ｅ’、’Ａ’、’Ｂ’、’Ｃ’について、読み出し電圧設定パラメータ（Read voltage parameter）によって、合計0レベルから32レベルまで選択する場合の例が示される。
【０１３１】
例えば、閾値電圧分布’Ｅ’では、閾値電圧分布’Ｅ’の中心点を基準とし、一定の幅を設定範囲として設け、同範囲を0レベルから7レベルまで所定間隔で区切っている。閾値電圧分布’Ａ’では、閾値電圧分布’ Ａ’の中心点を基準とし、一定の幅を設定範囲として設け、同範囲を8レベルから15レベルまで所定間隔で区切っている。閾値電圧分布’Ｂ’では、閾値電圧分布’ Ｂ’の中心点を基準とし、一定の幅を設定範囲として設け、同範囲を16レベルから23レベルまで所定間隔で区切っている。閾値電圧分布’Ｃ’では、閾値電圧分布’ Ｃ’の中心点を基準とし、一定の幅を設定範囲として設け、同範囲を24レベルから31レベルまで所定間隔で区切っている
２−３．読み出し電圧設定パラメータ（Read voltage parameter）と閾値電圧との関係（ＳＬＣ）  
次に、図２０を用い、２値メモリセル（ＳＬＣ：Single Level Cell）における読み出し電圧設定パラメータ（Read voltage parameter）と閾値電圧との関係について説明する。
【０１３２】
図示するように、閾値電圧分布’Ｅ’、’Ａ’について、読み出し電圧設定パラメータ（Read voltage parameter）によって、合計0レベルから15レベルまで選択する場合の例が示される。
【０１３３】
例えば、閾値電圧分布’Ｅ’では、閾値電圧分布’Ｅ’の中心点を基準とし、一定の幅を設定範囲として設け、同範囲を0レベルから7レベルまで所定間隔で区切っている。閾値電圧分布’Ａ’では、閾値電圧分布’Ａ’の中心点を基準とし、一定の幅を設定範囲として設け、同範囲を8レベルから15レベルまで所定間隔で区切っている。
【０１３４】
この２値メモリセルの場合では、LFSR１６１の出力値4bitの値を10進数表現した値が上記Level iに各々相当する。ＳＬＣ記録の場合、読み出し電圧パラメータ（Read voltage parameter）は、単一のため、LFSR１６１の出力値4bitによって選択された一つの閾値電圧パラメータをTH’として用いる。
【０１３５】
＜３．作用効果＞  
第１の実施形態に係る半導体記憶装置によれば、少なくとも下記（１）乃至（４）の効果が得られる。
【０１３６】
（１）高性能な乱数を生成することができ、予測困難性を向上できる。  
上記のように、第１の実施形態に係るＮＡＮＤ型フラッシュメモリは、複数のメモリセルＭＣが配置されるメモリセルアレイ１１と、乱数を発生する乱数発生回路１６と、メモリセルアレイ１１および乱数発生回路１６を制御する制御回路（Controller）１９とを少なくとも具備する。
【０１３７】
乱数生成回路１６は、生成した読み出し電圧設定パラメータ（Read voltage parameter）によりメモリセルＭＣを読み出したデータにもとづく乱数パラメータ（PRESET, CLR）を生成する乱数制御回路１６２と、乱数パラメータ（PRESET,CLR）をシード値として用いて乱数（Random number）を発生させる擬似乱数生成回路１６１とを備える。
【０１３８】
上記のように、本例に係る乱数発生回路１６は、メモリセルＭＣを読み出したデータにもとづく乱数パラメータ（PRESET,CLR）をシード値として用いて乱数（Random number）を発生させる擬似乱数生成回路１６１を備える。
【０１３９】
このように、本例では、第一に、乱数を生成させる構成として、ＮＡＮＤ型フラッシュメモリの読出しデータにおける閾値電圧分布の時変性を利用することができる。
【０１４０】
より具体的には、図１０を用いた劣化モードの閾値電圧分布において説明したように、ＮＡＮＤ型フラッシュメモリのメモリセルは、その利用状況、利用環境などの多様な要因により、データ書き込み後の閾値電圧分布の状態が変動する。また、再生時の環境においても、温度など利用環境により、閾値電圧分布は一定ではない。更に、それら特性は、製造時のばらつきによっても大きく変動するため、各ＮＡＮＤ型フラッシュメモリにおける各メモリセルの状態を予測することはほぼ不可能といえる。
【０１４１】
このように、本例では、もともと本来的にＮＡＮＤ型フラッシュメモリが物理的に有するこの予測困難性を、乱数生成回路１６が生成する乱数（Random number）の予測困難性に利用することができる。
【０１４２】
従って、高性能な乱数（Random number）を生成することができ、予測困難性を向上できる点で有利である。
【０１４３】
（２）乱数の一様性と長周期性とを保証することができる。  
さらに、乱数生成回路１６が備える擬似乱数生成回路１６１は、発生させた乱数（Random number）を乱数制御回路１６２に再び帰還させる。
【０１４４】
上記構成によれば、第二に、生成された高性能な上記乱数（Random number）を、乱数制御回路１６２のいわば初期値として再び用いることで、乱数（Random number）の一様性と長周期性とを保証することができる。
【０１４５】
（３）乱数発生回路１６の回路規模および消費電力の増大を極小化できる。  
上記のように、本例では、乱数発生回路１６が乱数を生成させる構成として、もともと本来的にＮＡＮＤ型フラッシュメモリが物理的に有する予測困難性を利用する。
【０１４６】
従って、本例に係る乱数発生回路１６は、高度な乱数を発生させるために、回路規模を増大させる必要もなく、また消費電力の増大もなく、これらを極小化できる点で有利である。
【０１４７】
このように、本例に係る乱数発生回路１６は、回路規模および消費電流の制約が厳しい、例えば、近年のスマートフォンやタブレットPCなどの環境においても、商用コンテンツの利用や課金・決済などに用いるための高性能な乱数を発生させるものとして適用することが可能となる。
【０１４８】
一方で、ここで例に挙げたスマートフォンやタブレットPCなどのモバイル機器においては、不揮発性メモリとして、例えば、ＮＡＮＤ型フラッシュメモリ等が主流として用いられるという現状がある。
【０１４９】
そのため、本例のように、ＮＡＮＤ型フラッシュメモリが、コントローラ１９と独立した乱数生成回路１６を備える構成の利用価値は高いと言える。また、製造コストの低減に対しても有利である。
【０１５０】
（４）シード値（RESET, CLR）の情報エントロピーを高め、乱数性を向上できる。  
本例に係る乱数制御回路１６２は、乱数を乱数生成トリガー信号トリガーとしてラッチして閾値電圧の読み出し電圧設定パラメータ信号（Read voltage parameter）を生成するパラメータ発生回路１６２Ａと、読み出しデータ（Page Data）について積算処理を行ったシード値（RESET, CLR）を生成する積算回路１６２Ｂとを備える。
【０１５１】
上記の構成のように、メモリセルアレイ１１から読み出されたデータ（Page Data）は、積算回路１６２Ｂによる所定のセグメント単位での積算による平滑化処理を行うことで、発生されるシード値（RESET, CLR）の情報エントロピーを高めることができる。
【０１５２】
そのため、情報エントロピーを高め、乱数性を向上できる点で有利である。
【０１５３】
［第２の実施形態（乱数発生回路のその他の構成例）］  
次に、第２の実施形態に係る半導体記憶装置について、図２１を用いて説明する。この実施形態は、乱数発生回路１６のその他の構成例に関するものである。この説明において、上記第１の実施形態と重複する部分の詳細な説明を省略する。
【０１５４】
＜乱数発生回路１６の構成例＞  
図２１に示すように、第２の実施形態に係る乱数生成回路１６は、LFSR1（１６１−１）、LFSR2（１６１−２）およびTRNG Controller１６２を備え、LFSR1（１６１−１）およびLFSR2（１６１−２）には、Clock Generator 1（１６０−１）およびClock Generator 2（１６０−２）より動作クロックCLK1, CLK2がそれぞれ供給される点で、上記第１の実施形態と相違する。
【０１５５】
Clock Generator 1（１６０−１）は、外部から供給されるフリーラントリガー信号によって、動作がイネーブルされる。ここで、フリーラントリガー信号としては、例えば、ＮＡＮＤ型フラッシュメモリのインターフェースにおけるチップ・イネーブル信号(ＣＥ)、アドレス・ラッチ・イネーブル信号（ＡＬＥ）、コマンド・ラッチ・イネーブル信号（ＣＬＥ）を用いても良い。また、前記イネーブル信号は、単独で用いてもよいし、複合的に用いてもよい。更に、他の信号、例えばリード・イネーブル信号（ＲＥ）、ライト・イネーブル信号（ＷＥ）などを用いてもよい。Clock Generator 1（１６０−１）は、フリーラントリガー信号がONの場合に動作し、LFSR1にクロックCLK1を供給する。
【０１５６】
LFSR1（１６１−１）は、供給されたクロックCLK1により、所定の初期値を持って動作を開始し、乱数1を段数１として出力する。前記外部から供給されるイネーブル信号の供給時間によって、LFSR1（１６１−１）が動作する期間、すなわちLFSR1（１６１−１）から出力される値は更新されていく。
【０１５７】
TRNG Controller１６２は、コントローラ１９から供給される乱数生成トリガー信号を受け取り、処理を開始する。ここで外部から供給される乱数生成トリガー信号としては、ＮＡＮＤ型フラッシュメモリの外部から入力された乱数生成に係わる要求コマンドなどをトリガーとして発生させた信号などを用いる。TRG Controller１６２は、トリガー信号を受領後、LFSR1（１６１−１）から入力された乱数1を用いて、読み出し電圧設定パラメータ（Read voltage parameter）を設定する。
【０１５８】
同読み出し電圧設定パラメータ（Read voltage parameter）は、乱数生成回路１６の外部へと出力され、ＮＡＮＤ型フラッシュメモリのコントローラ１９、同パラメータに従って所定のセルアレイに対してデータ読出し処理を行う。前記読出し処理がなされたデータは、順次TRNG Controller１６２へと入力される。TRNG Controller１６２は、読み出しデータに依存したシード値（PRESET, CLR）を生成し、同シード値を段数２としてLFSR2へと供給する。
【０１５９】
LFSR2（１６１−２）は、受領したシード値（PRESET, CLR）を、内包するレジスタに格納し、このシード値を用いて、乱数（Random Number）を生成する。
【０１６０】
本例のLFSR1（１６１−１）、LFSR2（１６１−２）およびTRNG Controller１６２は、上記第１の実施形態で説明したLFSR（擬似乱数発生回路）１６１およびTRNG Controller（乱数制御回路）１６２と同様の構成である。
【０１６１】
なお、Clock Generator 1（１６０−１）とClock Generator 2（１６０−２）は乱数生成回路１６の内部に有していてもよいし、ＮＡＮＤ型フラッシュメモリが有するクロック生成器を流用してもよい。また、Clock Generator 2（１６０−２）を用意せず、Clock Generator 1（１６０−１）のクロックをLFSR1（１６１−１）及びLFSR2（１６０−２）の動作クロックとして供給してもよい。ＮＡＮＤ型フラッシュメモリがもともと有するクロック生成器と乱数生成回路１６に用いるクロック生成器では、要求される動作周波数帯が異なる場合が多く、また動作が必要とするタイミングも異なる。例えば、ＮＡＮＤ型フラッシュメモリが有するクロック生成器は、例えば、数十〜数百メガヘルツ等の高速周波数で動作する必要があるが、乱数生成回路１６においては生成する乱数のサイズ及び要求動作時間にもよるが、一般には低速であってもよい。この場合、高速なＮＡＮＤ型フラッシュメモリがもともと有するクロック生成器とは別に、本例のような低速なクロック生成器を用意することで、消費電力の低減に寄与できる。
【０１６２】
また、ＮＡＮＤ型フラッシュメモリの一般動作に用いるクロックとしては出来るだけクロックの品質が良い方が望ましいが、乱数生成回路１６として見た場合は、動作クロックの品質にばらつきがある方が望ましい。これは、品質ばらつきが予測困難性に寄与するためである。ここでいう品質とは、例えばクロックジッタの量や、温度変化によるクロック周波数変動性などである。また、本例のように、クロック生成器を複数用意することは、前述の品質ばらつき要因を増やすことに相当し、乱数性の向上に寄与する。これらは、乱数性の要求性能と回路サイズ・消費電力などのペナルティをどのように設計するかに依存する。本例では、いずれにおいても適用することが可能である。
【０１６３】
その他の構成、動作等に関しては、上記第１の実施形態と実質的に同様である。
【０１６４】
＜作用効果＞  
第２の実施形態に係る半導体記憶装置によれば、少なくとも上記（１）乃至（４）と同様の効果が得られる。
【０１６５】
さらに、第２の実施形態に係る乱数生成回路１６は、LFSR1（１６１−１）、LFSR2（１６１−２）およびTRNG Controller１６２を備え、LFSR1（１６１−１）およびLFSR2（１６１−２）には、Clock Generator 1（１６０−１）およびClock Generator 2（１６０−２）より動作クロックCLK1, CLK2がそれぞれ供給される。
【０１６６】
このように、擬似乱数発生回路であるLFSR1（１６１−１）、LFSR2（１６１−２）を２つに分ける構成により、LFSR1（１６１−１）とLFSR2（１６１−２）とに入力される信号の長さの違いを利用し、長期周期性を更に向上できる点で有利である。
【０１６７】
本例では、Clock Generator 1（１６０−１）に入力されるフリーラント信号と、Clock Generator 2（１６０−２）に入力される乱数トリガー信号との長さの違いを利用して、段数１としての乱数１と、段数２としてのシード値（PRESET, CLR）とを生成する。そのため、本例では、段数１は、段数２よりも小さい（段数１＜段数２）方が望ましい。
【０１６８】
Clock Generator 1（１６０−１）、Clock Generator 2（１６０−２）のバリエーションに関しては、上述の通りである。
【０１６９】
［第３の実施形態（乱数発生回路のその他の構成例）］  
次に、第３の実施形態に係る半導体記憶装置について、図２２を用いて説明する。この実施形態は、乱数発生回路１６のその他の構成例に関するものである。この説明において、上記説明と重複する部分の詳細な説明を省略する。
【０１７０】
＜乱数発生回路１６の構成例＞  
図２２に示すように、第３の実施形態に係る乱数生成回路１６は、LFSR1のシード設定に加えて、LFSR2から出力される疑似乱数に対して、更にTRNG Controller１６２から出力される物理乱数を用いるための排他的論理和回路ＸＯＲ９をさらに備える点で、上記第２の実施形態と相違する。
【０１７１】
＜作用効果＞  
第３の実施形態に係る半導体記憶装置によれば、少なくとも上記（１）乃至（４）と同様の効果が得られる。
【０１７２】
第３の実施形態に係る乱数生成回路１６は、LFSR1のシード設定に加えて、LFSR2から出力される疑似乱数に対して、更にTRNG Controller１６２から出力される物理乱数を用いるための排他的論理和回路ＸＯＲ９をさらに備える。
【０１７３】
上記構成により、シード値のみならず、TRNG Controller１６２から出力される物理乱数を加えることにより、出力される乱数列（Random number）自体にも予測困難性を付与することが可能となる。従って、より乱数性を向上できる点で更に有利である。
【０１７４】
なお、TRNG Controller１６２から出力される物理乱数のみだと、乱数の要件である一様性が保証できない場合には、疑似乱数と組み合わせても良い。
【０１７５】
［第４の実施形態（乱数発生回路のその他の構成例）］  
次に、第４の実施形態に係る半導体記憶装置について、図２３を用いて説明する。この実施形態は、乱数発生回路１６のその他の構成例に関するものである。この説明において、上記説明と重複する部分の詳細な説明を省略する。
【０１７６】
＜乱数発生回路１６の構成例＞  
図２３に示すように、第４の実施形態に係る乱数生成回路１６は、LFSR1（１６１−１）に対してもTRNG Controller１６２からのシード値（PRESET, CLR）が入力されることにより、シード設定処理を行う点で、上記第３の実施形態と相違する。
【０１７７】
＜作用効果＞  
第４の実施形態に係る半導体記憶装置によれば、少なくとも上記（１）乃至（４）と同様の効果が得られる。
【０１７８】
第４の実施形態に係る乱数生成回路１６の構成によれば、LFSR1（１６１−１）に対してもTRNG Controller１６２からのシード値（PRESET, CLR）が入力されることにより、読出し電圧設定パラメータ自身の乱数性を向上できる。
【０１７９】
そのため、ひいては最終的に出力される乱数列（Ramdom Number）の向上に寄与することができる点で有利である。
【０１８０】
［第５の実施形態（システムの一例）］  
次に、第５の実施形態に係るシステムについて、図２４を用いて説明する。第５の実施形態に係るシステムは、上記実施形態に係る半導体記憶装置を含めたシステム例に関するものである。この説明において、上記説明と重複する部分の詳細な説明を省略する。
【０１８１】
＜システム構成例＞  
図２４に示すように、第５の実施形態に係るシステムは、例えばｅＭＭＣ、ＳＤ（登録商標）Ｃａｒｄ等が適用され得る上記第１乃至第４の実施形態に係る半導体装置１００と、例えばＰＣ、Smart phone、Tablet PC等が適用され得るホスト装置２００とを備えるものである。
【０１８２】
半導体記憶装置１００は、上記の乱数発生回路１６としてのＲＮＧを備える。さらに、コントローラ１９は、クリプトエンジン１９０を備える点で、上記実施形態と相違する。
【０１８３】
クリプトエンジン１９０は、乱数発生回路１６が生成した乱数を、ホスト装置２００からの乱数要求に応じて、安全な経路（Secure channel）１９９を通じて、ホスト装置側のクリプトエンジン２９０に通知する。
【０１８４】
ホスト装置２００は、クリプトエンジン１９０と、アプリケーションインターフェイス２１０と、所定のアプリケーション２２０を備える。
【０１８５】
その他の構成、動作等に関しては、上記第１の実施形態と実質的に同様である。
【０１８６】
＜作用効果＞  
第５の実施形態に係る半導体記憶装置によれば、少なくとも上記（１）乃至（４）と同様の効果が得られる。
【０１８７】
さらに、本例では、コントローラ１９が、乱数発生回路１６が生成した乱数を、ホスト装置２００からの乱数要求に応じて、安全な経路（Secure channel）１９９を通じて、ホスト装置側のクリプトエンジン２９０に通知するクリプトエンジン１９０を備える。
【０１８８】
このように、クリプトエンジン１９０が、安全な経路（Secure channel）を通じて、乱数発生回路１６が生成した乱数を通知することで、システム全体の安全性をより向上できる点で有利である。
【０１８９】
以下、上記第１乃至第５の実施形態に係る乱数発生回路１６により発生させた乱数を用いて、認証を行う具体例について、さらに比較例１、２および第７乃至第１６の実施形態を用いて説明する。
【０１９０】
［比較例１（HB+プロトコルの一例）］  
まず、図２５を用い、比較例１について説明する。この比較例１は、HB+プロトコルの一例に関するものである。
【０１９１】
HB+プロトコルは、２０００年にHopper とBlumらによって提案された、軽量の認証プロトコルであるHBプロトコルの改良プロトコルである。HBプロトコルは、雑音下におけるパリティ値の同定が困難であるということ（LPN：Learning Parity with Noise）に基づいており、受動攻撃に対する安全性が証明されている。ただし、HBプロトコルは、リーダー（Reader）へのなりすましといった能動攻撃に対して脆弱性がある。この点を解決するために、２００５年にJuelsらにより、HB+プロトコルとして提案されたものである。
【０１９２】
HB+プロトコルの概要は、図２５のように図示される。ここで、図２５中の、a，b，x，yはベクトルであり、ν，zはビットである。
【０１９３】
図示するように、HB+プロトコルでは、被認証コンポーネントであるタグ（Tag）と、認証コンポーネントであるリーダー（Reader）とが、各々秘密情報ベクトルx, yを共有する。
【０１９４】
タグは、リーダーに対して一時乱数ベクトルbを渡す。
【０１９５】
続いて、リーダーは、タグに対して一時乱数ベクトルaを渡す。
【０１９６】
続いて、タグは、乱数aと秘密情報ベクトルxの内積（a・x）および乱数bと秘密情報ベクトルyとの内積（b・y）を計算する。さらに、タグは、ηの確率で１となる変数νを生成する。そして、内積（a・x）、内積（b・y）、変数νをそれぞれ加算して、z= ax(+)by(+)νを算出する。ここで、axは内積（a・x）を意味し、(+)は排他的論理和を意味する。
【０１９７】
続いて、タグは、算出したzを、リーダーへと送信する。
【０１９８】
続いて、リーダーは、受領したzと、自身で計算したax(+)byとを比較し、一致不一致を検査する。上記一連の処理を１単位として１ラウンドと称することもある。
【０１９９】
これら上記1ラウンドの処理を複数回（例えば、数十回〜数万回程度）繰り返し、前述の不一致確率が、所定値tを下回った場合、タグが秘密情報を保持しているとみなし、認証が成功する。
【０２００】
尚、ax(+)byは、秘密情報x，yと、結合ベクトルa，bとのそれぞれの内積である。そのため、x，yの結合ベクトルxyを秘密情報とおき、a，bの結合ベクトルをConcat(a,b)とした場合、ax(+)byをConcat(a,b)xyと表現することも可能である。
【０２０１】
［比較例２（Random HB#プロトコルの一例）］  
次に、図２６を用い、比較例２について説明する。この比較例２は、Random HB#プロトコルの一例に関するものである。Random HB#プロトコルは、上記比較例１に示したHB+プロトコルが更に改良されたプロトコルである。
【０２０２】
上記HB+プロトコルは、受動的な攻撃と能動的な攻撃に対して解決策を提供したものの、Gilbertらによって提案された中間者攻撃に対して脆弱性がある傾向にある。この点を解決するために、GilbertらによりHB+プロトコルの改良方式プロトコルとして、Random HB＃プロトコルとして提案されたものである。
【０２０３】
Random HB#プロトコルの概要は、図２６のように図示される。ここで、図２６中のX，Yは行列であり、a，b，z，νはベクトルである。  
図示するように、Random HB#プロトコルでは、タグ（Tag）とリーダー（Reader）とが、各々秘密情報行列X, Yを共有する。
【０２０４】
まず、タグは、リーダーに対して一時乱数ベクトルbを渡す。
【０２０５】
続いて、リーダーは、タグに対して一時乱数ベクトルaを渡す。
【０２０６】
続いて、タグは、乱数aと秘密情報行列xとの内積（aX）および乱数bと秘密情報行列yとの内積（bY）を計算する。ここで、X, Yは行列、a, bはベクトルであることから、各々の内積結果は、ベクトルとなる。また、タグは、ηの確率で１となる変数ベクトルνを生成する。そして、タグは、上記の値を加算して、z= aX(+)bY(+)νを算出する。ここでzはベクトルである。
【０２０７】
続いて、タグは、算出したzを、リーダーへと送信する。
【０２０８】
続いて、リーダーは、受領したzと自身で計算したaX(+)bYとのビット加算、すなわち排他的論理和演算を行った結果を用い、aX(+)bY(+)zのハミング重みHwt(aX(+)bY(+)z)を計算する。ハミング重みHwt(aX(+)bY(+)z)が、所定値t*clenを下回った場合、タグが秘密情報を保持しているとみなし、認証が成功する。ただし、η≦t<0.5、clenはAX(+)BYのビット長とする。
【０２０９】
尚、aX(+)bYは秘密情報XとYの結合行列とaとbの結合ベクトルの内積であることから、X,Yの結合行列XYを秘密情報とおき、aとbの結合ベクトルをConcat(a,b)とした場合、aX(+)bYをConcat(a,b)XYと表現することも可能である。
【０２１０】
＜実装上の改善点＞  
しかしながら、上記比較例１、２に係るプロトコルでは、例えば、ＮＡＮＤ型フラッシュメモリ等に具体的に実装しようとした場合等に、以下（Ｉ）〜（ＩＶ）のような改善点が考えられる。
【０２１１】
（Ｉ）秘密情報X及びYの共有手段  
前述のように、上記比較例１、２では、リーダーとタグとは、秘密情報X, Yを共有している必要がある。しかしながら、上記比較例１、２では、秘密情報X, Yを共有するための具体的な共有方法が提示されていない。
【０２１２】
そのため、仮にすべてのリーダーとタグとで同一のX, Yを事前に共有していた場合、一旦X, Yが露見してしまうと、システム全てに致命的な影響を与える。一方でタグ毎に異なるX, Yを適用した場合、リーダー側では全てのタグに適用されているX, Yを保持している、もしくはそれを統合的に管理しているデータベースへのアクセスなどが要求される。  
その結果、リーダー側への負担が大きくなる。
【０２１３】
尚、これに関連する先行技術として、特開２０００−３５７２１３号公報において、演算処理機能を有する記録媒体に複製コンテンツを記録する記録装置と該記録媒体との間の相互認証方法において、前記記録媒体は、少なくとも該記録媒体に依存する第１の情報と、前記記録装置と相互認証を行う際に該記録装置と共有すべき該記録媒体に依存する第２の情報とを記憶し、前記記録装置は、前記記録媒体から得られた前記第１の情報に基づき該記録媒体との間の相互認証を行う際に用いる認証情報を生成し、この生成された認証情報と前記第２の情報とを用いて前記記録装置と前記記録媒体との間で相互認証を行うことを特徴とする方法が提案されている。
【０２１４】
（ＩＩ）コンポーネントPに対し、秘密情報X及びYを効率的に記録する手段  
上記HB+プロトコル、Random HB#プロトコルにおいては、いわゆる上記LPN問題を現実的な計算量で同定を困難とするためには相応の秘密情報量、すなわちX, Yは相応のデータサイズである必要がある。ここで、X, Yが全てのタグで共通であれば、ハードワイヤードロジックで構成することも可能であるが、X,Yをタグ毎に異ならせる場合、タグはX, Yを保持するために十分なメモリ容量を持つ必要がある。また、これと同時にタグ製造において同データを個別に記録する必要性があり、記録時間はすなわち製造時間へと反映される。  
その結果、メモリ容量の増加と記録時間の増加により、タグのコスト増大を招く。
【０２１５】
（ＩＩＩ）コンポーネントPが保持する秘密情報X及びY損傷に対する保護手段  
コンポーネントPが内部メモリにてX, Yを保持している場合、認証に用いる場合は同X, Yのデータ完全性が要求されるが、先行文献ではこれらについて言及されていない。データ完全性を保証するには、タグ内部のメモリにはエラー訂正符号を付与したX, Yを保有し、認証時に訂正処理を行うなどの方法が考えられる。しかしながら、一般に廉価メモリは必ずしも訂正機能を有しているわけではなく、メモリ側に訂正機能がない場合はメモリ以外のタグ内コンポーネントとして同訂正機能を有す必要がある。  
その結果、タグのコスト増大を招く。
【０２１６】
（ＩＶ）秘密情報X及びY露見時の秘密情報更新手段  
上記Random HB#コンポーネントは、各々受動攻撃、能動攻撃、一定条件下での中間者攻撃に対する耐性が認められているものの、近年では一般化された中間者攻撃に対する脆弱性が報告されるなど、X, Yが露見する可能性を排除することはできない。X, Yの露見には、それ相応の攻撃コストが要求されるものの、一旦X,Yが露見した場合、同X,Yを用いた偽造タグなどの製造が可能となるため、仮にX, Yが露見した場合でも新たなX, Yへと移行できるように、秘密情報の更新手段がある方が望ましい。
【０２１７】
そこで、上記の点を考慮し、以下において、実施形態について図面を参照して説明する。なお、これまでRFIDのリーダーとタグとを一例にとって説明をした。しかしながら、同様の要件はＮＡＮＤ型フラッシュメモリなどの回路面積が即座にコストに直結するメモリチップにおいても同様である。そのため、以下実施形態では、認証コンポーネントとしてのリーダー（Reader）としてＮＡＮＤ型フラッシュメモリを認証するホストデバイス（Host）、被認証コンポーネントとしてのタグ（Tag）としてＮＡＮＤ型フラッシュメモリ（NAND chip）を、一例に挙げて説明する。しかし、これに限られることはない。例えば、ＮＯＲ型フラッシュメモリ、抵抗変化式メモリ（ReRAM: Resistive Random Access Memory）、磁気抵抗メモリ(MRAM: Magnetoresistive Random Access Memory）、相変化メモリ（PRAM: Phase change Random Access Memory）、および強誘電体メモリ（FeRAM: Ferroelectric Random Access Memory）、ハードディスクドライブやソリッドステートドライブなどの演算機能及びメモリを有するストレージデバイス、RFIDやICカードなどの認証を要するコンポーネント、汎用演算素子と汎用メモリを有した計算器とソフトウェアから構成されるシステムなど、多様な実装形態に適用できる。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【０２１８】
［第６の実施形態］  
図２５および図２６を用い、第６の実施形態に係る認証コンポーネント、被認証コンポーネントおよびその認証方法について説明する。
【０２１９】
＜１１．構成例（メモリシステム）＞  
まず、図２７を用い、第６の実施形態に係る構成例について説明する。  
図２７に示すメモリシステムは、被認証コンポーネントであるＮＡＮＤフラッシュメモリ１０、認証コンポーネントであるホストデバイス２０、両者を仲介するコントローラ１９を備える。図示するように、ホスト２０は、コントローラ１９と呼ばれるＮＡＮＤ型フラッシュメモリ１０に対するアクセス機能を有したデバイスを経由してＮＡＮＤ型フラッシュメモリにアクセスする。
【０２２０】
ここで、半導体製品の製造工程について記載する。半導体製品の製造工程は、主に基板ウエハー上に回路を形成する前工程と、前記ウエハーを個片に切り分けた後、配線や樹脂パッケージ封入などを行う後工程に分けられる。ここで、コントローラ１９は、前工程においてＮＡＮＤ型フラッシュメモリ１０内に包含されるよう構成される場合、前工程においては包含されないが後工程において同一パッケージに包含されるよう構成される場合、ＮＡＮＤ型フラッシュメモリ１０とは異なるチップの形態をとる場合、など様々な場合がある。図２７を含め、以下ではコントローラ１９は、ＮＡＮＤ型フラッシュメモリ１０とは異なるチップの形態をとる場合を例にとっている。しかしながら、本実施形態は、上記いずれのケースにおいても適用可能である。以下、特に断りのない限り、ホストデバイス２０とＮＡＮＤ型フラッシュメモリ１０間のデータや命令のやり取りにおいては、多くの場合コントローラが仲介するものであるが、これは省略することとする。なお、ＮＡＮＤ型フラッシュメモリ１０およびコントローラ１９の構成例については、後述する。
【０２２１】
図２７に示す各コンポーネント、データ処理については、以下の通り説明する。図示するように、秘密情報X, Yを共有する方法と、同方法をＮＡＮＤ型フラッシュメモリ１０に適用する場合の構成が示される。
【０２２２】
１１−１．ＮＡＮＤ型フラッシュメモリ
ＮＡＮＤ型フラッシュメモリ１０は、被認証コンポーネントである。本例に係るＮＡＮＤ型フラッシュメモリ１０は、セルアレイ１１、およびセルアレイ１１の周辺領域に配置されるデータキャッシュ１２、圧縮演算回路１３、バイアスドＲＮＧ１４、出力部１５、乱数生成器１６、順序交換回路１８、ビット毎加算回路Ｃ１等を備える。
【０２２３】
セルアレイ（Cell array）１１には、図示しないビット線およびワード線の交差位置にマトリックス状に複数のメモリセルが配置される。メモリセルは、半導体基板上に順次、トンネル絶縁膜、浮遊ゲート、層間絶縁膜、およびワード線と接続される制御ゲートをそれぞれ備える。ビット線方向のメモリセルの電流経路は直列接続され、セルユニットを形成する。セルユニットは、ビット線、ソース線に接続される選択トランジスタにより選択される。ワード線方向の複数のメモリセルは、データ読み出しおよびデータ書き込みの単位である１ページ（Page）を形成する。また、複数のページはデータ消去の単位であるブロック（Block）を形成する。
【０２２４】
セルアレイ（Cell array）１１は、ロム領域１１−１、秘匿領域１１−２、一般領域１１−３を備える。  
ロム領域（Rom area）１１−１は、データ記録が禁止され、データ読み出しが許可される領域である。本例に係るロム領域１１−１には、秘密情報XYを暗号化し、更に訂正符号が付与されたデータXYE（xe bits）が記録される。暗号化には、対称鍵暗号であるAES（Advanced Encryption Standard）などの暗号器を、暗号モードはCTR(Counter)、CBC(Cipher block chain)などを利用しても良いし、非対称暗号であるECDSA(楕円曲線暗号)やRSAなどを利用しても良い。また誤り訂正符号としては、BCH符号、Reed Solomon符号、LDPC(Low density parity check)符号などを利用してもよい。このように、本例は、いずれの暗号方法、訂正符号にも適用することが可能である。ここで、XYEとは、秘密情報XYが暗号化され、更に訂正符号が付与されたものとして表記される。また、（xe bits）とは、ビット数を表記する。
【０２２５】
秘匿領域（Hidden area）１１−２は、ＮＡＮＤ型フラッシュメモリ１０の外に対してはデータ記録が禁止され、データ読出も禁止される領域である（Read Program inhibit）。本例に係る秘匿領域１１−２には、上記認証に用いるX, Yに対応するデータXYが記録される。
【０２２６】
一般領域（User area）１１−３は、データ記録およびデータ読み出しのいずれも自由に可能な領域である。一般領域１１−３には、例えば、写真などの画像データや、動画データ等が記録される。
【０２２７】
尚、上記におけるロム領域、秘匿領域、一般領域は、物理的構成を異ならせることで実現してもよいし、物理的構成は同一であるがＮＡＮＤ型フラッシュメモリ内の論理的制御で実現してもよい。ここで、論理的制御とは、領域ごとにＮＡＮＤ型フラッシュメモリ外からのアクセスを制御する識別子を設け、これを保持し、ＮＡＮＤ型フラッシュメモリが外部から当該領域へのアクセスを受領した際に、同識別子によってアクセス制御を行う、などの方法である。
【０２２８】
また、セルアレイ（Cell array）１１を構成する個々のメモリセルは、複数ビットを記憶するものであってもよいし（MLC: Multi Level Cell）、１ビットを記憶するものであってもよい（SLC: Single Level Cell）。更に、ロム領域及び秘匿領域についてはSLCで利用する構成とし、一般領域についてはMLCで利用する構成としてもよい。この時、SLC領域とMLC領域とはセルアレイの物理的構成が異なっていてもよいし、MLCとして利用可能なメモリセルの一部のビットのみを使用して、疑似的なSLC領域として利用してもよい。
【０２２９】
データキャッシュ（Data Cache）１２は、セルアレイ１１から読出したデータを一時的に記憶する。
【０２３０】
バイアスドＲＮＧ（Biased RNG）１４は、所定確率ηにて1となる乱数νを生成する。尚、バイアスドＲＮＧの入力元として下記の乱数生成器を用いてもよく、その場合乱数生成器から出力される複数の乱数列に対して、論理積や論理和などの演算を行うことで所定確率ηに対応した乱数を生成することが可能である。
【０２３１】
乱数生成器（RNG: Random Number Generator）１６は、認証に用いる乱数Nonce_N（a bit）を生成する。この乱数発生器１６は、上述した上記第１乃至第５の実施形態に係る乱数発生回路１６を用いることが可能である。この際、例えば、乱数発生器１６が、図２７に示す破線の経路により、読み出しデータData、および乱数トリガー信号を同様に受けることにより、同様に適用でき、同様の効果を得ることが可能である。
【０２３２】
順序交換回路（Permutation & Concatenation）１８は、両者が共有したXYを用いて、ホスト２０から入力される乱数Nonce_Hと、メモリ１０から入力される乱数Nonce_Nとから構成した乱数Nonce（c bits）を生成する。ここで、aはNonce_Nのビット長を意味し、bはNonce_Hのビット長を意味し、cは圧縮演算回路の1処理当たりに入力されるビット長を意味する。すなわち、順序交換回路（Permutation & Concatenation）から出力される個々の乱数Nonceは圧縮演算回路の1処理用のデータであり、1処理用にNonce_NとNonceHの総ビットを用いてもよいし、部分ごとに選択的に用いてもよい。
【０２３３】
圧縮演算回路（Compress (ex. inner product)）１３は、データキャッシュ１２の出力XY（c bit each）と順序交換回路１３の出力（c bits）について内積演算などの所定の演算を行い、データCを出力する。
【０２３４】
ビット毎加算回路Ｃ１は、圧縮演算回路１３の出力ビットに対して、バイアスドＲＮＧによって生成されたνを付与したz=C+νを、出力部１５へ出力する。尚、前述の通り、ビット加算とは排他的論理和を意味する。すなわち、ビット毎加算回路は、2入力データのビット毎の排他的論理和を出力する。
【０２３５】
出力部１５は、ビット毎加算回路Ｃ１の結果（z=C+ν）を、コントローラ１９を介してホスト２０に出力する。
【０２３６】
なお、上記セルアレイ１１以外のデータキャッシュ１２等の構成要素は、メモリコントローラ１９に配置されることも同様に可能である。
【０２３７】
１１−２．ホスト
本例に係るホスト（Host）２０は、訂正処理部２１、暗号の復号部２２、鍵保持部２３、データ一時記憶部２５、圧縮演算部２６、乱数生成部２７、順序交換部２９、判定部３０等を備える。
【０２３８】
訂正処理部（ECC）２１は、ＮＡＮＤ型フラッシュメモリ１０のロム領域１１−１から読み出されたデータXYEに誤り訂正処理（ＥＣＣ）を行う。
【０２３９】
復号部（Decrypt）２２は、読み出したデータXYEに対してエラー訂正処理を行った後、鍵保持部２３が保持する鍵KEYによりデータデータXYE復号して、XYを得る。
【０２４０】
データ一時記憶部（Data cache）２５は、復号したXYを一時的に保持する。これにより、ホストデバイス２０とＮＡＮＤ型フラッシュメモリ２０は、秘密情報XYを共有できる。
【０２４１】
圧縮演算部（Compress (ex inner product)）２６は、データキャッシュ２５の出力（c bit each）と順序交換回路２９の出力（c bits）とについて内積演算などの所定の演算を行い、データCを出力する。
【０２４２】
乱数生成部（RNG）２７は、ホストの一時乱数Nonce_H (b bit)を生成する。
【０２４３】
順序交換部（Permutation & Concatenation）２９は、両者は共有したXYを用いて、ホスト２０から入力される乱数Nonce_Hと、メモリ１０から入力される乱数Nonce_Nとから構成した乱数Nonce（c bits）を生成する。
【０２４４】
判定部（Accept if Hwt(Z(+)C) ≦ t*clen）３０は、圧縮演算部２６の出力Cおよび出力部１５の出力Zについて、上記のようにハミング重みHwt(Z(+)C)を行い、ハミング重みHwt(Z(+)C)が、所定値t*clenを下回った場合、秘密情報を保持しているとみなし、認証成功と判定する。ただし、η≦t<0.5、clenはZ(+)Cのビット長とする。
【０２４５】
このように、ホスト２０は、バイアスドRNG処理２７を除き、判定部３０により同様の処理によって得られたCとzとを比較することで、被認証コンポーネントであるＮＡＮＤ型フラッシュメモリ１０の正当性を確認する。
【０２４６】
尚、上記構成による同様の処理を複数回行うことで最終的に正当性を確認することも可能である。例えば、本図では、Cが複数ビットである場合を例としており、比較判定方法はzとCの加算ビット系列におけるハミング重みを判定に用いている。もし、Cが単一ビットであった場合、前述のHB+プロトコルと同様に、前述の処理は複数回行う必要があり、この場合はHB+プロトコルと同様にエラー変数の生起確率に基づいてzとCの不一致率を検査すればよい。
【０２４７】
１１−３．変形例  
上記に限られず、本例の構成は、以下のように必要に応じて、変形することが可能である。
【０２４８】
圧縮処理について、図２５及び図２６で示した比較例１、２に係る内積計算に対応しても良いが、必ずしも内積計算でなくともよい。例えば、圧縮処理を、LFSR(Linear Feedback Shift Registor)で構成する演算器に対してXYを基とするデータとNonce_H及びNonce_Nを基とするデータを入力し、全入力後のLFSR中のレジスタ値の一部もしくは全てを圧縮結果として用いてもよい。または、LFSRとしてCRC演算器を用いてもよい。更に、圧縮処理に用いる関数としてハッシュ関数を用いてもよい。ハッシュ関数は暗号器に基づいていてもよく、基づいていなくてもよい。いずれの演算方法を用いても本実施例にて提案している方法を適用することが可能である。また安全性の根拠となっているLPN問題に属していることに変わりはない。尚、ここで圧縮処理とは可逆圧縮であるか、非可逆圧縮であるか、は問わず、少なくとも入力されたデータよりも小さく、かつ入力データに依存するデータを出力する処理を意味する。
【０２４９】
また、圧縮計算部に対してNonce_HとNonceNを元に生成したNonceを送出する処理について説明する。NonceはNonce_HとNonceNを所定の順序によって結合し送出されるデータであり、結合・送出方法としては、単純な順送りデータ結合・送出、互いのデータを交互に挿入したインターリーブデータ結合・送出などの方法であってよく、また前述の方法により複数回データを送出しても良い。いずれにせよ、Nonceは、Nonce_N及びNonceHの少なくとも一部のデータより生成されたデータであり、cビット長のデータとなる。ここで、Nonce_Nのデータ長はaとおき、Nonce_Hのデータ長はbとおき、両者の合計データ長をdとおく。仮にc=dであり、かつデータを複数回送出しない場合、圧縮計算部からの出力は1ビットとなる。仮にc=dであり、かつデータを複数回送出する場合、圧縮計算部からの出力は1ビットが複数回出力される。仮にc<dであり、かつデータを複数回送出する場合、圧縮計算部からの出力は1ビットが複数回出力される。
【０２５０】
一方、Nonceとの圧縮を計算するXYにおいても、XY中のデータがcビット単位で圧縮計算部へと送出される。ここで、XYデータのビットサイズxはcと等しいもしくは整数倍である。cと等しい場合、圧縮計算部の出力は1ビットとなる。cの整数倍である場合、圧縮計算部の出力は1ビットが複数回となる。代表的な組み合わせについて記すと、
・c=d=xの場合、圧縮計算部の出力は1ビット
・c=d<xの場合、圧縮計算部の出力は1ビットが複数回
・c<d, c<xの場合、圧縮計算部の出力は1ビットが複数回
となる。尚、前記は圧縮計算部が2入力を1ビットに圧縮する場合の例であり、圧縮計算部が2入力を複数ビットに圧縮する場合は、1回あたりの出力値自体も複数ビットとなる。
【０２５１】
＜２０．認証フロー＞  
次に、図２８に沿って、図２７に示した構成におけるメモリシステムの認証フローについて説明する。
【０２５２】
認証開始（Start）すると、ステップＳ１１の際、ホストデバイス１０は、ＮＡＮＤ型フラッシュメモリ１０へXYEの読出し命令（Read XYE）を送出する。
【０２５３】
続いて、ステップＳ１２の際、ＮＡＮＤ型フラッシュメモリ１０は、上記読出し命令に従って、XYEをセルアレイ１１−１よりロード（load XYE）し、これをホストデバイス２０へと送出する。
【０２５４】
続いて、ステップＳ１３の際、ホストデバイス２０は、受領したXYEに対して、上記復号処理を行い、XYを得る（Retrieve XY）。
【０２５５】
続いて、ステップＳ１４の際、ホストデバイス２０は、認証要求（Request authentication）を、ＮＡＮＤ型フラッシュメモリ１０へ送出する。ここで、認証要求にはNonce_Hを含んでいてもよい。
【０２５６】
続いて、ステップＳ１５の際、ＮＡＮＤ型フラッシュメモリ１０は、Nonce_Hを受領し、XYをロードする（Load XY (if required)）。
【０２５７】
続いて、ステップＳ１６の際、ＮＡＮＤ型フラッシュメモリ１０は、Nonce_Nおよびνを生成する（Create Nonce_N, Create ν）。
【０２５８】
続いて、ステップＳ１７の際、ＮＡＮＤ型フラッシュメモリ１０は、上記のように、生成されたνを付与し、Zを計算する。ＮＡＮＤ型フラッシュメモリ１０は、Nonce_N及びZをホスト２０へと送出する。
【０２５９】
続いて、ステップＳ１８の際、ホスト２０は、それらデータNonce_N及びZを受領後、内積演算などの所定の演算を行い、データCを計算する。
【０２６０】
続いて、ステップＳ１９の際、ホスト２０は、ZとCのビット毎XOR値の系列に対してハミング重みHwt(Z(+)C)を計算し、これが所定値t*clenを下回るか否かの判定処理（Check Hwt(Z(+)C) ≦ t*clen）を行う。ここで、上記のように、tはＮＡＮＤフラッシュメモリ１０がZの算出時に用いたエラービットもしくはエラーベクトルνにおけるエラー付与確率（もしくはデータ中の1の出現確率）ηに基づく値であり、η≦t<0.5であるとする。またclenはCのビット長とする。
【０２６１】
続いて、ステップＳ２０の際、上記ステップＳＴ１９の判定結果が所定を下回らなかった場合（fail）、ホスト２０は、失敗としてこの動作を停止する。
【０２６２】
続いて、ステップＳ２１の際、上記ステップＳＴ１９の判定結果が所定を下回った場合（Success）、ホスト２０は、あらかじめ定められたラウンド数に達しているか否かを判定する（Enough round ?）。ここで、ラウンド数とは前記認証要求処理から前記判定処理までの一連の処理を指す。ラウンド数に達していない場合（No）には、再度認証要求処理（Ｓ１４〜）を繰り返す。
【０２６３】
続いて、ステップＳ２２の際、ラウンド数に達している場合（Yes）には、認証が成功したとみなし、ホストデバイス１０は、必要に応じて、前記XYに基づきMedia IDを算出する処理を行う。Media IDの算出処理、Media IDの利用方法（Ｓ２３以下）については後述する。
【０２６４】
以上の動作により、第６の実施形態に係る認証フローを終了する（End）。
【０２６５】
尚、Nonce_N、Nonce_H、νのパラメータは、ラウンド毎に異なるものを用いる必要がある。また、ＮＡＮＤ型フラッシュメモリ１０が認証要求を受領した際、前認証要求時のXYがData Cacheにロードされたままであった場合、セルアレイからのXYのロードを省略し、Data cache内の値を用いてもよい。また、ステップＳ１７の後、Data cache内のXYを消去してもよい。特に、ＮＡＮＤ型フラッシュメモリ１０がData cacheへのアクセス機能を外部に提供している場合、認証に要するデータZを計算した段階でData cache内の秘密情報XYを消去することはセキュリティー上有用である。
【０２６６】
＜３０．作用効果＞  
第６の実施形態に係る構成およびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、少なくとも下記（１１）の効果が得られる。
【０２６７】
（１１）認証コンポーネント、被認証コンポーネント間で、異なる秘密情報XYの秘密状態を維持したまま共有でき、共有した秘密情報に基づく軽量な計算によって認証できる。
【０２６８】
本例に係るＮＡＮＤ型フラッシュメモリ１０は、秘密情報XYを記録禁止・読出禁止領域である秘匿領域１１−２に保持し、同秘密情報XYを暗号化し更に訂正符号を付与したXYEを記録禁止・読出許可領域であるロム領域１１−１に保持する。さらに、ホスト２０は、XYEを読み出してエラー訂正処理２１、復号化処理２２をする機能、および復号に用いる鍵２３により、ＮＡＮＤ型フラッシュメモリ１０およびホスト２０の両者で、秘密情報XYを共有することができる。そのため、認証・被認証コンポーネントは、共有した秘密情報XYで、認証を行うことができる（ＳＴ１１〜ＳＴ２３）。
【０２６９】
また、ＮＡＮＤ型フラッシュメモリ１０とホストデバイス２０は、各々一時乱数を生成するＲＮＧ１６，１７、順序交換部１８，２９、圧縮計算部１３，２６、一時乱数のビット毎加算部Ｃ１，２６、送出部１５を備える。また、ＮＡＮＤ型フラッシュメモリ１０は、バイアスドＲＮＧ１４を備える。ホスト２０は、ＮＡＮＤ型フラッシュメモリ２０から送出されたZとホストデバイス内部で計算したCとを比較し認証を行う判定部３０を備える。
【０２７０】
このように、第６の実施形態では、秘密情報XYを記録禁止・読出禁止領域である秘匿領域１１−２に保持し、これを用いてデータZを生成するため、秘匿性を保持できる。さらに、秘密情報XYを暗号化し更に訂正符号を付与したXYEを記録禁止・読出許可領域であるロム領域１１−１に保持する。ホスト２０は、ここから読み出したXYEに対して、エラー訂正処理２１、および鍵２３を用いた復号化処理２２を行うことで、XYを共有する。そのため、認証・被認証コンポーネント間で、異なるXYを秘密状態を維持したまま共有できる。
【０２７１】
従って、第６の実施形態に係る構成およびその認証方法によれば、認証・被認証コンポーネント間で、異なるXYを秘密状態を維持したまま共有でき、共有した秘密情報に基づく軽量な計算によって認証できる点で有利である。
【０２７２】
［第７の実施形態］  
次に、図２９および図３０を用い、第７の実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。なお、以下の説明において、上記第６の実施形態と重複する部分の説明については、省略する。
【０２７３】
＜構成例（メモリシステム）＞  
図２９を用い、第７の実施形態に係る構成例について説明する。  
図示するように、第７の実施形態に係る構成例では、ＮＡＮＤ型フラッシュメモリ１０が、ロム領域１１−１，秘匿領域１１−２に、それぞれ複数のXYEおよび複数のXYを記憶する点で、上記第６の実施形態と相違する。ここで、iとjが異なる場合、XY[i]≠XY[j]、XYE[i]≠XYE[j]である。
【０２７４】
このように、複数のXYEおよび複数のXYの組を保持することで、秘密情報X及びY露見時の秘密情報の更新手段を提供することができる。仮にある1つのXYとXYEの組が中間者攻撃その他によって露見し、露見したXY及びXYEを流用した偽造デバイスが製造された場合でも、本例では、ホスト２０が保持するKEY[1]２３を更新（例えば、KEY[1]=> 更新KEY[2]）することができる。このように、露見したXY及びXYE以外の組を利用することで、偽造デバイスの排除が可能となる。各XY[i]の暗号化に用いられるKEYはiが異なる場合、異なるものである方が望ましい。
【０２７５】
その他は、上記第６の実施形態と実質的に同様であるため、詳細な説明を省略する。
【０２７６】
＜認証フロー＞  
次に、図３０に沿って、第７の実施形態に係る認証動作について説明する。  
第７の実施形態では、ＮＡＮＤ型フラッシュメモリ１０内には複数のXY及び複数のXYEが記録されているため、ホスト２０がいずれのXYを用いるかを選択することで、認証を行う。
【０２７７】
そのため、第７の実施形態では、ステップＳ１４の際に、ホスト２０が、認証を要求する（Request authentication）場合、いずれのXYを用いるかを指定するパラメータiを、乱数Nonce_Hとともに、ＮＡＮＤ型フラッシュメモリ１０に送出する点で、相違する。
【０２７８】
その他は、上記第６の実施形態と実質的に同様であるため、詳細な説明を省略する。
【０２７９】
＜作用効果＞  
第７の実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、少なくとも上記（１１）の効果が得られる。
【０２８０】
さらに、第７の実施形態では、ＮＡＮＤ型フラッシュメモリ１０が、ロム領域１１−１、秘匿領域１１−２に、それぞれ複数のXYEおよび複数のXYを記憶する点で、上記第６の実施形態と相違する。
【０２８１】
このように、複数のXYEおよび複数のXYの組を保持することで、秘密情報X及びY露見時の秘密情報の更新手段を提供することができる。仮にある1つのXYとXYEの組が中間者攻撃その他によって露見し、露見したXY及びXYEを流用した偽造デバイスが製造された場合でも、本例では、ホスト２０が保持するKEY[1]２３を更新（例えば、KEY[1]=> 更新KEY[2]）することができる。
【０２８２】
そのため、第７の実施形態に係る認証フローでは、ステップＳ１４の際に、ホスト２０が、認証を要求する（Request authentication）場合、いずれのXYを用いるかを指定するパラメータiを、乱数Nonce_Hとともに、ＮＡＮＤ型フラッシュメモリ１０に送出する。
【０２８３】
このように、第７の実施形態では、ＮＡＮＤ型フラッシュメモリ１０が、複数のXY及び複数のXYEを有し、ホストデバイスからの命令によりXYEを選択的に送出する機能を有し、ホストデバイスからの命令により認証に用いるXYを選択的に設定する。また、ホストデバイスは、自身が保持する鍵に対応するXYEを選択的に読み出す機能を有し、それを復号する機能を有し、また自身が保持する鍵を所定の条件下で更新する機能を有する。
【０２８４】
その結果、露見したXY及びXYE以外の組を利用することで、偽造デバイスの排除が可能となる点で有利である。
【０２８５】
［第８の実施形態］  
次に、図３１乃至図３３を用い、第８の実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。
【０２８６】
＜構成例（メモリシステム）＞  
図３１を用い、第８の実施形態に係る構成例について説明する。  
図示するように、本例に係るＮＡＮＤ型フラッシュメモリ１０は、ロム領域１１−１Ｂ、秘匿領域１１−２Ｂに、複数のXYsubEおよび複数のXYsubをそれぞれ記憶する点で、上記第７の実施形態と相違する。ここで、iとjが異なる場合、XYsub[i]≠XYsub[j]、XYsubE[i]≠XYsubE[j]である。XYsubEはXYsubを暗号化した後、訂正符号を付与したデータである。
【０２８７】
XYsubは、XYと同様に記録禁止・読出禁止領域（秘匿領域）１１−２Ｂに記録され、XYsubEは、XYEと同様に記録禁止・読出許可領域（ロム領域）１１−１Ｂに記録される。
【０２８８】
ここで、XYmainのデータサイズは、XYsubよりも大きい（データサイズ：XYmain ＞ XYsub）。また、XYmainとXYsubから構成されるデータが、前述の秘密情報XYに対応する。
【０２８９】
このように、第８の実施形態では、XYの組に加え、XYsub[i], XYsubE[i]の組を更に備えるため、秘密情報X及びYを効率的に記録することができる点で有利である。詳細については、後述する。
【０２９０】
さらに、ＮＡＮＤ型フラッシュメモリ１０は、上記XYsubを格納するためのデータキャッシュ１２Ｂ、およびXYmainと XYsubとをビット毎加算するためのビット毎加算部Ｃ２を備える。ビット毎加算部Ｃ２の出力値が、前述の認証に用いられるXY値に相当する。ここで、XYmainとXYsubのビット長が異なることから、ビット加算Ｃ２においては、XYsubの繰り返しデータが適用される。
【０２９１】
例えば、本図にあるように所定の演算としては、ビット加算が考えられ、XYmainのデータサイズがXYsubのデータサイズの整数倍であった場合、XYmainのデータを保持するData cacheからはXYmainが順送りに送出され、XYsubのデータを保持するData cacheからはXYsubが順送りかつ繰り返し送出される構成が考えられる。XYsubを保持するData cacheはリングバッファと考えてもよい。また、ビット毎加算以外にもXYmainとXYsubの結合値をXYとしてもよいし、XYmainとXYsubのインターリーブ結合値をXYとしてもよいし、XYmainとXYsubをLFSRに入力しLFSRの所定レジスタの値をXYとしてもよい。すなわち、本実施例ではビット毎加算部としているが、2入力から構成したデータをXYとして用いるいずれの演算方法も適用可能である。
【０２９２】
同様に、ホスト２０は、読み出したXYsubEに対応するための、訂正処理部２１Ｂ、暗号の復号部２２Ｂ、鍵保持部２３Ｂ、データ記憶部２５Ｂ、加算部Ｃ３を更に備える。ホスト２０は、上記構成により、同様に、エラー訂正処理を行い、対応するKEY_XYsubにより復号することでXYsubを得る。これにより、ホストデバイスとＮＡＮＤ型フラッシュメモリ間で、秘密情報XYmain及びXYsubを共有できる。ここで、本図においてはKEY_XYmainとKEY_XYsubは異なるオブジェクトとして描かれているが、実際には同じ鍵であっても良い。また、各XYsub[i]の暗号化に用いられるKEY_XYsubはiが異なる場合、異なるものである方が望ましい。さらに、ホストデバイス２０、メモリ１０は、XYmainとXYsubを用いて所定の演算を行ったXY値により、認証処理を行う。
【０２９３】
＜認証フロー＞  
次に、図３２に沿って、第８の実施形態に係る認証動作について説明する。  
第８の実施形態では、ＮＡＮＤ型フラッシュメモリ１０内にはXYmainに加えてXYsubが、またそれらを暗号化したXYmainE及びXYsubEが記録される。
【０２９４】
そのため、図示するように、対応するステップＳ１３において、ホスト１０は、XYmainE , XYsubEを更に読み出して復号をし、秘密情報XYmain，XYsubに基づく秘密情報XYを生成する（Create XY）。続いて、ホスト２０は、秘密情報XYmainとXYsubから導出された情報を用いて、同様の認証を行う。
【０２９５】
また、ＮＡＮＤ型フラッシュメモリ１０側においても同様に、ステップＳ１５において、読み出した秘密情報XYmain，XYsubに基づいて秘密情報XYを生成する（Create XY）点で、上記第７の実施形態と相違する。
【０２９６】
＜作用効果＞  
第８の実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、少なくとも上記（１１）の効果が得られる。さらに、第８の実施形態では、（１２）の効果が得られる。
【０２９７】
（１２）秘密情報X,Yを効率的に記録することができ、記録時間を高速化できる点で有利である。
【０２９８】
第８の実施形態では、ＮＡＮＤ型フラッシュメモリ１０が、複数のXYsub及び複数のXYsubEを有し、ホスト２０からの命令によりXYsubEを選択的に送出し、ホスト２０からの命令により認証に用いるXYsubを選択的に設定し、選択されたXYsubとXYを所定の演算で導出した値により認証を行う。
【０２９９】
また、ホストデバイスは、自身が保持する鍵２３Ｂに対応するXYsubEを選択的に読み出し、それを復号する機能２２Ｂを有し、また自身が保持する鍵２３Ｂを所定の条件下で更新する機能を更に有し、選択したXYsubとXYmainを所定の演算で導出した値により認証３０を行う。
【０３００】
このように、XYmainの組に加え、XYsub[i], XYsubE[i]の組を更に備えるため、秘密情報X及びYを効率的に記録することができる点で有利である。
【０３０１】
より具体的には、例えば、図３３のように示される。図示するように、ＮＡＮＤ型フラッシュメモリの製造工程において、XYmain、XYmainE、XYsub、XYsubEの複数の組は、ＸＹ発生装置（XY GEN）により生成され、書き込み装置（Writer）により、複数のＮＡＮＤ型フラッシュメモリ（ここでは、Chip1〜Chip4）にデータ書き込みがされる。
【０３０２】
ここで、XYmain及びXYmainEのデータは、複数のチップChip1〜Chip4から構成される集団内（例えばロット）で同一のデータで良い。一方、XYsub及びXYsubEは、チップChip1〜Chip4毎に異なるデータ（XYsub1〜XYsub4及びXYsubE1〜XYsubE4）とする必要がある。
【０３０３】
このように、第８の実施形態では、データ書き込み動作において、データ量の多いXYmain及びXYmainEを複数のチップChip1〜Chip4で共通化することにより、メモリへのデータ書き込みプロセスを最適化でき、効率的に記録することが可能となる。
【０３０４】
仮に、XYmain及びXYmainEをハードワイヤードで構成する場合、実際に記録するデータは、データサイズが小さいXYsub及びXYsubEとなり記録時間を短縮できる。また、仮にXYmain及びXYmainEをセル上に記録する場合において、集団内で同一であることにより、ＮＡＮＤ型フラッシュメモリへのデータ記録装置に対して記録データを転送する時間を短縮できる。先に述べたように、記録時間の増加は、コストの増加となるため、第８の実施形態によれば、製造コストを低減することができるというメリットも大きい。
【０３０５】
［第９の実施形態（多重記録される一例）］  
次に、図３４および図３５を用い、第９の実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。
【０３０６】
＜構成例（メモリシステム）＞  
図３４を用い、第９の実施形態に係る構成例について説明する。  
第９の実施形態では、メモリ１０の秘匿領域１１−２に、複数のXY[i]を多重に複製した情報１１−２Ａ，１１−２Ｂ，１１−２Ｃを更に有する点で、上記第７の実施形態と相違する。
【０３０７】
すなわち、第７の実施形態におけるXY[i]を複製したデータは、図３４において、XY[i,1],XY[i,2],...,XY[i,n]によって示され、1≦i≦mに対しXY[i,1]=XY[i,2]=…=XY[i,n]である。また、1≦j≦nに対しXY[1,j]≠XY[2,j]≠…≠XY[m,j]である。
【０３０８】
ここで、XYEがECCが付与されている一方で、XYにはECCが付与されていないため、ＮＡＮＤ型フラッシュメモリ内でセルから読み出したデータにエラーが含まれている場合、ＮＡＮＤ型フラッシュメモリが認証に用いるXYの完全性が失われることも考えられる。しかしながら、本例のように、複数のXY[i]を複製した情報１１−２Ａ，１１−２Ｂ，１１−２Ｃを更に有することにより、検査・選択部１２−０により、前記エラーが含まれているかどうかを複製データ間でのデータ比較により検出することができる。
【０３０９】
そのため、本例のメモリは、XY[i]を複製した情報１１−２Ａ，１１−２Ｂ，１１−２Ｃに対応するための検査・選択部（Check sum & select）１２−０を更に備える点で、第７の実施形態と相違する。
【０３１０】
図３４において、セル１１−２からロードされた少なくとも2つ以上のXYのデータセットは所定の上記同様の方法により比較を行うことでエラーが含まれているか否かを検査する。仮にエラーが含まれていた場合もしくはエラーが除去できない場合、異なる2つ以上のXYのデータセットを再度ロードし、同様に検査する。これをエラーが含まれていないもしくは除去できるデータセットが見つかるまで繰り返し、同データセットが見つかった場合それを認証に用いる。上記所定の方法の例としては、2つのXYをロードし、ビット毎にXOR値を算出した後、XOR値がすべて0であるかどうか、により検査する方法が考えられる。また、3つ以上のXYをロードし、多数決判定によってビット毎にエラーを除去したXYを得る方法も考えられる。また、本図においては、XYの複製データはすべて同一データとしているが、複製データのうち奇数番号のデータと偶数番号のデータの極性が反転しているように相補関係にあるデータを構成して事前に記録しておく方法も考えられる。この場合、前記相補関係にある2つのXYをロードし、ビット毎にXOR値を算出した後、XOR値がすべて1であるかどうか、により検査することが可能である。
【０３１１】
＜認証フロー＞  
次に、図３５に沿って、第９の実施形態に係る認証動作について説明する。  
図示するように、第９の実施形態では、ＮＡＮＤ型フラッシュメモリ１０の秘匿領域１１−２内に、複数のXYが多重記録される。
【０３１２】
そのため、ステップＳ１５の際、ＮＡＮＤ型フラッシュメモリ１０は、少なくとも2つ以上のXYを読み出し、比較し、エラーを含んでいないXYを用いて認証を行う（Load / compare XYs）。
【０３１３】
＜作用効果＞  
第９の実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、少なくとも上記（１１）の効果が得られる。
【０３１４】
さらに、第９の実施形態によれば、メモリ１０の秘匿領域１１−２に、複数のXY[i]を複製した情報１１−２Ａ，１１−２Ｂ，１１−２Ｃを更に有する。
【０３１５】
ここで、XYEがECCが付与されている一方で、XYにはECCが付与されていないため、ＮＡＮＤ型フラッシュメモリ内でセルから読み出したデータにエラーが含まれている場合、ＮＡＮＤ型フラッシュメモリが認証に用いるXYの完全性が失われることも考えられる。
【０３１６】
しかしながら、第９の実施形態によれば、複数のXY[i]を複製した情報１１−２Ａ，１１−２Ｂ，１１−２Ｃを更に有することにより、検査・選択部１２−０により、前記エラーが含まれているかどうかを複製データ間でのデータ比較により検出することができる。結果、メモリ１０内でセルから読み出したデータにエラーが含まれている場合であっても、メモリ１０が認証に用いるXYの完全性が失われることを防止できる点で更に有利である。
【０３１７】
［第１０の実施形態］  
次に、図３６および図３７を用い、第１０の実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。
【０３１８】
＜構成例（メモリシステム）＞  
図３６を用い、第１０の実施形態に係る構成例について説明する。第１０の実施形態に係る構成例は、上記第３、第９の実施形態を組み合わせたものに関する一例である。
【０３１９】
図示するように、第１０の実施形態に係るＮＡＮＤ型フラッシュメモリ１０は、秘匿領域１１−２に、XYsub及びXYsubEについても複製データXYsub[i,j]及びXYsubE[i,j]を記録する点で、上記第９の実施形態と相違する。
【０３２０】
また、上記に対応するための検査・選択部１２−０Ｂおよびデータキャッシュ１２Ｂを更に備える。
【０３２１】
＜認証フロー＞  
次に、図３７に沿って、第１０の実施形態に係る認証動作について説明する。  
第１０の実施形態では、ＮＡＮＤ型フラッシュメモリ１０内に、更にXYsubも多重記録される（XYsub[i,j]及びXYsubE[i,j]）。
【０３２２】
そのため、ステップＳ１５の際、ＮＡＮＤ型フラッシュメモリ１０は、更に少なくとも2つ以上のXYsubを読み出し、比較し、エラーを含んでいないXYsubを用いて認証を行う（Load / compare XYs and XYsubs）。
【０３２３】
＜作用効果＞  
第１０の実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、少なくとも上記（１１）の効果が得られる。
【０３２４】
さらに、第１０の実施形態によれば、ＮＡＮＤ型フラッシュメモリ１０は、秘匿領域１１−２に、XYsub及びXYsubEについても複製データXYsub[i,j]及びXYsubE[i,j]を記録する。
【０３２５】
必要に応じて、本例のような構成および方法を適用することが可能である。
【０３２６】
［第１１の実施形態］  
次に、図３８および図３９を用い、第１１の実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。
【０３２７】
＜構成例（メモリシステム）＞  
図３８を用い、第１１の実施形態に係る構成例について説明する。  
第１１の実施形態でも同様に、ＮＡＮＤ型フラッシュメモリ１０が、更に複数のXY[i]を複製した情報を有する。すなわち、先の第７の実施形態におけるXY[i]を複製したデータは本図においてXY[i,1],XY[i,2],...,XY[i,n]によって示され、1≦i≦mに対しXY[i,1]=XY[i,2]=…=XY[i,n]である。また、1≦j≦nに対しXY[1,j]≠XY[2,j]≠…≠XY[m,j]である。
【０３２８】
ここで、XYデータを複製することは第９の実施形態と同様であるが、本第１１の実施形態においては、ＮＡＮＤ型フラッシュメモリ１０側では複製データの比較処理を行わず、その代わりにホスト２０で比較処理を行う点で、相違する。そのため、本例では、ホスト２０が、多数決判定部（Majority check）３０を備える点で、相違する。
【０３２９】
すなわち、ＮＡＮＤ型フラッシュメモリ１０は、ホスト２０により指定されたiに応じ、XY[i,1],XY[i,2],...,XY[i,n]のうち少なくとも2つ以上をロードし、各々のXYに対して前述の認証処理を行う。ここで、各々のXYに対しては同一のNonce_N及び同一のNonce_Hを利用し、またバイアスドRNGによって生成されたνについても同一のものを適用する。
【０３３０】
ＮＡＮＤ型フラッシュメモリ１０の送信部１５は、複数のXYに対して、他のパラメータが同一な条件で複数のz(z[i,1],z[i,2],…,z[i,n])を計算し、ホスト２０に送出する。
【０３３１】
ホストデバイスは、複数のz(z[i,1],z[i,2],…,z[i,n])を受領した後、多数決判定部３１により、多数決判定を行い、単一のzを得る。ここで、各zが複数のビット要素で構成されていた場合、圧縮計算部の出力が複数ビットからなる場合、前記多数決判定はビット要素毎に行う。
【０３３２】
ホストデバイスは、多数決判定によってエラーを除去したZを得たのち、前述と同様の判定処理３０を行うことで、ＮＡＮＤ型フラッシュメモリ１０を認証する。
【０３３３】
＜認証フロー＞  
次に、図３９に沿って、第１１の実施形態に係る認証動作について説明する。  
第１１の実施形態では、ＮＡＮＤ型フラッシュメモリ１０内に多重記録されているXYを用いて、ＮＡＮＤ型フラッシュメモリが複数のZを計算し、送出し、ホストデバイスは複数のZを多数決処理することで単一のZを得て、認証を行う。
【０３３４】
そのため、ステップＳ１７の際、ＮＡＮＤ型フラッシュメモリ１０は、計算した複数のZ,jをホスト２０に送信する。
【０３３５】
続いて、ステップＳ１８の際、ホスト２０は、複数のZの多数決判定部（Majority check）を更に行う点で、相違する。
【０３３６】
＜作用効果＞  
第１１の実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、少なくとも上記（１１）の効果が得られる。
【０３３７】
さらに、第１１の実施形態では、ＮＡＮＤ型フラッシュメモリ１０が、更に複数のXY[i]を複製した情報を有する。さらに、ホスト２０が、多数決判定部（Majority check）３０を備える。
【０３３８】
そのため、計算資源に制約のあるＮＡＮＤ型フラッシュメモリ１０での比較処理を軽減でき、計算資源に余裕のあるホスト２０に比較処理（多数決処理）３０を依頼することができる。結果、ＮＡＮＤ型フラッシュメモリ１０へのコスト増加を抑制することができ、エラーの除去が可能となる点で有利である。
【０３３９】
［第１２の実施形態］  
次に、図４０および図４１を用い、第１２の実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。
【０３４０】
＜構成例（メモリシステム）＞  
図４０を用い、第１２の実施形態に係る構成例について説明する。第１２の実施形態は、上記第３、第１１の実施形態を組み合わせたものの一例に関する。
【０３４１】
図示するように、ＮＡＮＤ型フラッシュメモリ１０は、XYsub及びXYsubEについても複製データ１１−２Ｂ，１１−１Ｂを更に記録する。上記第１１の実施形態と同様に、複数のXYに対する認証用データzを算出して算出部１５でホスト２０に送信し、ホスト２０側で多数決処理３０を行う。
【０３４２】
＜認証フロー＞  
次に、図４１に沿って、第１２の実施形態に係る認証動作について説明する。  
第１２の実施形態では、ＮＡＮＤ型フラッシュメモリ１０内に、多重記録されているXYmain及びXYsubを用いて、ＮＡＮＤ型フラッシュメモリが複数のZを計算し、送出し、ホストデバイスは複数のZを多数決処理することで単一のZを得て、認証を行う。
【０３４３】
そのため、ステップＳ１１の際、ホスト２０は、多重記録されているXYmain及びXYsubの読み出し要求（Read XYmainE and XYsubE）を行う。
【０３４４】
続いて、ステップＳ１２の際、ＮＡＮＤ型フラッシュメモリ１０は、多重記録されているXYmain及びXYsubを読み出し（Load XYmainE and XYsubE）、ホスト２０に送信（XYmainE and XYsubE）する。
【０３４５】
＜作用効果＞  
第１２の実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、少なくとも上記（１１）の効果が得られる。
【０３４６】
さらに、第１２の実施形態では、ＮＡＮＤ型フラッシュメモリ１０が、XYsub及びXYsubEについても複製データ１１−２Ｂ，１１−１Ｂを更に記録する。上記第１１の実施形態と同様に、複数のXYに対する認証用データzを算出して算出部１５でホスト２０に送信し、ホスト２０側で多数決処理３０を行う。
【０３４７】
このように、必要に応じ、本例を適用することが可能である。
【０３４８】
［第１３の実施形態（Media ID retrieve process）］  
次に、図４２乃至図４５を用い、第１３の実施形態について説明する。第８の実施形態は、上記ステップＳ２２において、メディアＩＤ（Media ID）を算出する種々の処理（Media ID retrieve process）に関するものである。
【０３４９】
ID retrieve process（１）  
ID retrieve process（１）は、図４２のように示される。図示するように、この例（１）では、ステップＲＳ１の際、上記の認証に用いられたXYmain及びXYsubに対して、各々一方向性関数処理（One-way function）が行われる。その結果が、Media IDとして扱われる。
【０３５０】
ここで、一方向性関数処理としては、例えば、SHA-1、SHA-256、AEG-Hなどの暗号に基づく一方向性演算を用いることが可能である。
【０３５１】
ID retrieve process（２）  
ID retrieve process（２）は、図４３のように示される。図示するように、この例（２）では、ステップＲＳ１，ＲＳ２の際、上記認証に用いられたXYmain及びXYsubは、前述の認証処理においてXYmainE及びXYsubEの復号に用いられたKEY_XYmainとKEY_XYsubのいずれか一方に相当するKEY_XYを用いて、更に復号処理（Decode）が行われる。
【０３５２】
続いて、ステップＲＳ３の際、同様の一方向性関数処理（One-way function）が行われ、その結果がMedia IDとして扱われる。
【０３５３】
ID retrieve process（３）  
ID retrieve process（３）は、図４４のように示される。図示するように、この例（３）では、ステップＲＳ１，ＲＳ２の際、上記の認証に用いられたXYmain及びXYsubは、上記認証処理においてXYmainE及びXYsubEの復号に用いられたKEY_XYmain及びKEY_XYsubを用いて、更に復号処理（Decode）が行われる。
【０３５４】
続いて、ステップＲＳ３の際、同様の一方向性関数処理（One-way function）が行われ、その結果がMedia IDとして扱われる。
【０３５５】
ID retrieve process（４）  
ID retrieve process（４）は、図４５のように示される。図示するように、この例（４）では、ステップＲＳ１，ＲＳ２の際、ステップＲＳ１，ＲＳ２の際、上記の認証に用いられたXYmain及びXYsubは、上記認証処理においてXYmainE及びXYsubEの復号に用いられたKEY_XYmain及びKEY_XYsub と異なるKEY_XYmain２及びKEY_XYsub２を用いて、更に復号処理（Decode）が行われる。ここで、KEY_XYmain２及びKEY_XYsub２は同一の値であってもよい。
【０３５６】
続いて、ステップＲＳ３の際、同様の一方向性関数処理（One-way function）が行われ、その結果がMedia IDとして扱われる。
【０３５７】
［第１４の実施形態（Media ID binding process）］  
次に、図４６乃至図４７を用い、第１４の実施形態について説明する。第１４の実施形態は、Media IDの利用方法（Media ID binding process）に関するものである。  
ここで、例えば、商用動画コンテンツ等を物理媒体に記録し、再生する場合、同物理媒体に固有な識別情報をコンテンツ記録時の暗号処理に用いてコンテンツを同物理媒体にバインドする方法がとられる。
【０３５８】
コンテンツ再生時は、前記識別情報に基づく復号処理もしくは検査処理などを行い、再生された識別情報とコンテンツ記録時の暗号処理に用いられた識別情報が一致しない場合、コンテンツの再生を停止するなどの方法がとられる。ここで物理媒体としては、例えば、SDカードなどのリムーバブルメディアの場合や、携帯電話などに内蔵されているエンベデッドメモリなどが考えられる。
【０３５９】
いずれにおいても、前記方法の目的は、あるメディアに記録された暗号処理済みコンテンツを、別のメディアへと不正複製された場合、不正複製コンテンツの再生を停止させることである。そのための情報として、メディア毎に異なる上記識別情報（メディアＩＤ）を利用している。
【０３６０】
ID binding process（１）  
ID binding process（１）は、図４６のように示される。図示するように、この例（１）では、ＭＡＣ（Message Authentication Code）生成処理を行い、これを不正複製の防止に用いる。
【０３６１】
具体的には、ステップＢＰ１の際、前記識別情報としてMedia IDを用いる方法例として、コンテンツ暗号化に用いられるContent Keyにより、Media ID及びその他の情報に対し、ＭＡＣ生成処理を行う。
【０３６２】
続いて、コンテンツをメディアに記録する装置においては、同MACを生成し、これをメディアに記録しておく。コンテンツをメディアから再生する装置においては、記録されているMACをMedia ID、Content Keyにより検査し、正当性が確認された場合はコンテンツを再生し、正当性が確認されない場合はコンテンツの再生を停止するなどの方法を適用することが可能である。
【０３６３】
ID binding process（２）  
ID binding process（２）は、図４７のように示される。図示するように、この例（１）では、コンテンツ暗号化に用いられるContent Keyを生成するための情報として、Media IDを利用する。
【０３６４】
ステップＢＰ１の際、コンテンツをメディアに記録する装置においては、Content Key Precursorと、Media ID及びContent Key Precursorを一方向性処理（One-way function）する。
【０３６５】
メディアに記録する装置においては、処理されたContent Keyによって暗号化されたコンテンツを記録しておく。
【０３６６】
コンテンツをメディアから再生する装置においては、記録されているContent Key PrecursorとMedia IDを同様の一方向性処理をすることでContent Keyを得て、コンテンツの復号と再生を行う。ここで、Media IDが一致しない場合、すなわち記録されているデータが異なるメディアに不正複製された場合など、には導出したContent Keyとコンテンツ暗号化に用いられているContent Keyが一致しないため、コンテンツの復号に失敗し、再生は停止される。
【０３６７】
［第１５の実施形態（メモリ、記憶・再生ホストの一例）］  
次に、図４８を用い、第１５の実施形態について説明する。第１５の実施形態は、上記実施形態の構成を組み合わせたメモリカード（inc. NAND chip）１０，記録ホスト（Recoding Device）２０Ａ，再生ホスト（Playback Device）２０Ｂのシステムにおいて、上記認証を行い、上記メディアＩＤを用い、ホスト２０Ｂにてコンテンツを再生する一例に関するものである。
【０３６８】
記録ホスト（Recoding Device）２０Ａがコンテンツをメモリカード（inc. NAND chip）１０に記録するに際し、まずメモリカード（inc. NAND chip）１０と記録ホスト（Recoding Device）２０Ａの間で、上記実施形態における認証処理を行う。ここで、認証処理が成立した後、上記実施形態におけるID retrieval processを行う。次いで、上記実施形態におけるID binding process（１）により生成したMACをメモリカード（inc. NAND chip）１０に記録する。合わせて、ID binding process（１）において用いたContent Keyにより暗号化したコンテンツ（Encrypted Content）も記録する。更に、Content Key自身も安全な形で記録する。ここで安全な形とは、メモリカード（inc. NAND chip）１０と記録ホスト（Recoding Device）２０Ａの間で認証が成立した後にアクセスが可能となるモリカード（inc. NAND chip）１０内の記録エリアであってもよい。また、ここでいう認証は本願において記載されている認証方法でもよいし、メモリカード（inc. NAND chip）１０が持つ別の認証機能によって実現してもよい。また、安全な形の別な例としては、メモリカード（inc. NAND chip）１０もしくは記録ホスト（Recoding Device）２０Ａが有する鍵によって暗号化した形であってもよい。
【０３６９】
再生ホスト（Playback Device）２０Ｂがコンテンツをメモリカード（inc. NAND chip）１０から読出し、再生するに際し、まずメモリカード（inc. NAND chip）１０と再生ホスト（Playback Device）２０Ｂの間で、上記実施形態における認証処理を行う。ここで、認証処理が成立した後、上記実施形態におけるID retrieval processを行う。次いで、上記実施形態におけるID binding process（１）に対応する処理により、メモリカード（inc. NAND chip）１０に記録されているMACを検証する。その後、Content Keyをメモリカード（inc. NAND chip）１０より読出し、暗号化したコンテンツ（Encrypted Content）の復号を行うことでコンテンツを再生する。
【０３７０】
［第１６の実施形態（メモリ、記憶・再生ホストのその他の一例）］  
次に、図４９を用い、第１６の実施形態について説明する。第１６の実施形態は、上記実施形態の構成を組み合わせたメモリカード（inc. NAND chip）１０、記録ホスト（Recoding Device）２０Ａ、再生ホスト（Playback Device）２０Ｂのシステムにおいて、上記認証を行い、上記メディアＩＤを用い、ホスト２０Ｂにてコンテンツを再生する一例に関するものである。
【０３７１】
記録ホスト（Recoding Device）２０Ａがコンテンツをメモリカード（inc. NAND chip）１０に記録するに際し、まずメモリカード（inc. NAND chip）１０と記録ホスト（Recoding Device）２０Ａの間で、上記実施形態における認証処理を行う。ここで、認証処理が成立した後、上記実施形態におけるID retrieval processを行う。次いで、上記実施形態におけるID binding process（１）により生成したContent Keyをメモリカード（inc. NAND chip）１０に記録する。合わせて、ID binding process（２）において生成したContent Keyにより暗号化したコンテンツ（Encrypted Content）も記録する。更に、Content Key Precursor自身も安全な形で記録する。
【０３７２】
ここで安全な形とは、メモリカード（inc. NAND chip）１０と記録ホスト（Recoding Device）２０Ａの間で認証が成立した後にアクセスが可能となるモリカード（inc. NAND chip）１０内の記録エリアであってもよい。また、ここでいう認証は本願において記載されている認証方法でもよいし、メモリカード（inc. NAND chip）１０が持つ別の認証機能によって実現してもよい。また、安全な形の別な例としては、メモリカード（inc. NAND chip）１０もしくは記録ホスト（Recoding Device）２０Ａが有する鍵によって暗号化した形であってもよい。
【０３７３】
再生ホスト（Playback Device）２０Ｂがコンテンツをメモリカード（inc. NAND chip）１０から読出し、再生するに際し、まずメモリカード（inc. NAND chip）１０と再生ホスト（Playback Device）２０Ｂの間で、上記実施形態における認証処理を行う。ここで、認証処理が成立した後、上記実施形態におけるID retrieval processを行う。次いで、上記実施形態におけるID binding process（２）に対応する処理により、メモリカード（inc. NAND chip）１０に記録されているContent Key PrecursorからContent Keyを生成する。その後、暗号化したコンテンツ（Encrypted Content）の復号を行うことでコンテンツを再生する。
【０３７４】
［第１６の実施形態（メモリ、コントローラ、ホストの一例）］  
次に、図５０を用い、第１２実施形態について説明する。第１２実施形態は、上記実施形態に適用可能な上記ＮＡＮＤ型フラッシュメモリ１０、コントローラ１９、およびホスト２０の一例に関するものである。本例では、メモリカードとしてＳＤカード（登録商標）を一例に挙げる。
【０３７５】
図示するように、本例では、メモリカードと接続されるホスト装置の機能ブロックも示されている。各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。このため、各ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明する。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も本発明の範疇に含まれる。
【０３７６】
ホスト２０は、アプリケーション、オペレーティング・システム等のソフトウェア２１１を備えている。ソフトウェア２１１は、ユーザから、メモリカードへのデータの書き込み、メモリカードからのデータの読み出しを指示される。ソフトウェア２１１は、データの書き込みおよび読み出しをファイルシステム２１２に指示する。ファイルシステム２１２は、管理対象の記憶媒体に記録されているファイルデータを管理するための仕組みであり、記憶媒体の記憶領域内に管理情報を記録し、この管理情報を用いてファイルデータを管理する。
【０３７７】
ホスト２０は、ＳＤインターフェース２１３を有する。ＳＤインターフェース２１３は、ホスト２０とメモリカードとの間のインターフェース処理を行うのに必要なハードウェア、ソフトウェアからなる。ホスト２０は、ＳＤインターフェース２１３を介してメモリカードと通信を行う。ＳＤインターフェース２１３は、ホスト２０とメモリカードとが通信するのに必要な様々な取り決めを規定し、後述のメモリカードのＳＤインターフェース２３１と相互に認識可能な各種のコマンドの組を備えている。また、ＳＤインターフェース２１３は、メモリカードのＳＤインターフェース２３１と接続可能なハードウェア上の構成（ピンの配置、数等）も含む。
【０３７８】
メモリカードは、ＮＡＮＤ型フラッシュメモリ１０、メモリ１０を制御するためのコントローラ１９を有する。メモリカードは、ホスト２０に接続されたとき、およびオフ状態のホスト２０に挿入された状態でホスト２０がオンされたときに電源供給を受けて初期化動作を行った後、ホスト１からのアクセスに応じた処理を行う。
【０３７９】
ＮＡＮＤ型メモリ１０は、データを不揮発に記憶し、複数のメモリセルからなるページと呼ばれる単位でデータの書き込みおよび読み出しを行う。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ１０は、複数のページからなる物理ブロック（消去ブロック）と呼ばれる単位でデータの消去を行う。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
【０３８０】
コントローラ１９は、メモリ１０によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ（または物理ブロック）が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ（または物理ブロック）が消去状態（何も書き込まれていない、または無効なデータを保持している状態）であるかを管理することを含んでいる。
【０３８１】
コントローラ１９は、ＳＤインターフェース３１、ＭＰＵ（micro processing unit）３２、ＲＯＭ（read only memory）３３、ＲＡＭ（『random access memory』）３４、ＮＡＮＤインターフェース３５を含んでいる。
【０３８２】
ＳＤインターフェース３１は、ホスト２０とコントローラ１９との間のインターフェース処理を行うのに必要なハードウェア、ソフトウェアからなり、ＳＤインターフェース１３と同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウェア上の構成（ピンの配置、数等）も含む。メモリカード（コントローラ２２）は、ＳＤインターフェース３１を介してとホスト１と通信を行う。ＳＤインターフェース３１は、レジスタ３６を含んでいる。
【０３８３】
ＭＰＵ３２は、メモリカード２全体の動作を司る。ＭＰＵ３２は、例えば、メモリカード２が電源供給を受けた際に、ＲＯＭ３３内に格納されているファームウェア（制御プログラム）をＲＡＭ３４上に読み出して所定の処理を実行する。ＭＰＵ３２は、制御プログラムに従って各種のテーブルをＲＡＭ３４上で作成したり、ホスト１から受けたコマンドに従ってメモリ２１に対する所定の処理を実行したりする。
【０３８４】
ＲＯＭ３３は、ＭＰＵ３２により制御される制御プログラムなどを格納する。ＲＡＭ３４は、ＭＰＵ３２の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、ファイルシステム１２によってデータに割り当てられた論理アドレスを有するデータを実際に記憶しているページの物理アドレスの変換テーブル（論物テーブル）が含まれる。ＮＡＮＤインターフェース３５は、コントローラ２２とメモリ２１とのインターフェース処理を行う。
【０３８５】
ＮＡＮＤ型フラッシュメモリ１０内の記憶領域は、保存されるデータの種類に応じて、例えばシステムデータ領域、機密データ領域、保護データ領域、ユーザデータ領域等を含んでいる。システムデータ領域は、コントローラ１９が、その動作に必要なデータを保存するためにメモリ１０内で確保しておく領域である。機密データ領域は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト２０からアクセスできない。保護データ領域は、重要なデータ、セキュアなデータを格納する。ユーザデータ領域は、ホスト２０が自由にアクセスおよび使用することが可能で、例えばＡＶコンテンツファイルや画像データ等のユーザデータを格納する。なお、コントローラ１９は、ユーザデータ領域の一部を確保し、自身の動作に必要な制御データ（論物テーブル等）を保存する。
【０３８６】
本発明のいくつか実施形態を説明したが、これら実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０３８７】
１１…メモリセルアレイ、１６…乱数発生回路、１９…コントローラ、１６１…擬似乱数発生回路（LFSR）、１６２…乱数制御回路（TRNG Controller）。
【図１】
0005813380.tif 000002
【図２】
0005813380.tif 000003
【図３】
0005813380.tif 000004
【図４】
0005813380.tif 000005
【図５】
0005813380.tif 000006
【図６】
0005813380.tif 000007
【図７】
0005813380.tif 000008
【図８】
0005813380.tif 000009
【図９】
0005813380.tif 000010
【図１０】
0005813380.tif 000011
【図１１】
0005813380.tif 000012
【図１２】
0005813380.tif 000013
【図１３】
0005813380.tif 000014
【図１４Ａ】
0005813380.tif 000015
【図１４Ｂ】
0005813380.tif 000016
【図１５】
0005813380.tif 000017
【図１６】
0005813380.tif 000018
【図１７】
0005813380.tif 000019
【図１８】
0005813380.tif 000020
【図１９】
0005813380.tif 000021
【図２０】
0005813380.tif 000022
【図２１】
0005813380.tif 000023
【図２２】
0005813380.tif 000024
【図２３】
0005813380.tif 000025
【図２４】
0005813380.tif 000026
【図２５】
0005813380.tif 000027
【図２６】
0005813380.tif 000028
【図２７】
0005813380.tif 000029
【図２８】
0005813380.tif 000030
【図２９】
0005813380.tif 000031
【図３０】
0005813380.tif 000032
【図３１】
0005813380.tif 000033
【図３２】
0005813380.tif 000034
【図３３】
0005813380.tif 000035
【図３４】
0005813380.tif 000036
【図３５】
0005813380.tif 000037
【図３６】
0005813380.tif 000038
【図３７】
0005813380.tif 000039
【図３８】
0005813380.tif 000040
【図３９】
0005813380.tif 000041
【図４０】
0005813380.tif 000042
【図４１】
0005813380.tif 000043
【図４２】
0005813380.tif 000044
【図４３】
0005813380.tif 000045
【図４４】
0005813380.tif 000046
【図４５】
0005813380.tif 000047
【図４６】
0005813380.tif 000048
【図４７】
0005813380.tif 000049
【図４８】
0005813380.tif 000050
【図４９】
0005813380.tif 000051
【図５０】
0005813380.tif 000052