网络安全 – 网络层
网络安全 – 网络层
网络层安全控制经常用于保护通信安全,尤其是在 Internet 等共享网络上,因为它们可以同时为许多应用程序提供保护而无需修改它们。
在前面的章节中,我们讨论了许多实时安全协议已经为网络安全而发展,以确保安全的基本原则,例如隐私、原始身份验证、消息完整性和不可否认性。
这些协议中的大多数仍然专注于 OSI 协议栈的更高层,以弥补标准 Internet 协议中固有的安全性不足。尽管很有价值,但这些方法不能轻易推广用于任何应用程序。例如,SSL 是专门为保护 HTTP 或 FTP 等应用程序而开发的。但是还有其他几个应用程序也需要安全通信。
这种需求催生了在 IP 层开发安全解决方案,以便所有更高层协议都可以利用它。1992 年,互联网工程任务组 (IETF) 开始定义标准“IPsec”。
在本章中,我们将讨论如何使用这套非常流行的 IPsec 协议在网络层实现安全性。
网络层安全
任何为提供网络安全而开发的方案都需要在协议栈的某个层实现,如下图所示 –
Layer | 通讯协议 | 安全协议 |
---|---|---|
Application Layer | HTTP FTP SMTP | PGP。S/MIME、HTTPS |
Transport Layer | TCP/UDP | SSL、TLS、SSH |
Network Layer | 知识产权 | IPsec |
为确保网络层安全而开发的流行框架是 Internet 协议安全 (IPsec)。
IPsec的特点
-
IPsec 并非设计为仅与作为传输协议的 TCP 一起使用。它适用于 UDP 以及 IP 之上的任何其他协议,例如 ICMP、OSPF 等。
-
IPsec 保护呈现给 IP 层的整个数据包,包括更高层的报头。
-
由于携带端口号的高层报头被隐藏,流量分析更加困难。
-
IPsec 从一个网络实体到另一个网络实体,而不是从应用程序进程到应用程序进程。因此,无需更改单个用户计算机/应用程序即可采用安全性。
-
虽然 IPsec 广泛用于提供网络实体之间的安全通信,但它也可以提供主机到主机的安全性。
-
IPsec 最常见的用途是在两个位置之间(网关到网关)或在远程用户和企业网络之间(主机到网关)提供虚拟专用网络 (VPN)。
安全功能
IPsec 提供的重要安全功能如下 –
-
保密
-
使通信节点能够加密消息。
-
防止第三方窃听。
-
-
原始身份验证和数据完整性。
-
确保收到的数据包实际上是由在数据包标头中标识为源的一方发送的。
-
确认数据包未被更改或以其他方式。
-
-
密钥管理。
-
允许安全交换密钥。
-
防止某些类型的安全攻击,例如重放攻击。
-
虚拟专用网
理想情况下,任何机构都希望拥有自己的专用通信网络以确保安全。然而,在地理上分散的区域建立和维护这样的专用网络可能非常昂贵。它需要管理复杂的通信链路、路由器、DNS 等基础设施。
IPsec 提供了一种简单的机制来为此类机构实施虚拟专用网络 (VPN)。VPN 技术通过在进入公共互联网之前对流量进行加密并将其与其他流量在逻辑上分开,从而允许机构的办公室间流量通过公共互联网发送。VPN的简化工作如下图所示 –
IPsec 概述
IPsec 是用于在 IP 层提供安全性的框架/协议套件。
起源
在 1990 年代初期,很少有机构使用互联网,主要用于学术目的。但在后来的几十年里,由于网络的扩展以及一些组织将其用于通信和其他目的,互联网的增长呈指数级增长。
随着 Internet 的大规模增长,加上 TCP/IP 协议固有的安全弱点,人们感到需要一种能够在 Internet 上提供网络安全的技术。1994 年,互联网架构委员会 (IAB) 发布了一份题为“互联网架构中的安全性”的报告。它确定了安全机制的关键领域。
IAB 将身份验证和加密作为下一代 IP IPv6 的基本安全功能。幸运的是,这些安全功能的定义使得它们可以通过当前的 IPv4 和未来的 IPv6 实现。
安全框架 IPsec 已在多个“征求意见稿”(RFC) 中进行了定义。一些 RFC 指定了协议的某些部分,而另一些则将解决方案作为一个整体来解决。
IPsec 内的操作
IPsec 套件可以被认为具有两个独立的操作,当同时执行时,提供了一套完整的安全服务。这两个操作是 IPsec 通信和 Internet 密钥交换。
-
IPsec通信
-
它通常与标准 IPsec 功能相关联。它涉及封装、加密和散列 IP 数据报以及处理所有数据包过程。
-
它负责根据通信双方之间建立的可用安全关联 (SA) 来管理通信。
-
它使用安全协议,例如身份验证头 (AH) 和封装的 SP (ESP)。
-
IPsec 通信不涉及密钥的创建或其管理。
-
IPsec 通信操作本身通常称为 IPsec。
-
-
互联网密钥交换 (IKE)
-
IKE 是用于 IPsec 的自动密钥管理协议。
-
从技术上讲,密钥管理对于 IPsec 通信不是必需的,并且可以手动管理密钥。然而,手动密钥管理对于大型网络是不可取的。
-
IKE 负责为 IPsec 创建密钥并在密钥建立过程中提供身份验证。虽然 IPsec 可用于任何其他密钥管理协议,但默认使用 IKE。
-
IKE 定义了两个协议(Oakley 和 SKEME)以与已定义的密钥管理框架 Internet 安全关联密钥管理协议 (ISAKMP) 一起使用。
-
ISAKMP 不是 IPsec 特定的,但提供了为任何协议创建 SA 的框架。
-
本章主要讨论用于实现安全性的 IPsec 通信和相关协议。
IPsec 通信模式
IPsec 通信有两种运行模式;运输和隧道模式。根据所需的通信类型,这些模式可以组合使用或单独使用。
运输方式
-
IPsec 不封装从上层接收的数据包。
-
保留原始IP头,根据上层协议设置的原始属性转发数据。
-
下图显示了协议栈中的数据流。
-
传输方式的局限性在于不能提供网关服务。它保留用于点对点通信,如下图所示。
隧道模式
-
这种 IPsec 模式与其他安全服务一起提供封装服务。
-
在隧道模式操作中,来自上层的整个数据包在应用安全协议之前被封装。添加了新的 IP 标头。
-
下图显示了协议栈中的数据流。
-
隧道模式通常与网关活动相关联。封装提供了通过单个网关发送多个会话的能力。
-
典型的隧道模式通信如下图所示。
-
就端点而言,它们具有直接的传输层连接。从一个系统转发到网关的数据报被封装,然后转发到远程网关。远程关联网关解封装数据并将其转发到内部网络上的目标端点。
-
使用 IPsec,也可以在网关和单个终端系统之间建立隧道模式。
IPsec 协议
IPsec 使用安全协议来提供所需的安全服务。这些协议是 IPsec 操作的核心,其他一切都旨在支持 IPsec 中的这些协议。
通信实体之间的安全关联由所使用的安全协议建立和维护。
IPsec 定义了两种安全协议——身份验证头 (AH) 和封装安全负载 (ESP)。
认证头
AH 协议提供数据完整性和来源认证服务。它可以选择满足消息重放阻力。但是,它不提供任何形式的机密性。
AH 是一种协议,它通过添加报头来对数据报的全部或部分内容进行认证。报头是根据数据报中的值计算的。数据报的哪些部分用于计算,以及将报头放置在何处,取决于模式合作(隧道或传输)。
AH 协议的操作出奇的简单。它可以被认为类似于用于计算校验和或执行 CRC 检查以进行错误检测的算法。
AH 背后的概念是相同的,只是 AH 使用特殊的散列算法和只有通信方知道的秘密密钥,而不是使用简单的算法。两个设备之间的安全关联被建立来指定这些细节。
AH的过程经历了以下几个阶段。
-
当从上层协议栈接收到 IP 数据包时,IPsec 根据数据包中的可用信息确定关联的安全关联 (SA);例如,IP 地址(源和目标)。
-
从SA中,一旦确定安全协议是AH,就计算AH头的参数。AH 标头由以下参数组成 –
-
头域指定了跟在 AH 头之后的数据包的协议。序列参数索引(SPI)是从通信双方之间存在的SA中获得的。
-
计算并插入序列号。这些数字为 AH 提供了抵抗重放攻击的可选能力。
-
认证数据的计算方式因通信模式而异。
-
在传输模式下,验证数据的计算和最终 IP 数据包的组装如下图所示。在原来的IP 头中,只将协议号更改为51 来表示AH 的应用。
-
在隧道模式下,上述过程如下图所示。
封装安全协议 (ESP)
ESP 提供安全服务,例如机密性、完整性、原始身份验证和可选的重放阻力。提供的服务集取决于在建立安全关联 (SA) 时选择的选项。
在 ESP 中,用于加密和生成验证器的算法由用于创建 SA 的属性决定。
ESP的过程如下。前两个步骤类似于上述 AH 的过程。
-
一旦确定涉及ESP,就计算ESP数据包的字段。ESP 字段排列如下图所示。
-
传输模式下的加密和认证过程如下图所示。
-
在隧道模式的情况下,加密和认证过程如下图所示。
尽管身份验证和机密性是 ESP 提供的主要服务,但两者都是可选的。从技术上讲,我们可以使用 NULL 加密而无需身份验证。但是,在实践中,必须实现两者之一才能有效地使用 ESP。
基本概念是在需要身份验证和加密时使用 ESP,在需要不加密的扩展身份验证时使用 AH。
IPsec 中的安全关联
安全关联 (SA) 是 IPsec 通信的基础。SA的特点是 –
-
在发送数据之前,发送实体和接收实体之间会建立一个虚拟连接,称为“安全关联(SA)”。
-
IPsec 提供了许多用于执行网络加密和身份验证的选项。每个 IPsec 连接都可以提供加密、完整性、真实性或所有这三种服务。确定安全服务后,两个 IPsec 对等实体必须准确确定要使用的算法(例如,用于加密的 DES 或 3DES;用于完整性的 MD5 或 SHA-1)。确定算法后,两个设备必须共享会话密钥。
-
SA 是一组上述通信参数,它提供了两个或多个系统之间的关系,以建立 IPsec 会话。
-
SA 本质上很简单,因此双向通信需要两个 SA。
-
SA 由安全协议标头中存在的安全参数索引 (SPI) 编号标识。
-
发送实体和接收实体都维护有关 SA 的状态信息。它类似于也维护状态信息的 TCP 端点。IPsec 与 TCP 一样是面向连接的。
SA参数
任何 SA 都由以下三个参数唯一标识 –
-
安全参数索引 (SPI)。
-
它是分配给 SA 的 32 位值。它用于区分在相同目的地终止并使用相同 IPsec 协议的不同 SA。
-
IPsec 的每个数据包都带有一个包含 SPI 字段的标头。提供 SPI 以将传入数据包映射到 SA。
-
SPI 是发送方生成的随机数,用于向接收方标识 SA。
-
-
目标 IP 地址– 它可以是终端路由器的 IP 地址。
-
安全协议标识符– 指示关联是 AH 还是 ESP SA。
下图显示了参与 IPsec 通信的两个路由器之间的 SA 示例。
安全管理数据库
在 IPsec 中,有两个数据库控制 IPsec 数据报的处理。一个是安全关联数据库 (SAD),另一个是安全策略数据库 (SPD)。每个使用 IPsec 的通信端点都应该有一个逻辑上独立的 SAD 和 SPD。
安全关联数据库
在 IPsec 通信中,端点在安全关联数据库 (SAD) 中保存 SA 状态。SAD 数据库中的每个 SA 条目包含九个参数,如下表所示 –
Sr.No. | 参数及说明 |
---|---|
1 |
Sequence Number Counter 用于对外通信。这是 AH 或 ESP 标头中提供的 32 位序列号。 |
2 |
Sequence Number Overflow Counter 设置选项标志以防止使用特定 SA 进行进一步通信 |
3 |
32-bit anti-replay window 用于确定入站 AH 或 ESP 数据包是否为重播 |
4 |
Lifetime of the SA SA 保持活动状态的时间 |
5 |
Algorithm – AH 在AH和关联键中使用 |
6 |
Algorithm – ESP Auth 用于 ESP 标头的身份验证部分 |
7 |
Algorithm – ESP Encryption 用于 ESP 及其相关密钥信息的加密 |
8 |
IPsec mode of operation 传输或隧道模式 |
9 |
Path MTU(PMTU) 任何观察到的路径最大传输单元(以避免碎片) |
SAD 中的所有 SA 条目都由三个 SA 参数索引:目标 IP 地址、安全协议标识符和 SPI。
安全策略数据库
SPD 用于处理传出数据包。它有助于决定应该使用哪些 SAD 条目。如果不存在 SAD 条目,则使用 SPD 创建新条目。
任何 SPD 条目都将包含 –
-
指向保存在 SAD 中的活动 SA 的指针。
-
选择器字段——来自上层的传入数据包中的字段,用于决定 IPsec 的应用。选择器可以包括源地址和目标地址、相关的端口号、应用程序 ID、协议等。
传出 IP 数据报从 SPD 条目到特定的 SA,以获取编码参数。传入的 IPsec 数据报使用 SPI/DEST IP/协议三元组直接到达正确的 SA,并从那里提取相关的 SAD 条目。
SPD 还可以指定应该绕过 IPsec 的流量。SPD 可以被认为是一个数据包过滤器,其中决定的动作是 SA 进程的激活。
概括
IPsec 是一套用于保护网络连接的协议。它是一种相当复杂的机制,因为它没有直接定义特定的加密算法和身份验证功能,而是提供了一个框架,允许实现通信双方同意的任何内容。
认证头 (AH) 和封装安全有效载荷 (ESP) 是 IPsec 使用的两种主要通信协议。AH 仅进行身份验证,而 ESP 可以对通过连接传输的数据进行加密和身份验证。
传输模式在不更改 IP 标头的情况下提供两个端点之间的安全连接。隧道模式封装了整个有效载荷 IP 数据包。它添加了新的 IP 标头。后者用于形成传统 VPN,因为它提供跨不受信任的 Internet 的虚拟安全隧道。
设置 IPsec 连接涉及各种加密选择。身份验证通常建立在诸如 MD5 或 SHA-1 之类的加密散列之上。常见的加密算法有 DES、3DES、Blowfish 和 AES。其他算法也是可能的。
两个通信端点都需要知道散列或加密中使用的秘密值。手动密钥需要在两端手动输入秘密值,大概是由某种带外机制传送的,而 IKE(互联网密钥交换)是一种在线执行此操作的复杂机制。