密码系统 - 彩虹表攻击



什么是彩虹表攻击?

彩虹表攻击是一种用于解密密码的技术,它使用一张称为“彩虹表”的表。密码不会以纯文本形式保存,而是加密成哈希值。当用户尝试通过输入密码登录时,密码会被转换成哈希值,然后与服务器上存储的哈希值表进行比较以验证匹配。匹配表示用户的身份已确认,允许他们访问软件。

彩虹表本身显示了一个预先计算的密码哈希值表,其中包含身份验证过程中使用的任何纯文本字符。如果黑客能够访问密码哈希列表,他们可以使用彩虹表轻松破解所有密码。

一种名为“加盐”的工具极大地减少了彩虹表攻击。加盐是一种防止彩虹表攻击的现代方法,它需要向每个哈希密码添加一个新的随机值以创建唯一的哈希值。大多数现代密码认证系统都包含加盐,以大大减少成功的彩虹表攻击次数。

大多数程序员都使用加盐,但也有一些程序员没有使用,这使得他们更容易受到彩虹表的攻击。

这是一个关于彩虹表攻击工作原理的简单示意图:

Rainbow table Attack

解释

  • 用户输入密码。

  • 密码被转换为哈希值(一种特殊的代码)。

  • 将哈希值与服务器上存储的哈希值进行比较。

  • 如果找到匹配项,则授予访问权限。否则,用户可以重试。

当黑客访问存储的哈希值并使用预先计算的表来快速查找与这些哈希值关联的原始密码时,就会发生彩虹表攻击。

彩虹表攻击是如何工作的?

要进行彩虹表攻击,黑客首先必须获得泄露的哈希值。有时密码数据库本身安全性不高,或者他们可能访问了 Active Directory。需要访问密码数据库的用户可以通过网络钓鱼技术获得访问权限。通过所有这些方式,暗网上已经有数百万个泄露的密码哈希值可供黑客使用。

获得密码哈希值后,可以使用彩虹表来帮助解密密码哈希值。只要密码哈希值中没有“盐”(如上所定义),加密密码就可以转换为纯文本。

整个彩虹表攻击过程有四个步骤:

  • 创建 - 彩虹表通过首先获取潜在密码列表并对每个密码应用哈希函数来生成哈希列表。彩虹表用于存储生成的哈希值及其对应的明文密码。

  • 查找 - 黑客可以使用彩虹表查找与他们拥有的哈希集合匹配的明文密码。为了找到与目标哈希匹配的项,会从每个链的最后一个哈希值开始,反向验证彩虹表中的哈希值。

  • 破解 - 当找到匹配的哈希值时,表明目标哈希的原始密码是匹配的明文密码。现在黑客可以使用身份验证过程来访问他人的帐户。

  • 缩减 - 彩虹表中的哈希值通过缩减函数重新处理以生成新的哈希集。缩减函数将每个哈希映射到一个新值,新值用作下一步的起点。此步骤重复多次以创建哈希链。

彩虹表攻击示例

下面列出了两个彩虹表攻击如何发生的现实世界示例:

  • 攻击者发现一个 Web 应用程序使用了过时的密码哈希技术和非常糟糕的安全措施。通过获取密码哈希值,攻击者可以使用彩虹表来解密应用程序中每个用户的密码。

  • 黑客能够通过搜索公司 Active Directory 中的漏洞来访问密码哈希值。获取密码哈希列表后,使用彩虹表攻击将哈希值解密为纯文本密码。

抵御彩虹表攻击!

只要遵循以下指南,防御彩虹表攻击就相当简单:

  • 消除密码 − 确保防止基于密码的攻击的唯一方法是解决密码问题。如果没有要窃取的密码哈希列表,则无法进行彩虹表攻击。立即了解无密码身份验证,并确保您的重要应用程序平稳运行。

  • 使用盐值 (Salt) − 哈希密码绝不应在不加盐值的情况下存储。这使得解密密码更加困难。但是,建议完全删除字母数字术语。

  • 使用生物识别技术 − 当使用生物识别身份验证机制对抗生物识别密码时,攻击者很难(如果不是不可能的话)成功进行彩虹表攻击。

  • 监控您的服务器 − 大多数现代服务器安全软件都会监控访问敏感信息的尝试,并可以努力最大限度地减少并抓住攻击者,然后再让他们发现密码数据库。

  • 避免使用过时的哈希算法 − 黑客会攻击使用过时的密码哈希算法 MD5 和 SHA1 的应用程序和服务器。如果您的应用程序使用过时的算法,则彩虹表攻击的可能性会大大增加。

彩虹表攻击与字典攻击

彩虹表攻击和字典攻击都是黑客用来获取密码的密码破解技术。

在彩虹表攻击中,攻击者使用预先计算好的哈希表来确定哈希密码的明文版本。与字典攻击不同(字典攻击中,攻击者会尝试字典中的每个单词,直到找到匹配项),彩虹表攻击允许攻击者快速找到包含前面已计算出的表的明文字符串。但创建它们需要大量时间,并且占用大量空间。

在字典攻击中,黑客使用预编译的常用密码列表(常用的单词和符号),即字典,与哈希密码进行比较,找到匹配项则表示哈希密码已被破解。字典攻击之所以成功,是因为许多用户创建的密码非常简单易懂。此攻击取决于计算机的速度,并使用多个可能的密码。

总结

彩虹表攻击是黑客使用预先计算的表格破解数据库中存储的哈希密码的一种方法。但是,通过使用盐值(将随机值添加到哈希密码)可以降低此类攻击的有效性。为了防止彩虹表攻击,组织应消除基于密码的身份验证,采用安全的密码,例如无密码身份验证或生物识别技术,以及使用带盐值的密码哈希,监控服务器上的恶意活动,并避免使用 MD5 和 SHA1 等过时的哈希算法。这些措施有助于降低成为彩虹表攻击受害者的风险,并提高整体网络安全。

广告