認証処理を採用したセキュリティシステムを構築する場合には、当該認証処理を行う装置が攻撃を受けて、秘匿されている情報が抜き出されるといった事態も想定しておく必要がある。従って、抜き出された秘匿情報を無効化(Revoke)する方法が重要となる。
前述のCPRMや、Blu-ray Discに記録されたコンテンツを保護するために規定されている著作権保護技術であるAdvanced Access Content System(AACS)等では、秘匿情報であるデバイス鍵を無効化するために、Media Key Block(MKB)と呼ばれる技術を利用している。また、公開鍵暗号に基づくプロトコルを採用している方式では、漏洩した秘密鍵情報と対になった公開鍵証明書のリスト(Revocation List)を利用している。
SDカードに記録されたビデオコンテンツをPCにインストールされたソフトウェアで再生するシステムを例に挙げる。SDカード内のCPRM処理はハードウェアで実装されているため、秘匿された情報を不正に取り出すことは非常に困難である。それに比べて、ビデオ再生ソフトウェアから秘匿情報を抜き出す方が、攻撃としては容易である場合が多い。現実にも、保護されたDVDやBlu-ray Diskに記録されたコンテンツを不正に復号するソフトウェアが多く出回っている。当該不正ソフトウェアにおいては、正規のソフトウェアプレーヤから抜き出した秘匿情報が利用される。
加えて、正規のソフトウェアから抜き出した秘匿情報を利用してSDカードに成り済まし、正規のソフトウェアプレーヤを騙すといったカード模倣ソフトウェアや模倣カードを防ぐための対策が必要な場合もある。例えば、模倣SDカードからはコンテンツ暗号化に使われた暗号化鍵を容易に読み出せるようにしておくことで、正規の録画機器を使って模倣SDカードに録画したビデオコンテンツを、後から容易に復号できるようになる。
ここで、認証装置は、民生機器のような専用ハードウェア装置だけでなく、例えば、PC(パーソナルコンピュータ)等で実行可能なプログラム(ソフトウェア)として提供され、当該ソフトウェアが実質的な認証装置となる場合もある。一方、被認証装置は、例えば、記録メディア等であり、記録メディアを構成するハードウェアの動作にファームウェアと呼ばれるプログラムが介在する場合であっても、重要な処理や情報はセルアレイ中のハードウェア内に秘匿された状態で記憶される。そのため、PC上で実行されるソフトウェアが認証装置の場合では、記録メディア等の被認証装置に比べて耐タンパー性能(攻撃に対する耐性)が低くなってしまうことが懸念される。
そのため、耐タンパー性能の低い認証装置を攻撃することで、耐タンパー性の高い被認証装置に秘匿された秘密情報をも暴露され、耐タンパー性の高い装置に成りすまされることが懸念されている。このような状況に対応するため、秘密情報の不正利用を効率的に防止する方法が要求されている。
また、近年では、比較的大きな回路規模を要求される公開鍵暗号処理やMKB処理のハードウェア実装が困難である等の回路規模上の制約が同時に課せられる環境下においても、上記要求が強くなる傾向がある。従って、回路規模の増大を最小限に抑制しつつ、秘密情報の不正利用を効率的に防止する方法が要求されている。
以下、複数の実施形態について図面を参照して説明する。この説明においては、認証装置、被認証装置、及びその認証方法として、メモリシステムを一例に挙げるが、これに限られることはない。なお、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
[第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上で動作するソフトウェアで実現される場合も想定される。本実施形態は、ホスト装置20がどのような構成を採用していても、基本的には適用し得るものである。
図1に示す各コンポーネント、データ処理について、以下で説明する。本実施形態では、被認証装置に記録されている秘密識別情報SecretIDを第三者から秘匿した状態で読み出すと共に、正規の被認証装置から読み出されたデータであることを確認する方法、及び同方法を、NAND型フラッシュメモリ10を利用したメモリシステムに適用する場合の構成例を示すものである。
1−1.NAND型フラッシュメモリ
本実施形態において、NAND型フラッシュメモリ10は、被認証装置である。
図示するように、本実施形態に係るNAND型フラッシュメモリ10は、セルアレイ(Cell array)11、及びセルアレイ11の周辺領域に配置されるデータキャッシュ(Data Cache)12、データ生成回路(Generate)13,14、一方向性変換器(Oneway)15を備える。データ生成回路(Generate)13,14及び一方向性変換器(Oneway)15は認証回路17を構成する。
セルアレイ11は、外部からの読み出し及び書き込みの両方が可能な読み書き可能領域(Read/Write area)11−1、外部からの読み出し及び書き込みの両方が禁止された秘匿領域(Hidden area)11−2、外部からの書き込みが禁止されたロム領域(ROM area)11−3等を備える。
読み書き可能領域(一般領域)11−1は、NAND型フラッシュメモリ10の外部からのデータ書き込み及びデータ読み出し両方が可能な領域である。読み書き可能領域11−1には、FKeyvを秘匿するために用意された暗号化FKey束である鍵管理情報FKBv(Family Key Block)が記録される。FKBvはNAND型フラッシュメモリ10に記録される他のデータとは異なり、NAND型フラッシュメモリ10の製造時だけでなく、例えばSDカードのようにNAND型フラッシュメモリ10にコントローラを結合させて一般ユーザ向けのストレージメディアを製造する段階や、或いは前記ストレージメディアの販売後に、ユーザの要求に従ってサーバからダウンロードして記録するように構成することも可能である。詳細については、後述する。
ここで、鍵管理情報FKBvとは、ホスト装置20が保持する秘密情報IDKeykと、当該秘密情報IDKeykのインデックス情報kとに基づいて秘匿情報FKeyvを復号するために用いられる情報、または、ホスト装置20が保持する秘密情報IDKeykと、当該ホスト装置20の識別情報とに基づいて秘匿情報FKeyvを復号するために用いられる情報である。
また、鍵管理情報FKBvは、NAND型フラッシュメモリ10毎にユニークに用意するだけでなく、製造工程に合わせて例えばNAND型フラッシュメモリ10の製造ロット(lot)単位やウェハ(Wafer)単位等、複数のNAND型フラッシュメモリ10に共通に付すことが可能な情報(対応付けられることが可能な情報)である。また、鍵管理情報FKBvのインデックス情報vは、鍵管理情報FKBvの識別情報またはバージョン番号情報であってもよい。
秘匿領域11−2は、NAND型フラッシュメモリ10の外部からのデータ書き込み及びデータ読み出し両方が禁止される領域(Read/Write inhibit)である。秘匿領域11−2には、認証処理においてNAND型フラッシュメモリ10が用いる秘密情報NKeyi及びNAND型フラッシュメモリ10の秘密識別情報SecretIDが記録される。
ロム領域11−3は、NAND型フラッシュメモリ10外部からのデータ書き込みが禁止され、一方データ読み出しが許可される領域である。ロム領域11−3には、鍵管理情報FKBvによって秘匿されている秘匿情報FKeyvを示すためのインデックス情報v(index of FKey)、秘匿情報FKeyvによって暗号化された秘密識別情報SecretID(E-SecretID)、秘密情報NKeyiを示すためのインデックス情報i(index of NKey)が記録される。
本実施形態では、インデックス情報iやインデックス情報vを記録する際にデータに誤りが生じてしまった場合でも、正しい識別情報が読み出せるようにするために、一般的には誤り訂正符号を付加した状態で記録される。しかしながら、説明を簡略化するため、ここでは誤り訂正符号化及び復号化処理については特に図示しないものとする。
なお、ロム領域11−3は、例えば1回の書き込みのみ許容されるOTP(One Time Program)領域であってもよいし、NAND型フラッシュメモリ10の製造工程においては読み出し及び書き込みが可能な一般領域であって、出荷後の管理フラグの書き換えによって読み出し専用となる領域であってもよい。または、当該領域に対する書き込みコマンドを一般領域とは異なる特殊コマンドとし、NAND型フラッシュメモリ10の受領者にはこの特殊コマンドを提供しない等の方法を利用してもよい。他には、NAND型フラッシュメモリ10上では一般領域の扱いであるが、コントローラ19がホスト装置20に提供する機能を読み出しのみに限定する、などの構成をとってもよい。
なお、ロム領域11−3に記録される情報は後述の通り、秘匿領域11−2に記録される情報と関連付けられているため、ロム領域11−3に記録される情報を改ざんした場合、NAND型フラッシュメモリ10の認証機能を有効に働かせることができなくなる。従って改ざんされることによるセキュリティ上の懸念はないため、必ずしもロム領域である必要はなく、読み出し及び書き込みが可能な一般領域で代用してもよい。この場合、図面中のロム領域11−3を読み書き可能領域(一般領域)11−1と読み替えればよい。関連して、ロム領域11−3中に記載されているデータの一部を読み書き可能領域(一般領域)11−1に記録してもよい。例えば、インデックス情報v(index of FKey)を読み書き可能領域(一般領域)に記録し、暗号化された秘密識別情報(E-SecretID)とインデックス情報v(index of FKey)をロム領域11−3に記録するという構成も可能である。上記ロム領域11−3の構成例については、本明細書にて他の実施形態や変形例として後述されるロム領域11−3にも適用可能である。
暗号化された秘密識別情報E-SecretIDとは、NAND型フラッシュメモリチップ10毎に固有に(ユニークに)付される秘密識別情報SecretIDを秘匿情報FKeyvによって暗号化したデータである。或いは、NAND型フラッシュメモリに予めコンテンツを記録して販売するようなプリレコーディング(事前記録)コンテンツ配布用途において同じコンテンツデータを記録する際には、敢えて同じ暗号化秘密識別情報E-SecretIDを記録する等、用途に合わせて同じ暗号化秘密識別情報を複数のNAND型フラッシュメモリに記録することもできる。
データキャッシュ12は、セルアレイ11から読み出したデータを一時的に記憶する。
データ生成部13,14は、複数の入力データから予め定められた演算によって出力データを生成する回路である。
データ生成部13は、ホスト装置20から受信した定数HCjを前述の秘密情報NKeyiを用いて変換することで、秘密情報HKeyi,jを生成する。データ生成部14は、ホスト装置20から受信した乱数RNhを秘密情報HKeyi,jを用いて変換することで、セッション鍵SKeyi,jを生成する。データ生成部13,14は、ハードウェア(回路)若しくはソフトウェア、またはハードウェアとソフトウェア両方の組み合わせでも実装され得る。
データ生成部13,14は、回路として実装される場合は、全体の回路規模を小さくするために後述の一方向性変換器15と同じ或いは一方向性変換器を流用した回路や、AES(Advanced Encryption Standard)暗号化器等を用いることも可能である。同様に、データ処理手順を分かり易くするために異なる構成要素として図示されている二つのデータ生成部は、同じ回路を繰り返し利用することが可能である。この例の場合、HKeyi、j=AES_E(NKeyi, HCj)、SKeyi、j= AES_E(HKeyi、j, RNh)などの構成をとることが可能である。
一方向性変換器15は、入力されたデータと別途入力された鍵データに一方向性の変換を施し、一方向性変換された入力データを出力する。一方向性変換器15はハードウェア(回路)若しくはソフトウェア、またはハードウェアとソフトウェア両方の組み合わせでも実装され得る。
一方向性変換器15は、秘匿領域11−2から読み出した秘密識別情報SecretIDを、データ生成回路14によって生成されたセッション鍵SKeyi,jを用いて一方向性関数により変換し、一方向性変換識別情報Oneway-ID (= Oneway(SKeyi,j, SecretID))を生成する。また、一方向性変換器15は、回路として実装される場合は、前述の通り、全体の回路規模を小さくするために、データ生成部14等を流用して使用することも可能である。この例の場合、Oneway-ID=AES_E(SKeyi、j, SecretID) (+) SecretIDなどの構成をとることが可能である。
また、図示しないが、コントローラ19を介してホスト装置20にデータを出力する出力部等も実際には構成要素として配置されている。
1−2.ホスト装置
本実施形態において、ホスト装置20は、認証装置である。
図示するように、本実施形態に係るホスト装置(Host)20は、復号部(Decrypt)21、FKB処理部(Process FKB)22、メモリ(Memory)23、乱数生成部(RNG: Random Number Generator)24、選択部(Select 2)25、データ生成部(Generate)26、一方向性変換器(Oneway)27、及びデータ検証部(Verify)28等を備える。この他、例えば、図示しない誤り訂正処理部等も必要に応じて構成要素として備えることが可能である。
復号部21は、入力されたデータを別途入力された鍵データで複合し、復号された入力データを出力する。本実施形態では、復号部21は、コントローラ19を介して、暗号化秘密識別情報E-SecretIDをNAND型フラッシュメモリ10から読み出す。そして、暗号化秘密識別情報E-SecretIDを、後述のFKB処理部22(データ選択部22−2)から入力された秘匿情報FKeyを用いて復号し、秘密識別情報SecretIDを出力する。
FKB処理部22は、NAND型フラッシュメモリ10から読み出される鍵管理情報FKBvを、メモリ23に秘匿されている秘密情報IDKeyk及び秘密情報IDKeykのインデックス情報kを用いて復号し、生成した秘匿情報FKeyを復号部21に出力する。本実施形態では、FKB処理部22は、データ選択部(Select 1)21−1及び復号部(Decrypt)22−2を備えている。
第1段目のデータ選択部21−1は、NAND型フラッシュメモリ10から読み出した暗号化FKey束(鍵管理情報FKBv)の中から、メモリ23に記録されているインデックス情報kを用いて、メモリ23に秘匿されている秘密情報IDKeykによって復号可能なデータを選択して、復号部22−2に出力する。
復号部22−2は、メモリ23に秘匿されている秘密情報IDKeykを用いて、データ選択部22−1において選択されたデータを復号し、生成された秘匿情報FKeyを復号部21に出力する。
メモリ23は、インデックス情報k、秘密情報IDKeyk、秘密情報セットHKeyi,j (i=1,…,m。なお、jは当該HKeyi,jにおいては固定の値である)、及び定数HCjを記録し、少なくとも秘密情報IDKeyk及び秘密情報セットHKeyi,j (i=1,…,m)をホスト装置20の外部に対して秘匿する。ここで、定数HCjとは、認証要求(Request authentication)時にNAND型フラッシュメモリ10に送出するために予め保持しているホスト装置20の定数である。詳細については後述する。
乱数生成部24は、認証処理に用いる乱数RNhを生成し、出力する。
第2段目のデータ選択部25は、NAND型フラッシュメモリ10のロム領域11−3からデータキャッシュ12を介して読み出したインデックス情報iを用いて、当該ホスト装置20が秘匿している秘密情報セットHKeyi,jの中から、認証処理に必要な秘密情報HKeyi,jを選択する。
データ生成部26は、複数の入力データから予め定められた演算によって出力データを生成する演算部である。本実施形態では、データ生成部26は、ホスト装置20自身が生成した乱数RNhを、ホスト装置20が秘匿している秘密情報HKeyi,jを用いて変換することで、セッション鍵SKeyi,jを生成する。データ生成部26として、例えば上述したAES暗号化器等を用いることも可能である。
一方向性変換器27は、復号部21から出力される秘密識別情報SecretIDを、データ生成部26から出力されるセッション鍵SKeyi,jを用いて一方向性関数により変換し、一方向性変換識別情報Oneway-IDを生成する。
データ検証部28は、NAND型フラッシュメモリ10から受信した一方向性変換識別情報Oneway-IDと、ホスト装置20内の一方向性変換器27から得られた一方向性変換識別情報Oneway-IDとが一致するか否かを比較する。上記一方向性変換識別情報Oneway-IDの両方の値が一致した場合(OK)には、復号部21で得られた秘密識別情報SecretIDが正規のIDであると判定して、得られた秘密識別情報SecretIDを以降の処理に引き渡す。一方、不一致の場合(NG)には、秘密識別情報SecretIDが不正なIDであると判定して、その旨を出力する。
他に、ホスト装置20が有する秘密情報、例えばIDKeyk、HKeyi、jが流出し、流出情報を有する不正ホスト装置が不正製造者によって製造された場合などにおいて、当該不正ホスト装置を無効化する手段として、鍵管理情報(FKBv)から不正ホスト装置が有するIDKeykにてFKeyを導出可能な情報を除くなどの対応をとることも可能である。この対応については、図3における説明にて後述する。この対応をするに当たっては、秘密情報IDKeyk及びインデックス情報k、秘密情報HKeyi、j及びホスト定数HCjの間に関連を持たせることが有用である。これは、関連があれば、不正ホスト装置が認証において通知するHCjを観測することによって当該不正ホスト装置が有する秘密情報IDKeyk及びHKeyi、jの両方が特定可能となる。関連付けの方法としては、HCjの全部もしくは一部の情報をIDKeykと共有することや、HCjの全部もしくは一部の情報をIDKeykを暗号処理した結果により構成することや、IDKeykの全部もしくは一部の情報をHCjを暗号処理した結果により構成することなどの方法がとれる。更に、鍵管理情報(FKBv)の生成に当たり、FKeyおよびIDKeykに加えて、HKeyi、jを用いるのが望ましい。これについてはFKBの構成例を説明している箇所にて後述する。
ここで、上記秘密情報IDKeyk、秘密情報HKeyi,jは、例えば、ホスト装置20が民生機器のような専用ハードウェア装置であれば内部の専用メモリにメーカ独自の方法で暗号化した上で記録されていたり、PC等で実行されるプログラムであればタンパーレジスタントソフトウェア(TRS)技術によって不正な解析から保護できる状態で保持していたり、或いはセキュリティモジュールを内蔵している場合には当該セキュリティモジュールの機能を利用して秘匿する等の対策を採った状態で記録される。
なお、コントローラ(Controller)19は、NAND型フラッシュメモリ10を制御して、ホスト装置20との間のデータ転送等を行う。例えばコントローラ19は、ホスト装置20から受信した命令を解釈し、NAND型フラッシュメモリ10のインターフェース仕様に適合した命令に変換した上で、当該命令をNAND型フラッシュメモリ10に送出する。コントローラ19は、例えばSD Memory規格、SDIO規格、eMMC規格等、必要に応じて様々なインターフェース規格を採用することができる。
また、コントローラ19は、一般領域11−1の一部を確保し、自身の動作に必要な制御データを保存する。また、コントローラ19は、ホスト装置20から受信した論理アドレスをNAND型フラッシュメモリの物理アドレスに変換する機能を有していてもよい。また、セルアレイ11の疲弊を平準化するため、所謂ウェアレベリングを実行する機能を有していてもよい。ただし、少なくとも秘匿領域11−2についてはウェアレベリングの対象外とされる。
また、メモリシステムの構成例は、上記説明したものに限られない。例えば、図示しない誤り訂正処理部等のその他の構成要素も必要に応じて備えることが可能である。更に、NAND型フラッシュメモリ10が有する秘密情報NKeyiが複数あってもよい。すなわち、秘密情報NKeyiとこれに対応するインデックス情報iの組み合わせを1つのスロットとし、複数スロットがNAND型フラッシュメモリ10に記録されている。ここで、上記スロットには各々スロット番号が付与されており、ホスト装置20は各スロット番号のインデックス情報iを読み出し、いずれか一つを選択して認証を行う。この場合、ホスト装置20はNAND型フラッシュメモリ10に対して選択したスロット番号に相当する情報を通知し、NAND型フラッシュメモリ10は通知されたスロット番号に相当する情報を用いて認証処理を行う。更には、NAND型フラッシュメモリ10が有する全ての情報を1つのスロットとし、当該情報スロットを複数有してもよい。すなわち、秘密情報NKeyi、インデックス情報i、鍵管理情報(FKBv)、インデックス情報v(index of FKey)、秘密識別情報SecretID、暗号化された秘密識別情報(E-SecretID)を1つのスロットとし、複数スロットがNAND型フラッシュメモリ10に記録されている。ここで、上記スロットには各々スロット番号が付与されており、ホスト装置20は各スロット番号のインデックス情報iを読み出し、いずれか一つを選択して認証を行う。この場合、ホスト装置20はNAND型フラッシュメモリ10に対して選択したスロット番号に相当する情報を通知し、NAND型フラッシュメモリ10は通知されたスロット番号に相当する情報を用いて認証処理を行う。
上記において、NAND型フラッシュメモリ10が複数のスロットを有する方法を示したが、これらに限らず、一部の情報を複数のスロットで共有するいかなる構成をとることも可能である。例えば、秘密識別情報SecretID、暗号化された秘密識別情報(E-SecretID)、鍵管理情報(FKBv)、インデックス情報v(index of FKey)は複数のスロットで共有し、他の情報はスロット毎に個別に有するなども可能である。
また、NAND型フラッシュメモリ10が複数のスロットとスロット番号を有し、いずれのスロットを認証に用いるかをホスト装置20が通知する方法は本明細書にて後述する他の実施例全てに適用可能である。
<2.認証フロー>
次に、図2に沿って、第1の実施形態に係るメモリシステムの認証フローについて説明する。
(Step S11)
認証を開始(Start)すると、ホスト装置20は、NAND型フラッシュメモリ10から鍵管理情報である暗号化FKey束(FKB: Family Key Block)及び暗号化秘密識別情報SecretID(E-SecretID)を読み出す。
(Step S12)
続いて、ホスト装置20は、読み出した鍵管理情報FKBからデータ選択部(Select1)22−1によりデータ選択処理を行い、ホスト装置20が復号可能な暗号化された秘匿情報FKeyを読み出すと共に、秘匿している秘密情報IDKeykを用いて上記復号部22−2により復号することにより、秘匿情報FKeyを得る。更に、ホスト装置20は、得られた秘匿情報FKeyを用いて、NAND型フラッシュメモリ10から読み出した暗号化秘密識別情報E-SecretIDを復号することにより、秘密識別情報SecretIDを得る。
(Step S13)
続いて、ホスト装置20は、NAND型フラッシュメモリ10に対して、インデックス情報iの読み出し要求を行う。
(Step S14)
続いて、NAND型フラッシュメモリ10は、ホスト装置20の要求を受けて、インデックス情報iをセルアレイ11からロードし、ホスト装置20に出力する。
(Step S15)
続いて、ホスト装置20は、認証要求時に必要となる乱数RNhを生成する。認証処理に乱数RNhを用いることにより、以下の処理でNAND型フラッシュメモリ10との間で毎回異なる共有鍵を利用することができる。
(Step S16)
続いて、ホスト装置20は、認証要求(Request authentication)と共に、予め保持している定数HCj及び乱数RNhをNAND型フラッシュメモリ10に送出する。
(Step S17)
続いて、NAND型フラッシュメモリ10は、秘密情報NKeyi (i=1,…,m)及び秘密識別情報SecretIDを秘匿領域11−2からロードし、データキャッシュ12に保存する。
(Step S18)
続いて、NAND型フラッシュメモリ10は、秘匿している秘密情報NKeyiとホスト装置20から受信した定数HCjとを用いて、データ生成回路13におけるデータ生成処理により秘密情報HKeyi,jを生成する。
(Step S19)
続いて、NAND型フラッシュメモリ10は、受信した乱数RNhを用いて、データ生成回路14におけるデータ生成処理により、セッション鍵SKeyi,j (= Generate(HKeyi,j, RNh))を生成する。
(Step S20)
続いて、NAND型フラッシュメモリ10は、生成したセッション鍵SKeyi,jを用いて、秘密識別情報SecretIDに一方向性変換器15における一方向性変換処理を行い、一方向性変換識別情報Oneway-ID (=Oneway(SKeyi,j, SecretID))を生成する。生成された一方向性変換識別情報Oneway-IDは、ホスト装置20に送出される。
(StepS21)
上記StepS18と並行して、ホスト装置20は、受信したインデックス情報iを用いて、予め秘匿していた秘密情報セットHKeyi,j (i=1,…,m)から当該NAND型フラッシュメモリ10との認証処理に必要な秘密情報HKeyi,jを選択する。
(Step S22)
続いて、ホスト装置20は、選択した秘密情報HKeyi,jと生成した乱数RNhとを用いて、データ生成部26におけるデータ生成処理により、セッション鍵SKeyi,j (= Generate(HKeyi,j, RNh))を生成する。
(Step S23)
続いて、ホスト装置20は、生成したセッション鍵SKeyi,jを用いて、秘密識別情報SecretIDに一方向性変換器27における一方向性変換処理を行い、一方向性変換データOneway-IDを生成する。
(Step S24)
続いて、ホスト装置20は、NAND型フラッシュメモリ10より受信した一方向性変換識別情報Oneway-IDと、自身が生成した一方向性変換識別情報Oneway-IDとが一致するか否かを判定する。上記一方向性変換識別情報Oneway-IDの両方の値が一致した場合(OK)には、復号部21で得られた秘密識別情報SecretIDが正規のIDであると判定して、以降の処理に秘密識別情報SecretIDを引き渡す。一方、不一致の場合(NG)には、秘密識別情報SecretIDが不正なIDであると判定し、その旨を以降の処理に出力する。
以上の動作により、第1の実施形態に係る認証フローを終了する(End)。
なお、ここで、メモリシステムの構成例において示した通り、NAND型フラッシュメモリ10が複数のスロットを有する場合、ホスト装置20は認証に用いるスロット番号をNAND型フラッシュメモリ10に通知する必要がある。この場合、上記Step S16にてスロット番号を付随して通知してもよいし、もしくはStep S16より以前のStepにおいて通知してもよい。
<3.FKB(Family Key Block)について>
次に、図3を用い、第1の実施形態に係る鍵管理情報FKB(Family Key Block)についてより詳しく説明する。
秘密識別情報SecretIDが記録されているNAND型フラッシュメモリ10に適合した鍵管理情報FKBを生成するためには、予め用意された秘密鍵情報であるIDKeyi (i=1,…,n)(Set of IDKeyi’s)の1つ1つのIDKeyiを用いて、FKeyvを1つ1つ暗号化(Encrypt)する。つまり、鍵管理情報FKBとは、暗号化FKeyv(E- FKeyv,i) = Encrypt(IDKeyi, FKeyv)の集合であり、この暗号化FKeyvの集合を暗号化FKey束と称する。
なお、鍵管理情報FKBの構成については、本実施形態に限られない。例えば、特定のIDKeyiが露呈してしまった場合、当該IDKeyiを保持しているホスト装置20では暗号化FKey束からFKeyを復号することができないようにするために、当該秘密情報IDKeyiで復号可能な暗号化FKeyv(上述の例ではE- FKeyv,i)をFKBから削除することにより、新たに構成されたFKBを記録したNAND型フラッシュメモリ10を使用した場合には、当該ホスト装置20では正しいFKeyv及び秘密識別情報SecretIDを得る(復号する)ことができないようにすることも可能である。このようにすることで、当該秘密情報IDKeyiを保持したホスト装置20を無効化する機能を提供することも可能である。
また、前述の通り、秘密情報IDKeyk及びインデックス情報k、秘密情報HKeyi、j及びホスト定数HCjの間に関連を持たせるにあたり、鍵管理情報(FKBv)の生成においてFKeyおよびIDKeykに加えて、HKeyi、jを流用することもできる。例えば、(E- FKeyv,i) = Encrypt (Encrypt(IDKeyi, FKeyv), HKeyi、j)、(E- FKeyv,i) = Encrypt (Encrypt(HKeyi、j, FKeyv), IDKeyi)、(E- FKeyv,i) = Encrypt(HKeyi、j, IDKeyi(+)FKeyv)などの構成をとってもよい。これは、複数のホスト装置20から鍵が流出した場合に、異なる装置の秘密鍵IDKeyi、HKeyi、jを組み合わせることを防止する効果がある。つまり、正しく組み合わされたIDKeyi、HKeyi、jでない限り、FKeyの復号を不可能とすることにより、HCjを観測することでこれに紐付いたHKeyi、jが判明し、更にIDKeyiも特定することができ、ひいては露呈したIDKeyiを無効化することが可能となる。
鍵管理情報FKBの生成方法についても、本実施形態に限られない。例えば、CPRM(非特許文献1参照)において用いられているMKB(Media Key Block)技術や、非特許文献3に開示されたMKB技術を用いて鍵管理情報FKBを生成しても、ホスト装置20を無効化する機能を提供することが可能である。
ここで、MKB技術とは、複数の機器がそれぞれ異なる秘密情報を持つ状況で、機器の無効化を実現しつつ、(無効化対象でない機器の間で)共通の秘密情報(Media Key)を効率よく共有するための技術であり、Broadcast Encryptionとも称されるものである。
例えば、上記MKB技術を適用した場合、メモリシステムの構成例は、図4のように示される。図示するメモリシステムは、FKB処理部(Process FKB)22が上位概念化されて図示される点で、図1と相違する。この場合においても、KやIDKeyiに対応する情報であるホスト装置20のノード番号やノード番号に割り当てられたホスト鍵群によって復号されるFKBの当該データをHKeyi、jやHCjと関連付けることにより、露呈した鍵の特定と無効化が可能となる。
<4.秘密情報やFKBの書き込みについて>
次に、NAND型フラッシュメモリ10への秘密情報や鍵管理情報FKBの書き込みについて説明する。
4−1.NAND型フラッシュメモリの製造時等に書き込む場合
まず、図5、図6を用い、例えば、NAND型フラッシュメモリ10の製造時等に秘密情報や鍵管理情報FKBを書き込む場合について説明する。ここでは、図6のフローに即して説明する。
ライセンス管理者(Licensing Administrator)40は、以下のデータを生成する:鍵管理情報FKBv (v=1,…,n)、秘匿情報FKeyv(v=1,…,n)、インデックス情報v(v=1,…,n)、秘密情報NKeyi、及びインデックス情報i。なお、前述した通り、FKBvは、FKeyvを暗号化したものである。また、vは複数の値であっても良い。例えば、vとして1,2,3の3つの値をライセンス管理者40が生成する場合、ライセンス管理者40は、生成したvに対応させる形で、(FKB1, FKey1), (FKB2, FKey2), (FKB3, FKey3)を生成する。
ライセンス管理者40は、生成したデータの内、FKeyv(v=1,…,n)、v(v=1,…,n)、NKeyi、iをメモリ製造者30に渡す。これらのデータを渡す際には、例えば、ライセンス管理者40は、予めメモリ製造者30の公開鍵を入手しておき、当該公開鍵を用いてデータを暗号化した上でメモリ製造者30に送信する、等といった安全な手段を用いる。
メモリ製造者(Memory Vender)30は、上記NAND型フラッシュメモリ10に加え、ライセンス管理者40から渡されたFKBv (v=1,…,n)等のデータ31を保持し、選択部32、33、生成部34、暗号部35を備える。
(Step S31)
上記構成により、まず、メモリ製造者30は、生成部(SecretID Generator)34において、秘密識別情報SecretIDを生成する。
(Step S32)
続いて、データ31を受け取ったメモリ製造者30は、vの中から一つの値を選択部32により選択する。更に、選択部32は、前記選択したvに対応するFKeyvを選択する。メモリ製造者30は、選択したFKeyvを用いて、生成したSecretIDを暗号化し、暗号化された秘密識別情報E-SecretIDを生成する。
(Step S33)
続いて、メモリ製造者30は、当該vの値をNAND型フラッシュメモリ10のロム領域11−3へインデックス情報v(index of FKey)として書き込む。
また、メモリ製造者30は、インデックス情報i(index of NKey)の値をNAND型フラッシュメモリ10のロム領域11−3へ、NKeyiの値を秘匿領域11−2へそれぞれ書き込む。
更に、メモリ製造者30は、秘密識別情報SecretIDの値をNAND型フラッシュメモリ10の秘匿領域11−2へ、暗号化された秘密識別情報E-SecretIDの値をロム領域11−3へそれぞれ書き込む。
以上の動作により、NAND型フラッシュメモリ10の製造時等に所定の秘密情報や鍵管理情報FKBを書き込むことができる(End)。なお、上記各値を書き込む順番は、暗号化された秘密識別情報E-SecretIDは、暗号化処理しないと得られない値であるため、暗号部35による上記暗号化処理後となる。しかし、それ以外の書き込み動作の順序について制約はなく、上述の例以外の順番で書き込んでも良い。
更に、メモリ製造者30は、書き込み処理を終えたNAND型フラッシュメモリ10をカード製造者(Card Vendor)に渡す。
このように、本実施形態では、インデックス情報v(index of FKey)等が、NAND型フラッシュメモリ10にあらかじめ書き込まれた状態とすることができる。
4−2.FKBをカード製造者(Card Vendor)が書き込む場合
次に、図7、図8を用い、FKBをカード製造者50が書き込む場合について説明する。ここでも、図8のフローに即して説明する。
カード製造者(Card Vendor)50は、上記メモリ製造者30から上記所定の情報v等が書き込まれたNAND型フラッシュメモリ10を受け取る。
そして、例えばSDカード等のように、そのNAND型フラッシュメモリ10を制御するコントローラ19を結合させ、一般ユーザ等向けのストレージメディア(ここでは、Card)55を製造する。
カード製造者50は、上記ストレージメディア(Card)55に加え、ライセンス管理者40から受け取るデータ(FKBv)51、選択部52を備える。
カード製造者50が鍵管理情報FKBvを書き込む処理については、次の通りである。
(Step S35)
まず、カード製造者50は、鍵管理情報FKBvをライセンス管理者40からデータ51として受け取る。この際、データ51の受け渡しには、上述した安全な手段を用いる。
そして、カード製造者50は、(コントローラ19を介して)NAND型フラッシュメモリ10のロム領域11−3に記録されるインデックス情報vの値をデータキャッシュ12等に読み出す。
(Step S36)
続いて、カード製造者50は、読み出したインデックス情報vの値に対応する鍵管理情報FKBvを選択部52により選択する。
(Step S37)
続いて、カード製造者50は、コントローラ19を介して、NAND型フラッシュメモリ10の読み書き可能領域11−1に選択した鍵管理情報FKBvを書き込む。
<作用効果>
上記のように、第1の実施形態に係る認証装置、被認証装置、及びその認証方法によれば、少なくとも下記(1)乃至(3)の効果が得られる。
(1)ホスト装置20から秘密情報が漏洩した場合であっても、漏洩した情報を用いたNAND型フラッシュメモリ10の秘密情報の不正利用を防止することができる。
ここで、上述した通り、認証装置であるホスト装置20は、民生機器のような専用ハードウェア装置だけでなく、例えば、PC等で実行可能なプログラムとして提供され、当該ソフトウェアが実質的なホスト装置となる場合がある。一方、被認証装置であるNAND型フラッシュメモリ10は、記録メディアであり、ファームウェアと呼ばれるプログラムが介在する場合であっても、重要な処理や情報はセルアレイ11中のハードウェア内に秘匿された状態で記憶される。
そのため、現実的には、例えば、PC上で実行されるソフトウェアは、記録メディアに比べて耐タンパー性能(攻撃に対する耐性)が低くなってしまうことが懸念される。そのため、耐タンパー性能の低いホスト装置(認証装置)20を攻撃することで、耐タンパー性の高いNAND型フラッシュメモリ10(被認証装置)に秘匿された秘密情報をも暴露され、耐タンパー性の高い装置に成りすまされることが懸念される。
そこで、第1の実施形態に係る構成及びその認証方式では、上記のように、比較的耐タンパー性の高いNAND型フラッシュメモリ10は、第1鍵情報(NKeyi)から第2鍵情報(HKeyi,j)を生成することができる第1鍵情報(NKeyi)をセルアレイ11に秘匿する。一方、ホスト装置20は、第2鍵情報(HKeyi,j)からは第1鍵情報(NKeyi)を生成することができない第2鍵情報(HKeyi,j)のみをメモリ23に秘匿する。
そのため、NAND型フラッシュメモリ10は、ホスト装置20から受領した定数HCjと自身が秘匿する第1鍵情報(NKeyi)とを用いて、認証装置20が秘匿する第2鍵情報(HKeyi,j)を生成する。NAND型フラッシュメモリ10は、第2鍵情報(HKeyi,j)と乱数RNhとを用いて、セッション鍵SKeyi,jを生成する。
ホスト装置20は、インデックス情報iにより選択される第2鍵情報(HKeyi,j)と乱数RNhとを用いて、セッション鍵SKeyi,jを生成する。その結果、NAND型フラッシュメモリ10とホスト装置20とは、同じセッション鍵SKeyi,jを共有する。
このように、本実施形態では、NAND型フラッシュメモリ(被認証装置)10が秘匿する情報の秘密レベルと、ホスト装置(認証装置)20が秘匿する情報の秘密レベルとを非対称とすることができる。例えば、本実施形態では、比較的耐タンパー性の高いNAND型フラッシュメモリ10が秘匿する情報の秘密レベルを、比較的耐タンパー性の低いホスト装置20が秘匿する情報の秘密レベルよりも、より高く設定することができる。
そのため、仮にホスト装置20が秘匿する情報が漏洩した場合であっても、比較的耐タンパー性の高いNAND型フラッシュメモリ10が秘匿する情報の秘密レベルが更に高いため、漏洩した情報を用いてNAND型フラッシュメモリ10に”成りすますこと”ができない。従って、漏洩した情報を用いたNAND型フラッシュメモリ10の秘密情報の不正利用を防止することができる点で有利である。その結果、例えば、ホスト装置20から読み出されたID情報が、目的の被認証装置10から読み出した情報であることを確実に判定し、その相手方の不正利用の無効化等が可能となる。
(2)実装化において有利である。
上述した通り、本実施形態のような構成では、比較的大きな回路規模を要求される公開鍵暗号処理やMKB処理のハードウェア実装が困難である等の回路規模上の制約が同時に課せられる環境下である。
しかしながら、本実施形態によれば、鍵情報が非対称であるものの比較的大きな回路規模を必要とする公開鍵暗号処理を用いる必要がない。更に、上記のように、ホスト装置(認証装置)20とNAND型フラッシュメモリ(被認証装置)10とが秘匿する情報の秘密レベルを非対称とすることにより、片方の装置から漏れた情報だけではもう一方の装置に成りすますことができない認証手段を行い、認証装置20と被認証装置10との間で秘密情報であるセッション鍵SKeyi,jを共有する。
そのため、上記制約が課される厳しい環境下であっても、実装化において有利であると言える。更に、上記のように、メモリシステムを構成するデータ生成回路や暗号化器を同じ処理として共有することにより、回路規模を更に小さくすることも可能である。
(3)製造工程の簡略化、製造コストの低減化に対して有利である。
本実施形態に係るNAND型フラッシュメモリ10は、読み書き可能領域11−1に、その用途に応じてNAND型フラッシュメモリ10毎に固有(ユニーク)、或いは製造ロット(lot)単位等複数のNAND型フラッシュメモリ10に共通に付される鍵管理情報(FKBv)を備える。更に、ロム領域11−3に、NAND型フラッシュメモリ10毎に固有に(ユニークに)付される暗号化された秘密識別情報(E-SecretID)を備える。
鍵管理情報(FKBv)を製造ロット単位で共通化させた場合には、NAND型フラッシュメモリ10毎に記録しなければならない固有(ユニーク)な情報を、暗号化された秘密識別情報(E-SecretID)のようにデータサイズの小さいデータだけに減らすことができる。換言すれば、共通に付される鍵管理情報(FKBv)と固有の暗号化秘密識別情報(E-SecretID)とに分け、2段階に暗号化することにより、NAND型フラッシュメモリ10に書き込むべき固有の暗号化秘密識別情報(E-SecretID)のデータサイズを抑えることができるものである。
例えば、上記図5、図6で示したように、NAND型フラッシュメモリの製造時等において、メモリ製造者30は、ライセンス管理者40から受け取ったNAND型フラッシュメモリ10毎に固有な情報(E-SecretID)を書き込む。
そして、NAND型フラッシュメモリ10に共通に付される暗号化された鍵管理情報(FKBv)については、カード製造者50等がNAND型フラッシュメモリ10に共通に書き込むことができる。例えば、上記図7、図8で示したように、カード製造者50が、上記ライセンス管理者40から受け取ったNAND型フラッシュメモリ10毎に共通な鍵管理情報FKBvを書き込む。そのため、メモリ製造者30が書き込まなければならないNAND型フラッシュメモリ10毎に固有(ユニーク)なデータのサイズを低減することが可能となる。
ここで、NAND型フラッシュメモリ10の製造時等に、NAND型フラッシュメモリ10に固有かつデータサイズの大きい情報を書き込む場合、製造工程が煩雑となり、製造時間が長期化し、製造コストが増大してしまう。しかしながら、本実施形態に係る構成及び方法によれば、共通に付される鍵管理情報FKBvと固有の暗号化秘密識別情報(E-SecretID)とに分けて2段階に暗号化することにより、このような煩雑な製造工程は不要となるため、製造工程を簡略化でき、製造コストを低減できる点で有利である。また、製造時間を短縮化できるため、消費電力を低減できる点でもメリットがある。
また、ホスト装置20の側においても、秘匿情報FKeyを用いてNAND型フラッシュメモリに固有な値であるSecretIDを暗号化してE-SecretIDを生成し、更に、IDKeykを用いてFKeyを暗号化して鍵管理情報FKBを生成するという構成を取ることにより、NAND型フラッシュメモリ10と同様のメリットを享受することが可能となる。
[変形例1(FKBを後からダウンロードして書き込む場合)]
次に、変形例1に係る認証装置、被認証装置、及びその認証方法について説明する。この説明において、上記第1の実施形態と重複する部分の説明については、省略する。
<FKBの書き込みについて>
暗号化FKey束(FKB)の書き込みについて、説明する。
本変形例1における処理は、暗号化FKey束(FKB)が、NAND型フラッシュメモリ10の製造時に書き込まれる場合等には、特に必要のない処理である。しかし、NAND型フラッシュメモリ10とコントローラ19等が結合されて、例えば、SDカード等のストレージメディア製品として一般ユーザ入手し、カード利用時に市場において後から書き込まれる場合等には、必要となるFKBの書き込み処理に関するものである。
図9では、上記のように鍵管理情報FKBが未記録のストレージメディア(Card)55に記録されたデータの場合の状態を示している。
図示するように、NAND型フラッシュメモリ10は、秘密情報NKeyiと秘密識別情報SecretIDとが秘匿領域11−2に記録される。前記秘密情報NKeyiを特定するために必要なインデックス情報i、鍵管理情報FKBを特定するために必要となるインデックス情報v、及びインデックス情報vで指定されたFKeyvによって暗号化されたSecretID(E-SecretID)がロム領域11−3に記録される。
読み書き可能領域11−1には、暗号化FKey束である鍵管理情報FKBが書き込まれていない点で、上記第1の実施形態と相違する。
次に、図10を用い、上記のように鍵管理情報FKBが未記録状態のストレージメディア55に、サーバからFKBをダウンロードして記録する場合について説明する。
図示するように、この場合には、NAND型フラッシュメモリ10に、必要に応じてデータキャッシュ12が配置される。
本実施形態に係るサーバ70は、FKBデータベース(Set of FKBi ’s (i=1,…,x))71及びインデックス情報vから鍵管理情報FKBvを選択するための選択部72を備える。
また、サーバ70とメモリシステム(NAND型フラッシュメモリ10、コントローラ19、ホスト装置20)とは、インターネット60を介して電気的に通信接続される。
なお、ホスト装置20は、FKBの新規書き込みが必要かどうかを判定し、必要に応じてFKBをサーバに要求する機能を備える。
<FKB書き込みフロー>
次に、図11に沿って、暗号化FKeyID束(FKB)をサーバ60からダウンロードしてNAND型フラッシュメモリ10に書き込むフローについて説明する。
(Step S41)
図示するように、まず、ホスト装置20が、FKBダウンロードが必要と判定したことにより、FKB書き込みが開始(Start)され、ホスト装置20はサーバ60に対してFKB要求を出す。
(Step S42)
続いて、サーバ70は、NAND型フラッシュメモリ10に対して、FKeyvを特定するために必要となるインデックス情報vを要求する。
(Step S43)
続いて、NAND型フラッシュメモリ10は、ロム領域11−3からvを読み出し、vをサーバに送出される。
(Step S44)
続いて、サーバ70は、受信したvに対応するFKBvをFKBデータベース71の中から選択する。
(Step S45)
続いて、サーバ70は、選択したFKBvをNAND型フラッシュメモリ10に送出する。
(Step S46)
続いて、NAND型フラッシュメモリ10は、受信したFKBvを読み書き可能領域11−1に書き込み、記録する。
以上の動作により、第1の実施形態に係る暗号化FKey束(FKB)ダウンロードフローを終了する(End)。
その他の構成、動作等に関しては、上記第1の実施形態と実質的に同様である。
<作用効果>
変形例1に係る認証装置、被認証装置及び認証方法によれば、少なくとも第1の実施形態と同様の作用効果(1)乃至(3)を得ることができる。
更に、変形例1によれば、後からFKBを書き込む場合においても、必要に応じて本実施形態を適用することが可能である。
[第2の実施形態]
次に、第2の実施形態について説明する。この説明において、上記第1の実施形態と重複する部分の説明については、省略する。
ここで、第1の実施形態では、ホスト装置20によるNAND型フラッシュメモリ10の認証が成功した後、両者は秘密識別情報SecretIDを共有している。認証後の処理として、例えば、ホスト装置20がコンテンツを暗号化し、NAND型フラッシュメモリ10へ当該暗号化コンテンツを書き込むこと等が挙げられるが、この際に、共有した秘密識別情報SecretIDを用いることが考えられる。
本実施形態は、そのような処理においても秘密識別情報SecretIDを保護することを目的とするものである。そのため、この説明においては、上記第1の実施形態と重複する部分の説明については省略する。
<メモリシステム>
第2の実施形態に係るメモリシステムは、図12のように示される。
図12に示すように、本実施形態に係るメモリシステムは、一方向性変換器(Oneway)27B、スイッチ部29、及び対象となるコンテンツを取り扱う全てのホスト装置20が共通に保持している情報(ASSV)を更に備える点で、上記第1の実施形態と相違する。
スイッチ部29は、データ検証部(Verify)28において一方向性変換識別情報Oneway-IDの両方の値が一致した場合(OK)の判定結果が制御信号として入力されると、信号経路をオンとさせ、秘密識別情報SecretIDを一方向変換部27Bに出力する。
一方向変換部(Oneway)27Bは、スイッチ部29から入力される秘密識別情報SecretIDを、対象となるコンテンツを取り扱う全てのホスト装置が共通に保持している情報(ASSV)を用いて一方向性関数により変換し、一方向性変換識別情報EMID(EMID=Oneway(SecretID, ASSV))を生成する。
このように第2の実施形態では、ホスト装置20で秘密識別情報SecretIDが検証された後に、ホスト装置20が、対象となる全てのホスト装置が共通に保持している情報(ASSV)を用いて秘密識別情報SecretIDを変換し、一方向性変換識別情報EMIDを計算する。そのため、ホスト装置20は、秘密識別情報SecretIDの代わりに、一方向性変換識別情報EMIDを用いて、コンテンツ暗号化等の処理を行うことができる。
その他の構成、動作等は、上記第1の実施形態と実質的に同様であるため、詳細な説明については省略する。
<作用効果>
第2の実施形態に係る認証装置、被認証装置及び認証方法によれば、少なくとも第1の実施形態と同様の作用効果(1)乃至(3)を得ることができる。
更に、第2の実施形態では、ホスト装置20は、一方向性変換器(Oneway)27B、スイッチ部29、及び対象となるコンテンツを取り扱う全てのホスト装置が共通に保持している情報(ASSV)を更に備える点で、上記第1の実施形態と相違する。
上記構成によれば、ホスト装置20で秘密認識情報SecretIDが検証された後に、ホスト装置20が、対象となる全てのホスト装置が共通に保持している情報(ASSV)を用いて秘密識別情報SecretIDを変換し、一方向性変換識別情報EMIDを計算する。そのため、ホスト装置20は、秘密識別情報SecretIDの代わりに、一方向性変換識別情報EMIDを用いて、コンテンツ暗号化等の処理を行うことができる。
その結果、ここでは図示を省略するが、後工程におけるコンテンツ暗号化等おいて一方向性変換識別情報EMIDを用いることができ、当該後工程において秘密識別情報SecretIDが漏洩することを防止することが可能となり、秘密識別情報SecretIDの秘匿性を強化することができる点で、更に有利である。詳細については、後述する。
[第3の実施形態]
次に、第3の実施形態について説明する。第3の実施形態は、NAND型フラッシュメモリ10が、ホスト装置20を認証する一例に関するものである。本実施形態では、NAND型フラッシュメモリ10に記録されている秘密識別情報SecretIDを第三者から秘匿した状態で読み出すと共に、NAND型フラッシュメモリ10から読み出されたデータであることを確実に判定する方法、また読みだされたデータに基づいてNAND型フラッシュメモリ10がホスト装置20を検査する方法を示すものである。
この説明において、上記実施形態と重複する部分の説明については、省略する。
<メモリシステム>
図13を用い、第3の実施形態に係るメモリシステムについて説明する。
図示するように、本実施形態では、NAND型フラッシュメモリ10が、機能コントロール部18、乱数生成器24n、及びデータ検証部28nを更に備える。また、ホスト装置20が、機能呼び出し部30を更に備える点で、上記第1の実施形態と相違する。
乱数生成部(RNG: Random Number Generator)24nは、認証に用いる乱数RNnを生成する。
データ検証部(Verify)28nは、ホスト装置20から受信した一方向性変換識別情報Oneway-IDとNAND型フラッシュメモリ10装置内の一方向性変換器15から得られた一方向性変換識別情報を比較して判定する。両方の値が一致した場合にはホスト装置20が正しいOneway-IDを得ている(OK)、不一致の場合には正しいOneway-IDを得ていない(NG)と判定する。
機能コントロール部(Function Control Unit)18は、ホスト装置20が正しいOneway-IDを得た場合(OK)にのみ、NAND型フラッシュメモリ10の所定機能をホスト装置20に対して利用可能とするように、所定機能のイネーブルをメモリセルアレイ11に行う。また、ホスト装置20から受領した定数HCjを機能コントロール部18に入力させ、定数HCjに応じて所定機能の制御を実施してもよい。ここで、所定機能については別途後述する。
機能呼び出し部30は、ホスト装置20が生成した一方向性変換識別情報Oneway-IDの正当性をNANDフラッシュメモリ10が確認したことを示すアクセス許可情報(Access Permission)をホスト装置20が受領すると、NAND型フラッシュメモリ10の所定機能を呼びだすための処理を行う。
<認証フロー>
次に、図14に沿って、第3の実施形態に係るメモリシステムの認証フローについて説明する。
(Step S11)−(Step S14)
図示するように、まず認証開始(Start)から上記ステップS11−S14は、第1の実施形態と同様の処理を行う。
(Step S51)
続いて、ホスト装置20は、インデック情報iを受け取ると、乱数発生要求(Request RNn)をNAND型フラッシュメモリ10に対して送出する。
(Step S52)
続いて、NAND型フラッシュメモリ10は、上記要求を受け、乱数生成部24nにより乱数RNnを生成する。生成された乱数RNnは、ホスト装置20に送出される。
(Step S21)−(Step S23)
続いて、ホスト装置20は、第1の実施形態と同様のステップS21−S23を行う。
(Step S53)
続いて、ホスト装置20は、NAND型フラッシュメモリ10に対して、認証要求(Request authentication)を行い、定数HCj、及び一方向性変換識別情報Oneway-IDを送出する。
(Step S17)−(Step S20)
上記同様のステップS17−S19に続いて、S20の際に、NAND型フラッシュメモリ10は、生成したセッション鍵SKeyi,jを用いて、秘密識別情報SecretIDに上記一方向性変換器15における一方向性変換処理を行い、一方向性変換識別情報Oneway-ID (=Oneway(SKeyi,j, SecretID))を生成する。
(Step S54)
続いて、NAND型フラッシュメモリ10は、受信した一方向性変換識別情報Oneway-IDと、自身が生成した一方向性変換識別情報が一致することを確認する。一致した場合(OK)には前記SecretIDが正規のIDであると判定し、不一致の場合(NG)には前記SecretIDが不正なIDであると判定し、判定結果をホスト装置20に返送するとともに、所定機能の呼び出し受付を許可(Permission)する。
(Step S55)
続いて、NAND型フラッシュメモリ10は、上記S54の際の判定結果が一致した場合(OK)に、機能コントロール部18において、NAND型フラッシュメモリ10の所定機能をホスト装置20に対して利用可能とするように、所定機能のイネーブル(有効化)を行う。
(Step S56)
続いて、ホスト装置20は、機能呼び出し部30において、ホスト装置20が生成した一方向性変換識別情報Oneway-IDの正当性をNANDフラッシュメモリ10が確認したことを示すアクセス許可情報(Access Permission)をホスト装置20が受領すると、NAND型フラッシュメモリ10の所定機能を呼びだすための命令を返信する。
(Step S57)
続いて、NAND型フラッシュメモリ10は、機能の呼び出しを受け、機能コントロール部18において、ホスト装置20から受領した機能呼び出し命令に従った処理を行い、処理結果のステータス(Status)を返送する。
なお、この際、ホスト装置20から受領した定数HCjを機能コントロール部18に入力させ、定数HCjに応じて所定機能の制御を実施してもよい。所定機能については別途後述する。
<作用効果>
第3の実施形態に係る認証装置、被認証装置及び認証方法によれば、少なくとも第1の実施形態と同様の作用効果(1)乃至(3)を得ることができる。更に、少なくとも下記の作用効果(4)及び(5)を得ることが可能である。
(4)NAND型フラッシュメモリ10が、ホスト装置20を認証できる。
第3の実施形態では、NAND型フラッシュメモリ10が、機能制御部18、乱数生成器24n、及びデータ検証部28nを更に備える。また、ホスト装置20が、機能呼び出し部30を更に備える点で、上記第1の実施形態と相違する。
そのため、上記構成によれば、NAND型フラッシュメモリ10に対し、ホスト装置20がアクセスする際に、当該ホスト装置20が信頼に足る場合にのみ、NAND型フラッシュメモリ10は所定の機能を提供する等の認証機能の制御が可能となる。
このように、本実施形態によれば、必要に応じて、通常、被認証装置となる場合が多いNAND型フラッシュメモリ等の記録メディアが、逆にホスト装置20を認証できる点で有利である。
(5)認証したホスト装置20の固有情報(定数HCj等)に応じて、所定の機能を提供するか否かを更に制御するような機構を設けることが可能となる点で有利である。所定の機能の詳細については、後述する。
[第4の実施形態(相互認証)]
次に、第4の実施形態について説明する。第4の実施形態は、NAND型フラッシュメモリ10と、ホスト装置20とがそれぞれ相互に認証し合う一例に関するものである。
この説明において、上記実施形態と重複する部分の説明については、省略する。
<メモリシステム>
図15を用い、第4の実施形態に係るメモリシステムについて説明する。
図示するように、本実施形態では、上記第1の実施形態に係るメモリシステムと第3の実施形態に係るメモリシステムとを実質的に組み合わせた構成を備える。
より具体的には、NAND型フラッシュメモリ10、ホスト装置20が、乱数発生部24n、24h、生成部14−2、26−2、一方向性変換器15−2、26−2、データ検証部28n、28hを備える。更に、ホスト装置20が、スイッチ部29Bを更に備える点で、上記第3の実施形態と相違する。
上記各構成の動作については、上記実施形態と同様である。
<認証フロー>
次に、図16に沿って、第4の実施形態に係るメモリシステムの認証フローについて説明する。本実施形態に係る認証フローは、原則的には、上記第1の実施形態に係る認証動作(ホスト装置がNAND型フラッシュメモリを認証する)を行った後、上記第3の実施形態に係る認証動作(NAND型フラッシュメモリがホスト装置を認証する)を行うものである。
(Step S11)−(Step S24)
図示するように、まず認証開始(Start)すると、上記第1の実施形態と同様のステップS11−S24を行い、ホスト装置20がNAND型フラッシュメモリ10の認証を行う。
この際、乱数生成部24hから生成される乱数RNhを用いて、同様の認証を行う。
(Step S51)−(Step S70)
続いて、上記ステップS24の際の検証結果が一致した場合(OK)、NAND型フラッシュメモリ10の認証が完了したと判断する。
続いて、上記第3の実施形態と同様のステップS51−S70を行い、NAND型フラッシュメモリ10がホスト装置20の認証を行う。
この際、乱数生成部24nから生成される乱数RNnを用いて、同様の認証を行う。
以上のステップにより、第4の実施形態に係る認証動作を終了する(End)。
<機能制御の構成例>
次に、図17を用い、機能制御の構成例について説明する。
ここで、機能制御とは、NAND型フラッシュメモリ10が認証装置であり、ホスト装置20が被認証装置である場合、すなわちNAND型フラッシュメモリ10がホスト装置20を認証し、認証結果に基づいてホスト装置20に対して所定機能を提供する上記第3、第4の実施形態に係る所定機能の制御方法をいう。
図示する機能制御の構成は、後述するようにNAND型フラッシュメモリ10がそれぞれ備えるものである。機能制御は、認証回路17に備える機能コントロール部18、パラメータレジスタ89、及びシーケンス制御回路88を備える。
認証回路17内に含まれる上記機能コントロール部(Function Control Unit)18は、認証結果、また必要に応じたホスト装置20の固有情報(定数HCj等)に基づき、ホスト装置20に対して所定機能を提供するための機能制御をおこなう。機能コントロール部(Function Control Unit)18は、パラメータレジスタ89に含まれる制御パラメータ890を、ホスト装置20の認証結果や固有情報に基づき、更新を行う。
パラメータレジスタ89が有する制御パラメータ890には、一つ以上のアクセス許可情報(#0、#1、、、#3)が含まれる。例えば、アクセス許可情報#0には、ブロックアドレス、ページアドレス、読み出し属性、書き込み属性、消去属性、固有情報等が含まれる。ここで、ブロックアドレスは、当該ブロックアドレスのメモリセルアレイ11に対する制御を示す。ページアドレスは、当該ページアドレスのメモリセルアレイ11に対する制御を示す。読み出し属性は、ブロックアドレス、若しくはブロックアドレス及びページアドレスに対する読み出し許可情報を示す。書き込み属性は、ブロックアドレス、若しくはブロックアドレス及びページアドレスに対する書き込み許可情報を示す。消去属性は、ブロックアドレス、若しくはブロックアドレス及びページアドレスに対する消去許可情報を示す。固有情報は、当該アクセス許可情報が同固有情報を有するホスト装置20に対する制御パラメータであることを示す。
なお、アクセス許可情報(#0、#1、、、#3)のそれぞれは、上記情報のすべてを含んでいる必要はなく、必要とされる制御レベルに応じた情報を含んでいればよい。例えば、ホスト装置20の固有情報(定数HCj等)に基づいた制御が必要なければ固有情報はなくてもよい。また、ページ単位での制御が不要であればページアドレスはなくてもよい。更に、任意のブロックアドレスでの制御が不要であり、例えばあらかじめ定められたブロックのみに対する制御や、NAND型フラッシュメモリ10全体としての制御であれば、ブロックアドレスもなくてもよい。同ように、読み出し属性、書き込み属性、消去属性についても、制御が必要とされる機能についてのみ含んでいればよい。
シーケンス制御回路88は、制御パラメータ890に従って、ホスト装置20から与えられるコマンド(CMD)に応じた動作シーケンスを制御する。例えば、データ読み出しコマンドの場合、シーケンス制御回路88は、制御パラメータ890中のアクセス許可情報の読み出し属性に従って、与えられる読み出しコマンドに応じたデータ読み出す(Read)もしくは読み出しを拒否するなどの動作を制御する。読み出し属性において読出しが許可されていれば、セルアレイ11からデータを読み出すことが可能となる。その他、データ書き込み動作、データ消去動作等についても同様である。
<作用効果>
第4の実施形態に係る認証装置、被認証装置及び認証方法によれば、少なくとも上記と同様の作用効果(1)乃至(5)を得ることができる。
本実施形態によれば、必要に応じて、NAND型フラッシュメモリ10とホスト装置20とがそれぞれ相互に認証することが可能である。
更に、本実施形態に係るNAND型フラッシュメモリ10は、図17に示した構成による機能制御を実現する。シーケンス制御回路88は、制御パラメータ890に従って、与えられるコマンドに応じた動作シーケンスを制御することができる。そのため、NAND型フラッシュメモリ10が認証したホスト装置20において、そのホスト装置20の固有情報(定数HCj等)等に基づいて、制御パラメータ890を更新した各種の機能動作を行うことをホスト装置20に許可すること(Process function)ができる点で有利である。
さらに、本例に係るNAND型フラッシュメモリ10は、図17に示した構成の機能制御を第3の実施形態及び第4の実施形態とともに備えることが可能である。
[第5の実施形態(NAND型フラッシュメモリの構成例)]
次に、第5の実施形態について説明する。第5の実施形態は、上記第1至第4の実施形態に係る認証機能を適用したNAND型フラッシュメモリ10の構成例に関するものである。
この説明において、上記実施形態と重複する部分の説明については、省略する。
<NAND型フラッシュメモリの全体構成例>
図18を用い、第5の実施形態に係るNAND型フラッシュメモリ10の全体構成例について説明する。
図示するように、NAND型フラッシュメモリ10は、メモリセルアレイ11及びその周辺回路を備える。
メモリセルアレイ11は、複数のブロックBLOCK1- BLOCKnを含む。各ブロックの構成は、図19において後述するが、複数のメモリセルトランジスタMC、ワード線WL、ビット線BL等を含むものである。各ブロック中のメモリセルトランジスタMC中のデータは、一括して消去される。メモリセルトランジスタ単位及びページ単位でのデータ消去はできない。すなわち、個々のブロックが最小の消去単位となる。
周辺回路は、センスアンプ77、入出力制御回路84、ロジックコントロール回路85等を備える。
センスアンプ77は、ビット線BLを介してメモリセルアレイ11内のメモリセル(メモリセルトランジスタMC)のデータを読み出し、ビット線BLを介してメモリセルアレイ2内のメモリセルの状態を検出する。
データキャッシュ12は、センスアンプ77から読み出されたデータまたはセンスアンプ77に供給されるデータを一時的に保持する。
カラムデコーダ75は、NAND型フラッシュメモリ10の外部からIO端子を介して供給されたアドレス信号に基づいて、特定のビット線BL、センスアンプ等を選択する。
カラムアドレスバッファ74は、アドレス信号を一時的に保持し、カラムデコーダ75に供給する。
ロウデコーダ78は、データ読み出し、書き込み、あるいは消去に必要な種々の電圧を電圧生成回路86から受け取り、そのような電圧をアドレス信号に基づいて特定のワード線WLに印加する。
ロウアドレスバッファデコーダ79は、アドレス信号を一時的に保持し、ロウデコーダ78に供給する。
電圧生成回路86は、基準電源電圧VSS、VCC、電圧VSSQ、VCCQ等を受け取り、これらからデータ書き込み、読み出し、消去等に必要な電圧を生成する。
入出力制御回路84は、IO端子を介して、NAND型フラッシュメモリ10の動作を制御する種々のコマンド、アドレス信号、書き込みデータを受け取り、また読み出しデータを出力する。入出力制御回路84から出力されたアドレス信号は、アドレスレジスタ82によってラッチされる。ラッチされたアドレス信号は、カラムアドレスバッファ74及びロウアドレスバッファ79に供給される。入出力制御回路84から出力されたコマンドは、コマンドレジスタ83によってラッチされる。ステータスレジスタ81は、入出力制御回路12のための種々のステータスについての値を保持する。
NAND型フラッシュメモリ10は、外部インターフェイス(NAND I/F)として、コマンド、アドレス、データ入出力用のIO端子、動作を制御するための種々の制御信号を外部から受け取る。制御信号には、例えばチップイネーブル/CE、コマンドラッチイネーブルCLE、アドレスラッチイネーブルALE、リードイネーブルRE及び/RE、ライトイネーブルWE及び/WE、ライトプロテクトWP、クロックDQS、/DQSが含まれる。
これらの制御信号は、対応する端子において受け取られ、ロジック制御回路21に供給される。ロジックコントロール回路85は、制御信号に基づいて、入出力制御回路84を制御して、端子IO上の信号をコマンド、アドレス、またはデータとして入出力制御回路84を介してアドレスレジスタ82、コマンドレジスタ83、ページバッファ12等に到達することを許可したり禁止したりする。また、ロジックコントロール回路85は、コマンドレジスタ83から、ラッチされたコマンドを受け取る。
制御信号のうち、WE端子はデータ入力用クロックを供給し、RE端子はデータ出力用クロックを供給し、DQS端子はデータ入出力用クロックを伝送し、CLE端子はデータ入力をコマンドとして入力するイネーブル用であり、ALE端子はデータ入力をアドレスとして入力するイネーブル用であり、CE端子はデータ入出力等全般の機能を有効化するためである。
また、R/B端子はNAND型フラッシュメモリ10の内部動作状態を示し、WP端子は誤書き込み防止用の書き込み防止信号を伝送し、Vcc/Vss/Vccq/Vssq端子等は電力供給用である。また、本実施形態では、高速インターフェースにてデータ伝送を実現する際に利用される端子(Toggle)として、RE端子、WE端子、DQS端子には、各々相補信号を伝送する/RE端子、/WE端子、/DQS端子が存在する。
ロジックコントロール回路85は、シーケンス制御回路88、パラメータレジスタ89、認証回路17を備える。ロジック制御回路85は、また、レディ/ビジー信号(R/B)の出力を司る。具体的には、ロジック制御回路85は、NAND型フラッシュメモリ10がビジー状態の間、ビジー信号を出力する。
シーケンス制御回路88は、コマンドレジスタ83からコマンドを受け取る。シーケンス制御回路88は、受け取ったコマンドに基づいて、コマンドにより指示される処理(データ読み出し、書き込み、消去等)を実行するように、センスアンプ77、電圧生成回路86等を制御する。
パラメータレジスタ89は、ロジック制御回路85の動作を規定する種々の上記制御パラメータ890等を保持する。制御パラメータ890は、シーケンス制御回路88から参照、または更新され、ロジックコントロール回路85や入出力制御回路88におけるシーケンスの制御に利用される。
認証回路17は、上記の認証に関する処理を行う。例えば、認証回路17は、上記のように、パラメータレジスタに含まれる制御パラメータ890の書き換え等の更新も行う。また、認証回路17は、認証を要求するコマンドを受け取り、メモリセルアレイ11中の特定のデータを用いて認証のための特定の演算を行い、結果をメモリ10の外部へ出力する。この一連の動作の実行の過程で、認証回路17は、必要なデータの読み出し、書き込み等を制御パラメータ890の更新を通じて、シーケンス制御回路88に許可する。
レディ/ビジー回路(RY/BY)87は、ロジックコントロール回路85の制御を受けて、スイッチトランジスタを介して、R/B信号をNAND型フラッシュメモリ10の外部に通知する。
<ブロック(BLOCK)の構成例>
次に、図19を用い、メモリセルアレイ11を構成するブロック(BLOCK)の構成例について説明する。ここでは、図18中の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方向に延出するビット線BLに接続される。
ワード線WL0〜WL7は、WL方向に延び、WL方向の複数のメモリセルの制御ゲート電極CGに共通に接続される。選択ゲート線SGSは、WL方向に延び、WL方向の複数の選択トランジスタS1に共通に接続される。選択ゲート線SGDも、WL方向に延び、WL方向の複数の選択トランジスタS2に共通に接続される。
また、ワード線WL0〜WL7毎にページ(PAGE)が存在する。例えば、図中の破線で囲って示すように、ワード線WL7には、ページ7(PAGE7)が存在する。このページ(PAGE)毎に、データ読み出し動作、データ書き込み動作が行われるため、ページ(PAGE)はデータ読み出し単位であり、データ書き込み単位である。
<セルアレイの構成例>
次に、図20を用い、メモリセルアレイ11の構造を示す。
(a)に示すように、メモリセルアレイ11内部は、ノーマルブロック11−1、秘匿ブロック11−2、ロムブロック11−3、ロムヒューズブロック11−4、保護ブロック11−5等の上記複数のブロック(BLOCK)から構成される。各ブロックは、上記のように、複数のページから構成される。通常、データの読み出しや書き込みはページ単位で行い、消去はブロック単位で行われる。
ノーマルブロック11−1は、上記のように、データの書き込み、読み出し等いずれも許可され、通常のデータ保持用に用いられる。ノーマルブロックは、上述した読み書き可能領域11−1に対応する。ブロック数は特に限定されない。
秘匿ブロック11−2及びロムブロック11−3は、上記のような認証動作に適用される。秘匿ブロック11−2は、上述した秘匿領域11−2に対応する。ロムブロック11−3は、上述したロム領域11−3に対応する。何れもブロック数は特に限定されない。
(b)に示すように、本実施形態では、ロムブロック11−3のメモリ空間には、読み出し専用データが更に記録される。
(c)に示すように、本実施形態では、秘匿ブロック11−2のメモリ空間には、秘匿データが更に記録される。
(d)に示すように、本実施形態では、保護ブロック11−5のメモリ空間には、後述する認証機能により利用される保護データが更に記録される。
ロムヒューズブロック11−4は、例えば、NAND型フラッシュメモリ10の動作制御用のパラメータ保持等に用いられる。
<ロムブロック内の読み出し専用データ>
次に、図21を用い、ロムブロック11−3内の読み出し専用データについて説明する。
(a)に示すように、ロムブロック11−3のメモリ空間のあるページには、読み出し専用データが記録されている。ここで、読み出し専用データAからZの系列とした場合、本図ではデータのエラー訂正を目的にした(b−1)−(b−3)の3つの例を示す。
(b−1)に示すように、第1のデータパターン1は、同一のデータ(A、A、、、B、B、、、)を繰り返し記録する例である。この場合、繰り返し読み出し専用データをホスト装置20が読み出し、ホスト装置20等が有するエラー訂正部において、多数決判定を行うことで、エラー訂正が可能である。または、繰り返し読み出し専用データをコントローラ19が読み出し、コントローラ19等が有するエラー訂正部において、多数決判定を行うことで、エラー訂正が可能である。または、繰り返し読み出し専用データをNAND型フラッシュメモリ10が有するエラー訂正部において、多数決判定を行うことで、エラー訂正が可能である。例えば、繰り返し回数は16回程度以上あることが望ましい。
(b−2)に示すように、第2のデータパターン2は、各データ(A、B、、、)とその反転データ(Aの反転、Bの反転、、、)からなる相補データペアを繰り返し記録する例である。この場合、繰り返し読み出し専用データをホスト装置20が読み出し、ホスト装置20等が有するエラー訂正部において相補データペアに配慮した多数決判定を行うことで、エラー訂正が可能である。または、繰り返し読み出し専用データをコントローラ19が読み出し、コントローラ19等が有するエラー訂正部において相補データペアに配慮した多数決判定を行うことで、エラー訂正が可能である。または、繰り返し読み出し専用データをNAND型フラッシュメモリ10が有するエラー訂正部において相補データペアに配慮した多数決判定を行うことで、エラー訂正が可能である。
ここで、相補データペアとして繰り返し記録する理由は、NAND型フラッシュメモリ10のエラーモードによる。NAND型フラッシュメモリ10はメモリセルMCに対して所定電圧を印加することによってフローティングゲートFGに電子を注入し、データの書き込みを行う。データの読み出しは当該メモリセルMCのフローティングゲートFGに電子が存在しているか否かによって変化する閾値電圧を用いて行う。データの消去は書き込みと逆方向に電圧を印加し、フローティングゲートFGから基板へ電子を引き抜くことで実行する。データ読み出し、書き込み、消去の動作に伴う電圧印加量や電圧印加ゲートは各々異なるが、いずれにおいてもメモリセルMCにおいて電圧を印加する。この原理に起因して、NAND型フラッシュメモリ10の代表的なエラーモードとして、リード・プログラムディスターブ、データリテンションがある。リード・プログラムディスターブは、自身若しくは隣接のページを繰り返し読み出す、若しくは隣接ページに書き込むことによって、フローティングゲートFGにおける電子量が変化することデータが変化するエラーモードである。このため弱書き込みに近い状態となり、一般に閾値電圧が増加する。データリテンションとは、一度書き込んだページを長時間放置することによって、フローティングゲートに保持されていた電子が抜け落ちることにより、データが変化するエラーモードである。このため、弱消去に近い状態となり、一般に閾値電圧が低下する。すなわち、これら不良モードにおいては全般的に増加するか、低下するかの傾向があることから、データは同一方向にエラーする可能性が高い。
そこで、(b−2)に示すように、相補データとして記録することにより、仮にデータが1(未記録状態)であった場合その反転データは0(記録状態)であることから、リード・プログラムディスターブにおいては両データとも0方向に移行し、データリテンションにおいては逆に1方向に移行する。このため、少なくともエラーが発生しているか否かは相補データである方が判別しやすい。この場合、例えば、相補データペアとして少なくとも8回程度の繰り返しがあることが望ましい。
(b−3)に示すように、第3のデータパターン3は、読み出し専用データ(A、B、、、Z)に更に誤り訂正符号を用いる例である。ここで、誤り訂正符号としては、NAND型フラッシュメモリ10のエラー発生形式がビット単位でのランダムエラーであることから、ランダムビットエラーが訂正可能な例えば、BCH符号やLDPC符号等が望ましい。
ここで、第1乃至第3のデータパターンのいずれの例においても、各データはランダマイズされていてもよい。ランダマイズとは、データの偏りをなくすために、発生させたランダム系列と記録するデータとの排他的論理和をとる等の方法で、記録するデータをランダム化することである。ランダム系列の発生方法としては、M系列等を用いてもよい。
加えて、第1乃至第3のデータパターンのいずれの例においても、各データは2値状態として記録されていてもよい。2値状態とは、一つのメモリセルにおける閾値電圧を所定の1レベルを基準にして高いレベルに属するか低いレベルに属するかを定めてデータを記録する方法であり、1メモリセル当たり1ビットの情報を保持することができる。このような記録方法は一般にSLC(Single Level Cell)記録と呼ぶ。一方で、一つのメモリセルにおける閾値電圧を所定の複数レベルを基準にして、どのレベルに属するかを定めてデータを記録する方法であり、1メモリセル当たり複数ビットの情報を保持することができる。前記属するレベルを例えば、4つ設けてデータを記録する場合、1メモリセル当たり2ビットの情報を保持することができる。このような記録方法は一般にMLC(Multi Level Cell)記録と呼ばれる。MLC記録は1セルあたりの記録容量が多いため、より高い記録密度を実現できるが、一方で閾値電圧のずれに対して記録データ変化が比較的おこりやすい。このことから、前記ロムブロック11−3に記憶される読み出し専用データは、通常データよりも1セルあたりのビット数を少なく記録する方が望ましい。例えば、1セルあたりのビット数が2ビットで構成される4 Level記録のMLCである場合、ROMデータはSLC記録の方が望ましい。また、1セルあたりのビット数が4ビットで構成される8 Level記録のMLCである場合、ROMデータは1セルあたりのビット数が2ビットで構成される4 Level記録のMLC若しくはSLC記録の方が望ましい。
<ECCの構成例>
次に、誤り訂正符号化(ECC:Error Correcting Code)の構成例について説明する。
ここで、上記図21で示した、第1乃至第3のデータ構造は、厳密には異なるものの、元となるデータに対して冗長語を付与しているという意味合いでは、広義には訂正符号化ECCととれる。そのため、ここでは、いずれのデータ構造においてもデータと、それに付与された訂正符号と称する。ホスト装置20、コントローラ19、若しくはNAND型フラッシュメモリ10の少なくともいずれかが対応する訂正機能を有する必要がある。
図22で示す第1の例は、ホスト装置20が訂正機能(ECC decode)90を有する例である。この場合、コントローラ19及びNAND型フラッシュメモリ10は、訂正処理を行わず、符号付きのデータ(Data)をホスト装置20に渡し、ホスト装置20は訂正機能(ECC decode)90により訂正処理を行い、所定のデータ(Data)を生成する。
図23で示す第2の例は、コントローラ19が、訂正機能(ECC decode)90を有する例である。この場合、NAND型フラッシュメモリ10は、訂正処理を行わず、コントローラ19は訂正処理を行い、訂正済みのデータ(Data)をホスト装置20に渡す。
図24で示す第3の例は、NAND型フラッシュメモリ10が、訂正機能(ECC decode)90を有する例である。この場合、NAND型フラッシュメモリ10は訂正処理を行い、訂正済みのデータ(Data)をコントローラ19を経由してホスト装置20に渡す。
図25で示す第4の例は、コントローラ19及びホスト装置20の両方が訂正機能90−1、90−2を有する例である。この場合は、まず付与されている訂正符号が2重構造をとっており、内符号(Inner code)及び外符号(Outer code)のいずれかを各々コントローラ19とホスト装置20とが訂正処理を行う。
なお、上記の場合に限らず、NAND型フラッシュメモリ10、コントローラ19、ホスト装置20は、各々自身の訂正機能に応じて協調しつつ訂正を行うことが可能である。
<秘匿ブロック11−2内の秘匿データ>
次に、図26を用い、秘匿ブロック11−2内の秘匿データの保持状態の例を説明する。
(a)に示すように、秘匿ブロック11−2内のメモリ空間には、ページに秘匿データが記録されている。ここで、秘匿データをAからZの系列とした場合、本図では3つの例を示す。
(b−1)に示すデータパターン1では、複数の秘匿データ(A、A、、、B、B、、、)及びアクセス制御パターンB1を記憶する。
(b−2)に示すデータパターン2では、複数の秘匿データ(A、A、、、B、B、、、)とその反転データ、及びアクセス制御パターンB2を記憶する。
(b−3)に示すデータパターン3では、複数の秘匿データ(A、B、、、、Z)、エラー訂正符号、及びアクセス制御パターンB3を記憶する。
各例における目的の一つは、同ようにエラー訂正である。他の目的は秘匿ブロック11−2若しくは当該ブロック11−2内のページに対する読み出し、書き込み、消去に関わる制御をおこなうことである。当該領域は秘匿データを記録していること、また前述の認証回路17においてNAND型フラッシュメモリ10の内部でのみ利用する情報を保持することから、外部からの読み出し、書き込み、消去に関わる動作は全て禁止しておく必要がある。一方で、NAND型フラッシュメモリ10の製造初期段階においては、同領域は未記録であることから、製造のいずれかの段階において秘匿データを記録しなければいけない。更に、NAND型フラッシュメモリ10のメモリセルの特性として、メモリセルの初期状態ではデータ保持性能が不十分である場合があるため、当該メモリセルがデータを仕様通りに保持できるか否かを検査するために、読み出し、書き込み、消去の動作をさせる必要がある。
そこで、同領域11−2に関し、製造段階においては読み出し、書き込み、消去が可能であるが、製造完了後の出荷時においては、同領域は読み出し、書き込み、消去の全てを禁止しておく必要がある。この状態変更を行うための情報として、当該領域11−2にアクセス制御パターンB1、B2、B3を記録する。
アクセス制御パターンB1、B2、B3は、ページ毎に記録されていてもよいし、ブロック内の先頭ページのみに記録されていてもよい。また、ページ内でのアクセス制御パターンB1、B2、B3の記録位置は、一般データ領域であってもよいし、冗長領域であってもよい。ここで、冗長領域とはコントローラ等が訂正符号の付与に利用する領域や、若しくはNANDフラッシュメモリ10が内部的なページ毎のステータス等を示すための情報を記録するのに利用する領域等である。
秘匿データやアクセス制御パターンB1、B2、B3においても、ROMデータと同ように2値(SLC)モードで記録される方が望ましい。
次に、図27を用い、アクセス制御パターンの構成例を示す。
まず、アクセス制御パターンは、エラーによる損失を防ぐため、少なくとも複数のビットから構成されている必要がある。
一つ目の例のアクセス制御パターンB1は、複数の制御フラグビットAからZを設け、これら制御フラグビットを所定パターンとしておく。NAND型フラッシュメモリ10は、当該領域に対する読み出し、書き込み、消去等のアクセス要求をホスト装置20より受けた場合、当該領域11−2のアクセス制御パターンB1と所定パターンとの照合を行い、両者の一致率が所定率以上となった場合にアクセスを禁止する、という構成をとる。
二つ目の例のアクセス制御パターンB2は、制御フラグを繰り返し記録しておく方法である。これは、所定パターンがエラーする確率を低下させる上で有効である。
三つ目の例のアクセス制御パターンB3は、各制御フラグと各制御フラグの反転データを記録しておく方法である。前述の通り、本方法もエラーする確率を低下させる上で有効である。
<アクセス制御パターンの利用例>
次に、アクセス制御パターンの検知方法及び検知結果の利用方法を説明する。
図28に示すように、メモリセルアレイ11中の秘匿領域11−2から読み出される上記アクセスパターンは、ロジックコントロール回路85内のパターン検知回路91に入力される。
パターン検知回路91は、入力されるアクセス制御パターンに対し、パターン認識処理を行い、一致率が所定確率以上であるか否かを判定し、アクセス制御をおこなう。一致率は、NAND型フラッシュメモリ10のメモリセルアレイにおけるエラー確率と、アクセス制御パターンのデータ量から計算され、例えば、誤検出確率が少なくとも10−3以下となるように設定することが望ましい。パターン検知回路91は、検知結果に基づき、データ読み出し、データ書き込み、データ消去を制御するためのイネーブル信号をシーケンス制御回路88に入力する。
シーケンス制御回路88は、上記検知結果のイネーブル信号に従い、データ読み出し、データ書き込み、データ消去を制御する。
<テストフロー>
次に、図29に沿って、上記アクセス制御パターン(例えば、B1−B3)を用いたNAND型フラッシュメモリ10の製造工程の検査フローを説明する。
(Step S71、S72)
製造工程において、まず、アクセス制御パターンに該当しないデータを、秘匿領域11−2に記録し、テストを行う。この段階では、秘匿領域11−2のアクセスは許可されている。
ただし、データ読み出し、データ書き込み、データ消去のすべてのアクセスを許可するのか、データ書き込み及びデータ消去を許可するか等、によりセキュリティーレベルが異なる。高いセキュリティーレベルが必要な場合、仮にアクセス制御パターンにより全てのアクセスを禁止したとしても、アクセス制御パターンのデータが劣化することにより、誤ったアクセス許可をする可能性がある。この場合、秘匿データが読みだされる恐れがあるため、このステップS71の際のテスト工程においても、データ読み出しを禁止する、すなわちNAND型フラッシュメモリ10のハードワイヤードレベルにおいて読み出しを当該領域にはそもそも許可しない、という選択も可能である。
または、アクセス制御パターンのデータ劣化耐性が十分である場合、例えば、アクセス制御パターンが多数回繰り返し記録されている、強固な誤り訂正符号が付与されている場合等においては、テストの利便性を確保するために、データ読み出しを含めた制御をアクセス制御パターンによっておこなってもよい。この場合、先に示した誤検出確率は更に低く、例えば、10−5以下であることが望ましい。
(Step S73)
続いて、S72の際の所定のテストが完了した後、秘匿領域11−2に秘匿データ及びアクセス制御パターン(B1−B3等)が各々書き込まれる。
(Step S74)
続いて、上記のデータが書き込まれた状態で、NAND型フラッシュメモリ10が出荷される。
<データ消去フロー>
次に、図30に沿って、NAND型フラッシュメモリ10の内部のデータ消去動作を説明する。
(Step S76)
まず、ホスト装置20より消去動作の動作命令が発効されると、NAND型フラッシュメモリ10は、当該命令における選択ブロックアドレスが特定ブロックであるか否かを判定する。
(Step S77)
続いて、選択ブロックアドレスが特定ブロックでない場合(No)、通常通りの消去シーケンスを行う。
(Step S78)
一方、選択ブロックアドレスが特定ブロックの場合(Yes)、秘匿領域11−2からアクセス制御情報(B1−B3等)の読み出しを行う。
(Step S79)
続いて、アクセス制御情報(B1−B3等)のパターン検知を行い、パターン一致率が所定値以上であるか否かを判定する。
(Step S80)
続いて、パターン一致率が所定値以下であった場合(Yes)、通常通りの消去シーケンスを行う。
(Step S81)
続いて、パターン一致率が所定値以上であった場合(No)、消去シーケンスを抜け、データ消去フローを終了する(End)。
なお、本実施形態では、データ消去を一例に挙げたが、同ようにデータ読み出し、データ書き込みにおいても適用可能である。
<作用効果>
第5の実施形態に係る認証装置、被認証装置及び認証方法によれば、少なくとも上記と同様の作用効果(1)乃至(5)を得ることができる。
更に、必要に応じて、本実施形態の構成及び方法を適用することで、信頼性を向上できる点で有効である。
[第6の実施形態(データキャッシュの認証処理への利用の一例)]
第6の実施形態は、データキャッシュの認証処理への利用の一例に関するものである。この説明において、上記実施形態と重複する部分の説明については、省略する。
<データキャッシュ、センスアンプ等の構成例>
図31を用い、第6の実施形態に係るデータキャッシュ、センスアンプ等の構成例について説明する。
図示するように、上記実施形態に係る認証処理のデータキャッシュ12が1コンポーネントとして示される。NAND型フラッシュメモリ10は、メモリセルアレイ11から読み出したページデータを一時的に記憶する、また外部から記録用データとして受領した書き込みページデータを一時的に記憶する、等を目的とした揮発性データキャッシュ12を有する。本実施形態のデータキャッシュ12は、ページバッファ、データバッファ等とも呼ばれ、通常ページサイズ以上の領域を有する。更に、ページデータの読出しや書込み処理の高速化、ランダムページアクセスをするために、データキャッシュはページサイズの複数倍の領域を持つことが多い。
データキャッシュ12は、複数のデータキャッシュA、データキャッシュB、データキャッシュCを備える。各データキャッシュは、メモリセルアレイ11の読出しに用いるセンスアンプ(SA)とデータ線とに各々接続される。
センスアンプSAは、図示しないビット線を介し、メモリセルアレイ11に電気的に接続される。
データキャッシュのうちのDC_Aは、直接データ線とのデータのやり取りが可能であるデータキャッシュである。DC_Aを通じてデータキャッシュ12のデータを、データ線を介してIOへ接続されることにより、NANDチップ10の外部に出力し、NANDチップ10の外部のデータをデータキャッシュにロードすることが可能である。
更に、データキャッシュ12に接続され、データキャッシュ12間の演算を行うための演算器を備える。演算器は、上記実施形態における認証処理に用いるデータ生成器13、14や一方向性回路15等を備える認証回路17に相当する。
また、一時的にデータを格納しておくための内部レジスタ92を備える。
ここで、NAND型フラッシュメモリ10には、データ読出しにおいて、メモリセルアレイ11への読出しコマンドに加え、データキャッシュ12にメモリセルアレイ11から読み出されたデータを読み出すためのコマンドとしてレジスタリードと呼ばれるコマンドがある。
この際、上記認証方法においては、NAND型フラッシュメモリ10内の秘匿ブロック11−2は、秘匿ブロック11−2に記録されている秘匿情報(NKey、SecretID等)をNANDチップ10の外部からのアクセスによって読みだされることがあってはならない。一方で、NAND型フラッシュメモリ10が認証処理を行う場合は、秘匿ブロック11−2に記録されている秘匿情報(NKey、SecretID等)を内部的に読出し、認証処理に用いる必要がある。すなわち、メモリセルアレイ11からデータキャッシュ12への秘匿情報(NKey、SecretID等)の読出しは可能としておく必要がある一方で、データキャッシュ12からNAND型フラッシュメモリ10の外部へのデータ出力を禁止する必要がある。これは、前記のレジスタリードを無効化することに相当する。
そこで、秘匿ブロック11−2が、NAND型フラッシュメモリ10の外部からアクセスされたときのデータ読み出し動作については、通常の読み出し動作と異なる動作をさせる。より具体的には、秘匿ブロック11−2がアクセスされた場合、メモリセルアレイ11からセンスしたデータを、データキャッシュDC_A以外のデータキャッシュDC_B、DC_Cに留め外部への出力ができないようにして、レジスタリードコマンドが効かないように無効化する。一方、アクセスされたブロックが、秘匿ブロック11−2でない場合、通常通り、データキャッシュDC_Aを用いて、データ読み出しを行う。
このように、上記構成によれば、複数種類のデータキャッシュDC_A〜DC_Cを設け、外部からユーザがアクセスできないデータキャッシュDC_B、DC_Cのみで上記認証処理を実行する。そのため、上記認証処理に秘匿情報(NKey、SecretID等)を利用する際に、鍵情報(NKey)等の秘匿情報が外部から不正に読み取られない点で有利である。
<認証処理におけるNAND内部演算フロー1>
次に、図32に沿って、認証処理の過程において、ホスト装置20に対して秘匿ブロック11−2の情報を直接的・間接的にも出力しないためのフローを示す。
(Step S82)
まず、認証処理において、ホスト装置20等のNAND型フラッシュメモリ10の外部からデータが入力されるとする。この入力データは、例えば、上記乱数RNやホスト定数HCj等であり、同データは、データキャッシュDC_Aにロードされる。
(Step S83)
続いて、ホスト装置20から秘匿ブロック11−2等の特別ブロックへアクセスする間接的読み出し要求が行われる。これは、すなわち認証における認証情報の計算要求に該当する。
この要求を受けて、メモリセルアレイ11からリードされた機密ページのデータが読み出される。
(Step S84)
続いて、リードされた機密ページのデータは、データキャッシュDC_Bに格納される。
(Step S85)
続いて、データキャッシュDC_AとデータキャッシュDC_Bのそれぞれに記憶されているデータ間で、上記実施形態で説明した認証処理における演算を演算器(認証回路17)を用いて行う。
(Step S86)
続いて、演算の結果は、データキャッシュDC_Cに格納される。
(Step S87)
ここで、一連のシーケンスを抜けてチップレディとなったときに機密データがデータキャッシュに残っていると、これを外部から読み出されるおそれがある。これを防ぐためにシーケンスを抜ける前に、全てのデータキャッシュDC_A〜DC_Cの情報をリセットしておかなければならない。一方、ホスト装置20は、上記演算の結果をデータキャッシュDC_A〜DC_Cがリセットされた後に得なければならない。
そこで、まず、データキャッシュDC_Cに保持されている演算の結果を、内部レジスタ92にコピーする。
(Step S88)
続いて、全てのデータキャッシュDC_A〜DC_Cのデータをリセットする。
(Step S89)
続いて、内部レジスタ92に退避しておいたデータを、データキャッシュDC_Aに戻す。ここまでの動作が終了すると、NAND型フラッシュメモリ10はこのシーケンスを抜け、レディ状態となる。この際、データキャッシュDC_Aには演算の結果が格納されている。
(Step S90)
続いて、ホスト装置20は、レジスタリードコマンドにより、データキャッシュDC_Aに格納されたデータを得ることが出来る。
<認証処理におけるNAND内部演算フロー2>
次に、図33に沿って、NAND型フラッシュメモリ10内部に乱数生成器(24n)を備えた実施形態のNAND内部演算フローについて説明する。上記図32の場合と異なるのは、NAND型フラッシュメモリ10内部の乱数発生器(24n)で発生した乱数(RNn)を使用する点である。
(Step S91)
まず、認証処理において、ホスト装置20からNAND型フラッシュメモリ10に対して乱数読出し要求が行われると、NAND型フラッシュメモリ10は乱数を生成させ、生成された乱数はデータキャッシュDC_Aにロードされる。
(Step S92)
続いて、ホスト装置20は、レジスタリードコマンドによって、データキャッシュDC_Aの乱数を読み出す。
(Step S93)
続いて、認証処理において、ホスト装置20から例えばホスト定数(HCj)等のデータが、NAND型フラッシュメモリ10に対して入力される。上記データは、データキャッシュDC_Aにロードされる。
更に、ホスト装置20からNAND型フラッシュメモリ10に対してホスト装置20で演算した認証情報が入力される。このデータは、例えばOneway−ID等であり、同データはデータキャッシュDC_Aにロードされる。
(Step S94)
続いて、ホスト装置20から秘匿ブロック11−2にアクセスして、間接的読み出し要求が行われる。これはすなわち認証における認証情報の計算要求に該当する。
すると、メモリセルアレイ11から機密ページのリードがされる。
(Step S95)
続いて、リード結果は、データキャッシュDC_Bに格納される。
(Step S96)
続いて、データキャッシュDC_AとデータキャッシュDC_Bとのそれぞれに記憶されているデータ間で、上記実施形態で説明した認証処理における演算を演算器(認証回路17)を用いて行う。
(Step S97)
続いて、上記演算の結果は、データキャッシュDC_Bに格納される。
(Step S98)
続いて、データキャッシュDC_Aに保持されているホストの演算結果とデータキャッシュDC_Bに保持されているNANDの演算結果とを照合する。
(Step S99)
続いて、上記ステップS98の際の照合において、照合結果の一致が確認された場合、制御パラメータ(890)を更新する。
(Step S100)
続いて、NAND型フラッシュメモリ10は、全てのデータキャッシュDC_A〜DC_Cの情報をリセットする。ここまでの動作が終了すると、NAND型フラッシュメモリ10は、このシーケンスを抜け、レディ状態となる。
(Step S101)
続いて、ホスト装置20は、照合結果を確認するコマンドにより、NANDチップ10の外部にリードアウトされた照合結果を得る。
<秘匿情報の検査方法について>
次に、秘匿情報の検査方法について説明する。
検査フロー
図34に沿って、工場でシリコンが出来上がってから、NAND型フラッシュメモリ10を出荷するまでの過程で、本認証方法に関係する工程を示す。
図示するように、製造工程、テスト、秘匿データ書き込み、出荷の順に工程が進む。
(Step S71、S72)
まず、製造工程が終了すると、所定の検査テストを行って、良品チップ10をウェハから選別する。
(Step S73)
続いて、上記ステップS72の際の通常のテスト工程が終了した後、秘匿データを書き込む工程が行われ、正しく秘匿データが書かれたか否かをテストしなければならない。
一方で、この際、秘匿ブロック11−2から秘匿データを直接読み出すことはできない。なぜなら、当該読出し機能はセキュリティーホールとなる恐れがあるためである。
(Step S74)
続いて、正しく秘匿データが書かれたNAND型フラッシュメモリ10について、出荷を行う。
秘匿情報の間接的読み出し検査フロー
上記ステップS73の際、秘匿ブロック11−2から秘匿データを直接読み出すことは、セキュリティーホールとなる恐れがある観点から、行うことができない。
そこで、図35に沿って、直接データ読出し機能を提供せずに、記録されたデータの確認をするフローを説明する。
(Step S111)
まず、メモリセルアレイ11の秘匿ブロック11−2から、秘匿情報(Nkey等)の情報を読み出す。
(Step S112)
続いて、読み出した秘匿情報(Nkey等)のリード結果を、データキャッシュDC_Bに格納する。
(Step S113)
続いて、NAND型フラッシュメモリ10の外部から、同一の秘匿情報(Nkey等)を、データキャッシュDC_Aに記憶させる。
(Step S114)
続いて、演算器(認証回路17)を用いて、データキャッシュDC_AのデータとデータキャッシュDC_Bのデータとの排他的論理和をとる。
(Step S115)
続いて、排他的論理和の結果を、データキャッシュDC_Cに格納する。
(Step S116)
続いて、データキャッシュDC_Cのデータを検知する。
(Step S117)
この際、データキャッシュDC_Aのデータと、データキャッシュDC_Bのデータとが一致している場合(Yes)にはテストはパス(OK)である。一方、一致していない場合(No)テストはフェイルである。
具体的には、データキャッシュDC_Cには排他的論理和の結果が入っているから、データキャッシュDC_Cのデータが全て“0”の場合(Yes)、テストはパス(OK)である。一方、“1”である場合(No)、フェイルとなる。
まず、データキャッシュDC_Cのデータがすべて“0”であるかどうかの検知を行う。ここで、すべてのビットが“0”となっていれば(Yes)、テストはパスとなる。そうでなかった場合(No)、次のステップS118に続く。
(Step S118)
続いて、すべてのビットが“0”でない場合(No)、“1”の数を数える。この際、“1”の数が規定の数以下である場合(Yes)、多数決誤り訂正や訂正符号による誤り訂正が可能であると判断されるのでテストはパスとなる(OK)。一方、“1”の数が規定数以上であった場合(Mo)、テストはフェイルとなる(NG)。
ここで、上記実施形態に記載した、特定ブロックへのアクセス制御に認証を用いる方法を用いて、秘匿ブロック11−2に記録された秘匿情報の代わりに、NAND型フラッシュメモリ10にハードワイヤードで構成した第2の秘匿情報を別途持っておき、同第2の秘匿情報によって秘匿ブロック11−2へのアクセス制御を行うという方法も可能である。この場合、データ読み出しだけではなく、データ書き込みやデータ消去等も第2の秘匿情報に基づく認証によって制御してもよい。
<作用効果>
第6の実施形態に係る認証装置、被認証装置及び認証方法によれば、少なくとも上記と同様の作用効果(1)乃至(5)を得ることができる。
更に、本実施形態では、秘匿ブロック11−2がアクセスされた場合、メモリセルアレイ11からセンスしたデータを、データキャッシュDC_A以外のデータキャッシュDC_B、DC_Cに留め外部への出力ができないようにして、レジスタリードコマンドが効かないように無効化する。一方、アクセスされたブロックが、秘匿ブロック11−2でない場合、通常通り、データキャッシュDC_Aを用いて、データ読み出しを行う。
このように、上記構成によれば、複数種類のデータキャッシュDC_A〜DC_Cを設け、外部からユーザがアクセスできないデータキャッシュDC_B、DC_Cのみで上記認証処理を実行する。そのため、上記認証処理に秘匿情報(NKey、SecretID等)を利用する際に、鍵情報(NKey)等の秘匿情報が外部から不正に読み取られない点で有利である。
加えて、上記ステップS88、S100に示すように、Busy状態からReady状態に戻る前に、データキャッシュDC_AD〜C_C中の鍵情報等の秘匿情報を全て消去する。そのため、安全性を確保することが可能である。
[第7の実施形態(コマンドマッピングの一例)]
第7の実施形態は、コマンドマッピングの一例に関するものである。この説明において、上記実施形態と重複する部分の説明については、省略する。
<Read,Writeコマンドと親和性の良いコマンドマッピング例>
ここで、NAND型フラッシュメモリ10は、読出し用のコマンドとして、例えば、00h−Address−30hにより読出し対象のブロック及びページアドレスを指定する。Address部分はブロックアドレス、ページアドレス、更にページ内のバイト位置を示すカラムアドレスから構成されることが多い。カラムアドレス部分の入力データは無視されることもあれば、ページ読出し後のバイトポインタの設定に用いられて当該バイト位置からの読出しに用いられることもある。コマンド30hの入力後にNAND型フラッシュメモリ10は読出しのためのBusy状態となり、読出し完了後にReady状態へと遷移する。Ready状態へ遷移後、データ出力(Dout)が可能となり、REやDQS等を供給することでデータを読み出すことが可能となる。また、読み出したページ内で読み出すバイト位置を変更する場合は、05h−Address−E0hにて読み出したいバイト位置に相当するカラムアドレスを設定する。
データ書き込み(記録)用のコマンドとしては、80h−Address−Data input−10hにより、書き込み対象のブロック及びページアドレスを指定する。ここで、Address部分はブロックアドレス、ページアドレス、更にページ内のバイト位置を示すカラムアドレスから構成されることが多い。カラムアドレス部分の入力データは無視されることもあれば、ページ書き込み用データ入力におけるバイトポインタの設定に用いられて当該バイト位置からの書き込みデータ入力に用いられることもある。コマンド10h入力後、NAND型フラッシュメモリ10は、書き込みのためのBusy状態となり、書き込み完了後Readyへと遷移する。
上記が、NAND型フラッシュメモリ10で広く用いられているコマンド体系である。上記実施形態に係る認証機能を実装する場合に、コマンドシーケンスをできるだけ共通化させることが回路の実装面積を極小化する上で好ましい。しかしながら、認証機能はセキュリティを要する分野で利用されることから、機能利用者を限定した方が望ましいという視点もある。
そこで、図36は、上記観点を考慮して、NAND型フラッシュメモリ10の上記Read,Writeコマンドと親和性の良いコマンドマッピング例を示している。
上記一般的なコマンドシーケンスと異なる点は、Security Prefixの入力コマンドを当該コマンドの前に付与している点である。ここで、Security Prefixは、単バイトで構成する場合、複数バイトで構成する場合が考えられる。コマンドSecurity Prefixは、当該認証機能を必要とする利用者にのみ開示される。利用者管理の観点では、コマンドSecurity Prefixは、複数バイトで構成されるほうが望ましい。
(a)で示すように、データ読出しコマンドシーケンスと同ように、IO端子に、順次、コマンド(Security Prefix)−コマンド(00h)−アドレス(ADD)−コマンド(30h)により読出し対象のブロック及びページアドレスが指定される。ここで、Addressに設定された値を更に利用者管理用に特別な値とすることも可能であり、若しくは内部にて無視される値とすることも可能である。
続いて、コマンド(30h)の入力後にNAND型フラッシュメモリ10は、読出しのためのBusy状態となり、読出し完了後にReady状態へと遷移する。Ready状態へ遷移後、データ出力(Dout)が可能となり、REやDQS等を供給することで、インデックス情報i,v、固有の暗号化秘密識別情報(E-SecretID)、共通に付される鍵管理情報(FKB)等のデータを読み出すことが可能となる。
(b)で示すように、データ書き込みコマンドシーケンスと同ように、IO端子に、順次、コマンド(Security Prefix)−コマンド(80h)−アドレス(ADD)−データ(Din 32B)−コマンド(10h)を入力することにより、対象データの入力を行う。ここで、Addressに設定された値を更に利用者管理用に特別な値とすることも可能であり、若しくは内部にて無視される値とすることも可能である。ここで、本シーケンスは書き込みシーケンスと共通箇所が多いものの、実際にはセルアレイへのデータ書き込みは必要としなく、NAND型フラッシュメモリ10が認証処理の計算に必要とするデータ入力のために使用される。認証処理の計算に必要とするデータの例としては、ホスト装置20の固有情報HCiや乱数等がある。
続いて、認証処理の計算が終了するまでの期間Busy状態となり、計算が終了し、かつ上記のように、データキャッシュDC_A〜DC_C中のセキュリティーデータが全てクリアされた後に、Ready状態へと遷移する。
(b)で示すように、Ready状態へと遷移した後、ホスト装置20は、IO端子に、順次、コマンド(05h)−アドレス(ADD)−コマンド(E0h)を入力し、認証処理の計算結果が保持されているカラムアドレスを指定することで結果の取得が可能となる。認証処理の計算結果の例としてはOneway−ID等がある。
<Set / Get featureコマンドと親和性の良いコマンドマッピング例>
次に、図37に沿って、本認証機能を適用したNAND型フラッシュメモリ10のコマンド構成の別の例を示す。
NAND型フラッシュメモリ10には、当該メモリ10の機能を有効化するためのSet Featureと呼ばれるコマンド、及び、当該メモリ10の機能の有効化・無効化状況を読み出すためのGet Featureと呼ばれるコマンドがある。これらのコマンドは、例えば、高速データ転送用の相補信号である/RE、/WE、/DQS等の入力を有効化するため等に用いられる。
Set Featureは、EEh−Address―Data inputにて機能の設定を行う。ここで、Addressには機能番号が設定され、Data inputには当該機能番号にて示される機能のパラメータが入力される。その後、機能有効化のためのBusy期間があり、有効化の後、Readyへと遷移する。
Get Featureは、EFh−Address―Data outputにて、機能の有効化・無効化状況の読出しを行う。ここで、Addressには機能番号が設定され、Data outputには当該機能番号にて示される機能のパラメータが出力される。AddressとData outputとの間には、内部での設定パラメータ読出しのためのBusy期間が存在する。
本実施形態は、これらSet Feature、Get Featureを流用したコマンドシーケンスの例である。
(a)に示すように、コマンドシーケンスは、上記と同様であるが、指定するAddressが異なる。ここで、Addressは単バイトで構成する場合、複数バイトで構成する場合が考えられる。Addressは当該認証機能を必要とする利用者にのみ開示される。利用者管理の観点では、Addressは複数バイトで構成されるほうが望ましい。Data output及びData inputの例としては、上記図37にて示したものと同様のインデックス情報i、vである。
(b)に示すように、Data input用のコマンド(EEh)−アドレス(ADD)−データ(Din)のコマンドシーケンスは、同時に認証処理の実行を誘発し、Busy期間中にNAND型フラッシュメモリ10は認証処理の計算を行う。
続いて、計算が終了し、かつセキュリティーデータがデータキャッシュよりクリアされた後に、Ready状態へと遷移する。Ready状態へと遷移した後、ホスト装置20は、Oneway−IDを読み出すことが可能である。
<作用効果>
第7の実施形態に係る認証装置、被認証装置及び認証方法によれば、少なくとも上記と同様の作用効果(1)乃至(5)を得ることができる。
更に、本実施形態では、図36に示したように、NAND型フラッシュメモリ10のコマンドシーケンスとできるだけ共通化させることできる。そのため、セキュリティを考慮しつつ、回路の実装面積を極小化できるため、上記実施形態に係る認証機能を実装する場合により有効である。
また、図37に示したように、当該メモリ10の機能を有効化するためのSet Featureと呼ばれるコマンド、及び、当該メモリ10の機能の有効化・無効化状況を読み出すためのGet Featureと呼ばれるコマンドに対しても、必要に応じて共通化させて適用が可能である。
ここで、Busy状態からReady状態へ戻る前のタイミングで、データキャッシュDC_A〜DC_Cのデータを全てクリアする点は、上記と同様である。
[第8の実施形態(メモリカード、コンテンツ保護、HDDへの一応用例)]
第8の実施形態は、メモリカード、コンテンツ保護、HDDへの一応用例の関するものである。この説明において、上記実施形態と重複する部分の説明については、省略する。
メモリカードへの応用例
図38を用い、本認証機能を適用したNAND型フラッシュメモリ10を搭載したメモリカードの構成例を示す。
図示するように、メモリカード55は、NANDフラッシュメモリ10の動作を制御する機能、ホスト装置20側とのインターフェースを制御する機能等を有するコントローラ19を搭載する。
NANDパッケージ内に積層された複数のNAND型フラッシュメモリチップ10(MCP1)、(MCP2)を少なくとも1つ以上有する。ここで、NANDパッケージ内の少なくとも1つ以上のNANDフラッシュメモリチップ10が、上記実施形態に係る認証機能・被認証機能を有すれば良い。換言すると、NANDパッケージ内のNANDフラッシュメモリチップ10の全てが、上記実施形態における認証機能・被認証機能を有していなくてもよい。更に、メモリカード55内に搭載されたNANDパッケージの全てが実施形態における認証機能・被認証機能を有していなくともよい。明確化のために、本実施形態のNAND型フラッシュメモリ10は、NANDパッケージを指すこともあれば、NANDフラッシュメモリチップを指すこともある。
メモリカード55内のコントローラ19は、NANDパッケージ内のNAND I/Fを経由して、上記実施形態に係る認証機能・被認証機能を制御する機能を有する。ここで、複数のNANDパッケージのいずれか一つのみの認証機能・被認証機能を制御する機能であってもよいし、複数のNANDパッケージの各々の認証機能・被認証機能を制御する機能であってもよい。更に、NANDパッケージ内のいずれか一つのNANDフラッシュメモリチップ10の認証機能・被認証機能を制御する機能であってもよいし、NANDパッケージ内の各々のNANDフラッシュメモリチップ10の認証機能・被認証機能を制御する機能であってもよい。
コンテンツ保護への応用例1
図39を用い、上記認証機能を適用したNAND型フラッシュメモリ10を搭載したメモリカード55のコンテンツ保護への応用例1を示す。簡略化のため、本発明明細書内で既に説明した内容については説明を割愛する。
メモリカード55内には、コントローラ19、NANDパッケージ(MCP1)、(MCP2)が搭載されている。ここで、NANDパッケージ(MCP1)、(MCP2)は、上記実施形態に係る認証機能・被認証機能を有する。
ホスト装置20は、上記実施形態にて示した認証処理により、NAND型フラッシュメモリ10のNANDパッケージ(MCP1)、(MCP2)は、秘密識別情報Secret IDの正当性を確認する。
正当性確認後、ホスト装置20は、秘密識別情報Secret IDに基づいて、第2の実施形態において説明した方法を用い、EMIDの計算処理を行う。
ここで、NANDパッケージ(MCP2)は、コンテンツ(Content)書き込み時に、EMIDとコンテンツを関連付けるためのBinding Dataを生成する。Binding Dataには、コンテンツを暗号化・復号化するための鍵に関わるデータを含んでおくことが望ましい。Binding Dataは、カード55内に搭載されたNANDパッケージ(MCP1)、(MCP2)のいずれかに記録される。ここで、Binding Dataが記録されるNANDパッケージは、認証処理に用いた秘密識別情報Secret IDを有するNANDパッケージ(MCP1)であってもよいし、他のNANDパッケージ(MCP2)であってもよい。図39では後者の例を示しているがこれに限られない。また、コンテンツの記録位置も同ように、いずれのNANDパッケージであってもよい。
コンテンツ(Content)再生時には、EMIDとコンテンツを関連付けるためのBinding Dataと秘密識別情報Secret IDとを認証処理して得られたEMIDと、コンテンツの関連性を計算・確認して、関連性が確認された場合にのみコンテンツを再生する。
上記構成により、コンテンツ(Content)は、秘密識別情報Secret IDと関連付けられる。そのため、同一の秘密識別情報Secret IDを有さない他のメモリカードにコンテンツやBinding Dataを不正に複製しても、コンテンツの再生ができなくなる効果が得られる点で、有利である。
HDDへの応用例1
図40を用い、本認証機能を適用したNAND型フラッシュメモリ10を利用したハードディスクドライブ(HDD)の構成例1を示す。
図示するように、HDDパッケージ200には、少なくとも一つ以上のNANDパッケージ(MCP1)を搭載し、内少なくとも一つのNANDパッケージは上記実施形態に係る認証機能・被認証機能を有する。
また、HDDパッケージ200には、少なくとも一つのHDD210を搭載する。
更に、NANDパッケージ(MCP1)の制御、HDD210の制御、ホスト装置とのインターフェースの制御等を実行するブリッジコントローラ190を搭載する。ブリッジコントローラ190は、単独の集積回路から構成されていてもよいし、複数の集積回路から構成されていてもよい。また、集積回路とファームウェアの組み合わせにより機能を実現してもよい。
NANDパッケージ(MCP1)内の認証機能・被認証機能は、ブリッジコントローラ190を経由してホスト装置であるHDD210へと提供される。
HDDへの応用例2
図41を用い、本認証機能を適用したNAND型フラッシュメモリ10を利用したハードディスクドライブ(HDD)の別の構成例を示す。
図示するように、HDDパッケージ200には、上記図38にて説明したメモリカード55を接続するためのメモリカードソケット550を有する。
また、HDDパッケージ200には、少なくとも一つの以上のHDD210を搭載する。更に、メモリカード55の制御、HDD210の制御、ホスト装置とのインターフェースの制御等を実行するブリッジコントローラ190を搭載する。ブリッジコントローラ190は、単独の集積回路から構成されていてもよいし、複数の集積回路から構成されていてもよい。また、集積回路とファームウェアの組み合わせにより機能を実現してもよい。
メモリカード55内の認証機能・被認証機能は、ブリッジコントローラ190を経由してホスト装置であるHDD210へと提供される。
コンテンツ保護への応用例2
図42にて、本認証機能を適用したNAND型フラッシュメモリ10を利用したハードディスクドライブ(HDD)のコンテンツ保護への応用例を示す。本実施形態は、図41にて示したHDD構成を例に取っているが、図40にて示したHDD構成にも適用可能である。
図示するように、HDDパッケージ200A、200B内には、ブリッジコントローラ190A、190B、メモリカードソケット550A、550B、HDD210A、210Bがそれぞれ搭載されている。
ここで、メモリカード55は、上記実施形態のいずれかの認証機能・被認証機能を有する。ホスト装置20は、上記実施形態にて示した認証処理によりNAND型フラッシュメモリ10の秘密識別情報Secret IDの正当性を確認する。正当性確認後、ホスト装置20は、秘密識別情報Secret IDに基づいて第2の実施形態にて示した方法にて、EMIDの計算処理を行う。
コンテンツ(Cntent)書き込み時には、EMIDとコンテンツを関連付けるためのBinding Dataを生成する。Binding Dataにはコンテンツを暗号化・復号化するための鍵に関わるデータを含んでおくことが望ましい。Binding Dataは、メモリカード55、若しくは、HDD210A、210Bのいずれかに記録される。ここでは、HDD210A、210Bに記録される例を示しているがこれに限られない。また、コンテンツの記録位置も同ように、カード55若しくはHDD210A、210Bのいずれであってもよい。
コンテンツ(Content)再生時には、EMIDとコンテンツを関連付けるためのBinding Dataと、秘密識別情報Secret IDを認証処理して得られたEMIDと、コンテンツの関連性を計算・確認し関連性が確認された場合にのみコンテンツを再生する。
本実施形態は、カードソケット550Aを経由してメモリカード55内のNANDフラッシュメモリ10が有する認証機能・被認証機能を利用する例であるが、図40に示したHDDが直接NANDパッケージを搭載し、制御する構成においても適用可能である。この場合、メモリカードをNANDパッケージに置き換えればよい。
更に、カードソケット550A、550Bを有するHDDについて適用可能な応用例として、同様のHDDパッケージが複数あった場合、両HDDパッケージにコンテンツやBinding Dataを複製することで、カードを移動するのみでいずれのHDDに記録されたコンテンツを再生することも可能となる。ここで、Binding Dataは、HDDでなく、カードに記録されていてもよいし、または両方に記録されていてもよい。
本構成により、コンテンツ(Content)は、メモリカード55若しくはNANDパッケージ内の秘密識別情報Secret IDと関連付けられるため、同一の秘密識別情報Secret IDを有さないメモリカード55にコンテンツやBinding Dataを不正複製しても、コンテンツの再生ができなくなる効果が得られる。
更に、図41にて示したHDDパッケージがメモリソケットを有する例においては、メモリカードのみを移動することで複数のHDDに記録されたコンテンツを再生することが可能となる。これは一般にメモリカードに比較し、HDDは筐体が大きく、据え置き用途等で用いられることもあることから、可搬性上有利である。
コンテンツ保護への応用例3
図43を用い、本認証機能を適用したNAND型フラッシュメモリ10を利用したハードディスクドライブ(HDD)のコンテンツ保護への応用例3を説明する。本実施形態は、ホスト装置20が、メモリカードソケット550を有し、外付けHDD210を利用する例である。
図示するように、HDDパッケージ200内には、ブリッジコントローラ190、HDD210が搭載されている。
ホスト装置20には、メモリカードソケット550に挿入されるメモリカード55内に備える認証機能、カード制御機能が搭載されている。メモリカード55には、上記実施形態いずれかに係る認証機能・被認証機能を有するNANDパッケージが搭載されている。
上記構成において、ホスト装置20は、上記実施形態にて示した認証処理によりNAND型フラッシュメモリ10の秘密識別情報Secret IDの正当性を確認する。
正当性確認後、ホスト装置20は、秘密識別情報Secret IDに基づいて、上記第2の実施形態に係る方法を用い、EMIDの計算処理を行う。
コンテンツ(Content)書き込み時には、EMIDとコンテンツを関連付けるためのBinding Dataを生成する。Binding Dataには、コンテンツを暗号化・復号化するための鍵に関わるデータを含んでおくことが望ましい。Binding Dataは、メモリカード55、若しくは、HDD210のいずれかに記録される。ここでは、後者の例を示しているがこれにと限られない。また、コンテンツの記録位置も同ように、カード55若しくはHDD210のいずれであってもよい。
コンテンツ(Content)再生時には、EMIDとコンテンツを関連付けるためのBinding Dataと、秘密識別情報Secret IDを認証処理して得られたEMIDと、コンテンツの関連性を計算・確認し関連性が確認された場合にのみコンテンツを再生する。
本実施形態は、カードソケット550を経由してメモリカード55内のNANDフラッシュメモリ10が有する認証機能・被認証機能を利用する例であるが、ホスト装置20は、直接NANDパッケージを搭載し、制御する構成においても適用可能である。この場合、前記のメモリカード55をNANDパッケージに置き換えればよい。
更に、カードソケット550を有するホスト装置20について適用可能な応用例として、同様のホスト装置20が複数あった場合、メモリカード55とHDDパッケージ200を別のホスト装置20と接続することで、いずれのホスト装置20でもコンテンツを再生することも可能となる。ここで、コンテンツやBinding Dataは、HDD210でなく、カード55に記録されていてもよいし、または両方に記録されていてもよい。
本構成により、コンテンツはメモリカード55若しくはNANDパッケージ内の秘密識別情報Secret IDと関連付けられるため、同一の秘密識別情報Secret IDを有さないメモリカードにコンテンツやBinding Dataを不正複製しても、コンテンツの再生ができなくなる効果が得られる。更に、メモリカード55とHDD210を移動することで複数のホスト装置でコンテンツを再生することが可能となる。
コンテンツ保護への応用例4
図44を用い、本認証機能を適用したNAND型フラッシュメモリ10を利用したハードディスクドライブ(HDD)のコンテンツ保護への応用例4を説明する。本実施形態は、ホスト装置20がメモリカードソケット550を有し、更に内蔵HDD210を利用した例である。
図示するように、HDDパッケージ200内には、ブリッジコントローラ190、HDD210が搭載されている。
ホスト装置20には、メモリカードソケット550に挿入されるメモリカード55内に備える認証機能、カード制御機能が搭載されている。メモリカード55には、上記実施形態いずれかに係る認証機能・被認証機能を有するNANDパッケージが搭載されている。
上記構成において、ホスト装置20は、上記実施形態にて示した認証処理によりNAND型フラッシュメモリ10の秘密識別情報Secret IDの正当性を確認する。
正当性確認後、ホスト装置20は、秘密識別情報Secret IDに基づいて、上記第2の実施形態に係る方法を用い、EMIDの計算処理を行う。
コンテンツ(Content)書き込み時には、EMIDとコンテンツを関連付けるためのBinding Dataを生成する。Binding Dataには、コンテンツを暗号化・復号化するための鍵に関わるデータを含んでおくことが望ましい。Binding Dataは、メモリカード55、若しくは、HDD210のいずれかに記録される。ここでは、後者の例を示しているがこれにと限られない。また、コンテンツの記録位置も同ように、カード55若しくはHDD210のいずれであってもよい。
コンテンツ(Content)再生時には、EMIDとコンテンツを関連付けるためのBinding Dataと、秘密識別情報Secret IDを認証処理して得られたEMIDと、コンテンツの関連性を計算・確認し関連性が確認された場合にのみコンテンツを再生する。
本実施形態は、カードソケット550を経由してメモリカード55内のNANDフラッシュメモリ10が有する認証機能・被認証機能を利用する例であるが、ホスト装置20は、直接NANDパッケージを搭載し、制御する構成においても適用可能である。この場合、前記のメモリカード55をNANDパッケージに置き換えればよい。
更に、カードソケット550を有するホスト装置20について適用可能な応用例として、同様のホスト装置20が複数あった場合、メモリカード55とHDDパッケージ200を別のホスト装置20と接続することで、いずれのホスト装置20でもコンテンツを再生することも可能となる。ここで、コンテンツやBinding Dataは、HDD210でなく、カード55に記録されていてもよいし、または両方に記録されていてもよい。
本構成により、コンテンツはメモリカード55若しくはNANDパッケージ内の秘密識別情報Secret IDと関連付けられるため、同一の秘密識別情報Secret IDを有さないメモリカードにコンテンツやBinding Dataを不正複製しても、コンテンツの再生ができなくなる効果が得られる。更に、メモリカード55とHDD210を移動することで複数のホスト装置でコンテンツを再生することが可能となる。
[変形例2(データキャッシュ利用のその他の一例)]
変形例2は、上記第6の実施形態で説明したデータキャッシュの認証処理への利用のその他の構成例に関するものである。この説明において、上記実施形態と重複する部分の説明については、省略する。
<センスアンプおよびその周辺回路の構成例>
上記センスアンプおよび周辺回路の構成例については、図45のように示される。
図示するように、変形例2では、DC_A、DC_B,DC_C、DC_Sがデータキャッシュ12であり、DC_Aのみが、カラム制御回路を介してデータ線と接続されており、チップ外部とのデータの授受に使用される。またDC_Sは、データに応じてセンスアンプの動作を制御する用途で使われるラッチである。DC_B、DC_C、DC_SはDC_Aとセンスアンプの間のバス(LBUS)に並列に接続されてデータキャッシュとして使用され、外部とデータの授受を行う場合にはDC_Aを介する必要がある。カラム制御回路は、カラムアドレスに応じたアドレスのDC_Aをデータ線と接続する。NANDフラッシュメモリが通常の動作で使用される場合には、アドレス制御回路から供給されたカラムアドレスを用いるが、本提案の認証シーケンスを行う場合には演算器が指定するアドレスを用いる。通常のアドレスを使用するか、演算器のアドレスを使用するかはモード切替信号によって切り替えられるようになっている。
<センスアンプ、データキャッシュの等価回路例>
図46は、図45中のセンスアンプ77、およびデータキャッシュ12の等価回路例について示すものである。
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。