论文阅读---Constant-Size Dynamic k-TAA

Constant-Size Dynamic k-TAA

https://eprint.iacr.org/2008/136.pdf

Global Common parameters

λ \lambda λ 是安全参数, ( G 1 , G 2 ) (\mathbb{G}_1,\mathbb{G}_2) (G1,G2) 的阶是 p p p H : { 0 , 1 } ∗ → Z p , H e v t { 0 , 1 } ∗ → G p H:\{0,1\}^*\rightarrow Z_p,H_{evt}\{0,1\}^*\rightarrow \mathbb{G}_p H:{0,1}Zp,Hevt{0,1}Gp g 0 , g 1 , g 2 , g 3 g_0,g_1,g_2,g_3 g0,g1,g2,g3 G 1 \mathbb{G}_1 G1 的生成元, h 0 , h 1 , h 2 , h 3 h_0,h_1,h_2,h_3 h0,h1,h2,h3 G 2 \mathbb{G}_2 G2 的生成元, u 0 , u 1 , u 2 , u 3 u_0,u_1,u_2,u_3 u0,u1,u2,u3 G p \mathbb{G}_p Gp 的生成元。

BBS+ Signature

KeyGen. 随机选取 γ ∈ Z p ∗ \gamma\in Z_p^* γZp 并计算 w = h 0 γ w=h_0^{\gamma} w=h0γ。私钥是 γ \gamma γ,公钥是 w w w

Signing block of messages. 输入 ( m 1 , . . . , m L ) ∈ Z p L (m_1,...,m_L)\in Z_p^L (m1,...,mL)ZpL,选择 e e e 和随机数 s s s。计算 A = [ g 0 g 1 s g 2 m 1 g 3 m 2 . . . g L + 1 m L ] 1 e + γ A=[g_0g_1^sg_2^{m_1}g_3^{m_2}...g_{L+1}^{m_L}]^{\frac{1}{e+\gamma}} A=[g0g1sg2m1g3m2...gL+1mL]e+γ1。签名是 (A,e,s)。

Signature Verification. 验证签名 ( A , e , s ) (A,e,s) (A,e,s),检查 e ( A , w h 0 e ) = e ( g 0 g 1 s g 2 m 1 g 3 m 2 ⋅ ⋅ ⋅ g L + 1 m L , h 0 ) e(A,wh^{e}_0)=e(g_0g_1^sg_2^{m_1}g_3^{m_2}\cdot\cdot\cdot g_{L+1}^{m_L},h_0) e(A,wh0e)=e(g0g1sg2m1g3m2gL+1mL,h0)

Protocol for Signng Committed Block of Messages.

