IPsec

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻

互联网安全协议(英语:Internet Protocol Security,缩写:IPsec)是一个协议包,透过对IP协议分组进行加密认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。

IPsec主要由以下协议组成[1][2]

  1. 认证头(AH),为IP数据报提供无连接数据完整性消息认证以及防重放攻击保护[3][4]
  2. 封装安全载荷(ESP),提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性[5]
  3. 因特网密钥交换(英语: Internet Key Exchange ,简称IKE或IKEv2),为 AH、ESP 操作所需的 安全关联(SA) 提供算法、数据包和密钥参数[6]

标准现状

IPsec 的源始编码是在 IPv4 的环境中于1994年开发, 第一版IPsec协议在RFCs 2401-2409中定义。在2005年第二版标准文档发布,新的文档定义在 RFC 4301 和 RFC 4309 中[7][8]。在 IPv4 中 IPsec 的使用是一个可选项,在 IPv6 RFC 6434 中为必选的内容 [9],这样做的目的,是为了随着 IPv6 的进一步流行,IPsec 可以得到更为广泛的使用。

历史概要

从1920-70年代初开始,美国高级研究项目局赞助了一系列实验性的ARPANET加密设备,起初用于本地ARPANET数据包加密,随后又用于TCP/IP数据包加密。

从1986年到1991年,美国国家安全局在其安全数据网络系统(SDN)计划下赞助了互联网安全协议的开发,包括摩托罗拉在内的各种供应商聚集在一起,于1988年生产了一种网络加密设备,这项工作于1988年由NIST公开发表,其中第3层的安全协议(SP3)演变为ISO标准的网络层安全协议(NLSP)。[10]

从1992年到1995年,有三个研究小组对IP层加密分别进行了独立研究:

  • 1. 1992年,美国海军研究实验室(NRL)开始了Simple Internet Protocol Plus(SIPP)项目来进行IP加密协议的研究。
  • 2. 1993年,哥伦比亚大学SunOS和AT&T贝尔实验室,开始由 JohnIoanndis等人研发实验性软件IP加密协议 (swIPe)。
  • 3. 1993年,在白宫信息高速公路项目的支持下,Trusted Information Systems(TIS)科学家徐崇伟(Wei Xu) 研究和开发了第一代软件 IPSEC 协议,它的编码是在BSD 4.1内核中完成的,支持x86和SUNOS CPU架构,同时开发了硬件安全3DES的加密技术,并为数据加密标准开发了设备驱动程序。到1994年12月,TIS发布了由DARPA赞助的开放源代码的“手铐防火墙”产品,其VPN速度超过T1,首次用 IPSec VPN 实现了美国东西海岸安全链接,也是历史上第一个 IPSec 商用产品。[11]
  • 4. 在美国国防部高级研究计划局(DARPA)资助的研究工作下,1996年,NRL为IPsec开发了IETF标准跟踪规范(rfc1825到rfc1827),它的编码是在BSD 4.4内核中,同时支持x86和SPARC CPU架构[12]

互联网工程任务组(IETF)于1992年成立了IP安全工作组,以规范对 IPsec 的公开协议,1995年工作组成员有 TIS、Cisco、FTP、Checkpoint 等五个企业组成,首次合作协商改进了 NRL 起草的 IPsec 协议标准,以及规范了 Cisco 和 TIS 提供的 IPsec 开放源代码,此后,发布了RFC-1825和RFC-1827,NRL在1996年 USENIX 会议论文集中进行了描述了,由麻省理工学院在线提供,并成为大多数初始商业实现的基础。[13]

设计意图

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

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

IPsec与其它互联网安全协议的对比

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

技术细节

认证头(AH)

认证头(Authentication Header,AH)被用来保证被传输分组的完整性和可靠性。此外,它还保护不受重放攻击。认证头试图保护IP数据报的所有字段,那些在传输IP分组的过程中要发生变化的字段就只能被排除在外。当认证头使用非对称数字签名算法(如RSA)时,可以提供不可否认性(RFC 1826)[14]

认证头分组图示:

位偏移 字节 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
0 下一个头 载荷长度 保留
32 安全参数索引(SPI)
64 串行号
96+ 认证数据(可变长度)

字段含义:

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

封装安全载荷(ESP)

封装安全载荷(Encapsulating Security Payload,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
0 安全参数串行(SPI)
32 串行号
64+ 载荷*(可变长度)
  填充(0-255字节)
    填充长度 下一个头
认证数据(可变长度)

字段含义:

安全参数索引:与IP地址一同用来标识安全参数
串行号:单调递增的数值,用来防止重放攻击。
载荷数据:如果没使用ESP的加密功能,则载荷数据域的内容是“下一个头”所指示的数据;如果使用了ESP的加密功能,则使用加密载荷数据和ESP尾部数据所得的密文作为payload data.
填充:某些块加密算法用此将数据填充至块的长度。
填充长度:以位为单位的填充数据的长度。
下一个头:标识载荷中封装的数据所属的协议。
认证数据:又叫做完整性校验值(ICV)。包含了认证当前包所必须的数据。

安全关系(SA)

实现

FreeS/WAN项目已经开发了一个开源GNU/Linux操作系统下的IPsec实现。Free S/WAN项目的开发在2004年时被中止。OpenswanstrongSwanlibreswan是Free S/WAN延续。

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

参见

参考文献

  1. Thayer, R.; Doraswamy, N.; Glenn, R.. IP Security Document Roadmap. IETF. November 1998. doi:10.17487/RFC2411. RFC 2411. 
  2. Hoffman, P.. Cryptographic Suites for IPsec. IETF. December 2005. doi:10.17487/RFC4308. RFC 4308. 
  3. Kent, S.; Atkinson, R.. IP Authentication Header. IETF. November 1998. doi:10.17487/RFC2402. RFC 2402. 
  4. Kent, S.. IP Authentication Header. IETF. December 2005. doi:10.17487/RFC4302. RFC 4302. 
  5. Kent, S.; Atkinson, R.. IP Encapsulating Security Payload (ESP). IETF. November 1998. doi:10.17487/RFC2406. RFC 2406. 
  6. The Internet Key Exchange (IKE), RFC 2409, §1 Abstract
  7. RFC 4301
  8. RFC 4309
  9. "IPv6 Node Requirements", E. Jankiewicz, J. Loughney, T. Narten (December 2011)
  10. Archived copy. [2014-02-18]. 
  11. The history of VPN creation. 
  12. "https://www.usenix.org/legacy/publications/library/proceedings/sd96/atkinson.html "
  13. IETF IP Security Protocol (ipsec) Working group History. 
  14. RFC 1826

外部链接

IPsec相关RFC文档

RFC 2401
IP协议的安全架构
RFC 2402
认证头
RFC 2406
封装安全载荷
RFC 2407
ISAKMP的IPsec解释域(IPsec DoI)
RFC 2408
网络安全关系与密钥管理协议(ISAKMP)
RFC 2409
因特网密钥交换(IKE)