使用 CCMP 作为 WPA2 的组密码

Using CCMP as group cipher for WPA2

我正在使用 WifiManager 在代码中设置 Wifi 连接,但该连接似乎使用 TKIP 作为组密码而不是 CCMP。这是正常的吗?会不会是路由器的问题?我正在像这样设置 WifiConfig:

wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wifiConfig.preSharedKey = "\"".concat(password).concat("\"");

当我在设备上查看与 wpa_cli 的连接时,我看到:

IFNAME=wlan0 <3>WPA: Key negotiation completed with 50:6a:03:16:8c:18 [PTK=CCMP GTK=TKIP]

最后一部分不应该是GTK=CCMP吗?据我了解,组密码用于广播消息,成对密码用于直接通信。为什么两者会不同?

通常,组密码(用于广播帧)必须支持所有连接的站点允许的最低加密形式。这通常设置为 TKIP,以防周围有任何旧站点并且它们需要能够解密从 AP 发送的广播流量。 如果 CCMP 用于组密钥,较旧的(CCMP 之前的)站点将无法解密广播流量。

成对密码(用于单播帧)可以使用站支持的最高级别解密(现在几乎总是 CCMP)。