JP5059258B2 - 処理装置に対する差分電力攻撃を最小限にする方法および装置 - Google Patents
処理装置に対する差分電力攻撃を最小限にする方法および装置 Download PDFInfo
- Publication number
- JP5059258B2 JP5059258B2 JP2000594019A JP2000594019A JP5059258B2 JP 5059258 B2 JP5059258 B2 JP 5059258B2 JP 2000594019 A JP2000594019 A JP 2000594019A JP 2000594019 A JP2000594019 A JP 2000594019A JP 5059258 B2 JP5059258 B2 JP 5059258B2
- Authority
- JP
- Japan
- Prior art keywords
- instructions
- processor
- value
- target address
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/067—Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
- G06K19/07—Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
- G06K19/073—Special arrangements for circuits, e.g. for protecting identification code in memory
- G06K19/07309—Means for preventing undesired reading or writing from or onto record carriers
- G06K19/07363—Means for preventing undesired reading or writing from or onto record carriers by preventing analysis of the circuit, e.g. dynamic or static power analysis or current analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
- G06F2207/7242—Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Description
【0001】
[発明の背景]
暗号システムは、一般的に、その仕組みを壊すことが不可能である場合を除いて、その安全性が保たれるのは、情報の細かい部分が秘密に保たれているという事実のおかげである。この秘密情報は、一般的に、安全な境界内で屈するに違いないが、秘密情報を得るために企てられた様々な組立や攻撃で、攻撃者が直接的にそこへ達することを難しくしている。スマートカード(smart card)等を含む手軽な暗号トークン(token) は、特別なリスクである。単純な電力分析、差分電力分析、より高いオーダーの差分電力分析や、他の関連技術は、これらの特異な弱点(vulnerable)を有するデバイスに対して行われたより最近の攻撃である。これらの技術的に進歩した、非常に強大な分析ツールは、暗号デバイスから秘密鍵を導くために、攻撃者によって使用される。これらの攻撃は、素早く開始でき、有効なハードウェアをたやすく使用できることが知られている。これらの攻撃に必要な時間の量は、デバイスによる攻撃や様々な何かのタイプに依存している。例えば、差分電力攻撃(DPA)は数時間かかるが、単純な電力攻撃(SPA) は、典型的な場合でカード当たり数秒かかることが知られている。
【0002】
暗号化処理は、基本的な処理を連続することで結果として起きる処理装置の処理で行われ、その各々が別個のタイミングパターンを生成する。気をつかう以外に面倒な端から端までの電力波形(end-to-end power waveforms)の分析は、秘密鍵のそれぞれのビットで行われ、こうして秘密鍵全体(entire secret key) を探すために分析され、そのシステムに含まれるこれらの基本的な処理の順番を分解する(decompose) ことができる。
【0003】
スマートカードと他の安全なトークンに対する単純な電力分析(SPA) 攻撃では、時間に変換されるトークンの消費電力を攻撃者が直接測定する。消費された電力量は、実行されたマイクロプロセッサの命令に応じて変化する。マイクロプロセッサで行われた処理は、これらの処理の異なる部分の間に意味ありげに(significantly) 変化するので、ループやDES ラウンド等における楕円カーブ(EC)加法のような大きな計算は、おそらく立証されている。より高度な割合、すなわち、より高度な分解で電流と電圧とをサンプリングすることで、個々の命令が差別化される。
【0004】
差別化された電力分析攻撃(DPA) は、SPA よりも力強い攻撃であり、防ぐことがずっと難しい。第1に、DPAは、秘密鍵に対応するであろう情報を抽出するために、統計的な分析とエラー訂正技術とを使用し、一方、SPA 攻撃は、関連する電力の変動を立証するために、先ず視覚的な診断(visualinspection) を使用する。DPA 攻撃は、2段階で行われる。最初の段階では、暗号化ルーチンの実行の間に、カードによって消費された電力への変換を示すデータを記憶する。第2段階では、その選ばれたデータが、秘密鍵に関連する特別な情報を抽出するために、統計的に分析される。これらの情報の詳しい分析は、ポール・コーチャーらによって、文献名「Introduction to Differential Power Analysisand Related Attacks (差分電力分析と関連する攻撃への導入)」に開示されている。
【0005】
これらの電力攻撃に対処するための様々な技術が、現在まで企てられている。これらは、十分に濾過された電力供給や処理装置の部品の物理的な保護を提供するハードウェアの解決策を含んでいる。しかしながら、スマートカードや安全トークンの場合には、これは実行できない。DPA の弱さ(vulnerabilities) は、トランジスタや論理回路を露出することを伝える電気的な動作回路、マイクロプロセッサの動作、最終的にソフトウェアインプリメンテイション(software implementations)に起因している。
【0006】
暗号化ルーチンのソフトウェアインプリメンテイションでは、特に、スマートカードに対して、プログラムフローにおける分岐は、電力分析測定に対して特に弱い。一般的に、プログラムフローが分岐に至った場所では、その時、いくつかの識別値Vに基づいて、プログラムの2つの分岐のうちの一方が実行される。二つの起こりうるケースの間を区別するために、Vが閾値と比較され、比較の結果として2ヵ所のうちの一方への分岐が実行される。これは、一般的に10で示された従来技術による、典型的な条件付き分岐の実行を示すフロー図である、図1に示されている。一般的に、条件付き分岐は、「IF命令、それから命令1その以外命令2」節を実行する。この場合には、フロー図は、識別値Vが範囲内で変化し、コンディションが閾値THが識別値Vによって交差するか否かのどちらかであるシナリオを示している。閾値THは、上限下限をそれぞれ示すVMAXとVMINの間のランダムな数である。こうして、図1に示すように、V<THであれば、プログラムは命令1を実行し、V≧THであれば、プログラムは命令2を実行する。これは、VMAXからVMINの全てのVの値を繰り返していてもよい。
【0007】
単純な電力分析技術を利用することによってより早期に外形化されると、観察者が「IF」分岐と「ELSE」分岐の何れが実行されたかを区別することができる。これは、しかしながら、命令1と命令2とが、異なる目的の命令の2つの同じセットからなる。スマートカードに関する電力あるいは電流消費測定は、どちらの分岐が選ばれたかを明らかにすることができる。いくつかのケースでは、チップ上のステイタスフラグ(status flags)がセットされたりリセットされたりしてもよい。これらのフラグは、SPA のために使用されてもよい。
【0008】
従って、システムにとって、成功する電力分析攻撃のリスクを減らすことが必要であり、特に、電流ハードウェア環境設定(current hardware environments) に適用できる。
【0009】
[発明の要約]
本発明の目的は、処理装置に対して電力分析攻撃(power analysis attacks)を最小限にするための方法を提供することにある。
【0010】
この発明は、処理装置における条件付きの分岐処理を覆い隠す方法であって、プログラム実行は、基準値に対応する識別値Vの第1あるいは第2の命令に依存する2つの分岐(branch)の一方へ分岐し(jump)、その基準は、上限Vmax と下限Vmin に よって限度内に留められ(bounded)、
条件付きの分岐の位置を決定するステップと、
目標アドレスを計算するために上記識別値と基本アドレスとを使用することによって、プログラム実行(program execution) を2つの分岐(branches)の一方のそれぞれに変更する命令を実行するために、そこにコードを挿入するステップであって、異なる数の(adifferent number of) 命令が実行される上記命令の各評価のために差分電力攻撃の効果を最小限にするステップとを備えている。
【0011】
より具体的には、識別値がランダム値に組み合わせられ、その結果、各命令の実行にランダムな数の命令を加えている。
【0012】
[好ましい実施の形態の詳細な説明]
図2に示すように、本発明の実施形態による、コンピュータプログラムにおける条件付き分岐コンディション(conditional jump condition)を覆い隠す(masking)方法の概略図は、符号50により一般的に示される。本発明者らは、続くコードフラグメント(code fragment) は、プロセッサにより実行され、識別値Vが公知の範囲内で変化し、そして、このコンディションは、閾値THが識別値Vで交差するか否かのどちらかである。この閾値は、上限値および下限値がそれぞれVMAXおよびVMINである公知の範囲におけるランダムな番号である。一般的な実施形態において、本方法は、条件付きの分岐処理についてのロケーション(location)を同定し、コール52のロケーションでサブルーチン54に挿入する。サブルーチン54は、2つのプログラム分岐(branch)の一方へサブルーチンのリターンアドレスを変更するための命令を含み、識別値Vの閾値について比較の結果に対する応答において、分岐ステートメント(statement)1または分岐ステートメント2を実行する。
【0013】
図2に示すように、交換された条件付き分岐のロケーションは、コードブロックaによって同定される。サブルーチンは、IRRITATE_1 (54)として同定され、a,b,c,dおよびeとして同定されるコードブロックを含む。コードブロックcは、第1および第2セクション、それぞれ56および58を含む。第2セクション58のスタートアドレスは、予め決定され、値KNOWN _DISPLACEMENTによって同定される。その後、第1セクション56のスタートアドレスは、KNOWN _DISPLACEMENTと識別値Vの上限値との間の差によって決定される。第1セクション56は、アドレスL1への一連の条件無し(unconditional) 分岐からなり、そして第2セクション58は、アドレスL2への一連の条件無し分岐からなる。ロケーションL1およびL2は、それぞれステートメント1およびステートメント2を実行するために復帰プログラムフローに対するコードを含む。サブルーチンIRRITATE_1 に含まれるコードブロックbは、KNOWN _DISPLACEMENTアドレスとTHRESHOLD との間の差を計算するためのコードを含む。次いで、得られたアドレスは、セクション56および58のうちの一方における目標アドレスロケーションを引き出すために識別値Vを加える。
【0014】
ブロックaに示すように、識別値Vは、サブルーチンを呼び出す間中保存され、次には如何なる条件付き分岐も含まない。このサブルーチンにおいて、本発明者らは、Vがサブルーチンから復帰後のこのようなTH以下か以上かに依存して、サブルーチン(これはスタック(stack) に属する)のリターンアドレスを変換し、プログラムが決定された分岐における実行を続ける。
【0015】
拡張してアドレスすることが知られるアドレスモードは、目標アドレスを決定するために使用される。拡張してアドレスをアドレスすることは、続けなければならないプログラムの実行が、2つのレジスタ(register)の内容の合計として計算されるアドレスである。例えば、Intel (登録商標)8051ファミリーのアセンブリ言語(assemblylanguage) におけるJMP @A+DPTRは、続けられなければならないプログラム実行が、アキュミュレータ(accumulator)Aおよびデータポインタレジスタ(DPTR)の内容を加えることにより計算されるアドレスを意味する。他のプロセッサは、アドレスするための同様の機構を指示することができる。図2に示されるコードフラグメントは、方法を例示する。これらのコードフラグメントのラインを参照すると、本発明者らは、レター(letter)および番号からなるラベルを使用する。従って、この方法における要件は、本発明者が明確にすべきである:
a)コード56のブロックが属しているアドレス。これは、第1JMP L1のアドレスである;
b)識別値Vの範囲;
c)ランダムな閾値THの最大値。この最大値またはそれから誘導される値は、JMP L1またはJMP L2を含むコードブロックの大きさを定義する。
【0016】
図2に示されるコードフラグメントの処理は、以下で議論する。コードフラグメントは、ループ内に位置され、これは、連続的にループの反復に対する与えられた範囲におけるVの値を変換する。例えば、Vは、ループカウンタの値である。ゴールは、V<THRESHOLD である限り、ラベルDO_REAL、ラインd1で実行し続けることであり、V>=THRESHOLDに対してラベルDO_VOID、ラインe1で命令の実行を続けることである。
【0017】
前で述べたように、THRESHOLD は、Vmin およびVmax の公知の範囲内のランダムな値である。ラインa1では、識別値Vは、プロセッサのアキュミュレーターに保存され、サブルーチンIRRITARE_1 は、ラインa2で呼び出される。このサブルーチンからのリターンアドレスは、ラインa3であり、これは、プロセッサによって自動的にスタックに保存される。
【0018】
ラインb1におけるKNOWN _DISPLACEMENTは、第2セクション58の始めるロケーションを特定する一定の値であり、ラインc9のアドレスを示す。従って、KNOWN _DISPLACEMENT-V maxは、ラインc1のアドレスであり、第1セクション56の始まる位置である。
【0019】
ブロックbにおけるKNOWN _DISPLACEMENTの値は、ラインb1でのレジスタにおいて保存される。次のラインb2では、レジスタは、KNOWN-DISPLACEMENTおよびTHRESHOLDの差を用いてアップデートされる。この差は、ラインb3でデータポインタレジスタ(DPTR)に移動される。したがって、DPTRはブロックcにおけるラインc8からラインc1のうちの一つのアドレスを含んでいる。例えば、THRESHOLD=3の場合、DPTRはラインc6を指す。仮にVが、アキュミュレーターの内容が、0(Vmin)から7(Vmax ) で変化すると仮定する。そうすると、DPTRは、c1からc8までアドレスを変化するので、ラインb4で計算されるアドレス@A+DPTRは、Vが0から7で変化するにつれて、ラインc6のアドレスからc12まで変化することができる。従って、V<3に対して第1セクションにおけるJMP L1命令を実行し、V>=3 に対して第2セクションにおけるJMP L2命令を実行する。
【0020】
ラベルL1およびL2は、それぞれラインc17およびc21 に位置されるリターンアドレスに向けられる。ラインc17 からc19において、サブルーチンIRRITATE_1 のリターンアドレスはまた、回復または変換されるので、プログラムカウンターが、サブルーチンが復帰した後にラインa4に向けられる。単純な分岐は、ラインa3およびa4での命令である。
【0021】
行われる2 つの分岐間の実際の識別は、ブロックa における適切なラインに回復されたサブルーチンリターンアドレスを変換したラインc18とc22 で決定されることに注意すべきである。本実施形態において0 と1 の値は、再分配分岐(redirection jump)がラインa3とa4のそれぞれでのサブルーチンIRRITATE_1への呼び出し命令後、すぐに位置されるので、選択される。他の命令において、それらのバイナリー表示(binary pesentation)において1の数が等しい異なる値が使用されるので、ラインc18およびc22Dでの加算処理における差は攻撃者(attacker)に識別されることができる。この場合、NOP のおよその番号は、リターンアドレスを調整するためにコードブロックに加算される。
【0022】
さらに、リダイレクトプログラムが命令1および命令2にそれぞれ流れるラインa3,a4での分岐命令は、バイナリー表現(binary representation )で同じ番号の1をもつアドレスに置かれるべきである。これは、これらの二つの異なる場所をアドレス指定する間に、アドレスバス(address bus )における均一な電力消費という結果になる。同じ対策は、ラインd1とe1と、命令1および命令2の位置とでそれぞれ応用される。さらに、ラインb2において、特別な注意は、SUB 命令が実行される間に、処理装置のステータスワード(status word )内のフラグにおける変化を避けるために、THRESHOLD とKNOWN _DISPLACEMENTとの値の選択に払われるべきである。
【0023】
本発明の第2の実施形態は、図3に示すように、符号100によって概して示されている。本実施形態も、上述のように、拡張したアドレシングを利用している。処理装置のIntel 8051ファミリーのアセンブリ言語は、もう一度、その方法を証明することに使用される。明確にするために(forclarity) 、op1 からop7 のしるし(symbol)は、プログラムの命令を表すために使用される。この実施形態では、識別値Vは、二つの明確な値VmaxとVmin の一方である。こうして、この場合の条件は、識別値Vが明確な値であるVmax あるいはVminのいずれか一方であることである。再度のサブルーチンの呼出し(call)は、条件付き分岐の位置に挿入され、サブルーチンは、明確な値のVmaxあるいはVmin の一方である識別値Vに応じて、分岐命令1あるいは分岐命令2を実行するために、サブルーチンのリターンアドレスを二つのプログラム分岐の一方に変換するための命令を含んでいる。
【0024】
図3に示しているように、再配置された条件付きの分岐の位置は、コードブロックf によって明らかにされる。サブルーチンは、IRRITATE_2(102)として認識され、ブロックg とh として認識されたコードブロックを含んでいる。コードブロックh は、第1および第2のセクション106および108もそれぞれ含んでいる。各セクションは、h1からh7のラインとh12 からh18 のラインとで表示されたダミー処理op1 の系列を含んでいる。各セクションは、サブルーチンIRRITATE_2 のリターンアドレスを修復し、サブルーチンから戻った後で、プログラムカウンターがラインf4あるいはf5を示すようにそれを変換するための連続した命令によって終了される。ラインf4と二つの分岐のうちの一方への分岐を含んでいるf4は、命令1および命令2をそれぞれ含むブロックi およびブロックj として示される。
【0025】
目標とする目的地アドレスは、二つの要素、すなわち、識別値VあるいはVから導かれる値と、ラインg1で加算されるランダムな数(random number )MASKED_RANDOMと比較される。最初と2番目のセクションの開始アドレスは、この目標アドレスが、ラインh1からh8、あるいはラインh12 からh19 の範囲のどちらかであるように選ばれる。目標アドレスの第2の要素は、ランダムな数であり、サブルーチンIRRITATE_2 のリターンアドレスがラインh8からh10 (あるいは、ラインh19 からh21 )において計算される前に、ランダムな数のダミー処理が実行される。
【0026】
上記実施例では、ラインh9からラインh20 におけるADD 値が、ブロックf に加えられたNOP 命令の適正な番号とともに、同じハミングウェイト(hamming weight)(1の番号)を持つように選ばれてもよい。
【0027】
加えて、ラインf4・f5におけるJMP 命令は、その同じ番号とともにアドレスに位置してもよい。追加されたJMP 命令は、同じメグメント内の目的地を持つラインh1からh8の間に挿入されてもよい。
【0028】
この実施例では、従って、条件付き分岐の替わりに非条件付き分岐を使用し、そのコードにランダムな数のダミー処理を加えている。前者の目的は、SPA に対する対策であり、後者は、DPA 攻撃をもっと難しくさせる。特に、この実施例では、ランダムマスク(randaom mask)やノイズをプログラム実行進路に加え、セグメント内のランダムアドレスへの分岐は、その分岐のうちの一方が実行される前に、ランダムな数のプログラム実行をもたらす。それゆえ、いつでも分岐の一方が実行され、処理装置によって実行された数の処理は、ランダムにDPA 攻撃をより困難なものに変化させる。
【0029】
上記実施形態では、サブルーチンがプログラムフローを転送するために使用されるが、図4では、分岐の単純な系列が使用される。本発明は、こういった実施例に示したことに制限を受けるものではない。
【0030】
図5によれば、暗号処理装置で使用される個人あるいは秘密鍵を覆い隠すための方法の実施形態が、符号200によって示されている。その方法は、その鍵を複数の部品に分割するステップと、新しい部品が最初の個人鍵値と同値になるように組み合わせられるように新しい部品を抽出するため、nを法として(nは、楕円カーブにおけるポイントの数)、ランダム値に各部品を組み合わせるステップと、処理装置において分割された各部品を利用するステップとを含んでいる。
【0031】
図5に示すように、暗号化処理装置は、公開鍵あるいは秘密値d を用いて初期化される。公開鍵Q=dPの計算では、秘密鍵d は、通常、dPを導くためにポイントP と組み合わせられている。値d は、例えば、d=b10+b20 のように、多数の部品に分割される。
【0032】
最初のステップでは、d=b10+b20 のように、b1=b10、b2=b20に初期化される。これらのb1,b2の値は、d の替わりに蓄積される。一方、d 値は、蓄積することを望む場合には蓄積されるが、メモリが限られているスマートカードの場合には、これは望ましくないかもしれない。
【0033】
次のステップでは、ランダムな数のπが生成され、値b1,b2が次のように更新される。
【0034】
b1=b1+πmod n
b2=b2-πmod n
更新されたb1およびb2の値は、蓄積される。計算は、その時、以下のように、構成要素b1およびb2を用いてポイントP 上で実行される。
【0035】
dP=b 1 P+b 2 P
そして、値πは各セッションのためにランダムに生成されると仮定すると、その時、攻撃者は予想される電力署名(power signature )を確認できそうにない。
【0036】
本発明の典型的なアプリケーションでは、署名要素s は、形式を持っている。
【0037】
s=ae+k(mod n)
P は、システムの予め定義したパラメータであるカーブ上の点であり、
k は、短い句の個人鍵あるいはセッション鍵として選ばれたランダムな整数であり、
R=kPは、短い句の公開鍵に対応しており、
a は、送信者の長い句の個人鍵であり、
Q=aPは、公開鍵に対応する送信者であり、
e は、SHA-1 ハッシュ関数のような、メッセージm と短い句の公開鍵R の安全なハッシュであり、
n は、カーブの配列である。
【0038】
送信者は、R に対応するべき値R'=(sP-eQ)の計算によって、確認されたm,s,R と署名とを含んでいるメッセージを受信者へ送信する。
【0039】
計算された値が一致する場合には、署名が確認される。上記例での両方の秘密鍵は、本発明の方法を使用して、覆い隠されてもよい。
【0040】
発明は、ある特別な形態を参考にして述べられたものであるが、様々な修正は、この発明における請求の範囲の中で本発明の精神、範囲から離れることなく、その技術の範囲内であることは明らかである。
【図面の簡単な説明】
【図1】 条件付き処理の計画図である。
【図2】 本発明の一実施形態に係るコンピュータプログラムの一部である。
【図3】 本発明の他の実施形態に係るコンピュータプログラムの一部である。
【図4】 本発明のさらに他の実施形態に係るコンピュータプログラムの一部である。
【図5】 本発明のもう一つの実施形態を示すフロー図である。
Claims (18)
- 暗号化演算を実行するプロセッサ上で実行されるプログラムにおいて安全な態様で条件付き分岐演算を実行する方法であって、前記プロセッサは、制御ユニットと算術演算論理ユニット(ALU)とを含み、前記プログラムは、一連の命令を含み、前記制御ユニットは、前記ALUが識別値Vを既定の変位値およびランダム値THに組み合わせた結果から前記条件付き分岐を決定し、前記ランダム値THは、上限値Vmaxと下限値Vminとによって境界が定義されており、
前記一連の命令は、前記プログラムにおける条件付き分岐の位置において2つの分岐のうちの一方にプログラム実行を方向付けることを前記制御ユニットに行わせるプロセッサ命令を含み、
前記方法は、前記プロセッサ命令が、
目標アドレスを計算することであって、前記目標アドレスは、前記識別値Vと前記既定の変位値と前記ランダム値THとの組み合わせから導出される、ことと、
プログラム実行を前記目標アドレスに方向付けることと、
2つの分岐のうちの一方にプログラムフローを方向付けるために、前記目標アドレスから始まる1以上の命令を実行することと
を前記プロセッサに行わせることを含む、方法。 - 前記識別値を前記既定の変位値および前記ランダム値THに組み合わせることは、条件付きの評価毎にランダムな数の命令を加える、請求項1に記載の方法。
- 前記プロセッサ命令が、それぞれのサブルーチンの呼出しを含み、前記サブルーチンは、前記2つの分岐のうちの一方にサブルーチンのリターンアドレスを変更するための命令を含む、請求項2に記載の方法。
- 前記目標アドレスは、前記プロセッサの拡張されたアドレスモードを用いて計算される、請求項1に記載の方法。
- 暗号化演算を実行するプロセッサ上で実行されるプログラムにおいて安全な態様で条件付き分岐演算を実行する方法であって、前記プロセッサは、制御ユニットと算術演算論理ユニット(ALU)とを含み、前記プログラムは、一連の命令を含み、前記条件付き分岐は、実行されると、実行のために複数の実行分岐のうちの1つを選択することを前記制御ユニットに行わせ、
前記制御ユニットは、前記ALUが識別値Vをランダム値に組み合わせた結果に応じて、前記複数の実行分岐のうちの1つを選択し、前記識別値は、2つの基準値であるVmaxおよびVminのうちの一方に等しく、前記分岐のそれぞれは、アドレスのそれぞれの組に関連付けられており、
前記方法は、前記一連の命令が、プロセスを実行することを前記プロセッサに行わせることを含み、
前記プロセスは、
(a)前記識別値Vおよび前記ランダム値から導出される目標アドレスを計算することであって、前記目標アドレスは、前記アドレスのそれぞれの組のうちの1つの組に配置される、ことと、
(b)前記目標アドレスにおける1以上の命令に従うことであって、前記1以上の命令は、前記アドレスのそれぞれの組のうちの前記1つの組に関連付けられた分岐にプログラム実行を方向付けることを前記制御ユニットに行わせる、ことと
を含む、方法。 - 前記アドレスの各組は、複数のアドレスを含む、請求項5に記載の方法。
- ある組の範囲内の各目標アドレスにおける命令は、複数の同一の命令を含み、前記複数の同一の命令のそれぞれは、前記組に関連付けられた分岐に実行を方向付ける、請求項5に記載の方法。
- ある組における命令は、シーケンシャルな演算およびランダムなアドレスである、請求項5に記載の方法。
- 前記目標アドレスにおける命令は、前記プロセッサの拡張されたアドレスモードに従っている、請求項5に記載の方法。
- 装置であって、前記装置は、
プロセッサによって実行可能な一連の命令を格納するメモリであって、前記命令は、安全な態様で条件付き分岐演算を実行するように動作可能であり、前記一連の命令は、プログラムにおける条件付き分岐の位置において2つの分岐のうちの一方にプログラム実行を方向付けるためのプロセッサ命令を含む、メモリと、
制御ユニットと算術演算論理ユニット(ALU)とを含むプロセッサと
を含み、
前記プロセッサは、
前記ALUが、識別値Vを既定の変位値およびランダム値THに組み合わせることに基づいて、目標アドレスを計算する動作であって、前記ランダム値THは、上限値Vmaxと下限値Vminとによって境界が定義されている、動作と、
前記制御ユニットが、プログラム実行を前記目標アドレスに方向付ける動作と、
前記ALUが、前記2つの分岐のうちの一方にプログラムフローを方向付けるために、前記目標アドレスから始まる命令を実行する動作と
を実行するように動作可能である、装置。 - 前記識別値を前記既定の変位値および前記ランダム値THに組み合わせることは、条件付きの評価毎にランダムな数の命令を加える、請求項10に記載の装置。
- 前記プロセッサ命令が、それぞれのサブルーチンの呼出しを含み、前記サブルーチンは、前記2つの分岐のうちの一方にサブルーチンのリターンアドレスを変更するための命令を含む、請求項10に記載の装置。
- 前記目標アドレスは、前記プロセッサの拡張されたアドレスモードを用いて計算される、請求項10に記載の装置。
- 装置であって、前記装置は、
プロセッサによって実行可能な一連の命令を格納するメモリであって、前記命令は、安全な態様で条件付き分岐演算を実行するように動作可能であり、前記一連の命令は、プログラムにおける条件付き分岐の位置において2つの分岐のうちの一方にプログラム実行を方向付けるためのプロセッサ命令を含み、前記分岐のそれぞれは、アドレスのそれぞれの組に関連付けられている、メモリと、
制御ユニットと算術演算論理ユニット(ALU)とを含むプロセッサと
を含み、
前記プロセッサは、
前記ALUが、識別値Vをランダム値に組み合わせることに基づいて、目標アドレスを計算する動作であって、前記識別値は、2つの基準値であるVmaxおよびVminのうちの一方に等しく、前記目標アドレスは、前記アドレスのそれぞれの組のうちの1つの組に配置される、動作と、
前記制御ユニットが、プログラム実行を前記目標アドレスに方向付ける動作と、
前記ALUが、前記アドレスのそれぞれの組のうちの前記1つの組に関連付けられた分岐にプログラム実行を方向付けることを前記制御ユニットに行わせる命令に従う動作と
を実行するように動作可能である、装置。 - 前記アドレスの各組は、複数のアドレスを含む、請求項14に記載の装置。
- ある組の範囲内の各目標アドレスにおける命令は、複数の同一の命令を含み、前記複数の同一の命令のそれぞれは、前記組に関連付けられた分岐に実行を方向付ける、請求項14に記載の装置。
- ある組における命令は、シーケンシャルな演算およびランダムなアドレスである、請求項14に記載の装置。
- 前記目標アドレスにおける命令は、前記プロセッサの拡張されたアドレスモードに従っている、請求項14に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA002258338A CA2258338C (en) | 1999-01-11 | 1999-01-11 | Method and apparatus for minimizing differential power attacks on processors |
CA2,258,338 | 1999-01-11 | ||
PCT/CA2000/000021 WO2000042511A1 (en) | 1999-01-11 | 2000-01-11 | Method and apparatus for minimizing differential power attacks on processors |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012134710A Division JP2012198565A (ja) | 1999-01-11 | 2012-06-14 | 処理装置に対する特異な電力攻撃を最小限にする方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002535705A JP2002535705A (ja) | 2002-10-22 |
JP5059258B2 true JP5059258B2 (ja) | 2012-10-24 |
Family
ID=4163171
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000594019A Expired - Lifetime JP5059258B2 (ja) | 1999-01-11 | 2000-01-11 | 処理装置に対する差分電力攻撃を最小限にする方法および装置 |
JP2012134710A Pending JP2012198565A (ja) | 1999-01-11 | 2012-06-14 | 処理装置に対する特異な電力攻撃を最小限にする方法および装置 |
JP2013035344A Pending JP2013138496A (ja) | 1999-01-11 | 2013-02-26 | 処理装置に対する特異な電力攻撃を最小限にする方法および装置 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012134710A Pending JP2012198565A (ja) | 1999-01-11 | 2012-06-14 | 処理装置に対する特異な電力攻撃を最小限にする方法および装置 |
JP2013035344A Pending JP2013138496A (ja) | 1999-01-11 | 2013-02-26 | 処理装置に対する特異な電力攻撃を最小限にする方法および装置 |
Country Status (6)
Country | Link |
---|---|
EP (2) | EP1161726B1 (ja) |
JP (3) | JP5059258B2 (ja) |
AU (1) | AU1960600A (ja) |
CA (1) | CA2258338C (ja) |
DE (2) | DE60005311T2 (ja) |
WO (1) | WO2000042511A1 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001306400A (ja) * | 2000-04-21 | 2001-11-02 | Sharp Corp | 半導体記憶装置、その制御装置、および電子機器 |
US9323955B2 (en) | 2000-12-21 | 2016-04-26 | Gemalto Sa | Method for protecting a logic or mathematical operator installed in an electronic module with a microprocessor as well as the associated embedded electronic module and the system |
FR2818772A1 (fr) * | 2000-12-21 | 2002-06-28 | Bull Cp8 | Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes |
JP4199937B2 (ja) | 2001-03-06 | 2008-12-24 | 株式会社日立製作所 | 耐タンパー暗号処理方法 |
FR2831739B1 (fr) * | 2001-10-31 | 2005-07-22 | Gemplus Card Int | Procede de mise en oeuvre securisee d'un module fonctionnel, dans un composant electronique et composant correspondant |
WO2003042799A2 (en) | 2001-11-14 | 2003-05-22 | International Business Machines Corporation | Device and method with reduced information leakage |
US8582774B2 (en) | 2002-03-07 | 2013-11-12 | Gemalto Sa | Method for making safe an electronic cryptography assembly with a secret key |
DE10260801A1 (de) * | 2002-12-23 | 2004-07-08 | Infineon Technologies Ag | Verfahren zum Ausführen eines bedingten Sprungbefehls |
US20040162993A1 (en) * | 2003-02-13 | 2004-08-19 | Yannick Teglia | Antifraud method of an algorithm executed by an integrated circuit |
DE10310781A1 (de) * | 2003-03-12 | 2004-09-30 | Infineon Technologies Ag | Verfahren zum Betreiben eines Mikroprozessors und eine Mikroprozessoranordnung |
GB2399426A (en) * | 2003-03-12 | 2004-09-15 | Sharp Kk | Fault detection in data processing apparatus |
DE602005015157D1 (de) * | 2004-05-11 | 2009-08-13 | St Microelectronics Sa | Verzweigungsschutz in einem Programm |
EP1899804B1 (en) | 2005-06-29 | 2012-11-07 | Irdeto B.V. | Arrangement for and method of protecting a data processing device against a cryptographic attack or analysis |
FR2888369B1 (fr) * | 2005-07-11 | 2007-10-26 | Oberthur Card Syst Sa | Protection contre les attaques par generation de fautes sur les instructions de saut |
DE102006014353B4 (de) * | 2006-03-28 | 2007-11-22 | Siemens Ag | Verfahren zum sicheren Ermitteln von Daten |
CN110199339B (zh) * | 2017-01-20 | 2022-07-12 | 日本电信电话株式会社 | 秘密计算系统、秘密计算装置、秘密计算方法、记录介质 |
CN111176729A (zh) * | 2018-11-13 | 2020-05-19 | 深圳市中兴微电子技术有限公司 | 一种信息处理方法、装置及计算机可读存储介质 |
CN109493564B (zh) * | 2018-11-28 | 2020-06-16 | 阿里巴巴集团控股有限公司 | 一种报警方法、装置及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4519036A (en) * | 1983-01-05 | 1985-05-21 | Emi Limited | Program storage hardware with security scheme |
US5627893A (en) * | 1992-12-22 | 1997-05-06 | Telstra Corporation Limited | Cryptographic method |
US5675645A (en) * | 1995-04-18 | 1997-10-07 | Ricoh Company, Ltd. | Method and apparatus for securing executable programs against copying |
US6526456B1 (en) * | 1996-07-01 | 2003-02-25 | David Ian Allan | Distribution and controlled use of software products |
JP3625340B2 (ja) * | 1996-09-19 | 2005-03-02 | 株式会社東芝 | セキュリティシステム |
JP3440763B2 (ja) * | 1996-10-25 | 2003-08-25 | 富士ゼロックス株式会社 | 暗号化装置、復号装置、機密データ処理装置、及び情報処理装置 |
US5991415A (en) * | 1997-05-12 | 1999-11-23 | Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science | Method and apparatus for protecting public key schemes from timing and fault attacks |
US6804782B1 (en) * | 1999-06-11 | 2004-10-12 | General Instrument Corporation | Countermeasure to power attack and timing attack on cryptographic operations |
JP4680876B2 (ja) * | 2006-12-11 | 2011-05-11 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び命令フェッチ制御方法 |
-
1999
- 1999-01-11 CA CA002258338A patent/CA2258338C/en not_active Expired - Lifetime
-
2000
- 2000-01-11 AU AU19606/00A patent/AU1960600A/en not_active Abandoned
- 2000-01-11 JP JP2000594019A patent/JP5059258B2/ja not_active Expired - Lifetime
- 2000-01-11 EP EP00900195A patent/EP1161726B1/en not_active Expired - Lifetime
- 2000-01-11 DE DE60005311T patent/DE60005311T2/de not_active Expired - Lifetime
- 2000-01-11 EP EP03018048.3A patent/EP1365308B2/en not_active Expired - Lifetime
- 2000-01-11 DE DE60041285T patent/DE60041285D1/de not_active Expired - Lifetime
- 2000-01-11 WO PCT/CA2000/000021 patent/WO2000042511A1/en active IP Right Grant
-
2012
- 2012-06-14 JP JP2012134710A patent/JP2012198565A/ja active Pending
-
2013
- 2013-02-26 JP JP2013035344A patent/JP2013138496A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
AU1960600A (en) | 2000-08-01 |
JP2002535705A (ja) | 2002-10-22 |
JP2013138496A (ja) | 2013-07-11 |
EP1365308A2 (en) | 2003-11-26 |
EP1365308B2 (en) | 2017-06-21 |
DE60005311T2 (de) | 2004-06-24 |
WO2000042511A1 (en) | 2000-07-20 |
EP1365308B1 (en) | 2008-12-31 |
EP1161726B1 (en) | 2003-09-17 |
JP2012198565A (ja) | 2012-10-18 |
CA2258338A1 (en) | 2000-07-11 |
DE60005311D1 (de) | 2003-10-23 |
EP1161726A1 (en) | 2001-12-12 |
DE60041285D1 (de) | 2009-02-12 |
CA2258338C (en) | 2009-02-24 |
EP1365308A3 (en) | 2006-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5059258B2 (ja) | 処理装置に対する差分電力攻撃を最小限にする方法および装置 | |
US8660264B2 (en) | Method and apparatus for minimizing differential power attacks on processors | |
US8095993B2 (en) | Cryptographic architecture with instruction masking and other techniques for thwarting differential power analysis | |
US8402287B2 (en) | Protection against side channel attacks | |
May et al. | Non-deterministic processors | |
US8621239B2 (en) | Method for strengthening the implementation of ECDSA against power analysis | |
EP1256203A2 (en) | Encoding method and system resistant to power analysis | |
JP4680876B2 (ja) | 情報処理装置及び命令フェッチ制御方法 | |
CA2522995C (en) | Processing a security message authentication control instruction | |
CN111046381A (zh) | 一种嵌入式cpu抗差分功耗分析装置及方法 | |
Wang et al. | A performance and area efficient ASIP for higher-order DPA-resistant AES | |
EP1501236B1 (en) | Error correction for cryptographic keys | |
Chen et al. | Mind your nonces moving: Template-based partially-sharing nonces attack on SM2 digital signature algorithm | |
Tillich | Instruction Set extensions for support of Cryptography on Embedded Systems | |
EP2343664A1 (en) | Cryptographic device | |
WO2002027479A1 (en) | Computer instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061218 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20100121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100416 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100514 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100716 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100726 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100813 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100929 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110131 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110203 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20110401 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120514 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120517 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120614 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120802 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150810 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5059258 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |