一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于国密算法的http请求参数加密方案的制作方法

2022-04-27 03:17:02 来源:中国专利 TAG:


1.本发明涉及网络安全技术领域,尤其是一种基于国密算法的http请求参数加密方案。


背景技术:

2.目前,网络越来越发达,每日的http请求数以亿计,请求的参数可能涉及电话、身份证号、家庭住址等。在请求参数传输的过程中,它的安全性是非常重要的,但是目前大多数参数传输采用的是明文或者简单加密后的参数,没有采用国家认定的国产密码算法进行加密,这样的请求参数在公共的网络上极易被网络黑客窃取、篡改,从而导致不安全的事情发生。


技术实现要素:

3.本发明提出一种基于国密算法的http请求参数加密方案,采用国家密码局认定的国产密码算法,并组合使用其中的sm2算法和sm4算法对请求参数进行加密,能保证请求参数在网络传输中的安全性。
4.本发明采用以下技术方案。
5.一种基于国密算法的http请求参数加密方案,为用于终端与平台之间的加密通讯方法,所述加密方案中,平台生成基于非对称加密算法的平台公私钥对,并把平台公私钥对中的公钥a分发至终端,终端生成基于对称加密算法的终端密钥,并在向平台发起http服务请求时,以终端密钥加密http服务请求参数形成第一密文,以公钥a加密终端密钥形成第二密文,终端把第一密文、第二密文组合后提交至平台,平台以平台公私钥对中的私钥a解密第二密文获得终端密钥后,以终端密钥解密第一密文以获得终端提交的http服务请求参数。
6.所述平台公私钥对基于的非对称加密算法为sm2算法;所述终端密钥基于的对称加密算法为sm4算法。
7.终端在向平台发起http服务请求时,随机生成基于sm4算法的终端密钥,即sm4密钥;所述平台公私钥对中的公钥a为sm2公钥,私钥a为sm2私钥。
8.所述加密通讯方法包括以下步骤;
9.步骤一、终端事先向平台发起获取sm2公钥请求,由平台生成sm2公私钥对,与该终端关联后保存在平台上,同时返回sm2公钥,终端保存该sm2公钥;
10.步骤二、终端向平台发起服务请求前,先随机生成sm4密钥,通过sm4算法使用该密钥加密http服务请求的参数形成第一密文;使用从步骤一获得的sm2公钥,通过sm2算法加密此次请求的sm4密钥形成第二密文并把第二密文放在预先约定名称的头参数中;
11.步骤三、终端向平台发起http服务请求并把第一密文、第二密文发送给平台,平台收到请求后,通过本地保存的sm2私钥解密头参数中的第二密文,得到sm4密钥,再以sm4密钥解密第一密文,得到此次http服务请求的参数数据;
12.步骤四、平台响应http服务请求,按步骤三得到的参数数据处理业务,以所得到的处理结果生成body数据,再以sm4密钥对body数据加密形成第三密文,把第三密文回复给终端;
13.步骤五、终端收到第三密文后,以sm4密钥对其解密,得到平台响应http服务请求后的处理结果。
14.步骤二中,http服务请求的参数包括query参数、header参数和body参数,头参数的约定名称为x-secret。
15.在步骤三中,所述终端向平台发起http请求过程中,对第一密文、第二密文进行url安全的base64编码处理。
16.所述sm2算法和sm4算法均采用国密算法。
17.本发明的优点在于:
18.1、在http请求的过程中,对请求参数组合使用了国密算法sm2和sm4加密,没有暴露sm2公私钥和sm4密钥,使http请求更具有安全性。
19.2、sm2算法为非对称加密算法,解密过程较慢,适合加密数据较为简单的数据;sm4算法为对称加密算法,解密过程较快,适合加密较为复杂的业务数据。根据两种算法的特性,使用sm2算法来加密sm4的密钥,使用sm4算法来加密请求参数,使加解密过程耗时更少,用户体验更好。
附图说明
20.下面结合附图和具体实施方式对本发明进一步详细的说明:
21.附图1是本发明的原理示意图。
具体实施方式
22.如图所示,一种基于国密算法的http请求参数加密方案,为用于终端与平台之间的加密通讯方法,所述加密方案中,平台生成基于非对称加密算法的平台公私钥对,并把平台公私钥对中的公钥a分发至终端,终端生成基于对称加密算法的终端密钥,并在向平台发起http服务请求时,以终端密钥加密http服务请求参数形成第一密文,以公钥a加密终端密钥形成第二密文,终端把第一密文、第二密文组合后提交至平台,平台以平台公私钥对中的私钥a解密第二密文获得终端密钥后,以终端密钥解密第一密文以获得终端提交的http服务请求参数。
23.所述平台公私钥对基于的非对称加密算法为sm2算法;所述终端密钥基于的对称加密算法为sm4算法。
24.终端在向平台发起http服务请求时,随机生成基于sm4算法的终端密钥,即sm4密钥(sm4key);所述平台公私钥对中的公钥a为sm2公钥(sm2publickey),私钥a为sm2私钥。
25.所述加密通讯方法包括以下步骤;
26.步骤一、终端事先向平台发起获取sm2公钥请求,由平台生成sm2公私钥对,与该终端关联后保存在平台上,同时返回sm2公钥,终端保存该sm2公钥;
27.步骤二、终端向平台发起服务请求前,先随机生成sm4密钥,通过sm4算法使用该密钥加密http服务请求的参数形成第一密文;使用从步骤一获得的sm2公钥,通过sm2算法加
密此次请求的sm4密钥形成第二密文并把第二密文放在预先约定名称的头参数中;
28.步骤三、终端向平台发起http服务请求并把第一密文、第二密文发送给平台,平台收到请求后,通过本地保存的sm2私钥解密头参数中的第二密文,得到sm4密钥,再以sm4密钥解密第一密文,得到此次http服务请求的参数数据;
29.步骤四、平台响应http服务请求,按步骤三得到的参数数据处理业务,以所得到的处理结果生成body数据,再以sm4密钥对body数据加密形成第三密文,把第三密文回复给终端;
30.步骤五、终端收到第三密文后,以sm4密钥对其解密,得到平台响应http服务请求后的处理结果。
31.步骤二中,http服务请求的参数包括query参数、header参数和body参数,头参数的约定名称为x-secret。
32.在步骤三中,所述终端向平台发起http请求过程中,对第一密文、第二密文进行url安全的base64编码处理。
33.所述sm2算法和sm4算法均采用国密算法。
34.实施例:
35.在步骤二、步骤三中,本例有以下实例方式,
36.1、获取x-secret
37.为防止加解密过程中出现特殊字符破坏原参数值的正确性,故http请求过程中用户传递请求时应先对加密后内容进行编码处理
38.首先,终端随机生成sm4密钥(sm4key),须为32位16进制数。
39.假设步骤二中,生成的sm4密钥为:
40.f1d87abb2841a60469e7e3053401b6b7
41.其次,需要先获取到sm2公钥(sm2publickey),
42.假设步骤一中,获取到的sm2公钥为:
[0043][0044]
然后,通过sm2加密算法,将sm4密钥加密为x-secret头,再进行base64(url安全的base64)编码处理防止出现特殊字符串破坏原参数值,公式为:
[0045]
base64(sm2public(sm4key,sm2publickey))
[0046]
则生成的x-secret头为:
[0047][0048]
2、获取加密的query参数
[0049]
因sm4加密后的结果可能带有特殊符号,故需要进行base64(url安全的base64)编码处理防止出现特殊字符串破坏原参数值,完整加密公式为:
[0050]
base64(sm4encrypt(value,sm4key))
[0051]
原请求
[0052]
post/user?id=79d4490e2b2e4ce68aeae3c9816382a7 http/1.1
[0053]
则加密部分为base64(sm4encrypt(

79d4490e2b2e4ce68aeae3c9816382a7’,

f1d87abb2841a60469e7e3053401b6b7’))
[0054]
加密后请求:
[0055][0056]
3、获取加密的header参数
[0057]
因sm4加密后的结果可能带有特殊符号,故需要进行base64(url安全的base64)编码处理防止出现特殊字符串破坏原参数值,完整加密公式为:
[0058]
base64(sm4encrypt(value,sm4key))
[0059]
原请求
[0060][0061]
则加密部分为base64(sm4encrypt(

79d4490e2b2e4ce68aeae3c9816382a7’,

f1d87abb2841a60469e7e3053401b6b7’))
[0062]
加密后请求
[0063][0064]
4、获取整个body的加密值(其中请求格式为form-data格式时只加密值)
[0065]
加密公式为:
[0066]
base64(sm4encrypt(body,sm4key))
[0067]
原请求
[0068][0069]
则加密部分为
[0070]
base64(sm4encrypt(

{"userid":"79d4490e2b2e4ce68aeae3c9816382a7"}’,

f1d87abb2841a60469e7e3053401b6b7’))
[0071]
加密后请求
[0072][0073]
综上,完整的请求示例为:
[0074]
原请求
[0075][0076]
加密后请求
[0077][0078]
原响应
[0079][0080]
加密后响应
[0081][0082]
本例中,sm2算法和sm4算法均为国密算法。
[0083]
sm2算法为非对称加密算法,需要初始化一对公私钥,sm2算法可以通过公钥加密数据,通过私钥解密数据。
[0084]
sm4算法为对称加密算法,需要初始化一个密钥,sm4算法可以通过该密钥加密、解密数据。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献