JP4354609B2 - 有限体上の連立方程式求解装置及び逆元演算装置 - Google Patents
有限体上の連立方程式求解装置及び逆元演算装置 Download PDFInfo
- Publication number
- JP4354609B2 JP4354609B2 JP2000140886A JP2000140886A JP4354609B2 JP 4354609 B2 JP4354609 B2 JP 4354609B2 JP 2000140886 A JP2000140886 A JP 2000140886A JP 2000140886 A JP2000140886 A JP 2000140886A JP 4354609 B2 JP4354609 B2 JP 4354609B2
- Authority
- JP
- Japan
- Prior art keywords
- equation
- coefficient
- conversion
- mod
- group
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/726—Inversion; Reciprocal calculation; Division of elements of a finite field
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/12—Simultaneous equations, e.g. systems of linear equations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、情報セキュリテイ技術としての暗号技術及び誤り訂正技術に関し、特に、拡大体及び連立方程式を用いる演算技術に関する。
【0002】
【従来の技術】
近年、秘密通信方式やデジタル署名方式による通信が用いられるようになっている。
秘密通信方式とは、特定の通信相手以外に通信内容を漏らすことなく通信を行なう方式である。またデジタル署名方式とは、通信相手に通信内容の正当性を示したり、本人であることを証明する通信方式である。この署名方式には公開鍵暗号方式と呼ばれる暗号方式を用いる。公開鍵暗号方式は通信相手が多数の時、通信相手ごとに異なる暗号鍵を容易に管理するための方式であり、多数の通信相手と通信を行なうのに不可欠な基盤技術である。
【0003】
公開鍵暗号方式では、暗号化鍵と復号化鍵とが異なり、復号化鍵を秘密にし、暗号化鍵を公開する。この公開鍵暗号方式の安全性の根拠として離散対数問題が用いられる。離散対数問題には代表的なものとして、有限体上定義されるもの及び楕円曲線上定義されるものがある。離散対数問題については、「A Course in Number theory and Cryptography」(Neal Koblitz著、Springer-Verlag,1987) に詳しく述べられている。
(楕円曲線上の離散対数問題)
楕円曲線上の離散対数問題とは、
Eを有限体GF(q)(q=pn 、pは素数、nは正の整数)上定義された楕円曲線とし、楕円曲線Eの位数が大きな素数で割り切れるとき、楕円曲線E上の元Gをベースポイントとする。このとき、楕円曲線E上の与えられた元Yに対して、
Y=x*G
となる整数xが存在するならば、xを求めよ、という問題である。
【0004】
なお、この明細書において、演算子*は、楕円曲線上の加算を意味し、x*Gは、楕円曲線上でGをx回加算することを示す。また、GF(q)はGF(p)の拡大体である。拡大体については、「現代暗号」(岡本龍明、山本博資著、シリーズ/情報科学の数学、産業図書、1997、26〜28ページ)に詳しく述べられている。
(従来例1:楕円曲線上の離散対数問題を応用するエルガマル署名)
次に、楕円曲線上の離散対数問題を応用するエルガマル署名について、図9に示すシーケンス図を用いて説明する。
【0005】
ユーザAが使用する装置(以下、ユーザA310と称する。)、管理センタにおいて使用される装置(以下、管理センタ320と称する。)及びユーザBが使用する装置(以下、ユーザB330と称する。)は、それぞれネットワークで接続されている。
pを素数、q=pn 、nは正の整数、有限体GF(q)上の楕円曲線をEとする。楕円曲線EのベースポイントをGとし、Gの位数をrとする。すなわち、rは、
r*G=0
を満たす最小の正整数である。ここで、0は楕円曲線の群の加算における零元である。
【0006】
(1)管理センタ320による公開鍵の生成
管理センタ320は、ユーザA310からユーザA310が秘密に所有する秘密鍵xA を予め通知されており(ステップS1)、秘密鍵xA を用いて、次の式より、ユーザA310の公開鍵YA を作成する(ステップS2)。
YA =xA *G
その後、管理センタ320は、有限体GF(q)、楕円曲線E及びベースポイントGをシステムパラメータとして公開し、ユーザB330にユーザA310の公開鍵YA を公開する(ステップS3〜S4)。
【0007】
(2)ユーザA310による署名生成
ユーザA310は、乱数kを生成する(ステップS5)。次に、ユーザA310は、
R1 =(rx 、ry )=k*G
を計算し(ステップS6)、
s×k=m+rx ×xA mod r
から、sを計算する(ステップS7)。ここで、mは、ユーザA310がユーザB330へ送信するメッセージである。
【0008】
さらに、ユーザA310は、得られた(R1 、s)を署名としてメッセージmとともに、ユーザB330へ送信する(ステップS8)。
(3)ユーザB330による署名検証
ユーザB330は、
s*R1 =m*G+rx *YA
が成立するかどうか判定することにより、送信者であるユーザA310の身元を確認する(ステップS9)。これは、
となることから明らかである。
【0009】
上記に示した楕円曲線上の離散対数問題を応用するエルガマル署名によるデジタル署名方式における公開鍵の生成、署名生成及び署名検証のそれぞれにおいて、楕円曲線上の点の冪倍の演算が行われる。
楕円曲線の演算公式については、
「Efficient elliptic curve exponentiation 」(Miyaji, Ono, and Cohen著、 Advances in cryptology-proceedings of ICICS'97, Lecture notes in computer science, 1997, Springer-verlag, 282-290.)に詳しく説明されている。
【0010】
楕円曲線の方程式を
y2 =x3 +a×x+b
とする。楕円曲線上の任意の点Pの座標を(x1 、y1 )とする。この座標はアフィン座標と呼ばれている。
楕円曲線上における加算には、有限体GF(q)の逆元演算の処理を含むことが知られている。上記の論文では、射影座標と呼ばれる座標に触れているが、これは、
(x1 、y1 )→ (x1 、y1 、1)
のように、2項組座標を3項組座標に対応づけるものである。3項組座標の場合、楕円曲線の加算には、有限体GF(q)の逆元演算の処理が含まれない。一般に有限体の逆元演算は、計算時間が長いため、3項組座標がよく用いられる。
【0011】
逆に、
(X、Y、Z)→ (X/Z、Y/Z)
のように、2項組座標は3項組座標に対応づけられる。ここで、逆元演算が必要となる。
上記のエルガマル署名のステップS6においては、2項組座標を3項組座標に変換し、3項組座標により楕円曲線上の加算を行い、加算結果の3項組座標をアフィン座標に変換する。したがって、3項組座標からアフィン座標への変換において、逆元演算が必要になる。
(従来例2:拡大体上の逆元演算)
以下において、従来の拡大体GF(q)(q=pn 、pは素数、nは正の整数)の逆元演算について説明する。
【0012】
ここで、簡単のため、拡大体GF(q)の生成多項式をf(g)=gn −βとし、生成多項式の根をαとし、生成多項式の入力となるGF(q)の元を
x=x0 +x1 ×α+・・・+xn-1 ×αn-1 とする。
(1)ステップ1
GF(q)の元xを基にして、yi (0≦i≦n−1)に関する以下の連立方程式を生成する。
【0013】
(2)ステップ2
生成された連立方程式の解yk (k=0、1、・・・、n−1)を求める。
(3)ステップ3
求めた解yk (k=0、1、・・・、n−1)を
逆元I=y0 +y1 α+・・・+yn-1 αn-1 に変換する。
【0014】
このようにして、拡大体GF(q)上の元の逆元が求められる。
次に、上記のようにして逆元演算ができる根拠について説明する。
上記の逆元Iと元xについて、
xI=1 mod f(g)
という関係を満たすとき、
であり、
αn =β mod f(g)
であるので、
であり、αの降冪の順に整理すると
である。
【0015】
ここで、xIが1に等しいので、上記ステップ1において生成された連立方程式を導くことができる。
したがって、拡大体GF(q)の逆元を求めることは、基礎体GF(p)上の連立方程式を解くことと等しい。
また、上記例では、gn −βの形の生成多項式を扱ったが、一般の生成多項式に対しても同様の操作により、方程式を生成できる。
(従来例3:基礎体GF(p)上の連立方程式の解法)
以下において、基礎体GF(p)上の連立方程式の従来の解法について説明する。この解法は、ガウスの消去法と呼ばれる。ガウスの消去法については、「コンピュータによる数値計算」(水上孝一編著、プログラミング入門シリーズ、朝倉書店、1985、76〜82ページ)に詳しく述べられている。
【0016】
xk (k=0、1、2、・・・、n−1)に対する連立方程式を、
a11x0 +a12x1 +・・・+a1nxn-1 =b1
a21x0 +a22x1 +・・・+a2nxn-1 =b2
・・・
an1x0 +an2x1 +・・・+annxn-1 =bn
とし、この解を求める。
(ステップ1)
行列M、ベクトルvを以下のようにおく。
【0017】
【数7】
【0018】
また、ベクトルXを次のようにおく。
【0019】
【数8】
【0020】
上記の連立方程式は、次のように表現できる。
MX=v
行列Mを三角化するように、行列M、ベクトルvを変換し、それぞれ行列M’、ベクトルv’を生成する。ここで、三角化とは、行列の対角成分より下の成分がすべて0となるような変換をいう。また、このような行列を上三角行列と呼ぶ。
【0021】
次に上記の従来の三角化の手順について、図10に示すフローチャートを用いて説明する。
カウンタjに1を設定する(ステップS21)。次に、ajjの逆元Ij を算出し(ステップS22)、ajjに1を設定し(ステップS23)、j+1≦k≦nに対して、ajk=ajk×Ij 、bj =bj ×Ij とする(ステップS24)。次にカウンタi=カウンタj+1とする(ステップS25)。
【0022】
aijに0を設定し(ステップS26)、j+1≦k≦nに対して、aik=aik−ajj×ajkとし(ステップS27)、bi =bi −aij×bj とする(ステップS28)。次に、i=nであるか否かを判断し、i=nでなければ(ステップS29)、カウンタiに1を加算して(ステップS31)、制御をステップS26へ戻す。i=nであれば(ステップS29)、j=nであるか否かを判断し、j=nでなければ(ステップS30)、カウンタjに1を加算して(ステップS32)、制御をステップS22へ戻す。j=nであれば(ステップS30)、処理を終了する。
【0023】
このようにして得られた行列をM’、ベクトルをv’とする。ここで、行列M’の対角成分は1であり、行列M’の対角成分より下の成分がすべて0である。連立方程式M’X=v’と、連立方程式MX=vとは、同値の関係を有する。ここで、
【0024】
【数9】
【0025】
とする。
(ステップ2)
生成された行列M’、ベクトルv’を用いて、次に示すようにして、連立方程式M’X=v’の解を求める。
カウンタcにn−1、・・・、1、0の値をこの順に設定し、カウンタcの各値について、
c=n−1のとき、 yc = dc+1
c≠n−1のとき、
【0026】
【数10】
【0027】
を算出する。
(具体例)
従来例3を適用する具体例を以下に示す。
なお、この具体例は、三角化変換を分かりやすく説明するための例である。暗号通信システムやデジタル署名システムにおいて実際に使用される例ではないので注意を要する。
【0028】
素数p=31、生成多項式f(g)=g5 −2、GF(q)の元x=5α4 +29α3 +6α2 +19α+17とする。
であるので、連立方程式は、図11(a)に示すようになる。係数行列301は、5行5列の成分からなり、定数ベクトル302は、5個の成分からなる。
【0029】
この連立方程式において、一次方程式
17x0 +10x1 +27x2 +12x3 +7x4 =1
を変換を行う際に軸となる軸方程式と呼び、この連立方程式の他の方程式を変換の対象となる対象方程式と呼ぶ。
次に、逆元演算を行う。
【0030】
1/17 mod 31 = 11
続けて、次の演算を行う。
従って、連立方程式は、図11(b)に示すようになる。ここで、係数行列311の1列1行の成分は、1となる。この図の係数行列311及び定数ベクトル312において、枠で囲まれた数字は、図11(a)に示す係数行列301及び定数ベクトル302から変化した係数を示す。以下の図においても同様である。
【0031】
ここで、上記の逆元演算1/17 mod 31 = 11の詳細について以下に説明する。
この逆元演算においては、
a×17+b×31 = 1
を満たすaを拡張GCD法によって求め、aの値を前記逆元演算の演算値とする。
【0032】
拡張GCD法は、乗算や加算を繰り返し行うため、一般に計算量が多い。
拡張GCD法については、「A Course in Computational Algebraic Number Theory」 (H. Cohen著、Graduate texts in mathematics 138, 1996, Springer-Verlag,16〜19ページ)に説明されている。
次に、係数行列311の1列2行の成分がそれぞれ0となるように、
を演算する。同様にして、係数行列311の1列3行〜5行の成分がそれぞれ0となるように、係数行列311を係数行列321に変換し、ベクトル312をベクトル322に変換し、図11(c)に示す連立方程式が得られる。
【0033】
次に、行列321の2列2行の成分が1となるように、係数行列321を係数行列331に変換し、ベクトル322をベクトル332に変換し、図11(d)に示す連立方程式が得られる。さらに、前記と同様にして、係数行列331の2列3行〜5行の成分が0となるように、係数行列331を係数行列341に変換し、ベクトル332をベクトル342に変換し、図11(e)に示す連立方程式が得られる。
【0034】
以下同様にして、図11(f)に示す係数行列351のように3列3行の成分は1となり、図11(g)に示す係数行列361のように3列4行〜5行の成分は0となる。さらに、図11(h)に示す係数行列371のように4列4行の成分は1となり、図11(i)に示す係数行列381のように4列5行の成分は0となる。最後に、図11(j)に示す係数行列391のように5列5行の成分は1となる。
【0035】
このようにして、係数行列が上三角行列に変換される。
次に、
を算出する。
(計算量の評価)
従来例3の全計算量は、次に示すようになる。ここで、基礎体の乗算、逆元演算の計算量をそれぞれ、Mul、Invとする。
【0036】
上記のステップ1について、カウンタjに対するループ内の計算量の内訳は次のようになる。
(a)ステップS22において、1回の逆元演算が必要であるので、1Inv
(b)ステップS24において、(n−(j+1)+1)+1=n−j+1回の乗算が必要であるので、(n−j+1)×Mul
(c)カウンタiが変化する範囲j+1〜nにおいて、以下のとおり。
【0037】
(c−1) ステップS27において、(n−(j+1)+1)回の乗算が必要であるので、(n−j)×Mul
(c−2) ステップS28において、1回の乗算が必要であるので、1Mul(c−1)と(c−2)とを(n−(j+1)+1)=(n−j)回行うので、(c)全体では、(n−j)(n−j+1)×Mulとなる。
【0038】
次に、(a)、(b)、(c)の合計は、(n−j+1)(n−j+1)×Mul+1Inv
カウンタjは、1〜nの範囲で変化するので、ステップ1全体の計算量は、
【0039】
【数11】
【0040】
となる。
上記のステップ2について、計算量は次のようになる。
カウンタcに対して、(n−(c+1)+1)=(n−c)回の乗算が必要であるので、(n−c)×Mul
カウンタcは、1〜nの範囲で変化するので、ステップ2全体の計算量は、
【0041】
【数12】
【0042】
従って、従来例3の全体の計算量は、
(1/6×n(n+1)(2n+1)+1/2×n(n−1))×Mul+n×Inv
= 1/3×n×(n2 +3n−1)×Mul+n×Inv
となる。
ここで、n=5、|q|=160(|q|はqのビットサイズ)の場合、一般的な計算機では、Inv =40Mul であることが知られているので、従来例3の全体の計算量は、265×Mulである。
【0043】
【発明が解決しようとする課題】
以上説明したように、有限体上の連立方程式を解くことにより、拡大体上の逆元演算ができるものの、拡大体上の逆元演算の計算量は一般に大きいので、有限体上の連立方程式の求解及び拡大体上の逆元演算における計算量をさらに少なくしたいという要望がある。
【0044】
本発明は、上記の要望に鑑み、有限体上の連立方程式の求解法において、計算量を削減することができる有限体上の連立方程式の求解装置、求解方法、求解プログラムを記録している記録媒体、拡大体上の逆元演算における計算量を削減することができる拡大体上の逆元演算装置、逆元演算方法、逆元演算プログラムを記録している記録媒体、これらの装置を応用する通信システム及び記録媒体再生装置を提供することを目的とする。
【0045】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、有限体GF(p)(pは素数)上のn元連立一次方程式Ax=b(nは正の整数、Aはn行n列の成分からなる係数行列、xはn個の成分からなる変数ベクトル、bはn個の成分からなる定数ベクトル)の解を求める連立方程式求解装置であって、係数行列Aと定数ベクトルbとを記憶しているパラメタ記憶手段と、前記パラメタ記憶手段から係数行列Aと定数ベクトルbとを読み出し、読み出した係数行列A及び定数ベクトルbを三角化変換して方程式Ax=bと同値の関係を有するn元連立一次方程式Cx=dの係数行列C(Cはn行n列の成分からなる係数行列)及び定数ベクトルd(dはn個の成分からなる定数ベクトル)を生成する三角化変換手段と、前記三角化変換は、係数行列Aの各対角成分を1に変換しない、係数行列Aの上三角行列への変換であり、生成された係数行列Cの各対角成分の有限体GF(p)上の逆元である対角逆元を生成する対角逆元演算手段と、生成された係数行列Cと定数ベクトルdと生成された各対角逆元とを用いて、方程式Ax=bの解として、方程式Cx=dの解を求める方程式求解手段とを備えることを特徴とする。
【0046】
ここで、前記三角化変換手段は、連続する1個以上の変換過程を介して前記方程式Cx=dの係数行列C及び定数ベクトルdを生成し、前記各変換過程において、前記三角化変換手段は、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のn元連立一次方程式は、方程式Ax=bであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式Cx=dであり、前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含み、前記三角化変換手段は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、第1係数群と第2係数群とを定め、ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られ、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くように構成してもよい。
【0047】
ここで、前記三角化変換手段は、前記各変換過程において、1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、前記三角化変換手段は、各副変換過程において、軸方程式の0でない係数を有する最高次の変数の係数から構成される群を第1係数群と定め、軸方程式の各係数及び定数のそれぞれに対象方程式の0でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第2係数群と定め、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くように構成してもよい。
【0048】
ここで、前記三角化変換手段は、前記各変換過程において、1個の係数群算出過程と、前記係数群算出過程後に1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、前記係数群算出過程において、前記三角化変換手段は、軸方程式及び1個以上の対象方程式の0でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる2個以上の値から構成される群を第1係数群と定め、前記第1係数群に含まれる値であって、軸方程式の0でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた1個以上の値から構成される群を第2係数群と定め、前記副変換過程において、前記三角化変換手段は、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くように構成してもよい。
【0049】
【発明の実施の形態】
1 第1の実施の形態
本発明の1の実施の形態としての逆元演算装置100について説明する。
1.1 逆元演算装置100の構成
逆元演算装置100は、予め与えられた有限体GF(p)(pは素数)の拡大体GF(q)(q=pn 、nは正の整数)上の元xの逆元Iを算出する。以下において、拡大体GF(q)の生成多項式をgn −βとし、その根をαとし、元xをx=x0 +x1 α+・・・+xn-1 αn-1 とする。ここで、αは、GF(q)上の元であり、β、x0 、x1 、・・・、xn-1 は、GF(p)上の元である。
【0050】
逆元演算装置100は、図1に示すように、パラメタ記憶部200、方程式生成部201、方程式求解部202、逆元変換部203及び逆元記憶部204から構成される。
逆元演算装置100は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクなどから構成されるコンピュータシステムであり、前記ハードディスクには、コンピュータプログラムが記憶されており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作する。これにより、方程式生成部201、方程式求解部202及び逆元変換部203は、それぞれの機能を達成する。
(1)パラメタ記憶部200
パラメタ記憶部200は、具体的には、ハードディスクから構成され、生成多項式のパラメタβ、根α、x0 、x1 、・・・、xn-1 をあらかじめ記憶している。
(2)方程式生成部201
方程式生成部201は、パラメタ記憶部200からパラメタβ、根α、x0 、x1 、・・・、xn-1 を読み出し、読み出したパラメタβ、根α、x0 、x1 、・・・、xn-1 を用いて、yi (i=0、1、2、・・・、n−1)に関する連立方程式
のパラメタを生成する。
【0051】
前記連立方程式は、次のように表現できる。
AY=B
ここで、
【0052】
【数13】
【0053】
方程式生成部201が生成する連立方程式のパラメタは、行列A及びベクトルBである。方程式生成部201は、生成した行列AとベクトルBとを方程式求解部202へ出力する。
また、方程式生成部201は、パラメタ記憶部200から根αを読み出し、読み出した根αを逆元変換部203へ出力する。
(3)方程式求解部202
方程式求解部202は、予め与えられた有限体GF(p)(pは素数)において、以下に示すxi (i=1、2、・・・、n)に関するn元連立一次方程式のパラメータaij (i、j=1、2、・・・、n)、bk (k=1、2、・・・、n)が与えられたとき、n元連立一次方程式のGF(p)上の解を算出する。
【0054】
a11x1 +a12x2 +・・・+a1nxn =b1
a21x1 +a22x2 +・・・+a2nxn =b2
・・・
an1x1 +an2x2 +・・・+annxn =bn
方程式求解部202は、図1に示すように、定数記憶部101、方程式変換部102、逆元演算部103及び方程式演算部104から構成される。
(定数記憶部101)
定数記憶部101は、具体的には、RAMから構成され、方程式生成部201から行列Mとベクトルvとを受け取り、記憶する。ここで、
【0055】
【数14】
【0056】
ここで、行列Mは、一例として、行列Aであり、ベクトルvは、一例として、ベクトルBである。
(方程式変換部102)
方程式変換部102は、定数記憶部101から行列Mとベクトルvとを読み出し、読み出した行列M及びベクトルvを三角化変換して、方程式Mx=vと同値の関係を有するn元連立一次方程式M’x=v’の行列M’(M’はn行n列の成分からなる係数行列)及びベクトルv’(v’はn個の成分からなる定数ベクトル)を生成する。
【0057】
前記三角化変換において、方程式変換部102は、行列Mの各対角成分が1に変換されないように、行列Mを上三角行列に変換する。
ここで、
【0058】
【数15】
【0059】
前記三角化変換について以下に説明する。
前記三角化変換では、方程式Mx=vから、連続する1個以上の変換過程を介して前記n元連立一次方程式M’x=v’の行列M’及びベクトルv’を生成する。
前記各変換過程において、前記三角化変換手段は、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成する。ここで、最初の変換過程において、変換前のn元連立一次方程式は、方程式Mx=vであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式M’x=v’である。
【0060】
前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含む。
前記三角化変換では、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、第1係数群と第2係数群とを定める。
【0061】
ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群である。前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られる。
【0062】
前記三角化変換では、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とする。次に、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引く。
また、前記三角化変換では、前記各変換過程において、1個以上の対象方程式をそれぞれ変換する前記対象方程式と同数の副変換過程とを含む。
【0063】
前記三角化変換では、各副変換過程において、軸方程式の0でない係数を有する最高次の変数の係数から構成される群を第1係数群と定め、軸方程式の各係数及び定数のそれぞれに対象方程式の0でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第2係数群と定める。
次に、前記三角化変換では、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とする。また、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引く。
【0064】
三角化変換のさらなる詳細については、後述する。
方程式変換部102は、生成した行列M’及びベクトルv’を方程式演算部104へ出力し、生成した行列M’の対角成分cii(i=1、2、・・・、n)を逆元演算部103へ出力する。
上記に説明するように、方程式変換部102は、行列Mを上三角行列になるように変換する。このとき、方程式の解を変化させないようにするため、ベクトルvも変化させている。従来法と異なる点は、対角成分を1にしないことである。(逆元演算部103)
逆元演算部103は、方程式変換部102から行列M’の対角成分cii(i=1、2、・・・、n)を受け取る。
【0065】
ここで、記述を簡単にするために、行列M’の対角成分cii(i=1、2、・・・、n)を、mi (i=1、2、・・・、n)と表現する。
逆元演算部103は、
【0066】
【数16】
【0067】
を次に示すようにして算出する。
逆元演算部103は、以下に記載した順序に従って算出する。
s1 =m1 ×m2 mod p
s2 =s1 ×m3 mod p
・・・
sn-3 =sn-4 ×mn-2 mod p
tn =sn-3 ×mn-1 mod p
tn-1 =sn-3 ×mn mod p
sn =mn-1 ×mn mod p、tn-2 =sn-4 ×sn mod p
sn-1 =mn-2 ×sn mod p、tn-3 =sn-5 ×sn-1 mod p
sn-2 =mn-3 ×sn-1 mod p、tn-4 =sn-6 ×sn-2 mod p
・・・
s5 =m4 ×s6 mod p、t3 =s1 ×s5 mod p
s4 =m3 ×s5 mod p、t2 =m1 ×s4 mod p
t1 =m2 ×s4 mod p
次に、逆元演算部103は、予め与えられたk(kは、1、2、...、nのうちのいずれか1個)を用いて、
t=tk ×mk mod p
を算出することにより、
【0068】
【数17】
【0069】
を算出する。
次に、逆元演算部103は、
u=1/t mod p
を算出する。
次に、逆元演算部103は、
逆元Ii =u×ti mod p (i=1、2、...、n)
を算出する。
【0070】
逆元演算部103は、算出した逆元Ii(i=1、2、...、n)を方程式演算部104へ出力する。
以上説明したように、逆元演算部103は、方程式変換部102から出力された行列M’の対角成分cii(i=1、2、・・・、n)のGF(p)上の逆元Ii (i=1、2、・・・、n)を計算し、出力する。
(方程式演算部104)
方程式演算部104は、方程式変換部102から行列M’及びベクトルv’を受け取り、逆元演算部103から逆元Ii (i=1、2、・・・、n)を受け取る。
【0071】
方程式演算部104は、カウンタj=n−1、n−2、・・・、2、1、0のように設定し、カウンタjの各値について、行列M’、ベクトルv’、逆元Ii (i=1、2、・・・、n)を用いて、
j=n−1のとき、 yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
【0072】
【数18】
【0073】
を算出する。
次に、方程式演算部104は、算出した解yj (j=0、1、2、・・・、n−1)を逆元変換部203へ出力する。
以下に、方程式演算部104によりn元連立一次方程式の解が得られる根拠を示す。
【0074】
方程式演算部104が受け取った行列M’は上三角化行列であるので、方程式M’x=v’は、
のように表現でき、行列M’の対角成分cii(i=1、2、・・・、n)の逆元は、それぞれIi (i=1、2、・・・、n)である。
【0075】
従って、xn-1 の解yn-1 は、
yn-1 =In dn-1 mod p
である。
次に、xn-2 の解yn-2 は、
yn-2 =In-1 (dn-1 −cn-1 n yn-1 )mod p
である。同様にして、xj の解yj (j=n−3、n−4、・・・、0)は、
【0076】
【数19】
【0077】
である。
(4)逆元変換部203
逆元変換部203は、方程式求解部202の方程式演算部104から解yj (j=0、1、2、・・・、n−1)を受け取り、方程式生成部201から根αを受け取る。逆元変換部203は、受け取った解yk (j=0、1、2、・・・、n−1)と根αとを用いて、逆元Iを次の式により演算する。
【0078】
I=y0 +y1 α+・・・+yn-1 αn-1
次に、逆元変換部203は、算出した逆元Iを逆元記憶部204に書き込む。このようにして、拡大体GF(q)上の元xの逆元Iが得られる。
(5)逆元記憶部204
逆元記憶部204は、具体的にはハードディスクからなり、拡大体GF(q)上の元xの逆元Iを記憶する。
1.2 逆元演算装置100の動作
逆元演算装置100の動作について説明する。
(1)逆元演算装置100の全体の概要動作
逆元演算装置100の全体の概要動作について、図2に示すフローチャートを用いて説明する。
【0079】
方程式生成部201は、パラメタ記憶部200からパラメタβ、根α、x0 、x1 、・・・、xn-1 を読み出し、読み出したパラメタβ、根α、x0 、x1 、・・・、xn-1 を用いて、yi (i=0、1、2、・・・、n−1)に関する連立方程式AY=Bのパラメタとして、行列A及びベクトルBを生成し、生成した行列AとベクトルBとを方程式求解部202の定数記憶部101へ出力する(ステップS101)。
【0080】
方程式求解部202の方程式変換部102は、定数記憶部101から行列Mとベクトルvとを読み出し、読み出した行列M及びベクトルvを三角化変換して、方程式Mx=vと同値の関係を有するn元連立一次方程式M’x=v’の行列M’及びベクトルv’を生成する(ステップS102)。
逆元演算部103は、行列M’の対角成分cii(i=1、2、・・・、n)の逆元Ii(i=1、2、...、n)を算出する(ステップS103)。
【0081】
方程式演算部104は、行列M’、ベクトルv’及び逆元Ii (i=1、2、・・・、n)を用いて、n元連立一次方程式M’x=v’の解yj (j=0、1、2、・・・、n−1)を算出し、算出した解を逆元変換部203へ出力する(ステップS104)。
逆元変換部203は、方程式求解部202から解yj (j=0、1、2、・・・、n−1)を受け取り、方程式生成部201から根αを受け取り、、受け取った解と根αとを用いて、拡大体GF(q)上の元xの逆元Iを算出し、算出した逆元Iを逆元記憶部204に書き込む(ステップS105)。
(2)方程式変換部102の三角化変換の詳細の動作
方程式変換部102の三角化変換の詳細の動作について、図3に示すフローチャートを用いて説明する。
【0082】
方程式変換部102は、定数記憶部101から行列Mとベクトルvとを読み出し(ステップS111)、カウンタjを1に設定する(ステップS112)。
次に、方程式変換部102は、行列Mの第j列の成分の中でGF(p)上で0でない成分を第j行から第n行まで探索し、はじめに発見した成分の行数をkとする(ステップS113)。さらに、k≠jの場合に(ステップS114)、行列Mの第k行と第j行とを入れ換え(ステップS115)、ベクトルvの第k行と第j行とを入れ換える(ステップS116)。
【0083】
次に、方程式変換部102は、カウンタiをj+1に設定し(ステップS117)、方程式変換部102は、ajj(ajjは、行列Mのj行j列成分)とaijとを用いて、
aij=0
j+1≦k≦n(k=j+1、j+2、・・・、n)に対して、
aik=ajjaik−aijajk
bi =ajjbi −aijbj
のように設定する(ステップS118)。
【0084】
方程式変換部102は、i=nであるかを判定し、i≠nであるなら(ステップS119)、カウンタiに1を加算して(ステップS122)、ステップS118へ制御を戻す。i=nであるなら(ステップS119)、j=n−1であるか判定し、j≠n−1であるなら(ステップS120)、カウンタjに1を加算して(ステップS123)、ステップS113へ制御を戻す。j=n−1であるなら(ステップS120)、行列Mを行列M’とし、ベクトルvをベクトルv’とする。
【0085】
以上説明したように、方程式変換部102には、カウンタjを変化させることによる変換過程が含まれる。また、前記変換過程内には、カウンタiを変化させることによる副変換過程が含まれる。
(方程式変換部102の検証)
方程式変換部102による三角化変換により生成されるn元連立一次方程式M’x=v’が、n元連立一次方程式Mx=vと同値の関係を有する根拠をについて以下に説明する。
【0086】
三角化変換において、n元連立一次方程式中の変換中の1個のn元一次方程式について、変換前の行列を行列Min、ベクトルvinとし、変換後の行列を行列Mout 、ベクトルvout とし、行列Minの第i、j行の行ベクトルをそれぞれ、Li 、Lj とする。
方程式変換部102において、
ajj×Li −aij×Lj
の計算を行い、この結果の行ベクトルをMout の第i行とし、
ajj×bi −aij×bj
の計算を行い、vout の第i行としている。Mout の他の成分及びvout の他の成分は、それぞれMinの他の成分及びvinの他の成分と同じである。このとき、方程式
Min・x=vin
と方程式
Mout ・x=vout
が同じ解をもつことは、「コンピュータによる数値計算」(水上孝一編著、プログラミング入門シリーズ、朝倉書店、1985、76〜82ページ)から明らかである。
【0087】
また、カウンタjに対して、j+1≦i≦nを満たすiについて、aijを0としている。この操作をjが1からnまで繰り返すので、行列の下三角部分が0になる。したがって、第2方程式変換部102は方程式の解を変化させずに、行列の三角化変換が行える。
(3)逆元演算部103の動作
逆元演算部103の動作について、図4に示すフローチャートを用いて説明する。
【0088】
逆元演算部103は、方程式変換部102から行列M’の対角成分mi (i=1、2、・・・、n)を受け取り(ステップS140)、
【0089】
【数20】
【0090】
を算出し(ステップS142)、
予め与えられたkを用いて、
t=tk ×mk mod p
を算出し(ステップS143)、
u=1/t mod p
を算出し(ステップS144)、
逆元Ii =u×ti mod p (i=1、2、...、n)を算出し(ステップS145)、算出した逆元Ii(i=1、2、...、n)を方程式演算部104へ出力する(ステップS146)。
(4)方程式演算部104の動作
方程式演算部104の動作について、図5に示すフローチャートを用いて説明する。
【0091】
方程式演算部104は、方程式変換部102から行列M’及びベクトルv’を受け取り、逆元演算部103から逆元Ii (i=1、2、・・・、n)を受け取る(ステップS161)。次に、方程式演算部104は、カウンタjをn−1に設定し(ステップS162)、
j=n−1のとき、 yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
【0092】
【数21】
【0093】
を算出する(ステップS163)。
方程式演算部104は、j=0であるか否かを判定し、j=0であるとき(ステップS164)、算出した解yj (j=0、1、2、・・・、n−1)を逆元変換部203へ出力する(ステップS166)。それ以外の場合は(ステップS164)、カウンタjから1を減じ(ステップS165)、ステップS163へ制御を戻す。
1.3 計算量の評価
方程式求解部202における計算量について説明する。
(1)方程式変換部102における計算量
カウンタjの値に対して、ループ(図3に示すフローチャートのステップS113〜S119)内の処理の計算量は、次のようになる。
【0094】
カウンタiの1個の値に対して
(a)ステップS118において、j+1≦k≦n(k=j+1、j+2、・・・、n)に対して、aik=ajj×aik−aij×ajkの計算をする。従って、2回の乗算を(n−(j+1)+1)=(n−j)回行うので、計算量は、2×(n−j)×Mul 。
【0095】
(b)ステップS118において、bi =ajj×bi −aij×bj の計算をする。従って、2回の乗算を行うので、計算量は、2Mul 。
カウンタiは、j+1〜nの範囲で変化するので、ループ(ステップS113〜S119)内の計算量は、
(2×(n−j+1)×Mul )×(n−(j+1)+1)
=2×(n−j)×(n−j+1)×Mul
ステップS112〜S120において、カウンタjは、1〜n−1の範囲で変化するので、方程式変換部102全体の計算量は、
【0096】
【数22】
【0097】
(2)逆元演算部103における計算量
(a)s1 〜sn-3 及びtn を求めるために乗算が、n−2回必要であるので、(n−2)Mul
(b)tn-1 を求めるために1回の乗算が必要であるので、Mul
(c)sn とtn-2 、sn-1 と tn-3 、・・・、s4 とt2 を求めるために乗算が、2×(n−3)回必要であるので、2×(n−3)×Mul
(d)t1 を求めるために1回の乗算が必要であるので、Mul
(e)tを求めるために1回の乗算が必要であるので、Mul
(f)u=1/t mod pを求めるために、1回の逆元演算が必要であるので、Inv
(g)Ii =u×ti mod p (i=1,2,...,n)を求めるために、n回の乗算が必要であるので、n×Mul
これらを合計すると、
((n−2)+1+2(n−3)+1+1+n)×Mul+Inv
= (4n−5)×Mul+Inv
(3)方程式演算部104における計算量
カウンタjに対して、ループ内(図5に示すフローチャートのステップS163〜S165)の処理の計算量を見積もる。
【0098】
j=n−1のとき、yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
【0099】
【数23】
【0100】
の計算を行うために、1回の乗算(右辺第1項)と(n−(j+1)+1)回の乗算が必要であるので、計算量は (n−j+1)×Mul
カウンタjは、1〜nの範囲で変化するので、方程式演算部104全体の計算量は、
【0101】
【数24】
【0102】
(4)具体例
具体例を以下に示す。
従来例3と同様に、素数p=31、生成多項式f(g)=g5 −2、GF(q)の元x=5α4 +29α3 +6α2 +19α+17とする。連立方程式は、従来例3と同様、図6(a)に示すようになる。
【0103】
次の演算をする。
a21 = 0
a22 = 17×17−19×10=6 mod 31
a23 = 17×10−19×27=29 mod 31
a24 = 17×27−19×12=14 mod 31
a25 = 17×12−19×7=9 mod 31
b2 = 17×0−19×1=12 mod 31
j=1(i=2)のとき
連立方程式は、図6(b)に示すようになる。ここで、係数行列411の1列2行の成分が0となっている。
【0104】
次に、j=1の処理終了後、連立方程式は、図6(c)に示すようになる。ここで、係数行列421の1列3行〜5行の成分が0となっている。
次に、j=2の処理終了後、連立方程式は、図6(d)に示すようになる。ここで、係数行列431の2列3行〜5行の成分が0となっている。
次に、j=3の処理終了後、連立方程式は、図6(e)に示すようになる。ここで、係数行列441の3列4行〜5行の成分が0となっている。
【0105】
次に、j=4の処理終了後、連立方程式は、図6(f)に示すようになる。ここで、係数行列451の4列5行の成分が0となっている。
次に、対角成分の逆元演算を行う。
s1 =m1 ×m2 =17×6=9 mod 31
s2 =s1 ×m3 =9×17=29 mod 31
t5 =s2 ×m4 =29×6=19 mod 31
t4 =s2 ×m5 =29×30=2 mod 31
s5 =m4 ×m5 =6×30=25 mod 31
t3 =s1 ×s5 =9×25=8 mod 31
s4 =m3 ×s5 =17×25=22 mod 31
t2 =m1 ×s4 =17×22=2 mod 31
t1 =m2 ×s4 =6×22=8 mod 31
t=m1 ×t1 =17×8=12 mod 31
u=1/t=1/12=13 mod 31 (逆元演算はこの1回のみである。)
I1 =u×t1 =13×8=11 mod 31
I2 =u×t2 =13×2=26 mod 31
I3 =u×t3 =13×8=11 mod 31
I4 =u×t4 =13×2=26 mod 31
I5 =u×t5 =13×19=30 mod 31
次に、方程式を解く。
(5)方程式求解部202全体における計算量
従って、方程式求解部202全体における計算量は、
2/3×n(n−1)(n+1)Mul
+ (4n−5)×Mul+Inv
+ 1/2×n(n+1)×Mul
= 1/6(4n3 +3n2 +23n−30)Mul + Inv
ここで、n=5、|q|=160(|q|はqのビットサイズ)の場合、一般的な計算機では、Inv=40Mulであるとすると、方程式求解部202における計算量は、150×Mulである。
【0106】
このように、本発明の方程式求解部202による計算量は、従来の方程式求解装置と比較すると、明らかに少なくなる。したがって、連立方程式の求解を少ない計算量で行える有限体上の連立方程式求解装置を提供することができ、この実用的価値は非常に大きい。
また、予め与えられた有限体GF(p)の拡大体GF(q)上の元xの逆元Iを算出する逆元演算装置において、少ない計算量で逆元演算を行うことができる。
(6)適用例
実際に暗号通信システム、デジタル署名通信システム及び誤り訂正通信システムなどの通信システムにおいて、適用される一例としてのパラメタを示す。
【0107】
素数p=231−1、q=pn 、n=5、生成多項式f(g)=g5 −g−8
F(q)の元x=x0 +x1 ×α+x2 ×α2 +x3 ×α3 +x4 ×α4
に対して、連立方程式は以下のように設定される。
【0108】
【数25】
【0109】
ここで、p、x0 、・・・、x4 、y0 、・・・、y4 は、それぞれ31ビットであり、q、xは、155ビットである。
2 その他の実施の形態
本発明に係るその他の実施の形態について説明する。
2.1 変形例
方程式求解部202の方程式変換部102の変形例としての方程式変換部102aについて説明する。
【0110】
方程式変換部102aは、方程式変換部102で説明した前記各変換過程において、1個の係数群算出過程と、前記係数群算出過程後に1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含む。
前記係数群算出過程において、方程式変換部102aは、軸方程式及び1個以上の対象方程式の0でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる2個以上の値から構成される群を第1係数群と定め、前記第1係数群に含まれる値であって、軸方程式の0でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた1個以上の値から構成される群を第2係数群と定める。
【0111】
前記副変換過程において、方程式変換部102aは、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引く。
【0112】
方程式変換部102aの動作について、図7に示すフローチャートを用いて説明する。図7に示すフローチャートは、図3のフローチャートのステップS118に代えて、ステップS118a〜S118cを含む。
以下に、ステップS118a〜S118cについて説明する。他のステップは、図3のフローチャートのステップと同じであるので、説明を省略する。
【0113】
方程式変換部102aは、ステップ118aにおいて、j≦k≦nなるk(k=j、j+1、・・・、n)に対して、
【0114】
【数26】
【0115】
を算出する。
また、方程式変換部102aは、ステップ118bにおいて、j+1≦k≦nなるk(k=j+1、j+2、・・・、n)に対して、
wk =hj ×ajk
e=hj ×bj
を算出する。
【0116】
また、方程式変換部102aは、ステップ118cにおいて、
aij=0とし、
j+1≦k≦nなるk(k=j+1、j+2、・・・、n)に対して、
aik=hi ×aik−wk を算出し、
bi =hi ×bi −eを算出する。
(具体例)
具体例を以下に示す。
【0117】
従来例3と同様に、素数p=31、生成多項式f(g)=g5 −2、GF(q)の元x=5α4 +29α3 +6α2 +19α+17とする。連立方程式は、従来例3と同様、図8(a)に示すようになる。
j=1のとき、
s1 =a11×a21=17×19=13 mod 31
s2 =s1 ×a31=13×6=16 mod 31
h5 =s2 ×a41=16×29=30 mod 31
h4 =s2 ×a51=16×5=18 mod 31
s5 =a41×a51=29×5=21 mod 31
h3 =s1 ×s5 =13×21=25 mod 31
s4 =a31×s5 =6×21=2 mod 31
h2 =a11×s4 =17×2=3 mod 31
h1 =a21×s4 =19×2=7 mod 31
を算出し、
w2 =h1 ×a12=7×10=8 mod 31
w3 =h1 ×a13=7×27=3 mod 31
w4 =h1 ×a14=7×12=22 mod 31
w5 =h1 ×a15=7×7=18 mod 31
e =h1 ×b1 =7×1=7 mod 31
を算出する。
【0118】
次に、i=2(j=1)のとき
a21=0
a22=h2 ×a22−w2 =3×17−8=12 mod 31
a23=h2 ×a23−w3 =3×10−3=27 mod 31
a24=h2 ×a24−w4 =3×27−22=28 mod 31
a25=h2 ×a25−w5 =3×12−18=18 mod 31
b2 =h2 ×b2 −e =3×0−7=24 mod 31
このように、上記の第1の実施形態と異なり、aikを求めるために、乗算を1回のみ行うので、計算量が少なくなる。(第1の実施形態では、乗算を2回行う。)
こうして、図8(b)に示す連立方程式が得られる。ここで、1列2行の成分が0である。
【0119】
次に、j=1の処理終了後、図8(c)に示す連立方程式が得られる。ここで、1列3行〜5行の成分が0である。
次に、j=2のとき
s1 =a22×a32=12×2=24 mod 31
h5 =s1 ×a42=24×7=13 mod 31
h4 =s1 ×a52=24×25=11 mod 31
s4 =a42×a52=7×25=20 mod 31
h3 =a22×s4 =12×20=23 mod 31
h2 =a32×s4 =2×20=9 mod 31
を演算し、
w3 =h2 ×a23=9×27=26 mod 31
w4 =h2 ×a24=9×28=4 mod 31
w5 =h2 ×a25=9×18=7 mod 31
e =h2 ×b2 =9×24=30 mod 31
を演算する。
【0120】
次に、j=2の処理終了後、図8(d)に示す連立方程式が得られる。ここで、2列3行〜5行の成分が0である。
次に、j=3のとき、
h5 =a33×a43=8×14=19 mod 31
h4 =a33×a53=8×12=3 mod 31
h3 =a43×a53=14×12=13 mod 31
を演算し、
w4 =h3 ×a34=13×1=13 mod 31
w5 =h3 ×a35=13×7=29 mod 31
e =h3 ×b3 =13×26=28 mod 31
を演算する。
【0121】
次に、j=3の処理終了後、図8(e)に示す連立方程式が得られる。ここで、3列4行〜5行の成分が0である。
次に、j=4のとき
h5 =a44=16 mod 31
h4 =a54=14 mod 31
を算出し、
w5 =h4 ×a45=14×26=23 mod 31
e =h4 ×b4 =14×23=12 mod 31
を算出する。
【0122】
次に、j=4の処理終了後、図8(f)に示す連立方程式が得られる。ここで、4列5行の成分が0である。
ここで、行列C=A、ベクトルD=Bとする。
次に、対角成分の逆元演算を行う。
s1 =m1 ×m2 =17×12=18 mod 31
s2 =s1 ×m3 =18×8=20 mod 31
t5 =s2 ×m4 =20×16=10 mod 31
t4 =s2 ×m5 =20×22=6 mod 31
s5 =m4 ×m5 =16×22=11 mod 31
t3 =s1 ×s5 =18×11=12 mod 31
s4 =m3 ×s5 =8×11=26 mod 31
t2 =m1 ×s4 =17×26=8 mod 31
t1 =m2 ×s4 =12×26=2 mod 31
t=m1 ×t1 =17×2=3 mod 31
u=1/t=1/3=21 mod 31
を演算する。逆元演算はこの1回のみである。
【0123】
I1 =u×t1 =21×2=11 mod 31
I2 =u×t2 =21×8=13 mod 31
I3 =u×t3 =21×12=4 mod 31
I4 =u×t4 =21×6=2 mod 31
I5 =u×t5 =21×10=24 mod 31
を演算する。
【0124】
次に方程式を解く。
(方程式変換部102aの計算量の評価)
図*に示すフローチャートにおけるカウンタjに対するループ内(ステップS113〜ステップS119)の計算量を見積もる。
【0125】
ステップS118aにおいて、hk (k=j、j+1、・・・、n)を求めるために、(3×(n−j+1)−6)回の乗算が必要であるので、計算量は、(3×(n−j+1)−6)×Mul である。
ステップS118bにおいて、wk (k=j+1、j+2、・・・、n)とeとを求めるために、(n−(j+1)+1+1)回の乗算が必要であるので、計算量は、(n−j+1)×Mul である。
【0126】
ステップS118cにおいて、カウンタiの1個の値に対して、
(a)j+1≦k≦n(k=j+1、j+2、・・・、n)について、aik=hi ×aik−wkの計算をする。1回の乗算を(n−(j+1)+1)=(n−j)回行うので、計算量は(n−j)×Mul である。
(b)bi =hi ×bi −e の計算をする。1回の乗算を行うので、計算量は1Mul である。
【0127】
カウンタiは、j+1〜nの範囲で変化するので、ループ内の計算量は、
((n−j+1)×Mul)×(n−(j+1)+1)
=(n−j)×(n−j+1)×Mul
ステップS118a〜S118cの計算量の合計は、
((3×(n−j+1)−6)+(n−j+1)+(n−j)(n−j+1))×Mul
= (4×(n−j+1)−6+(n−j)(n−j+1))×Mul
= ((n−j+4)(n−j+1)−6)×Mul
カウンタjは、1〜n−1の範囲で変化するので、方程式変換部102a全体の計算量は、
【0128】
【数27】
【0129】
従って、方程式求解部全体の計算量は、
((1/3×n3 +2n2 −13/3×n+2)+(4n−5)+1/2×n(n+1))×Mul+Inv
= (1/3×n3 +5/2×n2 +1/6×n−3)×Mul+Inv
Inv =40Mul、n=5と仮定したとき、計算量は、142Mul である。
2.2 その他の変形例
(1)pを素数、q=pn 、nを正の整数、有限体GF(p)の拡大体GF(q)上の楕円曲線をE、楕円曲線EのベースポイントをGとし、楕円曲線E上の離散対数問題を安全性の根拠として利用して、安全性を確保しながら通信する暗号通信システム、デジタル署名通信システム及び誤り訂正通信システムなどの通信システムにおいて、安全性の確保に際して、拡大体GF(q)上の元の逆元を算出する逆元演算を行う場合に、上記に説明した方程式求解部及び逆元演算装置を適用するようにしてもよい。前記暗号通信システムの一例は、インターネット上でのE−mailシステムにおいて、メッセージを暗号化して送受信する場合である。また、デジタル署名通信システムの一例は、電子決済システムである。また、訂正通信システムの一例は、前記E−mailシステムにおいて、通信回線の品質の悪化等の原因により、送信メッセージの一部が欠落した場合などに、送信メッセージから欠落した部分を検出し、またさらに訂正するシステムである。
【0130】
また、前記離散対数問題を安全性の根拠としてデジタル著作物を暗号化し、DVD、半導体メモリなどの記録媒体に記録する記録装置において、また、前記暗号化デジタル著作物を復号して再生する再生装置において、暗号又は復号に際して、上記に説明した方程式求解部及び逆元演算装置を適用するようにしてもよい。
【0131】
このとき、これらの応用システムにおいて、少ない計算量で逆元演算を行うことができる。
上記の方程式求解部及び逆元演算装置は、例えば、携帯電話機に内蔵されるファームウェア、パソコンに装着される回路基盤として実装されうる。
(2)上記の実施の形態では、gn −βの形の生成多項式を扱ったが、n次の一般の生成多項式
f(g)=βn gn +βn-1 gn-1 ・・・+β2 g2 +β1 g +β
に対しても同様にして、予め与えられた有限体GF(p)の拡大体GF(q)(q=pn 、nは正の整数)上の元xの逆元Iを算出することができる。
【0132】
生成多項式をn次の一般の多項式f(g)とし、その根をαとする。
拡大体GF(q)上の元x(x=x0 +x1 α+・・・+xn-1 αn-1 )に対して、(x×αj-1 mod f(α))のαi-1 の係数をaijとすると、n元連立一次方程式は、次のように表現できる。
a11y0 +a12y1 +a13y2 + ・・・ +a1nyn-1 = 1
a21y0 +a22y1 +a13y2 + ・・・ +a2nyn-1 = 0
・・・
an1y0 +an2y1 +an3y2 + ・・・ +annyn-1 = 0
次に、上記のようにn元連立一次方程式を表現できる根拠について簡単に説明する。
【0133】
である。
x×y0 +x×y1 ×α+ ・・・ +x×yn-1 αn-1
= x×y0 +(x×α mod f(α))×y1 +・・・
+(x×αn-1 mod f(α))×yn-1
であり、αi-1 の係数は、
ai1×y0 +ai2×y1 +・・・+ain×yn-1
で与えられる。
【0134】
αi-1 (i>2)の係数は、すべて0であり、α0 (i=1)の係数は1であるので、上記のn元連立一次方程式が得られる。
(3)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0135】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フロッピーディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【0136】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を搬送波に載せて、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を搬送波に載せて、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(4)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【0137】
【発明の効果】
以上に説明したように本発明は、有限体GF(p)(pは素数)上のn元連立一次方程式Ax=b(nは正の整数、Aはn行n列の成分からなる係数行列、xはn個の成分からなる変数ベクトル、bはn個の成分からなる定数ベクトル)の解を求める連立方程式求解装置であって、係数行列Aと定数ベクトルbとを記憶しているパラメタ記憶手段と、前記パラメタ記憶手段から係数行列Aと定数ベクトルbとを読み出し、読み出した係数行列A及び定数ベクトルbを三角化変換して方程式Ax=bと同値の関係を有するn元連立一次方程式Cx=dの係数行列C(Cはn行n列の成分からなる係数行列)及び定数ベクトルd(dはn個の成分からなる定数ベクトル)を生成する三角化変換手段と、前記三角化変換は、係数行列Aの各対角成分を1に変換しない、係数行列Aの上三角行列への変換であり、生成された係数行列Cの各対角成分の有限体GF(p)上の逆元である対角逆元を生成する対角逆元演算手段と、生成された係数行列Cと定数ベクトルdと生成された各対角逆元とを用いて、方程式Ax=bの解として、方程式Cx=dの解を求める方程式求解手段とを備える。
【0138】
この構成によると、連立方程式求解装置の計算量を削減することができる。
ここで、前記三角化変換手段は、連続する1個以上の変換過程を介して前記方程式Cx=dの係数行列C及び定数ベクトルdを生成し、前記各変換過程において、前記三角化変換手段は、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のn元連立一次方程式は、方程式Ax=bであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式Cx=dであり、前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含み、前記三角化変換手段は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、第1係数群と第2係数群とを定め、ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られ、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くように構成してもよい。
【0139】
この構成によると、連立方程式の係数行列の対角行列を1としないように、三角化変換が行える。
ここで、前記三角化変換手段は、前記各変換過程において、1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、前記三角化変換手段は、各副変換過程において、軸方程式の0でない係数を有する最高次の変数の係数から構成される群を第1係数群と定め、軸方程式の各係数及び定数のそれぞれに対象方程式の0でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第2係数群と定め、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くように構成してもよい。
【0140】
また、前記三角化変換手段は、前記各変換過程において、1個の係数群算出過程と、前記係数群算出過程後に1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、前記係数群算出過程において、前記三角化変換手段は、軸方程式及び1個以上の対象方程式の0でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる2以上の値から構成される群を第1係数群と定め、前記第1係数群に含まれる値であって、軸方程式の0でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた1個以上の値から構成される群を第2係数群と定め、前記副変換過程において、前記三角化変換手段は、前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くように構成してもよい。
【0141】
これらの構成によると、三角化変換において同値の関係を有する方程式を得ることができる。
ここで、係数行列Cの対角成分をmi (i=1、2、...、n)とし、対角成分mi のGF(p)上の対角逆元をIi (i=1、2、...、n)とし、
前記対角逆元演算手段は、
【0142】
【数28】
【0143】
を算出し、
【0144】
【数29】
【0145】
を算出する乗算部と、u=1/t mod pを算出する第1逆元演算部と、対角逆元Ii = u×ti mod p (i=1、2、...、n)を算出する第2逆元演算部とを含むように構成してもよい。
また、前記乗算部は、s1 =m1 ×m2 mod p、s2 =s1 ×m3 mod p、 ・・・、sn-3 =sn-4 ×mn-2 mod pをこの順序で算出し、次に、tn =sn-3 ×mn-1 mod p、tn-1 =sn-3 ×mn mod p、sn =mn-1 ×mn mod p、tn-2 =sn-4 ×sn mod p、sn-1 =mn-2 ×sn mod p、 tn-3 =sn-5 ×sn-1 mod p、sn-2 =mn-3 ×sn-1 mod p、tn-4 =sn-6 ×sn-2 mod p、・・・、s5 =m4 ×s6 mod p、t3 =s1 ×s5 mod p、s4 =m3 ×s5 mod p、t2 =m1 ×s4 mod p、t1 =m2 ×s4
mod pをこの順序で算出し、次に、正の整数の集合{1、2、...、n}から選択された1個の値jについて、t=tj ×mj を算出するように構成してもよい。
【0146】
これらの構成によると、対角逆元を算出する演算プロセス内において、逆元演算の回数を削減することができる。
こうして計算量を削減することができ、高速な暗号方式や署名方式を可能にする有限体上の連立方程式求解装置を提供することができ,その実用的価値は大きい。
【0147】
また、本発明は、有限体GF(p)(pは素数)の拡大体GF(q)(q=pn 、nは正の整数)の元xの逆元Iを演算する逆元演算装置であって、元xと拡大体GF(p)上の多項式の係数とを用いて、n元連立一次方程式Ay=Bの係数行列A及び定数ベクトルBを生成する方程式生成手段と、上記の連立方程式求解装置であって、n元連立一次方程式Ay=Bの解を求める方程式演算手段と、前記根と求められた前記解とを用いて、逆元Iを算出する逆元算出手段とを備える。
【0148】
この構成によると、計算量の少ない逆元演算装置を提供することができる。
また、本発明は、有限体GF(p)(pは素数)の拡大体GF(q)(q=pn 、nは正の整数)の上の楕円曲線をE、楕円曲線EのベースポイントをGとし、楕円曲線E上の離散対数問題を安全性の根拠として利用して安全性を確保する通信を行い、安全性の確保に際して拡大体GF(q)上の元xの逆元Iを算出する通信システムであって、元xと拡大体GF(p)上の多項式の係数とを用いて、n元連立一次方程式Ay=Bの係数行列A及び定数ベクトルBを生成する方程式生成手段と、上記の連立方程式求解装置であって、n元連立一次方程式Ay=Bの解を求める方程式演算手段と、前記根と求められた前記解とを用いて、逆元Iを算出する逆元算出手段とを備える。
【0149】
この構成によると、有限体上の逆元演算において計算量の少ない通信システムを提供することができる。
また、本発明は、有限体GF(p)(pは素数)の拡大体GF(q)(q=pn 、nは正の整数)の上の楕円曲線をE、楕円曲線EのベースポイントをGとし、楕円曲線E上の離散対数問題を安全性の根拠として暗号化されたデジタル著作物を記録している記録媒体から暗号化デジタル著作物を読み出して復号し、復号に際して拡大体GF(q)上の元xの逆元Iを算出する記録媒体再生装置であって、元xと拡大体GF(p)上の多項式の係数とを用いて、n元連立一次方程式Ay=Bの係数行列A及び定数ベクトルBを生成する方程式生成手段と、上記の連立方程式求解装置であって、n元連立一次方程式Ay=Bの解を求める方程式演算手段と、前記根と求められた前記解とを用いて、逆元Iを算出する逆元算出手段とを備えることを特徴とする。
【0150】
この構成によると、有限体上の逆元演算において計算量の少ない記録媒体再生装置を提供することができる。
【図面の簡単な説明】
【図1】本発明の1の実施の形態としての逆元演算装置100の構成を示すブロック図である。
【図2】逆元演算装置100の全体の動作を示すフローチャートである。
【図3】逆元演算装置100の方程式の係数行列の三角化変換の動作を示すフローチャートである。
【図4】逆元演算装置100の対角成分の逆元演算の動作を示すフローチャートである。
【図5】逆元演算装置100の方程式の演算の動作を示すフローチャートである。
【図6】方程式変換部102を適用する具体例である。
【図7】方程式変換部102aによる係数行列の三角化変換の動作を示すフローチャートである。
【図8】変形例としての方程式変換部102aを適用する具体例である。
【図9】従来のエルガマル署名によるデジタル署名方式の手順を示すシーケンス図である。
【図10】従来の係数行列の三角化変換の動作を示すフローチャートである。
【図11】従来の方程式変換を適用する具体例である。
【符号の説明】
100 逆元演算装置
101 定数記憶部
102 方程式変換部
102a 方程式変換部
103 逆元演算部
104 方程式演算部
200 パラメタ記憶部
201 方程式生成部
202 方程式求解部
203 逆元変換部
204 逆元記憶部
Claims (12)
- 有限体GF(p)(pは素数)上のn元連立一次方程式Ax=b(nは正の整数、Aはn行n列の成分からなる係数行列、xはn個の成分からなる変数ベクトル、bはn個の成分からなる定数ベクトル)の解を求める連立方程式求解装置であって、
係数行列Aと定数ベクトルbとを記憶しているパラメタ記憶手段と、
前記パラメタ記憶手段から係数行列Aと定数ベクトルbとを読み出し、読み出した係数行列A及び定数ベクトルbを三角化変換して方程式Ax=bと同値の関係を有するn元連立一次方程式Cx=dの係数行列C(Cはn行n列の成分からなる係数行列)及び定数ベクトルd(dはn個の成分からなる定数ベクトル)を生成する三角化変換手段と、
前記三角化変換は、係数行列Aの三角化の際に対角成分毎の有限体GF(p)の除算をしない、係数行列Aの上三角行列への変換であり、
生成された係数行列Cの各対角成分の有限体GF(p)上の逆元である対角逆元を生成する対角逆元演算手段と、
生成された係数行列Cと定数ベクトルdと生成された各対角逆元とを用いて、方程式Ax=bの解として、方程式Cx=dの解を求める方程式求解手段と
を備え、
前記三角化変換手段は、連続する1個以上の変換過程を介して前記方程式Cx=dの係数行列C及び定数ベクトルdを生成し、
前記各変換過程において、前記三角化変換手段は、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のn元連立一次方程式は、方程式Ax=bであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式Cx=dであり、
前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含み、
前記三角化変換手段は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第1係数群と第2係数群とを定め、
ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られ、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
前記三角化変換手段は、前記各変換過程において、1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記三角化変換手段は、各副変換過程において、
軸方程式の0でない係数を有する最高次の変数の係数から構成される群を第1係数群と定め、
軸方程式の各係数及び定数のそれぞれに対象方程式の0でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第2係数群と定め、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
係数行列Cの対角成分をmi (i=1、2、...、n)とし、対角成分mi のGF(p)上の対角逆元をIi (i=1、2、...、n)とし、
前記対角逆元演算手段は、
前記三角化変換手段から係数行列Cの対角成分mi (i=1、2、...、n)を受け取り、
を算出し、
を算出する乗算部と、
u=1/t mod p
を算出する第1逆元演算部と、
対角逆元Ii = u×ti mod p (i=1、2、...、n)
を算出する第2逆元演算部とを含み、
算出した対角逆元Ii (i=1、2、...、n)を方程式求解手段へ出力し、
前記方程式求解手段は、
カウンタj=n−1、n−2、・・・、2、1、0のように設定し、カウンタjの各値について、係数行列C、定数ベクトルd、対角逆元Ii (i=1、2、・・・、n)を用いて、
j=n−1のとき、 yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
を算出して、方程式Cx=dの解を求め、その解を方程式Ax=bの解とし、
C及びdは以下のように定義される
ことを特徴とする連立方程式求解装置。 - 有限体GF(p)(pは素数)上のn元連立一次方程式Ax=b(nは正の整数、Aはn行n列の成分からなる係数行列、xはn個の成分からなる変数ベクトル、bはn個の成分からなる定数ベクトル)の解を求める連立方程式求解装置であって、
係数行列Aと定数ベクトルbとを記憶しているパラメタ記憶手段と、
前記パラメタ記憶手段から係数行列Aと定数ベクトルbとを読み出し、読み出した係数行列A及び定数ベクトルbを三角化変換して方程式Ax=bと同値の関係を有するn元連立一次方程式Cx=dの係数行列C(Cはn行n列の成分からなる係数行列)及び定数ベクトルd(dはn個の成分からなる定数ベクトル)を生成する三角化変換手段と、
前記三角化変換は、係数行列Aの三角化の際に対角成分毎の有限体GF(p)の除算をしない、係数行列Aの上三角行列への変換であり、
生成された係数行列Cの各対角成分の有限体GF(p)上の逆元である対角逆元を生成する対角逆元演算手段と、
生成された係数行列Cと定数ベクトルdと生成された各対角逆元とを用いて、方程式Ax=bの解として、方程式Cx=dの解を求める方程式求解手段と
を備え、
前記三角化変換手段は、連続する1個以上の変換過程を介して前記方程式Cx=dの係数行列C及び定数ベクトルdを生成し、
前記各変換過程において、前記三角化変換手段は、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のn元連立一次方程式は、方程式Ax=bであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式Cx=dであり、
前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含み、
前記三角化変換手段は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第1係数群と第2係数群とを定め、
ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られ、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
前記三角化変換手段は、前記各変換過程において、1個の係数群算出過程と、前記係数群算出過程後に1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記係数群算出過程において、前記三角化変換手段は、軸方程式及び1個以上の対象方程式の0でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる2個以上の値から構成される群を第1係数群と定め、
前記第1係数群に含まれる値であって、軸方程式の0でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた1個以上の値から構成される群を第2係数群と定め、
前記副変換過程において、前記三角化変換手段は、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
係数行列Cの対角成分をmi (i=1、2、...、n)とし、対角成分mi のGF(p)上の対角逆元をIi (i=1、2、...、n)とし、
前記対角逆元演算手段は、
前記三角化変換手段から係数行列Cの対角成分mi (i=1、2、...、n)を受け取り、
を算出し、
を算出する乗算部と、
u=1/t mod p
を算出する第1逆元演算部と、
対角逆元Ii = u×ti mod p (i=1、2、...、n)
を算出する第2逆元演算部とを含み、
算出した対角逆元Ii (i=1、2、...、n)を方程式求解手段へ出力し、
前記方程式求解手段は、
カウンタj=n−1、n−2、・・・、2、1、0のように設定し、カウンタjの各値について、係数行列C、定数ベクトルd、対角逆元Ii (i=1、2、・・・、n)を用いて、
j=n−1のとき、 yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
を算出して、方程式Cx=dの解を求め、その解を方程式Ax=bの解とし、
C及びdは以下のように定義される
ことを特徴とする連立方程式求解装置。 - 前記乗算部は、
s1 =m1 ×m2 mod p、
s2 =s1 ×m3 mod p、
・・・
sn-3 =sn-4 ×mn-2 mod p
をこの順序で算出し、
次に、
tn =sn-3 ×mn-1 mod p
tn-1 =sn-3 ×mn mod p
sn =mn-1 ×mn mod p
tn-2 =sn-4 ×sn mod p
sn-1 =mn-2 ×sn mod p
tn-3 =sn-5 ×sn-1 mod p
sn-2 =mn-3 ×sn-1 mod p
tn-4 =sn-6 ×sn-2 mod p
・・・
s5 =m4 ×s6 mod p
t3 =s1 ×s5 mod p
s4 =m3 ×s5 mod p
t2 =m1 ×s4 mod p
t1 =m2 ×s4 mod p
をこの順序で算出し、
次に、正の整数の集合{1、2、...、n}から選択された1個の値jについて、
t=tj ×mj
を算出する
ことを特徴とする請求項1又は請求項2のいずれかに記載の連立方程式求解装置。 - 有限体GF(p)(pは素数)の拡大体GF(q)(q=pn 、nは正の整数)の元xの逆元Iを演算する逆元演算装置であって、
元xと拡大体GF(p)上の多項式の係数とを用いて、n元連立一次方程式Ay=Bの係数行列A及び定数ベクトルBを生成する方程式生成手段と、
請求項1〜3のいずれかに記載の連立方程式求解装置であって、n元連立一次方程式Ay=Bの解を求める方程式演算手段と、
前記根と求められた前記解とを用いて、逆元Iを算出する逆元算出手段と
を備えることを特徴とする逆元演算装置。 - 有限体GF(p)(pは素数)の拡大体GF(q)(q=pn 、nは正の整数)の上の楕円曲線をE、楕円曲線EのベースポイントをGとし、楕円曲線E上の離散対数問題を安全性の根拠として利用して安全性を確保する通信を行い、安全性の確保に際して拡大体GF(q)上の元xの逆元Iを算出する通信システムであって、
元xと拡大体GF(p)上の多項式の係数とを用いて、n元連立一次方程式Ay=Bの係数行列A及び定数ベクトルBを生成する方程式生成手段と、
請求項1〜3のいずれかに記載の連立方程式求解装置であって、n元連立一次方程式Ay=Bの解を求める方程式演算手段と、
前記根と求められた前記解とを用いて、逆元Iを算出する逆元算出手段と
を備えることを特徴とする通信システム。 - 有限体GF(p)(pは素数)の拡大体GF(q)(q=pn 、nは正の整数)の上の楕円曲線をE、楕円曲線EのベースポイントをGとし、楕円曲線E上の離散対数問題を安全性の根拠として暗号化されたデジタル著作物を記録している記録媒体から暗号化デジタル著作物を読み出して復号し、復号に際して拡大体GF(q)上の元xの逆元Iを算出する記録媒体再生装置であって、
元xと拡大体GF(p)上の多項式の係数とを用いて、n元連立一次方程式Ay=Bの係数行列A及び定数ベクトルBを生成する方程式生成手段と、
請求項1〜3のいずれかに記載の連立方程式求解装置であって、n元連立一次方程式Ay=Bの解を求める方程式演算手段と、
前記根と求められた前記解とを用いて、逆元Iを算出する逆元算出手段と
を備えることを特徴とする記録媒体再生装置。 - 有限体GF(p)(pは素数)上のn元連立一次方程式Ax=b(nは正の整数、Aはn行n列の成分からなる係数行列、xはn個の成分からなる変数ベクトル、bはn個の成分からなる定数ベクトル)の解を求め、係数行列Aと定数ベクトルbとを記憶しているパラメタ記憶手段を備える連立方程式求解装置において用いられる連立方程式求解方法であって、
係数行列Aと定数ベクトルbとをパラメタ記憶手段に記憶する記憶ステップと、
前記パラメタ記憶手段から係数行列Aと定数ベクトルbとを読み出し、読み出した係数行列A及び定数ベクトルbを三角化変換して方程式Ax=bと同値の関係を有するn元連立一次方程式Cx=dの係数行列C(Cはn行n列の成分からなる係数行列)及び定数ベクトルd(dはn個の成分からなる定数ベクトル)を生成する三角化変換ステップと、
前記三角化変換は、係数行列Aの三角化の際に対角成分毎の有限体GF(p)の除算をしない、係数行列Aの上三角行列への変換であり、
生成された係数行列Cの各対角成分の有限体GF(p)上の逆元である対角逆元を生成する対角逆元演算ステップと、
生成された係数行列Cと定数ベクトルdと生成された各対角逆元とを用いて、方程式Ax=bの解として、方程式Cx=dの解を求める方程式求解ステップと
を含み、
前記三角化変換ステップは、連続する1個以上の変換過程を介して前記方程式Cx=dの係数行列C及び定数ベクトルdを生成し、
前記各変換過程において、前記三角化変換ステップは、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のn元連立一次方程式は、方程式Ax=bであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式Cx=dであり、
前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含み、
前記三角化変換ステップは、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第1係数群と第2係数群とを定め、
ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られ、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
前記三角化変換ステップは、前記各変換過程において、1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記三角化変換ステップは、各副変換過程において、
軸方程式の0でない係数を有する最高次の変数の係数から構成される群を第1係数群と定め、
軸方程式の各係数及び定数のそれぞれに対象方程式の0でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第2係数群と定め、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
係数行列Cの対角成分をmi (i=1、2、...、n)とし、対角成分mi のGF(p)上の対角逆元をIi (i=1、2、...、n)とし、
前記対角逆元演算ステップは、
前記三角化変換ステップから係数行列Cの対角成分mi (i=1、2、...、n)を受け取り、
を算出し、
を算出する乗算ステップと、
u=1/t mod p
を算出する第1逆元演算ステップと、
対角逆元Ii = u×ti mod p (i=1、2、...、n)
を算出する第2逆元演算ステップとを含み、
算出した対角逆元Ii (i=1、2、...、n)を方程式求解ステップへ出力し、
前記方程式求解ステップは、
カウンタj=n−1、n−2、・・・、2、1、0のように設定し、カウンタjの各値について、係数行列C、定数ベクトルd、対角逆元Ii (i=1、2、・・・、n)を用いて、
j=n−1のとき、 yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
を算出して、方程式Cx=dの解を求め、その解を方程式Ax=bの解とし、
C及びdは以下のように定義される
ことを特徴とする連立方程式求解方法。 - 有限体GF(p)(pは素数)上のn元連立一次方程式Ax=b(nは正の整数、Aはn行n列の成分からなる係数行列、xはn個の成分からなる変数ベクトル、bはn個の成分からなる定数ベクトル)の解を求め、係数行列Aと定数ベクトルbとを記憶しているパラメタ記憶手段を備える連立方程式求解装置において用いられる連立方程式求解方法であって、
前記パラメタ記憶手段から係数行列Aと定数ベクトルbとを読み出し、読み出した係数行列A及び定数ベクトルbを三角化変換して方程式Ax=bと同値の関係を有するn元連立一次方程式Cx=dの係数行列C(Cはn行n列の成分からなる係数行列)及び定数ベクトルd(dはn個の成分からなる定数ベクトル)を生成する三角化変換ステップと、
前記三角化変換は、係数行列Aの三角化の際に対角成分毎の有限体GF(p)の除算をしない、係数行列Aの上三角行列への変換であり、
生成された係数行列Cの各対角成分の有限体GF(p)上の逆元である対角逆元を生成する対角逆元演算ステップと、
生成された係数行列Cと定数ベクトルdと生成された各対角逆元とを用いて、方程式Ax=bの解として、方程式Cx=dの解を求める方程式求解ステップと
を含み、
前記三角化変換ステップは、連続する1個以上の変換過程を介して前記方程式Cx=dの係数行列C及び定数ベクトルdを生成し、
前記各変換過程において、前記三角化変換ステップは、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のn元連立一次方程式は、方程式Ax=bであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式Cx=dであり、
前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含み、
前記三角化変換ステップは、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第1係数群と第2係数群とを定め、
ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られ、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
前記三角化変換ステップは、前記各変換過程において、1個の係数群算出過程と、前記係数群算出過程後に1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記係数群算出過程において、前記三角化変換ステップは、軸方程式及び1個以上の対象方程式の0でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる2個以上の値から構成される群を第1係数群と定め、
前記第1係数群に含まれる値であって、軸方程式の0でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた1個以上の値から構成される群を第2係数群と定め、
前記副変換過程において、前記三角化変換ステップは、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
係数行列Cの対角成分をmi (i=1、2、...、n)とし、対角成分mi のGF(p)上の対角逆元をIi (i=1、2、...、n)とし、
前記対角逆元演算ステップは、
前記三角化変換ステップから係数行列Cの対角成分mi (i=1、2、...、n)を受け取り、
を算出し、
を算出する乗算ステップと、
u=1/t mod p
を算出する第1逆元演算ステップと、
対角逆元Ii = u×ti mod p (i=1、2、...、n)
を算出する第2逆元演算ステップとを含み、
算出した対角逆元Ii (i=1、2、...、n)を方程式求解ステップへ出力し、
前記方程式求解ステップは、
カウンタj=n−1、n−2、・・・、2、1、0のように設定し、カウンタjの各値について、係数行列C、定数ベクトルd、対角逆元Ii (i=1、2、・・・、n)を用いて、
j=n−1のとき、 yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
を算出して、方程式Cx=dの解を求め、その解を方程式Ax=bの解とし、
C及びdは以下のように定義される
ことを特徴とする連立方程式求解方法。 - 前記乗算ステップは、
s1 =m1 ×m2 mod p、
s2 =s1 ×m3 mod p、
・・・
sn-3 =sn-4 ×mn-2 mod p
をこの順序で算出し、
次に、
tn =sn-3 ×mn-1 mod p
tn-1 =sn-3 ×mn mod p
sn =mn-1 ×mn mod p
tn-2 =sn-4 ×sn mod p
sn-1 =mn-2 ×sn mod p
tn-3 =sn-5 ×sn-1 mod p
sn-2 =mn-3 ×sn-1 mod p
tn-4 =sn-6 ×sn-2 mod p
・・・
s5 =m4 ×s6 mod p
t3 =s1 ×s5 mod p
s4 =m3 ×s5 mod p
t2 =m1 ×s4 mod p
t1 =m2 ×s4 mod p
をこの順序で算出し、
次に、正の整数の集合{1、2、...、n}から選択された1個の値jについて、
t=tj ×mj
を算出する
ことを特徴とする請求項7又は請求項8のいずれか記載の連立方程式求解方法。 - 有限体GF(p)(pは素数)上のn元連立一次方程式Ax=b(nは正の整数、Aはn行n列の成分からなる係数行列、xはn個の成分からなる変数ベクトル、bはn個の成分からなる定数ベクトル)の解を求め、係数行列Aと定数ベクトルbとを記憶しているパラメタ記憶手段を備えるコンピュータで用いられる連立方程式求解プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに対して前記プログラムは、
前記パラメタ記憶手段から係数行列Aと定数ベクトルbとを読み出し、読み出した係数行列A及び定数ベクトルbを三角化変換して方程式Ax=bと同値の関係を有するn元連立一次方程式Cx=dの係数行列C(Cはn行n列の成分からなる係数行列)及び定数ベクトルd(dはn個の成分からなる定数ベクトル)を生成する三角化変換処理と、
前記三角化変換は、係数行列Aの三角化の際に対角成分毎の有限体GF(p)の除算をしない、係数行列Aの上三角行列への変換であり、
生成された係数行列Cの各対角成分の有限体GF(p)上の逆元である対角逆元を生成する対角逆元演算処理と、
生成された係数行列Cと定数ベクトルdと生成された各対角逆元とを用いて、方程式Ax=bの解として、方程式Cx=dの解を求める方程式求解処理と
を実行させ、
前記三角化変換処理は、連続する1個以上の変換過程を介して前記方程式Cx=dの係数行列C及び定数ベクトルdを生成し、
前記各変換過程において、前記三角化変換ステップは、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のn元連立一次方程式は、方程式Ax=bであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式Cx=dであり、
前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含み、
前記三角化変換処理は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第1係数群と第2係数群とを定め、
ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られ、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
前記三角化変換処理は、前記各変換過程において、1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記三角化変換処理は、各副変換過程において、
軸方程式の0でない係数を有する最高次の変数の係数から構成される群を第1係数群と定め、
軸方程式の各係数及び定数のそれぞれに対象方程式の0でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第2係数群と定め、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
係数行列Cの対角成分をmi (i=1、2、...、n)とし、対角成分mi のGF(p)上の対角逆元をIi (i=1、2、...、n)とし、
前記対角逆元演算処理は、
前記三角化変換処理から係数行列Cの対角成分mi (i=1、2、...、n)を受け取り、
を算出し、
を算出する乗算処理と、
u=1/t mod p
を算出する第1逆元演算処理と、
対角逆元Ii = u×ti mod p (i=1、2、...、n)
を算出する第2逆元演算処理とを含み、
算出した対角逆元Ii (i=1、2、...、n)を方程式求解処理へ出力し、
前記方程式求解処理は、
カウンタj=n−1、n−2、・・・、2、1、0のように設定し、カウンタjの各値について、係数行列C、定数ベクトルd、対角逆元Ii (i=1、2、・・・、n)を用いて、
j=n−1のとき、 yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
を算出して、方程式Cx=dの解を求め、その解を方程式Ax=bの解とし、
C及びdは以下のように定義される
する
ことを特徴とする記録媒体。 - 有限体GF(p)(pは素数)上のn元連立一次方程式Ax=b(nは正の整数、Aはn行n列の成分からなる係数行列、xはn個の成分からなる変数ベクトル、bはn個の成分からなる定数ベクトル)の解を求め、係数行列Aと定数ベクトルbとを記憶しているパラメタ記憶手段を備えるコンピュータで用いられる連立方程式求解プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに対して前記プログラムは、
前記パラメタ記憶手段から係数行列Aと定数ベクトルbとを読み出し、読み出した係数行列A及び定数ベクトルbを三角化変換して方程式Ax=bと同値の関係を有するn元連立一次方程式Cx=dの係数行列C(Cはn行n列の成分からなる係数行列)及び定数ベクトルd(dはn個の成分からなる定数ベクトル)を生成する三角化変換処理と、
前記三角化変換は、係数行列Aの三角化の際に対角成分毎の有限体GF(p)の除算をしない、係数行列Aの上三角行列への変換であり、
生成された係数行列Cの各対角成分の有限体GF(p)上の逆元である対角逆元を生成する対角逆元演算処理と、
生成された係数行列Cと定数ベクトルdと生成された各対角逆元とを用いて、方程式Ax=bの解として、方程式Cx=dの解を求める方程式求解処理と
を実行させ、
前記三角化変換処理は、連続する1個以上の変換過程を介して前記方程式Cx=dの係数行列C及び定数ベクトルdを生成し、
前記各変換過程において、前記三角化変換ステップは、変換前のn元連立一次方程式から、変換前のn元連立一次方程式と同値の関係を有する変換後のn元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のn元連立一次方程式は、方程式Ax=bであり、最後の変換過程において、変換後のn元連立一次方程式は、方程式Cx=dであり、
前記各変換過程において、前記変換前のn元連立一次方程式は、変換の対象となる1個以上のn元一次方程式である対象方程式と、変換の軸となるn元一次方程式である軸方程式とを含み、
前記三角化変換処理は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第1係数群と第2係数群とを定め、
ここで、前記第1係数群と前記第2係数群とは、それぞれ軸方程式に係る1個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引くことにより、前記対象方程式において0でない係数を有する最高次の変数の係数が0となる前記同値方程式が得られ、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
前記三角化変換処理は、前記各変換過程において、1個の係数群算出過程と、前記係数群算出過程後に1個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記係数群算出過程において、前記三角化変換ステップは、軸方程式及び1個以上の対象方程式の0でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる2個以上の値から構成される群を第1係数群と定め、
前記第1係数群に含まれる値であって、軸方程式の0でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた1個以上の値から構成される群を第2係数群と定め、
前記副変換過程において、前記三角化変換ステップは、
前記対象方程式において、0でない係数を有する最高次の変数の係数を0とし、
前記対象方程式において、0でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第1係数群に含まれる値を乗じ、得られたそれぞれの値から前記第2係数群に含まれる値を引き、
係数行列Cの対角成分をmi (i=1、2、...、n)とし、対角成分mi のGF(p)上の対角逆元をIi (i=1、2、...、n)とし、
前記対角逆元演算処理は、
前記三角化変換処理から係数行列Cの対角成分mi (i=1、2、...、n)を受け取り、
を算出し、
を算出する乗算処理と、
u=1/t mod p
を算出する第1逆元演算処理と、
対角逆元Ii = u×ti mod p (i=1、2、...、n)
を算出する第2逆元演算処理とを含み、
算出した対角逆元Ii (i=1、2、...、n)を方程式求解処理へ出力し、
前記方程式求解処理は、
カウンタj=n−1、n−2、・・・、2、1、0のように設定し、カウンタjの各値について、係数行列C、定数ベクトルd、対角逆元Ii (i=1、2、・・・、n)を用いて、
j=n−1のとき、 yj =Ij+1 ×dj+1 mod p
j≠n−1のとき、
を算出して、方程式Cx=dの解を求め、その解を方程式Ax=bの解とし、
C及びdは以下のように定義される
ことを特徴とする記録媒体。 - 前記乗算処理は、
s1 =m1 ×m2 mod p、
s2 =s1 ×m3 mod p、
・・・
sn-3 =sn-4 ×mn-2 mod p
をこの順序で算出し、
次に、
tn =sn-3 ×mn-1 mod p
tn-1 =sn-3 ×mn mod p
sn =mn-1 ×mn mod p
tn-2 =sn-4 ×sn mod p
sn-1 =mn-2 ×sn mod p
tn-3 =sn-5 ×sn-1 mod p
sn-2 =mn-3 ×sn-1 mod p
tn-4 =sn-6 ×sn-2 mod p
・・・
s5 =m4 ×s6 mod p
t3 =s1 ×s5 mod p
s4 =m3 ×s5 mod p
t2 =m1 ×s4 mod p
t1 =m2 ×s4 mod p
をこの順序で算出し、
次に、正の整数の集合{1、2、...、n}から選択された1個の値jについて、
t=tj ×mj
を算出する
ことを特徴とする請求項10又は11のいずれかに記載の記録媒体。
Priority Applications (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000140886A JP4354609B2 (ja) | 1999-07-16 | 2000-05-12 | 有限体上の連立方程式求解装置及び逆元演算装置 |
| US09/603,636 US7092522B1 (en) | 1999-07-16 | 2000-06-26 | Apparatus for solving system of equations on finite field and apparatus for inverting element of extension field |
| DE60037619T DE60037619T2 (de) | 1999-07-16 | 2000-06-27 | Vorrichtung zum Lösen eines Gleichungssystems in einem endlichen Körper und Vorrichtung zum Invertieren von Elementen eines Erweiterungskörpers |
| EP00305405A EP1069498B1 (en) | 1999-07-16 | 2000-06-27 | Apparatus for solving system of equations on finite field and apparatus for inverting element of extension field |
| CN00120117A CN1281203A (zh) | 1999-07-16 | 2000-07-17 | 用于求解有限域上方程系统的设备和用于逆运算外延域元素的设备 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11-203055 | 1999-07-16 | ||
| JP20305599 | 1999-07-16 | ||
| JP2000140886A JP4354609B2 (ja) | 1999-07-16 | 2000-05-12 | 有限体上の連立方程式求解装置及び逆元演算装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001092807A JP2001092807A (ja) | 2001-04-06 |
| JP4354609B2 true JP4354609B2 (ja) | 2009-10-28 |
Family
ID=26513721
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000140886A Expired - Fee Related JP4354609B2 (ja) | 1999-07-16 | 2000-05-12 | 有限体上の連立方程式求解装置及び逆元演算装置 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US7092522B1 (ja) |
| EP (1) | EP1069498B1 (ja) |
| JP (1) | JP4354609B2 (ja) |
| CN (1) | CN1281203A (ja) |
| DE (1) | DE60037619T2 (ja) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7170997B2 (en) | 2000-12-07 | 2007-01-30 | Cryptico A/S | Method of generating pseudo-random numbers in an electronic device, and a method of encrypting and decrypting electronic data |
| DE60311507T2 (de) * | 2002-10-26 | 2007-11-08 | The Additional Director (Ipr), Defence Research & Development Organisation | Verfahren zur elliptische-kurven-verschlüsselung |
| KR100564599B1 (ko) * | 2003-12-24 | 2006-03-29 | 삼성전자주식회사 | 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 |
| US8204232B2 (en) * | 2005-01-18 | 2012-06-19 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
| US7801307B2 (en) * | 2005-07-28 | 2010-09-21 | Alcatel-Lucent Usa Inc. | Method of symmetric key data encryption |
| JP5677273B2 (ja) * | 2011-11-18 | 2015-02-25 | 三菱電機株式会社 | 暗号処理システム、暗号処理方法、暗号処理プログラム及び鍵生成装置 |
| JP6059287B2 (ja) * | 2015-05-12 | 2017-01-11 | 日本電信電話株式会社 | 行列三角化装置およびプログラム |
| WO2020167254A1 (en) * | 2019-02-13 | 2020-08-20 | Agency For Science, Technology And Research | Method and system for determining an order of encrypted inputs |
| AU2019449126B2 (en) * | 2019-06-07 | 2022-10-27 | Ntt, Inc. | Secure conjugate gradient method computation system, secure computation apparatus, conjugate gradient method computation apparatus, secure conjugate gradient method computation method, conjugate gradient method computation method, and program |
| AU2019461061B2 (en) * | 2019-08-14 | 2023-03-30 | Ntt, Inc. | Secure gradient descent computation method, secure deep learning method, secure gradient descent computation system, secure deep learning system, secure computation apparatus, and program |
| CN115730176B (zh) * | 2022-09-07 | 2025-10-10 | 安徽大学 | 一种紫外高光谱大气臭氧垂直柱浓度反演方法 |
| CN116992730B (zh) * | 2023-08-07 | 2024-07-19 | 西安电子科技大学 | 一种矩形波导凋落模电磁特性求解方法 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| SE7714587L (sv) * | 1977-12-21 | 1979-06-22 | Brendstrom Hugo | System for meddelanden |
| US5375170A (en) * | 1992-11-13 | 1994-12-20 | Yeda Research & Development Co., Ltd. | Efficient signature scheme based on birational permutations |
-
2000
- 2000-05-12 JP JP2000140886A patent/JP4354609B2/ja not_active Expired - Fee Related
- 2000-06-26 US US09/603,636 patent/US7092522B1/en not_active Expired - Lifetime
- 2000-06-27 EP EP00305405A patent/EP1069498B1/en not_active Expired - Lifetime
- 2000-06-27 DE DE60037619T patent/DE60037619T2/de not_active Expired - Fee Related
- 2000-07-17 CN CN00120117A patent/CN1281203A/zh active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| US7092522B1 (en) | 2006-08-15 |
| EP1069498A2 (en) | 2001-01-17 |
| DE60037619D1 (de) | 2008-02-14 |
| DE60037619T2 (de) | 2008-05-21 |
| CN1281203A (zh) | 2001-01-24 |
| EP1069498B1 (en) | 2008-01-02 |
| JP2001092807A (ja) | 2001-04-06 |
| EP1069498A3 (en) | 2005-04-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4354609B2 (ja) | 有限体上の連立方程式求解装置及び逆元演算装置 | |
| US7486789B2 (en) | Device and method for calculation on elliptic curve | |
| CN104065478A (zh) | 基于格密码体系的多项式模乘协处理器 | |
| JP2012185517A (ja) | 同時スカラー乗算方法 | |
| JP2001526416A (ja) | 楕円曲線暗号化演算の最適化用変換方法 | |
| US10057064B2 (en) | Computational method, computational device and computer software product for montgomery domain | |
| JP3542278B2 (ja) | モンゴメリ・リダクション装置及び記録媒体 | |
| WO2006035732A1 (ja) | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム | |
| Larasati et al. | Depth optimization of FLT-based quantum inversion circuit | |
| EP1163605B1 (en) | Method for efficient basis conversion | |
| JP2025510693A (ja) | 閾値最適マルチパーティ計算 | |
| JP3551853B2 (ja) | αYa+βXb+1=0という形の定義方程式をもつ代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体 | |
| Moon | A Binary Redundant Scalar Point Multiplication in Secure Elliptic Curve Cryptosystems. | |
| CN114817954B (zh) | 图像的处理方法、系统和装置 | |
| JP2000321979A (ja) | 多項式演算装置、楕円曲線位数計算装置、楕円曲線生成装置及び楕円曲線暗号システム | |
| JP3892229B2 (ja) | 超楕円曲線暗号パラメータ生成方法及び超楕円曲線暗号パラメータ生成装置 | |
| JP4550232B2 (ja) | 演算装置及び演算方法及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
| JP4479135B2 (ja) | 演算装置及び演算方法及び演算プログラム | |
| JP3768888B2 (ja) | 離散対数検証方法、この方法を実施する装置、プログラムおよびプログラムを記憶した記憶媒体 | |
| JP2004205870A (ja) | 超楕円曲線スカラー倍演算方法及び装置 | |
| JP3638493B2 (ja) | 楕円曲線自乗演算装置、およびこのプログラム記録媒体 | |
| JP3966714B2 (ja) | 暗号処理方法、そのプログラム及びその記録媒体 | |
| JP2007212768A (ja) | 楕円曲線暗号における事前計算テーブル作成装置 | |
| JP2001202019A (ja) | 並列楕円演算装置及びそのプログラム記録媒体 | |
| JP2010164878A (ja) | 楕円スカラー倍演算装置、方法及びプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070319 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080724 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080812 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080909 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090224 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090421 |
|
| 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: 20090707 |
|
| 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: 20090730 |
|
| 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: 20120807 Year of fee payment: 3 |
|
| LAPS | Cancellation because of no payment of annual fees |
