网络安全——网络层
网络层安全控制经常用于保护通信安全,特别是在 Internet 等共享网络上,因为它们可以同时为许多应用程序提供保护,而无需修改它们。
在前面的章节中,我们讨论了许多实时安全协议是为了网络安全而发展的,以确保隐私、原始身份验证、消息完整性和不可否认性等基本安全原则。
这些协议中的大多数仍然集中在 OSI 协议栈的较高层,以弥补标准 Internet 协议中固有的安全性缺陷。尽管这些方法很有价值,但不能轻易推广到任何应用程序。例如,SSL 是专门为保护 HTTP 或 FTP 等应用程序而开发的。但还有其他一些应用程序也需要安全通信。
这种需求催生了在 IP 层开发安全解决方案,以便所有高层协议都可以利用它。1992 年,互联网工程任务组 (IETF) 开始定义标准“IPsec”。
在本章中,我们将讨论如何使用这套非常流行的 IPsec 协议在网络层实现安全性。
网络层安全
为提供网络安全而开发的任何方案都需要在协议栈的某个层实现,如下图所示 -
层 | 通讯协议 | 安全协议 |
---|---|---|
应用层 | HTTP FTP SMTP | 前列腺癌。S/MIME、HTTPS |
传输层 | TCP/UDP | SSL、TLS、SSH |
网络层 | 知识产权 | 网络安全协议 |
为确保网络层安全而开发的流行框架是互联网协议安全(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通信和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 条目包含九个参数,如下表所示 -
先生。 | 参数及说明 |
---|---|
1 | 序列号计数器 用于出站通信。这是 AH 或 ESP 标头中提供的 32 位序列号。 |
2 | 序列号溢出计数器 设置选项标志以防止利用特定 SA 进行进一步通信 |
3 | 32位防重放窗口 用于确定入站 AH 或 ESP 数据包是否是重播 |
4 | SA 的生命周期 SA 保持活动状态所需的时间 |
5 | 算法-AH 用于AH和相关密钥 |
6 | 算法 - ESP Auth 用于 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/协议三元组直接到达正确的 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(互联网密钥交换)是一种在线执行此操作的复杂机制。