发明内容
本发明为解决上述技术问题采用以下技术方案:
一种基于NTRU的第三方移动支付方法,其中,用户申请账号的具体步骤如下:
步骤A.1),用户从CA机构获得NTRU-WPKI数字证书CA{A};
步骤A.2),第三方支付平台从CA机构获得NTRU-WPKI数字证书CA{B};
步骤A.3),用户和第三方支付平台交换NTRU-WPKI数字证书,并通过会话密钥协商算法得到会话密钥KAB;
步骤A.4),用户下载第三方支付平台的客户端并通过客户端向第三方支付平台申请账户;
步骤A.5),第三方支付平台收到用户的申请后,为用户生成唯一的用户标识IDA和对应的hash函数,并通过会话密钥KAB加密IDA和该hash函数后发送给用户的客户端,发送信息如下:
EAES(KAB,IDA||hash)
其中,EAES表示用对称加密算法AES加密,秘钥为KAB,||表示将前后数据串联,加密内容为IDA与hash的连接串;
步骤A.6),客户端收到经过加密的IDA和hash函数后,通过会话密钥KAB解密得用户标识IDA以及对应的hash函数:
DAES(KAB,EAES(KAB,IDA||hash))
其中,DAES表示用对称加密算法AES解密,秘钥为KAB,解密内容为接受到的信息EAES(KAB,IDA||hash);
步骤A.7),客户端生成在区间(0,1)之间的随机数yA,并根据yA以及用户IDA对应的hash函数生成以下单项哈希链后保存:
(hash(yA),hash2(yA),hash3(yA),...,hashN(yA))
其中,N为大于2的自然数;
步骤A.8),客户端将单项哈希链的链尾值hashN(yA)发送给第三方支付平台,
步骤A.9),第三方支付平台收到单项哈希链的链尾值hashN(yA)后,将其保存,并发送信息给用户表示账号申请成功。
用户认证包含以下具体步骤:
步骤B.1),客户端取得保存的单项哈希链;
步骤B.2),客户端判断单项哈希链的节点数是否大于2;
如果单项哈希链的节点数大于2,将自己的IDA以及单项哈希链的倒数第二个节点的值发送给第三方支付平台,同时,将单项哈希链的最后一个节点去除后保存;
如果单项哈希链的节点数小于等于2,客户端生成在区间(0,1)之间的随机数,并根据该随机数以及用户IDA对应的hash函数生成节点数为N的新的单项哈希链,保存后将单项哈希链的链尾值发送给第三方支付平台,并重新执行步骤B.1);
步骤B.3),第三方支付平台根据用户的IDA匹配到其对应的hash函数,通过其对应的hash函数计算单项哈希链的倒数第二个节点值的哈希值,并判断其是否等于单项哈希链的链尾值,如果相等,则表示该用户认证成功。
用户向第三方支付平台进行抗量子攻击的支付过程包含以下具体步骤:
步骤C.1),用户通过客户端向第三方支付平台发送支付请求,其客户端产生随机数yB,哈希运算得到hash(yB),并计算发送加密信息如下:
其中,为用户的私钥,为用户的公钥,为用户的秘钥对,为第三方支付平台的公钥,为第三方支付平台的私钥,为第三方支付平台的秘钥对,ENTRU表示用基于NURU的加密算法进行加密;
步骤C.2),第三方支付平台收到信息后,根据IDA进行解密:
其中,DNTRU表示基于NURU的解密算法进行解密;
步骤C.3),第三方支付平台验证是否合法,若合法则向用户表示同意支付请求;
步骤C.4),用户的客户端接受到第三方支付平台同意支付请求的表示后,提取第三方支付平台的公钥利用会话密钥KAB加密会话内容得到并向第三方支付平台发送信息
步骤C.5),第三方支付平台对用户进行用户认证,认证成功后,通过第三方支付平台存储的私钥解密得到会话密钥KAB后,发送信息给用户表示会话密钥已经协商完成;
步骤C.6),用户的客户端向第三方支付平台发送支付信息:
首先,将支付信息M进行哈希运算生成数字摘要hash(M),并用私钥加密hash(M)得到
然后,采用会话KAB加密支付信息M得到EAES(KAB,M),其中,EAES表示用对称加密算法AES加密;
最后,发送消息给第三方支付平台;
步骤C.7),第三方支付平台收到客户端发送的支付信息后,对用户进行用户认证,认证成功后,根据会话密钥KAB解密为DAES(KAB,EAES(KAB,M))得到支付信息M,然后根据IDA提取用户的公钥并判断与hash(M)是否相等,若相等,第三方支付平台根据支付信息进行结算业务,并发送支付成功消息给用户。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1.移动支付的安全性达到了可以抗击量子计算攻击的强度;
2.相较于基于ECC的WPKI,大幅度提高了移动支付的速度,改善了用户体验。
具体实施方式
下面结合说明书附图对本发明创造作进一步说明。
由于支付过程中涉及的符号较多,首先定义符号意义如下:
函数E算法名称(参数1,参数2)表示用某个具体的加密算法,以参数1为秘钥对参数2代表的信息进行加密得到的密文,函数D算法名称(参数1,参数2)表示用某个具体的解密算法,以参数1为秘钥对参数2代表的信息进行解密得到的明文,上述两个函数互为逆函数。符号||表示将前后数据串联,tA为时戳,rA为现时数。IDA和IDB分别为用户和第三方支付平台唯一的用户标识。每个用户都会运行NTRU算法生成一组密钥对,比如用户A秘钥对为 为A的私钥,为A的公钥,用户私钥自己保留,公钥信息以及其他注册信息提交给登记机构,登记机构审查后提交给CA,CA根据提供的公钥以及用户信息生成数字证书发送给用户。
如图1所示,首先客户运行NTRU算法生成密钥对其中为A的私钥,为A的公钥,用户私钥自己保留,公钥信息以及其他注册信息提交给登记机构,登记机构审查后提交给CA,CA根据提供的公钥以及用户信息生成数字证书发送给客户A。
如图2所示,用户申请账号的具体步骤如下:
步骤A.1),用户从CA机构获得NTRU-WPKI数字证书CA{A};
步骤A.2),第三方支付平台从CA机构获得NTRU-WPKI数字证书CA{B};
步骤A.3),用户和第三方支付平台交换NTRU-WPKI数字证书,并通过会话密钥协商算法得到会话密钥KAB;
步骤A.4),用户下载第三方支付平台的客户端并通过客户端向第三方支付平台申请账户;
步骤A.5),第三方支付平台收到用户的申请后,为用户生成唯一的用户标识IDA和对应的hash函数,并通过会话密钥KAB加密IDA和该hash函数后发送给用户的客户端,发送信息如下:
EAES(KAB,IDA||hash)
其中,EAES表示用对称加密算法AES加密,秘钥为KAB,||表示将前后数据串联,加密内容为IDA与hash的连接串;
步骤A.6),客户端收到经过加密的IDA和hash函数后,通过会话密钥KAB解密得用户标识IDA以及对应的hash函数:
DAES(KAB,EAES(KAB,IDA||hash))
其中,DAES表示用对称加密算法AES解密,秘钥为KAB,解密内容为接受到的信息EAES(KAB,IDA||hash);
步骤A.7),客户端生成在区间(0,1)之间的随机数yA,并根据yA以及用户IDA对应的hash函数生成以下单项哈希链后保存:
(hash(yA),hash2(yA),hash3(yA),...,hashN(yA))
其中,N为大于2的自然数;
步骤A.8),客户端将单项哈希链的链尾值hashN(yA)发送给第三方支付平台,
步骤A.9),第三方支付平台收到单项哈希链的链尾值hashN(yA)后,将其保存,并发送信息给用户表示账号申请成功。
步骤A.3)中的会话密钥协商算法具体如下:
假设用户和第三方支付平台通信,为用户的公钥证书,为第三方支付平台的公钥证书。每个通信方都有两个秘钥,一个是公钥,一个是私钥。公钥是众所周知的,可以通过证书提取。私钥是只有通信方自己知道的秘钥。即用户的公钥为私钥为第三方支付平台的公钥为私钥为若发起会话的用户要把他们之间的本次会话密钥KAB发送给第三方支付平台,那么用户首先获取第三方支付平台的公钥证书提出第三方支付平台的公钥然后将如下信息发送给第三方支付平台:
其中符号||表示将前后数据串联,ENTRU表示用NTRU算法进行加密,DNTRU表示用NTRU算法进行解密。tA为时戳,rA为现时数,IDB为第三方支付平台的身份,为用户的公钥证书。那么第三方支付平台收到发送的信息后,首先用第三方支付平台的私钥解密信息M:
得:KAB||tA||rA||IDB||X
若时间戳、现时数、IDB均有效,那么第三方支付平台提取用户的公钥验证签名值:
若以上签名值有效,那么第三方支付平台成功收到会话密钥KAB。即通信双方协商本次通话的会话密钥KAB成功。
如图3所示,用户认证包含以下具体步骤:
步骤B.1),客户端取得保存的单项哈希链;
步骤B.2),客户端判断单项哈希链的节点数是否大于2;
如果单项哈希链的节点数大于2,将自己的IDA以及单项哈希链的倒数第二个节点的值发送给第三方支付平台,同时,将单项哈希链的最后一个节点去除后保存;
如果单项哈希链的节点数小于等于2,客户端生成在区间(0,1)之间的随机数,并根据该随机数以及用户IDA对应的hash函数生成节点数为N的新的单项哈希链,保存后将单项哈希链的链尾值发送给第三方支付平台,并重新执行步骤B.1);
步骤B.3),第三方支付平台根据用户的IDA匹配到其对应的hash函数,通过其对应的hash函数计算单项哈希链的倒数第二个节点值的哈希值,并判断其是否等于单项哈希链的链尾值,如果相等,则表示该用户认证成功。
如图4所示,用户向第三方支付平台进行抗量子攻击的支付过程包含以下具体步骤:
步骤C.1),用户通过客户端向第三方支付平台发送支付请求,其客户端产生随机数yB,哈希运算得到hash(yB),并计算发送加密信息如下:
其中,为用户的私钥,为用户的公钥,为用户的秘钥对,为第三方支付平台的公钥,为第三方支付平台的私钥,为第三方支付平台的秘钥对,ENTRU表示用基于NURU的加密算法进行加密;
步骤C.2),第三方支付平台收到信息后,根据IDA进行解密:
其中,DNTRU表示基于NURU的解密算法进行解密;
步骤C.3),第三方支付平台验证是否合法,若合法则向用户表示同意支付请求;
步骤C.4),用户的客户端接受到第三方支付平台同意支付请求的表示后,提取第三方支付平台的公钥利用会话密钥KAB加密会话内容得到并向第三方支付平台发送信息
步骤C.5),第三方支付平台对用户进行用户认证,认证成功后,通过第三方支付平台存储的私钥解密得到会话密钥KAB后,发送信息给用户表示会话密钥已经协商完成;
步骤C.6),用户的客户端向第三方支付平台发送支付信息:
首先,将支付信息M进行哈希运算生成数字摘要hash(M),并用私钥加密hash(M)得到
然后,采用会话KAB加密支付信息M得到EAES(KAB,M),其中,EAES表示用对称加密算法AES加密;
最后,发送消息给第三方支付平台;
步骤C.7),第三方支付平台收到客户端发送的支付信息后,对用户进行用户认证,认证成功后,根据会话密钥KAB解密为DAES(KAB,EAES(KAB,M))得到支付信息M,然后根据IDA提取用户的公钥并判断与hash(M)是否相等,若相等,第三方支付平台根据支付信息进行结算业务,并发送支付成功消息给用户。
图5为关于该原型系统的函数模块结构图。从以上模块图可以看出,前后台交互模块贯穿了这个过程,这里本文采用的Http协议实现前后台的交互。
为了对比基于WPKI和NTRU-WPKI数字证书性能的差异,实现了两套支付系统。一种是基于WPKI的数字证书移动支付系统,加解密算法和签名算法均为ECC;另一种是基于NTRU-WPKI移动支付系统,加解密算法是NTRU,签名算法为NTRUMLP,其他算法都一样,即会话加密算法为AES算法,哈希函数为SHA-1。下表为不同安全级别下NTRU-WPKI的参数选择。
表1 NTRU-WPKI参数选择
安全级别/(bit) |
NTRU-WPKI参数(N,p,q,Bs,Bt) |
112 |
(401,3,2^19,240,80) |
128 |
(439,3,2^20,264,88) |
196 |
(593,3,2^20,300,100) |
256 |
(743,3,2^21,336,112) |
表2 WPKI与NTRU-WPKI数字证书生成速率对比
安全级别/(bit) |
100个WPKI数字证书生成时间/(ms) |
100个NTRU-WPKI数字证书生成时间/(ms) |
80 |
11503 |
7341 |
112 |
30121 |
14434 |
128 |
52619 |
19071 |
192 |
124127 |
42213 |
256 |
251023 |
73318 |
从以上数据可以看出,在安全级别等同的情况下,NTRU-WPKI数字证书的生成速率比WPKI快很多。且随着安全级别的变大,差距越来越明显。
在用户认证阶段:本文利用哈希链实现用户认证,这里用WPKI的ECC签名算法认证与本方案作为对比,这里ECC的安全级别为80bit。哈希函数为SHA-1。实验环境同上。从表3可知,哈希链认证在速度方面远远超过ECC认证,且SHA-1在目前没有破解。
表3 哈希链认证和ECC认证的速率对比
100次ECC认证/(ms) |
100次哈希链认证/(ms) |
1831 |
129 |
在支付阶段:本文将基于NTRU-WPKI数字证书方案和WPKI数字证书方案作为实验对比。所得结果如表4所示。
表4 WPKI与NTRU-WPKI支付过程的速率对比
安全级别/(bit) |
100次WPKI支付交易时间/(ms) |
100次NTRU-WPKI支付交易时间/(ms) |
80 |
47605 |
4620 |
112 |
69153 |
7329 |
128 |
97239 |
9071 |
192 |
210178 |
21716 |
256 |
397301 |
31978 |
从上表可以看出,基于NTRU-WPKI的移动支付模型在支付阶段速率相对于WPKI具有压倒性优势。表5为NTRU-WPKI和WPKI的密钥尺寸对比,实验数据显示NTRU-WPKI在密钥尺寸远大于WPKI。由此可见NTRU-WPKI相对于WPKI在数字证书生成以及移动支付加解密过程中速率快速得多。
表5 WPKI与NTRU-WPKI密钥尺寸对比
安全级别/(bit) |
NTRU-WPKI公钥尺寸/(bits) |
WPKI的密钥尺寸/(bits) |
112 |
3033 |
224 |
128 |
3501 |
256 |
192 |
5193 |
384 |
256 |
7690 |
521 |
综上所述,NTRU-WPKI数字证书的移动支付方案存在的问题也很明显。首先NTRU加密算法不具有RSA、ECC可以直接用私钥加密然后公钥解密的性质。此外在NTRU-WPKI为基础的公钥加密措施中,加密算法和签名算法是独立的,而WPKI在加密和签名算法均是同一个算法。因此这给系统设计以及参数选择带来一定的局限,此外基于NTRU-WPKI的密钥尺寸远大于基于WPKI的密钥尺寸。然而,对于现如今移动终端G级别的内存,NTRU-WPKI的密钥尺寸对于内存来说显得微不足道。而值得一提的是
本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。