JP5365624B2 - 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置 - Google Patents

電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置 Download PDF

Info

Publication number
JP5365624B2
JP5365624B2 JP2010505041A JP2010505041A JP5365624B2 JP 5365624 B2 JP5365624 B2 JP 5365624B2 JP 2010505041 A JP2010505041 A JP 2010505041A JP 2010505041 A JP2010505041 A JP 2010505041A JP 5365624 B2 JP5365624 B2 JP 5365624B2
Authority
JP
Japan
Prior art keywords
mod
calculating
multiplication
waveform
bit
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 - Fee Related
Application number
JP2010505041A
Other languages
English (en)
Other versions
JPWO2009122461A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2009122461A1 publication Critical patent/JPWO2009122461A1/ja
Application granted granted Critical
Publication of JP5365624B2 publication Critical patent/JP5365624B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/723Modular exponentiation
    • 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]
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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

Landscapes

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

Description

本発明は暗号の分野に属するもので、暗号プロセッサ内部の秘密鍵を電力解析攻撃と呼ばれる攻撃から防ぐための耐タンパ技術に関するものである。
暗号方式は、共通鍵暗号方式と公開鍵暗号方式に大別される。共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵(秘密鍵)を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。
暗号の分野における技術の一つに、解読技術とよばれるものがある。解読技術とは秘密鍵等の秘密情報を暗号文等の入手可能な情報から推定する技術のことであり、様々な手法が存在する。その中で最近注目されている技術に、電力解析攻撃と呼ばれる手法がある。電力解析攻撃とは、1998年にPaul Kocherによって考案された手法で、スマートカード等に搭載された暗号プロセッサに様々な入力データを与えた時の電力消費データを収集・解析することで、暗号プロセッサ内部の鍵情報を推定する手法である。電力解析攻撃を用いることで、共通鍵暗号、公開鍵暗号共に暗号プロセッサから秘密鍵を推定できることが知られている。
電力解析攻撃には、単純電力解析(Single Power Analysis, 以下SPA), 電力差分攻撃(Differential Power Analysis, 以下DPA)の2種類が存在する。SPAは暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の推定を行う方式、DPAは多数の電力消費データの差分を解析することで秘密鍵の推定を行う方式である。
DESやAESなどの共通鍵暗号方式に対してSPA、DPAを用いた推定法については、下記非特許文献1(以下Kocher99)にて詳細に述べられている。
RSA暗号、楕円曲線暗号などの公開鍵暗号に対してSPA、DPAを用いた推定法については、非特許文献2(Messerges99)や、非特許文献3(Coron99)などの文献にて述べられている。
RSA暗号の演算方法(公知技術)
RSA暗号の復号処理においては、指数剰余演算処理と呼ばれる処理が行われる。指数剰余演算は、秘密鍵d, 暗号文a, 法nに対して、v=ad (mod n)により平文vを計算する処理である。一般的に、RSA暗号における秘密鍵dのビット長は1024-bit以上が用いられているため、このd乗演算を単純な方法で実行すると、およそ21024回の乗算が必要となり、現実的な時間内に計算することが不可能となる。
この処理を効率的に行うためのアルゴリズムとして、バイナリ法、もしくはwindow 法という方法が知られている。バイナリ法は、下記非特許文献4の615ページ、アルゴリズム14.79に掲載されている。window法は、同文献の615ページ, アルゴリズム14.82に掲載されている。これらの方法を用いることで、d乗に必要な演算回数を、21024回から1024の定数倍(この定数は1.5以下の値)にすることができ、効率的な演算を実現することができる。
秘密鍵dをu-bit値とし、その2進表現をd=(du-1,du-2,...,d0)2と表記する。ただし、diはdの個々のビット値を表す。バイナリ法を用いた指数剰余演算のアルゴリズムを図1に、window法を用いてv=ad mod nを計算する指数剰余演算のアルゴリズムを図2に示す。
図1に示すバイナリ法が行っている演算の概要を図3に、図2に示すウィンドウ法が行っている演算の概要を図4に示す。
図1の処理を説明する。dのビット値diを、i=u-1からi=0の順番にチェックする。このチェックの結果、di=1ならば、2乗算と乗算の両方を実行する。di=0ならば、2乗算のみを実行する。この処理をi=u-1からi=0まで繰り返すことで、v=ad(mod n)を計算する。つまり、鍵ビットdiの値と、2乗算、乗算の実行パターンが、直接的に連動していることがバイナリ法の特徴である。
図2の処理を説明する。最初にw[x]=ax(mod n)の作成処理を0<x<2kについて行う。テーブル作成処理の後、u-bit値のd=(du-1,du-2,...d0)2をk-bitごとに分割し、eu/ku個の数列bi(i=0,1,..)を生成する。即ちbi=(dik+k-1,...,dik)2である。ただし、exuはx以上の整数の最小値を表し、例えばe7/3u=e2.333...u=3であり、 e10/5u=e2u=2, である。eu/kuは、u-bitのビット列をk-bitごとに分割したときの分割数を表す。このbiを用いたテーブル索引処理(v=v´w[bi])と、v=v2^k(mod n)で示される2k乗算(2乗算をk回繰り返す)を繰り返すことでv=ad(mod n)を計算する。バイナリ法と異なり、ウィンドウ法では鍵ビットdiの値に関係なく、2乗算をk回、乗算を1回というパターンを繰り返す。
以下の説明では、window法においてテーブル索引に用いられる数列biを「window列」と呼ぶ。
<RSA暗号処理に対する電力解析攻撃(公知技術)>
図1、2で説明したRSA暗号処理に対する電力解析攻撃について説明する。
RSAの処理方法が、バイナリ法であるかwindow法であるかによって、攻撃の手段と結果が異なり、それぞれ以下のとおりである。
・バイナリ法
攻撃者が消費電力から判断する情報:2乗算と乗算を識別。
攻撃者が得る鍵情報:秘密鍵の全ビット値(u-bit全て)
・window法
攻撃者が消費電力から判断する情報:各window列biが、偶数か奇数であるか。
攻撃者が得る鍵情報:秘密鍵のu-bitのうちu/k-bitを解読、k-bitおきに1-bit解読。
すでに説明したとおり、バイナリ法は秘密鍵のビット値が1ならば乗算と2乗算が、0ならば2乗算のみが実行される。よって、2乗算と乗算を消費電力によって識別することができれば、dの全ビットを解読することができる。
ただし、window法においては、2乗算と乗算の実行パターンが秘密鍵の値に関係なく、常に一定となる。よって、上記のような2乗算と乗算を識別する方法では攻撃できない。その代わり、消費電力波形を用いることで、各window列biが偶数か奇数であるかを判別することができる。この判別を行うことで、k-bit値であるbiの最下位ビットを解読できる。図4に示すように、window列biは秘密鍵dをk-bitごとに区切った値なので、個々のbiの最下位ビットを解読することでdのビット値をk-bitごとに1-bit解読することができる。
<バイナリ法(図1)に対する電力解析攻撃>
消費電力波形を用いて、2乗算と乗算を識別する方法を説明する。この識別方法は、以下に示す攻撃法1、攻撃法2の2種類が知られている。いずれの識別方法も、乗算処理の消費電力波形は、乗算のデータ値に依存して変化する、という性質を利用している。
攻撃法1
暗号文aの値として、a= -1 (mod n)を入力した上で、秘密鍵dによる復号処理を実行しその消費電力を測定する。a= -1(mod n)という暗号文を入力することで、復号処理で実行される乗算のデータ値のパターンが以下の3種類のみに限定される。
- 乗算:(1)×(-1)の1種類。
- 2乗算:(1)×(1), (-1)×(-1)の2種類。
d=(10100)2に対して、a = -1 (mod n)を入力した場合の消費電力波形の例を図5に示す。乗算、2乗算合計して全体で7回の演算を実行しているのに対し、消費電力の波形は3パターンのみに限定されている。攻撃者はこれらの波形パターンを観察した上で、2乗算と乗算の実行順序を識別する。
攻撃者は、3種類の波形パターンを識別したのち、それぞれの波形パターンが、乗算、2乗算のいずれに対応しているか判断する必要があるが、3種類の波形パターンと乗算、2乗算の対応関係の組み合わせは高々6通りしか存在しないため、鍵の値を6通りに限定することができる。dの値が1024-bitの場合、総当り法によって鍵を求める場合21024の手間がかかるのに対し、この方法を用いることで6通りに限定することができる。
図1のアルゴリズムの性質をさらに考慮すると、6通りから1通りに限定することができる。まず、図1のアルゴリズムの性質上、最初に実行される波形は必ず(1)×(1)であるので、3とおりの波形パターンのうち、(1)×(1)の乗算波形がどの波形かを判別することができる。(1)×(1) の乗算を行った後の波形パターンは、(1)×(1)もしくは(1)×(-1)の2通りのみに限定されるので、(1)×(1)の波形パターンに続く波形パターンが(1)×(-1)の波形であると判断される。図5においては、(1)×(1)の乗算波形の次の波形パターンが(1)×(-1)の波形である。(-1)×(-1)に示される2乗算の波形パターンは、図1のアルゴリズムの性質から(1)×(-1)の乗算の直後であるので、同様に(-1)×(-1)の波形も確定できる。
-1以外の値をaに入力した場合、図1の乗算、2乗算のi=u-1, ..., 1, 0のループ内で実行される乗算のデータ値は上記の3種類に限定されず、乗算、2乗算を実行するたびに異なるデータ値による乗算処理が行われる。よって、全ての乗算波形が異なる形をしており、攻撃者にはランダムな波形パターンの羅列に見えるので、2乗算と乗算を識別することができない。しかし、a=-1を入力した場合に限り乗算のデータ値は3パターンに限定されるので、波形のパターンが3種類に限定されるため2乗算と乗算を識別することができる。
攻撃法2
攻撃法1は、a= -1 (mod n)を入力し、単一の電力波形を観察することで、2乗算と乗算の判別を行っていた。これに対し、下記で述べる攻撃法2は、a = s (mod n)を入力した時の消費電力波形と、a= -s (mod n)を入力した時の消費電力波形をそれぞれ測定し、これらの差分波形を観察することで2乗算と乗算の識別を行う。ただし、sは任意のデータ値であり、攻撃者が自由に選択することができる。
攻撃法1と同様に、攻撃法2の識別法も、乗算処理の消費電力波形は乗算のデータ値に依存して変化する、という性質を利用している。
a = s (mod n)を入力した時の消費電力波形と、a= -s (mod n)を入力した時の消費電力波形の差分波形は、実行している演算が乗算か2乗算かにより、3パターンに限定される。以下ではまずその原理について説明を行う。
a=s (mod n)を入力した時の消費電力波形と、a=-s (mod n)を入力した時の消費電力波形を、同じタイミングで比較した場合、それぞれの消費電力波形で実行している演算内容を以下に記述する。
・乗算:乗算のデータ値がとりうるパターンは、以下の1パターンである。
[パターン1]
a= sを入力した場合: vs = v×s (mod n)の乗算を実行する。
vは計算途中の中間データであり、図1の変数vである。
a= -sを入力した場合: -vs = v×-s (mod n)の乗算を実行する。
vは計算途中の中間データであり、図1の変数vである。
vの値は、a = sを入力した場合のvと同じ値である。
「パターン1」の場合、C=A×B(mod n)の乗算処理におけるデータ値の違いを、a=sを入力した場合とa=-sを入力した場合について比較すると、Aの値は同一であるが、CとBの値が異なる。よって、乗算処理に関して、a= sを入力した場合とa= -sを入力した場合の差分波形は、Aの値に関する処理部分の波形差分は平坦であるが、B,Cに関する処理部分はデータ値が異なるため振幅が大きな波形となる。
・2乗算:2乗算のデータ値がとりうるパターンは、以下の2パターンである。
[パターン2]
a= sを入力した場合: v2 = v×v (mod n)の2乗算を実行する。
vは計算途中の中間データであり、図1の変数vである。
a= -sを入力した場合: v2 = -v×-v (mod n)の2乗算を実行する。
vは計算途中の中間データであり、図1の変数vである。
vの値は、a = sを入力した場合のvと同じ値である。
「パターン2」の場合、C=A×B(mod n)の乗算処理におけるデータ値の違いを、a=sを入力した場合とa=-sを入力した場合について比較すると、Cの値は同一であるが、AとBの値が異なる。よって、乗算処理に関して、a= sを入力した場合とa= -sを入力した場合の差分波形は、Cの値に関する処理部分の波形差分は平坦であるが、A,Bに関する処理部分はデータ値が異なるため振幅が大きな波形となる。
[パターン3]
a= sを入力した場合: v2 = v×v (mod n)の乗算を実行する。
vは計算途中の中間データであり、図1の変数vである。
a= -sを入力した場合: v2 = v×v (mod n)の乗算を実行する。
vは計算途中の中間データであり、図1の変数vである。
vの値は、a = sを入力した場合のvと同じ値である。
「パターン3」の場合、C=A×B(mod n)の乗算処理におけるデータ値の違いを、a=sを入力した場合とa=-sを入力した場合について比較すると、A,B,C全て同一の値である。よって、乗算処理に関して、a= sを入力した場合とa= -sを入力した場合の差分波形は、A,B,C全ての値が同一であるため完全に平坦な波形となる。
以上により、a=sとa=-sを入力したときの差分波形は、実行している演算が乗算か2乗算かに応じて、3パターンのみの波形に限定できることがわかる。この性質を利用した差分波形の例を図6に示す。
図6に示すように、a=sとa=-sを入力したときの差分波形をとることで、3種類のみの波形パターンを得る。「パターン3」による2乗算は完全に平坦な波形であり、容易に識別することができ、図6の最初の波形が該当する。図1のアルゴリズムの性質上、最初に「パターン3」の2乗算が実行される。残りは、「パターン1」による乗算と、「パターン2」による2乗算の違いを識別する必要があるが、「パターン1」「パターン2」と「乗算」「2乗算」の対応関係は総当りでも2通りしかないため、対応関係を知らなくとも鍵の値を2通りまで絞ることができる。さらに、図1のアルゴリズムの性質を性質により、一つもしくは複数の「パターン3」の波形が続いた後は、必ず「パターン1」となるため、どの差分波形が「パターン1」であるかを一意に識別することができる。図6の場合、左から2番目の波形がこれに該当する。図6におけるこの「パターン1」の波形は、左部分が平坦、かつそれ以外の部分の振幅が大きいことが特徴である。図1のアルゴリズムの性質上、最後の「パターン2」は、「パターン1」の直後である。図6の場合、左から2番目の波形がこれに該当する。図6におけるこの「パターン1」の波形は、右部分が平坦、かつそれ以外の部分の振幅が大きいことが特徴である。
以上により、攻撃者は「パターン1」「パターン2」「パターン3」の波形を識別することで2乗算と乗算を識別することができ、全ての秘密鍵の値を得ることができる。
<window法(図2)に対する電力解析攻撃>
消費電力波形を用いて、window列biが偶数であるか、奇数であるかを識別する方法を説明する。この識別方法は、以下に示す攻撃法3、攻撃法4の2種類が知られている。いずれの識別方法も、乗算処理の消費電力波形は、乗算のデータ値に依存して変化する、という性質を利用している。
攻撃法3
攻撃法1と同様に、暗号文aの値として、a= -1 (mod n)を入力した上で、秘密鍵dによる復号処理を実行しその消費電力を測定する。a= -1(mod n)という暗号文を入力することで、攻撃法1と同様に、復号処理で実行される乗算のデータ値のパターンが以下の3種類のみに限定される。
- 乗算:(1)×(-1)もしくは(1)×(1)の2種類。
- 2乗算をk回:(-1)×(-1)を1回実行した後, (1)×(1)をk-1回実行もしくは、(1)×(1)をk回実行の2種類。
上記の演算のうち、攻撃者が識別する必要があるのは、2種類の乗算である。(2種類の2乗算は識別しなくとも良い。)乗算を識別する理由は、(1)×(-1)の乗算は、biが奇数であることを意味し、(1)×(1)の乗算は、biが偶数であることを意味するからである。biの偶数、奇数と乗算の種類が連動している理由であるが、図2に示す通り、w[bi] = abi (mod n)で表されるテーブルw[bi]を用いた乗算v=v×w[bi]が行われるので、a=-1の場合、biが奇数ならばテーブルw[bi]は-1の奇数乗のため-1となり、biが偶数ならばテーブルw[bi]は-1の偶数乗のため1となるからである。
以上により、2種類の乗算を電力波形により識別できれば、biが偶数であるか奇数であるかを判別できることがわかる。後は、乗算がどのタイミングで実行されるかを攻撃者が知っていれば2種類の乗算を識別できるが、これについては簡単である。なぜなら、図2のアルゴリズムの性質上、2乗算をk回実施した後に乗算を必ず1回実行する、という規則的な処理を実行するため、2乗算をk回実施した後の波形が必ず乗算が実行されることを攻撃者は知っているからである。
よって、乗算が実行されるタイミングの波形のみに関して、2種類の乗算の識別を行うことで、攻撃者はwindow列biが偶数であるか、奇数であるかを識別することができる。
k=3, d=(101100)2に対して、a = -1 (mod n)を入力した場合の消費電力波形の例を図7に示す。2乗算3回、乗算1回という演算パターンを1回繰り返し、全体で8回の演算を実行している。攻撃者は、4回に1回実行される乗算の波形を観察することで、biが奇数であるか偶数であるかを判別する。この場合、dが6ビットなので、b1,b0の2つのwindowを用いた計算が行われる。ただし、b1はdの上位3-bit, b0はdの下位3-bitを表す。最初に、(1) ×(1)による2乗算が3回繰り返された後、w[b1]による乗算が行われる。この乗算波形は左から4番目の波形であり、(1)×(1)の乗算波形とは明らかに異なる。よって、b1は奇数であると識別できる。(もし、左から4番目の波形が(1)×(1)の乗算波形と同一ならば、b1は偶数であると識別できる。)
その後、(-1) ×(1)の2乗算を1回、(1) ×(1)の2乗算を2回実行した後、w[b0]による乗算が行われる。この乗算波形は左から8番目(もしくはもっとも右の波形)であり、(1)×(1)の乗算波形と同じ形をしている。よって、b0は偶数であると識別できる。
以上により、攻撃者はdのビット値がd=(**1**0)2であることを解読でき、dの6-bit中2-bitの解読を、3-bitごとに行うことができる。
攻撃法4
攻撃法2と同様に、a = s (mod n)を入力した時の消費電力波形と、a= -s (mod n)を入力した時の消費電力波形をそれぞれ測定し、これらの差分波形を乗算に関して観察することで、biが偶数か奇数かを判別する。ただし、sは任意のデータ値であり、攻撃者が自由に選択することができる。
攻撃法3の説明と同様に、図2のアルゴリズムでは、w[bi] = abi (mod n)で表されるテーブルw[bi]を用いた乗算v=v×w[bi]が行われる。a=sとa=-sを入力した場合の乗算のデータw[bi]の差分が、biが偶数であるか奇数であるかによって異なるため、乗算波形の差分を用いてbiが偶数か奇数かを識別することができる。
biが偶数の場合、a=s, a=-sともに同一のデータw[bi] = sbi(mod n)となる。よって、v=v×w[bi]の乗算波形に関して、a=s, a=-sの差分をとると平坦な波形となる。これに対し、biが奇数の場合、a=sならばw[bi] = sbi (mod n)であるが、a=-sならばw[bi] = -sbi (mod n)である。よって、v=v×w[bi]の乗算波形に関して、a=s, a=-sの差分をとると振幅が大きな波形となる。
k=3, d=(101100)2に対して、a=s, a = -sを入力した場合の消費電力波形の例を図8に示す。2乗算3回、乗算1回という演算パターンを1回繰り返し、全体で8回の演算を実行している。攻撃者は、4回に1回実行される乗算の波形を観察することで、biが奇数であるか偶数であるかを判別する。この場合、dが6ビットなので、b1,b0の2つのwindowを用いた計算が行われる。ただし、b1はdの上位3-bit, b0はdの下位3-bitを表す。最初に、(1)×(1)による2乗算が3回繰り返された後、w[b1]による乗算が行われる。この乗算波形は左から4番目の波形であり、このときのa=sとa = -sの差分波形は、完全に平坦な波形ではない。よって、b1は奇数であると識別できる。(もし、左から4番目の差分波形が完全に平坦な波形と同一ならば、b1は偶数であると識別できる。)
その後、2乗算を3回実行した後、w[b0]による乗算が行われる。この乗算波形は左から8番目(もしくはもっとも右の波形)であり、その差分波形は完全に平坦な形をしている。よって、b0は偶数であると識別できる。
以上により、攻撃者はdのビット値がd=(**1**0)2であることを解読でき、dの6-bit中2-bitの解読を、3-bitごとに行うことができる。
以上の考察より、本発明では以下の課題を解決する。
課題1:バイナリ法を用いて、攻撃法1,2に対して安全なRSA暗号処理を実現する。
課題2:window法を用いて、攻撃法3,4に対して安全なRSA暗号処理を実現する。
課題1,2を解決するためには、攻撃法1,2,3,4に対して安全な処理を実現する必要がある。いずれの攻撃法も、乗算処理における消費電力は乗算のデータ値に依存して決定する、という性質を利用している。つまり、この消費電力に関する性質が、課題を発生させる原因となっている。これらをまとめると以下のようになる。
攻撃法1
a=-1を入力した場合、以下の3種類の演算のみ発生。電力波形によりこれら3種類を識別することで、dの全てのビット値を解読。
- 乗算:(1)×(-1)の1種類。
- 2乗算:(1)×(1), (-1)×(-1)の2種類。
攻撃法2
a=sを入力した場合とa=-sを入力した場合の波形差分が、以下の3種類の演算のみ発生。電力波形によりこれら3種類を識別することで、dの全てのビット値を解読。
- 乗算:(v) ×(s)の波形と(v)×(-s)の波形の差分(1種類)
- 2乗算:(-v)×(-v)の波形と(v)×(v)の差分、
もしくは(v)×(v)の波形と(v)×(v)の差分(2種類)
攻撃法3
a=-1を入力した場合、以下の2種類の乗算のみ発生。電力波形によりこれら2種類を識別することで、dの全体の1/kのビット値を解読。
- 乗算:(1)×(-1)、(1)×(1)
攻撃法4
a=sを入力した場合の波形と、a=-sを入力した場合の、乗算に関する波形差分が、以下の2種類の乗算のみ発生。電力波形によりこれら2種類を識別することで、dの全体の1/kのビット値を解読。
- 乗算:(v) ×(s)の波形と(v)×(-s)の波形の差分、もしくは
(v) ×(s)の波形と(v)×(s)の波形の差分(2種類)
下記非特許文献1〜4は、上述の説明において引用した文献である。
Paul Kocher, Joshua Jaffe, and Benjamin Jun, "Differential Power Analysis," in proceedings of Advances in Cryptology-CRYPTO’99, Lecture Notes in Computer Science vol. 1666, Springer-Verlag, 1999, pp. 388-397(以下Kocher99) Thomas S.Messerges, Ezzy A.Dabbish and Robert H.Sloan "Power Analysis Attacks of Modular Exponentitiation in Smartcards", Cryptographic Hardware and Embedded Systems(CHES’99), Lecture Notes in Computer Science vol. 1717, Springer-Verlag, pp.144-157(以下Messerges99) Jean-Sebastein Coron "Resistance against Differential Power Analysis for Elliptic Curve Crytosystems", Cryptographic Hardware and Embedded Systems (CHES’99), Lecture Notes in Computer Science vol. 1717, Springer-Verlag, pp.292-302, 1999(以下Coron99) Alfred J.Menezesほか著"HANDBOOK OF APPLIED CRYPTOGRAPHY"(CRC press), (http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf) また、本発明の課題に関連して、下記特許文献1〜3に記載の公知例がある。 特表2004−519132号公報 特開2002−261753号公報 特開2004−226674号公報
以上に共通しているのは、乗算もしくは2乗算における、プラスとマイナスのデータ値の違いを、攻撃者は電力波形を用いて識別していることである。よって、このプラスとマイナスのデータ値の識別を防止することができれば、攻撃法1,2,3,4の全てを防御できる。
本発明は、RSA暗号、楕円曲線暗号などの公開鍵暗号の処理を行うプロセッサに対し、SPA、DPAによる秘密鍵の推定が行われるのを防ぐための対策技術であり、本発明の技術を適用することで、SPA、DPAを用いた秘密鍵の推定を困難にし、高い耐タンパ性をもつ暗号プロセッサを実現することができる。
本発明の第1の態様は、u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、指数剰余演算y=ad (mod n)を実行する暗号化方法を前提として、以下の構成を有する。
まず、a’=a2(mod n)を計算するステップが実行される。
次に、f=(du-1, du-2, ..., d1)2に対して、y=(a’)f(mod n)を計算するステップが実行される。
続いて、d0=1であるときにy=y×a (mod n)を計算するステップが実行される。
そして、y=ad(mod n)を出力するステップが実行される。
本発明の第2の態様は、u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、バイナリ法を用いて指数剰余演算y=ad (mod n)を実行する暗号化方法を前提として、以下の構成を有する。
まず、v=1の初期化処理を実行するステップが実行される。
次に、a’=a2(mod n)を計算するステップが実行される。
続いて、i=u-1, u-2, ..., 2, 1の順に、v=v×v (mod n)を計算するサブステップと、di=1であるときにv=v×a’ (mod n)を計算するサブステップとを、繰返し実行するステップが実行される。
更に、d0=1であるときにv=v×a (mod n)を計算するステップが実行される。
そして、vをy=ad (mod n)をとして出力するステップが実行される。
本発明の第3の態様は、u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、バイナリ法を用いて指数剰余演算y=ad (mod n)を実行する暗号化方法を前提として、以下の構成を有する。
まず、a’=a2(mod n)を計算するステップが実行される。
次に、v=a’の初期化処理を実行するステップが実行される。
続いて、i=u-2, u-2, ..., 2, 1について、v=v×v (mod n)を計算するサブステップと、di=1であるときにv=v×a’ (mod n)を計算するサブステップとを、繰返し実行するステップが実行される。
更に、g=d0に対して、g=1であるときにv=v×a (mod n)を計算するステップが実行される。
そして、vをy=ad (mod n)として出力するステップが実行される。
本発明の第4の態様は、u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、window法を用いて指数剰余演算y=ad (mod n)を実行する暗号化方法を前提として、以下の構成を有する。
まず、kをwindowのビット幅として、x=0,1,...,2k-1に対して、w[x] = (a2)x (mod n)を満たすテーブルw[x]を作成するステップが実行される。
次に、v=1の初期化処理を行うステップが実行される。
続いて、e x uをx以上の整数値の集合の最小値を表す演算として、i=e (u-1) /ku −1, ..., 2, 1,0の順に、v=v×v (mod n)の2乗算処理をk回繰り返すサブステップと、d,i,kからbi=(dik+k, ..., dik+1)2を計算するサブステップと、v=v×w[bi] (mod n)を計算するサブステップを、繰返し実行するステップが実行される。
更に、d0=1であるときにv=v×a (mod n)を計算するステップが実行される。
そして、vをy=ad(mod n)をとして出力するステップが実行される。
本発明の第5の態様は、u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、window法を用いて指数剰余演算y=ad (mod n)を実行する暗号化方法を前提として、以下の構成を有する。
まず、kをwindowのビット幅として、x=0,1,...,2k-1に対して、w[x] = (a2)x (mod n)を満たすテーブルw[x]を作成するステップが実行される。
次に、e x uをx以上の整数値の集合の最小値を表す演算として、 i=e (u-1) /ku−1 に対し、v=w[bi]の初期化処理を行うステップが実行される。
続いて、i=e (u-1) /ku −2, ..., 2, 1,0の順に、v=v×v (mod n)の2乗算処理をk回繰り返すサブステップと、d,i,kからbi=(dik+k, ..., dik+1)2を計算するサブステップと、v=v×w[bi] (mod n)を計算するサブステップとを、繰返し実行するステップが実行される。
更に、d0=1であるときにv=v×a (mod n)を計算するステップが実行される。
そして、vをy=ad (mod n)をとして出力するステップが実行される。
本発明の第6の態様は、u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、スカラー倍算Y=dAを実行する暗号化方法を前提として、以下の構成を有する。
まず、A’=2Aを計算するステップが実行される。
次に、f=(du-1, du-2, ..., d1)2に対して、A’のf倍点Y=fA’を計算するステップが実行される。
更に、d0=1であるときにY=Y+Aを計算するステップが実行される。
そして、Y=dAを出力するステップが実行される。
本発明の第7の態様は、u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、バイナリ法を用いてスカラー倍算Y=dAを実行する暗号化方法を前提として、以下の構成を有する。
まず、Oを全ての点Aに対してA+O=O+A=Aを満たす無限遠点として、V=Oの初期化処理を実行するステップが実行される。
次に、A’=2Aを計算するステップが実行される。
続いて、i=u-1, u-2, ..., 2, 1の順に、V=2Vを計算するサブステップと、di=1のときにV=V+A’を計算するサブステップと、を繰返し実行するステップが実行される。
更に、d0=1のときにV=V+Aを計算するステップが実行される。
そして、VをY=dAとして出力するステップが実行される。
本発明の第8の態様は、u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、バイナリ法を用いてスカラー倍算Y=dAを実行する暗号化方法を前提として、以下の構成を有する。
まず、A’=2Aを計算するステップが実行される。
次に、V=A’の初期化処理を実行するステップが実行される。
続いて、i=u-2, u-2, ..., 2, 1について、V=2Vを計算するサブステップと、di=1のときにV=V+A’を計算するサブステップを、繰返し実行するステップが実行される。
更に、g=d0に対してg=1のときにV=V+Aを計算するステップが実行される。
そして、VをY=dAとして出力するステップが実行される。
本発明の第9の態様は、u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、window法を用いてスカラー倍算Y=dAを実行する暗号化方法を前提として、以下の構成を有する。
まず、kをwindowのビット幅として、x=0,1,...,2k-1に対して、W[x] = (2x)Aを満たすテーブルW[x]を作成するステップが実行される。
次に、Oを全ての点Aに対してA+O=O+A=Aを満たす無限遠点として、V=Oの初期化処理を行うステップが実行される。
続いて、e x uをx以上の整数値の集合の最小値を表す演算として、i=e (u-1) /ku −1, ..., 2, 1,0の順に、V=2Vの点の2倍算処理をk回繰り返すサブステップと、d,i,kからbi=(dik+k, ..., dik+1)2を計算するサブステップと、を繰返し実行するステップが実行される。
更に、V=V+W[bi]を計算するステップが実行される。
加えて、d0=1のときにV=V+Aを計算するステップが実行される。
そして、VをY=dAとして出力するステップが実行される。
本発明の第10の態様は、u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、window法を用いてスカラー倍算Y=dAを実行する暗号化方法を前提として、以下の構成を有する。
まず、kをwindowのビット幅として、x=0,1,...,2k-1に対して、w[x] = (2x)A (mod n)を満たすテーブルW[x]を作成するステップが実行される。
次に、e x uをx以上の整数値の集合の最小値を表す演算として、i=e (u-1) /ku−1 に対し、V=W[bi]の初期化処理を行うステップが実行される。
続いて、i=e (u-1) /ku −2, ..., 2, 1,0の順に、V=2Vの点の2倍算処理をk回繰り返すサブステップと、d,i,kからbi=(dik+k, ..., dik+1)2を計算するサブステップと、V=V+W[bi]を計算するサブステップと、を繰返し実行するステップが実行される。
更に、d0=1のときにV=V+Aを計算するステップが実行される。
そして、VをY=dAとして出力するステップが実行される。
本発明の他の態様は、上記態様を実現する暗号化装置、プログラム、又は暗号化装置を組み込んだ組込機器装置として実現することができる。
一般的なバイナリ法を用いた指数剰余演算(従来例その1)である。 一般的なwindow法を用いた指数剰余演算(従来例その2)である。 図1のバイナリ法の処理の概要を示した図である。 図1の. window法の処理の概要をk=4のときに示した図である。 a = -1 (mod n), d=(10100)2の場合の消費電力波形の例(公知例である攻撃法1の図)である。 a = s (mod n)の消費電力波形とa=-s (mod n)の消費電力波形の差分を、d=(10100)2のについて示した例(公知例である攻撃法2の図)である。 a = -1 (mod n), d=(101100)2の場合の消費電力波形の例(公知例である攻撃法3の図)である。 a = s (mod n)の消費電力波形とa=-s (mod n)の消費電力波形の差分を、d=(101100)2について示した例(公知例である攻撃法4の図)である。 本発明の実施形態の基本手順を示した図である。 a = -1 (mod n), f=(10100)2の場合の、本発明によるバイナリ法の消費電力波形の例(本発明の攻撃法1に対する耐性を表す図)である。 a = -1 (mod n), d=(101100)2の場合の、本発明によるwindow法の消費電力波形の例(本発明の攻撃法3に対する耐性を表す図)である。 本発明バイナリ法による、a = s (mod n)とa=-s (mod n)の消費電力波形の差分波形の例を、f=(10100)2について示した図(本発明の攻撃法2に対する耐性を表す図)である。 本発明window法による、a = s (mod n)とa=-s (mod n)の消費電力波形の差分波形の例を、f=(101100)2の場合について示した図(本発明の攻撃法4に対する耐性を表す図)である。 本発明の第1の実施形態の処理フロー図(図1のバイナリ法を改良した処理)である。 本発明の第2の実施形態の処理フロー図(第1の実施形態でdu-1=1の場合に特化した処理)である。 本発明の第3の実施形態の処理フロー図(図2のwindow法を改良した処理)である。 本発明の第4の実施形態の処理フロー図(第3の実施形態を一般的な高速化法を用いて改良した処理)である。 本発明の第5の実施形態の処理フロー図(第1の実施形態を点のスカラー倍算に応用した例)である。 本発明の第6の実施形態の処理フロー図(第2の実施形態を点のスカラー倍算に応用した例)である。 本発明の第7の実施形態の処理フロー図(第3の実施形態を点のスカラー倍算に応用した)である。 本発明の第8の実施形態の処理フロー図(第4の実施形態を点のスカラー倍算に応用した例)である。 本発明の第1〜第8の実施形態を実現するハードウェアの概略構成図である。
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
本発明の各実施形態の基本原理
「背景技術」において説明した攻撃法1,2,3,4の原理に共通しているのは、攻撃者がa=-1や、a=s, -sのペアを入力することで、乗算もしくは2乗算でプラスとマイナスのデータ値の違いを意図的に発生させ、このデータ値の違いを攻撃者が電力波形を用いて識別していることである。
逆説的に述べれば、攻撃者がaに対してこれらのデータを入力しても、乗算もしくは2乗算でプラスとマイナスのデータ値の違いを意図的に発生させることができなければ、これらの攻撃を防御する対策法を実現することができる。
この対策法を実現するための基本アイデアについて説明する。攻撃者がa=-1や、a=s, -sのように、マイナス値を含むデータを入力しても、乗算もしくは2乗算では常にプラスの値のみを発生させることができれば、前述の対策法を実現することができる。常にプラスの値を発生させるためには、最初に入力されたデータを2乗することで実現できる。つまり、図1もしくは図2に示すバイナリ法、もしくはwindow法を実行するに当たって、入力されたaに対してそのままad (mod n)の計算を行うのではなく、dに対してd=2×f+gを満たすf, gを用いることで、ad (mod n) = ((a2)f)×ag (mod n)により計算を行う。このとき、gはdの最下位ビット, fは上位u-1ビットである。d=(du-1, du-2, ..., d1, d0)2という表記に対して、f=(du-1, du-2, ..., d1)2, g=d0を満たす。
この解決手段を用いることで、RSA演算は以下の図9の手順に従う。
全体の演算手順としては、(a2)f (mod n)を計算してから、その結果に対してag(mod n)を乗算する。(a2)f (mod n)の計算が(手順-2)により実行され、その結果に対するag (mod n)の乗算が(手順-3)により実行される。なお、(手順-3)の乗算は、g=0のときは実行されないが、g=0の場合ag=a0=1なので、乗算を行う必要がないことに注意されたい。
これらの演算手順において、攻撃法1,2,3,4に対する防御を実現するのは、(手順-1)である。手順-1は、入力されたaを2乗するプロセスであり、この結果出力されるa’は常にプラスの値となる。例えば、a=-1を入力した場合a’=(-1)2 = 1となる。また、a=sを入力した場合, a’=(s)2=s2であり、a=-sを入力した場合a’=(-s)2=s2である。このように、常にプラスとなるa’を用いて、(手順-2)に示すような(a’)f (mod n)の計算を行うことで、攻撃1,2,3,4の全てを防ぐことができる。
攻撃法1,3のように、a=-1を入力する攻撃法の場合、a’=1となる。よって、(a’)f (mod n)の計算を、バイナリ法もしくはwindow法で実行した場合、発生する乗算もしくは2乗算は常に(1)×(1)のみである(図10、図11)。よって、攻撃法1,3の図5,7に示されるように、(1)×(1), (-1)×(-1), (1)×(-1)の演算を消費電力波形によって識別する方法を用いることができないので、安全である。
攻撃法2,4のように、a=s, a=-sを入力し、その消費電力波形の差分をする攻撃法の場合、a=s, a=-sのいずれの場合にも、a’=s2となる。よって、(a’)f(mod n)の計算における消費電力波形は、a=s, a=-sのいずれの場合にも同一の波形となり、その結果、差分波形は常に平坦な波形となる(図12、図13)。よって、攻撃法2,4の図6,8に示されるように、差分波形の特徴から秘密鍵を解読する方法を用いることができないので、安全である。
fは秘密鍵dの上位u-1ビット値であるので、秘密鍵dに関連する大部分の計算は、この(手順-2)により実行されるが、この(手順-2)の計算においては常にプラスとなるa’を用いた計算を行うので、攻撃者は秘密鍵に関する情報を得ることができない。a’ではなく、aを用いた計算は、(手順-3)のみにおいて実行されるが、(手順-3)では、秘密鍵dの最下位ビットのみを用いた演算を実行するため、攻撃者が得ることができる情報は高々秘密鍵の最下位1-bitに関する情報のみであるため、有意な情報を得ることはできない。
本発明の第1の実施形態
本発明の実施形態の基本原理である図9の(手順-1)〜(手順-4)を用いて、図1のバイナリ法を改良した実施例を図14に示す。1402, 1403, 1409に記された太字部分が、図1からの変更点であり、図9の解決手段を用いた処理である。
(手順-1)に示すa’=a2 (mod n)の計算は、1402により実行する。
(手順-2)に示す、(a’)f (mod n)のバイナリ法による演算プロセスは、1403〜1408のループ処理によって実行する。f=(du-1, ..., d1)2に対するバイナリ法演算を実現するために、1403のループ処理はi=u-1に始まり、u=1で終了することに注意されたい。
(手順-3)の計算は1409によって実行する。
本発明の第2の実施形態
図14は、du-1の値が0,1いずれの場合についても用いることができる汎用的な演算法であるが、du-1=1の場合に特化したバイナリ法アルゴリズムが一般的に知られている。この特化されたアルゴリズムを用いることで、わずかながら計算時間を短縮(乗算1回、2乗算1回)できる。図14をdu-1=1の場合に特化したバイナリ法アルゴリズムを図15に示す。
1501, 1502, 1503, 1509に記された太字部分が図9の解決手段を用いた処理である。
(手順-1)に示すa’=a2 (mod n)の計算は、1501, 1502により実行する。
(手順-2)に示す、(a’)f (mod n)のバイナリ法による演算プロセスは、1503〜1508のループ処理によって実行する。du-1=1であることはわかっているので、このループ処理においては、du-1に関する処理はスキップされることに注意されたい。f=(du-2, ..., d1)2に対するバイナリ法演算を実現するために、1503のループ処理はi=u-2に始まり、u=1で終了する。
(手順-3)の計算は,1509によって実行する。
本発明の第4の実施形態
図9の解決手段(手順-1)〜(手順-4)を用いて、図2のwindow法を改良した実施例を図16に示す。1601, 1602, 1604, 1612に記された太字部分が、図2からの変更点である。
(手順-1)に示すa’=a2 (mod n)の計算は、1601, 1602に示すw[x]のテーブル作成処理により実行する。図2のテーブル作成処理では、w[x] = ax (mod n)を満たすテーブルを作成していたのに対し、これに対し、図16のテーブル作成処理では、a’=a2 (mod n)に対してw[x] = (a’)x(mod n)を満たすテーブルを作成する。これにより、テーブルデータが常にプラスとなる。
(手順-2)に示す、(a’)f (mod n)のwindow法による演算プロセスは、1604〜1611のループ処理によって実行する。f=(du-1, ..., d1)2に対するバイナリ法演算を実現するために、1604のループ処理はi=e(u-1)/ku-1に始まり、i=0で終了することに注意されたい。図2においては、u-bit値であるdをk-bitごとに分割していたため、その分割数はeu/kuであったが、図16の場合、(u-1)-bitのfをk-bitごとに分割しているため、その分割数は=e(u-1)/kuである。
また、dの最下位ビットを削除したビット列がfである、つまりdとfは1-bitずれている関係上、window列biは、図2ではbi = (dik+k-1, ..., dik)2として与えられていたのが、図16では1608のようにbi = (dik+k, ..., dik+1)2として与えられている。
(手順-3)に示す処理は、1612において実行する。
本発明の第4の実施形態
図2のアルゴリズムを改良し、計算を若干高速化し改良した(2乗算k回、乗算1回)window法アルゴリズムが一般的に知られている。(バイナリ法と異なり、この改良は秘密鍵dやwindow列biに関する制約をうけない。)この改良を行ったwindow法アルゴリズムを図17に示す。
1701〜1706, 1714に記された太字部分が図9の解決手段を用いた処理である。
(手順-1)に示すa’=a2 (mod n)の計算は、第3の実施形態と同様に1701, 1702に示すw[x]のテーブル作成処理により実行する。1703〜1705においては、図16と異なりv=1による初期化を行うのではなく、v=w[bi]による初期化を行う。
ただし、biはi=e(u-1)/ku-1に対し、bi= (dik+k, ..., dik+1)2を満たす値である。
(手順-2)に示す、(a’)f(mod n)のバイナリ法による演算プロセスは、1706〜1713の ループ処理によって実行する。1703〜1705に記されたvの初期化処理により、i=e(u-1)/ku-1に関する演算処理はすでに終了しているため、iのループ処理はi=e(u-1)/ku-2に始まりi=0で終了することに注意されたい。
1710においては、図16と同様に、window列biはbi = (dik+k, ..., dik+1)2として与えられる。
(手順-3)に示す処理は、1714において実行する。
本発明のその他の実施形態
以上に示した第1〜第4の実施形態は、RSA暗号のみならず、ElGamal暗号、Diffie-Hellman鍵交換、DSA署名など、指数dと入力データcから、出力データyをy=cd (mod n)で記される指数剰余演算を用いる公開鍵暗号演算全般について適用可能である。
さらに、楕円曲線暗号の演算にも応用可能。ECDSA署名、ECDH鍵交換などでは、RSAの秘密鍵dと、楕円曲線上の点Aに対して、出力データである点YをY=dAにより計算する処理が行われる。この演算は、点のスカラー倍算と呼ばれる。なお、楕円曲線上の点とは、2つの数値X,Yを用いてA=(X,Y)と表されるベクトルであり、X,Yは楕円曲線と呼ばれる関数E(X,Y)と素数pに対してE(X,Y)=0 (mod p)を満たす値である。
楕円曲線暗号では、y=a×b(mod n)で示される乗算の代わりに、Y=A+Bで表される点の加算(Y,A,Bは楕円曲線上の点)、2乗算の代わりにY=2Aで表される点の2倍算 (Y,Aは楕円曲線上の点)を行う。よって、楕円曲線暗号に本発明を適用するためには、d=2f+gと分解し、Y=fA’+gA (A’=2A)と分解し、fAのスカラー倍算に対して、通常のバイナリ法、もしくはwindow法の演算を実行すればよい。
第1の実施形態(図14)、第2の実施形態(図15)、第3の実施形態(図16)、及び第4の実施形態(図17)を点のスカラー倍算に応用した実施形態を、それぞれ第5の実施形態(図18)、第6の実施形態(図19)、第7の実施形態(図20)、第8の実施形態(図21)として示す。
これらは、第1〜第4の各実施形態に対し、y=a×b(mod n)で示される乗算の代わりに、Y=A+Bで表される点の加算(Y,A,Bは楕円曲線上の点)、2乗算の代わりにY=2Aで表される点の2倍算 (Y,Aは楕円曲線上の点)を行っている。
最後に、本発明の第1〜第8の実施形態を実現するハードウェアの概略構成図を図22に示す。
図22において、初期2乗処理部2203は、乗算器2202を使って、図9の手順1の演算を実行する。
べき乗剰余演算器2204は、ビット分割部2201によってdの上位u-1ビットとして分割して得られたfを使って、図9の手順2の演算を実行する。
終了時乗算部2205は、g=1である場合に、メモリ2206に記憶されるaを使って、図9の手順3の演算を実行し、その演算結果を出力する。
また、図14〜図21として示した本発明の各実施形態の処理は、CPU(中央演算処理装置)、主記憶メモリ、補助記憶装置、入出力装置等がバスによって相互に接続された構成を有する一般的なコンピュータにおいて、CPUが補助記憶装置等に記憶された各機能を実現する制御プログラムを主記憶メモリにロードして実行する動作として実現されてもよい。
以上説明したように、本発明の各実施形態では、a’=a2 (mod n)による変換を用いた演算を行うことで、図1、図2に示される従来法では防ぐことができなかった攻撃法1,2,3,4の全てを防ぐことができる。
本発明の効果により、消費電力波形に秘密鍵の兆候を示す特徴が現れないため、攻撃者は秘密鍵に関する情報を得ることができない。
その効果は、図5〜図6に示す従来法の消費電力波形と、図10〜図13に示す本発明の消費電力波形を比較すれば明確に理解することができる。

