常见密码攻击手段
1. 暴力破解(Brute Force)
暴力破解是最原始也最直接的攻击方式:遍历所有可能的密码组合,直到找到正确的为止。攻击速度取决于密码的复杂度和攻击者的算力。现代GPU集群可以在极短时间内破解简单密码。
密码长度仅小写字母字母+数字全字符集
6位即时即时~8秒
8位~5分钟~2小时~3天
10位~6天~5个月~14年
12位~630年~5万年~630亿年
16位天文数字天文数字天文数字
注意:以上数据基于单卡RTX 5090的估算值。实际攻击中,攻击者可能使用多卡集群或云算力,速度会成倍增加。但有速率限制(rate limiting)的服务端可以有效防御在线暴力破解。
2. 字典攻击(Dictionary Attack)
字典攻击比暴力破解更高效。攻击者使用预编译的密码字典(包含常见密码、泄露密码、键盘模式等),优先尝试高概率密码。著名的"RockYou"字典包含超过1400万个真实泄露密码,覆盖了绝大多数人类可能使用的密码模式。
字典攻击对"看起来复杂实则可预测"的密码特别有效。例如P@ssw0rd2024!虽然包含大小写、数字和符号,但每个部分都是可预测的模式替换,字典攻击可以在几秒内破解。
3. 彩虹表攻击(Rainbow Table)
彩虹表是一种空间换时间的攻击技术。攻击者预先计算出大量密码的哈希值并存储在表中。当获取到目标哈希值后,只需在表中查找即可还原原始密码,无需实时计算。
彩虹表攻击的前提是目标系统使用了未加盐的哈希算法。如果每个密码都使用唯一的随机盐值(salt)进行哈希,攻击者就必须为每个盐值单独生成彩虹表,使得攻击成本不可接受。
防御关键:使用加盐哈希(bcrypt、scrypt、Argon2)可以完全抵御彩虹表攻击。盐值不需要保密,但必须每个用户唯一。
