推荐 Wi-FI PSK 的长度?

信息安全 密码 无线上网 wpa2
2021-08-16 01:23:12

我目前有一个使用 WPA2 和 AES 加密的网络,密码长度为 8 个字符,但是是随机生成的,并且不包含字典单词。但是,我担心计算机的强大功能及其破解握手的能力,因此我正在考虑增加长度。

我知道,如果我极度偏执,我最多可以输入 63 个字符,但不幸的是,我必须在 Android 手机和其他设备中输入此密码,所以我宁愿保持它的长度合理,以便于输入。

16 个字符的随机密码是否足以保护 WPA2 加密网络?当前对密码长度的建议是什么,尤其是对于无线网络,以及什么密码长度足以保护我的网络免受标准攻击?

4个回答

是的,如果它们是使用加密强度 PRNG 随机生成的,那么16 个字符就绰绰有余了。如果您使用小写、大写和数字,并且如果您真正随机生成,那么 16 个字符的密码具有 95 位熵。这绰绰有余。实际上,12 个字符就足够了这为您提供了 71 位的熵,这对于抵御攻击者可能试图攻击您的密码的所有攻击来说也绰绰有余。

一旦您的密码为 12 个字符或更长,密码就极不可能成为系统中最薄弱的环节。因此,选择更长的密码没有多大意义。我看到有人建议使用 60 个字符的密码,但我认为这样做没有任何合理依据。我的观点是可用性非常重要:如果你把安全机制弄得太难用,人们会生气,将来可能更不愿意使用它,这是不好的。不使用的安全机制对任何人都没有好处。这就是为什么我更喜欢选择较短的密码,比如 12 个字符或 16 个字符的长度,因为它比 60 个字符的怪物完全足够并且更有用。

请注意如何选择密码。您需要使用加密强度高的 PRNG,例如/dev/urandom. 例如,这是我在 Linux 上使用的一个简单脚本:

#!/bin/sh
# Make a 72-bit password (12 characters, 6 bits per char)
dd if=/dev/urandom count=1 2>/dev/null | base64 | head -1 | cut -c4-15

不要尝试自己选择密码。人工选择的密码通常比真正的随机密码更容易猜到。

一个非常重要的警告:除了密码长度之外,还有其他问题。关闭 WPS非常重要,因为WPS 存在重大安全漏洞另外,我建议您使用 WPA2;避免使用 WPA-TKIP,并且永远不要使用 WEP。

这个问题之前已经被问过很多次了,一个包含数字、符号、大小写字母的 12 个字符的密码将需要很长时间才能破解。如果您的密码不在字典中,那么您将需要使用暴力攻击。我们可以估计尝试的密码数量:

如果您有 94 个可能的字符 (ASCII) 并且您的密码长度为 12 个字符。然后你将拥有:

94^12 = 475 920 314 814 253 376 475 136 possibilities

使用现代 GPU(我在 Tom's Hardware 上找到了这个):汤姆斯五金

您每秒可以获得大约 215 000 次猜测。因此,如果我们查找需要多长时间:

475920314814253376475136/215000/3600/24/365/1000= 70190000

Millenia 猜测你的密码(实际上是这个数字的一​​半)。

我在底部为你写了一个 Perl 小脚本。不过,您应该能够解释它并使用计算器得到答案。

请记住,如果您的密码在字典中或足够短以生成 Rainbow 表,则有效强度要弱得多,否则会被计算出来。基准 PBKDF2 以确定密码的测试速度(卢卡斯指出 215,000 有一些重型图形硬件)。请注意,如果您有一个通用的 SSID 名称(“linksys”),Rainbow 表将是一个因素,但如果您有更晦涩的名称,则不会。

#!/usr/bin/perl
#Number of possible ASCII characters.
#All lowercase letters is 26, upper and lower case is 52, numbers adds 10, etc.
#Assume equal weighting and distribution.

$charRange = 0;
$length = 0;

$entropy = log($charRange)/log(2);

#Operations per second -- how fast a password can be tested
#using the given algorithm

$opspersec = 0;

$strength = $entropy * $length / $opspersec / 2;

print "On average, it will take $strength seconds to crack your password."

对于这个问题,真的没有万能的答案。简而言之:如果您想在适合您的安全性和可用性之间取得适当的平衡,请将密码设置为可以容忍的尽可能长和复杂的密码。

就我个人而言,我对在我的接入点上设置一个随机生成的 63 个字符的 PSK 没有任何疑虑。是的,可能很难进入智能设备等。但我不断提醒自己的是,我只需要在每台设备上输入一次与我实际使用网络的时间和几乎牢不可破的密码的安全性增强相比,将新设备添加到我的网络是相对罕见且微不足道的事情。

如果您无法忍受在网络上的每台设备上输入一次随机生成的 63 个字符的密码,请将其缩小,直到您获得更易于自己理解的内容。也许找到一种明智的方法来制作一个看似随机的长密码,这对您来说实际上是有意义的。根据您想要保护网络安全的程度,您可能还需要考虑添加深度防御功能,例如 MAC 地址过滤、网络分区(即:Wi-Fi 和 LAN 之间的防火墙)和 VPN。

至于一般密码建议(Wi-Fi 和其他),这是我的建议:

  • 最少 15 个字符。
    • 许多旧标准说 8,大多数新标准说 12,有些甚至推荐 20 或更多。
    • 我说 15 是最低限度,因为它强制旧版本的 Windows 不存储不安全的 LANMAN 哈希。
  • 使用所有 4 种字符类型。
    • 大写字母
    • 小写字母
    • 数字
    • 符号
  • 避免在密码中包含实际单词或单词的简单变体。
    • “密码”
    • “P@$$w0rd”
    • 等等。
  • 不要写下您的密码,或将它们存储在明文文件中。
  • 不要共享您的密码,也不要跨多个站点重复使用高灵敏度密码。