蔡超萍 康晓凤 王可 张百川 王宇
关键词:区块链;
联盟链;
行程溯源;
数字签名
中图分类号:TP315 文献标识码:A
1 引言(Introduction)
行程码对防控病毒传播起到了至关重要的作用。一些不法分子恶意伪造行程码,给疾病管控部门的传染病防控工作带来了巨大的困难,也给社会卫生安全带来了严重威胁。为了避免类似事件的发生,行程码的数据防伪就成为行程溯源工作中亟待解决的问题。
本系统通过提供请求者IP(Internet Protocol,网际互联协议)位置的API(Application Programming Interface, 应用程序编程接口),返回json格式的地理位置(精确到区)信息,后端通过工具类JsonUtil处理此信息,再结合打卡时间和用户姓名生成行程对象,行程对象上传到区块链后,根据返回的哈希值生成公钥和私钥,使用私钥对json字符串加密,并把加密结果和公钥写入数字二维码,达到防止伪造行程码的目的。由于区块链具有信息不可篡改的特点,所以可以根据区块的哈希值对用户的行程溯源。Web应用前后端分离,前端使用VUE和Element-UI技术实现图形化用户界面,后端使用Spring身份控制技术分离权限,同时采用ECDSA算法进行签名,实现防篡改和数据保护功能。对比RSA(Rivest-Shamir-Adleman)算法,ECDSA(Elliptic Curve Digital SignatureAlgorithm,椭圆曲线数字签名算法)既保障了信息安全,又降低了算法复杂度[1]。
2 联盟链和ECDSA简介(Introduction to consortiumblockchain and ECDSA)
联盟链是一种基于区块链技术的分布式账本技术,也是一种特殊的区块链[2],由一组受信任的参与者组成,能安全地共享数据和信息,同时具有如下优势:可以防止未经授权的访问和篡改,提供更高的安全性;
可以减少交易的确认时间,提供更快的交易速度;
其成本相较于公共区块链更低,能够减少网络中的节点数量,减少硬件需求;
可以提供高扩展性,支持更多的参与者和应用程序。
ECDSA是一种基于椭圆曲线密码学的数字签名算法,也是一种公钥密码体制[3],用于确保数据的完整性和可靠性。ECDSA使用椭圆曲线算法生成公钥和私钥,其安全性取决于椭圆曲线的安全性即阶的选择,因为它使用更少的计算量生成公钥和私钥,并且可以提供更高的安全性,所以安全性比RSA更高[3]。ECDSA的签名过程非常简单,首先对消息进行哈希计算,其次使用私钥对哈希值加密形成签名,最后使用公钥对签名进行验证。
3 系统设计与实现(System design and implementation)
本系统的核心技术为ECDSA算法和Hyperledger Fabric联盟链技术,核心模块包括Web端和联盟链。Web端分前后两个部分,Web前端采用广泛使用的JavaScript库VUE3结合Element-UI构建网页,后端采用Spring-Boot搭建控制层,并采用Redis缓存数据。联盟链部分在前端加载FabricClient库与Fabric Ca Client,通过RPC(Remote ProcedureCall,远程过程调用协议)服务与另一台服务器上的联盟链的Order和Peer节点进行通信,并在本地SQL(Structured QueryLanguage)数据库保存一份与上传数据相同的备份[4]。综合使用以上技术设计实现了本系统,包括用户管理、行程生成、行程校验和行程溯源四大模块,系统模块如图1所示。
3.1 用户管理模块
本系统没有直接提供注册功能,通过直接添加数据库的特权用户分别管理低级权限的用户。在Spring中使用@PreAuthorize注解控制用户权限[5],规定只有拥有某项权限的用户才可以调用某项函数。Spring Security的访问控制原理是基于角色的访问控制(Role-Based Access Control,RBAC),它将用户分配到不同的角色,并为每个角色分配不同的权限,从而实现访问控制。同时,在目录API中定义后端Controller层中对应的响应所需的路由,在后端使用@RequestController等注解指定相应的方法。在SQL数据库创建用户时,使用role字段赋予操作函数的具体权限,在具体函数中为超级管理员添加对用户进行“增、删、改、查”的权限,具体实现界面如图2所示,超级管理员可以管理普通用户。
3.2 行程生成模块
Web端的前端使用VUE加载地图插件vue-amap,并且向百度、高德、谷歌等厂商申请用于定位API所需的密钥,如图3所示。本系统在前端使用Axois技术通过用户IP向路由请求获取地理位置,逻辑代码再根据地理位置信息生成行程对象,通过工具类TimeToString获得实时时间写入行程对象,前端通过文本框获取用户输入的姓名等详细信息,并返回给后端写入对象,再将数据写入Peer节点。本系统有两个Peer节点,一个用于存储地址的随机编号,另一个用于存储用户的行程信息。Hyperledger Fabric提供了两种创建数据库的选择,即goleveldb(默认)与CouchDB,本系统使用-s参数创建了两个CouchDB數据库。
Hyperledger Fabric架构的通信过程如图4所示,应用向CA(Certificate Authority,证书授权)服务器发起注册,在提交行程的业务流程中向Peer节点发出提交交易的申请,同时Orderer节点对交易进行排序。区块链采用Docker搭建,通过编写配置文件生成证书等文件,创建TraceChannel通道,在服务器中开放17051端口为交互式CLI(Command Line Interface,命令行接口),开放17050端口为Order节点,开放两个数据库端口为Peer节点的交互接口,具体端口与节点域名如图5所示。系统采用Go语言编写链码,完成后将部署智能合约部署到联盟链,使用Hyperledger Fabric shim包实现链上数据的“增、删、改、查”业务,由于区块链具有防篡改特性,因此此业务并不是真实意义上的“增、删、改”操作,而是覆写。
3.3 行程校验模块
行程校验部分的主要算法为ECDSA公钥签名算法[6]。ECDSA是基于椭圆曲线上的离散对数问题, 可分解为EC( Elliptic Curve,椭圆曲线) 上的DSA(DigitalSignature Algorithm, 数字签名算法)问题。在本系统中,主要采用基于蒙哥马利曲线的一种椭圆曲线加密算法,即secp256r1[7]。该算法利用蒙哥马利曲线的特性实现安全加密,从而保护数据的安全性。Web端的后端定义了HEX编码、ECDSA签名、json处理、QRCode生成等工具类,并在控制类的逻辑代码中直接调用,降低了代码复用率。在ECDSA工具类中,系统利用java.security包中的KeyPairGenerator类获得的实体与随机数生成方法SecureRandom生成的随机数一起生成密钥对,其中私钥用于签名,公钥用于验证签名[8]。将签名所生成的哈希值写入行程对象的属性,并重写toString方法,将对象转换成json格式之后写入QRCode(QuickResponseCode,快速响应码),QRCode的内容如图6所示。生成的QRCode保存在D own l o a d目录中,前端可以通过请求/Download路由调用后台的Download方法下载二维码。虽然行程码中的明文信息可以伪造,但是目前的计算能力还无法伪造数字签名。
本系统支持用户上传行程码,大型企业机构可以通过上传ZIP壓缩文件的方式批量校验行程码。Web应用的前端使用Axios与后端Java程序进行交互,实现文件上传、行程新增等功能。Web端的后端接收到上传文件后,通过文件类型调用重载的两个analyse函数。ZIP文件解压后,将文件名存入数组,再利用循环调用校验函数调用QRCode中的analyseQR方法返回二维码的具体信息。系统会将其反序列化还原为对象,并根据对象的时间、姓名与编号等属性在数据库内综合查询得到私钥[9],然后调用ECDSA工具类中的verifyECDSA进行检验签名,ECDSA验签逻辑如图7所示,验签的结果以布尔值的形式通过/verify路由响应给Web应用的前端进行判断,并以弹窗的形式返回校验结果。
3.4 行程溯源模块
本系统使用Hyperledger Fabric在服务端搭建区块链,使用kafka共识机制,提高容错能力[10],共识模式如图8所示。首先使用Fabric框架生成网络证书与节点证书,证书包括网络连接使用的TLS(Transport Layer Security, 传输层安全性协议)证书与用于用户鉴权的CA证书,其中TLS证书也会被fabric-ca-client使用,然后使用CA创建授权用户身份与成员关系服务提供者MSP(Membership Service Providers)。使用TLS证书与MSP配置Peer和Order节点信息,Peer节点既可以保存并验证账本,又能运行智能合约,实现业务逻辑;
Order节点用于验证交易并在验证成功之后提交交易至账本。本系统中的数据库为couchDB,couchDB可以对json数据进行富文本查询,使用Fabric2.4编写链码,在区块链中将链码作为外部服务,添加索引到链码之后启动网络,创建通道后启动链码。
4 结论(Conclusion)
在科技飞速发展的今天,使用区块链技术可以为生物医学研究提供一个安全的、去中心化的数据存储和共享平台,促进传染病的研究与防治。使用行程码帮助传染病溯源工作精确定位患者,降低了病毒的传染速度与规模,但恶意伪造行程码的开源项目给溯源工作的开展造成了巨大的困难。本系统采用Hyperledger Fabric联盟链技术与ECDSA公钥签名算法结合传统的JavaWeb技术实现了权限管理、区块溯源、数字签名等功能,同时具有行程溯源和校验的功能,使用本系统可以有效预防行程码的伪造行为。
作者简介:
蔡超萍(2002-),女,本科生.研究领域:信息安全.
康晓凤(1978-),女,硕士,副教授.研究领域:信息安全.
王可(2001-),男,本科生.研究领域:信息安全.
张百川(2002-),男,本科生.研究领域:信息安全.
王宇(2003-),男,本科生.研究领域:信息安全.
猜你喜欢数字签名区块链基于正交拉丁方理论的数字签名分组批量验证通信学报(2022年2期)2022-03-10浅析计算机安全防护中数字签名技术的应用网络安全技术与应用(2020年9期)2020-09-17保险企业的区块链技术应用方向选择研究现代经济信息(2016年27期)2016-12-16区块链技术在金融领域的应用与前景研究中国市场(2016年32期)2016-12-06基于数字签名的QR码水印认证系统信息安全研究(2016年3期)2016-12-01区块链技术的应用价值分析商情(2016年40期)2016-11-28“区块链”的苟且、诗和远方现代国企研究(2016年10期)2016-11-18基于区块链技术的数字货币与传统货币辨析企业导报(2016年19期)2016-11-05数字签名简述新教育时代电子杂志(学生版)(2016年14期)2016-05-15用“区块链”助推中企走出去环球时报(2015-12-21)2015-12-21