Claims (12)

  1. u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、バイナリ法を用いて指数剰余演算y=ad (mod n)を実行する復号装置であって、
    v=1の初期化処理を実行する手段と、
    a’=a2(mod n)を計算する手段と、
    i=u-1, u-2, ..., 2, 1の順に、v=v×v (mod n)を計算し、di=1であるときにv=v×a’ (mod n)を計算することを、繰返し実行する手段と、
    d0=1であるときにv=v×a (mod n)を計算する手段と、
    vをy=ad (mod n)として出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  2. u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、バイナリ法を用いて指数剰余演算y=ad (mod n)を実行する復号装置であって、
    a’=a2(mod n)を計算する手段と、
    v=a’の初期化処理を実行する手段と、
    i=u-2, u-2, ..., 2, 1について、v=v×v (mod n)を計算し、di=1であるときにv=v×a’ (mod n)を計算することを、繰返し実行する手段と、
    g=d0に対して、g=1であるときにv=v×a (mod n)を計算する手段と、
    vをy=ad (mod n)として出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  3. u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、window法を用いて指数剰余演算y=ad (mod n)を実行する復号装置であって、
    kをwindowのビット幅として、x=0,1,...,2k-1に対して、w[x] = (a2)x(mod n)を満たすテーブルw[x]を作成する手段と、
    v=1の初期化処理を行う手段と、
    e×uをx以上の整数値の集合の最小値を表す演算として、i=e(u-1)/ku-1, ..., 2,1,0の順に、v=v×v (mod n)の2乗算処理をk回繰り返し、d,i,kからbi=(dik+k, ..., dik+1)2を計算し、v=v×w[bi] (mod n)を計算することを、繰返し実行する手段と、
    d0=1であるときにv=v×a (mod n)を計算する手段と、
    vをy=ad (mod n)として出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  4. u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、window法を用いて指数剰余演算y=ad (mod n)を実行する復号装置であって、
    kをwindowのビット幅として、x=0,1,...,2k-1に対して、w[x] = (a2)x(mod n)を満たすテーブルw[x]を作成する手段と、
    e×uをx以上の整数値の集合の最小値を表す演算として、i=e(u-1)/ku-1に対し、v=w[bi]の初期化処理を行う手段と、
    i=e(u-1)/ku-2, ..., 2,1,0の順に、v=v×v (mod n)の2乗算処理をk回繰り返し、d,i,kからbi=(dik+k, ..., dik+1)2を計算し、v=v×w[bi](mod n)を計算することを、繰返し実行する手段と、
    d0=1であるときにv=v×a (mod n)を計算する手段と、
    vをy=ad (mod n)として出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  5. u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、スカラー倍算Y=dAを実行する復号装置であって、
    A’=2Aを計算する手段と、
    f=(du-1, du-2, ..., d1)2に対して、A’のf倍点Y=fA’を計算する手段と、
    d0=1であるときにY=Y+Aを計算する手段と、
    Y=dAを出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  6. u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、バイナリ法を用いてスカラー倍算Y=dAを実行する復号装置であって、
    Oを全ての点Aに対してA+O=O+A=Aを満たす無限遠点として、V=Oの初期化処理を実行する手段と、
    A’=2Aを計算する手段と、
    i=u-1, u-2, ..., 2, 1の順に、V=2Vを計算し、di=1のときにV=V+A’を計算すること、を繰返し実行する手段と、
    d0=1のときにV=V+Aを計算する手段と、
    VをY=dAとして出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  7. u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、バイナリ法を用いてスカラー倍算Y=dAを実行する復号装置であって、
    A’=2Aを計算する手段と、
    V=A’の初期化処理を実行する手段と、
    i=u-2, u-2, ..., 2, 1について、V=2Vを計算し、di=1のときにV=V+A’を計算することを、繰返し実行する手段と、
    g=d0に対してg=1のときにV=V+Aを計算する手段と、
    VをY=dAとして出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  8. u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、window法を用いてスカラー倍算Y=dAを実行する復号装置であって、
    kをwindowのビット幅として、x=0,1,...,2k-1に対して、W[x] = (2x)Aを満たすテーブルW[x]を作成する手段と、
    Oを全ての点Aに対してA+O=O+A=Aを満たす無限遠点として、V=Oの初期化処理を行う手段と、
    e×uをx以上の整数値の集合の最小値を表す演算として、i=e(u-1)/ku-1, ..., 2, 1,0の順に、V=2Vの点の2倍算処理をk回繰り返し、d,i,kからbi=(dik+k, ..., dik+1)2を計算することを、を繰返し実行する手段と、
    V=V+W[bi]を計算する手段と、
    d0=1のときにV=V+Aを計算する手段と、
    VをY=dAとして出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  9. u-bit指数d=(du-1, ..., d0)2, 楕円曲線上の点A,から、window法を用いてスカラー倍算Y=dAを実行する復号装置であって、
    kをwindowのビット幅として、x=0,1,...,2k-1に対して、w[x] = (2x)A (mod n)を満たすテーブルW[x]を作成する手段と、
    e×uをx以上の整数値の集合の最小値を表す演算として、i=e(u-1)/ku-1 に対し、V=W[bi]の初期化処理を行う手段と、
    i=e(u-1)/ku-2, ..., 2, 1の順に、V=2Vの点の2倍算処理をk回繰り返し、d,i,kからbi=(dik+k, ..., dik+1)2を計算し、V=V+W[bi]を計算することを、を繰返し実行する手段と、
    d0=1のときにV=V+Aを計算する手段と、
    VをY=dAとして出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  10. u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、指数剰余演算y=ad (mod n)を実行する復号装置であって、
    最初にa’=a2(mod n)を計算する手段と、
    次にf=(du-1, du-2, ..., d1)2に対して、y=(a’)f (mod n)を計算する手段と、
    d0=1であるときにy=y×a (mod n)を計算する手段と、
    y=ad (mod n)を出力する手段と、
    を含むことを特徴とする電力解析攻撃への対策機能を備えた復号装置。
  11. u-bit指数d=(du-1, ..., d0)2, 入力データa, 法nから、指数剰余演算y=ad(mod n)を実行して復号化を行うコンピュータの中央演算処理装置に、
    最初にa’=a2(mod n)を計算する機能と、
    次にf=(du-1, du-2, ..., d1)2に対して、y=(a’)f (mod n)を計算する機能と、
    d0=1であるときにメモリに記憶される前記aを使ってy=y×a (mod n)を計算する機能と、
    y=ad(mod n)を出力する機能と、
    を実行させるためのプログラム。
  12. 請求項10に記載の復号装置を組み込んだ組込機器装置。
