(57)【要約】  デバイスの物理的変動に対応する値を受信することができる。さらに、デバイスの物理的変動に関連するヘルパーデータを受信することができる。結果データを、デバイスの物理的変動に対応する値とヘルパーデータとの組み合わせに基づいて生成することができる。エラー訂正操作を結果データに対して実行して、エラー訂正操作に関連する１つ以上のコードワードを識別することができる。続いて、１つ以上のコードワードに基づいてターゲットデータを生成することができる。【選択図】図２
2021526745.tif 000002
【特許請求の範囲】
【請求項１】
デバイスの物理的変動に対応する値を受信することと、
前記デバイスの前記物理的変動に関連するヘルパーデータを受信することと、
前記デバイスの前記物理的変動に対応する前記値と前記ヘルパーデータとの組み合わせに基づいて結果データを生成することと、
処理デバイスによって、前記結果データに対してエラー訂正操作を実行して、前記エラー訂正操作に関連する１つ以上のコードワードを識別することと、
前記１つ以上のコードワードに基づいてターゲットデータを生成することと、を含む、方法。
【請求項２】
前記デバイスの前記物理的変動に対応する前記値は、物理複製困難関数（ＰＵＦ）の出力に関連しており、前記ターゲットデータは、前記ＰＵＦの前記出力および前記ヘルパーデータに基づいてさらに生成される、請求項１に記載の方法。
【請求項３】
前記デバイスのメモリに前記ヘルパーデータを記憶することと、
前記ターゲットデータを生成する要求に応答して、前記メモリから前記ヘルパーデータを取得することと、をさらに含む、請求項１に記載の方法。
【請求項４】
前記結果データは、前記識別された１つ以上のコードワードおよびエラー項に対応し、前記エラー項は、前記デバイスの前記物理的変動の以前の出力およびデバイスの物理的変動に対応する前記値に対応する、請求項１に記載の方法。
【請求項５】
前記結果データに対して前記エラー訂正操作を実行することにより、前記結果データから前記エラー項が除去される、請求項４に記載の方法。
【請求項６】
メモリと、
前記メモリと動作可能に結合された処理デバイスであって、
デバイスの物理的変動に対応する値を受信し、
前記デバイスの前記物理的変動に関連するヘルパーデータを受信し、
前記デバイスの前記物理的変動に対応する前記値と前記ヘルパーデータとの組み合わせに基づいて結果データを生成し、
前記結果データに対してエラー訂正操作を実行して、前記エラー訂正操作に関連する１つ以上のコードワードを識別し、
前記１つ以上のコードワードに基づいてターゲットデータを生成する、処理デバイスと、を備えるシステム。
【請求項７】
前記デバイスの前記物理的変動に対応する前記値は、物理複製困難関数（ＰＵＦ）の出力に関連しており、前記ターゲットデータは、前記ＰＵＦの前記出力および前記ヘルパーデータに基づいてさらに生成される、請求項６に記載のシステム。
【請求項８】
前記処理デバイスはさらに、
前記デバイスのメモリに前記ヘルパーデータを記憶し、
前記ターゲットデータを生成する要求に応答して、前記メモリから前記ヘルパーデータを取得する、請求項６に記載のシステム。
【請求項９】
前記結果データは、前記識別された１つ以上のコードワードおよびエラー項に対応し、前記エラー項は、前記デバイスの前記物理的変動の以前の出力およびデバイスの物理的変動に対応する前記値に対応する、請求項６に記載のシステム。
【請求項１０】
前記結果データに対して前記エラー訂正操作を実行することにより、前記結果データから前記エラー項が除去される、請求項９に記載のシステム。
【請求項１１】
命令を含む非一時的なコンピュータ可読媒体であって、前記命令は、処理デバイスによって実行されたときに、前記処理デバイスに、
デバイスの物理的変動に対応する値を受信することと、
前記デバイスの前記物理的変動に関連するヘルパーデータを受信することと、
前記デバイスの前記物理的変動に対応する前記値と前記ヘルパーデータとの組み合わせに基づいて結果データを生成することと、
前記結果データに対してエラー訂正操作を実行して、前記エラー訂正操作に関連する１つ以上のコードワードを識別することと、
前記１つ以上のコードワードに基づいてターゲットデータを生成することと、を含む操作を実行させる、非一時的なコンピュータ可読媒体。
【請求項１２】
前記デバイスの前記物理的変動に対応する前記値は、物理複製困難関数（ＰＵＦ）の出力に関連しており、前記ターゲットデータは、前記ＰＵＦの前記出力および前記ヘルパーデータに基づいてさらに生成される、請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１３】
前記結果データは、前記識別された１つ以上のコードワードおよびエラー項に対応し、前記エラー項は、前記デバイスの前記物理的変動の以前の出力およびデバイスの物理的変動に対応する前記値に対応する、請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１４】
前記結果データに対して前記エラー訂正操作を実行することにより、前記結果データから前記エラー項が除去される、請求項１３に記載の非一時的なコンピュータ可読媒体。
【請求項１５】
ターゲットデータを識別することと、
デバイスの抵抗器の対を識別することと、
前記デバイスの前記抵抗器の対に関連する複数の値を受信することであって、前記複数の値の特定の値は、前記デバイスの前記抵抗器の対のうちの２つの抵抗器間の抵抗の差に基づく、受信することと、
処理デバイスによって、前記ターゲットデータおよび前記デバイスの前記抵抗器の対に関連する前記複数の値に基づいてヘルパーデータを生成することと、を含む、方法。
【請求項１６】
前記ターゲットデータおよび前記デバイスの前記抵抗器の対に関連する前記複数の値に基づいて前記ヘルパーデータを生成し、
前記ターゲットデータのビットと一致する前記複数の値のサブセットを識別し、前記ヘルパーデータは、前記複数の値の前記サブセットに関連する前記デバイスの前記抵抗器の対を識別する、請求項１５に記載の方法。
【請求項１７】
前記ヘルパーデータは、前記ターゲットデータの前記ビットと一致する前記複数の値の前記サブセットの順序をさらに指定する、請求項１６に記載の方法。
【請求項１８】
生成されるターゲットデータを受信することと、
複数のランダムな値を受信することと、
前記複数のランダムな値および前記ターゲットデータに基づいて１つ以上のコードワードを生成することと、
処理デバイスによって、前記デバイスの物理的変動に対応する出力値、前記ターゲットデータ、および前記１つ以上のコードワードに基づいて、前記デバイスの前記物理的変動に関連するヘルパーデータを生成することと、を含む、方法。
【請求項１９】
前記デバイスの物理的変動は、スタティックランダムアクセスメモリ（ＳＲＡＭ）に対応する物理複製困難関数（ＰＵＦ）に関連する、請求項１８に記載の方法。
【請求項２０】
前記ヘルパーデータの前記生成は、排他的論理和（ＸＯＲ）演算に基づく、請求項１８に記載の方法。
【請求項２１】
抵抗器の複数の対に関連する複数の値を決定することと、
ターゲットデータおよび前記抵抗器の複数の対に関連する前記複数の値に基づくヘルパーデータを受信することと、
処理デバイスによって、前記ヘルパーデータおよび前記抵抗器の複数の対に関連する前記複数の値に基づいて前記ターゲットデータを生成することと、を含む、方法。
【請求項２２】
前記複数の値のそれぞれが、前記抵抗器の複数の対のうちの２つのそれぞれの抵抗器間の抵抗の差に対応する、請求項２１に記載の方法。
【発明の詳細な説明】
【図面の簡単な説明】
【０００１】
本開示は、以下に与えられる詳細な説明から、および本開示の様々な実装の添付図面から、より完全に理解されるであろう。
【図１】本開示のいくつかの実施形態による、物理複製困難関数を含む例示的なデバイスを示す。
【図２】いくつかの実施形態による、物理複製困難関数を使用することによってヘルパーデータおよびターゲットデータを生成する例示的な方法のフロー図である。
【図３Ａ】本開示のいくつかの実施形態による、物理複製困難関数のヘルパーデータを生成する例示的な方法のフロー図である。
【図３Ｂ】本開示のいくつかの実施形態による、ヘルパーデータの生成を示す。
【図４Ａ】本開示のいくつかの実施形態による、物理複製困難関数を使用することによってターゲットデータを生成する例示的な方法のフロー図である。
【図４Ｂ】本開示のいくつかの実施形態による、ターゲットデータの生成を示す。
【図５】本開示のいくつかの実施形態が動作し得るコンピュータシステムの実施形態のブロック図を示す。
【発明を実施するための形態】
【０００２】
本開示の態様は、デバイスの物理的変動に関連する関数に基づいてターゲットデータを生成することを対象とする。一般に、半導体デバイスは、半導体デバイスの半導体製造プロセスの結果としての物理的変動を含み得る。物理的変動は、特定の半導体デバイスに固有であり得る。例えば、物理的変動は、半導体デバイスの固有のハードウェア特性または挙動であり得る。物理的変動は、半導体製造プロセスの一部として、半導体デバイスにランダムに導入され得る。半導体デバイスにおけるそのような物理的変動は、物理的変動を表す値を生成する物理複製困難関数（ＰＵＦ）に関連し得る。
【０００３】
物理複製困難関数を使用して、デバイスで操作を実行するために使用されるターゲットデータを生成することができる。例えば、ＰＵＦは、特定の半導体デバイスの予測不可能なまたは未知であるが一定の値に対応し得る。ＰＵＦに対応する値を使用して、デバイスによって使用される秘密暗号鍵などのターゲットデータを生成することができる。このような暗号鍵は、他の複数のデバイス間で共通である場合がある。様々なデバイスの様々なＰＵＦに対応する値は未知で予測不可能であり得るため、各デバイスのＰＵＦに対応する値を使用する場合、追加のデータ（すなわち、ヘルパーデータ）を使用して、予想されるターゲットデータの生成を容易にすることができる。例えば、ヘルパーデータを使用して、ＰＵＦに対応するどの値が選択され、ターゲットデータを生成するために使用されるべきかを決定できる。その結果、対応するヘルパーデータとＰＵＦに対応する値の組み合わせを使用して、ＰＵＦに対応する値がデバイス間で異なり得る場合に、各デバイスに同じターゲットデータを生成できる。
【０００４】
例として、ＰＵＦはスタティックランダムアクセスメモリ（ＳＲＡＭ）の物理的変動に対応し得、ここで、ＳＲＡＭを含むデバイスの初期化時にＳＲＡＭの特定のビットが「０」の値または「１」の値にバイアスされ得る。ヘルパーデータは、ターゲットデータの生成に使用されるＰＵＦに対応する値として、ＳＲＡＭのどの特定のバイアスされたビットを選択して、使用するべきかを識別できる。ヘルパーデータは、ＰＵＦに対応する値が選択された後にＰＵＦによって生成され得、ヘルパーデータは、メモリに記憶され得る。続いて、ヘルパーデータをメモリから取得し、後でＰＵＦに提供することができるので、ＰＵＦの対応する値を選択して、同じターゲットデータを生成することができる。その結果、ヘルパーデータを使用して、ＰＵＦの反復可能であるがランダムな値の特定のビットを選択し、ターゲットデータを生成できる。
【０００５】
ＰＵＦに対応する値（すなわち、ＰＵＦ値）を使用すると、ＰＵＦを含むデバイスの製造中に、結果として、ＰＵＦ値がエクスポートされ得る。さらに、ＰＵＦに対応する値の使用は、（例えば、ＰＵＦに対応する値で暗号鍵を暗号化するために）追加の操作で使用されてもよい。ただし、デバイスの製造中のＰＵＦ値のこのようなエクスポート、または追加の操作でのＰＵＦ値の使用は、ＰＵＦ値を露出し得るので、不正なエンティティがＰＵＦ値を取得して、デバイスのセキュリティを危険にさらす場合がある。例えば、ＰＵＦ値を使用してデバイスで使用される暗号鍵を生成する場合、ＰＵＦ値がエクスポートされた後、暗号鍵が不正なエンティティによって取得または生成される場合がある。
【０００６】
本開示の態様は、例えば（これに限定されないが）ＳＲＡＭにおける物理的変動に対応するＰＵＦを利用することによって、上記および他の欠陥に対処する。例えば、ＳＲＡＭエラー訂正操作で使用されるコードワードは、ターゲットデータの値および乱数に基づいて生成することができる。一般に、ヘルパーデータはさらに、ターゲットデータと、ターゲットデータの値と乱数に基づくコードワードとの組み合わせである場合がある。その後、ヘルパーデータを使用してターゲットデータを生成できる。例えば、ＰＵＦの出力が受信され、ヘルパーデータと組み合わされてもよい。コードワードを生成するために、ＰＵＦの出力とヘルパーデータとの組み合わせに対してエラー訂正操作を実行することができる。その後、コードワードを使用して、対応するターゲットデータを決定できる。
【０００７】
本開示の利点には、ターゲットデータにおける改善されたセキュリティが含まれるが、これに限定されない。例えば、ＰＵＦの値はエクスポートされないため、不正なエンティティによって取得される可能性が低いので、ＰＵＦの値に基づいて生成されるターゲットデータは、ＰＵＦの値がエクスポートされる場合よりも安全であると考えられ得る。したがって、操作を実行するときに、ＰＵＦを使用して暗号鍵に対応するターゲットデータを生成するデバイスの操作は、より安全であり得る。さらに、第１の顧客向けに製造されたデバイスは、製造時に第１のターゲット値を生成するようにプログラムされてもよく、一方で、第２の顧客向けに製造されたデバイスは、第２のターゲット値を生成するようにプログラムされてもよい。
【０００８】
図１は、物理複製困難関数を含む例示的なデバイス１００を示す。デバイス１００は、集積回路を含むことができ、ここで、集積回路の一部は、ターゲットデータを生成するために使用される物理複製困難関数に対応する物理的変動に関連する。一般に、物理複製困難関数は、限定されるものではないが、スタティックランダムアクセスメモリ（ＳＲＡＭ）ＰＵＦ（ランダムな電圧オフセットに依存する）、タイミングＰＵＦ（予測不可能な競合条件に依存する）、インピーダンスＰＵＦ（抵抗、静電容量、またはインダクタンスの不一致に依存する）などに対応する回路とすることができる。このようなＰＵＦ回路は、不揮発性メモリに記憶されているヘルパーデータを利用して、ＰＵＦ回路の出力（例えば、ＰＵＦ値）の長期安定性を達成できる。
【０００９】
図１に示すように、デバイス１００は、物理複製困難関数１１０、メモリ１２０、およびデバイスコンポーネント１３０を含むことができる。メモリ１２０は、デバイスの不揮発性メモリとすることができ、物理複製困難関数１１０は、集積回路または集積回路の構造もしくは部分に対応することができる。さらに、デバイスコンポーネント１３０は、暗号操作に関連する機能を実行する回路とすることができる。例えば、暗号操作は、物理複製困難関数１１０を使用することにより生成されるターゲットデータを使用することにより、入力データを暗号化および／または解読することであり得る。
【００１０】
物理複製困難関数１１０は、ＰＵＦ１１０の物理的変動およびメモリ１２０からのヘルパーデータ１４０に基づいてターゲットデータ１４１を生成することができる。例えば、物理複製困難関数１１０は、ターゲットデータ１５０を受信することができる。いくつかの実施形態では、ターゲットデータ１５０は、あるクラスのデバイス用の暗号鍵であり得る。例えば、ターゲットデータ１５０は、デバイスのクラス内の各デバイス（例えば、デバイス１００および他のデバイス）によって使用または生成されることが意図されている暗号クラス鍵であり得る。ターゲットデータ１５０を受信した後、物理複製困難関数１１０は、ターゲットデータ１５０および物理複製困難関数１１０に関連する物理的変動に対応する値に基づいてヘルパーデータ１４０を生成することができる。いくつかの実施形態では、物理複製困難関数１１０の物理的変動は、複数の値に対応する場合がある。例えば、第１の値は、物理複製困難関数１１０の構造における第１の物理的変動に対応し得、第２の値は、物理複製困難関数１１０の構造における第２の物理的変動に対応し得る。いくつかの実施形態では、物理複製困難関数１１０がＳＲＡＭに対応する場合、第１の物理的変動は、デバイス１００の初期化時または起動時に、ＳＲＡＭの第１のビットが「０」の値または「１」の値のどちらによりバイアスされているかに対応し得、第２の物理的変動は、デバイス１００の初期化時または起動時に、ＳＲＡＭの第２ビットが「０」の値または「１」の値のどちらによりバイアスされているかに対応し得る。したがって、物理複製困難関数１１０の構造における異なる物理的変動はそれぞれ、ターゲットデータ１５０を生成するために使用され得る異なるビットに対応し得る。ヘルパーデータ１４０は、物理複製困難関数１１０の異なる物理的変動に対応するどの特定のビットを選択し、かつ使用して、受信したターゲットデータ１５０を生成すべきかを識別してもよいし、または受信したターゲットデータ１５０を生成するために使用してもよい。
【００１１】
一例として、ターゲットデータ１５０は、「００１１０」の値であり得る。物理複製困難関数１１０は、その異なる物理的変動の結果として値「００１１１１１１１１１０」を提供し得る。ヘルパーデータ１４０は、最初の４ビット「００１１」および最後のビット「０」が、ターゲットデータ１５０を生成するために物理複製困難関数１１０から選択されるべきであることを識別し得る。ヘルパーデータには特定のビットの利用に対応する情報または他のそのような情報が含まれているため、ヘルパーデータからの情報だけでは、攻撃者またはヘルパーデータを取得できる他のそのような不正なエンティティが所望するターゲット値を明らかにしない。同じまたは代替の実施形態では、ヘルパーデータは、最初の４つのビットを変更せずに選択し得、次に５番目のビットを選択して、反転し得るか、または別のタイプの変更を実行し得るなどの、追加情報を含むことができる。いくつかの実施形態では、物理複製困難関数１１０がＳＲＡＭに対応する場合、ヘルパーデータ１５０は、以下でさらに詳細に説明するように、コードワードおよび物理複製困難関数１１０の出力に対応し得る。
【００１２】
図１を参照すると、ヘルパーデータ１４０は、物理複製困難関数１１０によって生成された後、メモリ１２０に記憶され得る。その後、デバイスコンポーネント１３０は、ターゲットデータ１５０が提供されることを要求し得る。それに応じて、ヘルパーデータ１４０は、物理複製困難関数１１０に提供されて、ヘルパーデータ１４０を生成するために使用された元のターゲットデータ１５０と一致し得る後続のターゲットデータ１４１を生成し得る。いくつかの実施形態では、後続のターゲットデータ１４１は、デバイスコンポーネント１３０によって使用される暗号鍵、または暗号鍵を生成するために使用される値に対応することができる。
【００１３】
図２は、物理複製困難関数を使用することによってヘルパーデータおよびターゲットデータを生成する例示的な方法２００のフロー図である。方法２００は、ハードウェア（例えば、処理デバイス、回路、専用ロジック、プログラム可能ロジック、マイクロコード、デバイスのハードウェア、集積回路など）、ソフトウェア（例えば、処理デバイス上で起動または実行される命令）またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。いくつかの実施形態では、方法２００は、図１のデバイス１００の物理複製困難関数１１０および／または他のデバイスコンポーネント１３０によって実行され得る。
【００１４】
図２に示すように、方法２００は、ブロック２１０で、処理ロジックが物理複製困難関数（ＰＵＦ）にターゲットデータを提供することで開始することができる。例えば、後で複製されることを意図する暗号鍵が、ＰＵＦに提供されてもよい。処理ロジックはさらに、ターゲットデータに基づいてＰＵＦからヘルパーデータを生成してもよい（ブロック２２０）。例えば、ヘルパーデータは、ＰＵＦからの値を使用することによってターゲットデータを再現するための追加データを提供することができ、および／またはターゲットデータをＰＵＦの出力値として複製するために選択および使用すべきであるＰＵＦの物理的変動に対応する特定のビットを識別することができる。いくつかの実施形態では、ＰＵＦはＳＲＡＭに対応し得、ヘルパーデータは、ＰＵＦの出力値とコードワードとの組み合わせであり得る。ヘルパーデータの生成に関するさらなる詳細は、図３Ａおよび図３Ｂに関連して説明される。その後、処理ロジックは、ヘルパーデータをメモリに記憶することができる（ブロック２３０）。ヘルパーデータは、後でターゲットデータを生成するための後続の取得のためにメモリに記憶され得る。処理ロジックはさらに、ＰＵＦを用いてターゲットデータを生成する要求を受信することができる（ブロック２４０）。例えば、ターゲットデータを生成するための要求は、ヘルパーデータが生成されてメモリに記憶された後に受信されてもよい。同じターゲットデータを生成するための要求は、デバイスコンポーネントによる操作で使用されるべきターゲットデータに対応する暗号鍵に対するデバイスコンポーネントからの要求に応答することができる。処理ロジックは、メモリでヘルパーデータをＰＵＦに提供することができる（ブロック２５０）。例えば、以前に受信されたターゲットデータに基づいてＰＵＦによって以前に生成されたヘルパーデータは、後でＰＵＦに提供され得る。その後、処理ロジックは、ＰＵＦおよびヘルパーデータに基づいてターゲットデータを生成することができる（ブロック２６０）。例えば、ヘルパーデータは、ＰＵＦによって受信され、ヘルパーデータを生成するために使用された以前のターゲットデータを反映する、ＰＵＦに対応する値を生成または選択するために使用され得る。いくつかの実施形態では、ヘルパーデータは、結果を生成するために、ＰＵＦの出力と組み合わされてもよく、ここで、コードワードを取得するために結果に対してエラー訂正が実行される。さらに、コードワードを使用して、ターゲットデータを導出または生成することができる。コードワードからターゲットデータを生成することに関するさらなる詳細は、図４Ａおよび図４Ｂに関連して説明される。コードワードは、エラー訂正操作で使用されるエラー訂正コードであり得る。
【００１５】
したがって、デバイスの回路（例えば、ＰＵＦ）の物理的変動は、複数のビットまたは値を表すことができる。ヘルパーデータは、物理的変動によって表されるビットもしくは値のサブセット、および／またはターゲットデータを生成するために物理的変動によって表されるビットもしくは値と組み合わせて使用される追加データ（例えば、コードワード）を識別するために使用できる。例えば、ヘルパーデータは、物理的変動によって表されるビットの特定の数および順序と、エラー訂正操作で使用されるコードワードを識別することができるので、その数と順序は、エラー訂正操作の実行後のターゲットデータに対応するか、またはそのターゲットデータである。
【００１６】
図３Ａは、物理複製困難関数のヘルパーデータを生成する例示的な方法３００のフロー図である。方法３００は、ハードウェア（例えば、処理デバイス、回路、専用ロジック、プログラム可能ロジック、マイクロコード、デバイスのハードウェア、集積回路など）、ソフトウェア（例えば、処理デバイス上で起動または実行される命令）またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。いくつかの実施形態では、方法３００は、図１のデバイス１００の物理複製困難関数１１０および／または他のデバイスコンポーネント１３０によって実行され得る。
【００１７】
方法３００は、ＳＲＡＭに対応するＰＵＦのヘルパーデータの生成に対応し得る。図３Ａに示すように、方法３００は、ブロック３１０で、処理ロジックが、この例では、スタティックランダムアクセスメモリ（ＳＲＡＭ）に対応する物理複製困難関数のターゲットデータを受信することで開始することができる。他の実施形態では、ＰＵＦは、ヘルパーデータを利用して安定性を保証する他の任意のタイプのＰＵＦ回路（例えば、限定されないが、電圧オフセットベースのＰＵＦ、タイミングベースのＰＵＦ、またはインピーダンスベースのＰＵＦ）に対応し得る。処理ロジックは、乱数生成器からランダムな値を受信することができる（ブロック３２０）。例えば、ＰＵＦを含むデバイスは、１つ以上のランダムな値または数を生成する乱数生成器コンポーネントをさらに含むことができる。その後、処理ロジックは、ランダムな値およびターゲットデータに基づいてエラー訂正に関連するコードワードを生成することができる（ブロック３３０）。生成されたコードワードは、エラー訂正操作で使用される要素（例えば、コードワード）のセットを含むコードワードベースから選択されてもよい。コードワードベースの第１の部分は、ターゲットデータのビットの値に基づいて選択され得、コードワードベースの第２の部分は、ランダムな値のビットの値に基づいて選択され得る。コードワードベースは、ターゲットデータのビット数に対応するかまたはそれに等しい第１のサブセットと、生成されるランダムな値の数に対応するかまたはそれに等しい第２のサブセットを含み得る。対応するビットの値が「１」である場合、特定のコードワードが選択されてもよく、対応するビットの値が「０」である場合、特定のコードワードは選択されなくてもよい。したがって、第１のサブセットからのコードワードは、「１」であるターゲットデータの対応するビット値に基づいて選択されてもよく、第２のサブセットからのコードワードは、「１」である乱数の対応するビット値に基づいて選択されてもよい。
【００１８】
図３Ａを参照すると、処理ロジックは、ＰＵＦの出力値とコードワードとの間で排他的論理和（ＸＯＲ）演算をさらに実行して、ＳＲＡＭに対応するＰＵＦのヘルパーデータを生成することができる（ブロック３４０）。例えば、ＰＵＦの出力値は、ヘルパーデータを生成するために、生成されたコードワードと組み合わされ得る。続いて、ヘルパーデータは、ＰＵＦを含むデバイスの不揮発性メモリに記憶され得る。
【００１９】
図３Ｂは、ヘルパーデータの生成を示す。一般に、ヘルパーデータは、図３Ａに関して説明したように、ＳＲＡＭに対応するＰＵＦに対して生成され得る。示されるように、利用可能なコードワードベース３９０が提供され得る。利用可能なコードワードベース３９０は、エラー訂正操作で使用され得る複数のコードワードを含み得る。ターゲットデータ３９１も受信され得、乱数３９２が生成され得る。ターゲットデータ３９１および乱数３９２のビットの値に基づいて、利用可能なコードワードベース３９０とは異なるコードワードを選択して、エラー訂正操作のために生成および使用されるヘルパーデータで使用することができる。例えば、利用可能なコードワードベース３９０は、ターゲットデータ３９１の利用可能な各ビットに対するコードワードと、乱数３９２の利用可能な各ビットに対するコードワードとを含み得る。示されるように、ターゲットデータ３９１の最初のビットは０であるので、コードワードＣ０を使用しなくてよい（例えば、「０」の値とコードワードの組み合わせはゼロである）。さらに、ターゲットデータ３９１の次のビットは「１」であるため、コードワードＣ１を使用することができる。ターゲットデータ３９１の残りのビットの値に基づいて、コードワードＣ６を使用することができ、他のコードワードは使用しなくてよい（例えば、７番目のビットは「１」の値であり、他のビットは「０」の値にある）。さらに、乱数３９２は、第１、第２、および第４のビットの値を含むので、次に、コードワードはｄ０、ｄ１、およびｄ３を使用することができる。したがって、結果として得られるコードワードベース３９３は、コードワードＣ１、Ｃ６、ｄ０、ｄ１、およびｄ３を含むことができる。次に、結果として得られるコードワードベース３９３は、ＸＯＲ演算に基づいてＰＵＦの出力と組み合わされ、ヘルパーデータを生成することができる。
【００２０】
図４Ａは、物理複製困難関数を使用することによってターゲットデータを決定する例示的な方法４００のフロー図である。方法４００は、ハードウェア（例えば、処理デバイス、回路、専用ロジック、プログラム可能ロジック、マイクロコード、デバイスのハードウェア、集積回路など）、ソフトウェア（例えば、処理デバイス上で起動または実行される命令）またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。いくつかの実施形態では、方法４００は、図１のデバイス１００の物理複製困難関数１１０および／または他のデバイスコンポーネント１３０によって実行され得る。
【００２１】
図４Ａに示すように、方法４００は、ブロック４１０で、処理ロジックが、この例では、ＳＲＡＭに対応する物理複製困難関数の出力を受信することで開始することができる。例えば、デバイスコンポーネントは、ターゲットデータを要求することができる。いくつかの実施形態では、ターゲットデータは、デバイスコンポーネントによって使用される暗号鍵、または暗号鍵を生成するために使用される値に対応し得る。ターゲットデータは、デバイスコンポーネントによって使用される任意の他のタイプの秘密データに対応する場合がある。処理ロジックはさらに、ＰＵＦのヘルパーデータを受信することができる（ブロック４２０）。例えば、ヘルパーデータは、不揮発性メモリから取得できる。処理ロジックはさらに、ＰＵＦの出力とＰＵＦのヘルパーデータとの間でＸＯＲ演算を実行することができる（ブロック４３０）。例えば、ＰＵＦの物理的変動に対応する値およびヘルパーデータを組み合わせて結果を生成することができる。さらに、処理ロジックは、ＸＯＲ演算の結果に対してエラー訂正を実行して、コードワードを識別することができる（ブロック４４０）。ヘルパーデータは、コードワードと、コードワードが生成されたときのＰＵＦの以前の出力との組み合わせとすることができるため、ヘルパーデータとＰＵＦの出力との間のＸＯＲ演算の結果は、ヘルパーデータ、ＰＵＦの以前の出力、およびＰＵＦの現在の出力の組み合わせに対応し得る。ＰＵＦの以前の出力とＰＵＦの現在の出力とのＸＯＲの組み合わせは、エラー項になる場合がある。例えば、エラー訂正操作は、ＸＯＲ演算の結果（例えば、ＰＵＦの現在の出力とＰＵＦの以前の出力との組み合わせ）からエラー項を削除し、エラー訂正操作の結果がコードワードになるようにすることができる。その後、処理ロジックは、識別されたコードワードに基づいてターゲットデータを決定することができる（ブロック４５０）。ターゲットデータは、どのコードワードが使用されたかに基づいて生成され得る。例えば、コードワードは、コードワードに符号化された元のランダムな値を取得するために復号化され得る。次に、ターゲットデータのビットによって代用または置換された元のランダムな値のビットを表すことができる復号値の第１のビット（例えば、第１のビットグループ）を読み取ることによって、ターゲットデータを取得することができる。
【００２２】
したがって、ＰＵＦの現在の出力とヘルパーデータとの組み合わせに対してエラー訂正操作を実行することによって、ターゲットデータを生成することができる。エラー訂正操作を使用すると、ＰＵＦの現在の出力とヘルパーデータとの組み合わせからエラー項が削除され、以前にヘルパーデータを生成するためにターゲットデータが受信されたときに生成されたコードワードが生成され得る。その後、コードワードを使用して、ターゲットデータを決定することができる。
【００２３】
図４Ｂは、ターゲットデータの生成を示す。一般に、ターゲットデータは、図４Ａに関して説明したように、ＳＲＡＭに対応するＰＵＦを使用することによって生成され得る。示されるように、ＰＵＦ４６０は、現在のＰＵＦ出力４６１を生成し得る。さらに、現在のＰＵＦ出力４６１およびヘルパーデータ４６２（例えば、図３Ａおよび図３Ｂに関して説明したように、コードワードおよび以前のＰＵＦ出力に基づくヘルパーデータ）は、結果データ４６４を生成するためにＸＯＲ演算に基づいて組み合わされ得る。いくつかの実施形態では、結果データ４６４は、エラー項（例えば、以前のＰＵＦ出力および現在のＰＵＦ出力）ならびにターゲットデータの値および乱数に基づいて以前に選択または生成されたコードワードに対応する値であり得る。例えば、結果データ４６４は、現在のＰＵＦ出力４６１、コードワード、およびコードワードが選択されたときの以前のＰＵＦ出力のＸＯＲの組み合わせであり得る。現在のＰＵＦ出力４６１と以前のＰＵＦ出力とのＸＯＲの組み合わせは、エラー項に対応し得る。エラー訂正操作４６５は、結果データ４６４に対して実行され、コードワード４６６が残るように、エラー項（例えば、現在のＰＵＦ出力４６１と以前のＰＵＦ出力とのＸＯＲの組み合わせ）を除去することができる。その後、ターゲットデータ４６７は、コードワード４６６から導出され得る。
【００２４】
いくつかの実施形態では、ＰＵＦの物理的変動は、一対の名目上同一の抵抗器間の抵抗の差に対応し得る。例えば、「０」の値は、第１の抵抗器と第２の抵抗器との間の（すなわち、製造中に生じたランダムな変動による）抵抗の差が所定の閾値よりも大きい場合に一対の抵抗器に割り当てられ得、「１」の値は、第１の抵抗器と第２の抵抗器との間の抵抗の差が所定の閾値よりも小さい場合に一対の抵抗器に割り当てられ得る。いくつかの実施形態では、一対の抵抗器間の抵抗の差が「０」および「１」の値に対応する閾値のいずれも超えない場合、特定対の抵抗器は、ＰＵＦの値の決定に使用されなくてもよい。そのような例では、ヘルパーデータは、抵抗器の対を識別することができ、ここで、対応する対の抵抗の差は、その抵抗器の対から「０」または「１」の値を決定するために使用できるほど十分に大きい。ヘルパーデータは、ターゲットデータを決定するために使用される抵抗器の対に関連する値の順序をさらに識別することができる。同じまたは代替の実施形態では、ＰＵＦの物理的変動は、２つの信号経路間の競合条件に対応し得る。例えば、第１の経路が第２の経路の前に競合条件を満たす場合に「０」の値が割り当てられ得、第２の経路が第１の経路の前に競合条件を満たす場合に「１」の値が割り当てられ得る。そのような例では、ヘルパーデータは、ターゲットデータを生成するために使用できる経路の対を識別できる。
【００２５】
いくつかの実施形態では、ヘルパーデータは、ＰＵＦの第１の出力値とコードワードとの間の組み合わせを表す値であり得る。コードワードは、ターゲットデータのビットを使用することによって生成され得る。いくつかの実施形態では、値は、ＰＵＦの第１の出力値とコードワードとの排他的論理和（ＸＯＲ）の組み合わせであり得る。次に、ＰＵＦの第２のファジー読み取り（つまり、不安定であり、後続の読み取り間で異なる可能性があるいくつかのビットを含む読み取り）の出力でヘルパーデータを使用して、次いで、エラー項を削除するために結果にエラー訂正を実行することによって、コードワードを回復することができる。次に、結果のコードワードからターゲットデータを回復することができる。
【００２６】
図５は、本明細書で論じられる方法論のうちのいずれか１つ以上を機械に実行させるための命令のセットが中で実行され得るコンピュータシステム５００の例を示す。代替の実装では、機械は、ＬＡＮ、イントラネット、エクストラネット、および／またはインターネット内の他の機械に接続（例えば、ネットワーク化）されてもよい。機械は、クライアントーサーバネットワーク環境内のサーバもしくはクライアント機械の能力内で、ピアツーピア（または分散型）ネットワーク環境内のピア機械として、あるいはクラウドコンピューティングインフラストラクチャもしくは環境内のサーバまたはクライアント機械として動作することができる。
【００２７】
機械は、パーソナルコンピューター（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、Ｗｅｂアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはその機械によって行われるアクションを指定する命令のセットを（順次または別の方法で）実行できる任意の機械とすることができる。さらに、単一の機械が示されているが、「機械」という用語は、本明細書で論じられる方法論のいずれか１つ以上を実行する命令のセット（または複数のセット）を個別または共同で実行する機械の任意の集まりも含むとみなされるものとする。
【００２８】
例示的なコンピュータシステム５００は、処理デバイス５０２、メインメモリ５０４（例えば、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、同期ＤＲＡＭ（ＳＤＲＡＭ）もしくはラムバスＤＲＡＭ（ＲＤＲＡＭ）などのダイナミックランダムアクセスメモリ（ＤＲＡＭ）など）、スタティックメモリ５０６（例えば、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）など）、およびデータストレージデバイス５１８を含み、これらは、バス５３０を介して互いに通信する。
【００２９】
処理デバイス５０２は、マイクロプロセッサ、中央処理装置などの１つ以上の汎用処理デバイスを表す。より具体的には、処理デバイスは、複雑命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、または他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサとすることができる。処理デバイス５０２はまた、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサなどの１つ以上の専用処理デバイスであってもよい。処理デバイス５０２は、本明細書で論じられる操作およびステップを実行するための命令５２６を実行するように構成される。
【００３０】
コンピュータシステム５００は、ネットワーク５２０上で通信するためのネットワークインターフェースデバイス５０８をさらに含み得る。コンピュータシステム５００はまた、ビデオディスプレイユニット５１０（例えば、液晶ディスプレイ（ＬＣＤ）またはブラウン管（ＣＲＴ））、英数字入力デバイス５１２（例えば、キーボード）、カーソル制御デバイス６１４（例えば、マウス）、グラフィック処理ユニット５２２、信号生成デバイス５１６（例えば、スピーカ）、グラフィック処理ユニット５２２、ビデオ処理ユニット５２８、およびオーディオ処理ユニット５３２を含むことができる。
【００３１】
データ記憶デバイス５１８は、本明細書に説明される方法論または機能のいずれか１つ以上を具現化する命令またはソフトウェア５２６の１つ以上のセットが記憶される機械可読記憶媒体５２４（コンピュータ可読媒体としても知られる）を含むことができる。命令５２６はまた、コンピュータシステム５００によるその実行中、メインメモリ５０４内および／または処理デバイス５０２内に完全にまたは少なくとも部分的に存在し得、メインメモリ５０４および処理デバイス５０２はまた、機械可読記憶媒体を構成する。
【００３２】
一実装では、命令５２６は、本明細書で説明されるような機能を実装するための命令を含む。機械可読記憶媒体５２４は、例示的な実装では単一の媒体であるように示されているが、「機械可読記憶媒体」という用語は、１つ以上の命令セットを記憶する単一の媒体または複数の媒体（例えば、集中型もしくは分散型データベース、ならびに／または関連するキャッシュおよびサーバ）を含むとみなされるべきである。「機械可読記憶媒体」という用語はまた、機械による実行のための命令セットを記憶または符号化することができ、機械に本開示の方法論のいずれか１つ以上を実行させる任意の媒体を含むとみなされるものとする。したがって、「機械可読記憶媒体」という用語は、限定ではないが、固体メモリ、光学媒体、および磁気媒体を含むとみなされるものとする。
【００３３】
前述の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズムおよび記号表現に関して提示されてきた。これらのアルゴリズムの説明と表現は、データ処理技術分野の当業者が自身の作業の内容を他の当業者に最も効果的に伝えるために使用する方法である。アルゴリズムは、ここで、一般に、望ましい結果につながる自己矛盾のない一連の操作であると考えられている。操作は、物理量の物理的な操作を必要とするものである。通常、必ずしもではないが、これらの量は、保存、結合、比較、および別の方法で操作が可能な電気信号または磁気信号の形態をとる。主に一般的な使用の理由から、これらの信号をビット、値、要素、記号、文字、用語、数値などと呼ぶことが時には便利であることが判明している。
【００３４】
ただし、これらの用語および類似の用語はすべて適切な物理量に関連付けられるべきものであり、これらの量に適用される便利なラベルにすぎないことに留意されたい。上記の議論から明らかなように別段明記しない限り、説明全体を通して、本開示は、コンピュータシステムのレジスタおよびメモリ内の物理（電子）量として表現されるデータを、コンピュータシステムのメモリもしくはレジスタまたは他のそのような情報記憶デバイス内の物理量として同様に表現される他のデータに操作および変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスに言及し得ることが理解される。
【００３５】
本開示はまた、本明細書の動作を実行するための装置に関する。この装置は、意図された目的のために特別に構築されてもよく、またはコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化または再構成される汎用コンピュータを備えてもよい。このようなコンピュータプログラムは、コンピュータシステムバスにそれぞれ接続された、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、および光磁気ディスクを含む任意のタイプのディスク、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気もしくは光カード、または電子命令を記憶するのに適した任意のタイプの媒体などであるがこれらに限定されない、コンピュータ可読記憶媒体に記憶され得る。
【００３６】
本明細書に提示されているアルゴリズムおよび表示は、任意の特定のコンピュータまたは他の装置に本質的に関連しているわけではない。本明細書の教示に従って、様々な汎用システムをプログラムと共に使用する場合があり、または方法を実行するためのより専門的な装置を構築することが好都合であると判明する場合もある。これらの様々なシステムの構造は、以下の説明に述べられている通りである。さらに、本開示は、特定のプログラミング言語に関して説明されていない。本明細書で説明されるように開示の教示を実装するために、様々なプログラミング言語が使用されてもよいことが理解されよう。
【００３７】
本開示は、命令を記憶した機械可読媒体を含み得るコンピュータプログラム製品またはソフトウェアとして提供され得、これは、コンピュータシステム（または他の電子デバイス）をプログラムして、本開示に従うプロセスを実行するために使用され得る。機械可読媒体は、機械（例えば、コンピュータ）によって読み取り可能な形式で情報を記憶するための任意のメカニズムを含む。例えば、機械可読（例えば、コンピュータ可読）媒体は、読み取り専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスなどの機械（例えば、コンピュータ）可読記憶媒体を含む。
【００３８】
前述の開示では、本開示の実装は、その特定の例示的な実装に関して説明されてきた。以下の特許請求の範囲に述べられているように、本開示の実装のより広い趣旨および範囲から逸脱することなく、様々な修正を加えることができることは明らかであろう。したがって、本開示および図面は、限定的な意味ではなく例示的な意味で見なされるべきである。
【図１】
2021526745.tif 000003
【図２】
2021526745.tif 000004
【図３Ａ】
2021526745.tif 000005
【図３Ｂ】
2021526745.tif 000006
【図４Ａ】
2021526745.tif 000007
【図４Ｂ】
2021526745.tif 000008
【図５】
2021526745.tif 000009
【国際調査報告】
2021526745.tif 000010