JP2000298665A - 演算アルゴリズム決定用データベースと演算アルゴリズム決定用データベース作成装置とプログラム記録媒体 - Google Patents

演算アルゴリズム決定用データベースと演算アルゴリズム決定用データベース作成装置とプログラム記録媒体

Info

Publication number
JP2000298665A
JP2000298665A JP11104685A JP10468599A JP2000298665A JP 2000298665 A JP2000298665 A JP 2000298665A JP 11104685 A JP11104685 A JP 11104685A JP 10468599 A JP10468599 A JP 10468599A JP 2000298665 A JP2000298665 A JP 2000298665A
Authority
JP
Japan
Prior art keywords
polynomial
algorithm
database
multiplication
determining
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.)
Withdrawn
Application number
JP11104685A
Other languages
English (en)
Inventor
Takuya Konya
拓弥 紺谷
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 JP11104685A priority Critical patent/JP2000298665A/ja
Publication of JP2000298665A publication Critical patent/JP2000298665A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】本発明は、多項式乗算の演算アルゴリズムの決
定に用いられる演算アルゴリズム決定用データベースを
作成する装置の提供を目的とする。 【解決手段】多項式の係数の取ることのできる値域情報
を入力する入力手段と、テスト用多項式の次数を設定し
て、入力手段の入力する値域情報に従う係数を発生する
ことでテスト用多項式を生成する生成手段と、多項式乗
算の演算アルゴリズムに従う複数の演算プログラムに対
して、テスト用多項式の乗算を指示することで、その演
算時間を取得する取得手段と、生成手段に対して設定次
数を指示しつつ、取得手段の取得する演算時間の大小関
係から、多項式の次数との関係で、どの演算アルゴリズ
ムに従う演算プログラムを用いることが多項式乗算の演
算時間の短縮に有利になるのかということを示す情報を
得てデータベースに登録する登録手段とを備えるように
構成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、多項式乗算の演算
アルゴリズムの決定に用いられる演算アルゴリズム決定
用データベースと、そのデータベースを作成する演算ア
ルゴリズム決定用データベース作成装置と、その装置の
実現に用いられるプログラムが格納されるプログラム記
録媒体とに関する。
【0002】従来より多項式の乗算は、数式処置ソフト
ウェアの機能において重要な位置を占めてきた。特に近
年は、インターネット等のディジタル通信技術の発展に
伴って注目されている情報の暗号化技術において、整数
係数の多項式の乗算が重要な役割を持つものであること
がわかってきている。
【0003】近年、暗号化の方式として主流になりつつ
あるのは、「楕円曲線暗号」と呼ばれる暗号化方式であ
る。これは、射影平面上の楕円曲線上の全ての点が群を
なすことに着目するとき、この群における離散対数問題
(「ある群の元、a,b∈<a>に対して、an =bと
なる整数nを求めよ」)の困難さに基づく暗号化方式で
ある。
【0004】楕円曲線とは、ある三次元方程式を満たす
点の集合である。楕円曲線暗号に用いられるのは、有限
体上の楕円曲線である。有限体とは、ある素数pによる
除算の余りで分類された整数のクラスがなす体である。
従って、計算機上で楕円曲線を取り扱うことは、整数係
数の多項式を取り扱うことに他ならない。
【0005】楕円曲線を定義する三次元方程式や素数p
というパラメータの選び方により、生成される暗号の強
度は著しく異なる。強い楕円曲線暗号を生成するパラメ
ータを決定する方法としては、様々なものが提案されて
いるが、未だ決定的な方式を確定するには至っていない
のが現状である。
【0006】そこで、計算機を用いた実験が必要とな
る。計算機上で楕円曲線を取り扱うことは、整数係数の
多項式を取り扱うことであるが、整数論で研究されてき
た理論によれば、そのような多項式の操作の大部分を、
多項式の乗算が占めることが判っている。即ち、多項式
の乗算を高速化することが、楕円曲線暗号のパラメータ
を効率よく決定するための鍵である、と言うことができ
る。
【0007】
【従来の技術】多項式乗算のアルゴリズムとして、従来
より、古典的算法、Karatsuba(カラツバ)法、FFT
(高速フーリエ変換)法という3つものが知られてい
る。
【0008】f(x),g(x) をn次の多項式とするなら
ば、これらの多項式乗算のアルゴリズムでは、このf
(x),g(x) を、 f(x) =a(x) xn/2 +b(x) g(x) =c(x) xn/2 +d(x) と変形する。 古典的算法 通常の筆算で行う算法である。再帰的に表現すれば、 f・g=a・c・xn +(a・d+b・c)xn/2 +b
・d なる演算を再帰的に行う算法である。この古典的算法で
は、1回の再帰につき、乗算4回、加算3回が必要とな
る。 Karatsuba法 再帰的に表現すれば、 f・g=a・c・xn +(a・c+b・d+(a−b)
(d−c))xn/2+b・d なる演算を再帰的に行う算法である。このKaratsuba法
では、1回の再帰につき、乗算3回、加算6回が必要と
なる。 FFT法 多項式の係数を1つのベクトルとみなせば、多項式の乗
算とは、それらのベクトルの畳み込みに他ならない。ベ
クトルの畳み込みは、フーリエ変換を用いて周波数領域
に移すことにより、要素毎の積に変換することができ
る。FFT法とは、FFT(正変換)を用いて係数ベク
トルを周波数領域に移し、要素毎の積を行った後、FF
T(逆変換)を用いて結果を時間領域に戻すことによ
り、畳み込み、すなわち多項式乗算を行う方式である。
【0009】この際使用されるFFTは、有限体に含ま
れる適当な「1のべき根」を用いて実行される、「有限
体上のFFT」である。
【0010】なお、計算の対象となるのは非常に大きな
整数であるが、装置で使用する変数に格納可能なビット
長を持つ、比較的小さな素数を標数とする幾つかの有限
体の元として、係る大きな整数を幾通りかに表現し、係
る幾通りかの元に対してFFTを実行し、その結果を中
国剰余定理により結合することにより、必要な結果を得
ることになる。
【0011】古典的算法、Karatsuba法、FFT法を比
較するに、計算量だけを単純に比較すれば、FFT法が
最も高速であり、次いでKaratsuba法、その次に古典的
算法の順になるのであるが、FFT法では、1のべき根
を計算したり、ベクトル要素の並び替え(ビットリバー
ス変換)を行ったりする際にオーバーヘッドが発生し、
Karatsuba法では、加算の回数が古典的算法の3回に比
べて6回に増えているので、実際の状況はもっと複雑で
ある。
【0012】経験的には、低次数の多項式に対しては古
典的算法が適し、中次数の多項式に対してはKaratsuba
法が適し、高次数の多項式に対してはFFT法が適して
いることが知られている。
【0013】これから、従来では、多項式乗算を実行す
るときには、この経験則に従って、低次数の多項式に対
しては古典的算法を使って多項式乗算を実行し、中次数
の多項式に対してはKaratsuba法を使って多項式乗算を
実行し、高次数の多項式に対してはFFT法を使って多
項式乗算を実行するようにしていた。
【0014】
【発明が解決しようとする課題】しかしながら、従来技
術では、古典的算法からKaratsuba法へ、Karatsuba法
からFFT法へと切り替える閾値を正確に把握していた
訳ではなく、これから、多項式乗算の高速化が図られて
いないという問題点があった。
【0015】この閾値は、多項式の次数のみならず、多
項式の係数のビット長や、有限体の標数や、使用する変
数の種類などによって複雑に変化することになる。
【0016】更に、Karatsuba法を使って途中まで再帰
的に多項式乗算を実行することで次数を減らし、その
後、古典的算法を使って再帰的に多項式乗算を実行する
ことも可能であり、このような場合には、この閾値は、
Karatsuba法の再帰回数と関連して一層複雑に変化する
ことになる。
【0017】本発明はかかる事情に鑑みてなされたもの
であって、多項式乗算の演算アルゴリズムの決定に用い
られる新たな演算アルゴリズム決定用データベースの提
供と、そのデータベースを作成する新たな演算アルゴリ
ズム決定用データベース作成装置の提供と、その装置の
実現に用いられるプログラムが格納される新たなプログ
ラム記録媒体の提供とを目的とする。
【0018】
【課題を解決するための手段】図1に本発明の原理構成
を図示する。
【0019】図中、1は本発明を具備する演算アルゴリ
ズム決定用データベースであって、多項式乗算の演算ア
ルゴリズムの決定に用いられるもの、2は本発明を具備
する演算アルゴリズム決定用データベース作成装置であ
って、演算アルゴリズム決定用データベース1を作成す
るもの、3は演算アルゴリズム決定用データベース作成
装置2の備える端末、4は演算アルゴリズム決定用デー
タベース1を操作するデータベース入出力端末である。
【0020】本発明の演算アルゴリズム決定用データベ
ース作成装置1は、演算アルゴリズム決定用データベー
ス1を作成するために、複数の演算プログラム20-i
(i=1〜n)と、入力手段21と、生成手段22と、
取得手段23と、登録手段24とを備える。
【0021】この演算プログラム20-iは、別々の演算
アルゴリズムに従って多項式乗算を実行したり、同一の
演算アルゴリズムに従いつつ別々の変数を用いて多項式
乗算を実行する。
【0022】入力手段21は、端末3から、多項式の係
数の取ることのできる値域情報を入力し、これに加え
て、多項式乗算に用いる演算プログラムの変数情報を入
力することがある。生成手段22は、テスト用多項式の
次数を設定して、入力手段21の入力した値域情報に従
う係数を発生することでテスト用多項式を生成する。
【0023】取得手段23は、各演算プログラム20-i
に対して、生成手段22の生成したテスト用多項式の乗
算を指示することで、その演算時間を取得する。この取
得手段23は、入力手段21が多項式乗算に用いる演算
プログラムの変数情報を入力するときには、その変数情
報の指定する変数を用いる演算プログラム20-iに対し
て、テスト用多項式の乗算を指示することになる。ま
た、この取得手段23は、演算アルゴリズムを途中で切
り替えていくことで演算時間の短縮を図る場合には、そ
の切り替え時点を変更設定しつつ、演算プログラム20
-iに対してテスト用多項式の乗算を指示することにな
る。
【0024】登録手段24は、取得手段23の取得した
演算時間の大小関係に変化が起こる場合には、そのとき
のテスト用多項式の次数と、その演算時間を境とする演
算アルゴリズムの識別子とを演算アルゴリズム設定用デ
ータベース1に登録し、変化が起こらない場合には、生
成手段22に対して、1つ大きな次数を持つテスト用多
項式の生成を指示する。この登録手段24は、取得手段
23が演算アルゴリズムを途中で切り替えていくときに
は、演算時間の短縮を実現するその切替情報について
も、演算アルゴリズム設定用データベース1に登録する
ことになる。
【0025】ここで、本発明の演算アルゴリズム決定用
データベース作成装置2の持つ機能は具体的にはプログ
ラムで実現されるものであり、このプログラムは、フロ
ッピィディスクなどに格納されたり、サーバなどのディ
スクなどに格納され、それらから演算アルゴリズム決定
用データベース作成装置2にインストールされてメモリ
上で動作することで、本発明を実現することになる。
【0026】このように構成される本発明の演算アルゴ
リズム決定用データベース作成装置2では、入力手段2
1が、多項式の係数の取ることのできる値域情報と、多
項式乗算に用いる演算プログラムの変数情報とを入力す
ると、生成手段22は、テスト用多項式の次数を設定し
て、その入力された値域情報に従う係数を発生すること
でテスト用多項式を生成する。
【0027】このテスト用多項式の生成を受けて、取得
手段23は、入力手段21の入力した変数情報の指定す
る変数を用いる各演算プログラム20-iに対して、生成
されたテスト用多項式の乗算を指示することで、その演
算時間を取得する。このとき、取得手段23は、演算ア
ルゴリズムを途中で切り替えていくことで演算時間の短
縮を図る場合には、その切り替え時点を変更設定しつ
つ、演算プログラム20-iに対してテスト用多項式の乗
算を指示していく。
【0028】この取得手段23の取得する演算時間を受
けて、登録手段24は、取得された演算時間の大小関係
に変化が起こる場合には、そのときのテスト用多項式の
次数と、その演算時間を境とする演算アルゴリズムの識
別子とを演算アルゴリズム決定用データベース1に登録
し、変化が起こらない場合には、生成手段22に対し
て、1つ大きな次数を持つテスト用多項式の生成を指示
する。このとき、取得手段23が演算アルゴリズムを途
中で切り替えていくときには、登録手段24は、演算時
間の短縮を実現するその切替情報についても、演算アル
ゴリズム決定用データベース1に登録していく。
【0029】このようにして、本発明の演算アルゴリズ
ム決定用データベース1には、多項式の係数の取ること
のできる値域情報と、多項式乗算に用いる演算プログラ
ムの変数情報とがこういう条件にあるときにおいて、多
項式の次数との関係で、どの演算アルゴリズムに従う演
算プログラムを用いることが多項式乗算の演算時間の短
縮に有利になるのかということを示す情報が登録される
ことになる。そして、演算アルゴリズムを途中で切り替
えていくことで演算時間の短縮を図る場合には、どこま
で演算処理を実行してから切り替えるのかという情報が
登録されることになる。
【0030】これから、データベース入出力端末4は、
多項式の係数の取ることのできる値域情報と、使用する
演算プログラムの変数情報とが指定されると、それを検
索キーにして演算アルゴリズム決定用データベース1を
検索することで、乗算対象となる多項式の次数との関係
で、最も高速に多項式乗算を実行する演算プログラムを
決定できるようになる。
【0031】
【発明の実施の形態】以下、実施の形態に従って本発明
を詳細に説明する。
【0032】図2に、本発明の一実施例を図示する。
【0033】この実施例に従う本発明の演算アルゴリズ
ム決定用データベース作成装置2は、演算装置30と、
計算手順ROM31と、乱数発生装置32と、記憶装置
33と、動作時間測定比較装置34とを備える。
【0034】この演算装置30は、多項式の係数である
整数を格納する変数として、固定小数点型と、単精度浮
動小数点型の仮数部と、倍精度浮動小数点型の仮数部と
が用意されることに対応して、固定小数点加算機/固定
小数点乗算機と、単精度浮動小数点加算機/単精度浮動
小数点乗算機と、倍精度浮動小数点加算機/倍精度浮動
小数点乗算機とを備える。
【0035】一方、計算手順ROM31は、図3に示す
ように、固定小数点用古典的算法演算プログラム310
と、単精度浮動小数点用古典的算法演算プログラム31
1と、倍精度浮動小数点用古典的算法演算プログラム3
12と、固定小数点用Karatsuba法演算プログラム32
0と、単精度浮動小数点用Karatsuba法演算プログラム
321と、倍精度浮動小数点用Karatsuba法演算プログ
ラム322と、固定小数点用FFT法演算プログラム3
30と、単精度浮動小数点用FFT法演算プログラム3
31と、倍精度浮動小数点用FFT法演算プログラム3
32と、データベース作成プログラム340とを展開す
る。
【0036】この固定小数点用古典的算法演算プログラ
ム310は、固定小数点型の変数に格納される係数を使
い、古典点算法により多項式乗算を実行する。単精度浮
動小数点用古典的算法演算プログラム311は、単精度
浮動小数点型の変数の仮数部に格納される係数を使い、
古典点算法により多項式乗算を実行する。倍精度浮動小
数点用古典的算法演算プログラム312は、倍精度浮動
小数点型の変数の仮数部に格納される係数を使い、古典
点算法により多項式乗算を実行する。
【0037】また、固定小数点用Karatsuba法演算プロ
グラム320は、固定小数点型の変数に格納される係数
を使い、Karatsuba法により多項式乗算を実行する。単
精度浮動小数点用Karatsuba法演算プログラム321
は、単精度浮動小数点型の変数の仮数部に格納される係
数を使い、Karatsuba法により多項式乗算を実行する。
倍精度浮動小数点用Karatsuba法演算プログラム322
は、倍精度浮動小数点型の変数の仮数部に格納される係
数を使い、Karatsuba法により多項式乗算を実行する。
【0038】また、固定小数点用FFT法演算プログラ
ム330は、固定小数点型の変数に格納される係数を使
い、FFT法により多項式乗算を実行する。単精度浮動
小数点用FFT法演算プログラム331は、単精度浮動
小数点型の変数の仮数部に格納される係数を使い、FF
T法により多項式乗算を実行する。倍精度浮動小数点用
FFT法演算プログラム332は、倍精度浮動小数点型
の変数の仮数部に格納される係数を使い、FFT法によ
り多項式乗算を実行する。
【0039】計算手順ROM31に展開されるデータベ
ース作成プログラム340は、これらの演算プログラム
を使って、図4に示すようなデータ構造を持つ演算アル
ゴリズム決定用データベース1を作成する。
【0040】すなわち、演算アルゴリズム決定用データ
ベース1は、図4に示すように、有限体の標数と係数の
ビット長と変数情報とを検索キーにして、その状態にお
いて、多項式の次数がn1 以下であるときには、古典的
算法に従って多項式乗算を実行することが演算時間を短
縮する上で有利であり、多項式の次数がn1 〜n2 にあ
るときには、最初にKaratsuba法に従って再帰的に多項
式乗算を実行して、残りのN回の再帰回数については、
古典的算法に従って再帰的に多項式乗算を実行すること
が演算時間を短縮する上で有利であり、多項式の次数が
2 以上であるときには、FFT法に従って多項式乗算
を実行することが演算時間を短縮する上で有利であると
いうことを管理するので、データベース作成プログラム
340は、これらの演算プログラムを使って、このよう
なデータ構造を持つ演算アルゴリズム決定用データベー
ス1を作成するのである。
【0041】ここで、図4では、説明の便宜上、有限体
の標数と係数のビット長と変数情報とに対応付けて、次
数n1 /再帰回数N/次数n2 を管理する構成を示して
いるが、多項式の次数がn1 以下であるときには古典的
算法を用い、多項式の次数がn1 〜n2 にあるときに
は、最初にKaratsuba法、残りN回の再帰回数について
は古典的算法を用い、多項式の次数がn2 以上であると
きにはFFT法を用いるということについても、使用す
る演算アルゴリズムの識別子の情報を使って管理してい
る。
【0042】図5ないし図7に、データベース作成プロ
グラム340の実行する処理フローの一実施例を図示す
る。次に、この処理フローに従って、本発明について詳
細に説明する。
【0043】データベース作成プログラム340は、有
限体の標数と係数のビット長と変数情報とを指定して、
演算アルゴリズム決定用データベース1へのデータ登録
要求が発行されると、図5ないし図7の処理フローに示
すように、先ず最初に、ステップ1で、この有限体の標
数と係数のビット長と変数情報とを入力する。
【0044】このとき入力する変数情報は、多項式の係
数を固定小数点型の変数に格納するのか、単精度浮動小
数点型の変数の仮数部に格納するのか、倍精度浮動小数
点型の変数の仮数部に格納するのを指定する。
【0045】また、このとき入力する有限体の標数は、
多項式の係数の取りうる値を規定する。例えば、標数が
“4”であるということは、この“4”で割り算したと
きの余りである“0”、“1”、“2”、“3”が多項
式の係数として取りうる値となることを規定する。
【0046】また、このとき入力する係数のビット長
は、有限体の標数の規定する係数のビット長を指定す
る。例えば、標数が“4”であるときに、係数のビット
長が2ビットであれば、標数“4”の指定する“0”/
“1”/“2”/“3”が多項式の係数として取りうる
値となるが、係数のビット長が1ビットとなると、この
内の“0”/“1”のみが多項式の係数として取りうる
値となる。すなわち、有限体の標数と係数のビット長と
は、多項式の係数の値域を指定することになる。
【0047】このようにして、ステップ1で、有限体の
標数と係数のビット長と変数情報とを入力すると、続い
て、ステップ2で、それらのデータが既に検索キーとし
て、演算アルゴリズム決定用データベース1に登録され
ているのか否かをチェックして、登録されていることを
判断するときは、何も処理を行わずに、そのまま処理を
終了する。
【0048】一方、この判断処理で、演算アルゴリズム
決定用データベース1に未だ登録されていないことを判
断するときには、ステップ3に進んで、変数nに初期値
“2”をセットする。
【0049】続いて、ステップ4で、乱数発生装置32
を使って、テスト用に生成するn次多項式f,gのn番
目の係数をランダムに生成することで、テスト用のn次
多項式を生成して、その生成した係数を入力された型
(変数情報の指定する型)に変換する。ここで、(n−
1)次以下の係数については、これまでの処理で生成し
ているので、それを使う。この構成を採ることで計算負
荷を削減できるようになる。
【0050】続いて、ステップ5で、入力された型の指
す古典的算法演算プログラムを用いて、生成したテスト
用多項式f,gの乗算処理を実行し、動作時間測定比較
装置34を使って、その計算時間TCを測定する。
【0051】すなわち、入力された型が固定小数点型で
あるときには、固定小数点用古典的算法演算プログラム
310を用いて、生成したテスト用多項式f,gの乗算
処理を実行して、その計算時間TCを測定する。また、
入力された型が単精度浮動小数点型であるときには、単
精度浮動小数点用古典的算法演算プログラム311を用
いて、生成したテスト用多項式f,gの乗算処理を実行
して、その計算時間TCを測定する。また、入力された
型が倍精度浮動小数点型であるときには、倍精度浮動小
数点用古典的算法演算プログラム312を用いて、生成
したテスト用多項式f,gの乗算処理を実行して、その
計算時間TCを測定するのである。
【0052】続いて、ステップ6で、生成したn次のテ
スト用多項式f,gの乗算処理をKaratsuba法で実行す
るときの再帰回数kを求める。n次多項式の乗算処理を
Karatsuba法で実行するときの再帰回数kは、「k=l
og2 n」で求まるので、これを求めるのである。続い
て、ステップ7で、変数Nに初期値“0”をセットす
る。
【0053】続いて、ステップ8で、最初に、入力され
た型の指すKaratsuba法演算プログラムを用い、再帰回
数をk回としてテスト用多項式f,gの乗算処理を実行
し、その後、入力された型の指す古典的算法演算プログ
ラムを用い、再帰回数をN回として残りの乗算処理を実
行して、動作時間測定比較装置34を使って、その計算
時間TKを測定する。
【0054】すなわち、入力された型が固定小数点型で
あるときには、最初に、固定小数点用Karatsuba法演算
プログラム320を用い、再帰回数をk回としてテスト
用多項式f,gの乗算処理を実行し、その後、固定小数
点用古典的算法演算プログラム310を用い、再帰回数
をN回として残りの乗算処理を実行して、その計算時間
TKを測定する。
【0055】また、入力された型が単精度浮動小数点型
であるときには、最初に、単精度浮動小数点用Karatsu
ba法演算プログラム321を用い、再帰回数をk回とし
てテスト用多項式f,gの乗算処理を実行し、その後、
単精度浮動小数点用古典的算法演算プログラム311を
用い、再帰回数をN回として残りの乗算処理を実行し
て、その計算時間TKを測定する。
【0056】また、入力された型が倍精度浮動小数点型
であるときには、最初に、倍精度浮動小数点用Karatsu
ba法演算プログラム322を用い、再帰回数をk回とし
てテスト用多項式f,gの乗算処理を実行し、その後、
倍精度浮動小数点用古典的算法演算プログラム312を
用い、再帰回数をN回として残りの乗算処理を実行し
て、その計算時間TKを測定するのである。
【0057】続いて、ステップ9(図6の処理フロー)
で、動作時間測定比較装置34を使って、ステップ5で
測定した計算時間TCと、ステップ8で測定した計算時
間TKとの大小関係を比較して、計算時間TKの方が計
算時間TCよりも大きいことを判断するときには、ステ
ップ10に進んで、再帰回数kが“1”よりも大きいの
か否かを判断して、大きいことを判断するときには、ス
テップ11に進んで、再帰回数kを1つ小さくするとと
もに、変数Nの値を1つ大きくしてから、ステップ8に
戻る。
【0058】すなわち、Karatsuba法演算プログラムの
再帰回数を1つ減らし、その分、古典的算法演算プログ
ラムの再帰回数を1つ増やしてみて、その結果により求
まる計算時間TKが古典的算法演算プログラムのみによ
る計算時間TCよりも小さくなるのか否かをチェックし
ていくのである。
【0059】一方、ステップ10で、再帰回数kが
“1”に到達したことを判断するときには、ステップ1
2に進んで、変数nの値を1つ大きくしてから、ステッ
プ4に戻っていく。すなわち、Karatsuba法演算プログ
ラムの再帰回数が1回となっても、計算時間TKが古典
的算法演算プログラムのみによる計算時間TCよりも大
きいときには、テスト用多項式f,gの次数を大きくし
ていくように処理するのである。
【0060】このようにして、ステップ4ないしステッ
プ12の処理を繰り返していくことで、ステップ9で、
計算時間TKが計算時間TCよりも小さくなったことを
判断すると、ステップ13に進んで、演算アルゴリズム
決定用データベース1に対して、この時点の変数nの値
をn1 として登録するとともに、この時点の変数Nの値
を登録する。
【0061】すなわち、このようにして求まる次数n1
よりも小さい次数のときには、古典的算法演算プログラ
ムのみによる計算時間TCの方が、Karatsuba法演算プ
ログラムと古典的算法演算プログラムとを組み合わせた
計算時間TKよりも小さくなるので、古典的算法演算プ
ログラムのみにより多項式乗算を実行することを指示す
べく、演算アルゴリズム決定用データベース1に対し
て、この次数n1 を登録するのである。
【0062】そして、このようにして求まる次数n1
りも大きい次数のときには、最初の「log2 n−N」
回の再帰回数についてはKaratsuba法演算プログラムで
行い、残りのN回の再帰回数については古典的算法演算
プログラムで行うときの計算時間TKの方が、古典的算
法演算プログラムのみによる計算時間TCよりも小さく
なるので、最初の「log2 n−N」回の再帰回数につ
いてはKaratsuba法演算プログラムで行い、残りのN回
の再帰回数については古典的算法演算プログラムで多項
式乗算を実行することを指示すべく、演算アルゴリズム
決定用データベース1に対して、この再帰回数Nを登録
するのである。
【0063】続いて、ステップ14で、変数nの値を1
つ大きくする。続いて、ステップ15で、乱数発生装置
32を使って、テスト用に生成するn次多項式f,gの
n番目の係数をランダムに生成することで、テスト用の
n次多項式を生成して、その生成した係数を入力された
型に変換する。ここで、(n−1)次以下の係数につい
ては、これまでの処理で生成しているので、それを使
う。
【0064】続いて、ステップ16で、「k=log2
n」の算出式に従って、生成したn次のテスト用多項式
f,gの乗算処理をKaratsuba法で実行するときの再帰
回数kを求める。続いて、ステップ17で、この算出し
た再帰回数kと、演算アルゴリズム決定用データベース
1に登録した再帰回数Nとの差分値を求めて、これを新
たな再帰回数kとする。
【0065】続いて、ステップ18(図7の処理フロ
ー)で、最初に、入力された型の指すKaratsuba法演算
プログラムを用い、再帰回数をk回としてテスト用多項
式f,gの乗算処理を実行し、その後、入力された型の
指す古典的算法演算プログラムを用い、再帰回数をN回
として残りの乗算処理を実行して、動作時間測定比較装
置34を使って、その計算時間TKを測定する。
【0066】すなわち、入力された型が固定小数点型で
あるときには、最初に、固定小数点用Karatsuba法演算
プログラム320を用い、再帰回数をk回としてテスト
用多項式f,gの乗算処理を実行し、その後、固定小数
点用古典的算法演算プログラム310を用い、再帰回数
をN回として残りの乗算処理を実行して、その計算時間
TKを測定する。
【0067】また、入力された型が単精度浮動小数点型
であるときには、最初に、単精度浮動小数点用Karatsu
ba法演算プログラム321を用い、再帰回数をk回とし
てテスト用多項式f,gの乗算処理を実行し、その後、
単精度浮動小数点用古典的算法演算プログラム311を
用い、再帰回数をN回として残りの乗算処理を実行し
て、その計算時間TKを測定する。
【0068】また、入力された型が倍精度浮動小数点型
であるときには、最初に、倍精度浮動小数点用Karatsu
ba法演算プログラム322を用い、再帰回数をk回とし
てテスト用多項式f,gの乗算処理を実行し、その後、
倍精度浮動小数点用古典的算法演算プログラム312を
用い、再帰回数をN回として残りの乗算処理を実行し
て、その計算時間TKを測定するのである。
【0069】ここで、ステップ18で、演算アルゴリズ
ム決定用データベース1に登録した次数n1 より大きい
次数を持つ多項式の乗算処理をKaratsuba法演算プログ
ラムを用いて実行する場合に、最後のN回の再帰回数に
ついては古典的算法演算プログラムを用いる構成を採っ
ているのは、その次数まで次数が低下すると、その後は
古典的算法演算プログラムを使った方が早いからであ
る。
【0070】続いて、ステップ19で、入力された型の
指すFFT法演算プログラムを用いて、生成したテスト
用多項式f,gの乗算処理を実行し、動作時間測定比較
装置34を使って、その計算時間TFを測定する。
【0071】すなわち、入力された型が固定小数点型で
あるときには、固定小数点用FFT法演算プログラム3
30を用いて、生成したテスト用多項式f,gの乗算処
理を実行して、その計算時間TFを測定する。また、入
力された型が単精度浮動小数点型であるときには、単精
度浮動小数点用FFT法演算プログラム331を用い
て、生成したテスト用多項式f,gの乗算処理を実行し
て、その計算時間TFを測定する。また、入力された型
が倍精度浮動小数点型であるときには、倍精度浮動小数
点用FFT法演算プログラム332を用いて、生成した
テスト用多項式f,gの乗算処理を実行して、その計算
時間TFを測定するのである。
【0072】更に、このステップ19では、FFT演算
に必要となる1のべき根が演算アルゴリズム決定用デー
タベース1に保存されている場合には、それを利用し、
保存されていない場合には、それを作成して演算アルゴ
リズム決定用データベース1に保存することで、FFT
演算の高速化を図るように処理する。
【0073】続いて、ステップ20で、動作時間測定比
較装置34を使って、ステップ18で測定した計算時間
TKと、ステップ19で測定した計算時間TFとの大小
関係を比較して、計算時間TFの方が計算時間TKより
も大きいことを判断するときには、ステップ14に戻
る。
【0074】このようにして、ステップ14ないしステ
ップ20の処理を繰り返していくことで、ステップ20
で、計算時間TFが計算時間TKよりも小さくなったこ
とを判断すると、ステップ21に進んで、演算アルゴリ
ズム決定用データベース1に対して、この時点の変数n
の値をn2 として登録する。
【0075】すなわち、このようにして求まる次数n2
よりも大きい次数のときには、FFT法演算プログラム
のみによる計算時間TFの方が、Karatsuba法演算プロ
グラムと古典的算法演算プログラムとを組み合わせた計
算時間TKよりも小さくなるので、FFT法演算プログ
ラムにより多項式乗算を実行することを指示すべく、演
算アルゴリズム決定用データベース1に対して、この次
数n2 を登録するのである。
【0076】このようにして、データベース作成プログ
ラム340は、有限体の標数と係数のビット長と変数情
報とを指定して、演算アルゴリズム決定用データベース
1へのデータ登録要求が発行されると、その指定される
状態において、多項式の次数がn1 以下であるときに
は、古典的算法に従って多項式乗算を実行することが演
算時間を短縮する上で有利であり、多項式の次数がn1
〜n2 にあるときには、最初にKaratsuba法に従って再
帰的に多項式乗算を実行して、残りのN回の再帰回数に
ついては、古典的算法に従って再帰的に多項式乗算を実
行することが演算時間を短縮する上で有利であり、多項
式の次数がn2 以上であるときには、FFT法に従って
多項式乗算を実行することが演算時間を短縮する上で有
利であるということを示す情報を生成して、それを演算
アルゴリズム決定用データベース1に登録していくので
ある。
【0077】このようなデータ構造の演算アルゴリズム
決定用データベース1が用意されるので、データベース
入出力端末4は、実行すべき多項式乗算で指定される、
有限体の標数と係数のビット長と変数情報とが与えられ
ると、それを検索キーにしてこの演算アルゴリズム決定
用データベース1を検索することで、どの演算アルゴリ
ズムに従う演算プログラムを用いてその多項式乗算を実
行することがよいのかを知ることができるようになる。
【0078】この実施例の構成を採るときに、多項式の
係数を格納する際に、変数の種類に依らないある一定の
ビット長を定め、整数である係数をそのビット数毎に区
切って変数に格納することで、異なる変数間の変換を容
易にして計算手順の簡易化を図る構成を採ることが好ま
しい。
【0079】また、「k=log2 n」で算出される再
帰回数については、次の登録処理の際にも必要となるこ
とから、この値を演算アルゴリズム決定用データベース
1に格納して再利用していく構成を採ることで、計算効
率の向上を図ることが好ましい。
【0080】また、大整数を、それらの積が十分大きな
整数となる、複数の比較的小さな素数を標数となる有限
体の元として幾通りかに表現し、係る元に対してFFT
を実行し、それにより得られる結果を中国剰余定理によ
り結合することで、大整数に対するFFTの結果を得る
ようにする構成を採ることで、計算速度の向上を図るこ
とが好ましい。
【0081】また、実施例では説明しなかったが、乱数
発生装置32を記憶装置33に直接接続することで、高
速に多項式の係数を発生させて高速に記憶装置33に配
置する構成を採ることが好ましい。更に、この乱数発生
装置32を有限体標数/係数ビット長を入力する入力装
置に直接接続することで、データの転送に関する負荷を
削減する構成を採ることが好ましい。
【0082】また、実施例では説明しなかったが、動作
時間測定比較装置34を演算装置30に直接接続するこ
とで、計算時間の測定の精度を上げる構成を採ることが
好ましい。
【0083】また、実施例では説明しなかったが、計算
手順ROM31を演算装置30に直接接続することで、
演算装置30の実行性能を向上させる構成を採ることが
好ましい。
【0084】また、実施例では説明しなかったが、動作
時間測定比較装置34を演算アルゴリズム決定用データ
ベース1に直接接続することで、演算アルゴリズム決定
用データベース1への入力に関する負荷を削減する構成
を採ることが好ましい。
【0085】また、実施例では説明しなかったが、記憶
装置33を演算アルゴリズム決定用データベース1に直
接接続することで、データの入出力に関する負荷を削減
する構成を採ることが好ましい。
【0086】また、実施例では説明しなかったが、乱数
を発生させる際に、乱数発生に適している固定小数点演
算を用いて乱数を発生させ、その後、指定された別の型
の変数に変換することにより乱数発生に関する負荷を削
減する構成を採ることが好ましい。
【0087】図示実施例に従って本発明を説明したが、
本発明はこれに限定されるものではない。例えば、実施
例では、多項式乗算の演算アルゴリズムとして、古典的
算法とKaratsuba法とFFT法という3つを想定した
が、本発明は、この3つの暗算アルゴリズムに限定され
るものではない。
【0088】また、実施例では、有限体標数と係数ビッ
ト長と変数情報とを検索キーとする演算アルゴリズム決
定用データベース1を作成したが、有限体標数と係数ビ
ット長とで規定される係数の値域情報のみを検索キーと
する演算アルゴリズム決定用データベース1を作成する
ことでも十分実用性がある。
【0089】
【発明の効果】以上説明したように、本発明によれば、
多項式乗算のアルゴリズム間の閾値を組織的に決定し
て、その結果をデータベースに蓄積することができるよ
うになることから、いかなる条件の多項式乗算に対して
も、常に最適なアルゴリズムを選択することが可能にな
ることで、多項式乗算の計算効率を向上できるようにな
る。これから、楕円曲線暗号の強度の向上に大きく寄与
できるようになる。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明の一実施例である。
【図3】プログラム構成の一実施例である。
【図4】演算アルゴリズム決定用データベースの一実施
例である。
【図5】データベース作成プログラムの処理フローの一
実施例である。
【図6】データベース作成プログラムの処理フローの一
実施例である。
【図7】データベース作成プログラムの処理フローの一
実施例である。
【符号の説明】
1 演算アルゴリズム決定用データベース 2 演算アルゴリズム決定用データベース作成装置 3 端末 4 データベース入出力端末 20 演算プログラム 21 入力手段 22 生成手段 23 取得手段 24 登録手段

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 多項式乗算の演算アルゴリズムの決定に
    用いられる演算アルゴリズム決定用データベースであっ
    て、 多項式の係数の取ることのできる値域情報を検索キーに
    して、多項式の次数との関係で、どの演算アルゴリズム
    に従う演算プログラムを用いることが多項式乗算の演算
    時間の短縮に有利になるのかということを示す情報を管
    理するように構成されることを、 特徴とする演算アルゴリズム決定用データベース。
  2. 【請求項2】 多項式乗算の演算アルゴリズムの決定に
    用いられる演算アルゴリズム決定用データベースであっ
    て、 多項式の係数の取ることのできる値域情報と、多項式乗
    算に用いる演算プログラムの変数情報とを検索キーにし
    て、多項式の次数との関係で、どの演算アルゴリズムに
    従う演算プログラムを用いることが多項式乗算の演算時
    間の短縮に有利になるのかということを示す情報を管理
    するように構成されることを、 特徴とする演算アルゴリズム決定用データベース。
  3. 【請求項3】 請求項1又は2記載の演算アルゴリズム
    決定用データベースにおいて、 演算アルゴリズムを途中で切り替えていくことで演算時
    間の短縮を図る場合には、どこまで演算処理を実行して
    から切り替えるのかという情報についても管理するよう
    に構成されることを、 特徴とする演算アルゴリズム決定用データベース。
  4. 【請求項4】 多項式乗算の演算アルゴリズムの決定に
    用いられるデータベースを作成する演算アルゴリズム決
    定用データベース作成装置であって、 多項式の係数の取ることのできる値域情報を入力する入
    力手段と、 テスト用多項式の次数を設定して、上記入力手段の入力
    する値域情報に従う係数を発生することで該テスト用多
    項式を生成する生成手段と、 多項式乗算の演算アルゴリズムに従う複数の演算プログ
    ラムに対して、上記テスト用多項式の乗算を指示するこ
    とで、その演算時間を取得する取得手段と、 上記生成手段に対して設定次数を指示しつつ、上記取得
    手段の取得する演算時間の大小関係から、多項式の次数
    との関係で、どの演算アルゴリズムに従う演算プログラ
    ムを用いることが多項式乗算の演算時間の短縮に有利に
    なるのかということを示す情報を得てデータベースに登
    録する登録手段とを備えることを、 特徴とする演算アルゴリズム決定用データベース作成装
    置。
  5. 【請求項5】 多項式乗算の演算アルゴリズムの決定に
    用いられるデータベースを作成する演算アルゴリズム決
    定用データベース作成装置の実現に用いられるプログラ
    ムが格納されるプログラム記録媒体であって、 多項式の係数の取ることのできる値域情報を入力する入
    力処理と、 テスト用多項式の次数を設定して、上記入力処理の入力
    する値域情報に従う係数を発生することで該テスト用多
    項式を生成する生成処理と、 多項式乗算の演算アルゴリズムに従う複数の演算プログ
    ラムに対して、上記テスト用多項式の乗算を指示するこ
    とで、その演算時間を取得する取得処理と、 上記生成処理に対して設定次数を指示しつつ、上記取得
    処理の取得する演算時間の大小関係から、多項式の次数
    との関係で、どの演算アルゴリズムに従う演算プログラ
    ムを用いることが多項式乗算の演算時間の短縮に有利に
    なるのかということを示す情報を得てデータベースに登
    録する登録処理とをコンピュータに実行させるプログラ
    ムが格納されることを、 特徴とするプログラム記録媒体。
