【文献】
山本 大,外6名,ラッチの乱数出力位置を利用したPUFによるID生成/認証システムの信頼性向上手法,2011年 暗号と情報セキュリティシンポジウム概要集,2011年 1月25日,pp.1−8
(58)【調査した分野】(Int.Cl.,DB名)
前記数値出力部は、前記出力値生成回路の出力値が前記一定の出力値であるか前記不定の出力値であるかの判定を、該出力値生成回路から出力された所定数個の出力値が全て一致するか否かに基づいて行い、該判定結果に基づいて前記第一及び前記第二の数値群のうちのいずれかの数値を出力する請求項1に記載の個体別情報生成装置。
前記数値出力部は、前記出力値生成回路の出力値が前記所定値となる頻度を、該出力値生成回路から出力された所定数個の出力値における該所定値の個数に基づいて算出する請求項1に記載の個体別情報生成装置。
【背景技術】
【0002】
近年、プリンタカートリッジや、電池等のバッテリー、ゲーム機のカートリッジといった製品に関して、正規品の製造メーカとは異なる製造メーカによるクローン品が多く見られるようになっている。クローン品とは、正規品の内部構造の分析や正規品の内部に存在するICチップの解析等の結果を用いて製造された、正規品と同等の機能を有する製品である。これらのクローン品の中には、正規品を製造する正規メーカの知的財産等の権利を侵害するケースも多く、クローン対策技術が強く求められている。
【0003】
このようなクローン品を防止する手法として、正規品へ認証機能を付与することが行われている。この認証機能を実現する有効な手段のひとつがPUF(Physical Unclonable Function:物理的クローン作製不能機能)である。詳細は後述するが、PUFから生成される秘密情報は、顕微鏡での観察による解析では特定できない。従って、上記に挙げたようなクローン品への対策が必要な製品に対してPUFを組み込んで、PUFで秘密情報を生成することで認証機能を実現することは、クローン品への対策としての有効性が高い。
【0004】
PUFは、ある同一の入力に対して、PUFが実装されたデバイス毎に異なる出力を返す関数である。但し、デバイス毎に異なる値を出力するような関数を個別に設定する必要はなく、同一の回路(顕微鏡での解析を行っても、見た目は同一であって、その出力値が特定できない)がこの関数を実現する。つまり、PUF回路は、デバイス内の信号遅延や素子特性などの物理特性のわずかな違いを利用することで、その出力をデバイス毎に全く異なる値とする。従って、この出力はデバイス固有の値(「個体別情報」と称することとする)となる。
【0005】
理想的なPUF回路は、デバイス上に実装するとそのデバイスでは常に同一の個体別情報を出力する(再現性)一方、異なるデバイス上に実装されたPUF間では全く異なる個体別情報を出力する(ユニーク性)。このようなデバイスにおけるPUFの出力情報は、人における、「指紋」のような生体情報に喩えることができる。指紋は、同一人であれば年をとっても不変である(再現性)一方、別人の間では全く異なる(ユニーク性)という、理想的なPUFの出力情報と同様の性質を有している。
【0006】
また、同一の回路構成のPUF回路が、このような理想的な再現性とユニーク性と兼ね備えていれば、攻撃者が回路を分解し、内部を解析したところで、クローンチップを生成することはできない。
【0007】
このPUFは、識別情報(ID)の生成や暗号鍵の生成にも用いられる。従って、PUFを用いて認証機能を実現することが可能である。
多くの電子デバイス製品では、個々に固有のIDを必要とする。従来は、多くの場合において、それぞれのデバイス毎に異なる値をIDとして不揮発性メモリに書き込む作業が製造段階で行われていた。このIDの生成にPUFを用いると、セキュアにIDをチップ内に格納しておけるだけでなく、この書き込み作業のコストを低減させることもできる。
【0008】
また、暗号機能を含む製品はPUFを用いると安全性が向上する。具体例として、情報記録用の集積回路をカードに組み組んだスマートカードがある。また、通信の秘匿を保証するために、携帯電話に使用されるSIM(Subscriber Identification Module)カードや無線インターネット接続の端末などにも暗号機能が必須である。これらの機器での暗号化に使用する暗号鍵の生成にPUFを使用するようにすれば、暗号鍵が攻撃者に解析される危険性が大幅に低下し、安全性が向上する。
【0009】
次に、PUFの基本的な回路構成例を幾つか説明する。
なお、本明細書における以下の説明では、電位の異なる2値の論理レベルにおけるハイ・レベルを値「1」と表現し、ロー・レベルを値「0」と表現することとする。
【0010】
広く知られているPUFは、大きく分けて、遅延型PUFとメタスタビリティ(metastability )型PUFとの2つに分類することができる。
図1に図解するように、遅延型PUF1は、nビットのデータ(PUFでは「チャレンジ」と称されている)の入力に対して、1ビットのデータの出力(PUFでは「レスポンス」と称されている)を返すPUFである。従って、遅延型PUF1からmビットのレスポンスを得るためには、例えば、
図2に表で表したように、互いに異なるnビットのチャレンジm個を1個の遅延型PUF1に入力すればよい。また、m個の遅延型PUF1の各々から得られる1ビットのレスポンスを並べてmビットのレスポンスを得るようにすることも、もちろん可能である。
【0011】
この遅延型PUF1に分類されるPUFの例として、アービタ(Arbiter )PUF、グリッチ(Glitch)PUF、及びリングオシレータ(Ring Oscillator )PUFが知られている。以下、これらのPUFについて説明する。
【0012】
まずアービタPUFについて説明する。アービタPUFは回路遅延を利用してPUFを実現するものである。
図3について説明する。
図3は、アービタPUFの構成例を図解したものである。
【0013】
このアービタPUF10は、計2n個の2入力1出力のセレクタ11−0a、11−0b、11−1a、11−1b、11−2a、11−2b、…、11−(n−1)a、及び11−(n−1)bと、D型フリップフロップ回路12と、を備えて構成されている。
【0014】
なお、以下の説明では、特に区別する必要がない場合には、セレクタ11−0a、11−0b、11−1a、11−1b、11−2a、11−2b、…、11−(n−1)a、及び11−(n−1)bを総称して「セレクタ11」とする。
【0015】
セレクタ11−1a及び11−1bは、その第一入力端子にセレクタ11−0aの出力端子が接続されており、その第二入力端子にセレクタ11−0bの出力端子が接続されている。また、セレクタ11−2a及び11−2bは、その第一入力端子にセレクタ11−1aの出力端子が接続されており、その第二入力端子にセレクタ11−1bの出力端子が接続されている。残りのセレクタ11も同様の接続がなされている。
【0016】
なお、セレクタ11には値Cha[n−1:0]が入力される。この値Cha[n−1:0]は、セレクタ11の2つの入力端子のどちらに入力された信号を出力端子に出力するかの選択指示をセレクタ11に与えるためのものであり、このアービタPUF10に対するnビットのチャレンジの入力である。
【0017】
図3の構成において、例えば、セレクタ11−1a及び11−1bには、そのどちらにもcha[1]が入力されている。セレクタ11−1aは、cha[1]=1のときには、第一入力端子に入力された信号を出力端子に出力し、cha[1]=0のときには、第二入力端子に入力された信号を出力端子に出力する動作を行うものとする。その一方、セレクタ11−1bは、cha[1]=1のときには、第二入力端子に入力された信号を出力端子に出力し、cha[1]=0のときには、第一入力端子に入力された信号を出力端子に出力する動作を行うものとする。また、他のセレクタ11についても同様の動作を行うものとする。
【0018】
このアービタPUF10において、D型フリップフロップ回路12は「アービタ」と称される。このD型フリップフロップ回路12は、データ入力端子Dにセレクタ11−(n−1)aの出力端子が接続されており、クロック入力端子CLKにセレクタ11−(n−1)bの出力端子が接続されている。このD型フリップフロップ回路12の出力が、このアービタPUF10の出力Rとなる。なお、D型フリップフロップ回路12は、初期化時にはリセットされて出力は0とされる。
【0019】
以上のように、このアービタPUF10は、計2n個のセレクタ11がn個ずつ直列に接続されてD型フリップフロップ回路12に接続される対称的な構成を有している。なお、セレクタ11相互間の接続、並びにセレクタ11−(n−1)a及び11−(n−1)bとD型フリップフロップ回路12との間の接続における配線長も、可能な限り、この対称性を保つように等しくしておくことが好ましい。
【0020】
このアービタPUF10には、前述したチャレンジの入力の他に、D型フリップフロップ回路12のクロック端子に入力するとD型フリップフロップ回路12に状態変化を生じさせるエッジ信号が入力される。なお、本実施形態では、このエッジ信号を、論理レベルが0から1へと変化する立ち上がりエッジ信号とする。
【0021】
アービタPUF10に入力された立ち上がりエッジ信号は、セレクタ11−0a及び11−0bの第一入力端子及び第二入力端子に入力される。すると、この立ち上がりエッジ信号は、チャレンジcha[n−1:0]の値に応じた経路でセレクタ11を経由して、アービタであるD型フリップフロップ回路12のデータ入力端子D及びクロック入力端子CLKに到着する。
【0022】
このときのD型フリップフロップ回路12の出力は、データ入力端子Dとクロック入力端子CLKとのどちらに立ち上がりエッジ信号の0から1への変化点が先着したかによって決定し、この出力がアービタPUF10の出力Rとなる。つまり、この変化点がクロック入力端子CLKに先着すればアービタPUF10の出力Rは0となり、この変化点がデータ入力端子CLKに先着すればアービタPUF10の出力Rは1となる。
【0023】
前述したように、このアービタPUF10は、計2n個のセレクタ11がn個ずつ直列に接続された対称的な構成を有している。また、前述したように、各素子間の配線長はほぼ等しく構成されている。従って、回路論理上は、D型フリップフロップ回路12のデータ入力端子Dとクロック入力端子CLKとへの立ち上がりエッジ信号の到着は同時であり、この両者に到着した立ち上がりエッジ信号は同位相のはずである。ところが、実際には、電子デバイスへの実装条件に起因するゲート遅延や配線遅延により、この両者への立ち上がりエッジ信号の到着が同時とならない場合がある。この到着時刻のずれの程度は、電子デバイス固有のものであるが、デバイス毎では異なるものとなる。つまり、この到着時刻のずれの程度は、前述したPUFの性質である、再現性とユニーク性とを兼ね備えており、アービタPUF10を実装した電子デバイスの個体別情報として利用することができる。
【0024】
以上のように、
図3のアービタPUF10は、D型フリップフロップ回路12に状態変化を生じさせるエッジ信号をそのクロック端子に入力すると共に、このエッジ信号と論理上は同位相としたエッジ信号をそのデータ入力端子に入力するように構成されている。そして、このD型フリップフロップ回路12の出力端子から出力される信号が、アービタPUF10の出力となるように構成されている。
【0025】
また、前述したように、このアービタPUF10は、チャレンジCha[n−1:0]の値によって、立ち上がりエッジ信号についての、セレクタ11を経由する経路を変更することができる。従って、チャレンジCha[n−1:0]の値を変更すると、異なる出力Rの値が得られる。この出力Rが、チャレンジCha[n−1:0]に対してアービタPUF10が返すレスポンスとなる。
【0026】
そこで、特定のデバイスに実装したアービタPUF10におけるチャレンジCha[n−1:0]とレスポンスRとの関係を予め調べて記録しておく。このようにすることで、その後に検査対象のデバイスのアービタPUF10のチャレンジCha[n−1:0]とレスポンスRとの関係を調べて上述の記録内容と照合すれば、検査対象のデバイスが特定のデバイスであるか否かの認証を行うことができる。
【0027】
なお、アービタPUF10への同一のチャレンジに対してレスポンスを複数回生成した場合に、チャレンジの値によっては、D型フリップフロップ回路12への立ち上がりエッジ信号の到着の時間差が極めて小さいことがある。この場合には、2つの入力端子のうち先に到着する方が、時によって変化することもあり得るため、レスポンスの値が0若しくは1の両方をとる(乱数となる)こともある。
【0028】
次にグリッチPUFについて説明する。
グリッチPUFは,論理回路を構成する各ゲートの入出力信号間の遅延関係によって発生する、「グリッチ」と呼ばれる現象を利用したPUFである。まず、このグリッチについて、
図4A及び
図4Bを用いて説明する。
【0029】
図4Aに図解されている論理回路は、XOR(排他的論理和)回路21の出力がAND(論理積)回路の入力の1つに接続されて構成されている。この論理回路では、XOR回路21の2つの入力と、AND回路22の2つの入力のうちXOR回路21が接続されていない方の入力とに、それぞれ入力信号x1、x2、及びx3が入力され、XOR回路21から出力信号yが出力される。
【0030】
この論理回路において、入力信号x1、x2、及びx3の論理レベルを0から1に変化させてみる。すると、このときの入力信号x1と入力信号x2との間での信号変化の時間差により、まず、XOR回路21の出力として、矩形状のパルス(グリッチ)が発生する。このグリッチが入力信号x3の信号変化よりも後にAND回路22へ到達した場合には、出力信号yとして、グリッチがAND回路22から出力される。一方、XOR回路21から出力されるグリッチが、入力信号x3の信号変化よりも先にAND回路22へ到達した場合には、出力信号yとして、グリッチがAND回路22から出力されることはない。
【0031】
グリッチPUFは、この論理回路の特性を利用したPUFであり、入力信号x1、x2、及びx3がチャレンジに相当する。この論理回路は、チップ毎に異なるゲート遅延、ゲートのドライブ能力、配線遅延等の要因により、同一の回路構成であっても、同一の入力に対して、その出力波形(過渡状態)に存在するグリッチの個数は異なってくる。そこで、出力されるグリッチの個数が偶数個の場合には、1ビットのレスポンス値として0を出力し、その個数が奇数個の場合には、1をレスポンスとする.
【0032】
図5は、グリッチPUFの構成例を図解したものである。
このグリッチPUF20は、グリッチ発生回路23とグリッチ形状判定回路24とを備えて構成されている。ここで、グリッチ発生回路23は、例えば、AES暗号で使用されるSボックス(Substitution Box)回路であり、グリッチ形状判定回路24は、例えばトグルFF(Flip Flop)回路を用いる。
【0033】
AES暗号のSボックス回路は8ビット入力・8ビット出力である.従って、最大で8ビットのレスポンスを同時に生成可能であるが、このうちの1つを選択することで,アービタPUFと同様に、1ビットのレスポンスを生成することができる。
【0034】
なお、グリッチPUF20への同一のチャレンジに対してレスポンスを複数回生成した場合に、チャレンジの値によっては,グリッチ発生回路23内の信号変化の時間差が極めて小さいことがある。この場合には、2つの信号のうち先に伝搬する方の信号が、時によって変化することもあり得るため、レスポンスの値が0若しくは1の両方をとる(乱数となる)こともある。
【0035】
次にリングオシレータPUFについて説明する。
リングオシレータPUFとは、インバータ回路を奇数個直列接続した「リングオシレータ」を利用したPUFである。
図6は、リングオシレータPUFの構成例である。
【0036】
リングオシレータPUF30は、n個のリングオシレータ31−1、31−2、…、31−n、2個のマルチプレクサ32−1及び32−2、2個のカウンタ33−1及び33−2、並びに比較器34を備えて構成されている。
【0037】
リングオシレータ31−1、31−2、…、31−nは、いずれも同一個数のインバータ回路を直列接続して構成されているが、チップ毎に、また同一チップにおいて、ゲート遅延や配線遅延のばらつきが存在するため、各々の発振周波数がわずかに異なる。そこで、リングオシレータ31−1、31−2、…、31−nの各々の出力信号(クロック信号)のうちで任意の2つの出力信号をマルチプレクサ32−1及び32−2により選択して、それぞれカウンタ33−1及び33−2に入力する。このときに、リングオシレータ31−1、31−2、…、31−nのうちのいずれの2つを選択するかを特定する入力、つまり、マルチプレクサ32−1及び32−2への選択指示を行う信号が、チャレンジに相当する。
【0038】
カウンタ33−1及び33−2の各々に入力されるクロック信号は、周波数がわずかに異なるため、所定時間が経過した後のカウント値の大小関係は、選択された2つのオシレータの周波数の大小関係を表している。そこで、カウンタ33−1及び33−2の各々のカウント値の大小関係を比較器34により求め、この大小関係をビット情報に変換する。このビット情報をレスポンスとしたものがリングオシレータPUF30である。
【0039】
なお、リングオシレータPUF30において、同一のチャレンジに対して,レスポンスを複数回生成した場合,チャレンジの値によっては、選択された2つのオシレータの周波数が極めて近い場合もある。そのため、時によって、カウンタ値の大小関係が入れ替わることもあり、結果としてレスポンスの値が0若しくは1の両方をとる(乱数となる)こともある。
【0040】
次に、メタスタビリティ型PUFについて説明する。メタスタビリティ型PUFは、電子回路の不定状態を利用するPUFである。メタスタビリティ型PUFに分類されるPUFの例として、SRAM−PUF及びバタフライ型PUFが知られている。以下、これらのPUFについて説明する。
【0041】
まずSRAM−PUFについて説明する。
SRAM(Static Random Access Memory )への電力供給を開始した直後のメモリセルの初期値は、デバイスに依存した複雑な内部状態から決定されるため、ランダムな値となる。SRAM−PUFは、この初期値のばらつきを利用する。SRAM−PUFでは、メモリセル・アドレスがチャレンジに相当し、そのメモリセル・アドレスの初期値がレスポンスに相当し、後述するバタフライ型PUFのラッチ部分が、SRAM−PUFのメモリセルに相当する。
【0042】
次にバタフライ型PUFについて説明する。バタフライ型PUFは、RSラッチ回路のメタステーブルを利用してPUFを実現するものである。
まず、メタステーブルについて、
図7A及び
図7Bを用いて説明する。
【0043】
図7Aには、RSラッチ回路の構成例が図解されている。このRSラッチ回路は、NAND(否定論理積)回路41及び42を用いて構成されている。
このRSラッチ回路の入力は負論理である。なお、図面においては、負論理の信号を信号名の上にオーバーバーを付すことで表現しているが、本明細書においては、負論理の信号を“#”で表記するものとする。従って、例えば、
図7AのRSラッチ回路のセット入力は“#S”と表記し、リセット入力は“#R”と表記する。
【0044】
NAND回路41の2つの入力には、それぞれ、セット入力“#S”と、NAND回路42の出力とが入力される。また、NAND回路42の2つの入力には、それぞれ、リセット入力“#R”と、NAND回路41の出力とが入力される。また、NAND回路41の出力がRSラッチ回路の出力Qとなる。なお、NAND回路42の出力からは、出力“#Q”が出力される。
【0045】
図7Bは、この
図7AのRSラッチ回路の真理値表である。なお、この真理値表においては、セット入力S及びリセット入力Rを正論理で表記している。
真理値表からも分かるように、
図7Aの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となる。
【0046】
図7AのRSラッチ回路は、以上の入力の組み合わせのいずれかであれば、出力の論理は安定している。ところが、このRSラッチ回路は、入力S=1且つ入力R=1のときには、Q=“#Q”=1となってしまう。つまり、この場合には、本来は反対の論理を示すはずであるQの論理値と“#Q”の論理値とが、揃って「1」となってしまう。このとき、このRSラッチ回路の出力は、どちらも、中間電位の不安定な状態となっている。このような、デジタル回路としては異常である不安定な状態が、メタステーブル(metastable)と呼ばれている。一般的には、このようなメタステーブルの状態を回避するために、RSラッチ回路に対するS=1且つR=1の入力は禁止される。
【0047】
次に、このようなRSラッチ回路のメタステーブルを利用するバタフライ型PUFについて説明する。
図8は、このバタフライ型PUFの構成例である。
このバタフライ型PUF40は、
図7AのRSラッチ回路のセット入力“#S”及びリセット入力“#R”の両方に同一の値Aを入力するように構成したものである。ここで、このバタフライ型PUF40の出力である、RSラッチ回路の出力Q及び出力“#Q”を、それぞれ、B及びCとする。つまり、このバタフライ型PUF40は、RSラッチ回路に対しメタステーブル状態とする入力を与えると共に、このRSラッチ回路の出力端子から出力される信号を、このバタフライ型PUF40の出力とするように構成した回路である。
【0048】
このバタフライ型PUF40は、入力A=0のときは、出力B及び出力Cはどちらも1となり、この状態で出力の値は安定している。ところが、ここで、値Aを0から1に変化させると、出力Bが1であって出力Cが0である状態と、出力Bが0であって出力Cが1である状態とが生じて、出力が不定となる。これは、RSラッチ回路がメタステーブルの状態に置かれており、その出力が不確定の状態になっているためである。バタフライ型PUF40は、この不確定性を利用したPUFである。
【0049】
このバタフライ型PUF40の出力は2値(0と1)のどちらかの値をとる。しかしながら、バタフライ型PUF40をデバイスに実装すると、常に0を出力するもの、及び、常に1を出力するものと、出力が0と1とで定まらないもの、すなわち乱数を出力するものとの3つの態様のものが得られ、この出力の態様には再現性がある。そこで、このバタフライ型PUF40をデバイスに複数実装し、その各々から得られる出力を、バタフライ型PUF40を実装したデバイスについての個体別情報として利用することができる。
【0050】
次に
図9について説明する。
図9は、背景技術である個体別情報生成装置を図解したものである。
この個体別情報生成装置50は、電子デバイスであるデバイス60に、n個のPUF51(PUF51−1、51−2、…、51−n)を実装して構成されている。なお、
図9では、PUF51−1、51−2、51−3、51−4、51−5、及び51−6の各々に、
図8に図解したバタフライ型PUF40を描いているが、これに限定されるものではない。PUF51としては、例えば、前述した遅延型PUF及びメタスタビリティ型PUFのいずれでもよい。
【0051】
この個体別情報生成装置50では、n個実装されたPUF51から、どれを選択するかが、前述したチャレンジに相当する。
図9は、このチャレンジによって、PUF51−1、51−2、51−3、51−4、51−5、及び51−6が選択された状態を表現している。この6個のPUF51の各々の出力RES[5:0]は2値の値(0または1)をとるので、これらの値を並べて6ビットのビット列を形成する。このビット列がレスポンスとなり、デバイス60の個体別情報として利用することができる。なお、この個体別情報生成装置50がとり得る個体別情報のパターン数は、計6個のPUF51を選択するので、2の6乗パターン、すなわち64パターンである。
【0052】
但し、前述したように、PUF51は乱数を出力する場合がある。
図4は、計6個のPUF51のうち、PUF51−3及び51−4が乱数を出力している場合を表現している。このような乱数を出力するPUF51がチャレンジによる選択に含まれてしまうと、デバイス60で不変であるはずのレスポンスが異なる値となることがあり、再現性が失われてしまうため、デバイス60の個体別情報として利用できなくなってしまう。
【0053】
この点に関し、個体別情報生成装置50に符号誤り訂正回路を備えるという技術が知られている。この技術では、チャレンジによって選択されたPUF51の出力を並べて構成したビット列をこの符号誤り訂正回路に入力し、その出力を個体別情報生成装置50のレスポンスとするように構成する。つまり、PUF51から上述のようにして生成されるビット列に含まれる乱数を符号誤り訂正回路で補正して、デバイス60では、同一のチャレンジに対して常に同一のレスポンスが得られるようにする。この技術では、このようにして、個体別情報生成装置50の出力の再現性を確保している。
【0054】
この他の背景技術として、電子デバイスの物理特性の違いを利用して乱数を生成する技術が幾つか知られている。そのひとつに、デジタル入力値に対して一義的に決定されないデジタル出力値を得ると共に、このデジタル出力値における「0」と「1」の出現頻度を均等にするという乱数生成の技術がある。
【発明を実施するための形態】
【0063】
まず
図10について説明する。
図10は、個体別情報生成装置の一実施例の機能ブロック図である。
個体別情報生成装置100は、電子デバイスであるデバイス60に、出力値生成回路110と数値出力部120とを複数(n個とする)実装し、更に、個体別情報生成部130を実装して構成されており、デバイス60についての個体別情報を生成する。
【0064】
複数の出力値生成回路110は、いずれも同一の回路構成であって、その各々が、特定の入力に対しての出力が一義的には定まらずに個々に所定の一定の出力値若しくは不定の出力値を出力する回路である。より具体的には、出力値生成回路110は、例えば、前述した遅延型PUF(例えば、アービタPUF、グリッチPUF、若しくはリングオシレータPUF)若しくはメタスタビリティPUF(例えばSRAM−PUF若しくはバタフライ型PUF)である。
【0065】
数値出力部120は、複数の出力値生成回路110の各々の出力値に基づいて所定の数値を出力する。より具体的には、数値出力部120は、当該出力値が前述の一定の出力値である場合には、当該出力値に応じて選択される、互いに値の異なる第一の数値群のうちのいずれかの数値を出力する。また、数値出力部120は、当該出力値が前述の不定の出力値の場合には、当該出力値が所定値となる頻度に応じて選択される、値が当該第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を出力する。このために、数値出力部120は、例えば、出力値生成回路110の出力値が一定の出力値であるか不定の出力値であるかを判定し、この判定結果に基づいて第一及び第二の数値群のうちのいずれかの数値を出力するようにしてもよい。なお、この判定は、出力値生成回路110から出力された所定数個の出力値が全て一致するか否かに基づいて行うようにする。また、数値出力部120は、出力値生成回路110の出力値が所定値となる頻度を、例えば、出力値生成回路110から出力された所定数個の出力値における当該所定値の個数に基づいて算出するようにしてもよい。
【0066】
個体別情報生成部130は、複数の出力値生成回路110の各々の出力値に基づき数値出力部120から出力される数値に基づいて、個体別情報を生成する。
前述した、符号誤り訂正回路を利用した個体別情報の生成では、PUF51が乱数を出力している場合に、誤り訂正によってその出力値を1つの値に固定してしまうというものであった。一方、この個体別情報生成装置100では、出力値生成回路110が不定の出力値を出力している場合には、その出力値が所定値となる頻度に応じて選択される数値を数値出力部120が出力する。そして、個体別情報生成部130による個体別情報の生成は、この出力にも基づいて行われる。このようにしたことで、符号誤り訂正回路は必須のものではなくなり、個体別情報の生成に要する回路規模が削減される。
【0067】
なお、複数の出力値生成回路110は順序が予め定められていてもよい。この場合には、個体別情報生成部130は、複数の出力値生成回路110の各々について数値出力部120から出力される数値を、この順序に基づいて並べて得られる数列データに対してエントロピ圧縮を行うようにする。個体別情報生成部130は、このエントロピ圧縮によって得られた値に基づいて個体別情報を生成するようにしてもよい。
【0068】
次に、数値出力部120の具体的構成について説明する。
本実施例では、数値出力部120に入力される出力値生成回路110の出力値が固定値「0」である場合には、数値出力部120は数値「00」を出力するようにする。また、数値出力部120に入力される出力値生成回路110の出力値が固定値「1」である場合には、数値出力部120は数値「11」を出力するようにする。これらの数値「00」及び「11」は、互いに値の異なる第一の数値群の一例である。
【0069】
更に、数値出力部120に入力される出力値生成回路110の出力値が「0」と「1」との両方の値をとる不定値である場合には、数値出力部120は数値「10」若しくは「01」を出力するようにする。但し、ここで、出力値生成回路110の出力値が「1」である頻度が「0」である頻度よりも高い場合(すなわち、出力値が「1」である頻度が50パーセントよりも高い場合)には、数値出力部120は数値「10」を出力するようにする。また、出力値生成回路110の出力値が「1」である頻度が「0」である頻度よりも低い場合(すなわち、出力値が「0」である頻度が50パーセントよりも高い場合)には、数値出力部120は数値「01」を出力するようにする。これらの数値「10」及び「01」は、値が前述の第一の数値群(すなわち、数値「00」及び「11」)のいずれとも異なり、且つ互いにも値が異なっている第二の数値群の一例である。
【0070】
出力値生成回路110の出力値が不定値である場合に、その出力値生成回路110が出力する各値の出力頻度は、個々の出力値生成回路110において一定であり、再現性を有している。従って、このようにして、出力値生成回路110の出力値が「1」である頻度に応じて、数値出力部120が、数値「10」若しくは「01」を出力するようにすることで、前述したような符号誤り訂正回路による個体別情報の再現性の確保が必須のものではなくなる。更には、訂正に使用される冗長データも不要となるので、結果として、回路の実装コストが大幅に削減される。
【0071】
ここで
図11について説明する。
図11は、数値出力部120の具体的構成例を図解したものである。
図11の数値出力部120は、出力値生成回路110から出力された連続する1023ビット分の出力値が全て「0」である場合には「00」を出力し、当該連続する1023ビット分の出力値が全て「1」である場合には「11」を出力する。また、この数値出力部120は、当該1023ビット分の出力値のうち、値が「0」である個数が512個以上である場合(すなわち、出力値の50パーセント以上が「0」の場合)には、「01」を出力する。更に、この数値出力部120は、当該1023ビット分の出力値のうち、値が「1」である個数が512個以上である場合(すなわち、出力値の50パーセント以上が「1」の場合)には、「10」を出力する。
【0072】
この数値出力部120は、ビット数変換器121、加算器122、レジスタ123、リダクション演算回路124及び126、AND(論理積)回路125及び128、NOT(否定)回路127、及びOR(論理和)回路129を備えて構成されている。
【0073】
ビット数変換器121は、出力値生成回路110から出力される1ビットの出力値を10ビットのデータに変換する変換器であり、当該1ビットの出力値を最下位ビットの値とし、当該最下位ビットに上位9ビット分の「0」を付加して得られるデータを出力する。
【0074】
加算器122は、ビット数変換器121から出力される10ビットのデータを、レジスタ123に格納されている10ビットのデータに加算し、その加算結果を出力する。
レジスタ123は、加算器122から出力される10ビットの加算結果が格納される。従って、ビット数変換器121、加算器122、及びレジスタ123により、出力値生成回路110から出力される出力値が「1」であった個数を計数するカウンタ回路が構成されている。この個数が512個以上1023個以下の場合には、レジスタ123に格納される10ビットのデータのうちの最上位のビットの値が「1」となり、この個数が0個以上511個以下の場合には、当該最上位のビットの値が「0」となる。この最上位のビットの値が、この数値出力部120からの2ビットの出力のうちの上位ビットの出力として導き出されると共に、AND回路125及び128各々への入力の1つとされている。
【0075】
なお、レジスタ123は、出力値生成回路110から1023ビット分の値が出力される度に、格納されている全てのビットの値が「0」にリセットされる。
リダクション演算回路124及び126は、どちらも、レジスタ123に格納されている10ビットのデータに対するリダクション演算を行う回路である。但し、リダクション演算回路124は、当該10ビットのデータに対して論理積のリダクション演算を行うのに対し、リダクション演算回路126は、当該10ビットのデータに対して論理和のリダクション演算を行う。従って、リダクション演算回路124は、当該10ビットのデータの全ての値が「1」である場合にのみ値「1」を出力し、当該10ビットのデータのうちで少なくとも1ビットの値が「0」である場合には値「0」を出力する。一方、リダクション演算回路126は、当該10ビットのデータのうちで少なくとも1ビットの値が「1」である場合には値「1」を出力し、当該10ビットのデータの全ての値が「0」である場合にのみ値「0」を出力する。
【0076】
AND回路125には、リダクション演算回路124の出力と、レジスタ123に格納されている10ビットのデータのうちの前述した最上位のビットの値とが入力される。従って、AND回路125は、出力値生成回路110から出力される出力値が「1」であった個数が1023個の場合にのみ(すなわち、当該出力値が全て「1」であった場合にのみ)値「1」を出力し、その他の場合には値「0」を出力する。
【0077】
一方、AND回路128には、リダクション演算回路126の出力と、レジスタ123に格納されている10ビットのデータのうちの前述した最上位のビットの値をNOT回路127によって反転した値とが入力される。従って、AND回路128は、出力値生成回路110から出力される出力値が「1」であった個数が1個以上511個以下の場合には値「1」を出力する。そして、その他の場合、すなわち、出力値生成回路110から出力される出力値が「1」であった個数が0個若しくは512個以上1023個以下の場合には、AND回路128は値「0」を出力する。
【0078】
OR回路129には、AND回路125及び128各々の出力が入力される。従って、OR回路129は、AND回路125及び128の出力のうちの少なくとも一方の値が「1」のとき、すなわち、出力値生成回路110から出力される出力値が「1」であった個数が1個以上511個以下若しくは1023個の場合に、値「1」を出力する。一方、この他の場合、すなわち、出力値生成回路110から出力される出力値が「1」であった個数が0個若しくは512個以上1022個以下の場合に、OR回路129は値「0」を出力する。このOR回路129の出力が、この数値出力部120からの2ビットの出力のうちの下位ビットの出力として導き出される。
【0079】
以上の動作をまとめると、出力値生成回路110からの1023ビット分の出力値のうちで値が「1」の個数が0個である場合(すなわち、当該出力値が全て「0」であった場合)には、数値出力部120からの出力は、上位ビット・下位ビット共に「0」となる。また、この1023ビット分の出力値のうちで値が「1」の個数が1023個である場合(すなわち、当該出力値が全て「1」であった場合)には、数値出力部120からの出力は、上位ビット・下位ビット共に「1」となる。更に、この1023ビット分の出力値のうちで値が「1」の個数が1個以上511個以下である場合(すなわち、当該出力値の50パーセント以上が「0」の場合)には、数値出力部120からの出力は、上位ビットが「0」となり、下位ビットが「1」となる。そして、この1023ビット分の出力値のうちで値が「1」の個数が512個以上1022個以下である場合(すなわち、出力値の50パーセント以上が「1」の場合)には、数値出力部120からの出力は、上位ビットが「1」となり、下位ビットが「0」となる。
【0080】
なお、数値出力部120を、
図11の構成例のようなハードウェアのみで構成する代わりに、数値出力部120の機能を演算処理装置で実現させるプログラム(ソフトウェア)を作成し、当該プログラムを当該演算処理装置で実行させるようにして構成してもよい。
【0081】
なお、
図10の個体別情報生成装置100の機能ブロック図では、複数の出力値生成回路110の各々について、数値出力部120を1つずつ備えるように構成されている。この代わりに、個体別情報生成装置100に数値出力部120を1つのみ備え、更に、複数の出力値生成回路110の各々の出力から1つの出力を選択するセレクタを備えて、選択された出力を数値出力部120に入力する構成としてもよい。
【0082】
ここで
図12について説明する。
図12は、個体別情報生成装置100の第一の具体的構成例である。この第一の構成例は、メタスタビリティ型PUFの一例である、前述したバタフライ型PUF40を出力値生成回路110として使用したものである。
【0083】
図12において、出力値生成回路110であるN個のバタフライ型PUF40−1、…、40−Nの各々の出力は、セレクタ101に入力される。なお、このバタフライ型PUF40−1、…、40−Nは、この個体別情報生成装置100に与えられた前述のチャレンジによって選択されたものとする。
【0084】
セレクタ101は、このN個の出力から順に1個ずつ出力を選択して数値出力部120へ入力する。
数値出力部120は前述した
図11の構成を備えている。
【0085】
個体別情報生成部130は、数値出力部120から出力される数値に基づいて個体別情報を生成する。この構成例では、個体別情報生成部130は、2Nビットのシフトレジスタ131と、エントロピ圧縮部132とを備えている。
【0086】
シフトレジスタ131には、バタフライ型PUF40−1、…、40−Nの出力のうちの1つが順にセレクタ101により選択されて数値出力部120に入力されたときに、数値出力部120から出力される2ビットの数値が順次格納される。
【0087】
エントロピ圧縮部132は、シフトレジスタ131に並べられた2Nビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報(すなわち、前述のレスポンス)として出力する。
【0088】
シフトレジスタ131に格納された値をそのままレスポンスとして使用すると、バタフライ型PUF40−1、…、40−Nの順序と、シフトレジスタ131に格納されているビット列の並び順とが1対1対応してしまう。従って、この対応関係を推測されてしまうと、任意のチャレンジに対するレスポンスの値が推測できてしまう可能性がある。エントロピ圧縮部132は、この推測を困難なものとするためのものである。
【0089】
エントロピ圧縮部132としては、例えば一方向性関数回路を使用する。一方向性関数回路は、入力が一意であれば、出力が一意に定まるが、出力から入力を求めることは非常に困難な関数である。なお、本実施例では、エントロピ圧縮部132として、入力されたビット列に対するハッシュ関数値を得る回路を用いる。より具体的には、この回路として、米国連邦情報処理基準(Federal Information Processing Standard/FIPS)に採用されているハッシュ関数であるSHA−256によるハッシュ関数値を得る回路を用いる。このエントロピ圧縮部132を用いることで、レスポンスからチャレンジを推測することが極めて困難なものとなり、安全性が向上する。
図12の個体別情報生成装置100では、以上のようにして個体別情報が生成される。
【0090】
次に
図13について説明する。
図13は、個体別情報生成装置100の第二の具体的構成例である。この第二の構成例は、メタスタビリティ型PUFの一例である、前述したSRAM−PUFを出力値生成回路110として使用したものである。
【0091】
図13において、出力値生成回路110であるSRAM111のN個のメモリセル111−1、…、111−Nの各々の出力は、セレクタ101に入力される。なお、このメモリセル111−1、…、111−Nは、この個体別情報生成装置100に与えられた前述のチャレンジによって選択されたものとする。ここで、SRAM111に対して電力の供給と切断とを繰り返す度に、メモリセル111−1、…、111−Nからは不定値が出力される。
【0092】
セレクタ101は、このN個の出力から順に1個ずつ出力を選択して数値出力部120へ入力する。
数値出力部120は前述した
図11の構成を備えている。
【0093】
個体別情報生成部130は、数値出力部120から出力される数値に基づいて個体別情報を生成する。個体別情報生成部130は、この構成例では、2Nビットのシフトレジスタ131と、エントロピ圧縮部132とを備えている。
【0094】
シフトレジスタ131には、メモリセル111−1、…、111−Nのうちの1つからの1023ビット分の出力が入力されることによって数値出力部120から出力される2ビットの数値が、セレクタ101による選択順に従って格納される。従って、セレクタ101がメモリセル111−1、…、111−Nの出力のうちの1つを順に選択することによって、シフトレジスタ131には、2Nビットのビット列が格納される。
【0095】
エントロピ圧縮部132は、シフトレジスタ131に並べられた2Nビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報(すなわち、前述のレスポンス)として出力するものであり、
図12におけるものと同様のものを使用する。
【0096】
図13の個体別情報生成装置100では、以上のようにして個体別情報が生成される。
次に
図14について説明する。
図14は、個体別情報生成装置100の第三の具体的構成例である。この第三の構成例は、前述した遅延型PUF(アービタPUF、グリッチPUF、リングオシレータPUF等)を出力値生成回路110として1つのみ使用して構成したものである。
【0097】
図14における遅延型PUF1は、
図1におけるものと同一のものであり、nビットのチャレンジの入力に対して、1ビットのレスポンスを返す。
数値出力部120は前述した
図11の構成を備えている。
【0098】
個体別情報生成部130は、数値出力部120から出力される数値に基づいて個体別情報を生成する。個体別情報生成部130は、この構成例では、2Mビットのシフトレジスタ131と、エントロピ圧縮部132とを備えている。
【0099】
図14の構成例では、遅延型PUF1には、各々nビットの互いに異なるチャレンジが所定の順序でM個(チャレンジ0、チャレンジ1、チャレンジ2、…、チャレンジM−1)与えられる。また、M個の各チャレンジにおいては、同一値のnビットのチャレンジを遅延型PUF1に1023回与えることで、1023ビット分の出力を遅延型PUF1から得る。
図15の表は、遅延型PUF1における各チャレンジの値と各レスポンスとの関係の一例を表したものである。
【0100】
シフトレジスタ131には、同一値のnビットのチャレンジを1023回与えたときの遅延型PUF1からの1023ビット分の出力が入力されることによって数値出力部120から出力される2ビットの数値が、M個のチャレンジの順に従って格納される。従って、M個のチャレンジのうちの1つが順に遅延型PUF1に与えられることによって、シフトレジスタ131には、2Mビットのビット列が格納される。
【0101】
エントロピ圧縮部132は、シフトレジスタ131に並べられた2Mビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報(すなわち、前述のレスポンス)として出力するものであり、
図12におけるものと同様のものを使用する。
【0102】
図14の個体別情報生成装置100では、以上のようにして個体別情報が生成される。
なお、
図12におけるN個のバタフライ型PUF40−1、…、40−Nの各々をN個の遅延型PUFに置き換えて個体別情報生成装置100を構成するようにしてもよい。
【0103】
すなわち、
図16に図解した個体別情報生成装置100の第四の具体的構成例のように、出力値生成回路110として、各々異なるチャレンジが与えられている遅延型PUF1−1、…、1−Nを備えて、その各々の出力を、セレクタ101に入力するようにする。なお、この遅延型PUF1−1、…、1−Nは、この個体別情報生成装置100に与えられたチャレンジによって選択されたものとする。このように構成した個体別情報生成装置100でも、
図12に図解したものと同様に動作する結果、個体別情報が生成される。
【0104】
次に、これまで説明した個体別情報生成装置50及び100により生成される個体別情報のパターン数についての定量的な見積もり例について説明する。
なお、ここでは、見積もりの前提として、バタフライ型PUF40を、出力値生成回路110として、デバイス60に128個実装するものとし、そのうちのT個のバタフライ型PUF40の出力値が不定であるとする。そして、T=8とT=32の場合についての個体別情報のパターン数の見積もりを行うこととする。
【0105】
まず、
図9の個体別情報生成装置50に符号誤り訂正回路を追加した場合には、不定の出力値を誤り訂正によって所定値とするので、Tの値にかかわらず、個体別情報のパターン数は2
128 通りとなる。但し、不定値を出力するバタフライ型PUF40の個数が多いと、誤り訂正に使用される冗長データのデータ量が、その個数に応じて増大する。
【0106】
ここで、不定値を出力するバタフライ型PUF40の当該出力値を、個体別情報の生成に使用せずに廃棄してしまう場合を考える。この場合において、T=8であれば、一定の所定値を出力するバタフライ型PUF40の個数は120であるから、個体別情報のパターン数は2
120通りとなる。また、この場合において、T=32であれば、一定の所定値を出力するバタフライ型PUF40の個数は96、個体別情報のパターン数は2
96通りとなる。
【0107】
次に、不定値を出力するバタフライ型PUF40の当該出力値を廃棄せずに使用する場合を考える。ここでは、
図10の個体別情報生成装置100の構成において、数値出力部120は、バタフライ型PUF40の出力値に応じて3種類の数値を出力するものとする。すなわち、数値出力部120は、当該出力値が固定値「0」である場合には数値「00」を出力し、当該出力値が固定値「1」である場合には数値「11」を出力し、当該出力値が不定値である場合には数値「10」を出力するものとする。
【0108】
この場合において、T=8であれば、128個のバタフライ型PUF40のうちで出力値が不定であるものの組み合わせの数は
128C
8 =2
40通りであるので、個体別情報のパターン数は2
120 ×2
40=2
160 通りとなる。また、この場合において、T=32であれば、128個のバタフライ型PUF40のうちで出力値が不定であるものの組み合わせの数は
128C
32=2
100通りであるので、個体別情報のパターン数は2
96×2
100 =2
196 通りとなる。
【0109】
次に、
図10の個体別情報生成装置100の構成において、数値出力部120が
図11のように構成されている場合を考える。すなわち、数値出力部120は、バタフライ型PUF40の出力値に応じて、前述した4種類の数値「00」、「11」、「01」、及び「10」のいずれかを出力するものとする。
【0110】
この場合には、数値出力部120が3種類の数値を出力する前述した場合に対し、出力値が不定であるバタフライ型PUF40が、更に2種類に細分化される。すなわち、この場合において、T=8であれば、個体別情報のパターン数は、2
160 ×2
8 =2
168 通りとなる。また、この場合において、T=32であれば、個体別情報のパターン数は、2
196 ×2
32=2
228 通りとなる。
【0111】
なお、
図11の数値出力部120は、出力値生成回路110の出力値が所定値となる頻度に応じて4種類の数値のいずれかを出力するようにしていた。この代わりに、当該出力値が所定値となる頻度に応じて、2よりも多くの種類の値のいずれかを出力するようにしてもよい。
【0112】
例えば、数値出力部120が、出力値生成回路110の出力値が所定値となる頻度に応じて、8種類の数値「000」、「001」、「010」、「011」、「100」、「101」、「110」、及び「111」のいずれかを出力するようにしてもよい。すなわち、より具体的には、当該出力値が「1」となる頻度が100パーセントの場合には、数値出力部120は「111」を出力する。また、当該出力値が「1」となる頻度が80〜100パーセントの場合には、数値出力部120は「110」を出力し、当該出力値が「1」となる頻度が65〜80パーセントの場合には、数値出力部120は「101」を出力する。そして、当該出力値が「1」となる頻度が50〜65パーセントの場合には、数値出力部120は「100」を出力し、当該出力値が「1」となる頻度が35〜50パーセントの場合には、数値出力部120は「011」を出力する。更に、当該出力値が「1」となる頻度が20〜35パーセントの場合には、数値出力部120は「011」を出力し、当該出力値が「1」となる頻度が0〜20パーセントの場合には、数値出力部120は「010」を出力する。そして、当該出力値が「1」となる頻度が0パーセントの場合には、数値出力部120は「000」を出力する。数値出力部120が、このように動作するように構成してもよい。
【0113】
なお、
図10の個体別情報生成装置100の構成において、数値出力部120が上述のように動作して、n種類の数値のうちのいずれかを出力する場合の個体別情報のパターン数は、次のように見積もられる。すなわち、この場合において、T=8であれば、個体別情報のパターン数は、2
160 ×(n−2)
8 通りとなり、T=32であれば、個体別情報のパターン数は、2
196 ×(n−2)
32通りとなる。
【0114】
なお、以上までに説明した個体別情報生成装置100を、ハードウェアで構成する代わりに、演算処理装置と当該演算処理装置で実行されるソフトウェアとの組み合わせで構成することも可能である。
【0115】
次に、
図10、
図12、
図13、
図14、及び
図16で各々図解した個体別情報生成装置100を用いた電子機器について説明する。
まず
図17について説明する。
図17は、暗号化装置の構成例を図解したものである。
【0116】
この暗号化装置200は、個体別情報生成装置100を用いて構成されている。
暗号化装置200は、個体別情報生成装置100、CPU210、暗号演算器220、ROM230、及びRAM240を備えて構成されている。なお、これらの各構成要素はバスライン250にいずれも接続されており、CPU210による管理の下で各種のデータを相互に授受することができるように構成されている。
【0117】
個体別情報生成装置100は、電子デバイスであるデバイス60に実装されている。
CPU(Central Processing Unit )210は、この暗号化装置200の各構成要素の動作を管理する中央演算部である。
【0118】
暗号演算器220は、各種の情報の暗号化処理や、暗号化されているデータの復号処理を行う。なお、本実施形態では、暗号演算器220は、公開鍵コプロセッサ221と共通鍵コプロセッサ222とを備えている。ここで、公開鍵コプロセッサ221は、代表的な公開鍵暗号方式であるRSA暗号や楕円曲線暗号等を用いて暗号化及び復号の処理を行う。また、共通鍵コプロセッサ222は、代表的な共通鍵暗号方式であるAES暗号等を用いて暗号化及び復号の処理を行う。なお、暗号演算器220を暗号化装置200に備える代わりに、暗号演算器220により行われる暗号化及び復号の処理を、CPU210に行わせるように構成してもよい。
【0119】
ROM(Read Only Memory)230には、CPU210により実行される制御プログラムや、暗号演算器220が暗号化や復号の処理において使用する固有のパラメータが予め格納されている不揮発性半導体メモリである。CPU210は、暗号化装置200への電力供給が開始されたときに、この制御プログラムをROM230から読み出してその実行を開始することで、暗号化装置200の各構成要素の動作管理を行えるようになる。
【0120】
RAM(Random Access Memory)240は、CPU210や暗号演算器220が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
【0121】
この暗号化装置200において、暗号演算器220は、個体別情報生成装置100が生成した個体別情報を暗号鍵として用いて、情報の暗号化処理を行う。また、この暗号化処理において暗号鍵として用いられた個体別情報は、その後に暗号演算器220が暗号化情報に対して行う復号処理にも使用する。
【0122】
なお、個体別情報生成装置100で生成される個体別情報を暗号鍵の生成に用いる際に、生成された個体別情報のエントロピを更に向上させるための後処理(Post Processing )を行ってもよい。このために行われる後処理の一例として、線形フィードバックシフトレジスタ(LFSR)の使用を挙げることができる。LFSRは、排他的論理和回路で帰還をかけたシフトレジスタによって構成されるカウンタであり、個体別情報のエントロピを向上させることができる。従って、LFSRから出力されるデータ列を用いて暗号鍵の生成を行うようにすることで、よりランダム性の高い暗号鍵を生成することが可能になる。なお、LFSRは、専用のハードウェアを構成して用いるようにしてもよく、また、CPU210を用いてソフトウェアにより実現するようにしてもよい。
【0123】
次に、個体別情報生成装置100を用いた認証システムについて説明する。この認証システムは、認証対象装置が正規のものであるか否かの認証を、認証装置が行うシステムである。
【0124】
まず
図18について説明する。
図18は、この認証システムに用いられる認証対象装置の構成例を図解したものである。
この認証対象装置300は、個体別情報生成装置100を用いて構成されている。
【0125】
認証対象装置300は、個体別情報生成装置100、CPU310、通信部320、ROM330、及びRAM340を備えて構成されている。なお、これらの各構成要素はバスライン350にいずれも接続されており、CPU310による管理の下で各種のデータを相互に授受することができるように構成されている。
【0126】
個体別情報生成装置100は、電子デバイスであるデバイス60に実装されており、個体別情報を、この認証対象装置300のものとして生成する。
CPU310は、この認証対象装置300の各構成要素の動作を管理する中央演算部である。
【0127】
通信部320は、各種のデータの送受信を行って、後述する認証装置との間で各種の情報の授受を行う。
ROM330には、CPU310により実行される制御プログラムが予め格納されている不揮発性半導体メモリである。CPU310は、認証対象装置300への電力供給が開始されたときに、この制御プログラムをROM330から読み出してその実行を開始することで、認証対象装置300の各構成要素の動作管理を行えるようになる。
RAM340は、CPU310が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
【0128】
次に
図19について説明する。
図19は、前述の認証システムに用いられる認証装置の構成例を図解したものである。
この認証装置400は、CPU410、通信部420、認証処理部430、ROM440、及びRAM450を備えて構成されている。なお、これらの各構成要素はバスライン460にいずれも接続されており、CPU410による管理の下で各種のデータを相互に授受することができるように構成されている。
【0129】
CPU410は、この認証装置400の各構成要素の動作を管理する中央演算部である。
通信部420は、
図18の認証対象装置300との間で通信を行って、各種の情報の授受を行う。
【0130】
認証処理部430は、認証対象装置300に対する認証処理を、後述するようにして行う。なお、認証処理部430を認証装置400に備える代わりに、認証処理部430により行われる認証処理を、CPU410に行わせることに構成してもよい。
【0131】
ROM440には、CPU410により実行される制御プログラムや、認証処理部430が認証処理に用いる正規の認証対象装置300についての個体別情報が予め格納されている不揮発性半導体メモリである。CPU410は、認証装置400への電力供給が開始されたときに、この制御プログラムをROM440から読み出してその実行を開始することで、認証装置400の各構成要素の動作管理を行えるようになる。
【0132】
RAM450は、CPU410や認証処理部430が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
次に、前述した認証システムによる認証動作について説明する。
【0133】
まず、認証動作に先立ち、認証装置400のROM440には、正規の認証対象装置300が備えている個体別情報生成装置100が生成する個体別情報を、予め記録させておく。
【0134】
認証装置400の認証処理部430が認証処理を開始すると、まず、通信部420に指示を与えて、個体別情報の送付要求を、認証対象装置300へ宛てて送信させる処理が行われる。
【0135】
認証対象装置300のCPU310は、この送付要求を通信部320が受信したことを検出すると、個体別情報生成装置100に所定の指示を与えて個体別情報を生成させる処理が行われる。次に、CPU310は、通信部320に指示を与えて、生成された個体別情報を認証装置400へ宛てて送信させる処理が行われる。
【0136】
認証装置400の認証処理部430は、認証対象装置300から送信された個体別情報を通信部420が受信すると、この個体別情報が、ROM440に予め記録されていた正規の認証対象装置300のものと一致するか否かを判定する処理を行う。ここで、両者の個体別情報が一致するとの判定結果が得られたときには、個体別情報の送信元の認証対象装置300が正規のものであるとの認証結果を得る。
【0137】
なお、上述の認証動作において、ROM440に、正規の認証対象装置300が備えている個体別情報生成装置100が生成する個体別情報として、前述した「チャレンジ」と「レスポンス」との関係を複数組記録しておいてもよい。
【0138】
この場合には、認証装置400の認証処理部430が、個体別情報の送付要求に、ROM440に「レスポンス」との関係が記録されている各「チャレンジ」の情報を添付して通信部420に送信させるようにする。一方、認証対象装置300のCPU310は、この送付要求に添付されていた各「チャレンジ」の情報を個体別情報生成装置100に与えて、各「チャレンジ」の情報についての「レスポンス」の情報を生成させる。そして、CPU310は、生成された各「レスポンス」の情報を認証装置400へ宛てて通信部320に送信させる処理を行うようにする。このとき、認証装置400の認証処理部430は、通信部420で受信した各「レスポンス」の情報が、ROM440に記録されていた正規の認証対象装置300におけるものと全て一致するか否かを判定する処理を行う。ここで、両者の「レスポンス」の情報が全て一致するとの判定結果が得られたときには、「レスポンス」の送信元の認証対象装置300が正規のものであるとの認証結果を得る。前述の認証システムにおける認証動作を、以上のようにして行ってもよい。