(57)【特許請求の範囲】
【請求項１】
有限体ＧＦ（ｐ）（ｐは素数）上のｎ元連立一次方程式Ａｘ＝ｂ（ｎは正の整数、Ａはｎ行ｎ列の成分からなる係数行列、ｘはｎ個の成分からなる変数ベクトル、ｂはｎ個の成分からなる定数ベクトル）の解を求める連立方程式求解装置であって、
係数行列Ａと定数ベクトルｂとを記憶しているパラメタ記憶手段と、
前記パラメタ記憶手段から係数行列Ａと定数ベクトルｂとを読み出し、読み出した係数行列Ａ及び定数ベクトルｂを三角化変換して方程式Ａｘ＝ｂと同値の関係を有するｎ元連立一次方程式Ｃｘ＝ｄの係数行列Ｃ（Ｃはｎ行ｎ列の成分からなる係数行列）及び定数ベクトルｄ（ｄはｎ個の成分からなる定数ベクトル）を生成する三角化変換手段と、
前記三角化変換は、係数行列Ａの三角化の際に対角成分毎の有限体ＧＦ（ｐ）の除算をしない、係数行列Ａの上三角行列への変換であり、
生成された係数行列Ｃの各対角成分の有限体ＧＦ（ｐ）上の逆元である対角逆元を生成する対角逆元演算手段と、
生成された係数行列Ｃと定数ベクトルｄと生成された各対角逆元とを用いて、方程式Ａｘ＝ｂの解として、方程式Ｃｘ＝ｄの解を求める方程式求解手段と
を備え、
前記三角化変換手段は、連続する１個以上の変換過程を介して前記方程式Ｃｘ＝ｄの係数行列Ｃ及び定数ベクトルｄを生成し、
前記各変換過程において、前記三角化変換手段は、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ａｘ＝ｂであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｃｘ＝ｄであり、
前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含み、
前記三角化変換手段は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第１係数群と第２係数群とを定め、
ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られ、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
前記三角化変換手段は、前記各変換過程において、１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記三角化変換手段は、各副変換過程において、
軸方程式の０でない係数を有する最高次の変数の係数から構成される群を第１係数群と定め、
軸方程式の各係数及び定数のそれぞれに対象方程式の０でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第２係数群と定め、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
係数行列Ｃの対角成分をｍi （ｉ＝１、２、．．．、ｎ）とし、対角成分ｍi のＧＦ（ｐ）上の対角逆元をＩi （ｉ＝１、２、．．．、ｎ）とし、
前記対角逆元演算手段は、
前記三角化変換手段から係数行列Ｃの対角成分ｍi （ｉ＝１、２、．．．、ｎ）を受け取り、
【数１】
0004354609.tif 000039
を算出し、
【数２】
0004354609.tif 000040
を算出する乗算部と、
ｕ＝１／ｔ  ｍｏｄ  ｐ
を算出する第１逆元演算部と、
対角逆元Ｉi   ＝  ｕ×ｔi   ｍｏｄ  ｐ    （ｉ＝１、２、．．．、ｎ）
を算出する第２逆元演算部とを含み、
算出した対角逆元Ｉi （ｉ＝１、２、．．．、ｎ）を方程式求解手段へ出力し、
前記方程式求解手段は、
カウンタｊ＝ｎ−１、ｎ−２、・・・、２、１、０のように設定し、カウンタｊの各値について、係数行列Ｃ、定数ベクトルｄ、対角逆元Ｉi （ｉ＝１、２、・・・、ｎ）を用いて、
ｊ＝ｎ−１のとき、  ｙj ＝Ｉj+1 ×ｄj+1   ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【数３】
0004354609.tif 000041
を算出して、方程式Ｃｘ＝ｄの解を求め、その解を方程式Ａｘ＝ｂの解とし、
Ｃ及びｄは以下のように定義される
【数４】
0004354609.tif 000042
ことを特徴とする連立方程式求解装置。
【請求項２】
有限体ＧＦ（ｐ）（ｐは素数）上のｎ元連立一次方程式Ａｘ＝ｂ（ｎは正の整数、Ａはｎ行ｎ列の成分からなる係数行列、ｘはｎ個の成分からなる変数ベクトル、ｂはｎ個の成分からなる定数ベクトル）の解を求める連立方程式求解装置であって、
係数行列Ａと定数ベクトルｂとを記憶しているパラメタ記憶手段と、
前記パラメタ記憶手段から係数行列Ａと定数ベクトルｂとを読み出し、読み出した係数行列Ａ及び定数ベクトルｂを三角化変換して方程式Ａｘ＝ｂと同値の関係を有するｎ元連立一次方程式Ｃｘ＝ｄの係数行列Ｃ（Ｃはｎ行ｎ列の成分からなる係数行列）及び定数ベクトルｄ（ｄはｎ個の成分からなる定数ベクトル）を生成する三角化変換手段と、
前記三角化変換は、係数行列Ａの三角化の際に対角成分毎の有限体ＧＦ（ｐ）の除算をしない、係数行列Ａの上三角行列への変換であり、
生成された係数行列Ｃの各対角成分の有限体ＧＦ（ｐ）上の逆元である対角逆元を生成する対角逆元演算手段と、
生成された係数行列Ｃと定数ベクトルｄと生成された各対角逆元とを用いて、方程式Ａｘ＝ｂの解として、方程式Ｃｘ＝ｄの解を求める方程式求解手段と
を備え、
前記三角化変換手段は、連続する１個以上の変換過程を介して前記方程式Ｃｘ＝ｄの係数行列Ｃ及び定数ベクトルｄを生成し、
前記各変換過程において、前記三角化変換手段は、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ａｘ＝ｂであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｃｘ＝ｄであり、
前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含み、
前記三角化変換手段は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第１係数群と第２係数群とを定め、
ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られ、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
前記三角化変換手段は、前記各変換過程において、１個の係数群算出過程と、前記係数群算出過程後に１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記係数群算出過程において、前記三角化変換手段は、軸方程式及び１個以上の対象方程式の０でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる２個以上の値から構成される群を第１係数群と定め、
前記第１係数群に含まれる値であって、軸方程式の０でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた１個以上の値から構成される群を第２係数群と定め、
前記副変換過程において、前記三角化変換手段は、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
係数行列Ｃの対角成分をｍi （ｉ＝１、２、．．．、ｎ）とし、対角成分ｍi のＧＦ（ｐ）上の対角逆元をＩi （ｉ＝１、２、．．．、ｎ）とし、
前記対角逆元演算手段は、
前記三角化変換手段から係数行列Ｃの対角成分ｍi （ｉ＝１、２、．．．、ｎ）を受け取り、
【数１】
0004354609.tif 000043
を算出し、
【数２】
0004354609.tif 000044
を算出する乗算部と、
ｕ＝１／ｔ  ｍｏｄ  ｐ
を算出する第１逆元演算部と、
対角逆元Ｉi   ＝  ｕ×ｔi   ｍｏｄ  ｐ    （ｉ＝１、２、．．．、ｎ）
を算出する第２逆元演算部とを含み、
算出した対角逆元Ｉi （ｉ＝１、２、．．．、ｎ）を方程式求解手段へ出力し、
前記方程式求解手段は、
カウンタｊ＝ｎ−１、ｎ−２、・・・、２、１、０のように設定し、カウンタｊの各値について、係数行列Ｃ、定数ベクトルｄ、対角逆元Ｉi （ｉ＝１、２、・・・、ｎ）を用いて、
ｊ＝ｎ−１のとき、  ｙj ＝Ｉj+1 ×ｄj+1   ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【数３】
0004354609.tif 000045
を算出して、方程式Ｃｘ＝ｄの解を求め、その解を方程式Ａｘ＝ｂの解とし、
Ｃ及びｄは以下のように定義される
【数４】
0004354609.tif 000046
ことを特徴とする連立方程式求解装置。
【請求項３】
前記乗算部は、
ｓ1 ＝ｍ1 ×ｍ2   ｍｏｄ  ｐ、
ｓ2 ＝ｓ1 ×ｍ3   ｍｏｄ  ｐ、
・・・
ｓn-3 ＝ｓn-4 ×ｍn-2   ｍｏｄ  ｐ
をこの順序で算出し、
次に、
ｔn ＝ｓn-3 ×ｍn-1   ｍｏｄ  ｐ
ｔn-1 ＝ｓn-3 ×ｍn   ｍｏｄ  ｐ
ｓn ＝ｍn-1 ×ｍn   ｍｏｄ  ｐ
ｔn-2 ＝ｓn-4 ×ｓn   ｍｏｄ  ｐ
ｓn-1 ＝ｍn-2 ×ｓn   ｍｏｄ  ｐ
ｔn-3 ＝ｓn-5 ×ｓn-1   ｍｏｄ  ｐ
ｓn-2 ＝ｍn-3 ×ｓn-1   ｍｏｄ  ｐ
ｔn-4 ＝ｓn-6 ×ｓn-2   ｍｏｄ  ｐ
・・・
ｓ5 ＝ｍ4 ×ｓ6   ｍｏｄ  ｐ
ｔ3 ＝ｓ1 ×ｓ5   ｍｏｄ  ｐ
ｓ4 ＝ｍ3 ×ｓ5   ｍｏｄ  ｐ
ｔ2 ＝ｍ1 ×ｓ4   ｍｏｄ  ｐ
ｔ1 ＝ｍ2 ×ｓ4   ｍｏｄ  ｐ
をこの順序で算出し、
次に、正の整数の集合｛１、２、．．．、ｎ｝から選択された１個の値ｊについて、
ｔ＝ｔj ×ｍj
を算出する
ことを特徴とする請求項１又は請求項２のいずれかに記載の連立方程式求解装置。
【請求項４】
有限体ＧＦ（ｐ）（ｐは素数）の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｎは正の整数）の元ｘの逆元Ｉを演算する逆元演算装置であって、
元ｘと拡大体ＧＦ（ｐ）上の多項式の係数とを用いて、ｎ元連立一次方程式Ａｙ＝Ｂの係数行列Ａ及び定数ベクトルＢを生成する方程式生成手段と、
請求項１〜３のいずれかに記載の連立方程式求解装置であって、ｎ元連立一次方程式Ａｙ＝Ｂの解を求める方程式演算手段と、
前記根と求められた前記解とを用いて、逆元Ｉを算出する逆元算出手段と
を備えることを特徴とする逆元演算装置。
【請求項５】
有限体ＧＦ（ｐ）（ｐは素数）の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｎは正の整数）の上の楕円曲線をＥ、楕円曲線ＥのベースポイントをＧとし、楕円曲線Ｅ上の離散対数問題を安全性の根拠として利用して安全性を確保する通信を行い、安全性の確保に際して拡大体ＧＦ（ｑ）上の元ｘの逆元Ｉを算出する通信システムであって、
元ｘと拡大体ＧＦ（ｐ）上の多項式の係数とを用いて、ｎ元連立一次方程式Ａｙ＝Ｂの係数行列Ａ及び定数ベクトルＢを生成する方程式生成手段と、
請求項１〜３のいずれかに記載の連立方程式求解装置であって、ｎ元連立一次方程式Ａｙ＝Ｂの解を求める方程式演算手段と、
前記根と求められた前記解とを用いて、逆元Ｉを算出する逆元算出手段と
を備えることを特徴とする通信システム。
【請求項６】
有限体ＧＦ（ｐ）（ｐは素数）の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｎは正の整数）の上の楕円曲線をＥ、楕円曲線ＥのベースポイントをＧとし、楕円曲線Ｅ上の離散対数問題を安全性の根拠として暗号化されたデジタル著作物を記録している記録媒体から暗号化デジタル著作物を読み出して復号し、復号に際して拡大体ＧＦ（ｑ）上の元ｘの逆元Ｉを算出する記録媒体再生装置であって、
元ｘと拡大体ＧＦ（ｐ）上の多項式の係数とを用いて、ｎ元連立一次方程式Ａｙ＝Ｂの係数行列Ａ及び定数ベクトルＢを生成する方程式生成手段と、
請求項１〜３のいずれかに記載の連立方程式求解装置であって、ｎ元連立一次方程式Ａｙ＝Ｂの解を求める方程式演算手段と、
前記根と求められた前記解とを用いて、逆元Ｉを算出する逆元算出手段と
を備えることを特徴とする記録媒体再生装置。
【請求項７】
有限体ＧＦ（ｐ）（ｐは素数）上のｎ元連立一次方程式Ａｘ＝ｂ（ｎは正の整数、Ａはｎ行ｎ列の成分からなる係数行列、ｘはｎ個の成分からなる変数ベクトル、ｂはｎ個の成分からなる定数ベクトル）の解を求め、係数行列Ａと定数ベクトルｂとを記憶しているパラメタ記憶手段を備える連立方程式求解装置において用いられる連立方程式求解方法であって、
係数行列Ａと定数ベクトルｂとをパラメタ記憶手段に記憶する記憶ステップと、
前記パラメタ記憶手段から係数行列Ａと定数ベクトルｂとを読み出し、読み出した係数行列Ａ及び定数ベクトルｂを三角化変換して方程式Ａｘ＝ｂと同値の関係を有するｎ元連立一次方程式Ｃｘ＝ｄの係数行列Ｃ（Ｃはｎ行ｎ列の成分からなる係数行列）及び定数ベクトルｄ（ｄはｎ個の成分からなる定数ベクトル）を生成する三角化変換ステップと、
前記三角化変換は、係数行列Ａの三角化の際に対角成分毎の有限体ＧＦ（ｐ）の除算をしない、係数行列Ａの上三角行列への変換であり、
生成された係数行列Ｃの各対角成分の有限体ＧＦ（ｐ）上の逆元である対角逆元を生成する対角逆元演算ステップと、
生成された係数行列Ｃと定数ベクトルｄと生成された各対角逆元とを用いて、方程式Ａｘ＝ｂの解として、方程式Ｃｘ＝ｄの解を求める方程式求解ステップと
を含み、
前記三角化変換ステップは、連続する１個以上の変換過程を介して前記方程式Ｃｘ＝ｄの係数行列Ｃ及び定数ベクトルｄを生成し、
前記各変換過程において、前記三角化変換ステップは、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ａｘ＝ｂであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｃｘ＝ｄであり、
前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含み、
前記三角化変換ステップは、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第１係数群と第２係数群とを定め、
ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られ、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
前記三角化変換ステップは、前記各変換過程において、１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記三角化変換ステップは、各副変換過程において、
軸方程式の０でない係数を有する最高次の変数の係数から構成される群を第１係数群と定め、
軸方程式の各係数及び定数のそれぞれに対象方程式の０でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第２係数群と定め、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
係数行列Ｃの対角成分をｍi （ｉ＝１、２、．．．、ｎ）とし、対角成分ｍi のＧＦ（ｐ）上の対角逆元をＩi （ｉ＝１、２、．．．、ｎ）とし、
前記対角逆元演算ステップは、
前記三角化変換ステップから係数行列Ｃの対角成分ｍi （ｉ＝１、２、．．．、ｎ）を受け取り、
【数５】
0004354609.tif 000047
を算出し、
【数６】
0004354609.tif 000048
を算出する乗算ステップと、
ｕ＝１／ｔ  ｍｏｄ  ｐ
を算出する第１逆元演算ステップと、
対角逆元Ｉi   ＝  ｕ×ｔi   ｍｏｄ  ｐ    （ｉ＝１、２、．．．、ｎ）
を算出する第２逆元演算ステップとを含み、
算出した対角逆元Ｉi （ｉ＝１、２、．．．、ｎ）を方程式求解ステップへ出力し、
前記方程式求解ステップは、
カウンタｊ＝ｎ−１、ｎ−２、・・・、２、１、０のように設定し、カウンタｊの各値について、係数行列Ｃ、定数ベクトルｄ、対角逆元Ｉi （ｉ＝１、２、・・・、ｎ）を用いて、
ｊ＝ｎ−１のとき、  ｙj ＝Ｉj+1 ×ｄj+1   ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【数７】
0004354609.tif 000049
を算出して、方程式Ｃｘ＝ｄの解を求め、その解を方程式Ａｘ＝ｂの解とし、
Ｃ及びｄは以下のように定義される
【数８】
0004354609.tif 000050
ことを特徴とする連立方程式求解方法。
【請求項８】
有限体ＧＦ（ｐ）（ｐは素数）上のｎ元連立一次方程式Ａｘ＝ｂ（ｎは正の整数、Ａはｎ行ｎ列の成分からなる係数行列、ｘはｎ個の成分からなる変数ベクトル、ｂはｎ個の成分からなる定数ベクトル）の解を求め、係数行列Ａと定数ベクトルｂとを記憶しているパラメタ記憶手段を備える連立方程式求解装置において用いられる連立方程式求解方法であって、
前記パラメタ記憶手段から係数行列Ａと定数ベクトルｂとを読み出し、読み出した係数行列Ａ及び定数ベクトルｂを三角化変換して方程式Ａｘ＝ｂと同値の関係を有するｎ元連立一次方程式Ｃｘ＝ｄの係数行列Ｃ（Ｃはｎ行ｎ列の成分からなる係数行列）及び定数ベクトルｄ（ｄはｎ個の成分からなる定数ベクトル）を生成する三角化変換ステップと、
前記三角化変換は、係数行列Ａの三角化の際に対角成分毎の有限体ＧＦ（ｐ）の除算をしない、係数行列Ａの上三角行列への変換であり、
生成された係数行列Ｃの各対角成分の有限体ＧＦ（ｐ）上の逆元である対角逆元を生成する対角逆元演算ステップと、
生成された係数行列Ｃと定数ベクトルｄと生成された各対角逆元とを用いて、方程式Ａｘ＝ｂの解として、方程式Ｃｘ＝ｄの解を求める方程式求解ステップと
を含み、
前記三角化変換ステップは、連続する１個以上の変換過程を介して前記方程式Ｃｘ＝ｄの係数行列Ｃ及び定数ベクトルｄを生成し、
前記各変換過程において、前記三角化変換ステップは、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ａｘ＝ｂであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｃｘ＝ｄであり、
前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含み、
前記三角化変換ステップは、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第１係数群と第２係数群とを定め、
ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られ、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
前記三角化変換ステップは、前記各変換過程において、１個の係数群算出過程と、前記係数群算出過程後に１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記係数群算出過程において、前記三角化変換ステップは、軸方程式及び１個以上の対象方程式の０でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる２個以上の値から構成される群を第１係数群と定め、
前記第１係数群に含まれる値であって、軸方程式の０でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた１個以上の値から構成される群を第２係数群と定め、
前記副変換過程において、前記三角化変換ステップは、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
係数行列Ｃの対角成分をｍi （ｉ＝１、２、．．．、ｎ）とし、対角成分ｍi のＧＦ（ｐ）上の対角逆元をＩi （ｉ＝１、２、．．．、ｎ）とし、
前記対角逆元演算ステップは、
前記三角化変換ステップから係数行列Ｃの対角成分ｍi （ｉ＝１、２、．．．、ｎ）を受け取り、
【数５】
0004354609.tif 000051
を算出し、
【数６】
0004354609.tif 000052
を算出する乗算ステップと、
ｕ＝１／ｔ  ｍｏｄ  ｐ
を算出する第１逆元演算ステップと、
対角逆元Ｉi   ＝  ｕ×ｔi   ｍｏｄ  ｐ    （ｉ＝１、２、．．．、ｎ）
を算出する第２逆元演算ステップとを含み、
算出した対角逆元Ｉi （ｉ＝１、２、．．．、ｎ）を方程式求解ステップへ出力し、
前記方程式求解ステップは、
カウンタｊ＝ｎ−１、ｎ−２、・・・、２、１、０のように設定し、カウンタｊの各値について、係数行列Ｃ、定数ベクトルｄ、対角逆元Ｉi （ｉ＝１、２、・・・、ｎ）を用いて、
ｊ＝ｎ−１のとき、  ｙj ＝Ｉj+1 ×ｄj+1   ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【数７】
0004354609.tif 000053
を算出して、方程式Ｃｘ＝ｄの解を求め、その解を方程式Ａｘ＝ｂの解とし、
Ｃ及びｄは以下のように定義される
【数８】
0004354609.tif 000054
ことを特徴とする連立方程式求解方法。
【請求項９】
前記乗算ステップは、
ｓ1 ＝ｍ1 ×ｍ2   ｍｏｄ  ｐ、
ｓ2 ＝ｓ1 ×ｍ3   ｍｏｄ  ｐ、
・・・
ｓn-3 ＝ｓn-4 ×ｍn-2   ｍｏｄ  ｐ
をこの順序で算出し、
次に、
ｔn ＝ｓn-3 ×ｍn-1   ｍｏｄ  ｐ
ｔn-1 ＝ｓn-3 ×ｍn   ｍｏｄ  ｐ
ｓn ＝ｍn-1 ×ｍn   ｍｏｄ  ｐ
ｔn-2 ＝ｓn-4 ×ｓn   ｍｏｄ  ｐ
ｓn-1 ＝ｍn-2 ×ｓn   ｍｏｄ  ｐ
ｔn-3 ＝ｓn-5 ×ｓn-1   ｍｏｄ  ｐ
ｓn-2 ＝ｍn-3 ×ｓn-1   ｍｏｄ  ｐ
ｔn-4 ＝ｓn-6 ×ｓn-2   ｍｏｄ  ｐ
・・・
ｓ5 ＝ｍ4 ×ｓ6   ｍｏｄ  ｐ
ｔ3 ＝ｓ1 ×ｓ5   ｍｏｄ  ｐ
ｓ4 ＝ｍ3 ×ｓ5   ｍｏｄ  ｐ
ｔ2 ＝ｍ1 ×ｓ4   ｍｏｄ  ｐ
ｔ1 ＝ｍ2 ×ｓ4   ｍｏｄ  ｐ
をこの順序で算出し、
次に、正の整数の集合｛１、２、．．．、ｎ｝から選択された１個の値ｊについて、
ｔ＝ｔj ×ｍj
を算出する
ことを特徴とする請求項７又は請求項８のいずれか記載の連立方程式求解方法。
【請求項１０】
有限体ＧＦ（ｐ）（ｐは素数）上のｎ元連立一次方程式Ａｘ＝ｂ（ｎは正の整数、Ａはｎ行ｎ列の成分からなる係数行列、ｘはｎ個の成分からなる変数ベクトル、ｂはｎ個の成分からなる定数ベクトル）の解を求め、係数行列Ａと定数ベクトルｂとを記憶しているパラメタ記憶手段を備えるコンピュータで用いられる連立方程式求解プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに対して前記プログラムは、
前記パラメタ記憶手段から係数行列Ａと定数ベクトルｂとを読み出し、読み出した係数行列Ａ及び定数ベクトルｂを三角化変換して方程式Ａｘ＝ｂと同値の関係を有するｎ元連立一次方程式Ｃｘ＝ｄの係数行列Ｃ（Ｃはｎ行ｎ列の成分からなる係数行列）及び定数ベクトルｄ（ｄはｎ個の成分からなる定数ベクトル）を生成する三角化変換処理と、
前記三角化変換は、係数行列Ａの三角化の際に対角成分毎の有限体ＧＦ（ｐ）の除算をしない、係数行列Ａの上三角行列への変換であり、
生成された係数行列Ｃの各対角成分の有限体ＧＦ（ｐ）上の逆元である対角逆元を生成する対角逆元演算処理と、
生成された係数行列Ｃと定数ベクトルｄと生成された各対角逆元とを用いて、方程式Ａｘ＝ｂの解として、方程式Ｃｘ＝ｄの解を求める方程式求解処理と
を実行させ、
前記三角化変換処理は、連続する１個以上の変換過程を介して前記方程式Ｃｘ＝ｄの係数行列Ｃ及び定数ベクトルｄを生成し、
前記各変換過程において、前記三角化変換ステップは、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ａｘ＝ｂであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｃｘ＝ｄであり、
前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含み、
前記三角化変換処理は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第１係数群と第２係数群とを定め、
ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られ、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
前記三角化変換処理は、前記各変換過程において、１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記三角化変換処理は、各副変換過程において、
軸方程式の０でない係数を有する最高次の変数の係数から構成される群を第１係数群と定め、
軸方程式の各係数及び定数のそれぞれに対象方程式の０でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第２係数群と定め、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
係数行列Ｃの対角成分をｍi （ｉ＝１、２、．．．、ｎ）とし、対角成分ｍi のＧＦ（ｐ）上の対角逆元をＩi （ｉ＝１、２、．．．、ｎ）とし、
前記対角逆元演算処理は、
前記三角化変換処理から係数行列Ｃの対角成分ｍi （ｉ＝１、２、．．．、ｎ）を受け取り、
【数９】
0004354609.tif 000055
を算出し、
【数１０】
0004354609.tif 000056
を算出する乗算処理と、
ｕ＝１／ｔ  ｍｏｄ  ｐ
を算出する第１逆元演算処理と、
対角逆元Ｉi   ＝  ｕ×ｔi   ｍｏｄ  ｐ    （ｉ＝１、２、．．．、ｎ）
を算出する第２逆元演算処理とを含み、
算出した対角逆元Ｉi （ｉ＝１、２、．．．、ｎ）を方程式求解処理へ出力し、
前記方程式求解処理は、
カウンタｊ＝ｎ−１、ｎ−２、・・・、２、１、０のように設定し、カウンタｊの各値について、係数行列Ｃ、定数ベクトルｄ、対角逆元Ｉi （ｉ＝１、２、・・・、ｎ）を用いて、
ｊ＝ｎ−１のとき、  ｙj ＝Ｉj+1 ×ｄj+1   ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【数１１】
0004354609.tif 000057
を算出して、方程式Ｃｘ＝ｄの解を求め、その解を方程式Ａｘ＝ｂの解とし、
Ｃ及びｄは以下のように定義される
【数１２】
0004354609.tif 000058
する
ことを特徴とする記録媒体。
【請求項１１】
有限体ＧＦ（ｐ）（ｐは素数）上のｎ元連立一次方程式Ａｘ＝ｂ（ｎは正の整数、Ａはｎ行ｎ列の成分からなる係数行列、ｘはｎ個の成分からなる変数ベクトル、ｂはｎ個の成分からなる定数ベクトル）の解を求め、係数行列Ａと定数ベクトルｂとを記憶しているパラメタ記憶手段を備えるコンピュータで用いられる連立方程式求解プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに対して前記プログラムは、
前記パラメタ記憶手段から係数行列Ａと定数ベクトルｂとを読み出し、読み出した係数行列Ａ及び定数ベクトルｂを三角化変換して方程式Ａｘ＝ｂと同値の関係を有するｎ元連立一次方程式Ｃｘ＝ｄの係数行列Ｃ（Ｃはｎ行ｎ列の成分からなる係数行列）及び定数ベクトルｄ（ｄはｎ個の成分からなる定数ベクトル）を生成する三角化変換処理と、
前記三角化変換は、係数行列Ａの三角化の際に対角成分毎の有限体ＧＦ（ｐ）の除算をしない、係数行列Ａの上三角行列への変換であり、
生成された係数行列Ｃの各対角成分の有限体ＧＦ（ｐ）上の逆元である対角逆元を生成する対角逆元演算処理と、
生成された係数行列Ｃと定数ベクトルｄと生成された各対角逆元とを用いて、方程式Ａｘ＝ｂの解として、方程式Ｃｘ＝ｄの解を求める方程式求解処理と
を実行させ、
前記三角化変換処理は、連続する１個以上の変換過程を介して前記方程式Ｃｘ＝ｄの係数行列Ｃ及び定数ベクトルｄを生成し、
前記各変換過程において、前記三角化変換ステップは、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ａｘ＝ｂであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｃｘ＝ｄであり、
前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含み、
前記三角化変換処理は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、
第１係数群と第２係数群とを定め、
ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られ、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
前記三角化変換処理は、前記各変換過程において、１個の係数群算出過程と、前記係数群算出過程後に１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、
前記係数群算出過程において、前記三角化変換ステップは、軸方程式及び１個以上の対象方程式の０でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる２個以上の値から構成される群を第１係数群と定め、
前記第１係数群に含まれる値であって、軸方程式の０でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた１個以上の値から構成される群を第２係数群と定め、
前記副変換過程において、前記三角化変換ステップは、
前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、
前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引き、
係数行列Ｃの対角成分をｍi （ｉ＝１、２、．．．、ｎ）とし、対角成分ｍi のＧＦ（ｐ）上の対角逆元をＩi （ｉ＝１、２、．．．、ｎ）とし、
前記対角逆元演算処理は、
前記三角化変換処理から係数行列Ｃの対角成分ｍi （ｉ＝１、２、．．．、ｎ）を受け取り、
【数９】
0004354609.tif 000059
を算出し、
【数１０】
0004354609.tif 000060
を算出する乗算処理と、
ｕ＝１／ｔ  ｍｏｄ  ｐ
を算出する第１逆元演算処理と、
対角逆元Ｉi   ＝  ｕ×ｔi   ｍｏｄ  ｐ    （ｉ＝１、２、．．．、ｎ）
を算出する第２逆元演算処理とを含み、
算出した対角逆元Ｉi （ｉ＝１、２、．．．、ｎ）を方程式求解処理へ出力し、
前記方程式求解処理は、
カウンタｊ＝ｎ−１、ｎ−２、・・・、２、１、０のように設定し、カウンタｊの各値について、係数行列Ｃ、定数ベクトルｄ、対角逆元Ｉi （ｉ＝１、２、・・・、ｎ）を用いて、
ｊ＝ｎ−１のとき、  ｙj ＝Ｉj+1 ×ｄj+1   ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【数１１】
0004354609.tif 000061
を算出して、方程式Ｃｘ＝ｄの解を求め、その解を方程式Ａｘ＝ｂの解とし、
Ｃ及びｄは以下のように定義される
【数１２】
0004354609.tif 000062
ことを特徴とする記録媒体。
【請求項１２】
前記乗算処理は、
ｓ1 ＝ｍ1 ×ｍ2   ｍｏｄ  ｐ、
ｓ2 ＝ｓ1 ×ｍ3   ｍｏｄ  ｐ、
・・・
ｓn-3 ＝ｓn-4 ×ｍn-2   ｍｏｄ  ｐ
をこの順序で算出し、
次に、
ｔn ＝ｓn-3 ×ｍn-1   ｍｏｄ  ｐ
ｔn-1 ＝ｓn-3 ×ｍn   ｍｏｄ  ｐ
ｓn ＝ｍn-1 ×ｍn   ｍｏｄ  ｐ
ｔn-2 ＝ｓn-4 ×ｓn   ｍｏｄ  ｐ
ｓn-1 ＝ｍn-2 ×ｓn   ｍｏｄ  ｐ
ｔn-3 ＝ｓn-5 ×ｓn-1   ｍｏｄ  ｐ
ｓn-2 ＝ｍn-3 ×ｓn-1   ｍｏｄ  ｐ
ｔn-4 ＝ｓn-6 ×ｓn-2   ｍｏｄ  ｐ
・・・
ｓ5 ＝ｍ4 ×ｓ6   ｍｏｄ  ｐ
ｔ3 ＝ｓ1 ×ｓ5   ｍｏｄ  ｐ
ｓ4 ＝ｍ3 ×ｓ5   ｍｏｄ  ｐ
ｔ2 ＝ｍ1 ×ｓ4   ｍｏｄ  ｐ
ｔ1 ＝ｍ2 ×ｓ4   ｍｏｄ  ｐ
をこの順序で算出し、
次に、正の整数の集合｛１、２、．．．、ｎ｝から選択された１個の値ｊについて、
ｔ＝ｔj ×ｍj
を算出する
ことを特徴とする請求項１０又は１１のいずれかに記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報セキュリテイ技術としての暗号技術及び誤り訂正技術に関し、特に、拡大体及び連立方程式を用いる演算技術に関する。
【０００２】
【従来の技術】
近年、秘密通信方式やデジタル署名方式による通信が用いられるようになっている。
秘密通信方式とは、特定の通信相手以外に通信内容を漏らすことなく通信を行なう方式である。またデジタル署名方式とは、通信相手に通信内容の正当性を示したり、本人であることを証明する通信方式である。この署名方式には公開鍵暗号方式と呼ばれる暗号方式を用いる。公開鍵暗号方式は通信相手が多数の時、通信相手ごとに異なる暗号鍵を容易に管理するための方式であり、多数の通信相手と通信を行なうのに不可欠な基盤技術である。
【０００３】
公開鍵暗号方式では、暗号化鍵と復号化鍵とが異なり、復号化鍵を秘密にし、暗号化鍵を公開する。この公開鍵暗号方式の安全性の根拠として離散対数問題が用いられる。離散対数問題には代表的なものとして、有限体上定義されるもの及び楕円曲線上定義されるものがある。離散対数問題については、「A Course in Number theory and Cryptography」（Neal Koblitz著、Springer-Verlag,1987) に詳しく述べられている。
（楕円曲線上の離散対数問題）
楕円曲線上の離散対数問題とは、
Ｅを有限体ＧＦ（ｑ）（ｑ＝ｐn 、ｐは素数、ｎは正の整数）上定義された楕円曲線とし、楕円曲線Ｅの位数が大きな素数で割り切れるとき、楕円曲線Ｅ上の元Ｇをベースポイントとする。このとき、楕円曲線Ｅ上の与えられた元Ｙに対して、
Ｙ＝ｘ＊Ｇ
となる整数ｘが存在するならば、ｘを求めよ、という問題である。
【０００４】
なお、この明細書において、演算子＊は、楕円曲線上の加算を意味し、ｘ＊Ｇは、楕円曲線上でＧをｘ回加算することを示す。また、ＧＦ（ｑ）はＧＦ（ｐ）の拡大体である。拡大体については、「現代暗号」（岡本龍明、山本博資著、シリーズ／情報科学の数学、産業図書、1997、26〜28ページ）に詳しく述べられている。
（従来例１：楕円曲線上の離散対数問題を応用するエルガマル署名）
次に、楕円曲線上の離散対数問題を応用するエルガマル署名について、図９に示すシーケンス図を用いて説明する。
【０００５】
ユーザＡが使用する装置（以下、ユーザＡ３１０と称する。）、管理センタにおいて使用される装置（以下、管理センタ３２０と称する。）及びユーザＢが使用する装置（以下、ユーザＢ３３０と称する。）は、それぞれネットワークで接続されている。
ｐを素数、ｑ＝ｐn 、ｎは正の整数、有限体ＧＦ（ｑ）上の楕円曲線をＥとする。楕円曲線ＥのベースポイントをＧとし、Ｇの位数をｒとする。すなわち、ｒは、
ｒ＊Ｇ＝０
を満たす最小の正整数である。ここで、０は楕円曲線の群の加算における零元である。
【０００６】
（１）管理センタ３２０による公開鍵の生成
管理センタ３２０は、ユーザＡ３１０からユーザＡ３１０が秘密に所有する秘密鍵ｘA を予め通知されており（ステップＳ１）、秘密鍵ｘA を用いて、次の式より、ユーザＡ３１０の公開鍵ＹA を作成する（ステップＳ２）。
ＹA ＝ｘA ＊Ｇ
その後、管理センタ３２０は、有限体ＧＦ（ｑ）、楕円曲線Ｅ及びベースポイントＧをシステムパラメータとして公開し、ユーザＢ３３０にユーザＡ３１０の公開鍵ＹA を公開する（ステップＳ３〜Ｓ４）。
【０００７】
（２）ユーザＡ３１０による署名生成
ユーザＡ３１０は、乱数ｋを生成する（ステップＳ５）。次に、ユーザＡ３１０は、
Ｒ1 ＝（ｒx 、ｒy ）＝ｋ＊Ｇ
を計算し（ステップＳ６）、
ｓ×ｋ＝ｍ＋ｒx ×ｘA     ｍｏｄ  ｒ
から、ｓを計算する（ステップＳ７）。ここで、ｍは、ユーザＡ３１０がユーザＢ３３０へ送信するメッセージである。
【０００８】
さらに、ユーザＡ３１０は、得られた（Ｒ1 、ｓ）を署名としてメッセージｍとともに、ユーザＢ３３０へ送信する（ステップＳ８）。
（３）ユーザＢ３３０による署名検証
ユーザＢ３３０は、
ｓ＊Ｒ1 ＝ｍ＊Ｇ＋ｒx ＊ＹA
が成立するかどうか判定することにより、送信者であるユーザＡ３１０の身元を確認する（ステップＳ９）。これは、
0004354609.tif 000002
となることから明らかである。
【０００９】
上記に示した楕円曲線上の離散対数問題を応用するエルガマル署名によるデジタル署名方式における公開鍵の生成、署名生成及び署名検証のそれぞれにおいて、楕円曲線上の点の冪倍の演算が行われる。
楕円曲線の演算公式については、
「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.）に詳しく説明されている。
【００１０】
楕円曲線の方程式を
ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂ
とする。楕円曲線上の任意の点Ｐの座標を（ｘ1 、ｙ1 ）とする。この座標はアフィン座標と呼ばれている。
楕円曲線上における加算には、有限体ＧＦ（ｑ）の逆元演算の処理を含むことが知られている。上記の論文では、射影座標と呼ばれる座標に触れているが、これは、
（ｘ1 、ｙ1 ）→  （ｘ1 、ｙ1 、１）
のように、２項組座標を３項組座標に対応づけるものである。３項組座標の場合、楕円曲線の加算には、有限体ＧＦ（ｑ）の逆元演算の処理が含まれない。一般に有限体の逆元演算は、計算時間が長いため、３項組座標がよく用いられる。
【００１１】
逆に、
（Ｘ、Ｙ、Ｚ）→  （Ｘ／Ｚ、Ｙ／Ｚ）
のように、２項組座標は３項組座標に対応づけられる。ここで、逆元演算が必要となる。
上記のエルガマル署名のステップＳ６においては、２項組座標を３項組座標に変換し、３項組座標により楕円曲線上の加算を行い、加算結果の３項組座標をアフィン座標に変換する。したがって、３項組座標からアフィン座標への変換において、逆元演算が必要になる。
（従来例２：拡大体上の逆元演算）
以下において、従来の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｐは素数、ｎは正の整数）の逆元演算について説明する。
【００１２】
ここで、簡単のため、拡大体ＧＦ（ｑ）の生成多項式をｆ（ｇ）＝ｇn −βとし、生成多項式の根をαとし、生成多項式の入力となるＧＦ（ｑ）の元を
ｘ＝ｘ0 ＋ｘ1 ×α＋・・・＋ｘn-1 ×αn-1 とする。
（１）ステップ１
ＧＦ（ｑ）の元ｘを基にして、ｙi （０≦ｉ≦ｎ−１）に関する以下の連立方程式を生成する。
【００１３】
0004354609.tif 000003
（２）ステップ２
生成された連立方程式の解ｙk （ｋ＝０、１、・・・、ｎ−１）を求める。
（３）ステップ３
求めた解ｙk （ｋ＝０、１、・・・、ｎ−１）を
逆元Ｉ＝ｙ0 ＋ｙ1 α＋・・・＋ｙn-1 αn-1 に変換する。
【００１４】
このようにして、拡大体ＧＦ（ｑ）上の元の逆元が求められる。
次に、上記のようにして逆元演算ができる根拠について説明する。
上記の逆元Ｉと元ｘについて、
ｘＩ＝１  ｍｏｄ  ｆ（ｇ）
という関係を満たすとき、
0004354609.tif 000004
であり、
αn ＝β  ｍｏｄ  ｆ（ｇ）
であるので、
0004354609.tif 000005
であり、αの降冪の順に整理すると
0004354609.tif 000006
である。
【００１５】
ここで、ｘＩが１に等しいので、上記ステップ１において生成された連立方程式を導くことができる。
したがって、拡大体ＧＦ（ｑ）の逆元を求めることは、基礎体ＧＦ（ｐ）上の連立方程式を解くことと等しい。
また、上記例では、ｇn −βの形の生成多項式を扱ったが、一般の生成多項式に対しても同様の操作により、方程式を生成できる。
（従来例３：基礎体ＧＦ（ｐ）上の連立方程式の解法）
以下において、基礎体ＧＦ（ｐ）上の連立方程式の従来の解法について説明する。この解法は、ガウスの消去法と呼ばれる。ガウスの消去法については、「コンピュータによる数値計算」（水上孝一編著、プログラミング入門シリーズ、朝倉書店、1985、76〜82ページ）に詳しく述べられている。
【００１６】
ｘk （ｋ＝０、１、２、・・・、ｎ−１）に対する連立方程式を、
ａ11ｘ0 ＋ａ12ｘ1 ＋・・・＋ａ1nｘn-1 ＝ｂ1
ａ21ｘ0 ＋ａ22ｘ1 ＋・・・＋ａ2nｘn-1 ＝ｂ2
・・・
ａn1ｘ0 ＋ａn2ｘ1 ＋・・・＋ａnnｘn-1 ＝ｂn
とし、この解を求める。
（ステップ１）
行列Ｍ、ベクトルｖを以下のようにおく。
【００１７】
【数７】
0004354609.tif 000007
【００１８】
また、ベクトルＸを次のようにおく。
【００１９】
【数８】
0004354609.tif 000008
【００２０】
上記の連立方程式は、次のように表現できる。
ＭＸ＝ｖ
行列Ｍを三角化するように、行列Ｍ、ベクトルｖを変換し、それぞれ行列Ｍ’、ベクトルｖ’を生成する。ここで、三角化とは、行列の対角成分より下の成分がすべて０となるような変換をいう。また、このような行列を上三角行列と呼ぶ。
【００２１】
次に上記の従来の三角化の手順について、図１０に示すフローチャートを用いて説明する。
カウンタｊに１を設定する（ステップＳ２１）。次に、ａjjの逆元Ｉj を算出し（ステップＳ２２）、ａjjに１を設定し（ステップＳ２３）、ｊ＋１≦ｋ≦ｎに対して、ａjk＝ａjk×Ｉj 、ｂj ＝ｂj ×Ｉj とする（ステップＳ２４）。次にカウンタｉ＝カウンタｊ＋１とする（ステップＳ２５）。
【００２２】
ａijに０を設定し（ステップＳ２６）、ｊ＋１≦ｋ≦ｎに対して、ａik＝ａik−ａjj×ａjkとし（ステップＳ２７）、ｂi ＝ｂi −ａij×ｂj とする（ステップＳ２８）。次に、ｉ＝ｎであるか否かを判断し、ｉ＝ｎでなければ（ステップＳ２９）、カウンタｉに１を加算して（ステップＳ３１）、制御をステップＳ２６へ戻す。ｉ＝ｎであれば（ステップＳ２９）、ｊ＝ｎであるか否かを判断し、ｊ＝ｎでなければ（ステップＳ３０）、カウンタｊに１を加算して（ステップＳ３２）、制御をステップＳ２２へ戻す。ｊ＝ｎであれば（ステップＳ３０）、処理を終了する。
【００２３】
このようにして得られた行列をＭ’、ベクトルをｖ’とする。ここで、行列Ｍ’の対角成分は１であり、行列Ｍ’の対角成分より下の成分がすべて０である。連立方程式Ｍ’Ｘ＝ｖ’と、連立方程式ＭＸ＝ｖとは、同値の関係を有する。ここで、
【００２４】
【数９】
0004354609.tif 000009
【００２５】
とする。
（ステップ２）
生成された行列Ｍ’、ベクトルｖ’を用いて、次に示すようにして、連立方程式Ｍ’Ｘ＝ｖ’の解を求める。
カウンタｃにｎ−１、・・・、１、０の値をこの順に設定し、カウンタｃの各値について、
ｃ＝ｎ−１のとき、    ｙc ＝  ｄc+1
ｃ≠ｎ−１のとき、
【００２６】
【数１０】
0004354609.tif 000010
【００２７】
を算出する。
（具体例）
従来例３を適用する具体例を以下に示す。
なお、この具体例は、三角化変換を分かりやすく説明するための例である。暗号通信システムやデジタル署名システムにおいて実際に使用される例ではないので注意を要する。
【００２８】
素数ｐ＝３１、生成多項式ｆ（ｇ）＝ｇ5 −２、ＧＦ（ｑ）の元ｘ＝５α4 ＋２９α3 ＋６α2 ＋１９α＋１７とする。
0004354609.tif 000011
であるので、連立方程式は、図１１（ａ）に示すようになる。係数行列３０１は、５行５列の成分からなり、定数ベクトル３０２は、５個の成分からなる。
【００２９】
この連立方程式において、一次方程式
１７ｘ0 ＋１０ｘ1 ＋２７ｘ2 ＋１２ｘ3 ＋７ｘ4 ＝１
を変換を行う際に軸となる軸方程式と呼び、この連立方程式の他の方程式を変換の対象となる対象方程式と呼ぶ。
次に、逆元演算を行う。
【００３０】
１／１７  ｍｏｄ  ３１  ＝  １１
続けて、次の演算を行う。
0004354609.tif 000012
従って、連立方程式は、図１１（ｂ）に示すようになる。ここで、係数行列３１１の１列１行の成分は、１となる。この図の係数行列３１１及び定数ベクトル３１２において、枠で囲まれた数字は、図１１（ａ）に示す係数行列３０１及び定数ベクトル３０２から変化した係数を示す。以下の図においても同様である。
【００３１】
ここで、上記の逆元演算１／１７  ｍｏｄ  ３１  ＝  １１の詳細について以下に説明する。
この逆元演算においては、
ａ×１７＋ｂ×３１ ＝ １
を満たすａを拡張ＧＣＤ法によって求め、ａの値を前記逆元演算の演算値とする。
【００３２】
拡張ＧＣＤ法は、乗算や加算を繰り返し行うため、一般に計算量が多い。
拡張ＧＣＤ法については、「A Course in Computational Algebraic Number Theory」 (H. Cohen著、Graduate texts in mathematics 138, 1996, Springer-Verlag,16〜19ページ)に説明されている。
次に、係数行列３１１の１列２行の成分がそれぞれ０となるように、
0004354609.tif 000013
を演算する。同様にして、係数行列３１１の１列３行〜５行の成分がそれぞれ０となるように、係数行列３１１を係数行列３２１に変換し、ベクトル３１２をベクトル３２２に変換し、図１１（ｃ）に示す連立方程式が得られる。
【００３３】
次に、行列３２１の２列２行の成分が１となるように、係数行列３２１を係数行列３３１に変換し、ベクトル３２２をベクトル３３２に変換し、図１１（ｄ）に示す連立方程式が得られる。さらに、前記と同様にして、係数行列３３１の２列３行〜５行の成分が０となるように、係数行列３３１を係数行列３４１に変換し、ベクトル３３２をベクトル３４２に変換し、図１１（ｅ）に示す連立方程式が得られる。
【００３４】
以下同様にして、図１１（ｆ）に示す係数行列３５１のように３列３行の成分は１となり、図１１（ｇ）に示す係数行列３６１のように３列４行〜５行の成分は０となる。さらに、図１１（ｈ）に示す係数行列３７１のように４列４行の成分は１となり、図１１（ｉ）に示す係数行列３８１のように４列５行の成分は０となる。最後に、図１１（ｊ）に示す係数行列３９１のように５列５行の成分は１となる。
【００３５】
このようにして、係数行列が上三角行列に変換される。
次に、
0004354609.tif 000014
を算出する。
（計算量の評価）
従来例３の全計算量は、次に示すようになる。ここで、基礎体の乗算、逆元演算の計算量をそれぞれ、Mul、Invとする。
【００３６】
上記のステップ１について、カウンタｊに対するループ内の計算量の内訳は次のようになる。
（ａ）ステップＳ２２において、１回の逆元演算が必要であるので、１Inv
（ｂ）ステップＳ２４において、（ｎ−（ｊ＋１）＋１）＋１＝ｎ−ｊ＋１回の乗算が必要であるので、（ｎ−ｊ＋１）×Mul
（ｃ）カウンタｉが変化する範囲ｊ＋１〜ｎにおいて、以下のとおり。
【００３７】
（ｃ−１）  ステップＳ２７において、（ｎ−（ｊ＋１）＋１）回の乗算が必要であるので、（ｎ−ｊ）×Mul
（ｃ−２）  ステップＳ２８において、１回の乗算が必要であるので、１Mul（ｃ−１）と（ｃ−２）とを（ｎ−（ｊ＋１）＋１）＝（ｎ−ｊ）回行うので、（ｃ）全体では、（ｎ−ｊ）（ｎ−ｊ＋１）×Mulとなる。
【００３８】
次に、（ａ）、（ｂ）、（ｃ）の合計は、（ｎ−ｊ＋１）（ｎ−ｊ＋１）×Mul＋１Inv
カウンタｊは、１〜ｎの範囲で変化するので、ステップ１全体の計算量は、
【００３９】
【数１１】
0004354609.tif 000015
【００４０】
となる。
上記のステップ２について、計算量は次のようになる。
カウンタｃに対して、（ｎ−（ｃ＋１）＋１）＝（ｎ−ｃ）回の乗算が必要であるので、（ｎ−ｃ）×Mul
カウンタｃは、１〜ｎの範囲で変化するので、ステップ２全体の計算量は、
【００４１】
【数１２】
0004354609.tif 000016
【００４２】
従って、従来例３の全体の計算量は、
（１／６×ｎ（ｎ＋１）（２ｎ＋１）＋１／２×ｎ（ｎ−１））×Mul＋ｎ×Inv
＝  １／３×ｎ×（ｎ2 ＋３ｎ−１）×Mul＋ｎ×Inv
となる。
ここで、ｎ＝５、｜ｑ｜＝１６０（｜ｑ｜はｑのビットサイズ）の場合、一般的な計算機では、Inv ＝４０Mul であることが知られているので、従来例３の全体の計算量は、２６５×Mulである。
【００４３】
【発明が解決しようとする課題】
以上説明したように、有限体上の連立方程式を解くことにより、拡大体上の逆元演算ができるものの、拡大体上の逆元演算の計算量は一般に大きいので、有限体上の連立方程式の求解及び拡大体上の逆元演算における計算量をさらに少なくしたいという要望がある。
【００４４】
本発明は、上記の要望に鑑み、有限体上の連立方程式の求解法において、計算量を削減することができる有限体上の連立方程式の求解装置、求解方法、求解プログラムを記録している記録媒体、拡大体上の逆元演算における計算量を削減することができる拡大体上の逆元演算装置、逆元演算方法、逆元演算プログラムを記録している記録媒体、これらの装置を応用する通信システム及び記録媒体再生装置を提供することを目的とする。
【００４５】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、有限体ＧＦ（ｐ）（ｐは素数）上のｎ元連立一次方程式Ａｘ＝ｂ（ｎは正の整数、Ａはｎ行ｎ列の成分からなる係数行列、ｘはｎ個の成分からなる変数ベクトル、ｂはｎ個の成分からなる定数ベクトル）の解を求める連立方程式求解装置であって、係数行列Ａと定数ベクトルｂとを記憶しているパラメタ記憶手段と、前記パラメタ記憶手段から係数行列Ａと定数ベクトルｂとを読み出し、読み出した係数行列Ａ及び定数ベクトルｂを三角化変換して方程式Ａｘ＝ｂと同値の関係を有するｎ元連立一次方程式Ｃｘ＝ｄの係数行列Ｃ（Ｃはｎ行ｎ列の成分からなる係数行列）及び定数ベクトルｄ（ｄはｎ個の成分からなる定数ベクトル）を生成する三角化変換手段と、前記三角化変換は、係数行列Ａの各対角成分を１に変換しない、係数行列Ａの上三角行列への変換であり、生成された係数行列Ｃの各対角成分の有限体ＧＦ（ｐ）上の逆元である対角逆元を生成する対角逆元演算手段と、生成された係数行列Ｃと定数ベクトルｄと生成された各対角逆元とを用いて、方程式Ａｘ＝ｂの解として、方程式Ｃｘ＝ｄの解を求める方程式求解手段とを備えることを特徴とする。
【００４６】
ここで、前記三角化変換手段は、連続する１個以上の変換過程を介して前記方程式Ｃｘ＝ｄの係数行列Ｃ及び定数ベクトルｄを生成し、前記各変換過程において、前記三角化変換手段は、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ａｘ＝ｂであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｃｘ＝ｄであり、前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含み、前記三角化変換手段は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、第１係数群と第２係数群とを定め、ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られ、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くように構成してもよい。
【００４７】
ここで、前記三角化変換手段は、前記各変換過程において、１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、前記三角化変換手段は、各副変換過程において、軸方程式の０でない係数を有する最高次の変数の係数から構成される群を第１係数群と定め、軸方程式の各係数及び定数のそれぞれに対象方程式の０でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第２係数群と定め、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くように構成してもよい。
【００４８】
ここで、前記三角化変換手段は、前記各変換過程において、１個の係数群算出過程と、前記係数群算出過程後に１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、前記係数群算出過程において、前記三角化変換手段は、軸方程式及び１個以上の対象方程式の０でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる２個以上の値から構成される群を第１係数群と定め、前記第１係数群に含まれる値であって、軸方程式の０でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた１個以上の値から構成される群を第２係数群と定め、前記副変換過程において、前記三角化変換手段は、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くように構成してもよい。
【００４９】
【発明の実施の形態】
１  第１の実施の形態
本発明の１の実施の形態としての逆元演算装置１００について説明する。
１．１  逆元演算装置１００の構成
逆元演算装置１００は、予め与えられた有限体ＧＦ（ｐ）（ｐは素数）の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｎは正の整数）上の元ｘの逆元Ｉを算出する。以下において、拡大体ＧＦ（ｑ）の生成多項式をｇn −βとし、その根をαとし、元ｘをｘ＝ｘ0 ＋ｘ1 α＋・・・＋ｘn-1 αn-1 とする。ここで、αは、ＧＦ（ｑ）上の元であり、β、ｘ0 、ｘ1 、・・・、ｘn-1 は、ＧＦ（ｐ）上の元である。
【００５０】
逆元演算装置１００は、図１に示すように、パラメタ記憶部２００、方程式生成部２０１、方程式求解部２０２、逆元変換部２０３及び逆元記憶部２０４から構成される。
逆元演算装置１００は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクなどから構成されるコンピュータシステムであり、前記ハードディスクには、コンピュータプログラムが記憶されており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作する。これにより、方程式生成部２０１、方程式求解部２０２及び逆元変換部２０３は、それぞれの機能を達成する。
（１）パラメタ記憶部２００
パラメタ記憶部２００は、具体的には、ハードディスクから構成され、生成多項式のパラメタβ、根α、ｘ0 、ｘ1 、・・・、ｘn-1 をあらかじめ記憶している。
（２）方程式生成部２０１
方程式生成部２０１は、パラメタ記憶部２００からパラメタβ、根α、ｘ0 、ｘ1 、・・・、ｘn-1 を読み出し、読み出したパラメタβ、根α、ｘ0 、ｘ1 、・・・、ｘn-1 を用いて、ｙi （ｉ＝０、１、２、・・・、ｎ−１）に関する連立方程式
0004354609.tif 000017
のパラメタを生成する。
【００５１】
前記連立方程式は、次のように表現できる。
ＡＹ＝Ｂ
ここで、
【００５２】
【数１３】
0004354609.tif 000018
【００５３】
方程式生成部２０１が生成する連立方程式のパラメタは、行列Ａ及びベクトルＢである。方程式生成部２０１は、生成した行列ＡとベクトルＢとを方程式求解部２０２へ出力する。
また、方程式生成部２０１は、パラメタ記憶部２００から根αを読み出し、読み出した根αを逆元変換部２０３へ出力する。
（３）方程式求解部２０２
方程式求解部２０２は、予め与えられた有限体ＧＦ（ｐ）（ｐは素数）において、以下に示すｘi （ｉ＝１、２、・・・、ｎ）に関するｎ元連立一次方程式のパラメータａij （ｉ、ｊ＝１、２、・・・、ｎ）、ｂk （ｋ＝１、２、・・・、ｎ）が与えられたとき、ｎ元連立一次方程式のＧＦ（ｐ）上の解を算出する。
【００５４】
ａ11ｘ1 ＋ａ12ｘ2 ＋・・・＋ａ1nｘn ＝ｂ1
ａ21ｘ1 ＋ａ22ｘ2 ＋・・・＋ａ2nｘn ＝ｂ2
・・・
ａn1ｘ1 ＋ａn2ｘ2 ＋・・・＋ａnnｘn ＝ｂn
方程式求解部２０２は、図１に示すように、定数記憶部１０１、方程式変換部１０２、逆元演算部１０３及び方程式演算部１０４から構成される。
（定数記憶部１０１）
定数記憶部１０１は、具体的には、ＲＡＭから構成され、方程式生成部２０１から行列Ｍとベクトルｖとを受け取り、記憶する。ここで、
【００５５】
【数１４】
0004354609.tif 000019
【００５６】
ここで、行列Ｍは、一例として、行列Ａであり、ベクトルｖは、一例として、ベクトルＢである。
（方程式変換部１０２）
方程式変換部１０２は、定数記憶部１０１から行列Ｍとベクトルｖとを読み出し、読み出した行列Ｍ及びベクトルｖを三角化変換して、方程式Ｍｘ＝ｖと同値の関係を有するｎ元連立一次方程式Ｍ’ｘ＝ｖ’の行列Ｍ’（Ｍ’はｎ行ｎ列の成分からなる係数行列）及びベクトルｖ’（ｖ’はｎ個の成分からなる定数ベクトル）を生成する。
【００５７】
前記三角化変換において、方程式変換部１０２は、行列Ｍの各対角成分が１に変換されないように、行列Ｍを上三角行列に変換する。
ここで、
【００５８】
【数１５】
0004354609.tif 000020
【００５９】
前記三角化変換について以下に説明する。
前記三角化変換では、方程式Ｍｘ＝ｖから、連続する１個以上の変換過程を介して前記ｎ元連立一次方程式Ｍ’ｘ＝ｖ’の行列Ｍ’及びベクトルｖ’を生成する。
前記各変換過程において、前記三角化変換手段は、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成する。ここで、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ｍｘ＝ｖであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｍ’ｘ＝ｖ’である。
【００６０】
前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含む。
前記三角化変換では、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、第１係数群と第２係数群とを定める。
【００６１】
ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群である。前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られる。
【００６２】
前記三角化変換では、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とする。次に、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引く。
また、前記三角化変換では、前記各変換過程において、１個以上の対象方程式をそれぞれ変換する前記対象方程式と同数の副変換過程とを含む。
【００６３】
前記三角化変換では、各副変換過程において、軸方程式の０でない係数を有する最高次の変数の係数から構成される群を第１係数群と定め、軸方程式の各係数及び定数のそれぞれに対象方程式の０でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第２係数群と定める。
次に、前記三角化変換では、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とする。また、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引く。
【００６４】
三角化変換のさらなる詳細については、後述する。
方程式変換部１０２は、生成した行列Ｍ’及びベクトルｖ’を方程式演算部１０４へ出力し、生成した行列Ｍ’の対角成分ｃii（ｉ＝１、２、・・・、ｎ）を逆元演算部１０３へ出力する。
上記に説明するように、方程式変換部１０２は、行列Ｍを上三角行列になるように変換する。このとき、方程式の解を変化させないようにするため、ベクトルｖも変化させている。従来法と異なる点は、対角成分を１にしないことである。（逆元演算部１０３）
逆元演算部１０３は、方程式変換部１０２から行列Ｍ’の対角成分ｃii（ｉ＝１、２、・・・、ｎ）を受け取る。
【００６５】
ここで、記述を簡単にするために、行列Ｍ’の対角成分ｃii（ｉ＝１、２、・・・、ｎ）を、ｍi （ｉ＝１、２、・・・、ｎ）と表現する。
逆元演算部１０３は、
【００６６】
【数１６】
0004354609.tif 000021
【００６７】
を次に示すようにして算出する。
逆元演算部１０３は、以下に記載した順序に従って算出する。
ｓ1 ＝ｍ1 ×ｍ2   ｍｏｄ  ｐ
ｓ2 ＝ｓ1 ×ｍ3   ｍｏｄ  ｐ
・・・
ｓn-3 ＝ｓn-4 ×ｍn-2 ｍｏｄ  ｐ
ｔn ＝ｓn-3 ×ｍn-1   ｍｏｄ  ｐ
ｔn-1 ＝ｓn-3 ×ｍn   ｍｏｄ  ｐ
ｓn   ＝ｍn-1 ×ｍn   ｍｏｄ  ｐ、ｔn-2 ＝ｓn-4 ×ｓn   ｍｏｄ  ｐ
ｓn-1 ＝ｍn-2 ×ｓn   ｍｏｄ  ｐ、ｔn-3 ＝ｓn-5 ×ｓn-1   ｍｏｄ  ｐ
ｓn-2 ＝ｍn-3 ×ｓn-1   ｍｏｄ  ｐ、ｔn-4 ＝ｓn-6 ×ｓn-2 ｍｏｄ  ｐ
・・・
ｓ5 ＝ｍ4 ×ｓ6   ｍｏｄ  ｐ、ｔ3 ＝ｓ1 ×ｓ5 ｍｏｄ  ｐ
ｓ4 ＝ｍ3 ×ｓ5   ｍｏｄ  ｐ、ｔ2 ＝ｍ1 ×ｓ4 ｍｏｄ  ｐ
ｔ1 ＝ｍ2 ×ｓ4   ｍｏｄ  ｐ
次に、逆元演算部１０３は、予め与えられたｋ（ｋは、１、２、．．．、ｎのうちのいずれか１個）を用いて、
ｔ＝ｔk  ×ｍk  ｍｏｄ  ｐ
を算出することにより、
【００６８】
【数１７】
0004354609.tif 000022
【００６９】
を算出する。
次に、逆元演算部１０３は、
ｕ＝１／ｔ  ｍｏｄ  ｐ
を算出する。
次に、逆元演算部１０３は、
逆元Ｉi ＝ｕ×ｔi   ｍｏｄ  ｐ        （ｉ＝１、２、．．．、ｎ）
を算出する。
【００７０】
逆元演算部１０３は、算出した逆元Ｉi（ｉ＝１、２、．．．、ｎ）を方程式演算部１０４へ出力する。
以上説明したように、逆元演算部１０３は、方程式変換部１０２から出力された行列Ｍ’の対角成分ｃii（ｉ＝１、２、・・・、ｎ）のＧＦ（ｐ）上の逆元Ｉi （ｉ＝１、２、・・・、ｎ）を計算し、出力する。
（方程式演算部１０４）
方程式演算部１０４は、方程式変換部１０２から行列Ｍ’及びベクトルｖ’を受け取り、逆元演算部１０３から逆元Ｉi （ｉ＝１、２、・・・、ｎ）を受け取る。
【００７１】
方程式演算部１０４は、カウンタｊ＝ｎ−１、ｎ−２、・・・、２、１、０のように設定し、カウンタｊの各値について、行列Ｍ’、ベクトルｖ’、逆元Ｉi （ｉ＝１、２、・・・、ｎ）を用いて、
ｊ＝ｎ−１のとき、  ｙj ＝Ｉj+1 ×ｄj+1   ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【００７２】
【数１８】
0004354609.tif 000023
【００７３】
を算出する。
次に、方程式演算部１０４は、算出した解ｙj （ｊ＝０、１、２、・・・、ｎ−１）を逆元変換部２０３へ出力する。
以下に、方程式演算部１０４によりｎ元連立一次方程式の解が得られる根拠を示す。
【００７４】
方程式演算部１０４が受け取った行列Ｍ’は上三角化行列であるので、方程式Ｍ’ｘ＝ｖ’は、
0004354609.tif 000024
のように表現でき、行列Ｍ’の対角成分ｃii（ｉ＝１、２、・・・、ｎ）の逆元は、それぞれＩi （ｉ＝１、２、・・・、ｎ）である。
【００７５】
従って、ｘn-1 の解ｙn-1 は、
ｙn-1 ＝Ｉn ｄn-1   ｍｏｄ  ｐ
である。
次に、ｘn-2 の解ｙn-2 は、
ｙn-2 ＝Ｉn-1  （ｄn-1 −ｃn-1 n ｙn-1  ）ｍｏｄ  ｐ
である。同様にして、ｘj の解ｙj （ｊ＝ｎ−３、ｎ−４、・・・、０）は、
【００７６】
【数１９】
0004354609.tif 000025
【００７７】
である。
（４）逆元変換部２０３
逆元変換部２０３は、方程式求解部２０２の方程式演算部１０４から解ｙj （ｊ＝０、１、２、・・・、ｎ−１）を受け取り、方程式生成部２０１から根αを受け取る。逆元変換部２０３は、受け取った解ｙk （ｊ＝０、１、２、・・・、ｎ−１）と根αとを用いて、逆元Ｉを次の式により演算する。
【００７８】
Ｉ＝ｙ0 ＋ｙ1 α＋・・・＋ｙn-1 αn-1
次に、逆元変換部２０３は、算出した逆元Ｉを逆元記憶部２０４に書き込む。このようにして、拡大体ＧＦ（ｑ）上の元ｘの逆元Ｉが得られる。
（５）逆元記憶部２０４
逆元記憶部２０４は、具体的にはハードディスクからなり、拡大体ＧＦ（ｑ）上の元ｘの逆元Ｉを記憶する。
１．２  逆元演算装置１００の動作
逆元演算装置１００の動作について説明する。
（１）逆元演算装置１００の全体の概要動作
逆元演算装置１００の全体の概要動作について、図２に示すフローチャートを用いて説明する。
【００７９】
方程式生成部２０１は、パラメタ記憶部２００からパラメタβ、根α、ｘ0 、ｘ1 、・・・、ｘn-1 を読み出し、読み出したパラメタβ、根α、ｘ0 、ｘ1 、・・・、ｘn-1 を用いて、ｙi （ｉ＝０、１、２、・・・、ｎ−１）に関する連立方程式ＡＹ＝Ｂのパラメタとして、行列Ａ及びベクトルＢを生成し、生成した行列ＡとベクトルＢとを方程式求解部２０２の定数記憶部１０１へ出力する（ステップＳ１０１）。
【００８０】
方程式求解部２０２の方程式変換部１０２は、定数記憶部１０１から行列Ｍとベクトルｖとを読み出し、読み出した行列Ｍ及びベクトルｖを三角化変換して、方程式Ｍｘ＝ｖと同値の関係を有するｎ元連立一次方程式Ｍ’ｘ＝ｖ’の行列Ｍ’及びベクトルｖ’を生成する（ステップＳ１０２）。
逆元演算部１０３は、行列Ｍ’の対角成分ｃii（ｉ＝１、２、・・・、ｎ）の逆元Ｉi（ｉ＝１、２、．．．、ｎ）を算出する（ステップＳ１０３）。
【００８１】
方程式演算部１０４は、行列Ｍ’、ベクトルｖ’及び逆元Ｉi （ｉ＝１、２、・・・、ｎ）を用いて、ｎ元連立一次方程式Ｍ’ｘ＝ｖ’の解ｙj （ｊ＝０、１、２、・・・、ｎ−１）を算出し、算出した解を逆元変換部２０３へ出力する（ステップＳ１０４）。
逆元変換部２０３は、方程式求解部２０２から解ｙj （ｊ＝０、１、２、・・・、ｎ−１）を受け取り、方程式生成部２０１から根αを受け取り、、受け取った解と根αとを用いて、拡大体ＧＦ（ｑ）上の元ｘの逆元Ｉを算出し、算出した逆元Ｉを逆元記憶部２０４に書き込む（ステップＳ１０５）。
（２）方程式変換部１０２の三角化変換の詳細の動作
方程式変換部１０２の三角化変換の詳細の動作について、図３に示すフローチャートを用いて説明する。
【００８２】
方程式変換部１０２は、定数記憶部１０１から行列Ｍとベクトルｖとを読み出し（ステップＳ１１１）、カウンタｊを１に設定する（ステップＳ１１２）。
次に、方程式変換部１０２は、行列Ｍの第ｊ列の成分の中でＧＦ（ｐ）上で０でない成分を第ｊ行から第ｎ行まで探索し、はじめに発見した成分の行数をｋとする（ステップＳ１１３）。さらに、ｋ≠ｊの場合に（ステップＳ１１４）、行列Ｍの第ｋ行と第ｊ行とを入れ換え（ステップＳ１１５）、ベクトルｖの第ｋ行と第ｊ行とを入れ換える（ステップＳ１１６）。
【００８３】
次に、方程式変換部１０２は、カウンタｉをｊ＋１に設定し（ステップＳ１１７）、方程式変換部１０２は、ａjj（ａjjは、行列Ｍのｊ行ｊ列成分）とａijとを用いて、
ａij＝０
ｊ＋１≦ｋ≦ｎ（ｋ＝ｊ＋１、ｊ＋２、・・・、ｎ）に対して、
ａik＝ａjjａik−ａijａjk
ｂi ＝ａjjｂi −ａijｂj
のように設定する（ステップＳ１１８）。
【００８４】
方程式変換部１０２は、ｉ＝ｎであるかを判定し、ｉ≠ｎであるなら（ステップＳ１１９）、カウンタｉに１を加算して（ステップＳ１２２）、ステップＳ１１８へ制御を戻す。ｉ＝ｎであるなら（ステップＳ１１９）、ｊ＝ｎ−１であるか判定し、ｊ≠ｎ−１であるなら（ステップＳ１２０）、カウンタｊに１を加算して（ステップＳ１２３）、ステップＳ１１３へ制御を戻す。ｊ＝ｎ−１であるなら（ステップＳ１２０）、行列Ｍを行列Ｍ’とし、ベクトルｖをベクトルｖ’とする。
【００８５】
以上説明したように、方程式変換部１０２には、カウンタｊを変化させることによる変換過程が含まれる。また、前記変換過程内には、カウンタｉを変化させることによる副変換過程が含まれる。
（方程式変換部１０２の検証）
方程式変換部１０２による三角化変換により生成されるｎ元連立一次方程式Ｍ’ｘ＝ｖ’が、ｎ元連立一次方程式Ｍｘ＝ｖと同値の関係を有する根拠をについて以下に説明する。
【００８６】
三角化変換において、ｎ元連立一次方程式中の変換中の１個のｎ元一次方程式について、変換前の行列を行列Ｍin、ベクトルｖinとし、変換後の行列を行列Ｍout 、ベクトルｖout とし、行列Ｍinの第ｉ、ｊ行の行ベクトルをそれぞれ、Ｌi 、Ｌj とする。
方程式変換部１０２において、
ａjj×Ｌi −ａij×Ｌj
の計算を行い、この結果の行ベクトルをＭout の第ｉ行とし、
ａjj×ｂi −ａij×ｂj
の計算を行い、ｖout の第ｉ行としている。Ｍout の他の成分及びｖout の他の成分は、それぞれＭinの他の成分及びｖinの他の成分と同じである。このとき、方程式
Ｍin・ｘ＝ｖin
と方程式
Ｍout ・ｘ＝ｖout
が同じ解をもつことは、「コンピュータによる数値計算」（水上孝一編著、プログラミング入門シリーズ、朝倉書店、1985、76〜82ページ）から明らかである。
【００８７】
また、カウンタｊに対して、ｊ＋１≦ｉ≦ｎを満たすｉについて、ａijを０としている。この操作をｊが１からｎまで繰り返すので、行列の下三角部分が０になる。したがって、第２方程式変換部１０２は方程式の解を変化させずに、行列の三角化変換が行える。
（３）逆元演算部１０３の動作
逆元演算部１０３の動作について、図４に示すフローチャートを用いて説明する。
【００８８】
逆元演算部１０３は、方程式変換部１０２から行列Ｍ’の対角成分ｍi （ｉ＝１、２、・・・、ｎ）を受け取り（ステップＳ１４０）、
【００８９】
【数２０】
0004354609.tif 000026
【００９０】
を算出し（ステップＳ１４２）、
予め与えられたｋを用いて、
ｔ＝ｔk  ×ｍk  ｍｏｄ  ｐ
を算出し（ステップＳ１４３）、
ｕ＝１／ｔ  ｍｏｄ  ｐ
を算出し（ステップＳ１４４）、
逆元Ｉi ＝ｕ×ｔi   ｍｏｄ  ｐ        （ｉ＝１、２、．．．、ｎ）を算出し（ステップＳ１４５）、算出した逆元Ｉi（ｉ＝１、２、．．．、ｎ）を方程式演算部１０４へ出力する（ステップＳ１４６）。
（４）方程式演算部１０４の動作
方程式演算部１０４の動作について、図５に示すフローチャートを用いて説明する。
【００９１】
方程式演算部１０４は、方程式変換部１０２から行列Ｍ’及びベクトルｖ’を受け取り、逆元演算部１０３から逆元Ｉi （ｉ＝１、２、・・・、ｎ）を受け取る（ステップＳ１６１）。次に、方程式演算部１０４は、カウンタｊをｎ−１に設定し（ステップＳ１６２）、
ｊ＝ｎ−１のとき、    ｙj ＝Ｉj+1 ×ｄj+1     ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【００９２】
【数２１】
0004354609.tif 000027
【００９３】
を算出する（ステップＳ１６３）。
方程式演算部１０４は、ｊ＝０であるか否かを判定し、ｊ＝０であるとき（ステップＳ１６４）、算出した解ｙj （ｊ＝０、１、２、・・・、ｎ−１）を逆元変換部２０３へ出力する（ステップＳ１６６）。それ以外の場合は（ステップＳ１６４）、カウンタｊから１を減じ（ステップＳ１６５）、ステップＳ１６３へ制御を戻す。
１．３  計算量の評価
方程式求解部２０２における計算量について説明する。
（１）方程式変換部１０２における計算量
カウンタｊの値に対して、ループ（図３に示すフローチャートのステップＳ１１３〜Ｓ１１９）内の処理の計算量は、次のようになる。
【００９４】
カウンタｉの１個の値に対して
（ａ）ステップＳ１１８において、ｊ＋１≦ｋ≦ｎ（ｋ＝ｊ＋１、ｊ＋２、・・・、ｎ）に対して、ａik＝ａjj×ａik−ａij×ａjkの計算をする。従って、２回の乗算を（ｎ−（ｊ＋１）＋１）＝（ｎ−ｊ）回行うので、計算量は、２×（ｎ−ｊ）×Mul 。
【００９５】
（ｂ）ステップＳ１１８において、ｂi ＝ａjj×ｂi −ａij×ｂj の計算をする。従って、２回の乗算を行うので、計算量は、２Mul 。
カウンタｉは、ｊ＋１〜ｎの範囲で変化するので、ループ（ステップＳ１１３〜Ｓ１１９）内の計算量は、
（２×（ｎ−ｊ＋１）×Mul ）×（ｎ−（ｊ＋１）＋１）
＝２×（ｎ−ｊ）×（ｎ−ｊ＋１）×Mul
ステップＳ１１２〜Ｓ１２０において、カウンタｊは、１〜ｎ−１の範囲で変化するので、方程式変換部１０２全体の計算量は、
【００９６】
【数２２】
0004354609.tif 000028
【００９７】
（２）逆元演算部１０３における計算量
（ａ）ｓ1 〜ｓn-3 及びｔn を求めるために乗算が、ｎ−２回必要であるので、（ｎ−２）Mul
（ｂ）ｔn-1 を求めるために１回の乗算が必要であるので、Mul
（ｃ）ｓn とｔn-2 、ｓn-1 と  ｔn-3 、・・・、ｓ4 とｔ2 を求めるために乗算が、２×（ｎ−３）回必要であるので、２×（ｎ−３）×Mul
（ｄ）ｔ1 を求めるために１回の乗算が必要であるので、Mul
（ｅ）ｔを求めるために１回の乗算が必要であるので、Mul
（ｆ）ｕ＝１／ｔ  ｍｏｄ  ｐを求めるために、１回の逆元演算が必要であるので、Inv
（ｇ）Ｉi ＝ｕ×ｔi   ｍｏｄ  ｐ  （ｉ＝１，２，．．．，ｎ）を求めるために、ｎ回の乗算が必要であるので、ｎ×Mul
これらを合計すると、
（（ｎ−２）＋１＋２（ｎ−３）＋１＋１＋ｎ）×Mul＋Inv
＝  （４ｎ−５）×Mul＋Ｉｎｖ
（３）方程式演算部１０４における計算量
カウンタｊに対して、ループ内（図５に示すフローチャートのステップＳ１６３〜Ｓ１６５）の処理の計算量を見積もる。
【００９８】
ｊ＝ｎ−１のとき、ｙj ＝Ｉj+1 ×ｄj+1   ｍｏｄ  ｐ
ｊ≠ｎ−１のとき、
【００９９】
【数２３】
0004354609.tif 000029
【０１００】
の計算を行うために、１回の乗算（右辺第１項）と（ｎ−（ｊ＋１）＋１）回の乗算が必要であるので、計算量は  （ｎ−ｊ＋１）×Mul
カウンタｊは、１〜ｎの範囲で変化するので、方程式演算部１０４全体の計算量は、
【０１０１】
【数２４】
0004354609.tif 000030
【０１０２】
（４）具体例
具体例を以下に示す。
従来例３と同様に、素数ｐ＝３１、生成多項式ｆ（ｇ）＝ｇ5 −２、ＧＦ（ｑ）の元ｘ＝５α4 ＋２９α3 ＋６α2 ＋１９α＋１７とする。連立方程式は、従来例３と同様、図６（ａ）に示すようになる。
【０１０３】
次の演算をする。
ａ21  ＝  ０
ａ22  ＝  １７×１７−１９×１０＝６    ｍｏｄ  ３１
ａ23  ＝  １７×１０−１９×２７＝２９  ｍｏｄ  ３１
ａ24  ＝  １７×２７−１９×１２＝１４  ｍｏｄ  ３１
ａ25  ＝  １７×１２−１９×７＝９      ｍｏｄ  ３１
ｂ2   ＝  １７×０−１９×１＝１２      ｍｏｄ  ３１
ｊ＝１（ｉ＝２）のとき
連立方程式は、図６（ｂ）に示すようになる。ここで、係数行列４１１の１列２行の成分が０となっている。
【０１０４】
次に、ｊ＝１の処理終了後、連立方程式は、図６（ｃ）に示すようになる。ここで、係数行列４２１の１列３行〜５行の成分が０となっている。
次に、ｊ＝２の処理終了後、連立方程式は、図６（ｄ）に示すようになる。ここで、係数行列４３１の２列３行〜５行の成分が０となっている。
次に、ｊ＝３の処理終了後、連立方程式は、図６（ｅ）に示すようになる。ここで、係数行列４４１の３列４行〜５行の成分が０となっている。
【０１０５】
次に、ｊ＝４の処理終了後、連立方程式は、図６（ｆ）に示すようになる。ここで、係数行列４５１の４列５行の成分が０となっている。
次に、対角成分の逆元演算を行う。
ｓ1 ＝ｍ1 ×ｍ2 ＝１７×６＝９  ｍｏｄ  ３１
ｓ2 ＝ｓ1 ×ｍ3 ＝９×１７＝２９  ｍｏｄ  ３１
ｔ5 ＝ｓ2 ×ｍ4 ＝２９×６＝１９  ｍｏｄ  ３１
ｔ4 ＝ｓ2 ×ｍ5 ＝２９×３０＝２  ｍｏｄ  ３１
ｓ5 ＝ｍ4 ×ｍ5 ＝６×３０＝２５  ｍｏｄ  ３１
ｔ3 ＝ｓ1 ×ｓ5 ＝９×２５＝８  ｍｏｄ  ３１
ｓ4 ＝ｍ3 ×ｓ5 ＝１７×２５＝２２  ｍｏｄ  ３１
ｔ2 ＝ｍ1 ×ｓ4 ＝１７×２２＝２  ｍｏｄ  ３１
ｔ1 ＝ｍ2 ×ｓ4 ＝６×２２＝８  ｍｏｄ  ３１
ｔ＝ｍ1 ×ｔ1 ＝１７×８＝１２  ｍｏｄ  ３１
ｕ＝１／ｔ＝１／１２＝１３  ｍｏｄ  ３１ （逆元演算はこの１回のみである。）
Ｉ1 ＝ｕ×ｔ1 ＝１３×８＝１１  ｍｏｄ  ３１
Ｉ2 ＝ｕ×ｔ2 ＝１３×２＝２６  ｍｏｄ  ３１
Ｉ3 ＝ｕ×ｔ3 ＝１３×８＝１１  ｍｏｄ  ３１
Ｉ4 ＝ｕ×ｔ4 ＝１３×２＝２６  ｍｏｄ  ３１
Ｉ5 ＝ｕ×ｔ5 ＝１３×１９＝３０  ｍｏｄ  ３１
次に、方程式を解く。
0004354609.tif 000031
（５）方程式求解部２０２全体における計算量
従って、方程式求解部２０２全体における計算量は、
２／３×ｎ（ｎ−１）（ｎ＋１）Mul
＋  （４ｎ−５）×Mul＋Inv
＋  １／２×ｎ（ｎ＋１）×Mul
＝  １／６（４ｎ3 ＋３ｎ2 ＋２３ｎ−３０）Mul ＋  Inv
ここで、ｎ＝５、｜ｑ｜＝１６０（｜ｑ｜はｑのビットサイズ）の場合、一般的な計算機では、Ｉｎｖ＝４０Mulであるとすると、方程式求解部２０２における計算量は、１５０×Mulである。
【０１０６】
このように、本発明の方程式求解部２０２による計算量は、従来の方程式求解装置と比較すると、明らかに少なくなる。したがって、連立方程式の求解を少ない計算量で行える有限体上の連立方程式求解装置を提供することができ、この実用的価値は非常に大きい。
また、予め与えられた有限体ＧＦ（ｐ）の拡大体ＧＦ（ｑ）上の元ｘの逆元Ｉを算出する逆元演算装置において、少ない計算量で逆元演算を行うことができる。
（６）適用例
実際に暗号通信システム、デジタル署名通信システム及び誤り訂正通信システムなどの通信システムにおいて、適用される一例としてのパラメタを示す。
【０１０７】
素数ｐ＝２31−１、ｑ＝ｐn 、ｎ＝５、生成多項式ｆ（ｇ）＝ｇ5 −ｇ−８
Ｆ（ｑ）の元ｘ＝ｘ0 ＋ｘ1 ×α＋ｘ2 ×α2 ＋ｘ3 ×α3 ＋ｘ4 ×α4
に対して、連立方程式は以下のように設定される。
【０１０８】
【数２５】
0004354609.tif 000032
【０１０９】
ここで、ｐ、ｘ0 、・・・、ｘ4 、ｙ0 、・・・、ｙ4 は、それぞれ３１ビットであり、ｑ、ｘは、１５５ビットである。
２  その他の実施の形態
本発明に係るその他の実施の形態について説明する。
２．１  変形例
方程式求解部２０２の方程式変換部１０２の変形例としての方程式変換部１０２ａについて説明する。
【０１１０】
方程式変換部１０２ａは、方程式変換部１０２で説明した前記各変換過程において、１個の係数群算出過程と、前記係数群算出過程後に１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含む。
前記係数群算出過程において、方程式変換部１０２ａは、軸方程式及び１個以上の対象方程式の０でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる２個以上の値から構成される群を第１係数群と定め、前記第１係数群に含まれる値であって、軸方程式の０でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた１個以上の値から構成される群を第２係数群と定める。
【０１１１】
前記副変換過程において、方程式変換部１０２ａは、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引く。
【０１１２】
方程式変換部１０２ａの動作について、図７に示すフローチャートを用いて説明する。図７に示すフローチャートは、図３のフローチャートのステップＳ１１８に代えて、ステップＳ１１８ａ〜Ｓ１１８ｃを含む。
以下に、ステップＳ１１８ａ〜Ｓ１１８ｃについて説明する。他のステップは、図３のフローチャートのステップと同じであるので、説明を省略する。
【０１１３】
方程式変換部１０２ａは、ステップ１１８ａにおいて、ｊ≦ｋ≦ｎなるｋ（ｋ＝ｊ、ｊ＋１、・・・、ｎ）に対して、
【０１１４】
【数２６】
0004354609.tif 000033
【０１１５】
を算出する。
また、方程式変換部１０２ａは、ステップ１１８ｂにおいて、ｊ＋１≦ｋ≦ｎなるｋ（ｋ＝ｊ＋１、ｊ＋２、・・・、ｎ）に対して、
ｗk ＝ｈj ×ａjk
ｅ＝ｈj ×ｂj
を算出する。
【０１１６】
また、方程式変換部１０２ａは、ステップ１１８ｃにおいて、
ａij＝０とし、
ｊ＋１≦ｋ≦ｎなるｋ（ｋ＝ｊ＋１、ｊ＋２、・・・、ｎ）に対して、
ａik＝ｈi ×ａik−ｗk を算出し、
ｂi ＝ｈi ×ｂi −ｅを算出する。
（具体例）
具体例を以下に示す。
【０１１７】
従来例３と同様に、素数ｐ＝３１、生成多項式ｆ（ｇ）＝ｇ5 −２、ＧＦ（ｑ）の元ｘ＝５α4 ＋２９α3 ＋６α2 ＋１９α＋１７とする。連立方程式は、従来例３と同様、図８（ａ）に示すようになる。
ｊ＝１のとき、
ｓ1 ＝ａ11×ａ21＝１７×１９＝１３  ｍｏｄ  ３１
ｓ2 ＝ｓ1 ×ａ31＝１３×６＝１６  ｍｏｄ  ３１
ｈ5 ＝ｓ2 ×ａ41＝１６×２９＝３０  ｍｏｄ  ３１
ｈ4 ＝ｓ2 ×ａ51＝１６×５＝１８  ｍｏｄ  ３１
ｓ5 ＝ａ41×ａ51＝２９×５＝２１  ｍｏｄ  ３１
ｈ3 ＝ｓ1 ×ｓ5 ＝１３×２１＝２５  ｍｏｄ  ３１
ｓ4 ＝ａ31×ｓ5 ＝６×２１＝２  ｍｏｄ  ３１
ｈ2 ＝ａ11×ｓ4 ＝１７×２＝３  ｍｏｄ  ３１
ｈ1 ＝ａ21×ｓ4 ＝１９×２＝７  ｍｏｄ  ３１
を算出し、
ｗ2 ＝ｈ1 ×ａ12＝７×１０＝８  ｍｏｄ  ３１
ｗ3 ＝ｈ1 ×ａ13＝７×２７＝３  ｍｏｄ  ３１
ｗ4 ＝ｈ1 ×ａ14＝７×１２＝２２  ｍｏｄ  ３１
ｗ5 ＝ｈ1 ×ａ15＝７×７＝１８  ｍｏｄ  ３１
ｅ  ＝ｈ1 ×ｂ1 ＝７×１＝７  ｍｏｄ  ３１
を算出する。
【０１１８】
次に、ｉ＝２（ｊ＝１）のとき
ａ21＝０
ａ22＝ｈ2 ×ａ22−ｗ2 ＝３×１７−８＝１２  ｍｏｄ  ３１
ａ23＝ｈ2 ×ａ23−ｗ3 ＝３×１０−３＝２７  ｍｏｄ  ３１
ａ24＝ｈ2 ×ａ24−ｗ4 ＝３×２７−２２＝２８  ｍｏｄ  ３１
ａ25＝ｈ2 ×ａ25−ｗ5 ＝３×１２−１８＝１８  ｍｏｄ  ３１
ｂ2 ＝ｈ2 ×ｂ2 −ｅ  ＝３×０−７＝２４  ｍｏｄ  ３１
このように、上記の第１の実施形態と異なり、ａikを求めるために、乗算を１回のみ行うので、計算量が少なくなる。（第１の実施形態では、乗算を２回行う。）
こうして、図８（ｂ）に示す連立方程式が得られる。ここで、１列２行の成分が０である。
【０１１９】
次に、ｊ＝１の処理終了後、図８（ｃ）に示す連立方程式が得られる。ここで、１列３行〜５行の成分が０である。
次に、ｊ＝２のとき
ｓ1 ＝ａ22×ａ32＝１２×２＝２４  ｍｏｄ  ３１
ｈ5 ＝ｓ1 ×ａ42＝２４×７＝１３  ｍｏｄ  ３１
ｈ4 ＝ｓ1 ×ａ52＝２４×２５＝１１  ｍｏｄ  ３１
ｓ4 ＝ａ42×ａ52＝７×２５＝２０  ｍｏｄ  ３１
ｈ3 ＝ａ22×ｓ4 ＝１２×２０＝２３  ｍｏｄ  ３１
ｈ2 ＝ａ32×ｓ4 ＝２×２０＝９  ｍｏｄ  ３１
を演算し、
ｗ3 ＝ｈ2 ×ａ23＝９×２７＝２６  ｍｏｄ  ３１
ｗ4 ＝ｈ2 ×ａ24＝９×２８＝４  ｍｏｄ  ３１
ｗ5 ＝ｈ2 ×ａ25＝９×１８＝７  ｍｏｄ  ３１
ｅ  ＝ｈ2 ×ｂ2 ＝９×２４＝３０  ｍｏｄ  ３１
を演算する。
【０１２０】
次に、ｊ＝２の処理終了後、図８（ｄ）に示す連立方程式が得られる。ここで、２列３行〜５行の成分が０である。
次に、ｊ＝３のとき、
ｈ5 ＝ａ33×ａ43＝８×１４＝１９  ｍｏｄ  ３１
ｈ4 ＝ａ33×ａ53＝８×１２＝３  ｍｏｄ  ３１
ｈ3 ＝ａ43×ａ53＝１４×１２＝１３  ｍｏｄ  ３１
を演算し、
ｗ4 ＝ｈ3 ×ａ34＝１３×１＝１３  ｍｏｄ  ３１
ｗ5 ＝ｈ3 ×ａ35＝１３×７＝２９  ｍｏｄ  ３１
ｅ  ＝ｈ3 ×ｂ3 ＝１３×２６＝２８  ｍｏｄ  ３１
を演算する。
【０１２１】
次に、ｊ＝３の処理終了後、図８（ｅ）に示す連立方程式が得られる。ここで、３列４行〜５行の成分が０である。
次に、ｊ＝４のとき
ｈ5 ＝ａ44＝１６  ｍｏｄ  ３１
ｈ4 ＝ａ54＝１４  ｍｏｄ  ３１
を算出し、
ｗ5 ＝ｈ4 ×ａ45＝１４×２６＝２３  ｍｏｄ  ３１
ｅ  ＝ｈ4 ×ｂ4 ＝１４×２３＝１２  ｍｏｄ  ３１
を算出する。
【０１２２】
次に、ｊ＝４の処理終了後、図８（ｆ）に示す連立方程式が得られる。ここで、４列５行の成分が０である。
ここで、行列Ｃ＝Ａ、ベクトルＤ＝Ｂとする。
次に、対角成分の逆元演算を行う。
ｓ1 ＝ｍ1 ×ｍ2 ＝１７×１２＝１８  ｍｏｄ  ３１
ｓ2 ＝ｓ1 ×ｍ3 ＝１８×８＝２０  ｍｏｄ  ３１
ｔ5 ＝ｓ2 ×ｍ4 ＝２０×１６＝１０  ｍｏｄ  ３１
ｔ4 ＝ｓ2 ×ｍ5 ＝２０×２２＝６  ｍｏｄ  ３１
ｓ5 ＝ｍ4 ×ｍ5 ＝１６×２２＝１１  ｍｏｄ  ３１
ｔ3 ＝ｓ1 ×ｓ5 ＝１８×１１＝１２  ｍｏｄ  ３１
ｓ4 ＝ｍ3 ×ｓ5 ＝８×１１＝２６  ｍｏｄ  ３１
ｔ2 ＝ｍ1 ×ｓ4 ＝１７×２６＝８  ｍｏｄ  ３１
ｔ1 ＝ｍ2 ×ｓ4 ＝１２×２６＝２  ｍｏｄ  ３１
ｔ＝ｍ1 ×ｔ1 ＝１７×２＝３  ｍｏｄ  ３１
ｕ＝１／ｔ＝１／３＝２１  ｍｏｄ  ３１
を演算する。逆元演算はこの１回のみである。
【０１２３】
Ｉ1 ＝ｕ×ｔ1 ＝２１×２＝１１  ｍｏｄ  ３１
Ｉ2 ＝ｕ×ｔ2 ＝２１×８＝１３  ｍｏｄ  ３１
Ｉ3 ＝ｕ×ｔ3 ＝２１×１２＝４  ｍｏｄ  ３１
Ｉ4 ＝ｕ×ｔ4 ＝２１×６＝２  ｍｏｄ  ３１
Ｉ5 ＝ｕ×ｔ5 ＝２１×１０＝２４  ｍｏｄ  ３１
を演算する。
【０１２４】
次に方程式を解く。
0004354609.tif 000034
（方程式変換部１０２ａの計算量の評価）
図＊に示すフローチャートにおけるカウンタｊに対するループ内（ステップＳ１１３〜ステップＳ１１９）の計算量を見積もる。
【０１２５】
ステップＳ１１８ａにおいて、ｈk （ｋ＝ｊ、ｊ＋１、・・・、ｎ）を求めるために、（３×（ｎ−ｊ＋１）−６）回の乗算が必要であるので、計算量は、（３×（ｎ−ｊ＋１）−６）×Mul である。
ステップＳ１１８ｂにおいて、ｗk （ｋ＝ｊ＋１、ｊ＋２、・・・、ｎ）とｅとを求めるために、（ｎ−（ｊ＋１）＋１＋１）回の乗算が必要であるので、計算量は、（ｎ−ｊ＋１）×Mul である。
【０１２６】
ステップＳ１１８ｃにおいて、カウンタｉの１個の値に対して、
（ａ）ｊ＋１≦ｋ≦ｎ（ｋ＝ｊ＋１、ｊ＋２、・・・、ｎ）について、ａik＝ｈi ×ａik−ｗkの計算をする。１回の乗算を（ｎ−（ｊ＋１）＋１）＝（ｎ−ｊ）回行うので、計算量は（ｎ−ｊ）×Mul である。
（ｂ）ｂi ＝ｈi ×ｂi −ｅ  の計算をする。１回の乗算を行うので、計算量は１Mul である。
【０１２７】
カウンタｉは、ｊ＋１〜ｎの範囲で変化するので、ループ内の計算量は、
（（ｎ−ｊ＋１）×Mul）×（ｎ−（ｊ＋１）＋１）
＝（ｎ−ｊ）×（ｎ−ｊ＋１）×Mul
ステップＳ１１８ａ〜Ｓ１１８ｃの計算量の合計は、
（（３×（ｎ−ｊ＋１）−６）＋（ｎ−ｊ＋１）＋（ｎ−ｊ）（ｎ−ｊ＋１））×Mul
＝  （４×（ｎ−ｊ＋１）−６＋（ｎ−ｊ）（ｎ−ｊ＋１））×Mul
＝  （（ｎ−ｊ＋４）（ｎ−ｊ＋１）−６）×Mul
カウンタｊは、１〜ｎ−１の範囲で変化するので、方程式変換部１０２ａ全体の計算量は、
【０１２８】
【数２７】
0004354609.tif 000035
【０１２９】
従って、方程式求解部全体の計算量は、
（（１／３×ｎ3 ＋２ｎ2 −１３／３×ｎ＋２）＋（４ｎ−５）＋１／２×ｎ（ｎ＋１））×Mul＋Inv
＝  （１／３×ｎ3 ＋５／２×ｎ2 ＋１／６×ｎ−３）×Mul＋Inv
Inv ＝４０Mul、ｎ＝５と仮定したとき、計算量は、１４２Mul である。
２．２  その他の変形例
（１）ｐを素数、ｑ＝ｐn 、ｎを正の整数、有限体ＧＦ（ｐ）の拡大体ＧＦ（ｑ）上の楕円曲線をＥ、楕円曲線ＥのベースポイントをＧとし、楕円曲線Ｅ上の離散対数問題を安全性の根拠として利用して、安全性を確保しながら通信する暗号通信システム、デジタル署名通信システム及び誤り訂正通信システムなどの通信システムにおいて、安全性の確保に際して、拡大体ＧＦ（ｑ）上の元の逆元を算出する逆元演算を行う場合に、上記に説明した方程式求解部及び逆元演算装置を適用するようにしてもよい。前記暗号通信システムの一例は、インターネット上でのＥ−ｍａｉｌシステムにおいて、メッセージを暗号化して送受信する場合である。また、デジタル署名通信システムの一例は、電子決済システムである。また、訂正通信システムの一例は、前記Ｅ−ｍａｉｌシステムにおいて、通信回線の品質の悪化等の原因により、送信メッセージの一部が欠落した場合などに、送信メッセージから欠落した部分を検出し、またさらに訂正するシステムである。
【０１３０】
また、前記離散対数問題を安全性の根拠としてデジタル著作物を暗号化し、ＤＶＤ、半導体メモリなどの記録媒体に記録する記録装置において、また、前記暗号化デジタル著作物を復号して再生する再生装置において、暗号又は復号に際して、上記に説明した方程式求解部及び逆元演算装置を適用するようにしてもよい。
【０１３１】
このとき、これらの応用システムにおいて、少ない計算量で逆元演算を行うことができる。
上記の方程式求解部及び逆元演算装置は、例えば、携帯電話機に内蔵されるファームウェア、パソコンに装着される回路基盤として実装されうる。
（２）上記の実施の形態では、ｇn −βの形の生成多項式を扱ったが、ｎ次の一般の生成多項式
ｆ（ｇ）＝βn ｇn ＋βn-1 ｇn-1 ・・・＋β2 ｇ2 ＋β1 ｇ ＋β
に対しても同様にして、予め与えられた有限体ＧＦ（ｐ）の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｎは正の整数）上の元ｘの逆元Ｉを算出することができる。
【０１３２】
生成多項式をｎ次の一般の多項式ｆ（ｇ）とし、その根をαとする。
拡大体ＧＦ（ｑ）上の元ｘ（ｘ＝ｘ0 ＋ｘ1 α＋・・・＋ｘn-1 αn-1 ）に対して、（ｘ×αj-1   ｍｏｄ  ｆ（α））のαi-1 の係数をａijとすると、ｎ元連立一次方程式は、次のように表現できる。
ａ11ｙ0 ＋ａ12ｙ1 ＋ａ13ｙ2 ＋  ・・・  ＋ａ1nｙn-1 ＝  １
ａ21ｙ0 ＋ａ22ｙ1 ＋ａ13ｙ2 ＋  ・・・  ＋ａ2nｙn-1 ＝  ０
・・・
ａn1ｙ0 ＋ａn2ｙ1 ＋ａn3ｙ2 ＋  ・・・  ＋ａnnｙn-1 ＝  ０
次に、上記のようにｎ元連立一次方程式を表現できる根拠について簡単に説明する。
【０１３３】
0004354609.tif 000036
である。
ｘ×ｙ0 ＋ｘ×ｙ1 ×α＋  ・・・  ＋ｘ×ｙn-1 αn-1
＝  ｘ×ｙ0 ＋（ｘ×α  ｍｏｄ  ｆ（α））×ｙ1 ＋・・・
＋（ｘ×αn-1   ｍｏｄ  ｆ（α））×ｙn-1
であり、αi-1 の係数は、
ａi1×ｙ0 ＋ａi2×ｙ1 ＋・・・＋ａin×ｙn-1
で与えられる。
【０１３４】
αi-1 （ｉ＞２）の係数は、すべて０であり、α0 （ｉ＝１）の係数は１であるので、上記のｎ元連立一次方程式が得られる。
（３）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１３５】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フロッピーディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０１３６】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を搬送波に載せて、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を搬送波に載せて、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（４）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【０１３７】
【発明の効果】
以上に説明したように本発明は、有限体ＧＦ（ｐ）（ｐは素数）上のｎ元連立一次方程式Ａｘ＝ｂ（ｎは正の整数、Ａはｎ行ｎ列の成分からなる係数行列、ｘはｎ個の成分からなる変数ベクトル、ｂはｎ個の成分からなる定数ベクトル）の解を求める連立方程式求解装置であって、係数行列Ａと定数ベクトルｂとを記憶しているパラメタ記憶手段と、前記パラメタ記憶手段から係数行列Ａと定数ベクトルｂとを読み出し、読み出した係数行列Ａ及び定数ベクトルｂを三角化変換して方程式Ａｘ＝ｂと同値の関係を有するｎ元連立一次方程式Ｃｘ＝ｄの係数行列Ｃ（Ｃはｎ行ｎ列の成分からなる係数行列）及び定数ベクトルｄ（ｄはｎ個の成分からなる定数ベクトル）を生成する三角化変換手段と、前記三角化変換は、係数行列Ａの各対角成分を１に変換しない、係数行列Ａの上三角行列への変換であり、生成された係数行列Ｃの各対角成分の有限体ＧＦ（ｐ）上の逆元である対角逆元を生成する対角逆元演算手段と、生成された係数行列Ｃと定数ベクトルｄと生成された各対角逆元とを用いて、方程式Ａｘ＝ｂの解として、方程式Ｃｘ＝ｄの解を求める方程式求解手段とを備える。
【０１３８】
この構成によると、連立方程式求解装置の計算量を削減することができる。
ここで、前記三角化変換手段は、連続する１個以上の変換過程を介して前記方程式Ｃｘ＝ｄの係数行列Ｃ及び定数ベクトルｄを生成し、前記各変換過程において、前記三角化変換手段は、変換前のｎ元連立一次方程式から、変換前のｎ元連立一次方程式と同値の関係を有する変換後のｎ元連立一次方程式の係数行列及び定数ベクトルを生成し、最初の変換過程において、変換前のｎ元連立一次方程式は、方程式Ａｘ＝ｂであり、最後の変換過程において、変換後のｎ元連立一次方程式は、方程式Ｃｘ＝ｄであり、前記各変換過程において、前記変換前のｎ元連立一次方程式は、変換の対象となる１個以上のｎ元一次方程式である対象方程式と、変換の軸となるｎ元一次方程式である軸方程式とを含み、前記三角化変換手段は、前記各変換過程において、前記各対象方程式を、前記対象方程式と同値の関係を有する同値方程式に変換する場合に、第１係数群と第２係数群とを定め、ここで、前記第１係数群と前記第２係数群とは、それぞれ軸方程式に係る１個以上の値を含む群であり、前記対象方程式において、各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くことにより、前記対象方程式において０でない係数を有する最高次の変数の係数が０となる前記同値方程式が得られ、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くように構成してもよい。
【０１３９】
この構成によると、連立方程式の係数行列の対角行列を１としないように、三角化変換が行える。
ここで、前記三角化変換手段は、前記各変換過程において、１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、前記三角化変換手段は、各副変換過程において、軸方程式の０でない係数を有する最高次の変数の係数から構成される群を第１係数群と定め、軸方程式の各係数及び定数のそれぞれに対象方程式の０でない係数を有する最高次の変数の係数を乗じ、得られた各値から構成される群を第２係数群と定め、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くように構成してもよい。
【０１４０】
また、前記三角化変換手段は、前記各変換過程において、１個の係数群算出過程と、前記係数群算出過程後に１個以上の対象方程式をそれぞれ変換する同数の副変換過程とを含み、前記係数群算出過程において、前記三角化変換手段は、軸方程式及び１個以上の対象方程式の０でない係数を有する最高次の変数の各係数について、前記各係数を除く他の係数を乗じることにより得られる２以上の値から構成される群を第１係数群と定め、前記第１係数群に含まれる値であって、軸方程式の０でない係数を有する最高次の変数の係数を除く他の係数を乗じることにより得られる値と、軸方程式の各係数及び定数とをそれぞれ乗じ、得られた１個以上の値から構成される群を第２係数群と定め、前記副変換過程において、前記三角化変換手段は、前記対象方程式において、０でない係数を有する最高次の変数の係数を０とし、前記対象方程式において、０でない係数を有する最高次以外の変数の各係数及び定数のそれぞれに前記第１係数群に含まれる値を乗じ、得られたそれぞれの値から前記第２係数群に含まれる値を引くように構成してもよい。
【０１４１】
これらの構成によると、三角化変換において同値の関係を有する方程式を得ることができる。
ここで、係数行列Ｃの対角成分をｍi （ｉ＝１、２、．．．、ｎ）とし、対角成分ｍi のＧＦ（ｐ）上の対角逆元をＩi （ｉ＝１、２、．．．、ｎ）とし、
前記対角逆元演算手段は、
【０１４２】
【数２８】
0004354609.tif 000037
【０１４３】
を算出し、
【０１４４】
【数２９】
0004354609.tif 000038
【０１４５】
を算出する乗算部と、ｕ＝１／ｔ  ｍｏｄ  ｐを算出する第１逆元演算部と、対角逆元Ｉi   ＝  ｕ×ｔi   ｍｏｄ  ｐ    （ｉ＝１、２、．．．、ｎ）を算出する第２逆元演算部とを含むように構成してもよい。
また、前記乗算部は、ｓ1 ＝ｍ1 ×ｍ2   ｍｏｄ  ｐ、ｓ2 ＝ｓ1 ×ｍ3   ｍｏｄ  ｐ、  ・・・、ｓn-3 ＝ｓn-4 ×ｍn-2   ｍｏｄ  ｐをこの順序で算出し、次に、ｔn ＝ｓn-3 ×ｍn-1   ｍｏｄ  ｐ、ｔn-1 ＝ｓn-3 ×ｍn   ｍｏｄ  ｐ、ｓn ＝ｍn-1 ×ｍn   ｍｏｄ  ｐ、ｔn-2 ＝ｓn-4 ×ｓn   ｍｏｄ  ｐ、ｓn-1 ＝ｍn-2 ×ｓn   ｍｏｄ  ｐ、  ｔn-3 ＝ｓn-5 ×ｓn-1   ｍｏｄ  ｐ、ｓn-2 ＝ｍn-3 ×ｓn-1   ｍｏｄ  ｐ、ｔn-4 ＝ｓn-6 ×ｓn-2   ｍｏｄ  ｐ、・・・、ｓ5 ＝ｍ4 ×ｓ6   ｍｏｄ  ｐ、ｔ3 ＝ｓ1 ×ｓ5   ｍｏｄ  ｐ、ｓ4 ＝ｍ3 ×ｓ5   ｍｏｄ  ｐ、ｔ2 ＝ｍ1 ×ｓ4   ｍｏｄ  ｐ、ｔ1 ＝ｍ2 ×ｓ4
ｍｏｄ  ｐをこの順序で算出し、次に、正の整数の集合｛１、２、．．．、ｎ｝から選択された１個の値ｊについて、ｔ＝ｔj ×ｍj を算出するように構成してもよい。
【０１４６】
これらの構成によると、対角逆元を算出する演算プロセス内において、逆元演算の回数を削減することができる。
こうして計算量を削減することができ、高速な暗号方式や署名方式を可能にする有限体上の連立方程式求解装置を提供することができ，その実用的価値は大きい。
【０１４７】
また、本発明は、有限体ＧＦ（ｐ）（ｐは素数）の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｎは正の整数）の元ｘの逆元Ｉを演算する逆元演算装置であって、元ｘと拡大体ＧＦ（ｐ）上の多項式の係数とを用いて、ｎ元連立一次方程式Ａｙ＝Ｂの係数行列Ａ及び定数ベクトルＢを生成する方程式生成手段と、上記の連立方程式求解装置であって、ｎ元連立一次方程式Ａｙ＝Ｂの解を求める方程式演算手段と、前記根と求められた前記解とを用いて、逆元Ｉを算出する逆元算出手段とを備える。
【０１４８】
この構成によると、計算量の少ない逆元演算装置を提供することができる。
また、本発明は、有限体ＧＦ（ｐ）（ｐは素数）の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｎは正の整数）の上の楕円曲線をＥ、楕円曲線ＥのベースポイントをＧとし、楕円曲線Ｅ上の離散対数問題を安全性の根拠として利用して安全性を確保する通信を行い、安全性の確保に際して拡大体ＧＦ（ｑ）上の元ｘの逆元Ｉを算出する通信システムであって、元ｘと拡大体ＧＦ（ｐ）上の多項式の係数とを用いて、ｎ元連立一次方程式Ａｙ＝Ｂの係数行列Ａ及び定数ベクトルＢを生成する方程式生成手段と、上記の連立方程式求解装置であって、ｎ元連立一次方程式Ａｙ＝Ｂの解を求める方程式演算手段と、前記根と求められた前記解とを用いて、逆元Ｉを算出する逆元算出手段とを備える。
【０１４９】
この構成によると、有限体上の逆元演算において計算量の少ない通信システムを提供することができる。
また、本発明は、有限体ＧＦ（ｐ）（ｐは素数）の拡大体ＧＦ（ｑ）（ｑ＝ｐn 、ｎは正の整数）の上の楕円曲線をＥ、楕円曲線ＥのベースポイントをＧとし、楕円曲線Ｅ上の離散対数問題を安全性の根拠として暗号化されたデジタル著作物を記録している記録媒体から暗号化デジタル著作物を読み出して復号し、復号に際して拡大体ＧＦ（ｑ）上の元ｘの逆元Ｉを算出する記録媒体再生装置であって、元ｘと拡大体ＧＦ（ｐ）上の多項式の係数とを用いて、ｎ元連立一次方程式Ａｙ＝Ｂの係数行列Ａ及び定数ベクトルＢを生成する方程式生成手段と、上記の連立方程式求解装置であって、ｎ元連立一次方程式Ａｙ＝Ｂの解を求める方程式演算手段と、前記根と求められた前記解とを用いて、逆元Ｉを算出する逆元算出手段とを備えることを特徴とする。
【０１５０】
この構成によると、有限体上の逆元演算において計算量の少ない記録媒体再生装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の１の実施の形態としての逆元演算装置１００の構成を示すブロック図である。
【図２】逆元演算装置１００の全体の動作を示すフローチャートである。
【図３】逆元演算装置１００の方程式の係数行列の三角化変換の動作を示すフローチャートである。
【図４】逆元演算装置１００の対角成分の逆元演算の動作を示すフローチャートである。
【図５】逆元演算装置１００の方程式の演算の動作を示すフローチャートである。
【図６】方程式変換部１０２を適用する具体例である。
【図７】方程式変換部１０２ａによる係数行列の三角化変換の動作を示すフローチャートである。
【図８】変形例としての方程式変換部１０２ａを適用する具体例である。
【図９】従来のエルガマル署名によるデジタル署名方式の手順を示すシーケンス図である。
【図１０】従来の係数行列の三角化変換の動作を示すフローチャートである。
【図１１】従来の方程式変換を適用する具体例である。
【符号の説明】
１００    逆元演算装置
１０１    定数記憶部
１０２    方程式変換部
１０２ａ  方程式変換部
１０３    逆元演算部
１０４    方程式演算部
２００    パラメタ記憶部
２０１    方程式生成部
２０２    方程式求解部
２０３    逆元変換部
２０４    逆元記憶部
【図１】
0004354609.tif 000063
【図２】
0004354609.tif 000064
【図３】
0004354609.tif 000065
【図４】
0004354609.tif 000066
【図５】
0004354609.tif 000067
【図６】
0004354609.tif 000068
【図７】
0004354609.tif 000069
【図８】
0004354609.tif 000070
【図９】
0004354609.tif 000071
【図１０】
0004354609.tif 000072
【図１１】
0004354609.tif 000073