JP2010505041A 2008-03-31 2008-03-31 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置 Expired - Fee Related JP5365624B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/000833 WO2009122461A1 (ja) 2008-03-31 2008-03-31 電力解析攻撃への対策機能を備えた暗号化方法

Publications (2)

Publication Number Publication Date
JPWO2009122461A1 JPWO2009122461A1 (ja) 2011-07-28
JP5365624B2 true JP5365624B2 (ja) 2013-12-11

Family

ID=41134883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010505041A Expired - Fee Related JP5365624B2 (ja) 2008-03-31 2008-03-31 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置

Country Status (4)

Country Link
US (1) US8817973B2 (ja)
EP (1) EP2264939B1 (ja)
JP (1) JP5365624B2 (ja)
WO (1) WO2009122461A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010008883A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 暗号用演算装置、暗号用演算方法及びプログラム
JP5327380B2 (ja) * 2010-03-31 2013-10-30 富士通株式会社 暗号処理装置および暗号処理方法
JP5573964B2 (ja) 2010-12-27 2014-08-20 富士通株式会社 暗号処理装置および方法
JP5488718B2 (ja) 2010-12-27 2014-05-14 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム
JP6888377B2 (ja) * 2017-04-05 2021-06-16 富士電機株式会社 情報処理装置、情報処理システム及びプログラム
KR101989950B1 (ko) * 2017-04-28 2019-06-17 삼성에스디에스 주식회사 부채널 공격에 안전한 연산 장치 및 방법
KR101914028B1 (ko) * 2017-04-28 2018-11-01 삼성에스디에스 주식회사 부채널 공격에 안전한 연산 장치 및 방법
KR101989943B1 (ko) * 2017-04-28 2019-06-17 삼성에스디에스 주식회사 부채널 공격에 안전한 연산 장치 및 방법
US10741997B2 (en) 2018-10-31 2020-08-11 Jennifer Lynn Dworak Powering an electronic system with an optical source to defeat power analysis attacks
CN115022025B (zh) * 2022-05-27 2024-04-02 中电长城网际系统应用有限公司 差分攻击风险量化评估方法、装置、计算机设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233307A (ja) * 2001-12-04 2003-08-22 Fujitsu Ltd 秘密鍵を用いた耐タンパ暗号処理
WO2004055756A1 (ja) * 2002-12-18 2004-07-01 Fujitsu Limited 秘密鍵を用いた耐タンパ楕円曲線暗号処理

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000111B1 (en) * 2000-11-07 2006-02-14 Ericsson Inc. Method for masking secret multiplicands
JP4199937B2 (ja) 2001-03-06 2008-12-24 株式会社日立製作所 耐タンパー暗号処理方法
JP2004226674A (ja) * 2003-01-23 2004-08-12 Renesas Technology Corp 情報処理方法
FR2856538B1 (fr) * 2003-06-18 2005-08-12 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme cryptographique du type a cle publique
KR100720726B1 (ko) * 2003-10-09 2007-05-22 삼성전자주식회사 Rsa 알고리즘을 이용한 보안유지시스템 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233307A (ja) * 2001-12-04 2003-08-22 Fujitsu Ltd 秘密鍵を用いた耐タンパ暗号処理
WO2004055756A1 (ja) * 2002-12-18 2004-07-01 Fujitsu Limited 秘密鍵を用いた耐タンパ楕円曲線暗号処理

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6012054715; Kouichi Itoh, Jun Yajima, Masahiko Takenaka, and Naoya Torii: '"DPA Countermeasures by Improving the Window Method"' LNCS, Cryptographic Hardware and Embedded Systems - CHES 2002 Vol.2523, 200208, p.303-317 *

