JP2009531725A - 安全にデータを求める方法 - Google Patents

安全にデータを求める方法 Download PDF

Info

Publication number
JP2009531725A
JP2009531725A JP2009501867A JP2009501867A JP2009531725A JP 2009531725 A JP2009531725 A JP 2009531725A JP 2009501867 A JP2009501867 A JP 2009501867A JP 2009501867 A JP2009501867 A JP 2009501867A JP 2009531725 A JP2009531725 A JP 2009531725A
Authority
JP
Japan
Prior art keywords
register
instruction
bit
value
contents
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.)
Granted
Application number
JP2009501867A
Other languages
English (en)
Other versions
JP4909403B2 (ja
Inventor
ブラウン ミヒャエル
カーグル アントン
マイヤー ベルント
ピーカ シュテファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Publication of JP2009531725A publication Critical patent/JP2009531725A/ja
Application granted granted Critical
Publication of JP4909403B2 publication Critical patent/JP4909403B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7266Hardware adaptation, e.g. dual rail logic; calculate add and double simultaneously
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

本発明の課題はサイドチャネル攻撃に対するセキュリティをさらに高める安全なデータ処理方法を提供することである。この課題は、とりわけビットに依存したレジスタ内容のスワップを行うための、コプロセッサの命令に対する命令コードを求めることにより解決される。その際、コプロセッサの技術的形態ゆえに、レジスタAからレジスタBへのレジスタ内容のシフトは外部からはレジスタAからレジスタCへのシフトと区別ができないということが利用される。

Description

本発明は安全にデータを求める方法に関するものであり、第1のプロセッサにおいて、楕円曲線の点に対して鍵を用いた数学的演算を適用する。なお、鍵はビット(bi)の列により2進数として表現可能である。
非対称暗号系は秘密鍵と公開鍵の鍵ペアによって高レベルのセキュリティを保証することにより、攻撃者が有限時間内に秘密鍵又は公開鍵で暗号化されたメッセージを解読することをほぼ不可能にする。楕円曲線に基づく暗号系のような通常の暗号系が基礎とする暗号化は、多項式時間内に実行可能であるが、鍵のビット長の指数時間内でしか反転ができない。今日、楕円曲線に基づくシステムでは、n=160〜192ビットの長さの鍵が使用されており、RSAアルゴリズムに基づくシステムでは、ほぼ同じセキュリティレベルのためにn=1024〜1536ビットの長さを当てている。
このように、楕円曲線に基づいた暗号化法は他の暗号化法よりも効率的であり、同程度のセキュリティレベルを達成する場合でもシステムパラメータの伝送に必要な帯域幅が狭くて済む。
ここでは、例として、2人の通信加入者の間の共通鍵を取り決める周知のディフィ・ヘルマン法が楕円曲線の輪郭に基づいているとする。この場合、第1の通信加入者Aはセキュリティパラメータraを、第2の通信加入者Bはセキュリティパラメータrbを知っている。両通信加入者が楕円曲線とこの楕円曲線上の共通の点Pとに関して合意した後、通信加入者Aは値Qa=ra*Pを、通信加入者Bは値Qb=rb*Pを求める。
続いて、通信加入者Aから値Qaが通信加入者Bに伝送され、値Qbが通信加入者Bから通信加入者Aに伝送される。さらにスカラー乗算により、通信加入者Aは共通鍵K=ra*Qb=ra*rb*Pを求め、通信加入者Bも同じ共通鍵K=rb*Qa=rb*ra*Pを求める。
このように、このスカラー乗算は楕円曲線に基づいた暗号化法の基本ブロックを形成するものである。楕円曲線の使用は特に有利である。というのも、莫大な計算コストをかけなければ反転は、つまり、既知の点Qa,bとPからQa,b=ra,b*Pとなるスカラーra,bを求めることはできないからである。今日の知識レベルによれば、スカラー乗算は多項式時間で計算可能であるが、指数時間でしか反転ができない。
しかし、楕円曲線に基づいた公知の暗号化法はいわゆるサイドチャネル攻撃に対して脆弱である。サイドチャネル攻撃は暗号化の反転に基づいた攻撃法に対する代案であり、暗号化の基礎をなすアルゴリズムをできるだけ効率的に破るものである。サイドチャネル攻撃は、とりわけ、暗号化されたメッセージの交換又はディジタル署名の生成又はメッセージの復号化のために秘密鍵情報が記憶された携帯ツール、例えばスマートカードやドングルのような携帯ツールで行使することが可能である。
攻撃者は相応する回路のデータラインにアクセスすることが比較的容易であることを利用して、電流、電磁放射、誘発させた故障の結果、又は所定の計算の所要時間などの物理量を測定する。単純電力解析(SPA)に基づいて測定値を直接に評価したり、又はストレージオシロスコープにより電流などの測定値を記録し、その後で統計的な評価を行うことにより、基礎となるアルゴリズムに関する情報を効率的に得ることができ、最悪の場合には、現行の鍵に関する情報を得ることもできる。
後者については、例を挙げて詳しく説明しなければならない:
暗号化法では、楕円曲線に基づくアルゴリズムであろうと、RSA法に基づくアルゴリズムであろうと、数学的演算の使用が予想される。
楕円曲線の場合であれば、スカラー乗算Q=k*Pが数学的演算として実行される。ここで、Pは有限体K上の楕円曲線の点であり、kは鍵又は鍵から導かれる量である。
スカラー乗算の考えられる1つの変換は演算装置上で以下のアルゴリズムを実行することにより行うことができる。ここで、鍵kは2進表現(bi,i=n−1...0)により設定されている。
アルゴリズム1:EC−楕円曲線:Q=k*P
(1.1)Q←0
(1.2)i←n−1
(1.3)i>−1である間
(1.3.1)Q←2*Q
(1.3.2)bi=1ならば、Q←Q+P
(1.3.3)i←i−1
(1.4)Qを返す
単純電力解析(SPA)の場合、スカラー乗算の電力消費プロファイルが解析される。このスカラー乗算は主に加算と2倍算とから成る。しかしながら、これらの演算はKにおける基本演算の数という点で著しく異なるため、電力消費も異なる。したがって、適当なサイドチャネル攻撃により、個々のビット、ひいてはkそのものの2進表現を逆推論することができる。
このような攻撃に対して考えられる防衛ステップは、可能な2つのビット状態0と1に関して、各ビットの値に依存する電流の流れと計算所要時間を、以下に示すように等しくしてしまうことである。
楕円曲線Eの点Pはそのx座標とy座標とにより与えられる。楕円曲線Eの曲線方程式によれば、1つのx値に対して高々2つの異なるy値y1及びy2が存在するので、点(x,y1)及び(x,y2)は楕円曲線E上の点である。それゆえ、楕円曲線E上の点を一意的に決定するには、x座標の他にあと1ビットの追加情報しか必要ない。
有限素体上の楕円曲線Eの場合であれば、例えば各点のy座標のいわゆる最下位ビット(LSB)又はy座標の符号だけで付加情報として十分である。
楕円曲線のこれらの特徴は、いわゆるMontgomery-Leiterアルゴリズムにおいて利用される。Montgomery-Leiterアルゴリズムは楕円曲線上でスカラー乗算を実施するための広く知られた方法である。Montgomery-Leiterアルゴリズムは、点Pのスカラー倍のx座標の計算にPのx座標だけが使用されるように実装されうる。また、Montgomery-Leiterアルゴリズムは、後で示されるように、単純電力解析に対抗する非常に良い方法でもあるので、組込システムで実行される暗号系において実装されることが多い。
以下に説明するMontgomery-Leiterアルゴリズムの方法によれば、楕円曲線上にある点Pのスカラー倍k*Pが計算される。
2進表現で与えられたスカラーk=(bn-1,...,bi,...,b0)は、いわゆる最上位ビット(MSB,N1)から始めて、ビットごとに処理される。
アルゴリズム2:EC−楕円曲線:Q=k*P
Montgomery-Leiter:
(2.1)R←P,S←0
(2.2)i←n−1
(2.3)i>−1である間
(2.3.1)bi=1ならば、{S←S+R,R←2*R}
(2.3.2)でなければ、{R←R+S,S←2*S}
(2.3.3)i←i−1
(2.4)R,Sを返す
(2.5)点R,S及びPからk*Pを再構成する
図示の例では、加算と2倍算はビットに依存せずに完全に同じ形で行われている。それゆえ、演算シーケンスの面からはビット列を逆推論することができない。しかしながら、ジャンプ命令(「ならば」、「でなければ」)には問題がある。というのも、ジャンプ命令は異なるアドレスへのジャンプをもたらすものであり、異なるアドレスへのジャンプは異なる電力消費として現れるからである。
したがって、本発明の課題は、サイドチャネル攻撃に対するセキュリティをさらに高める安全なデータ処理方法を提供することである。
本発明によれば、この課題は請求項1に記載された特徴を備えた方法により解決される。本発明の有利な実施形態は従属請求項に記載されている。
本発明による安全にデータを求める方法では、第1のプロセッサにおいて、鍵を用いた数学的な演算が楕円曲線の点に対して適用される。なお、鍵はビット(bi)の列により2進数として表現可能である。本方法は、別のプロセッサにおいて少なくとも1つのレジスタ内容に対する第1の演算(X)を生じさせる第1の命令(x)と、前記別のプロセッサにおいて第2の演算(Y)を生じさせる第2の命令(y)を有している。これら2つの命令(x,y)に対応して、少なくとも1つの値(d)が求められる。第1の補助変数(R)と第2の補助変数(S)は初期化される、つまり、初期値にセットされる。鍵の各ビット(bi)に対して、以下のステップが逐次的に実行される:
第1の補助変数(R)を別のプロセッサの第1のレジスタに送り、第2の補助変数(S)を前記別のプロセッサの第2のレジスタに送る。ビット(bi)の値と前記少なくとも1つの値(d)とに応じて、第1の命令(x)又は第2の命令(y)が割り当てられるように、出力変数(A)に命令を割り当てる。出力変数(A)を前記別のプロセッサの命令レジスタに送る。
最後に、前記別のプロセッサで更新された第1(R)及び第2(S)の補助変数を求める。ビット(bi)に対してこれらのステップが終了した後で、第1(R)及び/又は第2(S)の補助変数と第1(R)及び/又は第2(S)の補助変数から数学的演算の結果が求められる。
本発明において、別のプロセッサとは、この概念の一般性を損なうことなく、コプロセッサ、とりわけ暗号化コプロセッサを意味する。このコプロセッサは限定された命令セットを有しており、コプロセッサにおいて等価な演算が行われるのか又は不等価な演算が行われるのかが測定によりほぼ識別できるようにハードウェア的に保護されている。
それゆえ、本発明の方法では、とりわけ、コプロセッサに対する指示、いわゆる命令コードが求められる。これらの命令コードは、コプロセッサ内でレジスタ内容のスワップを1回生じさせるか、又はまったく生じさせないものである。コプロセッサの技術的形態ゆえに、例えばレジスタAからレジスタBへのレジスタ内容のシフトは外部からはレジスタAからレジスタCへのシフトと区別ができない。それゆえ、上に述べた課題解決のための一般的なアプローチは、特に、処理されるべき補助変数を含んだメモリ領域へのアドレスを求める代わりに、ビットに依存したレジスタ内容のスワップを行うためのコプロセッサ命令の命令コードを求めることからなる。その際、レジスタ内容のアドレスはコプロセッサにおいて何の役割も演じないことが利用される。というのも、補助変数はすでにコプロセッサのレジスタにロードされており、レジスタはその時その時の命令コードによって暗黙的にアドレッシングされるからである。
この点で、本発明の方法は、とりわけ電力解析によるサイドチャネル攻撃からの保護を明らかに高めるという利点を有している。といのも、2つのレジスタの間でのスワップは専らコプロセッサの内部で行われ、スワップするかしないかは2つの命令コードの送信に基づいており、しかもこの2つの命令コードの実行はコプロセッサにおいては区別できないからである。
本発明の別の重要な利点として、2つの命令コードの差の計算を介してif-else分岐を陰伏的に行うことにより、サイドチャネル攻撃に対して特に脆弱なif-else分岐が回避される。
本発明の使用はコプロセッサに限定されない。したがって、例えば、自己書換えプログラムを実現するために異なる命令コードを選択する際に本発明の方法を使用することが可能であり、このようして陰伏的なif-else分岐を実現することができる。さらに、本発明の方法は冪乗ルーチンとスカラー乗算の他の実装にも転用可能である。
本発明の有利な実施形態によれば、第1の命令(x)と第2の命令(y)は同じハミング重みを有する。よって、有利には、両命令(x,y)ともサイドチャネル攻撃が外部から区別できるようなものでないことが保証される。
以下では、本発明を図面に示した実施例に基づき詳細に説明する。
図1は、コプロセッサの異なるレジスタに補助変数(R,S)を割り当てる様子を概略的に示しており、
図2は、コプロセッサ内部の命令コードによりコプロセッサのレジスタに補助変数(R,S)を割り当てる様子を概略的に示している。
アルゴリズム2に示されている従来の技術によるMontgomery-Leiterの流れによれば、ステップ(2.3.1)及び(2.3.2)では、ビット(bi)に応じて補助変数(R,S)のみがスワップされていることが分かる。
(3.1)bi=1ならば、{S←S+R,R←2*R}
(3.2)でなければ、{R←R+S,S←2*S}
したがって、鍵ビットの値が0である場合には、ループの始めと終わりに補助変数をスワップすることでアルゴリズム2をさらに簡略化することができる。その場合には、F1={S←S+R,R←2*R}として、2つのジャンプアドレスの一方のみを参照するだけでよい。
(4.1)bi=1ならば、F1
(4.2)でなければ、{(R,S)をスワップする、F1、(R,S)をスワップする}
このような方法の基礎をなすMontgomery-Leiterアルゴリズムのハードウェア実装は図1に示されている。2つの補助変数(R)101及び(S)102は鍵ビット(bi)の値に従ってそれぞれコプロセッサ103の第1のレジスタ104又は第2のレジスタ105にシフトされる。鍵ビットの値が例えば1ならば、補助変数(R)101は第1のレジスタ104にシフトされ106、補助変数(S)102は第2のレジスタ105にシフトされる109。鍵ビットの値が0である場合には、補助変数(R)101は第2のレジスタ105にシフトされ107、補助変数(S)102は第2のレジスタ104にシフトされる108。
コプロセッサ103ではどちらの場合にも関数F1が実行されるので、関数F1の結果は必要に応じてさらに1回スワップされなければならない。
しかし、上に説明した方法では、ビット値に応じて、コピー時に1つのコンピュータワードにつき2回のメモリアクセスが必要であるため、サイドチャネル攻撃により検知される可能性が依然として存在するという欠点がある。体の要素が長ければ、多くのアクセスが必要になる。その影響は電力消費に大きく現れる。
本発明によれば、この欠点は補助変数(R,S)のスワップをコプロセッサ内で行うことで解消される。
図2にはこのプロセスが示されている。その時その時の鍵ビット(bi)に関係なく、補助変数(R)201はコプロセッサ203の第1のレジスタ204にシフトされ206、第2の補助変数(S)202はコプロセッサ203の第2のレジスタ205にシフトされる207。しかし、コプロセッサ203の命令コードはその時その時の鍵ビット(bi)に依存して求められ、コプロセッサの命令レジスタにシフトされる。鍵ビットの値が1の場合、第1の命令コードが命令レジスタにシフトされ、その結果、第1のレジスタ204にある補助変数(R)は第3のレジスタ212にシフトされ204、第2のレジスタ205にある補助変数(S)は第4のレジスタ213にシフトされる211。これに対して鍵ビットの値が0の場合には、第2の命令コードが命令レジスタにシフトされ、その結果、第1のレジスタ204にある補助変数(R)は第4のレジスタ213にシフトされ209、第2のレジスタ205にある補助変数(S)は第3のレジスタ212にシフトされる210。
別の実施例では、R,S,Cをコプロセッサの内部データレジスタとする。コプロセッサに対する上記の命令列は次のように表される:
(5.1)if bi=0 then {(R,S)をスワップする}
(5.2)else {(R,S)をスワップしない}
第3のデータレジスタCを用いれば、命令列は次のようにも表すことができる:
(6.1)if bj=0 then {C←R,R←S,S←C}
(6.2)else then{C←R,R←S,R←C}
又は
(7.1)C←R,R←S
(7.2)if bi=0 then {S←C}
(7.3)else then {R←C}
ステップ(7.1)で行われる代入S←C及びR←Cは電力消費に測定可能な違いをもたらさないが、ビットに応じた分岐は依然としてサイドチャネル攻撃から保護されていない。したがって、以下では、命令S←Cを命令コード(x)で、命令R←Cを命令コード(y)で記述し、さらに一般性を損なうことなくx<yであると仮定する。命令コードを有する命令は、相応する命令コードをコプロセッサの命令レジスタに書き込むことにより、コプロセッサによって実行される。これらの仮定の下で、命令列は次のように表すことができる:
(8.1)if bi=0 then {A←x}
(8.2)else then {A←y}
(8.3)C←R,R←S
(8.4)命令コードをAから命令レジスタに書き込む
残された唯一の測定可能なビット依存性は上記アルゴリズムにおける命令コードの代入により生じる。本発明によれば、(8.1)及び(8.2)におけるジャンプ命令は、命令(x)と(y)の間に差d=y−xを求めることにより回避することができる。したがって、ジャンプ命令の結果は以下のようにビットに依存して計算される。
A=x+d・bi
この方法は2つのコンピュータワードh及びh’を加えることによりさらに改善することができる。なお、これら2つのコンピュータワード(h,h’)は、その時その時の鍵ビットbiであるコンピュータワードhの最下位ビットによってのみ区別されるものである。ゆえに、biは減算h−h’=biにより得られ、求められるべき命令コードは次のようにして計算することができる:
A=x+h・d−h’・d
この多項式は次のアルゴリズムで記述される:
(9.1)biをワードhのLSBへと巡回させる
(9.2)hをh’にコピーし、h’のLSBを削除する
(9.3)A←x
(9.4)m←h*d
(9.5)A←A+m
(9.6)m←h’*d
(9.7)A←A−m
この結果をアルゴリズム2で記述されたMontgomery-Leiterアルゴリズムに適用すれば、次のアルゴリズムが得られる:
(10.1)x←命令{S←C} //R,Sのレジスタ内容をスワップする
(10.2)y←命令{R←C} //R,Sのレジスタ内容をスワップしない
(10.3)R←P,S←0
(10.4)d←y−x ただしx<y
(10.5)for i←n−1 to 0 do
(10.6) biをワードhのLSBへと巡回させる
(10.7) hをh’にコピーし、h’のLSBを削除する
(10.8) A←x
(10.9) m←h*d
(10.10) A←A+m
(10.11) m←h’*d
(10.12) A←A−m
(10.13) C←R,R←S
(10.14) Aをコプロセッサの命令レジスタにロードする
(10.15) コプロセッサにおいてS←S+R,R←2*Rを計算する
(10.16) C←R,R←S
(10.17) Aをコプロセッサの命令レジスタにロードする
(10.18)end
(10.19)点R,S及びPからk*Pを再構成する
別の実施例では、例えばInfineon社製のチップSLE66CX320P上でコプロセッサACEを使用した場合の本発明による実装が記述される。
暗号化コプロセッサACEは4つのデータレジスタCR0,CR1,CR2及びCR3とオペランドレジスタCを有している。この実施例では、2つの補助変数がデータレジスタCR1及びCR2にロードされる。次に、データレジスタCR1及びCR2の内容はスワップされなければならない。秘密ビットはワーキングレジスタAの最下位ビット(LSB)であるとする。これはこのケースでは8ビットの長さを有している。
暗号化コプロセッサACEはとりわけ命令move_CR1_C及びmove_CR2_cを使用することでき、これらの命令を用いてレジスタCの内容をレジスタCR1ないしレジスタCR2にシフトする。第1の命令の命令コードxは0x6bであり、第2の命令の命令コードyは0x73である。2つの命令コードの差dは8であるから、上記アルゴリズム(9.4)におけるh・dとの乗算はシフト命令で代用することができ、このようにしてアルゴリズムは簡略化される。下記のアルゴリズムは第1及び第2の命令に対する所望の命令コードを求める様子を示したものであり、演算&はAND論理演算を表している。
命令コードの選択
(11.1)Aを左に3ビットだけサイクリックに巡回させる
(11.2)B←A+0x6b
(11.3)A←A&0xf7を計算する(下位第3ビットをマスクする)
(11.4)A←B−A
ステップ(11.1)において、鍵は、したがってまた識別のためのビットは、3ビット分のシフト命令により左へサイクリックに巡回させられる。これは差8を掛けることに相当する。ステップ(11.2)では、命令コードxの値が加算される。ステップ(11.3)では、識別のためのビットが削除され、続いて残りの部分が第4のステップ(11.4)においてさらに差し引かれる。
下記の実装は代替的な解決手段である。なお、演算|はOR論理演算を表している:
命令コードの選択
(12.1)A&0xfdを計算する(下位第2ビットをマスクする)
(12.2)A←A+1
(12.3)A&0x03を計算する(下位第2ビットまでのすべてのビットをマスクする)
(12.4)Aを左に3ビットだけサイクリックに巡回させる
(12.5)A|0x63を計算する
ステップ(12.1)から(12.3)における代入の効果は、識別のために使用される鍵の最下位ビットに応じ、ビットの値が0である場合にはレジスタAに値1が代入され、ビットの値が1である場合にはレジスタAに値2が代入されることにある。ステップ(12.4)では、レジスタAの内容が左に3ビットだけ巡回される。これは8を掛けることに相当する。ステップ(12.5)では、命令コードが算出される。所望の命令コードはそれ以降レジスタAの中にある。
アルゴリズム12を使用すれば、サイドチャネル攻撃から保護された2つのレジスタのスワップは完全となる:
(13.1)A&0xfdを計算する(下位第2ビットをマスクする)
(13.2)A=A+1
(13.3)A&0x03を計算する(下位第2ビットまでのすべてのビットをマスクする)
(13.4)Aを左に3ビットだけ巡回させる
(13.5)A|0x63を計算する
(13.6)ACEレジスタCR1をCへシフトする
(13.7)ACEレジスタCR2をCR1へシフトする
(13.8)命令コードAをコプロセッサACEの命令レジスタに書き込む
アルゴリズム13では、アルゴリズム12から暗号化コプロセッサに対する命令コードを求める計算ステップが、所与の鍵ビットに依存してコプロセッサのレジスタCR1及びCR2の内容をスワップするアルゴリズム8からのステップと組み合わされる。
しかし、本発明は本明細書で示した実施例に限定されない。
コプロセッサの異なるレジスタに補助変数(R,S)を割り当てる様子を概略的に示す。 コプロセッサ内部の命令コードによりコプロセッサのレジスタに補助変数(R,S)を割り当てる様子を概略的に示す。

Claims (12)

  1. 第1のプロセッサにおいてビット(bi)の列により2進数として表現可能な鍵を用いた数学的演算を楕円曲線上の点に適用するようにした安全にデータを求めるための方法であって、別のプロセッサにおいて少なくとも1つのレジスタ内容に対する第1の演算(X)を生じさせる第1の命令(x)と、前記別のプロセッサにおいて第2の演算(Y)を生じさせる第2の命令(y)を有する様式の方法において、
    前記2つの命令(x,y)に応じて少なくとも1つの値(d)を求めるステップと、
    第1の補助変数(R)及び第2の補助変数(S)を初期化するステップと、
    前記鍵の各ビット(bi)について、
    (a)第1の補助変数(R)を前記別のプロセッサの第1のレジスタに、第2の補助変数(S)を第2のレジスタに伝送するステップ、
    (b)ビット(bi)の値と前記少なくとも1つの値(d)に応じて第1の命令(x)又は第2の命令(y)が割り当てられるように、出力変数(A)に命令を割り当てるステップ、
    (c)前記別のプロセッサの命令レジスタに前記出力変数(A)を伝送するステップ、
    (d)前記別のプロセッサにおいて更新された第1及び第2の補助変数(R,S)を求めるステップを逐次的に実行するステップと、
    前記ビット(bi)に関するステップが終了した後に、第1(R)及び/又は第2(S)の補助変数を出力し、第1(R)及び/又は第2(S)の補助変数から前記数学的演算の結果を求めるステップとを有することを特徴とする、安全にデータを求めるための方法。
  2. 前記別のプロセッサのレジスタ内容に対して前記第1の命令(x)に対応する前記第1の演算(X)を適用すると、前記第1のレジスタの内容と前記第2のレジスタの内容がスワップされるが、前記別のプロセッサのレジスタ内容に対して前記第2の命令(y)に対応する前記第1の演算(Y)を適用しても、前記第1のレジスタの内容と前記第2のレジスタの内容はスワップされない、請求項1記載の方法。
  3. 前記第1の補助変数(R)は有限体上の楕円曲線の点を表すものであり、前記初期化ステップにおいて固定点(P)を割り当てられる、請求項1又は2記載の方法。
  4. 前記第2の補助変数(S)は有限体上の楕円曲線の点を表すものであり、前記初期化ステップにおいて0の値を割り当てられる、請求項1から3のいずれか1項記載の方法。
  5. 前記数学的演算はスカラー乗算(k*P)を含む、請求項1から4のいずれか1項記載の方法。
  6. 前記別のプロセッサで行われる前記第1(R)及び第2(S)の補助変数の更新は、
    第1の算術演算において楕円曲線上の2つの点の加算を行い、第2の算術演算において楕円曲線上の点を2倍するスカラー乗算又は楕円曲線上の点をそれ自身に加える加算を行うステップと、
    前記ビット(bi)の値に応じて前記第1及び第2の算術演算のそれぞれの結果が前記2つの補助変数(R,S)の一方に割り当てられるように、更新された第1及び第2の補助変数を求めるステップとを含む、請求項1から5のいずれか1項記載の方法。
  7. 前記値(d)は前記2つの命令(x,y)のビット表現間の違いから得られる差分値である、請求項1から6のいずれか1項記載の方法。
  8. 前記ステップ(b)において、現ビット(bi)の値に応じて前記差分値(d)を前記第1の命令(x)に付け加える、その際、
    逐次処理における現ビット(bi)を含む第1のコンピュータワード(h1)を生成し、
    前記第1のコンピュータワード(h1)に前記差分値(d)を乗じて第1の積(m1)を求め、
    前記第1の積(m1)を前記第1の命令(x)に加算して第1の中間値を求め、前記第1のコンピュータワード(h1)から、現ビット(bi)の位置にあるビットがゼロにセットされた第2のコンピュータワード(h2)を生成し、
    前記第2のコンピュータワード(h2)に前記差分値(d)を乗じて第2の積(m2)を求め、
    出力変数(A)が前記第1の命令(x)に割り当てられるか又は第2の命令(y)に割り当てられるように、前記第1の中間結果から前記第2の積(m2)を減算して出力変数(A)を求める、請求項7記載の方法。
  9. 前記ステップ(b)において、出力変数(A)が前記第1の命令(x)に割り当てられるか又は第2の命令(y)に割り当てられるように、前記ビット(bi)の値に応じて前記差分値(d)を前記第2の命令(y)から減算する、請求項7記載の方法。
  10. 逐次処理における現ビット(bi)は最下位ビット(LSB)である、請求項1から9のいずれか1項記載の方法。
  11. 前記第1の命令(x)は前記別のプロセッサの第3のレジスタの内容を前記別のプロセッサの第1のレジスタに送らせるものであり、前記第2の命令(y)は前記第3のレジスタの内容を前記別のプロセッサの第2のレジスタに送らせるものであり、前記ステップ(a)の後、さらに別のステップにおいて、前記第1のレジスタの内容を前記第3のレジスタに送る命令と、前記第2のレジスタの内容を前記第1のレジスタに送る命令が、前記別のプロセッサの命令レジスタに送られる、請求項1から10のいずれか1項記載の方法。
  12. 前記第1(x)及び第2(y)の命令は同じハミング重みを有する、請求項1から11のいずれか1項記載の方法。
JP2009501867A 2006-03-28 2006-12-19 安全にデータを求める方法 Expired - Fee Related JP4909403B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102006014353.1 2006-03-28
DE102006014353A DE102006014353B4 (de) 2006-03-28 2006-03-28 Verfahren zum sicheren Ermitteln von Daten
PCT/EP2006/069917 WO2007112791A1 (de) 2006-03-28 2006-12-19 Verfahren zum sicheren ermitteln von daten

Publications (2)

Publication Number Publication Date
JP2009531725A true JP2009531725A (ja) 2009-09-03
JP4909403B2 JP4909403B2 (ja) 2012-04-04

Family

ID=37913611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009501867A Expired - Fee Related JP4909403B2 (ja) 2006-03-28 2006-12-19 安全にデータを求める方法

Country Status (8)

Country Link
US (1) US8369514B2 (ja)
EP (1) EP1999884B1 (ja)
JP (1) JP4909403B2 (ja)
KR (1) KR101338016B1 (ja)
CN (1) CN101405988B (ja)
DE (1) DE102006014353B4 (ja)
ES (1) ES2379100T3 (ja)
WO (1) WO2007112791A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621212B2 (en) 2009-12-22 2013-12-31 Infineon Technologies Ag Systems and methods for cryptographically enhanced automatic blacklist management and enforcement
US8611540B2 (en) * 2010-06-23 2013-12-17 Damaka, Inc. System and method for secure messaging in a hybrid peer-to-peer network
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
US8630411B2 (en) 2011-02-17 2014-01-14 Infineon Technologies Ag Systems and methods for device and data authentication
DE102011006000B4 (de) 2011-03-23 2015-01-15 Infineon Technologies Ag Signaturaktualisierung durch Codetransformation
US9087192B2 (en) * 2013-09-10 2015-07-21 Infineon Technologies Ag Electronic circuit and method for monitoring a data processing
FR3017476B1 (fr) * 2014-02-12 2017-06-09 Secure-Ic Sas Procede de contremesure pour un composant electronique mettant en œuvre un algorithme de cryptographie sur une courbe elliptique
WO2016053792A1 (en) 2014-10-03 2016-04-07 Cryptography Research, Inc. Exponent splitting for cryptographic operations
US9735953B2 (en) * 2015-03-06 2017-08-15 Qualcomm Incorporated Side channel analysis resistant architecture
FR3040512B1 (fr) 2015-08-27 2017-09-08 Stmicroelectronics Rousset Protection d'un calcul d'exponentiation modulaire
FR3040511B1 (fr) * 2015-08-27 2017-09-08 Stmicroelectronics Rousset Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire
US20170192688A1 (en) 2015-12-30 2017-07-06 International Business Machines Corporation Lazy deletion of vaults in packed slice storage (pss) and zone slice storage (zss)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0455756A (ja) * 1990-06-26 1992-02-24 Nippon Steel Corp 線材の超音波探傷装置
JPH0515526A (ja) * 1991-07-15 1993-01-26 Mitsubishi Electric Corp X線シミユレータ画像処理装置
JP2002535705A (ja) * 1999-01-11 2002-10-22 サーティコム コーポレーション 処理装置に対する特異な電力攻撃を最小限にする方法および装置
JP2004516706A (ja) * 2000-12-13 2004-06-03 インフィネオン テクノロジーズ アクチエンゲゼルシャフト 暗号プロセッサ
JP2006078943A (ja) * 2004-09-13 2006-03-23 Mitsuko Miyaji べき演算装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0933695B1 (en) * 1998-01-28 2006-03-15 Hitachi, Ltd. IC card equipped with elliptic curve encryption processing facility
US7092523B2 (en) * 1999-01-11 2006-08-15 Certicom Corp. Method and apparatus for minimizing differential power attacks on processors
CN1380766A (zh) * 2001-04-16 2002-11-20 南相浩 密钥交换与密钥传递方案
DE10156708B4 (de) * 2001-11-19 2005-09-29 Infineon Technologies Ag Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve
JP4067818B2 (ja) * 2001-12-10 2008-03-26 富士通株式会社 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
DE10202700A1 (de) * 2002-01-24 2003-08-07 Infineon Technologies Ag Vorrichtung und Verfahren zum Erzeugen eines Befehlscodes
WO2004055756A1 (ja) 2002-12-18 2004-07-01 Fujitsu Limited 秘密鍵を用いた耐タンパ楕円曲線暗号処理
EP1653428B1 (en) 2003-08-06 2012-08-15 Fujitsu Limited Elliptic curve encrypting device, elliptic curve encrypting method, elliptic curve encrypting program and computer-readable recording medium recording that program
KR20060081847A (ko) * 2005-01-10 2006-07-13 삼성전자주식회사 비밀키를 보호하는 스마트 카드 및 그것의 방법
CN100536390C (zh) * 2005-05-18 2009-09-02 上海迪申电子科技有限责任公司 一种椭圆曲线密码协处理器
DE102006006057B4 (de) * 2006-02-09 2007-12-27 Infineon Technologies Ag Datenverschlüsselungsvorrichtung und Verfahren zum Verschlüsseln von Daten
US7864951B2 (en) * 2006-07-10 2011-01-04 King Fahd University Of Petroleum And Minerals Scalar multiplication method with inherent countermeasures
DE102007001070B3 (de) * 2006-09-29 2008-04-30 Siemens Ag Verfahren zum verschlüsselten Datenausgleich eines Systems mit mindestens einem Datenträger und einem Lesegerät
US7961872B2 (en) * 2006-12-04 2011-06-14 Lsi Corporation Flexible hardware architecture for ECC/HECC based cryptography
US20080222417A1 (en) * 2007-03-06 2008-09-11 James Downes Method, System, And Apparatus For Nested Security Access/Authentication With Media Initiation
WO2010093831A1 (en) * 2009-02-11 2010-08-19 Social Gaming Network Apparatuses, methods and systems for an interactive proximity display tether with remote co-play
JP5446678B2 (ja) * 2009-09-29 2014-03-19 富士通株式会社 楕円曲線暗号演算装置及び方法
US8775794B2 (en) * 2010-11-15 2014-07-08 Jpmorgan Chase Bank, N.A. System and method for end to end encryption

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0455756A (ja) * 1990-06-26 1992-02-24 Nippon Steel Corp 線材の超音波探傷装置
JPH0515526A (ja) * 1991-07-15 1993-01-26 Mitsubishi Electric Corp X線シミユレータ画像処理装置
JP2002535705A (ja) * 1999-01-11 2002-10-22 サーティコム コーポレーション 処理装置に対する特異な電力攻撃を最小限にする方法および装置
JP2004516706A (ja) * 2000-12-13 2004-06-03 インフィネオン テクノロジーズ アクチエンゲゼルシャフト 暗号プロセッサ
JP2006078943A (ja) * 2004-09-13 2006-03-23 Mitsuko Miyaji べき演算装置

Also Published As

Publication number Publication date
CN101405988B (zh) 2012-03-21
US20100172490A1 (en) 2010-07-08
US8369514B2 (en) 2013-02-05
ES2379100T3 (es) 2012-04-20
DE102006014353B4 (de) 2007-11-22
KR20080112333A (ko) 2008-12-24
EP1999884B1 (de) 2012-02-22
KR101338016B1 (ko) 2013-12-09
DE102006014353A1 (de) 2007-10-04
JP4909403B2 (ja) 2012-04-04
CN101405988A (zh) 2009-04-08
WO2007112791A1 (de) 2007-10-11
EP1999884A1 (de) 2008-12-10

Similar Documents

Publication Publication Date Title
JP4909403B2 (ja) 安全にデータを求める方法
JP4671571B2 (ja) 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ
KR100693239B1 (ko) 정보 처리 장치, ic 카드
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
CN107040362B (zh) 模乘设备和方法
EP2211265B1 (en) Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method
JP2001337599A (ja) 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
JP2009537025A (ja) サイドチャネル攻撃からの保護
WO2018017421A1 (en) Modular exponentiation with side channel attack countermeasures
JP2008541166A (ja) ランダム化されたモジュラー多項式のリダクション方法およびそのためのハードウェア
US8300810B2 (en) Method for securely encrypting or decrypting a message
JP5407352B2 (ja) 復号処理装置、復号処理プログラム、復号処理方法
EP3930252A1 (en) Countermeasures for side-channel attacks on protected sign and key exchange operations
US7809133B2 (en) Randomized modular reduction method and hardware therefor
JP4568886B2 (ja) Rsaタイプの暗号アルゴリズムを安全に実施するための方法、および対応する構成要素
Hutter et al. NaCl’s crypto_box in hardware
TWI512610B (zh) 利用模數的特殊形式之模組約化
JP3733027B2 (ja) 秘密鍵式暗号化アルゴリズムを用いる電子構成部品内の対抗措置方法
Genkin et al. Cache vs. key-dependency: Side channeling an implementation of Pilsung
US11824986B2 (en) Device and method for protecting execution of a cryptographic operation
EP1443699A1 (en) Information processing means and IC card
KR20080012634A (ko) 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
JP6262085B2 (ja) データ処理装置及び復号処理方法
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
JP5179933B2 (ja) データ処理装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20101227

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20101228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110720

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111020

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111215

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: 20120113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees