论文阅读---基于属性凭证的保密电子票据方案

Privacy-Preserving Electronic Ticket Scheme with Attribute-Based Credentials

Privacy-Preserving Electronic Ticket Scheme with Attribute-Based Credentials

Boneh-Boyen(BB) Signature

在 2004 年,Boneh-Boyen 提出了一个短签名方案。该方案常用于构造高效的成员证明(setmembership proof)和范围证明(range proof)。本文中,我们使用该签名方案为我们的 ticket policys 生成 tags。

KeyGen. B G ( 1 l ) → ( e , p , G , G τ ) \mathcal{BG}(1^l)\rightarrow (e,p,\mathbb{G},\mathbb{G}_\tau) BG(1l)(e,p,G,Gτ) g 1 , g 2 g_1,g_2 g1,g2 G \mathbb{G} G 的生成元。签名者生成私钥对 ( x , Y ) (x,Y) (x,Y) x ← Z p x\leftarrow Z_p xZp Y = g 2 x Y=g_2^x Y=g2x

Signing. 为了生成消息 m m m 的签名,签名者计算签名 σ = g 1 1 x + m \sigma=g_1^{\frac{1}{x+m}} σ=g1x+m1

Verifying. 为了验证 σ \sigma σ m m m 的有效签名,验证者检查 e ( σ , Y g 2 m ) = e ( g 1 , g 2 ) e(\sigma,Yg_2^m)=e(g_1,g_2) e(σ,Yg2m)=e(g1,g2)

Signature with Efficient Proof Protocol

我们使用 BBS+ 签名方案向用户和 ticket sellers 发放凭证并为用户生成 tickets。BBS+ 签名方案如下:

KeyGen. B G ( 1 l ) → ( e , p , G , G , G τ ) \mathcal{BG}(1^l)\rightarrow (e,p,\mathbb{G},\mathbb{G},\mathbb{G}_\tau) BG(1l)(e,p,G,G,Gτ) ( h , g 0 , g 1 , . . . , g n + 1 ) (h,g_0,g_1,...,g_{n+1}) (h,g0,g1,...,gn+1) G \mathbb{G} G 的生成元。签名者生成公私钥对 ( x , Y ) (x,Y) (x,Y) 其中 x ← Z p x\leftarrow Z_p xZp Y = h x Y=h^x Y=hx

Signing. 为了在 ( m 1 , m 2 , . . . , m n ) ∈ Z p n (m_1,m_2,...,m_n) \in Z_p^n (m1,m2,...,mn)Zpn,签名者选择 w , s ← Z p w,s\leftarrow Z_p w,sZp 并计算 σ = ( g 0 g 1 s g 2 m 1 , . . . , g n + 1 m n ) 1 x + w \sigma=(g_0g_1^sg_2^{m_1},...,g_{n+1}^{m_n})^{\frac{1}{x+w}} σ=(g0g1sg2m1,...,gn+1mn)x+w1 ( m 1 , m 2 , . . . , m n ) (m_1,m_2,...,m_n) (m1,m2,...,mn) 的签名为 ( w , s , σ ) (w,s,\sigma) (w,s,σ)

Verifying. 为了验证 ( w , s , σ ) (w,s,\sigma) (w,s,σ) 是一个在 ( m 1 , m 2 , . . . , m n ) (m_1,m_2,...,m_n) (m1,m2,...,mn) 的有效签名,验证者检查 e ( σ , Y h w ) = ? e ( g 0 g 1 s g 2 m 1 , . . . , g n + 1 m n , h ) e(\sigma,Yh^w)\overset{?}{=}e(g_0g_1^sg_2^{m_1},...,g_{n+1}^{m_n},h) e(σ,Yhw)=?e(g0g1sg2m1,...,gn+1mn,h)

Proof of the Signature. 为了证明 ( w , s , σ ) (w,s,\sigma) (w,s,σ) 是在 ( m 1 , m 2 , . . . , m n ) (m_1,m_2,...,m_n) (m1,m2,...,mn) 上的有效签名,证明者选择 r 1 , r 2 ← Z p r_1,r_2\leftarrow Z_p r1,r2Zp,并计算 A 1 = σ g 2 r 1 A_1=\sigma g_2^{r_1} A1=σg2r1 A 2 = g 1 r 1 g 2 r 2 A_2=g_1^{r_1}g_2^{r_2} A2=g1r1g2r2。令 t 1 = w r 1 t_1=wr_1 t1=wr1 t 2 = w r 2 t_2=wr_2 t2=wr2
P o K { ( r 1 , r 2 , t 1 , t 2 , w , s , σ , m 1 , . . . , m n ) : A 2 = g 1 r 1 g 2 r 2 ∧ A 2 w = g 1 t 1 g 2 t 2 ∧ e ( A 1 , Y ) e ( g 0 , h ) = e ( g 1 , h ) s ⋅ e ( A 1 , Y ) − w ⋅ e ( g 2 , h ) r 1 w ⋅ e ( g 2 , Y ) r 1 ⋅ ∏ i = 2 n + 1 e ( g i , h ) m − 1 } } PoK\begin{Bmatrix} (r_1,r_2,t_1,t_2,w,s,\sigma,m_1,...,m_n):A_2=g_1^{r_1}g_2^{r_2}\wedge \\A_2^w=g_1^{t_1}g_2^{t_2}\wedge \frac{e(A_1,Y)}{e(g_0,h)}=e(g_1,h)^s\cdot e(A_1,Y)^{-w}\cdot \\ e(g_2,h)^{r_1w}\cdot e(g_2,Y)^{r_1}\cdot \prod_{i=2}^{n+1}e(g_i,h)^{m-1}\} \end{Bmatrix} PoK (r1,r2,t1,t2,w,s,σ,m1,...,mn):A2=g1r1g2r2A2w=g1t1g2t2e(g0,h)e(A1,Y)=e(g1,h)se(A1,Y)we(g2,h)r1we(g2,Y)r1i=2n+1e(gi,h)m1}

Formal Definitions

