短群签名——Short Group Signatures

Linear Encryption(线性加密)
决策线性问题产生了线性加密(LE)方案,它是ElGamal加密的自然扩展。与ElGamal加密不同,线性加密即使在存在DDH决定算法的群中也是安全的。在此方案中,用户的公钥是一个三组生成元 u , v , h ∈ G 1 u,v, h \in G1 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 G1 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)中恢复消息,用户计算 T 3 / ( T 1 x ⋅ T 2 y ) T_3/(T_1^x\cdot T_2^y) T3/(T1xT2y)。通过对ElGamal安全性证明的自然扩展,假设Decision-LA成立,LE在语义上是安全的,不会受到选择明文攻击。

A Zero-Knowledge Protocol for SDH
为了证明一个解决SDH方案的问题,提出一个零知识证明。
公共参数: g 1 , u , v , h ∈ G 1 , g 2 , w ∈ G 2 g_1,u,v,h \in G_1, g_2,w \in G_2 g1,u,v,hG1,g2,wG2
g 1 = ψ ( g 2 ) , w = g 2 γ g_1=\psi (g_2),w=g_2^\gamma g1=ψ(g2),w=g2γ,其中 γ ∈ Z p \gamma \in \mathbb{Z}_p γZp是秘密值。

协议证明拥有一对 ( A , x ) (A,x) (A,x), A ∈ G 1 , x ∈ Z p , A x + γ = g 1 A \in G_1, x \in \mathbb{Z}_p,A^{x+\gamma} =g_1 AG1,xZp,Ax+γ=g1,满足 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随机选择指数 α , β ← R Z p \alpha,\beta\stackrel{\mathrm{R}}{\leftarrow}\mathbb{Z}_p α,βRZp,计算A的线性加密:
T 1 ← u α T 2 ← v β T 3 ← A h α + β ( 1 ) . T_1\leftarrow u^\alpha\quad T_2\leftarrow v^\beta\quad T_3\leftarrow Ah^{\alpha+\beta} \quad\quad(1). T1uαT2vβT3Ahα+β(1).

Alice计算两个附加值 δ 1 ← x α ∈ Z p \delta_1\leftarrow x\alpha \in\mathbb{Z}_p δ1Zp δ 2 ← x β ∈ Z p \delta_2\leftarrow x\beta\in\mathbb{Z}_p δ2xβZp

Alice和Bob对满足以下五个关系的值 ( α , β , x , δ 1 , δ 2 ) (\alpha,\beta,x,\delta_1,\delta_2) (α,β,x,δ1,δ2)的知识进行证明。
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 ) ( 2 ) T 1 x u − δ 1 = 1 T 2 x v − δ 2 = 1. u^\alpha=T_1\quad 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)\quad\quad(2)\\T_1^xu^{-\delta_1}=1\quad T_2^xv^{-\delta_2}=1 . uα=T1vβ=T2e(T3,g2)xe(h,w)αβe(h,g2)δ1δ2=e(g1,g2)/e(T3,w)(2)T1xuδ1=1T2xvδ2=1.
(Alice向Bob证明自己拥有五个值 ( α , β , x , δ 1 , δ 2 ) (\alpha,\beta,x,\delta_1,\delta_2) (α,β,x,δ1,δ2),但不能让Bob知道这五个数得具体数值。)
Alice随机选择 r α , r β , r x , r δ 1 , r δ 2 ∈ Z p r_\alpha,r_\beta,r_x,r_{\delta_1},r_{\delta_2} \in \mathbb{Z}_p rα,rβ,rx,rδ1,rδ2Zp。根据这些随机值来计算出以下五个值。
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}}\cdot u^{-r_{\delta_{1}}}R_{5}\leftarrow T_{2}^{r_{x}}\cdot v^{-r_{\delta_{2}}} . R1urαR2vrβR3e(T3,g2)rxe(h,w)rαrβe(h,g2)rδ1rδ2R4T1rxurδ1R5T2rxvrδ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发送一个从 Z p \mathbb{Z}_p Zp中随机均匀选择的挑战值 c ∈ Z p c \in \mathbb{Z}_p cZp。Alice计算
s α ← r α + c α , s β ← r β + c β , s x ← r x + c x , s δ 1 ← r δ 1 + c δ 1 ( 3 ) \begin{aligned}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\end{aligned} \quad\quad(3) sαrα+cα,sβrβ+cβ,sxrx+cx,sδ1rδ1+cδ1(3)并发回这些值。

