(57)【要約】【課題】データ処理装置の処理内容を推測することを困難にする。【解決手段】データ処理装置は、データ処理命令に応答して少なくとも１つのデータ値に対してデータ処理動作を実行するように構成される。データ処理装置は、自身の経路上に遅延ユニットを備え、遅延ユニットは、経路上の信号の伝搬に遅延を適用するように構成される。信号の伝搬は、データ処理動作の一部を形成する。データ処理装置は、所定の時点においてデータ処理動作の結果を決定するように構成され、所定の時点は、データ処理動作の開始から所定の時間間隔だけ後であり、遅延ユニットは、データ処理動作を実行するための時間に遅延を加えたものが所定の時間間隔未満であるように構成される。さらに、遅延ユニットは、データ処理命令に応答して、適用される遅延を少なくとも１つのデータ値に対するデータ処理動作の以降の実行に対して変化させるように構成される。【選択図】図１Ｂ
2012165361.tif 000002
【特許請求の範囲】
【請求項１】
データ処理命令に応答して少なくとも１つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、
前記データ処理装置内の経路上に位置する遅延ユニットであって、前記経路上の信号の伝搬に遅延を適用するように構成される遅延ユニットを備え、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成し、
前記データ処理装置は、所定の時点において前記データ処理動作の結果を決定するように構成され、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後でああり、前記遅延ユニットは、前記データ処理動作を実行するための時間に前記遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記遅延ユニットは、前記データ処理命令に応答して、前記遅延を、前記少なくとも１つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるように構成される、
データ処理装置。
【請求項２】
同期して動作するように構成され、前記所定の時間間隔は、クロック間隔である、請求項１に記載のデータ処理装置。
【請求項３】
非同期で動作するように構成され、前記所定の時間間隔は、ハンドシェイクイベント間の間隔である、請求項１に記載のデータ処理装置。
【請求項４】
前記遅延の長さは、ランダム制御ソースを参照して決定される、請求項１に記載のデータ処理装置。
【請求項５】
前記遅延の長さは、決定論的アルゴリズムによって決定される、請求項１に記載のデータ処理装置。
【請求項６】
前記データ処理装置内の少なくとも１つのさらなる経路上に位置する少なくとも１つのさらなる遅延ユニットであって、前記少なくとも１つのさらなる経路上のさらなる信号の伝搬にさらなる遅延を適用するように構成される、少なくとも１つのさらなる遅延ユニットを備え、前記少なくとも１つのさらなる経路上の前記さらなる信号の伝搬は、前記データ処理動作の一部を形成し、
前記さらなる少なくとも１つの遅延ユニットは、前記データ処理動作を実行するための時間に前記さらなる遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記さらなる少なくとも１つの遅延ユニットは、前記さらなる遅延を、前記データ処理動作の以降の実行に対して変化させるように構成される、
請求項１に記載のデータ処理装置。
【請求項７】
前記遅延ユニットおよび前記少なくとも１つのさらなる遅延ユニットは、前記遅延および前記さらなる遅延が互いに異なるように構成される、請求項６に記載のデータ処理装置。
【請求項８】
前記経路は、データ経路であり、前記信号は、前記少なくとも１つのデータ値の少なくとも１つのデータビットを表す、請求項１に記載のデータ処理装置。
【請求項９】
前記少なくとも１つのデータ値は、複数のデータビットを備え、前記信号は、前記複数のデータビットを表す、請求項８に記載のデータ処理装置。
【請求項１０】
前記少なくとも１つのデータ値は、複数のデータビットを備え、前記信号は、前記複数のデータビットのうちの１つのデータビットを表す、請求項８に記載のデータ処理装置。
【請求項１１】
前記経路は、制御経路であり、前記信号は、前記少なくとも１つのデータ値に対して前記データ処理動作を実行するように前記データ処理装置を構成するように構成される制御値を表す、請求項１に記載のデータ処理装置。
【請求項１２】
前記制御値は、前記データ処理動作を実行するように実行ユニットを構成する、請求項１１に記載のデータ処理装置。
【請求項１３】
前記少なくとも１つのデータ値は、前記制御値に依存してデータストアから検索される、請求項１１に記載のデータ処理装置。
【請求項１４】
前記データストアは、レジスタバンクである、請求項１３に記載のデータ処理装置。
【請求項１５】
前記経路は、クロック経路であり、前記信号は、クロック信号を表し、前記データ処理装置は、前記クロック信号を参照して前記データ処理動作を実行するように構成される、請求項１のいずれかに記載のデータ処理装置。
【請求項１６】
前記遅延は、システムレジスタに記憶された値を参照して決定される、請求項１に記載のデータ処理装置。
【請求項１７】
前記システムレジスタに記憶される前記値は、さらなるデータ処理命令によって設定される、請求項１６に記載のデータ処理装置。
【請求項１８】
データ処理命令に応答して少なくとも１つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、
前記データ処理装置内の経路上に位置する遅延手段であって、前記経路上の信号の伝搬に遅延を適用するための遅延手段を備え、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成し、
前記データ処理装置は、所定の時点において前記データ処理動作の結果を決定するように構成され、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後であり、前記遅延手段は、前記データ処理動作を実行するための時間に前記遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記遅延手段は、前記データ処理命令に応答して、前記遅延を、前記少なくとも１つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるように構成される、
データ処理装置。
【請求項１９】
データ処理の方法であって、
データ処理命令に応答して、データ処理装置で少なくとも１つのデータ値に対してデータ処理動作を実行するステップと、
前記データ処理装置内の経路上の信号の伝搬に遅延を適用するステップであって、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成する、適用するステップと、
所定の時点において前記データ処理動作の結果を決定するステップであって、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後であり、前記遅延を適用するステップは、前記データ処理動作を実行するための時間に前記遅延を加えたものが、前記所定の時間間隔未満であるように実行される、決定するステップと、
前記データ処理命令に応答して、前記遅延を、前記少なくとも１つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置の内部動作を外部観察者から隠そうとする、データ処理装置に関する。具体的には、本発明は、外部観察者が、データ処理装置の電力消費を観察することによって、実行されているデータ処理動作を推測することを困難にするように、そのようなデータ処理装置を配設することに関する。
【背景技術】
【０００２】
実行されるデータ処理動作を外部観察者から隠すための措置を取る、データ処理装置を提供することは周知である。例えば、スマートカードの中にあるようなデータ処理装置は、典型的に、電力解析攻撃（ＳＰＡまたはＤＰＡ）が成功し難くなるような方法で構成される。当該の電力解析攻撃の目的は、データ処理装置の電力消費を観察することによって、データ処理装置によって実行されている命令に関する情報、および／またはデータ処理装置によって扱われているデータ値を推測することである。当該の現代の電力解析攻撃は、高度化され得るし、実行されているデータ処理動作に関する情報を推測しようとするために、所与の刺激に応答するデータ処理装置の繰り返し観察、および結果の複雑な統計分析の実行を含むことが周知である。データ処理装置によって扱われているデータ値は、別途暗号化される、例えばスマートカードに記憶された個人情報または金融情報である、慎重に扱うべき情報に関連する場合があるので、しばしば、最も求められる情報である。
【０００３】
電力解析攻撃に対して防御するための１つの手法は、データ処理装置が、実行されている特定のデータ処理動作に関わらず、一定の電力消費を有することを確実にしようとすることである。しかしながら、実際には、電力消費は、実行される命令および扱われるデータ値に依存するので、これを達成することは非常に困難である。
【０００４】
当該の攻撃に対して防御するための代替の手法は、同じデータ処理動作（すなわち、同じ命令および同じデータ値）が実行される度にその電力消費が異なるように、データ処理装置を配設することである。このように電力消費を変動させるための当該のデータ処理装置の実装における種々の技法が周知であるが、これらの技法は、しばしば、（アーキテクチャ的な観点から）比較的に高いレベルであることが強いられ、例えば、データ処理装置が実行しているアルゴリズムの一部としてプログラムされる。これは、そのようなデバイスを組み立てている技術者が、電力解析攻撃に対するその脆弱さについて、データ処理装置の実装の各態様の意味を認識していなければならないことを意味する。
【０００５】
故に、電力解析攻撃に対するその抵抗性がそのアーキテクチャの固有の特徴であり、したがって、そのような攻撃に対する抵抗性をより信頼性のあるものにする、データ処理装置を提供することが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００６】
第１の態様から見ると、本発明は、データ処理命令に応答して少なくとも１つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、該データ処理装置内の経路上に位置する遅延ユニットであって、該経路上の信号の伝搬に遅延を適用するように構成される遅延ユニットを備え、該経路上の該信号の伝搬は、該データ処理動作の一部を形成し、該データ処理装置は、所定の時点において該データ処理動作の結果を決定するように構成され、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延ユニットは、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように構成され、該遅延ユニットは、該データ処理命令に応答して、該遅延が、該少なくとも１つのデータ値に対する該データ処理動作の以降の実行に対して変更されるように構成される、データ処理装置を提供する。
【０００７】
本発明の技法によれば、データ処理装置内の経路には、その経路に沿って伝搬する信号を遅延させるように構成される遅延ユニットが提供され、経路に沿ったこの信号の伝搬は、データ処理命令に応答してデータ処理動作の一部を形成する。ここでのデータ処理命令は、（例えば、アセンブラ言語で書かれた）一連のプログラム命令の一部を形成する命令として理解され得るが、同様に、例えば、状態機械（例えば、配線暗号エンジン）によって提供される制御値一式を表し得ることを理解されたい。
【０００８】
データ処理装置は、所定の時間間隔だけデータ処理動作の開始の後にある（例えば、データ処理動作は、立ち上がりクロックエッジによって開始され、時間間隔は、その立ち上がりクロックエッジと次の立ち下がりクロックエッジとの間の期間である）、所定の時点（例えば、立ち下がりクロックエッジ上）においてデータ処理動作の結果を決定するように構成される。遅延ユニットは、データ処理動作を実行するための時間に遅延を加えたものがこの所定の時間間隔未満であるように、経路に対して遅延を適用するように構成される。例えば、データ処理動作が２つのデータ値の加算であり、データ処理装置内の加算器が、立ち上がりクロックエッジの後にその加算動作を開始するように構成されている場合、データ処理装置は、以降の立ち下がりクロックエッジ上の加算器出力を示す値として、結果値を決定するように構成される。この例示的な状態において、遅延ユニットは、経路に対して遅延を適用するように構成され、よって、加算動作の実行に必要とされる時間および課された遅延の組み合わせは、クロックエッジ間の間隔を超えず、したがって、加算器の出力は、遅延の導入による影響を受けない。
【０００９】
遅延ユニットは、同じデータ処理動作が再度実行された時に、同じデータ処理命令によって開始されて、同じデータ値に対して動作し、遅延を変化させるように、さらに構成される。
【００１０】
所定の時間間隔中に、データ処理装置がデータ処理動作を実行した時のデータ処理装置の電力消費は、典型的に、実行されている特定のデータ処理動作およびその動作が実行されているデータ値の双方の影響を受ける。電力解析攻撃は、この事実に依存し、かつ繰り返し観察に基づいて統計データを収集することによって、動作および／またはデータ値に関する情報を推測することができる場合がある。しかしながら、本発明の技法によれば、データ処理動作で使用される経路のうちの１つに対する遅延の適用が、該データ処理動作と関連する電力消費を変化させることになる。これは、データ処理動作が、実行される動作およびそのデータ処理動作の対象であるデータ値の両方を特定する、データ処理装置内の特定の一組の信号によって構成されているからである。それらの信号のうちの１つを搬送する経路に遅延が適用された場合、データ処理装置の内部状態は、遅延が経過して、遅延信号がその宛先に到達した時に変化する。データ処理装置の内部状態の変化は、その電力消費の変化によって反映され、したがって、遅延の導入は、電力消費の時間プロファイルに影響を及ぼす。
【００１１】
さらに、本発明によるデータ処理装置は、遅延ユニットが、同じデータ処理動作の以降の実行に対して異なる遅延を適用し、したがって、データ処理動作の第１の実行の電力消費特性が、そのデータ処理動作の以降の実行の電力消費とは異なるように構成される。したがって、システムに対する入力刺激が同じままであっても、データ処理装置の内部構成は、データ処理動作の各実行の電力消費が大きく異なるものとなり、したがって、電力解析攻撃をより困難にする。
【００１２】
したがって、本発明の技法によれば、所与のデータ処理動作の実行ごとに変動する遅延が、データ処理装置内の特定の経路に適用され、遅延の長さに関する制約は、データ処理動作に費やされる時間と遅延との合計が、所定の時間間隔未満でなければならないことであり、よって、データ処理動作の結果が決定された時に、その結果は、経路に適用される遅延の影響を受けない。所定の時点および所定の時間間隔の性質は、データ処理装置の種類に応じて異なってもよい。一実施形態において、該データ処理装置は、同期して動作するように構成され、該所定の時間間隔は、クロック間隔である。したがって、そのような同期デバイスにおいて、クロックエッジが同期点を各クロックサイクル上に形成する場合、データ処理装置は、例えば、１つのクロックエッジの後にデータ処理動作があり、次のクロックエッジが発生した場合に、データ処理動作の結果を決定するように構成されてもよい。典型的に、１つの種類のクロックエッジ（例えば、立ち上がりエッジ）が選択されて使用される。この状態において、経路に適用される遅延（その経路上の信号の伝搬は、データ処理動作の一部を形成する）は、データ処理動作を実行するための時間に遅延を加えたものが、選択されたクロックエッジ間の間隔未満であるように制約され、よって、クロック間隔中の遅延の導入にもかかわらず、立ち下がりクロックエッジにおいて決定された結果値は、それでも、遅延の導入による影響を受けない。
【００１３】
代替として、別の実施形態において、該データ処理装置は、非同期で動作するように構成され、該所定の時間間隔は、ハンドシェイクイベント間の間隔である。この実施形態には同じ一般原理を適用する。すなわち、経路上の遅延の導入は、データ処理装置内で付加的な状態変化（または、状態変化が起こった時に、少なくともある変動）を引き起こし、したがって、データ処理動作の実行に関連する電力消費の時間プロファイルの変化を引き起こす。非同期で動作するにもかかわらず、そのようなデータ処理装置は、それでも、装置の非同期構成要素がそれら自体を再調整し、かつ結果値を確実に決定することができる、明確なハンドシェイクイベントを有しなければならない。本発明の技法によれば、課された遅延は、付加的な遅延がハンドシェイクイベント間の間隔中に導入されたにもかかわらず、以降のハンドシェイクイベントで決定される結果値が影響を受けないように制約される。
【００１４】
遅延の長さに対する前述の制約に加えて、任意の所与の反復に適用される特定の遅延は、多数の方法で決定されてもよい。一実施形態において、遅延の長さは、ランダム制御ソースを参照して決定される。故に、遅延の長さはランダム化することができ、特定のデータ処理動作と関連する電力消費をさらに難読化するのを補助する。ランダム制御ソースは、当然、データ処理装置内に提供されてもよく、または、同様に、このランダム情報のソースは、データ処理装置の外部にあってもよい。
【００１５】
別の実施形態において、該遅延の長さは、決定論的アルゴリズムによって決定される。例えば、多少複雑であるが、それでも決定論的であり、それにもかかわらずデータ処理動作と関連する電力消費をさらに難読化するのに十分である様態で、反復する度に遅延の変化を引き起こす、アルゴリズムを提供してもよい。
【００１６】
データ処理装置内の１つの経路上に１つの遅延ユニットしか位置しない場合があるが、いくつかの実施形態において、該データ処理装置は、該データ処理装置内の少なくとも１つのさらなる経路上に位置する少なくとも１つのさらなる遅延ユニットであって、該少なくとも１つのさらなる経路上のさらなる信号の伝搬にさらなる遅延を適用するように構成される、少なくとも１つのさらなる遅延ユニットを備え、該少なくとも１つのさらなる経路上の該さらなる信号の伝搬は、該データ処理動作の一部を形成し、該さらなる少なくとも１つの遅延ユニットは、該データ処理動作を実行するための時間に該さらなる遅延を加えたものが該所定の時間間隔未満であるように構成され、該さらなる少なくとも１つの遅延ユニットは、該さらなる遅延を、該データ処理動作の以降の実行に対して変化させるように構成される。
【００１７】
故に、データ処理装置の中のさらなる経路には、それぞれが前述した様態で動作するように構成される遅延ユニットが提供されてもよい。そのようなさらなる遅延ユニットの提供は、データ処理装置内のさらなる状態変化を、所定の時間間隔内で起こすことができ、したがって、データ処理動作の実行に関連するデータ処理装置の時間ベースの電力消費プロファイルのさらなる歪みを起こすことができることを意味する。そのような遅延ユニットがより多く提供されるほど、データ処理動作の電力消費特性がより大きく変化することを認識されるであろう。さらに、各遅延ユニットが、データ処理動作の以降の実行に対して遅延を変化させるように構成されるとすれば、その電力消費シグネチャに基づいて特定のデータ処理動作を識別することがますます困難になる。
【００１８】
さらに、そのような実施形態の複数の遅延ユニットは、各反復に対して同じ遅延を適用するように構成され得るが、一実施形態において、該遅延ユニットおよび該少なくとも１つのさらなる遅延ユニットは、該遅延および該さらなる遅延が互いに異なるように構成される。したがって、遅延ユニットのうちのいくつか、またはそれらの全てでさえ、異なる遅延を有し得、データ処理動作の各反復に対する電力シグネチャにさらなる変化を加える。
【００１９】
経路は、様々な形態を取ることができる。一実施形態において、該経路はデータ経路であり、該信号は、該少なくとも１つのデータ値の少なくとも１つのデータビットを表す。したがって、少なくとも１つのデータ値の少なくとも１つのデータビットが、（例えば、新しい入力データ値が、実行ユニットの中に読み込まれる時に）変化する場合、このデータ経路上の遅延の導入は、その入力値を２度変化させることになり、データ処理装置の電力消費の関連する変化を伴う。
【００２０】
遅延は、複数のデータビットに適用することができ、一実施形態において、該少なくとも１つのデータ値は、複数のデータビットを備え、該信号は、該複数のデータビットを表すことを理解されるであろう。代替として、遅延は、唯一のデータビットに適用することができ、一実施形態において、該少なくとも１つのデータ値は、複数のデータビットを備え、該信号は、該複数のデータビットのうちの１つのデータビットを表す。
【００２１】
他の実施形態において、該経路は、制御経路であり、該信号は、該少なくとも１つのデータ値に対して該データ処理動作を実行するように該データ処理装置を構成するように構成される制御値を表す。したがって、そのような制御経路に対する遅延の適用は、所定の時間間隔中に、データ処理装置の構成信号の変化を引き起こし、したがって、電力消費に変化を引き起こす。
【００２２】
制御値によるデータ処理装置の構成は、多数の方法で起こり得るが、一実施形態において、該制御値は、該データ処理動作を実行するように実行ユニットを構成する。例えば、実行ユニットは、多数の周知のデータ処理動作（追加、乗算、シフト等）を実行するように構成することができ、特定の動作は、１つ以上のそのような制御値によって決定される。
【００２３】
代替として、制御値は、データ処理動作に使用されるデータ値を決定することができ、一実施形態において、該少なくとも１つのデータ値は、該制御値に依存してデータストアから検索される。例えば、制御値は、データストアにおけるアドレス指定の一部を形成することができる。一実施形態において、このデータストアは、レジスタバンクである。
【００２４】
さらに別の代替として、該経路は、クロック経路であり、該信号は、クロック信号を表し、該データ処理装置は、該クロック信号を参照して該データ処理動作を実行するように構成される。データ処理装置の副構成要素の編成は、クロック信号に依存することになり、したがって、遅延を副構成要素のうちの１つの中の経路に適用することによって、装置の内部調整に影響を及ぼし、また、その電力消費シグネチャを変化させることを認識されるであろう。
【００２５】
いくつかの実施形態において、プログラム可能な遅延の構成を可能にするように、システムレジスタが提供されてもよく、一実施形態において、該遅延は、システムレジスタに記憶された値を参照して決定される。一実施形態において、該システムレジスタに記憶される該値は、さらなるデータ処理命令によって設定される。
【００２６】
第２の態様から概観すると、本発明は、データ処理命令に応答して少なくとも１つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、該データ処理装置内の経路上に位置する遅延手段であって、該経路上の信号の伝搬に遅延を適用するための遅延手段を備え、該経路上の該信号の伝搬は、該データ処理動作の一部を形成し、該データ処理装置は、所定の時点において該データ処理動作の結果を決定するように構成され、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延手段は、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように構成され、該遅延手段は、該データ処理命令に応答して、該遅延を、該少なくとも１つのデータ値に対する該データ処理動作の以降の実行に対して変化させるように構成される、データ処理装置を提供する。
【００２７】
第３の態様から概観すると、本発明は、データ処理命令に応答して、データ処理装置で少なくとも１つのデータ値に対してデータ処理動作を実行するステップと、該データ処理装置内の経路上の信号の伝搬に遅延を適用するステップであって、該経路上の該信号の伝搬は、該データ処理動作の一部を形成する、適用するステップと、所定の時点において該データ処理動作の結果を決定するステップであって、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延を適用するステップは、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように実行される、決定するステップと、該データ処理命令に応答して、該遅延を、該少なくとも１つのデータ値に対する該データ処理動作の以降の実行に対して変化させるステップとを含む、データ処理の方法を提供する。
【図面の簡単な説明】
【００２８】
【図１Ａ】一実施形態によるデータ処理装置の概観を概略的に示す図である。
【図１Ｂ】図１Ａに示される装置におけるいくつかの信号の相対的タイミングを例示す図である。
【図１Ｃ】例示的な関連する電力消費シグネチャを示す図である。
【図２Ａ】別の実施形態によるデータ処理装置を概略的に示す図である。
【図２Ｂ】図２Ａの装置と関連する信号タイミングおよび電力消費線図である。
【図２Ｃ】図２Ａの装置と関連する信号タイミングおよび電力消費線図である。
【図３Ａ】遅延が制御信号に適用される、例示的実施形態を示す図である。
【図３Ｂ】遅延が制御信号に適用される、例示的実施形態を示す図である。
【図４Ａ】遅延がクロック信号に適用される実施形態によるデータ処理装置を概略的に示す図である。
【図４Ｂ】システムレジスタの内容に依存して制御されている遅延ユニットの構成を概略的に示す図である。
【図５】一実施形態のデータ処理装置によって行われる一連のステップを概略的に示す図である。
【図６】非同期実施形態のタイミングを概略的に示す図である。
【発明を実施するための形態】
【００２９】
以下、例を使い、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。
【００３０】
図１は、実行ユニット２０に接続されるレジスタバンク１０を概略的に示す。レジスタバンク１０および実行ユニット２０は、データ処理装置の一部を形成し、そのさらなる詳細は、図示を明確にするため省略する。実行ユニット２０は、多数の異なるデータ処理動作を実行するように構成可能な多目的デバイスであり得、または専用のデータ処理デバイス（ＡＬＵ、乗算器、シフタ等）であり得る。実行ユニット２０は、レジスタバンク１０から検索されたデータ値を受け取り、それらのデータ値に対してデータ処理動作を実行して、結果値を生成するように構成される。示される実施例において、レジスタバンク１０から実行ユニット２０にデータ値ＡおよびＢがそこに沿って渡される経路には、それぞれ、遅延制御（図示せず）によって制御される遅延ユニットが提供される。これらの遅延ユニット３０，４０は、それらが遅延制御から受け取る信号に依存して、遅延をそれらのそれぞれの経路に提供するように構成される。これらの遅延ユニットの効果を、図１Ｂに示されるタイミング図にさらに詳細に示す。
【００３１】
図１Ｂは、実行ユニット２０が、データ値ＡおよびＢをともに加える加算器として構成された時の、図１Ａに示されるようなデータ処理装置の中の種々の信号の相対的タイミングを概略的に示す。図１Ｂで分かるように、最初に、実行ユニットに提供されているＡデータは、０ｘ００００である一方で、実行ユニット２０に提供されているＢデータは、０ｘ０００１である。この時、加算器出力は、０ｘ０００１である。立ち上がりクロックエッジの後、レジスタバンク１０は、ＡおよびＢの新しい値、すなわち、それぞれ０ｘＦＦＦＦおよび０ｘ００００を実行ユニット２０に渡すように構成される。しかしながら、図１Ｂは、遅延ユニット４０によって遅延がＢ経路に適用される状態を概略的に示す。図１Ｂに示される実施例において、遅延は、Ａ経路には適用されない。したがって、立ち上がりクロックエッジの後、実行ユニット２０が受け取ったＡデータがすぐに０ｘＦＦＦＦに変化する一方で、実行ユニットがＢ系路上の新しいＢデータ０ｘ００００を受け取るまでには遅延がある。この結果、最初に加算器出力が０ｘ０００１から０ｘ００００に遷移し、次いで、その後すぐに、遅延Ｂデータが０ｘＦＦＦＦに変化する。加算器出力の中の連続した３つの遷移のうちの２つのシーケンスは、信号が加算器を通して伝搬する間、加算器出力（結果値）が不確定である、短い期間を表す。加算器出力のこれらの変化は、電力消費（図１Ｃを参照）の関連する変化によって認識することができる。
【００３２】
図示を明確にするため、図１Ｂおよび図１Ｃに表される実施例では、１つの遅延だけがＢ値に全般的に適用され、Ａ値はそのままである。複数の遅延を複数のデータ経路に適用する、やや複雑な実施例を図２Ａ〜図２Ｃに概略的に示す。また、図１Ｂに示される実施例において、関連するクロック間隔（データ処理動作の開始から、データ処理動作の結果の決定まで）は、立ち上がりクロックエッジから、その後の立ち下がりクロックエッジまでとして示される。しかしながら、別の典型的な実装は、開始および終了の間隔を画定するために、同じクロックエッジ（例えば、立ち上がりクロックエッジ）を使用する。
【００３３】
図２Ａは、図１Ａに示されるものと同様の配設を概略的に示す。ここで、レジスタバンク５０は、データ値をＡＬＵ６０に提供し、ＡＬＵ６０は、該データ値に依存して結果値を生成する。示されるように、データ値ＡおよびＢは、レジスタバンク５０からＡＬＵ６０に渡される。データ値Ａは４ビット値であり、データ値Ａのそれぞれは別々のデータ経路上に提供される。遅延ユニット７０は、これらのデータ経路の全域に位置し、かつ各経路上の個々の遅延を提供するように制御可能である、４つの個々の遅延バッファを備える。遅延ユニット７０は、ランダムタイミングソース９０を参照して遅延バッファのそれぞれに対する遅延を生成する、遅延制御８０によって制御される。
【００３４】
図２Ａに示される配設の効果を、図２Ｂのタイミング図に示す。ここで、立ち上がりクロックエッジの後、ＡＬＵ６０に進入するＡデータの４つのビットが、それぞれ異なる時間に到達することが分かる。これは、ランダム化された遅延が、遅延ユニット７０内の遅延バッファのそれぞれに適用されることによって生じる。全体として、加算器出力の結果値に対するこの配設の効果は、Ａデータの第１のビットが変化してから（Ａ’［０］）、Ａデータの最終ビットが移行した後まで（Ａ’［１］）、加算器出力が決定論的な状態を取らないことである。したがって、図２Ｃに示されるように、ＡＬＵ６０によってデータ値ＡおよびＢに対して実行されるデータ動作と関連する、継続的で複雑な電力消費シグネチャがある。さらに、図２Ａに示されるデータ処理装置が、同じデータ処理動作を実行するように設定された（すなわち、データ処理命令が、同じ入力データ値に対して同じ動作を実行するようにＡＬＵ６０を構成する）場合、遅延ユニット６０の中の遅延バッファに適用されたランダム化された遅延が変化して、電力消費シグネチャを変えるので、このデータ処理動作の観察される電力消費は、同じにはならない。
【００３５】
図３Ａは、種類の異なる経路に遅延がどのように適用され得るのかを概略的に示す。ここで、レジスタバンク１００は、ここでも、実行ユニット１１０によるデータ処理動作を受ける入力データ値を提供する。レジスタバンク１００から出力されるように選択されたデータ値は、レジスタ制御１０５によって制御される。実行ユニット１１０は、種々のデータ処理動作を実行することができ、任意の時に実行される特定の動作は、常に実行制御１１５によって構成される。図３Ａに示されるように、一組の遅延ユニット１２０が、実行制御ユニット１１５を実行ユニット１１０に接続する、経路上に位置する。遅延ユニット１２０は、遅延制御１２５によって構成される遅延を、実行制御ユニット１１５から実行ユニット１１０に渡される制御信号に提供するように構成される。したがって、実行ユニット１１０の動作を構成する制御信号に遅延ユニット１２０によって適用される１つまたは複数の遅延は、実行ユニット１１０に、実行制御ユニット１１５によって命令される構成状態に設定される前の、少なくとも１つの中間構成状態を通しての遷移を引き起こす。したがって、（データ値の経路も、図１Ａ〜図１Ｃおよび図２Ａ〜図２Ｃを参照して論じたような構成であり得るが）実行ユニット１１０に入力される一定のデータ値についても、実行ユニット１１０の構成を変化させることで、データ処理装置の電力消費シグネチャを変化させ、したがって、実行ユニット１１０によって実行されている真のデータ動作を難読化する。さらに、実行ユニット１１０が同じデータ処理動作（同じ命令、同じ入力値）を繰り返す場合であっても、遅延ユニット１２０によって適用される新しい遅延は、関連する電力消費シグネチャを変化させる。
【００３６】
図３Ｂは、遅延ユニットが、データ処理装置の中の制御信号を搬送する経路に適用され得る別の方法を、概略的に示す。ここで、レジスタバンク１００から実行ユニット１１０に渡されるデータ値は、レジスタバンク１００に渡すレジスタ選択信号を使用して、レジスタ制御ユニット１０５によって決定される。図３Ｂに示されるように、遅延制御１３５によって制御される一組の遅延ユニット１３０は、レジスタ制御１０５とレジスタバンク１００との間のマルチビットレジスタ選択信号経路上に位置している。これらの遅延ユニットの効果は、レジスタバンク１００が受け取るレジスタ選択信号を一時的に変化させることである。これは、実行１１０によって受け取る入力値を変化させ、したがって、電力消費信号を変化させる効果を有する。
【００３７】
図４Ａは、遅延ユニットをデータ処理装置内の経路に適用することができる（前述した経路遅延の他の様式と組み合わせる場合もある）さらなる方法を概略的に示す。ここで、遅延が適用される経路は、クロック信号を搬送する。クロック信号を遅延させる第１の態様を図４Ａの左側に示し、図中、ベクタ１４０は、レジスタバンク１５０に渡される。ベクタ１４０は、４ビット値であり、各ビットは、レジスタバンク１５０への途中で、フリップフロップ１４２，１４４，１４６，１４８によって一時的にバッファリングされる。フリップフロップ１４２〜１４８は、通常、共通クロック信号を共有する場合があるが、ここでは、一組の遅延ユニット１５５が、フリップフロップのそれぞれについて１つの、４つのクロック信号ＣＬＫ０−３を生成する。遅延をクロック信号に適用する第２の態様を、図４Ａの右側に示し、図中、実行ユニット１６０は、クロック信号ＣＬＫ［０：Ｎ］に依存して動作するように構成される。これらのクロック信号は、単一の元のクロック信号ＣＬＫから遅延ユニット１６５によって生成される。双方の実施例において、異なるクロック信号システムの異なる副構成要素に提供することは、ここでも前述のように、電力消費シグネチャの変動を引き起こす。さらに、これらのクロック信号の変動は、同じデータ処理動作が実行される度に変化し、電力解析攻撃をかなり困難にする。
【００３８】
前述の実施形態の遅延ユニットの構成は、遅延制御ユニットによって実行されてもよく、いくつかの実施形態では、システムプログラマが遅延ユニットをどのように動作させるのかといった態様を構成することができるように、システムレジスタとして構成されてもよい。図４Ｂは、システムレジスタに依存して制御されている８ビットＡデータ信号上の遅延ユニットの制御を概略的に示す。代替として、遅延制御ユニットは、反復する度に遅延を変化させるように、決定論的アルゴリズムによってプログラムされてもよい。
【００３９】
図５は、一実施形態によるデータ処理装置に取り入れられる一連のステップを概略的に示す。フローは、新しいデータ処理命令を受け取る、ステップ２００から始まる。ステップ２０５で、データ処理装置は、必然的なデータ処理動作を実行するために、データ処理命令に依存して構成される。ステップ２１０で、データ処理装置の一部を形成する経路上の遅延ユニットは、ステップ２１５で信号がデータ処理動作の一部を介して伝搬する前に、ランダム化された遅延を伴って構成される。遅延が適用されている特定の種類の経路に依存して、ステップ２０５および２１０が同時に行われると考えられ得ること、またはステップ２０５に先行してステップ２１０が行われることもあり得ることを理解されるであろう。ステップ２２０で、データ処理動作が終了し、フローは、ステップ２００に戻る。次のデータ処理命令が同じであり、かつ同じデータ値に対して動作される場合であっても、経路に適用されるランダム化された遅延（ステップ２１０）は、このデータ処理動作に起因する電力消費が異なることを意味する。
【００４０】
図６は、データ処理装置が非同期デバイスである実施形態の、相対的タイミングを概略的に示す。したがって、システムの副構成要素は、それらの間に時間の制約を伴わずに、それらの動作の種々の態様を自由に実行し、必要に応じて副構成要素の定期的な再調整を伴う。これらの定期的な再調整が起こる地点は、ハンドシェイクイベントとして周知である。したがって、本発明の概念はまた、そのような非同期デバイスにも適用することができ、データ処理動作は、第１のハンドシェイクイベントの後に始まり、そのデータ処理動作の結果は、以降のハンドシェイクイベントでしか有意ではない。其の間に、種々の同期実施形態という状況で前述したものと同様に、これらの遅延の適用が、次のハンドシェイクイベントを超える有効なデータ処理期間の延長を引き起こさないのであれば、デバイスの電力シグネチャを歪ませるように、１つ以上の遅延をデバイスの中の１つ以上の経路に適用することができる。
【００４１】
特定の実施形態を本明細書で説明してきたが、本発明は、それに限定されるものではなく、その実施形態への多くの変更および追加が本発明の範囲内で行われる場合があることが認識されるであろう。例えば、本発明の範囲を逸脱しない範囲で、添付の特許請求の範囲に含まれる従属請求項の特徴の、独立請求項の特徴との種々の組み合わせを行うことができる。
【符号の説明】
【００４２】
１０，５０，１００，１５０  レジスタバンク
２０，６０，１１０，１６０  実行ユニット
３０，４０，７０，１２０，１３０，１５５，１６５  遅延ユニット
８０，１２５，１３５  遅延制御
９０  ランダムタイミングソース
１０５  レジスタ制御
１１５  実行制御
１４０  ベクタ
１４２，１４４，１４６，１４８  フリップフロップ
【図１Ａ】
2012165361.tif 000003
【図１Ｂ】
2012165361.tif 000004
【図１Ｃ】
2012165361.tif 000005
【図２Ａ】
2012165361.tif 000006
【図２Ｂ】
2012165361.tif 000007
【図２Ｃ】
2012165361.tif 000008
【図３Ａ】
2012165361.tif 000009
【図３Ｂ】
2012165361.tif 000010
【図４Ａ】
2012165361.tif 000011
【図４Ｂ】
2012165361.tif 000012
【図５】
2012165361.tif 000013
【図６】
2012165361.tif 000014
【外国語明細書】
2012165361.tif 000015
2012165361.tif 000016
2012165361.tif 000017
2012165361.tif 000018
2012165361.tif 000019
2012165361.tif 000020
2012165361.tif 000021
2012165361.tif 000022
2012165361.tif 000023
2012165361.tif 000024
2012165361.tif 000025
2012165361.tif 000026
2012165361.tif 000027
2012165361.tif 000028
2012165361.tif 000029
2012165361.tif 000030
2012165361.tif 000031
2012165361.tif 000032
2012165361.tif 000033
2012165361.tif 000034
2012165361.tif 000035
2012165361.tif 000036
2012165361.tif 000037
2012165361.tif 000038
2012165361.tif 000039