JP11104685A 1999-04-13 1999-04-13 演算アルゴリズム決定用データベースと演算アルゴリズム決定用データベース作成装置とプログラム記録媒体 Withdrawn JP2000298665A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11104685A JP2000298665A (ja) 1999-04-13 1999-04-13 演算アルゴリズム決定用データベースと演算アルゴリズム決定用データベース作成装置とプログラム記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11104685A JP2000298665A (ja) 1999-04-13 1999-04-13 演算アルゴリズム決定用データベースと演算アルゴリズム決定用データベース作成装置とプログラム記録媒体

Publications (1)

Publication Number Publication Date
JP2000298665A true JP2000298665A (ja) 2000-10-24

Family

ID=14387336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11104685A Withdrawn JP2000298665A (ja) 1999-04-13 1999-04-13 演算アルゴリズム決定用データベースと演算アルゴリズム決定用データベース作成装置とプログラム記録媒体

Country Status (1)

Country Link
JP (1) JP2000298665A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007279836A (ja) * 2006-04-03 2007-10-25 Univ Of Tsukuba 数値計算アルゴリズム性能表示装置および数値計算アルゴリズム性能表示方法
EP4030357A1 (en) 2021-01-14 2022-07-20 Fujitsu Limited Information processing program, information processing method, and information processing device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007279836A (ja) * 2006-04-03 2007-10-25 Univ Of Tsukuba 数値計算アルゴリズム性能表示装置および数値計算アルゴリズム性能表示方法
JP4576535B2 (ja) * 2006-04-03 2010-11-10 国立大学法人 筑波大学 収束求解アルゴリズム性能表示装置および収束求解アルゴリズム性能表示方法
EP4030357A1 (en) 2021-01-14 2022-07-20 Fujitsu Limited Information processing program, information processing method, and information processing device

