WEP认证过程

为了将来能搞定WiFi,最近看了一下关于WiFi的认证过程。偷密码什么的最有意思了。我没有深入去了解WiFi怎么加密传输,我只看了怎么认证。因为对目前我来说,只有认证是比较有意思也是比较重要的。


WEP认证原理

就从最简单的WEP开始。从etutorials了解到,非OPEN的WEP认证过程为4步:

  1. STA(客户端)先发起认证要求;
  2. AP返回一个随机的字符串(challenge),让STA加密。加密方式为RC4,密钥为IV(24bits)+WEP KEY(40bits)。IV是STA和AP都可以随机选择的,并且放在每个包中;
  3. STA加密后返回给AP;
  4. AP用自己的Key,和STA发送来的IV合并,以同样的方式加密,看看是否一致。一致就认证通过。

wep
使用WireShark抓一下自己设置好的WEP类型无线网,设置过滤为wlan.fc.type_subtype == 0x0b,参考cisco。就可以看到WEP WiFi的认证帧。下图显示了2个帧。wep_wireshark
可以看到要加密的Challenge Text为:0100020000001080e0c3b6bacbe834233fe094e49c975b55553a56560b6614cff5135c172cbb1ff43b38905da7d89c2a10d985b66df7d290f49be85a8ca947011b652f1deb7397fa299a3600b6f1242eb500c04be5ac8a97a66edd6d54c435564806f89d94eab5e549e9180a76825274c99f80bd26e2846027c17024bfbf071836ab88ade43a6619
加密后的Data为:56d2cc9138ef6ca906b5423cac31101fb3e14169f9808b904925231b01fc24c6e2ddb715b31ba1d130da3d72f563988d0b6d4a93b77705e121e31deb9c2d6f3c893fe3932d5f8d42625103dd9a03ea1f43c027cc72fd5ed0bb9468766fb92e982cff950ece35c508d924cfdb91e87995751d6b4ee9cdf452a7a3dee18bd53cd32d47c46a25cd16dd
使用Python来测试一发:

完全正确。源码和抓的包见github。所以到此为止,我测试WEP认证的目的已经达成。其实我先是学习WPA的认证方式的,搞完了为了完整性才补上WEP。WEP现在很少用的,因为都说不安全,不仅认证不安全,加密也不安全。认证的话,只需暴力40bits(虽然会有更多的bits),这是非常快的。加密好像说RC4和24bits的IV不合适,细节不清楚。反正不安全,用的人上,没有意义深入。而且说Open的反而更安全(wikipedia),就是因为能够通过认证帧来暴力破解密码,然后整个通信就不安全了,反而不认证的却没有这个问题。

最后再说一遍,WEP是错误的设计,WEP的用户密码是非常容易破解的,给了密码学界和搞无线重大的启发。因此也催生了安全的WPA。为了完整性,就先写出WEP的认证过程。有时间再写WPA的认证过程。或者直接看github上认证Python源码,步骤复杂多了。


有用链接

  1. 简单的WEP工具
  2. Understanding WEP Weaknesses