慧敏应用交付网关基于国密算法的SSL双证书认证及加解密实现

引言
国密背景知识
国密双证书在慧敏中的应用
国密双证书申请
引言

密码算法主要用于网络身份认证以及数据存储、传输的保密,在网络信息安全中发挥着至关重要的作用。我国当前网银系统中采用的安全协议和加密算法都为国外制定,密码应用体系存在安全隐患。为此,我国制定了自主知识产权的ECC国家标准算法即国产密码技术,推广和应用国产密码技术,是实现国家网络信息安全自主可控的基础,密码技术在国家安全战略上与核安全具有同等重要的地位。国产密码技术将广泛应用于国产操作系统、手机安全、通信安全、个人信息保护、金融支付、政务办公等人民生活的各个领域。

应用交付网关是国产密码算法普及应用的关键环节,为了加快国家自主密码算法的推广,信诺瑞得以国家密码行业规范为基础,通过软件与硬件两种方式同时实现了对国密算法双证书体系的支持。

本文档以慧敏ADC5000应用交付网关产品为例,介绍国密双证书技术在互联网访问中的安全应用,其中会涉及国密双证书的SSL握手以及国密双证书申请等关键技术点。针对的读者为致力于国产密码技术在应用中的推广,愿意为发展国家自主知识产权做出贡献,以及需要基于国密规范进行安全开发的人员。

国密背景知识 国密算法

国密算法是由国家密码局制定标准的一系列算法。其中包括了对称加密算法(SM1,SM4),分组长度与秘钥长度均为128比特,其工作模式为CBC模式;椭圆曲线非对称加密算法(SM2),可用于数字签名与秘钥交换,其加密强度为256位;杂凑算法(SM3)等。

国密算法套件

客户端浏览器使用HTTPS访问WEB服务器时,比如(https://sinogrid.com),在发送HTTP请求之前首先要进行的是SSL握手过程,服务器根据自身配置的证书信息、自身支持的算法套件列表和客户端支持的算法套件列表,选出双方共同支持的一个算法套件,用于建立SSL连接和连接建立之后的数据传输。一个算法套件包含四个算法,其格式为:秘钥交换算法—数字签名算法—对称加解密算法—数据摘要算法,这些算法用于保障通信数据在网络传输过程中的安全。而SM2-SM2-SM4-SM3(即ECC-SM4-SM3)由于使用了国密算法可以称之为国密算法套件。

目前慧敏应用交付网关支持的国密算法套件仅为ECC-SM4-SM3(ID为e013)。对ECC-SM1-SM3(ID为e003),ECC-SM1-SHA1 (ID为e004),RSA-SM1-SM3 (ID为e009) 等一系列国密算法套件的支持实现过程与ECC-SM4-SM3完全类似。

国密双证书

通常我们使用HTTPS访问网站时,客户端服务器协商的都是国际通用算法,使用的也是单证书体系,即服务器只需要提供一个签名证书用于向客户端证明自己的身份。但国密规范标准规定,基于国密算法的应用使用国密的双证书体系,双证书包括签名证书与加密证书,签名证书用于身份验证,加密证书用于秘钥交换。

在单向认证的情况下,如果双方协商为国密算法套件,则服务器方应该具有签名证书,加密证书,签名私钥,加密私钥。

在双向认证的情况下,如果双方协商为国密算法套件,则客户端服务器都应该具有各自的签名证书,加密证书,签名私钥,加密私钥。

基于国密双证书的握手协议

不同于普通的SSL协议握手过程,基于国密双证书的SSL协议握手包括如下步骤:

  1. 1)客户端发送HELLO消息,包括协议版本,会话标识,密码套件,随机数等属性。
  2. 2)如果能从客户端HELLO消息中找到与自身所持证书类型匹配的密码套件,服务器端发送SERVER HELLO消息作为对客户端HELLO消息的回复。
  3. 3)服务端必须发送一个SERVER CERTIFICATE消息给客户端,该消息紧跟在SERVER HELLO 消息之后,内容为服务端的签名证书和加密证书,即双证书。
  4. 4)紧接着服务端要发送SERVER KEY EXCHANGE消息。
  5. 5)如果服务端要求认证客户端,则应该发送CERTIFICATE REQUEST消息,要求客户端发送自己的证书。该消息紧跟在服务端秘钥交换消息之后,不要求认证客户端则不需要发送此消息。
  6. 6)服务端发送SEVER HELLO DONE消息,表示握手过程的HELLO消息阶段完成。
  7. 7)如果服务端请求客户端证书,客户端应该发送CLIENT CERTIFICATE消息,客户端证书消息与服务端证书消息结构相同,内容包括客户端的双证书。
  8. 8)如果服务端请求客户端证书,则CLIENT KEY EXCHANGE消息紧跟于客户端证书消息之后,否则客户端秘钥交换消息是客户端接收到服务端HELLO完成消息后所发送的第一条消息。
  9. 9)当需要发送CLIENT CERTIFICATE消息时,才会发送CERTIFICATE VERIFY消息。
  10. 10)客户端服务端各自发送密码规格变更消息,FINISHED消息。

基于国密双证书的SSL握手成功完成了,后续的应用数据都可以通过工作密钥进行加密运算,保证传输数据的安全性。

国密双证书在慧敏中的应用
典型的应用场景如图:目前基于国密双证书的SSL握手协议已经在慧敏这种应用交付网关上得到了实现。由于原有密码产品的政策限制,之前没有任何一款浏览器产品支持国产密码算法。这给网银系统中应用国产密码算法以及网银体系安全改善带来了严重的阻碍作用,也为我们的调试工作带来了麻烦,之后360安全浏览器国密专版成为国内首个支持国产密码算法的浏览器,有了支持国密算法的浏览器,也使信诺瑞得支持国密算法的应用交付网关变得更加有意义。慧敏作为真实WEB服务器的代理,实现了通过360国密专版浏览器对HTTPS网站的访问。
 
如下图为通过360国密专版浏览器对域名https://sinogrid.com的访问结果。 证书信息
 
在访问过程中通过抓包可知,慧敏不仅支持基于国密双证书的SSL协议,也支持国密SSL的会话复用功能。大家都知道SSL的握手过程不可避免的消耗了服务器的处理性能,而会话复用可以避免安全参数的重复协商,提高了SSL的握手效率。从下面的抓包信息可以看出浏览器发送的CLIENT HELLO消息中携带了32字节的会话ID,而服务器在SERVER HELLO中回复了相同的会话ID,说明服务器找到了之前缓存的对应ID的会话信息,会话复用成功。

 
国密双证书申请
在申请360国密专版浏览器信任的服务端证书时,比如申请CFCA机构颁发的国密证书,就需要按照CFCA的要求生成指定格式的PKCS#10规范请求文件,否则无法申请证书。下图为符合CFCA格式要求的SM2双证书请求文件供参考。
 
总结
通过在慧敏应用交付网关上配置国密双证书认证和基于国密算法的SSL协议,我们可以帮助企业Web应用无缝升级成为基于国密SSL保护的WEB应用。此外,我们还可以在服务器端和客户端实现不同的SSL 加密和证书认证方法。比如在服务器端采用标准RSA 的SSL/TLS , 在客户端采用国密算法SM2,3,4的SSL/TLS ;或者相反,在客户端采用标准的RSA 的SSL/TLS , 在服务器端采用国密算法的SSL/TLS。这样,我们既帮助企业客户实现了更高级别的安全性,又最大限度地照顾到应用和互联网的兼容性。

了解更多信息

关注官方微信

电话:(8610)8580 4799

传真:(8610)8580 4800

咨询热线:400 610 0319