BBS群签名方案

BBS Group Signature

群签名方案是一种允许群成员代表群匿名签名消息的方法,我们接下来介绍由 Boneh, Boyen and Shacham 在2004年提出的一个 BBS signatures 简短群签名方案 Short Group Signatures

Complexity Assumpations

The Strong Diffle-Hellman Assumpation

G 1 , G 2 G_1,G_2 G1,G2 是阶数为 p p p 的循环群。 g 1 g_1 g1 G 1 G_1 G1 的生成元, g 2 g_2 g2 G 2 G_2 G2 的生成元。

q-Strong Diffle-Hellman Problem. ( G 1 , G 2 ) (G_1,G_2) (G1,G2) q-SDH 问题是:给定一个 ( q + 2 ) (q+2) (q+2) 个元素的元组 ( g 1 , g 2 , g 2 γ , g 2 ( γ 2 ) , . . . , g 2 ( γ q ) ) (g_1,g_2,g_2^\gamma,g_2^{(\gamma^2)},...,g_2^{(\gamma^q)}) (g1,g2,g2γ,g2(γ2),...,g2(γq)) 作为输入,输出 ( g 1 1 / ( γ + x ) , x ) (g_1^{1/(\gamma+x)},x) (g11/(γ+x),x) 其中 x ∈ Z p ∗ x\in Z_p^* xZp。算法 A \mathcal{A} A ( G 1 , G 2 ) (G_1,G_2) (G1,G2) 下解决 q-SDH 问题下有优势 ϵ \epsilon ϵ
P r [ A ( g 1 , g 2 , g 2 γ , . . . , g 2 ( γ q ) ) = ( g 1 1 γ + x , x ) ] ≥ ϵ Pr[\mathcal{A}(g_1,g_2,g_2^\gamma,...,g_2^{(\gamma^q)})=(g_1^{\frac{1}{\gamma+x}},x)]\ge \epsilon Pr[A(g1,g2,g2γ,...,g2(γq))=(g1γ+x1,x)]ϵ

这是一个困难问题,算法 A 并不知道 x , γ x,\gamma x,γ 的值,且要构造出 g 1 1 γ + x g_1^{\frac{1}{\gamma+x}} g1γ+x1,成功的概率几乎为 0 0 0。这比基本的离散对数问题更为复杂,1. x x x 并不知道,找到正确的 x x x ,需要穷举所有的群元素。2. 如果知道了 x x x,找到符合条件的 B B B,可以利用双线性配对的一些性质来求解,但同样需要穷举所有的群元素。

The Decision Linear Diffle-Hellman Assumption

Decision Linear Problem in G 1 G_1 G1. 给定 u , v , h , u a , v b , h c ∈ G 1 u,v,h,u^a,v^b,h^c \in G_1 u,v,h,ua,vb,hcG1 作为输入,当 a + b = c a+b=c a+b=c 时输出 yes,反之输出 no。

更准确地说,我们定义了算法 A \mathcal{A} A G 1 G_1 G1 的决策线性问题的优势:
A d v L i n e a r A = d e f ∣ P r [ A ( u , v , h , u a , v b , h a + b ) = y e s : u , v , h ← G 1 , a , b ← Z p ] − P r [ A ( u , v , h , u a , v b , η ) = y e s : u , v , h , η ← G 1 , a , b ← Z p ] ∣ \mathrm{AdvLinear}_{A}\overset{\mathrm{def}}{=}\begin{vmatrix} Pr[\mathcal{A}(u,v,h,u^a,v^b,h^{a+b})=\mathrm{yes}:u,v,h\leftarrow G_1,a,b\leftarrow Z_p]\\ -Pr[\mathcal{A}(u,v,h,u^a,v^b,\eta)=\mathrm{yes}:u,v,h,\eta\leftarrow G_1,a,b\leftarrow Z_p] \end{vmatrix} AdvLinearA=def Pr[A(u,v,h,ua,vb,ha+b)=yes:u,v,hG1,a,bZp]Pr[A(u,v,h,ua,vb,η)=yes:u,v,h,ηG1,a,bZp]

Linear Encryptio

决策线性问题产生了线性加密(LE)方案,LE 是 Elgamal 加密的自然扩展。在 LE 方案中,一个用户的公钥是 3 3 3 个生成元 u , v , h ∈ G 1 u,v,h \in G_1 u,v,hG1。她的私钥是 x , y ∈ Z p x,y \in Z_p x,yZp,使得 u x = v y = h u^x=v^y=h ux=vy=h。为了加密一个消息 M ∈ G 1 M\in G_1 MG1,选择两个随机数 a , b ∈ Z p a,b\in Z_p a,bZp,输出元组 ( u a , v b , m ⋅ h a + b ) (u^a,v^b,m\cdot h^{a+b}) (ua,vb,mha+b)。为了从密文 ( T 1 , T 2 , T 3 ) (T_1,T_2,T_3) (T1,T2,T3) 中恢复出消息 M M M,用户计算 M = T 3 T 1 x ⋅ T 2 y M=\frac{T_3}{T_1^x\cdot T_2^y} M=T1xT2yT3
M = m ⋅ h a + b u a x ⋅ v b y = m ⋅ h a + b h a ⋅ h b M=\frac{m\cdot h^{a+b}}{u^{ax}\cdot v^{by}}=\frac{m\cdot h^{a+b}}{h^a\cdot h^b} M=uaxvbymha+b=hahbmha+b

A Zero-Knowledge Protocol for SDH

公开参数为 g 1 , u , v , h ∈ G 1 g_1,u,v,h \in G_1 g1,u,v,hG1 g 2 , w ∈ G 2 g_2,w \in G_2 g2,wG2。其中 u , v , h u,v,h u,v,h G 1 G_1 G1 中的随机数, g 2 g_2 g2 G 2 G_2 G2 的生成元, w = g 2 γ , r ∈ Z p w=g_2^\gamma, r\in Z_p w=g2γ,rZp。该协议证明其拥有一对 ( A , x ) (A,x) (A,x),其中 A ∈ G 1 A\in G_1 AG1 x ∈ Z p x\in Z_p xZp,使得 A x + γ = g 1 A^{x+\gamma}=g_1 Ax+γ=g1。例如一个 pair 满足 e ( A , w g 2 x ) = e ( g 1 , g 2 ) e(A,wg_2^x)=e(g_1,g_2) e(A,wg2x)=e(g1,g2)。我们使用一个 Schnorr 的推广协议来证明素数阶群中的离散对数知识。

Protocol 1. Alice 作为证明者,选择指数 α , β ← Z p \alpha,\beta\leftarrow Z_p α,βZp,并计算一个 A A A 的线性加密:
T 1 ← u α , T 2 ← v β , T 3 ← A h α + β T_1\leftarrow u^\alpha,T_2\leftarrow v^{\beta},T_3\leftarrow Ah^{\alpha+\beta} T1uα,T2vβ,T3Ahα+β
她同时计算两个辅助值 δ 1 ← x α \delta_1 \leftarrow x\alpha δ1 δ 2 ← x β ∈ Z p \delta_2\leftarrow x\beta \in Z_p δ2xβZp

