IPSec VPN详解深入浅出简单易懂.docx

上传人:b****9 文档编号:23425691 上传时间:2023-05-17 格式:DOCX 页数:38 大小:3.18MB
下载 相关 举报
IPSec VPN详解深入浅出简单易懂.docx_第1页
第1页 / 共38页
IPSec VPN详解深入浅出简单易懂.docx_第2页
第2页 / 共38页
IPSec VPN详解深入浅出简单易懂.docx_第3页
第3页 / 共38页
IPSec VPN详解深入浅出简单易懂.docx_第4页
第4页 / 共38页
IPSec VPN详解深入浅出简单易懂.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

IPSec VPN详解深入浅出简单易懂.docx

《IPSec VPN详解深入浅出简单易懂.docx》由会员分享,可在线阅读,更多相关《IPSec VPN详解深入浅出简单易懂.docx(38页珍藏版)》请在冰豆网上搜索。

IPSec VPN详解深入浅出简单易懂.docx

IPSecVPN详解深入浅出简单易懂

IPSecVPN详解

1.IPSec概述

IPSec(ipsecurity)是一种开放标准的框架构造,特定的通信方之间在IP层通过加密和数据摘要(hash)等手段,来保证数据包在Internet网上传输时的私密性(confidentiality)、完好性(dataintegrity)和真实性(originauthentication)。

IPSec只能工作在IP层,要求乘客协议和承载协议都是IP协议

1.1.通过加密保证数据的私密性

★私密性:

防止信息泄漏给未经受权的个人

★通过加密把数据从明文变成无法读懂的密文,从而确保数据的私密性

1.2.对数据进展hash运算来保证完好性

★完好性:

数据没有被非法篡改

★通过对数据进展hash运算,产生类似于指纹的数据摘要,以保证数据的完好性

对数据和密钥一起进展hash运算

★攻击者篡改数据后,可以根据修改后的数据生成新的摘要,以此掩盖自己的攻击行为。

★通过把数据和密钥一起进展hash运算,可以有效抵御上述攻击。

DH算法的根本原理

1.3.通过身份认证保证数据的真实性

★真实性:

数据确实是由特定的对端发出

★通过身份认证可以保证数据的真实性。

常用的身份认证方式包括:

             Pre-sharedkey,预共享密钥

             RSASignature,数字签名

1.3.1.预共享密钥

预共享密钥,是指通信双方在配置时手工输入一样的密钥。

1.3.2.数字证书

★RSA密钥对,一个是可以向大家公开的公钥,另一个是只有自己知道的私钥。

★用公钥加密过的数据只有对应的私钥才能解开,反之亦然。

★数字证书中存储了公钥,以及用户名等身份信息。

2.IPSec框架构造

2.1.IPSec平安协议

IPSec平安协议描绘了如何利用加密和hash来保护数据平安

★AH(AuthenticationHeader)网络认证协议,只能进展数据摘要(hash),不能实现数据加密

ah-md5-hmac、ah-sha-hmac

★ESP(EncapsulatingSecurityPayload)封装平安载荷协议,可以进展数据加密和数据摘要(hash) 

esp-des、esp-3des、esp-md5-hmac、esp-sha-hmac

2.2.IPSec封装形式

IPSec支持两种封装形式:

传输形式和隧道形式

◆传输形式:

不改变原有的IP包头,通常用于主机与主机之间。

◆隧道形式:

增加新的IP头,通常用于私网与私网之间通过公网进展通信。

3.IPSec与NAT

3.1.AH形式

AH形式无法与NAT一起运行,因为AH对包括IP地址在内的整个IP包进展hash运算,而NAT会改变IP地址,从而破坏AH的hash值。

3.2.ESP形式

◆只进展地址映射时,ESP可与NAT一起工作。

◆进展端口映射时,需要修改端口,而ESP已经对端口号进展了加密和/或hash,所以将无法进展。

◆启用IPSecNAT穿越后,会在ESP头前增加一个UDP头,就可以进展端口映射。

4.IPSec平安通道协商过程

◆需要保护的流量流经路由器,触发路由器启动相关的协商过程。