我们的方案由四种实体组成,认证中心 CA,用户 U,ticket seller S 和 ticket verifier V

  1. CA 认证 US,并且颁发匿名凭证给 US
  2. SCA 注册,并从 CA 获取到匿名凭证,并根据 ticket policies 向 U 销售门票。
  3. UCA 注册,并从 CA 获取到匿名凭证,之后从 S 那里购买门票,并向 V 证明拥有门票。
  4. V 验证门票是由 U 提供,并检测门票是否被双花。

Setup ( 1 l ) → ( M S K , p a r a m s , P ) (1^l)\rightarrow (MSK,params,\mathcal{P}) (1l)(MSK,params,P). CA 输入一个安全参数 1 l 1^l 1l,并输出主私钥 M S K MSK MSK,公共参数 p a r a m s params params 和一个通用的 ticket polices 集合 P \mathbb{P} P

Registration. 注册算法由两部分组成:SRegistrationURegistration

  1. SRegistration ( S ( I D S , S K S , P K S , p a r a m s ) ) ↔ C A ( M S K , P K s , p a r a m s ) ) → ( σ s , ( I D S , P K S ) ) (S(ID_S,SK_S,PK_S,params))\leftrightarrow CA(MSK,PK_s,params))\rightarrow (\sigma_s,(ID_S,PK_S)) (S(IDS,SKS,PKS,params))CA(MSK,PKs,params))(σs,(IDS,PKS))S 运行密钥生成算法 K G ( 1 l ) → ( S K S , P K S ) \mathcal{KG}(1^l)\rightarrow (SK_S,PK_S) KG(1l)(SKS,PKS) 生成公私钥对 ( S K S , P K S ) (SK_S,PK_S) (SKS,PKS),输入他的身份 I D S ID_S IDS,他的公私钥对 ( S K S , P K S ) (SK_S,PK_S) (SKS,PKS) 和公共参数 p a r a m s params params,并输出一个凭证 σ s \sigma_s σsCA 输入主私钥 M S K MSK MSKS 的公钥 P K S PK_S PKS 和公共参数并输出 ( I D S , P K S ) (ID_S,PK_S) (IDS,PKS)
  2. URegistration ( U ( I D U , A U , S K U , P K U , p a r a m s ) ↔ C A ( M S K , A U , P K U , p a r a m s ) ) → ( σ U , ( I D U , P K U ) ) (U(ID_U,A_U,SK_U,PK_U,params) \leftrightarrow CA(MSK,A_U,PK_U,params) )\rightarrow (\sigma_U,(ID_U,PK_U)) (U(IDU,AU,SKU,PKU,params)CA(MSK,AU,PKU,params))(σU,(IDU,PKU))U 运行密钥生成算法 K G → ( S K U , P K U ) \mathcal{KG}\rightarrow (SK_U,PK_U) KG(SKU,PKU) 生成公私钥对 ( S K U , P K U ) (SK_U,PK_U) (SKU,PKU),输入他的身份 I D U ID_U IDU,他的属性 A U A_U AU,他的公私钥对 ( S K U , P K U ) (SK_U,PK_U) (SKU,PKU) 和公共参数 p a r a m s params params,输出一个凭证 σ U \sigma_U σUCA 输入主私钥 M S K MSK MSKU 的属性 A U A_U AUU 的公钥 P K U PK_U PKU 和公共参数 p a r a m s params params,输出 ( I D U , P K U ) (ID_U,PK_U) (IDU,PKU)

Ticket-Issuing ( U ( S K U , P K U , A U , σ U , P s U ) , P , V P , S e r v , p a r a m s ) ↔ S ( S K S , P K S , P S U , P , P r i c e , V P , S e r v , p a r a m s ) ) → ( T i c k e t U , ( P s U , S e r v i c e ) ) (U(SK_U,PK_U,A_U,\sigma_U,P_{s_U}),\mathbb{P},VP,Serv,params)\leftrightarrow S(SK_S,PK_S,P_{S_U},\mathbb{P},Price,VP,Serv,params))\rightarrow (Ticket_U,(Ps_U,Service)) (U(SKU,PKU,AU,σU,PsU),P,VP,Serv,params)S(SKS,PKS,PSU,P,Price,VP,Serv,params))(TicketU,(PsU,Service)) 这是一个在 U 和 S 之间运行的交互式算法。U 输入他的公私钥对 ( S K U , P K U ) (SK_U,PK_U) (SKU,PKU),他的属性 A U A_U AU,他的凭证 σ U \sigma_U σU,一个假名 P s U P_{s_U} PsU,ticket policies P \mathbb{P} P,一个有效的时期 V P VP VP,选择的服务 S e r v Serv Serv 和公共参数 p a r a m s params params,输出 ( P s U , S e r v ) (P_{s_U},Serv) (PsU,Serv)

Ticket-Validating ( U ( S K , P s U , T i c k e t U , V P , S e r v , p a r a m s ) ↔ V ( V P , S e r v , p a r a m s ) ) → ( 0 / 1 , ( S e r v , T r a n s T ) ) (U(SK,P_{s_U},Ticket_U,VP,Serv,params)\leftrightarrow V(VP,Serv,params))\rightarrow (0/1,(Serv,Trans_T)) (U(SK,PsU,TicketU,VP,Serv,params)V(VP,Serv,params))(0/1,(Serv,TransT))。这是一个在 UV 之间执行的交互式算法。U 输入他的公私钥对 ( S K U , P K U ) (SK_U,PK_U) (SKU,PKU),他的 ticket T i c k e t U Ticket_{U} TicketU,有效的时期 V P VP VP,选择的服务 S e r v Serv Serv 和公共参数 p a r a m s params params,如果 T i c k e t U Ticket_U TicketU 是有效的,输出 1 1 1。验证失败,输出 0 0 0V 输入有效的时期 V P VP VP,选择的服务 S e r v Serv Serv 和公共参数 p a r a m s params params,输出 ( S e r v , T r a n s T ) (Serv,Trans_T) (Serv,TransT)

Double-Spend-Detecting ( T r a n s T , p a r a m s ) → ( P K U , ⊥ ) (Trans_T,params)\rightarrow (PK_U,\perp) (TransT,params)(PKU,)

Construction Of Our Scheme

