説明

暗号装置、復号装置、鍵生成装置及びプログラム

【課題】代数曲面を用いた公開鍵暗号方式において、1変数多項式に起因した脆弱性を解消する。
【解決手段】暗号装置100は、メッセージを3変数の平文多項式の係数として埋め込む平文埋め込み部104と、3変数の識別多項式を生成する識別多項式生成部106と、3変数の多項式をランダムに生成する多項式生成部107と、公開鍵の一部である3変数の期間多項式と、これら3変数の多項式同士を演算することにより、暗号文を生成する暗号化部105とを備えている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、公開鍵暗号システムに用いられる暗号装置、復号装置、鍵生成装置及びプログラムに関する。
【背景技術】
【0002】
ネットワーク社会では、電子メール等の多くの情報がネットワーク上に伝送されることにより、人々のコミュニケーションが行われる。このようなネットワーク社会において、公開鍵暗号は情報の機密性や真正性を守る技術として広く活用されている。
【0003】
代表的な公開鍵暗号としてはRSA暗号と楕円曲線暗号がある。これらの公開鍵暗号は、一般的な解読法が知られていないため、後述する量子計算機による解読法を除き、安全性に関する重大な問題が見つかっていない。他の公開鍵暗号としてはナップサック暗号と多次多変数暗号などがある。しかしながら、ナップサック暗号は有力な解読法があるため、安全性に疑問がある。多次多変数暗号は、鍵サイズの増大により、有力な攻撃方法を避けられる反面、鍵サイズが膨大になってしまう問題がある。
【0004】
一方、RSA暗号と楕円曲線暗号は量子計算機が出現すれば解読される可能性が高い。量子計算機は、現在の計算機とは異なり、量子力学におけるエンタングルメントという物理現象を利用して超並列計算を実行可能な計算機である。量子計算機は、実験レベルの仮想の計算機であるが、実現に向けて研究開発が進められている。1994年にショア(Shor)は、量子計算機によれば素因数分解や離散対数問題を効率的に解けることを示した。従って、量子計算機が実現すれば、素因数分解に基づくRSA暗号や、楕円曲線上の離散対数問題に基づく楕円曲線暗号は解読される可能性が高い。
【0005】
他方、量子計算機が実現されても安全な公開鍵暗号が研究されてきている。一例として、量子公開鍵暗号が挙げられる。量子公開鍵暗号では、現在の計算機では鍵生成が不可能である程に強力なナップサック暗号の鍵を量子計算機により生成する。このため、量子公開鍵暗号では、量子計算機でも計算できない程に強力なナップサック暗号を構成し得る。しかしながら、量子公開鍵暗号は、現在の計算機では鍵生成が不可能であるため、現時点では利用できない。
【0006】
一方、多次多変数暗号は、現時点でも実現可能であり、量子計算機でも解読が難しい。しかしながら、多次多変数暗号は、前述した通り、膨大な鍵サイズを要するため、実用化が疑問視されている。
【0007】
更に、公開鍵暗号は、共通鍵暗号と比べ、回路規模が大きく、処理時間が長い。よって、モバイル端末などの小電力環境では実現できないか、実現しても待ち時間が長いという問題がある。このため、小電力環境でも実現できる公開鍵暗号が求められている。
【0008】
一般に公開鍵暗号は、予め素因数分解問題や離散対数問題などの計算困難な問題を見出し、秘密鍵を知らずに暗号文の解読を試みる場合に当該計算困難な問題を解くことと同等になるように構成する。
【0009】
しかし、計算困難な問題が見つかっても、その問題を安全性の根拠とする公開鍵暗号を容易に構成できる訳ではない。理由は、計算が困難すぎる問題を安全性の根拠にすると鍵を生成する問題も困難になるので、鍵を生成できないためである。一方、鍵生成が可能な程度に問題を容易にすると、解読も容易になってしまう。
【0010】
従って、公開鍵暗号を構成するには、計算困難な問題を見つけるとともに、見つけた問題を、鍵生成が容易だが、解読が容易でないという絶妙なバランスを持つ問題に作り変える必要がある。このような問題の作り変えには高い創造性を必要とする。実際には、問題の作り変えが極めて困難なため、数えるほどの公開鍵暗号しか提案されていない。
【0011】
このような状況において、量子計算機でも効率的に解読できない可能性があり、小電力環境でも高速に処理可能な公開鍵暗号として、代数曲面を用いた公開鍵暗号が提案されている(例えば、特許文献1参照。)。
【0012】
代数曲面を用いた公開鍵暗号は、秘密鍵を代数曲面X(x,y,t)に対応する2つのセクションとし、公開鍵を代数曲面X(x,y,t)とする時、平文mを1変数の平文多項式m(t)に埋め込む処理と、次数Lの1変数既約多項式f(t)をランダムに生成する処理と、3変数x,y,tのランダム化多項式s(x,y,t),r(x,y,t)を生成する処理と、各多項式s(x,y,t),r(x,y,t),f(t)と定義式X(x,y,t)とを演算する処理とにより、平文多項式m(t)から暗号文F=Epk(m,s,r,f,X)を生成する方式である。この方式は、後述する代数曲面上の求因子問題に安全性の根拠をおくので、解読が困難となっている。
【特許文献1】特開2005−331656号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
しかしながら、以上のような代数曲面を用いた公開鍵暗号は、平文多項式m(t)及び既約多項式f(t)の両方が1変数多項式となっている。このため、1変数多項式に秘密が隠されていることを攻撃者に積極的に利用されると解読される可能性があり、この意味で脆弱性が存在する。
【0014】
本発明は上記実情を考慮してなされたもので、代数曲面を用いた公開鍵暗号方式において、1変数多項式に起因した脆弱性を解消し得る暗号装置、復号装置、鍵生成装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0015】
第1の発明は、体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式を用い、前記公開鍵であるファイブレーションX(x,y,t)及び基幹多項式Gj(x,y,t)に基づいて、メッセージmを暗号化するための暗号装置であって、前記メッセージmを3変数の平文多項式m(x,y,t)の係数として埋め込む平文埋め込み手段と、前記平文多項式に前記セクションを代入したときに得られる1変数多項式の次数に比べ、前記セクションを代入したときに得られる1変数多項式の次数が大きくなる範囲で3変数の識別多項式f(x,y,t)を生成する識別多項式生成手段と、3変数の多項式s1(x,y,t),s2(x,y,t),r1j(x,y,t),r2j(x,y,t),w1j(x,y,t),w2j(x,y,t)をランダムに生成する多項式生成手段と、前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s1(x,y,t)の乗算結果f(x,y,t)s1(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w1j(x,y,t)の乗算結果Gj(x,y,t)w1j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r1j(x,y,t)の乗算結果X(x,y,t)r1j(x,y,t)とを加算又は減算する処理により、k個の第1の暗号文F1j(x,y,t)=Epk(m,f,s1,Gj,w1j,r1j,X)(但し、j=1,2,...,k)を生成する第1の暗号化手段と、前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s2(x,y,t)の乗算結果f(x,y,t)s2(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w2j(x,y,t)の乗算結果Gj(x,y,t)w2j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r2j(x,y,t)の乗算結果X(x,y,t)r2j(x,y,t)とを加算又は減算する処理により、k個の第2の暗号文F2j(x,y,t)=Epk(m,f,s2,Gj,w2j,r2j,X)(但し、j=1,2,...,k)を生成する第2の暗号化手段と、を備えた暗号装置である。
【0016】
第2の発明は、体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式が用いられ、前記メッセージmが係数として埋め込まれた3変数の平文多項式m(x,y,t)に対し、3変数の識別多項式f(x,y,t)及び多項式s1(x,y,t)の乗算結果f(x,y,t)s1(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w1j(x,y,t)の乗算結果Gj(x,y,t)w1j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r1j(x,y,t)の乗算結果X(x,y,t)r1j(x,y,t)とを加算又は減算する処理により生成されたk個の第1の暗号文F1j(x,y,t)=Epk(m,f,s1,Gj,w1j,r1j,X)(但し、j=1,2,...,k)と、前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s2(x,y,t)の乗算結果f(x,y,t)s2(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w2j(x,y,t)の乗算結果Gj(x,y,t)w2j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r2j(x,y,t)の乗算結果X(x,y,t)r2j(x,y,t)とを加算又は減算する処理により生成されたk個の第2の暗号文F2j(x,y,t)=Epk(m,f,s2,Gj,w2j,r2j,X)(但し、j=1,2,...,k)との2k個の暗号文F1j(x,y,t),F2j(x,y,t)が入力されたとき、前記セクションに基づいて、当該暗号文F1j(x,y,t),F2j(x,y,t)から前記メッセージmを復号するための復号装置であって、前記入力された暗号文F1j(x,y,t),F2j(x,y,t)のそれぞれに対し、前記セクションを代入して2k個の1変数多項式h1j(t),h2j(t)を生成するセクション代入手段と、前記各1変数多項式h1j(t)及びh2j(t)を互いに減算し、減算結果{h1j(t)−h2j(t)}を得る多項式減算手段と、前記減算結果{h1j(t)−h2j(t)}を、それぞれ前記基幹多項式Gj(x,y,t)にセクションを代入した1変数多項式Gj(ux(t),uy(t),t)で除算し、k個の剰余gj(t)≡{h1j(t)−h2j(t)} mod Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)を得る第1の剰余演算手段と、3個以上の前記剰余gj(t)、前記剰余gj(t)と同数の1変数多項式Gj(ux(t),uy(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を法とした剰余g(t)≡{G1(ux(t),uy(t),t)g2(t)...gk(t)+G2(ux(t),uy(t),t)g1(t)g3(t)...gk(t)+...+Gk(ux(t),uy(t),t)g1(t)...gk-1(t)} mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する第2の剰余演算手段と、前記剰余g(t)を因数分解する因数分解手段と、前記因数分解の結果により生じた因子を組合せることによって丁度deg f(ux(t),uy(t),t)を次数に持つ全ての識別多項式候補f(ux(t),uy(t),t)を抽出する多項式抽出手段と、前記1変数多項式hij(t)をそれぞれ前記1変数多項式Gj(ux(t),uy(t),t)で除算し、k個の剰余h’ij(t)≡hij(t) mod Gj(ux(t),uy(t),t) (但し、i=1又は2、j=1,2,...,k)を得る第3の剰余演算手段と、3個以上の前記剰余h’ij(t)、前記剰余h’ij(t)と同数の1変数多項式Gj(ux(t),uy(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を法とした剰余hi(t)≡{G1(ux(t),uy(t),t) h’i2(t)...h’ik(t)+G2(ux(t),uy(t),t) h’i1(t)h’i3(t)...h’ik(t)+...+Gk(ux(t),uy(t),t)h’i1(t)...h’ik-1(t)} mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する第4の剰余演算手段と、前記hi(t)を更に前記識別多項式候補f(ux(t),uy(t),t)で除算して平文多項式候補m(ux(t),uy(t),t)を得る第5の剰余演算手段と、前記平文多項式候補m(ux(t),uy(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補Mを生成する平文候補生成手段と、前記平文候補Mに含まれる誤り検出符号により真の平文であるか否かを検査する平文多項式検査手段と、前記検査の結果、真の平文である平文候補Mがあった場合に当該平文候補Mを平文として出力する出力手段と、を備えた復号装置である。
【0017】
第3の発明は、体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式に関し、前記公開鍵の一部であるk個の基幹多項式Gj(x,y,t)を生成するための鍵生成装置であって、前記基幹多項式Gj(x,y,t)のx,yがtでパラメタライズされた1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)同士の最小公倍式の次数であるセクション次数の最大値maxdegG=deg LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}の判定値maxdegG’を格納する格納手段と、3変数の多項式Gj(x,y,t)(但し、j=1,2,...,k)をランダムに生成する多項式生成手段と、前記生成された多項式Gj(x,y,t)に前記セクションを代入してk個の1変数多項式G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)を得るセクション代入手段と、前記1変数多項式G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する最小公倍式演算手段と、前記最小公倍式演算手段により演算された最小公倍式の次数が前記格納手段内の判定値maxdegG’以下であるか否かを判定する次数判定手段と、前記判定の結果、前記最小公倍式の次数が前記判定値maxdegG’以下であるとき、前記生成した多項式Gj(x,y,t)(但し、j=1,2,...,k)を棄却し、前記多項式演算手段、前記セクション代入手段、前記最小公倍式演算手段及び前記次数判定手段を再実行する手段と、前記次数判定手段による判定の結果、否の場合には、前記生成した多項式Gj(x,y,t)を前記k個の基幹多項式Gj(x,y,t)として出力する出力手段と、を備えた鍵生成装置である。
【0018】
なお、上記各発明は、「装置」として表現したが、これに限らず、「方法」、「プログラム」又は「プログラムを記憶したコンピュータ読み取り可能な記憶媒体」として表現してもよい。
【0019】
(作用)
第1及び第2の発明においては、1変数の平文多項式m(t)及び既約多項式f(t)を用いた従来とは異なり、3変数の平文多項式m(x,y,t)、識別多項式f(x,y,t)、k個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)及び多項式w1j(x,y,t),w2j(x,y,t)を用いている。
【0020】
また、第3の発明においては、従来とは異なり、3変数の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)を用いている。
【0021】
従って、第1乃至第3の発明によれば、代数曲面を用いた公開鍵暗号方式において、1変数多項式に起因した脆弱性を解消することができる。
【発明の効果】
【0022】
以上説明したように本発明によれば、代数曲面を用いた公開鍵暗号方式において、1変数多項式に起因した脆弱性を解消できる。
【発明を実施するための最良の形態】
【0023】
以下、本発明の各実施形態について図面を用いて説明する。
【0024】
各実施形態における代数曲面は体K上定義された連立(代数)方程式の解の集合のうち2次元の自由度を持ったものと定義される。例えば、次の式(1)に示す体K上の連立方程式は5つの変数を束縛する3つの方程式があることから、2次元の自由度を持っているので、代数曲面となる。
【0025】
【数1】

【0026】
特に、式(2)に示す如き、3変数のK上代数方程式の解の集合として定義される空間もK上の代数曲面となる。
【0027】
f(x,y,z)=0 (2)
なお、式(1)、式(2)に示した代数曲面の定義式はアフィン空間におけるものである。射影空間における代数曲面の定義式は(式(2)の場合)f(x,y,z,w)=0である。
【0028】
しかし、各実施形態では代数曲面を射影空間で扱うことがないので代数曲面の定義式を式(1)若しくは式(2)とした。但し、射影空間で表現しても各実施形態はそのまま成立する。
【0029】
一方、代数曲線は体K上定義された連立(代数)方程式の解の集合のうち1次元の自由度を持ったものである。よって、例えば次式のように定義される。
【0030】
g(x,y)=0
本実施形態においては式(2)のように1つの式で書ける代数曲面のみを扱うので、以下では式(2)を代数曲面の定義方程式のごとく扱う。
【0031】
体とは加減乗除が自由にできる集合である。実数、有理数、複素数は体に該当する。整数や行列など、0以外に除算ができない元を含む集合は体に該当しない。体の中には有限体と呼ばれる有限個の元から構成される体がある。例えば素数pに対し、pを法とする剰余類Z/pZは体をなす。このような体は、素体と呼ばれ、Fpなどと書かれる。有限体にはこの他に素数の冪乗個の元を持つ体Fq(q=pr)がある。但し、本実施形態では、簡単のため、主に素体Fpのみを扱う。一般に素体Fpのpは素体Fpの標数と呼ばれる。
【0032】
一方、一般の有限体を扱う場合でも各実施形態は自明な変形を施すことによって同様に成立する。公開鍵暗号はメッセージをデジタルデータとして埋め込む必要から有限体上で構成することが多い。本実施形態においても同様に有限体(本実施形態では特に素体)Fp上定義された代数曲面を扱う。
【0033】
代数曲面f(x,y,z)=0上には図1に示すように、通常、代数曲線が複数存在する。このような代数曲線は代数曲面上の因子と呼ばれる。
【0034】
一般に代数曲面の定義式が与えられた時に(非自明な)因子を求める問題は、現代の数学でも未解決の難問であり、後述するような多次多変数連立方程式を解いたり、総当りで求めるなどの原始的な方法を除けば、一般的な解法が知られていない。特に本実施形態で扱うような有限体で定義された代数曲面においては、有理数体などの無限体(無限個の元からなる体)と比較しても手掛かりが少なく、より難しい問題であることが知られている。
【0035】
本実施形態ではこの問題を代数曲面上の求因子問題もしくは単に求因子問題と呼び、代数曲面上の求因子問題に安全性の根拠をおく公開鍵暗号を構成する。
【0036】
さて、体K上の代数曲面X: f(x,y,z)=0のうち、
h(x,y,t)=0
と定義され、セクションと呼ばれるx,yがtでパラメタライズされた曲線
(x,y,t)=(ux(t),uy(t),t)
が存在するような形式に表現された代数曲面を代数曲面Xのファイブレーションといい、Xtなどと表す。ここで、xがtでパラメタライズされるとはx=ux(t)のように変数xが体K上定義された、tを変数とする代数式で表現されることを言う。なお、本実施形態で代数式とは多項式を指している。また、以下では、ファイブレーションであることが明らかであるので、単にXと表す。
【0037】
また、パラメータtに体Kの元t0を代入して得られる代数曲線はファイバーと呼ばれ、Xt0のように表される。ファイバーとセクションは共に代数曲面Xtの因子である。
【0038】
一般に代数曲面のファイブレーションが与えられたとき、それに対応するファイバーは(tに体の元を代入することにより)直ちに求まるが、対応するセクションを求めることは極めて難しい。このため、ファイバーは自明な因子であり、セクションは非自明な因子であると言える。
【0039】
各実施形態の公開鍵暗号は、代数曲面上の求因子問題のうち、特に代数曲面XのファイブレーションXtが与えられたとき、セクションを求める問題に安全性の根拠をおく。
【0040】
ファイブレーションからセクションを求めるには現代の数学においても次の(i)から(iv)の手順による方法しか知られていない。
【0041】
(i) セクション(ux(t),uy(t),t)を
deg ux(t) < rx,deg uy(t) < ry
と仮定した上で、ux(t),uy(t)を次式のようにおく。
【0042】
【数2】

【0043】
(iv) 連立方程式系を解く。
【0044】
次に、代数曲面上の求セクション問題に基づく本実施形態の公開鍵暗号を具体的に説明する。
【0045】
(第1の実施形態)
(概要)
本実施形態の公開鍵暗号は、以下の2つのシステムパラメータp,dを持っている。
【0046】
1. 有限体のサイズ:p
2. (秘密鍵である)セクションの最高次数:d=max{deg ux(t),deg uy(t)} (3)
また、公開鍵は、以下の5つである。
【0047】
【数3】

【0048】
ここで、ΛAは多項式A(x,y,t)をx,yの多項式として見たときに係数が非零であるxの指数i、yの指数jの組の集合を意味する。また、これら形式は、集合Λmfと、各項の係数の次数deg mij(t),deg fij(t)とから構成されている。
【0049】
5. 基幹多項式のセクション次数
min degG = max{degG1(ux(t),uy(t),t), degG2(ux(t),uy(t),t)}
max degG = deg LCM{G1(ux(t),uy(t),t), G2(ux(t),uy(t),t)}
(4)
ここで、min degG は、基幹多項式のセクション次数の最小値であり、セクションを代入した1変数の多項式の次数(degG1(ux(t),uy(t),t), degG2(ux(t),uy(t),t))の最大値(max{…})を表す。max degG は、基幹多項式のセクション次数の最大値であり、セクションを代入した1変数の多項式の最小公倍式(LCM{G1(ux(t),uy(t),t), G2(ux(t),uy(t),t)})の次数(deg LCM…)を表す。
【0050】
秘密鍵は、以下のセクションDである。
【0051】
1. Fp 上の代数曲面Xのセクション: D: (x,y,t)=(ux(t),uy(t),t)
但し、公開鍵である代数曲面X は条件(6)を満たす。
【0052】
degx X(x,y,t)<degx m(x,y,t)
degy X(x,y,t)<degy m(x,y,t)
degt X(x,y,t)<degt m(x,y,t) (6)
平文多項式と識別多項式は条件(7) を満たす。
【0053】
degx m(x,y,t)<degx f(x,y,t)
degy m(x,y,t)<degy f(x,y,t)
degt m(x,y,t)<degt f(x,y,t) (7)
ここで、m(x,y,t),f(x,y,t)においては、上記不等式の右辺の次数を与える項がただ1つだけ存在し、同一である。即ち、f(x,y,t)を例に取って説明すると、f(x,y,t)には
【0054】
【数4】

【0055】
の項がただ一つだけ存在する。ここでcは有限体Fpの元である。
【0056】
さらに、基幹多項式は条件(8)を満たす。
【0057】
min degG <deg m(ux(t),uy(t),t)<deg f(ux(t),uy(t),t)<<max degG (8)
ここで、記号<<は、後述するs1(x,y,t),s2(x,y,t)に関する条件(9)を満たす範囲で十分大きいことを意味する。
【0058】
これらは後述する方法(鍵生成方法)で容易に求めることができる。
【0059】
暗号化処理の概要を述べる。暗号化処理ではまず暗号化したいメッセージ(以下では平文と呼ぶ)をブロック分割してm=m00‖m10‖…‖mijとする。なお、‖は連接を表す。ここで、L=deg mij(t)としたとき、
|mij|≦(|p|−1)(L+1)とし、mij(t)のtkの係数mijkは上記mijを|p|−1ビット毎に分割したものとする。即ち、
mij=mij0‖mij1‖…‖mijL
ここで|p|はpのビット長を表している。このようにして平文を次式に示す如き平文多項式m(x,y,t)に埋め込む。
【0060】
【数5】

【0061】
尚、本実施形態のメッセージには誤り検出符号が含まれているとしている。誤り検出符号は送信上に生じたノイズなどの影響でメッセージの一部が毀損したときにそれを検出する機能を持つ。誤り検出符号として特にハッシュ関数によるハッシュ値を取ってもよい。
【0062】
次に、Fp上の識別多項式f(x,y,t)を、条件(7)を満たす定められた形式でランダムに生成する。続いて多項式si(x,y,t)(i=1,2)を、条件(9)を満たす範囲でランダムに生成する。
【0063】
SecDeg(f(x,y,t))+SecDeg(si(x,y,t))<max degG (9)
ここで、3変数多項式A(x,y,t)に対するSecDeg(A(x,y,t))は(セクションの最大次数dを利用して)以下のように定義する。
【0064】
【数6】

【0065】
更に、多項式wij(x,y,t),rij(x,y,t)をランダムに生成する。最後に、式m(x,y,t),f(x,y,t),si(x,y,t)),wij(x,y,t),rij(x,y,t)及び公開鍵である代数曲面XのファイブレーションX(x,y,t)から4つの暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)を計算する。
【0066】
F11(x,y,t)=m(x,y,t)+f(x,y,t)s1(x,y,t)+G1(x,y,t)w11(x,y,t)+X(x,y,t)r11(x,y,t)、
F12(x,y,t)=m(x,y,t)+f(x,y,t)s1(x,y,t)+G2(x,y,t)w12(x,y,t)+X(x,y,t)r12(x,y,t)、
F21(x,y,t)=m(x,y,t)+f(x,y,t)s2(x,y,t)+G1(x,y,t)w21(x,y,t)+X(x,y,t)r21(x,y,t)、
F22(x,y,t)=m(x,y,t)+f(x,y,t)s2(x,y,t)+G2(x,y,t)w22(x,y,t)+X(x,y,t)r22(x,y,t)
(10)
各実施形態では安全性の観点から平文多項式と識別多項式を3変数としたため、対応する復号処理のために暗号文を4つとしている。
【0067】
暗号文Fij(x,y,t)(i=1,2、j=1,2)を受け取った受信者は所有する秘密鍵Dを利用して次のように復号を行う。まず、セクションDを暗号文Fij(x,y,t)に代入する。ここで、セクションDを代数曲面X(x,y,t)に代入する。
【0068】
X(ux(t),uy(t),t)=0,
なる関係があることに注意すると
hij(t)=Fij(ux(t),uy(t),t)
=m(ux(t),uy(t),t)+f(ux(t),uy(t),t)si(ux(t),uy(t),t)+Gj(ux(t),uy(t),t)wij(ux(t),uy(t),t)
という関係を持つ4つの式hij(t)が求まることが分かる。次に、式hij(t)のうち、h1j(t)からh2j(t)を引き算して、次式を得る。
【0069】
h1j(t)−h2j(t)=f(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)}+Gj(ux(t),uy(t),t){w1j(ux(t),uy(t),t)−w2j(ux(t),uy(t),t)}
ここで、秘密鍵であるセクションDを知る受信者はGj(ux(t),uy(t),t)を計算できるため、上式をGj(ux(t),uy(t),t)で割った余りとして、次の式(11)を得る。
【0070】
h1j(t)−h2j(t)≡f(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)} (mod Gj(ux(t),uy(t),t)) (11)
ここで、条件(7)(8)(9)から条件(12)の関係がある。
【0071】
min degG <SecDeg(m(x,y,t))<SecDeg(f(x,y,t))<SecDeg(f(x,y,t)si(x,y,t))<max degG (12)
このため、式(11)だけで、正しいf(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)}を抽出することはできない。そこで、G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)に中国剰余定理を適用して式(13)を計算する。
【0072】
f(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)} (mod LCM(G1(ux(t),uy(t),t),G2(ux(t),uy(t),t))) (13)
このとき、同じく条件(12)から正確なf(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)}が求まることが分かる。次に、f(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)}を因数分解して、因子f(ux(t),uy(t),t)を求める。但し、因子f(ux(t),uy(t),t)は必ずしも既約因子とはならないため、複数の因子を次数が丁度deg f(ux(t),uy(t),t)となるように組合せる必要が生じる。ここで、識別多項式f(x,y,t)の形式は公開鍵として分かっているが、実際にどのような識別多項式を送信者が生成して暗号化したかは分からない。このため、f(x,y,t)の取り方によっては最高次の係数が零となり実際の次数が、前述した次数deg f(ux(t),uy(t),t)よりも小さくなる可能性がある。しかし、このようなことは条件(7)を満たす限り生じない。なぜなら条件(7)で保証されている項
【0073】
【数7】