Similar Documents

Publication Publication Date Title
Liu et al. Efficient ring-LWE encryption on 8-bit AVR processors
JP5378579B2 (ja) フォールディングを用いるモジュール削減
Sarbishei et al. Analytical optimization of bit-widths in fixed-point LTI systems
Kumm et al. Optimization of constant matrix multiplication with low power and high throughput
JP7292297B2 (ja) 確率的丸めロジック
KR100744216B1 (ko) 계산 장치 및 방법과 컴퓨터 프로그램 저장 매체
JP3551113B2 (ja) 除算器
JP2004519017A (ja) 係数乗算するための方法および装置
Blackburn Fast rational interpolation, Reed-Solomon decoding, and the linear complexity profiles of sequences
Brisebarre et al. A lattice basis reduction approach for the design of finite wordlength FIR filters
JP2000298665A (ja) 演算アルゴリズム決定用データベースと演算アルゴリズム決定用データベース作成装置とプログラム記録媒体
JP5175983B2 (ja) 演算装置
CN108897524B (zh) 除法函数处理电路、方法、芯片以及系统
CN114594925A (zh) 适用于sm2加密运算的高效模乘电路及其运算方法
CN110275693B (zh) 用于随机计算的多加数加法电路
JPH11259454A (ja) フーリエ変換装置
Rajaby et al. Hardware design and implementation of high-efficiency cube-root of complex numbers
CN111580784B (zh) 一种幂函数计算装置及幂函数计算方法
CN112286490B (zh) 一种循环迭代乘加运算的硬件架构及方法
WO2023199440A1 (ja) 符号付き整数の剰余積計算装置、符号付き整数の剰余積計算方法及び、プログラム
Maharana et al. Design and Evaluation of FPGA-Optimized Bangladesh Asymmetrical and Symmetrical Five-Term Karatsuba Multipliers
Hussain et al. An area-efficient and high throughput hardware implementation of exponent function
JP5366758B2 (ja) パラメータ設定装置、パラメータ設定方法、プログラム
JP7120885B2 (ja) 半導体装置、および除算方法
JPH08202533A (ja) 除算処理装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060704