Information Sciences,2014


关于指定验证人签名方案的可委托性
本文将指定验证者签名方案分为三种类型,讨论了现有指定验证者签名方案、强指定验证者签名方案和通用指定验证者签名方案的可委托性以及有待研究的问题

介绍

  • 指定验证人签名的提出:不具有传统签名的不可否认性
  • 强指定验证者签名(SDVS)方案:指定验证者使用他的秘密密钥来验证指定给他的签名有效或无效。
    M. Jakobsson, K. Sako, R. Impagliazzo, Designated verifier proofs and their applications, in: Advances in Cryptology-Eurocrypt’96, LNCS, vol. 1070, Springer-Verlag, 1996, pp. 142–154.
  • 将DVS的概念扩展到通用DVS (UDVS)方案,允许签名持有人将标准签名转换为指定签名,指定给他所选择的任何指定验证人。
    R. Steinfeld, H. Wang, J. Pieprzyk, Efficient extension of standard Schnorr/RSA signatures into universal designated-verifier signatures, in: PKC’04, LNCS, vol. 2947, Springer-Verlag, 2004, pp. 86–100

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.

定义

SDVS

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 DVSign(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 DVVerify(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的指定验证者总是可以产生与原始证明无法区分的相同分布的副本。

ID-based DVS

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 DVSign(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 DVVerify(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

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 UDVVerify(skV,pkS,pkV,m,τ)0/1

分类

  1. DV-Sign和DV-Verify算法只依赖于签名者和指定验证者之间的一个公共值(如DH,双线性对DH),不使用任何其他机密信息。这类方案都是可委托的,公共值被透露给第三方T, T可以为{A,B}生成有效的指定验证者签名。
  2. DV-Sign算法依赖于签名者的密钥以及签名者与指定验证者之间的公共值,或者只依赖于签名者的密钥。同时,DV-Verify算法依赖于通用值。为了防止可委托性,有必要使用公共价值之外的另一个秘密信息。
  3. DV-Sign算法只依赖于签名者的密钥,DV-Verify算法依赖于指定验证者的密钥,而不使用签名者和指定验证者之间的公共值。

type-Ⅱ算法举例

签名依赖于签名者的密钥 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),验证依赖于通用值。因为签名中有明确不可分享的私钥存在,所以不能代替生成有效签名

  • Kumar:DVS
    ( s , s P ) , ( S i : = s Q i = s H 1 ( I D i ) ) (s,sP),(S_i:=sQ_i=sH_1(ID_i)) (s,sP),(Si:=sQi=sH1(IDi))
    S i g n : σ : = ( U 1 , U 2 , U 3 , V ) = ( r 1 Q B , r 2 Q A , r 1 r 3 Q B , r 3 H 2 ( m , e ( S A , r 2 Q B ) ) + r 1 − 1 S A ) {\rm Sign}:\sigma:=(U_1,U_2,U_3,V)=(r_1Q_B,r_2Q_A,r_1r_3Q_B,r_3H_2(m,e(S_A,r_2Q_B))+r_1^{-1}S_A) Sign:σ:=(U1,U2,U3,V)=(r1QB,r2QA,r1r3QB,r3H2(m,e(SA,r2QB))+r11SA)
    V e r i f y : H = H 2 ( m , e ( U 2 , S B ) ) , e ( U 1 , V ) = e ( U 3 , H ) e ( S B , Q A ) {\rm Verify}:H=H_2(m,e(U_2,S_B)),e(U_1,V)=e(U_3,H)e(S_B,Q_A) Verify:H=H2(m,e(U2,SB)),e(U1,V)=e(U3,H)e(SB,QA)
  • Zhang-Mao:DVS
    S i g n : σ : = ( U 1 , U 2 , V ) = ( r 1 Q B , r 1 r 2 Q B , r 2 H 2 ( m , U 1 , U 2 ) + r 1 − 1 S A ) {\rm Sign}:\sigma:=(U_1,U_2,V)=(r_1Q_B,r_1r_2Q_B,r_2H_2(m,U_1,U_2)+r_1^{-1}S_A) Sign:σ:=(U1,U2,V)=(r1QB,r1r2QB,r2H2(m,U1,U2)+r11SA)
    V e r i f y : H = H 2 ( m , U 1 , U 2 ) , e ( U 1 , V ) = e ( U 2 , H ) e ( S B , Q A ) {\rm Verify}:H=H_2(m,U_1,U_2),e(U_1,V)=e(U_2,H)e(S_B,Q_A) Verify:H=H2(m,U1,U2),e(U1,V)=e(U2,H)e(SB,QA)

Type-Ⅰ DVS算法举例(涉及双线性DH型公共值)

可以用公共值代替生成有效签名

  • 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) UDVVerify: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) UDVVerify: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(uiMui)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(uiMui)r,pkBx)=e(gxAyA(uiMui)r+r,pkBx), W 2 = V ⋅ g r ′ = g r + r ′ W_2=V\cdot g^{r'}=g^{r+r'} W2=Vgr=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} DVVerify:W1=e(pkAx,pkAy)xBe(uiMui,W2)xB

