JPWO2006077822A1 - 署名生成装置及び署名検証装置 - Google Patents

署名生成装置及び署名検証装置 Download PDF

Info

Publication number
JPWO2006077822A1
JPWO2006077822A1 JP2006543311A JP2006543311A JPWO2006077822A1 JP WO2006077822 A1 JPWO2006077822 A1 JP WO2006077822A1 JP 2006543311 A JP2006543311 A JP 2006543311A JP 2006543311 A JP2006543311 A JP 2006543311A JP WO2006077822 A1 JPWO2006077822 A1 JP WO2006077822A1
Authority
JP
Japan
Prior art keywords
signature
key
data
verification
unit
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
JP2006543311A
Other languages
English (en)
Other versions
JP4548737B2 (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 JPWO2006077822A1 publication Critical patent/JPWO2006077822A1/ja
Application granted granted Critical
Publication of JP4548737B2 publication Critical patent/JP4548737B2/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/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
    • 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/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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

署名データに対するTranscript attackを防ぐことのできる署名生成装置を提供する。 署名鍵を用いて署名を行う署名生成装置は、前記署名鍵を記憶し、前記署名鍵を用いて、署名対象データに署名を施して、署名データを生成し、前記署名データの生成時に、前記署名鍵を用いて署名を行った累積回数をカウントし、カウントした累積回数が所定回数に達しているか否かを判断し、カウントした累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する。

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
上述したNTRUSign署名方式には、Transcrip atttackと呼ばれる攻撃がある。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を防ぐことのできる署名生成装置、署名検証装置、署名システム、署名生成方法、署名検証プログラム、署名検証方法、署名検証プログラム、署名生成用の集積回路及び署名検証用の集積回路を提供することを目的とする。
上記目的を達成するために、本発明は、署名鍵を用いて署名を行う署名生成装置であって、前記署名鍵を記憶している鍵記憶手段と、前記署名鍵を用いて、署名対象データに署名を施して、署名データを生成する署名生成手段と、前記署名データの生成時に、前記署名鍵を用いて署名を行った累積回数をカウントするカウンタ手段と、前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断手段と、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止手段とを備えることを特徴とする。
ここで、署名抑止手段のよる署名抑止とは、鍵記憶手段にて記憶されている署名鍵の使用を禁止する概念、及び鍵記憶手段に記憶されている署名鍵を削除し、別の署名鍵を鍵記憶手段へ書き込む、つまり上書きする概念の両方を含む。
上記に示した構成によると、署名生成装置は、署名鍵を用いて署名を行った累積回数をカウントし、累積回数が所定回数に達している場合には、以後、前記署名鍵による署名を抑止するので、前記署名鍵を用いた署名に対するTranscript attackを防ぐことができる。
ここで、前記署名抑止手段は、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、前記署名鍵とは別の署名鍵を生成し、生成した前記別の署名鍵を、前記鍵記憶手段にて記憶されている前記署名鍵に対して上書きすることにより、前記署名鍵による署名を抑止するとしてもよい。
この構成によると、署名生成装置は、累積回数が所定回数に達している場合には、前記署名鍵とは別の署名鍵を生成し、前記鍵記憶手段にて記憶している前記署名鍵に対して生成した前記別の署名鍵を上書きしているので、前記署名鍵を用いた署名の抑止を確実に行うことができる。
ここで、前記署名生成装置は、さらに、前記署名鍵に対応する検証鍵と、前記検証鍵の正当性を示し、第1の秘密鍵により生成された検証鍵署名データとを含む検証鍵証明書を記憶している検証鍵証明書記憶手段と、前記第1の秘密鍵に対応する公開鍵と、前記公開鍵の正当性を示し、外部の機関が有する第2の秘密鍵により生成された公開鍵署名データとを含む公開鍵証明書を記憶している公開鍵証明書記憶手段と、前記署名対象データと、前記署名生成手段にて生成された前記署名データと、前記検証鍵証明書と、前記公開鍵証明書とを、前記署名データの検証を行う署名検証装置へ送信する送信手段とを備えるとしてもよい。
この構成によると、署名生成装置は、署名データの検証に必要な検証鍵を多階層化して署名検証装置へ送信しているので、検証鍵の正当性を高めることができる。
ここで、前記署名抑止手段は、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、さらに、前記別の署名鍵に対応し、前記検証鍵とは別の検証鍵を生成し、生成した前記別の検証鍵に対して、前記第1の秘密鍵を用いて、前記検証鍵署名データとは別の検証鍵署名データを生成し、前記別の検証鍵と前記検証鍵署名データとを含む、前記検証鍵証明書とは別の検証鍵証明書を生成し、生成した前記別の検証鍵証明書を、前記公開鍵証明書記憶手段に記憶されている前記検証鍵証明書に対して上書きするとしてもよい。
この構成によると、署名生成装置は、累積回数が所定回数に達している場合には、前記検証鍵証明書とは別の検証鍵証明書を生成し、前記検証鍵証明書記憶手段にて記憶している前記検証鍵証明書に対して生成した前記別の検証鍵証明書を上書きしている。これにより、別の署名鍵と別の検証鍵証明書との同期をとることができ、署名生成装置は、生成した別の署名鍵を、署名に利用することができる。
ここで、前記署名生成装置は、さらに、前記署名鍵を示す第1鍵情報を記憶している情報記憶手段を備え、前記署名生成手段は、前記記憶手段にて記憶されている第1鍵情報に基づいて、前記鍵記憶手段から前記署名鍵を取得し、取得した前記署名鍵を用いて、前記署名データを生成し、前記鍵記憶手段は、さらに、前記署名鍵とは別の署名鍵を記憶しており、前記署名抑止手段は、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、前記情報記憶手段にて記憶されている前記第1鍵情報を、前記別の署名鍵を示す第2鍵情報へと書き換えることにより、前記署名鍵による署名を抑止するとしてもよい。
この構成によると、署名生成装置は、累積回数が所定回数に達している場合には、情報記憶手段にて記憶している第1鍵情報を第2鍵情報へと書き換えているので、前記署名鍵を用いた署名の抑止を確実に行うことができる。
ここで、前記署名生成手段は、前記カウンタ手段にてカウントされた累積回数を取得し、前記署名対象データは、メッセージデータと取得した累積回数とを含むとしてもよい。
この構成によると、署名生成装置は、署名対象データにメッセージデータと累積回数とを含んでいるので、生成する署名データの正当性を高めることができる。
ここで、前記署名生成装置は、さらに、時刻を計時する時計手段を備え、前記署名生成手段は、前記時計手段を用いて、署名データの有効期限の判断基準となる時刻情報を取得し、前記署名対象データは、メッセージデータと取得した前記時刻情報とを含むとしてもよい。
この構成によると、署名生成装置は、署名対象データにメッセージデータと時刻情報とを含んでいるので、生成する署名データの正当性を高めることができる。
ここで、前記判断手段は、前記所定回数を記憶している回数記憶部を有しており、前記署名生成装置は、さらに、前記回数記憶部にて記憶されている前記所定回数を別の所定回数へと更新する更新手段を備えるとしてもよい。
この構成によると、署名生成装置は、Transcript attackに必要な署名データの数が変更された場合でも、所定回数を更新することができるので、Transcript attackを防ぐことができる。
また、本発明は、署名鍵を用いて署名を行う署名生成装置にて生成された署名データを検証する署名検証装置であって、前記署名生成装置から、メッセージデータと前記署名生成装置が前記署名鍵を用いて署名を行った累積回数とを含む署名対象データと、前記署名対象データに対する署名データとを、前記署名生成装置から受信する受信手段と、受信した前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断手段と、前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止手段とを備えることを特徴とする。
この構成によると、署名検証装置は、受信した署名対象データに含まれる累積回数が所定回数に達している場合には、受信した署名データの検証を抑止している。これにより、累積回数が所定回数に達している署名データを受信すると、受信した署名データを検証することなく、不正なものとみなすことができる。
ここで、前記署名対象データは、さらに、前記署名データの有効期限の判断基準となる第1時刻情報を含み、前記署名検証装置は、さらに、時刻を計時する時計手段と、前記累積回数が前記所定回数に達していないと判断される場合に、前記時計手段を用いて現在時刻を示す第2時刻情報を取得し、前記第1時刻情報と取得した第2時刻情報とを用いて、前記署名データの有効期限が過ぎているか否かを判断する期限判断手段と、前記署名データの有効期限が過ぎていないと判断される場合に、前記署名データを検証する検証手段とを備え、前記検証抑止手段は、さらに、前記署名データの有効期限が過ぎていると判断される場合に、前記署名データの検証を抑止するとしてもよい。
この構成によると、署名検証装置は、受信した署名データの有効期限が過ぎている場合には、受信した署名データの検証を抑止している。これにより、有効期限が過ぎた署名データを受信すると、受信した署名データを検証することなく、不正なものとみなすことができる。
ここで、前記署名データは、前記署名生成装置が生成した署名鍵を用いて生成され、前記受信手段は、さらに、前記署名鍵に対応する検証鍵と、前記検証鍵の正当性を示し、第1の秘密鍵により生成された検証鍵署名データとを含む検証鍵証明書と、前記第1の秘密鍵に対応する第1の公開鍵と、前記第1の公開鍵の正当性を示し、外部の機関が有する第2の秘密鍵により生成された公開鍵署名データとを含む公開鍵証明書とを受信し、前記検証手段は、前記第2の秘密鍵に対応する第2の公開鍵を記憶している鍵記憶部と、前記署名データの有効期限が過ぎていると判断される場合に、前記第2の公開鍵を用いて、前記公開鍵証明書が正当であるか否かを検証する第1検証部と、前記公開鍵証明書が正当であると判断される場合に、前記第1の公開鍵を用いて前記検証鍵明書が正当であるか否かを検証する第2検証部と、前記検証鍵証明書が正当であると判断される場合に、前記署名データが正当であるか否かを検証する第3検証部とを備えるとしてもよい。
この構成によると、署名検証装置は、多階層化された検証鍵を受信し、階層化された上位層から順に署名検証を行っているので、信頼性の高い検証を行うことができる。
ここで、前記署名検証装置は、さらに、前記累積回数が前記所定回数に達していると判断される場合に、前記署名データを生成した前記署名生成装置を特定する特定情報を、外部装置へ送信する送信手段を備えるとしてもよい。
この構成によると、署名検証装置は、受信した署名対象データに含まれる累積回数が所定回数に達している場合には、受信した署名データを生成した前記署名生成装置を特定する特定情報を外部装置へ送信するので、外部装置に、不正な署名データを生成した署名生成装置の管理を行わせることができる。
ここで、前記回数判断手段は、前記所定回数を記憶している回数記憶領域を有しており、前記署名検証装置は、さらに、前記署名生成装置から前記所定回数とは別の所定回数を受信し、前記回数記憶領域にて記憶されている前記所定回数を、受信した前記別の所定回数へと更新する更新手段を備えるとしてもよい。
この構成によると、署名検証装置は、署名生成装置との間で、所定回数の同期をとることができる。
また、本発明は、署名鍵を用いて署名を行う署名生成装置と、前記署名生成装置にて生成された署名データを検証する署名検証装置とからなる署名システムであって、前記署名生成装置は、前記署名鍵を記憶している鍵記憶手段と、前記署名鍵を用いて、メッセージデータと、前記署名鍵を用いて署名を行った累積回数とを含む署名対象データに署名を施して前記署名データを生成する署名生成手段と、前記署名データの生成時に、前記累積回数をカウントするカウンタ手段と、前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断手段と、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止手段と、前記署名対象データと、前記署名データとを含むデータ群を、前記署名検証装置へ送信する送信手段とを備え、前記署名検証装置は、前記署名生成装置から前記データ群を前記署名生成装置から受信する受信手段と、受信した前記データ群の前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断手段と、前記回数判断手段にて前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止手段とを備えることを特徴とする。
この構成によると、署名システムは、署名生成装置にて、秘密鍵を用いて署名を行った累積回数をカウントし、累積回数が所定回数に達している場合には、以後、前記秘密鍵による署名を抑止するので、前記秘密鍵を用いた署名に対するTranscript attackを防ぐことができる。また、署名システムは、署名検証装置にて、受信した署名対象データに含まれる累積回数が所定回数に達している場合には、受信した署名データの検証を抑止しているので、累積回数が所定回数に達している署名データを受信すると、受信した署名データを検証することなく、不正なものとみなすことができる。
ここで、前記署名システムは、さらに、前記署名生成装置から前記署名検証装置へと送信される前記データ群を監視する監視装置を備え、前記監視装置は、前記署名生成装置と前記署名検証装置とを接続する伝送路から前記データ群を取得する取得手段と、前記データ群が取得される前に、既に取得された1以上の取得済データ群を記憶しているログ記憶手段と、前記1以上の取得済データ群を用いて、取得した前記データ群が正当であるか否かを判断するデータ判断手段と、前記データ群が不正なものであると判断される場合に、取得した前記データ群に含まれる前記署名データを生成した前記署名生成装置を特定する特定情報を、外部装置へ送信する情報送信手段とを備えるとしてもよい。
この構成によると、署名システムは、監視装置にて、伝送路に流れるデータ群が正当であるか否かを監視し、不正なデータ群である場合には、そのデータ群に含まれる署名データを生成した署名生成装置を特定する特定情報を外部装置に送信している。これにより、署名システムは、外部装置に、不正なデータ群に含まれる署名データを生成した署名生成装置の管理を行わせることができる。
ここで、前記データ群は、さらに、前記署名鍵に対応する検証鍵を含み、前記1以上の取得済データ群それぞれは、取得済累積回数を含む取得済署名対象データと、取得済検証鍵とを含み、前記データ判断手段は、前記検証鍵及び前記累積回数と、一致する取得済検証鍵及び取得済累積回数を含む取得済データ群が、ログ記憶手段に存在するか否かを検索し、存在する場合には、取得した前記データ群は不正なものであると判断するとしてもよい。
この構成によると、署名システムは、監視装置にて、データ群に含まれる検証鍵及び累積回数とを用いて、データ群が正当であるか否かを判断することできる。
ディジタル署名システム1の構成を示すブロック図である。 署名生成装置10にて行われる初期設定処理の動作を示す流れ図である。 署名生成装置10にて行われる署名生成処理の動作を示す流れ図である。 署名生成装置10にて行われるカウンタ値チェック処理の動作を示す流れ図である。 署名検証装置20にて行われる署名検証処理の動作を示す流れ図である。 ディジタル署名システム1000の構成を示すブロック図である。 署名生成装置1010にて行われる署名生成処理の動作を示す流れ図である。 署名検証装置1020にて行われる署名検証処理の動作を示す流れ図である。 署名監視サーバ1030にて行われる監視処理の動作を示す流れ図である。
符号の説明
1 ディジタル署名システム
10 署名生成装置
20 署名検証装置
50 通信路
101 ユーザ署名生成鍵格納部
102 ユーザ証明書格納部
103 個数限定署名生成鍵格納部
104 個数限定証明書格納部
105 署名生成部
106 署名データセット生成部
107 カウンタ部
108 カウンタ判定部
109 個数限定鍵生成部
110 送信部
150 初期設定部
151 署名抑止部
201 CA公開鍵格納部
202 署名データセット格納部
203 署名検証部
204 受信部
205 表示部
1000 ディジタル署名システム
1010 署名生成装置
1020 署名検証装置
1030 署名監視サーバ
1040 センタ
1050 通信路
1101 ユーザ署名生成鍵格納部
1102 ユーザ証明書格納部
1103 個数限定署名生成鍵格納部
1104 個数限定証明書格納部
1105 署名生成部
1106 署名データセット生成部
1107 カウンタ部
1108 カウンタ判定部
1109 個数限定鍵生成部
1110 送信部
1111 時計部
1201 CA公開鍵格納部
1202 署名データセット格納部
1203 署名検証部
1204 受信部
1205 表示部
1206 カウンタ判定部
1207 時刻判定部
1208 時計部
1301 ログ格納部
1302 通信監視部
1303 署名データセット取得部
1304 署名データセット判定部
1305 送受信部
1.第1の実施の形態
以下、本発明に係る第1の実施の形態としてのディジタル署名システム1について、図面を参照して説明する。
1.1 ディジタル署名システム1の概要
ディジタル署名システム1は、図1に示すように、署名生成装置10と、署名検証装置20と、通信路50とから構成されている。
署名生成装置10は、メッセージデータmに対する署名データセットSSを生成し、通信路50を介して署名検証装置20に署名データセットSSを送信する。なお、署名データセットSSの構成については、後述する。
署名検証装置20は、その署名データセットSSを受信し、受信した署名データセットSSがメッセージデータmの正しい署名であるかを検証する。署名検証装置20は、署名データセットSSが正しいと判定する場合には、署名データセットSSを受理し、署名データセットSSが不正と判定する場合には、署名データセットSSを拒否する。
1.2 署名生成装置10の構成
署名生成装置10は、図1に示すように、ユーザ署名生成鍵格納部101と、ユーザ証明書格納部102と、個数限定署名生成鍵格納部103と、個数限定証明書格納部104と、署名生成部105と、署名データセット生成部106と、カウンタ部107と、カウンタ判定部108と、個数限定鍵生成部109と、送信部110とから構成される。
署名生成装置10は、NTRUSign署名方式にて用いられる秘密鍵である個数限定署名生成鍵と、前記秘密鍵に対応する公開鍵に対応する公開鍵証明書である個数限定証明書とを格納しており、個数限定署名生成鍵を用いて、入力であるメッセージデータmに対する署名データSを生成する。また、署名生成装置10は、生成した署名データの個数をカウントし、カウントした値が所定のしきい値tcを超えた場合に、新たな個数限定署名生成鍵及び個数限定証明書を生成する。
なお、しきい値tcはNTRUSign署名方式のTranscipt attackが成功しない署名の個数であり、例えば、10^7である。また、個数限定証明書の詳細については、後述する。
(1)ユーザ署名生成鍵格納部101
ユーザ署名生成鍵格納部101は、個数限定証明書CLを生成するために使用するユーザ署名生成鍵KUGを格納している。ユーザ署名生成鍵KUGは予め与えられているものとする。
ここで、個数限定証明書CLは、個数限定署名生成鍵に対応する個数限定署名検証鍵KLV(公開鍵)と、ユーザ署名生成鍵KUGを用いて個数限定署名検証鍵KLVに署名を施した署名データSKLVとからなる。
なお、個数限定証明書には、個数限定署名検証鍵KLV及び署名データSKLVに加えて他のデータを含んでいてもよい。例えば、個数限定証明書を識別するための識別子を含んでもよい。署名データSKLVは、NTRUSign署名方式に基づいて生成される。NTRUSign署名方式については、非特許文献4に詳細が記述されており、公知の技術であるため、ここでの説明は省略する。
(2)ユーザ証明書格納部102
ユーザ証明書格納部102は、ユーザ署名生成鍵KUGに対応するユーザ証明書CUを格納している。ユーザ証明書CUは、ユーザ署名生成鍵に対応するユーザ署名検証鍵KUVと、証明書生成サーバCA(図示せず)の秘密鍵を用いてユーザ署名検証鍵KUVに署名を施した署名データSKUVからなる。署名データSKUVも、NTRUSign署名方式に基づいて生成される。また、ユーザ証明書CUもユーザ署名生成鍵KUGと同様に、予め与えられているものとする。なお、ユーザ証明書CUには、ユーザ署名検証鍵KUV及び署名データSKUVに加えて他のデータを含んでいてもよい。例えば、ユーザの識別子や証明書の期限などを含んでもよい。
ここで、証明書生成サーバCAは、認証局(Certificate Authority)と呼ばれる機関に具備される装置であり、ユーザ署名検証鍵KUVが正しい公開鍵であることを示す(公開鍵に対する「お墨付き」となる)「ユーザ証明書」を発行する。つまり、ユーザ証明書格納部102は、証明書生成サーバCAにより発行されたユーザ証明書CUを予め格納している。また、認証局は、署名生成装置ごとに異なるユーザ署名生成鍵及びユーザ署名検証鍵を生成し、さらに、証明書生成サーバCAを用いて、生成したユーザ署名検証鍵に対するユーザ証明書を生成する。認証局は、生成したユーザ署名生成鍵及びユーザ証明書を対応する署名生成装置へ配布する。これにより、署名生成装置は、ユーザ署名生成鍵とユーザ証明書とを予め格納することができる。
(3)個数限定署名生成鍵格納部103
個数限定署名生成鍵格納部103は、メッセージデータに対する署名データを生成するために使用する個数限定署名生成鍵KLGを格納するための領域を有している。
署名生成装置10は、個数限定署名生成鍵を生成し、生成した個数限定署名生成鍵を個数限定署名生成鍵格納部103へ格納する。
(4)個数限定証明書格納部104
個数限定証明書格納部104は、個数限定署名生成鍵KLGに対応する個数限定証明書CLを格納するための領域を有している。
署名生成装置10は、個数限定証明書を生成し、生成した個数限定証明書を個数限定証明書格納部104へ格納する。
(5)署名生成部105
署名生成部105は、メッセージデータmの署名データSの生成、及び個数限定署名検証鍵KLVの署名データSKLVの生成を行う。
<署名データSを生成する場合>
署名生成部105は、署名データセット生成部106から、メッセージデータmの署名データの生成の指示を示す第1署名生成指示を受け取ると、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGを読み出し、読み出した個数限定署名生成鍵KLGを用いて、メッセージデータmに対する署名データSを生成、つまりメッセージデータmに署名を施して署名データSを生成する。
署名生成部105は、署名データSの生成が完了すると、その旨を示す第1完了通知を署名データセット生成部106へ出力する。
署名生成部105は、第1完了通知を署名データセット生成部106へ出力した後、カウントした値が所定値tcを超えているか否かの判定を指示するカウンタ判定指示をカウンタ判定部108へ出力する。
なお、署名データSは、NTRUSign署名方式に基づいて生成される。
<署名データSKLVを生成する場合>
署名生成部105は、個数限定鍵生成部109からユーザ署名検証鍵KLVの署名データSKLVの生成の指示を示す第2署名生成指示を受け取ると、ユーザ署名生成鍵格納部101に格納されているユーザ署名生成鍵KUGを読み出し、読み出したユーザ署名生成鍵KUGを用いて、個数限定鍵生成部109にて生成された個数限定署名検証鍵KLVに対する署名データSKLVを生成、つまり個数限定署名検証鍵KLVに署名を施して署名データSKLVを生成する。なお、個数限定鍵生成部109の動作については後述する。
署名生成部105は、署名データSKLVの生成が完了すると、その旨を示す第2完了通知を個数限定鍵生成部109へ出力する。
なお、署名データSKLVは、NTRUSign署名方式に基づいて生成される。
また、鍵更新時において、個数限定鍵生成部109にて個数限定署名検証鍵KLVNが生成された場合も、上記と同様の動作により、署名生成部105は、署名データSKLVNを生成する。このとき、署名生成部105は、個数限定鍵生成部109にて生成された個数限定署名検証鍵KLVNを、新たな個数限定署名検証鍵KLVとして、署名データSKLVNを生成する。
(6)署名データセット生成部106
署名データセット生成部106は、ユーザによる操作によりメッセージデータmを受け付けると、個数限定証明書格納部104から個数限定証明書CLを、ユーザ証明書格納部102からユーザ証明書CUを、それぞれ読み出す。
署名データセット生成部106は、第1署名生成指示を署名生成部105へ出力し、その後、署名生成部105から第1完了通知を受け取ると、メッセージデータmと、署名生成部105にて生成されたメッセージデータmの署名データSと、読み出した個数限定証明書CLと、読み出したユーザ証明書CUとからなる署名データセットSSを生成する。
署名データセット生成部106は、送信部110を介して、生成した署名データセットSSを署名検証装置20へ送信する。
(7)カウンタ部107
カウンタ部107は、署名データSを生成した回数をカウントし、現在の署名データ生成回数を保持するカウンタを備える。
カウンタ部107は、個数限定鍵生成部109から、カウンタ値cを初期値0に設定する旨の初期値設定指示を受け取ると、カウンタ値c=0とする。
カウンタ部107は、署名生成部105にて署名データSが生成されると、カウンタ値cに1を加算し、加算結果を再度、カウンタ値cとして保持する。
これにより、カウンタ部107は、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGにより生成された署名データの個数をカウントすることができる。また、言い換えると、カウンタ部107は、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGの使用回数をカウントすることができる。
(8)カウンタ判定部108
カウンタ判定部108は、しきい値tcを予め格納している。
カウンタ判定部108は、署名生成部105からカウンタ判定指示を受け取ると、カウンタ部107のカウンタ値cが、しきい値tc以上であるか否かを判断する。
しきい値tc以上であると判断する場合には、カウンタ判定部108は、個数限定署名生成鍵及び個数限定署名検証鍵の更新を指示する鍵更新指示を個数限定鍵生成部109へ出力する。
(9)個数限定鍵生成部109
個数限定鍵生成部109は、個数限定署名生成鍵及び個数限定証明書を生成する。
個数限定鍵生成部109は、図1に示すように、初期設定部150と署名抑止部151とを有している。
<初期設定部150>
初期設定部150は、個数限定署名生成鍵及び個数限定証明書を初期設定として個数限定署名生成鍵格納部103及び個数限定証明書格納部104に格納する場合に、個数限定署名生成鍵及び個数限定証明書を生成する。
以下にその動作について説明する。
個数限定鍵生成部109の初期設定部150は、ユーザの操作により、初期設定を行う旨の初期設定指示を受け付けると、NTRUSign署名方式の秘密鍵及び公開鍵を生成する。
初期設定部150は、生成した秘密鍵を個数限定署名生成鍵KLGとし、生成した公開鍵を個数限定署名検証鍵KLVとし、個数限定署名生成鍵KLGを個数限定署名生成鍵格納部103に格納する。
初期設定部150は、第2署名生成指示を署名生成部105へ出力する。その後、初期設定部150は、第2完了通知を署名生成部105から受け取ると、個数限定署名検証鍵KLVと、署名生成部105にて生成された署名データSKLVとからなる個数限定証明書CLを生成する。
初期設定部150は、生成した個数限定証明書CLを個数限定証明書格納部104に格納する。
初期設定部150は、初期値設定指示をカウンタ部107へ出力する。
<署名抑止部151>
署名抑止部151は、上記の「課題を解決するための手段」にて記述した署名抑止手段に対応しており、カウンタ値cがしきい値tcを超えた場合に、その時点で個数限定署名生成鍵格納部103に格納されている秘密鍵を用いた署名の抑止を行う。
ここでは、署名抑止の一例として、上書きの概念を用いる。
以下に、署名抑止部151の動作について説明する。
署名抑止部151は、カウンタ判定部108から、鍵更新指示を受け取ると、NTRUSign署名方式の鍵生成により、新たな個数限定署名生成鍵KLGNを秘密鍵として、新たな個数限定署名検証鍵KLVNを公開鍵として生成する。
署名抑止部151は、先ず、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGを削除し、その後、個数限定署名生成鍵KLGNを新たな個数限定署名生成鍵KLGとして、個数限定署名生成鍵格納部103に書き込む。つまり、署名抑止部151は、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGに、個数限定署名生成鍵KLGNを上書きし更新することにより、個数限定署名生成鍵KLGとする。
署名抑止部151は、第2署名生成指示を署名生成部105へ出力する。その後、署名抑止部151は、第2完了通知を署名生成部105から受け取ると、個数限定署名検証鍵KLVNと、署名生成部105にて生成された署名データSKLVNとからなる個数限定証明書CLNを生成する。このとき、署名抑止部151は、個数限定署名検証鍵KLVNを新たな個数限定署名検証鍵KLVとし、署名データSKLVNを新たな署名データSKLVとして、個数限定証明書CLNを生成する。
署名抑止部151は、個数限定証明書格納部104に格納されている個数限定証明書CLを削除し、その後、生成した個数限定証明書CLNを新たな個数限定証明書CLとして、個数限定証明書格納部104に書き込む。つまり、署名抑止部151は、個数限定証明書格納部104に格納されている個数限定証明書CLに、生成した個数限定証明書CLNを上書きし更新することにより、新たな個数限定証明書CLとする。
署名抑止部151は、初期値設定指示をカウンタ部107へ出力する。
(10)送信部110
送信部110は、署名データセットSSを、通信路50を介して署名検証装置20へ送信する。
1.3 署名検証装置20の構成
署名検証装置20は、図1に示すように、CA公開鍵格納部201と、署名データセット格納部202と、署名検証部203と、受信部204と、表示部205とから構成される。
(1)CA公開鍵格納部201
CA公開鍵格納部201は、ユーザ証明書CUを検証するための証明書生成サーバCA(図示せず)が有する秘密鍵に対応する公開鍵(署名検証鍵)KPCを格納している。
(2)署名データセット格納部202
署名データセット格納部202は、署名データセットSSを格納するための領域を有している。
(3)署名検証部203
署名検証部203は、署名データセットSSに含まれる署名データS、個数限定証明書CLに含まれる署名データSKLV、ユーザ証明書CUに含まれる署名データSKUVを検証する。
以下に、検証の動作を示す。
署名検証部203は、受信部204から検証を開始する旨の検証開始指示を受け取る。
署名検証部203は、署名データSKUVがユーザ署名検証鍵KUVの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する。
署名データSKUVが正しい署名であると判断する場合には、署名検証部203は、署名データSKLVが個数限定署名検証鍵KLVの正しい署名であるかを、ユーザ署名検証鍵KUVを用いて検証する。
署名データSKLVが正しい署名であると判断する場合には、署名検証部203は、署名データSがメッセージデータmの正しい署名であるかを、個数限定署名検証鍵KLVを用いて検証する。
署名データ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 署名生成装置10の動作
署名生成装置10の動作は、個数限定署名生成鍵及び個数限定証明書を初期設定する「初期設定処理」と、署名生成を行う「署名生成処理」と、カウンタ値をチェックし、個数限定署名生成鍵及び個数限定証明書を生成する「カウンタ値チェック処理」の動作からなる。以下に、それぞれの動作について説明する。
(1)初期設定処理
初期設定処理の動作について、図2にて示す流れ図を用いて説明する。
個数限定鍵生成部109の初期設定部150は、ユーザの操作により、初期設定指示を受け付けると、NTRUSign署名方式の鍵生成により、秘密鍵及び公開鍵を生成し(ステップS5)、生成した秘密鍵を個数限定署名生成鍵KLG、公開鍵を個数限定署名検証鍵KLVとし、個数限定署名生成鍵KLGを個数限定署名生成鍵格納部103に格納する(ステップS10)。
個数限定鍵生成部109の初期設定部150は、第2署名生成指示を署名生成部105へ出力する。署名生成部105は、個数限定鍵生成部109から第2署名生成指示を受け取ると、ユーザ署名生成鍵格納部101に格納されているユーザ署名生成鍵KUGを用いて、個数限定署名検証鍵KLVの署名データSKLVを生成する(ステップS15)。
署名生成部105は、第2完了通知を個数限定鍵生成部109の初期設定部150へ出力する。個数限定鍵生成部109の初期設定部150は、署名生成部105から第2完了通知を受け取ると、個数限定署名検証鍵KLVと、署名生成部105にて生成した署名データSKLVからなる個数限定証明書CLを生成し(ステップS20)、生成した個数限定証明書CLを個数限定証明書格納部104に格納する(ステップS25)。
個数限定鍵生成部109の初期設定部150は、初期値設定指示をカウンタ部107へ出力する。カウンタ部107は、個数限定鍵生成部109から初期値設定指示を受け取ると、カウンタ値c=0を格納する(ステップS30)。
(2)署名生成処理
署名生成処理の動作について、図3にて示す流れ図を用いて説明する。
署名データセット生成部106は、ユーザによる操作によりメッセージデータmを受け付ける(ステップS100)。
署名データセット生成部106は、個数限定証明書格納部104から個数限定証明書CLを、ユーザ証明書格納部102からユーザ証明書CUを、それぞれ読み出し、第1署名生成指示を署名生成部105へ出力する。署名生成部105は、署名データセット生成部106から、第1署名生成指示を受け取ると、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGを読み出し、読み出した個数限定署名生成鍵KLGを用いて、メッセージデータmに対する署名データSを生成する(ステップS105)。カウンタ部107は、カウンタ値cに1を加算し、加算結果を新たなカウンタ値cとする(ステップS110)。
署名生成部105は、署名データSの生成が完了すると、その旨を示す第1完了通知を署名データセット生成部106へ出力する。署名データセット生成部106は、署名生成部105から第1完了通知を受け取ると、メッセージデータmと、署名生成部105にて生成されたメッセージデータmの署名データSと、読み出した個数限定証明書CLと、読み出したユーザ証明書CUとからなる署名データセットSSを生成する(ステップS115)。
送信部110は、通信路50を介して、署名データセット生成部106にて生成された署名データセットSSを署名検証装置20へ送信する(ステップS120)。
(3)カウンタ値チェック処理
カウンタ値チェック処理の動作について、図4にて示す流れ図を用いて説明する。なお、署名生成部105は、署名生成処理のステップS105の実行後、カウンタ判定指示をカウンタ判定部108へ出力しているものとする。
カウンタ判定部108は、署名生成部105からカウンタ判定指示を受け取ると、カウンタ部107のカウンタ値cが、しきい値tc以上であるか否かを判断する(ステップS200)。
しきい値tc以上でないと判断する場合には(ステップS200おける「NO」)、カウンタ値チェック処理は終了する。
しきい値tc以上であると判断する場合には(ステップS200における「YES」)、カウンタ判定部108は、個数限定署名生成鍵及び個数限定署名検証鍵の更新を指示する鍵更新指示を個数限定鍵生成部109の署名抑止部151へ出力する。個数限定鍵生成部109の署名抑止部151は、カウンタ判定部108から、鍵更新指示を受け取ると、NTRUSign署名方式の秘密鍵及び公開鍵をそれぞれ個数限定署名生成鍵KLGN及び公開鍵を個数限定署名検証鍵KLVNとして生成する(ステップS205)。
個数限定鍵生成部109の署名抑止部151は、生成した個数限定署名生成鍵KLGNを個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGに上書きし、新たな個数限定署名生成鍵KLGとする(ステップS210)。つまり、署名抑止部151は、先ず、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGを削除し、その後、個数限定署名生成鍵KLGNを新たな個数限定署名生成鍵KLGとして、個数限定署名生成鍵格納部103に書き込む。
個数限定鍵生成部109の署名抑止部151は、第2署名生成指示を署名生成部105へ出力する。署名生成部105は、署名抑止部151から第2署名生成指示を受け取ると、ユーザ署名生成鍵格納部101に格納されているユーザ署名生成鍵KUGを用いて、個数限定署名検証鍵KLVNの署名データSKLVNを生成する(ステップS215)。
署名生成部105は、第2完了通知を個数限定鍵生成部109の署名抑止部151へ出力する。個数限定鍵生成部109の署名抑止部151は、第2完了通知を署名生成部105から受け取ると、個数限定署名検証鍵KLVNと、署名生成部105にて生成された署名データSKLVNとからなる個数限定証明書CLNを生成する(ステップS220)。このとき、署名抑止部151は、個数限定署名検証鍵KLVNを新たな個数限定署名検証鍵KLVとし、署名データSKLVNを新たな署名データSKLVとして、個数限定証明書CLNを生成する。
個数限定鍵生成部109の署名抑止部151は、生成した個数限定証明書CLNを個数限定証明書格納部104に格納されている個数限定証明書CLに上書きし、新たな個数限定証明書CLとする(ステップS225)。つまり、署名抑止部151は、個数限定証明書格納部104に格納されている個数限定証明書CLを削除し、その後、生成した個数限定証明書CLNを新たな個数限定証明書CLとして、個数限定証明書格納部104に書き込む。
個数限定鍵生成部109の署名抑止部151は、初期値設定指示をカウンタ部107へ出力する。カウンタ部107は、署名抑止部151から初期値設定指示を受け取ると、カウンタ値c=0を格納する(ステップS230)。
1.5 署名検証装置20の動作
署名検証装置20は、署名生成装置10より署名データセットSSを通信路50を介して受信し、その署名データセットSSを検証する。以下において、署名検証装置20にて行われる署名検証処理について、図5にて示す流れ図を用いて説明する。
受信部204は、署名生成装置10から送信された署名データセットSSを、通信路50を介して受信する(ステップS300)。
受信部204は、受信した署名データセットSSを署名データセット格納部202に格納する(ステップS305)。
受信部204は、検証開始指示を署名検証部203へ出力する。署名検証部203は、受信部204から検証開始指示を受け取る。署名検証部203は、署名データセットSSの中のユーザ証明書CUに含まれるユーザ署名検証鍵KUVとその署名データSKUVに対し、署名データSKUVがユーザ署名検証鍵KUVの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する(ステップS310)。
署名データSKUVが正しい署名であると判断する場合には(ステップS310における「OK」)、署名検証部203は、署名データセットSSの中の個数限定証明書CLに含まれる個数限定署名検証鍵KLVとその署名データSKLVに対し、署名データSKLVが個数限定署名検証鍵KLVの正しい署名であるかを、ユーザ署名検証鍵KUVを用いて検証する(ステップS315)。
署名データSKLVが正しい署名であると判断する場合には(ステップS315における「OK」)、署名検証部203は、署名データセットSSの中のメッセージデータmとその署名データSに対し、署名データSがメッセージデータmの正しい署名であるかを、個数限定署名検証鍵KLVを用いて検証する(ステップS320)。
署名データSが正しい署名であると判断する場合には(ステップS320における「OK」)、署名検証部203は、表示部205を介して、メッセージ「OK」を表示する(ステップS325)。
署名データSKUVが正しくないと判断する場合(ステップS310における「NG」)、署名データSKLVが正しくないと判断する場合(ステップS315における「NG」)、及び署名データSが正しくないと判断する場合(ステップS320における「NG」)、署名検証部203は、表示部205を介して、メッセージ「NG」を表示する(ステップS330)。
1.6 第1の実施の形態の全体の動作
第1の実施の形態におけるディジタル署名システム1の全体の動作を以下に示す。
ディジタル署名システム1の署名生成装置10は、「署名生成・検証時」に入力であるメッセージデータmに対して、署名データセットSSを生成し、署名検証装置20へ送信する。署名検証装置20は、署名データセットSSを検証し、その検証結果により、署名データセットを受理する、または、拒否するかを決定する。また、「初期設定時」に署名生成装置10は、個数限定署名生成鍵及び個数限定証明書を初期化し、「カウンタ値チェック時」に、カウンタ値をチェックし、その結果に基づき個数限定署名生成鍵及び個数限定証明書を更新する。
1.7 第1の実施の形態の効果
第1の実施の形態におけるディジタル署名システム1では、一つの個数限定署名生成鍵で生成する署名データの個数をカウンタ部107にてカウントし、カウンタ判定部108にてカウンタ値cがしきい値tcを超えていれば、個数限定署名生成鍵を更新している。そのため、一つの個数限定署名生成鍵で生成する署名データの総数をtc以内に抑えることができる。tcはNTRUSign署名方式の攻撃法であるTranscript attackが成功しない署名の個数であるため、ディジタル署名システム1に対するTranscript attackは成功せず、安全である。
個数限定署名検証鍵の証明書は、ユーザ署名生成鍵を用いて生成している。このようにすることで、個数限定署名生成鍵及び個数限定署名検証鍵を更新した場合に、ユーザは自らが所有する署名生成装置にて、個数限定証明書を生成できる。もし、個数限定署名検証鍵の証明書を証明書生成サーバCAにて生成する場合は、署名生成装置において、ユーザ証明生成鍵及びユーザ証明書は不要となるが、ユーザは個数限定署名検証鍵の証明書を証明書生成サーバCAに依頼する必要があり、個数限定署名生成鍵及び個数限定署名検証鍵を更新するたびに、証明書生成サーバCAへの通信が必要になってしまう。それに比べて、第1の実施の形態のように、ユーザ署名生成鍵を用いて個数限定署名検証鍵の証明書を生成することで、これらの証明書生成サーバCAへの通信が不要になる。
2.第2の実施の形態
以下、本発明に係る第2の実施の形態としてのディジタル署名システム1000について、図面を参照して説明する。
2.1 ディジタル署名システム1000の概要
ディジタル署名システム1000は、図6に示すように、署名生成装置1010と、署名検証装置1020と、署名監視サーバ1030と、センタ1040と、通信路1050とから構成されている。
署名生成装置1010は、メッセージデータmに対する署名データセットSSを生成し、生成した署名データセットSSを、通信路1050を介して署名検証装置1020へ送信する。
署名検証装置1020は、通信路1050を介して署名生成装置1010から、署名データセットSSを受信し、受信した署名データセットSSを検証する。
署名監視サーバ1030は、通信路1050を流れる署名データセットSSを監視し、不正な署名データセットSSを検出すると、その旨を、通信路1050を介してセンタ1040へ送信する。
センタ1040は、不正な署名データセットSSが検出された旨のメッセージを受信する。
2.2 署名生成装置1010の構成
署名生成装置1010は、図6に示すように、ユーザ署名生成鍵格納部1101と、ユーザ証明書格納部1102と、個数限定署名生成鍵格納部1103と、個数限定証明書格納部1104と、署名生成部1105と、署名データセット生成部1106と、カウンタ部1107と、カウンタ判定部1108と、個数限定鍵生成部1109と、送信部1110と、時計部1111とから構成される。
署名生成装置1010は、NTRUSign署名方式にて用いられる秘密鍵である個数限定署名生成鍵と、前記秘密鍵に対応する公開鍵に対応する公開鍵証明書である個数限定証明書とを格納しており、個数限定署名生成鍵を用いて、入力であるメッセーージデータmに対する署名データSを生成する。また、署名生成装置1010は、生成した署名データの個数をカウントし、カウンタ値が所定のしきい値tcを超えた場合に、新たな個数限定署名生成鍵及び個数限定証明書を生成する。
なお、しきい値tcはNTRUSign署名方式のTranscipt attackが成功しない署名の個数であり、例えば、10^7である。また、個数限定証明書の詳細については、後述する。
なお、署名生成装置1010を構成するユーザ署名生成鍵格納部1101、ユーザ証明書格納部1102と、個数限定署名生成鍵格納部1103、個数限定証明書格納部1104、カウンタ部1107、カウンタ判定部1108、個数限定鍵生成部1109、及び送信部1110は、それぞれ、第1の実施の形態にて示すユーザ署名生成鍵格納部101、ユーザ証明書格納部102と、個数限定署名生成鍵格納部103、個数限定証明書格納部104、カウンタ部107、カウンタ判定部108、個数限定鍵生成部109、及び送信部110と同様の動作を行うため、ここでの説明は省略する。
(1)時計部1111
時計部1111は、日時を計時し、現在の時刻を示す時刻情報TGをもつ。時計部1111は、例えば、秒単位に計時を行い、時刻情報は、1970年1月1日0時0分0秒からの現在時刻までの秒数である。
(2)署名データセット生成部1106
署名データセット生成部1106は、ユーザによる操作によりメッセージデータmを受け付けると、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データDの署名データの生成を指示する第1署名生成指示を署名生成部1105へ出力する。
その後、署名データセット生成部1106は、署名生成部1105から第1完了通知を受け取ると、個数限定証明書格納部1104から個数限定証明書CLを、ユーザ証明書格納部1102からユーザ証明書CUを、それぞれ読み出す。署名データセット生成部1106は、署名生成部1105にて生成された署名対象データD及び署名対象データDの署名データSと、読み出した個数限定証明書CL及びユーザ証明書CUとからなる署名データセットSSを生成する。
署名データセット生成部1106は、送信部1110を介して、生成した署名データセットSSを署名検証装置1020へ送信する。
(3)署名生成部1105
署名生成部1105は、署名対象データDの署名データSの生成、及び個数限定署名検証鍵KLVの署名データSKLVの生成を行う。
<署名データSを生成する場合>
署名生成部1105は、署名データセット生成部1106から、第1署名生成指示を受け取ると、カウンタ部1107から保持されているカウンタ値cを、時計部1111から現在の時刻を示す時刻情報TGを、それぞれ取得する。
署名データセット生成部1106は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データDを生成する。
署名データセット生成部1106は、個数限定署名生成鍵格納部1103に格納されている個数限定署名生成鍵KLGを、読み出し、読み出した個数限定署名生成鍵KLGを用いて、生成した署名対象データDに対する署名データSを生成、つまり署名対象データDに署名を施して署名データSを生成する。
署名生成部1105は、署名データSの生成が完了すると、その旨を示す第1完了通知を署名データセット生成部1106へ出力する。
なお、署名データSは、NTRUSign署名方式に基づいて生成される。
<署名データSKLVを生成する場合>
署名生成部1105は、個数限定鍵生成部1109からユーザ署名検証鍵KLVの署名データSKLVの生成の指示を示す第2署名生成指示を受け取ると、ユーザ署名生成鍵格納部1101に格納されているユーザ署名生成鍵KUGを読み出し、読み出したユーザ署名生成鍵KUGを用いて、個数限定鍵生成部1109にて生成された個数限定署名検証鍵KLVに対する署名データSKLVを生成、つまり個数限定署名検証鍵KLVに署名を施して署名データSKLVを生成する。
署名生成部1105は、署名データSKLVの生成が完了すると、その旨を示す第2完了通知を個数限定鍵生成部1109へ出力する。
なお、署名データSKLVは、NTRUSign署名方式に基づいて生成される。
また、個数限定鍵生成部1109にて個数限定署名検証鍵KLVNが生成された場合も、上記と同様の動作により、署名データSKLVNを生成する。
2.3 署名検証装置1020の構成
署名検証装置1020は、図6に示すように、CA公開鍵格納部1201と、署名データセット格納部1202と、署名検証部1203と、受信部1204と、表示部1205と、カウンタ判定部1206と、時刻判定部1207と、時計部1208とから構成される。
署名検証装置1020を構成するCA公開鍵格納部1201、署名データセット格納部1202、受信部1204、及び表示部1205は、それぞれ、第1の実施の形態にて示すCA公開鍵格納部201、署名データセット格納部202、受信部204、及び表示部205と同様の動作を行うため、ここでの説明は省略する。
(1)時計部1208
時計部1208は、日時を計時し、現在の時刻を示す時刻情報TGをもつ。時計部1208は、例えば、秒単位に計時を行い、時刻情報は、1970年1月1日0時0分0秒からの現在時刻までの秒数である。
(2)カウンタ判定部1206
カウンタ判定部1206は、しきい値tcを予め格納している。
カウンタ判定部1206は、署名検証部1203からカウンタ値の判定を行う旨のカウンタ判定指示を受け取ると、書名データセットSSに含まれるカウンタ値cを取得し、取得したカウンタ値cが、しきい値tc以上であるか否かを判断する。
しきい値tc以上であると判断する場合には、カウンタ判定部1206は、その旨を示す第1判定結果通知を署名検証部1203へ出力する。
しきい値tc以上でないと判断する場合には、カウンタ判定部1206は、その旨を示す第2判定結果通知を署名検証部1203へ出力する。
(3)時刻判定部1207
時刻判定部1207は、差分しきい値TTを予め格納している。
時刻判定部1207は、署名検証部1203から時刻判定を行う旨の時刻判定指示を受け取ると、署名データセットSSに含まれる時刻情報TGと、時計部1208から時刻情報TVを取得し、取得した時刻情報TG及び時刻情報TVの差分TV−TGが差分しきい値TTを超えているか否かを判断する。
差分TV−TGが差分しきい値TTを超えていると判断する場合には、時刻判定部1207は、その旨を示す第3判断結果通知を署名検証部1203へ出力する。
差分TV−TGが差分しきい値TTを超えていないと判断する場合には、時刻判定部1207は、その旨を示す第4判断結果通知を署名検証部1203へ出力する。
(4)署名検証部1203
署名検証部1203は、署名データセットSSに含まれる署名データS、個数限定証明書CLに含まれる署名データSKLV、ユーザ証明書CUに含まれる署名データSKUVを検証する。
以下に、検証の動作を示す。
署名検証部1203は、受信部1204から検証を開始する旨の検証開始指示を受け取る。
署名検証部1203は、カウンタ判定指示をカウンタ判定部1206へ出力し、その後、カウンタ判定部1206から判定結果を受け取る。
カウンタ値cの判定結果として第1判定結果を受け取ると、署名検証部1203は、表示部1205を介して、受信した署名データセットSSを拒否する旨のメッセージ「NG」を表示する。
カウンタ値cの判定結果として第2判定結果を受け取ると、署名検証部1203は、時刻判定指示を時刻判定部1207へ出力し、その後、時刻判定部1207から判定結果を受け取る。
時刻判定の結果として第3判定結果を受け取ると、署名検証部1203は、表示部1205を介して、受信した署名データセットSSを拒否する旨のメッセージ「NG」を表示する。
時刻判定の結果として第4判定結果を受け取ると、署名検証部1203は、署名データSKUVがユーザ署名検証鍵KUVの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する。
署名データSKUVが正しい署名であると判断する場合には、署名検証部1203は、署名データSKLVが個数限定署名検証鍵KLVの正しい署名であるかを、ユーザ署名検証鍵KUVを用いて検証する。
署名データSKLVが正しい署名であると判断する場合には、署名検証部1203は、署名データSがメッセージデータmの正しい署名であるかを、個数限定署名検証鍵KLVを用いて検証する。
署名データSが正しい署名であると判断する場合には、署名検証部1203は、表示部1205を介して、受信した署名データセットSSを受理する旨のメッセージ「OK」を表示する。
各署名検証のうち何れかの署名検証において、署名データが正しくない署名であると判断する場合には、署名検証部1203は、表示部1205を介して、受信した署名データセットSSを拒否する旨のメッセージ「NG」を表示する。
2.4 署名監視サーバ1030の構成
署名監視サーバ1030は、図6に示すように、ログ格納部1301と、通信監視部1302と、署名データセット取得部1303と、署名データセット判定部1304と、送受信部1305とを備える。
(1)ログ格納部1301
ログ格納部1301は、1以上の署名データセットを格納するための領域を有している。
(2)通信監視部1302
通信監視部1302は、送受信部1305を介して、通信路1050を流れる署名データセットSSを監視する。
(3)署名データセット取得部1303
署名データセット取得部1303は、通信監視部1302にて署名データセットSSが通信路1050に流れていることが検出されると、送受信部1305及び通信監視部1302を介して、通信路1050に流れている署名データセットを取得する。
署名データセット取得部1303は、ログ格納部1301に既に署名データセットが格納されているか否かを判断する。
格納されていないと判断する場合には、署名データセット取得部1303は、取得した署名データセットSSをログ格納部1301に格納する。
格納されていると判断する場合には、署名データセット取得部1303は、取得した書名データセットに含まれるカウンタ値cの正当性を判定する旨の判定指示を署名データセット判定部1304へ出力する。署名データセット取得部1303は、署名データセット判定部1304から判定結果を受け取る。
判定結果としてカウンタ値は正当な値であることを示す正当通知を受け取ると、署名データセット取得部1303は、取得した署名データセットSSをログ格納部1301に格納する。
判定結果としてカウンタ値は不正な値であることを示す不正通知を受け取ると、署名データセット取得部1303は、取得した署名データセットSSに含まれるユーザ証明書と、不正な署名データセットを検出した旨の検出メッセージとを、送受信部1305を介してセンタへ送信する。
(4)署名データセット判定部1304
署名データセット判定部1304は、署名データセット取得部1303から判定指示を受け取ると、取得した署名データセットSSに含まれる個数限定署名検証鍵とカウンタ値のそれぞれと同一のものを含む署名データセットSSFがログ格納部1301に存在するか否かを判断する。
存在すると判断する場合には、署名データセット判定部1304は、不正通知を署名データセット取得部1303へ出力する。
存在しないと判断する場合には、署名データセット判定部1304は、正当通知を署名データセット取得部1303へ出力する。
(5)送受信部1305
送受信部1305は、通信路1050に流れている署名データセットを受信し、受信した署名データセットを、通信監視部1302を介して署名データセット取得部1303へ出力する。
送受信部1305は、署名データセット取得部1303からユーザ証明書を受け取ると、受け取ったユーザ証明書を、通信路1050を介してセンタへ送信する。
2.5 センタ1040
センタ1040は、署名監視サーバ1030から通信路1050を介して、検出メッセージとユーザ証明書とを受信する。
2.6 署名生成装置1010の動作
署名生成装置1010の動作は、個数限定署名生成鍵及び個数限定証明書を初期設定する「初期設定処理」と、署名生成を行う「署名生成処理」と、カウンタ値をチェックし、個数限定署名生成鍵及び個数限定証明書を生成する「カウンタ値チェック処理」の動作からなる。「初期設定処理」と、「カウンタ値チェック処理」との動作は、第1の実施の形態にて示す動作と同様であるため、説明は省略する。
(1)署名生成処理
署名生成処理の動作について、図7にて示す流れ図を用いて説明する。
署名データセット生成部1106は、ユーザによる操作によりメッセージデータmを受け付ける(ステップS1000)。
署名データセット生成部1106は、署名対象データDの署名データの生成を指示する第1署名生成指示を署名生成部1105へ出力する。署名生成部1105は、署名データセット生成部1106から、第1署名生成指示を受け取ると、カウンタ部1107から保持されているカウンタ値cを、時計部1111から現在の時刻を示す時刻情報TGを、それぞれ取得する。署名データセット生成部1106は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データDを生成する(ステップS1005)。
署名生成部1105は、個数限定署名生成鍵格納部1103に格納されている個数限定署名生成鍵KLGを、読み出し、読み出した個数限定署名生成鍵KLGを用いて、生成した署名対象データDに対する署名データSを生成する(ステップS1010)。カウンタ部1107は、カウンタ値cに1を加算し、加算結果を新たなカウンタ値cとする(ステップS1015)。
署名生成部1105は、署名データSの生成が完了すると、その旨を示す第1完了通知を署名データセット生成部1106へ出力する。署名データセット生成部1106は、署名生成部1105から第1完了通知を受け取ると、個数限定証明書格納部1104から個数限定証明書CLを、ユーザ証明書格納部1102からユーザ証明書CUを、それぞれ読み出す。署名データセット生成部1106は、署名生成部1105にて生成された署名対象データD及び署名対象データDの署名データSと、読み出した個数限定証明書CL及びユーザ証明書CUとからなる署名データセットSSを生成する(ステップS1020)。
送信部1110は、通信路1050を介して、署名データセット生成部1106にて生成された署名データセットSSを署名検証装置1020へ送信する(ステップS1025)。
2.7 署名検証装置1020の動作
署名検証装置1020は、署名生成装置1010より署名データセットSSを通信路1050を介して受信し、その署名データセットSSを検証する。以下において、署名検証装置1020にて行われる署名検証処理について、図8にて示す流れ図を用いて説明する。
受信部1204は、署名生成装置1010から送信された署名データセットSSを、通信路1050を介して受信する(ステップS1100)。
受信部1204は、受信した署名データセットSSを署名データセット格納部1202に格納する(ステップS1105)。
受信部1204は、検証開始指示を署名検証部1203へ出力する。署名検証部1203は、受信部1204から検証開始指示を受け取ると、カウンタ判定指示をカウンタ判定部1206へ出力する。カウンタ判定部1206は、カウンタ判定指示を受け取ると、書名データセットSSに含まれるカウンタ値cを取得し、取得したカウンタ値cが、しきい値tc以上であるか否かを判断する(ステップS1110)。
しきい値tc以上であると判断する場合には(ステップS1110における「YES」)、カウンタ判定部1206は、その旨を示す第1判定結果通知を署名検証部1203へ出力する。カウンタ値cの判定結果として第1判定結果を受け取ると、署名検証部1203は、表示部1205を介して、メッセージ「NG」を表示する(ステップS1140)。
しきい値tc以上でないと判断する場合には(ステップS1110における「NO」)、カウンタ判定部1206は、その旨を示す第2判定結果通知を署名検証部1203へ出力する。カウンタ値cの判定結果として第2判定結果を受け取ると、署名検証部1203は、時刻判定指示を時刻判定部1207へ出力する。時刻判定部1207は、署名検証部1203から時刻判定指示を受け取ると、署名データセットSSに含まれる時刻情報TGと、時計部1208から時刻情報TVを取得し、取得した時刻情報TG及び時刻情報TVの差分TV−TGが差分しきい値TTを超えているか否かを判断する(ステップS1115)。
差分TV−TGが差分しきい値TTを超えていると判断する場合には(ステップS1115における「YES」)、時刻判定部1207は、その旨を示す第3判断結果通知を署名検証部1203へ出力する。時刻判定の結果として第3判定結果を受け取ると、署名検証部1203は、表示部1205を介して、メッセージ「NG」を表示する(ステップS1140)。
差分TV−TGが差分しきい値TTを超えていないと判断する場合には(ステップS1115における「NO」)、時刻判定部1207は、その旨を示す第4判断結果通知を署名検証部1203へ出力する。時刻判定の結果として第4判定結果を受け取ると、署名検証部1203は、署名データSKUVがユーザ署名検証鍵KUVの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する(ステップS1120)。
署名データSKUVが正しい署名であると判断する場合には(ステップS1120における「OK」)、署名検証部1203は、署名データセットSSの中の個数限定証明書CLに含まれる個数限定署名検証鍵KLVとその署名データSKLVに対し、署名データSKLVが個数限定署名検証鍵KLVの正しい署名であるかを、ユーザ署名検証鍵KUVを用いて検証する(ステップS1125)。
署名データSKLVが正しい署名であると判断する場合には(ステップS1125における「OK」)、署名検証部1203は、署名データセットSSの中のメッセージデータmとその署名データSに対し、署名データSがメッセージデータmの正しい署名であるかを、個数限定署名検証鍵KLVを用いて検証する(ステップS1130)。
署名データSが正しい署名であると判断する場合には(ステップS1130における「OK」)、署名検証部1203は、表示部1205を介して、メッセージ「OK」を表示する(ステップS1135)。
署名データSKUVが正しくないと判断する場合(ステップS1120における「NG」)、署名データSKLVが正しくないと判断する場合(ステップS1125における「NG」)、及び署名データSが正しくないと判断する場合(ステップS1130における「NG」)、署名検証部1203は、表示部1205を介して、メッセージ「NG」を表示する(ステップS1140)。
2.8 署名監視サーバ1030の動作
署名監視サーバ1030は、通信路1050に署名データセットが流れているかを監視し、流れている場合はその署名データセットSSを入手して、既に格納している署名データセットと比較する。以下において、署名監視サーバ1030にて行われる監視処理について、図9にて示す流れ図を用いて説明する。
通信監視部1302は、送受信部1305を介して、署名データセットSSが通信路1050を流れるか否かを監視する(ステップS1200)。
通信監視部1302にて署名データセットSSが通信路1050に流れていることが検出されない場合には(ステップS1200における「NO」)、監視処理を終了する。
通信監視部1302にて署名データセットSSが通信路1050に流れていることが検出されると(ステップS1200における「YES」)、署名データセット取得部1303は、送受信部1305及び通信監視部1302を介して、通信路1050に流れている署名データセットを取得する(ステップS1205)。
署名データセット取得部1303は、ログ格納部1301に既に署名データセットが格納されているか否かを判断する(ステップS1210)。
格納されていないと判断する場合には(ステップS1210における「NO」)、署名データセット取得部1303は、取得した署名データセットSSをログ格納部1301に格納する(ステップS1215)。
格納されていると判断する場合には(ステップS1210における「YES」)、署名データセット取得部1303は、取得した書名データセットに含まれるカウンタ値cの正当性を判定する旨の判定指示を署名データセット判定部1304へ出力する。署名データセット判定部1304は、署名データセット取得部1303から判定指示を受け取ると、取得した署名データセットSSに含まれる個数限定署名検証鍵とカウンタ値のそれぞれと同一のものを含む署名データセットSSFがログ格納部1301に存在するか否かを判断する(ステップS1220)。
存在すると判断する場合には(ステップS1220における「YES」)、署名データセット判定部1304は、不正通知を署名データセット取得部1303へ出力する。署名データセット取得部1303は、署名データセット判定部1304から、判定結果として不正通知を受け取ると、取得した署名データセットSSに含まれるユーザ証明書を送受信部1305へ出力する。送受信部1305は、通信路1050を介して、ユーザ証明書をセンタへ送信する(ステップS1225)。
存在しないと判断する場合には(ステップS1220における「NO」)、署名データセット判定部1304は、正当通知を署名データセット取得部1303へ出力する。署名データセット取得部1303は、署名データセット判定部1304から、判定結果として正当通知を受け取ると、取得した署名データセットSSをログ格納部1301に格納する(ステップS1215)。
2.9 第2の実施の形態の全体の動作
第2の実施の形態におけるディジタル署名システム1000の全体の動作を以下に示す。
ディジタル署名システム1000の署名生成装置1010は、「署名生成・検証時」に入力であるメッセージデータmに対して、署名データセットSSを生成し、署名検証装置1020へ送信する。署名検証装置1020は、署名データセットSSを検証し、その検証結果により、署名データセットSSを受理する、または、拒否するかを決定する。また、「初期設定時」に署名生成装置1010は、個数限定署名生成鍵及び個数限定証明書を初期化し、「カウンタ値チェック時」に、カウンタ値をチェックし、その結果に基づき個数限定署名生成鍵及び個数限定証明書を更新する。さらに、署名監視サーバ1030は、通信路1050に署名データセットSSが流れているかを監視し、署名データセットSSと流れている場合は以前の署名データセットとを比較する。
2.10 第2の実施の形態の効果
第2の実施の形態におけるディジタル署名システム1000は、第1の実施の形態と同様に、一つの個数限定署名生成鍵で生成する署名データの総数をtc以内に抑えることができる。
さらに、第2の実施の形態では、カウンタ値を署名対象データに含ませており、署名検証装置1020で検証している。そのため、署名生成装置1010がカウンタ値を超えて署名データを生成していることを署名検証装置1020で確認することが可能になる。
また、署名監視サーバ1030にて、同じカウンタ値と同じ個数限定署名検証鍵を含む署名データセットが以前に存在するか否かをチェックしているため、署名生成装置1010で故意にまたは、誤って同じカウンタ値及び同じ個数限定署名生成鍵を用いて2度署名データを生成することによって、署名回数をカウントし損なうことを防ぐことができる。
さらに、署名生成装置1010及び署名検証装置1020で時計をもち、カウンタ値を使用した時刻を示す時刻情報を署名対象データに含ませることにより、同じカウンタ値を使いまわして、同じカウンタ値及び同じ個数限定署名生成鍵を用いて2度署名データを生成することによる、署名回数のカウントし損ないを防ぐことができる。
したがって、ディジタル署名システム1000では、NTRUSign署名方式の攻撃法であるTranscript attackが成功せず、安全である。
3.変形例
上記に説明した第1及び第2の実施の形態は、本発明の実施の一例であり、本発明はこれら実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)第2の実施の形態における署名検証装置では、カウンタ値がしきい値tc以上である場合にNGを表示(出力)していたが、これに限定されない。署名検証装置は、カウンタ値がしきい値tc以上である場合にセンタにユーザ証明書を送信して通知するとしてもよい。また、ユーザ証明書の代わりに署名生成装置のユーザを示す識別子をセンタに送信してもよい。
(2)第2の実施の形態では、署名生成装置において、署名生成を行った現在時刻を示す時刻情報TGを署名対象データに含めていたが、これを現在時刻にしきい値TTを加算した署名検証期限を示す時刻情報TGTを署名対象データに含めるとしてもよい。
このとき、署名検証装置は、図8に示すステップS1115を、当該装置の時計部から取得した時刻情報TVが時刻情報TGTを超えているか否かを判断するように変更する。超えていると判断する場合には、署名検証装置は、ステップS1140を行い、超えていないと判断する場合には、署名検証装置は、ステップS1120を行う。
(3)第1及び第2の実施の形態において、署名データセットにユーザ証明書を含めているが、ユーザ証明書を含めず、ユーザ証明書は予め署名検証装置が保持しているとしてもよい。
(4)第1及び第2の実施の形態において、署名生成装置は、カウンタ値cがtcを超えていれば個数限定署名生成鍵を更新、つまり記憶している個数限定署名生成鍵に新たに生成した個数限定署名生成鍵を上書きするとしているが、これに限定されない。署名生成装置は、カウンタ値cがtcを超えていれば、それ以後は署名データを生成しない、つまり、その署名生成装置は使用しないとしてもよい。このとき、ユーザ証明書及びユーザ署名生成鍵はなくてもよく、その場合は、個数限定証明書は証明書生成サーバCAの署名生成鍵により生成された個数限定署名検証鍵の署名データを含んでもよい。
(5)第1及び第2の実施の形態において、署名生成装置のカウンタ判定部は、カウンタ値cがtcを超えていれば個数限定署名生成鍵を更新、記憶している個数限定署名生成鍵に新たに生成した個数限定署名生成鍵を上書きするとしているが、これに限定されない。署名生成装置は、個数限定署名生成鍵を複数個記憶し、使用する個数限定署名生成鍵を示す情報である使用個数限定署名生成鍵情報を格納した使用個数限定署名生成鍵情報格納部と、使用個数限定署名生成鍵情報を更新する使用個数限定署名生成鍵情報更新部とを備え、署名生成装置はカウンタ値cがtcを超えていれば、使用個数限定署名生成鍵情報を更新するとしてもよい。
なお、各個数限定署名生成鍵に対応する個数限定署名検証鍵は、互いに異なり、各個数限定署名検証鍵それぞれに対する個数限定証明書は、個数限定証明書に含まれる個数限定署名検証鍵に対応する個数限定署名生成鍵と対応付けがなされ、個数限定証明書格納部に格納されているものとする。
このとき、署名生成装置は、使用個数限定署名生成鍵情報格納部に格納されている使用個数限定署名生成鍵情報にて示される個数限定署名生成鍵を用いて署名データを生成し、生成した署名データと、生成に用いた個数限定署名生成鍵に対応する個数限定証明書と、ユーザ証明書とからなる署名データセットを生成する。署名生成装置は、生成した署名データセットを署名検証装置へ送信する。
または、各個数限定署名生成鍵に対応する個数限定署名検証鍵は、1個としてもよい。つまり、個数限定署名検証鍵は、すべての個数限定署名生成鍵に対応する鍵としてもよい。
(6)第1及び第2の実施の形態では、署名方式としてNTRUSignを使用しているが、これを他の署名方式、例えばRSA署名方式、RSA−PSS署名方式や楕円DSA署名方式としてもよい。
(7)第1の実施の形態において、署名生成装置のカウンタ判定部は、署名データSが生成されると、カウンタ値のチェックを行ったが、これに限定されない。
署名生成装置のカウンタ判定部は、定期的に、カウンタ値のチェックを行ってもよい。または、ユーザの指示を受け付けることにより、カウンタ判定部108は、カウンタ値のチェックを行ってもよい。
(8)第2の実施の形態において、センタは、不正メッセージとユーザ証明書を受信するのみとしたが、これに限定されない。
センタは、受信したユーザ証明書を格納し、格納された1以上のユーザ証明書に含まれるユーザ署名検証鍵からなる無効化リストを生成しする。センタは、生成した無効化リストを署名検証装置へ送信する。
このとき、署名検証装置は、センタからから無効化リストを受信すると、受信した無効化リストを格納する。署名検証装置は、署名生成装置から署名データセットを受信すると、受信した署名データセットに含まれるユーザ証明書を取得し、取得したユーザ証明書に含まれるユーザ署名検証鍵が、格納している無効化リストに存在するか否かを判断する。存在すると判断する場合には、署名検証装置は、メッセージ「NG」を表示する。存在しないと判断する場合には、図8にて示す1105以降の動作を行う。
(9)第1の実施の形態において、署名生成装置のカウンタ判定部が予め格納しているしきい値は、固定としたが、これに限定されない。しきい値は可変であってもよい。
例えば、署名生成装置は、さらに、ユーザの操作によりしきい値tc’を受け付けると、当該装置のカウンタ判定部にて格納しているしきい値tcを、受け付けたしきい値tc’へと上書きして更新することで、しきい値を可変とすることができる。
または、署名生成装置は、しきい値を定期的に変更することで、しきい値が可変となるようにしてもよい。
(10)第2の実施の形態において、署名生成装置のカウンタ判定部が予め格納しているしきい値は、固定としたが、これに限定されない。しきい値は可変であってもよい。
このときの動作の一例を以下に記述する。署名生成装置は、さらに、ユーザの操作によりしきい値tc’を受け付けると、当該署名生成装置のカウンタ判定部にて格納しているしきい値tcを、受け付けたしきい値tc’へと上書きして更新する。署名生成装置は、受け付けたしきい値tc’を、署名検証装置へ送信する。署名検証装置は、署名生成装置から、しきい値tc’を受信すると、当該署名検証装置のカウンタ判定部に格納しているしきい値を、受信したしきい値tc’へと上書きして更新する。
または、以下のような動作でもよい。署名生成装置は、しきい値を定期的に変更し、変更したしきい値を署名検証装置へ送信する。署名検証装置は、変更されたしきい値を受信すると、当該署名検証装置のカウンタ判定部に格納しているしきい値を、受信したしきい値tc’へと上書きして更新する。
(11)第1の実施の形態において、署名生成装置は、カウンタ値に初期値として0を設定したが、これに限定されない。署名生成装置は、カウンタ値の初期値として、1を設定してもよい。このとき、署名生成装置は、カウンタ値cが、しきい値tcを超えているか否かを判断し、超えていると判断する場合に、個数減限定署名生成鍵及び個数限定証明書を更新する。
また、第2の実施の形態においても同様に、署名生成装置は、カウンタ値の初期値として、1を設定してもよい。このとき、署名生成装置は、カウンタ値cが、しきい値tcを超えているか否かを判断し、超えていると判断する場合に、個数減限定署名生成鍵及び個数限定証明書を更新する。署名検証装置は、受信したカウンタ値cが、しきい値tcを超えているか否かを判断し、超えていると判断する場合に、NGを表示(出力)し、超えていないと判断する場合には、時刻情報による判断を行う。
(12)第2の実施の形態において、署名生成装置は、署名データSを生成した後、カウンタ値の値に1を加算したが、これに限定されない。
署名生成装置は、署名対象データDを生成する前に、カウンタ値の値に1を加算してもよい。つまり、署名生成装置は、図7にて示す署名生成処理において、ステップS1000を実行した後、ステップS1015を実行し、その後、ステップS1005、S1010、S1020及びS1025の順に実行してもよい。
また、このとき、署名生成装置は、カウンタ値のチェック処理を、署名データを生成する前に行ってもよい。この場合、カウンタ値が所定値以上と判断される場合には、署名生成装置は、新たな個数限定署名生成鍵及び新たな個数限定証明書を生成し、生成した新たな個数限定署名生成鍵を用いて、署名対象データの署名データを生成する。そして、署名生成装置は、署名対象データと、生成した署名データと、生成した新たな個数限定証明書と、ユーザ証明書とからなる署名データセットを生成する。
(13)第1の実施の形態において、署名生成装置は、署名データSを生成する前に、カウンタ値の値に1を加算してもよい。
また、このとき、署名生成装置は、カウンタ値のチェック処理を、署名データを生成する前に行ってもよい。この場合、カウンタ値が所定値以上と判断される場合には、署名生成装置は、新たな個数限定署名生成鍵及び新たな個数限定証明書を生成し、生成した新たな個数限定署名生成鍵を用いて、メッセージデータの署名データを生成する。そして、署名生成装置は、メッセージデータと、生成した署名データと、生成した新たな個数限定証明書と、ユーザ証明書とからなる署名データセットを生成する。
(14)第2の実施の形態において、署名生成装置は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データDに対する署名データSを生成したが、これに限定されない。
署名生成装置は、メッセージデータmに対する署名データSを生成してもよい。このとき、署名生成装置は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなるデータDと、署名データSと、個数限定証明書CLと、ユーザ証明書CUとを署名検証装置へ送信する。
(15)第2の実施の形態において、署名生成装置は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データD、署名対象データDに対する署名データS、個数限定証明書CL及びユーザ証明書CUを署名検証装置へ送信したが、これに限定されない。
署名生成装置は、メッセージデータmと、カウンタ値cとからなる署名対象データD、署名対象データDに対する署名データS、個数限定証明書CL及びユーザ証明書CUを署名検証装置へ送信してもよい。このとき、署名検証装置にて行われる署名検証処理では、図8にて示すステップS1115が省略される。
または、署名生成装置は、メッセージデータmと、時刻情報TGとからなる署名対象データD、署名対象データDに対する署名データS、個数限定証明書CL及びユーザ証明書CUを署名検証装置へ送信してもよい。このとき、署名検証装置にて行われる署名検証処理では、図8にて示すステップS1110が省略される。
(16)第1の実施の形態において、署名生成装置は、ユーザの操作によりメッセージデータを受け付けるとしたが、これに限定されない。
署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
また、第2の実施の形態においても同様に、署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
(17)第1の実施の形態において、署名生成装置のカウンタ部は、保持しているカウンタ値に1加算したが、これに限定されない。署名生成装置のカウンタ部は、他の数値を加算してもよいし、乗算してもよい。乗算する場合には、カウンタ値の初期値は、例えば、1とする。
また、第2の実施の形態においても同様に、署名生成装置のカウンタ部は、他の数値を加算してもよいし、乗算してもよい。乗算する場合には、カウンタ値の初期値は、例えば、1とする。
(18)これらの実施の形態及び変形例の組合せであってもよい。
<その他の変形例>
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(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.まとめ
本発明は、メッセージデータを含む署名対象データに対する署名データを生成する署名生成装置であって、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納部と、前記個数限定署名生成鍵格納部に格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成部と、前記署名生成部において、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタ部と、前記カウンタ部のカウンタ値を判定する第1のカウンタ判定部とを備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成部において、前記署名データを生成しないよう制御することを特徴とする。
ここで、前記署名生成装置はさらに、前記個数限定署名生成鍵を生成する鍵生成部を備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記鍵生成部を用いて前記個数限定署名生成鍵を生成し、前記個数限定署名生成鍵格納部に格納するよう制御するとしてもよい。
ここで、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記鍵生成部を用いて前記個数限定署名生成鍵を生成し、前記個数限定署名生成鍵格納部に格納されている以前の前記個数限定署名生成鍵に上書きして更新するよう制御するとしてもよい。
ここで、前記個数限定署名生成鍵は複数存在し、前記署名生成装置はさらに、複数の前記個数限定署名生成鍵の中で使用する前記個数限定署名生成鍵である使用個数限定署名生成鍵を示す情報である使用個数限定署名生成鍵情報を格納する使用個数限定署名生成鍵情報格納部と、前記使用個数限定署名生成鍵情報格納部の前記使用個数限定署名生成鍵情報を更新する使用個数限定署名生成鍵情報更新部とを備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記鍵生成部を用いて、前記使用個数限定署名生成鍵情報更新部において、前記個数限定署名生成鍵情報を更新するとしてもよい。
ここで、前記署名生成装置はさらに、前記個数限定署名生成鍵に対応する、前記署名データを検証するために使用する個数限定署名検証鍵の証明書を格納する個数限定証明書格納部と、前記個数限定証明書を生成するために使用するユーザ署名生成鍵を格納するユーザ署名生成鍵格納部とを備え、前記鍵生成部は、前記個数限定署名生成鍵と前記個数限定署名生成鍵に対応する前記個数限定証明書を生成し、それぞれを前記個数限定署名生成鍵格納部と前記個数限定証明書格納部へ格納するとしてもよい。
ここで、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記鍵生成部を用いて前記個数限定署名生成鍵と前記個数限定署名生成鍵に対応する前記個数限定証明書を生成し、それぞれを前記個数限定署名生成鍵格納部に格納されている以前の前記個数限定署名生成鍵と、前記個数限定証明書格納部に格納されている以前の前記個数限定署名生成鍵に上書きして更新するよう制御するとしてもよい。
ここで、前記署名生成部は、前記署名生成鍵格納部に格納された前記署名生成鍵を用いて、前記メッセージデータと前記カウンタ部が示すカウンタ値を含む前記署名対象データに対する前記署名データを生成するとしてもよい。
ここで、前記署名生成装置はさらに、時刻情報を保持する第1の時計を備え、前記署名対象データはさらに、前記第1の時計が保持する前記時刻情報を含むとしてもよい。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを検証する署名検証装置であって、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納部と、前記個数限定署名検証鍵格納部に格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証部と、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定部とを備え、前記第2のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証部において署名検証を行わないよう制御することを特徴とする。
ここで、前記署名検証装置はさらに、センタに情報を通知する通知部を備え、前記第2のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記通知部において、前記署名検証鍵または、前記署名検証鍵の識別子をセンタに通知するよう制御するとしてもよい。
ここで、前記署名検証装置はさらに、第2の時刻情報を保持する第2の時計と、時刻情報を判定する時刻判定部とを備え、前記署名対象データはさらに、第1の時刻情報を含み、前記時刻判定部は、第1の時刻情報と第2の時刻情報を比較し、第2の時刻情報から第1の時刻情報を減算した時刻差分が予め与えられた所定値より大きい場合に、前記署名検証部において署名検証を行わないよう制御するとしてもよい。
ここで、前記署名検証装置はさらに、第2の時刻情報を保持する第2の時計と、時刻情報を判定する時刻判定部とを備え、前記署名対象データはさらに、第1の時刻情報を含み、前記時刻判定部は、第1の時刻情報と第2の時刻情報を比較し、第2の時刻情報から第1の時刻情報を減算した時刻差分が予め与えられた所定値より大きい場合に、前記署名検証鍵または、前記署名検証鍵の識別子をセンタに通知するよう制御するとしてもよい。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを生成する署名生成装置と前記署名データを検証する署名検証装置とからなるディジタル署名システムであって、前記署名生成装置は、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納部と、前記個数限定署名生成鍵格納部に格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成部と、前記署名生成部において、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタ部と、前記カウンタ部の前記カウンタ値を判定する第1のカウンタ判定部とを備え、前記署名検証装置は、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納部と、前記個数限定署名検証鍵格納部に格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証部と、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定部とを備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成部において、前記署名データを生成しないよう制御し、前記第2のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証部において署名検証を行わないよう制御することを特徴とする。
ここで、前記ディジタル署名システムはさらに、前記署名対象データと前記署名データからなる署名データセットを監視する署名監視サーバと前記署名監視サーバから監視結果情報の通知を受けるセンタを備え、前記署名監視サーバは、前記署名データセットを取得する署名データセット取得部と、以前の前記署名データセットからなる署名データセットログを格納する署名データセットログ格納部と、前記署名データセットを判定する署名データセット判定部とを備え、前記署名データセット判定部は、前記署名データセット取得部で取得した前記署名データセットと、前記署名データセットログとを比較することにより判定し、その判定結果により前記監視結果情報を生成し、前記センタへ通知するとしてもよい。
ここで、前記署名データセット判定部は、前記署名データセットの中の前記署名対象データに含まれるカウンタ値と、前記署名データセットログ格納部に格納されている以前の前記署名データセットの中の前記署名対象データに含まれるカウンタ値とを比較するとしてもよい。
また、本発明は、メッセージデータを含む署名対象データに対する署名データを生成する署名生成方法であって、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納ステップと、前記個数限定署名生成鍵格納ステップで格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成ステップと、前記署名生成ステップにおいて、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタステップと、前記カウンタステップで数えたカウンタ値を判定する第1のカウンタ判定ステップとを備え、前記第1のカウンタ判定ステップは、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成ステップにおいて、前記署名データを生成しないよう制御することを特徴とする。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを検証する署名検証方法であって、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納ステップと、前記個数限定署名検証鍵格納ステップで格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証ステップと、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定ステップとを備え、前記第2のカウンタ判定ステップは、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証ステップにおいて署名検証を行わないよう制御することを特徴とする。
また、本発明は、メッセージデータを含む署名対象データに対する署名データを生成する署名生成装置に実行させるプログラムであって、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納ステップと、前記個数限定署名生成鍵格納ステップで格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成ステップと、前記署名生成ステップにおいて、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタステップと、前記カウンタステップで数えたカウンタ値を判定する第1のカウンタ判定ステップとを前記署名生成装置に実行させ、前記第1のカウンタ判定ステップは、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成ステップにおいて、前記署名データを生成しないよう制御することを特徴とする。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを検証する署名検証装置に実行させるプログラムであって、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納ステップと、前記個数限定署名検証鍵格納ステップで格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証ステップと、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定ステップとを前記署名検証装置に実行させ、前記第2のカウンタ判定ステップは、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証ステップにおいて署名検証を行わないよう制御することを特徴とする。
また、本発明は、メッセージデータを含む署名対象データに対する署名データを生成する署名生成装置の集積回路であって、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納部と、前記個数限定署名生成鍵格納部に格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成部と、前記署名生成部において、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタ部と、前記カウンタ部のカウンタ値を判定する第1のカウンタ判定部とを備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成部において、前記署名データを生成しないよう制御することを特徴とする。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを検証する署名検証装置の集積回路であって、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納部と、前記個数限定署名検証鍵格納部に格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証部と、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定部とを備え、前記第2のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証部において署名検証を行わないよう制御することを特徴とする。
上記の示したディジタル署名システムの構成によると、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
上述した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を防ぐことのできる署名生成装置、署名検証装置、署名システム、署名生成方法、署名検証プログラム、署名検証方法、署名検証プログラム、署名生成用の集積回路及び署名検証用の集積回路を提供することを目的とする。
上記目的を達成するために、本発明は、署名鍵を用いて署名を行う署名生成装置であって、前記署名鍵を記憶している鍵記憶手段と、前記署名鍵を用いて、署名対象データに署名を施して、署名データを生成する署名生成手段と、前記署名データの生成時に、前記署名鍵を用いて署名を行った累積回数をカウントするカウンタ手段と、前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断手段と、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止手段とを備えることを特徴とする。
ここで、署名抑止手段のよる署名抑止とは、鍵記憶手段にて記憶されている署名鍵の使用を禁止する概念、及び鍵記憶手段に記憶されている署名鍵を削除し、別の署名鍵を鍵記憶手段へ書き込む、つまり上書きする概念の両方を含む。
上記に示した構成によると、署名生成装置は、署名鍵を用いて署名を行った累積回数をカウントし、累積回数が所定回数に達している場合には、以後、前記署名鍵による署名を抑止するので、前記署名鍵を用いた署名に対するTranscript attackを防ぐことができる。
ここで、前記署名抑止手段は、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、前記署名鍵とは別の署名鍵を生成し、生成した前記別の署名鍵を、前記鍵記憶手段にて記憶されている前記署名鍵に対して上書きすることにより、前記署名鍵による署名を抑止するとしてもよい。
この構成によると、署名生成装置は、累積回数が所定回数に達している場合には、前記署名鍵とは別の署名鍵を生成し、前記鍵記憶手段にて記憶している前記署名鍵に対して生成した前記別の署名鍵を上書きしているので、前記署名鍵を用いた署名の抑止を確実に行うことができる。
ここで、前記署名生成装置は、さらに、前記署名鍵に対応する検証鍵と、前記検証鍵の正当性を示し、第1の秘密鍵により生成された検証鍵署名データとを含む検証鍵証明書を記憶している検証鍵証明書記憶手段と、前記第1の秘密鍵に対応する公開鍵と、前記公開鍵の正当性を示し、外部の機関が有する第2の秘密鍵により生成された公開鍵署名データとを含む公開鍵証明書を記憶している公開鍵証明書記憶手段と、前記署名対象データと、前記署名生成手段にて生成された前記署名データと、前記検証鍵証明書と、前記公開鍵証明書とを、前記署名データの検証を行う署名検証装置へ送信する送信手段とを備えるとしてもよい。
この構成によると、署名生成装置は、署名データの検証に必要な検証鍵を多階層化して署名検証装置へ送信しているので、検証鍵の正当性を高めることができる。
ここで、前記署名抑止手段は、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、さらに、前記別の署名鍵に対応し、前記検証鍵とは別の検証鍵を生成し、生成した前記別の検証鍵に対して、前記第1の秘密鍵を用いて、前記検証鍵署名データとは別の検証鍵署名データを生成し、前記別の検証鍵と前記検証鍵署名データとを含む、前記検証鍵証明書とは別の検証鍵証明書を生成し、生成した前記別の検証鍵証明書を、前記公開鍵証明書記憶手段に記憶されている前記検証鍵証明書に対して上書きするとしてもよい。
この構成によると、署名生成装置は、累積回数が所定回数に達している場合には、前記検証鍵証明書とは別の検証鍵証明書を生成し、前記検証鍵証明書記憶手段にて記憶している前記検証鍵証明書に対して生成した前記別の検証鍵証明書を上書きしている。これにより、別の署名鍵と別の検証鍵証明書との同期をとることができ、署名生成装置は、生成した別の署名鍵を、署名に利用することができる。
ここで、前記署名生成装置は、さらに、前記署名鍵を示す第1鍵情報を記憶している情報記憶手段を備え、前記署名生成手段は、前記記憶手段にて記憶されている第1鍵情報に基づいて、前記鍵記憶手段から前記署名鍵を取得し、取得した前記署名鍵を用いて、前記署名データを生成し、前記鍵記憶手段は、さらに、前記署名鍵とは別の署名鍵を記憶しており、前記署名抑止手段は、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、前記情報記憶手段にて記憶されている前記第1鍵情報を、前記別の署名鍵を示す第2鍵情報へと書き換えることにより、前記署名鍵による署名を抑止するとしてもよい。
この構成によると、署名生成装置は、累積回数が所定回数に達している場合には、情報記憶手段にて記憶している第1鍵情報を第2鍵情報へと書き換えているので、前記署名鍵を用いた署名の抑止を確実に行うことができる。
ここで、前記署名生成手段は、前記カウンタ手段にてカウントされた累積回数を取得し、前記署名対象データは、メッセージデータと取得した累積回数とを含むとしてもよい。
この構成によると、署名生成装置は、署名対象データにメッセージデータと累積回数とを含んでいるので、生成する署名データの正当性を高めることができる。
ここで、前記署名生成装置は、さらに、時刻を計時する時計手段を備え、前記署名生成手段は、前記時計手段を用いて、署名データの有効期限の判断基準となる時刻情報を取得し、前記署名対象データは、メッセージデータと取得した前記時刻情報とを含むとしてもよい。
この構成によると、署名生成装置は、署名対象データにメッセージデータと時刻情報とを含んでいるので、生成する署名データの正当性を高めることができる。
ここで、前記判断手段は、前記所定回数を記憶している回数記憶部を有しており、前記署名生成装置は、さらに、前記回数記憶部にて記憶されている前記所定回数を別の所定回数へと更新する更新手段を備えるとしてもよい。
この構成によると、署名生成装置は、Transcript attackに必要な署名データの数が変更された場合でも、所定回数を更新することができるので、Transcript attackを防ぐことができる。
また、本発明は、署名鍵を用いて署名を行う署名生成装置にて生成された署名データを検証する署名検証装置であって、前記署名生成装置から、メッセージデータと前記署名生成装置が前記署名鍵を用いて署名を行った累積回数とを含む署名対象データと、前記署名対象データに対する署名データとを、前記署名生成装置から受信する受信手段と、受信した前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断手段と、前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止手段とを備えることを特徴とする。
この構成によると、署名検証装置は、受信した署名対象データに含まれる累積回数が所定回数に達している場合には、受信した署名データの検証を抑止している。これにより、累積回数が所定回数に達している署名データを受信すると、受信した署名データを検証することなく、不正なものとみなすことができる。
ここで、前記署名対象データは、さらに、前記署名データの有効期限の判断基準となる第1時刻情報を含み、前記署名検証装置は、さらに、時刻を計時する時計手段と、前記累積回数が前記所定回数に達していないと判断される場合に、前記時計手段を用いて現在時刻を示す第2時刻情報を取得し、前記第1時刻情報と取得した第2時刻情報とを用いて、前記署名データの有効期限が過ぎているか否かを判断する期限判断手段と、前記署名データの有効期限が過ぎていないと判断される場合に、前記署名データを検証する検証手段とを備え、前記検証抑止手段は、さらに、前記署名データの有効期限が過ぎていると判断される場合に、前記署名データの検証を抑止するとしてもよい。
この構成によると、署名検証装置は、受信した署名データの有効期限が過ぎている場合には、受信した署名データの検証を抑止している。これにより、有効期限が過ぎた署名データを受信すると、受信した署名データを検証することなく、不正なものとみなすことができる。
ここで、前記署名データは、前記署名生成装置が生成した署名鍵を用いて生成され、前記受信手段は、さらに、前記署名鍵に対応する検証鍵と、前記検証鍵の正当性を示し、第1の秘密鍵により生成された検証鍵署名データとを含む検証鍵証明書と、前記第1の秘密鍵に対応する第1の公開鍵と、前記第1の公開鍵の正当性を示し、外部の機関が有する第2の秘密鍵により生成された公開鍵署名データとを含む公開鍵証明書とを受信し、前記検証手段は、前記第2の秘密鍵に対応する第2の公開鍵を記憶している鍵記憶部と、前記署名データの有効期限が過ぎていると判断される場合に、前記第2の公開鍵を用いて、前記公開鍵証明書が正当であるか否かを検証する第1検証部と、前記公開鍵証明書が正当であると判断される場合に、前記第1の公開鍵を用いて前記検証鍵明書が正当であるか否かを検証する第2検証部と、前記検証鍵証明書が正当であると判断される場合に、前記署名データが正当であるか否かを検証する第3検証部とを備えるとしてもよい。
この構成によると、署名検証装置は、多階層化された検証鍵を受信し、階層化された上位層から順に署名検証を行っているので、信頼性の高い検証を行うことができる。
ここで、前記署名検証装置は、さらに、前記累積回数が前記所定回数に達していると判断される場合に、前記署名データを生成した前記署名生成装置を特定する特定情報を、外部装置へ送信する送信手段を備えるとしてもよい。
この構成によると、署名検証装置は、受信した署名対象データに含まれる累積回数が所定回数に達している場合には、受信した署名データを生成した前記署名生成装置を特定する特定情報を外部装置へ送信するので、外部装置に、不正な署名データを生成した署名生成装置の管理を行わせることができる。
ここで、前記回数判断手段は、前記所定回数を記憶している回数記憶領域を有しており、前記署名検証装置は、さらに、前記署名生成装置から前記所定回数とは別の所定回数を受信し、前記回数記憶領域にて記憶されている前記所定回数を、受信した前記別の所定回数へと更新する更新手段を備えるとしてもよい。
この構成によると、署名検証装置は、署名生成装置との間で、所定回数の同期をとることができる。
また、本発明は、署名鍵を用いて署名を行う署名生成装置と、前記署名生成装置にて生成された署名データを検証する署名検証装置とからなる署名システムであって、前記署名生成装置は、前記署名鍵を記憶している鍵記憶手段と、前記署名鍵を用いて、メッセージデータと、前記署名鍵を用いて署名を行った累積回数とを含む署名対象データに署名を施して前記署名データを生成する署名生成手段と、前記署名データの生成時に、前記累積回数をカウントするカウンタ手段と、前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断手段と、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止手段と、前記署名対象データと、前記署名データとを含むデータ群を、前記署名検証装置へ送信する送信手段とを備え、前記署名検証装置は、前記署名生成装置から前記データ群を前記署名生成装置から受信する受信手段と、受信した前記データ群の前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断手段と、前記回数判断手段にて前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止手段とを備えることを特徴とする。
この構成によると、署名システムは、署名生成装置にて、秘密鍵を用いて署名を行った累積回数をカウントし、累積回数が所定回数に達している場合には、以後、前記秘密鍵による署名を抑止するので、前記秘密鍵を用いた署名に対するTranscript attackを防ぐことができる。また、署名システムは、署名検証装置にて、受信した署名対象データに含まれる累積回数が所定回数に達している場合には、受信した署名データの検証を抑止しているので、累積回数が所定回数に達している署名データを受信すると、受信した署名データを検証することなく、不正なものとみなすことができる。
ここで、前記署名システムは、さらに、前記署名生成装置から前記署名検証装置へと送信される前記データ群を監視する監視装置を備え、前記監視装置は、前記署名生成装置と前記署名検証装置とを接続する伝送路から前記データ群を取得する取得手段と、前記データ群が取得される前に、既に取得された1以上の取得済データ群を記憶しているログ記憶手段と、前記1以上の取得済データ群を用いて、取得した前記データ群が正当であるか否かを判断するデータ判断手段と、前記データ群が不正なものであると判断される場合に、取得した前記データ群に含まれる前記署名データを生成した前記署名生成装置を特定する特定情報を、外部装置へ送信する情報送信手段とを備えるとしてもよい。
この構成によると、署名システムは、監視装置にて、伝送路に流れるデータ群が正当であるか否かを監視し、不正なデータ群である場合には、そのデータ群に含まれる署名データを生成した署名生成装置を特定する特定情報を外部装置に送信している。これにより、署名システムは、外部装置に、不正なデータ群に含まれる署名データを生成した署名生成装置の管理を行わせることができる。
ここで、前記データ群は、さらに、前記署名鍵に対応する検証鍵を含み、前記1以上の取得済データ群それぞれは、取得済累積回数を含む取得済署名対象データと、取得済検証鍵とを含み、前記データ判断手段は、前記検証鍵及び前記累積回数と、一致する取得済検証鍵及び取得済累積回数を含む取得済データ群が、ログ記憶手段に存在するか否かを検索し、存在する場合には、取得した前記データ群は不正なものであると判断するとしてもよい。
この構成によると、署名システムは、監視装置にて、データ群に含まれる検証鍵及び累積回数とを用いて、データ群が正当であるか否かを判断することできる。
1.第1の実施の形態
以下、本発明に係る第1の実施の形態としてのディジタル署名システム1について、図面を参照して説明する。
1.1 ディジタル署名システム1の概要
ディジタル署名システム1は、図1に示すように、署名生成装置10と、署名検証装置20と、通信路50とから構成されている。
署名生成装置10は、メッセージデータmに対する署名データセットSSを生成し、通信路50を介して署名検証装置20に署名データセットSSを送信する。なお、署名データセットSSの構成については、後述する。
署名検証装置20は、その署名データセットSSを受信し、受信した署名データセットSSがメッセージデータmの正しい署名であるかを検証する。署名検証装置20は、署名データセットSSが正しいと判定する場合には、署名データセットSSを受理し、署名データセットSSが不正と判定する場合には、署名データセットSSを拒否する。
1.2 署名生成装置10の構成
署名生成装置10は、図1に示すように、ユーザ署名生成鍵格納部101と、ユーザ証明書格納部102と、個数限定署名生成鍵格納部103と、個数限定証明書格納部104と、署名生成部105と、署名データセット生成部106と、カウンタ部107と、カウンタ判定部108と、個数限定鍵生成部109と、送信部110とから構成される。
署名生成装置10は、NTRUSign署名方式にて用いられる秘密鍵である個数限定署名生成鍵と、前記秘密鍵に対応する公開鍵に対応する公開鍵証明書である個数限定証明書とを格納しており、個数限定署名生成鍵を用いて、入力であるメッセージデータmに対する署名データSを生成する。また、署名生成装置10は、生成した署名データの個数をカウントし、カウントした値が所定のしきい値tcを超えた場合に、新たな個数限定署名生成鍵及び個数限定証明書を生成する。
なお、しきい値tcはNTRUSign署名方式のTranscipt attackが成功しない署名の個数であり、例えば、10^7である。また、個数限定証明書の詳細については、後述する。
(1)ユーザ署名生成鍵格納部101
ユーザ署名生成鍵格納部101は、個数限定証明書CLを生成するために使用するユーザ署名生成鍵KUGを格納している。ユーザ署名生成鍵KUGは予め与えられているものとする。
ここで、個数限定証明書CLは、個数限定署名生成鍵に対応する個数限定署名検証鍵KLV(公開鍵)と、ユーザ署名生成鍵KUGを用いて個数限定署名検証鍵KLVに署名を施した署名データSKLVとからなる。
なお、個数限定証明書には、個数限定署名検証鍵KLV及び署名データSKLVに加えて他のデータを含んでいてもよい。例えば、個数限定証明書を識別するための識別子を含んでもよい。署名データSKLVは、NTRUSign署名方式に基づいて生成される。NTRUSign署名方式については、非特許文献4に詳細が記述されており、公知の技術であるため、ここでの説明は省略する。
(2)ユーザ証明書格納部102
ユーザ証明書格納部102は、ユーザ署名生成鍵KUGに対応するユーザ証明書CUを格納している。ユーザ証明書CUは、ユーザ署名生成鍵に対応するユーザ署名検証鍵KUVと、証明書生成サーバCA(図示せず)の秘密鍵を用いてユーザ署名検証鍵KUVに署名を施した署名データSKUVからなる。署名データSKUVも、NTRUSign署名方式に基づいて生成される。また、ユーザ証明書CUもユーザ署名生成鍵KUGと同様に、予め与えられているものとする。なお、ユーザ証明書CUには、ユーザ署名検証鍵KUV及び署名データSKUVに加えて他のデータを含んでいてもよい。例えば、ユーザの識別子や証明書の期限などを含んでもよい。
ここで、証明書生成サーバCAは、認証局(Certificate Authority)と呼ばれる機関に具備される装置であり、ユーザ署名検証鍵KUVが正しい公開鍵であることを示す(公開鍵に対する「お墨付き」となる)「ユーザ証明書」を発行する。つまり、ユーザ証明書格納部102は、証明書生成サーバCAにより発行されたユーザ証明書CUを予め格納している。また、認証局は、署名生成装置ごとに異なるユーザ署名生成鍵及びユーザ署名検証鍵を生成し、さらに、証明書生成サーバCAを用いて、生成したユーザ署名検証鍵に対するユーザ証明書を生成する。認証局は、生成したユーザ署名生成鍵及びユーザ証明書を対応する署名生成装置へ配布する。これにより、署名生成装置は、ユーザ署名生成鍵とユーザ証明書とを予め格納することができる。
(3)個数限定署名生成鍵格納部103
個数限定署名生成鍵格納部103は、メッセージデータに対する署名データを生成するために使用する個数限定署名生成鍵KLGを格納するための領域を有している。
署名生成装置10は、個数限定署名生成鍵を生成し、生成した個数限定署名生成鍵を個数限定署名生成鍵格納部103へ格納する。
(4)個数限定証明書格納部104
個数限定証明書格納部104は、個数限定署名生成鍵KLGに対応する個数限定証明書CLを格納するための領域を有している。
署名生成装置10は、個数限定証明書を生成し、生成した個数限定証明書を個数限定証明書格納部104へ格納する。
(5)署名生成部105
署名生成部105は、メッセージデータmの署名データSの生成、及び個数限定署名検証鍵KLVの署名データSKLVの生成を行う。
<署名データSを生成する場合>
署名生成部105は、署名データセット生成部106から、メッセージデータmの署名データの生成の指示を示す第1署名生成指示を受け取ると、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGを読み出し、読み出した個数限定署名生成鍵KLGを用いて、メッセージデータmに対する署名データSを生成、つまりメッセージデータmに署名を施して署名データSを生成する。
署名生成部105は、署名データSの生成が完了すると、その旨を示す第1完了通知を署名データセット生成部106へ出力する。
署名生成部105は、第1完了通知を署名データセット生成部106へ出力した後、カウントした値が所定値tcを超えているか否かの判定を指示するカウンタ判定指示をカウンタ判定部108へ出力する。
なお、署名データSは、NTRUSign署名方式に基づいて生成される。
<署名データSKLVを生成する場合>
署名生成部105は、個数限定鍵生成部109からユーザ署名検証鍵KLVの署名データSKLVの生成の指示を示す第2署名生成指示を受け取ると、ユーザ署名生成鍵格納部101に格納されているユーザ署名生成鍵KUGを読み出し、読み出したユーザ署名生成鍵KUGを用いて、個数限定鍵生成部109にて生成された個数限定署名検証鍵KLVに対する署名データSKLVを生成、つまり個数限定署名検証鍵KLVに署名を施して署名データSKLVを生成する。なお、個数限定鍵生成部109の動作については後述する。
署名生成部105は、署名データSKLVの生成が完了すると、その旨を示す第2完了通知を個数限定鍵生成部109へ出力する。
なお、署名データSKLVは、NTRUSign署名方式に基づいて生成される。
また、鍵更新時において、個数限定鍵生成部109にて個数限定署名検証鍵KLVNが生成された場合も、上記と同様の動作により、署名生成部105は、署名データSKLVNを生成する。このとき、署名生成部105は、個数限定鍵生成部109にて生成された個数限定署名検証鍵KLVNを、新たな個数限定署名検証鍵KLVとして、署名データSKLVNを生成する。
(6)署名データセット生成部106
署名データセット生成部106は、ユーザによる操作によりメッセージデータmを受け付けると、個数限定証明書格納部104から個数限定証明書CLを、ユーザ証明書格納部102からユーザ証明書CUを、それぞれ読み出す。
署名データセット生成部106は、第1署名生成指示を署名生成部105へ出力し、その後、署名生成部105から第1完了通知を受け取ると、メッセージデータmと、署名生成部105にて生成されたメッセージデータmの署名データSと、読み出した個数限定証明書CLと、読み出したユーザ証明書CUとからなる署名データセットSSを生成する。
署名データセット生成部106は、送信部110を介して、生成した署名データセットSSを署名検証装置20へ送信する。
(7)カウンタ部107
カウンタ部107は、署名データSを生成した回数をカウントし、現在の署名データ生成回数を保持するカウンタを備える。
カウンタ部107は、個数限定鍵生成部109から、カウンタ値cを初期値0に設定する旨の初期値設定指示を受け取ると、カウンタ値c=0とする。
カウンタ部107は、署名生成部105にて署名データSが生成されると、カウンタ値cに1を加算し、加算結果を再度、カウンタ値cとして保持する。
これにより、カウンタ部107は、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGにより生成された署名データの個数をカウントすることができる。また、言い換えると、カウンタ部107は、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGの使用回数をカウントすることができる。
(8)カウンタ判定部108
カウンタ判定部108は、しきい値tcを予め格納している。
カウンタ判定部108は、署名生成部105からカウンタ判定指示を受け取ると、カウンタ部107のカウンタ値cが、しきい値tc以上であるか否かを判断する。
しきい値tc以上であると判断する場合には、カウンタ判定部108は、個数限定署名生成鍵及び個数限定署名検証鍵の更新を指示する鍵更新指示を個数限定鍵生成部109へ出力する。
(9)個数限定鍵生成部109
個数限定鍵生成部109は、個数限定署名生成鍵及び個数限定証明書を生成する。
個数限定鍵生成部109は、図1に示すように、初期設定部150と署名抑止部151とを有している。
<初期設定部150>
初期設定部150は、個数限定署名生成鍵及び個数限定証明書を初期設定として個数限定署名生成鍵格納部103及び個数限定証明書格納部104に格納する場合に、個数限定署名生成鍵及び個数限定証明書を生成する。
以下にその動作について説明する。
個数限定鍵生成部109の初期設定部150は、ユーザの操作により、初期設定を行う旨の初期設定指示を受け付けると、NTRUSign署名方式の秘密鍵及び公開鍵を生成する。
初期設定部150は、生成した秘密鍵を個数限定署名生成鍵KLGとし、生成した公開鍵を個数限定署名検証鍵KLVとし、個数限定署名生成鍵KLGを個数限定署名生成鍵格納部103に格納する。
初期設定部150は、第2署名生成指示を署名生成部105へ出力する。その後、初期設定部150は、第2完了通知を署名生成部105から受け取ると、個数限定署名検証鍵KLVと、署名生成部105にて生成された署名データSKLVとからなる個数限定証明書CLを生成する。
初期設定部150は、生成した個数限定証明書CLを個数限定証明書格納部104に格納する。
初期設定部150は、初期値設定指示をカウンタ部107へ出力する。
<署名抑止部151>
署名抑止部151は、上記の「課題を解決するための手段」にて記述した署名抑止手段に対応しており、カウンタ値cがしきい値tcを超えた場合に、その時点で個数限定署名生成鍵格納部103に格納されている秘密鍵を用いた署名の抑止を行う。
ここでは、署名抑止の一例として、上書きの概念を用いる。
以下に、署名抑止部151の動作について説明する。
署名抑止部151は、カウンタ判定部108から、鍵更新指示を受け取ると、NTRUSign署名方式の鍵生成により、新たな個数限定署名生成鍵KLGNを秘密鍵として、新たな個数限定署名検証鍵KLVNを公開鍵として生成する。
署名抑止部151は、先ず、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGを削除し、その後、個数限定署名生成鍵KLGNを新たな個数限定署名生成鍵KLGとして、個数限定署名生成鍵格納部103に書き込む。つまり、署名抑止部151は、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGに、個数限定署名生成鍵KLGNを上書きし更新することにより、個数限定署名生成鍵KLGとする。
署名抑止部151は、第2署名生成指示を署名生成部105へ出力する。その後、署名抑止部151は、第2完了通知を署名生成部105から受け取ると、個数限定署名検証鍵KLVNと、署名生成部105にて生成された署名データSKLVNとからなる個数限定証明書CLNを生成する。このとき、署名抑止部151は、個数限定署名検証鍵KLVNを新たな個数限定署名検証鍵KLVとし、署名データSKLVNを新たな署名データSKLVとして、個数限定証明書CLNを生成する。
署名抑止部151は、個数限定証明書格納部104に格納されている個数限定証明書CLを削除し、その後、生成した個数限定証明書CLNを新たな個数限定証明書CLとして、個数限定証明書格納部104に書き込む。つまり、署名抑止部151は、個数限定証明書格納部104に格納されている個数限定証明書CLに、生成した個数限定証明書CLNを上書きし更新することにより、新たな個数限定証明書CLとする。
署名抑止部151は、初期値設定指示をカウンタ部107へ出力する。
(10)送信部110
送信部110は、署名データセットSSを、通信路50を介して署名検証装置20へ送信する。
1.3 署名検証装置20の構成
署名検証装置20は、図1に示すように、CA公開鍵格納部201と、署名データセット格納部202と、署名検証部203と、受信部204と、表示部205とから構成される。
(1)CA公開鍵格納部201
CA公開鍵格納部201は、ユーザ証明書CUを検証するための証明書生成サーバCA(図示せず)が有する秘密鍵に対応する公開鍵(署名検証鍵)KPCを格納している。
(2)署名データセット格納部202
署名データセット格納部202は、署名データセットSSを格納するための領域を有している。
(3)署名検証部203
署名検証部203は、署名データセットSSに含まれる署名データS、個数限定証明書CLに含まれる署名データSKLV、ユーザ証明書CUに含まれる署名データSKUVを検証する。
以下に、検証の動作を示す。
署名検証部203は、受信部204から検証を開始する旨の検証開始指示を受け取る。
署名検証部203は、署名データSKUVがユーザ署名検証鍵KUVの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する。
署名データSKUVが正しい署名であると判断する場合には、署名検証部203は、署名データSKLVが個数限定署名検証鍵KLVの正しい署名であるかを、ユーザ署名検証鍵KUVを用いて検証する。
署名データSKLVが正しい署名であると判断する場合には、署名検証部203は、署名データSがメッセージデータmの正しい署名であるかを、個数限定署名検証鍵KLVを用いて検証する。
署名データ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 署名生成装置10の動作
署名生成装置10の動作は、個数限定署名生成鍵及び個数限定証明書を初期設定する「初期設定処理」と、署名生成を行う「署名生成処理」と、カウンタ値をチェックし、個数限定署名生成鍵及び個数限定証明書を生成する「カウンタ値チェック処理」の動作からなる。以下に、それぞれの動作について説明する。
(1)初期設定処理
初期設定処理の動作について、図2にて示す流れ図を用いて説明する。
個数限定鍵生成部109の初期設定部150は、ユーザの操作により、初期設定指示を受け付けると、NTRUSign署名方式の鍵生成により、秘密鍵及び公開鍵を生成し(ステップS5)、生成した秘密鍵を個数限定署名生成鍵KLG、公開鍵を個数限定署名検証鍵KLVとし、個数限定署名生成鍵KLGを個数限定署名生成鍵格納部103に格納する(ステップS10)。
個数限定鍵生成部109の初期設定部150は、第2署名生成指示を署名生成部105へ出力する。署名生成部105は、個数限定鍵生成部109から第2署名生成指示を受け取ると、ユーザ署名生成鍵格納部101に格納されているユーザ署名生成鍵KUGを用いて、個数限定署名検証鍵KLVの署名データSKLVを生成する(ステップS15)。
署名生成部105は、第2完了通知を個数限定鍵生成部109の初期設定部150へ出力する。個数限定鍵生成部109の初期設定部150は、署名生成部105から第2完了通知を受け取ると、個数限定署名検証鍵KLVと、署名生成部105にて生成した署名データSKLVからなる個数限定証明書CLを生成し(ステップS20)、生成した個数限定証明書CLを個数限定証明書格納部104に格納する(ステップS25)。
個数限定鍵生成部109の初期設定部150は、初期値設定指示をカウンタ部107へ出力する。カウンタ部107は、個数限定鍵生成部109から初期値設定指示を受け取ると、カウンタ値c=0を格納する(ステップS30)。
(2)署名生成処理
署名生成処理の動作について、図3にて示す流れ図を用いて説明する。
署名データセット生成部106は、ユーザによる操作によりメッセージデータmを受け付ける(ステップS100)。
署名データセット生成部106は、個数限定証明書格納部104から個数限定証明書CLを、ユーザ証明書格納部102からユーザ証明書CUを、それぞれ読み出し、第1署名生成指示を署名生成部105へ出力する。署名生成部105は、署名データセット生成部106から、第1署名生成指示を受け取ると、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGを読み出し、読み出した個数限定署名生成鍵KLGを用いて、メッセージデータmに対する署名データSを生成する(ステップS105)。カウンタ部107は、カウンタ値cに1を加算し、加算結果を新たなカウンタ値cとする(ステップS110)。
署名生成部105は、署名データSの生成が完了すると、その旨を示す第1完了通知を署名データセット生成部106へ出力する。署名データセット生成部106は、署名生成部105から第1完了通知を受け取ると、メッセージデータmと、署名生成部105にて生成されたメッセージデータmの署名データSと、読み出した個数限定証明書CLと、読み出したユーザ証明書CUとからなる署名データセットSSを生成する(ステップS115)。
送信部110は、通信路50を介して、署名データセット生成部106にて生成された署名データセットSSを署名検証装置20へ送信する(ステップS120)。
(3)カウンタ値チェック処理
カウンタ値チェック処理の動作について、図4にて示す流れ図を用いて説明する。なお、署名生成部105は、署名生成処理のステップS105の実行後、カウンタ判定指示をカウンタ判定部108へ出力しているものとする。
カウンタ判定部108は、署名生成部105からカウンタ判定指示を受け取ると、カウンタ部107のカウンタ値cが、しきい値tc以上であるか否かを判断する(ステップS200)。
しきい値tc以上でないと判断する場合には(ステップS200おける「NO」)、カウンタ値チェック処理は終了する。
しきい値tc以上であると判断する場合には(ステップS200における「YES」)、カウンタ判定部108は、個数限定署名生成鍵及び個数限定署名検証鍵の更新を指示する鍵更新指示を個数限定鍵生成部109の署名抑止部151へ出力する。個数限定鍵生成部109の署名抑止部151は、カウンタ判定部108から、鍵更新指示を受け取ると、NTRUSign署名方式の秘密鍵及び公開鍵をそれぞれ個数限定署名生成鍵KLGN及び公開鍵を個数限定署名検証鍵KLVNとして生成する(ステップS205)。
個数限定鍵生成部109の署名抑止部151は、生成した個数限定署名生成鍵KLGNを個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGに上書きし、新たな個数限定署名生成鍵KLGとする(ステップS210)。つまり、署名抑止部151は、先ず、個数限定署名生成鍵格納部103に格納されている個数限定署名生成鍵KLGを削除し、その後、個数限定署名生成鍵KLGNを新たな個数限定署名生成鍵KLGとして、個数限定署名生成鍵格納部103に書き込む。
個数限定鍵生成部109の署名抑止部151は、第2署名生成指示を署名生成部105へ出力する。署名生成部105は、署名抑止部151から第2署名生成指示を受け取ると、ユーザ署名生成鍵格納部101に格納されているユーザ署名生成鍵KUGを用いて、個数限定署名検証鍵KLVNの署名データSKLVNを生成する(ステップS215)。
署名生成部105は、第2完了通知を個数限定鍵生成部109の署名抑止部151へ出力する。個数限定鍵生成部109の署名抑止部151は、第2完了通知を署名生成部105から受け取ると、個数限定署名検証鍵KLVNと、署名生成部105にて生成された署名データSKLVNとからなる個数限定証明書CLNを生成する(ステップS220)。このとき、署名抑止部151は、個数限定署名検証鍵KLVNを新たな個数限定署名検証鍵KLVとし、署名データSKLVNを新たな署名データSKLVとして、個数限定証明書CLNを生成する。
個数限定鍵生成部109の署名抑止部151は、生成した個数限定証明書CLNを個数限定証明書格納部104に格納されている個数限定証明書CLに上書きし、新たな個数限定証明書CLとする(ステップS225)。つまり、署名抑止部151は、個数限定証明書格納部104に格納されている個数限定証明書CLを削除し、その後、生成した個数限定証明書CLNを新たな個数限定証明書CLとして、個数限定証明書格納部104に書き込む。
個数限定鍵生成部109の署名抑止部151は、初期値設定指示をカウンタ部107へ出力する。カウンタ部107は、署名抑止部151から初期値設定指示を受け取ると、カウンタ値c=0を格納する(ステップS230)。
1.5 署名検証装置20の動作
署名検証装置20は、署名生成装置10より署名データセットSSを通信路50を介して受信し、その署名データセットSSを検証する。以下において、署名検証装置20にて行われる署名検証処理について、図5にて示す流れ図を用いて説明する。
受信部204は、署名生成装置10から送信された署名データセットSSを、通信路50を介して受信する(ステップS300)。
受信部204は、受信した署名データセットSSを署名データセット格納部202に格納する(ステップS305)。
受信部204は、検証開始指示を署名検証部203へ出力する。署名検証部203は、受信部204から検証開始指示を受け取る。署名検証部203は、署名データセットSSの中のユーザ証明書CUに含まれるユーザ署名検証鍵KUVとその署名データSKUVに対し、署名データSKUVがユーザ署名検証鍵KUVの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する(ステップS310)。
署名データSKUVが正しい署名であると判断する場合には(ステップS310における「OK」)、署名検証部203は、署名データセットSSの中の個数限定証明書CLに含まれる個数限定署名検証鍵KLVとその署名データSKLVに対し、署名データSKLVが個数限定署名検証鍵KLVの正しい署名であるかを、ユーザ署名検証鍵KUVを用いて検証する(ステップS315)。
署名データSKLVが正しい署名であると判断する場合には(ステップS315における「OK」)、署名検証部203は、署名データセットSSの中のメッセージデータmとその署名データSに対し、署名データSがメッセージデータmの正しい署名であるかを、個数限定署名検証鍵KLVを用いて検証する(ステップS320)。
署名データSが正しい署名であると判断する場合には(ステップS320における「OK」)、署名検証部203は、表示部205を介して、メッセージ「OK」を表示する(ステップS325)。
署名データSKUVが正しくないと判断する場合(ステップS310における「NG」)、署名データSKLVが正しくないと判断する場合(ステップS315における「NG」)、及び署名データSが正しくないと判断する場合(ステップS320における「NG」)、署名検証部203は、表示部205を介して、メッセージ「NG」を表示する(ステップS330)。
1.6 第1の実施の形態の全体の動作
第1の実施の形態におけるディジタル署名システム1の全体の動作を以下に示す。
ディジタル署名システム1の署名生成装置10は、「署名生成・検証時」に入力であるメッセージデータmに対して、署名データセットSSを生成し、署名検証装置20へ送信する。署名検証装置20は、署名データセットSSを検証し、その検証結果により、署名データセットを受理する、または、拒否するかを決定する。また、「初期設定時」に署名生成装置10は、個数限定署名生成鍵及び個数限定証明書を初期化し、「カウンタ値チェック時」に、カウンタ値をチェックし、その結果に基づき個数限定署名生成鍵及び個数限定証明書を更新する。
1.7 第1の実施の形態の効果
第1の実施の形態におけるディジタル署名システム1では、一つの個数限定署名生成鍵で生成する署名データの個数をカウンタ部107にてカウントし、カウンタ判定部108にてカウンタ値cがしきい値tcを超えていれば、個数限定署名生成鍵を更新している。そのため、一つの個数限定署名生成鍵で生成する署名データの総数をtc以内に抑えることができる。tcはNTRUSign署名方式の攻撃法であるTranscript attackが成功しない署名の個数であるため、ディジタル署名システム1に対するTranscript attackは成功せず、安全である。
個数限定署名検証鍵の証明書は、ユーザ署名生成鍵を用いて生成している。このようにすることで、個数限定署名生成鍵及び個数限定署名検証鍵を更新した場合に、ユーザは自らが所有する署名生成装置にて、個数限定証明書を生成できる。もし、個数限定署名検証鍵の証明書を証明書生成サーバCAにて生成する場合は、署名生成装置において、ユーザ証明生成鍵及びユーザ証明書は不要となるが、ユーザは個数限定署名検証鍵の証明書を証明書生成サーバCAに依頼する必要があり、個数限定署名生成鍵及び個数限定署名検証鍵を更新するたびに、証明書生成サーバCAへの通信が必要になってしまう。それに比べて、第1の実施の形態のように、ユーザ署名生成鍵を用いて個数限定署名検証鍵の証明書を生成することで、これらの証明書生成サーバCAへの通信が不要になる。
2.第2の実施の形態
以下、本発明に係る第2の実施の形態としてのディジタル署名システム1000について、図面を参照して説明する。
2.1 ディジタル署名システム1000の概要
ディジタル署名システム1000は、図6に示すように、署名生成装置1010と、署名検証装置1020と、署名監視サーバ1030と、センタ1040と、通信路1050とから構成されている。
署名生成装置1010は、メッセージデータmに対する署名データセットSSを生成し、生成した署名データセットSSを、通信路1050を介して署名検証装置1020へ送信する。
署名検証装置1020は、通信路1050を介して署名生成装置1010から、署名データセットSSを受信し、受信した署名データセットSSを検証する。
署名監視サーバ1030は、通信路1050を流れる署名データセットSSを監視し、不正な署名データセットSSを検出すると、その旨を、通信路1050を介してセンタ1040へ送信する。
センタ1040は、不正な署名データセットSSが検出された旨のメッセージを受信する。
2.2 署名生成装置1010の構成
署名生成装置1010は、図6に示すように、ユーザ署名生成鍵格納部1101と、ユーザ証明書格納部1102と、個数限定署名生成鍵格納部1103と、個数限定証明書格納部1104と、署名生成部1105と、署名データセット生成部1106と、カウンタ部1107と、カウンタ判定部1108と、個数限定鍵生成部1109と、送信部1110と、時計部1111とから構成される。
署名生成装置1010は、NTRUSign署名方式にて用いられる秘密鍵である個数限定署名生成鍵と、前記秘密鍵に対応する公開鍵に対応する公開鍵証明書である個数限定証明書とを格納しており、個数限定署名生成鍵を用いて、入力であるメッセージデータmに対する署名データSを生成する。また、署名生成装置1010は、生成した署名データの個数をカウントし、カウンタ値が所定のしきい値tcを超えた場合に、新たな個数限定署名生成鍵及び個数限定証明書を生成する。
なお、しきい値tcはNTRUSign署名方式のTranscipt attackが成功しない署名の個数であり、例えば、10^7である。また、個数限定証明書の詳細については、後述する。
なお、署名生成装置1010を構成するユーザ署名生成鍵格納部1101、ユーザ証明書格納部1102と、個数限定署名生成鍵格納部1103、個数限定証明書格納部1104、カウンタ部1107、カウンタ判定部1108、個数限定鍵生成部1109、及び送信部1110は、それぞれ、第1の実施の形態にて示すユーザ署名生成鍵格納部101、ユーザ証明書格納部102と、個数限定署名生成鍵格納部103、個数限定証明書格納部104、カウンタ部107、カウンタ判定部108、個数限定鍵生成部109、及び送信部110と同様の動作を行うため、ここでの説明は省略する。
(1)時計部1111
時計部1111は、日時を計時し、現在の時刻を示す時刻情報TGをもつ。時計部1111は、例えば、秒単位に計時を行い、時刻情報は、1970年1月1日0時0分0秒からの現在時刻までの秒数である。
(2)署名データセット生成部1106
署名データセット生成部1106は、ユーザによる操作によりメッセージデータmを受け付けると、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データDの署名データの生成を指示する第1署名生成指示を署名生成部1105へ出力する。
その後、署名データセット生成部1106は、署名生成部1105から第1完了通知を受け取ると、個数限定証明書格納部1104から個数限定証明書CLを、ユーザ証明書格納部1102からユーザ証明書CUを、それぞれ読み出す。署名データセット生成部1106は、署名生成部1105にて生成された署名対象データD及び署名対象データDの署名データSと、読み出した個数限定証明書CL及びユーザ証明書CUとからなる署名データセットSSを生成する。
署名データセット生成部1106は、送信部1110を介して、生成した署名データセットSSを署名検証装置1020へ送信する。
(3)署名生成部1105
署名生成部1105は、署名対象データDの署名データSの生成、及び個数限定署名検証鍵KLVの署名データSKLVの生成を行う。
<署名データSを生成する場合>
署名生成部1105は、署名データセット生成部1106から、第1署名生成指示を受け取ると、カウンタ部1107から保持されているカウンタ値cを、時計部1111から現在の時刻を示す時刻情報TGを、それぞれ取得する。
署名データセット生成部1106は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データDを生成する。
署名データセット生成部1106は、個数限定署名生成鍵格納部1103に格納されている個数限定署名生成鍵KLGを、読み出し、読み出した個数限定署名生成鍵KLGを用いて、生成した署名対象データDに対する署名データSを生成、つまり署名対象データDに署名を施して署名データSを生成する。
署名生成部1105は、署名データSの生成が完了すると、その旨を示す第1完了通知を署名データセット生成部1106へ出力する。
なお、署名データSは、NTRUSign署名方式に基づいて生成される。
<署名データSKLVを生成する場合>
署名生成部1105は、個数限定鍵生成部1109からユーザ署名検証鍵KLVの署名データSKLVの生成の指示を示す第2署名生成指示を受け取ると、ユーザ署名生成鍵格納部1101に格納されているユーザ署名生成鍵KUGを読み出し、読み出したユーザ署名生成鍵KUGを用いて、個数限定鍵生成部1109にて生成された個数限定署名検証鍵KLVに対する署名データSKLVを生成、つまり個数限定署名検証鍵KLVに署名を施して署名データSKLVを生成する。
署名生成部1105は、署名データSKLVの生成が完了すると、その旨を示す第2完了通知を個数限定鍵生成部1109へ出力する。
なお、署名データSKLVは、NTRUSign署名方式に基づいて生成される。
また、個数限定鍵生成部1109にて個数限定署名検証鍵KLVNが生成された場合も、上記と同様の動作により、署名データSKLVNを生成する。
2.3 署名検証装置1020の構成
署名検証装置1020は、図6に示すように、CA公開鍵格納部1201と、署名データセット格納部1202と、署名検証部1203と、受信部1204と、表示部1205と、カウンタ判定部1206と、時刻判定部1207と、時計部1208とから構成される。
署名検証装置1020を構成するCA公開鍵格納部1201、署名データセット格納部1202、受信部1204、及び表示部1205は、それぞれ、第1の実施の形態にて示すCA公開鍵格納部201、署名データセット格納部202、受信部204、及び表示部205と同様の動作を行うため、ここでの説明は省略する。
(1)時計部1208
時計部1208は、日時を計時し、現在の時刻を示す時刻情報TGをもつ。時計部1208は、例えば、秒単位に計時を行い、時刻情報は、1970年1月1日0時0分0秒からの現在時刻までの秒数である。
(2)カウンタ判定部1206
カウンタ判定部1206は、しきい値tcを予め格納している。
カウンタ判定部1206は、署名検証部1203からカウンタ値の判定を行う旨のカウンタ判定指示を受け取ると、書名データセットSSに含まれるカウンタ値cを取得し、取得したカウンタ値cが、しきい値tc以上であるか否かを判断する。
しきい値tc以上であると判断する場合には、カウンタ判定部1206は、その旨を示す第1判定結果通知を署名検証部1203へ出力する。
しきい値tc以上でないと判断する場合には、カウンタ判定部1206は、その旨を示す第2判定結果通知を署名検証部1203へ出力する。
(3)時刻判定部1207
時刻判定部1207は、差分しきい値TTを予め格納している。
時刻判定部1207は、署名検証部1203から時刻判定を行う旨の時刻判定指示を受け取ると、署名データセットSSに含まれる時刻情報TGと、時計部1208から時刻情報TVを取得し、取得した時刻情報TG及び時刻情報TVの差分TV−TGが差分しきい値TTを超えているか否かを判断する。
差分TV−TGが差分しきい値TTを超えていると判断する場合には、時刻判定部1207は、その旨を示す第3判断結果通知を署名検証部1203へ出力する。
差分TV−TGが差分しきい値TTを超えていないと判断する場合には、時刻判定部1207は、その旨を示す第4判断結果通知を署名検証部1203へ出力する。
(4)署名検証部1203
署名検証部1203は、署名データセットSSに含まれる署名データS、個数限定証明書CLに含まれる署名データSKLV、ユーザ証明書CUに含まれる署名データSKUVを検証する。
以下に、検証の動作を示す。
署名検証部1203は、受信部1204から検証を開始する旨の検証開始指示を受け取る。
署名検証部1203は、カウンタ判定指示をカウンタ判定部1206へ出力し、その後、カウンタ判定部1206から判定結果を受け取る。
カウンタ値cの判定結果として第1判定結果を受け取ると、署名検証部1203は、表示部1205を介して、受信した署名データセットSSを拒否する旨のメッセージ「NG」を表示する。
カウンタ値cの判定結果として第2判定結果を受け取ると、署名検証部1203は、時刻判定指示を時刻判定部1207へ出力し、その後、時刻判定部1207から判定結果を受け取る。
時刻判定の結果として第3判定結果を受け取ると、署名検証部1203は、表示部1205を介して、受信した署名データセットSSを拒否する旨のメッセージ「NG」を表示する。
時刻判定の結果として第4判定結果を受け取ると、署名検証部1203は、署名データSKUVがユーザ署名検証鍵KUVの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する。
署名データSKUVが正しい署名であると判断する場合には、署名検証部1203は、署名データSKLVが個数限定署名検証鍵KLVの正しい署名であるかを、ユーザ署名検証鍵KUVを用いて検証する。
署名データSKLVが正しい署名であると判断する場合には、署名検証部1203は、署名データSがメッセージデータmの正しい署名であるかを、個数限定署名検証鍵KLVを用いて検証する。
署名データSが正しい署名であると判断する場合には、署名検証部1203は、表示部1205を介して、受信した署名データセットSSを受理する旨のメッセージ「OK」を表示する。
各署名検証のうち何れかの署名検証において、署名データが正しくない署名であると判断する場合には、署名検証部1203は、表示部1205を介して、受信した署名データセットSSを拒否する旨のメッセージ「NG」を表示する。
2.4 署名監視サーバ1030の構成
署名監視サーバ1030は、図6に示すように、ログ格納部1301と、通信監視部1302と、署名データセット取得部1303と、署名データセット判定部1304と、送受信部1305とを備える。
(1)ログ格納部1301
ログ格納部1301は、1以上の署名データセットを格納するための領域を有している。
(2)通信監視部1302
通信監視部1302は、送受信部1305を介して、通信路1050を流れる署名データセットSSを監視する。
(3)署名データセット取得部1303
署名データセット取得部1303は、通信監視部1302にて署名データセットSSが通信路1050に流れていることが検出されると、送受信部1305及び通信監視部1302を介して、通信路1050に流れている署名データセットを取得する。
署名データセット取得部1303は、ログ格納部1301に既に署名データセットが格納されているか否かを判断する。
格納されていないと判断する場合には、署名データセット取得部1303は、取得した署名データセットSSをログ格納部1301に格納する。
格納されていると判断する場合には、署名データセット取得部1303は、取得した書名データセットに含まれるカウンタ値cの正当性を判定する旨の判定指示を署名データセット判定部1304へ出力する。署名データセット取得部1303は、署名データセット判定部1304から判定結果を受け取る。
判定結果としてカウンタ値は正当な値であることを示す正当通知を受け取ると、署名データセット取得部1303は、取得した署名データセットSSをログ格納部1301に格納する。
判定結果としてカウンタ値は不正な値であることを示す不正通知を受け取ると、署名データセット取得部1303は、取得した署名データセットSSに含まれるユーザ証明書と、不正な署名データセットを検出した旨の検出メッセージとを、送受信部1305を介してセンタへ送信する。
(4)署名データセット判定部1304
署名データセット判定部1304は、署名データセット取得部1303から判定指示を受け取ると、取得した署名データセットSSに含まれる個数限定署名検証鍵とカウンタ値のそれぞれと同一のものを含む署名データセットSSFがログ格納部1301に存在するか否かを判断する。
存在すると判断する場合には、署名データセット判定部1304は、不正通知を署名データセット取得部1303へ出力する。
存在しないと判断する場合には、署名データセット判定部1304は、正当通知を署名データセット取得部1303へ出力する。
(5)送受信部1305
送受信部1305は、通信路1050に流れている署名データセットを受信し、受信した署名データセットを、通信監視部1302を介して署名データセット取得部1303へ出力する。
送受信部1305は、署名データセット取得部1303からユーザ証明書を受け取ると、受け取ったユーザ証明書を、通信路1050を介してセンタへ送信する。
2.5 センタ1040
センタ1040は、署名監視サーバ1030から通信路1050を介して、検出メッセージとユーザ証明書とを受信する。
2.6 署名生成装置1010の動作
署名生成装置1010の動作は、個数限定署名生成鍵及び個数限定証明書を初期設定する「初期設定処理」と、署名生成を行う「署名生成処理」と、カウンタ値をチェックし、個数限定署名生成鍵及び個数限定証明書を生成する「カウンタ値チェック処理」の動作からなる。「初期設定処理」と、「カウンタ値チェック処理」との動作は、第1の実施の形態にて示す動作と同様であるため、説明は省略する。
(1)署名生成処理
署名生成処理の動作について、図7にて示す流れ図を用いて説明する。
署名データセット生成部1106は、ユーザによる操作によりメッセージデータmを受け付ける(ステップS1000)。
署名データセット生成部1106は、署名対象データDの署名データの生成を指示する第1署名生成指示を署名生成部1105へ出力する。署名生成部1105は、署名データセット生成部1106から、第1署名生成指示を受け取ると、カウンタ部1107から保持されているカウンタ値cを、時計部1111から現在の時刻を示す時刻情報TGを、それぞれ取得する。署名データセット生成部1106は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データDを生成する(ステップS1005)。
署名生成部1105は、個数限定署名生成鍵格納部1103に格納されている個数限定署名生成鍵KLGを、読み出し、読み出した個数限定署名生成鍵KLGを用いて、生成した署名対象データDに対する署名データSを生成する(ステップS1010)。カウンタ部1107は、カウンタ値cに1を加算し、加算結果を新たなカウンタ値cとする(ステップS1015)。
署名生成部1105は、署名データSの生成が完了すると、その旨を示す第1完了通知を署名データセット生成部1106へ出力する。署名データセット生成部1106は、署名生成部1105から第1完了通知を受け取ると、個数限定証明書格納部1104から個数限定証明書CLを、ユーザ証明書格納部1102からユーザ証明書CUを、それぞれ読み出す。署名データセット生成部1106は、署名生成部1105にて生成された署名対象データD及び署名対象データDの署名データSと、読み出した個数限定証明書CL及びユーザ証明書CUとからなる署名データセットSSを生成する(ステップS1020)。
送信部1110は、通信路1050を介して、署名データセット生成部1106にて生成された署名データセットSSを署名検証装置1020へ送信する(ステップS1025)。
2.7 署名検証装置1020の動作
署名検証装置1020は、署名生成装置1010より署名データセットSSを通信路1050を介して受信し、その署名データセットSSを検証する。以下において、署名検証装置1020にて行われる署名検証処理について、図8にて示す流れ図を用いて説明する。
受信部1204は、署名生成装置1010から送信された署名データセットSSを、通信路1050を介して受信する(ステップS1100)。
受信部1204は、受信した署名データセットSSを署名データセット格納部1202に格納する(ステップS1105)。
受信部1204は、検証開始指示を署名検証部1203へ出力する。署名検証部1203は、受信部1204から検証開始指示を受け取ると、カウンタ判定指示をカウンタ判定部1206へ出力する。カウンタ判定部1206は、カウンタ判定指示を受け取ると、書名データセットSSに含まれるカウンタ値cを取得し、取得したカウンタ値cが、しきい値tc以上であるか否かを判断する(ステップS1110)。
しきい値tc以上であると判断する場合には(ステップS1110における「YES」)、カウンタ判定部1206は、その旨を示す第1判定結果通知を署名検証部1203へ出力する。カウンタ値cの判定結果として第1判定結果を受け取ると、署名検証部1203は、表示部1205を介して、メッセージ「NG」を表示する(ステップS1140)。
しきい値tc以上でないと判断する場合には(ステップS1110における「NO」)、カウンタ判定部1206は、その旨を示す第2判定結果通知を署名検証部1203へ出力する。カウンタ値cの判定結果として第2判定結果を受け取ると、署名検証部1203は、時刻判定指示を時刻判定部1207へ出力する。時刻判定部1207は、署名検証部1203から時刻判定指示を受け取ると、署名データセットSSに含まれる時刻情報TGと、時計部1208から時刻情報TVを取得し、取得した時刻情報TG及び時刻情報TVの差分TV−TGが差分しきい値TTを超えているか否かを判断する(ステップS1115)。
差分TV−TGが差分しきい値TTを超えていると判断する場合には(ステップS1115における「YES」)、時刻判定部1207は、その旨を示す第3判断結果通知を署名検証部1203へ出力する。時刻判定の結果として第3判定結果を受け取ると、署名検証部1203は、表示部1205を介して、メッセージ「NG」を表示する(ステップS1140)。
差分TV−TGが差分しきい値TTを超えていないと判断する場合には(ステップS1115における「NO」)、時刻判定部1207は、その旨を示す第4判断結果通知を署名検証部1203へ出力する。時刻判定の結果として第4判定結果を受け取ると、署名検証部1203は、署名データSKUVがユーザ署名検証鍵KUVの正しい署名であるかを、CA公開鍵格納部に格納されているCA公開鍵KPCを用いて検証する(ステップS1120)。
署名データSKUVが正しい署名であると判断する場合には(ステップS1120における「OK」)、署名検証部1203は、署名データセットSSの中の個数限定証明書CLに含まれる個数限定署名検証鍵KLVとその署名データSKLVに対し、署名データSKLVが個数限定署名検証鍵KLVの正しい署名であるかを、ユーザ署名検証鍵KUVを用いて検証する(ステップS1125)。
署名データSKLVが正しい署名であると判断する場合には(ステップS1125における「OK」)、署名検証部1203は、署名データセットSSの中のメッセージデータmとその署名データSに対し、署名データSがメッセージデータmの正しい署名であるかを、個数限定署名検証鍵KLVを用いて検証する(ステップS1130)。
署名データSが正しい署名であると判断する場合には(ステップS1130における「OK」)、署名検証部1203は、表示部1205を介して、メッセージ「OK」を表示する(ステップS1135)。
署名データSKUVが正しくないと判断する場合(ステップS1120における「NG」)、署名データSKLVが正しくないと判断する場合(ステップS1125における「NG」)、及び署名データSが正しくないと判断する場合(ステップS1130における「NG」)、署名検証部1203は、表示部1205を介して、メッセージ「NG」を表示する(ステップS1140)。
2.8 署名監視サーバ1030の動作
署名監視サーバ1030は、通信路1050に署名データセットが流れているかを監視し、流れている場合はその署名データセットSSを入手して、既に格納している署名データセットと比較する。以下において、署名監視サーバ1030にて行われる監視処理について、図9にて示す流れ図を用いて説明する。
通信監視部1302は、送受信部1305を介して、署名データセットSSが通信路1050を流れるか否かを監視する(ステップS1200)。
通信監視部1302にて署名データセットSSが通信路1050に流れていることが検出されない場合には(ステップS1200における「NO」)、監視処理を終了する。
通信監視部1302にて署名データセットSSが通信路1050に流れていることが検出されると(ステップS1200における「YES」)、署名データセット取得部1303は、送受信部1305及び通信監視部1302を介して、通信路1050に流れている署名データセットを取得する(ステップS1205)。
署名データセット取得部1303は、ログ格納部1301に既に署名データセットが格納されているか否かを判断する(ステップS1210)。
格納されていないと判断する場合には(ステップS1210における「NO」)、署名データセット取得部1303は、取得した署名データセットSSをログ格納部1301に格納する(ステップS1215)。
格納されていると判断する場合には(ステップS1210における「YES」)、署名データセット取得部1303は、取得した書名データセットに含まれるカウンタ値cの正当性を判定する旨の判定指示を署名データセット判定部1304へ出力する。署名データセット判定部1304は、署名データセット取得部1303から判定指示を受け取ると、取得した署名データセットSSに含まれる個数限定署名検証鍵とカウンタ値のそれぞれと同一のものを含む署名データセットSSFがログ格納部1301に存在するか否かを判断する(ステップS1220)。
存在すると判断する場合には(ステップS1220における「YES」)、署名データセット判定部1304は、不正通知を署名データセット取得部1303へ出力する。署名データセット取得部1303は、署名データセット判定部1304から、判定結果として不正通知を受け取ると、取得した署名データセットSSに含まれるユーザ証明書を送受信部1305へ出力する。送受信部1305は、通信路1050を介して、ユーザ証明書をセンタへ送信する(ステップS1225)。
存在しないと判断する場合には(ステップS1220における「NO」)、署名データセット判定部1304は、正当通知を署名データセット取得部1303へ出力する。署名データセット取得部1303は、署名データセット判定部1304から、判定結果として正当通知を受け取ると、取得した署名データセットSSをログ格納部1301に格納する(ステップS1215)。
2.9 第2の実施の形態の全体の動作
第2の実施の形態におけるディジタル署名システム1000の全体の動作を以下に示す。
ディジタル署名システム1000の署名生成装置1010は、「署名生成・検証時」に入力であるメッセージデータmに対して、署名データセットSSを生成し、署名検証装置1020へ送信する。署名検証装置1020は、署名データセットSSを検証し、その検証結果により、署名データセットSSを受理する、または、拒否するかを決定する。また、「初期設定時」に署名生成装置1010は、個数限定署名生成鍵及び個数限定証明書を初期化し、「カウンタ値チェック時」に、カウンタ値をチェックし、その結果に基づき個数限定署名生成鍵及び個数限定証明書を更新する。さらに、署名監視サーバ1030は、通信路1050に署名データセットSSが流れているかを監視し、署名データセットSSと流れている場合は以前の署名データセットとを比較する。
2.10 第2の実施の形態の効果
第2の実施の形態におけるディジタル署名システム1000は、第1の実施の形態と同様に、一つの個数限定署名生成鍵で生成する署名データの総数をtc以内に抑えることができる。
さらに、第2の実施の形態では、カウンタ値を署名対象データに含ませており、署名検証装置1020で検証している。そのため、署名生成装置1010がカウンタ値を超えて署名データを生成していることを署名検証装置1020で確認することが可能になる。
また、署名監視サーバ1030にて、同じカウンタ値と同じ個数限定署名検証鍵を含む署名データセットが以前に存在するか否かをチェックしているため、署名生成装置1010で故意にまたは、誤って同じカウンタ値及び同じ個数限定署名生成鍵を用いて2度署名データを生成することによって、署名回数をカウントし損なうことを防ぐことができる。
さらに、署名生成装置1010及び署名検証装置1020で時計をもち、カウンタ値を使用した時刻を示す時刻情報を署名対象データに含ませることにより、同じカウンタ値を使いまわして、同じカウンタ値及び同じ個数限定署名生成鍵を用いて2度署名データを生成することによる、署名回数のカウントし損ないを防ぐことができる。
したがって、ディジタル署名システム1000では、NTRUSign署名方式の攻撃法であるTranscript attackが成功せず、安全である。
3.変形例
上記に説明した第1及び第2の実施の形態は、本発明の実施の一例であり、本発明はこれら実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)第2の実施の形態における署名検証装置では、カウンタ値がしきい値tc以上である場合にNGを表示(出力)していたが、これに限定されない。署名検証装置は、カウンタ値がしきい値tc以上である場合にセンタにユーザ証明書を送信して通知するとしてもよい。また、ユーザ証明書の代わりに署名生成装置のユーザを示す識別子をセンタに送信してもよい。
(2)第2の実施の形態では、署名生成装置において、署名生成を行った現在時刻を示す時刻情報TGを署名対象データに含めていたが、これを現在時刻にしきい値TTを加算した署名検証期限を示す時刻情報TGTを署名対象データに含めるとしてもよい。
このとき、署名検証装置は、図8に示すステップS1115を、当該装置の時計部から取得した時刻情報TVが時刻情報TGTを超えているか否かを判断するように変更する。超えていると判断する場合には、署名検証装置は、ステップS1140を行い、超えていないと判断する場合には、署名検証装置は、ステップS1120を行う。
(3)第1及び第2の実施の形態において、署名データセットにユーザ証明書を含めているが、ユーザ証明書を含めず、ユーザ証明書は予め署名検証装置が保持しているとしてもよい。
(4)第1及び第2の実施の形態において、署名生成装置は、カウンタ値cがtcを超えていれば個数限定署名生成鍵を更新、つまり記憶している個数限定署名生成鍵に新たに生成した個数限定署名生成鍵を上書きするとしているが、これに限定されない。署名生成装置は、カウンタ値cがtcを超えていれば、それ以後は署名データを生成しない、つまり、その署名生成装置は使用しないとしてもよい。このとき、ユーザ証明書及びユーザ署名生成鍵はなくてもよく、その場合は、個数限定証明書は証明書生成サーバCAの署名生成鍵により生成された個数限定署名検証鍵の署名データを含んでもよい。
(5)第1及び第2の実施の形態において、署名生成装置のカウンタ判定部は、カウンタ値cがtcを超えていれば個数限定署名生成鍵を更新、記憶している個数限定署名生成鍵に新たに生成した個数限定署名生成鍵を上書きするとしているが、これに限定されない。署名生成装置は、個数限定署名生成鍵を複数個記憶し、使用する個数限定署名生成鍵を示す情報である使用個数限定署名生成鍵情報を格納した使用個数限定署名生成鍵情報格納部と、使用個数限定署名生成鍵情報を更新する使用個数限定署名生成鍵情報更新部とを備え、署名生成装置はカウンタ値cがtcを超えていれば、使用個数限定署名生成鍵情報を更新するとしてもよい。
なお、各個数限定署名生成鍵に対応する個数限定署名検証鍵は、互いに異なり、各個数限定署名検証鍵それぞれに対する個数限定証明書は、個数限定証明書に含まれる個数限定署名検証鍵に対応する個数限定署名生成鍵と対応付けがなされ、個数限定証明書格納部に格納されているものとする。
このとき、署名生成装置は、使用個数限定署名生成鍵情報格納部に格納されている使用個数限定署名生成鍵情報にて示される個数限定署名生成鍵を用いて署名データを生成し、生成した署名データと、生成に用いた個数限定署名生成鍵に対応する個数限定証明書と、ユーザ証明書とからなる署名データセットを生成する。署名生成装置は、生成した署名データセットを署名検証装置へ送信する。
または、各個数限定署名生成鍵に対応する個数限定署名検証鍵は、1個としてもよい。つまり、個数限定署名検証鍵は、すべての個数限定署名生成鍵に対応する鍵としてもよい。
(6)第1及び第2の実施の形態では、署名方式としてNTRUSignを使用しているが、これを他の署名方式、例えばRSA署名方式、RSA−PSS署名方式や楕円DSA署名方式としてもよい。
(7)第1の実施の形態において、署名生成装置のカウンタ判定部は、署名データSが生成されると、カウンタ値のチェックを行ったが、これに限定されない。
署名生成装置のカウンタ判定部は、定期的に、カウンタ値のチェックを行ってもよい。または、ユーザの指示を受け付けることにより、カウンタ判定部108は、カウンタ値のチェックを行ってもよい。
(8)第2の実施の形態において、センタは、不正メッセージとユーザ証明書を受信するのみとしたが、これに限定されない。
センタは、受信したユーザ証明書を格納し、格納された1以上のユーザ証明書に含まれるユーザ署名検証鍵からなる無効化リストを生成しする。センタは、生成した無効化リストを署名検証装置へ送信する。
このとき、署名検証装置は、センタからから無効化リストを受信すると、受信した無効化リストを格納する。署名検証装置は、署名生成装置から署名データセットを受信すると、受信した署名データセットに含まれるユーザ証明書を取得し、取得したユーザ証明書に含まれるユーザ署名検証鍵が、格納している無効化リストに存在するか否かを判断する。存在すると判断する場合には、署名検証装置は、メッセージ「NG」を表示する。存在しないと判断する場合には、図8にて示す1105以降の動作を行う。
(9)第1の実施の形態において、署名生成装置のカウンタ判定部が予め格納しているしきい値は、固定としたが、これに限定されない。しきい値は可変であってもよい。
例えば、署名生成装置は、さらに、ユーザの操作によりしきい値tc’を受け付けると、当該装置のカウンタ判定部にて格納しているしきい値tcを、受け付けたしきい値tc’へと上書きして更新することで、しきい値を可変とすることができる。
または、署名生成装置は、しきい値を定期的に変更することで、しきい値が可変となるようにしてもよい。
(10)第2の実施の形態において、署名生成装置のカウンタ判定部が予め格納しているしきい値は、固定としたが、これに限定されない。しきい値は可変であってもよい。
このときの動作の一例を以下に記述する。署名生成装置は、さらに、ユーザの操作によりしきい値tc’を受け付けると、当該署名生成装置のカウンタ判定部にて格納しているしきい値tcを、受け付けたしきい値tc’へと上書きして更新する。署名生成装置は、受け付けたしきい値tc’を、署名検証装置へ送信する。署名検証装置は、署名生成装置から、しきい値tc’を受信すると、当該署名検証装置のカウンタ判定部に格納しているしきい値を、受信したしきい値tc’へと上書きして更新する。
または、以下のような動作でもよい。署名生成装置は、しきい値を定期的に変更し、変更したしきい値を署名検証装置へ送信する。署名検証装置は、変更されたしきい値を受信すると、当該署名検証装置のカウンタ判定部に格納しているしきい値を、受信したしきい値tc’へと上書きして更新する。
(11)第1の実施の形態において、署名生成装置は、カウンタ値に初期値として0を設定したが、これに限定されない。署名生成装置は、カウンタ値の初期値として、1を設定してもよい。このとき、署名生成装置は、カウンタ値cが、しきい値tcを超えているか否かを判断し、超えていると判断する場合に、個数減限定署名生成鍵及び個数限定証明書を更新する。
また、第2の実施の形態においても同様に、署名生成装置は、カウンタ値の初期値として、1を設定してもよい。このとき、署名生成装置は、カウンタ値cが、しきい値tcを超えているか否かを判断し、超えていると判断する場合に、個数減限定署名生成鍵及び個数限定証明書を更新する。署名検証装置は、受信したカウンタ値cが、しきい値tcを超えているか否かを判断し、超えていると判断する場合に、NGを表示(出力)し、超えていないと判断する場合には、時刻情報による判断を行う。
(12)第2の実施の形態において、署名生成装置は、署名データSを生成した後、カウンタ値の値に1を加算したが、これに限定されない。
署名生成装置は、署名対象データDを生成する前に、カウンタ値の値に1を加算してもよい。つまり、署名生成装置は、図7にて示す署名生成処理において、ステップS1000を実行した後、ステップS1015を実行し、その後、ステップS1005、S1010、S1020及びS1025の順に実行してもよい。
また、このとき、署名生成装置は、カウンタ値のチェック処理を、署名データを生成する前に行ってもよい。この場合、カウンタ値が所定値以上と判断される場合には、署名生成装置は、新たな個数限定署名生成鍵及び新たな個数限定証明書を生成し、生成した新たな個数限定署名生成鍵を用いて、署名対象データの署名データを生成する。そして、署名生成装置は、署名対象データと、生成した署名データと、生成した新たな個数限定証明書と、ユーザ証明書とからなる署名データセットを生成する。
(13)第1の実施の形態において、署名生成装置は、署名データSを生成する前に、カウンタ値の値に1を加算してもよい。
また、このとき、署名生成装置は、カウンタ値のチェック処理を、署名データを生成する前に行ってもよい。この場合、カウンタ値が所定値以上と判断される場合には、署名生成装置は、新たな個数限定署名生成鍵及び新たな個数限定証明書を生成し、生成した新たな個数限定署名生成鍵を用いて、メッセージデータの署名データを生成する。そして、署名生成装置は、メッセージデータと、生成した署名データと、生成した新たな個数限定証明書と、ユーザ証明書とからなる署名データセットを生成する。
(14)第2の実施の形態において、署名生成装置は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データDに対する署名データSを生成したが、これに限定されない。
署名生成装置は、メッセージデータmに対する署名データSを生成してもよい。このとき、署名生成装置は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなるデータDと、署名データSと、個数限定証明書CLと、ユーザ証明書CUとを署名検証装置へ送信する。
(15)第2の実施の形態において、署名生成装置は、メッセージデータmと、カウンタ値cと、時刻情報TGとからなる署名対象データD、署名対象データDに対する署名データS、個数限定証明書CL及びユーザ証明書CUを署名検証装置へ送信したが、これに限定されない。
署名生成装置は、メッセージデータmと、カウンタ値cとからなる署名対象データD、署名対象データDに対する署名データS、個数限定証明書CL及びユーザ証明書CUを署名検証装置へ送信してもよい。このとき、署名検証装置にて行われる署名検証処理では、図8にて示すステップS1115が省略される。
または、署名生成装置は、メッセージデータmと、時刻情報TGとからなる署名対象データD、署名対象データDに対する署名データS、個数限定証明書CL及びユーザ証明書CUを署名検証装置へ送信してもよい。このとき、署名検証装置にて行われる署名検証処理では、図8にて示すステップS1110が省略される。
(16)第1の実施の形態において、署名生成装置は、ユーザの操作によりメッセージデータを受け付けるとしたが、これに限定されない。
署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
また、第2の実施の形態においても同様に、署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
(17)第1の実施の形態において、署名生成装置のカウンタ部は、保持しているカウンタ値に1加算したが、これに限定されない。署名生成装置のカウンタ部は、他の数値を加算してもよいし、乗算してもよい。乗算する場合には、カウンタ値の初期値は、例えば、1とする。
また、第2の実施の形態においても同様に、署名生成装置のカウンタ部は、他の数値を加算してもよいし、乗算してもよい。乗算する場合には、カウンタ値の初期値は、例えば、1とする。
(18)これらの実施の形態及び変形例の組合せであってもよい。
<その他の変形例>
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(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.まとめ
本発明は、メッセージデータを含む署名対象データに対する署名データを生成する署名生成装置であって、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納部と、前記個数限定署名生成鍵格納部に格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成部と、前記署名生成部において、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタ部と、前記カウンタ部のカウンタ値を判定する第1のカウンタ判定部とを備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成部において、前記署名データを生成しないよう制御することを特徴とする。
ここで、前記署名生成装置はさらに、前記個数限定署名生成鍵を生成する鍵生成部を備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記鍵生成部を用いて前記個数限定署名生成鍵を生成し、前記個数限定署名生成鍵格納部に格納するよう制御するとしてもよい。
ここで、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記鍵生成部を用いて前記個数限定署名生成鍵を生成し、前記個数限定署名生成鍵格納部に格納されている以前の前記個数限定署名生成鍵に上書きして更新するよう制御するとしてもよい。
ここで、前記個数限定署名生成鍵は複数存在し、前記署名生成装置はさらに、複数の前記個数限定署名生成鍵の中で使用する前記個数限定署名生成鍵である使用個数限定署名生成鍵を示す情報である使用個数限定署名生成鍵情報を格納する使用個数限定署名生成鍵情報格納部と、前記使用個数限定署名生成鍵情報格納部の前記使用個数限定署名生成鍵情報を更新する使用個数限定署名生成鍵情報更新部とを備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記鍵生成部を用いて、前記使用個数限定署名生成鍵情報更新部において、前記個数限定署名生成鍵情報を更新するとしてもよい。
ここで、前記署名生成装置はさらに、前記個数限定署名生成鍵に対応する、前記署名データを検証するために使用する個数限定署名検証鍵の証明書を格納する個数限定証明書格納部と、前記個数限定証明書を生成するために使用するユーザ署名生成鍵を格納するユーザ署名生成鍵格納部とを備え、前記鍵生成部は、前記個数限定署名生成鍵と前記個数限定署名生成鍵に対応する前記個数限定証明書を生成し、それぞれを前記個数限定署名生成鍵格納部と前記個数限定証明書格納部へ格納するとしてもよい。
ここで、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記鍵生成部を用いて前記個数限定署名生成鍵と前記個数限定署名生成鍵に対応する前記個数限定証明書を生成し、それぞれを前記個数限定署名生成鍵格納部に格納されている以前の前記個数限定署名生成鍵と、前記個数限定証明書格納部に格納されている以前の前記個数限定署名生成鍵に上書きして更新するよう制御するとしてもよい。
ここで、前記署名生成部は、前記署名生成鍵格納部に格納された前記署名生成鍵を用いて、前記メッセージデータと前記カウンタ部が示すカウンタ値を含む前記署名対象データに対する前記署名データを生成するとしてもよい。
ここで、前記署名生成装置はさらに、時刻情報を保持する第1の時計を備え、前記署名対象データはさらに、前記第1の時計が保持する前記時刻情報を含むとしてもよい。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを検証する署名検証装置であって、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納部と、前記個数限定署名検証鍵格納部に格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証部と、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定部とを備え、前記第2のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証部において署名検証を行わないよう制御することを特徴とする。
ここで、前記署名検証装置はさらに、センタに情報を通知する通知部を備え、 前記第2のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記通知部において、前記署名検証鍵または、前記署名検証鍵の識別子をセンタに通知するよう制御するとしてもよい。
ここで、前記署名検証装置はさらに、第2の時刻情報を保持する第2の時計と、時刻情報を判定する時刻判定部とを備え、前記署名対象データはさらに、第1の時刻情報を含み、前記時刻判定部は、第1の時刻情報と第2の時刻情報を比較し、第2の時刻情報から第1の時刻情報を減算した時刻差分が予め与えられた所定値より大きい場合に、前記署名検証部において署名検証を行わないよう制御するとしてもよい。
ここで、前記署名検証装置はさらに、第2の時刻情報を保持する第2の時計と、時刻情報を判定する時刻判定部とを備え、前記署名対象データはさらに、第1の時刻情報を含み、前記時刻判定部は、第1の時刻情報と第2の時刻情報を比較し、第2の時刻情報から第1の時刻情報を減算した時刻差分が予め与えられた所定値より大きい場合に、前記署名検証鍵または、前記署名検証鍵の識別子をセンタに通知するよう制御するとしてもよい。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを生成する署名生成装置と前記署名データを検証する署名検証装置とからなるディジタル署名システムであって、前記署名生成装置は、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納部と、前記個数限定署名生成鍵格納部に格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成部と、前記署名生成部において、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタ部と、前記カウンタ部の前記カウンタ値を判定する第1のカウンタ判定部とを備え、前記署名検証装置は、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納部と、前記個数限定署名検証鍵格納部に格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証部と、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定部とを備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成部において、前記署名データを生成しないよう制御し、前記第2のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証部において署名検証を行わないよう制御することを特徴とする。
ここで、前記ディジタル署名システムはさらに、前記署名対象データと前記署名データからなる署名データセットを監視する署名監視サーバと前記署名監視サーバから監視結果情報の通知を受けるセンタを備え、前記署名監視サーバは、前記署名データセットを取得する署名データセット取得部と、以前の前記署名データセットからなる署名データセットログを格納する署名データセットログ格納部と、前記署名データセットを判定する署名データセット判定部とを備え、前記署名データセット判定部は、前記署名データセット取得部で取得した前記署名データセットと、前記署名データセットログとを比較することにより判定し、その判定結果により前記監視結果情報を生成し、前記センタへ通知するとしてもよい。
ここで、前記署名データセット判定部は、前記署名データセットの中の前記署名対象データに含まれるカウンタ値と、前記署名データセットログ格納部に格納されている以前の前記署名データセットの中の前記署名対象データに含まれるカウンタ値とを比較するとしてもよい。
また、本発明は、メッセージデータを含む署名対象データに対する署名データを生成する署名生成方法であって、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納ステップと、前記個数限定署名生成鍵格納ステップで格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成ステップと、前記署名生成ステップにおいて、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタステップと、前記カウンタステップで数えたカウンタ値を判定する第1のカウンタ判定ステップとを備え、前記第1のカウンタ判定ステップは、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成ステップにおいて、前記署名データを生成しないよう制御することを特徴とする。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを検証する署名検証方法であって、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納ステップと、前記個数限定署名検証鍵格納ステップで格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証ステップと、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定ステップとを備え、前記第2のカウンタ判定ステップは、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証ステップにおいて署名検証を行わないよう制御することを特徴とする。
また、本発明は、メッセージデータを含む署名対象データに対する署名データを生成する署名生成装置に実行させるプログラムであって、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納ステップと、前記個数限定署名生成鍵格納ステップで格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成ステップと、前記署名生成ステップにおいて、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタステップと、前記カウンタステップで数えたカウンタ値を判定する第1のカウンタ判定ステップとを前記署名生成装置に実行させ、前記第1のカウンタ判定ステップは、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成ステップにおいて、前記署名データを生成しないよう制御することを特徴とする。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを検証する署名検証装置に実行させるプログラムであって、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納ステップと、前記個数限定署名検証鍵格納ステップで格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証ステップと、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定ステップとを前記署名検証装置に実行させ、前記第2のカウンタ判定ステップは、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証ステップにおいて署名検証を行わないよう制御することを特徴とする。
また、本発明は、メッセージデータを含む署名対象データに対する署名データを生成する署名生成装置の集積回路であって、前記署名データを生成するために使用する個数限定署名生成鍵を格納する個数限定署名生成鍵格納部と、前記個数限定署名生成鍵格納部に格納された前記個数限定署名生成鍵を用いて、前記署名対象データに対する前記署名データを生成する署名生成部と、前記署名生成部において、前記個数限定署名生成鍵を用いて前記署名データを生成した回数を数えるカウンタ部と、前記カウンタ部のカウンタ値を判定する第1のカウンタ判定部とを備え、前記第1のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名生成部において、前記署名データを生成しないよう制御することを特徴とする。
また、本発明は、メッセージデータとカウンタ値を含む署名対象データに対する署名データを検証する署名検証装置の集積回路であって、前記署名データを検証するために使用する個数限定署名検証鍵、または前記個数限定署名検証鍵の証明書を格納する個数限定証明書格納部と、前記個数限定署名検証鍵格納部に格納された前記個数限定署名検証鍵を用いて、前記署名対象データに対する前記署名データを検証する署名検証部と、前記署名対象データに含まれる前記カウンタ値を判定する第2のカウンタ判定部とを備え、前記第2のカウンタ判定部は、前記カウンタ値が予め与えられた所定値より大きい場合に、前記署名検証部において署名検証を行わないよう制御することを特徴とする。
上記の示したディジタル署名システムの構成によると、Transcript attackを防ぐことができる。
また、上記にて示したディジタル署名システムを構成する各装置は、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
ディジタル署名システム1の構成を示すブロック図である。 署名生成装置10にて行われる初期設定処理の動作を示す流れ図である。 署名生成装置10にて行われる署名生成処理の動作を示す流れ図である。 署名生成装置10にて行われるカウンタ値チェック処理の動作を示す流れ図である。 署名検証装置20にて行われる署名検証処理の動作を示す流れ図である。 ディジタル署名システム1000の構成を示すブロック図である。 署名生成装置1010にて行われる署名生成処理の動作を示す流れ図である。 署名検証装置1020にて行われる署名検証処理の動作を示す流れ図である。 署名監視サーバ1030にて行われる監視処理の動作を示す流れ図である。
符号の説明
1 ディジタル署名システム
10 署名生成装置
20 署名検証装置
50 通信路
101 ユーザ署名生成鍵格納部
102 ユーザ証明書格納部
103 個数限定署名生成鍵格納部
104 個数限定証明書格納部
105 署名生成部
106 署名データセット生成部
107 カウンタ部
108 カウンタ判定部
109 個数限定鍵生成部
110 送信部
150 初期設定部
151 署名抑止部
201 CA公開鍵格納部
202 署名データセット格納部
203 署名検証部
204 受信部
205 表示部
1000 ディジタル署名システム
1010 署名生成装置
1020 署名検証装置
1030 署名監視サーバ
1040 センタ
1050 通信路
1101 ユーザ署名生成鍵格納部
1102 ユーザ証明書格納部
1103 個数限定署名生成鍵格納部
1104 個数限定証明書格納部
1105 署名生成部
1106 署名データセット生成部
1107 カウンタ部
1108 カウンタ判定部
1109 個数限定鍵生成部
1110 送信部
1111 時計部
1201 CA公開鍵格納部
1202 署名データセット格納部
1203 署名検証部
1204 受信部
1205 表示部
1206 カウンタ判定部
1207 時刻判定部
1208 時計部
1301 ログ格納部
1302 通信監視部
1303 署名データセット取得部
1304 署名データセット判定部
1305 送受信部

Claims (24)

  1. 署名鍵を用いて署名を行う署名生成装置であって、
    前記署名鍵を記憶している鍵記憶手段と、
    前記署名鍵を用いて、署名対象データに署名を施して、署名データを生成する署名生成手段と、
    前記署名データの生成時に、前記署名鍵を用いて署名を行った累積回数をカウントするカウンタ手段と、
    前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断手段と、
    前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止手段と
    を備えることを特徴とする署名生成装置。
  2. 前記署名抑止手段は、
    前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、前記署名鍵とは別の署名鍵を生成し、生成した前記別の署名鍵を、前記鍵記憶手段にて記憶されている前記署名鍵に対して上書きすることにより、前記署名鍵による署名を抑止する
    ことを特徴とする請求項1に記載の署名生成装置。
  3. 前記署名生成装置は、さらに、
    前記署名鍵に対応する検証鍵と、前記検証鍵の正当性を示し、第1の秘密鍵により生成された検証鍵署名データとを含む検証鍵証明書を記憶している検証鍵証明書記憶手段と、
    前記第1の秘密鍵に対応する公開鍵と、前記公開鍵の正当性を示し、外部の機関が有する第2の秘密鍵により生成された公開鍵署名データとを含む公開鍵証明書を記憶している公開鍵証明書記憶手段と、
    前記署名対象データと、前記署名生成手段にて生成された前記署名データと、前記検証鍵証明書と、前記公開鍵証明書とを、前記署名データの検証を行う署名検証装置へ送信する送信手段と
    を備えることを特徴とする請求項2に記載の署名生成装置。
  4. 前記署名抑止手段は、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、さらに、
    前記別の署名鍵に対応し、前記検証鍵とは別の検証鍵を生成し、生成した前記別の検証鍵に対して、前記第1の秘密鍵を用いて、前記検証鍵署名データとは別の検証鍵署名データを生成し、前記別の検証鍵と前記検証鍵署名データとを含む、前記検証鍵証明書とは別の検証鍵証明書を生成し、生成した前記別の検証鍵証明書を、前記公開鍵証明書記憶手段に記憶されている前記検証鍵証明書に対して上書きする
    ことを特徴とする請求項3に記載の署名生成装置。
  5. 前記署名生成装置は、さらに、
    前記署名鍵を示す第1鍵情報を記憶している情報記憶手段を備え、
    前記署名生成手段は、前記記憶手段にて記憶されている第1鍵情報に基づいて、前記鍵記憶手段から前記署名鍵を取得し、取得した前記署名鍵を用いて、前記署名データを生成し、
    前記鍵記憶手段は、さらに、前記署名鍵とは別の署名鍵を記憶しており、
    前記署名抑止手段は、前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、前記情報記憶手段にて記憶されている前記第1鍵情報を、前記別の署名鍵を示す第2鍵情報へと書き換えることにより、前記署名鍵による署名を抑止する
    ことを特徴とする請求項1に記載の署名生成装置。
  6. 前記署名生成手段は、
    前記カウンタ手段にてカウントされた累積回数を取得し、
    前記署名対象データは、メッセージデータと取得した累積回数とを含む
    ことを特徴とする請求項1に記載の署名生成装置。
  7. 前記署名生成装置は、さらに、
    時刻を計時する時計手段を備え、
    前記署名生成手段は、
    前記時計手段を用いて、署名データの有効期限の判断基準となる時刻情報を取得し、
    前記署名対象データは、メッセージデータと取得した前記時刻情報とを含む
    ことを特徴とする請求項1に記載の署名生成装置。
  8. 前記判断手段は、前記所定回数を記憶している回数記憶部を有しており、
    前記署名生成装置は、さらに、
    前記回数記憶部にて記憶されている前記所定回数を別の所定回数へと更新する更新手段
    を備えることを特徴とする請求項1に記載の署名生成装置。
  9. 署名鍵を用いて署名を行う署名生成装置にて生成された署名データを検証する署名検証装置であって、
    前記署名生成装置から、メッセージデータと前記署名生成装置が前記署名鍵を用いて署名を行った累積回数とを含む署名対象データと、前記署名対象データに対する署名データとを、前記署名生成装置から受信する受信手段と、
    受信した前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断手段と、
    前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止手段と
    を備えることを特徴とする署名検証装置。
  10. 前記署名対象データは、さらに、前記署名データの有効期限の判断基準となる第1時刻情報を含み、
    前記署名検証装置は、さらに、
    時刻を計時する時計手段と、
    前記累積回数が前記所定回数に達していないと判断される場合に、前記時計手段を用いて現在時刻を示す第2時刻情報を取得し、前記第1時刻情報と取得した第2時刻情報とを用いて、前記署名データの有効期限が過ぎているか否かを判断する期限判断手段と、
    前記署名データの有効期限が過ぎていないと判断される場合に、前記署名データを検証する検証手段とを備え、
    前記検証抑止手段は、さらに、前記署名データの有効期限が過ぎていると判断される場合に、前記署名データの検証を抑止する
    ことを特徴とする請求項9に記載の署名検証装置。
  11. 前記署名データは、前記署名生成装置が生成した署名鍵を用いて生成され、
    前記受信手段は、さらに、
    前記署名鍵に対応する検証鍵と、前記検証鍵の正当性を示し、第1の秘密鍵により生成された検証鍵署名データとを含む検証鍵証明書と、前記第1の秘密鍵に対応する第1の公開鍵と、前記第1の公開鍵の正当性を示し、外部の機関が有する第2の秘密鍵により生成された公開鍵署名データとを含む公開鍵証明書とを受信し、
    前記検証手段は、
    前記第2の秘密鍵に対応する第2の公開鍵を記憶している鍵記憶部と、
    前記署名データの有効期限が過ぎていると判断される場合に、前記第2の公開鍵を用いて、前記公開鍵証明書が正当であるか否かを検証する第1検証部と、
    前記公開鍵証明書が正当であると判断される場合に、前記第1の公開鍵を用いて前記検証鍵明書が正当であるか否かを検証する第2検証部と、
    前記検証鍵証明書が正当であると判断される場合に、前記署名データが正当であるか否かを検証する第3検証部と
    を備えることを特徴とする請求項10に記載の署名検証装置。
  12. 前記署名検証装置は、さらに、
    前記累積回数が前記所定回数に達していると判断される場合に、前記署名データを生成した前記署名生成装置を特定する特定情報を、外部装置へ送信する送信手段
    を備えることを特徴とする請求項11に記載の署名検証装置。
  13. 前記回数判断手段は、前記所定回数を記憶している回数記憶領域を有しており、
    前記署名検証装置は、さらに、
    前記署名生成装置から前記所定回数とは別の所定回数を受信し、前記回数記憶領域にて記憶されている前記所定回数を、受信した前記別の所定回数へと更新する更新手段
    を備えることを特徴とする請求項9に記載の署名生成装置。
  14. 署名鍵を用いて署名を行う署名生成装置と、前記署名生成装置にて生成された署名データを検証する署名検証装置とからなる署名システムであって、
    前記署名生成装置は、
    前記署名鍵を記憶している鍵記憶手段と、
    前記署名鍵を用いて、メッセージデータと、前記署名鍵を用いて署名を行った累積回数とを含む署名対象データに署名を施して前記署名データを生成する署名生成手段と、
    前記署名データの生成時に、前記累積回数をカウントするカウンタ手段と、
    前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断手段と、
    前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止手段と、
    前記署名対象データと、前記署名データとを含むデータ群を、前記署名検証装置へ送信する送信手段とを備え、
    前記署名検証装置は、
    前記署名生成装置から前記データ群を前記署名生成装置から受信する受信手段と、
    受信した前記データ群の前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断手段と、
    前記回数判断手段にて前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止手段と
    を備えることを特徴とする署名システム。
  15. 前記署名システムは、さらに、前記署名生成装置から前記署名検証装置へと送信される前記データ群を監視する監視装置を備え、
    前記監視装置は、
    前記署名生成装置と前記署名検証装置とを接続する伝送路から前記データ群を取得する取得手段と、
    前記データ群が取得される前に、既に取得された1以上の取得済データ群を記憶しているログ記憶手段と、
    前記1以上の取得済データ群を用いて、取得した前記データ群が正当であるか否かを判断するデータ判断手段と、
    前記データ群が不正なものであると判断される場合に、取得した前記データ群に含まれる前記署名データを生成した前記署名生成装置を特定する特定情報を、外部装置へ送信する情報送信手段と
    を備えることを特徴とする請求項14に記載の署名システム。
  16. 前記データ群は、さらに、前記署名鍵に対応する検証鍵を含み、
    前記1以上の取得済データ群それぞれは、取得済累積回数を含む取得済署名対象データと、取得済検証鍵とを含み、
    前記データ判断手段は、
    前記検証鍵及び前記累積回数と、一致する取得済検証鍵及び取得済累積回数を含む取得済データ群が、ログ記憶手段に存在するか否かを検索し、存在する場合には、取得した前記データ群は不正なものであると判断する
    ことを特徴とする請求項15に記載の署名システム。
  17. 署名鍵を用いて署名を行う署名生成装置で用いられる署名生成方法であって、
    前記署名生成装置は、
    前記署名鍵を記憶している鍵記憶手段を備え、
    前記署名生成方法は、
    前記署名鍵を用いて、署名対象データに署名を施して、署名データを生成する署名生成ステップと、
    前記署名データの生成時に、前記署名鍵を用いて署名を行った累積回数をカウントするカウンタステップと、
    前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断ステップと、
    前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止ステップと
    を含むことを特徴とする署名生成方法。
  18. 署名鍵を用いて署名を行う署名生成装置で用いられる署名生成プログラムであって、
    前記署名生成装置は、
    前記署名鍵を記憶している鍵記憶手段を備え、
    前記署名生成プログラムは、
    前記署名鍵を用いて、署名対象データに署名を施して、署名データを生成する署名生成ステップと、
    前記署名データの生成時に、前記署名鍵を用いて署名を行った累積回数をカウントするカウンタステップと、
    前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断ステップと、
    前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止ステップと
    を含むことを特徴とする署名生成プログラム。
  19. 前記署名生成プログラムは、
    コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項18に記載の署名生成プログラム。
  20. 署名鍵を用いて署名を行う署名生成装置にて生成された署名データを検証する署名検証装置で用いられる署名検証方法であって、
    前記署名生成装置から、メッセージデータと前記署名生成装置が前記署名鍵を用いて署名を行った累積回数とを含む署名対象データと、前記署名対象データに対する署名データとを、前記署名生成装置から受信する受信ステップと、
    受信した前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断ステップと、
    前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止ステップと
    を含むことを特徴とする署名検証方法。
  21. 署名鍵を用いて署名を行う署名生成装置にて生成された署名データを検証する署名検証装置で用いられる署名検証プログラムであって、
    前記署名生成装置から、メッセージデータと前記署名生成装置が前記署名鍵を用いて署名を行った累積回数とを含む署名対象データと、前記署名対象データに対する署名データとを、前記署名生成装置から受信する受信ステップと、
    受信した前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断ステップと、
    前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止ステップと
    を含むことを特徴とする署名検証プログラム。
  22. 前記署名検証プログラムは、
    コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項21に記載の署名検証プログラム。
  23. 署名鍵を用いて署名を行う署名生成装置の集積回路であって、
    前記署名鍵を記憶している鍵記憶手段と、
    前記署名鍵を用いて、署名対象データに署名を施して、署名データを生成する署名生成手段と、
    前記署名データの生成時に、前記署名鍵を用いて署名を行った累積回数をカウントするカウンタ手段と、
    前記カウンタ手段にてカウントされた累積回数が所定回数に達しているか否かを判断する判断手段と、
    前記カウンタ手段にてカウントされた累積回数が前記所定回数に達していると判断される場合に、以後、前記署名鍵による署名を抑止する署名抑止手段と
    を備えることを特徴とする集積回路。
  24. 署名鍵を用いて署名を行う署名生成装置にて生成された署名データを検証する署名検証装置の集積回路であって、
    前記署名生成装置から、メッセージデータと前記署名生成装置が前記署名鍵を用いて署名を行った累積回数とを含む署名対象データと、前記署名対象データに対する署名データとを、前記署名生成装置から受信する受信手段と、
    受信した前記署名対象データに含まれる前記累積回数が所定回数に達しているか否かを判断する回数判断手段と、
    前記累積回数が前記所定回数に達していると判断される場合に、前記署名データの検証を抑止する検証抑止手段と
    を備えることを特徴とする集積回路。
JP2006543311A 2005-01-24 2006-01-17 署名生成装置及び署名検証装置 Active JP4548737B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005015162 2005-01-24
JP2005015162 2005-01-24
PCT/JP2006/300510 WO2006077822A1 (ja) 2005-01-24 2006-01-17 署名生成装置及び署名検証装置

Publications (2)

Publication Number Publication Date
JPWO2006077822A1 true JPWO2006077822A1 (ja) 2008-06-19
JP4548737B2 JP4548737B2 (ja) 2010-09-22

Family

ID=36692211

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006543311A Active JP4548737B2 (ja) 2005-01-24 2006-01-17 署名生成装置及び署名検証装置

Country Status (5)

Country Link
US (1) US7917764B2 (ja)
EP (1) EP1843513A1 (ja)
JP (1) JP4548737B2 (ja)
CN (1) CN101107808B (ja)
WO (1) WO2006077822A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10181953B1 (en) 2013-09-16 2019-01-15 Amazon Technologies, Inc. Trusted data verification
JP4036838B2 (ja) * 2004-03-12 2008-01-23 インターナショナル・ビジネス・マシーンズ・コーポレーション セキュリティ装置、情報処理装置、セキュリティ装置が実行する方法、情報処理装置が実行する方法、該方法を実行させるための装置実行可能なプログラムおよびチケット・システム
JP4988448B2 (ja) * 2007-06-25 2012-08-01 株式会社日立製作所 一括検証装置、プログラム及び一括検証方法
US7890763B1 (en) * 2007-09-14 2011-02-15 The United States Of America As Represented By The Director, National Security Agency Method of identifying invalid digital signatures involving batch verification
CN101282220B (zh) * 2008-05-14 2013-02-20 北京深思洛克软件技术股份有限公司 一种增强密钥使用安全性的信息安全装置及其实现方法
US9112910B2 (en) 2008-10-14 2015-08-18 International Business Machines Corporation Method and system for authentication
JP5446453B2 (ja) * 2009-04-30 2014-03-19 ソニー株式会社 情報処理装置、電子署名生成システム、電子署名用の鍵生成方法、情報処理方法、及びプログラム
JP5458657B2 (ja) * 2009-05-01 2014-04-02 ソニー株式会社 情報処理装置、鍵更新方法、及びプログラム
DE102009025585B4 (de) * 2009-06-19 2012-08-16 Audi Ag Vorrichtung zur dezentralen Funktionsfreischaltung eines Steuergeräts
US9237155B1 (en) 2010-12-06 2016-01-12 Amazon Technologies, Inc. Distributed policy enforcement with optimizing policy transformations
US11418580B2 (en) * 2011-04-01 2022-08-16 Pure Storage, Inc. Selective generation of secure signatures in a distributed storage network
US8769642B1 (en) 2011-05-31 2014-07-01 Amazon Technologies, Inc. Techniques for delegation of access privileges
US9197409B2 (en) 2011-09-29 2015-11-24 Amazon Technologies, Inc. Key derivation techniques
US9203613B2 (en) 2011-09-29 2015-12-01 Amazon Technologies, Inc. Techniques for client constructed sessions
US9178701B2 (en) 2011-09-29 2015-11-03 Amazon Technologies, Inc. Parameter based key derivation
US8892865B1 (en) 2012-03-27 2014-11-18 Amazon Technologies, Inc. Multiple authority key derivation
US8739308B1 (en) 2012-03-27 2014-05-27 Amazon Technologies, Inc. Source identification for unauthorized copies of content
US9215076B1 (en) 2012-03-27 2015-12-15 Amazon Technologies, Inc. Key generation for hierarchical data access
US9660972B1 (en) 2012-06-25 2017-05-23 Amazon Technologies, Inc. Protection from data security threats
US9258118B1 (en) 2012-06-25 2016-02-09 Amazon Technologies, Inc. Decentralized verification in a distributed system
JP5932709B2 (ja) * 2013-05-09 2016-06-08 株式会社日立製作所 送信側装置および受信側装置
US9407440B2 (en) 2013-06-20 2016-08-02 Amazon Technologies, Inc. Multiple authority data security and access
US20160149708A1 (en) * 2013-07-12 2016-05-26 Koninklijke Philips N.V. Electronic signature system
US9521000B1 (en) 2013-07-17 2016-12-13 Amazon Technologies, Inc. Complete forward access sessions
US9311500B2 (en) 2013-09-25 2016-04-12 Amazon Technologies, Inc. Data security using request-supplied keys
US9237019B2 (en) 2013-09-25 2016-01-12 Amazon Technologies, Inc. Resource locators with keys
US10243945B1 (en) 2013-10-28 2019-03-26 Amazon Technologies, Inc. Managed identity federation
US20150126333A1 (en) * 2013-11-05 2015-05-07 Halcyonic, LLC Virtual competition environment
US9420007B1 (en) 2013-12-04 2016-08-16 Amazon Technologies, Inc. Access control using impersonization
US9374368B1 (en) 2014-01-07 2016-06-21 Amazon Technologies, Inc. Distributed passcode verification system
US9292711B1 (en) 2014-01-07 2016-03-22 Amazon Technologies, Inc. Hardware secret usage limits
US9369461B1 (en) 2014-01-07 2016-06-14 Amazon Technologies, Inc. Passcode verification using hardware secrets
US9262642B1 (en) 2014-01-13 2016-02-16 Amazon Technologies, Inc. Adaptive client-aware session security as a service
US9838381B2 (en) * 2014-02-26 2017-12-05 Mitsubishi Electric Corporation Certificate management apparatus and certificate management method
US10771255B1 (en) 2014-03-25 2020-09-08 Amazon Technologies, Inc. Authenticated storage operations
US9258117B1 (en) 2014-06-26 2016-02-09 Amazon Technologies, Inc. Mutual authentication with symmetric secrets and signatures
US10326597B1 (en) 2014-06-27 2019-06-18 Amazon Technologies, Inc. Dynamic response signing capability in a distributed system
US10122692B2 (en) 2015-06-16 2018-11-06 Amazon Technologies, Inc. Handshake offload
US10122689B2 (en) 2015-06-16 2018-11-06 Amazon Technologies, Inc. Load balancing with handshake offload
CN105515768B (zh) * 2016-01-08 2017-07-21 腾讯科技(深圳)有限公司 一种更新密钥的方法、装置和系统
US10116440B1 (en) 2016-08-09 2018-10-30 Amazon Technologies, Inc. Cryptographic key management for imported cryptographic keys
US10460130B1 (en) * 2017-09-18 2019-10-29 Amazon Technologies, Inc. Mechanism to protect a distributed replicated state machine
DE102020201768A1 (de) 2020-02-12 2021-08-12 Infineon Technologies Ag Vorrichtung und Verfahren zum Betreiben derselben
CN114040387B (zh) * 2020-07-21 2024-06-04 中国移动通信有限公司研究院 一种攻击消息的确定方法、装置及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305995A (ja) * 1999-04-22 2000-11-02 Fuji Xerox Co Ltd 流通情報管理装置および方法
JP2002535740A (ja) * 1999-01-29 2002-10-22 ジェネラル・インストルメント・コーポレーション デジタル情報を転送するデバイスにおける、セキュアなマイクロプロセッサを用いた証明書の自己生成
JP2002335237A (ja) * 2001-05-10 2002-11-22 Matsushita Electric Ind Co Ltd 鍵管理装置および鍵管理方法
JP2004080174A (ja) * 2002-08-13 2004-03-11 Ntt Data Corp Ic、データ処理システム及びコンピュータプログラム
JP2005515659A (ja) * 2001-12-07 2005-05-26 エヌティーアールユー・クリプトシステムズ・インコーポレーテッド ディジタル署名、認証方法及び装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL128552A (en) 1996-08-19 2004-06-01 Ntru Cryptosystems Inc Method and device of a public key in a crypto system
EP0840477B1 (en) * 1996-10-31 2012-07-18 Panasonic Corporation Secret key transfer method which is highly secure and can restrict the damage caused when the secret key is leaked or decoded
DE19831884C2 (de) * 1998-07-17 2001-09-20 Ibm System und Verfahren zum Schutz gegen analytisches Ausspähen von geheimen Informationen
US6839841B1 (en) * 1999-01-29 2005-01-04 General Instrument Corporation Self-generation of certificates using secure microprocessor in a device for transferring digital information
JP4779183B2 (ja) * 1999-03-26 2011-09-28 ソニー株式会社 再生装置および再生方法
JP4135049B2 (ja) * 1999-03-25 2008-08-20 ソニー株式会社 不揮発性メモリ
US7167561B1 (en) * 1999-03-03 2007-01-23 Sony Corporation Recording apparatus, recording method, reproducing apparatus, and reproducing method
JP4406988B2 (ja) * 1999-03-29 2010-02-03 ソニー株式会社 不揮発性記録媒体、記録方法、記録装置
JP4214651B2 (ja) * 1999-03-31 2009-01-28 ソニー株式会社 データコミュニケーションシステム、データ管理方法
MY122279A (en) * 1999-03-03 2006-04-29 Sony Corp Nonvolatile memory and nonvolatile memory reproducing apparatus
JP4281185B2 (ja) * 1999-03-25 2009-06-17 ソニー株式会社 編集装置および方法
JP4749522B2 (ja) * 1999-03-26 2011-08-17 ソニー株式会社 再生装置および再生方法
BRPI0005192B1 (pt) * 1999-03-03 2016-04-19 Sony Corp aparelho de processamento de dados, unidade terminal possuindo um meio de gravação não volátil fixável/destacável, e, processos de processamento de dados, e de transmissão de um aparelho de processamento de dados
MY123388A (en) 1999-03-15 2006-05-31 Sony Corp Processing method and apparatus for encrypted data transfer
TW529267B (en) * 1999-03-15 2003-04-21 Sony Corp Data processing system and method for mutual identification between apparatuses
US7519277B2 (en) * 1999-03-25 2009-04-14 Sony Corporation Editing apparatus and editing method
US6870680B2 (en) * 2001-08-17 2005-03-22 Sony Corporation Imaging device
US6601140B1 (en) * 1999-04-07 2003-07-29 Sony Corporation Memory unit, data processing unit, and data processing method using memory unit type
US6820203B1 (en) * 1999-04-07 2004-11-16 Sony Corporation Security unit for use in memory card
US6618789B1 (en) * 1999-04-07 2003-09-09 Sony Corporation Security memory card compatible with secure and non-secure data processing systems
US7376837B1 (en) * 1999-04-09 2008-05-20 General Instrument Corporation Built-in manufacturer's certificates for a cable telephony adapter to provide device and service certification
ATE313200T1 (de) * 1999-04-09 2005-12-15 Gen Instrument Corp Schlüsselverwaltung zwischen kabeltelefonsystemadapter und signaleinrichtungkontrolle
US6892308B1 (en) * 1999-04-09 2005-05-10 General Instrument Corporation Internet protocol telephony security architecture
JP2002099211A (ja) * 2000-09-21 2002-04-05 Sony Corp 公開鍵証明書発行要求処理システムおよび公開鍵証明書発行要求処理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002535740A (ja) * 1999-01-29 2002-10-22 ジェネラル・インストルメント・コーポレーション デジタル情報を転送するデバイスにおける、セキュアなマイクロプロセッサを用いた証明書の自己生成
JP2000305995A (ja) * 1999-04-22 2000-11-02 Fuji Xerox Co Ltd 流通情報管理装置および方法
JP2002335237A (ja) * 2001-05-10 2002-11-22 Matsushita Electric Ind Co Ltd 鍵管理装置および鍵管理方法
JP2005515659A (ja) * 2001-12-07 2005-05-26 エヌティーアールユー・クリプトシステムズ・インコーポレーテッド ディジタル署名、認証方法及び装置
JP2004080174A (ja) * 2002-08-13 2004-03-11 Ntt Data Corp Ic、データ処理システム及びコンピュータプログラム

Also Published As

Publication number Publication date
CN101107808A (zh) 2008-01-16
WO2006077822A1 (ja) 2006-07-27
JP4548737B2 (ja) 2010-09-22
CN101107808B (zh) 2011-01-26
EP1843513A1 (en) 2007-10-10
US7917764B2 (en) 2011-03-29
US20080222418A1 (en) 2008-09-11

Similar Documents

Publication Publication Date Title
JP4548737B2 (ja) 署名生成装置及び署名検証装置
JP4544538B2 (ja) 署名生成装置、鍵生成装置及び署名生成方法
JP5790319B2 (ja) 署名検証装置、署名検証方法、プログラム、及び記録媒体
JP5341878B2 (ja) 署名及び検証方法、署名生成装置並びに署名検証装置
JP6069852B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP5593850B2 (ja) 認証装置、認証方法、プログラム、及び署名生成装置
JP5957095B2 (ja) 改ざん検知装置、改ざん検知方法、およびプログラム
US20120294442A1 (en) Joint encryption of data
US20100281267A1 (en) Image Processing Apparatus, Electronic Signature Generation System, Electronic Signature Key Generation Method, Image Processing Method, and Program
JP5790318B2 (ja) 情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラム
CN101877639A (zh) 信息处理设备、密钥更新方法和程序
JP4367938B2 (ja) 細粒度フォワード・セキュア署名の方法、コンピュータ・プログラム要素、コンピュータ・プログラムおよびネットワーク・デバイス
WO2006114948A1 (ja) 署名生成装置および署名検証装置
JP5970193B2 (ja) 検索システム、検索方法および検索プログラム
JP2011145591A (ja) コミットメントシステム、マスター装置、送信装置、受信装置、コミットメント方法、プログラム、記録媒体
TW201325180A (zh) 資訊處理裝置、署名生成裝置、署名驗證裝置、資訊處理方法、署名生成方法及署名驗證方法
WO2013031413A1 (ja) 情報処理装置、情報処理方法、プログラム、及び記録媒体
JP2009033608A (ja) 正当性検証装置及び正当性検証方法
Iyer Group Signature Scheme Resistant against Colluding Attack
Xin Project Writeup Stateful Public-Key Cryptosystems: How to Encrypt with One 160-bit Exponentiation
JP2003115839A (ja) 認証システム、認証方法、擬似乱数発生器
JP2010245683A (ja) 暗号システム、鍵生成装置、暗号化装置、復号化装置及び暗号処理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100406

A521 Request for written amendment filed

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4548737

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130716

Year of fee payment: 3