在我们的 e-ticket 系统中,票据的类型可能受两种策略的影响:范围和集合。范围策略可能包括的属性有:年龄,旅行次数,薪水。集合策略:可能包含多种属性,职业,残疾,位置等。

在这里插入图片描述

Setup. 初始的票务价格策略 P \mathbb{P} P 被设置为 P = { R 1 , . . . , R N 1 , S 1 , . . . , S N 2 } \mathbb{P}=\{\mathbb{R}_1,...,\mathbb{R}_{N_1},\mathbb{S}_1,...,\mathbb{S}_{N_2}\} P={R1,...,RN1,S1,...,SN2} 其中 { R 1 , . . . , R N 1 } \{\mathbb{R}_1,...,\mathbb{R}_{N_1}\} {R1,...,RN1} 是被支持的范围策略和 { S 1 , . . . , S N 2 } \{\mathbb{S}_1,...,\mathbb{S}_{N_2}\} {S1,...,SN2} 是被支持的集合策略。CA 选择私钥 M S K = ( x , y , μ 1 , . . . , μ N 2 ) MSK=(x,y,\mu_1,...,\mu_{N_2}) MSK=(x,y,μ1,...,μN2) ,其中, x x x 是为系统用户生成凭证, y y y 是用来生成标识范围的 tags, μ i ( i = 1 , . . . , N 2 ) \mu_i(i=1,...,N_2) μi(i=1,...,N2) 是标记集合策略的 tags。CA 发布公共参数 p a r a m s params params 包含票据策略 P \mathbb{P} P 以及范围和集合策略 tags。

CA 公布票据价格策略 P = { R 1 , . . . , R N 1 , S 1 , . . . , S N } \mathbb{P}=\{\mathbb{R}_1,...,\mathbb{R}_{N_1},\mathbb{S}_1,...,\mathbb{S}_N\} P={R1,...,RN1,S1,...,SN} 其中 R l = [ c l , d l ] \mathbb{R}_l=[c_l,d_l] Rl=[cl,dl] 是范围策略和 S i = { I i 1 , I i 2 , . . . , I i ς } \mathbb{S}_i=\{I_{i_1},I_{i_2},...,I_{i_\varsigma}\} Si={Ii1,Ii2,...,Iiς} 是一个集合策略(位置,职业,残疾), l = 1 , 2 , . . . , N 1 l=1,2,...,N_1 l=1,2,...,N1 i = 1 , 2 , . . . , N 2 i=1,2,...,N_2 i=1,2,...,N2

CA 运行 B G ( 1 l ) → ( e , p , G , G τ ) \mathcal{BG}(1^l)\rightarrow (e,p,\mathbb{G},\mathbb{G}_\tau) BG(1l)(e,p,G,Gτ)。假设 { R 1 , . . . , R N 1 } \{\mathbb{R}_1,...,\mathbb{R}_{N_1}\} {R1,...,RN1} 的最大区间长度为 [ 0 , q k ) [0,q^k) [0,qk),其中 q ∈ Z p q\in Z_p qZp 并且 p > 2 q k + 1 p>2q^k+1 p>2qk+1。 令 g , g 0 , g 1 , g 2 , g 3 , g ^ 1 , g ^ 2 , . . . , g ^ N 1 , h , g , η , ξ , ρ , ϑ , η 1 , η 2 , . . . , η N 2 g,g_0,g_1,g_2,g_3,\hat{g}_1,\hat{g}_2,...,\hat{g}_{N_1},h,\mathfrak{g},\eta,\xi,\rho,\vartheta,\eta_1,\eta_2,...,\eta_{N_2} g,g0,g1,g2,g3,g^1,g^2,...,g^N1,h,g,η,ξ,ρ,ϑ,η1,η2,...,ηN2 G \mathbb{G} G 的生成元, H : { 0 , 1 } ∗ → Z p H:\{0,1\}^*\rightarrow Z_p H:{0,1}Zp H ′ : { 0 , 1 } ∗ → G H':\{0,1\}^*\rightarrow \mathbb{G} H:{0,1}G 是两个哈希函数。

CA 选择 x , y , μ 1 , μ 2 , . . . , μ N 2 ← Z p x,y,\mu_1,\mu_2,...,\mu_{N_2}\leftarrow Z_p x,y,μ1,μ2,...,μN2Zp 并计算 g ~ = g x , h ~ = h y , h 0 = h 1 y , h 1 = h 1 y + 1 , . . . , h q − 1 = h 1 y + q − 1 , h ~ 0 = h q 0 , h ~ 1 = h q , . . . , h ~ k − 1 = h q k − 1 , η ~ 1 = η 1 μ 1 , η ~ 2 = η 2 μ 2 , . . . , η ~ N 2 = η N 2 μ N 2 \tilde{g}=g^x,\tilde{h}=h^y,h_0=h^{\frac{1}{y}},h_1=h^{\frac{1}{y+1}},...,h_{q-1}=h^{\frac{1}{y+q-1}},\tilde{h}_0=h^{q^0},\tilde{h}_1=h^q,...,\tilde{h}_{k-1}=h^{q^{k-1}},\tilde{\eta}_1=\eta_1^{\mu_1},\tilde{\eta}_2=\eta_2^{\mu_2},...,\tilde{\eta}_{N_2}=\eta_{N_2}^{\mu_{N_2}} g~=gx,h~=hy,h0=hy1,h1=hy+11,...,hq1=hy+q11,h~0=hq0,h~1=hq,...,h~k1=hqk1,η~1=η1μ1,η~2=η2μ2,...,η~N2=ηN2μN2 ( η i 1 = η 1 μ i + H ( I i 1 ) , η i 2 = η 1 μ i + H ( I i 2 ) , . . . , η i ς = η 1 μ i + H ( I i ς ) ) i = 1 N 2 (\eta_{i_1}=\eta^{\frac{1}{\mu_i+H(I_{i_1})}},\eta_{i_2}=\eta^{\frac{1}{\mu_i+H(I_{i_2})}},...,\eta_{i_\varsigma}=\eta^{\frac{1}{\mu_i+H(I_{i_\varsigma})}})_{i=1}^{N_2} (ηi1=ημi+H(Ii1)1,ηi2=ημi+H(Ii2)1,...,ηiς=ημi+H(Iiς)1)i=1N2