Type-Ⅰ DVS算法举例(涉及DH型公共值)

  • Steinfeld:UDVS
    ( x A , y A = g x A ) (x_A,y_A=g^{x_A}) (xA,yA=gxA)
    S i g n : {\rm Sign}: Sign:random k , u = g k , s = k + r ⋅ x A , r = H ( m , u ) k,u=g^k,s=k+r\cdot x_A,r=H(m,u) k,u=gk,s=k+rxA,r=H(m,u),输出 σ = ( r , s ) \sigma=(r,s) σ=(r,s)
    D e s i g n a t i o n : τ : = ( u = g s ⋅ y A − r , K = y B s ) {\rm Designation}:\tau:=(u=g^s\cdot y_A^{-r},K=y_B^s) Designation:τ:=(u=gsyAr,K=yBs)
    D V − V e r i f y : r = H ( m , u ) , K = ( u ⋅ y A r ) x B {\rm DV-Verify}:r=H(m,u),K=(u\cdot y_A^r)^{x_B} DVVerify:r=H(m,u),K=(uyAr)xB
  • Lee–Chang:DVS
    S i g n : r = g k , s = k + x A r   m o d   q , t = H ( m , y B s ) , σ : = ( r , t ) {\rm Sign}:r=g^k,s=k+x_Ar~mod~q,t=H(m,y_B^s),\sigma:=(r,t) Sign:r=gk,s=k+xAr mod q,t=H(m,yBs),σ:=(r,t)
    D V − V e r i f y : t = H ( m , ( r ⋅ y A r ) x B ) {\rm DV-Verify}:t=H(m,(r\cdot y_A^r)^{x_B}) DVVerify:t=H(m,(ryAr)xB)
  • Islam and Biswas:SDVS
    S i g n : U = r P A = r x A P , h = H ( m , U ) , σ : = x A ( r + h ) P B {\rm Sign}:U=rP_A=rx_AP,h=H(m,U),\sigma:=x_A(r+h)P_B Sign:U=rPA=rxAP,h=H(m,U),σ:=xA(r+h)PB,签名 ( U , σ ) (U,\sigma) (U,σ)
    D V − V e r i f y : h = H ( m , U ) , σ : = x B ( U + h P A ) {\rm DV-Verify}:h=H(m,U),\sigma:=x_B(U+hP_A) DVVerify:h=H(m,U),σ:=xB(U+hPA)

Delegatability攻击

可委托性攻击:知道与密匙相关的一些值的对手可以在不知道签名者和验证者的密匙的情况下生成有效的签名。

对Type II DVS的攻击