最后Bob验证以下五个公式:
u s α ? = T 1 c ⋅ R 1 ( 4 ) v s β = ⁡ ? T 2 c ⋅ R 2 ( 5 ) 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 ( 6 ) T 1 s x ⋅ u − s δ 1 = ⁡ ? R 4 ( 7 ) T 2 s x ⋅ v − s δ 2 = ⁡ ? R 5 ( 8 ) . \begin{aligned} u^{s_{\alpha}}& \begin{array}{cc}\frac{?}{=}&T_1^c\cdot R_1\end{array}\quad\quad(4) \\ v^{s_{\beta}}& \begin{array}{cc}\overset{?}{\operatorname*{=}}&T_2^c\cdot R_2\end{array} \quad\quad(5)\\ 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}}}& \overset{?}{=}\quad\left(e(g_1,g_2)/e(T_3,w)\right)^c\cdot R_3 \quad\quad(6) \\ T_1^{s_x}\cdot u^{-s_{\delta_1}}& \begin{matrix} \overset{?}{\operatorname*{=}}&R_4\end{matrix} \quad\quad(7)\\ T_{2}^{s_{x}}\cdot v^{-s_{\delta_{2}}}& \begin{array}{cc}\overset{?}{\operatorname*{=}}&R_5 \quad\quad(8)\end{array}. \end{aligned} usαvsβe(T3,g2)sxe(h,w)sαsβe(h,g2)sδ1sδ2T1sxusδ1T2sxvsδ2=?T1cR1(4)=?T2cR2(5)=?(e(g1,g2)/e(T3,w))cR3(6)=?R4(7)=?R5(8).
如果5个都成立,Bob就接受这个证明。

Theorem 1协议1是在DL假设下对SDH元组(A,x)知识的诚实验证者的零知识证明。 定理的证明遵循以下引理,这些引理表明协议是
(1)完整的(验证者总是接受与诚实的证明者的交互),
(2)零知识(可以模拟),以及
(3)知识证明(具有提取器)。

Lemma 1. Protocol 1 是完整的
Proof. 如果Alice是一个拥有SDH元组对 ( A , x ) (A, x) (A,x)的诚实证明者,她遵循协议中为她指定的计算。在这种情况下
u s α = u r α + c α = ( u α ) c ⋅ u r α = T 1 c ⋅ R 1 u^{s_\alpha}=u^{r_\alpha+c\alpha}=(u^\alpha)^c\cdot u^{r_\alpha}=T_1^c\cdot R_1 usα=urα+cα=(uα)curα=T1cR1
因此(4)成立。由于类似的原因(5)成立。此外,
T 1 s x u − s δ 1 = ( u α ) r x + c x u − r δ 1 − c x α = ( u α ) r x u − r δ 1 = T 1 r x u − r δ 1 = R 4 T_1^{s_x}u^{-s_{\delta_1}}=(u^\alpha)^{r_x+cx}u^{-r_{\delta_1}-cx\alpha}=(u^\alpha)^{r_x}u^{-r_{\delta_1}}=T_1^{r_x}u^{-r_{\delta_1}}=R_4 T1sxusδ1=(uα)rx+cxurδ1c=(uα)rxurδ1=T1rxurδ1=R4
所以(7)成立。由于类似的原因(8)成立。最后
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)^{s_x}\cdot e(h,w)^{-s_\alpha-s_\beta}\cdot e(h,g_2)^{-s_{\delta_1}-s_{\delta_2}} e(T3,g2)sxe(h,w)sαsβe(h,g2)sδ1sδ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)^{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(T3,g2)rx+cxe(h,w)rαrβcαcβe(h,g2)rδ1rδ2ccxβ
= 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,g_2^x)^c\cdot e(h^{-\alpha-\beta},wg_2^x)^c\cdot\left(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}}\right) e(T3,g2x)ce(hαβ,wg2x)c(e(T3,g2)rxe(h,w)rαrβe(h,g2)rδ1rδ2)
= e ( T 3 h − α − β , w g 2 x ) c ⋅ e ( T 3 , w ) − c ⋅ ( R 3 ) e(T_3h^{-\alpha-\beta},wg_2^x)^c\cdot e(T_3,w)^{-c}\cdot(R_3) e(T3hαβ,wg2x)ce(T3,w)c(R3)
= ( e ( A , w g 2 x ) / e ( T 3 , w ) ) c ⋅ R 3 \left(e(A,wg_2^x)/e(T_3,w)\right)^c\cdot R_3 (e(A,wg2x)/e(T3,w))cR3
= ( e ( g 1 , g 2 ) / e ( T 3 , w ) ) c ⋅ R 3 \left(e(g_1,g_2)/e(T_3,w)\right)^c\cdot R_3 (e(g1,g2)/e(T3,w))cR3
所以(6)成立。