CA 的私钥是 M S K = ( x , y , μ 1 , μ 2 , . . . , μ N 2 ) MSK=(x,y,\mu_1,\mu_2,...,\mu_{N_2}) MSK=(x,y,μ1,μ2,...,μN2) 和公共参数是 p a r a m s = ( e , p , G , G τ , g , g 0 , g 1 , g 2 , g ^ 1 , g ^ 2 , . . . , g ^ N 1 , h , g , η , ξ , ρ , g ~ , h ~ , h 0 , h 1 , . . . , h q − 1 , h ~ 0 , h ~ 1 , . . . , h ~ k − 1 , η 1 , η 2 , . . . , η N 2 , η ~ 1 , η ~ 2 , . . . , η ~ N 2 , ( η i 1 , η i 2 , . . . , η i ς ) i = 1 N 2 ) params=(e,p,\mathbb{G},\mathbb{G}_\tau,g,g_0,g_1,g_2,\hat{g}_1,\hat{g}_2,...,\hat{g}_{N_1},h,\mathfrak{g},\eta,\xi,\rho,\tilde{g},\tilde{h},h_0,h_1,...,h_{q-1},\tilde{h}_0,\tilde{h}_1,...,\tilde{h}_{k-1},\eta_1,\eta_2,...,\eta_{N_2},\tilde{\eta}_1,\tilde{\eta}_2,...,\tilde{\eta}_{N_2},(\eta_{i_1},\eta_{i_2},...,\eta_{i_\varsigma})_{i=1}^{N_2}) params=(e,p,G,Gτ,g,g0,g1,g2,g^1,g^2,...,g^N1,h,g,η,ξ,ρ,g~,h~,h0,h1,...,hq1,h~0,h~1,...,h~k1,η1,η2,...,ηN2,η~1,η~2,...,η~N2,(ηi1,ηi2,...,ηiς)i=1N2)

SRegistration.

在这里插入图片描述

S 的注册要求其生成一个公私钥对 ( x S , Y S ) (x_S,Y_S) (xS,YS)S 发送 Y S Y_S YS ∏ S 1 \prod_S^1 S1 的知识证明(表示知道私钥 x s x_s xs)给 CA,并向 CA 提供证据他有作为 seller 的资格。如果 ∏ S 1 \prod_S^1 S1 有效且认证通过,CA 生成一个凭证 σ S \sigma_S σS,该凭证是一个 BBS+ 签名包含了公钥 Y S Y_S YS 以及有效时期 V P S VP_S VPS。然后这些内容也回送给 SS 通过验证凭证 σ S \sigma_S σS 确认 CA 是否授权他作为 seller。

  1. S 选择私钥 x s ← Z p x_s\leftarrow Z_p xsZp 并计算 Y S = ρ x S Y_S=\rho^{x_S} YS=ρxS。计算证明 ∏ S 1 : P o K { x s : Y S = ρ x S } \prod_S^1:PoK\{x_s:Y_S=\rho^{x_S}\} S1:PoK{xs:YS=ρxS},发送 { I D S , Y S , ∏ S 1 } \{ID_S,Y_S,\prod_S^1\} {IDS,YS,S1}CA
  2. CA 选择 c s , r s ← Z p c_s,r_s\leftarrow Z_p cs,rsZp 并计算 σ S = ( g 0 g 1 H ( V P S ) Y S g r S ) 1 x + c s \sigma_S=(g_0g_1^{H(VP_S)}Y_S\mathfrak{g}^{r_S})^{\frac{1}{x+c_s}} σS=(g0g1H(VPS)YSgrS)x+cs1,其中 V P S VP_S VPS 是一个有效的时期。将 c s , r s , σ S , V P S c_s,r_s,\sigma_S,VP_S cs,rs,σS,VPS 发送给 S
  3. S 验证 e ( σ S , g ~ g c s ) = ? e ( g 0 , g ) ⋅ e ( g , g 1 ) H ( V P S ) ⋅ e ( Y S , g ) ⋅ e ( g , g ) r s e(\sigma_S,\tilde{g}g^{c_s})\overset{?}{=}e(g_0,g)\cdot e(g,g_1)^{H(VP_S)}\cdot e(Y_S,g)\cdot e(g,\mathfrak{g})^{r_s} e(σS,g~gcs)=?e(g0,g)e(g,g1)H(VPS)e(YS,g)e(g,g)rs,保存凭证 C r e d S = ( c s , r s , σ S ) Cred_S=(c_s,r_s,\sigma_S) CredS=(cs,rs,σS)

URegistration.

