JP5017645B2 - 公開鍵認証プログラム及び電子署名プログラム - Google Patents

公開鍵認証プログラム及び電子署名プログラム Download PDF

Info

Publication number
JP5017645B2
JP5017645B2 JP2006286073A JP2006286073A JP5017645B2 JP 5017645 B2 JP5017645 B2 JP 5017645B2 JP 2006286073 A JP2006286073 A JP 2006286073A JP 2006286073 A JP2006286073 A JP 2006286073A JP 5017645 B2 JP5017645 B2 JP 5017645B2
Authority
JP
Japan
Prior art keywords
program
public key
coefficient vector
coefficient
lattice
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006286073A
Other languages
English (en)
Other versions
JP2007329889A (ja
Inventor
充 多田
林  俊一
Original Assignee
国立大学法人 千葉大学
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 国立大学法人 千葉大学 filed Critical 国立大学法人 千葉大学
Priority to JP2006286073A priority Critical patent/JP5017645B2/ja
Publication of JP2007329889A publication Critical patent/JP2007329889A/ja
Application granted granted Critical
Publication of JP5017645B2 publication Critical patent/JP5017645B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Description

本発明は、公開鍵認証プログラム及び電子署名プログラムに関する。
近年、社会の情報化が進むにつれて、様々な機能を電子化する試みが行われている。特に、電子投票、電子契約や電子現金などの実現が試みられているが、これらのために公開鍵暗号方式、公開鍵認証方式、電子署名方式など(これらを「公開鍵暗号系」と総称する)が基盤技術として非常に重要な役割を果たしている。
公開鍵暗号系では公開鍵と秘密鍵という2つの異なる、しかし互いに数学的な関係を有する鍵の組を用いる。ここで、公開鍵はネットワーク上で公開されるので、公開鍵から秘密鍵を計算することが困難となるような数学的関係を利用しなければならない。通常は、数学的な関係として片方向の計算は容易であるが、逆方向の計算は困難であるという計算問題を用いる。
逆方向の計算が困難な問題として、現在は素因数分解問題や離散対数問題などが用いられている。しかし、これらの問題については、解の計算が困難であるという予測はされているが、そのような証明は与えられていない。また、量子計算機が実用化されるとこれらの問題は効率的に解くことができることが知られている。そのため、量子計算機を用いても効率的に解くことができないような問題を用いる必要がある。このような問題の候補として、NP完全と呼ばれるクラスに属する問題がある。
NP完全問題の中でも近年盛んに研究がなされている問題として、格子を利用した問題(格子問題)がある。ここで、「格子」とはb,b,…,bをm次元整数ベクトル空間に属するn本の線形独立なベクトルとしたときに、これらの整数一次結合によって構成される空間であり、ベクトルb,b,…,bを格子基底と呼び行列形式でBと略記する。また、格子ベクトルbをb=x+x+…+xのようにb,b,…,bの一次結合として表わしたとき、それぞれの係数xをベクトル形式(x,x,…,x)で表わし、それを係数ベクトルと呼ぶことにする。格子問題の中でも特に重要な問題として最短ベクトル問題や最近接ベクトル問題が挙げられる。また、それらの問題の近似解を考える問題として近似最短ベクトル問題や近似最近接ベクトル問題がある。
公開鍵認証方式とは、身元を検証するプログラムV(検証者Vとも呼ぶ)が身元を証明しようとするプログラムP(証明者Pとも呼ぶ)を認証する技術である。証明者Pは自身の秘密鍵を保持し、自身の公開鍵を外部に公開する。検証者Vは公開されている証明者Pの公開鍵を保持している。証明者Pは自身の秘密鍵を用いて自身の身元を証明することができるが、偽者の証明者P(攻撃者と呼ばれる)は証明者Pの秘密鍵を保持しておらず、また、証明者Pの公開鍵から証明者Pの秘密鍵を計算することは困難であるため、自身を証明者Pであると偽ることはできない。また、認証段階において検証者Vに証明者Pの秘密鍵が漏れることもないので、認証の後に検証者Vは自身が証明者Pであると偽ることもできない。
公開鍵認証方式としては現在までに様々な技術が提案されている。しかし、それらの技術は、量子計算機に対して安全ではない、攻撃者の成りすましを防ぐために認証方式を複数回繰り返さなければならないなどの問題点が存在する。そのため、量子計算機に対しても安全で、認証方式を繰り返す必要がない公開鍵認証方式を構成する必要がある。
従来の公開鍵認証方式に関する技術として、例えば下記非特許文献1には、Schnorr公開鍵認証方式が記載されている。
ここで、Schnorr公開鍵認証方式について説明する。この公開鍵認証方式は離散対数問題の難しさに基づいて構成される。パラメータ生成者は2つの素数pとq(qはp−1を割り切る)、pを法とする乗法群(Z/pZ)における位数qの生成元gを選択し、p、q、gを公開パラメータとする。まず、公開鍵と秘密鍵を作成するために証明者は整数sを区間[1,q−1]から選択し、値vをg−s(mod p)として計算する。このとき、証明者の公開鍵はv、秘密鍵はsとなる。認証を行う際には、証明者はまず乱数xを区間[1,q−1]からランダムに選択し、値tをg(mod p)として計算し、値tを検証者に送信する。値tを受け取った後、検証者は値eを区間[0,E−1]からランダムに選択し(Eはある程度大きい正整数)、値eを証明者に送信する。値eを受け取った後、証明者は値yをx+se(mod q)として計算し、値yを検証者に送信する。検証者は証明者から受け取った値yに対して、g(mod p)が値tと一致するかどうか調べる。値が一致したならば、検証者は証明者を正当であると認識し、値が一致しなければ、検証者は証明者を拒否する。
また電子署名方式とは、メッセージm(電子ファイル等)に対し、電子的に署名を作成する技術をいう。署名者Sは自身の秘密鍵を保持する一方、自身の公開鍵を外部に公開する。検証者Vは公開されている署名者Sの公開鍵を保持している。署名者Sは自身の秘密鍵を用いてメッセージmの電子署名を作成することができるが、偽者の署名者Sは署名者Sの秘密鍵を保持しておらず、また、署名者Sの公開鍵から署名者Sの秘密鍵を計算することは困難であるため、メッセージmの署名者Sによる電子署名を作成することはできない。
電子署名方式としては現在までに様々な技術が提案されている。しかし、それらの技術は、量子計算機に対して安全ではない、認証方式を複数回並列合成しなければならないなどの問題点が存在する。そのため、量子計算機に対して安全であり、認証方式の並列合成を必要としない電子署名方式を構成する必要がある。
従来の電子署名方式に関する技術として、例えば下記非特許文献1には、Schnorr電子署名方式も記載されている。
ここで、Schnorr電子署名方式について説明する。この電子署名方式は離散対数問題の難しさに基づいて構成される。パラメータ生成者は2つの素数pとq(qはp−1を割り切る)、pを法とする乗法群(Z/pZ)における位数qの生成元gを選択し、p、q、gを公開パラメータとする。まず、公開鍵と秘密鍵を作成するために署名者は整数sを区間[1,q−1]から選択し、値vをg−s(mod p)として計算する。このとき、署名者の公開鍵はv、秘密鍵はsとなる。署名を作成する際には、署名者はまず乱数xを区間[1,q−1]からランダムに選択し、値tをg(mod p)として計算する。そして、署名を作成するメッセージmと値tに基づいてハッシュ値eを計算する。そして、署名者は値yをx+se(mod q)として計算し、メッセージm、ハッシュ値e、値yを検証者に送信する。検証者は署名者から受け取ったハッシュ値eと値yを利用し、g(mod p)を計算する。そして、メッセージmと値g(mod p)に基づくハッシュ値がeと一致するかどうかを調べる。値が一致したならば、検証者は署名を正当であると認識し、値が一致しなければ、署名を不正であるとみなす。
C.P.Schnorr,"Efficient identification and signatures for smart cards," Proceedings of CRYPTO ‘89,LNCS 435,Springer−Verlag,1990.
しかしながら、上記非特許文献1に記載の技術では認証方式の繰り返しは必要としていないが、量子計算機に対して安全ではないという点において課題を有している。
また、上記非特許文献1に記載の技術では、認証方式の並列合成は必要としていないが、量子計算機に対して安全でないという点において課題を有している。
そこで、本発明は、上記課題を解決し、量子計算機に対して安全であり、認証方式の繰り返しが必要ない公開鍵認証プログラム、更には、量子計算機に対して安全であり、認証方式の並列合成を必要としない電子署名プログラムを提供することを目的とする。
本発明者らは、上記課題について鋭意検討を行ったところ、格子を利用した新たな問題であるNonnegative Exact Length Vector Problem(NELVP)を定義し、そのNP完全性を証明し、NELVPの困難性に基づく公開鍵認証方式を構成した。NELVPとは入力として非負整数を成分に持つ格子基底Bと格子ベクトルのlノルムKが与えられたときに、格子基底Bが張る格子においてlノルムKをもち、かつ、係数ベクトルが非負整数を成分に持つベクトルであるような格子ベクトルを計算する問題である。そして、NELVPはNP完全であることが証明される。特に、係数ベクトルをバイナリベクトルに制限した場合でもNP完全であることが証明される。我々の認証方式では、Schnorr公開鍵認証方式と同様に、検証者の返す値eの範囲の上限を十分に大きな値とすることで、成りすましの成功確率を小さく抑えることができ、繰り返しは不要である。また、同様の理由により、我々の電子署名方式は認証方式の並列合成を必要としない。
即ち、本発明に係る公開鍵認証プログラムは、量子計算機に対して安全であり、認証方式の繰り返しを必要としない。
また、本発明に係る電子署名プログラムは、量子計算機に対して安全であり、認証方式の並列合成を必要としない。
より具体的に説明すると、NELVPに基づく公開鍵認証プログラムは、コンピュータに、鍵生成プログラムの乱数生成部により作成される乱数を用いてm行n列(m,nは0より大きい整数)の格子基底Bを生成する鍵生成プログラムの格子基底生成部と、鍵生成プログラムの乱数生成部により作成される乱数を用いて2つのn列の係数ベクトルw,wを生成する鍵生成プログラムの係数ベクトル生成部と、鍵生成プログラムの格子基底生成部が生成した格子基底B、及び、格子基底Bと鍵生成プログラムの係数ベクトル生成部が生成した係数ベクトルw,wとに基づいて得られるlノルムK,Kの3つ組を公開鍵として記録媒体に格納させる鍵生成プログラムの公開鍵生成部と、鍵生成プログラムの係数ベクトル生成部が生成した係数ベクトルw,w、及び、鍵生成プログラムの乱数生成部により作成される1又は2を値とする乱数iを用いて決定される係数ベクトルwを秘密鍵として記録媒体に格納させる鍵生成プログラムの秘密鍵生成部と、証明者プログラムの乱数生成部により作成される乱数を用いて生成されるn列の係数ベクトルr、及び、格子基底Bとに基づいて得られるlノルムxを作成する証明者プログラムの演算部1と、検証者プログラムの乱数生成部により作成される乱数を用いて正整数eを作成する検証者の演算部と、証明者プログラムの演算部1が生成した係数ベクトルr、検証者プログラムの演算部が生成した正整数e、鍵生成プログラムの秘密鍵生成部が作成した秘密鍵w、及び、鍵生成プログラムの公開鍵生成部が作成したlノルムK3−iとに基づいて得られるn列の係数ベクトルyを作成する証明者プログラムの演算部2と、証明者プログラムの演算部2が作成した係数ベクトルy、及び、鍵生成プログラムの公開鍵生成部が作成した公開鍵とに基づいて係数ベクトルyの正当性を確認する検証者プログラムの検証部と、検証者プログラムと通信するための証明者プログラムの通信部と、証明者プログラムと通信するための検証者プログラムの通信部と、して機能させる。
また、NELVPに基づく公開鍵認証プログラムにおいて、係数ベクトルw,wは、0又は1を成分とするバイナリベクトルであることも望ましく、格子基底Bにより得られる基底ベクトルは、互いに線形独立であることも望ましく、全ての成分が非負整数であることも望ましく、係数ベクトルrは、非負整数を成分に持つことも望ましい。
また、より具体的に、NELVPに基づく電子署名プログラムは、コンピュータに、鍵生成プログラムの乱数生成部により作成される乱数を用いてm行n列(m,nは0より大きい整数)の格子基底Bを生成する鍵生成プログラムの格子基底生成部と、鍵生成プログラムの乱数生成部により作成される乱数を用いて2つのn列の係数ベクトルw,wを生成する鍵生成プログラムの係数ベクトル生成部と、鍵生成プログラムの格子基底生成部が生成した格子基底B、及び、格子基底Bと鍵生成プログラムの係数ベクトル生成部が生成した係数ベクトルw,wとに基づいて得られるlノルムK,Kの3つ組を公開鍵として記録媒体に格納させる鍵生成プログラムの公開鍵生成部と、鍵生成プログラムの係数ベクトル生成部が生成した係数ベクトルw,w、及び、鍵生成プログラムの乱数生成部により作成される1又は2を値とする乱数iを用いて決定される係数ベクトルwを秘密鍵として記録媒体に格納させる鍵生成プログラムの秘密鍵生成部と、署名者プログラムの乱数生成部により作成される乱数を用いて生成されるn列の係数ベクトルr、及び、格子基底Bとに基づいて得られるlノルムxを作成し、署名を作成するメッセージmとlノルムxとに基づいて得られるハッシュ値eを作成する署名者プログラムの演算部1と、証明者プログラムの演算部1が生成した係数ベクトルr及びハッシュ値e、鍵生成プログラムの秘密鍵生成部が作成した秘密鍵w、及び、鍵生成プログラムの公開鍵生成部が作成したlノルムK3−iとに基づいて得られるn列の係数ベクトルyを作成する署名者プログラムの演算部2と、署名者プログラムの演算部1が作成したハッシュ値e、署名者プログラムの演算部2が作成した係数ベクトルy、及び、鍵生成プログラムの公開鍵生成部が作成した公開鍵とに基づいてメッセージmに対する署名(ハッシュ値eと係数ベクトルyの組)の正当性を確認する検証者プログラムの検証部と、検証者プログラムと通信するための証明者プログラムの通信部と、証明者プログラムと通信するための検証者プログラムの通信部と、して機能させる。
また、NELVPに基づく電子署名プログラムにおいて、係数ベクトルw,wは、0又は1を成分とするバイナリベクトルであることも望ましく、格子基底Bにより得られる基底ベクトルは、互いに線形独立であることも望ましく、全ての成分が非負整数であることも望ましく、係数ベクトルrは、非負整数を成分に持つことも望ましい。
ここで、lノルムとは、xをm次元ベクトルとするときに、xのそれぞれの成分について絶対値をとり、それらの総和をとった値である。
以上により、量子計算機に対して安全であり、認証方式の繰り返しを必要としない公開鍵認証方式を提供することができる。また、量子計算機に対して安全であり、認証方式の並列合成を必要としない電子署名方式を提供することができる。
以下、本発明の実施形態について図面を参照しつつ詳細に説明する。ただし、本発明は多くの異なる態様による実施が可能であり、本実施形態や実施例に限定されるものではない。
(実施形態1)
図1は、NELVPに基づく公開鍵認証プログラムの機能ブロックを示す図である。本公開鍵認証プログラムは例えばパーソナルコンピュータや小型端末等の情報処理装置におけるハードディスク等の記録媒体に格納され、ユーザーのニーズに応じて実行される。また本公開鍵認証プログラムのうち証明者プログラム12と検証者プログラム13は互いに通信を行うことができる状態で別々の情報処理装置の記録媒体に格納されている。なお本公開鍵認証プログラムは、鍵生成プログラム11と、証明者プログラム12と、検証者プログラム13とを有して構成されている。なお、鍵生成プログラム11は、実行されることにより乱数生成部111と、格子基底生成部112、係数ベクトル生成部113、秘密鍵生成部114、公開鍵生成部115と、として機能することができる。また証明者プログラム12は、実行されることにより乱数生成部121、第一の演算部122、第二の演算部123、通信部124と、して機能することができる。また検証者プログラム13は、実行されることにより乱数生成部131、第三の演算部132、検証部133、通信部134と、して機能することができる。なお証明者プログラム12と検証者プログラム13は、通信部124と通信部134を介して互いに通信を行うことができる。
ここで鍵生成プログラム11における処理について具体的に説明する。まず、鍵生成プログラム11は、格子基底生成部112においてn次正方行列の格子基底B(nは0より大きい整数であり、nは限定されないが、安全性の観点から例えば200以上あることが好ましい。)を作成する。なおここで格子基底Bのそれぞれの成分は乱数生成部111により選ばれる(各成分のビット長は限定されるわけではないが、安全性の観点から例えば80ビット以上あることが好ましい。)。この格子基底生成部112により作成される格子基底Bは、公開鍵生成部115が生成する公開鍵の一部となる。また、格子基底生成部112は、この作成された格子基底Bから得られる基底ベクトルが互いに線形独立であるか否かも判定する。なおここで「基底ベクトル」とは、格子基底Bをn行1列の列ベクトルに分解した場合における各列ベクトルを意味する。基底ベクトルが互いに線形独立であるか否かの判断は周知な手法により計算することができ、特段に限定されるわけではないが、格子基底Bの行列式を計算することにより確認できる。なお、本実施形態においては、計算の簡略化のため基底行列の成分はいずれも非負整数であることが極めて望ましいが、計算の困難さを伴う場合を許容するのであれば、整数でない場合も可能ではある。
一方、係数ベクトル生成部113は、n次係数ベクトルw,wを作成する。この成分は、乱数生成部111によりランダムに選択され、その値は0又は1である。なお、この係数ベクトル生成部113により作成された係数ベクトルのどちらか一方は、秘密鍵となり、秘密鍵生成部114により記憶媒体に格納される。なおここで、係数ベクトルw,wの成分は0又は1であることが鍵の長さの観点から望ましいが、鍵サイズの増加を許容できるのであれば正整数を選択することも可能である。
次に、秘密鍵生成部114は、上記作成された係数ベクトルw,wと乱数生成部111によって作成される1又は2を値としてもつ乱数iに基づいて秘密鍵wを決定し、記憶媒体に格納する。
そして、公開鍵生成部115は、上記作成された格子基底Bと係数ベクトルw,wに基づいて格子ベクトルBw,Bwを計算し、この格子ベクトルBw,BwのlノルムK,Kを計算し、記憶媒体に格納する。ここでlノルムKとは、以下の式で与えられる。
この結果、公開鍵生成部115は、格子基底B及び求めたlノルムK,Kの組を公開鍵(B,K,K)として記憶装置に格納する。これにより、本鍵生成プログラムは秘密鍵及び公開鍵を生成することができる。
次に、証明者プログラム12における処理について具体的に説明する。まず証明者プログラム12は第一の演算部122においてn列の係数ベクトルrを作成し、格子ベクトルBrを計算し、この格子ベクトルBrのlノルムxを計算し、通信部124によって検証者プログラム13に送信する。なおここで係数ベクトルrのそれぞれの成分は0以上Rより小さい整数(Rは例えば250ビット程度を有する正整数)として乱数生成部111により選ばれる。
第二の演算部123においては、検証者プログラム13から正整数eが送られてきた後に、上記作成された係数ベクトルr、秘密鍵w、lノルムK3−iと、検証者プログラム13から送られてくる正整数eに基づいて係数ベクトルyを計算し、通信部124によって検証者プログラム13にyを送信する。ここでyはr+eK3−iとして計算される。
次に、検証者プログラム13における処理を具体的に説明する。まず検証者プログラム13は証明者プログラム12からxが送られてきた後に、演算部132において正整数eを作成し、この正整数eを通信部134を介して証明者プログラム12に送信する。なおここで正整数eは0以上Eより小さい整数(Eは正整数であり、Eは限定されるわけではないが例えば80ビット以上有することの好ましい。)として乱数生成部131により選ばれる。
検証部133では、証明者プログラム12から係数ベクトルyを受信した後に、上記作成された公開鍵(B,K,K)、証明者プログラム12から受信したlノルムx、検証者プログラムの演算部132が作成した正整数eに基づいて係数ベクトルyの正当性を検証する。具体的には、係数ベクトルyの各成分が(E−1)max{K,K}以上、R+(E−1)max{K,K}より小さいかを確認する。ここで、max{K,K}はKとKの大きいほうを表す。更に、格子ベクトルByを計算し、その格子ベクトルByのlノルムを計算し、そのlノルムと値x+eKが等しくなるときのみ、検証者プログラム13は係数ベクトルyを正当であると認識する。
これにより、本証明者プログラム12と検証者プログラム13は、それぞれの役割を実行し、お互いに通信することにより、検証者プログラム13による証明者プログラム12の認証を行うことができる。
次に、上記の公開鍵認証方式の安全性について説明する。上記の公開鍵認証方式が安全であることを示すためには、上記の公開鍵認証方式が完全性、健全性、証拠秘匿性という性質を有していることを示さなければならない。ここで「完全性」とは、秘密鍵を保持する証明者が対応する公開鍵を持つ検証者と認証を行った場合、証明者は圧倒的に高い確率で正当であると認識されるという性質である。また、「健全性」とは秘密鍵を保持していない攻撃者が検証者と認証を行った場合、攻撃者は高い確率で拒否されるという性質である。また、「証拠秘匿性」とは秘密鍵を保持している証明者が検証者と認証を行った後に、検証者は証明者の公開鍵に対応する任意の秘密鍵を計算することができないという性質である。以上の性質を示すことにより、本公開鍵認証方式において成りすまし攻撃、及び、検証者による証明者の秘密鍵の奪取が不可能であることが示される。
まず、完全性については、係数ベクトルrの取り得る範囲を決定する定数であるR、及び、正整数eの取り得る範囲を決定する定数であるEを適切に定めることにより、秘密鍵を保持する証明者が検証者に正当であると認識される確率を圧倒的に高くすることができる。
次に、健全性について説明する。健全性を示すためには、時間t、確率εで成りすましに成功する秘密鍵を保持していない攻撃者の存在を仮定し、そのような攻撃者が存在するならば、時間t、確率εでNELVPのインスタンス(B,K)の解wを計算することができることを示せばよい。上記の命題の対偶をとると、時間t、確率εでNELVPの解を計算することが不可能ならば、時間t、確率εで成りすましに成功する攻撃者は存在しないということになり、従って、NELVPの解を計算することは困難であるという仮定より、成りすましに成功する攻撃者は存在しないということが示される。ここで、εとε、tとtには次式のような関係がある。
ここで、Φは検証に要する時間、ΦはNELVPの解の計算時間、f(k)はセキュリティパラメータがkであるときに、空間[0,R+(E−1)max{K,K}]に属するNELVPの解の個数の上限を表す関数である。
f(k)は格子基底B、R+(E−1)max{K,K}、kに依存する関数である。この関数がkについての多項式関数になるような格子基底Bを選べば、εは無視できない関数となる。また、攻撃者はyを出力する際に、検証式を満たすyの集合からランダムに出力するという仮定も必要である。
次に、証拠秘匿性について説明する。証拠秘匿性を示すためには、我々の公開鍵認証方式が証拠識別不可能性という性質を保持していることを示せばよい。ここで、「証拠識別不可能性」とは、証明者が1つの公開鍵に対応する2つの異なる秘密鍵を用いてそれぞれ認証を行ったとき、対応する公開鍵を持つ検証者はどちらの秘密鍵を用いて認証を行ったかを識別できないという性質である。
証拠識別不可能性は認証を実行後に検証者が知ることができる情報である係数ベクトルr、正整数e、係数ベクトルyからどの秘密鍵を用いたかに関する情報を得ることができないことを示せばよい。つまり、異なる秘密鍵を用いても認証を実行後に検証者が知ることができる情報である係数ベクトルr、正整数e、係数ベクトルyの出現確率にほとんど差異がないことを示せばよい。証明者プログラムと検証者プログラムから明らかなように、証明者がどの秘密鍵を用いたとしても係数ベクトルr、正整数eの出現確率に関して差はない。係数ベクトルyに関しても、異なる秘密鍵を用いた場合の出現確率の差は、係数ベクトルrの取り得る範囲を決定する定数であるR、及び、正整数eの取り得る範囲を決定する定数であるEを適切に定めることにより、非常に小さくすることができる。従って、検証者が知ることができる情報である係数ベクトルr、正整数e、係数ベクトルyの出現確率にはほとんど差が出ないことが証明される。それゆえ、我々の公開鍵認証方式は証拠識別不可能性を有することが示される。
このように、我々の公開鍵認証方式には、完全性、健全性、証拠秘匿性が成立し、従って安全であることが示される。
以上、本実施形態に係る公開鍵認証プログラムにより、量子計算機に対して安全であり、認証方式の繰り返しを必要としない公開鍵認証プログラムを提供することができる。
(実施形態2)
図2は、NELVPに基づく電子署名プログラムの機能ブロックを示す図である。本電子署名プログラムは、例えばパーソナルコンピュータや小型端末等の情報処理装置におけるハードディスク等の記録媒体に格納され、ユーザーのニーズに応じて実行される。また本電子署名プログラムのうち署名者プログラム22と検証者プログラム23は通信を行うことができる状態で別々の情報処理装置の記録媒体に格納されている。なお本電子署名プログラムは、鍵生成プログラム21と、署名者プログラム22と、検証者プログラム23とを有して構成されている。なお鍵生成プログラム21は、実行されることにより乱数生成部211と、格子基底生成部212と、係数ベクトル生成部213と、秘密鍵生成部214と、公開鍵生成部215と、して機能することができる。また署名者プログラム22は、実行されることにより乱数生成部221と、第一の演算部222と、第二の演算部223と、通信部224と、して機能することができる。また検証者プログラム23は、実行されることにより検証部231と、通信部132と、して機能することができる。なお証明者プログラム22と検証者プログラム23は、通信部224と通信部232を介して通信を行うことができる。
ここで鍵生成プログラム21における処理については前記実施形態1における鍵生成プログラム11の処理と同様であるため、説明は省略する。
次に、証明者プログラム22における処理について具体的に説明する。まず証明者プログラム22は第一の演算部222においてn列の係数ベクトルrを作成し、格子ベクトルBrを計算し、この格子ベクトルBrのlノルムxを計算する。なおここで係数ベクトルrのそれぞれの成分は0以上Rより小さい整数(Rは例えば250ビット程度を有する正整数)として乱数生成部211により選ばれる。そして、署名を作成するメッセージmとlノルムxに基づいてハッシュ値eを計算する。ここで、ハッシュ関数は例えばSHA1などを用いることができる。
第二の演算部223においては、上記作成された係数ベクトルr、及び、ハッシュ値e、秘密鍵w、lノルムK3−iに基づいて係数ベクトルyを計算し、通信部224によって検証者プログラム23にメッセージm、署名(e、y)を送信する。ここでyはr+eK3−iとして計算される。
次に、検証者プログラム23における処理を具体的に説明する。検証部231では、証明者プログラム22からメッセージmと署名(e、y)を受信した後に、上記作成された公開鍵(B,K,K)に基づいてメッセージmに対する署名(e、y)の正当性を検証する。具体的には、係数ベクトルyの各成分が(E−1)max{K,K}以上、R+(E−1)max{K,K}より小さいかを確認する。ここで、max{K,K}はKとKの大きいほうを表す。更に、格子ベクトルByを計算し、その格子ベクトルByのlノルムtを計算し、値t−eKを計算し、メッセージmと値t−eKに基づいて得られるハッシュ値がeと等しくなるときのみ、検証者プログラム23はメッセージmに対する署名(e、y)を正当であると認識する。
これにより、本署名者プログラム22と検証者プログラム23は、それぞれの役割を実行し、お互いに通信することにより、検証者プログラム23による署名者プログラム22が生成する電子署名の正当性確認を行うことができる。
次に、上記の電子署名方式の安全性について説明をする。上記の電子署名方式は、上記の公開鍵認証方式の安全性を証明する際に必要とする仮定及び上記の電子署名方式で用いるハッシュ関数が無相関一方向性ハッシュ関数(T.Okamoto,Crypto‘92)であることを仮定することにより、選択文書攻撃に対して存在的偽造不可であることが示される。ここで、選択文書攻撃とは署名偽造者が適応的に選んだ任意の文書に対して真の署名者に署名を作成させ、最後にそれまでに得られた情報を用いて今までに署名者に署名を作成させたメッセージとは異なるメッセージの署名を偽造する攻撃である。存在的偽造不可であるとはどのような文書に対しても署名の偽造ができないことである。
以上、本実施形態に係る電子署名プログラムにより、量子計算機に対して安全であり、認証方式の並列合成を必要としない電子署名プログラムを提供することができる。
実施形態1に係る公開鍵認証プログラムの機能ブロックを示す図である。 実施形態2に係る電子署名プログラムの機能ブロックを示す図である。
符号の説明
1…公開鍵認証プログラム、2…電子署名プログラム、11、21…鍵生成プログラム、12,22…証明者プログラム、13、23…検証者プログラム、111、211…乱数生成部、112、212…格子基底生成部、113、213…係数ベクトル生成部、114、214…秘密鍵生成部、115、215…公開鍵生成部、121、221…乱数生成部、122、222…第一の演算部、123、223…第二の演算部、124、134、224、232…通信部、131…乱数生成部、132…第三の演算部、133、231…検証部

Claims (12)

  1. コンピュータに、
    m行n列(m,nは0より大きい整数)の格子基底Bを生成する格子基底生成部と、
    n列の第一及び第二の係数ベクトルw,wを生成する係数ベクトル生成部と、
    前記格子基底B及び前記第一及び第二の係数ベクトルw,wに基づきlノルムK,Kを生成し、前記格子基底B及びlノルムK,Kを公開鍵として記録する公開鍵生成部と、
    前記第一及び第二の係数ベクトルw,wの一方を秘密鍵として記録する秘密鍵生成部と、して機能させるための鍵作成プログラムと、
    コンピュータに、
    n列の第三の係数ベクトルrを生成し、前記係数ベクトルrと前記格子基底Bとに基づいてl ノルムxを作成する第一の演算部と、
    正整数eの入力を受け付け、前記第三の係数ベクトルr、前記正整数e、前記秘密鍵、前記第一及び第二の係数ベクトルのうち秘密鍵ではない係数ベクトルと前記格子基底Bにより得られるl ノルムに基づいてn列の第四の係数ベクトルyを作成する第二の演算部と、して機能させるための証明者プログラムと、を有する公開鍵認証プログラム。
  2. コンピュータに、
    正整数eを作成する第三の演算部と、
    前記係数ベクトルy及び前記公開鍵に基づいて前記係数ベクトルyの正当性を確認する検証部と、して機能させるための検証者プログラムと、を有する請求項1記載の公開鍵認証プログラム。
  3. 前記第一及び第二の係数ベクトルw,wは、0又は1を成分とするバイナリベクトルであることを特徴とする請求項1記載の公開鍵認証プログラム。
  4. 前記格子基底Bにより得られる基底ベクトルは、非負整数を成分とすることを特徴とする請求項1記載の公開鍵認証プログラム。
  5. 前記格子基底Bにより得られる基底ベクトルは、互いに線形独立であることを特徴とする請求項1記載の公開鍵認証プログラム。
  6. 前記第三の係数ベクトルrは、非負整数を成分とすることを特徴とする請求項1記載の公開鍵認証プログラム。
  7. コンピュータに、
    m行n列(m,nは0より大きい整数)の格子基底Bを生成する格子基底生成部と、
    n列の第一及び第二の係数ベクトルw,wを生成する係数ベクトル生成部と、
    前記格子基底B及び前記第一及び第二の係数ベクトルw,wに基づきlノルムK,Kを生成し、前記格子基底B及びlノルムK,Kを公開鍵として記録する公開鍵生成部と、
    前記第一及び第二の係数ベクトルw,wの一方を秘密鍵として記録する秘密鍵生成部と、して機能させるための鍵生成プログラムと、
    コンピュータに、
    n列の第三の係数ベクトルrを生成し、前記係数ベクトルrと前記格子基底Bとに基づいてl ノルムxを作成し、メッセージmと前記l ノルムxに基づいてハッシュ値eを作成する第一の演算部と、
    前記第三の係数ベクトルr、前記ハッシュ値e、前記秘密鍵、前記第一及び第二の係数ベクトルのうち秘密鍵ではない係数ベクトルと前記格子基底Bにより得られるl ノルムに基づいてn列の第四の係数ベクトルyを作成する第二の演算部と、して機能させるための署名者プログラムと、して機能させるための署名者プログラムと、を有する電子署名プログラム。
  8. コンピュータに、
    前記メッセージm、前記ハッシュ値e、前記係数ベクトルy及び前記公開鍵に基づいて、前記メッセージmに対する前記ハッシュ値e及び前記係数ベクトルyの正当性を確認する検証部と、して機能させるための検証者プログラムと、を有する請求項7記載の電子署名プログラム。
  9. 前記第一及び第二の係数ベクトルw,wは、0又は1を成分とするバイナリベクトルであることを特徴とする請求項7記載の電子署名プログラム。
  10. 前記格子基底Bにより得られる基底ベクトルは、非負整数を成分とすることを特徴とする請求項7記載の電子署名プログラム。
  11. 前記格子基底Bにより得られる基底ベクトルは、互いに線形独立であることを特徴とする請求項7記載の電子署名プログラム。
  12. 前記第三の係数ベクトルrは、非負整数を成分とすることを特徴とする請求項7記載の電子署名プログラム。
JP2006286073A 2006-05-11 2006-10-20 公開鍵認証プログラム及び電子署名プログラム Active JP5017645B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006286073A JP5017645B2 (ja) 2006-05-11 2006-10-20 公開鍵認証プログラム及び電子署名プログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006133145 2006-05-11
JP2006133145 2006-05-11
JP2006286073A JP5017645B2 (ja) 2006-05-11 2006-10-20 公開鍵認証プログラム及び電子署名プログラム

Publications (2)

Publication Number Publication Date
JP2007329889A JP2007329889A (ja) 2007-12-20
JP5017645B2 true JP5017645B2 (ja) 2012-09-05

Family

ID=38930031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006286073A Active JP5017645B2 (ja) 2006-05-11 2006-10-20 公開鍵認証プログラム及び電子署名プログラム

Country Status (1)

Country Link
JP (1) JP5017645B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4901364B2 (ja) * 2006-08-14 2012-03-21 日本電信電話株式会社 再認証不可能な量子電子署名システムの処理方法及びその検証者装置
JP5651631B2 (ja) * 2012-03-23 2015-01-14 日本電信電話株式会社 鍵交換システム、鍵交換方法、要求装置、応答装置、およびプログラム

Also Published As

Publication number Publication date
JP2007329889A (ja) 2007-12-20

Similar Documents

Publication Publication Date Title
US9998445B2 (en) Authentication system
Yang et al. Fuzzy identity based signature with applications to biometric authentication
Brickell et al. Direct anonymous attestation
JP5907830B2 (ja) 署名生成検証システム及び署名検証装置
EP3681093B1 (en) Secure implicit certificate chaining
US10110386B2 (en) Implicitly certified digital signatures
CN102263638B (zh) 认证设备、认证方法和签名生成设备
US8452975B2 (en) Signature and verification method, signature generation device, and signature verification device
Chang et al. Remarks on fingerprint-based remote user authentication scheme using smart cards
CN101984576A (zh) 一种基于加密人脸的匿名身份认证方法和系统
Pan et al. An enhanced secure smart card-based password authentication scheme.
Lone et al. Demystifying cryptography behind blockchains and a vision for post-quantum blockchains
Hossain et al. ICAS: Two-factor identity-concealed authentication scheme for remote-servers
Shankar et al. Improved Multisignature Scheme for Authenticity of Digital Document in Digital Forensics Using Edward‐Curve Digital Signature Algorithm
CN112800482B (zh) 基于身份的在线/离线安全云存储审计方法
Huszti et al. A simple authentication scheme for clouds
JP5017645B2 (ja) 公開鍵認証プログラム及び電子署名プログラム
Byun A generic multifactor authenticated key exchange with physical unclonable function
Hamian et al. Blockchain-based User Re-enrollment for Biometric Authentication Systems
Kaur et al. Fortification of transport layer security protocol by using password and fingerprint as identity authentication parameters
Aljeaid et al. Biometric identity-based cryptography for e-Government environment
Gódor et al. Elliptic curve cryptography based mutual authentication protocol for low computational complexity environment
JP2007151073A (ja) 鍵生成プログラム
Hou et al. A Triple Unlocking Mechanism Model Against Forging Signature Attack Based on Multivariate Polynomial Public Key Cryptosystem
JP4653504B2 (ja) グループ署名生成システム、装置、プログラム及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120306

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150