【0074】
となり、この項の次数は他の項の次数よりも真に大きいため、前述のように最高次の係数が零になることはない。
【0075】
また、前述のように次数が丁度deg f(ux(t),uy(t),t) となるような因子の組合せは一意に決まるとは限らない。そのため可能性のある因子の組合せの全てについて以下の処理を実行する。
【0076】
deg f(ux(t),uy(t),t)となる可能性を持つ因子を求める手段としては、因数分解により出力された因子の全ての組合せを順に求め、その中で次数が丁度deg f(ux(t),uy(t),t)となる組合せだけを抽出する手法が考えられる。ただ、この手法を実行するには因子の数をl個とすれば2lの組合せが存在する。そこで、この手法に加え、次数がdeg f(ux(t),uy(t),t)を超えた組合せに関してはそれ以上の因子を組合せないことによってより短い処理時間で抽出が可能である。
【0077】
尚、ここでf(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)}の因数分解は、1変数多項式の因数分解が容易であることから十分有効な時間内に処理可能である。
【0078】
次に、次式のように、h1j(t)をGj(ux(t),uy(t),t)で割った余りhj(t)を求める。
【0079】
hj(t)=m(ux(t),uy(t),t)+f(ux(t),uy(t),t)s1(ux(t),uy(t),t) (mod Gj(ux(t),uy(t),t)) (13’)
ここで、式(12)の関係から、式(13’)だけでは平文多項式m(ux(t),uy(t),t)が求まらない。G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)に中国剰余定理を適用して式(13’’)を計算する。
【0080】
m(ux(t),uy(t),t)+f(ux(t),uy(t),t)s1(ux(t),uy(t),t) (mod LCM(G1(ux(t),uy(t),t),G2(ux(t),uy(t),t))) (13’’)
次に、識別多項式候補f(ux(t),uy(t),t)で割った余りとして平文多項式候補m(ux(t),uy(t),t)を求める。すなわち、
m(ux(t),uy(t),t) ≡ h1(t) (mod f(ux(t),uy(t),t))
ここで、条件(12)より
degm(ux(t),uy(t),t)<degf(ux(t),uy(t),t)si(ux(t),uy(t),t)<maxdegG
であるため、正しいf(ux(t),uy(t),t)が求まっているという前提の下では正しいm(ux(t),uy(t),t)が求まることが分かる。
【0081】
【数8】

【0082】
とおき、平文候補多項式m(ux(t),uy(t),t)と、mijkux(t)iuy(t)jtkとが等しいことからtkの係数比較により、mijkを変数とする連立1次方程式が得られる。ここで、ΓAは多項式A(x,y,t)をx,y,tの多項式として見たときに係数が非零であるxの指数i、yの指数j、tの指数kの組の集合を意味する。
【0083】
実際、
m(ux(t),uy(t),t)=mijkux(t)i uy(t)j tk
の両辺はmijk以外の変数はtのみであり、
【0084】
【数9】

【0085】
であり、連立1次方程式
aτ(…,mijk,…)=cτ(1≦τ≦K)
を得る。これを解くことによりmijkが求まる。ここで、式の個数と変数の個数の関係によってはmijkが一意的に定まらないこともある。この問題は公開鍵の1つである平文多項式の形式の定め方で解決するが、詳しくは鍵生成手法の部分で述べる。
【0086】
しかし、識別多項式f(ux(t),uy(t),t)の候補が複数ある場合は必ずしも、ここで得られた平文が真の平文とは限らない。そこで、全ての識別多項式の候補f(ux(t),uy(t),t)から、前述した手法で抽出された平文について誤り検出符号によるチェックを行ない検査に成功した(即ち、誤り検出符号によって誤りとならなかった)候補を平文とする。
【0087】
この検査に成功した候補が1つも無かった場合は復号失敗として処理する。このような場合は理論的には有り得ないが、送信側の計算ミスや伝送路上での改竄などの何らかの理由により正しくない暗号文を受信したことより起こる可能性がある。
【0088】
最後に本実施形態における鍵生成方法を説明する。本実施形態の鍵生成方法は代数曲面の生成方法、基幹多項式の生成方法、平文多項式の形式の生成手法、識別多項式の形式の生成手法に分かれる。
【0089】
始めに、代数曲面の生成手法から説明する。
【0090】
代数曲面の生成はセクションDをランダムに選び、それに対応したファイブレーションを計算することによって行う。
【0091】
まず、{deg ux(t),deg uy(t)}=d となるようにセクションD=(ux(t),uy(t),t)をランダムに決定する。ここで、dはシステムパラメータであり、求セクション問題の困難性を決めるパラメータである。
【0092】
次に、代数曲面のファイブレーション
【0093】
【数10】

【0094】
によって定数項a00(t)を決定する。以上によってDをセクションとして含む代数曲面を生成できる。
【0095】
次に、基幹多項式の生成方法を示す。基幹多項式G1(x,y,t),G2(x,y,t)はランダムに生成された3変数多項式に対して、ランダムに決定されたセクションDを代入し、条件(8)を満たすか否かを判定し、満たす場合に生成を終了し、満たさない場合には満たすまで繰り返し生成することにより実現する。ここで、Gi(x,y,t)の式の形を条件(8)に適合するように予め形成しておくことにより、十分高い確率で実時間に終了する。
【0096】
次に、平文多項式の形式の生成手法を示す。本生成手法は予め定められた平文多項式の基本形式
【0097】
【数11】

【0098】
に対して、各mij(t)の次数を決定することで実行する。尚、ここでこの基本形式は条件(6)を満たし、その範囲で各mij(t)の次数も定められている。平文多項式m(x,y,t)の生成において重要な点はセクションによってできる連立1次方程式に一意解を持たせることである。このために、生成した代数曲面のセクション(x,y,t)=(ux(t),uy(t),t)に基づいて以下のような処理を行なう。まず、定められた基本形式にセクションを代入して、
【0099】
【数12】

【0100】
における変数tτの係数であり、有限体Fpの元である。また行列Aは変数ベクトル(m000,m001,…,mijk,…)において変数mijkがΚ番目の要素として表現されている場合、行列Aではtτの係数としてのmijkが非零の元として出現している場合は行列Aの(τ,Κ)成分にその係数、出現しない場合は(τ,Κ)成分に0として表現された行列である。即ち、変数ベクトル(m000,m001,m002,m010,m011,m012)に対して
【0101】
【数13】

【0102】
となる。さて、本連立1次方程式が如何なるc0,c1,…,cKが生じても一意解を持つ必要十分条件は線形代数の理論により変数ベクトルの次元数が行列Aの階数と等しくなることである。
【0103】
よって、行列Aの階数を計算すると共に、その階数が変数ベクトルの次元数を下回っているときはtの上位次数に対応したmijkに零などの定数を代入して変数ベクトルの次元数を段階的に引き下げていくことにより、一意性が達成できる。ここで0とした変数mijkには平文を埋め込むことができないため、各(i,j)において非零でよいmijkにおけるkの最大値を持ってmij(t)の次数と定める。このことにより、平文多項式の形式が定まる。但し、条件(6)を満たすためにいずれかのmij(t)の上位の項を非零とする必要がある。
【0104】
識別多項式の形式の生成であるが、これは識別多項式の基本形式
【0105】
【数14】

