IPsec

维基百科,自由的百科全书
跳转至: 导航搜索

網際網路安全協定英语Internet Protocol Security,縮寫為 IPsec),是通过对IP协议(互联网协议)的分组进行加密认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。

IPsec由两大部分组成:(1)建立安全分组流的密钥交换协议;(2)保护分组流的协议。前者为網際網路金鑰交換(IKE)协议。后者包括加密分组流的封装安全载荷协议(ESP协议)或认证头协议(AH协议)协议,用于保证数据的机密性、来源可靠性(认证)、无连接的完整性并提供抗重播服务。

标准现状[编辑]

IPv6IETFIP协议分组通信制定的新的因特网标准,IPsec在RFC 6434以前是其中必选的内容[1],但在IPv4中的使用则一直只是可选的。这样做的目的,是为了随着IPv6的进一步流行,IPsec可以得到更为广泛的使用。第一版IPsec协议在RFCs 2401-2409中定义。在2005年第二版标准文档发布,新的文档定义在RFC 4301RFC 4309[2][3]

设计意图[编辑]

IPsec被设计用来提供(1)入口对入口通信安全,在此机制下,分组通信的安全性由单个节点提供给多台机器(甚至可以是整个局域网);(2)端到端分组通信安全,由作为端点的计算机完成安全操作。上述的任意一种模式都可以用来构建虚拟专用网 (VPN),而这也是IPsec最主要的用途之一。应该注意的是,上述两种操作模式在安全的实现方面有着很大差别。

因特网范围内端到端通信安全的发展比预料的要缓慢[來源請求],其中部分原因,是因为其不够普遍或者说不被普遍信任。公钥基础设施能够得以形成(DNSSEC最初就是为此产生的),一部分是因为许多用户不能充分地认清他们的需求及可用的选项,导致其作为内含物强加到卖主的产品中(这也必将得到广泛采用);另一部分可能归因于网络响应的退化(或说预期退化),就像兜售信息的充斥而带来的带宽损失一样。

IPsec与其它互联网安全协议的对比[编辑]

IPsec协议工作在OSI 模型的第三层,使其在单独使用时适于保护基于TCPUDP的协议(如 安全套接子层SSL)就不能保护UDP层的通信流)。这就意味着,与传输层或更高层的协议相比,IPsec协议必须处理可靠性和分片的问题,这同时也增加了它的复杂性和处理开销。相对而言,SSL/TLS依靠更高层的TCP(OSI的第四层)来管理可靠性和分片。

技术细节[编辑]

认证头[编辑]

认证头(AH)被用来保证被传输分组的完整性和可靠性。此外,它还保护不受重放攻击。认证头试图保护IP数据报的所有字段,那些在传输IP分组的过程中要发生变化的字段就只能被排除在外。

认证头分组图示:

0 1 2 3
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
下一个头 载荷长度 保留
安全参数索引(SPI)
序列号

认证数据(可变长度)

字段含义:

下一个头 
标识被传送数据所属的协议。
载荷长度 
认证头包的大小。
保留 
为将来的应用保留(目前都置为0).
安全参数索引 
与IP地址一同用来标识安全参数。
序列号 
单调递增的数值,用来防止重放攻击。
认证数据 
包含了认证当前包所必须的数据。

封装安全载荷 (ESP)[编辑]

封装安全载荷(ESP)协议对分组提供了源可靠性、完整性和保密性的支持。与AH头不同的是,IP分组头部不被包括在内。

ESP分组图示:

0 1 2 3
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
安全参数序列(SPI)
序列号

载荷 *(可变长度)

  填充(0-255 字节)
    填充长度 下一个头

Authentication Data (variable) 认证数据(可变长度)

字段含义:

安全参数索引 
与IP地址一同用来标识安全参数
序列号 
单调递增的数值,用来防止重放攻击。
载荷数据 
实际要传输的数据。
填充 
某些块加密算法用此将数据填充至块的长度。
填充长度 
以位为单位的填充数据的长度。
下一个头 
标识被传送数据所属的协议。
认证数据 
包含了认证当前包所必须的数据。

实现[编辑]

FreeS/WAN项目已经开发了一个开源GNU/Linux环境下的IPsec实现。且一个基于KAME项目的IPsec实现已经包含在NetBSDFreeBSD以及2.6 Linux内核中。从某种程度上说,也是因为这个原因,Free S/WAN项目的开发在2004年3月时被中止。OpenswanstrongSwan是Free S/WAN延续。

至今已有许多IPsec协议和ISAKMPIKE协议的实现。它们包括:

请参阅[编辑]

IPsec相关RFC文档[编辑]

RFC 2401
IP协议的安全架构
RFC 2402
认证头
RFC 2406
封装安全载荷
RFC 2407
ISAKMP的IPsec解释域(IPsec DoI)
RFC 2408
網路安全關聯與金鑰管理協定(ISAKMP)
RFC 2409
因特网密钥交换(IKE)

参考文献[编辑]

  1. ^ RFC 6434, "IPv6 Node Requirements", E. Jankiewicz, J. Loughney, T. Narten (December 2011)
  2. ^ RFC 4301
  3. ^ RFC 4309

外部链接[编辑]