`
xitong
  • 浏览: 6313620 次
文章分类
社区版块
存档分类
最新评论

[技术分享]用户密码安全存储建议

 
阅读更多

安全小测验:存储机密信息最安全的办法是什么?

a)利用 256 位密钥的强对称加密算法(例如 AES)进行加密。

b)利用 4096 位密钥的非对称强加密算法(例如 RSA)进行加密。

c)利用平台内置的加密系统进行加密,例如 Windows 的数据保护 API (DPAPI)

做出选择了吗?正确的答案实际上是:

d)既然是机密数据,就完全不要存储!

好吧,这个问题看上去有点难,但其答案是很有道理的:窃贼无法窃取根本不存在的东西。我们把这个原则应用到身份验证操作,如网站登录。如果一个网站永远不存储用户的密码,那么即使网站受到攻击,这些密码也不能被盗走。但是网站如何在不存储用户密码的情况下来验证用户的身份呢?答案就是网站存储密码的加密哈希,而不是明文密码本身。(如果你对哈希的概念不熟悉,我们建议你在继续前阅读http://msdn.microsoft.com/zh-cn/library/92f9ye3s.aspx#hash_values。)通过比较哈希而不是明文,网站仍然可以验证用户确实知道自己的密码,不然哈希将不会匹配,而实现这个过程并不需要网站实际存储密码(如图1所示)。这是一个不错的解决方案,但是仍有一些设计方面的注意事项,以确保你不会无意间削弱系统的强度。

第一个设计问题是,简单地对密码进行哈希计算并不能提供充分的保护:你还需要在计算哈希值前为每个密码添加随机盐值(Salt)。切记,对于给定的哈希函数,对某个输入值计算哈希值始终会得到相同的输出值。如果时间充裕,攻击者可能会计算出明文字符串及其相应哈希值的表。事实上,已经存在很多这样的表(称为彩虹表),并且可在互联网上免费下载。有了彩虹表后,如果攻击者通过任意方式设法获取了某网站的密码哈希列表,那么他可以使用该表轻松地确定初始的明文密码。当你对哈希加盐值时,你就可以从攻击者手中夺走这个“武器”。另外,要为每个用户生成(并存储)特定的盐值,而不是每个用户使用相同的盐值,这一点很重要。如果你始终使用相同的盐值,则攻击者可能会构建一个使用该单一盐值的彩虹表,从而提取出密码。

clip_image002[6]

1:比较加盐值后的哈希值

另一个重要的设计问题是,一定要使用强加密哈希算法。MD5 可能是比较常见的选择,但是密码学家已经论证了 MD5 的脆弱性,近年来它一直被认为是不安全且可破解的算法。SHA-1 安全性稍微强一些,但它也开始显现被破解的迹象,现在密码学家建议避免使用 SHA-1SHA-2 哈希算法系列当前被视为最强健的算法,是唯一获得微软安全开发生命周期 (SDL) 加密标准策略批准,可以在微软产品中使用的哈希算法系列。

相比将SHA-2硬编码入程序,一个更好的办法是实施加密灵活性,就是说即使应用程序已经部署到生产中,也仍然可以改变哈希算法。毕竟,加密算法会过时;密码学家会发现其弱点,并且随着计算能力的增强,使用暴力攻击破解越来越轻松可行。某一天,SHA-2 可能会被认为和 MD5 一样脆弱,未雨绸缪不失为明智的选择。对哈希灵活性进行深入分析讨论已经超出了本篇博文的讨论范围,不过,你可以在 MSDN 杂志文章加密灵活性”[http://msdn.microsoft.com/zh-cn/magazine/ee321570.aspx] 中阅读了解关于建议解决办法的更多信息。就像 SDL 强制在微软产品中使用强加密算法一样,它也鼓励产品团队尽可能使用加密灵活性,这样可以在当前强算法遭到破解的情况下更敏捷地迁移到新算法。

到目前为止,我们已经讨论了要对哪些内容进行哈希计算(密码和随机的特定盐值)以及如何进行哈希计算(使用 SHA-2 系列中的加密强哈希算法,最好是可配置的,以便允许进行未来变更),但是我们还没有讨论哈希计算的应用位置。你可能会认为在客户端执行哈希计算将能极大地提高安全性,因为你只需要通过网络向服务器发送哈希,而绝不会发送明文密码本身。不过,好处也并不像你想象的那么多。如果攻击者能够嗅探网络流量,他仍然可以拦截传输,并自行将哈希传递到服务器,从而欺骗用户,劫持其会话。这时,哈希本质上会成为明文密码。这个方法唯一切实的好处就是如果受害者在多个网站上使用同一密码,则攻击者将不能在其它网站损害受害者的帐户,因为知道密码的哈希值并不会告诉你关于密码本身的任何内容。防御此类攻击的更好方式是,在服务器端执行哈希计算,但确保密码和所有凭据令牌(例如会话 Cookie)始终通过 SSL/TLS 进行传输。在将来发布的博文中,我们会讨论安全凭据传输(和密码管理的其他方面,例如密码复杂性及其过期时间)。

遵循下面一些简单的原则,有助于你确保应用程序的用户凭据仍保持安全,即便在数据库被攻破的情况下也是如此:

·始终存储并比较密码的哈希,而永远不要存储明文密码本身。

·在进行哈希计算前,对每个密码应用随机且特定的盐值。

·使用加密的强哈希算法,例如 SHA-2 系列之一。

·通过实施灵活的加密设计,允许未来潜在的算法变更。

·对服务器层进行哈希计算,并确保通过 HTTPS 传输所有密码和凭据令牌。

作者:Bryan Sullivan clip_image001

资深安全项目经理

微软SDL(安全开发生命周期)团队

分享到:
评论

相关推荐

    自用密码储存器

    2. **密码储存安全**:密码储存器的核心在于安全地存储用户密码。通常,不应明文存储密码,而是使用加密算法如bcrypt或scrypt对密码进行哈希处理,然后存储哈希值。在用户登录时,将输入的密码进行同样的哈希处理,...

    各个网站的密码 各个网站的密码

    在此,我们将讨论与网站密码管理相关的几个关键知识点,包括密码安全性、密码管理器、多因素认证以及最佳网络安全实践。 1. **密码安全性**:每个网站应使用独特且复杂的密码,避免使用生日、电话号码或者重复的...

    通达OA清空admin密码.zip

    7. **培训与教育**:组织内的员工应接受信息安全培训,了解密码安全的重要性,不轻易分享或记录密码,避免成为钓鱼攻击的目标。 综上所述,通达OA清空admin密码的过程涉及到多个环节,包括版本匹配、数据库操作、...

    侠客星号密码查看

    总的来说,“侠客星号密码查看”是一个涉及到密码安全、内存分析和用户隐私的复杂话题。尽管在某些情况下可能有用,但其潜在的风险和合法性问题不容忽视。对于个人用户来说,加强密码保护意识和采取有效的密码管理...

    个人密码管理 PPM

    6. 安全分享:允许安全地共享某些密码给信任的联系人。 7. 二步验证:增加额外的安全层,例如通过短信或应用接收验证码。 8. 应急访问:在必要时,如遗嘱规划,设定紧急联系人获取密码库。 9. 用户友好的界面:易于...

    keypass,密码管理软件

    1. 安全存储:Keypass使用强大的加密技术(如AES和Twofish)来保护用户的密码数据库,确保即使数据被窃取,没有正确的主密码也无法解密。 2. 一键登录:用户可以在Keypass中存储用户名、密码、网址和其他相关信息,...

    win7密码查看器

    【win7密码查看器】是一款专门针对Windows 7操作系统设计的密码查看工具,它能够帮助用户在忘记系统...同时,为避免遗忘密码带来的困扰,建议定期更新且记录重要的密码,或者使用密码管理器来安全地存储和管理密码。

    私人密码在电子商务中的法律地位和作用.pptx

    2. 完善密码管理机制:电子商务平台和相关机构应建立健全的密码管理机制,采用密码加密、安全存储等技术手段,确保用户和商家的密码安全。 3. 强化法律监管:政府应进一步完善与私人密码相关的法律法规,明确各方在...

    查看宽带用户名密码

    建议用户在下载和使用任何第三方工具时谨慎行事,确保从可信赖的源获取,并在必要时进行病毒扫描。 首先,让我们讨论一下宽带连接的基本原理。宽带连接通常基于两种主要技术:ADSL(Asymmetric Digital Subscriber ...

    云计算技术下的网络安全防护.pdf

    只有通过不断推进网络防护技术的发展、提高网络防护人才的专业水平、加强云服务提供商的安全保护措施以及提升用户网络安全意识,才能有效提升云计算技术下的网络安全性和可靠性,保障用户的数据安全...

    网页密码查看器,绿色免安装

    在当前的网络环境中,许多网站和服务为了保护用户信息安全,通常会以加密形式存储用户的登录密码。然而,有时用户可能忘记了某个网站的密码,或者需要在多个设备间同步密码,这时网页密码查看器就能发挥它的作用。它...

    ADSL密码查看器本程序会自动获取ADSL密码

    ADSL(Asymmetric Digital Subscriber Line,非对称数字用户线)是一种广泛应用于家庭和小型企业的宽带接入技术,它通过电话线路提供高速互联网连接。在使用ADSL服务时,通常需要设置一个用户名和密码来验证身份,...

    “第六届密码学与云计算安全国际研讨会”在鲁东大学举行.pdf

    本届研讨会上,专家学者还分享了在应用安全、物联网安全等领域的最新产品和技术。梆梆安全作为国内领先的移动安全公司,在研讨会上展示了其在移动威胁感知平台方面的最新进展。该平台利用大数据和机器学习技术,对...

    浏览器密码查看器,旧版本

    - 了解如何使用这样的工具可以帮助用户提高网络安全意识,但不建议未经许可查看他人的密码。 5. **使用步骤**: - 运行`WebBrowserPassView.exe`,程序会自动扫描并列出所有已保存的密码。 - 用户可以选择导出...

    宽带账号密码查看器

    6. **备份与恢复**:为防止忘记宽带账号密码,建议定期备份这些信息,可以通过记事本、密码管理器等工具安全地存储。如果需要在新设备上设置宽带连接,可以使用备份的账号密码进行快速配置。 7. **操作系统的网络...

    ADSL密码查看

    "ADSL密码查看"是一个工具,用于帮助用户方便地查看已经存储在计算机中的ADSL连接密码,这对于忘记密码或需要重置网络设备时非常有用。 这个工具名为"Dialupass.exe",可能是一个小巧的实用程序,能够扫描系统中...

    一个自己的小游戏的密码

    除了技术和工具的应用外,还需要加强对用户的教育,让用户了解如何正确设置和管理密码,以及在遇到安全问题时如何采取正确的应对措施。这包括但不限于定期更新密码、不使用相同的密码、警惕网络钓鱼等行为。 综上所...

    adsl账号密码查看器

    2. **安全存储**:可能提供一个安全的数据库来存储用户的ADSL账号信息,防止数据丢失或被盗。 3. **备份与恢复**:具备备份账号信息的功能,以防意外情况导致数据丢失,同时也可以方便在新设备上恢复这些信息。 4....

    ADSL账号密码*号查看器

    3. 避免依赖:长期依赖查看器并不安全,建议定期更改密码,并采用强密码策略,以增加安全性。 4. 官方支持:如果忘记密码,首先尝试通过服务提供商的官方渠道找回,而不是依赖第三方工具,以减少安全风险。 5. ...

Global site tag (gtag.js) - Google Analytics