IPSec(互联网协议安全)是一个安全网络协议套件,用于保护互联网或公共网络传输的数据。IETF在 1990 年代中期开发了 IPSec 协议,它通过 IP网络数据包的身份验证和加密来提供 IP 层的安全性。
IPSec简介
IPSec 可为通信两端设备提供安全通道,比如用于两个路由器之间以创建点到点 VPN,以及在防火墙和 Windows 主机之间用于远程访问 VPN等。IPSec可以实现以下四项功能:
- 数据机密性:IPSec发送方将包加密后再通过网络发送,可以保证在传输过程中,即使数据包遭截取,信息也无法被读取。
- 数据完整性:IPSec可以验证IPSec发送方发送过来的数据包,以确保数据传输时没有被改变。若数据包遭篡改导致检查不相符,将会被丢弃。
- 数据认证:IPSec接受方能够鉴别IPSec包的发送起源,此服务依赖数据的完整性。
- 防重放:确保每个IP包的唯一性,保证信息万一被截取复制后不能再被重新利用,不能重新传输回目的地址。该特性可以防止攻击者截取破译信息后,再用相同的信息包获取非法访问权。
IPSec 不是一个协议,而是一套协议,以下构成了 IPSec 套件:
AH协议
AH(Authentication Header)指一段报文认证代码,确保数据包来自受信任的发送方,且数据没有被篡改,就像日常生活中的外卖封条一样。在发送前,发送方会用一个加密密钥算出AH,接收方用同一或另一密钥对之进行验证。然而,AH并不加密所保护的数据报,无法向攻击者隐藏数据。
ESP协议
ESP(Encapsulating Security Payload)向需要保密的数据包添加自己的标头和尾部,在加密完成后再封装到一个新的IP包中。ESP还向数据报头添加一个序列号,以便接收主机可以确定它没有收到重复的数据包。
SA协议
安全关联(SA)是指用于协商加密密钥和算法的一些协议,提供AH、ESP操作所需的参数。最常见的 SA 协议之一是互联网密钥交换 (IKE),协商将在会话过程中使用的加密密钥和算法。
IPSec 是如何工作的?
IPSec 的工作方式涉及五个关键步骤,如下:
- 主机识别:主机识别数据包是否需要保护,使用 IPSec 进行传输时,这些数据包流量会自己触发安全策略。主机还会检查传入的数据包是否正确加密。
- IKE 阶段 1:主机使用 IPSec 协商将用于安全通道的策略集,双方验证完成后,在它们之间建立一个安全通道,用于协商 IPSec 电路加密或验证通过它发送的数据的方式。
- IKE 阶段 2:通过安全通道进行,在该通道中,两台主机协商在会话中使用的加密算法类型,主机还同意并交换双方计划用于进出流量的加密和解密密钥。
- IPSec 传输:通过新创建的 IPSec 加密隧道交换数据,之前设置的 IPSec SA 用于加密和解密数据包。
- IPSec 终止:当主机之间的会话超时或通信完成时,通信双方之间的隧道在空闲时间达到一定值后会自动删除。
IPSec 模式
IPSec 有两种不同的运行方式:隧道模式和传输模式。两者之间的区别在于 IPSec 如何处理数据包报头。 在隧道模式下加密和验证整个 IP数据包(包括 IP 标头和有效负载),并附加一个新的报头,如下图所示。通常,隧道模式应用在两个安全网关之间的通讯。
隧道模式 在传输模式下,IPSec 仅加密(或验证)数据包的有效负载,但或多或少地保留现有的数据报头数据。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯。
IPSec传输模式和隧道模式的区别在于:
- 从安全性来讲,隧道模式优于传输模式。它可以完全对原始IP数据包进行验证和加密。隧道模式下可以隐藏内部IP地址、协议类型和端口。
- 从性能来讲,隧道模式因为有一个额外的IP头,所以它将比传输模式占用更多带宽。
- 从场景来讲,传输模式主要应用于两台主机或一台主机和一台VPN网关之间通信;隧道模式主要应用于两台VPN网关之间或一台主机与一台VPN网关之间的通信。
IPSec 如何在 VPN 中使用?
VPN本质上是在公共网络上实现的专用网络。VPN 通常用于企业,使员工能够远程访问其公司网络。按照VPN协议分类,常见的VPN种类有:IPSec、SSL、GRE、PPTP和L2TP等。其中IPSec是通用性较强的一种VPN技术,适用于多种网络互访的场景。 IPSec 通常用于保护 VPN的安全。VPN在用户的计算机和VPN服务器之间创建了一个专用网络,而IPSec协议实现了一个安全的网络,保护VPN数据不受外部访问。
通过IPSec VPN可以在主机和主机之间、主机和网络安全网关之间或网络安全网关(如路由器、防火墙)之间建立安全的隧道连接。其协议主要工作在IP层,在IP层对数据包进行加密和验证。可以使用两种 IPSec 模式设置 VPN:隧道模式和传输模式。
IPSec VPN与SSL VPN
SSL VPN是采用SSL/TLS协议来实现远程接入的一种轻量级VPN技术,包括服务器认证、客户认证、SSL链路上的数据完整性和SSL链路上的数据保密性。SSL VPN提供安全、可代理连接,只有经认证的用户才能对资源进行访问。SSL VPN能对加密隧道进行细分,从而使得终端用户能够同时接入Internet和访问内部企业网资源,也就是说它具备可控功能。
IPSec VPN和SSL VPN 都可以实现企业级安全远程访问,但它们以不同的方式提供。IPSec工作在网络层,即把原始数据包网络层及以上的内容进行封装;SSL VPN工作在传输层,封装的是应用信息。
IPSec和SSL的具体区别:
自1998年正式颁布以来,IPSec经过了二十多年的发展,其设计初衷是在网络层建立一套通用的安全机制,保护所有IP网络通信的安全。相比位于传输层和应用层的安全协议,IPSec可以提供较为广泛和通用的安全保护。由于位于网络层,IPSec对上层协议是透明的,不需要修改上层协议就可以使用。但IPSec也存在着一定的限制,在某些情况下,其不可以进行直接的端到端通信(即传输模式)。另外,IPSec配置复杂性较高,相比其他 VPN 协议要求更高。