◆启动IKE(Internetkeyexchange,密钥管理协议)阶段1,对通信双方进展身份认证,并在两端之间建立一条平安的通道。

◆启动IKE阶段2,在上述平安通道上协商IPSec参数。

◆按协商好的IPSec参数对数据流进展加密、hash等保护。

4.1.IKE密钥交换协议

Internet密钥交换〔IKE〕解决了在不平安的网络环境〔如Internet〕中平安地建立或更新共享密钥的问题。

IKE是非常通用的协议,不仅可为IPsec协商平安关联,而且可以为SNMPv3、RIPv2、OSPFv2等任何要求保密的协议协商平安参数。

一、IKE的作用当应用环境的规模较小时,可以用手工配置SA;当应用环境规模较大、参与的节点位置不固定时,IKE可自动地为参与通信的实体协商SA,并对平安关联库〔SAD〕维护,保障通信平安。

二、IKE的机制IKE属于一种混合型协议,由Internet平安关联和密钥管理协议〔ISAKMP〕和两种密钥交换协议OAKLEY与SKEME组成。

IKE创立在由ISAKMP定义的框架上,沿用了OAKLEY的密钥交换形式以及SKEME的共享和密钥更新技术,还定义了它自己的两种密钥交换方式。

IKE使用了两个阶段的ISAKMP:

第一阶段,协商创立一个通信信道〔IKESA〕,并对该信道进展验证,为双方进一步的IKE通信提供机密性、消息完好性以及消息源验证效劳;

第二阶段,使用已建立的IKESA建立IPsecSA。

 IKE共定义了5种交换。

阶段1有两种形式的交换:

对身份进展保护的“主形式〞交换以及根据根本ISAKMP文档制订的“野蛮形式〞交换。

阶段2交换使用“快速形式〞交换。

IKE自己定义了两种交换:

1为通信各方间协商一个新的Diffie-Hellman组类型的“新组形式〞交换;2在IKE通信双方间传送错误及状态消息的ISAKMP信息交换。

1.主形式交换主形式交换提供了身份保护机制,经过三个步骤,共交换了六条消息。

三个步骤分别是策略协商交换、Diffie-Hellman共享值、nonce交换以及身份验证交换〔如图2所示〕。

2.野蛮形式交换野蛮形式交换也分为三个步骤,但只交换三条消息:

头两条消息协商策略,交换Diffie-Hellman公开值必需的辅助数据以及身份信息;第二条消息认证响应方;第三条消息认证发起方,并为发起方提供在场的证据〔如图3所示〕。

 3.快速形式交换快速形式交换通过三条消息建立IPsecSA:

头两条消息协商IPsecSA的各项参数值,并生成IPsec使用的密钥;第二条消息还为响应方提供在场的证据;第三条消息为发起方提供在场的证据〔如图4所示〕。

 

4.新组形式交换通信双方通过新组形式交换协商新的Diffie-Hellman组。

新组形式交换属于一种恳求/响应交换。

发送方发送提议的组的标识符及其特征,假如响应方可以接收提议,就用完全一样的消息应答〔如图5所示〕。

 5.ISAKMP信息交换参与IKE通信的双方均能向对方发送错误及状态提示消息。

这实际上并非真正意义上的交换,而只是发送单独一条消息,不需要确认〔如图6所示〕。

  

4.2.IKE阶段1

◆协商建立IKE平安通道所使用的参数,包括:

加密算法、Hash算法、DH算法、身份认证方法、存活时间

◆上述IKE参数组合成集合,称为IKEpolicy。

IKE协商就是要在通信双方之间找到一样的policy。

4.3.IKE阶段2

◆双方协商IPSec平安参数,称为变换集transformset,包括:

加密算法、Hash算法、平安协议、封装形式、存活时间

IKE与IPSec平安参数的比拟

4.4.IPSecSA

◆IPSecSA(平安关联,SecurityAssociation):

SA由SPD(securitypolicydatabase)和SAD(SAdatabase)组成。

IPSecSA(平安关联,SecurityAssociation):