U 生成一个公私钥对 ( x U , Y U ) (x_U,Y_U) (xU,YU) 并提交他的公钥 P U P_U PU 和知识证明 ∏ U 1 \prod_U^1 U1 说明他知道私钥 x U x_U xUUCA 发送属性列表 A U A_U AU(比如,年龄,职业,位置)。CA 认证 ∏ U 1 \prod_U^1 U1,并为 U 生成凭证 σ U , σ U \sigma_U,\sigma_U σUσU 是一个 BBS+ 签名,包含了公钥 Y U Y_U YU,他的有效时期 V P U VP_U VPU 和相应的属性 A U A_U AUCA 将这些信息回送给 UU 验证他现在已经是系统的合法用户,并且其属性已经得到了 CA 的认证。

  1. U 选择 x u ← Z p x_u\leftarrow Z_p xuZp 并计算 Y U = ξ x u Y_U=\xi^{x_u} YU=ξxu。选择 r ← Z p r\leftarrow Z_p rZp 并计算 R = g r R=\mathfrak{g}^r R=gr。计算证明 ∏ U 1 : P o K { ( x u , r ) : Y U = ξ x u ∧ R = g r } \prod_U^1:PoK\{(x_u,r):Y_U=\xi^{x_u}\wedge R=\mathfrak{g}^r\} U1PoK{(xu,r):YU=ξxuR=gr},发送 { I D U , Y U , R , A U , ∏ U 1 } \{ID_U,Y_U,R,A_U,\prod_U^1\} {IDU,YU,R,AU,U1}CA
  2. CA 选择 c u , r ′ ← Z p c_u,r'\leftarrow Z_p cu,rZp 并计算 σ U = ( g 0 g 1 H ( V P U ) Y U R g r ′ ∏ l = 1 N 1 g ^ l a l ∏ i = 1 N 2 η i H ( I i j ) ) 1 x + c u \sigma_U=(g_0g_1^{H(VP_U)}Y_UR\mathfrak{g}^{r'}\prod_{l=1}^{N_1}\hat{g}_l^{a_l}\prod_{i=1}^{N_2}\eta_i^{H(I_{i_j})})^{\frac{1}{x+c_u}} σU=(g0g1H(VPU)YURgrl=1N1g^lali=1N2ηiH(Iij))x+cu1,发送 { c u , r ′ , σ U , V P U } \{c_u,r',\sigma_U,VP_U\} {cu,r,σU,VPU}U
  3. U 计算 r u = r + r ′ r_u=r+r' ru=r+r 验证 e ( σ U , g ~ g C u = e ( g 0 , g ) ⋅ e ( g , g 1 ) H ( V P U ) ⋅ e ( Y U , g ) ⋅ e ( g , g ) r u ⋅ ∏ l = 1 N 1 e ( g ^ l , g ) a l ⋅ ∏ i = 1 N 2 e ( η i , g ) H ( I i j ) ) e(\sigma_U,\tilde{g}g^{C_u}=e(g_0,g)\cdot e(g,g_1)^{H(VP_U)}\cdot e(Y_U,g)\cdot e(\mathfrak{g},g)^{r_u}\cdot \prod_{l=1}^{N_1}e(\hat{g}_l,g)^{a_l}\cdot \prod_{i=1}^{N_2}e(\eta_i,g)^{H(I_{i_j})}) e(σU,g~gCu=e(g0,g)e(g,g1)H(VPU)e(YU,g)e(g,g)rul=1N1e(g^l,g)ali=1N2e(ηi,g)H(Iij)),保存凭证 C r e d U = ( c U , r U , σ U ) Cred_U=(c_U,r_U,\sigma_U) CredU=(cU,rU,σU)

r u = r + r ′ r_u=r+r' ru=r+rUCA 共同产生的

TicketIssuing.

在这里插入图片描述

P U P_U PU 是由 U 满足的范围策略和集合策略组成。为了防止攻击者收集到用户的隐私信息,S 首先需要向 U 证明他的确是受 CA 授权的。这是通过构造 S 的凭证 σ S \sigma_S σS 的知识证明 ∏ S 2 \prod_S^2 S2 来实现。如果证明成立,用户继续生成一个新的假名 Y Y Y,其中涉及到她的秘钥 x u x_u xu,并构建一个关于 Y Y Y 的零知识证明 ∏ U 2 \prod_U^2 U2。该证明向 S 显示 CA 已经认证她是一个合法用户且她拥有她声称的属性可以购买其属性对应的票。当 S 成功验证了 U 的证明后,S 应用 BBS+ 签名构建票据 T U T_U TU,其中包含用户的假名 Y Y Y,适用范围,集合策略,一个序列号(用于检测双花攻击)以及票据的价格和有效期 V P T VP_T VPT

需要注意的是,虽然票据价格及其有效期包含在 T U T_U TU 的构造中,但他们仅是自由文本(free text),仅当应用上下文需要价格和有效期的时候才应使用,例如,当有效期很重要时,S 应检查用户的凭证有效期 V P U VP_U VPU,并确保凭据的有效期 V P T VP_T VPT 不低于 V P U VP_U VPUS T U T_U TU 以及相关详细信息发送给 UU 可以使用该信息和 S 的公钥 Y S Y_S YS 来验证信息的有效性。请注意,由于使用了用户假名,我们的方案提供了票据的不可链接性,这阻止了卖家 S 和任何验证者 V 链接到同一用户请求的任何两张票据,即使他们可以串联。

  1. S 选择 z , v ← Z p z,v\leftarrow Z_p z,vZp 并计算 Q = σ S ϑ z , Z = g z ϑ v , Z c s = g z ′ ϑ v ′ ( z ′ = z c s , v ′ = v c s ) Q=\sigma_S\vartheta^z,Z=g^z\vartheta^v,Z^{c_s}=g^{z'}\vartheta^{v'}(z'=zc_s,v'=vc_s) Q=σSϑz,Z=gzϑv,Zcs=gzϑv(z=zcs,v=vcs)。计算证明 ∏ S 2 \prod_S^2 S2
    P o K { ( c s , r s , σ S , z , v ) : Z = g z ϑ v ∧ Z c s = g z ′ ϑ v ′ ∧ e ( Q , g ~ ) e ( g 0 , g ) ⋅ e ( g 1 , g ) H ( V P S ) = e ( ρ , g ) x s ⋅ e ( g , g ) r s ⋅ e ( Q , g ) − c s ⋅ e ( ϑ , g ) c s z ⋅ e ( ϑ , g ~ ) z } } PoK\begin{Bmatrix} (c_s,r_s,\sigma_S,z,v):Z=g^z\vartheta^v\wedge Z^{c_s}=g^{z'}\vartheta^{v'} \wedge \frac{e(Q,\tilde{g})}{e(g_0,g)\cdot e(g_1,g)^{H(VP_S)}} \\=e(\rho,g)^{x_s}\cdot e(\mathfrak{g},g)^{r_s}\cdot e(Q,g)^{-c_s}\cdot e(\vartheta,g)^{c_sz}\cdot e(\vartheta,\tilde{g})^z\} \end{Bmatrix} PoK{(cs,rs,σS,z,v):Z=gzϑvZcs=gzϑve(g0,g)e(g1,g)H(VPS)e(Q,g~)=e(ρ,g)xse(g,g)rse(Q,g)cse(ϑ,g)csze(ϑ,g~)z}}
  2. U P U P_U PU 是由 U 满足的范围策略和集合策略组成。 a l ∈ A U , a l ∈ [ c l , d l ] , a l − c l , a l − d l + q k ∈ [ 0 , q k ) , a l − c l = ∑ i = 1 k − 1 w l i q i , a l − d l + q k = ∑ i = 0 k − 1 w l i ′ q i a_l\in A_U,a_l\in[c_l,d_l],a_l-c_l,a_l-d_l+q^k\in [0,q^k),a_l-c_l=\sum_{i=1}^{k-1}w_{l_i}q^i,a_l-d_l+q^k=\sum_{i=0}^{k-1}w_{l_i}'q^i alAU,al[cl,dl],alcl,aldl+qk[0,qk),alcl=i=1k1wliqi,aldl+qk=i=0k1wliqi,其中 w l i , w l i ′ ∈ [ 0 , 1 , . . . , q − 1 ] w_{l_i},w'_{l_i}\in [0,1,...,q-1] wli,wli[0,1,...,q1]。选择 d , α , β , γ 1 , γ 2 , . . . , γ N 1 , t l 0 , t l 1 , . . . , t l 0 , t l 1 , . . . , t l k − 1 , t l 0 ′ , t l 1 ′ , . . . , t l k − 1 ′ , e 1 , e 2 , . . . , e N 2 ← Z p d,\alpha,\beta,\gamma_1,\gamma_2,...,\gamma_{N_1},t_{l_0},t_{l_1},...,t_{l_0},t_{l_1},...,t_{l_{k-1}},t'_{l_0},t'_{l_1},...,t'_{l_{k-1}},e_1,e_2,...,e_{N_2}\leftarrow Z_p d,α,β,γ1,γ2,...,γN1,tl0,tl1,...,tl0,tl1,...,tlk1,tl0,tl1,...,tlk1,e1,e2,...,eN2Zp。计算 C = σ U ϑ α , D = g α ϑ β , D c u = g α ′ ϑ β ′ , Y = ξ x u g 1 d , ( Z l = g γ l h a l , ( A w l i = h w l i t l i , A w l i ′ = h w l i t l i ′ ) i = 0 N 1 , ( B i , j = n i j e i ) i = 1 N 2 C=\sigma_U\vartheta^\alpha,D=g^\alpha\vartheta^\beta,D^{c_u}=g^{\alpha'}\vartheta^{\beta'},Y=\xi^{x_u}g_1^d,(Z_l=g^{\gamma_l}h^{a_l},(A_{w_{l_i}}=h_{w_{l_i}}^{t_{l_i}},A'_{w_{l_i}}=h_{w_{l_i}}^{t_{l_i}'})_{i=0}^{N_1},(B_{i,j}=n_{i_j}^{e_i})_{i=1}^{N_2} C=σUϑα,D=gαϑβ,Dcu=gαϑβ,Y=ξxug1d,(Zl=gγlhal,(Awli=hwlitli,Awli=hwlitli)i=0N1,(Bi,j=nijei)i=1N2,其中 α ′ = α c u , β ′ = β c u \alpha'=\alpha c_u,\beta'=\beta c_u α=αcu,β=βcu。计算证明 ∏ U 2 \prod_U^2 U2,发送 ( ∏ U 2 , Y , V P U , P U ) (\prod_U^2,Y,VP_U,\mathbb{P}_U) (U2,Y,VPU,PU)S
    P o K { ( x u , c u , r u , d , α , β , α ′ , β ′ , ( a l , ( t l i ′ , w l i , w l i ′ ) i = 0 k − 1 ) l = 0 N 1 , ( e i , H ( I i j ) i = 1 N 2 ) ) : Y = ξ x u g 1 d ∧ Z l = g γ l h a l ∧ D = g α ϑ β ∧ D c u = g α ′ ϑ β ′ ∧ e ( C , g ~ ) e ( g 0 , g ) ⋅ e ( g 1 , g ) H ( V P U ) = e ( ξ , g ) x u ⋅ e ( g , g ) r u ⋅ ∏ l = 1 N 1 e ( g ^ l , g ) a l ⋅ ∏ i = 1 N 2 e ( η i , g ) H ( I i , j ) ⋅ e ( C , g ) − c u ⋅ e ( ϑ , g ) α ′ ⋅ e ( ϑ , g ~ ) α ∧ ( Z l h − c l = g γ l ∏ i = 0 k − 1 h ~ i w l i ′ ) ∧ ( e ( A w i ′ , h ~ ) = e ( h , h ) t l i ′ ⋅ e ( A w l i ′ , h ) − w l i ′ ) i = 0 k − 1 ) l = 1 N 1 ∧ ( e ( B i , j , η ~ i ) = e ( η , η i ) e i ⋅ e ( B i j , η i ) H ( I i j ) ) i = 1 N 2 } PoK\begin{Bmatrix} (x_u,c_u,r_u,d,\alpha,\beta,\alpha',\beta',(a_l,(t'_{l_i},w_{l_i},w'_{l_i})_{i=0}^{k-1})_{l=0}^{N_1},(e_i,H(I_{i_j})^{N_2}_{i=1})): \\ Y=\xi^{x_u}g_1^d\wedge Z_l=g^{\gamma_l}h^{a_l}\wedge D=g^\alpha\vartheta ^\beta\wedge D^{c_u}=g^{\alpha'}\vartheta^{\beta'} \\ \wedge \frac{e(C,\tilde{g})}{e(g_0,g)\cdot e(g_1,g)^{H(VP_U)}}=e(\xi,g)^{x_u}\cdot e(\mathfrak{g},g)^{r_u}\cdot \\ \prod_{l=1}^{N_1}e(\hat{g}_l,g)^{a_l}\cdot \prod_{i=1}^{N_2}e(\eta_i,g)^{H(I_{i,j})}\cdot \\ e(C,g)^{-c_u}\cdot e(\vartheta,g)^{\alpha'}\cdot e(\vartheta,\tilde{g})^\alpha \\ \wedge (Z_lh^{-c_l}=g^{\gamma_l}\prod_{i=0}^{k-1}\tilde{h}_i^{w'_{l_i}}) \\ \wedge (e(A_{w_i}',\tilde{h})=e(h,h)^{t'_{l_i}}\cdot e(A_{w'_{l_i}},h)^{-w'_{l_i}})_{i=0}^{k-1})_{l=1}^{N_1} \\ \wedge (e(B_{i,j},\tilde{\eta}_i)=e(\eta,\eta_i)^{e_i}\cdot e(B_{i_j},\eta_i)^{H(I_{i_j})})_{i=1}^{N_2} \end{Bmatrix} PoK (xu,cu,ru,d,α,β,α,β,(al,(tli,wli,wli)i=0k1)l=0N1,(ei,H(Iij)i=1N2)):Y=ξxug1dZl=gγlhalD=gαϑβDcu=gαϑβe(g0,g)e(g1,g)H(VPU)e(C,g~)=e(ξ,g)xue(g,g)rul=1N1e(g^l,g)ali=1N2e(ηi,g)H(Ii,j)e(C,g)cue(ϑ,g)αe(ϑ,g~)α(Zlhcl=gγli=0k1h~iwli)(e(Awi,h~)=e(h,h)tlie(Awli,h)wli)i=0k1)l=1N1(e(Bi,j,η~i)=e(η,ηi)eie(Bij,ηi)H(Iij))i=1N2