【0106】
を条件(7)を満たす範囲で決定すればよい。
【0107】
<バリエーション>
最後に本実施形態におけるいくつかのバリエーションを述べる。尚、以下ではs1(x,y,t),s2(x,y,t)を区別する必要がない共通の事象の場合には単にs(x,y,t)と書き、r11(x,y,t),r12(x,y,t),r21(x,y,t),r22(x,y,t)を区別する必要がない共通の事象の場合には単にr(x,y,t)と書き、w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t)を区別する必要がない共通の事象の場合には単にw(x,y,t)と書くこととする。このことは基幹多項式G1(x,y,t),G2(x,y,t)、暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)についても同様とする。
【0108】
第1のバリエーションは、暗号化処理において、暗号文を生成する式(6)の変形に関するバリエーションである。式(10)は、例えば
Fij(x,y,t)=m(x,y,t)−f(x,y,t)si(x,y,t)−Gj(x,y,t)wij(x,y,t)+X(x,y,t)rij(x,y,t)
のように変形しても同様に暗号化/復号が可能である。このように本発明の趣旨に反しない範囲で暗号化の式を変形し、それに伴い復号処理を変更することは可能であり、本発明の範囲に含まれる。
【0109】
第2のバリエーションは暗号化処理において、識別多項式f(x,y,t)を既約多項式とする方式である。
【0110】
本実施形態においては識別多項式には既約多項式という制約を設けなかったが、既約多項式であれば、2つの暗号文にセクションを代入してできる2つの1変数多項式から計算できる
f(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)}
から因数分解によってf(ux(t),uy(t),t)が既約多項式として抽出される可能性があるだけでなく、確率的に因子の数が少なくなり、f(ux(t),uy(t),t)の抽出が容易となる。
【0111】
第3のバリエーションは、暗号化処理において、平文mを識別多項式f(x,y,t)にも埋め込む方式である。前述した実施形態では識別多項式をランダムに生成する方式を示したが、秘密鍵なしにf(x,y,t)を求めることが困難であることも本発明の公開鍵暗号の性質であるから、識別多項式にも平文情報を埋め込む方式が実現可能である。逆に、本バリエーションのようにf(x,y,t)にも平文を埋め込む場合、より大きなサイズの平文を一度に暗号化できるという効果もある。但し、第2のバリエーションと共に実施する場合は、埋め込んだ結果であるf(x,y,t)を既約多項式とする必要から、特定の係数にはランダムな係数が埋め込まれるように予め定めておく必要がある。既約多項式は極めて多く存在するため、一部の係数に平文を埋め込んだとしても、ほとんどの場合、既約多項式を得ることができる。
【0112】
第4のバリエーションは、暗号化処理において、ランダム多項式w(x,y,t),r(x,y,t)を項G(x,y,t)w(x,y,t)と項X(x,y,t)r(x,y,t)とがx,yの多項式として同じ同類項を含み、かつそれらの係数となるtを変数とする1変数多項式の次数を一致させるように、ランダム多項式w(x,y,t),r(x,y,t)を生成する方式である。このバリエーションによれば暗号文の上からは、前述した2つの項G(x,y,t)w(x,y,t)とX(x,y,t)r(x,y,t)との区別がつかないため安全性が高まる。
【0113】
第5のバリエーションは、復号処理において、正しい平文が2つ以上計算される場合に対応したものである。本実施形態では、式(13)からf(ux(t),uy(t),t){s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)}を因数分解して、次数が丁度deg f(ux(t),uy(t),t)となるように因子を組合せることにより識別多項式f(ux(t),uy(t),t)の候補を得ている。次に、これに対応した平文候補Mを計算し、当該平文候補Mに含まれる誤り検出符号によって、当該平文候補が正しいものであるか否かを判定し、正しいと判定された場合には処理をそこで止めて、平文を出力していた。これに対し本バリエーションでは全ての識別多項式の候補から平文候補を計算し、前述した検査を行い、検査に成功した(即ち、誤り検出符号で誤りが検出されなかった)平文候補のみを記録する。
【0114】
このとき、全ての識別多項式の候補に伴う処理が終了した時点で、当該候補が複数ある場合や1つも無かった場合は復号失敗として処理する。このように構成することで、誤り検出符号の能力が低い場合や偶然の一致などによって平文が2つ以上計算されてしまう場合の誤りに備えることができる。
【0115】
第6のバリエーションは、復号処理において、複数のセクションを利用する方式である。本実施形態では1つのセクションのみを利用していたが、複数のセクションを利用することにより誤り検出符号を用いることなく、正しい平文を計算することができる。複数のセクションを利用する場合はセクション毎に本実施形態の復号処理を行ない、出力された平文候補の集合の共通分となる平文を正しい平文として出力することができる。一方、更にセクションによっては(確率的にはほとんど無視できる範囲ではあるが)復号演算において、
s1(ux(t),uy(t),t)−s2(ux(t),uy(t),t)=0
となり、平文候補が1つも求まらない可能性もある。このようなときにも本バリエーションは有用である。尚、第5のバリエーションと併せて実施することも可能である。尚、本バリエーションに対する基幹多項式G(x,y,t)の生成方法は、1つのセクションDに関して条件(8)を計算していた部分を複数のセクションにおいて行なう。簡単のため2つのセクションで説明する。
【0116】
1:(x,y,t)=(ux(t),uy(t),t),
2:(x,y,t)=(vx(t),vy(t),t)
とする場合、
mindegG = max{degG1(ux(t),uy(t),t), degG2(ux(t),uy(t),t), degG1(vx(t),vy(t),t), degG2(vx(t),vy(t),t)},
maxdegG = min {deg(LCM(G1(ux(t),uy(t),t), G2(ux(t),uy(t),t))), deg(LCM(G1(vx(t),vy(t),t), G2(vx(t),vy(t),t)))}
が十分大きくなるようにG(x,y,t)を選択することにより実現できる。3つ以上のセクションの場合も同様である。
【0117】
ここで、第6のバリエーションを実現するために複数のセクションを持つ代数曲面の生成手法を説明しなければならない。以下では2つのセクションD1,D2を持つ代数曲面を生成する鍵生成手法について述べる。
【0118】
本鍵生成はセクションD1,D2をランダムに選び、それに対応したファイブレーションを計算することによって行う。但し、生成された代数曲面が2つのセクションを同時に持つようにするために以下のような工夫が必要となる。代数曲面(のファイブレーション)を次式のように書く。
【0119】
【数15】

【0120】
ここで、セクションD1,D2
1:(x,y,t)=(ux(t),uy(t),t),
2:(x,y,t)=(vx(t),vy(t),t)
とおいて代数曲面Xに代入し、
Σ(i,j)ij(t)ux(t)iuy(t)j=0
Σ(i,j)ij(t)vx(t)ivy(t)j=0
を得る。これらを辺々引くと両式に共通の定数項a00(t)が消え、式(15)を得る。
【0121】
【数16】

【0122】
から多項式となるa10(t)を生成するには、
ux(t)−vx(t)|uy(t)−vy(t)
のように設定すれば十分である(なお、A|Bの表記は、AがBを割り切ること、即ちBがAの倍数(倍式)であることを意味する)。このことは式(16)と
(ux(t)−vx(t))|(ux(t)i−vx(t)i)
(uy(t)−vy(t))|(uy(t)j−vy(t)j)
から明らかである。
【0123】
以上のことを利用して以下に示すアルゴリズムで鍵生成を行うことができる。まず、λx(t)|λy(t)となる2つの多項式をランダムに選択する。
【0124】
具体的にこのような多項式の組λx(t),λy(t)を求めるには、dをセクションの最大次数としたとき、例えばd次以下のλx(t)をランダムに与えて、次数d−deg λx(t)以下のランダムな多項式c(t)によってλy(t)=c(t)λx(t)を計算すればよい。
【0125】
ここで、λx(t)=ux(t)−vx(t), λy(t)=uy(t)−vy(t)
とおく。続いて、多項式vx(t)をランダムに選択し、
ux(t)=λx(t)+vx(t)
により、ux(t)を計算する。λx(t), vx(t)の次数はd以下なので、ux(t)の次数もd以下となる。
【0126】
同様に多項式vy(t)をランダムに選択し
uy(t)=λy(t)+vy(t)
により、uy(t)を計算する。同様にλy(t), vy(t)の次数はd以下なのでuy(t)の次数もd以下となる。
【0127】
次に、a00(t),a10(t)x以外の係数aij(t)((i,j)≠(0,0),(1,0))をランダムに生成し、前述のように計算されたux(t),vx(t),uy(t),vy(t)を利用して式(15)に従ってa10(t)を計算する。更に、
【0128】
【数17】

【0129】
などのようにxの因子とyの因子をランダムに両辺に分けて公開鍵暗号である代数曲面を生成することが望ましい。このように公開鍵と秘密鍵を生成することによって一般にn個以上のセクションを持つ代数曲面を生成することができる。
【0130】
第7のバリエーションは、基幹多項式G1(x,y,t),G2(x,y,t)を(秘密鍵である)セクションD:(x,y,t)=(ux(t),uy(t),t)を代入したときにできる1変数多項式G1(ux(t),uy(t),t)とG2(ux(t),uy(t),t)が互いに素になるように選択するバリエーションである。このように選択することにより、G1(ux(t),uy(t),t)とG2(ux(t),uy(t),t)の最小公倍式がこれらの積G1(ux(t),uy(t),t)G2(ux(t),uy(t),t)となるので、より効率的な構成が可能である。このような基幹多項式の生成に関しては本実施形態で述べたようにG1(x,y,t),G2(x,y,t)を生成するとともに、生成された基幹多項式に対して、条件(8)に加えて、セクションを代入した基幹多項式が互いに素となるか否かを確認し、これらの条件が合えば出力し、合わなければ合うまで多項式の生成から繰り返す。互いに素であるか否かの判定はユークリッドの互除法か因数分解により、効率的に実施することができる。
【0131】
第8のバリエーションは、3つ以上の基幹多項式Gj(x,y,t)(j=1,…,k)を利用する方法である。本実施形態では2つの基幹多項式を利用しているが、本実施形態の構成方法からも分かるように基幹多項式の役割は式(8)を満たすことであるから、式(4)を
min degG = max{degG1(ux(t),uy(t),t),...,degGk(ux(t),uy(t),t)}
max degG = deg LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}
(4)’
とすることによって3つ以上(k個の)基幹多項式Gj(x,y,t)(j=1,…,k)を利用する方式が考えられる。この構成においては、暗号文が
Fij(x,y,t)=m(x,y,t)+f(x,y,t)si(x,y,t)+Gj(x,y,t)wij(x,y,t)+X(x,y,t)rij(x,y,t)
となる。ここで、i=1,2 j=1,…,k であり、対応するランダム多項式wij(x,y,t), rij(x,y,t)を生成する。
【0132】
このように構成することによって、本実施形態よりも暗号文の種類が増えるものの、本実施形態において式(8)を満たすために基幹多項式の次数を上げなければならなかったのに対して、1つ1つの基幹多項式の次数を下げることができるようになるため有用である。
【0133】
尚、基幹多項式の生成方法は本実施形態のそれと同様であり、第6のバリエーションにおける生成方法も同様である。
【0134】
<安全性の検討>
以下では本実施形態で構成した本発明の公開鍵暗号の安全性に関して考察する。
【0135】
[1]総当り攻撃
暗号文F(x,y,t)を構成する各要素m(x,y,t),f(x,y,t),s(x,y,t),r(x,y,t),w(x,y,t)をmijk,fijk,sijk,rijk,wijkを変数として
【0136】
【数18】

