(57)【要約】【課題】  量子計算機が出現しても安全性を確保でき、現在の計算機でも安全に実現可能であると共に、小電力環境での実現可能性がある公開鍵暗号方式を構成する。【解決手段】  ディオファンタス方程式Ｘの２つの整数解Ｓ１，Ｓ２を秘密鍵に用いており、一般的な解法アルゴリズムが存在しないディオファンタス方程式の整数解を求める問題に安全性の根拠をおく公開鍵暗号方式の暗号装置２０，復号装置３０又は鍵生成装置１０を実現した。これにより、上記課題を解決する。【選択図】      図１
2006194990.tif 000002
【特許請求の範囲】
【請求項１】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージを暗号化するための暗号装置であって、
前記メッセージを整数ｍに展開する展開手段と、
前記整数ｍを次数（Ｌ−１）次以下の多項式ｍ（ｔ）に埋め込む手段と、
ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段と、
次数Ｌ以上のランダムな既約多項式ｆ（ｔ）を生成する既約多項式生成手段と、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とした暗号装置。
【請求項２】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージを暗号化するための暗号装置であって、
前記メッセージを整数ｍに展開する展開手段と、
前記整数ｍを次数（Ｌ−１）次以下の１変数多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）の候補の一部の係数とに分担して埋め込む手段と、
ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段と、
前記次数Ｌ以上の既約多項式ｆ（ｔ）の候補の各係数のうち、前記整数ｍが埋め込まれていない係数をランダムな値に設定し、前記既約多項式ｆ（ｔ）を生成する既約多項式生成手段と、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とした暗号装置。
【請求項３】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn) と既約多項式の最小次数Ｌとに基づいて、メッセージｍを暗号化するための暗号装置であって、
前記メッセージを整数ｍに展開する展開手段と、
前記整数ｍを次数（Ｌ−１）次以下の多項式ｍ（ｔ）に埋め込む手段と、
少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn、ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段と、
次数Ｌ以上のランダムな既約多項式を生成する既約多項式生成手段と、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記整数ｍから暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とした暗号装置。
【請求項４】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn) と既約多項式の最小次数Ｌとに基づいて、メッセージｍを暗号化するための暗号装置であって、
前記メッセージを整数ｍに展開する展開手段と、
前記整数ｍを次数（Ｌ−１）次以下の多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）の候補の一部の係数とに分担して埋め込む手段と、
少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn、ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段と、
前記次数Ｌ以上の既約多項式ｆ（ｔ）の候補の各係数のうち、前記整数ｍが埋め込まれていない係数をランダムな値に設定し、前記既約多項式ｆ（ｔ）を生成する既約多項式生成手段と、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とした暗号装置。
【請求項５】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）に対し、ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１，Ｓ２に基づいて、前記暗号文Ｆからメッセージを復号するための復号装置であって、
前記入力された暗号文Ｆに対し、前記整数解Ｓ１，Ｓ２を個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段と、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段と、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解手段と、
前記素因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する因子抽出手段と、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段と
を備えたことを特徴とする復号装置。
【請求項６】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）に対し、ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）とｆ（ｔ）から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１，Ｓ２に基づいて、前記暗号文Ｆからメッセージを復号するための復号装置であって、
前記入力された暗号文Ｆに対し、前記整数解Ｓ１，Ｓ２を個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段と、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段と、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解手段と、
前記素因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する因子抽出手段と、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段と
を備えたことを特徴とする復号装置。
【請求項７】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）に対し、少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解Ｓに基づいて、前記暗号文Ｆ１，Ｆ２からメッセージを復号するための復号装置であって、
前記入力された暗号文Ｆ１，Ｆ２に対し、前記整数解Ｓを個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段と、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段と、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解手段と、
前記因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する因子抽出手段と、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段と
を備えたことを特徴とする復号装置。
【請求項８】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）に対し、少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）とｆ（ｔ）から生成された暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解Ｓに基づいて、前記暗号文Ｆ１，Ｆ２からメッセージを復号するための復号装置であって、
前記入力された暗号文Ｆ１，Ｆ２に対し、前記整数解Ｓを個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段と、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段と、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解手段と、
前記因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する因子抽出手段と、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段と
を備えたことを特徴とする復号装置。
【請求項９】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）を暗号化するための公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と、前記暗号化された多項式ｍ（ｔ）を復号するための秘密鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１,Ｓ２とを生成するための鍵生成装置であって、
複数個の係数をそれぞれ変数としたディオファンタス方程式を決定するディオファンタス方程式決定手段と、
２つの整数解Ｓ１＝（ｃ1,…,ｃn），Ｓ２＝（ｇ1,…,ｇn）をランダムに生成する整数解生成手段と、
前記２つの整数解Ｓ１,Ｓ２を前記係数を変数としたディオファンタス方程式に代入して得られた連立方程式を行列表現した際の係数行列を求め、前記係数行列に掃きだし法を施すことによって、前記各係数のうちの幾つかの係数を自由変数である他の係数で表した基本解を求める行列演算手段と、
前記基本解の自由変数にランダムな値を代入することにより、整数の要素及び／又は有理数の要素で各係数を表す第１係数ベクトルを求め、この第１係数ベクトルの各要素の分母の最小公倍数を当該各要素にかけることによって全て整数の要素で各係数を表す第２係数ベクトルを求めることでディオファンタス方程式を生成するディオファンタス方程式生成手段と
を備えたことを特徴とする鍵生成装置。
【請求項１０】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）を暗号化するための公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と、前記暗号化された多項式ｍ（ｔ）を復号するための秘密鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する整数解Ｓとを生成するための鍵生成装置であって、
係数を変数とした変数項及び定数項からなるディオファンタス方程式を決定するディオファンタス方程式決定手段と、
整数解Ｓをランダムに生成する整数解生成手段と、
ディオファンタス方程式の変数項の係数をランダムに決定する係数生成手段と、
前記生成された整数解Ｓと前記決定された係数から前記生成されたディオファンタス方程式の定数項を求めるディオファンタス方程式生成手段と
を備えたことを特徴とする鍵生成装置。
【請求項１１】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置のコンピュータを、
前記メッセージを整数ｍに展開する展開手段、
前記整数ｍを次数（Ｌ−１）次以下の多項式ｍ（ｔ）に埋め込む手段、
ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段、
次数Ｌ以上のランダムな既約多項式候補ｆ’（ｔ）を生成してメモリに保存し、前記メモリ内の既約多項式候補ｆ’（ｔ）を既約判定することにより、既約多項式ｆ（ｔ）を生成する既約多項式生成手段、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項１２】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置のコンピュータを、
前記メッセージを整数ｍに展開する展開手段、
前記整数ｍを次数（Ｌ−１）次以下の多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）の候補の一部の係数とに分担して埋め込む手段、
ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段、
前記次数Ｌ以上の既約多項式候補ｆ’（ｔ）の係数のうち、前記メッセージが埋め込まれていない係数をランダムな値に設定し、前記既約多項式ｆ’（ｔ）を生成してメモリに保存し、前記メモリ内の既約多項式候補ｆ’（ｔ）を既約判定することにより、既約多項式ｆ（ｔ）を生成する既約多項式生成手段、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆと公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項１３】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージｍを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置のコンピュータを、
前記メッセージを整数ｍに展開する展開手段、
前記整数ｍを次数（Ｌ−１）次以下の多項式ｍ（ｔ）に埋め込む手段、
少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段、
次数Ｌ以上のランダムな既約多項式候補ｆ’（ｔ）を生成してメモリに保存し、前記メモリ内の既約多項式候補ｆ’（ｔ）を既約判定することにより、既約多項式ｆ（ｔ）を生成する既約多項式生成手段、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項１４】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージｍを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置のコンピュータを、
前記メッセージを整数ｍに展開する展開手段、
前記整数ｍを次数（Ｌ−１）次以下の１変数多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）の候補の一部の係数とに分担して埋め込む手段、
少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段、
前記次数Ｌ以上の既約多項式候補ｆ’（ｔ）の係数のうち、前記メッセージが埋め込まれていない係数をランダムな値に設定し、前記既約多項式ｆ‘（ｔ）を生成してメモリに保存し、前記メモリ内の既約多項式候補ｆ’（ｔ）を既約判定することにより、既約多項式ｆ（ｔ）を生成する既約多項式生成手段、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項１５】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）に対し、ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１，Ｓ２に基づいて、前記暗号文Ｆからメッセージを復号するための復号装置に用いられるプログラムであって、
前記復号装置のコンピュータを、
前記入力された暗号文Ｆに対し、前記整数解Ｓ１，Ｓ２を個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解し、得られた因数分解結果をメモリに保存する因数分解手段、
前記メモリ内の因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する素因子抽出手段、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記素既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段、
として機能させるためのプログラム。
【請求項１６】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）に対し、ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）とｆ（ｔ）から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１，Ｓ２に基づいて、前記暗号文Ｆからメッセージを復号するための復号装置に用いられるプログラムであって、
前記復号装置のコンピュータを、
前記入力された暗号文Ｆに対し、前記整数解Ｓ１，Ｓ２を個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解し、得られた因数分解結果をメモリに保存する因数分解手段、
前記メモリ内の因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する素因子抽出手段、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記素既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段、
として機能させるためのプログラム。
【請求項１７】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）に対し、少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆと公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解Ｓに基づいて、前記暗号文Ｆ１，Ｆ２からメッセージを復号するための復号装置に用いられるプログラムであって、
前記復号装置のコンピュータを、
前記入力された暗号文Ｆ１，Ｆ２に対し、前記整数解Ｓを個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解し、得られた因数分解結果をメモリに保存する因数分解手段、
前記メモリ内の因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する因子抽出手段、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段、
として機能させるためのプログラム。
【請求項１８】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）に対し、少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆと公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）とｆ（ｔ）から生成された暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解Ｓに基づいて、前記暗号文Ｆ１，Ｆ２からメッセージを復号するための復号装置に用いられるプログラムであって、
前記復号装置のコンピュータを、
前記入力された暗号文Ｆ１，Ｆ２に対し、前記整数解Ｓを個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解し、得られた因数分解結果をメモリに保存する因数分解手段、
前記メモリ内の因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する因子抽出手段、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段、
として機能させるためのプログラム。
【請求項１９】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）を暗号化するための公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と、前記暗号化された多項式ｍ（ｔ）を復号するための秘密鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１,Ｓ２とを生成するための鍵生成装置に用いられるプログラムであって、
前記鍵生成装置のコンピュータを、
複数個の係数をそれぞれ変数としたディオファンタス方程式を決定するディオファンタス方程式決定手段、
２つの整数解Ｓ１＝（ｃ1,…,ｃn），Ｓ２＝（ｇ1,…,ｇn）をランダムに生成する整数解生成手段、
前記２つの整数解Ｓ１,Ｓ２を前記係数を変数としたディオファンタス方程式に代入して得られた連立方程式を行列表現した際の係数行列を求め、前記係数行列に掃きだし法を施すことによって、前記各係数のうちの幾つかの係数を自由変数である他の係数で表した基本解を求める行列演算手段、
前記基本解の自由変数にランダムな値を代入することにより、整数の要素及び／又は有理数の要素で各係数を表す第１係数ベクトルを求め、この第１係数ベクトルの各要素の分母の最小公倍数を当該各要素にかけることによって全て整数の要素で各係数を表す第２係数ベクトルを求めることでディオファンタス方程式を生成するディオファンタス方程式生成手段、
として機能させるためのプログラム。
【請求項２０】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）を暗号化するための公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と、前記暗号化された多項式ｍ（ｔ）を復号するための秘密鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する整数解Ｓとを生成するための鍵生成装置に用いられるプログラムであって、
前記鍵生成装置のコンピュータを、
係数を変数とした変数項及び定数項からなるディオファンタス方程式を決定するディオファンタス方程式決定手段、
整数解Ｓをランダムに生成する整数解生成手段、
ディオファンタス方程式の変数項の係数をランダムに決定する係数生成手段、
前記生成された整数解Ｓと前記決定された係数から前記生成されたディオファンタス方程式の定数項を求めるディオファンタス方程式生成手段、
として機能させるためのプログラム。
【請求項２１】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージを暗号化するための暗号装置が実行する暗号方法であって、
前記メッセージを整数ｍに展開する展開工程と、
前記整数ｍを次数（Ｌ−１）次以下の多項式ｍ（ｔ）に埋め込む埋め込み工程と、
ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)を生成する多項式生成工程と、
次数Ｌ以上のランダムな既約多項式ｆ（ｔ）を生成する既約多項式生成工程と、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とした暗号方法。
【請求項２２】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージを暗号化するための暗号装置が実行する暗号方法であって、
前記メッセージを整数ｍに展開する展開工程と、
前記整数ｍを次数（Ｌ−１）次以下の１変数多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）の候補の一部の係数とに分担して埋め込む埋め込み工程と、
ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)を生成する多項式生成工程と、
前記次数Ｌ以上の既約多項式ｆ（ｔ）の候補の各係数のうち、前記メッセージｍが埋め込まれていない係数をランダムな値に設定し、前記既約多項式ｆ（ｔ）を生成する既約多項式生成工程と、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とした暗号方法。
【請求項２３】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージｍを暗号化するための暗号装置が実行する暗号方法であって、
前記メッセージを整数ｍに展開する展開工程と、
前記整数を次数（Ｌ−１）以下の多項式ｍ（ｔ）に埋め込む埋め込み工程と、
少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)を生成する多項式生成工程と、
次数Ｌ以上のランダムな既約多項式ｆ（ｔ）を生成する既約多項式生成工程と、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とした暗号方法。
【請求項２４】
復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌに基づいて、メッセージｍを暗号化するための暗号装置が実行する暗号方法であって、
前記メッセージを整数ｍに展開する展開工程と、
前記整数ｍを次数（Ｌ−１）次以下の１変数多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）の候補の一部の係数とに分担して埋め込む埋め込み工程と、
少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)を生成する多項式生成工程と、
前記次数Ｌ以上の既約多項式ｆ（ｔ）の候補の各係数のうち、前記整数ｍが埋め込まれていない係数をランダムな値に設定し、前記既約多項式ｆ（ｔ）を生成する既約多項式生成工程と、
前記多項式ｍ（ｔ）に対し、前記各多項式ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とした暗号方法。
【請求項２５】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）に対し、ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１，Ｓ２に基づいて、前記暗号文Ｆからメッセージを復号するための復号装置が実行する復号方法であって、
前記入力された暗号文Ｆに対し、前記整数解Ｓ１，Ｓ２を個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入工程と、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算工程と、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解工程と、
前記因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する素因子抽出工程と、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算工程と
を備えたことを特徴とする復号方法。
【請求項２６】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）に対し、ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１，Ｓ２に基づいて、前記暗号文Ｆからメッセージを復号するための復号装置が実行する復号方法であって、
前記入力された暗号文Ｆに対し、前記整数解Ｓ１，Ｓ２を個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入工程と、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算工程と、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解工程と、
前記因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する素因子抽出工程と、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算工程と
を備えたことを特徴とする復号方法。
【請求項２７】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）に対し、少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と次数Ｌ以上の既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解Ｓに基づいて、前記暗号文Ｆ１，Ｆ２からメッセージを復号するための復号装置が実行する復号方法であって、
前記入力された暗号文Ｆ１，Ｆ２に対し、前記整数解Ｓを個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入工程と、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算工程と、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解工程と、
前記因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する因子抽出工程と、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算工程と
を備えたことを特徴とする復号方法。
【請求項２８】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）と次数Ｌ以上の既約多項式ｆ（ｔ）に対し、少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）とｆ（ｔ）から生成された暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解Ｓに基づいて、前記暗号文Ｆ１，Ｆ２からメッセージを復号するための復号装置が実行する復号方法であって、
前記入力された暗号文Ｆ１，Ｆ２に対し、前記整数解Ｓを個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入工程と、
前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算工程と、
前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解工程と、
前記因数分解結果から最大次数の既約多項式ｆを抽出する因子抽出工程と、
前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算工程と
を備えたことを特徴とする復号方法。
【請求項２９】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）を暗号化するための公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と、前記暗号化された多項式ｍ（ｔ）を復号するための秘密鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１,Ｓ２とを生成するための鍵生成装置が実行する鍵生成方法であって、
複数個の係数をそれぞれ変数としたディオファンタス方程式を決定するディオファンタス方程式決定工程と、
２つの整数解Ｓ１＝（ｃ1,…,ｃn），Ｓ２＝（ｇ1,…,ｇn）をランダムに生成する整数解生成工程と、
前記２つの整数解Ｓ１,Ｓ２を前記係数を変数としたディオファンタス方程式に代入して得られた連立方程式を行列表現した際の係数行列を求め、前記係数行列に掃きだし法を施すことによって、前記各係数のうちの幾つかの係数を自由変数である他の係数で表した基本解を求める行列演算工程と、
前記基本解の自由変数にランダムな値を代入することにより、整数の要素及び／又は有理数の要素で各係数を表す第１係数ベクトルを求め、この第１係数ベクトルの各要素の分母の最小公倍数を当該各要素にかけることによって全て整数の要素で各係数を表す第２係数ベクトルを求めることでディオファンタス方程式を生成するディオファンタス方程式生成工程と
を備えたことを特徴とする鍵生成方法。
【請求項３０】
メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）を暗号化するための公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と、前記暗号化された多項式ｍ（ｔ）を復号するための秘密鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する整数解Ｓとを生成するための鍵生成装置が実行する鍵生成方法であって、
係数を変数とした変数項及び定数項からなるディオファンタス方程式を決定するディオファンタス方程式決定工程と、
整数解Ｓをランダムに生成する整数解生成工程と、
ディオファンタス方程式の変数項の係数をランダムに決定する係数生成工程と、
前記生成された整数解Ｓと前記決定された係数から前記生成されたディオファンタス方程式の定数項を求めるディオファンタス方程式生成工程と
を備えたことを特徴とする鍵生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディオファンタス方程式を用いた暗号装置、復号装置、鍵生成装置、プログラム及び方法に関する。
【背景技術】
【０００２】
ネットワーク社会では、電子メールを始めとする多くの情報がネットワークを行き交うことにより、人々がコミュニケーションを行なう。このようなネットワーク社会において、暗号技術は情報の機密性や真正性を守る手段として広く活用されている。
【０００３】
暗号技術は、共通鍵暗号技術と公開鍵暗号技術に大きく分けることができる。共通鍵暗号はデータの攪拌アルゴリズムに基づいた暗号方式であり、高速に暗号化／復号ができる一方で、予め共通の鍵を持った２者間でしか秘密通信や認証通信ができない。
【０００４】
このため、共通鍵暗号は、主に有料デジタル放送のように、受信後にリアルタイムで復号されなければならない情報の暗号化に利用される。この場合、有料デジタル放送の復号鍵は、別途、限定受信システムと呼ばれる鍵配信システムを用いて視聴契約者だけに配信される。
【０００５】
一方、公開鍵暗号は数学的なアルゴリズムに基づいた暗号方式であり、暗号化／復号が共通鍵暗号より低速であるが、事前の鍵共有を必要とせずに、秘密通信や認証通信が可能となる特徴がある。詳しくは、公開鍵暗号は、通信の際には送信相手の公開鍵を用いて暗号処理を施すことで秘密通信を実現し、自己の秘密鍵を用いてデジタル署名を施すことで（成りすましを防ぐ）認証通信を可能とする。
【０００６】
ここで、インターネットに開設されているネットショッピング、銀行や証券会社のオンラインサイトでは、（クレジットカード番号や住所などの）顧客情報を盗聴から守るために、公開鍵暗号が用いられることが多い。理由は、顧客情報を暗号化するための暗号鍵を予め共有することが必ずしも可能でないため、共通鍵暗号が不向きなことによる。
【０００７】
代表的な公開鍵暗号には、ＲＳＡ暗号と楕円曲線暗号がある。ＲＳＡ暗号は、素因数分解問題の困難性を安全性の根拠としており、冪乗剰余演算が暗号化演算として用いられている。楕円曲線暗号は、楕円曲線上の離散対数問題の困難性を安全性の根拠としており、楕円曲線上の点演算が暗号化演算に用いられる。
【０００８】
これらの公開鍵暗号は、特定の鍵（公開鍵）に関する解読法は提案されているものの、一般的な解読法は知られていない。このため、安全性に関する重大な問題は、後に述べる量子計算機による解読法を除き、現在までのところ、見つかっていない。
【０００９】
この他の公開鍵暗号にはナップサック暗号及び多次多変数暗号などがある。ナップサック暗号は、（ＮＰ問題として知られている）ナップサック問題の困難性に安全性の根拠をおいた暗号方式である。多次多変数暗号は、体の拡大理論を利用して構成され、連立方程式の求解問題に安全性の根拠をおいた暗号方式である。
【００１０】
しかし、ナップサック暗号は、ほとんど全ての実現形態にて解読法が知られているので、安全性にかなり疑問がある。多次多変数暗号は、有力な解読法が知られている一方、この解読法は鍵サイズの増大により避けられることも知られている。とは言え、多次多変数暗号は、解読法を避けるのに必要な鍵サイズが膨大になり、問題視され始めている。
【００１１】
一方で、現在広く利用されているＲＳＡ暗号と楕円曲線暗号であっても量子計算機が出現すれば解読される危険に晒されている。量子計算機とは、量子力学で知られているエンタングルメントという物理現象を利用し、現在の計算機とは違った原理に基づいて超並列計算を実行可能な計算機である。かかる量子計算機は、現在までのところ実験レベルでしか動作が確認されていない仮想の計算機であるが、実現に向けた研究開発が進められている。１９９４年にショア（Shor）は、量子計算機を用いれば素因数分解や離散対数問題を効率的に解くアルゴリズムを構成できることを示した。即ち、量子計算機が実現すれば、素因数分解に基づくＲＳＡ暗号や、（楕円曲線上の）離散対数問題に基づく楕円曲線暗号は解読できることになる。
【００１２】
このような状況の下、量子計算機が実現されてもなお安全な公開鍵暗号が近年研究されてきている。量子計算機への耐性があると言われる暗号の一例として、量子公開鍵暗号が挙げられる（例えば、非特許文献１参照）。量子公開鍵暗号では、量子計算機を積極的に活用し、現在の計算機では生成が事実上不可能とされる強力なナップサック暗号を構成する鍵を量子計算機により生成する。これにより、量子公開鍵暗号では、量子計算機でも解読できない強力なナップサック暗号を構成し得る。
【００１３】
しかしながら、量子公開鍵暗号は、現在の計算機では鍵生成が不可能であるので、現時点では利用できない方式である。一方、多次多変数暗号は、現時点でも実現可能な公開鍵暗号であり、量子計算機でも解読が難しいとされる。しかし、多次多変数暗号は、現状の計算機に対して安全な鍵サイズが膨大なため、実用化が疑問視されている。
【００１４】
更に、公開鍵暗号は、共通鍵暗号と比較して、回路規模が大きく、処理時間も掛かるため、モバイル端末などの小電力環境では実現できないか、実現しても待ち時間が長いという問題がある。このため、小電力環境でも実現できる公開鍵暗号が求められている。
【００１５】
一般に公開鍵暗号は（素因数分解問題や離散対数問題などの）計算困難な問題を見出し、（秘密鍵を知らずに）暗号文を解読しようとする場合、当該計算困難な問題を解くことと同等になるように構成する。
【００１６】
しかし、計算困難な問題が見つかっても、その問題を安全性の根拠とする公開鍵暗号を容易に構成できる訳ではない。理由は、計算が困難すぎる問題を安全性の根拠にすると鍵を生成する問題も困難になるので、鍵を生成できないためである。一方、鍵生成が可能な程度に問題を容易にすると、解読も容易になってしまう。
【００１７】
従って、公開鍵暗号を構成するには、計算困難な問題を見つけるとともに、見つけた問題を、鍵生成できる程には容易だが、（生成した秘密鍵を知らずに）解読できる程には容易でないという絶妙なバランスを持つ問題に作り変える必要がある。このような問題の作り変えには高い創造性を必要とする。現実には、問題の作り変えが極めて困難なため、現在まで数えるほどの公開鍵暗号しか提案されていない。
【非特許文献１】Ｔ.岡本、Ｋ.田中、Ｓ.内山（T.Okamoto and K.Tanaka and S.Uchiyama）著:“量子公開鍵暗号システム（Quantum Public-Key Cryptosystems）”,アドバンセズ・イン・クリプトロジー・クリプト２０００（Advances in Cryptology - CRYPTO2000）, レクチャー・ノーツ・イン・コンピュータ・サイエンス（Lecture Notes in Computer Science）, 1880巻, pp.147-165, シュプリンガーフェアラーク（Springer-Verlag）, 2000年.
【非特許文献２】松坂和夫著、「代数系入門」、岩波書店、１９７６年、ｐ．１４０の定理８
【非特許文献３】D.コックス 他  著、「グレブナ基底と代数多様体入門（上）」、シュプリンガーフェアラーク（Springer-Verlag）
【発明の開示】
【発明が解決しようとする課題】
【００１８】
以上説明したように公開鍵暗号方式は、量子計算機でも解読が難しいことと、現在の計算機でも実用化できることが望まれている。更に、公開鍵暗号方式は、小電力環境でも実現できることが求められている。
【００１９】
本発明は上記実情を考慮してなされたもので、量子計算機が出現しても安全性を確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成し得る暗号装置、復号装置、鍵生成装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
第１の発明は、復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とランダムに生成する既約多項式ｆ（ｔ）の最小次数Ｌに基づいて、メッセージを暗号化するための暗号装置であって、前記メッセージを整数ｍに展開する展開手段と、前記整数ｍを次数（Ｌ−１）以下の１変数多項式ｍ（ｔ）に埋め込む埋め込み手段と、ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段と、次数Ｌ以上のランダムな既約多項式ｆ（ｔ）を生成する既約多項式生成手段と、前記多項式ｍ（ｔ）に対し、前記各多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段とを備えた暗号装置である。
【００２１】
第２の発明は、復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解のとき、公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とランダムな既約多項式の最小次数Ｌに基づいて、メッセージｍを暗号化するための暗号装置であって、前記メッセージを整数ｍに展開する展開手段と、前記整数ｍを次数（Ｌ−１）以下の１変数多項式ｍ（ｔ）に埋め込む埋め込み手段と、少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)を生成する多項式生成手段と、次数Ｌ以上のランダムな既約多項式ｆ（ｔ）を生成する既約多項式生成手段と、前記多項式ｍ（ｔ）に対し、前記各多項式ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行い、前記多項式ｍ（ｔ）から暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段とを備えた暗号装置である。
【００２２】
第３の発明は、メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）に対し、ランダムな２つの多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)と既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１，Ｓ２に基づいて、前記暗号文Ｆからメッセージを復号するための復号装置であって、前記入力された暗号文Ｆに対し、前記整数解Ｓ１，Ｓ２を個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段と、前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段と、前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解手段と、前記因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する素因子抽出手段と、前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段とを備えた復号装置である。
【００２３】
第４の発明は、メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）に対し、少なくとも一方が相異なる２つのランダムな多項式の組ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)，ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)と次数Ｌ以上のランダムな既約多項式ｆ（ｔ）と公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記多項式ｍ（ｔ）から生成された暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、予め保持する復号用の秘密鍵がディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する１つの整数解Ｓに基づいて、前記暗号文Ｆ１，Ｆ２からメッセージを復号するための復号装置であって、前記入力された暗号文Ｆ１，Ｆ２に対し、前記整数解Ｓを個別に代入して２つの多項式ｈ１（ｔ），ｈ２（ｔ）を生成する整数解代入手段と、前記代入により得られた一方の多項式ｈ１（ｔ）から他方の多項式ｈ２（ｔ）を減算し、減算結果（ｈ１（ｔ）−ｈ２（ｔ））を得る多項式減算手段と、前記減算結果（ｈ１（ｔ）−ｈ２（ｔ））を因数分解する因数分解手段と、前記因数分解結果から最大次数の既約多項式ｆ（ｔ）を抽出する因子抽出手段と、前記代入により得られた多項式ｈ１（ｔ）又はｈ２（ｔ）を前記既約多項式ｆ（ｔ）で除算し、剰余として前記メッセージに対応する多項式ｍ（ｔ）を求める剰余演算手段とを備えた復号装置である。
【００２４】
第５の発明は、メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）を暗号化するための公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と、前記暗号化された多項式ｍ（ｔ）を復号するための秘密鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する２つの整数解Ｓ１,Ｓ２とを生成するための鍵生成装置であって、係数を変数としたディオファンタス方程式を決定するディオファンタス方程式決定手段と、２つの整数解Ｓ１＝（ｃ1,…,ｃn），Ｓ２＝（ｇ1,…,ｇn）をランダムに生成する整数解生成手段と、前記２つの整数解Ｓ１,Ｓ２を前記係数を変数としたディオファンタス方程式に代入して得られた連立方程式を行列表現した際の係数行列を求め、前記係数行列に掃きだし法を施すことによって、基本解を求める行列演算手段と、前記基本解から自由変数にランダムな値を代入することにより、具体的な解ベクトルを求め、前記解ベクトルの各要素の分母の最小公倍数をかけることによって整数解ベクトルを求めることでディオファンタス方程式を生成するディオファンタス方程式生成手段とを備えた鍵生成装置である。
【００２５】
第６の発明は、メッセージが埋め込まれてなる次数（Ｌ−１）以下の多項式ｍ（ｔ）を暗号化するための公開鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)と、前記暗号化された多項式ｍ（ｔ）を復号するための秘密鍵であるディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０に対応する整数解Ｓとを生成するための鍵生成装置であって、係数を変数としたディオファンタス方程式を決定するディオファンタス方程式決定手段と、整数解Ｓをランダムに生成する整数解生成手段と、ディオファンタス方程式の定数項以外の係数をランダムに決定する係数生成手段と、前記生成された整数解Ｓと前記生成された係数から前記生成されたディオファンタス方程式の定数項を求めるディオファンタス方程式生成手段とを備えた鍵生成装置である。
【００２６】
（作用）
第１乃至第６の各発明は、ディオファンタス方程式Ｘの整数解を秘密鍵に用いる構成により、一般的な解法アルゴリズムが存在しないディオファンタス方程式の整数解を求める問題に安全性の根拠をおく公開鍵暗号方式の暗号装置、復号装置又は鍵生成装置を実現したので、量子計算機が出現しても安全性を確保でき、現在の計算機でも安全に実現可能であると共に、小電力環境での実現可能性がある公開鍵暗号方式を構成することができる。
【発明の効果】
【００２７】
以上説明したように本発明によれば、量子計算機が出現しても安全性を確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の各実施形態について図面を参照しながら説明する。  
（第１の実施形態）
整数を係数に持つ有限個の方程式に共通の整数解を求めることをディオファンタス方程式または不定方程式を解くといい、整数解を求めることを前提とした整数係数の（有限個の）方程式をディオファンタス方程式もしくは不定方程式と呼ぶ。例えば整数係数の連立方程式である式（１）は、ディオファンタス方程式である。
【数１】
2006194990.tif 000003
【００２９】
ディオファンタス方程式の整数解を求める問題は、紀元前から研究され、多くの数学者の興味を惹き、整数論という一分野を確立するもととなった。
【００３０】
近年、ディオファンタス方程式の整数解を求める問題には一般的な解法アルゴリズムが存在しないことが分かってきた。即ち、ディオファンタス方程式を解くには、その方程式（若しくは方程式群）に固有の解法アルゴリズムを適用させるしか方法がない。しかしながら、解法アルゴリズムが知られているディオファンタス方程式（若しくはディオファンタス方程式群）は極めて限られている。
【００３１】
このようにディオファンタス方程式の整数解を求める問題は、ＲＳＡ暗号が安全性の根拠にしている素因数分解問題や楕円曲線暗号が安全性の根拠にしている楕円曲線上の離散対数問題に一般的な解法アルゴリズムが知られていることを考えると、相当難しい問題と考えることができる。実際、２次のディオファンタス方程式の整数解を求める問題は、（一部の簡単な実例を除いて）ＮＰ完全問題であることが知られている。
【００３２】
尚、本実施形態では簡単のため、１つの方程式からなるｎ変数のディオファンタス方程式のみを取り扱うため、  
Ｘ(ｘ1,…,ｘn)＝０  
のように記述する。
【００３３】
しかし、本発明の本質的な部分はディオファンタス方程式の整数解を求める問題に安全性をおく公開鍵暗号を構成することであるので、この範囲で複数のディオファンタス方程式を利用した構成も可能である。
【００３４】
以下では、ディオファンタス方程式の整数解を求める問題の困難性に基づいた公開鍵暗号の具体的な構成を説明する。
【００３５】
第１の実施形態の公開鍵は以下のディオファンタス方程式Ｘである。  
ディオファンタス方程式：Ｘ(ｘ1,…,ｘn)＝０  
秘密鍵は以下の２つである。  
１．ディオファンタス方程式Ｘの整数解:Ｓ１:(ｘ1,…,ｘn)＝(ｃ1,…,ｃn)  
２．ディオファンタス方程式Ｘの整数解:Ｓ２:(ｘ1,…,ｘn)＝(ｇ1,…,ｇn)
これらは後述する方法（鍵生成方法）で容易に求めることができる。
【００３６】
次に暗号化処理の概要を述べる。暗号化処理ではまず暗号化したいメッセージ（以下では平文と呼ぶ）を整数ｍに変換し、整数ｍを（Ｌ−１）次以下の多項式の係数に埋め込む。ここで、Ｌはメッセージ暗号化時に受信者と送信者の間で取り決められる既約多項式ｆ（ｔ）の最小次数である。次に、整数係数の多項式ｑ(ｘ1,…,ｘn,ｔ)をランダムに生成する。続いて定数項を持つ整数係数の多項式ｐ(ｘ1,…,ｘn,ｔ)を条件（２）、条件（３）、条件（４）を満たす範囲でランダムに生成する。条件（２）は次の通りである。
【００３７】
１≦∀ｉ≦ｎ  ｄｅｇｘｉｐ(ｘ1,…,ｘn,ｔ)＞ｄｅｇｘｉＸ(ｘ1,…,ｘn)
（２）
ｄｅｇｘｉｐ(ｘ1,…,ｘn,ｔ)は多項式ｐ(ｘ1,…,ｘn,ｔ)を変数ｘｉの多項式と思ったときの次数を表す。例えばｘの次数ｄｅｇｘと、ｙの次数ｄｅｇｙは、それぞれ次のようになる。
【００３８】
ｄｅｇｘ（ｘ３ｙ４＋２ｘ２ｙ５ｔ＋５ｘｙｔ２＋３）＝３，
ｄｅｇｙ（ｘ３ｙ４＋２ｘ２ｙ５ｔ＋５ｘｙｔ２＋３）＝５
条件（３）は次の通りである。
【数２】
2006194990.tif 000004
【００３９】
次にランダムな既約多項式ｆ（ｔ）を生成する。ここで、既約多項式生成処理には極めて効率的なアルゴリズムが存在する。既約多項式生成は、ランダムに多項式を選択する処理と、選択した多項式が既約多項式か否かを判定する既約性判定処理とからなり、既約多項式と判定される多項式を得るまで、上述した処理を繰りかえす内容なので、比較的短時間に行うことができる。
【００４０】
既約多項式ｆ（ｔ）を得ると、次の式（５）に基づいて、暗号文Ｆ(ｘ1,…,ｘn,ｔ)を計算する。
【００４１】
Ｆ(ｘ1,…,ｘn,ｔ)＝ｍ（ｔ）＋ｆ（ｔ）ｐ(ｘ1,…,ｘn,ｔ)＋Ｘ(ｘ1,…,ｘn)ｑ(ｘ1,…,ｘn,ｔ)  （５）
なお、後述する＜安全性の検討＞でも示される通り、ランダムな多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)は一方が欠けても安全性に問題が生ずる。即ち、２つのランダム多項式ｐ(ｘ1,…,ｘn,ｔ)，ｑ(ｘ1,…,ｘn,ｔ)は、安全性の観点から、必然性をもって式（５）に含まれている。
【００４２】
暗号文Ｆ(ｘ1,…,ｘn,ｔ)を受け取った受信者は、所有する秘密鍵Ｓ１，Ｓ２を利用して次のように復号を行う。まず、整数解Ｓ１，Ｓ２を暗号文Ｆ(ｘ1,…,ｘn,ｔ)に代入する。
【００４３】
代入した結果、Ｘ(ｃ1,…,ｃn)＝０，Ｘ(ｇ1,…,ｇn)＝０、であるから、以下の２つの多項式ｈ１（ｔ），ｈ２（ｔ）が求まる。
【００４４】
ｈ１（ｔ）＝Ｆ(ｃ1,…,ｃn,ｔ)＝ｍ（ｔ）＋ｆ（ｔ）ｐ(ｃ1,…,ｃn,ｔ)
ｈ２（ｔ）＝Ｆ(ｇ1,…,ｇn,ｔ)＝ｍ（ｔ）＋ｆ（ｔ）ｐ(ｇ1,…,ｇn,ｔ)
次に、これら２式を辺々引き算し、次の式（６）を計算する。
【００４５】
ｈ１（ｔ）−ｈ２（ｔ）＝ｆ（ｔ）｛ｐ(ｃ1,…,ｃn,ｔ)−ｐ(ｇ1,…,ｇn,ｔ)｝      （６）
計算により得られたｈ１（ｔ）−ｈ２（ｔ）を因数分解し、最大次数の既約多項式をｆ（ｔ）と定める。ここで、条件（４）により因子｛ｐ(ｃ1,…,ｃn,ｔ)−ｐ(ｇ1,…,ｇn,ｔ)｝の次数が高々（Ｌ−１）で抑えられることにより、ｆ（ｔ）が最大次数の既約多項式として決定できる。また、ｈ１（ｔ）−ｈ２（ｔ）の因数分解は、ｈ１（ｔ）−ｈ２（ｔ）の次数が５０程度のあまり大きくない整数であれば、実時間で実行できるアルゴリズムが知られている。得られた既約多項式ｆ（ｔ）で整数ｈ１（ｔ）を除すると（ｍ（ｔ）の次数がｆ（ｔ）の次数より小さいことに注意すると）、次式の関係から剰余として平文を埋め込んだ多項式ｍ（ｔ）が一意的に得られる。
【００４６】
ｈ１（ｔ）＝ｍ（ｔ）＋ｆ（ｔ）ｐ(ｃ1,…,ｃn,ｔ)
最後に本実施形態における鍵生成方法を説明する。この鍵生成は、整数解Ｓ１，Ｓ２をランダムに選び、整数解Ｓ１，Ｓ２に対応したディオファンタス方程式を生成して行う。但し、生成されたディオファンタス方程式が２つの整数解Ｓ１，Ｓ２を同時に持つようにするため、以下のような工夫をする。
【００４７】
まず、ディオファンタス方程式の形を決める。一例として式（７）の形とする。
【００４８】
Ｘ（ｘ，ｙ） ＝ ａ１ｘ２ｙ３＋ａ２ｙ２＋ａ３ｘ＋ａ４＝０          （７）
ここでは簡単のためｘ１＝ｘ，ｘ２＝ｙとした２変数のディオファンタス方程式を考える。ここで、ａ１，…，ａ４は係数であり整数である。尚、公開鍵暗号の公開鍵としてディオファンタス方程式を使う場合は定数項が入っていることが望ましい。何故なら定数項がない場合、自明な解（０，…，０）が存在してしまい、解読のために重大なヒントを与えることになるからである。
【００４９】
次に整数解Ｓ１：（ｃ１，…，ｃｎ）とＳ２：（ｇ１，…，ｇｎ）とをランダムに選択する。本実施形態で述べる鍵生成手法は整数解を先に（ランダムに）決め、ディオファンタス方程式の係数で調整するという方法であるので、整数解には何らの条件も付かない。
【００５０】
ランダムに生成した整数解Ｓ１＝（ｃ１，ｃ２），Ｓ２＝（ｇ１，ｇ２）をディオファンタス方程式Ｘ（ｘ，ｙ）に代入して次式を得る。
【００５１】
ａ１ｃ１２ｃ２３＋ａ２ｃ２２＋ａ３ｃ１＋ａ４＝０
ａ１ｇ１２ｇ２３＋ａ２ｇ２２＋ａ３ｇ１＋ａ４＝０
を得る。更にこれを
【数３】
2006194990.tif 000005
【００５２】
なる基本解が得られ、基本解における自由な変数ａ１，ａ２にランダムな整数（若しくは有理数）を代入することによって、有理数としてａ３，ａ４が求まる。更に、これらａ１，ａ２，ａ３，ａ４に分母の最小公倍数を掛けることによって、整数としての係数ａ１，ａ２，ａ３，ａ４を求めることができる。このようにしてランダムな２つの整数解Ｓ１，Ｓ２を持つディオファンタス方程式が生成できる。尚、掃きだし法により、
【数４】
2006194990.tif 000006
【００５３】
のように変形しても、同様のアルゴリズムで係数ａ１，ａ２，ａ３，ａ４を求めることができる。
【００５４】
また、上記鍵生成方法は、その構成から分かるように式（７）の形態のディオファンタス方程式に限らず、一般のディオファンタス方程式であっても同様に可能であり、本発明の公開鍵暗号全般に有効な鍵生成方法である。
【００５５】
＜安全性の検討＞
以下では、前述した本実施形態の公開鍵暗号の安全性に関して考察する。本実施形態の公開鍵暗号は、ディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０が与えられたとき、その整数解を求める問題の難しさを安全性の根拠としている。
【００５６】
復号処理は、次式の暗号文Ｆ(ｘ1,…,ｘn,ｔ)から多項式ｍ（ｔ）を特定することである。  
Ｆ(ｘ1,…,ｘn,ｔ)＝ｍ（ｔ）＋ｆ（ｔ）・ｐ(ｘ1,…,ｘn,ｔ)＋Ｘ(ｘ1,…,ｘn)ｑ(ｘ1,…,ｘn,ｔ)
前述した復号方式では、Ｆ(ｘ1,…,ｘn,ｔ)にＸ(ｘ1,…,ｘn)の整数解(ｃ1,…,ｃn)および(ｇ1,…,ｇn)を代入し、多項式の因数分解により式（６）の右辺を導き出す操作がポイントとなる。以下では、次の４通りの攻撃方法［攻撃１］〜［攻撃４］に分類し、上記の操作以外に復号ができないことを検証する。
【００５７】
［攻撃１］式Ｆ(ｘ1,…,ｘn,ｔ)の形状からｍ（ｔ）を推定する。  
［攻撃２］整数解以外の解を代入してｍ（ｔ）を求める。  
［攻撃３］各種リダクションによってｍ（ｔ）を求める。  
［３−１］ディオファンタス多項式Ｘ(ｘ1,…,ｘn)によるリダクション  
［３−２］素数ｐによるリダクション  
［攻撃４］変数ｘ1,…,ｘnをパラメータ表示することによりｍ（ｔ）を求める。
【００５８】
［攻撃１］式の形状から平文を推定する攻撃方法
平文を埋め込んだ多項式ｍ（ｔ）は、暗号文Ｆ(ｘ1,…,ｘn,ｔ)の中のｔのみを変数として含む項の部分のみに存在する。従って、暗号文Ｆ(ｘ1,…,ｘn,ｔ)の中にｔのみを変数として含む項がｍ（ｔ）以外になければ、Ｆ(ｘ1,…,ｘn,ｔ)の形状からｍ（ｔ）が特定できる。しかしながら、暗号文Ｆ(ｘ1,…,ｘn,ｔ)は、ｃを任意の整数として次式のように変形すれば、他の定数項ｃｆ（ｔ）が明らかに存在する。  
Ｆ(ｘ1,…,ｘn)＝{ｍ（ｔ）＋ｃｆ（ｔ）}＋ｆ（ｔ）{ｐ(ｘ1,…,ｘn,ｔ)−ｃ}＋Ｘ(ｘ1,…,ｘn)ｑ(ｘ1,…,ｘn,ｔ)
従って、暗号文Ｆ(ｘ1,…,ｘn,ｔ)中のｔのみを変数として含む項としてｍ（ｔ）を特定することはできない。
【００５９】
［攻撃２］整数解以外の解を代入する攻撃方法
ディオファンタス方程式に整数解以外の解を代入する攻撃が考えられる。ディオファンタス方程式の整数解を求めることは困難であるが、実数解や複素数解を求めることは比較的容易である。ここでは簡単のため、実数解(ｒ1,…,ｒn)，(ｓ1,…,ｓn)をそれぞれ代入し、得られた２つの数を辺々引くと、ｆ（ｔ）｛ｐ(ｒ1,…,ｒn,ｔ)−ｐ(ｓ1,…,ｓn,ｔ)｝が求まる。しかし、第二因子｛ｐ(ｒ1,…,ｒn,ｔ)−ｐ(ｓ1,…,ｓn,ｔ)｝が実数もしくは複素数となるため、因数分解でｆ（ｔ）を求めることはできない。
【００６０】
［攻撃３］各種リダクションによる攻撃方法
暗号文Ｆ(ｘ1,…,ｘn,ｔ)をリダクションすることにより、解読し易い空間に暗号文を写し、この解読し易い空間において解読する攻撃が考えられる。ここでは、以下の２つの場合に関して安全性を考察する。尚、ｆ(ｘ1,…,ｘn,ｔ)をｇ(ｘ1,…,ｘn)でリダクションするとは、ｆ(ｘ1,…,ｘn,ｔ)をｇ(ｘ1,…,ｘn)で割った余りを求めることである。
【００６１】
［攻撃３−１］ディオファンタス多項式Ｘ(ｘ1,…,ｘn)によるリダクション
暗号文Ｆ(ｘ1,…,ｘn,ｔ)にディオファンタス方程式Ｘ(ｘ1,…,ｘn)のリダクションを施すと、Ｘ(ｘ1,…,ｘn)が２変数以上の場合、剰余が一意に定まらないことが知られている（例えば、非特許文献２，３参照）。また、仮に（グレブナー基底等を用いて）剰余が一意に定まったとしても、多項式ｐ(ｘ1,…,ｘn,ｔ)が条件（２）を満たすので、定まった剰余が望ましい剰余 ｍ（ｔ）＋ｆ（ｔ）ｐ(ｘ1,…,ｘn,ｔ)であるかを検証する手段がない。しかし、ここで暗号文Ｆ(ｘ1,…,ｘn,ｔ)にｑ(ｘ1,…,ｘn,ｔ)の因子が無ければ、単に暗号文Ｆ(ｘ1,…,ｘn,ｔ)からＸ(ｘ1,…,ｘn)を引き算するだけで正しいｍ（ｔ）＋ｆ（ｔ）ｐ(ｘ1,…,ｘn,ｔ)が求まってしまう。ｍ（ｔ）＋ｆ（ｔ）ｐ(ｘ1,…,ｘn,ｔ)が求まれば変数（ｘ1,…,ｘn）に（ディオファンタス方程式の整数解とは限らない）適当な２つの整数の組（ｕ1,…,ｕn）、（ｖ1,…,ｖn）を割り当てることによって、本実施形態の復号方式と同様の手段で平文を埋め込んだ多項式ｍ（ｔ）を求めることができる。従って、このような攻撃を防ぐ意味で、因子ｐ(ｘ1,…,ｘn,ｔ)は必要不可欠な因子であるといえる。
【００６２】
［攻撃３−２］素数ｐによるリダクション
暗号文Ｆ(ｘ1,…,ｘn,ｔ)を素数ｐでリダクションすることにより、有限体Ｆｐ上のディオファンタス方程式Ｘ(ｘ1,…,ｘn)＝０の求解問題は極めて容易になる。そこで実際に解を求めて、ｆ（ｔ）｛ｐ(ｒ1,…,ｒn,ｔ)−ｐ(ｓ1,…,ｓn,ｔ)｝（ｍｏｄ  ｐ）を導くことができる。しかしながら、有限体Ｆｐ上で解を求めただけなので、因数分解等の手段によって既約多項式ｆ（ｔ）を求めることができない。
【００６３】
一方、もし暗号文Ｆ(ｘ1,…,ｘn,ｔ)にｐ(ｘ1,…,ｘn,ｔ)の因子が無ければ、この攻撃でｆ（ｔ）（ｍｏｄ  ｐ）が求まるので、ｍ（ｔ）（ｍｏｄ  ｐ）が求まる。そこで、様々な素数ｐでリダクションを行ない、それぞれ得られた結果から中国の剰余定理に基づいて、平文を埋め込んだ多項式ｍ（ｔ）を求めることができる。従って、このような攻撃を防ぐ意味で、因子ｐ(ｘ1,…,ｘn,ｔ)は必要不可欠な因子であるといえる。
【００６４】
［攻撃４］変数ｘ1,…,ｘnをパラメータ表示することによる攻撃方法
ディオファンタス方程式Ｘ(ｘ1,…,ｘn)は各変数ｘｉをｘｉ(t)のようにパラメータ表示することにより、１変数多項式とすることができる。このとき、暗号文は、式（５）から次式のｆ(t)のように求まる。
【００６５】
Ｆ(t)＝ｍ（ｔ）＋ｆ（ｔ）ｐ(ｘ1(t),…,ｘn(t) ,ｔ)＋Ｘ(ｘ1(t),…,ｘn(t))ｑ(ｘ1(t),…,ｘn(t) ,ｔ)
ここで、パラメータ表示した暗号文ｆ(ｔ)をディオファンタス方程式Ｘ(ｘ1(t),…,ｘt(t))で割ることにより、望ましい剰余「ｍ（ｔ）＋ｆ（ｔ）ｐ(ｘ1(t),…,ｘn(t) ,ｔ)」が求まる恐れがある。しかし、条件（３）により、どのようなパラメータ表示を行っても、多項式ｐ(ｘ1(t),…,ｘn(t) ,ｔ)の次数がディオファンタス方程式Ｘ(ｘ1(t),…,ｘn(t))の次数よりも大きくなる（ｄｅｇ ｐ(ｘ1(t),…,ｘn(t) ,ｔ) ＞ ｄｅｇ Ｘ (ｘ1(t),…,ｘn(t))）。
【００６６】
このため、求まった剰余が望ましい剰余「ｍ（ｔ）＋ｆ（ｔ）ｐ(ｘ1(t),…,ｘn(t) ,ｔ)」であるかを検証する手段がない。尚、この攻撃は、一部の変数を定数にしても成立するが、同様の考察で、望ましい剰余「ｍ（ｔ）＋ｆ（ｔ）ｐ(ｘ1(t),…,ｘn(t) ,ｔ)」を求めることができない。
【００６７】
＜バリエーション＞
最後に本実施形態におけるいくつかのバリエーションを述べる。  
第１のバリエーションは、暗号化の式（５）を変形させた方式である。例えば、式（５）をＦ(ｘ1,…,ｘn,ｔ)＝ｍ（ｔ）−ｆ（ｔ）ｐ(ｘ1,…,ｘn,ｔ)−Ｘ(ｘ1,…,ｘn)ｑ(ｘ1,…,ｘn,ｔ)のように、加算を減算に変形した方式である。このように変形しても、前述同様に、暗号化／復号が可能であり、同様の安全性を得ることができる。このように本発明の趣旨に反しない範囲で暗号化の式を変形し、それに伴い復号処理を変更することは十分可能である。
【００６８】
第２のバリエーションは、平文を既約多項式ｆ（ｔ）にも埋め込む方式である。既約多項式ｆ（ｔ）はランダムに生成する旨を述べたが、秘密鍵を持たない人が既約多項式ｆ（ｔ）を求めることが困難であることも本発明の公開鍵暗号の性質であるので、既約多項式ｆ（ｔ）に平文情報を埋め込むことも可能となる。これに伴い、より大きなサイズの平文を一度に暗号化できる。一方で、埋め込んだ結果ｆ（ｔ）が既約多項式である必要から特定次数の項の係数にランダムな数が入るように予め定めておく必要がある。既約多項式は極めてたくさん存在するため、前述したように一部のビットに平文を埋め込んでもそれが故に既約多項式が求まらないことはほとんどない。
【００６９】
第３のバリエーションは、復号処理に復号結果の検証処理を追加する方式である。送信されてくる暗号文Ｆ(ｘ1,…,ｘn,ｔ)の中には、式（５）に示した構成を持たない出鱈目な暗号文Ｆ’が含まれてくる可能性がある。この原因は故意に誰かが不正な暗号文Ｆ’を送信する場合と、伝送中の不具合で一部が破損した暗号文Ｆ”を受信した場合とがある。かかる不正な暗号文Ｆ’,Ｆ”は、前述した２つの平文の不一致（ｍ１≠ｍ２）を確認する検証処理で排除できる。
【００７０】
第４のバリエーションは、平文を単なる対応した整数ｍに展開せず、ハッシュ関数ｈなどの一方向性関数を利用し、式（８）のように変形する方式である。
【００７１】
ｍ’＝ｍ‖ｈ（ｍ）      （８）
この第４のバリエーションによれば、復号文ｍ’から得られる平文ｍにハッシュ関数ｈを施して式（８）を満たすか否かを判定することにより、出力された復号文ｍ’の真正性を確認できる。一方、改竄する者は、改竄後の暗号文Ｆ’から得られる平文ｍ0’に関し、ｍ0’＝ｍ0‖ｈ（ｍ0）のような連接構造を持たせることが極めて困難となる。従って、第４のバリエーションは、第３のバリエーションで述べたような不正な暗号文Ｆ’の作成を阻止する効果を持っている。一般に、平文ｍに一方向変換を施した公開鍵暗号の構成は、改竄に対する安全性や、（適当な暗号文を作成しそれを復号装置に復号させ、復号装置から情報を得て暗号文を解読する）アクティブな攻撃にも対抗できる強い安全性を持つ暗号を構成できる性質が知られている。この性質は、本発明の公開鍵暗号についても同様に成り立ち、同様の効果が期待できる。
【００７２】
（第１の実施形態の具体的な構成）
次に、このような公開鍵暗号における鍵生成装置、暗号装置、復号装置の具体的な構成とそのアルゴリズムを２変数の場合を例にとり示す。
【００７３】
（鍵生成装置及び処理の流れ）
本実施形態の鍵生成装置の構成と処理の流れを図２に示すフローチャートに沿って図１に示す全体構成図を参照しながら示す。尚、以下に述べる具体的な数値や式は、あくまでも理解を助ける簡明な例であり、実際に使われる十分な安全性を持つ暗号化とは（特に多項式の次数などの点で）必ずしも一致していない。
【００７４】
本実施形態の鍵生成装置１０は、制御部１１、ディオファンタス方程式決定部１２、整数解生成部１３、整数生成部１４、行列演算部１５、ディオファンタス方程式生成部１６及び鍵出力部１７を備えており、全体として、図２に示す動作を実行するように、制御部１１により他の各部１２〜１７が制御されるものである。また、鍵生成装置１０は、図示しないメモリを有し、各部１１〜１７から入力データ、出力データ及び処理中のデータ等が適宜読出／書込可能となっている。以下、具体的に説明する。
【００７５】
鍵生成装置１０は、鍵生成処理開始の指令が外部装置等から制御部１１に伝えられることで処理を開始する。当該指令が制御部１１に伝わると（ＳＴ１）、制御部１１ではディオファンタス方程式決定部１２にディオファンタス方程式の出力要請を行う。
【００７６】
ディオファンタス方程式決定部１２では、式（７）に示した如き、ディオファンタス方程式の形を決定し（ＳＴ２）、この方程式の形を制御部１１に出力する。ここで、方程式の形は、式（７）の形に限らず、真にランダムに出力しても良いが、何通りかの形を予め用意しておき、その中からランダムに抽出する方法でも構わない。
【００７７】
次に、制御部１１は、整数解生成部１３に２つの整数解Ｓ１＝（ｃ１，…，ｃｎ），Ｓ２＝（ｇ１，…，ｇｎ）を生成するように指示を出す。整数解生成部１３は整数生成部１４を援用して整数解Ｓ１，Ｓ２をランダムに生成する（ＳＴ３，ＳＴ４）。ここでは簡単のため、式（７）に示すような２変数のディオファンタス方程式を例に取り、具体的に説明する。
【００７８】
生成された２つの整数解を、Ｓ１：（ｃ１，ｃ２）＝（１２１３，５７２４），Ｓ２：（ｇ１，ｇ２）＝（６８７１，７５１９）とする。次に、制御部１１は行列演算部１５にこれらの整数解を送信する。行列演算部１５では、これら２つの整数解をディオファンタス方程式である式（７）に代入し、
【数５】
2006194990.tif 000007
【００７９】
が求まる（ＳＴ７）。行列演算部１５はこの基本解を制御部１１に送信する。制御部１１ではディオファンタス方程式生成部１６に基本解を送信し、ディオファンタス方程式を出力させる旨の命令を出す。
【００８０】
ディオファンタス方程式生成部１６では、この命令を受けると、基本解において自由な係数をランダムに設定する（ＳＴ８）。ここでは、例えば係数ａ１，ａ２をランダムにａ１＝３８９２，ａ２＝２０５６と設定する。また、ディオファンタス方程式生成部１６では、この自由な係数ａ１，ａ２から基本解を使って自由でない係数ａ３，ａ４を決定し（ＳＴ９）、係数ベクトル（ａ１，ａ２，ａ３，ａ４）＝（3892，2056，−38516785658796941794378／2829，43682591769016200836744482/2829）を得る。
【００８１】
更にディオファンタス方程式生成部１６では、係数ベクトル（ａ１，ａ２，ａ３，ａ４）を整数ベクトルとして取るために、分母の最小公倍数２８２９を掛けて、最終的なディオファンタス方程式の係数ベクトル（ａ１，ａ２，ａ３，ａ４）＝（11010468，5816424，−38516785658796941794378，43682591769016200836744482）を得る。しかる後、ディオファンタス方程式生成部１６は、この整数ベクトルを制御部１１に送信する。
【００８２】
制御部１１では、この整数ベクトルに基づき、Ｓ１，Ｓ２を整数解に持つディオファンタス方程式Ｘ（ｘ，ｙ）を次のように生成できる。
【００８３】
Ｘ（ｘ，ｙ）：11010468ｘ2ｙ3 ＋ 5816424ｙ2 − 38516785658796941794378ｘ ＋ 43682591769016200836744482 ＝ 0 
このディオファンタス方程式Ｘ（ｘ，ｙ）を鍵出力部１７から出力することにより鍵生成処理が終了する。
【００８４】
（暗号装置及び処理の流れ）
次に本実施形態の暗号装置の構成と処理の流れを図４に示すフローチャートに沿って図３に示す全体構成図を参照しながら示す。本実施形態の暗号装置２０は、平文入力部２１、公開鍵入力部２２、平文変換部２３、暗号化部２４、既約多項式生成部２５、多項式生成部２６及び暗号文出力部２７を備えており、全体として図４に示す動作を実行するように、暗号化部２４により他の各部２１〜２３，２５〜２７が制御されるものである。また、暗号装置２０は、図示しないメモリを有し、各部２１〜２７から入力データ、出力データ及び処理中のデータ等が適宜読出／書込可能となっている。以下、具体的に説明する。
【００８５】
暗号装置２０は、平文入力部２１からメッセージを取得し、公開鍵入力部２２から公開鍵Ｘ(ｘ1,…,ｘn)と既約多項式の最小次数Ｌを取得することから処理を開始する。なお、公開鍵としては、鍵生成処理の例で生成された「ディオファンタス方程式」を用いる。公開鍵の具体例は下記である。
【００８６】
ディオファンタス方程式：
Ｘ（ｘ，ｙ）：11010468ｘ2ｙ3 ＋ 5816424ｙ2 − 38516785658796941794378ｘ ＋ 43682591769016200836744482 ＝ 0
また、公開鍵とは別にランダムに生成する既約多項式ｆ（ｔ）の次数Ｌ（＝５）を入力する。
【００８７】
始めに、暗号装置２０は、平文入力部２１からメッセージが入力され（ＳＴ２１）、公開鍵入力部２２から公開鍵と既約多項式の最小次数Ｌが入力される（ＳＴ２２）。入力された既約多項式の最小次数Ｌ（＝５）が平文変換部２３に送られる。
【００８８】
平文変換部２３では、別途、平文入力部２１から送信されたメッセージを、まず、整数ｍに展開し（ＳＴ２３）、既約多項式ｆ（ｔ）の最小次数Ｌよりも小さい次数の多項式ｍ（ｔ）に変換する（ＳＴ２４）。変換のアルゴリズムは種々存在するが、メッセージを整数ｍに展開するには文字コード列を単純に整数に読み替える方法が一般的である。更に、整数ｍを多項式ｍ（ｔ）に変換する方法としては、整数ｍを一定ビット毎Ｌブロックに分割し、それぞれのブロックの整数を係数とする（Ｌ−１）次多項式ｍ（ｔ）に埋め込む方法が一般的である。本実施形態の場合は、メッセージを整数（１６進表示）
ｍ＝０ｘ3E54402F8E7C82B9 2A982398452E3A80 5C948A3025D32493 14204A043C0230D1 78982CA92C020131
に変換できたとする。以下、整数ｍを平文ｍとも呼ぶ。
【００８９】
平文変換部２３では、平文ｍを前記表記のようにＬ（＝５）分割し、以下の（Ｌ−１）次多項式ｍ（ｔ）に埋め込んで、暗号化部２４に送信する。
【数６】
2006194990.tif 000008
【００９０】
一方、公開鍵入力部２２は公開鍵と既約多項式ｆ（ｔ）の最小次数Ｌを暗号化部２４に送信する。
【００９１】
暗号化部２４は、多項式ｍ（ｔ）と公開鍵と既約多項式ｆ（ｔ）の最小次数Ｌを受信すると、既約多項式ｆ（ｔ）の最小次数Ｌを既約多項式生成部２５に送信する。
【００９２】
既約多項式生成部２５は、次数Ｌ以上の１変数多項式を生成してメモリ（図示せず）に保存し、メモリ内の１変数多項式を既約判定することにより、既約多項式ｆ（ｔ）をランダムに生成する（ＳＴ２５）。既約多項式生成部２５は、得られた次数Ｌ（＝５）の既約多項式ｆ（ｔ）を暗号化部２４に返信する。
【数７】
2006194990.tif 000009
【００９３】
暗号化部２４は、既約多項式ｆ（ｔ）を受信すると、公開鍵に含まれるディオファンタス方程式Ｘを多項式生成部２６に送信する。
【００９４】
多項式生成部２６は、ディオファンタス方程式Ｘを受けると、３変数のランダムな多項式ｑ(ｘ,ｙ,ｔ)を生成し（ＳＴ２６）、この多項式ｑ(ｘ,ｙ,ｔ)を暗号化部２４に返信する。ここで、３変数多項式ｑ(ｘ,ｙ,ｔ)は、簡単のため、次式のものとする。
【００９５】
ｑ(ｘ,ｙ,ｔ)＝２ｘｙｔ２＋３４ｙ２ｔ＋５３＋ｔ５
暗号化部２４は、３変数多項式ｑ(ｘ,ｙ,ｔ)を得ると、条件（２），（３），（４）を満たすランダムな３変数多項式ｐ(ｘ,ｙ,ｔ)を生成する（ＳＴ２７）。ここでは、３変数多項式ｐ(ｘ,ｙ,ｔ)を次式のものとする。
【００９６】
ｐ(ｘ,ｙ,ｔ)＝７ｘ３ｙ４ｔ＋１５ｘ３ｙｔ２＋７ｘ２ｙ５＋６５ｘ２ｙ３ｔ＋４ｘｙ３ｔ２＋３ｙ４ｔ４＋５ｙ２ｔ＋５ｘｙ２ｔ２＋４３ｘｙ＋３ｘ＋６ｘ２ｙ＋４
この２変数多項式ｐ(ｘ,ｙ,ｔ)は、条件（２），（３），（４）を満たしている。  
暗号化部２４は、以上の処理で得られた多項式ｍ（ｔ），既約多項式ｆ（ｔ），多項式ｐ(ｘ,ｙ,ｔ)，ｑ(ｘ,ｙ,ｔ)と、公開鍵であるディオファンタス方程式Ｘ(ｘ,ｙ)＝０とを用い、式（５）に基づいて、暗号文Ｆ(ｘ,ｙ,ｔ)を計算し展開する（ＳＴ２８）。
【００９７】
暗号文Ｆ(ｘ,ｙ,ｔ)は、本実施形態の例において次式のようになる。
【数８】
2006194990.tif 000010
【００９８】
暗号化部２４は、この暗号文Ｆ(ｘ,ｙ,ｔ)を（必要ならば予め定められたフォーマットに合わせて変形し）暗号文出力部２９から出力することにより（ＳＴ２９）、暗号化処理を終了する。
【００９９】
第１のバリエーションは、本実施形態の暗号化処理における式（５）を変形するだけで自然に成立する。
【０１００】
第２のバリエーションは、平文変換部２３において、メッセージを本実施形態と同様の方法で整数ｍに展開し、多項式ｍ（ｔ）と既約多項式ｆ（ｔ）の上位次数の係数に埋め込み、既約多項式生成部２５において、既約多項式ｆ（ｔ）の残りの次数をランダムに設定することにより、同様に成立する。
【０１０１】
第４のバリエーションは、平文変換部２３において、平文ｍを予め定められたハッシュ関数ｈを利用して式（８）のように変換し、新たな平文ｍ’を作成する処理を付け加えればそのまま成り立つ。
【０１０２】
（復号装置及び処理の流れ）
最後に本実施形態の復号装置の構成と処理の流れを図６に示すフローチャートに沿って図５に示す全体構成図を参照しながら示す。本実施形態の復号装置３０は、暗号文入力部３１、鍵入力部３２、復号部３３、整数解代入部３４、多項式演算部３５、因数分解部３６、因子抽出部３７、剰余演算部３８、平文展開部３９及び平文出力部４０を備えており、全体として図６に示す動作を実行するように、復号部３３により他の各部３１，３２，３４〜４０が制御されるものである。また、復号装置３０は、図示しないメモリを有し、各部３１〜４０から入力データ、出力データ及び処理中のデータ等が適宜読出／書込可能となっている。以下、前述の暗号装置と同様、２変数の場合を例にとって具体的に説明する。
【０１０３】
復号装置３０は、暗号文入力部３１から暗号文Ｆ(ｘ,ｙ,ｔ)を取得し（ＳＴ３１）、鍵入力部３２から公開鍵Ｘ(ｘ,ｙ)と秘密鍵を取得することから（ＳＴ３２）、処理を開始する。ここで秘密鍵とは２つの整数解であり、鍵生成のステップＳＴ３，ＳＴ４で得られた整数解Ｓ１，Ｓ２を利用する。取得された暗号文と鍵情報は復号部３３に送られ、復号処理が開始される。
【０１０４】
復号部３３は、整数解代入部３４に暗号文Ｆ(ｘ,ｙ,ｔ)と整数解Ｓ１を送信する。整数解代入部３４は、整数解Ｓ１を暗号文Ｆ(ｘ,ｙ,ｔ)に代入し、必要に応じて多項式演算部３５を利用することにより、以下のような多項式ｈ１（ｔ）を得る（ＳＴ３３）。
【数９】
2006194990.tif 000011
【０１０５】
ここで、多項式演算部３５は、多項式の加減乗除演算を行う。また同様に、整数解代入部３４は、整数解Ｓ２をＦ(ｘ,ｙ,ｔ)に代入し、以下のような多項式ｈ２（ｔ）を得る（ＳＴ３４）。
【数１０】
2006194990.tif 000012
【０１０６】
得られた代入結果ｈ１（ｔ），ｈ２（ｔ）は、整数解代入部３４から復号部３３に送出される。
【０１０７】
復号部３３は、代入結果ｈ１（ｔ），ｈ２（ｔ）を多項式演算部３５に送信して引き算させ、その結果を因数分解部３６に送信して因数分解させることにより（ＳＴ３５）、式（９）に示すような因数分解結果を得ると、この因数分解結果をメモリ（図示せず）に保存する。
【数１１】
2006194990.tif 000013
【０１０８】
（９）
復号部３３は、因子抽出部３７により、メモリ内の因数分解結果から最大次数の素因子を抽出して、既約多項式ｆ（ｔ）を決定する（ＳＴ３６）。
【０１０９】
復号部３３は、既約多項式ｆ（ｔ）及び代入結果ｈ１（ｔ）を剰余演算部３８に送る。剰余演算部３８は、代入結果ｈ１（ｔ）を既約多項式ｆ（ｔ）で除し、剰余として多項式ｍ（ｔ）を計算し（ＳＴ３７）、この多項式ｍ（ｔ）を整数ｍに変換し、この整数ｍを復号部３３に送信する（ＳＴ３８）。復号部３３はこの整数ｍを平文ｍとして平文展開部３９に送信する。
【０１１０】
平文展開部３９においてチェックサムを確認することにより平文の妥当性をチェックする（ＳＴ３９）。ここで、チェックサムが正しくない場合は誤った暗号文が入力されたことを意味するので、エラーを出力し処理を終了する（ＳＴ４０）。チェックサムが正しい場合は正しい復号が行われた可能性が極めて高くなるので、平文展開部３９により平文ｍからメッセージを展開し（ＳＴ４１）、得られたメッセージを平文出力部４０から出力して終了する（ＳＴ４２）。
【０１１１】
また、勿論チェックサムの付いていない平文も少なくないため、チェックサムを付けない実現形態もあり得る。その場合はＳＴ３８で得られた平文ｍを出力する。
【０１１２】
いずれにしても、復号部３３は、得られた平文ｍを平文展開部３９に送信してメッセージに展開させ、このメッセージを平文出力部４０から出力させ、復号処理を終了する。
【０１１３】
第１のバリエーションは本実施形態の復号処理でも自明な変形によって成立する。
【０１１４】
第２のバリエーションは、復号処理の途中で求めたｆ（ｔ）を平文の一部として平文展開部３９に送り、平文展開部３９でｍ（ｔ）とｆ（ｔ）を合わせて平文を展開することにより本実施形態においても成立する。
【０１１５】
第３のバリエーションは、そのアルゴリズムを図７に示した。全体構成図は図５である。まず、ステップＳＴ３７に述べたように、復号部３３は、最初のｆ（ｔ）の候補に対して前述した復号処理と同様に剰余演算部３８を利用してｈ１（ｔ）をｆ（ｔ）で除し、剰余として平文多項式ｍ１（ｔ）を求める（ＳＴ３７−１）。次に、復号部３３は前述同様に、剰余演算部３８を利用してｈ２（ｔ）をｆ（ｔ）で除し、剰余として平文多項式ｍ２（ｔ）を得る（ＳＴ３７−２）。
【０１１６】
復号部３３では、２つの多項式ｍ１（ｔ），ｍ２（ｔ）が等しいか否かをチェックする（ＳＴ３７−３）。等しくない場合（ＳＴ３７−３；ＮＯ）は、正しい暗号文でない旨を意味するため、エラーを出力して処理を終了する（ＳＴ４０）。
【０１１７】
等しい場合（ＳＴ３７−３；ＹＥＳ）は、平文ｍ１（ｔ）から復号処理と同様に平文展開部３９で平文ｍを展開し（ＳＴ３７−４，ＳＴ３８）、平文展開部３９においてチェックサムを確認することにより平文の妥当性をチェックする（ＳＴ３９）。以下の処理は本実施形態と同様である。
【０１１８】
第４のバリエーションは、平文展開部３９においてまず、本実施形態と同様の手段で平文ｍ’を展開し、展開されたｍ’に対して（予め定められたハッシュ関数ｈを利用して）式（８）を満たすことを確認することで実現できる。確認の結果、正しくない場合はエラーを出力し、正しい場合は得られたメッセージを平文出力部４０に送信する。尚、第４のバリエーションは、例えば式（８）に基づく確認をチェックサムとして実施することにより、第３のバリエーションと共に利用することも（同様の手段により）可能である。
【０１１９】
以上で、第１の実施形態における本発明の鍵生成装置、暗号装置、復号装置の具体的構成の説明を終了する。
【０１２０】
上述したように本実施形態によれば、ディオファンタス方程式Ｘの２つの整数解Ｓ１，Ｓ２を秘密鍵に用いており、一般的な解法アルゴリズムが存在しないディオファンタス方程式の整数解を求める問題に安全性の根拠をおく公開鍵暗号方式の暗号装置２０，復号装置３０又は鍵生成装置１０を実現したので、量子計算機が出現しても安全性を確保でき、現在の計算機でも安全に実現可能であると共に、小電力環境での実現可能性がある公開鍵暗号方式を構成することができる。
【０１２１】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。  
本実施形態の公開鍵は、以下のディオファンタス方程式Ｘである。
【０１２２】
ディオファンタス方程式：Ｘ(ｘ1,…,ｘn)＝０
秘密鍵は以下の整数解Ｓである。
【０１２３】
ディオファンタス方程式Ｘの整数解：Ｓ：(ｃ1,…,ｃn)
第２の実施形態は、第１の実施形態と比較すると、秘密鍵である整数解が１つであることが大きく異なる。第２の実施形態は、このため秘密鍵のサイズが小さくなることは言うまでもなく、後述するように鍵生成の自由度が増えるという効果がある。
【０１２４】
（暗号化処理）
本実施形態における暗号化処理の概要を述べる。暗号処理は第１の実施形態とほぼ同じであるが、１つの暗号文Ｆ(ｘ1,…,ｘn,ｔ)を生成した第１の実施形態とは異なり、２つの暗号文Ｆ１(ｘ1,…,ｘn,ｔ)，Ｆ２(ｘ1,…,ｘn,ｔ)を生成する。
【０１２５】
具体的には、第２の実施形態では、共通のｆ（ｔ）を用いて、第１の実施形態と同様の手段で相異なる２つのランダムな多項式の組（ｑ１(ｘ1,…,ｘn,ｔ)，ｑ２(ｘ1,…,ｘn,ｔ)）と（ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)）を生成して、以下の２つの暗号文Ｆ１(ｘ1,…,ｘn,ｔ)，Ｆ２(ｘ1,…,ｘn,ｔ)を生成する。
【０１２６】
Ｆ１(ｘ1,…,ｘn,ｔ)＝ｍ（ｔ）＋ｆ（ｔ）ｐ１(ｘ1,…,ｘn,ｔ)＋Ｘ(ｘ1,…,ｘn)ｑ１(ｘ1,…,ｘn,ｔ)  
Ｆ２(ｘ1,…,ｘn,ｔ)＝ｍ（ｔ）＋ｆ（ｔ）ｐ２(ｘ1,…,ｘn,ｔ)＋Ｘ(ｘ1,…,ｘn)ｑ２(ｘ1,…,ｘn,ｔ)  
ここで、多項式ｐ１(ｘ1,…,ｘn,ｔ)，ｐ２(ｘ1,…,ｘn,ｔ)は条件（２）と条件（３）を満たすほか、（第１の実施形態と同じ理由により）条件（４）を満たす必要がある。
【０１２７】
受信者は、暗号文Ｆ１(ｘ1,…,ｘn,ｔ)，Ｆ２(ｘ1,…,ｘn,ｔ)を受けると、所有する秘密鍵Ｓを利用して次のように復号を行う。まず、整数解Ｓを暗号文Ｆ１(ｘ1,…,ｘn,ｔ)，Ｆ２(ｘ1,…,ｘn,ｔ)に代入することにより第１の実施形態と同様の考え方で次の２式ｈ１，ｈ２を求める。
【０１２８】
ｈ１（ｔ）＝Ｆ１(ｃ1,…,ｃn,ｔ)＝ｍ（ｔ）＋ｆ（ｔ）ｐ１(ｃ1,…,ｃn,ｔ)
ｈ２（ｔ）＝Ｆ２(ｃ1,…,ｃn,ｔ)＝ｍ（ｔ）＋ｆ（ｔ）ｐ２(ｃ1,…,ｃn,ｔ)
次に、２式を辺々引き算して次式ｈ１（t）−ｈ２（t）を計算する。
【０１２９】
ｈ１（ｔ）−ｈ２（ｔ）＝ｆ（ｔ）｛ｐ１(ｃ1,…,ｃn,ｔ)−ｐ２(ｃ1,…,ｃn,ｔ)｝
しかる後、計算結果ｈ１（ｔ）−ｈ２（ｔ）を因数分解して、最大次数の既約多項式をｆ（ｔ）と定める。この後の処理は第１の実施形態と同じであるので、説明を省略する。
【０１３０】
（鍵生成処理）
最後に本実施形態における鍵生成方法を説明する。本実施形態の鍵生成は第１の実施形態と同様にセクションＳをランダムに選び、それに対応したディオファンタス方程式を構成することによって行う。
【０１３１】
但し、第２の実施形態では第１の実施形態と異なり、１つの整数解を満たすように構成すれば良く、第１の実施形態よりも容易にしかも自由度の高い鍵が生成される。
【０１３２】
ここではディオファンタス方程式のうち第１の実施形態でも例にあげた式（７）の形のディオファンタス方程式を例にとって鍵生成を示す。即ち、ｘ１＝ｘ，ｘ２＝ｙとした２変数のディオファンタス方程式を考える。ここでａ１，…，ａ４は係数であり整数である。尚、公開鍵暗号の公開鍵としてディオファンタス方程式を使う場合は式（７）のように定数項が入っていることが望ましい。何故なら定数項がない場合、自明な解（０，…，０）が存在してしまい、解読のために重大なヒントを与えることになるからである。まず定数項以外の係数ａ１，ａ２，ａ３をランダムに生成する。次に整数解Ｓ＝（ｃ１，ｃ２）をディオファンタス方程式Ｘ（ｘ，ｙ）＝０に代入し、次式を得る。  
ａ１ｃ１２ｃ２３＋ａ２ｃ２２＋ａ３ｃ１＋ａ４＝０
この式から定数項ａ４を次のように得る。
【０１３３】
ａ４＝−ａ１ｃ１２ｃ２３−ａ２ｃ２２−ａ３ｃ１
鍵生成方法は、定数項を持つ全てのディオファンタス方程式に適用できるだけでなく、整数解への制約が全く無い。この点が第１の実施形態にない効果と言える。
【０１３４】
また、第１の実施形態で述べた各バリエーションは本実施形態でも成立する。
【０１３５】
＜安全性の検討＞
以下ではこのように構成した本実施形態の公開鍵暗号の安全性に関して考察する。基本的に第１の実施形態における安全性の検討がそのまま本実施形態の安全性の検討となる。第１の実施形態と異なるのは暗号文が２つあることであり、この部分の安全性に関して考察を行う。暗号文Ｆ１(ｘ1,…,ｘn,ｔ)，Ｆ２(ｘ1,…,ｘn,ｔ)の引き算を行うと以下のようになる。
【０１３６】
Ｆ１(ｘ1,…,ｘn,ｔ)−Ｆ２(ｘ1,…,ｘn,ｔ)＝ｆ（ｔ）((ｐ１(ｘ1,…,ｘn,ｔ)−ｐ２(ｘ1,…,ｘn,ｔ))−Ｘ(ｘ1,…,ｘn)((ｑ１(ｘ1,…,ｘn,ｔ)−ｑ２(ｘ1,…,ｘn,ｔ))
この式では、多項式ｍ（ｔ）は消去されるもののｐ１(ｘ1,…,ｘn,ｔ)≠ｐ２(ｘ1,…,ｘn,ｔ)かつｑ１(ｘ1,…,ｘn,ｔ)≠ｑ２(ｘ1,…,ｘn,ｔ)であり、ｎ変数多項式の因数分解が必ずしも一意的でないことから、その因子等からもほとんど情報が得られない。
【０１３７】
（第２の実施形態の具体的な構成）
次に本実施形態の公開鍵暗号における鍵生成装置、暗号装置、復号装置の具体的な構成とそのアルゴリズムを２変数の場合を例にとり示す。本実施形態の鍵生成装置の構成と処理の流れを図８に示すフローチャートに沿って図１２に示す全体構成図を参照しながら示す。また本実施形態では式（７）に示したディオファンタス方程式を前提とした構成例を示している。また、理解の助けとして具体的な数値や式を示すが、これはあくまでも理解を助ける簡明な例であって、実際に使われる十分な安全性を持つ暗号化とは（特に多項式の次数などの点で）必ずしも一致していない。
【０１３８】
本実施形態の鍵生成装置１０は、鍵生成処理開始の指令が外部装置等から制御部１１に伝えられることで開始される。当該指令が制御部１１に伝わると（ＳＴ５１）、制御部１１ではディオファンタス方程式決定部１２にディオファンタス方程式の出力要請を行う。
【０１３９】
ディオファンタス方程式決定部１２では、式（７）に示したような，係数を変数としたディオファンタス方程式の形を決定し（ＳＴ５２）、この方程式の形を制御部１１に出力する。方程式の形の出力方法は、ステップＳＴ２で述べた通りである。
【０１４０】
次に、制御部１１は、ディオファンタス方程式を係数生成部１８に送信する。
【０１４１】
係数生成部１８では、ディオファンタス方程式を受けると、このディオファンタス方程式に含まれる定数項以外の係数ａ１，ａ２，ａ３をランダムに生成し（ＳＴ５３）、得られた係数ａ１（＝２３），ａ２（＝３８７），ａ３（＝３８）を制御部１１に送信する。
【０１４２】
制御部１１は、受信した係数ａ１，ａ２，ａ３をディオファンタス方程式に設定して一旦、メモリ（図示せず）に保存した後、整数解Ｓの生成を整数解生成部１３に要請する。整数解生成部１３は、この要請により、２つのランダムな整数を求めることで整数解Ｓ＝(ｃ1,ｃ2)＝（１２１３，１８７３）をランダムに生成し（ＳＴ５４）、得られた整数解Ｓ＝（ｃ1,ｃ2）を制御部１１に送信する。
【０１４３】
制御部１１は、受信した整数解Ｓ＝（ｃ1,ｃ2）を一旦、メモリ（図示せず）に保存する。
【０１４４】
しかる後、制御部１１は、メモリ内の整数解Ｓ＝（ｃ1,ｃ2）と係数ａ１，ａ２，ａ３を設定済みのディオファンタス方程式とをディオファンタス方程式生成部１６に送信する。ディオファンタス方程式生成部１６は、この整数解Ｓ＝（ｃ１，ｃ２）をディオファンタス方程式Ｘ（ｘ，ｙ）＝０に代入し、定数項ａ４（＝−２２２３６３１２６９０５９６４４９６）を求める（ＳＴ５５）。しかる後、ディオファンタス方程式生成部１６は、この係数ａ４を制御部１１に送信する。
【０１４５】
以上の操作で、式（１０）及び式（１１）に示すように、公開鍵であるディオファンタス方程式Ｘと秘密鍵である整数解Ｓとが得られる。
【０１４６】
Ｘ(ｘ,ｙ):２３ｘ2ｙ3＋３８７ｙ2＋３８ｘ−２２２３６３１２６９０５９６４４９６
（１０）
Ｓ:(ｃ１,ｃ２)＝（１２１３，１８７３）                            （１１）
（暗号装置及び処理の流れ）
次に本実施形態の暗号装置の構成と処理の流れを図９に示すフローチャートに沿って図３に示す全体構成図を参照しながら示す。本実施形態の暗号装置２０は平文入力部２１からメッセージを取得し、公開鍵入力部２２から公開鍵Ｘ(ｘ1,…,ｘn)と既約多項式の最大次数Ｌを取得することから処理を開始する。なお、公開鍵としては、鍵生成処理の例で述べたように、「ディオファンタス方程式」を利用し、送信者が取り決めた「既約多項式の最小次数Ｌ」を用いる。公開鍵の具体例は下記である。
【０１４７】
ディオファンタス方程式Ｘ
Ｘ:２３ｘ２ｙ３＋３８７ｙ２＋３８ｘ−２２２３６３１２６９０５９６４４９６
更に、ここでは既約多項式の最小次数Ｌを５とする。
【０１４８】
始めに、暗号装置２０は、平文入力部２１からメッセージが入力され（ＳＴ２１）、公開鍵入力部２２から公開鍵と既約多項式の最小次数が入力される（ＳＴ２２）。入力された公開鍵と既約多項式の最小次数のうち、既約多項式ｆ（ｔ）の最小次数Ｌ（＝５）が平文変換部２３に送られる。
【０１４９】
平文変換部２３では、別途、平文入力部２１から送信されたメッセージを、既約多項式のの最小次数Ｌよりも小さい次数の多項式に変換する（ＳＴ２３）。変換のアルゴリズムは第１の実施形態に述べた通りである。ここでは、Ｌ＝５なのでメッセージを４次の多項式ｍ（ｔ）に変換できたとする。
【数１２】
2006194990.tif 000014
【０１５０】
平文変換部２３では、多項式ｍ（ｔ）を暗号化部に送信する。一方、公開鍵入力部２２は公開鍵を暗号化部２４に送信する。
【０１５１】
暗号化部２４は、多項式ｍ（ｔ）と公開鍵及び既約多項式の最小次数Ｌを受信すると、既約多項式の最小次数Ｌを既約多項式生成部２５に送信する（ＳＴ２４）。
【０１５２】
既約多項式生成部２５は、前述同様に、次数Ｌの既約多項式ｆ（ｔ）をランダムに生成し（ＳＴ２５）、得られた次数Ｌ（＝５）の既約多項式ｆ（ｔ）を暗号化部２４に返信する。
【数１３】
2006194990.tif 000015
【０１５３】
暗号化部２４は、既約多項式ｆ（ｔ）を受信すると、公開鍵であるディオファンタス方程式Ｘを多項式生成部２６に送信する。多項式生成部２６は、ディオファンタス方程式Ｘを受けると、３変数のランダムな多項式ｑ１(ｘ,ｙ,ｔ)，ｑ２(ｘ,ｙ,ｔ)を生成し（ＳＴ２６”）、この多項式ｑ１(ｘ,ｙ,ｔ)，ｑ２(ｘ,ｙ,ｔ)を暗号化部２４に返信する。ここで、多項式ｑ１(ｘ,ｙ,ｔ)，ｑ２(ｘ,ｙ,ｔ)は簡単のため、次式のものとする。
【０１５４】
ｑ１(ｘ,ｙ,ｔ)＝１３ｘ２ｙ３ｔ＋３７８ｙ２ｔ３＋３４ｘｔ５＋９３  
ｑ２(ｘ,ｙ,ｔ)＝２６ｘ３ｙｔ＋５２ｙ２ｘｔ３＋２９
暗号化部２４はこの３変数多項式ｑ１(ｘ,ｙ,ｔ)，ｑ２(ｘ,ｙ,ｔ)を得ると、多項式生成部に条件（２），（３），（４）を満たす相異なる３変数多項式ｐ１(ｘ,ｙ,ｔ)，ｐ２(ｘ,ｙ,ｔ)を生成させる（ＳＴ２７”）。ここでは、３変数多項式ｐ１(ｘ,ｙ,ｔ)，ｐ２(ｘ,ｙ,ｔ)を次式のものとする。
【０１５５】
ｐ１(ｘ,ｙ,ｔ)＝4ｘ4ｙ4ｔ2＋5ｘ4ｙ6ｔ＋7ｘ3ｙ3ｔ3＋3ｘ2ｙ5＋34ｘ2ｙ3ｔ＋6ｘ2ｙｔ＋3ｘｙ2＋86ｙ4ｔ＋54ｙ2＋5ｔ＋4
ｐ２(ｘ,ｙ,ｔ)＝23ｘ5ｙ4ｔ2＋4ｘ3ｔ＋43ｘ3ｙ5ｔ4＋4ｘ2ｙ3ｔ+8ｘ2ｙ2＋34ｘ3ｙｔ＋5ｘｙ2ｔ4＋21ｘ2ｙ＋7ｙ2＋7ｔ3+5
この各項は式（２）（３）（４）に示された次数の関係式を満たしている。
【０１５６】
暗号化部２４は、以上の処理で得られた多項式ｍ（ｔ），既約多項式ｆ（ｔ），多項式ｐ１(ｘ,ｙ,ｔ)，ｑ１(ｘ,ｙ,ｔ)と、公開鍵であるディオファンタス方程式Ｘ(ｘ,ｙ)とを用い、式（５）に基づいて、暗号文Ｆ１(ｘ,ｙ,ｔ)を計算し展開する（ＳＴ２８”−１）。なお、ここでは式（５）はｐ(ｘ,ｙ,ｔ)をｐ１(ｘ,ｙ,ｔ)に、ｑ(ｘ,ｙ,ｔ)をｑ１(ｘ,ｙ,ｔ)にそれぞれ読み替えて適用する。暗号文Ｆ１(ｘ,ｙ,ｔ)は、本実施形態の例において次式のようになる。
【数１４】
2006194990.tif 000016
【０１５７】
暗号化部２４は、同様に多項式ｍ（ｔ），既約多項式ｆ（ｔ），多項式ｐ２(ｘ,ｙ,ｔ)，ｑ２(ｘ,ｙ,ｔ)と、公開鍵であるディオファンタス方程式Ｘ（ｘ，ｙ）とを利用して暗号文Ｆ２(ｘ,ｙ,ｔ)を計算し展開する（ＳＴ２８”−２）。暗号文Ｆ２(ｘ,ｙ,ｔ)は、本実施形態の例において次式のようになる。
【数１５】
2006194990.tif 000017
【０１５８】
暗号化部２４は、これら暗号文Ｆ１(ｘ,ｙ,ｔ)，Ｆ２(ｘ,ｙ,ｔ)を（必要ならば予め定められたフォーマットに合わせて変形し）暗号文出力部２９から出力することにより、暗号化処理は終了する。
【０１５９】
第１の実施形態におけるバリエーションのうち、第３のバリエーション以外は第２の実施形態の暗号装置２０でも同様の構成で成立する。
【０１６０】
（復号装置及び処理の流れ）
最後に本実施形態の復号装置の構成と処理の流れを図１０に示すフローチャートに沿って図５に示す全体構成図を参照しながら示す。本実施形態の復号装置３０は暗号文入力部３１から暗号文Ｆ１(ｘ,ｙ,ｔ)，Ｆ２(ｘ,ｙ,ｔ)を取得し（ＳＴ３１）、鍵入力部２２から公開鍵Ｘ(ｘ,ｙ)と、秘密鍵Ｓを取得することから（ＳＴ３２）、処理を開始する。ここで秘密鍵とは１つの整数解であり、鍵生成で示した式（１１）で定義される整数解Ｓを利用する。取得された暗号文と鍵情報は復号部３３に送られ、復号処理が開始される。
【０１６１】
復号部３３は、整数解代入部３４に暗号文Ｆ１(ｘ,ｙ,ｔ)と整数解Ｓを送信する。整数解代入部３４は、整数解Ｓを暗号文Ｆ１(ｘ,ｙ,ｔ)に代入し、必要に応じて多項式演算部３５を利用することにより、以下のような多項式ｈ１（ｔ）を得る（ＳＴ３３”）。
【数１６】
2006194990.tif 000018
【０１６２】
ここで、多項式演算部３５は多項式の加減乗除演算を行う。また同様に、整数解代入部３４は、整数解ＳをＦ２(ｘ,ｙ,ｔ)に代入し、以下のような多項式ｈ２（ｔ）を得る（ＳＴ３４”）。
【数１７】
2006194990.tif 000019
【０１６３】
得られた代入結果ｈ１（ｔ），ｈ２（ｔ）は、整数解代入部３４から復号部３３に送出される。
【０１６４】
復号部３３は、代入結果ｈ１（ｔ），ｈ２（ｔ）を多項式演算部３５に送信して引き算させ、その結果を因数分解部３６に送信して因数分解することにより（ＳＴ３５）、式（１２）に示すような因数分解結果を得ると、因数分解結果をメモリ内に保存する。
【数１８】
2006194990.tif 000020
【０１６５】
（１２）
復号部３３は、因子抽出部３７を用い、メモリ内の因数分解結果から最大次数の既約多項式として、既約多項式ｆ（ｔ）を決定する（ＳＴ３６）。
【０１６６】
復号部３３は、既約多項式ｆ（ｔ），代入結果ｈ１（ｔ）を剰余演算部３８に送る。剰余演算部３８は、代入結果ｈ１（ｔ）を既約多項式ｆ（ｔ）で除し、剰余として多項式ｍ（ｔ）を計算し（ＳＴ３７）、この平文ｍを復号部３３に送信する。
【０１６７】
復号部３３では、前述同様に多項式ｍを平文展開部３９に送信して、多項式ｍ（ｔ）から平文ｍを抽出するとともに平文ｍからメッセージに展開し（ＳＴ３８〜ＳＴ４１）、平文出力部４０から出力することによって（ＳＴ４２）、復号処理を終了する。
【０１６８】
第１〜第４のバリエーションは第１の実施形態と同様の実現方法で、本実施形態でも実施可能である。尚、第３のバリエーションに関しては図１１にそのアルゴリズムを示した。
【０１６９】
以上で、第２の実施形態における本発明の鍵生成装置、暗号装置、復号装置の具体的構成の説明を終了する。
【０１７０】
上述したように本実施形態によれば、第１の実施形態とは異なり、１つの整数解Ｓを秘密鍵に用いているが、第１の実施形態と同様に、ディオファンタス方程式の整数解を求める問題に安全性の根拠をおく公開鍵暗号方式の暗号装置２０，復号装置３０又は鍵生成装置１０を実現したので、第１の実施形態と同様に、量子計算機が出現しても安全性を確保でき、現在の計算機でも安全に実現可能であると共に、小電力環境での実現可能性がある公開鍵暗号方式を構成することができる。
【０１７１】
また、第２の実施形態によれば、第１の実施形態とは異なり、１つの整数解Ｓを満たすように構成すれば良いので、第１の実施形態よりも容易にしかも自由度の高い鍵を生成することができる。
【０１７２】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０１７３】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０１７４】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行しても良い。
【０１７５】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０１７６】
また、記憶媒体は１つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０１７７】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１７８】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１７９】
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１８０】
【図１】本発明の第１の実施形態における鍵生成装置の全体構成図である。
【図２】同実施形態における鍵生成装置の処理の流れを説明するためのフローチャートである。
【図３】同実施形態における暗号装置の全体構成図である。
【図４】同実施形態における暗号装置の処理の流れを説明するためのフローチャートである。
【図５】同実施形態における復号装置の全体構成図である。
【図６】同実施形態における復号装置の処理の流れを説明するためのフローチャートである。
【図７】同実施形態における鍵生成装置の第１のバリエーションの処理の流れを説明するためのフローチャートである。
【図８】本発明の第２の実施形態における鍵生成装置の処理の流れを説明するためのフローチャートである。
【図９】同実施形態における暗号装置の処理の流れを説明するためのフローチャートである。
【図１０】同実施形態における復号装置の処理の流れを説明するためのフローチャートである。
【図１１】同実施形態における復号装置の第３のバリエーションの処理の流れを説明するためのフローチャートである。
【図１２】同実施形態における鍵生成装置の全体構成図である。
【符号の説明】
【０１８１】
１０…鍵生成装置、１１…制御部、１２…ディオファンタス方程式決定部、１３…整数解生成部、１４…整数生成部、１５…行列演算部、１６…ディオファンタス方程式生成部、１７…鍵出力部、１８…係数生成部、２０…暗号装置、２１…平文入力部、２２…公開鍵入力部、２３…平文変換部、２４…暗号化部、２５…既約多項式生成部、２６…多項式生成部、２７…暗号文出力部、３０…復号装置、３１…暗号文入力部、３２…鍵入力部、３３…復号部、３４…整数解代入部、３５…多項式演算部、３６…因数分解部、３７…因子抽出部、３８…剰余演算部、３９…平文展開部、４０…平文出力部。
【図１】
2006194990.tif 000021
【図２】
2006194990.tif 000022
【図３】
2006194990.tif 000023
【図４】
2006194990.tif 000024
【図５】
2006194990.tif 000025
【図６】
2006194990.tif 000026
【図７】
2006194990.tif 000027
【図８】
2006194990.tif 000028
【図９】
2006194990.tif 000029
【図１０】
2006194990.tif 000030
【図１１】
2006194990.tif 000031
【図１２】
2006194990.tif 000032