(58)【調査した分野】(Int.Cl.,DB名)
前記第1および第2の数は、第1および第2の疑似乱数であり、それぞれ第1および第2の線形フィードバックシフトレジスタ(LFSR)を使用して生成される、請求項1に記載の方法。
前記メッシュバッファから延びる第2の複数のメッシュワイヤのうちの第1のメッシュワイヤを介して前記メッシュバッファから前記複数の修正信号のうちの第1の修正信号を出力する段階と、
前記第2の複数のメッシュワイヤのうちの第2のメッシュワイヤを介して前記メッシュバッファから前記複数の修正信号のうちの第2の修正信号を出力する段階と、
をさらに備える、請求項1から4のいずれか1項に記載の方法。
前記コンパレータは、複数のセルを有する反復ネットワークを含み、各セルは、前記第1の複数の入力信号の中の第1の入力信号および前記第2の複数の入力信号の中の第2の入力信号を受信し、前記第1および第2の入力信号は、一対の対応する二進数を示す、請求項11に記載の装置。
前記メッシュバッファは、前記複数の修正信号のうちの第1の修正信号を前記第2の複数のメッシュワイヤのうちの第1のメッシュワイヤを介して出力し、前記複数の修正信号のうちの第2の修正信号を前記第2の複数のメッシュワイヤのうちの第2のメッシュワイヤを介して出力する、請求項8から12のいずれか1項に記載の装置。
前記第1のメッシュブロック、前記第2のメッシュブロックおよび前記クロック改ざん検出器に結合され、前記第1のメッシュブロック、前記第2のメッシュブロックおよび前記クロック改ざん検出器にクロック信号を与えるクロックジェネレータを更に備え、
前記クロック改ざん検出器は、前記クロック改ざん検出信号を第1の時間にて論理値に設定し、
前記クロック改ざん検出器は、前記クロック改ざん検出信号を、前記第1の時間の後の第2の時間にて前記OR演算の結果に設定し、前記第2の時間は、前記クロック改ざん検出器により受信される前記クロック信号の立ち上がりエッジに対応する、
請求項14に記載の装置。
【発明を実施するための形態】
【0019】
図1は、改ざん防止(AT)システム1―110およびコントローラ150を含む集積回路(IC)の部分100のブロック図である。ATシステム1−110が複数の不正行為を検出すると、ATシステム1−110は、防護措置を取るために、1または複数のビットを含むアラーム信号1−130をコントローラ150に与える。例えば、これらの不正行為は、ICの機能を逆行分析または改変するために、ATシステム1−110の一部をエッチングすること、ATシステム1−110の複数のメッシュワイヤをバイパスすること、およびATシステム1−110内の複数のクロック信号をディスエーブルすることのうちの1または複数を含む。
【0020】
コントローラ150は、複数の防護措置を取るために、アラーム信号1−130に応じてICの複数の回路素子を制御する。複数の防護措置は、ICチップの複数の機能のうちの幾つかをディスエーブルすること、ICチップのメモリ素子内の複数のメモリセルのうちの幾つかまたはすべてを上書きまたは消去すること、またはICチップの重要な素子を物理的に損傷または取り除くことのうち1または複数を含んでよい。
【0021】
図2は、実施形態に係るATシステム2−110の図である。ATシステム2−110は、複数のメッシュブロック210−1〜210−n、クロック改ざん検出器220、およびクロックジェネレータ260を含む。
【0022】
複数のメッシュブロック210−1〜210−nは、複数のブロック出力信号230−1〜230−nを生成し、それぞれは対応するメッシュブロックが複数の不正行為を検出するかどうかを示す。例えば、メッシュブロック210−1〜210−nの1つの一部がエッチングされて、メッシュブロックのエッチング部分の下にあるICチップの重要部を露出すると、メッシュブロックは、高い論理値(例えば「1」)のような第1の論理値を有する対応するブロック出力信号を生成する、そうでなければ、メッシュブロックは、低い論理値(例えば「0」)のような第2の論理値を生成する。
【0023】
クロックジェネレータ260は、複数のメッシュブロック210−1〜210−nに、またクロック改ざん検出器2−220に結合される。クロックジェネレータ260は、クロック信号を、複数のメッシュブロック210−1〜210−nおよびクロック改ざん検出器2−220に、複数のクロックワイヤ265−1〜265−(n+1)を通じて与える。クロック信号に応じて、複数のメッシュブロック210−1〜210−nは、複数の論理演算を実行してよい。
【0024】
複数のブロック出力信号230−1〜230−nは、クロック改ざん検出信号2−232とともに(n+1)ビットのアラーム信号2−130にグループ化される。クロック改ざん検出信号2−232は、クロック改ざん検出器2−220により生成され、リセット時に1の論理値をとり、値は、1クロックサイクル後の複数のブロック出力信号230−1〜230−nの論理ORに等しいと仮定する。結果として、クロック信号を切り取ることにより、複数の能動的メッシュブロック210−1〜210−nのうちの1つを非アクティブ化することを試みることは、アラーム信号2−130のうちのクロック改ざん検出信号2−232に、アラームを伝達する論理1にてスタックにならせる。
【0025】
図3Aは、実施形態に係る、
図2のクロック改ざん検出器2−220として使用するのに好適なクロック改ざん検出器3−220の回路図である。クロック改ざん検出器3−220は、nの入力ORゲート304およびラッチ308を備える。
【0026】
図2のブロック出力信号230−1〜230−nに対応する複数のアラーム信号、アラーム1〜アラームnは、それぞれ、nビットORゲート304の入力に接続する。クロックワイヤ265−(n+1)上の信号に対応するクロック信号CLKは、ラッチ308のクロック入力に接続される。リセット信号RESETは、ラッチ308のセット入力に接続される。ラッチの出力は、
図2のクロック改ざん検出信号2−232に対応するアラーム−(n+1)信号に接続される。クロック改ざん検出器3−220の動作は、
図3Bおよび
図3Cを参照して説明されるであろう。
【0027】
図3Bおよび
図3Cは、
図3Aのクロック改ざん検出器3−220に関係付けられる複数の波形を示す。
図3Bおよび
図3Cは、
図3Aのアラーム−1からアラーム−n信号、アラーム−(n+1)信号、リセット信号RESET、およびクロック信号CLKの波形を示す。
【0028】
図3Bは、クロック信号CLKが動作しているときのクロック改ざん検出器3−220の動作を示す。第1の時間t1にて、リセット信号RESETがアサートされ、これはラッチ308を設定し、従って、エッジ321により示されるように、アラーム−(n+1)信号に高い論理値(例えば「1」)を持たせる。実施形態において、第1の時間t1は、クロック信号CLKのそれから異なる期間を有する別のクロック信号のエッジに対応する。不正行為が複数のメッシュブロック210−1〜210−n(
図2参照)により検出されないと、アラーム−1からアラーム−n信号は、第1の時間t1にて低い論理値(例えば「0」)を有する。
【0029】
第1の時間t1の後のクロック信号CLKの立ち上がりエッジ312に対応する第2の時間t2にて、ラッチ308はクロックされ、結果として、アラーム−(n+1)信号はアラーム−1からアラーム−n信号の論理ORに対応する値を有する。アラーム−1からアラーム−n信号はすべて第2の時間t2にて低い論理値を有するので、アラーム−(n+1)は低い論理値を有するように変更され、それに応じてアラームは伝達されない。
【0030】
図3Cは、クロック信号CLKが、
図2のクロックワイヤ265−1〜265−(n+1)を切り取ることのような複数の不正行為によりディスエーブルされたときのクロック改ざん検出器3−220の動作を示す。結果として、クロック改ざん検出器3−220は、アラーム−1からアラーム−n信号の論理OR演算に係る出力を生成しない。
【0031】
図3Cを参照すると、
図3Bの第1の時間t1に対応する第3の時間t3にて、リセット信号RESETがアサートされてラッチ308を設定し、これにより、エッジ341により示されるように、アラーム−(n+1)信号に高い論理値(例えば「1」)を持たせる。不正行為が複数のメッシュブロック210−1〜210−n(
図2参照)により検出されないと、アラーム−1からアラーム−n信号は、第3の時間t3にて低い論理値(例えば「0」)を有する。
【0032】
図3Bの第2の時間t2に対応する第4の時間t4にて、クロック信号310は非アクティブ化されているので、ラッチ308はクロックされず、従って、アラーム−(n+1)信号は、アラーム−1からアラーム−n信号の論理OR演算に対応する値を有さない。結果として、アラーム−(n+1)信号は、第4の時間t4にておよびその後、高い論理値を有し続ける。
【0033】
図2のクロック改ざん検出信号232に対応する少なくともアラーム−(n+1)信号は、高い論理値を持ち続けるので、
図2のアラーム信号2−130は、高い論理値を有する少なくとも1つのビットを含み、コントローラ150(
図1参照)をイネーブルして複数の防護措置をトリガしてよい。従って、クロック信号CLKを非アクティブ化することによりATシステム2−110をディスエーブルする試みは、アラーム−(n+1)信号を使用して無効にされてよい。
【0034】
図4Aは、実施形態に係る
図2に示されるi番目のメッシュブロック210−iに対応するメッシュブロック4−210を示す。メッシュブロック4−210は、第1の疑似乱数ジェネレータ(PRNG)4−410、第1の複数のメッシュワイヤ411−1〜411−32、メッシュバッファ4−420、第2の複数のメッシュワイヤ412−1〜412−32、および第2のPRNG4−450およびコンパレータ4−470を有するコンパレータブロック4−460を含む。
【0035】
第1のPRNG4−410は、コンパレータブロック4−460から離れてメッシュブロック4−210の一部にまたはその下に配置され、X=x
1,x
2,…,x
nである第1のnビットの数Xを生成する。実施形態において、第1のPRNG4−410は、初期値(またはシード)およびフィードバック関数を使用して疑似乱数を生成する線形フィードバックシフトレジスタ(LFSR)を含む。実施形態において、フィードバック関数は、複数の排他的OR(XOR)ゲートを含むフィードバックネットワークを使用して実装される。別の実施形態において、フィードバック関数は、フィードバックベクトルレジスタにロードされるフィードバックベクトルを使用して特定されてよく、フィードバックベクトルレジスタ内の各ビットは、フィードバックネットワーク内のXORゲートをイネーブルまたはディスエーブルする。第1のPRNG4−410は、フィボナッチLFSRまたはガロアLFSRを含んでよい。
【0036】
第1の32ビットの数Xの複数の二進数x
1,x
2,…,x
32を示す複数の第1のランダム信号(または複数の第1疑似ランダム信号)413−1〜413−32は、それぞれ第1の複数のメッシュワイヤ411−1〜411−32を通じて並行して送信される。例えば、第1の二進数x
1を示す第1の信号413−1は、第1のメッシュワイヤ411−1を通じて送信され、第2の二進数x
2を示す第2の信号413−2は、第2のメッシュワイヤ411−2等を通じて送信される。
【0037】
第1の複数のメッシュワイヤ411−1〜411−32は、第1のPRNG4−410をメッシュバッファ4−420に接続する。実施形態において、第1の複数のメッシュワイヤ411−1〜411−32のうちの隣接するメッシュワイヤは狭く離間され、それにより、メッシュワイヤ411−1〜411−32の下にあるICチップの重要な部分を逆行分析するための複数の不正行為(例えば、メッシュワイヤ411−1を411−32にエッチングまたはバイパスすること)は難しくなる。例えば、2つの隣接するメッシュワイヤは、約0.4μmの距離dだけ離間されてよい。
【0038】
メッシュバッファ4−420は、二進数x
1,x
2,…,x
32に対応する複数の第1ランダム信号413−1〜413−32を第1の複数のメッシュワイヤ411−1〜411−32を通じて受信し、修正された二進数x
1',x
2',…,x'
32に対応する複数の修正信号414−1〜414−32を第2の複数のメッシュワイヤ412−1〜412−32を通じて出力する。実施形態において、
図4Bを参照して以下でより詳細に説明されるように、メッシュバッファ4−420は、受信した複数のランダム信号413−1〜413−32を反転して増幅し、また受信した複数のランダム信号413−1〜413−32の複数の信号経路をジャンブルする。ここに使用されたように、用語「ジャンブル(jumble)」は、信号経路を、2つのジャンクションの間で利用可能な複数の信号経路のうちの1つに接続することを指す。例えば、信号は、第1の複数のメッシュワイヤ411−1〜411−32のうちの1つ(例えば、第1のメッシュワイヤ411−x)を通じてメッシュバッファ4−420により受信され、信号経路をメッシュバッファ4−420にてジャンブルすることにより、第1のメッシュワイヤ411−xを第2の複数のメッシュワイヤ412−1〜412−32のうちの1つに接続することにより、コンパレータブロック4−460に送信される。
【0039】
図4Bは、実施形態に係る、
図4Aのメッシュブロック4−210に含まれるメッシュバッファ4−420の部分4−440を示す。メッシュバッファ4−420の部分4−440は、複数のバッファ472a〜472dを含む。これらは、複数のインバータ470a〜470dに
図4Bに示されるように直列に結合される。
【0040】
図4Bに示されるこの実施形態において、二進数x
1〜x
4を示す複数のランダム信号413−1〜413−4は、それぞれ、メッシュバッファ4―420の部分4―440に入力される。例えば、第4のインバータ470dは、高い論理値(例えば「1」)に対応する第1の二進数x
1を示す第1のランダム信号413−1を受信し、低い論理値(例えば「0」)を示す第4の反転信号415−4を出力する。その後に、第4のバッファ472dは、第4の反転信号415−4を増幅して、第4の修正信号414−4を生成する。結果として、第4の修正信号414−4は、第1のランダム信号413−1の反転値を示し、第1のランダム信号413−1のそれより高い信号強度を有する。
【0041】
低い論理値(例えば「0」)に対応する第2の二進数x
2を示す第2のランダム信号413−2は、第2のインバータ470bに入力されて、高い論理値(例えば「1」)を示す第2の反転信号415―2を生成する。その後、第2の反転信号415−2は、第2のバッファ472bにより増幅されて、第2の修正信号414−2を出力する。結果として、第2の修正信号414−2は、第2のランダム信号413−2の反転値を示し、第2のランダム信号413−2のそれより高い信号強度を有する。
【0042】
高い論理値(例えば「1」)に対応する第3の二進数x
3を示す第3のランダム信号413−3は、第3のインバータ470cに入力されて、低い論理値(例えば「0」)を示す第3の反転信号415―3を生成する。その後、第3の反転信号415−3は、第3のバッファ472cにより増幅されて、第3の修正信号414−3を出力する。結果として、第3の修正信号414−3は、第3のランダム信号413−3の反転値を示し、第3のランダム信号413−3のそれより高い信号強度を有する。
【0043】
低い論理値(例えば「0」)に対応する第4の二進数x
4を示す第4のランダム信号413−4は、第1のインバータ470aに入力されて、高い論理値(例えば「1」)を示す第1の反転信号415―1を生成する。その後、第1の反転信号415−1は、第1のバッファ472aにより増幅されて、第1の修正信号414−1を出力する。結果として、第1の修正信号414−1は、第4のランダム信号413−4の反転値を示し、第4のランダム信号413−4のそれより高い信号強度を有する。
【0044】
上術のとおり、メッシュバッファ4―420の部分は、複数のランダム信号413―1〜413−4を反転し、増幅し、およびジャンブルして、複数の修正信号414−1〜414−4を生成する。結果として、第1の修正信号414−1、第2の修正信号414−2、第3の修正信号414−3、および第4の修正信号414−4は、それぞれ、第4のランダム信号413−4、第2のランダム信号413−2、第3のランダム信号413−3、および第1のランダム信号413−1に対応する反転および増幅された複数の信号である。
【0045】
当業者は、ここにされた開示および教示を考慮して、複数のランダム信号413−1〜413−4は、複数のインバータ470a〜470dおよび複数のバッファ472a〜472dの様々な構成を使用して複数の修正信号414−1〜414−4を生成するために、反転、増幅、およびジャンブルされてよいことを理解するであろう。当業者は、ここにされた開示および教示を考慮して、複数のインバータ470a−dのうちのインバータおよび複数のバッファ472a−bのうちのバッファの各組み合わせの組み合わせられた機能は、反転するバッファを使用して代わりに設けられることができることを理解するであろう。
【0046】
図4Aに戻って参照すると、メッシュバッファ4−420は、複数の修正信号414−1〜414−32を生成するために、複数の第1のランダム信号413−1〜413−32を反転およびジャンブルしてよい。結果として、第1のPRNG4−410をコンパレータ4−470に接続することにより第1および第2の複数のメッシュワイヤ411−1〜411−32および412−1〜412−32をバイパスする試みは、バイパスされた複数の信号の間の信号不一致をもたらし、それによって、第2の複数の信号418−1〜418−32は、バイパスの試みの発生を示すブロック出力信号4−230を生成する。
【0047】
さらに、メッシュバッファ4−420は、複数の第1のランダム信号413−1〜413−32を増幅し、第1および第2の複数のメッシュワイヤ411−1〜411−32および412−1〜412−32および複数のコンパレータブロックワイヤ417−1〜417−32を通じて、第1の32ビットの数Xの複数の二進数x
1,x
2,…,x
32に対応する複数の信号413−1〜413−32の伝送損失を相殺してよい。
【0048】
実施形態において、複数の修正信号414−1〜414−32は、第2の複数のメッシュワイヤ412−1〜412−32および複数のコンパレータブロックワイヤ417−1〜417−32を通じて、コンパレータブロック4−460内に含まれる反転ブロック4−480に入力される。複数のコンパレータブロックワイヤ417−1〜417−32は、第2の複数のメッシュワイヤ412−1〜412−32と異なる層内に配設されてよい。例えば、第2の複数のメッシュワイヤ412−1〜412−32がより高い相互接続層内に配設されると、複数のコンパレータブロックワイヤ417−1〜417−32は、
図5関して記述されるように、より高い相互接続層の下に配置される1または複数のより低い相互接続層内に配設されてよい。
【0049】
反転ブロック4−480は、再び第1の複数の入力信号419−1〜419−32を出力するために、複数の修正信号414−1〜414−32を反転する。また、実施形態において、反転ブロック4−480は、受信した複数の信号414−1〜414−32をジャンブルし、それにより、第1の複数の入力信号419−1〜419−32は、
図4Cを参照して以下で説明されるように、それぞれ複数の第1のランダム信号413−1〜413−32に対応する論理値を有する。
【0050】
図4Cは、実施形態に係る、
図4Aのメッシュブロックに含まれる反転ブロック4−480の部分4−490を示す。低い論理値(例えば「0」)に対応する反転された二進数x'
4を示す第4の修正信号414−4は、反転ブロック4−480の第4のインバータ475dにより、第1の入力信号419−1に反転される。第1の入力信号419−1は、高い論理値(例えば「1」)に対応する二進数x
1"を示す。結果として、第1の入力信号419−1は、第1のランダム信号413−1の論理値x
1と同じである論理値x"
1を有する。同様に、第4の入力信号419−4は、第4のランダム信号413−4の論理値x
4(例えば「0」)に対応する論理値x"
4(例えば「0」)を有する。
【0051】
高い論理値(例えば「1」)に対応する反転された二進数x'
2を示す第2の修正信号414−2は、反転ブロック4−480の第2のインバータ475bにより、二進数x
2"を示す第2の入力信号419−2に反転される。第2の入力信号419―2は、低い論理値(例えば「0」)に対応する二進数x
2"を示す。結果として、第2の入力信号419−2は、第2のランダム信号413−2の論理値x
2に対応する論理値x"
2を有する。同様に、第3の入力信号419−3は、第3のランダム信号413−3の論理値x
3(例えば「1」)に対応する論理値x"
3(例えば「1」)を有する。
【0052】
反転ブロック4−480の部分4−490は、複数の修正信号414−1〜414−4を反転およびジャンブルして、複数の入力信号419−1〜419−4を生成する。結果として、第1の入力信号419−1、第2の入力信号419−2、第3の入力信号419−3、および第4の入力信号419−4は、それぞれ、第1のランダム信号413−1、第2のランダム信号413−2、第3のランダム信号413−3、および第4のランダム信号413−4に対応する同じ論理値を有する。当業者は、ここにされた開示および教示を考慮して、複数の修正信号414−1〜414−4は、複数のインバータ475a〜475dおよび複数のインバータ475a〜475dを接続する複数のワイヤの様々な構成を使用して複数の入力信号419−1〜419−4を生成するために、反転およびジャンブルされてよいことを理解するであろう。
【0053】
上術のとおり、反転ブロック4−480は、複数の修正信号414−1〜414−32を反転およびジャンブルし、それにより、出力される第1の複数の入力信号419−1〜419−32は、それぞれ、第1の複数のランダム信号413−1〜413−32と同じ論理値を有する。結果として、第1のPRNG4−410により生成される二進数(x
1,x
2,…,x
n)に対応する第1の複数の入力信号419−1〜419−32は、コンパレータ4−470に入力される。
【0054】
第2のPRNG4−450は、コンパレータブロック4−460内に配置され、y
1,y
2,…,y
nのような第2のnビットの数Yを生成する。第2のPRNG4−450は、コンパレータブロック4−460内に組み込まれるので、第2のnビットの数Yを抽出するための第2のPRNG4−450への外部アクセスは難しいであろう。実施形態において、コンパレータブロック4−460は、完全にまたは部分的に、第2の複数のメッシュワイヤ412−1〜412−32の下に配置され、第2のPRNG4−450およびコンパレータブロック4−460の動作の改ざんまたは観察の困難さをさらに増大する。
【0055】
実施形態において、第2のPRNG4−450は、第1のPRNG4−410と同じシードおよびフィードバック関数を使用して疑似乱数を生成する線形フィードバックシフトレジスタ(LFSR)を含む。結果として、第1のPRNG4−410により生成される二進数x
1,x
2,…,x
nは、それぞれ、第2のPRNG4−450により生成される二進数y
1,y
2,…,y
nに対応する。
【0056】
実施形態において、第2のPRNG4−450を実装するために使用される回路は、実質的に、第1のPRNG4−410を実装するために使用される回路と重複する。別の実施形態において、第2のPRNG4−450を実装するために使用される回路は、第1のPRNG4−410を実装するために使用される回路と異なるが、第1のPRNG4−410と同じシードおよびフィードバック関数とともに使用すると、同一の疑似乱数のシーケンスを生成する。
【0057】
コンパレータ4−470は、X=YまたはX≠Yであるかどうかを示すブロック出力信号4―230を生成するために、第1の乱数Xの二進数(x
1,x
2,…,x
n)を示す第1の複数の入力信号419−1〜419−32および第2の乱数Yの二進数(y
1,y
2,…,y
n)を示す第2の複数の入力信号418−1〜418−32を受信する。実施形態において、コンパレータ4−470は、X=Yの場合に低い論理値(例えば「0」)およびX≠Yの場合に高い論理値(例えば「1」)を有するブロック出力信号4−230を生成する。
【0058】
実施形態において、コンパレータ4−470は、
図4Aに示されるように、複数の二進数(x
1,x
2,…,x
n)を示す第1の複数の入力信号419−1〜419−32および複数の二進数(y
1,y
2,…,y
n)を示す第2の複数の入力信号418−1〜481−32を並行して受信する。例えば、コンパレータ4−470は、複数のセルのn数を有する反復ネットワーク(不図示)を含み、それぞれはXおよびYの一対のビットを受信する。この反復ネットワークにおいて、反復ネットワークの第1のセル(不図示)は、複数の二進数x
1およびy
1を示す複数の入力信号419−1および418−1を受信し、第2のセル(不図示)は、複数の二進数x
2およびy
2等を示す複数の入力信号419−2および418−2を受信する。
【0059】
別の実施形態において、コンパレータ4−470は、複数の二進数(x
1,x
2,…,x
n)を示す第1の複数の入力信号419−1〜419−32および複数の二進数(y
1,y
2,…,y
n)を示す第2の複数の入力信号418−1〜481−32を順に受信する。例えば、コンパレータブロック4−460は、第1の複数の入力信号419−1〜419−32を並行して受信し、複数の二進数(x
1,x
2,…,x
n)のうちの1つを示す第1の入力信号を順に出力する第1のシリアライザを含む。また、コンパレータブロック4−460は、第2の複数の入力信号418−1〜418−32を並行して受信し、第1のシリアライザと同じ順で、複数の二進数(y
1,y
2,…,y
n)のうちの1つを示す第2の入力信号を出力する第2のシリアライザを含む。結果として、第1および第2のシリアライザは、第1および第2の入力信号をコンパレータ4−470のセルに出力し、それにより、セルは、実質的に、同時に、一対の対応する二進数(x
i,y
i)を受信する。コンパレータ4−470は、X=Yの場合に低い論理値(例えば、0)およびX≠Yの場合に高い論理値(例えば、1)を有するブロック出力信号4−230を生成する。
【0060】
図4Dは、実施形態に係る、
図4Aのメッシュブロックに含まれる第1のPRNG4−410の回路図である。第1のPRNG4−410は、LFSR432、シリアルイン・パラレルアウト(SIPO)シフトレジスタ434、クロック分周器436、およびマルチビットラッチ438を含む。
【0061】
高周波クロック(HFC)が、LFSR432に提供される。HFCの各サイクルにて、LFSR432は、LFSR432の現在の内部状態値およびフィードバック関数に応じて、その出力(「out」)上に新しい出力ビットを生成する。また、LFSR432は、LFSR432の現在の内部状態値およびフィードバック関数に応じて、新しい内部状態値を生成する。
【0062】
LFSR432が初期化されると、LFSR432の内部状態値はシード値に設定される。実施形態において、各メッシュブロックは、異なるシード値を有してよい。
【0063】
実施形態において、シード値は、LFSR432の設計により前もって決定される。実施形態において、シード値は、コントローラまたはプロセッサによりLFSR432に提供され、シード値は、直列バスまたは並列バスを使用してLFSR432に伝達される。1つの初期化の間にLFSR432に提供されるシード値は、前または後の初期化の間に提供されるシード値と異なってよい。
【0064】
LFSR432により使用されるフィードバック関数は、回路の設計により決定されてよい。代わりに、フィードバック関数は、直列バスまたは並列バスを使用してLFSR432に提供されるフィードバックベクトルにより決定されてよい。例えば、フィードバックベクトルは、LFSR内の各タップの制御ビットを含んでよい。ここで、タップは、それぞれの制御ビットが第1の論理状態にあると、フィードバックを生成するために使用され、タップは、それぞれの制御ビットが第2の論理状態にあると、フィードバックを生成するために使用されない。
【0065】
HSCの各サイクルにて、シフトレジスタ434は、シリアル入力(「sin」)上のLFSR432の出力を受信し、前に受信した複数のビットを1ポジションシフトダウンし、それにより、Nクロックサイクルの後、LFSR432のNの最新の出力値はシフトレジスタ434の平行出力(「pout」)上に設けられる。
【0066】
クロック分周器436は、HSCを分割することにより、クロックCLKを生成する。クロックCLKの各サイクルにて、ラッチ438は、シフトレジスタ434の平行出力pout上に複数の値をロードする。ラッチ438の複数の出力は、第1のランダム信号413−1〜413−32を与える。
【0067】
実施形態において、クロック分周器436は、ラッチ438内のビット数に等しい除数でHSCを分割することにより、クロックCLKを生成する。別の実施形態において、クロック分周器436は、ラッチ438内のビット数より大きい除数でHSCを分割することにより、クロックCLKを生成する。ラッチ438内のビット数より大きい除数を使用することは、複数の第1のランダム信号413−1〜413−32から、LFSR432のシード値および/またはフィードバック関数を決定することの困難さを増大してよい。
【0068】
図4Eは、実施形態に係る、
図4Aのメッシュブロックに含まれる第2のPRNG4−450の回路図である。第2のPRNG4−450は、LFSR452、シリアルイン・パラレルアウト(SIPO)シフトレジスタ454、およびマルチビットラッチ458を含む。
【0069】
第2のPRNG4−450は、同様に動作し、
図4Dの第1のPRNG4−410と同じシード値、フィードバック関数、高速クロック(HSC)、およびクロックCLKを使用する。結果として、クロックCLKのサイクルの間に第2の複数の入力信号418−1〜418−32上で第2のPRNG4−450により生成される複数の値は、クロックCLKのそのサイクルの間に第1の複数のランダム信号413−1〜413−32上で、
図4Eの第1のPRNG4−410により生成される複数の値と同一になるであろう。
【0070】
実施形態において、第2のPRNG4−450は、第1のPRNG4−410のクロック分周器436により生成されるクロックCLKを使用する。別の実施形態において、第2のPRNG4−450は、第1のPRNG4−410のクロック分周器436と同一のクロック分周器を使用して、クロックCLKのバージョンを生成する。実施形態において、第2のPRNG4−450により使用されるクロックCLKは、第1のPRNG4−410により使用されるクロックCLKに対して遅延され、ワイヤメッシュにおける回路の遅延を調整する。
【0071】
図5は、実施形態に係る、複数の層を示す断面図である。断面図は、
図4Aに示される線A−A'に沿った断面500を示す。断面は、再分配層540、第1から第6の相互接続層531〜536(しばしば、それぞれ金属1の層から金属6の層と呼ばれる)、素子層520、および基板510を含む。第1から第5の相互接続層531〜535はより低い相互接続層であり、第6の相互接続層536はより高い相互接続層である。実施形態において、追加の複数の相互接続層は、第1から第6の相互接続層531〜536の上、下、または上と下との両方にあってよい。
【0072】
複数のメッシュワイヤ412−22〜417−32(
図4A参照)に対応する複数のメッシュワイヤ512−22〜512−32は、第6の相互接続層536に含まれる。複数のメッシュワイヤ512−22〜512−32は、第1から第5の相互接続層531〜535および/または素子層520内の複数の電子デバイス内の複数の相互接続のような複数のメッシュワイヤ512−22〜512−32の下の回路への、プロービングによるような、物理的および/または電気的アクセスを防ぐように離間される。例えば、40ナノメートルCMOS処理では、複数のメッシュワイヤ512−22〜512−32は、40マイクロメートル離間されてよい。
【0073】
再分配層(RDL)540は、ICチップの複数の回路を動作するための電力を分配する再分配金属層541を含む。再分配金属層541は、実質的に、RDLの表面のすべてをカバーし、それに応じて、RDL540の下の回路の外観検査を防いでよい。また、RDL540は、絶縁層として供する誘電体層544を含む。実施形態において、誘電体層544は、下にある複数の回路をさらに見えなくする不透明材料を含む。実施形態において、不透明カバー層は、RDL540をカバーする。
【0074】
素子層520は、複数の論理ゲートのような、ICチップの様々な動作を実行する複数のフォーム回路にともに接続される複数の能動的および受動的電子デバイスを含む。複数の能動的および受動的電子デバイスは、第1から第6の相互接続層531〜536内の1または複数の相互接続ワイヤを使用して、接続される。
【0075】
メッシュワイヤ512−22〜512−32の下に配置される素子層520の部分は、改ざんおよび逆行分析から保護される複数のデバイスおよび複数の回路を含む。実施形態において、
図2および
図4Aに示される複数の回路のような、複数のメッシュワイヤ512−22〜512−32をモニタリングする回路の幾つかまたはすべては、複数のメッシュワイヤ512−22〜512−32の下に配置される素子層520の部分内に配置され、それにより、モニタ回路は、改ざんおよび逆行分析から保護される。
【0076】
第1から第6の相互接続層531〜536のそれぞれは、誘電材料によって分離される複数の導電性の相互接続を含む。複数の相互接続層531〜536は、異なる種類の金属ワイヤが配設される複数の層を含んでよい。さらに、異なる種類またはグループの信号は、異なる相互接続層を使用して、ICチップを越えて経路設定されてよい。
【0077】
例えば、
図2の複数のクロックワイヤ265−1〜265−(n+1)は、複数のメッシュワイヤ512−22〜512−32を含む複数のメッシュワイヤの下に配置される第2および第3の相互接続層532および533の部分を使用して、チップを越えて経路設定されてよい。
図2の複数の(n+1)ビットアラーム信号2−130を
図1のコントローラ150に送信する
図2の複数のアラームワイヤ230−1〜230−nは、複数のメッシュワイヤの下に配置される第2、第3、および/または第4の相互接続層532〜534の部分を使用して、チップを越えて経路設定されてよい。複数のコンパレータブロックワイヤ417−1〜417−32は、第1から第5の相互接続層531〜535のうち1または複数内に配設されてよく、それにより、複数のコンパレータブロックワイヤ417−1〜417−32は、第6の相互接続層536内に配設される複数のメッシュワイヤの下の層内に配設される。他の複数のワイヤおよび複数の回路は、同様に、保護されてよい。結果として、
図1の改ざん防止システム1−110は、改ざんおよび逆行分析からそれ自身を保護する。
【0078】
図6は、実施形態に係るメッシュブロックのブロック出力信号を生成するための方法600の流れ図である。方法は、メッシュブロック上での複数の不正行為、例えば、エッチング部分の下にあるICチップの重要部を露出するためにメッシュブロックの一部をエッチングすることを検出するために使用されてよい。
【0079】
S610にて、第1および第2のnビットの疑似乱数は、第1および第2の疑似乱数のジェネレータ(PRNG)により生成される。実施形態において、第2のPRNGは、第2のPRNGへの外部アクセスを困難にするためにコンパレータブロック内に配置される。第1および第2のPRNGは、複数の疑似乱数の複数のマッチングシーケンスを生成する。
【0080】
S620にて、第1の疑似乱数は、メッシュブロックを使用して送信され、コンパレータブロックにより受信される。
【0081】
S630にて、受信された第1の疑似乱数は、コンパレータブロック内の第2の疑似乱数と比較される。コンパレータブロックは、2つのnビットの数が同じかどうかを示すブロック出力信号を生成してよい。実施形態において、コンパレータブロックは、2つのnビットの数が同じとき低い論理値(例えば「0」)、2つのnビットの数が異なるとき高い論理値(例えば「1」)を有するブロック出力信号を生成する。
【0082】
図7は、実施形態に係るATシステムのアラーム信号を生成するための方法700の流れ図である。方法は、ICチップに含まれる1または複数のメッシュブロック上での複数の不正行為を検出するために使用されてよく、それによって、ICチップの複数の機能を逆行分析または改変することに対して複数の防護措置をとるためにアラーム信号を生成する。
【0083】
S710にて、
図6に示される方法に応じて生成されている複数のブロック出力信号のそれぞれが受信される。実施形態において、複数のブロック出力信号のそれぞれは、低い論理値(例えば「0」)または高い論理値(例えば「1」)を有する。
【0084】
S730にて、受信した複数のブロック出力信号に基づくアラーム信号が出力される。実施形態において、受信した複数のブロック出力信号のいずれかが高い論理値(例えば「1」)を有すると、アラーム信号は、ICチップの複数の機能を逆行分析または改変することに対する複数の防護措置をトリガする。
【0085】
本開示の態様が、例として提案される特定の実施形態とともに記述されたが、例の代替、修正、および変形がなされてよい。従って、ここに記載されるような実施形態は、例示であり、限定するものではないことが意図される。以下に記載の特許請求の範囲から逸脱することなく変形することもできる。
本明細書によれば、以下の各項目に記載の事項もまた開示される。
[項目1]
メッシュブロックにおける第1および第2の数のジェネレータをそれぞれ使用して第1および第2の数を生成する段階と、
前記メッシュブロックから出力信号を生成するために前記第1の数を前記第2の数と比較する段階と、を備え、
前記出力信号は、前記メッシュブロック上での不正行為の発生を示す、方法。
[項目2]
前記第1および第2の数は、第1および第2の疑似乱数であり、それぞれ第1および第2の線形フィードバックシフトレジスタ(LFSR)を使用して生成される、項目1に記載の方法。
[項目3]
前記第1および第2の数は、第1および第2の疑似乱数であり、前記第1および第2の数のジェネレータは、それぞれ、第1および第2の疑似乱数のジェネレータ(PRNG)であり、
第1の複数のメッシュワイヤを通じて前記第1の疑似乱数を示す第1の複数の疑似ランダム信号をメッシュバッファに送信する段階と、
前記メッシュバッファを使用して前記第1の複数の疑似ランダム信号を複数の修正信号に変換する段階と、
をさらに備える、項目1に記載の方法。
[項目4]
前記第1の複数の疑似ランダム信号を前記複数の修正信号に変換する段階は、前記複数の修正信号を生成するために前記第1の複数の疑似ランダム信号を反転する段階を含む、項目3に記載の方法。
[項目5]
前記第1の疑似乱数を前記第2の疑似乱数と比較する段階は、
第1の複数の入力信号を生成するために、コンパレータ内で前記複数の修正信号を反転する段階であり、前記第1の複数の入力信号は、それぞれ、前記第1の複数の疑似ランダム信号のそれらに対応する複数の論理値を有する、段階と、
前記第1の複数の入力信号を、前記第2の疑似乱数を示す第2のPRNGからの第2の複数の入力信号と比較する段階と、
を含む、項目4に記載の方法。
[項目6]
前記第1の疑似乱数を前記第2の疑似乱数と比較する段階は、前記第1の複数の入力信号を前記第2の複数の入力信号と並行して比較する段階をさらに含む、項目5に記載の方法。
[項目7]
前記メッシュバッファから延びる第2の複数のメッシュワイヤのうちの第1のメッシュワイヤを介して前記メッシュバッファから前記複数の修正信号のうちの第1の修正信号を出力する段階と、
前記第2の複数のメッシュワイヤのうちの第2のメッシュワイヤを介して前記メッシュバッファから前記複数の修正信号のうちの第2の修正信号を出力する段階と、
をさらに備える、項目3に記載の方法。
[項目8]
前記メッシュブロックは、第1のメッシュブロックであり、前記出力信号は、第1の出力信号であり、
第2のメッシュブロック内でそれぞれ第3および第4のPRNGを使用して第3および第4の疑似乱数を生成する段階と、
前記第2のメッシュブロックから第2の出力信号を生成するために前記第3の疑似乱数を前記第4の疑似乱数と比較する段階であり、前記第2の出力信号は、前記第2のメッシュブロック上での不正行為の発生を示す、段階と、
クロック改ざん検出器内で前記第1および第2の出力信号のOR演算を実行する段階であり、前記クロック改ざん検出器は、クロック改ざん検出信号を生成する、段階と、
をさらに備える、項目1に記載の方法。
[項目9]
前記クロック改ざん検出信号を第1の時間にて論理値に設定する段階と、
前記クロック改ざん検出信号を、前記第1の時間の後の第2の時間にて前記OR演算の結果に設定する段階であり、前記第2の時間は、前記クロック改ざん検出器により受信されるクロック信号の立ち上がりエッジに対応する、段階と、
をさらに備える、項目8に記載の方法。
[項目10]
メッシュブロックと、
第1の数を生成する第1の数のジェネレータと、
第2の数を生成する第2の数のジェネレータと、
前記第1の数を前記第2の数と比較して、前記メッシュブロックから出力信号を生成するコンパレータブロックであり、前記出力信号は、前記メッシュブロック上での不正行為の発生を示す、コンパレータブロックと、を備え、
前記第1の数のジェネレータ、前記第2の数のジェネレータ、および前記コンパレータブロックは、前記メッシュブロック内に設けられる、装置。
[項目11]
前記第1および第2の数は、第1および第2の疑似乱数であり、それぞれ第1および第2の線形フィードバックシフトレジスタ(LFSR)を使用して生成され、
前記第2の数のジェネレータは、前記コンパレータブロック内にある、項目10に記載の装置。
[項目12]
前記第1および第2の数は、それぞれ第1および第2の疑似乱数であり、前記第1および第2の数のジェネレータは、それぞれ第1および第2の疑似乱数のジェネレータ(PRNG)であり、
前記第1の疑似乱数を示す第1の複数の疑似ランダム信号を送信する第1の複数のメッシュワイヤと、
前記第1の複数の疑似ランダム信号を複数の修正信号に変換するメッシュバッファと、
前記複数の修正信号を前記コンパレータブロックに送信する第2の複数のメッシュワイヤと、
をさらに備える、項目10に記載の装置。
[項目13]
前記第1および第2の複数のメッシュワイヤの中の2つの隣接するワイヤは、互いから約0.4μm離間する、項目12に記載の装置。
[項目14]
前記メッシュバッファは、前記複数の修正信号を生成する前記第1の複数の疑似ランダム信号を反転する複数のインバータを含む、項目12に記載の装置。
[項目15]
前記コンパレータブロックは、
第1の複数の入力信号を生成するために前記複数の修正信号を反転する反転ブロックであり、前記第1の複数の入力信号は、それぞれ前記第1の複数の疑似ランダム信号のそれらに対応する複数の論理値を有する、反転ブロックと、
前記反転ブロックからの前記第1の複数の入力信号を前記第2の疑似乱数を示す第2の複数の入力信号と比較コンパレータと、
を含む、項目14に記載の装置。
[項目16]
前記コンパレータは、複数のセルを有する反復ネットワークを含み、各セルは、前記第1の複数の入力信号の中の第1の入力信号および前記第2の複数の入力信号の中の第2の入力信号を受信し、前記第1および第2の入力信号は、一対の対応する二進数を示す、項目15に記載の装置。
[項目17]
前記メッシュバッファは、前記複数の修正信号のうちの第1の修正信号を前記第2の複数のメッシュワイヤのうちの第1のメッシュワイヤを介して出力し、前記複数の修正信号のうちの第2の修正信号を前記第2の複数のメッシュワイヤのうちの第2のメッシュワイヤを介して出力する、項目12に記載の装置。
[項目18]
前記メッシュブロックは、第1のメッシュブロックであり、前記出力信号は、第1の出力信号であり、
第2の出力信号を生成する第2のメッシュブロックであり、前記第2の出力信号は、前記第2のメッシュブロック上での不正行為が検出されるかどうかを示す、第2のメッシュブロックと、
前記第1および第2の出力信号のOR演算を実行し、クロック改ざん検出信号を生成するクロック改ざん検出器と、
をさらに備える、項目10に記載の装置。
[項目19]
前記クロック改ざん検出器は、前記クロック改ざん検出信号を第1の時間にて論理値に設定し、
前記クロック改ざん検出器は、前記クロック改ざん検出信号を、前記第1の時間の後の第2の時間にて前記OR演算の結果に設定し、前記第2の時間は、前記クロック改ざん検出器により受信されるクロック信号の立ち上がりエッジに対応する、
項目18に記載の装置。
[項目20]
前記第1および第2の数は、第1および第2の疑似乱数であり、それぞれ第1および第2の線形フィードバックシフトレジスタ(LFSR)を使用して生成され、
前記メッシュブロックは、
基板と、
前記基板の上に配設され、複数の電子デバイスを含む素子層と、
前記素子層の上に配設され、前記複数の電子デバイスを相互接続する複数のワイヤを含む複数のより低い相互接続層と、
前記複数のより低い相互接続層の上に配設され、複数のワイヤを含むより高い相互接続層であり、前記複数のワイヤは、前記第1の疑似乱数を示す複数の疑似ランダム信号を送信する、より高い相互接続層と、
前記より高い相互接続層の上に配設されるカバー層と、を含み、
前記複数のより低い相互接続層は、
クロック信号を前記メッシュブロックに与えるクロックワイヤと、
前記出力信号をコントローラに送信するアラームワイヤと、
コンパレータブロック内に配設され、前記複数の疑似ランダム信号を前記コンパレータブロック内のコンパレータに送信する複数のコンパレータブロックワイヤと、を含む、
項目10に記載の装置。