网络安全 – 网络层
网络层安全控制已频繁用于保护通信,特别是在 Internet 等共享网络上,因为它们可以同时为许多应用程序提供保护而无需修改它们。
在前面的章节中,我们讨论了许多实时安全协议已经为网络安全而发展,以确保隐私、来源认证、消息完整性和不可否认性等安全基本原则。
这些协议中的大多数仍然专注于 OSI 协议堆栈的较高层,以弥补标准 Internet 协议固有的安全性不足。虽然很有价值,但这些方法不能轻易推广到任何应用程序。例如,SSL 是专门为保护 HTTP 或 FTP 等应用程序而开发的。但还有其他几个应用程序也需要安全通信。
这种需求促使人们在 IP 层开发安全解决方案,以便所有较高层的协议都可以利用它。 1992 年,互联网工程任务组 (IETF) 开始定义标准"IPsec"。
在本章中,我们将讨论如何使用这组非常流行的协议 IPsec 在网络层实现安全性。
网络层安全性
为提供网络安全而开发的任何方案都需要在协议堆栈的某个层上实现,如下图所示 −
层 | 通信协议 | 安全协议 |
---|---|---|
应用层 | HTTP FTP SMTP | PGP。 S/MIME、HTTPS |
传输层 | TCP /UDP | SSL、TLS、SSH |
网络层 | IP | 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 层提供安全性。
起源
20 世纪 90 年代初,互联网仅被少数机构使用,主要用于学术目的。但在后来的几十年里,由于网络的扩张以及一些组织将其用于通信和其他目的,互联网的增长呈指数级增长。
随着互联网的大规模发展,再加上 TCP/IP 协议固有的安全弱点,人们需要一种能够在互联网上提供网络安全的技术。 1994 年,互联网架构委员会 (IAB) 发布了一份题为"互联网架构中的安全性"的报告。该报告确定了安全机制的关键领域。
IAB 将身份验证和加密作为下一代 IP IPv6 中的基本安全功能。幸运的是,这些安全功能的定义使其既可以在当前的 IPv4 中实现,也可以在未来的 IPv6 中实现。
安全框架 IPsec 已在多个"征求意见稿"(RFC) 中定义。一些 RFC 指定了协议的某些部分,而另一些 RFC 则将解决方案作为一个整体来解决。
IPsec 中的操作
IPsec 套件可以被视为具有两个单独的操作,当它们一起执行时,可以提供一套完整的安全服务。这两个操作是 IPsec 通信和互联网密钥交换。
IPsec 通信
它通常与标准 IPsec 功能相关。它涉及封装、加密和散列 IP 数据报以及处理所有数据包过程。
它负责根据通信方之间建立的可用安全关联 (SA) 来管理通信。
它使用安全协议,例如身份验证标头 (AH) 和封装 SP (ESP)。
IPsec 通信不涉及密钥的创建或管理。
IPsec 通信操作本身通常称为 IPsec。
Internet 密钥交换 (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 | 序列号计数器 用于出站通信。这是 AH 或 ESP 标头中提供的 32 位序列号。 |
2 | 序列号溢出计数器 设置选项标志以防止利用特定 SA 进行进一步通信 |
3 | 32 位防重放窗口 用于确定传入 AH 或 ESP 数据包是否为重放 |
4 | SA 的生命周期 SA 保持活动的时间 |
5 | 算法 - AH 用于 AH 和相关密钥 |
6 | 算法 - ESP 身份验证 用于 ESP 标头的身份验证部分 |
7 | 算法 - ESP 加密 用于 ESP 及其相关密钥信息的加密 |
8 | IPsec 操作模式 传输或隧道模式 |
9 | 路径 MTU (PMTU) 任何观察到的路径最大传输单元(以避免碎片化) |
SAD 中的所有 SA 条目都由三个 SA 参数索引:目标 IP 地址、安全协议标识符和 SPI。
安全策略数据库
SPD 用于处理传出的数据包。它有助于决定应该使用哪些 SAD 条目。如果不存在 SAD 条目,则使用 SPD 创建新条目。
任何 SPD 条目都包含 −
指向 SAD 中保存的活动 SA 的指针。
选择器字段 – 来自上层的传入数据包中的字段,用于决定 IPsec 的应用。选择器可以包括源和目标地址、相关端口号、应用程序 ID、协议等。
传出的 IP 数据报从 SPD 条目转到特定的 SA,以获取编码参数。传入的 IPsec 数据报使用 SPI/DEST IP/Protocol 三元组直接到达正确的 SA,并从那里提取关联的 SAD 条目。
SPD 还可以指定应绕过 IPsec 的流量。 SPD 可以被视为数据包过滤器,其中决定的操作是激活 SA 进程。
摘要
IPsec 是一套用于保护网络连接的协议。它是一种相当复杂的机制,因为它不是直接定义特定的加密算法和身份验证功能,而是提供了一个框架,允许实现通信两端都同意的任何内容。
身份验证标头 (AH) 和封装安全有效负载 (ESP) 是 IPsec 使用的两种主要通信协议。虽然 AH 仅进行身份验证,但 ESP 可以加密和验证通过连接传输的数据。
传输模式在两个端点之间提供安全连接,而无需更改 IP 标头。隧道模式封装整个有效负载 IP 数据包。它添加了新的 IP 标头。后者用于形成传统的 VPN,因为它在不受信任的互联网上提供了虚拟安全隧道。
设置 IPsec 连接涉及各种加密选择。身份验证通常建立在加密哈希(例如 MD5 或 SHA-1)之上。加密算法通常包括 DES、3DES、Blowfish 和 AES。其他算法也是可能的。
通信的两个端点都需要知道哈希或加密中使用的秘密值。手动密钥要求两端手动输入秘密值,大概是通过某种带外机制传达的,而 IKE(Internet 密钥交换)是一种在线执行此操作的复杂机制。