Alice 和 Bob 进行值 ( α , β , x , δ 1 , δ 2 ) (\alpha,\beta,x,\delta_1,\delta_2) (α,β,x,δ1,δ2) 的知识,证明满足以下 5 5 5 个等式:
u α = T 1 , v β = T 2 , e ( T 3 , g 2 ) x ⋅ e ( h , w ) − α − β ⋅ e ( h , g 2 ) − δ 1 − δ 2 = e ( g 1 , g 2 ) / e ( T 3 , w ) , T 1 x u − δ 1 = 1 , T 2 x v − δ 2 = 1 u^{\alpha}=T_1,v^{\beta}=T_2,e(T_3,g_2)^x\cdot e(h,w)^{-\alpha-\beta} \cdot e(h,g_2)^{-\delta_1-\delta_2}=e(g_1,g_2)/e(T_3,w),T_1^xu^{-\delta_1}=1,T_2^xv^{-\delta_2}=1 uα=T1,vβ=T2,e(T3,g2)xe(h,w)αβe(h,g2)δ1δ2=e(g1,g2)/e(T3,w),T1xuδ1=1,T2xvδ2=1
( α , β , x , δ 1 , δ 2 ) (\alpha,\beta,x,\delta_1,\delta_2) (α,β,x,δ1,δ2) 的知识证明如下,Alice 选择盲因子 r α , r β , r x , r δ 1 , r δ 2 ∈ Z q r_{\alpha},r_{\beta},r_x,r_{\delta_1},r_{\delta_2} \in Z_q rα,rβ,rx,rδ1,rδ2Zq,结合这些盲因子计算 5 5 5 个值:
R 1 ← u r α , R 2 ← v r β , R 3 ← e ( T 3 , g 2 ) r x ⋅ e ( h , w ) − r α − r β ⋅ e ( h , g 2 ) − r δ 1 − r δ 2 , R 4 ← T 1 r x u − r δ 1 , R 5 ← T 2 r x v − r δ 2 R_1\leftarrow u^{r_{\alpha}},R_2\leftarrow v^{r_\beta},R_3\leftarrow e(T_3,g_2)^{r_x}\cdot e(h,w)^{-r_\alpha-r_\beta} \cdot e(h,g_2)^{-r_{\delta_1}-r_{\delta_2}},R_4\leftarrow T_1^{r_x}u^{-r_{\delta_1}},R_5\leftarrow T_2^{r_x}v^{-r_{\delta_2}} R1urα,R2vrβ,R3e(T3,g2)rxe(h,w)rαrβe(h,g2)rδ1rδ2,R4T1rxurδ1,R5T2rxvrδ2
Alice 发送 ( T 1 , T 2 , T 3 , R 1 , R 2 , R 3 , R 4 , R 5 ) (T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5) (T1,T2,T3,R1,R2,R3,R4,R5) 给 Bob。Bob 选择发送一个挑战值 c ∈ Z p c\in Z_p cZp。Alice 计算并回送响应给 Bob:
s α ← r α + c α , s β ← r β + c β , s x ← r x + c x , s δ 1 ← r δ 1 + c δ 1 , s δ 2 ← r δ 2 + c δ 2 s_\alpha\leftarrow r_\alpha+c\alpha,s_\beta\leftarrow r_{\beta}+c\beta,s_x\leftarrow r_x+cx,s_{\delta_1}\leftarrow r_{\delta_1}+ c\delta_1,s_{\delta_2}\leftarrow r_{\delta_2}+c\delta_2 sαrα+cα,sβrβ+cβ,sxrx+cx,sδ1rδ1+cδ1,sδ2rδ2+cδ2
最后,Bob 验证这五个等式:
u s α = T 1 c ⋅ R 1 , v s β = T 2 c ⋅ R 2 u^{s_\alpha}=T_1^c\cdot R_1,v^{s\beta}=T_2^c\cdot R_2 usα=T1cR1,vsβ=T2cR2
e ( T 3 , g 2 ) s x ⋅ e ( h , w ) − s α − s β ⋅ e ( h , g 2 ) − s δ 1 − s δ 2 = ( e ( g 1 , g 2 ) / e ( T 3 , w ) c ) ⋅ R 3 e(T_3,g_2)^{s_x}\cdot e(h,w)^{-s_\alpha-s_\beta}\cdot e(h,g_2)^{-s_{\delta_1}-s_{\delta_2}}=(e(g_1,g_2)/e(T_3,w)^c)\cdot R_3 e(T3,g2)sxe(h,w)sαsβe(h,g2)sδ1sδ2=(e(g1,g2)/e(T3,w)c)R3
T 1 s x ⋅ u − s δ 1 = R 4 , T 2 s x ⋅ v − s δ 2 = R 5 T_1^{s_x}\cdot u^{-s_{\delta_1}}=R_4,T_2^{s_x}\cdot v^{-s_{\delta_2}}=R_5 T1sxusδ1=R4,T2sxvsδ2=R5
正确性:

e ( T 3 , g 2 ) s x ⋅ e ( h , w ) − s α − s β ⋅ e ( h , g 2 ) − s δ 1 − s δ 2 = e ( T 3 , g 2 ) r x + c x ⋅ e ( h , w ) − r α − r β − c α − c β ⋅ e ( h , g 2 ) − r δ 1 − r δ 2 − c x α − c x β = e ( T 3 , g 2 x ) c ⋅ e ( h − α − β , w g 2 x ) c ⋅ ( e ( T 3 , g 2 ) r x ⋅ e ( h , w ) − r α − r β ⋅ e ( h , g 2 ) − r δ 1 − r δ 2 ) = e ( T 3 h − α − β , w g 2 x ) c ⋅ e ( T 3 , w ) − c ⋅ ( R 3 ) = ( e ( A , w g 2 x ) e ( T 3 , w ) ) c ⋅ R 3 = ( e ( g 1 , g 2 ) e ( T 3 , w ) ) c ⋅ R 3 e(T_3,g_2)^{s_x}\cdot e(h,w)^{-s_\alpha-s_\beta}\cdot e(h,g_2)^{-s_{\delta_1}-s_{\delta_2}}\\ =e(T_3,g_2)^{r_x+cx}\cdot e(h,w)^{-r_\alpha-r_{\beta}-c\alpha-c\beta}\cdot e(h,g_2)^{-r_{\delta_1}-r_{\delta_2}-cx\alpha-cx\beta} \\ =e(T_3,g_2^x)^c\cdot e(h^{-\alpha-\beta},wg_2^x)^c\cdot(e(T_3,g_2)^{r_x}\cdot e(h,w)^{-r_{\alpha}-r_\beta}\cdot e(h,g_2)^{-r\delta_1-r\delta_2})\\ =e(T_3h^{-\alpha-\beta},wg_2^x)^c\cdot e(T_3,w)^{-c}\cdot(R_3)=(\frac{e(A,wg_2^x)}{e(T_3,w)})^c\cdot R_3=(\frac{e(g_1,g_2)}{e(T_3,w)})^c\cdot R_3 e(T3,g2)sxe(h,w)sαsβe(h,g2)sδ1sδ2=e(T3,g2)rx+cxe(h,w)rαrβcαcβe(h,g2)rδ1rδ2ccxβ=e(T3,g2x)ce(hαβ,wg2x)c(e(T3,g2)rxe(h,w)rαrβe(h,g2)rδ1rδ2)=e(T3hαβ,wg2x)ce(T3,w)c(R3)=(e(T3,w)e(A,wg2x))cR3=(e(T3,w)e(g1,g2))cR3

