IPSec

IPsec(InternetProtocol Security)是IETF(InternetEngineering Task Force,Interne,工程任务组)制定的三层隧道加密协议,工作在网络层,提供机密性(Confidentiality)、完整性(Data Integrity)、数据来源验证(Data Authentication)、防重放(Anti-Replay、拒绝过时或重复的包),它给出了应用于IP层上网络数据安全的一整套体系结构,包括网络认证协议AH(Authentication Header,认证头)、ESP(Encapsulating Security Payload,封装安全载荷)、IKE(Internet Key Exchange,因特网密钥交换)和用于网络认证及加密的一些算法等。其中,AH协议和ESP协议用于提供安全服务,IKE协议用于密钥交换。
AH协议(Authentication Header,IP协议号为51):可以同时提供数据完整性确认、数据来源确认、防重放等安全特性;AH常用摘要算法(单向Hash函数)MD5和SHA-1实现该特性。
ESP协议(EncapsulatedSecurity Payload,IP协议号为50):可以同时提供数据完整性确认、数据加密、防重放等安全特性;ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA-1来实现数据完整性。
为何AH使用较少呢?因为AH无法提供数据加密,所有数据在传输时以明文传输,而ESP提供数据加密;其次AH因为提供数据来源确认(源IP地址一旦改变,AH校验失败),所以无法穿越NAT。当然,IPSec在极端的情况下可以同时使用AH和ESP实现最完整的安全特性,但是此种方案极其少见。
IKE(InternetKey Exchange,因特网密钥交换)协议建立SA,该协议建立在由ISAKMP(Internet Security Association and KeyManagement Protocol,互联网安全联盟和密钥管理协议)定义的框架上。IKE为IPsec提供了自动协商交换密钥、建立SA的服务,能够简化IPsec的使用和管理,大大简化IPsec的配置和维护工作。IKE是UDP之上的一个应用层协议。
IKE不是在网络上直接传输密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥,并且即使第三者截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。
在这里插入图片描述

IKE协商过程中包含三对消息:
第一对叫SA交换,是协商确认有关安全策略的过程;
第二对消息叫密钥交换,交换Diffie-Hellman公共值和辅助数据(如:随机数),密钥材料在这个阶段产生;
最后一对消息是ID信息和认证数据交换,进行身份认证和对整个第一阶段交换内容的认证。
安全联盟(Security Association,SA),记录每条 IP安全通路的策略和策略参数。SA是IPSec的基础, 是通信双方建立的一种协定,决定了用来保护数据包的协议、转码方式、密钥以及密钥有效期等。AH和ESP都要用到SA,IKE的一个主要功能就是建立和维护SA。
在这里插入图片描述
密钥管理协议ISAKMP (Internet Security Association andKey Management Protocol), 提供共享安全信息。Internet密钥管理协议被定义在应用层,IETF规定了Internet安全协议和ISAKMP来实现IPSec的密钥管理,为身份认证的SA设置以及密钥交换技术。
传输模式有隧道模式和传输模式,
隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。通常,隧道模式应用在两个安全网关之间的通讯。报文和报头都加密。
在这里插入图片描述
传输(transport)模式:只是传输层数据被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯。定义了一个通用格式。只加密报文,不加密报文。
在这里插入图片描述
应用场景有三种:Site-to-Site、End-to-End和End-to-Site。
Site-to-Site(站点到站点或者网关到网关): 3个机构分布在互联网的3个不同的地方,各使用一个商务领航网关相互建立v*n隧道,企业内网(若干PC)之间的数据通过这些网关建立的IPSec隧道实现安全互联。
End-to-End(端到端或者PC到PC): 两个PC之间的通信由两个PC之间的IPSec会话保护,而不是网关。
End-to-Site(端到站点或者PC到网关):两个PC之间的通信由网关和异地PC之间的IPSec进行保护。
在这里插入图片描述
隧道模式可以适用于任何场景,传输模式只能适合PC到PC的场景。隧道模式虽然可以适用于任何场景,但是隧道模式需要多一层IP头(通常为20字节长度)开销,所以在PC到PC的场景,建议还是使用传输模式。
为什么Site-to-Site要用隧道模式。
在这里插入图片描述
在这里插入图片描述 上图描述了由兴趣流触发的IPSec协商流程,原生IPSec并无身份确认等协商过程,在方案上存在诸多缺陷,如无法支持发起方地址动态变化情况下的身份确认、密钥动态更新等。伴随IPSec出现的IKE(InternetKey Exchange)协议专门用来弥补这些不足: 发起方定义的兴趣流是源192.168.1.0/24目的10.0.0.0/8,所以在接口发送发起方内网PC发给响应方内网PC的数据包,能够得以匹配。 满足兴趣流条件,在转发接口上检查SA不存在、过期或不可用,都会进行协商,否则使用当前SA对数据包进行处理。 协商的过程通常分为两个阶段,第一阶段是为第二阶段服务,第二阶段是真正的为兴趣流服务的SA,两个阶段协商的侧重有所不同,第一阶段主要确认双方身份的正确性,第二阶段则是为兴趣流创建一个指定的安全套件,其最显著的结果就是第二阶段中的兴趣流在会话中是密文。 IPSec中安全性还体现在第二阶段SA永远是单向的。