(57)【要約】【課題】  量子計算機が出現しても安全性が確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成する。【解決手段】  代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)上の代数曲線（因子）のうちのセクションＤを秘密鍵に用いた構成により、現代の数学で未解決の難問である代数曲面上の因子を求める求因子問題に安全性の根拠をおく公開鍵暗号方式の暗号装置、復号装置又は鍵生成装置を実現した。これにより、上記課題を解決する。【選択図】      図１
2005331656.tif 000002
【特許請求の範囲】
【請求項１】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置であって、
メッセージｍを１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込む平文埋め込み手段と、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段と、
次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段と、
前記平文多項式ｍ(ｔ)に対し、前記各多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ),ｆ(ｔ)と前記定義式Ｘ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とした暗号装置。
【請求項２】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置であって、
メッセージｍを、１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の候補の一部の係数とに分担して埋め込む平文埋め込み手段と、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段と、
前記１変数既約多項式ｆ(ｔ)の候補の各係数のうち、前記メッセージｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段と、
前記平文多項式ｍ(ｔ)に対し、前記各多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ),ｆ(ｔ)と前記定義式Ｘ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とした暗号装置。
【請求項３】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置であって、
メッセージｍを１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込む平文埋め込み手段と、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段と、
次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段と、
前記平文多項式ｍ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とする暗号装置。
【請求項４】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置であって、
メッセージｍを、１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の候補の一部の係数とに分担して埋め込む平文埋め込み手段と、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段と、
前記１変数既約多項式ｆ(ｔ)の候補の各係数のうち、前記メッセージｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段と、
前記平文多項式ｍ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とする暗号装置。
【請求項５】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込まれた平文多項式ｍ(ｔ)に対し、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)と、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)と、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式ｍ(ｔ)から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置であって、
前記入力された暗号文Ｆに対し、前記各セクションＤ１,Ｄ２を代入して２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段と、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段と、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段と、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段と
を備えたことを特徴とする復号装置。
【請求項６】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の一部の係数とに分担して埋め込まれてなる当該平文多項式ｍ(ｔ)及び１変数既約多項式ｆ(ｔ)に対し、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)と、前記１変数既約多項式ｆ(ｔ)と、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式ｍ(ｔ)から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置であって、
前記入力された暗号文Ｆに対し、前記各セクションＤ１,Ｄ２を代入して２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段と、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段と、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段と、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段と、
この平文多項式ｍ(ｔ)及び前記抽出した既約多項式ｆ(ｔ)を展開し、メッセージｍを得る平文展開手段と
を備えたことを特徴とする復号装置。
【請求項７】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込まれた平文多項式ｍ(ｔ)に対し、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から生成された複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤに基づいて、前記暗号文Ｆ１,Ｆ２から前記メッセージｍを復号するための復号装置であって、
前記入力された２つの暗号文Ｆ１,Ｆ２に対し、前記セクションＤを代入することにより、２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段と、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段と、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段と、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段と
を備えたことを特徴とする復号装置。
【請求項８】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の一部の係数とに分担して埋め込まれてなる当該平文多項式ｍ(ｔ)及び１変数既約多項式ｆ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から生成された複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤに基づいて、前記暗号文Ｆ１,Ｆ２から前記メッセージｍを復号するための復号装置であって、
前記入力された２つの暗号文Ｆ１,Ｆ２に対し、前記セクションＤを代入することにより、２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段と、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段と、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段と、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段と、
この平文多項式ｍ(ｔ)及び前記抽出した既約多項式ｆ(ｔ)を展開し、メッセージｍを得る平文展開手段と
を備えたことを特徴とする復号装置。
【請求項９】
請求項５乃至請求項８のいずれか１項に記載の復号装置において、
前記１変数多項式ｈ２(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る第２の剰余演算手段と、
前記各剰余演算手段により得られた２つの平文多項式ｍ(ｔ)を互いに比較し、両者が一致することを検証する検証手段と
を備えたことを特徴とする復号装置。
【請求項１０】
メッセージｍを暗号化するための公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、前記暗号化されたメッセージｍを復号するための秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２とを生成するための鍵生成装置であって、
ランダムな１変数多項式λｘ(ｔ)を生成する第１の１変数多項式生成手段と、
前記１変数多項式λｘ(ｔ)で割り切れる１変数多項式λｙ(ｔ)を生成する第２の１変数多項式手段と、
前記１変数多項式λｘ(ｔ)に基づいて、互いの差分｛ｕｘ(ｔ)−ｖｘ(ｔ)｝がλｘ(ｔ)となるように、変数ｘをパラメータｔで表示する２つの１変数多項式ｕｘ(ｔ),ｖｘ(ｔ)を生成する手段と、
前記１変数多項式λｙ(ｔ)に基づいて、互いの差分｛ｕｙ(ｔ)−ｖｙ(ｔ)｝がλｙ(ｔ)となるように、変数ｙをパラメータｔで表示する２つの１変数多項式ｕｙ(ｔ),ｖｙ(ｔ)を生成する手段と、
前記各１変数多項式ｕｘ(ｔ),ｖｘ(ｔ),ｕｙ(ｔ),ｖｙ(ｔ)に基づいて、前記２つのセクションＤ１：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)及びＤ２：(ｘ,ｙ,ｔ)＝(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)を生成するセクション生成手段と、
前記各セクションＤ１,Ｄ２を持つ代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)を生成する代数曲面生成手段と
を備えたことを特徴とする鍵生成装置。
【請求項１１】
メッセージｍを暗号化するための公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、前記暗号化されたメッセージｍを復号するための秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤとを生成するための鍵生成装置であって、
ランダムな１変数多項式群ξｉ(ｔ)（但し、ｉは自然数）を生成する第１の１変数多項式生成手段と、
前記代数曲面の変数ｘ,ｙをパラメータｔで表示する２つの１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)を生成する第２の１変数多項式生成手段と、
前記各１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)に基づいて、前記セクションＤ：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)を生成するセクション生成手段と、
前記１変数多項式群ξｉ(ｔ)及び前記セクションＤに基づいて、前記セクションＤを持つ代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)を生成する代数曲面生成手段と
を備えたことを特徴とする鍵生成装置。
【請求項１２】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置のコンピュータを、
メッセージｍを１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込む平文埋め込み手段、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段、
次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段、
前記平文多項式ｍ(ｔ)に対し、前記各多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ),ｆ(ｔ)と前記定義式Ｘ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項１３】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置のコンピュータを、
メッセージｍを、１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の候補の一部の係数とに分担して埋め込む平文埋め込み手段、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段、
前記１変数既約多項式ｆ(ｔ)の候補の各係数のうち、前記メッセージｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段、
前記平文多項式ｍ(ｔ)に対し、前記各多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ),ｆ(ｔ)と前記定義式Ｘ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項１４】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置のコンピュータを、
メッセージｍを１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込む平文埋め込み手段、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段、
次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段、
前記平文多項式ｍ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項１５】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置のコンピュータを、
メッセージｍを、１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の候補の一部の係数とに分担して埋め込む平文埋め込み手段、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段、
前記１変数既約多項式ｆ(ｔ)の候補の各係数のうち、前記メッセージｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段、
前記平文多項式ｍ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項１６】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込まれた平文多項式ｍ(ｔ)に対し、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)と、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)と、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式ｍ(ｔ)から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置に用いられるプログラムであって、
前記復号装置のコンピュータを、
前記入力された暗号文Ｆに対し、前記各セクションＤ１,Ｄ２を代入して２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段、
として機能させるためのプログラム。
【請求項１７】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の一部の係数とに分担して埋め込まれてなる当該平文多項式ｍ(ｔ)及び１変数既約多項式ｆ(ｔ)に対し、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)と、前記１変数既約多項式ｆ(ｔ)と、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式ｍ(ｔ)から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置に用いられるプログラムであって、
前記復号装置のコンピュータを、
前記入力された暗号文Ｆに対し、前記各セクションＤ１,Ｄ２を代入して２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段、
この平文多項式ｍ(ｔ)及び前記抽出した既約多項式ｆ(ｔ)を展開し、メッセージｍを得る平文展開手段、
として機能させるためのプログラム。
【請求項１８】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込まれた平文多項式ｍ(ｔ)に対し、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から生成された複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤに基づいて、前記暗号文Ｆ１,Ｆ２から前記メッセージｍを復号するための復号装置に用いられるプログラムであって、
前記復号装置のコンピュータを、
前記入力された２つの暗号文Ｆ１,Ｆ２に対し、前記セクションＤを代入することにより、２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段、
として機能させるためのプログラム。
【請求項１９】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の一部の係数とに分担して埋め込まれてなる当該平文多項式ｍ(ｔ)及び１変数既約多項式ｆ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から生成された複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤに基づいて、前記暗号文Ｆ１,Ｆ２から前記メッセージｍを復号するための復号装置に用いられるプログラムであって、
前記復号装置のコンピュータを、
前記入力された２つの暗号文Ｆ１,Ｆ２に対し、前記セクションＤを代入することにより、２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段、
この平文多項式ｍ(ｔ)及び前記抽出した既約多項式ｆ(ｔ)を展開し、メッセージｍを得る平文展開手段、
として機能させるためのプログラム。
【請求項２０】
請求項１６乃至請求項１９のいずれか１項に記載のプログラムにおいて、
前記復号装置のコンピュータを、
前記１変数多項式ｈ２(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る第２の剰余演算手段、
前記各剰余演算手段により得られた２つの平文多項式ｍ(ｔ)を互いに比較し、両者が一致することを検証する検証手段、
として機能させるためのプログラム。
【請求項２１】
メッセージｍを暗号化するための公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、前記暗号化されたメッセージｍを復号するための秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２とを生成するための鍵生成装置に用いられるプログラムであって、
前記鍵生成装置のコンピュータを、
ランダムな１変数多項式λｘ(ｔ)を生成する第１の１変数多項式生成手段、
前記１変数多項式λｘ(ｔ)で割り切れる１変数多項式λｙ(ｔ)を生成する第２の１変数多項式手段、
前記１変数多項式λｘ(ｔ)に基づいて、互いの差分｛ｕｘ(ｔ)−ｖｘ(ｔ)｝がλｘ(ｔ)となるように、変数ｘをパラメータｔで表示する２つの１変数多項式ｕｘ(ｔ),ｖｘ(ｔ)を生成する手段、
前記１変数多項式λｙ(ｔ)に基づいて、互いの差分｛ｕｙ(ｔ)−ｖｙ(ｔ)｝がλｙ(ｔ)となるように、変数ｙをパラメータｔで表示する２つの１変数多項式ｕｙ(ｔ),ｖｙ(ｔ)を生成する手段、
前記各１変数多項式ｕｘ(ｔ),ｖｘ(ｔ),ｕｙ(ｔ),ｖｙ(ｔ)に基づいて、前記２つのセクションＤ１：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)及びＤ２：(ｘ,ｙ,ｔ)＝(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)を生成するセクション生成手段、
前記各セクションＤ１,Ｄ２を持つ代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)を生成する代数曲面生成手段、
として機能させるためのプログラム。
【請求項２２】
メッセージｍを暗号化するための公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、前記暗号化されたメッセージｍを復号するための秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤとを生成するための鍵生成装置に用いられるプログラムであって、
前記鍵生成装置のコンピュータを、
ランダムな１変数多項式群ξｉ(ｔ)（但し、ｉは自然数）を生成する第１の１変数多項式生成手段、
前記代数曲面の変数ｘ,ｙをパラメータｔで表示する２つの１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)を生成する第２の１変数多項式生成手段、
前記各１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)に基づいて、前記セクションＤ：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)を生成するセクション生成手段、
前記１変数多項式群ξｉ(ｔ)及び前記セクションＤに基づいて、前記セクションＤを持つ代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)を生成する代数曲面生成手段、
として機能させるためのプログラム。
【請求項２３】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置が実行する暗号方法であって、
メッセージｍを１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込む平文埋め込み工程と、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成工程と、
次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成工程と、
前記平文多項式ｍ(ｔ)に対し、前記各多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ),ｆ(ｔ)と前記定義式Ｘ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とした暗号方法。
【請求項２４】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置が実行する暗号方法であって、
メッセージｍを、１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の候補の一部の係数とに分担して埋め込む平文埋め込み工程と、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成工程と、
前記１変数既約多項式ｆ(ｔ)の候補の各係数のうち、前記メッセージｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成工程と、
前記平文多項式ｍ(ｔ)に対し、前記各多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ),ｆ(ｔ)と前記定義式Ｘ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とした暗号方法。
【請求項２５】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置が実行する暗号方法であって、
メッセージｍを１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込む平文埋め込み工程と、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成工程と、
次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成工程と、
前記平文多項式ｍ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とする暗号方法。
【請求項２６】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置が実行する暗号方法であって、
メッセージｍを、１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の候補の一部の係数とに分担して埋め込む平文埋め込み工程と、
３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成工程と、
前記１変数既約多項式ｆ(ｔ)の候補の各係数のうち、前記メッセージｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成工程と、
前記平文多項式ｍ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とする暗号方法。
【請求項２７】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込まれた平文多項式ｍ(ｔ)に対し、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)と、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)と、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式ｍ(ｔ)から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置が実行する復号方法であって、
前記入力された暗号文Ｆに対し、前記各セクションＤ１,Ｄ２を代入して２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入工程と、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算工程と、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解工程と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出工程と、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算工程と
を備えたことを特徴とする復号方法。
【請求項２８】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の一部の係数とに分担して埋め込まれてなる当該平文多項式ｍ(ｔ)及び１変数既約多項式ｆ(ｔ)に対し、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)と、前記１変数既約多項式ｆ(ｔ)と、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式ｍ(ｔ)から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置が実行する復号方法であって、
前記入力された暗号文Ｆに対し、前記各セクションＤ１,Ｄ２を代入して２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入工程と、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算工程と、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解工程と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出工程と、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算工程と、
この平文多項式ｍ(ｔ)及び前記抽出した既約多項式ｆ(ｔ)を展開し、メッセージｍを得る平文展開工程と
を備えたことを特徴とする復号方法。
【請求項２９】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込まれた平文多項式ｍ(ｔ)に対し、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から生成された複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤに基づいて、前記暗号文Ｆ１,Ｆ２から前記メッセージｍを復号するための復号装置が実行する復号方法であって、
前記入力された２つの暗号文Ｆ１,Ｆ２に対し、前記セクションＤを代入することにより、２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入工程と、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算工程と、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解工程と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出工程と、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算工程と
を備えたことを特徴とする復号方法。
【請求項３０】
メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数と次数ｒ以上の１変数既約多項式ｆ(ｔ)の一部の係数とに分担して埋め込まれてなる当該平文多項式ｍ(ｔ)及び１変数既約多項式ｆ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から生成された複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤに基づいて、前記暗号文Ｆ１,Ｆ２から前記メッセージｍを復号するための復号装置が実行する復号方法であって、
前記入力された２つの暗号文Ｆ１,Ｆ２に対し、前記セクションＤを代入することにより、２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入工程と、
前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算工程と、
前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解工程と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出工程と、
前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算工程と、
この平文多項式ｍ(ｔ)及び前記抽出した既約多項式ｆ(ｔ)を展開し、メッセージｍを得る平文展開工程と
を備えたことを特徴とする復号方法。
【請求項３１】
請求項２７乃至請求項３０のいずれか１項に記載の復号方法において、
前記１変数多項式ｈ２(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る第２の剰余演算工程と、
前記各剰余演算工程により得られた２つの平文多項式ｍ(ｔ)を互いに比較し、両者が一致することを検証する検証工程と
を備えたことを特徴とする復号方法。
【請求項３２】
メッセージｍを暗号化するための公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、前記暗号化されたメッセージｍを復号するための秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２とを生成するための鍵生成装置が実行する鍵生成方法であって、
ランダムな１変数多項式λｘ(ｔ)を生成する第１の１変数多項式生成工程と、
前記１変数多項式λｘ(ｔ)で割り切れる１変数多項式λｙ(ｔ)を生成する第２の１変数多項式工程と、
前記１変数多項式λｘ(ｔ)に基づいて、互いの差分｛ｕｘ(ｔ)−ｖｘ(ｔ)｝がλｘ(ｔ)となるように、変数ｘをパラメータｔで表示する２つの１変数多項式ｕｘ(ｔ),ｖｘ(ｔ)を生成する工程と、
前記１変数多項式λｙ(ｔ)に基づいて、互いの差分｛ｕｙ(ｔ)−ｖｙ(ｔ)｝がλｙ(ｔ)となるように、変数ｙをパラメータｔで表示する２つの１変数多項式ｕｙ(ｔ),ｖｙ(ｔ)を生成する工程と、
前記各１変数多項式ｕｘ(ｔ),ｖｘ(ｔ),ｕｙ(ｔ),ｖｙ(ｔ)に基づいて、前記２つのセクションＤ１：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)及びＤ２：(ｘ,ｙ,ｔ)＝(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)を生成するセクション生成工程と、
前記各セクションＤ１,Ｄ２を持つ代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)を生成する代数曲面生成工程と
を備えたことを特徴とする鍵生成方法。
【請求項３３】
メッセージｍを暗号化するための公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、前記暗号化されたメッセージｍを復号するための秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤとを生成するための鍵生成装置が実行する鍵生成方法であって、
ランダムな１変数多項式群ξｉ(ｔ)（但し、ｉは自然数）を生成する第１の１変数多項式生成工程と、
前記代数曲面の変数ｘ,ｙをパラメータｔで表示する２つの１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)を生成する第２の１変数多項式生成工程と、
前記各１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)に基づいて、前記セクションＤ：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)を生成するセクション生成工程と、
前記１変数多項式群ξｉ(ｔ)及び前記セクションＤに基づいて、前記セクションＤを持つ代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)を生成する代数曲面生成工程と
を備えたことを特徴とする鍵生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、代数曲面を用いた公開鍵暗号システムの暗号装置、復号装置、鍵生成装置、、プログラム及び方法に関する。
【背景技術】
【０００２】
ネットワーク社会では、電子メールを始めとする多くの情報がネットワークを行き交うことにより、人々がコミュニケーションを行なう。このようなネットワーク社会において、暗号技術は情報の機密性や真正性を守る手段として広く活用されている。
【０００３】
暗号技術は、共通鍵暗号技術と公開鍵暗号技術に大きく分けることができる。共通鍵暗号はデータの攪拌アルゴリズムに基づいた暗号方式であり、高速に暗号化／復号ができる一方で、予め共通の鍵を持った２者間でしか秘密通信や認証通信ができない。
【０００４】
このため、共通鍵暗号は、主に有料デジタル放送のように、受信後にリアルタイムで復号されなければならない情報の暗号化に利用される。この場合、有料デジタル放送の復号鍵は、別途、限定受信システムと呼ばれる鍵配信システムを用いて視聴契約者だけに配信される。
【０００５】
一方、公開鍵暗号は数学的なアルゴリズムに基づいた暗号方式であり、暗号化／復号が共通鍵暗号より低速であるが、事前の鍵共有を必要とせずに、秘密通信や認証通信が可能となる特徴がある。詳しくは、公開鍵暗号は、通信の際には送信相手の公開鍵を用いて暗号処理を施すことで秘密通信を実現し、自己の秘密鍵を用いてデジタル署名を施すことで(成りすましを防ぐ)認証通信を可能とする。
【０００６】
ここで、インターネットに開設されているネットショッピング、銀行や証券会社のオンラインサイトでは、(クレジットカード番号や住所などの)顧客情報を盗聴から守るために、公開鍵暗号が用いられることが多い。理由は、顧客情報を暗号化するための暗号鍵を予め共有することが必ずしも可能でないため、共通鍵暗号が不向きなことによる。
【０００７】
代表的な公開鍵暗号には、ＲＳＡ暗号と楕円曲線暗号がある。ＲＳＡ暗号は、素因数分解問題の困難性を安全性の根拠としており、冪乗剰余演算が暗号化演算として用いられている。楕円曲線暗号は、楕円曲線上の離散対数問題の困難性を安全性の根拠としており、楕円曲線上の点演算が暗号化演算に用いられる。
【０００８】
これらの公開鍵暗号は、特定の鍵(公開鍵)に関する解読法は提案されているものの、一般的な解読法は知られていない。このため、安全性に関する重大な問題は、後に述べる量子計算機による解読法を除き、現在までのところ、見つかっていない。
【０００９】
この他の公開鍵暗号にはナップサック暗号及び多次多変数暗号などがある。ナップサック暗号は、(ＮＰ問題として知られている)ナップサック問題の困難性に安全性の根拠をおいた暗号方式である。多次多変数暗号は、体の拡大理論を利用して構成され、連立方程式の求解問題に安全性の根拠をおいた暗号方式である。
【００１０】
しかし、ナップサック暗号は、ほとんど全ての実現形態にて解読法が知られているので、安全性にかなり疑問がある。多次多変数暗号は、有力な解読法が知られている一方、この解読法は鍵サイズの増大により避けられることも知られている。とは言え、多次多変数暗号は、解読法を避けるのに必要な鍵サイズが膨大になり、問題視され始めている。
【００１１】
一方で、現在広く利用されているＲＳＡ暗号と楕円曲線暗号であっても量子計算機が出現すれば解読される危険に晒されている。量子計算機とは、量子力学で知られているエンタングルメントという物理現象を利用し、現在の計算機とは違った原理に基づいて超並列計算を実行可能な計算機である。かかる量子計算機は、現在までのところ実験レベルでしか動作が確認されていない仮想の計算機であるが、実現に向けた研究開発が進められている。１９９４年にショア(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）
【発明の開示】
【発明が解決しようとする課題】
【００１８】
以上説明したように公開鍵暗号方式は、量子計算機でも解読が難しいことと、現在の計算機でも実用化できることが望まれている。更に、公開鍵暗号方式は、小電力環境でも実現できることが求められている。
【００１９】
本発明は上記実情を考慮してなされたもので、量子計算機が出現しても安全性が確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成し得る暗号装置、復号装置、鍵生成装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
第１の発明は、復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置であって、メッセージｍを１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込む平文埋め込み手段と、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段と、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段と、前記平文多項式ｍ(ｔ)に対し、前記各多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ),ｆ(ｔ)と前記定義式Ｘ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段とを備えた暗号装置である。
【００２１】
第２の発明は、復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)に基づいて、メッセージｍを暗号化するための暗号装置であって、メッセージｍを１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込む平文埋め込み手段と、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)を生成する多項式生成手段と、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)を生成する１変数既約多項式生成手段と、前記平文多項式ｍ(ｔ)に対し、前記１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)を生成する暗号化手段とを備えた暗号装置である。
【００２２】
第３の発明は、メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込まれた平文多項式ｍ(ｔ)に対し、３変数ｘ,ｙ,ｔのランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)と、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)と、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式ｍ(ｔ)から生成された暗号文Ｆ＝Ｅpｋ(ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置であって、前記入力された暗号文Ｆに対し、前記各セクションＤ１,Ｄ２を代入して２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段と、前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段と、前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段と、因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段と、前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段とを備えた復号装置である。
【００２３】
第４の発明は、メッセージｍが１変数ｔで次数(ｒ−１)以下の平文多項式ｍ(ｔ)の係数として埋め込まれた平文多項式ｍ(ｔ)に対し、次数ｒ以上のランダムな１変数既約多項式ｆ(ｔ)と、少なくとも一方が相異なる２つのランダムな多項式の組ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)とｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)と、公開された代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式ｍ(ｔ)から生成された複数の暗号文Ｆ１＝Ｅpｋ(ｍ,ｐ１,ｑ１,ｆ,Ｘ)及びＦ２＝Ｅpｋ(ｍ,ｐ２,ｑ２,ｆ,Ｘ)が入力されたとき、予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤに基づいて、前記暗号文Ｆ１,Ｆ２から前記メッセージｍを復号するための復号装置であって、前記入力された２つの暗号文Ｆ１,Ｆ２に対し、前記セクションＤを代入することにより、２つの１変数多項式ｈ１(ｔ),ｈ２(ｔ)を生成するセクション代入手段と、前記各１変数多項式ｈ１(ｔ),ｈ２(ｔ)を互いに減算し、減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を得る多項式減算手段と、前記減算結果｛ｈ１(ｔ)−ｈ２(ｔ)｝を因数分解する因数分解手段と、因数分解結果から最も大きな次数を持つ既約多項式ｆ(ｔ)を抽出する多項式抽出手段と、前記１変数多項式ｈ１(ｔ)を前記既約多項式ｆ(ｔ)で除算し、剰余として平文多項式ｍ(ｔ)を得る剰余演算手段とを備えた復号装置である。
【００２４】
第５の発明は、メッセージｍを暗号化するための公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、前記暗号化されたメッセージｍを復号するための秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する２つのセクションＤ１,Ｄ２とを生成するための鍵生成装置であって、ランダムな１変数多項式λｘ(ｔ)を生成する第１の１変数多項式生成手段と、前記１変数多項式λｘ(ｔ)で割り切れる１変数多項式λｙ(ｔ)を生成する第２の１変数多項式手段と、前記１変数多項式λｘ(ｔ)に基づいて、互いの差分｛ｕｘ(ｔ)−ｖｘ(ｔ)｝がλｘ(ｔ)となるように、変数ｘをパラメータｔで表示する２つの１変数多項式ｕｘ(ｔ),ｖｘ(ｔ)を生成する手段と、前記１変数多項式λｙ(ｔ)に基づいて、互いの差分｛ｕｙ(ｔ)−ｖｙ(ｔ)｝がλｙ(ｔ)となるように、変数ｙをパラメータｔで表示する２つの１変数多項式ｕｙ(ｔ),ｖｙ(ｔ)を生成する手段と、前記各１変数多項式ｕｘ(ｔ),ｖｘ(ｔ),ｕｙ(ｔ),ｖｙ(ｔ)に基づいて、前記２つのセクションＤ１：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)及びＤ２：(ｘ,ｙ,ｔ)＝(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)を生成するセクション生成手段と、前記各セクションＤ１,Ｄ２を持つ代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)を生成する代数曲面生成手段とを備えた鍵生成装置である。
【００２５】
第６の発明は、メッセージｍを暗号化するための公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、前記暗号化されたメッセージｍを復号するための秘密鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)＝０に対応する１つのセクションＤとを生成するための鍵生成装置であって、ランダムな１変数多項式群ξｉ(ｔ)（但し、ｉは自然数）を生成する第１の１変数多項式生成手段と、前記代数曲面の変数ｘ,ｙをパラメータｔで表示する２つの１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)を生成する第２の１変数多項式生成手段と、前記各１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)に基づいて、前記セクションＤ：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)を生成するセクション生成手段と、前記１変数多項式群ξｉ(ｔ)及び前記セクションＤに基づいて、前記セクションＤを持つ代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)を生成する代数曲面生成手段とを備えた鍵生成装置である。
【００２６】
（作用）
第１乃至第６の各発明は、代数曲面ＸのファイブレーションＸ（ｘ,ｙ,ｔ）上の代数曲線（因子）のうちのセクションを秘密鍵に用いており、現代の数学で未解決の難問である代数曲面上の因子を求める求因子問題に安全性の根拠をおく公開鍵暗号方式の暗号装置、復号装置又は鍵生成装置を実現したので、量子計算機が出現しても安全性が確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成することができる。
【発明の効果】
【００２７】
以上説明したように本発明によれば、量子計算機が出現しても安全性が確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の各実施形態について図面を参照しながら説明する。
【００２９】
（第１の実施形態）
本発明で述べる代数曲面は体Ｋ上定義された連立(代数)方程式の解の集合のうち２次元の自由度を持ったものと定義される。例えば、次の式(１)に示す体Ｋ上の連立方程式は変数５つに対し、それらを束縛する３つの方程式があるので２次元の自由度を持っているので、代数曲面となる。
【００３０】
ｆ１(ｘ,ｙ,ｚ,ｖ,ｗ)＝０
ｆ２(ｘ,ｙ,ｚ,ｖ,ｗ)＝０
ｆ３(ｘ,ｙ,ｚ,ｖ,ｗ)＝０      …(１)
特に、式(２)に示す如き、３変数のＫ上代数方程式の解の集合として定義される空間もＫ上の代数曲面となる。
【００３１】
ｆ(ｘ,ｙ,ｚ)＝０      …(２)
なお、式(１)、式(２)に示した代数曲面の定義式はアフィン空間におけるものであって、射影空間におけるそれは(式(２)の場合)、ｆ(ｘ,ｙ,ｚ,ｗ)＝０である。
【００３２】
しかし、本実施形態では代数曲面を射影空間で扱うことはないので代数曲面の定義式を式(１)若しくは式(２)としたが、射影空間で表現しても本発明はそのまま成立する。
【００３３】
一方、代数曲線は体Ｋ上定義された連立(代数)方程式の解の集合のうち１次元の自由度を持ったものである。よって、例えば次式のように定義される。
【００３４】
ｇ(ｘ,ｙ)＝０
本実施形態においては式(２)のように１つの式で書ける代数曲面のみを扱うので、以下では式(２)を代数曲面の定義方程式のごとく扱う。
【００３５】
体とは加減乗除が自由にできる集合であって、実数、有理数、複素数がこれにあたるが、整数や行列など０以外に除算ができない元を含む集合は該当しない。体の中には有限体と呼ばれる有限個の元から構成される体がある。例えば素数ｐに対し、ｐを法とする剰余類Ｚ／ｐＺは体をなす。このような体は素体と呼ばれＦｐなどと書く。有限体にはこの他に素数の冪乗個の元を持つ体Ｆｑ(ｑ＝ｐｒ)があるが、本実施形態では簡単のため主に素体Ｆｐのみを扱う。一般に素体Ｆｐのｐは素体Ｆｐの標数と呼ばれる。
【００３６】
一方、一般の有限体でも本発明は自明な変形を施すことによって同様に成立する。公開鍵暗号ではメッセージをデジタルデータとして埋め込む必要から有限体上で構成することが多く、本実施形態においても同様に有限体(本実施形態では特に素体)Ｆｐ上定義された代数曲面を扱う。
【００３７】
代数曲面Ｘ：ｆ(ｘ,ｙ,ｚ)＝０上には通常代数曲線が複数存在する。このような代数曲線は代数曲面上の因子と呼ばれる。
【００３８】
一般に代数曲面の定義式が与えられた時に(非自明な)因子を求める問題は現代の数学においても未解決の難問であり、総当りなどの原始的な方法を除けば一般的な解法は知られていない。特に本実施形態で扱うような有限体で定義された代数曲面においては有理数体などの無限体(無限個の元からなる体)と比較しても手掛かりが少なく、より難しい問題であることが知られている。
【００３９】
本実施形態ではこの問題を代数曲面上の求因子問題もしくは単に求因子問題と呼び、代数曲面上の求因子問題に安全性の根拠をおく公開鍵暗号を構成する。
【００４０】
代数曲面Ｘの定義式ｆ(ｘ,ｙ,ｚ)＝０において、変数ｚをｔに変えて  
ｇt(ｘ,ｙ):＝ｆ(ｘ,ｙ,ｔ)
とおく。これをＫ上の１変数代数関数体Ｋ(ｔ)の元を係数とする多項式としてみたとき、ｇt(ｘ,ｙ)＝０がＫ(ｔ)上の代数曲線を定義するとき、Ｘはｔをパラメータとするアフィン直線Ａ1 上のファイブレーションを持つといい、ｆ(ｘ,ｙ,ｔ)＝０を代数曲面Ｘのファイブレーションと呼び、Ｘｔなどと表す（尚、以下では簡単のためファイブレーションであることが明らかであるときには単なるＸと表す）。ファイブレーションを持つ代数曲面には、セクションと呼ばれる
(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)
のように、ｔでパラメタライズされたＸ上の代数曲線が存在する。
【００４１】
またパラメータｔに体Ｋの元ｔ０を代入して得られる代数曲線はファイバーと呼ばれＸｔ０のように表される。ここで、ファイバーとセクションは共に代数曲面Ｘｔの因子である。
【００４２】
一般に代数曲面のファイブレーションが与えられたとき、それに対応するファイバーは(ｔに体の元を代入することにより)直ちに求まるが、対応するセクションを求めることは極めて難しい。この意味ではファイバーは自明な因子であり、セクションは非自明な因子であると言える。
【００４３】
本実施形態で述べる公開鍵暗号は代数曲面上の求因子問題のうち、特に代数曲面ＸのファイブレーションＸｔが与えられたときセクションを求める問題に安全性の根拠をおいた公開鍵暗号である。
【００４４】
ファイブレーションからセクションを求めるには現代の数学においてもセクション(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)を
ｄｅｇ  ｕｘ(ｔ)＜ｒｘ，ｄｅｇ  ｕｙ(ｔ)＜ｒｙ
と仮定した上で、
【数１】
2005331656.tif 000003
【００４５】
を立てて、これを解くことによって求める方法しか知られていない。即ち、本発明の公開鍵暗号も従来技術で述べた多次多変数暗号と同様に連立方程式の求解問題に帰着すると言える。しかし、多次多変数暗号が(現代の数学ではかなり解明されている)有限体の拡大理論に依存しているのに対し、代数曲面暗号は数学上の未解決問題である求因子問題に依存している。このため、本発明の代数曲面暗号は、多次多変数暗号に比べ、問題の困難さのレベルが著しく高い。
【００４６】
以下では代数曲面上の求因子問題に基づいた公開鍵暗号の２つの具体的な構成を説明する。
【００４７】
（第１の実施形態）
本実施形態の公開鍵は以下の４つである。
【００４８】
１.素体の標数ｐ
２.Ｆｐ上の代数曲面Ｘのファイブレーション：Ｘ(ｘ,ｙ,ｔ)＝０
３.Ｆｐ上の１変数既約多項式ｆ(ｔ)の最小次数ｒ(但しｒはＸ(ｘ,ｙ,ｔ)におけるｔの最大次数より大きく取る)。
【００４９】
４.(秘密鍵である)セクションにおける多項式ｕｘ(ｔ),ｕｙ(ｔ),ｖｘ(ｔ),ｖｙ(ｔ)の最大次数ｄ
秘密鍵は以下の２つの異なるセクションＤ１,Ｄ２である。
【００５０】
１.Ｆｐ上の代数曲面Ｘのセクション：Ｄ１：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)
２.Ｆｐ上の代数曲面Ｘのセクション：Ｄ２：(ｘ,ｙ,ｔ)＝(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)
これらは後述する方法(鍵生成方法)で容易に求めることができる。
【００５１】
次に暗号化処理の概要を述べる。暗号化処理ではまず暗号化したいメッセージ(以下では平文と呼ぶ)をブロック分割して
ｍ＝ｍ０‖ｍ１‖・・・‖ｍr-1のようにし、平文多項式ｍ(ｔ)に
ｍ(ｔ)＝ｍr-1ｔr-1＋・・・＋ｍ１＋ｍ０
に埋め込む(平文埋め込み処理)。ここでｍ(ｔ)をＦｐ上の多項式とするために、各ｍｉ(０≦ｉ≦ｒ−１)はＦｐの元となるように取る必要がある。即ち、平文はｐのビット長に基づいて
０≦ｍｉ≦ｐ−１
となるように平文を分割する。
【００５２】
次にＦｐ上のランダム多項式ｐ(ｘ,ｙ,ｔ)，ｑ(ｘ,ｙ,ｔ)をランダムに決める。このときｐ(ｘ,ｙ,ｔ)においては、以下の２条件を満たして決定する必要がある。
【００５３】
即ち、各項のｘ指数、ｙ指数、ｔ指数をｅｘ,ｅｙ,ｅｔとすると
(ｅｘ＋ｅｙ)ｄ＋ｅｔ＜ｒ      …(３)
となる範囲内で取る。これは後述する復号処理において平文を一意に決定するための条件である。また、ｄｅｇｘ，ｄｅｇｙ，ｄｅｇｔによって、それぞれ多項式のｘ,ｙ,ｔに関する次数を表すとし
ｄｘ：＝ｄｅｇｘ  Ｘ(ｘ,ｙ,ｔ)、
ｄｙ：＝ｄｅｇｙ  Ｘ(ｘ,ｙ,ｔ)
とおくと、後述する安全性からの要請により、
【数２】
2005331656.tif 000004
【００５４】
更にｆ(ｔ)も同様に、後述する安全性からの要請により
ｒ＞ｄｅｇｔ  Ｘ(ｘ,ｙ,ｔ)      …(５)
を満たすように取らなくてはならない。
【００５５】
更にＦｐ上ランダムな１変数のｒ次既約多項式ｆ(ｔ)を決める。ここで既約多項式とは、これ以上因数分解できない多項式のことである。有限体上の１変数多項式の場合、その既約性判定は極めて容易であることが知られている。以上の式ｍ(ｔ)，ｐ(ｘ,ｙ,ｔ)，ｑ(ｘ,ｙ,ｔ)，ｆ(ｔ)及び公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)から
Ｆ(ｘ,ｙ,ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ(ｘ,ｙ,ｔ)＋Ｘ(ｘ,ｙ,ｔ)ｑ(ｘ,ｙ,ｔ)      …(６)
によって暗号文Ｆ(ｘ,ｙ,ｔ)を計算する。後で＜安全性の検討＞として述べる通り、これらランダムな多項式ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ),ｆ(ｔ)はそのどの１つが欠けても安全性に問題が生ずる。即ち、暗号化の計算式は必然性のある式となっている。
【００５６】
暗号文Ｆ(ｘ,ｙ,ｔ)を受け取った受信者は所有する秘密鍵Ｄ１,Ｄ２を利用して次のように復号を行う。まず、セクションＤ１,Ｄ２を暗号文Ｆ(ｘ,ｙ,ｔ)に代入する。ここで、セクションＤ１,Ｄ２を代数曲面Ｘ(ｘ,ｙ,ｔ)に代入すると
Ｘ(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)＝０、Ｘ(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)＝０
なる関係があることに注意すると
ｈ１(ｔ)＝Ｆ(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)
ｈ２(ｔ)＝Ｆ(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)
という関係を持つ２つの式ｈ１(ｔ)ｈ２(ｔ)が求まることが分かる。次に、２式を辺々引き算して
ｈ１(ｔ)−ｈ２(ｔ)＝ｆ(ｔ){ｐ(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)−ｐ(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)}
…(７)
を計算する。次にｈ１(ｔ)−ｈ２(ｔ)を因数分解して、最大次数を持つ因数をｆ(ｔ)と定める。ここで最大次数の因子がｆ(ｔ)であるためには、ｆ(ｔ)の次数をｒとした時、
ｄｅｇ(ｐ(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)−ｐ(ｖｘ(ｔ),ｖｙ(ｔ),ｔ))＜ｒ      …(８)
となるようなｐ(ｘ,ｙ,ｔ)を選択すれば十分であり、このためには
ｄｅｇ(ｐ(ｕｘ(ｔ),ｕｙ(ｔ),ｔ))＜ｒ
ｄｅｇ(ｐ(ｖｘ(ｔ),ｖｙ(ｔ),ｔ))＜ｒ      …(９)
の両方が成り立つように選択する必要がある。しかし、送信者にはセクションが秘匿されているのでｒを十分大きく取るとともに、セクションの各要素となっている多項式ｕｘ(ｔ),ｕｙ(ｔ),ｖｘ(ｔ),ｖｙ(ｔ)における次数の最大値ｄを公開鍵として公開している。即ち、ｐ(ｘ,ｙ,ｔ)を決定するときは式(９)を満たすために、その各項ｃｘｅｘｙｅｙｔｅｔの指数ｅｘ,ｅｙ,ｅｔが条件式(３)を満たしていることが必要となる。尚、ｈ１(ｔ)−ｈ２(ｔ)の因数分解は１変数多項式の因数分解が容易であることから十分有効な時間内に処理可能である。得られたｆ(ｔ)でｈ１(ｔ)を除すると(ｍ(ｔ)の次数がｆ(ｔ)の次数ｒ未満であることに注意すると)
ｈ１(ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)
の関係が得られ、平文多項式ｍ(ｔ)が得られる。得られた平文多項式ｍ(ｔ)から平文埋め込み処理と逆の処理で平文ｍを求めることができる。ここで、ｍ(ｔ)が剰余として一意的であることは特筆すべきことである。一意的でないと平文多項式ｍ(ｔ)の候補が複数存在してしまい、真の平文多項式を特定することが困難になる。ｍ(ｔ)が一意的である理由はｈ１(ｔ)が含まれる一変数多項式環Ｆ[ｔ]においては整数と同様に除法の定理が成立するため、一変数多項式を一変数多項式で割った商と剰余は一意的となるからである。多項式環における除法の定理の証明は非特許文献２にある。
【００５７】
一方で２変数以上の多項式では除法の定理が一般には成立しないことが知られている（例えば、非特許文献３参照）。
【００５８】
最後に本実施形態における鍵生成方法を説明する。本実施形態の鍵生成はセクションＤ１,Ｄ２をランダムに選び、それに対応したファイブレーションを計算することによって行う。但し、生成された代数曲面が２つのセクションを同時に持つようにするために以下のような工夫が必要となる。
【００５９】
ここでは簡単のため代数曲面のうち楕円曲面Ｅｔを例にとって鍵生成方法を示す。楕円曲面は
Ｅｔ：ｙ２＋ｙ＝ｘ３＋ａ(ｔ)ｘ＋ｂ(ｔ)
というファイブレーションを持つ代数曲面であると定義することができる。ここでａ(ｔ),ｂ(ｔ)は１変数多項式である。まず、素体の標数ｐを決める。このときｐは小さくても安全性に問題は生じない。さて、セクションＤ１,Ｄ２を
Ｄ１：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)、
Ｄ２：(ｘ,ｙ,ｔ)＝(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)
とおいて楕円曲面Ｅｔに代入し、
ｕｙ(ｔ)２＋ｕｙ(ｔ)＝ｕｘ(ｔ)３＋ａ(ｔ)ｕｘ(ｔ)＋ｂ(ｔ)
ｖｙ(ｔ)２＋ｖｙ(ｔ)＝ｖｘ(ｔ)３＋ａ(ｔ)ｖｘ(ｔ)＋ｂ(ｔ)
を得る。これらを辺々引くとｂ(ｔ)が消え、
ｕｙ(ｔ)２−ｖｙ(ｔ)２−（ｕｙ(ｔ)−ｖｙ(ｔ)）−(ｕｘ(ｔ)３−ｖｘ(ｔ)３)＝ａ(ｔ)(ｕｘ(ｔ)−ｖｘ(ｔ))
となり、ａ(ｔ)を多項式とするには、たとえば
ｕｘ(ｔ)−ｖｘ(ｔ)｜ｕｙ(ｔ)−ｖｙ(ｔ)
であれば十分である。このことを利用して以下に示すアルゴリズムで鍵生成を行うことができる。ここで、ｋ１(ｔ)｜ｋ２(ｔ)は、多項式ｋ１(ｔ)が多項式ｋ２(ｔ)を割り切ることを意味している。まず、λｘ(ｔ)｜λｙ(ｔ)となる２つの多項式をランダムに選択する。具体的にこのような多項式の組を求めるには、例えばλｘ(ｔ)をランダムに与えて、同じくランダムな多項式ｃ(ｔ)によってλｙ(ｔ)＝ｃ(ｔ)λｘ(ｔ)を計算することによってλｙ(ｔ)を求めることで実現できる。次に多項式ｖｘ(ｔ)をランダムに選択し、
ｕｘ(ｔ)−ｖｘ(ｔ)＝λｘ(ｔ)
によってｕｘ(ｔ)を計算する。同様に多項式ｖｙ(ｔ)をランダムに選択し
ｕｙ(ｔ)−ｖｙ(ｔ)＝λｙ(ｔ)
によってｕｙ(ｔ)を計算する。以上の手段で計算されたｕｘ(ｔ),ｖｘ(ｔ),ｕｙ(ｔ),ｖｙ(ｔ)を利用して
ａ(ｔ)＝{ｕｙ(ｔ)２−ｖｙ(ｔ)２−（ｕｙ(ｔ)−ｖｙ(ｔ)）−(ｕｘ(ｔ)３−ｖｘ(ｔ)３)}／(ｕｘ(ｔ)−ｖｘ(ｔ))
…(１０)
を計算することにより多項式ａ(ｔ)が計算できる。更にｂ(ｔ)はａ(ｔ)を利用して
ｂ(ｔ)＝ｕｙ(ｔ)２＋ｕｙ(ｔ)−ｕｘ(ｔ)３−ａ(ｔ)ｕｘ(ｔ)      …(１１)
によって得られる。
【００６０】
鍵生成方法は楕円曲面以外の代数曲面であっても例えばｙ２＋ｙ＝ｘ５＋ａ(ｔ)＋ｂ(ｔ)のような形の定義式を仮定するなら同様に可能であり、楕円曲面のみに限定される鍵生成方法ではない。しかし、例えばｘｙの項を含むような代数曲面には本実施形態で述べた鍵生成方法は適用できない。このような代数曲面においては第２の実施形態で述べる鍵生成方法が有効である。
【００６１】
但し、後で＜安全性の検討＞として述べる通り、代数曲面の式の形状には以下のような条件が必要となる。
【００６２】
『代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)をｘ,ｙの２変数多項式として見たとき（即ち、ｔを定数と見なしたとき）、ｘの１次の項ｃ１(ｔ)ｘとｙの１次の項ｃ２(ｔ)ｙとを含み、ｃ１(ｔ)とｃ２(ｔ)との間にはｃ１(ｔ)＝ｃ２(ｔ)などの特別な関係が無いものとする』（条件Ｘ）
従って、本発明の鍵生成処理においては代数曲面としてこの条件Ｘを満たすものを想定している。尚、本実施形態で例として述べる代数曲面は全てこの条件Ｘを満たしている。
【００６３】
最後にｄ及びｒを求める方法を示す。これらは復号方法から式(３)を満たさなければならないことが分かっている。まずｄは鍵生成方法で２つのセクションが求まっているため、そのｕｘ(ｔ),ｖｘ(ｔ),ｕｙ(ｔ),ｖｙ(ｔ)の次数の最大値として決定する。ｒは代数曲面Ｘ(ｘ,ｙ,ｔ)におけるｔ次数ｄｔから式(５)を満たすように取り、更にＸ(ｘ,ｙ,ｔ)のｘ,ｙ次数ｄｘｄｙから式(４),式(３)を満たすように修正する。そのような値の下限値をｒとしても良い。例えば
ｒ＝(ｄｘ＋１＋ｄｙ＋１)ｄ＋ｄｔ
のように選択する方法もある。
【００６４】
＜安全性の検討＞
以下では、上述のように構成した本発明の公開鍵暗号の安全性に関して考察する。本発明の公開鍵暗号は代数曲面のファイブレーションＸｔが与えられたとき、そのセクションを求める問題の難しさを安全性の根拠としている。一方でセクションは代数曲面を１変数代数関数体Ｋ(ｔ)上の代数曲面と考えたとき、代数曲線上のＫ(ｔ)有理点と捉えることができる。楕円曲面ｙ２＋ｙ＝ｘ３＋ａ(ｔ)＋ｂ(ｔ)を例に取り、このことを詳しく説明する。１変数代数関数体とは
Ｋ(ｔ) ＝ { ｆ(ｔ)／ｇ(ｔ)｜ｆ(ｔ) ∈ Ｋ[ｔ]，ｇ(ｔ) ∈ Ｋ[ｔ]−{０} }
で定義され、Ｋ係数の多項式を分母分子とする集合であり、体になる。即ち、体Ｋ上定義された楕円曲線ｙ２＋ｙ＝ｘ３＋ａｘ＋ｂを１変数代数関数体Ｋ(ｔ)上定義すると楕円曲面になるという関係を持っている。そこで逆に、楕円曲面をＫ(ｔ)上定義された楕円曲線と考えると、セクションの各要素ｘ,ｙ,ｔが１変数代数関数体Ｋ(ｔ)の元からなることから、セクション自体をＫ(ｔ)上定義された点と捉えることができる。このようにＫ(ｔ)上の点で、当該代数曲面(この例では楕円曲面)の式を満たすものをＫ(ｔ)有理点という。従って、主張の通り、セクションは代数曲面を１変数代数関数体Ｋ(ｔ)上の代数曲面と考えたとき、代数曲線上のＫ(ｔ)有理点と捉えることができる。尚、Ｋ上の点で当該代数曲面(この例では楕円曲面)の式を満たすものをＫ有理点という。
【００６５】
ファイブレーションを持つ代数曲面Ｘの場合、それが射影的ならば因子の間に代数的同値や数値的同値関係が定義できるので、Ｘ上の曲線(既約因子)は本質的にセクションとファイバーに分けられる。よって、Ｘ上の曲線はその２種類を考察すればよい。
【００６６】
しかし、Ｘがアフィン曲面である場合、因子の形や同値関係が、射影曲面のときとかなり異なるので、セクションやファイバー以外の曲線も考察しなければならない。具体的には、ｔをパラメータとした有理曲線(セクション)に加えて、ｘやｙをパラメータとする曲線についても考える必要がある。これを一般的に表すと、座標(ｘ,ｙ,ｔ)を変数ｓによって
ｘ＝ｕｘ(ｓ)，ｙ＝ｕｙ(ｓ)，ｔ＝ｕｔ(ｓ)      …(１２)
のようにパラメータ表示することになる。ここで、ｘ,ｙ,ｔのいずれかを定数に固定する因子(hyperplane section)及びその既約成分は容易に求めることができるので、本発明における代数曲面Ｘに関する求因子問題は「ｘ,ｙ,ｔのいずれも定数とならない１変数パラメータ表示(１２)で表される因子は求めることは非常に困難である。」ということができる。ここでは、この求因子問題の難しさを仮定して、代数曲線暗号の安全性を検証する。
【００６７】
まず、暗号文  
Ｆ(ｘ,ｙ,ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ(ｘ,ｙ,ｔ)＋Ｘ(ｘ,ｙ,ｔ)ｑ(ｘ,ｙ,ｔ)
が与えられたとき、復号処理はｔの多項式ｍ(ｔ)を特定することである。前述した復号方式では、Ｆ(ｘ,ｙ,ｔ)にＸ(ｘ,ｙ,ｔ)のセクション(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)及び(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)を代入し、多項式の因数分解により  
ｆ(ｔ){ｐ(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)−ｐ(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)}  
を導き出す操作がポイントとなる。以下では、次の３通りの攻撃方法［攻撃１］〜［攻撃３］に分類し、上記の操作以外に復号ができないことを検証する。
【００６８】
［攻撃１］式Ｆ(ｘ,ｙ,ｔ)の形状からｍ(ｔ)を判断する。  
［攻撃２］変数ｘ,ｙ,ｔに何かを代入又はリダクションを行ってｍ(ｔ)を取り出す。  
［攻撃３］変数ｘ,ｙ,ｔに関する微分、偏微分を用いてｍ(ｔ)を求める。
【００６９】
［攻撃１］式の形状から判断する攻撃方法
ｍ(ｔ)はｔのみに関する多項式であり、もしＦ(ｘ,ｙ,ｔ)の中にｔのみの多項式がこれ以外になければ、Ｆ(ｘ,ｙ,ｔ)の形状からｍ(ｔ)が特定できる。しかし、
Ｆ(ｘ,ｙ,ｔ)
＝{ｍ(ｔ)＋ｃｆ(ｔ)}＋ｆ(ｔ){ｐ(ｘ,ｙ,ｔ)−ｃ}＋Ｘ(ｘ,ｙ,ｔ)ｑ(ｘ,ｙ,ｔ)
と変形すれば明らかなように、Ｆ(ｘ,ｙ,ｔ)の中のｔの多項式はｍ(ｔ)とは限らない。また、たとえｍ(ｔ)＋ｃｆ(ｔ)が分かったとしても、ｆ(ｔ)が未知である限りｍ(ｔ)を求めることはできない。
【００７０】
［攻撃２］変数への代入又はリダクションによる攻撃方法
ｆ(ｘ,ｙ,ｔ)をｇ(ｘ,ｙ,ｔ)でリダクションするとはｆ(ｘ,ｙ,ｔ)をｇ(ｘ,ｙ,ｔ)で割った余りを求めることである。
【００７１】
［攻撃２−１］２次元多様体の代入による攻撃
いま公開されている情報は曲面の定義式Ｘ(ｘ,ｙ,ｔ)だけなので、Ｆ(ｘ,ｙ,ｔ)に対し利用して意味のある２次元多様体はＸ(ｘ,ｙ,ｔ)自身である。これについては、グレブナー基底等を用いて暗号文Ｆ(ｘ,ｙ,ｔ)をＸ(ｘ,ｙ,ｔ)でリダクションすることが考えられる。しかし、３変数多項式では、一般に除法の定理が成り立たないので、Ｆ(ｘ,ｙ,ｔ)からｍ(ｔ)＋ｆ(ｔ)ｐ(ｘ,ｙ,ｔ)が得られる確証はない。また、たとえ得られたとしても、［攻撃１］で述べたように、ｆ(ｔ)が未知であるのでｍ(ｔ)の特定には至らない。
【００７２】
［攻撃２−２］１次元多様体の代入による攻撃
１次元多様体とは曲線のことである。一般の曲線は連立方程式によって定義される。その連立方程式がＦ(ｘ,ｙ,ｔ)やＸ(ｘ,ｙ,ｔ)と関係していない場合は、使える方法は多項式によるリダクションのみである。しかし、これは前述の２次元多様体の代入による攻撃で説明したようにｍ(ｔ)の特定にはつながらない。
【００７３】
一方、Ｆ(ｘ,ｙ,ｔ)やＸ(ｘ,ｙ,ｔ)と密接に関係する曲線には次の２通りがある。
【００７４】
(ｉ)ｘ,ｙ,ｔのいずれかを定数にする曲線
(ｉｉ)ｘ,ｙ,ｔのいずれも定数にせず、パラメータ表示(１２)を持つ曲線
そして、曲線には次の２通りがある。
【００７５】
(ａ)曲面Ｘ上にある曲線(つまり、既約因子)
(ｂ)曲面Ｘ上にない曲線
これらの分類により４つの場合が考えられるが、(ｉｉ)かつ(ａ)の場合は求因子問題の仮定により一般には求めることができないので、攻撃には使えない。よって、残りの３つの場合を検討する。
【００７６】
○(ｉ)かつ(ａ)の場合
これはＸ上にあるファイバーとハイパープレーン・セクションとを用いた攻撃である。
【００７７】
まず、ｘ＝ｘ０で固定する場合、定義式からＸ(ｘ０,ｙ,ｔ)なる多項式を得る。また、暗号文Ｆ(ｘ,ｙ,ｔ)にｘ＝ｘ０を代入すると  
Ｆ(ｘ０,ｙ,ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ(ｘ０,ｙ,ｔ)＋Ｘ(ｘ０,ｙ,ｔ)ｑ(ｘ０,ｙ,ｔ)となる。
【００７８】
このとき、Ｆ(ｘ０,ｙ,ｔ)をＸ(ｘ０,ｙ,ｔ)で割ることによってｍ(ｔ)＋ｆ(ｔ)ｐ(ｘ０,ｙ,ｔ)を取り出すことができれば、ｔのみからなる項とそうでない項を分類して考えることによってｍ(ｔ),ｆ(ｔ)の候補が絞れる。更にｘ０をｘ１,ｘ２,ｘ３,・・・のように変化させることによりｍ(ｔ)が求まる可能性がある。しかし、条件(５)と(４)によって、ｙについてもｔについてもｍ(ｔ)＋ｆ(ｔ)ｐ(ｘ０,ｙ,ｔ)の次数はＸ(ｘ０,ｙ,ｔ)の次数よりも大きい。よって、ｍ(ｔ)＋ｆ(ｔ)ｐ(ｘ０,ｙ,ｔ)を特定することはできない。
【００７９】
ｙ＝ｙ０で固定する場合もｘ＝ｘ０のときと同様である。条件(５)と(４)によって、ｍ(ｔ)＋ｆ(ｔ)ｐ(ｘ,ｙ０,ｔ)を、Ｆ(ｘ,ｙ,ｔ)をＸ(ｘ,ｙ,ｔ)で割った剰余として特定することはできない。
【００８０】
一方、ｔ＝ｔ０で固定する場合、定義式からＸ(ｘ,ｙ,ｔ０)なる多項式を得る。これは、ファイバーの式である。また、暗号文Ｆ(ｘ,ｙ,ｔ)にｔ＝ｔ０を代入すると
Ｆ(ｘ,ｙ,ｔ０)＝ｍ(０)＋ｆ(０)ｐ(ｘ,ｙ,ｔ０)＋Ｘ(ｘ,ｙ,ｔ０)ｑ(ｘ,ｙ,ｔ０)
となる。このときも、Ｆ(ｘ,ｙ,ｔ０)をＸ(ｘ,ｙ,ｔ０)で割ることを考えるが、条件(５)と(４)によって、ｘについてもｙについてもｍ(０)＋ｆ(０)ｐ(ｘ,ｙ,ｔ０)の次数はＸ(ｘ,ｙ,ｔ０)の次数よりも大きい。よって、(ｘ＝ｘ０もしくはｙ＝ｙ０と固定する場合と同様に)ｍ(０)＋ｆ(０)ｐ(ｘ,ｙ,ｔ０)を特定することはできない。また、たとえ特定できたとしても、ｆ(０)ｐ(ｘ,ｙ,ｔ０)にも定数が含まれるので、どの部分が定数ｍ(０)であるのか分からない。よって、この場合もｍ(ｔ)を求めることはできない。
【００８１】
○(ｉ)かつ(ｂ)の場合
これは、ｘ,ｙ,ｔのいずれかを固定するが、Ｘ(ｘ,ｙ,ｔ)＝０を満たさない式を用いる場合である。この場合は、例えば
Ｘ(ｘ０,ｙ,ｔ)＝Ｘ(ｘ１,ｙ,ｔ)
となるｘ＝ｘ０,ｘ１を見つけ、Ｆ(ｘ０,ｙ,ｔ)及びＦ(ｘ１,ｙ,ｔ)をＸ(ｘ０,ｙ,ｔ)でリダクションすることにより、(ｉ)かつ(ａ)の場合と同様の方法でｍ(ｔ)を求められる可能性がある。しかしこの場合も、次数に関する条件(５)と(４)があるので、(ｉ)かつ(ａ)の場合と同様の理由により、ｍ(ｔ)を得ることはできない。
【００８２】
○(ｉｉ)かつ(ｂ)の場合
これは、Ｘのセクションではないが、１変数ｓでｘ＝ｕｘ(ｓ)，ｙ＝ｕｙ(ｓ)，ｔ＝ｕｔ(ｓ)のようにパラメータ表示された曲線を用いる攻撃である。この場合、Ｘ(ｘ,ｙ,ｔ)＝０は満たさないが、
Ｘ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))＝Ｘ(ｖｘ(ｓ),ｖｙ(ｓ),ｖｔ(ｓ))
となる(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))、(ｖｘ(ｓ),ｖｙ(ｓ),ｖｔ(ｓ))を見つけることは可能である。そして、Ｆ(ｘ,ｙ,ｔ)に代入すると
【数３】
2005331656.tif 000005
【００８３】
ここで、Ｆ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))−Ｆ(ｖｘ(ｓ),ｖｙ(ｓ),ｕｔ(ｓ))をＸ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))で割る操作が考えられるが、次数に関する条件(５)、(４)によってｆ(ｔ(ｓ)){ｐ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))−ｐ(ｖｘ(ｓ),ｖｙ(ｓ),ｕｔ(ｓ))}が得られる確証はない。したがって、この場合もｆ(ｔ)やｍ(ｔ)を求めることはできない。
【００８４】
但し、条件(５)、(４)から前記と同様に
ｄｅｇ Ｘ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ)) ＜ ｄｅｇ ｆ(ｕｔ(ｓ))｛ｐ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))−ｐ(ｖｘ(ｓ),ｖｙ(ｓ),ｕｔ(ｓ))｝
を導くためには、差を取ることにより｛ｐ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))−ｐ(ｖｘ(ｓ),ｖｙ(ｓ),ｕｔ(ｓ))｝の最高次の係数を含む高次の項が消えないようにする必要がある。このように最高次の項を残す目的で、条件Ｘが必要となる。実際、ｐ(ｘ,ｙ,ｔ)のｘ,ｙに関する最高次の項をｘαｙβとすると、  
ｐ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))−ｐ(ｖｘ(ｓ),ｖｙ(ｓ),ｕｔ(ｓ))      …([２−２]−１)
において最高次の項が消えるのは
ｕｘ(ｓ)αｕｙ(ｓ)β＝ｖｘ(ｓ)αｖｙ(ｓ)β
となるときである。（ｕｘ(ｓ)／ｖｘ(ｓ)）α（ｕｙ(ｓ)／ｖｙ(ｓ)）β＝１と変形すると分かるように、これは
ｕｘ(ｓ)＝ζｖｘ(ｓ)，ｕｙ(ｓ)＝ηｖｙ(ｓ)
を意味する。但し、ζ,ηは１の冪根である。一方、本攻撃においては、ｕｘ(ｓ)≠ｖｘ(ｓ)もしくはｕｙ(ｓ)≠ｖｙ(ｓ)が成立する下で
Ｘ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))＝Ｘ(ｖｘ(ｓ),ｖｙ(ｓ),ｕｔ(ｓ))
であることが必要なので、
Ｘ(ｕｘ(ｓ),ｕｙ(ｓ),ｕｔ(ｓ))＝Ｘ(ζｖｘ(ｓ),ηｖｙ(ｓ),ｕｔ(ｓ))
でなくてはならない。しかし、条件ＸによればＸ(ｘ,ｙ,ｔ)にｘのみの項、ｙのみの項が含まれるため、  
ζ＝η＝１
を導くことができ、ｕｘ(ｓ)＝ｖｘ(ｓ)，ｕｙ(ｓ)＝ｖｙ(ｓ)となるので、攻撃法の前提に反することになる。従って、代数曲面の定義式に条件Ｘを付すことにより、式（［２−２］−１）に示す差により最高次の項が消えないように暗号文を構成することができる。
【００８５】
［攻撃２−３］０次元多様体の代入による攻撃
平文多項式をａ０,ａ１,・・・,ａr-1を未知数として
ｍ(ｔ)＝ａr-1ｘr-1＋・・・＋a１＋a０
とおく。(公開鍵である)代数曲面Ｘ(ｘ,ｙ,ｔ)＝０の有理点(ｘｉ,ｙｉ,ｔｉ)は(どのような代数曲面でも)比較的簡単かつ大量に求まることが知られているため、これらの有理点を暗号文Ｆ(ｘ,ｙ,ｔ)に代入して、
Ｆ(ｘｉ,ｙｉ,ｔｉ)＝ｍ(ｔｉ)＋ｆ(ｔｉ)ｐ(ｘｉ,ｙｉ,ｔｉ)
という関係式が大量に求まる。これらを連立させるとｍ(ｔ)が解けそうである。しかし、ｆ(ｔ)とｑ(ｘ,ｙ,ｔ)はランダムな多項式であり、特にｑ(ｘ,ｙ,ｔ)にあっては３変数多項式であるので係数の種類が次数ｎに関してＯ(ｎ２)以上のオーダで増大する。これらの係数を変数と考えると膨大な数の変数を持つ連立方程式の解を求める必要に迫られ、(３変数多項式の次数を上げることによって)現実的には解が求まらないレベルまで到達するのは容易である。従ってこの攻撃は現実的でない。
【００８６】
尚、暗号文からｐ(ｘ,ｙ,ｚ)の因子を削除すると、連立方程式は
Ｆ(ｘｉ,ｙｉ,ｔｉ)＝ｍ(ｔｉ)＋ｆ(ｔｉ)
となり
ｄｅｇ ｍ(ｔ)＜ｒ≦ｄｅｇ ｆ(ｔ)
であるのでｄｅｇ ｆ(ｔ),ｒがそれほど大きくなければ比較的簡単に係数が求まると言える。これ故に因子ｐ(ｘ,ｙ,ｚ)の存在意義がある。同様に、暗号文から既約多項式ｆ(ｔ)とｐ(ｘ,ｙ,ｔ)の少なくとも一方を削除すると、本攻撃により
Ｆ(ｘｉ,ｙｉ,ｔｉ)＝ｍ(ｔｉ)
となり、更に簡単に平文多項式ｍ(ｔ)が求まってしまう。この理由で因子ｆ(ｔ)，ｐ(ｘ,ｙ,ｔ)が存在する。
【００８７】
［攻撃３］微分、偏微分を用いる攻撃
定義式Ｘ(ｘ,ｙ,ｔ)の微分や偏微分を用いて多項式を分析することが一般に可能である。しかし、セクションを求める手立てを与えるわけではない。また、上で考察した攻撃法より効率的な方法を与えるものでもない。よって、暗号文Ｆ(ｘ,ｙ,ｔ)の解読に微分、偏微分を用いても問題の難しさに変化はない。
【００８８】
＜バリエーション＞
最後に本実施形態におけるいくつかのバリエーションを述べる。第１のバリエーションは、公開鍵の中にあるｐ,ｒ,ｄを固定パラメータとすることで公開鍵のサイズを減らすことができることを特徴とするバリエーションである。勿論これらの一部だけを固定にする利用方法も考えられる。このバリエーションを用いると、パラメータの一部が固定されているので鍵生成時に制約が課せられることになるが、十分大きいｒ,dが取られていれば何回かの試行で所望の公開鍵Ｘ(ｘ,ｙ,ｔ)が求まる。
【００８９】
第２のバリエーションは、公開鍵の中にあるｄを公開しないことを特徴とする実施形態である。本来ｄは復号処理中の因数分解の結果、式(７)の右辺を得たとき、その中からｆ(ｔ)を最大次数の因子として求めるための条件に利用される。式(７)では本来ｆ(ｔ)が求まれば十分で、ｆ(ｔ)がｈ１(ｔ)−ｈ２(ｔ)の最大次数の因子である必要はない。仮にｆ(ｔ)が一意に決定できなくてもｈ１(ｔ)のｆ(ｔ)による剰余と(復号処理では利用しなかった)ｈ２(ｔ)のｆ(ｔ)による剰余を比較して等しくないならば当該ｆ(ｔ)は正しくないｆ(ｔ)であると言える。ここで正しくないｆ(ｔ)を選択してかつ２つの剰余が一致する確率は相当に小さいが、たとえ一致した場合でも平文にチェックビットを用意しておくことによってほとんどの場合正しい平文が特定される。以上のように構成することにより、ｄの制限を設けることが不要となり公開鍵が小さくなるばかりでなく、ｆ(ｔ)の次数を小さく取ることにより暗号文を小さくできる他にも、セクションの次数情報が漏れるのを防ぐことができるという効果がある。
【００９０】
第３のバリエーションは、暗号化に用いる式(６)の変形に関するバリエーションである。式(６)は例えば
Ｆ(ｘ,ｙ,ｔ)＝ｍ(ｔ)−ｆ(ｔ)ｐ(ｘ,ｙ,ｔ)−Ｘ(ｘ,ｙ,ｔ)ｑ(ｘ,ｙ,ｔ)
のように変形しても同様に暗号化／復号が可能であり、同様の安全性がある。このように本発明の趣旨に反しない範囲で暗号化の式を変形し、それに伴い復号処理を変更することは十分可能である。
【００９１】
第４のバリエーションは、平文ｍを１変数既約多項式ｆ(ｔ)にも埋め込む方式である。前述した実施形態ではｆ(ｔ)をランダムに生成する方式を示したが、秘密鍵無しにｆ(ｔ)を求めることが困難であることも本発明の公開鍵暗号の性質であるから、ｆ(ｔ)にも平文情報を埋め込む方式が実現可能となっている。ｆ(ｔ)にも平文を埋め込む場合、より大きなサイズの平文を一度に暗号化できる。但し、埋め込んだ結果ｆ(ｔ)を既約多項式とする必要から、特定の係数にはランダムな係数が入るように予め定めておく必要がある。既約多項式は極めて多く存在するため、一部の係数に平文を埋め込んだとしても、ほとんどの場合、既約多項式を得ることができる。仮に得られなかった場合にはｆ(ｔ)の次数を上げることにより、探索範囲を増やすことも可能である。
【００９２】
第５のバリエーションは、復号処理に復号結果の検証処理を追加する方式である。受信した暗号文Ｆ(ｘ,ｙ,ｔ)には（本来暗号文にはならない）出鱈目なものが含まれる場合が考えられる。例えば故意に誰かが不正な暗号文を送信する場合と、伝送中の不具合で暗号文の一部が壊れてしまう場合とがある。このような不正な暗号文の排除は、第２のバリエーションと同様の方式で実行される。なお、第５のバリエーションにおいて、第２のバリエーションと異なる点は、第２のバリエーションでは最高次の因子が２つ以上存在した時に復号文の検証処理を行なうのに対し、第５のバリエーションでは、最高次の因子の個数に関わらず、復号文の検証処理を常に行う点である。
【００９３】
第６のバリエーションは、平文を単なるメッセージｍとせず、ハッシュ関数ｈなどの一方向性関数を利用して
ｍ’＝ｍ‖ｈ(ｍ)      …(vari ６)
などとする。このようにすることによって、復号処理において出力された復号文ｍ’に対して当該ハッシュ関数ｈを利用して式(vari ６)を満たしていることを確かめることにより、出力された復号文ｍ’の真正性を確かめることができる。このような処理の必要性は、第５のバリエーションでも述べたような不正な暗号文を防ぐ効果を持っている。即ち、平文ｍに対応する正当な暗号文からｍと何らかの関係を持ったｍ１に対応する不正な暗号文を作成しようとする場合、改竄するものは（元の暗号文を復号できないので平文ｍを知らないため）平文ｍ１を求めることができない。一方、ハッシュ関数ｈは、一方向性を持っており、入力に対してランダムな値を取ることから、改竄された暗号文に、
ｍ１’＝ｍ１‖ｈ(ｍ１)
のような構造を持たせることは極めて困難である。言い換えれば、本バリエーションは第２のバリエーションで述べた平文に付けるチェックビットをより具体的な形で述べたものということもできる。しかし、それ以上にこのような平文ｍの変換を含む公開鍵暗号の構成は一般に改竄に対する安全性や、（適当な暗号文を作成し、それを復号装置に復号させ、そこから情報を得ることによって暗号文を解読する）アクティブな攻撃にも対抗できる強い安全性を持つ暗号を構成できることが知られている。このようなことは本発明の代数曲線暗号についても同様に成り立ち、同様の効果を期待できる。
【００９４】
（第１の実施形態の具体的な構成）
次にこのような公開鍵暗号における鍵生成装置、暗号装置、復号装置の具体的な構成とそのアルゴリズムを示す。
【００９５】
（鍵生成装置及び処理の流れ）
本実施形態の鍵生成装置の構成と処理の流れを図３に示すフローチャートに沿って図２に示す全体構成図を参照しながら示す。尚、理解の助けとして具体的な数値や式を示すが、これはあくまでも理解を助けるための例であって、実際に使われる十分な安全性を持つ暗号化とは(特に多項式の次数などの点で)必ずしも一致していない。
【００９６】
本実施形態の鍵生成装置１０は、制御部１１、素数生成部１２、セクション生成部１３、１変数多項式生成部１４、１変数多項式演算部１５、代数曲面生成部１６及び鍵出力部１７を備えており、全体として図３に示す動作を実行するように、制御部１１により他の各部１２〜１７が制御されるものである。以下、具体的に説明する。
【００９７】
鍵生成装置１０は、鍵生成処理開始の指令が外部装置等から制御部１１に伝えられることで処理を開始する。当該指令が制御部１１に伝わると(ＳＴ１）、制御部１１では素数生成部１２に素数生成の要請を行う。素数生成はランダムに素数を発生させても良いが、ここでは大きな素数を使う必要はないので、高々６ビット程度の素数からランダム若しくは(出力順を予め決めておくなどの手段で)恣意的に選択するか、当該鍵生成装置１０で予め定まっている素数を利用してもよい。ここでは素数ｐ＝１７が生成されたとする（ＳＴ２）。
【００９８】
次に、制御部１１は、セクション生成部１３に素数ｐを送信し、セクション生成部１３ではセクションの生成を開始する。まず素数ｐを１変数多項式生成部１４に送信し生成を要求し、１変数多項式λｘ(ｔ)(＝−ｔ（ｔ−１）)を得る（ＳＴ３）。
【００９９】
ここで、１変数多項式生成部１４では、次数を予め定められた一定範囲内でランダムに選択し、その次数を持つ１変数多項式の係数を有限体Ｆｐの元として０からｐ−１までの範囲でそれぞれ生成する。
【０１００】
制御部１１は、λｘ(ｔ)の生成時と同様にランダムな１変数多項式ｃ(ｔ)の生成処理を行いｃ(ｔ)(＝ｔ)を得る（ＳＴ４）。しかる後、制御部１１は、ｃ(ｔ)とλｘ(ｔ)を１変数多項式演算部１５に送信する。１変数多項式演算部１５は、λｙ(ｔ)＝ｃ(ｔ)λｘ(ｔ)を計算し（ＳＴ５）、得られたλｙ(ｔ)(＝−ｔ２(ｔ−１))を制御部１１に出力する。
【０１０１】
制御部１１は、λｙ(ｔ)を受信すると、λｘ(ｔ)の生成時と同様に１変数多項式ｖｘ(ｔ)(＝ｔ２＋１)をランダムに生成し（ＳＴ６）、得られたλｘ(ｔ)(＝−ｔ(ｔ−１))とｖｘ(ｔ)(＝ｔ２＋１)を１変数多項式演算部１５に送信し、ｕｘ(ｔ)(＝λｘ(ｔ)＋ｖｘ(ｔ)＝ｔ＋１)を得る（ＳＴ７）。また同様に、制御部１１は、ｖｙ(ｔ)(＝ｔ３＋１)を生成し（ＳＴ８）、ｕｙ(＝λｙ(ｔ)＋ｖｙ(ｔ)＝ｔ２＋１)を計算する（ＳＴ９）。
【０１０２】
次に、制御部１１は、ｕｘ(ｔ),ｕｙ(ｔ),ｖｘ(ｔ),ｖｙ(ｔ)を代数曲面生成部１６に送信する。代数曲面生成部１６は、式(１０)によってａ(ｔ)を１変数多項式演算部１５を繰り返し使うことによって求める（ＳＴ１０）。実際この例ではａ(ｔ)＝−ｔ３＋１１ｔ２−３ｔ−３と求まる。更に、代数曲面生成部１６は、ａ(ｔ)とｕｘ(ｔ),ｕｙ(ｔ),ｖｘ(ｔ),ｖｙ(ｔ)から式(１１)に基づいて同様の操作でｂ(ｔ)＝２ｔ４＋６ｔ３＋９ｔ２＋３ｔ＋４を得ると（ＳＴ１１）、このｂ（ｔ）を制御部１１に送信する。
【０１０３】
以上の操作で、公開鍵である代数曲面ＸのファイブレーションＥｔ(ｘ,ｙ,ｔ)と、秘密鍵である２つのセクションＤ１，Ｄ２とが以下の式(１３)及び式(１４)に示すように得られる。
【０１０４】
Ｅｔ(ｘ,ｙ,ｔ)：ｙ２＋ｙ−ｘ３−(−ｔ３＋１１ｔ２−３ｔ−３)ｘ−２ｔ４−６ｔ３−９ｔ２−３ｔ−４＝０
…(１３)
Ｄ１：(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)＝(ｔ＋１,ｔ２＋１,ｔ)
Ｄ２：(ｖｘ(ｔ),ｖｙ(ｔ),ｔ)＝(ｔ２＋１,ｔ３＋１,ｔ)      …(１４)
そこで、これらセクションに含まれる一変数多項式における次数の最大値をｄとする（ＳＴ１２）。
【０１０５】
ここではｄ＝３とする。次に制御部ではｒを例えば  
ｒ＝(ｄｘ＋１＋ｄｙ＋１)ｄ＋ｄｔ＝(４＋３)＊３＋４＝２５  
のように選択する（ＳＴ１３）。本実施形態では簡単のためｒ＝２２とする。
【０１０６】
＜第１のバリエーション＞
次に、第１のバリエーションとして述べた公開鍵ｐ,ｒ,ｄを予め定めておく場合の鍵生成装置の処理の流れを図５に示すフローチャートに沿って図４に示す全体構成図を参照しながら示す。ほとんど実施形態と同じであるので異なるところのみを説明するに留める。まず本バリエーションによる実施形態では素数ｐが固定であるため、素数生成部１２の代わりに固定パラメータ格納部１８が設けられ、その中に入っているｐを読み込む処理（ＳＴ２’）が素数生成処理と置き換わる。
【０１０７】
更に、ｕｘ(ｔ),ｕｙ(ｔ),ｖｘ(ｔ),ｖｙ(ｔ)が計算された後に制御部１１が固定パラメータ格納部１８から予め定められたｒ,ｄを読み込み（ＳＴ１０−１）、ｕｘ(ｔ),ｕｙ(ｔ),ｖｘ(ｔ),ｖｙ(ｔ)の最大次数ｄ’と読み込まれたｄを比較してｄ’≦ｄとなっていることを確かめる（ＳＴ１０−２）。
【０１０８】
ここで、この条件を満たしていない場合はステップＳＴ３に戻り、１変数多項式λｘ(ｔ)の生成から繰り返す。条件を満たしていた場合は、ｒに関する３つの条件(３),(５),(４)をｄ’,ｒが満たしていることをチェックする。例えば式(１３)で定義される代数曲面の場合、ｄｘ＝３，ｄｙ＝２であるので、最低でもｅｘ＝４，ｅｙ＝３，ｅｔ＝０を満たす必要があり、これを代入して成立するかを見てもよい。条件が満たされていなかった場合はλｘ(ｔ)の生成から繰り返す。条件を満たしていた場合は鍵が生成できたことになり、できた鍵を鍵出力部１７に送り、鍵出力部１７は生成された公開鍵と秘密鍵を出力する。
【０１０９】
（暗号装置及び処理の流れ）
次に本実施形態の暗号装置の構成と処理の流れを図７に示すフローチャートに沿って図６に示す全体構成図を参照しながら示す。本実施形態の暗号装置２０は、平文入力部２１、公開鍵入力部２２、平文埋め込み部２３、暗号化部２４、１変数既約多項式生成部２５、多項式生成部２６及び暗号文出力部２７を備えており、全体として図７に示す動作を実行するように、暗号化部２４により他の各部２１〜２３，２５〜２７が制御されるものである。以下、具体的に説明する。
【０１１０】
暗号装置２０は、平文入力部２１から平文ｍを取得し、公開鍵入力部２２から公開鍵Ｘ(ｘ,ｙ,ｔ),ｐ,ｒ,ｄを取得することから処理を開始する。ここで、公開鍵を鍵生成処理の例として生成された
１.ｐ＝１７
２.Ｆ17上の代数曲面Ｘのファイブレーション：
Ｅｔ(ｘ,ｙ,ｔ)：ｙ２＋ｙ−ｘ３−(−ｔ３＋１１ｔ２−３ｔ−３)ｘ−２ｔ４−６ｔ３−９ｔ２−３ｔ−４＝０
３.Ｆｐ上の１変数既約多項式ｆ(ｔ)の最小次数ｒ＝２２
４.(秘密鍵である)セクションにおける多項式ｕｘ(ｔ),ｕｙ(ｔ),ｖｘ(ｔ),ｖｙ(ｔ)の最大次数ｄ＝３
を利用する。
【０１１１】
始めに、平文入力部２１から平文が入力され(ＳＴ２１）、公開鍵入力部２２から公開鍵が入力される(ＳＴ２２）。入力された公開鍵のうち１変数既約多項式ｆ(ｔ)の最小次数であるｒ＝２２と素体の標数ｐ＝１７は取得され（ＳＴ２３）、平文埋め込み部２３に送られる。
【０１１２】
平文埋め込み部２３では、別途、平文入力部２１から送信された平文ｍを標数ｐのビット長よりも１小さいビット長に分割する。この場合は(ｐ＝１７であるから)平文ｍを４ビットに分割することができる。例えば平文ｍが１６進表示で“ｍ＝０ｘ３１５７６３ｅｆ２５ｃ０４ｃ７９２ｅｆ１５１”とするとこれらが４ビット毎に分割され、平文多項式ｍ(ｔ)の係数として次式のように埋め込まれる（ＳＴ２４）。
【数４】
2005331656.tif 000006
【０１１３】
平文埋め込み部２３では平文多項式ｍ(ｔ)を暗号化部２４に送信する。一方で、公開鍵入力部２２も暗号化部２４に公開鍵を送信する。
【０１１４】
暗号化部２４は、平文多項式と公開鍵を受信すると、公開鍵のうちｒとｐを１変数既約多項式生成部２５に送信する。１変数既約多項式生成部２５は、ｒ次以上の１変数既約多項式ｆ(ｔ)をランダムに生成し（ＳＴ２５）、得られたｆ(ｔ)を暗号化部２４に返信する。
【０１１５】
ここで既約多項式の生成は、ｒ次以上の多項式をランダムに生成し、Ｆｐ上の既約性判定を１変数多項式が既約多項式となるまで繰り返すことにより行う。ここでは２２次の既約多項式として以下のｆ(ｔ)を選択したとする。
【数５】
2005331656.tif 000007
【０１１６】
暗号化部２４は、１変数既約多項式ｆ(ｔ)を得ると、多項式生成部２６にｐを送信する。多項式生成部２６は、３変数多項式の各項が次数に関する関係式(３)を満たし、条件(４)を満たすような項が存在するようランダムな３変数多項式ｐ(ｘ,ｙ,ｔ)を生成する（ＳＴ２６）。ここでは簡単のためランダムな多項式を以下のものとする。
【数６】
2005331656.tif 000008
【０１１７】
この各項は式(３)に示された次数の関係式“３(ｅｘ＋ｅｙ)＋ｅｔ＜２２”を満たし、更に条件(４)を満たす項７ｘ４ｙ３を含んでいる。なお、多項式生成部２６は、生成した３変数多項式ｐ(ｘ,ｙ,ｔ)を暗号化部２４に返信する。
【０１１８】
暗号化部２４は、３変数多項式ｐ(ｘ,ｙ,ｔ)を得ると、公開鍵のうちｐ,ｒ,ｄを多項式生成部２６に送信し、３変数のランダムな多項式ｑ(ｘ,ｙ,ｔ)を生成させる（ＳＴ２７）。
【０１１９】
ここでは簡単のためにｑ(ｘ,ｙ,ｔ)を次のものとする。
【０１２０】
ｑ(ｘ,ｙ,ｔ)＝ｘｙ＋ｙ２＋３ｔ４＋１３ｔ３＋４ｔ２＋８ｔ＋４
以上の処理で得られたｍ(ｔ),ｆ(ｔ),ｐ(ｘ,ｙ,ｔ),ｑ(ｘ,ｙ,ｔ)と公開鍵である代数曲面Ｘ(ｘ,ｙ,ｔ)を利用し、暗号化部２４は、式(６)に従って暗号文Ｆ(ｘ,ｙ,ｔ)を計算し展開する（ＳＴ２８）。本実施形態の例であると、暗号文Ｆ(ｘ,ｙ,ｔ)は次のようになる。
【数７】
2005331656.tif 000009
【０１２１】
暗号化部２４は、この暗号文Ｆ(ｘ,ｙ,ｔ)を(必要ならば予め定められたフォーマットに合わせて変形し)暗号文出力部２７から出力し（ＳＴ２９）、暗号化処理を終了する。
【０１２２】
第２のバリエーションを本実施形態の暗号装置２０に適用する場合ｐ(ｘ,ｙ,ｔ)の次数条件がなくなるため、ｑ(ｘ,ｙ,ｔ)と同じ方法で生成することにより実現できる。
【０１２３】
第３のバリエーションは、本実施形態の暗号化処理に対して自然に成立する。第４のバリエーションは、平文埋め込み部２３において平文ｍを本実施形態と同様の方法でブロック分割し、ｍ(ｔ)の係数と、ｆ(ｔ)の係数の予め定められた一部の係数とに埋め込み、１変数既約多項式生成部２５においてｆ(ｔ)の残りの係数をランダムに設定することにより同様に成立する。
【０１２４】
第６のバリエーションは、平文埋め込み部２３において、平文を予め定められたハッシュ関数ｈを利用して式(vari ６)のように変換し、新たな平文ｍ’を作成する処理を新たに加えればそのまま成り立つ。
【０１２５】
（復号装置及び処理の流れ）
最後に本実施形態の復号装置の構成と処理の流れを図９に示すフローチャートに沿って図８に示す全体構成図を参照しながら示す。本実施形態の復号装置３０は、暗号文入力部３１、鍵入力部３２、復号部３３、セクション代入部３４、１変数多項式演算部３５、１変数多項式因数分解部３６、多項式抽出部３７、１変数多項式剰余演算部３８、平文展開部３９及び平文出力部４０を備えており、全体として図９に示す動作を実行するように、復号部３３により他の各部３１，３２，３４〜４０が制御されるものである。以下、具体的に説明する。
【０１２６】
復号装置３０は、暗号文入力部３１から暗号文Ｆ(ｘ,ｙ,ｔ)を取得し（ＳＴ３１）、鍵入力部３２から公開鍵Ｘ(ｘ,ｙ,ｔ)ｐ,ｒ,ｄと秘密鍵を取得することから（ＳＴ３２）、処理を開始する。ここで秘密鍵とは２つのセクションであり、鍵生成で示した式(１４)で定義されるセクションＤ１,Ｄ２を利用する。取得された暗号文と鍵情報は復号部３３に送られ、復号処理が開始される。
【０１２７】
復号部３３はまず、セクション代入部３４に暗号文Ｆ(ｘ,ｙ,ｔ)とセクションＤ１を送信する。セクション代入部３４は、Ｄ１をＦ(ｘ,ｙ,ｔ)に代入し、必要に応じて多項式演算部３５を利用することにより、以下のようなｈ１(ｔ)を得る（ＳＴ３３）。
【数８】
2005331656.tif 000010
【０１２８】
得られたｈ１(ｔ),ｈ２(ｔ)は、セクション代入部３４から復号部３３に送出される。復号部３３は、ｈ１(ｔ),ｈ２(ｔ)を多項式演算部３５に送信して引き算させ、その結果を１変数多項式因数分解部３６に送信して因数分解させることにより（ＳＴ３５）、式(１５)に示すような因数分解結果を得る。
【数９】
2005331656.tif 000011
【０１２９】
ここで、最大次数の因子として既約多項式ｆ(ｔ)が現れる。因数分解結果である式(１５)の右辺を多項式抽出部３７に送信し、最大次数を持つ因子としてｆ(ｔ)を抽出する（ＳＴ３６）。そこで、復号部３３は、ｆ(ｔ),ｈ１(ｔ)を剰余演算部３８に送る。剰余演算部３８は、ｈ１(ｔ)をｆ(ｔ)で除し、剰余として次の平文多項式ｍ(ｔ)を計算し（ＳＴ３７）、復号部３３に送信する。
【数１０】
2005331656.tif 000012
【０１３０】
復号部３３は、ｍ(ｔ)を平文展開部３９に送信する。平文展開部３９は、これを展開し平文ｍ＝０ｘ３１５７６３ｅｆ２５ｃ０４ｃ７９２ｅｆ１５１を得る（ＳＴ３８）。平文展開部３９は、この平文ｍを平文出力部４０から出力する（ＳＴ３９）。これにより、復号装置３０は復号処理を終了する。
【０１３１】
尚、第２のバリエーションにおける復号処理のアルゴリズムを図１１に示した。全体構成図は図１０であるが図８と平文展開部３９と復号部３３との間が双方向データ通信となっている点のみが異なっている。
【０１３２】
第２のバリエーションにおける復号処理は、前述した復号処理とほとんど同じなので異なるところのみを説明する。本復号処理では１変数既約多項式ｆ(ｔ)の候補が複数現れる可能性があるので、そのそれぞれについて以下の処理を行う。
【０１３３】
まず、復号処理と同様に剰余演算部３８を利用してｈ１(ｔ)をｆ(ｔ)で除し、剰余として平文多項式ｍ１(ｔ)を得る（ＳＴ３７’−１）。同様に剰余演算部３８を利用してｈ２(ｔ)をｆ(ｔ)で除し、剰余として平文多項式ｍ２(ｔ)を得る（ＳＴ３７’−２）。
【０１３４】
次に、復号部３３は、ｍ１(ｔ),ｍ２(ｔ)が等しいか否かをチェックする（ＳＴ３７’−３）。等しくない場合は正しくないｆ(ｔ)を取ってきてしまったことを意味するため、次候補のｆ(ｔ)で同様の操作を行う（ＳＴ３７’−４，ＳＴ３７’−５）。
【０１３５】
等しい場合はｍ１(ｔ)から復号処理と同様に平文展開部３９で平文ｍを展開し（ＳＴ３８’−１）、平文展開部３９においてチェックサムを確認することにより平文の妥当性をチェックする（ＳＴ３８’−２）。
【０１３６】
ここでチェックサムが正しくない場合は正しくないｆ(ｔ)で復号してしまったことを意味するので、再び復号部３３に戻り、次候補のｆ(ｔ)で同様の操作を繰り返す（ＳＴ３７’−４，ＳＴ３７’−５）。チェックサムが正しい場合は正しい復号が行われた可能性が極めて高くなるので平文出力部４０から平文を出力して終了する。
【０１３７】
尚、次候補のｆ(ｔ)を抽出する処理において次候補が無くなった場合は正しいｆ(ｔ)が得られなかったことを意味するため、エラーを出力して処理を終了する（ＳＴ３７’−６）。
【０１３８】
また、本復号処理においてはこの他にもｆ(ｔ)の全候補を同様の操作で復号し、２種類のチェックを通った平文が２つあった場合は、２つ出力するという実施形態も考えられる。これにより、２通りの平文があることを知った受信者はもう一度送信者に(異なる暗号文を生成して)送信してもらうか、内容からどちらが正しいか自分で判断する機会を与えることになる。また、勿論チェックサムの付いていない平文も少なくないためチェックサムを付けない実現形態もあり得る。その場合はｍ１(ｔ)＝ｍ２(ｔ)となった時点で正しい平文と見なし、そのような平文が複数あった場合はこれら複数の候補を全て出力する。
【０１３９】
第３のバリエーションは、本実施形態においても自然に成り立つ。第４のバリエーションは、復号処理の途中で求めたｆ(ｔ)を平文の一部として平文展開部３９に送り、平文展開部３９でｍ(ｔ)とｆ(ｔ)を合わせて平文ｍを展開することにより本実施形態においても成立する。第５のバリエーションは、本実施形態の後半に述べたｆ(ｔ)の候補が複数存在した場合の検証方法をそのまま毎回適用することで実施可能である。
【０１４０】
第６のバリエーションは、平文展開部３９においてまず、本実施形態と同様の手段で平文ｍ’を展開し、展開された平文ｍ’に対して（予め定められたハッシュ関数ｈを利用して）式(vari ６)を満たすことを確認することで実現できる。確認の結果、正しくない場合はエラーを出力し、正しい場合は、得られたメッセージｍを平文出力部４０に送信する。尚、本バリエーションは、第３のバリエーションと共に利用することも可能である。また本バリエーションは、例えば(vari ６)式に基づく確認をチェックサムと考えて実施することによって第２のバリエーションと共に利用することも可能である。
【０１４１】
以上で、第１の実施形態における本発明の鍵生成装置、暗号装置、復号装置の具体的構成の説明を終了する。
【０１４２】
上述したように本実施形態によれば、代数曲面Ｘ上の代数曲線（因子）のうちの２つのセクションＤ１,Ｄ２を秘密鍵に用いており、現代の数学で未解決の難問である代数曲面上の因子を求める求因子問題に安全性の根拠をおく公開鍵暗号方式の暗号装置２０、復号装置３０又は鍵生成装置１０を実現したので、量子計算機が出現しても安全性が確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成することができる。
【０１４３】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【０１４４】
本実施形態の公開鍵は、以下の４つである。
【０１４５】
１.素体の標数ｐ
２.Ｆｐ上の代数曲面Ｘのファイブレーション：Ｘ(ｘ,ｙ,ｔ)＝０
３.Ｆｐ上の１変数既約多項式ｆ(ｔ)の最小次数ｒ
４.(秘密鍵である)セクションにおける多項式ｕｘ(ｔ),ｕｙ(ｔ)の最大次数ｄ
秘密鍵は以下のセクションＤである。
【０１４６】
１.Ｆｐ上の代数曲面Ｘのセクション：Ｄ：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)
第２の実施形態は、第１の実施形態と比較すると、秘密鍵であるセクションが１つであることが大きく異なる。第２の実施形態は、このため秘密鍵のサイズが小さくなることは言うまでもなく、後述するように鍵生成の自由度が増えるという効果がある。
【０１４７】
（暗号化処理）
本実施形態における暗号化処理の概要を述べる。暗号処理は第１の実施形態とほぼ同じであるが、１つの暗号文Ｆ(ｘ,ｙ,ｔ)を生成した第１の実施形態とは異なり、第２の実施形態では２つの暗号文Ｆ１(ｘ,ｙ,ｔ),Ｆ２(ｘ,ｙ,ｔ)を生成する。
【０１４８】
具体的には、第２の実施形態は、共通のｆ(ｔ)を用いて、第１の実施形態と同様の手段で異なる２つのランダムな３変数多項式の組(ｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ))と(ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ))を生成して、以下の２つの暗号文Ｆ１(ｘ,ｙ,ｔ),Ｆ２(ｘ,ｙ,ｔ)を生成する。
【０１４９】
Ｆ１(ｘ,ｙ,ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ１(ｘ,ｙ,ｔ)＋Ｘ(ｘ,ｙ,ｔ)ｑ１(ｘ,ｙ,ｔ)
Ｆ２(ｘ,ｙ,ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ２(ｘ,ｙ,ｔ)＋Ｘ(ｘ,ｙ,ｔ)ｑ２(ｘ,ｙ,ｔ)
受信者は、暗号文Ｆ１(ｘ,ｙ,ｔ),Ｆ２(ｘ,ｙ,ｔ)を受けると、所有する秘密鍵Ｄを利用して次のように復号を行う。まず、セクションＤを暗号文Ｆ１(ｘ,ｙ,ｔ),Ｆ２(ｘ,ｙ,ｔ)に代入することにより第１の実施形態と同様の考え方で次の２式ｈ１(ｔ),ｈ２(ｔ)を求める。
【０１５０】
ｈ１(ｔ)＝Ｆ１(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ１(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)
ｈ２(ｔ)＝Ｆ２(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)＝ｍ(ｔ)＋ｆ(ｔ)ｐ２(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)
そして、２式を辺々引き算して次式ｈ１(ｔ)−ｈ２(ｔ)を計算する。
【０１５１】
ｈ１(ｔ)−ｈ２(ｔ)＝ｆ(ｔ){ｐ１(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)−ｐ２(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)}
しかる後、ｈ１(ｔ)−ｈ２(ｔ)を因数分解して、最大次数を持つ因数をｆ(ｔ)と定める。この後の処理は第１の実施形態と同じであるので説明を省略する。
【０１５２】
（鍵生成処理）
最後に本実施形態における鍵生成方法を説明する。本実施形態の鍵生成は第１の実施形態と同様にセクションＤをランダムに選び、それに対応したファイブレーションを計算することによって行う。
【０１５３】
但し、本実施形態では第１の実施形態と異なり１つのセクションを満たすように構成すれば良く、第１の実施形態よりも容易にしかも自由度の高い鍵が生成される。
【０１５４】
ここでは代数曲面のうち以下のような代数曲面を例にとって鍵生成方法を示す。
【０１５５】
Ｘ：ｙ２＝ｘ３＋ξ１(ｔ)ｘ２ｙ＋ξ２(ｔ)ｘ＋ξ３(ｔ)ｙ＋ξ４(ｔ)
ここでξ１(ｔ),ξ２(ｔ),ξ３(ｔ),ξ４(ｔ)は１変数多項式である。まず、素体の標数ｐを決める。このときｐは小さくても安全性に問題は生じない。さて、セクションＤを
Ｄ：(ｘ,ｙ,ｔ)＝(ｕｘ(ｔ),ｕｙ(ｔ),ｔ)
とおき、定数項以外の１変数多項式ξ１(ｔ),ξ２(ｔ),ξ３(ｔ)をランダムに定め、これらξ１(ｔ),ξ２(ｔ),ξ３(ｔ)とセクションＤを代数曲面Ｘに代入することで
ξ４(ｔ)＝ｕｙ(ｔ)２−ｕｘ(ｔ)３−ξ１(ｔ)ｕｘ(ｔ)２ｕｙ(ｔ)−ξ２(ｔ)ｕｘ(ｔ)−ξ３(ｔ)ｕｙ(ｔ)      …(１６)
によりξ４(ｔ)を得る。
【０１５６】
鍵生成方法は定数項を持つ全ての代数曲面に適用できる。この点も第１の実施形態にない効果である。
【０１５７】
最後にｄ及びｒを求める方法を示す。これらは復号方法から式(３)を、安全性の要請から式(５),(４)を満たさなければならないことが分かっている。まずdは鍵生成方法で２つのセクションが求まっているため、そのｕｘ(ｔ),ｕｙ(ｔ)の次数の最大値として決定する。ｒは例えば
ｒ＝(ｄｘ＋１＋ｄｙ＋１)ｄ＋ｄｔ 
によって定めても良い。
【０１５８】
また、第１の実施形態で述べた第１〜第５のバリエーションは本実施形態でも成立する。
【０１５９】
＜安全性の検討＞
以下ではこのように構成した本実施形態の公開鍵暗号の安全性に関して考察する。基本的に第１の実施形態における安全性の検討がそのまま本実施形態の安全性の検討となる。第１の実施形態と異なるのは暗号文が２つあることであり、この部分の安全性に関して考察を行う。暗号文Ｆ１(ｘ,ｙ,ｔ),Ｆ２(ｘ,ｙ,ｔ)の引き算を行うと以下のようになる。
【０１６０】
Ｆ１(ｘ,ｙ,ｔ)−Ｆ２(ｘ,ｙ,ｔ)＝ｆ(ｔ)(ｐ１(ｘ,ｙ,ｔ)−ｐ２(ｘ,ｙ,ｔ))−Ｘ(ｘ,ｙ,ｔ)(ｑ１(ｘ,ｙ,ｔ)−ｑ２(ｘ,ｙ,ｔ))
この式では、平文多項式ｍ(ｔ)が消去されるもののｑ１(ｘ,ｙ,ｔ)≠ｑ２(ｘ,ｙ,ｔ)であり、３変数多項式では一般に除法の定理が成り立たないことから、３変数多項式Ｘ(ｘ,ｙ,ｔ)で当該式を除しても、その剰余等からほとんど情報が得られない。
【０１６１】
（第２の実施形態の具体的な構成）
次に本実施形態の公開鍵暗号における鍵生成装置、暗号装置、復号装置の具体的な構成とそのアルゴリズムを示す。
【０１６２】
（鍵生成装置及び処理の流れ）
本実施形態の鍵生成装置の構成と処理の流れを図１２に示すフローチャートに沿って図２に示す全体構成図を参照しながら示す。また本実施形態では前述した代数曲面
Ｘ：ｙ２＝ｘ３＋ξ１(ｔ)ｘ２ｙ＋ξ２(ｔ)ｘ＋ξ３(ｔ)ｙ＋ξ４(ｔ)
を前提とした構成例を示している。また、理解の助けとして具体的な数値や式を示すが、これはあくまでも理解を助ける簡明な例であって、実際に使われる十分な安全性を持つ暗号化とは(特に多項式の次数などの点で)必ずしも一致していない。
【０１６３】
本実施形態の鍵生成装置１０は、鍵生成処理開始の指令が外部装置等から制御部１１に伝えられることで開始される。当該指令が制御部１１に伝わると（ＳＴ４１）、制御部１１では素数生成部１２に素数生成の要請を行う。素数生成はランダムに素数を発生させても良いが、ここでは大きな素数を使う必要はないので、高々６ビット程度の素数からランダム若しくは(出力順を予め決めておくなどの手段で)恣意的に選択するか、当該鍵生成装置１０で予め定まっている素数を利用してもよい。ここでは素数ｐ＝１７が生成されたとする（ＳＴ４２）。
【０１６４】
次に、制御部１１は、セクション生成部１３に素数ｐを送信し、セクション生成部１３ではセクションの生成を開始する。まず素数ｐを多項式生成部１４に送信し生成を繰り返し要請し、１変数多項式ξ１(ｔ)(＝ｔ＋１),ξ２(ｔ)(＝−ｔ２＋１４),ξ３(ｔ)(＝ｔ２＋３ｔ＋６)を得る（ＳＴ４３）。
【０１６５】
多項式生成部１４でのランダムな多項式の作り方は第１の実施形態と同様である。制御部１１は、これらξ１(ｔ),ξ２(ｔ),ξ３(ｔ)を得たなら、同様に(セクションの要素となる)ランダムな１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)の生成処理を行いｕｘ(ｔ)(＝ｔ−１),ｕｙ(ｔ)(＝ｔ２＋２)を得る（ＳＴ４４）。しかる後、制御部１１は、これらξ１(ｔ),ξ２(ｔ),ξ３(ｔ),ｕｘ(ｔ),ｕｙ(ｔ)を代数曲面生成部１６へ送信する。代数曲面生成部１６は、式(１６)によってξ４(ｔ)を１変数多項式演算部１５を繰り返し使うことによって求める。実際この例では以下のようにξ４(ｔ)を求める。
【０１６６】
ξ４(ｔ)＝(ｔ２＋２)２＋１６(ｔ＋１６)３＋１６(ｔ＋１)(ｔ＋１６)２(ｔ２＋２)＋１６(１６ｔ２＋１４)(ｔ＋１６)＋１６(ｔ２＋３ｔ＋６)(ｔ２＋２)
代数曲面生成部１６は、得られたξ４(ｔ)を制御部１１に送信する。以上の操作で、公開鍵である代数曲面ＸのファイブレーションＸ(ｘ,ｙ,ｔ)と、秘密鍵であるセクションＤとが以下の式(１７)及び式(１８)に示すように得られる（ＳＴ４５）。
【数１１】
2005331656.tif 000013
【０１６７】
次に、セクションＤに含まれる一変数多項式における次数の最大値をｄとする（ＳＴ４６）。ここではｄ＝２とする。次に制御部１１では、ｒを一定の範囲の中から適当な自然数を選び１変数既約多項式の次数ｒとする（ＳＴ４７）。次数ｒは次のように定めても良い。
【０１６８】
ｒ＝(ｄｘ＋１＋ｄｙ＋１)ｄ＋ｄｔ＝(３＋４)＊２＋５＝１９  
ここでは簡単のためｒ＝１５とする。
【０１６９】
＜第１のバリエーション＞
次に、第１の実施形態と同様に成り立つとした第１のバリエーションを実施する鍵生成装置の処理の流れを図１３に示すフローチャートに沿って図４に示す全体構成図を参照しながら示す。ここではｐ,ｒ,ｄを固定するとし、ほとんど実施形態と同じであるので異なるところのみを説明するに留める。まず本バリエーションによる実施形態では素数ｐが固定であるため、素数生成部１２の代わりに固定パラメータ格納部１８が設けられ、その中に入っているｐを読み込む処理（ＳＴ４２”）が素数生成処理と置き換わる。
【０１７０】
ｐを読み込んだ後、実施形態と同様にξ１(ｔ),ξ２(ｔ),ξ３(ｔ)をランダムに生成し、固定パラメータ格納部１８からｒ,ｄを読み込んだ後（ＳＴ４４”−１）、最大次数がｄとなるように１変数多項式生成部１４を利用して１変数多項式ｕｘ(ｔ),ｕｙ(ｔ)をランダムに生成する（ＳＴ４４”−２）。以下では実施形態と同様の処理を行ない（ＳＴ４５”）、鍵を生成する。できた鍵を鍵出力部１７に送り、鍵出力部１７は公開鍵と秘密鍵を出力する。
【０１７１】
（暗号装置及び処理の流れ）
次に本実施形態の暗号装置の構成と処理の流れを図１４に示すフローチャートに沿って図６に示す全体構成図を参照しながら示す。本実施形態の暗号装置２０は平文入力部２１から平文ｍを取得し、公開鍵入力部２２から公開鍵Ｘ(ｘ,ｙ,ｔ)ｐ,ｒ,ｄを取得することから処理を開始する。ここで、公開鍵を鍵生成処理の例として生成された
１.ｐ＝１７
２.Ｆ17上の代数曲面Ｘのファイブレーション：
【数１２】
2005331656.tif 000014
【０１７２】
３.Ｆｐ上の１変数既約多項式ｆ(ｔ)の最小次数ｒ＝１５
４.(秘密鍵である)セクションにおける多項式ｕｘ(ｔ),ｕｙ(ｔ)の最大次数ｄ＝２
を利用する。
【０１７３】
始めに、平文入力部２１から平文が入力され（ＳＴ２１）、公開鍵入力部２２から公開鍵が入力される（ＳＴ２２）。入力された公開鍵のうち１変数既約多項式ｆ(ｔ)の最小次数であるｒ＝１５と素体の標数ｐ＝１７は取得され（ＳＴ２３），平文埋め込み部２３に送られる。平文埋め込み部２３では、別途、平文入力部２１から送信された平文ｍを送られたｐのビット長よりも１小さいビット長に平文を分割する。この場合は(ｐ＝１７であるから)４ビットに分割することができる。例えば平文ｍを１６進表示で“ｍ＝０ｘｂ２５ｆ０４ｃ７９２ｅｆ１５１”とするとこれらが４ビット毎に分割され、平文多項式ｍ(ｔ)の係数として次式に示すように埋め込まれる（ＳＴ２４）。
【０１７４】
ｍ(ｔ)＝１１ｔ１４＋２ｔ１３＋５ｔ１２＋１５ｔ１１＋０ｔ１０＋４ｔ９＋１２ｔ８＋７ｔ７＋９ｔ６＋２ｔ５＋１４ｔ４＋１５ｔ３＋ｔ２＋５ｔ＋１
平文埋め込み部２３では平文多項式ｍ(ｔ)を暗号化部２４に送信する。一方で、公開鍵入力部２２も暗号化部２４に入力された公開鍵を送信する。
【０１７５】
暗号化部２４は、平文多項式と公開鍵を受信すると、公開鍵のうちｒとｐを１変数既約多項式生成部２５に送信する。１変数既約多項式生成部２５は、ｒ次以上の１変数既約多項式ｆ(ｔ)をランダムに生成し（ＳＴ２５）、得られたｆ(ｔ)を暗号化部２４に返信する。
【０１７６】
ここで既約多項式の生成はｒ次以上の多項式をランダムに生成し、既約性判定を１変数多項式が既約多項式となるまで繰り返すことにより行う。ここでは、１５次の既約多項式として次式のｆ(ｔ)を選択したとする。
【０１７７】
ｆ(ｔ)＝ｔ１５＋１３ｔ１４＋７ｔ１３＋８ｔ１２＋１０ｔ９＋ｔ８＋５ｔ７＋１２ｔ６＋７ｔ５＋７ｔ４＋２ｔ３＋ｔ２＋２ｔ＋７
暗号化部２４は、１変数既約多項式ｆ(ｔ)を得ると、多項式生成部２６にｐを送信する。多項式生成部２６は、３変数多項式の各項が次数に関する関係式(３)を満たし、条件(４)を満たすような項が存在するよう２つの相異なるランダムな３変数多項式ｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)を生成する（ＳＴ２６”）。ここでは簡単のためランダムな多項式ｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)を次のものとする。
【数１３】
2005331656.tif 000015
【０１７８】
この各項は式(３)に示された次数の関係式（(ｅｘ＋ｅｙ)ｄ＋ｅｔ＜１５）を満たしており、それぞれ４ｘ４ｙ３,３ｘ４ｙ３という条件(４)を満たす項が存在する。なお、多項式生成部２６は、生成した３変数多項式ｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)を暗号化部２４に返信する。
【０１７９】
暗号化部２４は、これら３変数多項式ｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)を得ると、公開鍵のうちｐ,ｒ,ｄを多項式生成部２６に送信し、２つの相異なるランダムな３変数多項式ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)を生成させる（ＳＴ２７”）。ここでは簡単のためにｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)を次のものとする。
【０１８０】
ｑ１(ｘ,ｙ,ｔ)＝ｘｙ＋ｙ２＋３ｔ４＋１３ｔ３＋４ｔ２＋８ｔ＋４
ｑ２(ｘ,ｙ,ｔ)＝ｔ３ｘｙ＋ｔｘ２＋４ｔ３＋１１ｔ２＋７
以上の処理で得られたｍ(ｔ),ｆ(ｔ),ｐ１(ｘ,ｙ,ｔ),ｑ１(ｘ,ｙ,ｔ)と公開鍵である代数曲面Ｘ(ｘ,ｙ,ｔ)を利用し、式(６)に従って暗号文Ｆ１(ｘ,ｙ,ｔ)を計算し展開する（ＳＴ２８”−１）。なお、ここでは式(６)はｐ(ｘ,ｙ,ｔ)をｐ１(ｘ,ｙ,ｔ)に、ｑ(ｘ,ｙ,ｔ)をｑ１(ｘ,ｙ,ｔ)にそれぞれ読み替えて適用する。本実施形態の例であるとＦ１(ｘ,ｙ,ｔ)は次のようになる。
【数１４】
2005331656.tif 000016
【０１８１】
同様にｍ(ｔ)ｆ(ｔ)ｐ２(ｘ,ｙ,ｔ)ｑ２(ｘ,ｙ,ｔ)と公開鍵である代数曲面Ｘ(ｘ,ｙ,ｔ)を利用して暗号文Ｆ２(ｘ,ｙ,ｔ)を計算し展開する（ＳＴ２８”−２）。本実施形態の例であるとＦ２(ｘ,ｙ,ｔ)は次のようになる。
【数１５】
2005331656.tif 000017
【０１８２】
暗号化部２４は、これら暗号文Ｆ１(ｘ,ｙ,ｔ)Ｆ２(ｘ,ｙ,ｔ)を(必要ならば予め定められたフォーマットに合わせて変形し)暗号文出力部２７から出力することにより（ＳＴ２９”）、暗号化処理を終了する。
【０１８３】
第２のバリエーションを本実施形態の暗号装置２０に適用する場合ｐ１(ｘ,ｙ,ｔ),ｐ２(ｘ,ｙ,ｔ)の次数条件がなくなるため、ｑ１(ｘ,ｙ,ｔ),ｑ２(ｘ,ｙ,ｔ)と同じ方法で生成することにより実現できる。
【０１８４】
第３のバリエーションは、本実施形態の暗号化処理に対して自然に成立する。第４のバリエーションは、平文埋め込み部２３において平文ｍを本実施形態と同様の方法でブロック分割し、ｍ(ｔ)の係数と、ｆ(ｔ)の係数の予め定められた一部の係数とに埋め込み、１変数既約多項式生成部２５においてｆ(ｔ)の残りの係数をランダムに設定することにより同様に成立する。  第６のバリエーションは、平文埋め込み部２３において、平文を予め定められたハッシュ関数ｈを利用して式(vari ６)のように変換し、新たな平文ｍ’を作成する処理を新たに加えればそのまま成り立つ。
【０１８５】
（復号装置及び処理の流れ）
最後に本実施形態の復号装置の構成と処理の流れを図１５に示すフローチャートに沿って図８に示す全体構成図を参照しながら示す。本実施形態の復号装置３０は暗号文入力部３１から暗号文Ｆ(ｘ,ｙ,ｔ)を取得し（ＳＴ３１）、鍵入力部３２から公開鍵Ｘ(ｘ,ｙ,ｔ)ｐ,ｒ,ｄと秘密鍵を取得することから（ＳＴ３２）、処理を開始する。ここで秘密鍵とは１つのセクションであり、鍵生成で示した式(１８)で定義されるセクションＤを利用する。取得された暗号文と鍵情報は復号部３３に送られ、復号処理が開始される。
【０１８６】
復号部３３はまず、セクション代入部３４に暗号文Ｆ１(ｘ,ｙ,ｔ),Ｆ２(ｘ,ｙ,ｔ)とセクションＤを送信し、ＤをＦ１(ｘ,ｙ,ｔ)に代入し、必要に応じて多項式演算部３５を利用することにより、以下のようなｈ１(ｔ)を得る（ＳＴ３３”）。
【数１６】
2005331656.tif 000018
【０１８７】
ｈ１(ｔ),ｈ２(ｔ)を得た復号部３３はｈ１(ｔ),ｈ２(ｔ)を多項式演算部３５に送信して引き算させ、その結果を１変数多項式因数分解部３６に送信して因数分解させることにより（ＳＴ３５）、式(１９)に示す因数分解結果を得る。
【数１７】
2005331656.tif 000019
【０１８８】
ここで、最大次数の因子として既約多項式ｆ(ｔ)が現れる。因数分解結果である式(１９)の右辺を多項式抽出部３７に送信し、最大次数を持つ因子としてｆ(ｔ)を抽出する（ＳＴ３６）。そこで、復号部３３はｆ(ｔ),ｈ１(ｔ)を剰余演算部３８に送り、剰余演算部３８ではｈ１(ｔ)をｆ(ｔ)で除し、剰余として、以下のような平文多項式ｍ(ｔ)を計算し（ＳＴ３７）、復号部３３に送信する。
【数１８】
2005331656.tif 000020
【０１８９】
復号部３３ではｍ(ｔ)を平文展開部３９に送信する。平文展開部３９は、これを展開し平文ｍ＝０ｘｂ２５ｆ０４ｃ７９２ｅｆ１５１を得る（ＳＴ３８）。平文展開部３９は、この平文ｍを平文出力部４０から出力する（ＳＴ３９）。これにより、復号装置３０は、復号処理を終了する。
【０１９０】
尚、第１の実施形態で言及した第２のバリエーションにおける復号装置３０の全体構成図を図１０に示し、復号処理のアルゴリズムを図１６に示したが、第１の実施形態のそれに対して自明な変形（ＳＴ３３”及びＳＴ３４”等）を施しているに過ぎないのでここでは詳しい説明を省略する。
【０１９１】
第３のバリエーションは、本実施形態においても自然に成り立つ。第４のバリエーションは、復号処理の途中で求めたｆ(ｔ)を平文の一部として平文展開部３９に送り、平文展開部３９でｍ(ｔ)とｆ(ｔ)を合わせて平文ｍを展開することにより本実施形態においても成立する。第５のバリエーションは、本実施形態（もしくは第１の実施形態）の第２のバリエーションにおけるｆ(ｔ)の候補が複数存在した場合の検証方法をそのまま毎回適用することで実施可能である。
【０１９２】
第６のバリエーションは、平文展開部３９においてまず、本実施形態と同様の手段で平文ｍ’を展開し、展開された平文ｍ’に対して（予め定められたハッシュ関数ｈを利用して）式(vari ６)を満たすことを確認することで実現できる。確認の結果、正しくない場合はエラーを出力し、正しい場合は、得られたメッセージｍを平文出力部４０に送信する。尚、本バリエーションは、第３のバリエーションと共に利用することも可能である。また本バリエーションは、例えば(vari ６)式に基づく確認をチェックサムと考えて実施することによって第２のバリエーションと共に利用することも可能である。
【０１９３】
以上で、第２の実施形態における本発明の鍵生成装置１０、暗号装置２０、復号装置３０の具体的構成の説明を終了する。
【０１９４】
上述したように本実施形態によれば、第１の実施形態とは異なり、１つのセクションＤを秘密鍵に用いているが、第１の実施形態と同様に求因子問題に安全性の根拠をおく公開鍵暗号方式の暗号装置２０、復号装置３０又は鍵生成装置１０を実現したので、第１の実施形態と同様に、量子計算機が出現しても安全性が確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成することができる。
【０１９５】
また、第２の実施形態によれば、第１の実施形態と異なり１つのセクションＤを満たすように構成すれば良いので、第１の実施形態よりも容易にしかも自由度の高い鍵を生成することができる。
【０１９６】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(ＣＤ−ＲＯＭ、ＤＶＤなど)、光磁気ディスク(ＭＯ)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０１９７】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０１９８】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のＭＷ(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行しても良い。
【０１９９】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【０２００】
また、記憶媒体は１つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０２０１】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０２０２】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０２０３】
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０２０４】
例えば、上記各実施形態では、鍵生成装置１０、暗号装置２０及び復号装置３０を個別の装置として説明したが、これに限らず、各装置１０，２０，３０のうち、例えば暗号装置２０と復号装置３０とを組合せて暗復号装置としたり、鍵生成装置１０と復号装置３０とを組合せた鍵生成機能付き復号装置のように、任意の２台を組合せてもよく、また、３台を組合せても良い。
【図面の簡単な説明】
【０２０５】
【図１】本発明の各実施形態における代数曲面を説明するための模式図である。
【図２】本発明の第１の実施形態における鍵生成装置の全体構成図である。
【図３】同実施形態における鍵生成装置の処理の流れを説明するためのフローチャートである。
【図４】同実施形態の鍵生成装置における第１のバリエーションの全体構成図である。
【図５】同実施形態における鍵生成装置の第１のバリエーションの処理の流れを説明するためのフローチャートである。
【図６】同実施形態における暗号装置の全体構成図である。
【図７】同実施形態における暗号装置の処理の流れを説明するためのフローチャートである。
【図８】同実施形態における復号装置の全体構成図である。
【図９】同実施形態における復号装置の処理の流れを説明するためのフローチャートである。
【図１０】同実施形態における復号装置の第２のバリエーションの全体構成図である。
【図１１】同実施形態における復号装置の第２のバリエーションの処理の流れを説明するためのフローチャートである。
【図１２】本発明の第２の実施形態に係る鍵生成装置の処理の流れを説明するためのフローチャートである。
【図１３】同実施形態における鍵生成装置の第１のバリエーションの処理の流れを説明するためのフローチャートである。
【図１４】同実施形態における暗号装置の処理の流れを説明するためのフローチャートである。
【図１５】同実施形態における復号装置の処理の流れを説明するためのフローチャートである。
【図１６】同実施形態における復号装置の第２のバリエーションの処理の流れを説明するためのフローチャートである。
【符号の説明】
【０２０６】
１０…鍵生成装置、１１…制御部、１２…素数生成部、１３…セクション生成部、１４…１変数多項式生成部、１５，３５…１変数多項式演算部、１６…代数曲面生成部、１７…鍵出力部、１８…固定パラメータ格納部、２０…暗号装置、２１…平文入力部、２２…公開鍵入力部、２３…平文埋め込み部、２４…暗号化部、２５…１変数既約多項式生成部、２６…多項式生成部、２７…暗号文出力部、３０…復号装置、３１…暗号文入力部、３２…鍵入力部、３３…復号部、３４…セクション代入部、３６…１変数多項式因数分解部、３７…多項式抽出部、３８…１変数多項式剰余演算部、３９…平文展開部、４０…平文出力部。
【図１】
2005331656.tif 000021
【図２】
2005331656.tif 000022
【図３】
2005331656.tif 000023
【図４】
2005331656.tif 000024
【図５】
2005331656.tif 000025
【図６】
2005331656.tif 000026
【図７】
2005331656.tif 000027
【図８】
2005331656.tif 000028
【図９】
2005331656.tif 000029
【図１０】
2005331656.tif 000030
【図１１】
2005331656.tif 000031
【図１２】
2005331656.tif 000032
【図１３】
2005331656.tif 000033
【図１４】
2005331656.tif 000034
【図１５】
2005331656.tif 000035
【図１６】
2005331656.tif 000036