(57)【要約】【課題】中間者攻撃に対する耐性を向上できる認証コンポーネント、被認証コンポーネントおよびその認証方法を提供する。【解決手段】実施形態によれば、データ構造がそれぞれ鍵遷移レコードで構成された鍵情報、マトリックス状の秘密情報XY、および前記秘密情報XYが暗号化された秘密情報XYEとを記憶する被認証コンポーネント１０と、前記被認証コンポーネントを認証する認証コンポーネント２０との間における認証方法は、前記認証コンポーネントが、前記被認証コンポーネントから受領した前記鍵情報に対して、自身のデバイスインデックスに対応するレコードを選択し、前記レコードをデバイス鍵によって復号して鍵遷移を取り出すステップＳ３３と、前記認証コンポーネントが、前記被認証コンポーネントから受領した前記秘密情報XYEに対して、対応する鍵遷移を用いて、復号処理を行い、前記秘密情報XYを共有するステップＳ１３とを具備する。【選択図】図２２Ａ
2013005293.tif 000002
【特許請求の範囲】
【請求項１】
データ構造が鍵遷移レコードで構成された鍵情報、マトリックス状の秘密情報XY、および前記秘密情報XYが暗号化された秘密情報XYEを記憶する被認証コンポーネントと、前記被認証コンポーネントを認証する認証コンポーネントとの間における認証方法は、
前記認証コンポーネントが、前記被認証コンポーネントから受領した前記鍵情報に対して、自身のデバイスインデックスに対応するレコードを選択し、前記レコードをデバイス鍵によって復号して鍵遷移を取り出すステップと、
前記認証コンポーネントが、前記被認証コンポーネントから受領した前記秘密情報XYEに対して、対応する前記鍵遷移を用いて、復号処理を行い、前記秘密情報XYを共有するステップとを具備する。
【請求項２】
前記被認証コンポーネントが、前記認証コンポーネントが生成する乱数Bを受領するステップと、
前記被認証コンポーネントが、乱数Aおよびデータν（νは１の出現確率がη（ただし、η<0.5））を生成するステップと、
前記被認証コンポーネントが、生成した前記乱数Aと受領した前記乱数Bの少なくとも一部から構成される乱数Dを生成するステップと、
前記被認証コンポーネントが、前記乱数Dと前記秘密情報XYの少なくとも一部とについて、圧縮演算を行い、データCを生成するステップと、
前記被認証コンポーネントが、前記データCに前記データνを付与した演算結果zを、前記認証コンポーネントに送信するステップと、
前記認証コンポーネントが、生成した前記乱数Aと受領した前記乱数Bの少なくとも一部から構成される乱数Dを生成するステップと、
前記認証コンポーネントが、前記乱数Dと前記秘密情報XYの少なくとも一部とについて、圧縮演算を行い、データCを生成するステップと、
前記認証コンポーネントが、受領した演算結果zと生成したデータCとを用いて、判定処理を行うステップとを更に具備する
請求項１に記載の認証方法。
【請求項３】
データ構造が鍵遷移レコードで構成された鍵情報、マトリックス状の秘密情報XY、および前記秘密情報XYが暗号化された秘密情報XYEを記憶するメモリと、
乱数Aを生成する生成部と、
生成した前記乱数Aと、受領する乱数Bの少なくとも一部から構成される乱数Dを生成する生成部と、
前記乱数Dと前記メモリからロードした秘密情報XYとについて、圧縮演算を行い、データCを生成する演算部と、
データν（νは１の出現確率がη（ただし、η<0.5））を生成する生成部と、
前記データCに前記データνを付与して、演算結果zを算出するビット毎加算部と
を具備する被認証コンポーネント。
【請求項４】
前記データ構造がマトリックス状の秘密情報XYは、秘密情報XYmain，XYsubにより構成され、
前記データ構造がマトリックス状の暗号化された秘密情報XYEは、XYmainE，XYsubEにより構成され（但し、データサイズ：XYsub ＜ XYmain，XYsubE ＜ XYmainE）、
前記秘密情報XYmainは、複数の前記被認証コンポーネントから構成されるグループ内で同一であり、
前記秘密情報XYsubは、前記被認証コンポーネントごとに異なる
請求項３に記載の被認証コンポーネント。
【請求項５】
データ構造がそれぞれ鍵遷移レコードで構成された鍵情報、マトリックス状の秘密情報XY、および前記秘密情報XYが暗号化された秘密情報XYEを記憶する被認証コンポーネントを認証する認証コンポーネントは、
前記被認証コンポーネントから受領した前記鍵情報に対して、自身のデバイスインデックスに対応するレコードを選択する解析選択部と、
前記レコードをデバイス鍵によって復号し、鍵遷移を取り出す復号部と、
前記被認証コンポーネントから受領した前記秘密情報XYEに対して、対応する前記鍵遷移を用いて、復号処理を行い、前記秘密情報XYを共有する選択復号部と、
乱数Bを生成する生成部と、
生成した前記乱数Bと、前記被認証コンポーネントから受領する乱数Aの少なくとも一部から構成される乱数Dを生成する生成部と、
前記乱数Dと前記秘密情報XYの少なくとも一部とについて、圧縮演算を行い、データCを生成する演算部と、
前記被認証コンポーネントから受領する演算結果のうち前記レコード中のインデックスに対応する演算結果zを選択する検査部と、
生成した前記データCと前記選択された演算結果zとを用いて、判定処理を行う判定部と
を具備する認証コンポーネント。
【請求項６】
被認証IDと秘密情報XYとを記憶する被認証コンポーネントと、認証IDと固有の秘密情報Unique XYとを記憶する認証コンポーネントとの間の認証方法は、
前記被認証コンポーネントが、要求された前記被認証IDを、前記認証コンポーネントに送信するステップと、
前記認証コンポーネントが、取得した前記被認証IDと自身が有する前記固有の秘密情報Unique XYとに対して非線形処理を行い、固有値（Unique XY for Memory and Device）を取得するステップと、
前記被認証コンポーネントが、送信された前記認証IDと自身の有する前記秘密情報XYとに対して一方向性関数処理を行い、前記秘密情報Unique XYを共有するステップと
を具備する認証方法。
【請求項７】
前記被認証コンポーネントが、自身が有する被認証IDと共有した前記秘密情報Unique XYとに対して非線形処理を行い、固有値（Unique XY for Memory and Device）を取得するステップを更に具備する
請求項６に記載の認証方法。
【請求項８】
前記被認証コンポーネントが、前記認証コンポーネントが生成する乱数Bを受領するステップと、
前記被認証コンポーネントが、乱数Aおよびデータν（νは１の出現確率がη（ただし、η<0.5））を生成するステップと、
前記被認証コンポーネントが、生成した前記乱数Aと受領した前記乱数Bの少なくとも一部から構成される乱数Dを生成するステップと、
前記被認証コンポーネントが、前記乱数Dと前記固有値（Unique XY for Memory and Device）の少なくとも一部とについて、圧縮演算を行い、データCを生成するステップと、
前記被認証コンポーネントが、前記データCに前記データνを付与した演算結果zを、前記認証コンポーネントに送信するステップと、
前記認証コンポーネントが、生成した前記乱数Aと受領した前記乱数Bの少なくとも一部から構成される乱数Dを生成するステップと、
前記認証コンポーネントが、前記乱数Dと前記固有値（Unique XY for Memory and Device）の少なくとも一部とについて、圧縮演算を行い、データCを生成するステップと、
前記認証コンポーネントが、受領した演算結果zと生成したデータCとを用いて、判定処理を行うステップとを更に具備する
請求項７に記載の認証方法。
【請求項９】
被認証IDと秘密情報XYとを記憶するメモリと、
認証コンポーネントから送信される認証IDと自身の有する前記秘密情報XYとに対して一方向性関数処理を行い、固有の秘密情報Unique XYを出力する一方向性関数処理部と、
前記被認証IDと前記固有の秘密情報Unique XYとに対して非線形処理を行い、前記認証コンポーネントと固有値（Unique XY for Memory and Device）を共有する非線形処理部と
を具備する被認証コンポーネント。
【請求項１０】
認証IDと固有の秘密情報Unique XYとを有し、
被認証コンポーネントから取得する被認証IDと自身が有する前記固有の秘密情報Unique XYとに対して非線形処理を行い、前記被認証コンポーネントと固有値（Unique XY for Memory and Device）を共有する非線形処理部を具備する
認証コンポーネント。
【発明の詳細な説明】
【技術分野】
【０００１】
認証コンポーネント、被認証コンポーネントおよびその認証方法に関するものである。
【背景技術】
【０００２】
一般に、セキュリティを要する分野において、自己の正当性を証明する手段として暗号器と共有した秘密に基づく手法が採られている。
【０００３】
例えば、電子決済に用いるＩＣカード等では、カード内のＩＣに対して個別化されたＩＤ及び秘密情報が保持されており、更にＩＣカードは、ＩＤ及び秘密情報に基づく認証を行うための暗号処理機能を有している。別の例では、コンテンツの著作権保護において、ＳＤ（登録商標）カードの正当性を証明する手段などもある。
【０００４】
上記の例は、いずれも被認証コンポーネントが、秘密鍵と暗号器とを保有していることが必要である。しかしながら、暗号器の実装は比較的大きな回路規模を要求されるため、回路規模上の制約が同時に課せられる環境においては自己の正当性を証明するのは非常に困難である。回路規模上の制約が課せられる代表例としては、例えば、RFID(Radio Frequency Identification)等があげられる。そのため、近年では、益々実装上の必要性が高まっているという背景がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国公開特許公報２０１０／０１６１９８８  Ａ１
【特許文献２】特開２０００−３５７２１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
中間者攻撃に対する耐性を向上させる。
【課題を解決するための手段】
【０００７】
実施形態によれば、データ構造がそれぞれ鍵遷移レコードで構成された鍵情報、マトリックス状の秘密情報XY、および前記秘密情報XYが暗号化された秘密情報XYEとを記憶する被認証コンポーネントと、前記被認証コンポーネントを認証する認証コンポーネントとの間における認証方法は、前記認証コンポーネントが、前記被認証コンポーネントから受領した前記鍵情報に対して、自身のデバイスインデックスに対応するレコードを選択し、前記レコードをデバイス鍵によって復号して鍵遷移を取り出すステップと、前記認証コンポーネントが、前記被認証コンポーネントから受領した前記秘密情報XYEに対して、対応する鍵遷移を用いて、復号処理を行い、前記秘密情報XYを共有するステップとを具備する。
【図面の簡単な説明】
【０００８】
【図１】比較例１に係るプロトコルを示すブロック図。
【図２】比較例２に係るプロトコルを示すブロック図。
【図３】第１実施形態に係る構成例を示すブロック図。
【図４】第１実施形態に係る認証フローを示すフロー図。
【図５】第２実施形態に係る構成例を示すブロック図。
【図６】第２実施形態に係る認証フローを示すフロー図。
【図７】第３実施形態に係る構成例を示すブロック図。
【図８】第３実施形態に係る認証フローを示すフロー図。
【図９】第３実施形態に係る秘密情報のデータ転送を示すブロック図。
【図１０】第４実施形態に係る構成例を示すブロック図。
【図１１】第４実施形態に係る認証フローを示すフロー図。
【図１２】第５実施形態に係る構成例を示すブロック図。
【図１３】第５実施形態に係る認証フローを示すフロー図。
【図１４】第６実施形態に係る構成例を示すブロック図。
【図１５】第６実施形態に係る認証フローを示すフロー図。
【図１６】第７実施形態に係る構成例を示すブロック図。
【図１７】第７実施形態に係る認証フローを示すフロー図。
【図１８】第８実施形態に係る構成例を示すブロック図。
【図１９】第８実施形態に係るマトリックス状のデータ構造例を示す図。
【図２０】第８実施形態に係るマトリックス状のデータの利用方法を示す図。
【図２１】第８実施形態に係るKey Sequence Informationのデータ配布の一例を示す図。
【図２２Ａ】第８実施形態に係る認証フローを示すフロー図。
【図２２Ｂ】第８実施形態および第２実施形態の場合における時間と秘密許容度との関係を示す図。
【図２３】第９実施形態に係る構成例を示すブロック図。
【図２４】第９実施形態に係るマトリックス状のデータ構造例（１）を示す図。
【図２５】第９実施形態に係るマトリックス状のデータ構造例（２）を示す図。
【図２６】第９実施形態に係るマトリックス状のデータ構造例（３）を示す図。
【図２７】第９実施形態に係る認証フローを示すフロー図。
【図２８】第１０実施形態に係る構成例を示すブロック図。
【図２９】図２８中の一方向性関数の構成例を示すブロック図。
【図３０】図２９中のCrypto boxの構成例を示すブロック図。
【図３１】第１０実施形態に係る認証フローを示すフロー図。
【図３２】第１１実施形態に係るID retrieval process(1)を示すブロック図。
【図３３】第１１実施形態に係るID retrieval process(2)を示すブロック図。
【図３４】第１１実施形態に係るID retrieval process(3)を示すブロック図。
【図３５】第１１実施形態に係るID retrieval process(4)を示すブロック図。
【図３６】第１２実施形態に係るID biding process(1)を示すブロック図。
【図３７】第１２実施形態に係るID biding process(2)を示すブロック図。
【図３８】第１３実施形態に係る構成例を示すブロック図。
【図３９】第１４実施形態に係る構成例を示すブロック図。
【図４０】第１５実施形態に係る構成例を示すブロック図。
【図４１】第１６実施形態に係るＮＡＮＤ型フラッシュメモリの構成例を示すブロック図。
【図４２】図４１中のブロック（ＢＬＯＣＫ）を示す等価回路図。
【図４３】２値メモリセル（ＳＬＣ）の閾値分布を示す図。
【図４４】多値メモリセル（ＭＬＣ）の閾値分布を示す図。
【発明を実施するための形態】
【０００９】
［比較例１（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）を生成する。
【００５２】
順序交換回路（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を算出して算出部１５でホスト装置２０に送信し、ホスト装置２０側で多数決処理３０を行う。
【０１６７】
このように、必要に応じ、本例を適用することが可能である。
【０１６８】
［第８実施形態］  
次に、図１８至図２２を用い、第８実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。
【０１６９】
＜構成例（メモリシステム）＞  
図１８を用い、第８実施形態に係る構成例について説明する。第８実施形態は、第６実施形態に対して、ホスト装置２０毎に用いるXY値の組み合わせを異ならせる方法を提供する。
【０１７０】
図示するように、ＮＡＮＤ型フラッシュメモリ１０は、データ構造が鍵遷移レコードで構成された鍵情報（Key Sequence Information）８０をユーザ領域（Other area）１１−３に更に保持する点で、上記第６実施形態と相違する。なお、鍵情報（Key Sequence Information）８０は必ずしもユーザ領域１１−３に格納される必要はなく、ロム領域１１−１に格納されていても良いし、あるいは書き込み及び消去動作の少なくとも一方が禁止された領域に格納されていても良い。
【０１７１】
また、ロム領域１１−１に記録されているContainerは、第６実施形態と同様に複数のXYEを保持する構造を採るが、第６実施形態とは異なり複数のXYEはマトリックス状のデータ構造を有し、ホスト装置２０での利用方法が異なるため、以下の説明ではXYE Matrix８１と称する。なお、ここでデータ構造はマトリックス状であることを想定するが、セルアレイ１１での現実のデータ配置がマトリックス状である必要はない。下記XY Matrix８２についても同様である。
【０１７２】
また、秘匿領域１１−２に記録されているXYデータ群も、第６実施形態と同様に複数のXYを保持する構造を採るが、第６実施形態とは異なり複数のXYはマトリックス状のデータ構造を有し、ホスト装置２０での利用方法が異なるため、以下の説明ではXY Matrix８２と称する。ここで、XY Matrix８２は、必要に応じて多重記録(Recorded multiple times)される。多重記録の目的は、先に示した通り、データの信頼性を保証するためであり、その利用方法も同様である。また、多重記録されたそれぞれのXY Matrix８２は、互いに異なるページ、または異なるブロックに配置されていても良い。
【０１７３】
ホスト装置２０は、上記鍵情報（Key Sequence Information）８０を取り扱うために、解析選択部８４、選択復号部８６、検査部８８等を更に備え、デバイスインデックス８３及びデバイス鍵（Device Key）２３を利用して、スロット鍵（Slot Keys corresponding Device Index）８５及びスロットインデックスシーケンス（Slot Index Sequence）８７を得る点において、上記実施形態と相違する。
【０１７４】
デバイスインデックス（Device Index）８３は、ＮＡＮＤ型フラッシュメモリ１０から読み出される鍵情報（Key Sequence Information）８０の中から、このホスト装置２０に対応するデータレコードを選択するためのインデックスである。ホスト装置２０においてデバイスインデックス（Device Index）８３の格納場所は任意であるが、容易に露見しない場所に格納することが要求される。
【０１７５】
解析選択部８４は、ＮＡＮＤ型フラッシュメモリ１０から読み出される鍵情報（Key Sequence Information）８０の中から、自身のデバイスインデックス（Device Index）８３に対応するデータレコードを選択する。選択されたデータレコードは、復号部２２に出力され、デバイス鍵（Device Key）２３を用いて復号される。ホスト装置２０においてデバイス鍵（Device Key）２３の格納場所は任意であるが、容易に露見しない場所に格納することが要求される。
【０１７６】
スロット鍵（Slot Keys corresponding Device Index）８５は、デバイスインデックス（Device Index）８３に対応するデータレコードをデバイス鍵（Device Key）２３で復号して得られたデータに含まれるものであり、デバイスインデックス８３に対応するスロット鍵データである。
【０１７７】
スロットインデックスシーケンス（Slot Index Sequence）８７は、スロット鍵（Slot Keys corresponding Device Index）８５と同様にデバイスインデックス（Device Index）８３に対応するデータレコードをデバイス鍵（Device Key）２３で復号して得られたデータに含まれるものであり、それぞれのスロット鍵（Slot Keys corresponding Device Index）８５に対応するインデックスデータである。
【０１７８】
選択復号部８６は、ＮＡＮＤ型フラッシュメモリ１０から読み出したＥＣＣ処理後のXYE Matrix８１からスロットインデックスシーケンス（Slot Index Sequence）８７に対応する要素を選択し、スロット鍵（Slot Keys corresponding Device Index）８５を用いて復号処理を行う。これにより、ホスト装置２０は秘密情報XY Sequence ２４を取得する。
【０１７９】
検査部８８は、ＮＡＮＤ型フラッシュメモリ１０から受領した演算結果のうち、前記データレコード中のスロットインデックスシーケンス（Slot Index Sequence）８７に対応する演算結果z[i]を選択する。
【０１８０】
判定部３０は、生成したデータCと検査部８８により選択された演算結果z[i]とを用いて、判定処理を行う。
【０１８１】
＜データ構造について＞  
上記鍵情報（Key Sequence Information）８０、XYE Matrix８１、XY Matrix８２のデータ構造について、図１９を用いて説明する。
【０１８２】
まず（ａ）に示す、秘匿領域１１−２に記録されるXY Matrix８２について説明する。XY Matrix８２は、所定データ単位毎に番号付けされた複数のXYデータ（XY(1,1) - XY(n,m)）からなる。図示する例では、XY Matrix８２は、16 x 16の配列構造を有し、各要素が単一のXYデータを構成する。仮に単一のXYデータが64 bytesから構成されている場合、XY Matrix８２は、64 x 16 x 16 bytesから構成される。
【０１８３】
次に、（ｂ）に示す、Container内に保持されているXYE Matrix８１について説明する。同Containerは、前記XY Matrixの各要素を暗号化した複数の暗号化XYデータ（Enc(Ks(1,1),XY(1,1)) - Enc(Ks(n,m),XY(n,m))）から構成される。XY Matrix８２と同様に、XYE Matrix８１は、16 x 16の配列構造を有し、各要素が単一のXYEデータを構成する。また、各要素は異なる鍵によって暗号化されている。ここで、暗号化に用いる鍵をスロット鍵（Slot Key(Ks)）と呼び、同一番号（Index）が付与されたスロット鍵（Slot Key(Ks)）は同一番号（Index）が付与されたXYデータの暗号化に用いられる。すなわち、XYE Matrix８１内の各要素XYE(i,j)は、XYE(i,j)＝Enc(Ks(i,j), XY(i,j))の関係を有する。
【０１８４】
次に、（ｃ）に示す、鍵情報（Key Sequence Information）８０について説明する。鍵情報（Key Sequence Information）８０は、ホスト装置２０が有するデバイス鍵（Device Key(Kd)）２３及びデバイスインデックス（Device Index）８３に対応する複数のデータレコードから構成される。各データレコードには、デバイスインデックス（Device Index）８３に相当するデータと同デバイスインデックス（Device Index）８３に対応するデバイス鍵（Device Key(Kd)）２３によって暗号化された暗号化スロット鍵シーケンス（Encrypted Slot Key Sequence）が含まれる。
【０１８５】
暗号化スロット鍵シーケンス（Encrypted Slot Key Sequence）は、スロットインデックス（Slot Index）をデバイス鍵（Device Key(Kd)）２３によって暗号化したデータEnc(Kd, Index)と、同インデックスに対応するスロット鍵（Slot Key(Ks)）をデバイス鍵（Device Key(Kd)）２３によって暗号化したデータEnc(Kd, Ks)からなり、本例においてはXYE Matrix８１の各行から一つのスロットインデックス（Slot Index）及びスロット鍵（Slot key(Ks)）を選択する構造を採る。
【０１８６】
なお、XY Matrix８２において単一のXYデータのサイズは任意であり、上記64 bytesに限定されない。従ってXY Matrix８２全体のサイズも任意であり、サイズに応じてセルアレイ１１上で同一ページ内に格納しても良いし、複数ページに跨って記憶しても良いし、あるいは同一ブロック内に記憶しても良いし、複数ブロックに跨って記憶しても良い。同様にXYE Matrix８１についてもそのサイズに応じてセルアレイ１１上で同一ページ内に格納しても良いし、複数ページに跨って記憶しても良いし、あるいは同一ブロック内に記憶しても良いし、複数ブロックに跨って記憶しても良い。
【０１８７】
＜秘密情報共有方法の具体例＞  
次に、上記鍵情報（Key Sequence Information）８０を利用して秘密情報を共有する方法の具体例について、図２０を用いて説明する。ホスト装置２０は、自身が有するデバイスインデックス（Device Index）８３に相当するデータレコードを、ＮＡＮＤ型フラッシュメモリ１０から読み出した鍵情報（Key Sequence Information）８０より選択する。本例では、読み出した鍵情報（Key Sequence Information）８０の中から、デバイスインデックス（Device index 1）に相当する暗号化されたデータレコード（Encrypted Slot Key Sequence 1）が選択される。
【０１８８】
続いて、復号部２２は、デバイス鍵（Kd1）２３を用いて、選択されたデータレコード（Encrypted Slot Key Sequence 1）を復号する。その結果、スロットインデックス（Slot Index）及びスロット鍵（Slot Key(Ks)）のシーケンスであるSequence（(1, m, ,,,2) : (XY(1,1), XY(2,m), ,,,XY(n,2))）が得られる。ここで、スロットインデックス（Slot Index）の遷移を示すSequence(1, m, ,,2)がスロットインデックスシーケンス(Slot Index Sequence)８７となる。
【０１８９】
続いて、選択復号部８６は、図中の破線で示すように、ＮＡＮＤ型フラッシュメモリ１０から送信されるXYE Matrix８１の各行から、スロットインデックスシーケンス（Slot Index Sequence）８７に対応する要素を選択して、スロットインデックス（Slot Index）に対応するスロット鍵（Slot Key(Ks)）により復号し、XY Sequence２４を取得する。
【０１９０】
続いて、ここで得られたXY Sequence２４に基づき、ホスト装置２０中の検査部８８は、ＮＡＮＤ型フラッシュメモリ１０から返答されたzを検証する。この検証において、ＮＡＮＤ型フラッシュメモリ１０は、ホスト装置２０が取得したXY Sequence２４に対応するzのみを返答するのではなく、XY Matrix８２中の全ての要素に対応するzを返答する。そのため、検査部８８は、自身が得たXY Sequence２４及びスロットインデックスシーケンス（Slot Index Sequence）８７に相当するzのみをフィルタリングして選出し、同zに対してのみ、判定部３０での認証処理を行う。
【０１９１】
＜鍵情報（Key Sequence Information）８０の配布方法について＞  
次に、鍵情報（Key Sequence Information８０）の配布方法について、図２１を用いて説明する。ＮＡＮＤ型フラッシュメモリ１０には、ＮＡＮＤ型フラッシュメモリ１０の製造時にXY Matrix８２及びXYE Matrix８１が記録される。製造時とは広義であり、前工程においてウエハー状態で全チップに対して並列に書き込んでも良いし、後工程において個片化、パッケージングされた各チップに対して書き込んでも良い。XY Matrix８２及びXYE Matrix８１に対応する鍵情報（Key Sequence Information）８０は、XY Matrix８２及びXYE Matrix８１と同時に記録しても良いし、別のタイミングで記録しても良い。
【０１９２】
例えば、ＮＡＮＤ型フラッシュメモリ１０を購入し、メモリカードを製造するカード製造会社が、鍵情報（Key Sequence Information）８０をＮＡＮＤ型フラッシュメモリ１０に書き込んでも良いし、鍵情報（Key Sequence Information）８０を配布するサーバ（Key Matrix Distributor）がネットワークを介して、鍵情報（Key Sequence Information）８０をＮＡＮＤ型フラッシュメモリ１０に書き込んでも良い。
【０１９３】
いずれにおいても、ＮＡＮＤ型フラッシュメモリ１０内部には、XY Matrix８２及びXYE Matrix８１に紐付いたIDｍが記録されており、カード製造会社もしくはサーバは同IDｍに応じたKey Sequence Information８０をデータベース（Key Matrix data base）より選択し、ＮＡＮＤ型フラッシュメモリ１０へと書き込む。ここで、IDｍとはＮＡＮＤ型フラッシュメモリ１０の識別子であり、Key Sequence Information８０と紐づいた情報である。ＮＡＮＤ型フラッシュメモリ１０の製造とメモリカードの製造とが同一会社で行われるが、ＮＡＮＤ型フラッシュメモリ１０の製造場所とメモリカードの製造場所とが異なる場合も上記と同様である。
【０１９４】
ここで、ホスト装置のクラックが生じていない場合、鍵情報（Key Sequence Information）８０は全てのホスト装置のデータレコードを含んでいる。一方、ホスト装置のクラックが生じた場合、ここでは、仮にホスト装置Ｂ（Host B）がクラックされた場合は、当該装置向けのレコードを鍵情報（Key Sequence Information）８０には含めない形で配布する（Exclude the recorded hacked device B）。これにより、クラックされたホスト装置（Host B）から、更にXY Sequenceが流出することを防止できる。
【０１９５】
上記の例では、XY Sequenceを異ならせる単位としてホスト装置（デバイス）を例に挙げたが、実際の運用においては、複数のデバイスから構成されるグループ、例えば同一モデルナンバーのデバイスグループ、同一製造者によって製造されたデバイスグループ、デバイスの実装方法（ハードウェア実装、ソフトウェア実装、ハードウェア及びソフトウェア実装）によりカテゴリ分けされたデバイスグループ、デバイスの使用者（一般ユーザ、業務ユーザ、サーバ内の処理装置）によりカテゴリ分けされたデバイスグループ、または上記の組み合わせ、などであっても良い。
【０１９６】
＜認証フロー＞  
次に、図２２Ａに沿って、第８実施形態に係る認証動作について説明する。  
第８実施形態では、ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０内に記録される鍵情報（Key Sequence Information）８０を読み出し、自身のデバイスインデックス（Device Index）に対応するデータレコードを選択後、当該レコードをデバイス鍵（Device Key）によって復号して、スロット鍵（Slot Keys）及びスロットインデックス（Slot Indexes）を取得する。
【０１９７】
認証開始（Start）すると、ステップＳ３１の際、ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０へ鍵情報（Key Sequence Information）８０の読出し命令（Read Key Sequence Information）を送出する。ここではコントローラがホスト装置２０とＮＡＮＤ型フラッシュメモリ１０とを仲介する例を示しているため、ホスト装置２０がコントローラに送出する命令と、コントローラが実際にＮＡＮＤ型フラッシュメモリに送出する命令とはコマンド体系が異なっていても良いし、同じであっても良い。
【０１９８】
続いて、ステップＳ３２の際、ＮＡＮＤ型フラッシュメモリ１０は、上記読出し命令に従って、鍵情報（Key Sequence Information）８０をユーザ領域１１−３よりロードし（Load Key Sequence Information）、これをホスト装置２０へと送出する。読出し命令は鍵情報（Key Sequence Information）８０の記録されているアドレスを含んでいても良いし、含んでいなくとも良い。含んでいない場合、ＮＡＮＤ型フラッシュメモリは自身で所定の内部アドレスを生成し鍵情報（Key Sequence Information）８０を取得する。
【０１９９】
続いて、ステップＳ３３の際、ホスト装置２０は、送信された鍵情報（Key Sequence Information）８０から、自身のデバイスインデックス（Device Index）に対応するデータレコードを選択後、当該レコードをデバイス鍵（Device Key）によって復号して、スロット鍵（Slot Keys）とスロットインデックス（Slot Indexes）を取り出す（Retrieve Key Sequence）。
【０２００】
続いて、ステップＳ１１の際、ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０へXYE Matrix８１の読出し命令（Read XYE）を送出する。読出し命令（Read XYE）は読出し命令（Read Key Sequence Information）と異なるコマンドであっても良いし、同一コマンドを使用して異なるアドレスを入力することで両者を区別しても良い。
【０２０１】
続いて、ステップＳ１２の際、ＮＡＮＤ型フラッシュメモリ１０は、上記読出し命令に従って、XYE Matrix８１をロム領域１１−１よりロードし（Load XYE）、これをホスト装置２０へと送出する。
【０２０２】
続いて、ステップＳ１３の際、ホスト装置２０は、前記スロットインデックス（Slot Indexes）に相当するXYE要素を対応するスロット鍵（Slot Key）で復号し、XY Sequence２４を得る。
【０２０３】
続いて、ステップＳ１４の際、ホスト装置２０は、XY Matrix８０のIndex番号(i)と乱数（Nonce_H）とともに、ＮＡＮＤ型フラッシュメモリ１０に認証要求を送出する（Request authentication）。ここで、Index番号とはスロットインデックス、もしくはXY Matrixの行、もしくは列に相当する番号である。
【０２０４】
続いて、ステップＳ１５〜Ｓ１７の際、ＮＡＮＤ型フラッシュメモリ１０は、秘匿領域１１−２に記録されているXY Matrix８０を用いて、前記XY Matrix８０のIndex番号に相当するXYを用いて、複数のzを計算し、乱数（Nonce_N）とともにホスト装置２０に送出する。
【０２０５】
続いて、ステップＳ１８〜Ｓ２３の際、ホスト装置２０は、自身が保持する前記スロットインデックスシーケンス（Slot Index Sequence）に従って、読みだしたデータをフィルタリングすることで単一のzを得て、同様の認証を行う。
【０２０６】
＜作用効果＞  
第８実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、少なくとも更に下記の効果が得られる。
【０２０７】
第８実施形態では、ＮＡＮＤ型フラッシュメモリ１０が、ホスト装置２０に使用される鍵遷移レコードで構成されたデータ構造の鍵情報（Key Sequence Information）８０を備える。ＮＡＮＤ型フラッシュメモリ１０は、鍵情報（Key Sequence Information）８０に対応するように、マトリックス状のデータ構造の秘密情報XY Matrix８２およびこれが暗号化されたXYE Matrix８１を備える。
【０２０８】
そのため、まず、第一に、ホスト装置２０毎に用いる鍵情報（Key Sequence Information）８０値を変更することができるため、中間者攻撃に対する耐性を向上できる。すなわちいずれのXYデータを認証に用いているかを不可視化する効果がある点で有利である。
【０２０９】
第二に、万が一に、ホスト装置２０からXYE Matrix８１を復号する鍵が流出し、次いでXY Matrix８２値が暴露された場合でも、ホスト装置２０毎に用いている鍵情報（Key Sequence Information）８０が異なるため、認証システム全体に与えるセキュリティ保護の影響を低減できる点で有利である。
【０２１０】
具体的には、他の実施例においてはいずれのホスト装置２０も、XYE Matrixの各行を復号するためのKEY[i]を有す、すなわちグローバルシークレットとして扱われていた。そのため、仮に一つのホスト装置２０がクラックされて鍵が流出した場合、同鍵を用いて暗号化されたXYE Matrixの行のXY値は全て露見してしまう。この場合に備え、XYEは、複数の行及びそれら行に対応するKEYで暗号化されているものの、秘密を保持できるのは行数分のホスト装置のクラックまでであり、行数分に達してしまった場合は認証システム全体が崩壊することとなる。
【０２１１】
しかしながら、第８実施形態では、行数 x 列数の要素から認証に用いるXY Sequenceを選択できる組み合わせとして、最大(16*16)!/(16*16-16)!分が確保できるため、仮にホスト装置２０がクラックされ、同デバイスのXY Sequenceデータが暴露された場合でも、他のホスト装置に対する影響は低減でき、また認証システム全体が崩壊するまでのクラックマージンが向上する。
【０２１２】
より具体的に、第８実施形態と第２実施形態の場合における時間とシステムマージンとの関係を示す図２２Ｂを用いて説明する。図中の破線で示す第２実施形態の場合、秘密情報がＬ回（例えば、数回程度）漏洩したときの漏洩度は、リニアに増えていく。一方で、実線で示す第８実施形態では、デバイス毎に秘密情報の重複分があることから第２実施形態よりも低い。また、秘密情報がＭ回（例えば、１０回程度）漏洩したときのシステムマージンは、第２実施形態ではＭ回が秘密情報の行数上限数とした場合全ての秘密が漏洩したことに相当し、この場合置き換えることができる秘密情報が欠乏するためシステムが破綻する。一方、実線で示す第８実施形態の場合、秘密情報がＭ回（例えば、１０回程度）漏洩したときであっても、秘密漏洩度の上昇はリニアではないため、破線で示す参考例よりも十分なシステムマージンを保持し、製品としての秘密保持のセキュリティの許容度を十分に満たすことが可能である。
【０２１３】
このように、本例では、秘密漏洩の危険度を分散することができる点で、上記実施形態と相違する。そのため、例えば、実線で示す第８実施形態の場合、秘密情報がＮ回（例えば、数１０回程度）漏洩し、製品としての許容度が満足できなくなる製品寿命の時刻ｔ３の際（例えば、１０年程度）までに、その製品の世代のセキュリティの漏洩度を十分に満たすように設計すれば良い。
【０２１４】
更に、暴露されたXY Sequenceによりクラックされたホスト装置（デバイス）の同定も可能である。一方、クラックされたデバイスが判明した場合、鍵情報（Key Sequence Information）８０から同デバイスが有するデバイス鍵で暗号化されたデータレコードを含めないことで、クラックされたデバイスの無効化が可能となり、新規に製造されたＮＡＮＤ型フラッシュメモリ１０のXY Matrixの秘匿性は担保できる。このように、秘密が露呈したデータレコードを含めないことで、次世代への秘密漏洩を防止でき、世代間の秘匿性を向上できる点で有利である。
【０２１５】
このように、第８実施形態によれば、中間者攻撃に対する耐性向上、デバイス毎に導出できるXY Sequenceを個別化することによるXY値露見時の影響低減、クラックされたホストデバイスの同定、クラックされたホストデバイス鍵の無効化などの点で有利である。
【０２１６】
［第９実施形態］  
次に、図２３至図２７を用い、第９実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。
【０２１７】
＜構成例（メモリシステム）＞  
まず、図２３を用い、第９実施形態に係るメモリシステムの構成例について説明する。第９実施形態は、上記第７実施形態と同様に、XYsub８２Ｂ及びXYsub E８１Ｂを用いる点で、第８実施形態と相違する。
【０２１８】
図示するように、ＮＡＮＤ型フラッシュメモリ１０は、第８実施形態に対して、更にXYsub８２Ｂ及びXYsub E８１Ｂを保持する点で相違する。ここで、XYsub８２Ｂ及びXYsub E８１Ｂ等は各々一つの場合、複数の場合があり、更に複数の場合も列構造を採る場合と行列構造を採る場合が可能である。
【０２１９】
Matrix データ（１）（単一の場合）  
次に、図２４を用い、XYsub８２Ｂ及びXYsub E８１Ｂ等が、単一の場合について説明する。
【０２２０】
（ａ）に示すように、単一のXYsub８２Ｂが、ＮＡＮＤ型フラッシュメモリ１０内部処理用に秘匿領域１１−２に記録されている。
【０２２１】
（ｂ）に示すように、Containerには、同XYsubをスロット鍵（Ks_sub）によって暗号化した単一のデータXYsub E（Enc(Ks_sub, XYsub)）８１Ｂが記録されている。
【０２２２】
（ｃ）に示すように、鍵情報（Key Sequence Information）８０には同スロット鍵（Ks_sub）をデバイス鍵によって暗号化した単一のデータ（Encrypted Sub Slot Key）８０Ｂが含まれる。
【０２２３】
Matrix データ（２）（列構造の場合）  
次に、図２５を用い、列構造を採る複数のXYsubを用いる場合について説明する。
【０２２４】
（ａ）に示すように、本例において、列構造をとる複数のXYsub （XYsub(1), XYsub(2), ,,, XYsub(n)）８２Ｂが、ＮＡＮＤ型フラッシュメモリ１０の内部処理用に秘匿領域１１−２に記録されている。
【０２２５】
（ｂ）に示すように、Container１１−１には、各XYsubをスロット鍵（Ks_sub）によって暗号化した複数列のデータXYsubE（Enc(Ks_sub(1), XYsub(1)),,, Enc(Ks_sub(n), XYsub(n))）８１Ｂが記録されている。
【０２２６】
（ｃ）に示すように、鍵情報（Key Sequence Information）８０には、同スロット鍵（Ks_sub）をデバイス鍵によって暗号化した列構造のデータ（Encrypted Sub Slot Key 1,,, Encrypted Sub Slot Key n）８０Ｂが含まれる。
【０２２７】
Matrix データ（３）（行列構造の場合）  
次に、図２６を用い、行列構造を採る複数のXYsubを用いる場合について説明する。
【０２２８】
（ａ）に示すように、第８実施形態において説明したXYに付随する形で、XYsub Matrix８２Ｂが、ＮＡＮＤ型フラッシュメモリ１０内部処理用の秘匿領域１１−２に記録されている。
【０２２９】
（ｂ）に示すように、Container１１−１には、各XYsub(i,j)を、XY(i,j)の暗号化に用いたスロット鍵Ks(i,j)によって暗号化した行列構造のデータXYsubE Array（Enc(Ks(1,1), XYsub(1,1)),,, Enc(Ks (n,m), XYsub(n,m))）８１Ｂが記録されている。
【０２３０】
（ｃ）に示すように、鍵情報（Key Sequence Information）８０は既にXY(i,j)の暗号化に用いたスロット鍵Ks(i,j)を含んでいるため、XYsub専用のスロット鍵を新たに含める必要はない。
【０２３１】
このように、XYsub８２Ｂ及びXYsub E８１Ｂ等は、必要に応じて、各々一つの場合、や複数の場合の行列構造等を適用することができる。
【０２３２】
＜認証フロー＞  
次に、図２７に沿って、第９実施形態に係る認証動作について説明する。  
第９実施形態でも、ステップＳ３１〜Ｓ３３の際、同様にして、ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０内に記録されている鍵情報（Key Sequence Information）８０を読み出し、自身のデバイスインデックス（Device Index）に対応するデータレコードを選択後、当該レコードをデバイス鍵（Device Key）によって復号して、スロット鍵（Slot Keys）とスロットインデックス（Slot Indexes）を得る。
【０２３３】
続いて、ステップＳ１３の際、ホスト装置２０はＮＡＮＤ型フラッシュメモリ１０からXYE Matrixを読み出し、前記スロットインデックス（Slot Index）に相当するXYE要素、およびXYsubE要素を対応するスロット鍵（Slot Key）で復号し、XY SequenceおよびXYsubを得る。
【０２３４】
続いて、ステップＳ１４の際、ホスト装置２０は、XY MatrixのIndex番号（i）と乱数（Nonce_H）とともに、ＮＡＮＤ型フラッシュメモリ１０に認証要求を送出する。
【０２３５】
続いて、ステップＳ１５〜Ｓ１７の際、ＮＡＮＤ型フラッシュメモリ１０内は、秘匿領域１１−２に記録されているXY Matrixesを用いて、前記XY MatrixのIndex番号に相当するXYおよびXYsubを用いて、複数のzを計算し、乱数（Nonce_N）とともにホスト装置２０に送信する。
【０２３６】
以後、同様に、ホスト装置２０は、自身が保持する前記スロットインデックスシーケンス（Slot Index Sequence）に従って読みだしたデータをフィルタリングすることで単一のzを得て、認証を行う。
【０２３７】
＜作用効果＞  
第９実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、上記第８実施形態と同様の効果を得ることができる。更に少なくとも、記録時間の短縮化できる点で有利である。
【０２３８】
［第１０実施形態］  
次に、図２８乃至図３１を用い、第１０実施形態に係る認証・被認証コンポーネントおよびその認証方法について説明する。
【０２３９】
ここで、上記実施形態においては、ホスト装置２０が、ＮＡＮＤ型フラッシュメモリ１０の秘密情報を得るためのデバイス鍵２３を有することで、ＮＡＮＤ型フラッシュメモリ１０の暗号化された秘密情報XYEを読み出し、秘密情報XYをＮＡＮＤ型フラッシュメモリ１０とホスト装置２０との間で共有する。
【０２４０】
これに対して、この第１０実施形態では、ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０からは一切の秘密情報を受領せず、かつホスト装置２０が有する秘密情報であるDevice Unique XY（９０Ｈ）は、ホスト装置２０毎に異なるものである。これにより、ＮＡＮＤ型フラッシュメモリ１０が有する秘密情報が、ホスト装置２０から流出することはない。さらに、ホスト装置２０から秘密が流出したとしても、その影響はDevice Unique XY（９０Ｈ）の流出にとどまり、異なるDevice Unique XYを有する他のホストデバイスにおいては影響を与えるものではない。これは、後述するように、Device Unique XY（９０Ｈ）が、XY（９０Ｍ）とDevice ID（８９Ｈ）との一方向性関数処理部９１による結果であることに起因する。すなわち、Device Unique XY（９０Ｈ）およびDevice ID（８９Ｈ）が、たとえ露見したとしても、XY（９０Ｍ）を導出するための逆方向関数処理ができないためである。
【０２４１】
＜構成例（メモリシステム）＞  
まず、図２８を用い、第１０実施形態に係るメモリシステムの構成例について説明する。第１０実施形態では、以下の点で、上記実施形態と相違する。
【０２４２】
まず、ＮＡＮＤ型フラッシュメモリ１０は、一方向性関数処理部９１、および非線形処理部９２Ｍを備える。また、ロム領域１１−１には、ＮＡＮＤ型フラッシュメモリ１０の固有IDであるMemory ID（８９Ｍ）が記録される。秘匿領域１１−２には、XY値（９０Ｍ）が記録される点で、上記実施形態と相違する。
【０２４３】
ホスト装置２０は、このホスト装置２０の固有IDであるDevice ID（８９Ｈ）、ホスト装置２０の固有のXY値であるDevice Unique XY（９０Ｈ）、エラー訂正部９５、および非線形処理部９２Ｈを備える点で、上記実施形態と相違する。
【０２４４】
上記構成において、ホスト装置２０は、Device ID（８９Ｈ）を読みだし、ＮＡＮＤ型フラッシュメモリ１０に対して読み出したDevice ID（８９Ｈ）を送出する。
【０２４５】
ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０から読み出されたMemory ID（ECC or recorded multiple times）（８９Ｍ）に対して、エラー訂正部９５にて、エラー訂正処理を行う。
【０２４６】
続いて、ホスト装置２０は、自身が有するDevice Unique XY（９０Ｈ）と読み出したエラー訂正後のMemory ID（８９Ｍ）とを、非線形処理部９２Ｈにて、非線形処理することで、固有値Unique XY for Memory and Deviceを得る。
【０２４７】
一方、ＮＡＮＤ型フラッシュメモリ１０は、ホスト装置２０から受領したDevice ID（８９Ｈ）とキャッシュ１２Ｂから読み出した自身のXY値（９０Ｍ）とを、一方向性関数処理部９１にて、一方向性関数処理する。そのことで、ホスト装置２０が有するDevice Unique XYと同じ値を得る。その後、キャッシュ１２Ａから読み出した自身のMemory ID（８９Ｍ）と前記Device Unique XYとを、非線形処理部９２Ｍで非線形処理することで、ホスト装置と同様の固有値Unique XY for Memory and Deviceを得ることができる。
【０２４８】
その後、ＮＡＮＤ型フラッシュメモリ１０とホスト装置２０との両者は、Unique XY for Memory and Deviceを用いて、同様の認証処理を行う。
【０２４９】
＜一方向性関数処理部（One way function）９１について＞  
次に、図２９を用い、一方向性関数処理部（One way function）９１について説明する。
【０２５０】
図示するように、本例に係る一方向性関数処理部９１は、Crypto Box ９６および排他的論理和回路Ｃ８を備える。
【０２５１】
Crypto Box ９６は、Inputに対してKeyを用いて解読処理を行う。排他的論理和回路Ｃ８は、前記InputとCrypto Box ９６の出力との排他的論理和処理を行い、Outputを出力する。
【０２５２】
ここでは、Inputが一方向性関数処理部９１の対象のデータであり、Outputが処理結果である。Inputとして前述のXY値を、Keyとして前述のDevice ID値を用いてもよいし、Inputとして前述のDevice ID値を、Keyとして前述のXY値を用いてもよい。
【０２５３】
＜Crypto Box ９６について＞  
次に、図３０を用い、Crypto Box ９６について説明する。  
図示するように、本例のCrypto Box ９６は、複数の排他的論理和回路Ｃ９−０〜Ｃ９−ｎ、複数のS-Box and Permutation９７−１〜９７−ｎ、および複数のUpdate処理部９８−１〜９８−ｎを備える。
【０２５４】
複数の排他的論理和回路Ｃ９−０〜Ｃ９−ｎは、Input及びKey、またはUpdate処理部９８−１〜９８−ｎにより更新されたKeyおよび複数のS-Box and Permutation９７−１〜９７−ｎを入力として、その排他的論理和値を出力する。
【０２５５】
S-Box and Permutation９７−１〜９７−ｎは、前段の排他的論理和回路Ｃ９−０〜Ｃ９−ｎの出力に対して、非線形の処理を行う。ここで、S-Boxとは、データ置き換えテーブルによる入力値の変換処理であり、Permutationとは、置き換え処理後の値についてビットの並び替えである。
【０２５６】
Update処理部９８−１〜９８−ｎは、前段のKeyを更新する。また、Updateとは、置き換え処理、並び替え処理した結果を別途生成もしくは外部入力された更新値と更新演算を行うことに相当し、更新値としてはカウンタによって生成された値を、更新演算としては排他的論理和処理を用いてもよい。
【０２５７】
このように、本例に係るCrypt box９６における処理は並列に行われ、各々の１処理を１ラウンドと称する。この場合、各ラウンド毎の出力値は、次ラウンドの入力値として用いられる。そして、非線形の前記処理を複数ラウンド処理された結果が、Outputとして出力される。そのため、非線形に係る１ラウンドであっても複雑系の処理であるため、これらを複数ラウンドしかも更新して行うことで、一方向性関数処理部９１として求められる一方向性関数処理を実行することが可能である。
【０２５８】
尚、前述の置き換え処理、並び替え処理はいずれも非線形処理であるため、これら置き換え処理、並び替え処理のいずれか一方、もしくはその組み合わせを前述の非線形処理部の構成要素として用いてもよい。
【０２５９】
＜認証フロー＞  
次に、図３１に沿って、第１０実施形態に係る認証動作について説明する。  
ステップＳ４１の際、ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０内に記録されているMemory ID（８９Ｍ）の読み出しを要求する。
【０２６０】
続いて、ステップＳ４２の際、ＮＡＮＤ型フラッシュメモリ１０は、ホストの要求に応じて、ロム領域１１−１内に記録されるMemory ID（８９Ｍ）を読み出し、ホスト装置２０に送信する。
【０２６１】
続いて、ステップＳ４３の際、ホスト装置２０は、取得したMemory ID（８９Ｍ）と自身が有するDevice Unique ID（９０Ｈ）とに対して非線形処理を行い、Unique XY for Memory and Deviceを得る。
【０２６２】
続いて、ステップＳ４４の際、ホスト装置２０は、ホスト乱数（Nonce_H）およびDevice ID（８９Ｈ）とともに認証要求をＮＡＮＤ型フラッシュメモリ１０に送出する。
【０２６３】
続いて、ステップＳ４５の際、ＮＡＮＤ型フラッシュメモリ１０は、送信されたDevice ID（８９Ｈ）、および自身の有するXY（９０Ｍ）、Memory ID（８９Ｍ）を用いて、上記の処理により、Unique XY for Memory and Deviceを得る。
【０２６４】
その後、上記と同様の認証処理を行う。
【０２６５】
＜作用効果＞  
第１０実施形態に係る認証・被認証コンポーネントおよびその認証方法によれば、上記（Ｉ）〜（ＩＶ）を改善でき、更に下記の効果が得られる。
【０２６６】
ここで、上記実施形態においては、ホスト装置２０が、ＮＡＮＤ型フラッシュメモリ１０の秘密情報を得るためのデバイス鍵２３を有することで、ＮＡＮＤ型フラッシュメモリ１０の暗号化された秘密情報XYEを読み出し、秘密情報XYをＮＡＮＤ型フラッシュメモリ１０とホスト装置２０との間で共有する。
【０２６７】
これに対して、この第１０実施形態では、ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０からは一切の秘密情報を受領せず、かつホスト装置２０が有する秘密情報であるDevice Unique XY（９０Ｈ）は、ホスト装置２０毎に異なるものである。これにより、ＮＡＮＤ型フラッシュメモリ１０が有する秘密情報が、ホスト装置２０から流出することはない。さらに、ホスト装置２０から秘密が流出したとしても、その影響はDevice Unique XY（９０Ｈ）の流出にとどまり、異なるDevice Unique XYを有する他のホストデバイスにおいては影響を与えるものではない。これは、上記のように、Device Unique XY（９０Ｈ）が、XY（９０Ｍ）とDevice ID（８９Ｈ）との一方向性関数処理部９１による結果であることに起因する。すなわち、Device Unique XY（９０Ｈ）およびDevice ID（８９Ｈ）がたとえ露見したとしても、一方向性関数処理であるために、XYを導出するための逆方向関数処理ができないためである。
【０２６８】
また、本例では、非線形処理部９２Ｍ、９２Ｈにおいて、Unique XY for Memory and Deviceを得るために、Memory ID（８９Ｍ）とDevice Unique XY（８９Ｈ）とに対して、非線形処理を行う。そのため、可換則が成立する恐れが少ない点でも有利である。例えば、認証方法として内積演算を採用した場合、内積演算は線形処理であることから、仮にUnique XY for Memory and Deviceを得るために、Memory IDとDevice Unique XYに対して線形処理を行った場合は、可換則が成立する恐れがある。この場合、Memory IDの偽装がなされる恐れがあることから、少なくともいずれか一方に非線形処理を設けるのが望ましい。本例では、ホスト装置２０およびＮＡＮＤ型フラッシュメモリ１０のいずれも非線形処理部９２Ｍ、９２Ｈにおいて、非線形処理をおこなっているため、可換則が成立することを防止している。
【０２６９】
さらに、認証に用いる情報が、Unique XY for Memory and Deviceと、認証するＮＡＮＤ型フラッシュメモリ１０とホスト装置２０の組み合わせによって異なることから、中間者攻撃の脅威を低減することができる点でも有利である。これは、仮に中間者攻撃によってUnique XY for Memory and Deviceが露見した場合でも、同値を利用できる環境は非常に限られている。すなわち、当該ホスト装置２０に対してのみ認証を偽装することができるためである。
【０２７０】
そのため、第１０実施形態によれば、中間者攻撃に対する耐性向上、デバイス毎に対して配布する秘密情報をデバイス固有とすることによる秘密情報露見時の影響低減、クラックされたホストデバイスの同定、クラックされたホストデバイス鍵の無効化などの有利な効果を有することが可能である。
【０２７１】
［第１１実施形態（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』）３４、ＮＡＮＤインターフェース３５を含んでいる。
【０３０５】
ＳＤインターフェース３１は、ホスト装置２０とコントローラ１９との間のインターフェース処理を行うのに必要なハードウェア、ソフトウェアからなり、ＳＤインターフェース１３と同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウェア上の構成（ピンの配置、数等）も含む。メモリカード（コントローラ２２）は、ＳＤインターフェース３１を介してとホスト１と通信を行う。ＳＤインターフェース３１は、レジスタ３６を含んでいる。
【０３０６】
ＭＰＵ３２は、メモリカード２全体の動作を司る。ＭＰＵ３２は、例えば、メモリカード２が電源供給を受けた際に、ＲＯＭ３３内に格納されているファームウェア（制御プログラム）をＲＡＭ３４上に読み出して所定の処理を実行する。ＭＰＵ３２は、制御プログラムに従って各種のテーブルをＲＡＭ３４上で作成したり、ホスト１から受けたコマンドに従ってメモリ２１に対する所定の処理を実行したりする。
【０３０７】
ＲＯＭ３３は、ＭＰＵ３２により制御される制御プログラムなどを格納する。ＲＡＭ３４は、ＭＰＵ３２の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、ファイルシステム１２によってデータに割り当てられた論理アドレスを有するデータを実際に記憶しているページの物理アドレスの変換テーブル（論物テーブル）が含まれる。ＮＡＮＤインターフェース３５は、コントローラ２２とメモリ２１とのインターフェース処理を行う。
【０３０８】
ＮＡＮＤ型フラッシュメモリ１０内の記憶領域は、保存されるデータの種類に応じて、例えばシステムデータ領域、機密データ領域、保護データ領域、ユーザデータ領域等を含んでいる。システムデータ領域は、コントローラ１９が、その動作に必要なデータを保存するためにメモリ１０内で確保しておく領域である。機密データ領域は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト装置２０からアクセスできない。保護データ領域は、重要なデータ、セキュアなデータを格納する。ユーザデータ領域は、ホスト装置２０が自由にアクセスおよび使用することが可能で、例えばＡＶコンテンツファイルや画像データ等のユーザデータを格納する。なお、コントローラ１９は、ユーザデータ領域の一部を確保し、自身の動作に必要な制御データ（論物テーブル等）を保存する。
【０３０９】
［第１６実施形態］  
次に、上記ＮＡＮＤ型フラッシュメモリ１０の具体的構成例として、第１６実施形態として説明する。
【０３１０】
＜全体構成例＞  
上記ＮＡＮＤ型フラッシュメモリ１０の具体的な全体構成例は、図４１のように示される。
【０３１１】
図示するように、本例に係るＮＡＮＤ型フラッシュメモリは、メモリセルアレイ１１、乱数発生回路１６、制御回路１９、認証回路５１、ビット線制御回路５２、カラムデコーダ５３、データ入出力バッファ５４、データ入出力端子５５、ワード線駆動回路５６、制御信号入力端子５８、電源発生回路５９を備える。
【０３１２】
メモリセルアレイ１１は、複数のブロック（ＢＬＯＣＫ１〜ＢＬＯＣＫｎ）により構成される。複数のブロック（ＢＬＯＣＫ１〜ＢＬＯＣＫｎ）のそれぞれは、ワード線およびビット線の交差位置に配置される複数のメモリセルを備える。例えば、ＢＬＯＣＫ１は、上記ロム領域１１−１である。例えば、ＢＬＯＣＫ２は、上記秘匿領域１１−２である。その他のブロックは、ホスト装置２０から利用可能な一般領域（User area）１１−３等である。
【０３１３】
ロム領域１１−１は例えばＯＴＰ（One Time Program）ブロックであり、１回の書き込みのみ許容される。書き込み後は電気フューズ、レーザフューズ、ＲＯＭフューズ等の手段を用いてブロックデコーダを制御し消去動作を禁止する。秘匿領域１１−２は、例えば外部アドレスのデコードでは選択できない状態とし、ＮＡＮＤ型フラッシュメモリ内部の制御回路１９のみが読み出し可能な領域とする。
【０３１４】
認証回路５１は、例えば、上記圧縮演算回路１３、バイアスドＲＮＧ１４、出力部１５、乱数生成回路１６、順序交換回路１８、ビット毎加算回路Ｃ１等を備え、制御回路１９により制御される。例えば、乱数生成回路１６により発生された乱数は、制御回路１９の制御に従い、秘密鍵や認証処理におけるチャレンジデータの生成などに用いられ、また必要に応じて、データ入出力端子５５を介して外部のホスト装置２０に送信される。
【０３１５】
ビット線制御回路５２は、ビット線を介してメモリセルアレイ１１中のメモリセルのデータを読み出し、ビット線を介してメモリセルアレイ１１中のメモリセルの状態を検出する。また、ビット線制御回路５２は、ビット線を介してメモリセルアレイ１１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行う。
【０３１６】
ビット線制御回路５２内には、図示しない上記ページバッファ等のデータ記憶回路１２等が設けられ、このデータ記憶回路は、カラムデコーダ５３によって選択される。データ記憶回路に読み出されたメモリセルのデータは、データ入出力バッファ５４を介してデータ入出力端子５５から外部へ出力される。
【０３１７】
データ入出力端子５５は、例えば、外部のホスト装置等に接続される。データ入出力端子５５は、例えば８ビット、または１６ビットのバス幅を有している。ＮＡＮＤ型フラッシュメモリはトグルモードインターフェース（toggle mode interface）などの高速インターフェース規格をサポートしてもよい。トグルモードインターフェースでは、例えば、データストローブ信号（DQS）の立ち上がり、立ち下がり両エッジに同期してデータ入出力端子５５を介したデータ転送が行われる。
【０３１８】
ホスト装置２０は、例えば、マイクロコンピュータ等であって、データ入出力端子５５から出力されたデータを受ける。ホスト装置２０は、ＮＡＮＤ型フラッシュメモリ１０の動作を制御する各種コマンドＣＭＤ（書き込みコマンド、読み出しコマンド、消去コマンド、ステータスリードコマンド等）、アドレスＡＤＤ、およびデータＤＴを出力する。ホスト装置からデータ入出力端子５５に入力された書き込みデータＤＴは、データ入出力バッファ５４を介して、カラムデコーダ５３によって選択された上記データ記憶回路（図示せず）に供給される。一方、コマンドＣＭＤおよびアドレスＡＤＤは、制御回路１９に供給される。
【０３１９】
ワード線駆動回路５６は、制御回路１９の制御に従い、メモリセルアレイ１１中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
【０３２０】
電圧発生回路５９は、制御回路１９の制御に従い、図示中の接続された上記構成回路の動作に必要な電圧を供給する。例えば、電圧発生回路５９は、ホスト装置から供給される外部電圧を昇圧して、読み出し、書き込みあるいは消去時にワード線に印加される電圧を生成する。
【０３２１】
制御回路（Controller）１９は、ＮＡＮＤ型フラッシュメモリ１０の全体の動作を制御するために、接続される各回路に必要な制御信号および制御電圧を与える。制御回路１９は、メモリセルアレイ１１、認証回路５１、ビット線制御回路５２、カラムデコーダ５３、データ入出力バッファ５４、ワード線駆動回路５６、電圧発生回路５９に接続される。接続された上記構成回路は、制御回路１９によって制御される。
【０３２２】
制御回路１９は、制御信号入力端子５８に接続され、ホスト装置から制御信号入力端子５８を介して入力されるＷＥ（ライト・イネーブル）信号、ＲＥ（リード・イネーブル）信号、ＡＬＥ（アドレス・ラッチ・イネーブル）信号、ＣＬＥ（コマンド・ラッチ・イネーブル）信号等の制御信号の組み合わせによって制御される。
【０３２３】
ここで、機能的に表現すれば、上記ワード線駆動回路５６、ビット線制御回路５２、カラムデコーダ５３、制御回路１９は、データ書き込み回路、データ読み出し回路、およびデータ消去回路を構成する。ホスト装置は、ＮＡＮＤ型フラッシュメモリが書き込み、読み出し、消去などの内部動作を実行中であるか否かを、図示せぬＲＹ／ＢＹ（レディー／ビジー）信号出力端子をモニタすることで検知する。制御回路１９は、ＲＹ／ＢＹ信号出力端子を介して、ＲＹ／ＢＹ信号を出力する。
【０３２４】
＜ブロック（ＢＬＯＣＫ）の構成例＞  
次に、図４２を用い、メモリセルアレイを構成するブロック（ＢＬＯＣＫ）の構成例について説明する。ここでは、図４１中のＢＬＯＣＫ１を一例に挙げて説明する。ここで、このブロックＢＬＯＣＫ１中のメモリセルは、一括してデータ消去されるため、ブロックはデータ消去単位である。
【０３２５】
ブロックＢＬＯＣＫ１は、ワード線方向（ＷＬ方向）に配置される複数のメモリセルユニットＭＵから構成される。メモリセルユニットＭＵは、ＷＬ方向と交差するビット線方向（ＢＬ方向）に配置され、電流経路が直列接続される８個のメモリセルＭＣ０〜ＭＣ７からなるＮＡＮＤストリング（メモリセルストリング）と、ＮＡＮＤストリングの電流経路の一端に接続されるソース側の選択トランジスタＳ１と、ＮＡＮＤストリングの電流経路の他端に接続されるドレイン側の選択トランジスタＳ２とから構成される。
【０３２６】
尚、本例では、メモリセルユニットＭＵは、８個のメモリセルＭＣ０〜ＭＣ７から構成されるが、２つ以上のメモリセル、例えば、５６個、３２個等から構成されていればよく、８個に限定されるというものではない。
【０３２７】
ソース側の選択トランジスタＳ１の電流経路の他端はソース線ＳＬに接続される。ドレイン側の選択トランジスタＳ２の電流経路の他端は、各メモリセルユニットＭＵに対応してメモリセルユニットＭＵの上方に設けられ、ＢＬ方向に延出するビット線ＢＬｍ−１に接続される。
【０３２８】
ワード線ＷＬ０〜ＷＬ７は、ＷＬ方向に延び、ＷＬ方向の複数のメモリセルの制御ゲート電極に共通に接続される。選択ゲート線ＳＧＳは、ＷＬ方向に延び、ＷＬ方向の複数の選択トランジスタＳ１に共通に接続される。選択ゲート線ＳＧＤも、ＷＬ方向に延び、ＷＬ方向の複数の選択トランジスタＳ２に共通に接続される。
【０３２９】
また、ワード線ＷＬ０〜ＷＬ７ごとにページ（ＰＡＧＥ）が存在する。例えば、図中の破線で囲って示すように、ワード線ＷＬ７には、ページ７（ＰＡＧＥ７）が存在する。このページ（ＰＡＧＥ）ごとに、後述するデータ読み出し動作、データ書き込み動作が行われるため、ページ（ＰＡＧＥ）はデータ読み出し単位であり、データ書き込み単位である。
【０３３０】
＜２値メモリセル（ＳＬＣ：Single Level Cell）の閾値分布＞  
次に、図４３を用い、２値メモリセル（ＳＬＣ：Single Level Cell）の閾値分布について説明する。
【０３３１】
２値メモリセルの閾値分布（Vth分布）では、メモリセルにデータを記録した後において、図示するような’１’、’０’の分布を示す。ここでは、消去状態（Erase state）に’１’を割り当て、書き込み状態（Programmed state）に’０’を割り当てている。
【０３３２】
なお、データ書き込み動作およびデータ消去動作の際には、書き込み電圧または消去電圧の印加後に、各メモリセルの閾値電圧を検査し、目標レベルに到達しないセルについては再度データ書き込み、またはデータ消去動作を継続的に制御して行うベリファイ（Verify）動作を行う。そのため、’１’、’０’分布には、上記ベリファイ動作が完了した否かを判定するためのベリファイレベル（Verify level）が設けられる。
【０３３３】
ここで、制御の例としては、制御回路（Controller）１９により、データ書き込み動作において、制御ゲートに印加する電圧を増す、電圧印加時間を増す、電圧印加回数を増す等を復号的に行うことで、各メモリセルの閾値電圧を目標レベルに到達させる。また、データ消去においても、同様に、半導体基板中のｐウェル（Pwell）に印加する電圧を増す、電圧印加時間を増す、電圧印加回数を増すなどを復号的に行うことで、各メモリセルの閾値電圧を目標レベルに到達させる。このようにして、書き込まれたデータは、図示するように所定の’１’、’０’の分布幅を持つ。
【０３３４】
データの読出しにおいては、’０’分布と’１’分布との中間に読み出し電圧（Threshold of read level）を設定することで、各メモリセルがいずれのデータを保持しているかを判別する。具体的には、制御ゲートＣＧに読み出し電圧を印加した際に、メモリセルＭＣがオン状態となれば’１’と判別し、メモリセルＭＣがオフ状態のままであれば’０’と判別する。
【０３３５】
なお、上記ベリファイ動作を行った場合のほうが、行わない場合に比べて、閾値分布が狭くなる。これは、個々のメモリセルによって１回の書き込み電圧の印加で注入される電子の量にばらつきがあり、早く書き込まれるメモリセルと、遅く書き込まれるメモリセルとが存在するためである。そのため、１回の書き込み電圧の印加毎に各メモリセルの閾値電圧を検査し、ベリファイレベルに到達したメモリセルについては以降の電子注入を禁止（抑制）し、ベリファイレベルに到達しないメモリセルについては再度書き込み電圧を印加して電子注入を継続する。結果として、ベリファイ動作を行わない場合と比較して、閾値分布は狭くなる。
【０３３６】
＜多値メモリセル（ＭＬＣ：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を用いる。
【０３４２】
本発明のいくつか実施形態を説明したが、これら実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０３４３】
１０…ＮＡＮＤ型フラッシュメモリ（被認証コンポーネント）、１９…コントローラ、２０…ホストデバイス（認証コンポーネント）。
【図１】
2013005293.tif 000003
【図２】
2013005293.tif 000004
【図３】
2013005293.tif 000005
【図４】
2013005293.tif 000006
【図５】
2013005293.tif 000007
【図６】
2013005293.tif 000008
【図７】
2013005293.tif 000009
【図８】
2013005293.tif 000010
【図９】
2013005293.tif 000011
【図１０】
2013005293.tif 000012
【図１１】
2013005293.tif 000013
【図１２】
2013005293.tif 000014
【図１３】
2013005293.tif 000015
【図１４】
2013005293.tif 000016
【図１５】
2013005293.tif 000017
【図１６】
2013005293.tif 000018
【図１７】
2013005293.tif 000019
【図１８】
2013005293.tif 000020
【図１９】
2013005293.tif 000021
【図２０】
2013005293.tif 000022
【図２１】
2013005293.tif 000023
【図２２Ａ】
2013005293.tif 000024
【図２２Ｂ】
2013005293.tif 000025
【図２３】
2013005293.tif 000026
【図２４】
2013005293.tif 000027
【図２５】
2013005293.tif 000028
【図２６】
2013005293.tif 000029
【図２７】
2013005293.tif 000030
【図２８】
2013005293.tif 000031
【図２９】
2013005293.tif 000032
【図３０】
2013005293.tif 000033
【図３１】
2013005293.tif 000034
【図３２】
2013005293.tif 000035
【図３３】
2013005293.tif 000036
【図３４】
2013005293.tif 000037
【図３５】
2013005293.tif 000038
【図３６】
2013005293.tif 000039
【図３７】
2013005293.tif 000040
【図３８】
2013005293.tif 000041
【図３９】
2013005293.tif 000042
【図４０】
2013005293.tif 000043
【図４１】
2013005293.tif 000044
【図４２】
2013005293.tif 000045
【図４３】
2013005293.tif 000046
【図４４】
2013005293.tif 000047