为什么密码安全如此重要?
根据 2024 年网络安全报告,超过 80% 的数据泄露与弱密码有关。尽管安全技术不断进步,123456、password、admin 仍然是最常用的密码,破解时间不到 1 秒。
密码熵:量化密码强度
密码熵(Entropy)是衡量密码强度的核心指标,单位是比特(bit)。熵值越高,密码越安全。
熵的计算公式
E = log₂(R^L)
其中 R 是字符集大小,L 是密码长度:
| 字符集 | 大小 | 8 位密码熵 | 12 位密码熵 | 16 位密码熵 |
|---|---|---|---|---|
| 纯数字 | 10 | 26.6 bit | 39.9 bit | 53.2 bit |
| 小写字母 | 26 | 37.6 bit | 56.4 bit | 75.2 bit |
| 大小写+数字 | 62 | 47.6 bit | 71.4 bit | 95.3 bit |
| 全部字符 | 95 | 52.6 bit | 78.9 bit | 105.2 bit |
推荐标准:12 位以上随机密码,熵值 > 70 bit。
实际破解时间
| 密码长度 | 纯数字 | 小写字母 | 大小写+数字+符号 |
|---|---|---|---|
| 8 位 | < 1 秒 | < 1 秒 | ~8 小时 |
| 12 位 | < 1 秒 | ~2 小时 | ~300 年 |
| 16 位 | ~2 小时 | ~200 年 | ~5000 万年 |
密码安全最佳实践
1. 长度优先于复杂度
NIST SP 800-63B 最新指南推荐长密码(Passphrase)而非复杂规则。一个 4 词随机组合(如 correct-horse-battery-staple)比 8 位含特殊字符的密码更安全且更容易记忆。
2. 使用密码管理器
推荐使用专业的密码管理器(如 Bitwarden、1Password、KeePass)生成并存储所有密码。这样你只需要记住一个主密码。
3. 启用多因素认证(MFA)
为所有支持的服务启用 MFA,优先选择:
- 硬件安全密钥(WebAuthn/FIDO2):最安全
- TOTP 应用(如 Google Authenticator、Authy)
- 短信验证码(SMS)作为最后选择
4. 服务端密码存储最佳实践
- 永远不要存储明文密码
- 使用 Argon2id(推荐)或 bcrypt(cost factor >= 12)
- 每个用户使用独立的随机盐值(salt),长度至少 16 字节
- 定期测试密码哈希算法
5. 密码泄露检测
集成 Have I Been Pwned API 检测用户密码是否已在数据泄露中曝光。目前数据库中已有超过 5 亿个泄露密码。
常见弱密码模式
- 连续字符(如 123456、qwerty)
- 重复字符(如 aaaa、111111)
- 键盘序列(如 qazwsx、1qaz2wsx)
- 个人信息(生日、姓名、手机号)
- 常见单词加数字后缀(如 password123、admin2024)