(英语:Internet Protocol Security,缩写为IPsec),是一个协定包,通过对IP协定的分组进行加密和认证来保护IP协定的网路传输协定族(一些相互关联的协定的集合)。
基本介绍
- 中文名:网际网路安全协定
- 外文名:Internet Protocol Security
- 本质:开放标準的框架结构
- 作用:保障网路安全
- 缩写:IPsec
- 学科:通信工程
简介
网际网路安全协定(英语: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)。
认证头分组图示:
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)
封装安全载荷(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 |
安全参数串列(SPI) | |||||||||||||||||||||||||||||||
串列号 | |||||||||||||||||||||||||||||||
载荷*(可变长度) | |||||||||||||||||||||||||||||||
填充(0-255位元组) | |||||||||||||||||||||||||||||||
填充长度 | 下一个头 | ||||||||||||||||||||||||||||||
认证数据(可变长度) |
栏位含义:
- 安全参数索引:与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,进一步提供数据保密性并防止篡改。
安全联盟 SA
安全联盟 SA,记录每条 IP安全通路的策略和策略参数。安全联盟是 IPSec 的基础, 是通信双方建立的一种协定,决定了用来保护数据包的协定、转码方式、密钥以及密钥有效期等。AH和 ESP都要用到安全联盟,IKE的一个主要功能就是建立和维护安全联盟。
密钥管理协定
密钥管理协定 ISAKMP, 提供共享安全信息。Internet密钥管理协定被定义在套用层,IETF规定了 Internet安全协定和 ISAKMP(Internet Security Association and Key Management Protocol) 来实现 IPSec 的密钥管理,为身份认证的 SA 设定以及密钥交换技术
安全特性
IPSec的安全特性主要有:
不可否认性
"不可否认性"可以证实讯息传送方是唯一可能的传送者,传送者不能否认传送过讯息。"不可否认性"是採用公钥技术的一个特徵,当使用公钥技术时,传送方用私钥产生一个数字签名随讯息一起传送,接收方用传送者的公钥来验证数字签名。由于在理论上只有传送者才唯一拥有私钥,也只有传送者才可能产生该数字签名,所以只要数字签名通过验证,传送者就不能否认曾传送过该讯息。但"不可否认性"不是基于认证的共享密钥技术的特徵,因为在基于认证的共享密钥技术中,传送方和接收方掌握相同的密钥。
反重播性
"反重播"确保每个IP包的唯一性,保证信息万一被截取複製后,不能再被重新利用、重新传输回目的地址。该特性可以防止攻击者截取破译信息后,再用相同的信息包冒取非法访问权(即使这种冒取行为发生在数月之后)。
数据完整性
防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。IPSec利用Hash函式为每个数据包产生一个加密检查和,接收方在打开包前先计算检查和,若包遭篡改导致检查和不相符,数据包即被丢弃。
数据可靠性
在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信息也无法被读。该特性在IPSec中为可选项,与IPSec策略的具体设定相关。