JP2000330470A - べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 - Google Patents
べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体Info
- Publication number
- JP2000330470A JP2000330470A JP2000064463A JP2000064463A JP2000330470A JP 2000330470 A JP2000330470 A JP 2000330470A JP 2000064463 A JP2000064463 A JP 2000064463A JP 2000064463 A JP2000064463 A JP 2000064463A JP 2000330470 A JP2000330470 A JP 2000330470A
- Authority
- JP
- Japan
- Prior art keywords
- value
- bit
- holding area
- pattern
- power
- 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
楕円べき倍演算において、べき数の値の保持に用いる領
域を大きく増加させることなしに、基本演算回数を削減
することを目的とする。 【解決手段】 べき数の値の上位数ビットのみに着目
し、符号つき2進数への変換などの判断を行ない、符号
付き2進数を2ビット分のみ保持することによって保持
領域を削減し、符号つきバイナリ法に近い演算回数で演
算が行なわれるようにする。
Description
用されるべき乗演算、楕円べき倍演算技術に関する。
クを通じて、特定の通信端末と安全に通信する手法とし
て暗号通信が用いられる。暗号通信の一つに公開鍵暗号
法と称されるものがある。例えばRSA暗号、エルガマ
ル暗号等がこれに含まれる。これらの暗号法は、メッセ
ージの暗号化、復号化に、メッセージを暗号化鍵でべき
乗したり、暗号文を復号化鍵でべき乗したりするという
ように、べき乗演算を行う。
て、楕円曲線を用いた暗号法がある。他の暗号法が有限
体を定義域としているのに対し、楕円曲線を定義域とす
るものであり、その定義域内でのべき倍演算によって暗
号化、復号化が実現される。
た公開鍵暗号法だけではなく、署名通信やメッセージ認
証等においても用いられている。
方法として、D.E.Kunuthが、The Art
of Computer Programming,
Vol.2,Seminumerical algor
ithmsに記載したバイナリ法が知られている。ま
た、バイナリ法の改良として、F.MorainとJ.
Olivosが、Teoretical Inform
atics and Applications Vo
l.24,No.6に記載した符号つきバイナリ法、前
記D.E.Kunuthの著書の中のスモールウィンド
ウ法などが知られている。
として、特開平7−49769号公報に記載された技術
が知られている。
算を行なう方法を例にとり説明する。 <バイナリ法>バイナリ法は、べき値kを2進表現ki
(n>i≧0)(kiは0または1)とした時に、n−
1回の2乗剰余演算と、ki=1となる回数の乗算剰余
演算とによって、べき乗剰余演算結果を得る方法であ
る。
11として、べき乗値A1011を計算する場合であると、
バイナリ法は、図8に示す演算式により求める。
後は最上位桁を第1桁とし、その桁の値が1であれば、
xの値を2乗してxとおく演算と、その新たなxをA倍
する演算とを行う。他方、その桁の値が0であれば、x
の値を2乗して新たなxとおく演算のみを行う。この演
算を順次下位桁に対して行い、最下位桁まで終了する
と、そのとき得られたxの値がべき乗値(A1011)とな
る。
通りであり、i=n−1から降順にkiの値を調べ(S
71、S76)、その結果、1である時だけ乗算剰余演
算を行なう(S74、S75)。2乗剰余演算は、ki
の値が1であるか0であるかに関係なく行なう(S7
3)。この方法は、べき値kがランダムに選ばれる場
合、平均n/2回の乗算剰余演算を必要とする。べき値
を通常の2進表現で表せば良いため、その保持領域とし
てはnビットのみあれば良い。
置の全体構成をブロック図で示したものが図4である。
値処理部である。この処理部は、べき数値を処理しなが
ら実際の演算の制御を行なう。102は、本装置に入力
されるnビットのべき数値kを表す。べき数値処理部1
01では、初期値としてkを取り、その後べき数値の更
新処理を行なってゆく。103は、べき数値処理部から
演算部へ出力される制御信号である。この信号によっ
て、実際の演算の制御が行なわれる。104は、本装置
に入力される被べき乗数Aである。105は、装置から
の出力であり、Aのk乗剰余値が出力される。106
は、実際の演算を行なう演算部である。ここでは103
の制御信号に従って、104で与えられた数値Aを用
い、2乗算剰余、乗算剰余を行なう。なお剰余を取る素
数pは、あらかじめ装置内に保持してあるものとする。
図10はべき値処理部101のブロック内構成を詳細に
示した図である。
スタで、べき数値を保持するためのnビット領域を有す
る。602は、べき数値保持レジスタへ初期値を入力す
る入力線で、本装置への入力kがそのまま入力される。
605はべき数値シフタ部で、べき数値レジスタのビッ
トを、1ビット左シフトする。なお、最上位ビットは、
シフトアウトした結果破棄される。606は、べき値保
持レジスタの最上位ビットを出力する出力線で、演算部
103に伝える制御信号となる。この制御信号に従っ
て、演算部106の処理が定まる。
す図である。701は、演算中の中間値を保持する中間
値レジスタである。702は、中間値レジスタへ入力さ
れる初期値で、定数1が入力される。703は、2乗演
算部で、中間値レジスタの値の2乗剰余演算値を求め出
力する。704は、乗算演算部で、2乗演算部の出力
と、被べき乗数Aの乗算剰余演算値を出力する。707
は、中間値として保持する値を選択するセレクタで、べ
き数値処理部101で出力された信号に従って、0の時
2乗演算部からの出力、1の時乗算演算部からの出力を
選択する。708は、最終演算結果の出力で、べき数値
として入力された値kの全ビットを処理した後、値が出
力される。この値はAのk乗剰余値となっている。
方法として、符号つきバイナリ法の概要を説明する。符
号つきバイナリ法は、べき値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倍する計算
量が少なくなる。
ャートを図12に示す。図12中、S101〜S106
までのステップが、2進表現kiを符号付き2進表現に
変換する処理であり、S107〜S114までのステッ
プが、符号付き2進表現k’iにバイナリ法を適用する
処理である。バイナリ法自体の処理は、基本的に先述し
たバイナリ法と同じである。
と、次の通りである。まず、べき値の符号つき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である時に逆数の乗算剰余演算を行なう(S11
2)。2乗剰余演算は、バイナリ法と同様k’iの値に
関係なく行なう。この方法は、べき値kがランダムに選
ばれる場合、平均n/3回の乗算剰余演算を必要とす
る。べき値は、符号つき2進表現で表すため、1桁に対
して2ビット(0、1、−1の3値を表現する必要があ
るため)必要とし、全体として2(n+1)ビットの保
持領域を必要とする。
き乗剰余演算装置のべき数値処理部である。901は、
べき値保持レジスタで、べき数値を符号つき2進表現で
保持するための2(n+1)ビット領域を有する。90
2は、べき数値保持レジスタへの初期値を入力する入力
線で、nビットのべき乗数kを符号つき2進表現変換部
で変換した結果が入力される。907は、符号つき2進
表現変換部で、図12で示された処理フローに従い、n
桁の2進表現をn+1桁の符号つき2進表現に変換す
る。905は、べき数値シフタ部で、べき数値レジスタ
のビットを、2ビット左シフトする。符号つき2進表現
は、1桁を2ビットで表現するので、2ビットの左シフ
トとなる。なお、上位2ビットは、シフトアウトした結
果破棄される。906は、べき値保持レジスタの上位2
ビットで、演算部に伝える制御信号となる。この制御信
号に従って演算部の処理が定まる。
き乗剰余演算装置の演算部である。1001は、演算中
の中間値を保持する中間値レジスタである。1002
は、中間値レジスタへ入力される初期値で定数1が入力
される。1003は、2乗演算部で、中間値レジスタの
値の2乗剰余演算値を求め出力する。1004は、乗算
演算部で、2乗演算部の出力と、被べき乗数A、もしく
はその逆数の乗算剰余演算値を出力する。1005は、
逆数取得部で、被べき乗数Aの逆数を出力する。100
6は、乗算演算部への入力値を選択するセレクタで、べ
き数値処理部からの制御信号によって、被べき乗数A、
もしくはその逆数を選択する。1007は、中間値とし
て保持する値を選択するセレクタで、べき数値処理部で
出力された信号に従って、「00」のとき2乗演算部か
らの出力、それ以外のとき乗算演算部からの出力を選択
する。1008は、最終演算結果の出力で、べき数値と
して入力された値kの全ビットを処理した後、値が出力
される。この値はAのk乗剰余値となっている。
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
ビットのみあれば良い。
いたべき乗剰余演算装置のべき数値処理部である。12
01は、べき値保持レジスタで、べき数値を2進表現で
保持する。1202は、べき数値保持レジスタへの初期
値入力で、nビットのべき乗数kがそのまま入力され
る。1203は、べき数値判定部で、べき数値保持レジ
スタの上位3ビットのビットパターンを5種類のタイプ
に分類する。1205は、べき数値シフタ部で、べき数
値レジスタのビットを、2ビット左シフトする。この方
法では、1回の判定により演算部の動作2回分の制御信
号を生成するため、2ビットの左シフトとなる。なお、
上位2ビットはシフトアウトした結果破棄される。12
06は、べき数値判定部で分類されたタイプを、演算部
に伝える制御信号である。この制御信号に従って演算部
の処理が定まる。
剰余演算装置の演算部は、図2に示されている。図中、
301は、演算中の中間値を保持する中間値レジスタで
ある。302は、中間値レジスタへの初期値入力線で初
期値としては定数1が入力される。303は、2乗演算
部で、中間値レジスタの値の2乗剰余演算値を求め、出
力する。304は、乗算演算部で、2乗演算部の出力
と、被べき乗数A、もしくはその逆数の乗算剰余演算値
を求め、出力する。305は、逆数取得部で、被べき乗
数Aの逆数を出力する。306は、乗算演算部への入力
値を選択するセレクタで、べき数値処理部で判定された
分類に従って、本装置への入力A、もしくはその逆数を
選択する。307は、中間値として保持する値を選択す
るセレクタで、べき数値処理部で判定された分類に従っ
て、2乗演算部からの出力、もしくは乗算演算部からの
出力を選択する。308は、最終演算結果の出力で、べ
き数値として入力された値kの全ビットを処理した後、
値が出力される。この値はAのk乗剰余値となってい
る。
部で判定された分類と、その分類に従った演算部の数値
選択処理の対応を表にしたものである。1301は、べ
き数値判定部で分類される、べき数値の上位3ビットの
ビットパターンである。1303は、前記分類に従って
演算部で処理される選択処理を示したものである。「A
の乗算」となっている欄は、乗算演算部への入力として
本装置への入力値Aが選択され、中間値として保持する
値として乗算演算部の出力を選択するものである。「A
^−1の乗算」となっている欄は、乗算演算部への入力
として、本装置への入力値Aの逆数が選択され、中間値
として保持する値として、乗算演算部の出力を選択する
ものである。「乗算なし」となっている欄は、中間値と
して保持する値として、2乗算演算部の出力を選択する
ものである。1304は、前記分類に従って演算部で処
理される選択処理を示したものである。ただし、この選
択処理は、1303で行なわれた選択処理の次のループ
での演算部の処理で用いられるものである。すなわち、
べき数値判定部で判定された1回の分類に対して、演算
部での2回の処理の分の選択処理が決定される。
来技術のうち、バイナリ法によれば、各桁で2乗計算を
行うと共に、その桁の数値が1であれば、A倍する計算
も行わなければならず、平均して1桁で1.5回の計算
が必要になり、計算回数が多くなるという課題がある。
常のバイナリ法に比べて演算回数が削減できる反面、べ
き数の保持領域として少なくともバイナリ法の2倍の領
域を必要とするという課題がある。
が、符号つきバイナリ法よりさらに演算回数が削減でき
るが、保持領域がさらに必要となる。
符号つきバイナリ法ではべき数の保持領域を増やすこと
なく、演算回数の平均値を符号つきバイナリ法で使われ
る回数に近い回数に抑えることができるものの、反面、
この方法では、べき数の「0010」という特定のビッ
トパターンに弱いという課題がある。通常のバイナリ法
では、1の現われる桁の回数分の乗算剰余演算回数で済
むため、上記特定のパターン「0010」であれば、1
回の乗算剰余演算が行なわれるのみである。しかし、改
良型符号つきバイナリ法では、図17の表にこのビット
パターンをあてはめてみると、2回の乗算剰余演算が必
要になってくる。すなわち、最悪の場合、通常のバイナ
リ法の2倍の乗算回数が必要になってしまうという欠点
を持つ。
るが、楕円べき倍演算においても同様の課題があり、そ
の解決が必要とされるのはべき乗演算と同じである。
バイナリ法で用いる領域に近い大きさに削減し、かつ演
算回数の平均値を符号つきバイナリ法で使われる回数に
近い回数に抑え、最悪の場合でも通常のバイナリ法と同
じ乗算回数で演算が可能な、べき乗演算装置を提供する
ことを第1の目的とする。
値処理部で前処理してからべき乗演算を行なうべき乗演
算装置において、演算量を低減するために改良されたべ
き数値処理部を提供することにある。
主要部をなし、べき数の保持領域の削減と乗算回数の削
減とを実現するために用いられている新規なべき乗演算
方法を提供することにある。
法を実行するためのプログラムを格納した記録媒体を提
供することにある。
置、方法、記録媒体と同様な利益、効果をもたらせてく
れるべき乗剰余演算装置、べき乗剰余演算方法、記録媒
体を提供することにある。
置、方法、記録媒体と同様な利益、効果をもたらせてく
れる楕円べき倍演算装置、楕円べき倍演算方法、記録媒
体を提供することにある。
的を達成するために、本発明は、kをnビットのべき乗
数、Aを被べき乗数とする、Ak のべき乗演算を行う前
にべき数値処理部で前記kを前処理し、処理後のべき乗
数をAと共に演算部に加えてAk演算を行うべき乗演算
装置における前記べき数値処理部であって、符号ビット
と前記整数kを格納するビット列格納手段と、ビット列
格納手段に格納されているビット列から符号ビットを含
むn未満の所定ビット数のビット列データを読み出す読
出し手段と、読出し手段が読み出すビット列データを基
にして新たなビット列データを生成するビット列データ
生成手段と、読み出し手段が読み出すビット列データを
基にして被べき乗数Aの演算方法を指定する演算方法指
定手段と、演算方法指定手段にて指定された演算方法で
演算するよう演算部へ指示する一方、ビット列データ生
成手段が生成したビット列データで前記ビット列格納手
段内の対応するビット列を更新する指示・更新手段と、
ビット列格納手段から次に読み出すビット位置を、符号
ビットを除き上位から下位ビット側にシフトする読み出
し位置シフト手段と、上記各手段を(n+1)回繰り返
し動作させる繰り返し制御手段と、を備えることを特徴
としている。
符号ビットを除き、ビット列格納手段中でビット列を桁
上げする桁上げ手段であり、前記読み出し手段は、桁上
げ後に1ビットの符号ビットを含む上位4ビットのデー
タを前記ビット列格納手段から読み出すこと、を特徴と
している。
1欄に第1群のビットパターンが、第2欄に第2群のビ
ットパターンが対応記述されたテーブルを含み、読み出
し手段が読み出したビット列データのビットパターンの
少なくとも一部を共通にするビットパターンを第1群の
ビットパターンから検索し、検索したビットパターンに
対応して記述されたビットパターンを第2群のビットパ
ターンから読み出し、これを新たなビット列データとし
て生成すること、を特徴としている。
ーンが「0011」のビット列、上位2ビットが「0
1」のビット列、上位3ビットが「110」のビット列
の3種類であり、第1群のビットパターンが「001
1」のビット列の場合、第2群のビットパターンが「1
001」であり、第1群のビットパターンが上位3ビッ
ト「110」のビット列である場合、第2群のビットパ
ターンが「010」であり、読み出し手段から読み出し
たビット列データが第1群のビットパターンにない場
合、並びに第1群のビットパターンが「01」の場合、
ビット列データ生成手段は、読み出したビット列データ
と同じビット列データを生成することを特徴としてい
る。
おり、前記演算方法指定手段は、テーブルの第3欄に記
述された演算方法であること、を特徴としている。
1」と「01」のビット列の場合、第3欄に記述された
演算方法が被べき乗数Aの乗算であり、第1群のビット
パターンが「110」のビット列の場合、第3欄に記述
された演算方法が被べき乗算Aの逆数の乗算であり、読
み出したビット列データが、第1群のビットパターンの
いずれにも該当しないビットパターンの場合、演算方法
指定手段は乗算しない指示を行なうこと、を特徴として
いる。
ットを符号ビットとするn+2ビットのレジスタであ
り、読み出し位置シフト手段が、レジスタに格納された
ビット列を、最上位ビットを除き1ビットづつ左シフト
するシフタであること、を特徴としている。
定の論理式を格納した演算手段であり、ビット列格納手
段から読み出したビット列の各ビットの値を前記論理式
に代入して新たなビット列を生成すること、を特徴とし
ている。
する論理式は、ビット列格納手段から読み出したビット
列データを上位ビットから、B0B1B2B3 とし、生成
すべき各ビットのデータを D0D1D2D3 とした場
合、以下の式で与えられること、を特徴としている。
論理式を格納しており、ビット列格納手段から読み出し
た各ビットの値を当該論理式に代入して演算方法を求め
ること、を特徴としている。
段から読み出したビット列を上位ビットから、B0B1B
2B3とし、Aの乗算を行なうか否かの指定信号をSA、
A-1の乗算を行なうか否かの指定信号をSA-1とした場
合、指定信号は以下の式で与えられることを特徴として
いる。
k、及び整数Aが与えられた時に、Aのk乗を計算する
べき乗演算装置であって、以下の構成を含むものによっ
ても達成される。
号を保持する符号保持領域、演算過程において得る中間
値を保持する中間値保持領域を有する記憶手段と、前記
べき値保持領域の下位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)回繰り返えさせ、最後に出力手段から演算結果を出
力させる制御手段との構成である。
は上記べき乗演算装置の主要構成若しくは等価な構成を
含む、べき乗剰余演算装置、楕円べき倍演算装置によっ
て達成される。従って、べき乗演算装置と同様に、べき
数保持領域の大幅な増加を抑制できるし、演算回数の低
減を図ることが出来る。
て添付図面を用いて説明する。本実施の形態に係るべき
乗剰余演算装置の基本ブロックは、既述した図4に示す
通りであり、べき数値処理部101と演算部106から
成る。即ち、べき数値処理部101は、べき数値k(2
進表現)を処理し、その出力103を演算部106に送
出する。演算部106は、被べき数Aと前記出力103
とを素数Pを法とする剰余体上で演算し、Akmodp
を得る。図1は、べき数値処理部の詳細構成図で、本発
明が従来装置と異なる構成となる部分である。201
は、べき数値保持レジスタで、べき数値のビット数
(n)に2を加えた幅を持つ。
ビットが1ビット分と、符号付きバイナリ法を基本とす
るので、べき数値より1ビット多く必要なことによる。
202は、べき数値保持レジスタへの初期値入力で、入
力kがそのまま入力される。203は、べき数値判定部
で、べき数値保持レジスタの上位4ビットのビットパタ
ーンを、4種類のタイプに分類する。204は、べき数
値変換部で、前記べき数値判定部で分類されたタイプに
従い、べき数値保持レジスタの上位4ビットのビットパ
ターンを変換する。205は、べき数値シフタで、べき
数値レジスタの最上位ビットを除いたビットを、1ビッ
ト左シフトする。なお最上位ビットはそのまま保持され
る。べき数値判定部203からべき数値変換部204に
至るループと、べき数値シフタ205のループは、交互
に実行される。206は、べき数値判定部で分類された
タイプを、演算部に伝える制御信号である。この制御信
号に従って演算部の処理が定まる。図3は、べき数値処
理部のべき数値判定部203で判定された分類と、その
分類に従ったべき数値変換部204の変換処理、及び演
算部の数値選択処理の対応を表にしたものである。40
1は、べき数値判定部で分類される、べき数値の上位4
ビットのビットパターンである。402は、前記分類に
従ってべき数値変換部で処理される変換値を示したもの
である。ここで変換なしとなっている場合は、べき数値
の上位4ビットの値変換は行なわない。403は、判定
部203の判定結果であり、演算部で処理されるべき選
択処理を示している。選択処理としては図から理解され
るように「Aの乗算」と「A^−1の乗算」と「乗算な
し」の3種類存在する。前記べき数値判定部203によ
る判定結果は、演算部106へ出力され、セレクタの制
御がなされる。演算部106の構成は、既に説明した図
2のものが用いられる。図2において、セレクタは、3
06と307の2個存在するので、前記べき数値判定部
203の判定結果によって、この2つのセレクタ30
6、307が制御される。例えば判定結果が「Aの乗
算」であると、セレクタ306が乗数Aをそのまま出力
し、セレクタ307が乗算演算部304の乗算結果を出
力するよう制御される。同様に、判定結果が「A-1の乗
算」であれば、セレクタ306が逆数取得部305の出
力を選択し、セレクタ307が乗算演算部304の乗算
結果を選択するよう制御され、判定結果が、「乗算な
し」であれば、セレクタ306はいずれも選択せず、セ
レクタ307が2乗算演算部303の演算結果を選択す
るよう制御される。上記図1、図2で示したべき乗剰余
演算装置の演算のフローチャートを図5に示す。次に、
具体的なべき乗数を例にとり、べき乗演算の動作を上記
フローチャートに従って説明する。例えば、べき乗数k
として、k=4204957639=(111110101010001010001111
11000111)2 の32ビット(n=32)の値が与えら
れ、A kのべき算演算を行うとする。先ず、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ビットは「001
1」なので、このビットパターンを用いて、図3のテー
ブルを参照し、「Aの乗算」という判定結果を得る。同
時に変換値として「1001」を得る(S504)。上
記判定結果により、既述したようにセレクタ306、3
07が選択制御され、x=x2 の演算(S505)とx
=x×Aの演算とが行われる(S506、507)。今
の場合、x=1(初期値)なので、上記演算結果として
Aを得、これを中間値レジスタ301に格納する。次
に、変換値としてテーブルから得た「1001」を、判
定部203から変換部204に送出する。変換部204
は、n+2bitレジスタ201の上位4bitを判定
部203から得た値で更新する(S509、S51
0)。この後、1bit左シフタ205が作動し、n+
2bitレジスタ201の最上位ビット(MSB)を除
く全ビットを1ビット左シフトさせる(S512)。そ
して、i−1を新たにiとして(S513)、再びS5
03の処理を行う。この時点でn+2bitレジスタ2
01の格納値は、図7中の回数2欄に示すビットパター
ンとなっている。上位4ビットのパターンは「101
1」となっているので、判定部203はテーブルを参照
し、「乗算なし」の判定結果と、「変換なし」の変換値
を得る。「乗算なし」であるので、演算としてはx=x
2 の処理だけ行う(S505)。回数1の処理が終わっ
た時点で、x=Aになっているので、回数2ではx=A
2となり、その値を中間値レジスタに格納する。また、
変換値は「変換なし」なので、変換部204はn+2b
itレジスタ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の値が演算結果として出力される(S
514)。図7の回数33の右端のx値が、その演算結
果である。なお、上記実施例では、べき数値判定部20
3は、図3に示すようなテーブルを持っており、べき乗
数の上位4ビットのビットパターンを用いてテーブルを
検索し、変換すべきビットパターンの指定、演算部への
演算式の指定を行なっているが、テーブル以外に例え
ば、所定の論理式を格納した演算回路で構成することも
出来る。そのような演算回路が格納すべき論理式の一例
を以下に示す。
たビット列データを上位ビットから、B0B1B2B3 と
し、変換後のビットのデータを D0D1D2D3 とした
場合、
をSA、A-1の乗算を行なうか否かの指定信号をSA-1と
した場合、演算式指定は、
いて構成する装置について説明したが、一般に値を保持
する領域として用いられるメモリ等を用いる構成でも同
様に実施可能である。
2を参照してのべき乗剰余演算の動作からも理解される
ように、本発明は演算方法としても特徴を有する。従っ
て、また、その演算方法を実行するプログラムを記録媒
体に格納し、それを汎用コンピュータにインストールす
ることにより、任意のコンピュータで上記べき乗剰余演
算を実行することが出来る。
演算方法について説明しているが、同様な技術がべき乗
演算装置に対しても適用できる。
用した場合の演算処理を示すフローチャートである。べ
き倍係数はレジスタkにあらかじめ格納されており、1
60bitの値とする。iビットの数値は、k[i−1]
と記す。べき倍する座標は、あらかじめレジスタBx、
Byに格納されており、affine座標とする。図
中、S550は初期化処理で、n+2bitレジスタの
上位2ビットを0とし(k[161]、k[160]=
0)、iをn+2にセットし、レジスタAzを0にリセ
ットする。S551は楕円2倍算処理で、レジスタA
x、Ay、Azの値(jacobian座標値)を更新
する。この処理は前記実施の形態の2乗処理と対応する
処理である。S552はn+2bitレジスタから上位
4ビットのビット列を読み取り、図3で示したのと同様
なテーブルを検索して演算方法の判定を行う処理であ
る。S553〜S558は、上位4ビットのビット列が
「0011」「01xx」「110x」であった場合に
おいて行う演算並びにべき乗係数の更新処理を示す。S
553、S555、S557の楕円加算は、レジスタA
x、Ay、Azのjacobian座標値にレジスタB
x、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次項の係数である。
(9)式のa、bとはたまたま標記が同一であるに過ぎ
ず、両者の間には何らの依存関係もない。上記S552
〜S558までの処理は先に述べた実施の形態のデーブ
ル参照処理及びx×A倍処理に相当する。
は、162bitレジスタkの最上位ビット(k[16
1])を符号ビットとみなし、符号は保持したまま下位1
61bit(k[160]〜k[0])を右にシフトすること
である。この処理でオーバーフローしたビット値は無視
する。S560はiをデクリメントする処理で、iが0
になるまでS551〜S560の処理を繰り返し、0に
なると処理を終了する。
のべき乗剰余演算装置と同様、演算方法としても特徴を
有する。従って、その演算方法を実行するプログラム
(図6に示すフローチャートに相当)を随時インストー
ルすることにより、任意の汎用コンピュータにて本発明
を実施することが出来る。
るものであるから、べき数の値を保持するための領域
を、そのビット幅+2ビット分に抑えることができる
上、符号つき2進表現への変換結果によって演算を制御
するため、べき乗演算時の乗算回数、または楕円べき倍
算演算時の楕円加算回数が、本来の符号つきバイナリ法
での演算回数平均値(べき数値のビット幅の1/3)に
近い回数まで削減できるといった効果がある。
現への変換結果をべき値保持領域に上書きし、次の判定
のために用いているため、その演算回数がバイナリ法を
適用した時の演算回数を超えることはない。従って、演
算回数を従来の手法の符号つきバイナリ法で行なう演算
回数に近い値への削減を、本発明では、保持領域の大幅
な増加なしに行なったことでその効果は大きい。
細構成図である。
類と、べき数値変換部の変換処理、演算部の数値選択処
理の対応表である。
ャートである。
理を示すフローチャートである。
したもので、演算回数によって演算値がどのように推移
して行くかを表にして表わしている。
余演算処理フローチャートである。
数値処理部の詳細構成図である。
部の詳細構成図である。
るべき乗剰余演算処理を示すフローチャートである。
けるべき数値処理部の詳細構成図である。
ける演算部の詳細構成図である。
公報に示された方法によるべき乗剰余演算処理を示すフ
ローチャートである。
公報に示された方法におけるべき数値処理部の詳細構成
図である。
公報に示された方法におけるべき数値判定部の分類と、
演算部の数値選択処理の対応表である。
号 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 (38)
- 【請求項1】 kをnビットのべき乗数、Aを被べき
乗数とする、Ak のべき乗演算を行う前にべき数値処理
部で前記kを前処理し、処理後のべき乗数をAと共に演
算部に加えてAk演算を行うべき乗演算装置における前
記べき数値処理部であって、 符号ビットと前記整数kを格納するビット列格納手段
と、 ビット列格納手段に格納されているビット列から符号ビ
ットを含むn未満の所定ビット数のビット列データを読
み出す読出し手段と、 読出し手段が読み出すビット列データを基にして新たな
ビット列データを生成するビット列データ生成手段と、 読み出し手段が読み出すビット列データを基にして被べ
き乗数Aの演算方法を指定する演算方法指定手段と、 演算方法指定手段にて指定された演算方法で演算するよ
う演算部へ指示する一方、ビット列データ生成手段が生
成したビット列データで前記ビット列格納手段内の対応
するビット列を更新する指示・更新手段と、 ビット列格納手段から次に読み出すビット位置を、符号
ビットを除き上位から下位ビット側にシフトする読み出
し位置シフト手段と、 上記各手段を(n+1)回繰り返し動作させる繰り返し
制御手段と、を備えることを特徴とするべき乗演算装置
におけるべき数値処理部。 - 【請求項2】 前記読み出し位置シフト手段は、符号
ビットを除き、ビット列格納手段中でビット列を桁上げ
する桁上げ手段であり、 前記読み出し手段は、桁上げ後に1ビットの符号ビット
を含む上位4ビットのデータを前記ビット列格納手段か
ら読み出すこと、 を特徴とする請求項1に記載のべき乗演算装置のべき数
値処理部。 - 【請求項3】 前記ビット列データ生成手段は、 第1欄に第1群のビットパターンが、第2欄に第2群の
ビットパターンが対応記述されたテーブルを含み、 読み出し手段が読み出したビット列データのビットパタ
ーンの少なくとも一部を共通にするビットパターンを第
1群のビットパターンから検索し、検索したビットパタ
ーンに対応して記述されたビットパターンを第2群のビ
ットパターンから読み出し、これを新たなビット列デー
タとして生成すること、 を特徴とする請求項2に記載のべき乗演算装置のべき数
値処理部。 - 【請求項4】 前記テーブルの第1群のビットパター
ンが「0011」のビット列、上位2ビットが「01」
のビット列、上位3ビットが「110」のビット列の3
種類であり、 第1群のビットパターンが「0011」のビット列の場
合、第2群のビットパターンが「1001」であり、第
1群のビットパターンが上位3ビット「110」のビッ
ト列である場合、第2群のビットパターンが「010」
であり、 読み出し手段から読み出したビット列データが第1群の
ビットパターンにない場合、並びに第1群のビットパタ
ーンが「01」の場合、ビット列データ生成手段は、読
み出したビット列データと同じビット列データを生成す
ることを特徴とする請求項3に記載のべき乗演算装置の
べき数値処理部。 - 【請求項5】 前記テーブルは更に第3欄を備えてお
り、 前記演算方法指定手段は、テーブルの第3欄に記述され
た演算方法であること、 を特徴とする請求項4に記載のべき乗演算装置のべき数
値処理部。 - 【請求項6】 第1群のビットパターンが「001
1」と「01」のビット列の場合、第3欄に記述された
演算方法が被べき乗数Aの乗算であり、第1群のビット
パターンが「110」のビット列の場合、第3欄に記述
された演算方法が被べき乗算Aの逆数の乗算であり、 読み出したビット列データが、第1群のビットパターン
のいずれにも該当しないビットパターンの場合、演算方
法指定手段は乗算しない指示を行なうこと、 を特徴とする請求項5に記載のべき乗演算装置のべき数
値処理部。 - 【請求項7】 前記ビット列格納手段が、最上位ビッ
トを符号ビットとするn+2ビットのレジスタであり、
読み出し位置シフト手段が、レジスタに格納されたビッ
ト列を、最上位ビットを除き1ビットづつ左シフトする
シフタであること、 を特徴とする請求項6に記載のべき乗演算装置のべき数
値処理部。 - 【請求項8】 前記ビット列データ生成手段は、所定
の論理式を格納した演算手段であり、ビット列格納手段
から読み出したビット列の各ビットの値を前記論理式に
代入して新たなビット列を生成すること、 を特徴とする請求項2に記載のべき乗演算装置のべき数
値処理部。 - 【請求項9】 前記ビット列データ生成手段の格納す
る論理式は、ビット列格納手段から読み出したビット列
データを上位ビットから、B0B1B2B3とし、生成すべ
き各ビットのデータを D0D1D2D3とした場合、以下
の式で与えられること、 を特徴とする請求項8に記載のべき乗演算装置のべき数
値処理部。 【数1】 - 【請求項10】 前記演算方法指定手段は、所定の論
理式を格納しており、ビット列格納手段から読み出した
各ビットの値を当該論理式に代入して演算方法を求める
こと、 を特徴とする請求項8に記載のべき乗演算装置のべき数
値処理部。 - 【請求項11】 前記演算方法指定手段は、ビット列
格納手段から読み出したビット列を上位ビットから、B
0B1B2B3とし、Aの乗算を行なうか否かの指定信号を
SA、A-1の乗算を行なうか否かの指定信号をSA-1とし
た場合、指定信号は以下の式で与えられること、 を特徴とする請求項10に記載のべき乗演算装置のべき
数値処理部。 【数2】 - 【請求項12】 nビットの定数pによる剰余体上の
楕円曲線をE(Fp)、p以下の正の整数をk、楕円曲
線E(Fp)上の点をAとした場合、べき倍点kAの演
算を行なう前に前処理部で前記kを前処理し、処理後の
べき値をAとともに演算部に加えてkA演算を行なう楕
円べき倍演算装置における前記前処理部であって、 符号ビットと前記整数kを格納するビット列格納手段
と、 ビット列格納手段に格納されているビット列から符号ビ
ットを含む所定ビット数(n未満)のビット列データを
読み出す読み出し手段と、 読み出し手段が読み出すビット列データを基にして新た
なビット列データを生成するビット列データ生成手段
と、 読み出し手段が読み出すビット列データを基にして楕円
曲線上の点Aの演算方法を指定する演算方法指定手段
と、 演算方法指定手段にて指定された演算方法で演算するよ
う演算部へ指示する一方、ビット列データ生成手段が生
成したビット列データで前記ビット列格納手段内の対応
するビット列を更新する指示・更新手段と、 ビット列格納手段から次に読み出すビット位置を、符号
ビットを除いて下位ビット側にシフトする読み出し位置
シフト手段と、 上記各手段を(n+1)回繰り返し動作させる繰り返し
制御手段とを備えること、 を特徴とする楕円べき倍点演算装置におけるべき値処理
部。 - 【請求項13】 前記読み出し位置シフト手段は、符
号ビットを除き、ビット列格納手段中でビット列を桁上
げする桁上げ手段であり、 前記読み出し手段は、桁上げ後に1ビットの符号ビット
を含む上位4ビットのデータを前記ビット列格納手段か
ら読み出すこと、 を特徴とする請求項12に記載の楕円べき倍点演算装置
のべき値処理部。 - 【請求項14】 前記ビット列データ生成手段は、第
1欄に第1群のビットパターンが、第2欄に第2群のビ
ットパターンが対応記述されたテーブルを含み、 読み出し手段が読み出したビット列データのビットパタ
ーンの少なくとも一部を共通にするビットパターンを第
1群のビットパターンから検索し、検索したビットパタ
ーンに対応して記述されたビットパターンを第2群のビ
ットパターンから読み出し、これを新たなビット列デー
タとして生成すること、 特徴とする請求項13に記載の楕円べき倍点演算装置の
べき値処理部。 - 【請求項15】 前記テーブルの第1群のビットパタ
ーンが「0011」のビット列、上位2ビットが「0
1」のビット列、上位3ビットが「110」のビット列
の3種類であり、 第1群のビットパターンが「0011」のビット列の場
合、第2群のビットパターンが「1001」であり、第
1群のビットパターンが上位3ビット「110」のビッ
ト列である場合、第2群のビットパターンが「010」
である、 読み出し手段から読み出したビット列データが第1群の
ビットパターンにない場合、ビット列データ生成手段
は、読み出したビット列データと同じビット列データを
生成すること、 を特徴とする請求項13に記載の楕円べき倍点演算装置
のべき値処理部。 - 【請求項16】 前記テーブルは更に第3欄を備えて
おり、 前記演算方法指定手段は、テーブルの第3欄に記述され
た演算方法であること、 を特徴とする請求項15に記載の楕円べき倍点演算装置
のべき値処理部。 - 【請求項17】 第1群のビットパターンが「001
1」と「01」のビット列の場合、第3欄に記述された
演算方法が楕円加算であり、第1群のビットパターンが
「110」のビット列の場合、第3欄に記述された演算
方法が楕円減算であり、 読み出したビット列データが、第1群のビットパターン
のいずれにも該当しないビットパターンの場合、演算方
法指定手段は加算も減算もしない指示を行なうこと、 を特徴とする請求項16に記載の楕円べき倍点演算装置
のべき値処理部。 - 【請求項18】 前記ビット列格納手段が、最上位ビ
ットを符号ビットとするn+2ビットのレジスタであ
り、 読み出し位置シフト手段が、レジスタに格納されたビッ
ト列を、最上位ビットを除き1ビットづつ左シフトする
シフタであること、 を特徴とする請求項17に記載の楕円べき倍点演算装置
のべき値処理部。 - 【請求項19】 前記ビット列データ生成手段は、所
定の論理式を格納した演算手段であり、ビット列格納手
段から読み出したビット列の各ビットの値を前記論理式
に代入して新たなビット列を生成すること、 を特徴とする請求項18に記載の楕円べき倍点演算装置
のべき値処理部。 - 【請求項20】 前記ビット列データ生成手段の格納
する論理式は、ビット列格納手段から読み出したビット
列データを上位ビットから、B0B1B2B3とし、生成す
べき各ビットのデータを D0D1D2D3 とした場合、
以下の式で与えられること、 を特徴とする請求項19に記載の楕円べき倍点演算装置
のべき値処理部。 【数3】 - 【請求項21】 前記演算方法指定手段は、所定の論
理式を格納しており、 ビット列格納手段から読み出した各ビットの値を当該論
理式に代入して演算方法を求めること、 を特徴とする請求項19に記載の楕円べき倍点演算装置
のべき値処理部。 - 【請求項22】 前記演算方法指定手段は、ビット列
格納手段から読み出したビット列を上位ビットから、B
0B1B2B3とし、楕円加算を行なうか否かの指定信号を
SA、楕円減算を行なうか否かの指定信号をSA-1とした
場合、指定信号は以下の式で与えられること、 を特徴とする請求項21に記載の楕円べき倍点演算装置
のべき値処理部。 【数4】 - 【請求項23】 nビットの正の整数k、及び整数A
が与えられた時に、Aのk乗を計算するべき乗演算装置
であって、 n+1ビットのべき値保持領域、符号を保持する符号保
持領域、演算過程において得る中間値を保持する中間値
保持領域を有する記憶手段と、 前記べき値保持領域の下位nビットに前記整数kを、最
上位ビットに0を、前記符号保持領域に、正の符号を表
す「+」を、前記中間値保持領域に定数1をそれぞれ初
期設定する初期設定手段と、 中間値保持領域に格納されている値を2乗して中間値を
書き直す中間値2乗演算手段と、 符号保持領域の符号データと、べき値保持領域の上位3
ビット数のビット列データを判定対象データとして選択
する判定対象データ選択手段と、 選択したデータを参照して、符号保持領域の値が「+」
で、かつべき値保持領域の上位3ビットの値が「01
1」であるという第1のパターン、符号保持領域の値が
「+」で、かつべき値保持領域の上位1ビットが「1」
であるという第2のパターン、符号保持領域の値が負の
符号を表す「−」で、かつべき値保持領域の値の上位2
ビットが「10」であるという第3のパターンのいずれ
かに該当するか、いずれにも該当しないかを判定する判
定手段と、 前記判定手段で第1のパターン、もしくは第2のパター
ンに該当すると判定された時、中間値保持領域に格納さ
れた値と整数Aの積を求め新たな中間値として中間値保
持領域の値を更新し、第3のパターンに該当すると判定
された時、中間値保持領域に格納された値と整数Aの商
を求め新たな中間値として中間値保持領域の値を更新
し、いずれのパターンにも該当しないと判断された時、
何らの演算も行なわず中間値保持領域の値を元のままの
値に保持する中間値乗算手段と、 前記判定手段で第1のパターンと判定された時、符号保
持領域の値を「−」に、べき値保持領域の上位3ビット
の値を「001」に変換する第1のべき値変換手段と、 前記判定手段で第3のパターンと判定された時、符号保
持領域の値を「+」に変換する第2のべき値変換手段
と、 判定手段の判定結果に従ってなされるべき処理を行なっ
た後、べき値保持領域の値を1ビット左にシフトし、オ
ーバフローを破棄するべき値シフト手段と、 中間値保持領域の値を演算結果として出力する出力手段
と、 前記初期設定手段により記憶手段の各領域に初期設定を
行なわせた後、中間値2乗演算手段、べき値判断手段、
中間値乗算手段、第1のべき値変換手段、第2のべき値
変換手段による各動作を、べき値シフト手段によるビッ
トシフトに同期させながら(n+1)回繰り返えさせ、
最後に出力手段から演算結果を出力させる制御手段と、 を備えることを特徴とするべき乗演算装置。 - 【請求項24】 nビットの正の整数k、及び整数
A、定数pが与えられた時に、Aのk乗の定数pによる
剰余値を計算するべき乗剰余演算装置であって、 n+1ビットのべき値保持領域、符号を保持する符号保
持領域、演算過程において得る中間値を保持する中間値
保持領域を有する記憶手段と、 前記べき値保持領域の下位nビットに前記整数kを、最
上位ビットに0を、前記符号保持領域に、正の符号を表
す「+」を、前記中間値保持領域に定数1をそれぞれ初
期設定する初期設定手段と、 中間値保持領域に格納されている値を2乗した結果の定
数pによる剰余を求める中間値2乗剰余演算手段と、 符号保持領域の符号データと、べき値保持領域の上位3
ビット数のビット列データ判定対象データとして選択す
る判定対象データ選択手段と、 選択されたデータを参照して、符号保持領域の値が
「+」で、かつべき値保持領域の上位3ビットの値が
「011」であるという第1のパターン、符号保持領域
の値が「+」で、かつべき値保持領域の上位1ビットが
「1」であるという第2のパターン、符号保持領域の値
が負の符号を表す「−」で、かつべき値保持領域の値の
上位2ビットが「10」であるという第3のパターンの
いずれかに該当するか、いずれにも該当しないかを判定
する判定手段と、 判定手段で第1のパターン、もしくは第2のパターンに
該当すると判定された時、中間値保持領域に格納された
値と整数Aの積の定数pによる剰余を求め、これを新た
な中間値として中間値保持領域の値を更新し、第3のパ
ターンに該当すると判定された時、中間値保持領域に格
納された値と整数Aの逆数の積の、定数pによる剰余を
求め、これを新たな中間値として中間値保持領域の値を
更新し、いずれのパターンにも該当しないと判断された
時、何らの演算も行なわず中間値保持領域の値を元のま
まの値に保持する中間値乗算剰余手段と、 前記判定手段で第1のパターンと判定された時、符号保
持領域の値を「−」に、べき値保持領域の上位3ビット
の値を「001」に変換する第1のべき値変換手段と、 前記判定手段で第3のパターンと判定された時、符号保
持領域の値を「+」に変換する第2のべき値変換手段
と、 判定手段の判定結果に従ってなされるべき処理を行なっ
た後、べき値保持領域の値を1ビット左にシフトし、オ
ーバフローを破棄するべき値シフト手段と、 中間値保持領域の値を演算結果として出力する出力手段
と、 前記初期設定手段により記憶手段の各領域に初期設定を
行なわせた後、中間値2乗剰余演算手段、べき値判断手
段、中間値乗算剰余手段、第1のべき値変換手段、第2
のべき値変換手段による各動作を、べき値シフト手段に
よるビットシフトに同期させながら(n+1)回繰り返
えさせ、最後に出力手段から演算結果を出力させる制御
手段と、 を備えることを特徴とするべき乗剰余演算装置。 - 【請求項25】 nビット定数pによる剰余体上の楕
円曲線E(Fp)、p以下の正の整数k、及び楕円曲線
E(Fp)上の点Aが与えられた時に、べき倍点kAを
計算する楕円べき倍演算装置であって、 n+1ビットの数値保持領域、符号を保持する符号保持
領域、中間点保持領域を有する記憶手段と、 べき値保持領域の下位nビットに整数kを、最上位ビッ
トに0を、符号保持領域に、正の符号を表す「+」を、
中間点保持領域に無限遠点Oをそれぞれ初期設定する初
期設定手段と、 中間点保持領域に格納されている点の2倍点を求める中
間点2倍算演算手段と、 符号保持領域の符号データと、数値保持領域の上位から
3ビットのビット列データとを選択する判定対象データ
選択手段と、 選択したデータ列を参照し、符号保持領域の値が「+」
で、かつ数値保持領域の値の上位3ビットの値が「01
1」であるという第1のパターン、符号保持領域の値が
「+」で、かつ数値保持領域の上位1ビットが「1」で
あるという第2のパターン、符号保持領域の値が負の符
号を表す「−」で、かつ数値保持領域の値の上位2ビッ
トが「10」であるという第3のパターンのいずれかに
該当するか、いずれにも該当しないかを判定する判定手
段と、 前記判定手段で第1のパターン、もしくは第2のパター
ンに該当すると判定された時、中間点保持領域に格納さ
れた中間点と楕円曲線上の点Aの加算点を新たな中間点
として中間点保持領域を更新し、第3のパターンに該当
すると判定された時、中間点保持領域に格納された中間
点と楕円曲線上の点Aの減算点を新たな中間点として中
間点保持領域を更新し、上記いずれのパターンにも該当
しないと判定された時、中間点保持領域に格納している
中間点を元のまま保持する中間点加算手段と、 前記判定手段で第1のパターンと判定された時、記憶手
段の符号保持領域の値を「−」に、数値保持領域の上位
3ビットの値を「001」に変換する第1の変換手段
と、 前記判定手段で第3のパターンと判定された時、符号保
持領域の値を「+」に変換する第2の変換手段と、 判定手段の判定に従って処理を行なった後、数値保持領
域に格納された整数kを1ビット左にシフトし、オーバ
フローを破棄するシフト手段と、 中間点保持領域の値を演算結果として出力する出力手段
と、 前記記憶手段に対し初期値設定手段による初期値設定を
行なわせて後、中間値2倍算演算手段、判定手段、中間
点加算手段、第1の変換手段、第2の変換手段による各
動作を、シフト手段によるビットシフトに同期させて
(n+1)回繰り返させ、最後に出力手段から演算結果
を出力させる制御手段と、 を備えることを特徴とする楕円べき倍演算装置。 - 【請求項26】 kをnビットのべき乗数、Aを被べ
き乗数とする、Akのべき乗演算を行う前に前記kを前
処理し、処理後のべき乗数をAと共に演算部に加えてA
k演算を行うべき乗演算装置におけるべき乗数前処理方
法であって、 符号ビットと前記整数kを格納するビット列格納手段か
ら符号ビットを含む所定ビット数のビット列データを読
み出す第1ステップと、 読み出したビット列データを基にして新たなビット列デ
ータを生成する第2ステップと、 読み出したビット列データを基にして被べき乗数Aの演
算方法を決定する第3ステップと、 決定された演算方法で演算するよう演算部へ指示する一
方、生成したビット列データで前記ビット列格納手段内
の対応するビット列を更新する第4ステップと、 ビット列格納手段から次に読み出すビット位置を、符号
ビットを除き下位ビット側にシフトすると、 kの最下位ビットを読出すところまで処理が進んだかを
判定し、未達なら既達と判定されるまで、第1ステップ
から第5ステップまでを繰り返す第6ステップと、 を含むことを特徴とするべき乗演算装置におけるべき乗
数前処理方法。 - 【請求項27】 第2ステップは、 第1欄に第1群のビットパターンが、第2欄に第2群の
ビットパターンが対応記述されたテーブルを用いて、ビ
ット列データ格納手段から読み出したビット列データの
ビットパターンの少なくとも一部が共通するビットパタ
ーンを第1群のビットパターンから検索し、検索したビ
ットパターンに対応して記述されたビットパターンを第
2群のビットパターンから読み出し、これを新たなビッ
ト列データとして生成するサブステップと、 テーブルの第1欄に、読み出したビット列データのビッ
トパターンに該当するものが無かった場合、読み出した
ビット列データをそのまま出力するサブステップと、 を含むことを特徴とする請求項26に記載のべき乗演算
装置のべき数値前処理方法。 - 【請求項28】 前記テーブルは更に第1欄のビット
パターンに対応させて演算方法を記述した第3欄を備え
ており、 第3ステップはテーブルの第3欄から演算方法を読み出
すこと、 であることを特徴とする請求項27に記載のべき乗演算
装置のべき数値前処理方法。 - 【請求項29】 第2ステップは、所定の論理式を格
納した演算手段を用い、 ビット列格納手段から読み出したビット列の各ビットの
値を前記論理式に代入して新たなビット列を生成する処
理であり、 第3のステップは、所定の論理式を格納した演算手段を
用い、ビット列格納手段から読み出したビット列の各ビ
ットの値を前記論理式に代入して演算方法を決定する処
理である、 ことを特徴とする請求項26に記載のべき乗演算装置の
べき数値前処理方法。 - 【請求項30】 nビットの定数pによる剰余体上の
楕円曲線をE(Fp)、p以下の正の整数をk、楕円曲
線E(Fp)上の点をAとした場合、べき倍点kAの演
算を行なう前に前記kを前処理し、処理後のべき値をA
とともに演算部に加えてkA演算を行なう楕円べき倍演
算装置における前処理方法であって、 符号ビットと前記整数kを格納するビット列格納手段か
ら符号ビットを含む所定ビット数のビット列データを読
み出す第1ステップと、 読み出したビット列データを基にして新たなビット列デ
ータを生成する第2ステップと、 読み出したビット列データを基にして楕円曲線上の点A
の演算方法を決定する第3ステップと、 決定された演算方法で演算するよう演算部へ指示する一
方、生成したビット列データで前記ビット列格納手段内
の対応するビット列を更新する第4ステップと、 ビット列格納手段から次に読み出すビット位置を、符号
ビットを除き下位ビット側にシフトする第5ステップ
と、 kの最下位ビットを読出すところまで処理が進んだかを
判定し、未達なら既達と判定されるまで、第1ステップ
から第5ステップまでを繰り返す第6ステップと、 を含むことを特徴とする楕円べき倍演算装置における前
処理方法。 - 【請求項31】 nビットの正の整数k、及び整数A
が与えられた時に、Aのk乗を計算するべき乗演算方法
であって、 n+1ビットのべき値保持領域、符号を保持する符号保
持領域、演算過程において得る中間値を保持する中間値
保持領域を有する記憶手段の、前記べき値保持領域の下
位nビットに前記整数kを、最上位ビットに0を、前記
符号保持領域に、正の符号を表す「+」を、前記中間値
保持領域に定数1をそれぞれ初期設定する第1ステップ
と、 記憶手段の中間値保持領域に格納されている値を2乗
し、これを新たな中間値として中間値保持領域に上書き
する第2ステップと、 符号保持領域の符号データと、べき値保持領域の上位3
ビット数のビット列データを判定対象データとして選択
する第3ステップと、 選択したデータを参照して、符号保持領域の値が「+」
で、かつべき値保持領域の上位3ビットの値が「01
1」であるという第1のパターン、符号保持領域の値が
「+」で、かつべき値保持領域の上位1ビットが「1」
であるという第2のパターン、符号保持領域の値が負の
符号を表す「−」で、かつべき値保持領域の値の上位2
ビットが「10」であるという第3のパターンのいずれ
かに該当するか、いずれにも該当しないかを判定する第
4ステップと、 第4ステップで第1のパターン、もしくは第2のパター
ンに該当すると判定された場合、中間値保持領域に格納
された値と整数Aの積を求め新たな中間値として中間値
保持領域の値を更新し、第3のパターンに該当すると判
定された時、中間値保持領域に格納された値と整数Aの
商を求め新たな中間値として中間値保持領域の値を更新
し、いずれのパターンにも該当しないと判断された時、
何らの演算も行なわず中間値保持領域の値を元のままの
値に保持する第5ステップと、 第4ステップで第1のパターンと判定された場合、符号
保持領域の値を「−」に、べき値保持領域の上位3ビッ
トの値を「001」に変換する第6ステップと、 第4ステップで第3のパターンと判定された場合、符号
保持領域の値を「+」に変換する第7ステップと、 判定結果に従ってなされるべき処理を行なった後、べき
値保持領域の値を1ビット左にシフトし、オーバフロー
を破棄する第8ステップと、 第8ステップにてシフトした結果、初期設定を行なった
ときべき値保持領域の最下位ビットのデータがオーバフ
ローするに至るまで、第2〜第8ステップの各処理を繰
り返えし、最下位ビットデータがオーバフローした段階
で、中間値保持領域に格納されている値を演算結果とし
て出力する第9ステップと、 を含むことを特徴とするべき乗演算方法。 - 【請求項32】 nビットの正の整数k、及び整数
A、定数pが与えられた時に、Aのk乗の定数pによる
剰余値を計算するべき乗剰余演算方法であって、 n+1ビットのべき値保持領域、符号を保持する符号保
持領域、演算過程において得る中間値を保持する中間値
保持領域を有する記憶手段の、前記べき値保持領域の下
位nビットに前記整数kを、最上位ビットに0を、前記
符号保持領域に、正の符号を表す「+」を、前記中間値
保持領域に定数1をそれぞれ初期設定する第1ステップ
と、 記憶手段の中間値保持領域に格納されている値を2乗し
た結果の定数pによる剰余を求め、これを新たな中間値
として中間値保持領域に上書きする第2ステップと、 符号保持領域の符号データと、べき値保持領域の上位3
ビット数のビット列データを判定対象データとして選択
する第3ステップと、 選択したデータを参照して、符号保持領域の値が「+」
で、かつべき値保持領域の上位3ビットの値が「01
1」であるという第1のパターン、符号保持領域の値が
「+」で、かつべき値保持領域の上位1ビットが「1」
であるという第2のパターン、符号保持領域の値が負の
符号を表す「−」で、かつべき値保持領域の値の上位2
ビットが「10」であるという第3のパターンのいずれ
かに該当するか、いずれにも該当しないかを判定する第
4ステップと、 第4ステップで第1のパターン、もしくは第2のパター
ンに該当すると判定された場合、中間値保持領域に格納
された値と整数Aの積の定数pによる剰余を求め、これ
を新たな中間値として中間値保持領域に上書きし、第3
のパターンに該当すると判定された時、中間値保持領域
に格納された値と整数Aの逆数の積の、定数pによる剰
余を求め、これを新たな中間値として中間値保持領域に
上書きし、いずれのパターンにも該当しないと判断され
た時、何らの演算も行なわず中間値保持領域の値を元の
ままの値に保持する第5ステップと、 第4ステップで第1のパターンと判定された場合、符号
保持領域の値を「−」に、べき値保持領域の上位3ビッ
トの値を「001」に変換する第6ステップと、 第4ステップで第3のパターンと判定された場合、符号
保持領域の値を「+」に変換する第7ステップと、 判定結果に従ってなされるべき処理を行なった後、べき
値保持領域の値を1ビット左にシフトし、オーバフロー
を破棄する第8ステップと、 第8ステップにてシフトした結果、初期設定を行なった
ときべき値保持領域の最下位ビットのデータがオーバフ
ローするに至るまで、第2〜第8ステップの各処理を繰
り返えし、最下位ビットデータがオーバフローした段階
で、中間値保持領域に格納されている値を演算結果とし
て出力する第9ステップと、 を含むことを特徴とするべき乗剰余演算方法。 - 【請求項33】 nビット定数pによる剰余体上の楕
円曲線E(Fp)、p以下の正の整数k、及び楕円曲線
E(Fp)上の点Aが与えられた時に、べき倍点kAを
計算する楕円べき倍演算方法であって、 n+1ビットの数値保持領域、符号を保持する符号保持
領域、演算過程において得る中間値を保持する中間値保
持領域を有する記憶手段の、前記数値保持領域の下位n
ビットに前記整数kを、最上位ビットに0を、前記符号
保持領域に、正の符号を表す「+」を、前記中間値保持
領域に無限遠点をそれぞれ初期設定する第1ステップ
と、 中間点保持領域に格納されている点の2倍点を求め、こ
れを新たな中間点として中間値保持領域に上書きする第
2ステップと、 符号保持領域の符号データと、数値保持領域の上位から
3ビットのビット列データとを選択する第3ステップ
と、 選択したデータ列を参照し、符号保持領域の値が「+」
で、かつ数値保持領域の値の上位3ビットの値が「01
1」であるという第1のパターン、符号保持領域の値が
「+」で、かつ数値保持領域の上位1ビットが「1」で
あるという第2のパターン、符号保持領域の値が負の符
号を表す「−」で、かつ数値保持領域の値の上位2ビッ
トが「10」であるという第3のパターンのいずれかに
該当するか、いずれにも該当しないかを判定する第4ス
テップと、 第4ステップで第1のパターン、もしくは第2のパター
ンに該当すると判定された時、中間点保持領域に格納さ
れた中間点と楕円曲線上の点Aの加算点を新たな中間点
として中間点保持領域を更新し、第3のパターンに該当
すると判定された時、中間点保持領域に格納された中間
点と楕円曲線上の点Aの減算点を新たな中間点として中
間点保持領域を更新し、上記いずれのパターンにも該当
しないと判定された時、中間点保持領域に格納している
中間点を元のまま保持する第5ステップと、 第4ステップで第1のパターンと判定された時、記憶手
段の符号保持領域の値を「−」に、数値保持領域の上位
3ビットの値を「001」に変換する第6ステップと、 第4ステップで第3のパターンと判定された時、符号保
持領域の値を「+」に変換する第7ステップと、 上記判定に従って処理を行なった後、数値保持領域に格
納された整数kを1ビット左にシフトし、オーバフロー
を破棄する第8ステップと、 第8ステップにてシフトした結果、初期設定を行なった
とき数値保持領域の最下位ビットのデータがオーバフロ
ーするに至るまで、第2〜第8ステップの各処理を繰り
返えし、最下位ビットデータがオーバフローした段階
で、中間値保持領域に格納されている値を演算結果とし
て出力する第9ステップと、 を含むことを特徴とする楕円べき倍演算方法。 - 【請求項34】 kをnビットのべき乗数、Aを被べ
き乗数とする、Akのべき乗演算を行う前に前記kを前
処理し、処理後のべき乗数をAと共に演算部に加えてA
k演算を行うべき乗演算装置において使用され、べき乗
数前処理方法のコンピュータ読み取り可能なプログラム
を格納した記録媒体であって、前記プログラムは、 符号ビットと前記整数kを格納するビット列格納手段か
ら符号ビットを含む所定ビット数のビット列データを読
み出す第1ステップと、 読み出したビット列データを基にして新たなビット列デ
ータを生成する第2ステップと、 読み出したビット列データを基にして被べき乗数Aの演
算方法を決定する第3ステップと、 決定された演算方法で演算するよう演算部へ指示する一
方、生成したビット列データで前記ビット列格納手段内
の対応するビット列を更新する第4ステップと、 ビット列格納手段から次に読み出すビット位置を、符号
ビットを除き下位ビット側にシフトする第5ステップ
と、 kの最下位ビットを読出すところまで処理が進んだかを
判定し、未達なら既達と判定されるまで、第1ステップ
から第5ステップまでを繰り返す第6ステップと、 を含むことを特徴とする記録媒体。 - 【請求項35】 nビットの定数pによる剰余体上の
楕円曲線をE(Fp)、p以下の正の整数をk、楕円曲
線E(Fp)上の点をAとした場合、べき倍点kAの演
算を行なう前に前記kを前処理し、処理後の数値をAと
ともに演算部に加えてkA演算を行なう楕円べき倍演算
装置において使用され、前処理方法のコンピュータ読み
取り可能なプログラムを格納した媒体であって、前記プ
ログラムは、 符号ビットと前記整数kを格納するビット列格納手段か
ら符号ビットを含む所定ビット数のビット列データを読
み出す第1ステップと、 読み出したビット列データを基にして新たなビット列デ
ータを生成する第2ステップと、 読み出したビット列データを基にして楕円曲線上の点A
の演算方法を決定する第3ステップと、 決定された演算方法で演算するよう演算部へ指示する一
方、生成したビット列データで前記ビット列格納手段内
の対応するビット列を更新する第4ステップと、 ビット列格納手段から次に読み出すビット位置を、符号
ビットを除き下位ビット側にシフトする第5ステップ
と、 kの最下位ビットを読出すところまで処理が進んだかを
判定し、未達なら既達と判定されるまで、第1ステップ
から第5ステップまでを繰り返す第6ステップと、 を含むことを特徴とする記録媒体。 - 【請求項36】 nビットの正の整数k、及び整数A
が与えられた時に、Aのk乗を計算するべき乗演算方法
を実行するコンピュータ読み取り可能なプログラムを格
納した記憶媒体であって、前記プログラムは、 n+1ビットのべき値保持領域、符号を保持する符号保
持領域、演算過程において得る中間値を保持する中間値
保持領域を有する記憶手段の、前記べき値保持領域の下
位nビットに前記整数kを、最上位ビットに0を、前記
符号保持領域に、正の符号を表す「+」を、前記中間値
保持領域に定数1をそれぞれ初期設定する第1ステップ
と、 記憶手段の中間値保持領域に格納されている値を2乗
し、これを新たな中間値として中間値保持領域に上書き
する第2ステップと、 符号保持領域の符号データと、べき値保持領域の上位3
ビット数のビット列データを判定対象データとして選択
する第3ステップと、 選択したデータを参照して、符号保持領域の値が「+」
で、かつべき値保持領域の上位3ビットの値が「01
1」であるという第1のパターン、符号保持領域の値が
「+」で、かつべき値保持領域の上位1ビットが「1」
であるという第2のパターン、符号保持領域の値が負の
符号を表す「−」で、かつべき値保持領域の値の上位2
ビットが「10」であるという第3のパターンのいずれ
かに該当するか、いずれにも該当しないかを判定する第
4ステップと、 第4ステップで第1のパターン、もしくは第2のパター
ンに該当すると判定された場合、中間値保持領域に格納
された値と整数Aの積を求め新たな中間値として中間値
保持領域の値を更新し、第3のパターンに該当すると判
定された時、中間値保持領域に格納された値と整数Aの
商を求め新たな中間値として中間値保持領域の値を更新
し、いずれのパターンにも該当しないと判断された時、
何らの演算も行なわず中間値保持領域の値を元のままの
値に保持する第5ステップと、 第4ステップで第1のパターンと判定された場合、符号
保持領域の値を「−」に、べき値保持領域の上位3ビッ
トの値を「001」に変換する第6ステップと、 第4ステップで第3のパターンと判定された場合、符号
保持領域の値を「+」に変換する第7ステップと、 判定結果に従ってなされるべき処理を行なった後、べき
値保持領域の値を1ビット左にシフトし、オーバフロー
を破棄する第8ステップと、 第8ステップにてシフトした結果、初期設定を行なった
ときべき値保持領域の最下位ビットのデータがオーバフ
ローするに至るまで、第2〜第8ステップの各処理を繰
り返えし、最下位ビットデータがオーバフローした段階
で、中間値保持領域に格納されている値を演算結果とし
て出力する第9ステップと、 を含むことを特徴とする記録媒体。 - 【請求項37】 nビットの正の整数k、及び整数
A、定数pが与えられた時に、Aのk乗の定数pによる
剰余値を計算するべき乗剰余演算方法を実行するコンピ
ュータ読み取り可能なプログラムを格納した記憶媒体で
あって、前記プログラムは、 n+1ビットのべき値保持領域、符号を保持する符号保
持領域、演算過程において得る中間値を保持する中間値
保持領域を有する記憶手段の、前記べき値保持領域の下
位nビットに前記整数kを、最上位ビットに0を、前記
符号保持領域に、正の符号を表す「+」を、前記中間値
保持領域に定数1をそれぞれ初期設定する第1ステップ
と、 記憶手段の中間値保持領域に格納されている値を2乗し
た結果の定数pによる剰余を求め、これを新たな中間値
として中間値保持領域に上書きする第2ステップと、 符号保持領域の符号データと、べき値保持領域の上位3
ビット数のビット列データを判定対象データとして選択
する第3ステップと、 選択したデータを参照して、符号保持領域の値が「+」
で、かつべき値保持領域の上位3ビットの値が「01
1」であるという第1のパターン、符号保持領域の値が
「+」で、かつべき値保持領域の上位1ビットが「1」
であるという第2のパターン、符号保持領域の値が負の
符号を表す「−」で、かつべき値保持領域の値の上位2
ビットが「10」であるという第3のパターンのいずれ
かに該当するか、いずれにも該当しないかを判定する第
4ステップと、 第4ステップで第1のパターン、もしくは第2のパター
ンに該当すると判定された場合、中間値保持領域に格納
された値と整数Aの積の定数pによる剰余を求め、これ
を新たな中間値として中間値保持領域に上書きし、第3
のパターンに該当すると判定された時、中間値保持領域
に格納された値と整数Aの逆数の積の、定数pによる剰
余を求め、これを新たな中間値として中間値保持領域に
上書きし、いずれのパターンにも該当しないと判断され
た時、何らの演算も行なわず中間値保持領域の値を元の
ままの値に保持する第5ステップと、 第4ステップで第1のパターンと判定された場合、符号
保持領域の値を「−」に、べき値保持領域の上位3ビッ
トの値を「001」に変換する第6ステップと、 第4ステップで第3のパターンと判定された場合、符号
保持領域の値を「+」に変換する第7ステップと、 判定結果に従ってなされるべき処理を行なった後、べき
値保持領域の値を1ビット左にシフトし、オーバフロー
を破棄する第8ステップと、 第8ステップにてシフトした結果、初期設定を行なった
ときべき値保持領域の最下位ビットのデータがオーバフ
ローするに至るまで、第2〜第8ステップの各処理を繰
り返えし、最下位ビットデータがオーバフローした段階
で、中間値保持領域に格納されている値を演算結果とし
て出力する第9ステップと、 を含むことを特徴とする記録媒体。 - 【請求項38】 nビット定数pによる剰余体上の楕
円曲線E(Fp)、p以下の正の整数k、及び楕円曲線
E(Fp)上の点Aが与えられた時に、べき倍点kAを
計算する楕円べき倍演算方法を実行するコンピュータ読
み取り可能なプログラムを格納した記憶媒体であって、
前記プログラムは、 n+1ビットの数値保持領域、符号を保持する符号保持
領域、演算過程において得る中間値を保持する中間値保
持領域を有する記憶手段の、前記数値保持領域の下位n
ビットに前記整数kを、最上位ビットに0を、前記符号
保持領域に、正の符号を表す「+」を、前記中間値保持
領域に無限遠点をそれぞれ初期設定する第1ステップ
と、 中間点保持領域に格納されている点の2倍点を求め、こ
れを新たな中間点として中間値保持領域に上書きする第
2ステップと、 符号保持領域の符号データと、数値保持領域の上位から
3ビットのビット列データとを選択する第3ステップ
と、 選択したデータ列を参照し、符号保持領域の値が「+」
で、かつ数値保持領域の値の上位3ビットの値が「01
1」であるという第1のパターン、符号保持領域の値が
「+」で、かつ数値保持領域の上位1ビットが「1」で
あるという第2のパターン、符号保持領域の値が負の符
号を表す「−」で、かつ数値保持領域の値の上位2ビッ
トが「10」であるという第3のパターンのいずれかに
該当するか、いずれにも該当しないかを判定する第4ス
テップと、 第4ステップで第1のパターン、もしくは第2のパター
ンに該当すると判定された時、中間点保持領域に格納さ
れた中間点と楕円曲線上の点Aの加算点を新たな中間点
として中間点保持領域を更新し、第3のパターンに該当
すると判定された時、中間点保持領域に格納された中間
点と楕円曲線上の点Aの減算点を新たな中間点として中
間点保持領域を更新し、上記いずれのパターンにも該当
しないと判定された時、中間点保持領域に格納している
中間点を元のまま保持する第5ステップと、 第4ステップで第1のパターンと判定された時、記憶手
段の符号保持領域の値を「−」に、数値保持領域の上位
3ビットの値を「001」に変換する第6ステップと、 第4ステップで第3のパターンと判定された時、符号保
持領域の値を「+」に変換する第7ステップと、 上記判定に従って処理を行なった後、数値保持領域に格
納された整数kを1ビット左にシフトし、オーバフロー
を破棄する第8ステップと、 第8ステップにてシフトした結果、初期設定を行なった
とき数値保持領域の最下位ビットのデータがオーバフロ
ーするに至るまで、第2〜第8ステップの各処理を繰り
返えし、最下位ビットデータがオーバフローした段階
で、中間値保持領域に格納されている値を演算結果とし
て出力する第9ステップと、 を含むことを特徴とする記録媒体。
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 |
---|---|---|---|
JP11-69104 | 1999-03-15 | ||
JP6910499 | 1999-03-15 | ||
JP2000064463A JP4541485B2 (ja) | 1999-03-15 | 2000-03-09 | べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000330470A true JP2000330470A (ja) | 2000-11-30 |
JP2000330470A5 JP2000330470A5 (ja) | 2007-04-19 |
JP4541485B2 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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007526703A (ja) * | 2004-03-02 | 2007-09-13 | フランス テレコム | 暗号演算を行うための方法及び装置 |
JP2009008993A (ja) * | 2007-06-29 | 2009-01-15 | Nec Electronics Corp | べき乗剰余演算器及びその制御方法 |
JP6973677B1 (ja) * | 2021-03-22 | 2021-12-01 | 富士電機株式会社 | 逆数算出方法、装置、およびプログラム |
-
2000
- 2000-03-09 JP JP2000064463A patent/JP4541485B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007526703A (ja) * | 2004-03-02 | 2007-09-13 | フランス テレコム | 暗号演算を行うための方法及び装置 |
JP4772775B2 (ja) * | 2004-03-02 | 2011-09-14 | フランス・テレコム | 暗号演算を行うための方法及び装置 |
JP2009008993A (ja) * | 2007-06-29 | 2009-01-15 | Nec Electronics Corp | べき乗剰余演算器及びその制御方法 |
JP6973677B1 (ja) * | 2021-03-22 | 2021-12-01 | 富士電機株式会社 | 逆数算出方法、装置、およびプログラム |
JP2022146258A (ja) * | 2021-03-22 | 2022-10-05 | 富士電機株式会社 | 逆数算出方法、装置、およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP4541485B2 (ja) | 2010-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6567832B1 (en) | Device, method, and storage medium for exponentiation and elliptic curve exponentiation | |
JPH0117295B2 (ja) | ||
JPH02202267A (ja) | 符号化装置及び符号化方法 | |
CN113746620B (zh) | 同态加密方法、设备、介质及计算机程序产品 | |
CN112506880B (zh) | 数据处理方法及相关设备 | |
US8176398B2 (en) | DSL trellis encoding | |
US7480691B2 (en) | Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic | |
JPH09204296A (ja) | べき乗剰余演算方法及び装置 | |
US6807555B2 (en) | Modular arithmetic apparatus and method having high-speed base conversion function | |
JP2000330470A (ja) | べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 | |
JP3660075B2 (ja) | 除算装置 | |
JP5225115B2 (ja) | Naf変換装置 | |
US6138134A (en) | Computational method and apparatus for finite field multiplication | |
JP2004166274A (ja) | 有限体での基底変換方法及び基底変換装置 | |
JPH11224183A (ja) | 擬似乱数発生装置 | |
US6903663B2 (en) | Method for converting the binary representation of a number in a signed binary representation | |
KR102592708B1 (ko) | 로그 영역의 연산을 수행하도록 구성된 신경망 가속기 | |
JP3576155B2 (ja) | 乗算剰余演算器 | |
JP2699358B2 (ja) | デコーダ回路 | |
KR101775597B1 (ko) | 고속 모듈로 연산 장치 | |
JP2777265B2 (ja) | 高基数開平演算装置 | |
JP4720746B2 (ja) | 多値直交振幅変調信号の復調 | |
JP3106767B2 (ja) | 乗算方法及び乗算回路 | |
JPH10307710A (ja) | 剰余系演算方法及びその装置 | |
JPH0418681A (ja) | 画像縮小・拡大パターン生成回路 |
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 |