CL-签名

CL-签名

《Signature Schemes and Anonymous Credentials from Bilinear Maps》
https://link.springer.com/chapter/10.1007/978-3-540-28628-8_4

A Simple Signature Scheme

Key Generation

初始化产生 ( q , G , G , g , g , e ) (q,G,\mathrm{G},g,\mathrm{g},e) (q,G,G,g,g,e)。它后续选择 x → Z q , y → Z q x \rightarrow Z_q, y \rightarrow Z_q xZq,yZq ,设置 s k = ( x , y ) , p k = ( q , G , G , g , g , e , X , Y ) sk=(x,y), pk=(q,G,\mathrm{G},g,\mathrm{g},e,X,Y) sk=(x,y),pk=(q,G,G,g,g,e,X,Y),其中 X = g x , Y = g y X=g^x, Y=g^y X=gx,Y=gy

Signature

输入消息 m m m,私钥 ( x , y ) (x,y) (x,y),公钥 p k = ( q , G , G , g , g , e , X , Y ) pk=(q,G,\mathrm{G},g,\mathrm{g},e,X,Y) pk=(q,G,G,g,g,e,X,Y),选择一个随机数 a ∈ G a\in G aG,输出签名 σ \sigma σ
σ = ( a , a y , a x + m x y ) \sigma=(a,a^y,a^{x+mxy}) σ=(a,ay,ax+mxy)

Verification

输入公钥 p k = ( q , G , G , g , g , e , X , Y ) pk=(q,G,\mathrm{G},g,\mathrm{g},e,X,Y) pk=(q,G,G,g,g,e,X,Y),消息 m m m,签名 σ = ( a , b , c ) \sigma=(a,b,c) σ=(a,b,c),验证:
e ( a , Y ) = ? e ( g , b ) ; e ( X , a ) ⋅ e ( X , b ) m = ? e ( g , c ) e(a,Y)\overset{?}{=}e(g,b); \quad e(X,a)\cdot e(X,b)^m \overset{?}{=}e(g,c) e(a,Y)=?e(g,b);e(X,a)e(X,b)m=?e(g,c)

Signature on multiple messages

Key Generation

我们首先创建私钥 s k sk sk,公钥 p k pk pk,其中私钥 s k = ( x , y , z i ) sk=(x,y,z_i) sk=(x,y,zi) i i i 表示有多少个消息。公钥 p k = ( G , G T , X , Y , Z i , W i ) pk=(G,G_T,X,Y,Z_i,W_i) pk=(G,GT,X,Y,Zi,Wi),其中 g g g G 1 G_1 G1 的一个生成元。
X = g x , Y = g y , Z i = g z i , W i = Y z i X=g^x,Y=g^y,Z_i=g^{z_i},W_i=Y^{z_i} X=gx,Y=gy,Zi=gzi,Wi=Yzi

Signature Generation

选择一个随机数 α \alpha α,用于隐藏某些值,后续我们将产生签名值 ( a , b , c , A , B ) (a,b,c,A,B) (a,b,c,A,B),其中:
a = g α , b = a y , c = a x C o m α x y , A i = a z i , B i = A i y a=g^\alpha,b=a^y,c=a^xCom^{\alpha xy},A_i=a^{z_i},B_i=A_i^y a=gα,b=ay,c=axComαxy,Ai=azi,Bi=Aiy
C o m = ∏ i = 1 s Z i m i Com=\prod_{i=1}^{s}Z_i^{m_i} Com=i=1sZimi s s s 是签名消息 m i m_i mi 的总数,为了让签名者能够对一个未知消息产生签名,可以将消息的承诺发送给签名者,签名者可以利用这个承诺生成签名。

Verfication