【0137】
とおき、これらと暗号文F(x,y,t)を比較することによって、多次多変数連立方程式系を生成し、これを解くという攻撃が考えられる。しかしこの場合、r(x,y,t),w(x,y,t)をx,yの多項式として見て、十分多くの項を含ませると共に、x,yの多項式として見たとき各項の係数となる多項式の次数を十分高くすることにより、変数の数を増大させ、容易に解けないレベルにまで高めることが可能である。例えば、現在100程度の変数を持つ多次多変数方程式は、現在の計算機処理量と処理手法では解くのが極めて困難である。そこで、項や係数の次数を変数の数が100を超える程度にまで増大させ、本攻撃を回避することができる。
【0138】
[2]リダクション攻撃
本発明の公開鍵暗号では代数曲面X(x,y,t)と基幹多項式G1(x,y,t),G2(x,y,t)が公開されている。そこで暗号文F(x,y,t)をX(x,y,t)で割った余りとして、m(x,y,t)+f(x,y,t)s(x,y,t)が求まらないかを検討しなくてはならない。しかし、3変数多項式同士の割り算の場合、剰余が一意に決まらない。なぜならば文献(D.コックス 他,“グレブナ基底と代数多様体入門(上),”シュプリンガー・フェアラーク東京,(2000),p.94, 例4にあるように2変数以上の多項式では一般に除法の定理が成り立たないためである。暗号文F(x,y,t)をGi(x,y,t)で割る場合も同様である。
【0139】
[3]代入攻撃
[3−1]代数曲面上の代数曲線を代入する攻撃
(セクションを含む)代数曲線はωをパラメータとして、式(19)のように書ける。
【0140】
(x,y,t)=(ux(ω),uy(ω),ut(ω)) (19)
これらの曲線のうち、代数曲面X(x,y,t)に含まれるものを見出すことができれば、セクションの代わりに代入して、セクションによる復号と同様の手法により、解読することができる。ここではこのような代数曲線を見出すことが与えられているセクションを見出すことと同等かそれ以上に計算困難であることを示す。このような曲線をdeg ut(ω)に注目して分類する。
【0141】
・ deg ut(ω)≧2の場合
この場合は一般の因子となり、求因子問題の困難性により脅威とはならない。
【0142】
・ deg ut(ω)=1の場合
これが求まると線形変換でセクションが求まるため、求セクション問題が困難であるという仮定の下ではこのような代数曲線を求めることも困難となる。
【0143】
・ deg ut(ω)=0の場合
これは特異ファイバー(singular fiber)と呼ばれるもので、ほとんど全ての代数曲面に存在する。しかし、一般の求因子問題の特別な場合であり、効率的に解く方法は知られていない。
【0144】
[3−2]代数曲面外の代数曲線を代入する攻撃
代数曲面外の代数曲線の場合も式(19)として書け、X(ux(ω),uy(ω),ut(ω))≠0である。よって、次式を得る。
【0145】
F(ux(ω),uy(ω),ut(ω))=m(ux(ω),uy(ω),ut(ω))+f(ux(ω),uy(ω),ut(ω))si(ux(ω),uy(ω),ut(ω))+Gj(ux(ω),uy(ω),ut(ω))wij(ux(ω),uy(ω),ut(ω))+X(ux(ω),uy(ω),ut(ω))rij(ux(ω),uy(ω),ut(ω))
しかし、ここで分かっている式はX(ux(ω),uy(ω),ut(ω))とGj(ux(ω),uy(ω),ut(ω))であるので、F(ux(ω),uy(ω),ut(ω))をX(ux(ω),uy(ω),ut(ω))やGj(ux(ω),uy(ω),ut(ω))でリダクションする攻撃が考えられる。これは1変数なので可能ではあるが、条件(8)(9)により、m(ux(ω),uy(ω),ut(ω))+f(ux(ω),uy(ω),ut(ω))s(ux(ω),uy(ω),ut(ω))の次数の方が、X(ux(ω),uy(ω),ut(ω))、Gj(ux(ω),uy(ω),ut(ω))の次数よりも大きいため、正確な剰余を得ることが困難である。
【0146】
[3−3]代数曲面上の有理点を代入する攻撃
代数曲面X(x,y,t)の有理点(X(x,y,t)=0 となる点)を代入することによる攻撃がある。即ち、mijk,fijk,sijk,wijkを未知数として
【0147】
【数19】

【0148】
とおき、(公開鍵である)代数曲面X(x,y,t)=0のK有理点(xi,yi,ti)は(どのような代数曲面でも)比較的簡単かつ大量に求まることが知られているため、これらの有理点を暗号文F(x,y,t)に代入して、
F(xi,yi,ti)=m(xi,yi,ti)+f(xi,yi,ti)si(xi,yi,ti)+Gj(xi,yi,ti)wij(xi,yi,ti)
という関係式が大量に求まる。ここでKはFp及びその拡大体をさしている。
【0149】
これらを連立させるとm(x,y,t)が解ける可能性がある。しかし、f(x,y,t),s(x,y,t),w(x,y,t)はランダムな多項式であり、s(x,y,t)やw(x,y,t)の各係数の次数を十分大きくしておけば、連立方程式が解けないほど大きくなり、事実上計算不可能となる。従ってこのような攻撃は本発明の公開鍵暗号にとっては脅威とはならない。
【0150】
以上のように本発明の公開鍵暗号は、上述した攻撃に対する耐性がある。即ち(逆に言うと)本発明の公開鍵暗号は耐性を持つように各構成要素が設定されている。
【0151】
(一実施形態の具体的な構成)
以下、本発明の一実施形態について具体的に説明する。図2は本発明の第1の実施形態に係る暗号装置の全体構成図であり、図3は同実施形態における復号装置の全体構成図である。図4は同実施形態における鍵生成装置の全体構成図である。
【0152】
なお、以下の暗号装置100、復号装置200及び鍵生成装置300は、装置100,200,300毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体1,2,3から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
【0153】
ここで、暗号装置100は、図2に示すように、パラメータ格納部101、メモリ102、入力部103、平文埋め込み部104、暗号化部105、識別多項式生成部106、多項式生成部107、ランダム値生成部108、多項式演算部109及び出力部110が互いにバス111を介して接続されている。
【0154】
パラメータ格納部101は、暗号化部105から読出可能なメモリであり、システムパラメータである素体の標数pを格納している。
【0155】
メモリ102は、各部103〜109から読出/書込可能な記憶装置である。
【0156】
入力部103は、外部から入力された平文多項式の形式Λm,deg mij(t)及び平文mを平文埋め込み部104に送出する機能と、外部から入力された公開鍵X(x,y,t),G1(x,y,t),G2(x,y,t),Λmf,deg mij(t),deg fij(t),mindegG,maxdegGを暗号化部103に送出する機能とをもっている。
【0157】
平文埋め込み部104は、入力部103から受けた平文多項式の形式及び平文mに基づいて、平文mを平文多項式m(x,y,t)の係数に埋め込む機能と、得られた平文多項式m(x,y,t)を暗号化部105に送出する機能とをもっている。
【0158】
暗号化部105は、入力部103から受けた公開鍵及びパラメータ格納部101内のパラメータpに基づいて、図5のST5〜ST12に示す動作を実行するように、各部102,106〜109を制御する機能をもっている。
【0159】
識別多項式生成部106は、暗号化部105から受けた識別多項式f(x,y,t)の形式及びパラメータpに基づいて、識別多項式f(x,y,t)をランダムに生成する機能と、得られた識別多項式f(x,y,t)を暗号化部105に送出する機能とをもっている。
【0160】
多項式生成部107は、多項式s1(x,y,t),s2(x,y,t)を生成する指示を暗号化部105から受けると、ランダム値生成部108に対してランダム値の出力要請を繰り返し行い、得られたランダム値を利用して2つの多項式s1(x,y,t),s2(x,y,t)を生成する機能と、生成した多項式s1(x,y,t),s2(x,y,t)を暗号化部105に送出する機能とをもっている。
【0161】
同様に、多項式生成部107は、多項式w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t),r11(x,y,t),r12(x,y,t),r21(x,y,t),r22(x,y,t)を生成する指示を暗号化部105から受けると、ランダム値生成部108に対してランダム値の出力要請を繰り返し行い、得られたランダム値を利用して8つの多項式w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t),r11(x,y,t),r12(x,y,t),r21(x,y,t),r22(x,y,t)を生成する機能と、生成した多項式w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t),r11(x,y,t),r12(x,y,t),r21(x,y,t),r22(x,y,t)を暗号化部105に送出する機能とをもっている。
【0162】
ランダム値生成部108は、多項式生成部107から受けた出力要請に応じてランダム値を生成し、このランダム値を多項式生成部107に送出する機能をもっている。
【0163】
多項式演算部109は、暗号化部105から受けた多項式とその演算指示に基づいて、多項式演算を実行し、演算結果を暗号化部105に送出する機能をもっている。
【0164】
出力部110は、暗号化部105から受けた暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)を出力する機能をもっている。
【0165】
復号装置200は、図3に示すように、パラメータ格納部201、メモリ202、入力部203、復号部204、セクション代入部205、1変数多項式演算部206、1変数多項式因数分解部207、1変数多項式剰余演算部208、連立1次方程式求解部209、平文検査部210及び出力部211が互いにバス212を介して接続されている。
【0166】
パラメータ格納部201は、復号部204から読出可能なメモリであり、システムパラメータである素体の標数pを格納している。
【0167】
メモリ202は、各部203〜211から読出/書込可能な記憶装置である。
【0168】
入力部203は、外部から入力された暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)、公開鍵x(x,y,t)及びセクションDを復号部204に送出する機能をもっている。
【0169】
復号部204は、入力部204から受けた暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)、公開鍵x(x,y,t)及びセクションDと、パラメータ格納部内のパラメータpとに基づいて、図6のST23〜ST37に示す動作を実行するように各部202,205〜211を制御する機能をもっている。
【0170】
セクション代入部205は、復号部204から任意の3変数多項式A(x,y,t)とセクションDを受けると、セクションDを3変数多項式A(x,y,t)に代入して1変数多項式A(t)を得る機能と、得られた1変数多項式A(t)を復号部204に送出する機能とをもっている。ここで、3変数多項式A(x,y,t)としては、例えば、暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)や、基幹多項式G1(x,y,t),G2(x,y,t)がある。また、得られた1変数多項式A(t)としては、例えば、1変数多項式h11(t),h12(t),h21(t),h22(t)や、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)がある。
【0171】
1変数多項式演算部206は、セクション代入部205又は復号部204から受けた1変数多項式の加減乗除演算を実行する機能と、演算結果をセクション代入部205又は復号部204に送出する機能をもっている。
【0172】
1変数多項式因数分解部207は、復号部204から受けた剰余g(t)等の1変数多項式を因数分解する機能と、因数分解の結果を因子の順序付けられた配列として復号部204に送出する機能とをもっている。
【0173】
1変数多項式剰余演算部208は、復号部204から受けた被除多項式及び除多項式としての1変数多項式の剰余演算を実行する機能と、演算結果としての剰余を復号部204に送出する機能とをもっている。
【0174】
連立1次方程式求解部209は、復号部204から受けた連立1次方程式を行列演算によって解く機能と、得られた解を復号部204に送出する機能とをもっている。
【0175】
平文検査部210は、復号部204から受けた平文候補M内の誤り検出符号を検査する機能と、検査結果を復号部204に送出する機能とをもっている。
【0176】
出力部211は、復号部204から受けた平文mを出力する機能をもっている。
【0177】
鍵生成装置300は、図4に示すように、固定パラメータ格納部301、メモリ302、入力部303、制御部304、セクション生成部305、1変数多項式生成部306、代数曲面生成部307、多項式演算部308、平文多項式生成部309、行列生成部310、階数演算部311及び出力部312が互いにバス313を介して接続されている。
【0178】
固定パラメータ格納部301は、制御部304から読出可能なメモリであり、固定パラメータである素数pとセクションの最大次数dを格納している。
【0179】
メモリ302は、各部303〜312から読出/書込可能な記憶装置である。
【0180】
入力部303は、外部から入力された代数曲面Xの基本形式又は平文多項式の基本形式を一時的にメモリ302に保存し、メモリ302内の代数曲面Xの基本形式又は平文多項式の基本形式を制御部304に送出する機能をもっている。
【0181】
制御部304は、入力部303から受けた代数曲面Xの基本形式と、固定パラメータ格納部301内の固定パラメータp,dとに基づいて、図7のST44〜ST47に示す動作を実行するように各部302,305〜314を制御する機能と、入力部303から受けた平文多項式の基本形式及びセクションと、固定パラメータ格納部301内の固定パラメータpとに基づいて、図8のST54〜ST60に示す動作を実行するように各部302,305〜314を制御する機能と、入力部303から受けた識別多項式の基本形式と、固定パラメータ格納部301内の固定パラメータdと、メモリ302内の平文多項式の形式とに基づいて、図9のST72〜ST76に示す動作を実行するように各部302,305〜314を制御する機能と、入力部303から受けた基幹多項式の生成指令を基幹多項式生成部313に送出し、基幹多項式生成部313から受けた基幹多項式及びセクション次数を出力部314から出力する機能とをもっている。
【0182】
セクション生成部305は、制御部304から受けた固定パラメータp,dに基づいて、1変数多項式生成部306により生成した2つの1変数多項式ux(t),uy(t)からセクションD:(x,y,t)=(ux(t),uy(t),t)を生成して制御部304に送出する機能をもっている。
【0183】
1変数多項式生成部306は、セクション生成部305から受けた固定パラメータp,dに基づいて、素体Fp上の次数dの1変数多項式ux(t),uy(t)を生成し、これら1変数多項式ux(t),uy(t)をセクション生成部305に送出する機能をもっている。
【0184】
代数曲面生成部307は、制御部304から受けたセクションD、代数曲面の基本形式、並びに素数pに基づいて、定数項以外の項の係数をランダムに生成することにより定数項以外の項を生成する機能と、多項式演算部308を用い、定数項以外の項にセクションDを代入して負の符号を付した定数項とを生成し、定数項以外の項及び定数項からなるファイブレーションX(x,y,t)である代数曲面Xを生成する機能と、この代数曲面Xを制御部304に送出する機能とをもっている。
【0185】
多項式演算部308は、代数曲面生成部307に制御され、多項式演算を実行し、演算結果を代数曲面生成部307に送出する機能をもっている。
【0186】
平文多項式生成部309は、制御部304から受けた平文多項式の基本形式及び素数pのデータと、メモリ302内のセクションとに基づいて、平文多項式の係数mijkを変数としてセクションを代入する機能と、代入した結果得られるmijkを順序付けした変数ベクトル(m000,m001,…,mijk,…)とtを変数とする多項式を行列生成部310に送出する機能と、行列生成部310から受けた係数行列Aの階数を計算するための指示を階数演算部311に送出する機能と、階数演算部311から受けた階数と変数ベクトルの次元数とを比較し、階数が変数ベクトルの次元数以下であるか否かを判定する機能と、この判定の結果、否であれば変数mijkの一部を定数として階数演算部311への指示をやり直す機能と、判定の結果、階数がベクトルの次元数以下であれば平文多項式の形式を制御部304に送出する機能とをもっている。
【0187】
行列生成部310は、平文多項式生成部309から変数ベクトル(m000,m001,…,mijk,…)及び平文多項式m(ux(t),uy(t),t)を受けると、m(ux(t),uy(t),t)を変数tに関して整理し、変数mijkを含む係数を変数ベクトルで表現した係数行列Aを生成する機能と、係数行列Aを平文多項式生成部309に送出する機能とをもっている。
【0188】
階数演算部311は、係数行列Aの階数を計算するための指示を平文多項式生成部309から受けると、この指示に基づき、係数行列Aの階数を計算して平文多項式生成部309に送出する機能をもっている。
【0189】
識別多項式生成部312は、制御部304に制御され、条件(7)を満たす範囲で識別多項式f(x,y,t)の形式を生成する機能と、生成した識別多項式f(x,y,t)の形式を制御部304に送出する機能をもっている。
【0190】
基幹多項式生成部313は、制御部304から基幹多項式の生成指令を受けると、条件(8)を満たす範囲で基幹多項式G1(x,y,t),G2(x,y,t)を生成する機能と、生成した基幹多項式G1(x,y,t),G2(x,y,t)及びセクション次数mindegG,maxdegGを制御部304に送出する機能をもっている。
【0191】
出力部314は、制御部304から受けたデータを出力する機能をもっている。
【0192】
次に、以上のように構成された暗号装置、復号装置及び鍵生成装置の動作について図5乃至図8のフローチャートを用いて説明する。
【0193】
(暗号化処理)
暗号装置100は、図5に示すように、入力部103から平文mを取得し(ST1)、入力部103から公開鍵としての代数曲面のファイブレーションX(x,y,t)、基幹多項式G1(x,y,t),G2(x,y,t)、平文多項式m(x,y,t)の形式、識別多項式f(x,y,t)の形式、基幹多項式のセクション次数mindegG,maxdegGを取得すると(ST2)、処理を開始する。ここで、これらの形式は、非零の項の集合と同一視できる集合Λmfと、各項の係数の次数deg mij(t),deg fij(t)とから構成されている。また、システムパラメータである素体の標数pは、パラメータ格納部101から取得され(ST3)、平文埋め込み部104に送られる。
【0194】
平文埋め込み部104では、入力部103から受けた平文多項式の形式に基づいて、別途、入力部103から受けた平文mを、m=m00‖m10‖…‖mijのようにブロック分割する。ここで、L=deg mij(t)としたとき、
|mij|≦(|p|−1)(L+1)
とし、mij(t)のtkの係数mijkは上記mijを|p|−1ビット毎に分割したものとする。即ち、
mij=mij0‖mij1‖…‖mijL
ここで|p|はpのビット長を表している。このようにして平文mを平文多項式m(x,y,t)の係数に埋め込む(ST4)。
【0195】
平文埋め込み部104は、平文多項式m(x,y,t)を暗号化部105に送出する。一方、入力部103は、公開鍵を暗号化部105に送出する。パラメータ格納部101はパラメータpを暗号化部105に送出する。
【0196】
暗号化部105では、平文多項式m(x,y,t)、パラメータp、公開鍵を受信すると、これらをメモリ102に書き込む。しかる後、暗号化部105は、メモリ102内の識別多項式f(x,y,t)の形式と、パラメータpとを識別多項式生成部106に送出する。
【0197】
識別多項式生成部106は、識別多項式f(x,y,t)の形式と、パラメータpとに基づいて、識別多項式f(x,y,t)をランダムに生成し(ST5)、得られた識別多項式f(x,y,t)を暗号化部105に送出する。
【0198】
暗号化部105は、この識別多項式f(x,y,t)をメモリ102に保存した後、3変数多項式s1(x,y,t),s2(x,y,t)を生成する指示を多項式生成部107に送出する。
【0199】
多項式生成部107では、ランダム値生成部108に対してランダム値の出力要請を繰り返し行い、その出力であるランダム値を利用して2つの多項式s1(x,y,t),s2(x,y,t)を生成する(ST6)。生成された多項式s1(x,y,t),s2(x,y,t)は、多項式生成部107から暗号化部105に送出される。
【0200】
暗号化部105は、受信した多項式s1(x,y,t),s2(x,y,t)をメモリ102に保存した後、3変数多項式w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t),r11(x,y,t),r12(x,y,t),r21(x,y,t),r22(x,y,t)を生成する指示を多項式生成部107に送出する。
【0201】
多項式生成部107では、ランダム値生成部108に対してランダム値の出力要請を繰り返し行い、その出力であるランダム値を利用して8つの多項式w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t),r11(x,y,t),r12(x,y,t),r21(x,y,t),r22(x,y,t)を生成する(ST7)。生成された多項式w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t),r11(x,y,t),r12(x,y,t),r21(x,y,t),r22(x,y,t)は、多項式生成部107から暗号化部105に送出される。
【0202】
暗号化部105は、受信した多項式w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t),r11(x,y,t),r12(x,y,t),r21(x,y,t),r22(x,y,t)をメモリ102に保存した後、多項式演算部109に順次、多項式とその演算指示を送出しながら第1の暗号文F11(x,y,t)を次式に基づいて計算する(ST8)。
【0203】
F11(x,y,t)=m(x,y,t)+f(x,y,t)s1(x,y,t)+G1(x,y,t)w11(x,y,t)+X(x,y,t)r11(x,y,t)
計算された第1の暗号文F11(x,y,t)は、暗号化部105によりメモリ102に保存される。
同様に、暗号化部105は、第2の暗号文F12(x,y,t)を次式に基づいて多項式演算部109により計算し(ST9)、得られた第2の暗号文F12(x,y,t)をメモリ102に保存する。
【0204】
F12(x,y,t)=m(x,y,t)+f(x,y,t)s1(x,y,t)+G2(x,y,t)w12(x,y,t)+X(x,y,t)r12(x,y,t)
同様に、暗号化部105は、第3の暗号文F21(x,y,t)を次式に基づいて多項式演算部109により計算し(ST10)、得られた第3の暗号文F21(x,y,t)をメモリ102に保存する。
【0205】
F21(x,y,t)=m(x,y,t)+f(x,y,t)s2(x,y,t)+G1(x,y,t)w21(x,y,t)+X(x,y,t)r21(x,y,t)
同様に、暗号化部105は、第4の暗号文F22(x,y,t)を次式に基づいて多項式演算部109により計算し(ST11)、得られた第4の暗号文F22(x,y,t)をメモリ102に保存する。
【0206】
F22(x,y,t)=m(x,y,t)+f(x,y,t)s2(x,y,t)+G2(x,y,t)w22(x,y,t)+X(x,y,t)r22(x,y,t)
しかる後、暗号化部105は、メモリ102内の暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)を出力部110に送出する。出力部110はこの暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)を(必要ならば予め定められたフォーマットに合わせて変形し)出力する(ST12)。
【0207】
以上により、暗号装置100は暗号化処理を終了する。
【0208】
(復号処理)
復号装置200においては、図6に示すように、入力部203から暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)を取得し(ST21)、入力部203から公開鍵X(x,y,t)と秘密鍵を取得し(ST22)、パラメータ格納部201からpを取得することから処理を開始する。ここで、秘密鍵とはセクションDである。取得された暗号文と鍵情報は復号部204に送られる。復号部204は、暗号文と鍵情報等をメモリ202に保存する。
【0209】
復号部204は、メモリ202内の暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)とセクションDをセクション代入部205に送出する。
【0210】
セクション代入部205は、セクションDを暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)にそれぞれ代入し、必要に応じて1変数多項式演算部206を利用することにより、1変数多項式h11(t),h12(t),h21(t),h22(t)を得る(ST23)。ここで、1変数多項式演算部206は1変数多項式の加減乗除演算を行う。得られた1変数多項式h11(t),h12(t),h21(t),h22(t)は、セクション代入部205から復号部204に送出される。
【0211】
復号部204は、各1変数多項式h11(t),h21(t)と、h12(t),h22(t)とを1変数多項式演算部206に送出してそれぞれ互いに減算させる。1変数多項式演算部206は、減算結果{h11(t)−h21(t)}及び{h12(t)−h22(t)}を復号部204に送出する。
【0212】
復号部204は、メモリ202内の基幹多項式G1(x,y,t),G2(x,y,t)とセクションDをセクション代入部205に送出する。
【0213】
セクション代入部205は、セクションDを基幹多項式G1(x,y,t),G2(x,y,t)にそれぞれ代入し、必要に応じて1変数多項式演算部206を利用することにより、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)を得る。得られた1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)は、セクション代入部205から復号部204に送出される。
【0214】
復号部204は、減算結果{h11(t)−h21(t)}及び{h12(t)−h22(t)}と、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)とを1変数多項式剰余演算部208に送出する。1変数多項式剰余演算部208は、減算結果{h11(t)−h21(t)}及び{h12(t)−h22(t)}を、それぞれ1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)で除算し、2つの剰余g1(t)≡{h11(t)−h21(t)} mod G1(ux(t),uy(t),t), g2(t)≡{h12(t)−h22(t)} mod G2(ux(t),uy(t),t)を得る(ST24)。得られた剰余g1(t),g2(t)は、1変数多項式剰余演算部208から復号部204に送出される。
【0215】
復号部204は、2つの剰余g1(t),g2(t)、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)及び中国剰余定理に基づいて、必要に応じて1変数多項式演算部206及び1変数多項式剰余演算部208を利用することにより、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)の最小公倍式LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}を法とした剰余g(t)≡{G2(ux(t),uy(t),t)g1(t)+G1(ux(t),uy(t),t)g2(t)} mod LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}を得る(ST25)。
【0216】
例えば、各項G2(ux(t),uy(t),t)g1(t),G1(ux(t),uy(t),t)g2(t)及び最小公倍式LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}については、1変数多項式演算部206を利用して演算する。剰余g(t)については、1変数多項式剰余演算部208を利用して演算する。
【0217】
続いて、復号部204は、剰余g(t)を1変数多項式因数分解部207に送出して因数分解させる(ST26)。1変数多項式因数分解部207は、因数分解の結果を因子の順序付けられた配列として復号部204に送出する。
【0218】
復号部204は、これらの因子の組合せのうち、次数が丁度deg f(ux(t),uy(t),t)となる全ての組合せを識別多項式の候補として抽出する(ST27)。具体的には、復号部204は、配列として順序付けられた因子を順序の若いものから全ての組合せを順に求め、その中で次数が丁度deg f(ux(t),uy(t),t)となる組合せだけを抽出する手法が使用可能となっている。但し、この手法を実行する場合、因子の数をl個とすれば2lの組合せが存在する。そこで、この手法に加え、次数がdeg f(ux(t),uy(t),t)を超えた組合せに関してはそれ以上の因子を組合せないことにより、より短い処理時間で因子の組合せを抽出する。
【0219】
次に、復号部204は、識別多項式f(ux(t),uy(t),t)の候補を順に抽出し(ST28)、順次、h11(t)及びh12(t)とG1(ux(t),uy(t),t)及びG2(ux(t),uy(t),t)とを共に1変数多項式剰余演算部208に送出する。
【0220】
1変数多項式剰余演算部208は、h11(t)及びh12(t)をそれぞれ1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)で除算し、2つの剰余h’11(t)≡h11(t) mod G1(ux(t),uy(t),t), h’12(t)≡h12(t) mod G2(ux(t),uy(t),t)を得る(ST29)。得られた剰余h’11(t), h’12(t)は、1変数多項式剰余演算部208から復号部204に送出される。
【0221】
復号部204は、2つの剰余h’11(t), h’12(t)、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)及び中国剰余定理に基づいて、必要に応じて1変数多項式演算部206及び1変数多項式剰余演算部208を利用することにより、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)の最小公倍式LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}を法とした剰余h1(t)≡{G2(ux(t),uy(t),t) h’11(t)+G1(ux(t),uy(t),t) h’12(t)} mod LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}を得る(ST30)。
【0222】
例えば、各項G2(ux(t),uy(t),t) h’11(t),G1(ux(t),uy(t),t) h’12(t)及び最小公倍式LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}については、1変数多項式演算部206を利用して演算する。剰余h1(t)については、1変数多項式剰余演算部208を利用して演算する。
【0223】
次に、次式に示すように、h1(t)を更に識別多項式f(ux(t),uy(t),t)の候補で割って余りm(ux(t),uy(t),t)を求め(ST31)、復号部204に送出する。
【0224】
m(ux(t),uy(t),t)≡h1(t)(mod f(ux(t),uy(t),t)
なお、本ステップST31は、上式に限らず、次式に示すステップST31’及びその前段階となる以下のステップST29’〜ST30’によって実行してもよい。
【0225】
m(ux(t),uy(t),t)≡h2(t) (mod f(ux(t),uy(t),t))
ここで、h2(t)は以下のように求める。h21(t)及びh22(t)をそれぞれ1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)で除算し、2つの剰余h’21(t)≡h21(t) mod G1(ux(t),uy(t),t), h’22(t)≡h22(t) mod G2(ux(t),uy(t),t)を得る(ST29’)。得られた剰余h’21(t), h’22(t)は、1変数多項式剰余演算部208から復号部204に送出される。
【0226】
復号部204は、2つの剰余h’21(t), h’22(t)、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)及び中国剰余定理に基づいて、必要に応じて1変数多項式演算部206及び1変数多項式剰余演算部208を利用することにより、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)の最小公倍式LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}を法とした剰余h2(t)≡{G2(ux(t),uy(t),t) h’21(t)+G1(ux(t),uy(t),t) h’22(t)} mod LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}を得る(ST30’)。
【0227】
例えば、各項G2(ux(t),uy(t),t) h’21(t),G1(ux(t),uy(t),t) h’22(t)及び最小公倍式LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}については、1変数多項式演算部206を利用して演算する。剰余h2(t)については、1変数多項式剰余演算部208を利用して演算する。
【0228】
ここで、条件(12) よりdeg m(ux(t),uy(t),t)<deg f(ux(t),uy(t),t)si(ux(t),uy(t),t)<maxdegGであるため、正しいf(ux(t),uy(t),t)が求まっているという前提の下で正しいm(ux(t),uy(t),t)が求まることが分かる。
【0229】
次に、復号部204は、平文多項式m(x,y,t)
【0230】
【数20】

