- 网络安全教程
- 网络安全 - 首页
- 网络安全 – 概述
- 网络安全 – 应用层
- 网络安全 – 传输层
- 网络安全 – 网络层
- 网络安全 – 数据链路层
- 网络安全 – 访问控制
- 网络安全 – 防火墙
- 网络安全 – 至关重要
- 零信任安全
- 零信任安全 - 简介
- 零信任安全模型
- 零信任架构
- 网络安全有用资源
- 网络安全 - 快速指南
- 网络安全 - 有用资源
- 网络安全 - 讨论
网络安全 – 网络层
网络层安全控制经常用于保护通信,尤其是在共享网络(如互联网)上,因为它们可以一次性为许多应用程序提供保护,而无需修改这些应用程序。
在前面的章节中,我们讨论了许多为网络安全而发展的实时安全协议,这些协议确保了安全性的基本原则,例如隐私、来源认证、消息完整性和不可否认性。
这些协议大多集中在OSI协议栈的高层,以弥补标准互联网协议固有的安全缺陷。虽然这些方法很有价值,但它们不能轻易地推广到任何应用程序。例如,SSL是专门为保护HTTP或FTP等应用程序而开发的。但还有许多其他应用程序也需要安全的通信。
这种需求催生了在IP层开发安全解决方案的需求,以便所有上层协议都能利用它。1992年,互联网工程任务组(IETF)开始定义一个标准“IPsec”。
在本章中,我们将讨论如何使用这个非常流行的协议集IPsec在网络层实现安全。
网络层安全
任何为提供网络安全而开发的方案都需要在协议栈的某一层实现,如下面的图所示:
层 | 通信协议 | 安全协议 |
---|---|---|
应用层 | HTTP FTP SMTP | PGP、S/MIME、HTTPS |
传输层 | TCP/UDP | SSL、TLS、SSH |
网络层 | IP | IPsec |
为确保网络层安全而开发的流行框架是互联网协议安全(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协议固有的安全弱点,人们感到需要一种能够在互联网上提供网络安全的技术。互联网体系结构委员会(IAB)于1994年发布了一份题为“互联网体系结构中的安全”的报告。该报告确定了安全机制的关键领域。
IAB将身份验证和加密作为IPv6(下一代IP)中必不可少的安全特性。幸运的是,这些安全功能的定义方式使得它们既可以与当前的IPv4一起实现,也可以与未来的IPv6一起实现。
安全框架IPsec已在多份“请求意见”(RFC)中定义。一些RFC指定协议的某些部分,而另一些则解决整个解决方案。
IPsec中的操作
当IPsec套件协同工作时,可以认为它具有两个独立的操作,从而提供一整套安全服务。这两个操作是IPsec通信和互联网密钥交换。
IPsec通信
它通常与标准IPsec功能相关联。它涉及封装、加密和散列IP数据报以及处理所有数据包进程。
它负责根据在通信方之间建立的可用安全关联(SA)管理通信。
它使用诸如身份验证报头(AH)和封装安全负载(ESP)之类的安全协议。
IPsec通信不涉及密钥的创建或管理。
IPsec通信操作本身通常称为IPsec。
互联网密钥交换(IKE)
IKE是用于IPsec的自动密钥管理协议。
从技术上讲,密钥管理对于IPsec通信不是必需的,密钥可以手动管理。但是,对于大型网络来说,手动密钥管理不可取。
IKE负责为IPsec创建密钥,并在密钥建立过程中提供身份验证。尽管IPsec可以用于任何其他密钥管理协议,但默认情况下使用IKE。
IKE定义了两个协议(Oakley和SKEME)与已定义的密钥管理框架互联网安全关联密钥管理协议(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的过程经过以下阶段。
当从上层协议栈接收到IP数据包时,IPsec根据数据包中的可用信息(例如,IP地址(源和目标))确定关联的安全关联(SA)。
从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认证 用于ESP报头的身份验证部分 |
7 | 算法 - ESP加密 用于ESP及其关联密钥信息的加密 |
8 | IPsec操作模式 传输模式或隧道模式 |
9 | 路径MTU(PMTU) 任何观察到的路径最大传输单元(以避免碎片) |
SAD中的所有SA条目都按三个SA参数索引:目标IP地址、安全协议标识符和SPI。
安全策略数据库
SPD用于处理传出数据包。它有助于确定应使用哪些SAD条目。如果不存在SAD条目,则SPD用于创建新的SAD条目。
任何SPD条目都将包含:
指向SAD中保存的活动SA的指针。
选择器字段 – 上层传入数据包中的字段,用于决定IPsec的应用。选择器可以包括源地址和目标地址,如果相关的话,端口号,应用程序ID,协议等。
传出的IP数据报从SPD条目到特定的SA,以获取编码参数。传入的IPsec数据报直接使用SPI/目标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(互联网密钥交换)是一种在线执行此操作的复杂机制。