(57)【特許請求の範囲】
【請求項１】
個体別情報を生成する装置であって、
同一の回路構成からなる複数の出力値生成回路であって、特定の入力に対しての出力が一義的には定まらずに個々に所定の一定の出力値若しくは不定の出力値を出力する複数の出力値生成回路、
前記複数の出力値生成回路の各々の出力値に基づき、該出力値が前記一定の出力値である場合には、該出力値に応じて選択される、互いに値の異なる第一の数値群のうちのいずれかの数値を出力し、該出力値が前記不定の出力値の場合には、該出力値が所定値となる頻度に応じて選択される、値が該第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を出力する数値出力部、及び
前記複数の出力値生成回路の各々の出力値に基づき前記数値出力部から出力される数値に基づいて、前記個体別情報を生成する個体別情報生成部
を備える個体別情報生成装置。
【請求項２】
前記数値出力部は、前記出力値生成回路の出力値が前記一定の出力値であるか前記不定の出力値であるかの判定を、該出力値生成回路から出力された所定数個の出力値が全て一致するか否かに基づいて行い、該判定結果に基づいて前記第一及び前記第二の数値群のうちのいずれかの数値を出力する請求項１に記載の個体別情報生成装置。
【請求項３】
前記数値出力部は、前記出力値生成回路の出力値が前記所定値となる頻度を、該出力値生成回路から出力された所定数個の出力値における該所定値の個数に基づいて算出する請求項１に記載の個体別情報生成装置。
【請求項４】
前記複数の出力値生成回路は順序が予め定められており、
前記個体別情報生成部は、前記複数の出力値生成回路の各々について前記数値出力部から出力される数値を前記順序に基づいて並べて得られる数列データに対してエントロピ圧縮を行い、該エントロピ圧縮によって得られた値に基づいて前記個体別情報を生成する、
請求項１から３のうちのいずれか一項に記載の個体別情報生成装置。
【請求項５】
前記複数の出力値生成回路は、メタスタビリティ型ＰＵＦ回路を含む請求項１から４のうちのいずれか一項に記載の個体別情報生成装置。
【請求項６】
前記複数の出力値生成回路は、遅延型ＰＵＦ回路を含む請求項１から４のうちのいずれか一項に記載の個体別情報生成装置。
【請求項７】
個体別情報を生成する装置であって、
遅延型ＰＵＦ回路、
前記遅延型ＰＵＦ回路に異なる入力を与えたときに出力される各々の出力値に基づき、該出力値が所定の一定の値である場合には、該出力値に応じて選択される、互いに値の異なる第一の数値群のうちのいずれかの数値を出力し、該出力値が不定である場合には、該出力値が所定値となる頻度に応じて選択される、値が該第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を出力する数値出力部、及び
前記遅延型ＰＵＦ回路から出力される前記各々の出力値に基づき前記数値出力部から出力される数値に基づいて、前記個体別情報を生成する個体別情報生成部
を備える個体別情報生成装置。
【請求項８】
請求項１から７のうちのいずれか一項に記載の個体別情報生成装置、及び
前記個体別情報生成装置が生成した個体別情報を暗号鍵として用いて、情報の暗号化処理を行う暗号化処理部
を備える暗号化装置。
【請求項９】
認証対象装置が正規のものであるか否かの認証を行う認証装置と、該認証装置によって認証が行われる正規の認証対象装置とを含む認証システムであって、
正規の認証対象装置は、該正規の認証対象装置の個体別情報を生成する個体別情報生成装置を備えており、
前記個体別情報生成装置は、
同一の回路構成からなる複数の出力値生成回路であって、特定の入力に対しての出力が一義的には定まらずに個々に所定の一定の出力値若しくは不定の出力値を出力する複数の出力値生成回路、
前記複数の出力値生成回路の各々の出力値に基づき、該出力値が前記一定の出力値である場合には、該出力値に応じて選択される、互いに値の異なる第一の数値群のうちのいずれかの数値を出力し、該出力値が前記不定の出力値の場合には、該出力値が所定値となる頻度に応じて選択される、値が該第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を出力する数値出力部、及び
前記複数の出力値生成回路の各々の出力値に基づき前記数値出力部から出力される数値に基づいて、前記個体別情報を生成する個体別情報生成部
を備えており、
前記認証装置は、
認証対象装置との間で通信を行って各種の情報の授受を行う通信部、
前記正規の認証対象装置が備えている個体別情報生成装置に備えられている個体別情報生成部が生成する個体別情報が予め記録されている記録部、及び
認証対象装置に対する認証処理を、該認証対象装置から送られてくる情報と前記記録部に記録されている情報とに基づいて行う認証処理部、
を備えており、
前記通信部は、認証対象装置から送られてくる個体別情報を受信し、
前記認証処理部は、前記通信部が認証対象装置から受信した個体別情報が、前記記録部に予め記録されていた個体別情報と一致するか否かの判定を行い、両者が一致すると判定したときに、該認証対象装置が正規のものであるとの認証結果を得る、
認証システム。
【請求項１０】
個体別情報を生成する方法であって、
同一の回路構成からなる複数の出力値生成回路であって、特定の入力に対しての出力が一義的には定まらずに個々に所定の一定の出力値若しくは不定の出力値を出力する複数の出力値生成回路の各々の出力値について、該一定の出力値であるか、若しくは該不定の出力値であるかを判定し、
前記出力値が前記一定の出力値であると判定した場合には、該出力値に応じて選択される、互いに値の異なる第一の数値群のうちのいずれかの数値を選択し、該出力値が前記不定の出力値であると判定した場合には、該出力値が所定値となる頻度に応じて選択される、値が該第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を選択し、
前記複数の出力値生成回路の各々について選択された数値に基づいて、前記個体別情報を生成する、
個体別情報生成方法。
【請求項１１】
認証対象装置が正規のものであるか否かの認証を行う認証装置と、該認証装置によって認証が行われる正規の認証対象装置とを含む認証システムによって行われる認証方法であって、
前記正規の認証対象装置は、該正規の認証対象装置の個体別情報を生成する個体別情報生成装置を備えており、
前記個体別情報生成装置は、
同一の回路構成からなる複数の出力値生成回路であって、特定の入力に対しての出力が一義的には定まらずに個々に所定の一定の出力値若しくは不定の出力値を出力する複数の出力値生成回路、
前記複数の出力値生成回路の各々の出力値に基づき、該出力値が前記一定の出力値である場合には、該出力値に応じて選択される、互いに値の異なる第一の数値群のうちのいずれかの数値を出力し、該出力値が前記不定の出力値の場合には、該出力値が所定値となる頻度に応じて選択される、値が該第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を出力する数値出力部、及び
前記複数の出力値生成回路の各々の出力値に基づき前記数値出力部から出力される数値に基づいて、前記個体別情報を生成する個体別情報生成部
を備えており、
前記認証方法は、
前記認証装置が、個体別情報の送付要求を送信し、
前記送付要求を受信した前記正規の認証対象装置が、前記正規の認証対象装置が備えている前記個体別情報生成装置に前記個体別情報の生成を行わせて、生成された個体別情報を送信し、
認証対象装置から受信した個体別情報が、予め記録されている情報である、前記正規の認証対象装置が備えている前記個体別情報生成装置が生成する個体別情報と一致するか否かの判定を前記認証装置が行い、
個体別情報が一致するとの判定結果が得られたときに、前記認証対象装置が正規のものであるとの認証結果を前記認証装置が得る、
ことを特徴とする認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で議論される実施態様は、電子デバイス毎に固有でありデバイス間では互いに異なっている個体別情報を生成する技術に関する。
【背景技術】
【０００２】
近年、プリンタカートリッジや、電池等のバッテリー、ゲーム機のカートリッジといった製品に関して、正規品の製造メーカとは異なる製造メーカによるクローン品が多く見られるようになっている。クローン品とは、正規品の内部構造の分析や正規品の内部に存在するＩＣチップの解析等の結果を用いて製造された、正規品と同等の機能を有する製品である。これらのクローン品の中には、正規品を製造する正規メーカの知的財産等の権利を侵害するケースも多く、クローン対策技術が強く求められている。
【０００３】
このようなクローン品を防止する手法として、正規品へ認証機能を付与することが行われている。この認証機能を実現する有効な手段のひとつがＰＵＦ（Physical Unclonable Function：物理的クローン作製不能機能）である。詳細は後述するが、ＰＵＦから生成される秘密情報は、顕微鏡での観察による解析では特定できない。従って、上記に挙げたようなクローン品への対策が必要な製品に対してＰＵＦを組み込んで、ＰＵＦで秘密情報を生成することで認証機能を実現することは、クローン品への対策としての有効性が高い。
【０００４】
ＰＵＦは、ある同一の入力に対して、ＰＵＦが実装されたデバイス毎に異なる出力を返す関数である。但し、デバイス毎に異なる値を出力するような関数を個別に設定する必要はなく、同一の回路（顕微鏡での解析を行っても、見た目は同一であって、その出力値が特定できない）がこの関数を実現する。つまり、ＰＵＦ回路は、デバイス内の信号遅延や素子特性などの物理特性のわずかな違いを利用することで、その出力をデバイス毎に全く異なる値とする。従って、この出力はデバイス固有の値（「個体別情報」と称することとする）となる。
【０００５】
理想的なＰＵＦ回路は、デバイス上に実装するとそのデバイスでは常に同一の個体別情報を出力する（再現性）一方、異なるデバイス上に実装されたＰＵＦ間では全く異なる個体別情報を出力する（ユニーク性）。このようなデバイスにおけるＰＵＦの出力情報は、人における、「指紋」のような生体情報に喩えることができる。指紋は、同一人であれば年をとっても不変である（再現性）一方、別人の間では全く異なる（ユニーク性）という、理想的なＰＵＦの出力情報と同様の性質を有している。
【０００６】
また、同一の回路構成のＰＵＦ回路が、このような理想的な再現性とユニーク性と兼ね備えていれば、攻撃者が回路を分解し、内部を解析したところで、クローンチップを生成することはできない。
【０００７】
このＰＵＦは、識別情報（ＩＤ）の生成や暗号鍵の生成にも用いられる。従って、ＰＵＦを用いて認証機能を実現することが可能である。
多くの電子デバイス製品では、個々に固有のＩＤを必要とする。従来は、多くの場合において、それぞれのデバイス毎に異なる値をＩＤとして不揮発性メモリに書き込む作業が製造段階で行われていた。このＩＤの生成にＰＵＦを用いると、セキュアにＩＤをチップ内に格納しておけるだけでなく、この書き込み作業のコストを低減させることもできる。
【０００８】
また、暗号機能を含む製品はＰＵＦを用いると安全性が向上する。具体例として、情報記録用の集積回路をカードに組み組んだスマートカードがある。また、通信の秘匿を保証するために、携帯電話に使用されるＳＩＭ（Subscriber Identification Module）カードや無線インターネット接続の端末などにも暗号機能が必須である。これらの機器での暗号化に使用する暗号鍵の生成にＰＵＦを使用するようにすれば、暗号鍵が攻撃者に解析される危険性が大幅に低下し、安全性が向上する。
【０００９】
次に、ＰＵＦの基本的な回路構成例を幾つか説明する。
なお、本明細書における以下の説明では、電位の異なる２値の論理レベルにおけるハイ・レベルを値「１」と表現し、ロー・レベルを値「０」と表現することとする。
【００１０】
広く知られているＰＵＦは、大きく分けて、遅延型ＰＵＦとメタスタビリティ（metastability ）型ＰＵＦとの２つに分類することができる。
図１に図解するように、遅延型ＰＵＦ１は、ｎビットのデータ（ＰＵＦでは「チャレンジ」と称されている）の入力に対して、１ビットのデータの出力（ＰＵＦでは「レスポンス」と称されている）を返すＰＵＦである。従って、遅延型ＰＵＦ１からｍビットのレスポンスを得るためには、例えば、図２に表で表したように、互いに異なるｎビットのチャレンジｍ個を１個の遅延型ＰＵＦ１に入力すればよい。また、ｍ個の遅延型ＰＵＦ１の各々から得られる１ビットのレスポンスを並べてｍビットのレスポンスを得るようにすることも、もちろん可能である。
【００１１】
この遅延型ＰＵＦ１に分類されるＰＵＦの例として、アービタ（Arbiter ）ＰＵＦ、グリッチ（Glitch）ＰＵＦ、及びリングオシレータ（Ring Oscillator ）ＰＵＦが知られている。以下、これらのＰＵＦについて説明する。
【００１２】
まずアービタＰＵＦについて説明する。アービタＰＵＦは回路遅延を利用してＰＵＦを実現するものである。
図３について説明する。図３は、アービタＰＵＦの構成例を図解したものである。
【００１３】
このアービタＰＵＦ１０は、計２ｎ個の２入力１出力のセレクタ１１−０ａ、１１−０ｂ、１１−１ａ、１１−１ｂ、１１−２ａ、１１−２ｂ、…、１１−（ｎ−１）ａ、及び１１−（ｎ−１）ｂと、Ｄ型フリップフロップ回路１２と、を備えて構成されている。
【００１４】
なお、以下の説明では、特に区別する必要がない場合には、セレクタ１１−０ａ、１１−０ｂ、１１−１ａ、１１−１ｂ、１１−２ａ、１１−２ｂ、…、１１−（ｎ−１）ａ、及び１１−（ｎ−１）ｂを総称して「セレクタ１１」とする。
【００１５】
セレクタ１１−１ａ及び１１−１ｂは、その第一入力端子にセレクタ１１−０ａの出力端子が接続されており、その第二入力端子にセレクタ１１−０ｂの出力端子が接続されている。また、セレクタ１１−２ａ及び１１−２ｂは、その第一入力端子にセレクタ１１−１ａの出力端子が接続されており、その第二入力端子にセレクタ１１−１ｂの出力端子が接続されている。残りのセレクタ１１も同様の接続がなされている。
【００１６】
なお、セレクタ１１には値Ｃｈａ［ｎ−１：０］が入力される。この値Ｃｈａ［ｎ−１：０］は、セレクタ１１の２つの入力端子のどちらに入力された信号を出力端子に出力するかの選択指示をセレクタ１１に与えるためのものであり、このアービタＰＵＦ１０に対するｎビットのチャレンジの入力である。
【００１７】
図３の構成において、例えば、セレクタ１１−１ａ及び１１−１ｂには、そのどちらにもｃｈａ［１］が入力されている。セレクタ１１−１ａは、ｃｈａ［１］＝１のときには、第一入力端子に入力された信号を出力端子に出力し、ｃｈａ［１］＝０のときには、第二入力端子に入力された信号を出力端子に出力する動作を行うものとする。その一方、セレクタ１１−１ｂは、ｃｈａ［１］＝１のときには、第二入力端子に入力された信号を出力端子に出力し、ｃｈａ［１］＝０のときには、第一入力端子に入力された信号を出力端子に出力する動作を行うものとする。また、他のセレクタ１１についても同様の動作を行うものとする。
【００１８】
このアービタＰＵＦ１０において、Ｄ型フリップフロップ回路１２は「アービタ」と称される。このＤ型フリップフロップ回路１２は、データ入力端子Ｄにセレクタ１１−（ｎ−１）ａの出力端子が接続されており、クロック入力端子ＣＬＫにセレクタ１１−（ｎ−１）ｂの出力端子が接続されている。このＤ型フリップフロップ回路１２の出力が、このアービタＰＵＦ１０の出力Ｒとなる。なお、Ｄ型フリップフロップ回路１２は、初期化時にはリセットされて出力は０とされる。
【００１９】
以上のように、このアービタＰＵＦ１０は、計２ｎ個のセレクタ１１がｎ個ずつ直列に接続されてＤ型フリップフロップ回路１２に接続される対称的な構成を有している。なお、セレクタ１１相互間の接続、並びにセレクタ１１−（ｎ−１）ａ及び１１−（ｎ−１）ｂとＤ型フリップフロップ回路１２との間の接続における配線長も、可能な限り、この対称性を保つように等しくしておくことが好ましい。
【００２０】
このアービタＰＵＦ１０には、前述したチャレンジの入力の他に、Ｄ型フリップフロップ回路１２のクロック端子に入力するとＤ型フリップフロップ回路１２に状態変化を生じさせるエッジ信号が入力される。なお、本実施形態では、このエッジ信号を、論理レベルが０から１へと変化する立ち上がりエッジ信号とする。
【００２１】
アービタＰＵＦ１０に入力された立ち上がりエッジ信号は、セレクタ１１−０ａ及び１１−０ｂの第一入力端子及び第二入力端子に入力される。すると、この立ち上がりエッジ信号は、チャレンジｃｈａ［ｎ−１：０］の値に応じた経路でセレクタ１１を経由して、アービタであるＤ型フリップフロップ回路１２のデータ入力端子Ｄ及びクロック入力端子ＣＬＫに到着する。
【００２２】
このときのＤ型フリップフロップ回路１２の出力は、データ入力端子Ｄとクロック入力端子ＣＬＫとのどちらに立ち上がりエッジ信号の０から１への変化点が先着したかによって決定し、この出力がアービタＰＵＦ１０の出力Ｒとなる。つまり、この変化点がクロック入力端子ＣＬＫに先着すればアービタＰＵＦ１０の出力Ｒは０となり、この変化点がデータ入力端子ＣＬＫに先着すればアービタＰＵＦ１０の出力Ｒは１となる。
【００２３】
前述したように、このアービタＰＵＦ１０は、計２ｎ個のセレクタ１１がｎ個ずつ直列に接続された対称的な構成を有している。また、前述したように、各素子間の配線長はほぼ等しく構成されている。従って、回路論理上は、Ｄ型フリップフロップ回路１２のデータ入力端子Ｄとクロック入力端子ＣＬＫとへの立ち上がりエッジ信号の到着は同時であり、この両者に到着した立ち上がりエッジ信号は同位相のはずである。ところが、実際には、電子デバイスへの実装条件に起因するゲート遅延や配線遅延により、この両者への立ち上がりエッジ信号の到着が同時とならない場合がある。この到着時刻のずれの程度は、電子デバイス固有のものであるが、デバイス毎では異なるものとなる。つまり、この到着時刻のずれの程度は、前述したＰＵＦの性質である、再現性とユニーク性とを兼ね備えており、アービタＰＵＦ１０を実装した電子デバイスの個体別情報として利用することができる。
【００２４】
以上のように、図３のアービタＰＵＦ１０は、Ｄ型フリップフロップ回路１２に状態変化を生じさせるエッジ信号をそのクロック端子に入力すると共に、このエッジ信号と論理上は同位相としたエッジ信号をそのデータ入力端子に入力するように構成されている。そして、このＤ型フリップフロップ回路１２の出力端子から出力される信号が、アービタＰＵＦ１０の出力となるように構成されている。
【００２５】
また、前述したように、このアービタＰＵＦ１０は、チャレンジＣｈａ［ｎ−１：０］の値によって、立ち上がりエッジ信号についての、セレクタ１１を経由する経路を変更することができる。従って、チャレンジＣｈａ［ｎ−１：０］の値を変更すると、異なる出力Ｒの値が得られる。この出力Ｒが、チャレンジＣｈａ［ｎ−１：０］に対してアービタＰＵＦ１０が返すレスポンスとなる。
【００２６】
そこで、特定のデバイスに実装したアービタＰＵＦ１０におけるチャレンジＣｈａ［ｎ−１：０］とレスポンスＲとの関係を予め調べて記録しておく。このようにすることで、その後に検査対象のデバイスのアービタＰＵＦ１０のチャレンジＣｈａ［ｎ−１：０］とレスポンスＲとの関係を調べて上述の記録内容と照合すれば、検査対象のデバイスが特定のデバイスであるか否かの認証を行うことができる。
【００２７】
なお、アービタＰＵＦ１０への同一のチャレンジに対してレスポンスを複数回生成した場合に、チャレンジの値によっては、Ｄ型フリップフロップ回路１２への立ち上がりエッジ信号の到着の時間差が極めて小さいことがある。この場合には、２つの入力端子のうち先に到着する方が、時によって変化することもあり得るため、レスポンスの値が０若しくは１の両方をとる（乱数となる）こともある。
【００２８】
次にグリッチＰＵＦについて説明する。
グリッチＰＵＦは，論理回路を構成する各ゲートの入出力信号間の遅延関係によって発生する、「グリッチ」と呼ばれる現象を利用したＰＵＦである。まず、このグリッチについて、図４Ａ及び図４Ｂを用いて説明する。
【００２９】
図４Ａに図解されている論理回路は、ＸＯＲ（排他的論理和）回路２１の出力がＡＮＤ（論理積）回路の入力の１つに接続されて構成されている。この論理回路では、ＸＯＲ回路２１の２つの入力と、ＡＮＤ回路２２の２つの入力のうちＸＯＲ回路２１が接続されていない方の入力とに、それぞれ入力信号ｘ１、ｘ２、及びｘ３が入力され、ＸＯＲ回路２１から出力信号ｙが出力される。
【００３０】
この論理回路において、入力信号ｘ１、ｘ２、及びｘ３の論理レベルを０から１に変化させてみる。すると、このときの入力信号ｘ１と入力信号ｘ２との間での信号変化の時間差により、まず、ＸＯＲ回路２１の出力として、矩形状のパルス（グリッチ）が発生する。このグリッチが入力信号ｘ３の信号変化よりも後にＡＮＤ回路２２へ到達した場合には、出力信号ｙとして、グリッチがＡＮＤ回路２２から出力される。一方、ＸＯＲ回路２１から出力されるグリッチが、入力信号ｘ３の信号変化よりも先にＡＮＤ回路２２へ到達した場合には、出力信号ｙとして、グリッチがＡＮＤ回路２２から出力されることはない。
【００３１】
グリッチＰＵＦは、この論理回路の特性を利用したＰＵＦであり、入力信号ｘ１、ｘ２、及びｘ３がチャレンジに相当する。この論理回路は、チップ毎に異なるゲート遅延、ゲートのドライブ能力、配線遅延等の要因により、同一の回路構成であっても、同一の入力に対して、その出力波形（過渡状態）に存在するグリッチの個数は異なってくる。そこで、出力されるグリッチの個数が偶数個の場合には、１ビットのレスポンス値として０を出力し、その個数が奇数個の場合には、１をレスポンスとする．
【００３２】
図５は、グリッチＰＵＦの構成例を図解したものである。
このグリッチＰＵＦ２０は、グリッチ発生回路２３とグリッチ形状判定回路２４とを備えて構成されている。ここで、グリッチ発生回路２３は、例えば、ＡＥＳ暗号で使用されるＳボックス（Substitution Box）回路であり、グリッチ形状判定回路２４は、例えばトグルＦＦ（Flip Flop）回路を用いる。
【００３３】
ＡＥＳ暗号のＳボックス回路は８ビット入力・８ビット出力である．従って、最大で８ビットのレスポンスを同時に生成可能であるが、このうちの１つを選択することで，アービタＰＵＦと同様に、１ビットのレスポンスを生成することができる。
【００３４】
なお、グリッチＰＵＦ２０への同一のチャレンジに対してレスポンスを複数回生成した場合に、チャレンジの値によっては，グリッチ発生回路２３内の信号変化の時間差が極めて小さいことがある。この場合には、２つの信号のうち先に伝搬する方の信号が、時によって変化することもあり得るため、レスポンスの値が０若しくは１の両方をとる（乱数となる）こともある。
【００３５】
次にリングオシレータＰＵＦについて説明する。
リングオシレータＰＵＦとは、インバータ回路を奇数個直列接続した「リングオシレータ」を利用したＰＵＦである。図６は、リングオシレータＰＵＦの構成例である。
【００３６】
リングオシレータＰＵＦ３０は、ｎ個のリングオシレータ３１−１、３１−２、…、３１−ｎ、２個のマルチプレクサ３２−１及び３２−２、２個のカウンタ３３−１及び３３−２、並びに比較器３４を備えて構成されている。
【００３７】
リングオシレータ３１−１、３１−２、…、３１−ｎは、いずれも同一個数のインバータ回路を直列接続して構成されているが、チップ毎に、また同一チップにおいて、ゲート遅延や配線遅延のばらつきが存在するため、各々の発振周波数がわずかに異なる。そこで、リングオシレータ３１−１、３１−２、…、３１−ｎの各々の出力信号（クロック信号）のうちで任意の２つの出力信号をマルチプレクサ３２−１及び３２−２により選択して、それぞれカウンタ３３−１及び３３−２に入力する。このときに、リングオシレータ３１−１、３１−２、…、３１−ｎのうちのいずれの２つを選択するかを特定する入力、つまり、マルチプレクサ３２−１及び３２−２への選択指示を行う信号が、チャレンジに相当する。
【００３８】
カウンタ３３−１及び３３−２の各々に入力されるクロック信号は、周波数がわずかに異なるため、所定時間が経過した後のカウント値の大小関係は、選択された２つのオシレータの周波数の大小関係を表している。そこで、カウンタ３３−１及び３３−２の各々のカウント値の大小関係を比較器３４により求め、この大小関係をビット情報に変換する。このビット情報をレスポンスとしたものがリングオシレータＰＵＦ３０である。
【００３９】
なお、リングオシレータＰＵＦ３０において、同一のチャレンジに対して，レスポンスを複数回生成した場合，チャレンジの値によっては、選択された２つのオシレータの周波数が極めて近い場合もある。そのため、時によって、カウンタ値の大小関係が入れ替わることもあり、結果としてレスポンスの値が０若しくは１の両方をとる（乱数となる）こともある。
【００４０】
次に、メタスタビリティ型ＰＵＦについて説明する。メタスタビリティ型ＰＵＦは、電子回路の不定状態を利用するＰＵＦである。メタスタビリティ型ＰＵＦに分類されるＰＵＦの例として、ＳＲＡＭ−ＰＵＦ及びバタフライ型ＰＵＦが知られている。以下、これらのＰＵＦについて説明する。
【００４１】
まずＳＲＡＭ−ＰＵＦについて説明する。
ＳＲＡＭ（Static Random Access Memory ）への電力供給を開始した直後のメモリセルの初期値は、デバイスに依存した複雑な内部状態から決定されるため、ランダムな値となる。ＳＲＡＭ−ＰＵＦは、この初期値のばらつきを利用する。ＳＲＡＭ−ＰＵＦでは、メモリセル・アドレスがチャレンジに相当し、そのメモリセル・アドレスの初期値がレスポンスに相当し、後述するバタフライ型ＰＵＦのラッチ部分が、ＳＲＡＭ−ＰＵＦのメモリセルに相当する。
【００４２】
次にバタフライ型ＰＵＦについて説明する。バタフライ型ＰＵＦは、ＲＳラッチ回路のメタステーブルを利用してＰＵＦを実現するものである。
まず、メタステーブルについて、図７Ａ及び図７Ｂを用いて説明する。
【００４３】
図７Ａには、ＲＳラッチ回路の構成例が図解されている。このＲＳラッチ回路は、ＮＡＮＤ（否定論理積）回路４１及び４２を用いて構成されている。
このＲＳラッチ回路の入力は負論理である。なお、図面においては、負論理の信号を信号名の上にオーバーバーを付すことで表現しているが、本明細書においては、負論理の信号を“＃”で表記するものとする。従って、例えば、図７ＡのＲＳラッチ回路のセット入力は“＃Ｓ”と表記し、リセット入力は“＃Ｒ”と表記する。
【００４４】
ＮＡＮＤ回路４１の２つの入力には、それぞれ、セット入力“＃Ｓ”と、ＮＡＮＤ回路４２の出力とが入力される。また、ＮＡＮＤ回路４２の２つの入力には、それぞれ、リセット入力“＃Ｒ”と、ＮＡＮＤ回路４１の出力とが入力される。また、ＮＡＮＤ回路４１の出力がＲＳラッチ回路の出力Ｑとなる。なお、ＮＡＮＤ回路４２の出力からは、出力“＃Ｑ”が出力される。
【００４５】
図７Ｂは、この図７ＡのＲＳラッチ回路の真理値表である。なお、この真理値表においては、セット入力Ｓ及びリセット入力Ｒを正論理で表記している。
真理値表からも分かるように、図７ＡのＲＳラッチ回路は、入力Ｓ＝０且つ入力Ｒ＝０のときには、出力値はそのまま保持されるので、Ｑ＝Ｑとなり、“＃Ｑ”＝“＃Ｑ”となる。また、このＲＳラッチ回路は、入力Ｓ＝０且つ入力Ｒ＝１のときには出力値はリセットされて、Ｑ＝０となり、“＃Ｑ”＝１となる。更に、このＲＳラッチ回路は、入力Ｓ＝１且つ入力Ｒ＝０のときには出力値はセットされて、Ｑ＝１、“＃Ｑ”＝０となる。
【００４６】
図７ＡのＲＳラッチ回路は、以上の入力の組み合わせのいずれかであれば、出力の論理は安定している。ところが、このＲＳラッチ回路は、入力Ｓ＝１且つ入力Ｒ＝１のときには、Ｑ＝“＃Ｑ”＝１となってしまう。つまり、この場合には、本来は反対の論理を示すはずであるＱの論理値と“＃Ｑ”の論理値とが、揃って「１」となってしまう。このとき、このＲＳラッチ回路の出力は、どちらも、中間電位の不安定な状態となっている。このような、デジタル回路としては異常である不安定な状態が、メタステーブル（metastable）と呼ばれている。一般的には、このようなメタステーブルの状態を回避するために、ＲＳラッチ回路に対するＳ＝１且つＲ＝１の入力は禁止される。
【００４７】
次に、このようなＲＳラッチ回路のメタステーブルを利用するバタフライ型ＰＵＦについて説明する。図８は、このバタフライ型ＰＵＦの構成例である。
このバタフライ型ＰＵＦ４０は、図７ＡのＲＳラッチ回路のセット入力“＃Ｓ”及びリセット入力“＃Ｒ”の両方に同一の値Ａを入力するように構成したものである。ここで、このバタフライ型ＰＵＦ４０の出力である、ＲＳラッチ回路の出力Ｑ及び出力“＃Ｑ”を、それぞれ、Ｂ及びＣとする。つまり、このバタフライ型ＰＵＦ４０は、ＲＳラッチ回路に対しメタステーブル状態とする入力を与えると共に、このＲＳラッチ回路の出力端子から出力される信号を、このバタフライ型ＰＵＦ４０の出力とするように構成した回路である。
【００４８】
このバタフライ型ＰＵＦ４０は、入力Ａ＝０のときは、出力Ｂ及び出力Ｃはどちらも１となり、この状態で出力の値は安定している。ところが、ここで、値Ａを０から１に変化させると、出力Ｂが１であって出力Ｃが０である状態と、出力Ｂが０であって出力Ｃが１である状態とが生じて、出力が不定となる。これは、ＲＳラッチ回路がメタステーブルの状態に置かれており、その出力が不確定の状態になっているためである。バタフライ型ＰＵＦ４０は、この不確定性を利用したＰＵＦである。
【００４９】
このバタフライ型ＰＵＦ４０の出力は２値（０と１）のどちらかの値をとる。しかしながら、バタフライ型ＰＵＦ４０をデバイスに実装すると、常に０を出力するもの、及び、常に１を出力するものと、出力が０と１とで定まらないもの、すなわち乱数を出力するものとの３つの態様のものが得られ、この出力の態様には再現性がある。そこで、このバタフライ型ＰＵＦ４０をデバイスに複数実装し、その各々から得られる出力を、バタフライ型ＰＵＦ４０を実装したデバイスについての個体別情報として利用することができる。
【００５０】
次に図９について説明する。図９は、背景技術である個体別情報生成装置を図解したものである。
この個体別情報生成装置５０は、電子デバイスであるデバイス６０に、ｎ個のＰＵＦ５１（ＰＵＦ５１−１、５１−２、…、５１−ｎ）を実装して構成されている。なお、図９では、ＰＵＦ５１−１、５１−２、５１−３、５１−４、５１−５、及び５１−６の各々に、図８に図解したバタフライ型ＰＵＦ４０を描いているが、これに限定されるものではない。ＰＵＦ５１としては、例えば、前述した遅延型ＰＵＦ及びメタスタビリティ型ＰＵＦのいずれでもよい。
【００５１】
この個体別情報生成装置５０では、ｎ個実装されたＰＵＦ５１から、どれを選択するかが、前述したチャレンジに相当する。図９は、このチャレンジによって、ＰＵＦ５１−１、５１−２、５１−３、５１−４、５１−５、及び５１−６が選択された状態を表現している。この６個のＰＵＦ５１の各々の出力ＲＥＳ［５：０］は２値の値（０または１）をとるので、これらの値を並べて６ビットのビット列を形成する。このビット列がレスポンスとなり、デバイス６０の個体別情報として利用することができる。なお、この個体別情報生成装置５０がとり得る個体別情報のパターン数は、計６個のＰＵＦ５１を選択するので、２の６乗パターン、すなわち６４パターンである。
【００５２】
但し、前述したように、ＰＵＦ５１は乱数を出力する場合がある。図４は、計６個のＰＵＦ５１のうち、ＰＵＦ５１−３及び５１−４が乱数を出力している場合を表現している。このような乱数を出力するＰＵＦ５１がチャレンジによる選択に含まれてしまうと、デバイス６０で不変であるはずのレスポンスが異なる値となることがあり、再現性が失われてしまうため、デバイス６０の個体別情報として利用できなくなってしまう。
【００５３】
この点に関し、個体別情報生成装置５０に符号誤り訂正回路を備えるという技術が知られている。この技術では、チャレンジによって選択されたＰＵＦ５１の出力を並べて構成したビット列をこの符号誤り訂正回路に入力し、その出力を個体別情報生成装置５０のレスポンスとするように構成する。つまり、ＰＵＦ５１から上述のようにして生成されるビット列に含まれる乱数を符号誤り訂正回路で補正して、デバイス６０では、同一のチャレンジに対して常に同一のレスポンスが得られるようにする。この技術では、このようにして、個体別情報生成装置５０の出力の再現性を確保している。
【００５４】
この他の背景技術として、電子デバイスの物理特性の違いを利用して乱数を生成する技術が幾つか知られている。そのひとつに、デジタル入力値に対して一義的に決定されないデジタル出力値を得ると共に、このデジタル出力値における「０」と「１」の出現頻度を均等にするという乱数生成の技術がある。
【先行技術文献】
【特許文献】
【００５５】
【特許文献１】特許第３６０４６７４号公報
【非特許文献】
【００５６】
【非特許文献１】ジェ・ダブリュ・リー（Jae W. Lee）、他５名、「ア・テクニック・トウ・ビルド・ア・シークレット・キー・イン・インテグレーテッド・サーキッツ・ウイズ・アイデンティフィケーション・アンド・オーセンティケーション・アプリケーションズ（A technique to build a secret key in integrated circuits with identification and authentication applications）」、アイ・イー・イー・イー・ブイ・エル・エス・アイ・サーキッツ・シンポジウム（IEEE VLSI Circuits Symposium）、２００４年６月
【非特許文献２】サンディープ・エス・クマール（Sandeep S. Kumar）、他４名、「エクステンド・アブストラクト：ザ・バタフライ・ピー・ユー・エフ・プロテクティング・アイ・ピー・オン・エブリイ・エフ・ピー・ジー・エイ（Extend Abstract: The Butterfly PUF: Protecting IP on every FPGA）」、アイ・イー・イー・イー・インターナショナル・ワークショップ・オン・ハードウェアオリエンテッド・セキュリティ・アンド・トラスト（IEEE International Workshop on Hardware-Oriented Security and Trust - HOST）、２００８年
【非特許文献３】ジー・エドワード・ソ（G. Edward. Suh）、他１名、「フィジカル・アンクローナブル・ファンクションズ・フォー・デバイス・オーセンティケーション・アンド・シークレット・キー・ジェネレーション（Physical Unclonable Functions for Device Authentication and Secret Key Generation）」、デザイン・オートメーション・カンファレンス（Design Automation Conference）、２００７年６月
【非特許文献４】ダイスケ・スズキ（Daisuke Suzuki）、他１名、「ザ・グリッチ・ピー・ユー・エフ：ア・ニュー・ディレイ・ピー・ユー・エフ・アーキテクチュア・エクスプロイティング・グリッチ・シェープス（The Glitch PUF: A New Delay-PUF Architecture Exploiting Glitch Shapes）」、クリプトグラフィック・ハードウェア・アンド・エンベデッド・システムズ・２０１０（Cryptographic Hardware and Embedded Systems - CHES 2010）、レクチャー・ノーツ・イン・コンピュータ・サイエンス（Lecture Notes in Computer Science - LNCS）、２０１０年、第６２２５巻（Volume 6225）、p. 366-382
【発明の概要】
【発明が解決しようとする課題】
【００５７】
図９の個体別情報生成装置５０において、前述したように符号誤り訂正回路を備えて個体別情報の再現性を確保する場合、訂正が必要となるビット数は、ＰＵＦ５１の個数に応じて多くなり、その訂正を行うために必要となる冗長データのサイズも大きくなる。つまり、符号誤り訂正回路を用いて個体別情報の再現性を確保するようにすると、非常に大きなサイズの冗長データを保存しておくことが必要となり、結果として、回路の実装コストを上昇させることとなる。
【００５８】
本発明は上述した事情に鑑みてなされたものであり、少ない回路規模で良好な再現性及びユニーク性を有する個体別情報の生成を可能にすることである。
【課題を解決するための手段】
【００５９】
本明細書で後述する個体別情報生成装置のひとつに、個体別情報を生成するものがある。この個体別情報生成装置は、複数の出力値生成回路と、数値出力部と、個体別情報生成部とを備えている。ここで、複数の出力値生成回路は、同一の回路構成からなり、特定の入力に対しての出力が一義的には定まらずに個々に所定の一定の出力値若しくは不定の出力値を出力する。数値出力部は、複数の出力値生成回路の各々の出力値に基づいて所定の数値を出力する。より具体的には、数値出力部は、当該出力値が前述の一定の出力値である場合には、当該出力値に応じて選択される、互いに値の異なる第一の数値群のうちのいずれかの数値を出力する。また、数値出力部は、当該出力値が前述の不定の出力値の場合には、当該出力値が所定値となる頻度に応じて選択される、値が当該第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を出力する。そして、個体別情報生成部は、複数の出力値生成回路の各々の出力値に基づき数値出力部から出力される数値に基づいて、個体別情報を生成する。
【００６０】
また、本明細書で後述する個体別情報生成方法のひとつに、個体別情報を生成するというものがある。この方法は、まず、複数の出力値生成回路の各々の出力値について、一定の出力値であるか、若しくは不定の出力値であるかを判定する。なお、この複数の出力値生成回路は、同一の回路構成からなり、特定の入力に対しての出力が一義的には定まらずに個々に所定の一定の出力値若しくは不定の出力値を出力する。ここで、出力値が一定の出力値であると判定した場合には、当該出力値に応じて、互いに値の異なる第一の数値群のうちのいずれかの数値を選択する。一方、出力値が不定の出力値であると判定した場合には、当該出力値が所定値となる頻度に応じて、値が第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を選択する。そして、複数の出力値生成回路の各々についてこのようにして選択された数値に基づいて、個体別情報を生成する。
【発明の効果】
【００６１】
本明細書で後述する個体別情報生成装置は、少ない回路規模で良好な再現性及びユニーク性を有する個体別情報の生成を行うことができる。
という効果を奏する。
【図面の簡単な説明】
【００６２】
【図１】遅延型ＰＵＦを説明する図である。
【図２】１個の遅延型ＰＵＦでｍビットのレスポンスを得る手法を説明する図である。
【図３】アービタＰＵＦの構成例である。
【図４Ａ】グリッチを説明する図（その１）である。
【図４Ｂ】グリッチを説明する図（その２）である。
【図５】グリッチＰＵＦの構成例である。
【図６】リングオシレータＰＵＦの構成例である。
【図７Ａ】ＲＳラッチ回路の構成例である。
【図７Ｂ】図７ＡのＲＳラッチ回路の真理値表である。
【図８】バタフライ型ＰＵＦの構成例である。
【図９】背景技術の個体別情報生成装置である。
【図１０】個体別情報生成装置の一実施例の機能ブロック図である。
【図１１】数値出力部の具体的構成例である。
【図１２】個体別情報生成装置の第一の具体的構成例である。
【図１３】個体別情報生成装置の第二の具体的構成例である。
【図１４】個体別情報生成装置の第三の具体的構成例である。
【図１５】遅延型ＰＵＦにおける各チャレンジの値と各レスポンスとの関係の一例を表した表である。
【図１６】個体別情報生成装置の第四の具体的構成例である。
【図１７】個体別情報生成装置を備えた暗号化装置の構成例である。
【図１８】個体別情報生成装置を備えた認証対象装置の構成例である。
【図１９】認証装置の構成例である。
【発明を実施するための形態】
【００６３】
まず図１０について説明する。図１０は、個体別情報生成装置の一実施例の機能ブロック図である。
個体別情報生成装置１００は、電子デバイスであるデバイス６０に、出力値生成回路１１０と数値出力部１２０とを複数（ｎ個とする）実装し、更に、個体別情報生成部１３０を実装して構成されており、デバイス６０についての個体別情報を生成する。
【００６４】
複数の出力値生成回路１１０は、いずれも同一の回路構成であって、その各々が、特定の入力に対しての出力が一義的には定まらずに個々に所定の一定の出力値若しくは不定の出力値を出力する回路である。より具体的には、出力値生成回路１１０は、例えば、前述した遅延型ＰＵＦ（例えば、アービタＰＵＦ、グリッチＰＵＦ、若しくはリングオシレータＰＵＦ）若しくはメタスタビリティＰＵＦ（例えばＳＲＡＭ−ＰＵＦ若しくはバタフライ型ＰＵＦ）である。
【００６５】
数値出力部１２０は、複数の出力値生成回路１１０の各々の出力値に基づいて所定の数値を出力する。より具体的には、数値出力部１２０は、当該出力値が前述の一定の出力値である場合には、当該出力値に応じて選択される、互いに値の異なる第一の数値群のうちのいずれかの数値を出力する。また、数値出力部１２０は、当該出力値が前述の不定の出力値の場合には、当該出力値が所定値となる頻度に応じて選択される、値が当該第一の数値群のいずれとも異なり且つ互いにも値の異なる第二の数値群のうちのいずれかの数値を出力する。このために、数値出力部１２０は、例えば、出力値生成回路１１０の出力値が一定の出力値であるか不定の出力値であるかを判定し、この判定結果に基づいて第一及び第二の数値群のうちのいずれかの数値を出力するようにしてもよい。なお、この判定は、出力値生成回路１１０から出力された所定数個の出力値が全て一致するか否かに基づいて行うようにする。また、数値出力部１２０は、出力値生成回路１１０の出力値が所定値となる頻度を、例えば、出力値生成回路１１０から出力された所定数個の出力値における当該所定値の個数に基づいて算出するようにしてもよい。
【００６６】
個体別情報生成部１３０は、複数の出力値生成回路１１０の各々の出力値に基づき数値出力部１２０から出力される数値に基づいて、個体別情報を生成する。
前述した、符号誤り訂正回路を利用した個体別情報の生成では、ＰＵＦ５１が乱数を出力している場合に、誤り訂正によってその出力値を１つの値に固定してしまうというものであった。一方、この個体別情報生成装置１００では、出力値生成回路１１０が不定の出力値を出力している場合には、その出力値が所定値となる頻度に応じて選択される数値を数値出力部１２０が出力する。そして、個体別情報生成部１３０による個体別情報の生成は、この出力にも基づいて行われる。このようにしたことで、符号誤り訂正回路は必須のものではなくなり、個体別情報の生成に要する回路規模が削減される。
【００６７】
なお、複数の出力値生成回路１１０は順序が予め定められていてもよい。この場合には、個体別情報生成部１３０は、複数の出力値生成回路１１０の各々について数値出力部１２０から出力される数値を、この順序に基づいて並べて得られる数列データに対してエントロピ圧縮を行うようにする。個体別情報生成部１３０は、このエントロピ圧縮によって得られた値に基づいて個体別情報を生成するようにしてもよい。
【００６８】
次に、数値出力部１２０の具体的構成について説明する。
本実施例では、数値出力部１２０に入力される出力値生成回路１１０の出力値が固定値「０」である場合には、数値出力部１２０は数値「００」を出力するようにする。また、数値出力部１２０に入力される出力値生成回路１１０の出力値が固定値「１」である場合には、数値出力部１２０は数値「１１」を出力するようにする。これらの数値「００」及び「１１」は、互いに値の異なる第一の数値群の一例である。
【００６９】
更に、数値出力部１２０に入力される出力値生成回路１１０の出力値が「０」と「１」との両方の値をとる不定値である場合には、数値出力部１２０は数値「１０」若しくは「０１」を出力するようにする。但し、ここで、出力値生成回路１１０の出力値が「１」である頻度が「０」である頻度よりも高い場合（すなわち、出力値が「１」である頻度が５０パーセントよりも高い場合）には、数値出力部１２０は数値「１０」を出力するようにする。また、出力値生成回路１１０の出力値が「１」である頻度が「０」である頻度よりも低い場合（すなわち、出力値が「０」である頻度が５０パーセントよりも高い場合）には、数値出力部１２０は数値「０１」を出力するようにする。これらの数値「１０」及び「０１」は、値が前述の第一の数値群（すなわち、数値「００」及び「１１」）のいずれとも異なり、且つ互いにも値が異なっている第二の数値群の一例である。
【００７０】
出力値生成回路１１０の出力値が不定値である場合に、その出力値生成回路１１０が出力する各値の出力頻度は、個々の出力値生成回路１１０において一定であり、再現性を有している。従って、このようにして、出力値生成回路１１０の出力値が「１」である頻度に応じて、数値出力部１２０が、数値「１０」若しくは「０１」を出力するようにすることで、前述したような符号誤り訂正回路による個体別情報の再現性の確保が必須のものではなくなる。更には、訂正に使用される冗長データも不要となるので、結果として、回路の実装コストが大幅に削減される。
【００７１】
ここで図１１について説明する。図１１は、数値出力部１２０の具体的構成例を図解したものである。
図１１の数値出力部１２０は、出力値生成回路１１０から出力された連続する１０２３ビット分の出力値が全て「０」である場合には「００」を出力し、当該連続する１０２３ビット分の出力値が全て「１」である場合には「１１」を出力する。また、この数値出力部１２０は、当該１０２３ビット分の出力値のうち、値が「０」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「０」の場合）には、「０１」を出力する。更に、この数値出力部１２０は、当該１０２３ビット分の出力値のうち、値が「１」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「１」の場合）には、「１０」を出力する。
【００７２】
この数値出力部１２０は、ビット数変換器１２１、加算器１２２、レジスタ１２３、リダクション演算回路１２４及び１２６、ＡＮＤ（論理積）回路１２５及び１２８、ＮＯＴ（否定）回路１２７、及びＯＲ（論理和）回路１２９を備えて構成されている。
【００７３】
ビット数変換器１２１は、出力値生成回路１１０から出力される１ビットの出力値を１０ビットのデータに変換する変換器であり、当該１ビットの出力値を最下位ビットの値とし、当該最下位ビットに上位９ビット分の「０」を付加して得られるデータを出力する。
【００７４】
加算器１２２は、ビット数変換器１２１から出力される１０ビットのデータを、レジスタ１２３に格納されている１０ビットのデータに加算し、その加算結果を出力する。
レジスタ１２３は、加算器１２２から出力される１０ビットの加算結果が格納される。従って、ビット数変換器１２１、加算器１２２、及びレジスタ１２３により、出力値生成回路１１０から出力される出力値が「１」であった個数を計数するカウンタ回路が構成されている。この個数が５１２個以上１０２３個以下の場合には、レジスタ１２３に格納される１０ビットのデータのうちの最上位のビットの値が「１」となり、この個数が０個以上５１１個以下の場合には、当該最上位のビットの値が「０」となる。この最上位のビットの値が、この数値出力部１２０からの２ビットの出力のうちの上位ビットの出力として導き出されると共に、ＡＮＤ回路１２５及び１２８各々への入力の１つとされている。
【００７５】
なお、レジスタ１２３は、出力値生成回路１１０から１０２３ビット分の値が出力される度に、格納されている全てのビットの値が「０」にリセットされる。
リダクション演算回路１２４及び１２６は、どちらも、レジスタ１２３に格納されている１０ビットのデータに対するリダクション演算を行う回路である。但し、リダクション演算回路１２４は、当該１０ビットのデータに対して論理積のリダクション演算を行うのに対し、リダクション演算回路１２６は、当該１０ビットのデータに対して論理和のリダクション演算を行う。従って、リダクション演算回路１２４は、当該１０ビットのデータの全ての値が「１」である場合にのみ値「１」を出力し、当該１０ビットのデータのうちで少なくとも１ビットの値が「０」である場合には値「０」を出力する。一方、リダクション演算回路１２６は、当該１０ビットのデータのうちで少なくとも１ビットの値が「１」である場合には値「１」を出力し、当該１０ビットのデータの全ての値が「０」である場合にのみ値「０」を出力する。
【００７６】
ＡＮＤ回路１２５には、リダクション演算回路１２４の出力と、レジスタ１２３に格納されている１０ビットのデータのうちの前述した最上位のビットの値とが入力される。従って、ＡＮＤ回路１２５は、出力値生成回路１１０から出力される出力値が「１」であった個数が１０２３個の場合にのみ（すなわち、当該出力値が全て「１」であった場合にのみ）値「１」を出力し、その他の場合には値「０」を出力する。
【００７７】
一方、ＡＮＤ回路１２８には、リダクション演算回路１２６の出力と、レジスタ１２３に格納されている１０ビットのデータのうちの前述した最上位のビットの値をＮＯＴ回路１２７によって反転した値とが入力される。従って、ＡＮＤ回路１２８は、出力値生成回路１１０から出力される出力値が「１」であった個数が１個以上５１１個以下の場合には値「１」を出力する。そして、その他の場合、すなわち、出力値生成回路１１０から出力される出力値が「１」であった個数が０個若しくは５１２個以上１０２３個以下の場合には、ＡＮＤ回路１２８は値「０」を出力する。
【００７８】
ＯＲ回路１２９には、ＡＮＤ回路１２５及び１２８各々の出力が入力される。従って、ＯＲ回路１２９は、ＡＮＤ回路１２５及び１２８の出力のうちの少なくとも一方の値が「１」のとき、すなわち、出力値生成回路１１０から出力される出力値が「１」であった個数が１個以上５１１個以下若しくは１０２３個の場合に、値「１」を出力する。一方、この他の場合、すなわち、出力値生成回路１１０から出力される出力値が「１」であった個数が０個若しくは５１２個以上１０２２個以下の場合に、ＯＲ回路１２９は値「０」を出力する。このＯＲ回路１２９の出力が、この数値出力部１２０からの２ビットの出力のうちの下位ビットの出力として導き出される。
【００７９】
以上の動作をまとめると、出力値生成回路１１０からの１０２３ビット分の出力値のうちで値が「１」の個数が０個である場合（すなわち、当該出力値が全て「０」であった場合）には、数値出力部１２０からの出力は、上位ビット・下位ビット共に「０」となる。また、この１０２３ビット分の出力値のうちで値が「１」の個数が１０２３個である場合（すなわち、当該出力値が全て「１」であった場合）には、数値出力部１２０からの出力は、上位ビット・下位ビット共に「１」となる。更に、この１０２３ビット分の出力値のうちで値が「１」の個数が１個以上５１１個以下である場合（すなわち、当該出力値の５０パーセント以上が「０」の場合）には、数値出力部１２０からの出力は、上位ビットが「０」となり、下位ビットが「１」となる。そして、この１０２３ビット分の出力値のうちで値が「１」の個数が５１２個以上１０２２個以下である場合（すなわち、出力値の５０パーセント以上が「１」の場合）には、数値出力部１２０からの出力は、上位ビットが「１」となり、下位ビットが「０」となる。
【００８０】
なお、数値出力部１２０を、図１１の構成例のようなハードウェアのみで構成する代わりに、数値出力部１２０の機能を演算処理装置で実現させるプログラム（ソフトウェア）を作成し、当該プログラムを当該演算処理装置で実行させるようにして構成してもよい。
【００８１】
なお、図１０の個体別情報生成装置１００の機能ブロック図では、複数の出力値生成回路１１０の各々について、数値出力部１２０を１つずつ備えるように構成されている。この代わりに、個体別情報生成装置１００に数値出力部１２０を１つのみ備え、更に、複数の出力値生成回路１１０の各々の出力から１つの出力を選択するセレクタを備えて、選択された出力を数値出力部１２０に入力する構成としてもよい。
【００８２】
ここで図１２について説明する。図１２は、個体別情報生成装置１００の第一の具体的構成例である。この第一の構成例は、メタスタビリティ型ＰＵＦの一例である、前述したバタフライ型ＰＵＦ４０を出力値生成回路１１０として使用したものである。
【００８３】
図１２において、出力値生成回路１１０であるＮ個のバタフライ型ＰＵＦ４０−１、…、４０−Ｎの各々の出力は、セレクタ１０１に入力される。なお、このバタフライ型ＰＵＦ４０−１、…、４０−Ｎは、この個体別情報生成装置１００に与えられた前述のチャレンジによって選択されたものとする。
【００８４】
セレクタ１０１は、このＮ個の出力から順に１個ずつ出力を選択して数値出力部１２０へ入力する。
数値出力部１２０は前述した図１１の構成を備えている。
【００８５】
個体別情報生成部１３０は、数値出力部１２０から出力される数値に基づいて個体別情報を生成する。この構成例では、個体別情報生成部１３０は、２Ｎビットのシフトレジスタ１３１と、エントロピ圧縮部１３２とを備えている。
【００８６】
シフトレジスタ１３１には、バタフライ型ＰＵＦ４０−１、…、４０−Ｎの出力のうちの１つが順にセレクタ１０１により選択されて数値出力部１２０に入力されたときに、数値出力部１２０から出力される２ビットの数値が順次格納される。
【００８７】
エントロピ圧縮部１３２は、シフトレジスタ１３１に並べられた２Ｎビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報（すなわち、前述のレスポンス）として出力する。
【００８８】
シフトレジスタ１３１に格納された値をそのままレスポンスとして使用すると、バタフライ型ＰＵＦ４０−１、…、４０−Ｎの順序と、シフトレジスタ１３１に格納されているビット列の並び順とが１対１対応してしまう。従って、この対応関係を推測されてしまうと、任意のチャレンジに対するレスポンスの値が推測できてしまう可能性がある。エントロピ圧縮部１３２は、この推測を困難なものとするためのものである。
【００８９】
エントロピ圧縮部１３２としては、例えば一方向性関数回路を使用する。一方向性関数回路は、入力が一意であれば、出力が一意に定まるが、出力から入力を求めることは非常に困難な関数である。なお、本実施例では、エントロピ圧縮部１３２として、入力されたビット列に対するハッシュ関数値を得る回路を用いる。より具体的には、この回路として、米国連邦情報処理基準（Federal Information Processing Standard/FIPS）に採用されているハッシュ関数であるＳＨＡ−２５６によるハッシュ関数値を得る回路を用いる。このエントロピ圧縮部１３２を用いることで、レスポンスからチャレンジを推測することが極めて困難なものとなり、安全性が向上する。
図１２の個体別情報生成装置１００では、以上のようにして個体別情報が生成される。
【００９０】
次に図１３について説明する。図１３は、個体別情報生成装置１００の第二の具体的構成例である。この第二の構成例は、メタスタビリティ型ＰＵＦの一例である、前述したＳＲＡＭ−ＰＵＦを出力値生成回路１１０として使用したものである。
【００９１】
図１３において、出力値生成回路１１０であるＳＲＡＭ１１１のＮ個のメモリセル１１１−１、…、１１１−Ｎの各々の出力は、セレクタ１０１に入力される。なお、このメモリセル１１１−１、…、１１１−Ｎは、この個体別情報生成装置１００に与えられた前述のチャレンジによって選択されたものとする。ここで、ＳＲＡＭ１１１に対して電力の供給と切断とを繰り返す度に、メモリセル１１１−１、…、１１１−Ｎからは不定値が出力される。
【００９２】
セレクタ１０１は、このＮ個の出力から順に１個ずつ出力を選択して数値出力部１２０へ入力する。
数値出力部１２０は前述した図１１の構成を備えている。
【００９３】
個体別情報生成部１３０は、数値出力部１２０から出力される数値に基づいて個体別情報を生成する。個体別情報生成部１３０は、この構成例では、２Ｎビットのシフトレジスタ１３１と、エントロピ圧縮部１３２とを備えている。
【００９４】
シフトレジスタ１３１には、メモリセル１１１−１、…、１１１−Ｎのうちの１つからの１０２３ビット分の出力が入力されることによって数値出力部１２０から出力される２ビットの数値が、セレクタ１０１による選択順に従って格納される。従って、セレクタ１０１がメモリセル１１１−１、…、１１１−Ｎの出力のうちの１つを順に選択することによって、シフトレジスタ１３１には、２Ｎビットのビット列が格納される。
【００９５】
エントロピ圧縮部１３２は、シフトレジスタ１３１に並べられた２Ｎビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報（すなわち、前述のレスポンス）として出力するものであり、図１２におけるものと同様のものを使用する。
【００９６】
図１３の個体別情報生成装置１００では、以上のようにして個体別情報が生成される。
次に図１４について説明する。図１４は、個体別情報生成装置１００の第三の具体的構成例である。この第三の構成例は、前述した遅延型ＰＵＦ（アービタＰＵＦ、グリッチＰＵＦ、リングオシレータＰＵＦ等）を出力値生成回路１１０として１つのみ使用して構成したものである。
【００９７】
図１４における遅延型ＰＵＦ１は、図１におけるものと同一のものであり、ｎビットのチャレンジの入力に対して、１ビットのレスポンスを返す。
数値出力部１２０は前述した図１１の構成を備えている。
【００９８】
個体別情報生成部１３０は、数値出力部１２０から出力される数値に基づいて個体別情報を生成する。個体別情報生成部１３０は、この構成例では、２Ｍビットのシフトレジスタ１３１と、エントロピ圧縮部１３２とを備えている。
【００９９】
図１４の構成例では、遅延型ＰＵＦ１には、各々ｎビットの互いに異なるチャレンジが所定の順序でＭ個（チャレンジ０、チャレンジ１、チャレンジ２、…、チャレンジＭ−１）与えられる。また、Ｍ個の各チャレンジにおいては、同一値のｎビットのチャレンジを遅延型ＰＵＦ１に１０２３回与えることで、１０２３ビット分の出力を遅延型ＰＵＦ１から得る。図１５の表は、遅延型ＰＵＦ１における各チャレンジの値と各レスポンスとの関係の一例を表したものである。
【０１００】
シフトレジスタ１３１には、同一値のｎビットのチャレンジを１０２３回与えたときの遅延型ＰＵＦ１からの１０２３ビット分の出力が入力されることによって数値出力部１２０から出力される２ビットの数値が、Ｍ個のチャレンジの順に従って格納される。従って、Ｍ個のチャレンジのうちの１つが順に遅延型ＰＵＦ１に与えられることによって、シフトレジスタ１３１には、２Ｍビットのビット列が格納される。
【０１０１】
エントロピ圧縮部１３２は、シフトレジスタ１３１に並べられた２Ｍビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報（すなわち、前述のレスポンス）として出力するものであり、図１２におけるものと同様のものを使用する。
【０１０２】
図１４の個体別情報生成装置１００では、以上のようにして個体別情報が生成される。
なお、図１２におけるＮ個のバタフライ型ＰＵＦ４０−１、…、４０−Ｎの各々をＮ個の遅延型ＰＵＦに置き換えて個体別情報生成装置１００を構成するようにしてもよい。
【０１０３】
すなわち、図１６に図解した個体別情報生成装置１００の第四の具体的構成例のように、出力値生成回路１１０として、各々異なるチャレンジが与えられている遅延型ＰＵＦ１−１、…、１−Ｎを備えて、その各々の出力を、セレクタ１０１に入力するようにする。なお、この遅延型ＰＵＦ１−１、…、１−Ｎは、この個体別情報生成装置１００に与えられたチャレンジによって選択されたものとする。このように構成した個体別情報生成装置１００でも、図１２に図解したものと同様に動作する結果、個体別情報が生成される。
【０１０４】
次に、これまで説明した個体別情報生成装置５０及び１００により生成される個体別情報のパターン数についての定量的な見積もり例について説明する。
なお、ここでは、見積もりの前提として、バタフライ型ＰＵＦ４０を、出力値生成回路１１０として、デバイス６０に１２８個実装するものとし、そのうちのＴ個のバタフライ型ＰＵＦ４０の出力値が不定であるとする。そして、Ｔ＝８とＴ＝３２の場合についての個体別情報のパターン数の見積もりを行うこととする。
【０１０５】
まず、図９の個体別情報生成装置５０に符号誤り訂正回路を追加した場合には、不定の出力値を誤り訂正によって所定値とするので、Ｔの値にかかわらず、個体別情報のパターン数は２128 通りとなる。但し、不定値を出力するバタフライ型ＰＵＦ４０の個数が多いと、誤り訂正に使用される冗長データのデータ量が、その個数に応じて増大する。
【０１０６】
ここで、不定値を出力するバタフライ型ＰＵＦ４０の当該出力値を、個体別情報の生成に使用せずに廃棄してしまう場合を考える。この場合において、Ｔ＝８であれば、一定の所定値を出力するバタフライ型ＰＵＦ４０の個数は１２０であるから、個体別情報のパターン数は２120通りとなる。また、この場合において、Ｔ＝３２であれば、一定の所定値を出力するバタフライ型ＰＵＦ４０の個数は９６、個体別情報のパターン数は２96通りとなる。
【０１０７】
次に、不定値を出力するバタフライ型ＰＵＦ４０の当該出力値を廃棄せずに使用する場合を考える。ここでは、図１０の個体別情報生成装置１００の構成において、数値出力部１２０は、バタフライ型ＰＵＦ４０の出力値に応じて３種類の数値を出力するものとする。すなわち、数値出力部１２０は、当該出力値が固定値「０」である場合には数値「００」を出力し、当該出力値が固定値「１」である場合には数値「１１」を出力し、当該出力値が不定値である場合には数値「１０」を出力するものとする。
【０１０８】
この場合において、Ｔ＝８であれば、１２８個のバタフライ型ＰＵＦ４０のうちで出力値が不定であるものの組み合わせの数は128Ｃ8 ＝２40通りであるので、個体別情報のパターン数は２120 ×２40＝２160 通りとなる。また、この場合において、Ｔ＝３２であれば、１２８個のバタフライ型ＰＵＦ４０のうちで出力値が不定であるものの組み合わせの数は 128Ｃ32＝２100通りであるので、個体別情報のパターン数は２96×２100 ＝２196 通りとなる。
【０１０９】
次に、図１０の個体別情報生成装置１００の構成において、数値出力部１２０が図１１のように構成されている場合を考える。すなわち、数値出力部１２０は、バタフライ型ＰＵＦ４０の出力値に応じて、前述した４種類の数値「００」、「１１」、「０１」、及び「１０」のいずれかを出力するものとする。
【０１１０】
この場合には、数値出力部１２０が３種類の数値を出力する前述した場合に対し、出力値が不定であるバタフライ型ＰＵＦ４０が、更に２種類に細分化される。すなわち、この場合において、Ｔ＝８であれば、個体別情報のパターン数は、２160 ×２8 ＝２168 通りとなる。また、この場合において、Ｔ＝３２であれば、個体別情報のパターン数は、２196 ×２32＝２228 通りとなる。
【０１１１】
なお、図１１の数値出力部１２０は、出力値生成回路１１０の出力値が所定値となる頻度に応じて４種類の数値のいずれかを出力するようにしていた。この代わりに、当該出力値が所定値となる頻度に応じて、２よりも多くの種類の値のいずれかを出力するようにしてもよい。
【０１１２】
例えば、数値出力部１２０が、出力値生成回路１１０の出力値が所定値となる頻度に応じて、８種類の数値「０００」、「００１」、「０１０」、「０１１」、「１００」、「１０１」、「１１０」、及び「１１１」のいずれかを出力するようにしてもよい。すなわち、より具体的には、当該出力値が「１」となる頻度が１００パーセントの場合には、数値出力部１２０は「１１１」を出力する。また、当該出力値が「１」となる頻度が８０〜１００パーセントの場合には、数値出力部１２０は「１１０」を出力し、当該出力値が「１」となる頻度が６５〜８０パーセントの場合には、数値出力部１２０は「１０１」を出力する。そして、当該出力値が「１」となる頻度が５０〜６５パーセントの場合には、数値出力部１２０は「１００」を出力し、当該出力値が「１」となる頻度が３５〜５０パーセントの場合には、数値出力部１２０は「０１１」を出力する。更に、当該出力値が「１」となる頻度が２０〜３５パーセントの場合には、数値出力部１２０は「０１１」を出力し、当該出力値が「１」となる頻度が０〜２０パーセントの場合には、数値出力部１２０は「０１０」を出力する。そして、当該出力値が「１」となる頻度が０パーセントの場合には、数値出力部１２０は「０００」を出力する。数値出力部１２０が、このように動作するように構成してもよい。
【０１１３】
なお、図１０の個体別情報生成装置１００の構成において、数値出力部１２０が上述のように動作して、ｎ種類の数値のうちのいずれかを出力する場合の個体別情報のパターン数は、次のように見積もられる。すなわち、この場合において、Ｔ＝８であれば、個体別情報のパターン数は、２160 ×（ｎ−２）8 通りとなり、Ｔ＝３２であれば、個体別情報のパターン数は、２196 ×（ｎ−２）32通りとなる。
【０１１４】
なお、以上までに説明した個体別情報生成装置１００を、ハードウェアで構成する代わりに、演算処理装置と当該演算処理装置で実行されるソフトウェアとの組み合わせで構成することも可能である。
【０１１５】
次に、図１０、図１２、図１３、図１４、及び図１６で各々図解した個体別情報生成装置１００を用いた電子機器について説明する。
まず図１７について説明する。図１７は、暗号化装置の構成例を図解したものである。
【０１１６】
この暗号化装置２００は、個体別情報生成装置１００を用いて構成されている。
暗号化装置２００は、個体別情報生成装置１００、ＣＰＵ２１０、暗号演算器２２０、ＲＯＭ２３０、及びＲＡＭ２４０を備えて構成されている。なお、これらの各構成要素はバスライン２５０にいずれも接続されており、ＣＰＵ２１０による管理の下で各種のデータを相互に授受することができるように構成されている。
【０１１７】
個体別情報生成装置１００は、電子デバイスであるデバイス６０に実装されている。
ＣＰＵ（Central Processing Unit ）２１０は、この暗号化装置２００の各構成要素の動作を管理する中央演算部である。
【０１１８】
暗号演算器２２０は、各種の情報の暗号化処理や、暗号化されているデータの復号処理を行う。なお、本実施形態では、暗号演算器２２０は、公開鍵コプロセッサ２２１と共通鍵コプロセッサ２２２とを備えている。ここで、公開鍵コプロセッサ２２１は、代表的な公開鍵暗号方式であるＲＳＡ暗号や楕円曲線暗号等を用いて暗号化及び復号の処理を行う。また、共通鍵コプロセッサ２２２は、代表的な共通鍵暗号方式であるＡＥＳ暗号等を用いて暗号化及び復号の処理を行う。なお、暗号演算器２２０を暗号化装置２００に備える代わりに、暗号演算器２２０により行われる暗号化及び復号の処理を、ＣＰＵ２１０に行わせるように構成してもよい。
【０１１９】
ＲＯＭ（Read Only Memory）２３０には、ＣＰＵ２１０により実行される制御プログラムや、暗号演算器２２０が暗号化や復号の処理において使用する固有のパラメータが予め格納されている不揮発性半導体メモリである。ＣＰＵ２１０は、暗号化装置２００への電力供給が開始されたときに、この制御プログラムをＲＯＭ２３０から読み出してその実行を開始することで、暗号化装置２００の各構成要素の動作管理を行えるようになる。
【０１２０】
ＲＡＭ（Random Access Memory）２４０は、ＣＰＵ２１０や暗号演算器２２０が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
【０１２１】
この暗号化装置２００において、暗号演算器２２０は、個体別情報生成装置１００が生成した個体別情報を暗号鍵として用いて、情報の暗号化処理を行う。また、この暗号化処理において暗号鍵として用いられた個体別情報は、その後に暗号演算器２２０が暗号化情報に対して行う復号処理にも使用する。
【０１２２】
なお、個体別情報生成装置１００で生成される個体別情報を暗号鍵の生成に用いる際に、生成された個体別情報のエントロピを更に向上させるための後処理（Post Processing ）を行ってもよい。このために行われる後処理の一例として、線形フィードバックシフトレジスタ（ＬＦＳＲ）の使用を挙げることができる。ＬＦＳＲは、排他的論理和回路で帰還をかけたシフトレジスタによって構成されるカウンタであり、個体別情報のエントロピを向上させることができる。従って、ＬＦＳＲから出力されるデータ列を用いて暗号鍵の生成を行うようにすることで、よりランダム性の高い暗号鍵を生成することが可能になる。なお、ＬＦＳＲは、専用のハードウェアを構成して用いるようにしてもよく、また、ＣＰＵ２１０を用いてソフトウェアにより実現するようにしてもよい。
【０１２３】
次に、個体別情報生成装置１００を用いた認証システムについて説明する。この認証システムは、認証対象装置が正規のものであるか否かの認証を、認証装置が行うシステムである。
【０１２４】
まず図１８について説明する。図１８は、この認証システムに用いられる認証対象装置の構成例を図解したものである。
この認証対象装置３００は、個体別情報生成装置１００を用いて構成されている。
【０１２５】
認証対象装置３００は、個体別情報生成装置１００、ＣＰＵ３１０、通信部３２０、ＲＯＭ３３０、及びＲＡＭ３４０を備えて構成されている。なお、これらの各構成要素はバスライン３５０にいずれも接続されており、ＣＰＵ３１０による管理の下で各種のデータを相互に授受することができるように構成されている。
【０１２６】
個体別情報生成装置１００は、電子デバイスであるデバイス６０に実装されており、個体別情報を、この認証対象装置３００のものとして生成する。
ＣＰＵ３１０は、この認証対象装置３００の各構成要素の動作を管理する中央演算部である。
【０１２７】
通信部３２０は、各種のデータの送受信を行って、後述する認証装置との間で各種の情報の授受を行う。
ＲＯＭ３３０には、ＣＰＵ３１０により実行される制御プログラムが予め格納されている不揮発性半導体メモリである。ＣＰＵ３１０は、認証対象装置３００への電力供給が開始されたときに、この制御プログラムをＲＯＭ３３０から読み出してその実行を開始することで、認証対象装置３００の各構成要素の動作管理を行えるようになる。
ＲＡＭ３４０は、ＣＰＵ３１０が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
【０１２８】
次に図１９について説明する。図１９は、前述の認証システムに用いられる認証装置の構成例を図解したものである。
この認証装置４００は、ＣＰＵ４１０、通信部４２０、認証処理部４３０、ＲＯＭ４４０、及びＲＡＭ４５０を備えて構成されている。なお、これらの各構成要素はバスライン４６０にいずれも接続されており、ＣＰＵ４１０による管理の下で各種のデータを相互に授受することができるように構成されている。
【０１２９】
ＣＰＵ４１０は、この認証装置４００の各構成要素の動作を管理する中央演算部である。
通信部４２０は、図１８の認証対象装置３００との間で通信を行って、各種の情報の授受を行う。
【０１３０】
認証処理部４３０は、認証対象装置３００に対する認証処理を、後述するようにして行う。なお、認証処理部４３０を認証装置４００に備える代わりに、認証処理部４３０により行われる認証処理を、ＣＰＵ４１０に行わせることに構成してもよい。
【０１３１】
ＲＯＭ４４０には、ＣＰＵ４１０により実行される制御プログラムや、認証処理部４３０が認証処理に用いる正規の認証対象装置３００についての個体別情報が予め格納されている不揮発性半導体メモリである。ＣＰＵ４１０は、認証装置４００への電力供給が開始されたときに、この制御プログラムをＲＯＭ４４０から読み出してその実行を開始することで、認証装置４００の各構成要素の動作管理を行えるようになる。
【０１３２】
ＲＡＭ４５０は、ＣＰＵ４１０や認証処理部４３０が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
次に、前述した認証システムによる認証動作について説明する。
【０１３３】
まず、認証動作に先立ち、認証装置４００のＲＯＭ４４０には、正規の認証対象装置３００が備えている個体別情報生成装置１００が生成する個体別情報を、予め記録させておく。
【０１３４】
認証装置４００の認証処理部４３０が認証処理を開始すると、まず、通信部４２０に指示を与えて、個体別情報の送付要求を、認証対象装置３００へ宛てて送信させる処理が行われる。
【０１３５】
認証対象装置３００のＣＰＵ３１０は、この送付要求を通信部３２０が受信したことを検出すると、個体別情報生成装置１００に所定の指示を与えて個体別情報を生成させる処理が行われる。次に、ＣＰＵ３１０は、通信部３２０に指示を与えて、生成された個体別情報を認証装置４００へ宛てて送信させる処理が行われる。
【０１３６】
認証装置４００の認証処理部４３０は、認証対象装置３００から送信された個体別情報を通信部４２０が受信すると、この個体別情報が、ＲＯＭ４４０に予め記録されていた正規の認証対象装置３００のものと一致するか否かを判定する処理を行う。ここで、両者の個体別情報が一致するとの判定結果が得られたときには、個体別情報の送信元の認証対象装置３００が正規のものであるとの認証結果を得る。
【０１３７】
なお、上述の認証動作において、ＲＯＭ４４０に、正規の認証対象装置３００が備えている個体別情報生成装置１００が生成する個体別情報として、前述した「チャレンジ」と「レスポンス」との関係を複数組記録しておいてもよい。
【０１３８】
この場合には、認証装置４００の認証処理部４３０が、個体別情報の送付要求に、ＲＯＭ４４０に「レスポンス」との関係が記録されている各「チャレンジ」の情報を添付して通信部４２０に送信させるようにする。一方、認証対象装置３００のＣＰＵ３１０は、この送付要求に添付されていた各「チャレンジ」の情報を個体別情報生成装置１００に与えて、各「チャレンジ」の情報についての「レスポンス」の情報を生成させる。そして、ＣＰＵ３１０は、生成された各「レスポンス」の情報を認証装置４００へ宛てて通信部３２０に送信させる処理を行うようにする。このとき、認証装置４００の認証処理部４３０は、通信部４２０で受信した各「レスポンス」の情報が、ＲＯＭ４４０に記録されていた正規の認証対象装置３００におけるものと全て一致するか否かを判定する処理を行う。ここで、両者の「レスポンス」の情報が全て一致するとの判定結果が得られたときには、「レスポンス」の送信元の認証対象装置３００が正規のものであるとの認証結果を得る。前述の認証システムにおける認証動作を、以上のようにして行ってもよい。
【符号の説明】
【０１３９】
１、１−１、１−Ｎ  遅延型ＰＵＦ
１０  アービタＰＵＦ
１１、１１−０ａ、１１−０ｂ、１１−１ａ、１１−１ｂ、１１−２ａ、１１−２ｂ、１１−（ｎ−１）ａ、１１−（ｎ−１）ｂ、１０１  セレクタ
１２  Ｄ型フリップフロップ回路
２０  グリッチＰＵＦ
２１  ＸＯＲ回路
２２、１２５、１２８  ＡＮＤ回路
２３  グリッチ発生回路
２４  グリッチ形状判定回路
３０  リングオシレータＰＵＦ
３１−１、３１−２、３１−ｎ  リングオシレータ
３２−１、３２−２  マルチプレクサ
３３−１、３３−２  カウンタ
３４  比較器
４０、４０−１、４０−Ｎ  バタフライ型ＰＵＦ
４１、４２  ＮＡＮＤ回路
５０、１００  個体別情報生成装置
５１、５１−１、５１−２、５１−３、５１−４、５１−５、５１−６  ＰＵＦ
６０  デバイス
１１０  出力値生成回路
１１１  ＳＲＡＭ
１１１−１、１１１−Ｎ  メモリセル
１２０  数値出力部
１２１  ビット数変換器
１２２  加算器
１２３  レジスタ
１２４、１２６  リダクション演算回路
１２７  ＮＯＴ回路
１２９  ＯＲ回路
１３０  個体別情報生成部
１３１  シフトレジスタ
１３２  エントロピ圧縮部
２００  暗号化装置
２１０、３１０、４１０  ＣＰＵ
２２０  暗号演算器
２２１  公開鍵コプロセッサ
２２２  共通鍵コプロセッサ
２３０、３３０、４４０  ＲＯＭ
２４０、３４０、４５０  ＲＡＭ
２５０、３５０、４６０  バスライン
３００  認証対象装置
３２０、４２０  通信部
４００  認証装置
４３０  認証処理部
【図１】
0005831202.tif 000002
【図２】
0005831202.tif 000003
【図３】
0005831202.tif 000004
【図４Ａ】
0005831202.tif 000005
【図４Ｂ】
0005831202.tif 000006
【図５】
0005831202.tif 000007
【図６】
0005831202.tif 000008
【図７Ａ】
0005831202.tif 000009
【図７Ｂ】
0005831202.tif 000010
【図８】
0005831202.tif 000011
【図９】
0005831202.tif 000012
【図１０】
0005831202.tif 000013
【図１１】
0005831202.tif 000014
【図１２】
0005831202.tif 000015
【図１３】
0005831202.tif 000016
【図１４】
0005831202.tif 000017
【図１５】
0005831202.tif 000018
【図１６】
0005831202.tif 000019
【図１７】
0005831202.tif 000020
【図１８】
0005831202.tif 000021
【図１９】
0005831202.tif 000022