IPSecVPN详解(深入浅出简单易懂)讲解.pdf

上传人:白大夫 文档编号:5424218 上传时间:2020-05-06 格式:PDF 页数:32 大小:7.05MB
返回 下载 相关 举报
IPSecVPN详解(深入浅出简单易懂)讲解.pdf_第1页
第1页 / 共32页
IPSecVPN详解(深入浅出简单易懂)讲解.pdf_第2页
第2页 / 共32页
IPSecVPN详解(深入浅出简单易懂)讲解.pdf_第3页
第3页 / 共32页
IPSecVPN详解(深入浅出简单易懂)讲解.pdf_第4页
第4页 / 共32页
IPSecVPN详解(深入浅出简单易懂)讲解.pdf_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《IPSecVPN详解(深入浅出简单易懂)讲解.pdf》由会员分享,可在线阅读,更多相关《IPSecVPN详解(深入浅出简单易懂)讲解.pdf(32页珍藏版)》请在三一文库上搜索。

1、IPSec VPN 详解 1. IPSec概述 IPSec(ip security)是一种开放标准的框架结构,特定的通信方之间在IP 层通过加密和数 据摘要 (hash)等手段,来保证数据包在Internet 网上传输时的私密性(confidentiality) 、完整 性(data integrity) 和真实性 (origin authentication) 。 IPSec只能工作在IP 层,要求 乘客协议 和承载协议 都是 IP协议 1.1. 通过加密保证数据的私密性 私密性:防止信息泄漏给未经授权的个人 通过加密把数据从明文变成无法读懂的密文,从而确保数据的私密性 1.2. 对数据进行

2、hash 运算来保证完整性 完整性:数据没有被非法篡改 通过对数据进行hash 运算,产生类似于指纹的数据摘要,以保证数据的完整性 对数据和密钥一起进行hash运算 攻击者篡改数据后,可以根据修改后的数据生成新的摘要,以此掩盖自己的攻击行为。 通过把数据和密钥一起进行hash 运算,可以有效抵御上述攻击。 DH 算法的基本原理 1.3. 通过身份认证保证数据的真实性 真实性:数据确实是由特定的对端发出 通过身份认证可以保证数据的真实性。常用的身份认证方式包括: Pre-shared key,预共享密钥 RSA Signature ,数字签名 1.3.1. 预共享密钥 预共享密钥,是指通信双方在

3、配置时手工输入相同的密钥。 1.3.2. 数字证书 RSA密钥对,一个是可以向大家公开的公钥,另一个是只有自己知道的私钥。 用公钥加密过的数据只有对应的私钥才能解开,反之亦然。 数字证书中存储了公钥,以及用户名等身份信息。 2. IPSec框架结构 2.1. IPSec 安全协议 IPSec 安全协议描述了如何利用加密和hash 来保护数据安全 AH (Authentication Header) 网络认证协议,只能进行数据摘要(hash) ,不能实现数据加 密 ah-md5-hmac 、ah-sha-hmac ESP (Encapsulating Security Payload) 封装安全

4、载荷协议,能够进行数据加密和数据摘要 (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 模式 只进行地址映射

5、时,ESP可与 NAT一起工作。 进行端口映射时,需要修改端口,而ESP已经对端口号进行了加密和/或 hash,所以将无 法进行。 启用 IPSec NAT穿越后,会在ESP头前增加一个UDP头,就可以进行端口映射。 4. IPSec 安全通道协商过程 需要保护的流量流经路由器,触发路由器启动相关的协商过程。 启动 IKE (Internet key exchange, 密钥管理协议 )阶段 1,对通信双方进行身份认证,并在两 端之间建立一条安全的通道。 启动 IKE阶段 2,在上述安全通道上协商IPSec参数。 按协商好的IPSec参数对数据流进行加密、hash 等保护。 4.1. IKE

6、密钥交换协议 Internet 密钥交换( IKE )解决了在不安全的网络环境(如Internet )中安全地建立或更 新共享密钥的问题。IKE 是非常通用的协议,不仅可为IPsec 协商安全关联,而且可以为 SNMPv3、RIPv2、OSPFv2等任何要求保密的协议协商安全参数。 一、 IKE的作用当应用环境的规模较小时,可以用手工配置SA ;当应用环境规模较大、 参与的节点位置不固定时,IKE可自动地为参与通信的实体协商SA, 并对安全关联库 (SAD) 维护,保障通信安全。 二、 IKE的机制 IKE属于一种混合型协议,由 Internet 安全关联和密钥管理协议(ISAKMP) 和两种

7、密钥交换协议OAKLEY与 SKEME组成。 IKE创建在由ISAKMP定义的框架上,沿用了 OAKLEY 的密钥交换模式以及 SKEME的共享和密钥更新技术,还定义了 它自己的两种密钥交 换方式 。 IKE使用了两个阶段的ISAKMP : 第一阶段, 协商创建一个通信信道(IKE SA ) ,并对该信道进行验证,为双方进一步的IKE 通信提供机密性、消息完整性以及消息源验证服务; 第二阶段,使用已建立的IKE SA建立 IPsec SA 。 IKE共定义了 5 种交换。阶段1 有两种模式的交换:对身份进行保护的“主模式”交换 以及根据基本ISAKMP 文档制订的“野蛮模式”交换。阶段2 交换

8、使用“快速模式”交换。 IKE 自己定义了两种交换:1 为通信各方间协商一个新的Diffie- Hellman 组类型的“新组模 式”交换; 2 在 IKE 通信双方间传送错误及状态消息的ISAKMP信息交换。 1主模式交换主模式交换提供了身份保护机制,经过三个步骤,共交换了六条消息。 三个步骤分别是策略协商交换、Diffie- Hellman 共享值、 nonce 交换以及身份验证交换(如 图 2 所示) 。 2野蛮模式交换野蛮模式交换也分为三个步骤,但只交换三条消息:头两条消息协商 策略,交换Diffie -Hellman 公开值必需的辅助数据以及身份信息;第二条消息认证响应方; 第三条消

9、息认证发起方,并为发起方提供在场的证据(如图3 所示)。 3快速模式交换快速模式交换通过三条消息建立IPsec SA :头两条消息协商IPsec SA 的各项参数值,并生成IPsec 使用的密钥;第二条消息还为响应方提供在场的证据;第三条 消息为发起方提供在场的证据(如图4 所示) 。 4新组模式交换通信双方通过新组模式交换协商新的Diffie Hellman 组。新组模式交 换属于一种请求/ 响应交换。发送方发送提议的组的标识符及其特征,如果响应方能够接收 提议,就用完全一样的消息应答(如图5 所示)。 5ISAKMP信息交换参与IKE通信的双方均能向对方发送错误及状态提示消息。这实际 上并

10、非真正意义上的交换,而只是发送单独一条消息,不需要确认(如图6 所示) 。 4.2. IKE 阶段 1 协商建立IKE安全通道所使用的参数,包括: 加密算法、 Hash 算法、 DH 算法、身份认证方法、存活时间 上述IKE 参数组合成集合,称为IKE policy。IKE 协商就是要在通信双方之间找到相同的 policy。 4.3. IKE 阶段 2 双方协商IPSec安全参数,称为变换集transform set ,包括: 加密算法、 Hash 算法、安全协议、封装模式、存活时间 IKE与 IPSec安全参数的比较 4.4. IPSec SA IPSec SA ( 安全关联, Securi

11、ty Association): SA由 SPD (security policy database)和 SAD(SA database) 组成。 IPSec SA ( 安全关联, Security Association): SPI (Security Parameter Index),由 IKE自动分配 发送数据包时,会把SPI插入到 IPSec头中 接收到数据包后,根据SPI值查找 SAD和 SPD ,从而获知解密数据包所需的加解密算法、 hash 算法等。 一个 SA只记录单向的参数,所以一个 IPSec连接 会有两个 IPSec SA 。 使用 SPI可以标识路由器与不同对象之间的连

12、接。 达到 lifetime 以后,原有的IPSec SA 就会被删除 如果正在传输数据,系统会在原SA超时之前自动协商建立新的SA ,从而保证数据的传输 不会因此而中断。 4.5. IPsec SA 示例 5. Ipsec phase1 and phase2 (一) IPSec VPN隧道的建立过程分为两个阶段: 第一个阶段: 分为两种模式主模式(Main Mode 和野蛮模式 (又称主动模式Aggressive) 第二个阶段:快速模式(Quick Mode ) 区别:主模式与野蛮模式的区别: (1)野蛮模式协商比主模式协商更快。 因为主模式需要交互6 个消息,而野蛮模式只需要交互3 个消息

13、; (2)主模式协商比野蛮模式协商更严谨、更安全。 因为主模式在“消息5&消息 6”中对 ID 信息进行了加密。而野蛮模式由于受到交换次 数的限制, ID 消息在“消息1&消息 2”中以明文的方式发送给对端。即主模式对对端身份 进行了保护,而野蛮模式则没有。 (二) 两个阶段分别完成任务: (1)第一个阶段IKE设置,有三个任务需要完成: (a) 协商一系列算法和参数(这些算法和参数用于保护隧道建立过程中的数据); (b)必须计算出两边使用的加密KEY值,例如,两边使用3DES算法加密, 3DES 算法则需要一个密码,这个密码两端必须一样,但又不能在链路上传递。 (c)对等体的验证,如何才能知

14、道对端就是我要与之通信的对端。这里验证有三 种方法:预共享、数字签名和加密临时值。 上 面 一 系 列 过 程 都 是IKE( Internet 密 钥 交 换 协 议 , 大 多 数 厂 商 都 把 这 个 叫 做 VPNs Gateway)这个协议来实现。 对于第一阶段需要注意以下几点: (a1)只有 remote vpn 和 easy vpn是积极模式的,其他都是用主模式来协商的; (a2)让 IKE对等体彼此验证对方并确定会话密钥,这个阶段用DH进行密钥交换, 创建完 IKE SA后,所有后续的协商都将通过加密和完整性检查来保护。 (a3)第一阶段帮助在对等体之间创建了一条安全通道,使

15、后面的第二阶段过程协 商受到安全保护。 (2)第二阶段:协商 IPSec SA使用的安全参数,创建IPSec SA (SA可以加密两个对等 体之间的数据,这才是真正的需要加密的用户数据),使用 AH 或 ESP来加密 IP数据流。至 此 IPSec VPN隧道才真正建立起来。 (三) 综上,有如下结论: 第一阶段作用:对等体之间彼此验证对方,并协商出IKE SA ,保护第二阶段中IPSec SA 协商过程; 第二阶段作用:协商IPSec单向 SA ,为保护IP数据流而创建; (四) 举例验证:以主模式,AH 协议来简单分析一下IPSec VPN链接建立的过程(附带报 文) : 第一个阶段三个任

16、务,分别用 6 个消息来完成, 每两个为一组, 这些消息的具体格式取 决于使用的对等体认证方法,使用预共享密钥进行验证的主模式(6 条) 协商过程使用ISAKMP 消息格式来传递(基于UDP,端口号为500) 。6 条消息如下: (1)准备工作: 在前 2 条消息发送之前,发送者和接受者必须先计算出各自的cookie(可以防重放和 DOS攻击) ,这些 cookie 用于标识每个单独的协商交换消息。 cookie RFC建议将源目的IP、源目的端口、本地生成的随机数、日期和时间进行散 列操作。 Cookie 成为留在IKE 协商中交换信息的唯一标识,实际上cookie 是用来防止DOS 攻击的

17、,它把和其他设备建立IPSec所需要的连接信息不是以缓存的形式包存在路由器里, 而是把这些信息HASH成个 cookie 值。 (2)1&2 消息: 消息 1:由发送方(协商发起端)发起,携带一些参数,发送方向接收方发送一条包含 一组或多组策略提议(Raisecom工业路由器中是多组) ,在策略提议中包括5 元组信息: 加密算法DES ; 散列算法MD5-HMAC; DH Diffie-Hellman 组-2; 认证方式预共享; IKE SA寿命。 如下是 Raisecom 中高级选项配置的策略: (认证方式采用“预共享”方式) (对于 DPD,具体作用不知道,默认是关闭) 下面简要介绍一下上

18、述五元组信息: (a)协商模式:可以选择主模式(Main Mode )或者野蛮模式(Aggressive ) 。当选择主 模式时, 只能使用IP地址作为ID 的类型。当用户端设备的IP地址为动态获取的情况时,需 要选择野蛮模式。IKE野蛮模式相对于主模式来说更加灵活,可以选择根据协商发起端的IP 地址或者ID 来查找对应的身份验证字,并最终完成协商。 (b)验证方法AH (Authentication Header ) :身份验证确认通信双方的身份。目前在 IKE 提议中,仅可用pre-shared-key(预共享密钥)身份验证方法,使用该验证方法时必须配置 身份验证字,并且两端的密钥要完全一

19、致。 (c)加密算法:包括 DES和 3DES加密算法; DES算法采用56bits 的密钥进行加密, 3DES算法采用112bits 的密钥进行加密;AES128 ( Advanced Encryption Standard ,即高级加 密标准)采用128bits 的密钥进行加密;AES192 ( Advanced Encryption Standard ,即高级加密 标准)采用192bits 的密钥进行加密;AES256 (Advanced Encryption Standard ,即高级加密标 准)采用 256bits 的密钥进行加密;一般来说,密钥越长的算法强度越高,受保护数据越难 被

20、破解,但消耗的计算资源会更多。 ( 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 生存周期

21、可以设定为60-604800 之间的一个整数。 (f)定时发送keepalive 报文(不是必须携带) : IKE通过 ISAKMP SA向对端定时发送 KeepAlive 报文维护该条ISAKMP SA 的链路状态。当对端在配置的超时时间内未收到此 KeepAlive 报文时,如该ISAKMP SA带有 timeout 标记,则删除该ISAKMP SA及由其协商的 IPSec SA ;否则,将其标记为timeout 。 如下是抓包获取到的信息(设备为Raisecom 工业路由器): 由上图可知,模式为主模式,载荷类型为SA 。SA的数目和内容详见下图: 将载荷类型SA 展开如下:由下图可知,

22、该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:由响应者(即对端设备

23、)回应,内容基本一样,主要与发起者比较,是否 与发起者的IKE策略匹配,不匹配则进行下一组比较,如果最终都找不到匹配,隧道就停止 建立; (note:发起者将其所有IKE策略发给接受者,接受者则在自己的策略中寻找与之匹配 的策略; 对比顺序从优先级号小的到大的;默认策略实际就是个模板没作用,如果认证只配 置预共享的话,其他参数就会copy 默认策略里的)报文如下: 由上图可知,接受端回应的消息中,匹配了发送端的一条策略,如果有一条匹配,则不 需要匹配其他策略。 在消息 1 和消息 2 中报错可能出现的原因: (a)peer 路由不通(即,外层的IP地址不通,这里对应的是发送发10.1.1.3

24、和接收方 10.1.1.2 这两个地址不通,这里配置简单属于直连,而实际大型组网中,中间会有很多其他 网元,往往是通过配置动态路由); (b)crypto iskmp key 没有设置(即,没有配置预共享密钥); (c)一阶段的策略不匹配(这时需要检查两端设备的策略有不一致地方么) (3)3&4 消息:密钥交换过程 消息 3:由发起者(即,隧道建立的发起者)发出,但是在发出消息3 之前,有个过程 必须要完成,就是Diffie-Hellman 算法过程。 Diffie-Hellman 算法过程目的:在消息1 和消息 2 中所协商的算法,它们必须需要一个 KEY (即,共享密钥中设置的密码),这个

25、KEY在两个对等体上必须一样,但同时这个KEY 不能在链路中传递,因为传递KEY是一个不安全的手段。所以, 该过程的目的是分别在两个 对等体间独立地生成一个DH 公共值,该公共值有什么作用?因为两个对等体上都生成该 DH 公共值后,它们会在接下来的消息3 和消息 4 中传送给对方,打个比方,A 收到了 B 的 DH 公共值, B收到了 A 的 DH公共值。当A、B都收到了对方的该公共值后,问题就好解决 了。因为有一个公式在数学中被论证成立,那么现在借助公式,就可以在两个对等体上生成 一个只有它们两个对等体知道的相同的KEY ,该公式为: 发起者密钥 =(Xb)amod p = (Xa)bmod

26、 p=响应者密钥 note:这个密钥不是最终算法中使用的KEY ,但两个对等体通过该KEY材料来生成另外 三个密钥,分别是: SKEYID_d 此密钥被用于计算后续IPSec密钥资源; SKEYID_a 此密钥被用于提供后续IKE消息的数据完整性以及认证; SKEYID_e 此密钥被用于对后续IKE消息进行加密; 所以,由发起者发起的第三条消息主要是向对等体发送自己的DH公共值和Nonce 随机 数; 实际报文如下: 由上述报文可知,发送方开始向接收方发送自己的DH 公共值以及随机数; 对端收到后,可以根据“消息1&消息 2”中协商的DH 算法,以及发送端在消息3 中给 出的 DH 和 non

27、ce 值来生成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”就能被加密传送,这

28、个过程是受 SKEYID_e加密保护的。 预共享密钥的作用:为了正确生成密钥,每一个对等体必须找到与对方相对应的预共享 密钥, 当有许多对等体连接时,每一对对等体两端都需要配置预共享密钥,每一对等体都必 须使用 ISAKMP分组的源IP来查找与其对等体对应的预共享密钥(此时,由于ID 还没到, 彼此先用HASH 来彼此验证对方)HASH 认证成分SKEYID_a 、 cookieA、 cookieB、 preshare_key、SA payload、转换集和策略。 消息 5:由发起者向响应者发送,主要是为了验证对端自己就是自己想要与之通信的对 端。这可以通过预共享、数字签名、加密临时值来实现。

29、 消息 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、

30、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后,就会在第二阶段重

31、新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还是和 SK

32、EYID_d有一定的关系) 。 以上数据均被加密处理; 基于以上,第二阶段有几个概念需要理清: (a)封装模式:包括传输模式(Transport)和隧道模式(Tunnel) 。 传输模式: 不使用新的IP头部, IP头部中的源 /目的 IP为通信的两个实点(当通信点等 于加密点时,使用传输模式); 隧道模式:需要封装一个新的IP头部,新的IP头部中源 /目的 IP为中间的VPN 网 关设备地址(当通信点不等于加密点时使用隧道模式); 二者比较: 从安全性来讲,隧道模式优于传输模式,隧道模式可以完全地对原始IP 数据报进行验 证和加密以及可以使用IPSec对等体的IP地址来隐藏客户机的IP 地址

33、; 从性能来讲,隧道模式比传输模式占用更多带宽,一个额外的IP头; 因此,到底使用哪种模式需要按照实际的应用场景进行权衡。 (b)安全联盟生存周期: 所有在安全策略视图下没有单独配置生存周期的安全联盟,都采用全局生存周期。IKE (因特网密钥交换协议)为IPSec协商建立安全联盟(SA)时,采用本地设置的和对端提议 的生存周期中较小的一个(即, 当两端配置的生存周期不一致时,那么就用最小的那个值)。 安全联盟生存周期的输入范围:30604800; 所以,两端设备配置的生存周期不一致不会 导致隧道无法建立。 (c)采用的安全协议: 安全提议中需要选择所采用的安全协议,用于为IP 数据包提供安全。

34、目前可选的安全 协议有 AH (验证报头) 和 ESP(封装安全有效负载) , 也可以指定同时使用AH 和 ESP(AH-ESP ) 。 安全隧道两端所选择的安全协议必须一致。 所以,第二阶段协商不起来,两端协议是否一致是一个排查重点。 AH 协议:类似于ICMP、TCP 、UDP的 IP协议,分配给它的协议号为51。提供如下 安全功能:数据完整性服务、提供抗数据回放攻击、不提供数据加密性(不加密)。 (note:AH 是不提供数据的加密的,所以在报文中可以看到完整的DATA部分) AH报 文头格式: AH 在两种模式下的封装: 传输模式:“除了易变字段”指的是:对IP报文中可变域以外的数据进

35、行认证 隧道模式:“除了易变字段”指的是:对新 IP报文头部中可变域以外的数据进行认证 ESP协议:协议号为50,提供如下功能:提供数据加密性(支持加密)、提供数据 完整性、提供抗回放攻击能力; ESP 的数据验证和完整性服务只包括ESP 的头和有效载荷 (不包括外部的IP头部) (note: ESP是提供加密的,所以抓取的ESP报文,是看不到原来被封装的数据部分) ESP在两种模式下的封装: AH-ESP共用: 隧道模式下: (d)ESP协议加密算法: ESP能够对 IP报文内容进行加密保护,防止报文内容在传输过程中被窥探。加密算法的 实现主要通过对称密钥系统,即使用相同的密钥对数据进行加密

36、和解密。一般来说IPSec使 用两种加密算法:DES和 3DES 。 (e)ESP协议即 AH 协议的验证算法: AH 和 ESP都能够对IP数据包的完整性进行验证,以判别报文在传输过程中是否被篡改。 一般来说IPSec使用两种验证算法:MD5 和 SHA-1 MD5:MD5 输入任意长度的消息,产生128bit 的消息摘要; SHA-1 : SHA-1输入长度小于2 的 64 次方比特的消息,产生160bit 的消息摘要。SHA-1 的摘要长于MD5,因而是更安全的。 (f)使用 NAT穿越: 在 IPSec/IKE组建的 VPN 隧道中,若存在NAT 安全网关设备,则必须配置IPSec/I

37、KE的 NAT穿越功能。 消息 2:响应者向发起者发送第二条消息,同意第一条消息中的属性,同时,也能 起到确认收到对端消息的作用。 在消息 1 和消息 2 中报错可能出现的原因: (1)双方的模式不匹配(即,可能一端用传输模式,另一端用隧道模式); (2)感兴趣流不对称(如上述消息1 中的( d) ) ; 消息 3:发送方发送第三条消息,其中包含一个HASH,其作用是确认接收方的消息以 及证明发送方处于Active 状态(表示发送方的第一条消息不是伪造的),这一步一旦完成, 隧道就建立起来了,用户的数据就能被放入隧道中传递。 6. DH 密钥交换算法 迪菲赫尔曼密钥交换(Diffie Hell

38、man key exchange,简称 “ D H”) 是一种安全协议。 它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个 密钥可以在后续的通讯中作为对称密钥来加密通讯内容。 (1)、算法描述 离散对数的概念: 原根:如果g是素数 p 的一个原根,那么数值: gmodp,g2 modp , ,g(p-1) modp 是各不相同的整数,且以某种排列方式组成了从1 到 p-1 的所有整数。 离散对数:如果对于一个整数b 和素数 p 的一个原根g,可以找到一个唯一的指数 i, 使得: b =(g 的 i 次方) modp 其中 0 i p-1 那么指数i 称为 b 的

39、以 g 为基数的模p 的离散对数。 Diffie-Hellman 算法的有效性依赖于计算离散对数的难度,其含义是:当已知大素数p 和它的一个原根g 后,对给定的 b,要计算 i ,被认为是很困难的,而给定 i 计算 b 却相对 容易。 6.1. D-H 算法原理 假如用户 Alice 和用户 Bob 希望交换一个密钥。 取素数 p 和整数 g, g是 p 的一个原根,公开g 和 p。 A 选择随机数ap,并计算A=ga mod p。 B 选择随机数bp,并计算B=gb mod p。 将 a、b 保密而将 A、B 公开让另一方得到。 Alice 计算密钥的方式是:K=(B) A modp Bob

40、 计算密钥的方式是:K=(A) B modp 证明: Alice 计算出: K= (B) a mod p = (gb mod p) a mod p = (gb) a mod p ,即: Bob 计算出: K=(A) b mod p = (ga mod p) b mod p = (ga)b mod p ,即: 由于 a 和 b 是保密的,而第三方只有p、g、 A、B 可以利用,只有通过取离散对数来确 定密钥,但对于大的素数p,计算离散对数是十分困难的。 6.2. D-H 算法示例 假如用户 Alice 和用户 Bob 希望交换一个密钥。 取一个素数p =97 和 97 的一个原根g=5。 Ali

41、ce 和 Bob 分别选择秘密密钥a=36 和 b=58,并计算各自的公开密钥: A=ga mod p=536 mod 97=50 B=gb mod p=558 mod 97=44 Alice 和 Bob 交换了公开密钥之后,计算共享密钥如下: Alice:K=(B) a mod p=4436 mod 97=75 Bob: K=(A) b mod p=5058 mod 97=75 6.3. D-H 算法的安全性 当然,为了使这个例子变得安全,必须使用非常大的a, b 以及 p, 否则可以实验所有 的可能取值。 (上例中总共有最多97 个这样的值 , 就算 a和 b 很大也无济于事)。 如果 p

42、 是一个至少300 位的质数, 并且 a 和 b 至少有 100 位长, 那么即使使用全人类 所有的计算资源和当今最好的算法也不可能从g, p 和 g(a*b) mod p 中计算出a*b 。 这个问题就是著名的离散对数问题。注意 g 则不需要很大, 并且在一般的实践中通常是 2 或者 5。 在最初的描述中,迪菲赫尔曼密钥交换本身并没有提供通讯双方的身份验证服务,因 此它很容易受到中间人攻击。一个中间人在信道的中央进行两次迪菲赫尔曼密钥交换, 一次和 Alice 另一次和 Bob,就能够成功的向Alice 假装自己是Bob,反之亦然。而攻击者可 以解密 (读取和存储)任何一个人的信息并重新加密信息,然后传递给另一个人。因此通常 都需要一个能够验证通讯双方身份的机制来防止这类攻击。 有很多种安全身份验证解决方案使用到了迪菲赫尔曼密钥交换。例如当Alice 和 Bob 共有一个公钥基础设施时,他们可以将他们的返回密钥进行签名。

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1