IPsec(Internet Protocol Security)是一个协议包,通过对 IP 协议的分组进行加密和认证来保护 IP 协议的网络传输协议族(一些相互关联的协议的集合)。
IPsec(Internet Protocol Security)是一个协议包,通过对 IP 协议的分组进行加密和认证来保护 IP 协议的网络传输协议族(一些相互关联的协议的集合)。
简介
互联网安全协议(英语:Internet Protocol Security,缩写为 IPsec),是一个协议包,通过对 IP 协议的分组进行加密和认证来保护 IP 协议的网络传输协议族(一些相互关联的协议的集合)。
IPsec 主要由以下协议组成:一、认证头(AH),为 IP 数据报提供无连接数据完整性、消息认证以及防重放攻击保护;二、封装安全载荷(ESP),提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性;三、安全关联(SA),提供算法和数据包,提供 AH、ESP 操作所需的参数。
标准现状
IPv6 是 IETF 为 IP 协议分组通信制定的新的因特网标准,IPsec 在 RFC 6434 以前是其中必选的内容,但在 IPv4 中的使用则一直只是可选的。这样做的目的,是为了随着 IPv6 的进一步流行,IPsec 可以得到更为广泛的使用。第一版 IPsec 协议在 RFCs2401-2409 中定义。在 2005 年第二版标准文档发布,新的文档定义在 RFC 4301 和 RFC 4309 中。
设计意图
IPsec 被设计用来提供(1)入口对入口通信安全,在此机制下,分组通信的安全性由单个节点提供给多台机器(甚至可以是整个局域网);(2)端到端分组通信安全,由作为端点的计算机完成安全操作。上述的任意一种模式都可以用来构建虚拟专用网(VPN),而这也是 IPsec 最主要的用途之一。应该注意的是,上述两种操作模式在安全的实现方面有着很大差别。
因特网范围内端到端通信安全的发展比预料的要缓慢,其中部分原因,是因为其不够普遍或者说不被普遍信任。公钥基础设施能够得以形成(DNSSEC 最初就是为此产生的),一部分是因为许多用户不能充分地认清他们的需求及可用的选项,导致其作为内含物强加到卖主的产品中(这也必将得到广泛采用);另一部分可能归因于网络响应的退化(或说预期退化),就像兜售信息的充斥而带来的带宽损失一样。
与其它安全协议的对比
IPsec 协议工作在 OSI 模型的第三层,使其在单独使用时适于保护基于 TCP 或 UDP 的协议(如安全套接子层(SSL)就不能保护 UDP 层的通信流)。这就意味着,与传输层或更高层的协议相比,IPsec 协议必须处理可靠性和分片的问题,这同时也增加了它的复杂性和处理开销。相对而言,SSL/TLS 依靠更高层的 TCP(OSI 的第四层)来管理可靠性和分片。
技术细节
认证头(AH)
认证头(Authentication Header,AH)被用来保证被传输分组的完整性和可靠性。此外,它还保护不受重放攻击。认证头试图保护 IP 数据报的所有字段,那些在传输 IP 分组的过程中要发生变化的字段就只能被排除在外。当认证头使用非对称数字签名算法(如 RSA)时,可以提供不可否认性(RFC 1826)。
认证头分组图示:
01230 1 2 3 4 5 6 70 1 2 3 4 5 6 70 1 2 3 4 5 6 70 1 2 3 4 5 6 7 下一个头载荷长度保留安全参数索引(SPI)串行号认证数据(可变长度)
字段含义:
下一个头:标识被传送数据所属的协议。
载荷长度:认证头包的大小。
保留:为将来的应用保留(目前都置为 0)。
安全参数索引:与 IP 地址一同用来标识安全参数。
串行号:单调递增的数值,用来防止重放攻击。
认证数据:包含了认证当前包所必须的数据。
实现
FreeS/WAN 项目已经开发了一个开源的 GNU/Linux 环境下的 IPsec 实现。且一个基于 KAME 项目的 IPsec 实现已经包含在 NetBSD、FreeBSD 以及 2.6Linux 内核中。从某种程度上说,也是因为这个原因,Free S/WAN 项目的开发在 2004 年 3 月时被中止。Openswan 和 strongSwan 是 Free S/WAN 延续。
至今已有许多 IPsec 协议和 ISAKMP/IKE 协议的实现。它们包括:
NRL IPsec,属于原型的一种
OpenBSD,代码源于 NRL IPsec
Mac OS X,包含了 Kame IPsec 的代码
Cisco IOS
Microsoft Windows
SSH Sentinel(现作为 SafeNet 的一部分)提供了工具包
Solaris
IPsec 相关 RFC 文档
RFC 2401
IP 协议的安全架构
RFC 2402
认证头
RFC 2406
封装安全载荷
RFC 2407
ISAKMP 的 IPsec 解释域(IPsec DoI)
RFC 2408
网络安全关系与密钥管理协议(ISAKMP)
RFC 2409
因特网密钥交换(IKE)
安全结构
IPsec 协议工作在 OSI 模型的第三层,使其在单独使用时适于保护基于 TCP 或 UDP 的协议(如 安全套接子层(SSL)就不能保护 UDP 层的通信流)。这就意味着,与传输层或更高层的协议相比,IPsec 协议必须处理可靠性和分片的问题,这同时也增加了它的复杂性和处理开销。相对而言,SSL/TLS 依靠更高层的 TCP(OSI 的第四层)来管理可靠性和分片。
安全协议
(1)AH(AuthenticationHeader) 协议。
它用来向 IP 通信提供数据完整性和身份验证,同时可以提供抗重播服务。
在 IPv6 中协议采用 AH 后, 因为在主机端设置了一个基于算法独立交换的秘密钥匙, 非法潜入的现象可得到有效防止, 秘密钥匙由客户和服务商共同设置。在传送每个数据包时,IPv6 认证根据这个秘密钥匙和数据包产生一个检验项。在数据接收端重新运行该检验项并进行比较,从而保证了对数据包来源的确认以及数据包不被非法修改。
(2)ESP(EncapsulatedSecurityPayload) 协议。
它提供 IP 层加密保证和验证数据源以对付网络上的监听。因为 AH 虽然可以保护通信免受篡改, 但并不对数据进行变形转换, 数据对于黑客而言仍然是清晰的。为了有效地保证数据传输安全, 在 IPv6 中有另外一个报头 ESP,进一步提供数据保密性并防止篡改。