网络安全密码管理策略常见问题分析--未安全保存密码
1、原因:
加密散列函数是单向函数。因此,保存哈希密码可以防止攻击者计算它们。
2、攻击:
与前两个问题不同,此问题通常与离线攻击有关,许多公司和组织的密码数据库被盗。一旦攻击者掌握了被盗的密码数据库和强大的计算能力,他们通常可以计算许多用户的密码。
存储密码的常用方法是使用加密散列函数散列密码。如果最终用户选择的密码长度超过20个字符,则此方法是完美的。例如,密码设置为/K'x,x4%(___.C5S为7gMW)。不幸的是,人们很难记住这个密码。如果密码是简单的散列,则用户可以使用Rainbow Table攻击轻松猜测所选的常规密码。

要阻止Rainbow Table攻击,通常必须在散列中的每个密码前添加随机“盐”。盐可以用密码储存在清洁室。不幸的是,加盐的海试并没有太大帮助。GPU非常擅长快速计算加盐哈希值。能够访问大量艳海诗和GPU的攻击者,通过暴力破解和预攻击等攻击,可以合理、快速地猜测密码。
太多不安全的密码存储机制值得特别的写作。但是,让我们先来看看如何保存密码。
3、防御:
有两种主要的机制可以防止攻击者。一种是使哈希计算更昂贵,另一种是在哈希中添加不可预测的内容。
要使散列计算更昂贵,请使用自适应散列函数或一次性密钥派生函数来存储密码,而不是使用密码散列函数。加密哈希函数的一个特点是可以计算。此属性不适用于密码存储库。攻击者可以轻松猜测密码并快速散列密码,并确保生成的散列值与密码数据库中的所有内容一致。
另一方面,自适应散列函数和单向密钥导出函数具有可配置的参数,可用于使散列计算更加资源密集。如果使用正确,您可以完全减少离线攻击,以确保您有时间响应受攻击的密码数据库。
此方法的问题是,每次验证用户时,都必须直接计算这些哈希值。这会给服务器带来额外的压力,并使应用程序更容易受到拒绝服务(DoS)攻击。

或者,您可以添加不可预测的密码哈希。例如,如果要创建长随机密钥并将其添加到密码散列值和唯一的随机盐中,并保护密钥的安全,被盗的密码数据库对攻击者来说是无用的。攻击者必须使用密码数据库和离线攻击窃取可用于计算用户密码的密钥。当然,这也导致了一个非常重要的网络安全密码管理策略管理问题需要解决。
