返回首页

密码强度:开发人员的计算方法

本文分解了数学密码强度,包括暴力破解计算、字典攻击威胁和存储推荐(Argon2、salt)。针对开发者:限流、2FA、唯一性。针对用户:密码短语和管理器。

密码强度计算:为什么长度最重要
Advertisement 728x90

密码强度分析:开发者必备的计算与建议

密码因其简单性和用户熟悉度,依然是身份验证的核心。用户名标识账户,而密码则用于确认用户掌握某个秘密。尽管存在硬件密钥、一次性密码(OTP)、生物识别和WebAuthn等替代方案,密码在低门槛登录系统中仍占据主导地位。

例如,WebAuthn采用非对称加密:私钥保留在设备上,服务器通过公钥验证签名。生物信息数据本地存储——从不上传至服务器——极大降低了泄露风险。

现实安全:暴力破解背后的数学原理

每个密码理论上都可被暴力破解,但安全性取决于攻击的经济不可行性。我们来计算不同配置下的攻击耗时。

Google AdInline article slot

一个5位数字PIN(10⁵ = 10万种组合)以每秒10次的速度尝试,仅需数秒即可破解。若使用1万台设备组成的僵尸网络(每秒10万次尝试),从包含字母与数字的36字符集(共5字符)中破解密码,耗时不足9分钟。

扩展字符集后:

  • 62字符(大小写字母+数字):62⁵ ≈ 9.16亿 → 僵尸网络下约2.5小时;
  • 95字符(含特殊符号):95⁵ ≈ 77亿 → 约21小时。

长度才是关键因素。 对于8位字符且使用95个字符集的情况:95⁸ ≈ 6.6×10¹⁵ → 每秒10万次尝试下需超过2000年。即使不使用特殊符号(62⁸ ≈ 2.2×10¹⁴),也需约70年。

Google AdInline article slot

| 字符集 | 长度 | 组合数 | 时间(10万次/秒) |

|--------|------|--------|------------------|

| 36 | 5 | 5200万 | 9分钟 |

Google AdInline article slot

| 62 | 5 | 9.16亿 | 2.5小时 |

| 95 | 5 | 77亿 | 21小时 |

| 62 | 8 | 218万亿| 70年 |

| 95 | 8 | 6.6京 | 2000年以上 |

速率限制至关重要:每IP请求次数限制迫使攻击者依赖分布式僵尸网络,大幅提高成本。

字典攻击与常见模式

对于长密码,完全暴力破解效率极低。真正的威胁来自字典攻击和凭据填充。

弱密码示例:

  • Qwertyuio1 —— 键盘滑动模式;
  • Abcdefghi0 —— 字母顺序排列;
  • P@ssW0rD36 —— leetspeak替换;
  • Ghbdtn —— 俄语“Hello”在QWERTY键盘上的布局。

建议: 使用由4–6个随机单词组成的密码短语(从2万个词库中选取:20,000⁴ = 1.6×10¹⁷种组合 → 破解需数万年)。避免使用引号或常见短语,可用连字符或空格分隔。

四位数字的PIN码因熵值过低而不安全,其防护依赖尝试次数限制(3–10次)及硬件级哈希保护。

开发者在密码存储中的常见错误

密码绝不能明文存储。应使用bcrypt、Argon2或scrypt等强哈希算法。常见错误包括:

  • 明文存储密码或使用MD5/SHA-1等弱哈希;
  • 缺少盐值——使彩虹表攻击成为可能;
  • 哈希迭代次数不足——导致GPU快速破解;
  • 未设置速率限制或验证码防护;
  • 忽略凭据填充检测——未检查登录凭证是否出现在泄露数据库中(如Have I Been Pwned?)。

最佳实践:

  • 使用 Argon2id 并配置内存密集型参数;
  • 为每位用户分配唯一盐值;
  • 实施速率限制(如每IP每分钟最多5次尝试)。

实用建议

对用户而言:

  • 为每个服务使用唯一密码;
  • 密码长度≥12位,或使用4个以上随机单词的密码短语;
  • 使用密码管理器:

* 本地仅存(KeePassXC):完全掌控,手动同步;

* 云端存储(Bitwarden):自动同步,主密码保护;

  • 启用双重验证(TOTP优先——避免短信验证)。

对开发者而言:

  • 强制使用密码短语或至少16位字符的密码;
  • 使用 Argon2(p=2, m=64MB, t=3)进行哈希;
  • 实施带指数退避的速率限制;
  • 在新系统中采用Passkeys/WebAuthn;
  • 使用Have I Been Pwned?等工具监控泄露事件。

核心要点

  • 长度胜于复杂度:95⁸的安全性远超62¹²;
  • 速率限制 + 僵尸网络 = 攻击者成本呈指数级上升;
  • 随机单词密码短语可提供>10¹⁷种组合;
  • 仅存储加盐哈希(推荐Argon2);明文存储即瞬间暴露;
  • 使用唯一密码可有效防范凭据填充攻击。

— Editorial Team

Advertisement 728x90

继续阅读