Lemma 2. 对于一个诚实的验证者,可以在决策线性假设下模拟Protocol 1的副本。
Proof. 我们描述了一个模拟器,输出Protocol 1 的副本。模拟器首先选取 A ← R G 1 A\stackrel{\mathrm{R}}{\leftarrow}G_{1} ARG1 α , β ← R Z p \alpha,\beta\xleftarrow{\mathrm{R}}\mathbb{Z}_p α,βR Zp。设置 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α+β。假设G1上的DL假设成立,则模拟器生成的元组 ( T 1 , T 2 , T 3 ) (T_1, T_2, T_3) T1,T2,T3是从一个分布中提取的,该分布与任何特定证明者的分布输出无法区分。

该模拟的其余部分假设不知道 A , x , α , β A, x, \alpha, \beta A,x,α,β,因此它也可以在预先指定 T 1 T_1 T1 T 2 T_2 T2 T 3 T_3 T3时使用。当预先指定的 ( T 1 , T 2 , T 3 ) (T_1,T_2,T_3) (T1,T2,T3)是某个 A A A的随机线性加密时,副本的其余部分被完美地模拟,就像在Schnorr知识证明的标准模拟中一样。

模拟器选择一个挑战 c ← R Z p c\stackrel{\mathrm{R}}{\leftarrow}\mathbb{Z}_p cRZp,和其他值 s α , s β , s x , s δ 1 , s δ 2 ← R Z p s_\alpha,s_\beta,s_x,s_{\delta_1},s_{\delta_2}\stackrel{\mathrm{R}}{\leftarrow}\mathbb{Z}_p sα,sβ,sx,sδ1,sδ2RZp。模拟器计算 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 4 ← T 1 s x ⋅ u − s δ 1 R 5 ← T 2 s x ⋅ v − s δ 2 R 3 ← e ( T 3 , g 2 ) s x ⋅ e ( h , w ) − s α − s β ⋅ e ( h , g 2 ) − s δ 1 − s δ 2 ⋅ ( e ( T 3 , w ) / e ( g 1 , g 2 ) ) c . R_1\leftarrow u^{s_\alpha}\cdot T_1^{-c}\quad R_2\leftarrow v^{s_\beta}\cdot T_2^{-c}\quad R_4\leftarrow T_1^{s_x}\cdot u^{-s_{\delta_1}}\quad R_5\leftarrow T_2^{s_x}\cdot v^{-s_{\delta_2}}\\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}}\cdot\left(e(T_3,w)/e(g_1,g_2)\right)^c . R1usαT1cR2vsβT2cR4T1sxusδ1R5T2sxvsδ2R3e(T3,g2)sxe(h,w)sαsβe(h,g2)sδ1sδ2(e(T3,w)/e(g1,g2))c.
结果值明显满足(4)-(8)。此外, 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的分布与真实副本相同。

模拟器输出副本 ( T 1 , T 2 , T 3 , R 1 , R 2 , R 3 , R 4 , R 5 , c , s α , s β , s x , s δ 1 , s δ 2 ) \begin{aligned}(T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5,c,s_\alpha,s_\beta,s_x,s_{\delta_1},s_{\delta_2})\end{aligned} (T1,T2,T3,R1,R2,R3,R4,R5,c,sα,sβ,sx,sδ1,sδ2)。如上所述,假设决策线性假设成立,该副本与协议1的副本无法区分。

