密码安全的核心:破解时间
密码安不安全,本质上就一个问题:攻击者暴力破解你的密码需要多久?
暴力破解就是穷举——把所有可能的密码组合一个个试。破解时间 = 密码空间大小 ÷ 猜测速度。密码空间是「字符集的 N 次方」,N 是密码长度。猜测速度取决于攻击者的硬件(现代 GPU 每秒能试几十亿次)。
所以影响破解时间的只有两个因素:密码长度和字符集大小。我们分别来看。
长度 vs 复杂度,哪个更重要
很多人觉得密码安全要靠复杂度——大小写、数字、特殊符号全上。但数学告诉我们:增加长度比增加复杂度有效得多。
原因很简单。增加字符集是从 62(大小写+数字)变到 95(加特殊符号),基数增大不到 2 倍。而增加一位长度,密码空间乘以 62(或 95)。也就是说,每多一位,破解时间翻 62-95 倍。
打个比方:
8 位大小写+数字(62^8) ≈ 218 万亿种组合
12 位全小写字母(26^12) ≈ 9.5 万亿亿种组合
12 位全小写字母的密码空间是 8 位混合密码的 4 万倍以上。这还没算特殊符号的版本——12 位全小写就已经碾压了。
所以如果只能在「更长」和「更复杂」之间选一个,选更长。
不同长度密码的破解时间
下面是假设攻击者用 GPU 暴力破解(每秒 1000 亿次猜测)的大致时间:
| 密码长度 | 仅小写字母(26) | 大小写+数字(62) | 全部可打印字符(95) |
|---|---|---|---|
| 6 位 | 不到 1 秒 | 不到 1 秒 | 不到 1 秒 |
| 8 位 | 约 3 分钟 | 约 36 分钟 | 约 6 小时 |
| 10 位 | 约 2 天 | 约 10 年 | 约 6000 年 |
| 12 位 | 约 300 年 | 约 4 万年 | 约 54 亿年 |
| 16 位 | 约 5000 亿年 | 约 60 万亿年 | 约 4.6 万亿亿年 |
注意这些数字是纯暴力破解的时间。实际攻击通常会先跑字典(常见密码列表),所以如果你的密码在字典里,破解时间是秒级的,跟长度没关系。
从表格可以得出:12 位以上的随机密码,暴力破解基本不可能。16 位可以认为永远安全。
为什么 123456 不行
「123456」连续多年霸占最常用密码榜首。它的问题是太短(6 位纯数字只有 100 万种组合,瞬间破解)+ 太常见(字典第一个试的就是它)。两个问题叠加,等于没设密码。
为什么 P@ssw0rd 也不行
很多人被要求设「含大小写+数字+符号」的密码时,会把常见单词做个变形:a 换成 @,o 换成 0,s 换成 $,e 换成 3。于是 password 变成 P@ssw0rd。
问题是,攻击者早就知道这个套路了。主流的破解字典都包含「字典词 + 常见替换规则」的组合变形。P@ssw0rd 在字典里的排名比你想的靠前得多,破解时间几乎和 password 本身一样短。
真正的安全密码应该是随机的、不可预测的,不是「在常见词上做变形」。
密码管理器:为什么你需要一个
既然每个账号都要用不同的强密码,人脑根本记不住。这就是密码管理器存在的意义。
密码管理器的逻辑是:你只需要记住一个主密码(足够强),管理器帮你生成和保存所有其他密码。每个网站用不同的随机密码,一个泄露不影响其他账号。
常见的有 1Password、Bitwarden、KeePass 等。它们的安全性来自于:密码库是本地加密的,即使服务商被黑,攻击者拿到的也是加密后的数据,没有主密码解不开。
关键点:主密码必须是你的最强密码,因为它是唯一的钥匙。建议 16 位以上,随机生成,花时间背下来。
一次性密码 vs 长期密码
有些场景你会接触到「一次性密码」(OTP),比如登录时收到的短信验证码、认证器 App 里的 6 位数字。这些密码的特点是:
- 有效期很短(通常 30 秒到 10 分钟)
- 用一次就作废
- 不需要你记住
一次性密码和长期密码不是替代关系,是互补的。长期密码是「你知道什么」,一次性密码是「你拥有什么」(手机/认证器)。两个一起用就是两步验证(2FA),安全等级大幅提升。
两步验证的作用
两步验证(2FA)的原理很简单:即使密码泄露了,攻击者没有第二步验证也登不进来。常见的第二步有:
- 短信验证码:最常见,但有被 SIM 劫持的风险
- 认证器 App(Google Authenticator、Authy):比短信安全,不依赖运营商
- 硬件安全密钥(YubiKey):最安全,钓鱼都骗不走
重要账号(邮箱、网银、社交)建议至少开启认证器 App 级别的 2FA。硬件密钥适合高安全需求场景。
怎么生成一个安全密码
- 打开 密码生成器。
- 长度设为 16 位以上(12 位是底线)。
- 勾选大小写字母、数字、符号。
- 点击生成,复制结果。
- 每个账号用不同的密码,存到密码管理器里。
生成过程纯浏览器本地完成,不会发送到服务器,不用担心泄露。
常见问题 FAQ
密码是长一点好还是复杂一点好?
长度更重要。每多一位,密码空间乘以字符集大小,破解时间指数增长。而增加特殊符号只是线性提升基数。优先加长度到 12 位以上,再考虑字符集多样性。
P@ssw0rd 这种密码算安全吗?
不算。它只是对 password 做了 a→@、o→0 之类的常见替换,破解字典里早就收录了这类变形。攻击者用「字典+替换规则」组合破解,P@ssw0rd 的破解时间和 password 差不多。安全密码应该是随机的,不是变形过的常见词。
密码管理器靠谱吗?会不会被黑?
靠谱。密码管理器的密码库是本地加密存储的,即使服务商被黑,攻击者拿到的也是加密数据,没有主密码解不开。比你自己用同一个密码到处注册安全得多。关键是设一个足够强的主密码并开启 2FA。
两步验证真的有必要吗?
有必要。密码泄露的情况太多了(数据泄露、钓鱼、木马),2FA 是第二道防线。攻击者就算拿到了密码,没有第二步验证也登不进。邮箱、网银等重要账号一定要开。