【IPSec】互联网安全协议
背景
为何需要IPsec
在 TCP/IP 协议栈中,也就是 OSI 协议栈当中的第三、四、五层中需要增加一些安全性
在 TCP/IP 中,把安全性置于何处
假设把安全控制放在应用层上或者说第五层上,就可以有各种各样的安全性质:
比如SSH或SFTP这样的安全协议:是在应用层工作的,能保证某一个应用是绝对安全的,是经过加密的,并且有一定的用户登录认证的过程
如果想要保证整个应用层都是安全的,可以在TCP层使用一个SSL协议或TLS协议,这Protocol就可以保证任何TCP的交互都经过这个SSL层的加密
在 IP 上的更多特定安全性问题是什么?
根本问题:网络不是(并且也可能永远不会)完全安全的。
在 IP 上的特定安全性问题:
没有数据完整性或保密性,也没有用户认证来证明发送方是发送方本人接收方是接收方本人
最主要的是IP层跟我们之间的那些层,不同的地方是所有的互联网的交互它们都是基于IP的,IP本身的认证就很重要,也就是如何对抗源欺骗的问题或者是源IP地址欺骗的问题。源欺骗 – 通过创建包含假 IP 地址的 IP 包来隐藏 IP 地址,以试图冒充其他连接
像SSH或者SFTP,只是针对一个单独的应用程序去进行加密和解密,完全没有办法覆盖到IP这一层,甚至于像TLS跟SSL,虽然能保证协议的两端的这两个用户,他们声称是它们的用户,但是最大的问题是没法防御一个叫做重放数据包的问题
重放数据包 – 比如,Alice 授权将一笔资金( 100 万美元)从她的账户转到Bob 的账户。– Eve 复制了这条报文,并在稍后的一段时间里重放了这条报文这是一种攻击的发生,哪怕是在TCP层和UDP层使用了SSL这样的加密协议也没办法防御重放数据包的攻击,如果你是仅在应用程序层增加了安全防护,那连源欺骗也没办法改变,只要对方截获了你的IP,他就有办法冒充你
我们需要IPSec或者IP安全协议来帮助我们,不光保证我们的数据内容是安全的,也保证数据的发送方和接收方是经过认证的是不会被篡改的
IPSec简介
IPSec(Internet Protocol Security-互联网协议安全)是一个安全网络协议套件,用于保护互联网或公共网络传输的数据。IETF在 1990 年代中期开发了 IPSec 协议,它通过 IP 网络数据包的身份验证和加密来提供 IP 层的安全性。
IPSec 可为通信两端设备提供安全通道,比如用于两个路由器之间以创建点到点 VPN,以及在防火墙和 Windows 主机之间用于远程访问 VPN 等。IPSec可以实现以下4项功能:
- 数据机密性:IPSec发送方将包加密后再通过网络发送,可以保证在传输过程中,即使数据包遭截取,信息也无法被读取。
- 数据完整性:IPSec可以验证IPSec发送方发送过来的数据包,以确保数据传输时没有被改变。若数据包遭篡改导致检查不相符,将会被丢弃。
- 数据认证:IPSec接受方能够鉴别IPSec包的发送起源,此服务依赖数据的完整性。
- 防重放:确保每个IP包的唯一性,保证信息万一被截取复制后不能再被重新利用,不能重新传输回目的地址。该特性可以防止攻击者截取破译信息后,再用相同的信息包获取非法访问权。它通过加密的内容中添加一些序列号包括随机数、时间戳来保证原本已经发送过的数据包不会再次被重新发送
- 比如在每个数据包里面增加一个随机数,下一次同一个包使用同一个随机数的概率就非常低,但如果接收方收到了一个相同随机数的包,就可以认为这个包是假的是受了攻击的,或者加入一个时间戳,但时间戳有的问题就是在极短时间内,如果你两个包的时间戳是一样的,有可能就会造成一些问题,所以常用的还是随机数更常用一点
IPSec 不是一个协议,而是一套协议,以下构成了 IPSec 套件:
AH 协议
AH(Authentication Header-认证头协议)指一段报文认证代码,确保数据包来自受信任的发送方,且数据没有被篡改,就像日常生活中的外卖封条一样。在发送前,发送方会用一个加密密钥算出AH,接收方用同一或另一密钥对之进行验证。然而,AH并不加密所保护的数据报,无法向攻击者隐藏数据。
ESP 协议
ESP(Encapsulating Security Payload-封装安全协议)向需要保密的数据包添加自己的标头和尾部,在加密完成后再封装到一个新的IP包中。ESP还向数据报头添加一个序列号,以便接收主机可以确定它没有收到重复的数据包。
SA 协议
SA(security association-安全关联)是指用于协商加密密钥和算法的一些协议,提供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 协议要求更高。
Reference
https://www.cloudflare.com/zh-cn/learning/network-layer/what-is-IPSec/
https://www.geeksforgeeks.org/ip-security-IPSec/?ref=lbp
https://www.techtarget.com/searchsecurity/definition/IPSec-Internet-Protocol-Security