什么是IPSEC,IPSEC如何完成数据通信安全的工作
什么是IPSEC?
IPSEC代表Internet协议安全性。
要了解这一点,需要一点网络知识。
我们的网络TCP/IP模型是分层工作的。
这意味着有不同的层对数据进行不同的修改。
整个体系结构中的每一层在使网络通信正常工作中都起着重要作用。
每个工作层都有一个特定的分配任务,它将完成工作并将结果移交给下面的层。
其中我将不深入解释网络层。
让我们以一个例子来了解这种分层架构。
第5层应用层:
该层是我们日常应用程序存在的地方。
例如,当FTP客户端从FTP服务器请求数据时,可以说客户端FTP进程与服务器FTP进程直接联系,这是由于服务器和客户端中的应用程序层。
第4层传输层:
传输层是在服务器和客户端之间建立可靠连接的层。
网络的这一层中存在诸如TCP和UDP之类的协议。
因此,让我们以服务器和客户端之间的FTP连接为例。
应用程序层封装了需要发送并移交给传输层的数据。
现在,传输层将添加自己的TCP或者UDP标头以及其他必需的标志。
现在,所得到的东西将移交给下面的层。
第三层:网络层
当带有所有TCP详细信息的来自传输层的数据报到达网络层时,它将自己的标头添加到数据报中。
这层对于理解IPSEC技术非常重要。
我们将在一段时间后回到这一点。
因此,当一个数据报(包含应用程序层内容和传输层内容)到达网络层时,它会向其添加IP信息。
添加的信息在下面提到。
- 主机地址(发送数据的主机的IP地址,以及发送数据的机器的IP地址)。简而言之,“ To”和“ FROM”地址以IP地址形式添加到网络层中。该层中的数据称为数据包。
- 数据包的长度,IP协议版本和将发送以完成数据的数据包的数量。
- 用于检测修改和错误的校验和。还有一个称为TTL的值。网络中的TTL是用于指定如果数据包尚未到达所需的目的地(基本上是介于两者之间的路由器和设备的数量)应在何时丢弃的单位。
不要忘记以下事实:上层给出的数据被封装(保留在内部作为有效负载)在ip数据包内。
IPSEC是一种安全机制,旨在保护两方或者两个网络之间的不安全通信。
我们可能会争辩说,已经有可用的安全协议来执行通过加密(例如SSH,SSL等)来保护数据的任务。
实际上,我们这样说是正确的。
但是IPSec与这些类型的安全性完全不同。
如果我们在上面对三个网络层(应用程序,传输和网络)的解释中看到了,我没有提及其中的任何加密机制。
这意味着SSH和其他协议(如SSL)在应用程序层(有时甚至在应用程序层之前,这意味着程序本身)进行加密并提供安全性。
例如,当我们借助GPG发送加密的电子邮件时,整个加密和解密过程都是由不属于网络层体系结构的应用程序完成的。
这使得应用程序程序员或者自己编写应用程序以支持某种形式的加密,或者需要使其与其他形式的安全性(例如SSL)兼容(但应用程序需要该功能)。
想象一下一种技术,无论我们使用哪个应用程序将通过网络发送的所有内容加密到所需的主机,该技术都会将其加密。
由于我们要加密两方之间通过有线进行的完整通信,因此需要在网络的分层体系结构中实现这种技术。
IPSEC是这样的实现,它对整个IP数据包本身进行加密。
不要忘记,任何应用程序层数据(任何应用程序发送的任何数据)已经与传输层添加的数据和标头一起封装在IP数据包中。
因此,如果IP数据包被加密,则所有内容都被加密。
IPSEC的主要功能如下所述。
- IPSEC在加密的帮助下提供了通信的机密性
- IPSEC通过检查数据修改来提供通信的完整性,这是通过消息验证码(MAC)完成的
- IPSEC提供通信双方的身份验证
- IPSEC可以保护IP数据包免受分析,这意味着我们不能仅通过查看数据包就可以确定谁正在与谁通信(说到这时人们会很困惑,我稍后会再讲到这一点)
IPSEC的最常见用途是提供安全的VPN服务(虚拟专用网络)。
这意味着我们可以使用此技术通过Internet本身非常安全地连接到远程网络。
将介绍如何完成此操作。
现在,让我们在加密已经存在的标头和数据之后,了解这个新标头的目的是什么。
当我们配置网关ipsec VPN的网关时,通常使用此隧道操作模式。
让我们通过一个例子来了解其背后的目的。
对于此示例,我们将采用前面显示的相同图表,其中两个内部网络通过ipsec VPN在两个具有公用ip的网关的帮助下连接在一起。
现在,如果客户说例如192.168.0.2要与172.16.200.3通信,则数据包连同来自192.168.0.2的通信数据首先到达网关。
网关具有处于隧道模式的ipsec,该ipsec配置为与另一个网络(也具有公共IP)上的网关连接。
一个从192.168.0.2接收数据包的网关在IPSEC的帮助下首先对标头和数据进行加密,然后添加另一个新的IP标头,该标头包含其自己的ip信息而不是192.168.0.2.
请记住,源自192.168.0.2的原始整个ip数据包连同其标头现在已被完全加密,并添加了一个新的标头,其中包含网关和目标网关的ip信息。
接收到此ip数据包后,另一端的网关将删除第一个标头,并对原始数据包及其标头进行解密,最后将解密后的数据包发送到172.16.200.3.
这样做的主要目的是,即使任何窃听者捕获了之间(在Internet中)的数据包,他也只会知道两个网关之间正在进行通信,并且数据已加密。
他将永远不会知道实际上是在192.168.0.2和172.16.200.3之间发生通信(因为原始数据包在包含网关ip信息的新ip头中进行了加密)。
这对于两个网络中所有主机之间的整个通信都是如此。
IPSec传输模式
IPSec传输模式与隧道模式非常相似,但有两个主要区别。
- 它不会更改原始IP标头
- 而且它不会创建新的IP标头
由于未进行ip标头修改,因此主机到主机通信中最常使用传输模式。
这意味着我们可以在不使用任何IPSec网关的情况下,通过计算机本身与远程主机进行通信。
如果我们还记得的话,我在AH标头部分的开头说过,它为整个数据包(以及数据和标头)提供完整性保护。
让我们看看如何完成完整性保护。
完整性保护是在消息身份验证代码的帮助下完成的。
IPSec使用一种称为MAC的键控哈希算法的技术。
简单的哈希算法仅基于数据创建消息身份验证哈希。
但是键控哈希算法会基于数据和共享密钥(用于加密和解密ipsec数据)生成MAC代码。
如果我们还记得,以前曾说过AH标头将完全维护整个IP标头的完整性,但这是不正确的。
让我们看看为什么它不是真的。
IP标头包含一些本质上非常动态的字段。
这意味着起点处某些标头字段上的值将与目的地获得的最终值有很大不同。
这些动态值包括以下字段。
- TTL值
- 校验和
TTL值是ip标头中的一个非常重要的字段,有助于在Internet上的两方之间成功进行通信。
其中我不会在ip标头中解释TTL,但是在下面的文章中,我确实解释了TTL的实际作用。
TTL值在本质上是非常动态的,而数据包则通过Internet传播,直到到达目的地为止(每一个进入中间的设备都会更改TTL值)。
MAC代码对于我们处理的数据非常独特。
因此,如果我们在传输之前从头处理IP头的MAC哈希值,由于TTL字段中的合法更改,在目的地计算的MAC值将完全不同。
由于这个原因,ipsec在排除本质上是动态的某些IP字段之后,将计算其MAC代码。
因此,它不提供标题的完整完整性保护。
这是在NAT后面配置IPSec变得复杂的主要原因(因为在NAT中,包含源地址和目标地址的ip标头在离开NAT框之前已更改)。
尽管这不是一项不可能的任务,但需要在操作系统级别进行一些调整。
当我们讨论Linux中IPSec的配置时,我们将在本教程的下一部分中讨论NAT之后的IPSec。
在结束AH部分之前,请牢记有关AH标头的一些关键点,如下所述。
- 身份验证标头为数据和标头提供完整性保护(当然,它不包括某些动态标头字段)
- AH标头与NAT一起使用时会涉及一些复杂性
- 与IPSec实施的新标准相比,AH标头有些过时。
- IPSec的最新实现使用称为“封装安全性有效载荷(ESP)”的功能,它既提供身份验证,又提供数据完整性保护。
封装安全有效载荷或者ESP
ESP是IPSec的第二个主要组成部分。
如果我们还记得我之前曾说过,数据加密不是由AH标头完成,而是由ESP完成。
我必须说,在ipsec的初始版本中,ESP仅提供加密部分,而身份验证以及完整性保护则完全由AH标头提供。
但是,ESP的后来发展使其能够执行身份验证,完整性检查以及加密。
由于ESP能够单手执行加密和完整性保护以及身份验证,因此它也可以在与AH标头相似的两种模式下工作。
- 隧道模式
- 运输方式
与AH头类似,在加密原始ip头和有效负载后,隧道模式中的ESP会添加一个新的ip头。
在传输模式下,ESP不会创建新的ip标头,而只是对原始数据有效载荷进行加密。
在这两种模式下,ESP都会在IP数据包中添加一个ESP头字段。
现在让我们讨论加密部分。
ESP使用对称密钥加密,其中相同的密钥用于加密和解密。
ESP将数据划分为较小的块,并使用AES(高级加密标准)算法对其进行加密。
互联网密钥交换协议
IKE是确保整个通信安全的主要部分。
IKE用于讨论安全算法,该算法将用于保护通信安全。
IPSec中可以组合使用不同类型的IKE。
让我们讨论一下,以清楚了解通过加密实现的整个安全性的工作方式
主模式
在主模式下,ipsec通过交换三对消息来建立安全通道。
第一对消息包含以下内容。
- 安全会话中将使用的加密算法。例如,DES,RC5,Blowfish和AES是一些常用的加密算法。
- 要使用的消息认证码算法。例如HMAC-MD5和HMAC-SHA1
- 在此安全会话中将使用的身份验证方法。例如,秘密密钥身份验证,公共密钥身份验证,数字签名等。
- Diffie-Hellman共享一个共享密钥,用于在整个会话中对数据进行加密。
第二对消息用于完成Diffie Hellman密钥交换。
攻击模式
与主模式相比,攻击模式始终用于建立相同的IKE,但消息数较少。
它仅用三个消息而不是在主模式下使用的三个消息对来建立相同的事物。
现在,在结束本文之前,最后,让我们完成在网关到网关结构(类似于本文中显示的图)中以隧道模式建立安全IPSec连接所涉及的步骤。
我们将以前面显示的示意图的相同示例为例,其中两个网络192.168.0.0/24和172.16.200.0/24在两个互连网关的帮助下通过安全ipsec隧道相互通信。
192.168.0.2想要与172.16.200.3通信
步骤1:192.168.0.2创建一个目标地址为172.16.200.3的数据包。
此数据包不是ipsec数据包
步骤2:网络数据包到达192.168.0.0/24的网关
步骤3:192.168.0.0/24的网关将进行网络地址转换,并将源IP地址更改为其自己的公共IP地址
步骤4:在查看数据包时,位于192.168.0.0/24的网关知道该数据包需要通过加密和完整性保护来保护。
步骤5:位于192.168.0.0/24网络的网关将开始与目标网关协商加密和MAC算法以及其他秘密密钥。
这种协商是通过主动模式或者主模式进行的。
步骤6:现在,该数据包被加密,并且新的IP标头作为其隧道模式被添加,并被发送到172.16.200.0/24网络上的网关。
步骤7:在收到此数据包后,位于172.16.200.0/24网络的网关将查看标头以确定关联,并将删除添加标头并解密其余标头和有效负载。
步骤8:最后,未加密的数据包由172.16.200.0/24网络上的网关发送到172.16.200.3的目的地。