(57)【要約】  装置内に具現化された複数の信号発生器回路のサブセットが選択され、次に、選択されたサブセットから該装置に対する揮発性値が発生される。揮発性値は、装置の認証のために、および／または装置上で実行される暗号化手順のために使用することができる。信号発生器回路はそれぞれ発振回路を含むことができ、サブセットの選択は回路のサブセットの出力の比較、例えば出力発振周波数の比較に従うことができる。
2009524998.tif 000002
【特許請求の範囲】
【請求項１】
装置内に具現化された複数の信号発生器回路のサブセットを選択する工程と、
前記選択されたサブセットから前記装置に対する揮発性値を発生する工程と、
を含む方法。
【請求項２】
前記信号発生器回路は発振器を含む、
請求項１に記載の方法。
【請求項３】
前記各サブセットは一対の回路から成る、
請求項１に記載の方法。
【請求項４】
前記各サブセットは一対の所定の２つ以上の回路のグループを含む、
請求項１に記載の方法。
【請求項５】
前記サブセットの前記選択を特徴づける情報を格納する工程を更に含む、
請求項１に記載の方法。
【請求項６】
前記生成された揮発性値から算出されたエラー訂正情報を格納する工程を更に含む、
請求項１に記載の方法。
【請求項７】
前記揮発性値を使用することにより前記装置を認証する工程を更に含む、
請求項１に記載の方法。
【請求項８】
前記揮発性値を使用することにより前記装置におけるデータに暗号化手順を適用する工程を更に含む、請求項１に記載の方法。
【請求項９】
前記選択されたサブセットから前記装置の前記揮発性値を再発生する工程を更に含む、  請求項１に記載の方法。
【請求項１０】
前記揮発性値を再発生する工程は、前記回路のサブセットの前記選択を特徴づける保存情報を使用することを含む、
請求項９に記載の方法。
【請求項１１】
前記揮発性値を再発生する工程は、前記生成された揮発性値から算出される保存エラー訂正情報を使用することを含む、
請求項９に記載の方法。
【請求項１２】
前記回路の前記サブセットを選択し前記揮発性値を発生する工程は登録手順の一部として実行される、
請求項１に記載の方法。
【請求項１３】
前記サブセットの前記選択を前記登録手順の一部として特徴づける情報を格納する工程
を更に含む、
請求項１２に記載の方法。
【請求項１４】
前記揮発性値を発生する工程は、前記選択されたサブセットのそれぞれから値の異なる部分を発生することを含む、
請求項１に記載の方法。
【請求項１５】
前記揮発性値を発生する工程は、前記選択されたサブセットのそれぞれから値の異なるビットを発生することを含む、
請求項１４に記載の方法。
【請求項１６】
前記サブセットを選択する工程は、前記回路の当該のサブセットに関連した予想誤り率に従って前記サブセットを選択することを含む、
請求項１に記載の方法。
【請求項１７】
前記サブセットを選択する工程は、前記回路の前記サブセットの出力の比較に従って前記サブセットを選択することを含む、
請求項１に記載の方法。
【請求項１８】
前記サブセットを選択する工程は、前記回路の前記サブセットの発振周波数の比較に従って前記サブセットを選択することを含む、
請求項１７に記載の方法。
【請求項１９】
前記回路のサブセットの発振周波数の比較に従って前記サブセットを選択する工程は、所定の判定規準に従って、異なる発振周波数を有するサブセットを選択することを含む、  請求項１８に記載の方法。
【請求項２０】
複数の信号発生器回路と、
前記複数の信号発生器回路のサブセットの選択を出力する、前記信号発生器回路に接続された選択回路と、
前記選択されたサブセットに従って値を出力する、前記信号発生器回路に接続された揮発性値発生器と、
を含む集積回路。
【請求項２１】
前記信号発生器回路は発振器を含む、
請求項２０に記載の集積回路。
【請求項２２】
前記複数の信号発生器回路のサブセットの前記選択を与えるとともに前記選択を検索する回路へのインターフェースを更に含む、
請求項２０に記載の集積回路。
【請求項２３】
前記複数の信号発生器回路のサブセットの前記選択のための記憶装置を更に含む、
請求項２０に記載の集積回路。
【請求項２４】
エラー制御情報に従って前記揮発性値発生器から出力される値を訂正するように構成された、前記揮発性キー発生器に接続された誤り訂正モジュールを更に含む、
請求項２０に記載の集積回路。
【請求項２５】
前記エラー制御情報を提供するとともに検索する回路へのインターフェースを更に含む、
請求項２４に記載の集積回路。
【請求項２６】
前記エラー制御情報用の記憶装置を更に含む、
請求項２４に記載の集積回路。
【請求項２７】
装置に機能を実行させるためのデータを含むコンピュータ読出し可能な媒体に格納されたソフトウェアであって、
装置内に具現化された複数の信号発生器回路のサブセットを選択する工程と、
前記選択されたサブセットから前記装置に対する揮発性値を発生する工程とを含む、
ソフトウェア。
【請求項２８】
前記データは、前記機能を実行するためのプログラム可能な回路を構成するためのデータを含む、
請求項２７に記載のソフトウェア。
【請求項２９】
前記データは、前記装置を製作するための装置仕様を発生するための命令を含む、
請求項２７に記載のソフトウェア。
【請求項３０】
前記データは、計算機システムに機能を実行させるための命令を含む、
請求項２７に記載のソフトウェア。
【発明の詳細な説明】
【関連出願への相互参照】
【０００１】
本出願は、２００６年１月２４日出願の米国仮出願第６０／７６１，８２１号「リング発振器をベースとした装置識別：ＲＩＮＧ  ＯＳＣＩＬＬＡＴＯＲ  ＢＡＳＥＤ  ＤＥＶＩＣＥ  ＩＤＥＮＴＩＦＩＣＡＴＩＯＮ」からの優先権を主張し、この文書を参照により本明細書に援用する。
【０００２】
本出願は以下の係属中の米国出願、すなわち２００５年１１月１４日出願の出願第１１／２７３，９２０号「揮発性装置キーとその応用：ＶＯＬＡＴＩＬＥ  ＤＥＶＩＣＥ  ＫＥＹＳ  ＡＮＤ  ＡＰＰＬＩＣＡＴＩＯＮＳ  ＴＨＥＲＥＯＦ」（米国特許出願公開第２００６／０２１００８２号明細書として２００６年９月２１日公開）と、２００５年１１月１４日出願の出願第１１／２７２，９９５号「安全に現地設定可能な装置：ＳＥＣＵＲＥＬＹ  ＦＩＥＬＤ  ＣＯＮＦＩＧＵＲＡＢＬＥ  ＤＥＶＩＣＥ」（米国特許出願公開第２００６／０２０９５８４号明細書として２００６年９月２１日公開）と、２００３年４月４日出願の出願第１０／４０７，６０３号「集積回路の認証：ＡＵＴＨＥＮＴＩＣＡＴＩＯＮ  ＯＦ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴＳ」（米国特許出願公開第２００３／０２０４７４３号明細書として２００３年１０月３０日公開）とに関し、これらの文書もまた参照により本明細書に援用する。
【技術分野】
【０００３】
本発明は装置セキュリティのための信号発生器の利用に関する。
【背景技術】
【０００４】
装置を認証するためには、集積回路（チップ）などの装置に埋め込まれた秘密キーまたは他の値を使用することができる。このような手法の例として、スマートカードに埋め込まれた秘密キーを使用する例がある。この秘密キーは、読出されることを意図しないが、スマートカードに送られたメッセージを解読するために使用することができる。秘密キーを知るサービスプロバイダは、暗号化メッセージを解読するように依頼することにより、あるいはスマートカードがキーを有してよいということを検証する他の暗号プロトコルを使用することにより、スマートカードを認証することができる。敵対者がキーを複製することができずかつ偽の識別情報を有し得ないように、秘密キーは秘密のままである必要がある。
【０００５】
製造プロセスの変動に基づき装置間で変化し得る装置特性を利用した集積回路の認証が提案されている。回路遅延に基づくこのような手法のいくつかは、特許文献１（表題：「集積回路の認証」）に記載され、これを参照により本明細書に援用する。
【０００６】
特許文献１に記載されたキーを発生する一つの手法は、自己発振回路の周波数の測定を利用する。別の手法は、２つの自己発振回路の測定周波数の比を利用する。比を利用することにより、例えば回路の環境条件に起因する変動に対する何らかの補正を行うことができる。
【特許文献１】米国特許出願公開第２００３／０２０４７４３号明細書
【発明の開示】
【０００７】
一態様では、通常、装置内に具現化された複数の信号発生器回路のサブセット（例えば、ペア、３個、またはそれ以上）が選択され、次に、選択されたサブセットから該装置に対する揮発性値が生成される。各信号発生器回路は発振回路を含むことができ、サブセットの選択は、回路のサブセットの出力の比較、例えば出力発振周波数の比較に従ってよい。
【０００８】
別の態様では、通常、集積回路は複数の信号発生器回路と、該複数の信号発生器回路のサブセットの選択を出力するための該信号発生器回路に接続された選択回路とを含む。この回路は、また、選択されたサブセットに従って値を出力する、信号発生器回路に接続された揮発性値発生器を含む。
【０００９】
別の態様では、通常、コンピュータ読出し可能媒体に格納されたソフトウェアは、装置が、装置内に具現化された複数の信号発生器回路のサブセットを選択することと選択されたサブセットから装置の揮発性値を発生することとを含む機能を実行できるようにする。このソフトウェアは、該機能を実行するプログラム可能な回路を構成するためのデータ（例えば、ＦＰＧＡ用のパーソナリティマトリクス）を含んでもよいし、あるいは該装置を製作するための装置仕様を生成するための命令（例えばＶｅｒｉｌｏｇ）を含んでもよい。
【００１０】
別の態様では、通常、装置内に具現化された一組の信号発生器回路のサブセットが選択される。次に、選択されたサブセットから装置のための揮発性値が生成される。
【００１１】
様々な態様は以下の特徴の一つまたは複数を含むことができる。
【００１２】
信号発生器回路は発振器を含む。
【００１３】
各サブセットは一対の回路から成る。
【００１４】
各サブセットは、一対の所定の２つ以上の回路のグループを含む。
【００１５】
ペアの選択を特徴づける情報は、例えば、回路をホストする装置上または装置外に不揮発性の形式で格納される。
【００１６】
エラー訂正情報は生成された揮発性値から算出される。エラー制御情報は、例えば、装置内または装置外に格納される。
【００１７】
装置は、揮発性値を使用することにより認証される。装置は、また、揮発性値の再発生の繰り返しを利用することにより繰り返し認証されてよい。暗号手順もまた、揮発性値を使用することにより、装置におけるデータに適用することができる。
【００１８】
装置の揮発性値は選択されたサブセットから再生成される。揮発性値を再発生する工程は、回路のサブセットの選択を特徴づける格納情報を使用することを含むことができる。揮発性値を再発生する工程は、生成された揮発性値から算出された格納エラー訂正情報を使用することを含むことができる。
【００１９】
回路のサブセットを選択し、揮発性値を発生する工程は、登録手順の一部として実行される。
【００２０】
サブセットの選択を特徴づける情報を格納する工程は、登録手順の一部として実行される。
【００２１】
揮発性値を発生する工程は、選択されたサブセットのそれぞれから値の異なる部分を発生することを含む。例えば、値の異なるビットが、選択されたサブセットのそれぞれから発生される。
【００２２】
サブセットは、回路の当該サブセットに関連付けられた予想エラー率に従って選択される。
【００２３】
サブセットは、回路のサブセットの出力の比較により選択される。例えば、サブセットは、回路のサブセットの発振周波数の比較に従って選択される。所定の判定規準に照らし異なる発振周波数を有するサブセットを選択することができる。
【００２４】
別の態様では、通常、集積回路は一組の信号発生器回路と、該信号発生器回路のサブセットの選択を出力するための該信号発生器回路に接続された選択回路とを含む。該回路は、また、選択されたサブセットに従って識別値を出力する、信号発生器回路に接続された揮発性値発生器を含む。
【００２５】
様々な態様は以下の特徴の一つまたは複数を含むことができる。
【００２６】
信号発生器回路は発振器を含む。
【００２７】
集積回路は、複数の信号発生器回路のサブセットの選択を与えるとともに検索するための回路へのインターフェースを含む。例えば、インターフェースは、該回路の外部記憶装置へのインターフェースである。
【００２８】
集積回路は、複数の信号発生器回路のサブセットの選択のための記憶装置を含む。
【００２９】
集積回路は、エラー制御情報に従って揮発性値発生器から出力される値を訂正するように構成された、揮発性キー発生器に接続されたエラー訂正モジュールを含む。上記回路は、例えば外部記憶から、エラー制御情報を提供し該情報を検索するための該回路へのインターフェースを含むことができ、該回路は、エラー制御情報のための記憶装置を含むことができる。
【００３０】
別の態様では、通常、ソフトウェアは、装置が、上述の任意の方法のすべての工程を実行できるようにするコンピュータ読出し可能媒体に格納される。
【００３１】
別の態様では、通常、ソフトウェアは、装置が、装置内に具現化された複数の信号発生器回路のサブセットを選択し該選択されたサブセットから該装置に対する揮発性値を発生できるようにする、あるいは装置にそのようにさせるコンピュータ読出し可能媒体に格納される。
【００３２】
ソフトウェアは、機能を実行するプログラム可能な回路（例えばＦＰＧＡ）を構成するためのデータ、あるいは装置（例えば、ＡＳＩＣ）を製作するための装置仕様を生成するためのデータを含むことができる。
【００３３】
ソフトウェアは、計算機システムに機能を実行させるための命令を含むことができる。
【００３４】
別の態様では、通常、装置は上述の任意の方法のすべての工程を実行するように構成される。
【００３５】
様々な態様は以下の利点の一つまたは複数を有することができる。
【００３６】
一意的または相対的に一意的でかつ予測不能な値を装置上で発生し、その後、該値を開示することなく再発生することができる。これにより、セキュアなやり方で装置上での認証と暗号手順の適用が可能となる。上記値は、必ずしも装置を識別する必要はないが、むしろ装置のセキュリティのベースとして使用される値のある程度の予測不可能性を与える。
【００３７】
本発明の他の特徴と利点は以下の説明と特許請求範囲から明らかである。
【発明を実施するための最良の形態】
【００３８】
装置上で揮発性値を発生する手法は一組の信号発生器を使用する。揮発性値は、例えば、装置の認証および／または暗号化手順（認証とデータ暗号化を含む）に使用することができる。いくつかの例では、揮発性値は暗号目的の揮発性キーとして使用される。信号発生器の例は自励発振回路（例えばリング発振器）であり、これについては以下にさらに詳細に検討される。２進キーなどの「揮発性」値とは、例えば値が発生されたあるいは一時的に格納された装置から電力が取り除かれたときに該値が保持されない一時的な値を指す。すなわち、揮発性値は、その値が記憶形態から決定され得るように、例えば可融性リンクを使用する２進形式では記憶されない、あるいは電気式書換え可能読取り専用メモリに記憶されない。自励発振回路の周波数は、装置に関連付けられた揮発性値を発生しかつ繰り返し再発生するために使用することができる。この際、揮発性値は、装置上に格納された不揮発性の値から、あるいは装置の外部に示された値からは発見できない。
【００３９】
いくつかの例では、製造に関係する変動または環境変動がないのでリング発振器のそれぞれが同じ周波数を有することが予想できるように、リング発振器のそれぞれは同じ設計に依っている。例えば、各リング発振器は、約２ＧＨｚで発振する一定数（例えば５個）のインバータを含むループから形成されてよい。
【００４０】
図１を参照すると、揮発性キーを発生するためのいくつかの手法では、Ｎ個の個別のリング発振器１１２を含む発振回路１１０を含む単一ビット発生器１００を使用する。製造変動により、各リング発振器（ｋ）は、他の発振器の周波数とは通常異なる周波数を有する周期信号Ｓｋ１１４を出力する。選択器１２０は、リング発振器ｉとｊの２つを識別する制御入力１２２を受理し、対応する一対の周期信号ＳｉとＳｊを周波数比較器１３０に渡す。周波数比較器１３０は、信号の周波数差Δｉｊを特徴づける量（例えば、減算Ｓｉ−Ｓｊまたは除算Ｓｉ／Ｓｊ）を出力する。１ビット出力ｂｉｊは、Ｓｉ＞Ｓｊの場合１に設定され、そうでなければ０に設定される。
【００４１】
図２を参照すると、マルチビット発生器２００は、リング発振器のペアを複数選択することを利用する。ここでは、各ペアは、揮発性キー値として使用することができるマルチビット出力Ｂ２２０の１ビット２２２を発生する。特に、制御入力Ｒ２１０は、マルチビット出力の対応するビットのそれぞれを発生するために使用すべき発振器のペアの系列を規定する。制御入力は、例えば、Ｎ（Ｎ−１）個の可能な入力のペアのビットマスクから、あるいはいくつかの同等のデータ表現から決定することができる。
【００４２】
図３を参照すると、以下にさらに検討されるように、どのペアを制御入力Ｒに使用すべきかの選択は、特定の装置のリング発振器の周波数差を特徴づけるＮ（Ｎ−１）個の量Δｉｊ３１０すべてのうちのいくつかの登録時の生成に基づくことができる。ペア選択器３００は、制御入力Ｒ２１０を発生するために、あるいはマルチビット出力を発生する際に使用すべきペアの同等の仕様を生成するために、これらの差に適用される。
【００４３】
図４Ａを参照すると、登録段階では、装置上の登録回路は、発振器ペアの選択Ｒに依存するペア選択器３００およびマルチビット発生器２００を含む。選択Ｒ、またはＲを開示することなく不揮発性のやり方でＲの再発生を可能にする量は、装置上または装置外に格納される。揮発性キーＢは、例えばセキュリティ登録論理４４０により装置上で使用される。オプションとして、エラー訂正符号（ＥＣＣ）モジュールはエラー訂正情報Ｅを発生する。この情報Ｅも装置上または装置外に格納される。
【００４４】
図４Ｂを参照すると、使用段階（すなわち「実行時」）では、量Ｒは、ビットエラーを有する可能性のあるＢのバージョンである
2009524998.tif 000003
を発生するマルチビット発生器２００に渡される。この生成された値は、登録段階中に生成されたＢの値と概してマッチする
2009524998.tif 000004
を発生するために保存エラー訂正情報Ｅを利用するエラー訂正モジュールに渡される。次に、このエラー訂正値は、例えばセキュリティ実行時論理４５０により使用される。
【００４５】
一般的に、装置内のＮ個の発振器を仮定すると、Ｎ個の発振器の周波数のＮ！（Ｎ階乗）の異なる順序が存在する。各順序は、同等の可能性でもって、各周波数が独立しているものと仮定する。したがって、周波数のＮ（Ｎ−１）個のペア比較は、ｌｏｇ２（Ｎ！）個の独立したビットの情報を与え、例えば、次のようになる。
Ｎ ペア数（＝Ｎ（Ｎ−１）） ビット数（＝ｌｏｇ２（Ｎ！））
３５        ５９５                        １３３
１２８      ８１２８                      ７１６
２５６      ３２６４０                    １６８７
【００４６】
実際上、特定の装置については、発振器の異なるペアの比較から生成されるビットは、登録と実行時使用との間で異なるエラー確率（すなわち、当該ビットの反転）を呈する。例えば、ほぼ同一の周波数を有する２つの発振器がある使用（例えば登録）ではある順序を有し、別の使用（例えば実行時）では反対の順序を有する。この現象に対処するための一手法は、このようなエラーを訂正するために上に概説したエラー訂正手法を利用することである。限られた数の発振器のペアはこのような接近した周波数を有するので、限られた数のこのようなビットエラーは通常は訂正されなければならない。
【００４７】
この影響に対処する別の手法は、登録段階中に決定される発振器の特定ペアの予測エラー率を基本的に利用し、発振器のペアの選択処理においてこの予測を利用する。例えば、周波数差Δｉｊは、エラー率の代用物として使用され、周波数間の小さな差が高いエラー率の予測として使用される。
【００４８】
以下に述べるいくつかの選択手法は、エラー率を低減することができ、併せてエラー訂正段階の必要性を回避できるようにするか、あるいは、例えばＢＣＨエラー訂正手法を使用するより簡単となり得る単純化エラー訂正手法を少なくとも使用できるようにする。
【００４９】
図５を参照すると、ビット発生器の実施形態５００はＮ個のリング発振器５１２を使用する。すべての発振器の出力は２つのマルチプレクサー５２０に送られ、２つのマルチプレクサー５２０は協力して一対の発振器の出力を選択する。各マルチプレクサーの出力はカウンタ５３０に送られる。カウンタが共通のカウント値（例えばゼロ）で開始するサンプリング期間の最後に、カウンタの出力は比較器５４０に渡され、比較器５４０はどちらのカウンタが大きな値を有するかに従って出力ビット値を決定する。発生すべき各ビットを得るためにカウンタに送るべき発振器信号を選択する異なる制御入力値により、複数のビットを時間連続的に発生するために、実施形態５００を使用することができる。あるいは、複数のビットを同時に発生するために選択器とカウンタの複数のインスタンスを使用してもよい。
【００５０】
図６を参照すると、別の実施形態６００では、発振器６１２はペアで装置上に（例えば、隣接して、あるいは互いに近接して）配置される。制御入力に従って選択されたペアと対をなす別のペアの差と比較されるのは、一つの発振器の絶対周波数ではなく、このような一対の発振器の２つの発振器間の周波数の差（例えば絶対差）である。例えば、発振周波数は、チップ全体にわたる動作温度変動を起因とし得る、製作されたチップ全体にわたる全体的傾向を有するかもしれない。このような傾向は、異なる発振器の相対周波数のある程度の予測可能性（すなわち、等価的には低確率エントロピ：ｌｏｗｅｒ  ｐｒｏｂａｂｉｌｉｓｔｉｃ  ｅｎｔｒｏｐｙ）をもたらし得る。系統的なスキューは、一定数の予測不能ビットを発生するためにさらに多くのリング発振器が必要となることを意味し得る。
【００５１】
いくつかの製作手法は系統的なスキューの影響をより受けやすいかもしれない。例えば、系統的なスキューはＦＰＧＡの実施形態よりＡＳＩＣの実施形態ではそれほど顕著ではないかもしれない。ＡＳＩＣの実施形態の例では、リング発振器アレイの各寸法はＦＰＧＡの実施形態におけるよりも１００〜１０００倍小さくなり得るので、他の局所的な要因と比較してスキューの影響の重大さを低減することができる。
【００５２】
いくつかの例では、図６に例示するメカニズムは、ＦＰＧＡの実施形態において見られるかもしれない系統的スキューを実質的に排除する。このメカニズムは、リング発振器周波数自体の代わりに隣接リング発振器の周波数間の距離Ｄ＝｜Ｆ１−Ｆ２｜を使用することにより低周波数の系統的スキューを低減／排除する。これらの距離すなわち「デルタ」周波数はキービットを発生するために比較される。
【００５３】
図６に示す実施形態はＮ個のペアの発振器６１２を有する。制御入力は、一つのペアから（例えばリング発振器ｊ−Ａとｊ−Ｂから）の信号を選択器６２０の一つを通って２つのカウンタ６３０へ、そして別のペア（例えばｋ−Ａとｋ−Ｂ）からの信号を他の２つのカウンタ６３０に送られるようにする。加算器６３５は、ペアのそれぞれから、カウンタ間の差の差を取る。すなわち、Ｃ［ｊ−Ａ］がｊ番目のペアから選択されたＡカウンタからのカウントを表す場合、加算器は｜Ｃ［ｊ−Ａ］−Ｃ［ｊ−Ｂ］｜−｜Ｃ［ｋ−Ａ］−Ｃ［ｋ−Ｂ］｜を算出する。
【００５４】
キー値内の連続ビットの発生のための発振器のペア（あるいは、図６に示すような手法の場合、局所的な発振器ペアのペア）を選択する手法のいくつかの例は、特定装置上の発振器の特性に関係する測定を利用する。この選択は、選択されたペアを必ずしも装置の外部に開示することなく、チップ上で内部的に行うことができる。
【００５５】
第１の例では、すべてのリング発振器の周波数の順序は、揮発性キーのビットを発生するチップ上で識別される。Ｎ個のリング発振器が存在する例では、ｉ番目の発振器の周波数はｆｉで示される。発振器の順序を見出すために、チップ上の処理要素はすべての可能なペアのリング発振器（ｉ，ｊ）を比較し、ｆｉ＞ｆｊ（ｉ≠ｊ）の場合に１を発生し、そうでなければ、０を発生する。この方式は、Ｎ個のリング発振器から（Ｎ＊（Ｎ−１）／２）個のビットを発生する（Ｎ！（Ｎの階乗）個の可能な順序すなわちｌｏｇ２（Ｎ！）個の独立したビットを実効的に表す）。
【００５６】
すべてのペアが比較された実験では、ビットの反転の確率は、それぞれのビットを発生するために使用される発振器の周波数分離に従って比較された。５つのインバータを有する発振器については、２ＭＨｚ以上離れた周波数を有する発振器ペアにより発生されるビットは、実質的にエラーなしであった。
【００５７】
別の例は、必ずしも追加のエラー訂正方式を必要としない応答ビットを発生するように、十分に異なる（例えば、少なくとも２ＭＨｚだけ異なる）周波数を有する発振器のペアからのみビットを発生する。登録段階中、周波数は比較され、十分に離れたペアのリストを表すデータが装置上または装置外に格納される。応答ビットを発生するために「頑強な」ペアをのみ使用するこの例を適用するためのチャレンジは、装置が、装置上または装置外に格納されたデータ内に情報をもらすことなく、環境変動がある状態ですら同じ組のペアを使用するということを保証することである。例えば、装置は、登録段階中に、各ペアを使用すべきかどうかを示すビットベクトル（すなわち、各（ｉ，ｊ）発振器ペアごとに１ビット）を発生することができる。しかしながら、このビットベクトルがどのように格納されアクセス可能かに依存するが、どのリング発振器が互いに接近しているかについての情報は外部に示されてもよい。
【００５８】
別の例では、各リング発振器の周波数はすべてのリング発振器の平均周波数と比較される。発振器が平均より速い場合、該発振器に関連した応答は１、そうでなければ０である。したがって、この例では、Ｎ個のビットがＮ個の発振器から発生される。発振器のサブセットは、それらの周波数が平均からどれくらい異なるかに従って選択され、平均に近い発振器は揮発性キーを発生するためには使用されない。平均から十分に異なる周波数を有する発振器の識別子は、装置上または装置外に格納され、その後、揮発性値を再発生するために使用することができる。この識別情報は、任意の特定の発振器が平均周波数より速いかまたは遅いかの情報を明示しないということに留意されたい。
【００５９】
いくつかの応用においては、利点（あまり明示されない情報など）を上回るかもしれないこの例のあり得る一つの制約は、応答ビットが一様に分布されないということである。ビットは、リング発振器周波数とチップ上で得られた平均とを比較することにより発生されるので、異なる発振器からの応答ビットが相互に関連付けられ得る。例えば、２つのリング発振器（ｎ＝２）のみが存在する場合、平均周波数は、常に２つのリング発振器周波数間に存在し、００または１１ではなく１０または０１のいずれかの応答となってしまう。
【００６０】
いくつかの例は、図４Ａ−４Ｂに例示された一般的手法に従うが、エラー率を低減することによりエラー訂正符号を置換するあるいはエラー訂正符号の複雑性を低減する目標を有する。校正については、チップは応答（Ｂ）だけでなくエラー低減（訂正）情報（Ｅ）も発生する。同じ応答を再発生するために、チップには同じエラー低減情報が与えられる。
【００６１】
いくつかの例では、Ｎ個の発振器を有する装置の校正については、各発振器を使用すべきかどうかを示すＮビットマスクが生成される。例えば、当該発振器の周波数が平均値に余りに接近しているかあるいは当該の（例えば、隣接する）ペアが非常に接近した周波数を有する発振器から成る場合、マスク内のビットはセットされる。再発生については、そのマスクビットがセットされていない発振器またはペアのみが使用される。
【００６２】
いくつかの例では、Ｎ個の発振器を有する装置の校正については、各ペアの発振器を使用すべきかどうかを示すＭ＝Ｎ＊（Ｎ−１）／２ビットマスクが生成される。当該のペアが非常に接近した周波数を有する発振器から成る場合、ビットはセットされる。オプションとして、敵対者がマスクから発振器の順序を推測するのを妨げるために、ある発振器ペアが接近しているかどうかを推測するのが困難となるように、Ｍビットマスクのいくつかの追加のビットが無作為にセットされる。再発生については、そのマスクビットがセットされていない発振器ペアのみが使用される。マスクビットは格納スペースを節約するために圧縮されてもよい。
【００６３】
いくつかの例では、ビットベクトルを格納するかあるいはビットベクトルを圧縮するのではなく、むしろビットベクトルを発生するために使用できる量が格納され、必要に応じビットベクトルが生成される。例えば、この量は、線形帰還シフトレジスタ（ＬＦＳＲ）などの擬似乱数発生器のためのシード（seed）であってよい。好適なビットベクトルを発生するために、多くのシードのそれぞれは、生成された揮発性値の品質に従って測定された結果として得られるビットベクトルの品質に従って試験されてよい。例えば、特定のシード値については、Ｍ個の発振器ペアがシードから生成され、そして関連するＭビット揮発性値の再発生の際の各ビットエラーの確率は、比較対象の発振器周波数間の差を使用することにより推定される。揮発性値のビットに対するエラー確率は加算され、全体として該値に対する予測ビットエラー数を得る。初期のシードは変更され、上記処理は繰り返される。最も低い期待エラー数を有するＭ個の応答ビットを生成するシードが選択される。このシードは公開された状態でチップ上またはチップ外に格納され、図４Ａのペア選択（Ｒ）の機能を実質的に果たす。ＥＣＣは、予測エラー数に基づいて随意的に選択される。
【００６４】
いくつかの例では、可能なＮ＊（Ｎ−１）／２個の発振器ペアは所定のやり方で、それぞれがＫ個の発振器（すなわちＮ＊（Ｎ−１）／２＝Ｐ＊Ｋ）を有するＰ個のグループに分割される。校正中に、（Ｋ−１）ビットベクトルがグループごとに生成される。あるグループに対するベクトル内の（Ｋ−１）個のビットは、該グループの第１の発振器ペアから生成されるビットと、同一グループ内の他のペアから生成される第２のビットから第ＫのビットまでのビットのそれぞれとＸＯＲすることにより得られる。これら、Ｐ（Ｋ−１）個のベクトルは公にチップ上またはチップ外に格納される。再発生中、各リング発振器ペアからのビットが生成される。所与のグループについては、（Ｋ−１）ビットベクトルがまた生成され、該グループの格納された（Ｋ−１）ビットベクトルとＸＯＲされる。その結果として得られた（Ｋ−１）ビットベクトルに関する多数決が、第１のペアのグループから生成されたビットが反転されたか否かを判断するために利用される。
【００６５】
詳述すると、Ｋ＝４で、特定グループが、ビットｒ１、ｒ２、ｒ３、ｒ４を発生するペアに対応する場合を検討する。ｒ１  ｘｏｒ  ｒ２、ｒ１  ｘｏｒ  ｒ３、ｒ１  ｘｏｒ  ｒ４を発生し、校正中にそれを格納する。再発生中は、もともと生成されたビットｒ１、ｒ２、ｒ３、ｒ４は確実には知られておらず、同じペアが新しいビットｒ１’，ｒ２’、ｒ３’、ｒ４’を発生する。次に、ｒ１の代わりのｒ１’を使用するのではなく、（ｒ１  ｘｏｒ  ｒ２  ｘｏｒ  ｒ２’）、（ｒ１  ｘｏｒ  ｒ３  ｘｏｒ  ｒ３’）、（ｒ１  ｘｏｒ  ｒ４  ｘｏｒ  ｒ４’）を算出し、ｒ１の再発生値としてこれら３ビットの多数決を利用する。
【００６６】
いくつかの例では、Ｎ個の発振器は、それぞれがＫ個の発振器（Ｎ≧Ｍ＊Ｋ）から成るＭ個のグループを形成するように分割される。異なるグループにわたる発振器周波数が可能な限り離れるやり方で、グループは登録時に決定される。グループ内の発振器周波数は互いに接近している。これを実現するために、いくつかの発振器（いかなるグループにも含まれない）を削除することができる。ビットを発生するために、グループはペアの比較と多数決により比較される。すなわち、グループＡの第１の発振器は別のグループＢの第１のものと比較され、グループＡの第２の発振器はグループＢの第２のものと比較される、等である。多数決は応答ビットを決定するために行われる。すなわち、各ペアのグループは、グループが全体として高い周波数または低い周波数を有するかに従って揮発性値の一つのビットを発生する。
【００６７】
いくつかの例では、エラー訂正手法は、再生成された揮発性値のビットのそれぞれの異なるエラー確率を補償するために調整される。例えば、エラーとなる可能性が高いビットを保護するためにさらに多くの冗長ビットが使用される。この最適化により、シンドロームビット（Ｅ）の合計数をより少なくすることができる。
【００６８】
登録時、または再発生時に、どのビットがエラーを生じやすいか、そして少数のビットのみが反転しやすいということが知られていると仮定すると、エラーは、探索手法を使用することにより訂正することができる。登録中に、揮発性値の一方向ハッシュが格納される。揮発性値（Ｂ）のビットを再発生するために、まず、校正値との比較において数箇所の位置にエラーを有し得る値
2009524998.tif 000005
を再発生する。再発生時に再発生値内のエラーを有する可能性のある位置についての知識を有するので、エラーとなる可能性のあるビットの異なる０／１の組合せが試みられ、各試み毎にハッシュを算出し、そして値（Ｂ）を得たかどうかを調べるために算出結果のハッシュと格納されたハッシュとを比較する。この探索は、値（Ｂ）が再生成されるまで続く。
【００６９】
いくつかの例では、エラー制御情報（Ｅ）、および／または選択情報（Ｒ）を格納する必要がない。このような例は、装置固有情報が校正後に保持されないので利点があろう。
【００７０】
いくつかの例では、発振器のペアから生成されるビットは、それらの周波数とオフセットとの比較に基づいて決定される。このような例の一つでは、一対の発振器（ｉ，ｊ）（但しｉ≠ｊ）は、ｆｊ−ｔ＜ｆｉ＜ｆｊ＋ｔの場合１を、そうでなければ０を発生することができる。このような例の別のものでは、一対の発振器（ｉ，ｊ）（但しｉ≠ｊ）は、ｆｉ＞ｆｊ＋ｔの場合１を、そうでなければ０を発生することができる。
【００７１】
上述の手法の実施形態は、様々なチップ技術を利用することができる。例えば、発振器はＦＰＧＡ（フィールドプログラマブルゲートアレイ）上に配置されてもよいし、あるいはＡＳＩＣ（特定用途向けＩＣ）で設計されてもよい。発振器周波数のチップ内、チップ間、あるいは温度または電圧依存の変動などの発振器の特性は、性能を予想するために利用することができる。例えば、揮発性キーのビット誤り率は、発振器をホストする装置の製造プロセス特性に基づいて予想することができる。次に、予想された性能は、多数の発振器を選択するために、あるいは装置上で再生成される揮発性値の所望の特性を達成するのに好適なある程度の誤り訂正を選択するために利用することができる。
【００７２】
上述の手法は、参照により本明細書に援用される同時係属出願に記載の手法と組み合わせることができる。例えば、発振器により生成される揮発性値は、質問（ｃｈａｌｌｅｎｇｅ）に対する応答を生成するために装置に提示される質問と組み合わせてもよい。別の例として、揮発性値は、秘密キーが装置の外部に開示されないように公開／秘密暗号キーペアを発生するために使用することができる。
【００７３】
ペアまたはリング発振器の選択のための上述の手法は、３個以上の発振器のサブセットの選択のために、あるいは発振器以外の信号発生器の選択のために利用することができる。また、信号発生器の周波数以外の特性を利用してもよい。
【００７４】
上述の手法は、格納された命令により制御されるプロセッサーを使用することにより、あるいは専用回路とプロセッサーの組合せを使用することにより専用論理回路で装置上に実装することができる。プロセッサーに対する命令は、装置上または装置外の機械可読媒体（例えばＲＯＭ）内に格納されてもよい。例えば、プロセッサーは、発振器選択回路を制御するために装置外に格納された命令を使用するとともに、揮発性値のビットを決定するために発振数カウントを処理する汎用プロセッサコアを含んでもよい。選択情報またはエラー制御情報などの値の格納は、フラッシュメモリー、電気式書換え可能読取り専用メモリ、可融性リンクなどを含む様々な技術を利用することができる。いくつかの実施形態は、ＦＰＧＡを構成するための命令またはデータとして、あるいはＡＳＩＣの回路設計を規定するために使用される命令またはデータ（例えばＶｅｒｉｌｏｇ）で表すことができる。
【００７５】
これまでの説明は、例示することを意図していること、そして添付の請求項の範囲により定義される本発明の範囲を制限しないように意図されることとを理解すべきである。他の実施形態は以下の特許請求範囲の範囲内である。
【図面の簡単な説明】
【００７６】
【図１】ビット発生器のブロック図である。
【図２】マルチビット発生手法のブロック図である。
【図３】ペア選択処理のフローチャートである。
【図４Ａ】マルチビット発生器の登録と実行時間使用それぞれに関連するブロック図である。
【図４Ｂ】マルチビット発生器の登録と実行時間使用それぞれに関連するブロック図である。
【図５】ビット発生器の実施形態である。
【図６】ビット発生器の実施形態である。
【図１】
2009524998.tif 000006
【図２】
2009524998.tif 000007
【図３】
2009524998.tif 000008
【図４Ａ】
2009524998.tif 000009
【図４Ｂ】
2009524998.tif 000010
【図５】
2009524998.tif 000011
【図６】
2009524998.tif 000012
【国際調査報告】
2009524998.tif 000013
2009524998.tif 000014