◆SPI(SecurityParameterIndex),由IKE自动分配

◆发送数据包时,会把SPI插入到IPSec头中

◆接收到数据包后,根据SPI值查找SAD和SPD,从而获知解密数据包所需的加解密算法、hash算法等。

◆一个SA只记录单向的参数,所以一个IPSec连接会有两个IPSecSA。

◆使用SPI可以标识路由器与不同对象之间的连接。

◆到达lifetime以后,原有的IPSecSA就会被删除

◆假如正在传输数据,系统会在原SA超时之前自动协商建立新的SA,从而保证数据的传输不会因此而中断。

4.5.IPsecSA例如

5.Ipsecphase1andphase2

〔一〕 IPSec VPN隧道的建立过程分为两个阶段:

 

第一个阶段:

分为两种形式主形式〔Main Mode和野蛮形式〔又称主动形式Aggressive〕 

第二个阶段:

快速形式〔Quick Mode〕 区别:

主形式与野蛮形式的区别:

 

〔1〕野蛮形式协商比主形式协商更快。

 

 因为主形式需要交互6个消息,而野蛮形式只需要交互3个消息;

〔2〕主形式协商比野蛮形式协商更严谨、更平安。

 

          因为主形式在“消息5&消息6〞中对ID信息进展了加密。

而野蛮形式由于受到交换次数的限制,ID消息在“消息1&消息2〞中以明文的方式发送给对端。

即主形式对对端身份进展了保护,而野蛮形式那么没有。

 

〔二〕 两个阶段分别完成任务:

 

〔1〕第一个阶段IKE设置,有三个任务需要完成:

〔a〕协商一系列算法和参数〔这些算法和参数用于保护隧道建立过程中的数据〕; 

〔b〕必须计算出两边使用的加密KEY值,例如,两边使用3DES算法加密,3DES算法那么需要一个密码,这个密码两端必须一样,但又不能在链路上传递。

 

〔c〕对等体的验证,如何才能知道对端就是我要与之通信的对端。

这里验证有三种方法:

预共享、数字签名和加密临时值。

 

上面一系列过程都是IKE〔Internet 密钥交换协议,大多数厂商都把这个叫做VPNs Gateway〕这个协议来实现。

对于第一阶段需要注意以下几点:

〔a1〕只有remote vpn和easy vpn是积极形式的,其他都是用主形式来协商的; 

〔a2〕让IKE对等体彼此验证对方并确定会话密钥,这个阶段用DH进展密钥交换,创立完IKE SA后,所有后续的协商都将通过加密和完好性检查来保护。

 

〔a3〕第一阶段帮助在对等体之间创立了一条平安通道,使后面的第二阶段过程协商受到平安保护。

 

〔2〕第二阶段:

 协商IPSec SA使用的平安参数,创立IPSec SA〔SA可以加密两个对等体之间的数据,这才是真正的需要加密的用户数据〕,使用AH或ESP来加密IP数据流。

至此IPSec VPN隧道才真正建立起来。

 

〔三〕 综上,有如下结论:

 

第一阶段作用:

对等体之间彼此验证对方,并协商出IKE SA,保护第二阶段中IPSec SA协商过程; 

第二阶段作用:

协商IPSec单向SA,为保护IP数据流而创立; 

〔四〕 举例验证:

以主形式,AH协议来简单分析一下IPSec VPN链接建立的过程〔附带报

文〕:

 

第一个阶段三个任务,分别用6个消息来完成,每两个为一组,这些消息的详细格式取决于使用的对等体认证方法,使用预共享密钥进展验证的主形式〔6条〕协商过程使用ISAKMP消息格式来传递〔基于UDP,端口号为500〕。

6条消息如下:

〔1〕准备工作:

 

在前2条消息发送之前,发送者和承受者必须先计算出各自的cookie〔可以防重放和DOS攻击〕,这些cookie用于标识每个单独的协商交换消息。

 

cookie——RFC建议将源目的IP、源目的端口、本地生成的随机数、日期和时间进展散列操作。

Cookie成为留在IKE协商中交换信息的唯一标识,实际上cookie是用来防止DOS攻击的,它把和其他设备建立IPSec所需要的连接信息不是以缓存的形式包存在路由器里,而是把这些信息HASH成个cookie值。

 

〔2〕1&2消息:

 

消息1:

由发送方〔协商发起端〕发起,携带一些参数,发送方向接收方发送一条包含一组或多组策略提议〔Raisecom工业路由器中是多组〕,在策略提议中包括5元组信息:

 

加密算法——DES; 

散列算法——MD5-HMAC;    

DH——Diffie-Hellman组-2;

认证方式——预共享;     

IKE SA寿命。

 

如下是Raisecom中高级选项配置的策略:

〔认证方式采用“预共享〞方式〕

〔对于DPD,详细作用不知道,默认是关闭〕 

下面简要介绍一下上述五元组信息:

〔a〕协商形式:

可以选择主形式〔Main Mode〕或者野蛮形式〔Aggressive〕。

中选择主形式时,只能使用IP地址作为ID的类型。

当用户端设备的IP地址为动态获取的情况时,需要选择野蛮形式。

IKE野蛮形式相对于主形式来说更加灵敏,可以选择根据协商发起端的IP地址或者ID来查找对应的身份验证字,并最终完成协商。

    

〔b〕验证方法AH〔Authentication Header〕:

 身份验证确认通信双方的身份。

目前在IKE提议中,仅可用pre-shared-key〔预共享密钥〕身份验证方法,使用该验证方法时必须配置身份验证字,并且两端的密钥要完全一致。

 

〔c〕加密算法:

 包括DES和3DES加密算法;DES算法采用56bits的密钥进展加密,3DES算法采用112bits的密钥进展加密;AES128〔Advanced Encryption Standard,即高级加密标准〕采用128bits的密钥进展加密;AES192〔Advanced Encryption Standard,即高级加密标准〕采用192bits的密钥进展加密;AES256〔Advanced Encryption Standard,即高级加密标准〕采用256bits的密钥进展加密; 一般来说,密钥越长的算法强度越高,受保护数据越难被破解,但消耗的计算资源会更多。

 

〔d〕Diffie-Hellman组标识〔DH〕:

 用户可以选择Group 1即768bit 或 Group 2即1024bit。

    

〔e〕ISAKMP-SA生存周期:

 IKE使用了两个阶段为IPSec进展密钥协商并建立平安联盟。

第一阶段,通信各方彼此间建立了一个已通过身份验证和平安保护的通道,即ISAKMP平安联盟〔ISAKMP SA〕;第二阶段,用在第一阶段建立的平安通道为IPSec协商平安效劳,即为IPSec协商详细的平安联盟,建立IPSec SA,IPSec SA用于最终的IP数据平安传送。

ISAKMP-SA生存周期可以设定为60-604800之间的一个整数。

    

〔f〕定时发送keepalive报文〔不是必须携带〕:

 IKE通过ISAKMP SA向对端定时发送KeepAlive报文维护该条ISAKMP SA的链路状态。

当对端在配置的超时时间内未收到此KeepAlive报文时,如该ISAKMP SA带有timeout标记,那么删除该ISAKMP SA及由其协商的IPSec SA;否那么,将其标记为timeout。

 

如下是抓包获取到的信息〔设备为Raisecom工业路由器〕:

由上图可知,形式为主形式,载荷类型为SA。

SA的数目和内容详见下列图:

将载荷类型SA展开如下:

 由下列图可知,该SA中携带了三组策略,正好Raisecom中web页面配置的三组策略:

第一组Type Payload:

Transform〔3〕# 0展开如下:

SA生存时间为10800;

加密机制为DES;

认证算法为SHA;

认证方法选择PSK〔预共享密钥〕;

DH为Group 2; 

第二组Type Payload:

Transform〔3〕# 1展开如下:

第三组 Type Payload:

Transform〔3〕# 2展开如下:

报文中的组顺序和web页面上组顺序不一致,这个无所谓,只要能对上即可,因为实际中只要这三个组能匹配上即可。

 

消息2:

由响应者〔即对端设备〕回应,内容根本一样,主要与发起者比拟,是否

与发起者的IKE策略匹配,不匹配那么进展下一组比拟,假如最终都找不到匹配,隧道就停顿建立; 

〔note:

发起者将其所有IKE策略发给承受者,承受者那么在自己的策略中寻找与之匹配的策略;比照顺序从优先级号小的到大的;默认策略实际就是个模板没作用,假如认证只配置预共享的话,其他参数就会copy默认策略里的〕 报文如下:

由上图可知,承受端回应的消息中,匹配了发送端的一条策略,假如有一条匹配,那么不需要匹配其他策略。

 

在消息1和消息2中报错可能出现的原因:

 

〔a〕peer路由不通〔即,外层的IP地址不通,这里对应的是发送发10.1.1.3和接收方10.1.1.2这两个地址不通,这里配置简单属于直连,而实际大型组网中,中间会有很多其他网元,往往是通过配置动态路由〕; 

〔b〕crypto iskmp key没有设置〔即,没有配置预共享密钥〕; 

〔c〕一阶段的策略不匹配〔这时需要检查两端设备的策略有不一致地方么〕  

〔3〕3&4消息:

密钥交换过程 

消息3:

由发起者〔即,隧道建立的发起者〕发出,但是在发出消息3之前,有个过程必需要完成,就是Diffie-Hellman算法过程。

 

Diffie-Hellman算法过程目的:

在消息1和消息2中所协商的算法,它们必须需要一个KEY〔即,共享密钥中设置的密码〕,这个KEY在两个对等体上必须一样,但同时这个KEY不能在链路中传递,因为传递KEY是一个不平安的手段。

所以,该过程的目的是分别在两个对等体间独立地生成一个DH公共值,该公共值有什么作用?

因为两个对等体上都生成该DH公共值后,它们会在接下来的消息3和消息4中传送给对方,打个比方,A收到了B的DH公共值,B收到了A的DH公共值。

当A、B都收到了对方的该公共值后,问题就好解决了。

因为有一个公式在数学中被论证成立,那么如今借助公式,就可以在两个对等体上生成一个只有它们两个对等体知道的一样的KEY,该公式为:

 

发起者密钥=(Xb)amod p  =  (Xa)bmod p=响应者密钥 

note:

这个密钥不是最终算法中使用的KEY,但两个对等体通过该KEY材料来生成另外三个密钥,分别是:

 

SKEYID_d——此密钥被用于计算后续IPSec密钥资源; 

SKEYID_a——此密钥被用于提供后续IKE消息的数据完好性以及认证; 

SKEYID_e——此密钥被用于对后续IKE消息进展加密; 

所以,由发起者发起的第三条消息主要是向对等体发送自己的DH公共值和Nonce随机数;

实际报文如下:

由上述报文可知,发送方开场向接收方发送自己的DH公共值以及随机数; 

对端收到后,可以根据“消息1&消息2〞中协商的DH算法,以及发送端在消息3中给出的DH和nonce值来生成SKEYID_d、SKEYID_a、SKEYID_e三个密钥; 

消息4:

同消息3,告知发送端自己的DH公共值和Nonce随机数; 

报文如下:

由上述报文可知,承受方开场向发送方发送自己的DH公共值以及随机数; 

对端收到后,可以根据“消息1&消息2〞中协商的DH算法,以及承受端在消息4中给出的DH和nonce值来生成SKEYID_d、SKEYID_a、SKEYID_e三个密钥;

〔3〕5&6消息:

用于双方彼此验证。

由“于消息1&消息2〞的算法,以及“消息3&消息4〞生成的三个KEY,所以在后续的“消息5&消息6〞就能被加密传送,这个过程是受SKEYID_e加密保护的。

 

预共享密钥的作用:

为了正确生成密钥,每一个对等体必须找到与对方相对应的预共享密钥,当有许多对等体连接时,每一对对等体两端都需要配置预共享密钥,每一对等体都必须使用ISAKMP分组的源IP来查找与其对等体对应的预共享密钥〔此时,由于ID还没到,彼此先用HASH来彼此验证对方〕HASH认证成分——SKEYID_a、cookieA、cookieB、preshare_key、SA payload、转换集和策略。

 

消息5:

由发起者向响应者发送,主要是为了验证对端自己就是自己想要与之通信的对端。

这可以通过预共享、数字签名、加密临时值来实现。

消息6:

由响应者向发起者发送,主要目的和第五条一样:

在消息5和消息6中报错可能出现的原因:

 

〔1〕crypto iskmp key设置错了;〔即,两端的预共享密钥值设置的不一样〕

〔五〕 第二阶段:

 

第2阶段用三个消息来完成,目的是协商IPSec SA,而且只有一种形式,快速形式〔Quick Mode〕,快速形式的协商是受第1阶段建立的IKE SA保护的。

对应设备上需要配置的参数〔以R202i-VM为例〕

〔1〕1&2消息:

发送IPSec SA的属性,协商IPSec SA 

消息1:

发起者会在第一条消息中发送IPSec SA的转换属性。

其中包含:

HASH、IPSec

策略提议、Nonce可可选的DH以及身份ID。

 

〔a〕HASH:

是用于给承受方作为完好性检验的,用于再次认证对等体〔必须〕HASH的成分和5-6阶段一样; 

〔b〕IPSec策略提议:

其中包括了平安协议〔AH、ESP或AH-ESP〕、SPI、散列算法、形式〔隧道形式或传输形式〕、IPSec SA生命周期〔必选〕;    

〔c〕Nonce:

用于防重放攻击,还被用作密码生成的材料,仅当启用PFS时用到;    

〔d〕ID:

描绘IPSec SA是哪些地址、协议和端口建立的,即感兴趣流中的IP地址; 

〔e〕PFS〔利用DH交换,可选〕:

用了PFS后,就会在第二阶段重新DH出一个数据加密KEY,这个KEY和以前IKE协商出来的KEY没有任何关系,然后由这个新KEY来加密数据,只有到这个IPSec SA的生命周期后,会再次DH出新的KEY,这样,平安性就进步了〔普通IPSec SA过期或密钥超时时,重新生成的数据加密密钥还是根据第一阶段DH出来的SKEYID_d衍生出来的〕,PFS启用后,数据加密局部使用的密钥就没有了衍生的过程。

 

〔f〕DH:

重新协商IPSec SA时使用的密钥〔正常情况下,IPSec阶段使用的密钥都是由SKEYID_d衍生而来的,密钥之间都有一定的关系,就算IPSec SA超时,新的KEY还是和SKEYID_d有一定的关系〕。

以上数据均被加密处理;

基于以上,第二阶段有几个概念需要理清:

 

〔a〕封装形式:

包括传输形式〔Transport〕和隧道形式〔Tunnel〕。

 

传输形式:

不使用新的IP头部,IP头部中的源/目的IP为通信的两个实点〔当通信点等于加密点时,使用传输形式〕; 

隧道形式:

需要封装一个新的IP头部,新的IP头部中源/目的IP为中间的VPN网

关设备地址〔当通信点不等于加密点时使用隧道形式〕;

二者比拟:

 

从平安性来讲,隧道形式优于传输形式,隧道形式可以完全地对原始IP数据报进展验证和加密以及可以使用IPSec对等体的IP地址来隐藏客户机的IP地址;

从性能来讲,隧道形式比传输形式占用更多带宽,一个额外的IP头; 

因此,到底使用哪种形式需要按照实际的应用场景进展权衡。

〔b〕平安联盟生存周期:

 

所有在平安策略视图下没有单独配置生存周期的平安联盟,都采用全局生存周期。

IKE〔因特网密钥交换协议〕为IPSec协商建立平安联盟〔SA〕时,采用本地设置的和对端提议的生存周期中较小的一个〔即,当两端配置的生存周期不一致时,那么就用最小的那个值〕。

平安联盟生存周期的输入范围:

30~604800; 所以,两端设备配置的生存周期不一致不会导致隧道无法建立。

 

〔c〕采用的平安协议:

 

平安提议中需要选择所采用的平安协议,用于为IP数据包提供平

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1