本发明涉及交易验证技术领域,具体说是一种基于时间戳的交易验证方法。
背景技术:
随着移动支付方式的发展,对于支付的验证提出了更高的要求。支付验证要求做到安全性和有效性,目前大多数的验证方式都是采用运营方的单方面验证方式,缺乏发行方的验证,运营方伪造交易会使发行方的蒙受损失。
技术实现要素:
本发明针对上述问题,提出了一种基于时间戳的交易验证方法,采用双时间戳机制,其中一个时间戳密钥由终端运营方控制,用于防止复制重发,另一个由帐户发行方控制,用于防止终端运营方伪造交易。
为了解决上述问题,本发明拟采用以下技术方案,一种基于时间戳的交易验证方法,包括以下步骤:
1)、系统进行初始化,发行方从运营方获取系统时钟完成时间同步,运营方生成运营方时间戳主密钥,发行方生成发行方时间戳主密钥;
2)、由运营方时间戳主密钥分散得到的运营方时间戳子密钥发放到发行方,用户从发行方获取运营方时间戳子密钥和发行方时间戳主密钥分散得到的发行方时间戳子密钥;
3)、在交易过程中,用户操作完成订单提交到运营方,订单由运营方时间戳子密钥和账户发行方时间戳子密钥双重加密;
4)、运营方用运营方时间戳主密钥验证订单,通过后提交订单到发行方;
5)、发行方用发行方时间戳验证订单,通过则完成支付。
进一步地,所述的运营方时间戳主密钥由两种方式生产,一是采用随机数密钥方式,运营方每日产生一个对应日期的密钥,并通过协议下发;二是采用固定密钥方式,密钥保存于安装于运营方的安全验证模块中。
进一步地,所述的发行方时间戳主密钥由随机数方式生成,发行方每日产生一个对应日期的根密钥,根密钥储存在发行方的安全设备中。
进一步地,所述的系统时钟为运营方服务器通过互联网ntp同步获取。
进一步地,上述的交易验证方法采用二维码验证方式,运营方时间戳子密钥和账户发行方时间戳子密钥作为二维码数据的组成部分。
本发明可实现双重验证,进一步提高支付验证的安全性和有效性;同时可防止运营方伪造交易订单,使交易订单具有不可抵赖性。
附图说明
图1是本发明实施例的交易验证示意框图;
图2是本发明实施例的mac计算框图。
具体实施方式
以下结合附图对本发明的实施例作详细描述。
如图1所示,本发明提出的是一种基于时间戳的交易验证方法,实现运营方和发行方的双重验证,该方法包括以下步骤:
1)、系统进行初始化,发行方从运营方获取系统时钟完成时间同步,运营方生成运营方时间戳主密钥,发行方生成发行方时间戳主密钥;
2)、由运营方时间戳主密钥分散得到的运营方时间戳子密钥发放到发行方,用户从发行方获取运营方时间戳子密钥和发行方时间戳主密钥分散得到的发行方时间戳子密钥;
3)、在交易过程中,用户操作完成订单提交到运营方,订单由运营方时间戳子密钥和账户发行方时间戳子密钥双重加密;
4)、运营方用运营方时间戳主密钥验证订单,通过后提交订单到发行方;
5)、发行方用发行方时间戳验证订单,通过则完成支付。
在一个优选地实施例中,运营方时间戳主密钥和发行方时间戳主密钥的密码类型均为16字节3des密钥。运营方时间戳主密钥采用随机数密钥方式,运营方每日产生一个对应日期的密钥,并通过协议下发;发行方时间戳主密钥由随机数方式生成,发行方每日产生一个对应日期的根密钥,根密钥储存在发行方的安全设备中。
在交易前,用户首先向发行方发起账号申请,申请通过给予用户下发证书,证书包括有用户信息和时间信息,时间戳主密钥(运营方或发行方)以用户信息和时间信息作为分散因子,获取时间戳子密钥,具体算法为:时间戳主密钥对8字节分散因子加上8字节分散因子取反值计算3des后获得的16字节作为时间戳子密钥。
在交易过程中,用户app以运营方时间戳子密钥和发行方时间戳子密钥加密数据,生成二维码。运营方对二维码扫码,并对运营方时间戳进行验证,验证通过后将生成订单并提交到发行方;发行的对订单进行发行方时间戳验证,验证成功则完成订单。
时间戳(运营方或发行方)的验证方式为时间戳子密钥对预设时间和验证数据计算mac,如时间戳子密钥对证书签发日期(4字节)+二维码生成时间(4字节)+支付类型(3字节)计算mac。
mac计算步骤如下:
1、取8个16进制数00,00,00,00,00,00,00,00为初始值;
2、将需要计算mac的验证数据分成8字节为单位的数据块,标号为d1,d2..dn。最后的数据块dn可能是1-8个字节;
3、如果最后的数据块长度是8,在其后加上16进制数80,00,00,00,00,00,00,00;如果最后的数据块长度等于7,在其后加上16进制数80;如果最后的数据块小于7,则在其后加入16进制数80,再重复加入16进制数00,直到达到8字节;
4、对验证数据使用相应密钥加密,计算过程如图2所示,将8字节的初始值与d1数据块进行异或运算得到8字节数据,再利用16字节密钥左半部分des(同为8字节)对8字节数据进行加密;得到的加密8字节数据与d2数据块进行异或运算,得到新8字节数据,再利用16字节密钥左半部分des对新的8字节数据进行加密;以此类推直到与dn数据块异或运算,最终得到的8字节数据用16字节左半部分des加密;加密后的8字节数据用16字节右半部分des(同为8字节)进行解密的到解密数据(8字节);再利用16字节密钥左半部分des对解密数据进行加密,得到8字节的加密数据,取加密数据的前四个字节作为结果;所得到的结果将与验证值比较,一致则表示验证成功,否则验证失败。
本发明一种基于时间戳的交易验证方法,可实现双重验证,进一步提高支付验证的安全性和有效性;同时可防止运营方伪造交易订单,使交易订单具有不可抵赖性。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。