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
Application number
JP2001060223A
Other languages
English (en)
Other versions
JP2002258743A5 (ja
JP3950638B2 (ja
Inventor
Masahiro Kaminaga
正博 神永
Takashi Endo
隆 遠藤
Takashi Watanabe
高志 渡邊
Masaru Oki
優 大木
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001060223A priority Critical patent/JP3950638B2/ja
Priority to DE60125710T priority patent/DE60125710T2/de
Priority to EP01119672A priority patent/EP1239364B1/en
Priority to US09/935,654 priority patent/US6968354B2/en
Publication of JP2002258743A publication Critical patent/JP2002258743A/ja
Publication of JP2002258743A5 publication Critical patent/JP2002258743A5/ja
Application granted granted Critical
Publication of JP3950638B2 publication Critical patent/JP3950638B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/724Finite field arithmetic
    • 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/722Modular multiplication
    • 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/728Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

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

(57)【要約】 【課題】 ICカードなどの情報処理装置において、暗
号処理中に行われる剰余乗算演算の際に発生するオーバ
ーフロー処理は、特有の消費電流を示す。この問題に対
してデータ処理と消費電流との関連性を減らす。 【解決手段】 2ビットアディション・チェイン方式に
従ってべき剰余計算を行う処理手順において、ステップ
1106で実行する剰余乗算をランダムに選択し、ステ
ップ1112〜1115で選択された剰余乗算を実行
し、ステップ1116で結果の補正を行い、ステップ1
118または1119で計算結果(補正しない値または
補正した値)を出力する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、高いセキュリティ
を持つICカードなどの耐タンパー暗号処理方法に関す
るものである。
【0002】
【従来の技術】ICカードは、勝手に書き換えることが
許されないような個人情報の保持や、秘密情報である暗
号鍵を用いたデータの暗号化や暗号文の復号化を行う装
置である。ICカード自体は電源を持っておらず、IC
カード用のリーダライタに差し込まれると、電源の供給
を受け、動作可能となる。動作可能になると、リーダラ
イタから送信されるコマンドを受信し、そのコマンドに
従ってデータの転送等の処理を行う。ICカードの一般
的な解説は、オーム社出版電子情報通信学会編水沢順一
著「ICカード」などにある。
【0003】ICカードの構成は、図1に示すように、
カード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参照)。
【0004】ICカード用チップの構成は、基本的には
通常のマイクロコンピュータと同じ構成である。その構
成は、図2に示すように、中央処理装置(CPU)201、
記憶装置204、入出力(I/O)ポート207、コ・プロセ
ッサ202からなる(コ・プロセッサはない場合もあ
る)。CPU201は、論理演算や算術演算などを行う装
置であり、記憶装置204は、プログラムやデータを格納
する装置である。入出力ポートは、リーダライタと通信
を行う装置である。コ・プロセッサは、暗号処理そのも
の、または暗号処理に必要な演算を高速に行う装置であ
り、例えばRSA暗号の剰余演算を行うための特別な演
算装置や、DES暗号のラウンド処理を行う暗号装置な
どがある。ICカード用プロセッサの中には、コ・プロ
セッサを持たないものも多くある。データバス203は、
各装置を接続するバスである。
【0005】記憶装置204は、ROM(Read Only Memor
y)やRAM(Random Access Memory)、EEPROM(Ele
ctrical Erasable Programmable Read Only Memory)な
どからなる。ROMは、変更できないメモリであり、主
にプログラムを格納するメモリである。RAMは自由に
書き換えができるメモリであるが、電源の供給が中断さ
れると、記憶している内容は消滅する。ICカードがリ
ーダライタから抜かれると電源の供給が中断されるた
め、RAMの内容は、保持されなくなる。EEPROM
は、電源の供給が中断されてもその内容を保持すること
ができるメモリである。書き換える必要があり、ICカ
ードがリーダライタから抜かれても、保持するデータを
格納するために使われる。例えば、プリペイドカードで
のプリペイドの度数などは、使用するたびに書き換えら
れ、かつリーダライタか抜かれてもデータを保持する必
要があるため、EEPROMで保持される。
【0006】ICカードは、プログラムや重要な情報が
ICカード用チップの中に密閉されているため、重要な
情報を格納したり、カードの中で暗号処理を行うために
用いられる。従来、ICカードでの暗号を解読する難し
さは、暗号アルゴリズムの解読の困難さと同じと考えら
れていた。しかし、ICカードが暗号処理を行っている
時の消費電流を観測し、解析することにより、暗号アル
ゴリズムの解読より容易に暗号処理の内容や暗号鍵が推
定される可能性が示唆されている。消費電流は、リーダ
ライタから供給されている電流を測定することにより観
測することができ、この攻撃法の詳細は、John Wiley &
sons社 W.Rankl & W.Effing著 「SmartCard Handboo
k」の8.5.1.1 Passive protective mechanisms(263ペー
ジ)にこのような危険性が記載されている。
【0007】ICカード用チップを構成しているCMO
Sは、出力状態が1から0あるいは0から1に変わった
時に電流を消費する。特に、データバス203において
は、バスドライバーの電流や、配線および配線に接続さ
れているトランジスタの静電容量のため、バスの値が1
から0あるいは0から1に変わると、大きな電流が流れ
る。そのため、消費電流を観測すれば、ICカード用チ
ップの中で、何が動作しているか分かる可能性がある。
【0008】図3は、ICカード用チップの1サイクル
での消費電流の波形を示したものである。処理している
データに依存して、電流波形が301や302のように異な
る。このような差は、バス203を流れるデータや中央演
算装置201で処理しているデータに依存して生じる。
【0009】コ・プロセッサ202は、CPUと並列に、
例えば、512ビットの剰余演算を行うことができる。そ
のため、CPUの消費電流とは異なった消費電流波形の
長時間の観測が可能である。その特徴的な波形を観測す
ることにより、コ・プロセッサの動作回数を容易に測定
することができる。コ・プロセッサの動作回数が暗号鍵
と何らかの関係があるならば、コ・プロセッサの動作回
数から暗号鍵を推定できる可能性がある。
【0010】また、コ・プロセッサでの演算内容が、暗
号鍵に依存した偏りがあると、その偏りが消費電流から
求められ、暗号鍵が推定される可能性がある。例えば、
乗算剰余演算の際に発生するオーバーフロー処理は、多
くの場合、オーバーフロー処理特有の電流が発生する。
オーバーフロー処理をするかしないかで、処理時間が異
なる場合もある。
【0011】CPUでも同様の事情が存在する。暗号鍵
のビット値は決まっているため、処理するデータを変更
して、消費電流を観測することにより、暗号鍵のビット
値の影響が観測できる可能性がある。これらの消費電流
の波形を統計的に処理することにより、暗号鍵を推定で
きる可能性がある。
【0012】
【発明が解決しようとしている課題】本発明の課題は、
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)に置き換えて処理
することにより、消費電流の波形や処理時間の偏りか
ら、処理内容や暗号鍵の推測を困難にするものである。
【0013】
【課題を解決するための手段】ICカードチップに代表
される耐タンパー装置は、プログラムを格納するプログ
ラム格納部、データを保存するデータ格納部を持つ記憶
装置と、プログラムに従って所定の処理を実行しデータ
処理を行う中央演算装置(CPU)を持ち、プログラム
は、CPUに実行の指示を与える処理命令から構成され
る一つ以上のデータ処理手段からなる情報処理装置とし
て捉えることができる。
【0014】電子マネーに代表される高セキュリティの
ICカードでは、RSA暗号や、ガロア体GF(p^n):pは
素数、nは正の整数)上の楕円曲線暗号が用いられる。
その際、乗算剰余演算A*B mod Nや、多項式の乗算剰余
演算A(X)*B(X) mod Φ(X)の処理が必要となる(A=Bの場
合もある)。以下、多項式の場合も考え方は同じなの
で、通常の乗算剰余処理の場合について説明する。多項
式の場合の乗算剰余処理ついては、計算機上の実装が通
常の乗算剰余処理の場合と若干異なるが、それは「発明
の実施形態」にて詳細に説明する。
【0015】本発明において、乗算剰余演算で処理して
いるデータとICカード用チップの消費電流の関連性を
撹乱する一つの方法は、本来の演算処理に用いられるデ
ータを直接用いずに、演算結果が大きく変わらないよう
なデータを用いて計算を行い、計算後に結果を修正する
ことである。
【0016】具体的には、乗算剰余処理A*B mod Nの計
算を行う際、乗数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を演算
結果とすることである。
【0017】上記の処理では、乗算剰余演算を行う度に
本来の答になるように修正している。しかし、RSA暗
号に代表されるべき乗剰余計算の場合は、毎回修正を施
す必要はなく、最終的に修正を施せばよい。
【0018】RSA暗号で用いられるべき乗剰余計算y^
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からべき乗剰余計算の値
を引く修正を行えばよい。なぜこのようなことができる
かは、「発明の実施形態」の中で述べる。
【0019】上記のように処理することで、本来の乗算
剰余演算処理で発生する電流とは異なるパターンの電流
が観測されることになるため、本来のデータの場合に期
待される波形を基に内部処理を推定することが困難にな
る。s, t, f, gを外部から推定できない情報源を用
いて変更すれば、さらに効果が高まり、特に、複数の波
形を収集して平均をとるなどの統計処理を行う場合は、
ランダムな波形を平均化するのと同じことになり、波形
の特徴は消滅するため、さらに効果は顕著である。
【0020】本発明は、特にRSA暗号での、乗算剰余
演算や、べき乗剰余計算、および楕円曲線暗号での定義
体上での乗算や除算、ベースポイントのスカラー倍など
の情報隠蔽に利用することができる。
【0021】
【発明の実施形態】以下に示す実施例では、公開鍵暗号
(非対称鍵暗号)の代表例であるRSA暗号、楕円曲線
暗号を例にとる。RSA暗号については、岡本栄司著
「暗号理論入門」(共立出版)や、A.J.Menezes、 P.C.
van Oorschot、 S. A.Vanstone著 Handbook of Applie
d Cryptography、(CRC-Press)などに詳しく記載され
ている。楕円曲線暗号については、考案者の一人が書い
たN.コブリツ著(櫻井幸一訳)「数論アルゴリズムと
楕円暗号理論入門」(シュプリンガーフェアラ−ク東
京)、楕円曲線上の演算については、I.H.シルバーマン
・J.テイト著「楕円曲線論入門」(シュプリンガーフェ
アラ−ク東京)、又、群、環、体等の代数系について
は、松坂和夫著「代数系入門」(岩波書店)に詳しい説
明がある。
【0022】実施例を説明するに先立ち、背景となる数
学的知識を整理しておく。一般に公開鍵暗号(非対称鍵
暗号)においては、秘密鍵情報が公開鍵の中に含まれて
いるが、公開鍵から秘密鍵情報を取り出すことが、計算
時間の点で著しく現実性を欠くということ(計算量的安
全性)を根拠にして暗号が構成されている。計算量的安
全性を持つ問題の代表的なものとして、素因数分解と、
群上の離散対数問題が挙げられる。前者を利用したもの
がRSA暗号であり、後者を楕円曲線上のモーデル・ヴェイ
ユ群に適用して利用しているものが楕円曲線暗号であ
る。
【0023】簡単にRSA暗号を説明する。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の秘密鍵は安全であ
る。
【0024】RSA暗号の暗号化/復号化操作で用いら
れるべき乗剰余計算の実装方法の代表的なものは、アデ
ィション・チェイン方式とスライディング・ウインドウ方
式である。まず、アディション・チェイン方式による計
算アルゴリズムについて図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ビットをまとめて
計算することもある。その際も考え方は全く同じであ
る。
【0025】まず、ビットテーブルy[0] = 1, y[1] =
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の剰余乗算演算が行われる。
【0026】この方式で正しい計算が行なえることを簡
単に数値例で確認する。この計算方式の本質的部分は指
数部分であるので、例として、指数部分のみ数値である
例として 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となる。これが求める答である。
【0027】次に、もう一つの代表的なべき乗剰余計算
アルゴリズムであるスライディング・ウインドウ方式に
ついて図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)に戻る。
【0028】これも、数値例で簡単に確認しておく。例
として 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の容量が半分で済むという利点がある。
【0029】上記のアディション・チェイン方式、スラ
イディング・ウインドウ方式は、モンゴメリ法と呼ばれ
る方式を用いて実行されることがあることに注意してお
く。モンゴメリ法とは、剰余乗算演算 AB mod Nを高速
に実行する方式であり、特にハードウエア化に向いた方
法である。簡単にそのしくみを説明する。詳細は、モン
ゴメリの原著論文“Modular Multiplication Without T
rial Division”、 Mathematics of Computation 44、
170、 pp.519-521(1985))に記載されている。
【0030】モンゴメリ法の本質は、殆ど全てのコンピ
ュータにおいて、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を引き算して求める答を得る。
【0031】このように、モンゴメリ法においては、AB
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倍することにより、求める答
を得ることができる。
【0032】次に、後の説明の便宜のため、乗算剰余処
理におけるオーバーフロー処理について簡単に説明して
おく。オーバーフロー処理は、演算装置の実装方法によ
って若干の違いがあるが、ここでは代表的なものを説明
する。最も単純な方式は、A*Bをはじめに求め、これがN
未満であれば、このA*Bを答えとし、Nより大きい場合
は、N未満の値になるまでNを引き算することによってA*
B mod Nを求めるというものである。つまり、この場
合、「オーバーフロー」とは、A*BがN以上になることで
あり、「オーバーフロー処理」とは、N未満の値になる
までNを引き算するという操作に他ならない。この方式
は、A*Bのビット長が小さいときはコード量も少なく、
処理時間も無視できるが、ビット長が大きくなると、I
Cカードのような非力なデバイスでは処理時間が極めて
大きくなるため、あまり用いられない。
【0033】もう一つは、モンゴメリ法で生ずるオーバ
ーフローである。先に簡単に説明したように、モンゴメ
リ法では、法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を一回引く操作に
対応する。
【0034】RSA暗号の場合、乗算剰余処理が出現す
ることは明らかであるが、楕円曲線暗号に対しては、自
明な事柄ではないので、以下、楕円曲線暗号について簡
単に説明しておく。楕円曲線とは、体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のようなものになる。
【0035】暗号で必要なのは、定義体が有限体(ガロ
ア体)の場合のみであるので、その場合に限って説明す
る。有限個の元からなる体を有限体又はガロア体とい
い、その構造はよく知られている。その最も単純な構成
法は以下の通りである。まず、素数 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のように書くこともある。
【0036】次に、GF(p)の元を係数に持つ多項式 f(X)
を考え、その零点のうち、GF(p)に含まれないものをGF
(p)に添加することによって、新しい体を構成すること
ができる。これを、GF(p)の有限次代数拡大体という。G
F(p)の有限次代数拡大体の元の個数は、pのべきになっ
ていることが知られている。その元の個数をp^nと書く
とき、有限次代数拡大体をGF(p^n)などと表示すること
がある。
【0037】準同型定理(松坂和夫「代数系入門」岩波
書店、 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)の演算
をマイクロコンピュータ上に実現することができる。
【0038】ICカードの上で実装する場合は、特に素
体GF(p)(pは素数)の場合とバイナリ体GF(2^n)の場合が
重要である。GF(p^n)を、pの大きさをマイクロコンピュ
ータのレジスタの大きさ程度にすることによって、実現
する方法もあり、研究が進められている。
【0039】楕円曲線上の点の間には、演算を定めるこ
とができる。図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つの巡回群の直積になっている場合は、い
ずれかの位数(元の数)が、大きな素数で割れることが
望ましい。
【0040】楕円曲線上の点P=(x1, y1)、 Q=(x2, y
2)の和P+Qの座標を(x3, y3)とする。P+Q=Oでないと
き、以下の関係式が成立する。ICカードでは、標数3
を用いる積極的理由は何もないので、以下標数3の場合
は省略する。以下、考える楕円曲線は、非特異(non-sin
gular)であるものとする。
【0041】標数が2,3でない場合: y^2 = x^3 + ax + b に対しては、 x3 = h^2 - x1 - x2 y3 = h(x1 - x3) - y1 ここで、hは、 h = (y2 - y1)/(x2 - x1) if P≠Q, (3x1^2 + a)/(2y
1) if P = Q である。
【0042】標数が2の場合: y^2 + xy = x^3 + ax + b に対しては、 x3 = h^2 + h + x1 + x2 + a y3 = h(x1 + x3) + x3 + y1 ここで、hは、 h = (y1 + y2)/(x1 + x2) if P≠Q, x1 + (y1/x1) if
P = Q である。
【0043】上記の和の公式では、演算をガロア体GF(p
^n)の上で行う必要がある。従って、例えば、GF(p)(pは
大きな素数)の上では、 x3 = (h^2 - x1 - x2) mod p y3 = (h(x1 - x3) - y1) mod p を行うことになる。
【0044】またhの計算もmod pで実行しなければなら
ない。つまり、例えば、h = (y2 -y1)/(x2 - x1)は、h
= (y2 - y1)*{(x2 - x1)^(-1) mod p} mod pと解釈され
る。
【0045】GF(p^n)の場合も、先に述べたように、結
局は、多項式の乗算剰余演算を行うことになるので、同
様に理解することができる。
【0046】一般に、kP=Qの値がわかっても、逆にkの
値を知るのは計算量が膨大になるため、容易でない。こ
れを楕円曲線上の離散対数問題という。楕円曲線暗号で
は、楕円曲線上の離散対数問題が困難であることを利用
している。楕円曲線を利用した暗号方式には種々のもの
があるが、ここでは、特に、楕円ElGamal方式を説明す
る。楕円曲線Eとその上の一点(一般に大きな位数を持
つ点。ベースポイントと呼ぶ)Pが公開されているもの
とする。
【0047】A氏が、B氏に秘密情報M(楕円曲線上の
点で表現する。平文(暗号文)の楕円曲線上の埋め込み
については、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を復元する。
【0048】楕円ElGamal暗号に限らず、楕円曲線暗号
においては、楕円曲線上の点のスカラー倍を計算する必
要がある。楕円曲線上の点のスカラー倍を求めるアルゴ
リズムは、べき乗剰余計算のアルゴリズムに類似してい
る。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))という代数系の上
で行われる演算と考えることができる。
【0049】一方で、マイクロコンピュータが内部のプ
ログラムを実行する際、動作時の内部消費電力が漏洩す
る可能性があるため、このプロセスをマイクロコンピュ
ータで実現する場合、秘密鍵の処理が漏洩し、危険に曝
されることになる。例えば、kのビット(この例では2
ビット毎)の違いにより、分岐が行われるので、もし
も、その処理が消費電流の差として現れれば、電流波形
からkのビットを特定することができる可能性がある。
【0050】上記の背景を踏まえて、本発明の実施例を
説明する。図9に示した処理は、本発明の典型的応用例
である。本実施例は、べき乗剰余計算y^x mod Nをアデ
ィション・チェイン方式によって実行するものである。
但し、本実施例では、モンゴメリ法による乗算剰余処理
を用いて、RSA暗号のべき乗剰余計算を行う。この処
理において、A*B*R^(-1) mod Nという乗算剰余演算が用
いられる。先に述べたのと同じく、Nは奇数(一般にRSA
暗号では、Nは、大きな素数p,qの積であり、奇数であ
る)であり、R = 2^n(nはデータのビット長)とする。
【0051】まず、ステップ901にて、S = R mod 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)}としたものの一つ
である({}内は集合の要素)。
【0052】上記実施例では、各jに関してv[j]を乱数
として変化させているが、全ての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)}としたもの
の一つである。
【0053】上記の2つの実施例では、モンゴメリ法を
用いたものを例として示したが、モンゴメリ法を用いな
い形式で本発明を適用することも容易である。この例を
示そう。図9の実施例を非モンゴメリ形式に変更するこ
とは全く容易であって、モンゴメリ・フォーマットに変
換している部分を除去すればよい。図11は、モンゴメ
リ法を用いない通常の実装方法を示したものである。
【0054】まずステップ1101にて、S = 1とし、さら
に、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)}としたものの一つ
である。
【0055】以下図11の実施例に対応する発明を方法
ステップの形で要約しておく。
【0056】情報処理装置を利用して、暗号処理中に出
現する剰余乗算である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−
2を、暗号処理の剰余乗算A*B mod Nの計算結
果として用いるステップを有することを特徴とする耐タ
ンパーモジュラ演算処理方法。
【0057】上記の実施例(図9、図10及び図11の
実施例)においては、vとして乱数を用いているが、こ
れを0と1を交互に取るような仕方で変化させたり、疑似
乱数や、カオス的数列といったものに変えることができ
ることは言うまでもない。また、上記実施例では、s,
t, f, gを二通りにしか変化させていないが、より多
くの変数を変化させることにより、撹乱効果を上げるこ
とができる。この場合の実施例を図12に示す。
【0058】まずステップ1201にて、S = 1とし、さら
に、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チップの消費電力や、
処理時間等を観測して内部処理を行うことが困難にな
る。これは、本発明の実施例の一つである。これをモン
ゴメリ方式の場合に変更することは容易であるので、例
を挙げることは省略する。
【0059】これまで示した実施例は、乗数側を変形す
るものである。本発明の趣旨は、乗数側、被乗数側のい
ずれか、または両方に適用することによって損なわれる
ことはない。これは数学的には自明な事実である。しか
し、実装上は若干の違いが生ずる。乗数側の変形は、最
初の段階でテーブルを作成しさえすれば、その後は「取
り出す値」を変化させることによって本発明を実現する
ことができる。ところが被乗数を変形する場合は、被乗
数自身が各計算過程で異なるため、計算過程毎に途中計
算値SとN-Sを構成しなければならない。これを示すため
に、被乗数側を変形する実施例を示す。
【0060】図13を順に説明する。まず、ステップ13
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)}としたものの一つである。これをモ
ンゴメリ法を用いない方式に変更することは容易である
ので、例を挙げることは省略する。
【0061】これまでに示した実施例は、乗数または被
乗数を変形したものであるが、両方を変形することもで
きることは言うまでもない。また、例えば図13のステ
ップ1305の処理過程で、S = (N - S)^2*R^(-1) mod Nの
ように処理を行うことにより、消費電流を本来のそれと
は異なるものにすることが可能となる。本発明の実施例
は、様々なバリエーションを持っているが、本質的に
は、上記の実施例を組み合せて構成することが可能であ
る。
【0062】上記の実施例はいずれも、べき乗剰余計算
の処理に対して適用されたものである。べき乗剰余計算
に対して本発明はとりわけ有効であるが、上記の考え方
をより一般のモジュラ計算(剰余計算)に置き換えるこ
とによって、オーバーフロー等の処理から秘密情報が漏
洩することを防ぐことも可能である。べき乗剰余計算に
おいて本発明が有効である理由は、本質的には、( tN
- B )^2 mod N = B^2 mod N(tは整数)という関係式
が成り立つという事実に帰着する。
【0063】ところがべき乗剰余計算とは異なる処理、
例えば、楕円曲線暗号における曲線上のベースポイント
Pのスカラー倍を計算するというような場合には、上記
の関係式のような「自然な」修正処理が現れるとは限ら
ない。この事情を簡単に説明する。素体GF(p)(pは大き
な素数)において、楕円曲線E: y^2 = x^3 + ax + b を考える。先に延べたように、E上の点Pのスカラー倍kP
を計算する場合は、点の2倍算と、点同士の和の計算が
出現する(図8参照)。ここで、この二つの計算をより
詳細に分解すると、通常のICカードマイコンにおいて
は、RSAよりも複雑な計算過程を経なければならない
ことがわかる。
【0064】先に述べたように、楕円曲線上の点P=(x
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 である。
【0065】この群演算(モーデル・ヴェイユ群の群演
算)で必要な乗算剰余演算を列挙すると、 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が奇数の場合は、補正が必要とな
る。
【0066】ここで、実施例を示すが、楕円曲線暗号の
大域的処理フローについては、図8及び対応する説明に
おいて説明したので、ここでは、2倍計算S = 2SとS =
S+P[j]の計算部に絞って説明を行う。すなわち、図8に
おける、ステップ803(2倍計算)、ステップ809,810,
811,812(和の計算)の処理に本発明の処理方式を実装
する方法を説明する。
【0067】まず、素体GF(p)の上での実施例のうち、
最も簡単なものを説明する。素体上での計算は、全て、
法pのもとで実行すればよい。図15はGF(p)上での楕円
曲線E: y^2 = x^3 + ax + bにおける点P(x,y)の2倍計
算に本発明を適用したものである。以下、2P = (x3, y
3)とする。
【0068】ステップ1401において、D1 = (2*y)^(-1)
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の各座標の値が求められ
たことになる。これは、本発明の実施例の一つである。
【0069】本実施例にて、ステップ1401における逆数
計算を実行する代表的な方法は、拡張ユークリッド互除
法を利用するものとフェルマーの小定理を利用するもの
である。拡張ユークリッド互除法では、不定方程式: 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を求めるものである。フェルマーの小定理を用
いる方法では、逆数の計算は、べき乗剰余計算に帰着す
る。このべき乗剰余計算に本発明の方法を適用すること
は容易なことであり、オーバーフロー処理からのリーク
情報を減らすことができる。
【0070】次にGF(p)上の楕円曲線に対する点の和の
計算に本発明を適用した場合の実施例を示す。以下、楕
円曲線上の点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の和の計算に本発明を適用したものである。
【0071】条件分岐処理(ステップ1501)にて、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の各座標の値が求められたことにな
る。これは、本発明の実施例の一つである。
【0072】図16の実施例は、容易にガロア体GF(p^
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で行う。
【0073】実例を示す。素数p = 5, n = 2とし、red
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として計算することができる。この事実を踏まえれ
ば、実施例を構成することは容易である。
【0074】素数p≧3の場合を考える。このとき、全て
の楕円曲線は、E: y^2 = x^3 + ax+ bの形に変換でき
る。これをWeierstrassの標準形と呼ぶ。ここで、E上の
点の座標の各成分は、GF(p^n)の元であるので、A(X),
B(X)をGF(p)[X]/(Φ(X))の元として、(A(X), B(X))
のように表現することができる。
【0075】以下、P = (A(X), B(X))の2倍計算につい
ての実施例を示す。和の計算は、GF(p)の場合に対する
図16の実施例及び2倍計算の実施例から、容易に類推
できるので、2倍計算の場合のみ説明する。
【0076】図17に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の各座標の値が
求められたことになる。これは、本発明の実施例の一つ
である。
【0077】本実施例にて、ステップ1601における逆数
計算を実行する代表的な方法は、拡張ユークリッド互除
法を利用するものとフェルマーの小定理を利用するもの
である。拡張ユークリッド互除法では、不定方程式: 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)を求めるものである。フェルマー
の小定理を用いる方法では、逆数の計算は、べき乗剰余
計算に帰着する。このべき乗剰余計算に本発明の方法を
適用することは容易なことであり、オーバーフロー処理
からのリーク情報を減らすことができる。
【0078】次に、p = 2の場合の実施例を説明する。
この場合は、これまでとは若干事情が異なる。これは、
ガロア体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の場合の実施例を示す。
【0079】ここでは、Weierstrass標準形E:y^2 + xy
= x^3 + ax + bを持つ楕円曲線を考える。E上の点P =
(A(X), B(X))に対し、2P = (A3(X), B3(X))とする。
実施例を構成するにあたって、2倍公式を次のように変
形しておく。
【0080】 A3(X) = (h(X)^2 + h(X) + a) mod Φ(X) B3(X) = (h(X)*(A(X) + A3(X)) + A3(X) + B(X)) mod
Φ(X) ここで、h(X)は、h(X) = (A(X)^2 + B(X))*A(X)^(-1)
mod Φ(X)とする。
【0081】図18に2倍計算の実施例を示す。ステツ
プ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の各座標
の値が求められたことになる。これは、本発明の実施例
の一つである。
【0082】本実施例にて、ステップ1701における逆数
計算を実行する代表的な方法は、拡張ユークリッド互除
法を利用するものとフェルマーの小定理を利用するもの
である。拡張ユークリッド互除法では、不定方程式: 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)を求めるものである。フェルマーの小定
理を用いる方法では、逆数の計算は、べき乗剰余計算に
帰着する。このべき乗剰余計算に本発明の方法を適用す
ることは容易なことであり、オーバーフロー処理からの
リーク情報を減らすことができる。
【0083】楕円曲線上の点のモーデル・ヴェイユ群演
算に関する上記実施例は、いずれも、符号の影響が、即
時に解消されるものであった。ここで、即時解消されな
いような場合の実施例を示す。
【0084】図19は、GF(p)上の楕円曲線E: y^2 = 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の各
座標の値が求められたことになる。これは、本発明の実
施例の一つである。
【0085】本実施例にて、ステップ1801における逆数
計算を実行する代表的な方法は、拡張ユークリッド互除
法を利用するものとフェルマーの小定理を利用するもの
である。拡張ユークリッド互除法では、不定方程式: 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を求めるものである。フェルマーの小定理を用
いる方法では、逆数の計算は、べき乗剰余計算に帰着す
る。このべき乗剰余計算に本発明の方法を適用すること
は容易なことであり、オーバーフロー処理からのリーク
情報を減らすことができる。
【0086】また、本実施例を、図16の実施例等に倣
ってGF(p^n)の上の楕円曲線上の2倍算に拡張すること
は、全く容易である。
【0087】
【発明の効果】本発明によれば、ICカードチップなど
の情報処理装置において、データとして本来の値とは異
なる「モジュラ反転値」を用いて剰余乗算の計算を行
い、その計算結果を修正することで正しい結果を求める
ことにより、消費電流の波形から処理や暗号鍵の推測を
行うことが困難になる。
【図面の簡単な説明】
【図1】ICカードの概観及び端子の構成を示す図であ
る。
【図2】マイクロコンピュータの構成図である。
【図3】消費電流の波形の例を示す図である。
【図4】べき乗剰余計算(ウインドウ幅2ビットのアデ
ィション・チェイン方式)の処理手順を示す図である。
【図5】べき乗剰余計算(ウインドウ幅2ビットのスラ
イディング・ウインドウ方式)の処理手順を示す図であ
る。
【図6】楕円曲線の形状を示す図である。
【図7】楕円曲線上の加法を説明する図である。
【図8】楕円曲線上の点Pのスカラー倍の計算アルゴリ
ズム(2ビットのアディション・チェイン方式)を示す図
である。
【図9】モンゴメリ法を用いたべき乗剰余計算に本発明
を適用した場合の第1の実施例の処理手順を示す図であ
る。
【図10】モンゴメリ法を用いたべき乗剰余計算に本発
明を適用した場合の第2の実施例の処理手順を示す図で
ある。
【図11】通常のべき乗剰余計算に本発明を適用した場
合の第1の実施例の処理手順を示す図である。
【図12】通常のべき乗剰余計算に本発明を適用した場
合の第2の実施例の処理手順を示す図である。
【図13】モンゴメリ法を用いたべき乗剰余計算に本発
明を適用した場合の第3の実施例の処理手順を示す図で
ある。
【図14】モンゴメリ法を用いたべき乗剰余計算に本発
明を適用した場合の第3の実施例の処理手順を示す図
(続き)である。
【図15】GF(p)上の楕円曲線上の点の2倍計算に本発明
を適用した場合の第1の実施例の処理手順を示す図であ
る。
【図16】GF(p)上の楕円曲線上の点の和計算に本発明
を適用した場合の第1の実施例の処理手順を示す図であ
る。
【図17】GF(p^n)上の楕円曲線上の点の2倍計算に本発
明を適用した場合の実施例の処理手順を示す図である。
【図18】GF(2^n)上の楕円曲線上の点の2倍計算に本発
明を適用した場合の実施例の処理手順を示す図である。
【図19】GF(p)上の楕円曲線上の点の和計算に本発明
を適用した場合の第2の実施例の処理手順を示す図であ
る。
【符号の説明】
906,1005,1106,1207,1304,1404,1604…ステップ(剰余
乗算の選択)、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…ステップ(結果の出力)
フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06K 19/07 G06K 19/00 N H04L 9/10 H04L 9/00 621Z (72)発明者 渡邊 高志 東京都国分寺市東恋ヶ窪一丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 大木 優 東京都国分寺市東恋ヶ窪一丁目280番地 株式会社日立製作所中央研究所内 Fターム(参考) 5B017 AA03 BA07 CA14 5B035 AA13 BB09 BC00 CA11 5J104 AA21 AA25 AA47 JA25 JA28 NA16 NA17 NA35 NA42

