Skip to content

tanchenkai/Paper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Paper

1.输入设置qbits=1024, rbits=160,生成双线性配对的系统参数

2.KeyGen:车辆S生成Sk_s =x,对应的公钥是Pk_s 。服务器C生成sk_c =y,Pk_c =Y=yP

3.通过对称加密算法rsa加密文件,并且保存密钥。同样的,可以通过密钥解密文件。

4.Trapdoor:输入私钥和关键字w,车辆\emph{S}计算对应的陷门$T_w = (H_1(w)+x)^{-1}P$。

5.PEKS:输入车辆公钥$Pk_s$、服务器公钥$Pk_c$、关键字w,车辆\emph{S}随机选择$r_1,r_2 \in \mathbb{Z}{_q^*}$。车辆\emph{S}计算A = $r_1H_1(w)P+r_1X$, B = $r_2P$, V=$H_2(\hat{e}(r_1P+r_2A,Y))$。得到输出(A,B,V)。

6.将加密消息和PEKS结果连接可以得到加密文档。计算加密文档$Ct_s$的签名\cite{zhang2004efficient}。

7.Test:输入车辆公钥$Pk_s$、服务器私钥$Sk_c$、(A,B,V)、陷门$T_w$。然后测试$H_2(\hat{e}(yA\,T_w+B)) =V$

8.为了能快速搜索签名$Sig$,服务器\emph{C}根据\emph{S}的区块链账户上次记录的序列号$Sn_{i-1}$,生成签名$Sig$的序列号$Sn_{i}$=1。服务器\emph{C}的区块链账户广播与发送者\emph{S}的交易$(Sig,Sn_i,data)$。$(Sig,Sn_i,data)$用于检查数据完整性和验证用户身份。生成的签名如图5-9所示长度为258位,因此将数据存入区块链消耗的以太坊费用(gas)太多。通过一次哈希算法(sha256),计算64位长度的签名如图5-11所示。

9.通过ganache可以快速启动本地的以太坊区块链,并且可以通过ganache查看交易区块和日志。

10.通过智能合约可以将数据写入区块链,在本文中通过在网页中输入如图5-11的签名,可以将签名写入区块链并且在网页中显示存入结果,交易区块如5-12所示。具体步骤为:(1)通过Remix编写智能合约,编译通过后在Remix网站上虚拟部署并测试。(2)在Remix网站上测试成功后,通过Chrome浏览器的插件Metamask新增ganache的RPC URL。(3)在ganache的 RPC URL 上添加ganache中生成的区块链账户私钥。(4)在该区块链账户中部署智能合约如图5-14所示。

11.在部署智能合约之后,通过JavaScript库JQuery、CSS/HTML框架Bootstrap、web3(以太坊的通用JSON-RPC规范JavaScript API)编写网页。在步骤10中部署区块链之后可以获取智能合约的地址,通过智能合于的地址以及web3命令web3.eth.Contract将网页与智能合约相连接如图5-15所示。

  1. 通过web3.eth.getAccounts可以获取ganache生成的区块链账户。在输入栏输入图5-11的签名,将签名发送给获取到的区块链账户0上。

13.签名写入了区块链,并且在网页中得到了存入的区块链信息。

第二个仿真实验设计一个区块链应用来仿真方案中的区块链功能,具体如下所述:

  1. 首先设计智能合约,智能合约具体功能为(1)用户存入数据共享的哈希值。(2) 用户可以在网页查看哈希值,路侧单元可以通过查看的哈希值来完成密钥管理。(3)查 看发送者余额与发送以太币功,用于仿真信任管理功能。在代码编辑器编辑完智能合约 后。通过 chai(用于节点和浏览器的 BDD / TDD 断言库,可以与任何 javascript 测试框 架完美地配对。)和 mocha(一个功能丰富的 JavaScript 测试框架)来测试智能合约,测 试结果如图 5-17 所示。

通过 metamask 切换用户可以模拟不同用户向区 块链发送数据以及查询数据。根据网页显示内容结构,展示了通过终端写入的信息“第 一次发送消息”,且发送者的地址正确。接着通过 metamask 切换不同的用户(不同的地 址导致右上角头像不同)。在输入框,输入“第二次发送消息”,并如图 5-20 所示,通过 metamask 确认交易。

可以正确的显示第二次发送消息的用户地址,用户 头像,以及发送的消息。

按照方案数据共享所述,用户将签名的哈希值存储在区块链中。三个用户都成功的将签名的哈希值存入区块链。双线性配对的公钥可搜索加密与双线性 配对的签名都在第一次实验中被证明是可行的。而第二次实验证明了方案在区块链应用 上是可行的,因此方案整体上是一个可行的区块链应用。

在本文的方案中,用户的可信度是通过账户余额来显示的。在网页应用中,通 过发送以太币按钮可以快速发起交易。如图 5-27 所示,通过 metamask 选择第一个实验 账户,并且通过按钮向第二个区块链账户发送 5 个以太币。同时第三个账户向第二个账 户发送一个以太币。从图 5-28 可以看出账户区块链余额,账户 1 减少了 5 个以太币,账 户 3 通过终端命令转账给账户 2 一个以太币。整体上由于 gas 消耗,在测试中 gas 消耗 为 0.03,仍有改进空间。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published