IPsec协议过程
版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/866187841、ipsec协议简介IPSec是在网络层构建的安全虚拟专有网络,通过在数据包中插入一些预定义的头部,实现对网络层以上的协议数据安全。不同于ssl应用层的加密。IPSec内核加密支持的库是xfrm。ipsec安全体系...
版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/86618784
目录
1、ipsec协议简介
IPSec是在网络层构建的安全虚拟专有网络,通过在数据包中插入一些预定义的头部,实现对网络层以上的协议数据安全。不同于ssl应用层的加密。IPSec内核加密支持的库是xfrm。
ipsec支持的协议主要有ESP、AH,通过IKE协商建立隧道对数据包进行加密。
从ipsec协议族图可以概况ipsec的整个过程。
当数据包到达网络层就会在SPD安全策略数据库中匹配,是否需要进行ipsec加密,如果需要就进行ipsec加密,如果不需要就走正常的数据包发送流程。
2、IPSec工作模式
2.1、传输模式
传输模式是两个主机之间建立IPSec虚拟安全通道,传输模式没有改变原IP,只是在原IP和数据之间插入了一个IPSec头部,然后对后面的数据部分进行加密。
2.2、隧道模式
隧道模式是包原始的整个数据包封装加密保护,添加一个新的IP头部,IP信息也没有暴露,这样使数据传输更加安全。隧道模式一般用在站点和站点之间建立连接安全通道,两个站点下面的私有IP可以利用安全隧道通信。
隧道模式比传输模式更加安全,因为两端的通信IP没有暴露。
3、ipsec通信协议
IPsec通信协议由两个不同的协议组成,分为是AH(Authentication Header)和ESP(Encapsulated Security Payload),两个图通的协议负责不同的功能,AH协议的功能是”完整性验证”,ESP协议的功能时”完整性验证与加密”
3.1、AH
AH协议(Authentication Header,认证包头) AH提供的安全服务: (1)数据完整性:通过哈希(如MD5,SHA1)产生的校验来保证; (2)数据源认证:通过在计算机验证时加入一个共享秘钥来实现; (3)抗重放服务:AH报头中的序列号可以防止重放。 AH不提供任何保密性服务:它不加密所保护的数据包。 AH提供对数据包的保护时,它保护的是整个IP数据包(易变的字段除外,如IP头中的 TTL和TOS字段)
3.2 ESP
ESP(Encapsulating Security Payload,封装安全有效载荷)提供加密和完整性验证两项功能。 ESP通常使用DES,3DES,AES等加密算法来实现数据加密,使用MD5或SHA1来实现 数据完整性验证。
ESP协议和AH协议比较:
安全性 | AH | ESP |
协议号 | 50 | 51 |
数据完整性校验 | 支持 | 支持(不验证IP头) |
数据源验证 | 支持 | 支持 |
数据加解密 | 不支持 | 支持 |
抗重服务 | 支持 | 支持 |
NAT-T(nat穿透) | 不支持 | 支持 |
4、IPSec建立过程
4.1、安全联盟SA
SA(Security Assocition)是通信对等体间对某些要素的约定,通信的双方符合SA约定的内容,就可建立SA。SA由三元组唯一标示,包括:安全参数索引,目的IP地址,安全协议号。
4.2、IKE
为了解决固定秘钥模式中VPN不安全的问题,就有了Ineternt Key Exchange(因特网秘钥交互协议)简称IKE,在IKE架构中只要设置加密算法和验证算法,IKE会定时生成加密秘钥,以上两部分加起来就是Security Assocition(安全联盟)简称SA。
IKE有三个协议组成:
ISAKMP:定义了信息交互的体系结构,也就是消息格式
SKEME:实现公钥加密认证机制
Oakey:实现两个Ipsec对等体间达成加密秘钥的基本模式机制
ISAKMP是基于UDP协议端口是500。
4.2、SAD
Security Assocition(安全联盟)SA:
SA是通信对等体对某件事情的约定,通信双方符合约定就建立了SA。SA决定了数据包保护的IPsec协议、加密秘钥、认证秘钥、秘钥时间等。SA是单项的两台主机A、B之间用IPsec加密传输会建立两个SA,一条是A->B,还有一条是B->A。会建立一个SAD数据库,SAD数据库中有的参数:SPI值、目的IP、AH/ESP协议、认证算法、加密算法、传输模式。
SPI | 目的IP | 协议 | AH认证算法 | AH加密秘钥 | 工作模式 |
0x1000 | 192.168.100.100 | AH | hmac-sha1 | 1111 | Transport |
如上SAD数据库定义了目的IP是192.168.100.100,SPI是0x1000的用AH协议封装认证算法是hmac-sh1,AH加密秘钥是1111、工作模式是传输模式来加密封装数据包。
4.3、SPD
SPD的内容是用来存放IPsec的规则,这些规则定义了哪些数据流需要使用IPsec。这个数据库的内容有目的端IP、来源端IP、目的端端口、来源端端口、协议AH/ESP
SPD数据库
来源端IP | 目的端IP | 执行协议 | 来源端口 | 目的端端口 | 工作模式 |
192.168.0.1 | 192.168.2.1 | AH | Any | 110 | Transport |
如上表所示,源地址是192.168.0.1,源端口是任意,目的地址是192.168.2.1,目的端口是110的数据流用Transport模式AH协议封装加密。
4.4、IKE协商过程
IKE为IPsec协商建立密钥,供AH/ESP加密和验证使用。在IPsec通信双方之间,动态的建立安全联盟(SA),对SA进行管理和维护,IKE经过两个阶段为IPsec进行密钥协商并建立安全联盟
5、IPSEC阶段建立
5.1、第一阶段
第一阶段交换:通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个ISAKMP安全联盟,即ISAKMP SA,也可称为IKE SA。 第一阶段有两种协议模式:主模式协商、野蛮模式协商。
5.1.1、主模式
消息1:
第一个消息由隧道的发起者发起,携带的参数如:机密机制-DES,散列机制-MD5-HAMC,Diffie-Hellman组-2(即DH-2),认证机制-预共享。 消息2:第二个消息是应答方对发送方信息的应答,当应答方查找SPD查找到发送方相关的策略后,将自己的信息同样发送给对端,当然,应答方在发送传输集时将会生成自己的cookie并添加到数据包中。
消息3:
当完成第一步骤双方的策略协商后,则开始第二步骤DH公共值互换,随数据发送的还包含辅助随机数,用户生成双方的加密秘钥。
消息4:
应答方同样将本端的DH公共值和Nonce随机数发送给对端,通过消息4传输。
消息5:
第五个消息由发起者向响应者发送,主要是为了验证对端就是自己想要与之通信的对端。这可以通过预共享、数字签名、加密临时值来实现。 双方交换DH公共值后,结合随机数生成一系列的加密密钥,用于双方加密、校验,同时生成了密钥后,将公共密钥和本端身份信息等进行hash,hash值传输给对端进行验证设备身份。
消息6:
由响应者向发起者发送,主要目的和第5条一样。 IKE阶段1有三次交换过程,一共6个消息交互,前4个明文,后2个密文
5.1.2、野蛮模式
野蛮模式同样包含三个步骤,但仅通过三个包进行传输,标示为aggressive 野蛮模式的三个包交换:
(1)第1个交互包发起方建议SA,发起DH交换
(2)第2个交互包接收方接收SA
(3)第3个交互包发起方认证接收方 野蛮模式前两个报文是明文,第三个报文是密文
5.2、第二阶段
ISAKMP/IKE阶段2只有一种信息交换模式——快速模式,它定义了受保护数据连接是如何在两个IPSEC对等体之间构成的。 快速模式有两个主要的功能:
1.协商安全参数来保护数据连接。
2.周期性的对数据连接更新密钥信息。
第二阶段的效果为协商出IPSec 单向SA,为保护IPsec数据流而创建。第二阶段整个协商过程受第一阶段ISAKMP/IKE SA保护
消息1:
发起者会在第一个消息中发送 IPSEC SA的转换属性,包括HASH、IPSEC策略提议、Nonce的可选的DH以及身份ID
消息2 :
响应者向发送者发送的发送第二条消息,确认第一个跳信息的中的属性,同时也起到确认对端信息的作用
消息3 :
第三条消息,确认接收方的信息并证明发送方处于Active状态
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)