鍵生成装置、鍵生成方法及び鍵生成プログラム
【課題】安全性・信頼性の高いデジタル署名を生成することができ、しかも少ない計算量で実現可能な公開鍵暗号に基づくデジタル署名システムを提供する。
【解決手段】有限体Fq上定義された3次元多様体A(x,y,s,t)(公開鍵)と該A内の曲面のうちxとy座標がパラメータsとtの関数で表されたセクション(秘密鍵)の生成のため、2変数多項式λx(s,t)を生成し、λxで割り切れる2変数多項式λy(s,t)を生成し、ux(s,t)−vx(s,t)をλxとする2変数多項式uxとvxを生成し、uy(s,t)−vy(s,t)をλyとする2変数多項式uyとvyを生成し、uxをx座標、uyをy座標とするセクションD1:(ux(s,t),uy(s,t),s,t)と、vxをx座標、vyをy座標とするセクションD2:(vx(s,t),vy(s,t),s,t)を生成し、セクションD1とD2を含む上記Aの多項式を生成する。
【解決手段】有限体Fq上定義された3次元多様体A(x,y,s,t)(公開鍵)と該A内の曲面のうちxとy座標がパラメータsとtの関数で表されたセクション(秘密鍵)の生成のため、2変数多項式λx(s,t)を生成し、λxで割り切れる2変数多項式λy(s,t)を生成し、ux(s,t)−vx(s,t)をλxとする2変数多項式uxとvxを生成し、uy(s,t)−vy(s,t)をλyとする2変数多項式uyとvyを生成し、uxをx座標、uyをy座標とするセクションD1:(ux(s,t),uy(s,t),s,t)と、vxをx座標、vyをy座標とするセクションD2:(vx(s,t),vy(s,t),s,t)を生成し、セクションD1とD2を含む上記Aの多項式を生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、公開鍵暗号方式を利用したデジタル署名生成装置、デジタル署名検証装置、鍵生成装置に関する。
【背景技術】
【0002】
電子メールを始めとする多くの情報がネットワークを行き交うことにより、人々がコミュニケーションを行なうネットワーク社会において、暗号技術は情報の機密性や真正性を守る手段として広く活用されている。
【0003】
暗号技術は大きく共通鍵暗号技術と公開鍵暗号技術に分けることができ、共通鍵暗号はデータの攪拌アルゴリズムに基づいた暗号方式で、高速に暗号化/復号ができる一方で、予め共通の鍵を持った2者間でしか秘密通信や認証通信ができない。公開鍵暗号は数学的なアルゴリズムに基づいた暗号方式で、共通鍵暗号ほど暗号化/復号が高速でないが、事前の鍵共有を必要とせず、通信の際は送信相手が公開している公開鍵を利用して秘密通信を実現し、送信者の秘密鍵を利用してデジタル署名を施すことで(成りすましを防ぐ)認証通信が可能となるという特徴がある。
【0004】
このため、共通鍵暗号に基づくデジタル署名は秘密鍵を共有できる環境にある相手間や機器間で、高速性が求められている場合か、署名生成装置か署名検証装置のどちらか一方の能力が低い場合の認証手段として用いられている。また、公開鍵暗号に基づくデジタル署名は、インターネットに開設されているネットショッピング、銀行や証券会社のオンラインサイトなど秘密鍵が共有できない環境にある場合や、秘密鍵が共有できる環境にある場合でも、署名生成装置か署名検証装置のどちらの計算能力も高い場合に用いられている。
【0005】
代表的な公開鍵暗号には、RSA暗号と楕円曲線暗号があり、それぞれに基づくデジタル署名方式が提案されている。RSA暗号は素因数分解問題の困難性が安全性の根拠となっており、署名生成演算及び署名検証演算として冪乗剰余演算が用いられている。楕円曲線暗号は楕円曲線上の離散対数問題の困難性が安全性の根拠となっており、署名生成演算並びに署名検証演算として楕円曲線上の点演算が用いられている。これらの公開鍵暗号は特定の鍵(公開鍵)に関する解読法(署名偽造法)は提案されているものの、一般的な解読法(署名偽造法)は知られていないため、安全性に関する重大な問題は、後に述べる量子計算機による解読法を除き、現在までのところ見つかっていない。
【0006】
この他の公開鍵暗号に基づくデジタル署名には、体の拡大理論を利用して構成され連立方程式の求解問題に安全性の根拠をおいた多次多変数暗号に基づくSFLASHと呼ばれる方式がある。しかし、多次多変数暗号には有力な攻撃方法が知られており、その解読法を避けるために必要な鍵サイズを大きくしなくてはならず、実用性が問題視されはじめている。
【0007】
一方で、現在デジタル署名に広く利用されているRSA暗号と楕円曲線暗号であっても、量子計算機が出現すれば解読される危険に晒されている。量子計算機とは量子力学で知られているエンタングルメントという物理現象を利用して、(現在の計算機とは違った原理に基づいて)超並列計算を行わせることができる計算機であり、現在までのところ実験レベルでしか動作が確認されていない仮想の計算機であるが、実現に向けた研究開発が進められている。この量子計算機を用いて1994年にShorは素因数分解や離散対数問題を効率的に解くアルゴリズムが構成できることを示した(非特許文献1参照)。
【0008】
即ち、量子計算機が実現すれば素因数分解に基づくRSA暗号や、(楕円曲線上の)離散対数問題に基づく楕円曲線暗号は解読できることになる。
【0009】
このような状況の下、量子計算機が実現されてもなお安全な公開鍵暗号に基づくデジタル署名の研究が近年行われるようになってきた。現時点で実現可能で公開鍵暗号で量子計算機でも解読が難しいとされている方式には多次多変数暗号に基づくSFLASHと呼ばれる方式があるが、多次多変数暗号は前記の通り、現状の計算機に対して安全とするために必要となる鍵サイズが膨大となっており、実用化が危ぶまれている。
【0010】
更に、公開鍵暗号は共通鍵暗号と比較して、回路規模が大きく、処理時間も掛かるため、モバイル端末などの小電力環境では実現できないか実現しても処理時間がかかるという問題があった。このため、小電力環境でも実現できる公開鍵暗号が求められている。
【0011】
一般に公開鍵暗号に基づくデジタル署名は(素因数分解問題や離散対数問題などの)計算困難な問題を見出し、(秘密鍵を知らずに)平文と呼ばれるメッセージにデジタル署名を生成しようとすることが当該計算困難な問題を解くことと計算量的に同等になるように構成する。しかし、逆に計算困難な問題が見つかったとしても必ずしもその問題を安全性の根拠とするようにデジタル署名を構成できる訳ではない。なぜなら、計算が困難すぎる問題に安全性の根拠をおくと鍵を生成する問題も困難になり、構成が難しくなる。一方で問題を鍵生成が可能となる程度に容易とすると、デジタル署名の偽造も容易になってしまう。
【0012】
従って、公開鍵暗号を構成するには計算困難な問題を見つけるとともに、鍵を生成できる程には容易だが、(生成した秘密鍵を知らずに)解読できる程には容易でないという絶妙なバランスを持つ問題に作り変えるという創造性が必要であり、そこが難しいために現在まで数えるほどの公開鍵暗号に基づくデジタル署名しか提案されてこなかった。
【先行技術文献】
【非特許文献】
【0013】
【非特許文献1】P.W.Shor:“Algorithms for Quantum Computation : Discrete Log and Factoring”,Proceedings of the 35th Annual IEEE Symposium on Foundations of Computer Science,1994.
【発明の概要】
【発明が解決しようとする課題】
【0014】
このように、従来は、量子計算機が出現しても安全性が確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号に基づくデジタル署名システム(鍵を生成し、デジタル署名を生成し、検証を行うためのシステム)が存在しなかった。
【0015】
そこで、本発明は、安全性・信頼性の高いデジタル署名を生成することができ、しかも少ない計算量で実現可能な公開鍵暗号に基づくデジタル署名システムを提供する。
【課題を解決するための手段】
【0016】
本発明に係るデジタル署名生成装置は、有限体Fqならびに署名生成用の秘密鍵として、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションD(ux(s,t),uy(s,t),s,t)を記憶する記憶手段を備え、メッセージmのハッシュ値を計算し、前記ハッシュ値を前記有限体Fq上定義された1変数多項式h(t)に埋め込み、ハッシュ値多項式を生成し、前記記憶手段に記憶されたセクションのパラメータsに前記ハッシュ値多項式を代入することで、x座標及びy座標がパラメータtの関数で表された前記セクション上の曲線であるデジタル署名Ds(Ux(t),Uy(t),t)を生成する。
【0017】
本発明に係るデジタル署名検証装置は、有限体Fqならびに公開鍵として、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)の多項式を記憶する記憶手段を備え、メッセージmを入力するとともに、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションD(ux(s,t),uy(s,t),s,t)を署名生成用の秘密鍵として用いて生成された、x座標及びy座標がパラメータtの関数で表された前記セクション上の曲線である、前記メッセージmに対応したデジタル署名Ds:(Ux(t),Uy(t),t)を入力する。前記メッセージmのハッシュ値を計算し、前記ハッシュ値を、パラメータtを有する前記有限体Fq上定義された1変数多項式h(t)に埋め込み、ハッシュ値多項式を生成し、前記記憶手段に記憶された前記多項式のパラメータsに前記ハッシュ値多項式を代入して、前記ハッシュ値に対応した代数曲面X(x,y,t)を計算し、前記代数曲面X(x,y,t)の座標x及び座標yに、前記デジタル署名のx座標を表す関数Ux(t)と、y座標を表す関数Uy(t)をそれぞれ代入することにより、前記メッセージ及び前記デジタル署名の正当性を検証する。
【0018】
本発明の鍵生成装置は、有限体Fqならびに署名検証用の公開鍵として用いられる、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、署名生成用の秘密鍵として用いられる前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションを生成する鍵生成装置であって、前記有限体Fq上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)を生成し、前記第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fq上定義された第2の2変数多項式λy(s,t)を生成し、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}が前記第1の2変数多項式λx(s,t)となるように生成し、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}が前記第2の2変数多項式λy(s,t)となるように生成し、2変数多項式ux(s,t)をx座標、2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、2変数多項式vx(s,t)をx座標、2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成する。また、前記セクションD1及び前記セクションD2を含む前記3次元多様体A(x,y,s,t)の多項式を生成する。
【0019】
本発明の鍵生成装置は、有限体Fqならびに、x座標、y座標、パラメータs、及びパラメータtで表された、署名検証用の公開鍵として用いられる前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表された、署名生成用の秘密鍵として用いられるセクションを生成する鍵生成装置であって、パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fq上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fq上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成し、第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求め、第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める、第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成し、生成された等式を展開することにより、前記3次元多様体A(x,y,s,t)の多項式を生成する。
【発明の効果】
【0020】
安全性・信頼性の高い公開鍵暗号に基づくデジタル署名を生成することができ、しかも少ない計算量で実現可能となる。
【図面の簡単な説明】
【0021】
【図1】3次元多様体のファイブレーションと、代数曲面について説明するための図。
【図2】鍵生成装置の構成例を示した図。
【図3】図2の鍵生成装置の処理動作を説明するためのフローチャート。
【図4】デジタル署名生成装置の構成例を示した図。
【図5】図4のデジタル署名生成装置の処理動作を説明するためのフローチャート。
【図6】デジタル署名検証装置の構成例を示した図。
【図7】図6のデジタル署名検証装置の処理動作を説明するためのフローチャート。
【図8】鍵生成装置の他の構成例を示した図。
【図9】図8の鍵生成装置の処理動作を説明するためのフローチャート。
【図10】図2の鍵生成装置の他の構成例を示した図。
【図11】図4のデジタル署名生成装置の他の構成例を示した図。
【図12】図6のデジタル署名検証装置の他の構成例を示した図。
【図13】8の鍵生成装置の他の構成例を示した図。
【発明を実施するための最良の形態】
【0022】
以下、本発明の実施形態について図面を参照して説明する。
【0023】
まず、本実施形態の概要を説明する。
【0024】
(概要)
本実施形態では、3次元多様体は、体K上定義された連立(代数)方程式の解の集合のうち3次元の自由度を持ったものと定義される。例えば、体K上の連立方程式
【数1】
【0025】
は変数6つに対し、それらを束縛する3つの方程式があるので3次元の自由度を持っており、3次元多様体となる。特に4変数のK上代数方程式
【数2】
【0026】
の解の集合として定義される空間もK上の3次元多様体となる。尚、式(1)、式(2)に示した3次元多様体の定義式は、アフィン空間におけるものであって、射影空間におけるそれは(式(2)の場合)
【数3】
【0027】
である。本実施形態では、3次元多様体を射影空間で扱うことはないので3次元多様体の定義式を式(1)若しくは式(2)としたが、射影空間で表現しても、本実施形態はそのまま成立する。一方、代数曲面は体K上定義された連立(代数)方程式の解の集合のうち2次元の自由度を持ったものである。よって、例えば
【数4】
【0028】
と定義される。本実施形態においては式(2)のように1つの式で書ける3次元多様体のみを扱うので、以下では式(2)を3次元多様体の定義方程式のごとく扱う。
【0029】
体とは加減乗除が自由にできる集合であって、実数、有理数、複素数がこれにあたる。たとえば、整数や行列など0以外に除算ができない元を含む集合は該当しない。体の中には有限体と呼ばれる有限個の元から構成される体がある。例えば素数pに対し、pを法とする剰余類Z/pZは体をなす。このような体は素体と呼ばれ、Fpと表す。有限体にはこの他に素数の冪乗個の元を持つ体Fq(q=pr)があるが、本実施形態では簡単のため、主に素体Fpのみを扱う。一般に素体Fpのpは素体Fpの標数と呼ばれる。一方、一般の有限体でも、本実施形態は自明な変形を施すことによって同様に成立する。
【0030】
公開鍵暗号ではメッセージをデジタルデータとして埋め込む必要から有限体上で構成することが多く、本実施形態においても同様に有限体(本実施形態では特に素体)Fp上定義された3次元多様体を扱う。
【0031】
3次元多様体A:f(x,y,z,u)=0内には、図1に示すように、通常、代数曲面が複数存在する。このような代数曲面は3次元多様体上の因子と呼ばれる。一般に3次元多様体の定義式が与えられた時に(非自明な)因子を求める問題は現代の数学においても未解決の難問であり、後述する多次多変数方程式によって解く方法を除けば一般的な解法は知られていない。
【0032】
特に本実施形態で扱うような有限体で定義された3次元多様体においては有理数体などの無限体(無限個の元からなる体)で定義された3次元多様体と比較しても手掛かりが少なく、より難しい問題であることが知られている。更に、前記因子を求めるために出現する多次多変数方程式は、多次多変数暗号を解く場合に出現する多次多変数方程式と比べるとそのバラエティーが広く、多次多変数暗号に対して提案されている解法は一般には成立しない。
【0033】
本実施形態では、この問題を3次元多様体上の求因子問題もしくは単に求因子問題と呼び、前記3次元多様体上の求因子問題に安全性の根拠をおく公開鍵暗号を構成する。
【0034】
x座標、y座標、z座標及びパラメータuで表された3次元多様体Aの定義式f(x,y,z,u)=0 において、変数z、uをそれぞれパラメータs、tに変えて、
gs,t(x,y):=f(x,y,s,t)
とおく。これを体K上の2変数代数関数体K(s,t)の元を係数とする多項式とみなし、gs,t(x,y)=0 が、K(s,t)上の代数曲線を定義するとき、3次元多様体Aはs,tをパラメータとするアフィン平面P2上のファイブレーションを持つといい、(x,y,s,t)を(s,t)に対応させることによって得られる写像A→P2を、3次元多様体Aのアフィン平面P2上のファイブレーションと呼ぶ。
【0035】
そして、アフィン平面P2上の点(s,t)を1点(s0,t0)(s0,t0 は体Kの元)に固定したときに得られる曲線gs0,t0(x,y)=0 を点(s0,t0)上のファイバーと呼び、As0,t0 と表す。
【0036】
アフィン平面P2上のファイブレーションを持つ3次元多様体にはセクションと呼ばれ、
(x,y,s,t)=(ux(s,t),uy(s,t),s,t)
と表すことのできる、s,t でパラメタライズされた3次元多様体A上の代数曲面が存在することが多い。セクションを持たないファイブレーションも存在するが、セクションを持つようなf(x,y,z,u)は容易に構成できる。
【0037】
一方、上述のように、3次元多様体Aの定義式f(x,y,z,u)=0 を2変数代数関数体K(s,t)の上で考えるのではなく、例えば1変数代数関数体K(t)の上で考えることもできる。その場合は、
ht(x,y,s):=f(x,y,s,t)
とおくと、tの各値に対してht(x,y,s)=0 は、1変数代数関数体K(t)上の代数曲面を定義する。このとき、Aはtをパラメータとするアフィン直線P1 上のファイブレーションを持つといい、(x,y,s,t)を(t)に対応させることによって得られる写像A→P1 を3次元多様体Aのアフィン直線P1上のファイブレーションと呼ぶ。
【0038】
そして、アフィン直線P1 上の点tを1点t0に固定したときに得られる曲面
ht0(x,y,s)=0
を点t0 上のファイバーと呼び、At0 と表す。
【0039】
アフィン直線P1 上のファイブレーションを持つ3次元多様体におけるセクションとは、
(x,y,s,t)=(ux(t),uy(t),us(t),t)
と表すことができ、tでパラメタライズされた、3次元多様体A上の代数曲線のことである。
【0040】
セクションは、3次元多様体の因子である。一般に3次元多様体のファイブレーションが与えられたとき、それに対応するファイバーは(sやtに体の元を代入することにより)直ちに求まるが、対応するセクションを求めることは極めて難しい。
【0041】
本実施形態で述べるデジタル署名は、3次元多様体上の求因子問題のうち、特に3次元多様体Aのファイブレーションが与えられたとき、セクションを求める問題に安全性の根拠をおいたデジタル署名である。
【0042】
尚、本実施形態においては、主としてアフィン平面P2 上のファイブレーションを扱うので、簡単のためアフィン平面P2 上のファイブレーションであることが明らかな場合は、単にファイブレーションと呼ぶ。またこの場合、ファイブレーションを持つ3次元多様体の定義式f(x,y,s,t)=0を単にファイブレーションと呼ぶことがある。
【0043】
ファイブレーションからセクションを求めるには、現代の数学においても、セクション(ux(s,t),uy(s,t),s,t)を
【数5】
【0044】
(ここでdegsux(s,t)はux(s,t)において、sのみを変数としたときの次数である。)と仮定した上で、
【数6】
【0045】
とおき、これをA(x,y,s,t)=0に代入して、
【数7】
【0046】
とし、この左辺を展開してsitjの係数を
α0,…,αrsxrtx−1,β0,…,βrsyrty−1の関数
ci,j(α0,…,αrsxrtx−1,β0,…,βrsyrty−1)
で表現し、連立方程式系
【数8】
【0047】
を立てて、これを解くことによって求める方法しか知られていない。
【0048】
即ち、本発明の公開鍵暗号も従来技術で述べた多次多変数暗号と同様に連立方程式の求解問題に帰着すると言える。しかし、多次多変数暗号が(現代の数学ではかなり解明されている)有限体の拡大理論に依存した非常に限られた範囲の多次多変数方程式の求解問題に帰着しているのに対し、3次元多様体暗号は数学上の未解決問題である求因子問題に依存しているため、問題の困難さのレベルは大きく異なる。
【0049】
以下では3次元多様体上の求因子問題に基づいたデジタル署名の具体的な構成を説明する。尚、以下では全てFp上定義された3次元多様体を考える。このため、全ての演算はFp上で行う。
【0050】
(第1の実施形態)
本実施形態に係るデジタル署名で用いられる公開鍵は、
Fp上の3次元多様体Xのファイブレーション:A(x,y,s,t)=0である。
【0051】
秘密鍵は、Fp上の3次元多様体Aのn個のセクション
Di:(x,y,s,t)=(ux,i(s,t),uy,i(s,t),s,t)である。
【0052】
これらは後述する鍵生成方法で容易に求めることができる。
【0053】
(1)署名生成処理
次に、署名生成処理の概要を述べる。署名生成処理ではまず署名生成したいメッセージ(以下では平文と呼ぶ)を整数mに変換する。変換の方法はメッセージをJISコードなどのコード体系を利用してコード化し、それを整数に読み換える方法が一般的である。
【0054】
次に、変換された整数mをハッシュ関数h(x)にかけてハッシュ値h(m)を計算する。ここでハッシュ値h(m)は一般に120ビットないし160ビットあるので、例えば、h(m)=h0‖h1‖…‖hr−1
と、複数のブロックh0、h1、…hr−1に分割し、これらを変数tに関する1変数多項式
h(t)=hr−1tr−1+…+h1t+h0
の係数に埋め込む(ハッシュ値埋め込み処理)。ハッシュ値の埋め込まれた1変数多項式をハッシュ値多項式h(t)と呼ぶ。ここでh(t)をFp上の多項式とするために、
各hi(0≦i≦r−1)はFpの元となるように取る必要がある。即ち、上記ハッシュ値は、pのビット長に基づいて、
0≦hi≦p−1
となるようにハッシュ値を分割する。
【0055】
次に、秘密鍵であるn個のセクションDiのなかからランダムに1つ選択する。選択されたセクション
Di:(wx(s,t),wy(s,t),s,t)
に対して、その変数sに上記ハッシュ値多項式h(t)を代入する。即ち、
(wx(h(t),t),wy(h(t),t),h(t),t)
これを整理して、
Ds:(x,y,t)=(Wx(t),Wy(t),t) …(3)
とし、これをメッセージmに対するデジタル署名Dsとしてメッセージmと共に受信者に送信する。
【0056】
以上の説明からもわかるように、式(3)に示すデジタル署名Dsは、秘密鍵として用いたセクションDi上の曲線である。
【0057】
ここで、安全性の観点からWx(t)、Wy(t)の次数が選択したセクションによらず一定であることが望ましい。これはセクションに現れる多項式ux,i(s,t)に対して、
【数9】
【0058】
とするとき、全てのiに対してux,i(s,t)がshxtkx の項を含むようにすることで解決できる。なぜならば、このようにすることによって、ハッシュ値多項式h(t)をどのセクションのsに代入しても、得られる多項式Wx(t)の最大次数の項はh(t)をshxtkx の項に代入した多項式から生じるためである。
【0059】
uy,i(s,t)に関しても同様の手段でWy(t)の次数をiによらず一定に保つことができる。このような鍵(セクションとそれに対応する3次元多様体)を生成する方法は後に示す。
【0060】
(2)署名検証処理
デジタル署名Ds(x,y,t)を受け取った受信者は所有する有限体Fp上定義された公開鍵A(x,y,s,t)を利用して次のように署名検証処理を行う。
【0061】
まず、前述の署名生成処理と同様に、メッセージ(以下では平文と呼ぶ)を整数mに変換する。変換の方法は署名生成処理と同じである。次に変換された整数mを上述の署名生成処理と同じハッシュ関数h(x)にかけてハッシュ値h(m)を計算する。更に前述の署名生成処理と同様に、ハッシュ値を、h(m)=h0‖h1‖…‖hr−1
と、複数のブロックh0、h1、…hr−1に分割し、これらを変数tに関する有限体Fp上定義された1変数多項式
h(t)=hr−1tr−1+…+h1t+h0
の係数に埋め込み、ハッシュ値の埋め込まれたハッシュ値多項式h(t)を生成する。
【0062】
次に、公開鍵である3次元多様体A(x,y,s,t)の変数sに、生成したハッシュ値多項式h(t)を代入して、代数曲面
X(x,y,t)=A(x,y,h(t),t)
を生成する。このX(x,y,t)もファイブレーションを持つ代数曲面である。
【0063】
次に、得られた代数曲面Xに、(受信側が受け取った)式(3)で表現されたデジタル署名を代入する。このとき値が「0」になればデジタル署名が正しく、「0」でなければデジタル署名が正しくないことを意味する。
【0064】
なぜならば、前述のデジタル署名生成処理においては、秘密鍵として与えられたセクションのうちランダムに選択されたセクションDiに対して、s=h(t)を代入していた。一方、これは前述のデジタル署名検証処理で行った3次元多様体A(x,y,s,t)にs=h(t)を代入して得られた代数曲面X(x,y,t)のセクションに対応している。従って、前述のデジタル署名検証処理のような代入操作を行うと、値が「0」となる。
【0065】
更に、s=h(t)を代入して得られる代数曲面もそのセクションを求めることは3次元多様体と同様に難しく多次多変数方程式の求解問題に帰着することが知られている。このため、後述する安全性署名の項目でも詳しく述べるように、3次元多様体のセクションを知らない第三者がメッセージに対応した代数曲面のセクションを提示することは当該代数曲面のセクションを求める問題に帰着する。このため(計算量の観点で)不可能であるといえる。このことが本発明のデジタル署名が安全であることの根拠である。
【0066】
(3)鍵生成方法
鍵生成方法を説明する。本実施形態の鍵生成は、セクションD1、D2をランダムに選び、それに対応したファイブレーションを計算することによって行う。但し、生成された3次元多様体が2つのセクションを同時に持つようにするために以下のような工夫が必要となる。
【0067】
ここでは簡単のため3次元多様体のうち、次のファイブレーションを持つ3次元多様体を例にとって鍵生成方法を示す。
【数10】
【0068】
ここで、a(s,t),b(s,t)は2変数多項式である。まず、素体の標数pを決める。このときpは小さくても安全性に問題は生じない。さて、セクションD1,D2を
【数11】
【0069】
とおいて、3次元多様体Aに代入し、
【数12】
【0070】
を得る。これらを辺々引くとb(s,t)が消え、
【数13】
【0071】
となる。a(s,t)を2変数多項式とするには、たとえば
【数14】
【0072】
であれば十分である。このことを利用して以下に示すアルゴリズムで鍵生成を行うことができる。
【0073】
ここで、k1(s,t)|k2(s,t)は、多項式k1(s,t)が、
多項式k2(s,t)を割り切ることを意味している。
【0074】
まず、λx(s,t)|λy(s,t)となる2つの多項式をランダムに選択する。具体的にこのような多項式の組を求めるには、例えばλx(s,t)をランダムに与えて、同じくランダムな多項式c(s,t)によってλy(s,t)=c(s,t)λx(s,t)を計算することによって、λy(s,t)を求めることで実現できる。
【0075】
次に、多項式vx(s,t)をランダムに選択し、
【数15】
【0076】
によって、ux(s,t)を計算する。同様に多項式vy(s,t)をランダムに選択し、
【数16】
【0077】
によって、uy(s,t)を計算する。このようにして計算されたux(s,t)、vx(s,t)、uy(s,t)、vy(s,t)を利用して、
【数17】
【0078】
を計算することにより、多項式a(s,t)が計算できる。更にb(s,t)は、上述のa(s,t)を利用して、
【数18】
【0079】
によって得られる。
【0080】
前述の鍵生成方法は、上記以外の3次元多様体であっても、例えば
【数19】
【0081】
という形の定義式を仮定すれば同様に可能であり、上述の例のみに限定されない。
【0082】
一方で、上述の鍵生成方式では3つ以上のセクションを持つ代数曲面を生成することができない。また、上述の安全性上望ましい条件として挙げたデジタル署名
Ds:(x,y,t)=(Wx(t),Wy(t),t)
に表われるWx(t)、Wy(t)の次数を、選択したセクションによらず一定にするような公開鍵を生成することが困難である。これら両方を解決する鍵生成方法として、以下のような第2の鍵生成方法が考えられる。
【0083】
まず、ux,i(s,t)の最大次数の項shxtkxを決め、sの最大次数がhx、tの最大次数がkxとなるように、n個の2変数多項式ux,i(s,t)を定める。また同様にしてuy,i(s,t)の最大次数の項shytkyを決め、sの最大次数がhy、tの最大次数がkyとなるように、n個の2変数多項式uy,i(s,t)を定める。
【0084】
次に、これらの多項式から因子(x−ux,i(s,t))、(y−uy,i(s,t))を生成し、各i(1≦i≦n)について、iが同じ値の2つの因子(x−ux,i(s,t))及び(y−uy,i(s,t))を、左辺と右辺のそれぞれに振り分ける。そして、左辺に振り分けられたn個の因子の積と、右辺に振り分けられたn個の因子の積とを等号で結ぶことにより、次式(6)に示すような方程式を得る。
【数20】
【0085】
式(6)は、前記条件を満たす方程式となる。ここで、例えば、
Di:(ux,i(s,t),uy,i(s,t),s,t)がセクションとなる。
【0086】
更に、これらのセクションは、その作り方からh(t)を代入しても、同じ次数のデジタル署名Ds:(Wx(t),Wy(t),t)が生成される。実際には式(6)のままであるとセクションがすぐ分かってしまうので、展開することによって公開鍵である3次元多様体を得る。
【0087】
一方で、式(6)ではxの因子が右辺に、yの因子が左辺に分かれているため因数分解によってセクションを求めることが容易となる場合がある。そこで、例えば
【数21】
【0088】
などのように、xの因子とyの因子をランダムに両辺に分けて公開鍵暗号である3次元多様体を生成することが望ましい。このように公開鍵と秘密鍵を生成することによって一般にn個以上のセクションを持つ安全性の高い3次元多様体を生成することができる。尚、前記安全性の観点を除けば、ux,i(s,t),uy,i(s,t)の作り方に自由度を持たせることができる。
【0089】
(4)安全性の証明
上述のデジタル署名の安全性証明に関して説明する。デジタル署名の安全性は、メッセージ(平文)とデジタル署名のペアを作成する問題が多項式時間で解ければ3次元多様体のセクションを求める問題を多項式時間で求めることができ、逆に3次元多様体のセクションを求める問題を多項式時間で求めることができれば、メッセージ(平文)とデジタル署名のペアを作成することが多項式時間で可能なことを証明することによって証明することができる。即ち、上記の事実を理論的に証明することによって、メッセージ(平文)とデジタル署名のペアを作成可能なこと(存在的偽造可能であること)と、3次元多様体のセクションを求める問題が解けることが同値であることが示せるので、安全性の根拠としている3次元多様体のセクションを求める問題が困難であれば、デジタル署名が存在的偽造不可能であることが示されるからである。以上の方針に従った安全性証明を次に示す。
【0090】
ここで、2次元セクションDをD=(dx(s,t),dy(s,t),s,t)と書いたとき、2次元セクションの次数を、dx(s,t),dy(s,t)の次数の最大値、
max{deg(dx(s,t)),deg(dy(s,t))}とする。
【0091】
[定理1]n次のセクションを持つ有限体Fp上定義された3次元多様体の求セクション問題が計算困難であることと、本発明のデジタル署名は存在的偽造不可能の意味で安全であることは同値である。
【0092】
[証明1]本実施形態のデジタル署名による平文と署名の具体的なペアを多項式時間内に計算できるアルゴリズムαが存在したとする。このとき、このアルゴリズムαを利用して3次元多様体の2次元セクションを求める多項式時間アルゴリズムが存在することを示す。
【0093】
まず、2次元セクションを求めたい3次元多様体をA(x,y,s,t)とする。次にA(x,y,s,t)を公開鍵とするデジタル署名方式を考え、アルゴリズムαを利用して多項式個の平文と署名のペアを生成する。ここで、平文miに対するハッシュ値多項式をhi(t)とし、その署名を
【数22】
【0094】
とする。ここで、fi(s,t),gi(s,t)は3次元多様体Aのセクションのx,y座標に対応するもので、高々有限個しか存在しない。従って、一定数以上の署名を集めれば、fi(s,t),gi(s,t)は全て異なるものではなく、その幾つかは同一となる。これらのうちどれが同じものであるかは以下の方法で判定できる。
【0095】
3次元多様体B(x,y,s,t)(=A(x,y,t,s))を考える。このB(x,y,s,t)は3次元多様体A(x,y,s,t)のsとtを交換したものであり、セクションの次数の定義からn次のセクションを持っている。そこで、アルゴリズムαを利用して、1つの平文と署名のペアを生成する。その際、特にハッシュ値多項式hi(s)が定数hi(s)=h0となるものを選び、生成された署名を
【数23】
【0096】
とすると、
【数24】
【0097】
は、sでパラメタライズされたA(x,y,s,t)の1つの1次元サイクルを与える。ここでサイクルとは部分多様体のことを意味し、特に1次元サイクルとは1次元の部分多様体である。このサイクルDを利用して、1次元サイクル
【数25】
【0098】
のうち、Dと同じXのセクションの上に存在するものを以下の多項式アルゴリズムで見出す。
【0099】
まず、(s,t)=(hi(h0),h0)とおくと、D上の点(ζ(hi(h0),h0),η(hi(h0),h0),hi(h0),h0)とDs(i)上の点(fi(hi(h0),h0),gi(hi(h0),h0),hi(h0),h0)が定まる。そして、Xのセクションが(s,t)を座標とする平面に同型であることに注意すると、
【数26】
【0100】
であればDs(i)とDは同一のセクションの上に存在する。等しくなければDs(i)とDとは同一のセクションの上にはない。ここで同じセクションに含まれる1次元サイクル群を、
【数27】
【0101】
とする。さて、ここで3次元多様体A(x,y,s,t)のセクション(wx(s,t),wy(s,t),s,t)を
【数28】
【0102】
と書くと、式(8)の1次元セクションを代入することによって、
【数29】
【0103】
を得る。この両辺をtの冪毎にその係数を比較することによって、aijの連立1次方程式が得られる。連立1次方程式は多項式時間の解法が存在するので、多項式時間で全ての
aijが求まる。同様にbijも多項式時間で求まるので、3次元多様体A(x,y,s,t)のセクションが多項式時間で求まることが示せた。
【0104】
逆に、3次元多様体の2次元セクションを求める多項式時間アルゴリズムβが存在したとする。このとき、このアルゴリズムβを利用して、本実施形態のデジタル署名による平文と署名の具体的なペアを多項式時間内に計算できることを示す。
【0105】
本実施形態のデジタル署名の公開鍵である3次元多様体A(x,y,s,t)が与えられたとき、アルゴリズムβを利用して、その2次元セクション
D:(wx(s,t),wy(s,t),s,t)
を求める。ここで平文mを適当に決め、そのハッシュ値多項式をh(t)とした時、
s=h(t)と置くことにより、署名
Ds:(wx(h(t),t),wy(h(t),t),t)
を得る。これにより平文と署名の具体的なペアを多項式時間内に計算可能である。
【0106】
以上により、定理が証明された。
【0107】
(5)バリエーション
本実施形態におけるバリエーションを述べる。第1のバリエーションはハッシュ値多項式をハッシュ値自体に置き換えるバリエーションである。本実施形態におけるデジタル署名生成処理においては、平文mからハッシュ値h(m)を計算し、ハッシュ値h(m)をハッシュ値多項式h(t)に展開して、ランダムに選択したセクションDiにs=h(t)と代入していた。
【0108】
しかし、ハッシュ値をハッシュ値多項式に埋め込まないような実施形態も成立する。即ち、セクションDiに、ハッシュ値h(m)そのものを、s=h(m)として代入することにより、デジタル署名
Ds:(wx(h(m),t),wy(h(m),t),t)
が生成できる。この場合は、デジタル署名検証処理においても同様に公開鍵である3次元多様体A(x,y,s,t)への代入をs=h(m)によって行うことにより、同様の手段で署名検証が可能となる。
【0109】
実際に、このバリエーションが成り立つことは、本実施形態におけるハッシュ値多項式h(t)を定数項だけからなる多項式と考えれば理解することができる。即ち、本バリエーションは本実施形態の特別な場合と言うことができる。本バリエーションを利用することによってデジタル署名生成処理、デジタル署名検証処理における多項式演算を軽減でき、計算メモリ量や計算処理時間を削減することが可能となる。しかし、その反面でハッシュ値は最小でも120ビットであるため定義体であるFpのpのサイズを120ビット程度に大きくしなければならず、多倍長演算が必要となるという弱点も持ち合わせており、
適用有効範囲は限定される。
【0110】
第2のバリエーションは、本実施形態のデジタル署名生成装置、デジタル署名検証装置においてハッシュ値多項式を代入する変数の変更に関するバリエーションである。本実施形態のデジタル署名生成装置、デジタル署名検証装置においては、ハッシュ値多項式としてh(t)という変数tによる1変数多項式を取り、秘密鍵であるセクション若しくは公開鍵である3次元多様体の変数sに代入していたが、これを以下のように変更しても本発明は安全性も含めて同様に成立する。
【0111】
即ちハッシュ値多項式として、h(s)という変数sによる1変数多項式を取り、秘密鍵であるセクション若しくは公開鍵である3次元多様体の変数tに代入する。変数s,tは共にパラメータなので本バリエーションによってその効果は変わらない。
【0112】
(6)構成
次に、本実施形態のデジタル署名方式に係る鍵生成装置、デジタル署名生成装置、デジタル署名検証装置の構成例と、これらの処理動作について説明する。
【0113】
図2は、鍵生成装置の構成例を示したもので、図3は、図2の鍵生成装置の処理動作を説明するためのフローチャートである。以下、図3に示すフローチャートを参照して、図2の鍵生成装置の構成及び処理動作について説明する。尚、理解の助けとして具体的な数値や式を示すが、これはあくまでも理解を助けるための例であって、実際に使われる十分な安全性を持つデジタル署名とは(特に多項式の次数などの点で)必ずしも一致していない。
【0114】
なお、ここでは、前述した、y2=x3+a(s,t)x+b(s,t)というファイブレーションをもつ3次元多様体を例にとり説明する。
【0115】
鍵生成処理開始の指令が外部装置等から制御部1に伝えら、鍵生成装置は鍵生成処理を開始する(ステップS1)。当該指令が制御部1に伝わると、制御部1は、素数生成部2に素数の生成を要請する。素数生成はランダムに素数を発生させても良いが、ここでは大きな素数を使う必要はないので、高々6ビット程度の素数からランダム若しくは(出力順を予め決めておくなどの手段で)恣意的に選択するか、当該鍵生成装置で予め定まっている素数を利用してもよい。ここでは素数p=17が生成されたとする(ステップS2)。
【0116】
制御部1は、セクション生成部5に、素数pを出力し、セクション生成部5では、セクションの生成を開始する。セクション生成部5は、まず、素数pを2変数多項式生成部3に出力し、2変数多項式生成部3は、2変数多項式λx(s,t)(=−s(t−1))を生成する(ステップS3)。2変数多項式生成部3では、予め定められた一定範囲内で次数をランダムに選択し、その次数を持つ2変数多項式の係数を有限体Fpの元として0からp−1までの範囲でそれぞれ生成する。
【0117】
2変数多項式生成部3は、λx(s,t)を生成すると、これを制御部1へ出力する。制御部1は、λx(s,t)を得ると、上記同様に、ランダムな2変数多項式c(s,t)の生成処理を行い、c(s,t)(=s+t)を得る(ステップS4)。
【0118】
制御部1は、c(s,t)とλx(s,t)を2変数多項式演算部4に出力する。
【0119】
2変数多項式演算部4では、λy(s,t)=c(s,t)λx(s,t)を計算し(ステップS5)、制御部1へλy(s,t)(=−(s+t)s(t−1))を出力する。
【0120】
λy(s,t)を受け取った制御部1では、次にλx(s,t)の生成と同様の方法で2変数多項式vx(s,t)(=2st)をランダムに生成し(ステップS6)、λx(s,t)(=−s(t−1))とvx(s,t)(=2st)を2変数多項式演算部4へ出力する。
【0121】
2変数多項式演算部4は、ux(s,t)(=λx(s,t)+vx(s,t)=s(t+1))を計算し、これを制御部1へ出力する(ステップS7)。
【0122】
制御部1は、ステップS6と同様に、vy(s,t)(=2st2+s+s2t−s2−st)を生成し(ステップS8)、さらに、
uy(=λy(s,t)+vy(s,t)=s(t2+1))を計算する(ステップS9)。
【0123】
制御部1は、ux(s,t)、uy(s、t)、vx(s,t)、vy(s,t)を3次元多様体生成部6に出力する。
【0124】
3次元多様体生成部6は、2変数多項式演算部4を繰り返し使うことにより、式(4)に用いて、3次元多様体A(x,y,s,t):y2=x3+a(s,t)x+b(s,t)のパラメータs、tに関する2変数多項式a(s,t)を計算する(ステップS10)。
【0125】
この例では
【数30】
【0126】
と求まる。さらに、式(5)を用いて、a(s、t)とux(s,t)、uy(s,t)、vx(s,t)、vy(s,t)から、2変数多項式演算部4を繰り返し使うことにより、パラメータs、tに関する2変数多項式b(s,t)を計算する(ステップS11)。
【0127】
この例では、
【数31】
【0128】
を得る。
【0129】
3次元多様体生成部6は、得られたa(s,t)、b(s,t)を制御部1に出力する。
【0130】
制御部1は、3次元多様体A(x,y,s,t)を表す多項式:y2=x3+a(s,t)x+b(s,t)に、ステップS10及びステップS11で得られたa(s,t)とb(s,t)を代入することで、次式(9)に示すような、公開鍵である3次元多様体AのファイブレーションA(x,y,s,t)の多項式を生成する。
【0131】
また、次式(10)に示すように、2変数多項式ux(s,t)をx座標、2変数多項式uy(s,t)をy座標とするセクションD1:(x,y,s,t)と、2変数多項式vx(s,t)をx座標、2変数多項式vy(s,t)をy座標とするセクションD2:(x,y,s,t)を生成する(ステップS12)。
【数32】
【0132】
制御部1は、生成された公開鍵と秘密鍵を鍵出力部7に出力し、鍵出力部7は、公開鍵と秘密鍵を出力する。
【0133】
なお、図2に示す各機能(制御部1、素数生成部2、2変数多項式3、2変数多項式演算部4、セクション生成部5、3次元多様体生成部6、鍵出力部7など)は、図10に示すように、各種プログラムなどを記憶する記憶部101、CPUなどの演算部100、出力部102、入力部103、通信部104などをバスに接続してなるコンピュータに、記憶部101に記憶されている各プログラムを実行させることにより、実現することができる。
【0134】
図10では、記憶部101には、制御部1、素数生成部2、2変数多項式生成部3、2変数多項式演算部4、セクション生成部5、3次元多様体生成部6、鍵出力部7のそれぞれの機能を実現すための鍵生成制御プログラム、素数生成プログラム、2変数多項式生成プログラム、2変数多項式演算プログラム、セクション生成プログラム、3次元多様体生成プログラム、鍵出力プログラムが記憶されている。
【0135】
図2の鍵出力部7から出力された秘密鍵や公開鍵は、例えば、通信部104を介して要求元へ送信されたり、後述するデジタル署名生成装置やデジタル署名検証装置へ渡される。
【0136】
図4は、デジタル署名生成装置の構成例を示したもので、図5は、図4のデジタル署名生成装置の処理動作を説明するためのフローチャートである。以下、図5に示すフローチャートを参照して、図4のデジタル署名生成装置の構成及び処理動作について説明する。
【0137】
図4のデジタル署名生成装置は、平文入力部11から平文mを取得し、秘密鍵入力部14から秘密鍵であるセクション群Di(ux(s,t),uy(s,y),s,t)(0≦i≦n)を取得する。
【0138】
ここで、秘密鍵を前述の鍵生成処理で生成された
1.素体の標数p=17
2.式(10)に示した有限体Fp上定義された3次元多様体Aの2つのセクションを利用する。尚、全ての演算は鍵生成処理で決定した有限体F17で行う。
【0139】
まず、平文入力部11から平文mが入力されることによって、デジタル署名生成処理が開始される(ステップS101)。入力された平文mは、ハッシュ値計算部12に出力され、SHA1やMD5などのハッシュ関数を利用してハッシュ値h(m)が計算される。ここでは、簡単のため、ハッシュ値を「0x151」とするが、本来は120ビット以上である必要がある。計算されたハッシュ値は、ハッシュ値多項式生成部13に送られ、予め定められた複数のブロックに分割される。ここでは、p=17であることから4ビット毎に分割し、各ブロックをハッシュ値多項式h(t)の係数に埋め込む(ステップS103)。その結果得られるハッシュ値多項式h(t)は h(t)=t2+5t+1 となる。
【0140】
秘密鍵記憶部18には、図2や後述の図8に示した構成の鍵生成装置で生成された秘密鍵である少なくとも1つのセクションを記憶する。
【0141】
秘密鍵入力部14は、秘密鍵記憶部18から秘密鍵であるセクション群を読み出して、署名生成部15へ出力する(ステップS104)。秘密鍵記憶部18には、複数のセクションが記憶されていることが望ましい。ここでは、式(10)に示した2つのセクションD1、D2が秘密鍵記憶部18に記憶されており、秘密鍵入力部14は、この2つのセクションD1、D2を秘密鍵記憶部18から読み出し、署名生成部15へ出力する。これらセクション群は、署名生成部15から、セクション選択部16に出力される。セクション選択部16は、入力されたセクション群のうちから1つのセクションをランダムに選択する(ステップS105)。ここではD1が選択されたとする。選択されたセクションD1は、署名生成部15に出力される。なお、秘密鍵記憶部18に秘密鍵が1つのみ記憶されている場合には、セクション選択部16の上記処理は省略される。
【0142】
選択されたセクションD1を受信した署名生成部15は、ハッシュ値多項式生成部13から、ステップS103で生成されたハッシュ値多項式h(t)を取得して、選択されたセクションD1のs座標にh(t)を代入して(s=h(t))、セクションDsを生成する(ステップS106)。
【0143】
ここでは、次式(11)に示すようなセクションDsが生成される。
【数33】
【0144】
このセクションDsは、デジタル署名として署名出力部17から出力される(ステップS107)。
【0145】
前述の第1、第2のバリエーションは本実施形態において同様の処理で成立する。尚、第1のバリエーションを利用する場合は現状では(ハッシュ値の大きさを考慮して)pを120ビット以上とする必要がある。
【0146】
なお、図4に示す各機能(平文入力部11、ハッシュ値計算部12、ハッシュ値多項式生成部13,秘密鍵入力部14、署名生成部15、セクション選択部16,署名出力部17など)は、図11に示すように、各種プログラムなどを記憶する記憶部101、CPUなどの演算部100、出力部102、入力部103、通信部104などをバスに接続してなるコンピュータに、記憶部101に記憶されている各プログラムを実行させることにより、実現することができる。
【0147】
図11では、記憶部101には、平文入力部11、ハッシュ値計算部12、ハッシュ値多項式生成部13,秘密鍵入力部14、署名生成部15、セクション選択部16,署名出力部17のそれぞれの機能を実現すための平文入力プログラム、ハッシュ値計算プログラム、ハッシュ値多項式生成プログラム、秘密鍵入力プログラム、署名生成プログラム、セクション選択プログラム,署名出力プログラムが記憶されている。また、記憶部101は、秘密鍵を記憶する秘密鍵記憶部18としても機能する。
【0148】
平文入力部11で入力されたメッセージmと、署名出力部17で出力されたデジタル署名は、例えば、通信部104を介して相手端末へ送信される。
【0149】
図6は、デジタル署名検証装置の構成例を示したもので、図7は、図6のデジタル署名検証装置の処理動作を説明するためのフローチャートである。以下、図7に示すフローチャートを参照して、図6のデジタル署名検証装置の構成及び処理動作について説明する。
【0150】
図6のデジタル署名生成装置は、平文入力部21から平文mを取得し、公開鍵入力部24から公開鍵である有限体Fp上定義された3次元多様体A(x,y,s,t)を取得する。
【0151】
まず、平文入力部21から平文mが入力されることよって、デジタル署名検証処理が開始される(ステップS201)。
【0152】
入力された平文mは、ハッシュ値計算部22に出力され、署名生成装置で用いられたものと同じハッシュ関数を利用してハッシュ値が計算される(ステップS202)。ここでは、ハッシュ値は署名生成装置で出力したハッシュ値と同じ「0x151」となる。このハッシュ値は、ハッシュ値多項式生成部23に出力される。
【0153】
ハッシュ値多項式生成部23では、デジタル署名検証装置と同じアルゴリズムで、ハッシュ値多項式h(t)を計算する(ステップS203)。従って、ここで得られる、ハッシュ値多項式h(t)は、h(t)=t2+5t+1 となる。
【0154】
得られたハッシュ値多項式h(t)は、署名検証部26へ出力される。
【0155】
公開鍵記憶部29は、図2や後述の図8に示した構成の鍵生成装置で生成された公開鍵である有限体Fp上定義された3次元多様体A(x,y,s,t)の多項式を記憶する。
【0156】
公開鍵入力部24は、公開鍵記憶部29から公開鍵である3次元多様体の多項式を読み出して、署名生成部15へ出力する(ステップS204)。ここでは、式(9)に示した3次元多様体、すなわち、公開鍵が署名検証部26へ入力される。署名検証部26は、入力された公開鍵を代数曲面生成部27に出力する。
【0157】
署名検証部26は、ステップS203で生成されたハッシュ値多項式h(t)を代数曲面生成部27へ出力する。
【0158】
代数曲面生成部27は、3次元多様体の変数sに、署名検証部26から出力されたハッシュ値多項式h(t)を代入して、代数曲面X(x,y,t)を生成する(ステップS205)。ここでは、次式(12)に示すような代数曲面X(x,y,t)が得られる。
【数34】
【0159】
次に、署名入力部25に入力された式(11)に示した署名Ds:(Ux(t),Uy(t),t)を署名検証部26が読み込む(ステップS206)。この署名Dsのx座標Ux(t)=t3+6t2+6t+1、y座標Uy(t)=t4+5t3+2t2+5t+1を、それぞれ、式(12)に示した代数曲面Xのx,y座標に代入して、展開・整理する(ステップS207)。前述の通り、デジタル署名Dsは代数曲面Xの因子となっているため、代入して整理すれば「0」となるはずである。従って、「0」となれば(ステップS208)、判定結果出力部28に、「署名検証成功」を出力する(ステップS209)。「0」とならなければ、デジタル署名が間違っていたことを意味するので(ステップS208)、判定結果出力部28に、「署名検証失敗」を出力する(ステップS210)。
【0160】
判定結果出力部28は、判定結果を外部へ出力して、全ての処理を終了する。
【0161】
ここで示した例では、正当なデジタル署名なので、ステップS207で、代数曲面Xにデジタル署名Ds代入して整理した結果は、確かに「0」となり、署名検証部26は、判定結果出力部28に「署名検証成功」を出力し、判定結果出力部28はそれを外部に出力して終了する。
【0162】
第1、第2のバリエーションは本実施形態において同様の処理で成立する。
【0163】
なお、図6に示す各機能(平文入力部21、ハッシュ値計算部22、ハッシュ値多項式生成部23,公開鍵入力部24、署名入力部25、署名検証部26、代数曲面生成部27、判定結果出力部28など)は、図12に示すように、各種プログラムなどを記憶する記憶部101、CPUなどの演算部100、出力部102、入力部103、通信部104などをバスに接続してなるコンピュータに、記憶部101に記憶されている各プログラムを実行させることにより、実現することができる。
【0164】
図12では、記憶部101には、平文入力部21、ハッシュ値計算部22、ハッシュ値多項式生成部23,公開鍵入力部24、署名入力部25、署名検証部26、代数曲面生成部27、判定結果出力部28のそれぞれの機能を実現すための平文入力プログラム、ハッシュ値計算プログラム、ハッシュ値多項式生成プログラム、公開鍵入力プログラム、署名入力プログラム、署名検証プログラム、代数曲面生成プログラム、判定結果出力プログラムが記憶されている。また、記憶部101は、公開鍵を記憶する公開鍵記憶部29として機能する。
【0165】
署名入力部25には、デジタル署名生成装置で生成されたメッセージmに対応するデジタル署名が入力される。
【0166】
次に、第2の鍵生成方法について説明する。図8は第2の鍵生成方法を用いた鍵生成装置の構成例を示したもので、図9は、図8の鍵生成装置の処理動作を説明するためのフローチャートである。以下、図9に示すフローチャートを参照して、図8の鍵生成装置の構成及び処理動作について説明する。
【0167】
鍵生成処理開始の指令が外部装置等から制御部1に伝えられ、鍵生成装置は鍵生成処理を開始する(ステップS301)。当該指令が制御部1に伝わると、制御部1は、素数生成部2に素数の生成を要請する。素数生成はランダムに素数を発生させても良いが、ここでは大きな素数を使う必要はないので、高々6ビット程度の素数からランダム若しくは(出力順を予め決めておくなどの手段で)恣意的に選択するか、当該鍵生成装置で予め定まっている素数を利用してもよい。ここでは素数p=17が生成されたとする(ステップS302)。
【0168】
制御部1は、セクション生成部5に、素数pを送信し、セクション生成部5では、セクションの生成を開始する。セクション生成部5では、n個のセクション
Di:(x,y,s,t)=(ux,i(s,t),uy,i(s,t),s,t)
(1≦i≦n)
のx座標ux,i(s,t)、y座標uy,i(s,t)を以下に示す方法で決定する。
【0169】
まず、x座標のsに関する次元の最大値hx、tに関する次元の最大値kxを定める(ステップS303)。即ち、
【数35】
【0170】
ここでは、簡単のため、hx=kx=2とする。
【0171】
次に、shxtkxの項を含み、この次数の範囲内のセクションDiのx座標ux,i(s,t)の生成を2変数多項式生成部3に要求する。ここでは、n=3であるので、2変数多項式生成部3は、ux,1(s、t)、ux,2(s、t)、ux,3(s、t)を、ランダムに順次決定する(ステップS304)。すなわち、
【数36】
【0172】
が得られる。
【0173】
次に、ステップS303と同様に、y座標のsに関する次元の最大値hy、tに関する次元の最大値kyを定める(ステップS305)。即ち、
【数37】
【0174】
ここでは、簡単のためhy=ky=2とする。
【0175】
次に、shytkyの項を含み、この次数の範囲内のセクションDiのy座標uy,i(s,t)の生成を2変数多項式生成部3に要求する。ここでは、n=3であるので、2変数多項式生成部3は、uy,1(s、t)、uy,2(s、t)、uy,3(s、t)を、ランダムに順次決定する(ステップS306)。すなわち、
【数38】
【0176】
が得られる。
【0177】
以上で、セクションDiが生成された。
【0178】
これらセクションは制御部1に出力される。制御部1では、3次元多様体生成部6に、これらセクションを出力して、3次元多様体を生成させる。
【0179】
3次元多様体生成部6では、入力されたux,i(s,t)、uy,i(s,t)をそれぞれ、
x因子(x−ux,i(s,t))、y因子(y−uy,i(s,t))と因子化する(ステップS307)。
【0180】
そして、iが同じ値の因子x(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を、左辺と右辺にランダムに振り分ける。そして、左辺に振り分けられたn個の因子の積と、右辺に振り分けられたn個の因子の積とを等号で結ぶことにより、次式(13)に示すような4変数(x、y、s、t)多項式を生成する。
【数39】
【0181】
3次元多様体生成部6は、制御部1を介して、(もしくは直接)4変数多項式演算部8へ、上式(13)の展開を依頼する。
【0182】
4変数多項式演算部8は、上式(13)を展開して、当該4変数多項式に含まれる各項を、左辺と右辺のいずれか一方にまとめて、次式(14)に示すような、3次元多様体A(x,y,s,t)を得る(ステップS308)。
【数40】
【0183】
4変数多項式演算部8は、得られた3次元多様体A(x,y,s,t)を制御部1へ出力する。制御部1では3つのセクションと3次元多様体A(x,y,s,t)を鍵として鍵出力部7へ出力し、鍵出力部7では、これらの鍵を出力する。
【0184】
なお、図8に示す各機能(制御部1、素数生成部2、2変数多項式生成部3、4変数多項式演算部8、セクション生成部5、3次元多様体生成部6、鍵出力部7など)は、図13に示すように、各種プログラムなどを記憶する記憶部101、CPUなどの演算部100、出力部102、入力部103、通信部104などをバスに接続してなるコンピュータに、記憶部101に記憶されている各プログラムを実行させることにより、実現することができる。
【0185】
図13では、記憶部101には、制御部1、素数生成部2、2変数多項式生成部3、4変数多項式演算部8、セクション生成部5、3次元多様体生成部6、鍵出力部7のそれぞれの機能を実現すための鍵生成制御プログラム、素数生成プログラム、2変数多項式生成プログラム、4変数多項式演算プログラム、セクション生成プログラム、3次元多様体生成プログラム、鍵出力プログラムが記憶されている。
【0186】
図8の鍵出力部7から出力された秘密鍵や公開鍵は、例えば、通信部104を介して要求元へ送信されたり、後述するデジタル署名生成装置やデジタル署名検証装置へ渡される。
【0187】
図8の示す鍵生成装置の2変数多項式生成部3は、安全性を高めるため、セクションのx座標やy座標に対応する2変数多項式を生成する際、変数s、tについての字数の最大値(x座標の変数sの最大次数hx、x座標の変数tの最大次数kx、y座標の変数sの最大次数hy、y座標の変数tの最大多項数ky)をそれぞれ定め、x座標については、shxtkxの項を必ず含む2変数多項式を生成、y座標については、shytkyの項を必ず含む2変数多項式を生成している。
【0188】
しかし、この場合に限らず、次数が最大値hx以下の変数sと、次数が最大値kx以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式とを含む2変数多項式ux,i(s,t)(i:1≦i≦n)や、次数が最大値hy以下の変数sと、次数が最大値ky以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式とを含む2変数多項式uy,i(s,t)(i:1≦i≦n)を生成すれば、n個のセクションを持つ3次元多様体を生成することができる。
【0189】
以上説明したように、上記実施形態によれば、メッセージ送信側のデジタル署名生成装置は有限体Fpならびに、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fp上定義された3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションD(ux(s,t),uy(s,y),s,t)を、署名生成用の秘密鍵として記憶手段に記憶する。CPU等の演算手段は、メッセージmのハッシュ値を計算し、このハッシュ値を前記有限体Fp上定義された1変数多項式h(t)の係数に埋め込み、ハッシュ値多項式を生成する。そして、演算手段は、記憶手段からセクションを1つ読み出して、それを署名生成用の秘密鍵として用いて、デジタル署名を生成する。すなわち、セクションのs座標に上記ハッシュ値多項式を代入することで、x座標及びy座標がパラメータtの関数で表された前記セクション上の曲線であるデジタル署名Ds(Ux(t),Uy(t),t)を生成する。このようにして生成されたデジタル署名は、上記メッセージmとともに、メッセージ送信側の送信手段により、メッセージ受信側へ送信される。
【0190】
記憶手段は、異なる複数のセクションDi(ux,i(s,t),uy,i(s,t),s,t)(iは、0≦i≦nの任意の正の整数)を記憶し、デジタル署名を生成する度に、この記憶手段に記憶された複数のセクションDiのうちの任意の1つのセクションを選択して、デジタル署名を生成することにより、より安全性が高まる。
【0191】
また、メッセージ受信側のデジタル署名検証装置は、記憶手段に、有限体Fpならびに公開鍵として、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fp上定義された3次元多様体A(x,y,s,t)の多項式を記憶する。メッセージmと当該メッセージmに対応するデジタル署名Ds:(Ux(t),Uy(t),t)とが入力されると、CPU等の演算手段が、メッセージmのハッシュ値を計算し、このハッシュ値を前記有限体Fp上定義された1変数多項式h(t)に埋め込み、ハッシュ値多項式を生成する。そして、演算手段は、記憶手段から上記メッセージ送信側に対応する公開鍵である3次元多様体A(x,y,s,t)の多項式のs座標に、当該ハッシュ値多項式を代入して、ハッシュ値に対応した代数曲面X(x,y,t)を計算する。さらに、演算手段は、代数曲面X(x,y,t)に、上記デジタル署名を代入して、メッセージ及びデジタル署名の正当性を検証する。すなわち、代数曲面X(x,y,t)のx座標に、デジタル署名のx座標(変数tの多項式で表された)Ux(t)を代入し、代数曲面X(x,y,t)のy座標に、デジタル署名のy座標(変数tの多項式で表された)Uy(t)を代入した後、式を展開し(多項式の積を単項式の和の形で表す)、整理する。この結果(代数曲面X(x,y,t)にデジタル署名のx座標およびy座標を代入した結果)が「0」であるとき、メッセージmが改竄されていないこと、及び、メッセージmが、上記公開鍵に対応する正当なメッセージ送信者から送信されたことが検証されたことになる(署名検証成功)。
【0192】
鍵生成装置では、CPU等の演算手段が、前記有限体Fp上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)と、この第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fp上定義された第2の2変数多項式λy(s,t)を生成し、次に、前記有限体Fp上定義された、変数xがパラメータs,tで表される2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}がλx(s,t)となるように生成し、さらに、前記有限体Fp上定義された、変数yがパラメータs,tで表される2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}がλy(s,t)となるように生成する。そして、演算手段は、2変数多項式ux(s,t)をx座標、2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、2変数多項式vx(s,t)をx座標、2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成する。これら2つのセクションD1、D2が秘密鍵である。また、この2つのセクションD1,D2を持つ3次元多様体A(x,y,s,t)を生成する。この3次元多様体Aが、公開鍵である。
【0193】
他の鍵生成装置では、CPU等の演算手段が、パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fp上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fp上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する。演算手段は、生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求める。このn個のセクションが秘密鍵である。さらに、演算手段は、生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める。演算手段は、生成された第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成すると、この生成された等式を展開することにより、公開鍵である、3次元多様体A(x,y,s,t)の多項式を生成する。
【0194】
このように、上記実施形態にかかる公開鍵暗号に基づくデジタル署名システムは、頑健(robust)で、安全性・信頼性の高いデジタル署名を生成することができ、しかも少ない計算量で実現可能である。
【符号の説明】
【0195】
1…制御部、2…素数生成部、3…2変数多項式生成部、4…2変数多項式演算部、5…セクション生成部、6…3次元多様体生成部、7…鍵出力部、11…平文入力部、12…ハッシュ値計算部、13…ハッシュ値多項式生成部、14…秘密鍵入力部、15…署名生成部、16…セクション選択部、17…署名出力部、21…平文入力部、22…ハッシュ値計算部、23…ハッシュ値多項式生成部、24…公開鍵入力部、25…署名入力部、26…署名検証部、27…代数曲面生成部、28…判定結果出力部、8…4変数多項式演算部。
【技術分野】
【0001】
本発明は、公開鍵暗号方式を利用したデジタル署名生成装置、デジタル署名検証装置、鍵生成装置に関する。
【背景技術】
【0002】
電子メールを始めとする多くの情報がネットワークを行き交うことにより、人々がコミュニケーションを行なうネットワーク社会において、暗号技術は情報の機密性や真正性を守る手段として広く活用されている。
【0003】
暗号技術は大きく共通鍵暗号技術と公開鍵暗号技術に分けることができ、共通鍵暗号はデータの攪拌アルゴリズムに基づいた暗号方式で、高速に暗号化/復号ができる一方で、予め共通の鍵を持った2者間でしか秘密通信や認証通信ができない。公開鍵暗号は数学的なアルゴリズムに基づいた暗号方式で、共通鍵暗号ほど暗号化/復号が高速でないが、事前の鍵共有を必要とせず、通信の際は送信相手が公開している公開鍵を利用して秘密通信を実現し、送信者の秘密鍵を利用してデジタル署名を施すことで(成りすましを防ぐ)認証通信が可能となるという特徴がある。
【0004】
このため、共通鍵暗号に基づくデジタル署名は秘密鍵を共有できる環境にある相手間や機器間で、高速性が求められている場合か、署名生成装置か署名検証装置のどちらか一方の能力が低い場合の認証手段として用いられている。また、公開鍵暗号に基づくデジタル署名は、インターネットに開設されているネットショッピング、銀行や証券会社のオンラインサイトなど秘密鍵が共有できない環境にある場合や、秘密鍵が共有できる環境にある場合でも、署名生成装置か署名検証装置のどちらの計算能力も高い場合に用いられている。
【0005】
代表的な公開鍵暗号には、RSA暗号と楕円曲線暗号があり、それぞれに基づくデジタル署名方式が提案されている。RSA暗号は素因数分解問題の困難性が安全性の根拠となっており、署名生成演算及び署名検証演算として冪乗剰余演算が用いられている。楕円曲線暗号は楕円曲線上の離散対数問題の困難性が安全性の根拠となっており、署名生成演算並びに署名検証演算として楕円曲線上の点演算が用いられている。これらの公開鍵暗号は特定の鍵(公開鍵)に関する解読法(署名偽造法)は提案されているものの、一般的な解読法(署名偽造法)は知られていないため、安全性に関する重大な問題は、後に述べる量子計算機による解読法を除き、現在までのところ見つかっていない。
【0006】
この他の公開鍵暗号に基づくデジタル署名には、体の拡大理論を利用して構成され連立方程式の求解問題に安全性の根拠をおいた多次多変数暗号に基づくSFLASHと呼ばれる方式がある。しかし、多次多変数暗号には有力な攻撃方法が知られており、その解読法を避けるために必要な鍵サイズを大きくしなくてはならず、実用性が問題視されはじめている。
【0007】
一方で、現在デジタル署名に広く利用されているRSA暗号と楕円曲線暗号であっても、量子計算機が出現すれば解読される危険に晒されている。量子計算機とは量子力学で知られているエンタングルメントという物理現象を利用して、(現在の計算機とは違った原理に基づいて)超並列計算を行わせることができる計算機であり、現在までのところ実験レベルでしか動作が確認されていない仮想の計算機であるが、実現に向けた研究開発が進められている。この量子計算機を用いて1994年にShorは素因数分解や離散対数問題を効率的に解くアルゴリズムが構成できることを示した(非特許文献1参照)。
【0008】
即ち、量子計算機が実現すれば素因数分解に基づくRSA暗号や、(楕円曲線上の)離散対数問題に基づく楕円曲線暗号は解読できることになる。
【0009】
このような状況の下、量子計算機が実現されてもなお安全な公開鍵暗号に基づくデジタル署名の研究が近年行われるようになってきた。現時点で実現可能で公開鍵暗号で量子計算機でも解読が難しいとされている方式には多次多変数暗号に基づくSFLASHと呼ばれる方式があるが、多次多変数暗号は前記の通り、現状の計算機に対して安全とするために必要となる鍵サイズが膨大となっており、実用化が危ぶまれている。
【0010】
更に、公開鍵暗号は共通鍵暗号と比較して、回路規模が大きく、処理時間も掛かるため、モバイル端末などの小電力環境では実現できないか実現しても処理時間がかかるという問題があった。このため、小電力環境でも実現できる公開鍵暗号が求められている。
【0011】
一般に公開鍵暗号に基づくデジタル署名は(素因数分解問題や離散対数問題などの)計算困難な問題を見出し、(秘密鍵を知らずに)平文と呼ばれるメッセージにデジタル署名を生成しようとすることが当該計算困難な問題を解くことと計算量的に同等になるように構成する。しかし、逆に計算困難な問題が見つかったとしても必ずしもその問題を安全性の根拠とするようにデジタル署名を構成できる訳ではない。なぜなら、計算が困難すぎる問題に安全性の根拠をおくと鍵を生成する問題も困難になり、構成が難しくなる。一方で問題を鍵生成が可能となる程度に容易とすると、デジタル署名の偽造も容易になってしまう。
【0012】
従って、公開鍵暗号を構成するには計算困難な問題を見つけるとともに、鍵を生成できる程には容易だが、(生成した秘密鍵を知らずに)解読できる程には容易でないという絶妙なバランスを持つ問題に作り変えるという創造性が必要であり、そこが難しいために現在まで数えるほどの公開鍵暗号に基づくデジタル署名しか提案されてこなかった。
【先行技術文献】
【非特許文献】
【0013】
【非特許文献1】P.W.Shor:“Algorithms for Quantum Computation : Discrete Log and Factoring”,Proceedings of the 35th Annual IEEE Symposium on Foundations of Computer Science,1994.
【発明の概要】
【発明が解決しようとする課題】
【0014】
このように、従来は、量子計算機が出現しても安全性が確保でき、現在の計算機でも安全に実現可能であるとともに、小電力環境での実現可能性がある公開鍵暗号に基づくデジタル署名システム(鍵を生成し、デジタル署名を生成し、検証を行うためのシステム)が存在しなかった。
【0015】
そこで、本発明は、安全性・信頼性の高いデジタル署名を生成することができ、しかも少ない計算量で実現可能な公開鍵暗号に基づくデジタル署名システムを提供する。
【課題を解決するための手段】
【0016】
本発明に係るデジタル署名生成装置は、有限体Fqならびに署名生成用の秘密鍵として、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションD(ux(s,t),uy(s,t),s,t)を記憶する記憶手段を備え、メッセージmのハッシュ値を計算し、前記ハッシュ値を前記有限体Fq上定義された1変数多項式h(t)に埋め込み、ハッシュ値多項式を生成し、前記記憶手段に記憶されたセクションのパラメータsに前記ハッシュ値多項式を代入することで、x座標及びy座標がパラメータtの関数で表された前記セクション上の曲線であるデジタル署名Ds(Ux(t),Uy(t),t)を生成する。
【0017】
本発明に係るデジタル署名検証装置は、有限体Fqならびに公開鍵として、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)の多項式を記憶する記憶手段を備え、メッセージmを入力するとともに、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションD(ux(s,t),uy(s,t),s,t)を署名生成用の秘密鍵として用いて生成された、x座標及びy座標がパラメータtの関数で表された前記セクション上の曲線である、前記メッセージmに対応したデジタル署名Ds:(Ux(t),Uy(t),t)を入力する。前記メッセージmのハッシュ値を計算し、前記ハッシュ値を、パラメータtを有する前記有限体Fq上定義された1変数多項式h(t)に埋め込み、ハッシュ値多項式を生成し、前記記憶手段に記憶された前記多項式のパラメータsに前記ハッシュ値多項式を代入して、前記ハッシュ値に対応した代数曲面X(x,y,t)を計算し、前記代数曲面X(x,y,t)の座標x及び座標yに、前記デジタル署名のx座標を表す関数Ux(t)と、y座標を表す関数Uy(t)をそれぞれ代入することにより、前記メッセージ及び前記デジタル署名の正当性を検証する。
【0018】
本発明の鍵生成装置は、有限体Fqならびに署名検証用の公開鍵として用いられる、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、署名生成用の秘密鍵として用いられる前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションを生成する鍵生成装置であって、前記有限体Fq上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)を生成し、前記第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fq上定義された第2の2変数多項式λy(s,t)を生成し、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}が前記第1の2変数多項式λx(s,t)となるように生成し、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}が前記第2の2変数多項式λy(s,t)となるように生成し、2変数多項式ux(s,t)をx座標、2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、2変数多項式vx(s,t)をx座標、2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成する。また、前記セクションD1及び前記セクションD2を含む前記3次元多様体A(x,y,s,t)の多項式を生成する。
【0019】
本発明の鍵生成装置は、有限体Fqならびに、x座標、y座標、パラメータs、及びパラメータtで表された、署名検証用の公開鍵として用いられる前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表された、署名生成用の秘密鍵として用いられるセクションを生成する鍵生成装置であって、パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fq上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fq上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成し、第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求め、第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める、第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成し、生成された等式を展開することにより、前記3次元多様体A(x,y,s,t)の多項式を生成する。
【発明の効果】
【0020】
安全性・信頼性の高い公開鍵暗号に基づくデジタル署名を生成することができ、しかも少ない計算量で実現可能となる。
【図面の簡単な説明】
【0021】
【図1】3次元多様体のファイブレーションと、代数曲面について説明するための図。
【図2】鍵生成装置の構成例を示した図。
【図3】図2の鍵生成装置の処理動作を説明するためのフローチャート。
【図4】デジタル署名生成装置の構成例を示した図。
【図5】図4のデジタル署名生成装置の処理動作を説明するためのフローチャート。
【図6】デジタル署名検証装置の構成例を示した図。
【図7】図6のデジタル署名検証装置の処理動作を説明するためのフローチャート。
【図8】鍵生成装置の他の構成例を示した図。
【図9】図8の鍵生成装置の処理動作を説明するためのフローチャート。
【図10】図2の鍵生成装置の他の構成例を示した図。
【図11】図4のデジタル署名生成装置の他の構成例を示した図。
【図12】図6のデジタル署名検証装置の他の構成例を示した図。
【図13】8の鍵生成装置の他の構成例を示した図。
【発明を実施するための最良の形態】
【0022】
以下、本発明の実施形態について図面を参照して説明する。
【0023】
まず、本実施形態の概要を説明する。
【0024】
(概要)
本実施形態では、3次元多様体は、体K上定義された連立(代数)方程式の解の集合のうち3次元の自由度を持ったものと定義される。例えば、体K上の連立方程式
【数1】
【0025】
は変数6つに対し、それらを束縛する3つの方程式があるので3次元の自由度を持っており、3次元多様体となる。特に4変数のK上代数方程式
【数2】
【0026】
の解の集合として定義される空間もK上の3次元多様体となる。尚、式(1)、式(2)に示した3次元多様体の定義式は、アフィン空間におけるものであって、射影空間におけるそれは(式(2)の場合)
【数3】
【0027】
である。本実施形態では、3次元多様体を射影空間で扱うことはないので3次元多様体の定義式を式(1)若しくは式(2)としたが、射影空間で表現しても、本実施形態はそのまま成立する。一方、代数曲面は体K上定義された連立(代数)方程式の解の集合のうち2次元の自由度を持ったものである。よって、例えば
【数4】
【0028】
と定義される。本実施形態においては式(2)のように1つの式で書ける3次元多様体のみを扱うので、以下では式(2)を3次元多様体の定義方程式のごとく扱う。
【0029】
体とは加減乗除が自由にできる集合であって、実数、有理数、複素数がこれにあたる。たとえば、整数や行列など0以外に除算ができない元を含む集合は該当しない。体の中には有限体と呼ばれる有限個の元から構成される体がある。例えば素数pに対し、pを法とする剰余類Z/pZは体をなす。このような体は素体と呼ばれ、Fpと表す。有限体にはこの他に素数の冪乗個の元を持つ体Fq(q=pr)があるが、本実施形態では簡単のため、主に素体Fpのみを扱う。一般に素体Fpのpは素体Fpの標数と呼ばれる。一方、一般の有限体でも、本実施形態は自明な変形を施すことによって同様に成立する。
【0030】
公開鍵暗号ではメッセージをデジタルデータとして埋め込む必要から有限体上で構成することが多く、本実施形態においても同様に有限体(本実施形態では特に素体)Fp上定義された3次元多様体を扱う。
【0031】
3次元多様体A:f(x,y,z,u)=0内には、図1に示すように、通常、代数曲面が複数存在する。このような代数曲面は3次元多様体上の因子と呼ばれる。一般に3次元多様体の定義式が与えられた時に(非自明な)因子を求める問題は現代の数学においても未解決の難問であり、後述する多次多変数方程式によって解く方法を除けば一般的な解法は知られていない。
【0032】
特に本実施形態で扱うような有限体で定義された3次元多様体においては有理数体などの無限体(無限個の元からなる体)で定義された3次元多様体と比較しても手掛かりが少なく、より難しい問題であることが知られている。更に、前記因子を求めるために出現する多次多変数方程式は、多次多変数暗号を解く場合に出現する多次多変数方程式と比べるとそのバラエティーが広く、多次多変数暗号に対して提案されている解法は一般には成立しない。
【0033】
本実施形態では、この問題を3次元多様体上の求因子問題もしくは単に求因子問題と呼び、前記3次元多様体上の求因子問題に安全性の根拠をおく公開鍵暗号を構成する。
【0034】
x座標、y座標、z座標及びパラメータuで表された3次元多様体Aの定義式f(x,y,z,u)=0 において、変数z、uをそれぞれパラメータs、tに変えて、
gs,t(x,y):=f(x,y,s,t)
とおく。これを体K上の2変数代数関数体K(s,t)の元を係数とする多項式とみなし、gs,t(x,y)=0 が、K(s,t)上の代数曲線を定義するとき、3次元多様体Aはs,tをパラメータとするアフィン平面P2上のファイブレーションを持つといい、(x,y,s,t)を(s,t)に対応させることによって得られる写像A→P2を、3次元多様体Aのアフィン平面P2上のファイブレーションと呼ぶ。
【0035】
そして、アフィン平面P2上の点(s,t)を1点(s0,t0)(s0,t0 は体Kの元)に固定したときに得られる曲線gs0,t0(x,y)=0 を点(s0,t0)上のファイバーと呼び、As0,t0 と表す。
【0036】
アフィン平面P2上のファイブレーションを持つ3次元多様体にはセクションと呼ばれ、
(x,y,s,t)=(ux(s,t),uy(s,t),s,t)
と表すことのできる、s,t でパラメタライズされた3次元多様体A上の代数曲面が存在することが多い。セクションを持たないファイブレーションも存在するが、セクションを持つようなf(x,y,z,u)は容易に構成できる。
【0037】
一方、上述のように、3次元多様体Aの定義式f(x,y,z,u)=0 を2変数代数関数体K(s,t)の上で考えるのではなく、例えば1変数代数関数体K(t)の上で考えることもできる。その場合は、
ht(x,y,s):=f(x,y,s,t)
とおくと、tの各値に対してht(x,y,s)=0 は、1変数代数関数体K(t)上の代数曲面を定義する。このとき、Aはtをパラメータとするアフィン直線P1 上のファイブレーションを持つといい、(x,y,s,t)を(t)に対応させることによって得られる写像A→P1 を3次元多様体Aのアフィン直線P1上のファイブレーションと呼ぶ。
【0038】
そして、アフィン直線P1 上の点tを1点t0に固定したときに得られる曲面
ht0(x,y,s)=0
を点t0 上のファイバーと呼び、At0 と表す。
【0039】
アフィン直線P1 上のファイブレーションを持つ3次元多様体におけるセクションとは、
(x,y,s,t)=(ux(t),uy(t),us(t),t)
と表すことができ、tでパラメタライズされた、3次元多様体A上の代数曲線のことである。
【0040】
セクションは、3次元多様体の因子である。一般に3次元多様体のファイブレーションが与えられたとき、それに対応するファイバーは(sやtに体の元を代入することにより)直ちに求まるが、対応するセクションを求めることは極めて難しい。
【0041】
本実施形態で述べるデジタル署名は、3次元多様体上の求因子問題のうち、特に3次元多様体Aのファイブレーションが与えられたとき、セクションを求める問題に安全性の根拠をおいたデジタル署名である。
【0042】
尚、本実施形態においては、主としてアフィン平面P2 上のファイブレーションを扱うので、簡単のためアフィン平面P2 上のファイブレーションであることが明らかな場合は、単にファイブレーションと呼ぶ。またこの場合、ファイブレーションを持つ3次元多様体の定義式f(x,y,s,t)=0を単にファイブレーションと呼ぶことがある。
【0043】
ファイブレーションからセクションを求めるには、現代の数学においても、セクション(ux(s,t),uy(s,t),s,t)を
【数5】
【0044】
(ここでdegsux(s,t)はux(s,t)において、sのみを変数としたときの次数である。)と仮定した上で、
【数6】
【0045】
とおき、これをA(x,y,s,t)=0に代入して、
【数7】
【0046】
とし、この左辺を展開してsitjの係数を
α0,…,αrsxrtx−1,β0,…,βrsyrty−1の関数
ci,j(α0,…,αrsxrtx−1,β0,…,βrsyrty−1)
で表現し、連立方程式系
【数8】
【0047】
を立てて、これを解くことによって求める方法しか知られていない。
【0048】
即ち、本発明の公開鍵暗号も従来技術で述べた多次多変数暗号と同様に連立方程式の求解問題に帰着すると言える。しかし、多次多変数暗号が(現代の数学ではかなり解明されている)有限体の拡大理論に依存した非常に限られた範囲の多次多変数方程式の求解問題に帰着しているのに対し、3次元多様体暗号は数学上の未解決問題である求因子問題に依存しているため、問題の困難さのレベルは大きく異なる。
【0049】
以下では3次元多様体上の求因子問題に基づいたデジタル署名の具体的な構成を説明する。尚、以下では全てFp上定義された3次元多様体を考える。このため、全ての演算はFp上で行う。
【0050】
(第1の実施形態)
本実施形態に係るデジタル署名で用いられる公開鍵は、
Fp上の3次元多様体Xのファイブレーション:A(x,y,s,t)=0である。
【0051】
秘密鍵は、Fp上の3次元多様体Aのn個のセクション
Di:(x,y,s,t)=(ux,i(s,t),uy,i(s,t),s,t)である。
【0052】
これらは後述する鍵生成方法で容易に求めることができる。
【0053】
(1)署名生成処理
次に、署名生成処理の概要を述べる。署名生成処理ではまず署名生成したいメッセージ(以下では平文と呼ぶ)を整数mに変換する。変換の方法はメッセージをJISコードなどのコード体系を利用してコード化し、それを整数に読み換える方法が一般的である。
【0054】
次に、変換された整数mをハッシュ関数h(x)にかけてハッシュ値h(m)を計算する。ここでハッシュ値h(m)は一般に120ビットないし160ビットあるので、例えば、h(m)=h0‖h1‖…‖hr−1
と、複数のブロックh0、h1、…hr−1に分割し、これらを変数tに関する1変数多項式
h(t)=hr−1tr−1+…+h1t+h0
の係数に埋め込む(ハッシュ値埋め込み処理)。ハッシュ値の埋め込まれた1変数多項式をハッシュ値多項式h(t)と呼ぶ。ここでh(t)をFp上の多項式とするために、
各hi(0≦i≦r−1)はFpの元となるように取る必要がある。即ち、上記ハッシュ値は、pのビット長に基づいて、
0≦hi≦p−1
となるようにハッシュ値を分割する。
【0055】
次に、秘密鍵であるn個のセクションDiのなかからランダムに1つ選択する。選択されたセクション
Di:(wx(s,t),wy(s,t),s,t)
に対して、その変数sに上記ハッシュ値多項式h(t)を代入する。即ち、
(wx(h(t),t),wy(h(t),t),h(t),t)
これを整理して、
Ds:(x,y,t)=(Wx(t),Wy(t),t) …(3)
とし、これをメッセージmに対するデジタル署名Dsとしてメッセージmと共に受信者に送信する。
【0056】
以上の説明からもわかるように、式(3)に示すデジタル署名Dsは、秘密鍵として用いたセクションDi上の曲線である。
【0057】
ここで、安全性の観点からWx(t)、Wy(t)の次数が選択したセクションによらず一定であることが望ましい。これはセクションに現れる多項式ux,i(s,t)に対して、
【数9】
【0058】
とするとき、全てのiに対してux,i(s,t)がshxtkx の項を含むようにすることで解決できる。なぜならば、このようにすることによって、ハッシュ値多項式h(t)をどのセクションのsに代入しても、得られる多項式Wx(t)の最大次数の項はh(t)をshxtkx の項に代入した多項式から生じるためである。
【0059】
uy,i(s,t)に関しても同様の手段でWy(t)の次数をiによらず一定に保つことができる。このような鍵(セクションとそれに対応する3次元多様体)を生成する方法は後に示す。
【0060】
(2)署名検証処理
デジタル署名Ds(x,y,t)を受け取った受信者は所有する有限体Fp上定義された公開鍵A(x,y,s,t)を利用して次のように署名検証処理を行う。
【0061】
まず、前述の署名生成処理と同様に、メッセージ(以下では平文と呼ぶ)を整数mに変換する。変換の方法は署名生成処理と同じである。次に変換された整数mを上述の署名生成処理と同じハッシュ関数h(x)にかけてハッシュ値h(m)を計算する。更に前述の署名生成処理と同様に、ハッシュ値を、h(m)=h0‖h1‖…‖hr−1
と、複数のブロックh0、h1、…hr−1に分割し、これらを変数tに関する有限体Fp上定義された1変数多項式
h(t)=hr−1tr−1+…+h1t+h0
の係数に埋め込み、ハッシュ値の埋め込まれたハッシュ値多項式h(t)を生成する。
【0062】
次に、公開鍵である3次元多様体A(x,y,s,t)の変数sに、生成したハッシュ値多項式h(t)を代入して、代数曲面
X(x,y,t)=A(x,y,h(t),t)
を生成する。このX(x,y,t)もファイブレーションを持つ代数曲面である。
【0063】
次に、得られた代数曲面Xに、(受信側が受け取った)式(3)で表現されたデジタル署名を代入する。このとき値が「0」になればデジタル署名が正しく、「0」でなければデジタル署名が正しくないことを意味する。
【0064】
なぜならば、前述のデジタル署名生成処理においては、秘密鍵として与えられたセクションのうちランダムに選択されたセクションDiに対して、s=h(t)を代入していた。一方、これは前述のデジタル署名検証処理で行った3次元多様体A(x,y,s,t)にs=h(t)を代入して得られた代数曲面X(x,y,t)のセクションに対応している。従って、前述のデジタル署名検証処理のような代入操作を行うと、値が「0」となる。
【0065】
更に、s=h(t)を代入して得られる代数曲面もそのセクションを求めることは3次元多様体と同様に難しく多次多変数方程式の求解問題に帰着することが知られている。このため、後述する安全性署名の項目でも詳しく述べるように、3次元多様体のセクションを知らない第三者がメッセージに対応した代数曲面のセクションを提示することは当該代数曲面のセクションを求める問題に帰着する。このため(計算量の観点で)不可能であるといえる。このことが本発明のデジタル署名が安全であることの根拠である。
【0066】
(3)鍵生成方法
鍵生成方法を説明する。本実施形態の鍵生成は、セクションD1、D2をランダムに選び、それに対応したファイブレーションを計算することによって行う。但し、生成された3次元多様体が2つのセクションを同時に持つようにするために以下のような工夫が必要となる。
【0067】
ここでは簡単のため3次元多様体のうち、次のファイブレーションを持つ3次元多様体を例にとって鍵生成方法を示す。
【数10】
【0068】
ここで、a(s,t),b(s,t)は2変数多項式である。まず、素体の標数pを決める。このときpは小さくても安全性に問題は生じない。さて、セクションD1,D2を
【数11】
【0069】
とおいて、3次元多様体Aに代入し、
【数12】
【0070】
を得る。これらを辺々引くとb(s,t)が消え、
【数13】
【0071】
となる。a(s,t)を2変数多項式とするには、たとえば
【数14】
【0072】
であれば十分である。このことを利用して以下に示すアルゴリズムで鍵生成を行うことができる。
【0073】
ここで、k1(s,t)|k2(s,t)は、多項式k1(s,t)が、
多項式k2(s,t)を割り切ることを意味している。
【0074】
まず、λx(s,t)|λy(s,t)となる2つの多項式をランダムに選択する。具体的にこのような多項式の組を求めるには、例えばλx(s,t)をランダムに与えて、同じくランダムな多項式c(s,t)によってλy(s,t)=c(s,t)λx(s,t)を計算することによって、λy(s,t)を求めることで実現できる。
【0075】
次に、多項式vx(s,t)をランダムに選択し、
【数15】
【0076】
によって、ux(s,t)を計算する。同様に多項式vy(s,t)をランダムに選択し、
【数16】
【0077】
によって、uy(s,t)を計算する。このようにして計算されたux(s,t)、vx(s,t)、uy(s,t)、vy(s,t)を利用して、
【数17】
【0078】
を計算することにより、多項式a(s,t)が計算できる。更にb(s,t)は、上述のa(s,t)を利用して、
【数18】
【0079】
によって得られる。
【0080】
前述の鍵生成方法は、上記以外の3次元多様体であっても、例えば
【数19】
【0081】
という形の定義式を仮定すれば同様に可能であり、上述の例のみに限定されない。
【0082】
一方で、上述の鍵生成方式では3つ以上のセクションを持つ代数曲面を生成することができない。また、上述の安全性上望ましい条件として挙げたデジタル署名
Ds:(x,y,t)=(Wx(t),Wy(t),t)
に表われるWx(t)、Wy(t)の次数を、選択したセクションによらず一定にするような公開鍵を生成することが困難である。これら両方を解決する鍵生成方法として、以下のような第2の鍵生成方法が考えられる。
【0083】
まず、ux,i(s,t)の最大次数の項shxtkxを決め、sの最大次数がhx、tの最大次数がkxとなるように、n個の2変数多項式ux,i(s,t)を定める。また同様にしてuy,i(s,t)の最大次数の項shytkyを決め、sの最大次数がhy、tの最大次数がkyとなるように、n個の2変数多項式uy,i(s,t)を定める。
【0084】
次に、これらの多項式から因子(x−ux,i(s,t))、(y−uy,i(s,t))を生成し、各i(1≦i≦n)について、iが同じ値の2つの因子(x−ux,i(s,t))及び(y−uy,i(s,t))を、左辺と右辺のそれぞれに振り分ける。そして、左辺に振り分けられたn個の因子の積と、右辺に振り分けられたn個の因子の積とを等号で結ぶことにより、次式(6)に示すような方程式を得る。
【数20】
【0085】
式(6)は、前記条件を満たす方程式となる。ここで、例えば、
Di:(ux,i(s,t),uy,i(s,t),s,t)がセクションとなる。
【0086】
更に、これらのセクションは、その作り方からh(t)を代入しても、同じ次数のデジタル署名Ds:(Wx(t),Wy(t),t)が生成される。実際には式(6)のままであるとセクションがすぐ分かってしまうので、展開することによって公開鍵である3次元多様体を得る。
【0087】
一方で、式(6)ではxの因子が右辺に、yの因子が左辺に分かれているため因数分解によってセクションを求めることが容易となる場合がある。そこで、例えば
【数21】
【0088】
などのように、xの因子とyの因子をランダムに両辺に分けて公開鍵暗号である3次元多様体を生成することが望ましい。このように公開鍵と秘密鍵を生成することによって一般にn個以上のセクションを持つ安全性の高い3次元多様体を生成することができる。尚、前記安全性の観点を除けば、ux,i(s,t),uy,i(s,t)の作り方に自由度を持たせることができる。
【0089】
(4)安全性の証明
上述のデジタル署名の安全性証明に関して説明する。デジタル署名の安全性は、メッセージ(平文)とデジタル署名のペアを作成する問題が多項式時間で解ければ3次元多様体のセクションを求める問題を多項式時間で求めることができ、逆に3次元多様体のセクションを求める問題を多項式時間で求めることができれば、メッセージ(平文)とデジタル署名のペアを作成することが多項式時間で可能なことを証明することによって証明することができる。即ち、上記の事実を理論的に証明することによって、メッセージ(平文)とデジタル署名のペアを作成可能なこと(存在的偽造可能であること)と、3次元多様体のセクションを求める問題が解けることが同値であることが示せるので、安全性の根拠としている3次元多様体のセクションを求める問題が困難であれば、デジタル署名が存在的偽造不可能であることが示されるからである。以上の方針に従った安全性証明を次に示す。
【0090】
ここで、2次元セクションDをD=(dx(s,t),dy(s,t),s,t)と書いたとき、2次元セクションの次数を、dx(s,t),dy(s,t)の次数の最大値、
max{deg(dx(s,t)),deg(dy(s,t))}とする。
【0091】
[定理1]n次のセクションを持つ有限体Fp上定義された3次元多様体の求セクション問題が計算困難であることと、本発明のデジタル署名は存在的偽造不可能の意味で安全であることは同値である。
【0092】
[証明1]本実施形態のデジタル署名による平文と署名の具体的なペアを多項式時間内に計算できるアルゴリズムαが存在したとする。このとき、このアルゴリズムαを利用して3次元多様体の2次元セクションを求める多項式時間アルゴリズムが存在することを示す。
【0093】
まず、2次元セクションを求めたい3次元多様体をA(x,y,s,t)とする。次にA(x,y,s,t)を公開鍵とするデジタル署名方式を考え、アルゴリズムαを利用して多項式個の平文と署名のペアを生成する。ここで、平文miに対するハッシュ値多項式をhi(t)とし、その署名を
【数22】
【0094】
とする。ここで、fi(s,t),gi(s,t)は3次元多様体Aのセクションのx,y座標に対応するもので、高々有限個しか存在しない。従って、一定数以上の署名を集めれば、fi(s,t),gi(s,t)は全て異なるものではなく、その幾つかは同一となる。これらのうちどれが同じものであるかは以下の方法で判定できる。
【0095】
3次元多様体B(x,y,s,t)(=A(x,y,t,s))を考える。このB(x,y,s,t)は3次元多様体A(x,y,s,t)のsとtを交換したものであり、セクションの次数の定義からn次のセクションを持っている。そこで、アルゴリズムαを利用して、1つの平文と署名のペアを生成する。その際、特にハッシュ値多項式hi(s)が定数hi(s)=h0となるものを選び、生成された署名を
【数23】
【0096】
とすると、
【数24】
【0097】
は、sでパラメタライズされたA(x,y,s,t)の1つの1次元サイクルを与える。ここでサイクルとは部分多様体のことを意味し、特に1次元サイクルとは1次元の部分多様体である。このサイクルDを利用して、1次元サイクル
【数25】
【0098】
のうち、Dと同じXのセクションの上に存在するものを以下の多項式アルゴリズムで見出す。
【0099】
まず、(s,t)=(hi(h0),h0)とおくと、D上の点(ζ(hi(h0),h0),η(hi(h0),h0),hi(h0),h0)とDs(i)上の点(fi(hi(h0),h0),gi(hi(h0),h0),hi(h0),h0)が定まる。そして、Xのセクションが(s,t)を座標とする平面に同型であることに注意すると、
【数26】
【0100】
であればDs(i)とDは同一のセクションの上に存在する。等しくなければDs(i)とDとは同一のセクションの上にはない。ここで同じセクションに含まれる1次元サイクル群を、
【数27】
【0101】
とする。さて、ここで3次元多様体A(x,y,s,t)のセクション(wx(s,t),wy(s,t),s,t)を
【数28】
【0102】
と書くと、式(8)の1次元セクションを代入することによって、
【数29】
【0103】
を得る。この両辺をtの冪毎にその係数を比較することによって、aijの連立1次方程式が得られる。連立1次方程式は多項式時間の解法が存在するので、多項式時間で全ての
aijが求まる。同様にbijも多項式時間で求まるので、3次元多様体A(x,y,s,t)のセクションが多項式時間で求まることが示せた。
【0104】
逆に、3次元多様体の2次元セクションを求める多項式時間アルゴリズムβが存在したとする。このとき、このアルゴリズムβを利用して、本実施形態のデジタル署名による平文と署名の具体的なペアを多項式時間内に計算できることを示す。
【0105】
本実施形態のデジタル署名の公開鍵である3次元多様体A(x,y,s,t)が与えられたとき、アルゴリズムβを利用して、その2次元セクション
D:(wx(s,t),wy(s,t),s,t)
を求める。ここで平文mを適当に決め、そのハッシュ値多項式をh(t)とした時、
s=h(t)と置くことにより、署名
Ds:(wx(h(t),t),wy(h(t),t),t)
を得る。これにより平文と署名の具体的なペアを多項式時間内に計算可能である。
【0106】
以上により、定理が証明された。
【0107】
(5)バリエーション
本実施形態におけるバリエーションを述べる。第1のバリエーションはハッシュ値多項式をハッシュ値自体に置き換えるバリエーションである。本実施形態におけるデジタル署名生成処理においては、平文mからハッシュ値h(m)を計算し、ハッシュ値h(m)をハッシュ値多項式h(t)に展開して、ランダムに選択したセクションDiにs=h(t)と代入していた。
【0108】
しかし、ハッシュ値をハッシュ値多項式に埋め込まないような実施形態も成立する。即ち、セクションDiに、ハッシュ値h(m)そのものを、s=h(m)として代入することにより、デジタル署名
Ds:(wx(h(m),t),wy(h(m),t),t)
が生成できる。この場合は、デジタル署名検証処理においても同様に公開鍵である3次元多様体A(x,y,s,t)への代入をs=h(m)によって行うことにより、同様の手段で署名検証が可能となる。
【0109】
実際に、このバリエーションが成り立つことは、本実施形態におけるハッシュ値多項式h(t)を定数項だけからなる多項式と考えれば理解することができる。即ち、本バリエーションは本実施形態の特別な場合と言うことができる。本バリエーションを利用することによってデジタル署名生成処理、デジタル署名検証処理における多項式演算を軽減でき、計算メモリ量や計算処理時間を削減することが可能となる。しかし、その反面でハッシュ値は最小でも120ビットであるため定義体であるFpのpのサイズを120ビット程度に大きくしなければならず、多倍長演算が必要となるという弱点も持ち合わせており、
適用有効範囲は限定される。
【0110】
第2のバリエーションは、本実施形態のデジタル署名生成装置、デジタル署名検証装置においてハッシュ値多項式を代入する変数の変更に関するバリエーションである。本実施形態のデジタル署名生成装置、デジタル署名検証装置においては、ハッシュ値多項式としてh(t)という変数tによる1変数多項式を取り、秘密鍵であるセクション若しくは公開鍵である3次元多様体の変数sに代入していたが、これを以下のように変更しても本発明は安全性も含めて同様に成立する。
【0111】
即ちハッシュ値多項式として、h(s)という変数sによる1変数多項式を取り、秘密鍵であるセクション若しくは公開鍵である3次元多様体の変数tに代入する。変数s,tは共にパラメータなので本バリエーションによってその効果は変わらない。
【0112】
(6)構成
次に、本実施形態のデジタル署名方式に係る鍵生成装置、デジタル署名生成装置、デジタル署名検証装置の構成例と、これらの処理動作について説明する。
【0113】
図2は、鍵生成装置の構成例を示したもので、図3は、図2の鍵生成装置の処理動作を説明するためのフローチャートである。以下、図3に示すフローチャートを参照して、図2の鍵生成装置の構成及び処理動作について説明する。尚、理解の助けとして具体的な数値や式を示すが、これはあくまでも理解を助けるための例であって、実際に使われる十分な安全性を持つデジタル署名とは(特に多項式の次数などの点で)必ずしも一致していない。
【0114】
なお、ここでは、前述した、y2=x3+a(s,t)x+b(s,t)というファイブレーションをもつ3次元多様体を例にとり説明する。
【0115】
鍵生成処理開始の指令が外部装置等から制御部1に伝えら、鍵生成装置は鍵生成処理を開始する(ステップS1)。当該指令が制御部1に伝わると、制御部1は、素数生成部2に素数の生成を要請する。素数生成はランダムに素数を発生させても良いが、ここでは大きな素数を使う必要はないので、高々6ビット程度の素数からランダム若しくは(出力順を予め決めておくなどの手段で)恣意的に選択するか、当該鍵生成装置で予め定まっている素数を利用してもよい。ここでは素数p=17が生成されたとする(ステップS2)。
【0116】
制御部1は、セクション生成部5に、素数pを出力し、セクション生成部5では、セクションの生成を開始する。セクション生成部5は、まず、素数pを2変数多項式生成部3に出力し、2変数多項式生成部3は、2変数多項式λx(s,t)(=−s(t−1))を生成する(ステップS3)。2変数多項式生成部3では、予め定められた一定範囲内で次数をランダムに選択し、その次数を持つ2変数多項式の係数を有限体Fpの元として0からp−1までの範囲でそれぞれ生成する。
【0117】
2変数多項式生成部3は、λx(s,t)を生成すると、これを制御部1へ出力する。制御部1は、λx(s,t)を得ると、上記同様に、ランダムな2変数多項式c(s,t)の生成処理を行い、c(s,t)(=s+t)を得る(ステップS4)。
【0118】
制御部1は、c(s,t)とλx(s,t)を2変数多項式演算部4に出力する。
【0119】
2変数多項式演算部4では、λy(s,t)=c(s,t)λx(s,t)を計算し(ステップS5)、制御部1へλy(s,t)(=−(s+t)s(t−1))を出力する。
【0120】
λy(s,t)を受け取った制御部1では、次にλx(s,t)の生成と同様の方法で2変数多項式vx(s,t)(=2st)をランダムに生成し(ステップS6)、λx(s,t)(=−s(t−1))とvx(s,t)(=2st)を2変数多項式演算部4へ出力する。
【0121】
2変数多項式演算部4は、ux(s,t)(=λx(s,t)+vx(s,t)=s(t+1))を計算し、これを制御部1へ出力する(ステップS7)。
【0122】
制御部1は、ステップS6と同様に、vy(s,t)(=2st2+s+s2t−s2−st)を生成し(ステップS8)、さらに、
uy(=λy(s,t)+vy(s,t)=s(t2+1))を計算する(ステップS9)。
【0123】
制御部1は、ux(s,t)、uy(s、t)、vx(s,t)、vy(s,t)を3次元多様体生成部6に出力する。
【0124】
3次元多様体生成部6は、2変数多項式演算部4を繰り返し使うことにより、式(4)に用いて、3次元多様体A(x,y,s,t):y2=x3+a(s,t)x+b(s,t)のパラメータs、tに関する2変数多項式a(s,t)を計算する(ステップS10)。
【0125】
この例では
【数30】
【0126】
と求まる。さらに、式(5)を用いて、a(s、t)とux(s,t)、uy(s,t)、vx(s,t)、vy(s,t)から、2変数多項式演算部4を繰り返し使うことにより、パラメータs、tに関する2変数多項式b(s,t)を計算する(ステップS11)。
【0127】
この例では、
【数31】
【0128】
を得る。
【0129】
3次元多様体生成部6は、得られたa(s,t)、b(s,t)を制御部1に出力する。
【0130】
制御部1は、3次元多様体A(x,y,s,t)を表す多項式:y2=x3+a(s,t)x+b(s,t)に、ステップS10及びステップS11で得られたa(s,t)とb(s,t)を代入することで、次式(9)に示すような、公開鍵である3次元多様体AのファイブレーションA(x,y,s,t)の多項式を生成する。
【0131】
また、次式(10)に示すように、2変数多項式ux(s,t)をx座標、2変数多項式uy(s,t)をy座標とするセクションD1:(x,y,s,t)と、2変数多項式vx(s,t)をx座標、2変数多項式vy(s,t)をy座標とするセクションD2:(x,y,s,t)を生成する(ステップS12)。
【数32】
【0132】
制御部1は、生成された公開鍵と秘密鍵を鍵出力部7に出力し、鍵出力部7は、公開鍵と秘密鍵を出力する。
【0133】
なお、図2に示す各機能(制御部1、素数生成部2、2変数多項式3、2変数多項式演算部4、セクション生成部5、3次元多様体生成部6、鍵出力部7など)は、図10に示すように、各種プログラムなどを記憶する記憶部101、CPUなどの演算部100、出力部102、入力部103、通信部104などをバスに接続してなるコンピュータに、記憶部101に記憶されている各プログラムを実行させることにより、実現することができる。
【0134】
図10では、記憶部101には、制御部1、素数生成部2、2変数多項式生成部3、2変数多項式演算部4、セクション生成部5、3次元多様体生成部6、鍵出力部7のそれぞれの機能を実現すための鍵生成制御プログラム、素数生成プログラム、2変数多項式生成プログラム、2変数多項式演算プログラム、セクション生成プログラム、3次元多様体生成プログラム、鍵出力プログラムが記憶されている。
【0135】
図2の鍵出力部7から出力された秘密鍵や公開鍵は、例えば、通信部104を介して要求元へ送信されたり、後述するデジタル署名生成装置やデジタル署名検証装置へ渡される。
【0136】
図4は、デジタル署名生成装置の構成例を示したもので、図5は、図4のデジタル署名生成装置の処理動作を説明するためのフローチャートである。以下、図5に示すフローチャートを参照して、図4のデジタル署名生成装置の構成及び処理動作について説明する。
【0137】
図4のデジタル署名生成装置は、平文入力部11から平文mを取得し、秘密鍵入力部14から秘密鍵であるセクション群Di(ux(s,t),uy(s,y),s,t)(0≦i≦n)を取得する。
【0138】
ここで、秘密鍵を前述の鍵生成処理で生成された
1.素体の標数p=17
2.式(10)に示した有限体Fp上定義された3次元多様体Aの2つのセクションを利用する。尚、全ての演算は鍵生成処理で決定した有限体F17で行う。
【0139】
まず、平文入力部11から平文mが入力されることによって、デジタル署名生成処理が開始される(ステップS101)。入力された平文mは、ハッシュ値計算部12に出力され、SHA1やMD5などのハッシュ関数を利用してハッシュ値h(m)が計算される。ここでは、簡単のため、ハッシュ値を「0x151」とするが、本来は120ビット以上である必要がある。計算されたハッシュ値は、ハッシュ値多項式生成部13に送られ、予め定められた複数のブロックに分割される。ここでは、p=17であることから4ビット毎に分割し、各ブロックをハッシュ値多項式h(t)の係数に埋め込む(ステップS103)。その結果得られるハッシュ値多項式h(t)は h(t)=t2+5t+1 となる。
【0140】
秘密鍵記憶部18には、図2や後述の図8に示した構成の鍵生成装置で生成された秘密鍵である少なくとも1つのセクションを記憶する。
【0141】
秘密鍵入力部14は、秘密鍵記憶部18から秘密鍵であるセクション群を読み出して、署名生成部15へ出力する(ステップS104)。秘密鍵記憶部18には、複数のセクションが記憶されていることが望ましい。ここでは、式(10)に示した2つのセクションD1、D2が秘密鍵記憶部18に記憶されており、秘密鍵入力部14は、この2つのセクションD1、D2を秘密鍵記憶部18から読み出し、署名生成部15へ出力する。これらセクション群は、署名生成部15から、セクション選択部16に出力される。セクション選択部16は、入力されたセクション群のうちから1つのセクションをランダムに選択する(ステップS105)。ここではD1が選択されたとする。選択されたセクションD1は、署名生成部15に出力される。なお、秘密鍵記憶部18に秘密鍵が1つのみ記憶されている場合には、セクション選択部16の上記処理は省略される。
【0142】
選択されたセクションD1を受信した署名生成部15は、ハッシュ値多項式生成部13から、ステップS103で生成されたハッシュ値多項式h(t)を取得して、選択されたセクションD1のs座標にh(t)を代入して(s=h(t))、セクションDsを生成する(ステップS106)。
【0143】
ここでは、次式(11)に示すようなセクションDsが生成される。
【数33】
【0144】
このセクションDsは、デジタル署名として署名出力部17から出力される(ステップS107)。
【0145】
前述の第1、第2のバリエーションは本実施形態において同様の処理で成立する。尚、第1のバリエーションを利用する場合は現状では(ハッシュ値の大きさを考慮して)pを120ビット以上とする必要がある。
【0146】
なお、図4に示す各機能(平文入力部11、ハッシュ値計算部12、ハッシュ値多項式生成部13,秘密鍵入力部14、署名生成部15、セクション選択部16,署名出力部17など)は、図11に示すように、各種プログラムなどを記憶する記憶部101、CPUなどの演算部100、出力部102、入力部103、通信部104などをバスに接続してなるコンピュータに、記憶部101に記憶されている各プログラムを実行させることにより、実現することができる。
【0147】
図11では、記憶部101には、平文入力部11、ハッシュ値計算部12、ハッシュ値多項式生成部13,秘密鍵入力部14、署名生成部15、セクション選択部16,署名出力部17のそれぞれの機能を実現すための平文入力プログラム、ハッシュ値計算プログラム、ハッシュ値多項式生成プログラム、秘密鍵入力プログラム、署名生成プログラム、セクション選択プログラム,署名出力プログラムが記憶されている。また、記憶部101は、秘密鍵を記憶する秘密鍵記憶部18としても機能する。
【0148】
平文入力部11で入力されたメッセージmと、署名出力部17で出力されたデジタル署名は、例えば、通信部104を介して相手端末へ送信される。
【0149】
図6は、デジタル署名検証装置の構成例を示したもので、図7は、図6のデジタル署名検証装置の処理動作を説明するためのフローチャートである。以下、図7に示すフローチャートを参照して、図6のデジタル署名検証装置の構成及び処理動作について説明する。
【0150】
図6のデジタル署名生成装置は、平文入力部21から平文mを取得し、公開鍵入力部24から公開鍵である有限体Fp上定義された3次元多様体A(x,y,s,t)を取得する。
【0151】
まず、平文入力部21から平文mが入力されることよって、デジタル署名検証処理が開始される(ステップS201)。
【0152】
入力された平文mは、ハッシュ値計算部22に出力され、署名生成装置で用いられたものと同じハッシュ関数を利用してハッシュ値が計算される(ステップS202)。ここでは、ハッシュ値は署名生成装置で出力したハッシュ値と同じ「0x151」となる。このハッシュ値は、ハッシュ値多項式生成部23に出力される。
【0153】
ハッシュ値多項式生成部23では、デジタル署名検証装置と同じアルゴリズムで、ハッシュ値多項式h(t)を計算する(ステップS203)。従って、ここで得られる、ハッシュ値多項式h(t)は、h(t)=t2+5t+1 となる。
【0154】
得られたハッシュ値多項式h(t)は、署名検証部26へ出力される。
【0155】
公開鍵記憶部29は、図2や後述の図8に示した構成の鍵生成装置で生成された公開鍵である有限体Fp上定義された3次元多様体A(x,y,s,t)の多項式を記憶する。
【0156】
公開鍵入力部24は、公開鍵記憶部29から公開鍵である3次元多様体の多項式を読み出して、署名生成部15へ出力する(ステップS204)。ここでは、式(9)に示した3次元多様体、すなわち、公開鍵が署名検証部26へ入力される。署名検証部26は、入力された公開鍵を代数曲面生成部27に出力する。
【0157】
署名検証部26は、ステップS203で生成されたハッシュ値多項式h(t)を代数曲面生成部27へ出力する。
【0158】
代数曲面生成部27は、3次元多様体の変数sに、署名検証部26から出力されたハッシュ値多項式h(t)を代入して、代数曲面X(x,y,t)を生成する(ステップS205)。ここでは、次式(12)に示すような代数曲面X(x,y,t)が得られる。
【数34】
【0159】
次に、署名入力部25に入力された式(11)に示した署名Ds:(Ux(t),Uy(t),t)を署名検証部26が読み込む(ステップS206)。この署名Dsのx座標Ux(t)=t3+6t2+6t+1、y座標Uy(t)=t4+5t3+2t2+5t+1を、それぞれ、式(12)に示した代数曲面Xのx,y座標に代入して、展開・整理する(ステップS207)。前述の通り、デジタル署名Dsは代数曲面Xの因子となっているため、代入して整理すれば「0」となるはずである。従って、「0」となれば(ステップS208)、判定結果出力部28に、「署名検証成功」を出力する(ステップS209)。「0」とならなければ、デジタル署名が間違っていたことを意味するので(ステップS208)、判定結果出力部28に、「署名検証失敗」を出力する(ステップS210)。
【0160】
判定結果出力部28は、判定結果を外部へ出力して、全ての処理を終了する。
【0161】
ここで示した例では、正当なデジタル署名なので、ステップS207で、代数曲面Xにデジタル署名Ds代入して整理した結果は、確かに「0」となり、署名検証部26は、判定結果出力部28に「署名検証成功」を出力し、判定結果出力部28はそれを外部に出力して終了する。
【0162】
第1、第2のバリエーションは本実施形態において同様の処理で成立する。
【0163】
なお、図6に示す各機能(平文入力部21、ハッシュ値計算部22、ハッシュ値多項式生成部23,公開鍵入力部24、署名入力部25、署名検証部26、代数曲面生成部27、判定結果出力部28など)は、図12に示すように、各種プログラムなどを記憶する記憶部101、CPUなどの演算部100、出力部102、入力部103、通信部104などをバスに接続してなるコンピュータに、記憶部101に記憶されている各プログラムを実行させることにより、実現することができる。
【0164】
図12では、記憶部101には、平文入力部21、ハッシュ値計算部22、ハッシュ値多項式生成部23,公開鍵入力部24、署名入力部25、署名検証部26、代数曲面生成部27、判定結果出力部28のそれぞれの機能を実現すための平文入力プログラム、ハッシュ値計算プログラム、ハッシュ値多項式生成プログラム、公開鍵入力プログラム、署名入力プログラム、署名検証プログラム、代数曲面生成プログラム、判定結果出力プログラムが記憶されている。また、記憶部101は、公開鍵を記憶する公開鍵記憶部29として機能する。
【0165】
署名入力部25には、デジタル署名生成装置で生成されたメッセージmに対応するデジタル署名が入力される。
【0166】
次に、第2の鍵生成方法について説明する。図8は第2の鍵生成方法を用いた鍵生成装置の構成例を示したもので、図9は、図8の鍵生成装置の処理動作を説明するためのフローチャートである。以下、図9に示すフローチャートを参照して、図8の鍵生成装置の構成及び処理動作について説明する。
【0167】
鍵生成処理開始の指令が外部装置等から制御部1に伝えられ、鍵生成装置は鍵生成処理を開始する(ステップS301)。当該指令が制御部1に伝わると、制御部1は、素数生成部2に素数の生成を要請する。素数生成はランダムに素数を発生させても良いが、ここでは大きな素数を使う必要はないので、高々6ビット程度の素数からランダム若しくは(出力順を予め決めておくなどの手段で)恣意的に選択するか、当該鍵生成装置で予め定まっている素数を利用してもよい。ここでは素数p=17が生成されたとする(ステップS302)。
【0168】
制御部1は、セクション生成部5に、素数pを送信し、セクション生成部5では、セクションの生成を開始する。セクション生成部5では、n個のセクション
Di:(x,y,s,t)=(ux,i(s,t),uy,i(s,t),s,t)
(1≦i≦n)
のx座標ux,i(s,t)、y座標uy,i(s,t)を以下に示す方法で決定する。
【0169】
まず、x座標のsに関する次元の最大値hx、tに関する次元の最大値kxを定める(ステップS303)。即ち、
【数35】
【0170】
ここでは、簡単のため、hx=kx=2とする。
【0171】
次に、shxtkxの項を含み、この次数の範囲内のセクションDiのx座標ux,i(s,t)の生成を2変数多項式生成部3に要求する。ここでは、n=3であるので、2変数多項式生成部3は、ux,1(s、t)、ux,2(s、t)、ux,3(s、t)を、ランダムに順次決定する(ステップS304)。すなわち、
【数36】
【0172】
が得られる。
【0173】
次に、ステップS303と同様に、y座標のsに関する次元の最大値hy、tに関する次元の最大値kyを定める(ステップS305)。即ち、
【数37】
【0174】
ここでは、簡単のためhy=ky=2とする。
【0175】
次に、shytkyの項を含み、この次数の範囲内のセクションDiのy座標uy,i(s,t)の生成を2変数多項式生成部3に要求する。ここでは、n=3であるので、2変数多項式生成部3は、uy,1(s、t)、uy,2(s、t)、uy,3(s、t)を、ランダムに順次決定する(ステップS306)。すなわち、
【数38】
【0176】
が得られる。
【0177】
以上で、セクションDiが生成された。
【0178】
これらセクションは制御部1に出力される。制御部1では、3次元多様体生成部6に、これらセクションを出力して、3次元多様体を生成させる。
【0179】
3次元多様体生成部6では、入力されたux,i(s,t)、uy,i(s,t)をそれぞれ、
x因子(x−ux,i(s,t))、y因子(y−uy,i(s,t))と因子化する(ステップS307)。
【0180】
そして、iが同じ値の因子x(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を、左辺と右辺にランダムに振り分ける。そして、左辺に振り分けられたn個の因子の積と、右辺に振り分けられたn個の因子の積とを等号で結ぶことにより、次式(13)に示すような4変数(x、y、s、t)多項式を生成する。
【数39】
【0181】
3次元多様体生成部6は、制御部1を介して、(もしくは直接)4変数多項式演算部8へ、上式(13)の展開を依頼する。
【0182】
4変数多項式演算部8は、上式(13)を展開して、当該4変数多項式に含まれる各項を、左辺と右辺のいずれか一方にまとめて、次式(14)に示すような、3次元多様体A(x,y,s,t)を得る(ステップS308)。
【数40】
【0183】
4変数多項式演算部8は、得られた3次元多様体A(x,y,s,t)を制御部1へ出力する。制御部1では3つのセクションと3次元多様体A(x,y,s,t)を鍵として鍵出力部7へ出力し、鍵出力部7では、これらの鍵を出力する。
【0184】
なお、図8に示す各機能(制御部1、素数生成部2、2変数多項式生成部3、4変数多項式演算部8、セクション生成部5、3次元多様体生成部6、鍵出力部7など)は、図13に示すように、各種プログラムなどを記憶する記憶部101、CPUなどの演算部100、出力部102、入力部103、通信部104などをバスに接続してなるコンピュータに、記憶部101に記憶されている各プログラムを実行させることにより、実現することができる。
【0185】
図13では、記憶部101には、制御部1、素数生成部2、2変数多項式生成部3、4変数多項式演算部8、セクション生成部5、3次元多様体生成部6、鍵出力部7のそれぞれの機能を実現すための鍵生成制御プログラム、素数生成プログラム、2変数多項式生成プログラム、4変数多項式演算プログラム、セクション生成プログラム、3次元多様体生成プログラム、鍵出力プログラムが記憶されている。
【0186】
図8の鍵出力部7から出力された秘密鍵や公開鍵は、例えば、通信部104を介して要求元へ送信されたり、後述するデジタル署名生成装置やデジタル署名検証装置へ渡される。
【0187】
図8の示す鍵生成装置の2変数多項式生成部3は、安全性を高めるため、セクションのx座標やy座標に対応する2変数多項式を生成する際、変数s、tについての字数の最大値(x座標の変数sの最大次数hx、x座標の変数tの最大次数kx、y座標の変数sの最大次数hy、y座標の変数tの最大多項数ky)をそれぞれ定め、x座標については、shxtkxの項を必ず含む2変数多項式を生成、y座標については、shytkyの項を必ず含む2変数多項式を生成している。
【0188】
しかし、この場合に限らず、次数が最大値hx以下の変数sと、次数が最大値kx以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式とを含む2変数多項式ux,i(s,t)(i:1≦i≦n)や、次数が最大値hy以下の変数sと、次数が最大値ky以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式とを含む2変数多項式uy,i(s,t)(i:1≦i≦n)を生成すれば、n個のセクションを持つ3次元多様体を生成することができる。
【0189】
以上説明したように、上記実施形態によれば、メッセージ送信側のデジタル署名生成装置は有限体Fpならびに、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fp上定義された3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションD(ux(s,t),uy(s,y),s,t)を、署名生成用の秘密鍵として記憶手段に記憶する。CPU等の演算手段は、メッセージmのハッシュ値を計算し、このハッシュ値を前記有限体Fp上定義された1変数多項式h(t)の係数に埋め込み、ハッシュ値多項式を生成する。そして、演算手段は、記憶手段からセクションを1つ読み出して、それを署名生成用の秘密鍵として用いて、デジタル署名を生成する。すなわち、セクションのs座標に上記ハッシュ値多項式を代入することで、x座標及びy座標がパラメータtの関数で表された前記セクション上の曲線であるデジタル署名Ds(Ux(t),Uy(t),t)を生成する。このようにして生成されたデジタル署名は、上記メッセージmとともに、メッセージ送信側の送信手段により、メッセージ受信側へ送信される。
【0190】
記憶手段は、異なる複数のセクションDi(ux,i(s,t),uy,i(s,t),s,t)(iは、0≦i≦nの任意の正の整数)を記憶し、デジタル署名を生成する度に、この記憶手段に記憶された複数のセクションDiのうちの任意の1つのセクションを選択して、デジタル署名を生成することにより、より安全性が高まる。
【0191】
また、メッセージ受信側のデジタル署名検証装置は、記憶手段に、有限体Fpならびに公開鍵として、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fp上定義された3次元多様体A(x,y,s,t)の多項式を記憶する。メッセージmと当該メッセージmに対応するデジタル署名Ds:(Ux(t),Uy(t),t)とが入力されると、CPU等の演算手段が、メッセージmのハッシュ値を計算し、このハッシュ値を前記有限体Fp上定義された1変数多項式h(t)に埋め込み、ハッシュ値多項式を生成する。そして、演算手段は、記憶手段から上記メッセージ送信側に対応する公開鍵である3次元多様体A(x,y,s,t)の多項式のs座標に、当該ハッシュ値多項式を代入して、ハッシュ値に対応した代数曲面X(x,y,t)を計算する。さらに、演算手段は、代数曲面X(x,y,t)に、上記デジタル署名を代入して、メッセージ及びデジタル署名の正当性を検証する。すなわち、代数曲面X(x,y,t)のx座標に、デジタル署名のx座標(変数tの多項式で表された)Ux(t)を代入し、代数曲面X(x,y,t)のy座標に、デジタル署名のy座標(変数tの多項式で表された)Uy(t)を代入した後、式を展開し(多項式の積を単項式の和の形で表す)、整理する。この結果(代数曲面X(x,y,t)にデジタル署名のx座標およびy座標を代入した結果)が「0」であるとき、メッセージmが改竄されていないこと、及び、メッセージmが、上記公開鍵に対応する正当なメッセージ送信者から送信されたことが検証されたことになる(署名検証成功)。
【0192】
鍵生成装置では、CPU等の演算手段が、前記有限体Fp上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)と、この第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fp上定義された第2の2変数多項式λy(s,t)を生成し、次に、前記有限体Fp上定義された、変数xがパラメータs,tで表される2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}がλx(s,t)となるように生成し、さらに、前記有限体Fp上定義された、変数yがパラメータs,tで表される2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}がλy(s,t)となるように生成する。そして、演算手段は、2変数多項式ux(s,t)をx座標、2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、2変数多項式vx(s,t)をx座標、2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成する。これら2つのセクションD1、D2が秘密鍵である。また、この2つのセクションD1,D2を持つ3次元多様体A(x,y,s,t)を生成する。この3次元多様体Aが、公開鍵である。
【0193】
他の鍵生成装置では、CPU等の演算手段が、パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fp上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fp上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する。演算手段は、生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求める。このn個のセクションが秘密鍵である。さらに、演算手段は、生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める。演算手段は、生成された第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成すると、この生成された等式を展開することにより、公開鍵である、3次元多様体A(x,y,s,t)の多項式を生成する。
【0194】
このように、上記実施形態にかかる公開鍵暗号に基づくデジタル署名システムは、頑健(robust)で、安全性・信頼性の高いデジタル署名を生成することができ、しかも少ない計算量で実現可能である。
【符号の説明】
【0195】
1…制御部、2…素数生成部、3…2変数多項式生成部、4…2変数多項式演算部、5…セクション生成部、6…3次元多様体生成部、7…鍵出力部、11…平文入力部、12…ハッシュ値計算部、13…ハッシュ値多項式生成部、14…秘密鍵入力部、15…署名生成部、16…セクション選択部、17…署名出力部、21…平文入力部、22…ハッシュ値計算部、23…ハッシュ値多項式生成部、24…公開鍵入力部、25…署名入力部、26…署名検証部、27…代数曲面生成部、28…判定結果出力部、8…4変数多項式演算部。
【特許請求の範囲】
【請求項1】
有限体Fqならびに署名検証用の公開鍵として用いられる、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、署名生成用の秘密鍵として用いられる前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションを生成する鍵生成装置であって、
前記有限体Fq上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)を生成する第1の生成手段と、
前記第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fq上定義された第2の2変数多項式λy(s,t)を生成する第2の生成手段と、
前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}が前記第1の2変数多項式λx(s,t)となるように生成する第3の生成手段と、
前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}が前記第2の2変数多項式λy(s,t)となるように生成する第4の生成手段と、
前記第3の生成手段で生成された2変数多項式ux(s,t)をx座標、前記第4の生成手段で生成された2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、前記第3の生成手段で生成された2変数多項式vx(s,t)をx座標、前記第4の生成手段で生成された2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成するセクション生成手段と、
前記セクションD1及び前記セクションD2を含む前記3次元多様体A(x,y,s,t)の多項式を生成する3次元多様体生成手段と、
を具備したことを特徴とする鍵生成装置。
【請求項2】
有限体Fqならびにx座標、y座標、パラメータs、及びパラメータtで表された、署名検証用の公開鍵として用いられる前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表された、署名生成用の秘密鍵として用いられるセクションを生成する鍵生成装置であって、
パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fq上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fq上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する第1の生成手段と、
前記第1の生成手段で生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求める第2の生成手段と、
前記第1の生成手段で生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める第3の生成手段と、
前記第3の生成手段で生成された第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成する第4の生成手段と、
前記第4の生成手段で生成された等式を展開することにより、前記3次元多様体A(x,y,s,t)の多項式を生成する第5の生成手段と、
を具備したことを特徴とする鍵生成装置。
【請求項3】
前記第1の生成手段は、
前記2変数多項式ux,i(s,t)のパラメータsについての次数の最大値hxと、パラメータtについての次数の最大値kxを決定する手段と、
次数が最大値hx以下の変数sと次数が最大値kx以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shxtkxの項とを含む第i番目の2変数多項式ux,i(s,t)(i:1≦i≦n)を生成する手段と、
前記2変数多項式uy,i(s,t)の変数sについての次数の最大値hyと、変数tについての次数の最大値kyを決定する手段と、
次数が最大値hy以下の変数sと次数が最大値ky以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shytkyの項とを含む第i番目の前記2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する手段と、
を含むことを特徴とする請求項2記載の鍵生成装置。
【請求項4】
第1の生成手段と第2の生成手段と第3の生成手段と第4の生成手段とセクション生成手段と3次元多様体生成手段とを備え、有限体Fqならびに署名検証用の公開鍵として用いられる、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、署名生成用の秘密鍵として用いられる前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションを生成する鍵生成装置の鍵生成方法であって、
前記第1の生成手段が、前記有限体Fq上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)を生成する第1のステップと、
前記第2の生成手段が、前記第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fq上定義された第2の2変数多項式λy(s,t)を生成する第2のステップと、
前記第3の生成手段が、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}が前記第1の2変数多項式λx(s,t)となるように生成する第3のステップと、
前記第4の生成手段が、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}が前記第2の2変数多項式λy(s,t)となるように生成する第4のステップと、
前記セクション生成手段が、前記第3のステップにおいて前記前記第3の生成手段により生成された2変数多項式ux(s,t)をx座標、前記第4のステップにおいて前記第4の生成手段により生成された2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、前記第3のステップにおいて前記前記第3の生成手段により生成された2変数多項式vx(s,t)をx座標、前記第4のステップにおいて前記第4の生成手段により生成された2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成する第5のステップと、
前記3次元多様体生成手段が、前記セクションD1及び前記セクションD2を含む前記3次元多様体A(x,y,s,t)の多項式を生成する第6のステップと、
を有することを特徴とする鍵生成方法。
【請求項5】
第1の生成手段と第2の生成手段と第3の生成手段と第4の生成手段と第5の生成手段とを備え、有限体Fqならびにx座標、y座標、パラメータs、及びパラメータtで表された、署名検証用の公開鍵として用いられる前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表された、署名生成用の秘密鍵として用いられるセクションを生成する鍵生成装置の鍵生成方法であって、
前記第1の生成手段が、パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fq上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fq上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する第1のステップと、
前記第2の生成手段が、前記第1のステップにおいて前記第1の生成手段により生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求める第2のステップと、
前記第3の生成手段が、前記第1のステップにおいて前記第1の生成手段により生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める第3のステップと、
前記第4の生成手段が、前記第3のステップにおいて前記第3の生成手段により生成された第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成する第4のステップと、
前記第5の生成手段が、前記第4のステップにおいて前記第4の生成手段により生成された等式を展開することにより、前記3次元多様体A(x,y,s,t)の多項式を生成する第5のステップと、
を有することを特徴とする鍵生成方法。
【請求項6】
前記第1のステップは、
前記2変数多項式ux,i(s,t)のパラメータsについての次数の最大値hxと、パラメータtについての次数の最大値kxを決定するステップと、
次数が最大値hx以下の変数sと次数が最大値kx以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shxtkxの項とを含む第i番目の2変数多項式ux,i(s,t)(i:1≦i≦n)を生成するステップと、
前記2変数多項式uy,i(s,t)の変数sについての次数の最大値hyと、変数tについての次数の最大値kyを決定するステップと、
次数が最大値hy以下の変数sと、次数が最大値ky以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shytkyの項とを含む第i番目の前記2変数多項式uy,i(s,t)(i:1≦i≦n)を生成するステップと、
を含むことを特徴とする請求項5記載の鍵生成装置。
【請求項7】
第1の生成手段と第2の生成手段と第3の生成手段と第4の生成手段とセクション生成手段と3次元多様体生成手段とを備え、有限体Fqならびに署名検証用の公開鍵として用いられる、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、署名生成用の秘密鍵として用いられる前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションを生成する鍵生成装置としてコンピュータを機能させるための鍵生成プログラムであって、
前記第1の生成手段が、前記有限体Fq上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)を生成する第1のステップと、
前記第2の生成手段が、前記第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fq上定義された第2の2変数多項式λy(s,t)を生成する第2のステップと、
前記第3の生成手段が、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}が前記第1の2変数多項式λx(s,t)となるように生成する第3のステップと、
前記第4の生成手段が、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}が前記第2の2変数多項式λy(s,t)となるように生成する第4のステップと、
前記セクション生成手段が、前記第3のステップにおいて前記前記第3の生成手段により生成された2変数多項式ux(s,t)をx座標、前記第4のステップにおいて前記第4の生成手段により生成された2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、前記第3のステップにおいて前記前記第3の生成手段により生成された2変数多項式vx(s,t)をx座標、前記第4のステップにおいて前記第4の生成手段により生成された2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成する第5のステップと、
前記3次元多様体生成手段が、前記セクションD1及び前記セクションD2を含む前記3次元多様体A(x,y,s,t)の多項式を生成する第6のステップと、
をコンピュータに実行させるための鍵生成プログラム。
【請求項8】
第1の生成手段と第2の生成手段と第3の生成手段と第4の生成手段と第5の生成手段とを備え、有限体Fqならびにx座標、y座標、パラメータs、及びパラメータtで表された、署名検証用の公開鍵として用いられる前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表された、署名生成用の秘密鍵として用いられるセクションを生成する鍵生成装置としてコンピュータを機能させるための鍵生成プログラムであって、
前記第1の生成手段が、パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fq上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fq上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する第1のステップと、
前記第2の生成手段が、前記第1のステップにおいて前記第1の生成手段により生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求める第2のステップと、
前記第3の生成手段が、前記第1のステップにおいて前記第1の生成手段により生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める第3のステップと、
前記第4の生成手段が、前記第3のステップにおいて前記第3の生成手段により生成された第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成する第4のステップと、
前記第5の生成手段が、前記第4のステップにおいて前記第4の生成手段により生成された等式を展開することにより、前記3次元多様体A(x,y,s,t)の多項式を生成する第5のステップと、
をコンピュータに実行させるための鍵生成プログラム。
【請求項9】
前記第1のステップは、
前記2変数多項式ux,i(s,t)のパラメータsについての次数の最大値hxと、パラメータtについての次数の最大値kxを決定するステップと、
次数が最大値hx以下の変数sと次数が最大値kx以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shxtkxの項とを含む第i番目の2変数多項式ux,i(s,t)(i:1≦i≦n)を生成するステップと、
前記2変数多項式uy,i(s,t)の変数sについての次数の最大値hyと、変数tについての次数の最大値kyを決定するステップと、
次数が最大値hy以下の変数sと次数が最大値ky以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shytkyの項とを含む第i番目の前記2変数多項式uy,i(s,t)(i:1≦i≦n)を生成するステップと、
を含むことを特徴とする請求項8記載の鍵生成プログラム。
【請求項1】
有限体Fqならびに署名検証用の公開鍵として用いられる、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、署名生成用の秘密鍵として用いられる前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションを生成する鍵生成装置であって、
前記有限体Fq上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)を生成する第1の生成手段と、
前記第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fq上定義された第2の2変数多項式λy(s,t)を生成する第2の生成手段と、
前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}が前記第1の2変数多項式λx(s,t)となるように生成する第3の生成手段と、
前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}が前記第2の2変数多項式λy(s,t)となるように生成する第4の生成手段と、
前記第3の生成手段で生成された2変数多項式ux(s,t)をx座標、前記第4の生成手段で生成された2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、前記第3の生成手段で生成された2変数多項式vx(s,t)をx座標、前記第4の生成手段で生成された2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成するセクション生成手段と、
前記セクションD1及び前記セクションD2を含む前記3次元多様体A(x,y,s,t)の多項式を生成する3次元多様体生成手段と、
を具備したことを特徴とする鍵生成装置。
【請求項2】
有限体Fqならびにx座標、y座標、パラメータs、及びパラメータtで表された、署名検証用の公開鍵として用いられる前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表された、署名生成用の秘密鍵として用いられるセクションを生成する鍵生成装置であって、
パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fq上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fq上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する第1の生成手段と、
前記第1の生成手段で生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求める第2の生成手段と、
前記第1の生成手段で生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める第3の生成手段と、
前記第3の生成手段で生成された第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成する第4の生成手段と、
前記第4の生成手段で生成された等式を展開することにより、前記3次元多様体A(x,y,s,t)の多項式を生成する第5の生成手段と、
を具備したことを特徴とする鍵生成装置。
【請求項3】
前記第1の生成手段は、
前記2変数多項式ux,i(s,t)のパラメータsについての次数の最大値hxと、パラメータtについての次数の最大値kxを決定する手段と、
次数が最大値hx以下の変数sと次数が最大値kx以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shxtkxの項とを含む第i番目の2変数多項式ux,i(s,t)(i:1≦i≦n)を生成する手段と、
前記2変数多項式uy,i(s,t)の変数sについての次数の最大値hyと、変数tについての次数の最大値kyを決定する手段と、
次数が最大値hy以下の変数sと次数が最大値ky以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shytkyの項とを含む第i番目の前記2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する手段と、
を含むことを特徴とする請求項2記載の鍵生成装置。
【請求項4】
第1の生成手段と第2の生成手段と第3の生成手段と第4の生成手段とセクション生成手段と3次元多様体生成手段とを備え、有限体Fqならびに署名検証用の公開鍵として用いられる、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、署名生成用の秘密鍵として用いられる前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションを生成する鍵生成装置の鍵生成方法であって、
前記第1の生成手段が、前記有限体Fq上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)を生成する第1のステップと、
前記第2の生成手段が、前記第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fq上定義された第2の2変数多項式λy(s,t)を生成する第2のステップと、
前記第3の生成手段が、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}が前記第1の2変数多項式λx(s,t)となるように生成する第3のステップと、
前記第4の生成手段が、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}が前記第2の2変数多項式λy(s,t)となるように生成する第4のステップと、
前記セクション生成手段が、前記第3のステップにおいて前記前記第3の生成手段により生成された2変数多項式ux(s,t)をx座標、前記第4のステップにおいて前記第4の生成手段により生成された2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、前記第3のステップにおいて前記前記第3の生成手段により生成された2変数多項式vx(s,t)をx座標、前記第4のステップにおいて前記第4の生成手段により生成された2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成する第5のステップと、
前記3次元多様体生成手段が、前記セクションD1及び前記セクションD2を含む前記3次元多様体A(x,y,s,t)の多項式を生成する第6のステップと、
を有することを特徴とする鍵生成方法。
【請求項5】
第1の生成手段と第2の生成手段と第3の生成手段と第4の生成手段と第5の生成手段とを備え、有限体Fqならびにx座標、y座標、パラメータs、及びパラメータtで表された、署名検証用の公開鍵として用いられる前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表された、署名生成用の秘密鍵として用いられるセクションを生成する鍵生成装置の鍵生成方法であって、
前記第1の生成手段が、パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fq上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fq上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する第1のステップと、
前記第2の生成手段が、前記第1のステップにおいて前記第1の生成手段により生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求める第2のステップと、
前記第3の生成手段が、前記第1のステップにおいて前記第1の生成手段により生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める第3のステップと、
前記第4の生成手段が、前記第3のステップにおいて前記第3の生成手段により生成された第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成する第4のステップと、
前記第5の生成手段が、前記第4のステップにおいて前記第4の生成手段により生成された等式を展開することにより、前記3次元多様体A(x,y,s,t)の多項式を生成する第5のステップと、
を有することを特徴とする鍵生成方法。
【請求項6】
前記第1のステップは、
前記2変数多項式ux,i(s,t)のパラメータsについての次数の最大値hxと、パラメータtについての次数の最大値kxを決定するステップと、
次数が最大値hx以下の変数sと次数が最大値kx以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shxtkxの項とを含む第i番目の2変数多項式ux,i(s,t)(i:1≦i≦n)を生成するステップと、
前記2変数多項式uy,i(s,t)の変数sについての次数の最大値hyと、変数tについての次数の最大値kyを決定するステップと、
次数が最大値hy以下の変数sと、次数が最大値ky以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shytkyの項とを含む第i番目の前記2変数多項式uy,i(s,t)(i:1≦i≦n)を生成するステップと、
を含むことを特徴とする請求項5記載の鍵生成装置。
【請求項7】
第1の生成手段と第2の生成手段と第3の生成手段と第4の生成手段とセクション生成手段と3次元多様体生成手段とを備え、有限体Fqならびに署名検証用の公開鍵として用いられる、x座標、y座標、パラメータs、及びパラメータtで表される前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、署名生成用の秘密鍵として用いられる前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表されたセクションを生成する鍵生成装置としてコンピュータを機能させるための鍵生成プログラムであって、
前記第1の生成手段が、前記有限体Fq上定義された、パラメータs、tに関する第1の2変数多項式λx(s,t)を生成する第1のステップと、
前記第2の生成手段が、前記第1の2変数多項式λx(s,t)で割り切れる、前記有限体Fq上定義された第2の2変数多項式λy(s,t)を生成する第2のステップと、
前記第3の生成手段が、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式ux(s,t)、vx(s,t)を、当該2つの2変数多項式の差分{ux(s,t)−vx(s,t)}が前記第1の2変数多項式λx(s,t)となるように生成する第3のステップと、
前記第4の生成手段が、前記有限体Fq上定義された、パラメータs,tに関する2つの2変数多項式uy(s,t)、vy(s,t)を、当該2つの2変数多項式の差分{uy(s,t)−vy(s,t)}が前記第2の2変数多項式λy(s,t)となるように生成する第4のステップと、
前記セクション生成手段が、前記第3のステップにおいて前記前記第3の生成手段により生成された2変数多項式ux(s,t)をx座標、前記第4のステップにおいて前記第4の生成手段により生成された2変数関数uy(s,t)をy座標とするセクションD1:(x,y,s,t)=(ux(s,t),uy(s,t),s,t)と、前記第3のステップにおいて前記前記第3の生成手段により生成された2変数多項式vx(s,t)をx座標、前記第4のステップにおいて前記第4の生成手段により生成された2変数関数vy(s,t)をy座標とするセクションD2:(x,y,s,t)=(vx(s,t),vy(s,t),s,t)を生成する第5のステップと、
前記3次元多様体生成手段が、前記セクションD1及び前記セクションD2を含む前記3次元多様体A(x,y,s,t)の多項式を生成する第6のステップと、
をコンピュータに実行させるための鍵生成プログラム。
【請求項8】
第1の生成手段と第2の生成手段と第3の生成手段と第4の生成手段と第5の生成手段とを備え、有限体Fqならびにx座標、y座標、パラメータs、及びパラメータtで表された、署名検証用の公開鍵として用いられる前記有限体Fq上定義された3次元多様体A(x,y,s,t)と、前記3次元多様体A(x,y,s,t)内の曲面のうち、x座標及びy座標がパラメータs及びtの関数で表された、署名生成用の秘密鍵として用いられるセクションを生成する鍵生成装置としてコンピュータを機能させるための鍵生成プログラムであって、
前記第1の生成手段が、パラメータs、tに関する第1番目から第n(nは正の整数)番目までのn(nは正の整数)個の前記有限体Fq上定義された2変数多項式ux,i(s,t)(i:1≦i≦n)と、パラメータs、tに関する第1番目から第n番目までのn個の前記有限体Fq上定義された2変数多項式uy,i(s,t)(i:1≦i≦n)を生成する第1のステップと、
前記第2の生成手段が、前記第1のステップにおいて前記第1の生成手段により生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)をそれぞれx座標、y座標とする第i番目のセクションDi:(x,y,s,t)=(ux,i(s,t)、uy,i(s,t),s,t)(1≦i≦n)を生成することにより、第1番目から第n番目までのn個のセクションDi(1≦i≦n)を求める第2のステップと、
前記第3の生成手段が、前記第1のステップにおいて前記第1の生成手段により生成された第i(1≦i≦n)番目の2変数多項式ux,i(s,t)及びuy,i(s,t)を用いて、第i番目のx因子(x−ux,i(s,t))及びy因子(y−uy,i(s,t))を生成することにより、第1番目から第n番目までのx因子及びy因子を求める第3のステップと、
前記第4の生成手段が、前記第3のステップにおいて前記第3の生成手段により生成された第i(1≦i≦n)番目のx因子及びy因子を左辺と右辺に振り分けて、左辺に振り分けられたn個のx因子及びy因子の積と、右辺に振り分けられたn個のx因子及びy因子の積とを等号で結ぶことにより得られる等式を生成する第4のステップと、
前記第5の生成手段が、前記第4のステップにおいて前記第4の生成手段により生成された等式を展開することにより、前記3次元多様体A(x,y,s,t)の多項式を生成する第5のステップと、
をコンピュータに実行させるための鍵生成プログラム。
【請求項9】
前記第1のステップは、
前記2変数多項式ux,i(s,t)のパラメータsについての次数の最大値hxと、パラメータtについての次数の最大値kxを決定するステップと、
次数が最大値hx以下の変数sと次数が最大値kx以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shxtkxの項とを含む第i番目の2変数多項式ux,i(s,t)(i:1≦i≦n)を生成するステップと、
前記2変数多項式uy,i(s,t)の変数sについての次数の最大値hyと、変数tについての次数の最大値kyを決定するステップと、
次数が最大値hy以下の変数sと次数が最大値ky以下の変数tとのうちの少なくとも1つを因子として有する複数の単項式と、shytkyの項とを含む第i番目の前記2変数多項式uy,i(s,t)(i:1≦i≦n)を生成するステップと、
を含むことを特徴とする請求項8記載の鍵生成プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2010−244070(P2010−244070A)
【公開日】平成22年10月28日(2010.10.28)
【国際特許分類】
【出願番号】特願2010−146259(P2010−146259)
【出願日】平成22年6月28日(2010.6.28)
【分割の表示】特願2005−214994(P2005−214994)の分割
【原出願日】平成17年7月25日(2005.7.25)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成22年10月28日(2010.10.28)
【国際特許分類】
【出願日】平成22年6月28日(2010.6.28)
【分割の表示】特願2005−214994(P2005−214994)の分割
【原出願日】平成17年7月25日(2005.7.25)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]