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(g0g1sg2m1g3m2⋅⋅⋅gL+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=g1s′g2m1g3m2⋅⋅⋅gL+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=g1s′g2m1g3m2⋅⋅⋅gL+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=g1s′g2m1g3m2⋅⋅⋅gL+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,r2∈Zp∗。之后计算
S
P
K
∏
5
SPK \prod_5
SPK∏5,其中
δ
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=g1r1g2r2∧A1e=g1δ1g2δ2∧e(g0,h0)e(A2,w)=e(A2,h0)−ee(g2,w)r1e(g2,h0)δ1e(g1,h0)se(g2,h0)m1⋅⋅⋅e(gL+1,h0)mL}(M)
正确性:
- 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+r1⋅⋅⋅gL+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)
- 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+r1⋅⋅⋅gL+1e+γmL,h0)−e=e(g0e+γ−eg1e+γ−esg2e+γ−em1+−er1⋅⋅⋅gL+1e+γ−emL,h0)
-
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)m1⋅⋅⋅e(gL+1,h0)mL=e(g2,h0γ)r1e(g2,h0)r1ee(g1,h0)se(g2,h0)m1⋅⋅⋅e(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)s⋅⋅⋅e(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+−er1⋅⋅⋅gL+1e+γ−emL,h0)⋅e(g2,h0)r1e+γr1+m1e(g1,h0)s⋅⋅⋅e(gL+1,h0)mL
Overview of Our Construction
Join. GM 拥有 BBS+ 签名的公私钥对。随机选择 x ∈ Z p ∗ x\in Z_p^* x∈Zp∗,将 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,t∈Zp∗。最后,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 1≤JAP≤k。这样,对于一个特定的 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^* hAP∈G2,qAP∈Zp∗。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 进行以下交互获取他的成员私钥。
- 用户 i i i 随机选择 s ′ , t , x ∈ Z p ∗ s',t,x\in Z_p^* s′,t,x∈Zp∗,发送 C ′ = g 1 s ′ g 2 t g 3 x C'=g_1^{s'}g_2^tg_3^x C′=g1s′g2tg3x 和证明 ∏ 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′=g1s′g2tg3x} 给 G M GM GM。
- GM 验证 ∏ 0 \prod_0 ∏0 是有效的并且随机选取 s ′ ′ ∈ Z p ∗ s''\in Z_p^* s′′∈Zp∗。他发送 s ′ ′ s'' s′′ 给用户。
- 用户计算 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=u0x∧C=g1sg2tg3x∧C=C′g1s′′}
- GM 计算 C = C ′ g 1 s ′ ′ C=C'g_1^{s''} C=C′g1s′′,并检查 ∏ 1 \prod_1 ∏1 是有效的,并选择 e ∈ Z p ∗ e\in Z_p^* e∈Zp∗。之后计算 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)
- 用户检查 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=vjwee−ek。在这种情况下 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)e−ek1 使得
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]e−ek1=[vj+1qAP+ekvj+1qAP+e]e−ek1=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 并证明以下内容:
- 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
- w A P e + q = v w_{AP}^{e+q}=v wAPe+q=v
- S = u A P 1 J A P + s + 1 S=u_{AP}^{\frac{1}{J_{AP}+s+1}} S=uAPJAP+s+11
- 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
- 1 ≤ J A P ≤ k 1\le J_{AP}\le k 1≤JAP≤k
- 以上证明可以抽象为:
∏ 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+γ=g0g1sg2tg3x∧we+q=v∧S=uAPJAP+s+11∧T=u0xuAPJAP+t+1R∧1≤JAP≤k} - 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=g1r1g2r2g3r3∧A1e=g1δ1g2δ2g3δ3∧e(v,hAP)e(A3,PAP)=e(g3,hAP)δ2e(g3,pAP)r2e(A3,hAP)−e∧e(g0,h0)e(A2,w)=e(g1,h0)se(g2,h0)te(g3,h0)xe(g3,h0)δ1e(g3,w)r1e(A2,h0)−e∧SwAP=SJAPSs∧A4=g1JAPg2tg3r4∧A4x=g1δJg2δtg3δ4∧TuAPR=TJAPTtu0−δJu0−δtu0x∧1≤JAP≤k⎭
⎬
⎫(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=(T′RTR′)((R′−R)−1)。从 u 0 x u_0^x u0x 和身份列表,输出 i i i 是作弊用户。现在如果 u 0 x u_0^x u0x 存在,那么可以得出 GM 从身份列表中删除了部分数据,输出 GM。