双方建立一个共享的秘密时,尽管事实上有多种方式都可以做到,但I K E无论如何都只使 用一个D i ff i e - H e l l m a n交换。进行D i ff i e - H e l l m a n交换这一事实是铁定的,是不可协商改变的! 但是,对其中采用的具体参数而言,却是可以商量的。I K E从O a k l e y文档中借用了五个组。其 中三个是传统交换,对一个大质数进行乘幂模数运算;另外两个则是椭圆曲线组。D i ff i e - H e l l m a n交换以及一个共享秘密的建立是I K E协议的第二步。 D i ff i e - H e l l m a n交换完成后,通信双方已建立了一个共享的秘密,只是尚未验证通过。它 们可利用该秘密(在I K E的情况下,则使用自它衍生的一个秘密)来保护自家的通信。但在这 种情况下,却不能保证远程通信方事实上真是自己所信任的。因此, I K E交换的下一个步骤便 是对D i ff i e - H e l l m a n共享秘密进行验证,同时理所当然地,还要对IKE SA本身进行验证。I K E 定义了五种验证方法:预共享密钥;数字签名(使用数字签名标准,即D S S);数字签名 (使用R S A公共密钥算法);用R S A进行加密的n o n c e交换;以及用加密n o n c e进行的一种“校 订”验证方法,它与其它加密的n o n c e方法稍有区别(所谓“n o n c e”,其实就是一种随机数字。 I K E交换牵涉到的每一方都会对交换的状态产生影响。 请区分 公共秘钥(非对称秘钥) 和 共享秘钥(对称秘钥)!!!!!!!! 我们将IKE SA的创建称为“阶段一”。阶段一完成后,阶段二便开始了。在这个阶段中, 要创建IPSec SA。针对阶段一,可选择执行两种交换。一种叫作主模式( Main Mode)交换, 另一种叫作野蛮模式( Aggressive Mode)交换。其中,野蛮模式的速度较快,但主模式更显 灵活。而阶段二仅能选择一种交换模式,即Quick Mode(快速模式)。这种交换会在特定的 IKE SA的保护之下,协商拟定IPSec SA(IKE SA是由阶段一的某种交换所创建的)。 在默认情况下, IPSec SA使用的密钥是自I K E秘密状态衍生的。伪随机n o n c e会在快速模 式下进行交换,并与秘密状态进行散列处理,以生成密钥,并确保所有S A都拥有独一无二的 密钥。所有这样的密钥均不具备“完美向前保密( P F S)”的特性,因为它们都是从同一个 “根”密钥衍生出来的( I K E共享秘密)。为了提供P F S,D i ff i e - H e l l m a n公共值以及衍生出它 们的那个组都要和n o n c e一道进行交换,同时还要交换具体的IPSec SA协商参数。最后,用得 到的秘密来生成IPSec SA,以确保实现所谓的“完美向前保密”。 I S A K M P、O a k l e y和S K E M E—这三个协议构成了I K E的基础。因此,我们说I K E是一种 “混合型”协议,它沿用了I S A K M P的基础、O a k l e y的模式以及S K E M E的共享和密钥更新技术, 从而定义出自己独一无二的验证加密材料生成技术,以及协商共享策略。 IKE阶段1 中生成的SKYID_e用来加密后续建立ipsec sa 的报文的。而SKYID_d是IPSEC 共享秘钥的根, 从SKYID_d中衍生来的。 IKE阶段1 当秘钥交换结束后最后一步是做 验证的, 而验证方法的不同而算法不一样。 验证方法有:(1)预共享秘钥,(2)数字签名, (3)加密nonce。 IKE阶段1报文中的NONCE,还有COOKIE在SKYID的生成中扮演重要角色,另外两个角色是 gx,gy和身份 id。 SKYID其实就是有这些角色算出来的散列值。 http://zh./wiki/迪菲-赫尔曼密钥交换, 写的很清楚在明文交换中生成共享秘钥。
|
|
来自: hginvent > 《strongSwan》