(57)【特許請求の範囲】
【請求項１】
特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数のメモリ位置から第１の順序で多数の値を取り出すよう、および多数の値に依存する再現可能な暗号鍵を決定するために構成される鍵抽出手段を含む電子システムであって、メモリ間での再配列手段と、暗号鍵を決定する前に第１の順序と異なる第２の順序で鍵抽出手段に多数の値を提供するための鍵抽出手段とをさらに含み、メモリが多数の別個のメモリブロックを含み、多数のメモリ位置がすべての多数のメモリブロック全体に分散させられ、多数の別個のメモリブロックが集積回路全体に分散させられることを特徴とする、電子システム。
【請求項２】
多数の別個のメモリブロックの少なくとも１つが正確に１つのメモリ位置を含む、請求項１に記載の電子システム。
【請求項３】
第２の順序が、すべての別個のメモリブロック全体に多数の値を並べ変えるために構成される、請求項１または２に記載の電子システム。
【請求項４】
多数のメモリ位置のそれぞれの特定のメモリ位置が、再現可能な暗号鍵を決定するために個々のアドレスに対する個々の取り出し要求を介して多数のメモリ位置から多数の値を取り出すように構成される鍵抽出手段で多数のアドレスの特定の１つと関連付けられ、再配列手段が、多数の取り出し要求の特定の１つに応答して、特定のアドレスに関連付けられた特定のメモリ位置と異なるメモリ位置から取り出すためにアドレスデコーダを使って構成される、請求項１から３のいずれか一項に記載の電子システム。
【請求項５】
電子システムが、多数の値に依存するヘルパデータを生成するように、およびヘルパデータメモリ内にヘルパデータを記憶するように構成されるヘルパデータ構築手段を含み、鍵抽出手段が、暗号鍵を再現可能にするためにヘルパデータに依存する多数の値にエラー訂正手順を適用するように構成される、請求項１から４のいずれか一項に記載の電子システム。
【請求項６】
ヘルパデータが生成されたかどうかを信号伝達するための構築信号伝達手段を含む、請求項５に記載の電子システム。
【請求項７】
構築信号伝達手段が、ヘルパデータが生成されたかどうかを示すために構成される構築信号伝達フラグを含む、請求項６に記載の電子システム。
【請求項８】
構築信号伝達手段が、ヘルパデータが生成されたことを示す構築ストリングをヘルパデータメモリ内に記憶するための手段を含む、請求項６に記載の電子システム。
【請求項９】
メモリが書き込み可能なタイプであり、電子システムが、特定のメモリ位置のそれぞれに特定の値の反転を書き込むための反転手段と、多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段とを含む、請求項１から８のいずれか一項に記載の電子システム。
【請求項１０】
反転決定手段は、多数のメモリ位置が多数の値の反転を記憶していることを信号伝達するための反転信号伝達フラグを含む、請求項９に記載の電子システム。
【請求項１１】
ヘルパデータ構築手段が、再現可能な暗号鍵の正しさを示すための検証ストリングを生成し、かつ検証ストリングをヘルパデータメモリ内に記憶するようにさらに構成され、多数の値に依存する再現可能な暗号鍵を決定することが、多数の値を反転することを選択的に含み、前記選択が、再現可能な暗号鍵の正しさを示す検証ストリングの正しさに依存する、請求項５および９に記載の電子システム。
【請求項１２】
集積回路内に具体化される、請求項１から１１のいずれか一項に記載の電子システム。
【請求項１３】
メモリがスタティックＲＡＭ（ＳＲＡＭ）である、請求項１から１２のいずれか一項に記載の電子システム。
【請求項１４】
メモリがフリップフロップを含む、請求項１から１３のいずれか一項に記載の電子システム。
【請求項１５】
多数のメモリブロックの少なくとも１つが単一のフリップフロップを含む、請求項１から１４のいずれか一項に記載の電子システム。
【請求項１６】
アンロック手段がアンロック信号を受信するとヘルパデータを生成するように構成されるヘルパデータ構築手段に結合されるアンロック手段を含む、請求項５に記載の電子システム。
【請求項１７】
請求項１から１６のいずれか一項による多数のメモリ位置を備えるメモリを有する電子システムを具体化する集積回路のためのレイアウトを決定する方法であって、方法が
集積回路のゲートレベルのネットリストを得るために集積回路の形式的記述を合成するステップと、
レイアウトを得るために位置およびルーティングツールを使ってネットリストを処理するステップとを含み、
ネットリストを処理するステップは、ゲートレベルのネットリストのゲートが集積回路全体にランダムに分散され、分散させられるゲートは、少なくとも、多数のメモリ位置により生成できる個々の値が依存するゲートを含む不明瞭化ステップを含む、方法。
【請求項１８】
多数のメモリ位置のそれぞれの特定のメモリ位置が多数の値の特定の１つを生成するように構成される、メモリ内の多数のメモリ位置から多数の値を取り出すステップであって、特定の値が、特定のメモリ位置を構成する特定の構成要素の特定の物理的な少なくとも部分的にランダムな構成に依存するステップと、
多数の値に依存する再現可能な暗号鍵を決定するステップとを含む再現できる暗号鍵を決定する方法であって、
暗号鍵を決定するステップの前に多数の値を再配列するステップを含むことを特徴とする、方法。
【請求項１９】
多数の値に依存するヘルパデータを構築するステップと、
ヘルパデータメモリ内にヘルパデータを記憶するステップと、
ヘルパデータが生成されたことを信号伝達するステップとを含み、
再現可能な暗号鍵を決定するステップが、暗号鍵を再現可能にするために、ヘルパデータに依存する多数の値にエラー訂正手順を適用するステップを含む、請求項１８に記載の再現可能な暗号鍵を決定する方法。
【請求項２０】
特定の値の反転を特定のメモリ位置のそれぞれに書き込むステップと、
多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するステップとを含み、
再現可能な鍵を決定するステップが、多数のメモリ位置が多数の値の反転を記憶しているかどうかの決定に依存する多数の値を反転するステップを含む、請求項１８または１９に記載の再現可能な暗号鍵を決定する方法。
【請求項２１】
コンピュータプログラムがコンピュータ上で実行されるときに、請求項１７、１８、１９、および２０のいずれか一項のステップをすべて実行するように適合される、コンピュータプログラムコード手段を含むコンピュータプログラム。
【請求項２２】
コンピュータ読み取り可能媒体上で具体化される、請求項２１に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含む電子システムに関する。
【背景技術】
【０００２】
物理的クローン不能関数（ＰＵＦ）は、物理的システムとして、たとえば入力に対する関数の出力が刺激の形態で物理的システムに入力を提供し、かつ刺激と物理的システムの間の相互作用の結果として発生する挙動を出力にマッピングすることにより得られる方法で埋め込まれる関数である。この場合、相互作用は予測できず、物理的システム内の本質的にランダムな要素に依存し、その程度は、物理的システムに物理的にアクセスできなければ出力を得ることが不可能である、および物理的システムを再現することが不可能であるような程度である。好ましくは、ＰＵＦはまた評価するのが容易である。実際に使用するためには、ＰＵＦは製造コストが低いことが好ましい。
【０００３】
従来、ＰＵＦが受け取る入力または刺激が「チャレンジ」と呼ばれる。ＰＵＦの出力、すなわちＰＵＦが刺激との相互作用後に示す挙動は、「応答」と呼ばれる。チャレンジおよびそれに対応するＰＵＦの応答を含む１対がチャレンジ−応答対と呼ばれる。一部のタイプのＰＵＦが広範な異なる入力を可能にし、一部のタイプがより限定された範囲の入力を可能にする、または単一入力しか可能にしないことさえある。ＰＵＦが、同じチャレンジに対して多数回評価されたときに、すべて同じの多数の応答を生成する場合が最も好ましい。この特性は必要でないが、実際には大部分のＰＵＦがこの特性を有しない。多数の応答が互いに十分近くにある限り、ＰＵＦは有用に適用されることができる。
【０００４】
刺激と物理的システムの間の相互作用はシステムへのアクセスなしに予測されることができないので、ＰＵＦは特徴付けるまたはモデル化することが困難である。したがって、入力に対する特定のＰＵＦの出力は、特定のＰＵＦの基になる特定の物理的システムを使用してしか得られることができない。チャレンジ−応答対を所有しているということは、ある時点でチャレンジがＰＵＦの基になる一意の物理的システムに提供された証拠である。この特性、すなわち、チャレンジ−応答対が一意の物理的機器に結びつけられているという特性のために、ＰＵＦはクローン不能であると呼ばれる。機器にＰＵＦを装備することにより、機器もクローン不能になる。
【０００５】
少なくとも部分的にクローン不能な製造工程、すなわち、何らかのランダムさを必然的に導入する製造工程により作り出される物理的システムは、ＰＵＦのよい候補となる。
【０００６】
ＰＵＦの１つの有利な点が、不正操作防止の性質を本来的に持っていることである。ＰＵＦの動作を観察するためにＰＵＦを分解することが、ランダムな要素も乱し、したがって、入力が出力にマッピングされる方法も乱す。
【０００７】
ＰＵＦを構築する１つの方法が、スタティックＲＡＭ（ＳＲＡＭ）を使用する。これらのＰＵＦはＳＲＡＭ  ＰＵＦと呼ばれる。ＳＲＡＭには、電源投入後、オンビットおよびオフビットのランダムパターンで埋められるという特性がある。ＳＲＡＭが次回電源を投入された場合、パターンは正確にそれ自体を繰り返すわけではないが、２つのそのようなパターン間の差は、典型的には状態のビットの半数よりもはるかに少ない。
【０００８】
第２の種類のＳ−ＲＡＭ  ＰＵＦがデュアルポートＲＡＭを使って構築される。異なる情報を両方のポートに同時に書き込むことにより、メモリセルはＰＵＦに似た挙動を示す不定の状態に至らせられる。
【０００９】
ＰＵＦの１つの応用が、電子回路で暗号鍵を得ることである。電子回路は典型的には集積回路（ＩＣ）および／またはプログラマブルロジックを含む。プログラマブルロジックは、たとえばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックデバイス（ＰＬＤ）、またはデジタルシグナルプロセッサ（ＤＳＰ）、マイクロプロセッサなどを含む。暗号鍵を何らかの種類の不揮発性メモリに記憶する代わりに、鍵は機器により必要とされるときだけＰＵＦから生成される。鍵は、もはや必要とされないときに削除されることができる。次回、鍵が必要とされたとき、鍵はＰＵＦから再度得られることができる。ＰＵＦは、同じチャレンジが２度評価されたときに正確に同じ結果を与えないことがあるので、ファジィエクストラクタ（Ｆｕｚｚｙ  Ｅｘｔｒａｃｔｏｒ）としても知られる、いわゆるヘルパデータアルゴリズムが、鍵が得られるたびに鍵が同じであることを保証するために使用されることがある。ヘルパデータを使用してノイズが多い測定値から再現可能な値を構築する１つの方法が、たとえば国際公開第２００６／１２９２４２号「Ｔｅｍｐｌａｔｅ  Ｒｅｎｅｗａｌ  ｉｎ  Ｈｅｌｐｅｒ  Ｄａｔａ  Ｓｙｓｔｅｍｓ」などに記載されている。
【００１０】
ＰＵＦを使用して暗号鍵を生成する１つの方法が以下のとおりである。まず、登録段階中に、チャレンジ−応答対が生成される。次に、ファジィエクストラクタを使用してヘルパデータが生成される。機器に対しては、チャレンジおよびヘルパデータが不揮発性メモリ内に記憶される。暗号鍵を得るためには、チャレンジに対してＰＵＦを再度評価することにより新しい応答が得られる。記憶されたヘルパデータと新しい応答を組み合わせることにより、ヘルパデータアルゴリズムに従って、鍵が得られる。ヘルパデータは、鍵が得られるたびに、鍵が同じであることを保証する。
【００１１】
ＰＵＦがなければ、暗号鍵は攻撃者により、不揮発性メモリに物理的攻撃を仕掛けることにより回復されることがある。たとえば、攻撃者はメモリを開けて、メモリの内容を探索することがある。ＰＵＦを開けることは、典型的にはＰＵＦが入力と相互作用する正確な方法を乱すので、ＰＵＦを使うことがこのタイプの攻撃をはるかに困難にする。したがって、攻撃者が自分の探索から知る情報は、暗号鍵を生成するために使用された相互作用と関係がない。このことは、攻撃者が物理的攻撃を使用して鍵を見つけ出すことをより困難にする。
【００１２】
メモリセルの固有の挙動に基づくＰＵＦには、メモリモジュール（特にＳＲＡＭ）が、典型的には集積回路内で容易に識別されることができる比較的大規模構造であるという不利な点がある。どうにかしてＩＣを開けて、メモリ自体を乱すことなくメモリへのデータ線を盗聴する攻撃者が、ＩＣが動作しておりＰＵＦがチャレンジされると、有用な情報を得ることができる。ヘルパデータと一緒に使えば、探索されたデータは攻撃者が秘密鍵をさかのぼって見つけ出すことができるようにすることがある。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】国際公開第２００６／１２９２４２号
【特許文献２】米国特許出願公開第２００３３０２０４７４３号明細書
【特許文献３】国際公開第２００８／０５３２９９号
【発明の概要】
【発明が解決しようとする課題】
【００１４】
メモリに基づくＰＵＦがメモリのデータ線への攻撃を受けやすいことは従来技術の問題である。
【００１５】
物理的攻撃に対してメモリに基づくＰＵＦの耐性を高めることが本発明の目的である。
【課題を解決するための手段】
【００１６】
この目的および別の目的が本発明による電子システムにより達成される。
【００１７】
特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置から第１の順序で取り出すように構成される鍵抽出手段を含む電子システムであって、暗号鍵を決定する前に第１の順序と異なる第２の順序に多数の値を配置するための再配列手段をさらに含むことを特徴とする電子システム。
【００１８】
電子システムに物理的攻撃を仕掛けることにより暗号鍵を回復しようと望む攻撃者が、好ましくはメモリを攻撃する。メモリは比較的大規模構造であり、したがって、別の電子的構造と比較して見つけ出すのが比較的容易である。しかしながら、メモリにより生成される多数の値は、メモリを構成する構成要素の物理的構成に依存する。メモリに物理的攻撃を仕掛けることにより、物理的構成が乱され、値が変化させられる可能性が高い。攻撃者はまた、鍵抽出手段が多数の値、すなわちデータ線にアクセスできる手段に対して、物理的攻撃を仕掛けようと試みることがある。攻撃者は多数の値の一部を見つけ出すことがあるが、再配列が多数の値を並べ変える。多数の値はランダムな配置に少なくとも部分的に依存するので、多数の値は多数の値の正しい順序を再構築するための固有の構造を有しない。再配列手段および鍵抽出自体は、少なくとも２つの理由でメモリおよびデータ線よりも物理的攻撃に対して脆弱でない。第一に、これらの構成要素は、メモリまたはデータ線よりもはるかに小さく作られることができる組合せ論理を大部分は含む。第二に、これらのブロックの機能はより複雑なので、これらのブロックのレイアウトはより規則性がなくされることができ、このことがこれらのブロックを探索し、攻撃するための好都合な場所を見つけ出すことをより困難にする。メモリおよび／またはデータ線は物理的攻撃に対して保護されるので、物理的攻撃に対するメモリに基づくＰＵＦの耐性が高まった。
【００１９】
好ましい実施形態では、メモリは多数の別個のメモリブロックを含み、この場合、多数のメモリ位置がすべての多数のメモリブロック全体に分散させられる。
【００２０】
暗号鍵は多数のメモリから取り出されるデータの組合せから得られるので、暗号鍵を回復するための十分な情報を得るためには、攻撃者が多数のメモリを盗聴する必要がある。多数のメモリはＩＣ全体の位置に分散させられるので、攻撃者が探索を適用する必要がある異なる位置が多数ある。したがって、攻撃者が暗号鍵を回復するために費やす必要がある努力が増えた。さらに、探索の数が増えたので、攻撃者が探索を適用している間にメモリを損傷する可能性が高まった。メモリが損傷を受けた場合、そのメモリにより生成される特定の値がそのメモリの物理的状況に依存するので、攻撃者がそのメモリに対する探索から知る情報がより有用でなくなる。損傷の結果、物理的構成が変わった後、物理的構成が生成することができる値もまた変わることがある。
【００２１】
探索攻撃がより困難なので、物理的攻撃に対するメモリに基づくＰＵＦの耐性が高まった。
【００２２】
好ましい実施形態では、電子システムは特定のメモリ位置のそれぞれに特定の値の反転を書き込むための反転手段、および多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段を含む。
【００２３】
好ましい実施形態では、メモリはまた書き込むために構成される。電子システムは、特定のメモリ位置のそれぞれに特定の値の反転を書き込むための反転手段、および多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段を含む。
【００２４】
メモリに基づくＰＵＦを２度チャレンジすることは望ましくなく、このことは動作中に好都合でない電源切断および電源投入を必要とするためである。暗号鍵へのアクセスを保つためには、ＰＵＦは再度チャレンジされることができないので、暗号鍵はメモリ内に保持されなければならない。このことはいくつかの理由で望ましくない。記憶された鍵は別のアプリケーションにより使用されることができないメモリを占有し、さらに、鍵が記憶されるメモリはそれ自体物理的攻撃に対して脆弱であることがある。さらに、メモリのエージングを、すなわち電子システムを多数回使用する結果としての多数の値の漸進的変化を防止するために、多数の値を記憶するのにメモリを使用できない。メモリ内に、具体的にはＳＲＡＭメモリ内に、多数の値を抽出するために使用されたメモリ位置に多数の値を記憶することが、エージングを加速する。エージングを軽減するために、多数の値の反転がメモリ位置に記憶されなければならない。
【００２５】
本発明は反転決定手段を提供するので、電子システムは、メモリの内容が多数の値かどうか、または多数の値の反転が書き込まれたかどうかを決定することができる。多数の値の反転がメモリ内に存在する場合、鍵エクストラクタはメモリから取り出された値をまず反転する。したがって、暗号鍵が必要とされるとき、鍵エクストラクタは、電源投入および電源切断のサイクルを必要とせずにメモリの内容を使用することができる。
【００２６】
反転決定手段は電子システムのいわゆるホットスタートをさらに可能にする。ホットスタートでは、電子システムはメモリの電源切断なしに初期状態に進む。メモリの電源が切断されない場合、メモリの内容は変わらない。電子システムは、エージング対抗策のためにメモリ内に多数の値ではなく、反転された多数の値を有するので、電子システムは通常の電源投入ルーチンを通過することができない。しかしながら、電源投入ルーチン中に反転決定手段を採用することにより、ルーチンは、メモリが多数の値、または多数の値の反転を記憶しているかどうか決定することができる。後者の場合、鍵抽出手段は、暗号鍵を決定する前にまず反転するように構成される。
【００２７】
反転決定手段はそれ自体でメモリに基づくＰＵＦを採用する任意の電子システムで特に有利であることが留意されたい。具体的には、反転決定手段はまた再配列手段なしに本発明による電子システムと共に使用されることがある。反転決定手段の有利な点は、本明細書で説明されるように再配列手段と共に維持される。
【００２８】
本発明が例によって、および添付の図面を参照してさらに詳細に説明される。
【図面の簡単な説明】
【００２９】
【図１】本発明による電子システムの第１の実施形態を図示するブロック図である。
【発明を実施するための形態】
【００３０】
図をとおして同様の特徴または対応する特徴が同じ参照番号により示される。
【００３１】
参照番号のリスト
１００  電子システム
１１２、１１４、１１６  メモリ
１２０  アドレスデコーダ
１３０  鍵エクストラクタ
１４０  暗号エンジン
１５０  ヘルパデータコンストラクタ
１６０  ヘルパデータメモリ
ＡＤＢ０、ＡＤＢ１、ＡＤＢ２、ＡＤＢ３  バス
【００３２】
残りの部分では、ＰＵＦに関係する４つの主要な発明の説明が示される。本発明は一緒に使用されることができるが、別の技術と組み合わせて互いに独立して使用されることもある。
【００３３】
要約すると、主要な発明は以下となる：
１．再配列
再配列手段を使用することにより、ＰＵＦとして使用されるメモリへのデータ線を盗聴することが攻撃者にとってより有用でなくなる。メモリ位置に関係する値が攻撃者により得られることがあるが、得られた値がどの時点で暗号鍵を決定する際に使用されるかという情報が攻撃者から不明瞭にされる。このことが鍵を回復することをはるかに困難にする。
【００３４】
２．多数のメモリの使用
多数のメモリを使用することが、攻撃者に多数のメモリを盗聴させる。多数のメモリを盗聴することが攻撃者にとって努力を増大させる。さらに、攻撃者は電子システムを損傷する可能性をより高く伸ばす。
【００３５】
一実施形態は以下のとおりである。多数のメモリ位置を備えるメモリを有する電子システムであって、メモリが多数の別個のメモリブロックを含み、多数のメモリ位置がすべての多数のメモリブロック全体に分散させられ、多数のメモリ位置のそれぞれの特定のメモリ位置が、特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を生成するように構成され、電子システムが、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含む電子システム。
【００３６】
３．ヘルパデータが生成されたかどうかを信号伝達するための構築信号伝達手段
ヘルパデータがオンラインで生成されるとき、すなわち鍵抽出が後で行われる同じ機器上で生成されるとき、ヘルパデータメモリがヘルパデータで埋められる前のヘルパデータメモリの内容を、ヘルパデータメモリがヘルパデータで埋められた後の状況と区別することが問題となる。
【００３７】
一実施形態は以下のとおりである。特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含み、多数の値に依存するヘルパデータを生成するようにおよびヘルパデータをヘルパデータメモリ内に記憶するように構成されるヘルパデータ構築手段を含む電子システムであって、鍵抽出手段が、暗号鍵を再現可能にするためにヘルパデータに依存する多数の値に対してエラー訂正手順を適用するように構成され、電子システムが、ヘルパデータが生成された場合に信号伝達するための構築信号伝達手段を含む電子システム。
【００３８】
４．多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段
再現可能な暗号鍵がシステムで２度以上必要とされる場合、問題となる。再現可能な暗号鍵が動作中にメモリ内に記憶される場合、そのメモリは物理的攻撃者の標的となる。一方、ＰＵＦメモリに再チャレンジすることは、望ましくない電源切断、電源投入のサイクルを必要とする。さらに、アンチエージング手段がメモリからの再取り出しを妨げる。この問題は、多数の値の反転が多数のメモリ位置に書き込まれたかどうかを決定するおよび／または検出することができるようにする反転決定手段を有することにより解決される。
【００３９】
一実施形態は以下のとおりである。特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含む電子システムであって、メモリが、書き込むために構成され、電子システムが、特定のメモリ位置のそれぞれに特定の値の反転を書き込むための反転手段、および多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段を含む電子システム。
【００４０】
これらの発明は多くの異なる形態の実施形態を受け入れることができるが、本開示が本発明の原理の例示として考えられるべきであり、示され説明される特定の実施形態に本発明を限定することを意図されないという理解の下で、１つまたは複数の特定の実施形態が図面で示され、本明細書で詳細に説明される。
【００４１】
図１に電子システム１００が図示されている。電子システム１００は好ましくは多数のメモリを含む。電子システム１００はまた単一メモリを含むこともあり、好ましくは、単一メモリの一部だけが多数の値を生成するために使用される。図では３つのメモリ、すなわちメモリ１１２、メモリ１１４、およびメモリ１１６が図示されている。使用されるメモリの数は、すなわち別個のメモリブロックの数は本質的に任意である。メモリ１１２、１１４、および１１６は合わせて多数のメモリ位置を含む。メモリのそれぞれが少なくとも１つのメモリ位置を含み、多数のメモリ位置を含むことがある。より多くの別個のメモリを使用することは、攻撃者がデータ線を探索する必要がある地点の数を増やすので、安全性を高める。より多くの別個のメモリを使用することはまた、暗号鍵を構築するために使用されるメモリ位置の位置をさらに不明瞭にする。集積回路全体に多数のメモリセルを分散させることにより、攻撃者は、ＰＵＦデータがどこで生成されたか場所を突き止めることがより困難になる。
【００４２】
メモリ１１２、１１４、および１１６は好ましくはＳＲＡＭであるが、別のメモリ、具体的には不揮発性メモリも受け入れられる。システム１００の電源投入後のある時点、およびメモリ位置が書き込まれる前に、そのようなメモリ内のメモリ位置が取り出されるとき、メモリ位置から取り出される値は不定である。たとえば、メモリ位置がビットサイズの場合、取り出された値は１のことも、０のこともある。しかしながら、メモリ位置を構成する構成要素の小さな偏差が値の一方が他方よりもおそらく大きくなるようにする。偏差はメモリの製造中に偶然取り込まれる。この意味で、メモリ位置はＰＵＦに似た挙動を有する。すべてのメモリ位置がこの方法で取り出されたとき、多数の値が得られる。メモリの電源が切断され、投入された後に値が再度取り出された場合、新しい値がしばしば古い値と同じとなるが、このことは必然ではない。同様に、多数の値がすべて再び取り出されたとき、多数の値の多くが新しい値を得ている。
【００４３】
第２の種類のメモリに基づくＰＵＦがデュアルポートＲＡＭを含むことがある。両方のポートに異なる情報を同時に書き込むことにより、デュアルポートＲＡＭのメモリセルが不定な状態に至らせられる。両方のポートに書き込む結果としてメモリセルにより生じる結果はＰＵＦに似た挙動を示す。
【００４４】
ＰＵＦの挙動を示す不揮発性メモリ要素の別の例がフリップフロップおよびラッチである。電源投入で、フリップフロップ、たとえば集積回路内に含まれることがあるフリップフロップが、ランダムな値で埋められる。ランダムな値はフリップフロップが構築される正確な方法に依存する。フリップフロップを構築する様々な構成要素の配置のわずかな変化がランダムな値を変えることがある。
【００４５】
異なるタイプのメモリが組み合わせられることがある。たとえば、メモリ１１２はＳＲＡＭでもよく、メモリ１１４は１つまたは複数のフリップフロップでもよい。このことは、将来、攻撃が特定のタイプのメモリのどれに照準が当てられているかがわかった場合に有利にする。
【００４６】
メモリに基づくＰＵＦがまた、たとえば１つまたは複数のＳＲＡＭメモリセルをシミュレートすることによりフィールドプログラマブルゲートアレイ（ＦＰＧＡ）から構築されることがある。別の使用できるＰＵＦが遅延現象に基づくいわゆる固有ＰＵＦを含む。遅延ＰＵＦの詳細が、米国特許出願公開第２００３０２０４７４３号明細書で知ることができる。バタフライＰＵＦの詳細が、国際公開第ＩＢ２００８／０５３２９９号で得られることができる。
【００４７】
電子システム１００は、少数のメモリ位置しか、たとえば単一フリップフロップしかそれぞれ含まないいくつかのメモリを含むことがある。多くの少数のメモリ位置が、たとえば１、２、４、もしくは８、または２の任意の少数のべき乗、または任意の少数とすることができる。一実施形態では、すべてのメモリ位置がそのような少数の全体に分散させられる。一実施形態では、メモリ位置全てが単一のメモリ位置しかそれぞれ有しないメモリ全体に分散させられる。
【００４８】
電子システム１００はファジィエクストラクタとしても知られる鍵エクストラクタ１３０をさらに含む。好ましくは、電子システム１００はまた、ヘルパデータコンストラクタ１５０およびヘルパデータメモリ１６０を含む。鍵エクストラクタ１３０はメモリ位置を取り出すように構成され、その目的のために好ましくはアドレスデコーダ１２０を介してメモリ１１２、１１４、および１１６に接続されることがある。鍵エクストラクタ１３０はまた、鍵エクストラクタ１３０がヘルパデータを受信することができるヘルパデータメモリ１６０に接続されることがある。ヘルパデータコンストラクタ１５０はヘルパデータを生成するように構成され、その目的のために、ヘルパデータコンストラクタ１５０はまた、好ましくは同様にアドレスデコーダ１２０を介してメモリ１１２、１１４、および１１６にアクセスできる。ヘルパデータコンストラクタ１５０は、好ましくはヘルパデータコンストラクタ１５０が生成したヘルパデータを記憶するためのヘルパデータメモリ１６０に接続される。
【００４９】
アドレスデコーダ１２０が多数の別個のメモリブロック、たとえばメモリ１１２、１１４、および１１６と共に使用される場合、好ましくは、アドレスデコーダ１２０は、すべての別個のメモリブロック全体にわたり多数の値を並べ変える第２の配列に、多数の別個のメモリブロック内の多数の位置を並べ変える。たとえば、アドレスデコーダ１２０は、鍵エクストラクタ１３０により使用されるいくつかの連続したメモリアドレスの次の１つを別個のメモリブロックの次の１つにマッピングすることがある。
【００５０】
ヘルパデータメモリ１６０は任意のタイプの不揮発性メモリを含むことがあるが、追加のセキュリティのために、メモリは一度しか書き込まれることができないワンタイムプログラマブル（ＯＴＰ）メモリでもよい。ＯＴＰメモリは、登録段階が終了した後に攻撃者がヘルパデータメモリの内容を修正することができないという追加の有利な点を与える。
【００５１】
たとえば、メモリ１１２は図でバスＡＤＢ１として示されるアドレスバスおよび／またはデータバスを使用してアドレスデコーダ１２０と接続される。メモリ１１４はアドレスバスおよび／またはデータバスＡＤＢ２を使用してアドレスデコーダ１２０と接続されることがある。メモリ１１６はアドレスバスおよび／またはデータバスＡＤＢ３を使用してアドレスデコーダ１２０と接続されることがある。鍵エクストラクタ１３０はアドレスバスおよび／またはデータバスＡＤＢ０を介してアドレスデコーダ１２０に接続されることがある。
【００５２】
再配列手段はいくつかの方法で第２の順序で多数の値を配置することができる。たとえば、アドレスデコーダ１２０は、アドレスデコーダ１２０が受け取るアドレスを変えることができ、この方法で、アドレスデコーダ１２０は第１の順序の多数の値の取り取り値を第２の順序でメモリに到着させる。好ましくは、第２の順序は多数のメモリブロック全体に分散させられる。あるいは、アドレスデコーダ１２０は、多数の値が取り出された後だが鍵エクストラクタ１３０が暗号鍵を決定する前に、多数の値を並べ変えることができる。
【００５３】
鍵エクストラクタ１３０およびヘルパデータコンストラクタ１５０は、たとえばバスＡＤＢ０上でアドレスデコーダ１２０にメモリ位置に対する取り出し要求を送信することによりメモリ位置にアクセスすることがある。メモリ１１２、１１４、および１１６内のメモリ位置はアドレスデコーダ１２０によりバスＡＤＢ０上で使用されるアドレスと関連付けられる。鍵エクストラクタ１３０および／またはヘルパデータコンストラクタ１５０のそれぞれの取り出し要求は、そのようなアドレスを含む。電子システム１００に含まれるアドレスデコーダ１２０が取り出し要求を受け取る場合、アドレスデコーダ１２０はアドレスを取り出し、関連するメモリ位置がどのメモリに配置されるかを決定し、次に、アドレスデコーダ１２０は取り出し要求を正しいメモリに転送することができる。好ましくは、アドレスデコーダ１２０はまた、メモリ内で使用されるローカルアドレスにアドレスを変換する。一実施形態では、アドレスデコーダ１２０は、ヘルパデータコンストラクタ１５０および／または鍵エクストラクタ１３０で使用されるアドレスとメモリ位置の間の任意のマッピングを適用することができる。たとえば、アドレスデコーダ１２０はルックアップテーブルを使用してアドレスをローカルアドレスに変換することがある、またはアドレスデコーダ１２０は対称ブロック暗号、もしくはマッピングのための並べ変えなどを使用することがある。
【００５４】
鍵エクストラクタ１３０は、多数の位置から、および鍵エクストラクタ１３０がヘルパデータメモリ１６０から取り出すヘルパデータから鍵エクストラクタ１３０が取り出す多数の値に依存する暗号鍵を決定するように構成される。鍵エクストラクタ１３０はアドレスデコーダ１２０を介して取り出すので、多数の値は暗号鍵を決定する前に再配列される。
【００５５】
暗号鍵は、暗号鍵の応用の技術分野でそれ自体が知られている様々な暗号応用で使用されることができる。たとえば、電子システム１００は、暗号鍵を入力として取り出す暗号エンジン１４０を含むことがある。たとえば、暗号エンジン１４０は鍵を使用して、メッセージ認証コード（ＭＡＣ）を使って第三者に対して自分を認証することがある。ＭＡＣは、電子システム１００の外側の何らかの場所（図示せず）に送信されるメッセージに添付される。
【００５６】
好ましくは、電子システム１００の一部またはすべての構成要素が集積回路に合体される。特には、メモリ（たとえばメモリ１１２、メモリ１１４、メモリ１１６）、アドレスデコーダ１２０、鍵エクストラクタ１３０、暗号エンジン１４０、およびヘルパデータコンストラクタ１５０を単一ＩＣに合体することが有利である。有利な点は、これらの構成要素すべてが、暗号鍵を危険にさらすことがある情報にアクセスできることである。ヘルパデータメモリ１６０へのアクセスだけが暗号鍵を危険にさらさないことが知られており、したがって、ヘルパデータメモリ１６０はＩＣに一体化される必要がない。しかしながら、ヘルパデータメモリ１６０もＩＣに一体化することがさらに有利である。さらに有利なのが、メモリ位置に含まれる秘密情報の少なくとも部分的知識が得られても、攻撃者が、秘密情報を利用するためにヘルパデータメモリ１６０内に記憶されるヘルパデータも回復する必要があるということである。このことが攻撃の困難さをさらに高める。ヘルパデータメモリ１６０はまたヘルパデータコンストラクタ１５０内に含まれることがある。好ましくは、多数の別個のメモリブロックが集積回路全体に分散させられる。
【００５７】
電子システム１００の電源が投入された後、動作使用中にヘルパデータコンストラクタ１５０は、ヘルパデータが構築されたかどうかを決定する。たとえば、一実施形態では、ヘルパデータコンストラクタ１５０は構築信号伝達フラグ（図示せず）を調べることができる。構築信号伝達フラグは、たとえばフリップフロップまたは不揮発性メモリ、たとえばフラッシュメモリを含む。フリップフロップの一方の状態が、ヘルパデータが既に生成されたことをヘルパデータコンストラクタ１５０に示し、もう一方の状態が、ヘルパデータが生成されなかったことを示す。第２の実施形態では、ヘルパデータコンストラクタ１５０はヘルパデータメモリ１６０を調べて、ヘルパデータメモリ１６０が構築ストリングを記憶しているかどうかを検証する。ヘルパデータコンストラクタ１５０は、ヘルパデータメモリ１６０のすべて、または大部分、または選択された部分をスキャンして、構築ストリングを探すことがある。ヘルパデータコンストラクタ１５０はまた、構築ストリングを探してヘルパデータメモリ１６０内の特定の所定の場所を見ることがある。構築ストリングはどんな任意の、しかし固定した所定のストリングとすることもできる。ヘルパデータコンストラクタ１５０はまた、ヘルパデータが生成された後にヘルパデータに対して計算された署名でもよい。
【００５８】
構築ストリングを使用することには、初期化されていないヘルパデータメモリ１６０が使用されることがあるという有利な点がある。ヘルパデータメモリ１６０が最初にランダムデータを含む場合、ヘルパデータからランダムデータを見分けることができないことがある。しかしながら、十分な長さの構築ストリングを、たとえば１００個のゼロビットのストリングまたはいくつかの数のランダムだが固定したビットを書き込むことにより、ヘルパデータメモリ１６０がヘルパデータで埋められたことが示されることができる。
【００５９】
ヘルパデータコンストラクタ１５０は、ヘルパデータが生成されていないと決定する場合、ヘルパデータコンストラクタ１５０はヘルパデータの構築を続ける。ヘルパデータを構築する様々な方法が知られており、本明細書では特定の例が示されているが、本質的に、任意のヘルパデータ構築方式が本発明による方法と組み合わせられることがある。ヘルパデータコンストラクタ１５０は、アドレスデコーダ１２０にアドレスする連続した一連の取り出し要求アドレスに対して一連の取り出し要求を送信することにより多数の位置から多数の値を取り出す。アドレスデコーダ１２０は多数の値を第２の順序で配置することがある。次に、ヘルパデータコンストラクタ１５０がエラー訂正符号から１つまたは複数のコードワードを選択する。たとえば、ヘルパデータコンストラクタ１５０はコードワードをランダムに選択することがある。好ましくは、ヘルパデータコンストラクタ１５０は、コードワードの全長が多数の値の長さと少なくとも同じ長さとなるようにコードワードを選択する。好ましくは、長さは桁で、たとえばビットで測定される。次に、ヘルパデータコンストラクタ１５０は、コードワードの連結および多数ビットの連結に対して排他的論理和演算を実行する。たとえば、ヘルパデータコンストラクタ１５０は反復コードを使用することがある。ヘルパデータを構築するために多くの別のエラー訂正符号が、たとえばＢＣＨ符号、リードマラー（Ｒｅｅｄ−Ｍｕｌｌｅｒ）符号、ゴレイ（Ｇｏｌａｙ）コード、リードソロモン（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）符号、ＬＤＰＣ符号などが使用されることがある。さらに、たとえば異なる符号を組み合わせるまたは連結することにより、多数のレベルの符号化を使用することができる。ヘルパデータは排他的論理和演算の結果を含み、ヘルパデータメモリ１６０に書き込まれる。ヘルパデータメモリ１６０は好ましくは不揮発性メモリ、たとえばＥＥＰＲＯＭまたはフラッシュメモリなどである。
【００６０】
排他的論理和演算を必要としない、ヘルパデータを構築する代わりの方法が存在する。たとえば、ヘルパデータコンストラクタ１５０は、適切なエラー訂正符号からランダムなコードワードを選択することがある。次に、コードワード内のそれぞれの個々の要素に対して、たとえばコードワード内のそれぞれのビットに対して、ヘルパデータコンストラクタ１５０が、多数の値で個々の要素を生成したメモリ、たとえばメモリ１１２、１１４、１１６内の個々のランダムな要素を選択する。メモリ内の個々のランダムな要素への個々のポインタが、ヘルパデータ内に記録される、たとえばヘルパデータメモリ１６０内に記憶される。この構築は再配列手段、たとえばアドレスデコーダ１２０と共に、および再配列手段なしに使用されることができる。アドレスデコーダ１２０が使用される場合、ポインタはアドレスデコーダ１２０により再配列されることがある。
【００６１】
ヘルパデータコンストラクタ１５０はオフラインでもよい、すなわち鍵エクストラクタ１３０が存在するシステムに恒久的に接続されなくてもよい。たとえば、一実施形態がメモリ、たとえばメモリ１１２、１１４、１１６、鍵エクストラクタ１３０、およびヘルパデータメモリ１６０を、たとえばスマートカードまたはＲＦＩＤ内に含むことがある。登録段階中に、多数の値が、ヘルパデータを計算するサーバに提示される。次に、計算されたヘルパデータはヘルパデータメモリ内に記憶される。このことには、実施形態、たとえばスマートカードがより少ない回路を含み、したがって、より複雑でなく、製造するのによりコストがかからないという有利な点がある。ヘルパデータコンストラクタ１５０を鍵エクストラクタ１３０と一緒に含めることには、秘密データ、たとえば多数の値および／または暗号鍵の外部コピーがたとえばサーバ上に全く存在しないという有利な点がある。したがって、秘密データがサーバ上などで攻撃により危険にさらされることができない。
【００６２】
ヘルパデータコンストラクタ１５０が、ヘルパデータが生成されたと決定した場合、鍵エクストラクタ１３０が暗号鍵の決定を続けることがある。好ましくは、鍵エクストラクタ１３０は、以下に説明されるように、反転された値がメモリに書き込まれたかどうかを最初に決定する。鍵エクストラクタ１３０がそのように決定しない場合、鍵エクストラクタ１３０は好ましくは第１の順序で多数の位置から値を取り出す。好ましくは、アドレスデコーダ１２０が、上記で説明されたように第２の順序で多数の値を配置する。ＰＵＦを使用して暗号鍵を決定する様々な方法が可能である。本明細書では特定の例が示されているが、ＰＵＦデータから再現可能な暗号鍵を決定する別の方法が本発明と共に使用されることができる。鍵エクストラクタ１３０はヘルパデータメモリ１６０からヘルパデータを取り出し、ヘルパデータコンストラクタ１５０により使用された構築に適合する方法で、取り出された多数の値にヘルパデータを適用することがある。たとえば、鍵エクストラクタ１３０は、取り出された多数の値とヘルパデータの間で排他的論理和を実行することがある。あるいは、鍵エクストラクタ１３０はヘルパデータメモリ１６０内に記憶されるポインタのリストを分析することがある。鍵エクストラクタ１３０は、ヘルパデータを適用した結果にエラー訂正ステップを適用することがある。エラー訂正ステップは、ヘルパデータコンストラクタ１５０がコードワードを選択したコードに対応する。
【００６３】
鍵エクストラクタ１３０は、エラー訂正された結果を直接鍵として使用することがあるが、好ましくは、鍵エクストラクタ１３０は後処理ステップを実行する。たとえば、鍵エクストラクタ１３０はエラー訂正された結果に対して暗号ハッシュ操作を実行することがある。結果が暗号鍵である。本明細書でＰＵＦとして使用されるメモリは、多数の取り出しに対して正確に同じ結果を与えることがある。しかしながら、ヘルパデータが生成されたときに生成された値と異なる、ＰＵＦにより生成される任意の値が、エラー訂正符号によりエラーとみなされる。エラー訂正符号は、エラー訂正符号の分野で知られているそのようなエラーを訂正することができる。
【００６４】
鍵エクストラクタ１３０が、再現可能な暗号鍵を決定した後、任意選択でアンチエージング対応策を実行することができる。たとえば、鍵エクストラクタ１３０は、多数の値の反転をメモリに第１の順序で書き戻すことがある。アドレスデコーダ１２０が使用される場合、多数の値の取り出しに適用された同じマッピングが、反転された多数の値の書き込みに適用されるべきである。この手段は、メモリがＰＵＦとして使用できる時間を延ばす。
【００６５】
電子システム１００がホットスタートを受信した場合、たとえば、電子システム１００が中間でメモリ、たとえばメモリ１１２、１１４、および１１６の電源を切断することなく電子システム１００の起動ルーチンを開始する場合。鍵エクストラクタ１３０が鍵を決定する必要があるが、値がメモリに書き込まれているのでメモリがＰＵＦとして反応しないことになることがある。しかしながら、この問題は、多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段を使用して解決されることができる。好ましくは、反転決定手段は電子システムの再スタート、すなわち再ブートの後に反転を決定するように構成される。
【００６６】
たとえば、電子システム１００は、多数のメモリ位置が多数の値の反転を記憶していることを信号伝達するための反転信号伝達フラグ（図１に示されていない）を含むことがある。鍵エクストラクタ１３０がメモリに反転された多数の値を書き込んだ後に、鍵エクストラクタ１３０はまた、反転された多数の値が書き込まれたことを示す状態に反転信号伝達フラグをセットすることがある。電子システム１００はまた、反転された多数の値が書き込まれなかったことを示す状態に反転信号伝達フラグをリセットするためのリセット手段を含むことがある。リセット手段は、コールドリスタートでトリガされることがある。たとえば、リセット手段は、メモリ、たとえばメモリ１１２、１１４、および１１６の１つまたは複数の電源が切断され、そのときに反転信号伝達フラグをリセットされたことを検出することがある。
【００６７】
好ましくは、反転信号伝達フラグは、電源投入後、固定した状態にある信号メモリを含む。反転が書き込まれた後、信号メモリに新しい状態が書き込まれる。ホットリスタートが行われたとき、メモリの電源は切断されず、同様に、信号メモリの電源も切断されない。この場合、信号メモリはメモリの反転状態を正しく示す。しかしながら、コールドスタートが行われたとき、信号メモリの電源は切断され、その結果、固定された状態に自動的に戻った。
【００６８】
別の実施形態では、反転信号伝達フラグが使用される必要がない。この実施形態では、ヘルパデータコンストラクタ１５０が、ヘルパデータを生成するのと一緒にヘルパデータ検証ストリングを生成する。ヘルパデータ検証ストリングは再現可能な暗号鍵の正しさを示す。たとえば、ヘルパデータコンストラクタ１５０は、場合により鍵エクストラクタ１３０を使用して、再現可能な鍵の暗号ハッシュを計算することがある。ヘルパデータコンストラクタ１５０はまた、検証ストリングとして再現可能な暗号鍵に対するＭＡＣを計算することがある。検証ストリングは、鍵エクストラクタ１３０がアクセスできるメモリ、たとえばヘルパデータメモリ１６０内に記憶されることが好ましい。
【００６９】
鍵エクストラクタ１３０が後でたとえば上記で概説された方法を使用して、再現可能な暗号鍵を決定し始めるとき、この決定が成功したかどうかを、検証ストリングを使用して決定することがある。たとえば、反転された多数の値をメモリが含む場合、典型的には、変更されない鍵決定が成功しない。鍵エクストラクタ１３０は、たとえば鍵エクストラクタ１３０が生成した暗号鍵のハッシュを計算し、そのハッシュを、ヘルパデータメモリ１６０に記憶されたハッシュと比較することができる。同様に、鍵エクストラクタ１３０は、鍵エクストラクタ１３０が生成した暗号鍵に対するＭＡＣを計算し、そのＭＡＣを、ヘルパデータメモリ１６０内に記憶されたＭＡＣと比較することがある。不一致が見つけられたとき、すなわち鍵エクストラクタ１３０が、鍵エクストラクタ１３０が生成した鍵が正しくないことを検出したとき、鍵エクストラクタ１３０は、多数の値の反転を使用して暗号鍵を決定しようとすることがある。
【００７０】
いずれの取り組みも正しい暗号鍵を与えないことになることがある。すなわち、鍵エクストラクタ１３０が、多数の値を使用しても、反転された多数の値を使用しても、再現可能な暗号鍵を決定することができない。これは、たとえば、一部の予期しない状況、たとえば攻撃、誤動作などの場合に起こることがある。したがって、この実施形態には、そのような状況が早期に検出されるという有利な点がある。１つの特定の状況、すなわちＰＵＦのエージングがまたこの方法で検出される。
【００７１】
以下に、アドレスデコーダ１２０の可能な動作の具体例が示される。
【００７２】
アドレスデコーダ１２０は、鍵エクストラクタ１３０により使用される論理アドレスを多数のＳＲＡＭメモリ上の物理アドレスにマッピングする。鍵エクストラクタがＳＲＡＭメモリからデータを取り出しているとき、鍵エクストラクタはバスＡＤＢ０を使用して、取り出されるべきアドレスを示しデータを取り出すことがある。好ましくは、アドレスデコーダは秘密のマッピングを使用して、バスＡＤＢ０上の論理アドレスをバスＡＤＢ１、ＡＤＢ２、およびＡＤＢ３上の物理メモリアドレスに分散する。たとえば、鍵エクストラクタはいくつかのデータバイトを、たとえば２５６のデータバイトをメモエリアドレスから、たとえばバスＡＤＢ０上のメモリアドレス０ｘ００００から０ｘ００ＦＦまでから取り出していることがある。アドレスデコーダ１２０はこれらのメモリアドレスを以下のメモリブロックにわたり分散させる：
バスＡＤＢ０上のアドレス０ｘ００００から０ｘ００３ＦまでがバスＡＤＢ１上のアドレス０ｘ００００から０ｘ００３Ｆまでに接続される。
バスＡＤＢ０上のアドレス０ｘ００４０から０ｘ００７ＦまでがバスＡＤＢ２上のアドレス０ｘ００００から０ｘ００３Ｆまでに接続される。
バスＡＤＢ０上のアドレス０ｘ００８０から０ｘ００ＢＦまでがバスＡＤＢ３上のアドレス０ｘ００００から０ｘ００３Ｆまでに接続される。
バスＡＤＢ０上のアドレス０ｘ００Ｃ０から０ｘ００ＦＦまでがバスＡＤＢ１上のアドレス０ｘ００４０から０ｘ００７Ｆまでに接続される。
・・・
【００７３】
バスＡＤＢ０に対して鍵エクストラクタ１３０により使用される第１の範囲のアドレスが、メモリ１１２にマッピングされることに留意されたい。バスＡＤＢ０に対して鍵エクストラクタ１３０により使用される第２の範囲のアドレスがまた、メモリ１１２にマッピングされる。第１の範囲と第２の範囲の間に、異なるメモリに、この場合メモリ１１４および１１６にマッピングされる、鍵エクストラクタ１３０により使用される少なくとも１つのアドレスがある。
【００７４】
これは例示的方式でしかなく、原理的に任意の種類のマッピングが可能であることに留意されたい。好ましくは、アドレスデコーダのマッピングは固定され、その結果、バスＡＤＢ０上の同じメモリアドレスが取り出されるまたは書き込まれるたびに、このアドレスがバスＡＤＢ１、ＡＤＢ２、ＡＤＢ３の１つの同じメモリアドレスにマッピングされる。
【００７５】
本発明による好ましい実施形態では、ヘルパデータ構築手段はアンロック手段に結合され、ヘルパデータ構築手段はアンロック手段がアンロック信号を受け取ると同時にヘルパデータを生成するように構成される。アンロック手段は、登録段階が完了した後にヘルパコンストラクタ１５０を再起動することに関与する攻撃を避けるので、アンロック手段には独自の利点がある。そのような独自の実施形態の一例が以下のとおりである。特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含み、多数の値に依存するヘルパデータを生成しヘルパデータをヘルパデータメモリ内に記憶するように構成されるヘルパデータ構築手段を含む電子システムであって、鍵抽出手段が、暗号鍵を再現可能にするために、ヘルパデータに依存する多数の値に対してエラー訂正手順を適用するように構成され、ヘルパデータ構築手段がアンロック手段に結合され、ヘルパデータ構築手段が、アンロック手段がアンロック信号を受け取ると同時にヘルパデータを生成するように構成される電子システム。
【００７６】
アンロック手段は、パスワードが記憶されるアンロックメモリを含むことがある。アンロック信号はパスワードを含む。アンロック手段がアンロック信号を受け取るとき、アンロック手段はヘルパデータコンストラクタ１５０をアンロックし、ヘルパデータコンストラクタ１５０がヘルパデータの生成を続けることができるようにする。
【００７７】
あるいは、アンロック手段はチャレンジ応答システムを使用する。そのように要求されたとき、アンロック手段はチャレンジを送出する。アンロック手段が正しい応答を含むアンロック信号を受け取るとき、アンロック手段はヘルパデータコンストラクタ１５０をアンロックする。たとえば、チャレンジは乱数であり、対応する応答は、アンロック手段のメモリ内に記憶される秘密鍵によるチャレンジの暗号化である。アンロック手段は、本明細書で開示される本発明の任意の１つと組み合わせられることがある。
【００７８】
上記で指摘されたように、集積回路全体に多数のメモリセルを分散させることにより、ＰＵＦデータが生成された場所を攻撃者が突き止めることがより困難になる。分散は、集積回路のレイアウトを作り出している間に行われることがある。レイアウトから、集積回路が製造されることがある。集積回路のためのレイアウトが以下のように生成されることがある。
【００７９】
ハードウェア記述言語（ＨＤＬ）、たとえばＶＨＤＬまたはＶｅｒｉｌｏｇを使用して、電子回路の形式的記述が与えられる。合成ツールを使用して、ゲートレベルのネットリストが形式的記述から決定される。ネットリストは配置およびルーティングツールにより処理される。配置は最終レイアウトを表す領域の上にゲートを配置することを含む。ルーティングは、必要とされる場合、配置されるゲート間の電気的接続を決定することを含む。配置およびルーティングツールは、様々な指定される制約を受けてゲートの配置を見つけ出そうとする。
【００８０】
多数のメモリセルが集積回路全体に分散させられる、集積回路のためのレイアウトが得られることができる方法がいくつかある。本発明者らはこれらの方法を「レイアウト不明瞭化（ｏｂｆｕｓｃａｔｉｏｎ）」法と集合的に呼ぶ。これらの方法が、集積回路のリバースエンジニアリングをより困難にするためにレイアウトを配置または再配置するためである。レイアウト不明瞭化の特に効果的方法が、レイアウトの可視的不明瞭化であることが確認された。レイアウトの可視的不明瞭化では、ゲート間の接続は変えられず、多数のメモリセルが集積回路全体に分散させられるように、ゲートの配置およびルーティングだけが修正される。ゲート間の接続が変えられることがあり、追加のゲートが挿入されることがあるなどの「論理的不明瞭化（ｌｏｇｉｃａｌ  ｏｂｆｕｓｃａｔｉｏｎ）」を使用してレイアウト不明瞭化を行うことも可能である。たとえば、集積回路のロジックを生成するゲートに接続されないダミーゲートが挿入されることがある。可視的不明瞭化は論理的不明瞭化と組み合わせられることがある。中くらいの複雑さの集積回路に対してさえ、可視的不明瞭化はリバースエンジニアリングにとって既に大きな障壁となっていることが確認された。
【００８１】
配置およびルーティングツールを使ったネットリストの処理は、いくつかの方法で集積回路全体に多数のメモリセルを分散させるように構成されることがある。一部の例が以下に示される。
【００８２】
合成中、いわゆる「平坦化（ｆｌａｔｔｅｎｉｎｇ）」オプションが、いわゆる「階層化」オプションの代わりに使用されることがある。ゲートレベルのネットリストを生成するとき、平坦化オプションは合成ツールにモジュール境界を越えて最適化するが、階層化オプションは、合成ツールに元の階層を元の場所に保持させる。この方法では、多数のメモリセルが単一モジュール内に接近して一緒に配置されることが避けられる。
【００８３】
さらに、合成ツールは、いわゆる「ハードＩＰ（ｈａｒｄ  ＩＰ）」ブロックの使用を避けるように指令されることができる。ハードＩＰ設計がマスクレイアウトとして表されるので、配置およびルーティングは既に行われている。ハードＩＰを使用することにより、設計者は既存の（典型的には複雑な）ビルディングブロックを使ってシステムオンチップ（ＳＯＣ）を効果的に構築することができるようになる。ハードＩＰの使用がリバースエンジニアリングをより容易にすると言われている。まず第一に、そのようなハードＩＰブロック内の個々のゲートについては、それらのゲートの相対的配置があらかじめ決められ、さらに不明瞭にされないことがある。第二に、レイアウトの目視検査を使用すると、標準的ハードＩＰブロックはハードＩＰブロックの個々のゲートよりも大きいので、認めるのがより容易である。したがって、少なくとも使用されるハードＩＰブロックまで集積回路をリバースエンジニアリングするために、より低レベルの拡大が必要とされる。平坦化合成は、あらかじめ合成されており、合成ツールにとってブラックボックスとして見えるので、ハードＩＰブロックで機能しない。
【００８４】
レイアウト不明瞭化の第３の方法は、集積回路全体におよび／または多数の金属層全体にゲートが広げられるようにするように配置およびルーティングツールを構成することである。たとえば、配置およびルーティングツールは、ネットリストにより課される制約を受ける様々な目標のためにレイアウトを最適化するためのオプティマイザを含むことがある。たとえば、オプティマイザが、電気的接続の全長を最小にする目標を有することがある。オプティマイザは別の目標で、すなわち、多数のメモリセルを分散させるために多数のメモリセルの分散を最適化するように構成されることがある。
【００８５】
たとえば、多数のメモリ位置に対応するネットリスト内の多数のゲートが識別されることがある。メモリ位置により生成される個々の値が、そのメモリ位置に対応するとして識別されるゲートに依存するように、ゲートは識別される。換言すれば、集積回路のリバースエンジニアリングから特定のメモリ位置によりどの値が生成されるかを決定するためには、少なくとも、その特定のメモリ位置に対して識別されるゲートをリバースエンジニアリングする必要がある。好ましくは、異なるメモリ位置が異なるゲートに対応する。集積回路の形式的記述に基づき識別が行われることがある。たとえば、合成ツールは、メモリ位置を指定するＨＤＬ記述での指令の結果としてどのゲートが合成されるかの経過を追うことがある。合成ツールはどのメモリ位置が不明瞭にされるべきかを指令されることがあることに留意されたい。たとえば、メモリ位置に関連する指令がタグ付けされることがある。一方、合成ツール自体がまた、配置およびルーティングツールに情報を渡すためにタグ付けを使用することがある。たとえば、配置およびルーティングツールが、どのゲートがメモリに関連付けられるかに関する情報を有するように、それぞれのメモリ位置に対して少なくとも１つの重要なゲートにタグ付けする。重要なゲートが、特定のメモリ位置の個々の値が依存するゲートである。
【００８６】
配置およびルーティングツールにより行われる不明瞭化ステップ中、識別されたゲートがランダムな方法で集積回路全体に分散させられる。不明瞭化ステップは重要なゲートをばらばらにする。その結果、識別されたゲートの集積回路上の位置が予測できない。ゲートの位置を突き止め、そういうものとしてゲートにラベルを付けるために、攻撃者が集積回路のかなりの部分をリバースエンジニアリングする必要がある手段である。すなわち、攻撃者が集積回路上のすべてのゲートの位置およびタイプを知っていることがあっても、暗号鍵を生成するためにどのゲートが使用されるかは依然としてはっきりとわからないことがある。すなわち、不明瞭化レイアウトでは、ゲートの機能は、ゲートの位置および／またはタイプから直接わからない。
【００８７】
レイアウト不明瞭化はまた、集積回路の別の構成要素に、たとえば再配列手段、鍵抽出手段、ヘルパデータ構築手段、ヘルパデータメモリ、アンロック手段、構築信号伝達手段などのうちの任意の１つに適用されることがある。
【００８８】
多数のメモリ位置の個々の値の生成を担当するネットリストのゲートを不明瞭にする１つの方法が、ゲートの機能に関係なくゲートのかなりの部分を、たとえばゲートの大多数を不明瞭にすることであることに留意されたい。この方法では、たとえば偶然に、メモリ位置の機能を担当するゲートの大部分、およびゲートにより生成される個々の値も不明瞭化される。
【００８９】
メモリ位置の機能にとって重要な、ネットリスト内のゲートを識別することも可能である。たとえば、合成および／または処理が、多数のメモリ位置のそれぞれのメモリ位置に対してゲートレベルのネットリスト内の少なくとも１つのゲートを識別することを含むことがあり、特定のメモリ位置に対応する識別されたゲートに応じて多数のメモリ位置の特定のメモリ位置により個々の値を生成する。ネットリストの処理は、識別されたゲートが集積回路全体にランダムに分散させられる不明瞭化ステップを含むことがある。
【００９０】
集積回路全体へのゲートのランダムな分散がゲートを分散させ、実際上はゲートの集積回路上の位置とゲートの機能との間の相関関係を壊す。具体的には、類似する機能を有するゲートが、たとえばメモリ位置により生成できる値が依存する２つのゲートが、互いに離れて配置されることがある。
【００９１】
上述の実施形態は本発明を限定するのではなく例示していること、および当業者は添付の特許請求の範囲を逸脱することなく多くの代わりの実施形態を設計することができることに留意すべきである。特許請求の範囲では、括弧の間に置かれたどのような参照符号も請求項を限定すると解釈されてはならない。動詞「ｃｏｍｐｒｉｓｅ（含む）」および「ｉｎｃｌｕｄｅ（含む）」の使用、および動詞の活用型は、請求項で言及される要素およびステップ以外の要素およびステップの存在を排除しない。要素に先行する冠詞「ａ」または「ａｎ」は、複数のそのような要素の存在を排除しない。本発明は、いくつかの別個の要素を含むハードウェアを用いて、および適切にプログラムされたコンピュータを用いて実現されることがある。コンピュータプログラム製品が適切な媒体、たとえば光記憶装置上に記憶される／分散させられることがあるが、同様に、別の形態で分散させられる、たとえばインターネット、または有線もしくは無線の通信システムを介して分散させられることもある。いくつかの手段を列挙するシステム／機器／装置の請求項では、これらの手段のいくつかが同一の品目のハードウェアにより具体化されることがある。ある種の手段が相互に異なる従属クレームに記載されているという事実だけで、これらの手段の組合せが有利に使用されることができないことを示すわけではない。
【図１】
0005586628.tif 000002