我们要验证签名 ( a , b , c , A , B ) (a,b,c,A,B) (a,b,c,A,B),需要验证:
e ( a , Z i ) = ? e ( g , A i ) ; e ( a , Y ) = ? e ( g , b ) ; e ( A i , Y ) = ? e ( g , B i ) ; e ( g , c ) = ? e ( X , a ) ∏ i = 1 s e ( X , B i m i ) e(a,Z_i)\overset{?}{=} e(g,A_i);\quad e(a,Y)\overset{?}{=}e(g,b);\quad e(A_i,Y)\overset{?}{=}e(g,B_i);\quad e(g,c)\overset{?}{=}e(X,a)\prod_{i=1}^{s}e(X,B_i^{m_i}) e(a,Zi)=?e(g,Ai);e(a,Y)=?e(g,b);e(Ai,Y)=?e(g,Bi);e(g,c)=?e(X,a)i=1se(X,Bimi)
其中 e ( g , c ) = ? e ( X , a ) ∏ i = 1 s e ( X , B i m i ) e(g,c)\overset{?}{=}e(X,a)\prod_{i=1}^{s}e(X,B_i^{m_i}) e(g,c)=?e(X,a)i=1se(X,Bimi) 的正确性如下:

e ( g , g α x ⋅ ( ∏ i = 1 s g z i m i ) α x y ) = e ( g x , g α ) ∏ i = 1 s e ( g x , g α z i y m i ) ⇒ e ( g , g ) α x + α x y ∑ i = 1 s z i m i = e ( g , g ) α x e ( g , g ) x α y ∑ i = 1 s z i m i e(g,g^{\alpha x}\cdot(\prod_{i=1}^{s}g^{z_im_i})^{\alpha xy})=e(g^x,g^\alpha)\prod_{i=1}^{s}e(g^x,g^{\alpha z_i y m_i})\Rightarrow e(g,g)^{\alpha x+\alpha xy\sum_{i=1}^{s}z_im_i}=e(g,g)^{\alpha x}e(g,g)^{x\alpha y \sum_{i=1}^{s}z_im_i} e(g,gαx(i=1sgzimi)αxy)=e(gx,gα)i=1se(gx,gαziymi)e(g,g)αx+αxyi=1szimi=e(g,g)αxe(g,g)yi=1szimi

LRSW Assumption

CL 签名的安全性依赖于 LRSW 假设。我们使得 X , Y ∈ G , X = g x , Y = g y , O X , Y ( ⋅ ) X,Y\in G, X=g^x, Y=g^y,O_{X,Y}(\cdot) X,YG,X=gx,Y=gyOX,Y() 是一个 oracle,输入一个值 m ∈ Z q m\in Z_q mZq,输出一个元组 A = ( a , a y , a x + m x y ) A=(a,a^y,a^{x+mxy}) A=(a,ay,ax+mxy) a a a 是一个随机数。然后对于所有多项式时间的敌手 A \mathcal{A} A v ( k ) v(k) v(k) 是一个可以忽略的概率函数:
P r [ ( q , G , G , g , g , e ) ] ← S e t u p ( 1 k ) ; x ← Z q ; y ← Z q ; X = g x ; Y = g y ; ( m , a , b , c ) ← A O X , Y ( q , G , G , g , g , e , X , Y ) : m ∉ Q ∧ m ∈ Z q ∧ m ≠ 0 ∧ a ∈ G ∧ b = a y ∧ c = a x + m x y ] = v ( k ) Pr[(q,G,\mathrm{G},g,\mathrm{g},e)]\leftarrow Setup(1^k);x \leftarrow Z_q;y \leftarrow Z_q;X=g^x;Y=g^y;\\ (m,a,b,c)\leftarrow \mathcal{A}^{O_{X,Y}}(q,G,\mathrm{G},g,\mathrm{g},e,X,Y):m \notin Q \wedge m\in Z_q \\ \wedge m\ne 0 \wedge a\in G \wedge b=a^y \wedge c=a^{x+mxy}]=v(k) Pr[(q,G,G,g,g,e)]Setup(1k);xZq;yZq;X=gx;Y=gy;(m,a,b,c)AOX,Y(q,G,G,g,g,e,X,Y):m/QmZqm=0aGb=ayc=ax+mxy]=v(k)
其中 Q Q Q 是敌手 A \mathcal{A} A 对 oracle O X , Y ( ⋅ ) O_{X,Y}(\cdot) OX,Y() 所做的查询集合(确保 A \mathcal{A} A 不能对同一个值 m m m 重复查询 oracle)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值