我已使用wikipedia article等其他来源了解此协议的工作原理,并提出两个问题:
1)在Alice向服务器发出初始查询后,她收到了响应的一部分:
(新会话密钥+ Alice的ID) - 使用Bob的安全密钥加密。
由于此特定协议中的安全密钥是对称的,并且Alice知道此“数据包”的全部内容,她现在是不是能够找出Bob的安全密钥?
2)wiki文章解释了该协议的致命弱点是重放攻击“如果攻击者使用旧的,受损的值”会话密钥,他们可以将其重新打包为:
(会话密钥+ Alice的ID) - 使用Bob的安全密钥加密
并使用它来启动与Bob的会话。
也许我只是错过了一些东西,但仅仅因为攻击者拥有会话密钥并不意味着他们拥有Bob的安全密钥。那么他们如何生成上述数据包?
答案 0 :(得分:1)
你所指的是已知的明文攻击。 http://en.wikipedia.org/wiki/Known-plaintext_attack。在Kerberos 5中,使用的加密协议是AES,并且通常被认为是对KP攻击的“抵抗”。请参阅此处:https://crypto.stackexchange.com/questions/1512/why-is-aes-resistant-to-known-plaintext-attacks,讨论如何/为何认为AES具有抗性。
答案 1 :(得分:0)
攻击者(M)不需要使用K_B重新打包任何内容,它只记录从A到B的所有先前通信。之后,它将{K_AB,A} K_B重新发送到B.没有随机数B不知道这个会话密钥并不新鲜。它开始与A的新会话。由于A不期望来自B的任何数据包,因此该会话中来自B的所有数据包都将被丢弃。但是M继续回复B,认为A正在回复。
请注意,此会话中的其余通信不需要K_B,只需要K_AB。新的随机数B发送用K_AB加密(M已知并可用于解密新的随机数)。 M可以解密从A到B的旧消息,更新nonce值(根据此会话的新nonce)并使用K_AB重新打包。这样M可以使B重做它在前一个会话中所做的动作序列。
这有什么用?比方说,B是一个银行,A在前一个会话中使用B向M发送了10美元.M之后可以反复重复之前的通信,重复从A到M的转移。