C , D , D c u C,D,D^{c_u} C,D,Dcu c r e d U = ( σ U , c u , r u ) cred_U=(\sigma_U,c_u,r_u) credU=(σU,cu,ru) 承诺, Y = ξ x u g 1 d Y=\xi^{x_u}g_1^d Y=ξxug1dU 的公钥 Y u Y_u Yu 承诺, Z l Z_l Zl 为属性范围值 a l a_l al 承诺, A w l i A_{w_{l_i}} Awli a l − c u a_l-c_u alcu 承诺, A w l i ′ A_{w_{l_i}}' Awli a l − d l + q k a_l-d_l+q^k aldl+qk 承诺, ( B i , j = n i j e i ) i = 1 N 2 (B_{i,j}=n_{i_j}^{e_i})_{i=1}^{N_2} (Bi,j=nijei)i=1N2 为系统参数的集合属性承诺, ( η i 1 = η 1 μ i + H ( I i 1 ) , η i 2 = η 1 μ i + H ( I i 2 ) , . . . , η i ς = η 1 μ i + H ( I i ς ) ) i = 1 N 2 (\eta_{i_1}=\eta^{\frac{1}{\mu_i+H(I_{i_1})}},\eta_{i_2}=\eta^{\frac{1}{\mu_i+H(I_{i_2})}},...,\eta_{i_\varsigma}=\eta^{\frac{1}{\mu_i+H(I_{i_\varsigma})}})_{i=1}^{N_2} (ηi1=ημi+H(Ii1)1,ηi2=ημi+H(Ii2)1,...,ηiς=ημi+H(Iiς)1)i=1N2
Z l h − ( d l − q k ) = g γ l ∏ i = 0 k − 1 h ~ i w l i ′ ⇒ g γ l h a l h − c l = g γ l ( h q , . . . , h q k − 1 ) w l i ⇒ a l − c l = w l 0 q 0 + w l 1 q 1 + . . . + w l k − 1 q k − 1 Z_lh^{-(d_l-q^k)}=g^{\gamma_l}\prod_{i=0}^{k-1}\tilde{h}_i^{w'_{l_i}}\Rightarrow g^{\gamma_l} h^{a_l}h^{-c_l}=g^{\gamma_l}(h^q,...,h^{q^{k-1}})^{w_{l_i}}\Rightarrow a_l-c_l=w_{l_0}q^0+w_{l_1}q^1+...+w_{l_{k-1}}q^{k-1} Zlh(dlqk)=gγli=0k1h~iwligγlhalhcl=gγl(hq,...,hqk1)wlialcl=wl0q0+wl1q1+...+wlk1qk1

  1. S 选择 d ′ , s u , ω u ← Z p d',s_u,\omega_u\leftarrow \mathbb{Z}_p d,su,ωuZp 并计算 T U = ( g 0 Y g 1 d ′ g 2 s u g 3 ψ u ) 1 x S + ω u T_U=(g_0Yg_1^{d'}g_2^{s_u}g_3^{\psi_u})^{\frac{1}{x_S+\omega_u}} TU=(g0Yg1dg2sug3ψu)xS+ωu1,其中 s u s_u su 是一个序列号, ψ u = H ( P U ∣ ∣ P r i c e ∣ ∣ S e r v ∣ ∣ V P T ) \psi_u=H(\mathbb{P}_U||Price||Serv||VP_T) ψu=H(PU∣∣Price∣∣Serv∣∣VPT) P r i c e Price Price 是票据的价格, S e r v Serv ServU 想要访问的服务, V P T VP_T VPT 是有效期。发送 ( T U , d ′ , s u , ω u , ψ u , S e r v , P r i c e , V P T ) (T_U,d',s_u,\omega_u,\psi_u,Serv,Price,VP_T) (TU,d,su,ωu,ψu,Serv,Price,VPT)U
  2. 计算 d u = d + d ′ d_u=d+d' du=d+d 并检查 e ( T U , Y s ρ ω u ) = ? e ( g 0 , ρ ) ⋅ e ( Y U , ρ ) ⋅ e ( g 1 , ρ ) d u ⋅ e ( g 2 , ρ ) s u ⋅ e ( g 3 , ρ ) ψ u e(T_U,Y_s\rho^{\omega_u})\overset{?}{=}e(g_0,\rho)\cdot e(Y_U,\rho)\cdot e(g_1,\rho)^{d_u}\cdot e(g_2,\rho)^{s_u}\cdot e(g_3,\rho)^{\psi_u} e(TU,Ysρωu)=?e(g0,ρ)e(YU,ρ)e(g1,ρ)due(g2,ρ)sue(g3,ρ)ψu。保存假名 P s U = ξ x u g 1 d u Ps_U=\xi^{x_u}g_1^{d_u} PsU=ξxug1du 和票据 T i c k e t U = ( d u , s u , ψ u , ω u , T u , P U , P r i c e , S e r v , V P T ) Ticket_{U}=(d_u,s_u,\psi_u,\omega_u,T_u,\mathbb{P}_U,Price,Serv,VP_T) TicketU=(du,su,ψu,ωu,Tu,PU,Price,Serv,VPT)

TicketValidation.

在这里插入图片描述

U 初始化一个空表用于存储验证者 V 的身份信息,改表的目的是确保一个验证者只能请求一个票据一次,防止诚实的用户被恶意的验证者去匿名化。另一方面,V 初始化一个空表来存储来自 U 的身份认证记录,以确保票据是否被使用过(双重消费检测)。票据验证过程为:V 发送一个随机数 r r r 和他的身份 I D V ID_V IDVU。假设有一些带外通道允许 UV 进行验证,比如是火车的警卫。U 首先检查 V 没有在 T a b l e U Table_U TableU 的条目中。否则,他继续向 V 发送他的票据 T i c k e t U Ticket_U TicketU 的票据记录 T r a n s T Trans_T TransT,其中包含零知识证明 ∏ U 3 \prod_U^3 U3。票据记录使得 V 相信她是一个合法的用户,她拥有一张有效的票据 T i c k e t U Ticket_U TicketU。由于 T i c k e t U Ticket_U TicketU 包含了用户的私钥 x u x_u xu 作为其假名的一部分,因此需要将其知识作为 ∏ U 3 \prod_U^3 U3 的一部分显示。假设 U 的私钥没有被泄露,我们的方案能够确保票据的不可转让性。此外, T r a n s T Trans_T TransT 包含 V 的随机数 r r r 来防止简单的重放攻击。U 通过更新 T a b l e U Table_U TableU V 的身份和 r r r 来完成验证过程。如果 V 可以成功验证 U 的票据记录,V 授权她访问服务的权限,并使用 T r a n s T Trans_T TransT 更新 T a b l e V Table_V TableV

  1. V 初始化一个空表 T a b l e V Table_V TableV,选择随机数 r ← Z p r\leftarrow Z_p rZp,发送 ( I D V , r ) (ID_V,r) (IDV,r)U
  2. U 初始化一个空表: T a b l e U Table_U TableU。检查如果 H ( I D V ) ∈ T a b l e U H(ID_V)\in Table_U H(IDV)TableU,终止;反之 H ( I D V ) ∉ T a b l e U H(ID_V)\notin Table_U H(IDV)/TableU,进行下一步。选择 π , λ ← Z p \pi,\lambda\leftarrow Z_p π,λZp 并计算 D = g s u , E = ξ x u H ′ ( I D V ) r s u , F = T U ϑ π , J = g π ϑ λ D=g^{s_u},E=\xi^{x_u}H'(ID_V)^{rs_u},F=T_U\vartheta^\pi,J=g^\pi \vartheta^\lambda D=gsu,E=ξxuH(IDV)rsu,F=TUϑπ,J=gπϑλ W = J ω u = g π ′ ϑ λ ′ W=J^{\omega_u}=g^{\pi'}\vartheta^{\lambda'} W=Jωu=gπϑλ 其中 π ′ = π ω u \pi'=\pi\omega_u π=πωu λ ′ = λ ω u \lambda'=\lambda\omega_u λ=λωu。计算证明 ∏ U 3 \prod_U^3 U3
    P o K { ( x u , d u , s u , ω u , π , λ , π ′ , λ ′ ) : D = g s u ∧ P s U = ξ x u g 1 d u ∧ E = ξ x u H ′ ( I D V ) r s u ∧ J = g π ϑ λ ∧ W = J ω u = g π ′ ϑ λ ′ ∧ e ( F , Y s ) e ( g 0 , ρ ) ⋅ e ( P S U , ρ ) ⋅ e ( g 3 , ρ ) ψ u = e ( g 2 , ρ ) s u ⋅ e ( F , ρ ) − ω u ⋅ e ( ϑ , r h o ) π ′ ⋅ e ( ϑ , ρ ) π } PoK\begin{Bmatrix} (x_u,d_u,s_u,\omega_u,\pi,\lambda,\pi',\lambda'):D=g^{s_u}\wedge P_{s_U}=\xi^{x_u}g_1^{d_u}\wedge E=\xi^{x_u}H'(ID_V)^{rs_u}\wedge \\ J=g^{\pi}\vartheta^\lambda \wedge W=J^{\omega_u}=g^{\pi'}\vartheta^{\lambda'}\wedge \frac{e(F,Y_s)}{e(g_0,\rho)\cdot e(P_{S_U},\rho)\cdot e(g_3,\rho)^{\psi_u}}=e(g_2,\rho)^{s_u}\cdot e(F,\rho)^{-\omega_u}\cdot e(\vartheta,rho)^{\pi'}\cdot e(\vartheta,\rho)^{\pi} \end{Bmatrix} PoK{(xu,du,su,ωu,π,λ,π,λ):D=gsuPsU=ξxug1duE=ξxuH(IDV)rsuJ=gπϑλW=Jωu=gπϑλe(g0,ρ)e(PSU,ρ)e(g3,ρ)ψue(F,Ys)=e(g2,ρ)sue(F,ρ)ωue(ϑ,rho)πe(ϑ,ρ)π}
  3. 证明的 transcript 是: T r a n s T = ( ( D , E ) , F , J , W , ψ u , P S U , P U , P r i c e , S e r v , V P T , ∏ U 3 ) Trans_T=((D,E),F,J,W,\psi_u,P_{S_U},\mathbb{P}_{U},Price,Serv,VP_T,\prod_U^3) TransT=((D,E),F,J,W,ψu,PSU,PU,Price,Serv,VPT,U3),更新: T a b l e U = T a b l e U ∪ { H ( I D V ) , r } Table_U=Table_U\cup \{H(ID_V),r\} TableU=TableU{H(IDV),r},发送 ( T r a n s T , P s U , V P T ) (Trans_T,P_{s_U},VP_T) (TransT,PsU,VPT)S
  4. 检查 ψ u = ? H ( P U ∣ ∣ P r i c e ∣ ∣ S e r v ∣ ∣ V P T ) \psi_u\overset{?}{=}H(\mathbb{P}_U||Price || Serv||VP_T) ψu=?H(PU∣∣Price∣∣Serv∣∣VPT) 和证明 ∏ U 3 \prod_U^3 U3。更新: T a b l e V = T a b l e V ∪ { ( ( r , D , E ) , F , J , ψ u ) } Table_V=Table_V\cup\{((r,D,E),F,J,\psi_u)\} TableV=TableV{((r,D,E),F,J,ψu)}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值