以下、実施形態について図面を参照して説明する。この説明においては、認証装置、被認証装置、およびその認証方法として、メモリシステムを一例に挙げるが、これに限られることはない。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
[第1の実施形態]
第1の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。
<1.構成例(メモリシステム)>
まず、図1を用い、第1の実施形態に係るメモリシステムの構成例について説明する。
図示するように、第1の実施形態に係るメモリシステムは、被認証装置であるNAND型フラッシュメモリ10、認証装置であるホスト装置20、および両者を仲介するコントローラ19を備える。ホスト装置20は、コントローラ19により、NAND型フラッシュメモリ10にアクセスする。
ここで、NAND型フラッシュメモリ10等の半導体製品の製造工程について、簡単に説明する。半導体製品の製造工程は、主に基盤ウエハー上に回路を形成する前工程と、前期ウエハーを個片に切り分けた後、配線や樹脂パッケージ封入などを行う後工程に分けられる。ここで、コントローラ19は、前工程においてNAND型フラッシュメモリ10内に包含されるよう構成される場合、前工程においては包含されないが後工程において同一パッケージに包含されるように構成される場合、NAND型フラッシュメモリ10とは異なるチップの形態をとる場合、など様々な場合がある。図1を含め、以下では、コントローラ19は、NAND型フラッシュメモリ10とは異なるチップの形態を採る場合を例にとっている。以下、特に断りのない限り、ホスト装置20とNAND型フラッシュメモリ10間のデータや命令のやり取りにおいては、多くの場合コントローラ19が仲介するものである。この場合でもコントローラ19は、前述のデータや命令の本質的内容を変えることはないため、詳細については、省略して説明する場合がある。なお、NAND型フラッシュメモリ10およびコントローラ19の構成例の詳細な説明については、後述する。
なお、ホスト装置20は、民生機器のように専用ハードウェアで構成される場合、専用ハードウェアとそれを動作させるファームウェアの組み合わせで構成される場合だけでなく、装置の機能がPC上で動作するソフトウェアプログラムで構成される場合も考えられる。
以下において、図1に示す各コンポーネント、データ処理について、以下で説明する。本例では、被認証装置であるNAND型フラッシュメモリ10に記録されているChipIDやLotIDといった識別情報を第3者から秘匿した状態で読み出すと共に、前述の被認証装置10から読み出されたデータであることを確実に確認する方法、及び同方法をNAND型フラッシュメモリ10に適用する場合の構成例を示すものである。
1−1.NAND型フラッシュメモリ
次に、被認証装置であるNAND型フラッシュメモリ10について説明する。
本例に係るNAND型フラッシュメモリ10は、セルアレイ11、及びセルアレイ11の周辺領域に配置されるデータキャッシュ12、データ生成回路(Generate)13、16、データ結合回路(Concatenate)14、乱数生成器(RNG)15、排他的論理和回路(EXOR)17、暗号化器(Encrypt)18等を備える。
セルアレイ(Cell array)11には、図示しないビット線およびワード線の交差位置にマトリックス状に複数のメモリセルが配置される。メモリセルは、半導体基板上に順次、トンネル絶縁膜、浮遊ゲート、層間絶縁膜、及びワード線と接続される制御ゲートを各々備える。ビット線方向のメモリセルの電流経路は直列接続され、セルユニットを形成する。セルユニットは、ビット線、ソース線に接続される選択トランジスタにより選択される。ワード線方向の複数メモリセルは、データ読み出し及びデータ書き込みの単位である1ページ(Page)を形成する。また、複数のページはデータ消去の単位であるブロック(Block)を形成する。詳細については、後述する。
また、セルアレイ11は、一般領域(User area)11−1、秘匿領域(Hidden area)11−2、ROM領域(ROM area)11−3等を備える。
一般領域(User area)11−1は、データ記録及びデータ読み出しのいずれも自由に可能な領域である。一般領域11−1には、暗号化LotID束であるSELID(Set of Encrypted LotID)が記録される。その他として、一般領域11−1には、例えば、写真、ビデオ、音楽或いは電子書籍といったコンテンツデータ等が記録される。なお、本例のSELIDの構成例については、図3において後述する。
秘匿領域(Hidden area)11−2は、NAND型フラッシュメモリ10の外に対してはデータ記録だけでなく、データ読み出しも禁止される領域である(Read/Program inhibit)。本例に係る秘匿領域11−2には、上記認証においてNAND型フラッシュメモリ10が用いる秘密情報であるNKey(第1鍵情報)が記録される。後述するように、この第1鍵情報(NKey)からは、第2鍵情報(HKey)を生成する。一方、第2鍵情報(HKey)からは、第1鍵情報(NKey)を生成しないように構成される。
ROM領域11−3は、外部からのデータ記録が禁止され、データ読み出しが許可される領域である。本例に係るROM領域11−3には、識別情報であるチップID(ChipID)とロットID(LotID)とが記録される。これらのChipIDやLotIDを記録する際にはデータに誤りが生じてしまった場合でも正しい識別情報が読み出せるようにするために一般的には誤り訂正符号化された状態で記録されるが、誤り訂正符号化/復号処理については特に図示していない。ここで、チップID(ChipID)とは、NAND型フラッシュメモリ10の1チップ毎に付されるユニークなIDを言う。ロットID(LotID)とは、NAND型フラッシュメモリ10の製造工程である程度の数毎に異なって付されるIDである。例えば、LotIDは、予め決められた100万個といった数量毎に変更される場合や、1ヶ月や半年など製造時期毎に変更される場合などが考えられる。また、これらのChipIDやLotIDを外部から常に秘匿しておきたい場合などではROM領域の代わりに、前記秘匿領域に記録しても良い。
尚、上記におけるROM領域11−3、秘匿領域11−2、一般領域11−2は、物理的構成を異ならせることで実現しても良いし、物理的構成は同一であるがNAND型フラッシュメモリ10内の論理的制御で実現しても良い。ここで、論理的制御とは、領域毎にNAND型フラッシュメモリ10外からのアクセスを制御する識別子を設け、これを保持し、NAND型フラッシュメモリ10が外部から当該領域へのアクセスを受容した際に、同識別子によってアクセス制御を行う、などの方法がある。
また、セルアレイ(Cell array)11を構成する個々のメモリセルは、複数ビットを記憶するもの(MLC: Multi Level Cell)であっても良いし、1ビットを記録するもの(SLC: Single Level Cell)であってもよい。更に、ROM領域11−3及び秘匿領域11−2についてはSLCで利用する構成とし、一般領域11−1についてはMLCで利用する構成としてもよい。この時、SLC領域とMLC領域とはセルアレイの物理的構成が異なっていても良いし、MLCとして利用可能なメモリセルの一部のビットのみを使用して、擬似的なSLC領域として利用しても良い。
データキャッシュ(Data Cache)12は、セルアレイ11から読み出したデータを一時的に記憶する。
データ生成回路(Generate)13、16は、複数の入力データから予め定められた演算によって出力データを生成する回路である。データ生成回路13は、ホスト装置20から受信した情報(HCj)を前述の第1秘密情報NKeyを用いて変換することで、HKeyj(第2鍵情報)を生成する。このように、NAND型フラッシュメモリ10側では、第1鍵情報(NKey)から、第2鍵情報(HKey j)を生成することができる。
データ生成回路16は、ホスト装置20から受信した乱数RNhと当該NAND型フラッシュメモリ10自身が生成した乱数RNcを結合したデータを前記HKeyjを用いて変換することで、セッション鍵SKeyjを生成する。例えば、データ生成回路13、16は、AES(Advanced Encryption Standard)暗号化器などを用いることも可能である。
尚、データ生成回路(Generate)13、16は、複数の入力情報から新たなデータを出力する回路である。全体の回路規模を小さくするために、暗号化器18と同じ或いは暗号化器18を流用した回路で構成することも可能である。同様にデータ処理手順を分かり易くするために異なる構成要素として図示されている2つのデータ生成回路13、16は、同じ回路を繰り返し利用することが可能である。
データ結合回路(Concatenate)14は、2つの入力データ(乱数RNh、乱数RNc)を結合し、結合されたデータをデータ生成回路16に出力する。
乱数生成器(RNG: Random Number Generator)15は、認証に用いる乱数RNcを生成する。
排他的論理和回路(EXOR)17は、ROM領域11−3から読み出される2つの識別情報(ChipID, LotID)を入力として、この2つの入力データの排他的論理和を計算し、その結果を出力する。なお、前記記載の通り当該識別情報がROM領域の代わりに秘匿領域に記録されている場合には、当該排他的論理和回路の入力データである当該識別情報は秘匿領域から読み出される。
暗号化器(Encrypt)18は、入力されたデータを別途入力された鍵データで暗号化し、暗号化された入力データを出力する回路である。本実施例では、ROM領域11−3から読み出した2つの識別情報(ChipID, LotID)の排他的論理和回路17による演算した結果を、データ生成回路16によって生成された鍵データSKeyjを用いて暗号化し、暗号化識別情報Enc-ID = Enc(SKeyj、 ChipID (+) LotID)を生成する。なお、前述の通り、全体のハードウェア回路規模を小さくするために当該暗号化器18を、データ生成回路としても使用することも可能である。ここで、(+)は、排他的論理和を表す。
また、ここでは図示しないが、例えば、コントローラ19を介してホスト装置20に送付されるデータを出力する出力部なども実際には構成要素として配置される。
なお、上記セルアレイ11以外のデータキャッシュ12等の構成要素は、例えば、メモリコントローラ(Controller)19に配置することも同様に可能である。
1−2.ホスト装置
次に、本例に係るホスト装置(Host)20について説明する。
ホスト装置20は、メモリ(Memory)23、乱数生成部(RNG)25、データ結合部(Concatenate)26、排他的論理和部(EXOR)24、29、データ選択部(Select)21、データ生成部(Generate)27、及び復号部(Decrypt)22、28等を備える。
メモリ(Memory)23は、本実施形態の認証処理を実行するために必要となる秘密情報HKeyj及びホスト定数HCjを記憶する。特に秘密情報HKeyjは外部に露呈しないような手段を用いて記憶しておく必要がある。そのため、例えば、専用ハードウェアを用いて構成される民生機器のようなホスト装置の場合には、完全に外部から遮断された専用メモリに記録する、或いは図示しないがホスト装置独自に用意した暗号処理を用いて暗号化された上でメモリに記録するなどの手段を用いることが望ましい。例えば、PC上で動作するプログラムソフトウェアの場合には、耐タンパーソフトウェア技術を用いてプログラム自体を保護しておくことで当該秘密情報HKeyjも厳重に保護することが可能である。
乱数生成部(RNG: Random Number Generator)25は、認証に用いるRNhを生成する。
データ結合部(Concatenate)26は、乱数生成部15、25から生成される2つの入力乱数データ(RNh、RNc)結合し、結合されたデータを出力する。
排他的論理和部(EXOR)24、29は、入力された2つのデータの排他的論理和を計算し、その結果を出力する。
データ選択部(Select)21は、NAND型フラッシュメモリ10から読み出した暗号化LotID束(SELID)から当該ホスト装置20が秘匿している秘密情報HKeyjを用いて復号可能な暗号化LotIDデータを、秘密情報HKeyjのインデックス情報jを用いて、選択する。例えば、前記秘密情報HKeyjは、民生機器であれば内部の専用メモリにメーカ独自の方法で暗号化した上で記録されていたり、ソフトウェアプログラムであればタンパーレジスタントソフトウェア(TRS)技術によって不正な解析から保護できる状態で保持していたり、或いはセキュリティモジュールを内蔵している場合には当該セキュリティモジュールの機能を利用して秘匿するなどの対策を採った上で秘匿される。
データ生成部(Generate)27は、複数の入力データから予め定められた演算によって出力データを生成する演算部であり、NAND型フラッシュメモリに具備されたデータ生成回路16と同じ演算処理を行う。本例のデータ生成部27は、当該ホスト装置20自身が生成した乱数RNhとNAND型フラッシュメモリ10から受信した乱数RNcを結合したデータを、当該ホスト装置20が秘匿している秘密情報HKeyjを用いて変換することで、セッション鍵SKeyjを生成する。尚、データ生成部27は、AES暗号化演算などを用いることも可能である。
復号部(Decrypt)22、28は、入力されたデータを別途入力された鍵データで復号し、復号された入力データを出力する。本実施例では、復号部22は、ホスト装置が秘匿している秘密情報HKeyjと必要に応じて当該秘密情報HKeyjを識別するためのインデックス情報jを排他的論理和部で演算した結果を鍵情報として前記データ選択部21において選択された暗号化LotIDデータを復号し、LotIDを得るために用いられる。
復号部28は、NAND型フラッシュメモリ10から受信した暗号化識別情報Enc-IDを前記データ生成部27から出力されたSKeyjを用いて復号し、排他的論理和29に出力する。これらの復号処理の結果、ホスト装置20は、ChipIDとLotIDの2つの識別情報のデータを得ることが可能である。
上記のように、ホスト装置20は、第1段目の復号部22によりLotIDを得る。さらに、得られたLotIDと第2段目の復号部28の出力データとについて、排他的論理和29による演算結果によりChipIDも得ることができる。さらに、前記暗号化識別情報Enc-IDが共有した鍵データSKeyjを用いて暗号化されることで、ホスト装置20が認証したNAND型フラッシュメモリ10から当該識別情報(ChipID、LotID)が正しく読み出されたことを確認するものである。
尚、この他に図示しない誤り訂正処理部なども必要に応じて構成要素として備える。
<2.認証フロー>
次に、図2に沿って、図1に示した構成におけるメモリシステムの認証フローについて説明する。
まず、認証を開始(Start)すると、ホスト装置20は、NAND型フラッシュメモリ10から暗号化LotID束(SELID: Set of Encrypted LotID)を読み出す(Step S11)。
続いて、ホスト装置20は、読み出したSELIDから選択部21により選択処理を行い、当該ホスト装置20が復号可能な暗号化LotIDデータを読み出す。さらに、秘匿している秘密情報HKeyjを用いて復号部22により上記復号処理を行い、LotIDを得る(Step S12)。
続いて、ホスト装置20は、認証要求時に必要となる乱数RNhを生成する。認証処理に乱数RNhを用いることにより、以下の処理で、NAND型フラッシュメモリ10との間で毎回異なる共有鍵を利用することが可能となる(Step S13)。
続いて、ホスト装置20は、認証要求(Request authentication)と共に、予め保持しているホスト定数(HCj)と前記乱数RNhをNAND型フラッシュメモリ10に送信する(Step S14)。
続いて、NAND型フラッシュメモリ10は、認証要求を受け、秘匿領域11−2に秘匿するNKeyをロードし、データキャッシュ12に保持する(Step S15)。
続いて、NAND型フラッシュメモリ10は、乱数生成器15により認証に必要となる乱数RNcを生成し、ホスト装置に送出する(Step S16)。
ここで、Step S16の処理と平行して、ホスト装置20は、Step S13で生成した乱数RNhとStep S15で受信した乱数RNcを用い、結合部26による上記データ結合処理の結果、結合データRNh || RNcを生成する。さらに、予め秘匿していた秘密情報HKeyjと前記結合データRNh || RNcを用い、生成部27による上記データ生成処理により、SKeyj (=Generate(HKeyj、 RNh || RNc))を生成する(Step S17)。
続いて、NAND型フラッシュメモリ10は、ロードしたNKeyとStep S14において受信したホスト定数HCjを用いて、上記データ生成処理回路13により、HKeyjを生成する。さらに、Step S14で受信した乱数RNh及びStep S15で生成した乱数RNcから上記データ結合処理回路14により結合データRNh || RNcを生成する。さらに、前記HKeyjと前記結合データRNh || RNcを用いて、データ生成回路16の上記データ生成処理により鍵データSKeyj(= Generate(HKeyj、 RNh || RNc))を生成する(Step S18)。
続いて、ホスト装置20は、ID要求(Request ID)をNAND型フラッシュメモリ10に送る(Step S19)。
続いて、NAND型フラッシュメモリ10は、ChipIDとLotIDをROM領域11−3から読み出す(Step S21)。
続いて、NAND型フラッシュメモリ10は、排他的論理和回路17によりChipIDとLotIDの排他的論理和(ChipID (+) LotID)を計算する。さらに、暗号化器18により、これらをStep S18で生成した鍵データSKeyjで暗号化し、暗号化識別情報Enc-ID (=Enc (SKeyj、 ChipID (+) LotID))を生成し、生成された暗号化識別情報Enc-IDをホスト装置20に送出する(Step S22)。
続いて、ホスト装置20は、復号部28により、受信した暗号化識別情報Enc-IDをStep S17で生成した鍵データSKeyjを用いて復号し、ID = ChipID (+) LotIDを得る(StepS11)。
続いて、ホスト装置20は、排他的論理和部29により、前記IDとStep S12で得られたLotIDの排他的論理和を求めることにより、ChipIDを得る(Step S24)。
以上の動作により、第1の実施形態に係る認証フローを終了する(End)。
<3.SELIDについて>
次に、図3を用い、本例に係るSELIDについて説明する。
LotIDが記録されているNAND型フラッシュメモリに適合したSELIDを生成するためには、予め用意された秘密情報である第2鍵情報束(HKeyj (j=1,…,n)(Set of HKeys)の1つ1つの第2鍵情報HKeyjを用いて、LotIDを1つ1つ暗号化する。つまり、SELIDは、暗号化LotIDj(E-LotIDj) = Encrypt(HKeyj, LotID)の集合であり、この暗号化LotIDの集合を暗号化LotID束と呼んでいる。
暗号化時には、必要に応じて各第2鍵情報HKeyjは、各々のインデックス情報jと排他的論理和演算を行った結果を暗号化鍵として用い、その際の暗号化LotIDjは次のように計算される:E-LotIDj = Encrypt(HKeyj (+) j, LotID)。
ここで、上記の例は、HKeyj (+) jを暗号化鍵として用いる例であるが、これに限らず、例えば、巡回シフト演算を用いても良い。巡回シフト演算とは、ビットを移動し、桁を超えてしまったものを反対側に繰り上げて移動することである。左巡回シフト演算を例にとると、2進法で11010101を左に3回巡回シフトすると10101110となる。以下に示す式を用いて暗号化鍵を計算しても良い:E-LotIDj = Encrypt(CyclicLeftShift(HKeyj , j), LotID)。ここで、CyclicLeftShift(HKeyj , j)はHKeyjを左にj回巡回シフトすることを表す。この場合、図1の排他的論理和部24は左巡回シフト演算を行う左巡回シフト部に置き換えれば良い。これらの事柄は、後述する他の実施形態においても同様である。
尚、SELIDの構成については、本例に限られない。例えば、特定のHKeyjが露呈してしまった場合、当該HKeyjを保持しているホスト装置20では暗号化LotID束からLotIDを復号することができないようにするために、当該秘密情報HKeyjで復号可能な暗号化LotIDをSELIDから削除することにより新たに構成されたSELIDを記録したNAND型フラッシュメモリ10を使用した場合には、当該ホスト装置では正しいLotID及びChipIDを得る(復号する)ことができないようにすることも可能である。このようにすることで、当該秘密情報HKeyjを保持したホスト装置20を無効化する機能を提供することも可能である。
<4.作用効果>
第1の実施形態に係る認証装置、被認証装置、およびその認証方法によれば、少なくとも下記(1)乃至(2)の効果が得られる。
(1)ホスト装置20から秘密情報が漏洩した場合であっても、漏洩した情報を用いたNAND型フラッシュメモリ10の秘密情報の不正利用を防止することができる。
ここで、認証装置であるホスト装置20は、民生機器の様な専用ハードウェア装置だけでなく、例えば、PC(パーソナルコンピュータ)などで実行可能なプログラム(ソフトウェア)として提供され当該ソフトウェアが実質的なホスト装置となる場合もある。一方、被認証装置であるNAND型フラッシュメモリ10は、記録メディアであり、ファームウェアと呼ばれるプログラムが介在する場合であっても、重要な処理や情報はセルアレイ11中のハードウェア内に秘匿された状態で記憶される。そのため、現実的には、例えば、PC上で実行されるソフトウェアは、記録メディアに比べて耐タンパー性能(攻撃に対する耐性)が低くなってしまうことが懸念される。そのため、耐タンパー性能の低いホスト装置(認証装置)20を攻撃することで、耐タンパー性の高いNAND型フラッシュメモリ10(被認証装置)に秘匿された秘密情報をも暴露され、耐タンパー性の高い装置に成りすまされることが懸念される。
そこで、第1の実施形態に係る構成及びその認証方式では、上記のように、比較的耐タンパー性の高いNAND型フラッシュメモリ10は、第1鍵情報(NKey)から第2鍵情報(HKey)を生成する第1鍵情報(NKey)をセルアレイ11に秘匿する。一方、比較的耐タンパー性が低くなってしまうホスト装置20は、第2鍵情報(HKey)からは第1鍵情報(NKey)を生成しない第2鍵情報(HKey)のみをメモリ23に秘匿する。
そのため、NAND型フラッシュメモリ10は、ホスト装置20から受領した元情報(HC)と自身が秘匿する第1鍵情報(NKey)を用いて、認証装置が秘匿している第2鍵情報(HKey)を生成する。NAND型フラッシュメモリ10は、第2鍵情報(HKey)と乱数情報(RNh、RNc)とからセッション鍵(SKey)を生成する。
ホスト装置20は、秘匿する第2鍵情報(HKey)と乱数情報(RNh、RNc)とからセッション鍵(SKey’)を生成する。その結果、NAND型フラッシュメモリ10とホスト装置20とは、共にその値が同じセッション鍵を共有する。
このように、本例では、NAND型フラッシュメモリ(被認証装置)10が秘匿する情報の秘密レベルと、ホスト装置(認証装置)20が秘匿する情報の秘密レベルとを非対称とすることができる。例えば、本例では、比較的耐タンパー性の高いNAND型フラッシュメモリ10が秘匿する情報の秘密レベルを、比較的耐タンパー性の低いホスト装置20が秘匿する情報の秘密レベルよりも、より高く設定することができる。
そのため、仮にホスト装置20が秘匿する情報が漏洩した場合であっても、比較的耐タンパー性の高いNAND型フラッシュメモリ10が秘匿する情報の秘密レベルがさらに高いため、漏洩した情報を用いてNAND型フラッシュメモリ10に”成りすますこと”ができない。従って、漏洩した情報を用いたNAND型フラッシュメモリ10の秘密情報の不正利用を防止することができる点で有利である。その結果、例えば、認証装置から読み出されたID情報が、目的の被認証装置から読み出した情報であることを確実に確認し、その相手方の不正利用の無効化等が可能となる。
(2)実装化において有利である。
本例のような構成では、比較的大きな回路規模を要求される公開鍵暗号処理やMKB処理のハードウェア実装が困難である等の回路規模上の制約が同時に課せられる環境下である。
しかしながら、本例によれば、鍵情報が非対称であるものの比較的大きな回路規模を必要とする公開鍵暗号処理を用いる必要がない。さらに、上記のように、ホスト装置(認証装置)20とNAND型フラッシュメモリ(被認証装置)10とが秘匿する情報の秘密レベルを非対称とすることにより、片方の装置から漏れた情報だけではもう一方の装置に成りすますことができない認証手段を行い、認証装置と被認証装置間で秘密情報であるセッション鍵(SKey)を共有する。
そのため、上記制約が課される厳しい環境下であっても、実装化において有利であると言える。
さらに、上記のように、メモリシステムを構成するデータ生成回路や暗号化器を同じ処理とすることにより、回路規模を比較的小さくすることも可能である。
[第2実施形態(複数のNKeyを備える一例)]
次に、第2の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、複数のNKey(第1鍵情報)を備える一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
まず、図4を用い、第2の実施形態に係る構成例について説明する。
図示するように、第2の実施形態に係る構成例では、NAND型フラッシュメモリ10のセルアレイ(Cell array)11内の秘匿領域(Hidden area)11−2に、秘密情報NKeyを複数NKeyi (i=1、…、m)秘匿する点で、上記第1の実施形態と相違する。さらに、ホスト装置(認証装置)から受信した当該インデックス情報iに応じて、秘匿している秘密情報NKeyi(i=1、…、m)からNKeyiを選択する選択部31を更に備える。
さらに、ホスト装置20では、メモリ23が、NAND型フラッシュメモリ10内のどの秘密情報NKeyiの対応した秘密情報HKeyi、jを秘匿しているかを示すインデックス情報iが秘匿される。
上記構成において、ホスト装置20は、認証処理実行時に、選択部21により、秘密情報を指定するための当該インデックス情報iを、インデックス情報jと共に利用してSELIDから当該ホスト装置自身が復号可能な暗号化LotIDを選択する。
合わせて、ホスト装置20は、当該インデックス情報iを、NAND型フラッシュメモリ10に送信する。
NAND型フラッシュメモリ10は、選択部31により、秘匿している秘密情報NKeyi(i=1、…、m)から受信した当該インデックス情報iに対応したNKeyiを選択する。
<認証フロー>
次に、図5に沿って、第2の実施形態に係る認証フローについて説明する。
図示するように、本例では、ステップS14の認証要求(Request authentication)の際に、NAND型フラッシュメモリに秘匿された秘密情報NKeyiを選択するために必要なインデックス情報iが、ホスト装置20からNAND型フラッシュメモリ10に更に送信される。
さらに、ステップS18の際、NAND型フラッシュメモリ10では、第2鍵情報HKeyi、jを生成するために前記インデックス情報iを使用する。
その他の認証フローは、上記第1の実施形態と実質的に同様であるため、詳細な説明は省略する。
<SELIDについて>
次に、図6を用い、第2の実施形態に係るSELIDについて説明する。
(a)や(c)に示すように、第2の実施形態では、NKeyやHKeyを指定するためのインデックス情報が、iとjの2つになっているため、2次元のマトリックス状である。
その他は、上記第1の実施形態と実質的に同様であるため、詳細な説明は省略する。
<作用効果>
第2の実施形態に係る認証装置、被認証装置及びその認証方法によれば、上記(1)、(2)の第1の実施形態と同様の作用効果を得ることが可能である。
さらに、第2の実施形態では、NAND型フラッシュメモリ10のセルアレイ(Cell array)11内の秘匿領域(Hidden area)11−2に、複数のNKeyi (i=1、…、m)秘匿する。
そのため、これに対応するホスト装置20も、用途毎に異なる秘密情報HKeyを秘匿することになるため、特定の用途に向けて配布したHKeyやNKeyが露呈してしまった場合でも、他の用途には悪影響を与えることがなくなる点で更に有利である。
例えば、ビデオプレーヤ用に1番、電子書籍用に2番の秘密情報NKeyを割り当てた場合、ビデオプレーヤ用に割り当てられた秘密情報HKey1、j/NKey1が露呈してしまった場合でも、露呈した当該秘密情報HKey1、j/NKey1を用いても電子書籍リーダを構成することはできない。或いは、ホスト装置メーカ毎に異なるHKey/NKeyを割り当てた場合、メーカAのホスト装置から秘密情報が露呈してしまった場合でも、メーカBのホスト装置を構成することはできない。従って、秘密情報が露呈してしまった特定のメーカAのみが正しくLotID及びChipIDを読み出せないようなNAND型フラッシュメモリ10を新たに製造・提供することが可能となる。
[第3実施形態(Lot毎に複数のNKeyを備える一例)]
次に、第3の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、Lot毎(NANDメーカ毎)に複数のNKey(第1鍵情報)を備える一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
まず、図7を用い、第3の実施形態に係る構成例について説明する。
図示するように、第3の実施形態に係る構成例では、NAND型フラッシュメモリ10の秘匿領域(Hidden area)11−2に、複数のNKeyi (i=1、…、m)から選択された1つの秘密情報NKeyiが記録される。さらに、ROM領域11−3に、当該秘密情報NKeyiを特定するためのインデックス情報iが記録される点で、上記第1の実施形態と相違する。
さらに、ホスト装置20は、m個の秘密情報NKeyi (i=1、…、m)の中のどのNKeyiを秘匿したNAND型フラッシュメモリ10とでも認証処理が実行できるように、m個の秘密情報HKeyi (i=1、…、m)を全て秘匿する。
上記構成において、ホスト装置20は、認証処理実行時に、NAND型フラッシュメモリ10からインデックス情報iを読み出し、秘匿しているHKeyi (i=1、…、m)の中から対応するHKeyiを選択する。さらに、同様にNAND型フラッシュメモリ10から読み出した暗号化LotID束(SELID)から、当該ホスト装置20自身が復号可能な暗号化LotIDを選択する。
<認証フロー>
次に、図8に沿って、第3の実施形態に係る認証フローについて説明する。
本例では、NAND型フラッシュメモリ10は、ステップS32の際に、ROM領域11−3に、当該秘密情報NKeyiを特定するためのインデックス情報iを更にロードする。
ホスト装置20は、ステップS33の際に、NAND型フラッシュメモリ10から暗号化LotID束(SELID)を読み出すと共に、当該NAND型フラッシュメモリに秘匿されている秘密情報NKeyiを特定するためのインデックス情報iを更に読み出す。
続いて、ホスト装置20は、ステップS17の際に、読み出したインデックスiに従って、秘匿している複数の秘密情報HKeyi (i=1、…、m)から対応するHKeyiを利用して、SELIDからLotIDを復号する。
さらに、ホスト装置20は、上記処理で受信したインデックス情報iを用いて秘密情報セットHKeyi、j (i=1、…、m)から鍵データSKeyi、jを生成するために必要なHKeyi、jを選択する。
なお、図示する処理フローでは、インデックスi、SELIDの順番に読み出しているが、読み出し順は特に限定されるものではない。
<SELIDについて>
本実施例でも、HKeyを指定するためのインデックス情報がiとjの2つとなっている。そのため、SELIDは、上記図6に示した第2の実施形態と同様である。
その他は、上記第1の実施形態と実質的に同様であるため、詳細な説明は省略する。
<作用効果>
第3の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第3の実施形態では、NAND型フラッシュメモリ10の秘匿領域11−2に、Lot毎(NANDメーカ毎)に複数のNKey(第1鍵情報)を記憶する。さらに、ROM領域11−3に、当該秘密情報NKeyiを特定するためのインデックス情報iを記録する。
このように、NAND型フラッシュメモリのメーカ毎に、秘匿するNKeyを変えることで、特定のNAND型フラッシュメモリメーカの情報管理が不十分であったために、特に重要な秘密情報であるNKeyが漏れてしまった場合や、販売したNAND型フラッシュメモリ内の情報秘匿方法が不十分であったために秘密情報NKeyが漏れてしまった場合などでも、他のNAND型フラッシュメモリメーカが製造したNAND型フラッシュメモリは引き続き変わりなく利用可能となる点で、有利である。
[第4実施形態(SELIDをProtected areaに記録する一例)]
次に、第4の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、SELIDを保護領域(Protected area)に記録する一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
まず、図9を用い、第4の実施形態に係る構成例について説明する。
図示するように、第4の実施形態では、NAND型フラッシュメモリ10のセルアレイ(Cell array)11の保護領域(Protected area)11−4に暗号化LotID束(SELID)が記録される点で、上記実施形態と相違する。保護領域(Protected area)11−4とは、外部からのアクセスにはコントローラ19に別途実装される認証処理が成功した場合に限ってデータの書込み/読み出し処理が許可される領域である。
このような保護領域11−4は、現在流通している、例えば、SD(登録商標)カード等でも備わっている領域であり、当該保護領域11−4に記録されたデータは、コントローラ19との認証処理を実行できる正規のホスト装置20以外からは秘匿できるだけでなく、ユーザが間違ってデータを書き換え/削除してしまうことも避けられる。そのため、データ再生処理に必要不可欠な情報を保存しておくための領域にもなっている。
そのため、本例に係るSELIDは、コントローラ19との間で別途用意される認証処理が実行されたセキュアチャネル33を確立した上で、ホスト装置20に送信される。
<認証フロー>
次に、図10に沿って、第4の実施形態に係る認証フローについて説明する。
図示するように、ホスト装置20は、ステップS35の際、コントローラ19との間で別途用意される認証処理を実行することでセキュアチャネルを確立させる。
そのため、ホスト装置20は、ステップS35の際、保護領域(Protected area)11−4へのアクセス許可を得て、確立したセキュアチャネルを通じ、暗号化LotID束(SELID)を読み出す。
第4の実施形態に係るSELIDについては、上記図3に示したものと同様である。
その他の構成等は、第1の実施形態と同様であるため、詳細な説明は省略する。
<作用効果>
第4の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第4の実施形態では、暗号化LotID束(SELID)が、セルアレイ11の保護領域(Protected area)11−4に記録されている。そのため、ユーザが間違ってSELIDを書き換え/削除してしまうことによって生じる、ChipIDやLotIDの読み出しができなくなるというトラブル等を防止することが可能となる。
[第5実施形態(NANDに乱数生成器を備えない一例)]
次に、第5の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、NAND型フラッシュメモリ10に、上記乱数生成器15を備えない一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
図11を用いて、第5の実施形態に係る構成例について説明する。
図示するように、第5の実施形態に係る構成例では、NAND型フラッシュメモリ10に、上記乱数生成器(RNG)15を備えていない。
その代わりに、当該NAND型フラッシュメモリ10毎に予め用意された固定値インデックス情報(i-NAND)をセルアレイ(Cell array)内のROM領域11−3に保持している。このi-NANDは、第1の実施形態における乱数RNcの代わりに鍵データSKeyjを生成する際に使用される値であり、NAND型フラッシュメモリ製造時に予め生成された乱数値、ChipIDやLotIDのハッシュ値、ChipIDやLotIDを特定の値で暗号化した値など、様々な生成手段で生成した値が使用できる。
そのため、NAND型フラッシュメモリ10は、データキャッシュ12Bを更に備える。
<認証フロー>
次に、図12に沿って、第5の実施形態に係る認証フローについて説明する。
図示するように、NAND型フラッシュメモリ10は、ステップS16の際、ホスト装置20からの認証要求(Request authentication)を受けると、乱数生成器で乱数を生成する代わりに、ROM領域11−3から固定値インデックス情報(i-NAND)を読み出し、ホスト装置20に送出する。
ホスト装置20およびNAND型フラッシュメモリ10は、鍵データSKeyjを生成する際に、ホスト装置が生成した乱数RNhと前記i-NANDの結合データRNh || i-NANDとHKeyjを用いて上記データ生成処理を行う (SKeyj = Generate(HKeyj、 RNh || i-NAND))。
第5の実施形態に係るSELIDについては、上記図3に示したものと同様である。
その他は第1の実施形態と実質的に同様であるため、詳細な説明は省略する。
<作用効果>
第5の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第5の実施形態では、NAND型フラッシュメモリ10に、図1における上記乱数生成器(RNG)15を備えていない。そのため、NAND型フラッシュメモリ10の実装回路規模をより小さくすることが可能となり、微細化に対してより有利である。
[第6の実施形態(Tokenを生成する一例)]
次に、第6の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、検証データ(Token)を生成する一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
図13を用いて、第6の実施形態に係る構成例について説明する。
図示するように、第6の実施形態に係る構成例では、NAND型フラッシュメモリ10側、およびホスト装置20側のいずれも、データ生成回路(Generate)16、26を用い、秘密情報HKeyjと2つの乱数の結合データRNh || RNcから鍵データSKeyjを生成すると共に、ホスト装置とNAND型フラッシュメモリ間で同じ鍵データSKeyjが生成できていることを確認するための検証データ(Token)を生成する点で、上記実施形態と相違する。
検証データ(Token)とは、セッション鍵SKeyj及びホスト装置20とNAND型フラッシュメモリ10が互いに共有している値に基づいて計算するデータであれば良い。本実施例では、2つの乱数の結合順番を入れ替えた値RNc || RNhを用いて求められるToken (= Generate(SKeyj、 RNc||RNh))を一例として用いている。なお、図中では記載スペースの都合で、Generate()をG()と記載している。
なお、セッション鍵SKeyj生成に用いるデータ生成回路とToken生成に用いるデータ生成回路は、同じ回路として図示している。しかし、ホスト装置20とNAND型フラッシュメモリ10で同じデータを生成することが目的であるため、前記の2つのデータ生成回路は必ずしも同じデータ生成回路である必要はなく、異なる回路で構成してもよい。
生成された前記検証データTokenは、NAND型フラッシュメモリからホスト装置に送出される。
ホスト装置20は、比較器35において、受信した前記検証データTokenとホスト装置自身が計算した検証データとが一致するか否かを判定する。検証データToken値が同じ場合(Yes)、ゲート部36はセッション鍵SKeyjを復号部(Decrypt)28に出力し、第1の実施形態と同様に以降の処理を継続する。一方、検証データToken値が異なっている場合(No)、以降の処理を中止する(Abort)。
<認証フロー>
次に、図14に沿って、第6の実施形態に係る認証フローについて説明する。
第6の実施形態では、第1の実施形態において鍵データSKeyjを生成した後に、以下の処理が追加される。
ホスト装置20は、ステップS36の際に、生成した鍵データSKeyjと2つの乱数RNhとRNcから検証データToken = Generate(SKeyj、RNc||RNh)を計算する。
同様に、NAND型フラッシュメモリも、ステップS37の際に、生成した鍵データSKeyjと2つの乱数RNhとRNcから検証データToken = Generate(SKeyj、 RNc||RNh)を計算し、当該Tokenをホスト装置に送出する。
続いて、ホスト装置は、ステップS39の際に、受信したTokenとホスト装置自身が生成したTokenが一致するかどうかを確認し、一致した場合には以降の認証処理を継続し、不一致の場合には以降の認証処理を中止する。
第6の実施形態に係るSELIDについては、上記図3に示したものと同様である。
その他については、第1の実施形態と同様であるため、詳細な説明は省略する。
<作用効果>
第6の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第6の実施形態では、ホスト装置とNAND型フラッシュメモリ間で同じ鍵データSKeyjが生成できていることを確認するための検証データ(Token)を生成し、この一致を判定する。
そのため、認証による鍵共有処理が両者間で正しく行われていることが確認でき、不正な認証相手や認証処理の中間経路においてデータに誤り或いは改ざんが発生したことなどを容易に確認することが可能となる点で、更に有利である。
[第7の実施形態(SELID暗号化に別セットのIDKeyを利用する一例)]
次に、第7の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、SELID暗号化に別セットのIDKeyを利用する一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
図15を用いて、第7の実施形態に係る構成例について説明する。
図示するように、第7の実施形態に係る構成例では、暗号化LotID束(SELID)生成に使用される暗号化鍵をNKey由来のHKeyとは異なる暗号化鍵IDKeyに変更する点で、上記実施形態と相違する。但し、本例に係るNAND型フラッシュメモリ10の構成要素には、実質的な変更はない。
本例に係るホスト装置20は、メモリ23に、新たな秘密情報IDKeykを秘匿しており、NAND型フラッシュメモリ10から読み出したSELIDの復号処理に当該IDKeykを使用する点が相違する。しかし、復号処理自体には変更はない。
<認証フロー>
次に、図16に沿って、第7の実施形態に係る認証フローについて説明する。
図示するように、ホスト装置20は、ステップS12の際に、秘密情報IDKeyk及びインデックス情報kを使用して、NAND型フラッシュメモリ10から読み出した暗号化LotID束(SELID)を復号する点で、上記実施形態と相違する。
また、前述の通りLotIDの暗号化に用いる鍵データが変更になっているため、本例のSELIDの構成例は、図17のように示される。
その他については、第1の実施形態と実質的に同様であるため、詳細な説明は省略する。
<作用効果>
第7の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第7の実施形態では、NAND型フラッシュメモリに秘匿されている秘密情報NKeyを使用してもSELIDを復号してLotIDを得ることができなくなる。そのため、仮にNAND型フラッシュメモリ10から秘密情報NKeyが露呈、或いは当該NAND型フラッシュメモリ10の製造メーカから秘密情報NKeyが漏れてしまった場合でも、SELIDを利用してLotIDやChipIDを復号できる不正なホスト装置を排除することができる点で、更に有利である。
[第8の実施形態(ChipID伝送を一方向性関数とする一例)]
次に、第8の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、ChipID伝送時の演算を一方向性関数とする一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
図18を用いて、第8の実施形態に係る構成例について説明する。
図示するように、第8の実施形態に係る構成例では、NAND型フラッシュメモリ10のセルアレイ(Cell array)11内の一般領域(User area)11−1に、LotIDではなく、ChipIDを暗号化して構成される暗号化ChipID束(SECID)が記録され、ROM領域11−3にはChipIDのみが記録されている点で、上記実施形態と相違する。
また、NAND型フラッシュメモリ10およびホスト装置20は、セッション鍵SKeyjによってIDを暗号化する代わりに、一方向性演算を行うための一方向性変換器(Oneway)38、39を備える。
ホスト装置20は、NAND型フラッシュメモリ10からSECIDを読み出し、HKeyj及びインデックス情報jを用いて、SECIDからChipIDを得るための、第1の実施形態と同様の復号部22を備える。
ホスト装置20は、NAND型フラッシュメモリ10から受信したChipIDを一方向性変換した結果の値(Oneway(SKeyj、 ChipID))とホスト装置20自身が計算したChipIDの一方向性変換値のベリファイ検証結果を判定するデータ検証部40を備える。
<認証フロー>
次に、図19に沿って、第8の実施形態に係る認証フローについて説明する。
図示するように、まず、認証開始(Start)すると、ホスト装置20は、NAND型フラッシュメモリ10から暗号化ChipID束(SECID: Set of Encrypted ChipID)を読み出す(Step S11)。
続いて、ホスト装置20は、読み出したSECIDから上記選択処理を行い、当該ホスト装置が復号可能な暗号化ChipIDデータを読み出すと共に、秘匿している秘密情報HKeyjを用いて上記復号処理により復号することによりChipIDを得る(Step S12)。
続いて、ホスト装置20は、認証要求時に必要となる乱数RNhを生成する。認証処理に乱数を用いることにより、以下の処理でNAND型フラッシュメモリとの間で毎回異なる共有鍵が利用される(Step S13)。
続いて、ホスト装置20は、認証要求(Request authentication)と共に予め保持しているホスト定数(HCj)と前記乱数RNhとをNAND型フラッシュメモリ10に送出する(Step S14)。
続いて、NAND型フラッシュメモリ10は、認証に必要となる乱数RNcを生成し、ホスト装置に送出する(Step S15)。
続いて、NAND型フラッシュメモリ10は、秘匿しているNKeyとStep S14において受信したHCjを用いて上記データ生成処理によりHKeyjを生成すると共に、 Step S14で受信した乱数RNh及びStep S15で生成した乱数RNcから上記データ結合処理により結合データRNh || RNcを生成し、前記HKeyjと前記結合データRNh || RNcを用いて上記データ生成処理により鍵データSKeyj(= Generate(HKeyj、 RNh || RNc))を生成する(Step S16)
ステップS16の処理と並行して、ホスト装置20は、生成した乱数RNhと受信した乱数RNcから上記データ結合処理により結合データRNh || RNcを生成し、予め秘匿していた秘密情報HKeyjと前記結合データRNh || RNcを用いて上記データ生成処理によりSKeyj(= Generate(HKeyj、 RNh || RNc))を生成する(Step S17)。
続いて、ホスト装置20は、ID要求(Request ID)をNAND型フラッシュメモリに送る(Step S19)。
続いて、NAND型フラッシュメモリ10は、ChipIDをROM領域から読み出す(Step S21)。
続いて、NAND型フラッシュメモリ10は、ChipIDを生成した鍵データSKeyjを用いて一方向性変換を行い、一方向性変換データ Oneway-ID (=Oneway(SKeyj、 ChipID))を生成すると共に、生成された一方向性変換データOneway-IDをホスト装置に送出する(StepS38)。
続いて、ホスト装置20は、ChipIDを生成した鍵データSKeyjを用いて一方向性変換を行い、一方向性変換データOneway-IDを求める(Step S39)。
続いて、ホスト装置20は、受信した一方向性変換データOneway-IDと求めた一方向性変換データと一致することを確認し、一致した場合には前記ChipIDが正しいChipIDであると判定し、不一致の場合には前記ChipIDが不正なIDであると判定する(Step S40)
以上の動作により、第8の実施形態に係る認証フローを終了する(End)。
なお、暗号化ChipID束であるSECIDの構成例は、同様に、図20のように示される。
その他については、上記第1の実施形態と実質的に同様である。
<作用効果>
第8の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第8の実施形態では、NAND型フラッシュメモリ10のセルアレイ(Cell array)11内の一般領域(User area)11−1に、LotIDではなく、ChipIDを暗号化して構成される暗号化ChipID束(SECID)が記録され、ROM領域11−3にはChipIDのみが記録される。
そのため、NAND型フラッシュメモリ10が保持しなければならないID情報の量を減らすことができる。
[第9の実施形態(第7、第8の実施形態の組み合わせの一例)]
次に、第9の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、第7、第8の実施形態の組み合わせ一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
図21を用いて、第9の実施形態に係る構成例について説明する。
図示するように、本実施形態は、上記第7の実施形態と第8の実施形態とにおいて、第1の実施形態に加えた両方の変更を備えるものである。つまり、IDKeyの導入及びSELIDをSECIDへ変更した点が、第1の実施形態からの主な相違点である。
<認証フロー>
図22に、第9の実施形態に係る認証フローを示している。
図示するように、認証フローについても、第7の実施形態の認証フローと第8の実施形態の認証フローとを合わせた認証フローとなっている。
なお、暗号化ChipID束であるSECIDの構成例は、同様に、図23のように示される。
その他については、上記第1の実施形態と実質的に同様である。
<作用効果>
第9の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第9の実施形態では、第7の実施形態及び第8の実施形態で加わった両方の作用効果を得ることが可能である。
[第10実施形態(第3、第7、第8の実施形態の組み合わせの一例)]
次に、第10の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、第3、第7、第8の実施形態を組み合わせの一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
図24を用いて、第10の実施形態に係る構成例について説明する。
図示するように、本実施形態は、第3、第7、第8の実施形態に加えた相違点を備える。つまり、IDKeyの導入、SELIDからSECIDへの変更及びホスト装置が複数の秘密情報HKeyを秘匿する点が、第1の実施例からの主な相違点となっている。
<認証フロー>
次に、図25に沿って、第10の実施形態に係る認証フローを説明する。
図示するように、認証フローについても、第9の実施形態の認証フローにおいて、以下の処理フローが追加される点で、相違する。
まず、ホスト装置20は、ステップS14の際、認証要求(Request authentication)を行う。
続いて、ホスト装置20は、ステップS33の際、乱数RNhとホスト定数HCjを送出後、NAND型フラッシュメモリに秘匿されているNKeyiのインデックス情報iをNAND型フラッシュメモリのROM領域から読み出す。さらに、ホスト装置は、NAND型フラッシュメモリから乱数RNcを受信後に、上記処理で受信したインデックス情報iを用いて秘密情報セットHKeyi、j (i=1、…、m)から鍵データSKeyi、jを生成するために必要なHKeyi、jを選択する。
但し、図25に示す処理フローは一例であり、インデックス情報iの読み出しやHKeyi、j選択処理などは、各処理に必要なデータが事前に得られるようになっていれば、この処理フローに限定されるものではない。
なお、暗号化ChipID束であるSECIDの構成例は、同様に、図23のように示される。
その他については、上記第1の実施形態と実質的に同様である。
<作用効果>
第10の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第10の実施形態によれば、上記第3、第7、第8の実施形態の作用効果を得ることが可能である。
[第11の実施形態(乱数生成器を備えない一例)]
次に、第11の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、上記第10の実施形態において、NAND型フラッシュメモリ1が乱数生成器15を備えない一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
図26を用いて、第11の実施形態に係る構成例について説明する。
図示するように、本実施形態では、第10の実施形態ではNAND型フラッシュメモリに備わっていた乱数生成器(RNG)15を備えていない点で、第10の実施形態と相違する。
第10の実施形態では、2つの乱数RNhとRNcを結合したデータと秘密データHKeyi、jとからセッション鍵データSKeyi、jを生成していたが、本実施形態では乱数RNhと秘密データHKeyi、jとからセッション鍵データSKeyi、jを生成する。
以下、第11の実施形態に係る構成例の詳細について説明する。
実施例では、被認証装置であるNAND型フラッシュメモリに記録されている識別情報ChipIDを第3者から秘匿した状態で読み出すと共に、前述の被認証装置から読み出されたデータであることを確実に確認する方法、及び同方法をNAND型フラッシュメモリに適用する場合の構成を示す。
NAND型フラッシュメモリ
NAND型フラッシュメモリ10は、上記のように、被認証装置である。
図示するように、本例に係るNAND型フラッシュメモリ10は、セルアレイ11、及びセルアレイに周辺領域に配置されるデータキャッシュ12A、12B、データ生成回路(Generate)13、16、乱数生成器(RNG)15、一方向性変換器(Oneway)38等を備える。
セルアレイ(Cell array)11は、ROM領域(ROM area)11−3、秘匿領域(Hidden area)11−2、一般領域(User area)11−1等を備える。
ROM領域11−3は、外部からのデータ記録が禁止され、データ読み出しが許可される領域である。本例に係るROM領域11−3には、識別情報であるChipID、秘匿領域(Hidden area)に記録される秘密情報NKeyiを示すためのインデックス情報i(index of NKey)が記録される。しかしながら、ChipIDやインデックスiを記録する際にはデータに誤りが生じてしまった場合でも、正しい識別情報が読み出せるようにするために一般的には誤り訂正符号化された状態で記録されるが、ここでは、誤り訂正符号化/復号処理については特に図示していない。
秘匿領域(Hidden area)11−2は、NAND型フラッシュメモリ10の外部に対してはデータ記録だけでなく、データ読み出しも禁止される領域である(Read/Program inhibit)。本例に係る秘匿領域11−2には、上記認証においてNAND型フラッシュメモリ10が用いる秘密情報であるNKeyiが記録される。また、前記ChipIDを外部から常に秘匿しておきたい場合などではROM領域の代わりに、秘匿領域に記録しても良い。
一般領域(User area)11−1は、データ記録及びデータ読み出しのいずれも自由に可能な領域である。一般領域11−1には、暗号化ChipID束であるSECID(Set of Encrypted ChipID)が記録され、その他には例えば、写真、ビデオ、音楽或いは電子書籍といったコンテンツデータ等が記録される。なお、暗号化ChipIDであるSECIDの構成例は、上記図23に示したものと同様である。
データキャッシュ(Data Cache)12A、12Bは、セルアレイ11から読み出したデータを一時的に記憶する。
データ生成回路13、16は、複数の入力情報から新たなデータを出力する回路であり、全体の回路規模を小さくするために前述の一方向性変換器と同じ或いは一方向性変換器を流用した回路で構成することも可能である。同様にデータ処理手順を分かり易くするために異なる構成要素として図示されている2つのデータ生成回路は同じ回路を繰り返し利用することが可能である。
データ生成回路(Generate)13、16は、複数の入力データから予め定められた演算によって出力データを生成する回路であり、ホスト装置20から受信した情報(HCj)を前述の秘密情報NKeyiを用いて変換することでHKeyi、jを生成すること、及びホスト装置から受信した乱数RNhを前期HKeyjを用いて変換することでSKeyi、jを生成するために用いられ、AES(Advanced Encryption Standard)暗号化器などを用いることも可能である。
一方向性変換器(Oneway)38は、入力されたデータと別途入力された鍵データに一方向性の変換を施し、一方向性変換された入力データを出力する回路である。本実施例ではROM領域から読み出した識別情報ChipIDを前記データ生成回路によって生成された鍵データSKeyi、jを用いて一方向性関数により変換し、一方向性変換識別情報Oneway-ID (= Oneway(SKeyi、j、 ChipID))を生成する。なお,第1の実施形態と同様に、当該識別情報ChipIDがROM領域の代わりに秘匿領域に記録されている場合には、当該一方向性変換器の入力データである当該識別情報ChipIDは秘匿領域から読み出される。
また、前述の通り、全体のハードウェア回路規模を小さくするために当該一方向性変換器38を前記データ生成回路としても使用することが可能である。
また、図示しないが、コントローラ19を介してホスト装置20に送付されるデータを出力する出力部なども実際には構成要素として配置されても良い。
ホスト装置
図示するように、本例に係るホスト装置(Host)20は、乱数生成部(RNG)25、排他的論理和部(EXOR)24、データ選択部(Select)21−1、21−2、復号部(Decrypt)22、データ生成部(Generate)27、一方向性変換部(Oneway)39、及びデータ検証部(Verify)40等を備える。この他に図示しない誤り訂正処理部なども必要に応じて構成要素として備えることが可能である。
乱数生成部(RNG: Random Number Generator)25は、認証に用いるRNhを生成する。
排他的論理和部(EXOR)24は、入力された2つのデータの排他的論理和を計算し、その結果を出力する。
データ選択部(Select)21−1、21−2は、2つ配置される。第1段目のデータ選択部(Select1)21−1は、NAND型フラッシュメモリ10から読み出した暗号化ChipID束(SECID)から当該ホストが秘匿している秘密情報IDKeykを用いて復号可能な暗号化ChipIDデータを、秘密情報HKeyjのインデックス情報kを用いて、選択する。
第2段目のデータ選択部(Select2)21−2では、NAND型フラッシュメモリ10から読み出した秘密情報NKeyiのインデックス情報iを用いて、当該ホスト装置20が秘匿している秘密情報セットHKeyi、j (i=1、…、m。尚、jは当該HKeyi、jにおいては固定の値である)から、前記NAND型フラッシュメモリ10との認証処理に必要な秘密情報HKeyi、jを選択する。
前記秘密情報IDKeyk、HKeyi、jは、民生機器であれば内部の専用メモリにメーカ独自の方法で暗号化した上で記録されていたり、ソフトウェアプログラムであればタンパーレジスタントソフトウェア(TRS)技術によって不正な解析から保護できる状態で保持していたり、或いはセキュリティモジュールを内蔵している場合には当該セキュリティモジュールの機能を利用して秘匿するなどの対策を採った上で秘匿される。
復号部(Decrypt)22は、入力されたデータを別途入力された鍵データで復号し、復号された入力データを出力する。本実施例では、ホスト装置が秘匿している秘密情報IDKeykと必要に応じて当該秘密情報IDKeykを識別するためのインデックス情報kを排他的論理和部で演算した結果を鍵情報として前記第1のデータ選択部において選択された暗号化ChipIDデータを復号し、ChipIDを得るために用いられる。
データ生成部(Generate)27は、複数の入力データから予め定められた演算によって出力データを生成する演算部であり、当該ホスト装置20自身が生成した乱数RNhを当該ホスト装置が秘匿している秘密情報HKeyi、jを用いて変換することでSKeyi、jを生成するために用いられ、AES暗号化演算などを用いることも可能である。
一方向変換部(Oneway)39は、前記復号部から出力されたChipIDを前記データ生成部から出力されたSKeyi、jを用いて一方向性関数により変換し、一方向性変換識別情報Oneway-IDを生成する。
データ検証部(Verify)40は、NAND型フラッシュメモリ10から受信した一方向性変換識別情報Oneway-IDと当該ホスト装置内の前記一方向性変換部から得られた一方向性変換識別情報を比較し、両方の値が一致した場合には復号部で得られた前記ChipIDが正しいChipIDであると判定し、不一致の場合には前記ChipIDが不正なIDであると判定する。
その他、同様に、この他に図示しない誤り訂正処理部なども必要に応じて構成要素として備えることが可能である。
<2.認証フロー>
次に、図27に沿って、第11の実施形態に係るメモリシステムの認証フローについて説明する。
図示するように、認証開始(Start)すると、ホスト装置20は、NAND型フラッシュメモリ10から暗号化ChipID束(SECID: Set of Encrypted ChipID)を読み出す(Step S11)。
続いて、ホスト装置20は、読み出したSECIDから上記データ選択部(Select1)21−1によりデータ選択処理を行い、ホスト装置20が復号可能な暗号化ChipIDデータを読み出すと共に、秘匿している秘密情報IDKeykを用いて上記復号処理部22により復号することによりChipIDを得る(Step S12)。
続いて、ホスト装置20は、認証要求時に必要となる乱数RNhを生成する(Step S13)。認証処理に乱数を用いることにより、以下の処理でNAND型フラッシュメモリとの間で毎回異なる共有鍵が利用される。
続いて、ホスト装置は、認証要求(Request authentication)と共に予め保持しているホスト定数(HCj)と前記乱数RNhをNAND型フラッシュメモリに送出する(Step S14)。
続いて、NAND型フラッシュメモリ10は、ホスト装置20が秘密情報セットHKeyi、j (i=1、…、m)からNAND型フラッシュメモリとの認証に必要となるHKeyi、jを選択するために必要なNKeyのインデックス情報iを読み出し、ホスト装置20に送出する(Step S15、S33)。
続いて、NAND型フラッシュメモリ10は、秘匿しているNKeyiと受信したHCjを用いて上記データ生成回路におけるデータ生成処理によりHKeyi、jを生成すると共に、受信した乱数RNhを用いて上記データ生成回路におけるデータ生成処理により鍵データSKeyi、j (= Generate(HKeyi、j、 RNh))を生成する(Step S18)。
上記Step S32の処理と並行して、ホスト装置20は、受信したインデックス情報iを用いて、予め秘匿していた秘密情報セットHKeyi、j (i=1、…、m)から当該NAND型フラッシュメモリ10との認証処理に必要な秘密情報HKeyi、jを選択する(Step S33)。
続いて、ホスト装置20は、選択した秘密情報HKeyi、jと生成した乱数RNhと用いて上記データ生成部27におけるデータ生成処理により、セッション鍵SKeyi、j (= Generate (HKeyi、j、 RNh))を生成する(Step S17)。
続いて、ホスト装置20は、ID要求(Request ID)をNAND型フラッシュメモリ10に送る(Step S19)。
続いて、NAND型フラッシュメモリ10は、ChipIDをROM領域から読み出す(Step S21)。
続いて、NAND型フラッシュメモリ10は、ChipIDを生成した鍵データSKeyi、jを用いて上記一方向性変換器38における一方向性変換処理を行い、一方向性変換データ Oneway-ID (=Oneway(SKeyi、j、 ChipID))を生成すると共に、生成された一方向性変換データOneway-IDをホスト装置に送出する(Step S38)。
続いて、ホスト装置20は、ChipIDを生成した鍵データSKeyi、jを用いて一方向性変換部39における一方向性変換処理を行い、一方向性変換データOneway-IDを求める(StepS39)。
続いて、ホスト装置20は、受信した一方向性変換データOneway-IDと求めた一方向性変換データが一致することを確認し、一致した場合には前記ChipIDが正しいChipIDであると判定し、不一致の場合には前記ChipIDが不正なIDであると判定する(Step S40)。
以上の動作により、第11の実施形態に係る認証フローを終了する(End)。
<作用効果>
第11の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第11の実施形態では、NAND型フラッシュメモリ11内に乱数生成器15の実装が必要なくなる。そのため、第1の実施形態の作用効果及び第10の実施形態で加わった作用効果を同様に実現すると共に、NAND型フラッシュメモリの実装回路規模をより小さくすることが可能となる点で、有利である。
[第12の実施形態(ID-indexが書き込まれる一例)]
次に、第12の実施形態に係る認証装置、被認証装置、およびその認証方法について説明する。この実施形態は、ChipIDを特定するために必要となるインデックス情報ID-indexが書き込まれる一例に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
<構成例(メモリシステム)>
図28を用いて、第12の実施形態に係る構成例について説明する。
図23で示すように、本例では、NAND型フラッシュメモリ10のROM領域11−3に、ChipIDを特定するために必要となるインデックス情報ID-indexが書き込まれ、ChipIDは秘匿領域(Hidden area)11−2に記録され、当該ChipID読み出し用に必要に応じてデータキャッシュ(Data Cache)12B等を備えている点で、上記第11の実施形態と相違する。
なお、暗号化ChipIDであるSECIDの構成例は、上記図23に示したものと同様である。
<認証フロー>
NAND型フラッシュメモリ10は、秘匿領域からChipIDを読み出す際に、必要に応じてデータキャッシュを介して読み出すが、それ以外の処理フローは第11の実施形態と実質的に同様である。
<SECIDの書き込みについて>
図29を用い、暗号化ChipID束(SECID)の書き込みについて、説明する。
ここで、暗号化ChipID束(SECID)がNAND型フラッシュメモリ10の製造時に書き込まれる場合等には、特に必要のない処理である。しかし、NAND型フラッシュメモリ10とコントローラ19などが結合されて、例えば、SD(登録商標)カードなどのストレージメディア製品として一般ユーザ入手し、カード利用時に市場において後から書き込まれる場合などには、SECIDの書き込み処理が必要となる。
図29では、上記のようにSECIDが未記録の状態のストレージメディアに記録されたデータの場合を示している。
図示するように、NAND型フラッシュメモリ10は、秘密情報NKeyiと識別情報ChipIDとが秘匿領域11−2に記録され、前記秘密情報NKeyiを特定するために必要なインデックス情報iと前記識別情報ChipIDを特定するために必要となるインデックス情報ID-indexとがROM領域11−3に書き込まれた状態である。しかしながら、SECIDは、NAND型フラッシュメモリ10に、まだ書き込まれていない。
このように、SECIDが未記録状態のストレージメディア10に、サーバからSECIDをダウンロードして記録する場合について、図30を用いて説明する。
図示するように、この場合には、NAND型フラッシュメモリ10に、必要に応じてデータキャッシュ12が配置される。
本例に係るサーバ60は、ID-indexからChipIDを生成するためのChipID生成部(Generate ChipID)62、暗号化部(Encrypt)63、及びIDKeyデータベース(Set of IDKeyi s (i=1、…、x) )61を備える。
ID-indexからChipIDを生成する方法としては、様々な変換を利用することができるが、その一例を以下に示す。
(変換例)
まず、予めNAND型フラッシュメモリ10の製造者毎に配布される変換鍵Kmを用いて、暗号化によってChipIDを暗号化した値をID-indexとする。ID-indexは、以下のように示される。
ID-index = Encrypt (Km、 ChipID)
ID-indexは、インターネット50を介して、サーバ60に送信される。
サーバ60は、生成部62により、受信したID-indexを、変換鍵Kmを用いて復号することでChipIDを得る。ChipIDは、以下のように示される。
ChipID = Decrypt(Km、 ID-index)
なお、変換鍵Kmは、全てのNAND型フラッシュメモリ10の製造者で共通にするだけでなく、NAND型フラッシュメモリ10の製造者毎に異なる値にすることも可能である。
なお、ホスト装置20は、SECIDの新規書き込みが必要かどうかを判定し、必要に応じてSECIDをサーバに要求する機能を備える。
<SECID書き込みフロー>
次に、図31に沿って、暗号化ChipID束(SECID)をサーバ60からダウンロードしてNAND型フラッシュメモリ10に書き込むフローについて説明する。
図示するように、まず、ホスト装置20が、SECIDダウンロードが必要と判定したことにより、SECID書き込みが開始(Start)され、ホスト装置20はサーバ60に対してSECID要求を出す(Step S55)。
続いて、サーバ60は、NAND型フラッシュメモリ10に対して、ChipIDを特定するために必要となるインデックス情報ID-indexを要求する(Step S60)。
続いて、NAND型フラッシュメモリ10は、ROM領域11−3からID-indexを読み出し、ID-indexをサーバに送出する(Step S61)。
続いて、サーバ60は、ChipID生成部62において受信したID-indexを用いて、ChipIDを生成する(Step S62)。
続いて、サーバ60は、秘匿しているIDKeyi (i=1、…、x) を読み出し、当該各IDKeyi61を用いて生成されたChipIDを暗号化し、暗号化ChipID束(SECID)を生成する(StepS63)。
続いて、サーバ60は、成した暗号化ChipID束(SECID)をNAND型フラッシュメモリに送出する(Step S64)。
続いて、NAND型フラッシュメモリ10は、受信した暗号化ChipID束(SECID)を一般領域11−1に書き込み、記録する(Step S65)。
以上の動作により、第12の実施形態に係る暗号化ChipID束(SECID)ダウンロードフローを終了する(End)。
その他の構成、動作等に関しては、上記第11の実施形態と実質的に同様である。
<作用効果>
第12の実施形態に係る認証装置、被認証装置及び認証方法によれば、第1の実施形態と同様の作用効果(1)、(2)を得ることができる。
さらに、第12の実施形態のように、後からSECIDを書き込む場合においても、適用することが可能である。
[第13の実施形態(メモリ、コントローラ、ホストの一例)]
次に、図32を用い、第13の実施形態について説明する。第13の実施形態は、上記実施形態に適用可能な上記NAND型フラッシュメモリ10、コントローラ19、およびホスト装置20の一例に関するものである。本例では、メモリカードとしてSD(登録商標)カードを一例に挙げる。
図示するように、本例では、メモリカードと接続されるホスト装置の機能ブロックも示されている。各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。このため、各ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明する。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も本発明の範疇に含まれる。
ホスト装置20は、アプリケーション、オペレーティング・システム等のソフトウェア211を備えている。ソフトウェア211は、ユーザから、メモリカードへのデータの書き込み、メモリカードからのデータの読み出しを指示される。ソフトウェア211は、データの書き込みおよび読み出しをファイルシステム212に指示する。ファイルシステム212は、管理対象の記憶媒体に記録されているファイルデータを管理するための仕組みであり、記憶媒体の記憶領域内に管理情報を記録し、この管理情報を用いてファイルデータを管理する。
ホスト装置20は、SDインターフェース213を有する。SDインターフェース213は、ホスト装置20とメモリカードとの間のインターフェース処理を行うのに必要なハードウェア、ソフトウェアからなる。ホスト装置20は、SDインターフェース213を介してメモリカードと通信を行う。SDインターフェース213は、ホスト装置20とメモリカードとが通信するのに必要な様々な取り決めを規定し、後述のメモリカードのSDインターフェース231と相互に認識可能な各種のコマンドの組を備えている。また、SDインターフェース213は、メモリカードのSDインターフェース231と接続可能なハードウェア上の構成(ピンの配置、数等)も含む。
メモリカードは、NAND型フラッシュメモリ10、メモリ10を制御するためのコントローラ19を有する。メモリカードは、ホスト装置20に接続されたとき、およびオフ状態のホスト装置20に挿入された状態でホスト装置20がオンされたときに電源供給を受けて初期化動作を行った後、ホスト1からのアクセスに応じた処理を行う。
NAND型メモリ10は、データを不揮発に記憶し、複数のメモリセルからなるページと呼ばれる単位でデータの書き込みおよび読み出しを行う。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ10は、複数のページからなる物理ブロック(消去ブロック)と呼ばれる単位でデータの消去を行う。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
コントローラ19は、メモリ10によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。
コントローラ19は、SDインターフェース31、MPU(micro processing unit)32、ROM(read only memory)33、RAM(random access memory)34、NANDインターフェース35を含んでいる。
SDインターフェース131は、ホスト装置20とコントローラ19との間のインターフェース処理を行うのに必要なハードウェア、ソフトウェアからなり、SDインターフェース13と同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウェア上の構成(ピンの配置、数等)も含む。メモリカード(コントローラ22)は、SDインターフェース131を介してとホスト1と通信を行う。SDインターフェース131は、レジスタ136を含んでいる。
MPU132は、メモリカード全体の動作を司る。MPU132は、例えば、メモリカードが電源供給を受けた際に、ROM133内に格納されているファームウェア(制御プログラム)をRAM134上に読み出して所定の処理を実行する。MPU132は、制御プログラムに従って各種のテーブルをRAM134上で作成したり、ホスト20から受けたコマンドに従ってメモリに対する所定の処理を実行したりする。
ROM133は、MPU132により制御される制御プログラムなどを格納する。RAM134は、MPU132の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、ファイルシステム212によってデータに割り当てられた論理アドレスを有するデータを実際に記憶しているページの物理アドレスの変換テーブル(論物テーブル)が含まれる。NANDインターフェース135は、コントローラ19とメモリ10とのインターフェース処理を行う。
NAND型フラッシュメモリ10内の記憶領域は、保存されるデータの種類に応じて、上記のように、例えば、一般領域(User area)、秘匿領域(Hidden area)、保護領域(Protected area)、ROM領域(ROM area)等を含んでいる。なお、コントローラ19は、一般領域の一部を確保し、自身の動作に必要な制御データ(論物テーブル等)を保存する。
[第14の実施形態(NAND型フラッシュメモリの構成例)]
次に、上記NAND型フラッシュメモリ10の具体的構成例として、第14の実施形態として説明する。
<全体構成例>
上記NAND型フラッシュメモリ10の具体的な全体構成例は、図33のように示される。
図示するように、本例に係るNAND型フラッシュメモリ10は、メモリセルアレイ11、制御回路19、認証回路151、ビット線制御回路152、カラムデコーダ153、データ入出力バッファ154、データ入出力端子155、ワード線駆動回路156、制御信号入力端子158、電源発生回路159を備える。
メモリセルアレイ11は、複数のブロック(BLOCK1〜BLOCKn)により構成される。複数のブロック(BLOCK1〜BLOCKn)のそれぞれは、ワード線およびビット線の交差位置に配置される複数のメモリセルを備える。例えば、BLOCK1は、上記ROM領域11−3である。例えば、BLOCK2は、上記秘匿領域11−2である。その他のブロックは、ホスト装置20から利用可能な一般領域(User area)11−1等である。
ROM領域11−3は例えばOTP(One Time Program)ブロックであり、1回の書き込みのみ許容される。書き込み後は電気フューズ、レーザフューズ、ROMフューズ等の手段を用いてブロックデコーダを制御し消去動作を禁止する。秘匿領域11−2は、例えば外部アドレスのデコードでは選択できない状態とし、NAND型フラッシュメモリ内部の制御回路19のみが読み出し可能な領域とする。
認証回路151は、例えば、上記データキャッシュ12、発生回路13、16、結合回路14、乱数生成回路15、排他的論理和回路17、暗号器18等を備え、制御回路19により制御される。
ビット線制御回路152は、ビット線を介してメモリセルアレイ11中のメモリセルのデータを読み出し、ビット線を介してメモリセルアレイ11中のメモリセルの状態を検出する。また、ビット線制御回路152は、ビット線を介してメモリセルアレイ11中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行う。
ビット線制御回路152内には、図示しない上記ページバッファ等のデータ記憶回路等が設けられ、このデータ記憶回路は、カラムデコーダ153によって選択される。データ記憶回路に読み出されたメモリセルのデータは、データ入出力バッファ154を介してデータ入出力端子155から外部へ出力される。
データ入出力端子155は、例えば、外部のホスト装置20等に接続される。データ入出力端子155は、例えば8ビット、または16ビットのバス幅を有している。NAND型フラッシュメモリ10は、トグルモードインターフェース(toggle mode interface)などの高速インターフェース規格をサポートしてもよい。トグルモードインターフェースでは、例えば、データストローブ信号(DQS)の立ち上がり、立ち下がり両エッジに同期してデータ入出力端子155を介したデータ転送が行われる。
ホスト装置20は、例えば、マイクロコンピュータ等であって、データ入出力端子155から出力されたデータを受ける。ホスト装置20は、NAND型フラッシュメモリ10の動作を制御する各種コマンドCMD(書き込みコマンド、読み出しコマンド、消去コマンド、ステータスリードコマンド等)、アドレスADD、およびデータDTを出力する。ホスト装置20からデータ入出力端子155に入力された書き込みデータDTは、データ入出力バッファ154を介して、カラムデコーダ153によって選択された上記データ記憶回路(図示せず)に供給される。一方、コマンドCMDおよびアドレスADDは、制御回路19に供給される。
ワード線駆動回路156は、制御回路19の制御に従い、メモリセルアレイ11中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
電圧発生回路159は、制御回路19の制御に従い、図示中の接続された上記構成回路の動作に必要な電圧を供給する。例えば、電圧発生回路159は、ホスト装置から供給される外部電圧を昇圧して、読み出し、書き込みあるいは消去時にワード線に印加される電圧を生成する。
制御回路(Controller)19は、NAND型フラッシュメモリ10の全体の動作を制御するために、接続される各回路に必要な制御信号および制御電圧を与える。制御回路19は、メモリセルアレイ11、認証回路151、ビット線制御回路152、カラムデコーダ153、データ入出力バッファ154、ワード線駆動回路156、電圧発生回路159に接続される。接続された上記構成回路は、制御回路19によって制御される。
制御回路19は、制御信号入力端子158に接続され、ホスト装置20から制御信号入力端子158を介して入力されるWE(ライト・イネーブル)信号、RE(リード・イネーブル)信号、ALE(アドレス・ラッチ・イネーブル)信号、CLE(コマンド・ラッチ・イネーブル)信号等の制御信号の組み合わせによって制御される。
ここで、機能的に表現すれば、上記ワード線駆動回路156、ビット線制御回路152、カラムデコーダ153、制御回路19は、データ書き込み回路、データ読み出し回路、およびデータ消去回路を構成する。ホスト装置20は、NAND型フラッシュメモリ10が書き込み、読み出し、消去などの内部動作を実行中であるか否かを、図示せぬRY/BY(レディー/ビジー)信号出力端子をモニタすることで検知する。制御回路19は、RY/BY信号出力端子を介して、RY/BY信号を出力する。
<ブロック(BLOCK)の構成例>
次に、図34を用い、メモリセルアレイを構成するブロック(BLOCK)の構成例について説明する。ここでは、図33中のBLOCK1を一例に挙げて説明する。ここで、このブロックBLOCK1中のメモリセルは、一括してデータ消去されるため、ブロックはデータ消去単位である。
ブロックBLOCK1は、ワード線方向(WL方向)に配置される複数のメモリセルユニットMUから構成される。メモリセルユニットMUは、WL方向と交差するビット線方向(BL方向)に配置され、電流経路が直列接続される8個のメモリセルMC0〜MC7からなるNANDストリング(メモリセルストリング)と、NANDストリングの電流経路の一端に接続されるソース側の選択トランジスタS1と、NANDストリングの電流経路の他端に接続されるドレイン側の選択トランジスタS2とから構成される。
尚、本例では、メモリセルユニットMUは、8個のメモリセルMC0〜MC7から構成されるが、2つ以上のメモリセル、例えば、56個、32個等から構成されていればよく、8個に限定されるというものではない。
ソース側の選択トランジスタS1の電流経路の他端はソース線SLに接続される。ドレイン側の選択トランジスタS2の電流経路の他端は、各メモリセルユニットMUに対応してメモリセルユニットMUの上方に設けられ、BL方向に延出するビット線BLm−1に接続される。
ワード線WL0〜WL7は、WL方向に延び、WL方向の複数のメモリセルの制御ゲート電極に共通に接続される。選択ゲート線SGSは、WL方向に延び、WL方向の複数の選択トランジスタS1に共通に接続される。選択ゲート線SGDも、WL方向に延び、WL方向の複数の選択トランジスタS2に共通に接続される。
また、ワード線WL0〜WL7ごとにページ(PAGE)が存在する。例えば、図中の破線で囲って示すように、ワード線WL7には、ページ7(PAGE7)が存在する。このページ(PAGE)ごとに、後述するデータ読み出し動作、データ書き込み動作が行われるため、ページ(PAGE)はデータ読み出し単位であり、データ書き込み単位である。
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
以下に、本願の出願当初における特許請求の範囲を付記する。
[1]被認証装置を認証装置が認証する認証方法であって、
前記被認証装置は、秘匿された第1鍵情報(NKey)を保持し、
前記認証装置は、元情報(HC)と秘匿された第2鍵情報(HKey)を保持し、
前記被認証装置が、前記元情報(HC)と第1鍵情報(NKey)に基づいて、第3鍵情報(HKey’)を生成するステップと、
前記被認証装置が、前記第3鍵情報(HKey’)と乱数情報とに基づいて、第1セッション鍵(SKey)を生成するステップと、
前記認証装置が、秘匿された第2鍵情報(HKey)と乱数情報に基づいて、第2セッション鍵(SKey’)を生成するステップとを具備する認証方法。
[2]前記被認証装置は、前記第1セッション鍵を用いて保有するID情報を暗号化し、暗号化された前記ID情報を前記認証装置へ送信するステップを更に具備する[1]に記載の認証方法。
[3]前記認証装置が、予め暗号化された前記ID情報の全体(ChipIDおよびLotID)或いはその一部である部分ID情報(LotIDまたはChipID)を記録領域に記録し、
前記認証装置が、前記予め暗号化されたID情報或いは前記予め暗号化された部分ID情報を前記被認証装置の前記記録領域から読み出すと共に、当該予め暗号化されたID情報或いは当該予め暗号化された部分ID情報を秘匿する前記第2鍵情報(HKey)を用いて復号することによりID情報或いは部分ID情報を取得し、当該復号されたID情報或いは部分ID情報が前記被認証装置から前記ID情報の全体或いは一部であることを確認するステップとを更に具備する[2]に記載の認証方法。
[4]前記認証装置は、前記被認証装置から送信される前記第1セッション鍵で暗号化された前記ID情報を、前記第2セッション鍵により復号して前記ID情報を得るステップと、
前記認証装置は、前記第2鍵情報を用いて復号して取られた前記ID情報の一部と前記第2セッション鍵を用いて復号して得られた前記ID情報とを用い、前記被認証装置の識別情報(ChipID)を取得するステップとを更に具備する[3]に記載の認証方法。
[5]秘匿される第1鍵情報(NKey)を記憶するセルアレイと、
認証装置の元情報(HC)と前記第1鍵情報(NKey)とを用いて、第2鍵情報(HKey)を生成する第1データ生成回路と、
生成した前記第2鍵情報(HKey)と乱数情報とを用いて、セッション鍵(SKey)を生成する第2データ生成回路とを具備する被認証装置であって、
前記第1鍵情報(NKey)からは前記第2鍵情報(HKey)を生成するが、前記第2鍵情報(HKey)からは前記第1鍵情報(NKey)を生成しないように構成される。
[6]前記セルアレイは、前記被認証装置の識別情報(ChipID)を更に記憶し、
前記識別情報(ChipID)を前記セッション鍵(SKey)を用いて一方向性関数により変換する一方向性変換器を更に具備する[5]に記載の被認証装置。
[7]秘匿される第1鍵情報(NKey)を保持する被認証装置を認証する認証装置であって、前記認証装置は、
秘匿される第2鍵情報(HKey)を記憶するメモリと、
乱数情報を発生する乱数発生器と、
前記第2鍵情報(HKey)と前記乱数情報とを用いてセッション鍵(SKey)を生成するデータ生成回路とを具備し、
前記第1鍵情報(NKey)からは前記第2鍵情報(HKey)を生成するが、前記第2鍵情報(HKey)からは前記第1鍵情報(NKey)を生成しないように構成される。
[8]前記被認証装置から受信する識別情報(ChipID)を前記セッション鍵(SKey)を用いて一方向性関数により変換する一方向性変換器を更に具備する[7]に記載の認証装置。
[9]前記認証装置は、前記予め暗号化されたID情報の全体(ChipIDおよびLotID)或いはその一部である前記予め暗号化された部分ID情報(LotIDまたはChipID)を、前記被認証装置から読み出し、
前記認証装置は、前記予め暗号化されたID情報或いは前記予め暗号化された部分ID情報を復号するために必要な、前記第2鍵情報(HKey)とは異なる第3鍵情報(IDKey)を前記メモリに更に記憶し、
前記認証装置は、前記予め暗号化されたID情報或いは前記予め暗号化された部分ID情報を前記第3鍵情報(IDKey)により復号することにより、前記ID情報或いは前記部分ID情報を取得する[7]または[8]に記載の認証装置。