有什么替代安全性问题的好方法?
From Wired magazine: ...the Palin hack didn't require any real skill. Instead, the hacker simply reset Palin's password using her birthdate, ZIP code and information about where she met her spouse -- the security question on her Yahoo account, which was answered (Wasilla High) by a simple Google search.
我们不能相信这样的安全性问题来重置忘记的密码。
我们如何设计一个更好的系统?
解决方案
仅提供未公开记录的问题。
通过发送电子邮件对所有内容进行身份验证是一种合理有效的解决方案。 (尽管在这种情况下,这对于Yahoo可能不可行:))。
无需担心安全问题或者其他恢复密码的方法,只需通过将电子邮件发送到具有授权链接的预定义电子邮件帐户来响应密码恢复请求即可。从那里我们可以更改密码,或者我们需要做的任何事情(尽管我们应该始终将密码存储为盐腌哈希,但始终不要发送密码,请始终进行更改。然后,如果电子邮件帐户受到损害,至少表明用户,他们的其他服务已被访问)
真正的答案是,没有一种万无一失的方法可以将黑客拒之门外。我讨厌安全性问题,但是如果我们要使用它们,请考虑用户定义的安全性问题。作为用户,如果我必须在站点上遇到安全问题才能设置帐户,我真的很喜欢能够设置自己的安全问题,以允许我提出只知道如何回答的问题。在这种情况下,甚至不必是一个真正的问题。但是,用户帐户的安全性却与用户的愚蠢程度一样安全,许多用户会使用类似"问题"之类的事实。和"答案!"或者同样愚蠢的东西。我们无法将用户从自己的愚蠢中解救出来。
如果不是电子邮件系统,请通过电子邮件将指向安全页面的链接发送给他们,并在查询字符串中包含哈希值以重置密码。
然后,如果有人尝试重置密码,我们将知道,他们将无法潜在地猜测哈希值。
我们将2个Guid相乘,以十六进制表示。
所谓的"安全问题"的不安全性早已为人所知。正如布鲁斯·施耐尔(Bruce Schneier)所说:
The result is the normal security protocol (passwords) falls back to a much less secure protocol (secret questions). And the security of the entire system suffers. What can one do? My usual technique is to type a completely random answer -- I madly slap at my keyboard for a few seconds -- and then forget about it. This ensures that some attacker can't bypass my password and try to guess the answer to my secret question, but is pretty unpleasant if I forget my password. The one time this happened to me, I had to call the company to get my password and question reset. (Honestly, I don't remember how I authenticated myself to the customer service rep at the other end of the phone line.)
我认为更好的技术是只发送带有链接的电子邮件,他们可以使用该链接为用户最初用于注册的电子邮件帐户生成新的随机密码。如果他们不要求输入新密码,则可以忽略该密码并继续使用旧密码。正如其他人指出的那样,由于Yahoo正在运行电子邮件服务,因此不一定对Yahoo有帮助,但是对于大多数其他服务,电子邮件是一种不错的身份验证措施(实际上,我们将身份验证问题强加给用户的电子邮件提供商)。
当然,我们可以只使用OpenID。
总是将密码重设发送到注册的电子邮件帐户(这对于电子邮件帐户来说是很棘手的)或者将PIN码发送到注册的手机,或者发送到IM地址的链接等,基本上,获取有关注册和使用的一些辅助联系信息它发送一个"密码重置"链接。
切勿让任何人直接更改密码,始终确保他们执行其他步骤。
好吧,它不应该直接重置密码,而是发送一封包含重置密码链接的电子邮件。这样,她将收到电子邮件,并知道不是她发起了重置,并且她的问题/答案已被破坏。
如果电子邮件地址不再有效,则应等待超时(几天或者一周),然后再将新电子邮件添加到帐户。
将消息发送到其他电子邮件帐户,或者给他们的手机发短信,或者给他们打电话,或者发送蜗牛消息。任何不涉及公共记录或者偏好的事情都可能随时更改。
完全消除安全方面的问题。他们是如此明显的安全漏洞,令我感到惊讶的是,他们花了这么长时间才制造出严重的(广受关注的)事件。
在它们消失之前,我将继续告诉使用它们的网站我上了" n4weu6vyeli4u5t"高中。
我喜欢保持简单,并使用荣誉制度方法。例如,我将向用户显示类似的内容,
Is this really you? Select: Yes or No.
它"取决于""系统"。
- 如果我们是银行或者信用卡提供商,那么我们已经向客户发行了一些物理令牌,我们可以根据该令牌进行验证等等。
- 如果我们是电子商务网站,则要求提供一些最近的交易-确切的金额,使用的信用卡号等。
- 如果我们像Yahoo一样,我将使用的一种自动方法是通过电话或者短信向手机发送激活码以及一些其他基本问题和答案。
杰伊
让用户输入3个问题和答案。当他们要求重置时,向他们提出5个问题,其中一个是他们输入的3个问题中的一个。然后发送确认电子邮件以实际重置密码。
当然,没有什么是真正的"黑客证明"。
将这些安全性问题视为实际上是两因素身份验证,这完全是误导。从以前阅读的虚假项目开始,当要求某些(银行)站点进行"双重身份验证"时,他们开始将其实现为一种廉价的实现方式。布鲁斯·施耐尔(Bruce Schneier)谈到了这个问题。
多种因素是最好的事物,但并非相同。它不应该是我们"知道"的所有东西,而应该是我们知道和拥有的东西,等等。这就是硬件认证令牌,智能卡和其他此类设备起作用的地方。
[1]:http://www.schneier.com/blog/archives/2005/03/the_failure_of.html双重身份验证失败
看到很多张贴者建议使用电子邮件,我只能建议不要使用电子邮件作为防线。
危害某人的电子邮件帐户相对容易。许多基于Web的电子邮件服务都不能提供任何真正的安全性,即使它们提供SSL,它通常也不是默认的,并且我们仍然依靠电子邮件密码的弱点来保护用户(反过来,大多数情况下,它具有重置机制时间 )。
电子邮件是最不安全的技术之一,有充分的理由说明为什么通过电子邮件发送信用卡详细信息之类的信息真的是个糟糕的主意。它们通常在服务器之间以明文形式传输,并且同样经常在服务器和桌面客户端之间以同样的未加密方式传输,而只需嗅探一下即可获取重置网址并触发它。 (不要说我很偏执,因为银行有充分的理由使用SSL加密。我们如何相信路线上20-200个物理设备的良好意图?)
获得重设数据后,我们可以重设密码,然后更改电子邮件地址,并对其帐户拥有永久控制权(这一直在发生)。
如果他们获得了电子邮件帐户,那么他们要做的就是浏览收件箱以找到订阅者,然后轻松地在所有用户上重置密码
因此,现在,使用基于电子邮件的安全性,可能会导致传播性的安全弱点!。我敢肯定那是有益的!
被问到的问题是我认为单独使用软件几乎是不可能的。这就是为什么我们使用硬件加密狗进行2因子认证的原因,这些加密狗使用自己独特的私钥签名来应对挑战,并且只有在丢失密码后,我们才会被拧紧,然后必须与人工打交道(哦,不)新的一个。
带外通信是必经之路。
例如,可以通过SMS发送临时密码(取决于系统)。我见过这种情况经常在电信中实现,其中短信便宜/免费/属于企业,并且用户的手机号码已预先注册...
银行通常要求打给/打出特定号码的电话,但我个人对此并不感到疯狂...。
当然,根据系统的不同,强迫用户进入分支机构亲自识别自己的身份也可以起作用(只是让用户感到恼火)。
最重要的是,不要创建弱通道来绕过强密码要求。
良好的安全性问题是用词不当。他们实际上在系统中创建了一个漏洞。我们应该称它们为不安全的问题。但是,认识到它们提供的风险和价值,"好的"安全性问题应该具有四个特征:
1.不能轻易猜测或者研究(安全),
2.不会随时间变化(稳定),
3.令人难忘,
4.是确定的还是简单的。
我们可以在http://www.goodsecurityquestions.com上了解有关此内容的更多信息。
这里列出了良好,公平和较差的安全性问题。
当涉及到用户时(大多数情况下也是如此),则没有安全性;只有安全的幻想。我们对此无能为力。我们可能会遇到"较不常见的"安全问题,但由于某些人将所有内容都暴露在公众的视线中,因此即使它们也很容易被利用。
诸如电子邮件之类的辅助渠道为该问题提供了合理的解决方案。如果用户要求重设密码,我们可以通过电子邮件向他们发送密码重设令牌。就像其他人所说的那样,它仍然不完美,但是要利用此漏洞,攻击者必须位于网站,其MTA和用户MUA之间的视线范围内。从技术上讲这很容易,但是我建议现实是,除了非常引人注目的个人之外,他们很难打扰任何人。
要求用户在帐户创建时提供SSL或者GPG公钥将极大地,但无知的用户将不知道这些事情是什么,更不用说能够保护其私钥并对其进行备份了,这样他们就不会丢失它们。
要求用户提供第二个紧急密码(类似于手机SIM卡上的PIN / PUK)可能会有所帮助,但是用户可能会两次使用相同的密码,或者也忘记了第二个密码。
简而言之,我们就是SOL,除非我们想对用户进行安全性教育,然后用线索打他们,直到他们意识到有必要确保安全并且少量的额外工作并不仅仅是使我们痛苦不已。屁股。
生成包含该人的用户名和密码的哈希,然后通过Https将其作为文件发送给用户。用户将文件保存到磁盘。他们有责任将此文件存储在安全的位置。或者,我们可以将其发送到他们的电子邮件地址,但这会降低安全性。如果用户忘记了登录凭据,则必须上载此文件。服务器验证了用户名和密码后,将显示一个对话框以更改其密码。