【0231】
の係数mijkを変数とし、ステップST31で求めたm(ux(t),uy(t),t)と、mijkux(t)iuy(t)jtkのtkにおける係数比較により、mijkを変数とする連立1次方程式を生成し、これを連立1次方程式求解部209に送出する。
【0232】
連立1次方程式求解部209では、この連立1次方程式を行列演算によって解き、解を復号部204に出力する。
【0233】
復号部204は、この解をメッセージの形に復元し、平文候補Mを生成する(ST32)。この復元方法は前述の通りである。
【0234】
次に、復号部204は、平文候補Mを平文検査部210に送出する。平文検査部210は、平文候補Mに含まれている誤り検出符号を検査し(ST33)、検査結果を復号部204に送出する。復号部204は、ステップST31の検査結果が不合格を示す場合には、次の識別多項式の候補があるか否かを判定し(ST34)、存在すれば次の識別多項式の候補をf(ux(t),uy(t),t)とおいて(ST35)、ステップST29〜ST34を繰り返す。ステップST34の判定の結果、識別多項式の候補が無い場合には、復号部204はエラーを出力して(ST36)、処理を終了する。
【0235】
一方、ステップST33の検査結果が合格を示す場合には、復号部204は平文候補Mを正しい平文mとして出力部211から出力する(ST37)。
【0236】
以上により、復号装置200は復号処理を終了する。
【0237】
(鍵生成処理)
始めに、代数曲面の生成を説明し、続いて平文多項式の形式の生成について述べる。
【0238】
[代数曲面の生成]
鍵生成装置300は、図7に示すように、代数曲面Xの基本形式が入力部303から入力されると(ST41)、処理を開始する。代数曲面Xの基本形式とは
【0239】
【数21】

【0240】
と数式で表現され、入力データとしてはΛXの要素と、ΛXの要素に対応する各係数aij(t)の次数とからなる。入力部303は、代数曲面の基本形式を一時的にメモリ302に保存し、メモリ302内の代数曲面の基本形式を制御部304に送出する。
【0241】
制御部304は、代数曲面の基本形式を受けると、固定パラメータ格納部301から固定パラメータである素数pとセクションの最大次数dを読み込むと(ST42,ST43)、これら固定パラメータp,dをセクション生成部305に送出する。
【0242】
セクション生成部305は1変数多項式生成部306により、素体Fp上の次数dの1変数多項式ux(t),uy(t)を生成し、2つの1変数多項式ux(t),uy(t)からセクションD:(x,y,t)=(ux(t),uy(t),t)を生成して制御部304に送出する(ST44)。
【0243】
制御部304は、このセクションDと、メモリ302内の代数曲面の基本形式、並びに素数pを代数曲面生成部307に送出する。
【0244】
代数曲面生成部307は、セクションD、代数曲面の基本形式、並びに素数pを受けると、定数項以外のaij(t)をランダムに生成する(ST45)。更に、代数曲面生成部307は、代数曲面の定数項以外の部分にセクションD:(x,y,t)=(ux(t),uy(t),t)を代入し、代入結果に負の符号を付して定数項a00(t)を生成し(ST46)、定数項以外の部分及び定数項a00(t)からなる代数曲面を生成する。尚、この計算の際には多項式演算部308に指示を送り加減乗算を行なう。また、ここで生成した代数曲面Xは、代数曲面XのうちのファイブレーションX(x,y,t)である。
【0245】
生成された代数曲面Xは、代数曲面生成部307から制御部304に送出される。制御部304は、代数曲面Xを出力部314から出力する(ST47)。
【0246】
[平文多項式の形式の生成]
鍵生成装置300は、図8に示すように、平文多項式m(x,y,t)の基本形式とセクション(x,y,t)=(ux(t),uy(t),t)とが入力部303から入力されると(ST51,ST52)、処理を開始する。平文多項式の基本形式とは
【0247】
【数22】

【0248】
と数式で表現され、入力データとしてはΛmの要素と、Λmの要素に対応する各係数mij(t)の次数とからなる。入力部303は、平文多項式の基本形式とセクションとを一時的にメモリ302に保存し、メモリ302内の平文多項式の基本形式を制御部304に送出する。
【0249】
制御部304は、平文多項式の基本形式を受けると、固定パラメータ格納部301から固定パラメータである素数pを読み込む(ST53)。制御部304は、平文多項式の基本形式及び素数pのデータを平文多項式生成部309に送出する。
【0250】
平文多項式生成部309は、この平文多項式の基本形式にメモリ302内のセクション(x,y,t)=(ux(t),uy(t),t)を代入し、次式のm(ux(t),uy(t),t)を計算する(ST54)。
【0251】
【数23】

【0252】
ここで、mijkは変数である。平文多項式生成部309は、この変数mijkを順序付けして変数ベクトル(m000,m001,…,mijk,…)を生成し(ST55)、これら変数ベクトル(m000,m001,…,mijk,…)及び1変数多項式m(ux(t),uy(t),t)を行列生成部310に送出する。
【0253】
行列生成部310は、m(ux(t),uy(t),t)を変数tに関して整理し、変数mijkを含む係数mijkux(t)iuy(t)jを変数ベクトル(m000,m001,…,mijk,…)で表現した係数行列Aを生成する(ST56)。具体的には、行列生成部310は、変数tに関して整理した多項式からtの係数mijkux(t)iuy(t)jとなる多項式を抽出し、変数ベクトル(m000,m001,…,mijk,…)との積が丁度tの係数mijkux(t)iuy(t)jとなるように係数行列を生成する。生成された係数行列Aは、行列生成部310から平文多項式生成部309に送出される。
【0254】
平文多項式生成部309は、この係数行列Aの階数を計算するための指示を階数演算部311に送出する。階数演算部311は、この指示に基づき、係数行列Aの階数を計算して平文多項式生成部309に送出する(ST57)。
【0255】
平文多項式生成部309は、この階数と変数ベクトルの次元数とを比較し、階数が変数ベクトルの次元数を下回るか否かを判定する(ST58)。
【0256】
この判定の結果、下回るのであれば一意解が得られないため、平文多項式生成部309は、変数mijkの一部を定数とし(ST59)、ステップST57の階数の計算からやり直す。また、ステップST58の判定の結果、階数が変数ベクトルの次元数と一致すれば一意解が得られるため、1変数多項式m(ux(t),uy(t),t)に対応する平文多項式m(x,y,t)の形式を制御部304に出力する。尚、線形代数の理論により、解が存在する連立方程式においては階数が変数ベクトルの次元数を超えることはないことが保証されている。
【0257】
制御部304は、平文多項式m(x,y,t)の形式をメモリ302に書き込むと共に、平文多項式m(x,y,t)の形式を出力部314から出力する(ST60)。
【0258】
[識別多項式の形式の生成]
鍵生成装置300は、図9に示すように、識別多項式f(x,y,t)の基本形式が入力部303から入力されると(ST71)、処理を開始する。識別多項式の基本形式とは
【0259】
【数24】

