我在其他资源中使用了wikipedia文章来理解该协议是如何工作的,并且有两个问题:
1) Alice向服务器发出初始查询后,她收到响应的一部分:
(新的会话密钥+ Alice的ID) -用Bob的安全密钥加密。
由于这个特定协议中的安全密钥是对称的,并且Alice知道这个"数据包"的全部内容,那么她现在就不能找出Bob的安全密钥了吗?
2) wiki文章解释了该协议的致命弱点是重放攻击"如果攻击者使用较旧的,受损的值"作为会话密钥,他们可以将其重新打包为:
(会话密钥+ Alice的ID) -用Bob的安全密钥
加密
并使用它来启动与Bob的会话。
也许我只是遗漏了一些东西,但是仅仅因为攻击者拥有会话密钥并不意味着他们拥有Bob的安全密钥。那么它们如何生成上述数据包呢?
您所指的是已知明文攻击。http://en.wikipedia.org/wiki/Known-plaintext_attack。在Kerberos 5中,使用的加密协议是AES,通常认为它可以"抵抗"KP攻击。
攻击者(M)不需要使用K_B重新打包任何东西,它只记录以前从A到B的所有通信。之后,它重新发送{K_AB, A}K_B给B。没有nonce, B不知道这个会话密钥不是新鲜的。它从a开始一个新的会话,因为a不期待来自B的任何数据包,在这个会话中来自B的所有数据包都被丢弃。但是M一直在回复B,使得它认为A在回复。
请注意,此会话中的其余通信不需要K_B,而只需要K_AB。B发送的新nonce是用K_AB加密的(M已经知道并且可以用来解密新的nonce)。M可以将旧消息从A解密到B,更新nonce值(根据此会话的新nonce)并使用K_AB重新打包。这样M就可以让B重做它在前一阶段所做的动作。
这有什么用?假设B是一家银行,a在之前的会话中使用B向M发送了10美元,M随后可以一遍又一遍地重播之前的通信,以重复从a到M的转账。