互联网
安全协议(
Internet Protocol Security,
IPSec)是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的
网络传输协议簇(一些相互关联的协议的集合)。
简介
IPSec是IETF(Internet Engineering Task Force,即国际互联网
工程技术小组)提出的使用
密码学保护IP层通信的安全保密架构,是一个协议簇,通过对IP协议的分组进行加密和认证来保护IP协议的
网络传输协议簇(一些相互关联的协议的集合)。
IPSec可以实现以下4项功能:①数据
机密性:IPSec
发送方将
包加密后再通过网络发送。②
数据完整性:IPSec可以验证IPSec发送方发送的包,以确保
数据传输时没有被改变。③数据认证:IPSec接受方能够鉴别IPsec包的发送起源。此服务依赖数据的
完整性。④反重放:IPSec接受方能检查并拒绝重放包。
IPSec主要由以下协议组成:
二、封装安全载荷(ESP),提供机密性、
数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性;
三、
安全关联(SA),提供算法和数据包,提供AH、ESP操作所需的参数。
四、密钥协议(
IKE),提供对称密码的钥匙的生存和交换。
历史
从1920-70年代初开始,美国高级研究项目局赞助了一系列实验性的ARPANET加密设备,起初用于本地ARPANET
数据包加密,随后又用于TCP/IP数据包加密。从1986年到1991年,
美国国家安全局在其安全数据网络系统(
SDN)计划下赞助了互联网
安全协议的开发,包括
摩托罗拉在内的各种供应商聚集在一起,于1988年生产了一种
网络加密设备,这项工作于1988年由
NIST公开发表,其中第3层的安全协议(SP3)演变为
ISO标准的
网络层安全协议(
NLSP)。
从1992年到1995年,有三个研究小组对
IP层加密分别进行了独立研究:
1. 1992年,
美国海军研究实验室(NRL)开始了simpleinternetprotocolplus(
SIPP)项目来研究IP
加密协议。
2. 1993年,实验性软件IP加密协议(swIPe)是由 JohnIoanndis等人在哥伦比亚大学SunOS和
AT&T贝尔实验室开始研发。
3. 1994年,Trusted Information Systems(
TIS)的科学家徐崇伟(Wei Xu)在白宫
信息高速公路项目的支持下,开发了第一代 IPSec 协议,它是在4.1BSD内核中编码,同时支持
x86和SUNOS
CPU架构,增强了刷卡安全协议,并为
数据加密标准开发了设备
驱动程序。到1994年12月,TIS发布了由
DARPA赞助的
开放源代码的“手铐防火墙”产品,集成了
3DES硬件加密,第一次实现IPSec VPN速度超过
T1的商用产品。
在
美国国防部高级研究计划局(DARPA)资助的研究工作下,1996年,NRL为IPsec开发了
IETF标准跟踪规范(rfc1825到rfc1827),它是在4.4
BSD内核中编码的,同时支持x86和
SPARC CPU架构。
1992年,
互联网工程任务组(IETF)成立了IP安全工作组,以规范对IP的公开指定的安全扩展,称为IPSec。1995年,工作组批准了NRL开发的IPSec标准,从
RFC-1825到RFC-1827发布,NRL在1996年
USENIX会议论文集中,描述 NRL 的开放源代码IPSec,由
麻省理工学院在线提供,并成为大多数初始商业实现的基础。
标准现状
随着Internet的飞速发展,IPSec的
应用领域越来越广。与此同时,互联网
安全问题也日趋严重,网络上的数据非常容易被他人恶意窃听和篡改。IPSec协议是一个标准的
网络安全协议,也是一个
开放标准的网络架构,通过加密以确保网络的安全通信。IPSec的作用主要包括确保IP
数据安全以及抵抗
网络攻击。
IPv6是
IETF为IP协议分组通信制定的新的因特网标准,IPSec在RFC 6434以前是其中必选的内容,但在
IPv4中的使用则一直只是可选的。这样做的目的,是为了随着IPv6的进一步流行,IPSec可以得到更为广泛的使用。第一版IPSec协议在
RFC2401-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)。
认证头分组图示:
字段含义:
封装安全载荷(ESP)
封装安全载荷(Encapsulating Security Payload,ESP)协议对分组提供了源可靠性、完整性和
保密性的支持。与AH头不同的是,IP分组头部不被包括在内。
ESP分组图示:
字段含义:
实现
FreeS/WAN项目已经开发了一个开源的
GNU/Linux环境下的IPSec实现。且一个基于KAME项目的IPSec实现已经包含在
NetBSD、
FreeBSD以及2.6Linux内核中。从某种程度上说,也是因为这个原因,Free S/WAN项目的开发在2004年3月时被中止。
Openswan和
strongSwan是Free S/WAN延续。
至今已有许多
IPSec协议和
ISAKMP/
IKE协议的实现。它们包括:
相关RFC文档
安全结构
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利用
Hash函数为每个
数据包产生一个加密检查和,接收方在打开包前先
计算检查和,若包遭篡改导致检查和不相符,数据包即被丢弃。
数据可靠性
在传输前,对数据进行加密,可以
保证在传输过程中,即使数据包遭截取,信息也无法被读。该特性在IPSec中为
可选项,与IPSec策略的具体设置相关。