Lemma 3. Protocol 1 存在一个提取器。
Proof. 假设提取器可以将上述协议中的证明者倒回到证明者接受挑战 c c c之前的点。在协议的第一步,证明者发送 T 1 , T 2 , T 3 T_1,T_2,T_3 T1,T2,T3 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。然后,为挑战值 c c 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响应。为了挑战值 c ′ ≠ c c'\neq c c=c,证明者用 s α ′ , s β ′ , s x ′ , s δ 1 ′ , s δ 2 ′ \begin{aligned}s_{\alpha}', s_{\beta}', s_{x}', s_{\delta_{1}}', s_{\delta_{2}}'\end{aligned} sα,sβ,sx,sδ1,sδ2来响应。如果证明者是令人信服的,所有五个验证方程(4)-(8)对每一组值都成立。
为简洁起见,设 Δ c = c − c ′ \Delta c=c-c^{\prime} Δc=cc Δ s α = s α − s α ′ \Delta s_\alpha=s_\alpha-s_\alpha' Δsα=sαsα,同样地,设 Δ s β , Δ s x , Δ s δ 1 , Δ s δ 2 \Delta s_\beta, \Delta s_x, \Delta s_{\delta_1}, \Delta s_{\delta_2} Δsβ,Δsx,Δsδ1,Δsδ2

现在考虑上面的(4)。通过除以这个方程的两个实例(一个使用 c c c,另一个使用 c ′ c ' c),我们得到 u Δ s α = T 1 Δ c u^{\Delta s_{\alpha}}=T_{1}^{\Delta c} uΔsα=T1Δc。指数在一组已知的素数阶中,所以我们可以求根;令 α ~ = Δ s α / Δ c \tilde{\alpha}=\Delta s_{\alpha}/\Delta c α~=Δsαc。那么 u α ~ = T 1 u^{\tilde{\alpha}}=T_1 uα~=T1。同样地,由式(5),我们得到了 β ~ = Δ s β / Δ c \tilde{\beta}=\Delta s_\beta/\Delta c β~=Δsβc,使得 v β ~ = T 2 v^{\tilde{\beta}}=T_2 vβ~=T2

考虑上面的公式(7)。通过除以两个实例,可以得到 T 1 Δ s x = u Δ s δ 1 T_{1}^{\Delta s_{x}}=u^{\Delta s_{\delta_{1}}} T1Δsx=uΔsδ1。代入 T 1 = u α ~ T_1=u^{\tilde{\alpha}} T1=uα~得到 u α ~ Δ s x = u Δ s δ 1 u^{\tilde{\alpha}\Delta s_{x}}=u^{\Delta s_{\delta_{1}}} uα~Δsx=uΔsδ1或者 Δ s δ 1 = α ~ Δ s x \Delta s_{\delta_1}=\tilde{\alpha}\Delta s_x Δsδ1=α~Δsx。类似的,从(8)中可以推断出 Δ s δ 2 = β ~ Δ s x \Delta s_{\delta_2}=\tilde{\beta}\Delta s_x Δsδ2=β~Δsx。最后,将(6)的两个实例相除,得到
( e ( g 1 , g 2 ) / e ( T 3 , w ) ) Δ c = 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 ) Δ s x ⋅ e ( h , w ) − Δ s α − Δ s β ⋅ e ( h , g 2 ) − α ~ Δ s x − β ~ Δ s x . \begin{aligned}\begin{pmatrix}e(g_1,g_2)/e(T_3,w)\end{pmatrix}^{\Delta c}&=\quad e(T_3,g_2)^{\Delta s_x}\cdot e(h,w)^{-\Delta s_\alpha-\Delta s_\beta}\cdot e(h,g_2)^{-\Delta s_{\delta_1}-\Delta s_{\delta_2}}\\&=\quad e(T_3,g_2)^{\Delta s_x}\cdot e(h,w)^{-\Delta s_\alpha-\Delta s_\beta}\cdot e(h,g_2)^{-\tilde{\alpha}\Delta s_x-\tilde{\beta}\Delta s_x}.\end{aligned} (e(g1,g2)/e(T3,w))Δc=e(T3,g2)Δsxe(h,w)ΔsαΔsβe(h,g2)Δsδ1Δsδ2=e(T3,g2)Δsxe(h,w)ΔsαΔsβe(h,g2)α~Δsxβ~Δsx.