Also Published As

Publication number Publication date
US8817973B2 (en) 2014-08-26
JPWO2009122461A1 (ja) 2011-07-28
EP2264939B1 (en) 2015-03-04
EP2264939A4 (en) 2014-04-02
EP2264939A1 (en) 2010-12-22
US20110013770A1 (en) 2011-01-20
WO2009122461A1 (ja) 2009-10-08

Similar Documents

Publication Publication Date Title
JP5365624B2 (ja) 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置
Yen et al. Power analysis by exploiting chosen message and internal collisions–vulnerability of checking mechanism for RSA-decryption
EP1548687B1 (en) Tamper-resistant elliptical curve encryption using secret key
Coron Resistance against differential power analysis for elliptic curve cryptosystems
Fouque et al. Fault attack on elliptic curve Montgomery ladder implementation
US8913739B2 (en) Method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
CN102779022B (zh) 抗边信道攻击的模幂方法和设备
JP5573964B2 (ja) 暗号処理装置および方法
EP0952697B1 (en) Elliptic curve encryption method and system
JP5261088B2 (ja) 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法
JP2011510579A (ja) 署名ダイアグラムを用いた非対称暗号方式のための対策方法およびデバイス
Fouque et al. Defeating countermeasures based on randomized BSD representations
Le et al. On double exponentiation for securing RSA against fault analysis
Zhang et al. Efficient elliptic curve scalar multiplication algorithms resistant to power analysis
Takemura et al. ECC Atomic Block with NAF against Strong Side-Channel Attacks on Binary Curves
Yen et al. Improvement on Ha-Moon randomized exponentiation algorithm
US20070121935A1 (en) Method for countermeasuring in an electronic component
Okeya et al. SCA-resistant and fast elliptic scalar multiplication based on wNAF
Han et al. On security of XTR public key cryptosystems against Side Channel Attacks
Liu et al. A novel elliptic curve scalar multiplication algorithm against power analysis
Varela How to avoid the N-1 attack without costly implementations
Yen et al. Extended Fault Based Attack against Discrete Logarithm Based Public Key Cryptosystems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121023

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130409

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130709

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130717

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130826

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees