電力シグネチャの難読化
【課題】データ処理装置の処理内容を推測することを困難にする。
【解決手段】データ処理装置は、データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成される。データ処理装置は、自身の経路上に遅延ユニットを備え、遅延ユニットは、経路上の信号の伝搬に遅延を適用するように構成される。信号の伝搬は、データ処理動作の一部を形成する。データ処理装置は、所定の時点においてデータ処理動作の結果を決定するように構成され、所定の時点は、データ処理動作の開始から所定の時間間隔だけ後であり、遅延ユニットは、データ処理動作を実行するための時間に遅延を加えたものが所定の時間間隔未満であるように構成される。さらに、遅延ユニットは、データ処理命令に応答して、適用される遅延を少なくとも1つのデータ値に対するデータ処理動作の以降の実行に対して変化させるように構成される。
【解決手段】データ処理装置は、データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成される。データ処理装置は、自身の経路上に遅延ユニットを備え、遅延ユニットは、経路上の信号の伝搬に遅延を適用するように構成される。信号の伝搬は、データ処理動作の一部を形成する。データ処理装置は、所定の時点においてデータ処理動作の結果を決定するように構成され、所定の時点は、データ処理動作の開始から所定の時間間隔だけ後であり、遅延ユニットは、データ処理動作を実行するための時間に遅延を加えたものが所定の時間間隔未満であるように構成される。さらに、遅延ユニットは、データ処理命令に応答して、適用される遅延を少なくとも1つのデータ値に対するデータ処理動作の以降の実行に対して変化させるように構成される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置の内部動作を外部観察者から隠そうとする、データ処理装置に関する。具体的には、本発明は、外部観察者が、データ処理装置の電力消費を観察することによって、実行されているデータ処理動作を推測することを困難にするように、そのようなデータ処理装置を配設することに関する。
【背景技術】
【0002】
実行されるデータ処理動作を外部観察者から隠すための措置を取る、データ処理装置を提供することは周知である。例えば、スマートカードの中にあるようなデータ処理装置は、典型的に、電力解析攻撃(SPAまたはDPA)が成功し難くなるような方法で構成される。当該の電力解析攻撃の目的は、データ処理装置の電力消費を観察することによって、データ処理装置によって実行されている命令に関する情報、および/またはデータ処理装置によって扱われているデータ値を推測することである。当該の現代の電力解析攻撃は、高度化され得るし、実行されているデータ処理動作に関する情報を推測しようとするために、所与の刺激に応答するデータ処理装置の繰り返し観察、および結果の複雑な統計分析の実行を含むことが周知である。データ処理装置によって扱われているデータ値は、別途暗号化される、例えばスマートカードに記憶された個人情報または金融情報である、慎重に扱うべき情報に関連する場合があるので、しばしば、最も求められる情報である。
【0003】
電力解析攻撃に対して防御するための1つの手法は、データ処理装置が、実行されている特定のデータ処理動作に関わらず、一定の電力消費を有することを確実にしようとすることである。しかしながら、実際には、電力消費は、実行される命令および扱われるデータ値に依存するので、これを達成することは非常に困難である。
【0004】
当該の攻撃に対して防御するための代替の手法は、同じデータ処理動作(すなわち、同じ命令および同じデータ値)が実行される度にその電力消費が異なるように、データ処理装置を配設することである。このように電力消費を変動させるための当該のデータ処理装置の実装における種々の技法が周知であるが、これらの技法は、しばしば、(アーキテクチャ的な観点から)比較的に高いレベルであることが強いられ、例えば、データ処理装置が実行しているアルゴリズムの一部としてプログラムされる。これは、そのようなデバイスを組み立てている技術者が、電力解析攻撃に対するその脆弱さについて、データ処理装置の実装の各態様の意味を認識していなければならないことを意味する。
【0005】
故に、電力解析攻撃に対するその抵抗性がそのアーキテクチャの固有の特徴であり、したがって、そのような攻撃に対する抵抗性をより信頼性のあるものにする、データ処理装置を提供することが望ましい。
【発明の概要】
【課題を解決するための手段】
【0006】
第1の態様から見ると、本発明は、データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、該データ処理装置内の経路上に位置する遅延ユニットであって、該経路上の信号の伝搬に遅延を適用するように構成される遅延ユニットを備え、該経路上の該信号の伝搬は、該データ処理動作の一部を形成し、該データ処理装置は、所定の時点において該データ処理動作の結果を決定するように構成され、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延ユニットは、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように構成され、該遅延ユニットは、該データ処理命令に応答して、該遅延が、該少なくとも1つのデータ値に対する該データ処理動作の以降の実行に対して変更されるように構成される、データ処理装置を提供する。
【0007】
本発明の技法によれば、データ処理装置内の経路には、その経路に沿って伝搬する信号を遅延させるように構成される遅延ユニットが提供され、経路に沿ったこの信号の伝搬は、データ処理命令に応答してデータ処理動作の一部を形成する。ここでのデータ処理命令は、(例えば、アセンブラ言語で書かれた)一連のプログラム命令の一部を形成する命令として理解され得るが、同様に、例えば、状態機械(例えば、配線暗号エンジン)によって提供される制御値一式を表し得ることを理解されたい。
【0008】
データ処理装置は、所定の時間間隔だけデータ処理動作の開始の後にある(例えば、データ処理動作は、立ち上がりクロックエッジによって開始され、時間間隔は、その立ち上がりクロックエッジと次の立ち下がりクロックエッジとの間の期間である)、所定の時点(例えば、立ち下がりクロックエッジ上)においてデータ処理動作の結果を決定するように構成される。遅延ユニットは、データ処理動作を実行するための時間に遅延を加えたものがこの所定の時間間隔未満であるように、経路に対して遅延を適用するように構成される。例えば、データ処理動作が2つのデータ値の加算であり、データ処理装置内の加算器が、立ち上がりクロックエッジの後にその加算動作を開始するように構成されている場合、データ処理装置は、以降の立ち下がりクロックエッジ上の加算器出力を示す値として、結果値を決定するように構成される。この例示的な状態において、遅延ユニットは、経路に対して遅延を適用するように構成され、よって、加算動作の実行に必要とされる時間および課された遅延の組み合わせは、クロックエッジ間の間隔を超えず、したがって、加算器の出力は、遅延の導入による影響を受けない。
【0009】
遅延ユニットは、同じデータ処理動作が再度実行された時に、同じデータ処理命令によって開始されて、同じデータ値に対して動作し、遅延を変化させるように、さらに構成される。
【0010】
所定の時間間隔中に、データ処理装置がデータ処理動作を実行した時のデータ処理装置の電力消費は、典型的に、実行されている特定のデータ処理動作およびその動作が実行されているデータ値の双方の影響を受ける。電力解析攻撃は、この事実に依存し、かつ繰り返し観察に基づいて統計データを収集することによって、動作および/またはデータ値に関する情報を推測することができる場合がある。しかしながら、本発明の技法によれば、データ処理動作で使用される経路のうちの1つに対する遅延の適用が、該データ処理動作と関連する電力消費を変化させることになる。これは、データ処理動作が、実行される動作およびそのデータ処理動作の対象であるデータ値の両方を特定する、データ処理装置内の特定の一組の信号によって構成されているからである。それらの信号のうちの1つを搬送する経路に遅延が適用された場合、データ処理装置の内部状態は、遅延が経過して、遅延信号がその宛先に到達した時に変化する。データ処理装置の内部状態の変化は、その電力消費の変化によって反映され、したがって、遅延の導入は、電力消費の時間プロファイルに影響を及ぼす。
【0011】
さらに、本発明によるデータ処理装置は、遅延ユニットが、同じデータ処理動作の以降の実行に対して異なる遅延を適用し、したがって、データ処理動作の第1の実行の電力消費特性が、そのデータ処理動作の以降の実行の電力消費とは異なるように構成される。したがって、システムに対する入力刺激が同じままであっても、データ処理装置の内部構成は、データ処理動作の各実行の電力消費が大きく異なるものとなり、したがって、電力解析攻撃をより困難にする。
【0012】
したがって、本発明の技法によれば、所与のデータ処理動作の実行ごとに変動する遅延が、データ処理装置内の特定の経路に適用され、遅延の長さに関する制約は、データ処理動作に費やされる時間と遅延との合計が、所定の時間間隔未満でなければならないことであり、よって、データ処理動作の結果が決定された時に、その結果は、経路に適用される遅延の影響を受けない。所定の時点および所定の時間間隔の性質は、データ処理装置の種類に応じて異なってもよい。一実施形態において、該データ処理装置は、同期して動作するように構成され、該所定の時間間隔は、クロック間隔である。したがって、そのような同期デバイスにおいて、クロックエッジが同期点を各クロックサイクル上に形成する場合、データ処理装置は、例えば、1つのクロックエッジの後にデータ処理動作があり、次のクロックエッジが発生した場合に、データ処理動作の結果を決定するように構成されてもよい。典型的に、1つの種類のクロックエッジ(例えば、立ち上がりエッジ)が選択されて使用される。この状態において、経路に適用される遅延(その経路上の信号の伝搬は、データ処理動作の一部を形成する)は、データ処理動作を実行するための時間に遅延を加えたものが、選択されたクロックエッジ間の間隔未満であるように制約され、よって、クロック間隔中の遅延の導入にもかかわらず、立ち下がりクロックエッジにおいて決定された結果値は、それでも、遅延の導入による影響を受けない。
【0013】
代替として、別の実施形態において、該データ処理装置は、非同期で動作するように構成され、該所定の時間間隔は、ハンドシェイクイベント間の間隔である。この実施形態には同じ一般原理を適用する。すなわち、経路上の遅延の導入は、データ処理装置内で付加的な状態変化(または、状態変化が起こった時に、少なくともある変動)を引き起こし、したがって、データ処理動作の実行に関連する電力消費の時間プロファイルの変化を引き起こす。非同期で動作するにもかかわらず、そのようなデータ処理装置は、それでも、装置の非同期構成要素がそれら自体を再調整し、かつ結果値を確実に決定することができる、明確なハンドシェイクイベントを有しなければならない。本発明の技法によれば、課された遅延は、付加的な遅延がハンドシェイクイベント間の間隔中に導入されたにもかかわらず、以降のハンドシェイクイベントで決定される結果値が影響を受けないように制約される。
【0014】
遅延の長さに対する前述の制約に加えて、任意の所与の反復に適用される特定の遅延は、多数の方法で決定されてもよい。一実施形態において、遅延の長さは、ランダム制御ソースを参照して決定される。故に、遅延の長さはランダム化することができ、特定のデータ処理動作と関連する電力消費をさらに難読化するのを補助する。ランダム制御ソースは、当然、データ処理装置内に提供されてもよく、または、同様に、このランダム情報のソースは、データ処理装置の外部にあってもよい。
【0015】
別の実施形態において、該遅延の長さは、決定論的アルゴリズムによって決定される。例えば、多少複雑であるが、それでも決定論的であり、それにもかかわらずデータ処理動作と関連する電力消費をさらに難読化するのに十分である様態で、反復する度に遅延の変化を引き起こす、アルゴリズムを提供してもよい。
【0016】
データ処理装置内の1つの経路上に1つの遅延ユニットしか位置しない場合があるが、いくつかの実施形態において、該データ処理装置は、該データ処理装置内の少なくとも1つのさらなる経路上に位置する少なくとも1つのさらなる遅延ユニットであって、該少なくとも1つのさらなる経路上のさらなる信号の伝搬にさらなる遅延を適用するように構成される、少なくとも1つのさらなる遅延ユニットを備え、該少なくとも1つのさらなる経路上の該さらなる信号の伝搬は、該データ処理動作の一部を形成し、該さらなる少なくとも1つの遅延ユニットは、該データ処理動作を実行するための時間に該さらなる遅延を加えたものが該所定の時間間隔未満であるように構成され、該さらなる少なくとも1つの遅延ユニットは、該さらなる遅延を、該データ処理動作の以降の実行に対して変化させるように構成される。
【0017】
故に、データ処理装置の中のさらなる経路には、それぞれが前述した様態で動作するように構成される遅延ユニットが提供されてもよい。そのようなさらなる遅延ユニットの提供は、データ処理装置内のさらなる状態変化を、所定の時間間隔内で起こすことができ、したがって、データ処理動作の実行に関連するデータ処理装置の時間ベースの電力消費プロファイルのさらなる歪みを起こすことができることを意味する。そのような遅延ユニットがより多く提供されるほど、データ処理動作の電力消費特性がより大きく変化することを認識されるであろう。さらに、各遅延ユニットが、データ処理動作の以降の実行に対して遅延を変化させるように構成されるとすれば、その電力消費シグネチャに基づいて特定のデータ処理動作を識別することがますます困難になる。
【0018】
さらに、そのような実施形態の複数の遅延ユニットは、各反復に対して同じ遅延を適用するように構成され得るが、一実施形態において、該遅延ユニットおよび該少なくとも1つのさらなる遅延ユニットは、該遅延および該さらなる遅延が互いに異なるように構成される。したがって、遅延ユニットのうちのいくつか、またはそれらの全てでさえ、異なる遅延を有し得、データ処理動作の各反復に対する電力シグネチャにさらなる変化を加える。
【0019】
経路は、様々な形態を取ることができる。一実施形態において、該経路はデータ経路であり、該信号は、該少なくとも1つのデータ値の少なくとも1つのデータビットを表す。したがって、少なくとも1つのデータ値の少なくとも1つのデータビットが、(例えば、新しい入力データ値が、実行ユニットの中に読み込まれる時に)変化する場合、このデータ経路上の遅延の導入は、その入力値を2度変化させることになり、データ処理装置の電力消費の関連する変化を伴う。
【0020】
遅延は、複数のデータビットに適用することができ、一実施形態において、該少なくとも1つのデータ値は、複数のデータビットを備え、該信号は、該複数のデータビットを表すことを理解されるであろう。代替として、遅延は、唯一のデータビットに適用することができ、一実施形態において、該少なくとも1つのデータ値は、複数のデータビットを備え、該信号は、該複数のデータビットのうちの1つのデータビットを表す。
【0021】
他の実施形態において、該経路は、制御経路であり、該信号は、該少なくとも1つのデータ値に対して該データ処理動作を実行するように該データ処理装置を構成するように構成される制御値を表す。したがって、そのような制御経路に対する遅延の適用は、所定の時間間隔中に、データ処理装置の構成信号の変化を引き起こし、したがって、電力消費に変化を引き起こす。
【0022】
制御値によるデータ処理装置の構成は、多数の方法で起こり得るが、一実施形態において、該制御値は、該データ処理動作を実行するように実行ユニットを構成する。例えば、実行ユニットは、多数の周知のデータ処理動作(追加、乗算、シフト等)を実行するように構成することができ、特定の動作は、1つ以上のそのような制御値によって決定される。
【0023】
代替として、制御値は、データ処理動作に使用されるデータ値を決定することができ、一実施形態において、該少なくとも1つのデータ値は、該制御値に依存してデータストアから検索される。例えば、制御値は、データストアにおけるアドレス指定の一部を形成することができる。一実施形態において、このデータストアは、レジスタバンクである。
【0024】
さらに別の代替として、該経路は、クロック経路であり、該信号は、クロック信号を表し、該データ処理装置は、該クロック信号を参照して該データ処理動作を実行するように構成される。データ処理装置の副構成要素の編成は、クロック信号に依存することになり、したがって、遅延を副構成要素のうちの1つの中の経路に適用することによって、装置の内部調整に影響を及ぼし、また、その電力消費シグネチャを変化させることを認識されるであろう。
【0025】
いくつかの実施形態において、プログラム可能な遅延の構成を可能にするように、システムレジスタが提供されてもよく、一実施形態において、該遅延は、システムレジスタに記憶された値を参照して決定される。一実施形態において、該システムレジスタに記憶される該値は、さらなるデータ処理命令によって設定される。
【0026】
第2の態様から概観すると、本発明は、データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、該データ処理装置内の経路上に位置する遅延手段であって、該経路上の信号の伝搬に遅延を適用するための遅延手段を備え、該経路上の該信号の伝搬は、該データ処理動作の一部を形成し、該データ処理装置は、所定の時点において該データ処理動作の結果を決定するように構成され、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延手段は、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように構成され、該遅延手段は、該データ処理命令に応答して、該遅延を、該少なくとも1つのデータ値に対する該データ処理動作の以降の実行に対して変化させるように構成される、データ処理装置を提供する。
【0027】
第3の態様から概観すると、本発明は、データ処理命令に応答して、データ処理装置で少なくとも1つのデータ値に対してデータ処理動作を実行するステップと、該データ処理装置内の経路上の信号の伝搬に遅延を適用するステップであって、該経路上の該信号の伝搬は、該データ処理動作の一部を形成する、適用するステップと、所定の時点において該データ処理動作の結果を決定するステップであって、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延を適用するステップは、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように実行される、決定するステップと、該データ処理命令に応答して、該遅延を、該少なくとも1つのデータ値に対する該データ処理動作の以降の実行に対して変化させるステップとを含む、データ処理の方法を提供する。
【図面の簡単な説明】
【0028】
【図1A】一実施形態によるデータ処理装置の概観を概略的に示す図である。
【図1B】図1Aに示される装置におけるいくつかの信号の相対的タイミングを例示す図である。
【図1C】例示的な関連する電力消費シグネチャを示す図である。
【図2A】別の実施形態によるデータ処理装置を概略的に示す図である。
【図2B】図2Aの装置と関連する信号タイミングおよび電力消費線図である。
【図2C】図2Aの装置と関連する信号タイミングおよび電力消費線図である。
【図3A】遅延が制御信号に適用される、例示的実施形態を示す図である。
【図3B】遅延が制御信号に適用される、例示的実施形態を示す図である。
【図4A】遅延がクロック信号に適用される実施形態によるデータ処理装置を概略的に示す図である。
【図4B】システムレジスタの内容に依存して制御されている遅延ユニットの構成を概略的に示す図である。
【図5】一実施形態のデータ処理装置によって行われる一連のステップを概略的に示す図である。
【図6】非同期実施形態のタイミングを概略的に示す図である。
【発明を実施するための形態】
【0029】
以下、例を使い、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。
【0030】
図1は、実行ユニット20に接続されるレジスタバンク10を概略的に示す。レジスタバンク10および実行ユニット20は、データ処理装置の一部を形成し、そのさらなる詳細は、図示を明確にするため省略する。実行ユニット20は、多数の異なるデータ処理動作を実行するように構成可能な多目的デバイスであり得、または専用のデータ処理デバイス(ALU、乗算器、シフタ等)であり得る。実行ユニット20は、レジスタバンク10から検索されたデータ値を受け取り、それらのデータ値に対してデータ処理動作を実行して、結果値を生成するように構成される。示される実施例において、レジスタバンク10から実行ユニット20にデータ値AおよびBがそこに沿って渡される経路には、それぞれ、遅延制御(図示せず)によって制御される遅延ユニットが提供される。これらの遅延ユニット30,40は、それらが遅延制御から受け取る信号に依存して、遅延をそれらのそれぞれの経路に提供するように構成される。これらの遅延ユニットの効果を、図1Bに示されるタイミング図にさらに詳細に示す。
【0031】
図1Bは、実行ユニット20が、データ値AおよびBをともに加える加算器として構成された時の、図1Aに示されるようなデータ処理装置の中の種々の信号の相対的タイミングを概略的に示す。図1Bで分かるように、最初に、実行ユニットに提供されているAデータは、0x0000である一方で、実行ユニット20に提供されているBデータは、0x0001である。この時、加算器出力は、0x0001である。立ち上がりクロックエッジの後、レジスタバンク10は、AおよびBの新しい値、すなわち、それぞれ0xFFFFおよび0x0000を実行ユニット20に渡すように構成される。しかしながら、図1Bは、遅延ユニット40によって遅延がB経路に適用される状態を概略的に示す。図1Bに示される実施例において、遅延は、A経路には適用されない。したがって、立ち上がりクロックエッジの後、実行ユニット20が受け取ったAデータがすぐに0xFFFFに変化する一方で、実行ユニットがB系路上の新しいBデータ0x0000を受け取るまでには遅延がある。この結果、最初に加算器出力が0x0001から0x0000に遷移し、次いで、その後すぐに、遅延Bデータが0xFFFFに変化する。加算器出力の中の連続した3つの遷移のうちの2つのシーケンスは、信号が加算器を通して伝搬する間、加算器出力(結果値)が不確定である、短い期間を表す。加算器出力のこれらの変化は、電力消費(図1Cを参照)の関連する変化によって認識することができる。
【0032】
図示を明確にするため、図1Bおよび図1Cに表される実施例では、1つの遅延だけがB値に全般的に適用され、A値はそのままである。複数の遅延を複数のデータ経路に適用する、やや複雑な実施例を図2A〜図2Cに概略的に示す。また、図1Bに示される実施例において、関連するクロック間隔(データ処理動作の開始から、データ処理動作の結果の決定まで)は、立ち上がりクロックエッジから、その後の立ち下がりクロックエッジまでとして示される。しかしながら、別の典型的な実装は、開始および終了の間隔を画定するために、同じクロックエッジ(例えば、立ち上がりクロックエッジ)を使用する。
【0033】
図2Aは、図1Aに示されるものと同様の配設を概略的に示す。ここで、レジスタバンク50は、データ値をALU60に提供し、ALU60は、該データ値に依存して結果値を生成する。示されるように、データ値AおよびBは、レジスタバンク50からALU60に渡される。データ値Aは4ビット値であり、データ値Aのそれぞれは別々のデータ経路上に提供される。遅延ユニット70は、これらのデータ経路の全域に位置し、かつ各経路上の個々の遅延を提供するように制御可能である、4つの個々の遅延バッファを備える。遅延ユニット70は、ランダムタイミングソース90を参照して遅延バッファのそれぞれに対する遅延を生成する、遅延制御80によって制御される。
【0034】
図2Aに示される配設の効果を、図2Bのタイミング図に示す。ここで、立ち上がりクロックエッジの後、ALU60に進入するAデータの4つのビットが、それぞれ異なる時間に到達することが分かる。これは、ランダム化された遅延が、遅延ユニット70内の遅延バッファのそれぞれに適用されることによって生じる。全体として、加算器出力の結果値に対するこの配設の効果は、Aデータの第1のビットが変化してから(A’[0])、Aデータの最終ビットが移行した後まで(A’[1])、加算器出力が決定論的な状態を取らないことである。したがって、図2Cに示されるように、ALU60によってデータ値AおよびBに対して実行されるデータ動作と関連する、継続的で複雑な電力消費シグネチャがある。さらに、図2Aに示されるデータ処理装置が、同じデータ処理動作を実行するように設定された(すなわち、データ処理命令が、同じ入力データ値に対して同じ動作を実行するようにALU60を構成する)場合、遅延ユニット60の中の遅延バッファに適用されたランダム化された遅延が変化して、電力消費シグネチャを変えるので、このデータ処理動作の観察される電力消費は、同じにはならない。
【0035】
図3Aは、種類の異なる経路に遅延がどのように適用され得るのかを概略的に示す。ここで、レジスタバンク100は、ここでも、実行ユニット110によるデータ処理動作を受ける入力データ値を提供する。レジスタバンク100から出力されるように選択されたデータ値は、レジスタ制御105によって制御される。実行ユニット110は、種々のデータ処理動作を実行することができ、任意の時に実行される特定の動作は、常に実行制御115によって構成される。図3Aに示されるように、一組の遅延ユニット120が、実行制御ユニット115を実行ユニット110に接続する、経路上に位置する。遅延ユニット120は、遅延制御125によって構成される遅延を、実行制御ユニット115から実行ユニット110に渡される制御信号に提供するように構成される。したがって、実行ユニット110の動作を構成する制御信号に遅延ユニット120によって適用される1つまたは複数の遅延は、実行ユニット110に、実行制御ユニット115によって命令される構成状態に設定される前の、少なくとも1つの中間構成状態を通しての遷移を引き起こす。したがって、(データ値の経路も、図1A〜図1Cおよび図2A〜図2Cを参照して論じたような構成であり得るが)実行ユニット110に入力される一定のデータ値についても、実行ユニット110の構成を変化させることで、データ処理装置の電力消費シグネチャを変化させ、したがって、実行ユニット110によって実行されている真のデータ動作を難読化する。さらに、実行ユニット110が同じデータ処理動作(同じ命令、同じ入力値)を繰り返す場合であっても、遅延ユニット120によって適用される新しい遅延は、関連する電力消費シグネチャを変化させる。
【0036】
図3Bは、遅延ユニットが、データ処理装置の中の制御信号を搬送する経路に適用され得る別の方法を、概略的に示す。ここで、レジスタバンク100から実行ユニット110に渡されるデータ値は、レジスタバンク100に渡すレジスタ選択信号を使用して、レジスタ制御ユニット105によって決定される。図3Bに示されるように、遅延制御135によって制御される一組の遅延ユニット130は、レジスタ制御105とレジスタバンク100との間のマルチビットレジスタ選択信号経路上に位置している。これらの遅延ユニットの効果は、レジスタバンク100が受け取るレジスタ選択信号を一時的に変化させることである。これは、実行110によって受け取る入力値を変化させ、したがって、電力消費信号を変化させる効果を有する。
【0037】
図4Aは、遅延ユニットをデータ処理装置内の経路に適用することができる(前述した経路遅延の他の様式と組み合わせる場合もある)さらなる方法を概略的に示す。ここで、遅延が適用される経路は、クロック信号を搬送する。クロック信号を遅延させる第1の態様を図4Aの左側に示し、図中、ベクタ140は、レジスタバンク150に渡される。ベクタ140は、4ビット値であり、各ビットは、レジスタバンク150への途中で、フリップフロップ142,144,146,148によって一時的にバッファリングされる。フリップフロップ142〜148は、通常、共通クロック信号を共有する場合があるが、ここでは、一組の遅延ユニット155が、フリップフロップのそれぞれについて1つの、4つのクロック信号CLK0−3を生成する。遅延をクロック信号に適用する第2の態様を、図4Aの右側に示し、図中、実行ユニット160は、クロック信号CLK[0:N]に依存して動作するように構成される。これらのクロック信号は、単一の元のクロック信号CLKから遅延ユニット165によって生成される。双方の実施例において、異なるクロック信号システムの異なる副構成要素に提供することは、ここでも前述のように、電力消費シグネチャの変動を引き起こす。さらに、これらのクロック信号の変動は、同じデータ処理動作が実行される度に変化し、電力解析攻撃をかなり困難にする。
【0038】
前述の実施形態の遅延ユニットの構成は、遅延制御ユニットによって実行されてもよく、いくつかの実施形態では、システムプログラマが遅延ユニットをどのように動作させるのかといった態様を構成することができるように、システムレジスタとして構成されてもよい。図4Bは、システムレジスタに依存して制御されている8ビットAデータ信号上の遅延ユニットの制御を概略的に示す。代替として、遅延制御ユニットは、反復する度に遅延を変化させるように、決定論的アルゴリズムによってプログラムされてもよい。
【0039】
図5は、一実施形態によるデータ処理装置に取り入れられる一連のステップを概略的に示す。フローは、新しいデータ処理命令を受け取る、ステップ200から始まる。ステップ205で、データ処理装置は、必然的なデータ処理動作を実行するために、データ処理命令に依存して構成される。ステップ210で、データ処理装置の一部を形成する経路上の遅延ユニットは、ステップ215で信号がデータ処理動作の一部を介して伝搬する前に、ランダム化された遅延を伴って構成される。遅延が適用されている特定の種類の経路に依存して、ステップ205および210が同時に行われると考えられ得ること、またはステップ205に先行してステップ210が行われることもあり得ることを理解されるであろう。ステップ220で、データ処理動作が終了し、フローは、ステップ200に戻る。次のデータ処理命令が同じであり、かつ同じデータ値に対して動作される場合であっても、経路に適用されるランダム化された遅延(ステップ210)は、このデータ処理動作に起因する電力消費が異なることを意味する。
【0040】
図6は、データ処理装置が非同期デバイスである実施形態の、相対的タイミングを概略的に示す。したがって、システムの副構成要素は、それらの間に時間の制約を伴わずに、それらの動作の種々の態様を自由に実行し、必要に応じて副構成要素の定期的な再調整を伴う。これらの定期的な再調整が起こる地点は、ハンドシェイクイベントとして周知である。したがって、本発明の概念はまた、そのような非同期デバイスにも適用することができ、データ処理動作は、第1のハンドシェイクイベントの後に始まり、そのデータ処理動作の結果は、以降のハンドシェイクイベントでしか有意ではない。其の間に、種々の同期実施形態という状況で前述したものと同様に、これらの遅延の適用が、次のハンドシェイクイベントを超える有効なデータ処理期間の延長を引き起こさないのであれば、デバイスの電力シグネチャを歪ませるように、1つ以上の遅延をデバイスの中の1つ以上の経路に適用することができる。
【0041】
特定の実施形態を本明細書で説明してきたが、本発明は、それに限定されるものではなく、その実施形態への多くの変更および追加が本発明の範囲内で行われる場合があることが認識されるであろう。例えば、本発明の範囲を逸脱しない範囲で、添付の特許請求の範囲に含まれる従属請求項の特徴の、独立請求項の特徴との種々の組み合わせを行うことができる。
【符号の説明】
【0042】
10,50,100,150 レジスタバンク
20,60,110,160 実行ユニット
30,40,70,120,130,155,165 遅延ユニット
80,125,135 遅延制御
90 ランダムタイミングソース
105 レジスタ制御
115 実行制御
140 ベクタ
142,144,146,148 フリップフロップ
【技術分野】
【0001】
本発明は、データ処理装置の内部動作を外部観察者から隠そうとする、データ処理装置に関する。具体的には、本発明は、外部観察者が、データ処理装置の電力消費を観察することによって、実行されているデータ処理動作を推測することを困難にするように、そのようなデータ処理装置を配設することに関する。
【背景技術】
【0002】
実行されるデータ処理動作を外部観察者から隠すための措置を取る、データ処理装置を提供することは周知である。例えば、スマートカードの中にあるようなデータ処理装置は、典型的に、電力解析攻撃(SPAまたはDPA)が成功し難くなるような方法で構成される。当該の電力解析攻撃の目的は、データ処理装置の電力消費を観察することによって、データ処理装置によって実行されている命令に関する情報、および/またはデータ処理装置によって扱われているデータ値を推測することである。当該の現代の電力解析攻撃は、高度化され得るし、実行されているデータ処理動作に関する情報を推測しようとするために、所与の刺激に応答するデータ処理装置の繰り返し観察、および結果の複雑な統計分析の実行を含むことが周知である。データ処理装置によって扱われているデータ値は、別途暗号化される、例えばスマートカードに記憶された個人情報または金融情報である、慎重に扱うべき情報に関連する場合があるので、しばしば、最も求められる情報である。
【0003】
電力解析攻撃に対して防御するための1つの手法は、データ処理装置が、実行されている特定のデータ処理動作に関わらず、一定の電力消費を有することを確実にしようとすることである。しかしながら、実際には、電力消費は、実行される命令および扱われるデータ値に依存するので、これを達成することは非常に困難である。
【0004】
当該の攻撃に対して防御するための代替の手法は、同じデータ処理動作(すなわち、同じ命令および同じデータ値)が実行される度にその電力消費が異なるように、データ処理装置を配設することである。このように電力消費を変動させるための当該のデータ処理装置の実装における種々の技法が周知であるが、これらの技法は、しばしば、(アーキテクチャ的な観点から)比較的に高いレベルであることが強いられ、例えば、データ処理装置が実行しているアルゴリズムの一部としてプログラムされる。これは、そのようなデバイスを組み立てている技術者が、電力解析攻撃に対するその脆弱さについて、データ処理装置の実装の各態様の意味を認識していなければならないことを意味する。
【0005】
故に、電力解析攻撃に対するその抵抗性がそのアーキテクチャの固有の特徴であり、したがって、そのような攻撃に対する抵抗性をより信頼性のあるものにする、データ処理装置を提供することが望ましい。
【発明の概要】
【課題を解決するための手段】
【0006】
第1の態様から見ると、本発明は、データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、該データ処理装置内の経路上に位置する遅延ユニットであって、該経路上の信号の伝搬に遅延を適用するように構成される遅延ユニットを備え、該経路上の該信号の伝搬は、該データ処理動作の一部を形成し、該データ処理装置は、所定の時点において該データ処理動作の結果を決定するように構成され、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延ユニットは、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように構成され、該遅延ユニットは、該データ処理命令に応答して、該遅延が、該少なくとも1つのデータ値に対する該データ処理動作の以降の実行に対して変更されるように構成される、データ処理装置を提供する。
【0007】
本発明の技法によれば、データ処理装置内の経路には、その経路に沿って伝搬する信号を遅延させるように構成される遅延ユニットが提供され、経路に沿ったこの信号の伝搬は、データ処理命令に応答してデータ処理動作の一部を形成する。ここでのデータ処理命令は、(例えば、アセンブラ言語で書かれた)一連のプログラム命令の一部を形成する命令として理解され得るが、同様に、例えば、状態機械(例えば、配線暗号エンジン)によって提供される制御値一式を表し得ることを理解されたい。
【0008】
データ処理装置は、所定の時間間隔だけデータ処理動作の開始の後にある(例えば、データ処理動作は、立ち上がりクロックエッジによって開始され、時間間隔は、その立ち上がりクロックエッジと次の立ち下がりクロックエッジとの間の期間である)、所定の時点(例えば、立ち下がりクロックエッジ上)においてデータ処理動作の結果を決定するように構成される。遅延ユニットは、データ処理動作を実行するための時間に遅延を加えたものがこの所定の時間間隔未満であるように、経路に対して遅延を適用するように構成される。例えば、データ処理動作が2つのデータ値の加算であり、データ処理装置内の加算器が、立ち上がりクロックエッジの後にその加算動作を開始するように構成されている場合、データ処理装置は、以降の立ち下がりクロックエッジ上の加算器出力を示す値として、結果値を決定するように構成される。この例示的な状態において、遅延ユニットは、経路に対して遅延を適用するように構成され、よって、加算動作の実行に必要とされる時間および課された遅延の組み合わせは、クロックエッジ間の間隔を超えず、したがって、加算器の出力は、遅延の導入による影響を受けない。
【0009】
遅延ユニットは、同じデータ処理動作が再度実行された時に、同じデータ処理命令によって開始されて、同じデータ値に対して動作し、遅延を変化させるように、さらに構成される。
【0010】
所定の時間間隔中に、データ処理装置がデータ処理動作を実行した時のデータ処理装置の電力消費は、典型的に、実行されている特定のデータ処理動作およびその動作が実行されているデータ値の双方の影響を受ける。電力解析攻撃は、この事実に依存し、かつ繰り返し観察に基づいて統計データを収集することによって、動作および/またはデータ値に関する情報を推測することができる場合がある。しかしながら、本発明の技法によれば、データ処理動作で使用される経路のうちの1つに対する遅延の適用が、該データ処理動作と関連する電力消費を変化させることになる。これは、データ処理動作が、実行される動作およびそのデータ処理動作の対象であるデータ値の両方を特定する、データ処理装置内の特定の一組の信号によって構成されているからである。それらの信号のうちの1つを搬送する経路に遅延が適用された場合、データ処理装置の内部状態は、遅延が経過して、遅延信号がその宛先に到達した時に変化する。データ処理装置の内部状態の変化は、その電力消費の変化によって反映され、したがって、遅延の導入は、電力消費の時間プロファイルに影響を及ぼす。
【0011】
さらに、本発明によるデータ処理装置は、遅延ユニットが、同じデータ処理動作の以降の実行に対して異なる遅延を適用し、したがって、データ処理動作の第1の実行の電力消費特性が、そのデータ処理動作の以降の実行の電力消費とは異なるように構成される。したがって、システムに対する入力刺激が同じままであっても、データ処理装置の内部構成は、データ処理動作の各実行の電力消費が大きく異なるものとなり、したがって、電力解析攻撃をより困難にする。
【0012】
したがって、本発明の技法によれば、所与のデータ処理動作の実行ごとに変動する遅延が、データ処理装置内の特定の経路に適用され、遅延の長さに関する制約は、データ処理動作に費やされる時間と遅延との合計が、所定の時間間隔未満でなければならないことであり、よって、データ処理動作の結果が決定された時に、その結果は、経路に適用される遅延の影響を受けない。所定の時点および所定の時間間隔の性質は、データ処理装置の種類に応じて異なってもよい。一実施形態において、該データ処理装置は、同期して動作するように構成され、該所定の時間間隔は、クロック間隔である。したがって、そのような同期デバイスにおいて、クロックエッジが同期点を各クロックサイクル上に形成する場合、データ処理装置は、例えば、1つのクロックエッジの後にデータ処理動作があり、次のクロックエッジが発生した場合に、データ処理動作の結果を決定するように構成されてもよい。典型的に、1つの種類のクロックエッジ(例えば、立ち上がりエッジ)が選択されて使用される。この状態において、経路に適用される遅延(その経路上の信号の伝搬は、データ処理動作の一部を形成する)は、データ処理動作を実行するための時間に遅延を加えたものが、選択されたクロックエッジ間の間隔未満であるように制約され、よって、クロック間隔中の遅延の導入にもかかわらず、立ち下がりクロックエッジにおいて決定された結果値は、それでも、遅延の導入による影響を受けない。
【0013】
代替として、別の実施形態において、該データ処理装置は、非同期で動作するように構成され、該所定の時間間隔は、ハンドシェイクイベント間の間隔である。この実施形態には同じ一般原理を適用する。すなわち、経路上の遅延の導入は、データ処理装置内で付加的な状態変化(または、状態変化が起こった時に、少なくともある変動)を引き起こし、したがって、データ処理動作の実行に関連する電力消費の時間プロファイルの変化を引き起こす。非同期で動作するにもかかわらず、そのようなデータ処理装置は、それでも、装置の非同期構成要素がそれら自体を再調整し、かつ結果値を確実に決定することができる、明確なハンドシェイクイベントを有しなければならない。本発明の技法によれば、課された遅延は、付加的な遅延がハンドシェイクイベント間の間隔中に導入されたにもかかわらず、以降のハンドシェイクイベントで決定される結果値が影響を受けないように制約される。
【0014】
遅延の長さに対する前述の制約に加えて、任意の所与の反復に適用される特定の遅延は、多数の方法で決定されてもよい。一実施形態において、遅延の長さは、ランダム制御ソースを参照して決定される。故に、遅延の長さはランダム化することができ、特定のデータ処理動作と関連する電力消費をさらに難読化するのを補助する。ランダム制御ソースは、当然、データ処理装置内に提供されてもよく、または、同様に、このランダム情報のソースは、データ処理装置の外部にあってもよい。
【0015】
別の実施形態において、該遅延の長さは、決定論的アルゴリズムによって決定される。例えば、多少複雑であるが、それでも決定論的であり、それにもかかわらずデータ処理動作と関連する電力消費をさらに難読化するのに十分である様態で、反復する度に遅延の変化を引き起こす、アルゴリズムを提供してもよい。
【0016】
データ処理装置内の1つの経路上に1つの遅延ユニットしか位置しない場合があるが、いくつかの実施形態において、該データ処理装置は、該データ処理装置内の少なくとも1つのさらなる経路上に位置する少なくとも1つのさらなる遅延ユニットであって、該少なくとも1つのさらなる経路上のさらなる信号の伝搬にさらなる遅延を適用するように構成される、少なくとも1つのさらなる遅延ユニットを備え、該少なくとも1つのさらなる経路上の該さらなる信号の伝搬は、該データ処理動作の一部を形成し、該さらなる少なくとも1つの遅延ユニットは、該データ処理動作を実行するための時間に該さらなる遅延を加えたものが該所定の時間間隔未満であるように構成され、該さらなる少なくとも1つの遅延ユニットは、該さらなる遅延を、該データ処理動作の以降の実行に対して変化させるように構成される。
【0017】
故に、データ処理装置の中のさらなる経路には、それぞれが前述した様態で動作するように構成される遅延ユニットが提供されてもよい。そのようなさらなる遅延ユニットの提供は、データ処理装置内のさらなる状態変化を、所定の時間間隔内で起こすことができ、したがって、データ処理動作の実行に関連するデータ処理装置の時間ベースの電力消費プロファイルのさらなる歪みを起こすことができることを意味する。そのような遅延ユニットがより多く提供されるほど、データ処理動作の電力消費特性がより大きく変化することを認識されるであろう。さらに、各遅延ユニットが、データ処理動作の以降の実行に対して遅延を変化させるように構成されるとすれば、その電力消費シグネチャに基づいて特定のデータ処理動作を識別することがますます困難になる。
【0018】
さらに、そのような実施形態の複数の遅延ユニットは、各反復に対して同じ遅延を適用するように構成され得るが、一実施形態において、該遅延ユニットおよび該少なくとも1つのさらなる遅延ユニットは、該遅延および該さらなる遅延が互いに異なるように構成される。したがって、遅延ユニットのうちのいくつか、またはそれらの全てでさえ、異なる遅延を有し得、データ処理動作の各反復に対する電力シグネチャにさらなる変化を加える。
【0019】
経路は、様々な形態を取ることができる。一実施形態において、該経路はデータ経路であり、該信号は、該少なくとも1つのデータ値の少なくとも1つのデータビットを表す。したがって、少なくとも1つのデータ値の少なくとも1つのデータビットが、(例えば、新しい入力データ値が、実行ユニットの中に読み込まれる時に)変化する場合、このデータ経路上の遅延の導入は、その入力値を2度変化させることになり、データ処理装置の電力消費の関連する変化を伴う。
【0020】
遅延は、複数のデータビットに適用することができ、一実施形態において、該少なくとも1つのデータ値は、複数のデータビットを備え、該信号は、該複数のデータビットを表すことを理解されるであろう。代替として、遅延は、唯一のデータビットに適用することができ、一実施形態において、該少なくとも1つのデータ値は、複数のデータビットを備え、該信号は、該複数のデータビットのうちの1つのデータビットを表す。
【0021】
他の実施形態において、該経路は、制御経路であり、該信号は、該少なくとも1つのデータ値に対して該データ処理動作を実行するように該データ処理装置を構成するように構成される制御値を表す。したがって、そのような制御経路に対する遅延の適用は、所定の時間間隔中に、データ処理装置の構成信号の変化を引き起こし、したがって、電力消費に変化を引き起こす。
【0022】
制御値によるデータ処理装置の構成は、多数の方法で起こり得るが、一実施形態において、該制御値は、該データ処理動作を実行するように実行ユニットを構成する。例えば、実行ユニットは、多数の周知のデータ処理動作(追加、乗算、シフト等)を実行するように構成することができ、特定の動作は、1つ以上のそのような制御値によって決定される。
【0023】
代替として、制御値は、データ処理動作に使用されるデータ値を決定することができ、一実施形態において、該少なくとも1つのデータ値は、該制御値に依存してデータストアから検索される。例えば、制御値は、データストアにおけるアドレス指定の一部を形成することができる。一実施形態において、このデータストアは、レジスタバンクである。
【0024】
さらに別の代替として、該経路は、クロック経路であり、該信号は、クロック信号を表し、該データ処理装置は、該クロック信号を参照して該データ処理動作を実行するように構成される。データ処理装置の副構成要素の編成は、クロック信号に依存することになり、したがって、遅延を副構成要素のうちの1つの中の経路に適用することによって、装置の内部調整に影響を及ぼし、また、その電力消費シグネチャを変化させることを認識されるであろう。
【0025】
いくつかの実施形態において、プログラム可能な遅延の構成を可能にするように、システムレジスタが提供されてもよく、一実施形態において、該遅延は、システムレジスタに記憶された値を参照して決定される。一実施形態において、該システムレジスタに記憶される該値は、さらなるデータ処理命令によって設定される。
【0026】
第2の態様から概観すると、本発明は、データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、該データ処理装置内の経路上に位置する遅延手段であって、該経路上の信号の伝搬に遅延を適用するための遅延手段を備え、該経路上の該信号の伝搬は、該データ処理動作の一部を形成し、該データ処理装置は、所定の時点において該データ処理動作の結果を決定するように構成され、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延手段は、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように構成され、該遅延手段は、該データ処理命令に応答して、該遅延を、該少なくとも1つのデータ値に対する該データ処理動作の以降の実行に対して変化させるように構成される、データ処理装置を提供する。
【0027】
第3の態様から概観すると、本発明は、データ処理命令に応答して、データ処理装置で少なくとも1つのデータ値に対してデータ処理動作を実行するステップと、該データ処理装置内の経路上の信号の伝搬に遅延を適用するステップであって、該経路上の該信号の伝搬は、該データ処理動作の一部を形成する、適用するステップと、所定の時点において該データ処理動作の結果を決定するステップであって、該所定の時点は、所定の時間間隔だけ該データ処理動作の開始の後であり、該遅延を適用するステップは、該データ処理動作を実行するための時間に該遅延を加えたものが該所定の時間間隔未満であるように実行される、決定するステップと、該データ処理命令に応答して、該遅延を、該少なくとも1つのデータ値に対する該データ処理動作の以降の実行に対して変化させるステップとを含む、データ処理の方法を提供する。
【図面の簡単な説明】
【0028】
【図1A】一実施形態によるデータ処理装置の概観を概略的に示す図である。
【図1B】図1Aに示される装置におけるいくつかの信号の相対的タイミングを例示す図である。
【図1C】例示的な関連する電力消費シグネチャを示す図である。
【図2A】別の実施形態によるデータ処理装置を概略的に示す図である。
【図2B】図2Aの装置と関連する信号タイミングおよび電力消費線図である。
【図2C】図2Aの装置と関連する信号タイミングおよび電力消費線図である。
【図3A】遅延が制御信号に適用される、例示的実施形態を示す図である。
【図3B】遅延が制御信号に適用される、例示的実施形態を示す図である。
【図4A】遅延がクロック信号に適用される実施形態によるデータ処理装置を概略的に示す図である。
【図4B】システムレジスタの内容に依存して制御されている遅延ユニットの構成を概略的に示す図である。
【図5】一実施形態のデータ処理装置によって行われる一連のステップを概略的に示す図である。
【図6】非同期実施形態のタイミングを概略的に示す図である。
【発明を実施するための形態】
【0029】
以下、例を使い、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。
【0030】
図1は、実行ユニット20に接続されるレジスタバンク10を概略的に示す。レジスタバンク10および実行ユニット20は、データ処理装置の一部を形成し、そのさらなる詳細は、図示を明確にするため省略する。実行ユニット20は、多数の異なるデータ処理動作を実行するように構成可能な多目的デバイスであり得、または専用のデータ処理デバイス(ALU、乗算器、シフタ等)であり得る。実行ユニット20は、レジスタバンク10から検索されたデータ値を受け取り、それらのデータ値に対してデータ処理動作を実行して、結果値を生成するように構成される。示される実施例において、レジスタバンク10から実行ユニット20にデータ値AおよびBがそこに沿って渡される経路には、それぞれ、遅延制御(図示せず)によって制御される遅延ユニットが提供される。これらの遅延ユニット30,40は、それらが遅延制御から受け取る信号に依存して、遅延をそれらのそれぞれの経路に提供するように構成される。これらの遅延ユニットの効果を、図1Bに示されるタイミング図にさらに詳細に示す。
【0031】
図1Bは、実行ユニット20が、データ値AおよびBをともに加える加算器として構成された時の、図1Aに示されるようなデータ処理装置の中の種々の信号の相対的タイミングを概略的に示す。図1Bで分かるように、最初に、実行ユニットに提供されているAデータは、0x0000である一方で、実行ユニット20に提供されているBデータは、0x0001である。この時、加算器出力は、0x0001である。立ち上がりクロックエッジの後、レジスタバンク10は、AおよびBの新しい値、すなわち、それぞれ0xFFFFおよび0x0000を実行ユニット20に渡すように構成される。しかしながら、図1Bは、遅延ユニット40によって遅延がB経路に適用される状態を概略的に示す。図1Bに示される実施例において、遅延は、A経路には適用されない。したがって、立ち上がりクロックエッジの後、実行ユニット20が受け取ったAデータがすぐに0xFFFFに変化する一方で、実行ユニットがB系路上の新しいBデータ0x0000を受け取るまでには遅延がある。この結果、最初に加算器出力が0x0001から0x0000に遷移し、次いで、その後すぐに、遅延Bデータが0xFFFFに変化する。加算器出力の中の連続した3つの遷移のうちの2つのシーケンスは、信号が加算器を通して伝搬する間、加算器出力(結果値)が不確定である、短い期間を表す。加算器出力のこれらの変化は、電力消費(図1Cを参照)の関連する変化によって認識することができる。
【0032】
図示を明確にするため、図1Bおよび図1Cに表される実施例では、1つの遅延だけがB値に全般的に適用され、A値はそのままである。複数の遅延を複数のデータ経路に適用する、やや複雑な実施例を図2A〜図2Cに概略的に示す。また、図1Bに示される実施例において、関連するクロック間隔(データ処理動作の開始から、データ処理動作の結果の決定まで)は、立ち上がりクロックエッジから、その後の立ち下がりクロックエッジまでとして示される。しかしながら、別の典型的な実装は、開始および終了の間隔を画定するために、同じクロックエッジ(例えば、立ち上がりクロックエッジ)を使用する。
【0033】
図2Aは、図1Aに示されるものと同様の配設を概略的に示す。ここで、レジスタバンク50は、データ値をALU60に提供し、ALU60は、該データ値に依存して結果値を生成する。示されるように、データ値AおよびBは、レジスタバンク50からALU60に渡される。データ値Aは4ビット値であり、データ値Aのそれぞれは別々のデータ経路上に提供される。遅延ユニット70は、これらのデータ経路の全域に位置し、かつ各経路上の個々の遅延を提供するように制御可能である、4つの個々の遅延バッファを備える。遅延ユニット70は、ランダムタイミングソース90を参照して遅延バッファのそれぞれに対する遅延を生成する、遅延制御80によって制御される。
【0034】
図2Aに示される配設の効果を、図2Bのタイミング図に示す。ここで、立ち上がりクロックエッジの後、ALU60に進入するAデータの4つのビットが、それぞれ異なる時間に到達することが分かる。これは、ランダム化された遅延が、遅延ユニット70内の遅延バッファのそれぞれに適用されることによって生じる。全体として、加算器出力の結果値に対するこの配設の効果は、Aデータの第1のビットが変化してから(A’[0])、Aデータの最終ビットが移行した後まで(A’[1])、加算器出力が決定論的な状態を取らないことである。したがって、図2Cに示されるように、ALU60によってデータ値AおよびBに対して実行されるデータ動作と関連する、継続的で複雑な電力消費シグネチャがある。さらに、図2Aに示されるデータ処理装置が、同じデータ処理動作を実行するように設定された(すなわち、データ処理命令が、同じ入力データ値に対して同じ動作を実行するようにALU60を構成する)場合、遅延ユニット60の中の遅延バッファに適用されたランダム化された遅延が変化して、電力消費シグネチャを変えるので、このデータ処理動作の観察される電力消費は、同じにはならない。
【0035】
図3Aは、種類の異なる経路に遅延がどのように適用され得るのかを概略的に示す。ここで、レジスタバンク100は、ここでも、実行ユニット110によるデータ処理動作を受ける入力データ値を提供する。レジスタバンク100から出力されるように選択されたデータ値は、レジスタ制御105によって制御される。実行ユニット110は、種々のデータ処理動作を実行することができ、任意の時に実行される特定の動作は、常に実行制御115によって構成される。図3Aに示されるように、一組の遅延ユニット120が、実行制御ユニット115を実行ユニット110に接続する、経路上に位置する。遅延ユニット120は、遅延制御125によって構成される遅延を、実行制御ユニット115から実行ユニット110に渡される制御信号に提供するように構成される。したがって、実行ユニット110の動作を構成する制御信号に遅延ユニット120によって適用される1つまたは複数の遅延は、実行ユニット110に、実行制御ユニット115によって命令される構成状態に設定される前の、少なくとも1つの中間構成状態を通しての遷移を引き起こす。したがって、(データ値の経路も、図1A〜図1Cおよび図2A〜図2Cを参照して論じたような構成であり得るが)実行ユニット110に入力される一定のデータ値についても、実行ユニット110の構成を変化させることで、データ処理装置の電力消費シグネチャを変化させ、したがって、実行ユニット110によって実行されている真のデータ動作を難読化する。さらに、実行ユニット110が同じデータ処理動作(同じ命令、同じ入力値)を繰り返す場合であっても、遅延ユニット120によって適用される新しい遅延は、関連する電力消費シグネチャを変化させる。
【0036】
図3Bは、遅延ユニットが、データ処理装置の中の制御信号を搬送する経路に適用され得る別の方法を、概略的に示す。ここで、レジスタバンク100から実行ユニット110に渡されるデータ値は、レジスタバンク100に渡すレジスタ選択信号を使用して、レジスタ制御ユニット105によって決定される。図3Bに示されるように、遅延制御135によって制御される一組の遅延ユニット130は、レジスタ制御105とレジスタバンク100との間のマルチビットレジスタ選択信号経路上に位置している。これらの遅延ユニットの効果は、レジスタバンク100が受け取るレジスタ選択信号を一時的に変化させることである。これは、実行110によって受け取る入力値を変化させ、したがって、電力消費信号を変化させる効果を有する。
【0037】
図4Aは、遅延ユニットをデータ処理装置内の経路に適用することができる(前述した経路遅延の他の様式と組み合わせる場合もある)さらなる方法を概略的に示す。ここで、遅延が適用される経路は、クロック信号を搬送する。クロック信号を遅延させる第1の態様を図4Aの左側に示し、図中、ベクタ140は、レジスタバンク150に渡される。ベクタ140は、4ビット値であり、各ビットは、レジスタバンク150への途中で、フリップフロップ142,144,146,148によって一時的にバッファリングされる。フリップフロップ142〜148は、通常、共通クロック信号を共有する場合があるが、ここでは、一組の遅延ユニット155が、フリップフロップのそれぞれについて1つの、4つのクロック信号CLK0−3を生成する。遅延をクロック信号に適用する第2の態様を、図4Aの右側に示し、図中、実行ユニット160は、クロック信号CLK[0:N]に依存して動作するように構成される。これらのクロック信号は、単一の元のクロック信号CLKから遅延ユニット165によって生成される。双方の実施例において、異なるクロック信号システムの異なる副構成要素に提供することは、ここでも前述のように、電力消費シグネチャの変動を引き起こす。さらに、これらのクロック信号の変動は、同じデータ処理動作が実行される度に変化し、電力解析攻撃をかなり困難にする。
【0038】
前述の実施形態の遅延ユニットの構成は、遅延制御ユニットによって実行されてもよく、いくつかの実施形態では、システムプログラマが遅延ユニットをどのように動作させるのかといった態様を構成することができるように、システムレジスタとして構成されてもよい。図4Bは、システムレジスタに依存して制御されている8ビットAデータ信号上の遅延ユニットの制御を概略的に示す。代替として、遅延制御ユニットは、反復する度に遅延を変化させるように、決定論的アルゴリズムによってプログラムされてもよい。
【0039】
図5は、一実施形態によるデータ処理装置に取り入れられる一連のステップを概略的に示す。フローは、新しいデータ処理命令を受け取る、ステップ200から始まる。ステップ205で、データ処理装置は、必然的なデータ処理動作を実行するために、データ処理命令に依存して構成される。ステップ210で、データ処理装置の一部を形成する経路上の遅延ユニットは、ステップ215で信号がデータ処理動作の一部を介して伝搬する前に、ランダム化された遅延を伴って構成される。遅延が適用されている特定の種類の経路に依存して、ステップ205および210が同時に行われると考えられ得ること、またはステップ205に先行してステップ210が行われることもあり得ることを理解されるであろう。ステップ220で、データ処理動作が終了し、フローは、ステップ200に戻る。次のデータ処理命令が同じであり、かつ同じデータ値に対して動作される場合であっても、経路に適用されるランダム化された遅延(ステップ210)は、このデータ処理動作に起因する電力消費が異なることを意味する。
【0040】
図6は、データ処理装置が非同期デバイスである実施形態の、相対的タイミングを概略的に示す。したがって、システムの副構成要素は、それらの間に時間の制約を伴わずに、それらの動作の種々の態様を自由に実行し、必要に応じて副構成要素の定期的な再調整を伴う。これらの定期的な再調整が起こる地点は、ハンドシェイクイベントとして周知である。したがって、本発明の概念はまた、そのような非同期デバイスにも適用することができ、データ処理動作は、第1のハンドシェイクイベントの後に始まり、そのデータ処理動作の結果は、以降のハンドシェイクイベントでしか有意ではない。其の間に、種々の同期実施形態という状況で前述したものと同様に、これらの遅延の適用が、次のハンドシェイクイベントを超える有効なデータ処理期間の延長を引き起こさないのであれば、デバイスの電力シグネチャを歪ませるように、1つ以上の遅延をデバイスの中の1つ以上の経路に適用することができる。
【0041】
特定の実施形態を本明細書で説明してきたが、本発明は、それに限定されるものではなく、その実施形態への多くの変更および追加が本発明の範囲内で行われる場合があることが認識されるであろう。例えば、本発明の範囲を逸脱しない範囲で、添付の特許請求の範囲に含まれる従属請求項の特徴の、独立請求項の特徴との種々の組み合わせを行うことができる。
【符号の説明】
【0042】
10,50,100,150 レジスタバンク
20,60,110,160 実行ユニット
30,40,70,120,130,155,165 遅延ユニット
80,125,135 遅延制御
90 ランダムタイミングソース
105 レジスタ制御
115 実行制御
140 ベクタ
142,144,146,148 フリップフロップ
【特許請求の範囲】
【請求項1】
データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、
前記データ処理装置内の経路上に位置する遅延ユニットであって、前記経路上の信号の伝搬に遅延を適用するように構成される遅延ユニットを備え、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成し、
前記データ処理装置は、所定の時点において前記データ処理動作の結果を決定するように構成され、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後でああり、前記遅延ユニットは、前記データ処理動作を実行するための時間に前記遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記遅延ユニットは、前記データ処理命令に応答して、前記遅延を、前記少なくとも1つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるように構成される、
データ処理装置。
【請求項2】
同期して動作するように構成され、前記所定の時間間隔は、クロック間隔である、請求項1に記載のデータ処理装置。
【請求項3】
非同期で動作するように構成され、前記所定の時間間隔は、ハンドシェイクイベント間の間隔である、請求項1に記載のデータ処理装置。
【請求項4】
前記遅延の長さは、ランダム制御ソースを参照して決定される、請求項1に記載のデータ処理装置。
【請求項5】
前記遅延の長さは、決定論的アルゴリズムによって決定される、請求項1に記載のデータ処理装置。
【請求項6】
前記データ処理装置内の少なくとも1つのさらなる経路上に位置する少なくとも1つのさらなる遅延ユニットであって、前記少なくとも1つのさらなる経路上のさらなる信号の伝搬にさらなる遅延を適用するように構成される、少なくとも1つのさらなる遅延ユニットを備え、前記少なくとも1つのさらなる経路上の前記さらなる信号の伝搬は、前記データ処理動作の一部を形成し、
前記さらなる少なくとも1つの遅延ユニットは、前記データ処理動作を実行するための時間に前記さらなる遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記さらなる少なくとも1つの遅延ユニットは、前記さらなる遅延を、前記データ処理動作の以降の実行に対して変化させるように構成される、
請求項1に記載のデータ処理装置。
【請求項7】
前記遅延ユニットおよび前記少なくとも1つのさらなる遅延ユニットは、前記遅延および前記さらなる遅延が互いに異なるように構成される、請求項6に記載のデータ処理装置。
【請求項8】
前記経路は、データ経路であり、前記信号は、前記少なくとも1つのデータ値の少なくとも1つのデータビットを表す、請求項1に記載のデータ処理装置。
【請求項9】
前記少なくとも1つのデータ値は、複数のデータビットを備え、前記信号は、前記複数のデータビットを表す、請求項8に記載のデータ処理装置。
【請求項10】
前記少なくとも1つのデータ値は、複数のデータビットを備え、前記信号は、前記複数のデータビットのうちの1つのデータビットを表す、請求項8に記載のデータ処理装置。
【請求項11】
前記経路は、制御経路であり、前記信号は、前記少なくとも1つのデータ値に対して前記データ処理動作を実行するように前記データ処理装置を構成するように構成される制御値を表す、請求項1に記載のデータ処理装置。
【請求項12】
前記制御値は、前記データ処理動作を実行するように実行ユニットを構成する、請求項11に記載のデータ処理装置。
【請求項13】
前記少なくとも1つのデータ値は、前記制御値に依存してデータストアから検索される、請求項11に記載のデータ処理装置。
【請求項14】
前記データストアは、レジスタバンクである、請求項13に記載のデータ処理装置。
【請求項15】
前記経路は、クロック経路であり、前記信号は、クロック信号を表し、前記データ処理装置は、前記クロック信号を参照して前記データ処理動作を実行するように構成される、請求項1のいずれかに記載のデータ処理装置。
【請求項16】
前記遅延は、システムレジスタに記憶された値を参照して決定される、請求項1に記載のデータ処理装置。
【請求項17】
前記システムレジスタに記憶される前記値は、さらなるデータ処理命令によって設定される、請求項16に記載のデータ処理装置。
【請求項18】
データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、
前記データ処理装置内の経路上に位置する遅延手段であって、前記経路上の信号の伝搬に遅延を適用するための遅延手段を備え、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成し、
前記データ処理装置は、所定の時点において前記データ処理動作の結果を決定するように構成され、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後であり、前記遅延手段は、前記データ処理動作を実行するための時間に前記遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記遅延手段は、前記データ処理命令に応答して、前記遅延を、前記少なくとも1つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるように構成される、
データ処理装置。
【請求項19】
データ処理の方法であって、
データ処理命令に応答して、データ処理装置で少なくとも1つのデータ値に対してデータ処理動作を実行するステップと、
前記データ処理装置内の経路上の信号の伝搬に遅延を適用するステップであって、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成する、適用するステップと、
所定の時点において前記データ処理動作の結果を決定するステップであって、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後であり、前記遅延を適用するステップは、前記データ処理動作を実行するための時間に前記遅延を加えたものが、前記所定の時間間隔未満であるように実行される、決定するステップと、
前記データ処理命令に応答して、前記遅延を、前記少なくとも1つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるステップと、
を含む、方法。
【請求項1】
データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、
前記データ処理装置内の経路上に位置する遅延ユニットであって、前記経路上の信号の伝搬に遅延を適用するように構成される遅延ユニットを備え、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成し、
前記データ処理装置は、所定の時点において前記データ処理動作の結果を決定するように構成され、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後でああり、前記遅延ユニットは、前記データ処理動作を実行するための時間に前記遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記遅延ユニットは、前記データ処理命令に応答して、前記遅延を、前記少なくとも1つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるように構成される、
データ処理装置。
【請求項2】
同期して動作するように構成され、前記所定の時間間隔は、クロック間隔である、請求項1に記載のデータ処理装置。
【請求項3】
非同期で動作するように構成され、前記所定の時間間隔は、ハンドシェイクイベント間の間隔である、請求項1に記載のデータ処理装置。
【請求項4】
前記遅延の長さは、ランダム制御ソースを参照して決定される、請求項1に記載のデータ処理装置。
【請求項5】
前記遅延の長さは、決定論的アルゴリズムによって決定される、請求項1に記載のデータ処理装置。
【請求項6】
前記データ処理装置内の少なくとも1つのさらなる経路上に位置する少なくとも1つのさらなる遅延ユニットであって、前記少なくとも1つのさらなる経路上のさらなる信号の伝搬にさらなる遅延を適用するように構成される、少なくとも1つのさらなる遅延ユニットを備え、前記少なくとも1つのさらなる経路上の前記さらなる信号の伝搬は、前記データ処理動作の一部を形成し、
前記さらなる少なくとも1つの遅延ユニットは、前記データ処理動作を実行するための時間に前記さらなる遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記さらなる少なくとも1つの遅延ユニットは、前記さらなる遅延を、前記データ処理動作の以降の実行に対して変化させるように構成される、
請求項1に記載のデータ処理装置。
【請求項7】
前記遅延ユニットおよび前記少なくとも1つのさらなる遅延ユニットは、前記遅延および前記さらなる遅延が互いに異なるように構成される、請求項6に記載のデータ処理装置。
【請求項8】
前記経路は、データ経路であり、前記信号は、前記少なくとも1つのデータ値の少なくとも1つのデータビットを表す、請求項1に記載のデータ処理装置。
【請求項9】
前記少なくとも1つのデータ値は、複数のデータビットを備え、前記信号は、前記複数のデータビットを表す、請求項8に記載のデータ処理装置。
【請求項10】
前記少なくとも1つのデータ値は、複数のデータビットを備え、前記信号は、前記複数のデータビットのうちの1つのデータビットを表す、請求項8に記載のデータ処理装置。
【請求項11】
前記経路は、制御経路であり、前記信号は、前記少なくとも1つのデータ値に対して前記データ処理動作を実行するように前記データ処理装置を構成するように構成される制御値を表す、請求項1に記載のデータ処理装置。
【請求項12】
前記制御値は、前記データ処理動作を実行するように実行ユニットを構成する、請求項11に記載のデータ処理装置。
【請求項13】
前記少なくとも1つのデータ値は、前記制御値に依存してデータストアから検索される、請求項11に記載のデータ処理装置。
【請求項14】
前記データストアは、レジスタバンクである、請求項13に記載のデータ処理装置。
【請求項15】
前記経路は、クロック経路であり、前記信号は、クロック信号を表し、前記データ処理装置は、前記クロック信号を参照して前記データ処理動作を実行するように構成される、請求項1のいずれかに記載のデータ処理装置。
【請求項16】
前記遅延は、システムレジスタに記憶された値を参照して決定される、請求項1に記載のデータ処理装置。
【請求項17】
前記システムレジスタに記憶される前記値は、さらなるデータ処理命令によって設定される、請求項16に記載のデータ処理装置。
【請求項18】
データ処理命令に応答して少なくとも1つのデータ値に対してデータ処理動作を実行するように構成されたデータ処理装置であって、
前記データ処理装置内の経路上に位置する遅延手段であって、前記経路上の信号の伝搬に遅延を適用するための遅延手段を備え、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成し、
前記データ処理装置は、所定の時点において前記データ処理動作の結果を決定するように構成され、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後であり、前記遅延手段は、前記データ処理動作を実行するための時間に前記遅延を加えたものが前記所定の時間間隔未満であるように構成され、
前記遅延手段は、前記データ処理命令に応答して、前記遅延を、前記少なくとも1つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるように構成される、
データ処理装置。
【請求項19】
データ処理の方法であって、
データ処理命令に応答して、データ処理装置で少なくとも1つのデータ値に対してデータ処理動作を実行するステップと、
前記データ処理装置内の経路上の信号の伝搬に遅延を適用するステップであって、前記経路上の前記信号の伝搬は、前記データ処理動作の一部を形成する、適用するステップと、
所定の時点において前記データ処理動作の結果を決定するステップであって、前記所定の時点は、所定の時間間隔だけ前記データ処理動作の開始の後であり、前記遅延を適用するステップは、前記データ処理動作を実行するための時間に前記遅延を加えたものが、前記所定の時間間隔未満であるように実行される、決定するステップと、
前記データ処理命令に応答して、前記遅延を、前記少なくとも1つのデータ値に対する前記データ処理動作の以降の実行に対して変化させるステップと、
を含む、方法。
【図1A】
【図1B】
【図1C】
【図2A】
【図2B】
【図2C】
【図3A】
【図3B】
【図4A】
【図4B】
【図5】
【図6】
【図1B】
【図1C】
【図2A】
【図2B】
【図2C】
【図3A】
【図3B】
【図4A】
【図4B】
【図5】
【図6】
【公開番号】特開2012−165361(P2012−165361A)
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−255138(P2011−255138)
【出願日】平成23年11月22日(2011.11.22)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願番号】特願2011−255138(P2011−255138)
【出願日】平成23年11月22日(2011.11.22)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】
[ Back to top ]