随着无线支付终端的应用越来越广泛,机具使用数量越来越大,安全问题成为人们日益关注的焦点。为此我们利用对称密钥加密算法,提供了针对“终端到后端系统”间敏感数据全程加密的方案,保证交易数据在无线通讯过程中极难被破解、伪造;同时提供加密密钥在线更新同步的方案,进一步提高了安全性。
一、无线支付终端与系统简介
1、无线支付终端简要介绍
无线支付终端配有IC卡卡槽、磁条卡刷卡器。并内置密码键盘。通过机身上的液晶屏可以选择业务进行各项交易,并可以通过话筒进行无线通话,其外观如图1所示。
2、无线支付系统架构图
无线支付系统架构如图2所示,无线支付端发出交易报文后,通过移动运营商网络和APM专线,最后到达银行内部的无线接入平台。本支就是针对终端与无线接入平台之间的通讯报文逆行加密。
3、数据交互流程简介
数据交互流程如图3所示,原先的支付终端对密码Personal ldentification Number (PIN) Da—ta、银行卡磁道信息进行加密,并计算消息鉴别码(M essage Authentication Code,简称MAC),其他数据如金额、用户手机号等敏感数据都没有加密。
二、加密算法选择
算法选择主要针对对称与非对称加密算法。对这两种算法进行比较(见表1),选择适合自己的算法。
综上所述,考虑支付终端普遍采用的是嵌入式硬件配置,若采用非对称算法将大大影响交易速度,特别是一些需要终端与系统进行多次交互的交易将严重超出用户忍耐等待时间,无法满足实际需求。因此从用户体验角度出发,本文选择对称加密算法来对数据进行加密。
本方案中,加密密钥采用单倍长密钥DES加密算法。实际应用中可根据终端的硬件配置考虑使用双倍长3DES加密算法。
三、密钥管理
1、初始密钥管理
对称密钥存放在无线支付终端和无线接入耳台中,双方互为加密方和解密方。终端出厂时与平台约定,固化一套(三把)初始密钥,每个密钥翻有自己的密钥ID,是密钥的唯一索引。初始密钞可取值如表2所示。
同样地,无线接入平台在第一次上线时也要输入以上三把初始密钥,与终端保持一致。
2、更新密钥管理
在终端方,除了初始密钥,后续的新密钥都是由无线接入平台在线更新的方式导入终端保存。在平台方,需要密钥更新时,需要两位管理员背靠背输入两个1 6字节分量,,平台对两个分量进行异或运算生成根密钥,同时生成该密钥索引号(ID)。异或算法如下:
例如:两个分量分别为:313A33E435C637D8、388736753F33F231,进行异或后得到:
根密钥(M的就是:098D05910AF5C5E9。
(注:密钥索引号(ID)为唯一索引,不允许重复)
管理员一次可输入多把密钥。输入完成后,需指定3把密钥作为当前平台使用的密钥组。比如:平台已有ID为1、2、3的三把密钥,管理员新输入了4、5两把密钥。此时管理员可以指定3、4、5三把密钥为当前使用的密钥组。
四、密钥使用
1、密钥选择
交易都是由终端主动发起。终端发起交易时,平台会下发建链请求报文,并指定这笔交易的全报文加密密钥ID(从平台当前使用的密钥组中随机选择一把)。终端收到后,后续报文都使用这把密钥对交易报文进行加密。
2、临时工作密钥
为了保证终端每次交易使用的密钥都不相同,需要生成临时工作密钥。生成方式如下:如果是正常交易流程,由终端当前交易使用的全插文加密密钥对平台下发的建链请求报文中的同步随机数进行DES加密生成;如果是密钥更新流程,由密钥更新请求报文中的同步随机数进行DES加密生成。其中,同步随机数为4字节,加密时茬补4个OxFF。每次交易会话只生成一次临时作密钥,交易结束时清除。
例如:
1)根密钥为098D05910AF5C5E9,随机数为BF31948A;
2)将随机数进行补位,得到BF31948AF-FFFFFFF;
3)用根密钥对其进行DES加密,可得OE16689D2078288E,这就是当笔交易的临时工作密钥。
3、加密数据域
所有交易报文、密钥更新报文,整包均会进行加密。
五、全报文加密流程
全报文加密流程如图4所示。
1)终端发起交易,与接入平台建立socket连接;
2)无线接入平台从当前使用的密钥组中随便选择一把密钥ID作为此次会话的通讯密钥,并生成同步随机数,并计算出临时工作密钥,同时将密钥ID、同步随机数组成建链请求报文并发送到终端;
3)终端读取密钥ID,并根据同步随机数计算出临时工作密钥。用临时工作密钥加密建链响应报文后,发送给无线接入平台;
4)无线接入平台用临时工作密钥解密报文,把数据发送给支付前置系统;
5)收到前置系统应答后,用临时工作密钥加密报文,并发送给终端;
6)终端收到报文后,用临时工作密钥解密,并显示交易结果。
六、密钥更新流程
密钥更新是在交易发起时进行的。若无线接入平台发现终端使用的密钥组与平台当前使用的密钥组ID不匹配,则自动发起密钥更新。
全报文加密密钥更新流程如图5所示。
1)终端发起交易,与接入平台建立socket连接;
2)无线接入平台从当前使用的密钥组中随机选择一把密钥ID作为此次会话的通讯密钥,并生成同步随机数,计算出临时工作密钥,同时将密钥ID、同步随机数组成建链请求报文并发送给终端;
3)终端发现该密钥ID不存在,选择终端中现存的一把密钥加密报文,并返回该密钥ID;
4)平台发现请求与响应报文中的密钥ID号不同,因此发起密钥更新,将平台当前使用的密钥组及其ID用终端现存的其中一把密钥进行加密;
5)终端根据报文更新密钥;
6)更新成功后,重新发起交易。
小知识之报文
报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。