IPsec

網際網路安全協定（英語：Internet Protocol Security，縮寫：IPsec）是一個协议套件，透过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族（一些相互关联的协议的集合）。 IPsec主要由以下协议组成： 认证头（AH），为IP数据报提供无连接数据完整性、消息认证（英语：Message_authentication）以及防重放攻击保护； 封装安全载荷（ESP），提供机密性、数据源认证、无连接完整性、防重放和有限的传输流（traffic-flow）机密性； 網際網路金鑰交換（英語： Internet Key Exchange ，簡稱IKE或IKEv2），为AH、ESP操作所需的安全關聯（SA）提供算法、数据包和金鑰参数。 IPsec的源始编码是在IPv4的环境中于1994年开发，第一版IPsec协议在RFC 2401-2409中定义。在2005年第二版标准文档发布，新的文档定义在RFC 4301和RFC 4309中。在IPv4中IPsec的使用是一个可选项，在IPv6 RFC 6434中为必选的内容 ，这样做的目的，是为了随着 IPv6的进一步流行，IPsec可以得到更为广泛的使用。 从1920-70年代初开始，美国高级研究项目局赞助了一系列实验性的ARPANET加密设备，起初用于本地ARPANET数据包加密，随后又用于TCP/IP数据包加密。 从1986年到1991年，美国国家安全局在其安全数据网络系统（SDN）计划下赞助了互联网安全协议的开发，包括摩托罗拉在内的各种供应商聚集在一起，于1988年生产了一种网络加密设备，这项工作于1988年由NIST公开发表，其中第3层的安全协议（SP3）演变为ISO标准的网络层安全协议（NLSP）。 从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 商用产品。 4. 在美国国防部高级研究计划局（DARPA）资助的研究工作下，1996年，NRL为IPsec开发了IETF标准跟踪规范（rfc1825到rfc1827），它的编码是在BSD 4.4内核中，同时支持x86和SPARC CPU架构 。 互联网工程任务组（IETF）于1992年成立了IP安全工作组，以规范对 IPsec 的公开协议，1995年工作组成员有 TIS、Cisco、FTP、Checkpoint 等五个企业组成，首次合作协商改进了 NRL 起草的 IPsec 协议标准，以及规范了 Cisco 和 TIS 提供的 IPsec 开放源代码，此后，发布了RFC-1825和RFC-1827，NRL在1996年 USENIX 会议论文集中进行了描述了，由麻省理工学院在线提供，并成为大多数初始商业实现的基础。 IPsec被设计用来提供（1）入口对入口通信安全，在此机制下，分组通信的安全性由单个节点提供给多台机器（甚至可以是整个局域网）；（2）端到端分组通信安全，由作为端点的计算机完成安全操作。上述的任意一种模式都可以用来构建虚拟专用网（VPN），而这也是IPsec最主要的用途之一。应该注意的是，上述两种操作模式在安全的实现方面有着很大差别。 因特网范围内端到端通信安全的发展比预料的要缓慢[來源請求]，其中部分原因，是因为其不够普遍或者说不被普遍信任。公钥基础设施能够得以形成（DNSSEC最初就是为此产生的），一部分是因为许多用户不能充分地认清他们的需求及可用的选项，导致其作为内含物强加到卖主的产品中（这也必将得到广泛采用）；另一部分可能归因于网络响应的退化（或说预期退化），就像兜售信息的充斥而带来的带宽损失一样。 IPsec协议工作在OSI模型的第三层，使其在单独使用时适于保护基于TCP或UDP的协议（如安全套接子层（SSL）就不能保护UDP层的通信流）。这就意味着，与传输层或更高层的协议相比，IPsec协议必须处理可靠性和分片的问题，这同时也增加了它的复杂性和处理开销。相对而言，SSL/TLS依靠更高层的TCP（OSI的第四层）来管理可靠性和分片。 认证头（Authentication Header，AH）被用来保证被传输分组的完整性和可靠性。此外，它还保护不受重放攻击。认证头试图保护IP数据报的所有字段，那些在传输IP分组的过程中要发生变化的字段就只能被排除在外。当认证头使用非对称数字签名算法（如RSA）时，可以提供不可否认性（RFC 1826）。 认证头分组图示： 字段含义： 下一个头：标识被传送数据所属的协议。 载荷长度：认证头包的大小。 保留：为将来的应用保留（目前都置为0）。 安全参数索引：与IP地址一同用来标识安全参数。 序列号：单调递增的数值，用来防止重放攻击。 认证数据：包含了认证当前包所必须的数据。 封装安全载荷（Encapsulating Security Payload，ESP）协议对分组提供了源可靠性、完整性和保密性的支持。与AH头不同的是，IP分组头部不被包括在内。 ESP分组图示： 字段含义： 安全参数索引：与IP地址一同用来标识安全参数 序列号：单调递增的数值，用来防止重放攻击。 载荷数据：如果没使用ESP的加密功能，则载荷数据域的内容是“下一个头”所指示的数据；如果使用了ESP的加密功能，则使用加密载荷数据和ESP尾部数据所得的密文作为payload data. 填充：某些块加密算法用此将数据填充至块的长度。 填充长度：以位为单位的填充数据的长度。 下一个头：标识载荷中封装的数据所属的协议。 认证数据：又叫做完整性校验值（ICV）。包含了认证当前包所必须的数据。 FreeS/WAN项目已经开发了一个开源的GNU/Linux作業系統下的IPsec实现。Free S/WAN项目的开发在2004年时被中止。Openswan、strongSwan和libreswan是Free S/WAN延续。 至今已有许多IPsec协议和ISAKMP／IKE协议的实现。它们包括： NRL IPsec，属于原型的一种 OpenBSD，代码源于NRL IPsec Mac OS X，包含了Kame IPsec的代码 Cisco IOS Microsoft Windows SSH Sentinel（现作为SafeNet的一部分）提供了工具包 Solaris FreeBSD NetBSD Android iOS 信息安全 Thayer, R.; Doraswamy, N.; Glenn, R.. IP Security Document Roadmap. IETF. November 1998. doi:10.17487/RFC2411 . RFC 2411.  Hoffman, P.. Cryptographic Suites for IPsec. IETF. December 2005. doi:10.17487/RFC4308 . RFC 4308.  Kent, S.; Atkinson, R.. IP Authentication Header. IETF. November 1998. doi:10.17487/RFC2402 . RFC 2402.  Kent, S.. IP Authentication Header. IETF. December 2005. doi:10.17487/RFC4302 . RFC 4302.  Kent, S.; Atkinson, R.. IP Encapsulating Security Payload (ESP). IETF. November 1998. doi:10.17487/RFC2406 . RFC 2406.  The Internet Key Exchange (IKE), RFC 2409, §1 Abstract RFC 4301 RFC 4309 "IPv6 Node Requirements", E. Jankiewicz, J. Loughney, T. Narten (December 2011) Network Encryption - history and patents. [2022-01-18]. （原始内容存档于2014-09-03）.  Trusted Information Systems. （原始内容存档于2020-06-21）.  The history of VPN creation. （原始内容存档于2020-09-29）.  "https://www.usenix.org/legacy/publications/library/proceedings/sd96/atkinson.html （页面存档备份，存于互联网档案馆）" IETF IP Security Protocol (ipsec) Working group History. （原始内容存档于2019-09-13）.  RFC 1826 计算机系统安全 IPsec簡介[永久失效連結] IETF的IPsec工作组。 Free S/WAN项目主页（页面存档备份，存于互联网档案馆）。 Openswan项目主页（页面存档备份，存于互联网档案馆）。 strongSwan项目主页（页面存档备份，存于互联网档案馆）。 VPN社团（页面存档备份，存于互联网档案馆）。 A long thread on the ipsec@lists.tislabs.com关于是否要将字母S大写，RFC文档写的很清楚，应该是IPsec。 RFC 2401 IP协议的安全架构 RFC 2402 认证头 RFC 2406 封装安全载荷 RFC 2407 ISAKMP的IPsec解释域（IPsec DoI） RFC 2408 網路安全關聯與金鑰管理協定（ISAKMP） RFC 2409 因特网密钥交换（IKE）