□马 慰
一种基于双因素认证的QR码安全移动支付方案研究
□马慰
移动支付是当前应用广泛的一种移动服务,移动支付的安全性问题备受关注。本文针对移动支付中严格的验证与加密要求,提出了一种安全移动支付方案,应用双因素认证机制保证支付信息的安全性,通过QR码向用户呈现交易要素,提高便捷性,同时该方案使用了基础的系统结构和开源的开发工具,降低了成本。模拟案例验证表明,该方案能够确保正常移动支付的安全性,应用便捷,具有较好效果。
随着通信技术的进步和智能手机的普及,人们在享受电子商务的同时,对支付方式的要求越来越高,移动支付作为一种新兴的支付手段,是通过用户的移动终端对所消费的商品或服务进行账务支付的一种服务方式,满足了现代用户对支付的安全性、便捷性、移动性需求。双因素认证(two-factor authentication)是目前流行的一种身份认证方法,广泛应用于各类金融网络系统,尤其是交易性模块。它使用基于时间、事件、密钥产生的一次性密码来代替传统静态密码。
国内外对移动支付安全性方面的研究主要集中于移动支付的风险评估研究、移动支付的安全标准研究、移动支付的安全协议研究、第三方安全支付模式研究和移动支付安全系统的设计应用。其中,国内有相当数量的移动支付安全解决方案的研究与应用,对移动支付现存的风险点和安全保障技术提出了各自的看法,取得了一定的成果。然而,这些研究大部分起点较高,把移动支付方案建立在一个已经具备相应通讯能力的基础设施环境下;事实上,许多国家或者一国的不同地区所提供的基础网络设施不尽相同,信息水平高低不一,可能达不到使用高级移动支付的网络要求,无法适用一些先进的移动支付方案。因此,开发一种在当前客观条件下适用的安全移动支付方案显得尤为重要。
为了提高移动支付方案的适用性,保证移动支付的安全性,本文提出一种基于双因素认证的移动支付方案,以安全、快捷、方便为目的,使用了简便的基础结构,通过双因素认证进行客户身份验证,商户与客户的交互采用加密QR(Quick Response)码,最终完成支付交易。
本文充分借鉴了现有的研究成果,对移动支付的特点进行了分析。当前移动支付面临两个重要问题:移动支付行业标准统一化和移动支付的安全性保障,其中,安全性是移动金融领域发展中一个至关重要的话题。因为如果不能提供固定移动网络上的商业信息交流和安全的电子金融交易,没有人会相信移动金融。通常,一个安全的移动支付系统须有如下特点:信息保密性、身份认证、健全性、授权性、有效性、不可否认性。
所有的金融交易必须在安全的环境下进行,本文着重考虑了支付方案的安全性后,给出了支付系统的结构。如图1所示,系统主要模块有支付网关(Payment Gateway)、客户端和商户端,其中支付网关连接到银行金融支付网络,也能连接CA中心验证所有的数字签名(Digital Signature)。方案要求用户与商户使用配备摄像头并安装了方案配套的安全移动支付应用程序的移动设备。移动设备需要连接到一个内部局域网络中,用以和支付网关PG通信;所有应用的开发工具选用了开源组件。
图1移动支付系统主要结构
(一)支付方案系统初始化。在客户与商户使用该移动支付系统之前,他们必须通过安全的https (Hyper Text Transfer Protocol over Secure Socket Layer)内网协议连接上支付网关系统的站点,填写提交相关表单进行注册,客户与商户的密码使用密码散列函数MD5消息摘要算法安全地存储于支付网关上。在支付网关验证过密码接受了提交的表单后,生成1024位的RSA公私密钥对。客户与商户访问并扫描支付网关接口生成的QR码,获取各自的用户id、用户私钥和PG的公钥,而QR码经过用户密码加密,需要客户与商户验证各自密码才能得到QR码中的内容。客户与商户得到QR码中的内容被加密存储在各自的移动设备上。该方案所有交易信息传输应用了双因素认证机制,先使用密码得到密钥,再使用密钥认证和解密信息内容。系统初始化的过程如图2所示。
图2系统初始化
(二)商户端支付信息处理。注册阶段完成后,商户就可以使用自己的移动设备为客户提供购买商品或服务的交易。当客户选好商品或服务后,商户记录并生成交易清单。随后,商户将交易清单内容通过支付网关的公钥加密,再附上商户用自己私钥生成的数字签名,一起经过安全https Web服务连接上传到支付网关。这家商户在加密上传交易清单之前也需要输入正确的用户密码来获取存储在移动设备上的公钥和私钥。这里同样使用了双因素认证机制提高安全性。支付网关检索由商户发送的Web服务请求,然后利用私钥解密消息内容并利用商户的公钥验证数字签名(支付网关拥有所有商户的公钥)。验证信息完成后,支付网关在数据库中记录下该笔交易及交易时间戳,同时需要给商户一个应答,这个应答包含了商户id、时间戳、交易的数量和总金额。同样,支付网关给商户的应答使用双因素认证机制,附上支付网关私钥生成的数字签名,并通过安全https连接发送。商户收到支付网关的应答后,商户的移动应用程序将根据应答内容生成一个可供客户移动设备应用扫描的QR码,用来进行支付。商户端支付信息处理如图3所示。
图3商户端处理支付信息
(三)用户端支付信息处理。用户使用移动设备上的应用程序扫描商户发送的QR码。为了验证并获取QR码中包含的信息内容,首先用户在移动设备上输入正确的密码得到支付网关的公钥,用支付网关的公钥验证QR码信息中的数字签名并解密内容。如果支付信息验证成功且时间戳没有过期,完整的支付信息将会显示在客户的移动设备上,接收验证过程如图4(a)所示。然后,客户根据实际情况选择确认支付或者拒绝支付。如用户选择确认支付,支付信息(包含客户id,商户id,交易id)和时间戳将通过支付网关的公钥加密封装并附上客户私钥生成的数字签名,同样用移动应用程序生成一个QR码发送给商户。由于附带时间戳,不同时刻QR码是不一样的。假如QR码信息被截获,没有支付网关的私钥和正确的密码,QR码显示的只是一段乱码。最后,包含确认支付内容的支付信息经过商户发送给支付网关,支付网关用自己的私钥解密信息内容,该过程如图4(b)所示。
图4(a) 用户端接收支付信息
图4(b) 用户端发送支付确认
(四)支付确认审批。商户扫描用户发送的QR码确认支付的请求,然后将用户的支付确认信息附上时间戳和商户私钥生成的数字签名经安全连接上传给支付网关。支付网关收到商户发来的支付确认信息后,须进行两次验证,首先利用商户的公钥验证商户的数字签名,检查商户信息的时间戳是否过期,然后再解密用户的支付信息,验证用户的数字签名,检查用户信息的时间戳。运用二次检查原理验证,确保整个支付的完整性。支付网关完成全部验证后,在数据库中记录下该笔交易支付成功,将结果返回给商户。支付确认过程如图5所示。
图5支付确认审批
本节使用一个案例对方案进行验证。用户A使用该移动支付系统,在其智能手机上安装了移动支付应用并在支付网关进行了注册,通过浏览商户B的门户网站,A选择了一款运动鞋,将支付请求(包含款式类别、尺码、数量、物流信息等)经过双因素认证提交给B;B据此生成购物清单,包含了所有支付信息,将其加密上传给支付网关,支付网关记录该笔交易的支付细节内容,发送授权可支付的验证信息给B,B收到该信息使用自己平板电脑上的移动支付应用生成一个加密的QR码发送给A,等待A回应该笔支付;A接收、扫描QR码解密内容,检查订单无误后,选择确认支付,B平板电脑上应用侦听到该笔确认支付,验证后上传给支付网关,支付网关验证交易一致性,最后完成付款,B发货。但是,该笔款项暂存在支付网关系统上B的一个专用账户内,直至客户收货确认后整个交易完成。B在支付网关系统上的专用账户在每日日终将完成交易部分的账款转入B在银行开立的账户中。
在整个支付过程中,客户与商户使用私钥进行数字签名确保交易一致性。网络黑客在没有对应密钥的情况下,无法掌握、控制支付信息。万一客户手机丢失,或者黑客复制了手机的存储器,如没有正确的密码也无法得到密钥。一些手机制造商也提供了安全措施,当手机丢失后可以触发特定程序删除手机上的信息。用户也能够访问支付网关彻底删除丢失手机上的相关机密信息,并重新生成公私密钥对。由于交易需要检验时间戳,中继攻击也很难起作用。另外,客户与商户间支付信息交互使用QR码作为可视渠道,这些QR码都经过加密,黑客截获的QR码如果没有对应密钥或者过期,得到的也只是没有意义的加密文本。
本文提出了一种基于双因素认证的低成本移动支付方案,同时运用对称加密与非对称加密算法、加密QR码,提高支付安全性。采用QR码作为可视通信渠道,提高便捷性。交易信息传输使用加密QR码、基于SSL的Web通信和公私钥生成的数字签名。手机上的敏感信息全部经过用户密码加密存储。整个支付方案结构简单,使用开源的开发组件,适用于一般通信基础设施和信息科技水平不高的地区。但是本文提出的支付方案也存在一些不足,例如,对于移动终端来说,没有考虑移动终端上的恶意应用或系统漏洞带来的风险,该移动支付方案仅仅保证了支付过程本身安全性。下一步的工作是对整个方案进行更彻底的安全性测试,扩大支付方案的应用范围,深入研究应用场景和充分收集客户使用的反馈,不断评估、改善支付方案。
[1]戴宏.移动支付系统安全风险评估[D].北京:北京交通大学,2010.
[2]张璇,林逸风,白川,等.基于贝叶斯网络的移动支付风险评估模型[J].计算机工程与应用,2014,50(5):60-64.
[3]韩皓辰,柴洪峰,鲁志军,等.移动支付领域安全标准的适用性研究[J].计算机应用与软件,2013,30(5):316-319.
[4]刘亮.基于公钥密码体制的移动支付安全协议研究[D].成都:西南交通大学,2013.
(作者单位:农业银行南京江宁支行)