【0260】
と数式で表現され、入力データとしてはΛfの要素と、Λfの要素に対応する各係数fij(t)の次数とからなる。入力部303は、識別多項式の基本形式を一時的にメモリ302に保存し、メモリ302内の識別多項式の基本形式を制御部304に送出する。
【0261】
制御部304は、識別多項式の基本形式を識別多項式生成部312に送出する。
【0262】
識別多項式生成部312は、識別多項式の基本形式を受けると、固定パラメータ格納部301からセクションの最高次数dを読み出すと共に、メモリ302から平文多項式の形式を読み出す(ST72)。
【0263】
識別多項式生成部312は、セクションDの最高次数d及び平文多項式の形式に基づいて、平文多項式の次数degx m(x,y,t),degy m(x,y,t),degt m(x,y,t)を計算する(ST73)。
【0264】
識別多項式生成部312は、条件(7)を満たす範囲で、識別多項式f(x,y,t)の最高次の項の形式を生成すると共に、識別多項式f(x,y,t)の他の項の形式を生成する(ST74,ST75)。しかる後、識別多項式生成部312は、生成した識別多項式f(x,y,t)の形式を制御部304に送出する。
【0265】
制御部304は、生成された識別多項式f(x,y,t)の形式をメモリ302に書き込むと共に、識別多項式f(x,y,t)の形式を出力部314から出力する(ST76)。
【0266】
[基幹多項式の生成]
鍵生成装置300は、図10に示すように、基幹多項式の生成指令が入力部303から制御部304に入力されると、処理を開始する。
【0267】
制御部304は、基幹多項式の生成指令を基幹多項式生成部313に送出する。
【0268】
基幹多項式生成部313は、基幹多項式の生成指令を受けると、固定パラメータ格納部301からセクションの最高次数dを読み出すと共に、メモリ302から平文多項式の形式及び識別多項式の形式を読み出す(ST81)。
【0269】
基幹多項式生成部313は、セクションDの最高次数d及び平文多項式の形式に基づいて、平文多項式のセクション次数SecDeg(m(x,y,t))を計算する(ST82)。同様に、基幹多項式生成部313は、秘密鍵であるセクションDに基づいて、次数deg f(ux(t),uy(t),t), deg m(ux(t),uy(t),t)を計算する(ST83)。
【0270】
基幹多項式生成部313は、条件(8):mindegG<deg m(ux(t),uy(t),t)< deg f(ux(t),uy(t),t)<<maxdegGを満たす範囲で、基幹多項式のセクション次数の最大値の判定値maxdegG’を決定し(ST84)、各セクション次数deg m(ux(t),uy(t),t),deg f(ux(t),uy(t),t)及び判定値maxdegG’をメモリ302に書き込む。
【0271】
なお、判定値maxdegG’は、条件(8)の最大値maxdegGとほぼ等しいが、最大値maxdegG未満の値である(maxdegG’≒maxdegG、且つmaxdegG’<maxdegG)。実際には、判定値maxdegG’は、条件(8)を満たす任意の最大値maxdegGの値に決定すればよい。
【0272】
次に、基幹多項式生成部313は、3変数多項式G1(x,y,t),G2(x,y,t)をランダムに生成する(ST85)。しかる後、基幹多項式生成部313は、3変数多項式G1(x,y,t),G2(x,y,t)にメモリ302内のセクションDを代入して2つの1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)を得る(ST86)。
【0273】
次に、基幹多項式生成部313は、得られた2つの1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)が条件(8)を満たすか否かを判定する(ST87〜ST89)。
【0274】
すなわち、基幹多項式生成部313は、これら1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)の次数の最大値deg max{degG1(ux(t),uy(t),t), degG2(ux(t),uy(t),t)}を基幹多項式のセクション次数の最小値mindegGとし、この最小値mindegGが平文多項式m(x,y,t)にセクションを代入することにより得られる多項式m(ux(t),uy(t),t)よりも小さい条件mindegG<deg m(ux(t),uy(t),t)が成り立つか否かを判定する(ST87)。
【0275】
ステップST87の判定の結果、否の場合には、基幹多項式生成部313は、ステップST90に進み、多項式G1(x,y,t),G2(x,y,t)を棄却し(ST90)、ステップST85〜ST87の処理を再実行する。
【0276】
一方、ステップST87の判定の結果、mindegG<deg m(ux(t),uy(t),t)が成り立つ場合、基幹多項式生成部313は、1変数多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)の最小公倍式LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}を演算する(ST88)。
【0277】
そして、基幹多項式生成部313は、演算した最小公倍式の次数がメモリ302内のセクション次数の判定値maxdegG’以下であるか否かを判定する(ST89)。
【0278】
ステップST89の判定の結果、最小公倍式の次数がセクション次数の判定値maxdegG’以下であるとき、基幹多項式生成部313は、生成した多項式G1(x,y,t),G2(x,y,t)を棄却し(ST90)、ステップST85〜ST89の処理を再実行する。
【0279】
一方、ステップST89の判定の結果、否の場合には、基幹多項式生成部313は、生成した多項式G1(x,y,t),G2(x,y,t)を基幹多項式G1(x,y,t),G2(x,y,t)として制御部304に送出する。また、基幹多項式生成部313は、公開鍵の一部として、基幹多項式G1(x,y,t),G2(x,y,t)のセクション次数mindegG,maxdegGも制御部304に送出する。
【0280】
なお、基幹多項式のセクション次数の最大値maxdegGは、ステップST89の判定に用いられた最小公倍式の次数deg LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}であり、セクション次数の判定値maxdegG’ではない。すなわち、ステップST89において、判定値maxdegG’以下の場合を棄却することから、判定値maxdegG’とセクション次数の最大値maxdegGとは、maxdegG’<maxdegGの関係がある。まとめると、両者は、maxdegG’<maxdegG=deg LCM{G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)}の関係がある。
【0281】
制御部304は、基幹多項式生成部313から送出された基幹多項式G1(x,y,t),G2(x,y,t)及びそのセクション次数mindegG,maxdegGをメモリ302に書き込むと共に、基幹多項式G1(x,y,t),G2(x,y,t)及び基幹多項式のセクション次数mindegG,maxdegGを出力部314から出力する(ST91)。
【0282】
以上により、鍵生成装置300は鍵生成処理を終了する。
【0283】
上述したように本実施形態によれば、1変数の平文多項式m(t)及び既約多項式f(t)を用いた従来とは異なり、3変数の平文多項式m(x,y,t)、識別多項式f(x,y,t)、基幹多項式G1(x,y,t),G2(x,y,t)及び多項式w11(x,y,t),w12(x,y,t),w21(x,y,t),w22(x,y,t)を用いた構成により、代数曲面を用いた公開鍵暗号方式において、1変数多項式に起因した脆弱性を解消することができる。
【0284】
<本実施形態のバリエーション>
第1のバリエーションに関しては、暗号化部107がステップST8〜ST11において(10)式に代えて、例えば次式に基づいて暗号文F11(x,y,t),F12(x,y,t),F21(x,y,t),F22(x,y,t)を作成することにより実現できる。
【0285】
F11(x,y,t)=m(x,y,t)−f(x,y,t)s1(x,y,t)−G1(x,y,t)w11(x,y,t)−X(x,y,t)r11(x,y,t)、
F12(x,y,t)=m(x,y,t)−f(x,y,t)s1(x,y,t)−G2(x,y,t)w12(x,y,t)−X(x,y,t)r12(x,y,t)、
F21(x,y,t)=m(x,y,t)−f(x,y,t)s2(x,y,t)−G1(x,y,t)w21(x,y,t)−X(x,y,t)r21(x,y,t)、
F22(x,y,t)=m(x,y,t)−f(x,y,t)s2(x,y,t)−G2(x,y,t)w22(x,y,t)−X(x,y,t)r22(x,y,t)
一方、復号処理に関しても本バリエーションにおける暗号化演算に併せて自明に変形すれば実現できる。
【0286】
第2のバリエーションに関しては、暗号装置100の識別多項式生成部106に既約性を判定する既約性判定機能を付加し、ステップST5により生成した識別多項式f(x,y,t)について既約多項式か否かを判定すると共に、既約多項式でない場合には、再度、ステップST5の処理を繰り返すことにより実現できる。なお、既約性の判定としては、例えば識別多項式f(x,y,t)について因数分解可能か否かを判定し、判定結果が因数分解可能であれば既約多項式でないと判定して当該識別多項式を破棄し、判定結果が否であれば当該識別多項式を既約多項式であると判定すればよい。
【0287】
第3のバリエーションに関しては、暗号化処理におけるステップST4の平文mを平文多項式m(x,y,t)に埋め込む処理に代えて、平文埋め込み部104が平文mを平文多項式m(x,y,t)の係数と識別多項式f(x,y,t)の係数とに分担して埋め込む処理を実行すれば実現できる。この場合、復号処理においては、平文多項式m(x,y,t)の係数を変数として平文多項式m(ux(t),uy(t),t)と平文多項式の候補Mとの係数比較により生じる連立1次方程式を解くことで平文候補Mを生成して平文mを求めたのと同じ処理を識別多項式f(x,y,t)について実行すればよい。すなわち、復号処理においては、平文多項式からの復号処理と同様に、識別多項式f(x,y,t)の係数を変数として識別多項式f(ux(t),uy(t),t)と識別多項式の候補Mとの係数比較により生じる連立1次方程式を解くことで平文候補Mを生成して平文mを求めればよい。更に第2のバリエーションと併用する場合、識別多項式f(x,y,t)に平文mを埋め込む際には、f(x,y,t)の一部の係数に埋め込むと共に、残りの係数で既約多項式となるように調整する方法を実行すればよい。
【0288】
第4のバリエーションに関しては、多項式生成部107がステップST7において、多項式wij,rij(x,y,t)(i=1,2、j=1,2)を生成する際に、X(x,y,t)rij(x,y,t)と、Gj(x,y,t)wij(x,y,t)とがx,yの多項式として同じ同類項を含み、かつx,yの多項式の係数となるtを変数とする1変数多項式の次数を一致させる条件を満たすようにすればよい。この条件は、一方の多項式rij(x,y,t)の形式を基幹多項式Gj(x,y,t)の形式に一致させ、他方の多項式wij(x,y,t)の形式をファイブレーションX(x,y,t)の形式に一致させるようにして、多項式rij(x,y,t),wij(x,y,t)を生成することにより満たすことができる。具体的には、基幹多項式Gj(x,y,t)の各項のx,yの次数と同一のx,yの次数を各項がもつように多項式rij(x,y,t)を生成し、ファイブレーションX(x,y,t)の各項のx,yの次数と同一のx,yの次数を各項がもつように多項式wij(x,y,t)を生成すればよい。
【0289】
第5のバリエーションに関しては、復号処理のステップST27とST28との間において、図示しないカウンタの値kを0に設定し、ステップST33の検査に合格した場合には当該平文候補Mをメモリ202に格納すると共に、カウンタの値kを“+1”だけインクリメントし、次候補となるf(ux(t),uy(t),t)に対してステップST28から同様の処理を行なう。次候補のf(ux(t),uy(t),t)が無くなった段階で、カウンタの値kが2以上か0の場合にはエラーを出力し、カウンタの値kが1の場合にはメモリ202内の平文候補Mを平文mとして出力する。第5のバリエーションは、以上のようにして実現できる。
【0290】
第6のバリエーションに関しては、復号処理のステップST23〜ST35(但し、ST33は省略)をセクションDの数だけ繰り返し、各セクションDnに対応した平文候補の集合Mnを求め、これらの集合Mnに含まれる平文候補をメモリ202に保存する。その後、平文候補集合Mnに共通な平文候補を平文mとして出力部211に出力する。
【0291】
補足すると、第6のバリエーションのステップST23,ST24においては、セクション代入部205は、入力された4つの暗号文Fij(x,y,t)(但しi=1,2、j=1,2)のそれぞれに対し、各セクションDn(但しn=1,2,…,n)を代入してそれぞれ4つの1変数多項式{h11(n)(t),h12(n)(t),h21(n)(t),h22(n)(t)}を生成する。これら1変数多項式hij(n)(t)は、セクション代入部205から復号部204に送出される。
【0292】
復号部204は、各1変数多項式{h11(n)(t),h12(n)(t)}及びh21(n)(t),h22(n)(t)}を1変数多項式演算部206に送出して互いに減算させることにより、減算結果{h11(n)(t)−h21(n)(t)}及び{h12(n)(t)−h22(n)(t)}を得る。
【0293】
ステップST24においては、復号部204は、メモリ202内の基幹多項式G1(x,y,t),G2(x,y,t)と各セクションDnをセクション代入部205に送出することにより、1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)を得る。
【0294】
そして、復号部204は、減算結果{h11(n)(t)−h21(n)(t)}及び{h12(n)(t)−h22(n)(t)}と、1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)とを1変数多項式剰余演算部208に送出することにより、それぞれ2つの剰余g1(t)≡{h11(n)(t)−h21(n)(t)} mod G1(ux(n)(t),uy(n)(t),t), g2(t)≡{h12(n)(t)−h22(n)(t)} mod G2(ux(n)(t),uy(n)(t),t)を得る。
【0295】
ステップST25においては、復号部204は、2つの剰余g1(n)(t),g2(n)(t)、1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)及び中国剰余定理に基づいて、必要により1変数多項式演算部206及び1変数多項式剰余演算部208を利用して、1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)の最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)}を法とした剰余g(n)(t)≡{G2(ux(n)(t),uy(n)(t),t)g1(n)(t)+G1(ux(n)(t),uy(n)(t),t)g2(n)(t)} mod LCM{G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)}を得る。
【0296】
ステップST26においては、復号部204は、剰余g(n)(t)を1変数多項式因数分解部207に送出して因数分解させる。
【0297】
1変数多項式因数分解部207は、因数分解の結果を因子の順序付けられた配列として復号部204に送出する。
【0298】
ステップST27においては、復号部204は、因数分解の結果により生じた因子を組合せることによって丁度deg f(ux(n)(t),uy(n)(t),t)を次数に持つ全ての識別多項式候補f(ux(n)(t),uy(n)(t),t)を抽出する。
【0299】
ステップST28においては、復号部204は、識別多項式f(ux(n)(t),uy(n)(t),t)の候補を順に抽出し、順次、h11(n)(t)及びh12(n)(t)と及びG1(ux(n)(t),uy(n)(t),t) 及びG2(ux(n)(t),uy(n)(t),t)とを共に1変数多項式剰余演算部208に送出する。
【0300】
ステップST29においては、1変数多項式剰余演算部208は、h11(n)(t)及びh12(n)(t)をそれぞれ1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)で除算し、2つの剰余h’11(n)(t)≡h11(n)(t) mod G1(ux(n)(t),uy(n)(t),t), h’12(n)(t)≡h12(n)(t) mod G2(ux(n)(t),uy(n)(t),t)を得る。得られた剰余h’11(n)(t), h’12(n)(t)は、1変数多項式剰余演算部208から復号部204に送出される。
【0301】
ステップST30においては、復号部204は、2つの剰余h’11(n)(t), h’12(n)(t)、1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)及び中国剰余定理に基づいて、必要に応じて1変数多項式演算部206及び1変数多項式剰余演算部208を利用することにより、1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)の最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)}を法とした剰余h1(n)(t)≡{G2(ux(n)(t),uy(n)(t),t) h’11(n)(t)+G1(ux(n)(t),uy(n)(t),t) h’12(n)(t)} mod LCM{G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)}を得る。
【0302】
例えば、各項G2(ux(n)(t),uy(n)(t),t) h’11(n)(t),G1(ux(n)(t),uy(n)(t),t) h’12(n)(t)及び最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)}については、1変数多項式演算部206を利用して演算する。剰余h1(n)(t)については、1変数多項式剰余演算部208を利用して演算する。
【0303】
ステップST31においては、次式に示すように、h1(t)を更に識別多項式f(ux(n)(t),uy(n)(t),t)の候補で割って余りを求め、復号部204に送出する。
【0304】
m(ux(n)(t),uy(n)(t),t)≡h1(n)(t)(mod f(ux(n)(t),uy(n)(t),t)
なお、本ステップは、上式に限らず、次式のように実行してもよい。
【0305】
m(ux(n)(t),uy(n)(t),t)≡h2(n)(t) (mod f(ux(n)(t),uy(n)(t),t))
ここで、h2(n)(t)は以下のように求める。h21(n)(t)及びh22(n)(t)をそれぞれ1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)で除算し、2つの剰余h’21(n)(t)≡h21(n)(t) mod G1(ux(n)(t),uy(n)(t),t), h’22(n)(t)≡h22(n)(t) mod G2(ux(n)(t),uy(n)(t),t)を得る。得られた剰余h’21(n)(t), h’22(n)(t)は、1変数多項式剰余演算部208から復号部204に送出される。
【0306】
復号部204は、2つの剰余h’21(n)(t), h’22(n)(t)、1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)及び中国剰余定理に基づいて、必要に応じて1変数多項式演算部206及び1変数多項式剰余演算部208を利用することにより、1変数多項式G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)の最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)}を法とした剰余h2(t)≡{G2(ux(n)(t),uy(n)(t),t) h’21(n)(t)+G1(ux(n)(t),uy(n)(t),t) h’22(n)(t)} mod LCM{G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)}を得る。
【0307】
例えば、各項G2(ux(n)(t),uy(n)(t),t) h’21(n)(t),G1(ux(n)(t),uy(n)(t),t) h’22(n)(t)及び最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),G2(ux(n)(t),uy(n)(t),t)}については、1変数多項式演算部206を利用して演算する。剰余h1(t)については、1変数多項式剰余演算部208を利用して演算する。
【0308】
復号部204は、前述同様に、平文多項式候補m(ux(n)(t),uy(n)(t),t)と、平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導く。
【0309】
ステップST32においては、この連立1次方程式を連立1次方程式求解部209が解くことにより、この解から復号部204が平文候補M(n)を生成する。この平文候補M(n)は、復号部204から平文検査部210に送出される。
【0310】
ステップST33においては、平文検査部210は、1変数多項式h11(n)(t)をそれぞれ除算して得られたn個の平文多項式候補m(ux(n)(t),uy(n)(t),t)から得られたn個の平文候補M(n)において共通した平文候補Mがあるか否かを判定する。
【0311】
ステップST37においては、復号部204は、平文検査部210による判定の結果、共通した平文候補M(n)があった場合に当該共通した平文候補M(n)を平文として出力部211から出力する。
【0312】
第6のバリエーションは、以上のようにして実現できる。尚、複数の平文候補がある場合、エラー出力してもよいが、この場合には第5のバリエーションと併用して複数の平文候補に誤り検出符号の検査を用いて平文候補を絞ることにより、エラー出力を回避して実施できる可能性が高い。
【0313】
第7のバリエーションに関しては、基幹多項式生成部313が、ステップST89にて最小公倍式の次数がセクション次数の判定値maxdegG’以下の場合に、更にセクションDを代入した基幹多項式G1(ux(t),uy(t),t),G2(ux(t),uy(t),t)が互いに素となるか否かを判定し、両者が素となればステップST91に進み、両者が素にならなければステップST90からステップST85に戻って多項式の生成から繰り返せばよい。互いに素であるか否かの判定は、例えば、ユークリッドの互除法か因数分解により、効率的に実行できる。
【0314】
第8のバリエーションは、図11に示すように、本実施形態で暗号化処理のST7を、w1j(x,y,t), w2j(x,y,t),r1j(x,y,t),r2j(x,y,t)を生成する処理とし、ST8からST11において、
Fij(x,y,t)=m(x,y,t)+f(x,y,t)si(x,y,t)+Gj(x,y,t)wij(x,y,t)+X(x,y,t)rij(x,y,t)
を計算し、ST12においてこれらを出力する。
【0315】
復号処理では図12に示すように、ST21において、暗号文Fij(x,y,t)を取得し、ST23においてこれらにセクションDを代入し、hij(t)を計算する。更に、ST24において
gj(t)≡{h1j(t)−h2j(t)} mod Gj(ux(t),uy(t),t) (j=1,…,k)
を計算し、ST25において復号部204は、3つ以上の剰余gj(t)(j=1,…,k)において、同数の1変数多項式Gj(ux(t),uy(t),t)(j=1,…,k)及び中国剰余定理に基づいて、必要により1変数多項式演算部206及び1変数多項式剰余演算部208を利用して、1変数多項式Gj(ux(t),uy(t),t)(j=1,…,k)の最小公倍式LCM{G1(ux(t),uy(t),t),…,Gk(ux(t),uy(t),t)}を法とした剰余g(t)≡{G1(ux(t),uy(t),t)g2(t)…gk(t)+G2(ux(t),uy(t),t)g1(t)g3(t)…gk(t)+...+Gk(ux(t),uy(t),t)g1(t)...gk-1(t)} mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を得る。
【0316】
ステップST29において、復号部204は、識別多項式f(ux(t),uy(t),t)の候補を順に抽出し、順次、h1j(t)(j=1,…,k)とGj(ux(t),uy(t),t)(j=1,…,k)とを共に1変数多項式剰余演算部208に送出する。更に1変数多項式剰余演算部208は、h1j(t)をそれぞれ1変数多項式Gj(ux(t),uy(t),t)で除算し、2つの剰余h’1j(n)(t)≡h1j(t) mod Gj(ux(t),uy(t),t)(j=1,…,k)を得る。得られた剰余h’1j(t)(j=1,…,k)は、1変数多項式剰余演算部208から復号部204に送出される。
【0317】
ステップST30において、復号部204は、3つ以上の剰余h’1j(t)及び同数の1変数多項式Gj(ux(t),uy(t),t)(j=1,…,k)及び中国剰余定理に基づいて、必要に応じて1変数多項式演算部206及び1変数多項式剰余演算部208を利用することにより、1変数多項式Gj(ux(t),uy(t),t)(j=1,…,k)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を法とした剰余
h1(t)≡{G1(ux(t),uy(t),t) h’12... h’1k(t)+... +Gk(ux(t),uy(t),t) h’11... h’1k-1(t) } mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を得る。
【0318】
例えば、各項G1(ux(t),uy(t),t) h’12... h’1k(t),..., Gk(ux(t),uy(t),t) h’11... h’1k-1(t)及び最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}については、1変数多項式演算部206を利用して演算する。剰余h1(t)については、1変数多項式剰余演算部208を利用して演算する。
【0319】
ステップST31においては、次式に示すように、h1(t)を更に識別多項式f(ux(t),uy(t),t)の候補で割って余りを求め、復号部204に送出する。
【0320】
m (ux(t),uy(t),t)≡h1(t)(mod f(ux(t),uy(t),t))
なお、本ステップは、上式に限らず、次式のように実行してもよい。
【0321】
m(ux(t),uy(t),t)≡h2(t) (mod f(ux(t),uy(t),t))
ここで、h2(t)は以下のように求める。h2j(t)(j=1,…,k)をそれぞれ1変数多項式Gj(ux(t),uy(t),t)(j=1,…,k)で除算し、2つの剰余h’2j(t)≡h2j(t) mod Gj(ux(t),uy(t),t) (j=1,…,k)を得る。得られた剰余h’2j(t) (j=1,…,k))は、1変数多項式剰余演算部208から復号部204に送出される。
【0322】
復号部204は、2つの剰余h’2j(t)(j=1,…,k)及び1変数多項式Gj(ux(t),uy(t),t)(j=1,…,k)及び中国剰余定理に基づいて、必要に応じて1変数多項式演算部206及び1変数多項式剰余演算部208を利用することにより、1変数多項式G1(ux(t),uy(t),t),...,G2(ux(t),uy(t),t)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を法とした剰余h2(t)≡{G1(ux(t),uy(t),t) h’22... h’2k(t)+... +Gk(ux(t),uy(t),t) h’21... h’2k-1(t) } mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を得る。
【0323】
例えば、各項G1(ux(t),uy(t),t) h’22... h’2k(t), Gk(ux(t),uy(t),t) h’21... h’2k-1(t)及び最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}については、1変数多項式演算部206を利用して演算する。剰余h2(t)については、1変数多項式剰余演算部208を利用して演算する。
【0324】
鍵生成処理では、図13に示すように、ST85において3変数多項式Gj(x,y,t) (j=1,…,k)を生成し、ST86においてGj(x,y,t) (j=1,…,k)にセクションDを代入することで、ST87を
min degG = max{degG1(ux(t),uy(t),t),...,degG(ux(t),uy(t),t)}
として実行し、ST88において前記セクションDが代入された3つ以上の多項式の公倍式を計算すればよい。尚、ST89では
max degG = deg LCM{G1(ux(t),uy(t),t),...,G(ux(t),uy(t),t)}
として計算すること、ST91においてk個の基幹多項式Gj(x,y,t) (j=1,…,k)を出力することは自明なことであるが付け加えておく。
【0325】
また、第8のバリエーションは、前述した2個の基幹多項式G1(x,y,t),G2(x,y,t)をk個の基幹多項式Gj(x,y,t) (j=1,2,...,k)に一般化した形態であり、前述した2個の基幹多項式G1(x,y,t),G2(x,y,t)が、第8のバリエーションの特殊な場合(Gj(x,y,t) (j=1,2)(即ちk=2)の場合)であると言えるので、各装置100,200,300が対応する各バリエーションに適宜、組み合わせて実行することができる。例えば第8のバリエーションの暗号装置100は、暗号化処理に対応する第1〜第4の各バリエーションに適宜、組み合わせて実行できる。同様に、第8のバリエーションの復号装置200は、復号処理に関する第5又は第6の各バリエーションに適宜、組み合わせて実行できる。例えば、第8のバリエーションは、第6のバリエーションと組み合わせる場合、第6のバリエーションと同様に、図12に示した復号処理のステップST23〜ST35(但し、ST33は省略)をセクションDの数だけ繰り返し、各セクションDnに対応した平文候補の集合Mnを求め、これらの集合Mnに含まれる平文候補をメモリ202に保存する。その後、平文候補集合Mnに共通な平文候補を平文mとして出力部211に出力すればよい。
【0326】
また同様に、第8のバリエーションの鍵生成装置300は、第7のバリエーションに適宜、組み合わせて実行できる。
【0327】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【0328】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【0329】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
【0330】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【0331】
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【0332】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【0333】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0334】
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【0335】
【図1】一般的な代数曲線を説明するための模式図である。
【図2】本発明の一実施形態に係る暗号装置の全体構成図である。
【図3】同実施形態における復号装置の全体構成図である。
【図4】同実施形態における鍵生成装置の全体構成図である。
【図5】同実施形態における暗号装置の動作を説明するためのフローチャートである。
【図6】同実施形態における復号装置の動作を説明するためのフローチャートである。
【図7】同実施形態における鍵生成装置の動作を説明するためのフローチャートである。
【図8】同実施形態における鍵生成装置の動作を説明するためのフローチャートである。
【図9】同実施形態における鍵生成装置の動作を説明するためのフローチャートである。
【図10】同実施形態における鍵生成装置の動作を説明するためのフローチャートである。
【図11】同実施形態の第8のバリエーションにおける暗号装置の動作を説明するためのフローチャートである。
【図12】同バリエーションにおける復号装置の動作を説明するためのフローチャートである。
【図13】同バリエーションにおける鍵生成装置の動作を説明するためのフローチャートである。
【符号の説明】
【0336】
1,2,3…記憶媒体、100…暗号装置、101,201…パラメータ格納部、102,202,302…メモリ、103,203,303…入力部、104…平文埋め込み部、105…暗号化部、106,312…識別多項式生成部、107…多項式生成部、108…ランダム値生成部、109,308…多項式演算部、110,211,314…出力部、111,212,313…バス、200…復号装置、204…復号部、205…セクション代入部、206…1変数多項式演算部、207…1変数多項式因数分解部、208…1変数多項式剰余演算部、209…連立1次方程式求解部、210…平文検査部、300…鍵生成装置、301…固定パラメータ格納部、304…制御部、305…セクション生成部、306…1変数多項式生成部、307…代数曲面生成部、309…平文多項式生成部、310…行列生成部、311…階数演算部、313…基幹多項式生成部。