x ~ = Δ s x / Δ c \tilde{x}=\Delta s_x/\Delta c x~=Δsxc,得
e ( g 1 , g 2 ) / e ( T 3 , w ) = e ( T 3 , g 2 ) x ~ ⋅ e ( h , w ) − α ~ − β ~ ⋅ e ( h , g 2 ) − x ~ ( α ~ + β ~ ) e(g_1,g_2)/e(T_3,w)=e(T_3,g_2)^{\tilde{x}}\cdot e(h,w)^{-\tilde{\alpha}-\tilde{\beta}}\cdot e(h,g_2)^{-\tilde{x}(\tilde{\alpha}+\tilde{\beta})} e(g1,g2)/e(T3,w)=e(T3,g2)x~e(h,w)α~β~e(h,g2)x~(α~+β~)
可以重新排列得到: e ( g 1 , g 2 ) = e ( T 3 h − α ~ − β ~ , w g 2 x ~ ) e(g_1,g_2)=e(T_3h^{-\tilde\alpha-\tilde\beta},wg_2^{\tilde x}) e(g1,g2)=e(T3hα~β~,wg2x~)
或者,设 A ~ = T 3 h − α ~ − β ~ \tilde{A}=T_3h^{-\tilde{\alpha}-\tilde{\beta}} A~=T3hα~β~
e ( A ~ , w g 2 x ~ ) = e ( g 1 , g 2 ) e(\tilde{A},wg_2^{\tilde{x}})=e(g_1,g_2) e(A~,wg2x~)=e(g1,g2)

这样提取器就得到了一个SDH元组 ( A , x ) (A, x) (A,x),而且这个SDH元组中的 A A A必然与线性加密 ( T 1 , T 2 , T 3 ) (T_1, T_2, T_3) T1,T2,T3中的 A A A相同。

基于SDH 的短群签名
通过Fiat-Shamir启发式从知识证明中获得的签名通常被称为知识签名。
KeyGen(n): 该随机化算法以参数n(群体成员的数量)作为输入。在 G 2 G_2 G2中均匀随机选择一个生成元 g 2 g_2 g2,并设 g 1 ← ψ ( g 2 ) g_1\leftarrow\psi(g_2) g1ψ(g2) ξ 1 , ξ 2 ← R Z p ∗ \xi_{1},\xi_{2}\stackrel{\mathrm{R}}{\leftarrow}\mathbb{Z}_{p}^{*} ξ1,ξ2RZp 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 γ ← ⁡ R Z p ∗ \gamma\overset{\mathrm{R}}{\operatorname*{\leftarrow}}\mathbb{Z}_p^* γRZp w = g 2 γ w=g_2^{\gamma} w=g2γ

使用 γ \gamma γ为每个用户i( 1 ≤ i ≤ n 1\leq i\leq n 1in)生成一个SDH元组 ( A i , x i ) (A_i,x_i) (Ai,xi):随机选择 x i ← R Z p ∗ x_{i}\stackrel{\mathrm{R}}{\leftarrow}\mathbb{Z}_{p}^{*} xiRZp,设置 A i ← g 1 1 / ( γ + x i ) ∈ G 1 A_i\leftarrow g_1^{1/(\gamma+x_i)}\in G_1 Aig11/(γ+xi)G1
群组公钥为 gpk  = ( g 1 , g 2 , h , u , v , w ) \text{gpk }=(g_1,g_2,h,u,v,w) gpk =(g1,g2,h,u,v,w),群管理员(可跟踪签名的一方)的私钥为 g m s k = ( ξ 1 , ξ 2 ) \mathrm{gmsk}=(\xi_1,\xi_2) gmsk=(ξ1,ξ2)。每个用户的私钥是 g s k [ i ] = ( A i , x i ) \mathbf{gsk}[i]=(A_i,x_i) gsk[i]=(Ai,xi)。任何一方都不允许拥有 γ \gamma γ。只有私钥发行者知道它。

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

  1. 计算协议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的值(公式(1)和(2))。
  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 ( 9 ) c\leftarrow H(M,T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5)\in\mathbb{Z}_p \quad \quad (9) cH(M,T1,T2,T3,R1,R2,R3,R4,R5)Zp(9)
  3. 使用 c c 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δ2Protocol 1 的式(3)。
  4. 输出签名 σ ← ( 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(gpk,M, σ \sigma σ) : 给定群公钥 gpk  = ( g 1 , g 2 , h , u , v , w ) \text{gpk }=(g_1,g_2,h,u,v,w) gpk =(g1,g2,h,u,v,w),消息 M M M和群签名 σ \sigma σ,验证 σ \sigma σ是有效签名,如下所示:

  1. 利用式(4)-式(8)重新导出 R 1 , R 2 , R 3 , R 4 , R 5 R_1,R2,R3,R4,R5 R1,R2,R3,R4,R5如下:
    R 1 ~ ← u s α ⋅ T 1 − c R 2 ~ ← v s β ⋅ T 2 − c R 4 ~ ← T 1 s x ⋅ u − s δ 1 R 5 ~ ← T 2 s x ⋅ v − s δ 2 R 3 ~ ← e ( T 3 , g 2 ) s x ⋅ e ( h , w ) − s α − s β ⋅ e ( h , g 2 ) − s δ 1 − s δ 2 ⋅ ( e ( T 3 , w ) / e ( g 1 , g 2 ) ) c . \tilde{R_{1}}\leftarrow u^{s_{\alpha}}\cdot T_{1}^{-c}\quad\tilde{R_{2}}\leftarrow v^{s_{\beta}}\cdot T_{2}^{-c}\quad\tilde{R_{4}}\leftarrow T_{1}^{s_{x}}\cdot u^{-s_{\delta_{1}}}\quad\tilde{R_{5}}\leftarrow T_{2}^{s_{x}}\cdot v^{-s_{\delta_{2}}}\\\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}}}\cdot\left(e(T_{3},w)/e(g_{1},g_{2})\right)^{c} . R1~usαT1cR2~vsβT2cR4~T1sxusδ1R5~T2sxvsδ2R3~e(T3,g2)sxe(h,w)sαsβe(h,g2)sδ1sδ2(e(T3,w)/e(g1,g2))c.
  2. 检查这些值,以及σ中包含的其他第一轮值给出挑战c,即
    c = ? H ( M , T 1 , T 2 , T 3 , R ~ 1 , R ~ 2 , R ~ 3 , R ~ 4 , R ~ 5 ) c\stackrel{?}{=}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,R~1,R~2,R~3,R~4,R~5)
    如果检查成功则接受,否则拒绝。

