説明

分散PUF

特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリ(112、114、116)を有し、多数のメモリ位置から第1の順序で多数の値を取り出すようにおよび多数の値に依存する再現可能な暗号鍵を決定するために構成される鍵抽出手段(130)を含む電子システム(100)であって、メモリ間で再配列する(120)手段と、暗号鍵を決定する前に第1の順序と異なる第2の順序で鍵抽出手段に多数の値を提供するための鍵抽出手段とをさらに含むことを特徴とする電子システム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含む電子システムに関する。
【背景技術】
【0002】
物理的クローン不能関数(PUF)は、物理的システムとして、たとえば入力に対する関数の出力が刺激の形態で物理的システムに入力を提供し、かつ刺激と物理的システムの間の相互作用の結果として発生する挙動を出力にマッピングすることにより得られる方法で埋め込まれる関数である。この場合、相互作用は予測できず、物理的システム内の本質的にランダムな要素に依存し、その程度は、物理的システムに物理的にアクセスできなければ出力を得ることが不可能である、および物理的システムを再現することが不可能であるような程度である。好ましくは、PUFはまた評価するのが容易である。実際に使用するためには、PUFは製造コストが低いことが好ましい。
【0003】
従来、PUFが受け取る入力または刺激が「チャレンジ」と呼ばれる。PUFの出力、すなわちPUFが刺激との相互作用後に示す挙動は、「応答」と呼ばれる。チャレンジおよびそれに対応するPUFの応答を含む1対がチャレンジ−応答対と呼ばれる。一部のタイプのPUFが広範な異なる入力を可能にし、一部のタイプがより限定された範囲の入力を可能にする、または単一入力しか可能にしないことさえある。PUFが、同じチャレンジに対して多数回評価されたときに、すべて同じの多数の応答を生成する場合が最も好ましい。この特性は必要でないが、実際には大部分のPUFがこの特性を有しない。多数の応答が互いに十分近くにある限り、PUFは有用に適用されることができる。
【0004】
刺激と物理的システムの間の相互作用はシステムへのアクセスなしに予測されることができないので、PUFは特徴付けるまたはモデル化することが困難である。したがって、入力に対する特定のPUFの出力は、特定のPUFの基になる特定の物理的システムを使用してしか得られることができない。チャレンジ−応答対を所有しているということは、ある時点でチャレンジがPUFの基になる一意の物理的システムに提供された証拠である。この特性、すなわち、チャレンジ−応答対が一意の物理的機器に結びつけられているという特性のために、PUFはクローン不能であると呼ばれる。機器にPUFを装備することにより、機器もクローン不能になる。
【0005】
少なくとも部分的にクローン不能な製造工程、すなわち、何らかのランダムさを必然的に導入する製造工程により作り出される物理的システムは、PUFのよい候補となる。
【0006】
PUFの1つの有利な点が、不正操作防止の性質を本来的に持っていることである。PUFの動作を観察するためにPUFを分解することが、ランダムな要素も乱し、したがって、入力が出力にマッピングされる方法も乱す。
【0007】
PUFを構築する1つの方法が、スタティックRAM(SRAM)を使用する。これらのPUFはSRAM PUFと呼ばれる。SRAMには、電源投入後、オンビットおよびオフビットのランダムパターンで埋められるという特性がある。SRAMが次回電源を投入された場合、パターンは正確にそれ自体を繰り返すわけではないが、2つのそのようなパターン間の差は、典型的には状態のビットの半数よりもはるかに少ない。
【0008】
第2の種類のS−RAM PUFがデュアルポートRAMを使って構築される。異なる情報を両方のポートに同時に書き込むことにより、メモリセルはPUFに似た挙動を示す不定の状態に至らせられる。
【0009】
PUFの1つの応用が、電子回路で暗号鍵を得ることである。電子回路は典型的には集積回路(IC)および/またはプログラマブルロジックを含む。プログラマブルロジックは、たとえばフィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)、またはデジタルシグナルプロセッサ(DSP)、マイクロプロセッサなどを含む。暗号鍵を何らかの種類の不揮発性メモリに記憶する代わりに、鍵は機器により必要とされるときだけPUFから生成される。鍵は、もはや必要とされないときに削除されることができる。次回、鍵が必要とされたとき、鍵はPUFから再度得られることができる。PUFは、同じチャレンジが2度評価されたときに正確に同じ結果を与えないことがあるので、ファジィエクストラクタ(Fuzzy Extractor)としても知られる、いわゆるヘルパデータアルゴリズムが、鍵が得られるたびに鍵が同じであることを保証するために使用されることがある。ヘルパデータを使用してノイズが多い測定値から再現可能な値を構築する1つの方法が、たとえば国際公開第2006/129242号「Template Renewal in Helper Data Systems」などに記載されている。
【0010】
PUFを使用して暗号鍵を生成する1つの方法が以下のとおりである。まず、登録段階中に、チャレンジ−応答対が生成される。次に、ファジィエクストラクタを使用してヘルパデータが生成される。機器に対しては、チャレンジおよびヘルパデータが不揮発性メモリ内に記憶される。暗号鍵を得るためには、チャレンジに対してPUFを再度評価することにより新しい応答が得られる。記憶されたヘルパデータと新しい応答を組み合わせることにより、ヘルパデータアルゴリズムに従って、鍵が得られる。ヘルパデータは、鍵が得られるたびに、鍵が同じであることを保証する。
【0011】
PUFがなければ、暗号鍵は攻撃者により、不揮発性メモリに物理的攻撃を仕掛けることにより回復されることがある。たとえば、攻撃者はメモリを開けて、メモリの内容を探索することがある。PUFを開けることは、典型的にはPUFが入力と相互作用する正確な方法を乱すので、PUFを使うことがこのタイプの攻撃をはるかに困難にする。したがって、攻撃者が自分の探索から知る情報は、暗号鍵を生成するために使用された相互作用と関係がない。このことは、攻撃者が物理的攻撃を使用して鍵を見つけ出すことをより困難にする。
【0012】
メモリセルの固有の挙動に基づくPUFには、メモリモジュール(特にSRAM)が、典型的には集積回路内で容易に識別されることができる比較的大規模構造であるという不利な点がある。どうにかしてICを開けて、メモリ自体を乱すことなくメモリへのデータ線を盗聴する攻撃者が、ICが動作しておりPUFがチャレンジされると、有用な情報を得ることができる。ヘルパデータと一緒に使えば、探索されたデータは攻撃者が秘密鍵をさかのぼって見つけ出すことができるようにすることがある。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】国際公開第2006/129242号
【特許文献2】米国特許出願公開第200330204743号明細書
【特許文献3】国際公開第2008/053299号
【発明の概要】
【発明が解決しようとする課題】
【0014】
メモリに基づくPUFがメモリのデータ線への攻撃を受けやすいことは従来技術の問題である。
【0015】
物理的攻撃に対してメモリに基づくPUFの耐性を高めることが本発明の目的である。
【課題を解決するための手段】
【0016】
この目的および別の目的が本発明による電子システムにより達成される。
【0017】
特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置から第1の順序で取り出すように構成される鍵抽出手段を含む電子システムであって、暗号鍵を決定する前に第1の順序と異なる第2の順序に多数の値を配置するための再配列手段をさらに含むことを特徴とする電子システム。
【0018】
電子システムに物理的攻撃を仕掛けることにより暗号鍵を回復しようと望む攻撃者が、好ましくはメモリを攻撃する。メモリは比較的大規模構造であり、したがって、別の電子的構造と比較して見つけ出すのが比較的容易である。しかしながら、メモリにより生成される多数の値は、メモリを構成する構成要素の物理的構成に依存する。メモリに物理的攻撃を仕掛けることにより、物理的構成が乱され、値が変化させられる可能性が高い。攻撃者はまた、鍵抽出手段が多数の値、すなわちデータ線にアクセスできる手段に対して、物理的攻撃を仕掛けようと試みることがある。攻撃者は多数の値の一部を見つけ出すことがあるが、再配列が多数の値を並べ変える。多数の値はランダムな配置に少なくとも部分的に依存するので、多数の値は多数の値の正しい順序を再構築するための固有の構造を有しない。再配列手段および鍵抽出自体は、少なくとも2つの理由でメモリおよびデータ線よりも物理的攻撃に対して脆弱でない。第一に、これらの構成要素は、メモリまたはデータ線よりもはるかに小さく作られることができる組合せ論理を大部分は含む。第二に、これらのブロックの機能はより複雑なので、これらのブロックのレイアウトはより規則性がなくされることができ、このことがこれらのブロックを探索し、攻撃するための好都合な場所を見つけ出すことをより困難にする。メモリおよび/またはデータ線は物理的攻撃に対して保護されるので、物理的攻撃に対するメモリに基づくPUFの耐性が高まった。
【0019】
好ましい実施形態では、メモリは多数の別個のメモリブロックを含み、この場合、多数のメモリ位置がすべての多数のメモリブロック全体に分散させられる。
【0020】
暗号鍵は多数のメモリから取り出されるデータの組合せから得られるので、暗号鍵を回復するための十分な情報を得るためには、攻撃者が多数のメモリを盗聴する必要がある。多数のメモリはIC全体の位置に分散させられるので、攻撃者が探索を適用する必要がある異なる位置が多数ある。したがって、攻撃者が暗号鍵を回復するために費やす必要がある努力が増えた。さらに、探索の数が増えたので、攻撃者が探索を適用している間にメモリを損傷する可能性が高まった。メモリが損傷を受けた場合、そのメモリにより生成される特定の値がそのメモリの物理的状況に依存するので、攻撃者がそのメモリに対する探索から知る情報がより有用でなくなる。損傷の結果、物理的構成が変わった後、物理的構成が生成することができる値もまた変わることがある。
【0021】
探索攻撃がより困難なので、物理的攻撃に対するメモリに基づくPUFの耐性が高まった。
【0022】
好ましい実施形態では、電子システムは特定のメモリ位置のそれぞれに特定の値の反転を書き込むための反転手段、および多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段を含む。
【0023】
好ましい実施形態では、メモリはまた書き込むために構成される。電子システムは、特定のメモリ位置のそれぞれに特定の値の反転を書き込むための反転手段、および多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段を含む。
【0024】
メモリに基づくPUFを2度チャレンジすることは望ましくなく、このことは動作中に好都合でない電源切断および電源投入を必要とするためである。暗号鍵へのアクセスを保つためには、PUFは再度チャレンジされることができないので、暗号鍵はメモリ内に保持されなければならない。このことはいくつかの理由で望ましくない。記憶された鍵は別のアプリケーションにより使用されることができないメモリを占有し、さらに、鍵が記憶されるメモリはそれ自体物理的攻撃に対して脆弱であることがある。さらに、メモリのエージングを、すなわち電子システムを多数回使用する結果としての多数の値の漸進的変化を防止するために、多数の値を記憶するのにメモリを使用できない。メモリ内に、具体的にはSRAMメモリ内に、多数の値を抽出するために使用されたメモリ位置に多数の値を記憶することが、エージングを加速する。エージングを軽減するために、多数の値の反転がメモリ位置に記憶されなければならない。
【0025】
本発明は反転決定手段を提供するので、電子システムは、メモリの内容が多数の値かどうか、または多数の値の反転が書き込まれたかどうかを決定することができる。多数の値の反転がメモリ内に存在する場合、鍵エクストラクタはメモリから取り出された値をまず反転する。したがって、暗号鍵が必要とされるとき、鍵エクストラクタは、電源投入および電源切断のサイクルを必要とせずにメモリの内容を使用することができる。
【0026】
反転決定手段は電子システムのいわゆるホットスタートをさらに可能にする。ホットスタートでは、電子システムはメモリの電源切断なしに初期状態に進む。メモリの電源が切断されない場合、メモリの内容は変わらない。電子システムは、エージング対抗策のためにメモリ内に多数の値ではなく、反転された多数の値を有するので、電子システムは通常の電源投入ルーチンを通過することができない。しかしながら、電源投入ルーチン中に反転決定手段を採用することにより、ルーチンは、メモリが多数の値、または多数の値の反転を記憶しているかどうか決定することができる。後者の場合、鍵抽出手段は、暗号鍵を決定する前にまず反転するように構成される。
【0027】
反転決定手段はそれ自体でメモリに基づくPUFを採用する任意の電子システムで特に有利であることが留意されたい。具体的には、反転決定手段はまた再配列手段なしに本発明による電子システムと共に使用されることがある。反転決定手段の有利な点は、本明細書で説明されるように再配列手段と共に維持される。
【0028】
本発明が例によって、および添付の図面を参照してさらに詳細に説明される。
【図面の簡単な説明】
【0029】
【図1】本発明による電子システムの第1の実施形態を図示するブロック図である。
【発明を実施するための形態】
【0030】
図をとおして同様の特徴または対応する特徴が同じ参照番号により示される。
【0031】
参照番号のリスト
100 電子システム
112、114、116 メモリ
120 アドレスデコーダ
130 鍵エクストラクタ
140 暗号エンジン
150 ヘルパデータコンストラクタ
160 ヘルパデータメモリ
ADB0、ADB1、ADB2、ADB3 バス
【0032】
残りの部分では、PUFに関係する4つの主要な発明の説明が示される。本発明は一緒に使用されることができるが、別の技術と組み合わせて互いに独立して使用されることもある。
【0033】
要約すると、主要な発明は以下となる:
1.再配列
再配列手段を使用することにより、PUFとして使用されるメモリへのデータ線を盗聴することが攻撃者にとってより有用でなくなる。メモリ位置に関係する値が攻撃者により得られることがあるが、得られた値がどの時点で暗号鍵を決定する際に使用されるかという情報が攻撃者から不明瞭にされる。このことが鍵を回復することをはるかに困難にする。
【0034】
2.多数のメモリの使用
多数のメモリを使用することが、攻撃者に多数のメモリを盗聴させる。多数のメモリを盗聴することが攻撃者にとって努力を増大させる。さらに、攻撃者は電子システムを損傷する可能性をより高く伸ばす。
【0035】
一実施形態は以下のとおりである。多数のメモリ位置を備えるメモリを有する電子システムであって、メモリが多数の別個のメモリブロックを含み、多数のメモリ位置がすべての多数のメモリブロック全体に分散させられ、多数のメモリ位置のそれぞれの特定のメモリ位置が、特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を生成するように構成され、電子システムが、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含む電子システム。
【0036】
3.ヘルパデータが生成されたかどうかを信号伝達するための構築信号伝達手段
ヘルパデータがオンラインで生成されるとき、すなわち鍵抽出が後で行われる同じ機器上で生成されるとき、ヘルパデータメモリがヘルパデータで埋められる前のヘルパデータメモリの内容を、ヘルパデータメモリがヘルパデータで埋められた後の状況と区別することが問題となる。
【0037】
一実施形態は以下のとおりである。特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含み、多数の値に依存するヘルパデータを生成するようにおよびヘルパデータをヘルパデータメモリ内に記憶するように構成されるヘルパデータ構築手段を含む電子システムであって、鍵抽出手段が、暗号鍵を再現可能にするためにヘルパデータに依存する多数の値に対してエラー訂正手順を適用するように構成され、電子システムが、ヘルパデータが生成された場合に信号伝達するための構築信号伝達手段を含む電子システム。
【0038】
4.多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段
再現可能な暗号鍵がシステムで2度以上必要とされる場合、問題となる。再現可能な暗号鍵が動作中にメモリ内に記憶される場合、そのメモリは物理的攻撃者の標的となる。一方、PUFメモリに再チャレンジすることは、望ましくない電源切断、電源投入のサイクルを必要とする。さらに、アンチエージング手段がメモリからの再取り出しを妨げる。この問題は、多数の値の反転が多数のメモリ位置に書き込まれたかどうかを決定するおよび/または検出することができるようにする反転決定手段を有することにより解決される。
【0039】
一実施形態は以下のとおりである。特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含む電子システムであって、メモリが、書き込むために構成され、電子システムが、特定のメモリ位置のそれぞれに特定の値の反転を書き込むための反転手段、および多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段を含む電子システム。
【0040】
これらの発明は多くの異なる形態の実施形態を受け入れることができるが、本開示が本発明の原理の例示として考えられるべきであり、示され説明される特定の実施形態に本発明を限定することを意図されないという理解の下で、1つまたは複数の特定の実施形態が図面で示され、本明細書で詳細に説明される。
【0041】
図1に電子システム100が図示されている。電子システム100は好ましくは多数のメモリを含む。電子システム100はまた単一メモリを含むこともあり、好ましくは、単一メモリの一部だけが多数の値を生成するために使用される。図では3つのメモリ、すなわちメモリ112、メモリ114、およびメモリ116が図示されている。使用されるメモリの数は、すなわち別個のメモリブロックの数は本質的に任意である。メモリ112、114、および116は合わせて多数のメモリ位置を含む。メモリのそれぞれが少なくとも1つのメモリ位置を含み、多数のメモリ位置を含むことがある。より多くの別個のメモリを使用することは、攻撃者がデータ線を探索する必要がある地点の数を増やすので、安全性を高める。より多くの別個のメモリを使用することはまた、暗号鍵を構築するために使用されるメモリ位置の位置をさらに不明瞭にする。集積回路全体に多数のメモリセルを分散させることにより、攻撃者は、PUFデータがどこで生成されたか場所を突き止めることがより困難になる。
【0042】
メモリ112、114、および116は好ましくはSRAMであるが、別のメモリ、具体的には不揮発性メモリも受け入れられる。システム100の電源投入後のある時点、およびメモリ位置が書き込まれる前に、そのようなメモリ内のメモリ位置が取り出されるとき、メモリ位置から取り出される値は不定である。たとえば、メモリ位置がビットサイズの場合、取り出された値は1のことも、0のこともある。しかしながら、メモリ位置を構成する構成要素の小さな偏差が値の一方が他方よりもおそらく大きくなるようにする。偏差はメモリの製造中に偶然取り込まれる。この意味で、メモリ位置はPUFに似た挙動を有する。すべてのメモリ位置がこの方法で取り出されたとき、多数の値が得られる。メモリの電源が切断され、投入された後に値が再度取り出された場合、新しい値がしばしば古い値と同じとなるが、このことは必然ではない。同様に、多数の値がすべて再び取り出されたとき、多数の値の多くが新しい値を得ている。
【0043】
第2の種類のメモリに基づくPUFがデュアルポートRAMを含むことがある。両方のポートに異なる情報を同時に書き込むことにより、デュアルポートRAMのメモリセルが不定な状態に至らせられる。両方のポートに書き込む結果としてメモリセルにより生じる結果はPUFに似た挙動を示す。
【0044】
PUFの挙動を示す不揮発性メモリ要素の別の例がフリップフロップおよびラッチである。電源投入で、フリップフロップ、たとえば集積回路内に含まれることがあるフリップフロップが、ランダムな値で埋められる。ランダムな値はフリップフロップが構築される正確な方法に依存する。フリップフロップを構築する様々な構成要素の配置のわずかな変化がランダムな値を変えることがある。
【0045】
異なるタイプのメモリが組み合わせられることがある。たとえば、メモリ112はSRAMでもよく、メモリ114は1つまたは複数のフリップフロップでもよい。このことは、将来、攻撃が特定のタイプのメモリのどれに照準が当てられているかがわかった場合に有利にする。
【0046】
メモリに基づくPUFがまた、たとえば1つまたは複数のSRAMメモリセルをシミュレートすることによりフィールドプログラマブルゲートアレイ(FPGA)から構築されることがある。別の使用できるPUFが遅延現象に基づくいわゆる固有PUFを含む。遅延PUFの詳細が、米国特許出願公開第20030204743号明細書で知ることができる。バタフライPUFの詳細が、国際公開第IB2008/053299号で得られることができる。
【0047】
電子システム100は、少数のメモリ位置しか、たとえば単一フリップフロップしかそれぞれ含まないいくつかのメモリを含むことがある。多くの少数のメモリ位置が、たとえば1、2、4、もしくは8、または2の任意の少数のべき乗、または任意の少数とすることができる。一実施形態では、すべてのメモリ位置がそのような少数の全体に分散させられる。一実施形態では、メモリ位置全てが単一のメモリ位置しかそれぞれ有しないメモリ全体に分散させられる。
【0048】
電子システム100はファジィエクストラクタとしても知られる鍵エクストラクタ130をさらに含む。好ましくは、電子システム100はまた、ヘルパデータコンストラクタ150およびヘルパデータメモリ160を含む。鍵エクストラクタ130はメモリ位置を取り出すように構成され、その目的のために好ましくはアドレスデコーダ120を介してメモリ112、114、および116に接続されることがある。鍵エクストラクタ130はまた、鍵エクストラクタ130がヘルパデータを受信することができるヘルパデータメモリ160に接続されることがある。ヘルパデータコンストラクタ150はヘルパデータを生成するように構成され、その目的のために、ヘルパデータコンストラクタ150はまた、好ましくは同様にアドレスデコーダ120を介してメモリ112、114、および116にアクセスできる。ヘルパデータコンストラクタ150は、好ましくはヘルパデータコンストラクタ150が生成したヘルパデータを記憶するためのヘルパデータメモリ160に接続される。
【0049】
アドレスデコーダ120が多数の別個のメモリブロック、たとえばメモリ112、114、および116と共に使用される場合、好ましくは、アドレスデコーダ120は、すべての別個のメモリブロック全体にわたり多数の値を並べ変える第2の配列に、多数の別個のメモリブロック内の多数の位置を並べ変える。たとえば、アドレスデコーダ120は、鍵エクストラクタ130により使用されるいくつかの連続したメモリアドレスの次の1つを別個のメモリブロックの次の1つにマッピングすることがある。
【0050】
ヘルパデータメモリ160は任意のタイプの不揮発性メモリを含むことがあるが、追加のセキュリティのために、メモリは一度しか書き込まれることができないワンタイムプログラマブル(OTP)メモリでもよい。OTPメモリは、登録段階が終了した後に攻撃者がヘルパデータメモリの内容を修正することができないという追加の有利な点を与える。
【0051】
たとえば、メモリ112は図でバスADB1として示されるアドレスバスおよび/またはデータバスを使用してアドレスデコーダ120と接続される。メモリ114はアドレスバスおよび/またはデータバスADB2を使用してアドレスデコーダ120と接続されることがある。メモリ116はアドレスバスおよび/またはデータバスADB3を使用してアドレスデコーダ120と接続されることがある。鍵エクストラクタ130はアドレスバスおよび/またはデータバスADB0を介してアドレスデコーダ120に接続されることがある。
【0052】
再配列手段はいくつかの方法で第2の順序で多数の値を配置することができる。たとえば、アドレスデコーダ120は、アドレスデコーダ120が受け取るアドレスを変えることができ、この方法で、アドレスデコーダ120は第1の順序の多数の値の取り取り値を第2の順序でメモリに到着させる。好ましくは、第2の順序は多数のメモリブロック全体に分散させられる。あるいは、アドレスデコーダ120は、多数の値が取り出された後だが鍵エクストラクタ130が暗号鍵を決定する前に、多数の値を並べ変えることができる。
【0053】
鍵エクストラクタ130およびヘルパデータコンストラクタ150は、たとえばバスADB0上でアドレスデコーダ120にメモリ位置に対する取り出し要求を送信することによりメモリ位置にアクセスすることがある。メモリ112、114、および116内のメモリ位置はアドレスデコーダ120によりバスADB0上で使用されるアドレスと関連付けられる。鍵エクストラクタ130および/またはヘルパデータコンストラクタ150のそれぞれの取り出し要求は、そのようなアドレスを含む。電子システム100に含まれるアドレスデコーダ120が取り出し要求を受け取る場合、アドレスデコーダ120はアドレスを取り出し、関連するメモリ位置がどのメモリに配置されるかを決定し、次に、アドレスデコーダ120は取り出し要求を正しいメモリに転送することができる。好ましくは、アドレスデコーダ120はまた、メモリ内で使用されるローカルアドレスにアドレスを変換する。一実施形態では、アドレスデコーダ120は、ヘルパデータコンストラクタ150および/または鍵エクストラクタ130で使用されるアドレスとメモリ位置の間の任意のマッピングを適用することができる。たとえば、アドレスデコーダ120はルックアップテーブルを使用してアドレスをローカルアドレスに変換することがある、またはアドレスデコーダ120は対称ブロック暗号、もしくはマッピングのための並べ変えなどを使用することがある。
【0054】
鍵エクストラクタ130は、多数の位置から、および鍵エクストラクタ130がヘルパデータメモリ160から取り出すヘルパデータから鍵エクストラクタ130が取り出す多数の値に依存する暗号鍵を決定するように構成される。鍵エクストラクタ130はアドレスデコーダ120を介して取り出すので、多数の値は暗号鍵を決定する前に再配列される。
【0055】
暗号鍵は、暗号鍵の応用の技術分野でそれ自体が知られている様々な暗号応用で使用されることができる。たとえば、電子システム100は、暗号鍵を入力として取り出す暗号エンジン140を含むことがある。たとえば、暗号エンジン140は鍵を使用して、メッセージ認証コード(MAC)を使って第三者に対して自分を認証することがある。MACは、電子システム100の外側の何らかの場所(図示せず)に送信されるメッセージに添付される。
【0056】
好ましくは、電子システム100の一部またはすべての構成要素が集積回路に合体される。特には、メモリ(たとえばメモリ112、メモリ114、メモリ116)、アドレスデコーダ120、鍵エクストラクタ130、暗号エンジン140、およびヘルパデータコンストラクタ150を単一ICに合体することが有利である。有利な点は、これらの構成要素すべてが、暗号鍵を危険にさらすことがある情報にアクセスできることである。ヘルパデータメモリ160へのアクセスだけが暗号鍵を危険にさらさないことが知られており、したがって、ヘルパデータメモリ160はICに一体化される必要がない。しかしながら、ヘルパデータメモリ160もICに一体化することがさらに有利である。さらに有利なのが、メモリ位置に含まれる秘密情報の少なくとも部分的知識が得られても、攻撃者が、秘密情報を利用するためにヘルパデータメモリ160内に記憶されるヘルパデータも回復する必要があるということである。このことが攻撃の困難さをさらに高める。ヘルパデータメモリ160はまたヘルパデータコンストラクタ150内に含まれることがある。好ましくは、多数の別個のメモリブロックが集積回路全体に分散させられる。
【0057】
電子システム100の電源が投入された後、動作使用中にヘルパデータコンストラクタ150は、ヘルパデータが構築されたかどうかを決定する。たとえば、一実施形態では、ヘルパデータコンストラクタ150は構築信号伝達フラグ(図示せず)を調べることができる。構築信号伝達フラグは、たとえばフリップフロップまたは不揮発性メモリ、たとえばフラッシュメモリを含む。フリップフロップの一方の状態が、ヘルパデータが既に生成されたことをヘルパデータコンストラクタ150に示し、もう一方の状態が、ヘルパデータが生成されなかったことを示す。第2の実施形態では、ヘルパデータコンストラクタ150はヘルパデータメモリ160を調べて、ヘルパデータメモリ160が構築ストリングを記憶しているかどうかを検証する。ヘルパデータコンストラクタ150は、ヘルパデータメモリ160のすべて、または大部分、または選択された部分をスキャンして、構築ストリングを探すことがある。ヘルパデータコンストラクタ150はまた、構築ストリングを探してヘルパデータメモリ160内の特定の所定の場所を見ることがある。構築ストリングはどんな任意の、しかし固定した所定のストリングとすることもできる。ヘルパデータコンストラクタ150はまた、ヘルパデータが生成された後にヘルパデータに対して計算された署名でもよい。
【0058】
構築ストリングを使用することには、初期化されていないヘルパデータメモリ160が使用されることがあるという有利な点がある。ヘルパデータメモリ160が最初にランダムデータを含む場合、ヘルパデータからランダムデータを見分けることができないことがある。しかしながら、十分な長さの構築ストリングを、たとえば100個のゼロビットのストリングまたはいくつかの数のランダムだが固定したビットを書き込むことにより、ヘルパデータメモリ160がヘルパデータで埋められたことが示されることができる。
【0059】
ヘルパデータコンストラクタ150は、ヘルパデータが生成されていないと決定する場合、ヘルパデータコンストラクタ150はヘルパデータの構築を続ける。ヘルパデータを構築する様々な方法が知られており、本明細書では特定の例が示されているが、本質的に、任意のヘルパデータ構築方式が本発明による方法と組み合わせられることがある。ヘルパデータコンストラクタ150は、アドレスデコーダ120にアドレスする連続した一連の取り出し要求アドレスに対して一連の取り出し要求を送信することにより多数の位置から多数の値を取り出す。アドレスデコーダ120は多数の値を第2の順序で配置することがある。次に、ヘルパデータコンストラクタ150がエラー訂正符号から1つまたは複数のコードワードを選択する。たとえば、ヘルパデータコンストラクタ150はコードワードをランダムに選択することがある。好ましくは、ヘルパデータコンストラクタ150は、コードワードの全長が多数の値の長さと少なくとも同じ長さとなるようにコードワードを選択する。好ましくは、長さは桁で、たとえばビットで測定される。次に、ヘルパデータコンストラクタ150は、コードワードの連結および多数ビットの連結に対して排他的論理和演算を実行する。たとえば、ヘルパデータコンストラクタ150は反復コードを使用することがある。ヘルパデータを構築するために多くの別のエラー訂正符号が、たとえばBCH符号、リードマラー(Reed−Muller)符号、ゴレイ(Golay)コード、リードソロモン(Reed−Solomon)符号、LDPC符号などが使用されることがある。さらに、たとえば異なる符号を組み合わせるまたは連結することにより、多数のレベルの符号化を使用することができる。ヘルパデータは排他的論理和演算の結果を含み、ヘルパデータメモリ160に書き込まれる。ヘルパデータメモリ160は好ましくは不揮発性メモリ、たとえばEEPROMまたはフラッシュメモリなどである。
【0060】
排他的論理和演算を必要としない、ヘルパデータを構築する代わりの方法が存在する。たとえば、ヘルパデータコンストラクタ150は、適切なエラー訂正符号からランダムなコードワードを選択することがある。次に、コードワード内のそれぞれの個々の要素に対して、たとえばコードワード内のそれぞれのビットに対して、ヘルパデータコンストラクタ150が、多数の値で個々の要素を生成したメモリ、たとえばメモリ112、114、116内の個々のランダムな要素を選択する。メモリ内の個々のランダムな要素への個々のポインタが、ヘルパデータ内に記録される、たとえばヘルパデータメモリ160内に記憶される。この構築は再配列手段、たとえばアドレスデコーダ120と共に、および再配列手段なしに使用されることができる。アドレスデコーダ120が使用される場合、ポインタはアドレスデコーダ120により再配列されることがある。
【0061】
ヘルパデータコンストラクタ150はオフラインでもよい、すなわち鍵エクストラクタ130が存在するシステムに恒久的に接続されなくてもよい。たとえば、一実施形態がメモリ、たとえばメモリ112、114、116、鍵エクストラクタ130、およびヘルパデータメモリ160を、たとえばスマートカードまたはRFID内に含むことがある。登録段階中に、多数の値が、ヘルパデータを計算するサーバに提示される。次に、計算されたヘルパデータはヘルパデータメモリ内に記憶される。このことには、実施形態、たとえばスマートカードがより少ない回路を含み、したがって、より複雑でなく、製造するのによりコストがかからないという有利な点がある。ヘルパデータコンストラクタ150を鍵エクストラクタ130と一緒に含めることには、秘密データ、たとえば多数の値および/または暗号鍵の外部コピーがたとえばサーバ上に全く存在しないという有利な点がある。したがって、秘密データがサーバ上などで攻撃により危険にさらされることができない。
【0062】
ヘルパデータコンストラクタ150が、ヘルパデータが生成されたと決定した場合、鍵エクストラクタ130が暗号鍵の決定を続けることがある。好ましくは、鍵エクストラクタ130は、以下に説明されるように、反転された値がメモリに書き込まれたかどうかを最初に決定する。鍵エクストラクタ130がそのように決定しない場合、鍵エクストラクタ130は好ましくは第1の順序で多数の位置から値を取り出す。好ましくは、アドレスデコーダ120が、上記で説明されたように第2の順序で多数の値を配置する。PUFを使用して暗号鍵を決定する様々な方法が可能である。本明細書では特定の例が示されているが、PUFデータから再現可能な暗号鍵を決定する別の方法が本発明と共に使用されることができる。鍵エクストラクタ130はヘルパデータメモリ160からヘルパデータを取り出し、ヘルパデータコンストラクタ150により使用された構築に適合する方法で、取り出された多数の値にヘルパデータを適用することがある。たとえば、鍵エクストラクタ130は、取り出された多数の値とヘルパデータの間で排他的論理和を実行することがある。あるいは、鍵エクストラクタ130はヘルパデータメモリ160内に記憶されるポインタのリストを分析することがある。鍵エクストラクタ130は、ヘルパデータを適用した結果にエラー訂正ステップを適用することがある。エラー訂正ステップは、ヘルパデータコンストラクタ150がコードワードを選択したコードに対応する。
【0063】
鍵エクストラクタ130は、エラー訂正された結果を直接鍵として使用することがあるが、好ましくは、鍵エクストラクタ130は後処理ステップを実行する。たとえば、鍵エクストラクタ130はエラー訂正された結果に対して暗号ハッシュ操作を実行することがある。結果が暗号鍵である。本明細書でPUFとして使用されるメモリは、多数の取り出しに対して正確に同じ結果を与えることがある。しかしながら、ヘルパデータが生成されたときに生成された値と異なる、PUFにより生成される任意の値が、エラー訂正符号によりエラーとみなされる。エラー訂正符号は、エラー訂正符号の分野で知られているそのようなエラーを訂正することができる。
【0064】
鍵エクストラクタ130が、再現可能な暗号鍵を決定した後、任意選択でアンチエージング対応策を実行することができる。たとえば、鍵エクストラクタ130は、多数の値の反転をメモリに第1の順序で書き戻すことがある。アドレスデコーダ120が使用される場合、多数の値の取り出しに適用された同じマッピングが、反転された多数の値の書き込みに適用されるべきである。この手段は、メモリがPUFとして使用できる時間を延ばす。
【0065】
電子システム100がホットスタートを受信した場合、たとえば、電子システム100が中間でメモリ、たとえばメモリ112、114、および116の電源を切断することなく電子システム100の起動ルーチンを開始する場合。鍵エクストラクタ130が鍵を決定する必要があるが、値がメモリに書き込まれているのでメモリがPUFとして反応しないことになることがある。しかしながら、この問題は、多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段を使用して解決されることができる。好ましくは、反転決定手段は電子システムの再スタート、すなわち再ブートの後に反転を決定するように構成される。
【0066】
たとえば、電子システム100は、多数のメモリ位置が多数の値の反転を記憶していることを信号伝達するための反転信号伝達フラグ(図1に示されていない)を含むことがある。鍵エクストラクタ130がメモリに反転された多数の値を書き込んだ後に、鍵エクストラクタ130はまた、反転された多数の値が書き込まれたことを示す状態に反転信号伝達フラグをセットすることがある。電子システム100はまた、反転された多数の値が書き込まれなかったことを示す状態に反転信号伝達フラグをリセットするためのリセット手段を含むことがある。リセット手段は、コールドリスタートでトリガされることがある。たとえば、リセット手段は、メモリ、たとえばメモリ112、114、および116の1つまたは複数の電源が切断され、そのときに反転信号伝達フラグをリセットされたことを検出することがある。
【0067】
好ましくは、反転信号伝達フラグは、電源投入後、固定した状態にある信号メモリを含む。反転が書き込まれた後、信号メモリに新しい状態が書き込まれる。ホットリスタートが行われたとき、メモリの電源は切断されず、同様に、信号メモリの電源も切断されない。この場合、信号メモリはメモリの反転状態を正しく示す。しかしながら、コールドスタートが行われたとき、信号メモリの電源は切断され、その結果、固定された状態に自動的に戻った。
【0068】
別の実施形態では、反転信号伝達フラグが使用される必要がない。この実施形態では、ヘルパデータコンストラクタ150が、ヘルパデータを生成するのと一緒にヘルパデータ検証ストリングを生成する。ヘルパデータ検証ストリングは再現可能な暗号鍵の正しさを示す。たとえば、ヘルパデータコンストラクタ150は、場合により鍵エクストラクタ130を使用して、再現可能な鍵の暗号ハッシュを計算することがある。ヘルパデータコンストラクタ150はまた、検証ストリングとして再現可能な暗号鍵に対するMACを計算することがある。検証ストリングは、鍵エクストラクタ130がアクセスできるメモリ、たとえばヘルパデータメモリ160内に記憶されることが好ましい。
【0069】
鍵エクストラクタ130が後でたとえば上記で概説された方法を使用して、再現可能な暗号鍵を決定し始めるとき、この決定が成功したかどうかを、検証ストリングを使用して決定することがある。たとえば、反転された多数の値をメモリが含む場合、典型的には、変更されない鍵決定が成功しない。鍵エクストラクタ130は、たとえば鍵エクストラクタ130が生成した暗号鍵のハッシュを計算し、そのハッシュを、ヘルパデータメモリ160に記憶されたハッシュと比較することができる。同様に、鍵エクストラクタ130は、鍵エクストラクタ130が生成した暗号鍵に対するMACを計算し、そのMACを、ヘルパデータメモリ160内に記憶されたMACと比較することがある。不一致が見つけられたとき、すなわち鍵エクストラクタ130が、鍵エクストラクタ130が生成した鍵が正しくないことを検出したとき、鍵エクストラクタ130は、多数の値の反転を使用して暗号鍵を決定しようとすることがある。
【0070】
いずれの取り組みも正しい暗号鍵を与えないことになることがある。すなわち、鍵エクストラクタ130が、多数の値を使用しても、反転された多数の値を使用しても、再現可能な暗号鍵を決定することができない。これは、たとえば、一部の予期しない状況、たとえば攻撃、誤動作などの場合に起こることがある。したがって、この実施形態には、そのような状況が早期に検出されるという有利な点がある。1つの特定の状況、すなわちPUFのエージングがまたこの方法で検出される。
【0071】
以下に、アドレスデコーダ120の可能な動作の具体例が示される。
【0072】
アドレスデコーダ120は、鍵エクストラクタ130により使用される論理アドレスを多数のSRAMメモリ上の物理アドレスにマッピングする。鍵エクストラクタがSRAMメモリからデータを取り出しているとき、鍵エクストラクタはバスADB0を使用して、取り出されるべきアドレスを示しデータを取り出すことがある。好ましくは、アドレスデコーダは秘密のマッピングを使用して、バスADB0上の論理アドレスをバスADB1、ADB2、およびADB3上の物理メモリアドレスに分散する。たとえば、鍵エクストラクタはいくつかのデータバイトを、たとえば256のデータバイトをメモエリアドレスから、たとえばバスADB0上のメモリアドレス0x0000から0x00FFまでから取り出していることがある。アドレスデコーダ120はこれらのメモリアドレスを以下のメモリブロックにわたり分散させる:
バスADB0上のアドレス0x0000から0x003FまでがバスADB1上のアドレス0x0000から0x003Fまでに接続される。
バスADB0上のアドレス0x0040から0x007FまでがバスADB2上のアドレス0x0000から0x003Fまでに接続される。
バスADB0上のアドレス0x0080から0x00BFまでがバスADB3上のアドレス0x0000から0x003Fまでに接続される。
バスADB0上のアドレス0x00C0から0x00FFまでがバスADB1上のアドレス0x0040から0x007Fまでに接続される。
・・・
【0073】
バスADB0に対して鍵エクストラクタ130により使用される第1の範囲のアドレスが、メモリ112にマッピングされることに留意されたい。バスADB0に対して鍵エクストラクタ130により使用される第2の範囲のアドレスがまた、メモリ112にマッピングされる。第1の範囲と第2の範囲の間に、異なるメモリに、この場合メモリ114および116にマッピングされる、鍵エクストラクタ130により使用される少なくとも1つのアドレスがある。
【0074】
これは例示的方式でしかなく、原理的に任意の種類のマッピングが可能であることに留意されたい。好ましくは、アドレスデコーダのマッピングは固定され、その結果、バスADB0上の同じメモリアドレスが取り出されるまたは書き込まれるたびに、このアドレスがバスADB1、ADB2、ADB3の1つの同じメモリアドレスにマッピングされる。
【0075】
本発明による好ましい実施形態では、ヘルパデータ構築手段はアンロック手段に結合され、ヘルパデータ構築手段はアンロック手段がアンロック信号を受け取ると同時にヘルパデータを生成するように構成される。アンロック手段は、登録段階が完了した後にヘルパコンストラクタ150を再起動することに関与する攻撃を避けるので、アンロック手段には独自の利点がある。そのような独自の実施形態の一例が以下のとおりである。特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数の値を得るためにおよび多数の値に依存する再現可能な暗号鍵を決定するために多数のメモリ位置を取り出すように構成される鍵抽出手段を含み、多数の値に依存するヘルパデータを生成しヘルパデータをヘルパデータメモリ内に記憶するように構成されるヘルパデータ構築手段を含む電子システムであって、鍵抽出手段が、暗号鍵を再現可能にするために、ヘルパデータに依存する多数の値に対してエラー訂正手順を適用するように構成され、ヘルパデータ構築手段がアンロック手段に結合され、ヘルパデータ構築手段が、アンロック手段がアンロック信号を受け取ると同時にヘルパデータを生成するように構成される電子システム。
【0076】
アンロック手段は、パスワードが記憶されるアンロックメモリを含むことがある。アンロック信号はパスワードを含む。アンロック手段がアンロック信号を受け取るとき、アンロック手段はヘルパデータコンストラクタ150をアンロックし、ヘルパデータコンストラクタ150がヘルパデータの生成を続けることができるようにする。
【0077】
あるいは、アンロック手段はチャレンジ応答システムを使用する。そのように要求されたとき、アンロック手段はチャレンジを送出する。アンロック手段が正しい応答を含むアンロック信号を受け取るとき、アンロック手段はヘルパデータコンストラクタ150をアンロックする。たとえば、チャレンジは乱数であり、対応する応答は、アンロック手段のメモリ内に記憶される秘密鍵によるチャレンジの暗号化である。アンロック手段は、本明細書で開示される本発明の任意の1つと組み合わせられることがある。
【0078】
上記で指摘されたように、集積回路全体に多数のメモリセルを分散させることにより、PUFデータが生成された場所を攻撃者が突き止めることがより困難になる。分散は、集積回路のレイアウトを作り出している間に行われることがある。レイアウトから、集積回路が製造されることがある。集積回路のためのレイアウトが以下のように生成されることがある。
【0079】
ハードウェア記述言語(HDL)、たとえばVHDLまたはVerilogを使用して、電子回路の形式的記述が与えられる。合成ツールを使用して、ゲートレベルのネットリストが形式的記述から決定される。ネットリストは配置およびルーティングツールにより処理される。配置は最終レイアウトを表す領域の上にゲートを配置することを含む。ルーティングは、必要とされる場合、配置されるゲート間の電気的接続を決定することを含む。配置およびルーティングツールは、様々な指定される制約を受けてゲートの配置を見つけ出そうとする。
【0080】
多数のメモリセルが集積回路全体に分散させられる、集積回路のためのレイアウトが得られることができる方法がいくつかある。本発明者らはこれらの方法を「レイアウト不明瞭化(obfuscation)」法と集合的に呼ぶ。これらの方法が、集積回路のリバースエンジニアリングをより困難にするためにレイアウトを配置または再配置するためである。レイアウト不明瞭化の特に効果的方法が、レイアウトの可視的不明瞭化であることが確認された。レイアウトの可視的不明瞭化では、ゲート間の接続は変えられず、多数のメモリセルが集積回路全体に分散させられるように、ゲートの配置およびルーティングだけが修正される。ゲート間の接続が変えられることがあり、追加のゲートが挿入されることがあるなどの「論理的不明瞭化(logical obfuscation)」を使用してレイアウト不明瞭化を行うことも可能である。たとえば、集積回路のロジックを生成するゲートに接続されないダミーゲートが挿入されることがある。可視的不明瞭化は論理的不明瞭化と組み合わせられることがある。中くらいの複雑さの集積回路に対してさえ、可視的不明瞭化はリバースエンジニアリングにとって既に大きな障壁となっていることが確認された。
【0081】
配置およびルーティングツールを使ったネットリストの処理は、いくつかの方法で集積回路全体に多数のメモリセルを分散させるように構成されることがある。一部の例が以下に示される。
【0082】
合成中、いわゆる「平坦化(flattening)」オプションが、いわゆる「階層化」オプションの代わりに使用されることがある。ゲートレベルのネットリストを生成するとき、平坦化オプションは合成ツールにモジュール境界を越えて最適化するが、階層化オプションは、合成ツールに元の階層を元の場所に保持させる。この方法では、多数のメモリセルが単一モジュール内に接近して一緒に配置されることが避けられる。
【0083】
さらに、合成ツールは、いわゆる「ハードIP(hard IP)」ブロックの使用を避けるように指令されることができる。ハードIP設計がマスクレイアウトとして表されるので、配置およびルーティングは既に行われている。ハードIPを使用することにより、設計者は既存の(典型的には複雑な)ビルディングブロックを使ってシステムオンチップ(SOC)を効果的に構築することができるようになる。ハードIPの使用がリバースエンジニアリングをより容易にすると言われている。まず第一に、そのようなハードIPブロック内の個々のゲートについては、それらのゲートの相対的配置があらかじめ決められ、さらに不明瞭にされないことがある。第二に、レイアウトの目視検査を使用すると、標準的ハードIPブロックはハードIPブロックの個々のゲートよりも大きいので、認めるのがより容易である。したがって、少なくとも使用されるハードIPブロックまで集積回路をリバースエンジニアリングするために、より低レベルの拡大が必要とされる。平坦化合成は、あらかじめ合成されており、合成ツールにとってブラックボックスとして見えるので、ハードIPブロックで機能しない。
【0084】
レイアウト不明瞭化の第3の方法は、集積回路全体におよび/または多数の金属層全体にゲートが広げられるようにするように配置およびルーティングツールを構成することである。たとえば、配置およびルーティングツールは、ネットリストにより課される制約を受ける様々な目標のためにレイアウトを最適化するためのオプティマイザを含むことがある。たとえば、オプティマイザが、電気的接続の全長を最小にする目標を有することがある。オプティマイザは別の目標で、すなわち、多数のメモリセルを分散させるために多数のメモリセルの分散を最適化するように構成されることがある。
【0085】
たとえば、多数のメモリ位置に対応するネットリスト内の多数のゲートが識別されることがある。メモリ位置により生成される個々の値が、そのメモリ位置に対応するとして識別されるゲートに依存するように、ゲートは識別される。換言すれば、集積回路のリバースエンジニアリングから特定のメモリ位置によりどの値が生成されるかを決定するためには、少なくとも、その特定のメモリ位置に対して識別されるゲートをリバースエンジニアリングする必要がある。好ましくは、異なるメモリ位置が異なるゲートに対応する。集積回路の形式的記述に基づき識別が行われることがある。たとえば、合成ツールは、メモリ位置を指定するHDL記述での指令の結果としてどのゲートが合成されるかの経過を追うことがある。合成ツールはどのメモリ位置が不明瞭にされるべきかを指令されることがあることに留意されたい。たとえば、メモリ位置に関連する指令がタグ付けされることがある。一方、合成ツール自体がまた、配置およびルーティングツールに情報を渡すためにタグ付けを使用することがある。たとえば、配置およびルーティングツールが、どのゲートがメモリに関連付けられるかに関する情報を有するように、それぞれのメモリ位置に対して少なくとも1つの重要なゲートにタグ付けする。重要なゲートが、特定のメモリ位置の個々の値が依存するゲートである。
【0086】
配置およびルーティングツールにより行われる不明瞭化ステップ中、識別されたゲートがランダムな方法で集積回路全体に分散させられる。不明瞭化ステップは重要なゲートをばらばらにする。その結果、識別されたゲートの集積回路上の位置が予測できない。ゲートの位置を突き止め、そういうものとしてゲートにラベルを付けるために、攻撃者が集積回路のかなりの部分をリバースエンジニアリングする必要がある手段である。すなわち、攻撃者が集積回路上のすべてのゲートの位置およびタイプを知っていることがあっても、暗号鍵を生成するためにどのゲートが使用されるかは依然としてはっきりとわからないことがある。すなわち、不明瞭化レイアウトでは、ゲートの機能は、ゲートの位置および/またはタイプから直接わからない。
【0087】
レイアウト不明瞭化はまた、集積回路の別の構成要素に、たとえば再配列手段、鍵抽出手段、ヘルパデータ構築手段、ヘルパデータメモリ、アンロック手段、構築信号伝達手段などのうちの任意の1つに適用されることがある。
【0088】
多数のメモリ位置の個々の値の生成を担当するネットリストのゲートを不明瞭にする1つの方法が、ゲートの機能に関係なくゲートのかなりの部分を、たとえばゲートの大多数を不明瞭にすることであることに留意されたい。この方法では、たとえば偶然に、メモリ位置の機能を担当するゲートの大部分、およびゲートにより生成される個々の値も不明瞭化される。
【0089】
メモリ位置の機能にとって重要な、ネットリスト内のゲートを識別することも可能である。たとえば、合成および/または処理が、多数のメモリ位置のそれぞれのメモリ位置に対してゲートレベルのネットリスト内の少なくとも1つのゲートを識別することを含むことがあり、特定のメモリ位置に対応する識別されたゲートに応じて多数のメモリ位置の特定のメモリ位置により個々の値を生成する。ネットリストの処理は、識別されたゲートが集積回路全体にランダムに分散させられる不明瞭化ステップを含むことがある。
【0090】
集積回路全体へのゲートのランダムな分散がゲートを分散させ、実際上はゲートの集積回路上の位置とゲートの機能との間の相関関係を壊す。具体的には、類似する機能を有するゲートが、たとえばメモリ位置により生成できる値が依存する2つのゲートが、互いに離れて配置されることがある。
【0091】
上述の実施形態は本発明を限定するのではなく例示していること、および当業者は添付の特許請求の範囲を逸脱することなく多くの代わりの実施形態を設計することができることに留意すべきである。特許請求の範囲では、括弧の間に置かれたどのような参照符号も請求項を限定すると解釈されてはならない。動詞「comprise(含む)」および「include(含む)」の使用、および動詞の活用型は、請求項で言及される要素およびステップ以外の要素およびステップの存在を排除しない。要素に先行する冠詞「a」または「an」は、複数のそのような要素の存在を排除しない。本発明は、いくつかの別個の要素を含むハードウェアを用いて、および適切にプログラムされたコンピュータを用いて実現されることがある。コンピュータプログラム製品が適切な媒体、たとえば光記憶装置上に記憶される/分散させられることがあるが、同様に、別の形態で分散させられる、たとえばインターネット、または有線もしくは無線の通信システムを介して分散させられることもある。いくつかの手段を列挙するシステム/機器/装置の請求項では、これらの手段のいくつかが同一の品目のハードウェアにより具体化されることがある。ある種の手段が相互に異なる従属クレームに記載されているという事実だけで、これらの手段の組合せが有利に使用されることができないことを示すわけではない。