用户计算消息块的佩德森承诺 C m = g 1 s ′ g 2 m 1 g 3 m 2 ⋅ ⋅ ⋅ g L + 1 m L C_m=g_1^{s'}g_2^{m_1}g_3^{m_2}\cdot\cdot\cdot g_{L+1}^{m_L} Cm=g1sg2m1g3m2gL+1mL,用户也需要向签名者证明 C m C_m Cm 是正确生成的。
P K { ( s ′ , m 1 , . . . , m L ) : C m = g 1 s ′ g 2 m 1 g 3 m 2 ⋅ ⋅ ⋅ g L + 1 m L } PK\{(s',m_1,...,m_L):C_m=g_1^{s'}g_2^{m_1}g_3^{m_2}\cdot\cdot\cdot g_{L+1}^{m_L}\} PK{(s,m1,...,mL):Cm=g1sg2m1g3m2gL+1mL}。签名者选择 s ′ ′ s'' s′′,计算 A = [ g 0 g 1 s ′ ′ C m ] 1 e + γ A=[g_0g_1^{s''}C_m]^{\frac{1}{e+\gamma}} A=[g0g1s′′Cm]e+γ1 并回送 ( A , e , s ′ ′ ) (A,e,s'') (A,e,s′′) 给用户。用户计算 s = s ′ + s ′ ′ s=s'+s'' s=s+s′′,消息块上的签名是 ( A , e , s ) (A,e,s) (A,e,s)。对于任何消息块 ( m 1 , . . . , m L ) (m_1,...,m_L) (m1,...,mL),存在一个 s ′ s' s 使得 C m = g 1 s ′ g 2 m 1 g 3 m 2 ⋅ ⋅ ⋅ g L + 1 m L C_m=g_1^{s'}g_2^{m_1}g_3^{m_2}\cdot\cdot\cdot g_{L+1}^{m_L} Cm=g1sg2m1g3m2gL+1mL,并且 s ′ s' s 完全隐藏了消息块消息 m 1 , . . . , m L m_1,...,m_L m1,...,mL。因此,签名者对要签名的消息一无所知。

Proof of Knowledge of A Signature.

我们给出一个零知识证明协议来显示签名的所有权(拥有签名)。一个用户拥有在消息块 ( m 1 , . . . , m L ) (m_1,...,m_L) (m1,...,mL) 的签名 ( A , e , s ) (A,e,s) (A,e,s) 可以通过计算 S P K { ( A , e , s , m 1 , . . . , m L ) : A e + γ = g 0 g 1 s g 2 m 1 , . . . , g L + 1 m L } ( M ) SPK\{(A,e,s,m_1,...,m_L):A^{e+\gamma}=g_0g_1^sg_2^{m_1},...,g_{L+1}^{m_L}\}(M) SPK{(A,e,s,m1,...,mL):Ae+γ=g0g1sg2m1,...,gL+1mL}(M) 首先通过计算如下等式:
A 1 = g 1 r 1 g 2 r 2 , A 2 = A g 2 r 1 A_1=g_1^{r_1}g_2^{r_2},A_2=Ag_2^{r_1} A1=g1r1g2r2,A2=Ag2r1,其中 r 1 , r 2 ∈ Z p ∗ r_1,r_2\in Z_p^* r1,r2Zp。之后计算 S P K ∏ 5 SPK \prod_5 SPK5,其中 δ 1 = r 1 e \delta_1=r_1e δ1=r1e δ 2 = r 2 e \delta_2=r_2e δ2=r2e

∏ 5 : S P K { { ( r 1 , r 2 , e , δ 1 , δ 2 , s , m 1 , . . . , m L ) : A 1 = g 1 r 1 g 2 r 2 ∧ A 1 e = g 1 δ 1 g 2 δ 2 ∧ e ( A 2 , w ) e ( g 0 , h 0 ) = e ( A 2 , h 0 ) − e e ( g 2 , w ) r 1 e ( g 2 , h 0 ) δ 1 e ( g 1 , h 0 ) s e ( g 2 , h 0 ) m 1 ⋅ ⋅ ⋅ e ( g L + 1 , h 0 ) m L } ( M ) \prod_5:SPK\begin{Bmatrix} \{(r_1,r_2,e,\delta_1,\delta_2,s,m_1,...,m_L):A_1=g_1^{r_1}g_2^{r_2}\wedge A_1^e=g_1^{\delta_1}g_2^{\delta_2} \\ \wedge \frac{e(A_2,w)}{e(g_0,h_0)}=e(A_2,h_0)^{-e}e(g_2,w)^{r_1}e(g_2,h_0)^{\delta_1}e(g_1,h_0)^se(g_2,h_0)^{m_1}\cdot\cdot\cdot e(g_{L+1},h_0)^{m_L} \end{Bmatrix}(M) 5:SPK{{(r1,r2,e,δ1,δ2,s,m1,...,mL):A1=g1r1g2r2A1e=g1δ1g2δ2e(g0,h0)e(A2,w)=e(A2,h0)ee(g2,w)r1e(g2,h0)δ1e(g1,h0)se(g2,h0)m1e(gL+1,h0)mL}(M)
正确性:

  1. e ( A g 2 r 1 , h 0 γ ) e ( g 0 , h 0 ) = e ( g 0 1 e + γ g 1 s e + γ g 2 m 1 e + γ + r 1 ⋅ ⋅ ⋅ g L + 1 m L e + γ , h 0 γ ) / e ( g 0 , h 0 ) = e ( g 0 γ e + γ g 1 s γ e + γ g 2 m 1 γ e + γ + r 1 γ ⋅ ⋅ ⋅ g L + 1 m L γ e + γ , h 0 ) / e ( g 0 , h 0 ) = e ( g 0 − e e + γ g 1 s γ e + γ g 2 m 1 γ e + γ + r 1 γ ⋅ ⋅ ⋅ g L + 1 m L γ e + γ , h 0 ) \frac{e(Ag_2^{r_1},h_0^\gamma)}{e(g_0,h_0)}=e(g_0^{\frac{1}{e+\gamma}}g_1^{\frac{s}{e+\gamma}}g_2^{\frac{m_1}{e+\gamma}+r_1}\cdot\cdot\cdot g_{L+1}^{\frac{m_L}{e+\gamma}},h_0^\gamma)/e(g_0,h_0)=e(g_0^{\frac{\gamma}{e+\gamma}}g_1^{\frac{s\gamma}{e+\gamma}}g_2^{\frac{m_1\gamma}{e+\gamma}+r_1\gamma}\cdot\cdot\cdot g_{L+1}^{\frac{m_L\gamma}{e+\gamma}},h_0)/e(g_0,h_0)=e(g_0^{\frac{-e}{e+\gamma}}g_1^{\frac{s\gamma}{e+\gamma}}g_2^{\frac{m_1\gamma}{e+\gamma}+r_1\gamma}\cdot\cdot\cdot g_{L+1}^{\frac{m_L\gamma}{e+\gamma}},h_0) e(g0,h0)e(Ag2r1,h0γ)=e(g0e+γ1g1e+γsg2e+γm1+r1gL+1e+γmL,h0γ)/e(g0,h0)=e(g0e+γγg1e+γsγg2e+γm1γ+r1γgL+1e+γmLγ,h0)/e(g0,h0)=e(g0e+γeg1e+γsγg2e+γm1γ+r1γgL+1e+γmLγ,h0)
  2. e ( A 2 , h 0 ) − e = e ( g 0 1 e + γ g 1 s e + γ g 2 m 1 e + γ + r 1 ⋅ ⋅ ⋅ g L + 1 m L e + γ , h 0 ) − e = e ( g 0 − e e + γ g 1 − e s e + γ g 2 − e m 1 e + γ + − e r 1 ⋅ ⋅ ⋅ g L + 1 − e m L e + γ , h 0 ) e(A_2,h_0)^{-e}=e(g_0^{\frac{1}{e+\gamma}}g_1^{\frac{s}{e+\gamma}}g_2^{\frac{m_1}{e+\gamma}+r_1}\cdot\cdot\cdot g_{L+1}^{\frac{m_L}{e+\gamma}},h_0)^{-e}=e(g_0^{\frac{-e}{e+\gamma}}g_1^{\frac{-es}{e+\gamma}}g_2^{\frac{-em_1}{e+\gamma}+-er_1}\cdot\cdot\cdot g_{L+1}^{\frac{-em_L}{e+\gamma}},h_0) e(A2,h0)e=e(g0e+γ1g1e+γsg2e+γm1+r1gL+1e+γmL,h0)e=e(g0e+γeg1e+γesg2e+γem1+−er1gL+1e+γemL,h0)
  3. e ( g 2 , w ) r 1 e ( g 2 , h 0 ) δ 1 e ( g 1 , h 0 ) s e ( g 2 , h 0 ) m 1 ⋅ ⋅ ⋅ e ( g L + 1 , h 0 ) m L = e ( g 2 , h 0 γ ) r 1 e ( g 2 , h 0 ) r 1 e e ( g 1 , h 0 ) s e ( g 2 , h 0 ) m 1 ⋅ ⋅ ⋅ e ( g L + 1 , h 0 ) m L e(g_2,w)^{r_1}e(g_2,h_0)^{\delta_1}e(g_1,h_0)^se(g_2,h_0)^{m_1}\cdot\cdot\cdot e(g_{L+1},h_0)^{m_L}=e(g_2,h_0^\gamma)^{r_1}e(g_2,h_0)^{r_1e}e(g_1,h_0)^se(g_2,h_0)^{m_1}\cdot\cdot\cdot e(g_{L+1},h_0)^{m_L} e(g2,w)r1e(g2,h0)δ1e(g1,h0)se(g2,h0)m1e(gL+1,h0)mL=e(g2,h0γ)r1e(g2,h0)r1ee(g1,h0)se(g2,h0)m1e(gL+1,h0)mL
    = e ( g 2 , h 0 ) r 1 e + γ r 1 + m 1 e ( g 1 , h 0 ) s ⋅ ⋅ ⋅ e ( g L + 1 , h 0 ) m L =e(g_2,h_0)^{r_1e+\gamma r_1+m_1}e(g_1,h_0)^s\cdot\cdot\cdot e(g_{L+1},h_0)^{m_L} =e(g2,h0)r1e+γr1+m1e(g1,h0)se(gL+1,h0)mL

合并:

e ( g 0 − e e + γ g 1 s γ e + γ g 2 m 1 γ e + γ + r 1 γ ⋅ ⋅ ⋅ g L + 1 m L γ e + γ , h 0 ) = e ( g 0 − e e + γ g 1 − e s e + γ g 2 − e m 1 e + γ + − e r 1 ⋅ ⋅ ⋅ g L + 1 − e m L e + γ , h 0 ) ⋅ e ( g 2 , h 0 ) r 1 e + γ r 1 + m 1 e ( g 1 , h 0 ) s ⋅ ⋅ ⋅ e ( g L + 1 , h 0 ) m L e(g_0^{\frac{-e}{e+\gamma}}g_1^{\frac{s\gamma}{e+\gamma}}g_2^{\frac{m_1\gamma}{e+\gamma}+r_1\gamma}\cdot\cdot\cdot g_{L+1}^{\frac{m_L\gamma}{e+\gamma}},h_0)=e(g_0^{\frac{-e}{e+\gamma}}g_1^{\frac{-es}{e+\gamma}}g_2^{\frac{-em_1}{e+\gamma}+-er_1}\cdot\cdot\cdot g_{L+1}^{\frac{-em_L}{e+\gamma}},h_0)\cdot e(g_2,h_0)^{r_1e+\gamma r_1+m_1}e(g_1,h_0)^s\cdot\cdot\cdot e(g_{L+1},h_0)^{m_L} e(g0e+γeg1e+γsγg2e+γm1γ+r1γgL+1e+γmLγ,h0)=e(g0e+γeg1e+γesg2e+γem1+−er1gL+1e+γemL,h0)e(g2,h0)r1e+γr1+m1e(g1,h0)se(gL+1,h0)mL

Overview of Our Construction

Join. GM 拥有 BBS+ 签名的公私钥对。随机选择 x ∈ Z p ∗ x\in Z_p^* xZp,将 u 0 x u_0^x u0x 作为用户的身份。用户的成员证书(membership certificate)是一个在 ( s , t , x ) (s,t,x) (s,t,x) 上的 BBS+ 签名,形式为 ( A , e ) (A,e) (A,e),其中 s , t ∈ Z p ∗ s,t\in Z_p^* s,tZp。最后,GM 将 ( u 0 x , e ) (u_0^x,e) (u0x,e) 放置在身份列表中。

GrantingAccess/RevokeAccess. 每个 AP 生成自己的累加器。他们将 e e e 放置进累加器中并且返回 witness w A P w_{AP} wAP 给用户。要撤销用户访问,AP 将 e e e 移出累加器。

Authenticaion. 认证的想法是向 AP(验证者)说明其拥有来自 GM 的一个在值 ( t , x ) (t,x) (t,x) 上的 BBS+ 签名,并且 e e e 的确在 AP 的累加器里面。为了限制用户认证自己的次数超过 k k k 次,我们使用伪随机函数 pseudo-random function(PRF)。我们令 u A P u_{AP} uAP 是循环群中的一个随机元素等于 AP 的 hash 值。用户计算 S = u A P 1 s + J A P + 1 S=u_{AP}^{\frac{1}{s+J_{AP}+1}} S=uAPs+JAP+11 并证明 S S S 相对于 BBS+ 签名成分 s s s 是正确形成的,同样也需要证明 1 ≤ J A P ≤ k 1\le J_{AP}\le k 1JAPk。这样,对于一个特定的 AP,用户只能生成 k k k 个有效的 S S S,我们称之为序列号。如果他试图认证自己超过 k k k 次,就必须使用重复的序列号,因此可以检测到。

最后,为了撤销认证自己超过 k k k 次的用户,另一组件 T = u 0 x u A P R t + J A P + 1 T=u_0^xu_{AP}^{\frac{R}{t+J_{AP}+1}} T=u0xuAPt+JAP+1R 被添加进来,其中 R R R A P AP AP 每次在身份认证中都会选择的随机数。用户需要证明 T T T 是正确形成的,如果用户尝试用同一序列号认证两次,由于 R R R 不相同,那么 T T T 也不相同。用不同的 T T T,可以计算出用户的身份 u 0 x u_0^x u0x

Detail of Our Construction

GMSetup. GM 随机选取 γ ∈ Z p ∗ \gamma\in Z_p^* γZp 并计算 w = h 0 γ w=h_0^{\gamma} w=h0γ。GM 也管理一个身份列表由 ( i , U i , e i ) (i,U_i,e_i) (i,Ui,ei) 构成,其中 i i i 指的是用户 i i i U i U_i Ui 是用于标识用户的条目, e i e_i ei 是成员的公钥。

APSetup. 每个 AP 发布自己的身份 I D ID ID 和一个远小于 2 λ 2\lambda 2λ 的数字 k k k。此外,每个 AP 选择 h A P ∈ G 2 , q A P ∈ Z p ∗ h_{AP}\in G_2,q_{AP}\in Z_p^* hAPG2,qAPZp。AP 的公私钥分别为 h A P , p A P = h A P q A P h_{AP},p_{AP}=h_{AP}^{q_{AP}} hAP,pAP=hAPqAP q A P q_{AP} qAP 。AP 维护了一个身份认证日志、一个累加值(在授予或撤销成员访问权后发布和更新)一个公共存档 A R C ARC ARC,描述如下:

A R C ARC ARC 是一个3元组 ( a r c 1 , a r c 2 , a r c 3 arc_1, arc_2, arc_3 arc1,arc2,arc3),其中 a r c 1 arc1 arc1 是用户成员公开密钥的一个组成部分, a r c 2 arc2 arc2 是单个比特 0 / 1 0/1 0/1,表示成员是被授权 (1) 还是被撤销 (0), a r c 3 arc_3 arc3 是授予或撤销成员后的累加值。初始化后,认证日志和 A R C ARC ARC 为空,累加值为 h A P h_{AP} hAP

Join. 用户 i i i 通过与 GM 进行以下交互获取他的成员私钥。

  1. 用户 i i i 随机选择 s ′ , t , x ∈ Z p ∗ s',t,x\in Z_p^* s,t,xZp,发送 C ′ = g 1 s ′ g 2 t g 3 x C'=g_1^{s'}g_2^tg_3^x C=g1sg2tg3x 和证明 ∏ 0 = P K { ( s ′ , t , x ) : C ′ = g 1 s ′ g 2 t g 3 x } \prod_0=PK\{(s',t,x):C'=g_1^{s'}g_2^tg_3^x\} 0=PK{(s,t,x):C=g1sg2tg3x} G M GM GM
  2. GM 验证 ∏ 0 \prod_0 0 是有效的并且随机选取 s ′ ′ ∈ Z p ∗ s''\in Z_p^* s′′Zp。他发送 s ′ ′ s'' s′′ 给用户。
  3. 用户计算 s = s ′ + s ′ ′ s=s'+s'' s=s+s′′ 并添加条目 ( i , U i ) = ( i , u 0 x ) (i,U_i)=(i,u_0^x) (i,Ui)=(i,u0x) 到身份列表中并发送证明 ∏ 1 = P K { ( s , t , x ) : U i = u 0 x ∧ C = g 1 s g 2 t g 3 x ∧ C = C ′ g 1 s ′ ′ } \prod_1=PK\{(s,t,x):U_i=u_0^x\wedge C=g_1^sg_2^tg_3^x\wedge C=C'g_1^{s''}\} 1=PK{(s,t,x):Ui=u0xC=g1sg2tg3xC=Cg1s′′}
  4. GM 计算 C = C ′ g 1 s ′ ′ C=C'g_1^{s''} C=Cg1s′′,并检查 ∏ 1 \prod_1 1 是有效的,并选择 e ∈ Z p ∗ e\in Z_p^* eZp。之后计算 A = ( g 0 C ) 1 e + γ A=(g_0C)^{\frac{1}{e+\gamma}} A=(g0C)e+γ1 并发送 ( A , e , s ′ ′ ) (A,e,s'') (A,e,s′′) 给用户。GM 也追加 e e e 到条目 ( i , U i ) (i,U_i) (i,Ui) 中,条目更新为 ( i , U i , e ) (i,U_i,e) (i,Ui,e)
  5. 用户检查 e ( A , w h 0 e ) = e ( g 0 g 1 s g 2 t g 3 x , h 0 ) e(A,wh_0^e)=e(g_0g_1^sg_2^tg_3^x,h_0) e(A,wh0e)=e(g0g1sg2tg3x,h0)。用户本地存储 ( A , e , s , t , x ) (A,e,s,t,x) (A,e,s,t,x)。用户的成员公钥是 e e e 并且成员私钥是 ( A , s , t , x ) (A,s,t,x) (A,s,t,x)

GrantingAccess. AP 用成员公钥 e e e 和私钥 ( A , s , t , x ) (A,s,t,x) (A,s,t,x) 授权用户 i i i 访问权限,如下。假定 AP 的 A R C ARC ARC 中有 j j j 个元组,当前的累加值是 v j v_j vj。AP 计算一个新的累加值 v j + 1 = v j e + q A P v_{j+1}=v_j^{e+q_{AP}} vj+1=vje+qAP。之后 AP 添加 ( e , 1 , v j + 1 ) (e,1,v_{j+1}) (e,1,vj+1) A R C ARC ARC 中。用户保存 w = v j w=v_j w=vj 为他的 witness,证明他的公钥已经在累加器中了。访问组中现有的成员根据 A R C ARC ARC 的信息更新自己的 witness。拥有成员密钥 e k e_k ek 和 witness w e w_e we 的用户使得 w e e k + q A P = v j w_e^{e_k+q_{AP}}=v_j week+qAP=vj 计算 w n e w = v j w e e − e k w_{new}=v_jw_e^{e-e_k} wnew=vjweeek。在这种情况下 w n e w e k + q A P = v j + 1 w_{new}^{e_k+q_{AP}}=v_{j+1} wnewek+qAP=vj+1 w n e w w_{new} wnew 作为用户 e k e_k ek 的新 witness。

RevokingAccess. 一个 AP 用成员公钥 e e e 撤销用户 i i i 的访问权限,使得 ( e , 1 , v ) (e,1,v) (e,1,v) A R C ARC ARC 的一个元组。假设 AP 的 A R C ARC ARC j j j 个元组并且当前的累加值是 v j v_j vj。AP 计算 v j + 1 = v j 1 e + q A P v_{j+1}=v_j^{\frac{1}{e+q_{AP}}} vj+1=vje+qAP1。它之后添加 ( e , 0 , v j + 1 ) (e,0,v_{j+1}) (e,0,vj+1) 进入到 A R C ARC ARC 中。类似 GrantingAccess 的情况,访问组的现有成员根据 A R C ARC ARC 的信息更新它们自己的 witness,步骤如下所示。假设用户 e k e_k ek 拥有 witness 使得 w e e k + q A P = v j w_e^{e_k+q_{AP}}=v_j week+qAP=vj,它计算 w n e w = ( w e / v j + 1 ) 1 e − e k w_{new}=(w_e/v_{j+1})^{\frac{1}{e-e_k}} wnew=(we/vj+1)eek1 使得
w n e w e k + q A P = [ v j v q A P + e k j + 1 ] 1 e − e k = [ v j + 1 q A P + e v j + 1 q A P + e k ] 1 e − e k = v j + 1 w_{new}^{e_k+q_{AP}}={[\frac{v_j}{v^{q_{AP+e_k}}}_{j+1}]^{\frac{1}{e-e_k}}}={[\frac{v_{j+1}^{q_{AP}+e}}{v_{j+1}^{q_{AP}+e_k}}]}^{\frac{1}{e-e_k}}=v_{j+1} wnewek+qAP=[vqAP+ekvjj+1]eek1=[vj+1qAP+ekvj+1qAP+e]eek1=vj+1

Authentication. 用户管理一个计数器集合,每个 AP, J A P J_{AP} JAP,使得它不会为每个 AP 签名超过 k k k 次。具有成员公钥 e e e 和私钥 ( A , s , t , x ) (A,s,t,x) (A,s,t,x),并已从 AP 获得访问权限,因此拥有 witness w A P w_{AP} wAP 使得 w A P e + q A P = v A P w_{AP}^{e+q_{AP}}=v_{AP} wAPe+qAP=vAP 其中 v A P v_{AP} vAP 是 AP 的当前累加值,AP 通过以下交互协议对自己进行身份认证。为了简单起见,我们去掉 q A P q_{AP} qAP v A P v_{AP} vAP 的下标。

  • AP 发送一个随机种子 s e e d ∈ { 0 , 1 } ∗ seed\in\{0,1\}^* seed{0,1} 给用户。实际上, s e e d seed seed 可以是一些随机数或当前会话的信息。双方本地计算 R = H ( s e e d ) R=H(seed) R=H(seed)
  • 用户计算 u A P = H e v t ( I D A P ) u_{AP}=H_{evt}(ID_{AP}) uAP=Hevt(IDAP) 其中 I D A P ID_{AP} IDAP 是 AP 的身份。用户接着计算 S = u A P 1 J A P + s + 1 , T = u 0 x u A P R J A P + t + 1 S=u_{AP}^{\frac{1}{J_{AP}+s+1}},T=u_0^x u_{AP}^{\frac{R}{J_{AP}+t+1}} S=uAPJAP+s+11,T=u0xuAPJAP+t+1R 并证明以下内容:
    1. A e + γ = g 0 g 1 s g 2 t g 3 x A^{e+\gamma}=g_0g_1^sg_2^tg_3^x Ae+γ=g0g1sg2tg3x
    2. w A P e + q = v w_{AP}^{e+q}=v wAPe+q=v
    3. S = u A P 1 J A P + s + 1 S=u_{AP}^{\frac{1}{J_{AP}+s+1}} S=uAPJAP+s+11
    4. T = u 0 x u A P R J A P + t + 1 T=u_0^xu_{AP}^{\frac{R}{J_{AP}+t+1}} T=u0xuAPJAP+t+1R
    5. 1 ≤ J A P ≤ k 1\le J_{AP}\le k 1JAPk
  • 以上证明可以抽象为:
    ∏ 2 : S P K { ( A , e , s , t , x , w , J A P ) : A e + γ = g 0 g 1 s g 2 t g 3 x ∧ w e + q = v ∧ S = u A P 1 J A P + s + 1 ∧ T = u 0 x u A P R J A P + t + 1 ∧ 1 ≤ J A P ≤ k } \prod_2:SPK\{(A,e,s,t,x,w,J_{AP}):A^{e+\gamma}=g_0g_1^sg_2^tg_3^x\wedge w^{e+q}=v\wedge S=u_{AP}^{\frac{1}{J_{AP}+s+1}}\wedge T=u_0^x u_{AP}^{\frac{R}{J_{AP}+t+1}}\wedge 1\le J_{AP}\le k\} 2:SPK{(A,e,s,t,x,w,JAP):Ae+γ=g0g1sg2tg3xwe+q=vS=uAPJAP+s+11T=u0xuAPJAP+t+1R1JAPk}
  • AP 之后验证该 SPK 正确性。如果验证通过,则保存 ( S , T , R ) (S,T,R) (S,T,R) 进入到本地数据库
  • 然后用户将其计数器 J A P J_{AP} JAP 加一

实例化 ∏ 2 \prod_2 2。在收到 s e e d seed seed 后,用户计算如下等式: A 1 = g 1 r 1 g 2 r 2 g 3 r 3 , A 2 = A g 2 r 1 , A 3 = w A P g 3 r 2 , A 4 = g 1 J A P g 2 t g 3 r 4 , S = u A P 1 u A P + s + 1 , T = u 0 x u A P R J A P + t + 1 , R = H ( s e e d ) A_1=g_1^{r_1}g_2^{r_2}g_3^{r_3},A_2=Ag_2^{r_1},A_3=w_{AP}g_3^{r_2},A_4=g_1^{J_{AP}}g_2^tg_3^{r_4},S=u_{AP}^{\frac{1}{u_{AP}+s+1}},T=u_0^xu_{AP}^{\frac{R}{J_{AP}+t+1}},R=H(seed) A1=g1r1g2r2g3r3,A2=Ag2r1,A3=wAPg3r2,A4=g1JAPg2tg3r4,S=uAPuAP+s+11,T=u0xuAPJAP+t+1R,R=H(seed) 并计算如下 SPK ∏ 3 \prod_3 3

∏ 3 : S P K { ( r 1 , r 2 , r 3 , r 4 , δ 1 , δ 2 , δ 3 , δ 4 , δ J , δ t , e , s , t , x , J A P ) : A 1 = g 1 r 1 g 2 r 2 g 3 r 3 ∧ A 1 e = g 1 δ 1 g 2 δ 2 g 3 δ 3 ∧ e ( A 3 , P A P ) e ( v , h A P ) = e ( g 3 , h A P ) δ 2 e ( g 3 , p A P ) r 2 e ( A 3 , h A P ) − e ∧ e ( A 2 , w ) e ( g 0 , h 0 ) = e ( g 1 , h 0 ) s e ( g 2 , h 0 ) t e ( g 3 , h 0 ) x e ( g 3 , h 0 ) δ 1 e ( g 3 , w ) r 1 e ( A 2 , h 0 ) − e ∧ w A P S = S J A P S s ∧ A 4 = g 1 J A P g 2 t g 3 r 4 ∧ A 4 x = g 1 δ J g 2 δ t g 3 δ 4 ∧ u A P R T = T J A P T t u 0 − δ J u 0 − δ t u 0 x ∧ 1 ≤ J A P ≤ k } ( M ) \prod_3:SPK\begin{Bmatrix}(r_1,r_2,r_3,r_4,\delta_1,\delta_2,\delta_3,\delta_4,\delta_J,\delta_t,e,s,t,x,J_{AP}): \\A_1=g_1^{r_1}g_2^{r_2}g_3^{r_3}\wedge A_1^e=g_1^{\delta_1}g_2^{\delta_2}g_3^{\delta_3}\wedge \\\frac{e(A_3,P_{AP})}{e(v,h_{AP})}=e(g_3,h_{AP})^{\delta_2}e(g_3,p_{AP})^{r_2}e(A_3,h_{AP})^{-e}\wedge \\\frac{e(A_2,w)}{e(g_0,h_0)}=e(g_1,h_0)^se(g_2,h_0)^te(g_3,h_0)^xe(g_3,h_0)^{\delta_1}e(g_3,w)^{r_1}e(A_2,h_0)^{-e}\wedge \\\frac{w_{AP}}{S}=S^{J_{AP}}S^s\wedge A_4=g_1^{J_{AP}}g_2^tg_3^{r_4}\wedge A_4^x=g_1^{\delta_J}g_2^{\delta_t}g_3^{\delta_4}\wedge \\ \frac{u_{AP}^R}{T}=T^{J_{AP}}T^tu_0^{-\delta_J}u_0^{-\delta_t}u_0^x\wedge 1\le J_{AP}\le k \end{Bmatrix}(M) 3:SPK (r1,r2,r3,r4,δ1,δ2,δ3,δ4,δJ,δt,e,s,t,x,JAP):A1=g1r1g2r2g3r3A1e=g1δ1g2δ2g3δ3e(v,hAP)e(A3,PAP)=e(g3,hAP)δ2e(g3,pAP)r2e(A3,hAP)ee(g0,h0)e(A2,w)=e(g1,h0)se(g2,h0)te(g3,h0)xe(g3,h0)δ1e(g3,w)r1e(A2,h0)eSwAP=SJAPSsA4=g1JAPg2tg3r4A4x=g1δJg2δtg3δ4TuAPR=TJAPTtu0δJu0δtu0x1JAPk (M)
其中 δ 1 = r 1 e , δ 2 = r 2 e , δ 3 = r 3 e , δ J = J A P x , δ t = t x , δ 4 = r 4 x \delta_1=r_1e,\delta_2=r_2e,\delta_3=r_3e,\delta_J=J_{AP}x,\delta_t=tx,\delta_4=r_4x δ1=r1e,δ2=r2e,δ3=r3e,δJ=JAPx,δt=tx,δ4=r4x,其中 J A P J_{AP} JAP 的范围检查有更多的细节。

PublicTracing. 对于两个实体 ( S P K , S , T , R ) (SPK,S,T,R) (SPK,S,T,R) ( S P K ′ , S ′ , T ′ , R ′ ) (SPK',S',T',R') (SPK,S,T,R),如果 S ≠ S ′ S\ne S' S=S,那么两个规定认证的底层用户没有超过其规定的使用 k k k 或者他们是不同的用户。

如果 S = S ′ S=S' S=S,那么每个人都可以计算 u 0 x = ( T R ′ T ′ R ) ( ( R ′ − R ) − 1 ) u_0^x=(\frac{T^{R'}}{T'^R})^{((R'-R)^{-1})} u0x=(TRTR)((RR)1)。从 u 0 x u_0^x u0x 和身份列表,输出 i i i 是作弊用户。现在如果 u 0 x u_0^x u0x 存在,那么可以得出 GM 从身份列表中删除了部分数据,输出 GM。

  • 44
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值