1. 软钱包支付解决方案概述
1. 背景
在社会经济数字化发展的背景下,央行数字货币的发展目标是满足现金货币的使用特点,即成为一种广泛使用、不受时间和空间限制、稳定性较高的支付方式。智能手机的普及为移动网络支付提供了硬件和软件保障。因此,现阶段大多数数字货币交易设备以智能手机为载体,采用在线数字货币软钱包的模式,方便快捷、安全、易用。
(二)付款流程
软钱包二维码在线支付示意图如图1所示。
图1 软钱包支付流程
1.客户使用数字货币应用程序发起支付申请。
2.银行后台服务器生成交易码并发送到客户手机上。
3. 用户以二维码的形式向商家出示交易码(离线)。
4.商户收到交易码后,转发至银行后台服务器。
5、银行根据交易码对客户和商户进行验证,并完成双方数字货币账户之间的币串交换(本地)。
6.银行返回交易结果给商户。
7.银行将交易结果返回客户。
3. 存在的问题
由于网络的畅通和银行后台强大的服务器计算能力,用户和商户的这些操作都是在很短的时间内完成的,通常只需几秒到几十秒。利用智能手机实现软钱包网上交易具有便捷、安全性高、实时性好等优点,但对网络稳定性要求较高。
日常生活中,仍存在大量网络环境不稳定的小额高频交易场景,如公交车行驶过程中或行驶区域内网络不稳定,就会影响公交车支付设备序列号的正常传输,导致支付指令传输受阻、支付失败,无法满足数字货币广泛使用、不受时空限制、不被拒绝的要求。
为了探索数字货币在日常环境中的使用场景,作者联合交通、公共交通等部门及设备厂商,研究了离线网络环境下实现数字货币快捷支付的解决方案。在此类场景下实现数字货币支付服务,可以增强数字货币在受限环境条件下的适应性,填补数字货币交易场景的缺陷,也是对数字货币使用便捷性的有益探索。
2. 硬件钱包线下支付方案概述
央行推出的硬件钱包是加密数字货币发展的重要创新,它将数字货币串存储在硬件载体组件中,可以实现硬件钱包与软钱包之间的在线交易,以及硬件钱包之间的离线交易。硬件钱包是对网络异常和离线状态的独特解决方案,支付方使用专门的硬件设备作为交易媒介,无需网络就可以通过NFC传输交易指令和币串信息,最终顺利实现交易。由于数字货币串存储在硬件钱包中,因此对硬件钱包的安全性、防篡改、防盗性等要求极高,最终会受到芯片的算法、算力、功耗等限制。结果导致硬件钱包通过NFC只能获取极少的电量,导致对芯片功耗的控制非常有限,严重影响芯片的运算速度;离线期间,硬件钱包芯片内部会存储大量的交易数据,严重占用交易的通讯时间;NFC通讯速率有限; 硬件的每笔交易都会产生一定量的数据,而硬件钱包的内存芯片容量有限,因此离线交易次数有上限。
数字货币硬件钱包在公共交通场景的使用主要问题是交易速度慢,无法满足公共交通刷卡小于0.3秒的要求。另外,硬件钱包需要定期在线同步,很多老年人不太习惯。
3.数字货币软钱包离线支付解决方案
由于硬件钱包的支付速度无法满足公共交通支付的要求,作者探索实现软钱包离线支付的解决方案。
1. 使用软钱包进行离线支付的思路
通过对比数字货币软钱包在线支付和硬件钱包离线支付的流程,我们发现:以下工作需要在线完成:用户申请软钱包交易码、商户将收到的二维码反馈给银行、银行将交易结果反馈给用户和商户;无论是软钱包还是硬钱包,用户和商户都是通过二维码或者NFC进行交易的,这个过程是不需要网络的离线行为;在软钱包的在线支付过程中,客户身份认证和商户终端认证都是在银行的后端服务器实现,客户、商户和银行服务器之间通过网络实时传递身份信息和交易信息;而在硬件钱包的离线支付场景中,客户身份认证和商户终端认证都是在本地设备完成,实现本地身份和信息验证是离线支付需要解决的核心问题。
具体到公交支付场景,公交上网络不稳定带来几个问题:用户无法及时在手机APP上申请交易码;商户(公交)虽然能收到用户交易码,但无法验证用户交易码的真实性;用户的交易码也无法提交给银行完成现金转账。为此,笔者基于公交场景,将原本几十秒内完成的线上支付交易流程拆解为几个不同时间阶段的动作,将申请交易码、现场支付、收款拆分为几个独立的流程,实现软钱包的离线收款。数字货币软钱包离线收款流程如图2所示。
图2 数字货币软钱包离线支付流程
1、用户提前向银行在线申请一个(公共交通)二维码,该二维码可以离线长期使用(比如1周内)。由于二维码需要在公共交通收银机上进行验证解码,因此需要包含客户信息、商户信息、交易限额和时间戳等,并且必须进行安全加密。
2、银行后端生成登机码(类似软钱包交易码),加密后发送到用户手机上。
3. 用户在公交车上出示二维码。
4、公交收银机接收乘车码,验证顾客信息、交易信息等。
5.公交车返回站后,将收到的乘车码在线提交给银行。
6.银行验证登机牌码,完成现金转账。
2. 解决方案的技术实现
1. 需要解决的问题
(1)银行生成加密的登机码。登机码是离线使用的,需要在公交收银机上进行验证和解码。登机码必须加密,解密算法不能太复杂,以适应公交收银机的改造。登机码必须包含付款人的客户信息(可二次加密);必须带有时间戳,公交收银机解密登机码后必须判断是否在有效期内,防止欺诈和滥用;需要附加信息(包括消费类型、支付限额等)。
(2)公交收银机解码。公交收银机收到二维码后,需要进行以下操作:判断是否为数字货币乘车码,如果不是,则不做处理,按原模式传递处理;若确认为数字货币乘车码,则进行解密,解密出乘车码所含的时间戳等信息,确认乘车码未过期,防止用户误用或被冒充,并保存乘车码及票价。
2.数字货币解码模块软件处理流程
数字货币解码模块的软件处理流程如图3所示。
图3 数字货币总线代码软件处理流程
2.在二维码阅读器后端插入硬件数字货币登机码解码模块解决方案
在制定公交收银机改造方案时发现,大部分公交收银机存在主芯片处理能力不足、代码内存空间不足、无法快速解密或无法解密软件、硬件上无冗余通讯接口等问题。因此需要通过插播数字货币硬件解码模块来解决硬件接口和软件计算能力不足的问题。针对这些问题,笔者对公交二维码支付设备进行了仔细研究,设计了在二维码阅读器后端插播硬件数字货币上车码解码模块的方案,如图4、图5所示。
图4 原有公交卡支付读卡器模块
图5 插入解码模块的公交车收银机结构图
本方案优点在于:数字货币解码模块采用硬件实现解码功能,不占用设备硬件通讯接口;修改操作方便,硬件升级简单;公交收银机升级代码量很小,运行稳定;该硬件模块方案后续推广成本低,推广速度快,适用性强,无需额外开发修改即可支持多家运营机构的数字货币;采用硬件模块,数字货币乘车码解密密钥存储在硬件中,不需要交付给公交等第三方,具有很好的安全性和保密性。
4. 原型测试结果
2019年底开始嵌入式硬件解码模块的设计开发,作者采用某公司集成国密算法的集成电路芯片,第一版测试样机包含安全加解密芯片、OLED显示屏、报警蜂鸣器、按键及状态指示LED、断电保持时钟芯片等功能元件。在顺利完成数字货币加解密功能测试后,对样机电路进行简化,参考公交收银机二维码阅读器外观工艺,定制第三版嵌入式方案样机,缩小OLED显示元件,将模块安装于二维码阅读器背面。为了缩小模块体积,降低成本,设计了第四版、第五版样机,分别取消了报警蜂鸣器和时钟芯片原有元件,将模块体积缩小为第一版的十分之一。
在不改造公交收银机的情况下,第四版、第五版原型机模块均具备初版原型机的设计功能,并能成功解码数字货币。针对现场安装调试要求及线缆走线规范,第六版原型机设计于2020年完成。
5. 后记
目前来看,这一方案也存在一定的问题和风险。
首先,由于二维码乘车码是提前申请的,有效期比较长,一般为几天。在有效期内,一个乘车码可以被公交收银机多次解码接受,导致同一个二维码被“冒充”或“重复消费”。这也是各类二维码乘车码的缺陷。对此,部分地区的公交公司可以接受“重复消费”。至于“冒充”,由于票价低廉,被冒充的概率很低,因此很多商业公司采取扣留一定风险准备金的方案,以补偿公交部门的损失。但对于银行而言,这种补偿模式很难被业务和风控部门接受。其次,数字货币乘车码在银行加密后,存入用户手机App,再由公交收银机解密模块解密。 为了防止密钥被破解,需要建立有效的密钥管理系统,包括密钥生成、同步传输等。由于公交车数量众多,网络不稳定,建立这个密钥管理系统的难度、规模和成本都极高。第三,虽然改造单台收银机的成本不高,但由于公交车数量众多,整个项目的成本还是很高,投入产出效率很差,改造公交车收银机的资金迟迟得不到落实。同时,受疫情影响,项目从2019年底启动到2021年,多次被暂停、延期。
本文提供了一种公共交通离线支付的解决方案,用户通过手机APP预先生成专用的数字货币乘车码,通过嵌入在公交收银机中的解码模块对乘车码进行解码,实现数字货币软钱包的快速离线支付。目前已完成多套原型机的原型设计和系统软硬件测试,初步达到预期需求。由于种种原因,该项目最终未能小批量推广。在此,笔者将项目中的技术设计方案、测试结果以及遇到的问题与大家分享,希望能够就数字货币在各类场景的应用展开探讨和交流与探讨,不断提升数字货币的场景化开发和应用推广能力。
参考:
[1] P. M. B. 银行为经济注入新活力?[J]. 金融与金融稳定, 2020(19):40-56.
[2] 日本银行. 具有与现金同等功能的央行数字货币的技术问题[R]. 2020年。
[3] 移动支付网络。十余地区公共交通支持数字人民币,但多数仍处于起步阶段[EB/OL]。