密码攻击:常见方法与有效防御

密码攻击:常见方法与有效防御

了解暴力破解、字典攻击、撞库、密码喷洒和离线破解,以及真正能降低风险的防护措施。

安全性往往受限于最薄弱的身份验证途径。如果重复使用的密码已被攻击者掌握,再强的加密和再先进的检测工具也无法弥补这一隐患。密码攻击既包括针对登录表单的在线猜测,也包括对数据泄露事件中被盗的哈希值进行高速离线破解。不同攻击途径需要不同的防护措施,因此了解攻击途径至关重要。

常见的密码攻击方法

暴力破解攻击

暴力破解攻击会系统地测试各种可能的字符组合。在线攻击受到网络延迟、速率限制、账户锁定和机器人检测的制约。离线攻击则更为危险:窃取密码哈希值后,攻击者可以在自己的硬件上尝试各种密码,而无须与受影响的服务交互。

密码长度、可预测性、哈希算法及其工作因子,以及攻击者的硬件,都会影响破解所需的时间。公开的破解耗时图表只是在特定假设下的估算,并不能保证某个具体系统的实际情况与之相符。

Estimated password cracking times by password length and character set 来源与方法: Hive Systems 密码表

字典攻击与基于规则的攻击

攻击者很少从随机字符串开始尝试。他们会测试常见密码、已泄露的密码、单词、姓名、日期、键盘排列模式,以及可预测的替换方式,例如将“a”替换为“@”。规则引擎能够高效地组合这些模式。因此,一个很长但常见的短语,可能不如一个独特的随机生成短语安全。

预计算表与离线破解

彩虹表包含预先计算好的哈希结果。为每个密码使用独立的随机盐值,可以使攻击者难以将同一张预计算表用于大量账户。现代系统还应采用有意设计得较慢的密码哈希函数,例如 Argon2id、scrypt、bcrypt 或 PBKDF2。将 pepper 与密码数据库分开存储,可以增加一层防护,但它不能替代盐值或适当的工作因子。

撞库

撞库利用的是其他服务泄露的用户名和密码组合。自动化工具会使用同一组凭据尝试登录电子邮件、社交媒体、银行和工作账户。重复使用密码,会让一家服务提供商发生的安全事件导致其他平台上的账户被接管。

最有效的防护措施包括为每个账户使用不同的密码、对照已知泄露密码的禁用列表检查新密码、检测机器人和异常行为,以及采用多因素身份验证。通行密钥或硬件安全密钥等抗钓鱼验证方式,比可能被攻击者转发利用的验证码更能提供保护。

密码喷洒

密码喷洒与通常的暴力破解模式相反:攻击者使用一个或少数几个常见密码,尝试登录大量账户。这种方式可以避开单个账户的锁定阈值。防守方应综合多个账户和网络信号实施速率限制,监测分散出现的登录失败,禁用已泄露的密码,并使用抗钓鱼身份验证保护特权账户。

个人防护措施

  • 使用密码管理器,为每个账户生成不同的长密码。

  • 在支持通行密钥的服务中优先使用通行密钥。

  • 启用多因素身份验证,并优先为重要账户使用安全密钥或通行密钥。

  • 在不发送密码本身的情况下,检查它是否已出现在已知泄露数据集中。LeakData 的密码安全检查采用保护隐私的查询方式。

  • 怀疑密码已泄露或遭到盗用时,应及时更换;按固定周期例行更换密码不能替代监测。

组织防护措施

  • 使用现代的加盐慢速密码哈希函数存储密码,并定期审查工作因子。

  • 在账户注册和更改密码时,使用已泄露密码的禁用列表进行检查。

  • 采用分层速率限制、机器人防护、风险信号和告警,而不是仅依赖固定的账户锁定规则。

  • 设计安全的账户恢复流程;攻击者经常针对密码重置和技术支持流程下手。

  • 绝不将明文密码写入日志,也不要将其放入分析数据、URL 或支持工单中。

结语

密码攻击仍在不断演变,但可以改变其基本的成本与收益关系。使用各不相同的凭据,可以阻止密码复用带来的风险扩散;慢速密码哈希可以提高离线攻击的成本;抗钓鱼身份验证则可以让攻击者即使窃取了密码,也无法仅凭密码完成攻击。密码还将在许多系统中存在一段时间;现实的目标是减少对单一密码的依赖。更多内容请阅读密码会消失吗?