Claims (13)

    【特許請求の範囲】
  1. 【請求項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. 【請求項2】前記(3)の適宜選択するとは、乱数を用
    いていずれかを選択することを特徴とする請求項1記載
    の耐タンパーモジュラ演算処理方法。
  3. 【請求項3】前記(s, t, f, g)は、(0, 1, 0,
    1)であることを特徴とする請求項1記載の耐タンパー
    モジュラ演算処理方法。
  4. 【請求項4】前記(s, t, f, g)は、(1, 0, 1,
    0)であることを特徴とする請求項1記載の耐タンパー
    モジュラ演算処理方法。
  5. 【請求項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. 【請求項6】前記(s, t, f, g)は、(1, 1, 1,
    1)であることを特徴とする請求項5記載の耐タンパー
    モジュラ演算処理方法。
  7. 【請求項7】前記(2)のステップのf+gは奇数であ
    って、前記(4)の代わりに、(4)前記(1)を選択
    したときは計算結果Sそのままとし、前記(2)を選択
    したときにはSの代わりにp−Sを計算結果とするステ
    ップ、および(5)前記Sとp−Sを、暗号処理の剰余
    乗算A*B mod pの計算結果として用いるステップ
    を有することを特徴とする請求項5記載の耐タンパーモ
    ジュラ演算処理方法。
  8. 【請求項8】前記(s, t, f, g)は、(0, 1, 0,
    1)であることを特徴とする請求項7記載の耐タンパー
    モジュラ演算処理方法。
  9. 【請求項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. 【請求項10】前記(s, t, f, g)は、(1, 1,
    1, 1)であることを特徴とする請求項9記載の耐タン
    パーモジュラ演算処理方法。
  11. 【請求項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. 【請求項12】前記(s, t, f, g)は、(0, 1,
    0, 1)であることを特徴とする請求項11記載の耐タ
    ンパーモジュラ演算処理方法。
  13. 【請求項13】前記A(x)*B(x)の係数の演算は
    素数2を法として行うものであり、前記(2)の(f,
    g)は(0,0)であることを特徴とする請求項9記載
    の耐タンパーモジュラ演算処理方法。
