网络安全——网络层


网络层安全控制经常用于保护通信安全,特别是在 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 套件可被视为具有两个独立的操作,当同时执行时,可提供一套完整的安全服务。这两个操作是IP​​sec通信和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 中的这些协议而设计的。

通信实体之间的安全关联由所使用的安全协议建立和维护。

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的应用。

IP数据包传输1
  • 在隧道模式下,上述过程如下图所示。

IP数据包传输2

封装安全协议 (ESP)

ESP 提供保密性、完整性、源认证和可选的抗重放等安全服务。提供的服务集取决于建立安全关联 (SA) 时选择的选项。

在 ESP 中,用于加密和生成验证码的算法由用于创建 SA 的属性决定。

ESP的流程如下。前两个步骤与上述 AH 的过程类似。

  • 一旦确定涉及ESP,就计算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 示例。

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(互联网密钥交换)是一种在线执行此操作的复杂机制。