JP4541485B2 - べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 - Google Patents

べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 Download PDF

Info

Publication number
JP4541485B2
JP4541485B2 JP2000064463A JP2000064463A JP4541485B2 JP 4541485 B2 JP4541485 B2 JP 4541485B2 JP 2000064463 A JP2000064463 A JP 2000064463A JP 2000064463 A JP2000064463 A JP 2000064463A JP 4541485 B2 JP4541485 B2 JP 4541485B2
Authority
JP
Japan
Prior art keywords
bit
bit string
power
read
calculation
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.)
Expired - Fee Related
Application number
JP2000064463A
Other languages
English (en)
Other versions
JP2000330470A5 (ja
JP2000330470A (ja
Inventor
貴敏 小野
なつめ 松崎
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2000064463A priority Critical patent/JP4541485B2/ja
Publication of JP2000330470A publication Critical patent/JP2000330470A/ja
Publication of JP2000330470A5 publication Critical patent/JP2000330470A5/ja
Application granted granted Critical
Publication of JP4541485B2 publication Critical patent/JP4541485B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、暗号演算などに使用されるべき乗演算、楕円べき倍演算技術に関する。
【0002】
【従来の技術】
多数の通信端末が接続されたネットワークを通じて、特定の通信端末と安全に通信する手法として暗号通信が用いられる。暗号通信の一つに公開鍵暗号法と称されるものがある。例えばRSA暗号、エルガマル暗号等がこれに含まれる。これらの暗号法は、メッセージの暗号化、復号化に、メッセージを暗号化鍵でべき乗したり、暗号文を復号化鍵でべき乗したりするというように、べき乗演算を行う。
【0003】
また、公開鍵暗号法に含まれる他の例として、楕円曲線を用いた暗号法がある。他の暗号法が有限体を定義域としているのに対し、楕円曲線を定義域とするものであり、その定義域内でのべき倍演算によって暗号化、復号化が実現される。
【0004】
但し、べき乗演算やべき倍演算は、上記した公開鍵暗号法だけではなく、署名通信やメッセージ認証等においても用いられている。
【0005】
このようなべき乗演算、楕円べき倍演算の方法として、D.E.Kunuthが、The Art of Computer Programming,Vol.2,Seminumerical algorithmsに記載したバイナリ法が知られている。また、バイナリ法の改良として、F.MorainとJ.Olivosが、Teoretical Informatics and Applications Vol.24,No.6に記載した符号つきバイナリ法、前記D.E.Kunuthの著書の中のスモールウィンドウ法などが知られている。
【0006】
また、符号つきバイナリ法を改良した方法として、特開平7−49769号公報に記載された技術が知られている。
【0007】
これらの従来技術の概要を、べき乗剰余演算を行なう方法を例にとり説明する。
<バイナリ法>
バイナリ法は、べき値kを2進表現ki(n>i≧0)(kiは0または1)とした時に、n−1回の2乗剰余演算と、ki=1となる回数の乗算剰余演算とによって、べき乗剰余演算結果を得る方法である。
【0008】
例えば2進表現ki(4>i≧0)=1011として、べき乗値A1011を計算する場合であると、バイナリ法は、図8に示す演算式により求める。
【0009】
ここで、初期値として、xに1を代入し、後は最上位桁を第1桁とし、その桁の値が1であれば、xの値を2乗してxとおく演算と、その新たなxをA倍する演算とを行う。他方、その桁の値が0であれば、xの値を2乗して新たなxとおく演算のみを行う。この演算を順次下位桁に対して行い、最下位桁まで終了すると、そのとき得られたxの値がべき乗値(A1011)となる。
【0010】
この演算のフローチャートは、図9に示す通りであり、i=n−1から降順にkiの値を調べ(S71、S76)、その結果、1である時だけ乗算剰余演算を行なう(S74、S75)。2乗剰余演算は、kiの値が1であるか0であるかに関係なく行なう(S73)。この方法は、べき値kがランダムに選ばれる場合、平均n/2回の乗算剰余演算を必要とする。べき値を通常の2進表現で表せば良いため、その保持領域としてはnビットのみあれば良い。
【0011】
上記べき乗演算を行う、べき乗剰余演算装置の全体構成をブロック図で示したものが図4である。
【0012】
図中101は、べき数値を処理するべき数値処理部である。この処理部は、べき数値を処理しながら実際の演算の制御を行なう。102は、本装置に入力されるnビットのべき数値kを表す。べき数値処理部101では、初期値としてkを取り、その後べき数値の更新処理を行なってゆく。103は、べき数値処理部から演算部へ出力される制御信号である。この信号によって、実際の演算の制御が行なわれる。104は、本装置に入力される被べき乗数Aである。105は、装置からの出力であり、Aのk乗剰余値が出力される。106は、実際の演算を行なう演算部である。ここでは103の制御信号に従って、104で与えられた数値Aを用い、2乗算剰余、乗算剰余を行なう。なお剰余を取る素数pは、あらかじめ装置内に保持してあるものとする。図10はべき値処理部101のブロック内構成を詳細に示した図である。
【0013】
図10において、601がべき値保持レジスタで、べき数値を保持するためのnビット領域を有する。602は、べき数値保持レジスタへ初期値を入力する入力線で、本装置への入力kがそのまま入力される。605はべき数値シフタ部で、べき数値レジスタのビットを、1ビット左シフトする。なお、最上位ビットは、シフトアウトした結果破棄される。606は、べき値保持レジスタの最上位ビットを出力する出力線で、演算部103に伝える制御信号となる。この制御信号に従って、演算部106の処理が定まる。
【0014】
図11は、演算部106の構成を詳細に示す図である。701は、演算中の中間値を保持する中間値レジスタである。702は、中間値レジスタへ入力される初期値で、定数1が入力される。703は、2乗演算部で、中間値レジスタの値の2乗剰余演算値を求め出力する。704は、乗算演算部で、2乗演算部の出力と、被べき乗数Aの乗算剰余演算値を出力する。707は、中間値として保持する値を選択するセレクタで、べき数値処理部101で出力された信号に従って、0の時2乗演算部からの出力、1の時乗算演算部からの出力を選択する。708は、最終演算結果の出力で、べき数値として入力された値kの全ビットを処理した後、値が出力される。この値はAのk乗剰余値となっている。
【0015】
<符号つきバイナリ法>
次に、従来の第2方法として、符号つきバイナリ法の概要を説明する。符号つきバイナリ法は、べき値kを2進表現ki(n>i≧0)(kiは0または1)とした時に、符号つき2進表現k’i(n≧i≧0)(k’iは0または1または−1)に変換し、n回の2乗剰余演算と、k’i=1または−1となる回数の乗算剰余演算によって、べき乗剰余演算結果を得る方法である。例えば、2進表現ki(4>i≧0)=1111であると、符号付き2進表現は、k’i(4≧i≧0)=1000(−1)というように変換される。この表現方法は、kiに連続する1が多い場合、k’iに0が多くなり、その分A倍する計算量が少なくなる。
【0016】
この符号付きバイナリ法の演算のフローチャートを図12に示す。図12中、S101〜S106までのステップが、2進表現kiを符号付き2進表現に変換する処理であり、S107〜S114までのステップが、符号付き2進表現k’iにバイナリ法を適用する処理である。バイナリ法自体の処理は、基本的に先述したバイナリ法と同じである。
【0017】
図12のフローチャートの概略を述べると、次の通りである。まず、べき値の符号つき2進表現への変換のために、i=0から昇順にkiの値を調べ(S101、S103、S105)、ki=1かつk(i+1)=1の時、k’i=−1にし、桁上がりを考慮しながら、ki+1に1を加える(S104)。それ以外の時は、k’i=kiとする(S106)。桁上がりの加算を考慮するため、kiがn桁なのに対し、k’iはn+1桁となる。次に、i=nから降順にk’iの値を調べ(S107、S110、S113)、その結果、1である時に通常の乗算剰余演算を(S111)、−1である時に逆数の乗算剰余演算を行なう(S112)。2乗剰余演算は、バイナリ法と同様k’iの値に関係なく行なう。この方法は、べき値kがランダムに選ばれる場合、平均n/3回の乗算剰余演算を必要とする。べき値は、符号つき2進表現で表すため、1桁に対して2ビット(0、1、−1の3値を表現する必要があるため)必要とし、全体として2(n+1)ビットの保持領域を必要とする。
【0018】
図13は、符号つきバイナリ法を用いたべき乗剰余演算装置のべき数値処理部である。901は、べき値保持レジスタで、べき数値を符号つき2進表現で保持するための2(n+1)ビット領域を有する。902は、べき数値保持レジスタへの初期値を入力する入力線で、nビットのべき乗数kを符号つき2進表現変換部で変換した結果が入力される。907は、符号つき2進表現変換部で、図12で示された処理フローに従い、n桁の2進表現をn+1桁の符号つき2進表現に変換する。905は、べき数値シフタ部で、べき数値レジスタのビットを、2ビット左シフトする。符号つき2進表現は、1桁を2ビットで表現するので、2ビットの左シフトとなる。なお、上位2ビットは、シフトアウトした結果破棄される。906は、べき値保持レジスタの上位2ビットで、演算部に伝える制御信号となる。この制御信号に従って演算部の処理が定まる。
【0019】
図14は、符号つきバイナリ法を用いたべき乗剰余演算装置の演算部である。1001は、演算中の中間値を保持する中間値レジスタである。1002は、中間値レジスタへ入力される初期値で定数1が入力される。1003は、2乗演算部で、中間値レジスタの値の2乗剰余演算値を求め出力する。1004は、乗算演算部で、2乗演算部の出力と、被べき乗数A、もしくはその逆数の乗算剰余演算値を出力する。1005は、逆数取得部で、被べき乗数Aの逆数を出力する。1006は、乗算演算部への入力値を選択するセレクタで、べき数値処理部からの制御信号によって、被べき乗数A、もしくはその逆数を選択する。1007は、中間値として保持する値を選択するセレクタで、べき数値処理部で出力された信号に従って、「00」のとき2乗演算部からの出力、それ以外のとき乗算演算部からの出力を選択する。1008は、最終演算結果の出力で、べき数値として入力された値kの全ビットを処理した後、値が出力される。この値はAのk乗剰余値となっている。
【0020】
<改良型符号付きバイナリ法>
次に特開平7−49769号公報で用いられている改良型符号つきバイナリ法の概要を説明する。改良型符号つきバイナリ法は、べき値kを2進表現ki(n>i≧0)(kiは0または1)とした時に、符号つき2進表現への変換を行ないながら、乗算剰余演算等を行なって、べき乗剰余演算結果を得る方法である。この改良型符号付きバイナリ法は、先述した符号付きバイナリ法が全桁の符号変換を完了してからでないと、べき乗演算を行うことができないというバッチ式処理であったのを、符号変換の途中でべき乗演算も行えるように改良したものである。演算フローは、図15に示す通りである。i=n−1から降順に、kiの値を3ビットずつ調べ(S133)、その結果、2ビット分を符号つき2進表現へ変換し、乗算剰余演算を行なう。この方法は、べき値kがランダムに選ばれる場合、平均3n/8回の乗算剰余演算を必要とする。べき値は、符号つき2進表現への変換と乗算剰余演算等が同時に行なわれるため、その保持領域としてはnビットのみあれば良い。
【0021】
図16は、改良型符号つきバイナリ法を用いたべき乗剰余演算装置のべき数値処理部である。1201は、べき値保持レジスタで、べき数値を2進表現で保持する。1202は、べき数値保持レジスタへの初期値入力で、nビットのべき乗数kがそのまま入力される。1203は、べき数値判定部で、べき数値保持レジスタの上位3ビットのビットパターンを5種類のタイプに分類する。1205は、べき数値シフタ部で、べき数値レジスタのビットを、2ビット左シフトする。この方法では、1回の判定により演算部の動作2回分の制御信号を生成するため、2ビットの左シフトとなる。なお、上位2ビットはシフトアウトした結果破棄される。1206は、べき数値判定部で分類されたタイプを、演算部に伝える制御信号である。この制御信号に従って演算部の処理が定まる。
【0022】
改良型符号つきバイナリ法を用いたべき乗剰余演算装置の演算部は、図2に示されている。図中、301は、演算中の中間値を保持する中間値レジスタである。302は、中間値レジスタへの初期値入力線で初期値としては定数1が入力される。303は、2乗演算部で、中間値レジスタの値の2乗剰余演算値を求め、出力する。304は、乗算演算部で、2乗演算部の出力と、被べき乗数A、もしくはその逆数の乗算剰余演算値を求め、出力する。305は、逆数取得部で、被べき乗数Aの逆数を出力する。306は、乗算演算部への入力値を選択するセレクタで、べき数値処理部で判定された分類に従って、本装置への入力A、もしくはその逆数を選択する。307は、中間値として保持する値を選択するセレクタで、べき数値処理部で判定された分類に従って、2乗演算部からの出力、もしくは乗算演算部からの出力を選択する。308は、最終演算結果の出力で、べき数値として入力された値kの全ビットを処理した後、値が出力される。この値はAのk乗剰余値となっている。
【0023】
図17は、べき数値処理部のべき数値判定部で判定された分類と、その分類に従った演算部の数値選択処理の対応を表にしたものである。1301は、べき数値判定部で分類される、べき数値の上位3ビットのビットパターンである。1303は、前記分類に従って演算部で処理される選択処理を示したものである。「Aの乗算」となっている欄は、乗算演算部への入力として本装置への入力値Aが選択され、中間値として保持する値として乗算演算部の出力を選択するものである。「A^−1の乗算」となっている欄は、乗算演算部への入力として、本装置への入力値Aの逆数が選択され、中間値として保持する値として、乗算演算部の出力を選択するものである。「乗算なし」となっている欄は、中間値として保持する値として、2乗算演算部の出力を選択するものである。1304は、前記分類に従って演算部で処理される選択処理を示したものである。ただし、この選択処理は、1303で行なわれた選択処理の次のループでの演算部の処理で用いられるものである。すなわち、べき数値判定部で判定された1回の分類に対して、演算部での2回の処理の分の選択処理が決定される。
【0024】
【発明が解決しようとする課題】
ところで、上述した従来技術のうち、バイナリ法によれば、各桁で2乗計算を行うと共に、その桁の数値が1であれば、A倍する計算も行わなければならず、平均して1桁で1.5回の計算が必要になり、計算回数が多くなるという課題がある。
【0025】
これに対して、符号つきバイナリ法は、通常のバイナリ法に比べて演算回数が削減できる反面、べき数の保持領域として少なくともバイナリ法の2倍の領域を必要とするという課題がある。
【0026】
スモールウィンドウ法の説明は省略したが、符号つきバイナリ法よりさらに演算回数が削減できるが、保持領域がさらに必要となる。
【0027】
また特開平7−49769号公報の改良型符号つきバイナリ法ではべき数の保持領域を増やすことなく、演算回数の平均値を符号つきバイナリ法で使われる回数に近い回数に抑えることができるものの、反面、この方法では、べき数の「0010」という特定のビットパターンに弱いという課題がある。通常のバイナリ法では、1の現われる桁の回数分の乗算剰余演算回数で済むため、上記特定のパターン「0010」であれば、1回の乗算剰余演算が行なわれるのみである。しかし、改良型符号つきバイナリ法では、図17の表にこのビットパターンをあてはめてみると、2回の乗算剰余演算が必要になってくる。すなわち、最悪の場合、通常のバイナリ法の2倍の乗算回数が必要になってしまうという欠点を持つ。
【0028】
なお、以上はべき乗演算における課題であるが、楕円べき倍演算においても同様の課題があり、その解決が必要とされるのはべき乗演算と同じである。
【0029】
従って、この発明は、べき数の保持領域をバイナリ法で用いる領域に近い大きさに削減し、かつ演算回数の平均値を符号つきバイナリ法で使われる回数に近い回数に抑え、最悪の場合でも通常のバイナリ法と同じ乗算回数で演算が可能な、べき乗演算装置を提供することを第1の目的とする。
【0030】
本発明の第2の目的は、べき乗数をべき数値処理部で前処理してからべき乗演算を行なうべき乗演算装置において、演算量を低減するために改良されたべき数値処理部を提供することにある。
【0031】
本発明の第3の目的は、べき乗演算装置の主要部をなし、べき数の保持領域の削減と乗算回数の削減とを実現するために用いられている新規なべき乗演算方法を提供することにある。
【0032】
本発明の第4の目的は、上記べき乗演算方法を実行するためのプログラムを格納した記録媒体を提供することにある。
【0033】
本発明の第5の目的は、上記べき乗演算装置、方法、記録媒体と同様な利益、効果をもたらせてくれるべき乗剰余演算装置、べき乗剰余演算方法、記録媒体を提供することにある。
【0034】
本発明の第6の目的は、上記べき乗演算装置、方法、記録媒体と同様な利益、効果をもたらせてくれる楕円べき倍演算装置、楕円べき倍演算方法、記録媒体を提供することにある。
【0035】
【課題を解決するための手段】
上記第1および第2の目的を達成するために、本発明は、kをnビットのべき乗数、Aを被べき乗数とする、Ak のべき乗演算を行う前にべき数値処理部で前記kを前処理し、処理後のべき乗数をAと共に演算部に加えてAk演算を行うべき乗演算装置における前記べき数値処理部であって、
符号ビットと前記整数kを格納するビット列格納手段と、
ビット列格納手段に格納されているビット列から符号ビットを含むn未満の所定ビット数のビット列データを読み出す読出し手段と、
読出し手段が読み出すビット列データを基にして新たなビット列データを生成するビット列データ生成手段と、
読み出し手段が読み出すビット列データを基にして被べき乗数Aの演算方法を指定する演算方法指定手段と、
演算方法指定手段にて指定された演算方法で演算するよう演算部へ指示する一方、ビット列データ生成手段が生成したビット列データで前記ビット列格納手段内の対応するビット列を更新する指示・更新手段と、
ビット列格納手段から次に読み出すビット位置を、符号ビットを除き上位から下位ビット側にシフトする読み出し位置シフト手段と、
上記各手段を(n+1)回繰り返し動作させる繰り返し制御手段と、
を備えることを特徴としている。
【0036】
ここで、前記読み出し位置シフト手段は、符号ビットを除き、ビット列格納手段中でビット列を桁上げする桁上げ手段であり、
前記読み出し手段は、桁上げ後に1ビットの符号ビットを含む上位4ビットのデータを前記ビット列格納手段から読み出すこと、
を特徴としている。
【0037】
また、前記ビット列データ生成手段は、第1欄に第1群のビットパターンが、第2欄に第2群のビットパターンが対応記述されたテーブルを含み、
読み出し手段が読み出したビット列データのビットパターンの少なくとも一部を共通にするビットパターンを第1群のビットパターンから検索し、検索したビットパターンに対応して記述されたビットパターンを第2群のビットパターンから読み出し、これを新たなビット列データとして生成すること、
を特徴としている。
【0038】
更に、前記テーブルの第1群のビットパターンが「0011」のビット列、上位2ビットが「01」のビット列、上位3ビットが「110」のビット列の3種類であり、
第1群のビットパターンが「0011」のビット列の場合、第2群のビットパターンが「1001」であり、第1群のビットパターンが上位3ビット「110」のビット列である場合、第2群のビットパターンが「010」であり、
読み出し手段から読み出したビット列データが第1群のビットパターンにない場合、並びに第1群のビットパターンが「01」の場合、ビット列データ生成手段は、読み出したビット列データと同じビット列データを生成すること
を特徴としている。
【0039】
また、前記テーブルは更に第3欄を備えており、
前記演算方法指定手段は、テーブルの第3欄に記述された演算方法であること、
を特徴としている。
【0040】
また、第1群のビットパターンが「0011」と「01」のビット列の場合、第3欄に記述された演算方法が被べき乗数Aの乗算であり、第1群のビットパターンが「110」のビット列の場合、第3欄に記述された演算方法が被べき乗算Aの逆数の乗算であり、
読み出したビット列データが、第1群のビットパターンのいずれにも該当しないビットパターンの場合、演算方法指定手段は乗算しない指示を行なうこと、
を特徴としている。
【0041】
更に、前記ビット列格納手段が、最上位ビットを符号ビットとするn+2ビットのレジスタであり、読み出し位置シフト手段が、レジスタに格納されたビット列を、最上位ビットを除き1ビットづつ左シフトするシフタであること、
を特徴としている。
【0042】
また、前記ビット列データ生成手段は、所定の論理式を格納した演算手段であり、ビット列格納手段から読み出したビット列の各ビットの値を前記論理式に代入して新たなビット列を生成すること、
を特徴としている。
【0043】
更に、前記ビット列データ生成手段の格納する論理式は、ビット列格納手段から読み出したビット列データを上位ビットから、B0123 とし、生成すべき各ビットのデータを D0123 とした場合、以下の式で与えられること、
を特徴としている。
【0044】
【数5】
Figure 0004541485
【0045】
ここで、前記演算方法指定手段は、所定の論理式を格納しており、ビット列格納手段から読み出した各ビットの値を当該論理式に代入して演算方法を求めること、
を特徴としている。
【0046】
前記演算方法指定手段は、ビット列格納手段から読み出したビット列を上位ビットから、B0123とし、Aの乗算を行なうか否かの指定信号をSA、A-1の乗算を行なうか否かの指定信号をSA-1とした場合、指定信号は以下の式で与えられることを特徴としている。
【0047】
【数6】
Figure 0004541485
【0048】
上記第1の目的は、nビットの正の整数k、及び整数Aが与えられた時に、Aのk乗を計算するべき乗演算装置であって、以下の構成を含むものによっても達成される。
【0049】
即ち、n+1ビットのべき値保持領域、符号を保持する符号保持領域、演算過程において得る中間値を保持する中間値保持領域を有する記憶手段と、
前記べき値保持領域の下位nビットに前記整数kを、最上位ビットに0を、前記符号保持領域に、正の符号を表す「+」を、前記中間値保持領域に定数1をそれぞれ初期設定する初期設定手段と、
中間値保持領域に格納されている値を2乗して中間値を書き直す中間値2乗演算手段と、
符号保持領域の符号データと、べき値保持領域の上位3ビット数のビット列データを判定対象データとして選択する判定対象データ選択手段と、
選択したデータを参照して、符号保持領域の値が「+」で、かつべき値保持領域の上位3ビットの値が「011」であるという第1のパターン、符号保持領域の値が「+」で、かつべき値保持領域の上位1ビットが「1」であるという第2のパターン、符号保持領域の値が負の符号を表す「−」で、かつべき値保持領域の値の上位2ビットが「10」であるという第3のパターンのいずれかに該当するか、いずれにも該当しないかを判定する判定手段と、
前記判定手段で第1のパターン、もしくは第2のパターンに該当すると判定された時、中間値保持領域に格納された値と整数Aの積を求め新たな中間値として中間値保持領域の値を更新し、第3のパターンに該当すると判定された時、中間値保持領域に格納された値と整数Aの商を求め新たな中間値として中間値保持領域の値を更新し、いずれのパターンにも該当しないと判断された時、何らの演算も行なわず中間値保持領域の値を元のままの値に保持する中間値乗算手段と、
前記判定手段で第1のパターンと判定された時、符号保持領域の値を「−」に、べき値保持領域の上位3ビットの値を「001」に変換する第1のべき値変換手段と、
前記判定手段で第3のパターンと判定された時、符号保持領域の値を「+」に変換する第2のべき値変換手段と、
判定手段の判定結果に従ってなされるべき処理を行なった後、べき値保持領域の値を1ビット左にシフトし、オーバフローを破棄するべき値シフト手段と、
中間値保持領域の値を演算結果として出力する出力手段と、
前記初期設定手段により記憶手段の各領域に初期設定を行なわせた後、中間値2乗演算手段、べき値判断手段、中間値乗算手段、第1のべき値変換手段、第2のべき値変換手段による各動作を、べき値シフト手段によるビットシフトに同期させながら(n+1)回繰り返えさせ、最後に出力手段から演算結果を出力させる制御手段との構成である。
【0050】
上記第4の目的、第5の目的は、基本的には上記べき乗演算装置の主要構成若しくは等価な構成を含む、べき乗剰余演算装置、楕円べき倍演算装置によって達成される。従って、べき乗演算装置と同様に、べき数保持領域の大幅な増加を抑制できるし、演算回数の低減を図ることが出来る。
【0051】
【発明の実施の形態】
以下、本発明の実施の形態について添付図面を用いて説明する。
本実施の形態に係るべき乗剰余演算装置の基本ブロックは、既述した図4に示す通りであり、べき数値処理部101と演算部106から成る。即ち、べき数値処理部101は、べき数値k(2進表現)を処理し、その出力103を演算部106に送出する。演算部106は、被べき数Aと前記出力103とを素数Pを法とする剰余体上で演算し、Akmodpを得る。
図1は、べき数値処理部の詳細構成図で、本発明が従来装置と異なる構成となる部分である。201は、べき数値保持レジスタで、べき数値のビット数(n)に2を加えた幅を持つ。
【0052】
べき数値のビット数より2多いのは、符号ビットが1ビット分と、符号付きバイナリ法を基本とするので、べき数値より1ビット多く必要なことによる。202は、べき数値保持レジスタへの初期値入力で、入力kがそのまま入力される。203は、べき数値判定部で、べき数値保持レジスタの上位4ビットのビットパターンを、4種類のタイプに分類する。204は、べき数値変換部で、前記べき数値判定部で分類されたタイプに従い、べき数値保持レジスタの上位4ビットのビットパターンを変換する。205は、べき数値シフタで、べき数値レジスタの最上位ビットを除いたビットを、1ビット左シフトする。なお最上位ビットはそのまま保持される。べき数値判定部203からべき数値変換部204に至るループと、べき数値シフタ205のループは、交互に実行される。206は、べき数値判定部で分類されたタイプを、演算部に伝える制御信号である。この制御信号に従って演算部の処理が定まる。
図3は、べき数値処理部のべき数値判定部203で判定された分類と、その分類に従ったべき数値変換部204の変換処理、及び演算部の数値選択処理の対応を表にしたものである。401は、べき数値判定部で分類される、べき数値の上位4ビットのビットパターンである。402は、前記分類に従ってべき数値変換部で処理される変換値を示したものである。ここで変換なしとなっている場合は、べき数値の上位4ビットの値変換は行なわない。403は、判定部203の判定結果であり、演算部で処理されるべき選択処理を示している。選択処理としては図から理解されるように「Aの乗算」と「A^−1の乗算」と「乗算なし」の3種類存在する。
前記べき数値判定部203による判定結果は、演算部106へ出力され、セレクタの制御がなされる。演算部106の構成は、既に説明した図2のものが用いられる。図2において、セレクタは、306と307の2個存在するので、前記べき数値判定部203の判定結果によって、この2つのセレクタ306、307が制御される。例えば判定結果が「Aの乗算」であると、セレクタ306が乗数Aをそのまま出力し、セレクタ307が乗算演算部304の乗算結果を出力するよう制御される。同様に、判定結果が「A-1の乗算」であれば、セレクタ306が逆数取得部305の出力を選択し、セレクタ307が乗算演算部304の乗算結果を選択するよう制御され、判定結果が、「乗算なし」であれば、セレクタ306はいずれも選択せず、セレクタ307が2乗算演算部303の演算結果を選択するよう制御される。
上記図1、図2で示したべき乗剰余演算装置の演算のフローチャートを図5に示す。次に、具体的なべき乗数を例にとり、べき乗演算の動作を上記フローチャートに従って説明する。例えば、べき乗数kとして、k=4204957639=(11111010101000101000111111000111)2 の32ビット(n=32)の値が与えられ、Akのべき算演算を行うとする。先ず、32ビットのk値が、n+2bitレジスタ201に格納される。この場合、上位2ビットはいずれも“0”が格納される。その結果、レジスタ201には、図7に示す演算の回数と演算値の推移とを表わした表の中の回数1の欄に記述したn+2bitのビットパターンが格納される。この状態で、初期値としてx=1、i=n+2がセットされる(S501)。x、iはそれぞれ変数であり、図示しない変数レジスタに格納される。続いて、iの値が負になっていないことを条件に(S502)、kの上位4ビット(ki〜k[i−3])のビットパターンが、判定部203に読み取られる(S503)。図7の回数1欄から理解されるように、上位4ビットは「0011」なので、このビットパターンを用いて、図3のテーブルを参照し、「Aの乗算」という判定結果を得る。同時に変換値として「1001」を得る(S504)。上記判定結果により、既述したようにセレクタ306、307が選択制御され、x=x2 の演算(S505)とx=x×Aの演算とが行われる(S506、507)。今の場合、x=1(初期値)なので、上記演算結果としてAを得、これを中間値レジスタ301に格納する。
次に、変換値としてテーブルから得た「1001」を、判定部203から変換部204に送出する。変換部204は、n+2bitレジスタ201の上位4bitを判定部203から得た値で更新する(S509、S510)。この後、1bit左シフタ205が作動し、n+2bitレジスタ201の最上位ビット(MSB)を除く全ビットを1ビット左シフトさせる(S512)。そして、i−1を新たにiとして(S513)、再びS503の処理を行う。この時点でn+2bitレジスタ201の格納値は、図7中の回数2欄に示すビットパターンとなっている。上位4ビットのパターンは「1011」となっているので、判定部203はテーブルを参照し、「乗算なし」の判定結果と、「変換なし」の変換値を得る。「乗算なし」であるので、演算としてはx=x2 の処理だけ行う(S505)。回数1の処理が終わった時点で、x=Aになっているので、回数2ではx=A2となり、その値を中間値レジスタに格納する。また、変換値は「変換なし」なので、変換部204はn+2bitレジスタ201の上位4ビットの更新を行わない。この後、1bit左シフタ205が、n+2bitレジスタのMSBを除く各ビットを1ビット左シフトする(S512)。このときのn+2bitレジスタ201の格納値は、図7中の回数3の欄に示すビット列となっている。続いて、i−1を新たにiに設定し、再び上述したS503〜S512の処理を繰り返す。繰り返しの度に、n+2bitレジスタ201に格納されるビット列、及び演算結果であるxの値は、図7に示す通り変化する。そして、iが繰り返し回数(n+2)分デクリメントされ、負の値になると(S502)、処理は終了し、そのときのxの値が演算結果として出力される(S514)。図7の回数33の右端のx値が、その演算結果である。
なお、上記実施例では、べき数値判定部203は、図3に示すようなテーブルを持っており、べき乗数の上位4ビットのビットパターンを用いてテーブルを検索し、変換すべきビットパターンの指定、演算部への演算式の指定を行なっているが、テーブル以外に例えば、所定の論理式を格納した演算回路で構成することも出来る。そのような演算回路が格納すべき論理式の一例を以下に示す。
【0053】
べき数値保持レジスタ201から読み出したビット列データを上位ビットから、B0123 とし、変換後のビットのデータを D0123 とした場合、
【0054】
【数7】
Figure 0004541485
【0055】
で与えられる。
【0056】
また、Aの乗算を行なうか否かの指定信号をSA、A-1の乗算を行なうか否かの指定信号をSA-1とした場合、演算式指定は、
【0057】
【数8】
Figure 0004541485
【0058】
で与えられる。
【0059】
次に、各値の保持領域としてレジスタを用いて構成する装置について説明したが、一般に値を保持する領域として用いられるメモリ等を用いる構成でも同様に実施可能である。
【0060】
更に、図5のフローチャートの説明及び表2を参照してのべき乗剰余演算の動作からも理解されるように、本発明は演算方法としても特徴を有する。従って、また、その演算方法を実行するプログラムを記録媒体に格納し、それを汎用コンピュータにインストールすることにより、任意のコンピュータで上記べき乗剰余演算を実行することが出来る。
【0061】
更に上記実施例は、べき乗剰余演算装置、演算方法について説明しているが、同様な技術がべき乗演算装置に対しても適用できる。
【0062】
図6は、楕円べき倍演算装置に本発明を適用した場合の演算処理を示すフローチャートである。べき倍係数はレジスタkにあらかじめ格納されており、160bitの値とする。iビットの数値は、k[i−1]と記す。べき倍する座標は、あらかじめレジスタBx、Byに格納されており、affine座標とする。図中、S550は初期化処理で、n+2bitレジスタの上位2ビットを0とし(k[161]、k[160]=0)、iをn+2にセットし、レジスタAzを0にリセットする。S551は楕円2倍算処理で、レジスタAx、Ay、Azの値(jacobian座標値)を更新する。この処理は前記実施の形態の2乗処理と対応する処理である。
S552はn+2bitレジスタから上位4ビットのビット列を読み取り、図3で示したのと同様なテーブルを検索して演算方法の判定を行う処理である。S553〜S558は、上位4ビットのビット列が「0011」「01xx」「110x」であった場合において行う演算並びにべき乗係数の更新処理を示す。S553、S555、S557の楕円加算は、レジスタAx、Ay、Azのjacobian座標値にレジスタBx、Byのaffine座標値を加算し、結果をレジスタAx、Ay、Azに格納するものとする。ただしAzが0の時には、レジスタBx、Byの値及び値1をそれぞれレジスタAx、Ay、Azに代入するものとする。S553、S555、S557のJacobian座標点Ax、Ay、Azとaffine座標点Bx、Byの楕円加算の演算方法を以下に示しておく。
s=Bx*Az2−Ax …(1)
u=By*Az3−Ay …(2)
上式で得られるおよびAxを用いて、
a=Ax*s2 …(3)
を求め、続いて、上記(1)(2)式を用いて、
b=s3+2*a …(4)
を得る。最後に上記(1)〜(3)式で得た結果を用いて、新たにAx、Ay、Azを得る。
Ax=u2−b …(5)
Ay=u*(a−Ax)−Ay*s3 …(6)
Az=Az*s …(7)
同様に、S551の楕円2倍算の演算式を以下に示す。
a=2*Ay2 …(8)
b=2*Ax*a …(9)
c=Az4*c1+3*Ax2 …(10)
上記(8)〜(10)式で求めたを用いて以下に示す楕円2倍算のjacobian座標値Ax'、Ay、'Az'を得る。
Ax'=c2−2*b …(11)
Ay'=c*(b−Ax' )−2*a2 …(12)
Az'=2*Ay*Az …(13)
(10)式のc1は楕円曲線方程式(Y2=X3+c1X+c0)の1次項の係数である。
【0063】
なお、(3)(4)式のa、bと(8)(9)式のa、bとはたまたま標記が同一であるに過ぎず、両者の間には何らの依存関係もない。
上記S552〜S558までの処理は先に述べた実施の形態のデーブル参照処理及びx×A倍処理に相当する。
【0064】
S559のレジスタkの算術右シフト算とは、162bitレジスタkの最上位ビット(k[161])を符号ビットとみなし、符号は保持したまま下位161bit(k[160]〜k[0])を右にシフトすることである。この処理でオーバーフローしたビット値は無視する。S560はiをデクリメントする処理で、iが0になるまでS551〜S560の処理を繰り返し、0になると処理を終了する。
【0065】
この楕円べき倍演算装置は、第1の実施例のべき乗剰余演算装置と同様、演算方法としても特徴を有する。従って、その演算方法を実行するプログラム(図6に示すフローチャートに相当)を随時インストールすることにより、任意の汎用コンピュータにて本発明を実施することが出来る。
【0066】
【発明の効果】
本発明は、以上説明したように構成されるものであるから、べき数の値を保持するための領域を、そのビット幅+2ビット分に抑えることができる上、符号つき2進表現への変換結果によって演算を制御するため、べき乗演算時の乗算回数、または楕円べき倍算演算時の楕円加算回数が、本来の符号つきバイナリ法での演算回数平均値(べき数値のビット幅の1/3)に近い回数まで削減できるといった効果がある。
【0067】
加えて、本発明によれば、符号つき2進表現への変換結果をべき値保持領域に上書きし、次の判定のために用いているため、その演算回数がバイナリ法を適用した時の演算回数を超えることはない。従って、演算回数を従来の手法の符号つきバイナリ法で行なう演算回数に近い値への削減を、本発明では、保持領域の大幅な増加なしに行なったことでその効果は大きい。
【図面の簡単な説明】
【図1】本発明の一実施例としてのべき数値処理部の詳細構成図である。
【図2】本発明における演算部の詳細構成図である。
【図3】本発明におけるべき数値判定部で判定される分類と、べき数値変換部の変換処理、演算部の数値選択処理の対応表である。
【図4】べき乗剰余演算装置全体構成図である。
【図5】本発明のべき乗剰余演算の処理を示すフローチャートである。
【図6】本発明の他の実施形態として楕円べき倍演算処理を示すフローチャートである。
【図7】本発明の演算方法を、具体的な数値を用いて示したもので、演算回数によって演算値がどのように推移して行くかを表にして表わしている。
【図8】バイナリ法の演算式を示す表である。
【図9】従来の一手法であるバイナリ法によるべき乗剰余演算処理フローチャートである。
【図10】従来の一手法であるバイナリ法におけるべき数値処理部の詳細構成図である。
【図11】従来の一手法であるバイナリ法における演算部の詳細構成図である。
【図12】従来の一手法である符号つきバイナリ法によるべき乗剰余演算処理を示すフローチャートである。
【図13】従来の一手法である符号つきバイナリ法におけるべき数値処理部の詳細構成図である。
【図14】従来の一手法である符号つきバイナリ法における演算部の詳細構成図である。
【図15】従来の一手法である特開平7−49769号公報に示された方法によるべき乗剰余演算処理を示すフローチャートである。
【図16】従来の一手法である特開平7−49769号公報に示された方法におけるべき数値処理部の詳細構成図である。
【図17】従来の一手法である特開平7−49769号公報に示された方法におけるべき数値判定部の分類と、演算部の数値選択処理の対応表である。
【符号の説明】
101 べき数値処理部
102 入力されるべき数値k
103 べき数値処理部から演算部へ出力される制御信号
104 入力される被べき乗値A
105 出力されるAのk乗剰余値
106 演算部
201 べき数値保持レジスタ
202 べき数値保持レジスタへの初期値入力
203 べき数値判定部
204 べき数値変換部
205 べき数値シフト部
206 分類タイプを演算部に伝える制御信号
301 中間値レジスタ
302 中間値レジスタへの初期値入力
303 2乗演算部
304 乗算演算部
305 逆数取得部
306 乗算演算部入力値選択セレクタ
307 中間値保持値選択セレクタ
308 最終演算結果の出力
401 べき数値上位4ビットのビットパターン
402 べき数値変換部で処理される変換値
403 演算部処理
601 べき数値保持レジスタ
602 べき数値保持レジスタへの初期値入力
605 べき数値シフト部
606 演算部に伝える制御信号
701 中間値レジスタ
702 中間値レジスタへの初期値入力
703 2乗演算部
704 乗算演算部
707 中間値保持値選択セレクタ
708 最終演算結果の出力
901 べき数値保持レジスタ
902 べき数値保持レジスタへの初期値入力
905 べき数値シフト部
906 演算部に伝える制御信号
907 2進表現を符号つき2進表現に変換する変換部
1001 中間値レジスタ
1002 中間値レジスタへの初期値入力
1003 2乗演算部
1004 乗算演算部
1005 逆数取得部
1006 乗算演算部入力値選択セレクタ
1007 中間値保持値選択セレクタ
1008 最終演算結果の出力
1201 べき数値保持レジスタ
1202 べき数値保持レジスタへの初期値入力
1203 べき数値判定部
1205 べき数値シフト部
1206 分類タイプを演算部に伝える制御信号
1301 べき数値上位3ビットのビットパターン
1303 最初に行なわれる演算部処理
1304 2回目に行なわれる演算部処理

Claims (20)

  1. kをnビットのべき乗数、Aを被べき乗数とする、Ak のべき乗演算を行う前にべき数値処理部で前記kを前処理し、処理後のべき乗数をAと共に演算部に加えてAk演算を行うべき乗演算装置における前記べき数値処理部であって、
    正負を表す符号ビットと前記整数kとを含むビット列を格納するビット列格納手段と、
    ビット列格納手段に格納されているビット列から符号ビットを含むn未満の所定ビット数の演算用ビット列データを読み出し、読み出した演算用ビット列データを基にして被べき乗数Aの演算方法を指定し、読み出した演算用ビット列データが特定のものである場合に、読み出した演算用ビット列データを基にして変換用ビット列データを生成し、指定した演算方法で演算するよう演算部へ指示する判定手段と、
    変換用ビット列データが生成された場合に、当該変換用ビット列データにより前記ビット列格納手段内の対応するビット列を更新する更新手段と、
    ビット列格納手段から次に読み出すビット位置を、符号ビットを除き上位から下位ビット側にシフトする読み出し位置シフト手段と、
    上記各手段を(n+1)回繰り返し動作させる繰り返し制御手段と、
    を備え、
    前記読み出し位置シフト手段は、符号ビットを除き、ビット列格納手段中でビット列を桁上げする桁上げ手段であり、
    前記判定手段は、前記演算用ビット列データとして、符号ビットと前記符号ビットを除いた上位3ビットのデータを前記ビット列格納手段から読み出す
    ことを特徴とするべき乗演算装置のべき数値処理部。
  2. 前記べき乗演算装置は、A k のべき乗演算を用いて、暗号通信、署名通信又はメッセージ認証を行う
    ことを特徴とする請求項1に記載のべき乗演算装置のべき数値処理部。
  3. 前記判定手段は、読み出した演算用ビット列データの前記符号ビットが正を示し前記上位3ビットが「011」である場合、又は読み出した演算用ビット列データの前記符号ビットが負を示し前記上位3ビットのうち上位2ビットが「10」である場合に、それぞれ、変換用ビット列データとして、負を示す符号ビットと「001」又は正を示す符号ビットと「10」を生成し、
    前記更新手段は、「1001」又は「010」により、前記ビット列格納手段内の対応するビット列を更新する
    ことを特徴とする請求項2に記載のべき乗演算装置のべき数値処理部。
  4. 前記判定手段は、読み出した演算用ビット列データの前記符号ビットが正を示し前記上位3ビットが「011」である場合、又は読み出した演算用ビット列データの前記符号ビットが正を示し前記上位3ビットのうち上位1ビットが「1」である場合に、それぞれ、演算方法として、被べき乗数Aの乗算を指定し、読み出した演算用ビット列データの前記符号ビットが負を示し前記上位3ビットのうち上位2ビットが「10」である場合、演算方法として、被べき乗算Aの逆数の乗算を指定し、読み出した演算用ビット列データがその他の場合、乗算しない指示を行なう
    ことを特徴とする請求項3に記載のべき乗演算装置のべき数値処理部。
  5. 前記判定手段は、
    第1欄に第1群のビットパターンが、第2欄に第2群のビットパターンが対応記述されたテーブルを含み、
    読み出し手段が読み出した演算用ビット列データのビットパターンの少なくとも一部を共通にするビットパターンを第1群のビットパターンから検索し、検索したビットパターンに対応して記述されたビットパターンを第2群のビットパターンから読み出し、これを変換用ビット列データとして生成すること、
    を特徴とする請求項4に記載のべき乗演算装置のべき数値処理部。
  6. 前記テーブルは更に第3欄を備え、第3欄に演算方法が記述されており、
    前記判定手段は、テーブルの第3欄に記述された演算方法を指定する
    ことを特徴とする請求項5に記載のべき乗演算装置のべき数値処理部。
  7. 前記ビット列格納手段が、最上位ビットを符号ビットとするn+2ビットのレジスタであり、読み出し位置シフト手段が、レジスタに格納されたビット列を、最上位ビットを除き1ビットづつ左シフトするシフタであること、
    を特徴とする請求項4に記載のべき乗演算装置のべき数値処理部。
  8. 前記符号ビットは1ビットの値「0」により正を、1ビットの値「1」により負を示し、
    前記判定手段は、所定の論理式を格納した演算手段であり、ビット列格納手段から読み出した演算用ビット列データの各ビットの値を前記論理式に代入して変換用ビット列データを生成し、
    前記判定手段の格納する論理式は、ビット列格納手段から読み出した演算用ビット列データの前記符号ビットをB 0 とし、前記上位3ビットを上位ビットから、B 1 2 3 とし、生成すべき変換用ビット列データの符号ビットをD 0 とし、前記上位3ビットを上位ビットから、D 1 2 3 とした場合、以下の式で与えられること、
    を特徴とする請求項2に記載のべき乗演算装置のべき数値処理部。
    Figure 0004541485
  9. 前記判定手段は、所定の論理式を格納しており、ビット列格納手段から読み出した演算用ビット列データの各ビットの値を当該論理式に代入して演算方法を求めること、
    を特徴とする請求項8に記載のべき乗演算装置のべき数値処理部。
  10. 前記判定手段は、ビット列格納手段から読み出した演算用ビット列データの前記符号ビットをB 0 とし、前記上位3ビットを上位ビットから、123とし、Aの乗算を行なうか否かの指定信号をSA、A-1の乗算を行なうか否かの指定信号をSA-1とした場合、指定信号は以下の式で与えられること、
    を特徴とする請求項8に記載のべき乗演算装置のべき数値処理部。
    Figure 0004541485
  11. nビットの定数pによる剰余体上の楕円曲線をE(Fp)、p以下の正の整数をk、楕円曲線E(Fp)上の点をAとした場合、べき倍点kAの演算を行なう前に前処理部で前記kを前処理し、処理後のべき値をAとともに演算部に加えてkA演算を行なう楕円べき倍演算装置における前記前処理部であって、
    正負を表す符号ビットと前記整数kとを含むビット列を格納するビット列格納手段と、
    ビット列格納手段に格納されているビット列から符号ビットを含むn未満の所定ビット数の演算用ビット列データを読み出す読み出し、読み出した演算用ビット列データを基にして楕円曲線上の点Aの演算方法を指定し、読み出した演算用ビット列データを基にして変換用ビット列データを生成し、指定した演算方法で演算するよう演算部へ指示する判定手段と、
    変換用ビット列データが生成された場合に、当該変換用ビット列データにより前記ビット列格納手段内の対応するビット列を更新する更新手段と、
    ビット列格納手段から次に読み出すビット位置を、符号ビットを除いて下位ビット側にシフトする読み出し位置シフト手段と、
    上記各手段を(n+1)回繰り返し動作させる繰り返し制御手段とを備え、
    前記読み出し位置シフト手段は、符号ビットを除き、ビット列格納手段中でビット列を桁上げする桁上げ手段であり、
    前記判定手段は、前記演算用ビット列データとして、符号ビットと前記符号ビットを除いた上位3ビットのデータを前記ビット列格納手段から読み出す
    ことを特徴とする楕円べき倍点演算装置の前処理部。
  12. 前記べき乗演算装置は、べき倍点kAの演算を用いて、暗号通信、署名通信又はメッセージ認証を行う
    ことを特徴とする請求項11に記載の楕円べき倍点演算装置の前処理部。
  13. 前記判定手段は、読み出した演算用ビット列データの前記符号ビットが正を示し前記上位3ビットが「011」である場合、又は読み出した演算用ビット列データの前記符号ビットが負を示し前記上位3ビットのうち上位2ビットが「10」である場合に、それぞれ、変換用ビット列データとして、負を示す符号ビットと「001」又は正を示す符号ビットと「10」を生成し、
    前記更新手段は、「1001」又は「010」により、前記ビット列格納手段内の対応するビット列を更新する
    を特徴とする請求項12に記載の楕円べき倍点演算装置の前処理部。
  14. 前記判定手段は、読み出した演算用ビット列データの前記符号ビットが正を示し前記上位3ビットが「011」である場合、又は読み出した演算用ビット列データ前記符号ビットが正を示し前記上位3ビットのうち上位1ビットが「1」である場合に、それぞれ、演算方法として、楕円加算を指定し、読み出した演算用ビット列データの前記符号ビットが負を示し前記上位3ビットのうち上位2ビットが「10」である場合、演算方法として、楕円減算を指定し、読み出した演算用ビット列データがその他の場合、加算も減算もしない指示を行なう
    を特徴とする請求項13に記載の楕円べき倍点演算装置の前処理部。
  15. 前記符号ビットは1ビットの値「0」により正を、1ビットの値「1」により負を示し、
    前記判定手段は、所定の論理式を格納した演算手段であり、ビット列格納手段から読み出した演算用ビット列データの各ビットの値を前記論理式に代入して変換用ビット列を生成し、
    前記判定手段の格納する論理式は、ビット列格納手段から読み出した演算用ビット列データの前記符号ビットをB 0 とし、前記上位3ビットを上位ビットから、B 1 2 3 とし、生成すべき変換用ビット列データの符号ビットをD 0 とし、上位3ビットをD 1 2 D3 3 とした場合、以下の式で与えられること、
    を特徴とする請求項14に記載の楕円べき倍点演算装置の前処理部。
    Figure 0004541485
  16. 前記判定手段は、ビット列格納手段から読み出した演算用ビット列データの前記符号ビットをB 0 とし、前記上位3ビットを上位ビットから、B123とし、楕円加算を行なうか否かの指定信号をSA、楕円減算を行なうか否かの指定信号をSA-1とした場合、指定信号は以下の式で与えられること、
    を特徴とする請求項15に記載の楕円べき倍点演算装置の前処理部。
    Figure 0004541485
  17. kをnビットのべき乗数、Aを被べき乗数とする、A k のべき乗演算を行う前にべき数値処理部で前記kを前処理し、処理後のべき乗数をAと共に演算部に加えてA k 演算を行うべき乗演算装置における前記べき数値処理部において用いられるべき数値処理方法であって、
    正負を表す符号ビットと前記整数kとを含むビット列を格納するビット列格納手段に格納されているビット列から符号ビットを含むn未満の所定ビット数の演算用ビット列データを読み出し、読み出した演算用ビット列データを基にして被べき乗数Aの演算方法を指定し、読み出した演算用ビット列データが特定のものである場合に、読み出した演算用ビット列データを基にして変換用ビット列データを生成し、指定した演算方法で演算するよう演算部へ指示する判定ステップと、
    変換用ビット列データが生成された場合に、当該変換用ビット列データにより前記ビット列格納手段内の対応するビット列を更新する更新ステップと、
    ビット列格納手段から次に読み出すビット位置を、符号ビットを除き上位から下位ビット側にシフトする読み出し位置シフトステップと、
    上記各ステップを(n+1)回繰り返し動作させる繰り返し制御ステップと、
    を含み、
    前記読み出し位置シフトステップは、符号ビットを除き、ビット列格納手段中でビット列を桁上げし、
    前記判定ステップは、前記演算用ビット列データとして、符号ビットと前記符号ビットを除いた上位3ビットのデータを前記ビット列格納手段から読み出す
    ことを特徴とするべき乗演算装置のべき数値処理方法。
  18. kをnビットのべき乗数、Aを被べき乗数とする、A k のべき乗演算を行う前にべき数値処理部で前記kを前処理し、処理後のべき乗数をAと共に演算部に加えてA k 演算を行うべき乗演算装置における前記べき数値処理部において用いられるべき数値処理プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
    前記べき数値処理プログラムは、コンピュータに、
    正負を表す符号ビットと前記整数kとを含むビット列を格納するビット列格納手段に格納されているビット列から符号ビットを含むn未満の所定ビット数の演算用ビット列データを読み出し、読み出した演算用ビット列データを基にして被べき乗数Aの演算方法を指定し、読み出した演算用ビット列データが特定のものである場合に、読み出した演算用ビット列データを基にして変換用ビット列データを生成し、指定した演算方法で演算するよう演算部へ指示する判定ステップと、
    変換用ビット列データが生成された場合に、当該変換用ビット列データにより前記ビット列格納手段内の対応するビット列を更新する更新ステップと、
    ビット列格納手段から次に読み出すビット位置を、符号ビットを除き上位から下位ビット側にシフトする読み出し位置シフトステップと、
    上記各ステップを(n+1)回繰り返し動作させる繰り返し制御ステップと、
    を実行させ、
    前記読み出し位置シフトステップは、符号ビットを除き、ビット列格納手段中でビット列を桁上げし、
    前記判定ステップは、前記演算用ビット列データとして、符号ビットと前記符号ビットを除いた上位3ビットのデータを前記ビット列格納手段から読み出す
    ことを特徴とする記録媒体。
  19. nビットの定数pによる剰余体上の楕円曲線をE(Fp)、p以下の正の整数をk、楕円曲線E(Fp)上の点をAとした場合、べき倍点kAの演算を行なう前に前処理部で前記kを前処理し、処理後のべき値をAとともに演算部に加えてkA演算を行なう楕円べき倍演算装置における前記前処理部で用いられる前処理方法であって、
    正負を表す符号ビットと前記整数kとを含むビット列を格納するビット列格納手段に格納されているビット列から符号ビットを含むn未満の所定ビット数の演算用ビット列データを読み出す読み出し、読み出した演算用ビット列データを基にして楕円曲線上の点Aの演算方法を指定し、読み出した演算用ビット列データを基にして変換用ビット列データを生成し、指定した演算方法で演算するよう演算部へ指示する判定ステップと、
    変換用ビット列データが生成された場合に、当該変換用ビット列データにより前記ビット列格納手段内の対応するビット列を更新する更新ステップと、
    ビット列格納手段から次に読み出すビット位置を、符号ビットを除いて下位ビット側にシフトする読み出し位置シフトステップと、
    上記各ステップを(n+1)回繰り返し動作させる繰り返し制御ステップとを含み、
    前記読み出し位置シフトステップは、符号ビットを除き、ビット列格納手段中でビット列を桁上げし、
    前記判定ステップは、前記演算用ビット列データとして、符号ビットと前記符号ビットを除いた上位3ビットのデータを前記ビット列格納手段から読み出す
    ことを特徴とする楕円べき倍点演算装置の前処理方法。
  20. nビットの定数pによる剰余体上の楕円曲線をE(Fp)、p以下の正の整数をk、楕円曲線E(Fp)上の点をAとした場合、べき倍点kAの演算を行なう前に前処理部で前記kを前処理し、処理後のべき値をAとともに演算部に加えてkA演算を行なう楕円べき倍演算装置における前記前処理部で用いられる前処理プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
    前記前処理プログラムは、コンピュータに、
    正負を表す符号ビットと前記整数kとを含むビット列を格納するビット列格納手段に格納されているビット列から符号ビットを含むn未満の所定ビット数の演算用ビット列データを読み出す読み出し、読み出した演算用ビット列データを基にして楕円曲線上の点Aの演算方法を指定し、読み出した演算用ビット列データを基にして変換用ビット列データを生成し、指定した演算方法で演算するよう演算部へ指示する判定ステップと、
    変換用ビット列データが生成された場合に、当該変換用ビット列データにより前記ビット列格納手段内の対応するビット列を更新する更新ステップと、
    ビット列格納手段から次に読み出すビット位置を、符号ビットを除いて下位ビット側にシフトする読み出し位置シフトステップと、
    上記各ステップを(n+1)回繰り返し動作させる繰り返し制御ステップとを実行させ、
    前記読み出し位置シフトステップは、符号ビットを除き、ビット列格納手段中でビット列を桁上げし、
    前記判定ステップは、前記演算用ビット列データとして、符号ビットと前記符号ビットを除いた上位3ビットのデータを前記ビット列格納手段から読み出す
    ことを特徴とする記録媒体。
JP2000064463A 1999-03-15 2000-03-09 べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 Expired - Fee Related JP4541485B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000064463A JP4541485B2 (ja) 1999-03-15 2000-03-09 べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP6910499 1999-03-15
JP11-69104 1999-03-15
JP2000064463A JP4541485B2 (ja) 1999-03-15 2000-03-09 べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体

Publications (3)

Publication Number Publication Date
JP2000330470A JP2000330470A (ja) 2000-11-30
JP2000330470A5 JP2000330470A5 (ja) 2007-04-19
JP4541485B2 true JP4541485B2 (ja) 2010-09-08

Family

ID=26410283

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000064463A Expired - Fee Related JP4541485B2 (ja) 1999-03-15 2000-03-09 べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体

Country Status (1)

Country Link
JP (1) JP4541485B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2867289A1 (fr) * 2004-03-02 2005-09-09 France Telecom Procede et dispositif pour accomplir une operation cryptographique
JP2009008993A (ja) * 2007-06-29 2009-01-15 Nec Electronics Corp べき乗剰余演算器及びその制御方法
JP6973677B1 (ja) * 2021-03-22 2021-12-01 富士電機株式会社 逆数算出方法、装置、およびプログラム

Also Published As

Publication number Publication date
JP2000330470A (ja) 2000-11-30

Similar Documents

Publication Publication Date Title
EP1710951A2 (en) Elliptic curve calculation apparatus capable of calculating multiples at high speed
US6567832B1 (en) Device, method, and storage medium for exponentiation and elliptic curve exponentiation
EP1306749B1 (en) Elliptic curve converting device
JP2009540394A (ja) フォールディングを用いるモジュール削減
US7024560B2 (en) Power-residue calculating unit using Montgomery algorithm
US6480606B1 (en) Elliptic curve encryption method and system
US6763366B2 (en) Method for calculating arithmetic inverse over finite fields for use in cryptography
US7480691B2 (en) Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
JP4541485B2 (ja) べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体
US6662201B1 (en) Modular arithmetic apparatus and method having high-speed base conversion function
US20040054703A1 (en) Method and device for generating a pseudo-random sequence using a discrete logarithm
CN111897578A (zh) 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置
JP4398904B2 (ja) 乱数系列生成装置、乱数系列生成方法、演算処理装置、演算処理方法及びプログラム
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
JP2001285277A (ja) 暗号生成装置、暗号生成プログラムを使用する電子機器、記憶媒体、暗号文復号装置
JP2001066987A (ja) 代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体
JP2725610B2 (ja) 秘密鍵暗号方法及び装置
JP2004038020A (ja) 暗号学的擬似乱数発生装置及びプログラム
US6138134A (en) Computational method and apparatus for finite field multiplication
JP4105803B2 (ja) 楕円曲線演算装置
JPH1152850A (ja) 暗号変換方法および装置
JP4225764B2 (ja) 楕円曲線変換装置、楕円曲線変換方法、楕円曲線利用装置及び楕円曲線生成装置
KR100564764B1 (ko) 유한체 다항식 곱셈 장치 및 그 방법
JP4472808B2 (ja) 積和演算装置及びこれを用いた暗号・復号装置
KR20000009759A (ko) 모듈러 곱셈기

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070302

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070302

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100624

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees