ipsec

更新时间:2023-12-29 19:59

互联网安全协议Internet Protocol Security,IPSec)是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议簇(一些相互关联的协议的集合)。

简介

IPSec是IETF(Internet Engineering Task Force,即国际互联网工程技术小组)提出的使用密码学保护IP层通信的安全保密架构,是一个协议簇,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议簇(一些相互关联的协议的集合)。

IPSec可以实现以下4项功能:①数据机密性:IPSec发送方包加密后再通过网络发送。② 数据完整性:IPSec可以验证IPSec发送方发送的包,以确保数据传输时没有被改变。③数据认证:IPSec接受方能够鉴别IPsec包的发送起源。此服务依赖数据的完整性。④反重放:IPSec接受方能检查并拒绝重放包。

IPSec主要由以下协议组成:

一、认证头(AH),为IP数据报提供无连接数据完整性消息认证以及防重放攻击保护;

二、封装安全载荷(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模型的第三层,使其在单独使用时适于保护基于TCPUDP的协议(如安全套接子层SSL)就不能保护UDP层的通信流)。这就意味着,与传输层或更高层的协议相比,IPSec协议必须处理可靠性和分片的问题,这同时也增加了它的复杂性和处理开销。相对而言,SSL/TLS依靠更高层的TCPOSI的第四层)来管理可靠性和分片。

技术细节

认证头(AH)

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

认证头分组图示:

字段含义:

封装安全载荷(ESP)

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

ESP分组图示:

字段含义:

实现

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

至今已有许多IPSec协议ISAKMP/IKE协议的实现。它们包括:

相关RFC文档

安全结构

IPSec协议工作在OSI 模型的第三层,使其在单独使用时适于保护基于TCPUDP的协议(如 安全套接子层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的安全特性主要有:

不可否认性

不可否认性发送方公钥技术的一个特征,当使用公钥技术时,发送方用私钥产生一个数字签名随消息一起发送,接收方用发送者的公钥来验证数字签名。由于在理论上只有发送者才唯一拥有私钥,也只有发送者才可能产生该数字签名

反重播性

信息包冒取非法访问权(即使这种冒取行为发生在数月之后)。

数据完整性

防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。IPSec利用Hash函数为每个数据包产生一个加密检查和,接收方在打开包前先计算检查和,若包遭篡改导致检查和不相符,数据包即被丢弃。

数据可靠性

在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信息也无法被读。该特性在IPSec中为可选项,与IPSec策略的具体设置相关。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}