发明内容
为了解决现有技术的不足,本发明提供了一种代理软件软件架构中数据处理方法及让IE浏览器基于国密SSL协议通信的方法。
本发明是通过如下技术方案实现的:
一种代理软件软件架构中数据处理方法,其特征是:包括三层步骤:
第一层协议,记录层协议格式:
1字节协议类型+2字节版本号+2字节数据长度+数据内容
其中数据内容就是第二层的数据包;
第二层协议
一、警告协议格式
1字节警告等级+1字节警告描述;
二、握手协议格式
1字节握手类型+3字节握手消息数据长度+握手消息数据,其中握手消息数据内容就是第三层各种握手消息的数据包,serverhellodown和finished消息比较特别,不符合协议格式,附在上一个消息包的后面,以0E 00 00 00四字节表示结束,在代码解析数据包时要对serverhellodown和finished消息进行判断;
第三层协议
client hello
2字节协议版本+32字节随机数+1字节会话OID长度+会话OID内容+2字节算法套件长度+算法套件内容+1字节压缩算法长度+压缩算法内容。
一种让IE浏览器基于国密SSL协议通信的方法,其特征采用如下步骤:
一、用户端需要运行应用上述数据处理方法的代理软件,为分别将上述软件在以下文中统称为国密代理软件,
二、IE浏览器与用户端国密代理软件进行标准的SSL协议通信。
三、国密代理软件将IE浏览器发过来的数据包解密后重新封装成符合国密SSL协议的数据包转发给后台国密SSL VPN。
四、国密SSL VPN将数据解密发给应用服务器完成数据传输。
具体使用时,IE浏览器使用本地IP(127.0.0.1)与本地国密代理软件完成标准SSL协议握手过程,并建立安全隧道。国密代理软件将IE浏览器通过安全隧道发送过来的数据进行解密;国密代理软件与后台国密SSL VPN设备按照国密SSL协议完成握手过程,并建立安全隧道;代理软件将IE浏览器发送过来的数据按照国密协议标准重新封装数据包,并通过安全隧道发送给国密SSL VPN设备。国密SSL VPN设备将数据转发给应用服务器,完成数据发送过程;应用服务器通过国密SSL VPN设备将返回数据通过安全隧道发送给代理软件,代理软件再以标准的SSL协议将数据转发给本地IE浏览器,IE浏览器完成页面显示。
本发明的有意效果:将原本无法在IE浏览器中使用的国密SSL协议间接使用起来,一方面可以保证IE浏览器像使用普通IE浏览器方式一样去使用,另一方面又可以选择安全度更高的国密SSL协议,让数据传输更安全,再者就是使用者感觉不出来对自己操作和以往有太多差别,方便了国密SSL协议的使用推广。
具体实施方式
1、附图为本发明的一种具体实施例。该数据处理方法如图1所示包括三层步骤:
第一层协议,记录层协议格式:
1字节协议类型+2字节版本号+2字节数据长度+数据内容
其中数据内容就是第二层的数据包;
第二层协议
一、警告协议格式
1字节警告等级+1字节警告描述;
三、握手协议格式
1字节握手类型+3字节握手消息数据长度+握手消息数据,其中握手消息数据内容就是第三层各种握手消息的数据包,serverhellodown和finished消息比较特别,不符合协议格式,附在上一个消息包的后面,以0E 00 00 00四字节表示结束,在代码解析数据包时要对serverhellodown和finished消息进行判断;
第三层协议
client hello
2字节协议版本+32字节随机数+1字节会话OID长度+会话OID内容+2字节算法套件长度+算法套件内容+1字节压缩算法长度+压缩算法内容。
注意:当OID长度为0时,会话OID内容省略
举例:
Client Hello Package Hex Data:
分解:
protocol version:
01 01
Random:Data:
Session ID Length:
00
Session ID:
cipherSuites:Data Len:
00 10
cipherSuites:
e0 01 e0 02 e0 09 e0 0a e0 11 e0 12 e0 19 e0 1a
compressionMethods:Data Len:
01
compressionMethods:
00
2、server hello
2字节协议版本号+32字节随机数+1字节会话OID长度+会话OID内容+算法套接字(2字节)+压缩算法(1字节)
例如:
Server Hello Package Hex Data:
分解:
protocol version:
01 01
Random:Data
Session ID Length:
00
Session ID:
cipherSuite:Data
e0 11
compressionMethod:Data
00
3、server certificate
数据总长度(3字节)+签名证书长度(3字节)+签名证书数据+加密证书长度(3字节)+加密证书数据
举例:
数据总长度(1145)
00 04 79
签名证书长度(570)
00 02 3a
签名证书数据
加密证书长度(569)
00 02 39
加密证书数据
4、server key exchange
当算法套件为ECDHE-SM4-SM3时:
sm2_sm3_init_z IDA:
ENTLA(2字节)+ID(默认值16字节)+SM2参数a(32字节)+SM2参数b(32字节)+SM2参数gx(32字节)+SM2参数gy(32字节)+server sign public key(64字节)
举例:
ENTLA:(参考SM2数字签名部分5.5章节,两个字节组成,表示ID的BIT长度)
00 80
id:
a:
b:
0e 93
gx:
gy:
server public key(服务端签名公钥):
sm2_sm3_init_z Z Value是对IDA的SM3杂凑值:
ECDHE orig(具体格式见例子)
数据包在签名之前对数据包进行SM3杂凑运算,参与做杂凑运算的数据和顺序为:
Z+client Random+server Random+ECDHE orig
Server key exchange包格式:
ECDHE orig+签名值长度(2字节)+签名值
其中签名值计算过程:
1)首先对Z+client Random+server Random+ECDHE orig做SM3杂凑运算
2)对杂凑结果做SM2签名运算
3)对签名值做DER编码
举例:
server key exchange ECDHE orig:
03算法参数
00长度为0
长度(两个字节)
00 41
编码类型
04
服务端临时公钥
签名值长度(两个字节)
00 47
DER编码的SM2算法签名值SQUENCE:={r:INTEGER;s:INTEGER}
当算法套件为ECC-SM4-SM3时:
签名过程与ECDHE一样,在封装exchange包的时候不在包含服务端临时公钥,仅含有签名值的内容。
此算法套件的server key exchange ECC orig:服务端加密证书
签名原文数据组装方式为:
Z+client Random+server Random+ECDHE orig,其中ECDHE orig为服务端加密证书(证书长度(3个字节)+加密证书内容)
其中签名值计算过程:
1)首先对Z+client Random+server Random+ECDHE orig做SM3杂凑运算
2)对杂凑结果做SM2签名运算
3)对签名值做DER编码
举例:
长度(两个字节)
00 48
签名值的DER编码
5、Certificate request
证书类型长度(1字节)+证书类型+服务端信任CA的证书DN列表长度(2字节)+服务端CA证书1DN长度(2字节)+服务端CA证书1+服务端CA证书2DN长度(2字节)+服务端CA证书2+......
举例:
证书类型长度
02
证书类型
01 02(此处与规范不太一致,个人理解是要求客户端发送签名证书(01)和加密证书(02))
DN列表长度
00 00
6、Client Key Exchange
当算法套件为ECDHE-SM4-SM3时:
03 00算法参数
00 41数据长度
04公钥编码方式
密钥协商时的临时公钥,该公钥是密钥协商函数的对方临时公钥
当算法套件为ECC-SM4-SM3时:
00 9c数据长度
后面的数据是用服务端加密密钥对预主密钥加密后的密文的DER编码,其密文DER编码结构为:SEQUENCE:={
X:INTEGER;
Y:INTEGER;
M:OCTSTRING;
C:OCTSTRING
}Cipher,需要用服务端私钥加密获得预主密钥。
该让IE浏览器基于国密SSL协议通信的方法,具体通信过程如下。
IE浏览器与本地代理通信:IE浏览器通过本地127.0.0.1地址,将数据发送给代理服务器,代理服务器使用的标准SSL协议可以使用OPENSSL开源代码库封装完成,IE浏览器自身已经实现了标准SSL协议,IE浏览器访问的网址中的原有服务器地址使用127.0.0.1代替,让数据能够直接发送给本地代理服务器。
代理服务器按照国密SSL协议标准完后国密协议,并与国密SSL VPN设备通信,代理服务器将接收到得数据直接通过网络发送给对端的SSL VPN设备。SSL VPN设备负责完成WEB服务器访问。