Information Sciences,2014
Lipmaa等人引入了指定验证者签名方案的一个新的安全概念——不可委托性:签名者和指定验证者都不能将签名权委托给任何第三方而不泄露自己的密钥。
H. Lipmaa, G. Wang, F. Bao, Designated verifier signature schemes: attacks, new security notions and a new construction, in: ICALP 2005, LNCS, vol. 3580, 2005, pp. 459–471.
K e y G e n ( 1 k ) → ( s k , p k ) {\rm KeyGen}(1^k)\rightarrow(sk,pk) KeyGen(1k)→(sk,pk)
D V − S i g n ( s k S , m , p k V ) → τ {\rm DV-Sign}(sk_S,m,pk_V)\rightarrow \tau DV−Sign(skS,m,pkV)→τ
D V − V e r i f y ( s k V , m , p k S , τ ) → 0 / 1 {\rm DV-Verify}(sk_V,m,pk_S,\tau)\rightarrow 0/1 DV−Verify(skV,m,pkS,τ)→0/1
T r a n s c r i p t S i m u l a t i o n {\rm Transcript Simulation} TranscriptSimulation持有其私钥 s k V sk_V skV的指定验证者总是可以产生与原始证明无法区分的相同分布的副本。
K e y G e n ( 1 k ) → p a r a m s : = { . . . , ( m s k , m p k ) } {\rm KeyGen}(1^k)\rightarrow params:=\{...,(msk,mpk)\} KeyGen(1k)→params:={...,(msk,mpk)}
E x t r a c t ( m s k , I D ) → S I D {\rm Extract}(msk,ID)\rightarrow S_{ID} Extract(msk,ID)→SID
D V − S i g n ( S I D S , m , I D S , I D V ) → τ {\rm DV-Sign}(S_{ID_S},m,ID_S,ID_V)\rightarrow\tau DV−Sign(SIDS,m,IDS,IDV)→τ
D V − V e r i f y ( S I D V , m , I D S , I D V , τ ) → 0 / 1 {\rm DV-Verify}(S_{ID_V},m,ID_S,ID_V,\tau)\rightarrow 0/1 DV−Verify(SIDV,m,IDS,IDV,τ)→0/1
T r a n s c r i p t S i m u l a t i o n {\rm Transcript Simulation} TranscriptSimulation持有其私钥 S I D V S_{ID_V} SIDV的指定验证者总是可以产生与原始证明无法区分的相同分布抄本。
UDVS方案允许标准签名的任何持有者将签名指定给任何验证者。指定的验证者可以检查消息是否已由签名者签名,但无法让任何人相信这一事实。
K e y G e n {\rm KeyGen} KeyGen、 T r a n s c r i p t S i m u l a t i o n {\rm Transcript Simulation} TranscriptSimulation和DVS相同
S i g n ( s k S , m ) → σ {\rm Sign}(sk_{S},m)\rightarrow\sigma Sign(skS,m)→σ
V e r i f y ( p k S , m , σ ) → 0 / 1 {\rm Verify}(pk_S,m,\sigma)\rightarrow 0/1 Verify(pkS,m,σ)→0/1
D e s i g n a t i o n ( p k S , p k V , m , σ ) → τ {\rm Designation}(pk_S,pk_V,m,\sigma)\rightarrow \tau Designation(pkS,pkV,m,σ)→τ
U − D V − V e r i f y ( s k V , p k S , p k V , m , τ ) → 0 / 1 {\rm U-DV-Verify}(sk_V,pk_S,pk_V,m,\tau)\rightarrow 0/1 U−DV−Verify(skV,pkS,pkV,m,τ)→0/1
签名依赖于签名者的密钥 s s s和双线性对DH公共值 e ( S A , Q B ) = e ( Q A , S B ) e(S_A,Q_B)=e(Q_A,S_B) e(SA,QB)=e(QA,SB),验证依赖于通用值。因为签名中有明确不可分享的私钥存在,所以不能代替生成有效签名
可以用公共值代替生成有效签名
Kang:DVS
S i g n : ( U = r Q A , σ : = H 2 ( m , e ( S A , r Q B ) ) ) {\rm Sign}:(U=rQ_A,\sigma:=H_2(m,e(S_A,rQ_B))) Sign:(U=rQA,σ:=H2(m,e(SA,rQB)))
V e r i f y : σ = H 2 ( m , e ( U , S B ) ) {\rm Verify}:\sigma=H_2(m,e(U,S_B)) Verify:σ=H2(m,e(U,SB))
Lee:DVS
S i g n : {\rm Sign}: Sign:random x x x,Timestamp T S , r = H 2 ( T S ) , δ = x Q A , σ : = H 2 ( m , e ( x Q B , r S A ) ) T_S,r=H_2(T_S),\delta=xQ_A,\sigma:=H_2(m,e(xQ_B,rS_A)) TS,r=H2(TS),δ=xQA,σ:=H2(m,e(xQB,rSA))
输出签名 ( δ , T S , σ ) (\delta,T_S,\sigma) (δ,TS,σ)
V e r i f y : r = H 2 ( T S ) , σ = H 2 ( m , e ( δ , r S B ) ) {\rm Verify}:r=H_2(T_S),\sigma=H_2(m,e(\delta,rS_B)) Verify:r=H2(TS),σ=H2(m,e(δ,rSB))
Seo:UDVS
S i g n : ( U = r P , V = r P p u b + h S A ) , h = H 2 ( m , U ) {\rm Sign}:(U=rP,V=rP_{pub}+hS_A),h=H_2(m,U) Sign:(U=rP,V=rPpub+hSA),h=H2(m,U)
D e s i g n a t i o n : ( U , τ : = e ( V , Q B ) ) {\rm Designation}:(U,\tau:=e(V,Q_B)) Designation:(U,τ:=e(V,QB))
U − D V − V e r i f y : Q A = H 1 ( I D A ) , h = H 2 ( m , U ) , τ = e ( U + h Q A , S B ) {\rm U-DV-Verify}:Q_A=H_1(ID_A),h=H_2(m,U),\tau=e(U+hQ_A,S_B) U−DV−Verify:QA=H1(IDA),h=H2(m,U),τ=e(U+hQA,SB)
Zhang:UDVS
S i g n : ( U = r Q A , V = ( r + h ) S A ) , h = H 2 ( m , U ) {\rm Sign}:(U=rQ_A,V=(r+h)S_A),h=H_2(m,U) Sign:(U=rQA,V=(r+h)SA),h=H2(m,U)
D e s i g n a t i o n : ( U , τ : = e ( V , Q B ) ) {\rm Designation}:(U,\tau:=e(V,Q_B)) Designation:(U,τ:=e(V,QB))
U − D V − V e r i f y : Q A = H 1 ( I D A ) , h = H 2 ( m , U ) , τ = e ( U + h Q A , S B ) {\rm U-DV-Verify}:Q_A=H_1(ID_A),h=H_2(m,U),\tau=e(U+hQ_A,S_B) U−DV−Verify:QA=H1(IDA),h=H2(m,U),τ=e(U+hQA,SB)
Huang:UDVS
K e y G e n : {\rm KeyGen}: KeyGen:random u ′ , u : = { u 1 , . . . , u n } u',{\rm u}:=\{u_1,...,u_n\} u′,u:={u1,...,un}, m m m位长为n,random s k A : = ( x A , y A ) , p k A : = ( g x A , g y A ) sk_A:=(x_A,y_A),pk_A:=(g^{x_A},g^{y_A}) skA:=(xA,yA),pkA:=(gxA,gyA)
S i g n : M ⊂ { 1 , . . . , n } {\rm Sign}:M\subset\{1,...,n\} Sign:M⊂{1,...,n}表示 m i = 1 m_i=1 mi=1的标号, σ : = ( U , V ) = ( g x A y A ( u ′ ∏ i ∈ M u i ) r , g r ) \sigma:=(U,V)=(g^{x_Ay_A}(u'\prod_{i\in M}u_i)^r,g^r) σ:=(U,V)=(gxAyA(u′∏i∈Mui)r,gr)
D e s i g n a t i o n : W 1 = e ( U ( u ′ ∏ i ∈ M u i ) r ′ , p k B x ) = e ( g x A y A ( u ′ ∏ i ∈ M u i ) r + r ′ , p k B x ) {\rm Designation}:W_1=e(U(u'\prod_{i\in M}u_i)^{r'},pk_{B_x})=e(g^{x_Ay_A}(u'\prod_{i\in M}u_i)^{r+r'},pk_{B_x}) Designation:W1=e(U(u′∏i∈Mui)r′,pkBx)=e(gxAyA(u′∏i∈Mui)r+r′,pkBx), W 2 = V ⋅ g r ′ = g r + r ′ W_2=V\cdot g^{r'}=g^{r+r'} W2=V⋅gr′=gr+r′,输出签名 τ = ( W 1 , W 2 ) \tau=(W_1,W_2) τ=(W1,W2)
D V − V e r i f y : W 1 = e ( p k A x , p k A y ) x B e ( u ′ ∏ i ∈ M u i , W 2 ) x B {\rm DV-Verify}:W_1=e(pk_{A_x},pk_{A_y})^{x_B}e(u'\prod_{i\in M}u_i,W_2)^{x_B} DV−Verify:W1=e(pkAx,pkAy)xBe(u′∏i∈Mui,W2)xB
可委托性攻击:知道与密匙相关的一些值的对手可以在不知道签名者和验证者的密匙的情况下生成有效的签名。
假设 ( D = r 1 Q B , D ′ = r 1 − 1 S A ) (D=r_1Q_B,D'=r_1^{-1}S_A) (D=r1QB,D′=r1−1SA)被泄露给第三方T,T可以生成DVS签名:
假设BDH类公共值 D = e ( S A , Q B ) = e ( Q A , S B ) = e ( Q A , Q B ) s D=e(S_A,Q_B)=e(Q_A,S_B)=e(Q_A,Q_B)^s D=e(SA,QB)=e(QA,SB)=e(QA,QB)s被泄露给第三方T,T可以生成DVS签名:
除了可委托攻击,其中两个方案还是universally forgeable的,任何人都能伪造签名,敌手:
Kang:随机选择 r , U : = r P , σ : = H 2 ( m , e ( r P p u b , Q B ) ) r,U:=rP,\sigma:=H_2(m,e(rP_{pub},Q_B)) r,U:=rP,σ:=H2(m,e(rPpub,QB)),验证等式: σ = H 2 ( m , e ( U , S B ) ) = H 2 ( m , e ( r P , s Q B ) ) = H 2 ( m , e ( r P p u b , Q B ) ) \sigma=H_2(m,e(U,S_B))=H_2(m,e(rP,sQ_B))=H_2(m,e(rP_{pub},Q_B)) σ=H2(m,e(U,SB))=H2(m,e(rP,sQB))=H2(m,e(rPpub,QB))。
Lee: r = H 2 ( T S ) r=H_2(T_S) r=H2(TS),random x , , δ : = x P , σ : = H 2 ( m , e ( r P p u b , x Q B ) ) x,,\delta:=xP,\sigma:=H_2(m,e(rP_{pub},xQ_B)) x,,δ:=xP,σ:=H2(m,e(rPpub,xQB))。签名满足验证等式: , σ = H 2 ( m , e ( δ , r S B ) ) = H 2 ( m , e ( x P , r s Q B ) ) = H 2 ( m , e ( r P p u b , x Q B ) ) ,\sigma=H_2(m,e(\delta,rS_B))=H_2(m,e(xP,rsQ_B))=H_2(m,e(rP_{pub},xQ_B)) ,σ=H2(m,e(δ,rSB))=H2(m,e(xP,rsQB))=H2(m,e(rPpub,xQB))。
二者都在没有任何额外信息的情况下伪造了签名。这类伪造攻击是由于这些方案在验证算法的输入中没有使用签名者的身份信息。
这类攻击假设 D = y B x A = g x A x B D=y_B^{x_A}=g^{x_Ax_B} D=yBxA=gxAxB被泄露给第三方T:
根据安全参数和硬件平台的选择,配对计算所需的时间至少比椭圆曲线上的标量乘法慢2倍(最多10倍)。因此,如果在设计短签名方案时需要对,则应尽量减少对的计算次数