Short Group Signature from SDH

KeyGen ( n ) (n) (n)
  1. n n n 是群成员的大小, g 2 g_2 g2 G 2 G_2 G2 的生成元, g 1 ← ψ ( g 2 ) g_1\leftarrow \psi(g_2) g1ψ(g2) 是群 G 1 G_1 G1 的生成元。选择 h ← G 1 { 1 G 1 } h\leftarrow G_1\{1_{G_1}\} hG1{1G1}(表示 h h h G 1 G_1 G1 中除了单位元的任意元素)和 ξ 1 , ξ 2 ← Z p ∗ \xi_1,\xi_2 \leftarrow Z_p^* ξ1,ξ2Zp,设置 u , v ∈ G 1 u,v \in G_1 u,vG1 使得 u ξ 1 = v ξ 2 = h u^{\xi_1}=v^{\xi_2}=h uξ1=vξ2=h。选择 γ ← Z p ∗ \gamma \leftarrow Z_p^* γZp ,计算 w = g 2 γ w=g_2^\gamma w=g2γ

  2. 使用 γ \gamma γ,为每个用户 i , 1 ≤ i ≤ n i,1\le i \le n i,1in 生成一个 SDH 元组 ( A i , x i ) (A_i,x_i) (Ai,xi):选择 x i ← Z p ∗ x_i\leftarrow Z_p^* xiZp,并设置 A i ← g 1 1 / ( γ + x i ) ∈ G 1 A_i\leftarrow g_1^{1/(\gamma+x_i)}\in G_1 Aig11/(γ+xi)G1

  3. 群公钥为 g p k = ( g 1 , g 2 , h , u , v , w ) gpk=(g_1,g_2,h,u,v,w) gpk=(g1,g2,h,u,v,w),群管理员的私钥为 ( ξ 1 , ξ 2 ) (\xi_1,\xi_2) (ξ1,ξ2),每个用户的私钥为一个元组 g s k [ i ] = ( A i , x i ) gsk[i]=(A_i,x_i) gsk[i]=(Ai,xi)

Sign ( g p k , g s k [ i ] , M ) (gpk,gsk[i],M) (gpk,gsk[i],M)

给定群公钥 g p k = ( g 1 , g 2 , h , u , v , w ) gpk=(g_1,g_2,h,u,v,w) gpk=(g1,g2,h,u,v,w),一个用户的私钥 g s k [ i ] = ( A i , x i ) gsk[i]=(A_i,x_i) gsk[i]=(Ai,xi),和一个消息 M ∈ { 0 , 1 } ∗ M\in \{0,1\}^* M{0,1},计算签名如下:

  1. 通过 protocol 1,计算值 T 1 , T 2 , T 3 , R 1 , R 2 , R 3 , R 4 , R 5 T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5 T1,T2,T3,R1,R2,R3,R4,R5
  2. 计算挑战值 c c c c ← H ( M , T 1 , T 2 , T 3 , R 1 , R 2 , R 3 , R 4 , R 5 ) ∈ Z p c\leftarrow H(M,T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5)\in Z_p cH(M,T1,T2,T3,R1,R2,R3,R4,R5)Zp
  3. 使用 c 构造出响应值 s α , s β , s x , s δ 1 , s δ 2 s_\alpha,s_\beta,s_x,s_{\delta_1},s_{\delta_2} sα,sβ,sx,sδ1,sδ2
  4. 输出签名 σ \sigma σ σ ← ( T 1 , T 2 , T 3 , c , s α , s β , s x , s δ 1 , s δ 2 ) \sigma\leftarrow (T_1,T_2,T_3,c,s_\alpha,s_\beta,s_x,s_{\delta_1},s_{\delta_2}) σ(T1,T2,T3,c,sα,sβ,sx,sδ1,sδ2)
Verify ( g p k , M , σ ) (gpk,M,\sigma) (gpk,M,σ)

给定群公钥 g p k = ( g 1 , g 2 , h , u , v , w ) gpk=(g_1,g_2,h,u,v,w) gpk=(g1,g2,h,u,v,w),一个消息 M M M,和一个群签名 σ \sigma σ,验证 σ \sigma σ 是一个合法签名:

  1. 使用 protocol 1,重新推导出 R 1 , R 2 , R 3 , R 4 , R 5 R_1,R_2,R_3,R_4,R_5 R1,R2,R3,R4,R5 如下:
    R 1 ~ ← u s α ⋅ T 1 − c , R 2 ~ ← v s β ⋅ T 2 − c , R 3 ~ ← e ( T 3 , g 2 ) s x ⋅ e ( h , w ) − s α − s β ⋅ e ( h , g 2 ) − s δ 1 − s δ 2 , R 4 ← T 1 r x u − r δ 1 ⋅ ( e ( T 3 , w ) / e ( g 1 , g 2 ) ) c , R 5 ~ ← T 2 s x v − s δ 2 \tilde{R_1}\leftarrow u^{s_{\alpha}}\cdot T_1^{-c},\tilde{R_2}\leftarrow v^{s_\beta}\cdot T_2^{-c},\tilde{R_3}\leftarrow e(T_3,g_2)^{s_x}\cdot e(h,w)^{-s_\alpha-s_\beta} \cdot e(h,g_2)^{-s_{\delta_1}-s_{\delta_2}},R_4\leftarrow T_1^{r_x}u^{-r_{\delta_1}}\cdot (e(T_3,w)/e(g_1,g_2))^c,\tilde{R_5}\leftarrow T_2^{s_x}v^{-s_{\delta_2}} R1~usαT1c,R2~vsβT2c,R3~e(T3,g2)sxe(h,w)sαsβe(h,g2)sδ1sδ2,R4T1rxurδ1(e(T3,w)/e(g1,g2))c,R5~T2sxvsδ2
  2. 检查挑战值 c c c,验证成功,则签名验证完成:
    c = ? H ( M , T 1 , T 2 , T 3 , R 1 ~ , R 2 ~ , R 3 ~ , R 4 ~ , R 5 ~ ) c\overset{?}{=}H(M,T_1,T_2,T_3,\tilde{R_1},\tilde{R_2},\tilde{R_3},\tilde{R_4},\tilde{R_5}) c=?H(M,T1,T2,T3,R1~,R2~,R3~,R4~,R5~)
Open ( g p k , g m s k , M , σ ) (gpk,gmsk,M,\sigma) (gpk,gmsk,M,σ)

该算法用于追踪签名具体是哪个用户,输入一个群公钥 g p k = ( g 1 , g 2 , h , u , v , w ) gpk=(g_1,g_2,h,u,v,w) gpk=(g1,g2,h,u,v,w) 以及相应群管理员的私钥 g m s k = ( ξ 1 , ξ 2 ) gmsk=(\xi_1,\xi_2) gmsk=(ξ1,ξ2),消息 M M M 和签名 σ = ( T 1 , T 2 , T 3 , c , s α , s β , s x , s δ 1 , s δ 2 ) \sigma=(T_1,T_2,T_3,c,s_\alpha,s_\beta,s_x,s_{\delta_1},s_{\delta_2}) σ=(T1,T2,T3,c,sα,sβ,sx,sδ1,sδ2)。追踪过程为:

  1. 验证 σ \sigma σ M M M 上的有效签名
  2. ( T 1 , T 2 , T 3 ) (T_1,T_2,T_3) (T1,T2,T3) 视为线性加密,通过计算 A ← T 3 T 1 ξ 1 ⋅ T 2 ξ 2 A\leftarrow \frac{T_3}{T_1^{\xi_1}\cdot T_2^{\xi_2}} AT1ξ1T2ξ2T3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值