VPN ipsec RSA协议解读
ipsec协议族: ESP (封装安全有效载荷)协议,用于保护两个IPsec端点之间传输的IP报文。(ESP允许对网络层的IP数据包进行加密,例如承载第4层TCP流量) Internet Key Exchange Version 2 (IKEv2)协议,负责I
ipsec协议族:
ESP (封装安全有效载荷)协议,用于保护两个IPsec端点之间传输的IP报文。(ESP允许对网络层的IP数据包进行加密,例如承载第4层TCP流量) Internet Key Exchange Version 2 (IKEv2)协议,负责IPsec端点的相互认证,并为IKEv2管理协议本身和ESP有效负载保护自动建立加密和数据完整性会话密钥。
一、IKE动态协商综述
手工方式建立SA存在配置复杂、不支持发起方地址动态变化、建立的SA永不老化、不利于安全性等缺点。下面介绍动态协商方式的好处,以及IKE与IPSec的关系。
1、IKE动态协商方式的好处
采用IKE协议为IPSec自动协商建立SA,可以得到以下好处。
(1)降低了配置的复杂度
在IKE动态协商方式下,SPI、认证密钥和加密密钥等参数将自动生成,而手工方式中需根据SA出方向和入方向分别指定。
(2)提供抗重放功能
IPSec使用AH或ESP报头中的序列号实现抗重放(不接受序列号相同的数据包)。当AH或ESP报头中的序列号溢出(也是达到了最大值,不能再继续往下编号,要开始新一轮的重新编号了)后,为实现抗重放,SA需要重新建立。
重放攻击是指再次发送已发送过(数据包序列号与原来一样)的数据包,攻击者可采用这种方式对目的主机进行攻击,使目的主机不断接收本已接收、解析重复的数据包而大量消耗资源,甚至崩溃。抗重放就是抵抗这种重放攻击。
(3)支持协商发起方地址动态变化情况下(如采用拨号方式接入Internet)的身份认证,手工方式不支持,只能适用于在两端都采用专线连接方式接入Internet情形。
(4)支持认证中心CA(Certificate Authority)在线对对等体身份的认证和集中管理,有利于IPSec的大规模部署,手工方式不支持在线认证方式(CA证书可在不同客户端生成大量用于认证的用户证书)。
(5)通过IKE协商建立的SA具有生存周期,可以实时更新,降低了SA被破解的风险,提高了安全性。
生存周期到达指定的时间或指定的流量,SA就会失效。在SA快要失效前,IKE将为对等体协商新的SA。在新的SA协商好之后,对等体立即采用新的SA保护通信。生存周期有两种定义方式:
基于时间的生存周期,定义了一个SA从建立到失效的时间(我们在适配vpn的配置文件时,就对SA失效实际进行了配置)。
基流量的生存周期,定义了一个SA允许处理的最大流量。
2、IKE与IPSec的关系
IKE 协议建立在 ISAKMP(Internet Security Association and Key Management Protocol,Internet安全联盟和密钥管理协议)定义的框架上,是基于UDP的应用层协议(对应UDP 500端口)。它为IPSec提供了自动协商交换密钥、建立SA的服务,能够简化IPSec的使用和管理。
其实IKE也不是一个单独的协议,它包括三大协议:ISAKMP(Internet Security Association and Key Management Protocol,因特网安全联盟和密钥管理协议)、Oakley (Oakley Key Determination Protocol,奥利克密钥确定协议)和SKEME(Secure Key Exchange Mechanism for Internet,因特网安全密钥交换机制)。ISAKMP主要定义了IKE对等体(IKE Peer)之间合作关系,建立IKE SA。Oakley协议是一个产生和交换IPSec密钥材料并协调IPSec参数的框架(包括支持哪些安全协议);SKEME协议决定了IKE密钥交换的方式,主要采用DH(Diffie-Hellman)算法。
IKE与IPSec(包括AH和ESP协议):IKE是UDP之上的一个应用层协议(AH和ESP是网络层协议),是IPSec的信令协议;IKE为IPSec协商建立SA,并把建立的参数及生成的密钥交给IPSec;IPSec使用IKE建立的SA对IP报文加密或认证处理。IKE协议目前有IKEv1和IKEv2两个版本,我们使用的是IKEv2版本。
二、IKE的安全机制
IPSec应用方案之所以能在公网(如Internet)上安全地进行网络通信,其重要原因是可在对等体间的整个隧道建立和数据传输过程中均有各种安全机制来做保障,如果采用的是IKEv2来进行自动的密钥交换和协商就可以做到,因为IKE本身就具有一整套自我保护机制,可以在不安全的网络上安全地认证身份、分发密钥。具体体现在以下几种安全保护方面。
1、身份认证机制
当使用IKE在对等体间进行信息交换时,首先要识别对方的合法性,也就是身份认证问题。在IKE中可用于确定对等体身份(对等体的IP地址或名称)的机制比较全面,包括预共享密钥PSK认证、mschapv2认证和RSA认证
(1)预共享密钥认证
在预共享密钥认证中,共享密钥是作为密钥生成材料的,通信双方采用共享的密钥用相同的哈希算法(也称杂凑算法,或单向散列算法)对报文进行哈希运算,根据运算的结果是否与发送方发来的哈希一致来判断所接收的数据是否被篡改,消息来源是否可靠。如果相同,则认证通过;否则认证失败。
在大多数IPSec应用中都是采用配置比较简单的预共享密钥认证方法。
(2)mschapv2认证
在数字证书认证中,通信双方使用CA证书进行数字证书合法性验证。在CA证书中,双方有各自的公钥(网络上传输)和私钥(自己持有)。发送方对原始报文进行哈希运算,并用自己的私钥对报文计算结果进行加密,生成数字签名。接收方使用发送方的公钥对数字签名进行解密,然后采用相同的哈希算法对解密后的报文进行哈希算,看运算的结果与解密发送方发来的哈希值是否相同。如果相同,则认证通过;否则认证失败。
(3)RSA认证 RSA认证的基本原理是将对称密钥通过非对称加密(即有公钥和私钥两个)的结果向对方分发对称密钥的方法,类似于现实生活中的信件。我们知道,现实生活中的信件在法律的约束下可保证只有收信人才能阅读信的内容。数字信封则采用密码技术保证了只有规定的接收人才能阅读被保密的内容。发送方采用自己的对称密钥(需要发送方事先随机产生一个对称密钥)来对要发送的报文进行加密,然后将对称密钥用接收方的公钥来加密之后,再将加密后的对称密钥连同经过对称密钥加密后的报文一起发送给接收方。接收方在收到后,首先用自己的私钥打开数字信封,即可得到发送方的对称密钥,然后再用该对称密钥解密原来被对称密钥加密的报文,验证发送方加密数据是否能被识别。如果正确,则认证通过;否则认证失败。
以上所提到的用于身份认证的各种密钥都属于IKE认证密钥,支持的算法有:MD5、SHA1、SHA2-256、SHA2-384、SHA2-512、SM3。MD5算法使用128位的密钥,SHA-1算法使用160位的密钥,SHA2-256、SHA2-384、SHA2-512分别采用256位、384位和512位密钥,SM3使用128位密钥。它们之间的安全性由高到低顺序是:SM3>SHA2-512>SHA2-384>SHA2-256>SHA1>MD5。对于普通的安全要求,认证算法推荐使用SHA2-256、SHA2-384和SHA2-512,不推荐使用MD5和SHA1,对于安全性要求特别高的地方,可采用SM3算法。
以上所涉及的身份认证密钥(包括预共享密钥、公/私钥)、证书都是作为发送方的“验证数据”要通过对应方式发给对方予以验证的。
2、数据加密机制
IPSec 的数据加密机制主要用在两个方面:一是在IKE协商阶段,保护所传输的用于身份认证的数据信息(如共享密钥、证书、认证密钥等),二是在IPSec隧道建立后保护在隧道中传输的用户数据。但这里所说的数据加密机制所采用的对称密钥机制,即加密和解密采用相同的密钥,而不是像前面介绍的RSA认证的非对称密钥体系。
3、DH(Diffie-Hellman)密钥交换算法
Diffie-Hellman算法是一种公开密钥算法。通信双方可在不传送密钥的情况下,仅通过交换一些数据,即可计算出双方共享的密钥。而且可以做到,即使第三方截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。
DH主要用于IKE动态协商时重新生成新的IPSec SA所用的密钥,因为它可以通过一系列数据的交换,最终计算出双方共享的密钥,而不依赖于在前期生成的密钥生成材料。但DH没有提供双方身份的任何信息,不能确定交换的数据是否发送给合法方,第三方可以通过截获的数据与通信双方都协商密钥、共享通信,从而获取和传递信息,所以IKE还需要身份认证来对对等体身份进行认证。
建立SA连接
1.初始阶段
配置:在VPN客户端和VPN服务器(网关)上预先配置相同的预共享秘钥以及相应证书 发起连接:VPN客户端向VPN服务器发起连接请求
2.IKEv2阶段1(IKE_SA_INIT)
发起方通过发送IKE_SA_INIT请求开始协商,响应者用IKE_SA_INIT响应来应答。 发送本地IKE安全提议给对方,核心参数有认证方式、认证算法、验证算法跟DH(Diffie-Hellman算法)。协商达成一致,双方采用相同加密算法、认证算法、身份认证、DH算法来进行接下来的隧道建立,如果两边有任何一方的这些参数不一致,那么隧道协商直接终止,不在进行下一阶段。
交换秘钥和随机数: 客户端和服务器交换秘钥交换(KE)载荷和随机数(Nonce)载荷。(KE是用于交换DH的公开值,而NONCE用于传送临时的随机数,由于交换的只是公开值,而并不是真正的密钥,即使被获取了也无法得到真正的密钥。) 这些信息用于生成共享秘钥(Shared Secret),建立两端相同的一系列共享密钥,主要包括用于在第二阶段协商的身份认证密钥和协商数据的加密密钥。
在密钥交互完成后,IKE协商双方会通过配置的共享密钥跟安全提议来进行复杂的密钥计算,最终会产生三个有用的密钥。
SKEYID_a:用于ISKAMP完整性验证的密钥,如果ISKAMP中途被篡改,那么直接可以发现并终止协商。 SKEYID_e:用于ISKAMP消息加密密钥,有了这个密钥,就可以建立一个安全的通道,后续的协商则在这个安全的隧道里面完成,全程加密。 SKEYID_d:这个密钥就比较关键了,IKE可以动态的建立IPSec,它的作用就是衍生出IPSec报文中需要的加密跟验证的密钥。 而且整个密钥是有超时时间的,也就是在安全提议里面定义的时间,默认为86400(一天),该时间到期后,又会重新进行DH算,来得到新的密钥,避免了密钥长期不变带来的安全问题。
防止Dos攻击: 如果响应方认为自己受到了DoS (Denial of Service)攻击,则可以先向发起方请求一个cookie,然后再在IKE_SA_INIT响应中发送计算开销较大的KE (Key Exchange)负载。有效防止IP欺骗
生成IKE_SA: 基于IKE_SA_INIT中Key exchange (KE)和nonce (N)有效载荷的交换,两个端点都可以派生出一个共享密钥,该共享密钥允许它们基于通过SA1i和SA1r安全关联有效载荷建立的IKE_SA对所有后续IKE消息进行加密。
3.IKEv2阶段2(IKE_AUTH)
在ÌKE_AUTH请求中,发起者通过在AUTHi有效载荷中发送其身份IDi和数字签名以及可选的证书有效载荷CERTi来验证自己。响应者通过沿着X.509信任链向上,直到到达本地存储的根CA证书,来验证接收到的终端实体证书的有效性和可信度。 用前面已创建好的加密密钥彼此相互发送各自的身份(如对等体的IP地址或名称)和验证数据(所采用的身份认证方式中的密钥,或证书数据等),进行身份认证。这个过程的信息交换是受前面生成的加密密钥(skey ID_e)进行加密保护的。当相互认证通过后,对等间的IKE SA建立就完成了,第二个阶段协商IPSec SA所需的安全通道就会立即建立,两端的VPN设备就可用第一个阶段协商的安全策略对第二阶段协商IPSec SA进行安全加密和认证。
3.1.客户端身份验证:
客户端发送其身份信息(IDi)和对端身份信息(IDr)。 在ÌKE_AUTH请求中,客户端通过在AUTHi有效载荷中发送其身份IDi和数字签名以及可选的证书有效载荷CERTi来验证自己。服务器通过沿着X.509信任链向上,直到到达本地存储的根CA证书,来验证接收到的终端实体证书的有效性和可信度。此外,客户端发送一个安全关联提议SA2i和一组流量选择器TSi和TSr用于第一个CHILD_SA。
3.2.服务器身份验证:
服务器验证客户端身份。 服务器发送其身份信息(IDr),AUTHr包含其数字签名,同时发送第一个EAP请求 服务器依次使用AUTHr有效载荷中的数字签名和IKE_AUTH响应中包含的可选证书有效载荷CERTr进行身份验证,并包括选定的安全协会SA2r和流量选择器TSi和TSr。有了这些信息,就可以生成子连接。
3.3.生成CHILD_SA:
双方协商用于保护实际数据流的安全参数(如加密算法、完整性算法等)。 生成CHILD_SA,用于加密和解密VPN数据流量。
4.数据传输阶段
4.1.原始数据
4.2.Transport(传输) 模式
适用于点对点模式 在IPsec传输模式下,保留原始IP头,只对IP报文携带的第4层有效载荷进行加密。ESP头插入到原始IP头和加密载荷之间
4.3.Tunnel (隧道) 模式
适用于网关对网关模式 在IPsec隧道模式下,整个IP报文被ESP封装,并附加一个外部IP头:
更多推荐
所有评论(0)