JPH08202263A - 暗号化システムでの羃乗演算方法及びその装置 - Google Patents
暗号化システムでの羃乗演算方法及びその装置Info
- Publication number
- JPH08202263A JPH08202263A JP7017333A JP1733395A JPH08202263A JP H08202263 A JPH08202263 A JP H08202263A JP 7017333 A JP7017333 A JP 7017333A JP 1733395 A JP1733395 A JP 1733395A JP H08202263 A JPH08202263 A JP H08202263A
- Authority
- JP
- Japan
- Prior art keywords
- exponent
- bit
- blocks
- block
- calculating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Abstract
素を基にするモジュラ羃乗演算をより速く遂行するため
の羃乗演算方法及びその装置を提供する。 【構成】 指数Rのビット列を分割する指数分割過程
と、前記指数Rからビット列Ri,j を生成する過程と、
前記Ri,j を二進数形態で生成する過程と、gi を基数
gを利用して生成する過程と、gR を前記Ri,j および
gi を利用して生成する過程と、整数fおよび整数jに
対してG[j][f]を計算して記憶する過程と、gR を計算
する過程を含み、非常に簡単でありながらもより良い性
能をなし得る。また、本方法は広い範囲の時間−記憶容
量のトレードオフにより多様な計算環境に融通性よく応
用可能である。特に、非常に小さい記憶部を備えるスマ
ートカードによる計算速度を根本的に向上させる。さら
に、本発明はgR yE 形態の計算速度も向上させる。
Description
て要求される固定した基本要素を基とするモジュラ羃乗
演算を、より速く遂行するための羃乗演算方法及びその
装置に係り、特に固定した基本要素に依存する事前計算
テーブルを利用した羃乗演算方法及びその装置に関す
る。
り初めて公開鍵暗号システムの概念が紹介されて以来、
大部分の暗号プロトコルが公開鍵暗号方式に基づいて開
発されてきた。公開鍵暗号システムは、数学的に非常に
難しい問題の一方向性を利用して公開鍵と秘密鍵とを計
算することにより、公開鍵が知られてもここから秘密鍵
を導くのが計算上不可能である事実を利用している。
グループでの離散的対数問題と合成数を素因数分解する
問題とである。ところが、このような問題に基づいて設
計された暗号システムは、適法な使用者にとっても、従
来の暗号システムに比べて計算量が多くて速度が遅いと
いう短所を有する。したがって、計算量を減らすための
アルゴリズムの開発が重要な研究分野となっている。
的な演算が、有限グループ(代表的に多く使用されるグ
ループとしては、整数リングや有限体(Finite Field)
上の掛け算群、有限体上で定義された楕円曲線上の足し
算群などがある)での羃乗演算である。一般的に、羃乗
演算とはグループのランダムな2つの要素XとRとに対
してXR を計算することを言う。多くの暗号プロトコル
でグループの固定した基本要素gを基にランダムな指数
Rに対して羃乗gR を計算するのが必要である。その例
として、離散的対数問題の難しさを利用する大部分のプ
ロトコル、特に最も基本的な暗号プロトコルに属する識
別およびディジタル署名方式がある。
Nは大きい素数又は2つの大きい素数の積)での速い羃
乗演算の問題は、大部分の公開鍵暗号化システムの効率
的な遂行に非常に重要である。以下では、便宜上計算が
ZN に対して遂行されると仮定し、したがって掛け算は
“multiplication mod N”を意味する。以下の説明に
おいて、gはZN の固定した要素、Rは[0,2n )で
のnビットランダム指数として使用される。整数Sに対
するSのビット長さ又は集合Sに対するSのカージナリ
ティ(cardinality)は|S|で表記される。また、xよ
り小さくない最小整数は「x(例えば、「1.29=2)、
xより大きくない最大整数はx」(例えば、1.29」=
1)で表記される。
(square-and-multiply)方法として知られる二進アルゴ
リズムを使用する。512ビットの法(modulus)と指数
に対して、該方法は平均766回の掛け算、最悪の場合
に1022回の掛け算が必要である。符号二進アルゴリ
ズムは、平均682回、最悪の場合でも768回にまで
必要な掛け算の数を減らすことができる。
すると、その遂行能力をさらに相当向上させることがで
きる。D.E.Knuth“The art of computer programm
ing”,Vol. 2 : Seminumerical algorithms, second E
dition, Addison-wesley, 1981 の5ウインドウアルゴ
リズムは、16回の掛け算のオンライン事前計算を含め
て、平均およそ609回の掛け算で羃乗演算ができる。
速いアルゴリズムは、アディションチェーン(addition
chain)に基づくウインドウ方法であり、ここで“1
0”のようにさらに大きいウインドウを使用することが
できるが、中間値のためのさらに多くの記憶部が要求さ
れる。最も短いアディションチェーンを捜すのが、NP
完全問題(complete problem)であるが、発見的な解決
法を適用して、およそ長さ605のアディションチェー
ンが計算され得ると報告されている。
わち、R.L.Rivest, A.Shamir and L.Adleman “A metho
d for obtaining digital signatures and public-key
cryptosystems”, communication ACM, 21(2), 120-12
6, 1978 )、およびElGamal(T.ElGamal “A public
key cryptosystem and a signature scheme based on t
he discrete logarithm”, IEEE Transaction Informat
ion Theory 31(4),469-472, 1985) のように羃乗演算を
要求するいずれの暗号化システムにも使用され得る。
対数問題に基づく多くの暗号プロトコルにおいては、固
定した基数gおよびランダムに選択された指数Rに対す
るgR を計算する必要がある。固定した基本要素によ
り、要求される掛け算の数を減らすために事前計算テ−
ブルを使用できるが、勿論事前計算値のための記憶部が
必要である。
定した基本要素に依存する事前計算テ−ブルを利用し
て、羃乗演算をより高速に行える羃乗演算方法及びその
装置を提供することである。本発明で提示した方法は、
上記いずれのグループにでも適用が可能である。
に、本発明による暗号化システムでの羃乗演算方法は、
暗号化システムで固定要素gとランダムに選択されたn
ビット指数Rに対して羃乗演算gR を計算するための羃
乗演算方法において、(a)前記指数Rのビット列を所
定数hのブロックに分割し、前記分割された各ブロック
のビット列を所定数vの副ブロックに分割して、前記指
数Rのビット列をv列およびh行からなるh×v配列に
分割する指数分割過程と、(b)各ブロックおよび副ブ
ロックの位置に対応する値を考慮し、前記指数Rから次
式のようにi番目行に当たるブロックのビット列Ri お
よびi番目行のj番目列に該当する副ブロックのビット
列Ri,j を生成する過程と、
さい全ての整数i、および0と同じか大きくvより小さ
い全ての整数jに対して、次式のように二進数の形態で
生成する過程と、
j番目列のブロックに該当するビット列Ri,j のk番目
ビットの値、(d)0より大きくhより小さい全ての整
数iに対して、gi を次式のように前記基数gを利用し
て生成する過程と、
よび前記(d)過程でのgi を利用して、次式のように
生成する過程と、
整数f(ここで、fは二進数でeh- 1 ,eh-2 …e1 ,
e0 の形態で表わされる)、および0と同じか大きくv
より小さい全ての整数jに対して、次の値を計算して記
憶する過程と、
次式によりgR を計算する過程と、
該当するビット列でk番目に位置するビットの、iが0
からh−1までの全てのブロックに亙るhビットの大き
さのビット列からなる値、を含むことを特徴とする。こ
こで、前記(a)過程では、前記副ブロック内に含まれ
るビットの数がほぼ同一になるように分割する。また、
前記(a)過程では、前記副ブロック内に含まれるビッ
トの数が相異なるように分割する。また、前記(g)過
程では、vが2つの整数pとwの積(v=pw)で表わ
される場合に、p個のプロセッサを備え、i(i=0,
…,p−1)番目のプロセッサが次式による演算を遂行
して、
ステムでの羃乗演算方法は、暗号化システムで固定要素
gとランダムに選択されたnビット指数Rに対して羃乗
演算gR を計算するための羃乗演算方法において、
(a)前記指数Rのビット列を所定数hのブロックに分
割し、前記分割された各ブロックのビット列を所定数v
の副ブロックに分割することにより、前記指数Rのビッ
ト列をv列およびh行からなるh×vの配列とする指数
分割過程と、(b)各副ブロックに含まれるビットの数
をbとした場合に、0より大きく2 h より小さい全ての
整数f(ここで、fは二進数でeh-1 ,eh-2 …e1 ,
e0の形態で表わされる)、および0と同じか大きくv
より小さい全ての整数jに対して、次の値を計算して記
憶する過程と、
次式によりgR を計算する過程と、
該当するビット列でk番目に位置するビットの、iが0
からh−1までの全てのブロックに亙るhビットの大き
さのビット列からなる値、を含むことを特徴とする。
又、本発明による暗号化システムでの羃乗演算装置は、
暗号化システムで固定要素gとランダムに選択されたn
ビット指数Rに対して羃乗演算gR を計算するための羃
乗演算装置において、(a)入力された前記指数Rのビ
ット列を、所定数hのブロックに分割し、前記分割され
た各ブロックのビット列を所定数vの副ブロックに分割
することにより、v列およびh行からなるh×vの配列
とする指数分割手段と、(b)各副ブロックに含まれる
ビットの数をbとした場合に、0より大きく2 h より小
さい全ての整数f(ここで、fは二進数でeh-1 ,e
h-2 …e1 ,e0の形態で表わされる)、および0と同
じか大きくvより小さい全ての整数jに対して、次の値
を計算する事前計算手段と、
を、j及びfの値に対応して記憶する記憶手段と、
(d)前記記憶された計算値を利用して、次式によりg
R を計算する羃乗計算手段と、
該当するビット列でk番目に位置するビットの、iが0
からh−1までの全てのブロックに亙るhビットの大き
さのビット列からなる値、を含むことを特徴とする。
算のための新しい方法が提示されたことにより、非常に
簡単でありながらもBGMW方法よりもさらに優れた演
算性能を達成し得る。
Brickell, D.M.Gordon, K.S.McCurley and D.Wilson
“Fast exponentiation with precomputation”, In Pr
oc.Eurocrypt'92, Balatonfured, Hungary, 1992 )方
法について簡単に調べた後、本発明の実施例を詳細に説
明し、更にこれらの方法による遂行能力を図面を利用し
て比較説明する。
おいて、Brickell,Gordon,McCurley,Wilsonにより提
案された従来の事前計算方法であるBGMW方法を簡単
に考察する。Eurocrypt ′92において、Brickellなどは
gR の計算速度を向上させるための方法を提案した。か
れらの基本戦略は、指数Rを基数bで次のように表現
し、全ての羃乗
用して、要求される記憶容量が増加する反面、計算時間
をさらに減少するように基本技法を拡張させ得る。BG
MW方法をさらに詳細に説明する。もし、ある整数が集
合Dからのディジットを使用して基数bで表わされると
すると、整数Dの集合は基数bに対する基本ディジット
集合と称される。次の式(1) が基数bに対する基本ディ
ジット集合となるように、乗数の集合Mおよびパラメー
タhが選択できると仮定する。
る。
り計算される。
∈M]に対して、羃乗
ルゴリズムにより約t|M|の事前計算値を利用して、
多くて(t+h−2)回の掛け算で計算され得る。
算の数は、最悪の場合(t+h−2)回、w=1,…,
hに対して
の掛け算、およびフォーループ(for-loop)のための
(2h−2)回の掛け算、であり、平均{t(b−1)
/b+h−2}回(ランダムに選択された指数に対し
て、t/bディジットは“0”と予想される)であるこ
とが容易に分かる。Dに対する最も明らかな例は、基数
bの数系(M={1},h=b−1,t=「logb(2n −
1))である。512ビット指数に対して、b=26の選
択は予想される掛け算の数を最小化する。このような基
本的な技法は、平均127.8回、最悪の場合132回
の掛け算および109個の事前計算値のための記憶部を
要求する。さらに適切な基数の選択はb=32である。
なぜならば、指数Rに対するディジットは1回に5ビッ
トを抽出することにより、基数変換(radix conversio
n)なく計算され得るからである。この基数において要
求される掛け算の数は、平均的な場合で只1つのみ増加
し、最悪の場合にも変わらず維持される。
合には明白な選択であるとしても、記憶部の数が109
以下に下がるにつれ遂行能力が相当落ちる。これによ
り、BGMW方法は、可用な記憶部が非常に小さい場合
に、その計算を遂行するための効率的な方法が提供でき
ないことが分かる。また、Brickellなどは、勿論事前計
算値のためにさらに多くの記憶部を利用するが、要求さ
れる掛け算の数を減少させるために他の数系を利用する
さまざまな技法を提供した。極端な例の1つは、集合M
を次の式のように選択する。
えば、w2(40)=3。すると、1≦di <bにおい
て、あるm∈M2 に対してdi =m又はdi =2mとな
る(すなわち、h=2)。このように、|M2 |「log
b (2n −1)個の値に対する記憶部を備えると、gR は平
均t回の掛け算、最悪の場合でもt(b−1) /b回の
掛け算で計算され得る。例えば、b=256(t=6
4,|M2 |=170)を採用すると、平均10880
個の事前計算値で平均63.75回の掛け算となる。Br
ickellなどが提示した2つのテ−ブルを、本実施例の方
法による結果と比較するために、図6の(A),(B)
に示す。
施例による事前計算テ−ブルを利用したgR の速い計算
のための羃乗演算方法を説明する。本方法は、もしnビ
ット指数Rが2つの同一のブロック(すなわち、R=R
1×2n/2 +R0 )で割られ、
掛け算の数をほぼ半分に減らせるという簡単な観察を一
般化したものである。ここで、二進アルゴリズムについ
てより詳細に説明する。nビット指数Rを2つの同一の
ブロックに分けると仮定すると、指数Rは次のようなR
0 ,R1 で示すことができる。
求めるためのアルゴリズムは次の通りである。
回数は、最悪の場合で、2(k−1)回、平均で7/4
(k−1)回になり、単にgR を二進アルゴリズムで計
算する時の掛け算の回数(最悪:2(n−1),平均:
3/2(n−1))に比べてほぼ半分に減らせることが
分かる。後述されるように、本願で提案された方法は、
BGMW方法に比べて、可用記憶容量が非常に小さいか
あるいは大きい場合にさらに効率的であり、また広い範
囲で時間−メモリのトレ−ドオフを与えるので、さらに
融通性がよい。また、制限された記憶容量および計算能
力を有するスマ−トカ−ドへの応用では、小さい記憶部
を使用するのが非常に重要であるが、BGMW方法はこ
の場合にそれほど効率的でない。
orr の識別および署名技法やその変形(例えば、Bricke
ll-McCurley 技法および Okamoto技法)の検証に必要な
gRyE (ここで、yは固定されず、Eの大きさはRの
大きさより一層小さい)を効率的に計算できる。このよ
うな種類の計算において、指数を非二進羃指数で表記す
るのは、オンライン計算の負荷を極めて増加させること
に注目しなければならない。
非常に適することを説明する。 <指数の分割>先ず、RをgR を計算するためのnビッ
ト指数とする。図1のように、指数Rをh個のブロック
Ri (0≦i≦h−1、ビット大きさa=「(n/
h))に分割し、各Ri はさらに小さいv個の副ブロッ
クRi,j (0≦j≦v−1、ビット大きさb=「(a/
v))に分割する。
要素gが与えられた場合、任意のnビットランダム数R
に対して、本実施例による事前計算方法を利用して羃乗
gRを計算するために、指数Rを分割する方法を示した
ものである。 <分割ブロックによるgR の表現>
R を次のように表現できる。
…ei,1 ei,0 がRi (0≦i<h)の二進表現とする
と、Ri,j (0≦j<v)は次のように二進で表記され
る。
i<2h および0≦j<vに対して事前計算されて記憶
されると仮定する。
と等価である。 <羃乗計算>図2のように事前計算値に対するテ−ブル
が記憶されていると、式(6) は次のように書き直せる。
0,bj+k(0≦j<b)である(Ij, k は、図1のj番目
のブロック列のk番目のビットから成る行方向のhビッ
ト列に対応する)。次のような一般的な自乗と掛け算方
法により、式(8) を使用してgR を直接計算する。該ア
ルゴリズムは、事前計算テ−ブルG[j][f]を利用
して、任意のnビットランダム数Rに対してgR を計算
するものであり、ここで、Rは図1のように分割され、
アルゴリズムに使用されるIj,k は該Rの配列から読み
出して使用する。
本実施例による羃乗演算方法をさらに詳細に考察するた
めに、具体的な例を通じて説明する。具体例において、
指数Rは32ビットであり、二進数で表わされるRの値
は次のようであると仮定する。
≦3)に分割され、各Ri はさらに小さい3(=v)つ
の副ブロックRi,j にさらに分割される。すると、各ブ
ロックの大きさaおよび各副ブロックの大きさbは次の
通りである。 a=「(n/h)=「(32/4)=8ビット b=「(a/v)=「(8/3)=3ビット 図3は前述したように、本例で適用される32ビットの
指数Rに対する分割配置図を示すものである。図3を参
照して、指数Rは式(4) により次のように表記され得
る。
りである。 R0 =01011011(2) =01(2) *26 + 011(2) *23 +
011(2) *20 R1 =10010001(2) =10(2) *26 + 010(2) *23 +
011(2) *20 R2 =10100111(2) =10(2) *26 + 100(2) *23 +
111(2) *20 R3 =01100010(2) =01(2) *26 + 100(2) *23 +
010(2) *20 g0 =gとし、gi を
=(g256)3 すると、式(5) によりgR を次のように表現できる。
(i=0,1,2,3)の二進表現なので、Ri,j (j
=0,1,2)は次のように二進で表わされる。 Ri,j =ei,j3+2 ei,j3+1 ei,j3+0 したがって、gR は次のように書き直せる。
よび0≦j<3〕に対して事前計算され記憶されると仮
定する。
いう。すなわち、次の通りである。 G[0][1]=g3 0g2 0g1 0g0 1 G[0][2]=g3 0g2 0g1 1g0 0 G[0][3]=g3 0g2 0g1 1g0 1 G[0][4]=g3 0g2 1g1 1g0 1 ・・・・・・・・・・・ G[0][14] =g3 1g2 1g1 1g0 0 G[0][15] =g3 1g2 1g1 1g0 1 そして、式(7) により、
えば、j=1に対して、 G[1][1]=(G[0][1])8 G[1][2]=(G[0][2])8 ・・・・・・・・・・・ G[1][15] =(G[0][15] )8 そして、j=2に対して、 G[2][1]=(G[1][1])8 =〔(G[0][1])8 〕8 =(G[0][1])64 G[2][2]=(G[1][2])8 =〔(G[0][2])8 〕8 =(G[0][2])64 ・・・・・・・・・・・ G[2][15] =(G[1][15] )8 =〔(G[0][15] )8〕8 =(G[0][15])64 次に示した図4は、前述したような方法により求められ
た事前計算値G[j][f]をメモリに記憶する配列形態、お
よびここに記憶される値を示す。
き直せる。
1,3j+ke0,3j+k(0≦j<3)である。全てのjおよび
kに対してIj,k を計算すると次の通りである。 I0,0 =e3,0 e2,0 e1,0 e0,0 =0111(2) =7 I0,1 =e3,1 e2,1 e1,1 e0,1 =1101(2) =13 I0,2 =e3,2 e2,2 e1,2 e0,2 =0100(2) =4 I1,0 =e3,3 e2,3 e1,3 e0,3 =0001(2) =1 I1,1 =e3,4 e2,4 e1,4 e0,4 =0011(2) =3 I1,2 =e3,5 e2,5 e1,5 e0,5 =1100(2) =12 I2,0 =e3,6 e2,6 e1,6 e0,6 =1001(2) =9 I2,1 =e3,7 e2,7 e1,7 e0,7 =0110(2) =6 式(8a)を利用してgR を前述したアルゴリズムによって
計算する。
ある。以上で具体的な例を通じて事前計算テーブルを利
用した羃乗演算方法を詳細に説明した。勿論指数Rの大
きさは説明を簡単にするために32ビットであると仮定
したが、一般に512ビット又はそれ以上のビットの大
きさを有するRに対しても、同一の方法により本実施例
の具体的例と同様に説明され得る。
アルゴリズムにより要求される掛け算の回数を数える。
図1の(v−1)番目のブロックは、bビットで満たさ
れないこともあることに注目しなければならない。事実
上、それは(bv−a)ビットである。このように内部
のフォーループ(for-loop)で共に乗じられる項の数は、
一番目の(bv−a)ラウンドに対するv回、およびそ
の余りの(b−bv+a)ラウンドに対する(v+1)
回である。よって、要求される全体の掛け算の回数は、
最悪の場合、多くて{v(bv−a)+(v+1)(b−
bv+a)−2}=(a+b−2)回である。Ij,k が
“0”である確率が1/2h であり、前記アルゴリズム
によりIj,k が平均a回発生すると仮定できるために、
平均的な掛け算の回数は{a(2h −1)/2h +b−
2}回で与えられる。もちろん、このような遂行能力
は、(2h −1)v個の事前計算値に対する記憶部を具
備して達成される。
Rはほぼ同一の大きさの(h×v)ブロックに区分さ
れ、これらの(h×v)ブロックは(h×v)の四角形
で配列されると仮定した。大部分の場合に、このような
分割と配列とは、与えられた記憶容量に対して他のもの
よりさらに良い遂行能力を発揮するが、ある場合にはそ
うでないこともある。
る2つの相異なる構成を示したものであり、図5に示し
た2つの構成、すなわち512ビット指数が2つの相異
なる方式に分割され配列された構成を考察する。1番目
の構成は(5×5)の構成で、前記において分析した場
合に該当し、155個の値に対する記憶部を具備し、平
均118.78回の掛け算(最悪の場合122回)とい
う遂行能力を示す。一方、2番目の構成は、(5×1|
6×2)の構成で157個の値に対する記憶部を使用し
て、平均117.13回の掛け算(最悪の場合119
回)で羃乗演算ができる。よって、2番目の構成の方が
さらに良い選択であることが分かる。
2 )}型の構成で、最悪/平均の場合での遂行能力に対
する一般的な公式を容易に引き出すことができる。b1
およびb 2 をそれぞれ(h1 ×v1 )および(h2 ×v
2 )に区分されたブロックの大きさとする。さらに良い
遂行能力のために、b2 はb1 より大きいか等しくなけ
ればならないので、(h×v)構成でのbのような方法
により得られる。このように、b1 およびb2 は次のよ
うに求められる。
×v)構成に対する公式からaを(h1 v1 +h2 v
2 )に、そしてbをb2 にそれぞれ置換することにより
直接求められる。これは最悪の場合、{b1 v1 +b2
(v2 +1)−2}回の掛け算という結果になる。同様
に、平均的な掛け算の回数は次の式の通りである。
達成される。2つの構成形態である(h×v)および
{h1 ×v1 |h2 ×v2 (h2 =h 1 +1)}と異な
るいずれの構成も、与えられた記憶容量に対してより良
い遂行能力が示せないことが容易に分かる。 <BGMW方法と本方法との比較>BGMW方法と本実
施例の方法による遂行能力を比較するために、512ビ
ットの法に対する掛け算の回数および要求される記憶容
量を、160ビットおよび512ビットの指数のそれぞ
れについて、BGMW方法を図6に、本実施例を図7,
図8にそれぞれ示した。
ためのものであり、図6の(A)は160ビットの指数
について、そして、図6の(B)は512ビットの指数
について、基数b,乗数の集合M,パラメータh,事前
計算値のための記憶容量および最悪の場合と平均的な場
合の掛け算の回数を示している。図7,図8は、提案さ
れた本実施例の遂行能力を説明するためのものであり、
図7は160ビットの指数について、そして図8は51
2ビットの指数について、指数Rの構成,事前計算値の
ための記憶容量および最悪の場合と平均的な場合の掛け
算の回数を示している。
べて、さらに簡単であるだけでなく、さらに優れた遂行
能力を示すことに注目せねばならない。特に、広い記憶
容量の範囲に対する効率性のために、本方法は可用な記
憶容量に対応して多様なコンピュータ環境に融通性よく
応用できる。例えば、スマートカードによる計算速度を
高めるために、(4×2)構成が選択できる。すると、
512ビットの係数および指数に対して、gR の計算は
1920バイト(ここで、1つの事前計算のための記憶
容量は512ビット(64バイト)が必要である)の記
憶部により、平均182回の掛け算で行われる。反面、
比較的に大きい記憶部が使用可能なら、約32Kバイト
の記憶部で平均90.42回の掛け算を遂行する、例え
ば(7×4)構成が選択できる。
署名検証において、どのようにして計算速度を向上させ
得るかについて説明する。離散的対数問題に基づいて、
多くの識別およびディジタル署名技法が開発されてい
る。このような全ての技法で、些かのモジュラ掛け算と
共に、証明者(prover)(又は署名者(signer))はランダ
ムRに対するgR を計算する必要があり、これは以上説
明された方法により効率的に遂行され得る。
証者(verifier)はgR yE 形態の計算を遂行する必要
がある(ここで、yは証明者(又は署名者)の公開鍵に
該当し、よって、プロトコルの各ラン(run) で変わ
る)。Eの大きさは大体識別技法において20と40と
の間に置かれ、その対応する署名技法ではおよそ80で
ある。
た方法の性能を調べる。tをEの大きさとする。もし、
t≦bなら、gR yE は最悪の場合に(a+b+t−
2)回の掛け算で、平均{a(2h −1)/2h +b+
0.5t−2}回の掛け算で計算され得ることは明らかであ
る。t>bの場合には、上記のように進行したり、又は
Eをさらに小さいブロックに区分した後、計算すること
もできる。
−2)回の掛け算で、平均{a(2 h −1)/2h +1.
5t−2}回の掛け算で計算が遂行される。しかしなが
ら、もしtがbより非常に大きいならば、Eをさらに小
さいブロックに分けることにより、その遂行能力をさら
に向上させ得る。したがって、さらに一般的な公式のた
めに、Eがほぼ同じ大きさのuブロックに区分されると
仮定する(gR yE を計算するための全体構成を(u×
1|h×v)と考える)。
る(すなわち、c=「(t/u))。すると、先ずk=
1,2,…,u−1に対する
しなければならず、これら全てでは{(u−1)c+2
u −u−1}回の掛け算が必要である。注目のtの範囲
(すなわち、t=80までの範囲)に対して、uは多く
て3を採る。もし、c≦bなら、最悪の場合に最大c回
の掛け算の追加で十分である(平均{c(2u −1)/
2u }回)。したがって、この場合に要求される掛け算
の全体回数は次の通りである。
3)回 平均:[a(2h-1)/2h +b+c(u2u-1)/2u +
2u −u−3]回 同様に、c>bの場合に対して、掛け算の数は次の通り
である。 最悪の場合:{a+(u+1)c+2u −u−3}回 平均:[a(2h-1)/2h +c{(u+1)2u −1}/2
u +2u −u−3]回 本願で提案された方法により、Schnorr のような識別お
よび/又は署名技法が、スマートカード上においてさら
に実用的に実現される。例えば、512ビットの法,1
60ビットの指数およびt=30の場合、もし1920
バイトの記憶部が使用可能なら(4×2構成)、検証状
態は平均80.5回の掛け算で検査される。同様に、t
=80の署名は、同じ記憶部を使用して、平均144.
13回の掛け算で検証される。
算、およびt=80に対して平均259.0回の掛け算
を要求する二進方法と比べると、これは非常に小さい記
憶部で相当な速度向上となる。しかも、識別又は署名検
証は、常に大きい容量のメモリが備えられるより強力な
ターミナルで遂行される。このような環境で、例えば
(8×2)構成を採用する場合、32Kバイトの記憶部
を利用すれば、t=30に対して平均60.2回の掛け
算で識別検証を、そしてt=80に対して平均126.
6回の掛け算で署名検証が遂行できる。
ケーションの追加で、gR yE を計算するための掛け算
の回数をさらに相当数減少させ得ることを説明する。す
なわち、yは署名者に固定した数なので、もし署名者
が、k=1,2,…,u−1に対する
達すれば、検証者はこれらを準備するためのオンライン
計算の負荷が節約できる。例えば、t=80の署名技法
に対して、もし署名者がメッセージに対する署名と共
に、追加的な512ビットのブロックy1 ,y2 、ここ
で、
により平均90.13回の掛け算で行われる。したがっ
て、単に128バイト情報の伝送の追加により54回の
掛け算が節約される。これは平均259回の掛け算を要
求する二進方法に比べて、平均しておよそ3倍の速度向
上に該当する。BGMW方法は、前記考慮したいずれの
場合でもgR yE 形態の計算にそれほど効率的でないこ
とが分かる。すなわち、伝送の追加がない場合、もし指
数が非二進の羃乗基数で表記されれば、yE に対して要
求されるオンライン事前計算を遂行するのに、さらに多
くの計算が必要になる。一方、追加伝送が許容される場
合は、小さい基数の使用のために、さらに多くの事前計
算値が伝送されなければならない。
方法は、またアメリカのディジタル署名標準(DSS;
Digital Signature Standard)の検証の速度向上に使用
され得る。DSSでは、|R|=|E|=160のgR
yE 形態の計算の遂行が必要であり、よって、追加伝送
がなければ事前計算によって何の利点も得られない。し
かしながら、もし署名者が3つの追加ブロック{y1 ,
y2 ,y3 }、ここで、
用すると、署名は平均124回の掛け算で検証される。
これは、512ビット法に対して平均279回の掛け算
を要求する二進方法に比べて、単に1920バイトの記
憶部および192バイトの追加伝送のみで、2倍以上の
速度向上が得られることを意味する。図9は、前述した
ように、署名者が署名と共に公開鍵に対する追加の3つ
の事前計算値を伝送するという仮定のもとで、3つの署
名技法(Schnorr ,DSSおよび Brickell-McCurley)
での署名生成および検証で要求される掛け算の回数を示
している。ここでは、他のリダクションモッド q(re
duction mod q )およびマルチプリケーティブインバー
スモッド q(multiplicative inverse mod q)(ここ
で、qは約160ビットの大きさの素数である)のよう
にそれほど重要でない演算は無視し、単に羃乗演算に必
要な掛け算の回数のみを考慮している。
が例として挙げられるが、これは前者はスマートカード
の応用に適合し、後者は割合に大容量の記憶装置を備え
た一般的な応用に適合するからである。比較のために、
二進方法の遂行能力を共に示した。 <並列処理例>次に、本願で提案された方法は、並列処
理にも非常に適することが分かる。すなわち、j番目の
プロセッサを(h×v)構成(図1参照)のj番目列に
割り当てることにより、BGMW方法よりさらに効率的
に多重プロセッサによる並列化が実現される。
番目のプロセッサは次の式(10)に含まれる式(9) を計算
するために割り当てることができる。ここで、各プロセ
ッサはローカルメモリ内に(2h −1)個の事前計算値
を記憶すると仮定する。
回の掛け算で完了する。その後、最終結果を求めるため
に追加で「(log2v )回の掛け算が必要である。よっ
て、掛け算の全体回数は、{2(b−1)+「(log2v
)}回である。図10は並列処理において、プロセッ
サの数およびプロセッサ当たり必要な記憶部により、1
60/512ビットの指数に対して要求される掛け算の
回数を示す。ここで、npはプロセッサの数(v)を、
そしてspはプロセッサ当たり記憶容量(2h −1)を
意味する。
ッサでもその性能が非常に向上することが分かる。例え
ば、512ビットの法および指数に対しては、4つのプ
ロセッサが使用可能であり、各プロセッサは255個の
事前計算値のためのローカル記憶部(約16Kバイト)
を備える場合に、gR を32回の掛け算で計算できる。
例えば、16個のようにさらに多いプロセッサによれ
ば、羃乗演算は同じ記憶容量で10回の掛け算により行
われる。
してv個のプロセッサが使用可能な場合のみを考慮した
が、より一般的にさらに小さい数のプロセッサで(h×
v)構成を利用することもできる。もし、p個のプロセ
ッサが使用可能であり、v=pwとする場合、各プロセ
ッサがw個の列に該当するh×wを計算するように割り
当てる。この場合、各プロセッサは、ローカル記憶部に
{(2h −1)w}個の事前計算値を記憶する必要があ
る。そして、この際に要求される掛け算の回数は、
{(w+1)b+「(log2p )−2}回になることが分
かる。実際、大部分の場合、このように各プロセッサに
多数の列を割り当てるのが、図10で与えられた値より
時間−記憶容量のトレードオフにおいてさらに有利であ
る。
計算による速い羃乗演算のための新しい構成を提案する
ことにより、非常に簡単でありながらもBGMW方法よ
りもさらに良い遂行能力をなし得る。また、本発明の方
法は、広い範囲の時間−記憶容量のトレードオフによ
り、多様な計算環境に融通性よく応用可能である。
さい記憶部を備えたスマートカードによる計算速度も相
当向上させ得る。また、本発明の方法は、gR yE (y
は変数)形態の計算速度も向上させ得る。これは、Schn
orr 型の識別および署名技法をさらに実用性よく実現す
る。なぜならば、証明者(署名者)だけでなく、検証者
も適度な記憶容量により非常に大きい計算上の利点が得
られるからである。
リズムがどのように並列化され得るかを説明した。この
ような並列処理は、多重のプロセッサを備えた高性能の
サーバ(server)装置で特に有用である。
を分割配置する方法を示した図である。
図である。
る。
示した図である。
求する2つの相異なる構成を示す図である。
ある。
の図である。
の図である。
署名技法での署名生成および検証で要求される掛け算の
数を示す図である。
ある。
Claims (6)
- 【請求項1】 暗号化システムで固定要素gとランダム
に選択されたnビット指数Rに対して羃乗演算gR を計
算するための羃乗演算方法において、 (a)前記指数Rのビット列を所定数hのブロックに分
割し、前記分割された各ブロックのビット列を所定数v
の副ブロックに分割して、前記指数Rのビット列をv列
およびh行からなるh×v配列に分割する指数分割過程
と、 (b)各ブロックおよび副ブロックの位置に対応する値
を考慮し、前記指数Rから次式のようにi番目行に当た
るブロックのビット列Ri およびi番目行のj番目列に
該当する副ブロックのビット列Ri,j を生成する過程
と、 【数1】 (c)前記Ri,j を0より大きくhより小さい全ての整
数i、および0と同じか大きくvより小さい全ての整数
jに対して、次式のように二進数の形態で生成する過程
と、 【数2】 ここで、ei,jb+kは、指数Rのi番目行のj番目列のブ
ロックに該当するビット列Ri,j のk番目ビットの値、 (d)0より大きくhより小さい全ての整数iに対し
て、gi を次式のように前記基数gを利用して生成する
過程と、 【数3】 (c)gR を前記(c)過程でのRi,j および前記
(d)過程でのgi を利用して、次式のように生成する
過程と、 【数4】 (f)0より大きく2h より小さい全ての整数f(ここ
で、fは二進数でeh- 1 ,eh-2 …e1 ,e0 の形態で
表わされる)、および0と同じか大きくvより小さい全
ての整数jに対して、次の値を計算して記憶する過程
と、 【数5】 (g)前記記憶された計算値を利用して、次式によりg
R を計算する過程と、 【数6】 ここで、Ij,k は、j番目の副ブロックに該当するビッ
ト列でk番目に位置するビットの、iが0からh−1ま
での全てのブロックに亙るhビットの大きさのビット列
からなる値、を含むことを特徴とする暗号化システムで
の羃乗演算方法。 - 【請求項2】 前記(a)過程では、前記副ブロック内
に含まれるビットの数がほぼ同一になるように分割する
ことを特徴とする請求項1記載の暗号化システムでの羃
乗演算方法。 - 【請求項3】 前記(a)過程では、前記副ブロック内
に含まれるビットの数が相異なるように分割することを
特徴とする請求項1記載の暗号化システムでの羃乗演算
方法。 - 【請求項4】 前記(g)過程では、vが2つの整数p
とwの積(v=pw)で表わされる場合に、p個のプロ
セッサを備え、i(i=0,…,p−1)番目のプロセ
ッサが次式による演算を遂行して、 【数7】 並列処理することを特徴とする請求項1記載の暗号化シ
ステムでの羃乗演算方法。 - 【請求項5】 暗号化システムで固定要素gとランダム
に選択されたnビット指数Rに対して羃乗演算gR を計
算するための羃乗演算方法において、 (a)前記指数Rのビット列を所定数hのブロックに分
割し、前記分割された各ブロックのビット列を所定数v
の副ブロックに分割することにより、前記指数Rのビッ
ト列をv列およびh行からなるh×vの配列とする指数
分割過程と、 (b)各副ブロックに含まれるビットの数をbとした場
合に、0より大きく2 h より小さい全ての整数f(ここ
で、fは二進数でeh-1 ,eh-2 …e1 ,e0の形態で
表わされる)、および0と同じか大きくvより小さい全
ての整数jに対して、次の値を計算して記憶する過程
と、 【数8】 (c)前記記憶された計算値を利用して、次式によりg
R を計算する過程と、 【数9】 ここで、Ij,k は、j番目の副ブロックに該当するビッ
ト列でk番目に位置するビットの、iが0からh−1ま
での全てのブロックに亙るhビットの大きさのビット列
からなる値、を含むことを特徴とする暗号化システムで
の羃乗演算方法。 - 【請求項6】 暗号化システムで固定要素gとランダム
に選択されたnビット指数Rに対して羃乗演算gR を計
算するための羃乗演算装置において、 (a)入力された前記指数Rのビット列を、所定数hの
ブロックに分割し、前記分割された各ブロックのビット
列を所定数vの副ブロックに分割することにより、v列
およびh行からなるh×vの配列とする指数分割手段
と、 (b)各副ブロックに含まれるビットの数をbとした場
合に、0より大きく2 h より小さい全ての整数f(ここ
で、fは二進数でeh-1 ,eh-2 …e1 ,e0の形態で
表わされる)、および0と同じか大きくvより小さい全
ての整数jに対して、次の値を計算する事前計算手段
と、 【数10】 (c)前記事前計算手段で計算された値を、j及びfの
値に対応して記憶する記憶手段と、 (d)前記記憶された計算値を利用して、次式によりg
R を計算する羃乗計算手段と、 【数11】 ここで、Ij,k は、j番目の副ブロックに該当するビッ
ト列でk番目に位置するビットの、iが0からh−1ま
での全てのブロックに亙るhビットの大きさのビット列
からなる値、を含むことを特徴とする暗号化システムで
の羃乗演算装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR95-224 | 1995-01-07 | ||
KR1019950000224A KR0138277B1 (ko) | 1995-01-07 | 1995-01-07 | 암호화시스템에서의 멱승연산방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08202263A true JPH08202263A (ja) | 1996-08-09 |
JP3540852B2 JP3540852B2 (ja) | 2004-07-07 |
Family
ID=19406503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01733395A Expired - Fee Related JP3540852B2 (ja) | 1995-01-07 | 1995-02-03 | 暗号化システムにおける羃乗演算を含む暗号化方法及びその装置 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP3540852B2 (ja) |
KR (1) | KR0138277B1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6263081B1 (en) | 1997-07-17 | 2001-07-17 | Matsushita Electric Industrial Co., Ltd. | Elliptic curve calculation apparatus capable of calculating multiples at high speed |
JP2010078833A (ja) * | 2008-09-25 | 2010-04-08 | Toshiba Corp | 計算装置、方法及びプログラム |
KR101271170B1 (ko) * | 2012-05-31 | 2013-06-04 | 삼성에스디에스 주식회사 | 비밀키 생성을 위한 고속연산 수행 방법 및 장치 |
-
1995
- 1995-01-07 KR KR1019950000224A patent/KR0138277B1/ko not_active IP Right Cessation
- 1995-02-03 JP JP01733395A patent/JP3540852B2/ja not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6263081B1 (en) | 1997-07-17 | 2001-07-17 | Matsushita Electric Industrial Co., Ltd. | Elliptic curve calculation apparatus capable of calculating multiples at high speed |
JP2010078833A (ja) * | 2008-09-25 | 2010-04-08 | Toshiba Corp | 計算装置、方法及びプログラム |
KR101271170B1 (ko) * | 2012-05-31 | 2013-06-04 | 삼성에스디에스 주식회사 | 비밀키 생성을 위한 고속연산 수행 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP3540852B2 (ja) | 2004-07-07 |
KR960029510A (ko) | 1996-08-17 |
KR0138277B1 (ko) | 1998-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lim et al. | More flexible exponentiation with precomputation | |
US5999627A (en) | Method for exponentiation in a public-key cryptosystem | |
De Win et al. | A fast software implementation for arithmetic operations in GF (2 n) | |
US5854759A (en) | Methods and apparatus for efficient finite field basis conversion | |
Maurer | Towards the equivalence of breaking the Diffie-Hellman protocol and computing discrete logarithms | |
Blake et al. | Elliptic curves in cryptography | |
Harper et al. | Public-key cryptosystems with very small key lengths | |
Gordon | A survey of fast exponentiation methods | |
Granger et al. | Hardware and software normal basis arithmetic for pairing-based cryptography in characteristic three | |
US6618483B1 (en) | Elliptic curve encryption systems | |
CA2369545C (en) | Method and apparatus for elliptic curve scalar multiplication | |
US6266688B1 (en) | Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed | |
JP4137385B2 (ja) | 公開鍵および秘密鍵による暗号化方法 | |
US8862651B2 (en) | Method and apparatus for modulus reduction | |
Odlyzko | Discrete logarithms and smooth polynomials | |
Karthikeyan | Survey of elliptic curve scalar multiplication algorithms | |
US8755517B2 (en) | Method for generic-point parallel elliptic curve scalar multiplication | |
Avanzi | On multi-exponentiation in cryptography | |
US6609141B1 (en) | Method of performing modular inversion | |
Wang et al. | Efficient implementation of public key cryptosystems on MICAz and TelosB motes | |
JP3540852B2 (ja) | 暗号化システムにおける羃乗演算を含む暗号化方法及びその装置 | |
EP1725931B1 (en) | Method for multi-exponentiation or multi-scalar multiplication | |
Clancy | Analysis of FPGA-based hyperelliptic curve cryptosystems | |
Jung | Implementing the RSA cryptosystem | |
Freking et al. | Montgomery modular multiplication and exponentiation in the residue number system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20000225 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040326 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090402 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100402 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110402 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120402 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |