我为什么要关心哈希密码呢?

时间:2008-11-13 17:27:40

标签: security encryption

如果黑客可以访问我的数据库中的哈希值,他仍然可以访问数据库中的其余信息。那么为什么他会费心去解密密码呢?我应该将密码存储在不同的服务器上以保存我的其他数据吗?这是我可以设想它有用的唯一场景。

12 个答案:

答案 0 :(得分:53)

  1. 有时黑客无法完全访问您的数据库。有时他们会发现一个小的SQL注入漏洞或其他人没有正确编码的弱点,因此他们最初只能做一些简单的事情,比如一次打印一个数据库单元。如果他们能够打印出真正的密码,那么事情就会变得更糟。

  2. 事情发生了:备份磁带丢失,意外丢失或被盗。一个退休的系统没有被正确擦除。其他地方的违规行为会导致数据库意外泄露。如果黑客可以访问这样的快照,他可以了解很多关于你的系统的知识。但是,如果密码仍然是哈希,他也不能使用系统做恶意的事情,比如以不同的用户身份登录并开始更改。

  3. 我听说大多数黑客都是内部工作。最好除去你信任的人以其他人身份登录的能力。

  4. 这不仅仅是你。用户倾向于跨系统共享密码。也许有一天(上帝保佑)你有一个与密码无关的漏洞,但在这个漏洞的过程中你的身份验证表将成为攻击者的目标之一。如果您以纯文本形式存储密码,那么您在许多其他服务中也只是破坏了用户帐户,而且非常糟糕的一天变得非常糟糕。

  5. 如果您认为这种事情没有发生,请与reddit的那些人谈谈。

答案 1 :(得分:33)

  1. 人们经常对其他网站上的不同帐户使用相同的用户名/密码(包括在线访问银行帐户)。

  2. 一旦你发现了这个黑客攻击并保护了你的数据库,黑客仍然可以登录你用户的帐户。

答案 2 :(得分:9)

最佳安全措施建议:

  • 您应为每个帐户使用唯一(userId,密码)对。但是大多数人使用一对来获取许多资源(电子邮件,银行,)。攻击者可以从一个资源中窃取它们并使用它们访问另一个资源。使用 salt - 查看http://en.wikipedia.org/wiki/Salt_(cryptography)哈希密码 - 可以防止此类攻击。

  • 您应该加密数据库中所有敏感数据,而不仅仅是密码。您有意盗取整个数据库(或服务器)的观点完全有效。

  • 您应该将您的网络服务器与您的数据库和任何其他宝贵资源分开,以便将攻击隔离到您最不宝贵的资产。

还有商业原因来散列密码。请记住,散列意味着您不会在设备的任何位置存储用户密码

  • 根据适用的法律,您可能必需在某些情况下执行此操作。

  • 如果您的数据被盗,您可以大大减少曝光率。

  • 您对社会工程攻击更安全,攻击者冒充有效用户并哄骗员工泄露密码。请参阅http://en.wikipedia.org/wiki/Social_engineering_(security)

答案 3 :(得分:4)

  

我应该将密码存储在   不同的服务器到我的其余部分   数据?

这会增加系统的复杂性,但如果它能够做到,那肯定是一种改进。

请注意,使用Kerberos,RADIUS或Windows域身份验证等身份验证服务器可以有效地将密码放在另一台服务器上。

答案 4 :(得分:3)

因为即使您有权访问数据,访问APPLICATION实际上也更重要。例如,应用程序使操作数据变得更加容易。

哈希密码可防止所有人偶然暴露。

例如,您可能在多个站点上拥有相同的密码。快速浏览数据库不仅会影响您的应用程序,还可能影响其他几个应用程序。

干扰密码只是一个好的,可靠的做法。

答案 5 :(得分:3)

主要是因为做得好而且几乎无足轻重,效益可能非常高。

答案 6 :(得分:2)

有时,您不知道谁是系统管理员。您仍然希望保护您的用户免受他们的侵害。因此,通过散列密码和所有重要信息(例如信用卡),您可以使黑客或管理员更加困难。并且,我认为密码永远不应该按字面意思写。我的意思是,我用了两年的密码,我从来没有看过它写下来..为什么我不认识的管理员应该看到我的密码?!

答案 7 :(得分:1)

使用散列密码可防止攻击者即使知道散列也能够登录您的应用。您的登录页面要求输入原始密码,因此要使用它登录,他们必须反转哈希值(计算冲突)。使用彩虹表,这对于MD5来说相当微不足道,例如,这就是盐腌进入的地方。然后攻击者需要知道1)你将盐和密码结合起来的方式(那里安全性不大),2)盐(这可能在数据库中已经存在)和3)他们必须为密码和盐的每个组合计算该值。这不仅仅是计算常见密码的哈希并寻找匹配。

答案 8 :(得分:0)

当黑客访问您的数据库时,并不意味着他可以访问过程代码,这些过程可以更改被黑客入侵的数据库边界之外的数据库,也可以改变其他过程。

顺便说一下,我现在要问你一件事:如果用户遭到黑客攻击并且有人有密码,你如何明确表示这不是你的应用程序或安全错误?

如果您没有存储密码,则无法承担此类责任!

答案 9 :(得分:0)

如果申请是要在大学显示成绩信息,那么访问密码将允许您获得该人的成绩。如果密码还允许您登录在线课程系统,那么您可以以该用户身份提交测试。

如果数据更加敏感,例如信用卡号或健康记录,您可以提起诉讼。

可能的情况是,在更强大的防火墙后面,更安全的系统上可能会有更敏感的信息,因此他们可能通过入侵身份验证数据库找到了一个弱点。

通过哈希密码,那些有权访问身份验证数据库的人无法看到密码,因此以不同的用户身份登录到非常敏感的系统。

答案 10 :(得分:0)

整个LinkedIn "scandal"都是关于泄露的哈希密码。

正如我所看到的,安全性与使数据检索不方便无关。

在理想情况下不方便我们的意思是它将花费你数百万计算年来访问(即单个CPU试图猜测密码会占用数百万年的规模)。

如果以明文形式存储密码,则需要总共0个计算年份才能访问。 LinkedIn的丑闻看起来会更糟糕。您所要做的就是SELECT * FROM USERS(通过注射或内部人员)。

人们经常重复使用密码,因此如果人们了解您的密码,就意味着他们可以访问整个世界的数据(例如,不仅仅是他们的LinkedIn)。所以这成为一种非常个人化的风险。作为网站管理员,粗鲁不是 至少 哈希密码:您没有那么尊重您的用户采取基本步骤试图保护他们的信息。

即使可以破解散列密码,您至少还要采取最小的步骤来保护您的用户。

答案 11 :(得分:0)

如果他可以解密密码,他也可以访问其他网站上的用户帐户(因为,无论我们告诉别人多少次不重复使用密码,他们都会这样做)。存储明文密码是一种很好的方式来放弃所有用户的PayPal,eBay&亚马逊帐户。