news view

隐藏 SSID (Wi-Fi 安全性分析:隐藏 SSID 的作用与局限)

办公室 Wi-Fi 出现问题, 多台终端自动断开连接, 尝试再次连接时提示输入密码. 但是路由器上的有线连接是正常的.

我怀疑是有其他设备使用了相同的 SSID, 并且短时间内信号更强, 让终端设备切换到了这台其他设备. 但我们的 SSID 并不常见, 故意使用我们的 SSID 有什么目的呢? 有可能是为了获得密码.

如果密码是明文传输的, 那么很容易被获取. 但现代的设备不应该这么不安全, 客户端和服务端都应该将其他设备默认为不可信.

比如我们理想中的一种做法是:

  1. 客户端构造一个连接请求, 其中包含一个明文随机数, 还有针对这个随机数的根据密码生成的散列值.

  2. 服务端收到一个连接请求, 根据明文的随机数计算散列值, 看和数据包中的散列值是否相同, 如果不相同, 则判定为无效连接请求, 如果相同, 则创建一个新的随机数用来将来通信, 并加密后发出.

  3. 客户端收到加密的数据后用自身密码解密, 然后使用这个新的随机数作为密码用作本次连接的通信密钥.

上面这套方案就避免了密码在网络间进行明文传输, 同时一定程度上避免重放攻击. 如果想要加强安全性, 还可以在数据包中增加时间戳, 并且定期更换临时通信密钥.

不过回到最初的假设, 如果密码没有明文传输, 伪造的服务端是不是就没有意义呢?

也不全是, 虽然增加了攻击难度, 但是因为有随机数和针对随机数的散列值, 攻击方可以在自己的密码字典中全部计算一遍, 尝试匹配到弱密码, 甚至在散列方法不够安全时进行暴力破解.

对于上述这种方式的攻击, Wi-Fi 有一个方案可以缓解, 就是隐藏 SSID.

但是这种隐藏的作用是有限的, 因为客户端可能会广播 SSID (Probe Request), 攻击方还是可以扫描到. 但是大多数攻击方不会这么做, 因为攻击方可能需要破解多个 AP 的密码, 这么做会大大增加破解难度.

另外, WPA3 增加了一些前向安全的特性, 可以缓解一些基于重放攻击的破解. 建议使用 WPA3 协议.

- security - wifi
iugo