# 一 文章内容
---
# 摘要
## 背景和挑战:
在V2G(Vehicle-to-Grid)网络中,为鼓励BV(Battery-powered vehicle)的参与需要设置一定的奖励机制,但是扩大V2G网络部署会带来 **安全**和 **隐私**问题。
## 提出方法:
本文提出一种新概念:**BBARS (V2G网络中基于区块链的匿名奖励机制)**,并给出了正式的 **系统模型**和 **安全模型**,通过两种不同的PKC(Public key cryptosystem)设计了详细的BBARS机制。

---
# 1 简介
## 1.1 相关工作
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315125924545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
#### 现有工作的不足:
It is still an open problem to solve the anonymity, unlinkability,untraceability simultaneously

## 1.2 文章贡献
- 首次提出基于区块链的V2G网络中匿名奖励机制,并给出正式的系统模型和安全模型。并首次考虑CAG(Center Aggregator)的匿名和BV的匿名。
- 付款方和收款方地址具有 **不可链接性**(无法建立奖励双方的联系)和 **不可追踪性**(不可找到付款方的地址)。
- 使用两种PKC来设计BBARS机制,一种用于聚合签名,一种用于区块链

---
# 2 BBARS 机制
## 2.1 密码方案
### (1)ECC 和 双线性对
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020031512595764.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130022840.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
### (2)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.2 安全模型
### 2.2.1 安全目标
- **1)BV、CAG和LAG间的互相认证**
- **2)BV的匿名性**
- **3)CAG的匿名性**
- **4)不可链接性**

### 2.2.2 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使用不同的公钥和相应的信息(表示为$Cont_i$.)发起请求,C创建认证信息$\sigma _j$ 并返回给A.
- **伪造**:A使用公钥和相应的信息伪造有效认证$Cont$,A赢得游戏满足
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130048841.png)
其中p(k)是安全参数k的多项式,A赢得游戏的概率是不可忽略的。

---
## 2.3 BBARS架构
### 系统实体
- **CAG(Center Aggregator)**
- **LAG(Local Aggregator)**
- **BV(Battery powered vehicle)**
- **Blockchain**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130103654.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
---
## 2.4 BBARS系统工作流程
### 2.4.1 Setup
#### 1)Parameter type 1
- 用途:Blockchain、Monero
- E(椭圆曲线)、$\mathbb{F} _q$(有限域)、$q$(素数)、$G$($E(\mathbb{F} _q)$的生成点/基点)、$\hat{l}$(G的阶)、$\mathbb{F}_{\hat{l}}$(由参数$\hat{l}$构成的有限域)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130120484.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
#### 2)Parameter type 2
- 用途:Registration、Receipt、Certificate、Authentication、Revocation
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130140394.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
---
### 2.4.2 Contract-based authorization
#### $Cont_i$包含:BV's status information、reward for the service、service charge standard、payment method、$(A_i,B_i)$
- CAG首先用自己的私钥z和收到的$Cont_i$生成签名$\sigma _i =zH(Cont_i)$
- 在Tab表中记录BV的地址$(Ai,Bi)$
- CAG将$(Cont_i,\sigma _i)$发给$BV_i$
- CAG发送更新的Tab表给LAGs
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130154674.png)
---
### 2.4.3 Anonymous service and receipt
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130248457.png)
$BV_i$访问$V2G$网络并且为电网提供服务,它向$LAG_j$提供$(Cont_i,\sigma _i)$,验证过程如下:

- $LAG_j$收到大量$(Cont_i,\sigma _i)$对,其中$i \in \mathbb{I}$
- $LAG_j$选区随机数$\alpha _i \in \mathbb{\mathbb{F}}_p$,验证$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)$不成立则拒绝,否则执行下列步骤
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130258964.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
- 对所有$i \in \mathbb{I}$,$LAG_j$从$Cont_i$提取出相应公钥$(Ai,Bi)$,判断$(Ai,Bi)$是否属于$Tab$表,成立则接受服务,否则拒绝
- 当$BV_i$为电网提供了服务,$LAG_j$生成相应的$receipt$:
+ 记$BV$的服务和相应奖励为信息$m_i,_j$.$LAG_j$计算$\sigma _i,_j = l_jH(m_i,_j, Ai, Bi)$
+ $LAG_j$给$CAG$和$BV_i$都发送$(m_i,_j , Ai, Bi, \sigma _i,_j)$

