JP2002258743A - 耐タンパーモジュラ演算処理方法 - Google Patents
耐タンパーモジュラ演算処理方法Info
- Publication number
- JP2002258743A JP2002258743A JP2001060223A JP2001060223A JP2002258743A JP 2002258743 A JP2002258743 A JP 2002258743A JP 2001060223 A JP2001060223 A JP 2001060223A JP 2001060223 A JP2001060223 A JP 2001060223A JP 2002258743 A JP2002258743 A JP 2002258743A
- Authority
- JP
- Japan
- Prior art keywords
- mod
- processing
- calculation
- calculation result
- processing method
- 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
Links
Classifications
-
- 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
- G06F7/724—Finite field arithmetic
-
- 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
- G06F7/722—Modular multiplication
-
- 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
- G06F7/728—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 using Montgomery reduction
-
- 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/7257—Random modification not requiring correction
-
- 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
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Abstract
号処理中に行われる剰余乗算演算の際に発生するオーバ
ーフロー処理は、特有の消費電流を示す。この問題に対
してデータ処理と消費電流との関連性を減らす。 【解決手段】 2ビットアディション・チェイン方式に
従ってべき剰余計算を行う処理手順において、ステップ
1106で実行する剰余乗算をランダムに選択し、ステ
ップ1112〜1115で選択された剰余乗算を実行
し、ステップ1116で結果の補正を行い、ステップ1
118または1119で計算結果(補正しない値または
補正した値)を出力する。
Description
を持つICカードなどの耐タンパー暗号処理方法に関す
るものである。
許されないような個人情報の保持や、秘密情報である暗
号鍵を用いたデータの暗号化や暗号文の復号化を行う装
置である。ICカード自体は電源を持っておらず、IC
カード用のリーダライタに差し込まれると、電源の供給
を受け、動作可能となる。動作可能になると、リーダラ
イタから送信されるコマンドを受信し、そのコマンドに
従ってデータの転送等の処理を行う。ICカードの一般
的な解説は、オーム社出版電子情報通信学会編水沢順一
著「ICカード」などにある。
カード101の上にICカード用チップ102を搭載したもの
である。図に示すように、一般にICカードは、ISO
7816の規格に定められた位置に供給電圧端子Vcc、
グランド端子GND、リセット端子RST、 入出力端子I/Oお
よびクロック端子CLKを持ち、これらの端子を通して、
リーダーライタから電源の供給やリーダライタとのデー
タの通信を行う(W.Rankl and Effing : SMARTCARD HAND
BOOK、 John Wiley & Sons、 1997、 pp.41参照)。
通常のマイクロコンピュータと同じ構成である。その構
成は、図2に示すように、中央処理装置(CPU)201、
記憶装置204、入出力(I/O)ポート207、コ・プロセ
ッサ202からなる(コ・プロセッサはない場合もあ
る)。CPU201は、論理演算や算術演算などを行う装
置であり、記憶装置204は、プログラムやデータを格納
する装置である。入出力ポートは、リーダライタと通信
を行う装置である。コ・プロセッサは、暗号処理そのも
の、または暗号処理に必要な演算を高速に行う装置であ
り、例えばRSA暗号の剰余演算を行うための特別な演
算装置や、DES暗号のラウンド処理を行う暗号装置な
どがある。ICカード用プロセッサの中には、コ・プロ
セッサを持たないものも多くある。データバス203は、
各装置を接続するバスである。
y)やRAM(Random Access Memory)、EEPROM(Ele
ctrical Erasable Programmable Read Only Memory)な
どからなる。ROMは、変更できないメモリであり、主
にプログラムを格納するメモリである。RAMは自由に
書き換えができるメモリであるが、電源の供給が中断さ
れると、記憶している内容は消滅する。ICカードがリ
ーダライタから抜かれると電源の供給が中断されるた
め、RAMの内容は、保持されなくなる。EEPROM
は、電源の供給が中断されてもその内容を保持すること
ができるメモリである。書き換える必要があり、ICカ
ードがリーダライタから抜かれても、保持するデータを
格納するために使われる。例えば、プリペイドカードで
のプリペイドの度数などは、使用するたびに書き換えら
れ、かつリーダライタか抜かれてもデータを保持する必
要があるため、EEPROMで保持される。
ICカード用チップの中に密閉されているため、重要な
情報を格納したり、カードの中で暗号処理を行うために
用いられる。従来、ICカードでの暗号を解読する難し
さは、暗号アルゴリズムの解読の困難さと同じと考えら
れていた。しかし、ICカードが暗号処理を行っている
時の消費電流を観測し、解析することにより、暗号アル
ゴリズムの解読より容易に暗号処理の内容や暗号鍵が推
定される可能性が示唆されている。消費電流は、リーダ
ライタから供給されている電流を測定することにより観
測することができ、この攻撃法の詳細は、John Wiley &
sons社 W.Rankl & W.Effing著 「SmartCard Handboo
k」の8.5.1.1 Passive protective mechanisms(263ペー
ジ)にこのような危険性が記載されている。
Sは、出力状態が1から0あるいは0から1に変わった
時に電流を消費する。特に、データバス203において
は、バスドライバーの電流や、配線および配線に接続さ
れているトランジスタの静電容量のため、バスの値が1
から0あるいは0から1に変わると、大きな電流が流れ
る。そのため、消費電流を観測すれば、ICカード用チ
ップの中で、何が動作しているか分かる可能性がある。
での消費電流の波形を示したものである。処理している
データに依存して、電流波形が301や302のように異な
る。このような差は、バス203を流れるデータや中央演
算装置201で処理しているデータに依存して生じる。
例えば、512ビットの剰余演算を行うことができる。そ
のため、CPUの消費電流とは異なった消費電流波形の
長時間の観測が可能である。その特徴的な波形を観測す
ることにより、コ・プロセッサの動作回数を容易に測定
することができる。コ・プロセッサの動作回数が暗号鍵
と何らかの関係があるならば、コ・プロセッサの動作回
数から暗号鍵を推定できる可能性がある。
号鍵に依存した偏りがあると、その偏りが消費電流から
求められ、暗号鍵が推定される可能性がある。例えば、
乗算剰余演算の際に発生するオーバーフロー処理は、多
くの場合、オーバーフロー処理特有の電流が発生する。
オーバーフロー処理をするかしないかで、処理時間が異
なる場合もある。
のビット値は決まっているため、処理するデータを変更
して、消費電流を観測することにより、暗号鍵のビット
値の影響が観測できる可能性がある。これらの消費電流
の波形を統計的に処理することにより、暗号鍵を推定で
きる可能性がある。
ICカード用チップでのデータ処理と消費電流との関連
性を減らすことである。消費電流とチップの処理との関
連性が減れば、観測した消費電流の波形からICカード
チップ内での処理や暗号鍵の推測が困難になる。本発明
の着眼点は、ICカードチップでの乗算剰余処理AB mod
Nまたはモンゴメリ法による乗算剰余処理ABR^(-1) mod
Nにおいて、乗数Bまたは被乗数Aを、そのモジュラスN
を用いて、tN + B*(-1)^g、sN + A*(-1)^f (s, t,
f, gは整数。但し、f, gは0又は1)に置き換えて処理
することにより、消費電流の波形や処理時間の偏りか
ら、処理内容や暗号鍵の推測を困難にするものである。
される耐タンパー装置は、プログラムを格納するプログ
ラム格納部、データを保存するデータ格納部を持つ記憶
装置と、プログラムに従って所定の処理を実行しデータ
処理を行う中央演算装置(CPU)を持ち、プログラム
は、CPUに実行の指示を与える処理命令から構成され
る一つ以上のデータ処理手段からなる情報処理装置とし
て捉えることができる。
ICカードでは、RSA暗号や、ガロア体GF(p^n):pは
素数、nは正の整数)上の楕円曲線暗号が用いられる。
その際、乗算剰余演算A*B mod Nや、多項式の乗算剰余
演算A(X)*B(X) mod Φ(X)の処理が必要となる(A=Bの場
合もある)。以下、多項式の場合も考え方は同じなの
で、通常の乗算剰余処理の場合について説明する。多項
式の場合の乗算剰余処理ついては、計算機上の実装が通
常の乗算剰余処理の場合と若干異なるが、それは「発明
の実施形態」にて詳細に説明する。
いるデータとICカード用チップの消費電流の関連性を
撹乱する一つの方法は、本来の演算処理に用いられるデ
ータを直接用いずに、演算結果が大きく変わらないよう
なデータを用いて計算を行い、計算後に結果を修正する
ことである。
算を行う際、乗数B及び被乗数Aの両者を、それぞれtN +
B*(-1)^g、sN + A*(-1)^f (s, t, f, gは少なくと
も1つは0でない整数。但し、f, gは0又は1)に置き
換えて、 S = (sN + A*(-1)^f)*(tN + B*(-1)^g) mod N を計算し、その後、f+gが奇数になる場合は、N-Sを該乗
算剰余演算結果とし、f+gが偶数となる場合は、Sを演算
結果とすることである。
本来の答になるように修正している。しかし、RSA暗
号に代表されるべき乗剰余計算の場合は、毎回修正を施
す必要はなく、最終的に修正を施せばよい。
x mod Nに対して用いられる乗算剰余処理を上記の置き
換え、すなわち、乗算剰余処理A*B mod Nの計算を行う
際、乗数B及び被乗数Aの両者を、それぞれtN + B*(-1)^
g、sN + A*(-1)^f (s, t,f, gは整数。但し、f, g
は0又は1)に置き換えて、 S = (sN + A*(-1)^f)*(tN + B*(-1)^g) mod N を計算し、最後に、必要ならNからべき乗剰余計算の値
を引く修正を行えばよい。なぜこのようなことができる
かは、「発明の実施形態」の中で述べる。
剰余演算処理で発生する電流とは異なるパターンの電流
が観測されることになるため、本来のデータの場合に期
待される波形を基に内部処理を推定することが困難にな
る。s, t, f, gを外部から推定できない情報源を用
いて変更すれば、さらに効果が高まり、特に、複数の波
形を収集して平均をとるなどの統計処理を行う場合は、
ランダムな波形を平均化するのと同じことになり、波形
の特徴は消滅するため、さらに効果は顕著である。
演算や、べき乗剰余計算、および楕円曲線暗号での定義
体上での乗算や除算、ベースポイントのスカラー倍など
の情報隠蔽に利用することができる。
(非対称鍵暗号)の代表例であるRSA暗号、楕円曲線
暗号を例にとる。RSA暗号については、岡本栄司著
「暗号理論入門」(共立出版)や、A.J.Menezes、 P.C.
van Oorschot、 S. A.Vanstone著 Handbook of Applie
d Cryptography、(CRC-Press)などに詳しく記載され
ている。楕円曲線暗号については、考案者の一人が書い
たN.コブリツ著(櫻井幸一訳)「数論アルゴリズムと
楕円暗号理論入門」(シュプリンガーフェアラ−ク東
京)、楕円曲線上の演算については、I.H.シルバーマン
・J.テイト著「楕円曲線論入門」(シュプリンガーフェ
アラ−ク東京)、又、群、環、体等の代数系について
は、松坂和夫著「代数系入門」(岩波書店)に詳しい説
明がある。
学的知識を整理しておく。一般に公開鍵暗号(非対称鍵
暗号)においては、秘密鍵情報が公開鍵の中に含まれて
いるが、公開鍵から秘密鍵情報を取り出すことが、計算
時間の点で著しく現実性を欠くということ(計算量的安
全性)を根拠にして暗号が構成されている。計算量的安
全性を持つ問題の代表的なものとして、素因数分解と、
群上の離散対数問題が挙げられる。前者を利用したもの
がRSA暗号であり、後者を楕円曲線上のモーデル・ヴェイ
ユ群に適用して利用しているものが楕円曲線暗号であ
る。
では、大きな素数、例えば512ビットの2つの素数p,q
の積 N = pq と Nと互いに素な数 e(ICカードでは、
3や、65537が用いられることが多い)をとり、これを公
開鍵として公開鍵簿に登録する。このとき、この公開鍵
の持ち主Aに送信者Bは、1以上N-1以下の数で表現され
たデータ(平文) L を、 y = L^e mod N として暗号化して送信する。ここで、L^eはLのe乗を表
す記号とする。この暗号文 R を受け取った持ち主A
は、xe mod (p-1)(q-1) = 1となる秘密鍵 xを用いて y^x mod N を計算する。ここで、(p-1)(q-1)は、Nのオイラー関数
の値φ(N)である。これは、Nと互いに素な自然数の個数
に等しい。オイラーの定理によれば、 y^((p-1)(q-1)) mod N = 1 が成り立ち、一方で、xe = 1 + k(p-1)(q-1)(kは整
数)と書くことができるので、 y^x mod N = L^(xe) mod N = L^(1+k(p-1)(q-1)) mod N = L*L^(k(p-1)(q-1)) mod N = L が成り立つ。従って、y^x mod Nを計算することで、持
ち主Aは、送信者Bの平文 L を復号することができ
る。この際、秘密鍵 x を計算するのに、Nの素因数p、
q が用いられており、現在のところ、素因数分解を介さ
ないで、xを計算する方法は知られておらず、大きな素
数の積を因数分解することは、現実的でない時間が必要
であるので、Nを公開しても、Aの秘密鍵は安全であ
る。
れるべき乗剰余計算の実装方法の代表的なものは、アデ
ィション・チェイン方式とスライディング・ウインドウ方
式である。まず、アディション・チェイン方式による計
算アルゴリズムについて図4を用いて説明する。この方
式は、最も多く利用されているものである。ここでは、
y^x mod Nの計算を、秘密鍵 x のビットを2ビット毎に
区切り、上位から読んでいき、それが、00,01,10,11
のいずれであるかに応じて、y[0] = 1, y[1] = y, y
[2] = y^2 mod N, y[3] = y^3 mod N を対応させ、剰
余乗算計算を行うことによって実現したものである。
勿論、2ビット毎に区切ることは説明の便宜のためであ
り、実際には1ビット、3ビット、4ビットをまとめて
計算することもある。その際も考え方は全く同じであ
る。
y, y[2] = y^2 mod N, y[3] = y^3 mod Nを用意する
(ステップ401)。続いて初期化(ステップ402)を行
い、条件分岐(ステップ403)にて、指数xの最後まで
処理し終えたかを判定し、終了していれば、処理終了
し、終了していなければ、4乗の計算(ステップ404)
を行う。この4乗計算(ステップ404)は、xのビットと
無関係に行われるが、その次に行われる剰余乗算計算に
おいては、条件分岐処理(ステップ405,406,407,40
8)が行われ、それぞれの条件に対応して、ステップ40
9,410,411,412の剰余乗算演算が行われる。
単に数値例で確認する。この計算方式の本質的部分は指
数部分であるので、例として、指数部分のみ数値である
例として S = y^219 mod N を取り上げる。ここで、219は二進数表示で11011011で
ある。これをもとに、2ビット幅のアディション・チェイ
ン方式で計算する。11011011を2ビットブロックに分割
すると、11 01 10 11である。S = 1(初期化)を行な
い、これをNを法として4乗する。勿論、1を4乗しても1
である。次に指数部の先頭のビットブロックを読む。こ
れは、11であるから、y[3] = y^3 mod Nを乗じて、S =
y^3 mod Nとなる。次に、再びループし、これをNを法
として4乗すると、y^12 mod Nとなる。指数部のビット
ブロックの先頭から2番目のビットブロックを読むと、
これは、01であるから、y[1] = y を乗じて、S = y^13
mod Nとなる。再びループし、これをNを法として4乗す
ると、S = y^52 mod Nとなる。指数部のビットブロック
の先頭から3番目のビットブロックを読むと、これは、1
0であるから、y[2] = y^2mod N を乗じて、S = y^54 mo
d Nとなる。再びループし、これをNを法として4乗する
と、S = y^216 mod Nとなる。指数部のビットブロック
の先頭から4番目のビットブロックを読むと、これは、1
1であるから、y[1] = y^3 mod N を乗じて、S = y^219
mod Nとなる。これが求める答である。
アルゴリズムであるスライディング・ウインドウ方式に
ついて図5を用いて説明する。ここでは、y^x mod Nを
計算する際のxの最大の処理単位を2ビットとする。ま
ず、テーブルy[2] = y^2 mod N、y[3] = y^3 mod Nを用
意する(ステップ501)。次にSを1に初期化し(ステッ
プ502)、指数xの最後のビットであるかどうかを判定し
(ステップ503)、終了していれば、処理を終了し、xの
最後のビットでなければ、二乗剰余演算を行う(ステッ
プ504)。指数xの1ビットを読み(ステップ505)、こ
れが1でなければ、再び条件分岐処理(ステップ503)に
戻り、この1ビットが1であれば、二乗剰余処理(ステ
ップ507)を行う。次にxの次のビットが受け取れたかど
うかを判定し(ステップ508)、受け取れなければ、条
件分岐処理(ステップ503)に戻るが、このときはxの最
後まで処理が終了しているので、ステップ503の条件はY
esとなり、処理を終了する。xの次の処理ビットが受け
取れた場合は、条件分岐処理(ステップ509)にて、そ
のビットが0であるか1であるかに応じ、それぞれ、乗算
剰余計算(ステップ510,511)を実行し、再び条件分岐
処理(ステップ503)に戻る。
として S = y^2226 mod N を計算するにあたり、テーブルy[2] = y^2 mod N, y
[3] = y^3 mod Nを用意する。この際、y[0], y[1]は不
要である。2226は、2進法で、100010110010と書くこと
ができる。これを上位より読んで、2ビットが1を上位に
持っているときは、それを一塊とみなし、0が続いてい
るときは、2乗剰余演算を行なうとみなす。つまり、100
010110010 = 10 0 0 10 11 0 0 10 という分解に対応す
るように処理する。従って、S=1と初期化した後、ま
ず、10に対応する処理、すなわち、Sの2乗剰余演算を行
なって、Sにy[2]を掛ける。このとき、S = y[2] = y^2
mod Nとする。次に、0に対応した処理、すなわち2乗剰
余演算を行なって、S = y^4 modNを得る。続く0に対応
する処理、S = y^8 mod Nを行ない、次に、10に対応す
る処理を行なえば、S = ((y^8 mod N)^4 mod N * y^2 m
od N) mod N = y^34 mod Nとなる。続く処理は、11に対
応した、S = ((y^34 mod N)^4 * y^3 mod N) mod N= y^
139 mod Nを実行する。さらに続く2つの0に対応して4
乗剰余演算を行ない、S = (y^139 mod N)^4 mod N = y^
556 mod Nとし、最後の10に対応する処理S =((y^556 mo
d N )^4 mod N * y^2 mod N) mod N = y^2226 mod Nに
よって、求める答を得る。この方式は、テーブルとし
て、指数ビットの先頭が1であるものだけを利用するの
で、RAMの容量が半分で済むという利点がある。
イディング・ウインドウ方式は、モンゴメリ法と呼ばれ
る方式を用いて実行されることがあることに注意してお
く。モンゴメリ法とは、剰余乗算演算 AB mod Nを高速
に実行する方式であり、特にハードウエア化に向いた方
法である。簡単にそのしくみを説明する。詳細は、モン
ゴメリの原著論文“Modular Multiplication Without T
rial Division”、 Mathematics of Computation 44、
170、 pp.519-521(1985))に記載されている。
ュータにおいて、mod 2^nの演算は、上位ビットを無視
することにより実現できるということを利用することに
ある。すなわち、AB mod Nの計算を2のべきを法とする
演算に置き換えることに、その本質がある。RSA暗号
では、Nは、大きな素数の積であるから奇数であり、従
って任意の2のべきと互いに素である。そこで、M, W
を未知数とした不定方程式: AB + MN = WR を考える。ここで、A, Bのビット長はnであるものと
し、R = 2^nとする。このとき、この不定方程式は無限
個の解を有する。このようなMを見つければ、WはABR^(-
1) mod Nと合同である。Mは、Rおきに並んでいるので、
Rより小さい非負の値がとれる。このとき、Wは、ABR^(-
1) mod Nであるかまたは、ABR^(-1) mod N+Nである。後
者の場合は、Nを引き算して求める答を得る。
R^(-1) mod Nの形で演算が行なわれるので、上記のアル
ゴリズム、例えば、アディション・チェイン方式では図
4の401、スライディング・ウィンドウ方式では図5の5
01で実行されるテーブル作成処理において、それぞれの
テーブルの値を、y[0] = R mod N, y[1] = y*R modN,
y[2] = y^2*R mod N, y[3] = y^3*R mod Nに置き換え
て処理する。Sの初期値もR mod Nとする。すると、被乗
数Aと乗数Bの値は、もとの値のR倍になっているため、A
BR^(-1) mod Nの処理では、必ずR倍の項が残ることにな
る。このデータ形式をモンゴメリフォーマットと呼ぶこ
とにすれば、アディション・チェイン、スライディング・
ウインドウ両方式を、モンゴメリフォーマットで実行
し、最後に、R^(-1) mod N倍することにより、求める答
を得ることができる。
理におけるオーバーフロー処理について簡単に説明して
おく。オーバーフロー処理は、演算装置の実装方法によ
って若干の違いがあるが、ここでは代表的なものを説明
する。最も単純な方式は、A*Bをはじめに求め、これがN
未満であれば、このA*Bを答えとし、Nより大きい場合
は、N未満の値になるまでNを引き算することによってA*
B mod Nを求めるというものである。つまり、この場
合、「オーバーフロー」とは、A*BがN以上になることで
あり、「オーバーフロー処理」とは、N未満の値になる
までNを引き算するという操作に他ならない。この方式
は、A*Bのビット長が小さいときはコード量も少なく、
処理時間も無視できるが、ビット長が大きくなると、I
Cカードのような非力なデバイスでは処理時間が極めて
大きくなるため、あまり用いられない。
ーフローである。先に簡単に説明したように、モンゴメ
リ法では、法N(奇数)における剰余を計算するより
も、法R= 2^n(nはA,Bのビット数)における剰余を求
める方が計算が速いことに着目し、不定方程式: AB + MN = WR によって、A*B*R^(-1) mod Nの計算を上記不定方程式の
M = -A*B*N^(-1) mod Rを求める操作に変換する。Mは、
0以上R未満の範囲に一つ存在する。これを求めた場合、
A*B*R^(-1) mod Nが確定するかというと、そうではな
い。(以下、この不定方程式をモンゴメリ方程式と呼ぶ
ことにする。) A、 Bが既に法Nでの剰余であれば、A < N < RかつB < N
< Rである。また、M< Rであるので、 W = (AB + MN)/R < (NR + RN)/R = 2N となる。つまり、Wは2Nよりも小さいが、Nより大きい可
能性がある。実際、そのような場合があり、その際に
は、Nを一回引き算する必要がある。つまり、この場
合、「オーバーフロー」とは、WがN以上になることであ
り、「オーバーフロー処理」とは、Nを一回引く操作に
対応する。
ることは明らかであるが、楕円曲線暗号に対しては、自
明な事柄ではないので、以下、楕円曲線暗号について簡
単に説明しておく。楕円曲線とは、体Kの上で定義され
た3次多項式の零点集合であり、Kの標数が2でない場
合は、 y^2 = x^3 + ax + b という標準形を持つ。標数が2の体の上では、 y^2 + cy = x^3 + ax + b 又は、 y^2 + xy = x^3 + ax + b という標準形を持つ曲線である。(いずれの場合も、後
に説明する無限遠点Oを含めて考える)。楕円曲線の形
状は、図6のようなものになる。
ア体)の場合のみであるので、その場合に限って説明す
る。有限個の元からなる体を有限体又はガロア体とい
い、その構造はよく知られている。その最も単純な構成
法は以下の通りである。まず、素数 p を法とする整数
環の剰余環 Zp を考える。Zpは集合としては、{0, 1,
2,…, p-1}に一致する。Zpにおける和(+)、積(*)
は、 A (+) B = (A+B) mod p A (*) B = (A*B) mod p で定義されている。0以外の元は、(*)に関して逆元
を持つので、体の構造を持っている。これを素体とい
い、GF(p)と書く。これが最も原始的な有限体の例であ
る。以下、混乱がない限り、(+)は通常の+と書き、
(*)も、通常の積*で表す。積については、A*Bを、A
Bのように書くこともある。
を考え、その零点のうち、GF(p)に含まれないものをGF
(p)に添加することによって、新しい体を構成すること
ができる。これを、GF(p)の有限次代数拡大体という。G
F(p)の有限次代数拡大体の元の個数は、pのべきになっ
ていることが知られている。その元の個数をp^nと書く
とき、有限次代数拡大体をGF(p^n)などと表示すること
がある。
書店、 p.125 定理4)によれば、GF(p^n)は、GF(p)係数
の多項式全体がつくる環GF(p)[X]をGF(p)[X]のn次既約
多項式f(X)の倍元全体の作るイデアルに関する剰余環GF
(p)[X]/(f(X))と同型である。この際、f(X)は既約でさ
えあれば、環としては同じものである。従って、適当に
n次の既約多項式を決めて、和と積を、Zpと同じよう
に、法f(X)における和、積とすることでGF(p^n)の演算
をマイクロコンピュータ上に実現することができる。
体GF(p)(pは素数)の場合とバイナリ体GF(2^n)の場合が
重要である。GF(p^n)を、pの大きさをマイクロコンピュ
ータのレジスタの大きさ程度にすることによって、実現
する方法もあり、研究が進められている。
とができる。図7に示すように、楕円曲線上の二つの
点、P,Qがあるとき、この二点を通る直線を引き(P=Q
のときは接線を引く)、この直線が再び楕円曲線と交わ
る点Rをx軸に関して対称に折り返した点は、曲線の対
称性から、再び楕円曲線上の点となる。この点をP+Qと
書き、PとQの「和」と定義する。交わる点がない場合
は、架空の点として無限遠点というものを考え、この架
空の点で交わっているものとみなす。無限遠点をOと書
く。また、楕円曲線上の点Pとx軸に関して対称な位置
にある点をPの逆元といい、-Pで表す。楕円曲線上の一
点Pをk個加えたものを、kP、-Pをk個加えたものを-kPと
書いて、Pのスカラー倍という。これらの座標は、P,Q
の座標の有理式で表すことができ、従って一般の体の上
でこの演算を考えることができる。この「加法」は、通
常の加法と同様に、結合法則、交換法則が成立し、この
加法に関して、無限遠点Oは、通常の数での演算と同様
にゼロの役割を果たし、-Pは、Pと加えると、Oになる。
これは楕円曲線上の加法演算が、可換群(アーベル群)
の構造を持つことを示している。これをモーデル・ヴェ
イユ群ということがある。楕円曲線E、定義体GF(q)(q=p
^n)を固定したときのモーデル・ヴェイユ群を、G(E/GF
(q))と書くことがある。G(E/GF(q))の構造は非常に単純
で、巡回群か、または二つの巡回群の直積と同型になる
ことが知られている。暗号学上は、巡回群になっている
か、または2つの巡回群の直積になっている場合は、い
ずれかの位数(元の数)が、大きな素数で割れることが
望ましい。
2)の和P+Qの座標を(x3, y3)とする。P+Q=Oでないと
き、以下の関係式が成立する。ICカードでは、標数3
を用いる積極的理由は何もないので、以下標数3の場合
は省略する。以下、考える楕円曲線は、非特異(non-sin
gular)であるものとする。
1) if P = Q である。
P = Q である。
^n)の上で行う必要がある。従って、例えば、GF(p)(pは
大きな素数)の上では、 x3 = (h^2 - x1 - x2) mod p y3 = (h(x1 - x3) - y1) mod p を行うことになる。
ない。つまり、例えば、h = (y2 -y1)/(x2 - x1)は、h
= (y2 - y1)*{(x2 - x1)^(-1) mod p} mod pと解釈され
る。
局は、多項式の乗算剰余演算を行うことになるので、同
様に理解することができる。
値を知るのは計算量が膨大になるため、容易でない。こ
れを楕円曲線上の離散対数問題という。楕円曲線暗号で
は、楕円曲線上の離散対数問題が困難であることを利用
している。楕円曲線を利用した暗号方式には種々のもの
があるが、ここでは、特に、楕円ElGamal方式を説明す
る。楕円曲線Eとその上の一点(一般に大きな位数を持
つ点。ベースポイントと呼ぶ)Pが公開されているもの
とする。
点で表現する。平文(暗号文)の楕円曲線上の埋め込み
については、N.コブリッツ、櫻井幸一訳「数論アルゴリ
ズムと楕円暗号入門」シュプリンガーフェアラ−ク p.2
53に説明されている)を送信することを考える。 ステップ 1. 受信者B氏は、正整数 x[B] を選び、これ
を秘密鍵として保持し、 Y[B] = x[B]P を公開鍵簿に登録する。 ステップ 2. 送信者A氏は、乱数 r を用いて、 C1 = rP C2 = M + rY[B] をB氏に送信する。ステップ 3. 受信者B氏は、C1、C2
を受け取り、自分の秘密鍵x[B]を用いて、 C2 - x[B]C1 = M としてMを復元する。
においては、楕円曲線上の点のスカラー倍を計算する必
要がある。楕円曲線上の点のスカラー倍を求めるアルゴ
リズムは、べき乗剰余計算のアルゴリズムに類似してい
る。kP(kは正整数)を計算する標準的なアルゴリズムを
べき乗剰余計算と同様に2ビットづつまとめて処理する
場合について示したものを、図8に示す。まず、2ビッ
トの処理を一度に行うために、ベースポイントPのテー
ブルを作る。べき乗剰余演算においては、mod nでの0
乗,1乗,2乗,3乗に対応して、O(無限遠点),P,
2P,3Pを用意する(ステップ801)。べき乗剰余演算と
は異なり、このテーブルは毎回書き換える必要はなく、
あらかじめ用意しておくことができる。次に、計算用の
点の値を初期化する(ステップ802)。次に点Sの2倍を
計算し(ステップ803)た後、kの最後のビットまで実行
したかどうか判定し(ステップ804)、実行済でなけれ
ば、kのビットの値(2ビットごと)によって条件分岐
して(ステップ804, 805, 806, 807)、これらに対
応する点P[0], P[1], P[2], P[3]を加える(ステッ
プ808, 809, 810, 811)。この処理をkのビットが尽
きるまで続けることにより、kPを計算することができ
る。この計算はkの上位から2ビットづつ区切って見て
計算する方式である。べき乗剰余計算と、数学的には同
一の構造をしていることがわかる。スライディング・ウ
インドウ方式にすることも容易である。後に再び説明す
るが、RSAにおけるべき乗剰余演算、楕円曲線上の加
法演算は、それぞれ、Zn、G(E/GF(q))という代数系の上
で行われる演算と考えることができる。
ログラムを実行する際、動作時の内部消費電力が漏洩す
る可能性があるため、このプロセスをマイクロコンピュ
ータで実現する場合、秘密鍵の処理が漏洩し、危険に曝
されることになる。例えば、kのビット(この例では2
ビット毎)の違いにより、分岐が行われるので、もし
も、その処理が消費電流の差として現れれば、電流波形
からkのビットを特定することができる可能性がある。
説明する。図9に示した処理は、本発明の典型的応用例
である。本実施例は、べき乗剰余計算y^x mod Nをアデ
ィション・チェイン方式によって実行するものである。
但し、本実施例では、モンゴメリ法による乗算剰余処理
を用いて、RSA暗号のべき乗剰余計算を行う。この処
理において、A*B*R^(-1) mod Nという乗算剰余演算が用
いられる。先に述べたのと同じく、Nは奇数(一般にRSA
暗号では、Nは、大きな素数p,qの積であり、奇数であ
る)であり、R = 2^n(nはデータのビット長)とする。
し、さらに、xのビットブロックの番号を数えるための
カウンタjを0に初期化し、条件分岐判定用の変数v[0] =
0とする。次に2ビットアディション・チェイン方式処
理用のテーブル作成を行う(ステップ902)が、この
際、通常のアディション・チェイン処理に必要なオリジ
ナルテーブル(903)y[0][0] = R mod N, y[1][0] = yR
mod N, y[2][0] = y^2R modN, y[3][0] = y^3R mod N
の他に、モジュラスNにおける反転テーブル(904) y[0]
[1] = N - (R mod N), y[1][1] = N - (yR mod N), y
[2][1] = N - (y^2R mod N), y[3][1] = N - (y^3R mo
d N)をも用意する。テーブルは通常、RAM上に存在す
る。このテーブル作成の後、条件分岐処理(ステップ90
5)にて、指数xが最後まで読まれたか(全てのビット
ブロックを読んだか)を調べる。指数xの全てのビット
ブロックの処理が終了していなければ、ステップ906に
進み乱数v[j]を発生する(ステップ906)。この乱数
は、0または1である。次に、S = S^2*R^(-1) mod Nを2
回実行する(ステップ907)。最初の処理では、S = R m
od Nに初期化されているので、この二乗剰余演算の結果
は、S = (R mod N)^2*R^(-1) mod N = R mod Nとなり、
ステップ907の処理結果は、R mod Nとなることに注意す
る。次に、条件分岐処理(ステップ908, 909, 910,
911)において、指数xの2ビットブロックを読み、こ
のビットブロック(図中では「xのビットブロック」と
表現されている)が、2進数で、00であるか01である
か、10であるか、11であるかに応じて、それぞれ、ステ
ップ912, 913, 914, 915に進み、乗算剰余演算を行
う。この乗算剰余演算では、v[j] が、0であるか、1で
あるかに応じて、用いるテーブル値が異なる。例えば、
xのビットブロックが10であれば、通常は、S = S*y[2]
[0]*R^(-1) mod N = S*(y^2R mod N) mod Nを計算する
が、v[j] = 1のときは、反転テーブルから、y[2][1]を
取り出して、S = S*y[2][1]*R^(-1) mod N = S*(N - (y
^2R mod N))*R^(-1) mod Nを計算する(ステップ91
4)。ステップ912, 913, 915の処理においても、同様
にv[j]の値に応じて乗ずる値を変える。乗算剰余処理を
終えた後、ステップ921にて、カウンタをインクリメン
トし、ステップ905の処理に戻る。条件分岐処理(ステ
ップ905)にて、指数xのビットブロックを全て読み終
わっている場合には、ステップ916の処理に進む。ステ
ップ916では、モンゴメリ形式(R mod Nが掛かってい
る)のデータを通常の値に戻すために、R^(-1) mod Nを
乗ずる処理を行う。次に、T = N - Sを計算し、これを
RAMに置く(ステップ917)。ここで、SとTはRAM
上で異なる位置に配置され、RAM上で重複することは
ないものとする。条件分岐処理(ステップ918)にて、
最後のvの値が1であれば、Tを出力し(ステップ919)、
v = 0であれば、Sを出力する(ステップ920)。この処
理によって正しい値が出力されることは、( tN - B )^
2 mod N = B^2 mod N(tは整数)であることから明ら
かである。このように処理することによって、オーバー
フローの処理が本来のものとは異なるものになるため、
ICチップの消費電力や、処理時間等を観測して内部処
理を行うことが困難になる。これは、乗算剰余演算A*B
mod NのAをsN+A*(-1)^f、BをtN+B*(-1)^g(s,t,f,g
は整数)に置き換えたときに、特に(s, t, f, g) =
{(0, 0, 0, 0),(0, 1, 0, 1)}としたものの一つ
である({}内は集合の要素)。
として変化させているが、全てのj =0, 1, ..., m-1
(mはビットブロックの数)を0とするか、1とするかを、
最初にランダムに決定するという方法もある。図10
に、これを示す。まずステップ1001にて、S = R mod N
とし、さらに、xのビットブロックの番号を数えるため
のカウンタjを0に初期化する。次に2ヒ゛ットアディション
・チェイン方式処理用のテーブル作成を行う(ステップ1
002)が、この際、通常のアディション・チェイン処理に
必要なオリジナルテーブル(1003)y[0][0] = R mod N,
y[1][0] = yR mod N, y[2][0] = y^2R mod N, y[3]
[0] = y^3R mod Nの他に、モジュラスNにおける反転テ
ーブル(1004) y[0][1] = N - (R mod N), y[1][1] = N
- (yR mod N), y[2][1] = N - (y^2R mod N), y[3]
[1] = N - (y^3R mod N)をも用意する。テーブルは通
常、RAM上に存在する。このテーブル作成の後、ステ
ップ1005に進み乱数vを発生する。この乱数は、0または
1である。次に条件分岐処理(ステップ1006)にて、指
数xが最後まで読まれたか(全てのビットブロックを読
んだか)を調べる。次に、S = S^2*R^(-1) mod Nを2回
実行する(ステップ1007)。最初の処理では、S = R mo
d Nに初期化されているので、この二乗剰余演算では、S
= (R mod N)^2*R^(-1) mod N = R mod Nとなり、ステ
ップ1007の処理結果は、R mod Nとなることに注意す
る。次に、条件分岐処理(ステップ1008, 1009,101
0, 1011)において、指数xの2ヒ゛ットブロックを読み、
このビットブロックが、2進数で、00であるか01である
か、10であるか、11であるかに応じて、それぞれステッ
プ1012, 1013, 1014, 1015に進み、乗算剰余演算を
行う。乗算剰余演算では、vが、0であるか、1であるか
に応じて、用いるテーブル値が異なる。例えば、xのビ
ットブロックが10であれば、通常は、S = S*y[2][0]*R^
(-1) mod N = S*(y^2R mod N) mod Nを計算するが、v =
1のときは、反転テーブルからy[2][1]を取り出して、S
= S*y[2][1]*R^(-1) mod N = S*(N - (y^2R mod N))*R
^(-1) mod Nを計算する(ステップ1014)。ステップ101
2, 1013, 1015の処理においても、同様にvの値に応じ
て乗ずる値を変える。乗算剰余処理を終えた後、ステッ
プ1021にて、カウンタをインクリメントし、ステップ10
06の処理に戻る。条件分岐処理(ステップ1006)にて、
指数xのビットブロックを全て読み終わっている場合に
は、ステップ1016の処理に進む。ステップ1016では、モ
ンゴメリ形式(R mod Nが掛かっている)のデータを通
常の値に戻すために、R^(-1) mod Nを乗ずる処理を行
う。次に、T = N - Sを計算し、これをRAMに置く
(ステップ1017)。ここで、SとTはRAM上で異なる位
置に配置され、RAM上で重複することはないものとす
る。条件分岐処理(ステップ1018)にて、最後のvの値
が1であれば、Tを出力し(ステップ1019)、v = 0であ
れば、Sを出力する(ステップ1020)。この処理によっ
て正しい値が出力されることは、( tN - B )^2 modN =
B^2 mod N(tは整数)であることから明らかである。
このように処理することによって、オーバーフローの処
理が本来のものとは異なるものになるため、ICチップ
の消費電力や、処理時間等を観測して内部処理を行うこ
とが困難になる。これは、乗算剰余演算A*B mod NのA,
Bを上記のように置き換えたときに、特に(s, t, f,
g) = {(0, 0, 0, 0),(0, 1, 0, 1)}としたもの
の一つである。
用いたものを例として示したが、モンゴメリ法を用いな
い形式で本発明を適用することも容易である。この例を
示そう。図9の実施例を非モンゴメリ形式に変更するこ
とは全く容易であって、モンゴメリ・フォーマットに変
換している部分を除去すればよい。図11は、モンゴメ
リ法を用いない通常の実装方法を示したものである。
に、xのビットブロックの番号を数えるためのカウンタj
を0に初期化し、条件分岐判定用の変数v[0] = 0とす
る。次に2ヒ゛ットアディション・チェイン方式処理用のテ
ーブル作成を行う(ステップ1102)が、この際、通常の
アディション・チェイン処理に必要なオリジナルテーブ
ル(1103)y[0][0] = 1, y[1][0] = y mod N, y[2][0]
= y^2 mod N, y[3][0] = y^3 mod Nの他に、モジュラ
スNにおける反転テーブル(1104) y[0][1] = N - 1,y
[1][1] = N - (y mod N), y[2][1] = N - (y^2 mod
N), y[3][1] = N - (y^3mod N)をも用意する。テーブ
ルは通常、RAM上に存在する。このテーブル作成の
後、条件分岐処理(ステップ1105)にて、指数xが最後
まで読まれたか(全てのビットブロックを読んだか)を
調べる。指数xの全てのビットブロックの処理が終了し
ていなければ、ステップ1106に進み乱数v[j]を発生す
る。この乱数は、0または1である。次に、S = S^2 mod
Nを2回実行する(ステップ1107)。次に、条件分岐処理
(ステップ1108, 1109, 1110, 1111)において、指
数xの2ヒ゛ットブロックを読み、このビットブロック(図
中では「xのビットブロック」と表現されている)が、
2進数で、00であるか01であるか、10であるか、11であ
るかに応じて、それぞれ、ステツプ1112, 1113, 111
4, 1115に進み、乗算剰余演算を行う。乗算剰余演算で
は、v[j] が、0であるか、1であるかに応じて、用いる
テーブル値が異なる。例えば、xのビットブロックが10
であれば、通常は、S =S*y[2][0] mod N = S*(y^2 mod
N) mod Nを計算するが、v[j] = 1のときは、反転テーブ
ルから、y[2][1]を取り出して、S = S*y[2][1] mod N =
S*(N - (y^2 mod N)) mod Nを計算する(ステップ111
4)。ステップ1112, 1113, 1115の処理においても、
同様にv[j]の値に応じて乗ずる値を変える。乗算剰余処
理を終えた後、ステップ1120にて、カウンタをインクリ
メントし、ステップ1105の処理に戻る。条件分岐処理
(ステップ1105)にて、指数xのビットブロックを全て
読み終わっている場合には、ステツプ1116の処理に進
む。ステップ1116では、T = N -Sを計算し、これをRA
Mに置く。ここで、SとTはRAM上で異なる位置に配置
され、RAM上で重複することはないものとする。条件
分岐処理(ステップ1117)にて、最後のvの値が1であれ
ば、Tを出力し(ステップ1118)、v = 0であれば、Sを
出力する(ステップ1119)。この処理によって正しい値
が出力されることは、( tN - B )^2 mod N = B^2 mod
N(tは整数)であることから明らかである。このよう
に処理することによって、オーバーフローの処理が本来
のものとは異なるものになるため、ICチップの消費電
力や、処理時間等を観測して内部処理を行うことが困難
になる。これは、乗算剰余演算A*B mod NのA,Bを上記
のように置き換えたときに、特に(s, t, f, g) =
{(0, 0, 0, 0),(0, 1, 0, 1)}としたものの一つ
である。
ステップの形で要約しておく。
現する剰余乗算であるA*B mod Nを計算する方法
であって、その方法は、(1)S1=A*B mod N
を計算するステップ、(2)(1)の代わりにS2=
{sN + A*(-1)^f }*{tN + B*(-1)^g}mo
d N (s, t, f, gは少なくとも1つは0でない整
数であり、f, gは0又は1)を計算するステップ、
(3)上記(1)と(2)のいずれかを適宜選択するス
テップ、(4)上記(1)(2)(3)を適宜繰り返
し、最後に上記(1)を選択したときはその計算結果S
1を出力し、上記(2)を選択したときにはS2の代わり
にN−S2を出力するステップ、および(5)S1とN−
S2を、暗号処理の剰余乗算A*B mod Nの計算結
果として用いるステップを有することを特徴とする耐タ
ンパーモジュラ演算処理方法。
実施例)においては、vとして乱数を用いているが、こ
れを0と1を交互に取るような仕方で変化させたり、疑似
乱数や、カオス的数列といったものに変えることができ
ることは言うまでもない。また、上記実施例では、s,
t, f, gを二通りにしか変化させていないが、より多
くの変数を変化させることにより、撹乱効果を上げるこ
とができる。この場合の実施例を図12に示す。
に、xのビットブロックの番号を数えるためのカウンタj
を0に初期化し、条件分岐判定用の変数v[0] = 0とす
る。次に、4つの乱数w[k](k=0,1,2,3)を用意する
(ステップ1202)。この乱数は、0< w[k] < MAXを満た
す整数で、MAXは、メモリやレジスタの大きさ等の制約
によって決める。次に2ビットアディション・チェイン方
式処理用のテーブル作成を行う(ステップ1203)が、こ
の際、通常のアディション・チェイン処理に必要なオリ
ジナルテーブル(1204)y[0][0] = 1, y[1][0] = y mod
N, y[2][0] = y^2 mod N, y[3][0] = y^3 mod Nの他
に、モジュラスNにおける反転テーブル(1205) y[0][1]
= N - 1, y[1][1] = N - (y mod N), y[2][1] = N -
(y^2 mod N), y[3][1] = N - (y^3 mod N)をも用意す
る。テーブルは通常、RAM上に存在する。このテーブ
ル作成の後、条件分岐処理(ステップ1206)にて、指数
xが最後まで読まれたか(全てのビットブロックを読ん
だか)を調べる。指数xの全てのビットブロックの処理
が終了していなければ、ステップ1207に進み乱数v[j]を
発生する。この乱数は、0または1である。次に、S = S^
2 mod Nを2回実行する(ステップ1208)。次に、条件分
岐処理(ステップ1209,1210,1211,1212)において、
指数xの2ヒ゛ットブロックを読み、このビットブロック
(図中では「xのビットブロック」と表現されている)
が、2進数で、00であるか01であるか、10であるか、11
であるかに応じて、それぞれ、ステップ1213,1214,12
15,1216に進み、乗算剰余演算を行う。乗算剰余演算で
は、v[j] が、0であるか、1であるかに応じて、用いる
テーブル値が異なる。例えば、xのビットブロックが10
であれば、通常は、S = S*y[2][0] mod N = S*(y^2 mod
N) mod Nを計算するが、v[j] = 1のときは、反転テー
ブルから、y[2][1]を取り出して、S = S*y[2][1] mod N
= S*(N - (y^2 mod N)) mod Nを計算する(ステップ12
15)。ステップ1213,1214,1216の処理においても、同
様にv[j]の値に応じて乗ずる値を変える。乗算剰余処理
を終えた後、ステップ1221にて、カウンタをインクリメ
ントし、ステップ1206の処理に戻る。条件分岐処理(ス
テップ1206)にて、指数xのビットブロックを全て読み
終わっている場合には、ステップ1217の処理に進む。ス
テツプ1217では、T = N - Sを計算し、これをRAMに
置く。ここで、SとTはRAMで異なる位置に配置され、
RAM上で重複することはないものとする。条件分岐処
理(ステップ1218)にて、最後のvの値が1であれば、T
を出力し(ステップ1219)、v = 0であれば、Sを出力す
る(ステップ1220)。この処理によって正しい値が出力
されることは、( tN - B )^2 mod N = B^2 mod N(t
は整数)であることから明らかである。このように処理
することによって、オーバーフローの処理が本来のもの
とは異なるものになるため、ICチップの消費電力や、
処理時間等を観測して内部処理を行うことが困難にな
る。これは、本発明の実施例の一つである。これをモン
ゴメリ方式の場合に変更することは容易であるので、例
を挙げることは省略する。
るものである。本発明の趣旨は、乗数側、被乗数側のい
ずれか、または両方に適用することによって損なわれる
ことはない。これは数学的には自明な事実である。しか
し、実装上は若干の違いが生ずる。乗数側の変形は、最
初の段階でテーブルを作成しさえすれば、その後は「取
り出す値」を変化させることによって本発明を実現する
ことができる。ところが被乗数を変形する場合は、被乗
数自身が各計算過程で異なるため、計算過程毎に途中計
算値SとN-Sを構成しなければならない。これを示すため
に、被乗数側を変形する実施例を示す。
01にて、S = R mod Nとし、さらに、xのビットブロック
の番号を数えるためのカウンタjを0に初期化し、条件分
岐判定用の変数v[0] = 0とする。次に2ヒ゛ットアディショ
ン・チェイン方式処理用のテーブル作成を行う(ステッ
プ1302)。テーブルは、通常のテーブル値y[0] = Rmod
N, y[1] = yR mod N, y[2] = y^2R mod N, y[3] = y
^3R mod Nで構成され、乗数側の変形に用いる反転テー
ブルは不要である。テーブルは通常、RAM上に存在す
る。このテーブル作成の後、条件分岐処理(ステップ13
03)にて、指数xが最後まで読まれたか(全てのビット
ブロックを読んだか)を調べる。指数xの全てのビット
ブロックの処理が終了していなければ、ステップ1304に
進み乱数v[j]を発生する。この乱数は、0または1であ
る。次に、S = S^2*R^(-1) mod Nを2回実行する(ステ
ップ1305)。最初の処理では、S = R mod Nに初期化さ
れているので、この二乗剰余演算では、S = (R mod N)^
2*R^(-1) mod N = R mod Nとなり、ステップ1305の処理
結果は、R mod Nとなることに注意する。次に、このSか
ら、S[0] = S, S[1] = N - Sを計算しRAM上に格納
する(ステップ1306)。続いて、条件分岐処理(ステッ
プ1307,1308,1309,1310)において、指数xの2ヒ゛ット
ブロックを読み、このビットブロック(図中では「xの
ビットブロック」と表現されている)が、2進数で、00
であるか01であるか、10であるか、11であるかに応じ
て、それぞれ、ステップ912, 913, 914, 915に進
み、乗算剰余演算を行う。乗算剰余演算では、v[j]
が、0であるか、1であるかに応じて、用いるテーブル値
が異なる。例えば、xのビットブロックが10であれば、
通常は、S= S[0]*y[0]*R^(-1) mod N = S*(y^2R mod N)
mod Nを計算するが、v[j] = 1のときは、S[0]の代わり
にS[1]を取り出して、S = S[1]*y[2]*R^(-1) mod N =
(N- S)*(y^2R mod N)*R^(-1) mod Nを計算する(ステッ
プ1313)。ステップ1311、1312、1314の処理において
も、同様にv[j]の値に応じて乗ずる値を変える。乗算剰
余処理を終えた後、ステップ1315にて、カウンタをイン
クリメントし、ステップ1303の処理に戻る。条件分岐処
理(ステップ1303)にて、指数xのビットブロックを全
て読み終わっている場合には、ステップ1316の処理に進
む。ステップ1316では、モンゴメリ形式(R mod Nが掛
かっている)のデータを通常の値に戻すために、R^(-1)
mod Nを乗ずる処理を行う。次に、T = N - Sを計算
し、これをRAMに置く(ステップ1317)。ここで、S
とTはRAM上で異なる位置に配置され、RAM上で重
複することはないものとする。条件分岐処理(ステップ
1318)にて、最後のvの値が1であれば、Tを出力し(ス
テップ1319)、v = 0であれば、Sを出力する(ステップ
1320)。この処理によって正しい値が出力されること
は、( tN - B )^2 mod N = B^2 mod N(tは整数)で
あることから明らかである。このように処理することに
よって、オーバーフローの処理が本来のものとは異なる
ものになるため、ICチップの消費電力や、処理時間等
を観測して内部処理を行うことが困難になる。これは、
乗算剰余演算A*B mod NのA,Bを上記のように置き換え
たときに、特に(s, t, f, g) = {(0, 0, 0, 0),
(1, 0, 1, 0)}としたものの一つである。これをモ
ンゴメリ法を用いない方式に変更することは容易である
ので、例を挙げることは省略する。
乗数を変形したものであるが、両方を変形することもで
きることは言うまでもない。また、例えば図13のステ
ップ1305の処理過程で、S = (N - S)^2*R^(-1) mod Nの
ように処理を行うことにより、消費電流を本来のそれと
は異なるものにすることが可能となる。本発明の実施例
は、様々なバリエーションを持っているが、本質的に
は、上記の実施例を組み合せて構成することが可能であ
る。
の処理に対して適用されたものである。べき乗剰余計算
に対して本発明はとりわけ有効であるが、上記の考え方
をより一般のモジュラ計算(剰余計算)に置き換えるこ
とによって、オーバーフロー等の処理から秘密情報が漏
洩することを防ぐことも可能である。べき乗剰余計算に
おいて本発明が有効である理由は、本質的には、( tN
- B )^2 mod N = B^2 mod N(tは整数)という関係式
が成り立つという事実に帰着する。
例えば、楕円曲線暗号における曲線上のベースポイント
Pのスカラー倍を計算するというような場合には、上記
の関係式のような「自然な」修正処理が現れるとは限ら
ない。この事情を簡単に説明する。素体GF(p)(pは大き
な素数)において、楕円曲線E: y^2 = x^3 + ax + b を考える。先に延べたように、E上の点Pのスカラー倍kP
を計算する場合は、点の2倍算と、点同士の和の計算が
出現する(図8参照)。ここで、この二つの計算をより
詳細に分解すると、通常のICカードマイコンにおいて
は、RSAよりも複雑な計算過程を経なければならない
ことがわかる。
1, y1), Q=(x2, y2)の和P+Qの座標を(x3, y3)とす
ると、P+Q=Oでないとき x3 = (h^2 - x1 - x2) mod p y3 = (h*(x1 - x3) - y1) mod p と表現できる。ここで、hは、 h = (y2 - y1)*((x2 - x1)^(-1)) mod p if P≠Q, (3x
1^2 + a)*((2y1)^(-1))mod p if P = Q である。
算)で必要な乗算剰余演算を列挙すると、 h = (y2 - y1)*(x2 - x1)^(-1) mod p if P≠Q、--- (E1) h = (3x1^2 + a)*(2y1)^(-1) mod p if P = Q --- (E1)' h^2 mod p --- (E2) h*(x1 - x3) mod p --- (E3) となる。(E1)の処理において、A = y2 - y1, B = (x2
- x1)^(-1) mod p(またはx2 - x1)をそれぞれ、sN + A*
(-1)^f,tN + B*(-1)^g(s, t, f, gは整数。但し、
f, gは0又は1)に置き換えると、オーバーフローのパ
ターンが変化する((E1)'の場合も同様)。hは(E2)の
処理において法pにおいて2乗され、この値は本来のも
のと同一になるが、(E3)の処理では、値が、法pで反転
してしまうため、正しいy3を求めるには、(E3)の結果を
補正しなければならない。明らかにf+gが偶数であれば
補正は不要で、f+gが奇数の場合は、補正が必要とな
る。
大域的処理フローについては、図8及び対応する説明に
おいて説明したので、ここでは、2倍計算S = 2SとS =
S+P[j]の計算部に絞って説明を行う。すなわち、図8に
おける、ステップ803(2倍計算)、ステップ809,810,
811,812(和の計算)の処理に本発明の処理方式を実装
する方法を説明する。
最も簡単なものを説明する。素体上での計算は、全て、
法pのもとで実行すればよい。図15はGF(p)上での楕円
曲線E: y^2 = x^3 + ax + bにおける点P(x,y)の2倍計
算に本発明を適用したものである。以下、2P = (x3, y
3)とする。
mod pを計算する。次に、ステップ1402にて、D2 = (3*x
^2 + a) mod pを計算する。これらD1,D2に対して、テ
ーブルD1[0] = D1, D2[0] = D2,D1[1] = p - D1, D2
[1] = p - D2を計算してRAMに格納する(ステップ14
03)。D1[1], D2[1]は、それぞれ、法pに対するD1,D2
の反転値である。次に2つ(2ビット)の乱数v,w(v,w
は、共に0又は1)を発生する(ステップ1404)。次に、
ステップ1403で求めたテーブルから、D1[v],D2[v]を取
り出して、乗算剰余計算:h = D1[v]*D2[v] mod pを実
行して結果をRAMに格納する(ステップ1405)。ここ
で、D1[1]*D2[1] mod p = (p - D1)*(p- D2) mod p = D
1*D2 mod pであるので、ステップ1405の終了時には、v
= 0, 1いずれの場合でも、正しいhが求まる。次にステ
ップ1406,1407にて、x3を求め、答えをRAMに格納す
る。ステップ1408にて、D3 = (x - x3) mod pを計算す
る。次に、このD3と、先に用いたhに対して、テーブルh
[0] = h, D3[0] = D3,h[1] = p - h, D3[1] = p - D
3を求めてRAMに格納する(ステップ1409)。h[1],
D3[1]は、それぞれ、法pに対するh、 D3の反転値であ
る。次に、ステップ1409で求めたテーブルから、h[v],
D3[v]を取り出して、乗算剰余計算:h[w]*D3[w] mod p
を実行して結果をRAMに格納する(ステップ1410)。
ここで、h[1]*D3[1] mod p = (p - h)*(p - D3) mod p
= h*D3 mod pであるので、ステップ1410の終了時には、
w = 0, 1いずれの場合でも、正しい値が求まる。最後
に、ステップ1411にて、y3 = (y3 - y) mod pを求めて
RAMに格納する。これで、2Pの各座標の値が求められ
たことになる。これは、本発明の実施例の一つである。
計算を実行する代表的な方法は、拡張ユークリッド互除
法を利用するものとフェルマーの小定理を利用するもの
である。拡張ユークリッド互除法では、不定方程式: 2
*y*D1 + p*U = 1を(2*yとpの最大公約数を求める操作
(ユークリッド互除法)を繰り返すことで、結果的にD1
を求める方法である。一方、フェルマーの小定理を用い
る方法とは、フェルマーの小定理、すなわち、pと互い
に素な正の整数gに対し、g^(p-1) mod p = 1が成り立つ
ことから、g^(-1) mod p = g^(p-2) mod pとなることを
用いるものである。つまり、D1 = (2*y)^(p-2) mod pと
して、D1を求めるものである。フェルマーの小定理を用
いる方法では、逆数の計算は、べき乗剰余計算に帰着す
る。このべき乗剰余計算に本発明の方法を適用すること
は容易なことであり、オーバーフロー処理からのリーク
情報を減らすことができる。
計算に本発明を適用した場合の実施例を示す。以下、楕
円曲線上の点P=(x1, y1)、 Q=(x2, y2)の和P+Qの座標
を(x3, y3)とし、P+Q=Oでないものとする。図16はGF
(p)上での楕円曲線E: y^2 =x^3 + ax + bにおける点Pと
Qの和の計算に本発明を適用したものである。
が一致しているかどうかを判定する。もし、PとQが一致
していれば、2倍算になり、図15について説明した処
理と同じものになるので、説明は省略する(ただしx,
yの符号はx1,y1の符号に読み替える)。以下、P
とQが一致していない場合の処理を示す。ステップ1502
において、D1 = (x2 - x1)^(-1) mod pを計算する。次
に、ステップ1503にて、D2 = (y2 - y1) mod pを計算す
る。これらD1,D2に対して、テーブルD1[0] = D1, D2
[0] = D2,D1[1] = p - D1, D2[1] = p - D2を計算し
てRAMに格納する(ステップ1504)。D1[1], D2[1]
は、それぞれ、法pに対するD1, D2の反転値である。次
に二つ(2ビット)の乱数v,w(v,wは、共に0又は1)を
発生する(ステップ1505)。次に、ステップ1504で求め
たテーブルから、D1[v], D2[v]を取り出して、乗算剰
余計算:h = D1[v]*D2[v] mod pを実行して結果をRA
Mに格納する(ステツプ1506)。ここで、D1[1]*D2[1]
mod p = (p - D1)*(p - D2) mod p = D1*D2 mod pであ
るので、ステップ1506の終了時には、v = 0, 1いずれ
の場合でも、正しいhが求まる。次にステツプ1507,150
9にて、x3を求め、答をRAMに格納する。ステツプ150
9にて、D3 = (x1 - x3) mod pを計算する。次に、このD
3と、先に用いたhに対して、テーブルh[0] = h, D3[0]
= D3,h[1] = p -h, D3[1] = p - D3を求めてRAM
に格納する(ステップ1510)。h[1], D3[1]は、それぞ
れ、法pに対するh, D3の反転値である。次に、ステッ
プ1510で求めたテーブルから、h[w], D3[w]を取り出し
て、乗算剰余計算:h[w]*D3[w] mod pを実行して結果を
RAMに格納する(ステップ1511)。ここで、h[1]*D3
[1] modp = (p - h)*(p - D3) mod p = h*D3 mod pであ
るので、ステップ1511の終了時には、w = 0, 1いずれ
の場合でも、正しい値が求まる。最後に、ステツプ1512
にて、y3 = (y3 - y1) mod pを求めてRAMに格納す
る。これで、P+Qの各座標の値が求められたことにな
る。これは、本発明の実施例の一つである。
n)(pは素数、 nは正の整数)に拡張することができる。
先に述べたように、GF(p^n)は、GF(p)係数の多項式全体
がつくる環(多項式環)GF(p)[X]のGF(p)における既約
多項式Φ(X)(reduction polynomialと呼ばれることも
ある)の倍元全体が生成する素イデアル(prime ideal)
(Φ(X))による剰余環(quotient ring)GF(p)[x]/(Φ
(X))と同型(homomorphic)であり、計算機では、GF(p)
[x]/(Φ(X))として実現される。その演算を実行するに
あたり、A(X), B(X)をGF(p)[X]の元(すなわち、GF(p)
係数の多項式)とすると、GF(p)[X]/(Φ(X))での演算
は、 (和) {A(X) + B(X)} mod Φ(X) (積) A(X)*B(X) mod Φ(X) とすることによって実現することができる。但し、係数
の演算は、mod pで行う。
uction polynomial Φ(X)をX^2 + X+ 1とする。Φ(X)が
既約であることは、Φ(0) = 1, Φ(1) = 3, Φ(2) =
7≡ 2(mod 5), Φ(3) = 13 ≡ 3(mod 5), Φ(4) = 21
≡ 1(mod 5)であることからすぐに分かる。A(X) = 4X^
2 + 3X + 2、 B(X) = 3X^2 + 4X + 1とすると、この、
二つの多項式のGF(5)[X]/(X^2+X+1)における和と積は、 (和) {A(X) + B(X)} mod Φ(X) = 7X^2 + 7X + 3 = 2X^2 + 2X +3(係数をmod 5で計算) (積) A(X)*B(X) mod Φ(X) = (4X^2 + 3X + 2)*(3X^2 + 4X + 1) mod (X^2 + X + 1) = 12X^4 + 25X^3 + 22X^2 + 11X + 2 mod (X^2 + X + 1) = 2X^4 + 2X^2 + X + 2 mod (X^2 + X + 1) (係数をmod5で計算) = Xとして計算することができる。この事実を踏まえれ
ば、実施例を構成することは容易である。
の楕円曲線は、E: y^2 = x^3 + ax+ bの形に変換でき
る。これをWeierstrassの標準形と呼ぶ。ここで、E上の
点の座標の各成分は、GF(p^n)の元であるので、A(X),
B(X)をGF(p)[X]/(Φ(X))の元として、(A(X), B(X))
のように表現することができる。
ての実施例を示す。和の計算は、GF(p)の場合に対する
図16の実施例及び2倍計算の実施例から、容易に類推
できるので、2倍計算の場合のみ説明する。
プ1601において、D1(X) = (2*B(X))^(-1) mod Φ(X)を
計算する。次に、ステツプ1602にて、D2(X) = (3*A(X)
^2+a)mod Φ(X)を計算する。これらD1,D2に対して、テ
ーブルD1[0](X) = D1(X), D2[0] = D2(X),D1[1](X)
= Φ(X) - D1(X), D2[1](X) = Φ(X) - D2(X)を計算
してRAMに格納する(ステップ1603)。D1[1](X), D
2[1](X)は、それぞれ法Φ(X)に対するD1(X), D2(X)の
反転値である。次に2つ(2ビット)の乱数v,w(v,w
は、共に0又は1)を発生する(ステップ1604)。次に、
ステップ1603で求めたテーブルから、D1[v](X), D2[v]
(X)を取り出して、乗算剰余計算:h(X) =D1[v](X)*D2
[v](X) mod Φ(X)を実行して結果をRAMに格納する
(ステップ1605)。ここで、D1[1](X)*D2[1](X) mod Φ
(X) = (Φ(X) - D1(X))*(Φ(X) - D2(X)) mod Φ(X) =
D1(X)*D2(X) mod Φ(X)であるので、ステップ1605の終
了時には、v = 0, 1いずれの場合でも、正しいh(X)が
求まる。次にステップ1606,1607にて、A3(X)を求め、
答えをRAMに格納する。ステップ1608にて、D3(X) =
(A(X) - A3(X)) mod Φ(X)を計算する。次に、このD3
(X)と先に用いたh(X)に対して、テーブルh[0](X) = h
(X), D3[0](X) = D3(X),h[1](X) = Φ(X) h(X), D3
[1](X) = Φ(X) - D3(X)を求めてRAMに格納する(ス
テップ1609)。h[1](X),D3[1](X)は、それぞれ、法Φ
(X)に対するh(X), D3(X)の反転値である。次に、ステ
ップ1609で求めたテーブルから、h[w](X), D3[w](X)を
取り出して、乗算剰余計算:h[w](X)*D3[w](X) mod Φ
(X)を実行して結果をRAMに格納する(ステップ161
0)。ここで、h[1](X)*D3[1](X) mod Φ(X) = (Φ(X) -
h(X))*(Φ(X)- D3(X)) mod Φ(X) = h(X)*D3(X) mod
Φ(X)であるので、ステップ1610の終了時には、w =
0, 1いずれの場合でも、正しい値が求まる。最後に、
ステップ1611にて、B3(X) = (B3(X) - B(X)) mod Φ(X)
を求めてRAMに格納する。これで、2Pの各座標の値が
求められたことになる。これは、本発明の実施例の一つ
である。
計算を実行する代表的な方法は、拡張ユークリッド互除
法を利用するものとフェルマーの小定理を利用するもの
である。拡張ユークリッド互除法では、不定方程式: 2
*B(X)*D1(X) + Φ(X)*U(X) =1を(2*B(X)とΦ(X)の最大
公約数を求める操作(ユークリッド互除法)を繰り返す
ことで、結果的にD1(X)を求める方法である。一方、フ
ェルマーの小定理を用いる方法とは、フェルマーの小定
理、すなわち、Φ(X)と互いに素なg(X)に対し、g(X)^(p
^n-1) mod Φ(X) = 1が成り立つことから、g(X)^(-1) m
od Φ(X) = g(X)^(p^n-2) mod Φ(X)となることを用い
るものである。つまり、D1(X) = (2*B(X))^(p^n-2) mod
Φ(X)として、D1(X)を求めるものである。フェルマー
の小定理を用いる方法では、逆数の計算は、べき乗剰余
計算に帰着する。このべき乗剰余計算に本発明の方法を
適用することは容易なことであり、オーバーフロー処理
からのリーク情報を減らすことができる。
この場合は、これまでとは若干事情が異なる。これは、
ガロア体GF(2^n)をreduction polynomial Φ(X)を用い
てGF(2)[X]/(Φ(X))の形で表現した際、多項式の係数が
GF(2)であることから生ずるものである。GF(2)において
は、符号は無意味である。というのは、この体の上で
は、-1 = 1だからである。このことから本発明の趣旨の
一つである、「法Φ(X)での反転」が無意味となるから
である。また、GF(2)[X]の多項式A(X)の偶数倍も係数が
mod 2で計算されるため0となって、計算結果に影響を与
えない。従って、-A(X) ≡ A(X)となる。よって、Φ(X)
とA(X)のGF(2)における線形結合は、0を除くと、本質的
には、Φ(X), Φ(X)+A(X), A(X)だけとなる。この事
実を踏まえて、p = 2の場合の実施例を示す。
= x^3 + ax + bを持つ楕円曲線を考える。E上の点P =
(A(X), B(X))に対し、2P = (A3(X), B3(X))とする。
実施例を構成するにあたって、2倍公式を次のように変
形しておく。
Φ(X) ここで、h(X)は、h(X) = (A(X)^2 + B(X))*A(X)^(-1)
mod Φ(X)とする。
プ1701において、D1(X) = (A(X))^(-1) mod Φ(X)を計
算する。次に、ステツプ1702にて、D2(X) = (A(X)^2+B
(X))mod Φ(X)を計算する。これらD1(X),D2(X)に
対して、テーブルD1[0](X) =D1(X), D2[0](X) = D2
(X),D1[1](X) = Φ(X) + D1(X), D2[1](X) = Φ
(X)+ D2(X)を計算してRAMに格納する(ステップ170
3)。次に4つ(4ビット)の乱数v, w, i, j(v,
w, i, jは、全て0又は1)を発生する(ステップ170
4)。次に、ステップ1703で求めたテーブルから、D1[v]
(X), D2[w](X)を取り出して、乗算剰余計算:h(X) = D
1[v](X)*D2[w](X) mod Φ(X)を実行して結果をRAMに
格納する(ステップ1705)。ここで(Φ(X)+D1(X))*D2
(X) mod Φ(X) =D1(X)*(Φ(X)+D2(X)) mod Φ(X) = (Φ
(X) + D1(X))*(Φ(X) + D2(X)) mod Φ(X) = D1(X)*D2
(X) mod Φ(X)であるので、ステツプ1705の終了時に
は、v, w = 0, 1のどの場合でも、正しいh(X)が求ま
る。次にステップ1706,1707にて、A3(X)を求め、答え
をRAMに格納する。ステップ1708にて、D3(X) = (A
(X) + A3(X)) mod Φ(X)を計算する。次に、このD3(X)
と先に用いたh(X)に対して、テーブルh[0](X) = h(X),
D3[0](X) = D3(X),h[1](X) = Φ(X) + h(X), D3[1]
(X) =Φ(X) + D3(X)を求めてRAMに格納する(ステッ
プ1709)。次に、ステップ1709で求めたテーブルから、
h[i](X), D3[j](X)を取り出して、乗算剰余計算:h[i]
(X)*D3[j](X) mod Φ(X)を実行して結果をRAMに格納
する(ステップ1710)。ここで、(Φ(X)+h(X))*D3(X)
mod Φ(X) = h(X)*(Φ(X)+D3(X)) mod Φ(X)= (Φ(X)
+ h(X))*(Φ(X) + D3(X)) mod Φ(X) = h(X)*D3(X) mod
Φ(X)であるので、ステップ1710の終了時には、i, j
= 0, 1のどの場合でも、正しい値が求まる。最後に、
ステップ1711にて、B3(X) = (B3(X)+A3(X)+B(X)) mod
Φ(X)を求めてRAMに格納する。これで、2Pの各座標
の値が求められたことになる。これは、本発明の実施例
の一つである。
計算を実行する代表的な方法は、拡張ユークリッド互除
法を利用するものとフェルマーの小定理を利用するもの
である。拡張ユークリッド互除法では、不定方程式: A
(X)*D1(X) + Φ(X)*U(X) = 1を(A(X)とΦ(X)の最大公約
数を求める操作(ユークリッド互除法)を繰り返すこと
で、結果的にD1(X)を求める方法である。一方、フェル
マーの小定理を用いる方法とは、フェルマーの小定理、
すなわち、Φ(X)と互いに素なg(X)に対し、g(X)^(2^n-
1) mod Φ(X) = 1が成り立つことから、g(X)^(-1) mod
Φ(X) = g(X)^(2^n-2) mod Φ(X)となることを用いるも
のである。つまり、D1(X) = (A(X))^(2^n-2) mod Φ(X)
として、D1(X)を求めるものである。フェルマーの小定
理を用いる方法では、逆数の計算は、べき乗剰余計算に
帰着する。このべき乗剰余計算に本発明の方法を適用す
ることは容易なことであり、オーバーフロー処理からの
リーク情報を減らすことができる。
算に関する上記実施例は、いずれも、符号の影響が、即
時に解消されるものであった。ここで、即時解消されな
いような場合の実施例を示す。
3 + ax + b上の点P = (x, y)の2倍計算に本発明を適用
したものである。以下、2P = (x3, y3)とする。ステッ
プ1801において、D1 = (2*y)^(-1) mod pを計算する。
次に、ステップ1802にて、D2= (3*x^2 + a) mod pを計
算する。D2に対して、テーブルD2[0] = D2,D2[1] = p-
D2を計算してRAMに格納する(ステップ1803)。D2
[1]は、法pに対するD2の反転値である。次に2つ(2ビ
ット)の乱数v、w(v、wは、共に0又は1)を発生する(ス
テップ1804)。次に、ステップ1803で求めたテーブルか
ら、D2[v]を取り出して、乗算剰余計算:h = D1*D2[v]
mod pを実行して結果をRAMに格納する(ステップ180
5)。ここで、D1*D2[1] mod p は、D1*D2 mod pである
か、または、p - (D1*D2 mod p)であり、図15の実施
例とは異なり、ステツプ1805終了時点では、正しい値に
なるとは限らない。次にステツプ1806,1807にて、x3を
求め、答えをRAMに格納する。ここで、ステップ1806
において、hがmod pで2乗されるため、ステツプ1805の
結果が、D1*D2 mod pであっても、p - (D1*D2 modp)で
あっても、正しいx3の値が求まる。ステツプ1808にて、
D3 = (x - x3) modpを計算する。次に、このD3に対し
て、テーブルD3[0] = D3,D3[1] = p - D3を求めてRA
Mに格納する(ステップ1809)。D3[1]は、法pに対する
D3の反転値である。次に、ステップ1809で求めたテーブ
ルから、D3[w]を取り出して、乗算剰余計算:h*D3[w] m
od pを実行して結果をRAMに格納する(ステップ181
0)。ここで、h*D3[1] mod p = h*(p - D3) mod p =p -
(h*D3 mod p)であるので、ステップ1810の終了時では、
v = 0であれば、h*D3 mod p、v = 1であれば、p - (h*D
3 mod p)となっている。ステツプ1811にて、テーブルy3
[0] = y3,y3[1] = p- y3を求めてRAMに格納する。
次に、条件分岐処理(ステツプ1812)にて、vとwの排他
的論理和(exclusive OR) v EXOR wの値が、0であるか1
であるかを判定し、0であれば、ステップ1813に進み、1
であれば、ステップ1814に進む。排他的論理和 v EXOR
wは、vとwが同じであれば0、異なれば1となる。従っ
て、最終的に、該排他的論理和が0のときには、ステッ
プ1813によって正しいy3が求められ、1のときは、ステ
ップ1814にて、正しいy3が求められる。これで、2Pの各
座標の値が求められたことになる。これは、本発明の実
施例の一つである。
計算を実行する代表的な方法は、拡張ユークリッド互除
法を利用するものとフェルマーの小定理を利用するもの
である。拡張ユークリッド互除法では、不定方程式: 2
*y*D1 + p*U = 1を(2*yとpの最大公約数を求める操作
(ユークリッド互除法)を繰り返すことで、結果的にD1
を求める方法である。一方、フェルマーの小定理を用い
る方法とは、フェルマーの小定理、すなわち、pと互い
に素な正の整数gに対し、g^(p-1) mod p = 1が成り立つ
ことから、g^(-1) mod p = g^(p-2) mod pとなることを
用いるものである。つまり、D1 = (2*y)^(p-2) mod pと
して、D1を求めるものである。フェルマーの小定理を用
いる方法では、逆数の計算は、べき乗剰余計算に帰着す
る。このべき乗剰余計算に本発明の方法を適用すること
は容易なことであり、オーバーフロー処理からのリーク
情報を減らすことができる。
ってGF(p^n)の上の楕円曲線上の2倍算に拡張すること
は、全く容易である。
の情報処理装置において、データとして本来の値とは異
なる「モジュラ反転値」を用いて剰余乗算の計算を行
い、その計算結果を修正することで正しい結果を求める
ことにより、消費電流の波形から処理や暗号鍵の推測を
行うことが困難になる。
る。
ィション・チェイン方式)の処理手順を示す図である。
イディング・ウインドウ方式)の処理手順を示す図であ
る。
ズム(2ビットのアディション・チェイン方式)を示す図
である。
を適用した場合の第1の実施例の処理手順を示す図であ
る。
明を適用した場合の第2の実施例の処理手順を示す図で
ある。
合の第1の実施例の処理手順を示す図である。
合の第2の実施例の処理手順を示す図である。
明を適用した場合の第3の実施例の処理手順を示す図で
ある。
明を適用した場合の第3の実施例の処理手順を示す図
(続き)である。
を適用した場合の第1の実施例の処理手順を示す図であ
る。
を適用した場合の第1の実施例の処理手順を示す図であ
る。
明を適用した場合の実施例の処理手順を示す図である。
明を適用した場合の実施例の処理手順を示す図である。
を適用した場合の第2の実施例の処理手順を示す図であ
る。
乗算の選択)、912〜915,1012〜1015,1112〜1115,1213
〜1216,1311〜1314,1405,1410,1605,1610…ステップ
(選択的な剰余乗算)、917,1017,1116,1217,1317…
(結果の補正)、919〜920,1019〜1020,1118〜1119,121
9〜1220,1319〜1320…ステップ(結果の出力)
Claims (13)
- 【請求項1】情報処理装置を利用して、暗号処理中に出
現する剰余乗算であるA*B*R^(−1) mod N
を計算する方法であって、その方法は、(1)S1=A
*B*R^(−1) mod Nを計算するステップ、
(2)(1)の代わりにS2={sN + A*(-1)^f }
*{tN + B*(-1)^g}R^(−1) mod N
(s, t, f, gは少なくとも1つは0でない整数であ
り、f, gは0又は1)を計算するステップ、(3)上
記(1)と(2)のいずれかを適宜選択するステップ、
(4)上記(1)(2)(3)を適宜繰り返し、最後に
上記(1)を選択したときには計算結果S1についてT1
=S1*R^(−1) modNを計算してT1を出力
し、上記(2)を選択したときには計算結果S2につい
てT2=S2*R^(−1) modNを計算してN−T2
を出力するステップ、および(5)T1とN−T2を、暗
号処理の剰余乗算A*B*R^(−1) mod Nの計
算結果として用いるステップを有することを特徴とする
耐タンパーモジュラ演算処理方法。 - 【請求項2】前記(3)の適宜選択するとは、乱数を用
いていずれかを選択することを特徴とする請求項1記載
の耐タンパーモジュラ演算処理方法。 - 【請求項3】前記(s, t, f, g)は、(0, 1, 0,
1)であることを特徴とする請求項1記載の耐タンパー
モジュラ演算処理方法。 - 【請求項4】前記(s, t, f, g)は、(1, 0, 1,
0)であることを特徴とする請求項1記載の耐タンパー
モジュラ演算処理方法。 - 【請求項5】情報処理装置を利用して、暗号処理中に出
現する剰余乗算であるA*B mod p (pは素数)
を計算する方法であって、その方法は、(1)S=A*
B mod pを計算するステップ、(2)(1)の代わ
りにS={sp + A*(-1)^f }*{tp + B*(-1)^g}
mod p (s, t, f, gは少なくとも1つは0でな
い整数であり、f, gは0又は1でf+gは偶数)を計
算するステップ、(3)上記(1)と(2)のいずれか
を適宜選択するステップ、および(4)上記(1)と
(2)のうち選択された方の計算結果Sを暗号処理の剰
余乗算A*B mod pの計算結果として用いるステッ
プを有することを特徴とする耐タンパーモジュラ演算処
理方法。 - 【請求項6】前記(s, t, f, g)は、(1, 1, 1,
1)であることを特徴とする請求項5記載の耐タンパー
モジュラ演算処理方法。 - 【請求項7】前記(2)のステップのf+gは奇数であ
って、前記(4)の代わりに、(4)前記(1)を選択
したときは計算結果Sそのままとし、前記(2)を選択
したときにはSの代わりにp−Sを計算結果とするステ
ップ、および(5)前記Sとp−Sを、暗号処理の剰余
乗算A*B mod pの計算結果として用いるステップ
を有することを特徴とする請求項5記載の耐タンパーモ
ジュラ演算処理方法。 - 【請求項8】前記(s, t, f, g)は、(0, 1, 0,
1)であることを特徴とする請求項7記載の耐タンパー
モジュラ演算処理方法。 - 【請求項9】情報処理装置を利用して、暗号処理中に出
現する剰余乗算であるA(x)*B(x) mod Φ
(x)(Φ(x)はxの既約多項式であり、A(x)*
B(x)の係数の演算は3以上の素数pを法として行
う)を計算する方法であって、その方法は、(1)S
(x)=A(x)*B(x) mod Φ(x)を計算す
るステップ、(2)(1)の代わりにS(x)={sΦ
(x) + A(x)*(-1)^f }*{tΦ(x) + B
(x)*(-1)^g} mod Φ(x) (s, t, f, g
は少なくとも1つは0でない整数であり、f, gは0又
は1でf+gは偶数)を計算するステップ、(3)上記
(1)と(2)のいずれかを適宜選択するステップ、お
よび(4)上記(1)と(2)のうち選択された方の計
算結果S(x)を、暗号処理の剰余乗算A(x)*B
(x) mod Φ(x)の計算結果として用いるステッ
プを有することを特徴とする耐タンパーモジュラ演算処
理方法。 - 【請求項10】前記(s, t, f, g)は、(1, 1,
1, 1)であることを特徴とする請求項9記載の耐タン
パーモジュラ演算処理方法。 - 【請求項11】前記(2)のステップのf+gは奇数で
あって、前記(4)の代わりに、(4)前記(1)を選
択したときは計算結果S(x)そのままとし、上記
(2)を選択したときにはS(x)の代わりにΦ(x)
−S(x)を計算結果とするステップ、および(5)前
記S(x)とΦ(x)−S(x)を、暗号処理の剰余乗
算A(x)*B(x) mod Φ(x)の計算結果とし
て用いるステップを有することを特徴とする請求項9記
載の耐タンパーモジュラ演算処理方法。 - 【請求項12】前記(s, t, f, g)は、(0, 1,
0, 1)であることを特徴とする請求項11記載の耐タ
ンパーモジュラ演算処理方法。 - 【請求項13】前記A(x)*B(x)の係数の演算は
素数2を法として行うものであり、前記(2)の(f,
g)は(0,0)であることを特徴とする請求項9記載
の耐タンパーモジュラ演算処理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001060223A JP3950638B2 (ja) | 2001-03-05 | 2001-03-05 | 耐タンパーモジュラ演算処理方法 |
EP01119672A EP1239364B1 (en) | 2001-03-05 | 2001-08-22 | Tamper-resistant modular multiplication method |
DE60125710T DE60125710T2 (de) | 2001-03-05 | 2001-08-22 | Manipulationssichere Methode zur modularen Multiplikation |
US09/935,654 US6968354B2 (en) | 2001-03-05 | 2001-08-24 | Tamper-resistant modular multiplication method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001060223A JP3950638B2 (ja) | 2001-03-05 | 2001-03-05 | 耐タンパーモジュラ演算処理方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002258743A true JP2002258743A (ja) | 2002-09-11 |
JP2002258743A5 JP2002258743A5 (ja) | 2005-07-14 |
JP3950638B2 JP3950638B2 (ja) | 2007-08-01 |
Family
ID=18919673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001060223A Expired - Fee Related JP3950638B2 (ja) | 2001-03-05 | 2001-03-05 | 耐タンパーモジュラ演算処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6968354B2 (ja) |
EP (1) | EP1239364B1 (ja) |
JP (1) | JP3950638B2 (ja) |
DE (1) | DE60125710T2 (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007046402A1 (ja) * | 2005-10-19 | 2007-04-26 | Matsushita Electric Industrial Co., Ltd. | 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路 |
JP2007519305A (ja) * | 2003-11-17 | 2007-07-12 | エム−システムズ フラッシュ ディスク パイオニアズ リミティド | 強化された自然モンゴメリー指数マスキング |
KR100808953B1 (ko) | 2006-05-22 | 2008-03-04 | 삼성전자주식회사 | 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드 |
JP2009258460A (ja) * | 2008-04-18 | 2009-11-05 | Renesas Technology Corp | データ処理装置 |
JP2016510914A (ja) * | 2013-03-15 | 2016-04-11 | クリプトグラフィ リサーチ, インコーポレイテッド | 非対称マスク済み乗算 |
CN109416626A (zh) * | 2016-05-04 | 2019-03-01 | 格马尔托股份有限公司 | 通过加密取幂算法对安全错误故障注入攻击的反措施 |
JP7194303B1 (ja) | 2021-09-09 | 2022-12-21 | エアーズ インベストメント ホールディングス プライベート リミテッド | ディオファントス方程式及び人工知能が関与する暗号、復号、及び鍵生成の装置並びに方法 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10142155C1 (de) * | 2001-08-29 | 2002-05-23 | Infineon Technologies Ag | Verfahren und Vorrichtung zum modularen Multiplizieren |
JP2003241659A (ja) * | 2002-02-22 | 2003-08-29 | Hitachi Ltd | 情報処理方法 |
US20040001590A1 (en) * | 2002-06-27 | 2004-01-01 | Eisentraeger Anne Kirsten | Efficient elliptic curve double-and-add calculator |
JP4360792B2 (ja) * | 2002-09-30 | 2009-11-11 | 株式会社ルネサステクノロジ | べき乗剰余演算器 |
US7298839B2 (en) | 2003-07-25 | 2007-11-20 | Microsoft Corporation | Squared Weil and Tate pairing techniques for use with elliptic curves |
US7769167B2 (en) | 2003-07-25 | 2010-08-03 | Microsoft Corporation | Weil and Tate pairing techniques using parabolas |
US7440569B2 (en) * | 2003-07-28 | 2008-10-21 | Microsoft Corporation | Tate pairing techniques for use with hyperelliptic curves |
DE10338435B4 (de) * | 2003-08-18 | 2008-12-11 | Infineon Technologies Ag | Schaltung zur Durchführung eines Algorithmus |
KR100564599B1 (ko) | 2003-12-24 | 2006-03-29 | 삼성전자주식회사 | 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 |
FR2864649B1 (fr) * | 2004-12-23 | 2007-06-01 | Samsung Electronics Co Ltd | Circuit de calcul d'inverse, procede de calcul d'inverse et support d'enregistrement contenant un code de programme lisible par ordinateur |
WO2006076800A1 (en) * | 2005-01-18 | 2006-07-27 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
US7743977B2 (en) * | 2005-02-28 | 2010-06-29 | Broadcom Corporation | Method and system for random data access for security applications |
KR100871221B1 (ko) * | 2005-11-11 | 2008-12-01 | 삼성전자주식회사 | 선형 궤환 시프트 레지스터를 이용하는 통신 시스템에서부호 생성 방법 및 장치 |
US20070157030A1 (en) * | 2005-12-30 | 2007-07-05 | Feghali Wajdi K | Cryptographic system component |
FR2917197B1 (fr) * | 2007-06-07 | 2009-11-06 | Thales Sa | Procede de masquage du resultat d'une operation de multiplication modulaire et dispositif associe. |
EP2015171A1 (fr) * | 2007-06-29 | 2009-01-14 | Gemplus | Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés sans la connaissance de l'exposant public, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée |
US7991162B2 (en) * | 2007-09-14 | 2011-08-02 | University Of Ottawa | Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields |
US8635467B2 (en) | 2011-10-27 | 2014-01-21 | Certicom Corp. | Integrated circuit with logic circuitry and multiple concealing circuits |
US8334705B1 (en) | 2011-10-27 | 2012-12-18 | Certicom Corp. | Analog circuitry to conceal activity of logic circuitry |
US10148285B1 (en) | 2012-07-25 | 2018-12-04 | Erich Schmitt | Abstraction and de-abstraction of a digital data stream |
US10795858B1 (en) | 2014-02-18 | 2020-10-06 | Erich Schmitt | Universal abstraction and de-abstraction of a digital data stream |
CN108242994B (zh) * | 2016-12-26 | 2021-08-13 | 阿里巴巴集团控股有限公司 | 密钥的处理方法和装置 |
US10601578B2 (en) * | 2017-10-26 | 2020-03-24 | Nxp B.V. | Protecting ECC against fault attacks |
EP3503459B1 (en) * | 2017-12-22 | 2021-04-21 | Secure-IC SAS | Device and method for protecting execution of a cryptographic operation |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2726668B1 (fr) * | 1994-11-08 | 1997-01-10 | Sgs Thomson Microelectronics | Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery |
JP3525209B2 (ja) * | 1996-04-05 | 2004-05-10 | 株式会社 沖マイクロデザイン | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
JP3615622B2 (ja) * | 1996-06-28 | 2005-02-02 | 株式会社ルネサステクノロジ | マイクロコンピュータ |
WO1998019231A1 (en) * | 1996-10-31 | 1998-05-07 | Motorola Limited | Co-processor for performing modular multiplication |
US6748410B1 (en) * | 1997-05-04 | 2004-06-08 | M-Systems Flash Disk Pioneers, Ltd. | Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication |
US6026421A (en) * | 1997-11-26 | 2000-02-15 | Atmel Corporation | Apparatus for multiprecision integer arithmetic |
JP2000165375A (ja) * | 1998-11-30 | 2000-06-16 | Hitachi Ltd | 情報処理装置、icカード |
US6298135B1 (en) * | 1999-04-29 | 2001-10-02 | Motorola, Inc. | Method of preventing power analysis attacks on microelectronic assemblies |
JP3926532B2 (ja) * | 2000-03-16 | 2007-06-06 | 株式会社日立製作所 | 情報処理装置、情報処理方法、及びカード部材 |
US6625631B2 (en) * | 2001-09-28 | 2003-09-23 | Intel Corporation | Component reduction in montgomery multiplier processing element |
-
2001
- 2001-03-05 JP JP2001060223A patent/JP3950638B2/ja not_active Expired - Fee Related
- 2001-08-22 DE DE60125710T patent/DE60125710T2/de not_active Expired - Lifetime
- 2001-08-22 EP EP01119672A patent/EP1239364B1/en not_active Expired - Lifetime
- 2001-08-24 US US09/935,654 patent/US6968354B2/en not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007519305A (ja) * | 2003-11-17 | 2007-07-12 | エム−システムズ フラッシュ ディスク パイオニアズ リミティド | 強化された自然モンゴメリー指数マスキング |
JP4713490B2 (ja) * | 2003-11-17 | 2011-06-29 | サンディスク アイエル リミティド | 暗号文メッセージからリトリーブされた平文メッセージの計算をマスクする方法、および、暗号文メッセージをマスクする装置 |
WO2007046402A1 (ja) * | 2005-10-19 | 2007-04-26 | Matsushita Electric Industrial Co., Ltd. | 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路 |
CN101292274B (zh) * | 2005-10-19 | 2011-01-19 | 松下电器产业株式会社 | 信息安全装置、信息安全方法、计算机程序、计算机可读取的记录媒体及集成电路 |
US8090957B2 (en) | 2005-10-19 | 2012-01-03 | Panasonic Corporation | Information security device, information security method, computer program, computer-readable recording medium, and integrated circuit |
JP4906733B2 (ja) * | 2005-10-19 | 2012-03-28 | パナソニック株式会社 | 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路 |
KR100808953B1 (ko) | 2006-05-22 | 2008-03-04 | 삼성전자주식회사 | 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드 |
JP2009258460A (ja) * | 2008-04-18 | 2009-11-05 | Renesas Technology Corp | データ処理装置 |
JP2016510914A (ja) * | 2013-03-15 | 2016-04-11 | クリプトグラフィ リサーチ, インコーポレイテッド | 非対称マスク済み乗算 |
CN109416626A (zh) * | 2016-05-04 | 2019-03-01 | 格马尔托股份有限公司 | 通过加密取幂算法对安全错误故障注入攻击的反措施 |
JP2019515353A (ja) * | 2016-05-04 | 2019-06-06 | ジエマルト・エス・アー | 暗号化べき乗アルゴリズムへのセーフ−エラーフォールトインジェクション攻撃に対する対策 |
JP7194303B1 (ja) | 2021-09-09 | 2022-12-21 | エアーズ インベストメント ホールディングス プライベート リミテッド | ディオファントス方程式及び人工知能が関与する暗号、復号、及び鍵生成の装置並びに方法 |
Also Published As
Publication number | Publication date |
---|---|
US6968354B2 (en) | 2005-11-22 |
DE60125710T2 (de) | 2007-11-08 |
EP1239364B1 (en) | 2007-01-03 |
EP1239364A1 (en) | 2002-09-11 |
US20020152252A1 (en) | 2002-10-17 |
DE60125710D1 (de) | 2007-02-15 |
JP3950638B2 (ja) | 2007-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3950638B2 (ja) | 耐タンパーモジュラ演算処理方法 | |
JP4188571B2 (ja) | 情報処理装置の演算方法および耐タンパ演算攪乱実装方式 | |
KR100693239B1 (ko) | 정보 처리 장치, ic 카드 | |
US6666381B1 (en) | Information processing device, information processing method and smartcard | |
JP4199937B2 (ja) | 耐タンパー暗号処理方法 | |
JP4875700B2 (ja) | ランダム化されたモジュラー多項式のリダクション方法およびそのためのハードウェア | |
CN107040362B (zh) | 模乘设备和方法 | |
EP1808762B1 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
Trichina et al. | Implementation of elliptic curve cryptography with built-in counter measures against side channel attacks | |
EP1975907A1 (en) | Encryption processing device, encryption processing method, and computer program | |
GB2399904A (en) | Side channel attack prevention in data processing by adding a random multiple of the modulus to the plaintext before encryption. | |
JP2002261751A (ja) | 暗号処理方法 | |
EP1889398B1 (en) | Randomized modular polynomial reduction method and hardware therefore | |
JP2003098962A (ja) | 楕円曲線スカラー倍計算方法及び装置並びに記録媒体 | |
Batina et al. | Public-key cryptography on the top of a needle | |
JP2005020735A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
JP2003255831A (ja) | 楕円曲線スカラー倍計算方法及び装置 | |
JP3779479B2 (ja) | Icカード | |
US20240163085A1 (en) | Method for Combined Key Value-Dependent Exchange and Randomization of Two Input Values | |
Davies-Batista | Efficient and secure elliptic curves | |
JP2014145958A (ja) | 半導体装置 | |
Kocabas et al. | Hardware implementations of ECC over a binary Edwards curve | |
AU2005203004A1 (en) | Information processing device, information processing method and smartcard | |
WO2004047052A1 (ja) | 耐タンパー情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041119 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041119 |
|
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: 20070410 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070423 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110427 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120427 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120427 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130427 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140427 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |