IPSec 主模式、快速模式、预共享密钥

更新时间:2023-06-07 15:05:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

CISCO文档

IPSec 主模式、快速模式、预共享密钥

创建时间:2010-01-02

文章属性:原创

文章来源:Longhai

文章提交:Longhai

本文介绍下 IPSec 主模式、快速模式、预共享密钥。中用到的算法和一些密钥。

·<DH 算法>

DH算法依赖以下特性:

存在DH公共值Xa =ga mod p 其中

g 是产生器

p是一个大素数

a是只有发起者才知道的私有密钥。

并且还有另外一个DH公共值Xb

Xb=gb mod p 其中

g 是产生器

p是一个大素数

b是只有发起者才知道的私有密钥。

于是发起者和响应者可以产生一个仅被二者知道的共享密钥,这里只需要二者之间简单的交换公共值Xa 、Xb 这是完全正确因为:

发起者的密钥=(Xb)a mod p =(Xa)b mod p =接受者的密钥

这个值是双方的共享密钥并等于gab

·<密钥推导>

· SKEYID=PRF(preshared key, Ni|Nr)

· SKEYID是从预共享密钥推导得到,并且总是与Ni/Nr有关,这样即使采用相同的预共 享密钥,不同的Ni/Nr产生的SKEYID是不同的

· SKEYID_d =PRF(SKEYID, gab |CKY-i|CKY-r|0)

· SKEYID_a =PRF(SKEYID, SKEYID_d| gab |CKY-i|CKY-r|1)

· SKEYID_e =PRF(SKEYID, SKEYID_a| gab |CKY-i|CKY-r|2)

SKEYID_d:一个中间态密钥,不用于实际的数据加密和认证,仅仅用于导出其他密钥。由 SKEYID和K(是Pre-shared keys,或是证书的公钥)经H计算得出。

SKEYID_a:用于在IKE第二阶段协商中,为信道中传输的数据(协商数据,非用户数据)进

CISCO文档

行认证时,认证算法所用的认证密钥。由SKEYID 、SKEYID_d、K经H算出。

SKEYID_e:用于在IKE第二阶段协商中,为信道中传输的数据进行加密是,加密算法所用的

加密密钥。由SKEYID_D 、SKEYID_a、K经H算出。

·<实际数据加密密钥>

在快速模式中,最后一条消息发送前,连接的两端必须用和DH 相关的信息生成一个新的DH密钥并用该密钥同SKEYID_d 以及其他一些参数连接生

成IPSec加解密密钥。下面是步骤:

发起者生成的密钥资源:

1, 生成新的DH共享密钥=(Xb') mod p

2, 用于入口的IPSec SA 的IPSec会话密钥=PRF(SKEYID_d,portocol(ISAKMP),新的共享密钥,SPIr,Ni',Nr')

3, 用于出口的IPSec SA 的IPSec会话密钥=PRF(SKEYID_d,portocol(ISAKMP),新的共享密钥,SPIi,Ni',Nr')

响应者生成的密钥资源:

1, 生成新的DH共享密钥=(Xa') mod p

2, 用于入口的IPSec SA 的IPSec会话密钥=PRF(SKEYID_d,portocol(ISAKMP),新的共享密钥,SPIi,Ni',Nr’)

3, 用于出口的IPSec SA 的IPSec会话密钥=PRF(SKEYID_d,portocol(ISAKMP),新的共享密钥,SPIr,Ni',Nr’)

简单介绍1-9个消息的负载

·主模式

主模式共有6条消息,交换3次。

第一个消息

是发起者发送、有5个负载:

1个SA负载:

一个解释域-因为ISAKMP是个一般协议,所以要说明此消息用于IPSec 。

位置-位置定义了一个32位的掩码来表示IPSec 建议与协商是在何种情况下被传送的。

CISCO文档

2个提议负载:

包含提议号 协议 ID SPI(安全参数索引)

2个转换负载:

包含转换号 转换 ID 以及IKE SA 属性。

IKE SA 属性包括发起者想要响应者同意的属性

散列类型

密钥资源 (在协商过程中被计算协议用到的密钥资源)

加密机制 (用于当共享密钥被建立后就对IKE协商消息进行加密)

DH交换机制

认证方法

IKE SA 协商的时间限制

第二个消息

响应者发送、大部分都和发起者发出的分组相同,所以我们只讨论不同之处。

这是因为响应者,只同意一对提议转换对,将其返回作为一致同意的提议转换对。

第三个消息

密钥负载-传送的DH公共值(Xab) 而生成

临时值负载-当DH临时值一被计算出来,两个对等体就独立计算临时值。(发起者的临时值Ni,响应者的临时值Nr)

第四个消息

和第三个相似是由 响应者发起的。

此时计算出3个密钥

· SKEYID_d

· SKEYID_a

· SKEYID_e

第五个消息

表示负载-他表示发起者的IP地址或者是主机名

散列负载-如果两个散列被计算出同一值,就可以认证。

第六个消息

CISCO文档

和第五包相似,又响应者发起。

·快速模式

有3个包共一次交换

(介绍快速模式包前简单的说下PFS(完美转发)

PFS 是在快速模式交换中产生新的DH密钥的属性。这允许使用新的DH密钥生成用于加密数据的加密密钥。 假设此处开启了PFS)

第一个消息

请求PFS的密钥交换负载

新的临时值负载

散列负载IPSec提议转换负载对 包括封装类型(AH、ESP) 模式(传输模式、隧道模式) 还有SPI 是一个32位数

被用来发起者用来唯一标示一个出口的IPSecSA

第二个消息

有响应者发起

第三个消息

正确消息的ID 以及最新的临时值的散列值。

响应者用来确定发起者是否就收到响应者在快速模式中的第一个包

避免dos攻击

现在双方都同意了IPSec SA 可以用来进行加密流量的交换。

一些小的知识点和值得注意的地方

1,对于1~4个包为明文内容,用UDP的500,以后的5~9个包都为加密内容,用UDP的4500

2,为了正确地生成密钥,每一个对等体必须找到与对方相应的预共享密钥,当有许多对等体要连接时,每一对对等体都要配置预共享密钥,这样就

会 有很多预共享密钥被配置。不过标示对等体IP地址或者主机名的负载直到下一条消息交换才会到来。因此,每一对对等体必须使用ISAKMP分组

的源地址来找到与其对等体对应的预共享密钥

3, 第二阶段的3个包主要用来协商用于加密用户数据的安全策略(只有认证和加密方法和对应算法),当第二阶段协商完毕之后,第一阶段的策略将

CISCO文档

暂时不会被使用,直到有新的VPN连接建立时或IPSEC SA加密密钥超时时,才会用第一阶段的策略重新生成并传递新的加密数据和认证的密钥。

4, 加密5-9消息的密钥SKEYID_e =PRF(SKEYID, SKEYID_a| gab |CKY-i|CKY-r|2)

5, 真正加密数据的密钥用于入口的IPSec SA 的IPSec会话密钥=PRF(SKEYID_d,portocol(ISAKMP),新的共享密钥,SPIr,Ni',Nr')

用于出口的IPSec SA 的IPSec会话密钥=PRF(SKEYID_d,portocol(ISAKMP),新的共享密

钥,SPIi,Ni',Nr')

6, 第一阶段配置的 加密算法 是 加密5-9个包的算法。不是用户数据的加密算法。

7, 如果穿越的是路由,则在放行UDP 500号端口的基础之上,还需要放行UDP的4500号端口。 8,如果穿越的是防火墙,刚在放行UDP 500号端口的基础之上,还需要放行ESP协议

9,这个阶段要协商的SA是密钥交换协议最终要协商的IPSEC SA,当IKE为IPSec协商时

可以称为IPSec SA,是保证AH或者ESP的安全通信。阶段2的安全由阶段1的协商结果

来保证。阶段1所协商的一个SA可以用于协商多个阶段2的SA。

第1个包协商IP sec SA的策略,建立IP sec的安全关联,

在IKE SA协商进行认证的基础上,产生新的Key再次进行双方的认证

本文来源:https://www.bwwdw.com/article/1ch1.html

Top