Open(gpk,gmsk,M, σ \sigma σ): 该算法用于跟踪签名到签名者。输入群公钥 gpk  = ( g 1 , g 2 , h , u , v , w ) \text{gpk }=(g_1,g_2,h,u,v,w) gpk =(g1,g2,h,u,v,w)和对应的组管理员私钥 g m s k = ( ξ 1 , ξ 2 ) \mathrm{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作为线性加密,按照 T 3 / ( T 1 x ⋅ T 2 y ) {T_{3}}/(T_{1}^{x}\cdot T_{2}^{y}) T3/(T1xT2y),将用户的A还原为 A ← T 3 / ( T 1 ξ 1 ⋅ T 2 ξ 2 ) A\leftarrow T_3/(T_1^{\xi_1}\cdot T_2^{\xi_2}) AT3/(T1ξ1T2ξ2)。如果给组管理员用户私钥的元素 { A i } \{A_i\} {Ai},他可以查找从签名中恢复的身份A对应的用户索引。

Signature Length. 系统中的群签名由 G 1 G_1 G1的3个元素和 Z p \Z_p Zp的6个元素组成。使用[1]中描述的任何曲线族,可以取p为170位素数,并使用每个元素为171位的群G1。这样,组签名的总长度为1533位(192字节)。使用这些参数,安全性与标准的1024位RSA签名大致相同,即128字节。

Performance. 签名者和验证者都可以预先计算和缓存 e ( h , w ) , e ( h , g 2 ) , e ( g 1 , g 2 ) e(h,w),e(h,g_2),e(g_1,g_2) e(h,w),e(h,g2),e(g1,g2)。签名者可以缓存 e ( A , g 2 ) e(A,g_2) e(A,g2),并在签名时计算 e ( T 3 , g 2 ) e(T_3,g_2) e(T3,g2),而无需计算配对。因此,创建群签名需要8次幂运算(或乘法幂运算)。验证者可以通过将 e ( T 3 , g 2 ) s x e(T_3,g_2)^{s_x} e(T3,g2)sx e ( T 3 , w ) c e(T_3,w)^c e(T3,w)c压缩成单个 e ( T 3 , w c g 2 s x ) e(T_3,w^cg_2^{s_x}) e(T3,wcg2sx)来有效地导出 R ~ 3 \tilde{R}_{3} R~3。因此,验证群签名需要6次乘法幂运算和1次配对计算。使用如上所述选择的参数,指数在每种情况下都是170位的数字。对于签名者,所有求幂的基数都是固定的,这允许通过预计算进一步加速。

[1]D. Boneh, B. Lynn, and H. Shacham. Short signatures from the Weil pairing. In Proceedings of Asiacrypt 2001, volume 2248 of LNCS, pages 514–32. Springer-Verlag, Dec. 2001.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值