一、文章内容
1. 背景和挑战
在V2G(Vehicle-to-Grid)网络中,为鼓励BV(Battery-powered vehicle)的参与需要设置一定的奖励机制,但是扩大V2G网络部署会带来 安全和 隐私问题。
2. 提出方法
本文提出一种新概念:BBARS (V2G网络中基于区块链的匿名奖励机制),并给出了正式的 系统模型和 安全模型,通过两种不同的PKC(Public key cryptosystem)设计了详细的BBARS机制。
3. 简介
相关工作
现有工作的不足:
It is still an open problem to solve the anonymity, unlinkability,untraceability simultaneously
4. 文章贡献
- 首次提出基于区块链的V2G网络中匿名奖励机制,并给出正式的系统模型和安全模型。并首次考虑CAG(Center Aggregator)的匿名和BV的匿名。
- 付款方和收款方地址具有 不可链接性(无法建立奖励双方的联系)和 不可追踪性(不可找到付款方的地址)。
- 使用两种PKC来设计BBARS机制,一种用于聚合签名,一种用于区块链
二、BBARS 机制
1. 密码方案
ECC 和 双线性对匹配
Aggregate signature & Ring signature
- Aggravated signature:An aggregate signature scheme is a signature scheme which can aggregate many signatures on many distinct messages from many distinct users into one single signature.
- Ring signature:For a secure ring signature,it is required that only users in the group member list can generate a valid signature and the signatures generated by different members are theoretically indistinguishable.
2. 安全模型
安全目标
- BV、CAG和LAG间的互相认证
- BV的匿名性
- CAG的匿名性
- 不可链接性
Definition-不可伪造性
(1)定义
- 拥有 概率多项式时间的敌手A赢得游戏的概率是可 忽略不计的,则称CAG的认证协议满足不可伪造性。
(2)过程
- Setup:生成系统参数,CAG生成公/私钥对(PKI),BV生成公/私钥对(By self),将系统参数、CAG的公钥、BV的公钥发送给敌手A;
- 敌手A和挑战者C的交互:A可以选择性的向挑战者发送信息并得到回应:
- Hash请求:A向C发送哈希请求,C创建哈希函数值并将其发送给A。或者,C访问哈希函数并用实际的哈希值响应A
- Authentication请求:A使用不同的公钥和相应的信息(表示为 C o n t i Cont_i Conti.)发起请求,C创建认证信息 σ j \sigma _j σj 并返回给A.
- 伪造:A使用公钥和相应的信息伪造有效认证
C
o
n
t
Cont
Cont,A赢得游戏满足
其中p(k)是安全参数k的多项式,A赢得游戏的概率是不可忽略的。
3. BBARS架构
系统实体
- CAG(Center Aggregator)
- LAG(Local Aggregator)
- BV(Battery powered vehicle)
- Blockchain
4. BBARS系统工作流程
Setup
(1) Parameter type 1
- 用途:Blockchain、Monero
- E(椭圆曲线)、
F
q
\mathbb{F} _q
Fq(有限域)、
q
q
q(素数)、
G
G
G(
E
(
F
q
)
E(\mathbb{F} _q)
E(Fq)的生成点/基点)、
l
^
\hat{l}
l^(G的阶)、
F
l
^
\mathbb{F}_{\hat{l}}
Fl^(由参数
l
^
\hat{l}
l^构成的有限域)
(2) Parameter type 2
- 用途:Registration、Receipt、Certificate、Authentication、Revocation
Contract-based authorization
C o n t i Cont_i Conti包含:BV’s status information、reward for the service、service charge standard、payment method、 ( A i , B i ) (A_i,B_i) (Ai,Bi)
- CAG首先用自己的私钥z和收到的 C o n t i Cont_i Conti生成签名 σ i = z H ( C o n t i ) \sigma _i =zH(Cont_i) σi=zH(Conti)
- 在Tab表中记录BV的地址 ( A i , B i ) (Ai,Bi) (Ai,Bi)
- CAG将 ( C o n t i , σ i ) (Cont_i,\sigma _i) (Conti,σi)发给 B V i BV_i BVi
- CAG发送更新的Tab表给LAGs
Anonymous service and receipt
B
V
i
BV_i
BVi访问
V
2
G
V2G
V2G网络并且为电网提供服务,它向
L
A
G
j
LAG_j
LAGj提供
(
C
o
n
t
i
,
σ
i
)
(Cont_i,\sigma _i)
(Conti,σi),验证过程如下:
- L A G j LAG_j LAGj收到大量 ( C o n t i , σ i ) (Cont_i,\sigma _i) (Conti,σi)对,其中 i ∈ I i \in \mathbb{I} i∈I
-
L
A
G
j
LAG_j
LAGj选区随机数
α
i
∈
F
p
\alpha _i \in \mathbb{\mathbb{F}}_p
αi∈Fp,验证
e
(
∑
i
∈
I
α
i
σ
i
,
P
)
=
e
(
∑
i
∈
I
α
i
H
(
C
o
n
t
i
)
,
Z
)
e(\underset{i \in \mathbb{I}}{\sum}\alpha_i \sigma_i,P)=e(\underset{i \in \mathbb{I}}{\sum}\alpha_i H(Cont_i),Z)
e(i∈I∑αiσi,P)=e(i∈I∑αiH(Conti),Z)不成立则拒绝,否则执行下列步骤
- 对所有 i ∈ I i \in \mathbb{I} i∈I, L A G j LAG_j LAGj从 C o n t i Cont_i Conti提取出相应公钥 ( A i , B i ) (Ai,Bi) (Ai,Bi),判断 ( A i , B i ) (Ai,Bi) (Ai,Bi)是否属于 T a b Tab Tab表,成立则接受服务,否则拒绝
- 当
B
V
i
BV_i
BVi为电网提供了服务,
L
A
G
j
LAG_j
LAGj生成相应的
r
e
c
e
i
p
t
receipt
receipt:
- 记 B V BV BV的服务和相应奖励为信息 m i , j m_i,_j mi,j. L A G j LAG_j LAGj计算 σ i , j = l j H ( m i , j , A i , B i ) \sigma _i,_j = l_jH(m_i,_j, Ai, Bi) σi,j=ljH(mi,j,Ai,Bi)
- L A G j LAG_j LAGj给 C A G CAG CAG和 B V i BV_i BVi都发送 ( m i , j , A i , B i , σ i , j ) (m_i,_j , Ai, Bi, \sigma _i,_j) (mi,j,Ai,Bi,σi,j)
PS: Receipt(BVi): ( m i , j , A i , B i , σ i , j ) (m_i,_j , Ai, Bi, \sigma _i,_j) (mi,j,Ai,Bi,σi,j)Certificate(CAG): ( m i , j , A i , B i , σ i , j ) (m_i,_j , Ai, Bi, \sigma _i,_j) (mi,j,Ai,Bi,σi,j)
Reward from CAG
-
C A G CAG CAG接受到 L A G j LAG_j LAGj发送的 ( m i , j , A i , B i , σ i , j ) (m_i,_j , Ai, Bi, \sigma _i,_j) (mi,j,Ai,Bi,σi,j),选取随机数 β i , j ∈ F p , i ∈ I , j ∈ J \beta _i,_j \in \mathbb{F}_p,i \in \mathbb{I}, j \in \mathbb{J} βi,j∈Fp,i∈I,j∈J
验证下列等式是否成立:
如果不成立则拒绝,成立则继续 -
对于特定 B V i BV_i BVi, C A G CAG CAG解压接收的消息并提取其地址 ( A i , B i ) (A_i,B_i) (Ai,Bi),选取随机数 r ∈ F l ^ ∗ r \in \mathbb{F}^*_ {\hat{l}} r∈Fl^∗,然后计算 B V i BV_i BVi的一次性公钥(One-Time Public Key) P i ^ = H 1 ( r A i ) G + B i \hat{P_i}=H_1(rA_i)G+B_i Pi^=H1(rAi)G+Bi
-
CAG可以解压信息 m i , j m_i,_j mi,j得到奖励金额 b a l i , j bal_i,_j bali,j,然后计算总的奖励金额 b a l i = ∑ j ∈ J b a l i , j bal_i=\underset{j \in \mathbb{J}}{\sum}bal_i,_j bali=j∈J∑bali,j, C A G CAG CAG可以从区块链读取总的奖励金额 b a l bal bal,因此 C A G CAG CAG准备了 J + 1 \mathbb{J}+1 J+1个输出:分别为上一步计算的一次性公钥(即地址) P i ^ \hat{P_i} Pi^和 b a l i bal_i bali包含 J J J个元素。为了简化,将输出和一些元数据表示为信息 m m m,例如:对于每一个 B V i BV_i BVi, m m m包含 R R R和 ( P i ^ , b a l i ) (\hat{P_i},bal_i) (Pi^,bali),其中 R = r G R=rG R=rG
-
CAG用私钥 z z z计算对消息 m m m的签名再哈希 A = H 2 ( S i g n z ( m ) ) A=H_2(Sign_z(m)) A=H2(Signz(m))
-
最终步骤:
- 通过上述构造,CAG首先计算:
L i = { q i G i f i = s q i G + w i P i i f i ≠ s L_i=\left\{\begin{matrix}q_iG & if & i=s\\ q_iG+w_iP_i & if & i \ne s\end{matrix}\right. Li={qiGqiG+wiPiififi=si=s R i = { q i H 2 ( P i ) i f i = s q i H 2 ( P i ) + w i I i f i ≠ s R_i=\left\{\begin{matrix}q_iH_2(P_i) & if & i=s\\ q_iH_2(P_i)+w_iI & if & i \ne s\end{matrix}\right. Ri={qiH2(Pi)qiH2(Pi)+wiIififi=si=s - 然后计算
c
=
H
1
(
m
,
A
,
L
0
,
.
.
.
,
L
n
,
R
0
,
.
.
.
,
R
n
)
c=H_1(m,A,L_0,...,L_n,R_0,...,R_n)
c=H1(m,A,L0,...,Ln,R0,...,Rn)和下列值:
c i = { w i i f i ≠ s c − ∑ i ≠ s c i i f i = s c_i=\left\{\begin{matrix}w_i & if & i \ne s\\ c-\underset{i \ne s}{\sum}c_i& if & i = s\end{matrix}\right. ci={wic−i=s∑ciififi=si=s r i = { q i i f i ≠ s q s − c s x s i f i = s r_i=\left\{\begin{matrix}q_i & if & i\ne s\\ q_s-c_sx_s & if & i = s\end{matrix}\right. ri={qiqs−csxsififi=si=s
最终的签名(环签名)为: σ = ( I , A , c 0 , . . . , c n , r 0 , . . . r n ) \sigma=(I,A,c_0,...,c_n,r_0,...r_n) σ=(I,A,c0,...,cn,r0,...rn)
- 通过上述构造,CAG首先计算:
奖励 b a l i bal_i bali发送到 P i ^ \hat{P_i} Pi^, b a l c bal_c balc发送到 P c ^ \hat{P_c} Pc^(新选定的存储剩余奖金的地址)
Verification and Gain
收到消息 m m m的签名 σ \sigma σ后,验证者对签名的有效性进行验证:
- 计算: L i ′ = r i G + c i P i , R i ′ = r i H 2 ( P i ) + c i I L_i'=r_iG+c_iP_i, R_i'=r_iH_2(P_i)+c_iI Li′=riG+ciPi,Ri′=riH2(Pi)+ciI
- 验证者检查等式: ∑ n i = 0 c i = H 1 ( m , A , L 0 ′ , . . . L n ′ , R 0 ′ , . . . , R n ′ ) m o d l ^ \sum_{n}^{i=0}c_i=H_1(m,A,L_0',...L_n',R_0',...,R_n') \mod \hat{l} ∑ni=0ci=H1(m,A,L0′,...Ln′,R0′,...,Rn′)modl^,成立则继续
- 验证者检查镜像 I = x s H 2 ( P s ) I=x_sH_2(P_s) I=xsH2(Ps)是否在以前的签名中出现过,如果是则拒绝,否则接受 σ \sigma σ
接受签名 σ \sigma σ后, B V i BV_i BVi获取奖励:
- 提取消息 m m m中的 R R R和 ( P i ^ , b a l i ) (\hat{P_i},bal_i) (Pi^,bali)
- 计算 P i ′ = H 1 ( a i R ) G + B i P_i '=H_1(a_iR)G+B_i Pi′=H1(aiR)G+Bi 并判断 P i ^ = P i ′ \hat{P_i} = P_i' Pi^=Pi′是否成立,成立则继续
- B V i BV_i BVi计算 x i = H 1 ( a i R ) + b i x_i=H_1(a_iR)+b_i xi=H1(aiR)+bi,满足 P i ^ = x i G \hat{P_i}=x_iG Pi^=xiG,因为 B V i BV_i BVi拥有自己的私钥 ( a i , b i ) (a_i,b_i) (ai,bi)
三、实验结果
(1)CAG在Contract-based authorization阶段时间开销和LAG在Anonymous service and receipt阶段时间开销比较
(2)CAG在Reward from CAG阶段时间开销(不同
J
\mathbb{J}
J)
(3)CAG在Reward from CAG阶段时间开销(不同
I
\mathbb{I}
I)
(4)区块链在Verification and Gain阶段时间开销