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
Application number
JP10305320A
Other languages
English (en)
Other versions
JP3797808B2 (ja
Inventor
Masahiko Takenaka
正彦 武仲
Koichi Ito
孝一 伊藤
Naoya Torii
直哉 鳥居
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP30532098A priority Critical patent/JP3797808B2/ja
Publication of JP2000132096A publication Critical patent/JP2000132096A/ja
Application granted granted Critical
Publication of JP3797808B2 publication Critical patent/JP3797808B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 テーブル数を削減して有効利用することによ
り、テーブル格納領域を削減し、事前計算の回数を削減
してトータルでの演算の高速化を図ることを可能とした
スカラー倍算方法を提案する。 【解決手段】 所定の桁数でなる数値ブロックのうちN
AFに現れるものであって最上位ビットが1となるもの
のみを被乗数Pに乗算してテーブルを作成し(ステップ
S2)、乗数kをNAFに変換し(ステップS3)、こ
のNAFに変換された乗数kにウィンドウメソッドを適
用して計算を行い(ステップS4)、最終ウィンドウに
ついては後処理を行う(ステップS5)。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、整数を乗数とする
スカラー倍算の方法およびその装置に関し、特に、公開
鍵暗号系である楕円曲線暗号処理における基本演算であ
る楕円曲線上の点のスカラー倍算処理を行うために用い
られるスカラー倍算方法およびその装置に関する。
【0002】
【従来の技術】近年のコンピュータネットワークの発達
により、データベースの検索や電子メール、電子ニュー
スなどの電子化された情報をネットワークを経由して送
受信する機会が急速の増加してきている。さらに、これ
らを利用して、オンラインショッピングなどのサービス
も提供されつつある。しかし、それに伴って、ネットワ
ーク上の電子化されたデータを盗聴したり、改竄した
り、または他人になりすましてサービスを受けるなどの
違法行為についての問題が浮上してきている。特に、無
線を利用したネットワークにおいては、傍受が容易なた
めこれらを防止する対策が望まれている。
【0003】これらの問題に対して暗号技術を応用した
暗号化電子メールや利用者認証システムが提案され、種
々のネットワークにも導入されつつあり、コンピュータ
ネットワークにおいて暗号化は必須の技術となりつつあ
る。
【0004】暗号化方式は、大別すると秘密鍵暗号系と
公開鍵暗号系の2つの分類することができる。
【0005】秘密鍵暗号系は、送信者と受信者が同じ鍵
を持つことにより暗号通信を行う方式である。すなわ
ち、秘密鍵暗号系では、あるメッセージを秘密の暗号鍵
に基づいて暗号化し相手に送り、受け手はこの暗号鍵を
用いて暗号分を複合化しもとのメッセージに戻して情報
を入手する。
【0006】公開鍵暗号系は、送信者は公開されている
受信者の公開鍵でメッセージを暗号化して送信し、受信
者は自分の秘密鍵でその暗号化メッセージを復号するこ
とで通信を行う方式である。すなわち、公開鍵暗号系で
は、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により
暗号化された暗号を復号するための鍵であり、公開鍵で
暗号化した暗号が秘密鍵でのみ復号することができる。
【0007】秘密鍵暗号系では、個人が秘密に保管しな
ければならない鍵の数が通信相手の数だけ必要であり、
必要な総鍵数はn人のネットワークの場合、n(n−
1)/2個である。また、はじめて通信をする相手に対
しては、何らかの方法で秘密鍵の配送を行う必要がある
という点で欠点がある。この問題を避けるために、大規
模なネットワークでは、鍵管理センタを設置し、センタ
との間の秘密鍵のみを保管し、暗号通信を行う場合はセ
ンタから送信相手との秘密鍵を得る方法が用いられる。
この場合秘密鍵の総数はnとなる。一方公開鍵暗号系で
は、個人が秘密に保管する鍵は自分の秘密鍵のみであ
り、必要な総秘密鍵数もn人のネットワークの場合、n
個である。また、はじめて通信する相手に対しては、公
開鍵の配送を行えばよく、鍵管理センタを設置して、ユ
ーザの公開鍵をn個公開簿に登録し、センタから送信相
手の公開鍵を得る方法が用いられる。この場合、センタ
は公開鍵の改竄を防ぐだけで、秘密に保管する必要がな
い。ただし、公開鍵方式は秘密鍵方式に比べて鍵のビッ
ト数が大きいため保管に要するファイルサイズが大きく
なるという問題を内包している。
【0008】また、認証の場合、秘密鍵暗号系では、例
えば、送信するメッセージを秘密鍵で圧縮変換し、送信
文に付加して送り、受信側では同様に圧縮変換して比較
する方式がとられている。しかし、送受信が同じ鍵であ
るため受信者は認証データを偽造することができる。
【0009】これに対して、公開鍵暗号系では、秘密鍵
で暗号化することができるのは本人だけであるという特
徴を利用する。送信者はメッセージを圧縮変換して秘密
鍵で暗号化し、送信文に付加して送り、受信者は送信者
の公開鍵で付加されたデータを復号化し、同様に圧縮変
換したものと比較する方式がとられている。この場合は
受信者が不正できない。
【0010】このように、認証系では公開鍵暗号系の技
術は必要不可欠であるといえる。しかし、公開鍵暗号系
には、暗号化/復号化に大量の処理が必要であるという
大きな欠点があるため、一般には処理の速い秘密鍵暗号
系をメッセージの暗号化に、公開鍵暗号系は認証用にと
いうように組み合わせて用いられる場合が多い。
【0011】公開鍵暗号系の中で、現在標準化が進んで
いるものに、楕円曲線暗号(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
3+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を計算することは困難である。
このことは、楕円曲線の離散対数問題と呼ばれており、
この離散対数問題に関連する計算の困難性に基づいて公
開鍵系の暗号とすることができる。
【0012】たとえば、公開鍵暗号系として知られる
(有限体上の)ディッフィ−ヘルマン(Diffie-Hellma
n)鍵交換と同様の鍵交換方式を実現することができ
る。楕円曲線上のベースポイントをGとし、Aの秘密鍵
をsaとしPa=saGを演算して公開鍵とする。また、
Bの秘密鍵をsbとし、Pb=sbGを演算してこれを公
開鍵とする。AはBの公開鍵Pbと自分の秘密鍵sa
ら、KAB=saPb=sabGを演算することによって
共通鍵を得ることができる。また、同様にして、BはA
の公開鍵Paと自分の秘密鍵sbから、KBA=sbPa=
baGを演算することによって共通鍵を得ることがで
きる。この方式は、ECDH(Elliptic Curve Diffie-
Hellman)方式と呼ばれ、秘密鍵sa,sbをスカラー量
として楕円曲線上の点G、Pa、Pbに乗算する必要が
あり、暗号化/復号化の際に大量の演算処理を必要とす
る。この他にECDSA方式やECES方式なども提案
されているが、演算処理が大きくなる点については同様
である。 〔楕円曲線上の点のスカラー倍算〕楕円曲線上の点のス
カラー倍算は上記のように定義されるが、kの値が大き
くなると計算量が膨大となるため、通常は、加算と2倍
算を組み合わせたバイナリメソッド(Binary Method)
や加算と2倍算、減算を組み合わせたサインドバイナリ
メソッド(Signed Binary Method)、事前計算表を用い
て用いてバイナリメソッドを複数ビット単位で行うウィ
ンドウメソッド(Window Method)などを用いて計算を
行うことが提案されている。
【0013】バイナリメソッドは、E. D. Knuthが、"Th
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倍算を行った後加算する
という方式である。
【0014】サインドバイナリメソッドは、F. Morain
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つの値について複数の表現方
法があり、どの表現を採用するかによって演算の速度が
異なってくる。
【0015】ウィンドウメソッドには、いろいろなバリ
エーションがあり、もっとも基本的なものでは、乗数k
を2進数表現に変換し、最上位ビットから最下位ビット
までを所定の桁数でなる数値ブロックに分割し、予め演
算したテーブルを当てはめていく。たとえば、k=2762
2793=11010010101111101100010012である場合、この乗
数kに上位から4ビットのウィンドウを当てはめるな
ら、 1101 0010 1011 1110 1100 0100 1 となる。この場合には、被乗数Pに4ビットの数値ブロ
ックの値を乗算した値、0P(00002P)から15P(1111
2P)を事前に計算しておき、テーブルとして保存してお
く必要がある。
【0016】数値ブロックの最上位ビットが1となるよ
うに4ビットのウィンドウを当てはめた場合には、上記
乗数kは、 1101 00 1010 1111 1011 000 1001 と5つのウィンドウを当てはめることとなる。この場合
には、最上位ビットが1となる数値ブロックについての
み事前計算を行ってテーブルとして保存しておけばよい
と考えられる。ただし、最終の数値ブロックは、所定の
桁数(この場合4ビット)とならない可能性があるた
め、最上位ビットが1とならない数値ブロックについて
も事前計算を行ってテーブル化しておく必要があり、や
はり、0P(00002P)から15P(11112P)のすべてを事前
計算する必要がある。
【0017】このように、ウィンドウメソッドでは、当
てはめたウィンドウの値の加算と、2倍算を組み合わせ
ることで、スカラー倍算を計算することができる。
【0018】前述したようなサインドバイナリメソッド
とウィンドウメソッドとを複合したものとして、宮地、
小野、H. Cohenが、"Efficient elliptic curve expone
tiation, ICICS '97, 1997" で提案したものがある(以
下、MOC方式と称す)。
【0019】このMOC方式では、乗数を2進数表現と
し、これに所定の桁数でなるウィンドウを最下位のビッ
トから順に割り当てていき、割り当てたウィンドウのす
ぐ上位のビットが1の場合、ウィンドウの値をマイナス
2の補数とし、すぐ上位に1を加算する。例えば、上記
乗数k=27622793=11010010101111101100010012に4ビ
ットのウィンドウを当てはめる場合、 11010010101111 1011 000 1001 となり、2つ目のウィンドウ"1011"の上位のビットは1
である。したがって、このウィンドウの値を補数とし
て、"0101"(下線付きをマイナスとする)とし、その上
位ビットに1を加算する。
【0020】11010010110000 0101 000 1001 この後、さらにウィンドウを当てはめて行くことによっ
て、次のようになる。
【0021】1101 00 1011 0000 0101 000 1001 このことにより、MOC方式の場合、ウィンドウの数
は、上述したような通常のウィンドウメソッドの場合よ
りも少なくすることができる。また、1つのウィンドウ
の上位に位置するビットは必ず0となるようにしている
ため、ウィンドウの1回割り当てあたりの平均処理ビッ
ト数は、ウィンドウ幅+2となる。
【0022】バイナリメソッド、サインドバイナリメソ
ッド、ウィンドウメソッド、宮地方式について、160
ビット程度の楕円曲線の点の演算に用いた(ウィンドウ
メソッドについては4ビットウィンドウを用いた)場合
の計算回数は以下のようになる。
【0023】
【表1】
【0024】
【発明が解決しようとする課題】上述したように、ウィ
ンドウメソッド系の処理では、合計の加算回数が少なく
なり、バイナリメソッド系の処理に比して高速な処理が
可能になると考えられる。しかしながら、事前計算を必
要としないバイナリメソッド系の平均加算回数に比して
ウィンドウメソッド系の加算回数は1/2程度に軽減さ
れているに止まっている。
【0025】従来のウィンドウ方式において、スカラー
倍算を高速化するためにはテーブルを大きくとる必要が
あり、このテーブルを格納しておく領域を確保する必要
がある。しかしながら、上述したように、大きなテーブ
ルを用意しても有効に利用しているとは言い難く、この
テーブルを格納する領域を無駄にしている。また、テー
ブルを大きくすることで事前計算の処理に時間を要し、
スカラー倍算自体は高速であるが、トータルでの高速化
が考慮されていないといった問題を有している。このこ
とは、ウィンドウメソッドを利用したMOC方式であっ
ても同様のことが言える。
【0026】本発明の目的は、テーブル数を削減して有
効利用することにより、テーブル格納領域を削減し、事
前計算の回数を削減してトータルでの演算の高速化を図
ることを可能としたスカラー倍算方法およびその装置を
提案することにある。
【0027】
【課題を解決するための手段】本発明に係るスカラー倍
算方法は、整数を乗数とするスカラー倍算において、乗
数を非隣接型(nonadjacent form)符号付き2進数(以
下、NAFと称す)に変換し、NAFに変換された乗数
を上位ビットより順に最上位ビットが0でない所定の桁
数でなる数値ブロックに分解して固定幅ウィンドウによ
るウィンドウ法を用いて演算することを特徴としてい
る。
【0028】NAFは、0でないビット(1または−
1)が連続しないような符号付き2進数表現であり、0
でないビットの数が最小となる。したがって、加算回数
を軽減することができる。また、NAFは0でないビッ
トが隣接しないため、最上位ビットが0でない数値ブロ
ックで分割した際に、出現する数値ブロックの種類が限
られる。したがって、テーブルを必要最小限に削減する
ことができ、事前計算の回数を軽減することができる。
【0029】ここで、所定の桁数でなる数値ブロックの
うち、NAFに現れるものであって最上位ビットが1と
なる数値ブロックの値を、被乗数に乗算したものを予め
演算してテーブルとして保存しておく構成にできる。例
えば、ウィンドウ幅が4ビットの場合、最上位ビットが
1となる値は、10102(=6)、1001 2(=7)、1000 2
(=8)、10012(=9)、10102(=10)の5つだけ
であり、被乗数Pにこれを乗算した6P、7P、8P、
9P、10Pを事前計算してこれをテーブルとすればよ
いこととなる。
【0030】また、テーブルを作成するために計算した
途中の値を、テーブルに追加して保存しておくように構
成できる。
【0031】さらに、非隣接型符号付き2進数に変換し
た乗数の値を最上位ビットが0でない所定の桁数でなる
数値ブロックに分解した際に、最終の数値ブロックが所
定の桁数に満たない場合に、この最終の数値ブロックの
みテーブルの値を組み合わせて演算するように構成でき
る。
【0032】最終の数値ブロックが所定の桁数に満たな
かった場合には、所定の桁数であって最上位ビットが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の演算を行うことで算出することが可能と
なる。
【0033】このようなスカラー倍算は、楕円曲線上の
点の演算に用いることができ、楕円曲線暗号を演算する
際に利用することができる。また、整数演算に用いるこ
とも可能である。
【0034】さらに、本発明に係るスカラー倍算装置で
は、所定の桁数でなる数値ブロックのうち、非隣接型符
号付き2進数に現れるものであって最上位ビットが1と
なる数値ブロックの値を、被乗数に乗算した値を予め演
算する事前計算手段と、事前計算手段によって演算され
た値をテーブルとして保存するテーブル記憶手段と、乗
数を非隣接型符号付き2進数に変換するNAF変換手段
と、NAF変換手段によって非隣接型符号付き2進数に
変換された乗数を、上位ビットより順に、最上位ビット
が0でない所定の桁数でなる数値ブロックに分解し、テ
ーブル記憶手段に保存されたテーブルを適用するウィン
ドウ演算手段と、非隣接型符号付き2進数に変換した乗
数の値を最上位ビットが0でない所定の桁数でなる数値
ブロックに分解した際に、最終の数値ブロックが所定の
桁数に満たない場合に、この最終の数値ブロックのみテ
ーブルの値を組み合わせて演算する後処理手段とを備え
ている。
【0035】
【発明の実施の形態】本発明に係るスカラー倍算装置の
1実施形態を図1を用いて説明する。
【0036】このスカラー倍算装置1は、通常のCPU
およびメモリを搭載したコンピュータにより実現される
ものであって、主に記憶手段2と演算手段3とで構成さ
れる。
【0037】記憶手段2は、乗数kや被乗数Pおよび演
算結果などを記憶しておく通常記憶部21と、事前計算
により作成されたテーブルを格納しておくテーブル記憶
部22とを備えている。
【0038】演算手段3は、所定の桁数でなる数値ブロ
ックのうち、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に保存する。
【0039】また、演算手段3は、乗数kをNAFに変
換するNAF変換手段32を備えている。このNAF変
換手段32は、G. Reitwiesnerが"Binaryarithmetic, A
dvances in Computers, 1 (1960), pp. 231-308"で提案
した変換方法などを実現するものであり、記憶手段2に
格納されている乗数kを0でないビットが隣接しないよ
うなサインドバイナリ表現に変換する。
【0040】さらに、演算手段3は、NAFに変換され
た乗数kを上位ビットから順に所定の桁数でなる数値ブ
ロックに分解し、テーブル記憶部22に格納されている
テーブルを各数値ブロックに適用するウィンドウ演算手
段33を備えている。
【0041】また、演算手段3は、NAFに変換された
乗数kを上位ビットから順に所定の桁数でなる数値ブロ
ックに分解した際に、最終の数値ブロックが所定の桁数
に満たない場合に、テーブルに格納されている値を用い
てこの最終の数値ブロックの値を演算する後処理手段3
4を備えている。
【0042】次に、本発明に係るスカラー倍算方法につ
いて詳細に説明する。
【0043】図2において、ステップS1では、被乗数
Pおよび乗数kが入力される。この値はシステムが自動
的に選択する数値であってもよく、ユーザが入力する任
意の値であってもよい。
【0044】ステップS2では、被乗数Pに対する事前
計算を行ってテーブルを作成するテーブル作成処理を実
行する。
【0045】ステップS3では、乗数kをNAFに変換
するNAF変換処理を実行する。
【0046】ステップS4では、NAFに変換された乗
数kをウィンドウメソッドを用いて上位のビットから順
に所定の桁数でなる数値ブロックに分割し、テーブルの
値を適用するとともに、2倍算および加算を行うウィン
ドウ演算処理を実行する。
【0047】ステップS5では、最終の数値ブロックが
所定の桁数に満たない場合に、テーブルに格納された値
を使ってこの最終ブロックの値を演算する後処理を実行
する。
【0048】ステップS6では、演算結果を出力し、例
えば記憶手段2に格納する。〔事前計算〕ステップS2
におけるテーブル作成処理を図3にフローチャートとし
て示す。ここでは、ウィンドウ幅を4ビットとしたウィ
ンドウメソッドを用いることとする。
【0049】ステップS11では、被乗数Pに2をかけ
た値2P=P+Pを計算し、これを記憶手段2に格納す
る。ステップS12では、被乗数Pに4をかけた値4P
=2P+2Pを計算し、これを記憶手段2に格納する。
【0050】ステップS13では、被乗数Pに8をかけ
た値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]として保存する。
【0051】ステップS16では、被乗数Pに6をかけ
た値6P=7P−P=table[1]−Pを計算し、これをテ
ーブル記憶部22のtable[0]として保存する。ステップ
S17では、被乗数Pに10をかけた値10P=9P+
P=table[3]+Pを計算し、これをテーブル記憶部22
のtable[4]として保存する。
【0052】このことにより、テーブル記憶部22に
は、図4に示すようなテーブルが作成されることとな
る。すなわち、a=0〜4について、table[a]の値が
それぞれ、6P,7P,8P,9P,10Pとして格納
される。また、このテーブルとは別に、計算途中で得ら
れる値2P,4Pもこの記憶手段2内に保存されること
となる。〔NAFへの変換〕乗数kをNAFに変換する
方法は、前述したように、G. Reitwiesnerの提案する方
法などを用いて実現することができる。
【0053】例えば、乗数k=27622793=110100101011
111011000010012をNAFに変換した場合には、 10101010101000001010001001 となる(値が−1となるビットを"1"で示すこととす
る)。〔ウィンドウ演算処理〕ステップS4におけるウ
ィンドウ演算処理について、図5に示すフローチャート
に基づいて説明する。
【0054】ステップS21では、乗数kの値をNAF
に変換したときの桁数がnであれば(n−1)の値を変
数iとして取り込む。ここでは、乗数kをNAFに変換
したときの値が(k159,k158,k157・・・k1
0)でなりその桁数が160ビットである場合を想定
し、i=159とする。ステップS22では、NAF変
換した乗数kを上位ビットから4桁のウィンドウ幅で取
り込み、ウィンドウ値W=(ki,ki-1,ki-2
i-3)とする。この時のウィンドウ値Wは、W=(k
15 9,k158,k157,k156)となる。ステップS23で
は、この時のウィンドウ値Wから6を引いた値のテーブ
ルを参照して、これを演算結果Rの初期値とする。たと
えば、W=10002=8であれば、table[2]を参照して、
R=8Pとする。
【0055】ステップS24では、変数iから4をデク
リメントする。ステップS25では、乗数kについて現
在のウィンドウの下にさらにビットが存在するか否かを
判別する。変数iの値が0よりも大きい場合に、次のビ
ットが存在するとして、ステップS26に移行する。ス
テップS26では、乗数kについて現在のウィンドウの
下に位置する次のビットkiが0であるか否かを判別す
る。次のビットkiが0であると判断した場合、ステッ
プS27に移行する。ステップS27では、Rの値を2
倍算し、R=2Rとする。ステップS28では変数iか
ら1をデクリメントして、ステップS25に移行する。
【0056】ステップS26において、次のビットki
が0でないと判断した場合には、ステップS29に移行
する。ステップS29では、乗数kについて現在のウィ
ンドウの下に位置するビット数が4ビット以下になった
か否かを判別する。ここで、変数iの値が3以下であれ
ば、乗数kについて現在のウィンドウの下に位置するビ
ット数が4ビット以下になったと判断してメインルーチ
ンに復帰する。また、変数iの数が4以上であれば、ス
テップS30に移行する。
【0057】ステップS30では、Rの値を2倍算し、
R=2Rとする。ステップS31、S32、S33で
は、同様にRの値を2倍算し、R=2Rとする。したが
って、ステップS30〜S33では、R=24Rを計算
することとなる。
【0058】ステップS34では、次のウィンドウにつ
いて、ウィンドウ値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
に移行する。
【0059】ステップS25において乗数kについて現
在のウィンドウの下に次のビットが存在しないと判別し
た場合およびステップS29において乗数kについて現
在のウィンドウの下にあるビット数が4ビット以下にな
った場合には、メインルーチンに復帰する。 〔最終ウィンドウ処理〕ウィンドウ演算処理において、
最終のウィンドウについて所定の桁数以下となった場合
には、ステップS5の後処理が必要となる。これは、図
5において、変数iの値がステップS25では0よりも
大きくかつステップS29において3以下であると判断
された場合である。このときの最終ウィンドウ処理を図
6に示すフローチャートに基づいて説明する。
【0060】ステップS41では、最終ウィンドウのウ
ィンドウ値Wに初期値として0を代入する。ステップS
42では、次のビットが存在するか否かを判別する。こ
こでは、変数iの値が0よりも大きい場合に、次のビッ
トが存在すると判断してステップS43に移行する。ス
テップS43では、W=2W+kiを計算する。ステッ
プS44では、Rの値を2倍算して、R=2Rを計算す
る。ステップS45では、変数iの値から1だけデクリ
メントし、ステップS42に移行する。
【0061】ステップS42において、変数iの値が0
以下になった場合、次のビットが存在しないと判断し
て、ステップS46に移行する。
【0062】ステップS46では、ウィンドウ値Wの値
を判別して、対応するステップに分岐する。ウィンドウ
値W=0の場合、何もせずにメインルーチンに復帰す
る。ウィンドウ値W=6〜10の場合には、ステップS
47に移行する。ステップS47では、R=R+table
[W−6]を計算する。ウィンドウ値Wの値が6〜10の
場合には、最終ウィンドウは4ビットであり、これに対
応するテーブルが存在する。したがって、ウィンドウ値
Wに対応するテーブルを参照して最終ウィンドウの計算
を行う。
【0063】ウィンドウ値W=−6〜−10の場合に
は、ステップS48に移行する。ステップS48では、
ステップS47と同様にしてウィンドウ値Wに対応する
テーブルを参照して、R=R−table[−W−6]を計算
する。
【0064】ウィンドウ値W=1の場合、ステップS4
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を計算する。
【0065】ウィンドウ値W=4の場合、ステップS5
3に移行する。ステップS53では、記憶手段2に保存
しておいた(4P)の値を読み込んでこれをRに加算
し、R=R+4Pを計算する。ウィンドウ値W=−4の
場合、ステップS54に移行する。ステップS54で
は、記憶手段2に保存しておいた(4P)の値を読み込
んでRからこれを減算し、R=R−4Pを計算する。
【0066】ウィンドウ値W=3の場合、ステップS5
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を計
算する。
【0067】ウィンドウ値W=5の場合、ステップS5
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を計
算する。
【0068】この後、メインルーチンに復帰する。メイ
ンルーチンでは、このようにして計算されたRの値を演
算結果として出力し、例えば、記憶手段2の所定領域に
格納する。 〔ウィンドウメソッドにおける処理ビット数〕本発明に
よれば、乗数kをNAF表現に変換し、最上位ビットが
1となるようにウィンドウを当てはめているため、1ウ
ィンドウあたりの処理ビット数は、ウィンドウ幅をwと
すると、平均w+1.5ビットとなる。ウィンドウ幅w
=4とした場合、1ウィンドウあたりの処理ビット数は
5.4ビットとなる。
【0069】また、2倍算を行う回数は、最終の数値ブ
ロックについて省略することができるため、乗数kのビ
ット数m−4となり、m=160の場合2倍算の回数は
156となる。乗数kに当てはめるウィンドウの平均個
数は、この2倍算の回数を1ウィンドウあたりの処理ビ
ット数で割った値となり、この回数が平均加算回数とな
る。前述の乗数kのビット数m=160で、ウィンドウ
幅w=4とした場合には、ウィンドウの平均個数は15
6/5.4=28.9となり、これが平均加算回数とな
る。 〔テーブル個数〕本発明において、ウィンドウ幅をwと
した場合、事前計算により作成すべきテーブル数は、以
下のように表すことができる。
【0070】 wが偶数の場合:2/3(2w-1−2)+1 wが奇数の場合:2/3(2w-1−1)+1 また、このテーブルを作成するために使用する値の個数
は、(w−2)個であり、合計すると次のようになる。
【0071】 wが偶数の場合:2/3(2w-1−2)+w−1 wが奇数の場合:2/3(2w-1−1)+w−1 これに対し、従来のウィンドウメソッドおよびMOC方
式の場合には、テーブル数は(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とした場合
の最終ウィンドウの取り得る値は次のようになる。
【0072】wが偶数の場合:最小−1/3(2w+1
2)、最大1/3(2w+1−2) wが奇数の場合:最小−1/3(2w+1−1)、最大1
/3(2w+1−1) このうち後処理としての加算演算が不要なものは、保存
している値が利用できる場合と、±P、0の場合であ
る。前述したように、記憶手段2に格納している値の合
計数は次のようになる。
【0073】 wが偶数の場合:2/3(2w-1−2)+w−1 wが奇数の場合:2/3(2w-1−1)+w−1 これから、ウィンドウ幅wの場合の平均後処理回数は、
次のようになる。
【0074】 wが偶数の場合:(2w+1−6w+4)/(2w+2−1) wが奇数の場合:(2w+1−6w+2)/(2w+2+1) 通常よく用いられるウィンドウ幅wが3ビット、4ビッ
ト、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とし
て示す。
【0075】
【表2】
【0076】
【表3】 この結果から、本発明によるスカラー倍算方法によれ
ば、事前計算によって作成するテーブル数を1/2に削
減することができ、テーブルを格納するための領域を小
さくすることができる。また、事前計算の回数を少なく
することにより、合計計算回数を削減することができ、
トータルでの処理速度を高速化することが可能となる。 〔他の実施形態〕楕円曲線上の点のスカラー倍算だけで
なく、被乗数Pを整数とすることで通常の整数演算にお
いても高速な乗算方式を得ることができる。
【0077】
【発明の効果】本発明によれば、楕円曲線上の点のスカ
ラー倍算について、事前計算により作成するテーブルの
数を通常のウィンドウメソッド系の演算を用いる場合に
比して約1/2に削減することができ、演算に必要な平
均加算回数を全体で数%削減することができ、処理速度
を高速化することが可能となる。
【図面の簡単な説明】
【図1】本発明の1実施形態の制御ブロック図。
【図2】その制御フローチャート。
【図3】テーブル作成処理のフローチャート。
【図4】テーブルの説明図。
【図5】ウィンドウ演算処理のフローチャート。
【図6】最終ウィンドウ処理のフローチャート。
【符号の説明】
1 スカラー倍算装置 2 記憶手段 3 演算手段 21 通常記憶部 22 テーブル記憶部 31 事前計算手段 32 NAF変換手段 33 ウィンドウ演算手段 34 後処理手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 鳥居 直哉 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 9A001 CZ07 EE02 EE03 EE04 FF01 JZ14 LL03

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】整数を乗数とするスカラー倍算において、 前記乗数を非隣接型符号付き2進数に変換し、前記非隣
    接型符号付き2進数に変換された乗数を上位ビットより
    順に最上位ビットが0でない所定の桁数でなる数値ブロ
    ックに分解して固定幅ウィンドウによるウィンドウ法を
    用いて演算することを特徴とするスカラー倍算方法。
  2. 【請求項2】所定の桁数でなる数値ブロックのうち、非
    隣接型符号付き2進数に現れるものであって最上位ビッ
    トが1となる数値ブロックの値を、被乗数に乗算したも
    のを予め演算してテーブルとして保存しておくことを特
    徴とする、請求項1に記載のスカラー倍算方法。
  3. 【請求項3】前記テーブルを作成するために計算した途
    中の値を、前記テーブルに追加して保存しておくことを
    特徴とする、請求項2に記載のスカラー倍算方法。
  4. 【請求項4】非隣接型符号付き2進数に変換した乗数の
    値を最上位ビットが0でない所定の桁数でなる数値ブロ
    ックに分解した際に、最終の数値ブロックが前記所定の
    桁数に満たない場合に、この最終の数値ブロックのみ前
    記テーブルの値を組み合わせて演算することを特徴とす
    る、請求項3に記載のスカラー倍算方法。
  5. 【請求項5】楕円曲線上の点の演算に用いることを特徴
    とする、請求項1〜4のいずれかに記載のスカラー倍算
    方法。
  6. 【請求項6】整数演算に用いることを特徴とする、請求
    項1〜4のいずれかに記載のスカラー倍算方法。
  7. 【請求項7】所定の桁数でなる数値ブロックのうち、非
    隣接型符号付き2進数に現れるものであって最上位ビッ
    トが1となる数値ブロックの値を、被乗数に乗算した値
    を予め演算する事前計算手段と、 前記事前計算手段によって演算された値をテーブルとし
    て保存するテーブル記憶手段と、 乗数を非隣接型符号付き2進数に変換するNAF変換手
    段と、 前記NAF変換手段によって非隣接型符号付き2進数に
    変換された乗数を、上位ビットより順に、最上位ビット
    が0でない前記所定の桁数でなる数値ブロックに分解
    し、前記テーブル記憶手段に保存されたテーブルを適用
    するウィンドウ演算手段と、 非隣接型符号付き2進数に変換した乗数の値を最上位ビ
    ットが0でない所定の桁数でなる数値ブロックに分解し
    た際に、最終の数値ブロックが前記所定の桁数に満たな
    い場合に、この最終の数値ブロックのみ前記テーブルの
    値を組み合わせて演算する後処理手段と、を備えるスカ
    ラー倍算装置。
JP30532098A 1998-10-27 1998-10-27 スカラー倍算方法およびその装置 Expired - Fee Related JP3797808B2 (ja)

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)

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

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5379700B2 (ja) * 2010-01-08 2013-12-25 日本電信電話株式会社 スカラー倍演算装置、スカラー倍演算方法、スカラー倍演算プログラム、記録媒体
JP2018146766A (ja) * 2017-03-06 2018-09-20 キヤノン株式会社 スカラー倍演算装置、スカラー倍演算方法及びプログラム

Cited By (8)

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