假设 ( D = r 1 Q B , D ′ = r 1 − 1 S A ) (D=r_1Q_B,D'=r_1^{-1}S_A) (D=r1QB,D=r11SA)被泄露给第三方T,T可以生成DVS签名:

  • Kumar:DVS
    random r 2 , r 3 r_2,r_3 r2,r3,计算 U 1 = D , U 2 = r 2 Q A , U 3 = r 3 D U_1=D,U_2=r_2Q_A,U_3=r_3D U1=D,U2=r2QA,U3=r3D
    S = e ( D , D ′ ) r 2 = e ( r 1 Q B , r 1 − 1 S A ) r 2 = e ( Q B , S A ) r 2 , H = H 2 ( m , S ) S=e(D,D')^{r_2}=e(r_1Q_B,r_1^{-1}S_A)^{r_2}=e(Q_B,S_A)^{r_2},H=H_2(m,S) S=e(D,D)r2=e(r1QB,r11SA)r2=e(QB,SA)r2,H=H2(m,S)
    V = r 3 H + D ′ V=r_3H+D' V=r3H+D
    输出签名 ( U 1 , U 2 , U 3 , V ) (U_1,U_2,U_3,V) (U1,U2,U3,V)
  • Zhang-Mao:DVS
    random r 2 r_2 r2,计算 U 1 = D , U 2 = r 2 D , H = H 2 ( m , U 1 , U 2 ) , V = r 2 H + D ′ U_1=D,U_2=r_2D,H=H_2(m,U_1,U_2),V=r_2H+D' U1=D,U2=r2D,H=H2(m,U1,U2),V=r2H+D,输出签名 ( U 1 , U 2 , V ) (U_1,U_2,V) (U1,U2,V)

对BDH-Type I 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签名:

  • Kang: ( U = r Q A , σ : = H 2 ( m , D r ) ) (U=rQ_A,\sigma:=H_2(m,D^r)) (U=rQA,σ:=H2(m,Dr))
    Lee: r = H 2 ( T S ) r=H_2(T_S) r=H2(TS),random x , δ = x Q A , σ : = H 2 ( m , e ( x Q B , r S A ) ) x,\delta=xQ_A,\sigma:=H_2(m,e(xQ_B,rS_A)) x,δ=xQA,σ:=H2(m,e(xQB,rSA)),输出签名 ( δ , T S , σ ) (\delta,T_S,\sigma) (δ,TS,σ)
  • Seo: ( U = r P , τ = e ( r P p u b , Q B ) ⋅ D h ) , h = H 2 ( m , U ) (U=rP,\tau=e(rP_{pub},Q_B)\cdot D^h),h=H_2(m,U) (U=rP,τ=e(rPpub,QB)Dh),h=H2(m,U)
  • Zhang: ( U = r Q A , τ = D r + h ) , h = H 2 ( m , U ) (U=rQ_A,\tau=D^{r+h}),h=H_2(m,U) (U=rQA,τ=Dr+h),h=H2(m,U)
  • Huang:
    假设 D = e ( p k A x , p k A y ) x B D=e(pk_{A_x},pk_{A_y})^{x_B} D=e(pkAx,pkAy)xB被泄露给第三方,T可以生成DVS签名:
    T选择random k , W 2 = g k k,W_2=g^k k,W2=gk
    W 1 = e ( g x A y A ( u ′ ∏ i ∈ M u i ) k , p k B x ) = D ⋅ e ( u ′ ∏ i ∈ M u i , p k B x ) k W_1=e(g^{x_Ay_A}(u'\prod_{i\in M}u_i)^k,pk_{B_x})=D\cdot e(u'\prod_{i\in M}u_i,pk_{B_x})^k W1=e(gxAyA(uiMui)k,pkBx)=De(uiMui,pkBx)k,输出签名 τ = ( W 1 , W 2 ) \tau=(W_1,W_2) τ=(W1,W2)

除了可委托攻击,其中两个方案还是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))
二者都在没有任何额外信息的情况下伪造了签名。这类伪造攻击是由于这些方案在验证算法的输入中没有使用签名者的身份信息。

对DH-Type I DVS的攻击

这类攻击假设 D = y B x A = g x A x B D=y_B^{x_A}=g^{x_Ax_B} D=yBxA=gxAxB被泄露给第三方T:

  • Steinfeld:
    random k , u = g k , r = H ( m , u ) , K = y B k ⋅ D r k,u=g^k,r=H(m,u),K=y_B^k\cdot D^r k,u=gk,r=H(m,u),K=yBkDr.验证 K = ( u ⋅ y A r ) x B = ( y B k ⋅ y B r ⋅ x A ) = y B k ⋅ D r K=(u\cdot y_A^r)^{x_B}=(y_B^k\cdot y_B^{r\cdot x_A})=y_B^k\cdot D^r K=(uyAr)xB=(yBkyBrxA)=yBkDr
  • Lee–Chang
    r = g k , t = H ( m , y B k ⋅ D r ) r=g^k,t=H(m,y_B^k\cdot D^r) r=gk,t=H(m,yBkDr).验证 t = H ( m , ( r ⋅ y A r ) x B ) = H ( m , y B k ⋅ D r ) t=H(m,(r\cdot y_A^r)^{x_B})=H(m,y_B^k\cdot D^r) t=H(m,(ryAr)xB)=H(m,yBkDr)
  • Islam and Biswas
    U = r P A , h = H ( m , U ) , σ : = ( r + h ) ⋅ D U=rP_A,h=H(m,U),\sigma:=(r+h)\cdot D U=rPA,h=H(m,U),σ:=(r+h)D.验证 σ = x B ( U + h P A ) = r D + h D \sigma=x_B(U+hP_A)=rD+hD σ=xB(U+hPA)=rD+hD

总结

  1. type I DVS 都是可委托的:因为只依赖于公共值,虽然这个值不一定泄露私钥。
  2. 一部分typeⅡDVS,虽然不只依赖于公共值,仍然可能被可委托攻击。
  3. 存在typte Ⅲ方案对于可委托攻击是安全的,作者给出了案例:non-delegatable SDVS
    缺陷:签名长度约为其他分布式交换机方案的3倍,且签名生成和验证效率均较低。
  4. 设计短而高效的SDVS和UDVS方案仍然是一个开放的问题,可以证明对可委托性攻击是安全的。

根据安全参数和硬件平台的选择,配对计算所需的时间至少比椭圆曲线上的标量乘法慢2倍(最多10倍)。因此,如果在设计短签名方案时需要对,则应尽量减少对的计算次数

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