国密SSL产生背景

随着互联网技术的兴盛和网络应用的普及,网络安全问题日益突出,大量的数据在网络上传递并遭受攻击和威胁,数据的安全性受到越来越多人的重视,因此产生了多种安全协议和相关规范。SSL协议就是在这种背景下由Netscape提出的,其中SSLv3.0自1996提出并得到大规模应用成为了业界标准,在2015年才被弃用。1999年,IETF收纳了SSLv3.0并以此为基础提出TLS规范,版本已由TLS1.0发展到如今的TLS3.0,是被应用最广泛的安全协议之一。

安全协议的核心和基础就是密码算法,为了确保我国的信息安全,国内的相关安全产品以及协议如HTTPS、SSL VPN、STMPS等就不能直接使用TLS标准规范和密码算法,因此必须要有一个属于中国的密码算法和传输层安全协议,国密SSL协议顺势产生。

国密SSL协议概述

目前TLS版本包含TLS1.0、TLS1.1、TLS1.2、TLS1.3以及GMTLS1.1。

国密 SSL协议在GM/T中不是一个独立的协议标准[1],而是按照相关密码政策、法规结合我国实际情况并参照RFC4346 TLS1.1规范,在GM/T 0024-2014《SSLVPN技术规范》中对其进行了相关定义。主要不同体现在以下几方面:

  • 国密主要采用SM2/SM3/SM4算法,不同于国际密码算法;
  • 版本号是0x0101,不同于TLS规范;握手协议和加密协议的细节存在不同以及增加网关到网关协议;
  • 采用SM2双证书体系。

注[1]:随着国家越发重视信息安全,在2020年11月1日正式实施了《GB/T38636-2020信息安全技术 传输层密码协议(TLCP)》,现阶段使用者相对较少,因此本文依旧按照《SSL VPN技术规范》进行介绍。

国密SSL协议包括记录层协议、握手协议族(握手协议、密码规格变更协议、报警协议)和网关到网关协议。

  • 记录层协议

记录层协议是分层次的,每一层都包括长度字段、描述字段和内容字段;其会接收将要被传输的消息,将数据分段、压缩(可选)、计算HMAC、加密,然后传输,接收到的数据经过解密、验证、解压缩(可选)、重新封装然后传送给高层应用。

  • 握手协议族

国密SSL握手协议族由密码规格变更协议、握手协议和报警协议3个子协议组成,用于通信双方协商出供记录层使用的安全参数,进行身份验证以及向对方报告错误等。

  • 密码规格变更协议

密码规格变更协议用于通知密码规格的改变,即通知对方使用刚协商好的安全参数来保护揭晓了的数据。客户端和服务端都要在安全参数协商完毕之后、握手结束消息之前发送此消息。

  • 报警协议

报警协议用于关闭连接的通知以及对整个连接过程中出现的错误行为进行报警,其中关闭通知由发起者发送,错误报警由错误的发现者发送。报警消息的长度为两个字节,分别为报警级别和报警内容。

  • 握手协议

握手协议是在记录层协议之上的协议,用于协商安全参数,是通过记录层协议传输的。握手消息应当按照规定流程顺序进行发送,否则将会导致致命错误,不需要的握手消息可以被接收方忽略。

  • 国密SSL协议密码套件

在Client支持的密码套件列表中,Client会按照密码套件使用的优先级顺序进行排列,优先级最高的密码套件会排在首位。国密SSL支持的密码套件列表如下所示:

python3 国密ssl 国密ssl协议_SSL

python3 国密ssl 国密ssl协议_HTTPS_02

在国密SSL标准中实现ECC和ECDHE的算法是SM2,实现IBC和IBSDH的算法是SM9,RSA算法的使用需要符合国家密码管理主管部门的要求。

注[2]:在《GB/T38636-2020信息安全技术 传输层密码协议(TLCP)》标准中增加了GCM的密码套件,并且删除了涉及SM1和RSA的密码套件。

  • 网关到网关协议

网关到网关协议定义了SSL VPN之间建立网关到网关的传输层隧道,对IP数据报文进行安全传输时所采用的报文格式(包括控制报文与数据报文)以及控制报文交换过程和数据报文封装过程。

  • 控制报文定义了保护域的信息交换报文;
  • 数据报文包含承载协议(记录层协议)和隧道状态(SSL连接状态)。

国密SSL测试的需求

为了保障数据安全,国家密码管理局要求相关系统均要进行国密改造,改用国密的密码算法,目前国密算法已经成为了数据安全保障的基础。因此国密设备在实验室的概念设计、研发设计、生产、部署验收都有测试的必要。

在概念设计和研发阶段需要确定设备是否符合相关要求,能否正常的进行国密SSL加密以对数据进行保护;设备研发成型阶段还需要进行整机测试,验证设备各项功能和性能是否满足实际应用;在部署验收阶段也需要进行整体测试,验证国密设备在真实网络环境中能否正常对数据进行传输以及与整网的兼容适配。

国密测试分为功能测试和性能测试,目前市场上针对功能测试主要采用的是利用具备同样国密功能的设备与被测设备对接测试,而性能测试则是采用自研类软件模拟多终端进行测试,测试能力相对较弱且操作复杂,因此专业的测试工具在国密SSL的研发和推广过程中就愈发重要。

信而泰国密SSL测试方案

信而泰经过多年潜心研制,推出了基于PCT架构的新一代B/S架构测试平台ALPS,该平台支持真实的应用层流量仿真。HTTPS /SMTPS Application Simulator是一个7层测试组件,可基于国密SSL模拟现实网络环境中的HTTPS/SMTPS协议流量,进而测试设备处理客户端应用层流量的能力。该平台可以针对防火墙、负载均衡、VPN、网关等应用层安全设备进行相关测试,测试拓扑如下图所示:

python3 国密ssl 国密ssl协议_数据_03

python3 国密ssl 国密ssl协议_HTTPS_02

信而泰国密SSL支持以下测试功能和特性:

  • 支持GMTLSv1.1版本版本
  • 支持NAT
  • 支持一层VLAN,双层VLAN
  • 支持新建速率测试
  • 支持并发连接测试
  • 支持添加测试条件
  • 支持查看实时统计结果
  • 支持查看/删除历史统计结果
  • 支持国密密码套件的配置,包括ECC_SM4_SM3和ECDHE_SM4_SM3两种
  • 支持国密证书和对应私钥文件(PEM格式)的导入
  • 支持客户端认证功能
  • 支持导入CA证书用于用户证书的校验
  • 客户端/服务器认证方式支持Do Not Check Cert, Allow UntrustedCert和Require Trusted Cert三种
  • 支持SSL Not Verified Cert Count,SSL Verified Trusted Cert Count和SSL Verified UntrustedCert Count等多种SSL统计项

HTTPS/SMTPS应用流配置界面:

python3 国密ssl 国密ssl协议_python3 国密ssl_05

python3 国密ssl 国密ssl协议_HTTPS_02

SSL Client Session统计界面:

python3 国密ssl 国密ssl协议_数据_07

python3 国密ssl 国密ssl协议_HTTPS_02

SSL Server Session统计界面:

python3 国密ssl 国密ssl协议_python3 国密ssl_09

python3 国密ssl 国密ssl协议_HTTPS_02