【特許請求の範囲】
【請求項1】
特定のメモリ位置を構成する構成要素の物理的な少なくとも部分的にランダムな構成に応じる個々の値を多数のメモリ位置のそれぞれの特定のメモリ位置が生成するように構成される多数のメモリ位置を備えるメモリを有し、多数のメモリ位置から第1の順序で多数の値を取り出すよう、および多数の値に依存する再現可能な暗号鍵を決定するために構成される鍵抽出手段を含む電子システムであって、メモリ間での再配列手段と、暗号鍵を決定する前に第1の順序と異なる第2の順序で鍵抽出手段に多数の値を提供するための鍵抽出手段とをさらに含むことを特徴とする、電子システム。
【請求項2】
メモリが多数の別個のメモリブロックを含み、多数のメモリ位置がすべての多数のメモリブロック全体に分散させられる、請求項1に記載の電子システム。
【請求項3】
多数の別個のメモリブロックの少なくとも1つが正確に1つのメモリ位置を含む、請求項2に記載の電子システム。
【請求項4】
第2の順序が、すべての別個のメモリブロック全体に多数の値を並べ変えるために構成される、請求項2または3に記載の電子システム。
【請求項5】
多数のメモリ位置のそれぞれの特定のメモリ位置が、再現可能な暗号鍵を決定するために個々のアドレスに対する個々の取り出し要求を介して多数のメモリ位置から多数の値を取り出すように構成される鍵抽出手段で多数のアドレスの特定の1つと関連付けられ、再配列手段が、多数の取り出し要求の特定の1つに応答して、特定のアドレスに関連付けられた特定のメモリ位置と異なるメモリ位置から取り出すためにアドレスデコーダを使って構成される、請求項1から4のいずれか一項に記載の電子システム。
【請求項6】
電子システムが、多数の値に依存するヘルパデータを生成するように、およびヘルパデータメモリ内にヘルパデータを記憶するように構成されるヘルパデータ構築手段を含み、鍵抽出手段が、暗号鍵を再現可能にするためにヘルパデータに依存する多数の値にエラー訂正手順を適用するように構成される、請求項1から5のいずれか一項に記載の電子システム。
【請求項7】
ヘルパデータが生成されたかどうかを信号伝達するための構築信号伝達手段を含む、請求項6に記載の電子システム。
【請求項8】
構築信号伝達手段が、ヘルパデータが生成されたかどうかを示すために構成される構築信号伝達フラグを含む、請求項7に記載の電子システム。
【請求項9】
構築信号伝達手段が、ヘルパデータが生成されたことを示す構築ストリングをヘルパデータメモリ内に記憶するための手段を含む、請求項7に記載の電子システム。
【請求項10】
メモリが書き込み可能なタイプであり、電子システムが、特定のメモリ位置のそれぞれに特定の値の反転を書き込むための反転手段と、多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するための反転決定手段とを含む、請求項1から9のいずれか一項に記載の電子システム。
【請求項11】
反転決定手段は、多数のメモリ位置が多数の値の反転を記憶していることを信号伝達するための反転信号伝達フラグを含む、請求項10に記載の電子システム。
【請求項12】
ヘルパデータ構築手段が、再現可能な暗号鍵の正しさを示すための検証ストリングを生成し、かつ検証ストリングをヘルパデータメモリ内に記憶するようにさらに構成され、多数の値に依存する再現可能な暗号鍵を決定することが、多数の値を反転することを選択的に含み、前記選択が、再現可能な暗号鍵の正しさを示す検証ストリングの正しさに依存する、請求項6および10に記載の電子システム。
【請求項13】
集積回路内に具体化される、請求項1から12のいずれか一項に記載の電子システム。
【請求項14】
メモリがスタティックRAM(SRAM)である、請求項1から13のいずれか一項に記載の電子システム。
【請求項15】
メモリがフリップフロップを含む、請求項1から14のいずれか一項に記載の電子システム。
【請求項16】
多数のメモリブロックの少なくとも1つが単一のフリップフロップを含む、電子システムが請求項2を参照する限り、請求項2から15のいずれか一項に記載の電子システム。
【請求項17】
アンロック手段がアンロック信号を受信するとヘルパデータを生成するように構成されるヘルパデータ構築手段に結合されるアンロック手段を含む、請求項6に記載の電子システム。
【請求項18】
請求項1から17のいずれか一項による多数のメモリ位置を備えるメモリを有する電子システムを具体化する集積回路のためのレイアウトを決定する方法であって、方法が
集積回路のゲートレベルのネットリストを得るために集積回路の形式的記述を合成するステップと、
レイアウトを得るために位置およびルーティングツールを使ってネットリストを処理するステップとを含み、
ネットリストを処理するステップは、ゲートレベルのネットリストのゲートが集積回路全体にランダムに分散され、分散させられるゲートは、少なくとも、多数のメモリ位置により生成できる個々の値が依存するゲートを含む不明瞭化ステップを含む、方法。
【請求項19】
多数のメモリ位置のそれぞれの特定のメモリ位置が多数の値の特定の1つを生成するように構成される、メモリ内の多数のメモリ位置から多数の値を取り出すステップであって、特定の値が、特定のメモリ位置を構成する特定の構成要素の特定の物理的な少なくとも部分的にランダムな構成に依存するステップと、
多数の値に依存する再現可能な暗号鍵を決定するステップとを含む再現できる暗号鍵を決定する方法であって、
暗号鍵を決定するステップの前に多数の値を再配列するステップを含むことを特徴とする、方法。
【請求項20】
多数の値に依存するヘルパデータを構築するステップと、
ヘルパデータメモリ内にヘルパデータを記憶するステップと、
ヘルパデータが生成されたことを信号伝達するステップとを含み、
再現可能な暗号鍵を決定するステップが、暗号鍵を再現可能にするために、ヘルパデータに依存する多数の値にエラー訂正手順を適用するステップを含む、請求項19に記載の再現可能な暗号鍵を決定する方法。
【請求項21】
特定の値の反転を特定のメモリ位置のそれぞれに書き込むステップと、
多数のメモリ位置が多数の値の反転を記憶しているかどうかを決定するステップとを含み、
再現可能な鍵を決定するステップが、多数のメモリ位置が多数の値の反転を記憶しているかどうかの決定に依存する多数の値を反転するステップを含む、請求項19または20に記載の再現可能な暗号鍵を決定する方法。
【請求項22】
コンピュータプログラムがコンピュータ上で実行されるときに、請求項18、19、20、および21のいずれか一項のステップをすべて実行するように適合される、コンピュータプログラムコード手段を含むコンピュータプログラム。
【請求項23】
コンピュータ取り出し可能媒体上で具体化される、請求項22に記載のコンピュータプログラム。

【図1】
image rotate


【公表番号】特表2012−509039(P2012−509039A)
【公表日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願番号】特願2011−543768(P2011−543768)
【出願日】平成21年11月17日(2009.11.17)
【国際出願番号】PCT/EP2009/065303
【国際公開番号】WO2010/055171
【国際公開日】平成22年5月20日(2010.5.20)
【出願人】(510273499)
【Fターム(参考)】