【特許請求の範囲】
【請求項1】
体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式を用い、前記公開鍵であるファイブレーションX(x,y,t)及び基幹多項式Gj(x,y,t)に基づいて、メッセージmを暗号化するための暗号装置であって、
前記メッセージmを3変数の平文多項式m(x,y,t)の係数として埋め込む平文埋め込み手段と、
前記平文多項式に前記セクションを代入したときに得られる1変数多項式の次数に比べ、前記セクションを代入したときに得られる1変数多項式の次数が大きくなる範囲で3変数の識別多項式f(x,y,t)を生成する識別多項式生成手段と、
3変数の多項式s1(x,y,t),s2(x,y,t),r1j(x,y,t),r2j(x,y,t),w1j(x,y,t),w2j(x,y,t)をランダムに生成する多項式生成手段と、
前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s1(x,y,t)の乗算結果f(x,y,t)s1(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w1j(x,y,t)の乗算結果Gj(x,y,t)w1j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r1j(x,y,t)の乗算結果X(x,y,t)r1j(x,y,t)とを加算又は減算する処理により、k個の第1の暗号文F1j(x,y,t)=Epk(m,f,s1,Gj,w1j,r1j,X)(但し、j=1,2,...,k)を生成する第1の暗号化手段と、
前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s2(x,y,t)の乗算結果f(x,y,t)s2(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w2j(x,y,t)の乗算結果Gj(x,y,t)w2j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r2j(x,y,t)の乗算結果X(x,y,t)r2j(x,y,t)とを加算又は減算する処理により、k個の第2の暗号文F2j(x,y,t)=Epk(m,f,s2,Gj,w2j,r2j,X)(但し、j=1,2,...,k)を生成する第2の暗号化手段と、
を備えたことを特徴とする暗号装置。
【請求項2】
請求項1に記載の暗号装置において、
前記多項式生成手段は、
前記基幹多項式Gj(x,y,t)毎に、当該基幹多項式Gj(x,y,t)の各項のx,yの次数と同一のx,yの次数を各項がもつように前記多項式r1j(x,y,t),r2j(x,y,t)を生成し、前記ファイブレーションX(x,y,t)の各項のx,yの次数と同一のx,yの次数を各項がもつように前記多項式w1j(x,y,t),w2j(x,y,t)を生成する手段、
を備えたことを特徴とする暗号装置。
【請求項3】
請求項2に記載の暗号装置において、
前記識別多項式生成手段は、識別多項式f(x,y,t)として生成する多項式の範囲を既約多項式となる範囲に更に制限することを特徴とする暗号装置。
【請求項4】
請求項3に記載の暗号装置において、
前記平文埋め込み手段は、前記メッセージmを3変数の平文多項式m(x,y,t)の係数と3変数の識別多項式f(x,y,t)の係数とに分担して埋め込むことを特徴とする暗号装置。
【請求項5】
請求項1に記載の暗号装置において、
前記識別多項式生成手段は、識別多項式f(x,y,t)として生成する多項式の範囲を既約多項式となる範囲に更に制限することを特徴とする暗号装置。
【請求項6】
請求項1に記載の暗号装置において、
前記平文埋め込み手段は、前記メッセージmを3変数の平文多項式m(x,y,t)の係数と3変数の識別多項式f(x,y,t)の係数とに分担して埋め込むことを特徴とする暗号装置。
【請求項7】
請求項1乃至請求項6のいずれか1項に記載の暗号装置において、
前記kは2であることを特徴とする暗号装置。
【請求項8】
体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式が用いられ、前記メッセージmが係数として埋め込まれた3変数の平文多項式m(x,y,t)に対し、3変数の識別多項式f(x,y,t)及び多項式s1(x,y,t)の乗算結果f(x,y,t)s1(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w1j(x,y,t)の乗算結果Gj(x,y,t)w1j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r1j(x,y,t)の乗算結果X(x,y,t)r1j(x,y,t)とを加算又は減算する処理により生成されたk個の第1の暗号文F1j(x,y,t)=Epk(m,f,s1,Gj,w1j,r1j,X)(但し、j=1,2,...,k)と、前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s2(x,y,t)の乗算結果f(x,y,t)s2(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w2j(x,y,t)の乗算結果Gj(x,y,t)w2j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r2j(x,y,t)の乗算結果X(x,y,t)r2j(x,y,t)とを加算又は減算する処理により生成されたk個の第2の暗号文F2j(x,y,t)=Epk(m,f,s2,Gj,w2j,r2j,X)(但し、j=1,2,...,k)との2k個の暗号文F1j(x,y,t),F2j(x,y,t)が入力されたとき、前記セクションに基づいて、当該暗号文F1j(x,y,t),F2j(x,y,t)から前記メッセージmを復号するための復号装置であって、
前記入力された暗号文F1j(x,y,t),F2j(x,y,t)のそれぞれに対し、前記セクションを代入して2k個の1変数多項式h1j(t),h2j(t)を生成するセクション代入手段と、
前記各1変数多項式h1j(t)及びh2j(t)を互いに減算し、減算結果{h1j(t)−h2j(t)}を得る多項式減算手段と、
前記減算結果{h1j(t)−h2j(t)}を、それぞれ前記基幹多項式Gj(x,y,t)にセクションを代入した1変数多項式Gj(ux(t),uy(t),t)で除算し、k個の剰余gj(t)≡{h1j(t)−h2j(t)} mod Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)を得る第1の剰余演算手段と、
3個以上の前記剰余gj(t)、前記剰余gj(t)と同数の1変数多項式Gj(ux(t),uy(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を法とした剰余g(t)≡{G1(ux(t),uy(t),t)g2(t)...gk(t)+G2(ux(t),uy(t),t)g1(t)g3(t)...gk(t)+...+Gk(ux(t),uy(t),t)g1(t)...gk-1(t)} mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する第2の剰余演算手段と、
前記剰余g(t)を因数分解する因数分解手段と、
前記因数分解の結果により生じた因子を組合せることによって丁度deg f(ux(t),uy(t),t)を次数に持つ全ての識別多項式候補f(ux(t),uy(t),t)を抽出する多項式抽出手段と、
前記1変数多項式hij(t)をそれぞれ前記1変数多項式Gj(ux(t),uy(t),t)で除算し、k個の剰余h’ij(t)≡hij(t) mod Gj(ux(t),uy(t),t) (但し、i=1又は2、j=1,2,...,k)を得る第3の剰余演算手段と、
3個以上の前記剰余h’ij(t)、前記剰余h’ij(t)と同数の1変数多項式Gj(ux(t),uy(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を法とした剰余hi(t)≡{G1(ux(t),uy(t),t) h’i2(t)...h’ik(t)+G2(ux(t),uy(t),t) h’i1(t)h’i3(t)...h’ik(t)+...+Gk(ux(t),uy(t),t)h’i1(t)...h’ik-1(t)} mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する第4の剰余演算手段と、
前記hi(t)を更に前記識別多項式候補f(ux(t),uy(t),t)で除算して平文多項式候補m(ux(t),uy(t),t)を得る第5の剰余演算手段と、
前記平文多項式候補m(ux(t),uy(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補Mを生成する平文候補生成手段と、
前記平文候補Mに含まれる誤り検出符号により真の平文であるか否かを検査する平文多項式検査手段と、
前記検査の結果、真の平文である平文候補Mがあった場合に当該平文候補Mを平文として出力する出力手段と、
を備えたことを特徴とする復号装置。
【請求項9】
請求項8に記載の復号装置において、
前記メッセージmは3変数の平文多項式m(x,y,t)の係数と3変数の識別多項式f(x,y,t)の係数とに分担して埋め込まれており、
前記平文候補生成手段は、
前記平文多項式候補m(ux(t),uy(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補Mを生成する第1の候補生成手段と、
前記識別多項式候補f(ux(t),uy(t),t)と、前記識別多項式f(x,y,t)の予め公開された形式とに基づいて当該識別多項式f(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補Mを生成する第2の候補生成手段と
を備えたことを特徴とする復号装置。
【請求項10】
請求項8又は請求項9に記載の復号装置において、
前記kは2であることを特徴とする復号装置。
【請求項11】
体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応するn個のセクションDn(但し、n=1,2,…,n)を秘密鍵とする公開鍵暗号方式が用いられ、前記メッセージmが係数として埋め込まれた3変数の平文多項式m(x,y,t)に対し、3変数の識別多項式f(x,y,t)及び多項式s1(x,y,t)の乗算結果f(x,y,t)s1(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w1j(x,y,t)の乗算結果Gj(x,y,t)w1j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r1j(x,y,t)の乗算結果X(x,y,t)r1j(x,y,t)とを加算又は減算する処理により生成されたk個の第1の暗号文F1j(x,y,t)=Epk(m,f,s1,Gj,w1j,r1j,X)(但し、j=1,2,...,k)と、前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s2(x,y,t)の乗算結果f(x,y,t)s2(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w2j(x,y,t)の乗算結果Gj(x,y,t)w2j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r2j(x,y,t)の乗算結果X(x,y,t)r2j(x,y,t)とを加算又は減算する処理により生成されたk個の第2の暗号文F2j(x,y,t)=Epk(m,f,s2,Gj,w2j,r2j,X)(但し、j=1,2,...,k)との2k個の暗号文F1j(x,y,t),F2j(x,y,t)が入力されたとき、前記n個のセクションDnに基づいて、当該暗号文F1j(x,y,t),F2j(x,y,t)から前記メッセージmを復号するための復号装置であって、
前記入力された暗号文F1j(x,y,t),F2j(x,y,t)のそれぞれに対し、前記各セクションDnを代入してそれぞれ2k個の1変数多項式h1j(n)(t),h2j(n)(t)を生成するセクション代入手段と、
前記各1変数多項式h1j(n)(t)及びh2j(n)(t)を互いに減算し、減算結果{h1j(n)(t)−h2j(n)(t)}を得る多項式減算手段と、
前記減算結果{h1j(n)(t)−h2j(n)(t)}を、それぞれ前記基幹多項式Gj(x,y,t)に各セクションDnを代入した1変数多項式Gj(ux(n)(t),uy(n)(t),t)で除算し、それぞれk個の剰余gj(n)(t)≡{h1j(n)(t)−h2j(n)(t)} mod Gj(ux(n)(t),uy(n)(t),t) (但し、j=1,2,...,k)を得る第1の剰余演算手段と、
3個以上の前記剰余gj(n)(t)、前記剰余gj(n)(t)と同数の1変数多項式Gj(ux(n)(t),uy(n)(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(n)(t),uy(n)(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),...,Gk(ux(n)(t),uy(n)(t),t)}を法とした剰余g(n)(t)≡{G1(ux(n)(t),uy(n)(t),t)g2(n)(t)...gk(n)(t)+G2(ux(n)(t),uy(n)(t),t)g1(n)(t)g3(n)(t)...gk(n)(t)+...+Gk(ux(n)(t),uy(n)(t),t)g1(n)(t)...gk-1(n)(t)} mod LCM{G1(ux(n)(t),uy(n)(t),t),...,Gk(ux(n)(t),uy(n)(t),t)}を演算する第2の剰余演算手段と、
前記剰余g(n)(t)を因数分解する因数分解手段と、
前記因数分解の結果により生じた因子を組合せることによって丁度deg f(ux(n)(t),uy(n)(t),t)を次数に持つ全ての識別多項式候補f(ux(n)(t),uy(n)(t),t)を抽出する多項式抽出手段と、
前記1変数多項式hij(n)(t)をそれぞれ前記1変数多項式Gj(ux(n)(t),uy(n)(t),t)で除算し、それぞれk個の剰余h’ij(n)(t)≡hij(t) mod Gj(ux(n)(t),uy(n)(t),t) (但し、i=1又は2、j=1,2,...,k)を得る第3の剰余演算手段と、
3個以上の前記剰余h’ij(n)(t)、前記剰余h’ij(n)(t)と同数の1変数多項式Gj(ux(n)(t),uy(n)(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(n)(t),uy(n)(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),...,Gk(ux(n)(t),uy(n)(t),t)}を法とした剰余hi(n)(t)≡{G1(ux(n)(t),uy(n)(t),t) h’i2(n)(t)...h’ik(n)(t)+G2(ux(n)(t),uy(n)(t),t) h’i1(n)(t)h’i3(n)(t)...h’ik(n)(t)+...+Gk(ux(n)(t),uy(n)(t),t)h’i1(n)(t)...h’ik-1(n)(t)} mod LCM{G1(ux(n)(t),uy(n)(t),t),...,Gk(ux(n)(t),uy(n)(t),t)}を演算する第4の剰余演算手段と、
前記hi(n)(t)を更に前記識別多項式候補f(ux(n)(t),uy(n)(t),t)で除算して平文多項式候補m(ux(n)(t),uy(n)(t),t)を得る第5の剰余演算手段と、
前記平文多項式候補m(ux(n)(t),uy(n)(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補M(n)を生成する平文候補生成手段と、
前記生成されたn個の平文候補M(n)において共通した平文候補M(n)があるか否かを判定する共通候補判定手段と、
前記判定の結果、共通した平文候補M(n)があった場合に当該共通した平文候補M(n)を平文として出力する出力手段と、
を備えたことを特徴とする復号装置。
【請求項12】
請求項11に記載の復号装置において、
前記メッセージmは3変数の平文多項式m(x,y,t)の係数と3変数の識別多項式f(x,y,t)の係数とに分担して埋め込まれており、
前記平文候補生成手段は、
前記平文多項式候補m(ux(n)(t),uy(n)(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補M(n)を生成する第1の候補生成手段と、
前記識別多項式候補f(ux(n)(t),uy(n)(t),t)と、前記識別多項式f(x,y,t)の予め公開された形式とに基づいて当該識別多項式f(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補M(n)を生成する第2の候補生成手段とを備えており、
前記共通候補判定手段は、
前記第1及び第2の候補生成手段により得られた各々の平文候補M(n)に共通した平文候補M(n)があるか否かを判定することを特徴とする復号装置。
【請求項13】
請求項11又は請求項12に記載の復号装置において、
前記kは2であることを特徴とする復号装置。
【請求項14】
体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式に関し、前記公開鍵の一部であるk個の基幹多項式Gj(x,y,t)を生成するための鍵生成装置であって、
前記基幹多項式Gj(x,y,t)のx,yがtでパラメタライズされた1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)同士の最小公倍式の次数であるセクション次数の最大値maxdegG=deg LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}の判定値maxdegG’を格納する格納手段と、
3変数の多項式Gj(x,y,t)(但し、j=1,2,...,k)をランダムに生成する多項式生成手段と、
前記生成された多項式Gj(x,y,t)に前記セクションを代入してk個の1変数多項式G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)を得るセクション代入手段と、
前記1変数多項式G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する最小公倍式演算手段と、
前記最小公倍式演算手段により演算された最小公倍式の次数が前記格納手段内の判定値maxdegG’以下であるか否かを判定する次数判定手段と、
前記判定の結果、前記最小公倍式の次数が前記判定値maxdegG’以下であるとき、前記生成した多項式Gj(x,y,t)(但し、j=1,2,...,k)を棄却し、前記多項式演算手段、前記セクション代入手段、前記最小公倍式演算手段及び前記次数判定手段を再実行する手段と、
前記次数判定手段による判定の結果、否の場合には、前記生成した多項式Gj(x,y,t)を前記k個の基幹多項式Gj(x,y,t)として出力する出力手段と、
を備えたことを特徴とする鍵生成装置。
【請求項15】
請求項14に記載の鍵生成装置において、
前記kは2であることを特徴とする鍵生成装置。
【請求項16】
体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式を用い、前記公開鍵であるファイブレーションX(x,y,t)及び基幹多項式Gj(x,y,t)に基づいて、メッセージmを暗号化するための暗号装置に用いられるプログラムであって、
前記暗号装置を、
前記メッセージmを3変数の平文多項式m(x,y,t)の係数として埋め込む平文埋め込み手段、
前記係数が埋め込まれた平文多項式m(x,y,t)を前記暗号装置のメモリに書き込む手段、
前記平文多項式に前記セクションを代入したときに得られる1変数多項式の次数に比べ、前記セクションを代入したときに得られる1変数多項式の次数が大きくなる範囲で3変数の識別多項式f(x,y,t)を生成する識別多項式生成手段、
3変数の多項式s1(x,y,t),s2(x,y,t),r1j(x,y,t),r2j(x,y,t),w1j(x,y,t),w2j(x,y,t)をランダムに生成する多項式生成手段、
前記メモリ内の平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s1(x,y,t)の乗算結果f(x,y,t)s1(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w1j(x,y,t)の乗算結果Gj(x,y,t)w1j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r1j(x,y,t)の乗算結果X(x,y,t)r1j(x,y,t)とを加算又は減算する処理により、k個の第1の暗号文F1j(x,y,t)=Epk(m,f,s1,Gj,w1j,r1j,X)(但し、j=1,2,...,k)を生成する第1の暗号化手段、
前記メモリ内の平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s2(x,y,t)の乗算結果f(x,y,t)s2(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w2j(x,y,t)の乗算結果Gj(x,y,t)w2j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r2j(x,y,t)の乗算結果X(x,y,t)r2j(x,y,t)とを加算又は減算する処理により、k個の第2の暗号文F2j(x,y,t)=Epk(m,f,s2,Gj,w2j,r2j,X)(但し、j=1,2,...,k)を生成する第2の暗号化手段、
として機能させるためのプログラム。
【請求項17】
請求項16に記載のプログラムにおいて、
前記多項式生成手段は、
前記基幹多項式Gj(x,y,t)毎に、当該基幹多項式Gj(x,y,t)の各項のx,yの次数と同一のx,yの次数を各項がもつように前記多項式r1j(x,y,t),r2j(x,y,t)を生成し、前記ファイブレーションX(x,y,t)の各項のx,yの次数と同一のx,yの次数を各項がもつように前記多項式w1j(x,y,t),w2j(x,y,t)を生成する手段、
として前記暗号装置を機能させることを特徴とするプログラム。
【請求項18】
請求項17に記載のプログラムにおいて、
前記識別多項式生成手段は、識別多項式f(x,y,t)として生成する多項式の範囲を既約多項式となる範囲に更に制限するように、因数分解可能な識別多項式f(x,y,t)を生成したときには当該識別多項式f(x,y,t)を破棄し、識別多項式の生成処理を再実行する手段として前記暗号装置を機能させることを特徴とするプログラム。
【請求項19】
請求項18に記載のプログラムにおいて、
前記平文埋め込み手段は、前記メッセージmを3変数の平文多項式m(x,y,t)の係数と3変数の識別多項式f(x,y,t)の係数とに分担して埋め込むように前記暗号装置を機能させることを特徴とするプログラム。
【請求項20】
請求項16に記載のプログラムにおいて、
前記識別多項式生成手段は、識別多項式f(x,y,t)として生成する多項式の範囲を既約多項式となる範囲に更に制限するように、因数分解可能な識別多項式f(x,y,t)を生成したときには当該識別多項式f(x,y,t)を破棄し、識別多項式の生成処理を再実行する手段として前記暗号装置を機能させることを特徴とするプログラム。
【請求項21】
請求項16に記載のプログラムにおいて、
前記平文埋め込み手段は、前記メッセージmを3変数の平文多項式m(x,y,t)の係数と3変数の識別多項式f(x,y,t)の係数とに分担して埋め込むように前記暗号装置を機能させることを特徴とするプログラム。
【請求項22】
請求項16乃至請求項21のいずれか1項に記載のプログラムにおいて、
前記kは2であることを特徴とするプログラム。
【請求項23】
体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式が用いられ、前記メッセージmが係数として埋め込まれた3変数の平文多項式m(x,y,t)に対し、3変数の識別多項式f(x,y,t)及び多項式s1(x,y,t)の乗算結果f(x,y,t)s1(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w1j(x,y,t)の乗算結果Gj(x,y,t)w1j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r1j(x,y,t)の乗算結果X(x,y,t)r1j(x,y,t)とを加算又は減算する処理により生成されたk個の第1の暗号文F1j(x,y,t)=Epk(m,f,s1,Gj,w1j,r1j,X)(但し、j=1,2,...,k)と、前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s2(x,y,t)の乗算結果f(x,y,t)s2(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w2j(x,y,t)の乗算結果Gj(x,y,t)w2j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r2j(x,y,t)の乗算結果X(x,y,t)r2j(x,y,t)とを加算又は減算する処理により生成されたk個の第2の暗号文F2j(x,y,t)=Epk(m,f,s2,Gj,w2j,r2j,X)(但し、j=1,2,...,k)との2k個の暗号文F1j(x,y,t),F2j(x,y,t)が入力されたとき、前記セクションに基づいて、当該暗号文F1j(x,y,t),F2j(x,y,t)から前記メッセージmを復号するための復号装置に用いられるプログラムであって、
前記復号装置を、
前記入力された暗号文F1j(x,y,t),F2j(x,y,t)を前記復号装置のメモリに書き込む手段、
前記メモリ内の暗号文F1j(x,y,t),F2j(x,y,t)のそれぞれに対し、前記セクションを代入して2k個の1変数多項式h1j(t),h2j(t)を生成するセクション代入手段、
前記各1変数多項式h1j(t)及びh2j(t)を互いに減算し、減算結果{h1j(t)−h2j(t)}を得る多項式減算手段、
前記減算結果{h1j(t)−h2j(t)}を、それぞれ前記基幹多項式Gj(x,y,t)にセクションを代入した1変数多項式Gj(ux(t),uy(t),t)で除算し、k個の剰余gj(t)≡{h1j(t)−h2j(t)} mod Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)を得る第1の剰余演算手段、
3個以上の前記剰余gj(t)、前記剰余gj(t)と同数の1変数多項式Gj(ux(t),uy(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を法とした剰余g(t)≡{G1(ux(t),uy(t),t)g2(t)...gk(t)+G2(ux(t),uy(t),t)g1(t)g3(t)...gk(t)+...+Gk(ux(t),uy(t),t)g1(t)...gk-1(t)} mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する第2の剰余演算手段、
前記剰余g(t)を因数分解する因数分解手段、
前記因数分解の結果により生じた因子を組合せることによって丁度deg f(ux(t),uy(t),t)を次数に持つ全ての識別多項式候補f(ux(t),uy(t),t)を抽出する多項式抽出手段、
前記1変数多項式hij(t)をそれぞれ前記1変数多項式Gj(ux(t),uy(t),t)で除算し、k個の剰余h’ij(t)≡hij(t) mod Gj(ux(t),uy(t),t) (但し、i=1又は2、j=1,2,...,k)を得る第3の剰余演算手段、
3個以上の前記剰余h’ij(t)、前記剰余h’ij(t)と同数の1変数多項式Gj(ux(t),uy(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を法とした剰余hi(t)≡{G1(ux(t),uy(t),t) h’i2(t)...h’ik(t)+G2(ux(t),uy(t),t) h’i1(t)h’i3(t)...h’ik(t)+...+Gk(ux(t),uy(t),t)h’i1(t)...h’ik-1(t)} mod LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する第4の剰余演算手段、
前記hi(t)を更に前記識別多項式候補f(ux(t),uy(t),t)で除算して平文多項式候補m(ux(t),uy(t),t)を得る第5の剰余演算手段、
前記平文多項式候補m(ux(t),uy(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補Mを生成する平文候補生成手段、
前記平文候補Mに含まれる誤り検出符号により真の平文であるか否かを検査する平文多項式検査手段、
前記検査の結果、真の平文である平文候補Mがあった場合に当該平文候補Mを平文として出力する出力手段、
として機能させるためのプログラム。
【請求項24】
請求項23に記載のプログラムにおいて、
前記メッセージmは3変数の平文多項式m(x,y,t)の係数と3変数の識別多項式f(x,y,t)の係数とに分担して埋め込まれており、
前記平文候補生成手段は、
前記平文多項式候補m(ux(t),uy(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補Mを生成する第1の候補生成手段、
前記識別多項式候補f(ux(t),uy(t),t)と、前記識別多項式f(x,y,t)の予め公開された形式とに基づいて当該識別多項式f(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補Mを生成する第2の候補生成手段、
として前記復号装置を機能させることを特徴とするプログラム。
【請求項25】
請求項23又は請求項24に記載のプログラムにおいて、
前記kは2であることを特徴とするプログラム。
【請求項26】
体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応するn個のセクションDn(但し、n=1,2,…,n)を秘密鍵とする公開鍵暗号方式が用いられ、前記メッセージmが係数として埋め込まれた3変数の平文多項式m(x,y,t)に対し、3変数の識別多項式f(x,y,t)及び多項式s1(x,y,t)の乗算結果f(x,y,t)s1(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w1j(x,y,t)の乗算結果Gj(x,y,t)w1j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r1j(x,y,t)の乗算結果X(x,y,t)r1j(x,y,t)とを加算又は減算する処理により生成されたk個の第1の暗号文F1j(x,y,t)=Epk(m,f,s1,Gj,w1j,r1j,X)(但し、j=1,2,...,k)と、前記平文多項式m(x,y,t)に対し、前記識別多項式f(x,y,t)及び多項式s2(x,y,t)の乗算結果f(x,y,t)s2(x,y,t)と、前記基幹多項式Gj(x,y,t)及び多項式w2j(x,y,t)の乗算結果Gj(x,y,t)w2j(x,y,t)と、前記ファイブレーションX(x,y,t)及び多項式r2j(x,y,t)の乗算結果X(x,y,t)r2j(x,y,t)とを加算又は減算する処理により生成されたk個の第2の暗号文F2j(x,y,t)=Epk(m,f,s2,Gj,w2j,r2j,X)(但し、j=1,2,...,k)との2k個の暗号文F1j(x,y,t),F2j(x,y,t)が入力されたとき、前記n個のセクションDnに基づいて、当該暗号文F1j(x,y,t),F2j(x,y,t)から前記メッセージmを復号するための復号装置に用いられるプログラムであって、
前記復号装置を、
前記入力された暗号文F1j(x,y,t),F2j(x,y,t)を前記復号装置のメモリに書き込む手段、
前記メモリ内の暗号文F1j(x,y,t),F2j(x,y,t)のそれぞれに対し、前記各セクションDnを代入してそれぞれ2k個の1変数多項式h1j(n)(t),h2j(n)(t)を生成するセクション代入手段、
前記各1変数多項式h1j(n)(t)及びh2j(n)(t)を互いに減算し、減算結果{h1j(n)(t)−h2j(n)(t)}を得る多項式減算手段、
前記減算結果{h1j(n)(t)−h2j(n)(t)}を、それぞれ前記基幹多項式Gj(x,y,t)に各セクションDnを代入した1変数多項式Gj(ux(n)(t),uy(n)(t),t)で除算し、それぞれk個の剰余gj(n)(t)≡{h1j(n)(t)−h2j(n)(t)} mod Gj(ux(n)(t),uy(n)(t),t) (但し、j=1,2,...,k)を得る第1の剰余演算手段、
3個以上の前記剰余gj(n)(t)、前記剰余gj(n)(t)と同数の1変数多項式Gj(ux(n)(t),uy(n)(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(n)(t),uy(n)(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),...,Gk(ux(n)(t),uy(n)(t),t)}を法とした剰余g(n)(t)≡{G1(ux(n)(t),uy(n)(t),t)g2(n)(t)...gk(n)(t)+G2(ux(n)(t),uy(n)(t),t)g1(n)(t)g3(n)(t)...gk(n)(t)+...+Gk(ux(n)(t),uy(n)(t),t)g1(n)(t)...gk-1(n)(t)} mod LCM{G1(ux(n)(t),uy(n)(t),t),...,Gk(ux(n)(t),uy(n)(t),t)}を演算する第2の剰余演算手段、
前記剰余g(n)(t)を因数分解する因数分解手段、
前記因数分解の結果により生じた因子を組合せることによって丁度deg f(ux(n)(t),uy(n)(t),t)を次数に持つ全ての識別多項式候補f(ux(n)(t),uy(n)(t),t)を抽出する多項式抽出手段、
前記1変数多項式hij(n)(t)をそれぞれ前記1変数多項式Gj(ux(n)(t),uy(n)(t),t)で除算し、それぞれk個の剰余h’ij(n)(t)≡hij(t) mod Gj(ux(n)(t),uy(n)(t),t) (但し、i=1又は2、j=1,2,...,k)を得る第3の剰余演算手段、
3個以上の前記剰余h’ij(n)(t)、前記剰余h’ij(n)(t)と同数の1変数多項式Gj(ux(n)(t),uy(n)(t),t)及び中国剰余定理に基づいて、前記1変数多項式Gj(ux(n)(t),uy(n)(t),t) (但し、j=1,2,...,k)の最小公倍式LCM{G1(ux(n)(t),uy(n)(t),t),...,Gk(ux(n)(t),uy(n)(t),t)}を法とした剰余hi(n)(t)≡{G1(ux(n)(t),uy(n)(t),t) h’i2(n)(t)...h’ik(n)(t)+G2(ux(n)(t),uy(n)(t),t) h’i1(n)(t)h’i3(n)(t)...h’ik(n)(t)+...+Gk(ux(n)(t),uy(n)(t),t)h’i1(n)(t)...h’ik-1(n)(t)} mod LCM{G1(ux(n)(t),uy(n)(t),t),...,Gk(ux(n)(t),uy(n)(t),t)}を演算する第4の剰余演算手段、
前記hi(n)(t)を更に前記識別多項式候補f(ux(n)(t),uy(n)(t),t)で除算して平文多項式候補m(ux(n)(t),uy(n)(t),t)を得る第5の剰余演算手段、
前記平文多項式候補m(ux(n)(t),uy(n)(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補M(n)を生成する平文候補生成手段、
前記生成されたn個の平文候補M(n)において共通した平文候補M(n)があるか否かを判定する共通候補判定手段、
前記判定の結果、共通した平文候補M(n)があった場合に当該共通した平文候補M(n)を平文として出力する出力手段、
として機能させるためのプログラム。
【請求項27】
請求項26に記載のプログラムにおいて、
前記メッセージmは3変数の平文多項式m(x,y,t)の係数と3変数の識別多項式f(x,y,t)の係数とに分担して埋め込まれており、
前記平文候補生成手段は、
前記平文多項式候補m(ux(n)(t),uy(n)(t),t)と、前記平文多項式m(x,y,t)の予め公開された形式とに基づいて当該平文多項式m(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補M(n)を生成する第1の候補生成手段と、
前記識別多項式候補f(ux(n)(t),uy(n)(t),t)と、前記識別多項式f(x,y,t)の予め公開された形式とに基づいて当該識別多項式f(x,y,t)の係数を変数とする連立1次方程式を導き、この連立1次方程式を解くことにより平文候補M(n)を生成する第2の候補生成手段とを備えており、
前記共通候補判定手段は、
前記第1及び第2の候補生成手段により得られた各々の平文候補M(n)に共通した平文候補M(n)があるか否かを判定する手段として前記復号装置を機能させることを特徴とするプログラム。
【請求項28】
請求項26又は請求項27に記載のプログラムにおいて、
前記kは2であることを特徴とするプログラム。
【請求項29】
体Kの代数曲面X(x,y,z)=0のうち、x,yがtでパラメタライズされた曲線(x,y,t)=(ux(t),uy(t),t)であるセクションが存在する代数曲面XであるファイブレーションX(x,y,t)=0とk個の基幹多項式Gj(x,y,t)(但し、j=1,2,...,k)とを公開鍵とし、前記ファイブレーションX(x,y,t)に対応する1つ以上のセクションを秘密鍵とする公開鍵暗号方式に関し、前記公開鍵の一部であるk個の基幹多項式Gj(x,y,t)を生成するための鍵生成装置に用いられるプログラムであって、
前記鍵生成装置を、
前記基幹多項式Gj(x,y,t)のx,yがtでパラメタライズされた1変数多項式Gj(ux(t),uy(t),t) (但し、j=1,2,...,k)同士の最小公倍式の次数であるセクション次数の最大値maxdegG=deg LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}の判定値maxdegG’を前記鍵生成装置のメモリに書き込む手段、
3変数の多項式Gj(x,y,t)(但し、j=1,2,...,k)をランダムに生成する多項式生成手段、
前記生成された多項式Gj(x,y,t)に前記セクションを代入してk個の1変数多項式G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)を得るセクション代入手段、
前記1変数多項式G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)の最小公倍式LCM{G1(ux(t),uy(t),t),...,Gk(ux(t),uy(t),t)}を演算する最小公倍式演算手段、
前記演算された最小公倍式の次数が前記メモリ内の判定値maxdegG’以下であるか否かを判定する次数判定手段、
前記判定の結果、前記最小公倍式の次数が前記判定値maxdegG’以下であるとき、前記生成した多項式Gj(x,y,t)(但し、j=1,2,...,k)を棄却し、前記多項式演算手段、前記セクション代入手段、前記最小公倍式演算手段及び前記次数判定手段を再実行する手段、
前記次数判定手段による判定の結果、否の場合には、前記生成した多項式Gj(x,y,t)を前記k個の基幹多項式Gj(x,y,t)として出力する出力手段、
として機能させるためのプログラム。
【請求項30】
請求項29に記載のプログラムにおいて、
前記kは2であることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate