JPWO2006077820A1 - 署名生成装置、鍵生成装置及び署名生成方法 - Google Patents

署名生成装置、鍵生成装置及び署名生成方法 Download PDF

Info

Publication number
JPWO2006077820A1
JPWO2006077820A1 JP2006552394A JP2006552394A JPWO2006077820A1 JP WO2006077820 A1 JPWO2006077820 A1 JP WO2006077820A1 JP 2006552394 A JP2006552394 A JP 2006552394A JP 2006552394 A JP2006552394 A JP 2006552394A JP WO2006077820 A1 JPWO2006077820 A1 JP WO2006077820A1
Authority
JP
Japan
Prior art keywords
signature
key
secret
generation
secret key
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.)
Granted
Application number
JP2006552394A
Other languages
English (en)
Other versions
JP4544538B2 (ja
Inventor
布田 裕一
裕一 布田
真吾 長谷川
真吾 長谷川
秀司 磯辺
秀司 磯辺
大森 基司
基司 大森
啓樹 静谷
啓樹 静谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2006077820A1 publication Critical patent/JPWO2006077820A1/ja
Application granted granted Critical
Publication of JP4544538B2 publication Critical patent/JP4544538B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

署名データに対するTranscript attackを防ぐことのできる署名生成装置を提供する。 メッセージデータに対する署名データを生成する署名生成装置は、1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得し、取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する。

Description

本発明は、情報セキュリティ技術としての暗号技術に関し、特に、ディジタル署名の技術に関する。
受信装置から送信装置へデータを送信する際の送信者の特定及びデータの改ざんを防止するための技術として、公開鍵暗号の一種であるディジタル署名方式がある。これを簡単に説明すると、送信装置が、送信したいデータに対し、送信装置の秘密鍵を用いて署名データを作成し、送信したいデータと共に署名データを受信装置へ送信し、受信装置は、送信装置の秘密鍵に対応する公開鍵を用いて署名データを検証し、改ざんされているか否かを判定する方法である(例えば、非特許文献1参照)。ここで、公開鍵から秘密鍵の値は計算困難である。
最近、高速処理が可能な公開鍵暗号として、NTRU暗号が提案されている(例えば、非特許文献2参照)。このNTRU暗号は、ある法の下でべき乗剰余演算を行うRSA暗号や楕円曲線上の点のスカラ倍演算を行う楕円曲線暗号に比べ、高速に演算可能な多項式演算により暗号化と復号化を行うので、従来の公開鍵暗号よりも高速に処理することが可能で、ソフトウェアの処理でも実用的な時間で処理可能である。
従って、公開鍵暗号にNTRU暗号を用いた暗号通信システムでは、従来の公開鍵暗号を用いた暗号通信システムよりも、送信装置及び受信装置の処理が高速に行えるという利点がある。
上記で提案された方式は、データを暗号化する守秘暗号方式であったが、その後、NTRU暗号のディジタル署名方式が提案されている(非特許文献3参照)。ディジタル署名方式については解読法の出現などで、方式が幾度か変更された。以下では、NTRUSignと呼ばれるディジタル署名方式について簡単に説明する(詳細については、特許文献2及び非特許文献4参照)。
NTRUSign署名方式の鍵生成において、多項式X^N−1を法とし、整数係数を有する多項式の環Rに属する複数の元と、環Rのイデアルとを用いることにより、秘密鍵及び公開鍵が生成される。ここで、「X^a」はXのa乗を意味することとする。NTRUSign署名方式におけるメッセージに対する署名では、生成した秘密鍵と、メッセージのハッシュ値である2・N次元のベクトルとが用いられる。NTRUSign署名方式における署名検証では、公開鍵と、メッセージに対する署名と、メッセージのハッシュ値である2・N次元のベクトルとが用いられる。なお、非特許文献4及び非特許文献5に、NTRUSign署名方式にて用いられる環及び環のイデアルについて記載がなされているので、ここでの説明は省略する。
<NTRUSign署名方式>
(1)NTRUSign署名方式のパラメータ
NTRUSign署名方式は、非負整数のパラメータ、N,q,df,dg,Normboundを用いる。以下に、これらのパラメータの意味を説明する。
(1−1)パラメータN
NTRUSign署名方式は、多項式の演算により署名生成及び署名検証を行うディジタル署名方式である。NTRUSign署名方式で扱う多項式の次数は、上記パラメータNにより決まる。
NTRUSign署名方式で扱う多項式は、上記パラメータNに対し、N−1次以下の整数係数多項式であり、例えばN=5のとき、X^4+X^3+1等の多項式である。なお、多項式に対しては、(mod X^N−1)演算を施し、常に、N−1次以下からなる整数係数多項式を算出する。なぜなら、(mod X^N−1)演算を施すことにより、X^N=1という関係式が成り立つため、N次以上の変数に対しては、常にN−1次以下の変数へと変換することができるからである。ここで、多項式に対して、(mod X^N−1)演算を施すことにより得られる整数係数多項式は、多項式環Rの元となることがわかる。
また、公開鍵h、署名sはいずれも、N−1次以下の多項式として表現される。また、秘密鍵は4つのN−1次以下の多項式対(f,g,F,G)である。すなわち、f,g,F,GはいずれもN−1次以下の多項式であり、多項式環Rの元である。なお、以下では、4つ組(f,g,F,G)を2つの対(f,g),(F,G)のさらなる対と捉えて、{(f,g),(F,G)}と表記する場合もある。
そして、多項式演算は、上記パラメータNに対し、X^N=1という関係式を用いて、演算結果が常にN−1次以下の多項式になるように演算される。例えば、N=5の場合、多項式X^4+X^2+1と多項式X^3+Xの積は、多項式と多項式の積を×、整数と多項式の積(あるいは整数と整数の積)を・とすると、X^5=1という関係から、
(X^4+X^2+1)×(X^3+X)
=X^7+2・X^5+2・X^3+X
=X^2・1+2・1+2・X^3+X
=2・X^3+X^2+X+2
というように、常にN−1次以下の多項式になるように演算される。
なお、NTRUSign署名方式では、N−1次の多項式a=a_0+a_1・X+a_2・X^2+…+a_(N−1)・X^(N−1)はベクトル(a_0,a_1,a_2,…,a_(N−1))と同一視する。a_0,a_1,a_2,…,a_(N−1)は多項式aの係数であり、整数である。
(1−2)パラメータq
NTRUSign署名方式では、2以上の整数であり、多項式環Rのイデアルであるパラメータqを用いる。NTRUSign署名方式で出現する多項式の係数は、qを法とした剰余を取る。
(1−3)パラメータdf,dg
NTRUSign署名方式で扱う秘密鍵の一部である多項式f及び、公開鍵である多項式hを生成するときに多項式fと共に用いる多項式gの選び方は、それぞれパラメータdf,dgにより決まる。
まず、多項式fは、df個の係数が1であり、かつ他の係数は0となるように選ぶ。すなわち、多項式fはN−1次以下の多項式であり、0次(定数項)からN−1次まで、N個の係数があるが、このN個の係数のうち、df個の係数が1であり、かつ(N−df)個の係数が0となるように選ぶ。
そして、多項式gは、dg個の係数が1であり、かつ他の係数は0となるように選ぶ。
(1−4)パラメータNormbound
NTRUSign署名方式では、後述するが署名sから作られる2・N次元のベクトルとメッセージのハッシュ値である2・N次元のベクトルの距離を計算し、この距離により正しい署名であるかを判定する。Normboundは、この判定の際に使用するしきい値である。すなわち、上記距離がNormbound未満であれば、正しい署名として受理し、Normbound以上であれば、正しくない署名とし拒否する。
非特許文献4には、NTRUSign署名方式のパラメータの例として、(N,q,df,dg,Normbound)=(251,128,73,71,310)の例が挙げられている。
(2)メッセージのハッシュ値、ノルム及びベクトル間の距離
NTRUSign署名方式では、メッセージmのハッシュ値に対する署名を作成する。メッセージmのハッシュ値は、N次の多項式の対(m1,m2)であり、2・N次元のベクトルと同一視される。メッセージからハッシュ値を求めるハッシュ関数については、非特許文献1が詳しい。
NTRUSign署名方式では、署名検証にベクトルの距離を用いる。以下でその定義を示す。
多項式a=a_0+a_1・X+a_2・X^2+…+a_(N−1)・X^(N−1)のノルム||a||を以下のように定義する。
||a||=sqrt((a_0−μ)^2+(a_1−μ)^2+…+(a_(N−1)−μ)^2)
μ=(1/N)・(a_0+a_1+a_2+…+a_(N−1))
ここで、sqrt(x)はxの平方根を示す。
多項式a,bの対(a,b)のノルム||(a,b)||を以下のように定義する。
||(a,b)||=sqrt(||a||^2+||b||^2)
多項式a,bの対(a,b)とc,dの対(c,d)との距離は、||(c−a,d−b)||で定義される。
これにより、(mod X^N−1)演算を施すことにより得られたN−1次以下の整数係数多項式は、加算、減算、乗算、及び元の大きさを示すノルムが定義されたN次元配列とみなすことができ、多項式環Rは、N次元配列の集合とみなすことができる。
(3)NTRUSign署名方式の鍵生成
NTRUSign署名方式では、上述したように、パラメータdf,dgを用いてランダムに多項式f,多項式gを生成する。そして非特許文献4に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。ここで、多項式Fqは、多項式fの逆元と呼ばれる。さらに、以下の式を満たすようなノルムが小さい多項式F,Gを求める。
f×G−g×F=q
秘密鍵を{(f,g),(F,G)}、公開鍵をhとする。秘密鍵は、署名を生成するための鍵であり、署名生成鍵とも呼ばれる。また、公開鍵は、署名を検証するための鍵であり、署名検証鍵とも呼ばれる。
ここで、x=y(mod q)は、多項式yの第i次の係数を、剰余が0からq−1の範囲に収まるように法qで割ったときの剰余を、多項式xの第i次の係数とする演算である(0≦i≦N−1)。すなわち、多項式yの各係数を、0から(q−1)の範囲に収まるようにmod q演算した多項式を、多項式xとする演算である。
(4)NTRUSign署名方式の署名生成
NTRUSign署名方式の署名生成では、署名対象であるメッセージmの署名sを計算する。まず、メッセージmに対するハッシュ値である2・N次元のベクトル(m1,m2)(m1及びm2はN次多項式)を計算する。
この2・N次元のベクトル(m1,m2)と秘密鍵{(f,g),(F,G)}を用いて、以下の式を満たす多項式a,b,A,Bを計算する。
G×m1−F×m2=A+q×B
−g×m1+f×m2=a+q×b
ここで、A,aの係数は〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を取ったものとする。すなわち、法qで割ったときの剰余が〈q/2〉からq−1である場合は、q減算して、上記範囲に収まるよう調整する。ここで、〈x〉は、x以下の数の中で最も大きい数を示す。例えば、〈−1/2〉=−1である。
次に以下の式より、s,tを計算し、sを署名として出力する。
s=f×B+F×b(mod q)
t=g×B+G×b(mod q)
(5)NTRUSign署名方式の署名検証
NTRUSign署名方式の署名生成では、署名sが署名対象であるメッセージmの正しい署名であるかを検証する。まず、メッセージmに対するハッシュ値である2・N次元のベクトル(m1,m2)を計算する。
公開鍵hを用いて、以下の式より、多項式tを計算する。
t=s×h(mod q)
2・N次元ベクトル(s,t)と(m1,m2)の距離を求め、Normbound未満であるかをチェックする。Normbound未満であれば、署名sが正しいと判定して署名sを受理する。Normbound以上であれば、署名sが不正と判定して署名sを拒否する。
特表2000−516733号公報 国際公開番号 WO2003/050998号 岡本龍明、山本博資、「現代暗号」、産業図書(1997年) J.Hoffstein,J.Pipher,and J.H.Silverman,"NTRU:A ring based public key cryptosystem",Lecture Notes in Computer Science,1423,pp.267−288,Springer−Verlag,1998. J.Hoffstein,J.Pipher and J.Silverman,"NSS:An NTRU Lattice−Based Signature Scheme,"Advances in Cryptoplogy−Eurocrypt ’01,LNCS,Vol.2045,pp.123−137,Springer−Verlag,2001 J.Hoffstein,N.Graham,J.Pipher,J.Silverman and W.Whyte,"NTRUSign:Digital Signatures Using the NTRU Lattice,"CT−RSA’03,LNCS,Vol.2612,pp.122−140,Springer−Verlag,2003 J.Hoffstein,N.Graham,J.Pipher,J.H.Silverman,W.Whyte,"NTRUSign:Digital Signatures Using the NTRU Lattice Preliminary Draft 2−−April 2,2002",[2005年1月20日検索]、インターネット<URL:http://www.ntru.com/cryptolab/pdd/NTRUSign−preV2.pdf>
上述したNTRUSign署名方式には、Transcript attackと呼ばれる攻撃がある。Transcript attackは、複数の署名文(メッセージと署名の対)から秘密鍵を求める攻撃である。Transcript attackの詳細は、非特許文献4に記載されているので、ここでは、以下で簡単に説明する。
Transcript attackは、複数の署名sとメッセージのハッシュ値(m1,m2)の一部m1との差分m1−sが
m1−s=e1×f+e2×F
e1,e2は係数が−1/2から1/2の範囲に入る多項式
となることを利用しており、差分m1−sの2次モーメント及び4次モーメントの平均値を取ることで、秘密鍵の一部であるf,Fを求める。ここで、多項式aの2次モーメントa〜2とは、a=a_0+a_1・X+a_2・X^2+…+a_(N−2)・X^(N−2)+a_(N−1)・X^(N−1)とaの相反a*=a_0+a_(N−1)・X+a_(N−2)・X^2+…+a_2・X^(N−2)+a_1・X^(N−1)との積a〜=a×a*である。また、4次モーメントa〜4は、a〜2の2乗、すなわち、a〜4=a〜2×a〜2である。
(m1−sの2次モーメント)=(e1×f+e2×F)×(e1*×f*+e2*×F*)
=e1〜×f〜+e2〜×F〜+e1×f×e2*×F*+e2×F×e1*×f*
署名文の個数が増大すると、m1−sの2次モーメントの平均に含まれるe1〜,e2〜はある一定値k1,k2に収束し、上記の式のe1×f×e2*×F*とe2×F×e1*×f*は0に近づく。したがって、署名文の個数が大きい場合、m1−sの2次モーメントの平均は、k1×f〜+k2×F〜にほぼ等しくなる。さらに4次モーメントの平均でも、同様にf及びFに関連する情報を得られ、両方の情報からfを求めることが可能になる。非特許文献4によると、2次モーメント及び4次モーメントの平均から秘密鍵に関する情報が得られるために必要な署名文の個数はそれぞれ10^4、10^8である。したがって、NTRUSign署名方式のTranscript attackを成功させるためには、10^8個以上の署名文が必要と考えられている。
本発明は、署名データに対するTranscript attackを防ぐことのできる署名生成装置、鍵生成装置、署名システム、署名生成方法、署名検証プログラム、署名検証方法、鍵生成プログラム、署名生成用の集積回路及び鍵生成用の集積回路を提供することを目的とする。
上記目的を達成するために、本発明は、メッセージデータに対する署名データを生成する署名生成装置であって、1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備えることを特徴とする。
上記に示した構成によると、署名生成装置は、1の公開鍵に対応する複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を取得している。これにより、Transcript attackを実行する攻撃者は、署名データを入手して、Transcript attackを試みても、入手した署名データが前回署名に利用した秘密鍵、及び今回の署名に用いた秘密鍵のどちらにて署名されたかが分からないため、署名生成装置は、署名データに対するTranscript attackを防ぐことができる。
ここで、前記所定の取得方法とは、複数の秘密鍵のうちの1の秘密鍵をランダムに取得することであり、前記秘密鍵取得手段は、前記複数の秘密鍵のうちの前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵をランダムに取得するとしてもよい。
この構成によると、署名生成装置は、複数の秘密鍵から前回の署名に利用した秘密鍵とは異なる他の1の秘密鍵をランダムに取得するので、Transcript attackを実行する攻撃者は、署名データを入手して、Transcript attackを試みても、入手した署名データがどの秘密鍵にて生成されたかがわからないため、署名生成装置は、署名データに対するTranscript attackを防ぐことができる。
ここで、前記秘密鍵取得手段は、前記複数の秘密鍵を記憶しており、記憶している前記複数の秘密鍵から前記他の1の秘密鍵を、前記所定の取得方法により取得するとしてもよい。
この構成によると、署名生成装置は、記憶している複数の秘密鍵から前記他の1の秘密鍵を取得するので、前記1の公開鍵に対応する秘密鍵を確実に取得することができる。
ここで、前記署名方式は、格子を用いた署名方式であり、前記秘密鍵取得手段は、前記格子を用いた署名方式の鍵生成方法にて生成された前記複数の秘密鍵を記憶しているとしてもよい。
この構成によると、格子を用いた鍵生成及び署名生成行う署名方式は、格子の性質上、1の公開鍵に対して、複数の秘密鍵を生成することができる。これにより、署名生成装置は、1の公開鍵に対する複数の秘密鍵を記憶することができる。
ここで、前記署名方式は、NTRU署名方式であり、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqとに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成する公開鍵生成ステップと、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u)(uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップと、生成した前記複数の秘密鍵のうち1の秘密鍵を用いて、署名データを生成する署名生成ステップとを含み、前記秘密鍵取得手段が記憶している前記複数の秘密鍵は、前記秘密鍵ステップにより生成され、前記署名生成手段は、前記署名生成ステップにより前記署名データを生成するとしてもよい。
この構成によると、署名方式は、環Rとイデアルqとを用いて、公開鍵、及び前記公開鍵に対応する複数の秘密鍵を生成し、生成した複数の秘密鍵のうち1の秘密鍵を用いて署名を行うので、前記署名生成装置は、前記署名方式を用いることにより、公開鍵に対応している秘密鍵を用いて確実に署名を行うことができる。
ここで、前記署名生成装置は、前記署名方式を用いて前記公開鍵及び前記複数の秘密鍵を生成する鍵生成装置を含むとしてもよい。
この構成によると、署名生成装置は、当該装置に含まれる鍵生成装置を用いて前記公開鍵、及び前記複数の秘密鍵を生成することができる。
ここで、前記所定の取得方法とは、複数の秘密鍵のうちの1の秘密鍵をランダムに取得することであり、前記鍵取得手段は、記憶している前記複数の秘密鍵から前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵をランダムに取得するとしてもよい。
この構成によると、署名生成装置は、記憶している複数の秘密鍵から前回の署名に利用した秘密鍵とは異なる前記他の1の秘密鍵をランダムに取得するので、Transcript attackに対する防御を高めることができる。
ここで、前記所定の取得方法とは、記憶している順序に基づいて、複数の秘密鍵のうちの1の秘密鍵を取得することであり、前記鍵取得手段は、前記複数の秘密鍵を記憶している順序に基づいて、前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵を取得するとしてもよい。
この構成によると、署名生成装置は、署名データ毎に、署名に用いる秘密鍵を使い分けるので、Transcript attackに対する防御を高めることができる。
ここで、前記所定の取得方法とは、複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、前記鍵生成方法により生成して取得することであり、前記鍵取得手段は、前記1の公開鍵に対応し、前記署名方式にて生成された第1秘密鍵を記憶しており、前記第1秘密鍵を利用した後、前記鍵生成方法により前記1の公開鍵に対応する第2秘密鍵を生成し、記憶している前記第1秘密鍵を、生成した前記第2秘密鍵へと更新し、前記署名データの生成時に、記憶している前記第2秘密鍵を前記1の秘密鍵として取得するとしてもよい。
この構成によると、署名生成装置は、第1秘密鍵の利用後、前記第1秘密鍵を前記第2秘密鍵へと更新しているので、前記署名データを生成する際には、前記第1秘密鍵とは異なる第2秘密鍵を確実に用いることができる。
また、本発明は、メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置であって、1の公開鍵に複数の秘密鍵が対応する署名方式により前記1の公開鍵を生成する公開鍵生成手段と、前記署名方式により前記1の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成手段とを備えることを特徴とする。
この構成によると、鍵生成装置は、1の公開鍵と、前記公開鍵に対応する複数の秘密鍵とを生成する。このとき、署名を行う装置が、署名の際に前記複数の秘密鍵のうち1の秘密鍵を用いると、Transcript attackを実行する攻撃者は、署名されたデータを入手して、Transcript attackを試みても、入手した署名されたデータが前記複数の秘密鍵うちどの秘密鍵にて生成されたかがわからない。そのため、鍵生成装置は、署名データに対するTranscript attackを防ぐことができる。
ここで、前記署名方式は、格子を用いた方式であり、前記公開鍵生成手段は、前記署名方式により、前記公開鍵を生成し、前記秘密鍵生成手段は、前記署名方式により、前記複数の秘密鍵を生成するとしてもよい。
この構成によると、鍵生成装置は、格子を用いた署名方式にて鍵生成を行うので、格子の性質上、1の公開鍵と、前記公開鍵に対応する複数の秘密鍵とを生成することができる。
ここで、前記署名方式は、NTRU署名方式であり、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqとに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成する公開鍵生成ステップと、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u)(uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップとを含み、前記公開鍵生成手段は、前記公開鍵生成ステップにより前記公開鍵を生成し、前記秘密鍵生成手段は、前記秘密鍵生成ステップにより前記複数の秘密鍵を生成するとしてもよい。
この構成によると、鍵生成装置は、署名方式に含まれる公開鍵生成ステップ及び秘密鍵生成ステップを用いることにより、公開鍵、及び前記公開鍵に対応する複数の秘密鍵を生成することができる。
また、本発明は、メッセージデータに対する署名データを生成する署名生成装置と、署名の検証を行う署名検証装置とからなる署名システムであって、前記署名生成装置は、1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備え、前記署名検証装置は、前記公開鍵を用いて、前記署名データを検証する検証手段を備えることを特徴とする。
この構成によると、署名システムは、署名生成装置にて、1の公開鍵に対応する複数の秘密鍵のうち前回の署名に利用した秘密鍵とは異なる1の秘密鍵を取得している。これにより、Transcript attackを実行する攻撃者は、署名データを入手して、Transcript attackを試みても、入手した署名データが前回署名に利用した秘密鍵、及び今回の署名に用いた秘密鍵のどちらにて署名されたかが分からないため、署名生成装置は、署名データに対するTranscript attackを防ぐことができる。また、公開鍵は、前記複数の秘密鍵それぞれに対応しているので、署名検証装置は、前記複数の秘密鍵のうち1の秘密鍵を用いて生成された署名データを、前記公開鍵を用いて検証することができる。
ディジタル署名システム1の構成を示すブロック図である。 署名生成装置10にて行われる署名生成処理の動作を示す流れ図である。 署名検証装置20にて行われる署名検証処理の動作を示す流れ図である。 鍵生成装置30にて行われる鍵生成処理の動作を示す流れ図である。 鍵生成装置30にて行われる秘密鍵群生成処理の動作を示す流れ図である。 ディジタル署名システム1000の構成を示すブロック図である。 署名生成装置1010にて行われる秘密鍵更新処理の動作を示す流れ図である。 署名生成装置1010にて行われる署名生成処理の動作を示す流れ図である。
符号の説明
1 ディジタル署名システム
10 署名生成装置
20 署名検証装置
30 鍵生成装置
50 通信路
101 秘密鍵群格納部
102 公開鍵証明書格納部
103 秘密鍵選択部
104 署名生成部
105 署名データセット生成部
106 送信部
201 CA公開鍵格納部
202 署名データセット格納部
203 署名検証部
204 受信部
205 表示部
301 証明書生成鍵格納部
302 鍵生成部
303 秘密鍵群生成部
304 証明書生成部
305 鍵設定部
1000 ディジタル署名システム
1010 署名生成装置
1020 署名検証装置
1050 通信路
1101 秘密鍵格納部
1102 公開鍵証明書格納部
1103 秘密鍵更新部
1104 署名生成部
1105 署名データセット生成部
1106 送信部
1107 表示部
1201 CA公開鍵格納部
1202 署名データセット格納部
1203 署名検証部
1204 受信部
1205 表示部
1.第1の実施の形態
以下、本発明に係る第1の実施の形態としてのディジタル署名システム1について、図面を参照して説明する。
1.1 ディジタル署名システム1の概要
ディジタル署名システム1は、図1に示すように、署名生成装置10と、署名検証装置20と、鍵生成装置30と、通信路50とから構成されている。
鍵生成装置30は、従来のNTRUSign署名方式を改良した改良NTRUSign署名方式用いて、鍵生成を行い、複数の秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},・・・及び1の公開鍵hを生成する。なお、改良NTRUSign署名方式用いた鍵生成については後述する。また、公開鍵hは、複数の秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},・・・の全てに対応する公開鍵である。
署名生成装置10は、鍵生成装置30にて生成された複数の秘密鍵のうち1の秘密鍵と、改良NTRUSign署名方式とを用いて、メッセージデータmに対する署名データセットSSを生成し、通信路50を介して署名検証装置20に、生成した署名データセットSSを送信する。なお、署名データセットSSの構成については、後述する。
署名検証装置20は、署名生成装置10から、署名データセットSSを受信し、受信した署名データセットSSがメッセージデータmの正しい署名であるかを、改良NTRUSign署名方式を用いて検証する。署名検証装置20は、署名データセットSSが正しいと判定する場合には、署名データセットSSを受理し、署名データセットSSが不正と判定する場合には、署名データセットSSを拒否する。
改良NTRUSign署名方式の鍵生成では、多項式X^N−1を法とし、整数係数を有する多項式の環Rに属する複数の元と、環Rのイデアルとを用いることにより、1の公開鍵及び公開鍵に対応する複数の秘密鍵が生成される。改良NTRUSign署名方式におけるメッセージに対する署名では、1の秘密鍵と、メッセージのハッシュ値である2・N次元のベクトルとが用いられる。改良NTRUSign署名方式における署名検証では、公開鍵と、メッセージに対する署名と、メッセージのハッシュ値である2・N次元のベクトルとを用いる。なお、非特許文献4及び非特許文献5に、NTRUSign署名方式にて用いられる環及び環のイデアルについて記載がなされているので、ここでの説明は省略する。
以下において、改良NTRUSign署名方式について説明する。
<改良NTRUSign署名方式>
(1)改良NTRUSign署名方式のパラメータ
改良NTRUSign署名方式は、非負整数のパラメータ、N,q,df,dg,Normboundを持つ。これらのパラメータの定義は、従来のNTRUSign署名方式と同様である。以下に、これらのパラメータの意味を説明する。
(1−1)パラメータN
改良NTRUSign署名方式は、多項式の演算により署名生成及び署名検証を行うディジタル署名方式である。改良NTRUSign署名方式で扱う多項式の次数は、上記パラメータNにより決まる。
改良NTRUSign署名方式で扱う多項式は、上記パラメータNに対し、N−1次以下の整数係数多項式であり、例えばN=5のとき、X^4+X^3+1等の多項式である。ここで、「X^a」はXのa乗を意味することとする。なお、多項式に対しては、(mod X^N−1)演算を施し、常に、N−1次以下からなる整数係数多項式を算出する。なぜなら、(mod X^N−1)演算を施すことにより、X^N=1という関係式が成り立つため、N次以上の変数に対しては、常にN−1次以下の変数へと変換することができるからである。ここで、多項式に対して、(mod X^N−1)演算を施すことにより得られる整数係数多項式は、多項式環Rの元となることがわかる。
また、公開鍵h、署名sはいずれも、N−1次以下の多項式として表現される。また、秘密鍵は4つのN−1次以下の多項式対(f,g,F,G)である。すなわち、f,g,F,GはいずれもN−1次以下の多項式であり、多項式環Rの元である。なお、以下では、4つ組(f,g,F,G)を2つの対(f,g),(F,G)のさらなる対と捉えて、{(f,g),(F,G)}と表記する場合もある。
そして、多項式演算は、上記パラメータNに対し、X^N=1という関係式を用いて、演算結果が常にN−1次以下の多項式になるように演算される。例えば、N=5の場合、多項式X^4+X^2+1と多項式X^3+Xの積は、多項式と多項式の積を×、整数と多項式の積(あるいは整数と整数の積)を・とすると、X^5=1という関係から、
(X^4+X^2+1)×(X^3+X)
=X^7+2・X^5+2・X^3+X
=X^2・1+2・1+2・X^3+X
=2・X^3+X^2+X+2
というように、常にN−1次以下の多項式になるように演算される。
なお、改良NTRUSign署名方式においても、N−1次の多項式a=a_0+a_1・X+a_2・X^2+…+a_(N−1)・X^(N−1)はベクトル(a_0,a_1,a_2,…,a_(N−1))と同一視する。a_0,a_1,a_2,…,a_(N−1)は多項式aの係数であり、整数である。
(1−2)パラメータq
改良NTRUSign署名方式では、2以上の整数であり、多項式環Rのイデアルであるパラメータqを用いる。改良NTRUSign署名方式で出現する多項式の係数は、qを法とした剰余を取る。
(1−3)パラメータdf,dg
改良NTRUSign署名方式で扱う秘密鍵の一部である多項式f及び、公開鍵である多項式hを生成するときに多項式fと共に用いる多項式gの選び方は、それぞれパラメータdf,dgにより決まる。
まず、多項式fは、df個の係数が1であり、かつ他の係数は0となるように選ぶ。すなわち、多項式fはN−1次以下の多項式であり、0次(定数項)からN−1次まで、N個の係数があるが、このN個の係数のうち、df個の係数が1であり、かつ(N−df)個の係数が0となるように選ぶ。
そして、多項式gは、dg個の係数が1であり、かつ他の係数は0となるように選ぶ。
(1−4)パラメータNormbound
改良NTRUSign署名方式では、後述するが署名sから作られる2・N次元のベクトルとメッセージのハッシュ値である2・N次元のベクトルの距離を計算し、この距離により正しい署名であるかを判定する。Normboundは、この判定の際に使用するしきい値である。すなわち、上記距離がNormbound未満であれば、正しい署名として受理し、Normbound以上であれば、正しくない署名とし拒否する。
非特許文献4には、NTRUSign署名方式のパラメータの例として、(N,q,df,dg,Normbound)=(251,128,73,71,310)の例が挙げられている。改良NTRUSign署名方式においても、同様のパラメータ例を使用してもよい。
(2)メッセージのハッシュ値、ノルム及びベクトル間の距離
改良NTRUSign署名方式においても、メッセージmのハッシュ値に対する署名を作成する。メッセージmのハッシュ値は、N次の多項式の対(m1,m2)であり、2・N次元のベクトルと同一視される。メッセージからハッシュ値を求めるハッシュ関数については、非特許文献1が詳しい。
改良NTRUSign署名方式においても、従来のNTRUSign署名方式と同様のベクトルの距離を用いる。以下でその定義を示す。
多項式a=a_0+a_1・X+a_2・X^2+…+a_(N−1)・X^(N−1)のノルム||a||を以下のように定義する。
||a||=sqrt((a_0−μ)^2+(a_1−μ)^2+…+(a_(N−1)−μ)^2)
μ=(1/N)・(a_0+a_1+a_2+…+a_(N−1))
ここで、sqrt(x)はxの平方根を示す。
多項式a,bの対(a,b)のノルム||(a,b)||を以下のように定義する。
||(a,b)||=sqrt(||a||^2+||b||^2)
多項式a,bの対(a,b)とc,dの対(c,d)との距離は、||(c−a,d−b)||で定義される。
これにより、(mod X^N−1)演算を施すことにより得られたN−1次以下の整数係数多項式は、加算、減算、乗算、及び元の大きさを示すノルムが定義されたN次元配列とみなすことができ、多項式環Rは、N次元配列の集合とみなすことができる。
(3)改良NTRUSign署名方式の鍵生成
改良NTRUSign署名方式では、上述したように、パラメータdf,dgを用いてランダムに多項式f,多項式gを生成する。そして、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。ここで、多項式Fqは、多項式fの逆元と呼ばれる。さらに、以下の式を満たすようなノルムが所定値Keyboundより小さい多項式F,Gの対(F,G)を求める。
f×G−g×F=q(*)
次に、{(f,g),(F,G)}を秘密鍵{(f,g),(F_1,G_1)}とし、{(f,g),(F_1,G_1)}を用いて式(*)を満たし、かつノルムが所定値Keyboundより小さい他の対(F,G)を複数個求め、(F_2,G_2),(F_3,G_3),…とする。ここで、{(f,g),(F_1,G_1)}、{(f,g),(F_2,G_2)}、…のそれぞれを秘密鍵とし、それらの秘密鍵を含めたものを秘密鍵群と呼ぶ。また、多項式hを公開鍵とする。ここで、従来のNTRUSign署名方式では、公開鍵及び秘密鍵は一つであり、1対1対応しているが、改良NTRUSign署名方式では公開鍵は一つであるが、その公開鍵に対応する秘密鍵は複数存在することに注意しておく。なお、NTRUSign署名方式では、一つの公開鍵に対し、上記(*)及びノルムが所定値Keyboundより小さい多項式F,Gの対(F,G)は存在すれば、複数存在する可能性がある。実施の形態1及び後述する実施の形態2では、この性質を利用している。
なお、所定値Keyboundは、正しい署名と検証される署名データを生成できうる秘密鍵となる(F,G)のノルムであり、(N,q,df,dg,Normbound)=(251,128,73,71,310)の例の場合、例えばKeybound=45である。これは、非特許文献5によると、秘密鍵を用いて生成した署名が不正と検証されてしまう検証失敗確率を、10^(−12)以下とするための(F,G)のノルムの限界値である。このノルムの限界値はパラメータ(N,q,df,dg,Normbound)に依存して変わるものであるため、上記例以外の場合は、Keyboundを変えてもよい。具体的には、例えば、所定値Keyboundは、検証失敗確率を10^(−12)以下とするための(F,G)のノルムの限界値としてもよい。また、この検証失敗確率を10^(−15)など他の値としてもよい。
(4)改良NTRUSign署名方式の署名生成
改良NTRUSign署名方式の署名生成では、署名対象であるメッセージmの署名sを計算する。まず、秘密鍵群に含まれる複数の秘密鍵から一つの秘密鍵{(f,g),(FS,GS)}を選択する。
次に、メッセージmに対するハッシュ値である2・N次元のベクトル(m1,m2)(m1及びm2はN次多項式)を計算する。
この2・N次元のベクトル(m1,m2)と秘密鍵{(f,g),(FS,GS)}を用いて、以下の式を満たす多項式a,b,A,Bを計算する。
GS×m1−FS×m2=A+q×B
−g×m1+f×m2=a+q×b
ここで、A,aの係数は〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を取ったものとする。すなわち、法qで割ったときの剰余が〈q/2〉からq−1である場合は、q減算して、上記範囲に収まるよう調整する。ここで、〈x〉は、x以下の数の中で最も大きい数を示す。例えば、〈−1/2〉=−1である。
次に以下の式より、s,tを計算し、sを署名として出力する。
s=f×B+FS×b(mod q)
t=g×B+GS×b(mod q)
(5)改良NTRUSign署名方式の署名検証
改良NTRUSign署名方式の署名生成方法は、従来のNTRUSign署名方式と同様である。まず、メッセージmに対するハッシュ値である2・N次元のベクトル(m1,m2)を計算する。
公開鍵hを用いて、以下の式より、多項式tを計算する。
t=s×h(mod q)
2・N次元ベクトル(s,t)と(m1,m2)の距離を求め、Normbound未満であるかをチェックする。Normbound未満であれば、署名sが正しいと判定して署名sを受理する。Normbound以上であれば、署名sが不正と判定して署名sを拒否する。
1.2 署名生成装置10の構成
署名生成装置10は、図1に示すように、秘密鍵群格納部101と、公開鍵証明書格納部102と、秘密鍵選択部103と、署名生成部104と、署名データセット生成部105と、送信部106とから構成される。
署名生成装置10は、上述した改良NTRUSign署名方式により鍵生成装置30にて、生成された複数の秘密鍵からなる秘密鍵群と、公開鍵に対応する公開鍵証明書とを格納しており、秘密鍵群に含まれる1の秘密鍵を用いて、入力であるメッセージデータmに対する署名データSを生成する。
(1)秘密鍵群格納部101
秘密鍵群格納部101は、鍵生成装置30にて生成された複数の秘密鍵からなる秘密鍵群を格納するための領域を有している。
なお、以降の説明において、秘密鍵群格納部101は、複数の秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…,{(f,g),(F_u,G_u)}からなる秘密鍵群GKSを格納しているものとする。ここで、uは秘密鍵群に含まれる秘密鍵の個数である。
(2)公開鍵証明書格納部102
公開鍵証明書格納部102は、公開鍵hの公開鍵証明書CPを格納するための領域を有している。
公開鍵証明書CPは、公開鍵hと、公開鍵hの署名データSPとからなり、鍵生成装置30にて生成される。署名データSPは、鍵生成装置30にて格納されている証明書生成鍵KCSと改良NTRUSign署名方式とを用いて生成される。また、以降の説明において、公開鍵証明書CPは鍵生成装置30により予め格納されているものとする。なお、公開鍵証明書CPには、公開鍵hと署名データSPに加えて他のデータを含んでいてもよい。例えば、ユーザの識別子や証明書の期限などを含んでもよい。
(3)秘密鍵選択部103
秘密鍵選択部103は、署名生成部104から秘密鍵群から1の秘密鍵を選択する旨の選択指示を受け取ると、秘密鍵群GSKに含まれる複数の秘密鍵から1の秘密鍵をランダムに選択する。
秘密鍵選択部103は、選択した秘密鍵を署名生成部104へ出力する。
なお、選択はランダムでなく、外部からの入力に基づくとしてもよい。
(4)署名生成部104
署名生成部104は、署名データセット生成部105から、メッセージデータmの署名データの生成の指示を示す署名生成指示を受け取ると、選択指示を秘密鍵選択部103へ出力する。
署名生成部104は、秘密鍵選択部103から選択された1の秘密鍵を受け取ると、受け取った秘密鍵を用いて、メッセージデータmに対する署名データSを生成、つまりメッセージデータmに署名を施して署名データSを生成する。
署名生成部104は、署名データSの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部105へ出力する。
なお、署名データSは、改良NTRUSign署名方式に基づいて生成される。
(5)署名データセット生成部105
署名データセット生成部105は、ユーザによる操作によりメッセージデータmを受け付けると、公開鍵証明書格納部102から公開鍵証明書CPを読み出す。
署名データセット生成部105は、署名生成指示を署名生成部104へ出力し、その後、署名生成部104から生成完了通知を受け取ると、メッセージデータmと、署名生成部104にて生成されたメッセージデータmの署名データSと、読み出した公開鍵証明書CPとからなる署名データセットSSを生成する。
署名データセット生成部105は、送信部106を介して、生成した署名データセットSSを署名検証装置20へ送信する。
(6)送信部106
送信部106は、署名データセットSSを、通信路50を介して署名検証装置20へ送信する。
1.3 署名検証装置20の構成
署名検証装置20は、図1に示すように、CA公開鍵格納部201と、署名データセット格納部202と、署名検証部203と、受信部204と、表示部205とから構成される。
(1)CA公開鍵格納部201
CA公開鍵格納部201は、鍵生成装置30にて格納されている証明書生成鍵KCSに対応し、公開鍵証明書CPを検証するための公開鍵KCPを格納している。
(2)署名データセット格納部202
署名データセット格納部202は、署名データセットSSを格納するための領域を有している。
(3)署名検証部203
署名検証部203は、署名データセットSSに含まれる署名データS、及び公開鍵証明書CPに含まれる署名データSPを検証する。なお、署名検証部203は、改良NTRUSign署名方式を用いて、各署名データの検証を行う。
以下に、検証の動作を示す。
署名検証部203は、受信部204から検証を開始する旨の検証開始指示を受け取る。
署名検証部203は、署名データSPが公開鍵hの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する。
署名データSPが正しい署名であると判断する場合には、署名検証部203は、署名データSがメッセージデータmの正しい署名であるかを、公開鍵hを用いて検証する。
署名データSが正しい署名であると判断する場合には、署名検証部203は、受信した署名データセットSSを受理する旨のメッセージ「OK」を表示部205へ出力する。
各署名検証のうち何れかの署名検証において、署名データが正しくない署名であると判断する場合には、署名検証部203は、受信した署名データセットSSを拒否する旨のメッセージ「NG」を表示部205へ出力する。
(4)受信部204
受信部204は、署名生成装置10から送信された署名データセットSSを、通信路50を介して受信する。
受信部204は、受信した署名データセットSSを署名データセット格納部202へ格納し、その後、検証開始指示を署名検証部203へ出力する。
(5)表示部205
表示部205は、署名検証部203から署名検証の検証結果に係るメッセージを受け取ると、受け取ったメッセージを表示する。
1.4 鍵生成装置30の構成
鍵生成装置30は、図1に示すように、証明書生成鍵格納部301と、鍵生成部302と、秘密鍵群生成部303と、証明書生成部304と、鍵設定部305とから構成される。
(1)証明書生成鍵格納部301
証明書生成鍵格納部301は、公開鍵KCPに対応し、公開鍵証明書CPに含まれる署名データSPを生成するための証明書生成鍵KCSを格納している。
(2)鍵生成部302
鍵生成部302は、従来のNTRUSign署名方式の鍵生成方法を用いて、秘密鍵{(f,g),(F,G)}と公開鍵hを生成する。なお、従来のNTRUSign署名方式による鍵生成は、公知の技術であるため、ここでの説明は省略する。
鍵生成部302は、秘密鍵群の生成を指示する鍵群生成指示を秘密鍵群生成部303へ出力し、公開鍵証明書CPの生成を指示する証明書生成指示を証明書生成部304へ出力する。
(3)秘密鍵群生成部303
秘密鍵群生成部303は、所定値Keybound及び秘密鍵の検索回数の上限値を示すvMAXを予め格納している。ここで、vMAXは、例えば1000である。
秘密鍵群生成部303は、所定値vMAX以下の検索回数にて、ノルム||(a,b)||が、所定値Keybound以下となる多項式a,bの対(a,b)を複数個生成することにより、複数の秘密鍵を生成する。
秘密鍵群生成部303は、鍵生成部302から鍵群生成指示を受け取ると、鍵生成部302にて生成された秘密鍵{(f,g),(F,G)}と、改良NTRUSign署名方式の鍵生成方法とを用いて、{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…,{(f,g),(F_u,G_u)}からなる秘密鍵群GKSを生成する。ここで、uは秘密鍵群に含まれる秘密鍵の個数である。
秘密鍵群生成部303は、秘密鍵群GSKの生成が完了すると、生成した秘密鍵群GSKを署名生成装置10へ格納する旨の第1格納指示を鍵設定部305へ出力する。
(4)証明書生成部304
証明書生成部304は、鍵生成部302から証明書生成指示を受け取ると、証明書生成鍵格納部301に格納されている証明書生成鍵KCSを読み出す。
証明書生成部304は、読み出した証明書生成鍵KCSを用いて、鍵生成部302にて生成された公開鍵hに対する公開鍵証明書CPを生成する。ここで、公開鍵証明書CPは公開鍵hと、公開鍵hの証明書生成鍵KCSを用いた署名データSPとからなる。
証明書生成部304は、公開鍵証明書CPの生成が完了すると、生成した公開鍵証明書CPを署名生成装置10へ格納する旨の第2格納指示を鍵設定部305へ出力する。
(5)鍵設定部305
鍵設定部305は、秘密鍵群生成部303から第1格納指示を受け取ると、秘密鍵群生成部303にて生成された秘密鍵群GSKを、署名生成装置10の秘密鍵群格納部101へ書き込む。
鍵設定部305は、証明書生成部304から第2格納指示を受け取ると、証明書生成部304にて生成された公開鍵証明書CPを、署名生成装置10の公開鍵証明書格納部102へ書き込む。
1.5 署名生成装置10の動作
署名生成装置10は、メッセージデータmに対する署名データセットSSを生成し、通信路50を介して署名検証装置20へ送信する。以下に、署名生成装置10にて行われる署名生成処理の動作について、図2にて示す流れ図を用いて説明する。
署名データセット生成部105は、ユーザによる操作によりメッセージデータmを受け付ける(ステップS5)。
署名データセット生成部105は、公開鍵証明書格納部102から公開鍵証明書CPを読み出し、署名生成指示を署名生成部104へ出力する。署名生成部104は、署名データセット生成部105から、署名生成指示を受け取ると、選択指示を秘密鍵選択部103へ出力する。秘密鍵選択部103は、署名生成部104から選択指示を受け取ると、秘密鍵群GSKに含まれる複数の秘密鍵から1の秘密鍵をランダムに選択する(ステップS10)。
秘密鍵選択部103は、選択した秘密鍵を署名生成部104へ出力する。署名生成部104は、秘密鍵選択部103から選択された1の秘密鍵を受け取ると、受け取った秘密鍵を用いて、メッセージデータmに対する署名データSを生成する(ステップS15)。なお、署名データSは、改良NTRUSign署名方式に基づいて生成される。
署名生成部104は、署名データSの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部105へ出力する。署名データセット生成部105は、署名生成部104から生成完了通知を受け取ると、メッセージデータmと、署名生成部104にて生成されたメッセージデータmの署名データSと、読み出した公開鍵証明書CPとからなる署名データセットSSを生成する(ステップS20)。
送信部106は、署名データセット生成部105にて生成された署名データセットSSを、通信路50を介して署名検証装置20へ送信する(ステップS25)。
1.6 署名検証装置20の動作
署名検証装置20は、署名生成装置10より署名データセットSSを通信路50を介して受信し、その署名データセットSSを検証する。以下において、署名検証装置20にて行われる署名検証処理について、図3にて示す流れ図を用いて説明する。
受信部204は、署名生成装置10から送信された署名データセットSSを、通信路50を介して受信する(ステップS100)。
受信部204は、受信した署名データセットSSを署名データセット格納部202に格納する(ステップS105)。
受信部204は、検証開始指示を署名検証部203へ出力する。署名検証部203は、受信部204から検証を開始する旨の検証開始指示を受け取る。署名検証部203は、署名データSPが公開鍵hの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する(ステップS110)。
署名データSPが正しい署名であると判断する場合には(ステップS110における「OK」)、署名検証部203は、署名データSがメッセージデータmの正しい署名であるかを、公開鍵hを用いて検証する(ステップS115)。
署名データSが正しい署名であると判断する場合には(ステップS115における「OK」)、署名検証部203は、表示部205を介して、メッセージ「OK」を表示する(ステップS120)。
署名データSPが正しい署名でないと判断する場合(ステップS110における「NG」)、及び署名データSが正しい署名でないと判断する場合には(ステップS115における「NG」)、署名検証部203は、表示部205を介して、メッセージ「NG」を表示する(ステップS125)。
なお、署名検証部203は、改良NTRUSign署名方式を用いて、各署名データの検証を行う。
1.7 鍵生成装置30の動作
鍵生成装置30は、秘密鍵群GKSと証明書CPとを生成し、生成した秘密鍵群GKSと証明書CPとを署名生成装置10に設定する。以下において、鍵生成装置30にて行われる鍵生成処理の動作について、図4にて示す流れ図を用いて説明する。
鍵生成部302は、従来のNTRUSign署名方式の鍵生成方法を用いて、秘密鍵{(f,g),(F,G)}と公開鍵hを生成する(ステップS200)。
鍵生成部302は、秘密鍵群の生成を指示する鍵群生成指示を秘密鍵群生成部303へ出力し、公開鍵証明書CPの生成を指示する証明書生成指示を証明書生成部304へ出力する。秘密鍵群生成部303は、鍵生成部302から鍵群生成指示を受け取ると、秘密鍵群生成処理により、{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…,{(f,g),(F_u,G_u)}からなる秘密鍵群GKSを生成する(ステップS205)。ここで、uは秘密鍵群に含まれる秘密鍵の個数である。
証明書生成部304は、鍵生成部302から証明書生成指示を受け取ると、証明書生成鍵格納部301に格納されている証明書生成鍵KCSを読み出す。証明書生成部304は、読み出した証明書生成鍵KCSを用いて、鍵生成部302にて生成された公開鍵hに対する公開鍵証明書CPを生成する(ステップS210)。
秘密鍵群生成部303は、秘密鍵群GSKの生成が完了すると、生成した秘密鍵群GSKを署名生成装置10へ格納する旨の第1格納指示を鍵設定部305へ出力する。証明書生成部304は、公開鍵証明書CPの生成が完了すると、生成した公開鍵証明書CPを署名生成装置10へ格納する旨の第2格納指示を鍵設定部305へ出力する。鍵設定部305は、秘密鍵群生成部303から第1格納指示を受け取ると、秘密鍵群生成部303にて生成された秘密鍵群GSKを、署名生成装置10の秘密鍵群格納部101へ書き込み、証明書生成部304から第2格納指示を受け取ると、証明書生成部304にて生成された公開鍵証明書CPを、署名生成装置10の公開鍵証明書格納部102へ書き込む(ステップS215)。
1.8 秘密鍵群の生成方法
ここでは、秘密鍵群生成部303にて行われる改良NTRUSign署名方式を用いた秘密鍵群GSKの生成方法、つまり図4にて示す秘密鍵群生成処理の動作について、図5にて示す流れ図を用いて説明する。
秘密鍵群生成部303は、鍵生成部302にて生成された秘密鍵{(f,g),(F,G)}を秘密鍵{(f,g),(F_1,G_1)}として秘密鍵群GKSに加える(ステップS300)。
秘密鍵群生成部303は、u←2,v←0,F’←F,G’←Gとする(ステップS305)。
次に、秘密鍵群生成部303は、F’←F’+X^v×f,G’←G’+X^v×gとする(ステップS310)。
秘密鍵群生成部303は、||(F’,G’)||>Keyboundであるか否かを判定する(ステップS315)。
||(F’,G’)||>Keyboundでないと判定する場合には(ステップS315における「NO」)、秘密鍵群生成部303は、(F’,G’)を秘密鍵{(f,g),(F_u,G_u)}として秘密鍵群GKSに加え(ステップS320)、u←u+1とする(ステップS325)。秘密鍵群生成部303は、v←v+1とし(ステップS330)、v>vMAXであるか否かを判定する(ステップS335)。
v>vMAXであると判断する場合には(ステップS335における「YES」)、処理を終了する。v>vMAXでないと判断する場合には(ステップS335における「NO」)、ステップS310へ戻る。
||(F’,G’)||>Keyboundであると判定する場合には(ステップS315における「YES」)、秘密鍵群生成部303は、ステップS325以降を行う。
なお、上記の方法により生成した秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…は、それぞれf×G_1−g×F_1=q,f×G_2−g×F_2=q,…を満たすことに注意する。{(f,g),(F_1,G_1)}は、従来のNTRUSign署名方式の鍵生成方法を用いて生成するため、f×G_1−g×F_1=qが成り立つ。次に、ある正整数iに対して{(f,g),(F_i,G_i)}に対してf×G_i−g×F_i=qが成り立つとき、{(f,g),(F_(i+1),G_(i+1))}に対してf×G_(i+1)−g×F_(i+1)=qが成り立つことを示す。上記のフローチャートのステップS310より、
F_(i+1)=F_i+w×f,G_(i+1)=G_i+w×g
を満たす多項式wが存在する。ゆえに、
f×G_(i+1)−g×F_(i+1)=f×(G_i+w×g)−g×(F_i+w×f)
=f×G_i+w×f×g−g×F_i+w×f×g
=f×G_i−g×F_i=q
が成り立つ。したがって、上記の方法により生成した秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…は、それぞれf×G_1−g×F_1=q,f×G_2−g×F_2=q,…を満たす。
秘密鍵群の生成方法は上記に限らず、f×G’−g×F’=qを満たし、かつ||(F’,G’)||がKeybound以下であるような秘密鍵{(f,g),(F’,G’)}からなる秘密鍵群を生成する方法であればよい。
1.9 第1の実施の形態の全体の動作
第1の実施の形態におけるディジタル署名システム1の全体の動作を以下に示す。
ディジタル署名システム1の鍵生成装置30では、署名生成装置10の公開鍵及び秘密鍵群を生成し、署名生成装置10に設定する。署名生成装置10は、メッセージデータmに対する署名データセットSSを生成し、通信路50を介して署名検証装置20へ、生成した署名データセットSSを送信する。署名検証装置20は、通信路50を介して署名生成装置10から、署名データセットSSを受信し検証する。
1.10 第1の実施の形態の効果
第1の実施の形態におけるディジタル署名システム1では、署名検証するための公開鍵は一つであるが、それに対応する秘密鍵が複数存在している。署名生成装置10では、秘密鍵群に含まれる複数の秘密鍵から一つの秘密鍵を選択し、署名データを生成している。秘密鍵群に含まれる秘密鍵の個数を2とし、それぞれの秘密鍵を{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)}とする場合を考える。このとき、Transcript attackを実行する攻撃者は、通信路50に流れる署名データセットを入手して、Transcript attackを試みる。攻撃者には、入手した署名データセットがどちらの秘密鍵により生成されたかがわからないため、入手した署名データセットを使用された秘密鍵により分類して、それぞれを用いて攻撃することはできない。そこで、入手したすべての署名データセットから署名とハッシュ値の差分を取り、その平均を求めることで攻撃をすると、2種類の秘密鍵を用いているため、署名データセットに2種類の秘密鍵の情報が入ってしまう。その結果、Transcript attackを実行しても、2次モーメント及び4次モーメントの平均から2種類の秘密鍵の情報が混ざった状態で入手できるが、これを一つ一つの秘密鍵の情報に分離することができない。したがって、ディジタル署名システム1は、Transcript attackを防ぐことができ、安全である。なお、上記では秘密鍵群に含まれる秘密鍵の個数を2としたが、これを3や3より大きい整数とすると、さらに2次モーメント及び4次モーメントの平均から秘密鍵の情報を分離することが困難になるため、さらに高い安全性をもつ。
2.第2の実施の形態
以下、本発明に係る第2の実施の形態としてのディジタル署名システム1000について、図面を参照して説明する。
2.1 ディジタル署名システム1000の概要
ディジタル署名システム1000は、署名生成装置1010と、署名検証装置1020と、通信路1050とから構成される。
署名生成装置1010は、NTRUSign署名方式を用いて、メッセージデータmに対する署名データセットSSを生成し、通信路1050を介して署名検証装置1020に署名データセットSSを送信する。なお、署名データセットSSの構成については、後述する。
署名検証装置1020は、署名生成装置1010から、署名データセットSSを受信し、受信した署名データセットSSがメッセージデータmの正しい署名であるかを検証する。署名検証装置1020は、署名データセットSSが正しいと判定する場合には、署名データセットSSを受理し、署名データセットSSが不正と判定する場合には、署名データセットSSを拒否する。
2.2 署名生成装置1010の構成
署名生成装置1010は、図6に示すように、秘密鍵格納部1101と、公開鍵証明書格納部1102と、秘密鍵更新部1103と、署名生成部1104と、署名データセット生成部1105と、送信部1106と、表示部1107とから構成される。
署名生成装置1010は、入力であるメッセージデータmに対する署名データセットSSを生成し、生成した署名データセットSSを署名検証装置1020へ送信する。
署名生成装置1010を構成する署名データセット生成部1105及び送信部1106は、それぞれ、第1の実施の形態にて示す署名データセット生成部105及び送信部106と同様の動作を行うため、ここでの説明は省略する。
(1)秘密鍵格納部1101
秘密鍵格納部1101は、秘密鍵{(f,g),(F,G)}を格納するための領域を有している。
なお、ここでは、秘密鍵格納部1101は、秘密鍵{(f,g),(F,G)}を予め格納しているものとする。
(2)公開鍵証明書格納部1102
公開鍵証明書格納部1102は、秘密鍵{(f,g),(F,G)}に対応する公開鍵hの公開鍵証明書CPを格納するための領域を有している。
公開鍵証明書CPは、公開鍵hと、公開鍵hの署名データSPとからなる。署名データSPは、改良NTRUSign署名方式に基づいて生成される。また、ここでは、公開鍵証明書格納部1102は、公開鍵証明書CPは予め格納しているものとする。なお、公開鍵証明書CPには、公開鍵hと署名データSPに加えて他のデータを含んでいてもよい。例えば、ユーザの識別子や証明書の期限などを含んでもよい。
(3)秘密鍵更新部1103
秘密鍵更新部1103は、所定値Keybound及び秘密鍵の検索回数の上限値を示すvMAXを予め格納している。ここで、vMAXは、例えば1000である。
秘密鍵更新部1103は、定期的、例えば、1ヶ月ごとに、以下の動作により秘密鍵格納部1101に格納されている秘密鍵を更新する。なお、秘密鍵の更新のタイミングは、月単位でもよいし、日単位でもよいし、時間単位でもよい。
秘密鍵更新部1103は、改良NTRUSign署名方式を用いて、所定値vMAX以下の検索回数にて、ノルム||(F’,G’)||が、所定値Keybound以下となる対(F’,G’)を生成することにより、公開鍵hに対応し、且つ秘密鍵格納部1101に格納されている秘密鍵{(f,g),(F,G)}とは異なる秘密鍵{(f,g),(F’,G’)}を生成する。
秘密鍵更新部1103は、秘密鍵格納部1101に格納されている秘密鍵に新たに生成した{(f,g),(F’,G’)}を上書きして更新する。
秘密鍵更新部1103は、所定値vMAX以下にて、対(F’,G’)を生成することができない場合には、秘密鍵を更新することができない旨を示す更新不可メッセージを、表示部1107を介して表示する。
なお、秘密鍵の更新方法の詳細については、後述する。
(4)署名生成部1104
署名生成部1104は、署名データセット生成部1105から、メッセージデータmの署名データの生成の指示を示す署名生成指示を受け取ると、秘密鍵格納部1101から秘密鍵を読み出す。
署名生成部1104は、読み出した秘密鍵を用いて、メッセージデータmに対する署名データSを生成、メッセージデータmに署名を施して署名データSを生成する。
署名生成部1104は、署名データSの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部1105へ出力する。
なお、署名データSは、改良NTRUSign署名方式に基づいて生成される。
(5)表示部1107
表示部1107は、秘密鍵更新部1103から受け取ったメッセージを表示する。
2.3 署名検証装置1020
署名検証装置1020は、図6に示すように、CA公開鍵格納部1201と、署名データセット格納部1202と、署名検証部1203と、受信部1204と、表示部1205とから構成される。
署名検証装置1020を構成するCA公開鍵格納部1201、署名データセット格納部1202、署名検証部1203、受信部1204、及び表示部1205は、それぞれ、第1の実施の形態にて示すCA公開鍵格納部201、署名データセット格納部202、署名検証部203、受信部204、及び表示部205と同様の動作を行うため、ここでの説明は省略する。
2.4 秘密鍵の更新方法
ここでは、秘密鍵更新部1103にて行われる秘密鍵の更新方法(秘密鍵更新処理)について、図7に示す流れ図を用いて説明する。
秘密鍵更新部1103は、{(f,g),(F,G)}を秘密鍵{(f,g),(F_1,G_1)}として秘密鍵格納部1101から読み出す(ステップS400)。
秘密鍵更新部1103は、変数v,F’,G’に対して、v←0,F’←F,G’←Gを設定する(ステップS405)。
秘密鍵更新部1103は、変数F’,G’に対して、F’←F’+X^v×f,G’←G’+X^v×gを設定する(ステップS410)。
秘密鍵更新部1103は、ノルム||(F’,G’)||が所定値Keyboundを超えているか否かを判定する(ステップS415)。
ノルム||(F’,G’)||が所定値Keyboundを超えていると判定する場合には(ステップS415における「YES」)、秘密鍵更新部1103は、変数vに対して、v←v+1とし(ステップS420)、変数vが所定値vMAXを超えているか否かを判定する(ステップS425)。
変数vが所定値vMAXを超えていると判定する場合には(ステップS425における「YES」)、秘密鍵更新部1103は、更新不可メッセージを表示部1107を介して表示する(ステップS430)。変数vが所定値vMAXを超えていないと判定する場合には(ステップS425における「NO」)、秘密鍵更新部1103は、ステップS410へ戻る。
ノルム||(F’,G’)||が所定値Keyboundを超えていないと判定する場合には(ステップS415における「NO」)、秘密鍵更新部1103は、秘密鍵格納部1101に格納されている秘密鍵に生成した秘密鍵{(f,g),(F’,G’)}を上書きして更新することにより、新たな秘密鍵{(f,g),(F,G)}とする(ステップS435)。
なお、上記の方法により生成した秘密鍵{(f,g),(F’,G’)}は、それぞれf×G’−g×F’=qを満たすことに注意する。なお、秘密鍵の更新方法は上記に限らず、f×G’−g×F’=qを満たし、かつ||(F’,G’)||がKeybound以下の秘密鍵{(f,g),(F’,G’)}に更新する方法であればよい。
2.5 署名生成装置1010の動作
署名生成装置1010の動作は、メッセージデータmに対する署名データセットSSを生成し、通信路1050を介して署名検証装置1020へ送信する「署名生成処理」と、秘密鍵を更新する「秘密鍵更新処理」の動作からなる。以下に、各処理の動作について、説明する。
(1)署名生成処理
ここでは、署名生成処理の動作について、図8に示す流れ図を用いて説明する。
署名データセット生成部1105は、ユーザによる操作によりメッセージデータmを受け付ける(ステップS500)。
署名データセット生成部1105は、公開鍵証明書格納部1102から公開鍵証明書CPを読み出し、署名生成指示を署名生成部1104へ出力する。署名生成部1104は、署名データセット生成部105から、署名生成指示を受け取ると、秘密鍵格納部1101から秘密鍵を読み出す。署名生成部1104は、読み出した秘密鍵を用いて、メッセージデータmに対する署名データSを生成する(ステップS505)。
署名生成部1104は、署名データSの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部1105へ出力する。署名データセット生成部1105は、署名生成部1104から生成完了通知を受け取ると、メッセージデータmと、署名生成部1104にて生成されたメッセージデータmの署名データSと、読み出した公開鍵証明書CPとからなる署名データセットSSを生成する(ステップS510)。
送信部1106は、署名データセット生成部1105にて生成された署名データセットSSを、通信路1050を介して署名検証装置1020へ送信する(ステップS515)。
(2)秘密鍵更新処理
秘密鍵更新部1103は、秘密鍵格納部1101に格納されている秘密鍵{(f,g),(F,G)}を用いて、新たな秘密鍵{(f,g),(F’,G’)}を生成し、秘密鍵格納部1101に格納されている秘密鍵に新たな秘密鍵を上書きして更新する。
なお、詳細な動作は、図7にて示しているため、ここでの説明は省略する。
2.6 署名検証装置1020の動作
署名検証装置1020は、署名生成装置1010より署名データセットSSを通信路1050を介して受信し、その署名データセットSSを検証する。なお、署名検証装置1020にて行われる署名検証処理は、第1の実施の形態における図3にて示す流れ図と同様の動作であるため、ここでの説明は省略する。
2.7 実施の形態2の全体の動作
第2の実施の形態におけるディジタル署名システム1000の全体の動作を以下に示す。
ディジタル署名システム1000の署名生成装置1010は、「署名生成処理」にて、入力であるメッセージデータmに対して、署名データセットSSを生成し、署名検証装置1020へ送信する。署名検証装置1020は、署名生成装置1010から、署名データセットSSを受信し、受信した署名データセットを検証し、その検証結果により、署名データセットSSを受理する、または、拒否するかを決定する。また、「鍵更新処理」にて、署名生成装置1010は、秘密鍵を更新する。
2.8 第2の実施の形態の効果
第2の実施の形態におけるディジタル署名システム1000では、署名検証するための公開鍵は一つであるが、それに対応する秘密鍵が更新されていく。この更新タイミングは、通信路1050から署名データセットを入手して、Transcript attackを実行する攻撃者にはわからない。ここで、一回のみ秘密鍵が更新された場合について考える。攻撃者には入手した署名データセットを生成するために使用した秘密鍵の更新タイミングがわからないため、入手した署名データセットを使用された秘密鍵により厳密に分類して、それぞれを用いて攻撃することはできない。そこで、入手したすべての署名データセットから署名とハッシュ値の差分を取り、その平均を求めることで攻撃をすると、ある時期を境にして、2種類の秘密鍵を用いているため、入手した署名データセットを秘密鍵により正しく分類できない限り、署名データセットに2種類の秘密鍵の情報が入ってしまう。その結果、Transcript attackを実行しても、2次モーメント及び4次モーメントの平均から2種類の秘密鍵の情報が混ざった状態で入手できるが、これを一つ一つの秘密鍵の情報に分離することができない。したがって、ディジタル署名システム1000では第1の実施の形態におけるディジタル署名システム1と同様に、Transcript attackを防ぐことができ、安全である。
3.変形例
上記に説明した第1及び第2の実施の形態は、本発明の実施の一例であり、本発明はこれら実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)第1の実施の形態では、対(f,g)の各値はそれぞれ固定し、対(G,F)の各値を変更したが、これに限定されない。対(f,g)の値も可変として複数の秘密鍵を設定してもよい。この場合、NTRUSign署名方式の鍵の条件であるf×G−g×F=qは満たすものとする。または、対(f,g)の各値を可変とし、対(F,G)の各値は固定としてもよい。
また、第2の実施の形態も同様に、対(f,g)の各値も可変として秘密鍵の更新を行ってもよい。または、対(f,g)の各値を可変とし、対(F,G)の各値は固定としてもよい。
(2)第1の実施の形態の秘密鍵群生成部及び第2の実施の形態における秘密鍵更新部における、秘密鍵の探索回数を示すvMAXの値は1000に限らない。他の値、例えば、10000でもよい。
(3)第1の実施の形態において、ランダムに秘密鍵を選択するではなく、定められたルールにしたがって選択してもよい。
例えば、署名生成装置は、署名データセットを生成した回数をカウントして、第1の所定回数(例えば、10^7回など)に達するまで、同じ秘密鍵を使用し、その後、先とは異なる秘密鍵を第2の所定回数(例えば、10^8回など)に達するまで使用するとしてもよい。このとき、署名生成装置は、ポインタにより現在使用している秘密鍵を特定することにより、第1の所定回数に達するまで、同じ秘密鍵を使用することができる。このような場合においても、使用する秘密鍵の切り替えのタイミングを攻撃者がわからないため、Transcript attackに対して安全である。なお、カウントの対象は、署名データを生成した回数でもよい。
または、署名生成装置は、複数の秘密鍵が格納されている順に選択してもよい。このとき、署名生成装置は、ポインタを用いて現在使用している秘密鍵を特定し、次に使用する秘密鍵へとポインタの位置を変更することにより、複数の秘密鍵が格納されている順に選択することができる。これにより、署名生成装置は、署名生成時には、前回署名に使用した秘密鍵とは別の秘密鍵を取得し、取得した別の秘密鍵を用いて、署名データを生成することができる。
(4)第2の実施の形態において、秘密鍵を更新するタイミングを署名データセットを生成した回数に依存させてもよい。例えば、秘密鍵を用いて、署名データセットを所定回数(例えば、10^7回など)生成したときに秘密鍵を更新するとしてもよい。このような場合においても、使用する秘密鍵の切り替えのタイミングを攻撃者がわからないため、Transcript attackに対して安全である。
(5)第1及び第2実施の形態では、署名方式としてNTRUSign署名方式またはその方式をベースとした改良方式を用いているが、これに限らない。一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式であればよい。
例えば、NTRUSign署名方式とは異なり、且つ格子を用いた署名方式である。
(6)第1の実施の形態において、鍵生成装置と署名生成装置とは、個別の装置としたが、これに限定されない。ディジタル署名システム1は、鍵生成装置と署名生成装置からなる装置、及び署名検証装置から構成されるとしてもよい。
(7)第1の実施の形態において、署名生成装置は、ユーザの操作によりメッセージデータを受け付けるとしたが、これに限定されない。
署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
また、第2の実施の形態においても同様に、署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
(8)これらの実施の形態及び変形例の組合せであってもよい。
<その他の変形例>
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
(3)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記ディジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記ディジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記ディジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
4.まとめ
本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u)(uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
ここで、前記秘密鍵選択部は、前記秘密鍵群に含まれる複数の前記秘密鍵からランダムに一つの前記秘密鍵を選択するとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、前記公開鍵と前記秘密鍵を生成する鍵生成装置であって、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u)(uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを含み、前記鍵生成ステップを用いて、前記公開鍵と複数の前記秘密鍵を生成することを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置であって、前記秘密鍵を格納する秘密鍵格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部と、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新部とを備えることを特徴とする。
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対(F,G)を生成し、前記元の4つ組(f,g,F,G)を前記秘密鍵として生成し、前記秘密鍵を秘密鍵とする鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置と前記署名データを検証する署名検証装置とからなるディジタル署名システムであって、前記署名生成装置は、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成方法であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択ステップと、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップとを含むことを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成方法であって、前記秘密鍵を格納する秘密鍵格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新ステップとを含むことを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置に実行させるプログラムであって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択ステップと、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップとを前記署名生成装置に実行させることを特徴とする。
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u)(uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを含むとしてもよい。
ここで、前記秘密鍵選択ステップは、前記秘密鍵群に含まれる複数の前記秘密鍵からランダムに一つの前記秘密鍵を選択するとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置に実行させるプログラムであって、前記秘密鍵を格納する秘密鍵格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新ステップとを前記署名生成装置に実行させることを特徴とする。
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対(F,G)を生成し、前記元の4つ組(f,g,F,G)を前記秘密鍵として生成し、前記秘密鍵を秘密鍵とする鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置の集積回路であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置の集積回路であって、前記秘密鍵を格納する秘密鍵格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部と、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新部とを備えることを特徴とする。
上記の示したディジタル署名システムの構成によると、Transcript attackを防ぐことができる。
また、上記にて示したディジタル署名システムを構成する各装置は、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
本発明は、情報セキュリティ技術としての暗号技術に関し、特に、ディジタル署名の技術に関する。
受信装置から送信装置へデータを送信する際の送信者の特定及びデータの改ざんを防止するための技術として、公開鍵暗号の一種であるディジタル署名方式がある。これを簡単に説明すると、送信装置が、送信したいデータに対し、送信装置の秘密鍵を用いて署名データを作成し、送信したいデータと共に署名データを受信装置へ送信し、受信装置は、送信装置の秘密鍵に対応する公開鍵を用いて署名データを検証し、改ざんされているか否かを判定する方法である(例えば、非特許文献1参照)。ここで、公開鍵から秘密鍵の値は計算困難である。
最近、高速処理が可能な公開鍵暗号として、NTRU暗号が提案されている(例えば、非特許文献2参照)。このNTRU暗号は、ある法の下でべき乗剰余演算を行うRSA暗号や楕円曲線上の点のスカラ倍演算を行う楕円曲線暗号に比べ、高速に演算可能な多項式演算により暗号化と復号化を行うので、従来の公開鍵暗号よりも高速に処理することが可能で、ソフトウェアの処理でも実用的な時間で処理可能である。
従って、公開鍵暗号にNTRU暗号を用いた暗号通信システムでは、従来の公開鍵暗号を用いた暗号通信システムよりも、送信装置及び受信装置の処理が高速に行えるという利点がある。
上記で提案された方式は、データを暗号化する守秘暗号方式であったが、その後、NTRU暗号のディジタル署名方式が提案されている(非特許文献3参照)。ディジタル署名方式については解読法の出現などで、方式が幾度か変更された。以下では、NTRUSignと呼ばれるディジタル署名方式について簡単に説明する(詳細については、特許文献2及び非特許文献4参照)。
NTRUSign署名方式の鍵生成において、多項式X^N−1を法とし、整数係数を有する多項式の環Rに属する複数の元と、環Rのイデアルとを用いることにより、秘密鍵及び公開鍵が生成される。ここで、「X^a」はXのa乗を意味することとする。NTRUSign署名方式におけるメッセージに対する署名では、生成した秘密鍵と、メッセージのハッシュ値である2・N次元のベクトルとが用いられる。NTRUSign署名方式における署名検証では、公開鍵と、メッセージに対する署名と、メッセージのハッシュ値である2・N次元のベクトルとが用いられる。なお、非特許文献4及び非特許文献5に、NTRUSign署名方式にて用いられる環及び環のイデアルについて記載がなされているので、ここでの説明は省略する。
<NTRUSign署名方式>
(1)NTRUSign署名方式のパラメータ
NTRUSign署名方式は、非負整数のパラメータ、N,q,df,dg,Normboundを用いる。以下に、これらのパラメータの意味を説明する。
(1−1)パラメータN
NTRUSign署名方式は、多項式の演算により署名生成及び署名検証を行うディジタル署名方式である。NTRUSign署名方式で扱う多項式の次数は、上記パラメータNにより決まる。
NTRUSign署名方式で扱う多項式は、上記パラメータNに対し、N−1次以下の整数係数多項式であり、例えばN=5のとき、X^4+X^3+1等の多項式である。なお、多項式に対しては、(mod X^N−1)演算を施し、常に、N−1次以下からなる整数係数多項式を算出する。なぜなら、(mod X^N−1)演算を施すことにより、X^N=1という関係式が成り立つため、N次以上の変数に対しては、常にN−1次以下の変数へと変換することができるからである。ここで、多項式に対して、(mod X^N−1)演算を施すことにより得られる整数係数多項式は、多項式環Rの元となることがわかる。
また、公開鍵h、署名sはいずれも、N−1次以下の多項式として表現される。また、秘密鍵は4つのN−1次以下の多項式対(f,g,F,G)である。すなわち、f,g,F,GはいずれもN−1次以下の多項式であり、多項式環Rの元である。なお、以下では、4つ組(f,g,F,G)を2つの対(f,g),(F,G)のさらなる対と捉えて、{(f,g),(F,G)}と表記する場合もある。
そして、多項式演算は、上記パラメータNに対し、X^N=1という関係式を用いて、演算結果が常にN−1次以下の多項式になるように演算される。例えば、N=5の場合、多項式X^4+X^2+1と多項式X^3+Xの積は、多項式と多項式の積を×、整数と多項式の積(あるいは整数と整数の積)を・とすると、X^5=1という関係から、
(X^4+X^2+1)×(X^3+X)
=X^7+2・X^5+2・X^3+X
=X^2・1+2・1+2・X^3+X
=2・X^3+X^2+X+2
というように、常にN−1次以下の多項式になるように演算される。
なお、NTRUSign署名方式では、N−1次の多項式a=a_0+a_1・X+a_2・X^2+…+a_(N−1)・X^(N−1)はベクトル(a_0,a_1,a_2,…,a_(N−1))と同一視する。a_0,a_1,a_2,…,a_(N−1)は多項式aの係数であり、整数である。
(1−2)パラメータq
NTRUSign署名方式では、2以上の整数であり、多項式環Rのイデアルであるパラメータqを用いる。NTRUSign署名方式で出現する多項式の係数は、qを法とした剰余を取る。
(1−3)パラメータdf,dg
NTRUSign署名方式で扱う秘密鍵の一部である多項式f及び、公開鍵である多項式hを生成するときに多項式fと共に用いる多項式gの選び方は、それぞれパラメータdf,dgにより決まる。
まず、多項式fは、df個の係数が1であり、かつ他の係数は0となるように選ぶ。すなわち、多項式fはN−1次以下の多項式であり、0次(定数項)からN−1次まで、N個の係数があるが、このN個の係数のうち、df個の係数が1であり、かつ(N−df)個の係数が0となるように選ぶ。
そして、多項式gは、dg個の係数が1であり、かつ他の係数は0となるように選ぶ。
(1−4)パラメータNormbound
NTRUSign署名方式では、後述するが署名sから作られる2・N次元のベクトルとメッセージのハッシュ値である2・N次元のベクトルの距離を計算し、この距離により正しい署名であるかを判定する。Normboundは、この判定の際に使用するしきい値である。すなわち、上記距離がNormbound未満であれば、正しい署名として受理し、Normbound以上であれば、正しくない署名とし拒否する。
非特許文献4には、NTRUSign署名方式のパラメータの例として、(N,q,df,dg,Normbound)=(251,128,73,71,310)の例が挙げられている。
(2)メッセージのハッシュ値、ノルム及びベクトル間の距離
NTRUSign署名方式では、メッセージmのハッシュ値に対する署名を作成する。メッセージmのハッシュ値は、N次の多項式の対(m1,m2)であり、2・N次元のベクトルと同一視される。メッセージからハッシュ値を求めるハッシュ関数については、非特許文献1が詳しい。
NTRUSign署名方式では、署名検証にベクトルの距離を用いる。以下でその定義を示す。
多項式a=a_0+a_1・X+a_2・X^2+…+a_(N−1)・X^(N−1)のノルム||a||を以下のように定義する。
||a||=sqrt((a_0−μ)^2+(a_1−μ)^2+…+(a_(N−1)−μ)^2)
μ=(1/N)・(a_0+a_1+a_2+…+a_(N−1))
ここで、sqrt(x)はxの平方根を示す。
多項式a,bの対(a,b)のノルム||(a,b)||を以下のように定義する。
||(a,b)||=sqrt(||a||^2+||b||^2)
多項式a,bの対(a,b)とc,dの対(c,d)との距離は、||(c−a,d−b)||で定義される。
これにより、(mod X^N−1)演算を施すことにより得られたN−1次以下の整数係数多項式は、加算、減算、乗算、及び元の大きさを示すノルムが定義されたN次元配列とみなすことができ、多項式環Rは、N次元配列の集合とみなすことができる。
(3)NTRUSign署名方式の鍵生成
NTRUSign署名方式では、上述したように、パラメータdf,dgを用いてランダムに多項式f,多項式gを生成する。そして非特許文献4に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。ここで、多項式Fqは、多項式fの逆元と呼ばれる。さらに、以下の式を満たすようなノルムが小さい多項式F,Gを求める。
f×G−g×F=q
秘密鍵を{(f,g),(F,G)}、公開鍵をhとする。秘密鍵は、署名を生成するための鍵であり、署名生成鍵とも呼ばれる。また、公開鍵は、署名を検証するための鍵であり、署名検証鍵とも呼ばれる。
ここで、x=y(mod q)は、多項式yの第i次の係数を、剰余が0からq−1の範囲に収まるように法qで割ったときの剰余を、多項式xの第i次の係数とする演算である(0≦i≦N−1)。すなわち、多項式yの各係数を、0から(q−1)の範囲に収まるようにmod q演算した多項式を、多項式xとする演算である。
(4)NTRUSign署名方式の署名生成
NTRUSign署名方式の署名生成では、署名対象であるメッセージmの署名sを計算する。まず、メッセージmに対するハッシュ値である2・N次元のベクトル(m1,m2)(m1及びm2はN次多項式)を計算する。
この2・N次元のベクトル(m1,m2)と秘密鍵{(f,g),(F,G)}を用いて、以下の式を満たす多項式a,b,A,Bを計算する。
G×m1−F×m2=A+q×B
−g×m1+f×m2=a+q×b
ここで、A,aの係数は〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を取ったものとする。すなわち、法qで割ったときの剰余が〈q/2〉からq−1である場合は、q減算して、上記範囲に収まるよう調整する。ここで、〈x〉は、x以下の数の中で最も大きい数を示す。例えば、〈−1/2〉=−1である。
次に以下の式より、s,tを計算し、sを署名として出力する。
s=f×B+F×b (mod q)
t=g×B+G×b (mod q)
(5)NTRUSign署名方式の署名検証
NTRUSign署名方式の署名生成では、署名sが署名対象であるメッセージmの正しい署名であるかを検証する。まず、メッセージmに対するハッシュ値である2・N次元のベクトル(m1,m2)を計算する。
公開鍵hを用いて、以下の式より、多項式tを計算する。
t=s×h (mod q)
2・N次元ベクトル(s,t)と(m1,m2)の距離を求め、Normbound未満であるかをチェックする。Normbound未満であれば、署名sが正しいと判定して署名sを受理する。Normbound以上であれば、署名sが不正と判定して署名sを拒否する。
特表2000−516733号公報 国際公開番号 WO2003/050998号 岡本龍明、山本博資、「現代暗号」、産業図書(1997年) J.Hoffstein, J.Pipher, and J.H. Silverman, "NTRU: A ring based public key cryptosystem", Lecture Notes in Computer Science, 1423, pp.267−288, Springer−Verlag, 1998. J.Hoffstein, J.Pipher and J.Silverman, "NSS: An NTRU Lattice−Based Signature Scheme," Advances in Cryptoplogy−Eurocrypt ’01, LNCS, Vol.2045, pp.123−137, Springer−Verlag, 2001 J.Hoffstein, N.Graham, J.Pipher, J.Silverman and W.Whyte, "NTRUSign: Digital Signatures Using the NTRU Lattice," CT−RSA’03, LNCS, Vol.2612, pp.122−140, Springer−Verlag, 2003 J.Hoffstein, N.Graham, J.Pipher,J.H.Silverman,W.Whyte,"NTRUSign: Digital Signatures Using the NTRU Lattice Preliminary Draft 2−−April 2,2002",[2005年1月20日検索]、インターネット<URL: http://www.ntru.com/cryptolab/pdd/NTRUSign−preV2.pdf>
上述したNTRUSign署名方式には、Transcript attackと呼ばれる攻撃がある。Transcript attackは、複数の署名文(メッセージと署名の対)から秘密鍵を求める攻撃である。Transcript attackの詳細は、非特許文献4に記載されているので、ここでは、以下で簡単に説明する。
Transcript attackは、複数の署名sとメッセージのハッシュ値(m1,m2)の一部m1との差分m1−sが
m1−s=e1×f+e2×F
e1,e2は係数が−1/2から1/2の範囲に入る多項式
となることを利用しており、差分m1−sの2次モーメント及び4次モーメントの平均値を取ることで、秘密鍵の一部であるf,Fを求める。ここで、多項式aの2次モーメントa〜2とは、a=a_0+a_1・X+a_2・X^2+…+a_(N−2)・X^(N−2)+a_(N−1)・X^(N−1)とaの相反a*=a_0+a_(N−1)・X+a_(N−2)・X^2+…+a_2・X^(N−2)+a_1・X^(N−1)との積a〜=a×a*である。また、4次モーメントa〜4は、a〜2の2乗、すなわち、a〜4=a〜2×a〜2である。
(m1−sの2次モーメント)=(e1×f+e2×F)×(e1*×f*+e2*×F*)
=e1〜×f〜+e2〜×F〜+e1×f×e2*×F*+e2×F×e1*×f*
署名文の個数が増大すると、m1−sの2次モーメントの平均に含まれるe1〜,e2〜はある一定値k1,k2に収束し、上記の式のe1×f×e2*×F*とe2×F×e1*×f*は0に近づく。したがって、署名文の個数が大きい場合、m1−sの2次モーメントの平均は、k1×f〜+k2×F〜にほぼ等しくなる。さらに4次モーメントの平均でも、同様にf及びFに関連する情報を得られ、両方の情報からfを求めることが可能になる。非特許文献4によると、2次モーメント及び4次モーメントの平均から秘密鍵に関する情報が得られるために必要な署名文の個数はそれぞれ10^4、10^8である。したがって、NTRUSign署名方式のTranscript attackを成功させるためには、10^8個以上の署名文が必要と考えられている。
本発明は、署名データに対するTranscript attackを防ぐことのできる署名生成装置、鍵生成装置、署名システム、署名生成方法、署名検証プログラム、署名検証方法、鍵生成プログラム、署名生成用の集積回路及び鍵生成用の集積回路を提供することを目的とする。
上記目的を達成するために、本発明は、メッセージデータに対する署名データを生成する署名生成装置であって、1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備えることを特徴とする。
上記に示した構成によると、署名生成装置は、1の公開鍵に対応する複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を取得している。これにより、Transcript attackを実行する攻撃者は、署名データを入手して、Transcript attackを試みても、入手した署名データが前回署名に利用した秘密鍵、及び今回の署名に用いた秘密鍵のどちらにて署名されたかが分からないため、署名生成装置は、署名データに対するTranscript attackを防ぐことができる。
ここで、前記所定の取得方法とは、複数の秘密鍵のうちの1の秘密鍵をランダムに取得することであり、前記秘密鍵取得手段は、前記複数の秘密鍵のうちの前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵をランダムに取得するとしてもよい。
この構成によると、署名生成装置は、複数の秘密鍵から前回の署名に利用した秘密鍵とは異なる他の1の秘密鍵をランダムに取得するので、Transcript attackを実行する攻撃者は、署名データを入手して、Transcript attackを試みても、入手した署名データがどの秘密鍵にて生成されたかがわからないため、署名生成装置は、署名データに対するTranscript attackを防ぐことができる。
ここで、前記秘密鍵取得手段は、前記複数の秘密鍵を記憶しており、記憶している前記複数の秘密鍵から前記他の1の秘密鍵を、前記所定の取得方法により取得するとしてもよい。
この構成によると、署名生成装置は、記憶している複数の秘密鍵から前記他の1の秘密鍵を取得するので、前記1の公開鍵に対応する秘密鍵を確実に取得することができる。
ここで、前記署名方式は、格子を用いた署名方式であり、前記秘密鍵取得手段は、前記格子を用いた署名方式の鍵生成方法にて生成された前記複数の秘密鍵を記憶しているとしてもよい。
この構成によると、格子を用いた鍵生成及び署名生成行う署名方式は、格子の性質上、1の公開鍵に対して、複数の秘密鍵を生成することができる。これにより、署名生成装置は、1の公開鍵に対する複数の秘密鍵を記憶することができる。
ここで、前記署名方式は、NTRU署名方式であり、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqとに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成する公開鍵生成ステップと、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u) (uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップと、生成した前記複数の秘密鍵のうち1の秘密鍵を用いて、署名データを生成する署名生成ステップとを含み、前記秘密鍵取得手段が記憶している前記複数の秘密鍵は、前記秘密鍵ステップにより生成され、前記署名生成手段は、前記署名生成ステップにより前記署名データを生成するとしてもよい。
この構成によると、署名方式は、環Rとイデアルqとを用いて、公開鍵、及び前記公開鍵に対応する複数の秘密鍵を生成し、生成した複数の秘密鍵のうち1の秘密鍵を用いて署名を行うので、前記署名生成装置は、前記署名方式を用いることにより、公開鍵に対応している秘密鍵を用いて確実に署名を行うことができる。
ここで、前記署名生成装置は、前記署名方式を用いて前記公開鍵及び前記複数の秘密鍵を生成する鍵生成装置を含むとしてもよい。
この構成によると、署名生成装置は、当該装置に含まれる鍵生成装置を用いて前記公開鍵、及び前記複数の秘密鍵を生成することができる。
ここで、前記所定の取得方法とは、複数の秘密鍵のうちの1の秘密鍵をランダムに取得することであり、前記鍵取得手段は、記憶している前記複数の秘密鍵から前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵をランダムに取得するとしてもよい。
この構成によると、署名生成装置は、記憶している複数の秘密鍵から前回の署名に利用した秘密鍵とは異なる前記他の1の秘密鍵をランダムに取得するので、Transcript attackに対する防御を高めることができる。
ここで、前記所定の取得方法とは、記憶している順序に基づいて、複数の秘密鍵のうちの1の秘密鍵を取得することであり、前記鍵取得手段は、前記複数の秘密鍵を記憶している順序に基づいて、前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵を取得するとしてもよい。
この構成によると、署名生成装置は、署名データ毎に、署名に用いる秘密鍵を使い分けるので、Transcript attackに対する防御を高めることができる。
ここで、前記所定の取得方法とは、複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、前記鍵生成方法により生成して取得することであり、前記鍵取得手段は、前記1の公開鍵に対応し、前記署名方式にて生成された第1秘密鍵を記憶しており、前記第1秘密鍵を利用した後、前記鍵生成方法により前記1の公開鍵に対応する第2秘密鍵を生成し、記憶している前記第1秘密鍵を、生成した前記第2秘密鍵へと更新し、前記署名データの生成時に、記憶している前記第2秘密鍵を前記1の秘密鍵として取得するとしてもよい。
この構成によると、署名生成装置は、第1秘密鍵の利用後、前記第1秘密鍵を前記第2秘密鍵へと更新しているので、前記署名データを生成する際には、前記第1秘密鍵とは異なる第2秘密鍵を確実に用いることができる。
また、本発明は、メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置であって、1の公開鍵に複数の秘密鍵が対応する署名方式により前記1の公開鍵を生成する公開鍵生成手段と、前記署名方式により前記1の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成手段とを備えることを特徴とする。
この構成によると、鍵生成装置は、1の公開鍵と、前記公開鍵に対応する複数の秘密鍵とを生成する。このとき、署名を行う装置が、署名の際に前記複数の秘密鍵のうち1の秘密鍵を用いると、Transcript attackを実行する攻撃者は、署名されたデータを入手して、Transcript attackを試みても、入手した署名されたデータが前記複数の秘密鍵うちどの秘密鍵にて生成されたかがわからない。そのため、鍵生成装置は、署名データに対するTranscript attackを防ぐことができる。
ここで、前記署名方式は、格子を用いた方式であり、前記公開鍵生成手段は、前記署名方式により、前記公開鍵を生成し、前記秘密鍵生成手段は、前記署名方式により、前記複数の秘密鍵を生成するとしてもよい。
この構成によると、鍵生成装置は、格子を用いた署名方式にて鍵生成を行うので、格子の性質上、1の公開鍵と、前記公開鍵に対応する複数の秘密鍵とを生成することができる。
ここで、前記署名方式は、NTRU署名方式であり、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqとに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成する公開鍵生成ステップと、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u) (uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップとを含み、前記公開鍵生成手段は、前記公開鍵生成ステップにより前記公開鍵を生成し、前記秘密鍵生成手段は、前記秘密鍵生成ステップにより前記複数の秘密鍵を生成するとしてもよい。
この構成によると、鍵生成装置は、署名方式に含まれる公開鍵生成ステップ及び秘密鍵生成ステップを用いることにより、公開鍵、及び前記公開鍵に対応する複数の秘密鍵を生成することができる。
また、本発明は、メッセージデータに対する署名データを生成する署名生成装置と、署名の検証を行う署名検証装置とからなる署名システムであって、前記署名生成装置は、1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備え、前記署名検証装置は、前記公開鍵を用いて、前記署名データを検証する検証手段を備えることを特徴とする。
この構成によると、署名システムは、署名生成装置にて、1の公開鍵に対応する複数の秘密鍵のうち前回の署名に利用した秘密鍵とは異なる1の秘密鍵を取得している。これにより、Transcript attackを実行する攻撃者は、署名データを入手して、Transcript attackを試みても、入手した署名データが前回署名に利用した秘密鍵、及び今回の署名に用いた秘密鍵のどちらにて署名されたかが分からないため、署名生成装置は、署名データに対するTranscript attackを防ぐことができる。また、公開鍵は、前記複数の秘密鍵それぞれに対応しているので、署名検証装置は、前記複数の秘密鍵のうち1の秘密鍵を用いて生成された署名データを、前記公開鍵を用いて検証することができる。
1.第1の実施の形態
以下、本発明に係る第1の実施の形態としてのディジタル署名システム1について、図面を参照して説明する。
1.1 ディジタル署名システム1の概要
ディジタル署名システム1は、図1に示すように、署名生成装置10と、署名検証装置20と、鍵生成装置30と、通信路50とから構成されている。
鍵生成装置30は、従来のNTRUSign署名方式を改良した改良NTRUSign署名方式用いて、鍵生成を行い、複数の秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},・・・及び1の公開鍵hを生成する。なお、改良NTRUSign署名方式用いた鍵生成については後述する。また、公開鍵hは、複数の秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},・・・の全てに対応する公開鍵である。
署名生成装置10は、鍵生成装置30にて生成された複数の秘密鍵のうち1の秘密鍵と、改良NTRUSign署名方式とを用いて、メッセージデータmに対する署名データセットSSを生成し、通信路50を介して署名検証装置20に、生成した署名データセットSSを送信する。なお、署名データセットSSの構成については、後述する。
署名検証装置20は、署名生成装置10から、署名データセットSSを受信し、受信した署名データセットSSがメッセージデータmの正しい署名であるかを、改良NTRUSign署名方式を用いて検証する。署名検証装置20は、署名データセットSSが正しいと判定する場合には、署名データセットSSを受理し、署名データセットSSが不正と判定する場合には、署名データセットSSを拒否する。
改良NTRUSign署名方式の鍵生成では、多項式X^N−1を法とし、整数係数を有する多項式の環Rに属する複数の元と、環Rのイデアルとを用いることにより、1の公開鍵及び公開鍵に対応する複数の秘密鍵が生成される。改良NTRUSign署名方式におけるメッセージに対する署名では、1の秘密鍵と、メッセージのハッシュ値である2・N次元のベクトルとが用いられる。改良NTRUSign署名方式における署名検証では、公開鍵と、メッセージに対する署名と、メッセージのハッシュ値である2・N次元のベクトルとを用いる。なお、非特許文献4及び非特許文献5に、NTRUSign署名方式にて用いられる環及び環のイデアルについて記載がなされているので、ここでの説明は省略する。
以下において、改良NTRUSign署名方式について説明する。
<改良NTRUSign署名方式>
(1)改良NTRUSign署名方式のパラメータ
改良NTRUSign署名方式は、非負整数のパラメータ、N,q,df,dg,Normboundを持つ。これらのパラメータの定義は、従来のNTRUSign署名方式と同様である。以下に、これらのパラメータの意味を説明する。
(1−1)パラメータN
改良NTRUSign署名方式は、多項式の演算により署名生成及び署名検証を行うディジタル署名方式である。改良NTRUSign署名方式で扱う多項式の次数は、上記パラメータNにより決まる。
改良NTRUSign署名方式で扱う多項式は、上記パラメータNに対し、N−1次以下の整数係数多項式であり、例えばN=5のとき、X^4+X^3+1等の多項式である。ここで、「X^a」はXのa乗を意味することとする。なお、多項式に対しては、(mod X^N−1)演算を施し、常に、N−1次以下からなる整数係数多項式を算出する。なぜなら、(mod X^N−1)演算を施すことにより、X^N=1という関係式が成り立つため、N次以上の変数に対しては、常にN−1次以下の変数へと変換することができるからである。ここで、多項式に対して、(mod X^N−1)演算を施すことにより得られる整数係数多項式は、多項式環Rの元となることがわかる。
また、公開鍵h、署名sはいずれも、N−1次以下の多項式として表現される。また、秘密鍵は4つのN−1次以下の多項式対(f,g,F,G)である。すなわち、f,g,F,GはいずれもN−1次以下の多項式であり、多項式環Rの元である。なお、以下では、4つ組(f,g,F,G)を2つの対(f,g),(F,G)のさらなる対と捉えて、{(f,g),(F,G)}と表記する場合もある。
そして、多項式演算は、上記パラメータNに対し、X^N=1という関係式を用いて、演算結果が常にN−1次以下の多項式になるように演算される。例えば、N=5の場合、多項式X^4+X^2+1と多項式X^3+Xの積は、多項式と多項式の積を×、整数と多項式の積(あるいは整数と整数の積)を・とすると、X^5=1という関係から、
(X^4+X^2+1)×(X^3+X)
=X^7+2・X^5+2・X^3+X
=X^2・1+2・1+2・X^3+X
=2・X^3+X^2+X+2
というように、常にN−1次以下の多項式になるように演算される。
なお、改良NTRUSign署名方式においても、N−1次の多項式a=a_0+a_1・X+a_2・X^2+…+a_(N−1)・X^(N−1)はベクトル(a_0,a_1,a_2,…,a_(N−1))と同一視する。a_0,a_1,a_2,…,a_(N−1)は多項式aの係数であり、整数である。
(1−2)パラメータq
改良NTRUSign署名方式では、2以上の整数であり、多項式環Rのイデアルであるパラメータqを用いる。改良NTRUSign署名方式で出現する多項式の係数は、qを法とした剰余を取る。
(1−3)パラメータdf,dg
改良NTRUSign署名方式で扱う秘密鍵の一部である多項式f及び、公開鍵である多項式hを生成するときに多項式fと共に用いる多項式gの選び方は、それぞれパラメータdf,dgにより決まる。
まず、多項式fは、df個の係数が1であり、かつ他の係数は0となるように選ぶ。すなわち、多項式fはN−1次以下の多項式であり、0次(定数項)からN−1次まで、N個の係数があるが、このN個の係数のうち、df個の係数が1であり、かつ(N−df)個の係数が0となるように選ぶ。
そして、多項式gは、dg個の係数が1であり、かつ他の係数は0となるように選ぶ。
(1−4)パラメータNormbound
改良NTRUSign署名方式では、後述するが署名sから作られる2・N次元のベクトルとメッセージのハッシュ値である2・N次元のベクトルの距離を計算し、この距離により正しい署名であるかを判定する。Normboundは、この判定の際に使用するしきい値である。すなわち、上記距離がNormbound未満であれば、正しい署名として受理し、Normbound以上であれば、正しくない署名とし拒否する。
非特許文献4には、NTRUSign署名方式のパラメータの例として、(N,q,df,dg,Normbound)=(251,128,73,71,310)の例が挙げられている。改良NTRUSign署名方式においても、同様のパラメータ例を使用してもよい。
(2)メッセージのハッシュ値、ノルム及びベクトル間の距離
改良NTRUSign署名方式においても、メッセージmのハッシュ値に対する署名を作成する。メッセージmのハッシュ値は、N次の多項式の対(m1,m2)であり、2・N次元のベクトルと同一視される。メッセージからハッシュ値を求めるハッシュ関数については、非特許文献1が詳しい。
改良NTRUSign署名方式においても、従来のNTRUSign署名方式と同様のベクトルの距離を用いる。以下でその定義を示す。
多項式a=a_0+a_1・X+a_2・X^2+…+a_(N−1)・X^(N−1)のノルム||a||を以下のように定義する。
||a||=sqrt((a_0−μ)^2+(a_1−μ)^2+…+(a_(N−1)−μ)^2)
μ=(1/N)・(a_0+a_1+a_2+…+a_(N−1))
ここで、sqrt(x)はxの平方根を示す。
多項式a,bの対(a,b)のノルム||(a,b)||を以下のように定義する。
||(a,b)||=sqrt(||a||^2+||b||^2)
多項式a,bの対(a,b)とc,dの対(c,d)との距離は、||(c−a,d−b)||で定義される。
これにより、(mod X^N−1)演算を施すことにより得られたN−1次以下の整数係数多項式は、加算、減算、乗算、及び元の大きさを示すノルムが定義されたN次元配列とみなすことができ、多項式環Rは、N次元配列の集合とみなすことができる。
(3)改良NTRUSign署名方式の鍵生成
改良NTRUSign署名方式では、上述したように、パラメータdf,dgを用いてランダムに多項式f,多項式gを生成する。そして、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。ここで、多項式Fqは、多項式fの逆元と呼ばれる。さらに、以下の式を満たすようなノルムが所定値Keyboundより小さい多項式F,Gの対(F,G)を求める。
f×G−g×F=q (*)
次に、{(f,g),(F,G)}を秘密鍵{(f,g),(F_1,G_1)}とし、{(f,g),(F_1,G_1)}を用いて式(*)を満たし、かつノルムが所定値Keyboundより小さい他の対(F,G)を複数個求め、(F_2,G_2),(F_3,G_3),…とする。ここで、{(f,g),(F_1,G_1)}、{(f,g),(F_2,G_2)}、…のそれぞれを秘密鍵とし、それらの秘密鍵を含めたものを秘密鍵群と呼ぶ。また、多項式hを公開鍵とする。ここで、従来のNTRUSign署名方式では、公開鍵及び秘密鍵は一つであり、1対1対応しているが、改良NTRUSign署名方式では公開鍵は一つであるが、その公開鍵に対応する秘密鍵は複数存在することに注意しておく。なお、NTRUSign署名方式では、一つの公開鍵に対し、上記(*)及びノルムが所定値Keyboundより小さい多項式F,Gの対(F,G)は存在すれば、複数存在する可能性がある。実施の形態1及び後述する実施の形態2では、この性質を利用している。
なお、所定値Keyboundは、正しい署名と検証される署名データを生成できうる秘密鍵となる(F,G)のノルムであり、(N,q,df,dg,Normbound)=(251,128,73,71,310)の例の場合、例えばKeybound=45である。これは、非特許文献5によると、秘密鍵を用いて生成した署名が不正と検証されてしまう検証失敗確率を、10^(−12)以下とするための(F,G)のノルムの限界値である。このノルムの限界値はパラメータ(N,q,df,dg,Normbound)に依存して変わるものであるため、上記例以外の場合は、Keyboundを変えてもよい。具体的には、例えば、所定値Keyboundは、検証失敗確率を10^(−12)以下とするための(F,G)のノルムの限界値としてもよい。また、この検証失敗確率を10^(−15)など他の値としてもよい。
(4)改良NTRUSign署名方式の署名生成
改良NTRUSign署名方式の署名生成では、署名対象であるメッセージmの署名sを計算する。まず、秘密鍵群に含まれる複数の秘密鍵から一つの秘密鍵{(f,g),(FS,GS)}を選択する。
次に、メッセージmに対するハッシュ値である2・N次元のベクトル(m1,m2)(m1及びm2はN次多項式)を計算する。
この2・N次元のベクトル(m1,m2)と秘密鍵{(f,g),(FS,GS)}を用いて、以下の式を満たす多項式a,b,A,Bを計算する。
GS×m1−FS×m2=A+q×B
−g×m1+f×m2=a+q×b
ここで、A,aの係数は〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を取ったものとする。すなわち、法qで割ったときの剰余が〈q/2〉からq−1である場合は、q減算して、上記範囲に収まるよう調整する。ここで、〈x〉は、x以下の数の中で最も大きい数を示す。例えば、〈−1/2〉=−1である。
次に以下の式より、s,tを計算し、sを署名として出力する。
s=f×B+FS×b (mod q)
t=g×B+GS×b (mod q)
(5)改良NTRUSign署名方式の署名検証
改良NTRUSign署名方式の署名生成方法は、従来のNTRUSign署名方式と同様である。まず、メッセージmに対するハッシュ値である2・N次元のベクトル(m1,m2)を計算する。
公開鍵hを用いて、以下の式より、多項式tを計算する。
t=s×h (mod q)
2・N次元ベクトル(s,t)と(m1,m2)の距離を求め、Normbound未満であるかをチェックする。Normbound未満であれば、署名sが正しいと判定して署名sを受理する。Normbound以上であれば、署名sが不正と判定して署名sを拒否する。
1.2 署名生成装置10の構成
署名生成装置10は、図1に示すように、秘密鍵群格納部101と、公開鍵証明書格納部102と、秘密鍵選択部103と、署名生成部104と、署名データセット生成部105と、送信部106とから構成される。
署名生成装置10は、上述した改良NTRUSign署名方式により鍵生成装置30にて、生成された複数の秘密鍵からなる秘密鍵群と、公開鍵に対応する公開鍵証明書とを格納しており、秘密鍵群に含まれる1の秘密鍵を用いて、入力であるメッセージデータmに対する署名データSを生成する。
(1)秘密鍵群格納部101
秘密鍵群格納部101は、鍵生成装置30にて生成された複数の秘密鍵からなる秘密鍵群を格納するための領域を有している。
なお、以降の説明において、秘密鍵群格納部101は、複数の秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…,{(f,g),(F_u,G_u)}からなる秘密鍵群GKSを格納しているものとする。ここで、uは秘密鍵群に含まれる秘密鍵の個数である。
(2)公開鍵証明書格納部102
公開鍵証明書格納部102は、公開鍵hの公開鍵証明書CPを格納するための領域を有している。
公開鍵証明書CPは、公開鍵hと、公開鍵hの署名データSPとからなり、鍵生成装置30にて生成される。署名データSPは、鍵生成装置30にて格納されている証明書生成鍵KCSと改良NTRUSign署名方式とを用いて生成される。また、以降の説明において、公開鍵証明書CPは鍵生成装置30により予め格納されているものとする。なお、公開鍵証明書CPには、公開鍵hと署名データSPに加えて他のデータを含んでいてもよい。例えば、ユーザの識別子や証明書の期限などを含んでもよい。
(3)秘密鍵選択部103
秘密鍵選択部103は、署名生成部104から秘密鍵群から1の秘密鍵を選択する旨の選択指示を受け取ると、秘密鍵群GSKに含まれる複数の秘密鍵から1の秘密鍵をランダムに選択する。
秘密鍵選択部103は、選択した秘密鍵を署名生成部104へ出力する。
なお、選択はランダムでなく、外部からの入力に基づくとしてもよい。
(4)署名生成部104
署名生成部104は、署名データセット生成部105から、メッセージデータmの署名データの生成の指示を示す署名生成指示を受け取ると、選択指示を秘密鍵選択部103へ出力する。
署名生成部104は、秘密鍵選択部103から選択された1の秘密鍵を受け取ると、受け取った秘密鍵を用いて、メッセージデータmに対する署名データSを生成、つまりメッセージデータmに署名を施して署名データSを生成する。
署名生成部104は、署名データSの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部105へ出力する。
なお、署名データSは、改良NTRUSign署名方式に基づいて生成される。
(5)署名データセット生成部105
署名データセット生成部105は、ユーザによる操作によりメッセージデータmを受け付けると、公開鍵証明書格納部102から公開鍵証明書CPを読み出す。
署名データセット生成部105は、署名生成指示を署名生成部104へ出力し、その後、署名生成部104から生成完了通知を受け取ると、メッセージデータmと、署名生成部104にて生成されたメッセージデータmの署名データSと、読み出した公開鍵証明書CPとからなる署名データセットSSを生成する。
署名データセット生成部105は、送信部106を介して、生成した署名データセットSSを署名検証装置20へ送信する。
(6)送信部106
送信部106は、署名データセットSSを、通信路50を介して署名検証装置20へ送信する。
1.3 署名検証装置20の構成
署名検証装置20は、図1に示すように、CA公開鍵格納部201と、署名データセット格納部202と、署名検証部203と、受信部204と、表示部205とから構成される。
(1)CA公開鍵格納部201
CA公開鍵格納部201は、鍵生成装置30にて格納されている証明書生成鍵KCSに対応し、公開鍵証明書CPを検証するための公開鍵KCPを格納している。
(2)署名データセット格納部202
署名データセット格納部202は、署名データセットSSを格納するための領域を有している。
(3)署名検証部203
署名検証部203は、署名データセットSSに含まれる署名データS、及び公開鍵証明書CPに含まれる署名データSPを検証する。なお、署名検証部203は、改良NTRUSign署名方式を用いて、各署名データの検証を行う。
以下に、検証の動作を示す。
署名検証部203は、受信部204から検証を開始する旨の検証開始指示を受け取る。
署名検証部203は、署名データSPが公開鍵hの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する。
署名データSPが正しい署名であると判断する場合には、署名検証部203は、署名データSがメッセージデータmの正しい署名であるかを、公開鍵hを用いて検証する。
署名データSが正しい署名であると判断する場合には、署名検証部203は、受信した署名データセットSSを受理する旨のメッセージ「OK」を表示部205へ出力する。
各署名検証のうち何れかの署名検証において、署名データが正しくない署名であると判断する場合には、署名検証部203は、受信した署名データセットSSを拒否する旨のメッセージ「NG」を表示部205へ出力する。
(4)受信部204
受信部204は、署名生成装置10から送信された署名データセットSSを、通信路50を介して受信する。
受信部204は、受信した署名データセットSSを署名データセット格納部202へ格納し、その後、検証開始指示を署名検証部203へ出力する。
(5)表示部205
表示部205は、署名検証部203から署名検証の検証結果に係るメッセージを受け取ると、受け取ったメッセージを表示する。
1.4 鍵生成装置30の構成
鍵生成装置30は、図1に示すように、証明書生成鍵格納部301と、鍵生成部302と、秘密鍵群生成部303と、証明書生成部304と、鍵設定部305とから構成される。
(1)証明書生成鍵格納部301
証明書生成鍵格納部301は、公開鍵KCPに対応し、公開鍵証明書CPに含まれる署名データSPを生成するための証明書生成鍵KCSを格納している。
(2)鍵生成部302
鍵生成部302は、従来のNTRUSign署名方式の鍵生成方法を用いて、秘密鍵{(f,g),(F,G)}と公開鍵hを生成する。なお、従来のNTRUSign署名方式による鍵生成は、公知の技術であるため、ここでの説明は省略する。
鍵生成部302は、秘密鍵群の生成を指示する鍵群生成指示を秘密鍵群生成部303へ出力し、公開鍵証明書CPの生成を指示する証明書生成指示を証明書生成部304へ出力する。
(3)秘密鍵群生成部303
秘密鍵群生成部303は、所定値Keybound及び秘密鍵の検索回数の上限値を示すvMAXを予め格納している。ここで、vMAXは、例えば1000である。
秘密鍵群生成部303は、所定値vMAX以下の検索回数にて、ノルム||(a,b)||が、所定値Keybound以下となる多項式a,bの対(a,b)を複数個生成することにより、複数の秘密鍵を生成する。
秘密鍵群生成部303は、鍵生成部302から鍵群生成指示を受け取ると、鍵生成部302にて生成された秘密鍵{(f,g),(F,G)}と、改良NTRUSign署名方式の鍵生成方法とを用いて、{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…,{(f,g),(F_u,G_u)}からなる秘密鍵群GKSを生成する。ここで、uは秘密鍵群に含まれる秘密鍵の個数である。
秘密鍵群生成部303は、秘密鍵群GSKの生成が完了すると、生成した秘密鍵群GSKを署名生成装置10へ格納する旨の第1格納指示を鍵設定部305へ出力する。
(4)証明書生成部304
証明書生成部304は、鍵生成部302から証明書生成指示を受け取ると、証明書生成鍵格納部301に格納されている証明書生成鍵KCSを読み出す。
証明書生成部304は、読み出した証明書生成鍵KCSを用いて、鍵生成部302にて生成された公開鍵hに対する公開鍵証明書CPを生成する。ここで、公開鍵証明書CPは公開鍵hと、公開鍵hの証明書生成鍵KCSを用いた署名データSPとからなる。
証明書生成部304は、公開鍵証明書CPの生成が完了すると、生成した公開鍵証明書CPを署名生成装置10へ格納する旨の第2格納指示を鍵設定部305へ出力する。
(5)鍵設定部305
鍵設定部305は、秘密鍵群生成部303から第1格納指示を受け取ると、秘密鍵群生成部303にて生成された秘密鍵群GSKを、署名生成装置10の秘密鍵群格納部101へ書き込む。
鍵設定部305は、証明書生成部304から第2格納指示を受け取ると、証明書生成部304にて生成された公開鍵証明書CPを、署名生成装置10の公開鍵証明書格納部102へ書き込む。
1.5 署名生成装置10の動作
署名生成装置10は、メッセージデータmに対する署名データセットSSを生成し、通信路50を介して署名検証装置20へ送信する。以下に、署名生成装置10にて行われる署名生成処理の動作について、図2にて示す流れ図を用いて説明する。
署名データセット生成部105は、ユーザによる操作によりメッセージデータmを受け付ける(ステップS5)。
署名データセット生成部105は、公開鍵証明書格納部102から公開鍵証明書CPを読み出し、署名生成指示を署名生成部104へ出力する。署名生成部104は、署名データセット生成部105から、署名生成指示を受け取ると、選択指示を秘密鍵選択部103へ出力する。秘密鍵選択部103は、署名生成部104から選択指示を受け取ると、秘密鍵群GSKに含まれる複数の秘密鍵から1の秘密鍵をランダムに選択する(ステップS10)。
秘密鍵選択部103は、選択した秘密鍵を署名生成部104へ出力する。署名生成部104は、秘密鍵選択部103から選択された1の秘密鍵を受け取ると、受け取った秘密鍵を用いて、メッセージデータmに対する署名データSを生成する(ステップS15)。なお、署名データSは、改良NTRUSign署名方式に基づいて生成される。
署名生成部104は、署名データSの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部105へ出力する。署名データセット生成部105は、署名生成部104から生成完了通知を受け取ると、メッセージデータmと、署名生成部104にて生成されたメッセージデータmの署名データSと、読み出した公開鍵証明書CPとからなる署名データセットSSを生成する(ステップS20)。
送信部106は、署名データセット生成部105にて生成された署名データセットSSを、通信路50を介して署名検証装置20へ送信する(ステップS25)。
1.6 署名検証装置20の動作
署名検証装置20は、署名生成装置10より署名データセットSSを通信路50を介して受信し、その署名データセットSSを検証する。以下において、署名検証装置20にて行われる署名検証処理について、図3にて示す流れ図を用いて説明する。
受信部204は、署名生成装置10から送信された署名データセットSSを、通信路50を介して受信する(ステップS100)。
受信部204は、受信した署名データセットSSを署名データセット格納部202に格納する(ステップS105)。
受信部204は、検証開始指示を署名検証部203へ出力する。署名検証部203は、受信部204から検証を開始する旨の検証開始指示を受け取る。署名検証部203は、署名データSPが公開鍵hの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する(ステップS110)。
署名データSPが正しい署名であると判断する場合には(ステップS110における「OK」)、署名検証部203は、署名データSがメッセージデータmの正しい署名であるかを、公開鍵hを用いて検証する(ステップS115)。
署名データSが正しい署名であると判断する場合には(ステップS115における「OK」)、署名検証部203は、表示部205を介して、メッセージ「OK」を表示する(ステップS120)。
署名データSPが正しい署名でないと判断する場合(ステップS110における「NG」)、及び署名データSが正しい署名でないと判断する場合には(ステップS115における「NG」)、署名検証部203は、表示部205を介して、メッセージ「NG」を表示する(ステップS125)。
なお、署名検証部203は、改良NTRUSign署名方式を用いて、各署名データの検証を行う。
1.7 鍵生成装置30の動作
鍵生成装置30は、秘密鍵群GKSと証明書CPとを生成し、生成した秘密鍵群GKSと証明書CPとを署名生成装置10に設定する。以下において、鍵生成装置30にて行われる鍵生成処理の動作について、図4にて示す流れ図を用いて説明する。
鍵生成部302は、従来のNTRUSign署名方式の鍵生成方法を用いて、秘密鍵{(f,g),(F,G)}と公開鍵hを生成する(ステップS200)。
鍵生成部302は、秘密鍵群の生成を指示する鍵群生成指示を秘密鍵群生成部303へ出力し、公開鍵証明書CPの生成を指示する証明書生成指示を証明書生成部304へ出力する。秘密鍵群生成部303は、鍵生成部302から鍵群生成指示を受け取ると、秘密鍵群生成処理により、{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…,{(f,g),(F_u,G_u)}からなる秘密鍵群GKSを生成する(ステップS205)。ここで、uは秘密鍵群に含まれる秘密鍵の個数である。
証明書生成部304は、鍵生成部302から証明書生成指示を受け取ると、証明書生成鍵格納部301に格納されている証明書生成鍵KCSを読み出す。証明書生成部304は、読み出した証明書生成鍵KCSを用いて、鍵生成部302にて生成された公開鍵hに対する公開鍵証明書CPを生成する(ステップS210)。
秘密鍵群生成部303は、秘密鍵群GSKの生成が完了すると、生成した秘密鍵群GSKを署名生成装置10へ格納する旨の第1格納指示を鍵設定部305へ出力する。証明書生成部304は、公開鍵証明書CPの生成が完了すると、生成した公開鍵証明書CPを署名生成装置10へ格納する旨の第2格納指示を鍵設定部305へ出力する。鍵設定部305は、秘密鍵群生成部303から第1格納指示を受け取ると、秘密鍵群生成部303にて生成された秘密鍵群GSKを、署名生成装置10の秘密鍵群格納部101へ書き込み、証明書生成部304から第2格納指示を受け取ると、証明書生成部304にて生成された公開鍵証明書CPを、署名生成装置10の公開鍵証明書格納部102へ書き込む(ステップS215)。
1.8 秘密鍵群の生成方法
ここでは、秘密鍵群生成部303にて行われる改良NTRUSign署名方式を用いた秘密鍵群GSKの生成方法、つまり図4にて示す秘密鍵群生成処理の動作について、図5にて示す流れ図を用いて説明する。
秘密鍵群生成部303は、鍵生成部302にて生成された秘密鍵{(f,g),(F,G)}を秘密鍵{(f,g),(F_1,G_1)}として秘密鍵群GKSに加える(ステップS300)。
秘密鍵群生成部303は、u←2,v←0,F’←F,G’←Gとする(ステップS305)。
次に、秘密鍵群生成部303は、F’←F’+X^v×f,G’←G’+X^v×gとする(ステップS310)。
秘密鍵群生成部303は、||(F’,G’)||>Keyboundであるか否かを判定する(ステップS315)。
||(F’,G’)||>Keyboundでないと判定する場合には(ステップS315における「NO」)、秘密鍵群生成部303は、(F’,G’)を秘密鍵{(f,g),(F_u,G_u)}として秘密鍵群GKSに加え(ステップS320)、u←u+1とする(ステップS325)。秘密鍵群生成部303は、v←v+1とし(ステップS330)、v>vMAXであるか否かを判定する(ステップS335)。
v>vMAXであると判断する場合には(ステップS335における「YES」)、処理を終了する。v>vMAXでないと判断する場合には(ステップS335における「NO」)、ステップS310へ戻る。
||(F’,G’)||>Keyboundであると判定する場合には(ステップS315における「YES」)、秘密鍵群生成部303は、ステップS325以降を行う。
なお、上記の方法により生成した秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…は、それぞれf×G_1−g×F_1=q, f×G_2−g×F_2=q,…を満たすことに注意する。{(f,g),(F_1,G_1)}は、従来のNTRUSign署名方式の鍵生成方法を用いて生成するため、f×G_1−g×F_1=qが成り立つ。次に、ある正整数iに対して{(f,g),(F_i,G_i)}に対してf×G_i−g×F_i=qが成り立つとき、{(f,g),(F_(i+1),G_(i+1))}に対してf×G_(i+1)−g×F_(i+1)=qが成り立つことを示す。上記のフローチャートのステップS310より、
F_(i+1)=F_i+w×f, G_(i+1)=G_i+w×g
を満たす多項式wが存在する。ゆえに、
f×G_(i+1)−g×F_(i+1)=f×(G_i+w×g)−g×(F_i+w×f)
=f×G_i+w×f×g−g×F_i+w×f×g
=f×G_i−g×F_i=q
が成り立つ。したがって、上記の方法により生成した秘密鍵{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)},…は、それぞれf×G_1−g×F_1=q, f×G_2−g×F_2=q,…を満たす。
秘密鍵群の生成方法は上記に限らず、f×G’−g×F’=qを満たし、かつ||(F’,G’)||がKeybound以下であるような秘密鍵{(f,g),(F’,G’)}からなる秘密鍵群を生成する方法であればよい。
1.9 第1の実施の形態の全体の動作
第1の実施の形態におけるディジタル署名システム1の全体の動作を以下に示す。
ディジタル署名システム1の鍵生成装置30では、署名生成装置10の公開鍵及び秘密鍵群を生成し、署名生成装置10に設定する。署名生成装置10は、メッセージデータmに対する署名データセットSSを生成し、通信路50を介して署名検証装置20へ、生成した署名データセットSSを送信する。署名検証装置20は、通信路50を介して署名生成装置10から、署名データセットSSを受信し検証する。
1.10 第1の実施の形態の効果
第1の実施の形態におけるディジタル署名システム1では、署名検証するための公開鍵は一つであるが、それに対応する秘密鍵が複数存在している。署名生成装置10では、秘密鍵群に含まれる複数の秘密鍵から一つの秘密鍵を選択し、署名データを生成している。秘密鍵群に含まれる秘密鍵の個数を2とし、それぞれの秘密鍵を{(f,g),(F_1,G_1)},{(f,g),(F_2,G_2)}とする場合を考える。このとき、Transcript attackを実行する攻撃者は、通信路50に流れる署名データセットを入手して、Transcript attackを試みる。攻撃者には、入手した署名データセットがどちらの秘密鍵により生成されたかがわからないため、入手した署名データセットを使用された秘密鍵により分類して、それぞれを用いて攻撃することはできない。そこで、入手したすべての署名データセットから署名とハッシュ値の差分を取り、その平均を求めることで攻撃をすると、2種類の秘密鍵を用いているため、署名データセットに2種類の秘密鍵の情報が入ってしまう。その結果、Transcript attackを実行しても、2次モーメント及び4次モーメントの平均から2種類の秘密鍵の情報が混ざった状態で入手できるが、これを一つ一つの秘密鍵の情報に分離することができない。したがって、ディジタル署名システム1は、Transcript attackを防ぐことができ、安全である。なお、上記では秘密鍵群に含まれる秘密鍵の個数を2としたが、これを3や3より大きい整数とすると、さらに2次モーメント及び4次モーメントの平均から秘密鍵の情報を分離することが困難になるため、さらに高い安全性をもつ。
2. 第2の実施の形態
以下、本発明に係る第2の実施の形態としてのディジタル署名システム1000について、図面を参照して説明する。
2.1 ディジタル署名システム1000の概要
ディジタル署名システム1000は、署名生成装置1010と、署名検証装置1020と、通信路1050とから構成される。
署名生成装置1010は、NTRUSign署名方式を用いて、メッセージデータmに対する署名データセットSSを生成し、通信路1050を介して署名検証装置1020に署名データセットSSを送信する。なお、署名データセットSSの構成については、後述する。
署名検証装置1020は、署名生成装置1010から、署名データセットSSを受信し、受信した署名データセットSSがメッセージデータmの正しい署名であるかを検証する。署名検証装置1020は、署名データセットSSが正しいと判定する場合には、署名データセットSSを受理し、署名データセットSSが不正と判定する場合には、署名データセットSSを拒否する。
2.2 署名生成装置1010の構成
署名生成装置1010は、図6に示すように、秘密鍵格納部1101と、公開鍵証明書格納部1102と、秘密鍵更新部1103と、署名生成部1104と、署名データセット生成部1105と、送信部1106と、表示部1107とから構成される。
署名生成装置1010は、入力であるメッセージデータmに対する署名データセットSSを生成し、生成した署名データセットSSを署名検証装置1020へ送信する。
署名生成装置1010を構成する署名データセット生成部1105及び送信部1106は、それぞれ、第1の実施の形態にて示す署名データセット生成部105及び送信部106と同様の動作を行うため、ここでの説明は省略する。
(1)秘密鍵格納部1101
秘密鍵格納部1101は、秘密鍵{(f,g),(F,G)}を格納するための領域を有している。
なお、ここでは、秘密鍵格納部1101は、秘密鍵{(f,g),(F,G)}を予め格納しているものとする。
(2)公開鍵証明書格納部1102
公開鍵証明書格納部1102は、秘密鍵{(f,g),(F,G)}に対応する公開鍵hの公開鍵証明書CPを格納するための領域を有している。
公開鍵証明書CPは、公開鍵hと、公開鍵hの署名データSPとからなる。署名データSPは、改良NTRUSign署名方式に基づいて生成される。また、ここでは、公開鍵証明書格納部1102は、公開鍵証明書CPは予め格納しているものとする。なお、公開鍵証明書CPには、公開鍵hと署名データSPに加えて他のデータを含んでいてもよい。例えば、ユーザの識別子や証明書の期限などを含んでもよい。
(3)秘密鍵更新部1103
秘密鍵更新部1103は、所定値Keybound及び秘密鍵の検索回数の上限値を示すvMAXを予め格納している。ここで、vMAXは、例えば1000である。
秘密鍵更新部1103は、定期的、例えば、1ヶ月ごとに、以下の動作により秘密鍵格納部1101に格納されている秘密鍵を更新する。なお、秘密鍵の更新のタイミングは、月単位でもよいし、日単位でもよいし、時間単位でもよい。
秘密鍵更新部1103は、改良NTRUSign署名方式を用いて、所定値vMAX以下の検索回数にて、ノルム||(F’,G’)||が、所定値Keybound以下となる対(F’,G’)を生成することにより、公開鍵hに対応し、且つ秘密鍵格納部1101に格納されている秘密鍵{(f,g),(F,G)}とは異なる秘密鍵{(f,g),(F’,G’)}を生成する。
秘密鍵更新部1103は、秘密鍵格納部1101に格納されている秘密鍵に新たに生成した{(f,g),(F’,G’)}を上書きして更新する。
秘密鍵更新部1103は、所定値vMAX以下にて、対(F’,G’)を生成することができない場合には、秘密鍵を更新することができない旨を示す更新不可メッセージを、表示部1107を介して表示する。
なお、秘密鍵の更新方法の詳細については、後述する。
(4)署名生成部1104
署名生成部1104は、署名データセット生成部1105から、メッセージデータmの署名データの生成の指示を示す署名生成指示を受け取ると、秘密鍵格納部1101から秘密鍵を読み出す。
署名生成部1104は、読み出した秘密鍵を用いて、メッセージデータmに対する署名データSを生成、メッセージデータmに署名を施して署名データSを生成する。
署名生成部1104は、署名データSの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部1105へ出力する。
なお、署名データSは、改良NTRUSign署名方式に基づいて生成される。
(5)表示部1107
表示部1107は、秘密鍵更新部1103から受け取ったメッセージを表示する。
2.3 署名検証装置1020
署名検証装置1020は、図6に示すように、CA公開鍵格納部1201と、署名データセット格納部1202と、署名検証部1203と、受信部1204と、表示部1205とから構成される。
署名検証装置1020を構成するCA公開鍵格納部1201、署名データセット格納部1202、署名検証部1203、受信部1204、及び表示部1205は、それぞれ、第1の実施の形態にて示すCA公開鍵格納部201、署名データセット格納部202、署名検証部203、受信部204、及び表示部205と同様の動作を行うため、ここでの説明は省略する。
2.4 秘密鍵の更新方法
ここでは、秘密鍵更新部1103にて行われる秘密鍵の更新方法(秘密鍵更新処理)について、図7に示す流れ図を用いて説明する。
秘密鍵更新部1103は、{(f,g),(F,G)}を秘密鍵{(f,g),(F_1,G_1)}として秘密鍵格納部1101から読み出す(ステップS400)。
秘密鍵更新部1103は、変数v,F’,G’に対して、v←0,F’←F,G’←Gを設定する(ステップS405)。
秘密鍵更新部1103は、変数F’,G’に対して、F’←F’+X^v×f,G’←G’+X^v×gを設定する(ステップS410)。
秘密鍵更新部1103は、ノルム||(F’,G’)||が所定値Keyboundを超えているか否かを判定する(ステップS415)。
ノルム||(F’,G’)||が所定値Keyboundを超えていると判定する場合には(ステップS415における「YES」)、秘密鍵更新部1103は、変数vに対して、v←v+1とし(ステップS420)、変数vが所定値vMAXを超えているか否かを判定する(ステップS425)。
変数vが所定値vMAXを超えていると判定する場合には(ステップS425における「YES」)、秘密鍵更新部1103は、更新不可メッセージを表示部1107を介して表示する(ステップS430)。変数vが所定値vMAXを超えていないと判定する場合には(ステップS425における「NO」)、秘密鍵更新部1103は、ステップS410へ戻る。
ノルム||(F’,G’)||が所定値Keyboundを超えていないと判定する場合には(ステップS415における「NO」)、秘密鍵更新部1103は、秘密鍵格納部1101に格納されている秘密鍵に生成した秘密鍵{(f,g),(F’,G’)}を上書きして更新することにより、新たな秘密鍵{(f,g),(F,G)}とする(ステップS435)。
なお、上記の方法により生成した秘密鍵{(f,g),(F’,G’)}は、それぞれf×G’−g×F’=qを満たすことに注意する。なお、秘密鍵の更新方法は上記に限らず、f×G’−g×F’=qを満たし、かつ||(F’,G’)||がKeybound以下の秘密鍵{(f,g),(F’,G’)}に更新する方法であればよい。
2.5 署名生成装置1010の動作
署名生成装置1010の動作は、メッセージデータmに対する署名データセットSSを生成し、通信路1050を介して署名検証装置1020へ送信する「署名生成処理」と、秘密鍵を更新する「秘密鍵更新処理」の動作からなる。以下に、各処理の動作について、説明する。
(1)署名生成処理
ここでは、署名生成処理の動作について、図8に示す流れ図を用いて説明する。
署名データセット生成部1105は、ユーザによる操作によりメッセージデータmを受け付ける(ステップS500)。
署名データセット生成部1105は、公開鍵証明書格納部1102から公開鍵証明書CPを読み出し、署名生成指示を署名生成部1104へ出力する。署名生成部1104は、署名データセット生成部105から、署名生成指示を受け取ると、秘密鍵格納部1101から秘密鍵を読み出す。署名生成部1104は、読み出した秘密鍵を用いて、メッセージデータmに対する署名データSを生成する(ステップS505)。
署名生成部1104は、署名データSの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部1105へ出力する。署名データセット生成部1105は、署名生成部1104から生成完了通知を受け取ると、メッセージデータmと、署名生成部1104にて生成されたメッセージデータmの署名データSと、読み出した公開鍵証明書CPとからなる署名データセットSSを生成する(ステップS510)。
送信部1106は、署名データセット生成部1105にて生成された署名データセットSSを、通信路1050を介して署名検証装置1020へ送信する(ステップS515)。
(2)秘密鍵更新処理
秘密鍵更新部1103は、秘密鍵格納部1101に格納されている秘密鍵{(f,g),(F,G)}を用いて、新たな秘密鍵{(f,g),(F’,G’)}を生成し、秘密鍵格納部1101に格納されている秘密鍵に新たな秘密鍵を上書きして更新する。
なお、詳細な動作は、図7にて示しているため、ここでの説明は省略する。
2.6 署名検証装置1020の動作
署名検証装置1020は、署名生成装置1010より署名データセットSSを通信路1050を介して受信し、その署名データセットSSを検証する。なお、署名検証装置1020にて行われる署名検証処理は、第1の実施の形態における図3にて示す流れ図と同様の動作であるため、ここでの説明は省略する。
2.7 実施の形態2の全体の動作
第2の実施の形態におけるディジタル署名システム1000の全体の動作を以下に示す。
ディジタル署名システム1000の署名生成装置1010は、「署名生成処理」にて、入力であるメッセージデータmに対して、署名データセットSSを生成し、署名検証装置1020へ送信する。署名検証装置1020は、署名生成装置1010から、署名データセットSSを受信し、受信した署名データセットを検証し、その検証結果により、署名データセットSSを受理する、または、拒否するかを決定する。また、「鍵更新処理」にて、署名生成装置1010は、秘密鍵を更新する。
2.8 第2の実施の形態の効果
第2の実施の形態におけるディジタル署名システム1000では、署名検証するための公開鍵は一つであるが、それに対応する秘密鍵が更新されていく。この更新タイミングは、通信路1050から署名データセットを入手して、Transcript attackを実行する攻撃者にはわからない。ここで、一回のみ秘密鍵が更新された場合について考える。攻撃者には入手した署名データセットを生成するために使用した秘密鍵の更新タイミングがわからないため、入手した署名データセットを使用された秘密鍵により厳密に分類して、それぞれを用いて攻撃することはできない。そこで、入手したすべての署名データセットから署名とハッシュ値の差分を取り、その平均を求めることで攻撃をすると、ある時期を境にして、2種類の秘密鍵を用いているため、入手した署名データセットを秘密鍵により正しく分類できない限り、署名データセットに2種類の秘密鍵の情報が入ってしまう。その結果、Transcript attackを実行しても、2次モーメント及び4次モーメントの平均から2種類の秘密鍵の情報が混ざった状態で入手できるが、これを一つ一つの秘密鍵の情報に分離することができない。したがって、ディジタル署名システム1000では第1の実施の形態におけるディジタル署名システム1と同様に、Transcript attackを防ぐことができ、安全である。
3.変形例
上記に説明した第1及び第2の実施の形態は、本発明の実施の一例であり、本発明はこれら実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)第1の実施の形態では、対(f,g)の各値はそれぞれ固定し、対(G,F)の各値を変更したが、これに限定されない。対(f,g)の値も可変として複数の秘密鍵を設定してもよい。この場合、NTRUSign署名方式の鍵の条件であるf×G−g×F=qは満たすものとする。または、対(f,g)の各値を可変とし、対(F,G)の各値は固定としてもよい。
また、第2の実施の形態も同様に、対(f,g)の各値も可変として秘密鍵の更新を行ってもよい。または、対(f,g)の各値を可変とし、対(F,G)の各値は固定としてもよい。
(2)第1の実施の形態の秘密鍵群生成部及び第2の実施の形態における秘密鍵更新部における、秘密鍵の探索回数を示すvMAXの値は1000に限らない。他の値、例えば、10000でもよい。
(3)第1の実施の形態において、ランダムに秘密鍵を選択するではなく、定められたルールにしたがって選択してもよい。
例えば、署名生成装置は、署名データセットを生成した回数をカウントして、第1の所定回数(例えば、10^7回など)に達するまで、同じ秘密鍵を使用し、その後、先とは異なる秘密鍵を第2の所定回数(例えば、10^8回など)に達するまで使用するとしてもよい。このとき、署名生成装置は、ポインタにより現在使用している秘密鍵を特定することにより、第1の所定回数に達するまで、同じ秘密鍵を使用することができる。このような場合においても、使用する秘密鍵の切り替えのタイミングを攻撃者がわからないため、Transcript attackに対して安全である。なお、カウントの対象は、署名データを生成した回数でもよい。
または、署名生成装置は、複数の秘密鍵が格納されている順に選択してもよい。このとき、署名生成装置は、ポインタを用いて現在使用している秘密鍵を特定し、次に使用する秘密鍵へとポインタの位置を変更することにより、複数の秘密鍵が格納されている順に選択することができる。これにより、署名生成装置は、署名生成時には、前回署名に使用した秘密鍵とは別の秘密鍵を取得し、取得した別の秘密鍵を用いて、署名データを生成することができる。
(4)第2の実施の形態において、秘密鍵を更新するタイミングを署名データセットを生成した回数に依存させてもよい。例えば、秘密鍵を用いて、署名データセットを所定回数(例えば、10^7回など)生成したときに秘密鍵を更新するとしてもよい。このような場合においても、使用する秘密鍵の切り替えのタイミングを攻撃者がわからないため、Transcript attackに対して安全である。
(5)第1及び第2実施の形態では、署名方式としてNTRUSign署名方式またはその方式をベースとした改良方式を用いているが、これに限らない。一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式であればよい。
例えば、NTRUSign署名方式とは異なり、且つ格子を用いた署名方式である。
(6)第1の実施の形態において、鍵生成装置と署名生成装置とは、個別の装置としたが、これに限定されない。ディジタル署名システム1は、鍵生成装置と署名生成装置からなる装置、及び署名検証装置から構成されるとしてもよい。
(7)第1の実施の形態において、署名生成装置は、ユーザの操作によりメッセージデータを受け付けるとしたが、これに限定されない。
署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
また、第2の実施の形態においても同様に、署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
(8)これらの実施の形態及び変形例の組合せであってもよい。
<その他の変形例>
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
(3)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記ディジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記ディジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記ディジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
4.まとめ
本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u) (uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
ここで、前記秘密鍵選択部は、前記秘密鍵群に含まれる複数の前記秘密鍵からランダムに一つの前記秘密鍵を選択するとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、前記公開鍵と前記秘密鍵を生成する鍵生成装置であって、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u) (uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを含み、前記鍵生成ステップを用いて、前記公開鍵と複数の前記秘密鍵を生成することを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置であって、前記秘密鍵を格納する秘密鍵格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部と、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新部とを備えることを特徴とする。
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対(F,G)を生成し、前記元の4つ組(f,g,F,G)を前記秘密鍵として生成し、前記秘密鍵を秘密鍵とする鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置と前記署名データを検証する署名検証装置とからなるディジタル署名システムであって、前記署名生成装置は、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成方法であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択ステップと、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップとを含むことを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成方法であって、前記秘密鍵を格納する秘密鍵格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新ステップとを含むことを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置に実行させるプログラムであって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択ステップと、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップとを前記署名生成装置に実行させることを特徴とする。
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u) (uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを含むとしてもよい。
ここで、前記秘密鍵選択ステップは、前記秘密鍵群に含まれる複数の前記秘密鍵からランダムに一つの前記秘密鍵を選択するとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置に実行させるプログラムであって、前記秘密鍵を格納する秘密鍵格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新ステップとを前記署名生成装置に実行させることを特徴とする。
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを公開鍵として生成し、f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対(F,G)を生成し、前記元の4つ組(f,g,F,G)を前記秘密鍵として生成し、前記秘密鍵を秘密鍵とする鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置の集積回路であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置の集積回路であって、前記秘密鍵を格納する秘密鍵格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部と、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新部とを備えることを特徴とする。
上記の示したディジタル署名システムの構成によると、Transcript attackを防ぐことができる。
また、上記にて示したディジタル署名システムを構成する各装置は、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
ディジタル署名システム1の構成を示すブロック図である。 署名生成装置10にて行われる署名生成処理の動作を示す流れ図である。 署名検証装置20にて行われる署名検証処理の動作を示す流れ図である。 鍵生成装置30にて行われる鍵生成処理の動作を示す流れ図である。 鍵生成装置30にて行われる秘密鍵群生成処理の動作を示す流れ図である。 ディジタル署名システム1000の構成を示すブロック図である。 署名生成装置1010にて行われる秘密鍵更新処理の動作を示す流れ図である。 署名生成装置1010にて行われる署名生成処理の動作を示す流れ図である。
符号の説明
1 ディジタル署名システム
10 署名生成装置
20 署名検証装置
30 鍵生成装置
50 通信路
101 秘密鍵群格納部
102 公開鍵証明書格納部
103 秘密鍵選択部
104 署名生成部
105 署名データセット生成部
106 送信部
201 CA公開鍵格納部
202 署名データセット格納部
203 署名検証部
204 受信部
205 表示部
301 証明書生成鍵格納部
302 鍵生成部
303 秘密鍵群生成部
304 証明書生成部
305 鍵設定部
1000 ディジタル署名システム
1010 署名生成装置
1020 署名検証装置
1050 通信路
1101 秘密鍵格納部
1102 公開鍵証明書格納部
1103 秘密鍵更新部
1104 署名生成部
1105 署名データセット生成部
1106 送信部
1107 表示部
1201 CA公開鍵格納部
1202 署名データセット格納部
1203 署名検証部
1204 受信部
1205 表示部

Claims (21)

  1. メッセージデータに対する署名データを生成する署名生成装置であって、
    1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、
    取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段と
    を備えることを特徴とする署名生成装置。
  2. 前記所定の取得方法とは、複数の秘密鍵のうちの1の秘密鍵をランダムに取得することであり、
    前記秘密鍵取得手段は、
    前記複数の秘密鍵のうちの前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵をランダムに取得する
    ことを特徴とする請求項1に記載の署名生成装置。
  3. 前記秘密鍵取得手段は、
    前記複数の秘密鍵を記憶しており、記憶している前記複数の秘密鍵から前記他の1の秘密鍵を、前記所定の取得方法により取得する
    ことを特徴とする請求項1に記載の署名生成装置。
  4. 前記署名方式は、格子を用いた署名方式であり、
    前記秘密鍵取得手段は、前記格子を用いた署名方式の鍵生成方法にて生成された前記複数の秘密鍵を記憶している
    ことを特徴とする請求項3に記載の署名生成装置。
  5. 前記署名方式は、NTRU署名方式であり、
    加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqとに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成する公開鍵生成ステップと、
    f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u)(uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップと、
    生成した前記複数の秘密鍵のうち1の秘密鍵を用いて、署名データを生成する署名生成ステップとを含み、
    前記秘密鍵取得手段が記憶している前記複数の秘密鍵は、前記秘密鍵ステップにより生成され、
    前記署名生成手段は、前記署名生成ステップにより前記署名データを生成する
    ことを特徴とする請求項4に記載の署名生成装置。
  6. 前記署名生成装置は、
    前記署名方式を用いて前記公開鍵及び前記複数の秘密鍵を生成する鍵生成装置
    を含むことを特徴とする請求項5に記載の署名生成装置。
  7. 前記所定の取得方法とは、複数の秘密鍵のうちの1の秘密鍵をランダムに取得することであり、
    前記鍵取得手段は、
    記憶している前記複数の秘密鍵から前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵をランダムに取得する
    ことを特徴とする請求項3に記載の署名生成装置。
  8. 前記所定の取得方法とは、記憶している順序に基づいて、複数の秘密鍵のうちの1の秘密鍵を取得することであり、
    前記鍵取得手段は、
    前記複数の秘密鍵を記憶している順序に基づいて、前回署名に利用した秘密鍵とは異なる前記他の1の秘密鍵を取得する
    ことを特徴とする請求項3に記載の署名生成装置。
  9. 前記所定の取得方法とは、複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、前記鍵生成方法により生成して取得することであり、
    前記鍵取得手段は、
    前記1の公開鍵に対応し、前記署名方式にて生成された第1秘密鍵を記憶しており、前記第1秘密鍵を利用した後、前記鍵生成方法により前記1の公開鍵に対応する第2秘密鍵を生成し、記憶している前記第1秘密鍵を、生成した前記第2秘密鍵へと更新し、前記署名データの生成時に、記憶している前記第2秘密鍵を前記1の秘密鍵として取得する
    ことを特徴とする請求項1に記載の署名生成装置。
  10. メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置であって、
    1の公開鍵に複数の秘密鍵が対応する署名方式により前記1の公開鍵を生成する公開鍵生成手段と、
    前記署名方式により前記1の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成手段と
    を備えることを特徴とする鍵生成装置。
  11. 前記署名方式は、格子を用いた方式であり、
    前記公開鍵生成手段は、
    前記署名方式により、前記公開鍵を生成し、
    前記秘密鍵生成手段は、
    前記署名方式により、前記複数の秘密鍵を生成する
    ことを特徴する請求項10に記載の鍵生成装置。
  12. 前記署名方式は、NTRU署名方式であり、
    加算、減算、乗算と元の大きさを示すノルムが定義されたN次元配列の集合である環Rと、前記環Rのイデアルqとに対し、前記環Rの元f,gおよび、f(mod q)の逆数である元Fqを生成し、前記元gおよび前記元Fqの積とmod qで合同である元hを前記公開鍵として生成する公開鍵生成ステップと、
    f×G−g×F=qを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Rの元の対である複数の解(F,G)=(F_1,G_1),(F_2,G_2),…,(F_u,G_u)(uは1より大きい正整数)を生成し、複数の前記元の4つ組(f,g,F_1,G_1),(f,g,F_2,G_2),…,(f,g,F_u,G_u)のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップとを含み、
    前記公開鍵生成手段は、前記公開鍵生成ステップにより前記公開鍵を生成し、
    前記秘密鍵生成手段は、前記秘密鍵生成ステップにより前記複数の秘密鍵を生成する
    ことを特徴とする請求項11に記載の鍵生成装置。
  13. メッセージデータに対する署名データを生成する署名生成装置と、署名の検証を行う署名検証装置とからなる署名システムであって、
    前記署名生成装置は、
    1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、
    取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備え、
    前記署名検証装置は、
    前記公開鍵を用いて、前記署名データを検証する検証手段
    を備えることを特徴とする署名システム。
  14. メッセージデータに対する署名データを生成する署名生成装置で用いられる署名生成方法であって、
    1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得ステップと、
    取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成ステップと
    を含むことを特徴とする署名生成方法。
  15. メッセージデータに対する署名データを生成する署名生成装置で用いられる署名生成プログラムであって、
    1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得ステップと、
    取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成ステップと
    を含むことを特徴とする署名生成プログラム。
  16. 前記署名生成プログラムは、
    コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項15に記載の署名生成プログラム。
  17. メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置で用いられる鍵生成方法であって、
    1の公開鍵に複数の秘密鍵が対応する署名方式により前記1の公開鍵を生成する公開鍵生成ステップと、
    前記署名方式により前記1の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成ステップと
    を含むことを特徴とする鍵生成方法。
  18. メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置で用いられる鍵生成プログラムであって、
    1の公開鍵に複数の秘密鍵が対応する署名方式により前記1の公開鍵を生成する公開鍵生成ステップと、
    前記署名方式により前記1の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成ステップと
    を含むことを特徴とする鍵生成プログラム。
  19. 前記鍵生成プログラムは、
    コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項18に記載の鍵生成プログラム。
  20. メッセージデータに対する署名データを生成する署名生成装置の集積回路であって、
    1の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の1の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、
    取得した前記他の1の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段と
    を備えることを特徴とする集積回路。
  21. メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置の集積回路であって、
    1の公開鍵に複数の秘密鍵が対応する署名方式により前記1の公開鍵を生成する公開鍵生成手段と、
    前記署名方式により前記1の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成手段と
    を備えることを特徴とする集積回路。
JP2006552394A 2005-01-24 2006-01-17 署名生成装置、鍵生成装置及び署名生成方法 Active JP4544538B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005015161 2005-01-24
JP2005015161 2005-01-24
PCT/JP2006/300508 WO2006077820A1 (ja) 2005-01-24 2006-01-17 署名生成装置、鍵生成装置及び署名生成方法

Publications (2)

Publication Number Publication Date
JPWO2006077820A1 true JPWO2006077820A1 (ja) 2008-06-19
JP4544538B2 JP4544538B2 (ja) 2010-09-15

Family

ID=36692209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006552394A Active JP4544538B2 (ja) 2005-01-24 2006-01-17 署名生成装置、鍵生成装置及び署名生成方法

Country Status (6)

Country Link
US (1) US7664260B2 (ja)
EP (1) EP1843512B1 (ja)
JP (1) JP4544538B2 (ja)
CN (1) CN101107809A (ja)
DE (1) DE602006012935D1 (ja)
WO (1) WO2006077820A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004461A (ja) * 2005-06-23 2007-01-11 Nec Corp サービス提供システム、アウトソーシング業者装置、サービス提供方法およびプログラム
JP4294085B2 (ja) * 2007-02-23 2009-07-08 パナソニック株式会社 著作権保護データ処理システム、及び再生装置
FR2937484B1 (fr) * 2008-10-22 2011-06-17 Paycool Int Ltd Procede de signature numerique en deux etapes
JP5458657B2 (ja) * 2009-05-01 2014-04-02 ソニー株式会社 情報処理装置、鍵更新方法、及びプログラム
US8635455B2 (en) * 2009-09-29 2014-01-21 Zamtec Ltd Encrypted communication device with restricted rate of encryption key retrievals from memory
US8677135B2 (en) 2010-12-17 2014-03-18 Microsoft Corporation Digital signatures with error polynomials
CN102571339B (zh) * 2010-12-31 2014-12-17 上海格尔软件股份有限公司 基于智能密钥和数字签名的虚拟资产保护方法
US8954735B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Device, method, and system for secure trust anchor provisioning and protection using tamper-resistant hardware
CN103326861B (zh) * 2013-06-04 2016-12-28 北京华大信安科技有限公司 一种对数据进行rsa安全签名的方法、装置及安全芯片
US9607159B2 (en) * 2014-12-10 2017-03-28 International Business Machines Corporation Intelligent key selection and generation
CN104780047A (zh) * 2015-04-03 2015-07-15 南京邮电大学 前向安全的无证书可验证加密签名方法
TWI581599B (zh) * 2015-04-30 2017-05-01 鴻海精密工業股份有限公司 金鑰生成系統、資料簽章與加密系統和方法
CN106533675A (zh) * 2016-12-19 2017-03-22 北京洋浦伟业科技发展有限公司 数字签名方法及系统
CN107231367B (zh) * 2017-06-21 2021-03-19 北京奇虎科技有限公司 签名消息的自动通知方法、装置以及服务器
EP3598689B1 (en) 2018-07-17 2022-01-05 Assa Abloy AB Managing central secret keys of a plurality of user devices associated with a single public key
CN109787765B (zh) * 2019-02-27 2022-02-15 东南大学 一种用于水质在线监测的远程数据网关加密方法
CN110266472B (zh) * 2019-04-09 2021-06-08 武汉理工大学 支持混合秘密共享的sm9数字签名协同生成方法及系统
JP2021048518A (ja) 2019-09-19 2021-03-25 株式会社東芝 情報処理装置、情報処理システム及び情報処理装置の制御方法
AU2020267271A1 (en) * 2019-11-16 2021-06-03 Wildfi Pty Ltd System and method for secure storage and distribution of encryption keys
CN111600708A (zh) * 2020-05-15 2020-08-28 北京海泰方圆科技股份有限公司 一种信息处理方法、证书生成方法、装置、设备及介质
US11770263B1 (en) * 2022-12-06 2023-09-26 Citibank, N.A. Systems and methods for enforcing cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs comprising shared digital signature requirements
US11658833B1 (en) 2022-12-06 2023-05-23 Citibank, N.A. Systems and methods for conducting cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005515659A (ja) * 2001-12-07 2005-05-26 エヌティーアールユー・クリプトシステムズ・インコーポレーテッド ディジタル署名、認証方法及び装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6081597A (en) * 1996-08-19 2000-06-27 Ntru Cryptosystems, Inc. Public key cryptosystem method and apparatus
AU2002341532A1 (en) * 2002-09-24 2004-04-23 Laboratories For Information Technology A method of generating private keys

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005515659A (ja) * 2001-12-07 2005-05-26 エヌティーアールユー・クリプトシステムズ・インコーポレーテッド ディジタル署名、認証方法及び装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6010019036, Dodis Y. et al., "Strong Key−Insulated Signature Schemes", Lecture Notes in Computer Science, 20030521, Vol.2567, p.130−144 *

Also Published As

Publication number Publication date
US7664260B2 (en) 2010-02-16
CN101107809A (zh) 2008-01-16
EP1843512A4 (en) 2008-12-10
EP1843512B1 (en) 2010-03-17
US20080089514A1 (en) 2008-04-17
DE602006012935D1 (de) 2010-04-29
WO2006077820A1 (ja) 2006-07-27
EP1843512A1 (en) 2007-10-10
JP4544538B2 (ja) 2010-09-15

Similar Documents

Publication Publication Date Title
JP4544538B2 (ja) 署名生成装置、鍵生成装置及び署名生成方法
JP4548737B2 (ja) 署名生成装置及び署名検証装置
JP5341878B2 (ja) 署名及び検証方法、署名生成装置並びに署名検証装置
CN104539423B (zh) 一种无双线性对运算的无证书公钥密码体制的实现方法
JP4786531B2 (ja) 暗号システム、暗号装置、復号装置、プログラムおよび集積回路
JP5001176B2 (ja) 署名生成装置、署名生成方法及び署名生成プログラム
CN104011781B (zh) 信息处理设备、信息处理方法
JP4620669B2 (ja) 署名生成装置、署名検証装置、それらの方法、および集積回路
WO2013031414A1 (ja) 署名検証装置、署名検証方法、プログラム、及び記録媒体
EP2753019A1 (en) Information processing device, signature generation device, information processing method, signature generation method, and program
CN102263639A (zh) 认证装置、认证方法、程序和签名生成装置
EP2503729A1 (en) Information processing device, key generating device, signature verifying device, information processing method, signature generating method, and program
CN101877639A (zh) 信息处理设备、密钥更新方法和程序
JPWO2006114948A1 (ja) 署名生成装置および署名検証装置
CN103718501A (zh) 信息处理设备、信息处理方法、程序和记录介质
JP2007114494A (ja) 秘匿計算方法及び装置
CN103718502A (zh) 信息处理设备、信息处理方法、程序和记录介质
CN103748830A (zh) 信息处理设备、签名提供方法、签名验证方法、程序和记录介质
JP5300373B2 (ja) 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム
JP4176537B2 (ja) 匿名署名装置、署名検証装置、匿名署名方法、匿名署名プログラム及び署名検証プログラム
JP5871827B2 (ja) 安全性強化システム、安全性強化装置、検証装置、およびプログラム
CN103733562A (zh) 信息处理设备和信息处理方法
Zheng et al. z-OTS: a one-time hash-based digital signaturescheme with fast verification
JP2016126228A (ja) 安全性強化方法、安全性強化システム、安全性強化装置、検証装置、およびプログラム
CN103718228A (zh) 信息处理设备和信息处理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100413

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100511

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: 20100601

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100624

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4544538

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150