我们大多数处理无线安全问题的人肯定已经破解了 WEP 密钥,并且在这样做的时候一定遇到过这样的文本:
弱 IV,比其他人透露更多关于 WEP 密钥秘密部分的信息——在 16,000,000 个可能的弱 IV 中大约有 9,000 个。
这些弱 IV 是什么?如果有人告诉我他们如何泄露秘密 WEP 密钥,那就太好了?我们能否通过避免使用弱 IV 以某种方式阻止或减缓 WEP 破解?
我们大多数处理无线安全问题的人肯定已经破解了 WEP 密钥,并且在这样做的时候一定遇到过这样的文本:
弱 IV,比其他人透露更多关于 WEP 密钥秘密部分的信息——在 16,000,000 个可能的弱 IV 中大约有 9,000 个。
这些弱 IV 是什么?如果有人告诉我他们如何泄露秘密 WEP 密钥,那就太好了?我们能否通过避免使用弱 IV 以某种方式阻止或减缓 WEP 破解?
正如另一位用户正确指出的那样,您正在谈论的弱密钥被FMS 攻击利用。
如果有人告诉我他们如何泄露秘密 WEP 密钥,那就太好了?
这并不容易。请记住,这是一种(相对复杂的)密码攻击,它不是简单的字典攻击或类似的攻击。
WEP(我们应该说是吗?)基于称为 RC4 的加密算法。RC4 的工作方式如下:
1) 从一个密钥开始——在我们的例子中,一个与 IV 连接的共享密钥——它通过密钥调度算法 (KSA) 计算一个“内部状态”S[i],它是一个 256 个 8 位值的伪随机数组);
2)这个内部状态是生成一个伪随机字节k[i]的块(PRGA - Pseudo-Random Generation Algorithm)的输入;
3) 内部状态被改变并再次输入PRGA,产生另一个伪随机字节k[i]+1。伪随机字节序列称为密钥流;
4) 消息(明文)与密钥流进行异或。由于 XOR 运算符的特性,这就像将密钥流的每个伪随机字节与一个消息字节进行异或。确实,这就是发生的事情。
关于 XOR,你必须知道一件事:A ⊕ B ⊕ B = A 总是正确的。
FMS 攻击的工作原理如下。
因为 WEP 用于 Wi-Fi,它(出于与安全性无关的技术原因)使用特定类型的标头,所以任何受 WEP“保护”的消息的第一个字节都是已知的,并且是 0xAA(十六进制的 AA)。应用 XOR 属性,并考虑到密文的每个字节都是单独导出的,我们可以得到密钥流的第一个字节。令 m1 = 0xAA 为明文的第一个字节,c1 为密文的第一个字节,密钥流的第一个字节为 m1 ⊕ c1。
请记住,(固定)共享密钥与 IV 连接在一起,IV 在每个数据包中都会更改,但攻击者始终知道(因为它是明文传输的)。由于共享密钥是恒定的,如果 IV 很弱,则密钥很弱。
现在让我们关注密钥流 K[0]、K[1]、K[2] 的前三个字节。
由于密钥流以 IV 开头,K[0,1,2] 是(唯一的)IV 的三个字节,因此是已知的。攻击者从这些字节开始并将它们加载到 KSA 中。如果IV很弱,攻击者可以获得密钥第四字节的可能值。通过对多个数据包重复此过程,攻击者可以很好地了解第 4、第 5、字节等的值。
这些弱 IV 是什么?
正如我们所见,弱 IV 是允许获得关于密钥的提示的 IV,一次一个字节。随着攻击者收集越来越多的数据包,这些提示变得越来越具体。
更具体地说,如果 IV 属于某种特定类型,例如 A+3::ff:X,则 IV 是弱的(在 FMS 攻击的意义上),其中 A 是要找到的密钥的字节, ff 是十进制的 255,X 是任意 8 位值。
我们能否通过避免使用弱 IV 以某种方式阻止或减缓 WEP 破解?
我们可以通过避免使用弱 IV来阻止这种攻击,但我们根本无法阻止 WEP 破解。WEP 在很多方面都被破坏了,即使底层的加密算法没有被破坏(例如通过 FMS 攻击,RC4 就是这样),其中大部分仍然可以工作。
不要使用 WEP,句号。没有理由再这样做了。
也许这解释了您正在寻找的内容:“RC4 的密钥调度算法中的弱点”,Scott Fluhrer、Itsik Mantin 和 Adi Shamir
我在这里找到了一份副本: http ://www.crypto.com/papers/others/rc4_ksaproc.pdf