引自:《智能制造的信息安全》(作者:李晖、朱辉、张跃宇、赵兴文)
VPN(virual private network)即虚拟专网,是指将物理上分布式的网络通过公用网络(通常指Internet)连接而构成逻辑上的虚拟子网。它利用认证、访问控制、保密性、数据完整性等技术在公用网络上构建专用网络,在分布式智能制造网络中,VPN是保证通信安全最常用的技术。在安全Web服务、安全邮件服务中,通过使用传输层安全协议(transport layer security,TLS)协议保证Http协议和邮件协议中传输数据的安全。因此本文将重点介绍TLS协议和VPN使用的IPSec协议。
「 1. TLS 」
1)TLS协议简介
TLS(transport layer security)传输层安全协议多用于web服务的安全,由早期的安全套接字层(secure socket layer,SSL)协议演化而来,最初由Netscape公司开发,后IETF将SSL更名为TLS。该协议主要用于HTTPS协议中,HTTPS协议是用户在线申报、注册及交易时常用协议,其由Web浏览协议HTTP及TLS协议组成。
TLS协议允许使用数字签名及证书,因此TLS能提供强大认证功能。在建立TLS连接过程中,客户端与服务器之间要进行多次的信息交互。与许多C/S方式一样,客户端与服务器端通过“Hello”信息开始连接,双方验证对方的证书后启动密钥交换协议。密钥交换协议主要任务为:①产生主密钥;②由主密钥产生两个会话密钥,服务器到客户端及客户端到服务器的密钥;③由主密钥参数产生两个消息认证码密钥。
2)TLS协议工作原理
完整的TLS协议体系结构如图1所示。可以看出,TLS握手协议、TLS密钥交换协议和TLS报警协议均为应用层协议,而TLS记录协议属于第3层协议。
图1 TLS协议体系结构
(1)TLS握手协议。握手协议建立在可靠传输协议之上,负责协商客户端及服务器之间会话的加密参数。当一个TLS客户端和服务器第一次通信时,它们首先选择一致的协议版本,协商加密算法及认证方式,并利用公钥算法协商共享密钥。TLS协议的连接建立的握手协议过程如图2所示。
图2 TLS协议连接建立过程
具体协议流程如下:
- TLS客户端连接至TLS服务器,并要求验证服务器身份。
- TLS服务器发送其数字证书至客户端,客户端验证其身份。这个过程可以包括整个证书链,该证书链可以追溯到根证书颁发机构。通过检查证书的有效日期并验证数字证书中所包含的可信CA的数字签名来确认TLS服务器公钥的真实性。
- 服务器向客户端请求证书验证客户端身份。但由于缺乏PKI系统的支撑,大多数TLS服务器不进行客户端验证。
- 协商用于消息加密的加密算法和用于完整性检验的Hash算法,通常由客户端提供它所支持的所有算法列表,然后由服务器端选择最合适的密码算法。
- 客户端生成一个随机数,并使用服务器证书中的公钥进行加密,并将密文发送给TLS服务器。
- TLS发送另一随机数作为回应。
- 对以上两个随机数进行Hash运算,从而生成会话密钥。
其中,最后三步用于协商会话密钥。
(2)TLS记录协议。TLS记录协议用于在实际数据传输开始前通信双方进行身份认证、协商加密算法及加密密钥等功能。发送方将应用消息分割为可管理的数据块,然后与密钥一起进行Hash运算,生成一个消息认证码MAC,最后将组合结果进行加密并传输。接收方接收数据并解密,校验MAC,并对分段消息进行重新组合,提供给上层应用。TLS记录协议流程如图3所示。
图3 TLS记录协议
(3)TLS告警协议。TLS告警协议用于提示何时TLS协议发生了错误,或者两个主机之间的会话中止时间确定。只有在TLS协议失效时警报协议才会被激活。
3)TLS协议的发展
(1)TLS 1.2的改进。TLS协议提出至今经历了多次版本更新,低版本的TSL(如TLS 1.0)存在许多严重漏洞,如无法抵抗降级攻击、中间人攻击等,其使用的加密算法Export加密算法目前已被摒弃。行业内从2008年TLS 1.2提出正式进入新版本过渡期,其引入SHA-256 Hash算法代替SHA-1,能够有效增强数据完整性。TLS 1.2与TLS 1.0 步骤及原理基本一致,TLS 1.2为目前网络兼容性最强的版本,其与TLS低版本主要有以下改进:
- 密钥协商验证操作中,对Finished报文(即表示密钥协商正确)的计算由MD5及SHA-1组合的方式升级为单次SHA-256,有效提高效率及安全性。
- TLS 1.2在证书验证操作及服务器密钥交换环节中的报文增加2bytes说明其签名算法的类型,可以兼容多项公钥签名及Hash算法。
- TLS 1.2相较 TLS 1.0版本,数据加密的方式也有所提升。在密码分组链接模式(cipher block chaining ,CBC)下对数据加密前填充的随机数可不进行加解密操作,优化传输及计算效率。但TLS 1.2因兼容老旧的CBC模式,也出现漏洞导致了中间人攻击的成功。
(2)TLS 1.3。TLS 1.3版本2018年提交为正式标准,本次更新包含了在安全、性能和隐私方面的重大改进。TLS1.3在总体步骤上与前版本保持一致,但在握手阶段修改协议内容,有效提高了连接效率,相比于TLS 1.2减少一半的握手时间,对于移动端网站访问能减少近100ms的延迟。TLS 1.3握手协议如图4所示下,其中包括一次服务器与客户端来回交互(1-RTT)。
图4 TLS 1.3握手协议
- 客户端发出访问请求,该段为明文发送。其中包含了客户端支持的协议版本、会话ID、密码套件、压缩算法、以及扩展消息(密钥共享要求、预共享密钥、预共享密钥模式)。该步骤主要目的为密钥交换、选择TLS协议版本和加密算法并且协商算法所需参数。
- TLS服务器端进行密钥交换及认证,发送选定的加密算法、证书。使用证书对应的私钥对握手消息签名,将结果发送给客户端。根据客户端提供的参数生成临时公钥,并计算出用于加密HTTP消息的共享密钥。服务端生成的临时公钥通过KeyShare消息发送给客户端。该步骤主要目的为建立其他握手协议的参数,例如确定应用层协议。
- 客户端进行证书验证,发送其证书、验证结果、Finshed报文至服务器端,此步骤主要目的为对客户端进行认证并完成密钥确认。
- 客户端与服务器使用协商好的共享密钥对应用数据进行加密传输。
TLS 1.3握手协议不再支持静态RSA密钥交换,需要使用具有前向安全性的DH密钥协商协议,但仅需一次交互即可完成握手。
此外,TLS 1.3与前版本比较有以下差异:
- 引入了PSK(共享密钥)协商机制并支持在握手中的应用数据传输及零往返时间(0-RTT),减少交互轮数,高效建立连接。但零往返时间将导致有过交互记录的客户端及服务器记住彼此,忽略安全检查,使用之前的密钥开展即时通信,可能带来安全隐患。
- 摒弃了3-DES、RC4及AES-CBC等加密方案,废弃了SHA1、MD5等Hash算法,提高连接安全性。
- ServerHello后的握手消息均进行加密传输,减少空口传输可见明文。
- 禁止加密报文的压缩及收发双方的重协商,防止降级攻击,攻击者无法通过使用旧版本协议攻击已知漏洞。
- 摒弃DSA证书的使用。
以上更新有效提高了TLS协议的安全性及连接效率,目前Chrome和Firefox等主流浏览器已支持TLS 1.3协议。
「 2. IPSEC 」
1)IPSec协议简介
IPSec协议在IPv6的制定过程中产生,用于提供IP层的安全。鉴于IPv4的应用仍然很广泛,IPSec也支持IPv4。IPSec协议由AH协议和ESP协议提供了两种工作模式,如图5所示。这AH协议和ESP协议可以组合使用也可以单独使用。IPSec的功能和模式如表1所示。
图5 IPSec协议的构成
AH、ESP或AH+ESP既可以在隧道模式中使用,又可以在传输模式中使用。隧道模式在IP子网之间建立一个安全通道,允许每个子网中的所有主机用户访问对方子网中的所有服务和主机。传输模式在两个主机之间以端对端的方法提供安全通道,并且在整个通信路径的建立和数据的传递过程中采用了身份认证、数据保密性和数据完整性等安全保护措施。
表1 IPSec的功能和模式
功能/模式 | 认证首部(AH) | 封装安全负荷(ESP) | ESP+AH |
访问控制 | √ | √ | √ |
认证 | √ | × | √ |
消息完整性 | √ | × | √ |
重放保护 | √ | √ | √ |
保密性 | × | √ | √ |
2)IPSec协议工作原理
IPSec通过查询安全策略数据库(security policy database,SPD)决定如何对接收到的IP数据包进行处理。IPSec对数据包的处理包括进行加密和认证,以保证在公用网络上传输数据的机密性、认证性和完整性。
IPSec无论是对数据包进行加密还是认证,均有两种工作模式:传输模式和隧道模式。
(1)传输模式。采用传输模式时,IPSec只对IP数据包的净荷进行加密或认证。此时,封装数据包继续使用原IP头部,只对IP头部的部分域进行修改,而IPSec协议头部插入到原IP头部和传输层头部之间。IPSec传输模式如图4-16所示。
(a)
(b)
图6 传输模式封装示意图
(a)ESP封装;(b)AH封装
(2)隧道模式。采用隧道模式时,IPSec对整个IP数据包进行加密或认证。此时需要产生一个新的IP头,IPSec头被放在新产生的IP头和原IP数据包之间,从而组成一个新的IP头。IPSec隧道模式如图4-17所示。
(a)
(b)
图7 隧道模式封装示意图
(a)ESP封装;(b)AH封装
「 3. TLS及IPSEC的对比 」
远程客户采用TLS协议的VPN访问内部网中的一些基于Web的应用,而IPSec在为企业高级用户提供远程访问及为企业提供LAN-to-LAN隧道连接方面具有绝对的优势。普遍的共识是典型TLS VPN适合普通员工远程访问基于Web的应用,IPSec VPN及TLS VPN用于智能制造信息网络中不同的领域,不可互相取代。
TLS VPN及IPSec VPN的性能比较见表2。
表2 TLS VPN与IPSec VPN比较
功能/性能 | TLS VPN | IPSec VPN |
身份验证 | 单向身份验证 双向身份验证 数字证书 | 双向身份验证 数字证书 |
加密 | 强加密 基于Web浏览器 | 强加密 依靠IPSEC网关 |
全程安全性 | 端到端安全 从客户端到资源端全程加密 | 网络边缘到客户端 仅对从客户到VPN网关之间通道加密 |
可访问性 | 适用于任何时间、任何地点访问 | 限制于已经定义好受控用户范围内访问 |
费用/花销 | 低(无需附加客户端软件) | 高(需要管理客户端软件) |