(57)【要約】【課題】チップの識別表示の偽造を防止する。【解決手段】デバイスのグループは、共通の設計に基づいて製造され、各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有し、各デバイスは、測定可能な特性を測定するための測定モジュールを有する。デバイスのグループのうちの１つのデバイスの認証は、デバイスの複数の測定可能な特性のうちの１つ以上を選択的に測定することにより、可能となる。【選択図】  図１４
2011123909.tif 000002
【特許請求の範囲】
【請求項１】
方法であって
共通の設計に基づいて製造されたデバイスのグループから第１のデバイスを提供することであって、各デバイスが、前記グループ内でそのデバイスに対して固有なものである複数の動特性を含む対応する複数の測定可能な特性を有し、各デバイスが、前記測定可能な特性を測定するための測定モデルを有する、前記第１のデバイスを提供すること、
前記デバイスの１つ以上の複数の測定可能な特性のうちの１つ以上の選択された一部を選択的に測定し、前記選択された一部の前記測定結果を、前記第１のデバイスについて選択された一部のために以前に選択的に測定され予め記憶された測定値と比較することにより前記第１のデバイスの認証を可能にすることを備え、
前記複数の測定可能な特性は、前記デバイス内の複数の信号経路の遅延特性を含む、方法。
【請求項２】
前記複数の信号経路は、回路構成要素の各組を通る複数の経路を含み、前記回路構成要素は、受動送信ライン、能動半導体素子、及び論理ゲートのうちの１つを含む、請求項１に記載の方法。
【請求項３】
前記複数の測定可能な特性の各々は、個々の物理特性の組によって決定され、前記１つ以上の測定可能な特性の選択を測定することは、選択情報に従って前記個々の物理特性の非線形の組合せを形成することを含む、請求項１に記載の方法。
【請求項４】
前記個々の物理特性は回路構成要素の特性を含み、前記複数の個々の物理特性を組合せることは、前記選択情報に従って選択された回路構成要素を通過する信号経路を形成することを含む、請求項３に記載の方法。
【請求項５】
認証を可能にすることが、前記第１のデバイスを登録することを含み、前記第１のデバイスを登録することが、
前記第１のデバイスに、選択情報を送信すること、
前記選択情報に基づいて前記複数の特性のうちの１つを選択的に測定することにより生成されたレスポンス情報を前記第１のデバイスからを受信すること、
前記第１のデバイスに関連する前記受信レスポンス情報及び前記選択情報を記憶することを含む、請求項１に記載の方法。
【請求項６】
受信したレスポンスを記憶することは、前記選択情報及びレスポンス情報を秘密にすることを含む、請求項５に記載の方法。
【請求項７】
前記第１のデバイスを認証することであって、前記第１のデバイスに前記選択情報を送信し、複数の特性のうちの１つを選択的に測定することにより生成されたレスポンス情報を受信すること、前記受信レスポンス情報を前記記憶したレスポンス情報と比較することを含む、前記第１のデバイスを認証することを更に備える請求項５に記載の方法。
【請求項８】
前記第１のデバイスを登録すること及び前記第１のデバイスを認証することの各々が、前記選択情報に基づいて前記複数の特性のうちの１つを選択的に測定することと、前記測定情報を生成することを含む、請求項７に記載の方法。
【請求項９】
前記デバイスのグループの各デバイスを登録することを更に備え、前記デバイスのグループの各デバイスを登録することが、前記各デバイスに対して
前記デバイスに、前記測定可能な特性の一部を識別する選択情報を送信すること、
前記デバイスから、前記選択情報において識別された測定可能な特性の前記一部の各々を選択的に測定することにより生成されたレスポンス情報を受信すること、
前記第１のデバイスに関連する前記受信レスポンス情報及び前記選択情報を記憶することを含む、請求項１に記載の方法。
【請求項１０】
前記各デバイスに対する前記測定可能な特性の異なる一部を決定することを更に備え、
前記決定することが、好ましくは前記一部の各々の構成をランダムに選択することを含む、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路の認証に関する。
【背景技術】
【０００２】
同じリソグラフィ・マスクにより製造された集積回路は、チップ内に製造業者が、チップ内に埋め込まれるシリアル番号等の一意の識別子を埋め込むことにより、一意に識別することができる。一意の識別子を生成する別の例は、チップ内にトランジスタのアレイを組み込み、アレイ内のトランジスタのしきい値電圧を測定し、識別子として測定値を出力する方法である。同じリソグラフィ・マスクで製造した任意の数のチップの場合、アレイ内のトランジスタの数が十分多い時には、アレイから生成した識別子は一意のものになる。チップ製造の際のプロセスの変動により、そのしきい値電圧が全く同じであるトランジスタのアレイは２つと存在しない。
【０００３】
チップ内に秘密裏に埋め込まれた一意の識別子は、チップを認証するために使用することができる。認証とは、ユーザにそのチップが偽物でないことを証明すること、又は、ある処理結果がそのチップにより処理されたもので、他のチップにより処理されたものでないことを証明することを意味する。一意の識別子の一例としては、スマートカード内に埋め込まれている秘密鍵がある。カードリーダは、スマートカードから秘密鍵を読み出し、それをデータベース内に既に記憶されている秘密鍵と比較する。一致した場合には、スマートカードは認証され、カードリーダは、スマートカードとのトランザクションを行うことができる。秘密鍵は、秘密を保持する必要があるので、攻撃者は、鍵をコピーし、識別表示を偽造することはできない。
【０００４】
攻撃者は、例えば、集積回路のパッケージ及び層を除去するというような侵略的な方法により、又は、例えば、集積回路チップをシミュレートし、電力レール及びアース・レールを観察することにより鍵を決定しようとする微分電力分析のような非侵略的方法により、チップを厳密に調べて秘密鍵を発見しようとする。チップへの物理的侵入を防止する目的で、チップのパッケージング内に感知回路を内蔵させて、侵入を検出し、侵入を検出した場合、感知情報を消去することができる。
【発明の概要】
【課題を解決するための手段】
【０００５】
正確にコピーすることが困難な測定可能な物理特性の多数の組を含む集積回路チップを設計し、物理特性の一部を選択的に測定し、その測定結果を予め記憶された測定値と比較することにより、チップを認証することができる。一致した場合には、チップが認証される。測定可能な物理特性の数が十分多くなるようにチップを設計して、攻撃者が、すべての物理特性を１つ残らず測定し、測定結果を記憶することを実行不可能にすることができる。また、攻撃者が、物理特性の一部を測定して、チップのモデルを生成することを困難にするようにチップを構成することができる。攻撃者は、物理特性のどの一部を選択し、測定するのかを事前に知ることができないので、攻撃者は、このチャレンジに応じて適切な測定値を生成して、チップの識別表示を偽造することはできない。チップの識別表示は、攻撃者がチップを所有した場合のみ入手することができる。チップの認証のための１つ又は複数の秘密鍵をチップ自身から取り出すことはできない。
【０００６】
ある態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから第１のデバイスを提供することを含む方法を特徴とする。この場合、各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有し、また各デバイスは、測定可能な特性を測定するための測定モジュールを有する。上記方法は、更に、デバイスの複数の測定可能な特性のうちの１つ以上を選択的に測定することにより第１のデバイスの認証を可能にすることを含む。
【０００７】
本発明の実施形態は、下記の機能のうちの１つ以上を含むことができる。第１のデバイスの認証を可能にすることは、第１のデバイスに選択情報を送信すること、第１のデバイスから、選択情報に基づいて複数の特性のうちの１つを選択的に測定することにより生成されたレスポンス情報を受信すること、第１のデバイスに関連する受信したレスポンス情報及び選択情報を記憶することにより第１のデバイスを登録することを含む。第１のデバイスの認証を可能にすることは、更に、第１のデバイスに選択情報を送信するステップと、特性のうちの１つを選択的に測定することにより生成されたレスポンス情報を受信するステップと、受信したレスポンス情報を記憶されたレスポンス情報と比較するステップとを反復することにより第１のデバイスを認証することを含む。
【０００８】
第１のデバイスの登録及び第１のデバイスの認証の各々は、選択情報に基づいて複数の特性のうちの１つを選択的に測定することと、測定情報を生成することを含む。この方法は、更に、デバイスのグループの各デバイスを登録することを含み、各デバイスを登録することは、各デバイスに対して、測定可能な特性の一部を識別する選択情報をデバイスに送信すること、選択情報で識別された測定可能な特性の一部の各々を選択的に測定することにより生成されたレスポンス情報をデバイスから受信すること、第１のデバイスに関連する受信したレスポンス情報及び選択情報を記憶することを含む。
【０００９】
この方法は、更に、各デバイスに対する測定可能な特性の異なる一部を決定することを含む。各デバイスに対する異なる一部を決定することは、一部の各々の構成をランダムに選択することを含む。この方法は、更に、第１のデバイスを認証することを含み、第１のデバイスを認証することは、第１のデバイスに、第１のデバイスに対する測定可能な特性の一部のうちの１つを識別する選択情報を送信すること、第１のデバイスから測定可能な特性の一部のうちの識別された１つを選択的に測定することにより生成されたレスポンス情報を受信すること、受信したレスポンス情報を第１のデバイスの登録中に受信した記憶されたレスポンス情報と比較することを含む。
【００１０】
この方法は、更に、共通の設計によるデバイスのグループ内でデバイスを製造することを含む。デバイスを製造することは、リソグラフィ・マスクの共通のセットによりデバイスのグループを製造することを含む。デバイスの対応する複数の測定可能な特性は、デバイスの製造中に決定された特性を含む。デバイスの製造中に決定された特性は、製造プロセスの非制御特性を含む。デバイスのグループから第１のデバイスを提供することは、第１の集積回路を提供することを含む。
【００１１】
対応する複数の測定可能な特性は、集積回路内の複数の信号経路の遅延特性を含む。複数の信号経路は、回路構成要素の各組を通る複数の経路を含む。回路構成要素は、受動送信ラインを含む。回路構成要素は、能動半導体素子を含む。能動半導体素子は、論理ゲートを含む。対応する複数の測定可能な特性は、光学的特性を含む。光学的特性は反射特性を含む。反射特性はスペックル・パターンを含む。
【００１２】
各デバイスの測定可能な特性の数は、２、４、１６、２５６、２１６、２３２、２６４又は２１２８より大きくてもよい。各デバイスは、複数の測定可能な特性を有する機能構成要素及び測定可能な構成要素を含む。この方法は、更に、パッケージ内にデバイスをパッケージすることを含む。機能構成要素及び測定可能な構成要素は、複数の測定可能な特性を変化することなしに、機能的構成要素に物理的にアクセスできないようにパッケージ内に配置される。
【００１３】
この方法は、更に、識別子を含む選択情報をコード化する第１のデバイスにおいて選択信号を受信すること、識別子により複数の測定可能な特性のうちの１つを選択することを含む。測定可能な特性のうちの１つを選択することは、識別子を引数として使用する一方向関数を適用することを含む。一方向関数の適用では、更に、引数として第２の識別子が使用される。第２の識別子はデバイスの識別表示を含む。デバイスの識別表示は、デバイス内に記憶されたシリアル番号を含む。第２の識別子は個人特性の識別表示を含む。
【００１４】
この方法は、更に、選択された特性を測定することを含む。選択された特性は選択された信号経路の遅延特性を含む。遅延特性を測定することは、選択された遅延経路により発振信号を生成することを含む。遅延特性を測定することは、更に、発振信号の発振周波数に関連する数量を決定することを含む。発振周波数に関連する数量を決定することは、タイミング間隔中に発振回数をカウントすることを含む。発振周波数に関連する数量を決定することは、発振信号に位相ロック・ループを適用することを含む。選択された特性を測定することは、デバイスの環境の変化による選択された特性の測定値の変動を補償することを含む。
【００１５】
この方法は、更に、基準特性を測定すること、基準特性の測定値に対する選択された特性の測定値の比率を計算することを含む。この方法は、更に、選択された特性の測定値の誤差を修正することを含む。この方法は、更に、測定された特性によりレスポンス情報を決定すること、レスポンス情報をコード化する第１のデバイスからレスポンス信号を送信することを含む。レスポンス情報を決定することは、測定された特性を引数として使用する一方向関数を適用することを含む。この方法は、更に、デバイスが生成した結果をコード化する結果信号を供給することを含む。一方向関数の適用では、更に、結果から決定された引数が使用される。この方法は、更に、デバイス内のプロセッサ上で動作を実行するためのコードを受け入れることを含む。一方向関数の適用では、更に、コードから決定された引数が使用される。
【００１６】
この方法は、更に、デバイス内での実行のためのコマンドを受け入れることを含む。一方向関数の適用では、更に、コマンドから決定された引数が使用される。レスポンス信号を供給することは、デバイス内でコマンドが実行されたという肯定応答を供給することを含む。この方法は、更に、第２の識別子をコード化する第１のデバイスにおいて第２の選択信号を受け入れること、第２の識別子により選択された特性のうちの第２の特性を測定すること、特性のうちの第２の特性の測定値をコード化する結果信号を供給することを含む。一方向関数の適用では、更に、特性のうちの第２の特性の測定値から決定された引数が使用される。
【００１７】
この方法は、更に、識別子を含む選択情報をコード化する第１のデバイスにおいて選択信号を受信すること、識別子により複数の測定可能な特性のうちの第１の特性を選択すること、同様に、識別子により複数の測定可能な特性の中から第２の特性を選択することを含む。この方法は、更に、第１の選択された特性を測定して第１の測定値を生成すること、第２の選択された特性を測定して第２の測定値を生成すること、第１の測定値を第２の測定値と比較することを含む。この方法は、更に、第１の測定値と第２の測定値の比較により１ビット・レスポンスを生成することを含む。この方法は、更に、識別子を含む選択情報をコード化する選択信号を受信するステップと、識別子により複数の測定可能な特性のうちの第１の特性及び第２の特性を選択するステップと、測定可能な特性のうちの第１の特性及び第２の特性を測定して第１の測定値及び第２の測定値を生成するステップと、ｎ第１及び第２の測定値を比較してビット・レスポンスのうちの１つのビットを生成するステップとをｎ−１回反復することにより、ｎビット・レスポンスを生成することを含む。
【００１８】
この方法は、更に、第１の動作モードにおいて、第１の識別子をコード化する第１のデバイスにおいて第１の選択信号を受け入れること、第１の識別子を引数として使用する第１の一方向関数を適用すること、第１の一方向関数の結果により複数の特性のうちの１つを選択すること、選択された特性を測定すること、選択された特性及び測定された特性の識別子をコード化する第１のレスポンス信号を供給することを含む。第２の動作モードにおいて、第２の識別子をコード化する第１のデバイスにおいて第２の選択信号を受け入れること、第２の識別子により複数の特性のうちの１つを選択すること、選択された特性を測定すること、測定された特性を引数として使用する第２の一方向関数を適用すること、第２の一方向関数の適用の結果をコード化する第２のレスポンス信号を供給することを含む。第２の識別子は、第１の識別子を引数として使用する第１の一方向関数の適用結果と同じものである。
【００１９】
他の態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから第１のデバイスを提供することを含む方法を特徴とする。各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有し、測定可能な特性は、離散的値を有する。この方法は、更に、デバイスの複数の測定可能な特性のうちの１つ以上を選択的に測定することにより、第１のデバイスが認証を可能にすることを含む。対応する複数の測定可能な特性は、第１のデバイス内の複数の信号経路の遅延特性を含む。対応する複数の測定可能な特性は光学的特性を含む。
【００２０】
他の態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから第１のデバイスを提供することを含む方法を特徴とする。各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有する。各デバイスはプロセッサを有する。この方法は、更に、第１のデバイスの複数の測定可能な特性のうちの１つ以上を選択的に測定すること、第１のデバイスのプロセッサ上で動作を実行するためのコードを受け入れること、コードから決定された第１の引数を使用する一方向関数を適用することを含む。
【００２１】
本発明の実施形態は、下記の機能のうちの１つ以上を含むことができる。一方向関数の適用では、更に、測定された特性から決定された第２の引数が使用される。コードは、公開暗号鍵を含む。この方法は、更に、測定された特性からの値を暗号化するための公開暗号鍵を使用することにより、第２の引数を決定することを含む。コードは、測定可能な特性の一部を識別する選択情報を含む。複数の測定可能な特性のうちの１つ以上を選択的に測定することは、選択情報により識別された測定可能な特性の各一部を選択的に測定することを含む。一方向関数の適用では、更に、選択情報から決定された第２の引数が使用される。対応する複数の測定可能な特性は、第１のデバイス内の複数の信号経路の遅延特性を含む。
【００２２】
他の態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから第１のデバイスを提供することを含む方法を特徴とする。各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の電気的に測定可能な特性を有する。この方法は、更に、デバイスの複数の測定可能な特性のうちの１つ以上を選択的に測定することにより第１のデバイスが認証を可能にすることを含む。
【００２３】
本発明の実施形態は、下記の機能のうちの１つ以上を含むことができる。対応する複数の測定可能な特性は、第１のデバイス内の複数の信号経路の遅延特性を含む。
他の態様において、本発明は、共通の設計に基づいて製造されたデバイスのグループから選択されたデバイスを含む装置を特徴とする。各デバイスは、グループ内でそのデバイスに対して一意なものである対応する複数の測定可能な特性を有する。デバイスは、選択
された特性を測定する測定構成要素を含む。
【００２４】
本発明の実施形態は、下記の機能のうちの１つ以上を含むことができる。デバイスは集積回路を含む。集積回路は信号経路を含み、複数の測定可能な特性は信号経路の遅延特性を含む。集積回路は、一組の回路構成要素を備え、信号経路は回路構成要素の各組を通る経路を含む。デバイスは、更に、プロセッサを含む。プロセッサは一方向関数を実行する。デバイスは、発光構成要素のアレイ、光検出構成要素のアレイ、及び１つ以上の発光構成要素が発光した場合、光検出構成要素のアレイにより検出することができるスペックル・パターンを形成する光透過媒体を含む。この装置は、更に、識別子及びデバイスに関連するレスポンスを記憶するための記憶デバイスを含む。各識別子は１つ以上の測定可能な特性を識別し、各レスポンスは、１つ以上の識別子に対応し、かつ、１つ以上の識別子により識別された測定可能な特性の１つ以上の測定値から得られる。
【００２５】
本発明の説明、図面及び特許請求の範囲から、本発明の他の特徴及び利点を理解することができるだろう。
複数の図面の同一の参照番号は同一の構成を示す。
【図面の簡単な説明】
【００２６】
【図１】物理的ランダム機能（ＰＵＦ）を実行するチップを示す図。
【図２】ＰＵＦ回路を使用してチップを認証するプロセスを示す図。
【図３】ＰＵＦ回路を示す図。
【図４】遅延回路を示す図。
【図５】図４の遅延回路で使用されるスイッチを示す図。
【図６】図４の遅延回路で使用されるスイッチを示す図。
【図７】タイミング図。
【図８Ａ】遅延回路を示す図。
【図８Ｂ】遅延回路を示す図。
【図９】補償ＰＵＦ回路を含むチップを示す図。
【図１０】補償ＰＵＦ回路を示す図。
【図１１】補償ＰＵＦ回路を示す図。
【図１２】エラー修正を含む改良形ＰＵＦ回路を示す図。
【図１３Ａ】制御ＰＵＦ（ＣＰＵＦ）回路を示す図。
【図１３Ｂ】ＣＰＵＦチップを示す図。
【図１４】ＣＰＵＦチップを示す図。
【図１５】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図１６】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図１７】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図１８】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図１９】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２０】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２１】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２２】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２３】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２４】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２５】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２６】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２７】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２８】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図２９】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図３０】制御アルゴリズム及び制御アルゴリズムに関連するエンティティ間の関係を示す図面。
【図３１】匿名導入のためのプログラムを示す図。
【図３２】スマートカード及びカードリーダを示す図。
【図３３】線図。
【図３４】線図。
【図３５】線図。
【図３６】自励発振ループを示す図。
【図３７】実験データを示すグラフ。
【図３８】実験データを示すグラフ。
【図３９】実験データを示すグラフ。
【図４０】実験データを示すグラフ。
【図４１】実験データを示すグラフ。
【図４２】実験データを示すグラフ。
【図４３】実験データを示すグラフ。
【図４４】実験データを示すグラフ。
【図４５】実験データを示すグラフ。
【図４６】実験の際に使用した遅延回路を示す図。
【図４７】実験の際に使用した遅延回路を示す図。
【図４８】実験データを示すグラフ。
【図４９】実験データを示すグラフ。
【図５０Ａ】ＰＵＦチップの略図。
【図５０Ｂ】ＰＵＦチップの略図。
【図５１】ＰＵＦ回路を示す図。
【図５２】ＰＵＦ回路を示す図。
【図５３】ＰＵＦ回路を示す図。
【図５４】ＰＵＦデバイスを示す図。
【図５５】発振周波数を測定するためにＰＬＬを使用するＰＵＦ回路を示す図。
【図５６】ＰＵＦ回路を示す図。
【発明を実施するための形態】
【００２７】
［ＩＣ化ＰＵＦ］
図１を参照すると、半導体集積回路（以下「ＩＣ」又は「チップ」と呼ぶ）５０は、機能モジュール５２と、物理的ランダム機能（同様に、物理的に未知の機能又は「ＰＵＦ」と呼ぶ）回路１００とを含む。チップ５０は、例えば、チップ用の一組のリソグラフィ・マスクにより、チップ設計に従って製造した特定のチップの一例である。
【００２８】
ＰＵＦ回路１００は、例えば、チップを製造するためのリソグラフィ・マスクに基づく、又はチップの非破壊物理的検査に基づくチップの設計に基づいて予測することが困難な方法で、入力を出力にマッピングする物理的ランダム機能（ＰＵＦ）の一実施形態である。ＰＵＦ回路による入力の出力へのマッピングは、必ずしも、ＰＵＦ回路の出力がすべての可能な出力の範囲間で均一に分配されるような、真に「ランダム」なものでなくてもよい。例えば、特定のＰＵＦ回路の製造により、ＰＵＦ回路により生成された出力を、特定の値を中心にして、より集中させることができる。機能モジュール５２は、例えば、入力ライン１０７上のデータを受信し、そのデータを処理し、そのデータの処理に基づいてメッセージ・ライン１０９上にメッセージを生成することにより、チップの所望の動作を実行する。
【００２９】
ＰＵＦ回路１００は、信号ライン１０６上の入力を受信し、ライン１０８上に出力を生成する。各（入力、出力）ペアは、チップ５０に対して特定のものであり、チップ５０に関連する物理構造の一部の特性に依存する。同じリソグラフィ・マスクにより製造した異なるチップは、一般的に、例えば、製造プロセス中の僅かな変動により若干異なる物理構造を有する。それ故、このような異なるチップは、一般的に、同じＰＵＦ入力を異なる出力にマッピングする。以下に更に詳細に説明するように、（入力、出力）ペアは、チップ５０を認証し識別するために、あるいは、メッセージが特定のチップ、すなわちチップ５０により生成されたものであり、偽のチップにより生成されたものでなことを証明するために、使用することができる。
【００３０】
以下の説明においては、「ＰＵＦ」という用語は、入力を出力にマッピングする物理的ランダム機能を意味し、「ＰＵＦ回路」という用語はこの機能を実行する回路を意味する。「ＰＵＦｆ回路」という用語は、特定の物理的ランダム関数ｆを実行する回路を意味する。「ＰＵＦチップ」という用語は、ＰＵＦ回路を含むチップを意味する。
【００３１】
チップ５０は、チップ５０の回路パターンを形成する一つのリソグラフィ・マスクのセットにより製造される。同じリソグラフィ・マスクを使用して一組のチップを製造すると、製造プロセス中の僅かな変動のために、一般的に、２つのチップは全く同じものにはならない。各チップ内及び異なるチップ間では、種々のパラメータ（例えば、導線の長さ及び幅、ドーピング領域の濃度、誘電体層の厚さ）で若干の変動が起こる。機能モジュール５２は、非常に頑強に設計されるので、パラメータの変動があっても、同じ組のリソグラフィ・マスクにより作成した全てのチップの機能モジュール５２が行う機能は同じである。一方、ＰＵＦ回路１００は、異なるチップ間の種々のパラメータ内の変動を利用するように設計される。ＰＵＦ回路１００の「機能」は、一般的に、同じ組のリソグラフィ・マスクで製造したチップ毎に異なる。同じ組のリソグラフィ・マスクにより製造した異なるＰＵＦ回路１００は、一般的に、同じ入力を異なる出力にマッピングする。
【００３２】
ＰＵＦ回路１００は、測定可能な構成要素１０２及び測定回路１０４を含む。ＰＵＦ回路１００により実行される機能は、測定可能な構成要素１０２における多数の個々の物理特性により異なり、その物理特性は、ＰＵＦの出力を決定するＰＵＦへの入力に従って組み合わされる。測定回路１０４は、物理特性の組合せを測定して出力を決定するように設計される。この出力は、実際の測定値を処理したものを表すことができ、その処理は、測定誤差及び環境条件の影響を低減又は修正するように、また実際の物理パラメータをマスクするように設計される。個々の物理特性を、デバイスの物理的検査により予測又は測定することは困難であり、既知の場合でも、チップ５０の複製物に正確にコピーすることは、不可能ではないにしても困難である。
【００３３】
［認証］
チップ５０のＰＵＦ回路１００の１つの用途は、チップの識別表示を認証することである。この用途の場合、ＰＵＦに対する可能性のある（入力、出力）ペアのサブセットは、最初に、ＰＵＦ回路１００に信号ライン１０６上に異なる入力を供給し、信号ライン１０８上の対応する出力を記録することにより、決定される。入力は、ＰＵＦ回路が個々の物理特性の種々の組合せを使用するように選択される。ＰＵＦ回路の出力は、使用した入力のセットと同様に、秘密に保持される。
【００３４】
チップ５０の識別情報の認証が行われるのと同時に、対応する出力が記録され、秘密に保持されている入力のうちの１つが、ＰＵＦ回路１００に信号ライン１０６上の入力として供給される。ＰＵＦ回路１００の出力ライン１０８上の出力が、記憶された対応する出力と比較される。一致した場合には、チップは認証される。このような入力は「チャレンジ」と呼ばれ、出力はチャレンジへの「レスポンス」と呼ばれる。通常、チャレンジ及びレスポンスは、２進数として表される離散的値である。
【００３５】
任意のチップの認証に成功する度に、一組のチャレンジ−レスポンス・ペアが、攻撃者に潜在的に解明される。同じチャレンジ−レスポンス・ペアは、好適には再使用されない。チャレンジ−レスポンス・ペアのデータベースは、チップの識別を所望する人により維持される。このデータベースは、すべての可能性のあるチャレンジ−レスポンス・ペアの小さなサブセットをカバーするためのみに必要なものである。データベース内のチャレンジ−レスポンス・ペアを使い果たした場合には、以下に説明する方法によりチップから新規のチャレンジ−レスポンス・ペアを生成することができる。
【００３６】
図２は、ＰＵＦ回路を使用してチップの認証を行うための一般的な方法を示すプロセス２６８である。プロセス２６８は、下記のステップを含む。
ステップ２７０：製造業者は、ＰＵＦ回路１００を含むチップ５０を設計する。チップを製造するためのパターンを含むリソグラフィ・マスクのセットがチップ設計に基づいて生成される。
【００３７】
ステップ２７１：製造業者は、ｎ個のチップを製造するために、上記リソグラフィ・マスクのセットを使用する。各チップは、リソグラフィ・マスク上の同じパターンから製造するＰＵＦ回路を含むが、製造プロセス中のランダムな変動により、異なる測定可能な物理特性を有する。
【００３８】
ステップ２７２：各チップに対して一組のチャレンジ−レスポンス・ペアが生成される。
ステップ２７３：チャレンジ−レスポンス・ペアが機密保護記憶箇所に記憶される。
【００３９】
ステップ２７４：チップがチップ所有者に配布される。
ステップ２７５：チップＸ（製造したｎ個のうちの１つ）の認証を行う必要がある場合には、チップＸに関連するチャレンジ−レスポンス・ペアが機密保護記憶箇所から検索される。チャレンジはチップに送られる。
【００４０】
ステップ２７６：チップからのレスポンスを受信する。
ステップ２７７：チップから受信したレスポンスが、機密保護記憶箇所から検索したレスポンスと比較される。レスポンスが一致した場合には、チップが認証される。
【００４１】
一例として、ステップ２７０及び２７１は、チップの製造業者により実行され、ステップ２７２から２７７は、チップを顧客に配布することを所望するエンティティ（例えば、銀行）により実行され、その後、チップの認証が行われ、サービスへのアクセスを許可するかしないかを決定する。
【００４２】
別の例の場合には、チップを製造した後で、チップがチップ所有者に配布される。チップ所有者は、一組のチャレンジ−レスポンス・ペアを生成することができ、この一組のチャレンジ−レスポンス・ペアをエンド・ユーザに配布する。エンド・ユーザは、チップ所有者から受信したチャレンジ−レスポンス・ペアを使用して、エンド・ユーザのみが知っている新規のチャレンジ−レスポンス・ペアを生成することができる。
【００４３】
チップ５０はスマートカード内に埋め込まれて、スマートカードの識別情報を認証することができ、カード所有者は、スマートカード会社が提供するサービスにアクセスすることができる。各スマートカードは、シリアル番号を有し、スマートカード会社は、各シリアル番号に関連する一組のチャレンジ−レスポンス・ペアを有する。スマートカードがカードリーダに提示されると、カードリーダはスマートカードのシリアル番号に基づいて１つ以上のチャレンジを選択する。チャレンジはチップ５０に送られ、チップ５０は、１つ以上のレスポンスを生成し、それらをカードリーダに返送する。カードリーダは受信レスポンスを記憶レスポンスと比較する。レスポンスが一致した場合には、スマートカードが認証される。このことは、スマートカードが、チャレンジ−レスポンス・ペアを生成するために最初に使用されたチップと同じチップを含むことを意味する。
【００４４】
また、チップ５０は、「認可された実行」で使用することができる。チップ５０の所有者は、エンド・ユーザがデータを処理するために、また計算結果を生成するためにチップにアクセス可能にする。所有者は、エンド・ユーザに一組のチャレンジ−レスポンス・ペア（ＣＲＰ）を配布して、エンド・ユーザがチップの処理用電力にアクセス可能にする。エンド・ユーザは、計算結果が実際に他の偽のチップによってではなく、そのチップにより生成されたことを確認するために、チップにチャレンジを送り、チップからレスポンスを受信する。
【００４５】
上記スマートカード及び認可された実行の用途の場合には、攻撃者は、チップ５０へ送信しチップ５０から受信したチャレンジ及びレスポンスを傍受し、種々のタイプの攻撃をスタートすることができる。これは以下に更に詳細に説明する制御アルゴリズムにより防止することができる。
【００４６】
ＰＵＦ回路１００の出力は、入力により選択される物理特性の組合せに基づく。ＰＵＦ回路１００は、組合せの数（又は可能な入力の数）が、チップ５０を有している攻撃者が、すべての（入力、出力）ペアを１つ残らず測定し、記憶することができないほど非常に多くなるように設計される。それ故、攻撃者が、例えば、コピー内のすべての可能性のある（入力、出力）ペアを記憶することにより、ＰＵＦ回路１００の機能を含むチップ５０の機能をコピーすることは事実上できない。有効な（入力、出力）ペアを記録するために最初に使用された可能性のある入力の一部を、攻撃者に秘密にしている限りは、また、その一部を攻撃者が予測できない限りは、攻撃者は、チップ５０の動作を後でコピーするために必要なすべての（入力、出力）ペアを測定することは事実上不可能である。
【００４７】
物理特性の組合せの各々は、チップのＩＤを認証するために使用することができるチップの多数の「署名」のうちの１つであると見なすことができる。製造プロセスの変動によるチップ内の変動を使用することにより、レジスタ又はメモリ・セルのような記憶素子内にすべての署名情報を記憶しなくても、チップ上の多数の署名を記憶することができる。署名は、ＰＵＦチップの配線及び構成要素に関連し、正確にコピーし、かつ、攻撃者が読み出せるように正確に記憶することができないものである。
【００４８】
ＰＵＦ回路１００は、攻撃者が、チップ５０の物理的検査又は測定によりＰＵＦ回路のモデルを生成し、その後、このようなモデルに基づいてチップ５０の動作を模倣することが困難となるように設計される。物理特性の組合せの測定値は、通常、チップ内のワイヤ及びデバイス間の相互作用により、個々の物理特性の測定値の非線形及び非単調関数である。攻撃者がチップの完全なマスク情報を入手し、チップに自由に物理的にアクセスできたとしても、攻撃者が、ＰＵＦ回路１００により実行される関数を反転し、モデルのパラメータを入手することは困難である。
【００４９】
チップ５０は、攻撃者が、ある時間デバイスを得たとしても、この意味で「機密保護」されているので、攻撃者が、正当な所有者のチャレンジへのレスポンスを生成することができる確率は低い。チップが正当な所有者に戻ると、所有者のみが、機密保護記憶箇所に記憶された選択されたチャレンジの一部への正しいレスポンスを有していることが分かる。他の人が正しいレスポンスを生成して、デバイスの識別情報を偽造することができる確率は非常に低い。
【００５０】
攻撃者が、同じリソグラフィ・マスクを使用して偽のチップを製造する場合、製造プロセスに固有の統計的変動により、偽のチップが元のチップとして正当な所有者のチャレンジに対する同じレスポンスを正確に生成する確率は非常に低い。理論的には、攻撃者も、膨大な数のチップを製造し、各チップに対して広範な測定を行って、元のチップと一致するチャレンジ−レスポンス・ペアを含む偽物を生成し、発見することができるが、このようなアプローチは事実上不可能である。
【００５１】
チップ５０を認証するために、どの入力を使用するのかを予測することは困難である上に、攻撃者が、物理特性のどの組合せが必要な出力を決定するのかを予測することも困難である。また、ＰＵＦ回路１００は、個々の特性を知っていても、その個々の特性を組合せのモデルを形成するために使用することができないような方法で、個々の物理特性の組合せを好適には形成する。
【００５２】
攻撃者がチップを所有している間に、多数の出力を入手するために、その人がチップ５０を厳密にチェックしたとしても、これらの出力からＰＵＦ回路１００の物理特性を入手することは困難である。攻撃者の手からチップが離れると、攻撃者が以前に得た出力から追加の出力を生成することは困難である。
【００５３】
ＰＵＦ回路１００は、また、ＰＵＦ関数を決定する物理特性を測定しようとしても、ＰＵＦ回路自身の機能を破壊しない限り、すなわち測定する特性を破壊しない限り、そのような測定を容易に行うことができないように好適には設計される。
【００５４】
［遅延ベースのＰＵＦ］
ＰＵＦ回路１００の一例では、測定可能な構成要素１０２の物理特性は、導電ワイヤ又はトレース及びＰＵＦ回路１００の回路の少なくとも一部を形成している半導体構成要素の経路に沿った経路遅延を含む。チップが同じ組のリソグラフィ・マスクにより製造された場合には、例えば、製造ステップ中の処理温度及び圧力の変動により製造中に「ランダム」な変動が起こる。製造中にランダムな変動が起こると、ＰＵＦ回路１００がランダムに変動することになる。このランダムな変動の１つの側面は、異なるチップ間の対応するワイヤ及びデバイスの経路遅延が異なることである。実験により、遅延の変動は５％又はそれ以上になる場合があることが分かっている。更に、同じ動作条件の場合、これらの遅延変動は、特定のチップの場合、比較的一定で変化しない。
【００５５】
動作温度又は供給電圧のようなチップの動作条件に関連する他の要因も、また、経路遅延を変動させる場合がある。このような変動は、以下に更に詳細に説明するように、ＰＵＦ回路１００で補償技術を実施することにより解決される。
【００５６】
経路遅延の測定中に、変動又は誤差が発生する場合がある。測定回路は、十分高い精度で経路遅延を測定することができるように設計される。そのため、経路遅延値の変動は、主として製造プロセス中の変動によるもので、測定値の変動よる影響は遥かに低い。そのため、測定誤差及び変動は、個々のチップの識別及び認証機能に決して影響を与えない。
【００５７】
図３を参照すると、遅延回路１１１を使用するＰＵＦ回路１０１は、ＰＵＦ回路１００の一例である。遅延回路１１１への入力は、全遅延経路として認識される。この全遅延経路は、チェーン状に共に結合している多数の分離遅延経路からなり、個々の遅延経路は、導電ワイヤ又はトレース及び半導体構成要素からなる。チェーン内の素子間の相互作用により、全体の遅延は、必ずしも遅延の単なる合計のように、素子の個々の遅延の簡単な関数とはならない。
【００５８】
遅延回路１１１の経路遅延は、遅延回路１１１を使用してオシレータ・ブロック１２２を形成し、カウンタ・ブロック１２３を使用してオシレータ・ブロックの発振周波数を測定することにより測定される。オシレータ・ブロック１２２は、信号ライン１０６上で入力信号により選択された信号経路に応じた周波数で自励発振し、カウンタ・ブロック１２３は、所定の時間内の発振の回数をカウントする。
【００５９】
オシレータ・ブロック１２２は、遅延回路１１１の一方の端部１２６において信号を反転するインバータ１２４を含む。インバータ１２４の出力は、ＡＮＤゲート１３０の入力１２８に接続されている。ＡＮＤゲート１３０の別の入力１３２は、ＣＯＵＮＴ信号を受信すべく接続されている。ＣＯＵＮＴ信号がハイである場合には、遅延回路１１１内のインバータ１２４、ＡＮＤゲート１３０及び選択された信号経路は、負のフィードバック・ループを形成し、自励発振して、信号ライン１３４上で発振信号を生成する。発振周波数は、選択された信号経路の経路遅延により変化する。
【００６０】
カウンタ・ブロック１２３は、信号ライン１３４に接続され、かつ発振信号をクロック
信号と同期させるために使用されるバッファ回路１３８を含む。バッファ回路１３８の出力１４０は、ＡＮＤゲート１４２の入力に接続されている。ＡＮＤゲート１４２の別の入力は、ＣＯＵＮＴ信号を受信すべく接続されている。ＣＯＵＮＴ信号がハイである場合には、ライン１３４上の発振信号は、バッファ回路１３８及びＡＮＤゲート１４２を通ってＡＮＤゲートの出力１４４から出力される。発振信号の立上りエッジは、ＣＯＵＮＴ信号がハイの間、カウンタ１３６によりカウントされる。出力１４６のカウント値は、遅延回路１１１内の選択され信号経路の経路遅延の測定値を表す。高カウント値は、短い遅延を表し、低カウント値は、長い遅延を表す。入力信号がチャレンジを表す場合には、カウント値（又はカウント値を処理したもの）は、チャレンジへのＰＵＦ回路１０１のレスポンスを表す。
【００６１】
図４を参照すると、遅延回路１１１は、１２８個のスイッチ１１２を含む。遅延回路１１１は、１２８ビット（ｂ１〜ｂ１２８）を含む入力信号を受信する。各入力ビットは、スイッチ１１２のうちの１つを制御する。ｂi＝１である場合には、スイッチは交差している（図５参照）。ｂi＝０の場合には、スイッチは交差していない（図６参照）。最初に、信号ライン１１４上の点ｘにおける立上りエッジは、信号ライン１１６及び１１８に転送される。立上りエッジは、入力信号に依存する相補経路の後に位置するスイッチ１１２を通過し、ＡＮＤゲート１２０の入力に接続されている点ｙ及びｚに到着する。点ｘにおける立上り遷移と点ｙ又はｚにおける立上り遷移との間には特徴的遅延が存在し、通常、入力ｘにおける立下り遷移と点ｙ又はｚにおける立下り遷移との間に別の特徴的遅延が存在する。
【００６２】
図７は、遅延回路１１１の遅延特性を示すタイミング図である。遅延Δ１は、点ｘにおける立上り遷移と点ｙ又はｚにおける立上り遷移との間の特徴的遅延が長い例を示す（この場合、点ｚにおける立上り遷移は後で発生する）。遅延Δ２は、点ｘにおける立下り遷移と点ｙ又はｚにおける立下り遷移との間の特徴的遅延が短い例を示す（この場合、点ｙにおける立下り遷移は早く発生する）。インバータ１２４とＡＮＤゲート１３０の遅延の合計がΔ3である場合には、発振ブロック１２２の周期ＴはΔ１＋Δ２＋２・Δ３である。一例として、インバータ１２４及びＡＮＤゲート１３０の遅延は、立上りエッジと立下りエッジの場合で異なることがある。
【００６３】
遅延回路１１１においては、測定可能な特性は、信号経路の経路遅延である。異なる入力信号は、遅延回路１１１内で異なる信号経路を選択し、異なる経路遅延が測定回路１０４により測定される。同じ組のリソグラフィ・マスクにより製造された異なる遅延回路１１１は、同じ入力信号が入力された場合、若干異なる経路遅延を示す。異なる遅延回路１１１は、同じチャレンジに対して異なるレスポンスを出力する。一意に識別することができる異なる遅延回路１１１の数は、スイッチ１１２の数が増大するにつれて、指数的に増大する。
【００６４】
図８Ａを参照すると、遅延回路１６０は、遅延回路１１１（図３）とは異なる設計である。遅延回路１１１の場合のように、遅延回路１６０は、ｎ−１個のステージ１６２を含み、その後にはマルチプレクサ１８４が位置する。ここで、ｎはチャレンジのビット数である。各ステージ１６２は、スイッチ・ブロック１６４及び可変遅延バッファ１６６を含む。スイッチ・ブロック１６４は、２つのマルチプレクサ１６６及び１６８、及び４つのバッファ１７０、１７２、１７４及び１７６を含む。各ステージ１６２は、上部経路１７８及び下部経路１８０を有する。遅延回路１６０の入力１８２において、立上り（又は立下り）エッジが、上部経路１７８及び下部経路１８０の両方に送られる。各ステージ１６２において、そのステージに対するチャレンジ・ビットの値により、立上り（又は立下り）エッジの経路が交差する場合、あるいは交差しない場合がある。すなわち、下部経路からのエッジが上部経路に行く場合、あるいは上部経路からのエッジが下部経路に行く場合がある。次に、２つのエッジのうちの一方が、出力マルチプレクサ１８４により選択され、入力１８２にループ経路で送り返され、自励発振が誘起される。
【００６５】
２つの遅延回路が、特定のチャレンジに対して同じレスポンスを生成する可能性がある。ＰＵＦ回路１０１を有するチップを識別しようとする度に、２つ以上のチャレンジが使用され、そのため、２つ以上の遅延回路がすべてのチャレンジに対して同じレスポンスを有する確率は、低下する。使用可能なチャレンジ−レスポンス・ペアの数は、遅延回路１６０内のステージ１６２の数を増大することにより、増大することができる。その理由は、測定できる遅延回路１６０内の信号経路の数が、ステージ１６２の数の指数であるからである。
【００６６】
全信号経路の遅延は依存している。その理由は、信号経路間での共有が多いからである。可変遅延バッファ１６６を使用することにより、攻撃者がこのような依存性を利用することがますます困難になる。可変遅延バッファ１６６は、２つのペアのバッファを有する。第１のペアは、バッファ１７０及び１７２を含む。第２のペアはバッファ１７４及び１７６を含む。バッファの各ペアにおいては、一方のバッファは、常にオンされ、他方のバッファは、他のペアのバッファに接続されている経路がローになった時のみ作動する。経路間の依存性を利用することはより困難である。その理由は、バッファのペアは、回路を通過する２つのエッジ間に複雑で、かつ単調でない相互作用を追加するからである（例えば、一方の回路素子の経路遅延が長くなった場合には、全経路遅延が短くなる可能性がある）。これにより、攻撃者が、一次式を解いて、個々の遅延回路素子の遅延を入手することが防止される。
【００６７】
図８Ａの遅延回路１６０は、遅延経路の途中に仲裁装置（ａｒｂｉｔｅｒ）を追加して、上部経路１７８又は下部経路１８０内の信号のうちのどちらが速いのかを判定し、この判定に基づいて遅延経路を更に遅延させるようにスイッチを設定することで、改良することができる。
【００６８】
図８Ｂを参照すると、遅延回路１０３０は、１２８ビット・チャレンジを受信する１２９個のステージ１６２を含む。各ステージは、スイッチ・ブロック１６４及び可変遅延バッファ１６６を含む。上部経路１７８及び下部経路１８０は、ステージを貫通する。仲介装置１０３２は、例えば、１００番目及び１０１番目のチャレンジ・ビットを受信するステージ等の２つの連続するステージを接続する上下部経路に接続されている。仲介装置１０３２は、（１００番目のチャレンジ・ビットを受信するステージの後の）上部経路１７８及び下部経路１８０上の信号のうちのどちらが速いのかを判定し、下流の別のステージ（例えば、１２７番目及び１２８番目のチャレンジ・ビットを受信するステージ間のステージ１０３４）に送信される出力を信号ライン１０３６上で生成する。ライン１０３６上の信号は、ステージ１０３４のスイッチ・ブロック１６４が交差されるか、あるいは交差されないのかを判定する。これにより、攻撃者に未知の「秘密のチャレンジ・ビット」が生成される。
【００６９】
［補償ＰＵＦ］
測定可能な構成要素１０２の測定可能な特性（遅延回路１６０の信号経路の経路遅延等）は、周囲温度及び供給電力電圧の変動等の環境条件の変動により変化する場合がある。このような変化を補償するために、チップ５０にオプションとしての回路を追加することができる。環境の変動を補償する回路を備えるＰＵＦ回路は、補償ＰＵＦ回路と呼ばれる。
【００７０】
図９を参照すると、チップ５０は、ＰＵＦ回路１０１の出力の比率を測定する補償ＰＵＦ回路１４９、及び補償ＰＵＦ回路１４９の出力を発生する基準回路１４８を含む。この
例の場合には、基準回路１４８は、ＰＵＦ回路１０１の発振周波数の変化に比例して、発振周波数を変化させる簡単な自励発振ループである。ＰＵＦ回路１０１及び基準回路１４８の出力は、ディバイダ１５２に送信される。上記比率は、補償ＰＵＦ回路１４９のレスポンスとなる。ＰＵＦ回路１０１及び基準回路１４８は多少でも同じように環境条件の影響を受けるので、ディバイダ１５２により生成される比率が環境条件から受ける影響は少ない。
【００７１】
動作中、チップ５０内の回路の温度は、抵抗加熱により上昇する。補償ＰＵＦ回路１４９は、動作中回路が均等に加熱されて、ＰＵＦ回路１０１及び基準回路１４８の出力の比率が確実に安定するように、設計される。
【００７２】
ほぼ同じ周波数で発振する２つの発振ループが存在する場合には、発振信号が相互に干渉して、そのため２つの信号が１つの発振周波数にロックすることがある。それ故、ＰＵＦ回路１０１へのチャレンジは、ＰＵＦ回路１０１及び基準回路１４８の発振周波数が発振信号の干渉を防止するのに十分なだけ異なるように、選択される。
【００７３】
図１０を参照すると、別例の補償ＰＵＦ回路１４９は、同じ入力信号を受信する２個のＰＵＦ回路１４８及び１５０を含む。ＰＵＦ回路１４８及び１５０の出力の比率を用いて、補償ＰＵＦ回路１４９の出力が生成される。
【００７４】
図１１を参照すると、更に別例の補償ＰＵＦ回路１５３は、ＰＵＦ回路１０１、レジスタ１５６及びディバイダ１５２を含む。第１の入力値は、ＰＵＦ回路１０１に送信され、レジスタ１５６内に記憶される第１の出力値が生成される。第２の入力値は、ＰＵＦ回路１０１に送信され、第２の出力値が生成される。第１及び第２の出力値は、ディバイダ１５２に送信され、２つの出力値の比率が計算される。この比率は補償ＰＵＦ回路１５３の出力となる。
【００７５】
環境条件の変化が大きい場合（例えば、周囲温度の３０度を超える変動）、出力の比率を使用しても、環境条件の変化の影響を抑制するのに十分でない場合がある。異なる温度範囲に対して複数の組のＣＲＰが生成される。例えば、一組のＣＲＰは、温度が２０℃〜５０℃の場合に使用され、別の一組のＣＲＰは、温度が４５℃〜７５℃の場合に使用される等々。ＰＵＦ回路は、そのうちの１つのみが温度に応じたものとして表されるような、２つ又は３つの異なるＰＵＦの備えていると見なすことができる。
【００７６】
回路の経年変化も遅延を変化させる場合があるが、その影響は温度による影響より小さい。
電力供給の変化もＰＵＦ回路の出力に影響を与える場合がある。しかし、実験により、電力供給電圧が大幅に変化しない限り（正確な数字は、使用する特定のＰＵＦ回路に依存する）、異なる発振ループからの出力の比率を考慮すれば、電力供給の変動の影響を十分補償することができることが分かっている。
【００７７】
［誤差の修正］
物理的現象の測定値はエラーを含んでいる場合がある。ＰＵＦ回路１０１（図３）においては、自励発振ループは、遅延回路１１１の経路遅延を測定するために使用される。経路遅延は、一定の時間内の整数回の発振を測定することにより量子化される。このような量子化は、測定誤差を処理する１つの方法である。すなわち、測定値に僅かな変動（誤差）があっても、量子化量は同じになる。しかし、測定される数量が２つの量子化レベルの間にあると、測定値の僅かな変動が、異なる量子化の値になる場合がある。
【００７８】
図１２を参照すると、改良形ＰＵＦ回路２６４は、誤差チェック及び修正（ＥＣＣ）モジュール１９０を含み、ＥＣＣモジュール１９０は量子化のより精巧なバージョンであり、カウンタ・ブロック１２３が発生する発振カウント数を処理して、ＰＵＦ１００が同じチャレンジを受信した場合には、必ず同じレスポンスを発生させる。ＥＣＣモジュール１９０は、自立型回路としても実施するか、又はＥＣＣアルゴリズムを実行するマイクロプロセッサによっても実施可能である。
【００７９】
多数のチャレンジ（ｃ１，ｃ２，．．．，ｃｎ）は、ＰＵＦ回路１４９又は１５２のような補償ＰＵＦ回路を通過して、多数のレスポンス（ｒ１，ｒ２，．．．，ｒｎ）が得られる。レスポンス（ｒ１〜ｒｎ）は、ＥＣＣモジュール１９０に送信され、物理特性の測定値の僅かな変動が修正される。ＥＣＣモジュール１９０は、データ・バス２６６上にｎ個の修正済みのレスポンス（ｒ１’，ｒ２’，．．．，ｒｎ’）を生成する。
【００８０】
一組のチャレンジ−レスポンス・ペアが生成された場合、ＥＣＣモジュール１９０が測定値の僅かな変動を修正できるように、冗長情報が生成される。このような変動は、例えば、量子化誤差及び測定ノイズの結果である場合がある。チャレンジ−レスポンス・ペアを以降に使用する場合には、冗長情報は、チャレンジと共に改良形ＰＵＦ回路２６４に供給される。冗長情報がレスポンスのすべてのビットを喪失しないようにすることが重要である。
【００８１】
量子化レベルの境界を調整して、測定すべき数量が量子化レベルの中央値に近くなるように誤差修正を行う方法について以下に説明する。この方法は、測定値の僅かな変動により異なる量子化値が発生することを防止する。
【００８２】
ＥＣＣモジュール１９０の一実施形態の場合には、１つ以上の補償した測定値について誤差チェック及び修正が実行され、情報の１つのビットｂが補償した各測定値から抽出される。この抽出は、測定値をδのステップ・サイズで量子化し、量子化した値のモジュロ２を計算することにより実行される。
【００８３】
ｄが、冗長情報が生成された場合に（例えば、新規のチャレンジ−レスポンス・ペアが生成された場合に）計算される補償測定値であり、ｍが、冗長情報を使用する場合に（例えば、チャレンジ−レスポンス・ペアを使用する場合に）計算される補償測定値であるとする。ｂを
【００８４】
【数１】
2011123909.tif 000003
と定義する。ここで、
【００８５】
【数２】
2011123909.tif 000004
である場合には、ｄは、量子化間隔の中央にあり、ｄと同じ方法で量子化されるｍの尤度は増大する。パラメータεは、冗長情報の一部としてＰＵＦチップの外部に送られ、攻撃者はｄの低位ビットを知り得る。
【００８６】
δが共通の設計に基づいて製造された異なるチップ間のｄの標準偏差より小さい場合、εのビットは、ｄから抽出されるビットｂについての情報を攻撃者に漏洩しないと仮定することができる。δを選択するために考慮する必要がある要因については以下に説明する。
【００８７】
補償測定値の誤差は、変形ハミング・コードとパリティ・チェックとの積により修正することができる。位数２の有限体上の列ベクトルにより表される２ｋ−１ビット・メッセージの変形ハミング・コードを計算するために、メッセージに、そのｉ番目の列がｉの２進表示であるｋ行マトリックスが乗算される。例えば、１０１１００１の冗長情報は以下のように計算される。
【００８８】
【数３】
2011123909.tif 000005
それ故、１０１１００１の冗長情報は００１である。
【００８９】
変形ハミング・コードは、非冗長ビットについての１つの誤差を修正することができる。エラーを修正するために、誤メッセージの冗長情報を計算し、それを正しいメッセージの冗長情報を用いて排他的論理和演算する。結果は、ゼロでない限りは、誤りは存在しないが、メッセージの誤りビットのオフセットの２進コード化したものである。
【００９０】
例えば、下記のようになり、
【００９１】
【数４】
2011123909.tif 000006
及び
【００９２】
【数５】
2011123909.tif 000007
になり、この場合、３番目のビットが変更されたことを表す。変形ハミング・コードは、メッセージ内の１つのエラーを検出可能である。
【００９３】
パリティ・ビットを追加することにより第２のエラーを検出することはできるが、修正することはできない。第２のエラーが検出できる理由は、２つのビットが誤っている場合、パリティ・ビットが修正されるが、変形ハミング・コードが１つのエラーしか表示しないからである。
【００９４】
変形ハミング・コードは、メッセージに０を付加することにより、その長さを２ｋ−１
で表ことができないメッセージに適用することができる。
変形ハミング・コードは、最初に、ｗ列×ｈ行のアレイにｗ・ｈビットを配列することにより生成される積コードを作成することにより改良することができる。積コードは、各行にパリティ・ビットを追加し、各列にパリティ・ビットを追加した変形ハミング・コードに基づいている。
【００９５】
各行に１つのエラーが存在する場合には、変形ハミング・コードはすべてのエラーを修正することができる。１つの行が２つのエラーを含んでいる場合には、ハミング・コードはエラーを修正することはできないが、その行のパリティ・ビットは、その行が２つのエラーを含んでいることを示す。１つの行のみが２つのエラーを含んでいる場合には、列上のパリティ・ビットを、誤っている行のどのビットが間違っているのかを決定するために使用することができる。１つの行が２つのエラーを含んでおり、どの行も３つ以上のエラーを含んでいない場合には、積コードはエラーを修正することができる。
【００９６】
積コードは下記のように改善することができる。行パリティ・ビットは、ほとんどの場合、冗長である。その理由は、修正したビットの行からそれらを直接計算できるからである。行パリティ・ビット全体は計算できないが、エラーを修正することができる唯一のケースは、１つの行が２つのエラーを含んでおり、他の行が最高１つのエラーを含んでいる場合である。この場合、その行のパリティを行データから計算した場合には、パリティのうちの１つのみが誤っている。このことは、パリティを記憶する代わりに、行パリティ上の変形ハミング・コードを使用することができ、行パリティがどうあるべきかに関する冗長情報を記憶するのみであることを意味する。これにより、数個の余分なビットをセーブすることができる。
【００９７】
パラメータｗ及びｈを選択して積コードを生成するための方法について以下に説明する。一例として、出力ハッシュ（ｈ２）は、攻撃者が有していない少なくともＢ個の識別ビットで表示される。強引な攻撃を回避するＢの可能性のある値は約８０である。制御ＰＵＦ回路（以下に説明する）により使用されるプロトコルは、ＰＵＦ回路がそのうちの１つに対する正しいレスポンスを供給するまで、多数の異なるチャレンジを試験するように適合される。緩慢に変化する環境パラメータによるエラーを避けるために、異なるチャレンジが試験される。パラメータｗ及びｈは、ＰＵＦ回路上で実行するための測定期待数であるＢｅｘｐを低減するように選択される。
【００９８】
識別ビットの数を計算するために、攻撃者が誤り率ｐを有するものと仮定すると、攻撃者の最大チャネル容量は下式により表される。
【００９９】
【数６】
2011123909.tif 000008
攻撃者は、情報のＢａ＝Ｃ・ｗ・ｈ＋Ｒビットを有する。ここで、Ｒは下式で表される。
【０１００】
【数７】
2011123909.tif 000009
Ｒは冗長ビットの数である。ＰＵＦ回路から抽出される識別ビットの数は、そのブロック内のビットの数と攻撃者が有するビットｗ・ｈ・Ｂａの数の間の違いである。ｗ×ｈビットの多くのブロックは、識別情報のＢ個のビットが使用できるようになる前に送信される。パラメータＢｔｏｔは、Ｂ個の情報ビットを入手するために必要なビットの数を表すために使用される。
【０１０１】
ベルヌーイ分布は、ＰＵＦ測定値の誤り率ｑを知っている場合に、Ｂ個の情報ビットを収集するために必要なすべてのビットを適切に修正する確率の計算において適用される。任意の行を修正する確率、及び任意の行内の２つのエラーを検出する確率が計算される。これらの確率を使用することにより、２つ以上の行内で２つのエラーを検出する確率、及び任意の行内で３つ以上のエラーを有する確率を計算することができる。これらの確率は、全ブロックを修正する確率の低い方の境界を示す。すべてのブロックを修正する確率Ｐｓｕｃｃは、読み出されるブロックの数から推定することができる。確率Ｐｓｕｃｃは、実行する物理測定の期待数を推定するために使用することができる。
【０１０２】
図３７のデータは、ｐ及びｑ、任意のδの値を発見するために使用することができる。δ／２の値は、グラフの垂直線に対応する。約６０％を超える値の場合には、ｐ及びｑは、グラフのそのラインから直接読み取ることができる。ｐの場合には、２つの異なるフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）に対応するグラフの最高の値を採用する必要がある。ｑの場合には、それを認識可能となることを所望する環境条件で同じＦＰＧＡに対応するグラフの最も低い値を採用する必要がある。表１は、上記のエラー修正方法を使用するこれらパラメータに対する最適なエラー修正解決方法と共に、種々のパラメータの数々の例を示す。
【０１０３】
【表１】
2011123909.tif 000010
表１のケース１の場合には、ｐの値は近似値である。その理由は、この値は、グラフから直接読み取るにはあまりに小さいからである。３の場合には、測定値の下位ビットが抽出するビットについてそれが真であることを何も示していないので、ｐの値は推定するには高すぎる。
【０１０４】
優れたエラー修正解決方法は、ｗ及びｈの関数として、物理測定値の期待値を計算するＣプログラムにより計算される。このプログラムは、ｗ×ｈブロックの全数を使用するものとみなす。表１は、数個の測定エラーが存在する場合には、良好な交換条件を発見することが容易であり、そのためδをそれに応じて選択すべきであることを示す。ケース２及び３の場合は、測定エラーが限定されている限りは、δの値の広い範囲に対して適当な解決方法を発見することができることを示す。δが非常に長い場合には、ｐ及びｑの両方は１に非常に接近し、エラー修正を行うのが困難となる。
【０１０５】
測定毎のクロックが１００ＭＨｚ、サイクルが２×１００００であると仮定した場合、３ＣＰＵＦ程度で、毎秒評価を行うことができる。
エラー修正を改善する１つの方法は、モジュロを４又は８に低減することにより、各補償測定値から２ビット又は３ビットを抽出する方法である。測定値からの各ビットは、δ
のそれ自身の値、及び、それ故、ｐ及びｑのそれ自身の値に対応する。従って、３つのレベルのビットを相互に別々に修正することが望ましい。ビットの各レベルは、ｗ及びｈに対するそれ自身の設定を有し、ブロック・サイズのグローバルな最適化を実行し得る。このようにして、より多くの情報を抽出することにより、より少ない測定値を使用して、同じ量のエラー修正を行うことができる。
【０１０６】
測定毎に複数のビットを使用した場合には、複数のエラーを相互に関連づけることができる。より詳細に説明すると、高位のビットが誤っていることが分かった場合には、下位のビットはランダムなものであってもよい。それ故、それらのビットを消去したものと見なして、下位ビット上のより多くのエラーを修正するために、消去情報を考慮に入れることを試みることができる。
【０１０７】
［制御ＰＵＦ］
チップ５０の別のバージョンの場合には、１つ以上の制御モジュールが、ＰＵＦ回路（例えば、１００）へのアクセスを制限するために追加される。ＰＵＦ回路及び制御モジュールは、分離が困難な方法で物理的にリンクされ、ＰＵＦ回路には、制御モジュールにより実行される制御アルゴリズムを介してのみアクセスすることができる。「制御ＰＵＦ（ＣＰＵＦ）回路」という用語は、ＰＵＦ回路及び１つ以上の制御モジュールの組合せを示すために使用される。
【０１０８】
ＣＰＵＦチップは、制御アルゴリズムを実行する制御モジュールが、ＰＵＦ回路をベースとする物理システムにより保護される。このアルゴリズムを回避しようと試みると、ＰＵＦ回路を変更しなければならなくなる可能性が高い。
【０１０９】
１つのタイプの制御アルゴリズムを使用して、ＰＵＦ回路に提示される入力（又はチャレンジ）を制限し、制御ＰＵＦ回路の外部に提供される出力（又はレスポンス）に関する情報を制限し、及び／又はＰＵＦにより認証された機能を実行することができる。
【０１１０】
以下に説明するように、一例として、制御を使用することにより、攻撃に弱いＰＵＦ回路を、攻撃者が不正に使用することがより困難な強力なＰＵＦ回路に改善することができる。他の例の場合には、ＣＰＵＦチップとＣＰＵＦチップの機能を使用しようとするユーザとの間で共有される秘密を確立するために制御を使用することができる。
【０１１１】
［改良形ＰＵＦ］
攻撃者は、多数の適合的に選択された入力のためのＰＵＦ回路の出力を測定することにより、ＰＵＦ回路のモデルの形成を試みることができる。これらの入力は、入力−出力のペアを使用して、ＰＵＦ回路のモデルを形成するパラメータを入手するために解くことが可能な一組の式を確立することができるように、選択される。次に、このモデルを使用して、ＰＵＦ回路をシミュレートし、かつコピーすることができる。このことは、攻撃者が解くのが容易な式に導く恐れがある特定の入力を選択することが困難となるように、ＰＵＦ回路の周囲に制御を追加することで防止することができる。
【０１１２】
図１３Ａを参照すると、改良形ＰＵＦｇ回路１８６の機能ブロック図は、ＰＵＦｆ回路１８８、ＥＣＣモジュール１９０、ランダム・ハッシュ・モジュール１９２及びランダム・ハッシュ・モジュール１９４を含む。モジュール１９０、１９２及び１９４は、自立型回路により、又はソフトウェア・コードを実行するマイクロプロセッサにより実施可能である。改良形ＰＵＦｇ回路１８６のチャレンジは、信号ライン１９８を介してハッシュ・モデル１９２に送られる。同時に、冗長情報が、ＰＵＦｆ回路１８８の出力の僅かなエラーを修正するために、ＥＣＣモジュール１９０に送られる。ランダム・ハッシュ・モジュール１９２は、チャレンジが提供されたときに、一方向ランダム・ハッシュ関数ｈ３を実行してハッシュ値を発生し、このハッシュ値は、信号ライン２００を介してＰＵＦｆ回路１８８に送られる入力となる。ハッシュ値は、ライン２０５を介してランダム・ハッシュ・モジュール１９４にも送られる。
【０１１３】
ランダム・ハッシュ・モジュール１９２及び１９４は、ハードウェア回路又はマイクロプロセッサ（図示せず）上で稼働するソフトウェアにより実施することができる。
ＰＵＦｆ回路１８８は、ＰＵＦｆ回路１８８への入力に依存する発振周波数を有する１つ以上の自励発振ループ回路（図３に示すような）を含む。ＰＵＦｆ回路１８８は、特定の入力が信号ライン１９８上で受信された場合に、信号ライン２０２上で特定のカウント値を出力する。カウント値は、ＥＣＣモジュール１９０を通過する。このＥＣＣモジュール１９０は、冗長情報を使用して、統計的な変動及び測定値の不正確性によるカウント値の小さな変動を除去する。ＥＣＣモジュール１９０は、出力を生成し、この出力はライン２０３を介してランダム・ハッシュ・モジュール１９４に送られる。ＥＣＣモジュール１９０の出力は、一方向ランダム・ハッシュ関数ｈ４を実行するランダム・ハッシュ・モジュール１９４を通過する。ランダム・ハッシュ・モジュール１９４の出力は、信号ライン２０４上に形成され、かつ、ＣＰＵＦｇ回路１８６のレスポンスを表す。
【０１１４】
ライン２０３上の信号に小さな差があると、ライン２０４上のランダム・ハッシュ・モジュール１９４の出力では大きな差になる。ランダム・ハッシュ・モジュール１９４を使用することにより、ライン２０４上のレスポンスから、ＰＵＦ回路１８８の基本的物理特性に関する情報を入手することが困難となる。
【０１１５】
ＥＣＣモジュール１９０を使用することにより、ライン２００上でＰＵＦｆ回路１８８に特定の入力が送られると、ライン２０３上に同じ出力が形成される。これにより、ＰＵＦ回路１８８の物理特性の測定値に小さな変動があっても、同じチャレンジがライン１９８上に供給された場合に、ライン２０４上に同じレスポンスを形成することができる。ＥＣＣモジュール１９０は、ハードウェア回路によっても、マイクロプロセッサ（図示せず）上で稼働するソフトウェアによっても実施することができる。
【０１１６】
改良形ＰＵＦｇ回路１８６においては、ｘがチャレンジを表す場合には、信号ライン２０２上のＰＵＦｆ回路１８８の出力は、ｆ（ｈ３（ｘ））で表すことができる。ｈ３（ｘ）は、一方向ランダム・ハッシュ機能であるので、攻撃者がｘから得られるｈ３（ｘ）を決定することは困難である。それ故、攻撃者がＰＵＦｆ回路１８８のモデルを確立するために使用することができるＰＵＦｆ回路１８８に対する一組の入力を知ったとしても、改良形ＰＵＦｇ１８６は秘密を漏らさない。その理由は、攻撃者は、ＰＵＦｆ１８８にこれらの入力を提示することができないからである。すなわち、攻撃者は、必要な入力ｈ３（ｘ）を生成するために、適切なチャレンジｘを提示する方法がないからである。
【０１１７】
物理的攻撃に耐性のあるＣＰＵＦｇ回路１８６の場合には、ＰＵＦｆ回路１８８へのアクセスを制御するモジュールは、回路１８８と相互に協力し、攻撃者が物理的調査により制御モジュールをバイパスすることを困難にする。特に、攻撃者は、出力ランダム・ハッシュ・モジュールｈ２１９４を通過する前に、ＰＵＦｆ回路１８８を直接読み出すこともできず、かつ、直接ＰＵＦ回路にチャレンジを送って入力ランダム・モジュールｈ１１９２をバイパスすることもできない。
【０１１８】
信号経路の経路遅延がＰＵＦｆモジュール１８８の測定可能な物理特性である場合には、信号経路を形成している金属配線及び素子を、ランダム・ハッシュ・モジュール１９２及び１９４の上（又は周囲）に設置することができ、信号ライン２００及び２０２を集積回路内に設置することができる。そのため、攻撃者は、信号経路の経路遅延を変更し、それにより、関数ｆを変更しない限り、ランダム・ハッシュ・モジュール１９２及び１９４、又は信号ライン２００及び２０２に物理的にアクセスすることはできない。
【０１１９】
図１３Ｂは、基板１０４０、制御ロジック層１０４２、ロジック及び電力ワイヤ層１０４４、及び遅延ワイヤ層１０４６を含むチップ５０の一例である。制御ロジック１０４２は、ランダム・ハッシュ・モジュール１９２及び１９４を含む。制御ロジックは、また、他の制御機能を提供するために使用されるマイクロプロセッサ（例えば、図１４の５１）を含み得る。ロジック及び電力ワイヤ層１０４４は、電力ワイヤ及び保護されるべき他のロジック回路を含む。遅延ワイヤ層１０４６は、ＰＵＦモジュールの信号経路を形成している金属配線及び素子を含む。
【０１２０】
信号ライン２０４上に生成された改良形ＰＵＦｇ回路１８６のレスポンスは、ｇ（ｘ）＝ｈ４（ＥＣＣ（ｆ（ｈ３（ｘ））），ｈ３（ｘ））と表示することができる。ランダム・ハッシュ・モジュール１９４を使用することにより、ＰＵＦｇ回路１８６の出力は、よりランダム性を示す。ＰＵＦｆ回路１８８及びＥＣＣモジュール１９０により生成された類似の出力は、（ＣＰＵＦｇ回路１８６の出力となる）非常に異なるハッシュ値にハッシュされる。これにより、攻撃者が類似のチャレンジに対するレスポンスを用いて１つのチャレンジに対するレスポンスを推定することが防止される。ランダム・ハッシュ関数ｈ４によりＰＵＦｆ回路１８８の出力を事後的に構成し、かつ、ライン２０５を介してモジュール１９４にモジュール１９２の出力を送ることで、出力ランダム・ハッシュ関数を介して出力を送る前に、十分な情報がＰＵＦ回路から抽出され、システムは、非物理的攻撃に対して確実な抵抗を有する。遅延回路の場合には、数百ビットの情報がシステムから抽出されるまで、多数の経路遅延が測定される。次に、測定値は、ランダム・ハッシュ関数ｈ２を介して送られる。
【０１２１】
複数の経路遅延を測定する一実施形態の場合には、ランダム・ハッシュ機能ｈ３は、非常に幅の広い出力（すなわち、多数の出力ビット）を供給するように選択することができる。この出力は多くの異なるチャレンジに分割され、分割されたチャレンジは１回でＰＵＦ回路１８８に送られる。これらのレスポンスは連結され、ＥＣＣモジュール１９０によりそのエラーが修正されて、１つのレスポンスとなり、ランダム・ハッシュ機能ｈ４１９４に送られる。
【０１２２】
［複数の個人特性］
あるユーザは、一意の識別子を有するチップを使用することを不快に感じる場合がある。その理由は、このようなユーザは自分が追跡される恐れがあると感じるからである。例えば、認可実行の場合、あるエンティティに計算機能を有することができるようにしたＰＵＦチップの所有者は、同じチップが他のエンティティに計算機能を有していることを知りたがらない場合がある。プライバシーに関する心配を軽減するために、改良形ＰＵＦｇ回路１８６は、ライン１９７上で、回路の所有者が選択することができる個人番号を受信するように設計されている。チャレンジは、個人番号でハッシュされてハッシュ値が生成され、ハッシュ値は、改良形ＰＵＦｇ回路１８６の別の入力として使用される。このことは下式により表すことができる。
【０１２３】
Ｉｎｐｕｔ＝ｈ３（チャレンジ，個人特性）
異なる個人番号は、異なるチャレンジ−レスポンス・ペアの組に対応する。異なる個人番号を使用することにより、所有者は、多くの異なるＰＵＦ回路を効果的に所有する。
【０１２４】
認可実行の場合には、所有者は、改良形ＰＵＦｇ回路１８６が第１のアプリケーションに計算機能を提供している場合には、第１の個人番号を選択することができ、改良形ＰＵＦｇ回路１８６が第２のアプリケーションに計算機能を提供している場合には、第２の個人番号を選択することができる。第１及び第２のアプリケーションは、自己が同じ改良形
ＰＵＦｇ回路１８６と相互作用していることを知らない。
【０１２５】
［一意のＩＤ］
任意の２つのＰＵＦが異なるものであることが確実となるように、実際のチャレンジを、ＰＵＦ回路から独立し、かつ、チップに対して一意である一意の識別子と組合せて、別のＰＵＦを通過するハッシュ値を生成することができる。改良形ＰＵＦｇ回路１８６の場合には、識別子モジュール１９６により識別子が生成され、その識別子は、一意の２進数を生成する配線回路であってもよい。使用される一意の識別子は、秘密にする必要はなく、例えば、チップのシリアル番号であってもよい。２つのシリアル番号には同じものはないので、２つのＰＵＦに同じものはない。２つのＣＰＵＦが同じ基本的ＰＵＦｆを共有している場合であっても、攻撃者がそれを知る方法はない。その理由は、攻撃者はＰＵＦｆ回路１８８を直接チェックすることができないからである。
【０１２６】
［フィードバック］
攻撃者に対してより複雑なものとするために、ＣＰＵＦｇ回路１８６を複数回使用して、１つのレスポンスを生成するようにしてもよい。１回目の使用からの修正済みのレスポンスは、ＰＵＦ回路にフィードバックすることができる。数回使用した後で、チャレンジ、個人特性、及び識別子モジュール１９６により生成され、かつランダム・ハッシュ関数を通過した識別子と共に、これら全ての出力が合成され、全体のレスポンスが生成され得る。
【０１２７】
［ＣＰＵＦチップ］
図１４を参照すると、半導体チップ４８は、ＣＰＵＦチップの一実施形態である。チップ４８は、ＰＵＦ回路１００及びマイクロプロセッサ５１を含む。ＰＵＦ回路１００は、測定可能な構成要素１０２及び測定回路１０４を含む。マイクロプロセッサ５１は、制御アルゴリズムを実行して、ある機密保護プロトコルに従うソフトウェア・コードを使用した場合のみ、ＰＵＦ回路１００にアクセス可能にする。ソフトウェア・コードは、マイクロプロセッサ５１が機能モジュール５２に計算を行わせて計算結果を生成させるコードを含むことができる。ソフトウェア・コードは、マイクロプロセッサ５１が制御モジュール５４に計算結果又はＰＵＦ回路１００の出力に対する追加制御（例えば、ランダム・ハッシュ機能又は暗号化の適用）を行わせるコードを含むことができる。機密保護プロトコルは、マイクロプロセッサ５４が測定可能な構成要素１０２の物理特性と相互に関連することを要求し、この場合、マイクロプロセッサ５４を不正に使用すると、ＰＵＦ回路１００の出力が変化するようにする。
【０１２８】
機密保護プロトコルは、ランダム・ハッシュ関数及び暗号化を使用して、ソフトウェア・コード及び計算結果が、測定可能な構成要素１０２の物理特性の測定値と相互に関連するようにする必要がある。
【０１２９】
制御モジュール５４及び機能モジュール５２が実行する制御及び機能は、固定されておらず、マイクロプロセッサ５１を稼働しているソフトウェア・コードに依存する。
制御アルゴリズムにより、攻撃者が、ＰＵＦ回路１００により生成された測定値を直接入手することが防止される。これにより、攻撃者が、ＰＵＦ回路をシミュレートしてコピーするためにＰＵＦ回路１００のモデルを確立することが困難となる。また、制御アルゴリズムにより、攻撃者が、マイクロプロセッサ５１により生成された計算結果を直接入手することが防止される。これにより、計算結果が本物であることを確認することができる。更に、制御アルゴリズムにより、ユーザは（非機密保護チャネルを介して）ＰＵＦ回路１００に対して一意であり、かつ、ユーザにとって私的なチャレンジ−レスポンス・ペアを生成することができる。
【０１３０】
「ＣＰＵＦチップ」という用語は、制御を介して（制御アルゴリズムを実行しているマイクロプロセッサを介して、又は専用制御回路を介して）のみアクセスすることができるＰＵＦ回路を含むチップを参照するために使用される。「ＣＰＵＦデバイス」という用語は、ＣＰＵＦチップを含むデバイスを参照するために使用される。
【０１３１】
制御アルゴリズムは、「プリチャレンジ」がＣＰＵＦチップへの入力として供給された場合のみ、ＣＰＵＦチップ４８からレスポンスを送ることができる。プリチャレンジは、新規のチャレンジ−レスポンス・ペアを生成するプロセスで使用されるチャレンジを生成するために使用される。新規のチャレンジ−レスポンス・ペアが生成されると、プリチャレンジは破棄することができる。
【０１３２】
制御アルゴリズムは、チャレンジがＣＰＵＦチップ４８の入力として供給された場合に、ＣＰＵＦチップが秘密鍵を生成することができるように設計され、ＣＰＵＦチップは、その秘密鍵を内部で使用するが、出力せず、かつ、チャレンジに対するレスポンスも出力しない。秘密鍵は、ＣＰＵＦチップ４８により生成されたメッセージを暗号化する場合、又はメッセージに対するメッセージ認証コード（ＭＡＣ）を生成する場合に使用することができる。これにより、一組のチャレンジ−レスポンス・ペア（ＣＲＰ）を、機密保護チャネルを介して生成し、その後、非機密保護チャネルにおいて使用することができる。攻撃者がアクセスすることができない秘密鍵を生成することにより、いわゆる「中間者」（ｍａｎ−ｉｎ−ｔｈｅ−ｍｉｄｄｌｅ）攻撃を防止することができる。
【０１３３】
［中間者攻撃］
中間者攻撃について以下に簡単に説明する。ＰＵＦ回路１００を用いることによりチップ５０を認証することができる。しかし、人又は機械が非機密保護通信チャネルを介してチップと相互作用を行った場合、攻撃者は、チップ５０の入力及び出力を傍受することにより、中間者攻撃を行うことができる場合がある。例えば、テレホンカードが、残りの金額を示す情報を記憶しているＰＵＦチップを含んでいると仮定する。テレホンカードを使用する人が、電話呼出しを終了した場合、カードリーダは、テレホンカードに残りの時間又は金額からある値を減額するように命令する。攻撃者も、本物のテレホンカードに類似している偽のカードを使用して、カードリーダからチャレンジを読み出し、本物のテレホンカードにチャレンジを送信してレスポンスを生成し、次に、偽のカードによりカードリーダに適切なレスポンスを送信することができる。カードリーダは、実際には偽のカードと相互作用を行っている場合でも、本物のテレホンカードと相互作用を行っているように動作する。偽のカードは、実際に、偽のカードが金額を減額しなくても、減額を行うようにとのカードリーダの指示に従っているかのように動作するように設計することができる。
【０１３４】
スマートカードにＰＵＦ回路１００を設置すれば、カードリーダが、チャレンジを受信し、かつレスポンスを生成している人が本物のスマートカードを有していることを証明することができるが、そのスマートカードは、カードリーダにより要求される特定の動作を実際に行ったことを必ずしも保証しない。
【０１３５】
中間者攻撃の別の例は、ユーザがＰＵＦチップを使用して認可処理を行う場合である。ユーザは、ＰＵＦチップを実行するプログラムを送る。プログラムは、ＰＵＦチップで実行される。攻撃者は、ユーザのプログラムの代わりに自分自身が選択したプログラムを使用して、ＰＵＦチップで自分のプログラムを実行させる。攻撃者のプログラムは、ユーザが予想しているメッセージに類似しているが、実際は偽物であるメッセージを生成することができる。
【０１３６】
［制御アルゴリズム］
チャレンジ−レスポンス・ペア（ＣＲＰ）を生成するために使用するプロセス、及びＣＲＰを使用してメッセージを認証するための秘密鍵を生成するためのプロセスについて以下に説明する。図１５を参照すると、所有者２３４は、機密保護通信チャネル５１４を介して、ＣＰＵＦチップ４８と通信して、ＣＲＰを生成する。図１６を参照すると、ＣＲＰを生成するために、プリチャレンジが、一方向ランダム・ハッシュ・モジュールｈ１１９１に送られて、チャレンジが生成され、このチャレンジは、ＰＵＦ回路１００に送られて、レスポンスが生成される。ランダム・ハッシュ・モジュールｈ１１９１は、制御モジュール５４の一部であり、マイクロプロセッサにアクセス可能なメモリ（図示せず）内に記憶されたサブルーチンを使用して、マイクロプロセッサ５１により実施される。レスポンスは、チップ４８から所有者２３４に送られる。
【０１３７】
以下の説明においては、説明を簡略化するために、エラー修正コード化のための手順の説明は省略する。
図１７は、ＣＲＰを生成するためのプロセス５１２のタイムライン図である。プロセス５１２は下記のステップを含む。
【０１３８】
ステップ５２０：所有者２３４は、プリチャレンジをランダムに選択し、それを制御モジュール５４に送る。
ステップ５２２：制御モジュール５４は、式、ｃｈａｌｌｅｎｇｅ＝ｈ１（ｐｒｅｃｈａｌｌｅｎｇｅ）を用いてチャレンジを計算し、チャレンジをＰＵＦ回路に送る。
【０１３９】
ステップ５２４：ＰＵＦ回路１００は、式、ｒｅｓｐｏｎｓｅ＝ｆ（ｃｈａｌｌｅｎｇｅ）＝ｆ（ｈ１（ｐｒｅｃｈａｌｌｅｎｇｅ））に基づいてレスポンスを生成し、そのレスポンスを制御モジュール５４に送る。
ステップ５２６：制御モジュール５４は、所有者２３４にレスポンスを出力する。
【０１４０】
ステップ５２８：所有者２３４は、式、ｃｈａｌｌｅｎｇｅ＝ｈ１（ｐｒｅｃｈａｌｌｅｎｇｅ）を用いてチャレンジを計算する。
ステップ５２０〜５２８は、一組のＣＲＰが生成されるまで、ランダムに選択されたプリチャレンジを用いて数回反復される。ＣＲＰは、機密保護記憶箇所に記憶され、プリチャレンジは廃棄される。
【０１４１】
図１８を参照すると、一組のＣＲＰが生成された後で、所有者２３４（又は所有者２３４から一組のＣＲＰを得たユーザ）は、ＣＲＰを使用して、非機密保護通信チャネル２２６を介してＣＰＵＦチップ４８を認証することができる。攻撃者２３５は、所有者２３４とＣＰＵＦチップ４８との間の通信を傍受する可能性がある。攻撃者２３５は、ＣＰＵＦチップ４８を入手する可能性もある。
【０１４２】
図１９を参照すると、ＣＰＵＦチップ４８を認証するために、所有者２３４は、ＰＵＦ回路１００（ＣＰＵＦチップの）にチャレンジを送り、ＰＵＦ回路１００は、暗号化及びＭＡＣモジュール１９５により使用されるレスポンスを生成して、メッセージ（例えば、機能モジュール５２が生成した）を暗号化し、暗号化されたメッセージに対するメッセージ認証コード（ＭＡＣ）を生成する。暗号化及びＭＡＣモジュール１９５は、制御モジュール５４の一部である。
【０１４３】
メッセージのＭＡＣは、メッセージを圧縮するハッシュ関数とメッセージの送信側及び受信側で共有される秘密鍵とを用いて生成することができる。ＭＡＣは、通常、メッセージと共に受信側に送信される。受信側は、同じ秘密鍵及び送信側が使用したハッシュ関数を用いて受信メッセージのＭＡＣを計算し、計算結果を受信ＭＡＣと比較する。２つの値が一致した場合には、メッセージは適切に受信され、受信側は、送信側が秘密鍵を知って
いるコミュニティのメンバーであることを確信する。ＭＡＣを計算するためのアルゴリズムの一例としては、２００２年３月６日に、米国国立標準技術研究所（Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ）が発行した、連邦情報処理規格公報（Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ  Ｐｕｂｌｉｃａｔｉｏｎ）の第１９８に記載されている鍵付きハッシュ・メッセージ認証コード（ＨＭＡＣ）アルゴリズムがある。
【０１４４】
所有者２３４が暗号化メッセージ及びＭＡＣを受信した場合には、所有者は、レスポンスを用いて暗号化メッセージを解読して、メッセージを入手することができる。所有者は、レスポンスを使用して暗号化メッセージに対するＭＡＣを生成することにより、かつ所有者が生成したＭＡＣを自分が受信したＭＡＣと比較することにより、暗号化メッセージの完全性を確認することができる。ＭＡＣが一致した場合には、メッセージが、偽のチップによってではなく、ＣＰＵＦチップ４８により実際に生成されたものである確率が高い。
【０１４５】
図２０は、ＣＰＵＦチップ４８を認証するためのプロセス５１８のタイムライン図である。プロセス５１８は下記のステップを含む。
ステップ５３０：所有者２３４は、予め記憶されたチャレンジ−レスポンス・ペアをデータベースから検索し、チャレンジを含むプログラムを制御モジュール５４に送る。
【０１４６】
ステップ５３２：制御モジュール５４は、命令を機能モジュール５２に送る。命令は、機能回路が、デフォルト・メッセージにより応答することを要求する簡単なコマンドであってもよい。命令は、また機能回路にデータを処理させ、処理結果を表すメッセージを生成させるデータを含むプログラム・セグメントを含むことができる。
【０１４７】
ステップ５３４：機能回路５２は、メッセージを制御モジュール５４に送信する。
ステップ５３６：制御モジュール５４は、チャレンジをＰＵＦ回路１００に送信する。
ステップ５３８：ＰＵＦ回路１００は、式、ｒｅｓｐｏｎｓｅ＝ｆ（ｃｈａｌｌｅｎｇｅ）に基づいてレスポンスを生成し、そのレスポンスを制御モジュール５４に送信する。
【０１４８】
ステップ５４０：制御モジュール５４は、レスポンスを用いてメッセージを暗号化する。
ステップ５４２：制御モジュール５４は、レスポンスを用いて暗号化メッセージのＭＡＣを生成する。
【０１４９】
ステップ５４４：制御モジュール５４は、暗号化メッセージ及びＭＡＣを所有者２３４に送信する。
ステップ５４８：所有者２３４は、レスポンスを使用して暗号化メッセージのＭＡＣを計算する。
【０１５０】
ステップ５５０：所有者２３４は、計算したＭＡＣを受信ＭＡＣと比較して、暗号化メッセージの真偽を判定する。
ステップ５５２：所有者は、レスポンスを用いて暗号化メッセージを解読してメッセージを生成する。
【０１５１】
ユーザが非機密保護チャネル２２６を介してＣＰＵＦチップ４８を認証しようとした場合、ＣＰＵＦチップにより生成されたメッセージを知ることを所望する攻撃者２３５が、ＣＰＵＦチップを有している場合がある。攻撃者は、本物のメッセージの代わりに偽のメッセージを使用しようとする。そうするためには、攻撃者は、レスポンスを入手して、適切なＭＡＣを生成する必要がある。しかし、攻撃者はレスポンスを知らない。攻撃者は、
チャレンジを傍受することはできるが、レスポンスを入手することはできない。その理由は、レスポンスは、プリチャレンジがチップへの入力として供給された場合のみ、チップの外部に送信されるからである。そして、攻撃者は、ハッシュ関数を反転して、チャレンジからプリチャレンジを入手することはできない。攻撃者は、レスポンスを入手することができないので、中間者攻撃を行って、ＣＰＵＦチップ４８からメッセージを取り出すことはできない。
【０１５２】
物理的攻撃に対してチップ４８に耐性をもたせるために、制御モジュール５４は、ＰＵＦ回路１００と相互に協働して、攻撃者が物理的検査を通して制御モジュール５４をバイパスできないようにする。このことは、制御モジュール５４を囲む１つ以上の層上に測定可能な構成要素を形成することにより達成することができ、その結果、攻撃者は、測定可能な特性を変更して、ＰＵＦ回路１００が実行する機能を変更しない限り、制御モジュール５４にアクセスできない。
【０１５３】
［ＣＲＰの管理］
図１７のプロセス５１２の場合には、所有者２３４は、機密保護チャネル５１４を介してＣＰＵＦチップ４８と通信しているものと見なされる。以下に、所有者のみが知っている旧来のＣＲＰを有している所有者２３４が、非機密保護チャネル２２６を介して新規のＣＲＰを生成するプロセスについて説明する。
【０１５４】
図２１を参照すると、所有者２３４は、ＣＰＵＦチップ４８に、旧来のチャレンジと新規のプリチャレンジを送る。プリチャレンジは、ランダムに選択された数値である。新規のプリチャレンジは、ハッシュ・モジュール１９１を介して新規のチャレンジを生成し、この新規のチャレンジはＰＵＦ回路１００を通過して、新規のレスポンスが生成される。旧来のチャレンジは、ＰＵＦ回路１００を通過して旧来のレスポンスが生成され、この旧来のレスポンスはハッシュ・モジュールｈ２１９３を通過して秘密鍵が生成される。秘密鍵は、暗号化及びＭＡＣモジュール１９５により使用されて、メッセージを暗号化し、暗号化メッセージに対するＭＡＣが生成される。暗号化メッセージ及びＭＡＣは、チップから送信され、所有者２３４に転送される。所有者２３４はＭＡＣを計算することができる。その理由は、所有者は旧来のレスポンスを有し、秘密鍵を計算することができるからである。次に、所有者は、ＭＡＣを用いて暗号化メッセージの認証をチェックし、暗号化メッセージを解読して、新規のレスポンスを入手することができる。
【０１５５】
攻撃者は秘密鍵を知らないので、暗号化メッセージを解読して、新規のレスポンスを入手することができない。攻撃者が、新規のレスポンスの代わりに偽のレスポンスを使用するか、又は偽の秘密鍵を使用した場合、所有者はそのことが分かる。その理由は、ＭＡＣが適切でないからである。
【０１５６】
図２２は、所有者２３４が、所有者のみが知っている旧来のＣＲＰから新規のＣＲＰを生成可能にするプロセス５６０のタイムライン図である。所有者２３４は、非機密保護チャネルを介してＣＰＵＦチップと通信する。プロセス５６０は下記のステップを含む。
【０１５７】
ステップ５６２：所有者２３４は、新規のプリチャレンジをランダムに選択し、制御モジュール５４に新規のプリチャレンジ及び旧来のＣＲＰの旧来のチャレンジを送信する。
ステップ５６４〜５６６：新規のレスポンスが、図１７のステップ５２２〜５２４に類似の方法で、新規のプリチャレンジから生成される。
【０１５８】
ステップ５６８：制御モジュール５４は、旧来のチャレンジをＰＵＦ回路１００に送信する。
ステップ５７０：ＰＵＦ回路１００は旧来のレスポンスを生成し、それを制御モジュール５４に送信する。
【０１５９】
ステップ５７２〜５７８：ステップ５３９〜５４４に類似の方法で、制御モジュール５４は、旧来のレスポンスから秘密鍵を生成し、秘密鍵を用いて新規のレスポンスを暗号化し、暗号化された新規のレスポンスに対するＭＡＣを生成し、暗号化された新規のレスポンス及びＭＡＣを所有者２３４に送信する。
【０１６０】
ステップ５８０〜５８６：ステップ５４６〜５５２に類似の方法で、所有者２３４は秘密鍵を計算し、ＭＡＣを計算し、計算されたＭＡＣを制御モジュール５４から送信されたＭＡＣと比較する。一致した場合には、暗号化された新規のレスポンスは認証されたものとなる。所有者２３４は、新規のレスポンスを解読して、新規のレスポンスを入手する。
【０１６１】
ステップ５８８：所有者２３４は、式、ｎｅｗ  ｃｈａｌｌｅｎｇｅ＝ｈ１（ｎｅｗ  ｐｒｅｃｈａｌｌｅｎｇｅ）を用いて新規のチャレンジを計算する。
図２２のプロセス５６０においては、新規のＣＲＰを生成する所有者２３４は、他の誰も知らない旧来のＣＲＰをすでに有していると仮定する。図２３を参照すると、ユーザ５９２は、所有者２３４から旧来のＣＲＰを入手し、この旧来のＣＲＰを使用して新規のＣＲＰを生成することを所望する場合、プロセス５６０によって、所有者２３４が傍受して新規のレスポンスを入手することが防止される。これは、所有者２３４が、旧来のレスポンスから秘密鍵を計算することができるからである。以下に、所有者２３４が新規のレスポンスを知ることを防止するようにして、ユーザ５９２が新規のＣＲＰを生成可能にするプロセスについて説明する。このプロセスは、公開鍵暗号化アルゴリズムを使用して、ユーザの公開鍵で新規のレスポンスを暗号化することにより達成される。
【０１６２】
図２４を参照すると、ユーザ５９２は、旧来のチャレンジ、新規のプリチャレンジ及び自分の公開鍵をＣＰＵＦチップ４８に送る。旧来のチャレンジはＰＵＦ回路１００に送られて旧来のレスポンスが生成され、この旧来のレスポンスは、ハッシュ・モジュール１９４に送られて秘密鍵が生成される。新規のプリチャレンジは、ハッシュ・モジュール１９２を通過して新規のチャレンジが生成され、この新規のチャレンジは、ＰＵＦ回路１００を通過して新規のレスポンスが生成される。新規のレスポンスは、ユーザの公開鍵を使用した暗号化モジュール２０１により暗号化されて暗号化された新規のレスポンスが生成される。ＭＡＣモジュール２０３は、秘密鍵を、暗号化された新規のレスポンスに対するＭＡＣを生成するためのＭＡＣ鍵として使用する。暗号化された新規のレスポンス及びＭＡＣは、チップ４８から送られ、ユーザ５９２に転送される。ユーザ５９２は、秘密鍵からＭＡＣを計算することができる。その理由は、ユーザは旧来のレスポンスを有しているからである。ＭＡＣをチェックすることにより、ユーザ５９２は、暗号化された新規のレスポンスの完全性を確認することができる。ユーザ５９２は、自分の秘密鍵を使用して暗号化された新規のレスポンスを解読し、新規のレスポンスを入手することができる。
【０１６３】
攻撃者は、秘密鍵を知らないため、新規のレスポンスを入手するか、あるいは、偽のレスポンスを挿入することはできない。所有者は、ユーザの公開鍵で暗号化されたメッセージを解読できないため、新規のレスポンスを入手することができない。
【０１６４】
プロセス５９０を実行するために、旧来のチャレンジ、新規のプリチャレンジ及びユーザの公開鍵を含むソフトウェア・プログラムが、Ｉ／Ｏポート１０５を介して制御モジュール５４に送られる。このプログラムは、プロセス５９０に従って、制御モジュール５４に、新規のレスポンスを生成させ、新規のレスポンスを暗号化させ、新規のレスポンスに対するＭＡＣを生成させ、暗号化された新規のレスポンス及びＭＡＣを出力させる。
【０１６５】
図２５は、ユーザ５９２が、所有者２３４から得た旧来のＣＲＰから新規のＣＲＰを生
成可能にするプロセス５９０のタイムライン図である。ユーザ５９２は、非機密保護チャネルを介してＣＰＵＦチップ４８と通信する。プロセス５９０は、下記のステップを含む。
【０１６６】
ステップ５９３：図２２のステップ５６２〜５７２類似のステップ。
ステップ５９４：制御モジュール５４は、ユーザの公開鍵を用いて新規のレスポンスを暗号化する。
【０１６７】
ステップ５９６：ステップ５７６〜５８４類似のステップ。
ステップ５９８：ユーザの秘密鍵を用いて暗号化された新規のメッセージを解読して、新規のレスポンスを入手する。
【０１６８】
ステップ６００：ステップ５８８類似のステップ。
［制御アルゴリズムの実行］
以下に、ＣＰＵＦチップと、チップを認証するか、又は認証された状態でチップを使用することを所望するエンティティとで共有される秘密鍵を生成するために使用される制御アルゴリズムの実行について説明する。制御アルゴリズムを実行するために、制御モジュール５４により実行可能な多数の基本手順について以下に説明する。
【０１６９】
・Ｏｕｔｐｕｔ（ａｒｇ１，．．．）：この手順は、ＣＰＵＦチップから結果（ａｒｇ１，．．．）を送信するために使用される。攻撃者は、非機密保護リンクを介してＣＰＵＦチップから送信される全ての結果を確認し得る。
【０１７０】
・ＥｎｃｒｙｐｔＡｎｄＭＡＣ（ｍｅｓｓａｇｅ，ｋｅｙ）：この手順は、ある鍵（ｋｅｙ）を暗号鍵として使用して、メッセージ（ｍｅｓｓａｇｅ）を暗号化し、この鍵を使用して、暗号化メッセージのＭＡＣを生成するために使用される。
【０１７１】
・ＰｕｂｌｉｃＥｎｃｒｙｐｔ（ｍｅｓｓａｇｅ，ｐｕｂｌｉｃ＿ｋｅｙ）：この手順は、公開鍵暗号化アルゴリズムに従って、公開鍵（ｐｕｂｌｉｃ＿ｋｅｙ）を使用してメッセージを暗号化するために使用される。
【０１７２】
・ＭＡＣ（ｍｅｓｓａｇｅ，ｋｅｙ）：この手順は、鍵（ｋｅｙ）を使用してメッセージのＭＡＣを生成する。
制御アルゴリズムは、プログラムによってのみＰＵＦにアクセスできるように設計される。例えば、プログラムは、２つの基本手順によりＰＵＦにアクセスする。その出力はこれらの基本手順を含むプログラムに依存する。これらの基本手順は下式により定義される。
【０１７３】
・ＧｅｔＲｅｓｐｏｎｓｅ（ＰｒｅＣｈａｌｌｅｎｇｅ）＝ｆ（ｈ１（ｈ１（Ｐｒｏｇｒａｍ），ＰｒｅＣｈａｌｌｅｎｇｅ））；
・ＧｅｔＳｅｃｒｅｔ（Ｃｈａｌｌｅｎｇｅ）＝ｈ２（ｈ１（Ｐｒｏｇｒａｍ），ｆ（Ｃｈａｌｌｅｎｇｅ））；
ここで、ｆは、ＰＵＦであり、ｈ１及びｈ２は、一般的に入手できる一方向ランダム・ハッシュ関数（又は疑似ランダム・ハッシュ関数）であり、プログラムは、認証方式で実行されるプログラム（すなわち、認証を必要とするプログラムの実行結果）である。Ｐｒｏｇｒａｍは、Ｃｈａｌｌｅｎｇｅ又はＰｒｅＣｈａｌｌｅｎｇｅに対する値を含む。プログラムは、原始関数ＧｅｔＲｅｓｐｏｎｓｅ及び／又はＧｅｔＳｅｃｒｅｔに対する呼出しを含んでいるので、ＧｅｔＲｅｓｐｏｎｓｅ又はＧｅｔＳｅｃｒｅｔを評価するにはＰｒｏｇｒａｍのハッシュを計算する必要がある。プログラムは、「プログラム開始」という連語、及び「プログラム終了」という連語を有する。ｈｉ（Ｐｒｏｇｒａｍ）を評価する場合には、「プログラム開始」と「プログラム終了」との間のプログラム・コードが、ハッシュ関数ｈｉに送られ、ハッシュ値が生成される。ｈｉが衝突困難性を有するハッシュ関数であると仮定した場合、Ｐｒｏｇｒａｍを何らかの方法で変更すると、ＧｅｔＲｅｓｐｏｎｓｅ及びＧｅｔＳｅｃｒｅｔの値も変化する。
【０１７４】
図２６は、プリチャレンジ、チャレンジ、レスポンス及び共有秘密の間を移動する可能性のある数々の方法を要約したものである。ＧＲＰ及びＧＳＰは、それぞれ、ＧｅｔＲｅｓｐｏｎｓｅ及びＧｅｔＳｅｃｒｅｔを呼び出すプログラムである。この図の場合、下への移動は、ハッシュ値を計算することにより容易に達成される。上への移動は困難である。その理由は、一方向関数であるハッシュ関数を反転するプロセスを含んでいるからである。左から右への移動は、そのハッシュ値がＧｅｔＲｅｓｐｏｎｓｅ又はＧｅｔＳｅｃｒｅｔ原始関数で使用されているプログラムの場合には容易であるが、他のすべてのプログラムの場合には困難である。ＰＵＦが一方向ハッシュ関数を反転できない場合には、右から左への移動は困難である。
【０１７５】
［制御プログラム］
以下に、秘密鍵を生成し、チャレンジ−レスポンス・ペアを管理するために使用されるプログラムの例について説明する。これらのプログラムを使用する場合、ＣＰＵＦは、プログラムの実行間の状態を保存する必要はない。
【０１７６】
プログラムＯｂｔａｉｎ  Ｓｅｃｒｅｔ  Ｐｒｏｇｒａｍは、ユーザとＣＰＵＦチップとの間で共有可能な秘密を入手するために使用されるプログラムの一例である。
／＊Ｏｂｔａｉｎ  Ｓｅｃｒｅｔ  Ｐｒｏｇｒａｍ＊／
ｂｅｇｉｎ  ｐｒｏｇｒａｍ
Ｓｅｃｒｅｔ＝ＧｅｔＳｅｃｒｅｔ（Ｃｈａｌｌｅｎｇｅ）
／＊プログラムは、Ｓｅｃｒｅｔをユーザと＊
＊共有する秘密として使用する          ＊／
ｅｎｄ  ｐｒｏｇｒａｍ
この場合、Ｃｈａｌｌｅｎｇｅは、プログラムを送信しているユーザが知っているチャレンジ−レスポンス・ペアからのチャレンジである。
【０１７７】
ＧｅｔＳｅｃｒｅｔ（Ｃｈａｌｌｅｎｇｅ）を評価するためには、ｈ１（ｈ１（Ｐｒｏｇｒａｍ），ｆ（Ｃｈａｌｌｅｎｇｅ））を評価する必要がある。ｈ１（Ｐｒｏｇｒａｍ）を評価する際には、Ｃｈａｌｌｅｎｇｅの実際の値を含む、「プログラム開始」と「プログラム終了」との間に含まれるすべてのものが、ハッシュ関数ｈ１を通過する。Ｃｈａｌｌｅｎｇｅに対する異なる値を含む同じプログラム・コードは、異なるプログラム・ハッシュを有し、結果は異なる秘密が生じる。
【０１７８】
ユーザは、Ｓｅｃｒｅｔを決定することができる。その理由は、ユーザは、チャレンジ−レスポンス・ペアを有し、かつ、Ｃｈａｌｌｅｎｇｅに対するレスポンスを知っているからである。ユーザは、ｈ１（ｈ１（Ｐｒｏｇｒａｍ），ｒｅｓｐｏｎｓｅ）を計算して、Ｓｅｃｒｅｔを決定することができる。逆に、攻撃者は、秘密が何であるかを決定することはできない。攻撃者は、ＣＰＵＦに送られたプログラムを確かめることにより、Ｃｈａｌｌｅｎｇｅが何であるかを確認することができる。しかし、ＣＰＵＦチップは、ＰＵＦの測定可能な物理特性を変更しない限り、ＰＵＦにアクセスすることができないように設計されるので、攻撃者は、ＰＵＦを精査して、レスポンスが何であるかを知ることはできない。
【０１７９】
秘密鍵を使用した制御プログラムを用いることにより、本明細書に記載する制御アルゴリズムを、公開鍵暗号化システムを使用している既存のアプリケーションに容易に適用することができる。公開鍵暗号化システムにおいては、他の個人と機密保護状態で通信することを所望する個人は、その個人の公開鍵を使用して、その個人のみが理解可能なメッセージを暗号化することができる。この公開鍵は、ある信頼できる当事者から最初に入手され、その当事者は、公開鍵をすでに知っており、個人との認証チャネルが存在している。ＣＰＵＦを用いて、デバイスと機密状態で通信することを所望する個人は、チャレンジ−レスポンス・ペアのチャレンジを使用して、その個人がデバイスと共有し、かつ、自分が通信するために使用可能な対称鍵を生成する。チャレンジ−レスポンス・ペアは、最初、認証されたプライベート・チャネルが存在する信頼できる当事者から入手される。
【０１８０】
［制御プログラムを使用した新規のＣＲＰの入手］
以下の説明において、ＣＰＵＦチップ４８の所有者又はユーザは、プログラムをチップ４８の入出力（Ｉ／Ｏ）ポート１０５を介して、ＣＰＵＦチップの制御モジュール５４に送る（図１４参照）。
【０１８１】
図２７を参照すると、ＣＰＵＦチップへの機密保護リンクを有する所有者２３４は、プロセス６０２に従ってプログラムＢｏｏｔｓｔｒａｐｐｉｎｇ  Ｐｒｏｇｒａｍを使用して、新規のＣＲＰを入手することができる。
【０１８２】
／＊Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｐｒｏｇｒａｍ＊／
ｂｅｇｉｎ  ｐｒｏｇｒａｍ
Ｒｅｓｐｏｎｓｅ＝ＧｅｔＲｅｓｐｏｎｓｅ（ＰｒｅＣｈａｌｌｅｎｇｅ）；
Ｏｕｔｐｕｔ（Ｒｅｓｐｏｎｓｅ）；
ｅｎｄ  ｐｒｏｇｒａｍ
プロセス６０２は、プロセス５１２に類似している（図１７）。以下の説明は、プロセス５１２のステップとは異なるプロセス６０２のステップに焦点を当てて行う。ステップ６０４において、所有者２３４は、プリチャレンジ（ＰｒｅＣｈａｌｌｅｎｇｅ）をランダムに選択して、プリチャレンジを含むプログラム（Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｐｒｏｇｒａｍ）を制御モジュール５４に送信する。ステップ６０６及び６０８において、新規のＣＲＰに対するチャレンジが、式「ｃｈａｌｌｅｎｇｅ＝ｈ１（ｈ１（Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｐｒｏｇｒａｍ），ＰｒｅＣｈａｌｌｅｎｇｅ）」を用いて計算される。新規のＣＲＰに対するレスポンスは、Ｒｅｓｐｏｎｓｅであり、新規のＣＲＰに対するチャレンジは、「ｈ１（ｈ１（Ｂｏｏｔｓｔｒａｐｐｉｎｇ  Ｐｒｏｇｒａｍ），ＰｒｅＣｈａｌｌｅｎｇｅ）」である。
【０１８３】
図２８を参照すると、ＣＰＵＦチップへの非機密保護リンクを有し、他の誰も知らず、以前に使用したことがないＣＲＰを有する所有者２３４は、プロセス６１０に従ってプログラム、Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍを使用して、新規のＣＲＰを入手することができる。
【０１８４】
／＊Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ＊／
ｂｅｇｉｎ  ｐｒｏｇｒａｍ
ＮｅｗＲｅｓｐｏｎｓｅ＝ＧｅｔＲｅｓｐｏｎｓｅ（ＰｒｅＣｈａｌｌｅｎｇｅ）；
Ｏｕｔｐｕｔ（ＥｎｃｒｙｐｔＡｎｄＭＡＣ（ＮｅｗＲｅｓｐｏｎｓｅ，ＧｅｔＳｅｃｒｅｔ（ＯｌｄＣｈａｌｌｅｎｇｅ）））；
ｅｎｄ  ｐｒｏｇｒａｍ
プロセス６１０は、プロセス５６０に類似している（図２２）。以下の説明は、プロセス５６０とは異なるプロセス６１０のステップに焦点を当てて行う。ステップ６１２において、所有者２３４は、プリチャレンジＰｒｅＣｈａｌｌｅｎｇｅに対する任意の値を選
択し、ＯｌｄＣｈａｌｌｅｎｇｅの値を旧来のＣＲＰからのチャレンジに設定する。所有者２３４は、新規のプリチャレンジ及び旧来のプリチャレンジを含むプログラム（Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ）を制御モジュール５４に送信する。ステップ６１４及び６２０において、新規のチャレンジが、式「ｃｈａｌｌｅｎｇｅ＝ｈ１（ｈ１（Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ），ＰｒｅＣｈａｌｌｅｎｇｅ）」を用いて計算される。
【０１８５】
ステップ６１６及び６１８において、秘密鍵が、式「ｓｅｃｒｅｔ  ｋｅｙ＝ｈ2（ｈ2（Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ），ｏｌｄ  ｒｅｓｐｏｎｓｅ）＝ｈ２（ｈ２（Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ），ｆ（ＯｌｄＣｈａｌｌｅｎｇｅ））」を用いて計算される。新規のＣＲＰのレスポンスは、ＮｅｗＲｅｓｐｏｎｓｅであり、新規のＣＲＰのチャレンジは、「ｈ１（ｈ１（Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ），ＰｒｅＣｈａｌｌｅｎｇｅ）」である。
【０１８６】
プロセス６１０において、攻撃者は、プログラムを傍受し、それを自分自身のプログラムで置き換え、ＯｌｄＣｈａｌｌｅｎｇｅを自分がそれに対するレスポンスを知っているチャレンジで置き換えようと試みる可能性がある。攻撃者は、ＣＰＵＦチップを介してプログラムを実行して新規のレスポンスを生成し、新規のレスポンスをユーザに送ろうと試みる可能性がある。そうすることにより、攻撃者は、自分が強奪しようとしているレスポンスとは異なるレスポンスを入手することになる。その理由は、ＯｌｄＣｈａｌｌｅｎｇｅはプログラムの一部であり、ＧｅｔＲｅｓｐｏｎｓｅが、プリチャレンジを実行中のプログラムのランダム・ハッシュと結合して、レスポンスを生成するからである。
【０１８７】
以下の説明においては、「証明者」は、ＣＰＵＦに対するＣＲＰの自分自身のプライベート・リストを有しており、ユーザに信任されている人である。チップの製造業者は、他のユーザに対して証明者としての役割をもつことができる。ユーザがＣＲＰの自分自身のリストを確立した後で、第２のユーザが第１のユーザを信任する場合には、第１のユーザは別の１人のユーザに対して証明者としての役割をもつことができる。例えば、ユーザがチップの所有者を信任した場合には、チップの所有者は証明者としての役割をもつことができる。証明者は、更新プログラムを使用して新規のＣＲＰを生成し、新規のＣＲＰを機密保護チャネルを介してユーザに送信することができる。証明者により証明されたＣＲＰは、「証明済みＣＲＰ」と呼ばれる。次に、ユーザは、下記のプライベート更新プログラムを使用して、証明者が知らないＣＲＰを生成する。ユーザにとって私的なものであり、かつ、他の誰もが知らないＣＲＰは、「プライベートＣＲＰ」と呼ばれる。
【０１８８】
図２９を参照すると、証明済みＣＲＰを得たユーザ５９２は、ＣＰＵＦチップ４８に、下記のプログラムＰｒｉｖａｔｅ  Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍを送信することにより、プロセス６２２に従ってプライベートＣＲＰを生成することができる。この場合、ユーザ５９２とＣＰＵＦチップ４８との間のリンクは機密保護されていないと仮定し、証明済みＣＲＰは以前に使用されたことがないと仮定する。
【０１８９】
／＊Ｐｒｉｖａｔｅ  Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ＊／
ｂｅｇｉｎ  ｐｒｏｇｒａｍ
ＮｅｗＲｅｓｐｏｎｓｅ＝ＧｅｔＲｅｓｐｏｎｓｅ（ＰｒｅＣｈａｌｌｅｎｇｅ）；
Ｍｅｓｓａｇｅ＝ＰｕｂｌｉｃＥｎｃｒｙｐｔ（ＮｅｗＲｅｓｐｏｎｓｅ，ＰｕｂｌｉｃＫｅｙ）；
Ｏｕｔｐｕｔ（Ｍｅｓｓａｇｅ，ＭＡＣ（Ｍｅｓｓａｇｅ，
ＧｅｔＳｅｃｒｅｔ（ＯｌｄＣｈａｌｌｅｎｇｅ）））；
ｅｎｄ  ｐｒｏｇｒａｍ
プロセス６２２は、プロセス５９０（図２５）に類似している。以下の説明は、プロセ
ス５６０のステップとは異なるプロセス６１０のステップに焦点を当てて行う。ステップ６２４において、ユーザ５９２は、新規のプリチャレンジ、旧来のチャレンジ、及びユーザの公開鍵（ＰｕｂｌｉｃＫｅｙ）を含むプログラム（Ｐｒｉｖａｔｅ  Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ）をＣＰＵＦチップ４８に送信する。Ｐｒｉｖａｔｅ  Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍにおいては、ＰｒｅＣｈａｌｌｅｎｇｅは、ユーザ５９２がランダムに選択した任意の数であり、ＯｌｄＣｈａｌｌｅｎｇｅは、証明済みＣＲＰのチャレンジであり、ＰｕｂｌｉｃＫｅｙは、ユーザの公開鍵である。
【０１９０】
ステップ６２６及び６３２において、新規のチャレンジが、式「ｃｈａｌｌｅｎｇｅ＝ｈ１（ｈ１（Ｐｒｉｖａｔｅ  Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ），ＰｒｅＣｈａｌｌｅｎｇｅ）」を用いて計算される。ステップ６２８及び６３０において、秘密鍵が、式「ｓｅｃｒｅｔ  ｋｅｙ＝ｈ２（ｈ２（Ｐｒｉｖａｔｅ  Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ），ｏｌｄ  ｒｅｓｐｏｎｓｅ）＝ｈ２（ｈ２（Ｐｒｉｖａｔｅ  Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ），ｆ（ＯｌｄＣｈａｌｌｅｎｇｅ））」を用いて計算される。新規のＣＲＰのレスポンスは、ＮｅｗＲｅｓｐｏｎｓｅであり、新規のＣＲＰのチャレンジは、「ｈ１（ｈ１（Ｐｒｉｖａｔｅ  Ｒｅｎｅｗａｌ  Ｐｒｏｇｒａｍ），ＰｒｅＣｈａｌｌｅｎｇｅ）」である。
【０１９１】
ユーザ以外の誰かがＮｅｗＲｅｓｐｏｎｓｅを読むことができる可能性は低い。その理由は、ユーザの公開鍵で暗号化されているからである。攻撃者が、ＰｕｂｌｉｃＫｅｙを自分自身の公開鍵で置き換えようとした場合、異なるレスポンスを入手することになる。その理由は、ＰｕｂｌｉｃＫｅｙは、プログラムの一部であり、そのためＧｅｔＲｅｓｐｏｎｓｅの出力を間接的に変化させるからである。ＭＡＣは、ユーザが、（おそらく、ユーザにＣＲＰを丁度導入した証明者）と旧来のＣＲＰを共有する人によってのみ偽造することができる。その人が信頼できると仮定した場合、ユーザは、ＭＡＣがＣＰＵＦチップにより生成されたものであり、それ故、ＮｅｗＲｅｓｐｏｎｓｅは、実際にＣＰＵＦチップにより生成されたレスポンスであることを確信することができる。
【０１９２】
［複数の個人特性を用いた匿名の維持］
図９のＣＰＵＦｇ回路１８６おいては、ユーザは、ライン１９７上で異なる数のＰｅｒｓｏｎａｌｉｔｙＳｅｌｅｃｔ信号を使用することにより、ＣＰＵＦｇ回路１８６に対して異なる個人特性を選択することができる。個人特性の選択を実行するための制御アルゴリズムについて以下に説明する。自分のＩＤを秘匿しようとするＣＰＵＦチップ４８（図１４）の所有者は、ＣＰＵＦチップの「匿名の所有者」と呼ばれる。ＣＰＵＦチップの匿名の所有者のＩＤに関するすべての情報源は、他のプロトコル層によりすでに除去されていると仮定する。制御アルゴリズムは、ＣＰＵＦチップ４８が、匿名の所有者のＩＤを漏洩することを防止するように設計される。（単なるタイミングの考慮から少し後でのメッセージの到着をあるノードにおいてメッセージの送信と相互に関連づける）トラヒック分析を使用することができない匿名の導入を使用している多くの人々がいると仮定する。
【０１９３】
制御アルゴリズムは、ＣＰＵＦチップ４８に送信されるプログラムが、ＰｅｒｓｏｎａｌｉｔｙＳｅｌｅｃｔを自由に設定できないように設計される。そうでない場合には、これらのプログラムは、ＣＰＵＦチップ４８を既知の個人特性に入れることができ、個人特性の選択器を有する目的が失われる。個人特性の選択を実行するために、ＣＰＵＦチップ４８により以下の基本手順が実行される。
【０１９４】
・ＣｈａｎｇｅＰｅｒｓｏｎａｌｉｔｙ（Ｓｅｅｄ）：この手順は、個人特性をｈ（ＰｅｒｓｏｎａｌｉｔｙＳｅｌｅｃｔ，Ｓｅｅｄ）に変更する。ここで、ｈはランダム・ハッシュ関数である。
【０１９５】
・ＲｕｎＰｒｏｇ（Ｐｒｏｇｒａｍ）：この手順は、ＰｅｒｓｏｎａｌｉｔｙＳｅｌｅｃｔを変更することなく、引数として供給されるプログラムを実行する。プログラムが外部からＣＰＵＦチップ内にロードされ、ＲｕｎＰｒｏｇを通過することなく実行された場合には、ＰｅｒｓｏｎａｌｉｔｙＳｅｌｅｃｔは、ゼロ、すなわち、デフォルトの個人特性に設定される。
【０１９６】
・Ｄｅｃｒｙｐｔ（ｍｅｓｓａｇｅ，ｋｅｙ）：この手順は、暗号鍵ｋｅｙで暗号化されたメッセージｍｅｓｓａｇｅを解読するために使用される。
・ＨａｓｈＷｉｔｈＰｒｏｇ（ｘ）：この手順は、ｈ（ｈ（ｐｒｏｇｒａｍ），ｘ）を計算するために使用される。
【０１９７】
・Ｈａｓｈ（．．．）：この関数は、ランダム・ハッシュ関数である。
・Ｂｌｉｎｄ（ｍｅｓｓａｇｅ、ｆａｃｔｏｒ）：この手順は、メッセージｍｅｓｓａｇｅにブラインディング要因ｆａｃｔｏｒを適用するために使用される。ブラインディング要因については以下に説明する。
【０１９８】
［現時点の個人特性の選択］
ＣＰＵＦチップ４８の匿名の所有者が、ＣＰＵＦチップのデフォルトの個人特性以外の個人特性を提示することを所望する場合には、その所有者は、ＣＰＵＦチップに送信中のすべてのプログラムを傍受し、それらを自分自身のコードの一片に収容する。
【０１９９】
／＊Ｓｅｌｅｃｔ  Ｐｅｒｓｏｎａｌｉｔｙ  Ｐｒｏｇｒａｍ＊／
ＥＳｅｅｄ＝
／＊秘密で暗号化された個人特性シード＊／
ＥＰｒｏｇｒａｍ＝
／＊秘密に暗号化されたカプセル化プログラム＊／
ｂｅｇｉｎ  ｐｒｏｇｒａｍ
Ｓｅｃｒｅｔ＝ＧｅｔＳｅｃｒｅｔ（Ｃｈａｌｌｅｎｇｅ）；
Ｓｅｅｄ＝Ｄｅｃｒｙｐｔ（ＥＳｅｅｄ，Ｓｅｃｒｅｔ）；
Ｐｒｏｇｒａｍ＝Ｄｅｃｒｙｐｔ（ＥＰｒｏｇｒａｍ，Ｓｅｃｒｅｔ）；
ＣｈａｎｇｅＰｅｒｓｏｎａｌｉｔｙ（Ｓｅｅｄ）；
ＲｕｎＰｒｏｇ（Ｐｒｏｇｒａｍ）；
ｅｎｄ  ｐｒｏｇｒａｍ
Ｓｅｌｅｃｔ  Ｐｅｒｓｏｎａｌｉｔｙ  Ｐｒｏｇｒａｍにおいては、「ｂｅｇｉｎ  ｐｒｏｇｒａｍ」の前に位置するラインは、プログラムを伴うが、プログラムのハッシュに参加しないデータの一片である。ＥＰｒｏｇｒａｍがハッシュに内蔵されている場合には、それを暗号化することはできない。その理由は、暗号鍵は、暗号化されたプログラムに依存するからである。Ｓｅｅｄは、Ｓｅｃｒｅｔにより暗号化された任意に選択されたシード値である、Ｅｓｅｅｄから由来するものである。Ｃｈａｌｌｅｎｇｅは、匿名の所有者のＣＲＰのうちの１つのチャレンジである。
【０２００】
このような方法でプログラムをカプセル化することにより、匿名の所有者は、その所有者がユーザのプログラムを実行した場合、ＣＰＵＦが表示している個人特性を変更することができる。ユーザのプログラムが、使用している個人特性を決定可能にする基本手順はない。ＣｈａｎｇｅＰｅｒｓｏｎａｌｉｔｙと共に使用されるシードは暗号化されるので、ユーザは自分が使用している個人特性を知ることはできない。ユーザのプログラムは暗号化されるので、所有者の通信を監視しても、ユーザはＣＰＵＦに送信中のプログラムが、自分自身のプログラムかどうかを判断することはできない。
【０２０１】
所有者を匿名のままにしておくことの１つの利点は、複数の相互に信用していない当事
者が、同じ計算デバイスを機密保護状態で使用できることである。
［匿名の導入］
「匿名の導入」のプロセスについて以下に説明する。匿名の導入の際には、ＣＰＵＦチップの所有者は、ユーザに証明者が証明したＣＲＰを提供する。そのため、ユーザはＣＲＰを使用してＣＰＵＦチップ上で証明済みの実行を行うことができる。所有者は、ユーザにＣＲＰがどのＣＰＵＦに対応するのかを示すことを所望しない。匿名の導入後に、ユーザは証明済みのＣＲＰを入手し、ＣＲＰを使用して他のＣＲＰを生成し、ＣＰＵＦチップ上で証明済みの実行を行うことができる。しかし、ユーザは、自分がどのＣＰＵＦを使用しているのかを判断することはできず、かつ、自分が他のユーザ又は証明者と同じＣＰＵＦと通信しているかどうかも判断することはできない。
【０２０２】
図３０は、匿名の導入のモデルである。ユーザ２２２は、ＣＰＵＦチップ２２４に対するＣＲＰを有しておらず、ＣＲＰの自分自身のプライベート・リストを確立することを希望する。証明者２３２及び所有者２３４は相互に通信し、所有者２３４及びユーザ２２２は相互に通信し、所有者２３４はＣＰＵＦチップ２２４と通信する。証明者２３２と、所有者２３４及びユーザ２２２との間の通信チャネルは、機密保護されている（プライベート及び認証されている）。所有者２３４とＣＰＵＦチップ２２４との間の通信チャネル２２６は機密保護されていない。証明者２３２及びユーザ２２２は協力して、ＣＲＰが同じＣＰＵＦチップのためのものであるかどうかを判断する。
【０２０３】
匿名の導入のプロトコルの一例は、下記の例で説明される「秘匿」と呼ばれる手順を使用することができる。アリスは、ボブに自分の代わりに署名することを所望しているが、アリスは、ボブに自分が何に署名したのかを知られたくない。そうするために、アリスは「秘匿係数」を適用することにより、メッセージを隠す。ボブは、秘匿されたメッセージを受け取り、それに署名し、署名した秘匿メッセージをアリスに返送する。次に、アリスは、ボブの署名にダメージを与えることなく秘匿係数を除去する。その結果、得られるメッセージにはボブが署名したものとなるが、ボブが多くのメッセージに署名した場合には、ボブは秘匿されていないメッセージのどれに自分がいつ署名したのかは分からない。
【０２０４】
匿名の導入のプロトコルは下記のステップを含む。
ステップ３００：ＣＰＵＦチップの所有者は、証明者及びユーザの公開鍵からチャレンジを入手する。所有者は図３１に示されるプログラムをＣＰＵＦチップに送信する。
【０２０５】
ステップ３０２：所有者は、ＣＰＵＦチップからの出力を解読し、ＭＡＣをチェックし、証明者の公開鍵で暗号化されたプログラム（ＭＡＣの関与する部分のみ）のコピーと共に、Ｍｅｓｇ５を証明者に送る。
【０２０６】
ステップ３０４：証明者はプログラムを解読し、それが公式の匿名の導入プログラムであることをチェックし、次に、それをハッシュして、ＣｅｒｔＳｅｃｒｅｔを計算する。次に、証明者は、ＭＡＣによりＭｅｓｇ４が本物であることを証明することができる。証明者はＭｅｓｇ４に署名し、結果を所有者に送る。
【０２０７】
ステップ３０６：所有者は、メッセージの秘匿を解除し、Ｍｅｓｇ３の署名済みバージョンで処理を終了する。所有者は、署名及びＭｅｓｇ３のＭＡＣをチェックして、証明者が自分のＩＤをユーザに送信していないことを確認する。所有者は、秘匿が解除されたメッセージをユーザに送信する。このメッセージは、実際には、証明者が署名済みのＭｅｓｇ３のバージョンである。
【０２０８】
ステップ３０８：ユーザは、署名をチェックし、自分の秘密鍵でＭｅｓｇ２を解読して、ＣＲＰを入手する。
上記プロトコルの場合には、ＵｓｅｒＰｕｂＫｅｙ及びＣｅｒｔＣｈａｌｌｅｎｇｅが暗号化され、そのため、ユーザがＣＰＵＦチップに送信するメッセージを、証明者のチャレンジ又はユーザの公開鍵と相互に関連づけることが困難である。Ｓｅｅｄは、証明者又はユーザが、ユーザが表示されている個人特性に自発的に入り込む方法を知るのを防止するために暗号化される。ＰｒｅＣｈａｌｌｅｎｇｅＳｅｅｄは、証明者がステップ３０４においてプログラムをチェックする際に、新しく生成されたチャレンジを発見することを防止するために暗号化される。Ｍｅｓｇ５及びＭｅｓｇ６の間の暗号化は、ＣＰＵＦから所有者へのメッセージと所有者から証明者へのメッセージが相互に関連することを防止する。
【０２０９】
２つ以上のカプセル化層を使用することができる。匿名の導入によりＣＰＵＦの個人特性にアクセスしたエンティティは、このＰＵＦに他の当事者を引き合わせることができる。より詳細に説明すると、このエンティティは、自分が受信した署名入りＣＲＰを証明者に返送し、自分が匿名でＣＰＵＦを他の当事者に引き合わせた場合に、証明者を自分の個人特性に対する証明者としての役割をもたせるようにすることができる。
【０２１０】
ＣＰＵＦチップ及び制御アルゴリズムは、例えば、スマートカード用途及び証明済み実行で使用することができる。
［スマートカード用途］
図３２を参照すると、スマートカード２０６は、ＰＵＦ回路２０９、機能回路２７８、及び制御回路２８０を有する集積回路チップ２０８を含む。ＰＵＦ回路２０９は、チャレンジが選択可能な多数の信号経路を含む遅延回路２１０を有する。一例を挙げて説明すると、チャレンジは６４ビット数であってもよい。スマートカード２０６は、プログラムを受信するための入出力（Ｉ／Ｏ）ポート２１２を含む。カードリーダ２１４は、スマートカードを認証するために使用される。カードリーダ２１４は、スマートカード２０６を受け入れるためのポート２１６と、プロセッサ２１８と、チャレンジ−レスポンス・ペアを記憶するための記憶装置２２０とを含む。プロセッサ２１８は、チャレンジを選択し、チャレンジを含むプログラムをスマートカード２０６に送信し、スマートカードからメッセージを受信する。メッセージは、機能回路２７８が生成した計算結果、及びチャレンジへのレスポンスを含む。プロセッサ２１８は、メッセージを処理してレスポンスを生成し、スマートカードから受信したレスポンスを、チャレンジに関連して記憶装置２２０に記憶されたレスポンスと比較する。レスポンスが一致した場合には、スマートカード２０６が認証される。
【０２１１】
図３３は、ＣＰＵＦチップを含むスマートカードを認証するためのプロセス３７０である。スマートカード会社は、同じリソグラフィ・マスクにより製造したＰＵＦチップを含む非常に多数のスマートカードを製造する。各スマートカードは一意のシリアル番号を有する。プロセス３７０は下記のステップを含む。
【０２１２】
ステップ３７２：スマートカード会社は、スマートカードを選択し、プロセス６０２（図２７）を使用するスマートカードに対する一組のＣＲＰを生成する。ＣＲＰは、機密保護データベースに記憶される。
【０２１３】
ステップ３７４：スマートカード会社は、スマートカードをカード所有者に配布し、スマートカードのシリアル番号をカード所有者のアカウントにリンクする。
ステップ３７６：カード所有者が自分のアカウントにアクセスし、スマートカード会社が提供するサービスを利用することを所望する場合、カード所有者は、認証のためにカードリーダにスマートカードを提示する。
【０２１４】
ステップ３７８：カードリーダは、機密保護データベースから予め記憶されたＣＲＰを
検索し、以下に説明するプロセス６３４に従ってスマートカードを認証する。
図３４を参照すると、プロセス６３４は、カードリーダがＣＰＵＦチップ４８を含むスマートカードを認証可能にする。プロセス６３４はプロセス５１８に類似している（図２０）。以下の説明は、プロセス５１８とは異なるプロセス６３４内のステップに焦点を当てて行う。ステップ６３６において、カードリーダは、下記のプログラム、Ｓｍａｒｔｃａｒｄ  Ｐｒｏｇｒａｍをスマートカードに送る。
【０２１５】
／＊Ｓｍａｒｔｃａｒｄ  Ｐｒｏｇｒａｍ＊／
ｂｅｇｉｎ  ｐｒｏｇｒａｍ
Ｓｅｃｒｅｔ＝ＧｅｔＳｅｃｒｅｔ（Ｃｈａｌｌｅｎｇｅ）；
／＊このプログラムは、スマートカードに銀行に送信される
メッセージを生成させるための命令を含む＊／
Ｏｕｔｐｕｔ（Ｍｅｓｓａｇｅ，ＭＡＣ（（Ｍｅｓｓａｇｅ，Ｒ），Ｓｅｃｒｅｔ））；
ｅｎｄ  ｐｒｏｇｒａｍ
Ｓｍａｒｔｃａｒｄ  Ｐｒｏｇｒａｍにおいては、Ｒは１回使用の回数であり、Ｃｈａｌｌｅｎｇｅはカードリーダのチャレンジである。ステップ６３８及び６４２において、秘密鍵が、式「ｓｅｃｒｅｔ  ｋｅｙ＝ｈ２（ｈ２（ｐｒｏｇｒａｍ），ｒｅｓｐｏｎｓｅ）」を用いて計算される。ステップ６４０及び６４４において、ＭＡＣが、式「ＭＡＣ（（ｍｅｓｓａｇｅ，Ｒ），ｓｅｃｒｅｔ  ｋｅｙ）」を用いて計算される。１回使用の回数Ｒは、スマートカードが実行の間に保存される状態を有する場合に役に立つ。この場合、メッセージの新しさを確保することが重要である。スマートカードのメッセージのプライバシーが１つの要件である場合には、メッセージがＭＡＣを生成するために使用されるのと同じ鍵により暗号化されている場合に、異なるプログラムを使用することができる。
【０２１６】
スマートカード会社がカード所有者にスマートカードを発行する前に、スマートカード会社は、一組の新規のＣＲＰを生成する。スマートカード２０６が認証される度に、新規のＣＲＰの一部が使用される。一組のＣＲＰの全部を使用した場合には、スマートカード会社はプログラムＲｅｎｅｗａｌ  Ｐｒｏｇｒａｍ及びＰｒｉｖａｔｅ  Ｒｅｎｅｗａｌ
Ｐｒｏｇｒａｍを用いて新規の一組のＣＲＰを生成する。
【０２１７】
ＰＵＦを含んでいないスマートカードを使用した場合には、スマートカードを有している攻撃者は、種々のタイプの攻撃を使用して鍵情報（スマートカード内のどこかに隠されているデジタル鍵）を抽出することにより、コピーを生成することができる。誰かがある期間自分のカードを紛失した場合、自分のカードは潜在的にコピーされている。それ故、スマートカードを物理的に所有していても、必ずしも安全であるとはいえない。認証及び識別可能なスマートカードのＰＵＦを所有していれば、攻撃者が抽出可能なデジタル鍵はもはや必要ない。スマートカードのハードウェア自身が秘密鍵である。この鍵はコピーすることができない。それ故、誰でもＰＵＦスマートカードを制御できなくなる恐れがあるが、それを検索し、引き続き使用することができる。このようにして、機密保護を永久に失うことなく、ＰＵＦスマートカードを他の誰かに貸すことができる。
【０２１８】
ＰＵＦは、その人が元のカードを所有しているかどうかをチェックするために、クレジット・カードで使用するのに適している（すなわち、その人は、友達からクレジット・カードを借りて、鍵情報を抽出し、クレジット・カードを返却し、偽造品を作ることができない）。
【０２１９】
攻撃者が「サービスの拒否」攻撃を行うのを防止するために、スマートカードがデジタル・チャレンジ−レスポンス・プロトコルを用いて自身を識別することが必要となる場合があり、その後に、カードリーダは、カードリーダが有するＣＲＰの限定された数のうち
の１つでスマートカードにチャレンジする。
【０２２０】
［証明済み実行］
証明済み実行では、特定のプロセッサ上で実行の証明を必要とする用途においてＣＰＵＦチップが使用される。例えば、大部分のコンピュータ・ユーザは、コンピュータの処理能力の一部しか使用しない。未使用の計算能力を引き出して、分散方式で長い計算を行うことができる。しかし、このタイプの計算は、信頼性が低い、その理由は、計算を要求している人は、その計算が不正なしで行われたことを知る方法がないからである。ＣＰＵＦチップを使用した場合には、特定の計算が特定のチップ上で行われたことを証明する証明書を生成することができる。そして、計算を依頼する人は、チップの所有者に依存する代わりに、チップを製造したことを保証することができるチップ製造業者の信頼性に依存することができる。
【０２２１】
証明済みの実行は、２つの方法で行うことができる。計算は、機密保護チップで直接行うか、又は機密保護チップの管理コードにより、高度にインタラクティブな方法で監視されているより高速の機密保護されていないチップで行うこともできる。
【０２２２】
ＣＰＵＦチップを使用して、ソフトウェア認可を容易にし、知的所有権保護を強化することができる。例えば、ソフトウェア・コードは、認証可能なプロセッサで実行するように設計することができる。海賊版のコードは実行できない。１つの方法は、ＣＰＵＦのチャレンジ−レスポンス・ペアを用いてソフトウェア・コードを命令単位をベースとして暗号化する方法である。命令は、ＣＰＵＦチップで解読されるが、専用のチップによってのみ解読することができる。
【０２２３】
一例を挙げて説明すると、アリスは、週末にＣＰＵＦチップを含むボブのコンピュータで計算上高価なプログラムを実行することを所望している。ボブはこれまでに使用したことがないＣＲＰを有している。アリスは、結果がボブ又は他の誰かに改ざんされなかったことを確認することを所望している。アリスはＣＲＰを何ら有していない。アリスがプライベートＣＲＰを入手し、そのプライベートＣＲＰを使用して、ＣＰＵＦチップで証明済み実行を可能にするプロセス４００について以下に説明する。図３５を参照すると、プロセス４００は下記のステップを含む。
【０２２４】
ステップ３８２：ボブは、アリスにＣＲＰを送信する。
ステップ３８４：アリスは、ボブから得たＣＲＰに基づいて、プロセス６２２（図２９）により自分用の新規のＣＲＰを生成する。
【０２２５】
ステップ３８６：アリスがより多くのＣＲＰを生成することを所望する場合には、ステップ３８４で確立されたＣＲＰに基づいて、プロセス６１０（図２８）によりより多くのＣＲＰを生成することができる。
【０２２６】
ステップ３８８：アリスは、下記のプログラムＣｅｒｔｉｆｉｅｄ  Ｅｘｅｃｕｔｉｏｎ  ＰｒｏｇｒａｍをＣＰＵＦチップに送信して、プロセス６３４類似のプロセスにより証明済み実行を行う。
【０２２７】
／＊Ｃｅｒｔｉｆｉｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｐｒｏｇｒａｍ＊／
ｂｅｇｉｎ  ｐｒｏｇｒａｍ
Ｓｅｃｒｅｔ＝ＧｅｔＳｅｃｒｅｔ（Ｃｈａｌｌｅｎｇｅ）；
ＣＰＵＦチップの機能回路に命令して、
証明済み実行を行い、
Ｒｅｓｕｌｔに加えられる結果を生成するサブルーチン
Ｏｕｔｐｕｔ（Ｒｅｓｕｌｔ，ＭＡＣ（Ｒｅｓｕｌｔ，Ｓｅｃｒｅｔ））；
ｅｎｄ  ｐｒｏｇｒａｍ
Ｃｅｒｔｉｆｉｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｐｒｏｇｒａｍにおいては、Ｃｈａｌｌｅｎｇｅは、アリスがステップ３８６又は３８８で生成したチャレンジである。
【０２２８】
プロセス４００は、１回使用の乱数を使用しない。証明済み実行では、見込み違いとなることがない計算が含まれていると仮定する。すなわち、計算では、同じ計算がいつ行われても、同じ結果が示される。
【０２２９】
証明済み実行を行う場合には、アリスは、計算が適切に行われるように、ボブのＣＰＵＦチップに委託する。これにより、計算を行うのに使用されるすべてのリソース（メモリ、ＣＰＵ等）が、ＣＰＵＦチップ上に存在し、かつ、ＣＰＵＦ特性に含まれていることを確保することがより容易になる。ＣＰＵＦチップが機密保護状態でオフチップ・リソースを使用可能となるように、ＣＰＵＦチップを設計することができる。また、ＣＰＵＦチップが、証明済み実行により、他のネットワークで接続されたＣＰＵＦチップ及びデバイスの機能を使用できるように、ＣＰＵＦチップを設計することもできる。ＣＰＵＦは、使用している各コンピュータに対するＣＲＰを有し、上記プロトコルにより計算を行うことができる。
【０２３０】
［実験データ］
Ｘｉｌｉｎｘ  ＸＣ２Ｓ２００フィールド・プログラマブル・ゲート・アレイ  （ＦＰＧＡ）を使用して、一意に識別されるＰＵＦを形成することの実行可能性を決定する実験を行った。ＦＰＧＡは大量に製造され、製造プロセスは、可能な限り同じＩＣを製造して、歩留まり及び性能が最大となるように調整した。実験結果は、予測できるように設計した高度に最適化した製造プロセスでも、十分な変動があり、信頼性の高い識別ができることを示している。
【０２３１】
図３６を参照すると、自励発振ループ２３６は、ＦＰＧＡの参照テーブルにより実施される（鎖線で囲まれた）遅延回路２３８及びスイッチング回路２４０を含む。参照テーブルの動作は、ＸＯＲゲート２４１及びマルチプレクサ２４２によりモデル化することができる。ライン２４５上の信号は、遅延回路２３８に入力され、上部経路２４７と下部経路２４９とを切り替える２つの信号に二重化される。経路２４７及び２４９上の信号は、それぞれ、信号ライン２３９及び２３７を介してスイッチング回路２４０に入力される。スイッチング回路２４０の出力２５１は、遷移が遅い場合には立上りエッジ又は立下りエッジを切り替え、ライン２３７及び２３９を介してその入力に到着する。回路２４０は、遅延回路からの両方の出力が同じレベルである場合に、状態を切り替えるフリップフロップに類似している。
【０２３２】
異なる条件で異なるＦＰＧＡに対して多数のプロファイルが生成された。プロファイルは、１２８のチャレンジ−レスポンス・ペアの測定値を表す。すべてのプロファイルは、同じチャレンジにより確立された。２つのプロファイルのレスポンスにおける差を比較することにより、差の分布を得た。大部分の差がゼロに近い場合には、プロファイルは近接している。差がゼロ値から離れている場合には、プロファイルは離間している。実験結果は、差の分布は通常ガウス的であることを示している。それ故、２つのプロファイル間の差を標準偏差により特徴づけることができる。
【０２３３】
図３７を参照すると、各ラインは、第１のプロファイルと第２のプロファイルとの差を表す。水平軸は許容範囲を表し、垂直軸は任意のチャレンジについて、レスポンスの差が水平軸上に示すレスポンスの差より小さくなる確率を示す。第１のプロファイルは数本のラインに対して同じに維持され、室温で第１の試験ボード上で動作する「Ａｂｅ」と呼ばれるＦＰＧＡチップにより生成されたレスポンスを測定することにより得た。ライン２４２について、第２のプロファイルは、室温での第１の試験ボード上でＡｂｅにより生成されたレスポンスを２回目に測定することにより得た。２つのプロファイル間の差の標準偏差σは、約１×１０−５である。測定は、同じ温度で、同じボード上の同じチップ上で行ったので、結果は、時間の経過中の試験ボードの供給電力の変動を表す。
【０２３４】
ライン２４４については、室温で第２の試験ボード上でＡｂｅチップにより生成されたレスポンスを測定することにより、第２のプロファイルを得た。この場合、σ≒２．５×１０−５である。異なる試験ボード上で測定を行ったので、結果は、異なる試験ボード間の供給電力の変動を反映している。ライン２４６、２４８及び２５０について、第２のプロファイルは、それぞれ室温より１０度、２０度及び３０度高い温度で、第１の試験ボード上のＡｂｅチップからのレスポンスを測定することにより得た。この場合、σ≒５×１０−５〜１．５×１０−４であった。ライン２５２及び２５４について、第２のプロファイルは、第１の試験ボード上で、それぞれ「Ｈａｌ」及び「Ｗａｌｔ」と呼ばれるＦＰＧＡチップからのレスポンスを測定することにより得た。これらの場合、σ≒４×１０−４であった。これらの実験は、同じ試験ボード上の２つの異なるチップのプロファイル間の差が、異なる時間に測定された同じ試験ボード上の同じチップ、又は異なる試験ボード上の同じチップ、又は（３０℃変化する）異なる温度で測定された同じ試験ボード上の同じチップのプロファイル間の差より大きいことを示している。このことは、チップの遅延特性の測定に基づいて、異なるＦＰＧＡを識別することができることを証明している。このデータは、各チャレンジが、３０℃の温度変動があった場合、ＦＰＧＡのＩＤに関して０．７ビットの情報を供給することができ、１０℃の変動があった場合、１．５ビットの情報を提供することができることを示す。
【０２３５】
１０億の異なる構成要素を識別するには、１０１８＝２６０の構成要素を識別するのに十分なビット数が必要になる。許容される温度の変動により異なるが、これら６０ビットの情報を入手するには全部で４０〜９０のチャレンジが必要になる。ここに示した数字は、考慮の対象のＰＵＦ回路により変化する。回路のレイアウトを適切に設計することにより、各チャレンジからより多くのビットを抽出可能なＰＵＦを設計することができる。
【０２３６】
ＦＰＧＡを使用して図３のＰＵＦ回路１０１を実施する他の実験を行った。この実験の場合、２つ以上のＦＰＧＡ間の遅延を比較した。各ＦＰＧＡは、全く同じロジック回路を有し、ＰＵＦ回路を、ＦＰＧＡ内の全く同じ位置で実施した。ＦＰＧＡは、同じリソグラフィ・マスクにより製造された集積回路チップであると見なすことができる。
【０２３７】
ある実験では、各ＦＰＧＡは、図３の回路１０１のような自励発振ループを８個備えていた。各ループは、３２個のバッファ（短い遅延で入力をその出力にコピーするロジック・ゲート）と１つのインバータを含む。ループの周波数は、ある期間（通常は、外部の５０ＭＨｚのオシレータの２２０サイクルである）内に発生した発振の回数を測定することにより決定した。ループの周期は約６０ｎｓであった。
【０２３８】
実験結果の以下の説明においては、標準偏差を百万分の１（ｐｐｍ）単位で表す。周波数ｆ０の周辺のｎｐｐｍの偏差はｎ・ｆ０／１０６の偏差に対応する。
図３８を参照すると、グラフ４７２は、異なるＦＰＧＡ上の４つのＰＵＦ回路の測定値のヒストグラムを示す。水平軸は任意の単位による遅延を表す。垂直軸は確率の密度を示す。ヒストグラムは、４つの異なるＦＰＧＡに対する測定誤差とＦＰＧＡ間変動との間の関係を示す。各ピークは異なるＦＰＧＡを示す。ピークの幅は測定誤差を示す。測定は補償なしで行った。
【０２３９】
図３９を参照すると、グラフ４７４は、異なるＦＰＧＡ上の４つの補償ＰＵＦの測定値のヒストグラムを示す。水平軸は補償された測定値を示し、各データ点は２つの測定値の比を表す。垂直軸は確率の密度を示す。ヒストグラムは、４つの異なるＦＰＧＡに対する測定誤差とＦＰＧＡ間変動との間の関係を示す。５０００ｐｐｍ〜３００００ｐｐｍの補償測定範囲を有するＦＰＧＡ間遅延の標準偏差は、測定のために使用された一組のループに依存する。ヒストグラム４７２及び４７４の４つのピークは、ＦＰＧＡ間の変動が測定誤差よりも大きいことを示す。このことは、同じ測定誤差であるにも拘わらず、異なるＦＰＧＡ間で識別することができることを示す。
【０２４０】
図４０を参照すると、グラフ４７６は、オン又はオフしたＦＰＧＡ上に他のループを有する発振ループの測定値を表す２つのヒストグラムを示す。水平軸は任意の単位での時間の測定値を示す。垂直軸は確率の密度を示す。他のループの影響（約１０ｐｐｍである２つのピーク間の距離で示す）は、測定誤差（ピークの幅で示す）より小さい。それ故、あるループから他のループへの干渉は、２つのループが近接する周波数で発振していない限り、チップの識別を妨害しない。
【０２４１】
図４１を参照すると、グラフ４７８は、それぞれが、異なる供給電力電圧に対する発振周波数の測定値を表す２つのヒストグラムである。水平軸はボルト単位の供給電力を表す。垂直軸は補償された遅延を表す。ＦＰＧＡの２．５Ｖの動作点の周囲における電圧による補償測定値の変動は、約３０００ｐｐｍ／Ｖである。実際には、外部の供給電力変動は、１％未満に維持することができ、この変動は１％×２．５Ｖ×３０００ｐｐｍ／Ｖ＝７５ｐｐｍに対応する。それ故、供給電圧を許容範囲内に維持するには、市販の電圧調整器で十分である。この実験の場合、補償測定値は、約２．７Ｖの極値を有する。ＦＰＧＡを定格電圧の２．５Ｖではなく２．７Ｖで動作することにより、測定の確実性を更に改善することができる。
【０２４２】
図４２を参照すると、グラフ４８０は、周囲温度が２５℃から５０℃に変動した場合の（１／２秒のサンプリング間隔での）周波数測定値対時間の関係を示す。２つのＦＰＧＡの同じ時間の温度変化は同じではなかった。水平軸は時間（１００ｍｓ単位）を表す。垂直軸は遅延を表す。周波数変動は、測定値を補償しない場合、約５００００ｐｐｍである。
【０２４３】
図４３を参照すると、グラフ４８２は、測定値を補償した場合には、周波数変動が１００ｐｐｍに低減することを示す。水平軸は時間（１００ｍｓ単位）を表す。垂直軸は補償測定値を表す。
【０２４４】
図４４を参照すると、グラフ４８４は、図４２の測定値のヒストグラムを表す。水平軸は遅延を表す。垂直軸は確率の密度を表す。
図４５を参照すると、グラフ４８６は、図４３の測定値のヒストグラムである。水平軸は補償遅延測定値を表す。垂直軸は確率の密度を表す。グラフ４８２及び４８６は、２５℃の温度変動があっても、２つのＦＰＧＡを補償測定値で識別することができることを示す。
【０２４５】
図４６及び図４７を参照すると、１２段のデマルチプレクサ４８６を備えたデマルチプレクサ回路４８４を含む２つのＰＵＦ回路上で実験を行った。各デマルチプレクサ４８６は、入力４８８上の信号を２つの出力４９０のうちの一方に切り替える。
【０２４６】
図４８及び図４９を参照すると、グラフ４９２及び４９４は、２つの異なるＦＰＧＡ上のデマルチプレクサ回路４８４に対する補償経路遅延測定値対チャレンジの関係を示す。各グラフにおいては、水平軸はチャレンジ数を表し、垂直軸は補償測定値を表す。これらのグラフは、チャレンジについてのレスポンスの依存性を示す。これらのグラフは、チャ
レンジとレスポンスとの間の関係において数々のパターンを示す。このパターンは、２つのＦＰＧＡに共通のものであり、遅延回路の任意の段における経路間の大きな差によるものである。２つのＦＰＧＡ間の差をチェックするためには、２つのグラフ間の小さな差をチェックする必要がある（すなわち、５０％の変動をカバーするグラフ上の１％の変動を探す必要がある）。これらの差は、２つのチップのグラフ間の模様に現れる。
【０２４７】
［物理的に隠蔽された鍵］
図５０Ａを参照すると、ＣＰＵＦチップ２５６の一例は、チップに記憶された一定値を使用して、チップ又はチップの計算結果を認証可能にする秘密（又は鍵）を生成する。チップ２５６は、機能モジュール５２、ＰＵＦ回路１００及び制御モジュール５４を含む。チップ２５６は、Ｉ／Ｏポート２５７を介して機能回路に結果を計算するように命令する、ユーザが送ったプログラムを受信する。チップ２５６は、更に、チップ２５６の製造後にメモリに書き込まれる２つの定数、すなわち定数Ａ及び定数Ｂを記憶するＥＥＰＲＯＭ４４４を含む。制御モジュール５４は、マルチプレクサ４４２を制御して２つの数値のうちの一方を選択し、選択された数値をプリチャレンジとして使用してチャレンジを生成する。そのチャレンジはＰＵＦ回路１００に送られて、第１の秘密が生成される。制御モジュール５４は、第１の秘密を使用して、機能モジュール５２からの計算結果を暗号化し、署名して、「半暗号化及び署名された」メッセージを生成する。メッセージに署名することは、メッセージに対するＭＡＣを生成することを意味する。次に、制御モジュール５４は、マルチプレクサ４４２を制御して２つの数値のうちの他方を選択し、選択された数値を使用してＰＵＦ回路１００に第２の秘密を生成させる。制御モジュール５４は、第２の秘密を使用して、半分暗号化し署名されたメッセージを暗号化し署名して、完全に暗号化し署名されたメッセージを生成する。完全に暗号化し署名されたメッセージは、次に、チップ２５６のユーザに出力される。
【０２４８】
チップ２５６は、ＰＵＦ回路１００内の遅延ラインの配線が制御モジュール５４及びＰＵＦ回路１００の出力をカバーするように設計される。攻撃者は、重ね合わせ配線を通り抜けない限りはＰＵＦ回路１００の出力を測定することはできない。配線を通り抜けると、ＰＵＦ回路１００の物理特性が変化する。攻撃者が第１の秘密を測定することができたとしても、第２の秘密を入手することはできない。その理由は、第１の秘密を測定した時に、ＰＵＦ回路がすでに修正されているからである。攻撃者は、両方の秘密を入手して、最終メッセージを解読又は不正使用することはできない。
【０２４９】
図５０Ｂを参照すると、ＣＰＵＦチップ７００は、ＲＯＭ７０４に記憶された内容を解読するために使用されるレスポンスを生成するＰＵＦ回路１００を含む。ＲＯＭ７０４の内容は、ｋビットの鍵Ｋを用いて暗号化される。ＰＵＦ回路１００は、チップ７００に記憶されたチャレンジ７０２を受信し、ライン７０６上にｋビット・レスポンスを出力するように配線される。ライン７０６上のレスポンスは、排他的ＯＲ演算によりヒューズ７０８の内容と結合されて、ライン７１４上に鍵Ｋが生成される。ヒューズは、溶断しているか否かにより、「０」又は「１」を表す。解読装置７１２は、鍵Ｋを受信し、ＲＯＭ７０４の内容を解読する。ＲＯＭ７０４の内容は、例えば、プログラムであってもよい。マイクロコントローラ７１６は、解読された内容に従って計算を行う。
【０２５０】
多数のチップ７００が共通の設計に基づいて製造される。これらのチップの製造コストを低減するために、各チップ７００に対して同じＲＯＭ７０４が使用されるので、すべてのチップに対する鍵Ｋは同じである。ＰＵＦ回路１００からのレスポンスは各チップに対して異なっているが、各チップに対するヒューズ・ビットを適当に設定することにより、ライン７１４を介して解読装置７１２に送られる鍵を、ＲＯＭ７０４の内容を解読するのに必要な同じ鍵に設定することができる。
【０２５１】
チップ製造の一例として、製造業者がチップの試験を行っている間にヒューズ・ビットが設定される。初期化回路７１８は、ライン７２０を介して製造業者から鍵Ｋを受け取り、ライン７２２を介してＰＵＦ回路１００からレスポンスを受け取る。初期化回路７１８は、適切な鍵Ｋを生成するのに必要なヒューズ・ビットを計算し、それに従ってヒューズ７０８を溶断する。この方法により、ＰＵＦ回路１００からのレスポンスは、チップ７００から決して出力されない。
【０２５２】
チップ７００のコピーを作ることはできない。攻撃者はヒューズの状態を知ることができても、ＰＵＦ回路１００のレスポンスを知ることはできない。それ故、Ｋの値は依然として秘密のままである。
【０２５３】
［同期ロジック回路を使用するＰＵＦ］
ＰＵＦ回路は、クロック同期回路により実施して、クロック・サイクルの周期が異なる場合に、入力に応じた回路の出力が異なるようにしてもよい。クロック同期回路を有する一組の集積回路チップが、一組のリソグラフィ・マスクにより製造される場合には、異なるダイ、ウェハ及び処理による製造中の変動により、各チップの遅延特性は一意なものとなる。クロック同期回路は、あるタイミング制約に適合するという仮定に基づいて設計される。構成要素及びワイヤの遅延は、最悪の動作に対して特徴づけられ、クロック周期は、レジスタの保持時間及びセットアップ時間の制約を考慮に入れて、すべてのレジスタ間の経路上の最悪の遅延より長く選択される。クロック周期が十分長い場合には、遅延特性が変動しても、異なるチップは同じ組合せ結合ロジック機能を有する。クロック同期回路を駆動するクロック信号の周期を故意に短くしてタイミング制約を満足しないようにすることにより、全く同じ機能を有する異なるチップは異なる動作をする。その理由は、その遅延特性が異なるからである。
【０２５４】
任意のチップを識別するために、入力刺激のシーケンスがチップに送られる。入力刺激が、特定のワイヤ及びゲートを刺激するようにクロック周期が選択される。チップの出力レスポンスは、特定の時点でサンプリングされる。入力刺激がチップ内の多数の経路を必ず働かせるようにし、サンプリング時間を適当に選択することにより、出力レスポンスは、チップ内の多数のゲート及びワイヤの遅延に依存するようになる。チップの入力刺激及び関連レスポンスは、チップの秘密の署名になる。
【０２５５】
チップ内の経路の数は、チップ内の入力又はゲートの数が増大するにつれて、指数的に増大する。入力刺激が分かれば、ゲートのある部分の遅延により、チップの出力レスポンスが決まる。指数的な数の入力刺激が存在するので、どの刺激が使用されたのかを推定して、署名を生成することは非常に困難である。
【０２５６】
図５１を参照すると、ＰＵＦ回路４５０は、レジスタ４５３により途切れているフィードバック・ループを含む組合せロジック回路４５２により表すことができる。回路４５２は、ライン４５４上の入力ビット・ベクトルを、ライン４５６上の出力ビット・ベクトルにマッピングする。マッピングは、ライン４５８上のクロック信号の周期に依存する。クロック信号の周期を変化させることにより、同じ入力ビット・ベクトルが、回路４５２内の異なるワイヤ及び構成要素を刺激して予測できない方法で異なる出力ビット・ベクトルを生成する。予測できないのは、製造プロセス中の変動により回路内に変動が起こるからである。また、各ゲート、ワイヤ又は経路の遅延は、近くのワイヤ上の遷移の複雑な関数であり、キャパシタンスの値は入力刺激により放出及び充填される。
【０２５７】
ＰＵＦ回路４５０を使用するために、ライン４５４上の入力刺激及びライン４５８上のクロック信号の周期が、クロック信号の変動がライン４５６上に異なる出力を生成するように選択される。ライン４５４上の入力は、ｎビット幅のビット・ベクトルであり、ライン４５６上の出力は、ｍビット幅のビット・ベクトルであると仮定する。ライン４５４上の入力信号は、入力遷移のシーケンスである（すなわち、低い方から高い方への、高い方から低い方へのシーケンスである）。例えば、ライン４５４が３ビット幅である場合には、３つの遷移のシーケンスの一例は、＜１，０，１＞→＜０，０，０＞→＜１，１，０＞である。入力遷移のシーケンスの数は、遷移の数において指数的であり、入力遷移の各シーケンスは、異なるクロック周期に対応することができる。異なる入力刺激及びレスポンスは、ＰＵＦ回路４５０の秘密署名として使用される。
【０２５８】
［秘密の署名］
通常、秘密の署名は、一組の署名｛Ｓ｝と見なすことができる。ここで、各署名ｓｊ∈Ｓは、＜Ｖｉｊ，ｃｌｏｃｋ＿ｐｅｒｉｏｄｉｊ，Ｏｉｊ＞、１≦ｉ≦Ｋｊを含む。Ｖｊｉ＝（ｖｉ１ｊ，．．．，ｖｉＫｊｊ）は回路の入力のシーケンスである、ここで、各ｖｉＫｊは回路４５２のｎ個の入力に供給されるｎビット・ベクトルである。｛Ｏｉｊ｝は、この回路の出力レスポンスのシーケンスであり、ｍビットの出力において生成されたＫｊビット・ベクトルのベクトルである。ｃｌｏｃｋ＿ｐｅｒｉｏｄｉｊは、回路がクロックで動作するクロック周期である。｛Ｖｉｊ，ｃｌｏｃｋ＿ｐｅｒｉｏｄｉｊ｝は、入力刺激と呼ばれ、｛Ｏｉｊ｝は回路レスポンスと呼ばれる。｛Ｏｉｊ｝を決定するために、｛Ｖｉｊ｝が、｛ｃｌｏｃｋ＿ｐｅｒｉｏｄｉｊ｝をクロック周期として使用する回路に供給され、ライン４５６上の回路４５２の出力が測定される。入力刺激及び回路レスポンスは、機密保護記憶箇所に記憶され、チップ４５０のシリアル番号により索引が付けられる。
【０２５９】
「ｆｏｏ」であるべきチップを、認証機関（ＡＡ）により認証する必要がある場合には、ＡＡは、チップ「ｆｏｏ」のシリアル番号で索引が付けられている一組の署名｛Ｓ｝から署名ｓｊを選択する。ＡＡは、入力刺激｛Ｖｉｊ，ｃｌｏｃｋ＿ｐｅｒｉｏｄｉｊ｝を使用してチップを刺激し、チップからのレスポンスを測定する。測定されたレスポンスが｛Ｏｉｊ｝とは異なる場合には、チップは「ｆｏｏ」ではない。レスポンスが一致した場合には、ＡＡは、異なる署名ｓｊを使用してこのプロセスを反復して行う。
【０２６０】
２つの異なるチップに対して｛Ｏｉｊ｝が同じである確率は、２つのチップが同じレスポンスを有するために満足させなければならない遅延関係の数に依存する。例えば、経路遅延は、出力がグリッチ、すなわち、０から１へ変化し０へ戻る変化、又はその逆を起こすのを防止するために、クロック周期より短くなければならない場合もあるし、又はある長さだけクロック周期より長くなければならない場合もある。別の例としては、異なるチップ間の相対的関係を維持するための回路の２つのサブ経路の場合、その遅延は、５％以上も異なっている場合がある。
【０２６１】
一例を挙げて説明すると、Ｋｊ＝２と仮定し、＜ｖｉ１，ｖｉ２＞入力ペアが、１つの遷移
を、チップの１本の経路を介して出力に伝搬させると仮定する。経路の遅延がＤである場合には、Ｄ≦ｃｌｏｃｋ＿ｐｅｒｉｏｄ２又はＤ＞ｃｌｏｃｋ＿ｐｅｒｉｏｄ２であるかにより、レスポンスは異なるものになる。ＡＡが、Ｓからの署名のペア、チップの秘密の署名「ｆｏｏ」を使用すると仮定し、また署名のペアが｛｛｛ｗａ，ｗｂ｝，Ｄ−ε，｛ｏｃ，ｏｄ｝｝、｛｛ｗａ，ｗｂ｝，Ｄ＋ε，｛ｏｃ’，ｏｄ’｝｝｝であると仮定する。第１の署名の入力刺激の場合には、チップ内の経路に沿った遷移は、時間内に起こらないのでクロック同期は行われない。第２の署名の入力刺激の場合には、遷移は時間内に起こる。この場合、出力レスポンスは、２つの刺激がチップ「ｆｏｏ」に加えられた場合には、２つの刺激に対して異なるものになる。
【０２６２】
攻撃者が、偽のチップの「バー」を生成することを所望する場合には、その経路の遅延は、両方の刺激に対して「ｆｏｏ」と同じ出力レスポンスを生成するために、間隔（Ｄ−ε，Ｄ＋ε）内に存在していなければならない。εが小さくなるにつれて、このことを達成できる確率は低くなる。ペアの署名に対して同じ出力レスポンスを生成する２つのチップの確率をｐｉと仮定する。ｐｉ＜１であることは明らかである。Ｔ個の異なる経路についての署名のように、Ｔ組の署名が存在する場合には、偽物が同じ署名を有する確率は、経路の遅延が独立していると仮定した場合、Ｔが増大するにつれてｐｉＴ→０になる。経路がどのデバイス又はワイヤを共有していない場合にも、このことは当てはまる。
【０２６３】
複数の経路に即感性を与える秘密の署名の入力刺激を使用することにより、攻撃者への計算上のバリヤが強化される。出力において１つの遷移が起こる場合には、遅延によりその遷移が発生する時間の影響を受けるデバイス及びワイヤの数は増える。このことは、ある署名に対して２つのチップが同じレスポンスを有する確率を低減させることができる。
【０２６４】
同じ組のリソグラフィ・マスクにより製造された一組のチップの各ゲート及びワイヤの遅延は、平均１ｎｓ及び標準偏差０．０５ｎｓを有する標準分布に従うものと仮定する。１つの経路が１００個のゲート及びワイヤのシーケンスである場合には、経路遅延は平均１００ｎｓ及び標準偏差０．５ｎｓを有する標準分布になる。任意のチップ内の経路が平均１００ｎｓと同じ遅延を有するものと仮定する。その場合、別のＩＣが、１００個のうちの０．５ｎｓ以内の経路遅延を有する確率は０．６８である。測定精度が０．５ｎｓであると仮定した場合、これら２つのチップが１つの刺激に対して同じ出力を生成する確率は０．６８である。６４個の異なる組の経路に即感性を与えるために６４の入力刺激を加えた場合には、６４個の刺激に対する出力がすべて同じになる確率は１０−１０未満である。それ故、元のチップが平均経路遅延を有する場合には、同じリソグラフィ・マスクにより製造された百万個のチップうちの１個以上が同じ署名を有する確率は、約１０６×１０−１０＝１０−４である。
【０２６５】
温度の変化を補償するために、図２０のチップ４５０に対して署名が生成された場合には、異なる温度に対して異なる署名が生成される。認証中、特定の温度における特定のチップの署名が使用される。
【０２６６】
攻撃者のタスクをより困難なものにするために、導電性の粒子をチップのパッケージング内に散布して、使用されるパッケージでゲート及びワイヤの遅延の依存性が小さくなるようにする（例えば、＋／−５％）ことができる。
【０２６７】
図５２を参照すると、「グリッチ・ゼネレータ」４６０を追加して、（例えば、ライン４６２からライン４６４への）経路が単一イベントに即感性を有しないようにすることができる。回路内に何らかの遅延が発生した場合に、入力ベクトル・ペアが存在する場合には、経路Ｐは「単一イベントを即感性を有することができ」、イベントは経路Ｐに沿って伝搬する。そうすることにより、攻撃者が、入力刺激を加え、出力経路の遅延を測定することにより式のアフィン・システムを入手して、式を解いて、ゲート及びワイヤの遅延のモデルを生成することが防止される。
【０２６８】
［例示回路］
図５３を参照すると、回路４６６は、関数
【０２６９】
【数８】
2011123909.tif 000011
を実行する。回路４６６は、クロック同期回路の一部であり、回路４６６の出力は、ライン４６９及び４７１上に入力信号ａ及びｂがそれぞれ現れた後、１クロック・サイクル経過後に、他の回路により使用されると仮定する。クロック・サイクルの長さにより、回路４６６の出力は異なる。インバータを含むゲートの遅延はすべて１であり、ワイヤの遅延は０であると仮定する。回路がｃｌｏｃｋ＿ｐｅｒｉｏｄ≧３でクロック同期している場合には、回路４６６は、すべてのＸに対してｆ（Ｘ）のように応答する。Ｙ＝＜ａ＝０，ｂ＝０＞と仮定する。Ｘ＝＜ａ＝０，ｂ＝１＞をＹの後に適用し、クロック周期がｃｌｏｃｋ＿ｐｅｒｉｏｄ≧２である場合には、回路４６６の出力は１であり、ｆ（Ｘ）と同じである。しかし、回路４６６が１≦ｃｌｏｃｋ＿ｐｅｒｉｏｄ＜２のようなある周期とクロック同期している場合には、出力は０である。クロック周期を１．９５になるように選択した場合であって、一番上のＡＮＤゲート４６８又はＯＲゲート４７０の遅延が０．９５未満である場合には、同じリソグラフィ・マスクを用いて製造した異なる回路は、上記の（Ｙ，Ｘ）ペアのシーケンスに対する出力として依然として１を生成する。
【０２７０】
Ｙ＝＜ａ＝０，ｂ＝０＞が適用され、その後、Ｘ＝＜ａ＝０，ｂ＝１＞が適用される場合には、ｆ（Ｘ）＝１である。ｃｌｏｃｋ＿ｐｅｒｉｏｄ≧３である場合には、回路４６６の出力は１であり、２≦ｃｌｏｃｋ＿ｐｅｒｉｏｄ＜３である場合には出力は０であり、ｃｌｏｃｋ＿ｐｅｒｉｏｄ＜２である場合には、出力は１である。
【０２７１】
［入力刺激とクロック周期の選択］
任意のＰＵＦ回路に対してどの刺激及びクロック周期を使用するのかを決定するために、チップのワイヤ及びゲートの遅延とほぼ同じ遅延を有するＰＵＦ回路のモデルを使用することができる。このタイミング近似モデルをＡｆと呼ぶこととする。分析はモデルＡｆ上で行うことができ、出力におけるどのような波形が、任意の入力刺激、すなわち、ベクトル・ペアに似ているのかを発見することができる。この分析は、チップのサイズに応じて線形的に時間がかかる。出力波形の特定の遷移を選択することができる。２つのクロック周期、すなわち、遷移前のε及び遷移後のεが選択される。遷移は、遷移の両側でεより長い時間の間、出力が安定するように選択される。次に、ＰＵＦ回路が検証され、ＰＵＦ回路が選択された入力刺激及びクロック周期に対して、Ａｆと同じレスポンスを生成するかどうか確認される。レスポンスが同じである場合、εをより小さくすることができ、検証が反復して行われる。レスポンスが異なる場合、クロック周期又は入力刺激が変更され、検証が反復して行われる。
【０２７２】
２つのチップが署名の入力刺激に対して同じレスポンスを生成する確率が非常に小さくなるように、一組の署名は、十分長いものでなければならない。１０−１０の確率の場合には、６４個の刺激が必要になる。署名の記憶要件は、ΣｊＮ×Ｋｊビットである各署名の入力刺激のサイズにより主として決まる。ここで、Ｎはチップへの入力数であり、Ｋｊはｊ番目の署名の入力刺激の長さである。入力数Ｎはパッケージにより制限される。通常、Ｎ≦５００及びＫｊ≧２である。
【０２７３】
ＰＵＦチップは、既知の状態に設定するグローバル・リセットを有することができる。そうでない場合には、チップを既知の状態にする転送シーケンスを、第１の署名を適用する前に適用することができる。Ｋｊ＝２と仮定した場合には、１回の認証は、一組の署名を記憶するために約１００キロバイトを必要とする。
【０２７４】
［他の実施形態］
本発明の多数の例について説明した。しかし、本発明の技術思想及び範囲から逸脱することなく種々の改良を行うことができることを理解することができるだろう。例えば、図１３Ａの場合には、ランダム・ハッシュ・モジュールｈ３１９２の代わりに「距離ｄエンコーダ」を使用することができる。このようなエンコーダは、異なる素子の画像が、少なくともｄ個のビットについて常に異なるようにマッピングを行う。このことは、攻撃者がＰＵＦ回路１８８への入力のうちの少なくともｄ個のビットを直接選択することができないことを意味する。
【０２７５】
図１４の場合には、機能モジュール５２及び制御モジュール５４を１つのマイクロプロセッサにより実施することができる。このマイクロプロセッサは、受信したソフトウェア・コードに基づいて、データの計算及び処理を行う。図５０の場合には、１つの定数（例えば、チップのシリアル番号）を使用して、ハッシュ関数を通過させて、制御モジュール５４により使用されるプリチャレンジとなり、ＰＵＦ回路１００へのチャレンジを生成する簡単なＣＰＵＦチップを構成することができる。集積回路１０２は、多くの信号の遅延を同時に測定可能な２つ以上の自励発振ループ回路１１４を含むことができる。遅延回路１１６の代わりに、遅延がチャレンジの複雑な関数である、他のタイプの回路を使用することができる。任意のアルゴリズムを実行する必要がない、ＣＰＵＦの一実施態様の場合には、プログラムの動作をハードウェアで実施することができる。機能回路及びＰＵＦを、同じチップ上に設置する必要はない。機能回路及びＰＵＦは、マルチチップ・モジュール内の異なる半導体チップ上に設けることができる。ＰＵＦ回路の入力及び出力は、デジタル化した値ではなく、アナログ値であってもよい。
【０２７６】
測定可能な物理特性は、経路遅延以外の特性であってもよい。例えば、図５４ついて説明すると、ＰＵＦデバイス５００は、集積回路５０１と、発光ダイオード（ＬＥＤ）アレイ５０２と、電荷結合素子（ＣＣＤ）アレイ５０４とを含む。これらすべては基板５１０上に形成される。エポキシ５０６は、ＬＥＤアレイ５０２及びＣＣＤアレイ５０４を囲んでいる。エポキシ５０６は反射層５０８によりコーティングされ、そのため、アレイ５０２のＬＥＤが放射する光は、反射層５０８により反射され、ＣＣＤアレイ５０４により検出される。光がエポキシ５０６を通過する際に、エポキシ５０６に対して一意のスペックル・パターンがＣＣＤアレイ５０４により検出される。ＬＥＤアレイ５０２内のＬＥＤの異なる組合せが発光した場合、ＣＣＤアレイ５０４は、異なるスペックル・パターンを検出する。数個のＬＥＤのみが一度に発光すれば、スペックル・パターンのコントラストを維持することができる。
【０２７７】
数個のＰＵＦデバイスを製造する場合には、エポキシ層は、各デバイスに対して若干異なる光学的透過特性を有する。それ故、ＬＥＤの同じ組合せは、ＣＣＤアレイにおいて異なるデバイスに対して異なるスペックル・パターンを生成する。ＬＥＤの組合せを決定する制御信号は、「チャレンジ」と見なすことができ、ＣＣＤアレイ５０４が検出するパターンは「レスポンス」と見なすことができる。このようなチャレンジ−レスポンス・ペアを使用して、ＰＵＦデバイス５００のＩＤを認証することができる。エポキシを使用した場合の１つの利点は、エポキシが、かなりの広い温度範囲で安定していることである。それ故、環境の変動による影響を補償するための回路をより簡単にすることができる。
【０２７８】
図３のＰＵＦ回路１０１の発振信号ループ１２２の発振周波数を測定するための別の方法は、位相ロック・ループ（ＰＬＬ）回路を使用する方法である。図５５を参照すると、ＰＵＦ回路１０００は、オシレータ・ループ１２２及びオシレータ・ループの発振周波数を測定するために使用されるＰＬＬ回路１００２を含む。オシレータ・ループ１２２は、入力（又はチャレンジ）を受信する遅延回路１１１を含む。ＰＬＬ回路１００２は、位相検出器１００４と、チャージ・ポンプ１００６と、ループ・フィルタ１００８と、電圧制御発振器（ＶＣＯ）１０１０と、分周器１０１２と、カウンタ１０１４とを含む。分周器１０１２は、信号ライン１０１６上に出力を生成し、この出力は位相検出器１０１４に送られる。ライン１０１６上の信号を（発振ループ１２２からの）ライン１３４上の信号と比較することにより、ＰＬＬ回路１００２は、ライン１０１６及び１３４上の信号が同じ周波数を有する状態になる。カウンタ１０１４は、周波数を決定し、ライン１０１８上に出力を生成し、この出力はＰＵＦ回路１０００の出力（又はレスポンス）となる。
【０２７９】
図５６を参照すると、ＰＵＦ回路１０１０は、遅延回路１０１２及び遅延回路１０１４を含む。各遅延回路１０１２及び１０１４は、遅延回路内で２１２８個の信号経路のうちの１つを選択する１２８ビット・チャレンジを受信する。「カウント」信号の遷移（立上りエッジ又は立下りエッジ）は、両方の遅延回路１０１２及び１０１４に送られる。立上りエッジは、遅延回路１０１２及び１０１４内の信号経路を通過し、それぞれ、ライン１０１６及び１０１８において遅延回路から出る。ライン１０１６及び１０１８上の信号は、仲裁装置１０２０に送られ、この仲裁装置は、ライン１０１６上の遷移がライン１０１８上の遷移より早く到着した場合には「１」を生成し、ライン１０１８上の遷移が早く到着した場合には「０」を生成する。
【０２８０】
発振周波数を測定しなくても、１ビット・デジタル・レスポンスを入手することができる。この回路は、直接的に補償値を生成する。その理由は、温度の変動が遅延回路１０１２及び１０１４に同じ影響を与えるからである。遅延回路１０１２及び１０１４内の遷移は、両方ともスピードアップ（又はスローダウン）し、出力値は変化させない。仲裁装置は、２つの入力をデータ入力及びクロック入力とするフリップフロップにより形成可能な簡単な回路である。データがクロックより前に到着した場合には、フリップフロップは１を生成し、そうでない場合には０を生成する。この場合、ライン１０１６上の信号は、データ入力として使用され、ライン１０１８上の信号はクロック入力として使用される。６４個の１２８ビット・チャレンジがＰＵＦ回路１０１０を介して送られ、６４ビット・レスポンスが生成される。
【０２８１】
図１４の場合には、機能モジュール５２及び制御モジュール５４は、マイクロプロセッサ５１上で稼働するソフトウェア・サブルーチンとして実行した。他の例の場合には、機能モジュール５２及び制御モジュール５４は、専用のハードウェア回路により実施することができる。
【０２８２】
図１６、図１７、図１９〜図２２、図２５及び図２７〜図２９の場合には、ＰＵＦ回路１００の代わりに改良形ＰＵＦ回路１８６（図１３Ａ）を使用することができる。
図５０の場合には、制御回路５４及び機能回路５２の代わりに、プログラム・コードを受信し、制御機能及び計算機能を行うマイクロコントローラを使用することができる。
【０２８３】
従って、他の実施形態は、特許請求の範囲内に含まれる。
【図１】
2011123909.tif 000012
【図２】
2011123909.tif 000013
【図３】
2011123909.tif 000014
【図４】
2011123909.tif 000015
【図５】
2011123909.tif 000016
【図６】
2011123909.tif 000017
【図７】
2011123909.tif 000018
【図８Ａ】
2011123909.tif 000019
【図８Ｂ】
2011123909.tif 000020
【図９】
2011123909.tif 000021
【図１０】
2011123909.tif 000022
【図１１】
2011123909.tif 000023
【図１２】
2011123909.tif 000024
【図１３Ａ】
2011123909.tif 000025
【図１３Ｂ】
2011123909.tif 000026
【図１４】
2011123909.tif 000027
【図１５】
2011123909.tif 000028
【図１６】
2011123909.tif 000029
【図１７】
2011123909.tif 000030
【図１８】
2011123909.tif 000031
【図１９】
2011123909.tif 000032
【図２０】
2011123909.tif 000033
【図２１】
2011123909.tif 000034
【図２２】
2011123909.tif 000035
【図２３】
2011123909.tif 000036
【図２４】
2011123909.tif 000037
【図２５】
2011123909.tif 000038
【図２６】
2011123909.tif 000039
【図２７】
2011123909.tif 000040
【図２８】
2011123909.tif 000041
【図２９】
2011123909.tif 000042
【図３０】
2011123909.tif 000043
【図３１】
2011123909.tif 000044
【図３２】
2011123909.tif 000045
【図３３】
2011123909.tif 000046
【図３４】
2011123909.tif 000047
【図３５】
2011123909.tif 000048
【図３６】
2011123909.tif 000049
【図３７】
2011123909.tif 000050
【図３８】
2011123909.tif 000051
【図３９】
2011123909.tif 000052
【図４０】
2011123909.tif 000053
【図４１】
2011123909.tif 000054
【図４２】
2011123909.tif 000055
【図４３】
2011123909.tif 000056
【図４４】
2011123909.tif 000057
【図４５】
2011123909.tif 000058
【図４６】
2011123909.tif 000059
【図４７】
2011123909.tif 000060
【図４８】
2011123909.tif 000061
【図４９】
2011123909.tif 000062
【図５０Ａ】
2011123909.tif 000063
【図５０Ｂ】
2011123909.tif 000064
【図５１】
2011123909.tif 000065
【図５２】
2011123909.tif 000066
【図５３】
2011123909.tif 000067
【図５４】
2011123909.tif 000068
【図５５】
2011123909.tif 000069
【図５６】
2011123909.tif 000070