基于国密算法SM2和信息溯源的电子收据系统
2020-09-10熊刚熊长聪
熊刚 熊长聪
摘要:随着移动终端与计算机网络技术的迅猛发展,带动着移动支付逐渐迈向成熟。以支付宝、微信钱包为代表的移动支付方式,在生活中占据着重要位置。但是,我们在享受移动支付带给便捷的同时,大部分行业仍然在使用传统的纸质收据和发票,并且带来了一系列的资源浪费问题和个人信息安全问题。在此背景下,本文设计了一种基于SM2和区块链的移动支付电子收据系统。系统主要由PC端、服务器端和客户端三部分组成。PC端生成电子账单,发票二维码,并添加用户的标识信息,使用公钥加密算法SM2先签名、后加密,再发送给服务器端;服务器对账单身份认证和发票二维码解密后,添加相关标识信息并使用私钥进行数字签名,然后将账单和电子发票储存在云端数据库;客户端可随时查看数据库中的加密账单和电子发票,经过认证和解密后得到详尽的账单信息,解密发票二维码生成电子发票;同时加入区块链技术,可以使消费者了解商品从生产、加工、运输、销售到消费者手中,使整個过程透明化。整个系统可以大幅度提高电子支付的效率,使移动支付更加安全、便捷,同时也便于商家和个人的查询,使得商家交税、个人报销的快捷化。
关键词:移动支付;数字签名机制;电子账单
一、概述
近年来,随着互联网以及移动终端技术的发展,移动支付得到普及。以微信钱包、支付宝为代表的移动支付的发展,已渗透到了生活的方方面面,然而在享受移动支付便捷的同时,大部分行业却仍在使用传统的纸质收据,带来许多不好的影响[1]。纸质收据含有BPA的致癌物质,影响身体健康;无法回收,浪费资源,污染环境;容易丢失损坏,不利长时间保存;存在泄露个人信息等缺陷和不足[2]。因此,设计一款电子收据系统对人们特别重要的具有实际意义。
将移动支付技术与电子收据融合在一起,组合成一种高效的、实用的系统可以给人们带来许许多多的好处[3]。其一是电子收据的快捷高效,省去了纸质收据打印的时间,提高了工作效率;其二是电子收据不用再担心收据易损坏,易丢失,纸质收据信息泄露;其三是国密算法SM2提供了可靠的信息安全支撑[4],也为双方可能产生的纠纷提供了仲裁的方便等等。基于此,本文设计了一种基于SM2和区块链的移动支付电子收据系统。系统主要由PC端、服务器端和客户端三部分组成。PC端生成电子账单,发票二维码,并添加用户的标识信息,使用公钥加密算法SM2先签名、后加密,再发送给服务器端;服务器对账单身份认证和发票二维码解密后,添加相关标识信息并使用私钥进行数字签名,然后将账单和电子发票储存在云端数据库;客户端可随时查看数据库中的加密账单和电子发票,经过认证和解密后得到详尽的账单信息,解密发票二维码生成电子发票;同时加入区块链技术,可以使消费者了解商品从生产、加工、运输、销售到消费者手中,使整个过程透明化。整个系统可以大幅度提高电子支付的效率,使移动支付更加安全、便捷,同时也便于商家和个人的查询,使得商家交税、个人报销的快捷化。
二、基于国密算法SM2和信息溯源的电子收据系统
(一)系统总体方案设计
移动支付电子收据系统由PC端,服务器端,客户端三个模块组成。
(1)PC端功能
PC端由联网PC机和扫描器(扫描包含条形码、二维码)组成。主要完成购买商品的扫描和数据录入,统计相关商品的购买信息并保存于本地数据库,同时开具电子发票,便于报税,并将电子发票通过加密生成二维码,和信息签名、加密送到服务器中。
■ 生成发票二维码
■ 生成电子账单
■ 签名电子账单
■ 加密电子账单
■ 结算收款
(2)服务器端功能
服务器采用的个人服务器+腾讯云存储的混合模型,具有强大的数据计算处理能力和网络收发能力。主要负责对PC端发送的加密账单进行身份认证和数字签名,同时整合数据信息,全面统计分析,并负责电子账单系统的权限管理。同时,将收到的发票二维码解密成电子发票存储起来,并将发票二维码发送给客户端。此外,服务器还设立仲裁认证模块,当消费产生纠纷时,可对账单信息作出仲裁,维护双方的合法利益。
■ 验证电子账单签名
■ 处理公钥请求响应
■ 处理发票二维码
■ 存储加密账单
■ 提供仲裁服务
■ 加密传输
(3)客户端功能
客户端即移动支付终端,主要实现电子账单的生成和查询功能,以可视化的形式清晰展示消费记录,并提供加密上传服务器,为用户提供全方位的消费跟踪记录、建议提示、统计分类、消费指南。同时,将接收的发票二维码解密生成电子发票,并存储在本地,便于报销。
■ 解密账单密文
■ 自动分类处理账单
■ 账单信息可视化
■ 申请账单认证
■ 生成电子发票
■ 二维码支付
(二) SM2算法应用
在公共网络中传输电子账单,账单信息必须是不可抵赖的、不可仿冒的,才能保证安全,因此系统需要添加数据加密机制和数字签名算法[5]。若本系统采用对称加密方式,将对密钥管理带来极大的威胁,而且安全性相对较弱,容易被有心人破解,达不到系统设计的目的。所以综合各类算法,本系统决定采用基于SM2的公钥密码体制算法。选择SM2作为系统的加密方案,主要是考虑到它的实用性,能够满足本系统加密和数字签名的双重要求,无需再选择其他签名算法,且安全性强。在整个系统中,我们采用的关键参数如表所示:
(三)密钥存储管理方案
密钥存储管理是密码技术中的重要环节,本系统密钥包括私钥存储管理和公钥存储管理,在系统的三个模块中均涉及到密钥的存储管理,任何模块出现问题,都可能带来损失[6]。对于服务器产生公/私钥对,每个客户端/PC端都可以请求获得服务器的公钥。PC端/客户端产生的公钥通过网络同步到服务器,以便其他用户访问获取用于加密。私钥是通过加密存储在本地的,任何网络请求都不能访问到其私钥。用户可以更新其密钥对,但是更新之后必须同步达到服务器,以便向其他用户提供自己的最新的公钥。
(四)数字签名方案
数字签名在身份认证、数据完整性、不可否认性以及匿名性等方面有重要的作用。在本系统中主要是对账单信息进行签名,以确保账单的完整性、不可否认性,保证商家和消费者的合法利益不受损害[7]。签名时使用到了各自的私钥,因此电子账单也具有相应的法律效力。本系统采用的是一种基于公钥密码体制的仲裁方式数字签名方案。
具体过程如下:
①商家X在电脑端扫描商品后,生成账单消息M。使用PC端X的私钥KSX,使用公钥加密算法SM2加密消息得到密文SM2KSX(M)。
②对第①步产生的密文进一步使用SM2算法加密,使用的是Y的公钥KPY。这样账单明文就经过了双层加密SM2KPY(SM2Ksx(M)),形成了一个带有签名、保密的消息。
③商家X将该信息以及自己的身份标志IDx一起用KSX签名得到SM2KSX(IDX||SM2KPY(SM2KSX(M)))。
④商家X将该消息和自己的身份标志IDx一起发送给服务器A:
X—>A:IDx||SM2KSX(IDX||SM2KPY(SM2KSX(M)))
⑤服務器A收到商家X的消息后,使用和商家X公钥KPX解密接收到的签名,判断解密的IDX和消息中的IDX是否相等。由于这里服务器处理的是经过客户端Y公钥KPY加密的消息,而且服务器不知道Y的私钥KSY,因此服务器只能验证消息的密文而不能获取到具体内容。从而保证的机密性。
⑥如果通过第⑤步的验证,服务器保存消息到数据库。同时服务器A将从X收到的所有内容IDX||SM2KPY(SM2KSX(M)加上一个时间戳T,然后使用服务器A的私钥KSA加密消息后发送给Y:
A—>Y:SM2KSA[IDX||SM2KPY(SM2KSX(M)||T]
其中时间戳T用于向Y表示所发送的消息是即时的而非重放的。
⑦客户端Y收到服务器A发送来的经过验证的消息之后。使用A的公钥KPA解密得到IDX、SM2KPY(SM2KSX(M))、T。
⑧使用自己的私钥KSY解密SM2KPY(SM2KSX(M))得到账单信息SM2KSX(M)。
⑨使用X的公钥KPY解密SM2KSX(M)得到账单M。
如果出现争议。客户端Y可以声称自己受到的账单密文SM2KPY(SM2KSX(M))的确来自商家X。并将SM2KSA[IDX||SM2KPY(SM2KSX(M)||T]发送给服务器(仲裁)A,由A仲裁。因为服务器(仲裁)对账单进行认证,认证通过后才发送给客户端Y,同时在服务器端有相关记录,客户端Y经过查询即可验证签名,保证了账单的真实性,为消费纠纷的仲裁提供法律依据。另一方面,假设在T时刻,商家X向仲裁申诉自己的私钥被窃取。服务器会记录下这个时候,当仲裁在验证T以后时刻的消息时,就不会承认账单的真实性,保护了商家的利益。
三、实验及分析
(一)客户端软件测试
对于客户端软件测试,使用GT调测工具,它是腾讯开放给用户的一款随身调测平台,是可在手机上直接运行的"集成调测环境"。其优势是:在没有与电脑连接的情况下也可以对软件app的性能测试(包括CPU性能、内存运行、流量、帧率/流畅度等),也可以查看开发日志、Crash日志、以及对网络数据包的抓取;还可以利用GT提供的基础API自行开发有其他功能的GT插件,用以解决困难的APP调试、测试问题。如图所示,本系统对客户端进行了测试,对相关参数进行了测试。从测试曲线可以看出,客户端的功耗、CPU占用、内存消耗都在指标要求范围内,性能表现良好。
(二)PC端响应时间、内存开销分析
使用实用型功耗分析平台进行综合分析和评估。整个支付,以及查询消费记录等操作过程中,内存开销、响应时间、卡顿现象等方面测试如下。
(1)响应时间
系统响应时间为操作软件的反馈时间,这与软件代码和后天设置直接相关。本软件在保证数据正确性的前提下,其平均响应时间为89ms,并且经过多次调试与校正,本软件最快响应时间达到63ms,完全满足在功耗存储正确率的情况下,达到较好的使用体验。
(2)内存开销
内存开销是指将满足在功能和存储正确率的情况下,占用的内存空间。根据内存开销,我们可以分析代码效率、响应时间等。本系统安全性基于SM2算法,并添加了认证签名机制,一定程度上增加了计算量,导致内存开销也大幅增加。因此本系统在线程上进行了优化,并行算力增加,极大降低了内存功耗。
(3)卡顿现象
卡顿现象是出现在电子设备中的画面滞帧、延迟增加等现象,也就是通常人们所说的“卡”。PC端测试全程没有出现卡顿现象。
(三)服务器性能测试
服务器测试主要使用腾讯的WeTest质量开放平台进行测试。本系统在启动服务器后,需要对服务器的收发包率、内存和swap交换、网卡读写包量、磁盘IO读写四个方面进行了测试,随机选取的时间段测试结果如图所示。通过测试和对比,本系统服务器性能稳定,信息传输效率完全满足用户的使用峰值要求。
(四)结论
通过对系统的各个模块进行独立测试,发现每个模块都能够很好的完成响应的功能,客户端操作简单,功耗小、CPU和内存占用少;PC端能够便捷完成各种操作,速度快,内存占用少;服务器端能够承受住较大的模拟负载能力,且具有较好的并发能力。总体来说,本系统运行良好,安全性高,操作简单,性能稳定,在测试过程中无BUG出现,各部分功能上手简单、操作容易、交互便捷,达到了预期目的。
四、总结
本系统从实际出发,结合当前移动支付纸质收据的不足,着眼于实际需求和社会现状,不断创新,设计了保密性强、成本低、效率高、界面友好、分析结果直观的系统,系统可以大幅度提高电子支付的效率,使移动支付更加安全、便捷,同时也便于商家和个人的查询,使得商家交税、个人报销的快捷化,具有很强的实用性和应用价值。
参考文献:
[1]冯登国,张敏,李昊, 大数据安全与隐私保护. 计算机学报, 2014. 37(7).
[2]冯登国,赵险峰, 信息安全技术概论(第二版). 电子工业出版社, 2013.
[3]安进, 张.J., ():, 基于RFID和图像识别的食品追溯信息查询算法. 科技通报, 2017. 05: p. 142-145.
[4]李兆斌,刘丹丹,黄鑫, 基于国密算法的安全接入设备设计与实现. 信息网络安全, 2016. 11: p. 19-27.
[5]吕述望, SM4 分组密码算法综述. 信息安全研究, 2016. 2(11): p. 995-1007.
[6]程凤伟, 基于国密算法SM2的IPSecVPN技术. 太原学院学报(自然科学版), 2016. 34(1): p. 37-40.
[7]贾大云, 计算机网络安全的现状和防御技术. 技术研发, 2014. 1(145): p. 38-39.