(57)【特許請求の範囲】
【請求項１】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)に基づいて、予めメッセージｍを暗号化するための暗号装置であって、
前記メッセージｍと乱数ｒを連結した平文Ｍを１変数tで次数ｌ-１以下の平文多項式Ｍ(t)の係数として埋め込む平文埋め込み手段と、
前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段と、
次数ｌ以上のランダムな１変数既約多項式ｆ(t)を生成する１変数既約多項式生成手段と、
前記平文多項式Ｍ(t)に対し、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式Ｍ(t)から暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とする暗号装置。
【請求項２】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)に基づいて、予めメッセージｍを暗号化するための暗号装置であって、
前記メッセージｍと乱数ｒを連結した平文Ｍを１変数tで次数ｌ-１以下の平文多項式Ｍ(t)と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込む平文埋め込み手段と、
前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段と、
前記１変数既約多項式ｆ(t)の候補の各係数のうち、前記平文Ｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(t)を生成する１変数既約多項式生成手段と、
前記平文多項式Ｍ(t)に対し、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式Ｍ(t)から暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段と
を備えたことを特徴とする暗号装置。
【請求項３】
請求項１又は請求項２に記載の暗号装置において、
前記多項式生成手段は、前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成することを特徴とする暗号装置。
【請求項４】
メッセージｍと乱数ｒを連結した平文Ｍが１変数tで次数(ｌ-１)以下の平文多項式Ｍ(t)の係数として埋め込まれた平文多項式Ｍ(t)に対し、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)と、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式Ｍ(t)から生成された暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つのセクションＤ1,Ｄ2に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置であって、
前記入力された暗号文Ｆに対し、前記各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成するセクション代入手段と、
前記各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る多項式減算手段と、
前記減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する因数分解手段と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する多項式抽出手段と、
前記１変数多項式ｈ1(t)を前記既約多項式ｆ(t)で除算し、剰余として平文多項式Ｍ(t)を得る剰余演算手段と、
前記剰余演算手段で得られた平文多項式Ｍ(t)の係数から平文Ｍを抽出する平文抽出手段と、
前記平文抽出手段により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算するハッシュ演算手段と、
前記ハッシュ演算手段により得られたハッシュ値Ｈ(M)に基づいて、３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段と、
前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とに基づいて、前記暗号化処理と同じ処理により、暗号文Ｆ’＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を再現する暗号文再現手段と、
前記入力された暗号文Ｆと前記再現された暗号文Ｆ’とが一致するか否かを判定する暗号文判定手段と、
前記暗号文判定手段による判定結果が一致の場合、前記平文Ｍ又は前記メッセージｍを出力する平文出力手段と、
前記暗号文判定手段による判定結果が否の場合、暗号文無効情報を出力する無効出力手段と
を備えたことを特徴とする復号装置。
【請求項５】
メッセージｍと乱数ｒを連結した平文Ｍが１変数tで次数(ｌ-１)以下の平文多項式Ｍ(t)の係数と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込まれた平文多項式Ｍ(t)に対し、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)と、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式Ｍ(t)から生成された暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つのセクションＤ1,Ｄ2に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置であって、
前記入力された暗号文Ｆに対し、前記各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成するセクション代入手段と、
前記各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る多項式減算手段と、
前記減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する因数分解手段と、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する多項式抽出手段と、
前記１変数多項式ｈ1(t)を前記既約多項式ｆ(t)で除算し、剰余として平文多項式Ｍ(t)を得る剰余演算手段と、
前記剰余演算手段で得られた平文多項式Ｍ(t)の係数と前記多項式抽出手段で得られた既約多項式ｆ(t)の一部の係数とから平文Ｍを抽出する平文抽出手段と、
前記平文抽出手段により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算するハッシュ演算手段と、
前記ハッシュ演算手段により得られたハッシュ値Ｈ(M)に基づいて３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段と、
前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とに基づいて、前記暗号化処理と同じ処理により、暗号文Ｆ’＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を再現する暗号文再現手段と、
前記入力された暗号文Ｆと前記再現された暗号文Ｆ’とが一致するか否かを判定する暗号文判定手段と、
前記暗号文判定手段による判定結果が一致を示す場合、前記平文Ｍ又は前記メッセージｍを出力する平文出力手段と、
前記暗号文判定手段による判定結果が否の場合、暗号文無効情報を出力する無効出力手段と
を備えたことを特徴とする復号装置。
【請求項６】
請求項４又は請求項５に記載の復号装置において、
前記多項式生成手段は、前記平文Ｍのハッシュ値Ｈ(M)に基づいて前記多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成することを特徴とする復号装置。
【請求項７】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)に基づいて、予めメッセージｍを暗号化するための暗号装置のプログラムであって、
前記暗号装置のコンピュータを、
入力されたメッセージｍを一時的にメモリに保持して送出する手段、
乱数ｒを生成する手段、
前記送出されたメッセージｍと前記生成された乱数ｒとを連結した平文Ｍを１変数tで次数ｌ-１以下の平文多項式Ｍ(t)の係数として埋め込む平文埋め込み手段、
前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段、
次数ｌ以上のランダムな１変数既約多項式ｆ(t)を生成する１変数既約多項式生成手段、
前記平文多項式Ｍ(t)に対し、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式Ｍ(t)から暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項８】
復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)に基づいて、予めメッセージｍを暗号化するための暗号装置のプログラムであって、
前記暗号装置のコンピュータを、
入力されたメッセージｍを一時的にメモリに保持して送出する手段、
乱数ｒを生成する手段、
前記送出されたメッセージｍと前記生成された乱数ｒを連結した平文Ｍを１変数tで次数ｌ-１以下の平文多項式Ｍ(t)と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込む平文埋め込み手段、
前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段、
前記１変数既約多項式ｆ(t)の候補の各係数のうち、前記平文Ｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(t)を生成する１変数既約多項式生成手段、
前記平文多項式Ｍ(t)に対し、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式Ｍ(t)から暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段、
として機能させるためのプログラム。
【請求項９】
請求項７又は請求項８に記載のプログラムにおいて、
前記多項式生成手段は、前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成することを特徴とするプログラム。
【請求項１０】
メッセージｍと乱数ｒを連結した平文Ｍが１変数tで次数(ｌ-１)以下の平文多項式Ｍ(t)の係数として埋め込まれた平文多項式Ｍ(t)に対し、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)と、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式Ｍ(t)から生成された暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つのセクションＤ1,Ｄ2に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置のプログラムであって、
前記復号装置のコンピュータを、
前記入力された暗号文Ｆに対し、前記各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成するセクション代入手段、
前記各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る多項式減算手段、
前記減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する因数分解手段、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する多項式抽出手段、
前記１変数多項式ｈ1(t)を前記既約多項式ｆ(t)で除算し、剰余として平文多項式Ｍ(t)を得る剰余演算手段、
前記剰余演算手段で得られた平文多項式Ｍ(t)の係数から平文Ｍを抽出する平文抽出手段、
前記平文抽出手段により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算してメモリに保持するハッシュ演算手段、
前記メモリ内のハッシュ値Ｈ(M)に基づいて、３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段、
前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とに基づいて、前記暗号化処理と同じ処理により、暗号文Ｆ’＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を再現する暗号文再現手段、
前記入力された暗号文Ｆと前記再現された暗号文Ｆ’とが一致するか否かを判定する暗号文判定手段、
前記暗号文判定手段による判定結果が一致の場合、前記平文Ｍ又は前記メッセージｍを出力する平文出力手段、
前記暗号文判定手段による判定結果が否の場合、暗号文無効情報を出力する無効出力手段、
として機能させるためのプログラム。
【請求項１１】
メッセージｍと乱数ｒを連結した平文Ｍが１変数tで次数(ｌ-１)以下の平文多項式Ｍ(t)の係数と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込まれた平文多項式Ｍ(t)に対し、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)と、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式Ｍ(t)から生成された暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つのセクションＤ1,Ｄ2に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置のプログラムであって、
前記復号装置のコンピュータを、
前記入力された暗号文Ｆに対し、前記各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成するセクション代入手段、
前記各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る多項式減算手段、
前記減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する因数分解手段、
因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する多項式抽出手段、
前記１変数多項式ｈ1(t)を前記既約多項式ｆ(t)で除算し、剰余として平文多項式Ｍ(t)を得る剰余演算手段、
前記剰余演算手段で得られた平文多項式Ｍ(t)の係数と前記多項式抽出手段で得られた既約多項式ｆ(t)の一部の係数とから平文Ｍを抽出する平文抽出手段、
前記平文抽出手段により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算してメモリに保持するハッシュ演算手段、
前記メモリ内のハッシュ値Ｈ(M)に基づいて３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段、
前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とに基づいて、前記暗号化処理と同じ処理により、暗号文Ｆ’＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を再現する暗号文再現手段、
前記入力された暗号文Ｆと前記再現された暗号文Ｆ’とが一致するか否かを判定する暗号文判定手段、
前記暗号文判定手段による判定結果が一致を示す場合、前記平文Ｍ又は前記メッセージｍを出力する平文出力手段、
前記暗号文判定手段による判定結果が否の場合、暗号文無効情報を出力する無効出力手段、
として機能させるためのプログラム。
【請求項１２】
請求項１０又は請求項１１に記載のプログラムにおいて、
前記多項式生成手段は、前記平文Ｍのハッシュ値Ｈ(M)に基づいて前記多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成することを特徴とするプログラム。
【請求項１３】
平文埋め込み手段、多項式生成手段、１変数既約多項式生成手段及び暗号化手段を備え、復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)に基づいて、予めメッセージｍを暗号化するための暗号装置が実行する暗号方法であって、
前記平文埋め込み手段が、前記メッセージｍと乱数ｒを連結した平文Ｍを１変数ｔで次数ｌ−１以下の平文多項式Ｍ(t)の係数として埋め込む平文埋め込み工程と、
前記多項式生成手段が、前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成工程と、
前記１変数既約多項式生成手段が、次数ｌ以上のランダムな１変数既約多項式ｆ(t)を生成する１変数既約多項式生成工程と、
前記暗号化手段が、前記平文多項式Ｍ(t)に対し、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式Ｍ(t)から暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とする暗号方法。
【請求項１４】
平文埋め込み手段、多項式生成手段、１変数既約多項式生成手段及び暗号化手段を備え、復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)に基づいて、予めメッセージｍを暗号化するための暗号装置が実行する暗号方法であって、
前記平文埋め込み手段が、前記メッセージｍと乱数ｒを連結した平文Ｍを１変数ｔで次数ｌ−１以下の平文多項式Ｍ(t)と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込む平文埋め込み工程と、
前記多項式生成手段が、前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成工程と、
前記１変数既約多項式生成手段が、前記１変数既約多項式ｆ(t)の候補の各係数のうち、前記平文Ｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(t)を生成する１変数既約多項式生成工程と、
前記暗号化手段が、前記平文多項式Ｍ(t)に対し、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式Ｍ(t)から暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化工程と
を備えたことを特徴とする暗号方法。
【請求項１５】
請求項１３又は請求項１４に記載の暗号方法において、
前記多項式生成工程は、前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成することを特徴とする暗号方法。
【請求項１６】
メッセージｍと乱数ｒを連結した平文Ｍが１変数ｔで次数(ｌ−１)以下の平文多項式Ｍ(t)の係数として埋め込まれた平文多項式Ｍ(t)に対し、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)と、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式Ｍ(t)から生成された暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
セクション代入手段、多項式減算手段、因数分解手段、多項式抽出手段、剰余演算手段、平文抽出手段、ハッシュ演算手段、多項式生成手段、暗号文再現手段、暗号文判定手段、平文出力手段及び無効出力手段を備え、予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つのセクションＤ1,Ｄ2に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置が実行する復号方法であって、
前記セクション代入手段が、前記入力された暗号文Ｆに対し、前記各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成するセクション代入工程と、
前記多項式減算手段が、前記各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る多項式減算工程と、
前記因数分解手段が、前記減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する因数分解工程と、
前記多項式抽出手段が、因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する多項式抽出工程と、
前記剰余演算手段が、前記１変数多項式ｈ1(t)を前記既約多項式ｆ(t)で除算し、剰余として平文多項式Ｍ(t)を得る剰余演算工程と、
前記平文抽出手段が、前記剰余演算工程で得られた平文多項式Ｍ(t)の係数から平文Ｍを抽出する平文抽出工程と、
前記ハッシュ演算手段が、前記平文抽出工程により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算するハッシュ演算工程と、
前記多項式生成手段が、前記ハッシュ演算工程により得られたハッシュ値Ｈ(M)に基づいて、３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成工程と、
前記暗号文再現手段が、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とに基づいて、前記暗号化処理と同じ処理により、暗号文Ｆ’＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を再現する暗号文再現工程と、
前記暗号文判定手段が、前記入力された暗号文Ｆと前記再現された暗号文Ｆ’とが一致するか否かを判定する暗号文判定工程と、
前記平文出力手段が、前記暗号文判定工程による判定結果が一致の場合、前記平文Ｍ又は前記メッセージｍを出力する平文出力工程と、
前記無効出力手段が、前記暗号文判定工程による判定結果が否の場合、暗号文無効情報を出力する無効出力工程と
を備えたことを特徴とする復号方法。
【請求項１７】
メッセージｍと乱数ｒを連結した平文Ｍが１変数ｔで次数(ｌ−１)以下の平文多項式Ｍ(t)の係数と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込まれた平文多項式Ｍ(t)に対し、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)と、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式Ｍ(t)から生成された暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、
セクション代入手段、多項式減算手段、因数分解手段、多項式抽出手段、剰余演算手段、平文抽出手段、ハッシュ演算手段、多項式生成手段、暗号文再現手段、暗号文判定手段、平文出力手段及び無効出力手段を備え、予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つのセクションＤ1,Ｄ2に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置が実行する復号方法であって、
前記セクション代入手段が、前記入力された暗号文Ｆに対し、前記各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成するセクション代入工程と、
前記多項式減算手段が、前記各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る多項式減算工程と、
前記因数分解手段が、前記減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する因数分解工程と、
前記多項式抽出手段が、因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する多項式抽出工程と、
前記剰余演算手段が、前記１変数多項式ｈ1(t)を前記既約多項式ｆ(t)で除算し、剰余として平文多項式Ｍ(t)を得る剰余演算工程と、
前記平文抽出手段が、前記剰余演算工程で得られた平文多項式Ｍ(t)の係数と前記多項式抽出工程で得られた既約多項式ｆ(t)の一部の係数とから平文Ｍを抽出する平文抽出工程と、
前記ハッシュ演算手段が、前記平文抽出工程により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算するハッシュ演算工程と、
前記多項式生成手段が、前記ハッシュ演算工程により得られたハッシュ値Ｈ(M)に基づいて３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成工程と、
前記暗号文再現手段が、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とに基づいて、前記暗号化処理と同じ処理により、暗号文Ｆ’＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を再現する暗号文再現工程と、
前記暗号文判定手段が、前記入力された暗号文Ｆと前記再現された暗号文Ｆ’とが一致するか否かを判定する暗号文判定工程と、
前記平文出力手段が、前記暗号文判定工程による判定結果が一致を示す場合、前記平文Ｍ又は前記メッセージｍを出力する平文出力工程と、
前記無効出力手段が、前記暗号文判定工程による判定結果が否の場合、暗号文無効情報を出力する無効出力工程と
を備えたことを特徴とする復号方法。
【請求項１８】
請求項１６又は請求項１７に記載の復号方法において、
前記多項式生成工程は、前記平文Ｍのハッシュ値Ｈ(M)に基づいて前記多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成することを特徴とする復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、代数曲面を用いた公開鍵暗号方式の暗号装置、復号装置、プログラム及び方法に関する。
【背景技術】
【０００２】
ネットワーク社会では、電子メール等の多くの情報がネットワーク上に伝送されることにより、人々のコミュニケーションが行われる。このようなネットワーク社会において、暗号技術は情報の機密性や真正性を守る手段として広く活用されている。
【０００３】
暗号技術は、共通鍵暗号技術と公開鍵暗号技術に大きく分類できる。共通鍵暗号はデータの攪拌アルゴリズムに基づいた暗号方式であり、高速に暗号化／復号ができる一方で、予め共通鍵を共有した２者間でしか秘密通信や認証通信ができない。
【０００４】
このため、共通鍵暗号は、主に有料デジタル放送のように、受信後にリアルタイムに復号される情報の暗号化に利用される。この場合、有料デジタル放送の復号鍵は、別途、限定受信システムと呼ばれる鍵配信システムを用いて視聴契約者だけに配信される。
【０００５】
一方、公開鍵暗号は数学的なアルゴリズムに基づいた暗号方式であり、暗号化／復号が共通鍵暗号より低速であるが、事前の鍵共有を不要としつつ、秘密通信や認証通信が可能となる利点がある。詳しくは、公開鍵暗号は、送信相手の公開鍵を用いて暗号処理を施すことで秘密通信を実現し、自己の秘密鍵を用いてデジタル署名を施すことで認証通信を可能とする。
【０００６】
ここで、インターネットに開設されているネットショッピング、銀行や証券会社のオンラインサイトでは、クレジットカード番号や住所などの顧客情報を盗聴から守るために、公開鍵暗号が用いられることが多い。理由は、顧客情報を暗号化するための暗号鍵を予め共有することが必ずしも可能でないため、共通鍵暗号が不向きなことによる。
【０００７】
代表的な公開鍵暗号には、ＲＳＡ暗号と楕円曲線暗号がある。ＲＳＡ暗号は、素因数分解問題の困難性を安全性の根拠としており、べき乗剰余演算が暗号化演算として用いられている。楕円曲線暗号は、楕円曲線上の離散対数問題の困難性を安全性の根拠としており、楕円曲線上の点演算が暗号化演算に用いられる。
【０００８】
これらの公開鍵暗号は、特定の鍵（公開鍵）に関する解読法は提案されているものの、一般的な解読法が知られていない。このため、安全性に関する重大な問題は、後述する量子計算機による解読法を除き、現在までのところ、見つかっていない。
【０００９】
この他の公開鍵暗号にはナップサック暗号及び多次多変数暗号などがある。ナップサック暗号は、ＮＰ問題としてのナップサック問題の困難性に安全性の根拠をおいた暗号方式である。多次多変数暗号は、体の拡大理論を利用して構成され、連立方程式の解を求める問題に安全性の根拠をおいた暗号方式である。
【００１０】
しかし、ナップサック暗号は、ほとんどの実現形態にて解読法が知られているので、安全性に疑問がある。多次多変数暗号は、有力な解読法が知られている一方、この解読法は鍵サイズの増大により避けられることも知られている。しかし、多次多変数暗号は、この解読法を避けるのに必要な鍵サイズが膨大になるので、問題視され始めている。
【００１１】
一方、前述したＲＳＡ暗号と楕円曲線暗号も、量子計算機が出現すれば解読される可能性が高い。量子計算機は、現在の計算機とは異なり、量子力学におけるエンタングルメントという物理現象を利用して超並列計算を実行可能な計算機である。量子計算機は、実験レベルの仮想の計算機であるが、実現に向けて研究開発が進められている。１９９４年にショア（Shor）は、量子計算機によれば、素因数分解や離散対数問題を効率的に解くアルゴリズムを構成できることを示した。即ち、量子計算機が実現すれば、素因数分解に基づくＲＳＡ暗号や、楕円曲線上の離散対数問題に基づく楕円曲線暗号は解読される可能性が高い。
【００１２】
一方、量子計算機が実現されても安全な公開鍵暗号が研究されてきている。一例として、量子公開鍵暗号が挙げられる。量子公開鍵暗号では、現在の計算機では鍵生成が不可能である程に強力なナップサック暗号の鍵を量子計算機により生成する。このため、量子公開鍵暗号では、量子計算機でも解読できない程に強力なナップサック暗号を構成し得る。しかし、量子公開鍵暗号は、現在の計算機では鍵生成が不可能なため、現時点では利用できない。
【００１３】
一方、多次多変数暗号は、現時点でも実現可能な公開鍵暗号であり、量子計算機でも解読が難しい。しかし、多次多変数暗号は、現在の計算機に対して安全な鍵サイズが膨大なため、実用化が疑問視されている。
【００１４】
更に、公開鍵暗号は、共通鍵暗号と比べ、回路規模が大きく、処理時間が長い。よって、モバイル端末などの小電力環境では実現できないか、実現しても待ち時間が長いという問題がある。このため、小電力環境でも実現できる公開鍵暗号が求められている。
【００１５】
一般に公開鍵暗号は、予め素因数分解問題や離散対数問題などの計算困難な問題を見出し、秘密鍵を知らずに暗号文の解読を試みる場合、当該計算困難な問題を解くことと同等になるように構成する。
【００１６】
しかし、計算困難な問題が見つかっても、その問題を安全性の根拠とする公開鍵暗号を容易に構成できる訳ではない。理由は、計算が困難すぎる問題を安全性の根拠にすると鍵を生成する問題も困難になるので、鍵を生成できないためである。一方、鍵生成が可能な程度に問題を容易にすると、解読も容易になってしまう。
【００１７】
従って、公開鍵暗号を構成するには、計算困難な問題を見つけるとともに、見つけた問題を、鍵生成は容易だが、解読は容易でないという絶妙なバランスを持つ問題に作り変える必要がある。このような問題の作り変えには高い創造性を必要とする。実際には、問題の作り変えが極めて困難なため、数えるほどの公開鍵暗号しか提案されていない。
【００１８】
このような状況において、量子計算機が出現しても安全性を確保できる可能性があり、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式として、代数曲面を用いた公開鍵暗号が本発明者により提案されている（例えば、特許文献１参照）。但し、特許文献１記載の方式は、２００５年１１月現在、特許文献１が未公開であり、公知技術ではない。以下ではこれを（簡単のため）代数曲面暗号と呼ぶことにする。
【００１９】
また、公開鍵暗号の安全性は、素因数分解問題や離散対数問題のように、公開鍵暗号を構築する問題の困難性に基づくと考えられている。しかし、この考えは、厳密な帰着関係を述べるものではない。
【００２０】
厳密な帰着関係を述べるためには、解読者による攻撃と達成される安全性とをモデル化し、モデル化した攻撃の下で安全性を達成することと、安全性の根拠となる問題の難しさとが等価であることを証明する必要がある。すなわち、公開鍵暗号の安全性と問題の困難性との厳密な帰着関係を述べることが安全性証明である。
【００２１】
安全性証明において、攻撃のモデルには大きく分けて受動的攻撃(Chosen Plaintext Attack(ＣＰＡ))と能動的攻撃がある。
【００２２】
受動的攻撃とは、公開鍵を利用して平文を繰り返し暗号化し、得られる暗号文から情報を引き出そうとする攻撃である。能動的攻撃(Chosen Cipher Attack(ＣＣＡ))とは、更に暗号文を復号装置に適応的に入力し、得られる復号結果から秘密鍵の情報を引き出そうとする攻撃である。この意味からＣＣＡの方がＣＰＡより強い攻撃となっている。
【００２３】
また、安全性証明において、達成される安全性には２つの基準が提案されている。  
第１の基準は、２つの平文を暗号化した後に区別できないこと(Indistinguishable(ＩＮＤ))である。第２の基準は、暗号文に多項式時間の操作を施しても、元の平文と関係のある平文の暗号文を作成できないこと(Non-Malleable(ＮＭ))である。
【００２４】
従って、安全性証明の基準は、敵による攻撃のモデルと、達成される安全性との組合せでＩＮＤ−ＣＰＡ，ＮＭ−ＣＣＡのように表現される。ＩＮＤ−ＣＰＡは、受動的攻撃の下で、２つの暗号文から元の平文を区別する情報を抽出できない旨を意味する。ＮＭ−ＣＣＡは、能動的攻撃の下で、暗号文を操作した結果から元の平文に関係した情報を得られない旨を意味する。現在のところ、最強の安全性と考えられている基準はＩＮＤ−ＣＣＡである。
【００２５】
一方、ＩＮＤ−ＣＰＡの意味で安全性が証明された公開鍵暗号を、ＩＮＤ−ＣＣＡの意味で証明可能安全な公開鍵暗号アルゴリズムに変換する方法が知られている（例えば、特許文献２参照）。従って、ＩＮＤ−ＣＰＡの意味で安全性が証明された公開鍵暗号を構成できれば、この公開鍵暗号をＩＮＤ−ＣＣＡの意味で証明可能安全（provable secure）な公開鍵暗号に変換することが可能となっている。
【特許文献１】特願２００４−１４９０５２号明細書
【特許文献２】特許第３３０６３８４号特許公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
以上説明したように、量子計算機が出現しても安全性を確保できる可能性があり、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある証明可能安全な公開鍵暗号を構成することが望まれている。
【００２７】
本発明は上記実情を考慮してなされたもので、量子計算機が出現しても安全性を確保できる可能性があり、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある証明可能安全な公開鍵暗号方式を構成し得る暗号装置、復号装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００２８】
第１の発明は、復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)に基づいて、予めメッセージｍを暗号化するための暗号装置であって、前記メッセージｍと乱数ｒを連結した平文Ｍを１変数tで次数ｌ-１以下の平文多項式Ｍ(t)の係数として埋め込む平文埋め込み手段と、前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)を生成する１変数既約多項式生成手段と、前記平文多項式Ｍ(t)に対し、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式Ｍ(t)から暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段とを備えた暗号装置である。
【００２９】
第２の発明は、復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションのとき、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)に基づいて、予めメッセージｍを暗号化するための暗号装置であって、前記メッセージｍと乱数ｒを連結した平文Ｍを１変数tで次数ｌ-１以下の平文多項式Ｍ(t)と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込む平文埋め込み手段と、前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段と、前記１変数既約多項式ｆ(t)の候補の各係数のうち、前記平文Ｍが埋め込まれていない係数をランダムな値に設定し、前記１変数既約多項式ｆ(t)を生成する１変数既約多項式生成手段と、前記平文多項式Ｍ(t)に対し、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、前記平文多項式Ｍ(t)から暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を生成する暗号化手段とを備えた暗号装置である。
【００３０】
第３の発明は、第１又は第２の発明の暗号装置において、前記多項式生成手段としては、前記平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成する暗号装置である。
【００３１】
第４の発明は、メッセージｍと乱数ｒを連結した平文Ｍが１変数tで次数(ｌ-１)以下の平文多項式Ｍ(t)の係数として埋め込まれた平文多項式Ｍ(t)に対し、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)と、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式Ｍ(t)から生成された暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つのセクションＤ1,Ｄ2に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置であって、前記入力された暗号文Ｆに対し、前記各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成するセクション代入手段と、前記各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る多項式減算手段と、前記減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する因数分解手段と、因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する多項式抽出手段と、前記１変数多項式ｈ1(t)を前記既約多項式ｆ(t)で除算し、剰余として平文多項式Ｍ(t)を得る剰余演算手段と、前記剰余演算手段で得られた平文多項式Ｍ(t)の係数から平文Ｍを抽出する平文抽出手段と、前記平文抽出手段により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算するハッシュ演算手段と、前記ハッシュ演算手段により得られたハッシュ値Ｈ(M)に基づいて、３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段と、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とに基づいて、前記暗号化処理と同じ処理により、暗号文Ｆ’＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を再現する暗号文再現手段と、前記入力された暗号文Ｆと前記再現された暗号文Ｆ’とが一致するか否かを判定する暗号文判定手段と、前記暗号文判定手段による判定結果が一致の場合、前記平文Ｍ又は前記メッセージｍを出力する平文出力手段と、前記暗号文判定手段による判定結果が否の場合、暗号文無
効情報を出力する無効出力手段とを備えた復号装置である。
【００３２】
第５の発明は、メッセージｍと乱数ｒを連結した平文Ｍが１変数tで次数(ｌ-１)以下の平文多項式Ｍ(t)の係数と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込まれた平文多項式Ｍ(t)に対し、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)と、公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により前記平文多項式Ｍ(t)から生成された暗号文Ｆ＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)が入力されたとき、予め保持する秘密鍵である代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つのセクションＤ1,Ｄ2に基づいて、前記暗号文Ｆから前記メッセージｍを復号するための復号装置であって、前記入力された暗号文Ｆに対し、前記各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成するセクション代入手段と、前記各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る多項式減算手段と、前記減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する因数分解手段と、因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する多項式抽出手段と、前記１変数多項式ｈ1(t)を前記既約多項式ｆ(t)で除算し、剰余として平文多項式Ｍ(t)を得る剰余演算手段と、前記剰余演算手段で得られた平文多項式Ｍ(t)の係数と前記多項式抽出手段で得られた既約多項式ｆ(t)の一部の係数とから平文Ｍを抽出する平文抽出手段と、前記平文抽出手段により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算するハッシュ演算手段と、前記ハッシュ演算手段により得られたハッシュ値Ｈ(M)に基づいて３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する多項式生成手段と、前記各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)と前記ファイブレーションＸ(x,y,t)とに基づいて、前記暗号化処理と同じ処理により、暗号文Ｆ’＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)を再現する暗号文再現手段と、前記入力された暗号文Ｆと前記再現された暗号文Ｆ’とが一致するか否かを判定する暗号文判定手段と、前記暗号文判定手段による判定結果
が一致を示す場合、前記平文Ｍ又は前記メッセージｍを出力する平文出力手段と、前記暗号文判定手段による判定結果が否の場合、暗号文無効情報を出力する無効出力手段とを備えた復号装置である。
【００３３】
第６の発明は、第４又は第５の発明の復号装置において、前記多項式生成手段としては、前記平文Ｍのハッシュ値Ｈ(M)に基づいて前記多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成する復号装置である。
【００３４】
（作用）
第１〜第６の各発明は、復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションであり、公開鍵が代数曲面ＸのファイブレーションＸ(x,y,t)であるという構成により、量子計算機が出現しても安全性を確保できる可能性があり、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成できる。
【００３５】
また、第１〜第６の各発明は、次数ｌ-１以下の平文多項式Ｍ(t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)とを用いる構成により、後述する［証明５］に基づいて、ＩＮＤ−ＣＰＡ（受動的攻撃の下で、２つの暗号文から元の平文を区別する情報を抽出できない）の意味で証明可能安全な公開鍵暗号方式を構成できる。さらに、第１〜第６の各発明は、メッセージｍと乱数ｒを連結した平文Ｍを平文多項式Ｍ(t)の係数として埋め込み、Ｍのハッシュ値Ｈ（Ｍ）に基づいて前記各多項式ｐ(x,y,t),ｑ(x,y,t)を生成することにより暗号化し、復号時に復号された平文Ｍからハッシュ値Ｈ（Ｍ）を計算して暗号化と同じ手段で前記各多項式ｐ(x,y,t),ｑ(x,y,t)を生成し、暗号文Ｆ’を再現し、前記再現された暗号文Ｆ’が前記入力された暗号文Ｆと一致することを確認する構成により、ＩＮＤ−ＣＰＡの意味で安全な公開鍵暗号方式を、ＩＮＤ−ＣＣＡ（能動的攻撃の下で、暗号文を操作した結果から元の平文に関係した情報を得られない）の意味で証明可能安全な公開鍵暗号方式に変換している。
【００３６】
従って、第１〜第６の各発明は、ＩＮＤ−ＣＣＡの意味で証明可能安全な公開鍵暗号方式を構成できる。
【発明の効果】
【００３７】
以上説明したように本発明によれば、量子計算機が出現しても安全性を確保できる可能性があり、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある証明可能安全な公開鍵暗号方式を構成できる。
【発明を実施するための最良の形態】
【００３８】
以下、本発明の各実施形態を図面を用いて説明するが、その前に、各実施形態の前提として、代数曲面及び代数曲面上の求セクション問題について述べる。求セクション問題は、各実施形態の基礎となるランダム化多項式判定問題に関連する問題である。
【００３９】
（実施形態の前提）
本発明で述べる代数曲面は体Ｋ上定義された連立（代数）方程式の解の集合のうち２次元の自由度を持ったものと定義される。例えば、次の式（１）に示す体Ｋ上の連立方程式は変数５つに対し、それらを束縛する３つの方程式があるので２次元の自由度を持っているので、代数曲面となる。
【００４０】
ｆ1(x,y,z,v,w)＝０
ｆ2(x,y,z,v,w)＝０
ｆ3(x,y,z,v,w)＝０
（１）
特に、式（２）に示す如き、３変数のＫ上代数方程式の解の集合として定義される空間もＫ上の代数曲面となる。
【００４１】
ｆ(x,y,z)＝０            （２）
なお、式（１）、式（２）に示した代数曲面の定義式はアフィン空間におけるものであって、射影空間におけるそれは（式（２）の場合）ｆ(x,y,z,w)＝０である。
【００４２】
しかし、本実施形態では代数曲面を射影空間で扱うことはないので代数曲面の定義式を式（１）若しくは式（２）としたが、射影空間で表現しても本発明はそのまま成立する。
【００４３】
一方、代数曲線は体Ｋ上定義された連立（代数）方程式の解の集合のうち１次元の自由度を持ったものである。よって、例えば次式のように定義される。
【００４４】
ｇ(x,y)＝０
本実施形態においては式（２）のように１つの式で書ける代数曲面のみを扱うので、以下では式（２）を代数曲面の定義方程式のごとく扱う。
【００４５】
体とは加減乗除が自由にできる集合であって、実数、有理数、複素数がこれにあたるが、整数や行列など０以外に除算ができない元を含む集合は該当しない。体の中には有限体と呼ばれる有限個の元から構成される体がある。例えば素数ｐに対し、ｐを法とする剰余類Ｚ/pＺは体をなす。このような体は素体と呼ばれＦpなどと書く。有限体にはこの他に素数の冪乗個の元を持つ体Ｆq（ｑ＝ｐｒ）があるが、本実施形態では簡単のため主に素体Ｆpのみを扱う。一般に素体Ｆpのｐは素体Ｆpの標数と呼ばれる。
【００４６】
一方、一般の有限体でも本発明は自明な変形を施すことによって同様に成立する。公開鍵暗号ではメッセージをデジタルデータとして埋め込む必要から有限体上で構成することが多く、本実施形態においても同様に有限体（本実施形態では特に素体）Ｆp上定義された代数曲面を扱う。
【００４７】
代数曲面ｆ(x,y,z)＝０上には図１３に示すように通常代数曲線が複数存在する。このような代数曲線は代数曲面上の因子と呼ばれる。
【００４８】
一般に代数曲面の定義式が与えられた時に（非自明な）因子を求める問題は現代の数学においても未解決の難問であり、総当りなどの原始的な方法を除けば一般的な解法は知られていない。特に本実施形態で扱うような有限体で定義された代数曲面においては有理数体などの無限体（無限個の元からなる体）と比較しても手掛かりが少なく、より難しい問題であることが知られている。
【００４９】
本実施形態ではこの問題を代数曲面上の求因子問題もしくは単に求因子問題と呼び、代数曲面上の求因子問題に安全性の根拠をおく公開鍵暗号を構成する。
【００５０】
さて体Ｋ上の代数曲面Ｘ：ｆ(x,y,z)＝０のうち、
ｈ(x,y,t)＝０
と定義され、セクションと呼ばれるx,yがtでパラメタライズされた曲線
(x,y,t)＝(ｕx(t),ｕy(t),t)
が存在するような形式に表現された代数曲面を代数曲面Ｘのファイブレーションといい、Ｘtなどと表す（尚、以下では簡単のためファイブレーションであることが明らかであるときには単なるＸと表す）。
【００５１】
また、代数曲面Ｘのファイブレーションにおけるパラメータtに体Ｋの元t0を代入して得られる代数曲線はファイバーと呼ばれ、Ｘt0のように表される。ここで、ファイバーとセクションは共に代数曲面Ｘtの因子である。
【００５２】
一般に代数曲面のファイブレーションが与えられたとき、それに対応するファイバーは（tに体の元を代入することにより）直ちに求まるが、対応するセクションを求めることは極めて難しい。この意味ではファイバーは自明な因子であり、セクションは非自明な因子であると言える。
【００５３】
本発明の公開鍵暗号は代数曲面上の求因子問題のうち、特に代数曲面ＸのファイブレーションＸtが与えられたとき、セクションを求める問題に安全性の根拠をおいた公開鍵暗号である。
【００５４】
ファイブレーションからセクションを求めるには現代の数学においてもセクション（ｕx(t),ｕy(t),t)を
deg ｕx(t)＜ｒx,  deg ｕy(t)＜ｒy
と仮定した上で、
【数１】
0004575283.tif 000002
を立てて、これを解くことによって求める方法しか知られていない。尚、以下ではセクション（ｕx(t),ｕy(t),t)における次数をdegｕx(t)とdegｕy(t)の最大値と定義する。
【００５５】
以下では、代数曲面上の求セクション問題と関連するランダム化多項式判定問題に基づいた安全性が証明可能な本発明の公開鍵暗号の具体的な構成を説明する。
【００５６】
（第１の実施形態）
（概要）
本実施形態の公開鍵は以下の５つである。
【００５７】
１．素体の標数ｐ
２．Ｆp上の代数曲面Ｘのファイブレーション：Ｘ(x,y,t)＝０
３．Ｆp上の１変数既約多項式ｆ(t)の次数ｌ
但し、
degtＸ(x,y,t)＜ｌ  （３−０）
４．（秘密鍵である）セクションにおける多項式ｕx(t),ｕy(t),ｖx(t),ｖy(t)の最大次数ｄ
５．３変数多項式ｐ(x,y,t)のx,yの最高指数ｅ
秘密鍵は以下の２つの異なるセクションＤ1,Ｄ2である。
【００５８】
１．Ｆp上の代数曲面Ｘのセクション：Ｄ1：(x,y,t)＝(ｕx(t),ｕy(t),t)
２．Ｆp上の代数曲面Ｘのセクション：Ｄ2：(x,y,t)＝(ｖx(t),ｖy(t),t)
これらは後述する方法（鍵生成方法）で容易に求めることができる。
【００５９】
次に暗号化処理の概要を述べる。暗号化処理ではまず暗号化したいメッセージ（以下では平文と呼ぶ）をブロック分割して
ｍ＝ｍ0‖ｍ1‖・・・‖ｍl-1
のようにし、平文多項式ｍ(t)に
【数２】
0004575283.tif 000003
に埋め込む（平文埋め込み処理）。ここでｍ(t)をＦp上の多項式とするために、各ｍi（０≦ｉ≦ｌ-１）はＦpの元となるように取る必要がある。即ち、平文ｍはｐのビット長に基づいて
０≦ｍi≦ｐ-１
となるように分割される。なお、平文ｍは整数であり、例えばメッセージを表す文字コード列が整数に読み替えられることにより、構成されている。
【００６０】
次に、Ｆp上のランダム多項式ｐ(x,y,t),ｑ(x,y,t)をランダムに決める。このときｐ(x,y,t)は次の条件（３）（４）を満たすように決める。
【００６１】
α＞degxＸ(x,y,t)
β＞degyＸ(x,y,t)
なる指数α，βに対して  ｘαｙβの項を含む
（３）
(degxｐ(x,y,t)＋degyｐ(x,y,t))ｄ＋degtｐ(x,y,t)＜ｌ      （４）
ここで、degx, degy, degtによって、それぞれ多項式のx,y,tに関する次数を表すものとする。また、ｑ(x,y,t)は次の条件（５）を満たすように決める。
【００６２】
degtｑ(x,y,t)＜ｌ      （５）
次に、Ｆp上ランダムな１変数のｌ次既約多項式ｆ(t)を決める。ここで、既約多項式とは、これ以上因数分解できない多項式のことである。有限体上の１変数多項式の場合、その既約性判定は極めて容易であることが知られている。以上の式ｍ(t),ｐ(x,y,t),ｑ(x,y,t),ｆ(t)及び公開鍵である代数曲面ＸのファイブレーションＸ(x,y,t)から次の式（６）によって暗号文Ｆ(x,y,t)を計算する。
【００６３】
Ｆ(x,y,t)＝ｍ(t)＋ｆ(t)ｐ(x,y,t)＋Ｘ(x,y,t)ｑ(x,y,t)      （６）
暗号文Ｆ(x,y,t)を受け取った受信者は、所有する秘密鍵Ｄ1,Ｄ2を利用して次のように復号を行う。まず、セクションＤ1,Ｄ2を暗号文Ｆ(x,y,t)に代入する。ここで、セクションＤ1,Ｄ2を代数曲面Ｘ(x,y,t)に代入すると、
Ｘ(ｕx(t),ｕy(t),t)＝０,Ｘ(ｖx(t),ｖy(t),t)＝０なる関係があることに注意すると
ｈ1(t)＝Ｆ(ｕx(t),ｕy(t),t)＝ｍ(t)＋ｆ(t)ｐ(ｕx(t),ｕy(t),t)
ｈ2(t)＝Ｆ(ｖx(t),ｖy(t),t)＝ｍ(t)＋ｆ(t)ｐ(ｖx(t),ｖy(t),t)
という関係を持つ２つの式ｈ1(t),ｈ2(t)が求まることが分かる。次に、２式を辺々引き算して、次の式（７）を計算する。
【００６４】
ｈ1(t)−ｈ2(t)＝ｆ(t)｛ｐ(ｕx(t),ｕy(t),t)−ｐ(ｖx(t),ｖy(t),t)｝
（７）
次に、ｈ1(t)−ｈ2(t)を因数分解して、最大次数を持つ因数をｆ(t)と定める。ここで最大次数の因子がｆ(t)であるためには、ｆ(t)の次数をｌとした時、条件（８）を満たすようなｐ(x,y,t)を選択すれば必要十分である。
【００６５】
deg(ｐ(ｕx(t),ｕy(t),t)−ｐ(ｖx(t),ｖy(t),t))＜ｌ        （８）
このためには、条件（９）の両方が成り立つように選択する必要がある。
【００６６】
deg(ｐ(ｕx(t),ｕy(t),t))＜ｌ
deg(ｐ(ｖx(t),ｖy(t),t))＜ｌ
（９）
しかし、送信者にはセクションが秘匿されているのでｌを十分大きく取るとともに、セクションの各要素となっている多項式ｕx(t),ｕy(t),ｖx(t),ｖy(t)における次数の最大値ｄを公開鍵として公開している。即ち、ｐ(x,y,t)を決定するときは条件式（４）を満たしていれば十分である。尚、ｈ1(t)−ｈ2(t)の因数分解は１変数多項式の因数分解が容易であることから十分有効な時間内に処理可能である。得られたｆ(t)でｈ1(t)を除すると（ｍ(t)の次数がｆ(t)の次数ｌ以下であることに注意すると）
ｈ1(t)＝ｍ(t)＋ｆ(t)ｐ(ｕx(t),ｕy(t),t)
の関係が得られ、平文多項式ｍ(t)が得られる。
【００６７】
得られた平文多項式ｍ(t)から平文埋め込み処理と逆の処理で平文ｍを求めることができる。ここで、ｍ(t)が剰余として一意的であることは特筆すべきことである。一意的でないと平文多項式ｍ(t)の候補が複数存在してしまい、真の平文多項式を特定することが困難になる。ｍ(t)が一意的である理由はｈ1(t)が含まれる一変数多項式環Ｆ[t]においては整数と同様に除法の定理が成立するため、一変数多項式を一変数多項式で割った商と剰余は一意的となるからである。
【００６８】
一方で２変数以上の多項式では除法の定理が成立しないことが知られている。
【００６９】
最後に本実施形態における鍵生成方法を説明する。本実施形態の鍵生成はセクションＤ1,Ｄ2をランダムに選び、それに対応したファイブレーションを計算することによって行う。但し、生成された代数曲面が２つのセクションを同時に持つようにするために以下のような工夫が必要となる。
【００７０】
ここでは簡単のため代数曲面のうち楕円曲面Ｅtを例にとって鍵生成方法を示す。楕円曲面は、次式に示すファイブレーションを持つ代数曲面であると定義することができる。
【００７１】
Ｅt：y2＝x3＋ａ(t)x＋ｂ(t)
ここで、ａ(t),ｂ(t)は１変数多項式である。まず、素体の標数ｐを決める。このときｐは小さくても安全性に問題は生じない。さて、セクションＤ1,Ｄ2を
Ｄ1：(x,y,t)＝(ｕx(t),ｕy(t),t),
Ｄ2：(x,y,t)＝(ｖx(t),ｖy(t),t)
とおいて楕円曲面Ｅtに代入し、
ｕy(t)2＝ｕx(t)3＋ａ(t)ｕx(t)＋ｂ(t)
ｖy(t)2＝ｖx(t)3＋ａ(t)ｖx(t)＋ｂ(t)
を得る。これらを辺々引くとｂ(t)が消え、
ｕy(t)2−ｖy(t)2−(ｕx(t)3−ｖx(t)3)＝ａ(t)(ｕx(t)−ｖx(t))
となる。ａ(t)を多項式とするには、例えば
ｕx(t)−ｖx(t)|ｕy(t)−ｖy(t)
であれば十分である。このことを利用して以下に示すアルゴリズムで鍵生成を行うことができる。ここで、ｋ1(t)|ｋ2(t)は多項式ｋ1(t)が多項式ｋ2(t)を割り切ることを意味している。まず、λx(t)|λy(t)となる２つの多項式をランダムに選択する。
【００７２】
具体的にこのような多項式の組を求めるには、例えばλx(t)をランダムに与えて、同じくランダムな多項式ｃ(t)によってλy(t)＝ｃ(t)λx(t)を計算することによってλy(t)を求めることで実現できる。
【００７３】
次に多項式ｖx(t)をランダムに選択し、
ｕx(t)−ｖx(t)＝λx(t)
によってｕx(t)を計算する。同様に多項式ｖy(t)をランダムに選択し
ｕy(t)−ｖy(t)＝λy(t)
によってｕy(t)を計算する。
【００７４】
以上の手段で計算されたｕx(t),ｖx(t),ｕy(t),ｖy(t)を利用して、次の式（１０）を計算することにより多項式ａ(t)を計算できる。
【００７５】
ａ(t)＝｛ｕy(t)2−ｖy(t)2−(ｕx(t)3−ｖx(t)3)｝／(ｕx(t)−ｖx(t))
（１０）
更にｂ(t)はａ(t)を利用して次の式（１１）によって得られる。
【００７６】
ｂ(t)＝ｕy(t)2−ｕx(t)3−ａ(t)ｕx(t)      （１１）
鍵生成方法は、楕円曲面以外の代数曲面であっても例えばy2＝x5＋ａ(t)x＋ｂ(t)のような形の定義式を仮定するなら同様に可能であり、楕円曲面のみに限定される鍵生成方法ではない。
【００７７】
尚、具体的なパラメータｌ,ｄ,ｅの設定に関しては後述する。
【００７８】
続いて、本実施形態のアルゴリズムが、後述するランダム化多項式判定問題が難しいと仮定すると、ＩＮＤ−ＣＰＡの意味で証明可能安全であることを説明する。まず、復号アルゴリズムは式（７）において、
｛ｐ(ｕx(t),ｕy(t),t)−ｐ(ｖx(t),ｖy(t),t)｝＝０
の場合失敗する。しかし、このようなことは公開鍵であるｅに対して無視できる（negligible）確率でしか生じない。
【００７９】
［命題１］  少なくとも２つの相異なるセクション
【数３】
0004575283.tif 000004
を持つ有限体Ｆp上定義された代数曲面のファイブレーションＸ(x,y,t)＝０と３変数多項式ｐ(x,y,t)のx,yに関する指数の最大値ｅに対して、
ｐ(ｕx(t),ｕy(t),t)＝ｐ(ｖx(t),ｖy(t),t)    （１２）
となる確率は１／ｐe+1である。
【００８０】
［証明１］  Ｘ(x,y,t)の有する相異なるセクション(ｕx(t),ｕy(t),t),(ｖx(t),ｖy(t),t)においてｕx(t)≠ｖx(t)であるとする。もし、ｕx(t)＝ｖx(t)であった場合はｕy(t)≠ｖy(t)となり、以下の議論をｕy(t)≠ｖy(t)の仮定で同様に展開することができる。
【００８１】
さて、式（１２）を満たすようなxにおいて指数の最大値ｅを取るｐ(x,y,t)が存在したとする。このとき、Ｆp上の任意の（ｅ−１）次以下の１変数多項式ｇ(x)（≠０）に対して
ｐ(x,y,t)＋ｇ(x)は式（１２）を満たさない。なぜなら、もし満たしたとすると
ｇ(ｕx(t))＝ｇ(ｖx(t))
が成り立ち、有限体Ｆpを無限体にまで拡大したときに無限個の解を持つことになり、ｕx(t)＝ｖx(t)が従う。また、このように生成された式は式（１２）を満たすような別のｐ(x,y,t)から同様の手段で得られる多項式とは決して一致しない。実際、式（１２）を満たす他のｐ1(x,y,t),ｐ2(x,y,t)と１変数多項式ｇ1(x),ｇ2(x)に対して
ｐ1(x,y,t)＋ｇ1(x)＝ｐ2(x,y,t)＋ｇ2(x)      （１３）
であったとする。このとき
ｐ1(x,y,t)−ｐ2(x,y,t)＝ｇ2(x)−ｇ1(x)
となる。ここでｇ1(x)＝ｇ2(x)であるならばｐ1(x,y,t)＝ｐ2(x,y,t)となり矛盾するので、ｇ1(x)≠ｇ2(x)である。今ｇ(x)＝ｇ2(x)−ｇ1(x)とすると、ｐ1(x,y,t)−ｐ2(x,y,t)の性質から
ｇ(ｕx(t))＝ｇ(ｖx(t))
を満たすので、ｕx(t)＝ｖx(t)が従う。よって式（１３）を満たすような相異なる（ｐ1(x,y,t),ｇ1(t)）,（ｐ2(x,y,t),ｇ2(t)）の組は存在しない。尚、ｐ(x,y,t)がyにおいて指数の最大値をとった場合は、xとyの役割を変更することにより証明がそのまま成り立つ。
【００８２】
以上のことから式（１２）を満たす１つのＦp[x,y,t]上の３変数多項式ｐ(x,y,t)に対して少なくともｐe+1個の式（１２）を満たさない多項式を重複なく対応付けることができる。よって、式（１２）を満たすｐ(x,y,t)は高々１／ｐe+1の確率でしか生じない。
【００８３】
代数曲面暗号の安全性は以下の代数曲面暗号に関するランダム化多項式判定問題に依存している。
【００８４】
［定義１］  代数曲面暗号に関するランダム化多項式判定問題
Ｆp上定義された次数ｄ以下の２つの相異なるセクションを有する代数曲面のファイブレーションＸ(x,y,t)＝０と自然数ｌが与えられた時、３変数多項式Ａ(x,y,t)が集合Ｓ
【数４】
0004575283.tif 000005
に属するか否かを判定する問題を代数曲面暗号に関するランダム化多項式判定問題といい、代数曲面暗号に関することが明らかなときには単にランダム化多項式判定問題という。
【００８５】
ランダム化多項式判定問題は次数ｄ以下の２つの相異なるセクションを有する代数曲面のファイブレーションＸ(x,y,t)＝０と既約多項式ｆ(t)の最小次数ｌが与えられた時、与えられた多項式ｇ(x,y,t)が
ｆ(t)ｐ(x,y,t)＋Ｘ(x,y,t)ｑ(x,y,t)      （１４）
という形に書けるか書けないかを判定する問題である。もし、多項式ｇ(x,y,t)が２通り以上の書き方で式（１４）のごとく書けたとすると、攻撃者（問題を解く人）は（正しいと判定は）複数ある書き方のうちの１つの書き方を見出せばよく、ランダム化多項式判定問題はそれだけ容易となる。しかしｐ(x,y,t)が条件（３）（４）、ｑ(x,y,t)が条件（５）を満たす限りにおいては、そのようなことはなく一意に書けることが以下のように示せる。
【００８６】
［命題２］  多項式ｇ(x,y,t)が次数ｄ以下の２つの相異なるセクションを有する代数曲面のファイブレーションＸ(x,y,t)＝０と既約多項式ｆ(t)の最小次数ｌと、条件（３）（４）を満たすｐ(x,y,t)、条件（５）を満たすｑ(x,y,t)によって
ｆ(t)ｐ(x,y,t)＋Ｘ(x,y,t)ｑ(x,y,t)
のように書けるとき、その書き方は一意的である。
【００８７】
［証明２］  ２通りの表現で、仮定のごとく書けるｇ(x,y,t)が存在したとして
ｇ(x,y,t)＝ｆ1(t)ｐ1(x,y,t)＋Ｘ(x,y,t)ｑ1(x,y,t)
＝ｆ2(t)ｐ2(x,y,t)＋Ｘ(x,y,t)ｑ2(x,y,t)
（１５）
と書く。仮定からＸ(x,y,t)は２つの相異なる次数ｄ以下のセクションを持つ代数曲面なので、それらのセクションを(ｕx(t),ｕy(t),t),(ｖx(t),ｖy(t),t)とすると、
【数５】
0004575283.tif 000006
【００８８】
ここで、命題１から無視できる（negligible）確率を除けば
ｐ1(ｕx(t),ｕy(t),t)−ｐ1(ｖx(t),ｖy(t),t)≠０
であるので、
ｐ2(ｕx(t),ｕy(t),t)−ｐ2(ｖx(t),ｖy(t),t)≠０
ｐ1(x,y,t),ｐ2(x,y,t)が条件（４）を満たすことから、次数の関係によって
ｆ2(t)＝ｃｆ1(t)となる。ここでｃは有限体Ｆpの元である。従って、式（１５）の辺々を引いて前式を反映させると、
ｆ1(t)(ｐ1(x,y,t)−ｃｐ2(x,y,t))＝Ｘ(x,y,t)(ｑ2(x,y,t)−ｑ1(x,y,t))
を得る。ここで代数曲面Ｘ(x,y,t)の既約性から(ｆ(t),Ｘ(x,y,t))＝１となり、Ｆp[x,y,t]は一意分解整域であるので、
ｆ1(t)｜ｑ2(x,y,t)−ｑ1(x,y,t)
が従う。ここでｑ(x,y,t)に対する条件（５）により、
degtｑ2(x,y,t)−ｑ1(x,y,t)＜deg ｆ1(t)
であるので
ｑ1(x,y,t)＝ｑ2(x,y,t)
となる。従って、
ｐ1(x,y,t)＝ｐ2(x,y,t)
となり、ｃ＝１即ち
ｆ1(t)＝ｆ2(t)
が従う。よって２つの表現は一致する。
【００８９】
このようにランダム化多項式判定問題を解くためには一意的な解が存在する問題の解の有無を判定することになるため、容易に解ける問題ではない。もちろん求セクション問題が容易に解ければランダム化多項式判定問題も容易に解けるけれども、求セクション問題を解く以外にランダム化多項式判定問題を解く方法は知られていない。このためランダム化多項式判定問題も十分に難しい問題であると考えられる。
【００９０】
また、命題から本発明の公開鍵暗号の復号結果が一意的であることが以下のように示される。
【００９１】
［補題１］  少なくとも２つの次数ｄ以下の相異なるセクションを持つ代数曲面のファイブレーションＸ(x,y,t)＝０と既約多項式ｆ(t)の最小次数ｌに対応したランダム化多項式Ｇ(x,y,t)に対して、
ｍ(t)＋Ｇ(x,y,t)
はランダム化多項式とはならない。但し、ｍ(t)は０でない次数ｌ−１以下の１変数多項式である。
【００９２】
［証明３］  ｍ(t)＋Ｇ(x,y,t)がランダム化多項式だとすると、
ｍ(t)＋Ｇ(x,y,t)＝ｆ1(t)ｐ1(x,y,t)＋Ｘ(x,y,t)ｑ1(x,y,t)
＝ｍ(t)＋ｆ2(t)ｐ2(x,y,t)＋Ｘ(x,y,t)ｑ2(x,y,t)
（１６）
と書ける。ここで、仮定からＸ(x,y,t)は２つのセクションを持つ代数曲面なので、それらのセクションを(ｕx(t),ｕy(t),t),(ｖx(t),ｖy(t),t)とすると、
【数６】
0004575283.tif 000007
【００９３】
ここで、命題１から無視できる（negligible）確率を除けば
ｐ1(ｕx(t),ｕy(t),t)−ｐ1(ｖx(t),ｖy(t),t)≠０
であるので、
ｐ2(ｕx(t),ｕy(t),t)−ｐ2(ｖx(t),ｖy(t),t)≠０
となり、ｐ1(x,y,t),ｐ2(x,y,t)が条件（４）を満たすことから、次数の関係によって
ｆ2(t)＝ｃｆ1(t)
となる。よって、式（１６）に(ｕx(t),ｕy(t),t)と前式を代入することで、
ｍ(t)＝ｆ1(t)｛ｐ1(ｕx(t),ｕy(t),t)−ｃｐ2(ｕx(t),ｕy(t),t)｝
を得る。しかし、これはdeg ｍ(t)≧ｌとなり矛盾する。従って、ｍ(t)＋Ｇ(x,y,t)はランダム化多項式とはならない。
【００９４】
［定理１］
少なくとも２つのセクションを持つ代数曲面のファイブレーションＸ(x,y,t)＝０と既約多項式ｆ(t)の最小次数ｌと２つのセクションに含まれる１変数多項式の最大次数ｄに対応したランダム化多項式Ｇ(x,y,t)と、次数ｌ−１以下の１変数多項式ｍ(t)による表現ｍ(t)＋Ｇ(x,y,t)は一意的である。
【００９５】
［証明４］
deg ｍ1(t),deg ｍ2(t)＜ｌを満たす１変数多項式ｍ1(t),ｍ2(t)とランダム化多項式Ｇ1(x,y,t),Ｇ2(x,y,t)に対して
ｍ1(t)＋Ｇ1(x,y,t)＝ｍ2(t)＋Ｇ2(x,y,t)
となる関係があったとする。このとき
ｍ1(t)−ｍ2(t)＋Ｇ1(x,y,t)
がランダム化多項式となる。すると補題１により、
ｍ1(t)＝ｍ2(t)
となり、
Ｇ1(x,y,t)＝Ｇ2(x,y,t)
が従う。よって表現は一意的である。
【００９６】
次にこれらの結果に基づいて本実施形態の公開鍵暗号の安全性証明を行なう。
【００９７】
［定義２］  ＩＮＤ−ＣＰＡ
Π：＝（Ｋ,Ｅ,Ｄ）を公開鍵暗号、これに対する確率的アルゴリズムＡ：＝（Ａ1,Ａ2）を考え、このアルゴリズムに対してセキュリティパラメータをｋ∈Ｎとして
【数７】
0004575283.tif 000008
【００９８】
パラメータｋは公開鍵暗号の安全性の基本となる問題の難しさを表わす指標で、本発明の公開鍵暗号の場合はｐを固定した場合、ｄもしくはｌがパラメータとなる。実際、後述するパラメータ設計方法でも明らかになるようにｌはｄの関数であるため、ｄをパラメータと考えても良い。
【００９９】
ここで、ＣＰＡは平文を暗号化プログラムに掛け、出力されてくる暗号文を参考に適応的に平文を構成することを意味しており、アルゴリズムＡ（＝(Ａ1,Ａ2)）はそのようなことができることを仮定している。尚、以下で詳しく述べるようにアルゴリズムは大きく分けて２つのアルゴリズムＡ1とＡ2を有しているためＡ（＝(Ａ1,Ａ2)）のように記述する。
【０１００】
次に達成される安全性の基準であるＩＮＤに関して説明する。ＩＮＤとは鍵生成アルゴリズムＫを使ってパラメータｋを満たすように生成した公開鍵と秘密鍵のペア（ｐｋ,ｓｋ）を出力させ
（ｐｋ,ｓｋ）←Ｋ（１k）
そのうち公開鍵ｐｋのみを知っているアルゴリズムＡ1が何度か適応的に平文を暗号化した後で、２つのメッセージｍ0,ｍ1を選択し、
（x0,x1,ｓ）←Ａ1（ｐｋ）；
暗号化オラクルと呼ばれる第３者にそのどちらかを選んで暗号化させ、暗号文yを得たとする。
【０１０１】
ｂ←Ｒ｛０,１｝；y ←Ｅpk(xb)：
このとき、その暗号文yから対応するメッセージがｍ0であるかｍ1であるかをアルゴリズムＡ2を利用して当てる
Ａ2(x0,x1,ｓ,y)＝ｂ
ことができることを意味する。一方、ＩＮＤにおいては答えは０か１なのであるから、出鱈目に回答した場合１／２の確率で正解となる。そこで、ここでは１／２からどれだけ隔たっているかどうかが問題となる。即ち、確率
【数８】
0004575283.tif 000009
【０１０２】
無視できる(negligibleである)とはパラメータｋに対して確率が指数関数的に小さくなることである。例えば１／ｐlや１／ｐdなどはパラメータをｄとしたとき、無視できる(negligible)確率であるということができる。
【０１０３】
さて、ランダム化多項式判定問題が難しいとすると代数曲面暗号の安全性が以下のように証明できる。
【０１０４】
［定理２］  代数曲面暗号がＩＮＤ−ＣＰＡの意味で安全であることと、ランダム化多項式判定問題が多項式時間で解けないこととは同値である。
【０１０５】
［証明５］  代数曲面暗号ΠがＩＮＤ−ＣＰＡの意味で安全ならば、ランダム化多項式判定問題が多項式時間内に無視できない(non-negligible)確率で解けないことを示す。ランダム化多項式判定問題を多項式時間内に無視できない(non-negligible)確率ＡdvAで解くアルゴリズムＡが存在したとする。このとき代数曲面暗号ΠをＩＮＤ−ＣＰＡの意味で解く敵Ｃ＝（Ｃ1,Ｃ2）を図１４のように構成できる。図１４においてＣ1は公開鍵として与えられたＸ,ｌ,ｄ,ｅが入力されると公開鍵を使った何らかの処理を行い、２つの平文ｍ0(t),ｍ1(t)を暗号化オラクルεに出力する。暗号オラクルεは入力された平文のうちから１つｍb(t)を選んで、公開鍵を利用して暗号化し、暗号文Ｆ(x,y,t)を敵Ｃに返す。敵Ｃは受け取った暗号文Ｆ(x,y,t)に対して
η0(x,y,t)＝Ｆ(x,y,t)−ｍ0(t)
を作成し、アルゴリズムＡによって結果Ｄ(η0,Ｓ)が得られる。ここで、Ｄ(η,Ｓ)は｛０,１｝を値域として取る関数で、多項式ηがランダム化多項式の集合Ｓに属する場合１、属さない場合０とする。敵ＣはＤ(η0,Ｓ)の値が０ならばｂ＝１を、Ｄ(η0,Ｓ)値が１ならばｂ＝０を出力する。以上の処理はアルゴリズムＡが多項式時間で終了することを仮定しているので、多項式時間で終了する。
【数９】
0004575283.tif 000010
【０１０６】
次に、ランダム化多項式判定問題が多項式時間内に無視できない(non-negligible)確率で解けないならば代数曲面暗号ΠがＩＮＤ−ＣＰＡの意味で安全であることを示す。代数曲面暗号ΠがＩＮＤ−ＣＰＡの意味で安全でないとする。このとき代数曲面暗号ΠをＩＮＤ−ＣＰＡの意味で破る敵Ａ＝(Ａ1,Ａ2)が存在する。この敵Ａを仮定してランダム化多項式判定問題が多項式時間内に無視できない(non-negligible)確率で解けるアルゴリズムＡが存在することを示す。即ち、アルゴリズムＡはランダム化多項式集合Ｓ（＝Ｓ(Ｘ,ｌ,ｄ)）と多項式η(x,y,t)が与えられたとき、η(x,y,t)がＳに属するか否かを図１５のように判定する。図１５において、ランダム化多項式集合のパラメータＸ,ｌ,ｄを公開鍵とする公開鍵暗号Πを考え、Ｘ,ｌ,ｄを公開鍵として敵Ａ＝（Ａ1,Ａ2）に入力する（ＳＴ１）。Ａ1は平文ｍ0(t),ｍ1(t)を暗号化オラクルεに出力する。暗号化オラクルεはｂを集合｛０,１｝からランダムに選択し、暗号文Ｆ(x,y,t)（＝ｍb(t)＋η(x,y,t)）を生成することによりシミュレートされる（ＳＴ２）。敵Ａは暗号オラクルによって生成された暗号文Ｆ(x,y,t)を受け取って（Ａ2において）多項式時間内に終了するアルゴリズムで処理し、ｂ’を出力する（ＳＴ３）。ここでｂ’＝ｂであればＤ(η,Ｓ)＝１、ｂ’≠ｂであればＤ(η,Ｓ)＝０とする。アルゴリズムＡは明らかに多項式時間内に終了する。次にＡdvAを以下のように評価する。ここで、Ｇ＝Ｆp[x,y,t],Ｒ＝Ｇ−Ｓと定義する。
【数１０】
0004575283.tif 000011
【０１０７】
【数１１】
0004575283.tif 000012
【０１０８】
［パラメータの設定方法］
本節では上述した議論でその安全性がランダム化多項式判定問題に帰着された本発明の公開鍵暗号に関して、そのパラメータの具体的な設定方法に関して説明する。
【０１０９】
本発明の公開鍵暗号のパラメータは有限体Ｆpのサイズｐとセクションの最高次数ｄである。また１変数多項式ｆ(t)の次数l(d)は条件（４）から
l(d)＝(2d＋１)e(d)＋１      （１７）
とすれば良いことが分かる。また、３変数多項式ｐ(x,y,t)のx,yの最大指数e(d)は復号の失敗確率に関するパラメータであり、その確率は命題１により１／ｐe(d)+1である。従って、失敗確率を２nとしたければ、
(|ｐ|−１)(e(d)＋１)＞ｎ
を満たすようにとれば良い。ここで|ｐ|はｐのビット長を表す。
【０１１０】
（第１の実施形態の具体的な構成）
次に、本実施形態の公開鍵暗号における暗号装置、復号装置の具体的な構成とそのアルゴリズムについて説明する。図１は本発明の第１の実施形態に係る暗号装置の全体構成図であり、図２は同実施形態における復号装置の全体構成図である。
【０１１１】
なお、以下の暗号装置１０及び復号装置２０は、各装置１０，２０毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
【０１１２】
ここで、暗号装置１０は、図１に示すように、平文入力部１１、公開鍵入力部１２、平文埋め込み部１３、暗号化部１４、１変数既約多項式生成部１５、多項式生成部１６及び暗号文出力部１７を備えている。また、暗号装置１０は、図示しないメモリ（ハードウェア資源）を有し、各部１１〜１７から入力データ、出力データ及び処理中のデータ等が適宜読出／書込可能となっている。
【０１１３】
ここで、平文入力部１１は、外部から入力された平文（メッセージ）ｍを一時的にメモリに保持し、この平文ｍを平文埋め込み部１３に送出する機能をもっている。
【０１１４】
公開鍵入力部１２は、外部から入力された公開鍵を一時的にメモリに保持し、この公開鍵を平文埋め込み部１３及び暗号化部１４に送出する機能をもっている。
【０１１５】
平文埋め込み部１３は、平文入力部１１から受けた平文ｍ及び公開鍵入力部１２から受けた公開鍵に基づいて、平文ｍを１変数tで次数ｌ-１以下の平文多項式ｍ(t)の係数として埋め込む機能と、得られた平文多項式ｍ(t)を暗号化部１４に送出する機能をもっている。
【０１１６】
暗号化部１４は、平文埋め込み部１３から受けた平文多項式ｍ(t)及び公開鍵入力部１２から受けた公開鍵Ｘ(x,y,t),ｐ,ｌ,ｄ,ｅに基づいて、図３に示す動作を実行するように、後段の各部１５〜１７を制御するものであり、特に、平文多項式ｍ(t)に対し、各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)とファイブレーションＸ(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、平文多項式ｍ(t)から暗号文Ｆ(x,y,t)（＝Ｅpk(ｍ,ｐ,ｑ,ｆ,Ｘ)）を生成する機能をもっている。
【０１１７】
１変数既約多項式生成部１５は、暗号化部１４に制御され、次数ｌ以上のランダムな１変数既約多項式ｆ(t)を生成する機能をもっている。
【０１１８】
多項式生成部１６は、暗号化部１４に制御され、３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成する機能をもっている。
【０１１９】
暗号文出力部１７は、暗号化部１４により生成された暗号文Ｆ(x,y,t)を出力する機能をもっている。
【０１２０】
一方、復号装置２０は、図２に示すように、暗号文入力部２１、鍵入力部２２、復号部２３、セクション代入部２４、１変数多項式演算部２５、１変数多項式因数分解部２６、多項式抽出部２７、１変数多項式剰余演算部２８、平文展開部２９及び平文出力部３０を備えている。また、復号装置２０は、図示しないメモリ（ハードウェア資源）を有し、各部２１〜３０から入力データ、出力データ及び処理中のデータ等が適宜読出／書込可能となっている。
【０１２１】
暗号文入力部２１は、外部から入力された暗号文Ｆを一時的にメモリに保持し、この暗号文Ｆを復号部２３に送出する機能をもっている。
【０１２２】
鍵入力部２２は、外部から入力された公開鍵を一時的にメモリに保持し、この公開鍵を復号部２３に送出する機能をもっている。
【０１２３】
復号部２３は、図４に示す動作を実行するように、後段の各部２４〜２９を制御する機能をもっている。
【０１２４】
セクション代入部２４は、復号部２３に制御され、入力された暗号文Ｆに対し、各セクションＤ1,Ｄ2を代入して２つの１変数多項式ｈ1(t),ｈ2(t)を生成する機能をもっている。
【０１２５】
１変数多項式演算部２５は、復号部２３に制御され、各１変数多項式ｈ1(t),ｈ2(t)を互いに減算し、減算結果｛ｈ1(t)−ｈ2(t)｝を得る機能をもっている。
【０１２６】
１変数多項式因数分解部２６は、復号部２３に制御され、減算結果｛ｈ1(t)−ｈ2(t)｝を因数分解する機能をもっている。
【０１２７】
多項式抽出部２７は、復号部２３に制御され、因数分解結果から最も大きな次数を持つ既約多項式ｆ(t)を抽出する機能をもっている。
【０１２８】
１変数多項式剰余演算部２８は、復号部２３に制御され、１変数多項式ｈ1(t)を既約多項式ｆ(t)で除算し、剰余として平文多項式ｍ(t)を得る機能をもっている。
【０１２９】
平文展開部２９は、復号部２３から受けた平文多項式ｍ(t)の係数から平文ｍを抽出する機能をもっている。
【０１３０】
平文出力部３０は、平文展開部２９から受けた平文ｍを出力する機能をもっている。
【０１３１】
次に、以上のように構成された暗号装置及び復号装置の動作を図３及び図４のフローチャートを用いて説明する。
【０１３２】
（暗号化処理：図３）
暗号装置１０においては、平文入力部１０から平文（メッセージ）ｍが入力され（ＳＴ１１）、公開鍵入力部１２から公開鍵Ｘ(x,y,t),ｐ,ｌ,ｄ,ｅが入力されることから（ＳＴ１２）、暗号化処理を開始する。入力された公開鍵のうち、１変数既約多項式ｆ(t)の次数であるｌと素体の標数ｐとが取得され（ＳＴ１３）、ｌ，ｐが平文埋め込み部１３に送られる。
【０１３３】
平文埋め込み部１３では、別途、平文入力部１１から送出された平文ｍを標数ｐのビット長よりも１小さいビット長に分割する。例えばｐ＝１７の場合は４ビットに分割することができる。ここで、平文ｍが１６進表示で
ｍ＝０x３１５７６３ｅｆ２５ｃ０４ｃ７９２ｅｆ１５１
であるとする。
【０１３４】
この場合、平文埋め込み部１３は、１６進表示の平文ｍを４ビット毎に分割し、平文多項式ｍ(t)の係数として次式のように埋め込む（ＳＴ１４）。
【０１３５】
ｍ(t)＝３t21＋t20＋５t19＋７t18＋６t17＋３t16＋１５t15＋１１t14＋２t13 
＋５t12＋１２t11＋０t10＋４t9＋１２t8＋７t7＋９t6＋２t5＋１４t4 
＋１５t3＋t2＋５t＋１
平文埋め込み部１３は、平文多項式ｍ(t)を暗号化部１４に送信する。一方で、公開鍵入力部１２は、公開鍵Ｘ(x,y,t),ｐ,ｌ,ｄ,ｅを暗号化部１４に送信する。
【０１３６】
暗号化部１４では、公開鍵のうち、ｌとｐを１変数既約多項式生成部１５に送信する。
【０１３７】
１変数既約多項式生成部１５は、ｌ次の１変数既約多項式ｆ(t)をランダムに生成し（ＳＴ１５）、得られた１変数既約多項式ｆ(t)を暗号化部１４に返信する。ここで、既約多項式の生成はｌ次の多項式をランダムに生成し、Ｆp上の既約性判定を１変数多項式が既約多項式となるまで繰り返すことにより行う。
【０１３８】
暗号化部１４は、１変数既約多項式ｆ(t)を得ると、多項式生成部１６にｐ,ｌ,ｄ,ｅを送信する。多項式生成部１６は、ｐ,ｌ,ｄ,ｅに基づいて、３変数多項式の各項が次数に関する関係式（３）と条件（４）を満たすようにランダムな３変数多項式ｐ(x,y,t)を生成する（ＳＴ１６）。生成方法はランダムに生成した後、２つの条件を満たすことをチェックし、満たさなかった時には再度ランダムに生成する方法と２条件に合うように生成する３変数多項式に制約を掛ける方法がある。いずれの方法を用いるにせよ条件（３）（４）の範囲においては十分に多様な係数を取りえる余地が存在するため実行可能な時間内で生成が終了する。多項式生成部１６は、得られた３変数多項式ｐ(x,y,t)を暗号化部１４に送信する。
【０１３９】
暗号化部１４は、３変数多項式ｐ(x,y,t)を受けると、公開鍵のうちｐ,ｌ,ｄ,ｅを多項式生成部１６に送信する。多項式生成部１６は、ｐ,ｌ,ｄ,ｅに基づいて、条件(５)を満たすように３変数のランダムな多項式ｑ(x,y,t)を生成し（ＳＴ１７）、得られた３変数多項式ｑ(x,y,t)を暗号化部１４に送信する。
【０１４０】
暗号化部１４は、以上の処理で得られたｍ(t),ｆ(t),ｐ(x,y,t),ｑ(x,y,t)と公開鍵である代数曲面Ｘ(x,y,t)を利用して、式（６）に従って暗号文Ｆ(x,y,t)を計算し展開する（ＳＴ１８）。暗号化部１４は、この暗号文を（必要ならば予め定められたフォーマットに合わせて変形し）暗号文出力部１７から出力し（ＳＴ１９）、暗号化処理を終了する。
【０１４１】
（復号処理：図４）
復号装置２０においては、暗号文入力部２１から暗号文Ｆ(x,y,t)を取得し（ＳＴ２１）、鍵入力部２２から公開鍵Ｘ(x,y,t),ｐと秘密鍵を取得することから（ＳＴ２２）、復号処理を開始する。ここで、秘密鍵とは２つのセクションＤ1,Ｄ2である。取得された暗号文と鍵情報は復号部２３に送られる。
【０１４２】
復号部２３は、セクション代入部２４に暗号文Ｆ(x,y,t)とセクションＤ1を送信する。セクション代入部２４は、Ｄ1をＦ(x,y,t)に代入し、必要に応じて１変数多項式演算部２５を利用することにより、ｈ1(t)を得る（ＳＴ２３）。ここで、１変数多項式演算部２５は１変数多項式の加減乗除演算を行う。得られたｈ1(t)は、セクション代入部２４から復号部２３に送信される。
【０１４３】
また同様に、復号部２３は、セクション代入部２４に暗号文Ｆ(x,y,t)とセクションＤ2を送信する。セクション代入部２４は、セクションＤ2をＦ(x,y,t)に代入し、ｈ2(t)を得る（ＳＴ２４）。得られたｈ2(t)は、セクション代入部２４から復号部２３に送信される。
【０１４４】
復号部２３は、ｈ1(t),ｈ2(t)を１変数多項式演算部２５に送信して減算させる。１変数多項式演算部２５は、減算結果｛ｈ1(t)−ｈ2(t)｝を復号部２３に送信する。
【０１４５】
復号部２３は、減算結果｛ｈ1(t)−ｈ2(t)｝を１変数多項式因数分解部２６に送信して因数分解させる（ＳＴ２５）。１変数多項式因数分解部２６は、因数分解結果のうち、最大次数の因子として既約多項式ｆ(t)を決定し（ＳＴ２６）、この既約多項式ｆ(t)を復号部２３に送信する。
【０１４６】
次に、復号部２３は、ｆ(t),ｈ1(t)を１変数多項式剰余演算部２８に送信する。
【０１４７】
１変数多項式剰余演算部２８は、ｈ1(t)をｆ(t)で除し、剰余として平文多項式ｍ(t)を計算し（ＳＴ２７）、復号部２３に送信する。
【０１４８】
復号部２３では、ｍ(t)を平文展開部２９に送信する。平文展開部２９はこの平文多項式ｍ(ｔ)から平文ｍを展開し、得られた平文ｍを平文出力部３０に送信する。平文出力部３０はこの平文ｍを出力する（ＳＴ２９）。これにより、復号装置２０は、復号処理を終了する。
【０１４９】
上述したように本実施形態によれば、量子計算機が出現しても安全性を確保できる可能性があり、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある証明可能安全な公開鍵暗号方式を構成することができる。
【０１５０】
補足すると、本実施形態によれば、復号用の秘密鍵が代数曲面ＸのファイブレーションＸ(x,y,t)＝０に対応する２つ以上のセクションであり、公開鍵が代数曲面ＸのファイブレーションＸ(x,y,t)であるという構成により、量子計算機が出現しても安全性を確保できる可能性があり、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号方式を構成できる。
【０１５１】
また、本実施形態によれば、次数ｌ-１以下の平文多項式ｍ(t)と、次数ｌ以上のランダムな１変数既約多項式ｆ(t)とを用いる構成により、前述した証明５に基づいて、ＩＮＤ−ＣＰＡの意味で証明可能安全な公開鍵暗号方式を構成できる。
【０１５２】
＜第１の実施形態のバリエーション＞
第１のバリエーションは、本実施形態の公開鍵におけるｐ,ｌ,ｄ,ｅを固定パラメータとする構成により、公開鍵のサイズを減らすバリエーションである。勿論これらの一部だけを固定にする利用方法も考えられる。
【０１５３】
本バリエーションにおいては、パラメータの一部が固定されることから、鍵生成時に制約があるものの、十分大きいｌ,ｄ,ｅが取られていれば、何回かの試行で所望の公開鍵Ｘ(x,y,t)を生成可能である。
【０１５４】
第２のバリエーションは、暗号化に用いる式（６）の変形に関するバリエーションである。式（６）は、例えば
Ｆ(x,y,t)＝ｍ(t)−ｆ(t)ｐ(x,y,t)−Ｘ(x,y,t)ｑ(x,y,t)
のように変形しても同様に暗号化／復号が可能であり、同様の安全性が証明可能である。このように本発明の趣旨に反しない範囲で暗号化の式を変形し、それに伴い復号処理を変更することが十分可能である。
【０１５５】
第３のバリエーションは、平文ｍを１変数既約多項式ｆ(t)にも埋め込む方式である。前述した実施形態ではｆ(t)をランダムに生成する方式を示したが、秘密鍵無しにｆ(t)を求めることが困難であることも本発明の公開鍵暗号の性質であるから、ｆ(t)にも平文情報を埋め込む方式が実現可能となっている。
【０１５６】
ｆ(t)にも平文ｍを埋め込む場合、より大きなサイズの平文を一度に暗号化できる。但し、埋め込んだ結果ｆ(t)を既約多項式とする必要から、特定の係数にはランダムな係数が入るように予め定めておく必要がある。既約多項式は極めて多く存在するため、一部の係数に平文ｍを埋め込んだとしても、ほとんどの場合、既約多項式を得ることができる。仮に得られなかった場合にはｆ(t)の次数を上げることにより、探索範囲を増やすことも可能である。このような変形を施しても同様の安全性を証明可能となっている。
【０１５７】
第４のバリエーションは公開鍵から３変数多項式ｐ(x,y,t)のx,yの最高指数としてのパラメータｅを除く方式である。このパラメータｅ本来命題１に示したように復号の失敗確率を表現する時の指数になるものである。即ち、安全性に関して直接の指標にならないため、復号失敗時には（ｐ(x,y,t)を変更して）再暗号化する規則にすれば、パラメータｅを公開鍵から外す実施形態も可能である。このような実施形態をとることにより、公開鍵サイズが小さくなる他、ｐ(x,y,t)の生成を必要以上に制限する必要がなくなる。
【０１５８】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。本実施形態の公開鍵と秘密鍵は第１の実施形態と同じである。本実施形態の公開鍵暗号は、受動的な攻撃に関して安全性（ＩＮＤ−ＣＰＡ）を保証した第１の実施形態に比べ、より高い安全性を保証するものであり、具体的には、能動的な攻撃に関しても安全性（ＩＮＤ−ＣＣＡ）を保証している。
【０１５９】
本実施形態は、第１の実施形態に示した公開鍵暗号がＩＮＤ−ＣＰＡの意味での安全性を有することから、特許文献２に記載されている変換を用いることによってＩＮＤ−ＣＣＡの意味で安全な公開鍵暗号を構成する。
【数１２】
0004575283.tif 000013
のように実行する。即ち、平文ｍとランダム要素ｒ（第１の実施形態では３変数多項式ｐ(x,y,t),ｑ(x,y,t)や一変数多項式ｆ(t)の各因子の係数などにあたる）に基づいて暗号化されていた公開鍵を、ｍ‖ｒを平文として、ｍ‖ｒのハッシュ値Ｈ(ｍ‖ｒ)をランダム要素として暗号化する方式に変換する。
【０１６０】
これに伴い復号処理においては、第１の実施形態と同様の復号処理で復号した後、平文ｍ‖ｒから真のメッセージであるｍを抽出すると共に、平文ｍ‖ｒのハッシュ値Ｈ(ｍ‖ｒ)を計算し、Ｈ(ｍ‖ｒ)をランダム要素とする暗号文Ｆ’(x,y,t)を再現して入力された暗号文Ｆ(x,y,t)と比較し、一致している場合には復号された平文ｍを出力するが、一致していない場合には復号結果を出力せず、無効な暗号文である旨の出力を行なう。
【０１６１】
しかし、特許文献２記載の変換は強い意味での安全性を主張するため、暗号文にある種の構造を持たせることから、第１の実施形態のようなランダム性の強い暗号文の構成が難しくなる。その意味からは暗号化の方式自体は（ランダム性という側面からみれば）弱いアルゴリズムとなっており、例えばｐ(x,y,t),ｑ(x,y,t)で用いる多項式の項の種類、即ち
【数１３】
0004575283.tif 000014
において出現する項xiyjtkやxlymtnを決めておき、係数ａi,j,k,ｂl,m,nにランダム要素Ｈ(ｍ‖ｒ)を割り振るような単純な変換を施すだけでは安全な方式を構成することができない。一方、本実施形態では、安全性を保ったまま変換を実施する具体的な方式を示す。
【０１６２】
（第２の実施形態の具体的な構成）
次に、本発明の第２の実施形態について説明する。なお、本実施形態の公開鍵と秘密鍵は第１の実施形態と同様なので、説明を省略する。鍵生成に関しても第１の実施形態と同様である。
【０１６３】
図５は本発明の第２の実施形態に係る暗号装置の全体構成図であり、図６は同実施形態における復号装置の全体構成図であって、図１又は図２と同一部分については同一符号を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。
【０１６４】
すなわち、本実施形態は、第１の実施形態の変形例であり、前述した通り、より高い安全性を保証するものであって、平文ｍに乱数ｒを連結してｍ‖ｒとし、このｍ‖ｒのハッシュ値Ｈ(ｍ‖ｒ)をランダム要素として用いている。
【０１６５】
具体的には、暗号装置１０においては、平文埋め込み部１３’、暗号化部１４’及び多項式生成部１６’が若干変形されており、乱数生成部１８が付加されている。また、復号装置２０においては、平文展開部２９’及び平文出力部３０’が若干変形されており、暗号文検証部３１が付加されている。
【０１６６】
ここで、平文埋め込み部１３’は、平文入力部１１から送出された平文（メッセージ）ｍを受け、且つ公開鍵入力部１２から送出された公開鍵を受けたとき、乱数生成部１８に乱数生成を指示する機能と、平文ｍと乱数ｒとを連結して新たな平文Ｍ（＝ｍ‖ｒ）を生成する機能と、公開鍵に基づいて、平文Ｍを１変数tで次数ｌ-１以下の平文多項式Ｍ(t)の係数として埋め込む機能をもっている。
【０１６７】
暗号化部１４’は、前述した機能に加え、図７〜図９に示す動作を実現させるように、多項式生成部１６’を制御する機能をもっている。
【０１６８】
多項式生成部１６’は、暗号化部１４’に制御され、平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)を生成するものであり、平文Ｍのハッシュ値Ｈ(M)に基づいて３変数x,y,tのランダムな多項式ｐ(x,y,t),ｑ(x,y,t)の各項のx指数、y指数、t指数及び係数のうち、少なくとも２つ以上を生成する機能をもっている。
【０１６９】
乱数生成部１８は、平文埋め込み部１３’に制御され、固定長の乱数ｒを生成する機能と、生成した乱数ｒを平文埋め込み部１３’に送出する機能とをもっている。
【０１７０】
一方、平文展開部２９’は、復号部２３から受けた平文多項式Ｍ(t)の係数から平文Ｍを抽出する機能と、この平文Ｍを暗号文検証部３１に送出する機能とをもっている。
【０１７１】
平文出力部３０’は、暗号文検証部３１による判定結果が一致の場合、暗号文検証部３１から受けた平文Ｍ又はメッセージｍを出力する機能と、この判定結果が否の場合、暗号文無効情報を出力する機能をもっている。
【０１７２】
暗号文検証部３１は、平文展開部２９’により得られた平文Ｍに基づいて、この平文Ｍのハッシュ値Ｈ(M)を演算する機能と、得られたハッシュ値Ｈ(M)をメモリ（図示せず）に保持する機能と、メモリ内のハッシュ値Ｈ(M)に基づいて、３変数x,y,tの多項式ｐ(x,y,t),ｑ(x,y,t)を生成する機能と、各多項式ｐ(x,y,t),ｑ(x,y,t),ｆ(t)とファイブレーションＸ(x,y,t)とに基づいて、暗号装置１０の暗号化処理と同じ処理により、暗号文Ｆ’(x,y,t)（＝Ｅpk(Ｍ,ｐ,ｑ,ｆ,Ｘ)）を再現する機能と、入力された暗号文Ｆ(x,y,t)と再現された暗号文Ｆ’(x,y,t)とが一致するか否かを判定する機能と、判定結果に応じて平文出力部３０’を制御する機能とをもっている。
【０１７３】
次に、以上のように構成された暗号装置及び復号装置の動作を図７〜図１０のフローチャートを用いて説明する。
【０１７４】
（暗号化処理：図７〜図９）
ステップＳＴ１１〜ＳＴ１３までの処理は、前述した通りに実行される。
【０１７５】
次に、平文埋め込み部１３’は、平文入力部１１から入力された平文ｍに対し、乱数生成部１８に乱数生成を指示する。乱数生成部１８は、この指示により、固定長の乱数ｒを生成して平文埋め込み部１３’に送信する（ＳＴ１４’−１）。
【０１７６】
平文埋め込み部１３’は、受信した乱数ｒを平文ｍに連結してＭ(＝ｍ‖ｒ)を生成すると共に（ＳＴ１４’−２）、Ｍを新たな平文として平文多項式Ｍ(t)を第１の実施形態と同じ処理で生成する（ＳＴ１４’−３）。
【０１７７】
次に、本実施形態における３変数多項式ｐ(x,y,t),ｑ(x,y,t)の生成処理について説明する。暗号化部１４’は、１変数既約多項式ｆ(t)を１変数既約多項式生成部１５に生成させた後（ＳＴ１５）、Ｍ(＝ｍ‖ｒ)のハッシュ値Ｈ(ｍ‖ｒ)を計算する（ＳＴ１６’−１）。次に、暗号化部１４’は、多項式生成部１６’にｐ,ｌ,ｄ,ｅ及びＨ(ｍ‖ｒ)を送信する。
【０１７８】
多項式生成部１６’は、ｐ,ｌ,ｄ,ｅ及びＨ(ｍ‖ｒ)に基づいて、３変数多項式ｐ(x,y,t),ｑ(x,y,t)の各項がハッシュ値Ｈ(ｍ‖ｒ)の値を反映するように、３変数多項式ｐ(x,y,t),ｑ(x,y,t)を生成する。このとき、ｐ(x,y,t)は、条件（３）と条件（４）を満たし、最高次数をｅ以上とするように、生成される。ｑ(x,y,t)は、条件（５）を満たすように生成される。具体的な生成方法は以下の通りである。
【０１７９】
ｅx,ｅy,ｅtをｅx,ｅy がそれぞれdegxＸ(x,y,t),degyＸ(x,y,t)を超える自然数であり、 かつ(ｅx＋ｅy)ｄ＋ｅt＜ｌを満たすように定める（ＳＴ１６’−２）。このようなｅx,ｅy,ｅtはｌを十分大きくとっているので具体的に定めることができる。
【０１８０】
更に、生成される多項式ｑ(x,y,t)が条件（５）を満足するためにｄx,ｄy,ｄtをｄt＜ｌなる条件の下で定める（ＳＴ１６’−３）。続いて、次式に示すように、ブロックサイズｂp,ｂqを定める（ＳＴ１６’−４）。
【０１８１】
ｂp＝|ｐ|＋|ｅx|＋|ｅy|＋|ｅt|,
ｂq＝|ｐ|＋|ｄx|＋|ｄy|＋|ｄt|
ここで、|ａ|はａのビット長を意味する。また、ｂpはｐ(x,y,t)の１つの項ａi,j,kxiyjtkを生成するために必要なブロックサイズである。同様にｂqはｑ(x,y,t)の１つの項ｂi,j,kxiyjtkを生成するために必要なブロックサイズである。
【０１８２】
これを受けて、Ｈ(ｍ‖ｒ)の前半分をｂpビットずつｇブロックに、後半分をｂqビットずつｈブロックに分解して
Ｈ(ｍ‖ｒ)＝α1‖・・・‖αg‖β1‖・・・‖βh
とする（ＳＴ１６−５’）。
【０１８３】
そしてｐ(x,y,t)＝０として（ＳＴ１６’−６）、３変数ランダム多項式ｐ(x,y,t)を条件（４）を満たすように生成する。具体的には、Ｈ(ｍ‖ｒ)の前半分α1‖α2‖・・・‖αgの各ブロックに対して以下の操作をｎ＝１・・・,ｇにおいて繰り返し行なう（ＳＴ１６’−７〜ＳＴ１６’−９）。
【０１８４】
ここで、ブロックの各αnは
|γ0|＝|ｐ|,|γ1|＝|ｅx|,|γ2|＝|ｅy|,|γ3|＝|ｅt|
の大きさで
αn＝γ0(n)‖γ1(n)‖γ2(n)‖γ3(n)
のごとく分割される（ＳＴ１６’−７）。
【０１８５】
ａ＝γ0(n)  (ｍｏｄ  ｐ)
ｉ＝γ1(n)  (ｍｏｄ  ｅx)
ｊ＝γ2(n)  (ｍｏｄ  ｅy)
ｋ＝γ3(n)  (ｍｏｄ  ｅt)
（ＳＴ１６’−８）
ｐ(x,y,t)＋＝ａxiyjtk      （ＳＴ１６’−９）
なお、記号“＋＝”は、左辺に右辺を足し込む旨を意味する。
【０１８６】
このようにして完成されたｐ(x,y,t)は、条件（３）を満たすか否かが判定され（ＳＴ１６’−１０）、否の場合、多項式生成部１６’は、暗号化部１４’にその旨を出力する。
【０１８７】
暗号化部１４’では、ステップＳＴ１３終了後の状態に戻り、平文埋め込み部１３’に対して平文の再埋め込みを指示する。以下、前述同様に、ステップＳＴ１４〜ＳＴ１６’−１０までの処理が再度、実行される。
【０１８８】
一方、ステップＳＴ１６’−１０の判定の結果、ｐ(x,y,t)が条件（３）を満たしたとする。この場合、ｑ(x,y,t)＝０として（ＳＴ１７’−１）、３変数ランダム多項式ｑ(x,y,t)を条件（５）を満たすように生成する。具体的には、Ｈ(ｍ‖ｒ)の後半分β1‖β2‖・・・‖βhの各ブロックに対して以下の操作をｍ＝１・・・,ｈにおいて繰り返し行なう（ＳＴ１７’−２〜ＳＴ１７’−４）。
【０１８９】
ここで、ブロックの各βmは
|ζ0|＝|ｐ|,|ζ1|＝|ｄx|,|ζ2|＝|ｄy|,|ζ3|＝|ｄt|
の大きさで
βn＝ζ0(m)‖ζ1(m)‖ζ2(m)‖ζ3(m)
のごとく分割される（ＳＴ１７’−２）。
【０１９０】
ｂ＝ζ0(m)  (ｍｏｄ  ｐ)
ｉ＝ζ1(m)  (ｍｏｄ  ｄx)
ｊ＝ζ2(m)  (ｍｏｄ  ｄy)
ｋ＝ζ3(m)  (ｍｏｄ  ｄt)
（ＳＴ１７’−３）
ｑ(x,y,t)＋＝ｂxiyjtk        （ＳＴ１７’−４）
これにより、３変数多項式ｑ(x,y,t)が生成される。多項式生成部１６’は、これら３変数多項式ｐ(x,y,t),ｑ(x,y,t)を暗号化部１４’に出力する。
【０１９１】
暗号化部１４’は、Ｍ(t),ｆ(t),ｐ(x,y,t),ｑ(x,y,t)を用いて
Ｆ(x,y,t)＝Ｍ(t)＋ｆ(t)ｐ(x,y,t)＋Ｘ(x,y,t)ｑ(x,y,t)によって暗号文Ｆ(x,y,t)を計算する（ＳＴ１８’）。得られた暗号文Ｆ(x,y,t)は、前述同様に、暗号文出力部１７から出力される（ＳＴ１９）。
【０１９２】
（復号処理：図１０）
ステップＳＴ２１〜ＳＴ２７までの処理は、前述した通りに実行される。これにより、復号部２３では、ステップＳＴ２１で入力された暗号文Ｆ(x,y,t)から、平文多項式Ｍ(t)が得られる。
【０１９３】
復号部２３は、この平文多項式Ｍ(t)を平文展開部２９’に送信する。平文展開部２９’は、この平文多項式Ｍ(t)から平文Ｍを展開し（ＳＴ２８’−１）、得られた平文Ｍを暗号文検証部３１に送る。
【０１９４】
暗号文検証部３１では、この平文Ｍからハッシュ値Ｈ(ｍ‖ｒ)を計算し（ＳＴ２８’−２）、得られたＨ(ｍ‖ｒ)から暗号装置１０の暗号化処理と同じ処理により、３変数多項式ｐ(x,y,t),ｑ(x,y,t)を生成する（ＳＴ２８’−３）。次に、暗号文検証部３１は、３変数多項式ｐ(x,y,t),ｑ(x,y,t)と、先に得られているｆ(t),Ｍ(t)とに基づいて、暗号文Ｆ’(x,y,t)を再現する（ＳＴ２８’−４）。
【０１９５】
しかる後、暗号文検証部３１は、ステップＳＴ２１で入力された暗号文Ｆ(x,y,t)と、ステップＳＴ２８’−４で再現した暗号文Ｆ’(x,y,t)とが一致するか否かを判定する（ＳＴ２８’−５）。
【０１９６】
この判定結果が否の場合、暗号文検証部３１は、平文出力部３０’に暗号文が無効である旨の信号を送り、平文出力部３０’は暗号文無効情報を出力する（ＳＴ２８’−６）。
【０１９７】
一方、ステップ２８’−５の判定結果が一致を示す場合、暗号文検証部３１は、平文出力部３０’に平文Ｍを送る。平文出力部３０’は、平文Ｍを真の平文ｍに変換し、平文ｍを出力する（ＳＴ２９）。
【０１９８】
上述したように本実施形態によれば、第１の実施形態の効果に加え、第１の実施形態のＩＮＤ−ＣＰＡよりも安全であるＩＮＤ−ＣＣＡの意味で証明可能安全な公開鍵暗号方式を構成することができる。
【０１９９】
補足すると、本実施形態では、メッセージｍと乱数ｒを連結した平文Ｍを平文多項式Ｍ(t)の係数として埋め込む構成により、ＩＮＤ−ＣＰＡの意味で安全な公開鍵暗号方式を、ＩＮＤ−ＣＣＡの意味で証明可能安全な公開鍵暗号方式に変換している。従って、本実施形態によれば、ＩＮＤ−ＣＣＡの意味で証明可能安全な公開鍵暗号方式を構成することができる。
【０２００】
＜第２の実施形態のバリエーション＞
第１の実施形態で述べた第１〜第４のバリエーションは、本実施形態でもそのまま成り立つ。すなわち、第１のバリエーションとして、公開鍵におけるｐ,ｌ,ｄ,ｅの一部又は全部を固定パラメータとし、公開鍵のサイズを減らすことができる。
【０２０１】
また、第２のバリエーションとして、暗号化に用いる式（６）を例えば、
Ｆ(x,y,t)＝ｍ(t)−ｆ(t)ｐ(x,y,t)−Ｘ(x,y,t)ｑ(x,y,t)
のように変形して暗号化／復号してもよい。
【０２０２】
さらに、第３のバリエーションとして、平文Ｍ＝ｍ‖ｒを１変数既約多項式ｆ(t)にも埋め込む方式としてもよい。この場合、暗号化処理及び復号処理のフローチャートはそれぞれ図１１（ＳＴ１４”−３，ＳＴ１５”）又は図１２（ＳＴ２８”）に示すように変形される。これに伴い、平文埋め込み部１３’、１変数既約多項式生成部１５及び平文展開部２９’は、それぞれ以下のように変形される。
【０２０３】
すなわち、平文埋め込み部１３’は、メッセージｍと乱数ｒを連結した平文Ｍを１変数tで次数ｌ-１以下の平文多項式Ｍ(t)と次数ｌ以上の１変数既約多項式ｆ(t)の候補の一部の係数とに分担して埋め込むものに変形される。また、１変数既約多項式生成部１５は、１変数既約多項式ｆ(t)の候補の各係数のうち、平文Ｍが埋め込まれていない係数をランダムな値に設定し、１変数既約多項式ｆ(t)を生成するものに変形される。さらに、平文展開部２９’は、平文多項式Ｍ(t)の係数と既約多項式ｆ(t)の一部の係数とから平文Ｍを抽出するものに変形される。
【０２０４】
以上のように、第２の実施形態においても、第１の実施形態で述べた第１〜第３のバリエーションを用いることができる。
【０２０５】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０２０６】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０２０７】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【０２０８】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０２０９】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０２１０】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０２１１】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０２１２】
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０２１３】
【図１】本発明の第１の実施形態に係る暗号装置の全体構成図である。
【図２】同実施形態に係る復号装置の全体構成図である。
【図３】同実施形態における暗号装置の処理の流れを説明するためのフローチャートである。
【図４】同実施形態における復号装置の処理の流れを説明するためのフローチャートである。
【図５】本発明の第２の実施形態に係る暗号装置の全体構成図である。
【図６】同実施形態に係る復号装置の全体構成図である。
【図７】同実施形態における暗号装置の処理の流れを説明するためのフローチャートである。
【図８】同実施形態における暗号装置の処理の流れを説明するためのフローチャートである。
【図９】同実施形態における暗号装置の処理の流れを説明するためのフローチャートである。
【図１０】同実施形態における復号装置の処理の流れを説明するためのフローチャートである。
【図１１】同実施形態における暗号装置のバリエーションを説明するためのフローチャートである。
【図１２】同実施形態における復号装置のバリエーションを説明するためのフローチャートである。
【図１３】各実施形態における代数曲面を説明するための模式図である。
【図１４】各実施形態における安全性証明を説明するための模式図である。
【図１５】各実施形態における安全性証明を説明するための模式図である。
【符号の説明】
【０２１４】
１０…暗号装置、１１…平文入力部、１２…公開鍵入力部、１３，１３’…平文埋め込み部、１４，１４’…暗号化部、１５…１変数既約多項式生成部、１６，１６’…多項式生成部、１７…暗号文出力部、１８…乱数生成部、２０…復号装置、２１…暗号文入力部、２２…鍵入力部、２３…復号部、２４…セクション代入部、２５…１変数多項式演算部、２６…１変数多項式因数分解部、２７…多項式抽出部、２８…１変数多項式剰余演算部、２９，２９’…平文展開部、３０…平文出力部、３１…暗号文検証部。
【図１】
0004575283.tif 000015
【図２】
0004575283.tif 000016
【図３】
0004575283.tif 000017
【図４】
0004575283.tif 000018
【図５】
0004575283.tif 000019
【図６】
0004575283.tif 000020
【図７】
0004575283.tif 000021
【図８】
0004575283.tif 000022
【図９】
0004575283.tif 000023
【図１０】
0004575283.tif 000024
【図１１】
0004575283.tif 000025
【図１２】
0004575283.tif 000026
【図１３】
0004575283.tif 000027
【図１４】
0004575283.tif 000028
【図１５】
0004575283.tif 000029