#### PS: Receipt(BVi): $(m_i,_j , Ai, Bi, \sigma _i,_j)$Certificate(CAG):$(m_i,_j , Ai, Bi, \sigma _i,_j)$

---
### 2.4.4 Reward from CAG
- $CAG$接受到$LAG_j$发送的$(m_i,_j , Ai, Bi, \sigma _i,_j)$,选取随机数$\beta _i,_j \in \mathbb{F}_p,i \in \mathbb{I}, j \in \mathbb{J}$
验证下列等式是否成立:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130425143.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
如果不成立则拒绝,成立则继续

- 对于特定$BV_i$,$CAG$解压接收的消息并提取其地址$(A_i,B_i)$,选取随机数$r \in \mathbb{F}^*_ {\hat{l}}$,然后计算$BV_i$的一次性公钥(One-Time Public Key)$\hat{P_i}=H_1(rA_i)G+B_i$
- CAG可以解压信息$m_i,_j$得到奖励金额$bal_i,_j$,然后计算总的奖励金额$bal_i=\underset{j \in \mathbb{J}}{\sum}bal_i,_j$,$CAG$可以从区块链读取总的奖励金额$bal$,因此$CAG$准备了$\mathbb{J}+1$个输出:分别为上一步计算的一次性公钥(即地址)$\hat{P_i}$和$bal_i$包含$J$个元素。为了简化,将输出和一些元数据表示为信息$m$,例如:对于每一个$BV_i$,$m$包含$R$和$(\hat{P_i},bal_i)$,其中$R=rG$
- CAG用私钥$z$计算对消息$m$的签名再哈希$A=H_2(Sign_z(m))$
- 最终步骤:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130450189.png)
+ 通过上述构造,CAG首先计算:
$L_i=\left\{\begin{matrix}q_iG & if & i=s\\ q_iG+w_iP_i & if & i \ne s\end{matrix}\right.$ $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.$
+ 然后计算$c=H_1(m,A,L_0,...,L_n,R_0,...,R_n)$和下列值:
$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.$ $r_i=\left\{\begin{matrix}q_i & if & i\ne s\\ q_s-c_sx_s & if & i = s\end{matrix}\right.$
最终的签名(环签名)为:$\sigma=(I,A,c_0,...,c_n,r_0,...r_n)$
#### 奖励$bal_i$发送到$\hat{P_i}$,$bal_c$发送到$\hat{P_c}$(新选定的存储剩余奖金的地址)
---
### 2.4.5 Verification and Gain
收到消息$m$的签名$\sigma$后,验证者对签名的有效性进行验证:

- 计算:$L_i'=r_iG+c_iP_i, R_i'=r_iH_2(P_i)+c_iI$
- 验证者检查等式:$\sum_{n}^{i=0}c_i=H_1(m,A,L_0',...L_n',R_0',...,R_n') \mod \hat{l}$,成立则继续
- 验证者检查镜像$I=x_sH_2(P_s)$是否在以前的签名中出现过,如果是则拒绝,否则接受$\sigma$

接受签名$\sigma$后,$BV_i$获取奖励:

- 提取消息$m$中的$R$和$(\hat{P_i},bal_i)$
- 计算$P_i '=H_1(a_iR)G+B_i$ 并判断$\hat{P_i} = P_i'$是否成立,成立则继续
- $BV_i$计算$x_i=H_1(a_iR)+b_i$,满足$\hat{P_i}=x_iG$,因为$BV_i$拥有自己的私钥$(a_i,b_i)$

---
# 3 实验结果
#### 3.1 CAG在Contract-based authorization阶段时间开销和LAG在Anonymous service and receipt阶段时间开销比较
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130506715.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
#### 3.2 CAG在Reward from CAG阶段时间开销(不同$\mathbb{J}$)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130519961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
#### 3.3 CAG在Reward from CAG阶段时间开销(不同$\mathbb{I}$)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130525702.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)
#### 3.4 区块链在Verification and Gain阶段时间开销
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200315130531394.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tvYWxhWkI=,size_16,color_FFFFFF,t_70)