5.1 测试环境
5.1.1 硬件介绍
在测试环境中共由6台设备,其中4台设备搭建区块链网络,1台设备用于储存传感器数据,1台设备用于查询区块链数据,每台设备的配置情况以及对应的操作系统和测试内网IP分配情况如下表所示。
| 名称 | 内存 | CPU主频 | 内核数 | 硬盘大小 | 操作系统 | 内部IP |
|---|---|---|---|---|---|---|
| 处理节点 | 2GB | 1.2GHz | 8 | 200GB | Raspberrypi | 192.168.1.102 |
| 边缘节点1 | 1GB | 1GHz | 4 | 100GB | Ubuntu 16.04 | 192.168.1.103 |
| 边缘节点2 | 1GB | 1GHz | 4 | 100GB | Ubuntu 16.04 | 192.168.1.104 |
| 查询节点 | 1G | 1GHz | 4 | 100GB | Ubuntu 16.04 | 192.168.1.105 |
| 储存节点 | 1G | 1GHz | 4 | 200GB | Ubuntu 16.04 | 192.168.1.106 |
| 区块链节点 | 8GB | 2.2GHz | 8 | 2T | Windows | 192.168.1.107 |
其中传感器使用Arduino集成,与树莓派串口通讯,Arduino采集的传感器数据通过串口发送给树莓派,硬件连接如图所示


5.1.2 软件介绍
以太坊Geth客户端使用geth-1.8.3版本,Go使用go-1.10版本,如图所示。

Qt桌面应用程序使用Qt-5.6 mingw49_32编译器,IDE使用QtCreator5.6.1;部分版本信息如图所示。


在本文中,通过Windows-PC上部署的10个区块链节点充当一个认证机构,负责挖矿打包交易并产生区块,这些节点进行工作量去竞争把交易信息记录入区块的权利,同时负责交易信息的广播、同步和储存;边缘节点仅在传感器需要维护比如报废、维修等情况下才需要发起交易,其余情况都在采集环境数据通过网络上传;处理节点除了边缘节点部署上线的时候进行交易发起外,还需要发起带数字指纹的交易;查询节点用于区块链的查询,验证数据真实性。本文的测试结构示意图如图所示。

5.2 功能测试
下面按照系统运作步骤进行功能测试和验证。
5.2.1 相关初始化工作
(1)节点之间网络连接测试
配置好各个硬件节点局域网的网络环境后,先进行节点之间的网络连接测试,使用其中一个节点去ping其它所有节点,验证局域网已经搭建完成,如图所示。

(2)以太坊Geth客户端初始化并创建账户
所有节点安装配置以太坊Geth客户端后,指定区块链数据存放路径初始化客户端,然后创建账户,得到对应的以太坊地址。

(3)节点构建创世区块,加入静态文件组成区块链底层框架
全部节点必须使用同一个创世块信息构建出创世块,随后在区块链目录中添加静态文件,让节点之间相互连接,组成区块链底层框架。

(4)公私钥初始化并分配
使用openssl加密库为每一个节点生成一对RSA公私钥。

(5)边缘节点部署上线登记
处理节点根据数据库中边缘节点的以太坊地址和公钥构建并发起交易,区块链节点挖矿进行记录打包。结果如图所示。


5.2.2 边缘节点采集环境数据
(1)传感器数据采集测试
测试边缘节点传感器的数据采集情况,传感器使用Arduino集成,数据的类型暂不限定,数据的产生利用硬件随机发生器完成,设定为每隔10s生成一个随机数充当传感器数据,如图所示。

(2)边缘节点接收传感器采集的环境数据
封装签名加密后上传给处理节点。边缘节点部分原始数据如图 所示。

在Qt应用程序中,也能查看到具体数据,如图所示。

5.2.3 处理节点提取数字指纹并发起交易
处理节点在接收到数据包后,经过解密和签名验证,计算传感器数字指纹,提取数据包中的以太坊地址,然后发起一笔交易,如图所示。

5.2.4 区块链的形成
区块链节点不断挖矿把处理节点发起的交易记录入区块,待记录成后,处理节点随即提取区块的时间戳,把数据打包发送储存节点,然后Qt应用程序中进行显示。

5.2.5 数据真实性验证
本文设定以时间戳为索引,在区块链中搜索对应的数字指纹,于是在Qt应用程序中输入时间戳就能触发数据真实性验证脚本,然后自动在区块链上搜索数字指纹并在本地计算数字指纹进行对比,结果在界面中显示。

验证成功后,将会显示传感器数据数字指纹所在的区块号和交易区块的哈希值,可以随时进行查询。当存在人为篡改的时候,比如故意修改传感器数据,然后再进行数据真实性验证,就会收到系统发出的数字签名验证失败的警告,如图所示。

5.3 安全性分析
基于区块链的传感器数据保护系统,通过非对称加密、数字签名、数字指纹和区块链分布式全网验证的方式保证了传感器数据的防篡改的安全行性,同时保障了数据的真实性,在前一节通过测试的方式得到了验证。当存在人为篡改的情况出现时,篡改者只能通过以下方法进行:
(1)窃听边缘节点网络数据包进行篡改。由于边缘节点使用了数字签名技术以及非对称加密技术进行双重保护,所以除非窃听能够同时获取边缘节点和处理节点的私钥,否则无法对数据包进行修改。
(2)拥有管理权限级别而进行数据库篡改。若通过此方法进行数据库传感器数据的篡改同时通过系统的验证,则篡改者必须发起区块链51攻击,而发起51攻击需要具备以下两个条件:
a.技术条件:利用强大的加密算法和巧妙的数据结构确保传感器数据数字指纹所在区块以及后续所有区块的改动都能自圆其说;
b.经济条件:需要付出巨大的经济成本完成后续所有区块的工作量证明,同时需要拥有超过全网51%的计算能力,让篡改的区块链被篡改者的节点所接纳同时说服其余节点。
条件a能够通过长时间进行细致的改动而完成,但是条件b则是篡改者难以实现的,因为在数字指纹写入区块链后,传感器的数据就由加密数字货币的工作量证明机制保护,获得极高的数据安全性,即使能够完成后续所有区块的工作量证明,但是只要区块链是一条联盟链或者公链,节点散布全国甚至全世界,那么如果想掌握超过全网51%的计算能力,就要拥有巨大的资源条件,所以篡改者几乎不能在耗费少量资源的情况下去篡改数据,如果想篡改成功,必须付出极大的代价,这通常是得不偿失的。
5.4 本章小结
本章通过实验和模拟的方式进行系统的测试验证。在系统进行测试之前,需要把相关环境搭建成功,也就是进行系统的初始化工作比如节点公私钥的分配及固件烧录等,然后进行基本功能的测试并描述核心功能的现象,最后模拟人为篡改进行系统的数据防篡改测试以及进行安全性分析。
本文详细介绍了在毕业设计中,如何对一个利用区块链保护传感器数据的系统进行测试与分析。测试环境包括6台设备,其中4台构成区块链网络,1台存储传感器数据,1台查询区块链。功能测试涉及初始化、数据采集、数字指纹提取、区块链形成和数据真实性验证。安全性分析表明,系统通过非对称加密、数字签名等技术有效防止了数据篡改,篡改成本极高。
446

被折叠的 条评论
为什么被折叠?



