"方法であって共通の設計に基づいて製造されたデバイスのグループから第1のデバイスを提供することであって、各デバイスが、前記グループ内でそのデバイスに対して固有なものである複数の動特性を含む対応する複数の測定可能な特性を有し、各デバイスが、前記測定可能な特性を測定するための測定モデルを有する、前記第1のデバイスを提供すること、前記デバイスの1つ以上の複数の測定可能な特性のうちの1つ以上の選択された一部を選択的に測定し、前記選択された一部の前記測定結果を、前記第1のデバイスについて選択された一部のために以前に選択的に測定され予め記憶された測定値と比較することにより前記第1のデバイスの認証を可能にすることを備え、前記複数の測定可能な特性は、前記デバイス内の複数の信号経路の遅延特性を含む、方法。前記複数の信号経路は、回路構成要素の各組を通る複数の経路を含み、前記回路構成要素は、受動送信ライン、能動半導体素子、及び論理ゲートのうちの1つを含む、請求項1に記載の方法。前記複数の測定可能な特性の各々は、個々の物理特性の組によって決定され、前記1つ以上の測定可能な特性の選択を測定することは、選択情報に従って前記個々の物理特性の非線形の組合せを形成することを含む、請求項1に記載の方法。前記個々の物理特性は回路構成要素の特性を含み、前記複数の個々の物理特性を組合せることは、前記選択情報に従って選択された回路構成要素を通過する信号経路を形成することを含む、請求項3に記載の方法。認証を可能にすることが、前記第1のデバイスを登録することを含み、前記第1のデバイスを登録することが、前記第1のデバイスに、選択情報を送信すること、前記選択情報に基づいて前記複数の特性のうちの1つを選択的に測定することにより生成されたレスポンス情報を前記第1のデバイスからを受信すること、前記第1のデバイスに関連する前記受信レスポンス情報及び前記選択情報を記憶することを含む、請求項1に記載の方法。受信したレスポンスを記憶することは、前記選択情報及びレスポンス情報を秘密にすることを含む、請求項5に記載の方法。前記第1のデバイスを認証することであって、前記第1のデバイスに前記選択情報を送信し、複数の特性のうちの1つを選択的に測定することにより生成されたレスポンス情報を受信すること、前記受信レスポンス情報を前記記憶したレスポンス情報と比較することを含む、前記第1のデバイスを認証することを更に備える請求項5に記載の方法。前記第1のデバイスを登録すること及び前記第1のデバイスを認証することの各々が、前記選択情報に基づいて前記複数の特性のうちの1つを選択的に測定することと、前記測定情報を生成することを含む、請求項7に記載の方法。前記デバイスのグループの各デバイスを登録することを更に備え、前記デバイスのグループの各デバイスを登録することが、前記各デバイスに対して前記デバイスに、前記測定可能な特性の一部を識別する選択情報を送信すること、前記デバイスから、前記選択情報において識別された測定可能な特性の前記一部の各々を選択的に測定することにより生成されたレスポンス情報を受信すること、前記第1のデバイスに関連する前記受信レスポンス情報及び前記選択情報を記憶することを含む、請求項1に記載の方法。前記各デバイスに対する前記測定可能な特性の異なる一部を決定することを更に備え、前記決定することが、好ましくは前記一部の各々の構成をランダムに選択することを含む、請求項9に記載の方法。正確にコピーすることが困難な測定可能な物理特性の多数の組を含む集積回路チップを設計し、物理特性の一部を選択的に測定し、その測定結果を予め記憶された測定値と比較することにより、チップを認証することができる。一致した場合には、チップが認証される。測定可能な物理特性の数が十分多くなるようにチップを設計して、攻撃者が、すべての物理特性を1つ残らず測定し、測定結果を記憶することを実行不可能にすることができる。また、攻撃者が、物理特性の一部を測定して、チップのモデルを生成することを困難にするようにチップを構成することができる。攻撃者は、物理特性のどの一部を選択し、測定するのかを事前に知ることができないので、攻撃者は、このチャレンジに応じて適切な測定値を生成して、チップの識別表示を偽造することはできない。チップの識別表示は、攻撃者がチップを所有した場合のみ入手することができる。チップの認証のための1つ又は複数の秘密鍵をチップ自身から取り出すことはできない。ある態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから第1のデバイスを提供することを含む方法を特徴とする。この場合、各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有し、また各デバイスは、測定可能な特性を測定するための測定モジュールを有する。上記方法は、更に、デバイスの複数の測定可能な特性のうちの1つ以上を選択的に測定することにより第1のデバイスの認証を可能にすることを含む。本発明の実施形態は、下記の機能のうちの1つ以上を含むことができる。第1のデバイスの認証を可能にすることは、第1のデバイスに選択情報を送信すること、第1のデバイスから、選択情報に基づいて複数の特性のうちの1つを選択的に測定することにより生成されたレスポンス情報を受信すること、第1のデバイスに関連する受信したレスポンス情報及び選択情報を記憶することにより第1のデバイスを登録することを含む。第1のデバイスの認証を可能にすることは、更に、第1のデバイスに選択情報を送信するステップと、特性のうちの1つを選択的に測定することにより生成されたレスポンス情報を受信するステップと、受信したレスポンス情報を記憶されたレスポンス情報と比較するステップとを反復することにより第1のデバイスを認証することを含む。第1のデバイスの登録及び第1のデバイスの認証の各々は、選択情報に基づいて複数の特性のうちの1つを選択的に測定することと、測定情報を生成することを含む。この方法は、更に、デバイスのグループの各デバイスを登録することを含み、各デバイスを登録することは、各デバイスに対して、測定可能な特性の一部を識別する選択情報をデバイスに送信すること、選択情報で識別された測定可能な特性の一部の各々を選択的に測定することにより生成されたレスポンス情報をデバイスから受信すること、第1のデバイスに関連する受信したレスポンス情報及び選択情報を記憶することを含む。この方法は、更に、各デバイスに対する測定可能な特性の異なる一部を決定することを含む。各デバイスに対する異なる一部を決定することは、一部の各々の構成をランダムに選択することを含む。この方法は、更に、第1のデバイスを認証することを含み、第1のデバイスを認証することは、第1のデバイスに、第1のデバイスに対する測定可能な特性の一部のうちの1つを識別する選択情報を送信すること、第1のデバイスから測定可能な特性の一部のうちの識別された1つを選択的に測定することにより生成されたレスポンス情報を受信すること、受信したレスポンス情報を第1のデバイスの登録中に受信した記憶されたレスポンス情報と比較することを含む。この方法は、更に、共通の設計によるデバイスのグループ内でデバイスを製造することを含む。デバイスを製造することは、リソグラフィマスクの共通のセットによりデバイスのグループを製造することを含む。デバイスの対応する複数の測定可能な特性は、デバイスの製造中に決定された特性を含む。デバイスの製造中に決定された特性は、製造プロセスの非制御特性を含む。デバイスのグループから第1のデバイスを提供することは、第1の集積回路を提供することを含む。対応する複数の測定可能な特性は、集積回路内の複数の信号経路の遅延特性を含む。複数の信号経路は、回路構成要素の各組を通る複数の経路を含む。回路構成要素は、受動送信ラインを含む。回路構成要素は、能動半導体素子を含む。能動半導体素子は、論理ゲートを含む。対応する複数の測定可能な特性は、光学的特性を含む。光学的特性は反射特性を含む。反射特性はスペックルパターンを含む。各デバイスの測定可能な特性の数は、2、4、16、256、216、232、264又は2128より大きくてもよい。各デバイスは、複数の測定可能な特性を有する機能構成要素及び測定可能な構成要素を含む。この方法は、更に、パッケージ内にデバイスをパッケージすることを含む。機能構成要素及び測定可能な構成要素は、複数の測定可能な特性を変化することなしに、機能的構成要素に物理的にアクセスできないようにパッケージ内に配置される。この方法は、更に、識別子を含む選択情報をコード化する第1のデバイスにおいて選択信号を受信すること、識別子により複数の測定可能な特性のうちの1つを選択することを含む。測定可能な特性のうちの1つを選択することは、識別子を引数として使用する一方向関数を適用することを含む。一方向関数の適用では、更に、引数として第2の識別子が使用される。第2の識別子はデバイスの識別表示を含む。デバイスの識別表示は、デバイス内に記憶されたシリアル番号を含む。第2の識別子は個人特性の識別表示を含む。この方法は、更に、選択された特性を測定することを含む。選択された特性は選択された信号経路の遅延特性を含む。遅延特性を測定することは、選択された遅延経路により発振信号を生成することを含む。遅延特性を測定することは、更に、発振信号の発振周波数に関連する数量を決定することを含む。発振周波数に関連する数量を決定することは、タイミング間隔中に発振回数をカウントすることを含む。発振周波数に関連する数量を決定することは、発振信号に位相ロックループを適用することを含む。選択された特性を測定することは、デバイスの環境の変化による選択された特性の測定値の変動を補償することを含む。この方法は、更に、基準特性を測定すること、基準特性の測定値に対する選択された特性の測定値の比率を計算することを含む。この方法は、更に、選択された特性の測定値の誤差を修正することを含む。この方法は、更に、測定された特性によりレスポンス情報を決定すること、レスポンス情報をコード化する第1のデバイスからレスポンス信号を送信することを含む。レスポンス情報を決定することは、測定された特性を引数として使用する一方向関数を適用することを含む。この方法は、更に、デバイスが生成した結果をコード化する結果信号を供給することを含む。一方向関数の適用では、更に、結果から決定された引数が使用される。この方法は、更に、デバイス内のプロセッサ上で動作を実行するためのコードを受け入れることを含む。一方向関数の適用では、更に、コードから決定された引数が使用される。この方法は、更に、デバイス内での実行のためのコマンドを受け入れることを含む。一方向関数の適用では、更に、コマンドから決定された引数が使用される。レスポンス信号を供給することは、デバイス内でコマンドが実行されたという肯定応答を供給することを含む。この方法は、更に、第2の識別子をコード化する第1のデバイスにおいて第2の選択信号を受け入れること、第2の識別子により選択された特性のうちの第2の特性を測定すること、特性のうちの第2の特性の測定値をコード化する結果信号を供給することを含む。一方向関数の適用では、更に、特性のうちの第2の特性の測定値から決定された引数が使用される。この方法は、更に、識別子を含む選択情報をコード化する第1のデバイスにおいて選択信号を受信すること、識別子により複数の測定可能な特性のうちの第1の特性を選択すること、同様に、識別子により複数の測定可能な特性の中から第2の特性を選択することを含む。この方法は、更に、第1の選択された特性を測定して第1の測定値を生成すること、第2の選択された特性を測定して第2の測定値を生成すること、第1の測定値を第2の測定値と比較することを含む。この方法は、更に、第1の測定値と第2の測定値の比較により1ビットレスポンスを生成することを含む。この方法は、更に、識別子を含む選択情報をコード化する選択信号を受信するステップと、識別子により複数の測定可能な特性のうちの第1の特性及び第2の特性を選択するステップと、測定可能な特性のうちの第1の特性及び第2の特性を測定して第1の測定値及び第2の測定値を生成するステップと、n第1及び第2の測定値を比較してビットレスポンスのうちの1つのビットを生成するステップとをn-1回反復することにより、nビットレスポンスを生成することを含む。この方法は、更に、第1の動作モードにおいて、第1の識別子をコード化する第1のデバイスにおいて第1の選択信号を受け入れること、第1の識別子を引数として使用する第1の一方向関数を適用すること、第1の一方向関数の結果により複数の特性のうちの1つを選択すること、選択された特性を測定すること、選択された特性及び測定された特性の識別子をコード化する第1のレスポンス信号を供給することを含む。第2の動作モードにおいて、第2の識別子をコード化する第1のデバイスにおいて第2の選択信号を受け入れること、第2の識別子により複数の特性のうちの1つを選択すること、選択された特性を測定すること、測定された特性を引数として使用する第2の一方向関数を適用すること、第2の一方向関数の適用の結果をコード化する第2のレスポンス信号を供給することを含む。第2の識別子は、第1の識別子を引数として使用する第1の一方向関数の適用結果と同じものである。他の態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから第1のデバイスを提供することを含む方法を特徴とする。各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有し、測定可能な特性は、離散的値を有する。この方法は、更に、デバイスの複数の測定可能な特性のうちの1つ以上を選択的に測定することにより、第1のデバイスが認証を可能にすることを含む。対応する複数の測定可能な特性は、第1のデバイス内の複数の信号経路の遅延特性を含む。対応する複数の測定可能な特性は光学的特性を含む。他の態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから第1のデバイスを提供することを含む方法を特徴とする。各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有する。各デバイスはプロセッサを有する。この方法は、更に、第1のデバイスの複数の測定可能な特性のうちの1つ以上を選択的に測定すること、第1のデバイスのプロセッサ上で動作を実行するためのコードを受け入れること、コードから決定された第1の引数を使用する一方向関数を適用することを含む。本発明の実施形態は、下記の機能のうちの1つ以上を含むことができる。一方向関数の適用では、更に、測定された特性から決定された第2の引数が使用される。コードは、公開暗号鍵を含む。この方法は、更に、測定された特性からの値を暗号化するための公開暗号鍵を使用することにより、第2の引数を決定することを含む。コードは、測定可能な特性の一部を識別する選択情報を含む。複数の測定可能な特性のうちの1つ以上を選択的に測定することは、選択情報により識別された測定可能な特性の各一部を選択的に測定することを含む。一方向関数の適用では、更に、選択情報から決定された第2の引数が使用される。対応する複数の測定可能な特性は、第1のデバイス内の複数の信号経路の遅延特性を含む。他の態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから第1のデバイスを提供することを含む方法を特徴とする。各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の電気的に測定可能な特性を有する。この方法は、更に、デバイスの複数の測定可能な特性のうちの1つ以上を選択的に測定することにより第1のデバイスが認証を可能にすることを含む。本発明の実施形態は、下記の機能のうちの1つ以上を含むことができる。対応する複数の測定可能な特性は、第1のデバイス内の複数の信号経路の遅延特性を含む。他の態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから選択されたデバイスを含む装置を特徴とする。各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有する。デバイスは、選択された特性を測定する測定構成要素を含む。本発明の実施形態は、下記の機能のうちの1つ以上を含むことができる。デバイスは集積回路を含む。集積回路は信号経路を含み、複数の測定可能な特性は信号経路の遅延特性を含む。集積回路は、一組の回路構成要素を備え、信号経路は回路構成要素の各組を通る経路を含む。デバイスは、更に、プロセッサを含む。プロセッサは一方向関数を実行する。デバイスは、発光構成要素のアレイ、光検出構成要素のアレイ、及び1つ以上の発光構成要素が発光した場合、光検出構成要素のアレイにより検出することができるスペックルパターンを形成する光透過媒体を含む。この装置は、更に、識別子及びデバイスに関連するレスポンスを記憶するための記憶デバイスを含む。各識別子は1つ以上の測定可能な特性を識別し、各レスポンスは、1つ以上の識別子に対応し、かつ、1つ以上の識別子により識別された測定可能な特性の1つ以上の測定値から得られる。本発明の説明、図面及び特許請求の範囲から、本発明の他の特徴及び利点を理解することができるだろう。複数の図面の同一の参照番号は同一の構成を示す。[IC化PUF]図1を参照すると、半導体集積回路以下IC又はチップと呼ぶ50は、機能モジュール52と、物理的ランダム機能同様に、物理的に未知の機能又はPUFと呼ぶ回路100とを含む。チップ50は、例えば、チップ用の一組のリソグラフィマスクにより、チップ設計に従って製造した特定のチップの一例である。PUF回路100は、例えば、チップを製造するためのリソグラフィマスクに基づく、又はチップの非破壊物理的検査に基づくチップの設計に基づいて予測することが困難な方法で、入力を出力にマッピングする物理的ランダム機能PUFの一実施形態である。PUF回路による入力の出力へのマッピングは、必ずしも、PUF回路の出力がすべての可能な出力の範囲間で均一に分配されるような、真にランダムなものでなくてもよい。例えば、特定のPUF回路の製造により、PUF回路により生成された出力を、特定の値を中心にして、より集中させることができる。機能モジュール52は、例えば、入力ライン107上のデータを受信し、そのデータを処理し、そのデータの処理に基づいてメッセージライン109上にメッセージを生成することにより、チップの所望の動作を実行する。PUF回路100は、信号ライン106上の入力を受信し、ライン108上に出力を生成する。各入力、出力ペアは、チップ50に対して特定のものであり、チップ50に関連する物理構造の一部の特性に依存する。同じリソグラフィマスクにより製造した異なるチップは、一般的に、例えば、製造プロセス中の僅かな変動により若干異なる物理構造を有する。それ故、このような異なるチップは、一般的に、同じPUF入力を異なる出力にマッピングする。以下に更に詳細に説明するように、入力、出力ペアは、チップ50を認証し識別するために、あるいは、メッセージが特定のチップ、すなわちチップ50により生成されたものであり、偽のチップにより生成されたものでなことを証明するために、使用することができる。以下の説明においては、PUFという用語は、入力を出力にマッピングする物理的ランダム機能を意味し、PUF回路という用語はこの機能を実行する回路を意味する。PUFf回路という用語は、特定の物理的ランダム関数fを実行する回路を意味する。PUFチップという用語は、PUF回路を含むチップを意味する。チップ50は、チップ50の回路パターンを形成する一つのリソグラフィマスクのセットにより製造される。同じリソグラフィマスクを使用して一組のチップを製造すると、製造プロセス中の僅かな変動のために、一般的に、2つのチップは全く同じものにはならない。各チップ内及び異なるチップ間では、種々のパラメータ例えば、導線の長さ及び幅、ドーピング領域の濃度、誘電体層の厚さで若干の変動が起こる。機能モジュール52は、非常に頑強に設計されるので、パラメータの変動があっても、同じ組のリソグラフィマスクにより作成した全てのチップの機能モジュール52が行う機能は同じである。一方、PUF回路100は、異なるチップ間の種々のパラメータ内の変動を利用するように設計される。PUF回路100の機能は、一般的に、同じ組のリソグラフィマスクで製造したチップ毎に異なる。同じ組のリソグラフィマスクにより製造した異なるPUF回路100は、一般的に、同じ入力を異なる出力にマッピングする。PUF回路100は、測定可能な構成要素102及び測定回路104を含む。PUF回路100により実行される機能は、測定可能な構成要素102における多数の個々の物理特性により異なり、その物理特性は、PUFの出力を決定するPUFへの入力に従って組み合わされる。測定回路104は、物理特性の組合せを測定して出力を決定するように設計される。この出力は、実際の測定値を処理したものを表すことができ、その処理は、測定誤差及び環境条件の影響を低減又は修正するように、また実際の物理パラメータをマスクするように設計される。個々の物理特性を、デバイスの物理的検査により予測又は測定することは困難であり、既知の場合でも、チップ50の複製物に正確にコピーすることは、不可能ではないにしても困難である。[認証]チップ50のPUF回路100の1つの用途は、チップの識別表示を認証することである。この用途の場合、PUFに対する可能性のある入力、出力ペアのサブセットは、最初に、PUF回路100に信号ライン106上に異なる入力を供給し、信号ライン108上の対応する出力を記録することにより、決定される。入力は、PUF回路が個々の物理特性の種々の組合せを使用するように選択される。PUF回路の出力は、使用した入力のセットと同様に、秘密に保持される。チップ50の識別情報の認証が行われるのと同時に、対応する出力が記録され、秘密に保持されている入力のうちの1つが、PUF回路100に信号ライン106上の入力として供給される。PUF回路100の出力ライン108上の出力が、記憶された対応する出力と比較される。一致した場合には、チップは認証される。このような入力はチャレンジと呼ばれ、出力はチャレンジへのレスポンスと呼ばれる。通常、チャレンジ及びレスポンスは、2進数として表される離散的値である。任意のチップの認証に成功する度に、一組のチャレンジ-レスポンスペアが、攻撃者に潜在的に解明される。同じチャレンジ-レスポンスペアは、好適には再使用されない。チャレンジ-レスポンスペアのデータベースは、チップの識別を所望する人により維持される。このデータベースは、すべての可能性のあるチャレンジ-レスポンスペアの小さなサブセットをカバーするためのみに必要なものである。データベース内のチャレンジ-レスポンスペアを使い果たした場合には、以下に説明する方法によりチップから新規のチャレンジ-レスポンスペアを生成することができる。図2は、PUF回路を使用してチップの認証を行うための一般的な方法を示すプロセス268である。プロセス268は、下記のステップを含む。ステップ270:製造業者は、PUF回路100を含むチップ50を設計する。チップを製造するためのパターンを含むリソグラフィマスクのセットがチップ設計に基づいて生成される。ステップ271:製造業者は、n個のチップを製造するために、上記リソグラフィマスクのセットを使用する。各チップは、リソグラフィマスク上の同じパターンから製造するPUF回路を含むが、製造プロセス中のランダムな変動により、異なる測定可能な物理特性を有する。ステップ272:各チップに対して一組のチャレンジ-レスポンスペアが生成される。ステップ273:チャレンジ-レスポンスペアが機密保護記憶箇所に記憶される。ステップ274:チップがチップ所有者に配布される。ステップ275:チップX製造したn個のうちの1つの認証を行う必要がある場合には、チップXに関連するチャレンジ-レスポンスペアが機密保護記憶箇所から検索される。チャレンジはチップに送られる。ステップ276:チップからのレスポンスを受信する。ステップ277:チップから受信したレスポンスが、機密保護記憶箇所から検索したレスポンスと比較される。レスポンスが一致した場合には、チップが認証される。一例として、ステップ270及び271は、チップの製造業者により実行され、ステップ272から277は、チップを顧客に配布することを所望するエンティティ例えば、銀行により実行され、その後、チップの認証が行われ、サービスへのアクセスを許可するかしないかを決定する。別の例の場合には、チップを製造した後で、チップがチップ所有者に配布される。チップ所有者は、一組のチャレンジ-レスポンスペアを生成することができ、この一組のチャレンジ-レスポンスペアをエンドユーザに配布する。エンドユーザは、チップ所有者から受信したチャレンジ-レスポンスペアを使用して、エンドユーザのみが知っている新規のチャレンジ-レスポンスペアを生成することができる。チップ50はスマートカード内に埋め込まれて、スマートカードの識別情報を認証することができ、カード所有者は、スマートカード会社が提供するサービスにアクセスすることができる。各スマートカードは、シリアル番号を有し、スマートカード会社は、各シリアル番号に関連する一組のチャレンジ-レスポンスペアを有する。スマートカードがカードリーダに提示されると、カードリーダはスマートカードのシリアル番号に基づいて1つ以上のチャレンジを選択する。チャレンジはチップ50に送られ、チップ50は、1つ以上のレスポンスを生成し、それらをカードリーダに返送する。カードリーダは受信レスポンスを記憶レスポンスと比較する。レスポンスが一致した場合には、スマートカードが認証される。このことは、スマートカードが、チャレンジ-レスポンスペアを生成するために最初に使用されたチップと同じチップを含むことを意味する。また、チップ50は、認可された実行で使用することができる。チップ50の所有者は、エンドユーザがデータを処理するために、また計算結果を生成するためにチップにアクセス可能にする。所有者は、エンドユーザに一組のチャレンジ-レスポンスペアCRPを配布して、エンドユーザがチップの処理用電力にアクセス可能にする。エンドユーザは、計算結果が実際に他の偽のチップによってではなく、そのチップにより生成されたことを確認するために、チップにチャレンジを送り、チップからレスポンスを受信する。上記スマートカード及び認可された実行の用途の場合には、攻撃者は、チップ50へ送信しチップ50から受信したチャレンジ及びレスポンスを傍受し、種々のタイプの攻撃をスタートすることができる。これは以下に更に詳細に説明する制御アルゴリズムにより防止することができる。PUF回路100の出力は、入力により選択される物理特性の組合せに基づく。PUF回路100は、組合せの数又は可能な入力の数が、チップ50を有している攻撃者が、すべての入力、出力ペアを1つ残らず測定し、記憶することができないほど非常に多くなるように設計される。それ故、攻撃者が、例えば、コピー内のすべての可能性のある入力、出力ペアを記憶することにより、PUF回路100の機能を含むチップ50の機能をコピーすることは事実上できない。有効な入力、出力ペアを記録するために最初に使用された可能性のある入力の一部を、攻撃者に秘密にしている限りは、また、その一部を攻撃者が予測できない限りは、攻撃者は、チップ50の動作を後でコピーするために必要なすべての入力、出力ペアを測定することは事実上不可能である。物理特性の組合せの各々は、チップのIDを認証するために使用することができるチップの多数の署名のうちの1つであると見なすことができる。製造プロセスの変動によるチップ内の変動を使用することにより、レジスタ又はメモリセルのような記憶素子内にすべての署名情報を記憶しなくても、チップ上の多数の署名を記憶することができる。署名は、PUFチップの配線及び構成要素に関連し、正確にコピーし、かつ、攻撃者が読み出せるように正確に記憶することができないものである。PUF回路100は、攻撃者が、チップ50の物理的検査又は測定によりPUF回路のモデルを生成し、その後、このようなモデルに基づいてチップ50の動作を模倣することが困難となるように設計される。物理特性の組合せの測定値は、通常、チップ内のワイヤ及びデバイス間の相互作用により、個々の物理特性の測定値の非線形及び非単調関数である。攻撃者がチップの完全なマスク情報を入手し、チップに自由に物理的にアクセスできたとしても、攻撃者が、PUF回路100により実行される関数を反転し、モデルのパラメータを入手することは困難である。チップ50は、攻撃者が、ある時間デバイスを得たとしても、この意味で機密保護されているので、攻撃者が、正当な所有者のチャレンジへのレスポンスを生成することができる確率は低い。チップが正当な所有者に戻ると、所有者のみが、機密保護記憶箇所に記憶された選択されたチャレンジの一部への正しいレスポンスを有していることが分かる。他の人が正しいレスポンスを生成して、デバイスの識別情報を偽造することができる確率は非常に低い。攻撃者が、同じリソグラフィマスクを使用して偽のチップを製造する場合、製造プロセスに固有の統計的変動により、偽のチップが元のチップとして正当な所有者のチャレンジに対する同じレスポンスを正確に生成する確率は非常に低い。理論的には、攻撃者も、膨大な数のチップを製造し、各チップに対して広範な測定を行って、元のチップと一致するチャレンジ-レスポンスペアを含む偽物を生成し、発見することができるが、このようなアプローチは事実上不可能である。チップ50を認証するために、どの入力を使用するのかを予測することは困難である上に、攻撃者が、物理特性のどの組合せが必要な出力を決定するのかを予測することも困難である。また、PUF回路100は、個々の特性を知っていても、その個々の特性を組合せのモデルを形成するために使用することができないような方法で、個々の物理特性の組合せを好適には形成する。攻撃者がチップを所有している間に、多数の出力を入手するために、その人がチップ50を厳密にチェックしたとしても、これらの出力からPUF回路100の物理特性を入手することは困難である。攻撃者の手からチップが離れると、攻撃者が以前に得た出力から追加の出力を生成することは困難である。PUF回路100は、また、PUF関数を決定する物理特性を測定しようとしても、PUF回路自身の機能を破壊しない限り、すなわち測定する特性を破壊しない限り、そのような測定を容易に行うことができないように好適には設計される。[遅延ベースのPUF]PUF回路100の一例では、測定可能な構成要素102の物理特性は、導電ワイヤ又はトレース及びPUF回路100の回路の少なくとも一部を形成している半導体構成要素の経路に沿った経路遅延を含む。チップが同じ組のリソグラフィマスクにより製造された場合には、例えば、製造ステップ中の処理温度及び圧力の変動により製造中にランダムな変動が起こる。製造中にランダムな変動が起こると、PUF回路100がランダムに変動することになる。このランダムな変動の1つの側面は、異なるチップ間の対応するワイヤ及びデバイスの経路遅延が異なることである。実験により、遅延の変動は5又はそれ以上になる場合があることが分かっている。更に、同じ動作条件の場合、これらの遅延変動は、特定のチップの場合、比較的一定で変化しない。動作温度又は供給電圧のようなチップの動作条件に関連する他の要因も、また、経路遅延を変動させる場合がある。このような変動は、以下に更に詳細に説明するように、PUF回路100で補償技術を実施することにより解決される。経路遅延の測定中に、変動又は誤差が発生する場合がある。測定回路は、十分高い精度で経路遅延を測定することができるように設計される。そのため、経路遅延値の変動は、主として製造プロセス中の変動によるもので、測定値の変動よる影響は遥かに低い。そのため、測定誤差及び変動は、個々のチップの識別及び認証機能に決して影響を与えない。図3を参照すると、遅延回路111を使用するPUF回路101は、PUF回路100の一例である。遅延回路111への入力は、全遅延経路として認識される。この全遅延経路は、チェーン状に共に結合している多数の分離遅延経路からなり、個々の遅延経路は、導電ワイヤ又はトレース及び半導体構成要素からなる。チェーン内の素子間の相互作用により、全体の遅延は、必ずしも遅延の単なる合計のように、素子の個々の遅延の簡単な関数とはならない。遅延回路111の経路遅延は、遅延回路111を使用してオシレータブロック122を形成し、カウンタブロック123を使用してオシレータブロックの発振周波数を測定することにより測定される。オシレータブロック122は、信号ライン106上で入力信号により選択された信号経路に応じた周波数で自励発振し、カウンタブロック123は、所定の時間内の発振の回数をカウントする。オシレータブロック122は、遅延回路111の一方の端部126において信号を反転するインバータ124を含む。インバータ124の出力は、ANDゲート130の入力128に接続されている。ANDゲート130の別の入力132は、COUNT信号を受信すべく接続されている。COUNT信号がハイである場合には、遅延回路111内のインバータ124、ANDゲート130及び選択された信号経路は、負のフィードバックループを形成し、自励発振して、信号ライン134上で発振信号を生成する。発振周波数は、選択された信号経路の経路遅延により変化する。カウンタブロック123は、信号ライン134に接続され、かつ発振信号をクロック信号と同期させるために使用されるバッファ回路138を含む。バッファ回路138の出力140は、ANDゲート142の入力に接続されている。ANDゲート142の別の入力は、COUNT信号を受信すべく接続されている。COUNT信号がハイである場合には、ライン134上の発振信号は、バッファ回路138及びANDゲート142を通ってANDゲートの出力144から出力される。発振信号の立上りエッジは、COUNT信号がハイの間、カウンタ136によりカウントされる。出力146のカウント値は、遅延回路111内の選択され信号経路の経路遅延の測定値を表す。高カウント値は、短い遅延を表し、低カウント値は、長い遅延を表す。入力信号がチャレンジを表す場合には、カウント値又はカウント値を処理したものは、チャレンジへのPUF回路101のレスポンスを表す。図4を参照すると、遅延回路111は、128個のスイッチ112を含む。遅延回路111は、128ビットb1~b128を含む入力信号を受信する。各入力ビットは、スイッチ112のうちの1つを制御する。bi=1である場合には、スイッチは交差している図5参照。bi=0の場合には、スイッチは交差していない図6参照。最初に、信号ライン114上の点xにおける立上りエッジは、信号ライン116及び118に転送される。立上りエッジは、入力信号に依存する相補経路の後に位置するスイッチ112を通過し、ANDゲート120の入力に接続されている点y及びzに到着する。点xにおける立上り遷移と点y又はzにおける立上り遷移との間には特徴的遅延が存在し、通常、入力xにおける立下り遷移と点y又はzにおける立下り遷移との間に別の特徴的遅延が存在する。図7は、遅延回路111の遅延特性を示すタイミング図である。遅延Δ1は、点xにおける立上り遷移と点y又はzにおける立上り遷移との間の特徴的遅延が長い例を示すこの場合、点zにおける立上り遷移は後で発生する。遅延Δ2は、点xにおける立下り遷移と点y又はzにおける立下り遷移との間の特徴的遅延が短い例を示すこの場合、点yにおける立下り遷移は早く発生する。インバータ124とANDゲート130の遅延の合計がΔ3である場合には、発振ブロック122の周期TはΔ1Δ22Δ3である。一例として、インバータ124及びANDゲート130の遅延は、立上りエッジと立下りエッジの場合で異なることがある。遅延回路111においては、測定可能な特性は、信号経路の経路遅延である。異なる入力信号は、遅延回路111内で異なる信号経路を選択し、異なる経路遅延が測定回路104により測定される。同じ組のリソグラフィマスクにより製造された異なる遅延回路111は、同じ入力信号が入力された場合、若干異なる経路遅延を示す。異なる遅延回路111は、同じチャレンジに対して異なるレスポンスを出力する。一意に識別することができる異なる遅延回路111の数は、スイッチ112の数が増大するにつれて、指数的に増大する。図8Aを参照すると、遅延回路160は、遅延回路111図3とは異なる設計である。遅延回路111の場合のように、遅延回路160は、n-1個のステージ162を含み、その後にはマルチプレクサ184が位置する。ここで、nはチャレンジのビット数である。各ステージ162は、スイッチブロック164及び可変遅延バッファ166を含む。スイッチブロック164は、2つのマルチプレクサ166及び168、及び4つのバッファ170、172、174及び176を含む。各ステージ162は、上部経路178及び下部経路180を有する。遅延回路160の入力182において、立上り又は立下りエッジが、上部経路178及び下部経路180の両方に送られる。各ステージ162において、そのステージに対するチャレンジビットの値により、立上り又は立下りエッジの経路が交差する場合、あるいは交差しない場合がある。すなわち、下部経路からのエッジが上部経路に行く場合、あるいは上部経路からのエッジが下部経路に行く場合がある。次に、2つのエッジのうちの一方が、出力マルチプレクサ184により選択され、入力182にループ経路で送り返され、自励発振が誘起される。2つの遅延回路が、特定のチャレンジに対して同じレスポンスを生成する可能性がある。PUF回路101を有するチップを識別しようとする度に、2つ以上のチャレンジが使用され、そのため、2つ以上の遅延回路がすべてのチャレンジに対して同じレスポンスを有する確率は、低下する。使用可能なチャレンジ-レスポンスペアの数は、遅延回路160内のステージ162の数を増大することにより、増大することができる。その理由は、測定できる遅延回路160内の信号経路の数が、ステージ162の数の指数であるからである。全信号経路の遅延は依存している。その理由は、信号経路間での共有が多いからである。可変遅延バッファ166を使用することにより、攻撃者がこのような依存性を利用することがますます困難になる。可変遅延バッファ166は、2つのペアのバッファを有する。第1のペアは、バッファ170及び172を含む。第2のペアはバッファ174及び176を含む。バッファの各ペアにおいては、一方のバッファは、常にオンされ、他方のバッファは、他のペアのバッファに接続されている経路がローになった時のみ作動する。経路間の依存性を利用することはより困難である。その理由は、バッファのペアは、回路を通過する2つのエッジ間に複雑で、かつ単調でない相互作用を追加するからである例えば、一方の回路素子の経路遅延が長くなった場合には、全経路遅延が短くなる可能性がある。これにより、攻撃者が、一次式を解いて、個々の遅延回路素子の遅延を入手することが防止される。図8Aの遅延回路160は、遅延経路の途中に仲裁装置arbiterを追加して、上部経路178又は下部経路180内の信号のうちのどちらが速いのかを判定し、この判定に基づいて遅延経路を更に遅延させるようにスイッチを設定することで、改良することができる。図8Bを参照すると、遅延回路1030は、128ビットチャレンジを受信する129個のステージ162を含む。各ステージは、スイッチブロック164及び可変遅延バッファ166を含む。上部経路178及び下部経路180は、ステージを貫通する。仲介装置1032は、例えば、100番目及び101番目のチャレンジビットを受信するステージ等の2つの連続するステージを接続する上下部経路に接続されている。仲介装置1032は、100番目のチャレンジビットを受信するステージの後の上部経路178及び下部経路180上の信号のうちのどちらが速いのかを判定し、下流の別のステージ例えば、127番目及び128番目のチャレンジビットを受信するステージ間のステージ1034に送信される出力を信号ライン1036上で生成する。ライン1036上の信号は、ステージ1034のスイッチブロック164が交差されるか、あるいは交差されないのかを判定する。これにより、攻撃者に未知の秘密のチャレンジビットが生成される。[補償PUF]測定可能な構成要素102の測定可能な特性遅延回路160の信号経路の経路遅延等は、周囲温度及び供給電力電圧の変動等の環境条件の変動により変化する場合がある。このような変化を補償するために、チップ50にオプションとしての回路を追加することができる。環境の変動を補償する回路を備えるPUF回路は、補償PUF回路と呼ばれる。図9を参照すると、チップ50は、PUF回路101の出力の比率を測定する補償PUF回路149、及び補償PUF回路149の出力を発生する基準回路148を含む。この例の場合には、基準回路148は、PUF回路101の発振周波数の変化に比例して、発振周波数を変化させる簡単な自励発振ループである。PUF回路101及び基準回路148の出力は、ディバイダ152に送信される。上記比率は、補償PUF回路149のレスポンスとなる。PUF回路101及び基準回路148は多少でも同じように環境条件の影響を受けるので、ディバイダ152により生成される比率が環境条件から受ける影響は少ない。動作中、チップ50内の回路の温度は、抵抗加熱により上昇する。補償PUF回路149は、動作中回路が均等に加熱されて、PUF回路101及び基準回路148の出力の比率が確実に安定するように、設計される。ほぼ同じ周波数で発振する2つの発振ループが存在する場合には、発振信号が相互に干渉して、そのため2つの信号が1つの発振周波数にロックすることがある。それ故、PUF回路101へのチャレンジは、PUF回路101及び基準回路148の発振周波数が発振信号の干渉を防止するのに十分なだけ異なるように、選択される。図10を参照すると、別例の補償PUF回路149は、同じ入力信号を受信する2個のPUF回路148及び150を含む。PUF回路148及び150の出力の比率を用いて、補償PUF回路149の出力が生成される。図11を参照すると、更に別例の補償PUF回路153は、PUF回路101、レジスタ156及びディバイダ152を含む。第1の入力値は、PUF回路101に送信され、レジスタ156内に記憶される第1の出力値が生成される。第2の入力値は、PUF回路101に送信され、第2の出力値が生成される。第1及び第2の出力値は、ディバイダ152に送信され、2つの出力値の比率が計算される。この比率は補償PUF回路153の出力となる。環境条件の変化が大きい場合例えば、周囲温度の30度を超える変動、出力の比率を使用しても、環境条件の変化の影響を抑制するのに十分でない場合がある。異なる温度範囲に対して複数の組のCRPが生成される。例えば、一組のCRPは、温度が20°C~50°Cの場合に使用され、別の一組のCRPは、温度が45°C~75°Cの場合に使用される等々。PUF回路は、そのうちの1つのみが温度に応じたものとして表されるような、2つ又は3つの異なるPUFの備えていると見なすことができる。回路の経年変化も遅延を変化させる場合があるが、その影響は温度による影響より小さい。電力供給の変化もPUF回路の出力に影響を与える場合がある。しかし、実験により、電力供給電圧が大幅に変化しない限り正確な数字は、使用する特定のPUF回路に依存する、異なる発振ループからの出力の比率を考慮すれば、電力供給の変動の影響を十分補償することができることが分かっている。[誤差の修正]物理的現象の測定値はエラーを含んでいる場合がある。PUF回路101図3においては、自励発振ループは、遅延回路111の経路遅延を測定するために使用される。経路遅延は、一定の時間内の整数回の発振を測定することにより量子化される。このような量子化は、測定誤差を処理する1つの方法である。すなわち、測定値に僅かな変動誤差があっても、量子化量は同じになる。しかし、測定される数量が2つの量子化レベルの間にあると、測定値の僅かな変動が、異なる量子化の値になる場合がある。図12を参照すると、改良形PUF回路264は、誤差チェック及び修正ECCモジュール190を含み、ECCモジュール190は量子化のより精巧なバージョンであり、カウンタブロック123が発生する発振カウント数を処理して、PUF100が同じチャレンジを受信した場合には、必ず同じレスポンスを発生させる。ECCモジュール190は、自立型回路としても実施するか、又はECCアルゴリズムを実行するマイクロプロセッサによっても実施可能である。多数のチャレンジc1,c2,...,cnは、PUF回路149又は152のような補償PUF回路を通過して、多数のレスポンスr1,r2,...,rnが得られる。レスポンスr1~rnは、ECCモジュール190に送信され、物理特性の測定値の僅かな変動が修正される。ECCモジュール190は、データバス266上にn個の修正済みのレスポンスr1’,r2’,...,rn’を生成する。一組のチャレンジ-レスポンスペアが生成された場合、ECCモジュール190が測定値の僅かな変動を修正できるように、冗長情報が生成される。このような変動は、例えば、量子化誤差及び測定ノイズの結果である場合がある。チャレンジ-レスポンスペアを以降に使用する場合には、冗長情報は、チャレンジと共に改良形PUF回路264に供給される。冗長情報がレスポンスのすべてのビットを喪失しないようにすることが重要である。量子化レベルの境界を調整して、測定すべき数量が量子化レベルの中央値に近くなるように誤差修正を行う方法について以下に説明する。この方法は、測定値の僅かな変動により異なる量子化値が発生することを防止する。ECCモジュール190の一実施形態の場合には、1つ以上の補償した測定値について誤差チェック及び修正が実行され、情報の1つのビットbが補償した各測定値から抽出される。この抽出は、測定値をδのステップサイズで量子化し、量子化した値のモジュロ2を計算することにより実行される。dが、冗長情報が生成された場合に例えば、新規のチャレンジ-レスポンスペアが生成された場合に計算される補償測定値であり、mが、冗長情報を使用する場合に例えば、チャレンジ-レスポンスペアを使用する場合に計算される補償測定値であるとする。bをと定義する。ここで、である場合には、dは、量子化間隔の中央にあり、dと同じ方法で量子化されるmの尤度は増大する。パラメータεは、冗長情報の一部としてPUFチップの外部に送られ、攻撃者はdの低位ビットを知り得る。δが共通の設計に基づいて製造された異なるチップ間のdの標準偏差より小さい場合、εのビットは、dから抽出されるビットbについての情報を攻撃者に漏洩しないと仮定することができる。δを選択するために考慮する必要がある要因については以下に説明する。補償測定値の誤差は、変形ハミングコードとパリティチェックとの積により修正することができる。位数2の有限体上の列ベクトルにより表される2k-1ビットメッセージの変形ハミングコードを計算するために、メッセージに、そのi番目の列がiの2進表示であるk行マトリックスが乗算される。例えば、1011001の冗長情報は以下のように計算される。それ故、1011001の冗長情報は001である。変形ハミングコードは、非冗長ビットについての1つの誤差を修正することができる。エラーを修正するために、誤メッセージの冗長情報を計算し、それを正しいメッセージの冗長情報を用いて排他的論理和演算する。結果は、ゼロでない限りは、誤りは存在しないが、メッセージの誤りビットのオフセットの2進コード化したものである。例えば、下記のようになり、及びになり、この場合、3番目のビットが変更されたことを表す。変形ハミングコードは、メッセージ内の1つのエラーを検出可能である。パリティビットを追加することにより第2のエラーを検出することはできるが、修正することはできない。第2のエラーが検出できる理由は、2つのビットが誤っている場合、パリティビットが修正されるが、変形ハミングコードが1つのエラーしか表示しないからである。変形ハミングコードは、メッセージに0を付加することにより、その長さを2k-1で表ことができないメッセージに適用することができる。変形ハミングコードは、最初に、w列×h行のアレイにwhビットを配列することにより生成される積コードを作成することにより改良することができる。積コードは、各行にパリティビットを追加し、各列にパリティビットを追加した変形ハミングコードに基づいている。各行に1つのエラーが存在する場合には、変形ハミングコードはすべてのエラーを修正することができる。1つの行が2つのエラーを含んでいる場合には、ハミングコードはエラーを修正することはできないが、その行のパリティビットは、その行が2つのエラーを含んでいることを示す。1つの行のみが2つのエラーを含んでいる場合には、列上のパリティビットを、誤っている行のどのビットが間違っているのかを決定するために使用することができる。1つの行が2つのエラーを含んでおり、どの行も3つ以上のエラーを含んでいない場合には、積コードはエラーを修正することができる。積コードは下記のように改善することができる。行パリティビットは、ほとんどの場合、冗長である。その理由は、修正したビットの行からそれらを直接計算できるからである。行パリティビット全体は計算できないが、エラーを修正することができる唯一のケースは、1つの行が2つのエラーを含んでおり、他の行が最高1つのエラーを含んでいる場合である。この場合、その行のパリティを行データから計算した場合には、パリティのうちの1つのみが誤っている。このことは、パリティを記憶する代わりに、行パリティ上の変形ハミングコードを使用することができ、行パリティがどうあるべきかに関する冗長情報を記憶するのみであることを意味する。これにより、数個の余分なビットをセーブすることができる。パラメータw及びhを選択して積コードを生成するための方法について以下に説明する。一例として、出力ハッシュh2は、攻撃者が有していない少なくともB個の識別ビットで表示される。強引な攻撃を回避するBの可能性のある値は約80である。制御PUF回路以下に説明するにより使用されるプロトコルは、PUF回路がそのうちの1つに対する正しいレスポンスを供給するまで、多数の異なるチャレンジを試験するように適合される。緩慢に変化する環境パラメータによるエラーを避けるために、異なるチャレンジが試験される。パラメータw及びhは、PUF回路上で実行するための測定期待数であるBexpを低減するように選択される。識別ビットの数を計算するために、攻撃者が誤り率pを有するものと仮定すると、攻撃者の最大チャネル容量は下式により表される。攻撃者は、情報のBa=CwhRビットを有する。ここで、Rは下式で表される。Rは冗長ビットの数である。PUF回路から抽出される識別ビットの数は、そのブロック内のビットの数と攻撃者が有するビットwhBaの数の間の違いである。w×hビットの多くのブロックは、識別情報のB個のビットが使用できるようになる前に送信される。パラメータBtotは、B個の情報ビットを入手するために必要なビットの数を表すために使用される。ベルヌーイ分布は、PUF測定値の誤り率qを知っている場合に、B個の情報ビットを収集するために必要なすべてのビットを適切に修正する確率の計算において適用される。任意の行を修正する確率、及び任意の行内の2つのエラーを検出する確率が計算される。これらの確率を使用することにより、2つ以上の行内で2つのエラーを検出する確率、及び任意の行内で3つ以上のエラーを有する確率を計算することができる。これらの確率は、全ブロックを修正する確率の低い方の境界を示す。すべてのブロックを修正する確率Psuccは、読み出されるブロックの数から推定することができる。確率Psuccは、実行する物理測定の期待数を推定するために使用することができる。図37のデータは、p及びq、任意のδの値を発見するために使用することができる。δ/2の値は、グラフの垂直線に対応する。約60を超える値の場合には、p及びqは、グラフのそのラインから直接読み取ることができる。pの場合には、2つの異なるフィールドプログラマブルゲートアレイFPGAに対応するグラフの最高の値を採用する必要がある。qの場合には、それを認識可能となることを所望する環境条件で同じFPGAに対応するグラフの最も低い値を採用する必要がある。表1は、上記のエラー修正方法を使用するこれらパラメータに対する最適なエラー修正解決方法と共に、種々のパラメータの数々の例を示す。表1のケース1の場合には、pの値は近似値である。その理由は、この値は、グラフから直接読み取るにはあまりに小さいからである。3の場合には、測定値の下位ビットが抽出するビットについてそれが真であることを何も示していないので、pの値は推定するには高すぎる。優れたエラー修正解決方法は、w及びhの関数として、物理測定値の期待値を計算するCプログラムにより計算される。このプログラムは、w×hブロックの全数を使用するものとみなす。表1は、数個の測定エラーが存在する場合には、良好な交換条件を発見することが容易であり、そのためδをそれに応じて選択すべきであることを示す。ケース2及び3の場合は、測定エラーが限定されている限りは、δの値の広い範囲に対して適当な解決方法を発見することができることを示す。δが非常に長い場合には、p及びqの両方は1に非常に接近し、エラー修正を行うのが困難となる。測定毎のクロックが100MHz、サイクルが2×10000であると仮定した場合、3CPUF程度で、毎秒評価を行うことができる。エラー修正を改善する1つの方法は、モジュロを4又は8に低減することにより、各補償測定値から2ビット又は3ビットを抽出する方法である。測定値からの各ビットは、δのそれ自身の値、及び、それ故、p及びqのそれ自身の値に対応する。従って、3つのレベルのビットを相互に別々に修正することが望ましい。ビットの各レベルは、w及びhに対するそれ自身の設定を有し、ブロックサイズのグローバルな最適化を実行し得る。このようにして、より多くの情報を抽出することにより、より少ない測定値を使用して、同じ量のエラー修正を行うことができる。測定毎に複数のビットを使用した場合には、複数のエラーを相互に関連づけることができる。より詳細に説明すると、高位のビットが誤っていることが分かった場合には、下位のビットはランダムなものであってもよい。それ故、それらのビットを消去したものと見なして、下位ビット上のより多くのエラーを修正するために、消去情報を考慮に入れることを試みることができる。[制御PUF]チップ50の別のバージョンの場合には、1つ以上の制御モジュールが、PUF回路例えば、100へのアクセスを制限するために追加される。PUF回路及び制御モジュールは、分離が困難な方法で物理的にリンクされ、PUF回路には、制御モジュールにより実行される制御アルゴリズムを介してのみアクセスすることができる。制御PUFCPUF回路という用語は、PUF回路及び1つ以上の制御モジュールの組合せを示すために使用される。CPUFチップは、制御アルゴリズムを実行する制御モジュールが、PUF回路をベースとする物理システムにより保護される。このアルゴリズムを回避しようと試みると、PUF回路を変更しなければならなくなる可能性が高い。1つのタイプの制御アルゴリズムを使用して、PUF回路に提示される入力又はチャレンジを制限し、制御PUF回路の外部に提供される出力又はレスポンスに関する情報を制限し、及び/又はPUFにより認証された機能を実行することができる。以下に説明するように、一例として、制御を使用することにより、攻撃に弱いPUF回路を、攻撃者が不正に使用することがより困難な強力なPUF回路に改善することができる。他の例の場合には、CPUFチップとCPUFチップの機能を使用しようとするユーザとの間で共有される秘密を確立するために制御を使用することができる。[改良形PUF]攻撃者は、多数の適合的に選択された入力のためのPUF回路の出力を測定することにより、PUF回路のモデルの形成を試みることができる。これらの入力は、入力-出力のペアを使用して、PUF回路のモデルを形成するパラメータを入手するために解くことが可能な一組の式を確立することができるように、選択される。次に、このモデルを使用して、PUF回路をシミュレートし、かつコピーすることができる。このことは、攻撃者が解くのが容易な式に導く恐れがある特定の入力を選択することが困難となるように、PUF回路の周囲に制御を追加することで防止することができる。図13Aを参照すると、改良形PUFg回路186の機能ブロック図は、PUFf回路188、ECCモジュール190、ランダムハッシュモジュール192及びランダムハッシュモジュール194を含む。モジュール190、192及び194は、自立型回路により、又はソフトウェアコードを実行するマイクロプロセッサにより実施可能である。改良形PUFg回路186のチャレンジは、信号ライン198を介してハッシュモデル192に送られる。同時に、冗長情報が、PUFf回路188の出力の僅かなエラーを修正するために、ECCモジュール190に送られる。ランダムハッシュモジュール192は、チャレンジが提供されたときに、一方向ランダムハッシュ関数h3を実行してハッシュ値を発生し、このハッシュ値は、信号ライン200を介してPUFf回路188に送られる入力となる。ハッシュ値は、ライン205を介してランダムハッシュモジュール194にも送られる。ランダムハッシュモジュール192及び194は、ハードウェア回路又はマイクロプロセッサ図示せず上で稼働するソフトウェアにより実施することができる。PUFf回路188は、PUFf回路188への入力に依存する発振周波数を有する1つ以上の自励発振ループ回路図3に示すようなを含む。PUFf回路188は、特定の入力が信号ライン198上で受信された場合に、信号ライン202上で特定のカウント値を出力する。カウント値は、ECCモジュール190を通過する。このECCモジュール190は、冗長情報を使用して、統計的な変動及び測定値の不正確性によるカウント値の小さな変動を除去する。ECCモジュール190は、出力を生成し、この出力はライン203を介してランダムハッシュモジュール194に送られる。ECCモジュール190の出力は、一方向ランダムハッシュ関数h4を実行するランダムハッシュモジュール194を通過する。ランダムハッシュモジュール194の出力は、信号ライン204上に形成され、かつ、CPUFg回路186のレスポンスを表す。ライン203上の信号に小さな差があると、ライン204上のランダムハッシュモジュール194の出力では大きな差になる。ランダムハッシュモジュール194を使用することにより、ライン204上のレスポンスから、PUF回路188の基本的物理特性に関する情報を入手することが困難となる。ECCモジュール190を使用することにより、ライン200上でPUFf回路188に特定の入力が送られると、ライン203上に同じ出力が形成される。これにより、PUF回路188の物理特性の測定値に小さな変動があっても、同じチャレンジがライン198上に供給された場合に、ライン204上に同じレスポンスを形成することができる。ECCモジュール190は、ハードウェア回路によっても、マイクロプロセッサ図示せず上で稼働するソフトウェアによっても実施することができる。改良形PUFg回路186においては、xがチャレンジを表す場合には、信号ライン202上のPUFf回路188の出力は、fh3xで表すことができる。h3xは、一方向ランダムハッシュ機能であるので、攻撃者がxから得られるh3xを決定することは困難である。それ故、攻撃者がPUFf回路188のモデルを確立するために使用することができるPUFf回路188に対する一組の入力を知ったとしても、改良形PUFg186は秘密を漏らさない。その理由は、攻撃者は、PUFf188にこれらの入力を提示することができないからである。すなわち、攻撃者は、必要な入力h3xを生成するために、適切なチャレンジxを提示する方法がないからである。物理的攻撃に耐性のあるCPUFg回路186の場合には、PUFf回路188へのアクセスを制御するモジュールは、回路188と相互に協力し、攻撃者が物理的調査により制御モジュールをバイパスすることを困難にする。特に、攻撃者は、出力ランダムハッシュモジュールh2194を通過する前に、PUFf回路188を直接読み出すこともできず、かつ、直接PUF回路にチャレンジを送って入力ランダムモジュールh1192をバイパスすることもできない。信号経路の経路遅延がPUFfモジュール188の測定可能な物理特性である場合には、信号経路を形成している金属配線及び素子を、ランダムハッシュモジュール192及び194の上又は周囲に設置することができ、信号ライン200及び202を集積回路内に設置することができる。そのため、攻撃者は、信号経路の経路遅延を変更し、それにより、関数fを変更しない限り、ランダムハッシュモジュール192及び194、又は信号ライン200及び202に物理的にアクセスすることはできない。図13Bは、基板1040、制御ロジック層1042、ロジック及び電力ワイヤ層1044、及び遅延ワイヤ層1046を含むチップ50の一例である。制御ロジック1042は、ランダムハッシュモジュール192及び194を含む。制御ロジックは、また、他の制御機能を提供するために使用されるマイクロプロセッサ例えば、図14の51を含み得る。ロジック及び電力ワイヤ層1044は、電力ワイヤ及び保護されるべき他のロジック回路を含む。遅延ワイヤ層1046は、PUFモジュールの信号経路を形成している金属配線及び素子を含む。信号ライン204上に生成された改良形PUFg回路186のレスポンスは、gx=h4ECCfh3x,h3xと表示することができる。ランダムハッシュモジュール194を使用することにより、PUFg回路186の出力は、よりランダム性を示す。PUFf回路188及びECCモジュール190により生成された類似の出力は、CPUFg回路186の出力となる非常に異なるハッシュ値にハッシュされる。これにより、攻撃者が類似のチャレンジに対するレスポンスを用いて1つのチャレンジに対するレスポンスを推定することが防止される。ランダムハッシュ関数h4によりPUFf回路188の出力を事後的に構成し、かつ、ライン205を介してモジュール194にモジュール192の出力を送ることで、出力ランダムハッシュ関数を介して出力を送る前に、十分な情報がPUF回路から抽出され、システムは、非物理的攻撃に対して確実な抵抗を有する。遅延回路の場合には、数百ビットの情報がシステムから抽出されるまで、多数の経路遅延が測定される。次に、測定値は、ランダムハッシュ関数h2を介して送られる。複数の経路遅延を測定する一実施形態の場合には、ランダムハッシュ機能h3は、非常に幅の広い出力すなわち、多数の出力ビットを供給するように選択することができる。この出力は多くの異なるチャレンジに分割され、分割されたチャレンジは1回でPUF回路188に送られる。これらのレスポンスは連結され、ECCモジュール190によりそのエラーが修正されて、1つのレスポンスとなり、ランダムハッシュ機能h4194に送られる。[複数の個人特性]あるユーザは、一意の識別子を有するチップを使用することを不快に感じる場合がある。その理由は、このようなユーザは自分が追跡される恐れがあると感じるからである。例えば、認可実行の場合、あるエンティティに計算機能を有することができるようにしたPUFチップの所有者は、同じチップが他のエンティティに計算機能を有していることを知りたがらない場合がある。プライバシーに関する心配を軽減するために、改良形PUFg回路186は、ライン197上で、回路の所有者が選択することができる個人番号を受信するように設計されている。チャレンジは、個人番号でハッシュされてハッシュ値が生成され、ハッシュ値は、改良形PUFg回路186の別の入力として使用される。このことは下式により表すことができる。Input=h3チャレンジ,個人特性異なる個人番号は、異なるチャレンジ-レスポンスペアの組に対応する。異なる個人番号を使用することにより、所有者は、多くの異なるPUF回路を効果的に所有する。認可実行の場合には、所有者は、改良形PUFg回路186が第1のアプリケーションに計算機能を提供している場合には、第1の個人番号を選択することができ、改良形PUFg回路186が第2のアプリケーションに計算機能を提供している場合には、第2の個人番号を選択することができる。第1及び第2のアプリケーションは、自己が同じ改良形PUFg回路186と相互作用していることを知らない。[一意のID]任意の2つのPUFが異なるものであることが確実となるように、実際のチャレンジを、PUF回路から独立し、かつ、チップに対して一意である一意の識別子と組合せて、別のPUFを通過するハッシュ値を生成することができる。改良形PUFg回路186の場合には、識別子モジュール196により識別子が生成され、その識別子は、一意の2進数を生成する配線回路であってもよい。使用される一意の識別子は、秘密にする必要はなく、例えば、チップのシリアル番号であってもよい。2つのシリアル番号には同じものはないので、2つのPUFに同じものはない。2つのCPUFが同じ基本的PUFfを共有している場合であっても、攻撃者がそれを知る方法はない。その理由は、攻撃者はPUFf回路188を直接チェックすることができないからである。[フィードバック]攻撃者に対してより複雑なものとするために、CPUFg回路186を複数回使用して、1つのレスポンスを生成するようにしてもよい。1回目の使用からの修正済みのレスポンスは、PUF回路にフィードバックすることができる。数回使用した後で、チャレンジ、個人特性、及び識別子モジュール196により生成され、かつランダムハッシュ関数を通過した識別子と共に、これら全ての出力が合成され、全体のレスポンスが生成され得る。[CPUFチップ]図14を参照すると、半導体チップ48は、CPUFチップの一実施形態である。チップ48は、PUF回路100及びマイクロプロセッサ51を含む。PUF回路100は、測定可能な構成要素102及び測定回路104を含む。マイクロプロセッサ51は、制御アルゴリズムを実行して、ある機密保護プロトコルに従うソフトウェアコードを使用した場合のみ、PUF回路100にアクセス可能にする。ソフトウェアコードは、マイクロプロセッサ51が機能モジュール52に計算を行わせて計算結果を生成させるコードを含むことができる。ソフトウェアコードは、マイクロプロセッサ51が制御モジュール54に計算結果又はPUF回路100の出力に対する追加制御例えば、ランダムハッシュ機能又は暗号化の適用を行わせるコードを含むことができる。機密保護プロトコルは、マイクロプロセッサ54が測定可能な構成要素102の物理特性と相互に関連することを要求し、この場合、マイクロプロセッサ54を不正に使用すると、PUF回路100の出力が変化するようにする。機密保護プロトコルは、ランダムハッシュ関数及び暗号化を使用して、ソフトウェアコード及び計算結果が、測定可能な構成要素102の物理特性の測定値と相互に関連するようにする必要がある。制御モジュール54及び機能モジュール52が実行する制御及び機能は、固定されておらず、マイクロプロセッサ51を稼働しているソフトウェアコードに依存する。制御アルゴリズムにより、攻撃者が、PUF回路100により生成された測定値を直接入手することが防止される。これにより、攻撃者が、PUF回路をシミュレートしてコピーするためにPUF回路100のモデルを確立することが困難となる。また、制御アルゴリズムにより、攻撃者が、マイクロプロセッサ51により生成された計算結果を直接入手することが防止される。これにより、計算結果が本物であることを確認することができる。更に、制御アルゴリズムにより、ユーザは非機密保護チャネルを介してPUF回路100に対して一意であり、かつ、ユーザにとって私的なチャレンジ-レスポンスペアを生成することができる。CPUFチップという用語は、制御を介して制御アルゴリズムを実行しているマイクロプロセッサを介して、又は専用制御回路を介してのみアクセスすることができるPUF回路を含むチップを参照するために使用される。CPUFデバイスという用語は、CPUFチップを含むデバイスを参照するために使用される。制御アルゴリズムは、プリチャレンジがCPUFチップへの入力として供給された場合のみ、CPUFチップ48からレスポンスを送ることができる。プリチャレンジは、新規のチャレンジ-レスポンスペアを生成するプロセスで使用されるチャレンジを生成するために使用される。新規のチャレンジ-レスポンスペアが生成されると、プリチャレンジは破棄することができる。制御アルゴリズムは、チャレンジがCPUFチップ48の入力として供給された場合に、CPUFチップが秘密鍵を生成することができるように設計され、CPUFチップは、その秘密鍵を内部で使用するが、出力せず、かつ、チャレンジに対するレスポンスも出力しない。秘密鍵は、CPUFチップ48により生成されたメッセージを暗号化する場合、又はメッセージに対するメッセージ認証コードMACを生成する場合に使用することができる。これにより、一組のチャレンジ-レスポンスペアCRPを、機密保護チャネルを介して生成し、その後、非機密保護チャネルにおいて使用することができる。攻撃者がアクセスすることができない秘密鍵を生成することにより、いわゆる中間者man-in-the-middle攻撃を防止することができる。[中間者攻撃]中間者攻撃について以下に簡単に説明する。PUF回路100を用いることによりチップ50を認証することができる。しかし、人又は機械が非機密保護通信チャネルを介してチップと相互作用を行った場合、攻撃者は、チップ50の入力及び出力を傍受することにより、中間者攻撃を行うことができる場合がある。例えば、テレホンカードが、残りの金額を示す情報を記憶しているPUFチップを含んでいると仮定する。テレホンカードを使用する人が、電話呼出しを終了した場合、カードリーダは、テレホンカードに残りの時間又は金額からある値を減額するように命令する。攻撃者も、本物のテレホンカードに類似している偽のカードを使用して、カードリーダからチャレンジを読み出し、本物のテレホンカードにチャレンジを送信してレスポンスを生成し、次に、偽のカードによりカードリーダに適切なレスポンスを送信することができる。カードリーダは、実際には偽のカードと相互作用を行っている場合でも、本物のテレホンカードと相互作用を行っているように動作する。偽のカードは、実際に、偽のカードが金額を減額しなくても、減額を行うようにとのカードリーダの指示に従っているかのように動作するように設計することができる。スマートカードにPUF回路100を設置すれば、カードリーダが、チャレンジを受信し、かつレスポンスを生成している人が本物のスマートカードを有していることを証明することができるが、そのスマートカードは、カードリーダにより要求される特定の動作を実際に行ったことを必ずしも保証しない。中間者攻撃の別の例は、ユーザがPUFチップを使用して認可処理を行う場合である。ユーザは、PUFチップを実行するプログラムを送る。プログラムは、PUFチップで実行される。攻撃者は、ユーザのプログラムの代わりに自分自身が選択したプログラムを使用して、PUFチップで自分のプログラムを実行させる。攻撃者のプログラムは、ユーザが予想しているメッセージに類似しているが、実際は偽物であるメッセージを生成することができる。[制御アルゴリズム]チャレンジ-レスポンスペアCRPを生成するために使用するプロセス、及びCRPを使用してメッセージを認証するための秘密鍵を生成するためのプロセスについて以下に説明する。図15を参照すると、所有者234は、機密保護通信チャネル514を介して、CPUFチップ48と通信して、CRPを生成する。図16を参照すると、CRPを生成するために、プリチャレンジが、一方向ランダムハッシュモジュールh1191に送られて、チャレンジが生成され、このチャレンジは、PUF回路100に送られて、レスポンスが生成される。ランダムハッシュモジュールh1191は、制御モジュール54の一部であり、マイクロプロセッサにアクセス可能なメモリ図示せず内に記憶されたサブルーチンを使用して、マイクロプロセッサ51により実施される。レスポンスは、チップ48から所有者234に送られる。以下の説明においては、説明を簡略化するために、エラー修正コード化のための手順の説明は省略する。図17は、CRPを生成するためのプロセス512のタイムライン図である。プロセス512は下記のステップを含む。ステップ520:所有者234は、プリチャレンジをランダムに選択し、それを制御モジュール54に送る。ステップ522:制御モジュール54は、式、challenge=h1prechallengeを用いてチャレンジを計算し、チャレンジをPUF回路に送る。ステップ524:PUF回路100は、式、response=fchallenge=fh1prechallengeに基づいてレスポンスを生成し、そのレスポンスを制御モジュール54に送る。ステップ526:制御モジュール54は、所有者234にレスポンスを出力する。ステップ528:所有者234は、式、challenge=h1prechallengeを用いてチャレンジを計算する。ステップ520~528は、一組のCRPが生成されるまで、ランダムに選択されたプリチャレンジを用いて数回反復される。CRPは、機密保護記憶箇所に記憶され、プリチャレンジは廃棄される。図18を参照すると、一組のCRPが生成された後で、所有者234又は所有者234から一組のCRPを得たユーザは、CRPを使用して、非機密保護通信チャネル226を介してCPUFチップ48を認証することができる。攻撃者235は、所有者234とCPUFチップ48との間の通信を傍受する可能性がある。攻撃者235は、CPUFチップ48を入手する可能性もある。図19を参照すると、CPUFチップ48を認証するために、所有者234は、PUF回路100CPUFチップのにチャレンジを送り、PUF回路100は、暗号化及びMACモジュール195により使用されるレスポンスを生成して、メッセージ例えば、機能モジュール52が生成したを暗号化し、暗号化されたメッセージに対するメッセージ認証コードMACを生成する。暗号化及びMACモジュール195は、制御モジュール54の一部である。メッセージのMACは、メッセージを圧縮するハッシュ関数とメッセージの送信側及び受信側で共有される秘密鍵とを用いて生成することができる。MACは、通常、メッセージと共に受信側に送信される。受信側は、同じ秘密鍵及び送信側が使用したハッシュ関数を用いて受信メッセージのMACを計算し、計算結果を受信MACと比較する。2つの値が一致した場合には、メッセージは適切に受信され、受信側は、送信側が秘密鍵を知っているコミュニティのメンバーであることを確信する。MACを計算するためのアルゴリズムの一例としては、2002年3月6日に、米国国立標準技術研究所NationalInstituteofStandardsandTechnologyが発行した、連邦情報処理規格公報FederalInformationProcessingStandardsPublicationの第198に記載されている鍵付きハッシュメッセージ認証コードHMACアルゴリズムがある。所有者234が暗号化メッセージ及びMACを受信した場合には、所有者は、レスポンスを用いて暗号化メッセージを解読して、メッセージを入手することができる。所有者は、レスポンスを使用して暗号化メッセージに対するMACを生成することにより、かつ所有者が生成したMACを自分が受信したMACと比較することにより、暗号化メッセージの完全性を確認することができる。MACが一致した場合には、メッセージが、偽のチップによってではなく、CPUFチップ48により実際に生成されたものである確率が高い。図20は、CPUFチップ48を認証するためのプロセス518のタイムライン図である。プロセス518は下記のステップを含む。ステップ530:所有者234は、予め記憶されたチャレンジ-レスポンスペアをデータベースから検索し、チャレンジを含むプログラムを制御モジュール54に送る。ステップ532:制御モジュール54は、命令を機能モジュール52に送る。命令は、機能回路が、デフォルトメッセージにより応答することを要求する簡単なコマンドであってもよい。命令は、また機能回路にデータを処理させ、処理結果を表すメッセージを生成させるデータを含むプログラムセグメントを含むことができる。ステップ534:機能回路52は、メッセージを制御モジュール54に送信する。ステップ536:制御モジュール54は、チャレンジをPUF回路100に送信する。ステップ538:PUF回路100は、式、response=fchallengeに基づいてレスポンスを生成し、そのレスポンスを制御モジュール54に送信する。ステップ540:制御モジュール54は、レスポンスを用いてメッセージを暗号化する。ステップ542:制御モジュール54は、レスポンスを用いて暗号化メッセージのMACを生成する。ステップ544:制御モジュール54は、暗号化メッセージ及びMACを所有者234に送信する。ステップ548:所有者234は、レスポンスを使用して暗号化メッセージのMACを計算する。ステップ550:所有者234は、計算したMACを受信MACと比較して、暗号化メッセージの真偽を判定する。ステップ552:所有者は、レスポンスを用いて暗号化メッセージを解読してメッセージを生成する。ユーザが非機密保護チャネル226を介してCPUFチップ48を認証しようとした場合、CPUFチップにより生成されたメッセージを知ることを所望する攻撃者235が、CPUFチップを有している場合がある。攻撃者は、本物のメッセージの代わりに偽のメッセージを使用しようとする。そうするためには、攻撃者は、レスポンスを入手して、適切なMACを生成する必要がある。しかし、攻撃者はレスポンスを知らない。攻撃者は、チャレンジを傍受することはできるが、レスポンスを入手することはできない。その理由は、レスポンスは、プリチャレンジがチップへの入力として供給された場合のみ、チップの外部に送信されるからである。そして、攻撃者は、ハッシュ関数を反転して、チャレンジからプリチャレンジを入手することはできない。攻撃者は、レスポンスを入手することができないので、中間者攻撃を行って、CPUFチップ48からメッセージを取り出すことはできない。物理的攻撃に対してチップ48に耐性をもたせるために、制御モジュール54は、PUF回路100と相互に協働して、攻撃者が物理的検査を通して制御モジュール54をバイパスできないようにする。このことは、制御モジュール54を囲む1つ以上の層上に測定可能な構成要素を形成することにより達成することができ、その結果、攻撃者は、測定可能な特性を変更して、PUF回路100が実行する機能を変更しない限り、制御モジュール54にアクセスできない。[CRPの管理]図17のプロセス512の場合には、所有者234は、機密保護チャネル514を介してCPUFチップ48と通信しているものと見なされる。以下に、所有者のみが知っている旧来のCRPを有している所有者234が、非機密保護チャネル226を介して新規のCRPを生成するプロセスについて説明する。図21を参照すると、所有者234は、CPUFチップ48に、旧来のチャレンジと新規のプリチャレンジを送る。プリチャレンジは、ランダムに選択された数値である。新規のプリチャレンジは、ハッシュモジュール191を介して新規のチャレンジを生成し、この新規のチャレンジはPUF回路100を通過して、新規のレスポンスが生成される。旧来のチャレンジは、PUF回路100を通過して旧来のレスポンスが生成され、この旧来のレスポンスはハッシュモジュールh2193を通過して秘密鍵が生成される。秘密鍵は、暗号化及びMACモジュール195により使用されて、メッセージを暗号化し、暗号化メッセージに対するMACが生成される。暗号化メッセージ及びMACは、チップから送信され、所有者234に転送される。所有者234はMACを計算することができる。その理由は、所有者は旧来のレスポンスを有し、秘密鍵を計算することができるからである。次に、所有者は、MACを用いて暗号化メッセージの認証をチェックし、暗号化メッセージを解読して、新規のレスポンスを入手することができる。攻撃者は秘密鍵を知らないので、暗号化メッセージを解読して、新規のレスポンスを入手することができない。攻撃者が、新規のレスポンスの代わりに偽のレスポンスを使用するか、又は偽の秘密鍵を使用した場合、所有者はそのことが分かる。その理由は、MACが適切でないからである。図22は、所有者234が、所有者のみが知っている旧来のCRPから新規のCRPを生成可能にするプロセス560のタイムライン図である。所有者234は、非機密保護チャネルを介してCPUFチップと通信する。プロセス560は下記のステップを含む。ステップ562:所有者234は、新規のプリチャレンジをランダムに選択し、制御モジュール54に新規のプリチャレンジ及び旧来のCRPの旧来のチャレンジを送信する。ステップ564~566:新規のレスポンスが、図17のステップ522~524に類似の方法で、新規のプリチャレンジから生成される。ステップ568:制御モジュール54は、旧来のチャレンジをPUF回路100に送信する。ステップ570:PUF回路100は旧来のレスポンスを生成し、それを制御モジュール54に送信する。ステップ572~578:ステップ539~544に類似の方法で、制御モジュール54は、旧来のレスポンスから秘密鍵を生成し、秘密鍵を用いて新規のレスポンスを暗号化し、暗号化された新規のレスポンスに対するMACを生成し、暗号化された新規のレスポンス及びMACを所有者234に送信する。ステップ580~586:ステップ546~552に類似の方法で、所有者234は秘密鍵を計算し、MACを計算し、計算されたMACを制御モジュール54から送信されたMACと比較する。一致した場合には、暗号化された新規のレスポンスは認証されたものとなる。所有者234は、新規のレスポンスを解読して、新規のレスポンスを入手する。ステップ588:所有者234は、式、newchallenge=h1newprechallengeを用いて新規のチャレンジを計算する。図22のプロセス560においては、新規のCRPを生成する所有者234は、他の誰も知らない旧来のCRPをすでに有していると仮定する。図23を参照すると、ユーザ592は、所有者234から旧来のCRPを入手し、この旧来のCRPを使用して新規のCRPを生成することを所望する場合、プロセス560によって、所有者234が傍受して新規のレスポンスを入手することが防止される。これは、所有者234が、旧来のレスポンスから秘密鍵を計算することができるからである。以下に、所有者234が新規のレスポンスを知ることを防止するようにして、ユーザ592が新規のCRPを生成可能にするプロセスについて説明する。このプロセスは、公開鍵暗号化アルゴリズムを使用して、ユーザの公開鍵で新規のレスポンスを暗号化することにより達成される。図24を参照すると、ユーザ592は、旧来のチャレンジ、新規のプリチャレンジ及び自分の公開鍵をCPUFチップ48に送る。旧来のチャレンジはPUF回路100に送られて旧来のレスポンスが生成され、この旧来のレスポンスは、ハッシュモジュール194に送られて秘密鍵が生成される。新規のプリチャレンジは、ハッシュモジュール192を通過して新規のチャレンジが生成され、この新規のチャレンジは、PUF回路100を通過して新規のレスポンスが生成される。新規のレスポンスは、ユーザの公開鍵を使用した暗号化モジュール201により暗号化されて暗号化された新規のレスポンスが生成される。MACモジュール203は、秘密鍵を、暗号化された新規のレスポンスに対するMACを生成するためのMAC鍵として使用する。暗号化された新規のレスポンス及びMACは、チップ48から送られ、ユーザ592に転送される。ユーザ592は、秘密鍵からMACを計算することができる。その理由は、ユーザは旧来のレスポンスを有しているからである。MACをチェックすることにより、ユーザ592は、暗号化された新規のレスポンスの完全性を確認することができる。ユーザ592は、自分の秘密鍵を使用して暗号化された新規のレスポンスを解読し、新規のレスポンスを入手することができる。攻撃者は、秘密鍵を知らないため、新規のレスポンスを入手するか、あるいは、偽のレスポンスを挿入することはできない。所有者は、ユーザの公開鍵で暗号化されたメッセージを解読できないため、新規のレスポンスを入手することができない。プロセス590を実行するために、旧来のチャレンジ、新規のプリチャレンジ及びユーザの公開鍵を含むソフトウェアプログラムが、I/Oポート105を介して制御モジュール54に送られる。このプログラムは、プロセス590に従って、制御モジュール54に、新規のレスポンスを生成させ、新規のレスポンスを暗号化させ、新規のレスポンスに対するMACを生成させ、暗号化された新規のレスポンス及びMACを出力させる。図25は、ユーザ592が、所有者234から得た旧来のCRPから新規のCRPを生成可能にするプロセス590のタイムライン図である。ユーザ592は、非機密保護チャネルを介してCPUFチップ48と通信する。プロセス590は、下記のステップを含む。ステップ593:図22のステップ562~572類似のステップ。ステップ594:制御モジュール54は、ユーザの公開鍵を用いて新規のレスポンスを暗号化する。ステップ596:ステップ576~584類似のステップ。ステップ598:ユーザの秘密鍵を用いて暗号化された新規のメッセージを解読して、新規のレスポンスを入手する。ステップ600:ステップ588類似のステップ。[制御アルゴリズムの実行]以下に、CPUFチップと、チップを認証するか、又は認証された状態でチップを使用することを所望するエンティティとで共有される秘密鍵を生成するために使用される制御アルゴリズムの実行について説明する。制御アルゴリズムを実行するために、制御モジュール54により実行可能な多数の基本手順について以下に説明する。Outputarg1,...:この手順は、CPUFチップから結果arg1,...を送信するために使用される。攻撃者は、非機密保護リンクを介してCPUFチップから送信される全ての結果を確認し得る。EncryptAndMACmessage,key:この手順は、ある鍵keyを暗号鍵として使用して、メッセージmessageを暗号化し、この鍵を使用して、暗号化メッセージのMACを生成するために使用される。PublicEncryptmessage,public_key:この手順は、公開鍵暗号化アルゴリズムに従って、公開鍵public_keyを使用してメッセージを暗号化するために使用される。MACmessage,key:この手順は、鍵keyを使用してメッセージのMACを生成する。制御アルゴリズムは、プログラムによってのみPUFにアクセスできるように設計される。例えば、プログラムは、2つの基本手順によりPUFにアクセスする。その出力はこれらの基本手順を含むプログラムに依存する。これらの基本手順は下式により定義される。GetResponsePreChallenge=fh1h1Program,PreChallenge;GetSecretChallenge=h2h1Program,fChallenge;ここで、fは、PUFであり、h1及びh2は、一般的に入手できる一方向ランダムハッシュ関数又は疑似ランダムハッシュ関数であり、プログラムは、認証方式で実行されるプログラムすなわち、認証を必要とするプログラムの実行結果である。Programは、Challenge又はPreChallengeに対する値を含む。プログラムは、原始関数GetResponse及び/又はGetSecretに対する呼出しを含んでいるので、GetResponse又はGetSecretを評価するにはProgramのハッシュを計算する必要がある。プログラムは、プログラム開始という連語、及びプログラム終了という連語を有する。hiProgramを評価する場合には、プログラム開始とプログラム終了との間のプログラムコードが、ハッシュ関数hiに送られ、ハッシュ値が生成される。hiが衝突困難性を有するハッシュ関数であると仮定した場合、Programを何らかの方法で変更すると、GetResponse及びGetSecretの値も変化する。図26は、プリチャレンジ、チャレンジ、レスポンス及び共有秘密の間を移動する可能性のある数々の方法を要約したものである。GRP及びGSPは、それぞれ、GetResponse及びGetSecretを呼び出すプログラムである。この図の場合、下への移動は、ハッシュ値を計算することにより容易に達成される。上への移動は困難である。その理由は、一方向関数であるハッシュ関数を反転するプロセスを含んでいるからである。左から右への移動は、そのハッシュ値がGetResponse又はGetSecret原始関数で使用されているプログラムの場合には容易であるが、他のすべてのプログラムの場合には困難である。PUFが一方向ハッシュ関数を反転できない場合には、右から左への移動は困難である。[制御プログラム]以下に、秘密鍵を生成し、チャレンジ-レスポンスペアを管理するために使用されるプログラムの例について説明する。これらのプログラムを使用する場合、CPUFは、プログラムの実行間の状態を保存する必要はない。プログラムObtainSecretProgramは、ユーザとCPUFチップとの間で共有可能な秘密を入手するために使用されるプログラムの一例である。/ObtainSecretProgram/beginprogramSecret=GetSecretChallenge/プログラムは、Secretをユーザと共有する秘密として使用する/endprogramこの場合、Challengeは、プログラムを送信しているユーザが知っているチャレンジ-レスポンスペアからのチャレンジである。GetSecretChallengeを評価するためには、h1h1Program,fChallengeを評価する必要がある。h1Programを評価する際には、Challengeの実際の値を含む、プログラム開始とプログラム終了との間に含まれるすべてのものが、ハッシュ関数h1を通過する。Challengeに対する異なる値を含む同じプログラムコードは、異なるプログラムハッシュを有し、結果は異なる秘密が生じる。ユーザは、Secretを決定することができる。その理由は、ユーザは、チャレンジ-レスポンスペアを有し、かつ、Challengeに対するレスポンスを知っているからである。ユーザは、h1h1Program,responseを計算して、Secretを決定することができる。逆に、攻撃者は、秘密が何であるかを決定することはできない。攻撃者は、CPUFに送られたプログラムを確かめることにより、Challengeが何であるかを確認することができる。しかし、CPUFチップは、PUFの測定可能な物理特性を変更しない限り、PUFにアクセスすることができないように設計されるので、攻撃者は、PUFを精査して、レスポンスが何であるかを知ることはできない。秘密鍵を使用した制御プログラムを用いることにより、本明細書に記載する制御アルゴリズムを、公開鍵暗号化システムを使用している既存のアプリケーションに容易に適用することができる。公開鍵暗号化システムにおいては、他の個人と機密保護状態で通信することを所望する個人は、その個人の公開鍵を使用して、その個人のみが理解可能なメッセージを暗号化することができる。この公開鍵は、ある信頼できる当事者から最初に入手され、その当事者は、公開鍵をすでに知っており、個人との認証チャネルが存在している。CPUFを用いて、デバイスと機密状態で通信することを所望する個人は、チャレンジ-レスポンスペアのチャレンジを使用して、その個人がデバイスと共有し、かつ、自分が通信するために使用可能な対称鍵を生成する。チャレンジ-レスポンスペアは、最初、認証されたプライベートチャネルが存在する信頼できる当事者から入手される。[制御プログラムを使用した新規のCRPの入手]以下の説明において、CPUFチップ48の所有者又はユーザは、プログラムをチップ48の入出力I/Oポート105を介して、CPUFチップの制御モジュール54に送る図14参照。図27を参照すると、CPUFチップへの機密保護リンクを有する所有者234は、プロセス602に従ってプログラムBootstrappingProgramを使用して、新規のCRPを入手することができる。/BootstrappingProgram/beginprogramResponse=GetResponsePreChallenge;OutputResponse;endprogramプロセス602は、プロセス512に類似している図17。以下の説明は、プロセス512のステップとは異なるプロセス602のステップに焦点を当てて行う。ステップ604において、所有者234は、プリチャレンジPreChallengeをランダムに選択して、プリチャレンジを含むプログラムBootstrappingProgramを制御モジュール54に送信する。ステップ606及び608において、新規のCRPに対するチャレンジが、式challenge=h1h1BootstrappingProgram,PreChallengeを用いて計算される。新規のCRPに対するレスポンスは、Responseであり、新規のCRPに対するチャレンジは、h1h1BootstrappingProgram,PreChallengeである。図28を参照すると、CPUFチップへの非機密保護リンクを有し、他の誰も知らず、以前に使用したことがないCRPを有する所有者234は、プロセス610に従ってプログラム、RenewalProgramを使用して、新規のCRPを入手することができる。/RenewalProgram/beginprogramNewResponse=GetResponsePreChallenge;OutputEncryptAndMACNewResponse,GetSecretOldChallenge;endprogramプロセス610は、プロセス560に類似している図22。以下の説明は、プロセス560とは異なるプロセス610のステップに焦点を当てて行う。ステップ612において、所有者234は、プリチャレンジPreChallengeに対する任意の値を選択し、OldChallengeの値を旧来のCRPからのチャレンジに設定する。所有者234は、新規のプリチャレンジ及び旧来のプリチャレンジを含むプログラムRenewalProgramを制御モジュール54に送信する。ステップ614及び620において、新規のチャレンジが、式challenge=h1h1RenewalProgram,PreChallengeを用いて計算される。ステップ616及び618において、秘密鍵が、式secretkey=h2h2RenewalProgram,oldresponse=h2h2RenewalProgram,fOldChallengeを用いて計算される。新規のCRPのレスポンスは、NewResponseであり、新規のCRPのチャレンジは、h1h1RenewalProgram,PreChallengeである。プロセス610において、攻撃者は、プログラムを傍受し、それを自分自身のプログラムで置き換え、OldChallengeを自分がそれに対するレスポンスを知っているチャレンジで置き換えようと試みる可能性がある。攻撃者は、CPUFチップを介してプログラムを実行して新規のレスポンスを生成し、新規のレスポンスをユーザに送ろうと試みる可能性がある。そうすることにより、攻撃者は、自分が強奪しようとしているレスポンスとは異なるレスポンスを入手することになる。その理由は、OldChallengeはプログラムの一部であり、GetResponseが、プリチャレンジを実行中のプログラムのランダムハッシュと結合して、レスポンスを生成するからである。以下の説明においては、証明者は、CPUFに対するCRPの自分自身のプライベートリストを有しており、ユーザに信任されている人である。チップの製造業者は、他のユーザに対して証明者としての役割をもつことができる。ユーザがCRPの自分自身のリストを確立した後で、第2のユーザが第1のユーザを信任する場合には、第1のユーザは別の1人のユーザに対して証明者としての役割をもつことができる。例えば、ユーザがチップの所有者を信任した場合には、チップの所有者は証明者としての役割をもつことができる。証明者は、更新プログラムを使用して新規のCRPを生成し、新規のCRPを機密保護チャネルを介してユーザに送信することができる。証明者により証明されたCRPは、証明済みCRPと呼ばれる。次に、ユーザは、下記のプライベート更新プログラムを使用して、証明者が知らないCRPを生成する。ユーザにとって私的なものであり、かつ、他の誰もが知らないCRPは、プライベートCRPと呼ばれる。図29を参照すると、証明済みCRPを得たユーザ592は、CPUFチップ48に、下記のプログラムPrivateRenewalProgramを送信することにより、プロセス622に従ってプライベートCRPを生成することができる。この場合、ユーザ592とCPUFチップ48との間のリンクは機密保護されていないと仮定し、証明済みCRPは以前に使用されたことがないと仮定する。/PrivateRenewalProgram/beginprogramNewResponse=GetResponsePreChallenge;Message=PublicEncryptNewResponse,PublicKey;OutputMessage,MACMessage,GetSecretOldChallenge;endprogramプロセス622は、プロセス590図25に類似している。以下の説明は、プロセス560のステップとは異なるプロセス610のステップに焦点を当てて行う。ステップ624において、ユーザ592は、新規のプリチャレンジ、旧来のチャレンジ、及びユーザの公開鍵PublicKeyを含むプログラムPrivateRenewalProgramをCPUFチップ48に送信する。PrivateRenewalProgramにおいては、PreChallengeは、ユーザ592がランダムに選択した任意の数であり、OldChallengeは、証明済みCRPのチャレンジであり、PublicKeyは、ユーザの公開鍵である。ステップ626及び632において、新規のチャレンジが、式challenge=h1h1PrivateRenewalProgram,PreChallengeを用いて計算される。ステップ628及び630において、秘密鍵が、式secretkey=h2h2PrivateRenewalProgram,oldresponse=h2h2PrivateRenewalProgram,fOldChallengeを用いて計算される。新規のCRPのレスポンスは、NewResponseであり、新規のCRPのチャレンジは、h1h1PrivateRenewalProgram,PreChallengeである。ユーザ以外の誰かがNewResponseを読むことができる可能性は低い。その理由は、ユーザの公開鍵で暗号化されているからである。攻撃者が、PublicKeyを自分自身の公開鍵で置き換えようとした場合、異なるレスポンスを入手することになる。その理由は、PublicKeyは、プログラムの一部であり、そのためGetResponseの出力を間接的に変化させるからである。MACは、ユーザが、おそらく、ユーザにCRPを丁度導入した証明者と旧来のCRPを共有する人によってのみ偽造することができる。その人が信頼できると仮定した場合、ユーザは、MACがCPUFチップにより生成されたものであり、それ故、NewResponseは、実際にCPUFチップにより生成されたレスポンスであることを確信することができる。[複数の個人特性を用いた匿名の維持]図9のCPUFg回路186おいては、ユーザは、ライン197上で異なる数のPersonalitySelect信号を使用することにより、CPUFg回路186に対して異なる個人特性を選択することができる。個人特性の選択を実行するための制御アルゴリズムについて以下に説明する。自分のIDを秘匿しようとするCPUFチップ48図14の所有者は、CPUFチップの匿名の所有者と呼ばれる。CPUFチップの匿名の所有者のIDに関するすべての情報源は、他のプロトコル層によりすでに除去されていると仮定する。制御アルゴリズムは、CPUFチップ48が、匿名の所有者のIDを漏洩することを防止するように設計される。単なるタイミングの考慮から少し後でのメッセージの到着をあるノードにおいてメッセージの送信と相互に関連づけるトラヒック分析を使用することができない匿名の導入を使用している多くの人々がいると仮定する。制御アルゴリズムは、CPUFチップ48に送信されるプログラムが、PersonalitySelectを自由に設定できないように設計される。そうでない場合には、これらのプログラムは、CPUFチップ48を既知の個人特性に入れることができ、個人特性の選択器を有する目的が失われる。個人特性の選択を実行するために、CPUFチップ48により以下の基本手順が実行される。ChangePersonalitySeed:この手順は、個人特性をhPersonalitySelect,Seedに変更する。ここで、hはランダムハッシュ関数である。RunProgProgram:この手順は、PersonalitySelectを変更することなく、引数として供給されるプログラムを実行する。プログラムが外部からCPUFチップ内にロードされ、RunProgを通過することなく実行された場合には、PersonalitySelectは、ゼロ、すなわち、デフォルトの個人特性に設定される。Decryptmessage,key:この手順は、暗号鍵keyで暗号化されたメッセージmessageを解読するために使用される。HashWithProgx:この手順は、hhprogram,xを計算するために使用される。Hash...:この関数は、ランダムハッシュ関数である。Blindmessage、factor:この手順は、メッセージmessageにブラインディング要因factorを適用するために使用される。ブラインディング要因については以下に説明する。[現時点の個人特性の選択]CPUFチップ48の匿名の所有者が、CPUFチップのデフォルトの個人特性以外の個人特性を提示することを所望する場合には、その所有者は、CPUFチップに送信中のすべてのプログラムを傍受し、それらを自分自身のコードの一片に収容する。/SelectPersonalityProgram/ESeed=/秘密で暗号化された個人特性シード/EProgram=/秘密に暗号化されたカプセル化プログラム/beginprogramSecret=GetSecretChallenge;Seed=DecryptESeed,Secret;Program=DecryptEProgram,Secret;ChangePersonalitySeed;RunProgProgram;endprogramSelectPersonalityProgramにおいては、beginprogramの前に位置するラインは、プログラムを伴うが、プログラムのハッシュに参加しないデータの一片である。EProgramがハッシュに内蔵されている場合には、それを暗号化することはできない。その理由は、暗号鍵は、暗号化されたプログラムに依存するからである。Seedは、Secretにより暗号化された任意に選択されたシード値である、Eseedから由来するものである。Challengeは、匿名の所有者のCRPのうちの1つのチャレンジである。このような方法でプログラムをカプセル化することにより、匿名の所有者は、その所有者がユーザのプログラムを実行した場合、CPUFが表示している個人特性を変更することができる。ユーザのプログラムが、使用している個人特性を決定可能にする基本手順はない。ChangePersonalityと共に使用されるシードは暗号化されるので、ユーザは自分が使用している個人特性を知ることはできない。ユーザのプログラムは暗号化されるので、所有者の通信を監視しても、ユーザはCPUFに送信中のプログラムが、自分自身のプログラムかどうかを判断することはできない。所有者を匿名のままにしておくことの1つの利点は、複数の相互に信用していない当事者が、同じ計算デバイスを機密保護状態で使用できることである。[匿名の導入]匿名の導入のプロセスについて以下に説明する。匿名の導入の際には、CPUFチップの所有者は、ユーザに証明者が証明したCRPを提供する。そのため、ユーザはCRPを使用してCPUFチップ上で証明済みの実行を行うことができる。所有者は、ユーザにCRPがどのCPUFに対応するのかを示すことを所望しない。匿名の導入後に、ユーザは証明済みのCRPを入手し、CRPを使用して他のCRPを生成し、CPUFチップ上で証明済みの実行を行うことができる。しかし、ユーザは、自分がどのCPUFを使用しているのかを判断することはできず、かつ、自分が他のユーザ又は証明者と同じCPUFと通信しているかどうかも判断することはできない。図30は、匿名の導入のモデルである。ユーザ222は、CPUFチップ224に対するCRPを有しておらず、CRPの自分自身のプライベートリストを確立することを希望する。証明者232及び所有者234は相互に通信し、所有者234及びユーザ222は相互に通信し、所有者234はCPUFチップ224と通信する。証明者232と、所有者234及びユーザ222との間の通信チャネルは、機密保護されているプライベート及び認証されている。所有者234とCPUFチップ224との間の通信チャネル226は機密保護されていない。証明者232及びユーザ222は協力して、CRPが同じCPUFチップのためのものであるかどうかを判断する。匿名の導入のプロトコルの一例は、下記の例で説明される秘匿と呼ばれる手順を使用することができる。アリスは、ボブに自分の代わりに署名することを所望しているが、アリスは、ボブに自分が何に署名したのかを知られたくない。そうするために、アリスは秘匿係数を適用することにより、メッセージを隠す。ボブは、秘匿されたメッセージを受け取り、それに署名し、署名した秘匿メッセージをアリスに返送する。次に、アリスは、ボブの署名にダメージを与えることなく秘匿係数を除去する。その結果、得られるメッセージにはボブが署名したものとなるが、ボブが多くのメッセージに署名した場合には、ボブは秘匿されていないメッセージのどれに自分がいつ署名したのかは分からない。匿名の導入のプロトコルは下記のステップを含む。ステップ300:CPUFチップの所有者は、証明者及びユーザの公開鍵からチャレンジを入手する。所有者は図31に示されるプログラムをCPUFチップに送信する。ステップ302:所有者は、CPUFチップからの出力を解読し、MACをチェックし、証明者の公開鍵で暗号化されたプログラムMACの関与する部分のみのコピーと共に、Mesg5を証明者に送る。ステップ304:証明者はプログラムを解読し、それが公式の匿名の導入プログラムであることをチェックし、次に、それをハッシュして、CertSecretを計算する。次に、証明者は、MACによりMesg4が本物であることを証明することができる。証明者はMesg4に署名し、結果を所有者に送る。ステップ306:所有者は、メッセージの秘匿を解除し、Mesg3の署名済みバージョンで処理を終了する。所有者は、署名及びMesg3のMACをチェックして、証明者が自分のIDをユーザに送信していないことを確認する。所有者は、秘匿が解除されたメッセージをユーザに送信する。このメッセージは、実際には、証明者が署名済みのMesg3のバージョンである。ステップ308:ユーザは、署名をチェックし、自分の秘密鍵でMesg2を解読して、CRPを入手する。上記プロトコルの場合には、UserPubKey及びCertChallengeが暗号化され、そのため、ユーザがCPUFチップに送信するメッセージを、証明者のチャレンジ又はユーザの公開鍵と相互に関連づけることが困難である。Seedは、証明者又はユーザが、ユーザが表示されている個人特性に自発的に入り込む方法を知るのを防止するために暗号化される。PreChallengeSeedは、証明者がステップ304においてプログラムをチェックする際に、新しく生成されたチャレンジを発見することを防止するために暗号化される。Mesg5及びMesg6の間の暗号化は、CPUFから所有者へのメッセージと所有者から証明者へのメッセージが相互に関連することを防止する。2つ以上のカプセル化層を使用することができる。匿名の導入によりCPUFの個人特性にアクセスしたエンティティは、このPUFに他の当事者を引き合わせることができる。より詳細に説明すると、このエンティティは、自分が受信した署名入りCRPを証明者に返送し、自分が匿名でCPUFを他の当事者に引き合わせた場合に、証明者を自分の個人特性に対する証明者としての役割をもたせるようにすることができる。CPUFチップ及び制御アルゴリズムは、例えば、スマートカード用途及び証明済み実行で使用することができる。[スマートカード用途]図32を参照すると、スマートカード206は、PUF回路209、機能回路278、及び制御回路280を有する集積回路チップ208を含む。PUF回路209は、チャレンジが選択可能な多数の信号経路を含む遅延回路210を有する。一例を挙げて説明すると、チャレンジは64ビット数であってもよい。スマートカード206は、プログラムを受信するための入出力I/Oポート212を含む。カードリーダ214は、スマートカードを認証するために使用される。カードリーダ214は、スマートカード206を受け入れるためのポート216と、プロセッサ218と、チャレンジ-レスポンスペアを記憶するための記憶装置220とを含む。プロセッサ218は、チャレンジを選択し、チャレンジを含むプログラムをスマートカード206に送信し、スマートカードからメッセージを受信する。メッセージは、機能回路278が生成した計算結果、及びチャレンジへのレスポンスを含む。プロセッサ218は、メッセージを処理してレスポンスを生成し、スマートカードから受信したレスポンスを、チャレンジに関連して記憶装置220に記憶されたレスポンスと比較する。レスポンスが一致した場合には、スマートカード206が認証される。図33は、CPUFチップを含むスマートカードを認証するためのプロセス370である。スマートカード会社は、同じリソグラフィマスクにより製造したPUFチップを含む非常に多数のスマートカードを製造する。各スマートカードは一意のシリアル番号を有する。プロセス370は下記のステップを含む。ステップ372:スマートカード会社は、スマートカードを選択し、プロセス602図27を使用するスマートカードに対する一組のCRPを生成する。CRPは、機密保護データベースに記憶される。ステップ374:スマートカード会社は、スマートカードをカード所有者に配布し、スマートカードのシリアル番号をカード所有者のアカウントにリンクする。ステップ376:カード所有者が自分のアカウントにアクセスし、スマートカード会社が提供するサービスを利用することを所望する場合、カード所有者は、認証のためにカードリーダにスマートカードを提示する。ステップ378:カードリーダは、機密保護データベースから予め記憶されたCRPを検索し、以下に説明するプロセス634に従ってスマートカードを認証する。図34を参照すると、プロセス634は、カードリーダがCPUFチップ48を含むスマートカードを認証可能にする。プロセス634はプロセス518に類似している図20。以下の説明は、プロセス518とは異なるプロセス634内のステップに焦点を当てて行う。ステップ636において、カードリーダは、下記のプログラム、SmartcardProgramをスマートカードに送る。/SmartcardProgram/beginprogramSecret=GetSecretChallenge;/このプログラムは、スマートカードに銀行に送信されるメッセージを生成させるための命令を含む/OutputMessage,MACMessage,R,Secret;endprogramSmartcardProgramにおいては、Rは1回使用の回数であり、Challengeはカードリーダのチャレンジである。ステップ638及び642において、秘密鍵が、式secretkey=h2h2program,responseを用いて計算される。ステップ640及び644において、MACが、式MACmessage,R,secretkeyを用いて計算される。1回使用の回数Rは、スマートカードが実行の間に保存される状態を有する場合に役に立つ。この場合、メッセージの新しさを確保することが重要である。スマートカードのメッセージのプライバシーが1つの要件である場合には、メッセージがMACを生成するために使用されるのと同じ鍵により暗号化されている場合に、異なるプログラムを使用することができる。スマートカード会社がカード所有者にスマートカードを発行する前に、スマートカード会社は、一組の新規のCRPを生成する。スマートカード206が認証される度に、新規のCRPの一部が使用される。一組のCRPの全部を使用した場合には、スマートカード会社はプログラムRenewalProgram及びPrivateRenewalProgramを用いて新規の一組のCRPを生成する。PUFを含んでいないスマートカードを使用した場合には、スマートカードを有している攻撃者は、種々のタイプの攻撃を使用して鍵情報スマートカード内のどこかに隠されているデジタル鍵を抽出することにより、コピーを生成することができる。誰かがある期間自分のカードを紛失した場合、自分のカードは潜在的にコピーされている。それ故、スマートカードを物理的に所有していても、必ずしも安全であるとはいえない。認証及び識別可能なスマートカードのPUFを所有していれば、攻撃者が抽出可能なデジタル鍵はもはや必要ない。スマートカードのハードウェア自身が秘密鍵である。この鍵はコピーすることができない。それ故、誰でもPUFスマートカードを制御できなくなる恐れがあるが、それを検索し、引き続き使用することができる。このようにして、機密保護を永久に失うことなく、PUFスマートカードを他の誰かに貸すことができる。PUFは、その人が元のカードを所有しているかどうかをチェックするために、クレジットカードで使用するのに適しているすなわち、その人は、友達からクレジットカードを借りて、鍵情報を抽出し、クレジットカードを返却し、偽造品を作ることができない。攻撃者がサービスの拒否攻撃を行うのを防止するために、スマートカードがデジタルチャレンジ-レスポンスプロトコルを用いて自身を識別することが必要となる場合があり、その後に、カードリーダは、カードリーダが有するCRPの限定された数のうちの1つでスマートカードにチャレンジする。[証明済み実行]証明済み実行では、特定のプロセッサ上で実行の証明を必要とする用途においてCPUFチップが使用される。例えば、大部分のコンピュータユーザは、コンピュータの処理能力の一部しか使用しない。未使用の計算能力を引き出して、分散方式で長い計算を行うことができる。しかし、このタイプの計算は、信頼性が低い、その理由は、計算を要求している人は、その計算が不正なしで行われたことを知る方法がないからである。CPUFチップを使用した場合には、特定の計算が特定のチップ上で行われたことを証明する証明書を生成することができる。そして、計算を依頼する人は、チップの所有者に依存する代わりに、チップを製造したことを保証することができるチップ製造業者の信頼性に依存することができる。証明済みの実行は、2つの方法で行うことができる。計算は、機密保護チップで直接行うか、又は機密保護チップの管理コードにより、高度にインタラクティブな方法で監視されているより高速の機密保護されていないチップで行うこともできる。CPUFチップを使用して、ソフトウェア認可を容易にし、知的所有権保護を強化することができる。例えば、ソフトウェアコードは、認証可能なプロセッサで実行するように設計することができる。海賊版のコードは実行できない。1つの方法は、CPUFのチャレンジ-レスポンスペアを用いてソフトウェアコードを命令単位をベースとして暗号化する方法である。命令は、CPUFチップで解読されるが、専用のチップによってのみ解読することができる。一例を挙げて説明すると、アリスは、週末にCPUFチップを含むボブのコンピュータで計算上高価なプログラムを実行することを所望している。ボブはこれまでに使用したことがないCRPを有している。アリスは、結果がボブ又は他の誰かに改ざんされなかったことを確認することを所望している。アリスはCRPを何ら有していない。アリスがプライベートCRPを入手し、そのプライベートCRPを使用して、CPUFチップで証明済み実行を可能にするプロセス400について以下に説明する。図35を参照すると、プロセス400は下記のステップを含む。ステップ382:ボブは、アリスにCRPを送信する。ステップ384:アリスは、ボブから得たCRPに基づいて、プロセス622図29により自分用の新規のCRPを生成する。ステップ386:アリスがより多くのCRPを生成することを所望する場合には、ステップ384で確立されたCRPに基づいて、プロセス610図28によりより多くのCRPを生成することができる。ステップ388:アリスは、下記のプログラムCertifiedExecutionProgramをCPUFチップに送信して、プロセス634類似のプロセスにより証明済み実行を行う。/CertifiedExecutionProgram/beginprogramSecret=GetSecretChallenge;CPUFチップの機能回路に命令して、証明済み実行を行い、Resultに加えられる結果を生成するサブルーチンOutputResult,MACResult,Secret;endprogramCertifiedExecutionProgramにおいては、Challengeは、アリスがステップ386又は388で生成したチャレンジである。プロセス400は、1回使用の乱数を使用しない。証明済み実行では、見込み違いとなることがない計算が含まれていると仮定する。すなわち、計算では、同じ計算がいつ行われても、同じ結果が示される。証明済み実行を行う場合には、アリスは、計算が適切に行われるように、ボブのCPUFチップに委託する。これにより、計算を行うのに使用されるすべてのリソースメモリ、CPU等が、CPUFチップ上に存在し、かつ、CPUF特性に含まれていることを確保することがより容易になる。CPUFチップが機密保護状態でオフチップリソースを使用可能となるように、CPUFチップを設計することができる。また、CPUFチップが、証明済み実行により、他のネットワークで接続されたCPUFチップ及びデバイスの機能を使用できるように、CPUFチップを設計することもできる。CPUFは、使用している各コンピュータに対するCRPを有し、上記プロトコルにより計算を行うことができる。[実験データ]XilinxXC2S200フィールドプログラマブルゲートアレイFPGAを使用して、一意に識別されるPUFを形成することの実行可能性を決定する実験を行った。FPGAは大量に製造され、製造プロセスは、可能な限り同じICを製造して、歩留まり及び性能が最大となるように調整した。実験結果は、予測できるように設計した高度に最適化した製造プロセスでも、十分な変動があり、信頼性の高い識別ができることを示している。図36を参照すると、自励発振ループ236は、FPGAの参照テーブルにより実施される鎖線で囲まれた遅延回路238及びスイッチング回路240を含む。参照テーブルの動作は、XORゲート241及びマルチプレクサ242によりモデル化することができる。ライン245上の信号は、遅延回路238に入力され、上部経路247と下部経路249とを切り替える2つの信号に二重化される。経路247及び249上の信号は、それぞれ、信号ライン239及び237を介してスイッチング回路240に入力される。スイッチング回路240の出力251は、遷移が遅い場合には立上りエッジ又は立下りエッジを切り替え、ライン237及び239を介してその入力に到着する。回路240は、遅延回路からの両方の出力が同じレベルである場合に、状態を切り替えるフリップフロップに類似している。異なる条件で異なるFPGAに対して多数のプロファイルが生成された。プロファイルは、128のチャレンジ-レスポンスペアの測定値を表す。すべてのプロファイルは、同じチャレンジにより確立された。2つのプロファイルのレスポンスにおける差を比較することにより、差の分布を得た。大部分の差がゼロに近い場合には、プロファイルは近接している。差がゼロ値から離れている場合には、プロファイルは離間している。実験結果は、差の分布は通常ガウス的であることを示している。それ故、2つのプロファイル間の差を標準偏差により特徴づけることができる。図37を参照すると、各ラインは、第1のプロファイルと第2のプロファイルとの差を表す。水平軸は許容範囲を表し、垂直軸は任意のチャレンジについて、レスポンスの差が水平軸上に示すレスポンスの差より小さくなる確率を示す。第1のプロファイルは数本のラインに対して同じに維持され、室温で第1の試験ボード上で動作するAbeと呼ばれるFPGAチップにより生成されたレスポンスを測定することにより得た。ライン242について、第2のプロファイルは、室温での第1の試験ボード上でAbeにより生成されたレスポンスを2回目に測定することにより得た。2つのプロファイル間の差の標準偏差σは、約1×10-5である。測定は、同じ温度で、同じボード上の同じチップ上で行ったので、結果は、時間の経過中の試験ボードの供給電力の変動を表す。ライン244については、室温で第2の試験ボード上でAbeチップにより生成されたレスポンスを測定することにより、第2のプロファイルを得た。この場合、σ≒2.5×10-5である。異なる試験ボード上で測定を行ったので、結果は、異なる試験ボード間の供給電力の変動を反映している。ライン246、248及び250について、第2のプロファイルは、それぞれ室温より10度、20度及び30度高い温度で、第1の試験ボード上のAbeチップからのレスポンスを測定することにより得た。この場合、σ≒5×10-5~1.5×10-4であった。ライン252及び254について、第2のプロファイルは、第1の試験ボード上で、それぞれHal及びWaltと呼ばれるFPGAチップからのレスポンスを測定することにより得た。これらの場合、σ≒4×10-4であった。これらの実験は、同じ試験ボード上の2つの異なるチップのプロファイル間の差が、異なる時間に測定された同じ試験ボード上の同じチップ、又は異なる試験ボード上の同じチップ、又は30°C変化する異なる温度で測定された同じ試験ボード上の同じチップのプロファイル間の差より大きいことを示している。このことは、チップの遅延特性の測定に基づいて、異なるFPGAを識別することができることを証明している。このデータは、各チャレンジが、30°Cの温度変動があった場合、FPGAのIDに関して0.7ビットの情報を供給することができ、10°Cの変動があった場合、1.5ビットの情報を提供することができることを示す。10億の異なる構成要素を識別するには、1018=260の構成要素を識別するのに十分なビット数が必要になる。許容される温度の変動により異なるが、これら60ビットの情報を入手するには全部で40~90のチャレンジが必要になる。ここに示した数字は、考慮の対象のPUF回路により変化する。回路のレイアウトを適切に設計することにより、各チャレンジからより多くのビットを抽出可能なPUFを設計することができる。FPGAを使用して図3のPUF回路101を実施する他の実験を行った。この実験の場合、2つ以上のFPGA間の遅延を比較した。各FPGAは、全く同じロジック回路を有し、PUF回路を、FPGA内の全く同じ位置で実施した。FPGAは、同じリソグラフィマスクにより製造された集積回路チップであると見なすことができる。ある実験では、各FPGAは、図3の回路101のような自励発振ループを8個備えていた。各ループは、32個のバッファ短い遅延で入力をその出力にコピーするロジックゲートと1つのインバータを含む。ループの周波数は、ある期間通常は、外部の50MHzのオシレータの220サイクルである内に発生した発振の回数を測定することにより決定した。ループの周期は約60nsであった。実験結果の以下の説明においては、標準偏差を百万分の1ppm単位で表す。周波数f0の周辺のnppmの偏差はnf0/106の偏差に対応する。図38を参照すると、グラフ472は、異なるFPGA上の4つのPUF回路の測定値のヒストグラムを示す。水平軸は任意の単位による遅延を表す。垂直軸は確率の密度を示す。ヒストグラムは、4つの異なるFPGAに対する測定誤差とFPGA間変動との間の関係を示す。各ピークは異なるFPGAを示す。ピークの幅は測定誤差を示す。測定は補償なしで行った。図39を参照すると、グラフ474は、異なるFPGA上の4つの補償PUFの測定値のヒストグラムを示す。水平軸は補償された測定値を示し、各データ点は2つの測定値の比を表す。垂直軸は確率の密度を示す。ヒストグラムは、4つの異なるFPGAに対する測定誤差とFPGA間変動との間の関係を示す。5000ppm~30000ppmの補償測定範囲を有するFPGA間遅延の標準偏差は、測定のために使用された一組のループに依存する。ヒストグラム472及び474の4つのピークは、FPGA間の変動が測定誤差よりも大きいことを示す。このことは、同じ測定誤差であるにも拘わらず、異なるFPGA間で識別することができることを示す。図40を参照すると、グラフ476は、オン又はオフしたFPGA上に他のループを有する発振ループの測定値を表す2つのヒストグラムを示す。水平軸は任意の単位での時間の測定値を示す。垂直軸は確率の密度を示す。他のループの影響約10ppmである2つのピーク間の距離で示すは、測定誤差ピークの幅で示すより小さい。それ故、あるループから他のループへの干渉は、2つのループが近接する周波数で発振していない限り、チップの識別を妨害しない。図41を参照すると、グラフ478は、それぞれが、異なる供給電力電圧に対する発振周波数の測定値を表す2つのヒストグラムである。水平軸はボルト単位の供給電力を表す。垂直軸は補償された遅延を表す。FPGAの2.5Vの動作点の周囲における電圧による補償測定値の変動は、約3000ppm/Vである。実際には、外部の供給電力変動は、1未満に維持することができ、この変動は1×2.5V×3000ppm/V=75ppmに対応する。それ故、供給電圧を許容範囲内に維持するには、市販の電圧調整器で十分である。この実験の場合、補償測定値は、約2.7Vの極値を有する。FPGAを定格電圧の2.5Vではなく2.7Vで動作することにより、測定の確実性を更に改善することができる。図42を参照すると、グラフ480は、周囲温度が25°Cから50°Cに変動した場合の1/2秒のサンプリング間隔での周波数測定値対時間の関係を示す。2つのFPGAの同じ時間の温度変化は同じではなかった。水平軸は時間100ms単位を表す。垂直軸は遅延を表す。周波数変動は、測定値を補償しない場合、約50000ppmである。図43を参照すると、グラフ482は、測定値を補償した場合には、周波数変動が100ppmに低減することを示す。水平軸は時間100ms単位を表す。垂直軸は補償測定値を表す。図44を参照すると、グラフ484は、図42の測定値のヒストグラムを表す。水平軸は遅延を表す。垂直軸は確率の密度を表す。図45を参照すると、グラフ486は、図43の測定値のヒストグラムである。水平軸は補償遅延測定値を表す。垂直軸は確率の密度を表す。グラフ482及び486は、25°Cの温度変動があっても、2つのFPGAを補償測定値で識別することができることを示す。図46及び図47を参照すると、12段のデマルチプレクサ486を備えたデマルチプレクサ回路484を含む2つのPUF回路上で実験を行った。各デマルチプレクサ486は、入力488上の信号を2つの出力490のうちの一方に切り替える。図48及び図49を参照すると、グラフ492及び494は、2つの異なるFPGA上のデマルチプレクサ回路484に対する補償経路遅延測定値対チャレンジの関係を示す。各グラフにおいては、水平軸はチャレンジ数を表し、垂直軸は補償測定値を表す。これらのグラフは、チャレンジについてのレスポンスの依存性を示す。これらのグラフは、チャレンジとレスポンスとの間の関係において数々のパターンを示す。このパターンは、2つのFPGAに共通のものであり、遅延回路の任意の段における経路間の大きな差によるものである。2つのFPGA間の差をチェックするためには、2つのグラフ間の小さな差をチェックする必要があるすなわち、50の変動をカバーするグラフ上の1の変動を探す必要がある。これらの差は、2つのチップのグラフ間の模様に現れる。[物理的に隠蔽された鍵]図50Aを参照すると、CPUFチップ256の一例は、チップに記憶された一定値を使用して、チップ又はチップの計算結果を認証可能にする秘密又は鍵を生成する。チップ256は、機能モジュール52、PUF回路100及び制御モジュール54を含む。チップ256は、I/Oポート257を介して機能回路に結果を計算するように命令する、ユーザが送ったプログラムを受信する。チップ256は、更に、チップ256の製造後にメモリに書き込まれる2つの定数、すなわち定数A及び定数Bを記憶するEEPROM444を含む。制御モジュール54は、マルチプレクサ442を制御して2つの数値のうちの一方を選択し、選択された数値をプリチャレンジとして使用してチャレンジを生成する。そのチャレンジはPUF回路100に送られて、第1の秘密が生成される。制御モジュール54は、第1の秘密を使用して、機能モジュール52からの計算結果を暗号化し、署名して、半暗号化及び署名されたメッセージを生成する。メッセージに署名することは、メッセージに対するMACを生成することを意味する。次に、制御モジュール54は、マルチプレクサ442を制御して2つの数値のうちの他方を選択し、選択された数値を使用してPUF回路100に第2の秘密を生成させる。制御モジュール54は、第2の秘密を使用して、半分暗号化し署名されたメッセージを暗号化し署名して、完全に暗号化し署名されたメッセージを生成する。完全に暗号化し署名されたメッセージは、次に、チップ256のユーザに出力される。チップ256は、PUF回路100内の遅延ラインの配線が制御モジュール54及びPUF回路100の出力をカバーするように設計される。攻撃者は、重ね合わせ配線を通り抜けない限りはPUF回路100の出力を測定することはできない。配線を通り抜けると、PUF回路100の物理特性が変化する。攻撃者が第1の秘密を測定することができたとしても、第2の秘密を入手することはできない。その理由は、第1の秘密を測定した時に、PUF回路がすでに修正されているからである。攻撃者は、両方の秘密を入手して、最終メッセージを解読又は不正使用することはできない。図50Bを参照すると、CPUFチップ700は、ROM704に記憶された内容を解読するために使用されるレスポンスを生成するPUF回路100を含む。ROM704の内容は、kビットの鍵Kを用いて暗号化される。PUF回路100は、チップ700に記憶されたチャレンジ702を受信し、ライン706上にkビットレスポンスを出力するように配線される。ライン706上のレスポンスは、排他的OR演算によりヒューズ708の内容と結合されて、ライン714上に鍵Kが生成される。ヒューズは、溶断しているか否かにより、0又は1を表す。解読装置712は、鍵Kを受信し、ROM704の内容を解読する。ROM704の内容は、例えば、プログラムであってもよい。マイクロコントローラ716は、解読された内容に従って計算を行う。多数のチップ700が共通の設計に基づいて製造される。これらのチップの製造コストを低減するために、各チップ700に対して同じROM704が使用されるので、すべてのチップに対する鍵Kは同じである。PUF回路100からのレスポンスは各チップに対して異なっているが、各チップに対するヒューズビットを適当に設定することにより、ライン714を介して解読装置712に送られる鍵を、ROM704の内容を解読するのに必要な同じ鍵に設定することができる。チップ製造の一例として、製造業者がチップの試験を行っている間にヒューズビットが設定される。初期化回路718は、ライン720を介して製造業者から鍵Kを受け取り、ライン722を介してPUF回路100からレスポンスを受け取る。初期化回路718は、適切な鍵Kを生成するのに必要なヒューズビットを計算し、それに従ってヒューズ708を溶断する。この方法により、PUF回路100からのレスポンスは、チップ700から決して出力されない。チップ700のコピーを作ることはできない。攻撃者はヒューズの状態を知ることができても、PUF回路100のレスポンスを知ることはできない。それ故、Kの値は依然として秘密のままである。[同期ロジック回路を使用するPUF]PUF回路は、クロック同期回路により実施して、クロックサイクルの周期が異なる場合に、入力に応じた回路の出力が異なるようにしてもよい。クロック同期回路を有する一組の集積回路チップが、一組のリソグラフィマスクにより製造される場合には、異なるダイ、ウェハ及び処理による製造中の変動により、各チップの遅延特性は一意なものとなる。クロック同期回路は、あるタイミング制約に適合するという仮定に基づいて設計される。構成要素及びワイヤの遅延は、最悪の動作に対して特徴づけられ、クロック周期は、レジスタの保持時間及びセットアップ時間の制約を考慮に入れて、すべてのレジスタ間の経路上の最悪の遅延より長く選択される。クロック周期が十分長い場合には、遅延特性が変動しても、異なるチップは同じ組合せ結合ロジック機能を有する。クロック同期回路を駆動するクロック信号の周期を故意に短くしてタイミング制約を満足しないようにすることにより、全く同じ機能を有する異なるチップは異なる動作をする。その理由は、その遅延特性が異なるからである。任意のチップを識別するために、入力刺激のシーケンスがチップに送られる。入力刺激が、特定のワイヤ及びゲートを刺激するようにクロック周期が選択される。チップの出力レスポンスは、特定の時点でサンプリングされる。入力刺激がチップ内の多数の経路を必ず働かせるようにし、サンプリング時間を適当に選択することにより、出力レスポンスは、チップ内の多数のゲート及びワイヤの遅延に依存するようになる。チップの入力刺激及び関連レスポンスは、チップの秘密の署名になる。チップ内の経路の数は、チップ内の入力又はゲートの数が増大するにつれて、指数的に増大する。入力刺激が分かれば、ゲートのある部分の遅延により、チップの出力レスポンスが決まる。指数的な数の入力刺激が存在するので、どの刺激が使用されたのかを推定して、署名を生成することは非常に困難である。図51を参照すると、PUF回路450は、レジスタ453により途切れているフィードバックループを含む組合せロジック回路452により表すことができる。回路452は、ライン454上の入力ビットベクトルを、ライン456上の出力ビットベクトルにマッピングする。マッピングは、ライン458上のクロック信号の周期に依存する。クロック信号の周期を変化させることにより、同じ入力ビットベクトルが、回路452内の異なるワイヤ及び構成要素を刺激して予測できない方法で異なる出力ビットベクトルを生成する。予測できないのは、製造プロセス中の変動により回路内に変動が起こるからである。また、各ゲート、ワイヤ又は経路の遅延は、近くのワイヤ上の遷移の複雑な関数であり、キャパシタンスの値は入力刺激により放出及び充填される。PUF回路450を使用するために、ライン454上の入力刺激及びライン458上のクロック信号の周期が、クロック信号の変動がライン456上に異なる出力を生成するように選択される。ライン454上の入力は、nビット幅のビットベクトルであり、ライン456上の出力は、mビット幅のビットベクトルであると仮定する。ライン454上の入力信号は、入力遷移のシーケンスであるすなわち、低い方から高い方への、高い方から低い方へのシーケンスである。例えば、ライン454が3ビット幅である場合には、3つの遷移のシーケンスの一例は、<1,0,1>→<0,0,0>→<1,1,0>である。入力遷移のシーケンスの数は、遷移の数において指数的であり、入力遷移の各シーケンスは、異なるクロック周期に対応することができる。異なる入力刺激及びレスポンスは、PUF回路450の秘密署名として使用される。[秘密の署名]通常、秘密の署名は、一組の署名{S}と見なすことができる。ここで、各署名sj∈Sは、<Vij,clock_periodij,Oij>、1≦i≦Kjを含む。Vji=vi1j,...,viKjjは回路の入力のシーケンスである、ここで、各viKjは回路452のn個の入力に供給されるnビットベクトルである。{Oij}は、この回路の出力レスポンスのシーケンスであり、mビットの出力において生成されたKjビットベクトルのベクトルである。clock_periodijは、回路がクロックで動作するクロック周期である。{Vij,clock_periodij}は、入力刺激と呼ばれ、{Oij}は回路レスポンスと呼ばれる。{Oij}を決定するために、{Vij}が、{clock_periodij}をクロック周期として使用する回路に供給され、ライン456上の回路452の出力が測定される。入力刺激及び回路レスポンスは、機密保護記憶箇所に記憶され、チップ450のシリアル番号により索引が付けられる。fooであるべきチップを、認証機関AAにより認証する必要がある場合には、AAは、チップfooのシリアル番号で索引が付けられている一組の署名{S}から署名sjを選択する。AAは、入力刺激{Vij,clock_periodij}を使用してチップを刺激し、チップからのレスポンスを測定する。測定されたレスポンスが{Oij}とは異なる場合には、チップはfooではない。レスポンスが一致した場合には、AAは、異なる署名sjを使用してこのプロセスを反復して行う。2つの異なるチップに対して{Oij}が同じである確率は、2つのチップが同じレスポンスを有するために満足させなければならない遅延関係の数に依存する。例えば、経路遅延は、出力がグリッチ、すなわち、0から1へ変化し0へ戻る変化、又はその逆を起こすのを防止するために、クロック周期より短くなければならない場合もあるし、又はある長さだけクロック周期より長くなければならない場合もある。別の例としては、異なるチップ間の相対的関係を維持するための回路の2つのサブ経路の場合、その遅延は、5以上も異なっている場合がある。一例を挙げて説明すると、Kj=2と仮定し、<vi1,vi2>入力ペアが、1つの遷移を、チップの1本の経路を介して出力に伝搬させると仮定する。経路の遅延がDである場合には、D≦clock_period2又はD>clock_period2であるかにより、レスポンスは異なるものになる。AAが、Sからの署名のペア、チップの秘密の署名fooを使用すると仮定し、また署名のペアが{{{wa,wb},D-ε,{oc,od}}、{{wa,wb},Dε,{oc’,od’}}}であると仮定する。第1の署名の入力刺激の場合には、チップ内の経路に沿った遷移は、時間内に起こらないのでクロック同期は行われない。第2の署名の入力刺激の場合には、遷移は時間内に起こる。この場合、出力レスポンスは、2つの刺激がチップfooに加えられた場合には、2つの刺激に対して異なるものになる。攻撃者が、偽のチップのバーを生成することを所望する場合には、その経路の遅延は、両方の刺激に対してfooと同じ出力レスポンスを生成するために、間隔D-ε,Dε内に存在していなければならない。εが小さくなるにつれて、このことを達成できる確率は低くなる。ペアの署名に対して同じ出力レスポンスを生成する2つのチップの確率をpiと仮定する。pi<1であることは明らかである。T個の異なる経路についての署名のように、T組の署名が存在する場合には、偽物が同じ署名を有する確率は、経路の遅延が独立していると仮定した場合、Tが増大するにつれてpiT→0になる。経路がどのデバイス又はワイヤを共有していない場合にも、このことは当てはまる。複数の経路に即感性を与える秘密の署名の入力刺激を使用することにより、攻撃者への計算上のバリヤが強化される。出力において1つの遷移が起こる場合には、遅延によりその遷移が発生する時間の影響を受けるデバイス及びワイヤの数は増える。このことは、ある署名に対して2つのチップが同じレスポンスを有する確率を低減させることができる。同じ組のリソグラフィマスクにより製造された一組のチップの各ゲート及びワイヤの遅延は、平均1ns及び標準偏差0.05nsを有する標準分布に従うものと仮定する。1つの経路が100個のゲート及びワイヤのシーケンスである場合には、経路遅延は平均100ns及び標準偏差0.5nsを有する標準分布になる。任意のチップ内の経路が平均100nsと同じ遅延を有するものと仮定する。その場合、別のICが、100個のうちの0.5ns以内の経路遅延を有する確率は0.68である。測定精度が0.5nsであると仮定した場合、これら2つのチップが1つの刺激に対して同じ出力を生成する確率は0.68である。64個の異なる組の経路に即感性を与えるために64の入力刺激を加えた場合には、64個の刺激に対する出力がすべて同じになる確率は10-10未満である。それ故、元のチップが平均経路遅延を有する場合には、同じリソグラフィマスクにより製造された百万個のチップうちの1個以上が同じ署名を有する確率は、約106×10-10=10-4である。温度の変化を補償するために、図20のチップ450に対して署名が生成された場合には、異なる温度に対して異なる署名が生成される。認証中、特定の温度における特定のチップの署名が使用される。攻撃者のタスクをより困難なものにするために、導電性の粒子をチップのパッケージング内に散布して、使用されるパッケージでゲート及びワイヤの遅延の依存性が小さくなるようにする例えば、/-5ことができる。図52を参照すると、グリッチゼネレータ460を追加して、例えば、ライン462からライン464への経路が単一イベントに即感性を有しないようにすることができる。回路内に何らかの遅延が発生した場合に、入力ベクトルペアが存在する場合には、経路Pは単一イベントを即感性を有することができ、イベントは経路Pに沿って伝搬する。そうすることにより、攻撃者が、入力刺激を加え、出力経路の遅延を測定することにより式のアフィンシステムを入手して、式を解いて、ゲート及びワイヤの遅延のモデルを生成することが防止される。[例示回路]図53を参照すると、回路466は、関数を実行する。回路466は、クロック同期回路の一部であり、回路466の出力は、ライン469及び471上に入力信号a及びbがそれぞれ現れた後、1クロックサイクル経過後に、他の回路により使用されると仮定する。クロックサイクルの長さにより、回路466の出力は異なる。インバータを含むゲートの遅延はすべて1であり、ワイヤの遅延は0であると仮定する。回路がclock_period≧3でクロック同期している場合には、回路466は、すべてのXに対してfXのように応答する。Y=<a=0,b=0>と仮定する。X=<a=0,b=1>をYの後に適用し、クロック周期がclock_period≧2である場合には、回路466の出力は1であり、fXと同じである。しかし、回路466が1≦clock_period<2のようなある周期とクロック同期している場合には、出力は0である。クロック周期を1.95になるように選択した場合であって、一番上のANDゲート468又はORゲート470の遅延が0.95未満である場合には、同じリソグラフィマスクを用いて製造した異なる回路は、上記のY,Xペアのシーケンスに対する出力として依然として1を生成する。Y=<a=0,b=0>が適用され、その後、X=<a=0,b=1>が適用される場合には、fX=1である。clock_period≧3である場合には、回路466の出力は1であり、2≦clock_period<3である場合には出力は0であり、clock_period<2である場合には、出力は1である。[入力刺激とクロック周期の選択]任意のPUF回路に対してどの刺激及びクロック周期を使用するのかを決定するために、チップのワイヤ及びゲートの遅延とほぼ同じ遅延を有するPUF回路のモデルを使用することができる。このタイミング近似モデルをAfと呼ぶこととする。分析はモデルAf上で行うことができ、出力におけるどのような波形が、任意の入力刺激、すなわち、ベクトルペアに似ているのかを発見することができる。この分析は、チップのサイズに応じて線形的に時間がかかる。出力波形の特定の遷移を選択することができる。2つのクロック周期、すなわち、遷移前のε及び遷移後のεが選択される。遷移は、遷移の両側でεより長い時間の間、出力が安定するように選択される。次に、PUF回路が検証され、PUF回路が選択された入力刺激及びクロック周期に対して、Afと同じレスポンスを生成するかどうか確認される。レスポンスが同じである場合、εをより小さくすることができ、検証が反復して行われる。レスポンスが異なる場合、クロック周期又は入力刺激が変更され、検証が反復して行われる。2つのチップが署名の入力刺激に対して同じレスポンスを生成する確率が非常に小さくなるように、一組の署名は、十分長いものでなければならない。10-10の確率の場合には、64個の刺激が必要になる。署名の記憶要件は、ΣjN×Kjビットである各署名の入力刺激のサイズにより主として決まる。ここで、Nはチップへの入力数であり、Kjはj番目の署名の入力刺激の長さである。入力数Nはパッケージにより制限される。通常、N≦500及びKj≧2である。PUFチップは、既知の状態に設定するグローバルリセットを有することができる。そうでない場合には、チップを既知の状態にする転送シーケンスを、第1の署名を適用する前に適用することができる。Kj=2と仮定した場合には、1回の認証は、一組の署名を記憶するために約100キロバイトを必要とする。[他の実施形態]本発明の多数の例について説明した。しかし、本発明の技術思想及び範囲から逸脱することなく種々の改良を行うことができることを理解することができるだろう。例えば、図13Aの場合には、ランダムハッシュモジュールh3192の代わりに距離dエンコーダを使用することができる。このようなエンコーダは、異なる素子の画像が、少なくともd個のビットについて常に異なるようにマッピングを行う。このことは、攻撃者がPUF回路188への入力のうちの少なくともd個のビットを直接選択することができないことを意味する。図14の場合には、機能モジュール52及び制御モジュール54を1つのマイクロプロセッサにより実施することができる。このマイクロプロセッサは、受信したソフトウェアコードに基づいて、データの計算及び処理を行う。図50の場合には、1つの定数例えば、チップのシリアル番号を使用して、ハッシュ関数を通過させて、制御モジュール54により使用されるプリチャレンジとなり、PUF回路100へのチャレンジを生成する簡単なCPUFチップを構成することができる。集積回路102は、多くの信号の遅延を同時に測定可能な2つ以上の自励発振ループ回路114を含むことができる。遅延回路116の代わりに、遅延がチャレンジの複雑な関数である、他のタイプの回路を使用することができる。任意のアルゴリズムを実行する必要がない、CPUFの一実施態様の場合には、プログラムの動作をハードウェアで実施することができる。機能回路及びPUFを、同じチップ上に設置する必要はない。機能回路及びPUFは、マルチチップモジュール内の異なる半導体チップ上に設けることができる。PUF回路の入力及び出力は、デジタル化した値ではなく、アナログ値であってもよい。測定可能な物理特性は、経路遅延以外の特性であってもよい。例えば、図54ついて説明すると、PUFデバイス500は、集積回路501と、発光ダイオードLEDアレイ502と、電荷結合素子CCDアレイ504とを含む。これらすべては基板510上に形成される。エポキシ506は、LEDアレイ502及びCCDアレイ504を囲んでいる。エポキシ506は反射層508によりコーティングされ、そのため、アレイ502のLEDが放射する光は、反射層508により反射され、CCDアレイ504により検出される。光がエポキシ506を通過する際に、エポキシ506に対して一意のスペックルパターンがCCDアレイ504により検出される。LEDアレイ502内のLEDの異なる組合せが発光した場合、CCDアレイ504は、異なるスペックルパターンを検出する。数個のLEDのみが一度に発光すれば、スペックルパターンのコントラストを維持することができる。数個のPUFデバイスを製造する場合には、エポキシ層は、各デバイスに対して若干異なる光学的透過特性を有する。それ故、LEDの同じ組合せは、CCDアレイにおいて異なるデバイスに対して異なるスペックルパターンを生成する。LEDの組合せを決定する制御信号は、チャレンジと見なすことができ、CCDアレイ504が検出するパターンはレスポンスと見なすことができる。このようなチャレンジ-レスポンスペアを使用して、PUFデバイス500のIDを認証することができる。エポキシを使用した場合の1つの利点は、エポキシが、かなりの広い温度範囲で安定していることである。それ故、環境の変動による影響を補償するための回路をより簡単にすることができる。図3のPUF回路101の発振信号ループ122の発振周波数を測定するための別の方法は、位相ロックループPLL回路を使用する方法である。図55を参照すると、PUF回路1000は、オシレータループ122及びオシレータループの発振周波数を測定するために使用されるPLL回路1002を含む。オシレータループ122は、入力又はチャレンジを受信する遅延回路111を含む。PLL回路1002は、位相検出器1004と、チャージポンプ1006と、ループフィルタ1008と、電圧制御発振器VCO1010と、分周器1012と、カウンタ1014とを含む。分周器1012は、信号ライン1016上に出力を生成し、この出力は位相検出器1014に送られる。ライン1016上の信号を発振ループ122からのライン134上の信号と比較することにより、PLL回路1002は、ライン1016及び134上の信号が同じ周波数を有する状態になる。カウンタ1014は、周波数を決定し、ライン1018上に出力を生成し、この出力はPUF回路1000の出力又はレスポンスとなる。図56を参照すると、PUF回路1010は、遅延回路1012及び遅延回路1014を含む。各遅延回路1012及び1014は、遅延回路内で2128個の信号経路のうちの1つを選択する128ビットチャレンジを受信する。カウント信号の遷移立上りエッジ又は立下りエッジは、両方の遅延回路1012及び1014に送られる。立上りエッジは、遅延回路1012及び1014内の信号経路を通過し、それぞれ、ライン1016及び1018において遅延回路から出る。ライン1016及び1018上の信号は、仲裁装置1020に送られ、この仲裁装置は、ライン1016上の遷移がライン1018上の遷移より早く到着した場合には1を生成し、ライン1018上の遷移が早く到着した場合には0を生成する。発振周波数を測定しなくても、1ビットデジタルレスポンスを入手することができる。この回路は、直接的に補償値を生成する。その理由は、温度の変動が遅延回路1012及び1014に同じ影響を与えるからである。遅延回路1012及び1014内の遷移は、両方ともスピードアップ又はスローダウンし、出力値は変化させない。仲裁装置は、2つの入力をデータ入力及びクロック入力とするフリップフロップにより形成可能な簡単な回路である。データがクロックより前に到着した場合には、フリップフロップは1を生成し、そうでない場合には0を生成する。この場合、ライン1016上の信号は、データ入力として使用され、ライン1018上の信号はクロック入力として使用される。64個の128ビットチャレンジがPUF回路1010を介して送られ、64ビットレスポンスが生成される。図14の場合には、機能モジュール52及び制御モジュール54は、マイクロプロセッサ51上で稼働するソフトウェアサブルーチンとして実行した。他の例の場合には、機能モジュール52及び制御モジュール54は、専用のハードウェア回路により実施することができる。図16、図17、図19~図22、図25及び図27~図29の場合には、PUF回路100の代わりに改良形PUF回路186図13Aを使用することができる。図50の場合には、制御回路54及び機能回路52の代わりに、プログラムコードを受信し、制御機能及び計算機能を行うマイクロコントローラを使用することができる。従って、他の実施形態は、特許請求の範囲内に含まれる。"