TLS构建安全数据链路的研究
2022-06-06崔宁宁
崔宁宁
摘 要:文章介绍了如何构建数据应用层之间的安全链路。在链路层将物联网传输协议与TLS传输链路层加密相结合,通过SM2—TLS,SM9—TLS构建不同环境下的链路层安全。同时,在传输层通过TLS最新版本1.3版构建链路安全,实现平台之间的高强度链路加密保障,保证重要数据在传输过程中的完整性。
关键词:数控设备;数据安全
中图分类号:TP309 文獻标识码:A 文章编号:1674-1064(2022)03-0-03
DOI:10.12310/j.issn.1674-1064.2022.03.026
当今,密码技术是与核技术、航天技术并列的国家三大安全核心技术之一,在保障信息安全,建设行业网络安全环境,增强我国行业信息系统的“安全可控”能力等方面发挥着至为关键的作用。
随着物联网、工业互联网领域的大力发展和建设,可以通过在物联网网关中部署支持SM2、SM9算法的客户端、标识解析客户端、TLS加密通信客户端,针对业务数据上传和维护数据下行的典型通信场景,进行设备和操作的身份认证、授权、审计和通信加密。基于TLS 1.3协议中的SM2、SM9算法,能够实现网关与平台之间的高强度安全数据链路加密保障,保证重要数据在传输过程中的完整性。
1 TLS的安全强化和性能提升
相比TLS 1.2版,TLS 1.3版在安全强化、效率提升等方面进行了大量修改。
1.1 安全强化
TLS 1.3版移除并修复了旧版本协议中的密钥交换、对称加解密、压缩等环节中可能存在的安全隐患,防患于未然[1]。
1.1.1 密钥交换方面
完全支持PFS:TLS 1.3协议中选取的密钥交换算法均支持前向安全性。斯诺登事件之后互联网企业开始重视加密算法的前向安全性,防止私钥被破解之后历史数据也能被解密成明文。为了达到上述安全目的,TLS 1.3协议中废除了不支持前向安全性的RSA和静态DH密钥交换算法。
废弃DSA证书:DSA证书作为历史遗留产物,因安全性差,从未被大规模应用,故在TLS 1.3协议中被废弃。
RSA填充模式更改:协议中规定RSA填充模式使用PSS。
禁用自定义的DH组参数:如果选用了“不安全”的素数作为DH的主要参数,并且使用静态DH密码套件或使用默认OpenSSL配置的DHE加密套件(特别是SSL_OP_SINGLE_DH_USE选项未设置),就很容易受到Key Recovery Attack攻击。因此TLS 1.3协议中禁用自定义的DH组参数。
1.1.2 对称加密方面
禁用CBC模式:针对CBC模式加密算法的攻击,历史上出现过两次,分别是2011年BEAST和2013年Lucky 13,实践证明这种对称加密模式确实存在安全隐患。
禁用RC4流加密算法:2011年9月,研究人员发现了BEAST攻击,该攻击针对所有基于CBC模式的加密算法。为解决这个问题,建议采用非CBC模式且普及率较高的RC4算法作为替代方案,由此RC4算法得到广泛应用[2]。
随着TLS版本的演进,BEAST攻击可通过升级到新版本解决,不必要采用RC4这种陈旧算法来替代。
禁用SHA1:早在2005年研究机构就发现SHA1存在理论上的漏洞,可能造成碰撞攻击。
1.1.3 禁用TLS压缩
由于TLS压缩存在安全漏洞,TLS 1.3协议删除了该特性。该漏洞表现为通过CRIME攻击可窃取启用数据压缩特性的HTTPS或SPDY协议传输的Cookie。在成功解读身份验证Cookie后,攻击者可实行会话劫持并发动进一步攻击。
1.1.4 加密握手消息
TLS 1.3协议中规定在Server Hello消息之后的握手信息需要加密。TLS 1.2及之前版本的协议中,各种扩展信息在Server Hello中以明文方式发送,新版本中可在加密之后封装到Encrypted Extension消息中,在Server Hello消息之后发送,提高数据的安全性。
1.2 性能提升
TLS 1.3版在提高效率方面进行了大量改进,特别是对SSL握手过程进行了重新设计,将握手交互延时从2—RTT降低至1—RTT甚至是0—RTT。在网络环境较差或节点距离较远的情况下,这种优化能节省几百毫秒的时间[3]。
TLS 1.3版提供1—RTT的握手机制,如图1所示,以ECDHE密钥交换过程为例,握手过程如下:
将客户端发送ECDH临时公钥的过程提前到Client Hello,同时删除了Change Cipher Spec协议简化握手过程,使第一次握手时只需要1—RTT。
客户端发送Client Hello消息,该消息主要包括客户端支持的协议版本、DH密钥交换参数列表Key Share。
服务端回复Server Hello,包含选定的加密套件;发送证书给客户端;使用证书对应的私钥对握手消息签名,将结果发送给客户端;选用客户端提供的参数生成ECDH临时公钥,结合选定的DH参数计算出用于加密HTTP消息的共享密钥;服务端生成的临时公钥通过Key Share消息发送给客户端。
客户端接收到Key Share消息后,使用证书公钥进行签名验证,获取服务器端的ECDH临时公钥,生成会话所需要的共享密钥。
双方使用生成的共享密钥对消息加密传输,保证消息安全。
2 TLS安全传输(SM2—TLS)
TLS协议用于在两个通信实体间建立安全的信息传输通道,以实现身份认证、数据加密传输等功能。目前,TLS协议是互联网应用最为广泛的安全通信协议,主要包含握手协议与记录协议等协议。记录协议通过添加消息认证码和加密数据的方式保证数据的完整性,握手协议作为TLS协议的核心,通过验证通信双方持有的证书及验证通信双方对握手参数签名的方式实现身份认证,通过密钥交换协议使通信双方在公开信道中安全地共享密钥。
将安全性更高的商密算法应用于TLS 1.3协议中,增大数据传输的安全性。
建立通道的方法,在密钥交换阶段,采用SM2算法,在密钥交换时即发送SM2曲线的参数和密钥协商时的公钥,即使用SM2密钥协商发送两个公钥到对端[4]。其中,一个公钥在key_share扩展中传输,该公钥每次握手都会重新产生;另一个公钥在新增的SM2_key_share擴展中传输,作为用户公钥使用,通过计算得出共享密钥,并对serverhello之后的报文进行加密发送,在身份认证阶段引入SM2_SM3签名算法,避免了在握手阶段密钥及所传输的报文内容被窃取,增大了数据传输的安全性。
3 TLS安全传输(SM9—TLS)
将SM9密钥用于TLS加密通信是一种很常用、具有现实意义的SM9基础应用场景。当TLS支持SM9密钥后,SM9私钥持有方(如物联网设备)以自己的身份接入网络,进行通信身份认证、密钥协商和加密通信。使TLS同时支持SM2和SM9算法,可以更好地促进互联网、物联网的融合,支撑组织、个人及设备的实名入网、认证联网[5]。
为实现通信节点间安全高效的通信,针对双向认证TLS协议通信开销及证书管理负担大的问题,拟基于SM9商密算法对双向认证TLS协议进行改进。改进关键在于用SM9商密算法代替证书体系,由于SM9商密算法中用户公钥由用户标识唯一确定,所以改进后的双向认证TLS协议中,用户公钥的真实性不依赖于证书而依赖于用户标识。这也就需要密钥生成中心在为用户生成并分发密钥后,维护合法的用户标识列表。
一种基于SM9签名算法和DHE密钥交换改进后的双向认证TLS握手协议如图2所示,其步骤下:
客户端向服务端发送Client Hello消息,与改进前相比,该消息增加了支持SM9-TLS的选项。
服务端向客户端发送Server Hello、Server Certificate、Server Key Exchange、Certificate Request、Server Hello Done消息,与改进前相比,Server Certificate消息含有服务器的标识而非证书,Server Key Exchange消息含有SM9签名。
客户端向密钥生成中心发送请求,查询Server Certificate消息中的服务端标识是否合法,如得到有效的合法回复,客户端通过该身份标识计算出服务端公钥,用该公钥验证Server Key Exchange消息中的SM9签名,验证通过后计算会话密钥,用会话密钥加密握手参数,向服务端发送Client Certificate、Client Key Exchange、Certificate Verify、Encrypted Handshake Message消息。与改进前相比,Client Certificate消息含有客户端标识而非证书,Certificate Verify消息含有SM9签名。
服务端向密钥生成中心发送请求,查询Client Certificate消息中的服务端标识是否合法,如得到有效的合法回复,服务端通过该身份标识计算出客户端公钥,用该公钥验证Certificate Verify消息中的SM9签名,验证通过后计算会话密钥,用会话密钥解密收到的Encrypted Handshake Message消息,并验证解密后的握手参数是否正确,如验证通过,用会话密钥加密握手参数,并向客户端发送含有加密握手参数的Encrypted Handshake Message消息。
客户端用会话密钥解密收到的Encrypted Handshake Message消息,验证解密后的握手参数是否正确,验证通过后用会话密钥安全通信[6]。
另一种改进方案中,需要用SM9密钥交换协议代替DHE密钥交换协议。在该改进方案中,SM9密钥交换过程中进行会话密钥计算时需要自己的私钥,所以只要通信双方协商出一致的会话密钥,就可以说明通信双方持有各自私钥,也就不依赖签名实现了身份认证。
基于SM9密钥协商协议的改进方案与基于SM9签名算法的改进方案不同在于Server Key Exchange、Client Key Exchange消息中含有SM9密钥交换参数,且Server Key Exchange和Client Verify消息中不再含有签名信息。
4 结语
作为TLS 1.3证书的核心,基于ECC椭圆曲线的SM2算法,单位安全强度相对较高。安全数据链路解决方案适合采用轻量级密码算法和优化的安全传输协议TLS。通过应用SM2、SM9算法,实现操作人员、设备、云端服务器彼此之间的身份认证,实现终端数据、云端服务器通信链路的加密传输及加密存储。通过建设工业信息安全密码支撑系统及安全数据链路,可以全面提供安全可靠的网络环境和数据加密服务,能够实现双向身份鉴别、精准权限控制、数据传输安全、控制指令防篡改和数据存储安全保护等安全需求。
参考文献
[1] 邢彦辰.数据通信与计算机网络(第3版)[M].北京:人民邮电出版社,2020.
[2] 郭德仁.数据通信网络技术[M].北京:电子工业出版社,2021.
[3] 里斯蒂奇.HTTPS权威指南 在服务器和Web应用上部署SSL TLS和PKI[M].北京:人民邮电出版社,2016.
[4] 国家密码管理局.GM/T 0009—2012 SM2密码算法使用规范[S].2012.
[5] 国家密码管理局.GM/T 0085—2020基于SM9标识密码算法的技术体系框架[S].2020.
[6] 国家密码管理局.GM/T 0025—2014 SSL VPN网关产品规范[S].2014.