我知道连接到同一个开放 WiFi 的用户可以看到彼此的流量,因为它是以纯文本发送的;这甚至适用于未连接到 WiFi 的用户。
但是,维基百科指出,WPA-PSK 中的加密密钥是从密码短语派生出来的,所有用户必须知道密码短语才能连接到 WiFi。那么,所有用户都派生并使用相同的加密密钥吗?
换句话说,所有连接到同一个 WPA-PSK WiFi 的用户都可以看到彼此的流量,只有未连接到 WiFi 的用户无法看到流量?
https://en.wikipedia.org/wiki/Wi-Fi_Protected_Access
每个无线网络设备都通过从 256 位共享密钥中派生出 128 位加密密钥来加密网络流量。此密钥可以作为 64 个十六进制数字的字符串输入,也可以作为 8 到 63 个可打印 ASCII 字符的密码输入。[16] 如果使用 ASCII 字符,则通过将 PBKDF2 密钥派生函数应用于密码来计算 256 位密钥,使用 SSID 作为盐和 4096 次 HMAC-SHA1 迭代。[17] WPA 和 WPA2 均提供 WPA-Personal 模式。
答案1
如果您知道给定 WPA-PSK 或 WPA2-PSK 网络的密码或 PSK,并且在给定客户端加入网络时捕获密钥握手,则可以解密该客户端的该会话流量(直到它断开与 AP 的连接并重新连接,此时您需要捕获其新的密钥握手以获取允许您解密该客户端的新会话的信息)。
所有客户端都使用相同的密码,该密码通过 PBKDF2 散列到成对主密钥 (PMK) 中,但客户端不直接使用 PMK 进行加密。在连接开始时,客户端和 AP 各自生成一个称为 nonce 的随机数并将它们发送给对方,这些 nonce 与 PMK 一起用于派生客户端将在该会话中用于加密其流量的密钥。AP 派生相同的密钥并使用它来加密该客户端在该会话中的所有流量。
编辑后添加:因此,客户端无法像在 WEP 时代那样在 WPA-PSK 网络上自动解密彼此的流量,但只需很少的额外工作,网络范围内的任何知道密码的设备都可以解密客户端的网络流量。攻击者甚至不需要连接到网络。他只需要在范围内并知道密码即可。