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
Links
Abstract
のスカラー倍算を実現する。 【解決手段】 暗号装置(60)は、秘密鍵を用いて公
開鍵暗号処理を行う。暗号装置は、乱数(74)に従っ
て、値dを表すuビット・シーケンスからm個のウィン
ドウ・シーケンス(bm−1,...b0)を導出する
手段(75)と、その導出されたm個のウィンドウ・シ
ーケンスとその公開鍵暗号のための別の値(aおよび
n、またはA)とに従って演算を行って、処理済みデー
タを生成する演算手段(84)と、を具えている。その
m個のウィンドウ・シーケンスの中の2つうちの一方の
ウィンドウ・シーケンスにおける或るビット位置と他方
のウィンドウ・シーケンスにおける或るビット位置と
が、そのuビット・シーケンスにおける同じビット位置
に関係付けられる。
Description
関し、特に、RSAおよび楕円曲線暗号のような公開鍵
暗号のためのプロセッサにおけるSPAおよびDPAの
ような電力解析攻撃を防止する耐タンパ(tamper-proo
f)暗号化/復号に関する。
共通鍵暗号方式が含まれる。公開鍵暗号方式は、暗号化
と復号に異なる鍵(キー)を用いる。典型的には、公開
鍵を用いて平文(plaintext)が暗号化され、秘密鍵を
用いて暗号文(ciphertext)が復号され、それによって
暗号文が安全に送信できる。または、秘密鍵を用いて平
文が暗号化され、公開鍵を用いて暗号文が復号され、そ
れによって平文を暗号化したユーザが識別される。図1
は、スマートカードのような暗号デバイスにおける秘密
鍵を用いた暗号化/復号の構成の例を示している。図1
において、暗号デバイスは、その内部の暗号化/復号ユ
ニットにおいて周知の形態で秘密鍵を用いて入力平文/
暗号文メッセージを処理して出力暗号文/平文メッセー
ジを供給する。
号のためのプロセッサにおいては、指数剰余演算(modu
lar exponentiation)が行われる。指数剰余演算は、指
数d、平文/暗号文aおよび公開鍵nに対して、v=a
d(mod n)を満たす暗号文/平文vを生成する。
例えば、RSA暗号による署名生成において、暗号文v
=ad (mod n)が秘密鍵dを用いて指数剰余演算
で生成される。
指数剰余演算は、2進値dについて、MSB(最上位ビ
ット)からLSB(最下位ビット)まで順に2乗とaの
乗算を実行することによって、vを求める。例えば、d
=21=24+22+20=(10101)2について
vを求めるとき、最初のMSB“1”に対して初期値v
=1にaの乗算を実行してv=aを生成し、次のMSB
“0”に対してそのvに2乗(2で累乗)を実行してv
=a2を生成し、次のビット“1”に対してそのvに2
乗とaの乗算を実行してv=(a2)2×aを生成し、
次のMSB“0”に対してそのvに2乗を実行してv=
((a2)2×a)2を生成し、LSB“1”に対して
そのvに2乗とaの乗算を実行して、v=(((a2)
2×a) 2)2×a=a
(2∧4)+(2∧2)+(2∧0)を生成する。ここ
で、2∧k=2kである。
号のためのプロセッサにおいては、スカラー倍算が行わ
れる。点のスカラー倍算は、スカラー値d、および楕円
曲線上の点Aに対して、V=dAを満たす点Rを求め
る。例えば、楕円曲線暗号におけるDiffe-Hellman(デ
ィッフィー・ヘルマン)鍵配送において、V=dAで表
される点Rが秘密鍵dを用いてスカラー倍算で生成され
る。
(mod n)、2乗剰余c=a2および指数剰余c=
ax(mod n)は、楕円曲線暗号における点の加算
C=A+B、点の2倍算C=2Aおよび点のスカラー倍
算C=xAにそれぞれ対応する。
倍算は、2進値dについて、MSBからLSBまで順に
点の2倍算と点の加算を実行することによって、Vを求
める。例えばd=21=24+22+20=(1010
1)2について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=(24+22+20)Aを生成する。
法(window method)が知られている。ウィンドウ法
は、Alfred J. Menezes他の“HANDBOOK OF APPLIED CRY
PTOGRAPHY”(CRC press), pp. 615, Algorithm 14.82
に記載されている。
d(mod n)を求めるための指数剰余演算のアルゴ
リズムを示している。ここで、指数dは2進表現でd=
(du− 1,du−2,...d0)2と表記される。
そのアルゴリズムはC言語で記述されている。
曲線暗号における点のスカラー倍算にも用いられる。図
3は、ウィンドウ法を用いた点のスカラー倍算V=dA
のアルゴリズムを示している。
図2のアルゴリズムによる演算の手順を説明するのに役
立つ。まず、0<x<2kである全ての整数xに対し
て、w[x]=ax(mod n)を満たす値wのテー
ブルwを作成する。テーブルwの作成後、uビットの値
d=(du−1,du−2,...d0)2(ここで、
du−1,...d0は1ビット値)をkビット・シー
ケンスまたはストリングに分割し、m個のkビット・シ
ーケンスbi=(dik+k−1,
dik+k− 2,...dik)2(ここで、d
ik+k−1,...dikは1ビット値、i=0,
1,2,...)を生成する。ここで、m=ceili
ng(u/k)であり、関数ceiling(x)は変
数x以上の最小の整数を表す。この各b iに対する値w
[bi](=abi)をテーブルwでルックアップする
ことによる乗算v=v×w[bi]と、v=v
2∧k(mod n)で表される2k乗すなわち累乗とを、
上位シーケンスbm−1から下位シーケンスb0へ順に
実行することによって、v=ad(mod n)を求める。
<x<2kの全ての整数xに対して、W[x]=xAを
満たす値WのテーブルWを作成する。テーブルWの作成
後、uビットの値d=(du−1,du−2,...d
0)2を分割してm個のkビット・シーケンスbi=
(dik+k−1,...dik)2(i=0,1,
2,...)を生成する。ここで、m=ceiling
(u/k)。そのbiに対する値W[bi](=b
iA)をテーブルWでルックアップすることによる加算
V=V+W[bi]と、V=2kVで表される2k倍算
とを、上位シーケンスb m−1から下位シーケンスb0
へ順に実行することによって、V=dAを求める。
ックアップのインデックスとなるビット・シーケンスb
iをウィンドウまたはウィンドウ・シーケンスといい、
指数剰余演算と点のスカラー倍算の双方を公開鍵演算と
いう。
は、暗号文のような入手可能な情報から秘密鍵を含めた
秘密情報を推定する。暗号解読の1つである電力解析攻
撃が、1998年にPaul Kocher(ポール コーチャ)
によって考案された。この電力解析攻撃は、スマートカ
ードのような暗号デバイスに含まれる暗号プロセッサに
相異なる入力データを与え、例えば図1に示されている
ようにオシロスコープ等を用いてその処理中における時
間に対する消費電力の変化を測定し、統計的に充分な数
の消費電力変化の曲線を収集しそれを解析し、それによ
って暗号プロセッサ内部の鍵情報を推定する。これは、
公開鍵暗号と秘密鍵暗号の双方に適用できる。
SPAという)(Simple Power Analysis)および電力
差分攻撃(以下、DPAという)(Differential Power
Analysis)が含まれる。SPAは暗号プロセッサにお
ける1つの消費電力変化曲線の特徴から秘密鍵の推定を
行う。DPAは相異なる多数の消費電力変化曲線の差分
(以下、電力差分曲線という)を用いて解析することに
よって秘密鍵の推定を行う。一般的にはDPAの方が強
力である。
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に記載されている。
公開鍵暗号に対する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という)に記載されてい
る。
た暗号プロセッサにおいて、前述のMesserges99およ
びCoron99に記載されているDPAによって、秘密鍵
dが推定される。
号プロセッサ内の秘密鍵dを推定する方法を、図5A〜
5Cを参照して説明する。図5Aは時間に対する消費電
力の曲線を示している。図5Bは、スパイクを有する、
時間に対する電力差分曲線を示している。図5Cは、平
坦な、時間に対する電力差分曲線を示している。
5d4d3d2d1d0)2の場合、ウンドウb2 =
(d5d4)2, b1=(d3d2)2および b0=
(d1d 0)2が生成される。図2の計算による指数剰
余演算は、次のステップS1〜S5を実行してv=ad
(modn)を生成する。
S5が行われていることを攻撃者が知っているとき、次
のステップS11〜S14に従ったDPAによって、b
2,b2およびb1の値を、従ってdの値を推定でき
る。
i(i=1,2,...N)を供給し、演算ai d(m
od n)を実行させる。その実行中、全てのiについ
て、プロセッサの消費電力量P(ai,time)を測
定し、図5Aに例示された時間に対する消費電力の曲線
を得る。
と仮定する。b2=b2’が正しいと判定されてb2の
推定に成功するまで、次のステップS121およびS1
22を繰り返す。
に対して、仮定したb2’に従ってP(ai,tim
e)(i=1,2,...N)を次の2つの集合G1お
よびG 0に分ける。
(G1の平均電力)−(G0の平均電力) で表される
電力差分曲線Δを作成する。その曲線が図5Bのような
スパイクを有するとき、仮定b2=b2’が正しいと判
定する。その曲線が図5Cのような比較的平坦なときb
2≠b2’と判定する。
あると仮定する。b1=b1’が正しいと判定されてb
1の推定に成功するまで、次のステップS131および
S132を繰り返す。
に対して、確定したb2と仮定したb1’とに従ってP
(ai,time)(i=1,2,...N)を次の2
つの集合G1およびG0に分ける。
(G1の平均電力)−(G0の平均電力) で表される
電力差分曲線Δを作成する。その曲線が図5Bのような
スパイクを有するとき、仮定b1=b1’が正しいと判
定する。その曲線が図5Cのような比較的平坦なときb
1≠b1’と判定する。
あると仮定する。b0=b0’が正しいと判定されてb
0の推定に成功するまで、次のステップS141および
S142を繰り返す。
に対して、確定したb2およびb1と仮定したb0’と
からP(ai,time)(i=1,2,...N)を
次の2つの集合G1およびG0に分ける。
(G1の平均電力)−(G0の平均電力) で表される
電力差分曲線Δを作成する。その曲線が図5Bのような
スパイクを有するとき、仮定b0=b0’が正しいと判
定する。その曲線が図5Cのような比較的平坦なときb
0≠b0’と判定する。
暗号プロセッサに対しても適用できる。図2および3に
示されているようなウィンドウ法による暗号処理は、一
般的にSPAによる秘密鍵の推定に対して安全であるこ
とが知られている。
するために、乱数を用いて指数剰余演算および点のスカ
ラー倍算を行うことが知られている。それによって、攻
撃者がプロセッサ内の手順を知っていても、プロセッサ
内で発生した乱数により中間データが隠蔽されるので、
秘密鍵に対するDPAを防止することができる。乱数を
用いることによって、ウィンドウ法以外の方法による暗
号処理においても、秘密鍵に対するSPAを防止するこ
とができることが知られている。
の(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の素因数分解という、事実上実
行不可能な計算を行う必要があるので、φの値を用いた
方法を利用することはできない。
いて、dに対して公開鍵演算を行う代わりに、乱数rお
よびφから計算したd+rφに対して公開鍵演算を行う
方法。
算する前処理として、乱数rを用いて2次元座標の点A
を3次元座標の点A’に変換する方法。例えば、Jacobi
an座標を用いて3次元座標への変換を行うとき、A=
(x,y)に対して、乱数rを用いてA’=(x×
r2,y×r3,z×r)に従って変換する。
いて、乱数を用いてd=d1+d2+...+dMを満
たすdi(1≦i≦M)を生成した後、それぞれのdi
に対して、
×vM(mod n)またはV=V1+V2+...+
VMを生成する方法。
いて、d=d1×d2 (mod φ)を満たす乱数d
1およびd2を生成した後、
数rからa’=a×r(mod n),v’=a’
d(mod n)を計算した後、v=(v’)r
−d(mod n)=ad(mod n)を生成する方
法。
いる。
n Coron)
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)
ocher) − PCT国際公開第WO01/31436号(Louis
Goubin) − 欧州特許公開第EP1098471号A2(Singer
Ari)
ocher) − 米国特許第2001/0002486号A1(Paul
Kocher)
は、RSAと楕円曲線暗号の双方に適用可能であり、φ
が与えられないときにも適用可能なので、最も汎用性が
高いと考えられる。方法(3)は、M=2とした方法が
最も高速の処理を行う。ここで、M=2における方法
(3)は、最も優れた通常の方法であり、“分割指数
法”と呼ぶ。図6は、分割指数法を用いたv=ad(m
od n)を求めるためのアルゴリズムを示している。
ウ法は、SPAには強いがDPAには弱いという欠点が
ある。分割指数法は、SPAおよびDPAに強いが、v
=a d(mod n)を求めるために、図6に示されて
いるように、
処理速度が遅いという欠点がある。
難にし、暗号処理の安全性を高めることである。
ンパ性の指数剰余演算および点のスカラー倍算を実現す
ることである。
公開鍵暗号処理を行う暗号装置は、乱数に従って、その
公開鍵暗号のための或る値dを表す複数uビット・シー
ケンスから複数m個のウィンドウ・シーケンスを導出す
る手段を具えている。そのm個のウィンドウ・シーケン
スのビット総数はそのuビット・シーケンスのビット数
uより多い。各ウィンドウ・シーケンスのビット数はu
以下である。そのm個のウィンドウ・シーケンスの中の
2つうちの一方のウィンドウ・シーケンスにおける或る
ビット位置と他方のウィンドウ・シーケンスにおける或
るビット位置とが、そのuビット・シーケンスにおける
同じビット位置に関係付けられる。暗号装置は、さら
に、その導出されたm個のウィンドウ・シーケンスとそ
の公開鍵暗号のための別の或る値とに従って演算を行っ
て、処理済みデータを生成する演算手段を具えている。
る整数h個のLSB位置とその他方のウィンドウ・シー
ケンスにおけるh個のMSB位置とが、そのuビット・
シーケンスにおけるh個のビット位置に関係付けられ
る。
において使用するための、秘密鍵を用いて公開鍵暗号処
理を行うプログラム(これは記憶媒体に格納されていて
もよい)は、乱数に従って、その公開鍵暗号のための或
る値dを表す複数uビット・シーケンスから複数m個の
ウィンドウ・シーケンスを導出するステップと;その導
出されたm個のウィンドウ・シーケンスとその公開鍵暗
号のための別の或る値とに従って演算を行って、処理済
みデータを生成するステップと、を実行させるよう動作
可能である。
理装置において秘密鍵を用いて公開鍵暗号処理を行う方
法は、乱数に従って、その公開鍵暗号のための或る値d
を表す複数uビット・シーケンスから複数m個のウィン
ドウ・シーケンスを導出するステップと、その導出され
たm個のウィンドウ・シーケンスとその公開鍵暗号のた
めの別の或る値とに従って演算を行って、処理済みデー
タを生成するステップとを含んでいる。
を用いて公開鍵暗号処理を行う暗号装置は、その公開鍵
暗号のための或る値dを表す複数uビット・シーケンス
から複数m個のウィンドウ・シーケンスを導出する手段
を具えている。そのm個のウィンドウ・シーケンスのビ
ット総数はそのuビット・シーケンスのビット数uより
多い。各ウィンドウ・シーケンスのビット数はu以下で
ある。そのm個のウィンドウ・シーケンスの中の2つう
ちの一方のウィンドウ・シーケンスにおける或るビット
位置と他方のウィンドウ・シーケンスにおける或るビッ
ト位置とが、そのuビット・シーケンスにおける同じビ
ット位置に関係付けられる。そのm個のウィンドウ・シ
ーケンスの中の1つのウィンドウ・シーケンスにおける
所定の位置のビットは、他のウィンドウ・シーケンスの
対応する所定の位置のビットと同じ値を有する。暗号装
置は、さらに、その導出されたm個のウィンドウ・シー
ケンスとその公開鍵暗号のための別の或る値とに従って
演算を行って、処理済みデータを生成する演算手段を具
えている。
・シーケンスのビット数からその同じ値のビット数を減
算したビット数を有する取り得るシーケンスをインデッ
クスとして有し、そのインデックスに対応付けられるそ
のウィンドウ・シーケンスの取り得るシーケンスに従っ
て計算されたエントリ値を有するルックアップ・テーブ
ルを生成する手段を具える。
ウ・シーケンスのその同じ値の所定のビット以外のビッ
トのシーケンスをインデックスとして用いて、テーブル
をルックアップすることによって、その演算を行う。
ケンスから、そのuビット・シーケンスにおける対応す
る所定の位置に配置されたそのウィンドウ・シーケンス
のその同じ値を減算して別のシーケンスを生成し、その
別のシーケンスからそのウィンドウ・シーケンスを導出
する。
理装置において使用するための、秘密鍵を用いて公開鍵
暗号処理を行うプログラム(これは記憶媒体に格納され
ていてもよい)は、その公開鍵暗号のための或る値dを
表す複数uビット・シーケンスから複数m個のウィンド
ウ・シーケンスを導出するステップと、その導出された
m個のウィンドウ・シーケンスとその公開鍵暗号のため
の別の或る値とに従って演算を行って、処理済みデータ
を生成するステップと、を実行させるよう動作可能であ
る。そのm個のウィンドウ・シーケンスの中の1つのウ
ィンドウ・シーケンスにおける所定の位置のビットは、
他のウィンドウ・シーケンスの対応する所定の位置のビ
ットと同じ値を有する。
理装置において秘密鍵を用いて公開鍵暗号処理を行う方
法は、その公開鍵暗号のための或る値dを表す複数uビ
ット・シーケンスから複数m個のウィンドウ・シーケン
スを導出するステップと、その導出されたm個のウィン
ドウ・シーケンスとその公開鍵暗号のための別の或る値
とに従って演算を行って、処理済みデータを生成するス
テップとを含んでいる。そのm個のウィンドウ・シーケ
ンスの中の1つのウィンドウ・シーケンスにおける所定
の位置のビットは、他のウィンドウ・シーケンスの対応
する所定の位置のビットと同じ値を有する。
し、暗号処理の安全性を高めることができ、効率的な耐
タンパ性の指数剰余演算および点のスカラー倍算を実現
できる。
示す。
処理装置60の概略的構成を示している。暗号処理装置
60は、値a、dおよびnまたは値Aおよびdを入力し
て供給する入力部72と、乱数発生器74と、乱数発生
器74からの乱数に従って値dからオーバラップ・ウィ
ンドウbm−1,bm−2,...b0および重なり長
(オーバラップ長)hm−2,hm−3,...h0を
生成するウィンドウおよび重なり長生成部75と、生成
部75からのウィンドウおよび重なり長を格納するメモ
リ78と、入力部72からの値aおよびnまたは値Aか
らkビットのウィンドウbiに対するテーブルwまたは
Wを生成するテーブル生成部80と、テーブル・メモリ
82と、メモリ78からのウィンドウおよび重なり長に
従ってテーブル・メモリ82中のテーブルwまたはWを
ルックアップ(探索)して等式v=ad(modn)ま
たはV=dAを演算するウィンドウ法演算部84と、値
vまたはVを出力する出力部86とを含んでいる。
2と、ROMのようなプログラム・メモリ64とを含ん
でいる。プロセッサ62は、メモリ64に格納されてい
るプログラムに従ってこれらの要素72〜86を制御す
る。代替構成として、プロセッサ62は、要素72〜8
6に対応する機能を実現するメモリ64中のプログラム
を実行することによって要素72〜86を実現してもよ
い。この場合、図7はフロー図として見ることができ
る。
ウ法によるオーバラップ・ウィンドウbiの生成の仕方
を示している。生成部75は、乱数発生器74からの乱
数に従って値d=(du−1,du−2,...d0)
2からm個のkビット・ウィンドウbm−1,
bm−2,...b0を導出して、メモリ78に格納す
る。図8では、図4と違って、隣接する2つのkビット
・ウィンドウbi+1およびb iについて、bi+1の
右のhビット位置とbiの左のhビット位置がdにおけ
る対応するビット位置において重複することを許されて
いる。或る値dに対してウィンドウbm−1,
bm−2,...b0の複数の可能な組(セット)が存
在するので、その中の1つの組を乱数に従って選択する
ことによって、DPAによる秘密鍵のタンパに耐性を有
する公開鍵演算を実現できる。
指数剰余演算への適用の例が示されているが、オーバラ
ップ・ウィンドウは点のスカラー倍算にも同様に適用で
きる。演算部84は、メモリ78からのウィンドウbi
に従って、メモリ82中のテーブルwまたはWをルック
アップして、vにwを乗算しそれを2k−h乗すること
を繰り返してv=ad(mod n)を求め、または、
VにWを加算し2k− h倍算を行うことを繰り返してV
=dAを求める。
biにおけるそれぞれのh個の重なりビットのストリン
グの値は乱数に従って決定される。ウィンドウbi+1
およびbiは、乱数rに従って、ウィンドウbi+1に
おけるh個の重なりビットのストリングの値とbiにお
けるh個の重なりビットのストリングの値の和が、入力
値dにおける対応するhビットのストリングの値になる
ように、生成される。代替構成として、ウィンドウb
i+1およびbiは、乱数rに従ってbiにおけるh個
の重なりビットのストリングの値を発生し、ウィンドウ
bi+1におけるh個の重なりビットのストリングの値
が、入力値dにおける対応するhビットのストリングの
値からbiにおけるh個の重なりビットのストリングの
値を減じた値になるように(bi+1における上位ビッ
ト位置からのボローが生じてもよい)、生成されてもよ
い。
バラップ・ウィンドウbiにおけるh個の重なりビット
のストリングの値の決定の簡単な例を示している。図9
において、ウィンドウbi+1およびbiのそれぞれの
h個の重なりビットαjおよびβj(j=h−
1,...0)を、即ちbi+1中のビット・ストリン
グ(α h−1...α1α0)およびbi中のビット・
ストリング(βh−1...β 1β0)を、入力値dに
おける対応するビットdq(q=x+k−1,...x
+k−h)の値に応じて次のように決定する。dq=1
の場合、乱数r=1または0を生成して、ビットdqに
対応するウィンドウbi+r中のビットαjまたはβj
に1をセットし、ウィンドウbi+(1−r)中の対応
するビットβjまたはαjに0をセットする。dq=0
の場合、ウィンドウbi+rとbi+(1 −r)の双方
の対応するビットαjおよびβjに0をセットする。
ドウbi+1とbiに固定された重なりビット長hを有
するオーバラップ・ウィンドウ法を用いた指数剰余演算
のフロー図を示している。図11は、本発明による、隣
接するウィンドウbi+1とbiに可変な重なりビット
長hiを有するオーバラップ・ウィンドウ法を用いた指
数剰余演算のフロー図を示している。図10および11
では、生成されるウィンドウbiは0≦bi<2kの範
囲の値を有する。
力部72は値a、dおよびnを入力して生成部75に供
給する。ステップ102において、生成部75は、乱数
発生器74からの乱数に従って、値dからウィンドウb
m−1,bm−2,...b 0を導出してメモリ78に
格納する。ステップ104において、テーブル生成部8
0は、テーブルw(w[x]=ax)(0<x<2k)
を生成してメモリ82に格納する。ステップ106にお
いて、演算部84はv=1およびi=mをセットする。
84は、i=m−1,m−2,...0について順次、
biに従って、メモリ82のテーブルwのルックアップ
によるw[bi]の乗算と累乗とを、vに対して実行す
る。ステップ108において、演算部84はi=i−1
をセットする。ステップ110において、演算部84
は、bi>0の場合にvにw[bi]を乗算する。ステ
ップ112において、演算部84はiの値と値0とを比
較してi=0かどうかを判定する。i=0でないと判断
された場合には、ステップ114において演算部84
は、(k−h)回の2乗によってvの2(k−h)乗を
生成する。ステップ112においてi=0であると判断
された場合には、出力部86はv=ad(mod n)
を出力する。
02において、生成部75は、乱数発生器74からの乱
数に従って、dからウィンドウbm−1,
bm−2,...b0を導出しビット長hm−2,h
m−3,...h0を生成してメモリ78に格納する。
ステップ204において、テーブル生成部80は、テー
ブルwを生成してメモリ82に格納する。ステップ20
6〜212は、図10のステップ106〜112に対応
する。ステップ208〜214において、演算部84
は、i=m−1,...0について順次、biに従っ
て、メモリ82のテーブルwのルックアップによるw
[bi]での乗算(ステップ210)と(k−
hi−1)回の2乗による累乗(ステップ214)を、
vに対して実行して、v=ad(modn)を生成す
る。
ドウbi+1とbiに固定された重なりビット長hを有
するオーバラップ・ウィンドウ法を用いたスカラー倍算
のフロー図を示している。図13は、本発明による、隣
接するウィンドウbi+1とbiに可変な重なりビット
長hiを有するオーバラップ・ウィンドウ法を用いたス
カラー倍算のフロー図を示している。図12および13
では、ウィンドウbiは−2k<bi<2kの範囲の値
を有する。
力部72は値Aおよびdを入力して生成部75に供給す
る。ステップ302において、生成部75は、乱数発生
器74からの乱数に従って、dからウィンドウ
bm−1,bm−2,...b0を生成してメモリ78
に格納する。ステップ304において、テーブル生成部
80は、テーブルW(W[x]=xA)(0<x<
2k)を生成してメモリ82に格納する。ステップ30
6において、演算部84はV=O(無限遠点)およびi
=mをセットする。
84は、i=m−1,m−2,...0について順次、
biに従って、メモリ82のテーブルWのルックアップ
によるW[bi]の加算およびW[−bi]の減算と、
乗算とを、Vに対して実行する。ステップ308におい
て、演算部84はi=i−1をセットする。ステップ3
10において、演算部84は、bi>0の場合にVにW
[bi]を加算し、b i<0の場合にVからW[−
bi]を減算する。ステップ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を出力する。
02において、生成部75は、乱数発生器74からの乱
数に従って、dからウィンドウbm−1,
bm−2,...b0を導出しビット長hm−2,h
m−3,...h0を生成してメモリ78に格納する。
ステップ404において、テーブル生成部80は、テー
ブルWを生成してメモリ82に格納する。ステップ40
6〜412は、図12のステップ306〜312に対応
する。ステップ408〜414において、演算部84
は、i=m−1,...0について順次、biに従っ
て、メモリ82のテーブルWのルックアップによるW
[bi]の加算またはW[−bi]の減算(ステップ4
10)と(k−hi−1)回の2倍算による乗算(ステ
ップ414)を、Vに対して実行して、V=dAを生成
する。
10、11、12および13において、ウィンドウbi
の計算法が複数存在する。
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウbm−1,bm−2,...b0
をこの順序で生成するためのフロー図を示している。図
15は、図14に従ったオーバラップ・ウィンドウの生
成のための演算を例示している。この実施形態において
biは0≦bi<2kの範囲の値を有する。従って、こ
の実施形態は、重なりビットの長さhが固定値のとき、
図10のRSA暗号処理と図12の楕円曲線暗号処理の
双方に適用できる。
秘密鍵d=(du−1,du−2,...d0)2を表
すuビット・シーケンス(du−1,du−2,...
d0)からウィンドウbm−1,bm−2,...b0
を導出する方法を、図14および15を参照して説明す
る。ここで、hはbi+1とbiの重なりビットの長さ
であり、0<h<kであり、kはbiのビットの長さで
ある。
ウィンドウbiの数m=ceiling((u−h)/
(k−h))を決定する。ステップ502において、生
成部75はi=mにセットする。ステップ503におい
て、生成部75は最初の中間ウィンドウwtm−1=
(du−1,...d(m−1)(k−h))2を供給
する(図15参照)。ここで、wtm−1は、dのk’
個のMSB(k’=u−(m−1)(k−h),k’≦
k)を取り出したものである。
=i−1にセットする。ステップ505において、生成
部75はi=0かどうかを判定する。i≠0と判定され
た場合に、生成部75は、ステップ506において、乱
数発生器74からのkビットの乱数rに従って、max
(0,wtm−1−2h+1)≦bm−1≦wtm− 1
を満たすようなオーバラップ・ウィンドウbm−1を生
成する(図15参照)。ここで、max(x,y)は値
xおよびyのうちの大きいものを表す。ウィンドウb
m−1は、乱数rそのものの値であっても、または乱数
rに従って所定の数のbiの値の中から選択されてもよ
い。bm−1がこの範囲の値なので、(wtm−1−b
m−1)は0≦(wtm−1−bm−1)<2hを満た
す。
ップ507において、生成部75は次の中間ウィンドウ
wtm−2=((wtm−1−bm−1)2(k−h)
+(d(m−1)(k−h)−1,...d
(m−2)(k−h))2を供給する(図15参照)。
wtm−2は、k−hビットの左シフトおよび加算:w
tm−2=((wtm−1−bm−1)<<(k−
h))+(d(m−1)(k−h)− 1,...d
(m−2)(k−h))2を実行することによって、求
めてもよい。
3,...1についてステップ504〜507を繰り返
す。生成部75は、ステップ506において乱数rに従
ってmax(0,wti−1−2h+1)≦bi≦wt
iを満たすbiを生成し、ステップ507において次の
中間ウィンドウwti−1=(wti−bi)2(k
−h)+(di(k−h)−1,...d
(i−1)(k−h))2を求める(図15参照)。換
言すれば、次の中間シーケンスwti−1は、中間シー
ケンスwtiからウィンドウbiを減算することによっ
て導出された値をMSBとして含み、uビット・シーケ
ンスの中の次のk−h個のMSBをLSBとして含んで
いる。このようにして、ステップ505においてi=0
と判定された場合に、生成部75は、ステップ508に
おいてb0=wt0とセットし、オーバラップ・ウィン
ドウbm−1,bm−2,...b0を出力する。
発明の第2の実施形態による、生成部75において、可
変な重なりビット長を有するオーバラップ・ウィンドウ
bm −1,bm−2,...b0をこの順序で生成する
ためのフローチャートを示している。この実施形態で
は、隣接するbi+1とbiの重なりビットの長さhi
が可変である。図17は、図16に従ったオーバラップ
・ウィンドウの生成のための演算を例示している。この
実施形態においてbiは0≦bi<2kの範囲の値を有
する。従って、この実施形態は、図11のRSA暗号処
理と図13の楕円曲線暗号処理の双方に適用できる。
du−2,...d0)2からウィンドウbm −1,b
m−2,...b0を導出し重なりビット長hm−2,
hm−3,...h0を生成する方法を、図16および
17を参照して説明する。ここで、uはdのビットの長
さ、bi+1とbiの重なりビットの長さhiは0≦h
i≦kの範囲の値、kはbiのビットの長さである。
0≦hi≦kかつu=mk−(hm −2+h
m−3+...+h0)を満たすように、乱数r(=h
i)に従って、ウィンドウbiの数mおよび重なりビッ
ト長hm−2,hm−3,...h0を決定する。ステ
ップ602において、生成部75はi=mおよびj=u
−kにセットする。ステップ603において、生成部7
5は最初の中間ウィンドウwtm −1=
(du−1,...dj)2を供給する。
=i−1にセットする。ステップ605において、生成
部75はi=0かどうかを判定する。i≠0と判定され
た場合に、生成部75は、ステップ606において、図
14と同様に、乱数発生器74からのkビットの乱数r
に従って、max(0,wti−2hi+1)≦bi≦
wtiを満たすようなオーバラップ・ウィンドウbiを
生成する(図17参照)。ウィンドウbiは、乱数rそ
のものの値であっても、または乱数rに従って所定の数
のbiの値の中から選択されてもよい。
ップ607において、生成部75は次の中間ウィンドウ
wti−1=((wti−bi)2(k−hi−1)+
(d j−1,...dj−(k−hi−1))2を供給
する(図17参照)。ステップ608において、生成部
75はj=j−(k−hi−1)にセットする。
3,...1についてステップ504〜507を繰り返
す。このようにして、ステップ605においてi=0と
判定された場合に、生成部75は、ステップ608にお
いてb0=wt0とセットし、オーバラップ・ウィンド
ウbm−1,bm−2,...b0および重なりビット
長hm −2,hm−3,...h0を出力する。
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウb0,b1,...bm−1をこ
の順で生成するためのフローチャートを示している。図
19は、図18に従ったオーバラップ・ウィンドウの生
成のための演算を例示している。この実施形態において
biは0≦bi<2kの範囲の値を有する。従って、こ
の実施形態は、重なりビットの長さhが固定値のとき、
図10のRSA暗号処理と図12の楕円曲線暗号処理の
双方に適用できる。
秘密鍵d=(du−1,du−2,...d0)2から
ウィンドウb0,b1,...bm−1を導出する方法
を、図18および19を参照して説明する。ここで、b
i+1とbiの重なりビットの長さhは0<h<kの範
囲の値である。ウィンドウbi中のh個のMSBをwl
i、ウィンドウbi中の(k−h)個のLSBをwri
と表す。bi+1とb iは、bi+1中のh個のLSB
位置とbiのh個のMSB位置が重なる。
ウィンドウbiの数m=ceiling((u−h)/
(k−h))を決定する。ステップ702において、生
成部75はi=0にセットする。ステップ703におい
て、生成部75は最初の中間シーケンスdt0=dt=
(du−1,...d0)2を供給する。
=m−1かどうかを判定する。i≠m−1と判定された
場合に、生成部75は、ステップ705において、wr
0=(dt0中の(k−h)個のLSB)と、乱数発生
器74からの乱数rに従ってwl0=(hビットの乱数
r)とを生成し、ステップ706においてb0=wl 0
2(k−h)+wr0を生成する(図19参照)。それ
によって、(dt0−b0)における(k−h)個のL
SBは全て0となる。ステップ707において、次の中
間シーケンスdt1=(dt0−b0)/2(k−h)
を求める(図19参照)。ステップ708において、i
=i+1にセットする。
m−2についてステップ705〜708を繰り返す。生
成部75は、ステップ705においてwri=(dti
中の(k−h)個のLSB)と、wli=(hビットの
乱数r)とを生成し、ステップ706においてbi=w
li2(k−h)+wriを生成し、ステップ707に
おいて次の中間シーケンスdti+1=(dti−
bi)/2(k−h)を生成する(図19参照)。換言
すれば、ウィンドウbiは、乱数に従って生成されたh
個のMSBを含み、中間シーケンスdtiの(k−h)
個のLSBをLSBとして含んでいる。次の中間シーケ
ンスdti+1は、dtiからウィンドウb iを減算
し、(k−h)個のLSBを切り捨てることによって導
出される。bi=wli2(k−h)+wriおよびd
ti+1=(dti−bi)/2(k− h)は、それぞ
れ(k−h)ビットの左シフトおよび右シフトを実行す
ることによって、求めてもよい。
i=m−1と判定された場合に、生成部75は、ステッ
プ709においてbm−1=dtm−1とセットし、オ
ーバラップ・ウィンドウb0,b1,...bm−1を
出力する。
発明の第4の実施形態による、生成部75において、可
変な重なりビット長を有するオーバラップ・ウィンドウ
b0,b1,...bm−1をこの順で生成するための
フローチャートを示している。この実施形態ではb
i+1とbiの重なりビットの長さhiが可変である。
図21は、図20に従ったオーバラップ・ウィンドウの
生成のための演算を例示している。この実施形態におい
てbiは0≦bi≦2kの範囲の値を有する。従って、
この実施形態は、図11のRSA暗号処理と図13の楕
円曲線暗号処理の双方に適用できる。
du−2,...d0)2からウィンドウb0,
b1,...bm−1を導出し重なりビット長h0,h
1,...hm−2を生成する方法を、図20および2
1を参照して説明する。bi+1とbiの重なりビット
の長さhiは0≦hi≦kの範囲の値である。
0≦hi≦kかつu=mk−(h0+h1+...+h
m−2)を満たすように、乱数r(=hi)に従って、
ウィンドウbiの数mおよび重なりビット長hm−2,
hm−3,...h0を決定する。ステップ802にお
いて、生成部75はi=0にセットする。ステップ80
3において、生成部75は最初の中間ウィンドウdt0
=(du−1,...dj)2を供給する。
=m−1かどうかを判定する。i≠m−1と判定された
場合に、生成部75は、図16と同様に、ステップ80
5において、乱数に従ってwli=(hiビットの乱
数)とwri=(dti中の(k−hi)個のLSB)
とを生成し、ステップ806においてbi=wli2(
k−hi)+wriを生成し、ステップ807において
dti=(dti−1−bi−1)/2(k−hi)を
生成する(図21参照)。ステップ808において、生
成部75は、i=i+1にセットする。
ついてステップ804〜808を繰り返す。このように
して、ステップ804においてi=m−1と判定された
場合、生成部75は、ステップ809においてbm−1
=dtm−1とセットし、オーバラップ・ウィンドウb
0,b1,...bm−1および重なりビット長h0,
h0,...hm−2を出力する。
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウbm−1,bm−2,...b0
をこの順で生成するためのフローチャートを示してい
る。図23は、図22に従ったオーバラップ・ウィンド
ウの生成のための演算を例示している。この実施形態
は、図14および15に示された第1の実施形態におけ
るbiの値の範囲を−2k<bi<2kに拡張したもの
で、図12の楕円曲線暗号処理にのみ適用できる。この
実施形態では、biがより多くの取り得る値を有するの
で、SPAおよびDPAを用いた秘密鍵の推定に対する
安全性をより高くすることができる。
秘密鍵d=(du−1,du−2,...d0)2から
ウィンドウbm−1,bm−2,...b0を導出する
方法を、図22および23を参照して説明する。ここ
で、bi+1とbiの重なりビットの長さhは0<h<
kの範囲の値である。
07〜908は図14のステップ501〜505および
ステップ507〜508に対応し、再び説明することは
しない。
乱数発生器74からのkビットの乱数rに従って、wt
i−1−2h<bi<min(2k,wti+2h)を
満たすようなオーバラップ・ウィンドウbiを生成する
(図23参照)。ここで、min(x,y)は値xおよ
びyのうちの小さいものを表す。図23に示されている
ように、bi=(dik+k−1,
dik+k−2,...dik)2におけるd
ik+k−1,...dikの各々の値は−1,0また
は1である。ウィンドウbiは、乱数rそのものの値で
あっても、または乱数rに従って所定の数のbiの値の
中から選択されてもよい。図14のステップ506にお
いて生成されるbiは0以上の値であるのに対し、この
実施形態において、生成されるウィンドウbiは、−2
k+2h≦bi<2kの範囲の値を有し、負の値を含ん
でいる。
発明の第6の実施形態による、生成部75において、可
変な重なりビット長を有するオーバラップ・ウィンドウ
bm −1,bm−2,...b0をこの順で生成するた
めのフローチャートを示している。この実施形態ではb
i+1とbiの重なりビットの長さhiが可変である。
図25は、図24に従ったオーバラップ・ウィンドウの
生成のための演算を例示している。この実施形態は、図
16および17に示された第2の実施形態におけるbi
の値の範囲を−2k<bi<2kに拡張したもので、図
13の楕円曲線暗号処理にのみ適用できる。
du−2,...d0)2からウィンドウbm −1,b
m−2,...b0を導出しhm−2,
hu−2,...h0を生成する方法を、図24および
25を参照して説明する。ここで、bi+1とbiの重
なりビットの長さhiは0≦hi≦kの範囲の値であ
る。
プ1007〜1008は図16のステップ601〜60
5およびステップ607〜608に対応し、再び説明す
ることはしない。
て、乱数発生器74からのkビットの乱数rに従って、
wti−1−2hi<bi<min(2k,wti+2
hi)を満たすようなオーバラップ・ウィンドウbiを
生成する(図25参照)。図25に示されているよう
に、biにおける各ビットの値は−1,0または1であ
る。図16のステップ606で生成されるbiは0以上
の値であるのに対し、この実施形態において、生成され
るウィンドウbiは、−2k<bi<2kの範囲の値を
有し、負の値を含んでいる。
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウb0,b1,...bm−1をこ
の順で生成するためのフローチャートを示している。図
27は、図26に従ったオーバラップ・ウィンドウの生
成のための演算を例示している。この実施形態は、図1
8および19に示された第3の実施形態のbiの値の範
囲を−2k<bi<2kに拡張したもので、図12の楕
円曲線暗号処理にのみ適用できる。この実施形態では、
biがより多くの取り得る値を有するので、SPAおよ
びDPAを用いた秘密鍵の推定に対する安全性をより高
くすることができる。この実施形態では、第3の実施形
態の図18のステップ707における演算をなくしたの
で、高速処理が可能である。
秘密鍵d=(du−1,du−2,...d0)2から
ウィンドウb0,b1,...bm−1を導出する方法
を、図26および27を参照して説明する。ここで、b
i+1とbiの重なりビットの長さhは0<h<kの範
囲の値である。
テップ701〜702に対応する。ステップ1103に
おいて、生成部75は、最初の中間ウィンドウwt0=
(d k−1,dk−2,...d0)2を供給する。こ
こで、wt0は、dのk個のLSBを取り出したもので
ある。
について、ステップ1104〜1110を実行して、b
0,b1,...bm−2を生成する。ステップ110
4において、生成部75はi=m−1かどうかを判定す
る。ステップ1104、1110および1111は、図
18のステップ704、708および709にそれぞれ
対応する。
は、wtri=wti(mod 2( k−h))を求め
る。このモジュロ演算は、中間ウィンドウwtiが負の
場合を含んでいる。この演算は次のように実行される。
は、wtli=(wti−wtri)/2(k−h)を
決定する。ステップ1107において、生成部75は、
乱数発生器74からのkビットの乱数rに従ってwtl
i−2h< wli<2hを満たすようなwliと、wr
i=wtriとを生成する。wliは、乱数rそのもの
の値であっても、または乱数rに従って所定の数のwl
iの値の中から選択されてもよい。ステップ1108に
おいて、生成部75は、bi=wli2h+wr iを求
める(図27参照)。換言すれば、ウィンドウbiは、
乱数に従って生成されたh個のMSBを含み、中間シー
ケンスwti(mod 2(k−h))の値を(k−
h)個のLSBsとして含んでいる。図27に示されて
いるように、biにおける各ビットの値は−1,0また
は1である。
は、次の中間ウィンドウwti+1=(d
k−(k−h)(i+1)−1,...d
k−(k−h)i)22h+(wtli−wli)を求
める。換言すれば、次の中間シーケンスwti+1は、
h個のMSBの値wliを中間シーケンスwtiの中の
h個のMSBの値から減算することによって導出された
値をLSBsとして含み、uビット・シーケンスの中の
他のk−h個のビットをMSBsとして含んでいる。ス
テップ1110において、生成部75は、生成部75
は、i=i+1にセットする。
てi=m−1であると判定された場合、生成部75はス
テップ1111においてbm−1=dtm−1とセット
して、オーバラップ・ウィンドウb0,b1,...b
m−1を出力する。
態では、wliおよびwriが負であってもよいので、
図18のステップ707で行う数ビット〜数百ビットの
値からの減算が不要であり、処理が速い。
発明の第8の実施形態による、生成部75において、可
変な重なりビット長を有するオーバラップ・ウィンドウ
b0,b1,...bm−1をこの順で生成するための
フローチャートを示している。この実施形態ではb
i+1とbiの重なりビットの長さhiが可変である。
図29は、図28に従ったオーバラップ・ウィンドウの
生成のための演算を例示している。この実施形態は、図
20および21に示された第4の実施形態におけるbi
の値を−2k<bi<2kに拡張したもので、図13の
楕円曲線暗号処理にのみ適用できる。
du−2,...d0)2からウィンドウb0,
b1,...bm−1を導出し重なりビット長h0,h
1,...hm−2を生成する方法を、図28および2
9を参照して説明する。ここで、bi+1とb iの重な
りビットの長さhiは0≦hi≦kの範囲の値である。
であること以外は、図26および27と同様に処理が行
われる。図28におけるステップ1201は図20のス
テップ801に対応する。ステップ1202において、
生成部75はi=0およびj=kにセットする。ステッ
プ1204〜1209および1211は、図26におけ
るステップ1104〜1110にそれぞれ対応する。
は、wtri=wti(mod 2( k−hi))を求
める。ステップ1206において、生成部75は、wt
li=(wti−wtri)/2(k−hi)を求め
る。ステップ1207において、生成部75は、乱数発
生器74からのkビットの乱数rに従ってwtli−2
h i< wli<2hiを満たすようなwliと、wri
=wtriとを生成する。ステップ1208において、
生成部75は、bi=wli2(k−hi)+wr iを
求める(図29参照)。図29に示されているように、
biにおける各ビットの値は−1,0または1である。
ステップ1209において、生成部75は、次の中間ウ
ィンドウwti+1=(dj+k−hi−1,...d
j)22hi+(wtli−wli)を求める。ステッ
プ1210において、生成部75は、j=j+(k−h
i)にセットする。
てi=m−1であると判定された場合、生成部75はス
テップ1212において、bm−1=dtm−1とセッ
トして、オーバラップ・ウィンドウb0,b1,...
bm−1および重なりビット長hm−2,
hm−3,...h0を出力する。
る、生成部75において、重なりビット長を有するオー
バラップ・ウィンドウbm−1,bm−2,...b0
を順に生成するためのフローチャートを示している。図
31は、図30に従ったオーバラップ・ウィンドウの生
成のための演算を例示している。この実施形態において
biは0≦bi<2kの範囲の値を有し、従って、この
実施形態は、図10のRSA暗号処理と図12の楕円曲
線暗号処理の双方に適用できる。
d0)2からウィンドウbm−1,bm−2,...b
0を導出する方法を、図30および31を参照して説明
する。この実施形態では、複数のm−1ビットの乱数ビ
ット・シーケンスを加算することによってウィンドウb
iが生成される。bi+1とbiの重なりビットの長さ
hは0<h<kの範囲の固定値である。
は、ウィンドウbiの数m=ceiling(u/k)
を決定する。生成部75は、ステップ1302において
乱数発生器74からの乱数に従って、dfj≧0かつd
f1+...+dfg−1≦dを満たすように入力dか
らdf1,...dfg−1を生成し、ステップ130
3においてdf0=d−(df1+...+d
fg−1)(≧0)を生成する。このようにしてd=d
f0+df1+...+dfg−1を満たすg個のdf
j=(dfj,u−1,dfj,u−2,...df
j,0)2が生成される。ここで、gはceiling
(2(k-1)/(2(k−h)−1))≦g≦flo
or((2k−1)/(2(k−h)−1))の範囲の
定数である。関数floor(x)は変数x以下の最大
の整数を表す。gは、最大kビットのbi(2 k−1≦
bi<2k)を与える。
は、i=i−1にセットする。生成部75は、biを生
成するために、ステップ1305〜1308をi=m−
1,m−2,...0について順に実行する。ステップ
1304〜1308では、i=0,1,...m−1の
順に、またはその他の順にbiが生成されてもよい。
は、j=0,1,...(g−1)について、(k−
h)ビットの値sj=(df
j,(i+1)(k−h)−1,...df
j,i(k−h))2をセットする。ステップ1306
において、オーバラップ・ウィンドウbi =s0+s
1+...+sg−1を求める。このようにして生成さ
れた隣接するウィンドウbi+1とbiは、bi+1の
h個のLSB位置とbiの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はオーバラップ・ウィンドウ
bm−1,bm−2,...b0を出力する。
発明の第10の実施形態による、生成部75において、
重なりビット長を有するオーバラップ・ウィンドウb
m−1,bm−2,...b0をこの順で生成するため
のフローチャートを示している。この実施形態は、第9
の実施形態を変形したもので、モジュロφを用いてウィ
ンドウbiを生成する。図33は、図32に従ったオー
バラップ・ウィンドウの生成のための演算を例示してい
る。この実施形態においてbiは0≦bi<2kの範囲
の値を有し、従って、この実施形態は、図11のRSA
暗号処理と図13の楕円曲線暗号処理の双方に適用でき
る。
d0)2からウィンドウbm−1,bm−2,...b
0を導出する方法を、図32および33を参照して説明
する。bi+1とbiの重なりビットの長さhは0<h
<kの範囲の固定値である。
る条件でdf0,df1,...dfg−1を生成す
る。この実施形態では、dに対してbiがより多くの取
りうる値を有するので、SPAおよびDPAを用いた秘
密鍵の推定に対する安全性をより高くすることができ
る。
は、乱数発生器74からの乱数に従って、dfj≧0を
満たすように入力dからdf1,...dfg−1を生
成する。第9の実施形態とは異なり、dfjはdf
1+...+dfg−1≦dを満たす必要がない。生成
部75は、ステップ1402において、df0=d−
(df 1+...+dfg−1)(mod φ)(≧
0)を生成する。このようにしてd=df0+df
1+...+dfg−1(mod φ)を満たすg個の
dfj=(dfj,u−1,dfj,u−2,...d
fj,0)2が生成される。df0は、0≦df0<φ
を満たさなくてもよい。この実施形態では、第9の実施
形態とは異なり、df1,...dfg−1は0以上の
uビットの任意の乱数なので、df0,df1,...
dfg−1がより多くの取りうる値を有し、従ってbi
もより多くの取りうる値を有する。
df0+df1+...+dfg− 1のビット長u’を
求め、ステップ1404においてウィンドウbiの数m
=ceiling(u’/(k−h))を求める。ステ
ップ1405において、生成部75はi=m−1にセッ
トする。
は、j=0,1,...(g−1)について、(k−
h)ビットのストリングの値sj=(df
j,(i+1)(k− h)−1,...df
j,i(k−h))2をセットする。ステップ1407
において、生成部75は、オーバラップ・ウィンドウb
i=s0+s1+...+sg−1を求める。ステップ
1408〜1409は図30のステップ1307〜13
08に対応する。このようにして、生成部75はオーバ
ラップ・ウィンドウbm−1,bm−2,...b0を
出力する。
法に基づいているのでSPAによる秘密鍵の推定が防止
される。入力値dに対して複数のウィンドウbiが乱数
に従って選択されるのでDPAによる秘密鍵の推定も防
止される。本発明によれば、通常の分割指数法のように
公開鍵演算を2回実行する必要がなく、公開鍵演算を1
回だけ実行すればよいので、処理速度が速い。
速度の比較を示している。表2において、uは秘密鍵の
ビット長を、Mは乗算または点の加算/減算の計算量
を、Sは2乗または点の2倍算の計算量を表す。hが可
変長hiの場合は、hは平均の長さを表す。
す2つの公開鍵演算v1=ad1(modn)とv2=
ad2(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の
計算量しか必要としない。
秘密鍵dに対するオーバラップ・ウィンドウの取り得る
(可能な)パターンの数は、オーバラップ・ウィンドウ
法における各ウィンドウ生成においてそれぞれに使用さ
れる乱数の取り得るパターンの数にのみ依存する。DP
Aに対するオーバラップ・ウィンドウ法の安全性はオー
バラップ・ウィンドウbiの取り得るパターンの数に依
存する。乱数のパターンの数は、隣接のオーバラップ・
ウィンドウbi+1とbiの重なりビット長hによって
決まり、この数を大きくするためにはウィンドウの長さ
kを大きくする必要がある。しかし、ウィンドウの長さ
kを大きくすると、生成されるテーブルwまたはWのサ
イズが増加し、ウィンドウの生成、テーブルの生成およ
びテーブル・ルックアップの効率が低下する。
dに対する複数のウィンドウbiのそれぞれの一部に、
所定の同じ値または乱数に従って生成された同じ値Sを
用いるオーバラップ・ウィンドウ法を説明する。ここで
は、この方法を指数乗剰余演算に関して説明するが、点
のスカラー倍算に関しても同様に実現できる。この方法
は、生成されるテーブルのサイズを大きくすることなく
ウィンドウbiの取り得るパターンの数を増やすことが
でき、効率よく安全性が高められる。
所与の1つの値dに対する複数のウィンドウのそれぞれ
の一部について所定の同じ値または乱数に従って生成さ
れた同じ値を用いるオーバラップ・ウィンドウ法の原理
を説明するのに役立つ。
高めるために、オーバラップ・ウィンドウbiのビット
長kをより長くする。さらに、ウィンドウbm−1、b
m− 2、...b0(ここで、mはウィンドウの数を表
す)の各ウィンドウbi中の所定位置におけるhビット
の重なりビット・ストリングの値を、乱数rに従って発
生された同じ値Sに設定する。
ップ・ウィンドウ法の安全性はオーバラップ・ウィンド
ウbiのビット長kに応じて決まる。生成されるテーブ
ルwのサイズは、その同じ値Sを有するhビット以外の
k−hビットに応じて決まる。その理由は、hビットに
対する同じ値Sを考慮すると、kビットのオーバラップ
・ウィンドウbm−1、bm−2、...b0に対する
w[bi]=ax(mod n)を満たす取り得る値w
[bi]の数は2k−hだからである。従って、テーブ
ルwのエントリとして2k−h個の値wが計算され生成
されてテーブルwに格納される。テーブルwをルックア
ップするとき、ウィンドウbiにおける下線のk−hビ
ット部分のみをインデックスとして用いればよい。この
ようにして、テーブル・サイズを増加させることなく、
およびテーブル・ルックアップに使用するインデックス
値indの長さを増加させることなく、ウィンドウbi
の長さを大きくすることができる。
2において用いられる、複数のウィンドウのそれぞれの
一部に同じ値Sを用いるオーバラップ・ウィンドウ法に
よる暗号処理装置160の概略的構成を示している。暗
号処理装置160は、値a、dおよびnまたは値Aおよ
びdを入力して供給する入力部72と、乱数発生器74
と、乱数発生器74からの乱数に従って値dからオーバ
ラップ・ウィンドウb m−1,bm−2,...b0を
生成し同じ値Sおよび必要な場合は重なり長hを供給す
るウィンドウ値生成部76と、生成部76からのウィン
ドウを格納するメモリ78と、入力部72からの値aお
よびnまたは値Aと生成部76からの値Sとからkビッ
トのウィンドウbiに対するテーブルwまたはWを生成
するテーブル生成部80と、テーブル・メモリ82と、
メモリ78からのウィンドウおよび必要な場合は重なり
長hに従ってテーブル・メモリ82中のテーブルwまた
はWをルックアップ(探索)して等式v=ad(mod
n)またはV=dAを演算するウィンドウ法演算部8
4と、値vまたはVを出力する出力部86とを含んでい
る。
2において用いられる、複数のウィンドウのそれぞれの
一部に同じ値Sを用いるオーバラップ・ウィンドウ法に
よる逐次または反復処理型の暗号処理装置162の概略
的構成を示している。暗号処理装置162は、乱数発生
器74からの乱数に従って値dからオーバラップ・ウィ
ンドウbm−1,bm−2,...b0を順次生成し同
じ値Sおよび必要な場合は重なり長hを供給するウィン
ドウ値生成部76と、ウィンドウ値生成部76からのウ
ィンドウおよび必要な場合は重なり長hに従ってテーブ
ル・メモリ82中のテーブルwまたはWをルックアップ
して等式v=ad(mod n)またはV=dAを演算
するウィンドウ法演算部84と、を含んでいる。暗号処
理装置162は、さらに、図35の暗号処理装置160
と同様に、入力部72と、乱数発生器74と、テーブル
生成部80と、テーブル・メモリ82と、出力部86と
を含んでいる。
び162は、さらに、プロセッサ62と、ROMのよう
なプログラム・メモリ64とを含んでいる。プロセッサ
62は、メモリ64に格納されているプログラムに従っ
てこれらの要素72〜86を制御する。代替構成とし
て、プロセッサ62は、要素72〜86に対応する機能
を実現するメモリ64中のプログラムを実行することに
よって要素72〜86を実現してもよい。この場合、図
35および36はフロー図として見ることができる。
中央位置に同じ値Sを用いる手法図37は、本発明によ
る、オーバラップ・ウィンドウbiの中央位置に同じ値
Sを設定する手法を説明するのに役立つ。図37を参照
すると、この手法では、上述の図10のオーバラップ・
ウィンドウ法と同様に、隣接するウィンドウbi +1と
biが重なりビット長hを有する。ウィンドウbiは、
kビットのシーケンスであり、k−h個のMSBと、k
−h個のLSBと、残りのs個の中央のビット(s=k
−2(k−h)=2h−k)とを含んでいる。この図に
おいて、k−h個のMSBの値をx1とし、k−h個の
LSBの値をx2としている。ウィンドウbiのk−h
個のLSBは乱数riに従って生成される。全てのオー
バラップ・ウィンドウbm−1、bm−2、...b0
の各々の中央位置のsビット・ストリングの値が同じ値
Sに設定される。値Sは、各値dごとに乱数rdに従っ
て発生してもよく、または固定値、例えば0でもよい。
ウィンドウbiは、図14および15に示された第1の
実施形態のウィンドウbiの中央のsビットを値Sとし
たものに相当する。
・ウィンドウbiのk−h個のMSBおよびk−h個の
LSBを有するインデックスindiを用いたテーブル
wのルックアップによるw[indi]の乗算と、累乗
とによって求められる。V=dAは、そのようなインデ
ックスindiを用いたテーブルwのルックアップによ
るW[indi]の加算およびW[−indi]の減算
と、乗算とによって求められる。
ウィンドウbiの中央位置に同じ値Sを用いる手法を用
いた指数剰余演算の概略的なフロー図を示している。図
38のフロー図は、図10のフロー図の変形である。こ
の手法は、図10のRSA暗号処理と図12の楕円曲線
暗号処理の双方に適用できる。
38のフロー図を説明する。ステップ1501におい
て、入力部72は値a、dおよびnを入力して、dを生
成部76に供給し、aおよびnまたはAを生成部80に
供給する。ステップ1502において、生成部76は、
乱数発生器74からの乱数riに従って、値dからウィ
ンドウbm−1,bm−2,...b0の代わりにイン
デックスindm−1,indm−2,...ind0
を導出してメモリ78に格納する。インデックスind
iは、ウィンドウbiの中央のsビットを取り除いたシ
ーケンスで、0≦indi<2
x1<<(k−h)+x2(0≦x1<2k−h,0≦
x2<2k −h)の範囲の値である。ここで、x1はウ
ィンドウbiのk−h個のMSBを表し、x2はウィン
ドウbiのk−h個のLSBを表す。インデックスin
diは、ウィンドウbiを圧縮したものと見ることもで
きる。ステップ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は順序が逆であってもよい。
6〜1516において、演算部84は、i=m−1,m
−2,...0について順次、indiに従って、メモ
リ82のテーブルwのルックアップによるw[in
di]の乗算と累乗とを、vに対して実行する。ステッ
プ1506において、演算部84はv=1およびi=m
をセットする。ステップ1508において、演算部84
はi=i−1をセットする。ステップ1510におい
て、演算部84は、後で詳しく説明するようにインデッ
クスind=(bi,(k−1),
bi,(k−2),...bi,h)||(b
i,(k−h−1),bi,(k−h−2),...b
i,0)を用いてテーブルwをルックアップして、vに
w[indi]を乗算する。ここで、a||bは、複数
ビット値aをMSBとし複数ビット値bをLSBとする
シーケンス値を生成する結合演算であり、αビット・ス
トリングa=(aα−1,aα−2,...a0)およ
びβビット・ストリングb=(bβ−1,
bβ−2,...b 0)に対して、α+βビット・スト
リングa||b=aα−1,aα−2,...a0,b
β−1,bβ−2,...b0)となる。ステップ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=ad(mod n)を出力す
る。ステップ1502、1504およびステップ150
6〜1514は同時に(並行して)または反復的に実行
されてもよい。
より、インデックスindの必要な長さは、kビットの
ウィンドウに対して、k−h個のMSBとk−h個のL
SBに対する2×(k−h)ビットとなり、テーブル・
サイズは22×(k−h)個のwの値となる。この手法
において、最初のウィンドウ以外のウィンドウbiの値
は、ビットの長さs(数)に応じて1つ乃至数個前まで
の複数のウィンドウに依存する。図10の指数剰余演算
ではウィンドウbiの値は1つ前のウィンドウにおける
乱数値にのみ依存するので、この手法の方が中間データ
の量が増え、安全性が高くなる。なお、S以外の部分に
ついて、簡単化のために、k−h個のMSBおよびk−
h個のLSBについて説明するが、これらのMSBの長
さとLSBの長さとは等しくなくてもよい。
ウィンドウの生成の例を示している。最初のウィンドウ
bm−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に従って決定される。ウィンドウbiにお
ける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)=24である。3番目以降のウ
ィンドウも同様に生成される。
1の実施形態による、ウィンドウ生成部76において、
重なりビット長hを有するオーバラップ・ウィンドウb
0,b1,...bm−1をこの順序で生成するための
フローチャートの一部を示している。図41は、図40
に従ったオーバラップ・ウィンドウの生成のための演算
を例示している。この実施形態は、図18および19に
関連して説明した第3の実施形態の変形と見ることがで
きる。この実施形態は、第3の実施形態において乱数w
liを、乱数に従って生成されたk−h個のMSBと同
じ値Sを有するs個のLSBとで構成したものに相当す
る。
u−2,...d0)2から重なりビット長hを有する
オーバラップ・ウィンドウb0,b1,...bm−1
を生成するための手順を、図40および41を参照して
説明する。sビットの同じ値を固定値S=0とし、ウィ
ンドウの重なり幅をhビットとし、s=k−2(k−
h)=2k−hとする。但し、Sは0以外の値であって
もよい。この場合、簡単化のためにm=(u−h)/
(k−h)は正の整数とする。
40のステップ1602において、生成部76は中間ウ
ィンドウd’=d(初期値)、i=0、u=d’のビッ
ト数とセットする。ステップ1604において、生成部
76は値uが基準値kより小さいかどうかを判定する。
それが基準値より小さいと判定された場合は、生成部7
6はステップ1618においてm=iとセットして、手
順は図38のステップ1504に進む。それが基準値よ
り小さくはないと判定された場合は、手順はステップ1
606に進む。
は、値uが基準値k+hより大きいかどうかを判定す
る。それが基準値より大きいと判定された場合は、手順
はステップ1608に進む。それが基準値より大きくな
い判定された場合は、手順はステップ1612に進む。
て、k−hビットの乱数ri=(rk −h−1,r
k−h−2,...r0)を生成し、ステップ1610
において、インデックスindi=ri||(d’のk
−h個のLSB)=(rk−h−1,
rk−h−2,...r0,d’k−h−1,d’
k−h−2,...d’0)を生成する。
は、中間ウィンドウd’から中央にS値の2h−k個の
ビットを含むウィンドウbi=(bi,k−1,...
bi, 0)を減算し、即ちインデックスind(i)の
k−h個のMSBとk−h個のLSBの間にS値のs個
のビット・ストリングを挿入したウィンドウbiの値を
減算して、その減算値のk−h個のLSBを切り捨てた
ものを新しい中間ウィンドウd’とする。ステップ16
16において、生成部76は、uをその中間ウィンドウ
d’のビット数にセットし、i=i+1とセットする。
次いで、手順はステップ1604に戻る。
て、インデックスindi=(d’のhビット上位のk
−h個のLSB)||(d’のk−h個のLSB)=
(d’k −1,d’k−2,...d’h,d’
k−h−1,d’k−h−2,...d’0)を生成す
る。これによって、ウィンドウb0,b1,...b
m−1の累積和(bm−1<<(u−k))+(b
m−2<<(u−2k+h))+...+b0=dとな
る。
2の実施形態による、生成部76において、重なりビッ
ト長hを有するオーバラップ・ウィンドウbm−1,b
m− 2,...b0を生成するためのフローチャートの
一部を示している。図43は、図42に従ったオーバラ
ップ・ウィンドウの生成のための演算を例示している。
この実施形態では、各ウィンドウの異なる複数の乱数を
まとめて生成し、補正用の差を予め求めるものである。
42におけるステップ1702において、生成部76は
sビットの同じ値Sを決定する。ここでは同じ値を固定
値S=0とする。ステップ1704において、生成部7
6は、値dのビット数に従って、全てのウィンドウb
m−1,bm−2,...b0における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を求める。
は、d’からh個のMSBおよびh個のLSBを取り除
いてu−2hビット値dm=(d’u−h−1,d’
u−h− 2,...d’h)とする。ステップ1708
において、生成部76は、dm=dm1+dm2である
ような2つのシーケンスdm1およびdm2を乱数に従
って生成する。ステップ1712において、生成部76
は、次のような2つのシーケンスdhおよびdlを生成
する。
は、2つのシーケンスdhおよびdlから次のようなイ
ンデックスindm−1,indm−2,...ind
0を生成する。その後、手順は図38のステップ150
4へ進む。
の位置からインデックスを順次生成してもよく、各ウィ
ンドウのビットに負の値を用いてもよく、上述のdhお
よびdlを用いずに例えばウィンドウ法およびバイナリ
・メソッドのような様々な方法で補正演算を行うことが
できる。
LSBsまたはMSBsに同じ値Sを用いる手法図44
は、本発明による、オーバラップ・ウィンドウbiのL
SBまたはMSBとしてsビットの同じ値Sを用いる手
法を説明するのに役立つ。図44を参照すると、この手
法では、上述の図10のオーバラップ・ウィンドウ法と
同様に、隣接するウィンドウbi+1とbiが重なりビ
ット長sを有する。ウィンドウb iは、k+sビットの
シーケンスであり、k個のMSBと、値Sのs個のLS
Bとを含んでいる。ここで、この手法におけるウィンド
ウbiの長さはsビットを除外したビット数kで定義さ
れるものとする。全てのオーバラップ・ウィンドウb
m−1,bm−2,...b0の各々のs個のLSBの
ストリングの値は、値dに対して乱数rdに従って発生
された同じ値Sである。この図ではS=(0011)2
である。ウィンドウbiは、図14および15に示され
た第1の実施形態のウィンドウbiのh個のLSBを
(h=s)値Sとしたものである。
・ウィンドウbiのk個のMSBを有するインデックス
indiを用いたテーブルwのルックアップによるw
[indi]の乗算と、累乗とによって求められる。V
=dAは、そのようなインデックスindiを用いたテ
ーブルwのルックアップによるW[indi]の加算お
よびW[−indi]の減算と、乗算とによって求めら
れる。
ウィンドウbiのLSBまたはMSBのストリングに同
じ値Sを用いる手法を用いた指数剰余演算の概略的なフ
ロー図を示している。図45の処理フローは、図10の
処理フローの変形である。この手法は、図10のRSA
暗号処理と図12の楕円曲線暗号処理の双方に適用でき
る。
45のフロー図を説明する。ステップ1601におい
て、入力部72は値a、dおよびnを入力して、dを生
成部76に供給し、aおよびnまたはAを生成部80に
供給する。次いで、生成部76は乱数rdに従って同じ
値Sを生成する。ステップ1802において、テーブル
生成部80は、LSBに同じ値Sが用いられるときはテ
ーブルw(w[x]=a x<<s+S(mod n))
(0≦x<2k,0≦S<2s)を生成し、MSBに同
じ値Sが用いられるときはテーブルw(w[x]=a
S<<k+x(mod n))(0≦x<2k,0≦S
<2s)を生成してメモリ82に格納する。ステップ1
804において、生成部76は、乱数発生器74からの
乱数riに従って、値dからインデックスin
dm−1,indm−2,...ind0を導出してメ
モリ78に格納する。ここで、m=floor((u−
s)/k)である。ステップ1802とステップ180
4は順序が逆であってもよい。
算部84は、i=m−1,m−2,...0について順
次、biに従って、メモリ82のテーブルwのルックア
ップによるw[bi]の乗算と累乗とを、vに対して実
行する。ステップ1806において、演算部84はv=
1およびi=mをセットする。ステップ1808におい
て、演算部84はi=i−1をセットする。ステップ1
810において、演算部84は、後で詳しく説明するよ
うにウィンドウbiのk個のMSBをインデックスin
dとしてテーブルwをルックアップして、vにw[in
di]を乗算する。ステップ1812において、演算部
84はiの値と値0とを比較してi=0かどうかを判定
する。i=0でないと判断された場合には、ステップ1
814において、演算部84は、k回の2乗(または後
で説明するk−h’回の2乗)によってvの2k乗(ま
たは2k−h’)を生成する。ステップ1812におい
てi=0であると判断された場合には、ステップ181
6において、出力部86はv=ad(mod n)を供
給する。ステップ1802、1804およびステップ1
806〜1514は同時に(並行して)または反復的に
実行されてもよい。
を用いた場合の最初の3つのウィンドウの生成を示して
いる。最初のウィンドウbm−1において、k個のMS
Bは値d中のk個のMSBに一意的に決定され、s個の
LSBは値Sに決定される。中間データの取り得るパタ
ーンの数は2sである。次のウィンドウbm−2におい
て、k個のMSBは値dの中の後続のk個のMSBとウ
ィンドウbm−1における値Sとから一意的に決定さ
れ、s個のLSBは値Sに決定される。中間データの取
り得るパターンの数は2sである。次のウィンドウb
m−3において、k個のMSBは値dの中の後続のk個
のMSBとウィンドウbm−2における値Sとから一意
的に決定され、s個のLSBは値Sに決定される。中間
データの取り得るパターンの数は2sである。3番目以
降のウィンドウも同様に生成される。dにおける最後に
残ったLSBのシーケンスは補正演算で用いられる。
ックスindの必要な長さは、k+sビットのウィンド
ウに対してkビットとなり、テーブル・サイズは2k個
のwの値となる。その処理速度は、kビットの通常の非
オーバラップ・ウィンドウ法の従来のウィンドウ法とほ
ぼ同程度であり、非常に高速である。この手法では、同
じ値Sは乱数等によって生成される。この手法における
中間データの取り得るパターンの数はsビット値Sの可
能なパターンの数に依存する。従って、sの長さを充分
大きくすれば安全性がより高くなる。Sを長くしてもテ
ーブル・サイズは増加せず、処理速度も低下しない。テ
ーブルの作成は適当な方法で行えばよく、補正演算はウ
ィンドウ法やバイナリ・メソッド等の適当な方法で行え
ばよい。
3の実施形態による、ウィンドウ生成部76において、
重なりビット長sを有するオーバラップ・ウィンドウb
m− 1,bm−2,...b0をこの順序で生成するた
めのフローチャートの一部を示している。図48は、図
47に従ったオーバラップ・ウィンドウの生成のための
演算を例示している。
47のステップ1904において、生成部76は、初期
値としてのs個の0ビットをMSBとして含み値d中の
k個のMSBをLSBとして含む中間ウィンドウd’を
生成する。ステップ1906において、生成部76は、
初期値としてv=1、j=u−sとセットする。
は、前の中間ウィンドウd’のs個のLSBをMSBと
して含み、値d中の後続のk個のMSBをLSBとして
含む新しい中間ウィンドウd’=(d’s−1,...
d’0,dj−1,...dj −k)を生成する。
は、k回の2乗によってvの2k乗を生成する。ステッ
プ1912において、演算部84は、中間ウィンドウ
d’のk個のMSBの値が0に等しいかどうかを判定す
る。それが0に等しいと判定された場合は、手順はステ
ップ1920に進む。それが0に等しくないと判定され
た場合は、手順はステップ1914に進む。
は、中間ウィンドウd’から同じ値Sを減算して新しい
中間ウィンドウd’とする。減算前のd’のk個のMS
Bは1以上の値なので、減算において繰り下がりが生じ
ても、中間ウィンドウd’の値は正の値となる。ステッ
プ1916において、生成部76は、中間ウィンドウ
d’のk個のMSBをインデックスindとしてセット
する。ステップ1918において、演算部84は、vに
w[ind]を乗算する。
になるまで、手順がステップ1914〜1918をスキ
ップするようにする。換言すれば、k個のMSBが0よ
り大きくない場合は、d’中のk個のMSBが0より大
きくなるまで順次d中の後続のk個のMSBをサーチす
る。
jをj−kとセットする。ステップ1922において、
生成部76は、jがk+s以上かどうかを判定する。j
がk+s以上であると判定された場合は、手順はステッ
プ1908に戻る。jがk+s以上でないと判定された
場合は、手順は図45のステップ1816に進む。ステ
ップ1816において、演算部84は補正演算を行う。
即ち、ウィンドウがもはや生成できなくなったときに
は、dの残りのビットに対して補正演算を行う。
4の実施形態による、ウィンドウ生成部76において、
重なりビット長sを有するオーバラップ・ウィンドウb
0,b1,...bm−1をこの順序で生成するための
フローチャートの一部を示している。図50は、図49
に従ったオーバラップ・ウィンドウの生成のための演算
を例示している。
49のステップ2004において、生成部76は、最初
に中間ウィンドウd’=d、中間インデックス・シーケ
ンスd’’=0、j=0、i=uとセットする。
は、中間ウィンドウd’=d’−Sを計算し、この中間
ウィンドウd’のk個のLSBを追加的なMSBとして
有するシーケンスd’’=(d’k−1,
d’k−2,...d’0,d’’j−1,d’’
j−2,...d’’0)を生成する。その追加的なk
ビット・ストリング(d’k−1,d’k−2,...
d’0)はインデックスindiである。最初のs個の
LSBのシーケンスseqcは補正用のシーケンスであ
る。ステップ2008において、生成部76は、中間ウ
ィンドウd’を2kで除算し、即ちk個のLSBを切り
捨て、j=j+kおよびi=i−kとセットする。
は、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’0,d’’j−1,
d’’j−2,...d’’0)を生成する。その後、
手順はステップ2022に進む。
ビットをMSBとして含むシーケンスd’’=d’||
(d’’j−1,d’’j−2,...d’’0)を生
成する。ステップ2024において、生成部76は、シ
ーケンスd’’から、最初のs個のLSBを除外して、
k個のLSBをインデックスindiとして順次取り出
して、m個のインデックスind0,ind1,...
indm−1を生成する。最初のs個のLSBのシーケ
ンスseqcは補正演算において用いられる。次いで、
手順は図45のステップ1806へ進む。
5の実施形態による、ウィンドウ生成部76において、
重なりビット長sを有するオーバラップ・ウィンドウb
m− 1,bm−2,...b0をこの順序で生成するた
めのフローチャートの一部を示している。図52は、図
51に従ったオーバラップ・ウィンドウの生成のための
演算を例示している。
は、m個のS値のsビット・ストリングをMSB位置か
らkビットごとに配置して加算した乱数シーケンスR=
(S<<(u−(k+s)))+(S<<(u−(2k
+s)))+...(S<<k)+Sを生成する。ここ
で、m=floor((u−s)/k)とする。
は、中間ウィンドウd’=d−Rを計算する。ステップ
2110において、生成部76は、インデックスind
j=(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に進む。
6の実施形態による、ウィンドウ生成部76において、
重なりビット長h’+sを有するオーバラップ・ウィン
ドウbm−1,bm−2,...b0をこの順序で生成
するためのフローチャートの一部を示している。この実
施形態は、第1の実施形態と第15の実施形態とを組み
合わせたものである。図54は、図53に従ったオーバ
ラップ・ウィンドウの生成のための演算を例示してい
る。
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である。
は、中間ウィンドウ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とセットする。
は、乱数に従ってkビットのインデックスindi=
(indi,k−1,indi,k−2,...ind
i,0)を生成する。インデックスindi中のh’個
のLSBを乱数riに従って生成し、そのh’個のMS
Bとインデックスindi+1のh’個のLSBの和が
d’中の対応するh’個のビット・ストリングの値にな
るように、そのh’個のMSBを決定し、中央のk−2
h’ビットはd’中の対応するビットを取り出してコピ
ーする。
は、i=0かどうかを判定する。i=0と判定された場
合には手順はステップ2218に進む。i=0と判定さ
れなかった場合には手順はステップ2212に戻る。
は、v=1、i=floor((u−s)/(k−
h’))とセットする。ステップ2220〜2226は
図45のステップ1806〜1814と同様である。ス
テップ2226において、演算部84は、k−h’回の
2乗によってvのまたは2k−h’を生成する。その
後、手順は図45のステップ1516へ進む。
て用いられる、複数のウィンドウのそれぞれの複数の部
分に同じ値Sを用いるオーバラップ・ウィンドウ法によ
る暗号処理装置164の概略的構成を示している。暗号
処理装置164は、図7の暗号処理装置60と同様に、
値a、dおよびnまたは値Aおよびdを入力して供給す
る入力部72と、乱数発生器74と、乱数発生器74か
らの乱数に従って値dからオーバラップ・ウィンドウb
m−1,bm−2,...b0および重なり長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ビットのウィン
ドウbiに対するテーブルwまたはWを生成するテーブ
ル生成部80と、テーブル・メモリ82と、メモリ78
からのウィンドウおよび重なり長に従ってテーブル・メ
モリ82中のテーブルwまたはWをルックアップして等
式v=ad(mod n)またはV=dAを演算するウ
ィンドウ法演算部84と、値vまたはVを出力する出力
部86とを含んでいる。
て用いられる、複数のウィンドウのそれぞれの複数の部
分に同じ値Sを用いるオーバラップ・ウィンドウ法によ
る逐次または反復処理型の暗号処理装置166の概略的
構成を示している。暗号処理装置166は、乱数発生器
74からの乱数に従って値dからオーバラップ・ウィン
ドウbiおよび重なり長hi (mod s+1)を順
次生成するウィンドウおよび重なり長生成部77と、生
成部77からのウィンドウおよび重なり長に従ってテー
ブル・メモリ82中のテーブルwまたはWをルックアッ
プして等式v=ad(mod n)またはV=dAを演
算するウィンドウ法演算部84と、を含んでいる。暗号
処理装置166は、さらに、図54の暗号処理装置60
と同様に、入力部72と、乱数発生器74と、テーブル
生成部80と、テーブル・メモリ82と、出力部86と
を含んでいる。
び166は、さらに、プロセッサ62と、ROMのよう
なプログラム・メモリ64とを含んでいる。プロセッサ
62は、メモリ64に格納されているプログラムに従っ
てこれらの要素72〜86を制御する。代替構成とし
て、プロセッサ62は、要素72〜86に対応する機能
を実現するメモリ64中のプログラムを実行することに
よって要素72〜86を実現してもよい。この場合、図
55および56はフロー図として見ることができる。
おいて値dからの複数のtビット値の間に同じs×tビ
ット値Sを配置する手法図57、58および59は、本
発明による、オーバラップ・ウィンドウbiにおいて値
dから取り出されたc個の位置のtビット値の間にs×
tビットの長さの同じ値Sを配置する手法を説明するの
に役立つ。図57、58および59を参照すると、この
手法では、オーバラップ・ウィンドウbiの長さ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である。
ウbm−1,...bm−(s+1 )のそれぞれの先頭
位置は、値dにおける対応する1番目...s+1番目
のMSBを基準として、値dに対して、対応するc個の
乱数r0,...rs(0≦rj≦c−1)に従って決
定された値Hj=(c−rj−1)×tビット分だけ上
位のビット位置に位置する。最初のウィンドウbm−1
は、そのウィンドウの先頭ビット位置が、dにおける基
準位置としてのMSB(=du−1)より乱数r0(0
≦r0≦c−1)に従うH0=(c−r0−1)×tビ
ット分だけ上位のビット位置に配置される。次のウィン
ドウbm−2は、そのウィンドウの先頭ビット位置が、
dにおける基準位置としての次のMSB(=du−2)
より乱数r1(0≦r1≦c−1)に従うH1=(c−
r1−1)×tビット分だけ上位のビット位置に配置さ
れる。s=2以上の場合、さらに次のウィンドウb
m−3は、そのウィンドウの先頭ビット位置が、dにお
ける基準位置としての次のMSB(=du−3)より乱
数r2(0≦r2≦c−1)に従うH2=(c−r2−
1)×tビット分だけ上位のビット位置に配置される。
のMSBおよびLSBを含むc個のtビット位置に(陰
影が付けられたビット位置に)、値d中のkビット・シ
ーケンスにおける対応するビット位置におけるtビット
値を含むようになっている。ウィンドウbiは、c個の
tビット値の間のそれぞれの連続するtビット幅のs個
の位置に(陰影のないビット位置)、同じtビット値S
を挿入される。この値Sは、好ましくは0であり、即ち
c個のビットの間の全てのtビット幅のs個の位置にビ
ット値0が挿入される。
ドウbiのc個のtビット値で捕捉されなかったその間
にある連続するs×tビットの位置における他のtビッ
ト値を捕捉するように決定される。さらに後続のウィン
ドウbi−2は、前のウィンドウbiおよびbi−1の
それぞれのc個のtビット値で捕捉されなかったその間
にある連続するs×tビットの位置における他のtビッ
ト値を捕捉するように決定される。
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番目のウ
ィンドウbm −3とs+1個毎(s個おき)の後続のウ
ィンドウbm−3,bm−3−(s+ 1),b
m−3−2(s+1),...とは系列2のウィンドウ
のグループを形成する。このようにして、互いにずれて
配置されるs+1系列のウィンドウが形成される。いず
れのウィンドウにも捕捉されなかった残りのビットのシ
ーケンスseqcは、補正演算において用いられる。テ
ーブル・ルックアップの開始位置は、s+1個の系列ご
とに乱数r0,...rsによって決定する。
り長hiは、hi=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<2t)とすると、インデックス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 c(mod n)となる。ad
(mod n)は、次のように表される。
ウィンドウbiの値dからの複数のtビット値の間に同
じs×tビット値Sを配置する手法を用いた指数剰余演
算の概略的なフロー図を示している。この手法は、RS
A暗号処理と楕円曲線暗号処理の双方に適用できる。
ップ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
d0を生成する。ステップ2306において、演算部8
4は、値dに対応するMSBの位置から順次、一連のウ
ィンドウに対して、現在のウィンドウにおける隣接のウ
ィンドウの前までのビット数分だけテーブルをルックア
ップしてウィンドウ法演算v=v×w[indi](m
od n)およびvの2t乗を順次行う。ステップ23
08において、v=ad(mod n)を出力する。
ビット・ウィンドウbiに対してc×t=k−(c−
1)×s×tビットである。テーブルwにおける値w
[ind i]の数は2c×t=2
k−(c−1)×s×t個となる。値Sは、固定値、好
ましくは0であるが、各値dごとに乱数rdに従って発
生してもよい。値Sが乱数rdに従う値であるときは、
値dのビット・シーケンスから全てのウィンドウの対応
する位置に配置された値S(即ち乱数シーケンスR)を
減算した値d’を値dの代わりに用いる。その処理速度
は、非オーバラップ・ウィンド法の従来のウィンドウ法
とほぼ同程度であり、非常に高速である。
対する各ウィンドウの取り得るパターンの数を示してい
る。この手法において、乱数によってウィンドウの位置
がいったん決定すれば、各ウィンドウの値は一意的に決
定される。従って、所与の値dに対して、各ウィンドウ
の取り得るパターンの数は、乱数rj(0≦rj≦c−
1)による取り得る位置のパターンの数cによって決定
される。各系列の全てのウィンドウに対する中間データ
の取り得るパターンの数はcである。同じ系列の2巡目
以降のウィンドウの位置は、1巡目で決定されたウィン
ドウの位置で一意的に決定される。一般的には、中間デ
ータの取り得るパターンの数はcs+1である。例え
ば、図61に示された値d(11110...1
1)2、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つの系列のウィンドウに対する中間デ
ータの取り得るパターンの数はc2=32=9である。
3つの系列のウィンドウに対する中間データの取り得る
パターンの数はc3である。 改良手法3の中間データ
の取り得るパターンの数は、各系列のテーブル・ルック
アップ開始位置の取り得る各ウィンドウの取り得るパタ
ーンの数cを増大させてもテーブル・サイズは増加せ
ず、処理速度も低下しない。従って、効率よく安全性を
高めることができる。
7の実施形態による、ウィンドウ生成部77および演算
部84において、オーバラップ・ウィンドウのインデッ
クスindm−1,indm−2,...ind0をこ
の順序で生成するためのフローチャートの一部を示して
いる。図57、58および59は、図62に従ったオー
バラップ・ウィンドウの生成のための演算を例示しても
いる。
ステップ2404において、生成部77は、乱数発生器
74に、0≦rj≦c−1(j=0,1,...s)を
満たすs+1個の乱数rjを生成させる。
v=1をセットする。ステップ2408〜2428にお
いて、値dのuビット・シーケンスをt個のMSBずつ
順次チェックして、生成部は77および演算部84は、
それが或るウィンドウbiのt個のLSBの位置に対応
するときは値dから取り出されたそのウィンドウのc個
のtビット値を含むインデックスindを生成して、そ
のインデックスを用いたテーブル・ルックアップによる
w[indi]の乗算と累乗とを行って、v=ad(m
od n)を求める。
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はrj=0かどうかを判
定する。rj=0と判定された場合は、値dにおけるビ
ットduをLSBとする現在のtビット値が系列jのウ
ィンドウに対するインデックスindを生成する位置で
あることを示しており、手順はステップ2416に進
む。rj=0でないと判定された場合は、ステップ24
20において、rj=rj−1(mod c)をセット
する。
は、ウィンドウbiで捕捉されるs×tビットおきの値
dのc個のtビット値を含むインデックスindi=
(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),...
du+(c−1)×(s+1)×t,d
u+(c−2)×(s+ 1)×t+(t−1),...
du)を生成する。ステップ2418において、演算部
84はv=v×w[indi](mod n)を計算す
る。ステップ2420において、rj=rj−1(mo
d c)をセットする。
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に進む。
各ウィンドウ法の安全性と処理速度の比較を示してい
る。ウィンドウの長さをkビット、ウィンドウの重なり
ビット長をhビット、秘密鍵をd、同じ値Sのビットの
長さをs、改良手法3のdに関連するビット数をcとす
る。
ず、所与の値dに対して中間データの取り得るパターン
の数は1であり、従ってDPAに対して弱い。一方、実
施形態1〜10のオーバラップ・ウィンドウ法では、乱
数を使用して中間データのパターンの数を増加させてい
るのでDPAに対して安全である。しかし、その中間デ
ータのパターンの数は重なりビット長さhに依存するの
で、長さhを大きくするためにはウィンドウの長さkを
大きくする必要があり、それによってテーブル・サイズ
が増加する。
ターンの数は重なりビット長さhおよび同じ値Sのビッ
トの長さsに依存している。従って、sを大きくすれば
安全性が向上する。Sの幅sを大きくしてもテーブル・
サイズは増加せず、処理速度も低下しない。従って、効
率よく安全性を高めることができる。
ターンの数はSの長さsのみに依存している。sを大き
くすれば安全性が高くなる。sを大きくしてもテーブル
・サイズは増加せず、処理速度も低下しないので、効率
よく安全性を高めることができる。第13〜第15の実
施形態では、一般的なウィンドウ法とほぼ同等の処理速
度で処理できる。第15の実施形態では、速度が幾分低
下するが、第1〜第10の実施形態のオーバラップ・ウ
ィンドウ法よりは高速である。
ターン数はsとcのみに依存している。従って、この値
sとcを大きくすれば安全性が高くなる。sを大きくし
てもテーブル・サイズは増加せず、処理速度も低下しな
いので、効率よく安全性を高めることができる。
たに過ぎず、その変形およびバリエーションは当業者に
とって明らかであり、当業者であれば本発明の原理およ
び請求の範囲に記載した発明の範囲を逸脱することなく
上述の実施形態の種々の変形を行えることは明らかであ
る。
理を行う暗号装置であって、乱数に従って、前記公開鍵
暗号のための或る値dを表す複数uビット・シーケンス
から複数m個のウィンドウ・シーケンスを導出する手段
を具え、前記m個のウィンドウ・シーケンスのビット総
数は前記uビット・シーケンスのビット数uより多く、
各ウィンドウ・シーケンスのビット数はuより少なく、
前記m個のウィンドウ・シーケンスの中の2つうちの一
方のウィンドウ・シーケンスにおける或るビット位置と
他方のウィンドウ・シーケンスにおける或るビット位置
とが、前記uビット・シーケンスにおける同じビット位
置に関係付けられるものであり、さらに、前記導出され
たm個のウィンドウ・シーケンスと前記公開鍵暗号のた
めの別の或る値とに従って演算を行って、処理済みデー
タを生成する演算手段を具える、暗号装置。 (付記2) 前記公開鍵暗号処理は指数剰余演算であ
り、前記別の値をaとし、nを正の整数としたとき、前
記処理済みデータvはv=ad(mod n)で与えら
れ、前記演算手段は、前記導出されたm個のウィンドウ
・シーケンスbi’sの各々に従って、乗算と2乗算と
を実行するものである、付記1に記載の暗号装置。 (付記3) 前記公開鍵暗号処理は点のスカラー倍算で
あり、前記処理済みデータはベクトルVであり、前記値
dはスカラーであり、前記別の値はベクトルAであり、
前記処理済みデータVはV=dAで与えられ、前記演算
手段は、前記導出されたm個のウィンドウ・シーケンス
bi’sの各々に従って、加算、減算および2倍算とを
実行するものである、付記1に記載の暗号装置。 (付記4) 前記m個のウィンドウ・シーケンスbi’
sの各々は0≦bi<2 k(kは正の整数)の範囲の値
を有するものである、付記1に記載の暗号装置。 (付記5) 前記m個のウィンドウ・シーケンスbi’
sの各々は−2k<bi<2k(kは正の整数)の範囲
の値を有するものである、付記1に記載の暗号装置。 (付記6) 前記一方のウィンドウ・シーケンスにおけ
る整数h個のLSB位置と前記他方のウィンドウ・シー
ケンスにおけるh個のMSB位置とが、前記uビット・
シーケンスにおけるh個のビット位置に関係付けられる
ものである、付記1に記載の暗号装置。 (付記7) 前記導出手段は、少なくとも前記uビット
・シーケンスから前記h個のLSBsまたはMSBsを
導出するものである、付記6に記載の暗号装置。 (付記8) 前記hの値は可変であり、前記導出手段は
乱数に従って前記hの値を生成するものである、付記6
に記載の暗号装置。 (付記9) 前記導出手段は、乱数に従ってウィンドウ
・シーケンスbiを生成し、中間シーケンスwtiから
前記ウィンドウ・シーケンスbiを減算することによっ
て導出された値をMSBsとして含み、かつ前記uビッ
ト・シーケンスの中のk−hビットをLSBsとして含
む次の中間シーケンスwti−1を生成するものであ
る、付記1に記載の暗号装置。 (付記10) 前記ウィンドウ・シーケンスbiがma
x(0,wti−2h+1)≦bi≦wtiを満たす、
付記9に記載の暗号装置。 (付記11) 前記ウィンドウ・シーケンスbiがwt
i−2h<bi<min(2k,wti+2h)(kは
正の整数)を満たす、付記9に記載の暗号装置。 (付記12) 前記導出手段は、乱数に従って生成され
た整数h個のMSBsを含み、かつ中間シーケンスdt
iの(k−h)個のLSBsをLSBsとして含むkビ
ットのウィンドウ・シーケンスbi(kは正の整数)を
生成し、前記中間シーケンスdtiから前記ウィンドウ
・シーケンスbiを減算しおよび(k−h)個のLSB
sを切り捨てることによって導出される次の中間シーケ
ンスdti+1を生成するものである、付記1に記載の
暗号装置。 (付記13) 前記導出手段は、乱数に従って生成され
た整数h個のMSBsを含み、かつ中間シーケンスwt
iモジュロ2(k−h)の値を(k−h)個のLSBs
として含むkビットのウィンドウ・シーケンスbi(k
は正の整数)を生成し、前記h個のMSBsの値wli
を前記中間シーケンスwtiの中のh個のMSBsの値
から減算することによって導出された値をLSBsとし
て含み、かつ前記uビット・シーケンスの中のk−hビ
ットをMSBsとして含む次の中間シーケンスwt
i+1を生成するものである、付記1に記載の暗号装
置。 (付記14) 前記導出手段は、乱数に従って複数g個
のuビット・シーケンスfiを生成し、ここで前記g個
のuビット・シーケンスの値の総和は前記値dを表し、
前記g個のuビット・シーケンスの中のそれぞれ対応す
る位置にある(k−h)個のビットの値の総和を表すk
ビットのウィンドウ・シーケンスbi(kは正の整数)
を、生成するものである、付記1に記載の暗号装置。 (付記15) 前記導出手段は、乱数に従って複数g個
のuビット・シーケンスfiを生成し、ここで、前記g
個のuビット・シーケンスの値の総和は前記値dモジュ
ロφ(φを法とするd)を表し、φは整数であり、前記
g個のuビット・シーケンスの中のそれぞれ対応する位
置にある(k−h)個のビットの値の総和を表すkビッ
トのウィンドウ・シーケンスbi(kは正の整数)を、
生成するものである、付記1に記載の暗号装置。 (付記16) 前記m個のウィンドウ・シーケンスの中
の1つのウィンドウ・シーケンスにおける所定の位置の
ビットは他のウィンドウ・シーケンスの対応する所定の
位置のビットと同じ値を有するものである、付記1に記
載の暗号装置。 (付記17) 情報処理装置において使用するための、
秘密鍵を用いて公開鍵暗号処理を行う記憶媒体に格納さ
れたプログラムであって乱数に従って、前記公開鍵暗号
のための或る値dを表す複数uビット・シーケンスから
複数m個のウィンドウ・シーケンスを導出するステップ
を実行させ、前記m個のウィンドウ・シーケンスのビッ
ト総数は前記uビット・シーケンスのビット数より多
く、各ウィンドウ・シーケンスのビット数はuより少な
く、前記m個のウィンドウ・シーケンスの中の2つうち
の一方のウィンドウ・シーケンスにおける或るビット位
置と他方のウィンドウ・シーケンスにおける或るビット
位置とが、前記uビット・シーケンスにおける同じビッ
ト位置に関係付けられるものであり、さらに、前記導出
されたm個のウィンドウ・シーケンスと前記公開鍵暗号
のための別の或る値とに従って演算を行って、処理済み
データを生成するステップを実行させるよう動作可能な
プログラム。 (付記18) 前記公開鍵暗号処理は指数剰余演算であ
り、前記別の値をaとし、nを正の整数としたとき、前
記処理済みデータvはv=ad(mod n)で与えら
れ、前記演算を行うステップは、前記導出されたm個の
ウィンドウ・シーケンスb i’sの各々に従って、乗算
と2乗算とを実行することを含むものである、付記17
に記載のプログラム。 (付記19) 前記公開鍵暗号処理は点のスカラー倍算
であり、前記処理済みデータはベクトルVであり、前記
値dはスカラーであり、前記別の値はベクトルAであ
り、前記処理済みデータVはV=dAで与えられ、前記
演算を行うステップは、前記導出されたm個のウィンド
ウ・シーケンスb i’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) 前記導出するステップは、乱数に従って
ウィンドウ・シーケンスbiを生成するステップと、中
間シーケンスwtiから前記ウィンドウ・シーケンスb
iを減算することによって導出された値をMSBsとし
て含み、かつ前記uビット・シーケンスの中のk−hビ
ットをLSBsとして含む次の中間シーケンスwt
i−1を生成するステップと、を含むものである、付記
17に記載のプログラム。 (付記23) 前記導出するステップは、乱数に従って
生成された整数h個のMSBsを含み、かつ中間シーケ
ンスdt iの(k−h)個のLSBsをLSBsとして
含むkビットのウィンドウ・シーケンスbi(kは正の
整数)を生成するステップと、前記中間シーケンスdt
iから前記ウィンドウ・シーケンスbiを減算し、(k
−h)個のLSBsを切り捨てることによって導出され
る次の中間シーケンスdti+1を生成するステップ
と、を含むものである、付記17に記載のプログラム。 (付記24) 前記導出するステップは、乱数に従って
生成された整数h個のMSBsを含み、かつ中間シーケ
ンスwt iモジュロ2(k−h)の値を(k−h)個の
LSBsとして含むkビットのウィンドウ・シーケンス
bi(kは正の整数)を生成するステップと、前記h個
のMSBsの値wliを前記中間シーケンスwtiの中
のh個のMSBsの値から減算することによって導出さ
れた値をLSBsとして含み、かつ前記uビット・シー
ケンスの中のk−hビットをMSBsとして含む次の中
間シーケンスwti+1を生成するステップと、を含む
ものである、付記17に記載のプログラム。 (付記25) 前記導出するステップは、乱数に従って
複数g個のuビット・シーケンスfiを生成ステップ
と、ここで前記g個のuビット・シーケンスの値の総和
は前記値dを表し、前記g個のuビット・シーケンスの
中のそれぞれ対応する位置にある(k−h)個のビット
の値の総和を表すkビットのウィンドウ・シーケンスb
i(kは正の整数)を、生成するステップと、を含むも
のである、付記17に記載のプログラム。 (付記26) 前記導出するステップは、乱数に従って
複数g個のuビット・シーケンスfiを生成するステッ
プと、ここで、前記g個のuビット・シーケンスの値の
総和は前記値dのモジュロφを表し、φは整数であり、
前記g個のuビット・シーケンスの中のそれぞれ対応す
る位置にある(k−h)個のビットの値の総和を表すk
ビットのウィンドウ・シーケンスbi(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=ad(mod n)で与えら
れ、前記演算手段は、前記導出されたm個のウィンドウ
・シーケンスbi’sの各々の前記同じ値の所定のビッ
ト以外のビットのシーケンスをインデックスとして用い
てテーブルをルックアップすることによって、乗算と2
乗算とを実行するものである、付記31に記載の暗号装
置。 (付記35) 前記公開鍵暗号処理は点のスカラー倍算
であり、前記処理済みデータはベクトルVであり、前記
値dはスカラーであり、前記別の値はベクトルAであ
り、前記処理済みデータVはV=dAで与えられ、前記
演算手段は、前記導出されたm個のウィンドウ・シーケ
ンスbi’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に記載の方法。
の推定を困難にし、暗号処理の安全性を高めることがで
き、効率的な耐タンパ性の指数剰余演算および点のスカ
ラー倍算を実現できる、という効果を奏する。
暗号処理を例示している。
d n)を求める指数剰余演算のアルゴリズムを示して
いる。
算V=dAのアルゴリズムを示している。
を説明するのに役立つ。
いる。図5Bは、スパイクを有する、時間に対する電力
差分の曲線を示している。図5Cは、時間に対する電力
差分の平坦な曲線を示している。
n)を求めるためのアルゴリズムを示している。
成を示している。
ウの生成の仕方を示している。
ップ・ウィンドウにおける重なりビットの値の決定の仕
方を示している。
ウに固定された重なりビット長を有するオーバラップ・
ウィンドウ法を用いた指数剰余演算のフロー図を示して
いる。
ウに可変な重なりビット長を有するオーバラップ・ウィ
ンドウ法を用いた指数剰余演算のフロー図を示してい
る。
ウに固定された重なりビット長を有するオーバラップ・
ウィンドウ法を用いたスカラー倍算のフロー図を示して
いる。
ウに可変な重なりビット長を有するオーバラップ・ウィ
ンドウ法を用いたスカラー倍算のフロー図を示してい
る。
重なりビット長を有するオーバラップ・ウィンドウを重
み(上位から下位)の順に生成するためのフローチャー
トを示している。
ィンドウの生成のための演算を例示している。
可変な重なりビット長を有するオーバラップ・ウィンド
ウを重みの順に生成するためのフローチャートを示して
いる。
ィンドウの生成のための演算を例示している。
重なりビット長を有するオーバラップ・ウィンドウを重
みの逆の順に生成するためのフローチャートを示してい
る。
ィンドウの生成のための演算を例示している。
可変な重なりビット長を有するオーバラップ・ウィンド
ウを重みの逆の順に生成するためのフローチャートを示
している。
ィンドウの生成のための演算を例示している。
重なりビット長を有するオーバラップ・ウィンドウを重
みの順に生成するためのフローチャートを示している。
ィンドウの生成のための演算を例示している。
可変な重なりビット長を有するオーバラップ・ウィンド
ウを重みの順に生成するためのフローチャートを示して
いる。
ィンドウの生成のための演算を例示している。
重なりビット長を有するオーバラップ・ウィンドウを重
みの逆の順に生成するためのフローチャートを示してい
る。
ィンドウの生成のための演算を例示している。
可変な重なりビット長を有するオーバラップ・ウィンド
ウを重みの逆の順に生成するためのフローチャートを示
している。
ィンドウの生成のための演算を例示している。
重なりビット長を有するオーバラップ・ウィンドウを順
に生成するためのフローチャートを示している。
ィンドウの生成のための演算を例示している。
る、重なりビット長を有するオーバラップ・ウィンドウ
を順に生成するためのフローチャートを示している。
ィンドウの生成のための演算を例示している。
数のウィンドウのそれぞれの一部について所定の同じ値
または乱数に従って生成された同じ値を用いるオーバラ
ップ・ウィンドウ法の原理を説明するのに役立つ。
られる、複数のウィンドウのそれぞれの一部に同じ値を
用いるオーバラップ・ウィンドウ法による暗号処理装置
の概略的構成を示している。
られる、複数のウィンドウのそれぞれの一部に同じ値を
用いるオーバラップ・ウィンドウ法による逐次または反
復処理型の暗号処理装置の概略的構成を示している。
ィンドウの中央位置に同じ値を設定する手法を説明する
のに役立つ。
ィンドウの中央位置に同じ値を用いる手法を用いた指数
剰余演算の概略的なフロー図を示している。
ィンドウの生成の例を示している。
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの逆
の順に生成するためのフローチャートの一部を示してい
る。
ィンドウの生成のための演算を例示している。
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの順
に生成するためのフローチャートの一部を示している。
ィンドウの生成のための演算を例示している。
ィンドウのLSBまたはMSBとして同じ値を用いる手
法を説明するのに役立つ。
ィンドウのLSBまたはMSBのストリングに同じ値を
用いる手法を用いた指数剰余演算の概略的なフロー図を
示している。
ィンドウの生成を示している。
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの順
に生成するためのフローチャートの一部を示している。
ィンドウの生成のための演算を例示している。
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの逆
の順に生成するためのフローチャートの一部を示してい
る。
ィンドウの生成のための演算を例示している。
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの逆
の順に生成するためのフローチャートの一部を示してい
る。
ィンドウの生成のための演算を例示している。
の実施形態による、ウィンドウ生成部において、重なり
ビット長を有するオーバラップ・ウィンドウを重みの順
に生成するためのフローチャートの一部を示している。
ィンドウの生成のための演算を例示している。
複数のウィンドウのそれぞれの複数の部分に同じ値を用
いるオーバラップ・ウィンドウ法による暗号処理装置の
概略的構成を示している。
複数のウィンドウのそれぞれの複数の部分に同じ値を用
いるオーバラップ・ウィンドウ法による逐次または反復
処理型の暗号処理装置の概略的構成を示している。
オーバラップ・ウィンドウにおいて複数の位置の値の間
に同じ値を配置する手法を説明するのに役立つ。
オーバラップ・ウィンドウにおいて複数の位置の値の間
に同じ値を配置する手法を説明するのに役立つ。
オーバラップ・ウィンドウにおいて複数の位置の値の間
に同じ値を配置する手法を説明するのに役立つ。
ィンドウの値dからの複数の値の間に同じ値を配置する
手法を用いた指数剰余演算の概略的なフロー図を示して
いる。
り得るパターンの数を示している。
の実施形態による、ウィンドウ生成部および演算部にお
いて、オーバラップ・ウィンドウのインデックスを重み
の順に生成するためのフローチャートの一部を示してい
る。
Claims (10)
- 【請求項1】 秘密鍵を用いて公開鍵暗号処理を行う暗
号装置であって、 乱数に従って、前記公開鍵暗号のための或る値dを表す
複数uビット・シーケンスから複数m個のウィンドウ・
シーケンスを導出する手段を具え、 前記m個のウィンドウ・シーケンスのビット総数は前記
uビット・シーケンスのビット数uより多く、各ウィン
ドウ・シーケンスのビット数はuより少なく、前記m個
のウィンドウ・シーケンスの中の2つうちの一方のウィ
ンドウ・シーケンスにおける或るビット位置と他方のウ
ィンドウ・シーケンスにおける或るビット位置とが、前
記uビット・シーケンスにおける同じビット位置に関係
付けられるものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
と前記公開鍵暗号のための別の或る値とに従って演算を
行って、処理済みデータを生成する演算手段を具える、
暗号装置。 - 【請求項2】 前記一方のウィンドウ・シーケンスにお
ける整数h個のLSB位置と前記他方のウィンドウ・シ
ーケンスにおけるh個のMSB位置とが、前記uビット
・シーケンスにおけるh個のビット位置に関係付けられ
るものである、請求項1に記載の暗号装置。 - 【請求項3】 情報処理装置において使用するための、
秘密鍵を用いて公開鍵暗号処理を行うプログラムであっ
て、 乱数に従って、前記公開鍵暗号のための或る値dを表す
複数uビット・シーケンスから複数m個のウィンドウ・
シーケンスを導出するステップを実行させ、 前記m個のウィンドウ・シーケンスのビット総数は前記
uビット・シーケンスのビット数より多く、各ウィンド
ウ・シーケンスのビット数はuより少なく、前記m個の
ウィンドウ・シーケンスの中の2つうちの一方のウィン
ドウ・シーケンスにおける或るビット位置と他方のウィ
ンドウ・シーケンスにおける或るビット位置とが、前記
uビット・シーケンスにおける同じビット位置に関係付
けられるものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
と前記公開鍵暗号のための別の或る値とに従って演算を
行って、処理済みデータを生成するステップを実行させ
るよう動作可能なプログラム。 - 【請求項4】 情報処理装置において秘密鍵を用いて公
開鍵暗号処理を行う方法であって、 乱数に従って、前記公開鍵暗号のための或る値dを表す
複数uビット・シーケンスから複数m個のウィンドウ・
シーケンスを導出するステップを含み、 前記m個のウィンドウ・シーケンスのビット総数は前記
uビット・シーケンスのビット数より多く、各ウィンド
ウ・シーケンスのビット数はuより少なく、前記m個の
ウィンドウ・シーケンスの中の2つうちの一方のウィン
ドウ・シーケンスにおける或るビット位置と他方のウィ
ンドウ・シーケンスにおける或るビット位置とが、前記
uビット・シーケンスにおける同じビット位置に関係付
けられるものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
と前記公開鍵暗号のための別の或る値とに従って演算を
行って、処理済みデータを生成するステップを含む、方
法。 - 【請求項5】 秘密鍵を用いて公開鍵暗号処理を行う暗
号装置であって、 前記公開鍵暗号のための或る値dを表す複数uビット・
シーケンスから複数m個のウィンドウ・シーケンスを導
出する手段を具え、 前記m個のウィンドウ・シーケンスのビット総数は前記
uビット・シーケンスのビット数uより多く、各ウィン
ドウ・シーケンスのビット数はuより少なく、前記m個
のウィンドウ・シーケンスの中の2つうちの一方のウィ
ンドウ・シーケンスにおける或るビット位置と他方のウ
ィンドウ・シーケンスにおける或るビット位置とが、前
記uビット・シーケンスにおける同じビット位置に関係
付けられるものであり、 前記m個のウィンドウ・シーケンスの中の1つのウィン
ドウ・シーケンスにおける所定の位置のビットは、他の
ウィンドウ・シーケンスの対応する所定の位置のビット
と同じ値を有するものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
と前記公開鍵暗号のための別の或る値とに従って演算を
行って、処理済みデータを生成する演算手段を具える、
暗号装置。 - 【請求項6】 さらに、前記ウィンドウ・シーケンスの
ビット数から前記同じ値のビット数を減算したビット数
を有する取り得るシーケンスをインデックスとして有
し、前記インデックスに対応付けられる前記ウィンドウ
・シーケンスの取り得るシーケンスに従って計算された
エントリ値を有するルックアップ・テーブルを生成する
手段を具える、請求項5に記載の暗号装置。 - 【請求項7】 前記演算手段は、前記導出されたウィン
ドウ・シーケンスの前記同じ値の所定のビット以外のビ
ットのシーケンスをインデックスとして用いて、テーブ
ルをルックアップすることによって、前記演算を行うも
のである、請求項5に記載の暗号装置。 - 【請求項8】 前記導出する手段は、前記uビット・シ
ーケンスから、前記uビット・シーケンスにおける対応
する所定の位置に配置された前記ウィンドウ・シーケン
スの前記同じ値を減算して別のシーケンスを生成し、前
記別のシーケンスから前記ウィンドウ・シーケンスを導
出するものである、請求項5に記載の暗号装置。 - 【請求項9】 情報処理装置において使用するための、
秘密鍵を用いて公開鍵暗号処理を行うプログラムであっ
て、 前記公開鍵暗号のための或る値dを表す複数uビット・
シーケンスから複数m個のウィンドウ・シーケンスを導
出するステップを実行させ、 前記m個のウィンドウ・シーケンスのビット総数は前記
uビット・シーケンスのビット数uより多く、各ウィン
ドウ・シーケンスのビット数はuより少なく、前記m個
のウィンドウ・シーケンスの中の2つうちの一方のウィ
ンドウ・シーケンスにおける或るビット位置と他方のウ
ィンドウ・シーケンスにおける或るビット位置とが、前
記uビット・シーケンスにおける同じビット位置に関係
付けられるものであり、 前記m個のウィンドウ・シーケンスの中の1つのウィン
ドウ・シーケンスにおける所定の位置のビットは、他の
ウィンドウ・シーケンスの対応する所定の位置のビット
と同じ値を有するものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
と前記公開鍵暗号のための別の或る値とに従って演算を
行って、処理済みデータを生成するステップを実行させ
るよう動作可能なプログラム。 - 【請求項10】 情報処理装置において秘密鍵を用いて
公開鍵暗号処理を行う方法であって、 前記公開鍵暗号のための或る値dを表す複数uビット・
シーケンスから複数m個のウィンドウ・シーケンスを導
出するステップを実行させ、 前記m個のウィンドウ・シーケンスのビット総数は前記
uビット・シーケンスのビット数uより多く、各ウィン
ドウ・シーケンスのビット数はuより少なく、前記m個
のウィンドウ・シーケンスの中の2つうちの一方のウィ
ンドウ・シーケンスにおける或るビット位置と他方のウ
ィンドウ・シーケンスにおける或るビット位置とが、前
記uビット・シーケンスにおける同じビット位置に関係
付けられるものであり、 前記m個のウィンドウ・シーケンスの中の1つのウィン
ドウ・シーケンスにおける所定の位置のビットは、他の
ウィンドウ・シーケンスの対応する所定の位置のビット
と同じ値を有するものであり、 さらに、前記導出されたm個のウィンドウ・シーケンス
と前記公開鍵暗号のための別の或る値とに従って演算を
行って、処理済みデータを生成するステップを含む、方
法。
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)
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 |
-
2002
- 2002-07-10 JP JP2002201785A patent/JP4108391B2/ja not_active Expired - Fee Related
Cited By (19)
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 |