JP2001060223A 2001-03-05 2001-03-05 耐タンパーモジュラ演算処理方法 Expired - Fee Related JP3950638B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2001060223A JP3950638B2 (ja) 2001-03-05 2001-03-05 耐タンパーモジュラ演算処理方法
DE60125710T DE60125710T2 (de) 2001-03-05 2001-08-22 Manipulationssichere Methode zur modularen Multiplikation
EP01119672A EP1239364B1 (en) 2001-03-05 2001-08-22 Tamper-resistant modular multiplication method
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社ルネサステクノロジ べき乗剰余演算器
US7769167B2 (en) 2003-07-25 2010-08-03 Microsoft Corporation Weil and Tate pairing techniques using parabolas
US7298839B2 (en) 2003-07-25 2007-11-20 Microsoft Corporation Squared Weil and Tate pairing techniques for use with elliptic curves
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
ATE533103T1 (de) * 2005-01-18 2011-11-15 Certicom Corp Beschleunigte verifikation digitaler signaturen und öffentlicher schlüssel
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
US8334705B1 (en) 2011-10-27 2012-12-18 Certicom Corp. Analog circuitry to conceal activity of logic circuitry
US8635467B2 (en) 2011-10-27 2014-01-21 Certicom Corp. Integrated circuit with logic circuitry and multiple concealing circuits
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)

* Cited by examiner, † Cited by third party
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 株式会社ルネサステクノロジ マイクロコンピュータ
EP0890147B1 (en) * 1996-10-31 2004-02-25 Atmel Research 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

Cited By (12)

* Cited by examiner, † Cited by third party
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
DE60125710T2 (de) 2007-11-08
US20020152252A1 (en) 2002-10-17
EP1239364B1 (en) 2007-01-03
JP3950638B2 (ja) 2007-08-01
DE60125710D1 (de) 2007-02-15
US6968354B2 (en) 2005-11-22
EP1239364A1 (en) 2002-09-11

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
JPWO2009122461A1 (ja) 電力解析攻撃への対策機能を備えた暗号化方法
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) データ処理装置におけるサイドチャネル攻撃防止
JP3779479B2 (ja) Icカード
US20240163085A1 (en) Method for Combined Key Value-Dependent Exchange and Randomization of Two Input Values
AU2005203004B2 (en) Information processing device, information processing method and smartcard
Davies-Batista Efficient and secure elliptic curves
JP2014145958A (ja) 半導体装置
Kocabas et al. Hardware implementations of ECC over a binary Edwards curve
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