JP2003233307A - 秘密鍵を用いた耐タンパ暗号処理 - Google Patents

秘密鍵を用いた耐タンパ暗号処理

Info

Publication number
JP2003233307A
JP2003233307A JP2002201785A JP2002201785A JP2003233307A JP 2003233307 A JP2003233307 A JP 2003233307A JP 2002201785 A JP2002201785 A JP 2002201785A JP 2002201785 A JP2002201785 A JP 2002201785A JP 2003233307 A JP2003233307 A JP 2003233307A
Authority
JP
Japan
Prior art keywords
window
sequence
bit
bits
value
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
JP2002201785A
Other languages
English (en)
Other versions
JP4108391B2 (ja
Inventor
Jun Yajima
純 矢嶋
Koichi Ito
孝一 伊藤
Masahiko Takenaka
正彦 武仲
Naoya Torii
直哉 鳥居
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002201785A priority Critical patent/JP4108391B2/ja
Publication of JP2003233307A publication Critical patent/JP2003233307A/ja
Application granted granted Critical
Publication of JP4108391B2 publication Critical patent/JP4108391B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 効率的な耐タンパ性の指数剰余演算および点
のスカラー倍算を実現する。 【解決手段】 暗号装置(60)は、秘密鍵を用いて公
開鍵暗号処理を行う。暗号装置は、乱数(74)に従っ
て、値dを表すuビット・シーケンスからm個のウィン
ドウ・シーケンス(bm−1,...b)を導出する
手段(75)と、その導出されたm個のウィンドウ・シ
ーケンスとその公開鍵暗号のための別の値(aおよび
n、またはA)とに従って演算を行って、処理済みデー
タを生成する演算手段(84)と、を具えている。その
m個のウィンドウ・シーケンスの中の2つうちの一方の
ウィンドウ・シーケンスにおける或るビット位置と他方
のウィンドウ・シーケンスにおける或るビット位置と
が、そのuビット・シーケンスにおける同じビット位置
に関係付けられる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、暗号処理の分野に
関し、特に、RSAおよび楕円曲線暗号のような公開鍵
暗号のためのプロセッサにおけるSPAおよびDPAの
ような電力解析攻撃を防止する耐タンパ(tamper-proo
f)暗号化/復号に関する。
【0002】
【発明の背景】暗号方式には一般的に公開鍵暗号方式と
共通鍵暗号方式が含まれる。公開鍵暗号方式は、暗号化
と復号に異なる鍵(キー)を用いる。典型的には、公開
鍵を用いて平文(plaintext)が暗号化され、秘密鍵を
用いて暗号文(ciphertext)が復号され、それによって
暗号文が安全に送信できる。または、秘密鍵を用いて平
文が暗号化され、公開鍵を用いて暗号文が復号され、そ
れによって平文を暗号化したユーザが識別される。図1
は、スマートカードのような暗号デバイスにおける秘密
鍵を用いた暗号化/復号の構成の例を示している。図1
において、暗号デバイスは、その内部の暗号化/復号ユ
ニットにおいて周知の形態で秘密鍵を用いて入力平文/
暗号文メッセージを処理して出力暗号文/平文メッセー
ジを供給する。
【0003】公開鍵暗号の1つのタイプであるRSA暗
号のためのプロセッサにおいては、指数剰余演算(modu
lar exponentiation)が行われる。指数剰余演算は、指
数d、平文/暗号文aおよび公開鍵nに対して、v=a
(mod n)を満たす暗号文/平文vを生成する。
例えば、RSA暗号による署名生成において、暗号文v
=ad (mod n)が秘密鍵dを用いて指数剰余演算
で生成される。
【0004】バイナリ・メソッド(2進方法)を用いた
指数剰余演算は、2進値dについて、MSB(最上位ビ
ット)からLSB(最下位ビット)まで順に2乗とaの
乗算を実行することによって、vを求める。例えば、d
=21=2+2+2=(10101)について
vを求めるとき、最初のMSB“1”に対して初期値v
=1にaの乗算を実行してv=aを生成し、次のMSB
“0”に対してそのvに2乗(2で累乗)を実行してv
=aを生成し、次のビット“1”に対してそのvに2
乗とaの乗算を実行してv=(a×aを生成し、
次のMSB“0”に対してそのvに2乗を実行してv=
((a×a)を生成し、LSB“1”に対して
そのvに2乗とaの乗算を実行して、v=(((a
×a) ×a=a
(2∧4)+(2∧2)+(2∧0)を生成する。ここ
で、2k=2である。
【0005】公開鍵暗号の別のタイプである楕円曲線暗
号のためのプロセッサにおいては、スカラー倍算が行わ
れる。点のスカラー倍算は、スカラー値d、および楕円
曲線上の点Aに対して、V=dAを満たす点Rを求め
る。例えば、楕円曲線暗号におけるDiffe-Hellman(デ
ィッフィー・ヘルマン)鍵配送において、V=dAで表
される点Rが秘密鍵dを用いてスカラー倍算で生成され
る。
【0006】RSA暗号における乗算剰余c=a×b
(mod n)、2乗剰余c=aおよび指数剰余c=
(mod n)は、楕円曲線暗号における点の加算
C=A+B、点の2倍算C=2Aおよび点のスカラー倍
算C=xAにそれぞれ対応する。
【0007】バイナリ・メソッドを用いた点のスカラー
倍算は、2進値dについて、MSBからLSBまで順に
点の2倍算と点の加算を実行することによって、Vを求
める。例えばd=21=2+2+2=(1010
1)についてVを求めるとき、最初のMSB“1”に
対して初期値V=O(無限遠点)にAの加算を実行して
V=Aを生成し、次のビット“0”に対してそのVに2
倍算を実行してV=A×2を生成し、次のビット“1”
に対してそのVに2倍算とAの加算を実行してV=(A
×2)×2+Aを生成し、次のビット“0”に対してそ
のVに2倍算を実行してV=((A×2)×2+A)×
2を生成し、LSB“1”に対してそのVに2倍算とA
の加算を実行して、V=(((A×2)×2+A)×
2)×2+A=(2+2+2)Aを生成する。
【0008】効率的な指数剰余演算のためのウィンドウ
法(window method)が知られている。ウィンドウ法
は、Alfred J. Menezes他の“HANDBOOK OF APPLIED CRY
PTOGRAPHY”(CRC press), pp. 615, Algorithm 14.82
に記載されている。
【0009】図2は、ウィンドウ法を用いてv=a
(mod n)を求めるための指数剰余演算のアルゴ
リズムを示している。ここで、指数dは2進表現でd=
(du− ,du−2,...dと表記される。
そのアルゴリズムはC言語で記述されている。
【0010】ウィンドウ法は、RSA暗号以外に、楕円
曲線暗号における点のスカラー倍算にも用いられる。図
3は、ウィンドウ法を用いた点のスカラー倍算V=dA
のアルゴリズムを示している。
【0011】図2のアルゴリズムを説明する。図4は、
図2のアルゴリズムによる演算の手順を説明するのに役
立つ。まず、0<x<2である全ての整数xに対し
て、w[x]=a(mod n)を満たす値wのテー
ブルwを作成する。テーブルwの作成後、uビットの値
d=(du−1,du−2,...d(ここで、
u−1,...dは1ビット値)をkビット・シー
ケンスまたはストリングに分割し、m個のkビット・シ
ーケンスb=(dik+k−1
ik+k− ,...dik(ここで、d
ik+k−1,...dikは1ビット値、i=0,
1,2,...)を生成する。ここで、m=ceili
ng(u/k)であり、関数ceiling(x)は変
数x以上の最小の整数を表す。この各b に対する値w
[b](=abi)をテーブルwでルックアップする
ことによる乗算v=v×w[b]と、v=v
2∧k(mod n)で表される2乗すなわち累乗とを、
上位シーケンスbm−1から下位シーケンスbへ順に
実行することによって、v=ad(mod n)を求める。
【0012】図3のアルゴリズムを説明する。まず、0
<x<2の全ての整数xに対して、W[x]=xAを
満たす値WのテーブルWを作成する。テーブルWの作成
後、uビットの値d=(du−1,du−2,...d
を分割してm個のkビット・シーケンスb
(dik+k−1,...dik(i=0,1,
2,...)を生成する。ここで、m=ceiling
(u/k)。そのbに対する値W[b](=b
A)をテーブルWでルックアップすることによる加算
V=V+W[b]と、V=2Vで表される2倍算
とを、上位シーケンスb m−1から下位シーケンスb
へ順に実行することによって、V=dAを求める。
【0013】以下、ウィンドウ法においてテーブル・ル
ックアップのインデックスとなるビット・シーケンスb
をウィンドウまたはウィンドウ・シーケンスといい、
指数剰余演算と点のスカラー倍算の双方を公開鍵演算と
いう。
【0014】暗号解読(分析)またはタンパ(tamper)
は、暗号文のような入手可能な情報から秘密鍵を含めた
秘密情報を推定する。暗号解読の1つである電力解析攻
撃が、1998年にPaul Kocher(ポール コーチャ)
によって考案された。この電力解析攻撃は、スマートカ
ードのような暗号デバイスに含まれる暗号プロセッサに
相異なる入力データを与え、例えば図1に示されている
ようにオシロスコープ等を用いてその処理中における時
間に対する消費電力の変化を測定し、統計的に充分な数
の消費電力変化の曲線を収集しそれを解析し、それによ
って暗号プロセッサ内部の鍵情報を推定する。これは、
公開鍵暗号と秘密鍵暗号の双方に適用できる。
【0015】電力解析攻撃には、単純電力解析(以下、
SPAという)(Simple Power Analysis)および電力
差分攻撃(以下、DPAという)(Differential Power
Analysis)が含まれる。SPAは暗号プロセッサにお
ける1つの消費電力変化曲線の特徴から秘密鍵の推定を
行う。DPAは相異なる多数の消費電力変化曲線の差分
(以下、電力差分曲線という)を用いて解析することに
よって秘密鍵の推定を行う。一般的にはDPAの方が強
力である。
【0016】例えばDES(Data Encryption Standar
d)およびAES(Advanced Encryption Standard)等
の共通鍵暗号に対するSPAおよびDPAが、Paul Ko
cher,Joshua Jaffe, and Benjamin Jun,“Differentia
l Power Analysis”in proceedings of Advances in Cr
yptology-CRYPTO’99,Lecture Notes in ComputerSc
ience, vol. 1666, Springer-Verlag, 1999, p
p.388−397に記載されている。
【0017】例えばRSA暗号および楕円曲線暗号等の
公開鍵暗号に対するSPAおよびDPAが、例えば、Th
omas S. Messerges, Ezzy A. Dabbish and Robert H. S
loan“Power Analysis Attacks of Modular Exponentia
tion in Smartcards”Cryptographic Hardware and Emb
edded Systems (CHES’99),Lecture Notes in Com
puter Science Vol. 1717,Springer-Verlag,pp.
144−157(以下、Messerges99という)、およ
びJean-Sebastein Coron“Resistance againstDifferen
tial Power Analysis for Elliptic Curve Crytosystem
s”Cryptographic Hardware and Embedded Systems(CH
ES’99),Lecture Notes in Computer Science Vo
l.1717,Springer-Verlag,pp.292−302,
1999(以下、Coron99という)に記載されてい
る。
【0018】図2および図3に示すウィンドウ法を用い
た暗号プロセッサにおいて、前述のMesserges99およ
びCoron99に記載されているDPAによって、秘密鍵
dが推定される。
【0019】DPAを用いて、ウィンドウ法を用いた暗
号プロセッサ内の秘密鍵dを推定する方法を、図5A〜
5Cを参照して説明する。図5Aは時間に対する消費電
力の曲線を示している。図5Bは、スパイクを有する、
時間に対する電力差分曲線を示している。図5Cは、平
坦な、時間に対する電力差分曲線を示している。
【0020】例えば、k=2および6ビット鍵d=(d
の場合、ウンドウb
(d, b=(dおよび b
(d が生成される。図2の計算による指数剰
余演算は、次のステップS1〜S5を実行してv=a
(modn)を生成する。
【0021】
【数1】
【0022】暗号プロセッサ部で上記のステップS1〜
S5が行われていることを攻撃者が知っているとき、次
のステップS11〜S14に従ったDPAによって、b
,bおよびbの値を、従ってdの値を推定でき
る。
【0023】S11) 暗号プロセッサにN個のa
(i=1,2,...N)を供給し、演算a (m
od n)を実行させる。その実行中、全てのiについ
て、プロセッサの消費電力量P(a,time)を測
定し、図5Aに例示された時間に対する消費電力の曲線
を得る。
【0024】S12) 2ビット値b=b’である
と仮定する。b=b’が正しいと判定されてb
推定に成功するまで、次のステップS121およびS1
22を繰り返す。
【0025】S121) ステップS1の中間データv
に対して、仮定したb’に従ってP(a,tim
e)(i=1,2,...N)を次の2つの集合G
よびG に分ける。
【数2】
【0026】S122) GおよびGから、Δ=
(Gの平均電力)−(Gの平均電力) で表される
電力差分曲線Δを作成する。その曲線が図5Bのような
スパイクを有するとき、仮定b=b’が正しいと判
定する。その曲線が図5Cのような比較的平坦なときb
≠b’と判定する。
【0027】S13) 次の2ビット値b=b’で
あると仮定する。b=b’が正しいと判定されてb
の推定に成功するまで、次のステップS131および
S132を繰り返す。
【0028】S131) ステップS3の中間データv
に対して、確定したbと仮定したb’とに従ってP
(a,time)(i=1,2,...N)を次の2
つの集合GおよびGに分ける。
【数3】
【0029】S132) GおよびGから、Δ=
(Gの平均電力)−(Gの平均電力) で表される
電力差分曲線Δを作成する。その曲線が図5Bのような
スパイクを有するとき、仮定b=b’が正しいと判
定する。その曲線が図5Cのような比較的平坦なときb
≠b’と判定する。
【0030】S14) 次の2ビット値b=b’で
あると仮定する。b=b’が正しいと判定されてb
の推定に成功するまで、次のステップS141および
S142を繰り返す。
【0031】S141) ステップS5の中間データv
に対して、確定したbおよびbと仮定したb’と
からP(a,time)(i=1,2,...N)を
次の2つの集合GおよびGに分ける。
【数4】
【0032】S132) GおよびGから、Δ=
(Gの平均電力)−(Gの平均電力) で表される
電力差分曲線Δを作成する。その曲線が図5Bのような
スパイクを有するとき、仮定b=b’が正しいと判
定する。その曲線が図5Cのような比較的平坦なときb
≠b’と判定する。
【0033】同様の方法が、図3のウィンドウ法による
暗号プロセッサに対しても適用できる。図2および3に
示されているようなウィンドウ法による暗号処理は、一
般的にSPAによる秘密鍵の推定に対して安全であるこ
とが知られている。
【0034】秘密鍵に対するSPAおよびDPAを防止
するために、乱数を用いて指数剰余演算および点のスカ
ラー倍算を行うことが知られている。それによって、攻
撃者がプロセッサ内の手順を知っていても、プロセッサ
内で発生した乱数により中間データが隠蔽されるので、
秘密鍵に対するDPAを防止することができる。乱数を
用いることによって、ウィンドウ法以外の方法による暗
号処理においても、秘密鍵に対するSPAを防止するこ
とができることが知られている。
【0035】乱数を用いた耐DPA公開鍵演算には、次
の(1)〜(5)の方法が知られている。ここで、φ
は、RSA暗号ではn=p×q(pおよびq=素数)に
対してφ=lcm(p−1,q−1)によって与えら
れ、楕円曲線暗号ではベースポイントの位数によって与
えられる。但し、このφの値は、暗号プロセッサのイン
タフェースによって与えられるとは限らず、プロセッサ
内で計算できるとも限らないので、φを必要とする方法
は制約を受ける。例えば、RSA暗号プロセッサに対し
nのみが与えられ、pおよびqが与えられないときは、
nからφ=lcm(p−1,q−1)を得るためには、
1024ビット程度のnの素因数分解という、事実上実
行不可能な計算を行う必要があるので、φの値を用いた
方法を利用することはできない。
【0036】(1) RSAと楕円曲線暗号の双方につ
いて、dに対して公開鍵演算を行う代わりに、乱数rお
よびφから計算したd+rφに対して公開鍵演算を行う
方法。
【0037】(2) 楕円曲線暗号について、dAを計
算する前処理として、乱数rを用いて2次元座標の点A
を3次元座標の点A’に変換する方法。例えば、Jacobi
an座標を用いて3次元座標への変換を行うとき、A=
(x,y)に対して、乱数rを用いてA’=(x×
,y×r,z×r)に従って変換する。
【0038】(3) RSAと楕円曲線暗号の双方につ
いて、乱数を用いてd=d+d+...+dを満
たすd(1≦i≦M)を生成した後、それぞれのd
に対して、
【数5】 またはV=dAを計算し、v=v×v×...
×v(mod n)またはV=V+V+...+
Mを生成する方法。
【0039】(4) RSAと楕円曲線暗号の双方につ
いて、d=d×d (mod φ)を満たす乱数d
およびdを生成した後、
【数6】 またはV=d(dA)を生成する方法。
【0040】(5) RSA暗号について、aおよび乱
数rからa’=a×r(mod n),v’=a’
(mod n)を計算した後、v=(v’)r
−d(mod n)=a(mod n)を生成する方
法。
【0041】表1は方法(1)〜(5)の比較を示して
いる。
【表1】
【0042】耐DPA演算には次のような文献がある。 方法(1): − Messerges99 − Coron99 − 国際公開番号WO00/59157(Jean-Sebastei
n Coron)
【0043】方法(2): − Coron99 − Marc Joye and Christophe Tymen “Protections a
gainst differential analysis for elliptic curve cr
yptography -An algebraic approach-”, Cryptograph
ic Hardware and Embedded Systems(CHES’2001)
(以下、Joye2001という) − PCT国際公開第WO00/59156号(Jean-S
ebastein Coron) − 欧州特許公開第EP1014617号A2(Kuruma
tani, Hiroyuki) − PCT国際公開第WO0124439号(Miyazaki
Kunihiko)
【0044】方法(3): − PCT国際公開第WO99/35872号(Paul K
ocher) − PCT国際公開第WO01/31436号(Louis
Goubin) − 欧州特許公開第EP1098471号A2(Singer
Ari)
【0045】方法(4): − PCT国際公開第WO99/35872号(Paul K
ocher) − 米国特許第2001/0002486号A1(Paul
Kocher)
【0046】方法(5): − Messerges99
【0047】表1に示されているように、方法(3)
は、RSAと楕円曲線暗号の双方に適用可能であり、φ
が与えられないときにも適用可能なので、最も汎用性が
高いと考えられる。方法(3)は、M=2とした方法が
最も高速の処理を行う。ここで、M=2における方法
(3)は、最も優れた通常の方法であり、“分割指数
法”と呼ぶ。図6は、分割指数法を用いたv=a(m
od n)を求めるためのアルゴリズムを示している。
【0048】上述のように、図2および図3のウィンド
ウ法は、SPAには強いがDPAには弱いという欠点が
ある。分割指数法は、SPAおよびDPAに強いが、v
=a (mod n)を求めるために、図6に示されて
いるように、
【数7】 という2回の指数剰余演算を実行する必要があるので、
処理速度が遅いという欠点がある。
【0049】本発明の1つの目的は、秘密鍵の推定を困
難にし、暗号処理の安全性を高めることである。
【0050】本発明のさらに別の目的は、効率的な耐タ
ンパ性の指数剰余演算および点のスカラー倍算を実現す
ることである。
【0051】
【発明の概要】本発明の特徴によれば、秘密鍵を用いて
公開鍵暗号処理を行う暗号装置は、乱数に従って、その
公開鍵暗号のための或る値dを表す複数uビット・シー
ケンスから複数m個のウィンドウ・シーケンスを導出す
る手段を具えている。そのm個のウィンドウ・シーケン
スのビット総数はそのuビット・シーケンスのビット数
uより多い。各ウィンドウ・シーケンスのビット数はu
以下である。そのm個のウィンドウ・シーケンスの中の
2つうちの一方のウィンドウ・シーケンスにおける或る
ビット位置と他方のウィンドウ・シーケンスにおける或
るビット位置とが、そのuビット・シーケンスにおける
同じビット位置に関係付けられる。暗号装置は、さら
に、その導出されたm個のウィンドウ・シーケンスとそ
の公開鍵暗号のための別の或る値とに従って演算を行っ
て、処理済みデータを生成する演算手段を具えている。
【0052】その一方のウィンドウ・シーケンスにおけ
る整数h個のLSB位置とその他方のウィンドウ・シー
ケンスにおけるh個のMSB位置とが、そのuビット・
シーケンスにおけるh個のビット位置に関係付けられ
る。
【0053】本発明の別の特徴によれば、情報処理装置
において使用するための、秘密鍵を用いて公開鍵暗号処
理を行うプログラム(これは記憶媒体に格納されていて
もよい)は、乱数に従って、その公開鍵暗号のための或
る値dを表す複数uビット・シーケンスから複数m個の
ウィンドウ・シーケンスを導出するステップと;その導
出されたm個のウィンドウ・シーケンスとその公開鍵暗
号のための別の或る値とに従って演算を行って、処理済
みデータを生成するステップと、を実行させるよう動作
可能である。
【0054】本発明のさらに別の特徴によれば、情報処
理装置において秘密鍵を用いて公開鍵暗号処理を行う方
法は、乱数に従って、その公開鍵暗号のための或る値d
を表す複数uビット・シーケンスから複数m個のウィン
ドウ・シーケンスを導出するステップと、その導出され
たm個のウィンドウ・シーケンスとその公開鍵暗号のた
めの別の或る値とに従って演算を行って、処理済みデー
タを生成するステップとを含んでいる。
【0055】本発明のさらに別の特徴によれば、秘密鍵
を用いて公開鍵暗号処理を行う暗号装置は、その公開鍵
暗号のための或る値dを表す複数uビット・シーケンス
から複数m個のウィンドウ・シーケンスを導出する手段
を具えている。そのm個のウィンドウ・シーケンスのビ
ット総数はそのuビット・シーケンスのビット数uより
多い。各ウィンドウ・シーケンスのビット数はu以下で
ある。そのm個のウィンドウ・シーケンスの中の2つう
ちの一方のウィンドウ・シーケンスにおける或るビット
位置と他方のウィンドウ・シーケンスにおける或るビッ
ト位置とが、そのuビット・シーケンスにおける同じビ
ット位置に関係付けられる。そのm個のウィンドウ・シ
ーケンスの中の1つのウィンドウ・シーケンスにおける
所定の位置のビットは、他のウィンドウ・シーケンスの
対応する所定の位置のビットと同じ値を有する。暗号装
置は、さらに、その導出されたm個のウィンドウ・シー
ケンスとその公開鍵暗号のための別の或る値とに従って
演算を行って、処理済みデータを生成する演算手段を具
えている。
【0056】その暗号装置は、さらに、そのウィンドウ
・シーケンスのビット数からその同じ値のビット数を減
算したビット数を有する取り得るシーケンスをインデッ
クスとして有し、そのインデックスに対応付けられるそ
のウィンドウ・シーケンスの取り得るシーケンスに従っ
て計算されたエントリ値を有するルックアップ・テーブ
ルを生成する手段を具える。
【0057】その演算手段は、その導出されたウィンド
ウ・シーケンスのその同じ値の所定のビット以外のビッ
トのシーケンスをインデックスとして用いて、テーブル
をルックアップすることによって、その演算を行う。
【0058】その導出する手段は、そのuビット・シー
ケンスから、そのuビット・シーケンスにおける対応す
る所定の位置に配置されたそのウィンドウ・シーケンス
のその同じ値を減算して別のシーケンスを生成し、その
別のシーケンスからそのウィンドウ・シーケンスを導出
する。
【0059】本発明のさらに別の特徴によれば、情報処
理装置において使用するための、秘密鍵を用いて公開鍵
暗号処理を行うプログラム(これは記憶媒体に格納され
ていてもよい)は、その公開鍵暗号のための或る値dを
表す複数uビット・シーケンスから複数m個のウィンド
ウ・シーケンスを導出するステップと、その導出された
m個のウィンドウ・シーケンスとその公開鍵暗号のため
の別の或る値とに従って演算を行って、処理済みデータ
を生成するステップと、を実行させるよう動作可能であ
る。そのm個のウィンドウ・シーケンスの中の1つのウ
ィンドウ・シーケンスにおける所定の位置のビットは、
他のウィンドウ・シーケンスの対応する所定の位置のビ
ットと同じ値を有する。
【0060】本発明のさらに別の特徴によれば、情報処
理装置において秘密鍵を用いて公開鍵暗号処理を行う方
法は、その公開鍵暗号のための或る値dを表す複数uビ
ット・シーケンスから複数m個のウィンドウ・シーケン
スを導出するステップと、その導出されたm個のウィン
ドウ・シーケンスとその公開鍵暗号のための別の或る値
とに従って演算を行って、処理済みデータを生成するス
テップとを含んでいる。そのm個のウィンドウ・シーケ
ンスの中の1つのウィンドウ・シーケンスにおける所定
の位置のビットは、他のウィンドウ・シーケンスの対応
する所定の位置のビットと同じ値を有する。
【0061】本発明によれば、秘密鍵の推定を困難に
し、暗号処理の安全性を高めることができ、効率的な耐
タンパ性の指数剰余演算および点のスカラー倍算を実現
できる。
【0062】図面において、同じ参照番号は同じ要素を
示す。
【0063】
【0064】
【発明の好ましい実施形態】図7は、本発明による暗号
処理装置60の概略的構成を示している。暗号処理装置
60は、値a、dおよびnまたは値Aおよびdを入力し
て供給する入力部72と、乱数発生器74と、乱数発生
器74からの乱数に従って値dからオーバラップ・ウィ
ンドウbm−1,bm−2,...bおよび重なり長
(オーバラップ長)hm−2,hm−3,...h
生成するウィンドウおよび重なり長生成部75と、生成
部75からのウィンドウおよび重なり長を格納するメモ
リ78と、入力部72からの値aおよびnまたは値Aか
らkビットのウィンドウbに対するテーブルwまたは
Wを生成するテーブル生成部80と、テーブル・メモリ
82と、メモリ78からのウィンドウおよび重なり長に
従ってテーブル・メモリ82中のテーブルwまたはWを
ルックアップ(探索)して等式v=a(modn)ま
たはV=dAを演算するウィンドウ法演算部84と、値
vまたはVを出力する出力部86とを含んでいる。
【0065】暗号化装置60は、さらに、プロセッサ6
2と、ROMのようなプログラム・メモリ64とを含ん
でいる。プロセッサ62は、メモリ64に格納されてい
るプログラムに従ってこれらの要素72〜86を制御す
る。代替構成として、プロセッサ62は、要素72〜8
6に対応する機能を実現するメモリ64中のプログラム
を実行することによって要素72〜86を実現してもよ
い。この場合、図7はフロー図として見ることができ
る。
【0066】図8は、本発明のオーバラップ・ウィンド
ウ法によるオーバラップ・ウィンドウbの生成の仕方
を示している。生成部75は、乱数発生器74からの乱
数に従って値d=(du−1,du−2,...d
からm個のkビット・ウィンドウbm−1
m−2,...bを導出して、メモリ78に格納す
る。図8では、図4と違って、隣接する2つのkビット
・ウィンドウbi+1およびb について、bi+1
右のhビット位置とbの左のhビット位置がdにおけ
る対応するビット位置において重複することを許されて
いる。或る値dに対してウィンドウbm−1
m−2,...bの複数の可能な組(セット)が存
在するので、その中の1つの組を乱数に従って選択する
ことによって、DPAによる秘密鍵のタンパに耐性を有
する公開鍵演算を実現できる。
【0067】図8には、オーバラップ・ウィンドウ法の
指数剰余演算への適用の例が示されているが、オーバラ
ップ・ウィンドウは点のスカラー倍算にも同様に適用で
きる。演算部84は、メモリ78からのウィンドウb
に従って、メモリ82中のテーブルwまたはWをルック
アップして、vにwを乗算しそれを2k−h乗すること
を繰り返してv=a(mod n)を求め、または、
VにWを加算し2k− 倍算を行うことを繰り返してV
=dAを求める。
【0068】オーバラップ・ウィンドウbi+1および
におけるそれぞれのh個の重なりビットのストリン
グの値は乱数に従って決定される。ウィンドウbi+1
およびbは、乱数rに従って、ウィンドウbi+1
おけるh個の重なりビットのストリングの値とbにお
けるh個の重なりビットのストリングの値の和が、入力
値dにおける対応するhビットのストリングの値になる
ように、生成される。代替構成として、ウィンドウb
i+1およびbは、乱数rに従ってbにおけるh個
の重なりビットのストリングの値を発生し、ウィンドウ
i+1におけるh個の重なりビットのストリングの値
が、入力値dにおける対応するhビットのストリングの
値からbにおけるh個の重なりビットのストリングの
値を減じた値になるように(bi+1における上位ビッ
ト位置からのボローが生じてもよい)、生成されてもよ
い。
【0069】図9は、本発明による、乱数に従ったオー
バラップ・ウィンドウbにおけるh個の重なりビット
のストリングの値の決定の簡単な例を示している。図9
において、ウィンドウbi+1およびbのそれぞれの
h個の重なりビットαおよびβ(j=h−
1,...0)を、即ちbi+1中のビット・ストリン
グ(α h−1...αα)およびb中のビット・
ストリング(βh−1...β β)を、入力値dに
おける対応するビットd(q=x+k−1,...x
+k−h)の値に応じて次のように決定する。d=1
の場合、乱数r=1または0を生成して、ビットd
対応するウィンドウbi+r中のビットαまたはβ
に1をセットし、ウィンドウbi+(1−r)中の対応
するビットβまたはαに0をセットする。d=0
の場合、ウィンドウbi+rとbi+(1 −r)の双方
の対応するビットαおよびβに0をセットする。
【0070】図10は、本発明による、隣接するウィン
ドウbi+1とbに固定された重なりビット長hを有
するオーバラップ・ウィンドウ法を用いた指数剰余演算
のフロー図を示している。図11は、本発明による、隣
接するウィンドウbi+1とbに可変な重なりビット
長hを有するオーバラップ・ウィンドウ法を用いた指
数剰余演算のフロー図を示している。図10および11
では、生成されるウィンドウbは0≦b<2の範
囲の値を有する。
【0071】図10のフロー図を説明する。最初に、入
力部72は値a、dおよびnを入力して生成部75に供
給する。ステップ102において、生成部75は、乱数
発生器74からの乱数に従って、値dからウィンドウb
m−1,bm−2,...b を導出してメモリ78に
格納する。ステップ104において、テーブル生成部8
0は、テーブルw(w[x]=a)(0<x<2
を生成してメモリ82に格納する。ステップ106にお
いて、演算部84はv=1およびi=mをセットする。
【0072】ステップ108〜114において、演算部
84は、i=m−1,m−2,...0について順次、
に従って、メモリ82のテーブルwのルックアップ
によるw[b]の乗算と累乗とを、vに対して実行す
る。ステップ108において、演算部84はi=i−1
をセットする。ステップ110において、演算部84
は、b>0の場合にvにw[b]を乗算する。ステ
ップ112において、演算部84はiの値と値0とを比
較してi=0かどうかを判定する。i=0でないと判断
された場合には、ステップ114において演算部84
は、(k−h)回の2乗によってvの2(k−h)乗を
生成する。ステップ112においてi=0であると判断
された場合には、出力部86はv=a(mod n)
を出力する。
【0073】図11のフロー図を説明する。ステップ2
02において、生成部75は、乱数発生器74からの乱
数に従って、dからウィンドウbm−1
m−2,...bを導出しビット長hm−2,h
m−3,...hを生成してメモリ78に格納する。
ステップ204において、テーブル生成部80は、テー
ブルwを生成してメモリ82に格納する。ステップ20
6〜212は、図10のステップ106〜112に対応
する。ステップ208〜214において、演算部84
は、i=m−1,...0について順次、bに従っ
て、メモリ82のテーブルwのルックアップによるw
[b]での乗算(ステップ210)と(k−
i−1)回の2乗による累乗(ステップ214)を、
vに対して実行して、v=a(modn)を生成す
る。
【0074】図12は、本発明による、隣接するウィン
ドウbi+1とbに固定された重なりビット長hを有
するオーバラップ・ウィンドウ法を用いたスカラー倍算
のフロー図を示している。図13は、本発明による、隣
接するウィンドウbi+1とbに可変な重なりビット
長hを有するオーバラップ・ウィンドウ法を用いたス
カラー倍算のフロー図を示している。図12および13
では、ウィンドウbは−2<b<2の範囲の値
を有する。
【0075】図12のフロー図を説明する。最初に、入
力部72は値Aおよびdを入力して生成部75に供給す
る。ステップ302において、生成部75は、乱数発生
器74からの乱数に従って、dからウィンドウ
m−1,bm−2,...bを生成してメモリ78
に格納する。ステップ304において、テーブル生成部
80は、テーブルW(W[x]=xA)(0<x<
)を生成してメモリ82に格納する。ステップ30
6において、演算部84はV=O(無限遠点)およびi
=mをセットする。
【0076】ステップ308〜314において、演算部
84は、i=m−1,m−2,...0について順次、
に従って、メモリ82のテーブルWのルックアップ
によるW[b]の加算およびW[−b]の減算と、
乗算とを、Vに対して実行する。ステップ308におい
て、演算部84はi=i−1をセットする。ステップ3
10において、演算部84は、b>0の場合にVにW
[b]を加算し、b <0の場合にVからW[−
]を減算する。ステップ312において、演算部8
4はiの値と値0とを比較してi=0かどうかを判定す
る。i=0でないと判断された場合には、ステップ31
4において演算部84は、(k−h)回の2倍算によっ
てVの2(k−h)倍を生成する。ステップ312にお
いてi=0であると判断された場合には、出力部86は
V=dAを出力する。
【0077】図13のフロー図を説明する。ステップ4
02において、生成部75は、乱数発生器74からの乱
数に従って、dからウィンドウbm−1
m−2,...bを導出しビット長hm−2,h
m−3,...hを生成してメモリ78に格納する。
ステップ404において、テーブル生成部80は、テー
ブルWを生成してメモリ82に格納する。ステップ40
6〜412は、図12のステップ306〜312に対応
する。ステップ408〜414において、演算部84
は、i=m−1,...0について順次、bに従っ
て、メモリ82のテーブルWのルックアップによるW
[b]の加算またはW[−b]の減算(ステップ4
10)と(k−hi−1)回の2倍算による乗算(ステ
ップ414)を、Vに対して実行して、V=dAを生成
する。
【0078】後で実施形態において説明するように、図
10、11、12および13において、ウィンドウb
の計算法が複数存在する。
【0079】図14は、本発明の第1の実施形態によ
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウbm−1,bm−2,...b
をこの順序で生成するためのフロー図を示している。図
15は、図14に従ったオーバラップ・ウィンドウの生
成のための演算を例示している。この実施形態において
は0≦b<2の範囲の値を有する。従って、こ
の実施形態は、重なりビットの長さhが固定値のとき、
図10のRSA暗号処理と図12の楕円曲線暗号処理の
双方に適用できる。
【0080】重なりビットの長さhが固定値のときに、
秘密鍵d=(du−1,du−2,...dを表
すuビット・シーケンス(du−1,du−2,...
)からウィンドウbm−1,bm−2,...b
を導出する方法を、図14および15を参照して説明す
る。ここで、hはbi+1とbの重なりビットの長さ
であり、0<h<kであり、kはbのビットの長さで
ある。
【0081】ステップ501において、生成部75は、
ウィンドウbの数m=ceiling((u−h)/
(k−h))を決定する。ステップ502において、生
成部75はi=mにセットする。ステップ503におい
て、生成部75は最初の中間ウィンドウwtm−1
(du−1,...d(m−1)(k−h)を供給
する(図15参照)。ここで、wtm−1は、dのk’
個のMSB(k’=u−(m−1)(k−h),k’≦
k)を取り出したものである。
【0082】ステップ504において、生成部75はi
=i−1にセットする。ステップ505において、生成
部75はi=0かどうかを判定する。i≠0と判定され
た場合に、生成部75は、ステップ506において、乱
数発生器74からのkビットの乱数rに従って、max
(0,wtm−1−2+1)≦bm−1≦wtm−
を満たすようなオーバラップ・ウィンドウbm−1を生
成する(図15参照)。ここで、max(x,y)は値
xおよびyのうちの大きいものを表す。ウィンドウb
m−1は、乱数rそのものの値であっても、または乱数
rに従って所定の数のbの値の中から選択されてもよ
い。bm−1がこの範囲の値なので、(wtm−1−b
m−1)は0≦(wtm−1−bm−1)<2を満た
す。
【0083】wtm−1とbm−1を決定した後、ステ
ップ507において、生成部75は次の中間ウィンドウ
wtm−2=((wtm−1−bm−1)2(k−h)
+(d(m−1)(k−h)−1,...d
(m−2)(k−h)を供給する(図15参照)。
wtm−2は、k−hビットの左シフトおよび加算:w
m−2=((wtm−1−bm−1)<<(k−
h))+(d(m−1)(k−h)− ,...d
(m−2)(k−h)を実行することによって、求
めてもよい。
【0084】その後、生成部75は、i=m−2,m−
3,...1についてステップ504〜507を繰り返
す。生成部75は、ステップ506において乱数rに従
ってmax(0,wti−1−2+1)≦b≦wt
を満たすbを生成し、ステップ507において次の
中間ウィンドウwti−1=(wt−b)2(k
−h)+(di(k−h)−1,...d
(i−1)(k−h)を求める(図15参照)。換
言すれば、次の中間シーケンスwti−1は、中間シー
ケンスwtからウィンドウbを減算することによっ
て導出された値をMSBとして含み、uビット・シーケ
ンスの中の次のk−h個のMSBをLSBとして含んで
いる。このようにして、ステップ505においてi=0
と判定された場合に、生成部75は、ステップ508に
おいてb=wtとセットし、オーバラップ・ウィン
ドウbm−1,bm−2,...bを出力する。
【0085】図16は、第1の実施形態の変形である本
発明の第2の実施形態による、生成部75において、可
変な重なりビット長を有するオーバラップ・ウィンドウ
−1,bm−2,...bをこの順序で生成する
ためのフローチャートを示している。この実施形態で
は、隣接するbi+1とbの重なりビットの長さh
が可変である。図17は、図16に従ったオーバラップ
・ウィンドウの生成のための演算を例示している。この
実施形態においてbは0≦b<2の範囲の値を有
する。従って、この実施形態は、図11のRSA暗号処
理と図13の楕円曲線暗号処理の双方に適用できる。
【0086】次に、秘密鍵d=(du−1
u−2,...dからウィンドウb −1,b
m−2,...bを導出し重なりビット長hm−2
m−3,...hを生成する方法を、図16および
17を参照して説明する。ここで、uはdのビットの長
さ、bi+1とbの重なりビットの長さhは0≦h
≦kの範囲の値、kはbのビットの長さである。
【0087】ステップ601において、生成部75は、
0≦h≦kかつu=mk−(h −2+h
m−3+...+h)を満たすように、乱数r(=h
)に従って、ウィンドウbの数mおよび重なりビッ
ト長hm−2,hm−3,...hを決定する。ステ
ップ602において、生成部75はi=mおよびj=u
−kにセットする。ステップ603において、生成部7
5は最初の中間ウィンドウwt −1
(du−1,...dを供給する。
【0088】ステップ604において、生成部75はi
=i−1にセットする。ステップ605において、生成
部75はi=0かどうかを判定する。i≠0と判定され
た場合に、生成部75は、ステップ606において、図
14と同様に、乱数発生器74からのkビットの乱数r
に従って、max(0,wt−2hi+1)≦b
wtを満たすようなオーバラップ・ウィンドウb
生成する(図17参照)。ウィンドウbは、乱数rそ
のものの値であっても、または乱数rに従って所定の数
のbの値の中から選択されてもよい。
【0089】wtm−1とbm−1を決定した後、ステ
ップ607において、生成部75は次の中間ウィンドウ
wti−1=((wt−b)2(k−hi−1)
(d j−1,...dj−(k−hi−1)を供給
する(図17参照)。ステップ608において、生成部
75はj=j−(k−hi−1)にセットする。
【0090】生成部75は、i=m−2,m−
3,...1についてステップ504〜507を繰り返
す。このようにして、ステップ605においてi=0と
判定された場合に、生成部75は、ステップ608にお
いてb=wtとセットし、オーバラップ・ウィンド
ウbm−1,bm−2,...bおよび重なりビット
長h −2,hm−3,...hを出力する。
【0091】図18は、本発明の第3の実施形態によ
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウb,b,...bm−1をこ
の順で生成するためのフローチャートを示している。図
19は、図18に従ったオーバラップ・ウィンドウの生
成のための演算を例示している。この実施形態において
は0≦b<2の範囲の値を有する。従って、こ
の実施形態は、重なりビットの長さhが固定値のとき、
図10のRSA暗号処理と図12の楕円曲線暗号処理の
双方に適用できる。
【0092】重なりビットの長さhが固定値のときに、
秘密鍵d=(du−1,du−2,...dから
ウィンドウb,b,...bm−1を導出する方法
を、図18および19を参照して説明する。ここで、b
i+1とbの重なりビットの長さhは0<h<kの範
囲の値である。ウィンドウb中のh個のMSBをwl
、ウィンドウb中の(k−h)個のLSBをwr
と表す。bi+1とb は、bi+1中のh個のLSB
位置とbのh個のMSB位置が重なる。
【0093】ステップ701において、生成部75は、
ウィンドウbの数m=ceiling((u−h)/
(k−h))を決定する。ステップ702において、生
成部75はi=0にセットする。ステップ703におい
て、生成部75は最初の中間シーケンスdt=dt=
(du−1,...dを供給する。
【0094】ステップ704において、生成部75はi
=m−1かどうかを判定する。i≠m−1と判定された
場合に、生成部75は、ステップ705において、wr
=(dt中の(k−h)個のLSB)と、乱数発生
器74からの乱数rに従ってwl=(hビットの乱数
r)とを生成し、ステップ706においてb=wl
(k−h)+wrを生成する(図19参照)。それ
によって、(dt−b)における(k−h)個のL
SBは全て0となる。ステップ707において、次の中
間シーケンスdt=(dt−b)/2(k−h)
を求める(図19参照)。ステップ708において、i
=i+1にセットする。
【0095】その後、生成部75はi=1,2,...
m−2についてステップ705〜708を繰り返す。生
成部75は、ステップ705においてwr=(dt
中の(k−h)個のLSB)と、wl=(hビットの
乱数r)とを生成し、ステップ706においてb=w
(k−h)+wrを生成し、ステップ707に
おいて次の中間シーケンスdti+1=(dt
)/2(k−h)を生成する(図19参照)。換言
すれば、ウィンドウbは、乱数に従って生成されたh
個のMSBを含み、中間シーケンスdtの(k−h)
個のLSBをLSBとして含んでいる。次の中間シーケ
ンスdti+1は、dtからウィンドウb を減算
し、(k−h)個のLSBを切り捨てることによって導
出される。b=wl(k−h)+wrおよびd
i+1=(dt−b)/2(k− h)は、それぞ
れ(k−h)ビットの左シフトおよび右シフトを実行す
ることによって、求めてもよい。
【0096】このようにして、ステップ704において
i=m−1と判定された場合に、生成部75は、ステッ
プ709においてbm−1=dtm−1とセットし、オ
ーバラップ・ウィンドウb,b,...bm−1
出力する。
【0097】図20は、第3の実施形態の変形である本
発明の第4の実施形態による、生成部75において、可
変な重なりビット長を有するオーバラップ・ウィンドウ
,b,...bm−1をこの順で生成するための
フローチャートを示している。この実施形態ではb
i+1とbの重なりビットの長さhが可変である。
図21は、図20に従ったオーバラップ・ウィンドウの
生成のための演算を例示している。この実施形態におい
てbは0≦b≦2の範囲の値を有する。従って、
この実施形態は、図11のRSA暗号処理と図13の楕
円曲線暗号処理の双方に適用できる。
【0098】次に、秘密鍵d=(du−1
u−2,...dからウィンドウb
,...bm−1を導出し重なりビット長h,h
,...hm−2を生成する方法を、図20および2
1を参照して説明する。bi+1とbの重なりビット
の長さhは0≦h≦kの範囲の値である。
【0099】ステップ801において、生成部75は、
0≦h≦kかつu=mk−(h+h+...+h
m−2)を満たすように、乱数r(=h)に従って、
ウィンドウbの数mおよび重なりビット長hm−2
m−3,...hを決定する。ステップ802にお
いて、生成部75はi=0にセットする。ステップ80
3において、生成部75は最初の中間ウィンドウdt
=(du−1,...dを供給する。
【0100】ステップ804において、生成部75はi
=m−1かどうかを判定する。i≠m−1と判定された
場合に、生成部75は、図16と同様に、ステップ80
5において、乱数に従ってwl=(hビットの乱
数)とwr=(dt中の(k−h)個のLSB)
とを生成し、ステップ806においてb=wl
k−hi)+wrを生成し、ステップ807において
dt=(dti−1−bi−1)/2(k−hi)
生成する(図21参照)。ステップ808において、生
成部75は、i=i+1にセットする。
【0101】生成部75は、i=0,1,..m−2に
ついてステップ804〜808を繰り返す。このように
して、ステップ804においてi=m−1と判定された
場合、生成部75は、ステップ809においてbm−1
=dtm−1とセットし、オーバラップ・ウィンドウb
,b,...bm−1および重なりビット長h
,...hm−2を出力する。
【0102】図22は、本発明の第5の実施形態によ
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウbm−1,bm−2,...b
をこの順で生成するためのフローチャートを示してい
る。図23は、図22に従ったオーバラップ・ウィンド
ウの生成のための演算を例示している。この実施形態
は、図14および15に示された第1の実施形態におけ
るbの値の範囲を−2<b<2に拡張したもの
で、図12の楕円曲線暗号処理にのみ適用できる。この
実施形態では、bがより多くの取り得る値を有するの
で、SPAおよびDPAを用いた秘密鍵の推定に対する
安全性をより高くすることができる。
【0103】重なりビットの長さhが固定値の場合に、
秘密鍵d=(du−1,du−2,...dから
ウィンドウbm−1,bm−2,...bを導出する
方法を、図22および23を参照して説明する。ここ
で、bi+1とbの重なりビットの長さhは0<h<
kの範囲の値である。
【0104】ステップ901〜905およびステップ9
07〜908は図14のステップ501〜505および
ステップ507〜508に対応し、再び説明することは
しない。
【0105】生成部75は、ステップ906において、
乱数発生器74からのkビットの乱数rに従って、wt
i−1−2<b<min(2,wt+2)を
満たすようなオーバラップ・ウィンドウbを生成する
(図23参照)。ここで、min(x,y)は値xおよ
びyのうちの小さいものを表す。図23に示されている
ように、b=(dik+k−1
ik+k−2,...dikにおけるd
ik+k−1,...dikの各々の値は−1,0また
は1である。ウィンドウbは、乱数rそのものの値で
あっても、または乱数rに従って所定の数のbの値の
中から選択されてもよい。図14のステップ506にお
いて生成されるbは0以上の値であるのに対し、この
実施形態において、生成されるウィンドウbは、−2
+2≦b<2の範囲の値を有し、負の値を含ん
でいる。
【0106】図24は、第5の実施形態の変形である本
発明の第6の実施形態による、生成部75において、可
変な重なりビット長を有するオーバラップ・ウィンドウ
−1,bm−2,...bをこの順で生成するた
めのフローチャートを示している。この実施形態ではb
i+1とbの重なりビットの長さhが可変である。
図25は、図24に従ったオーバラップ・ウィンドウの
生成のための演算を例示している。この実施形態は、図
16および17に示された第2の実施形態におけるb
の値の範囲を−2<b<2に拡張したもので、図
13の楕円曲線暗号処理にのみ適用できる。
【0107】次に、秘密鍵d=(du−1
u−2,...dからウィンドウb −1,b
m−2,...bを導出しhm−2
u−2,...hを生成する方法を、図24および
25を参照して説明する。ここで、bi+1とbの重
なりビットの長さhは0≦h≦kの範囲の値であ
る。
【0108】ステップ1001〜1005およびステッ
プ1007〜1008は図16のステップ601〜60
5およびステップ607〜608に対応し、再び説明す
ることはしない。
【0109】生成部75は、ステップ1006におい
て、乱数発生器74からのkビットの乱数rに従って、
wti−1−2hi<b<min(2,wt+2
hi)を満たすようなオーバラップ・ウィンドウb
生成する(図25参照)。図25に示されているよう
に、bにおける各ビットの値は−1,0または1であ
る。図16のステップ606で生成されるbは0以上
の値であるのに対し、この実施形態において、生成され
るウィンドウbは、−2<b<2の範囲の値を
有し、負の値を含んでいる。
【0110】図26は、本発明の第7の実施形態によ
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウb,b,...bm−1をこ
の順で生成するためのフローチャートを示している。図
27は、図26に従ったオーバラップ・ウィンドウの生
成のための演算を例示している。この実施形態は、図1
8および19に示された第3の実施形態のbの値の範
囲を−2<b<2に拡張したもので、図12の楕
円曲線暗号処理にのみ適用できる。この実施形態では、
がより多くの取り得る値を有するので、SPAおよ
びDPAを用いた秘密鍵の推定に対する安全性をより高
くすることができる。この実施形態では、第3の実施形
態の図18のステップ707における演算をなくしたの
で、高速処理が可能である。
【0111】重なりビットの長さhが固定値の場合に、
秘密鍵d=(du−1,du−2,...dから
ウィンドウb,b,...bm−1を導出する方法
を、図26および27を参照して説明する。ここで、b
i+1とbの重なりビットの長さhは0<h<kの範
囲の値である。
【0112】ステップ1101〜1102は図18のス
テップ701〜702に対応する。ステップ1103に
おいて、生成部75は、最初の中間ウィンドウwt
(d k−1,dk−2,...dを供給する。こ
こで、wtは、dのk個のLSBを取り出したもので
ある。
【0113】生成部75は、i=0,1,...m−2
について、ステップ1104〜1110を実行して、b
,b,...bm−2を生成する。ステップ110
4において、生成部75はi=m−1かどうかを判定す
る。ステップ1104、1110および1111は、図
18のステップ704、708および709にそれぞれ
対応する。
【0114】ステップ1105において、生成部75
は、wtr=wt(mod 2 k−h))を求め
る。このモジュロ演算は、中間ウィンドウwtが負の
場合を含んでいる。この演算は次のように実行される。
【数8】
【0115】ステップ1106において、生成部75
は、wtl=(wt−wtr)/2(k−h)
決定する。ステップ1107において、生成部75は、
乱数発生器74からのkビットの乱数rに従ってwtl
−2h< wl<2hを満たすようなwlと、wr
=wtrとを生成する。wlは、乱数rそのもの
の値であっても、または乱数rに従って所定の数のwl
の値の中から選択されてもよい。ステップ1108に
おいて、生成部75は、b=wl+wr を求
める(図27参照)。換言すれば、ウィンドウbは、
乱数に従って生成されたh個のMSBを含み、中間シー
ケンスwt(mod 2(k−h))の値を(k−
h)個のLSBsとして含んでいる。図27に示されて
いるように、bにおける各ビットの値は−1,0また
は1である。
【0116】ステップ1109において、生成部75
は、次の中間ウィンドウwti+1=(d
k−(k−h)(i+1)−1,...d
k−(k−h)i+(wtl−wl)を求
める。換言すれば、次の中間シーケンスwti+1は、
h個のMSBの値wlを中間シーケンスwtの中の
h個のMSBの値から減算することによって導出された
値をLSBsとして含み、uビット・シーケンスの中の
他のk−h個のビットをMSBsとして含んでいる。ス
テップ1110において、生成部75は、生成部75
は、i=i+1にセットする。
【0117】このようにして、ステップ1104におい
てi=m−1であると判定された場合、生成部75はス
テップ1111においてbm−1=dtm−1とセット
して、オーバラップ・ウィンドウb,b,...b
m−1を出力する。
【0118】第3の実施形態と比較すると、この実施形
態では、wlおよびwrが負であってもよいので、
図18のステップ707で行う数ビット〜数百ビットの
値からの減算が不要であり、処理が速い。
【0119】図28は、第7の実施形態の変形である本
発明の第8の実施形態による、生成部75において、可
変な重なりビット長を有するオーバラップ・ウィンドウ
,b,...bm−1をこの順で生成するための
フローチャートを示している。この実施形態ではb
i+1とbの重なりビットの長さhが可変である。
図29は、図28に従ったオーバラップ・ウィンドウの
生成のための演算を例示している。この実施形態は、図
20および21に示された第4の実施形態におけるb
の値を−2<b<2に拡張したもので、図13の
楕円曲線暗号処理にのみ適用できる。
【0120】次に、秘密鍵d=(du−1
u−2,...dからウィンドウb
,...bm−1を導出し重なりビット長h,h
,...hm−2を生成する方法を、図28および2
9を参照して説明する。ここで、bi+1とb の重な
りビットの長さhは0≦h≦kの範囲の値である。
【0121】この実施形態における処理は、hが可変
であること以外は、図26および27と同様に処理が行
われる。図28におけるステップ1201は図20のス
テップ801に対応する。ステップ1202において、
生成部75はi=0およびj=kにセットする。ステッ
プ1204〜1209および1211は、図26におけ
るステップ1104〜1110にそれぞれ対応する。
【0122】ステップ1205において、生成部75
は、wtr=wt(mod 2 k−hi))を求
める。ステップ1206において、生成部75は、wt
=(wt−wtr)/2(k−hi)を求め
る。ステップ1207において、生成部75は、乱数発
生器74からのkビットの乱数rに従ってwtl−2
h < wl<2hiを満たすようなwlと、wr
=wtrとを生成する。ステップ1208において、
生成部75は、b=wl(k−hi)+wr
求める(図29参照)。図29に示されているように、
における各ビットの値は−1,0または1である。
ステップ1209において、生成部75は、次の中間ウ
ィンドウwti+1=(dj+k−hi−1,...d
hi+(wtl−wl)を求める。ステッ
プ1210において、生成部75は、j=j+(k−h
)にセットする。
【0123】このようにして、ステップ1204におい
てi=m−1であると判定された場合、生成部75はス
テップ1212において、bm−1=dtm−1とセッ
トして、オーバラップ・ウィンドウb,b,...
m−1および重なりビット長hm−2
m−3,...hを出力する。
【0124】図30は、本発明の第9の実施形態によ
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウbm−1,bm−2,...b
を順に生成するためのフローチャートを示している。図
31は、図30に従ったオーバラップ・ウィンドウの生
成のための演算を例示している。この実施形態において
は0≦b<2の範囲の値を有し、従って、この
実施形態は、図10のRSA暗号処理と図12の楕円曲
線暗号処理の双方に適用できる。
【0125】秘密鍵d=(du−1,du−2,...
からウィンドウbm−1,bm−2,...b
を導出する方法を、図30および31を参照して説明
する。この実施形態では、複数のm−1ビットの乱数ビ
ット・シーケンスを加算することによってウィンドウb
が生成される。bi+1とbの重なりビットの長さ
hは0<h<kの範囲の固定値である。
【0126】ステップ1301において、生成部75
は、ウィンドウbの数m=ceiling(u/k)
を決定する。生成部75は、ステップ1302において
乱数発生器74からの乱数に従って、df≧0かつd
+...+dfg−1≦dを満たすように入力dか
らdf,...dfg−1を生成し、ステップ130
3においてdf=d−(df+...+d
g−1)(≧0)を生成する。このようにしてd=d
+df+...+dfg−1を満たすg個のdf
=(dfj,u−1,dfj,u−2,...df
j,0が生成される。ここで、gはceiling
(2(k-1)/(2(k−h)−1))≦g≦flo
or((2−1)/(2(k−h)−1))の範囲の
定数である。関数floor(x)は変数x以下の最大
の整数を表す。gは、最大kビットのb(2 k−1
<2)を与える。
【0127】ステップ1304において、生成部75
は、i=i−1にセットする。生成部75は、bを生
成するために、ステップ1305〜1308をi=m−
1,m−2,...0について順に実行する。ステップ
1304〜1308では、i=0,1,...m−1の
順に、またはその他の順にbが生成されてもよい。
【0128】ステップ1305において、生成部75
は、j=0,1,...(g−1)について、(k−
h)ビットの値s=(df
j,(i+1)(k−h)−1,...df
j,i(k−h)をセットする。ステップ1306
において、オーバラップ・ウィンドウb =s+s
+...+sg−1を求める。このようにして生成さ
れた隣接するウィンドウbi+1とbは、bi+1
h個のLSB位置とbのh個のMSB位置とが、uビ
ット・シーケンスにおける同じh個のビット(d
ih+h−1,...dih)の位置に関係付けられ
る。ステップ1307において生成部75はi=0かど
うかを判定する。i≠0と判定された場合に、生成部7
5はステップ1308においてi=i−1にセットし、
次いで、手順はステップ1305に進む。i=0と判定
された場合は、生成部75はオーバラップ・ウィンドウ
m−1,bm−2,...bを出力する。
【0129】図32は、第9の実施形態の変形である本
発明の第10の実施形態による、生成部75において、
重なりビット長を有するオーバラップ・ウィンドウb
m−1,bm−2,...bをこの順で生成するため
のフローチャートを示している。この実施形態は、第9
の実施形態を変形したもので、モジュロφを用いてウィ
ンドウbを生成する。図33は、図32に従ったオー
バラップ・ウィンドウの生成のための演算を例示してい
る。この実施形態においてbは0≦b<2の範囲
の値を有し、従って、この実施形態は、図11のRSA
暗号処理と図13の楕円曲線暗号処理の双方に適用でき
る。
【0130】秘密鍵d=(du−1,du−2,...
からウィンドウbm−1,bm−2,...b
を導出する方法を、図32および33を参照して説明
する。bi+1とbの重なりビットの長さhは0<h
<kの範囲の固定値である。
【0131】この実施形態では、第9の実施形態と異な
る条件でdf,df,...dfg−1を生成す
る。この実施形態では、dに対してbがより多くの取
りうる値を有するので、SPAおよびDPAを用いた秘
密鍵の推定に対する安全性をより高くすることができ
る。
【0132】ステップ1401において、生成部75
は、乱数発生器74からの乱数に従って、df≧0を
満たすように入力dからdf,...dfg−1を生
成する。第9の実施形態とは異なり、dfはdf
+...+dfg−1≦dを満たす必要がない。生成
部75は、ステップ1402において、df=d−
(df +...+dfg−1)(mod φ)(≧
0)を生成する。このようにしてd=df+df
+...+dfg−1(mod φ)を満たすg個の
df=(dfj,u−1,dfj,u−2,...d
j,0が生成される。dfは、0≦df<φ
を満たさなくてもよい。この実施形態では、第9の実施
形態とは異なり、df,...dfg−1は0以上の
uビットの任意の乱数なので、df,df,...
dfg−1がより多くの取りうる値を有し、従ってb
もより多くの取りうる値を有する。
【0133】生成部75は、ステップ1403において
df+df+...+dfg− のビット長u’を
求め、ステップ1404においてウィンドウbの数m
=ceiling(u’/(k−h))を求める。ステ
ップ1405において、生成部75はi=m−1にセッ
トする。
【0134】ステップ1406において、生成部75
は、j=0,1,...(g−1)について、(k−
h)ビットのストリングの値s=(df
j,(i+1)(k− h)−1,...df
j,i(k−h)をセットする。ステップ1407
において、生成部75は、オーバラップ・ウィンドウb
=s+s+...+sg−1を求める。ステップ
1408〜1409は図30のステップ1307〜13
08に対応する。このようにして、生成部75はオーバ
ラップ・ウィンドウbm−1,bm−2,...b
出力する。
【0135】本発明によれば、公開鍵演算がウィンドウ
法に基づいているのでSPAによる秘密鍵の推定が防止
される。入力値dに対して複数のウィンドウbが乱数
に従って選択されるのでDPAによる秘密鍵の推定も防
止される。本発明によれば、通常の分割指数法のように
公開鍵演算を2回実行する必要がなく、公開鍵演算を1
回だけ実行すればよいので、処理速度が速い。
【0136】表2は、従来の分割指数法と本発明の処理
速度の比較を示している。表2において、uは秘密鍵の
ビット長を、Mは乗算または点の加算/減算の計算量
を、Sは2乗または点の2倍算の計算量を表す。hが可
変長hの場合は、hは平均の長さを表す。
【0137】
【表2】
【0138】従来の分割指数法の処理速度は、図6に示
す2つの公開鍵演算v=ad1(modn)とv
d2(mod n)の計算の方法によって異なるが、
どのような方法を用いても最低2uSの計算量を必要と
する。一方、本発明では1回のみの公開鍵演算を必要と
し、平均(S+M/(k−h))uの計算量が必要であ
る。一般的にS≒Mなので、従来の分割指数法の計算量
は2uMであり、一方、本発明の計算量は(1+1/
(k−h))uMである。本発明においては、h<kで
あり(1+1/(k−h))uM≦2uMなので、本発
明の公開鍵演算は従来の分割指数法より速い。例えば、
k=4およびh=2の場合、分割指数法は最低でも2u
Mの計算量を必要とするが、本発明は平均1.5uMの
計算量しか必要としない。
【0139】以上説明した実施形態では、所与の1つの
秘密鍵dに対するオーバラップ・ウィンドウの取り得る
(可能な)パターンの数は、オーバラップ・ウィンドウ
法における各ウィンドウ生成においてそれぞれに使用さ
れる乱数の取り得るパターンの数にのみ依存する。DP
Aに対するオーバラップ・ウィンドウ法の安全性はオー
バラップ・ウィンドウbの取り得るパターンの数に依
存する。乱数のパターンの数は、隣接のオーバラップ・
ウィンドウbi+1とbの重なりビット長hによって
決まり、この数を大きくするためにはウィンドウの長さ
kを大きくする必要がある。しかし、ウィンドウの長さ
kを大きくすると、生成されるテーブルwまたはWのサ
イズが増加し、ウィンドウの生成、テーブルの生成およ
びテーブル・ルックアップの効率が低下する。
【0140】以下、本発明による、所与の1つの秘密鍵
dに対する複数のウィンドウbのそれぞれの一部に、
所定の同じ値または乱数に従って生成された同じ値Sを
用いるオーバラップ・ウィンドウ法を説明する。ここで
は、この方法を指数乗剰余演算に関して説明するが、点
のスカラー倍算に関しても同様に実現できる。この方法
は、生成されるテーブルのサイズを大きくすることなく
ウィンドウbの取り得るパターンの数を増やすことが
でき、効率よく安全性が高められる。
【0141】図34Aおよび34Bは、本発明による、
所与の1つの値dに対する複数のウィンドウのそれぞれ
の一部について所定の同じ値または乱数に従って生成さ
れた同じ値を用いるオーバラップ・ウィンドウ法の原理
を説明するのに役立つ。
【0142】図34Aを参照して説明すると、安全性を
高めるために、オーバラップ・ウィンドウbのビット
長kをより長くする。さらに、ウィンドウbm−1、b
m− 、...b(ここで、mはウィンドウの数を表
す)の各ウィンドウb中の所定位置におけるhビット
の重なりビット・ストリングの値を、乱数rに従って発
生された同じ値Sに設定する。
【0143】図34Bを参照して説明すると、オーバラ
ップ・ウィンドウ法の安全性はオーバラップ・ウィンド
ウbのビット長kに応じて決まる。生成されるテーブ
ルwのサイズは、その同じ値Sを有するhビット以外の
k−hビットに応じて決まる。その理由は、hビットに
対する同じ値Sを考慮すると、kビットのオーバラップ
・ウィンドウbm−1、bm−2、...bに対する
w[b]=a(mod n)を満たす取り得る値w
[b]の数は2k−hだからである。従って、テーブ
ルwのエントリとして2k−h個の値wが計算され生成
されてテーブルwに格納される。テーブルwをルックア
ップするとき、ウィンドウbにおける下線のk−hビ
ット部分のみをインデックスとして用いればよい。この
ようにして、テーブル・サイズを増加させることなく、
およびテーブル・ルックアップに使用するインデックス
値indの長さを増加させることなく、ウィンドウb
の長さを大きくすることができる。
【0144】図35は、後で説明する改良手法1および
2において用いられる、複数のウィンドウのそれぞれの
一部に同じ値Sを用いるオーバラップ・ウィンドウ法に
よる暗号処理装置160の概略的構成を示している。暗
号処理装置160は、値a、dおよびnまたは値Aおよ
びdを入力して供給する入力部72と、乱数発生器74
と、乱数発生器74からの乱数に従って値dからオーバ
ラップ・ウィンドウb m−1,bm−2,...b
生成し同じ値Sおよび必要な場合は重なり長hを供給す
るウィンドウ値生成部76と、生成部76からのウィン
ドウを格納するメモリ78と、入力部72からの値aお
よびnまたは値Aと生成部76からの値Sとからkビッ
トのウィンドウbに対するテーブルwまたはWを生成
するテーブル生成部80と、テーブル・メモリ82と、
メモリ78からのウィンドウおよび必要な場合は重なり
長hに従ってテーブル・メモリ82中のテーブルwまた
はWをルックアップ(探索)して等式v=a(mod
n)またはV=dAを演算するウィンドウ法演算部8
4と、値vまたはVを出力する出力部86とを含んでい
る。
【0145】図36は、後で説明する改良手法1および
2において用いられる、複数のウィンドウのそれぞれの
一部に同じ値Sを用いるオーバラップ・ウィンドウ法に
よる逐次または反復処理型の暗号処理装置162の概略
的構成を示している。暗号処理装置162は、乱数発生
器74からの乱数に従って値dからオーバラップ・ウィ
ンドウbm−1,bm−2,...bを順次生成し同
じ値Sおよび必要な場合は重なり長hを供給するウィン
ドウ値生成部76と、ウィンドウ値生成部76からのウ
ィンドウおよび必要な場合は重なり長hに従ってテーブ
ル・メモリ82中のテーブルwまたはWをルックアップ
して等式v=a(mod n)またはV=dAを演算
するウィンドウ法演算部84と、を含んでいる。暗号処
理装置162は、さらに、図35の暗号処理装置160
と同様に、入力部72と、乱数発生器74と、テーブル
生成部80と、テーブル・メモリ82と、出力部86と
を含んでいる。
【0146】図35および36の暗号化装置160およ
び162は、さらに、プロセッサ62と、ROMのよう
なプログラム・メモリ64とを含んでいる。プロセッサ
62は、メモリ64に格納されているプログラムに従っ
てこれらの要素72〜86を制御する。代替構成とし
て、プロセッサ62は、要素72〜86に対応する機能
を実現するメモリ64中のプログラムを実行することに
よって要素72〜86を実現してもよい。この場合、図
35および36はフロー図として見ることができる。
【0147】改良手法1 オーバラップ・ウィンドウの
中央位置に同じ値Sを用いる手法図37は、本発明によ
る、オーバラップ・ウィンドウbの中央位置に同じ値
Sを設定する手法を説明するのに役立つ。図37を参照
すると、この手法では、上述の図10のオーバラップ・
ウィンドウ法と同様に、隣接するウィンドウb +1
が重なりビット長hを有する。ウィンドウbは、
kビットのシーケンスであり、k−h個のMSBと、k
−h個のLSBと、残りのs個の中央のビット(s=k
−2(k−h)=2h−k)とを含んでいる。この図に
おいて、k−h個のMSBの値をx1とし、k−h個の
LSBの値をx2としている。ウィンドウbのk−h
個のLSBは乱数rに従って生成される。全てのオー
バラップ・ウィンドウbm−1、bm−2、...b
の各々の中央位置のsビット・ストリングの値が同じ値
Sに設定される。値Sは、各値dごとに乱数rに従っ
て発生してもよく、または固定値、例えば0でもよい。
ウィンドウbは、図14および15に示された第1の
実施形態のウィンドウbの中央のsビットを値Sとし
たものに相当する。
【0148】v=a(mod n)は、オーバラップ
・ウィンドウbのk−h個のMSBおよびk−h個の
LSBを有するインデックスindを用いたテーブル
wのルックアップによるw[ind]の乗算と、累乗
とによって求められる。V=dAは、そのようなインデ
ックスindを用いたテーブルwのルックアップによ
るW[ind]の加算およびW[−ind]の減算
と、乗算とによって求められる。
【0149】図38は、本発明による、オーバラップ・
ウィンドウbの中央位置に同じ値Sを用いる手法を用
いた指数剰余演算の概略的なフロー図を示している。図
38のフロー図は、図10のフロー図の変形である。こ
の手法は、図10のRSA暗号処理と図12の楕円曲線
暗号処理の双方に適用できる。
【0150】次に、図35および36をも参照して、図
38のフロー図を説明する。ステップ1501におい
て、入力部72は値a、dおよびnを入力して、dを生
成部76に供給し、aおよびnまたはAを生成部80に
供給する。ステップ1502において、生成部76は、
乱数発生器74からの乱数rに従って、値dからウィ
ンドウbm−1,bm−2,...bの代わりにイン
デックスindm−1,indm−2,...ind
を導出してメモリ78に格納する。インデックスind
は、ウィンドウbの中央のsビットを取り除いたシ
ーケンスで、0≦ind<2
x1<<(k−h)+x2(0≦x1<2k−h,0≦
x2<2 −h)の範囲の値である。ここで、x1はウ
ィンドウbのk−h個のMSBを表し、x2はウィン
ドウbのk−h個のLSBを表す。インデックスin
は、ウィンドウbを圧縮したものと見ることもで
きる。ステップ1504において、テーブル生成部80
は、2(k−h)個の値w[0],...w[22×
(k−h)−1]を含むテーブルw(w[x1<<(k
−h)+x2]=a(x
1<<h)+(S<<(k−h))+x2(mod
n))を生成してメモリ82に格納する。ステップ15
02とステップ1504は順序が逆であってもよい。
【0151】ウィンドウ法演算のためのステップ150
6〜1516において、演算部84は、i=m−1,m
−2,...0について順次、indに従って、メモ
リ82のテーブルwのルックアップによるw[in
]の乗算と累乗とを、vに対して実行する。ステッ
プ1506において、演算部84はv=1およびi=m
をセットする。ステップ1508において、演算部84
はi=i−1をセットする。ステップ1510におい
て、演算部84は、後で詳しく説明するようにインデッ
クスind=(bi,(k−1)
i,(k−2),...bi,h)||(b
i,(k−h−1),bi,(k−h−2),...b
i,0)を用いてテーブルwをルックアップして、vに
w[ind]を乗算する。ここで、a||bは、複数
ビット値aをMSBとし複数ビット値bをLSBとする
シーケンス値を生成する結合演算であり、αビット・ス
トリングa=(aα−1,aα−2,...a)およ
びβビット・ストリングb=(bβ−1
β−2,...b )に対して、α+βビット・スト
リングa||b=aα−1,aα−2,...a,b
β−1,bβ−2,...b)となる。ステップ15
12において、演算部84はiの値と値0とを比較して
i=0かどうかを判定する。i=0でないと判定された
場合には、ステップ1514において、演算部84は、
(k−h)回の2乗によってvの2(k−h)乗を生成
する。ステップ1512においてi=0であると判断さ
れた場合には、ステップ1516において演算部84
は、一連のオーバラップ・ウィンドウの演算結果が従来
のウィンドウ法の演算結果と整合するようにするための
補正演算または補償演算を行う。ステップ1518にお
いて、出力部86はv=a(mod n)を出力す
る。ステップ1502、1504およびステップ150
6〜1514は同時に(並行して)または反復的に実行
されてもよい。
【0152】このように、sビットの同じ値Sの使用に
より、インデックスindの必要な長さは、kビットの
ウィンドウに対して、k−h個のMSBとk−h個のL
SBに対する2×(k−h)ビットとなり、テーブル・
サイズは22×(k−h)個のwの値となる。この手法
において、最初のウィンドウ以外のウィンドウbの値
は、ビットの長さs(数)に応じて1つ乃至数個前まで
の複数のウィンドウに依存する。図10の指数剰余演算
ではウィンドウbの値は1つ前のウィンドウにおける
乱数値にのみ依存するので、この手法の方が中間データ
の量が増え、安全性が高くなる。なお、S以外の部分に
ついて、簡単化のために、k−h個のMSBおよびk−
h個のLSBについて説明するが、これらのMSBの長
さとLSBの長さとは等しくなくてもよい。
【0153】図39は、改良手法1による最初の3つの
ウィンドウの生成の例を示している。最初のウィンドウ
m−1において、k−h個のMSBは値dの中のk−
h個のMSBに一意的に決定され、次の中央の2h−k
個のMSBは値Sに一意的に決定され、k−h個のLS
Bの値は乱数rm−1に従って決定される。中間データ
の取り得るパターンの数は2(k−h)である。次のウ
ィンドウbm−2において、k−h個のMSBは値dの
中の後続のk−h個のMSBと、ウィンドウb m−1
おける値Sとから一意的に決定され、次の2h−k個の
MSBは値Sに決定され、k−h個のLSBのストリン
グの値は乱数rm−2に従って決定される。中間データ
の取り得るパターンの数は22(k−h)である。次の
ウィンドウbm−3において、k−h個のMSBは、値
dの中の後続のk−h個のMSBと、ウィンドウb
m−1におけるk−h個のLSBと、ウィンドウb
m−2における値Sとから一意的に決定され、次の2h
−k個のMSBは値Sに決定され、k−h個のLSBは
乱数rm−3に従って決定される。ウィンドウbにお
けるk−h個のLSBと、次のウィンドウbi−1にお
ける値Sと、次のウィンドウbi−2におけるk−h個
のMSBとの総和が値dにおけるm−(i−2)番目の
k−h個のMSBの値になるように、ウィンドウb
i−2におけるk−h個のMSBが設定される。S=
0、k=6、h=4の場合、中間データの可能なパター
ンの数は22(k−h)=2である。3番目以降のウ
ィンドウも同様に生成される。
【0154】図40は、改良手法1による本発明の第1
1の実施形態による、ウィンドウ生成部76において、
重なりビット長hを有するオーバラップ・ウィンドウb
,b,...bm−1をこの順序で生成するための
フローチャートの一部を示している。図41は、図40
に従ったオーバラップ・ウィンドウの生成のための演算
を例示している。この実施形態は、図18および19に
関連して説明した第3の実施形態の変形と見ることがで
きる。この実施形態は、第3の実施形態において乱数w
を、乱数に従って生成されたk−h個のMSBと同
じ値Sを有するs個のLSBとで構成したものに相当す
る。
【0155】uビットの秘密鍵d=(du−1,d
u−2,...dから重なりビット長hを有する
オーバラップ・ウィンドウb,b,...bm−1
を生成するための手順を、図40および41を参照して
説明する。sビットの同じ値を固定値S=0とし、ウィ
ンドウの重なり幅をhビットとし、s=k−2(k−
h)=2k−hとする。但し、Sは0以外の値であって
もよい。この場合、簡単化のためにm=(u−h)/
(k−h)は正の整数とする。
【0156】図38におけるステップ1501の後の図
40のステップ1602において、生成部76は中間ウ
ィンドウd’=d(初期値)、i=0、u=d’のビッ
ト数とセットする。ステップ1604において、生成部
76は値uが基準値kより小さいかどうかを判定する。
それが基準値より小さいと判定された場合は、生成部7
6はステップ1618においてm=iとセットして、手
順は図38のステップ1504に進む。それが基準値よ
り小さくはないと判定された場合は、手順はステップ1
606に進む。
【0157】ステップ1606において、生成部76
は、値uが基準値k+hより大きいかどうかを判定す
る。それが基準値より大きいと判定された場合は、手順
はステップ1608に進む。それが基準値より大きくな
い判定された場合は、手順はステップ1612に進む。
【0158】生成部76は、ステップ1608におい
て、k−hビットの乱数r=(r −h−1,r
k−h−2,...r)を生成し、ステップ1610
において、インデックスind=r||(d’のk
−h個のLSB)=(rk−h−1
k−h−2,...r,d’k−h−1,d’
k−h−2,...d’)を生成する。
【0159】ステップ1614において、生成部76
は、中間ウィンドウd’から中央にS値の2h−k個の
ビットを含むウィンドウb=(bi,k−1,...
i, )を減算し、即ちインデックスind(i)の
k−h個のMSBとk−h個のLSBの間にS値のs個
のビット・ストリングを挿入したウィンドウbの値を
減算して、その減算値のk−h個のLSBを切り捨てた
ものを新しい中間ウィンドウd’とする。ステップ16
16において、生成部76は、uをその中間ウィンドウ
d’のビット数にセットし、i=i+1とセットする。
次いで、手順はステップ1604に戻る。
【0160】生成部76は、ステップ1612におい
て、インデックスind=(d’のhビット上位のk
−h個のLSB)||(d’のk−h個のLSB)=
(d’ −1,d’k−2,...d’,d’
k−h−1,d’k−h−2,...d’)を生成す
る。これによって、ウィンドウb,b,...b
m−1の累積和(bm−1<<(u−k))+(b
m−2<<(u−2k+h))+...+b=dとな
る。
【0161】図42は、改良手法1による本発明の第1
2の実施形態による、生成部76において、重なりビッ
ト長hを有するオーバラップ・ウィンドウbm−1,b
m− ,...bを生成するためのフローチャートの
一部を示している。図43は、図42に従ったオーバラ
ップ・ウィンドウの生成のための演算を例示している。
この実施形態では、各ウィンドウの異なる複数の乱数を
まとめて生成し、補正用の差を予め求めるものである。
【0162】図38におけるステップ1501の後の図
42におけるステップ1702において、生成部76は
sビットの同じ値Sを決定する。ここでは同じ値を固定
値S=0とする。ステップ1704において、生成部7
6は、値dのビット数に従って、全てのウィンドウb
m−1,bm−2,...bにおけるSをMSB位置
からk−hビットごとに配置して加算した乱数シーケン
スR=(S<<(u−h))+ (S<<(u−(h+
k−h)))+(S<<(u−(h+2(k−
h))))...+(S<<(k−h))を生成する。
ここで、m=(u−h)/(k−h)は正の整数とす
る。ステップ1706において、生成部76はd’=d
−Rを求める。
【0163】ステップ1708において、生成部76
は、d’からh個のMSBおよびh個のLSBを取り除
いてu−2hビット値dm=(d’u−h−1,d’
u−h− ,...d’)とする。ステップ1708
において、生成部76は、dm=dm1+dm2である
ような2つのシーケンスdm1およびdm2を乱数に従
って生成する。ステップ1712において、生成部76
は、次のような2つのシーケンスdhおよびdlを生成
する。
【数9】
【0164】ステップ1714において、生成部76
は、2つのシーケンスdおよびdから次のようなイ
ンデックスindm−1,indm−2,...ind
を生成する。その後、手順は図38のステップ150
4へ進む。
【数10】
【0165】また、他の実施形態として、値dのMSB
の位置からインデックスを順次生成してもよく、各ウィ
ンドウのビットに負の値を用いてもよく、上述のdhお
よびdlを用いずに例えばウィンドウ法およびバイナリ
・メソッドのような様々な方法で補正演算を行うことが
できる。
【0166】改良手法2 オーバラップ・ウィンドウの
LSBsまたはMSBsに同じ値Sを用いる手法図44
は、本発明による、オーバラップ・ウィンドウbのL
SBまたはMSBとしてsビットの同じ値Sを用いる手
法を説明するのに役立つ。図44を参照すると、この手
法では、上述の図10のオーバラップ・ウィンドウ法と
同様に、隣接するウィンドウbi+1とbが重なりビ
ット長sを有する。ウィンドウb は、k+sビットの
シーケンスであり、k個のMSBと、値Sのs個のLS
Bとを含んでいる。ここで、この手法におけるウィンド
ウbの長さはsビットを除外したビット数kで定義さ
れるものとする。全てのオーバラップ・ウィンドウb
m−1,bm−2,...bの各々のs個のLSBの
ストリングの値は、値dに対して乱数rに従って発生
された同じ値Sである。この図ではS=(0011)
である。ウィンドウbは、図14および15に示され
た第1の実施形態のウィンドウbのh個のLSBを
(h=s)値Sとしたものである。
【0167】v=a(mod n)は、オーバラップ
・ウィンドウbのk個のMSBを有するインデックス
indを用いたテーブルwのルックアップによるw
[ind]の乗算と、累乗とによって求められる。V
=dAは、そのようなインデックスindを用いたテ
ーブルwのルックアップによるW[ind]の加算お
よびW[−ind]の減算と、乗算とによって求めら
れる。
【0168】図45は、本発明による、オーバラップ・
ウィンドウbのLSBまたはMSBのストリングに同
じ値Sを用いる手法を用いた指数剰余演算の概略的なフ
ロー図を示している。図45の処理フローは、図10の
処理フローの変形である。この手法は、図10のRSA
暗号処理と図12の楕円曲線暗号処理の双方に適用でき
る。
【0169】次に、図35および36をも参照して、図
45のフロー図を説明する。ステップ1601におい
て、入力部72は値a、dおよびnを入力して、dを生
成部76に供給し、aおよびnまたはAを生成部80に
供給する。次いで、生成部76は乱数rに従って同じ
値Sを生成する。ステップ1802において、テーブル
生成部80は、LSBに同じ値Sが用いられるときはテ
ーブルw(w[x]=a x<<s+S(mod n))
(0≦x<2,0≦S<2)を生成し、MSBに同
じ値Sが用いられるときはテーブルw(w[x]=a
S<<k+x(mod n))(0≦x<2,0≦S
<2)を生成してメモリ82に格納する。ステップ1
804において、生成部76は、乱数発生器74からの
乱数rに従って、値dからインデックスin
m−1,indm−2,...indを導出してメ
モリ78に格納する。ここで、m=floor((u−
s)/k)である。ステップ1802とステップ180
4は順序が逆であってもよい。
【0170】ステップ1806〜1814において、演
算部84は、i=m−1,m−2,...0について順
次、bに従って、メモリ82のテーブルwのルックア
ップによるw[b]の乗算と累乗とを、vに対して実
行する。ステップ1806において、演算部84はv=
1およびi=mをセットする。ステップ1808におい
て、演算部84はi=i−1をセットする。ステップ1
810において、演算部84は、後で詳しく説明するよ
うにウィンドウbのk個のMSBをインデックスin
dとしてテーブルwをルックアップして、vにw[in
]を乗算する。ステップ1812において、演算部
84はiの値と値0とを比較してi=0かどうかを判定
する。i=0でないと判断された場合には、ステップ1
814において、演算部84は、k回の2乗(または後
で説明するk−h’回の2乗)によってvの2乗(ま
たは2k−h’)を生成する。ステップ1812におい
てi=0であると判断された場合には、ステップ181
6において、出力部86はv=a(mod n)を供
給する。ステップ1802、1804およびステップ1
806〜1514は同時に(並行して)または反復的に
実行されてもよい。
【0171】図46は、改良手法2による、LSBにS
を用いた場合の最初の3つのウィンドウの生成を示して
いる。最初のウィンドウbm−1において、k個のMS
Bは値d中のk個のMSBに一意的に決定され、s個の
LSBは値Sに決定される。中間データの取り得るパタ
ーンの数は2である。次のウィンドウbm−2におい
て、k個のMSBは値dの中の後続のk個のMSBとウ
ィンドウbm−1における値Sとから一意的に決定さ
れ、s個のLSBは値Sに決定される。中間データの取
り得るパターンの数は2である。次のウィンドウb
m−3において、k個のMSBは値dの中の後続のk個
のMSBとウィンドウbm−2における値Sとから一意
的に決定され、s個のLSBは値Sに決定される。中間
データの取り得るパターンの数は2である。3番目以
降のウィンドウも同様に生成される。dにおける最後に
残ったLSBのシーケンスは補正演算で用いられる。
【0172】sビットの同じ値Sの使用により、インデ
ックスindの必要な長さは、k+sビットのウィンド
ウに対してkビットとなり、テーブル・サイズは2
のwの値となる。その処理速度は、kビットの通常の非
オーバラップ・ウィンドウ法の従来のウィンドウ法とほ
ぼ同程度であり、非常に高速である。この手法では、同
じ値Sは乱数等によって生成される。この手法における
中間データの取り得るパターンの数はsビット値Sの可
能なパターンの数に依存する。従って、sの長さを充分
大きくすれば安全性がより高くなる。Sを長くしてもテ
ーブル・サイズは増加せず、処理速度も低下しない。テ
ーブルの作成は適当な方法で行えばよく、補正演算はウ
ィンドウ法やバイナリ・メソッド等の適当な方法で行え
ばよい。
【0173】図47は、改良手法2による本発明の第1
3の実施形態による、ウィンドウ生成部76において、
重なりビット長sを有するオーバラップ・ウィンドウb
m− ,bm−2,...bをこの順序で生成するた
めのフローチャートの一部を示している。図48は、図
47に従ったオーバラップ・ウィンドウの生成のための
演算を例示している。
【0174】図45におけるステップ1802の後の図
47のステップ1904において、生成部76は、初期
値としてのs個の0ビットをMSBとして含み値d中の
k個のMSBをLSBとして含む中間ウィンドウd’を
生成する。ステップ1906において、生成部76は、
初期値としてv=1、j=u−sとセットする。
【0175】ステップ1908において、生成部76
は、前の中間ウィンドウd’のs個のLSBをMSBと
して含み、値d中の後続のk個のMSBをLSBとして
含む新しい中間ウィンドウd’=(d’s−1,...
d’,dj−1,...d −k)を生成する。
【0176】ステップ1910において、演算部84
は、k回の2乗によってvの2乗を生成する。ステッ
プ1912において、演算部84は、中間ウィンドウ
d’のk個のMSBの値が0に等しいかどうかを判定す
る。それが0に等しいと判定された場合は、手順はステ
ップ1920に進む。それが0に等しくないと判定され
た場合は、手順はステップ1914に進む。
【0177】ステップ1914において、生成部76
は、中間ウィンドウd’から同じ値Sを減算して新しい
中間ウィンドウd’とする。減算前のd’のk個のMS
Bは1以上の値なので、減算において繰り下がりが生じ
ても、中間ウィンドウd’の値は正の値となる。ステッ
プ1916において、生成部76は、中間ウィンドウ
d’のk個のMSBをインデックスindとしてセット
するステップ1918において、演算部84は、vに
w[ind]を乗算する。
【0178】ステップ1912は、k個のMSBが1以上
になるまで、手順がステップ1914〜1918をスキ
ップするようにする。換言すれば、k個のMSBが0よ
り大きくない場合は、d’中のk個のMSBが0より大
きくなるまで順次d中の後続のk個のMSBをサーチす
る。
【0179】ステップ1920において、生成部76は
jをj−kとセットする。ステップ1922において、
生成部76は、jがk+s以上かどうかを判定する。j
がk+s以上であると判定された場合は、手順はステッ
プ1908に戻る。jがk+s以上でないと判定された
場合は、手順は図45のステップ1816に進む。ステ
ップ1816において、演算部84は補正演算を行う。
即ち、ウィンドウがもはや生成できなくなったときに
は、dの残りのビットに対して補正演算を行う。
【0180】図49は、改良手法2による本発明の第1
4の実施形態による、ウィンドウ生成部76において、
重なりビット長sを有するオーバラップ・ウィンドウb
,b,...bm−1をこの順序で生成するための
フローチャートの一部を示している。図50は、図49
に従ったオーバラップ・ウィンドウの生成のための演算
を例示している。
【0181】図45におけるステップ1802の後の図
49のステップ2004において、生成部76は、最初
に中間ウィンドウd’=d、中間インデックス・シーケ
ンスd’’=0、j=0、i=uとセットする。
【0182】ステップ2006において、生成部76
は、中間ウィンドウd’=d’−Sを計算し、この中間
ウィンドウd’のk個のLSBを追加的なMSBとして
有するシーケンスd’’=(d’k−1
d’k−2,...d’,d’’j−1,d’’
j−2,...d’’)を生成する。その追加的なk
ビット・ストリング(d’k−1,d’k−2,...
d’)はインデックスindである。最初のs個の
LSBのシーケンスseqは補正用のシーケンスであ
る。ステップ2008において、生成部76は、中間ウ
ィンドウd’を2で除算し、即ちk個のLSBを切り
捨て、j=j+kおよびi=i−kとセットする。
【0183】ステップ2010において、生成部76
は、iがk+sより大きいかどうかを判定する。iがk
+sより大きいと判定された場合は、手順はステップ2
006に戻る。iがk+sより大きくないと判定された
場合は、手順はステップ2012に進む。ステップ20
12において、生成部76は、中間ウィンドウd’のs
個のLSBを切り捨てた値が0に等しいかどうかを判定
する。その値が0に等しいと判定された場合は、生成部
76は、ステップ2016においてj=j+sとセット
してステップ2022に進む。その値が0に等しくない
と判定された場合は、生成部76は、ステップ2018
においてj=j+s+kとセットしてステップ2020
に進み、そこでステップ2006における場合のように
d’=d’−Sを計算し、シーケンスd’’=(d’
k−1,d’k−2,...d’,d’’j−1
d’’j−2,...d’’)を生成する。その後、
手順はステップ2022に進む。
【0184】ステップ2022において、d’の残りの
ビットをMSBとして含むシーケンスd’’=d’||
(d’’j−1,d’’j−2,...d’’)を生
成する。ステップ2024において、生成部76は、シ
ーケンスd’’から、最初のs個のLSBを除外して、
k個のLSBをインデックスindとして順次取り出
して、m個のインデックスind,ind,...
indm−1を生成する。最初のs個のLSBのシーケ
ンスseqは補正演算において用いられる。次いで、
手順は図45のステップ1806へ進む。
【0185】図51は、改良手法2による本発明の第1
5の実施形態による、ウィンドウ生成部76において、
重なりビット長sを有するオーバラップ・ウィンドウb
m− ,bm−2,...bをこの順序で生成するた
めのフローチャートの一部を示している。図52は、図
51に従ったオーバラップ・ウィンドウの生成のための
演算を例示している。
【0186】ステップ2106において、生成部76
は、m個のS値のsビット・ストリングをMSB位置か
らkビットごとに配置して加算した乱数シーケンスR=
(S<<(u−(k+s)))+(S<<(u−(2k
+s)))+...(S<<k)+Sを生成する。ここ
で、m=floor((u−s)/k)とする。
【0187】ステップ2108において、生成部76
は、中間ウィンドウd’=d−Rを計算する。ステップ
2110において、生成部76は、インデックスind
=(d’u−i×k−1
d’u−i×k−2,...d’u−i×k−k)をi
=0,1,...m−1(j=m−1−i)の順序で生
成する。中間ウィンドウd’の長さがuビット未満のと
きはMSB位置に0ビットを埋めてuビットにする。次
いで、手順は図45のステップ1806に進む。
【0188】図53は、改良手法2による本発明の第1
6の実施形態による、ウィンドウ生成部76において、
重なりビット長h’+sを有するオーバラップ・ウィン
ドウbm−1,bm−2,...bをこの順序で生成
するためのフローチャートの一部を示している。この実
施形態は、第1の実施形態と第15の実施形態とを組み
合わせたものである。図54は、図53に従ったオーバ
ラップ・ウィンドウの生成のための演算を例示してい
る。
【0189】図45におけるステップ1802の後の図
53のステップ2206において、生成部76は、m個
のS値のsビット・ストリングをMSB位置からk−
h’ビットごとに配置して加算した乱数シーケンスR=
(S<<(u−(k+s)))+(S<<(u−(k+
s)−(k−h’)))+(S<<(u−(k+s)−
2(k−h’)))+...(S<<(k−h’))+
Sを生成する。ここで、m=floor((u−s−
h’)/(k−h’))とする。図54において、h’
=1である。
【0190】ステップ2208において、生成部76
は、中間ウィンドウd’=d−Rを計算する。最初の乱
数値rm−1=r
floor((u−s−h’)/(k−h’ ))−1
初期値0にセットする。ステップ2210において、生
成部76は、i=floor((u−s−h’)/(k
−h’))とセットする。ステップ2212において、
生成部76はi=i−1とセットする。
【0191】ステップ2214において、生成部76
は、乱数に従ってkビットのインデックスind
(indi,k−1,indi,k−2,...ind
i,0)を生成する。インデックスind中のh’個
のLSBを乱数rに従って生成し、そのh’個のMS
Bとインデックスindi+1のh’個のLSBの和が
d’中の対応するh’個のビット・ストリングの値にな
るように、そのh’個のMSBを決定し、中央のk−2
h’ビットはd’中の対応するビットを取り出してコピ
ーする。
【0192】ステップ2216において、生成部76
は、i=0かどうかを判定する。i=0と判定された場
合には手順はステップ2218に進む。i=0と判定さ
れなかった場合には手順はステップ2212に戻る。
【0193】ステップ2218において、演算部84
は、v=1、i=floor((u−s)/(k−
h’))とセットする。ステップ2220〜2226は
図45のステップ1806〜1814と同様である。ス
テップ2226において、演算部84は、k−h’回の
2乗によってvのまたは2k−h’を生成する。その
後、手順は図45のステップ1516へ進む。
【0194】図55は、次に説明する改良手法3におい
て用いられる、複数のウィンドウのそれぞれの複数の部
分に同じ値Sを用いるオーバラップ・ウィンドウ法によ
る暗号処理装置164の概略的構成を示している。暗号
処理装置164は、図7の暗号処理装置60と同様に、
値a、dおよびnまたは値Aおよびdを入力して供給す
る入力部72と、乱数発生器74と、乱数発生器74か
らの乱数に従って値dからオーバラップ・ウィンドウb
m−1,bm−2,...bおよび重なり長h
m−1 (mod s+1),h
m−2 (mod s+1),...hm−
(s+1) (mod s+1)を生成するウィンドウ
および重なり長生成部77と、生成部77からのウィン
ドウおよび重なり長を格納するメモリ78と、入力部7
2からの値aおよびnまたは値Aからkビットのウィン
ドウbに対するテーブルwまたはWを生成するテーブ
ル生成部80と、テーブル・メモリ82と、メモリ78
からのウィンドウおよび重なり長に従ってテーブル・メ
モリ82中のテーブルwまたはWをルックアップして等
式v=a(mod n)またはV=dAを演算するウ
ィンドウ法演算部84と、値vまたはVを出力する出力
部86とを含んでいる。
【0195】図56は、後で説明する改良手法3におい
て用いられる、複数のウィンドウのそれぞれの複数の部
分に同じ値Sを用いるオーバラップ・ウィンドウ法によ
る逐次または反復処理型の暗号処理装置166の概略的
構成を示している。暗号処理装置166は、乱数発生器
74からの乱数に従って値dからオーバラップ・ウィン
ドウbおよび重なり長hi (mod s+1)を順
次生成するウィンドウおよび重なり長生成部77と、生
成部77からのウィンドウおよび重なり長に従ってテー
ブル・メモリ82中のテーブルwまたはWをルックアッ
プして等式v=a(mod n)またはV=dAを演
算するウィンドウ法演算部84と、を含んでいる。暗号
処理装置166は、さらに、図54の暗号処理装置60
と同様に、入力部72と、乱数発生器74と、テーブル
生成部80と、テーブル・メモリ82と、出力部86と
を含んでいる。
【0196】図55および56の暗号化装置164およ
び166は、さらに、プロセッサ62と、ROMのよう
なプログラム・メモリ64とを含んでいる。プロセッサ
62は、メモリ64に格納されているプログラムに従っ
てこれらの要素72〜86を制御する。代替構成とし
て、プロセッサ62は、要素72〜86に対応する機能
を実現するメモリ64中のプログラムを実行することに
よって要素72〜86を実現してもよい。この場合、図
55および56はフロー図として見ることができる。
【0197】改良手法3 オーバラップ・ウィンドウに
おいて値dからの複数のtビット値の間に同じs×tビ
ット値Sを配置する手法図57、58および59は、本
発明による、オーバラップ・ウィンドウbにおいて値
dから取り出されたc個の位置のtビット値の間にs×
tビットの長さの同じ値Sを配置する手法を説明するの
に役立つ。図57、58および59を参照すると、この
手法では、オーバラップ・ウィンドウbの長さkはk
=c×t+s×(c−1)×t=s×c×t−s×t+
c×tビットである(c、sおよびtは正の整数)。図
57においてt=1およびs=1であり、図58におい
てt=1およびs=2であり、図59においてt=2お
よびs=2である。
【0198】値dに対する、最初のs+1個のウィンド
ウbm−1,...bm−(s+1 のそれぞれの先頭
位置は、値dにおける対応する1番目...s+1番目
のMSBを基準として、値dに対して、対応するc個の
乱数r,...r(0≦r≦c−1)に従って決
定された値H=(c−r−1)×tビット分だけ上
位のビット位置に位置する。最初のウィンドウbm−1
は、そのウィンドウの先頭ビット位置が、dにおける基
準位置としてのMSB(=du−1)より乱数r(0
≦r≦c−1)に従うH=(c−r−1)×tビ
ット分だけ上位のビット位置に配置される。次のウィン
ドウbm−2は、そのウィンドウの先頭ビット位置が、
dにおける基準位置としての次のMSB(=du−2
より乱数r(0≦r≦c−1)に従うH=(c−
−1)×tビット分だけ上位のビット位置に配置さ
れる。s=2以上の場合、さらに次のウィンドウb
m−3は、そのウィンドウの先頭ビット位置が、dにお
ける基準位置としての次のMSB(=du−3)より乱
数r(0≦r≦c−1)に従うH=(c−r
1)×tビット分だけ上位のビット位置に配置される。
【0199】ウィンドウbは、s×tビットおきのそ
のMSBおよびLSBを含むc個のtビット位置に(陰
影が付けられたビット位置に)、値d中のkビット・シ
ーケンスにおける対応するビット位置におけるtビット
値を含むようになっている。ウィンドウbは、c個の
tビット値の間のそれぞれの連続するtビット幅のs個
の位置に(陰影のないビット位置)、同じtビット値S
を挿入される。この値Sは、好ましくは0であり、即ち
c個のビットの間の全てのtビット幅のs個の位置にビ
ット値0が挿入される。
【0200】後続のウィンドウbi−1は、前のウィン
ドウbのc個のtビット値で捕捉されなかったその間
にある連続するs×tビットの位置における他のtビッ
ト値を捕捉するように決定される。さらに後続のウィン
ドウbi−2は、前のウィンドウbおよびbi−1
それぞれのc個のtビット値で捕捉されなかったその間
にある連続するs×tビットの位置における他のtビッ
ト値を捕捉するように決定される。
【0201】このようにして、最初のウィンドウb
m−1とs+1個毎(s個おき)の後続のウィンドウb
m−1,bm−1−(s+1),b
m−1−2(s+1),...とは系列0のウィンドウ
のグループを形成する。最初のウィンドウbm−1とs
+1個毎(s個おき)の後続のウィンドウbm−1,b
m−1−(s+1),bm−1−2(s+1),...
とは系列0のウィンドウのグループを形成する。2番目
のウィンドウbm−2とs+1個毎(s個おき)の後続
のウィンドウb m−2,bm−2−(s+1),b
m−2−2(s+1),...とは系列1のウィンドウ
のグループを形成する。s=2以上の場合、3番目のウ
ィンドウb −3とs+1個毎(s個おき)の後続のウ
ィンドウbm−3,bm−3−(s+ 1),b
m−3−2(s+1),...とは系列2のウィンドウ
のグループを形成する。このようにして、互いにずれて
配置されるs+1系列のウィンドウが形成される。いず
れのウィンドウにも捕捉されなかった残りのビットのシ
ーケンスseqは、補正演算において用いられる。テ
ーブル・ルックアップの開始位置は、s+1個の系列ご
とに乱数r,...rによって決定する。
【0202】隣接するウィンドウbi+1とbの重な
り長hは、h=k−|H(m−
1)−i (mod s+1)−H
(m−1)−(i+1) (mod s+1 +t|で
表される。c個のtビット値=(x1,x2,...x
c)(xi=tビット値(i=1,2,...c)、0
≦xi<2)とすると、インデックスind=(x1
<<(c−1)×t)+(x2<<(c−2)×t)
+...+xcであり、値w[ind]=a
x1<<((c−1)×t+s×t×(c−
1))+x2<<((c−2)×t+s×t+s×t×
(c−2)+...+x (mod n)となる。a
(mod n)は、次のように表される。
【数11】
【0203】図60は、本発明による、オーバラップ・
ウィンドウbの値dからの複数のtビット値の間に同
じs×tビット値Sを配置する手法を用いた指数剰余演
算の概略的なフロー図を示している。この手法は、RS
A暗号処理と楕円曲線暗号処理の双方に適用できる。
【0204】次に、図60のフロー図を説明する。ステ
ップ2301において、入力部72は値a、dおよびn
を入力して、dをウィンドウ生成部77に供給し、aお
よびnまたはAをテーブル生成部80に供給する。ステ
ップ2302において、生成部80は、値w[ind]
=w[x1<<(c−1)×t+x2<<(c−2)×
t+...+xc]=a
x1<<((c−1)×t+s×t×(c−1))+
x2<<((c−2)×t+s×t+s×t×(c−2
)+...+xc(mod n)を計算してテーブルを
生成する。ステップ2304において、生成部77は、
インデックスindm−1,indm−2,...in
を生成する。ステップ2306において、演算部8
4は、値dに対応するMSBの位置から順次、一連のウ
ィンドウに対して、現在のウィンドウにおける隣接のウ
ィンドウの前までのビット数分だけテーブルをルックア
ップしてウィンドウ法演算v=v×w[ind](m
od n)およびvの2乗を順次行う。ステップ23
08において、v=a(mod n)を出力する。
【0205】必要なインデックスindの長さは、k
ビット・ウィンドウbに対してc×t=k−(c−
1)×s×tビットである。テーブルwにおける値w
[ind ]の数は2c×t=2
k−(c−1)×s×t個となる。値Sは、固定値、好
ましくは0であるが、各値dごとに乱数rに従って発
生してもよい。値Sが乱数rに従う値であるときは、
値dのビット・シーケンスから全てのウィンドウの対応
する位置に配置された値S(即ち乱数シーケンスR)を
減算した値d’を値dの代わりに用いる。その処理速度
は、非オーバラップ・ウィンド法の従来のウィンドウ法
とほぼ同程度であり、非常に高速である。
【0206】図61は、所与の値dに対する、各系列に
対する各ウィンドウの取り得るパターンの数を示してい
る。この手法において、乱数によってウィンドウの位置
がいったん決定すれば、各ウィンドウの値は一意的に決
定される。従って、所与の値dに対して、各ウィンドウ
の取り得るパターンの数は、乱数r(0≦r≦c−
1)による取り得る位置のパターンの数cによって決定
される。各系列の全てのウィンドウに対する中間データ
の取り得るパターンの数はcである。同じ系列の2巡目
以降のウィンドウの位置は、1巡目で決定されたウィン
ドウの位置で一意的に決定される。一般的には、中間デ
ータの取り得るパターンの数はcs+1である。例え
ば、図61に示された値d(11110...1
1)、t=1、s=1、c=3に対して、系列0のウ
ィンドウの取り得る位置の数はc=3であり、系列0の
最初のウィンドウbm−1の取り得る値は(0000
1)、(00101)および(10100)であり、系
列1のウィンドウの取り得る位置の数はc=3であり、
系列1の最初のウィンドウbm−2の取り得る値は(0
0001)、(00100)および(10001)であ
る。この場合、2つの系列のウィンドウに対する中間デ
ータの取り得るパターンの数はc=3=9である。
3つの系列のウィンドウに対する中間データの取り得る
パターンの数はcである。 改良手法3の中間データ
の取り得るパターンの数は、各系列のテーブル・ルック
アップ開始位置の取り得る各ウィンドウの取り得るパタ
ーンの数cを増大させてもテーブル・サイズは増加せ
ず、処理速度も低下しない。従って、効率よく安全性を
高めることができる。
【0207】図62は、改良手法3による本発明の第1
7の実施形態による、ウィンドウ生成部77および演算
部84において、オーバラップ・ウィンドウのインデッ
クスindm−1,indm−2,...indをこ
の順序で生成するためのフローチャートの一部を示して
いる。図57、58および59は、図62に従ったオー
バラップ・ウィンドウの生成のための演算を例示しても
いる。
【0208】図60のステップ2302の後の図62の
ステップ2404において、生成部77は、乱数発生器
74に、0≦r≦c−1(j=0,1,...s)を
満たすs+1個の乱数rを生成させる。
【0209】ステップ2406において、演算部84は
v=1をセットする。ステップ2408〜2428にお
いて、値dのuビット・シーケンスをt個のMSBずつ
順次チェックして、生成部は77および演算部84は、
それが或るウィンドウbのt個のLSBの位置に対応
するときは値dから取り出されたそのウィンドウのc個
のtビット値を含むインデックスindを生成して、そ
のインデックスを用いたテーブル・ルックアップによる
w[ind]の乗算と累乗とを行って、v=a(m
od n)を求める。
【0210】ステップ2408において、演算部84は
j=0をセットする。ステップ2410において、演算
部84はv=v2∧t(mod n)を計算する。ステ
ップ2412において、演算部84はu=u−tとセッ
トし、値dのuビット・シーケンスにおける処理位置を
t個のMSBずつシフトする。それによって、後続のス
テップ2414〜2428において値dのuビット・シ
ーケンスがt個のMSBずつ順次処理される。ステップ
2414において、演算部84はr=0かどうかを判
定する。r=0と判定された場合は、値dにおけるビ
ットdをLSBとする現在のtビット値が系列jのウ
ィンドウに対するインデックスindを生成する位置で
あることを示しており、手順はステップ2416に進
む。r=0でないと判定された場合は、ステップ24
20において、r=r−1(mod c)をセット
する。
【0211】ステップ2416において、生成部77
は、ウィンドウbで捕捉されるs×tビットおきの値
dのc個のtビット値を含むインデックスind
(x1<<(c−1)×t+x2<<(c−2)×t
+...+xc)=(du+(c−
1)×(s+1)×t+(t−1),d
u+(c−1)×(s+1)×t+(t −2),...
u+(c−1)×(s+1)×t,d
u+(c−2)×(s+ 1)×t+(t−1),...
)を生成する。ステップ2418において、演算部
84はv=v×w[ind](mod n)を計算す
る。ステップ2420において、r=r−1(mo
d c)をセットする。
【0212】ステップ2422において、演算部84は
u≦s+1であるかどうかを判定する。u≦s+1であ
ると判定された場合は、ステップ2428において演算
部84は補正演算を行う。u≦s+1ではないと判定さ
れた場合は、ステップ2424において、演算部84は
j=j+1をセットして、次の系列に対する処理の用意
をする。ステップ2426において、演算部84はj=
s+1になったかどうかを判定する。ステップ2426
においてj=s+1と判定された場合は、ステップ24
08においてj=0とセットして系列0に戻る。j=s
+1でない判定された場合は、手順はステップ2410
に進んで、次の系列についてステップ2410〜242
4を継続する。ステップ2428の後、手順は図60の
ステップ2308に進む。
【0213】表1は、テーブル・サイズが等しいときの
各ウィンドウ法の安全性と処理速度の比較を示してい
る。ウィンドウの長さをkビット、ウィンドウの重なり
ビット長をhビット、秘密鍵をd、同じ値Sのビットの
長さをs、改良手法3のdに関連するビット数をcとす
る。
【0214】
【表3】
【0215】従来のウィンドウ法は、乱数を全く使用せ
ず、所与の値dに対して中間データの取り得るパターン
の数は1であり、従ってDPAに対して弱い。一方、実
施形態1〜10のオーバラップ・ウィンドウ法では、乱
数を使用して中間データのパターンの数を増加させてい
るのでDPAに対して安全である。しかし、その中間デ
ータのパターンの数は重なりビット長さhに依存するの
で、長さhを大きくするためにはウィンドウの長さkを
大きくする必要があり、それによってテーブル・サイズ
が増加する。
【0216】改良手法1では、中間データの取り得るパ
ターンの数は重なりビット長さhおよび同じ値Sのビッ
トの長さsに依存している。従って、sを大きくすれば
安全性が向上する。Sの幅sを大きくしてもテーブル・
サイズは増加せず、処理速度も低下しない。従って、効
率よく安全性を高めることができる。
【0217】改良手法2では、中間データの取り得るパ
ターンの数はSの長さsのみに依存している。sを大き
くすれば安全性が高くなる。sを大きくしてもテーブル
・サイズは増加せず、処理速度も低下しないので、効率
よく安全性を高めることができる。第13〜第15の実
施形態では、一般的なウィンドウ法とほぼ同等の処理速
度で処理できる。第15の実施形態では、速度が幾分低
下するが、第1〜第10の実施形態のオーバラップ・ウ
ィンドウ法よりは高速である。
【0218】改良手法3では、中間データの取り得るパ
ターン数はsとcのみに依存している。従って、この値
sとcを大きくすれば安全性が高くなる。sを大きくし
てもテーブル・サイズは増加せず、処理速度も低下しな
いので、効率よく安全性を高めることができる。
【0219】以上説明した実施形態は典型例として挙げ
たに過ぎず、その変形およびバリエーションは当業者に
とって明らかであり、当業者であれば本発明の原理およ
び請求の範囲に記載した発明の範囲を逸脱することなく
上述の実施形態の種々の変形を行えることは明らかであ
る。
【0220】(付記1) 秘密鍵を用いて公開鍵暗号処
理を行う暗号装置であって、乱数に従って、前記公開鍵
暗号のための或る値dを表す複数uビット・シーケンス
から複数m個のウィンドウ・シーケンスを導出する手段
を具え、前記m個のウィンドウ・シーケンスのビット総
数は前記uビット・シーケンスのビット数uより多く、
各ウィンドウ・シーケンスのビット数はuより少なく、
前記m個のウィンドウ・シーケンスの中の2つうちの一
方のウィンドウ・シーケンスにおける或るビット位置と
他方のウィンドウ・シーケンスにおける或るビット位置
とが、前記uビット・シーケンスにおける同じビット位
置に関係付けられるものであり、さらに、前記導出され
たm個のウィンドウ・シーケンスと前記公開鍵暗号のた
めの別の或る値とに従って演算を行って、処理済みデー
タを生成する演算手段を具える、暗号装置。 (付記2) 前記公開鍵暗号処理は指数剰余演算であ
り、前記別の値をaとし、nを正の整数としたとき、前
記処理済みデータvはv=a(mod n)で与えら
れ、前記演算手段は、前記導出されたm個のウィンドウ
・シーケンスb’sの各々に従って、乗算と2乗算と
を実行するものである、付記1に記載の暗号装置。 (付記3) 前記公開鍵暗号処理は点のスカラー倍算で
あり、前記処理済みデータはベクトルVであり、前記値
dはスカラーであり、前記別の値はベクトルAであり、
前記処理済みデータVはV=dAで与えられ、前記演算
手段は、前記導出されたm個のウィンドウ・シーケンス
’sの各々に従って、加算、減算および2倍算とを
実行するものである、付記1に記載の暗号装置。 (付記4) 前記m個のウィンドウ・シーケンスb
sの各々は0≦b<2 (kは正の整数)の範囲の値
を有するものである、付記1に記載の暗号装置。 (付記5) 前記m個のウィンドウ・シーケンスb
sの各々は−2<b<2(kは正の整数)の範囲
の値を有するものである、付記1に記載の暗号装置。 (付記6) 前記一方のウィンドウ・シーケンスにおけ
る整数h個のLSB位置と前記他方のウィンドウ・シー
ケンスにおけるh個のMSB位置とが、前記uビット・
シーケンスにおけるh個のビット位置に関係付けられる
ものである、付記1に記載の暗号装置。 (付記7) 前記導出手段は、少なくとも前記uビット
・シーケンスから前記h個のLSBsまたはMSBsを
導出するものである、付記6に記載の暗号装置。 (付記8) 前記hの値は可変であり、前記導出手段は
乱数に従って前記hの値を生成するものである、付記6
に記載の暗号装置。 (付記9) 前記導出手段は、乱数に従ってウィンドウ
・シーケンスbを生成し、中間シーケンスwtから
前記ウィンドウ・シーケンスbを減算することによっ
て導出された値をMSBsとして含み、かつ前記uビッ
ト・シーケンスの中のk−hビットをLSBsとして含
む次の中間シーケンスwti−1を生成するものであ
る、付記1に記載の暗号装置。 (付記10) 前記ウィンドウ・シーケンスbがma
x(0,wt−2+1)≦b≦wtを満たす、
付記9に記載の暗号装置。 (付記11) 前記ウィンドウ・シーケンスbがwt
−2<b<min(2,wt+2)(kは
正の整数)を満たす、付記9に記載の暗号装置。 (付記12) 前記導出手段は、乱数に従って生成され
た整数h個のMSBsを含み、かつ中間シーケンスdt
の(k−h)個のLSBsをLSBsとして含むkビ
ットのウィンドウ・シーケンスb(kは正の整数)を
生成し、前記中間シーケンスdtから前記ウィンドウ
・シーケンスbを減算しおよび(k−h)個のLSB
sを切り捨てることによって導出される次の中間シーケ
ンスdti+1を生成するものである、付記1に記載の
暗号装置。 (付記13) 前記導出手段は、乱数に従って生成され
た整数h個のMSBsを含み、かつ中間シーケンスwt
モジュロ2(k−h)の値を(k−h)個のLSBs
として含むkビットのウィンドウ・シーケンスb(k
は正の整数)を生成し、前記h個のMSBsの値wl
を前記中間シーケンスwtの中のh個のMSBsの値
から減算することによって導出された値をLSBsとし
て含み、かつ前記uビット・シーケンスの中のk−hビ
ットをMSBsとして含む次の中間シーケンスwt
i+1を生成するものである、付記1に記載の暗号装
置。 (付記14) 前記導出手段は、乱数に従って複数g個
のuビット・シーケンスfを生成し、ここで前記g個
のuビット・シーケンスの値の総和は前記値dを表し、
前記g個のuビット・シーケンスの中のそれぞれ対応す
る位置にある(k−h)個のビットの値の総和を表すk
ビットのウィンドウ・シーケンスb(kは正の整数)
を、生成するものである、付記1に記載の暗号装置。 (付記15) 前記導出手段は、乱数に従って複数g個
のuビット・シーケンスfを生成し、ここで、前記g
個のuビット・シーケンスの値の総和は前記値dモジュ
ロφ(φを法とするd)を表し、φは整数であり、前記
g個のuビット・シーケンスの中のそれぞれ対応する位
置にある(k−h)個のビットの値の総和を表すkビッ
トのウィンドウ・シーケンスb(kは正の整数)を、
生成するものである、付記1に記載の暗号装置。 (付記16) 前記m個のウィンドウ・シーケンスの中
の1つのウィンドウ・シーケンスにおける所定の位置の
ビットは他のウィンドウ・シーケンスの対応する所定の
位置のビットと同じ値を有するものである、付記1に記
載の暗号装置。 (付記17) 情報処理装置において使用するための、
秘密鍵を用いて公開鍵暗号処理を行う記憶媒体に格納さ
れたプログラムであって乱数に従って、前記公開鍵暗号
のための或る値dを表す複数uビット・シーケンスから
複数m個のウィンドウ・シーケンスを導出するステップ
を実行させ、前記m個のウィンドウ・シーケンスのビッ
ト総数は前記uビット・シーケンスのビット数より多
く、各ウィンドウ・シーケンスのビット数はuより少な
く、前記m個のウィンドウ・シーケンスの中の2つうち
の一方のウィンドウ・シーケンスにおける或るビット位
置と他方のウィンドウ・シーケンスにおける或るビット
位置とが、前記uビット・シーケンスにおける同じビッ
ト位置に関係付けられるものであり、さらに、前記導出
されたm個のウィンドウ・シーケンスと前記公開鍵暗号
のための別の或る値とに従って演算を行って、処理済み
データを生成するステップを実行させるよう動作可能な
プログラム。 (付記18) 前記公開鍵暗号処理は指数剰余演算であ
り、前記別の値をaとし、nを正の整数としたとき、前
記処理済みデータvはv=a(mod n)で与えら
れ、前記演算を行うステップは、前記導出されたm個の
ウィンドウ・シーケンスb ’sの各々に従って、乗算
と2乗算とを実行することを含むものである、付記17
に記載のプログラム。 (付記19) 前記公開鍵暗号処理は点のスカラー倍算
であり、前記処理済みデータはベクトルVであり、前記
値dはスカラーであり、前記別の値はベクトルAであ
り、前記処理済みデータVはV=dAで与えられ、前記
演算を行うステップは、前記導出されたm個のウィンド
ウ・シーケンスb ’sの各々に従って、加算、減算お
よび2倍算とを実行することを含むものである、付記1
7に記載のプログラム。 (付記20) 前記一方のウィンドウ・シーケンスにお
ける整数h個のLSB位置と前記他方のウィンドウ・シ
ーケンスにおけるh個のMSB位置とが、前記uビット
・シーケンスにおけるh個のビット位置に関係付けられ
るものであり、前記導出するステップは、少なくとも前
記uビット・シーケンスから前記h個のLSBsまたは
MSBsを導出することを含むものである、付記17に
記載のプログラム。 (付記21) 前記一方のウィンドウ・シーケンスにお
ける整数h個のLSB位置と前記他方のウィンドウ・シ
ーケンスにおけるh個のMSB位置とが、前記uビット
・シーケンスにおけるh個のビット位置に関係付けられ
るものであり、前記hの値は変数であり、前記導出する
ステップは、乱数に従って前記hの値を生成することを
含むものである、付記17に記載のプログラム。 (付記22) 前記導出するステップは、乱数に従って
ウィンドウ・シーケンスbを生成するステップと、中
間シーケンスwtから前記ウィンドウ・シーケンスb
を減算することによって導出された値をMSBsとし
て含み、かつ前記uビット・シーケンスの中のk−hビ
ットをLSBsとして含む次の中間シーケンスwt
i−1を生成するステップと、を含むものである、付記
17に記載のプログラム。 (付記23) 前記導出するステップは、乱数に従って
生成された整数h個のMSBsを含み、かつ中間シーケ
ンスdt の(k−h)個のLSBsをLSBsとして
含むkビットのウィンドウ・シーケンスb(kは正の
整数)を生成するステップと、前記中間シーケンスdt
から前記ウィンドウ・シーケンスbを減算し、(k
−h)個のLSBsを切り捨てることによって導出され
る次の中間シーケンスdti+1を生成するステップ
と、を含むものである、付記17に記載のプログラム。 (付記24) 前記導出するステップは、乱数に従って
生成された整数h個のMSBsを含み、かつ中間シーケ
ンスwt モジュロ2(k−h)の値を(k−h)個の
LSBsとして含むkビットのウィンドウ・シーケンス
(kは正の整数)を生成するステップと、前記h個
のMSBsの値wlを前記中間シーケンスwtの中
のh個のMSBsの値から減算することによって導出さ
れた値をLSBsとして含み、かつ前記uビット・シー
ケンスの中のk−hビットをMSBsとして含む次の中
間シーケンスwti+1を生成するステップと、を含む
ものである、付記17に記載のプログラム。 (付記25) 前記導出するステップは、乱数に従って
複数g個のuビット・シーケンスfを生成ステップ
と、ここで前記g個のuビット・シーケンスの値の総和
は前記値dを表し、前記g個のuビット・シーケンスの
中のそれぞれ対応する位置にある(k−h)個のビット
の値の総和を表すkビットのウィンドウ・シーケンスb
(kは正の整数)を、生成するステップと、を含むも
のである、付記17に記載のプログラム。 (付記26) 前記導出するステップは、乱数に従って
複数g個のuビット・シーケンスfを生成するステッ
プと、ここで、前記g個のuビット・シーケンスの値の
総和は前記値dのモジュロφを表し、φは整数であり、
前記g個のuビット・シーケンスの中のそれぞれ対応す
る位置にある(k−h)個のビットの値の総和を表すk
ビットのウィンドウ・シーケンスb(kは正の整数)
を、生成するステップと、を含むものである、付記17
に記載のプログラム。 (付記27) 前記m個のウィンドウ・シーケンスの中
の1つのウィンドウ・シーケンスにおける所定の位置の
ビットは他のウィンドウ・シーケンスの対応する所定の
位置のビットと同じ値を有するものである、付記17に
記載のプログラム。 (付記28) 情報処理装置において秘密鍵を用いて公
開鍵暗号処理を行う方法であって、乱数に従って、前記
公開鍵暗号のための或る値dを表す複数uビット・シー
ケンスから複数m個のウィンドウ・シーケンスを導出す
るステップを含み、前記m個のウィンドウ・シーケンス
のビット総数は前記uビット・シーケンスのビット数よ
り多く、各ウィンドウ・シーケンスのビット数はuより
少なく、前記m個のウィンドウ・シーケンスの中の2つ
うちの一方のウィンドウ・シーケンスにおける或るビッ
ト位置と他方のウィンドウ・シーケンスにおける或るビ
ット位置とが、前記uビット・シーケンスにおける同じ
ビット位置に関係付けられるものであり、さらに、前記
導出されたm個のウィンドウ・シーケンスと前記公開鍵
暗号のための別の或る値とに従って演算を行って、処理
済みデータを生成するステップを含む、方法。 (付記29) 前記一方のウィンドウ・シーケンスにお
ける整数h個のLSB位置(hは整数)と前記他方のウ
ィンドウ・シーケンスにおけるh個のMSB位置とが、
前記uビット・シーケンスにおけるh個のビット位置に
関係付けられるものであり、前記導出するステップは、
少なくとも前記uビット・シーケンスから前記h個のL
SBsまたはMSBsを導出することを含むものであ
る、付記28に記載の方法。 (付記30) 前記m個のウィンドウ・シーケンスの中
の1つのウィンドウ・シーケンスにおける所定の位置の
ビットは他のウィンドウ・シーケンスの対応する所定の
位置のビットと同じ値を有するものである、付記28に
記載のプログラム。 (付記31) 秘密鍵を用いて公開鍵暗号処理を行う暗
号装置であって、前記公開鍵暗号のための或る値dを表
す複数uビット・シーケンスから複数m個のウィンドウ
・シーケンスを導出する手段を具え、前記m個のウィン
ドウ・シーケンスのビット総数は前記uビット・シーケ
ンスのビット数uより多く、各ウィンドウ・シーケンス
のビット数はuより少なく、前記m個のウィンドウ・シ
ーケンスの中の2つうちの一方のウィンドウ・シーケン
スにおける或るビット位置と他方のウィンドウ・シーケ
ンスにおける或るビット位置とが、前記uビット・シー
ケンスにおける同じビット位置に関係付けられるもので
あり、前記m個のウィンドウ・シーケンスの中の1つの
ウィンドウ・シーケンスにおける所定の位置のビット
は、他のウィンドウ・シーケンスの対応する所定の位置
のビットと同じ値を有するものであり、さらに、前記導
出されたm個のウィンドウ・シーケンスと前記公開鍵暗
号のための別の或る値とに従って演算を行って、処理済
みデータを生成する演算手段を具える、暗号装置。 (付記32) さらに、前記ウィンドウ・シーケンスの
ビット数から前記同じ値のビット数を減算したビット数
を有する取り得るシーケンスをインデックスとして有
し、前記インデックスに対応付けられる前記ウィンドウ
・シーケンスの取り得るシーケンスに従って計算された
エントリ値を有するルックアップ・テーブルを生成する
手段を具える、付記31に記載の暗号装置。 (付記33) 前記演算手段は、前記導出されたウィン
ドウ・シーケンスの前記同じ値の所定のビット以外のビ
ットのシーケンスをインデックスとして用いて、テーブ
ルをルックアップすることによって、前記演算を行うも
のである、付記31に記載の暗号装置。 (付記34) 前記公開鍵暗号処理は指数剰余演算であ
り、前記別の値をaとし、nを正の整数としたとき、前
記処理済みデータvはv=a(mod n)で与えら
れ、前記演算手段は、前記導出されたm個のウィンドウ
・シーケンスb’sの各々の前記同じ値の所定のビッ
ト以外のビットのシーケンスをインデックスとして用い
てテーブルをルックアップすることによって、乗算と2
乗算とを実行するものである、付記31に記載の暗号装
置。 (付記35) 前記公開鍵暗号処理は点のスカラー倍算
であり、前記処理済みデータはベクトルVであり、前記
値dはスカラーであり、前記別の値はベクトルAであ
り、前記処理済みデータVはV=dAで与えられ、前記
演算手段は、前記導出されたm個のウィンドウ・シーケ
ンスb’sの各々の前記同じ値の所定のビット以外の
ビットのシーケンスをインデックスとして用いてテーブ
ルをルックアップすることによって、加算、減算および
2倍算とを実行するものである、付記31に記載の暗号
装置。 (付記36) 前記導出されたm個のウィンドウ・シー
ケンスはそれぞれの対応する所定のMSB位置に同じ値
を有するものである、付記31に記載の暗号装置。 (付記37) 前記導出されたm個のウィンドウ・シー
ケンスはそれぞれの対応する所定のLSB位置に同じ値
を有するものである、付記31に記載の暗号装置。 (付記38) 前記導出されたm個のウィンドウ・シー
ケンスは、それぞれのMSBおよびLSBを除くそれぞ
れの対応する所定の中間のビット位置に同じ値を有する
ものである、付記31に記載の暗号装置。(付記39)
前記m個のウィンドウ・シーケンスの中のs+1個の
ウィンドウ・シーケンスの各々はc×t+s×(c−
1)×tビットのシーケンスであり(c、sおよびtは
正の整数)、s×tビットの間隔でc個の位置に前記u
ビット・シーケンスからのtビット値を有し、各s×t
ビットのストリングはs個のtビットの同じ値を連結し
たものである、付記31に記載の暗号装置。 (付記40) 前記uビット・シーケンスに対する前記
m個のウィンドウ・シーケンスは複数のグループのウィ
ンドウ・シーケンスを含み、各グループのウィンドウ・
シーケンスの相対的位置が1つの乱数に従って決定さ
れ、前記m個のウィンドウ・シーケンスにおけるそれぞ
れの対応する所定のビット位置が前記uビット・シーケ
ンスの相異なるビット位置に関係付けられものである、
付記31に記載の暗号装置。 (付記41) 前記同じ値が前記或る値dに関係なく固
定値である、付記31に記載の暗号装置。 (付記42) 前記同じ値が前記或る値dに対して1つ
の乱数に従って生成されるものである、付記31に記載
の暗号装置。 (付記43) 前記導出する手段は、前記uビット・シ
ーケンスから、前記uビット・シーケンスにおける関係
付けられた所定のビット位置に配置される前記ウィンド
ウ・シーケンスの前記同じ値を減算して別のシーケンス
を生成し、前記別のシーケンスから前記ウィンドウ・シ
ーケンスを導出するものである、付記31に記載の暗号
装置。 (付記44) 前記導出する手段は、前記uビット・シ
ーケンスから、前記uビット・シーケンスにおける関係
付けられる所定の位置に配置される前記m個のウィンド
ウ・シーケンスの前記同じ値を減算して別のシーケンス
を生成し、前記別のシーケンスから前記m個のウィンド
ウ・シーケンスを導出するものである、付記31に記載
の暗号装置。 (付記45) 前記導出する手段は、前記m個のウィン
ドウ・シーケンスにおける前記同じ値の前記所定のビッ
ト位置以外の位置のビットの値を乱数に従って順次生成
するものである、付記31に記載の暗号装置。 (付記46) 前記導出する手段は、前記m個のウィン
ドウ・シーケンスにおける前記同じ値の前記所定のビッ
ト位置以外の位置のビットの値を複数の乱数に従って一
度に生成するものである、付記31に記載の暗号装置。 (付記47) 前記演算手段は補正演算を行うものであ
る、付記31に記載の暗号装置。 (付記48) 情報処理装置において使用するための、
秘密鍵を用いて公開鍵暗号処理を行う記憶媒体に格納さ
れたプログラムであって、前記公開鍵暗号のための或る
値dを表す複数uビット・シーケンスから複数m個のウ
ィンドウ・シーケンスを導出するステップを実行させ、
前記m個のウィンドウ・シーケンスのビット総数は前記
uビット・シーケンスのビット数uより多く、各ウィン
ドウ・シーケンスのビット数はuより少なく、前記m個
のウィンドウ・シーケンスの中の2つうちの一方のウィ
ンドウ・シーケンスにおける或るビット位置と他方のウ
ィンドウ・シーケンスにおける或るビット位置とが、前
記uビット・シーケンスにおける同じビット位置に関係
付けられるものであり、前記m個のウィンドウ・シーケ
ンスの中の1つのウィンドウ・シーケンスにおける所定
の位置のビットは、他のウィンドウ・シーケンスの対応
する所定の位置のビットと同じ値を有するものであり、
さらに、前記導出されたm個のウィンドウ・シーケンス
と前記公開鍵暗号のための別の或る値とに従って演算を
行って、処理済みデータを生成するステップを実行させ
るよう動作可能なプログラム。 (付記49) さらに、前記ウィンドウ・シーケンスの
ビット数から前記同じ値のビット数を減算したビット数
を有する取り得るシーケンスをインデックスとして有
し、前記インデックスに対応付けられる前記ウィンドウ
・シーケンスの取り得るシーケンスに従って計算された
エントリ値を有するルックアップ・テーブルを生成する
ステップを実行させるよう動作可能な付記48に記載の
プログラム。 (付記50) 前記演算を行うステップは、前記導出さ
れたウィンドウ・シーケンスの前記同じ値の所定のビッ
ト以外のビットのシーケンスをインデックスとして用い
て、テーブルをルックアップすることによって、前記演
算を行うことを含むものである、付記48に記載のプロ
グラム。 (付記51) 前記導出するステップは、前記uビット
・シーケンスから、前記uビット・シーケンスにおける
対応する所定の位置に配置された前記ウィンドウ・シー
ケンスの前記同じ値を減算して別のシーケンスを生成
し、前記別のシーケンスから前記ウィンドウ・シーケン
スを導出することを含むものである、付記48に記載の
プログラム。 (付記52) 前記導出するステップは、前記uビット
・シーケンスから、前記uビット・シーケンスにおける
対応する所定の位置に配置された前記m個のウィンドウ
・シーケンスの前記同じ値を減算して別のシーケンスを
生成し、前記別のシーケンスから前記m個のウィンドウ
・シーケンスを導出することを含むものである、付記4
8に記載のプログラム。 (付記53) 前記導出するステップは、前記m個のウ
ィンドウ・シーケンスにおける前記同じ値のビット以外
のビットの値を乱数に従って順次生成することを含むも
のである、付記48に記載のプログラム。 (付記54) 前記導出するステップは、前記m個のウ
ィンドウ・シーケンスにおける前記同じ値のビット以外
の或る同じ位置のビットの値を複数の乱数に従って一度
に生成することを含むものである、付記48に記載のプ
ログラム。 (付記55) 情報処理装置において秘密鍵を用いて公
開鍵暗号処理を行う方法であって、前記公開鍵暗号のた
めの或る値dを表す複数uビット・シーケンスから複数
m個のウィンドウ・シーケンスを導出するステップを実
行させ、前記m個のウィンドウ・シーケンスのビット総
数は前記uビット・シーケンスのビット数uより多く、
各ウィンドウ・シーケンスのビット数はuより少なく、
前記m個のウィンドウ・シーケンスの中の2つうちの一
方のウィンドウ・シーケンスにおける或るビット位置と
他方のウィンドウ・シーケンスにおける或るビット位置
とが、前記uビット・シーケンスにおける同じビット位
置に関係付けられるものであり、前記m個のウィンドウ
・シーケンスの中の1つのウィンドウ・シーケンスにお
ける所定の位置のビットは、他のウィンドウ・シーケン
スの対応する所定の位置のビットと同じ値を有するもの
であり、さらに、前記導出されたm個のウィンドウ・シ
ーケンスと前記公開鍵暗号のための別の或る値とに従っ
て演算を行って、処理済みデータを生成するステップを
含む、方法。 (付記56) さらに、前記ウィンドウ・シーケンスの
ビット数から前記同じ値のビット数を減算したビット数
を有する取り得るシーケンスをインデックスとして有
し、前記インデックスに対応付けられる前記ウィンドウ
・シーケンスの取り得るシーケンスに従って計算された
エントリ値を有するルックアップ・テーブルを生成する
ステップを含む、付記55に記載の方法。 (付記57) 前記演算を行うステップは、前記導出さ
れたウィンドウ・シーケンスの前記同じ値の所定のビッ
ト以外のビットのシーケンスをインデックスとして用い
て、テーブルをルックアップすることによって、前記演
算を行うことを含むものである、付記55に記載の方
法。 (付記58) 前記導出するステップは、前記uビット
・シーケンスから、前記uビット・シーケンスにおける
対応する所定の位置に配置された前記ウィンドウ・シー
ケンスの前記同じ値を減算して別のシーケンスを生成
し、前記別のシーケンスから前記ウィンドウ・シーケン
スを導出するステップを含むものである、付記55に記
載の方法。 (付記59) 前記導出するステップは、前記m個のウ
ィンドウ・シーケンスにおける前記同じ値のビット以外
のビットの値を乱数に従って順次生成することを含むも
のである、付記55に記載の方法。
【0221】
【発明の効果】本発明は、上述の特徴によって、秘密鍵
の推定を困難にし、暗号処理の安全性を高めることがで
き、効率的な耐タンパ性の指数剰余演算および点のスカ
ラー倍算を実現できる、という効果を奏する。
【図面の簡単な説明】
【図1】図1は、暗号デバイスにおける秘密鍵を用いた
暗号処理を例示している。
【図2】図2は、ウィンドウ法を用いてv=a(mo
d n)を求める指数剰余演算のアルゴリズムを示して
いる。
【図3】図3は、ウィンドウ法を用いた点のスカラー倍
算V=dAのアルゴリズムを示している。
【図4】図4は、図2のアルゴリズムによる演算の手順
を説明するのに役立つ。
【図5】図5Aは時間に対する消費電力の曲線を示して
いる。図5Bは、スパイクを有する、時間に対する電力
差分の曲線を示している。図5Cは、時間に対する電力
差分の平坦な曲線を示している。
【図6】図6は、分割指数法を用いたv=a(mod
n)を求めるためのアルゴリズムを示している。
【図7】図7は、本発明による暗号処理装置の概略的構
成を示している。
【図8】図8は、本発明によるオーバラップ・ウィンド
ウの生成の仕方を示している。
【図9】図9は、本発明による、乱数に従ったオーバラ
ップ・ウィンドウにおける重なりビットの値の決定の仕
方を示している。
【図10】図10は、本発明による、隣接するウィンド
ウに固定された重なりビット長を有するオーバラップ・
ウィンドウ法を用いた指数剰余演算のフロー図を示して
いる。
【図11】図11は、本発明による、隣接するウィンド
ウに可変な重なりビット長を有するオーバラップ・ウィ
ンドウ法を用いた指数剰余演算のフロー図を示してい
る。
【図12】図12は、本発明による、隣接するウィンド
ウに固定された重なりビット長を有するオーバラップ・
ウィンドウ法を用いたスカラー倍算のフロー図を示して
いる。
【図13】図13は、本発明による、隣接するウィンド
ウに可変な重なりビット長を有するオーバラップ・ウィ
ンドウ法を用いたスカラー倍算のフロー図を示してい
る。
【図14】図14は、本発明の第1の実施形態による、
重なりビット長を有するオーバラップ・ウィンドウを重
み(上位から下位)の順に生成するためのフローチャー
トを示している。
【図15】図15は、図14に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図16】図16は、本発明の第2の実施形態による、
可変な重なりビット長を有するオーバラップ・ウィンド
ウを重みの順に生成するためのフローチャートを示して
いる。
【図17】図17は、図16に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図18】図18は、本発明の第3の実施形態による、
重なりビット長を有するオーバラップ・ウィンドウを重
みの逆の順に生成するためのフローチャートを示してい
る。
【図19】図19は、図18に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図20】図20は、本発明の第4の実施形態による、
可変な重なりビット長を有するオーバラップ・ウィンド
ウを重みの逆の順に生成するためのフローチャートを示
している。
【図21】図21は、図20に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図22】図22は、本発明の第5の実施形態による、
重なりビット長を有するオーバラップ・ウィンドウを重
みの順に生成するためのフローチャートを示している。
【図23】図23は、図22に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図24】図24は、本発明の第6の実施形態による、
可変な重なりビット長を有するオーバラップ・ウィンド
ウを重みの順に生成するためのフローチャートを示して
いる。
【図25】図25は、図24に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図26】図26は、本発明の第7の実施形態による、
重なりビット長を有するオーバラップ・ウィンドウを重
みの逆の順に生成するためのフローチャートを示してい
る。
【図27】図26は、図25に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図28】図28は、本発明の第8の実施形態による、
可変な重なりビット長を有するオーバラップ・ウィンド
ウを重みの逆の順に生成するためのフローチャートを示
している。
【図29】図29は、図28に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図30】図30は、本発明の第9の実施形態による、
重なりビット長を有するオーバラップ・ウィンドウを順
に生成するためのフローチャートを示している。
【図31】図31は、図30に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図32】図32は、本発明の第10の実施形態によ
る、重なりビット長を有するオーバラップ・ウィンドウ
を順に生成するためのフローチャートを示している。
【図33】図33は、図32に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図34】図34Aおよび34Bは、本発明による、複
数のウィンドウのそれぞれの一部について所定の同じ値
または乱数に従って生成された同じ値を用いるオーバラ
ップ・ウィンドウ法の原理を説明するのに役立つ。
【図35】図35は、改良手法1および2において用い
られる、複数のウィンドウのそれぞれの一部に同じ値を
用いるオーバラップ・ウィンドウ法による暗号処理装置
の概略的構成を示している。
【図36】図36は、改良手法1および2において用い
られる、複数のウィンドウのそれぞれの一部に同じ値を
用いるオーバラップ・ウィンドウ法による逐次または反
復処理型の暗号処理装置の概略的構成を示している。
【図37】図37は、本発明による、オーバラップ・ウ
ィンドウの中央位置に同じ値を設定する手法を説明する
のに役立つ。
【図38】図38は、本発明による、オーバラップ・ウ
ィンドウの中央位置に同じ値を用いる手法を用いた指数
剰余演算の概略的なフロー図を示している。
【図39】図39は、改良手法1による最初の3つのウ
ィンドウの生成の例を示している。
【図40】図40は、改良手法1による本発明の第11
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの逆
の順に生成するためのフローチャートの一部を示してい
る。
【図41】図41は、図40に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図42】図42は、改良手法1による本発明の第12
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの順
に生成するためのフローチャートの一部を示している。
【図43】図43は、図42に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図44】図44は、本発明による、オーバラップ・ウ
ィンドウのLSBまたはMSBとして同じ値を用いる手
法を説明するのに役立つ。
【図45】図45は、本発明による、オーバラップ・ウ
ィンドウのLSBまたはMSBのストリングに同じ値を
用いる手法を用いた指数剰余演算の概略的なフロー図を
示している。
【図46】図46は、改良手法2による最初の3つのウ
ィンドウの生成を示している。
【図47】図47は、改良手法2による本発明の第13
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの順
に生成するためのフローチャートの一部を示している。
【図48】図48は、図47に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図49】図49は、改良手法2による本発明の第14
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの逆
の順に生成するためのフローチャートの一部を示してい
る。
【図50】図50は、図49に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図51】図51は、改良手法2による本発明の第15
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの逆
の順に生成するためのフローチャートの一部を示してい
る。
【図52】図52は、図51に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図53】図53は、改良手法2による本発明の第16
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの順
に生成するためのフローチャートの一部を示している。
【図54】図54は、図53に従ったオーバラップ・ウ
ィンドウの生成のための演算を例示している。
【図55】図55は、改良手法3において用いられる、
複数のウィンドウのそれぞれの複数の部分に同じ値を用
いるオーバラップ・ウィンドウ法による暗号処理装置の
概略的構成を示している。
【図56】図56は、改良手法3において用いられる、
複数のウィンドウのそれぞれの複数の部分に同じ値を用
いるオーバラップ・ウィンドウ法による逐次または反復
処理型の暗号処理装置の概略的構成を示している。
【図57】図57、58および59は、本発明による、
オーバラップ・ウィンドウにおいて複数の位置の値の間
に同じ値を配置する手法を説明するのに役立つ。
【図58】図57、58および59は、本発明による、
オーバラップ・ウィンドウにおいて複数の位置の値の間
に同じ値を配置する手法を説明するのに役立つ。
【図59】図57、58および59は、本発明による、
オーバラップ・ウィンドウにおいて複数の位置の値の間
に同じ値を配置する手法を説明するのに役立つ。
【図60】図60は、本発明による、オーバラップ・ウ
ィンドウの値dからの複数の値の間に同じ値を配置する
手法を用いた指数剰余演算の概略的なフロー図を示して
いる。
【図61】図61は、各系列に対する各ウィンドウの取
り得るパターンの数を示している。
【図62】図62は、改良手法3による本発明の第17
の実施形態による、ウィンドウ生成部および演算部にお
いて、オーバラップ・ウィンドウのインデックスを重み
の順に生成するためのフローチャートの一部を示してい
る。
【符号の説明】 60 暗号処理装置 72 入力部 74 乱数発生器 75 ウィンドウおよび重なり長生成部 78 メモリ 80 テーブル生成部 82 テーブル・メモリ 84 ウィンドウ法演算部 86 出力部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 武仲 正彦 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 鳥居 直哉 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5J104 AA18 AA22 AA43 AA47 JA21 JA25 JA28 NA02 NA18 NA20 NA35 NA42

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 秘密鍵を用いて公開鍵暗号処理を行う暗
    号装置であって、 乱数に従って、前記公開鍵暗号のための或る値dを表す
    複数uビット・シーケンスから複数m個のウィンドウ・
    シーケンスを導出する手段を具え、 前記m個のウィンドウ・シーケンスのビット総数は前記
    uビット・シーケンスのビット数uより多く、各ウィン
    ドウ・シーケンスのビット数はuより少なく、前記m個
    のウィンドウ・シーケンスの中の2つうちの一方のウィ
    ンドウ・シーケンスにおける或るビット位置と他方のウ
    ィンドウ・シーケンスにおける或るビット位置とが、前
    記uビット・シーケンスにおける同じビット位置に関係
    付けられるものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
    と前記公開鍵暗号のための別の或る値とに従って演算を
    行って、処理済みデータを生成する演算手段を具える、
    暗号装置。
  2. 【請求項2】 前記一方のウィンドウ・シーケンスにお
    ける整数h個のLSB位置と前記他方のウィンドウ・シ
    ーケンスにおけるh個のMSB位置とが、前記uビット
    ・シーケンスにおけるh個のビット位置に関係付けられ
    るものである、請求項1に記載の暗号装置。
  3. 【請求項3】 情報処理装置において使用するための、
    秘密鍵を用いて公開鍵暗号処理を行うプログラムであっ
    て、 乱数に従って、前記公開鍵暗号のための或る値dを表す
    複数uビット・シーケンスから複数m個のウィンドウ・
    シーケンスを導出するステップを実行させ、 前記m個のウィンドウ・シーケンスのビット総数は前記
    uビット・シーケンスのビット数より多く、各ウィンド
    ウ・シーケンスのビット数はuより少なく、前記m個の
    ウィンドウ・シーケンスの中の2つうちの一方のウィン
    ドウ・シーケンスにおける或るビット位置と他方のウィ
    ンドウ・シーケンスにおける或るビット位置とが、前記
    uビット・シーケンスにおける同じビット位置に関係付
    けられるものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
    と前記公開鍵暗号のための別の或る値とに従って演算を
    行って、処理済みデータを生成するステップを実行させ
    るよう動作可能なプログラム。
  4. 【請求項4】 情報処理装置において秘密鍵を用いて公
    開鍵暗号処理を行う方法であって、 乱数に従って、前記公開鍵暗号のための或る値dを表す
    複数uビット・シーケンスから複数m個のウィンドウ・
    シーケンスを導出するステップを含み、 前記m個のウィンドウ・シーケンスのビット総数は前記
    uビット・シーケンスのビット数より多く、各ウィンド
    ウ・シーケンスのビット数はuより少なく、前記m個の
    ウィンドウ・シーケンスの中の2つうちの一方のウィン
    ドウ・シーケンスにおける或るビット位置と他方のウィ
    ンドウ・シーケンスにおける或るビット位置とが、前記
    uビット・シーケンスにおける同じビット位置に関係付
    けられるものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
    と前記公開鍵暗号のための別の或る値とに従って演算を
    行って、処理済みデータを生成するステップを含む、方
    法。
  5. 【請求項5】 秘密鍵を用いて公開鍵暗号処理を行う暗
    号装置であって、 前記公開鍵暗号のための或る値dを表す複数uビット・
    シーケンスから複数m個のウィンドウ・シーケンスを導
    出する手段を具え、 前記m個のウィンドウ・シーケンスのビット総数は前記
    uビット・シーケンスのビット数uより多く、各ウィン
    ドウ・シーケンスのビット数はuより少なく、前記m個
    のウィンドウ・シーケンスの中の2つうちの一方のウィ
    ンドウ・シーケンスにおける或るビット位置と他方のウ
    ィンドウ・シーケンスにおける或るビット位置とが、前
    記uビット・シーケンスにおける同じビット位置に関係
    付けられるものであり、 前記m個のウィンドウ・シーケンスの中の1つのウィン
    ドウ・シーケンスにおける所定の位置のビットは、他の
    ウィンドウ・シーケンスの対応する所定の位置のビット
    と同じ値を有するものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
    と前記公開鍵暗号のための別の或る値とに従って演算を
    行って、処理済みデータを生成する演算手段を具える、
    暗号装置。
  6. 【請求項6】 さらに、前記ウィンドウ・シーケンスの
    ビット数から前記同じ値のビット数を減算したビット数
    を有する取り得るシーケンスをインデックスとして有
    し、前記インデックスに対応付けられる前記ウィンドウ
    ・シーケンスの取り得るシーケンスに従って計算された
    エントリ値を有するルックアップ・テーブルを生成する
    手段を具える、請求項5に記載の暗号装置。
  7. 【請求項7】 前記演算手段は、前記導出されたウィン
    ドウ・シーケンスの前記同じ値の所定のビット以外のビ
    ットのシーケンスをインデックスとして用いて、テーブ
    ルをルックアップすることによって、前記演算を行うも
    のである、請求項5に記載の暗号装置。
  8. 【請求項8】 前記導出する手段は、前記uビット・シ
    ーケンスから、前記uビット・シーケンスにおける対応
    する所定の位置に配置された前記ウィンドウ・シーケン
    スの前記同じ値を減算して別のシーケンスを生成し、前
    記別のシーケンスから前記ウィンドウ・シーケンスを導
    出するものである、請求項5に記載の暗号装置。
  9. 【請求項9】 情報処理装置において使用するための、
    秘密鍵を用いて公開鍵暗号処理を行うプログラムであっ
    て、 前記公開鍵暗号のための或る値dを表す複数uビット・
    シーケンスから複数m個のウィンドウ・シーケンスを導
    出するステップを実行させ、 前記m個のウィンドウ・シーケンスのビット総数は前記
    uビット・シーケンスのビット数uより多く、各ウィン
    ドウ・シーケンスのビット数はuより少なく、前記m個
    のウィンドウ・シーケンスの中の2つうちの一方のウィ
    ンドウ・シーケンスにおける或るビット位置と他方のウ
    ィンドウ・シーケンスにおける或るビット位置とが、前
    記uビット・シーケンスにおける同じビット位置に関係
    付けられるものであり、 前記m個のウィンドウ・シーケンスの中の1つのウィン
    ドウ・シーケンスにおける所定の位置のビットは、他の
    ウィンドウ・シーケンスの対応する所定の位置のビット
    と同じ値を有するものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
    と前記公開鍵暗号のための別の或る値とに従って演算を
    行って、処理済みデータを生成するステップを実行させ
    るよう動作可能なプログラム。
  10. 【請求項10】 情報処理装置において秘密鍵を用いて
    公開鍵暗号処理を行う方法であって、 前記公開鍵暗号のための或る値dを表す複数uビット・
    シーケンスから複数m個のウィンドウ・シーケンスを導
    出するステップを実行させ、 前記m個のウィンドウ・シーケンスのビット総数は前記
    uビット・シーケンスのビット数uより多く、各ウィン
    ドウ・シーケンスのビット数はuより少なく、前記m個
    のウィンドウ・シーケンスの中の2つうちの一方のウィ
    ンドウ・シーケンスにおける或るビット位置と他方のウ
    ィンドウ・シーケンスにおける或るビット位置とが、前
    記uビット・シーケンスにおける同じビット位置に関係
    付けられるものであり、 前記m個のウィンドウ・シーケンスの中の1つのウィン
    ドウ・シーケンスにおける所定の位置のビットは、他の
    ウィンドウ・シーケンスの対応する所定の位置のビット
    と同じ値を有するものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
    と前記公開鍵暗号のための別の或る値とに従って演算を
    行って、処理済みデータを生成するステップを含む、方
    法。
JP2002201785A 2001-12-04 2002-07-10 秘密鍵を用いた耐タンパ暗号処理 Expired - Fee Related JP4108391B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002201785A JP4108391B2 (ja) 2001-12-04 2002-07-10 秘密鍵を用いた耐タンパ暗号処理

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001370583 2001-12-04
JP2001-370583 2001-12-04
JP2002201785A JP4108391B2 (ja) 2001-12-04 2002-07-10 秘密鍵を用いた耐タンパ暗号処理

Publications (2)

Publication Number Publication Date
JP2003233307A true JP2003233307A (ja) 2003-08-22
JP4108391B2 JP4108391B2 (ja) 2008-06-25

Family

ID=27790477

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002201785A Expired - Fee Related JP4108391B2 (ja) 2001-12-04 2002-07-10 秘密鍵を用いた耐タンパ暗号処理

Country Status (1)

Country Link
JP (1) JP4108391B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006118092A1 (ja) * 2005-04-27 2006-11-09 Matsushita Electric Industrial Co., Ltd. 情報セキュリティ装置及び楕円曲線演算装置
WO2009118795A1 (ja) * 2008-03-28 2009-10-01 富士通株式会社 サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
WO2009122461A1 (ja) * 2008-03-31 2009-10-08 富士通株式会社 電力解析攻撃への対策機能を備えた暗号化方法
JP2010008883A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 暗号用演算装置、暗号用演算方法及びプログラム
WO2012090288A1 (ja) * 2010-12-27 2012-07-05 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム
KR101194837B1 (ko) 2005-07-12 2012-10-25 삼성전자주식회사 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
JP5327380B2 (ja) * 2010-03-31 2013-10-30 富士通株式会社 暗号処理装置および暗号処理方法
US9130745B2 (en) 2010-12-27 2015-09-08 Fujitsu Limited Encryption processing device and method

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7940927B2 (en) 2005-04-27 2011-05-10 Panasonic Corporation Information security device and elliptic curve operating device
WO2006118092A1 (ja) * 2005-04-27 2006-11-09 Matsushita Electric Industrial Co., Ltd. 情報セキュリティ装置及び楕円曲線演算装置
JP4825199B2 (ja) * 2005-04-27 2011-11-30 パナソニック株式会社 情報セキュリティ装置及び楕円曲線演算装置
KR101194837B1 (ko) 2005-07-12 2012-10-25 삼성전자주식회사 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
US8638927B2 (en) 2008-03-28 2014-01-28 Fujitsu Limited Cryptographic processing method, computer readable storage medium, and cryptographic processing device
JP5182364B2 (ja) * 2008-03-28 2013-04-17 富士通株式会社 サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
WO2009118795A1 (ja) * 2008-03-28 2009-10-01 富士通株式会社 サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
JP5365624B2 (ja) * 2008-03-31 2013-12-11 富士通株式会社 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置
WO2009122461A1 (ja) * 2008-03-31 2009-10-08 富士通株式会社 電力解析攻撃への対策機能を備えた暗号化方法
US20110013770A1 (en) * 2008-03-31 2011-01-20 Fujitsu Limited Encrypting method having countermeasure function against power analyzing attacks
US8817973B2 (en) * 2008-03-31 2014-08-26 Fujitsu Limited Encrypting method having countermeasure function against power analyzing attacks
JP2010008883A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 暗号用演算装置、暗号用演算方法及びプログラム
JP5327380B2 (ja) * 2010-03-31 2013-10-30 富士通株式会社 暗号処理装置および暗号処理方法
US8891759B2 (en) 2010-03-31 2014-11-18 Fujitsu Limited Cryptographic processing device and cryptographic processing method
WO2012090288A1 (ja) * 2010-12-27 2012-07-05 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム
JP5488718B2 (ja) * 2010-12-27 2014-05-14 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム
US9130745B2 (en) 2010-12-27 2015-09-08 Fujitsu Limited Encryption processing device and method
US9401805B2 (en) 2010-12-27 2016-07-26 Fujitsu Limited Encrypting device, encrypting method, and recording medium
US9749135B2 (en) 2010-12-27 2017-08-29 Fujitsu Limited Encrypting device, encrypting method, and recording medium

Also Published As

Publication number Publication date
JP4108391B2 (ja) 2008-06-25

Similar Documents

Publication Publication Date Title
JP4789468B2 (ja) 秘密鍵を用いた耐タンパ楕円曲線暗号処理
JP4632950B2 (ja) 個人鍵を用いた耐タンパ暗号処理
US8402287B2 (en) Protection against side channel attacks
CN101213513B (zh) 保护数据处理装置免受密码攻击或分析的设备和方法
US8265267B2 (en) Information security device
US10374790B2 (en) Countermeasure method for an electronic component implementing an elliptic curve cryptography algorithm
US20100287384A1 (en) Arrangement for and method of protecting a data processing device against an attack or analysis
JP4977300B2 (ja) 暗号法及び装置
US7555122B2 (en) Method for elliptic curve point multiplication
Schinianakis et al. Residue number systems in cryptography: Design, challenges, robustness
JP2012239171A (ja) サイドチャンネル攻撃に対する抵抗力のあるモジュラー累乗法及び装置
Paar Implementation of cryptographic schemes 1
JP2003233307A (ja) 秘密鍵を用いた耐タンパ暗号処理
KR20040067779A (ko) 정보 처리방법
KR100737667B1 (ko) 암호 체계의 개인 키 저장 및 복원 방법과 장치
US7120660B2 (en) Method of and apparatus for modular multiplication
JP4351987B2 (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
JP2011512556A (ja) 楕円曲線上の多数の点を計算する装置及び方法
US7558817B2 (en) Apparatus and method for calculating a result of a modular multiplication
Tenca et al. An efficient and scalable radix-4 modular multiplier design using recoding techniques
Yin et al. A randomized binary modular exponentiation based RSA algorithm against the comparative power analysis
KR101990861B1 (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
KR20120015590A (ko) Rsa 서명 방법 및 장치
JP2003216026A (ja) 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム
JP2010008883A (ja) 暗号用演算装置、暗号用演算方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080402

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

Free format text: PAYMENT UNTIL: 20110411

Year of fee payment: 3

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120411

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130411

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140411

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees