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

上传人:一*** 文档编号:809139 上传时间:2019-07-16 格式:DOC 页数:32 大小:3.39MB
返回 下载 相关 举报
IPSecVPN详解(深入浅出简单易懂.).doc_第1页
第1页 / 共32页
IPSecVPN详解(深入浅出简单易懂.).doc_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《IPSecVPN详解(深入浅出简单易懂.).doc》由会员分享,可在线阅读,更多相关《IPSecVPN详解(深入浅出简单易懂.).doc(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,预

3、共享密钥RSA Signature,数字签名1.3.1. 预共享密钥预共享密钥预共享密钥,是指通信双方在配置时手工输入相同的密钥。1.3.2. 数字证书数字证书RSA 密钥对,一个是可以向大家公开的公钥,另一个是只有自己知道的私钥。 用公钥加密过的数据只有对应的私钥才能解开,反之亦然。 数字证书中存储了公钥,以及用户名等身份信息。2.IPSec 框架结构框架结构2.1.IPSec 安全协议安全协议IPSec 安全协议描述了如何利用加密和安全协议描述了如何利用加密和 hash 来保护数据安全来保护数据安全AH (Authentication Header)网络认证协议,只能进行数据摘要(hash

4、) ,不能实现数据加 密 ah-md5-hmac、ah-sha-hmacESP (Encapsulating Security Payload)封装安全载荷协议,能够进行数据加密和数据摘要(hash)esp-des、esp-3des、esp-md5-hmac、esp-sha-hmac2.2.IPSec 封装模式封装模式IPSec 支持两种封装模式:传输模式和隧道模式 传输模式:不改变原有的 IP 包头,通常用于主机与主机之间。隧道模式:增加新的 IP 头,通常用于私网与私网之间通过公网进行通信。3.IPSec 与与 NAT3.1.AH 模式模式AH 模式无法与 NAT 一起运行,因为 AH 对

5、包括 IP 地址在内的整个 IP 包进行 hash 运算, 而 NAT 会改变 IP 地址,从而破坏 AH 的 hash 值。3.2.ESP 模式模式只进行地址映射时,ESP 可与 NAT 一起工作。 进行端口映射时,需要修改端口,而 ESP 已经对端口号进行了加密和/或 hash,所以将无 法进行。启用 IPSec NAT 穿越后,会在 ESP 头前增加一个 UDP 头,就可以进行端口映射。4.IPSec 安全通道协商过程安全通道协商过程需要保护的流量流经路由器,触发路由器启动相关的协商过程。 启动 IKE (Internet key exchange,密钥管理协议)阶段 1,对通信双方进行

6、身份认证,并在两 端之间建立一条安全的通道。 启动 IKE 阶段 2,在上述安全通道上协商 IPSec 参数。 按协商好的 IPSec 参数对数据流进行加密、hash 等保护。4.1.IKE 密钥交换协议密钥交换协议Internet 密钥交换(IKE)解决了在不安全的网络环境(如 Internet)中安全地建立或更 新共享密钥的问题。IKE 是非常通用的协议,不仅可为 IPsec 协商安全关联,而且可以为 SNMPv3、RIPv2、OSPFv2 等任何要求保密的协议协商安全参数。 一、IKE 的作用当应用环境的规模较小时,可以用手工配置 SA;当应用环境规模较大、 参与的节点位置不固定时, I

7、KE 可自动地为参与通信的实体协商 SA,并对安全关联库 (SAD)维护,保障通信安全。 二、IKE 的机制 IKE 属于一种混合型协议,由 Internet 安全关联和密钥管理协议 (ISAKMP)和两种密钥交换协议 OAKLEY 与 SKEME 组成。IKE 创建在由 ISAKMP 定义的框架 上,沿用了 OAKLEY 的密钥交换模式以及 SKEME 的共享和密钥更新技术,还定义了它自己 的两种密钥交换方式。 IKE 使用了两个阶段的 ISAKMP: 第一阶段,协商创建一个通信信道(IKE SA) ,并对该信道进行验证,为双方进一步的 IKE 通信提供机密性、消息完整性以及消息源验证服务;

8、 第二阶段,使用已建立的 IKE SA 建立 IPsec SA。IKE 共定义了 5 种交换。阶段 1 有两种模式的交换:对身份进行保护的“主模式”交 换以及根据基本 ISAKMP 文档制订的“野蛮模式”交换。阶段 2 交换使用“快速模式”交换。IKE 自己定义了两种交换:1 为通信各方间协商一个新的 Diffie-Hellman 组类型的“新 组模式”交换;2 在 IKE 通信双方间传送错误及状态消息的 ISAKMP 信息交换。 1主模式交换主模式交换提供了身份保护机制,经过三个步骤,共交换了六条消息。三个步骤分别是策略协商交换、Diffie-Hellman 共享值、nonce 交换以及身份

9、验证交换(如 图 2 所示) 。2野蛮模式交换野蛮模式交换也分为三个步骤,但只交换三条消息:头两条消息协商策略,交换 Diffie-Hellman 公开值必需的辅助数据以及身份信息;第二条消息认证响应方; 第三条消息认证发起方,并为发起方提供在场的证据(如图 3 所示) 。3快速模式交换快速模式交换通过三条消息建立 IPsec SA:头两条消息协商 IPsec SA 的各项参数值,并生成 IPsec 使用的密钥;第二条消息还为响应方提供在场的证据;第三 条消息为发起方提供在场的证据(如图 4 所示) 。 4新组模式交换通信双方通过新组模式交换协商新的 DiffieHellman 组。新组模式

10、交换属于一种请求/响应交换。发送方发送提议的组的标识符及其特征,如果响应方能够接 收提议,就用完全一样的消息应答(如图 5 所示) 。5ISAKMP 信息交换参与 IKE 通信的双方均能向对方发送错误及状态提示消息。这实 际上并非真正意义上的交换,而只是发送单独一条消息,不需要确认(如图 6 所示) 。 4.2.IKE 阶段阶段 1协商建立 IKE 安全通道所使用的参数,包括: 加密算法、Hash 算法、DH 算法、身份认证方法、存活时间上述 IKE 参数组合成集合,称为 IKE policy。IKE 协商就是要在通信双方之间找到相同的 policy。4.3.IKE 阶段阶段 2双方协商 IP

11、Sec 安全参数,称为变换集 transform set,包括: 加密算法、Hash 算法、安全协议、封装模式、存活时间IKE 与 IPSec 安全参数的比较4.4.IPSec SAIPSec SA (安全关联,Security Association): SA 由 SPD (security policy database)和 SAD(SA database)组成。IPSec SA (安全关联,Security Association):SPI (Security Parameter Index),由 IKE 自动分配 发送数据包时,会把 SPI 插入到 IPSec 头中 接收到数据包后,根

12、据 SPI 值查找 SAD 和 SPD,从而获知解密数据包所需的加解密算法、 hash 算法等。 一个 SA 只记录单向的参数,所以一个 IPSec 连接会有两个 IPSec SA。 使用 SPI 可以标识路由器与不同对象之间的连接。达到 lifetime 以后,原有的 IPSec SA 就会被删除 如果正在传输数据,系统会在原 SA 超时之前自动协商建立新的 SA,从而保证数据的传 输不会因此而中断。4.5.IPsec SA 示例示例5.Ipsec phase1 and phase2(一) IPSec VPN 隧道的建立过程分为两个阶段: 第一个阶段:分为两种模式主模式(Main Mode

13、和野蛮模式(又称主动模式 Aggressive) 第二个阶段:快速模式(Quick Mode) 区别:主模式与野蛮模式的区别: (1)野蛮模式协商比主模式协商更快。 因为主模式需要交互 6 个消息,而野蛮模式只需要交互 3 个消息; (2)主模式协商比野蛮模式协商更严谨、更安全。 因为主模式在“消息 5&消息 6”中对 ID 信息进行了加密。而野蛮模式由于受到交换 次数的限制,ID 消息在“消息 1&消息 2”中以明文的方式发送给对端。即主模式对对端身 份进行了保护,而野蛮模式则没有。 (二) 两个阶段分别完成任务: (1)第一个阶段 IKE 设置,有三个任务需要完成: (a)协商一系列算法和

14、参数(这些算法和参数用于保护隧道建立过程中的数据) ;(b)必须计算出两边使用的加密 KEY 值,例如,两边使用 3DES 算法加密,3DES 算法则需要一个密码,这个密码两端必须一样,但又不能在链路上传递。 (c)对等体的验证,如何才能知道对端就是我要与之通信的对端。这里验证有三 种方法:预共享、数字签名和加密临时值。 上面一系列过程都是 IKE(Internet 密钥交换协议,大多数厂商都把这个叫做 VPNs Gateway)这个协议来实现。 对于第一阶段需要注意以下几点: (a1)只有 remote vpn 和 easy vpn 是积极模式的,其他都是用主模式来协商的; (a2)让 IK

15、E 对等体彼此验证对方并确定会话密钥,这个阶段用 DH 进行密钥交换, 创建完 IKE SA 后,所有后续的协商都将通过加密和完整性检查来保护。 (a3)第一阶段帮助在对等体之间创建了一条安全通道,使后面的第二阶段过程 协商受到安全保护。 (2)第二阶段: 协商 IPSec SA 使用的安全参数,创建 IPSec SA(SA 可以加密两个对 等体之间的数据,这才是真正的需要加密的用户数据) ,使用 AH 或 ESP 来加密 IP 数据流。 至此 IPSec VPN 隧道才真正建立起来。 (三) 综上,有如下结论: 第一阶段作用:对等体之间彼此验证对方,并协商出 IKE SA,保护第二阶段中 I

16、PSec SA 协商过程; 第二阶段作用:协商 IPSec 单向 SA,为保护 IP 数据流而创建; (四) 举例验证:以主模式,AH 协议来简单分析一下 IPSec VPN 链接建立的过程(附带报 文): 第一个阶段三个任务,分别用 6 个消息来完成,每两个为一组,这些消息的具体格式 取决于使用的对等体认证方法,使用预共享密钥进行验证的主模式(6 条)协商过程使用 ISAKMP 消息格式来传递(基于 UDP,端口号为 500) 。6 条消息如下:(1)准备工作: 在前 2 条消息发送之前,发送者和接受者必须先计算出各自的 cookie(可以防重放和 DOS 攻击) ,这些 cookie 用于

17、标识每个单独的协商交换消息。 cookieRFC 建议将源目的 IP、源目的端口、本地生成的随机数、日期和时间进行散 列操作。Cookie 成为留在 IKE 协商中交换信息的唯一标识,实际上 cookie 是用来防止 DOS 攻击的,它把和其他设备建立 IPSec 所需要的连接信息不是以缓存的形式包存在路由器里, 而是把这些信息 HASH 成个 cookie 值。 (2)1&2 消息: 消息 1:由发送方(协商发起端)发起,携带一些参数,发送方向接收方发送一条包 含一组或多组策略提议(Raisecom 工业路由器中是多组) ,在策略提议中包括 5 元组信息:加密算法DES; 散列算法MD5-H

18、MAC; DHDiffie-Hellman 组-2; 认证方式预共享; IKE SA 寿命。 如下是 Raisecom 中高级选项配置的策略:(认证方式采用“预共享”方式)(对于 DPD,具体作用不知道,默认是关闭) 下面简要介绍一下上述五元组信息: (a)协商模式:可以选择主模式(Main Mode)或者野蛮模式(Aggressive) 。当选择 主模式时,只能使用 IP 地址作为 ID 的类型。当用户端设备的 IP 地址为动态获取的情况时, 需要选择野蛮模式。IKE 野蛮模式相对于主模式来说更加灵活,可以选择根据协商发起端的 IP 地址或者 ID 来查找对应的身份验证字,并最终完成协商。

19、(b)验证方法 AH(Authentication Header): 身份验证确认通信双方的身份。目前在 IKE 提议中,仅可用 pre-shared-key(预共享密钥)身份验证方法,使用该验证方法时必须 配置身份验证字,并且两端的密钥要完全一致。 (c)加密算法: 包括 DES 和 3DES 加密算法;DES 算法采用 56bits 的密钥进行加密, 3DES 算法采用 112bits 的密钥进行加密;AES128(Advanced Encryption Standard,即高级加 密标准)采用 128bits 的密钥进行加密;AES192(Advanced Encryption Stan

20、dard,即高级加 密标准)采用 192bits 的密钥进行加密;AES256(Advanced Encryption Standard,即高级加 密标准)采用 256bits 的密钥进行加密; 一般来说,密钥越长的算法强度越高,受保护数 据越难被破解,但消耗的计算资源会更多。 (d)Diffie-Hellman 组标识(DH): 用户可以选择 Group 1 即 768bit 或 Group 2 即 1024bit。 (e)ISAKMP-SA 生存周期: IKE 使用了两个阶段为 IPSec 进行密钥协商并建立安全联 盟。第一阶段,通信各方彼此间建立了一个已通过身份验证和安全保护的通道,即

21、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 标记,

22、则删除该 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

23、Payload:Transform(3)# 1 展开如下:第三组 Type Payload:Transform(3)# 2 展开如下:报文中的组顺序和 web 页面上组顺序不一致,这个无所谓,只要能对上即可,因为实 际中只要这三个组能匹配上即可。 消息 2:由响应者(即对端设备)回应,内容基本一样,主要与发起者比较,是否 与发起者的 IKE 策略匹配,不匹配则进行下一组比较,如果最终都找不到匹配,隧道就停 止建立; (note:发起者将其所有 IKE 策略发给接受者,接受者则在自己的策略中寻找与之匹 配的策略;对比顺序从优先级号小的到大的;默认策略实际就是个模板没作用,如果认证 只配置预共享的

24、话,其他参数就会 copy 默认策略里的) 报文如下:由上图可知,接受端回应的消息中,匹配了发送端的一条策略,如果有一条匹配,则 不需要匹配其他策略。 在消息 1 和消息 2 中报错可能出现的原因: (a)peer 路由不通(即,外层的 IP 地址不通,这里对应的是发送发 10.1.1.3 和接收 方 10.1.1.2 这两个地址不通,这里配置简单属于直连,而实际大型组网中,中间会有很多 其他网元,往往是通过配置动态路由) ; (b)crypto iskmp key 没有设置(即,没有配置预共享密钥) ; (c)一阶段的策略不匹配(这时需要检查两端设备的策略有不一致地方么) (3)3&4 消息

25、:密钥交换过程 消息 3:由发起者(即,隧道建立的发起者)发出,但是在发出消息 3 之前,有个过 程必须要完成,就是 Diffie-Hellman 算法过程。 Diffie-Hellman 算法过程目的:在消息 1 和消息 2 中所协商的算法,它们必须需要一个 KEY(即,共享密钥中设置的密码) ,这个 KEY 在两个对等体上必须一样,但同时这个 KEY 不能在链路中传递,因为传递 KEY 是一个不安全的手段。所以,该过程的目的是分别在两 个对等体间独立地生成一个 DH 公共值,该公共值有什么作用?因为两个对等体上都生成 该 DH 公共值后,它们会在接下来的消息 3 和消息 4 中传送给对方,

26、打个比方,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

27、_e此密钥被用于对后续 IKE 消息进行加密; 所以,由发起者发起的第三条消息主要是向对等体发送自己的 DH 公共值和 Nonce 随 机数; 实际报文如下:由上述报文可知,发送方开始向接收方发送自己的 DH 公共值以及随机数; 对端收到后,可以根据“消息 1&消息 2”中协商的 DH 算法,以及发送端在消息 3 中 给出的 DH 和 nonce 值来生成 SKEYID_d、SKEYID_a、SKEYID_e 三个密钥; 消息 4:同消息 3,告知发送端自己的 DH 公共值和 Nonce 随机数; 报文如下:由上述报文可知,接受方开始向发送方发送自己的 DH 公共值以及随机数; 对端收到后,可

28、以根据“消息 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 来查

29、找与其对等体对应的预共享密钥(此时,由于 ID 还没 到,彼此先用 HASH 来彼此验证对方)HASH 认证成分 SKEYID_a、cookieA、cookieB、preshare_key、SA payload、转换集和策略。 消息 5:由发起者向响应者发送,主要是为了验证对端自己就是自己想要与之通信的 对端。这可以通过预共享、数字签名、加密临时值来实现。消息 6:由响应者向发起者发送,主要目的和第五条一样:在消息 5 和消息 6 中报错可能出现的原因: (1)crypto iskmp key 设置错了;(即,两端的预共享密钥值设置的不一样)(五) 第二阶段: 第 2 阶段用三个消息来完成,目

30、标是协商 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、E

31、SP 或 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,这样,安全性就提

32、高了 (普通 IPSec SA 过期或密钥超时时,重新生成的数据加密密钥还是根据第一阶段 DH 出来的 SKEYID_d 衍生出来的) ,PFS 启用后,数据加密部分使用的密钥就没有了衍生的过程。 (f)DH:重新协商 IPSec SA 时使用的密钥(正常情况下,IPSec 阶段使用的密钥都是 由 SKEYID_d 衍生而来的,密钥之间都有一定的关系,就算 IPSec SA 超时,新的 KEY 还是和 SKEYID_d 有一定的关系) 。以上数据均被加密处理; 基于以上,第二阶段有几个概念需要理清: (a)封装模式:包括传输模式(Transport)和隧道模式(Tunnel) 。 传输模式:不

33、使用新的 IP 头部,IP 头部中的源/目的 IP 为通信的两个实点(当通信点 等于加密点时,使用传输模式) ; 隧道模式:需要封装一个新的 IP 头部,新的 IP 头部中源/目的 IP 为中间的 VPN 网 关设备地址(当通信点不等于加密点时使用隧道模式) ;二者比较: 从安全性来讲,隧道模式优于传输模式,隧道模式可以完全地对原始 IP 数据报进行验 证和加密以及可以使用 IPSec 对等体的 IP 地址来隐藏客户机的 IP 地址; 从性能来讲,隧道模式比传输模式占用更多带宽,一个额外的 IP 头; 因此,到底使用哪种模式需要按照实际的应用场景进行权衡。(b)安全联盟生存周期: 所有在安全策

34、略视图下没有单独配置生存周期的安全联盟,都采用全局生存周期。 IKE(因特网密钥交换协议)为 IPSec 协商建立安全联盟(SA)时,采用本地设置的和对端 提议的生存周期中较小的一个(即,当两端配置的生存周期不一致时,那么就用最小的那 个值) 。安全联盟生存周期的输入范围:30604800; 所以,两端设备配置的生存周期不 一致不会导致隧道无法建立。 (c)采用的安全协议: 安全提议中需要选择所采用的安全协议,用于为 IP 数据包提供安全。目前可选的安全 协议有 AH(验证报头)和 ESP(封装安全有效负载) ,也可以指定同时使用 AH 和 ESP(AH-ESP) 。安全隧道两端所选择的安全协

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

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

37、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/IKE 的 NAT 穿越功能。 消息 2:响应者向发起者发送第二条消

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

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

40、man 算法的有效性依赖于计算离散对数的难度,其含义是:当已知大素数 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 计算密钥的方式是:K=(A) B mod

41、p证明: 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。 Alice 和 Bob 分别选择秘密密钥 a=36

42、 和 b=58,并计算各自的公开密钥: A=ga mod p=536 mod 97=50 B=gb mod p=558 mod 97=44Alice 和 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 是一个至少 300 位的质数,并且

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com