一个让密码专家帮助一个有点困惑的家伙的问题:为什么PFS (完美的前向保密)在第二阶段和第一阶段也存在?
理由:在第一阶段ISAKMP中,主要模式的结果是采用以下关键材料:
SKEYID_d = prf(SKEYID,g^xy _ CKY-I = CKY-R = 0)
SKEYID_a = prf(SKEYID,SKEYID_d _ g^xy _ CKY-I _x_ CKY-R _ 1)
SKEYID_e = prf(SKEYID,SKEYID_a _ g^xy _ CKY-I _x_ CKY-R _ 2)
在第二阶段中使用SKEYID_d来生成会话密钥。g^xy是DH (Diffie-Hellman)共享的秘密。
因此,已经有PFS在第一阶段的设计。每次有人建立一个新的IPsec VPN隧道,将使用一个新的DH共享秘密g^xy来计算SKEYID_d,对吗?因此,第二阶段的会议密钥也将是独一无二的。这里是PFS吗?
那么,如果我们在第二阶段也做了DH,我们就会有双倍的PFS?有什么意义?
发布于 2020-02-17 19:00:23
因此,已经有PFS在第一阶段的设计。每次有人建立一个新的IPsec VPN隧道,将使用一个新的DH共享秘密g^xy来计算SKEYID_d,对吗?因此,第二阶段的会议密钥也将是独一无二的。这里是PFS吗?
不,您不会为每个快速模式重新计算一个新的SKEYID_d;而是在创建IKE安全关联时为SKEYID_d分配一个值(就像所有其他SKEYID值一样),然后在SA的持续时间内保持不变。
因此,这不符合完美前向保密的定义;其背后的想法是,如果对手捕获设备(并了解它所知道的一切),他将不会学习任何以前的密钥(当然,他将学习任何当前的密钥)。
在这种情况下,对手将学习值SKEYID_d;IPsec键是在IKEv1中从prf(SKEYID_d, [ g(qm)^xy | ] protocol | SPI | Ni_b | Nr_b)派生的。如果攻击者捕获了设备(因此了解了SKEYID_e值,从而能够解密IKE通信量),他就会了解协议、SPI、Ni_b和Nr_b的值(因为它们都是通过加密的会话发送的)。
因此,如果不使用PFS选项,攻击者可以学习IPsec键控材料,并读取所有通信量。如果正确使用PFS选项,则攻击者无法学习g(qm)^xy,因此无法获得键控材料。
我在IKEv1的上下文中发表了这些评论;类似的推理也适用于IKEv2 (IKE的当前版本)。
发布于 2020-02-18 07:46:38
显然,我(TS)不被允许评论,所以我不得不键入我的答复作为答复。@Poncho谢谢你的澄清。因此,将我的新发现的知识应用到实际的活动场景中,PFS对于在第二阶段永远不会有rekey的vpn会话没有好处。如果您在PH之前受到损害,攻击者就可以得到当前的SKEYID_d,而不管PFS是什么。
我知道,为了充分满足第一阶段的标准,材料不应依赖于第二阶段的关键材料。如果第二阶段不启动PFS,显然不符合这一标准。
供未来读者参考(如有错误,请更正):
https://crypto.stackexchange.com/questions/77665
复制相似问题