近年、プリンタカートリッジや、電池等のバッテリー、ゲーム機のカートリッジといった製品に関して、正規品の製造メーカとは異なる製造メーカによるクローン品が多く見られるようになっている。クローン品とは、正規品の内部構造の分析や正規品の内部に存在するIC(集積回路)チップの解析等の結果を用いて製造された、正規品と同等の機能を有する製品である。これらのクローン品の中には、正規品を製造する正規メーカの知的財産等の権利を侵害するケースも多く、クローン対策技術が強く求められている。
このようなクローン品を防止する手法として、正規品へ認証機能を付与することが行われている。この認証機能を実現する有効な手段のひとつがPUF(Physically Unclonable Function:物理的クローン作製不能機能)である。詳細は後述するが、PUFから生成される秘密情報は、顕微鏡での観察による解析では特定できない。従って、上記に挙げたようなクローン品への対策が必要な製品に対してPUFを組み込んで、PUFで秘密情報を生成することで認証機能を実現することは、クローン品への対策としての有効性が高い。
PUFは、ある同一の入力に対して、PUFが実装された電子デバイス毎に異なる出力を返す関数である。但し、デバイス毎に異なる値を出力するような関数を個別に設定する必要はなく、同一の回路(顕微鏡での解析を行っても、見た目は同一であって、その出力値が特定できない)がこの関数を実現する。つまり、PUFは、デバイス内の信号遅延や素子特性などの物理特性のわずかな違いを利用することで、その出力をデバイス毎に全く異なる値とする。従って、この出力はデバイス固有の値(「個体別情報」と称することとする)となる。
理想的なPUFは、デバイス上に実装するとそのデバイスでは常に同一の個体別情報を出力する(再現性)一方、異なるデバイス上に実装されたPUF間では全く異なる個体別情報を出力する(ユニーク性)。このようなデバイスにおけるPUFの出力情報は、人における、「指紋」のような生体情報に喩えることができる。指紋は、同一人であれば年をとっても不変である(再現性)一方、別人の間では全く異なる(ユニーク性)という、理想的なPUFの出力情報と同様の性質を有している。
また、同一の回路構成のPUFが、このような理想的な再現性とユニーク性と兼ね備えていれば、攻撃者が回路を分解し、内部を解析したところで、クローンチップを生成することはできない。
このPUFは、識別情報(ID)の生成や暗号鍵の生成にも用いられる。従って、PUFを用いて認証機能を実現することが可能である。
多くの電子デバイス製品では、個々に固有のIDを必要とする。従来は、多くの場合において、それぞれのデバイス毎に異なる値をIDとして不揮発性メモリに書き込む作業が製造段階で行われていた。このIDの生成にPUFを用いると、セキュアにIDをICチップ内に格納しておけるだけでなく、この書き込み作業のコストを低減させることもできる。
また、暗号機能を含む製品はPUFを用いると安全性が向上する。具体例として、情報記録用の集積回路をカードに組み組んだスマートカードがある。また、通信の秘匿を保証するために、携帯電話に使用されるSIM(Subscriber Identification Module)カードや無線インターネット接続の端末などにも暗号機能が必須である。これらの機器での暗号化に使用する暗号鍵の生成にPUFを使用するようにすれば、暗号鍵が攻撃者に解析される危険性が大幅に低下し、安全性が向上する。
次に、PUFの基本的な回路構成例を幾つか説明する。
なお、本明細書における以下の説明では、電位の異なる2値の論理レベルにおけるハイ・レベルを値「1」と表現し、ロー・レベルを値「0」と表現することとする。
広く知られているPUFは、大きく分けて、遅延型PUFとメタスタビリティ(metastability )型PUFとの2つに分類することができる。ここでは、メタスタビリティ型PUFについて説明する。
メタスタビリティ型PUFは、デジタル回路の不定状態を利用するPUFである。メタスタビリティ型PUFに分類されるPUFのひとつとして、バタフライ型PUFが知られている。このバタフライ型PUFについて説明する。
バタフライ型PUFは、RSラッチ回路のメタステーブルを利用してPUFを実現するものである。このメタステーブルについて、図1A及び図1Bを用いて説明する。
図1Aには、RSラッチ回路の構成例が図解されている。このRSラッチ回路は、NAND(否定論理積)回路11及び12を用いて構成されている。
このRSラッチ回路の入力は負論理である。なお、図面においては、負論理の信号を信号名の上にオーバーバーを付すことで表現しているが、本明細書においては、負論理の信号を“#”で表記するものとする。従って、例えば、図1AのRSラッチ回路のセット入力は“#S”と表記し、リセット入力は“#R”と表記する。
NAND回路11の2つの入力には、それぞれ、セット入力“#S”と、NAND回路12の出力とが入力される。また、NAND回路12の2つの入力には、それぞれ、リセット入力“#R”と、NAND回路11の出力とが入力される。また、NAND回路11の出力がRSラッチ回路の出力Qとなる。なお、NAND回路12からは、出力“#Q”が出力される。
図1Bは、この図1AのRSラッチ回路の真理値表である。なお、この真理値表においては、セット入力S及びリセット入力Rを正論理で表記している。
真理値表からも分かるように、図1AのRSラッチ回路は、入力S=0且つ入力R=0のときには、出力値はそのまま保持されるので、Q=Qとなり、“#Q”=“#Q”となる。また、このRSラッチ回路は、入力S=0且つ入力R=1のときには出力値はリセットされて、Q=0となり、“#Q”=1となる。更に、このRSラッチ回路は、入力S=1且つ入力R=0のときには出力値はセットされて、Q=1、“#Q”=0となる。
図1AのRSラッチ回路は、以上の入力の組み合わせのいずれかであれば、出力の論理は安定している。ところが、このRSラッチ回路は、入力S=1且つ入力R=1のときには、Q=“#Q”=1となってしまう。つまり、この場合には、本来は反対の論理を示すはずであるQの論理値と“#Q”の論理値とが、揃って「1」となってしまう。このとき、このRSラッチ回路の出力は、どちらも、中間電位の不安定な状態となっている。このような、デジタル回路としては異常である不安定な状態が、メタステーブル(metastable)と呼ばれている。一般的には、このようなメタステーブルの状態を回避するために、RSラッチ回路に対するS=1且つR=1の入力は禁止される。
次に、このようなRSラッチ回路のメタステーブルを利用するバタフライ型PUFについて説明する。図2は、このバタフライ型PUFの構成例である。
このバタフライ型PUF10は、図1AのRSラッチ回路のセット入力“#S”及びリセット入力“#R”の両方に同一の値Aを入力するように構成したものである。ここで、このバタフライ型PUF10の出力である、RSラッチ回路の出力Q及び出力“#Q”を、それぞれ、B及びCとする。つまり、このバタフライ型PUF10は、RSラッチ回路に対しメタステーブル状態とする入力を与えると共に、このRSラッチ回路の出力端子から出力される信号を、このバタフライ型PUF10の出力とするように構成した回路である。
このバタフライ型PUF10は、入力A=0のときは、出力B及び出力Cはどちらも1となり、この状態で出力の値は安定している。ところが、ここで、値Aを0から1に変化させると、出力Bが1であって出力Cが0である状態と、出力Bが0であって出力Cが1である状態とが生じて、出力が不定となる。これは、RSラッチ回路がメタステーブルの状態に置かれており、その出力が不確定の状態になっているためである。バタフライ型PUF10は、この不確定性を利用したPUFである。
このバタフライ型PUF10の出力は2値(0と1)のどちらかの値をとる。しかしながら、バタフライ型PUF10をデバイスに実装すると、常に0を出力するもの、及び、常に1を出力するものと、出力が0と1とで定まらないもの、すなわち乱数を出力するものとの3つの態様のものが得られ、この出力の態様には再現性がある。そこで、このバタフライ型PUF10をデバイスに複数実装し、その各々から得られる出力を、バタフライ型PUF10を実装したデバイスについての個体別情報として利用することができる。
メタスタビリティ型PUFに分類されるPUFの例として、上述したバタフライ型PUFの他に、SRAM−PUFが知られている。
SRAM(Static Random Access Memory )への電力供給を開始した直後のメモリセルの初期値は、デバイスに依存した複雑な内部状態から決定されるため、ランダムな値となる。SRAM−PUFは、この初期値のばらつきを利用する。SRAM−PUFでは、メモリセル・アドレスがチャレンジに相当し、そのメモリセル・アドレスで特定されるメモリセルの初期値がレスポンスに相当し、後述するバタフライ型PUFのラッチ部分が、SRAM−PUFのメモリセルに相当する。
次に図3について説明する。図3は、背景技術である個体別情報生成装置を図解したものである。
この個体別情報生成装置20は、電子デバイスであるデバイス1に、n個のPUF21を実装して構成されている。なお、図3では、PUF21−1、21−2、21−3、21−4、21−5、及び21−6の各々に、図2に図解したバタフライ型PUF10を描いているが、これに限定されるものではない。PUF21としては、メタスタビリティ型PUFの他の例として前述したSRAM−PUFでもよく、更には、遅延型PUFを使用してもよい。
この個体別情報生成装置20では、n個実装されたPUF21から、どれを選択するかが、前述したチャレンジに相当する。図3は、このチャレンジによって、PUF21−1、21−2、21−3、21−4、21−5、及び21−6が選択された状態を表現している。この6個のPUF21の各々の出力RES[5:0]は2値の値(0または1)をとるので、これらの値を並べて6ビットのビット列を形成する。このビット列がレスポンスとなり、デバイス1の個体別情報として利用することができる。なお、この個体別情報生成装置20がとり得る個体別情報のパターン数は、計6個のPUF21を選択するので、2の6乗パターン、すなわち64パターンである。
但し、前述したように、PUF21は乱数を出力する場合がある。図3は、計6個のPUF21のうち、PUF21−3及び21−4が乱数を出力している場合を表現している。このような乱数を出力するPUF21がチャレンジによる選択に含まれてしまうと、デバイス1で不変であるはずのレスポンスが異なる値となることがあり、再現性が失われてしまうため、デバイス1の個体別情報として利用できなくなってしまう。
この点に関し、個体別情報生成装置20に符号誤り訂正回路を備えるという技術が知られている。この技術では、チャレンジによって選択されたPUF21の出力を並べて構成したビット列をこの符号誤り訂正回路に入力し、その出力を個体別情報生成装置20のレスポンスとするように構成する。つまり、PUF21から上述のようにして生成されるビット列に含まれる乱数を符号誤り訂正回路で補正して、デバイス1では、同一のチャレンジに対して常に同一のレスポンスが得られるようにする。この技術では、このようにして、個体別情報生成装置20の出力の再現性を確保している。
この他の背景技術として、電子デバイスの物理特性の違いを利用して乱数を生成する技術が幾つか知られている。そのひとつに、デジタル入力値に対して一義的に決定されないデジタル出力値を得ると共に、このデジタル出力値における「0」と「1」の出現頻度を均等にするという乱数生成の技術がある。
また、アクティブ回路とスタティック回路とにより構成されている出力回路におけるアクティブ回路の動作によって生じる電源変動が及ぼすスタティック回路の出力への影響を防止するという技術が知られている。
また、メモリ装置において欠陥のある領域を、冗長的に備えてある領域と置き換えることで、メモリ装置を救済して歩留まりを向上させるという技術が知られている。この技術について、図4を用いて更に説明する。
図4において、主メモリ30は、1ビットのデータを記憶する記憶素子であるメモリセル31が矩形の縦方向にM個、横方向にN個配置されて構成されている、M×Nビットのメモリ装置であるが、その一部のセルに欠陥を有している(欠陥メモリセル32)。前述の救済装置には、主メモリ30の製造時における検査工程において検出された欠陥メモリセル32を含むカラム(欠陥セルカラム33)のカラムアドレスを、当該検査工程において登録しておく。なお、この欠陥セルカラム33のカラムアドレスの登録は、例えば、当該カラムアドレスに対応付けられているヒューズを、レーザ等を用いて切断する等の手法により行われる。
一方、この救済装置には、主メモリ30の欠陥を救済するための冗長メモリ40が備えられている。救済装置が有するカラムデコーダは、前述したようにして登録しておいた、欠陥セルカラム33のカラムアドレスへのアクセスを受け取った場合には、冗長メモリ40の置き換えカラム41を選択する。一方、カラムデコーダは、未登録のカラムアドレスへのアクセスを受け取った場合には、主メモリ30の該当カラムを選択する。
このように、前述の救済装置は、欠陥セルカラム33から置き換えカラム41への置き換えによって、主メモリ30が欠陥メモリセル32を持っていても良品のメモリ装置として扱えるようにしたことで、結果としてメモリの歩留まりが向上するというものである。
なお、上述した説明では、主メモリ30における欠陥メモリセル32を含む領域をカラム(列)単位で置き換える場合を説明したが、この置き換えを、ロウ(行)単位、あるいはセル単位で行うようにすることも可能である。
まず図5について説明する。図5は、個体別情報生成装置の一実施例の機能ブロック図である。
図5において、個体別情報生成装置100は、電子デバイスであるデバイス1に実装されて構成されており、デバイス1についての個体別情報を生成する。
個体別情報生成装置100は、メモリ101、検出部102、及び生成部103を備えている。
メモリ101は複数のメモリセルから構成されている、データの書き込み及び読み出しが可能な半導体記憶素子である。メモリ101はアドレス空間に配置されており、アドレスが指定されると、当該アドレスによって特定されるメモリセルに対してデータの書き込み若しくは読み出しが行われる。
検出部102は、メモリ101を構成している複数のメモリセルに含まれている欠陥セルを検出する。
生成部103は、検出部が検出した欠陥セルを特定するアドレスの情報に基づいて個体別情報を生成する。
この個体別情報生成装置100では、メモリ101に生じた欠陥セルのアドレスは、個々のデバイス1によって異なり、また、同一のデバイス1においては不変であることを利用し、この欠陥セルのアドレスを用いて上述のようにして個体別情報を生成する。顕微鏡等での観察による解析のみで欠陥セルを全て特定することは困難であるので、このようにして個体別情報の生成を行うことで、良好な再現性及び差異性を有する安全性の高い個体別情報を得ることができる。また、この個体別情報生成装置100では、前述したような符号誤り訂正回路が必須のものではなくなるので、個体別情報の生成に要する実装コストの低下にも寄与する。
なお、検出部102は、欠陥セルの検出を、例えば以下のようにして行うようにしてもよい。すなわち、検出部102は、所定のデータが書き込まれたメモリ101のメモリセルから読み出されたデータが当該所定のデータと一致するか否かを判定する。ここで、当該読み出されたデータが該所定のデータと一致しないと判定した場合に、検出部102は、当該メモリセルを欠陥セルとして検出する。
また、メモリセルへの所定のデータの書き込み及び当該メモリセルからのデータの読み出しが複数回行われた場合には、検出部102は、その各回において前述した判定を行うようにしてもよい。このようにする場合には、検出部102は、当該読み出されたデータが当該所定のデータと一致しないとの判定結果が少なくとも1回得られた場合に、当該メモリセルを欠陥セルとして検出するようにする。このようにすることで、欠陥セルの検出精度が向上する。
なお、生成部103は、例えば、検出部102が複数検出した欠陥セルの各々を特定するアドレスを表している数値列を連結して得られる連結数列に対してエントロピ圧縮を行って得られた値に基づいて、個体別情報を生成するようにしてもよい。詳しくは後述するが、このようにすることで、欠陥セルのアドレスと個体別情報との対応関係の推測を困難なものとすることができ、安全性の向上に寄与する。
なお、図5において破線を用いて表現されているように、個体別情報生成装置100が、更に、冗長メモリ104、記憶部105、及び選択部106を備えていてもよい。
冗長メモリ104は、メモリ101とは別に備えられている半導体記憶素子であり、メモリ101に生じた欠陥セルの代替とする記憶領域を提供する。
記憶部105は、検出部102により検出された欠陥セルを特定するアドレスを、冗長メモリ104のセルを特定する冗長セルアドレスに対応付けて記憶する。
選択部106は、入力されたアドレスが、記憶部105に記憶されている、欠陥セルを特定するアドレスと一致した場合に、記憶部105において当該一致したアドレスに対応付けられている冗長セルアドレスで特定される冗長メモリ104のメモリセルを選択する。
上述した構成を備えている個体別情報生成装置100は、本来の個体別情報の生成機能に加えて、汎用の半導体メモリ(RAM)としても使用することが可能になる。
なお、この場合において、記憶部105は、例えば、揮発性メモリとレジスタとのうちのどちらか一方とすることが好ましい。このようにしておくことで、例えば、ヒューズの切断等の手法によりアドレスを記憶する場合に比べて、攻撃者による欠陥セルを特定するアドレスの特定の困難性が高まる。
また、図5の個体別情報生成装置100において、検出部102は、更に、前述のようにして検出された欠陥セルを、欠陥の種別に応じて定義されている複数のグループのいずれかに分類するようにしてもよい。この場合には、生成部103は、欠陥セルを特定するアドレスの情報に基づくと共に、更に当該欠陥セルについての欠陥の種別にも基づいて、個体別情報を生成する。
このようにして欠陥セルを更に細分化することで、生成される個体別情報のバターン数が増加するので、攻撃者による個体別情報の推測の困難性が更に高まる。
なお、この場合、検出部102は、前述のようにして検出された欠陥セルを、欠陥の種別に応じて、例えば、メモリセルから読み出されるデータが当該メモリセルに書き込まれたデータに関わらずに不定であるグループとその他とに分類するようにしてもよい。
また、ここで、検出部102は、上述のグループに分類される欠陥セルを、更に、メモリセルから読み出されるデータが所定値である確率に応じた複数のグループに分類するようにしてもよい。
この図5の個体別情報生成装置100の用途のひとつとして、暗号化装置を構成することができる。この暗号化装置には、個体別情報生成装置100が生成した個体別情報を暗号鍵として用いて、情報の暗号化処理を行う暗号化処理部を備えるようにする。
また、図5の個体別情報生成装置100の用途の別のひとつとして、認証システムを構成することができる。この認証システムは、例えば、認証対象装置と、認証対象装置が正規のものであるか否かの認証を行う認証装置とを備えて構成される。ここで、個体別情報生成装置100は認証対象装置に備えられる。一方、認証装置には、通信部と、記録部と、認証処理部とを備えるようにする。ここで、通信部は、認証対象装置との間で通信を行って各種の情報の授受を行う。また、記録部には、認証対象装置のうちの正規のものが備えている個体別情報生成装置が生成する個体別情報を予め記録しておく。そして、認証処理部は、認証対象装置に対する認証処理を、当該認証対象装置から送られてくる情報と記録部に記録されている情報とに基づいて行う。このように構成されている認証装置において、通信部は、認証対象装置から送られてくる個体別情報の受信を行い、認証処理部は、通信部が認証対象装置から受信した個体別情報が、記録部に予め記録されていた個体別情報と一致するか否かの判定を行う。ここで、認証処理部は、この両者の個体別情報が一致すると判定したときに、当該認証対象装置が正規のものであるとの認証結果を得る。
次に図6について説明する。図6は、個体別情報生成装置100の構成の第一の例を図解したものである。
図6の個体別情報生成装置100は、メモリ101、カラムデコーダ111、ロウデコーダ112、XOR(排他的論理和)回路113、AND(論理積)回路114、シフトレジスタ115、及びエントロピ圧縮部116を備えている。
メモリ101は、前述したように、複数のメモリセルから構成されている半導体記憶素子であり、アドレス空間に配置されている。
カラムデコーダ111は、装置の外部から入力されるアドレス信号に対応するカラムアドレス信号を出力し、ロウデコーダ112は、当該アドレス信号に対応するロウアドレス信号を出力する。これらのカラムアドレス信号及びロウアドレス信号がメモリ101に入力されることによって、当該アドレス信号で表されているアドレスに対応するメモリセルが特定されて選択される。このとき装置の外部から入力される1ビットの書き込みデータ(値「0」若しくは値「1」)が、選択されたメモリセルに一旦書き込まれて格納される。このデータの書き込みの完了後、当該選択されたメモリセルから、格納データが読み出される。
XOR回路113が備えている2つの入力のうちの一方には、装置の外部から入力される前述の1ビットの書き込みデータが入力され、他方には、メモリ101における前述のようにして選択されたメモリセルから読み出された格納データが入力される。XOR回路113は、この両者の一致・不一致を判定し、不一致の場合には「1」を出力し、一致の場合には「0」を出力する。ここで、この両者が不一致である場合には、このメモリセルが欠陥セルであると判定される。つまり、このXOR回路113は、図5における検出部102の一例である。
XOR回路113の出力は、AND回路114が備えている2つの入力のうちの一方に入力される。このAND回路114の他方の入力には、装置の外部から入力されるアドレス信号、すなわち、XOR回路113によって検出された欠陥セルを特定するアドレスを表している信号が入力される。従って、AND回路114からは、XOR回路113によって欠陥セルが検出された場合に、当該欠陥セルを特定するアドレスを表している信号が出力される。この信号はシフトレジスタ115に入力される。
シフトレジスタ115には、欠陥セルを特定するアドレスが順次格納される。ここで、装置の外部から入力されるアドレス信号を、メモリ101が配置されているアドレス空間の全てを選択するように所定の順序で順次切り替えていくと、シフトレジスタ115では、欠陥セルの各々を特定するアドレスを表している数値列が連結される。
エントロピ圧縮部116は、シフトレジスタ115に格納されている、上述の連結された数値列(「連結数列」と称することとする)を読み出し、この連結数列に対してエントロピ圧縮を行い、圧縮結果として得られた値を、個体別情報として出力する。
シフトレジスタ115に格納された連結数列をそのまま個体別情報の生成結果として使用すると、メモリ101に対するアドレス信号と連結数列との関係が推測できてしまう可能性がある。エントロピ圧縮部116は、この推測を困難なものとするためのものである。
エントロピ圧縮部116としては、例えば一方向性関数回路を使用する。一方向性関数回路は、入力が一意であれば、出力が一意に定まるが、出力から入力を求めることは非常に困難な関数である。なお、本実施例では、エントロピ圧縮部116として、入力されたビット列に対するハッシュ関数値を得る回路を用いる。より具体的には、この回路として、米国連邦情報処理基準(Federal Information Processing Standard/FIPS)に採用されているハッシュ関数であるSHA−256によるハッシュ関数値を得る回路を用いる。
以上のように構成されている図6の個体別情報生成装置100では、メモリ101における欠陥セルを特定するアドレスを利用して個体別情報を生成する。このアドレスは周囲温度や供給電圧の変化に対する安定性が極めて高いので、この個体別情報生成装置100によれば、前述したような符号誤り訂正回路が必須のものではなくなり、良好な再現性及び差異性を有する個体別情報を生成することができる。
以上のシフトレジスタ115とエントロピ圧縮部116との組み合わせは、図5における生成部103の一例である。
なお、メモリ101における欠陥セルを検出するために行われる、装置の外部から入力される所定データのメモリセルへの書き込み及び当該メモリセルでの格納データの読み出しを複数回行うようにしてもよい。この場合、XOR回路113では、メモリセルに対するデータの書き込み及びデータの読み出しが行われる度に、書き込みデータと読み出しデータとの一致・不一致の判定が行われる。ここで、不一致の判定結果が一度でも得られた場合には、当該メモリセルが欠陥セルとして検出される。このようにして、欠陥セルの検出精度を高めるようにしてもよい。
次に、個体別情報生成装置100の構成の第二の例について説明する。図7は、個体別情報生成装置100の構成の第二の例を図解したものである。
図7の個体別情報生成装置100は、個体別情報の生成機能とデータ記憶機能とを兼備させたものである。このために、個体別情報生成装置100は、図6に図解した第一の例の構成に、図4を用いて説明した、主メモリ30の欠陥部分を健全な領域と置き換えることでメモリ装置を救済するための構成を追加している。
この図7の個体別情報生成装置100の構成は、図6に示した第一の例の構成要素に加えて、AND回路121及び122と、NOT(否定)回路123と、冗長メモリ124と、変換情報保持部125とを備えて構成されている。
装置の外部から入力されるモード信号は、個体別情報生成装置100の機能を選択する信号である。このモード信号が「0」である場合には個体別情報の生成機能が選択され、「1」である場合にはデータ記憶機能が選択される。
AND回路121は2入力の回路であり、その一方には上述のモード信号が入力され、他方には、メモリ101からの読み出しデータが入力される。また、AND回路121の出力は、装置の外部に出力される。従って、モード信号が「0」の場合には、メモリ101からの読み出しデータの装置の外部の出力が禁止され、モード信号が「1」の場合には、メモリ101からの読み出しデータが装置の外部に出力される。
AND回路122も2入力の回路であり、その一方には、インバータであるNOT回路123によって上述のモード信号の信号論理を反転させた信号が入力され、他方には、エントロピ圧縮部116から出力される個体別情報が入力される。従って、モード信号が「0」の場合には、エントロピ圧縮部116から出力される個体別情報が装置の外部に出力され、モード信号が「1」の場合には、個体別情報の装置の外部への出力が禁止される。
冗長メモリ124は、メモリ101における欠陥セルとの置き換えのために予め用意しておく半導体記憶素子であり、図5における冗長メモリ104の一例である。
変換情報保持部125には、冗長メモリ124が有している健全なメモリセル(健全セル)のアドレスが予め記憶されている半導体記憶装置である。更に、変換情報保持部125は、AND回路114の出力である、メモリ101から検出された欠陥セルのアドレスが入力されると、保持されている健全セルのアドレスのうちの1つが1対1に対応付けられて記憶され、保持される。変換情報保持部125は、図5における記憶部105の一例である。
この変換情報保持部125の記憶情報は、前述のモード信号が「1」の場合、すなわち、データ記憶機能が選択されている場合にのみ、カラムデコーダ111及びロウデコーダ112により参照可能とする。
カラムデコーダ111及びロウデコーダ112は、変換情報保持部125での記憶データが参照可能な場合には、装置の外部から入力されるアドレス信号で表されているアドレスが、変換情報保持部125で保持されているか否かを判定する。
ここで、当該アドレスが変換情報保持部125で記憶されていたと判定される場合は、データ記憶機能が選択されており、且つ当該アドレスが欠陥セルを表していた場合である。この場合には、カラムデコーダ111は、変換情報保持部125において当該アドレスに対応付けられている健全セルのアドレスに対応するカラムアドレス信号を出力し、ロウデコーダ112は、当該健全セルのアドレスに対応するロウアドレス信号を出力する。これらのカラムアドレス信号及びロウアドレス信号は冗長メモリ124に入力されることで、装置の外部から入力されるアドレス信号で表されていたアドレスで特定される欠陥セルから置き換えられて、冗長メモリ124の健全セルが選択される。
一方、上述した場合以外の場合は、個体別情報の生成機能が選択されている場合、若しくは、装置の外部から入力されるアドレス信号で表されているアドレスが欠陥セルを表していない場合である。この場合には、カラムデコーダ111は、装置の外部から入力されるアドレス信号に対応するカラムアドレス信号を出力し、ロウデコーダ112は、当該アドレス信号に対応するロウアドレス信号を出力する。これらのカラムアドレス信号及びロウアドレス信号がメモリ101に入力されることによって、当該アドレス信号で表されているアドレスに対応するメモリセルが特定されて選択される。
以上のように動作するカラムデコーダ111及びロウデコーダ112は、図5における選択部106の一例である。
図7の個体別情報生成装置100は以上のように構成されている。従って、個体別情報の生成機能を選択するモード信号を入力すれば、図6の第一の例と同様に、メモリ101における欠陥セルを特定するアドレスを利用した個体別情報の生成が個体別情報生成装置100により行われる。また、データ記憶機能を選択するモード信号を入力すれば、入力されるアドレス信号で表されているアドレスで特定されるメモリセルに対するデータの書き込み及び読み出しが、個体別情報生成装置100により適切に行われる。
なお、この図7の個体別情報生成装置100では、変換情報保持部125における、メモリ101から検出された欠陥セルのアドレスの記憶領域として、揮発性メモリ若しくはレジスタを使用する。
図4を用いて説明した救済装置では、欠陥セルについてのアドレスに対応付けられているヒューズを、レーザ等を用いて切断する等の手法により、当該欠陥セルについてのアドレスを登録しておくようにしていた。しかしながら、この手法では、個体別情報生成装置100を顕微鏡等で観察することで、メモリ101における欠陥セルが特定されてしまう可能性があるため、生成される個体別情報の安全性の観点から問題がある。図7の個体別情報生成装置100では、変換情報保持部125を上述のように構成したことで、欠陥セルのアドレスの情報の漏出の可能性が減少する。
次に、個体別情報生成装置100の構成の第三の例について説明する。図8は、個体別情報生成装置100の構成の第三の例を図解したものである。
図8の個体別情報生成装置100は、図6に示した第一の例の構成要素に加えて、判定処理部131と、判定結果連結部132とを備えて構成されている。
図8の個体別情報生成装置100は、メモリ101から検出された欠陥セルを、欠陥の種別に応じてグループ化し、欠陥セルを特定するアドレスの情報と共に、当該欠陥セルが含まれるグループの識別情報をも用いて個体別情報を生成する。このようにすることで、生成される個体別情報のパターン数が、第一の例よりも増加する結果、個体別情報の推測の困難性が更に高まり、安全性の向上が期待できる。
図8の構成においては、XOR回路113と判定処理部131との組み合わせによって、図5における検出部102の機能が提供される。また、図8の構成においては、判定結果連結部132とシフトレジスタ115とエントロピ圧縮部116との組み合わせによって、図5における生成部103の機能が提供される。
判定処理部131は、メモリ101から欠陥セルの検出を行うと共に、検出された欠陥セルの欠陥の種別を判定して種別毎のグループに分類し、検出された欠陥セルが含まれる欠陥の種別のグループを表すラベリング情報を出力する。この判定処理部131の構成及び動作の詳細は後述する。
判定結果連結部132には、メモリ101から検出された欠陥セルを特定するアドレスを表している信号がAND回路114から入力され、当該欠陥セルが含まれる欠陥の種別のグループを表すラベリング情報が判定処理部131から入力される。判定結果連結部132は、このラベリング情報と欠陥セルを特定するアドレスとを連結してシフトレジスタ115へ出力する。
シフトレジスタ115には、ラベリング情報とアドレスとを連結させた数値列が順次格納される。従って、判定処理部131から出力されるアドレス信号を所定の順序で順次切り替えていくと、シフトレジスタ115では、欠陥セルの各々についてのラベリング情報とアドレスとを連結させた連結数列が連結される。エントロピ圧縮部116は、シフトレジスタ115に格納されている、連結数列を読み出し、この連結数列に対してエントロピ圧縮を行い、圧縮結果として得られた値を、個体別情報として出力する。
図8の個体別情報生成装置100は以上のように構成されている。なお、この図8の構成に、図7に図解した第二の構成におけるAND回路121及び122と、NOT回路123と、冗長メモリ124と、変換情報保持部125とを追加して、個体別情報の生成機能とデータ記憶機能とを兼備させるようにしてもよい。
次に、判定処理部131について更に詳細に説明する。図9は、判定処理部131のハードウェア構成図である。
図9に図解されているように、この判定処理部131は、MPU(microprocessor unit )141、ROM(Read Only Memory)142、RAM(Random Access Memory)143、及びインタフェース部144を備えている。なお、これらの各構成要素はバスライン145を介して接続されており、MPU141の管理の下で各種のデータを相互に授受することができる。
MPU141は、各種の制御処理を行って判定処理部131の機能を提供する。
ROM142は、MPU141によって実行される制御プログラムが予め記憶されている読み出し専用メモリである。MPU141は、例えば電力の供給が開始されたときに、この制御プログラムをROM142から読み出して実行することによって、各種の制御処理を行えるようになる。
RAM143は、MPU141が制御プログラムを実行する際に必要に応じて使用する一時記憶領域を提供する。
インタフェース部144は、MPU141と個体別情報生成装置100の構成要素との間での各種のデータ信号の授受を管理する。
次に、判定処理部131が行う判定処理について、幾つか説明する。なお、この判定処理を、図9に図解したように構成されている判定処理部131に行わせる場合には、この判定処理をMPU141に行わせるための制御プログラムを作成してROM142に予め記憶させておくようにする。
まず図10について説明する。図10は、判定処理の第一の例の処理内容を図解したフローチャートである。
この第一の例では、欠陥セルを、以下の3つのグループに分類する。
[1]値「0」及び値「1」のどちらを書き込んでも読み出した値が常に「0」であるグループ
[2]値「0」及び値「1」のどちらを書き込んでも読み出した値が常に「1」が読み出されるグループ
[3]読み出しデータの値が書き込みデータの値の関わらずに不定であるグループ
なお、本実施例では、上記[1]のグループにはラベリング情報「00」を付与し、
上記[2]のグループにはラベリング情報「11」を付与し、上記[3]のグループにはラベリング情報「10」を付与することとする。
図10に図解されている処理を、図8を参照しながら説明する。
まず、S101では、アドレス「0」、すなわち、メモリ101が配置されているアドレス空間(0〜N−1)の先頭のアドレスを表すアドレス信号を生成して出力する処理を判定処理部131が行う。
出力されたアドレス信号は、カラムデコーダ111及びロウデコーダ112に入力される。この結果、出力されたアドレス信号で表されているアドレスに対応するメモリセルが、カラムデコーダ111及びロウデコーダ112によってメモリ101から選択される。なお、このアドレス信号はAND回路114にも入力される。
次に、S102では、書き込みデータとして、値「1」を出力する処理を判定処理部131が行う。この書き込みデータは、出力中のアドレス信号によってメモリ101から選択されているメモリセルに書き込まれる。なお、この書き込みデータはXOR回路113にも入力される。
次に、S103では、S102の処理により値「1」が書き込まれたメモリセルからデータを読み出し、読み出されたデータが「1」であったか否かを判定する処理を判定処理部131が行う。ここで、読み出されたデータが「1」であったと判定されたとき(判定結果がYesのとき)には、判定処理部131はS104に処理を進める。一方、読み出されたデータが「1」ではなかった(すなわち、「0」であった)と判定されたとき(判定結果がNoのとき)には、判定処理部131はS107に処理を進める。
次に、S104では、書き込みデータとして、値「0」を出力する処理を判定処理部131が行う。この書き込みデータは、出力中のアドレス信号によってメモリ101から選択されているメモリセルに書き込まれる。なお、この書き込みデータはXOR回路113にも入力される。
次に、S105では、S104の処理により値「0」が書き込まれたメモリセルからデータを読み出し、読み出されたデータが「0」であったか否かを判定する処理を判定処理部131が行う。ここで、読み出されたデータが「0」であったと判定されたとき(判定結果がYesのとき)には、出力中のアドレス信号によって選択されているメモリセルは健全である(欠陥セルではない)との判定を下し、判定処理部131はS111に処理を進める。一方、読み出されたデータが「0」ではなかった(すなわち、「1」であった)と判定されたとき(判定結果がNoのとき)には、判定処理部131はS106に処理を進める。
S106では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[2]に含まれる欠陥セルであるとして、ラベリング情報「11」を出力する処理を判定処理部131が行い、その後はS111に処理を進める。
一方、S107では、書き込みデータとして、値「0」を出力する処理を判定処理部131が行う。この書き込みデータは、出力中のアドレス信号によってメモリ101から選択されているメモリセルに書き込まれる。なお、この書き込みデータはXOR回路113にも入力される。
次に、S108では、S107の処理により値「0」が書き込まれたメモリセルからデータを読み出し、読み出されたデータが「0」であったか否かを判定する処理を判定処理部131が行う。ここで、読み出されたデータが「0」であったと判定されたとき(判定結果がYesのとき)には、判定処理部131はS109に処理を進める。一方、読み出されたデータが「0」ではなかった(すなわち、「1」であった)と判定されたとき(判定結果がNoのとき)には、判定処理部131はS110に処理を進める。
S109では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[1]に含まれる欠陥セルであるとして、ラベリング情報「00」を出力する処理を判定処理部131が行い、その後はS111に処理を進める。
S110では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[3]に含まれる欠陥セルであるとして、ラベリング情報「10」を出力する処理を判定処理部131が行い、その後はS111に処理を進める。
S111では、出力中のアドレス信号で表されているアドレスを1番地進める処理を判定処理部131が行う。
次に、S112では、出力中のアドレス信号で表されているアドレスが、メモリ101が配置されているアドレス空間(0〜N−1)の最後の番地を過ぎたか否かを判定する処理を判定処理部131が行う。ここで、当該アドレスが当該アドレス空間の最後の番地を過ぎたと判定されたとき(判定結果がYesのとき)には、判定処理部131は、この図10の処理を終了する。一方、ここで、当該アドレスが当該アドレス空間の最後の番地を過ぎてはいないと判定されたとき(判定結果がNoのとき)には、判定処理部131はS102へ処理を戻してS102以降の処理を再度実行する。
以上までの処理が判定処理の第一の例であり、この処理を判定処理部131が行うことによって、メモリ101からの欠陥セルの検出と、検出された欠陥セルの欠陥の種別毎のグループを表すラベリング情報の出力とが行われる。
次に図11A及び図11Bについて説明する。図11A及び図11Bは、判定処理の第二の例の処理内容を図解したフローチャートである。
前述した判定処理の第一の例では、欠陥セルを3つのグループに分類していた。これに対し、この第二の例では、前述した3つのグループのうちの[3]のグループに含まれる欠陥セルを更に以下の2つのグループに分類して、全体で4つのグループに分類する。
[3−1]読み出しデータの値が書き込みデータの値の関わらずに不定であるが、読み出しデータの値が「1」である確率が、「0」である確率以上の確率であるグループ
[3−2]読み出しデータの値が書き込みデータの値の関わらずに不定であるが、読み出しデータの値が「0」である確率が「1」である確率よりも高いグループ
このようにして、メモリ101から検出された欠陥セルを欠陥の種別に応じてグループ化するときのグループ数を、前述した判定処理の第一の例よりも増加させることで、生成される個体別情報のパターン数が更に増加する。
なお、本実施例では、前述の[1]のグループにはラベリング情報「00」を付与し、前述の[2]のグループにはラベリング情報「11」を付与することとする。そして、上記[3−1]のグループにはラベリング情報「10」を付与し、上記[3−2]のグループにはラベリング情報「01」を付与することとする。
図11A及び図11Bに図解されている処理を、図8を参照しながら説明する。
まず、図11Aにおいて、S201では、アドレス「0」、すなわち、メモリ101が配置されているアドレス空間(0〜N−1)の先頭のアドレスを表すアドレス信号を生成して出力する処理を判定処理部131が行う。出力されたアドレス信号は、カラムデコーダ111及びロウデコーダ112に入力される。この結果、出力されたアドレス信号で表されているアドレスに対応するメモリセルが、カラムデコーダ111及びロウデコーダ112によってメモリ101から選択される。
次に、S202は、配列RAM_0[K]及びRAM_1[K]についての記憶領域を確保する処理を判定処理部131が行う。なお、定数Kは2以上の自然数であり、欠陥セルの検出とその欠陥種別の判別とのために行われる、メモリ101のメモリセルへの同一データの書き込みの繰り返しの回数を表している。
次に、S203では、変数iに初期値「0」を代入する処理を判定処理部131が行う。
次に、S204では、書き込みデータとして、値「1」を出力する処理を判定処理部131が行う。この書き込みデータは、出力中のアドレス信号によってメモリ101から選択されているメモリセルに書き込まれる。
次に、S205では、S204の処理により値「1」が書き込まれたメモリセルからデータを読み出して、読み出されたデータを、配列RAM_1[i]の要素として格納する処理を判定処理部131が行う。
次に、S206では、書き込みデータとして、値「0」を出力する処理を判定処理部131が行う。この書き込みデータは、出力中のアドレス信号によってメモリ101から選択されているメモリセルに書き込まれる。
次に、S207では、S204の処理により値「1」が書き込まれたメモリセルからデータを読み出して、読み出されたデータを、配列RAM_1[i]の要素として格納する処理を判定処理部131が行う。
次に、S208では、この処理時点での変数iの値に「1」を加算し、その加算結果を改めて変数iに代入する処理を判定処理部131が行う。
次に、S209では、この処理時点での変数iの値が定数Kの値と一致しているか否かを判定する処理を判定処理部131が行う。ここで、両者の値が一致していると判定されたとき(判定結果がYesのとき)には、判定処理部131は図11BのS210に処理を進める。一方、ここで、両者の値が一致していないと判定されたとき(判定結果がNoのとき)には、判定処理部131はS204へ処理を戻してS204以降の処理を再度実行する。
図11Bに処理が進み、S210では、配列RAM_0の全ての要素の値が「1」であり、且つ、配列RAM_1の全ての要素の値も「1」であるか否かを判定する処理を判定処理部131が行う。ここで、配列RAM_0及びRAM_1の要素の全ての値が「1」であると判定されたとき(判定結果がYesのとき)には、判定処理部131はS211に処理を進める。一方、ここで、配列RAM_0及びRAM_1の要素の全ての値が「1」ではない(すなわち、値が「0」である要素が存在する)と判定されたとき(判定結果がYesのとき)には、S212に処理を進める。
S211では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[2]に含まれる欠陥セルであるとして、ラベリング情報「11」を出力する処理を判定処理部131が行い、その後はS218に処理を進める。
S212では、配列RAM_0の全ての要素の値が「0」であり、且つ、配列RAM_1の全ての要素の値も「0」であるか否かを判定する処理を判定処理部131が行う。ここで、配列RAM_0及びRAM_1の要素の全ての値が「0」であると判定されたとき(判定結果がYesのとき)には、判定処理部131はS213に処理を進める。一方、ここで、配列RAM_0及びRAM_1の要素の全ての値が「0」ではない(すなわち、値が「1」である要素が存在する)と判定されたとき(判定結果がYesのとき)には、S214に処理を進める。
S213では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[1]に含まれる欠陥セルであるとして、ラベリング情報「00」を出力する処理を判定処理部131が行い、その後はS218に処理を進める。
S214では、配列RAM_0の全ての要素の値が「0」であり、且つ、配列RAM_1の全ての要素の値が「1」であるか否かを判定する処理を判定処理部131が行う。
このS214の判定処理において、配列RAM_0の全ての要素の値が「0」であり、且つ、配列RAM_1の全ての要素の値が「1」であると判定されたとき(判定結果がYesのとき)には、判定処理部131はS218に処理を進める。なお、このS214の判定処理の判定結果がYesとなる場合とは、出力中のアドレス信号によって選択されているメモリセルは健全である(欠陥セルではない)と判定された場合である。
一方、S214において、配列RAM_0の要素のうち値が「1」であるものが存在するか、若しくは、配列RAM_1の要素のうち値が「0」であるものが存在すると判定されたとき(判定結果がNoのとき)には、判定処理部131はS215に処理を進める。
S215では、配列RAM_0及びRAM_1の全ての要素に対する、値が「1」である要素の確率が50%以上であるか否かを判定する処理を判定処理部131が行う。
このS215の処理では、判定処理部131は、まず、配列RAM_0及びRAM_1の全ての要素のうちで、値が「1」である要素の個数を計数する処理を行う。次に、判定処理部131は、この計数値を、前述の定数Kを2倍した値で除算して上述の確率を算出する処理を行う。そして、この算出された確率が0.5(すなわち50%)以上であるか否かを判定する処理を判定処理部131が行う。
このS215の判定処理において、上述の確率が50%以上であると判定されたとき(判定結果がYesのとき)には、判定処理部131はS216に処理を進める。一方、上述の確率が50%未満であると判定されたとき(判定結果がNoのとき)には、判定処理部131はS217に処理を進める。
S216では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[3−1]に含まれる欠陥セルであるとして、ラベリング情報「10」を出力する処理を判定処理部131が行い、その後はS218に処理を進める。
S217では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[3−2]に含まれる欠陥セルであるとして、ラベリング情報「01」を出力する処理を判定処理部131が行い、その後はS218に処理を進める。
S218では、出力中のアドレス信号で表されているアドレスを1番地進める処理を判定処理部131が行う。
次に、S219では、出力中のアドレス信号で表されているアドレスが、メモリ101が配置されているアドレス空間(0〜N−1)の最後の番地を過ぎたか否かを判定する処理を判定処理部131が行う。ここで、当該アドレスが当該アドレス空間の最後の番地を過ぎたと判定されたとき(判定結果がYesのとき)には、判定処理部131は、この図11A及び図11Bの処理を終了する。一方、ここで、当該アドレスが当該アドレス空間の最後の番地を過ぎてはいないと判定されたとき(判定結果がNoのとき)には、判定処理部131は図11AのS202へ処理を戻してS202以降の処理を再度実行する。
以上までの処理が判定処理の第二の例であり、この処理を判定処理部131が行うことによって、メモリ101からの欠陥セルの検出と、検出された欠陥セルの欠陥の種別毎のグループを表すラベリング情報の出力とが行われる。
次に図12A及び図12Bについて説明する。図12A及び図12Bは、判定処理の第三の例の処理内容を図解したフローチャートである。
前述した判定処理の第二の例では、前述した3つのグループのうちの[3]のグループに含まれる欠陥セルを更に2つのグループに分類して、全体で4つのグループに分類していた。これに対し、この第三の例では、この[3]のグループに含まれる欠陥セルを、2よりも多い複数のグループに分類する。本実施例では、この[3]のグループを、下記の6つのグループに分類して、全体で8つのグループに分類する。
[3−11]読み出しデータの値が書き込みデータの値の関わらずに不定であるが、読み出しデータの値が「1」である確率が、80%以上100%未満であるグループ
[3−12]読み出しデータの値が書き込みデータの値の関わらずに不定であるが、読み出しデータの値が「1」である確率が、65%以上80%未満であるグループ
[3−13]読み出しデータの値が書き込みデータの値の関わらずに不定であるが、読み出しデータの値が「1」である確率が、50%以上65%未満であるグループ
[3−14]読み出しデータの値が書き込みデータの値の関わらずに不定であるが、読み出しデータの値が「1」である確率が、35%以上50%未満であるグループ
[3−15]読み出しデータの値が書き込みデータの値の関わらずに不定であるが、読み出しデータの値が「1」である確率が、20%以上35%未満であるグループ
[3−16]読み出しデータの値が書き込みデータの値の関わらずに不定であるが、読み出しデータの値が「1」である確率が、0%より大きく20%未満であるグループ
このようにして、メモリ101から検出された欠陥セルを欠陥の種別に応じてグループ化するときのグループ数を、前述した判定処理の第二の例よりも更に増加させることで、生成される個体別情報のパターン数が更に増加する。
なお、本実施例では、前述の[1]のグループにはラベリング情報「111」を付与し、前述の[2]のグループにはラベリング情報「000」を付与することとする。一方、上記[3−11]のグループにはラベリング情報「001」を付与し、上記[3−12]のグループにはラベリング情報「010」を付与することとする。また、上記[3−13]のグループにはラベリング情報「011」を付与し、上記[3−14]のグループにはラベリング情報「100」を付与することとする。そして、上記[3−15]のグループにはラベリング情報「101」を付与し、上記[3−16]のグループにはラベリング情報「110」を付与することとする。
図12A及び図12Bに図解されている処理を、図8を参照しながら説明する。
図12AにおけるS301からS309にかけての処理は、図11Aに図解した判定処理の第二の例の処理内容におけるS201からS209にかけての処理と同一であるので、説明を省略する。但し、本実施例では、読み出しデータの値が「1」である確率の算出精度が高い方が好ましいので、定数Kの値は大きな値(例えばK=20程度)の方が好ましい。
図12AのS309の判定結果がYesの場合には、判定処理部131は図12BのS310の処理を実行する。S310では、配列RAM_0の全ての要素の値が「1」であり、且つ、配列RAM_1の全ての要素の値も「1」であるか否かを判定する処理を判定処理部131が行う。ここで、配列RAM_0及びRAM_1の要素の全ての値が「1」であると判定されたとき(判定結果がYesのとき)には、判定処理部131はS311に処理を進める。一方、ここで、配列RAM_0及びRAM_1の要素の全ての値が「1」ではない(すなわち、値が「0」である要素が存在する)と判定されたとき(判定結果がYesのとき)には、S312に処理を進める。
S311では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[2]に含まれる欠陥セルであるとして、ラベリング情報「000」を出力する処理を判定処理部131が行い、その後はS322に処理を進める。
S312では、配列RAM_0の全ての要素の値が「0」であり、且つ、配列RAM_1の全ての要素の値も「0」であるか否かを判定する処理を判定処理部131が行う。ここで、配列RAM_0及びRAM_1の要素の全ての値が「0」であると判定されたとき(判定結果がYesのとき)には、判定処理部131はS313に処理を進める。一方、ここで、配列RAM_0及びRAM_1の要素の全ての値が「0」ではない(すなわち、値が「1」である要素が存在する)と判定されたとき(判定結果がYesのとき)には、S314に処理を進める。
S313では、出力中のアドレス信号によってメモリ101から選択されているメモリセルは、前述のグループ[1]に含まれる欠陥セルであるとして、ラベリング情報「111」を出力する処理を判定処理部131が行い、その後はS322に処理を進める。
S314では、配列RAM_0の全ての要素の値が「0」であり、且つ、配列RAM_1の全ての要素の値が「1」であるか否かを判定する処理を判定処理部131が行う。
このS314の判定処理において、配列RAM_0の全ての要素の値が「0」であり、且つ、配列RAM_1の全ての要素の値が「1」であると判定されたとき(判定結果がYesのとき)には、判定処理部131はS322に処理を進める。なお、このS314の判定処理の判定結果がYesとなる場合とは、出力中のアドレス信号によって選択されているメモリセルは健全である(欠陥セルではない)と判定された場合である。
一方、S314において、配列RAM_0の要素のうち値が「1」であるものが存在するか、若しくは、配列RAM_1の要素のうち値が「0」であるものが存在すると判定されたとき(判定結果がNoのとき)には、判定処理部131はS315に処理を進める。
S315では、配列RAM_0及びRAM_1の全ての要素に対する、値が「1」である要素の確率xを判定し、S316からS321までの各処理のうちのいずれかを、このxの値に応じて実行する処理を判定処理部131が行う。
このS315の処理では、判定処理部131は、まず、配列RAM_0及びRAM_1の全ての要素のうちで、値が「1」である要素の個数を計数する処理を行う。次に、判定処理部131は、この計数値を、前述の定数Kを2倍した値で除算して確率xを算出する処理を行う。その後、判定処理部131は、次に実行する処理を、S316からS321までの各処理のうちから、算出された確率xの値に応じて1つ選択する処理を行う。
このS315の判定処理において、確率xが80%以上100%未満であると判定された場合には、判定処理部131は、S316に処理を進める。また、ここで、確率xが65%以上80%未満であると判定された場合には、判定処理部131は、S317に処理を進める。また、ここで、確率xが50%以上65%未満であると判定された場合には、判定処理部131は、S318に処理を進める。また、ここで、確率xが35%以上50%未満であると判定された場合には、判定処理部131は、S319に処理を進める。また、ここで、確率xが20%以上35%未満であると判定された場合には、判定処理部131は、S320に処理を進める。また、ここで、確率xが0%よりも大きく20%未満であると判定された場合には、判定処理部131は、S321に処理を進める。
S316では、出力中のアドレス信号によって選択されているメモリセルは、前述のグループ[3−11]に含まれる欠陥セルであるとして、ラベリング情報「001」を出力する処理を判定処理部131が行い、その後はS322に処理を進める。
S317では、出力中のアドレス信号によって選択されているメモリセルは、前述のグループ[3−12]に含まれる欠陥セルであるとして、ラベリング情報「010」を出力する処理を判定処理部131が行い、その後はS322に処理を進める。
S318では、出力中のアドレス信号によって選択されているメモリセルは、前述のグループ[3−13]に含まれる欠陥セルであるとして、ラベリング情報「011」を出力する処理を判定処理部131が行い、その後はS322に処理を進める。
S319では、出力中のアドレス信号によって選択されているメモリセルは、前述のグループ[3−14]に含まれる欠陥セルであるとして、ラベリング情報「100」を出力する処理を判定処理部131が行い、その後はS322に処理を進める。
S320では、出力中のアドレス信号によって選択されているメモリセルは、前述のグループ[3−15]に含まれる欠陥セルであるとして、ラベリング情報「101」を出力する処理を判定処理部131が行い、その後はS322に処理を進める。
S321では、出力中のアドレス信号によって選択されているメモリセルは、前述のグループ[3−16]に含まれる欠陥セルであるとして、ラベリング情報「110」を出力する処理を判定処理部131が行い、その後はS322に処理を進める。
S322では、出力中のアドレス信号で表されているアドレスを1番地進める処理を判定処理部131が行う。
次に、S323では、出力中のアドレス信号で表されているアドレスが、メモリ101が配置されているアドレス空間(0〜N−1)の最後の番地を過ぎたか否かを判定する処理を判定処理部131が行う。ここで、当該アドレスが当該アドレス空間の最後の番地を過ぎたと判定されたとき(判定結果がYesのとき)には、判定処理部131は、この図12A及び図12Bの処理を終了する。一方、ここで、当該アドレスが当該アドレス空間の最後の番地を過ぎてはいないと判定されたとき(判定結果がNoのとき)には、判定処理部131は図12AのS302へ処理を戻してS302以降の処理を再度実行する。
以上までの処理が判定処理の第三の例であり、この処理を判定処理部131が行うことによって、メモリ101からの欠陥セルの検出と、検出された欠陥セルの欠陥の種別毎のグループを表すラベリング情報の出力とが行われる。
なお、以上までに説明した個体別情報生成装置100の各実施例では、メモリ101としてデータの書き込み及び読み出しが可能な半導体記憶素子を使用している。このメモリ101としては、例えばSRAM(Static RAM)、DRAM(Dynamic RAM )、FRAM(Ferroelectric RAM )、MRAM(Magnetoresistive RAM )など、様々な方式のRAMのいずれを採用してもよい。
また、例えば、メモリ101としてROMを使用し、このROMに予め書き込んでおいたデータが正しく読み出せない欠陥を有するメモリセルのアドレスに基づいて個体別情報を生成するようにしてもよい。なお、このROMとしては、マスクROM、PROM(Programmable ROM)、EPROM(Erasable and Programmable ROM )、EEPROM(Electrically Erasable and Programmable ROM)など、様々な方式のROMのいずれを採用してもよい。
また、例えば、AND、OR(論理和)、NAND、NOR(否定論理和)、XOR、NOT等の汎用ゲートのゲートアレイをメモリ101の代わりに使用し、このゲートアレイに含まれる欠陥ゲートを特定する情報を用いて個体別情報を生成するようにしてもよい。
次に、図6、図7、及び図8で各々図解した個体別情報生成装置100を用いた電子機器について説明する。
まず図13について説明する。図13は、暗号化装置の構成例を図解したものである。
この暗号化装置200は、図6、図7、及び図8に図解されている個体別情報生成装置100のいずれかを用いて構成されている。
暗号化装置200は、個体別情報生成装置100、CPU210、暗号演算器220、ROM230、及びRAM240を備えて構成されている。なお、これらの各構成要素はバスライン250にいずれも接続されており、CPU210による管理の下で各種のデータを相互に授受することができるように構成されている。
個体別情報生成装置100は、電子デバイスであるデバイス1に実装されている。
CPU(Central Processing Unit )210は、この暗号化装置200の各構成要素の動作を管理する中央演算部である。
暗号演算器220は、各種の情報の暗号化処理や、暗号化されているデータの復号処理を行う。なお、本実施形態では、暗号演算器220は、公開鍵コプロセッサ221と共通鍵コプロセッサ222とを備えている。ここで、公開鍵コプロセッサ221は、代表的な公開鍵暗号方式であるRSA暗号や楕円曲線暗号等を用いて暗号化及び復号の処理を行う。また、共通鍵コプロセッサ222は、代表的な共通鍵暗号方式であるAES暗号等を用いて暗号化及び復号の処理を行う。なお、暗号演算器220を暗号化装置200に備える代わりに、暗号演算器220により行われる暗号化及び復号の処理を、CPU210に行わせるように構成してもよい。
ROM230には、CPU210により実行される制御プログラムや、暗号演算器220が暗号化や復号の処理において使用する固有のパラメータが予め格納されている不揮発性半導体メモリである。CPU210は、暗号化装置200への電力供給が開始されたときに、この制御プログラムをROM230から読み出してその実行を開始することで、暗号化装置200の各構成要素の動作管理を行えるようになる。
RAM240は、CPU210や暗号演算器220が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
この暗号化装置200において、暗号演算器220は、個体別情報生成装置100が生成した個体別情報を暗号鍵として用いて、情報の暗号化処理を行う。また、この暗号化処理において暗号鍵として用いられた個体別情報は、その後に暗号演算器220が暗号化情報に対して行う復号処理にも使用する。
なお、個体別情報生成装置100で生成される個体別情報を暗号鍵の生成に用いる際に、生成された個体別情報のエントロピを更に向上させるための後処理(Post Processing )を行ってもよい。このために行われる後処理の一例として、線形フィードバックシフトレジスタ(LFSR)の使用を挙げることができる。LFSRは、排他的論理和回路で帰還をかけたシフトレジスタによって構成されるカウンタであり、個体別情報のエントロピを向上させることができる。従って、LFSRから出力されるデータ列を用いて暗号鍵の生成を行うようにすることで、よりランダム性の高い暗号鍵を生成することが可能になる。なお、LFSRは、専用のハードウェアを構成して用いるようにしてもよく、また、CPU210を用いてソフトウェアにより実現するようにしてもよい。
次に、個体別情報生成装置100を用いた認証システムについて説明する。この認証システムは、認証対象装置が正規のものであるか否かの認証を、認証装置が行うシステムである。
まず図14について説明する。図14は、この認証システムに用いられる認証対象装置の構成例を図解したものである。
この認証対象装置300は、図6、図7、及び図8に図解されている個体別情報生成装置100のいずれかを用いて構成されている。
認証対象装置300は、個体別情報生成装置100、CPU310、通信部320、ROM330、及びRAM340を備えて構成されている。なお、これらの各構成要素はバスライン350にいずれも接続されており、CPU310による管理の下で各種のデータを相互に授受することができるように構成されている。
個体別情報生成装置100は、電子デバイスであるデバイス1に実装されており、個体別情報を、この認証対象装置300のものとして生成する。
CPU310は、この認証対象装置300の各構成要素の動作を管理する中央演算部である。
通信部320は、各種のデータの送受信を行って、後述する認証装置との間で各種の情報の授受を行う。
ROM330には、CPU310により実行される制御プログラムが予め格納されている不揮発性半導体メモリである。CPU310は、認証対象装置300への電力供給が開始されたときに、この制御プログラムをROM330から読み出してその実行を開始することで、認証対象装置300の各構成要素の動作管理を行えるようになる。
RAM340は、CPU310が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
次に図15について説明する。図15は、前述の認証システムに用いられる認証装置の構成例を図解したものである。
この認証装置400は、CPU410、通信部420、認証処理部430、ROM440、及びRAM450を備えて構成されている。なお、これらの各構成要素はバスライン460にいずれも接続されており、CPU410による管理の下で各種のデータを相互に授受することができるように構成されている。
CPU410は、この認証装置400の各構成要素の動作を管理する中央演算部である。
通信部420は、図14の認証対象装置300との間で通信を行って、各種の情報の授受を行う。
認証処理部430は、認証対象装置300に対する認証処理を、後述するようにして行う。なお、認証処理部430を認証装置400に備える代わりに、認証処理部430により行われる認証処理を、CPU410に行わせることに構成してもよい。
ROM440には、CPU410により実行される制御プログラムや、認証処理部430が認証処理に用いる正規の認証対象装置300についての個体別情報が予め格納されている不揮発性半導体メモリである。CPU410は、認証装置400への電力供給が開始されたときに、この制御プログラムをROM440から読み出してその実行を開始することで、認証装置400の各構成要素の動作管理を行えるようになる。
RAM450は、CPU410や認証処理部430が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
次に、前述した認証システムによる認証動作について説明する。
まず、認証動作に先立ち、認証装置400のROM440には、正規の認証対象装置300が備えている個体別情報生成装置100生成する個体別情報を、予め記録させておく。
認証装置400のCPU410は、まず、通信部420に指示を与えて、個体別情報の送付要求を、認証対象装置300へ宛てて送信させる処理が行われる。
認証対象装置300のCPU310は、この送付要求を通信部320が受信したことを検出すると、個体別情報生成装置100に所定の指示を与えて個体別情報を生成させる処理が行われる。次に、CPU310は、通信部320に指示を与えて、生成された個体別情報を認証装置400へ宛てて送信させる処理が行われる。
認証装置400のCPU410は、認証対象装置300から送信された個体別情報を通信部420が受信すると、この個体別情報が、ROM440に予め記録されていた正規の認証対象装置300のものと一致するか否かを認証処理部430に判定させる処理を行う。ここで、両者の個体別情報が一致するとの判定結果が得られたときには、個体別情報の送信元の認証対象装置300が正規のものであるとの認証結果を得る。
なお、上述の認証動作において、ROM440に、正規の認証対象装置300が備えている個体別情報生成装置100が生成する個体別情報として、前述したチャレンジとレスポンスとの関係を複数組記録しておいてもよい。個体別情報生成装置100として、例えば図6に図解したものを使用する場合には、個体別情報生成装置100に入力するアドレス信号が表しているアドレスの順序をチャレンジとする。そして、そのチャレンジに応じて個体別情報生成装置100が生成する個体別情報をレスポンスとする。
この場合には、認証装置400のCPU410が、個体別情報の送付要求に、レスポンスとの関係がROM440に記録されている各チャレンジの情報を添付して通信部420に送信させるようにする。一方、認証対象装置300のCPU310は、この送付要求に添付されていた各チャレンジを個体別情報生成装置100に与えて、各チャレンジについてのレスポンスを生成させる。そして、CPU310は、生成された各レスポンスの情報を認証装置400へ宛てて通信部320に送信させる処理を行うようにする。このとき、認証装置400の認証処理部430は、通信部420で受信した各レスポンスの情報が、ROM440に記録されていた正規の認証対象装置300におけるものと全て一致するか否かを判定する処理を行う。ここで、両者のレスポンスの情報が全て一致するとの判定結果が得られたときには、当該レスポンスの送信元の認証対象装置300が正規のものであるとの認証結果を得る。前述の認証システムにおける認証動作を、以上のようにして行ってもよい。