(57)【特許請求の範囲】
【請求項１】
ps, qsを大きな素数とし、qs が(ps-1)を割り切れるものとし、gsをZps*における位数のqs の元とし、pr, qr, grが同様に定義され、上記Zqsからランダムに選ばれ、署名鍵xに対し、公開検証鍵ｙをgsx mod psとし、上記Zqrからランダムに選ばれ、復号鍵dに対し、公開暗号鍵eをgrd mod prとし、平文mに対する暗号文Cを(G,M)=(gru mod pr, Eks(m))とし、Ｃに対する署名をa=(c, z)=（H1(gsv‖C), v-cx mod qs)とし、K=H2(ew mod pr)とし、ｗをZqr から選ばれた乱数とし、H(・)を一方向性ハッシュ関数とし、gs, ps, qr, gr, ｙ,ｅが公開されてあり、Σ=(Ｃ, a)と、Gとmが入力され、
受信者端末でqr署名付き暗号文Σを(Ｃ, a)とその復号平文ｍとから、Σを任意の第三者が検証可能な署名に変換する方法であって、
gs, ps, gr, pr, y,eがメモリに記憶されてあり、
乱数生成器より乱数ｕをZqrから形成し、
Gとuとメモリからのprをべき乗剰余演算器に入力してGu mod prを計算し、
uとメモリからのgrとprをべき乗剰余演算器に入力してgru mod prを計算し、
Gとメモリからのdとprをべき乗剰余演算器に入力してW=Gd mod prを計算し、
GとWとGu mod prとgru mod prとmをハッシュ器に入力してi=H3(G‖W‖Gu mod pr‖gru mod pr‖m)を計算し、
uとiとメモリからのqrを剰余乗算・減算器に入力してj= u-idmod qrを計算し、
(Σ, W, i, j)を変換された署名として出力することを特徴とする署名付き暗号文変換方法。
【請求項２】
ps,qsを大きな素数とし、qs が(ps-1)を割り切れるものとし、gsをZps*における位数qsの元とし、pr，qg，ｇrが同様に定義され、上記Zqsからランダムに選ばれ、署名鍵xに対し、公開検証鍵ｙをｇsxmod psとし、上記Zqrから選ばれ、復号鍵dに対し、公開暗号鍵eをgrdmod prとし、上記gs, ps, gr, qr, y,eが公開され平文ｍに対する暗号文をC=(G, M)=(grumod pr, Eks(m))とし、Ｃに対する署名をa=(c, z)=（H1(gsv‖C), v-cxmod qs）とし、K=H2(ewmod pr)とし、ｗをZqrから選ばれた乱数とし、H(・)を一方向性ハッシュ関数とし、Σ=(Ｃ, a)と、GとMが入力され、
送信者端末でqr署名付き暗号文Σ=(Ｃ, a)を任意の第三者が検証可能な署名に変換する方法であって、
gs, ps, gr, pr, y,eがメモリに記憶されてあり、
乱数生成器より乱数vをZqr から形成し、
vとメモリからのpr,eをべき乗剰余演算器に入力してｅvmod prを計算し、
vとメモリからのgr prをべき乗剰余演算器に入力してgrvmod prを計算し、
wとメモリからのeとprをべき乗剰余演算器に入力してW=ewmod prを計算し、
GとWとevmod prとgrv mod prとmをハッシュ器に入力してi=H3(G‖W‖evmod pr‖grvmod pr‖m)を計算し、
vとiとwとメモリからのqrを剰余乗算・減算器に入力してj=u-iwmod qrを計算し、
(Σ,W,i,j)を変換された署名として出力することを特徴とする署名付き暗号文変換方法。
【請求項３】
請求項１に記載の変換方法により変換された署名文（Σ,W,i,j)を検証者端末で検証する方法であって、
gs, ps, gr, pr, y,eがメモリに記憶されてあり、
受信したWをハッシュ器に入力してK=H2 (W)を計算してセッション鍵Kを生成し、
そのセッション鍵Kと受信したΣ中のCとを復号器に入力してm=DKs (C)を計算して暗号文Ｃを復号した平文ｍを作り、
暗号文C中のGと、受信したWとjとiとメモリからのprとをべき乗剰余演算器に入力してGjWimod prを計算し、
jとiとメモリからのgr,e,prとをべき乗剰余演算器に入力してgrjeimod prを計算し、
G，W，GjWimod pr，gjeimod pr，mをハッシュ器に入力してH3(G‖W‖GjWimod pr‖gjeimod pr‖m)を計算し、
この計算結果がiと一致するかを比較器により検証し、一致すれば署名を正しいものとすることを特徴とする署名検証方法。
【請求項４】
請求項２に記載の変換方法により変換された署名文（Σ,W,i,j)を検証者端末で検証する方法であって、
gs, gr, ps, pr, y,eがメモリに記憶されてあり、
Wをハッシュ器に入力してK=H2 (W)を計算してセッション鍵Kを生成し、
セッション鍵Kと受信Σ中のCを復号器に入力してm=DKs (C)を計算して暗号文Ｃを復号して平文ｍを作り、
j，iと暗号文C中のGとメモリからのprをべき乗剰余演算器に入力してgrjGimod prを計算し、
j，i，Wとメモリからe，prとをべき乗剰余演算器に入力してejWimod prを計算し、
G，W，grjGimod pr，ejwi mod pr，mをハッシュ器に入力してH3(G‖W‖grjGimod pr‖ejwi mod pr‖m)を計算し、
この計算結果がiと一致するかを比較器で検証し、一致すれば署名を正しいものとすることを特徴とする署名検証方法。
【請求項５】
暗号文Ｃの署名a=(c, z)と、メモリからgs，y，psとをべき乗剰余演算器に入力してV=gszycmod psを計算し、
その計算結果VとCとをハッシュ器に入力してH2(V‖C)を計算し、その計算結果H2(V‖C)がｃと一致するかを比較器で検証し、この一致も成立した時Cに対する署名が正しいものとすることを特徴とする請求項３又は４記載の署名検証方法。
【請求項６】
p, qを大きな素数、q が(p-1)を割り切れるものとし、ｇをZpkにおける位数のqの元とし、Ｈ（・）を一方向性ハッシュ関数とし、Zqからランダムに選ばれた署名鍵xに対し、公開検証鍵ｙをgxmod pとし、Zqからランダムに選ばれた復号鍵dに対し、公開暗号鍵eをgdmod pとし、Zqからランダムに選ばれた乱数ｗに対し、Ｗをew mod pとし、セッション鍵をH1（W）とし、Ｖ=ｇaｙb mod pとし、平文mに対する暗号文をC=EKs(m)とし、Cに対する署名を(a,b)=(w-bx mod q, H2(X‖C)(XはV,W,m,K,W‖K, W‖mの何れか)とし、
g，y，p，q，eが公開されてあり、受信者端末で署名付き暗号文Σ=(C,a,ｂ)その復号平文ｍとVとが入力され、これらから、Σを任意の第三者が検証可能な署名に変換する方法であって、
上記g，y，p，q，dがメモリに記憶されてあり、
乱数ｕをZqから乱数生成器で生成し、
uとVと、メモリからpをべき乗剰余演算器に入力してVumod pを計算し、
uとメモリからg，pをべき乗剰余演算器に入力してgumod pを計算し、
Vとメモリからd，pをべき乗剰余演算器に入力してW=Vdmod pを計算し、
Ｗ，Vumod p，gumod p，ｍをハッシュ器に入力して i=H3(W‖Vumod p‖gu mod p‖m)を計算し、
u，iとメモリからd，qを剰余乗算・減算器に入力してj=u-idmod qを計算し、
(Σ,W,i,ｊ)を変換された署名として出力することを特徴とする署名付き暗号文変換  方法。
【請求項７】
p, qを大きな素数、q が(p-1)を割り切れるものとし、qをZptにおける位数のqの元とし、H(・)を一方向性ハッシュ関数とし、Zqからランダムに選ばれた署名鍵xに対し、公開検証鍵ｙをgxmod psとし、Zqからランダムに選ばれた復号鍵dに対し、公開暗号鍵eをgdmod pとし、平文mに対する暗号文をC= EKs(m)とし、ｗをZqから選ばれた乱数とし、Ｗ=ew mod pとし、セッション鍵KをH1(W)とし、Ｃに対する署名を(a,b)=(w-bxmod q, H2(X‖C)(XはV,W,m,K,W‖K, W‖mの何れか)とし、上記q，p，g，y，eが公開されてあり、Σ=(C,a,b)，mが入力され、これらから送信者端末で署名付き暗号文Σ=(C,a,b)を任意の第三者が検証可能な署名に変換する方法であって、
q，p，g，e，xがメモリに記憶されてあり、
上記a，bとメモリからx，qを剰余乗算・加算器に入力してw=a+bxmod qを計算し、
そのｗとメモリからe，pをべき乗剰余演算器に入力してＷ=ewmod pを計算し、
乱数vをZqから乱数生成器で生成し、
ｖとメモリからｅ，ｐをべき乗剰余演算器に入力してevmod pを計算し、
ｖとメモリからｇ，ｐをべき乗剰余演算器に入力してgvmod pを計算し、
Ｗ，evmod p，gvmod p，ｍをハッシュ器に入力して i=H3(W‖evmod p‖gvmod p‖m)を計算し、
ｕ，ｉ，ｗとメモリからｑを剰余乗算・減算器に入力してj=u-iwmod qを計算し、
(Σ,W,i,j)を変換された署名として出力することを特徴とする署名付き暗号文変換方法。
【請求項８】
請求項６に記載の変換方法により変換された署名文（Σ,W,i,j)を  検証者端末で検証する方法であって、g，p，y，eがメモリに記憶されてあり、
Wをハッシュ器に入力してK=H1(W)を計算してセッション鍵Kを生成し、
そのセッション鍵Kと暗号文Cを復号器に入力してm=DKs (C)を計算して暗号文Ｃを復号して平文ｍを作り、
a，bとメモリからg，y，pをべき乗剰余演算器に入力してV=gaybmod pを計算し、
その計算結果Vとj，i，Wとメモリからpとをべき乗剰余演算器に入力してVjWi mod pを計算し、
j，iとメモリからg，e，pとをべき乗剰余演算器に入力してgjeimod pを計算し、
W，VjWimod p，gjeimod p，ｍをハッシュ器に入力して H3(W‖VjWi mod p‖gjeimod p‖m)を計算し、
この計算結果がiと一致するかを比較器で検証し、一致すれば署名を正しいものとすることを特徴とする署名検証方法。
【請求項９】
請求項７に記載の変換方法により変換された署名文（Σ,W,i,j)を検証者端末で検証する方法であって、
g，p，y，eがメモリに記憶されてあり、
Wをハッシュ器に入力してK=H1(W)を計算してセッション鍵Kを生成し、
そのセッション鍵KとΣ中の暗号文Cを復号器に入力してm=DKs(C)を計算して暗号文Ｃを復号して平文ｍを作り、
a，bとメモリからg，y，pをべき乗剰余演算器に入力してV=gaybmod pを計算し、
その計算結果Vとｊ，ｉと、メモリからｇ，ｐとをべき乗剰余演算器に入力してgj Vimod pを計算し、
j，i，Wとメモリからe，pとをべき乗剰余演算器に入力してejWimod pを計算し、
W，gjVimod p，ejWimod p，mをハッシュ器に入力して H3(W‖gjVi mod p‖ejWimod p‖m)を計算し、
この計算結果がiと一致するかを比較器で検証し、一致すれば署名を正しいものとすることを特徴とする署名検証方法。
【請求項１０】
p,qを、qが(p-1)を割り切る大きな素数とし、gをZp*における位数qの元とし、H(・)を一方向性ハッシュ関数とし、Zqから選ばれた署名鍵ｘに対し公開署名検証鍵y=gxmod pとし、Zqから選ばれた復号鍵ｄに対し公開暗号鍵ｅ=gd  mod pとし、Zqから選ばれた乱数w, W=ewmod pとし、セッション鍵K=H1(W)とし、平文mを暗号文C=EKs(m) とし、V=gwmod p,b=H2(X‖C)(XはV, W, m, K, W‖K, W‖mの何れか)とし、a=w-bxmod qとし、署名付き暗号文Σ=(C,a,b)を第三者が検証可能な署名に変換する受信者端末であって、
p,g,y,dを記憶するメモリと、
a,b,g,y,pが入力され、gaybmod pを計算してその結果Vを出力する第１べき乗剰余演算器と、その計算結果V,d,pが入力され、Vdmod pを計算してその結果Wを出力する第2べき乗剰余演算器と、
Zqに属する乱数uを生成する乱数生成器と、
上記計算結果V,u,pが入力され、Vumod p を計算してその結果を出力する第３べき乗剰余演算器と、
g,u,ｐが入力され、gumod pを計算してその結果を出力する第4べき乗剰余演算器と、
m,W,Vumod p, gumod pが入力され、H3(W‖Vumod p‖gumod p‖m)を計算してその結果iを出力するハッシュ器と、
u,i,d,pが入力され、u-idmod pを計算して、その結果ｊを出力する乗余剰算・減算器と、
(Σ,W,i,j)を変換された署名として出力する送信器と
を具備する受信者端末。
【請求項１１】
A(+)BをAとBの排他的論理和演算とし、
上記平文mはハッシュ器及び排他的論理和演算器によりm'＝m(+)(H5(H4(m))‖H4(m)に変換され、上記暗号文Cは上記変換された平文m'が暗号化された文C=EKS(m')であり、上記署名付き暗号文はΣ＝（Ｃ，ａ）であることを特徴とする請求項１０記載の受信者端末。
【請求項１２】
p,qを、qが(p-1)を割り切る大きな素数とし、gをZp*における位数qの元とし、H(・)を一方向性ハッシュ関数とし、Zqから選ばれた署名鍵ｘ, Zqから選ばれた復号鍵ｄに対し公開暗号鍵e=gdmod pとし、Zqから選ばれた乱数w,
W=ewmod p,セッション鍵K=H1(W)、平文mの暗号文C=EKs(m) とし、V=gwmod p, b=H2(X‖C)(XはV, W, m, K, W‖K, W‖mの何れか)とし、a=w-bx mod q署名付き暗号文Σ=(C, a, b)を第三者が検証可能な署名に変換する送信者端末であって、
q,p,g,x,eを記憶するメモリと、
a,b,x,q,を入力して、a+bx mod qを計算してその結果wを出力する乗余剰算・減算器と、
その計算結果w,e,pを入力して、ewmod pを計算してWを出力する第１べき乗剰余演算器とWを入力して、H1(W)を計算してその結果セッション鍵Kを出力する第1ハッシュ器と、Cと上記計算結果のKを出力して、復号関数DKs（C）を計算してその結果として復号平文mを出力する復号器と、
Ｚqに属する乱数uを生成して出力する乱数生成器と、
e,v,pを入力して、evmod pを計算し、その結果を出力する第２べき乗剰余演算器と、
v,g,pを入力して、gvmod p を計算し、その結果を出力する第３べき乗剰余演算器と、
計算したW、復号した平文m, evmod p及び gvmod pの各計算結果を入力して、H3(M‖evmod p‖gvmod p‖m)を計算してその結果iを出力する第2ハッシュ器と、
i,v,計算結果W,qを入力して、v-iwmod q を計算してその結果ｊを出力する乗余剰算・減算器と、
Σ,M,i,jを変換された署名として出力する送信器と
を具備する送信者端末。
【請求項１３】
A(+)BをAとBの排他的論理和演算とし、
上記平文mはハッシュ器及び排他的論理和演算器によりm'＝m(+)(H5(H4(m))‖H4(m)に変換され、上記暗号文Cは上記変換された平文m'が暗号化された文C=EKS(m')であり、上記署名付き暗号文はΣ＝（Ｃ，ａ）であり、
上記復号器は上記復号関数DKS(C)を計算してその結果として変換平文m'を得、m'をBがH4(・)の出力ビット数と同じになるようにm'＝A‖BとしてAとBに分割し、H5(B)(+)A＝mを演算して復号平文mを出力するものであることを特徴とする請求項１２記載の送信者端末。
【請求項１４】
p,qを、qが(p-1)を割り切る大きな素数とし、gをZp*における位数ｑの元とし、H(・)を一方向性ハッシュ関数とし、Zqから選ばれた署名鍵ｘに対し公開検証鍵y=gdmod pとし、Zqから選ばれた復号鍵dに対し公開暗号鍵e=gdmod pとし、暗号文C、その署名(a,b), 公開鍵W、(C,a,b)に対する署名(i,j)を入力して、署名(i,j)の正当性を検証する検証者端末であって、
g,p,y,eを記憶したメモリと、
Wを入力して、H1(W)を計算し、その結果としてセッション鍵Kを出力する第１ハッシュ器と、
K,Cを入力して、DKs(C)を計算して，その結果として復号平文mを出力する復号器と、
a,b,g,y,p を入力して、gaybmod p を計算し、その結果Vを出力する第１べき乗剰余演算器と、
W, V, i, j, pを入力して、VjWimod p を計算し、その結果を出力する第２べき乗剰余演算器と、
g,e,i,j,p を入力して、gjeimod p を計算し、その結果を出力する第３べき乗剰余演算器と、
m,W,VjWi mod p及び gjeimod pの各計算結果を入力して、H3(W‖VjWimod p‖gjeimod p‖m)を計算してその結果を出力する第4べき乗剰余演算器と、
上記第４べき乗剰余演算器の計算結果とｉとが一致するかを検証する比較器とを具備する検証者端末。
【請求項１５】
p,qを、qが(p-1)を割り切る大きな素数とし、gをZp*における位数ｑの元とし、H(・)を一方向性ハッシュ関数とし、Ｚqから選ばれた署名鍵ｘに対し公開検証鍵y＝gdmod pとし、Ｚqから選ばれた復号鍵dに対し公開暗号鍵e=gd  mod pとし、暗号文C、その署名(a, b), 公開鍵情報W,(C, a, b)に対する署名(i,j)を入力して、署名(i,j)の正当性を検証する検証者端末であって、
g,p,y,eを記憶したメモリと、
Wを入力して、H1(W) を計算し、その結果としてセッション鍵Kを出力する第１ハッシュ器と、
D、Cを入力して、DKs(C)を計算して，その結果として復号平文mを出力する復号器と、
a, b, g, y, p を入力して、gaybmod p を計算し、その結果Vを出力する第１べき乗剰余演算器と、
W,e,i,j,pを入力して、ejWimod p を計算し、その結果を出力する第２べき乗剰余演算器と、
g,V,i,j,pを入力して、gjVimod p を計算し、その結果を出力する第３べき乗剰余演算器と、
m,W,ejWimod p及び gjVimod pの各計算結果を入力して、H3(W‖ejWimod p‖gjVi mod p‖m)を計算してその結果を出力する第４べき乗剰余演算器と、
上記第４べき乗剰余演算器の計算結果とiとが一致するかを検証する比較器とを具備する検証者端末。
【請求項１６】
p,qを、qが(p-1)を割り切る大きな素数とし、gをZp*における位数qの元とし、H(・)を一方向性ハッシュ関数とし、A(+)BをAとBの排他的論理和演算とし、Zqから選ばれた署名鍵ｘに対し公開検証鍵y＝gdmod pとし、Zqから選ばれた復号鍵ｄに対し公開暗号鍵e＝gdmod pとし、暗号文Cと対する署名を(a,b)とし、公開鍵W,(C,a)に対する署名(i,j)を入力して、署名(i,j) 、(a,b)の正当性を検証する検証者端末であって、
g,p,y,eを記憶したメモリと、
Wを入力して、H1(W)を計算し、その結果としてセッション鍵Kを出力する第１ハッシュ器と、
K，Cを入力して、DKs（C）を計算して、その結果として変換復号平文m'を得、m'をBがH4(・)の出力ビット数と同じになるようにm'＝A‖BとしてAとBに分割し、H5(B)(+)A＝mを計算して平文mを出力する復号器と、
Cを入力してH2(C)を計算して、その結果bを出力する第２ハッシュ器と、
a,b,g,y,pを入力して、gaybmod pを計算し、その結果Vを出力する第１べき乗剰余演算器と、
W,V,i,j,pを入力して、VjWimod p を計算し、その結果を出力する第２べき乗剰余演算器と、
g,e,i,j,pを入力して、gjei mod p を計算し、その結果を出力する第３べき乗剰余演算器と、
m,W, VjWimod p 及びgjei mod pの各計算結果を入力して、H3(W‖VjWi mod p‖gjei mod p‖m)を計算してその結果を出力する第４べき乗剰余演算器と、
上記第４べき乗剰余演算器の計算結果とｉとが一致するかを検証する第１比較器と、
mを入力してH4(m)を計算する第３ハッシュ器と、
第３ハッシュ器の計算結果と上記Bとが一致するかを検証する第２比較器と、
を具備する検証者端末。
【請求項１７】
p,qを、qが(p-1)を割り切る大きな素数とし、gをZp*における位数ｑの元とし、H(・)を一方向性ハッシュ関数とし、A(+)BをAとBの排他的論理和演算とし、Zqから選ばれた署名鍵ｘに対し公開検証鍵y=gdmod pとし、Zqから選ばれた復号鍵dに対し公開暗号鍵e=gdmod pとし、暗号文Cに対する署名を(a,b)とし、公開鍵情報W、(C,a)に対する署名(i,j)を入力して、署名(a,b)(i,j)の正当性を検証する検証者端末であって、
g,p,y,eを記憶したメモリと、
Wを入力して、H1(W)を計算し、その結果としてセッション鍵Kを出力する第１ハッシュ器と、
D,Cを入力して、DKs(C)を計算して，その結果として変換復号平文m'を得、m'をBがH4(・)の出力ビット数と同じになるようにm'＝A‖BとしてAとBに分割し、H5(B)(+)A＝mを計算して平文mを出力する復号器と、
Cを入力し、H2(C)を計算し、計算結果bを出力する第２ハッシュ器と、
a,b,g,y,p を入力して、gaybmod p を計算し、その結果Vを出力する第１べき乗剰余演算器と、
W, e, i, j, pを入力して、ejWimod p を計算し、その結果を出力する第２べき乗剰余演算器と、
g,V,i,j,p を入力して、gjVimod p を計算し、その結果を出力する第３べき乗剰余演算器と、
m,W,ejWi mod p及び gjVimod pの各計算結果を入力して、H3(W‖ejWimod p‖gjVimod p‖m)を計算してその結果を出力する第４べき乗剰余演算器と、
上記第４べき乗剰余演算器の計算結果とｉとが一致するかを検証する比較器と、
mを入力してH4(m)を計算する第３ハッシュ器と、
第３ハッシュ器の計算結果とBとが一致するかを検証する第２比較器と、
を具備する検証者端末。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電気通信システムで送信者の身元を確認すると同時に送信内容の秘匿化を行う暗号通信方法、特にその署名付き暗号文を任意の第三者が検証可能な暗号文に変換する方法及びその装置に関する。
【０００２】
【従来の技術】
送信者と受信者が、盗聴、改ざん、成りすましの恐れのある通信網を介して、安全に通信を行う方法として、任意のディジタル署名方法と公開鍵暗号化方法とを組み合わせる方法がある。
送信者USの署名鍵、署名検証鍵をそれぞれx，yとし、受信者URの暗号化鍵、復号鍵をそれぞれe,dとする。yおよびｅは公開されており、送信者US，受信者URはこれらを保持しているものとする。
【０００３】
送信する平文をmとし、Eを暗号化関数とし、Ee(m)はメッセージmを暗号化鍵eで暗号化した暗号文を表し、Dを暗号化関数Eに対応する復号関数とし、Dd(c)は暗号文ｃを復号鍵ｄで復号して得られる平文を表す。すなわち、m=Dd(Ee(m))が成り立つ。Sを署名関数とし、Sx(m)はメッセージｍに対する署名鍵ｘによる署名を表し、Vを検証関数とし、Vy(a,m)を署名‐メッセージ対(a,m)を署名検証鍵ｙで検証した結果を表す。検証結果は1または0のいずれかであり、a=Sx(m)のとき、またそのときに限りVy(a,m)=1となるものとする。
【０００４】
平文ｍを送信する場合、送信者USはまず平文ｍを暗号鍵ｅで暗号化して暗号文C＝Ee(m)を得る。次に暗号文Ｃに対する署名ａ＝Sx(C)を署名鍵ｘを用いて作成する。送信文ΣはΣ=(C,a)であり、送信者USは送信文Σを受信者URへ送信する。
受信者ＵRは暗号文Ｃと署名ａを受信し、まず、署名検証鍵ｙを用いてＶy（ａ，Ｃ）が１となることを検証する。１とならない場合は、受信したＣ，ａを不正データとみなして破棄する。検証結果が１であれば復号鍵ｄを用いて、ｍ＝Ｄd（Ｃ）を計算し、平文ｍを得る。
【０００５】
署名、暗号方式にそれぞれSchnorr署名とEl Gamal暗号を用いた場合について具体的な方法を説明する。ps、qsを大きな素数とし、qsが(ps-1)を割り切るものとする。gsをZps*（Zps*は整数1,2,…，psの群である）における位数qsの元とする。pr,qr,grも同様に定義する（添字psはpsを表す、以下同様）。H1(・)、H2(・)をそれぞれ一方向性ハッシュ関数とし、二項演算子A‖BはAとBを結合した値を表すps,qs,gs,pr,qr,gr は公開される。
送信者ＵSはSchnorr署名の署名鍵ｘをZqs（Zqsは整数0,1,2,…，qs-1の群である）からランダムに選び、署名検証鍵yをy＝gsxmod psの計算により求めて、このｙを公開する。受信者ＵRはElGamal暗号の復号鍵ｄをＺqrからランダムに選び、暗号鍵e=grdmod pr を計算してｅを公開する。
【０００６】
ElGamal暗号による暗号文ＣはC=(G,M)=(grumod pr,EKs (m)）であり、このＣに対するSchnorr署名ａはa=(c,z)=(H1(gsv‖C),v-cxmod qs）である。ここで、ｕ，ｖはそれぞれZqrおよびZqsからランダムに選ばれた乱数、Ｅsは例えばＤＥＳのような、対称鍵暗号の暗号化関数、ＫはK=H2(ewmod pr)である。
受信者は、c=H1(gsxycmod ps‖C)が成り立つことを確認し、次に、K=H2(Gdmod pr), m=DKs (M)を計算して平文ｍを得る。ここで、ＤsはＥsに対応する対称鍵暗号の復号関数とする。
【０００７】
上記従来技術によれば、ディジタル署名の性質により、Ｖy(ａ，Ｃ)＝１となる署名ａを作成できるのは検証鍵ｙに対応した署名鍵ｘを保持している送信者のみであり、従って、受信者はＣの作成者を認証することができる。また、Ｃの作成者は署名の事実を否認することができない。
【０００８】
【発明が解決しようとする課題】
上記従来法によれば、送信者と受信者以外の第三者は、どのようなメッセージｍに対する署名であるかを確認することができない。受信者が第三者的な検証者に対してｍを公開したとしても、ｍが正しくＣから復号されたものであるかどうか検証者には確認できない。例えば送信者が正しいものを送信したと主張しても、それが正しいものかを第三者に検証してもらうことができない、同様に受信者が受信文を不正のものだと主張した場合に、その主張が正しいか否か第三者に検証してもらうことができない。
【０００９】
この発明は、署名付き暗号化方法で作成された特定の検証者のみが検証可能な署名を、任意の第三者が検証可能な通常のディジタル署名に変換する方法、その検証方法、及びこれらの装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
この発明によれば送信された暗号文Ｃを復号するためのセッション鍵Ｋ又はこれと対応する鍵情報Ｗを公開し、Ｋが正しいセッション鍵であることを証明する非対話ゼロ知識証明を送信文書に添付し、これらを、暗号文Ｃを鍵Ｋで復号した文書ｍに対する署名とする。
受信者端末が上記変換を行う場合、セッション鍵Ｋが、受信者端末の暗号化鍵に対応する復号鍵と正しい関係にあることを証明する非対話ゼロ知識証明を暗号文Ｃに添付する。
【００１１】
送信者端末が上記変換を行う場合、セッション鍵Ｋが、送信者端末が暗号化に用いた乱数と正しい関係にあることを証明する非対話ゼロ知識証明を暗号文Ｃに添付する。
検証者端末は、非対話ゼロ知識証明が正しいことおよび、送信された暗号文に対する署名が正しいことを検証する。
上記非対話ゼロ知識証明によって、受信者あるいは送信者は、公開されたセッション鍵が送信された署名付き暗号文に対する正しいセッション鍵であることを任意の第三者に納得させることができる。任意の第三者の検証者端末は、そのセッション鍵を用いて平文ｍを得ることができるため、必要に応じて付与された署名が文書ｍに対するものであることを検証することができる。
【発明の実施の形態】
実施形態１
Ｅsを秘密鍵暗号関数とし、EKs (m)は鍵Ｋで平文ｍを暗号化してできる暗号文を表す。同様に、ＤsをＥsに対応する秘密鍵復号関数とし、DKs (Ｃ)は鍵Ｋで暗号文Ｃを復号して得られる平文を表す。例えば、関数Ｅ，Ｄには、Triple-DESやIDEA、等のブロック暗号のＣＢＣモードやＯＦＢモードにおける暗号化関数、復号関数を用いてよい。もしくは、メッセージｍが短い場合には、関数Ｅ，Ｄとして、それぞれＫとｍ、ＫとＣの排他的論理和やmod pでの群演算を用いても良い。
【００１２】
H1(・)、H2(・)を一方向性ハッシュ関数とし、二項演算子ａ‖ｂはａとｂを結合した値を表す。ハッシュ関数には、例えば、SHA-1を用いてもよい。
ps、qsを大きな素数とし、qsが(ps-1)を割り切るものとする。gsをZps*における位数qsの元とする。pr,qr,grも同様に定義する。
この実施形態１は図１に示すように送信者端末100から公衆通信網200を介して受信者端末300に受信された署名付き暗号文を第三者が検証可能な通常のディジタル署名に変換して公衆通信網200を介して第三者の検証者端末400へ送信し、検証者端末400で署名の検証と復号とができるようにした場合である。
【００１３】
送信者端末100ではSchnorr署名の署名鍵ｘをZqsからランダムに選び、署名検証鍵ｙ＝gsx mod psを計算してｙを公開する。受信者端末300はElGamal暗号の復号鍵ｄをZqrからランダムに選び、暗号鍵ｅ＝grdmod prを計算してｅを公開する。
ElGamal暗号による暗号文ＣはC=(G, M)=(grumod pr, EKs (m))であり、このＣに対するSchnorr署名ａはa=(ｃ, z)=(H1(gsv‖C), v-cx mod qs)である。ここで，ｕ，ｖはそれぞれZqrおよびZqsからランダムに選ばれた乱数、ＫはK=H2(ewmod pr)である。送信者端末100はこれら暗号文Ｃと署名を生成して、送信文(C,a)を受信者端末300へ送信する。
【００１４】
受信者端末300は受信文(C,a)についてc=H1(gsxycmod ps‖C)が成り立つことを確認し、次に、W=Gd mod pr, K=H2(W), m=DKs(M)を計算して平文ｍを得る。
上記のElGamal暗号とSchnorr署名による署名付き暗号文Σ＝（Ｃ，ａ）を受信者端末300において任意の第三者が検証可能な署名に変換する方法および、その署名の検証方法について説明する。
図２に受信者端末300中のこの署名変換に必要とする部分のみを示す。この部分には変換したい署名付き暗号文Σ=(C,a),C=(G,M)中のＧと、その復号平文ｍとが入力される。乱数生成器305からZqrに属する乱数ｕを生成し、乱数ｕと、変換したい暗号文C=(G,M)中のGと、メモリ302からのprとをべき乗剰余演算器306に入力して、Gumod prを計算し、またｕとメモリ302からのgr, prとをべき乗剰余演算器307に入力してgru mod prを計算し、前記Ｇとメモリ302からのｄ，ｐrとをべき乗剰余演算器308に入力してW=Gd mod prを計算し、これらべき乗剰余演算器306,307,308の各計算結果と、Ｇと復号された平文ｍとをハッシュ器309に入力して、i=H3(G‖W‖Gumod pr‖grumod pr‖m)を計算する。その計算結果ｉと、乱数ｕと、メモリ302よりのqr,dとを剰余乗算・減算器311に入力してj=u-idmod qrを計算する。前記変換したい署名付き暗号文Σと計算したWとiとjを送信文（Σ,W,i,j）として送信器312から検証者端末400へ送信する。
【００１５】
検証者端末400は任意の第三者の端末であるから、Ｗは公開されたことになり、一方向性ハッシュ関数H1(・)は公開されているから、第三者はK=H1(W)を演算してセッション鍵Kを入手できる。つまりセッション鍵Ｋが公開されたことと実質的に等しくなる。従ってＷを公開鍵情報と記す。また(Ｗ,i,j)はKが正しいセッション鍵Kであることを証明する非対話ゼロ知識証明である。
なお図２中の各部は制御部313により順次又は並列的にその処理を行うようにされる。
【００１６】
検証者端末400では受信者端末300から送信された変換された署名付き暗号文(Σ,W,i,j）を受信器401で受信し、その受信したＷをハッシュ器402に入力して、K=H2(W)を計算してセッション鍵Ｋを出力し、そのＫと受信したＭを復号器403に入力して、ＫでＭに対し復号関数m=DKs(M)を計算して平文ｍを出力する。受信したa=(Ｃ,z)とメモリ404からのgs,ps,y をべき乗剰余演算器405に入力して、V=gszycmod psを計算してVを出力し、そのVと受信したC=(M,G)をハッシュ器406に入力してc=H1(V‖C)を計算し、その計算結果のｃと受信したａ中のｃとが一致するか否かを比較器407で調べる。
【００１７】
更に受信したi,jと、メモリ404からのgr,pr,eとをべき乗剰余演算器408に入力してgrjeimod prを計算し、また受信したC=(G,W)のGと、Wと、ａ＝(C,z)と、メモリ404からのprとをべき乗剰余演算器409に入力してGjWimod prを計算する。受信したGとWと、復号器403の出力ｍと、べき乗剰余演算器408,409の各出力とをハッシュ器411に入力してH3(G‖W‖GjWimod pr‖grjeimod pr‖m)を演算して、この演算結果と受信したｉとを比較器412で比較し、一致するか否かを調べる。比較器407及び412の各比較結果が共に一致であれば署名は正しいものとし、復号器403の出力ｍを正しい平文と認めることができる。比較器407,412の比較でいずれかでも不一致であればこの受信した暗号文Ｃに対する署名を不正とすることができる。
【００１８】
つまり比較器412においてはH3(・)の計算がされるべき変数とｉの式の中の同様の変数とを比較すると、前者のGjWimod prと後者のGumod prとが等しく、かつ、前者のgrjeimod prと後者のgrumod prとが等しければ比較器412は両入力が一致していると判断することになる。GjWimod pr ・j=u-idmod qrとW=Gdmod prを代入するとG(u-id)Gidmod pr=Gumod prとなり、また同様にgrjeimod prにj=u-idmod qrとe=grd mod prを代入するとgru mod prとなる。従って、比較器４１２が一致すれば復号鍵ｄを明かすことなく、その復号鍵ｄを持つものが（W,i,j）を作ったものであることになる。
【００１９】
このことは受信文中の非対話ゼロ知識証明（W,i,j）は、関係式loggre=logGWであること、e=grdmod pr であり、W＝Gdmod pr であるから、前記対数の関係式の両辺はともにｄであることを証明しており、この検証式が満足された場合、復号鍵Kを作る基になるW（＝Gd mod pr）が、Gと復号鍵ｄ＝loggre とから正しく作成されている事が保障される。この非対話ゼロ知識証明についての詳細はたとえばD.L.Chaan & T.R.Polersen. "Wallet Database with observers" pp.89-105, CRYPTO '92, LNCS740, Springer- Verlag, 1993を参照されている。ある署名aに対して、このように上記検証式を満足する（W,i,j）を作成できるのは秘密の復号鍵dを知る正当な受信者のみである。
【００２０】
なお図3中の各部は制御部413により順次または並列的にその処理を行われるようにされる。
実施形態2
実施形態1において説明したElGamal 暗号とSchnorr署名による署名付き暗号文Σを、送信者端末100で任意の第三者が検証可能な署名付き暗号文に変換する方法およびその署名検証方法を説明する。
図4に送信者端末100における署名付き暗号文Σ＝(C,a), C=(G,M)を変換する部分のみを示す。メモリ102からその暗号文Cの暗号化に用いた乱数wと、暗号鍵eと、prをべき乗剰余演算器103に入力して、W=ewmod prを計算してWを出力する。乱数生成器104によりZqrに属する乱数vを生成し、そのvと、メモリ102からのgr,prをべき乗剰余演算器105に入力してgrvmod prを計算して出力し、vとメモリ102のe, pr をべき乗剰余演算器106に入力してevmod prを計算して出力する。
【００２１】
べき乗剰余演算器103出力Vをハッシュ器107に入力して、K=H2(W)を計算してセッション鍵Kを生成し、そのKと暗号文C中のMを復号器108に入力して復号関数m=Dks (M)を計算して復号した平文mを出力する。
暗号文C中のＧと復号器108よりの平文mと、べき乗剰余演算器103,105,106の各計算結果をハッシュ器109に入力して
i=H3(G‖W‖grvmod pr‖evmod pr‖m)                      (1)
を計算してiを出力する。またこのiと、乱数vと、メモリ102からのw, qrと剰余乗算・減算器111に入力して
j=v-iwmod qr                                             (2)
を計算してjを出力する。変換されるべき署名付き暗号文Σ=(C,a)とハッシュ器109の出力iと、剰余乗算・減算器111の出力jべき乗剰余演算器103の出力Wを変換された署名付き暗号文（Σ,W,i,j）として送信器112から検証者端末400へ送信する。
【００２２】
ここで（W,i,j）は、Cを復号するためのセッション鍵Kが正しい事を証明する非対話ゼロ知識証明であるなお図４中の各部は制御部113により順次あるいは並列的にその処理を行うようにされる。
次に検証者端末400での署名検証処理を図5を参照して説明する。図5中の図3と対応する部分に同一符号を付けては受信器401で受信された（Σ,W,i,j）中のWを用いてハッシュ器402によりK=H2 (W)の計算によりセッション鍵を求め、その鍵Kにより暗号文C中の大文字Mが復号器403でm=DKs(M)として復号される。また受信した署名a=(c,ｚ)についてべき乗剰余演算器405でV=gszycmod ps
が計算され、さらにハッシュ器406でH1(V‖C)が計算され、このH1(V‖C)と受信したa中のcと一致するか否かの検証が比較器407で行われる。これらは図3に示した例と同様である。
【００２３】
この実施形態においては受信したi,j,Gと、メモリ404からのpr, grがべき乗剰余演算器421に入力され
grjGimod pr                                                (3)
が計算され、また受信したj,Wとメモリ404からのe,prが入力されて、
ejWimod pr                                                  (4)
が計算される。受信したG,Wと、復号した平文mとべき乗剰余演算器421及び422の各計算結果がハッシュ器423に入力されて
H3(G‖W‖grjGimod pr‖ejWimod pr‖m)                         (5)
が計算され、その計算結果と受信したiとが一致するか否かの検証が比較器424で行われる。
【００２４】
式(3)に式(2)及びG=grwの関係を代入すればgrvmod prとなり、同様に式(4)に式(2)及びW=ewの関係を代入すればevmod pr となる。つまり、これらの関係が成り立てば式(5)の計算結果は式(1)の計算結果と等しくなる。
このことは非対話ゼロ知識証明（W,i,j）が関係式loggG=logeWであることを証明しており、この検証式が満足された場合、復号鍵を作る基になるWがgと乱数wから正しく作成されていることが保証される。ある送信文Σに対して、このように上記検証式をい満足する(W,i,j)を作成できるのはWを知る正当な送信者のみである。
【００２５】
比較器407,424の何れかひとつでも不一致である場合はこの署名を不正とし、何れとも一致である場合にこの署名を正しい物とする。
実施形態３
この発明は公開鍵の一部を構成するパラメータp,q,gを署名、暗号に共通化し、また署名生成に用いる乱数と、暗号文生成に用いる乱数とを共通化して、計算時間と送信文長を低減しかつ第三者による署名検証を可能とした場合である。
まず前提となる署名付き暗号通信方法について説明する。
p,qを大きな素数とし、qが(p-1)を割り切る物とする。gをZp*における位数qの元とする。H1(・),H2(・)を一方向性ハッシュ関数とし、二項演算子A‖BはAとBを結合した値を表す。p,q,g及びハッシュ関数はシステム共通パラメータとして公開する。
【００２６】
送信者端末100は署名鍵xをZqからランダムに選び、署名検証鍵yをy=gxmod pと計算してyを公開する。受信者端末300は復号鍵dをZqからランダムに選び、暗号鍵e=gdmod p を計算してeを公開する。
平文mを送信する際に、送信者端末100は送信文Σを以下の手段で作成する。まず乱数wをZqからランダムに選びセッション鍵K=H1(ewmod p) を計算し平文mをEsでC=EKs(m)と暗号化して暗号文Cを得る。次に、V=gwmod p,b=H2(V‖C),a=w-bxmod qを順次計算して署名a、bを得る。送信文ΣはΣ=(C,a,b)とする。
【００２７】
この送信文Σを受信した受信者端末300は、以下に示す手段で受信した暗号文の検証及び復号を行う。まず、V=gaybmod pを計算し、b=H2(V‖C)が成り立つことを検証し、成り立たない場合は、受信文Σを破棄する。成り立つ場合は、K=H1((V)d mod p)を計算し、そのKを用いて、m=DKs(C)を計算して平文mを得る。
受信者端末300において、復号した署名付き暗号文Σを、第三者署名検証可能な暗号文に変換する処理例を、図6を参照して説明する。図6で図2と対応する部分に同一符号を付けてある。
【００２８】
前記変換しない文Σとその復号平文mが入力される。べき乗剰余演算器323でV=ga ybmod pが計算され、さらにべき乗剰余演算器324でW=Vdmod p が計算される。べき乗剰余演算器325でVu mod pを計算し、べき乗剰余演算器326でgumod pを計算する。復号平文m、べき乗剰余演算器324,325,326の各計算結果をハッシュ器327に入力して
i=H3(W‖Vumod p‖gumod p‖m) (6)
を計算する。さらに、剰余乗算・減算器328で
j=u-idmod q
を計算し、変換された署名付き暗号文(Σ,W,i,j)を送信器312より検証者端末400へ送信する。
【００２９】
次に検証者端末400での検証はたとえば図7に示すようにして行う、図7中、図3と対応する部分に同一符号を付けてある。受信器401に受信部(Σ,W,i,j)が受信されるとハッシュ器431でK=H1(W)が計算され、その鍵Kにより、Σ=(C,a,b)中のCに対し復号器403でm=Dks(C)が計算され平文mが出力される。べき乗剰余演算器432によりV=gayb mod pが計算され、そのVとCに対しハッシュ器433でH2(V‖C)が計算され、このH2(V‖C)とbとが比較器434で一致するか否かの検証がされる。
べき乗剰余演算器435でVjWi mod pが計算され、またべき乗剰余演算器436でgjei mod pが計算される。ハッシュ器437で
H3(W‖VjWi mod p‖gjei mod p‖m)                        (7)
が計算され、この計算結果とｊとが一致するか否かの検証が比較器438で行われる。比較器434、438の何れかで不一致が検出されると、この署名は不正と判断され、ともに一致すればこの署名は正しい物とされる。
【００３０】
なお、VjWi mod pに対し、jの式と、W=Vdの関係を代入すればVu mod pとなり、gjei mod pに、jの式とe=gdの関係を代入するとgu mod pとなりdを知る者によりWが正しく作られた場合は式(7)の計算値は式(6)の計算値と等しくなる。この場合も(W,i,j)がKが正しい鍵であることを証明する非対話ゼロ知識証明を構成している。
実施形態4
実施形態3で説明した署名付き暗号文Σを、送信者端末100で任意の第三者が検証可能な署名に変換する実施形態を以下に説明する。
【００３１】
図８に図４と対応する部分に同一符号を付けてある。変換されるべき文Σ=(C,a,b)が入力され剰余乗算・加算器121でw=a+bxmod qを計算し、べき乗剰余演算器122でW=ewmod pを計算し、さらにハッシュ器127でK=H1(W)を計算してセッション鍵Kを得る。復号器124でm=DKs(C) を計算して復号平文mを得る。
また、べき乗剰余演算器125でevmod pを計算し、べき乗剰余演算器126でgv mod p を計算する。平文mとべき乗剰余演算器122,125,126の各演算結果をハッシュ器127に入力して、
H3(W‖evmod p‖gvmod p‖m)                             (8)
を計算し剰余乗算・減算器128でj=v-iwmod qを計算する。文ΣとWと、iとjを変換された署名文(Σ,W,i,j)を送信器112で検証者端末400へ送信する。
【００３２】
検証者端末400で受信器401に受信された署名文(Σ,W,i,j)に対する検証は例えば図9に示すように行う。図9中で図7と対応する部分に同一符号を付けてある。
図7の場合と同様にまずハッシュ器431で鍵K=H1(W)を計算し、鍵Kで暗号文Cを復号器403で復号して平文mを得る。べき乗剰余演算器432でVを計算し、ハッシュ器433でH2(V‖C)を計算し、これとbとを比較器434で一致するかの検証を行う。この例ではべき乗剰余演算器441でejwimod pを計算し、べき乗剰余演算器442でgjVimod pを計算し、mと、Wと、べき乗剰余演算器441及び442の各計算結果とをハッシュ器443に入力して、
H3(W‖ejWimod p‖gjvimod p‖m)
を計算しこの計算結果とiとが一致するかの検証を比較器438で行う。比較器434,438の何れかが不一致であれば不正署名とし、両者が一致であれば正しい署名とする。
実施形態5
実施形態3においてb=H2(V‖C)の代わりにb=H2(K‖C), b=H2(W‖C)やb=H2(W‖C‖K)やb=H2(W‖C‖m)やb=H2(C‖m)としても良い。これらの場合において、受信者端末300での第三者検証可能な署名に変換するには実施形態3のそれ(図6)と全く同様にすれば良く、ただ検証者端末400における検証処理において図7中のハッシュ器433での演算を前記bの変更に応じてH2(K‖C), H2(W‖C),H2(W‖C‖K),H2(W‖C‖m),H2(C‖m)の対応するものに変更すれば良く送信者端末100での第三者検証可能な署名に変換するには実施形態4のそれ(図8)と全く同様にすれば良く、ただ検証者端末400における検証処理において、図9中のハッシュ器433での演算を前記bの変更に応じてH2(K‖C), H2(W‖C),H2(W‖C‖K),H2(W‖C‖m),H2(C‖m)の対応するものに変更すればよい。
【００３３】
実施形態1ないし5の何れにおいても、一方向性ハッシュ関数H3(・)の入力変数の一部として平文mを用いたが、mの代わりにCを用いても良く、また関数H3(・)の入力変数に任意の文字列、例えば、変換を行った時刻などを追加しても良い。
実施形態6
実施形態3と同様の方式で平文mを送信する際に送信者端末100においてmを例えば以下の手段で冗長化する。すなわちH4,H5をハッシュ関数とし、mをm'=m(+)(H5(H4(m))‖H4(m)に変換する。ここで、(+)はビットごとの排他的論理和を表す。つぎに、実施形態3と同様の手順でm'を暗号化して暗号文Cを得る。この例ではb=H2(C),a=w-bxmod qを計算して署名a,bを得る。送信文ΣはΣ=(C,a)とする。
【００３４】
この署名付き暗号文Σを、受信者端末300が、任意の第三者が検証可能な署名に変換する方法及び、その署名の検証方法について説明する。
受信者端末は図6に示したと同様にV=gaybmod p, W=Vdmod pを計算する。次に乱数uをZqよりランダムに選び、i=H3(W‖Vumod p‖gumod p‖m)及び、j=u-idmod qを計算し、(Σ,W,i,j)を署名として検証者端末400へ出力する。
変換されたデジタル署名(Σ,W, i,j)に対して、検証者端末400は図7に示したと同様に、まずセッション鍵K=H1(W)を計算し、m'=DKs(C)としてm'を得る。
【００３５】
このm'を、BがH4の出力ビット数と同じになるように、m'=A‖BとしてAとBに分割する。また、b=H2(C),V=gaybmod pを計算し、H5(B)(+)A=mとしてH4(H5(B)(+)A)=B及び、i=H3(W‖VjWimod p‖gjeimod p‖m)が成り立つことを検証し、何れも成り立つ場合はこの署名を正しいものとし、何れかひとつでも成り立たない場合はこの署名を不正とする。
実施形態7
上記実施形態6における署名付き暗号文Σを、送信者端末100が、任意の第三者が検証可能な署名に変換する方法及び、その署名の検証方法について説明する。
【００３６】
送信者端末100では、図8に示したと同様にw=a+bx mod q, W=ewmod pを計算次に、乱数vをZqよりランダムに選び、i=H3(W‖evmod p‖gvmod p‖m)及び、j=v-iw mod qを計算して、(Σ,W,i,j）を変換された署名とし、検証者端末400へ送信する。
変換された署名(Σ,W,i,j）に対して、検証者端末400は図9に示したと同様にまずK=H1(W)を計算し、m'=DKs(C)として平文m'を得る。このm'を、BがH4の出力ビット数と同じになるようにm'=A‖BとしてAとBに分割する。
【００３７】
次に、b=H2(C),V=gaybmod pを計算し、H5(B)(+)A=mとして、H4(H5(B)(+)A)=B及びi=H3(W‖ejWimod p‖gjVimod p‖m)が成り立つことを検証する。どちらも成り立つ場合はこの署名を正しいものとし、何れかひとつでも成り立たない場合はこの署名を不正とする。
上記実施形態6,7において、H3の入力変数の一部をメッセージmとしたがmの代わりにCを用いても良い。また、Ｈ3の入力変数に任意の文字列(例えば、変換を行った時刻など)を追加しても良い。上記した何れの実施形態中のハッシュ関数への入力も任意に順序を入れ替えても良い。
【００３８】
上述した各送信者端末100、受信者端末300、検証者端末400はそれぞれコンピュータによりプログラムを実行させて機能させることもできる。上述した各検証者端末400において、公開鍵情報Wの正当性、つまり比較器412,424,438での検証のみを行っても良い。
【００３９】
【発明の効果】
以上述べたようにこの発明によれば、特定の受信者端末のみが検証可能な署名付き暗号文を、その暗号文の送信者あるいは受信者の何れもが他方の協力を必要とせずに任意の第三者がディジタル署名に変換することが可能となる。よって、受信者が受信した署名付き暗号文が不正であると主張した場合に、送信者は、その署名付き暗号文を変換することによって任意の第三者に対して、送信した署名が正しいことを示すことが可能となる。逆に、送信者が、送信した署名付き暗号文を否認した場合に、受信者はその署名付き暗号文を変換することによって、任意の第三者に対して、受信した署名が送信者によるものであるということを示すことが可能となる。
【図面の簡単な説明】
【図１】この発明が適用されるシステム構成例を示す図。
【図２】この発明による受信者端末の要部の機能構成例を示す図。
【図３】図2に示した受信者端末により変換された署名に対する検証者端末の機能構成例を示す図。
【図４】この発明による送信者端末の要部の機能構成例を示す図。
【図５】図４に示した送信者端末により変換された署名に対する検証者端末の機能構成例を示す図。
【図６】この発明による受信者端末の他の例の機能構成を示す図。
【図７】図６に示した受信者端末により変換された署名に対する検証者端末の機能構成例を示す図。
【図８】この発明による送信者端末の他の例の機能構成を示す図。
【図９】図７に示した送信者端末により変換された署名に対する検証者端末の機能構成例を示す図。
【図１】
0003668138.tif 000002
【図２】
0003668138.tif 000003
【図３】
0003668138.tif 000004
【図４】
0003668138.tif 000005
【図５】
0003668138.tif 000006
【図６】
0003668138.tif 000007
【図７】
0003668138.tif 000008
【図８】
0003668138.tif 000009
【図９】
0003668138.tif 000010