【実施例1】
【0023】
図1に本発明の署名・検証システムの構成例、
図2に本発明の署名装置の処理フロー、
図3に本発明の検証装置の処理フローを示す。署名・検証システムは、ネットワーク800で接続された署名装置100と検証装置200とを有する。署名装置100は、鍵生成部110、ワンタイム鍵生成部120、メッセージ署名生成部130、ワンタイム署名生成部140、署名記録部190を備え、検証鍵vkとワンタイム検証鍵opkと署名S
1,S
2を出力する。検証装置200は、メッセージ署名検証部230、ワンタイム署名検証部240、検証記録部290を備え、検証鍵vk、ワンタイム検証鍵opk、署名S
1,S
2とメッセージMを取得して署名S
1,S
2を検証する。
【0024】
まず、G
1,G
2,G
Tを位数pの群、eをG
1×G
2→G
Tのペアリング、g
1を群G
1の任意の生成元、g
2を群G
2の任意の生成元、Kを1以上のあらかじめ定めた整数、kを1以上K以下の整数、m
1,…,m
Kを群G
1の元、メッセージMをM=(m
1,…,m
K)、^をべき乗を示す記号、u,f
02,…,f
K2,f
03,…,f
K3を1以上p−1以下からランダムに選択した整数、U
1=g
1^u,U
2=g
2^u,(F
102,…,F
1K2)=(g
1^f
02,…,g
1^f
K2),(F
103,…,F
1K3)=(g
1^f
03,…,g
1^f
K3),(F
202,…,F
2K2)=(g
2^f
02,…,g
2^f
K2),(F
203,…,F
2K3)=(g
2^f
03,…,g
2^f
K3)とする。また、〜を群G
1の元のg
1を底とする対数の値と群G
2の元のg
2を底とする対数の値が等しいことを示す記号とする。つまり、V
1〜V
2は、
【0025】
【数3】
【0026】
の関係を示している。ペアリングeは、e(g
1a,g
2b)=e(g
1,g
2)
ab,e(g
1,g
2)≠1となる性質を持つ写像である。また、p,G
1,G
2,G
T,e,(F
102,…,F
1K2),(F
103,…,F
1K3),(F
202,…,F
2K2),(F
203,…,F
2K3),U
1,U
2は、あらかじめ定められた共通パラメータ(双線形写像群の表現を含むグローバルキー)であり、あらかじめ署名記録部190と、検証記録部290に記録されているとする。
【0027】
鍵生成部110は、V
1〜V
2,V
1’〜V
2’,H
1〜H
2が成り立つように群G
1の元V
1,V
1’,H
1と群G
2の元V
2,V
2’,H
2を定め、0以上p−1以下の整数の中からランダムにa,b,αを選び、1以上p−1以下の整数の中からランダムにρを選ぶ。そして、鍵生成部110は、
vk
1=g
2b,vk
2=g
2a,vk
3=g
2ba,vk
4=R
2,vk
5=R
2b,vk
6=H
2,vk
7=g
1ρ,vk
8=g
2αb/ρを求め、
vk
1,vk
2,vk
3,vk
4,vk
5,vk
6,vk
7,vk
8を含む検証鍵vkと、vk,g
1α,g
1b,V
1,V
1’を含む署名鍵skを生成する(S110)。ただし、R
2=V
2(V
2’)
aである。
【0028】
ワンタイム鍵生成部120は、0以上p−1以下の整数の中からランダムにv,a
1,…,a
Kを選ぶ。そして、ワンタイム鍵生成部120は、
(N
201,N
202,N
200)=(F
202^v,F
203^v,U
2^v)と
i=1,…,Kについて
(N
2i1,N
2i2,N
2i0)=(F
2i2^a
i,F
2i3^a
i,U
2^a
i)
を計算し、
(N
201,N
202,N
200),…,(N
2K1,N
2K2,N
2K0)を含むワンタイム検証鍵opkと、v,a
1,…,a
Kを含むワンタイム署名鍵oskを生成する(S120)。
【0029】
メッセージ署名生成部130は、メッセージMを取得し、ワンタイム署名鍵oskを用いて、選択メッセージ攻撃に対する安全性を有するあらかじめ定めた署名方式にしたがって、メッセージMに対する署名であって群G
1の元または群G
2の元のみを含む署名S
1を生成する(S130)。ワンタイム検証鍵opk、メッセージM、署名S
1はいずれも、群G
1の元または群G
2の元のみで構成されているので、メッセージ署名生成部130が利用する署名方式は群構造維持署名方式である。なお、選択メッセージ攻撃に対する安全性を有する署名方法の具体例としては、メッセージ署名生成部130が、
【0030】
【数4】
【0031】
のように、署名S
1を求める方法がある。ただし、メッセージ署名生成部130が利用する署名方式は、選択メッセージ攻撃に対する安全性を有する群構造維持署名方式であれば、他の署名方式でもよい。また、署名の対象となるメッセージMは、K個の群G
1の元からなる。通常のメッセージは任意長の整数であるが、その場合は、K個の群G
1の元となるように変換すればよい。そして、変換後のメッセージを本願のメッセージMとする。署名の対象となるメッセージが短い場合には、K個の群G
1の元となるようにパディングによってメッセージMを作ればよい。パディングする値は群G
1の元の中からあらかじめ選んでおけばよい。
【0032】
ワンタイム署名生成部140は、0以上p−1以下の整数の中からランダムにr
1、r
2、zを選び、
r=r
1+r
2 (mod p)
を求める。そして、ワンタイム署名生成部140は、
【0033】
【数5】
【0034】
σ
1=g
1αV
1r
σ
2=(V
1’)
rg
1−z
σ
3=(g
1b)
z
σ
4=(g
1b)^r
2
σ
5=g
1^r
1
を求め、σ
0,σ
1,σ
2,σ
3,σ
4,σ
5を含む署名S
2を生成する(S140)。この処理では、署名鍵skを用いてワンタイム検証鍵opkに対する署名S
2を生成している。これらの処理によって、署名装置100は、検証鍵vkとワンタイム検証鍵opkと署名S
1,S
2を出力する。
【0035】
メッセージ署名検証部230は、ワンタイム検証鍵opkと署名S
1とメッセージMを取得し、取得したワンタイム検証鍵opkを用いて、メッセージ署名生成部130がしたがった署名方式にしたがって取得した署名S
1を検証する(S230)。例えば、メッセージ署名生成部130の説明で示した署名S
1の具体例の場合ならば、メッセージ署名検証部230は、取得したメッセージMに含まれるm
1,…,m
Kと取得した署名S
1が群G
1の元であること、および
【0036】
【数6】
【0037】
であることを確認し、正しければOK、正しくなければNGと判断すればよい。取得した署名S
1が正しい署名であれば
【0038】
【数7】
【0039】
のように、左辺と右辺が等しくなるので、上記の計算で検証できる。
【0040】
ワンタイム署名検証部240は、検証鍵vkと署名S
2とワンタイム検証鍵opkを取得し、
【0041】
【数8】
【0042】
e(σ
1,vk
1)e(σ
2,vk
3)e(σ
3,vk
2)=e(σ
4,vk
4)e(σ
5,vk
5)e(vk
7,vk
8)
e(F
1i2,N
2i0)=e(U
1,N
2i1) (ただし、i=0,…,K)
e(F
1i3,N
2i0)=e(U
1,N
2i2) (ただし、i=0,…,K)
のすべてが成り立つことを確認することで取得した署名S
2を検証する(S240)。すなわち、すべての式が成り立てばOK、いずれかの式が成り立たなければNGと判断する。
【0043】
次に、第1式から、取得した署名S
2が正しければ成り立つことを示す。第1式は、
【0044】
【数9】
【0045】
となり、取得した署名S
2が正しければ成り立つ。第2式は、
【0046】
【数10】
【0047】
となる。ここで、V
1〜V
2,V
1’〜V
2’が成り立つようにV
1,V
2,V
1’,V
2’は定められているので、取得した署名S
2が正しければ(左辺)=(右辺)が成り立つ。第3式は、
(左辺)=e(F
1i2,N
2i0)
=e(g
1^f
i2,U
2^a
i)
=e(g
1,g
2^u)^(f
i2・a
i)
=e(g
1,g
2)^(u・f
i2・a
i)
(右辺)=e(U
1,N
2i1)
=e(U
1,F
2i2^a
i)
=e(g
1^u,g
2^f
i2)^a
i
=e(g
1,g
2)^(u・f
i2・a
i)
となる。よって、取得した署名S
2が正しければ(左辺)=(右辺)が成り立つ。第4式は、
(左辺)=e(F
1i3,N
2i0)
=e(g
1^f
i3,U
2^a
i)
=e(g
1,g
2^u)^(f
i3・a
i)
=e(g
1,g
2)^(u・f
i3・a
i)
(右辺)=e(U
1,N
2i2)
=e(U
1,F
2i3^a
i)
=e(g
1^u,g
2^f
i3)^a
i
=e(g
1,g
2)^(u・f
i3・a
i)
となる。よって、取得した署名S
2が正しければ(左辺)=(右辺)が成り立つ。
【0048】
ここで、署名装置100のワンタイム鍵生成部120、メッセージ署名生成部130、ワンタイム署名生成部140をひとまとめとして署名生成手段150と考えてみる。鍵生成部110は非特許文献3の鍵生成と同じであり、署名生成手段150が非特許文献3と相違する。具体的には、署名装置100が内部でランダムに生成できるワンタイム検証鍵に対する署名S
2の生成に、検証鍵、メッセージ、署名、署名鍵のすべてが群要素であるがランダムメッセージ攻撃に対する安全性までしかない署名方式を利用し、メッセージMに対する署名S
1は選択メッセージ攻撃に対する安全性を有する群構造維持署名方式で生成している。このように2つの署名方式を組み合わせることで、検証鍵、メッセージ、署名、署名鍵のすべてが群要素であって、選択メッセージ攻撃に対する安全性を有する群構造維持署名方式を提供できる。
【0049】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0050】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0051】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0052】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0053】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0054】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。