JP2000132096A - スカラー倍算方法およびその装置 - Google Patents
スカラー倍算方法およびその装置Info
- Publication number
- JP2000132096A JP2000132096A JP10305320A JP30532098A JP2000132096A JP 2000132096 A JP2000132096 A JP 2000132096A JP 10305320 A JP10305320 A JP 10305320A JP 30532098 A JP30532098 A JP 30532098A JP 2000132096 A JP2000132096 A JP 2000132096A
- Authority
- JP
- Japan
- Prior art keywords
- value
- window
- multiplier
- digits
- scalar multiplication
- 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
り、テーブル格納領域を削減し、事前計算の回数を削減
してトータルでの演算の高速化を図ることを可能とした
スカラー倍算方法を提案する。 【解決手段】 所定の桁数でなる数値ブロックのうちN
AFに現れるものであって最上位ビットが1となるもの
のみを被乗数Pに乗算してテーブルを作成し(ステップ
S2)、乗数kをNAFに変換し(ステップS3)、こ
のNAFに変換された乗数kにウィンドウメソッドを適
用して計算を行い(ステップS4)、最終ウィンドウに
ついては後処理を行う(ステップS5)。
Description
スカラー倍算の方法およびその装置に関し、特に、公開
鍵暗号系である楕円曲線暗号処理における基本演算であ
る楕円曲線上の点のスカラー倍算処理を行うために用い
られるスカラー倍算方法およびその装置に関する。
により、データベースの検索や電子メール、電子ニュー
スなどの電子化された情報をネットワークを経由して送
受信する機会が急速の増加してきている。さらに、これ
らを利用して、オンラインショッピングなどのサービス
も提供されつつある。しかし、それに伴って、ネットワ
ーク上の電子化されたデータを盗聴したり、改竄した
り、または他人になりすましてサービスを受けるなどの
違法行為についての問題が浮上してきている。特に、無
線を利用したネットワークにおいては、傍受が容易なた
めこれらを防止する対策が望まれている。
暗号化電子メールや利用者認証システムが提案され、種
々のネットワークにも導入されつつあり、コンピュータ
ネットワークにおいて暗号化は必須の技術となりつつあ
る。
公開鍵暗号系の2つの分類することができる。
を持つことにより暗号通信を行う方式である。すなわ
ち、秘密鍵暗号系では、あるメッセージを秘密の暗号鍵
に基づいて暗号化し相手に送り、受け手はこの暗号鍵を
用いて暗号分を複合化しもとのメッセージに戻して情報
を入手する。
受信者の公開鍵でメッセージを暗号化して送信し、受信
者は自分の秘密鍵でその暗号化メッセージを復号するこ
とで通信を行う方式である。すなわち、公開鍵暗号系で
は、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により
暗号化された暗号を復号するための鍵であり、公開鍵で
暗号化した暗号が秘密鍵でのみ復号することができる。
ければならない鍵の数が通信相手の数だけ必要であり、
必要な総鍵数はn人のネットワークの場合、n(n−
1)/2個である。また、はじめて通信をする相手に対
しては、何らかの方法で秘密鍵の配送を行う必要がある
という点で欠点がある。この問題を避けるために、大規
模なネットワークでは、鍵管理センタを設置し、センタ
との間の秘密鍵のみを保管し、暗号通信を行う場合はセ
ンタから送信相手との秘密鍵を得る方法が用いられる。
この場合秘密鍵の総数はnとなる。一方公開鍵暗号系で
は、個人が秘密に保管する鍵は自分の秘密鍵のみであ
り、必要な総秘密鍵数もn人のネットワークの場合、n
個である。また、はじめて通信する相手に対しては、公
開鍵の配送を行えばよく、鍵管理センタを設置して、ユ
ーザの公開鍵をn個公開簿に登録し、センタから送信相
手の公開鍵を得る方法が用いられる。この場合、センタ
は公開鍵の改竄を防ぐだけで、秘密に保管する必要がな
い。ただし、公開鍵方式は秘密鍵方式に比べて鍵のビッ
ト数が大きいため保管に要するファイルサイズが大きく
なるという問題を内包している。
えば、送信するメッセージを秘密鍵で圧縮変換し、送信
文に付加して送り、受信側では同様に圧縮変換して比較
する方式がとられている。しかし、送受信が同じ鍵であ
るため受信者は認証データを偽造することができる。
で暗号化することができるのは本人だけであるという特
徴を利用する。送信者はメッセージを圧縮変換して秘密
鍵で暗号化し、送信文に付加して送り、受信者は送信者
の公開鍵で付加されたデータを復号化し、同様に圧縮変
換したものと比較する方式がとられている。この場合は
受信者が不正できない。
術は必要不可欠であるといえる。しかし、公開鍵暗号系
には、暗号化/復号化に大量の処理が必要であるという
大きな欠点があるため、一般には処理の速い秘密鍵暗号
系をメッセージの暗号化に、公開鍵暗号系は認証用にと
いうように組み合わせて用いられる場合が多い。
いるものに、楕円曲線暗号(Elliptic Curve Cryptogra
phy)がある。これは、楕円曲線の離散対数問題に基づ
くもので、N. Koblitz("A course in number theory a
nd cryptography", Spring-Verlag, 1997)と、V. Mill
er("Use of elliptic curves in cryptography", Adva
nces in Cryptology-Proceedings of Crypto '85, Lect
ure Notes in Computer Science, 218(1986), Spring-V
erlag, pp 417-426)により提案された。 〔楕円曲線暗号に用いる楕円曲線〕楕円曲線暗号に用い
る主な楕円曲線は、素体上の楕円曲線(標準形:y2=
x3+ax+b(modp),p:素数)と、2拡大体
上の楕円曲線(標準形:y2+xy=x3+ax2+b
(mod f),f:既約多項式)である。この楕円曲
線上の点P(x,y)および単位元となる無限遠点Οの
集合は、加算に関して群をなす。楕円曲線は、この点の
演算による離散対数問題に基づく暗号である。 〔楕円曲線の点の演算と離散対数問題〕楕円曲線上の点
の演算は以下のものが定義されている。 加算:R=P+Q=Q+P 2倍算:R=2P=P+P 減算:R=P−Q 零点:Ο(無限遠点)=P−P スカラー倍算:kP=P+P+・・・+P(k個のPの
和) ここで、kPとPからkを計算することは困難である。
このことは、楕円曲線の離散対数問題と呼ばれており、
この離散対数問題に関連する計算の困難性に基づいて公
開鍵系の暗号とすることができる。
(有限体上の)ディッフィ−ヘルマン(Diffie-Hellma
n)鍵交換と同様の鍵交換方式を実現することができ
る。楕円曲線上のベースポイントをGとし、Aの秘密鍵
をsaとしPa=saGを演算して公開鍵とする。また、
Bの秘密鍵をsbとし、Pb=sbGを演算してこれを公
開鍵とする。AはBの公開鍵Pbと自分の秘密鍵saか
ら、KAB=saPb=sasbGを演算することによって
共通鍵を得ることができる。また、同様にして、BはA
の公開鍵Paと自分の秘密鍵sbから、KBA=sbPa=
sbsaGを演算することによって共通鍵を得ることがで
きる。この方式は、ECDH(Elliptic Curve Diffie-
Hellman)方式と呼ばれ、秘密鍵sa,sbをスカラー量
として楕円曲線上の点G、Pa、Pbに乗算する必要が
あり、暗号化/復号化の際に大量の演算処理を必要とす
る。この他にECDSA方式やECES方式なども提案
されているが、演算処理が大きくなる点については同様
である。 〔楕円曲線上の点のスカラー倍算〕楕円曲線上の点のス
カラー倍算は上記のように定義されるが、kの値が大き
くなると計算量が膨大となるため、通常は、加算と2倍
算を組み合わせたバイナリメソッド(Binary Method)
や加算と2倍算、減算を組み合わせたサインドバイナリ
メソッド(Signed Binary Method)、事前計算表を用い
て用いてバイナリメソッドを複数ビット単位で行うウィ
ンドウメソッド(Window Method)などを用いて計算を
行うことが提案されている。
e art of computer programing vol. 2, Seminumerical
Algorithm, 2nd ed." (Addison-Wesley, Reading, Mas
s. 1981)で述べている方式で、乗数kを2進数表現(Bi
nary表現)し、最上位ビットから最下位ビットまで順に
検査していって、そのビットの値が0なら2倍算を行
い、ビットの値が1であれば2倍算を行った後加算する
という方式である。
and J. Olivosが、"Speeding up the computations on
an elliptic curve using addition-subtraction chain
s."(Inform. Theory Appl. 24, 1990)で提案している方
式であり、乗数kを符号付き2進数表現(Signed Baina
ry表現)し、最上位ビットから最下位ビットまで順に検
査していき、そのビットの値が0なら2倍算を行い、ビ
ットの値が1なら2倍算を行った後加算し、ビットの値
が−1であれば2倍算を行った後減算を行うという方式
である。符号付き2進数表現は、−1,0,1によって
表現するものであって、1つの値について複数の表現方
法があり、どの表現を採用するかによって演算の速度が
異なってくる。
エーションがあり、もっとも基本的なものでは、乗数k
を2進数表現に変換し、最上位ビットから最下位ビット
までを所定の桁数でなる数値ブロックに分割し、予め演
算したテーブルを当てはめていく。たとえば、k=2762
2793=11010010101111101100010012である場合、この乗
数kに上位から4ビットのウィンドウを当てはめるな
ら、 1101 0010 1011 1110 1100 0100 1 となる。この場合には、被乗数Pに4ビットの数値ブロ
ックの値を乗算した値、0P(00002P)から15P(1111
2P)を事前に計算しておき、テーブルとして保存してお
く必要がある。
うに4ビットのウィンドウを当てはめた場合には、上記
乗数kは、 1101 00 1010 1111 1011 000 1001 と5つのウィンドウを当てはめることとなる。この場合
には、最上位ビットが1となる数値ブロックについての
み事前計算を行ってテーブルとして保存しておけばよい
と考えられる。ただし、最終の数値ブロックは、所定の
桁数(この場合4ビット)とならない可能性があるた
め、最上位ビットが1とならない数値ブロックについて
も事前計算を行ってテーブル化しておく必要があり、や
はり、0P(00002P)から15P(11112P)のすべてを事前
計算する必要がある。
てはめたウィンドウの値の加算と、2倍算を組み合わせ
ることで、スカラー倍算を計算することができる。
とウィンドウメソッドとを複合したものとして、宮地、
小野、H. Cohenが、"Efficient elliptic curve expone
tiation, ICICS '97, 1997" で提案したものがある(以
下、MOC方式と称す)。
し、これに所定の桁数でなるウィンドウを最下位のビッ
トから順に割り当てていき、割り当てたウィンドウのす
ぐ上位のビットが1の場合、ウィンドウの値をマイナス
2の補数とし、すぐ上位に1を加算する。例えば、上記
乗数k=27622793=11010010101111101100010012に4ビ
ットのウィンドウを当てはめる場合、 11010010101111 1011 000 1001 となり、2つ目のウィンドウ"1011"の上位のビットは1
である。したがって、このウィンドウの値を補数とし
て、"0101"(下線付きをマイナスとする)とし、その上
位ビットに1を加算する。
て、次のようになる。
は、上述したような通常のウィンドウメソッドの場合よ
りも少なくすることができる。また、1つのウィンドウ
の上位に位置するビットは必ず0となるようにしている
ため、ウィンドウの1回割り当てあたりの平均処理ビッ
ト数は、ウィンドウ幅+2となる。
ッド、ウィンドウメソッド、宮地方式について、160
ビット程度の楕円曲線の点の演算に用いた(ウィンドウ
メソッドについては4ビットウィンドウを用いた)場合
の計算回数は以下のようになる。
ンドウメソッド系の処理では、合計の加算回数が少なく
なり、バイナリメソッド系の処理に比して高速な処理が
可能になると考えられる。しかしながら、事前計算を必
要としないバイナリメソッド系の平均加算回数に比して
ウィンドウメソッド系の加算回数は1/2程度に軽減さ
れているに止まっている。
倍算を高速化するためにはテーブルを大きくとる必要が
あり、このテーブルを格納しておく領域を確保する必要
がある。しかしながら、上述したように、大きなテーブ
ルを用意しても有効に利用しているとは言い難く、この
テーブルを格納する領域を無駄にしている。また、テー
ブルを大きくすることで事前計算の処理に時間を要し、
スカラー倍算自体は高速であるが、トータルでの高速化
が考慮されていないといった問題を有している。このこ
とは、ウィンドウメソッドを利用したMOC方式であっ
ても同様のことが言える。
効利用することにより、テーブル格納領域を削減し、事
前計算の回数を削減してトータルでの演算の高速化を図
ることを可能としたスカラー倍算方法およびその装置を
提案することにある。
算方法は、整数を乗数とするスカラー倍算において、乗
数を非隣接型(nonadjacent form)符号付き2進数(以
下、NAFと称す)に変換し、NAFに変換された乗数
を上位ビットより順に最上位ビットが0でない所定の桁
数でなる数値ブロックに分解して固定幅ウィンドウによ
るウィンドウ法を用いて演算することを特徴としてい
る。
1)が連続しないような符号付き2進数表現であり、0
でないビットの数が最小となる。したがって、加算回数
を軽減することができる。また、NAFは0でないビッ
トが隣接しないため、最上位ビットが0でない数値ブロ
ックで分割した際に、出現する数値ブロックの種類が限
られる。したがって、テーブルを必要最小限に削減する
ことができ、事前計算の回数を軽減することができる。
うち、NAFに現れるものであって最上位ビットが1と
なる数値ブロックの値を、被乗数に乗算したものを予め
演算してテーブルとして保存しておく構成にできる。例
えば、ウィンドウ幅が4ビットの場合、最上位ビットが
1となる値は、10102(=6)、1001 2(=7)、1000 2
(=8)、10012(=9)、10102(=10)の5つだけ
であり、被乗数Pにこれを乗算した6P、7P、8P、
9P、10Pを事前計算してこれをテーブルとすればよ
いこととなる。
途中の値を、テーブルに追加して保存しておくように構
成できる。
た乗数の値を最上位ビットが0でない所定の桁数でなる
数値ブロックに分解した際に、最終の数値ブロックが所
定の桁数に満たない場合に、この最終の数値ブロックの
みテーブルの値を組み合わせて演算するように構成でき
る。
かった場合には、所定の桁数であって最上位ビットが1
となる数値ブロックのみで計算することができないた
め、テーブルを作成するために計算した途中の値とテー
ブルの値とを利用してこれを算出するようにする。たと
えば、ウィンドウ幅が4ビットの場合に、最終の数値ブ
ロックに1〜3ビットの値が残る可能性がある。したが
って、最終の数値ブロックが採り得る値は、−10P〜
+10Pの範囲ですべての値をとり得る。前述の事前計
算で、6P、7P、8P、9P、10Pを計算する際
に、途中で計算を行う2P、4Pをテーブルに追加して
保存しておけば、±1PはPの値をそのまま用い、±2
または±4Pの場合2Pまたは4Pをそのまま使うこと
ができ、±3Pの場合2P+Pの演算を行い、±5Pの
場合4P+Pの演算を行うことで算出することが可能と
なる。
点の演算に用いることができ、楕円曲線暗号を演算する
際に利用することができる。また、整数演算に用いるこ
とも可能である。
は、所定の桁数でなる数値ブロックのうち、非隣接型符
号付き2進数に現れるものであって最上位ビットが1と
なる数値ブロックの値を、被乗数に乗算した値を予め演
算する事前計算手段と、事前計算手段によって演算され
た値をテーブルとして保存するテーブル記憶手段と、乗
数を非隣接型符号付き2進数に変換するNAF変換手段
と、NAF変換手段によって非隣接型符号付き2進数に
変換された乗数を、上位ビットより順に、最上位ビット
が0でない所定の桁数でなる数値ブロックに分解し、テ
ーブル記憶手段に保存されたテーブルを適用するウィン
ドウ演算手段と、非隣接型符号付き2進数に変換した乗
数の値を最上位ビットが0でない所定の桁数でなる数値
ブロックに分解した際に、最終の数値ブロックが所定の
桁数に満たない場合に、この最終の数値ブロックのみテ
ーブルの値を組み合わせて演算する後処理手段とを備え
ている。
1実施形態を図1を用いて説明する。
およびメモリを搭載したコンピュータにより実現される
ものであって、主に記憶手段2と演算手段3とで構成さ
れる。
算結果などを記憶しておく通常記憶部21と、事前計算
により作成されたテーブルを格納しておくテーブル記憶
部22とを備えている。
ックのうち、NAFに現れるものであって最上位ビット
が1となるものについて、その値を被乗数Pに乗算した
値を予め演算する事前計算手段31を備えている。例え
ば、ウィンドウ幅が4ビットの場合、最上位ビットが1
となる値は、10102(=6)、1001 2(=7)、1000
2(=8)、10012(=9)、10102(=10)の5つだ
けであり、被乗数にこれを乗算した6P、7P、8P、
9P、10Pを事前計算する。事前計算手段31では、
この6P、7P、8P、9P、10Pとこの計算の途中
で得られる2P、4Pについてテーブルとして記憶手段
2のテーブル記憶部22に保存する。
換するNAF変換手段32を備えている。このNAF変
換手段32は、G. Reitwiesnerが"Binaryarithmetic, A
dvances in Computers, 1 (1960), pp. 231-308"で提案
した変換方法などを実現するものであり、記憶手段2に
格納されている乗数kを0でないビットが隣接しないよ
うなサインドバイナリ表現に変換する。
た乗数kを上位ビットから順に所定の桁数でなる数値ブ
ロックに分解し、テーブル記憶部22に格納されている
テーブルを各数値ブロックに適用するウィンドウ演算手
段33を備えている。
乗数kを上位ビットから順に所定の桁数でなる数値ブロ
ックに分解した際に、最終の数値ブロックが所定の桁数
に満たない場合に、テーブルに格納されている値を用い
てこの最終の数値ブロックの値を演算する後処理手段3
4を備えている。
いて詳細に説明する。
Pおよび乗数kが入力される。この値はシステムが自動
的に選択する数値であってもよく、ユーザが入力する任
意の値であってもよい。
計算を行ってテーブルを作成するテーブル作成処理を実
行する。
するNAF変換処理を実行する。
数kをウィンドウメソッドを用いて上位のビットから順
に所定の桁数でなる数値ブロックに分割し、テーブルの
値を適用するとともに、2倍算および加算を行うウィン
ドウ演算処理を実行する。
所定の桁数に満たない場合に、テーブルに格納された値
を使ってこの最終ブロックの値を演算する後処理を実行
する。
えば記憶手段2に格納する。〔事前計算〕ステップS2
におけるテーブル作成処理を図3にフローチャートとし
て示す。ここでは、ウィンドウ幅を4ビットとしたウィ
ンドウメソッドを用いることとする。
た値2P=P+Pを計算し、これを記憶手段2に格納す
る。ステップS12では、被乗数Pに4をかけた値4P
=2P+2Pを計算し、これを記憶手段2に格納する。
た値8P=4P+4Pを計算し、これをテーブル記憶部
22のtable[2]として保存する。ステップS14では、
被乗数Pに7をかけた値7P=8P−P=table[2]−P
を計算し、これをテーブル記憶部22のtable[1]として
保存する。ステップS15では、被乗数Pに9をかけた
値9P=8P+P=table[2]+Pを計算し、これをテー
ブル記憶部22のtable[3]として保存する。
た値6P=7P−P=table[1]−Pを計算し、これをテ
ーブル記憶部22のtable[0]として保存する。ステップ
S17では、被乗数Pに10をかけた値10P=9P+
P=table[3]+Pを計算し、これをテーブル記憶部22
のtable[4]として保存する。
は、図4に示すようなテーブルが作成されることとな
る。すなわち、a=0〜4について、table[a]の値が
それぞれ、6P,7P,8P,9P,10Pとして格納
される。また、このテーブルとは別に、計算途中で得ら
れる値2P,4Pもこの記憶手段2内に保存されること
となる。〔NAFへの変換〕乗数kをNAFに変換する
方法は、前述したように、G. Reitwiesnerの提案する方
法などを用いて実現することができる。
111011000010012をNAFに変換した場合には、 10101010101000001010001001 となる(値が−1となるビットを"1"で示すこととす
る)。〔ウィンドウ演算処理〕ステップS4におけるウ
ィンドウ演算処理について、図5に示すフローチャート
に基づいて説明する。
に変換したときの桁数がnであれば(n−1)の値を変
数iとして取り込む。ここでは、乗数kをNAFに変換
したときの値が(k159,k158,k157・・・k1,
k0)でなりその桁数が160ビットである場合を想定
し、i=159とする。ステップS22では、NAF変
換した乗数kを上位ビットから4桁のウィンドウ幅で取
り込み、ウィンドウ値W=(ki,ki-1,ki-2,
ki-3)とする。この時のウィンドウ値Wは、W=(k
15 9,k158,k157,k156)となる。ステップS23で
は、この時のウィンドウ値Wから6を引いた値のテーブ
ルを参照して、これを演算結果Rの初期値とする。たと
えば、W=10002=8であれば、table[2]を参照して、
R=8Pとする。
リメントする。ステップS25では、乗数kについて現
在のウィンドウの下にさらにビットが存在するか否かを
判別する。変数iの値が0よりも大きい場合に、次のビ
ットが存在するとして、ステップS26に移行する。ス
テップS26では、乗数kについて現在のウィンドウの
下に位置する次のビットkiが0であるか否かを判別す
る。次のビットkiが0であると判断した場合、ステッ
プS27に移行する。ステップS27では、Rの値を2
倍算し、R=2Rとする。ステップS28では変数iか
ら1をデクリメントして、ステップS25に移行する。
が0でないと判断した場合には、ステップS29に移行
する。ステップS29では、乗数kについて現在のウィ
ンドウの下に位置するビット数が4ビット以下になった
か否かを判別する。ここで、変数iの値が3以下であれ
ば、乗数kについて現在のウィンドウの下に位置するビ
ット数が4ビット以下になったと判断してメインルーチ
ンに復帰する。また、変数iの数が4以上であれば、ス
テップS30に移行する。
R=2Rとする。ステップS31、S32、S33で
は、同様にRの値を2倍算し、R=2Rとする。したが
って、ステップS30〜S33では、R=24Rを計算
することとなる。
いて、ウィンドウ値Wを取り込む。ステップS35で
は、取り込んだウィンドウ値Wの値が0より大きいか否
かを判別する。ウィンドウ値Wが0よりも大きい場合に
は、ステップS36に移行する。ステップS36では、
(W−6)の値に対応するテーブルを参照し、Rの値に
加算して、R=R+table[W−6]を計算する。したが
って、このときのウィンドウ値W=10012=9であれ
ば、R=R+table[3]=R+9Pを計算することとな
る。また、ステップS35において、ウィンドウ値Wが
0よりも小さいと判別した場合には、ステップS37に
移行する。ステップS37では、(−W−6)の値に対
応するテーブルを参照し、Rの値からこれを減算して、
R=R−table[−W−6]を計算する。例えば、ウィン
ドウ値W=1001 2=−9であれば、R=R−table[3]=
R−9Pを計算することとなる。ステップS38では、
変数iの値から4だけデクリメントし、ステップS25
に移行する。
在のウィンドウの下に次のビットが存在しないと判別し
た場合およびステップS29において乗数kについて現
在のウィンドウの下にあるビット数が4ビット以下にな
った場合には、メインルーチンに復帰する。 〔最終ウィンドウ処理〕ウィンドウ演算処理において、
最終のウィンドウについて所定の桁数以下となった場合
には、ステップS5の後処理が必要となる。これは、図
5において、変数iの値がステップS25では0よりも
大きくかつステップS29において3以下であると判断
された場合である。このときの最終ウィンドウ処理を図
6に示すフローチャートに基づいて説明する。
ィンドウ値Wに初期値として0を代入する。ステップS
42では、次のビットが存在するか否かを判別する。こ
こでは、変数iの値が0よりも大きい場合に、次のビッ
トが存在すると判断してステップS43に移行する。ス
テップS43では、W=2W+kiを計算する。ステッ
プS44では、Rの値を2倍算して、R=2Rを計算す
る。ステップS45では、変数iの値から1だけデクリ
メントし、ステップS42に移行する。
以下になった場合、次のビットが存在しないと判断し
て、ステップS46に移行する。
を判別して、対応するステップに分岐する。ウィンドウ
値W=0の場合、何もせずにメインルーチンに復帰す
る。ウィンドウ値W=6〜10の場合には、ステップS
47に移行する。ステップS47では、R=R+table
[W−6]を計算する。ウィンドウ値Wの値が6〜10の
場合には、最終ウィンドウは4ビットであり、これに対
応するテーブルが存在する。したがって、ウィンドウ値
Wに対応するテーブルを参照して最終ウィンドウの計算
を行う。
は、ステップS48に移行する。ステップS48では、
ステップS47と同様にしてウィンドウ値Wに対応する
テーブルを参照して、R=R−table[−W−6]を計算
する。
9に移行する。ステップS49では、R=R+Pを計算
する。ウィンドウ値W=−1の場合、ステップS50に
移行する。ステップS50では、R=R−Pを計算す
る。ウィンドウ値W=2の場合、ステップS51に移行
する。ステップS51では、記憶手段2に保存しておい
た(2P)の値を読み込んでこれをRに加算し、R=R
+2Pを計算する。ウィンドウ値W=−2の場合、ステ
ップS52に移行する。ステップS52では、記憶手段
2に保存しておいた(2P)の値を読み込んで、Rから
これを減算し、R=R−2Pを計算する。
3に移行する。ステップS53では、記憶手段2に保存
しておいた(4P)の値を読み込んでこれをRに加算
し、R=R+4Pを計算する。ウィンドウ値W=−4の
場合、ステップS54に移行する。ステップS54で
は、記憶手段2に保存しておいた(4P)の値を読み込
んでRからこれを減算し、R=R−4Pを計算する。
5に移行する。ステップS55では、記憶手段2に保存
しておいた(2P)の値を読み込んでこれをRに加算
し、R=R+2Pを計算する。さらに、ステップS56
において、R=R+Pを計算する。ウィンドウ値W=−
3の場合、ステップS57に移行する。ステップS57
では、記憶手段2に保存しておいた(2P)の値を読み
込んで、Rからこれを減算し、R=R−2Pを計算す
る。さらに、ステップS58において、R=R−Pを計
算する。
9に移行する。ステップS59では、記憶手段2に保存
しておいた(4P)の値を読み込んでこれをRに加算
し、R=R+4Pを計算する。さらに、ステップS60
において、R=R+Pを計算する。ウィンドウ値W=−
5の場合、ステップS61に移行する。ステップS61
では、記憶手段2に保存しておいた(4P)の値を読み
込んで、Rからこれを減算し、R=R−4Pを計算す
る。さらに、ステップS62において、R=R−Pを計
算する。
ンルーチンでは、このようにして計算されたRの値を演
算結果として出力し、例えば、記憶手段2の所定領域に
格納する。 〔ウィンドウメソッドにおける処理ビット数〕本発明に
よれば、乗数kをNAF表現に変換し、最上位ビットが
1となるようにウィンドウを当てはめているため、1ウ
ィンドウあたりの処理ビット数は、ウィンドウ幅をwと
すると、平均w+1.5ビットとなる。ウィンドウ幅w
=4とした場合、1ウィンドウあたりの処理ビット数は
5.4ビットとなる。
ロックについて省略することができるため、乗数kのビ
ット数m−4となり、m=160の場合2倍算の回数は
156となる。乗数kに当てはめるウィンドウの平均個
数は、この2倍算の回数を1ウィンドウあたりの処理ビ
ット数で割った値となり、この回数が平均加算回数とな
る。前述の乗数kのビット数m=160で、ウィンドウ
幅w=4とした場合には、ウィンドウの平均個数は15
6/5.4=28.9となり、これが平均加算回数とな
る。 〔テーブル個数〕本発明において、ウィンドウ幅をwと
した場合、事前計算により作成すべきテーブル数は、以
下のように表すことができる。
は、(w−2)個であり、合計すると次のようになる。
式の場合には、テーブル数は(2w−2)となる。した
がって、テーブルの削減率は次のようになる。 wが偶数の場合:(2w+3w−7)/(3・2w−6) wが奇数の場合:(2w+3w−5)/(3・2w−6) これから、ウィンドウ幅wを3ビット、4ビット、5ビ
ットとした場合のテーブルの削減率は、それぞれ2/
3、1/2、7/15となる。 〔最終ウィンドウ処理回数〕ウィンドウ幅wとした場合
の最終ウィンドウの取り得る値は次のようになる。
2)、最大1/3(2w+1−2) wが奇数の場合:最小−1/3(2w+1−1)、最大1
/3(2w+1−1) このうち後処理としての加算演算が不要なものは、保存
している値が利用できる場合と、±P、0の場合であ
る。前述したように、記憶手段2に格納している値の合
計数は次のようになる。
次のようになる。
ト、5ビットの場合には、平均後処理回数はそれぞれ
0,4/21,12/43となる。例えば、ウィンドウ
幅wが4ビットの場合、最終ウィンドウの取り得る値は
−10P〜+10Pの21通りであり、後処理が必要と
なる場合は±3P、±5Pの4通りである。したがっ
て、この場合の平均後処理回数は4/21=0.2回と
なる。乗数kを2進数に変換した際の桁数mが160ビ
ットの場合と239ビットの場合について、1加算また
は1ウィンドウあたりの平均処理ビット、平均2倍算回
数、平均加算回数、事前計算回数、事後計算回数を、従
来の方式と比較したものをそれぞれ表2および表3とし
て示す。
ば、事前計算によって作成するテーブル数を1/2に削
減することができ、テーブルを格納するための領域を小
さくすることができる。また、事前計算の回数を少なく
することにより、合計計算回数を削減することができ、
トータルでの処理速度を高速化することが可能となる。 〔他の実施形態〕楕円曲線上の点のスカラー倍算だけで
なく、被乗数Pを整数とすることで通常の整数演算にお
いても高速な乗算方式を得ることができる。
ラー倍算について、事前計算により作成するテーブルの
数を通常のウィンドウメソッド系の演算を用いる場合に
比して約1/2に削減することができ、演算に必要な平
均加算回数を全体で数%削減することができ、処理速度
を高速化することが可能となる。
Claims (7)
- 【請求項1】整数を乗数とするスカラー倍算において、 前記乗数を非隣接型符号付き2進数に変換し、前記非隣
接型符号付き2進数に変換された乗数を上位ビットより
順に最上位ビットが0でない所定の桁数でなる数値ブロ
ックに分解して固定幅ウィンドウによるウィンドウ法を
用いて演算することを特徴とするスカラー倍算方法。 - 【請求項2】所定の桁数でなる数値ブロックのうち、非
隣接型符号付き2進数に現れるものであって最上位ビッ
トが1となる数値ブロックの値を、被乗数に乗算したも
のを予め演算してテーブルとして保存しておくことを特
徴とする、請求項1に記載のスカラー倍算方法。 - 【請求項3】前記テーブルを作成するために計算した途
中の値を、前記テーブルに追加して保存しておくことを
特徴とする、請求項2に記載のスカラー倍算方法。 - 【請求項4】非隣接型符号付き2進数に変換した乗数の
値を最上位ビットが0でない所定の桁数でなる数値ブロ
ックに分解した際に、最終の数値ブロックが前記所定の
桁数に満たない場合に、この最終の数値ブロックのみ前
記テーブルの値を組み合わせて演算することを特徴とす
る、請求項3に記載のスカラー倍算方法。 - 【請求項5】楕円曲線上の点の演算に用いることを特徴
とする、請求項1〜4のいずれかに記載のスカラー倍算
方法。 - 【請求項6】整数演算に用いることを特徴とする、請求
項1〜4のいずれかに記載のスカラー倍算方法。 - 【請求項7】所定の桁数でなる数値ブロックのうち、非
隣接型符号付き2進数に現れるものであって最上位ビッ
トが1となる数値ブロックの値を、被乗数に乗算した値
を予め演算する事前計算手段と、 前記事前計算手段によって演算された値をテーブルとし
て保存するテーブル記憶手段と、 乗数を非隣接型符号付き2進数に変換するNAF変換手
段と、 前記NAF変換手段によって非隣接型符号付き2進数に
変換された乗数を、上位ビットより順に、最上位ビット
が0でない前記所定の桁数でなる数値ブロックに分解
し、前記テーブル記憶手段に保存されたテーブルを適用
するウィンドウ演算手段と、 非隣接型符号付き2進数に変換した乗数の値を最上位ビ
ットが0でない所定の桁数でなる数値ブロックに分解し
た際に、最終の数値ブロックが前記所定の桁数に満たな
い場合に、この最終の数値ブロックのみ前記テーブルの
値を組み合わせて演算する後処理手段と、を備えるスカ
ラー倍算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30532098A JP3797808B2 (ja) | 1998-10-27 | 1998-10-27 | スカラー倍算方法およびその装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30532098A JP3797808B2 (ja) | 1998-10-27 | 1998-10-27 | スカラー倍算方法およびその装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000132096A true JP2000132096A (ja) | 2000-05-12 |
JP3797808B2 JP3797808B2 (ja) | 2006-07-19 |
Family
ID=17943698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP30532098A Expired - Fee Related JP3797808B2 (ja) | 1998-10-27 | 1998-10-27 | スカラー倍算方法およびその装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3797808B2 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2004070681A1 (ja) * | 2003-02-06 | 2006-05-25 | 株式会社日立製作所 | 楕円曲線スカラー倍計算方法および装置 |
JP2012032650A (ja) * | 2010-07-30 | 2012-02-16 | Fujitsu Ltd | リスト生成装置、リスト生成方法およびリスト生成プログラム |
JP2013186204A (ja) * | 2012-03-06 | 2013-09-19 | Canon Inc | 演算装置、演算方法、およびプログラム |
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 |
WO2022153456A1 (ja) * | 2021-01-14 | 2022-07-21 | 日本電信電話株式会社 | 暗号化装置、暗号通信システム、暗号化方法およびプログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5379700B2 (ja) * | 2010-01-08 | 2013-12-25 | 日本電信電話株式会社 | スカラー倍演算装置、スカラー倍演算方法、スカラー倍演算プログラム、記録媒体 |
JP2018146766A (ja) * | 2017-03-06 | 2018-09-20 | キヤノン株式会社 | スカラー倍演算装置、スカラー倍演算方法及びプログラム |
-
1998
- 1998-10-27 JP JP30532098A patent/JP3797808B2/ja not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2004070681A1 (ja) * | 2003-02-06 | 2006-05-25 | 株式会社日立製作所 | 楕円曲線スカラー倍計算方法および装置 |
JP4502817B2 (ja) * | 2003-02-06 | 2010-07-14 | 株式会社日立製作所 | 楕円曲線スカラー倍計算方法および装置 |
JP2012032650A (ja) * | 2010-07-30 | 2012-02-16 | Fujitsu Ltd | リスト生成装置、リスト生成方法およびリスト生成プログラム |
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 |
JP2013186204A (ja) * | 2012-03-06 | 2013-09-19 | Canon Inc | 演算装置、演算方法、およびプログラム |
WO2022153456A1 (ja) * | 2021-01-14 | 2022-07-21 | 日本電信電話株式会社 | 暗号化装置、暗号通信システム、暗号化方法およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP3797808B2 (ja) | 2006-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0720778A (ja) | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 | |
US6202076B1 (en) | Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed | |
EP0704124A1 (en) | A cryptographic method | |
CN101005350B (zh) | 加密处理设备和加密处理方法 | |
US6898284B2 (en) | Cryptographic identification and digital signature method using efficient elliptic curve | |
JP4783382B2 (ja) | モンゴメリ法用乗算剰余計算装置 | |
US6769062B1 (en) | Method and system of using an insecure crypto-accelerator | |
US6993136B2 (en) | Cryptographic key exchange method using efficient elliptic curve | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
JP2000132376A (ja) | 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体 | |
US7050579B1 (en) | Cryptographic methods and apparatus using word-wise montgomery multiplication | |
JP3797808B2 (ja) | スカラー倍算方法およびその装置 | |
JP4177526B2 (ja) | 乗算剰余演算方法および乗算剰余回路 | |
JP3616897B2 (ja) | モンゴメリ法による乗算剰余計算装置 | |
US7062044B1 (en) | Method of elliptic curve cryptographic key agreement using coefficient splitting | |
KR100340102B1 (ko) | 알에스에이 공개키 암호 고속화 장치 및 방법 | |
JP3615405B2 (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
JP4423900B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
US6477556B1 (en) | Method and apparatus for arithmetic operation and recording medium of method of operation | |
JP2000137436A (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
US20020025034A1 (en) | Cryptographic encryption method using efficient elliptic curve | |
JP3123820B2 (ja) | 有限可換群における演算器 | |
JP4676071B2 (ja) | べき乗剰余演算方法、逆数演算方法およびそれらの装置 | |
KR20010000048A (ko) | m진법 방식을 이용한 타원곡선상 다중 점의 상수고속연산 방법 | |
JP2948605B2 (ja) | 暗号鍵共通の暗号通信用端末 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060117 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060320 |
|
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: 20060411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060418 |
|
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: 20090428 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110428 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110428 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120428 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130428 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140428 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |