进行密码检索/重置的安全方法?

Posted

技术标签:

【中文标题】进行密码检索/重置的安全方法?【英文标题】:Secure way to do password retrieval/resetting? 【发布时间】:2011-04-01 17:20:03 【问题描述】:

在我开始之前,我不使用OAuth 的原因是我认为这不是我们应该在这个项目中使用的东西,我们的目标是一个将被打包并转售给公司的平台,这些公司连接到他们的我们真的不希望拥有不受 %100 控制的帐户的自己的一组用途,我们不希望它与其他服务共享登录,并且我们不希望强迫人们进入获得 google/yahoo/openID/aol/facebook/blogger/wordpress/whatever 帐户。

那么,我想要的是让用户重新设置密码的最佳方式。

我讨厌秘密问题的概念:你上的是哪所学校?好吧,让我们检查一下您的 Facebook 页面。你一年级的老师是什么?随便问问吧。

我讨厌通过电子邮件使用一次性密码:电子邮件是从什么时候开始安全的?你的老板会读它。您每天都向我发送垃圾邮件。它进了你的垃圾箱。它未加密发送。

我也不想使用密码来重置密码。这没有任何意义。

我真的不知道最好的方法,所以我想我会问社区。​​p>

【问题讨论】:

【参考方案1】:

我认为这需要一个困难的实现,但将新密码作为短信发送到用户的手机可能是一种替代解决方案。手机比个人收件箱安全得多。

然后,要求用户输入他们的手机号码。通过电子邮件向不想要该功能的用户提供新密码。

【讨论】:

【参考方案2】:

所以你实际上希望用户证明他就是他声称的那个人,而不泄露关于他自己的信息(假设你可以通过社交黑客获取任何信息)

有 3 种身份验证方式:您的身份(生物识别)、您拥有的身份(例如加密狗)和您知道的身份(密码、响应...)。 2 或 3 向身份验证比 1 向身份验证更安全。

密码重置/恢复,顾名思义,降低了身份验证过程的安全性,因为它现在不是 A,而是(A 或 B)。 (A=密码,B=恢复密码)

因此,即使您的身份验证过程是单向(密码),您的恢复过程也应该是双向身份验证。

让我们看看您在密码恢复过程中有哪些选择:

    您的身份(识别您的系统管理员 - 通常不适合 5000 名员工的组织,声纹 - 实施成本太高,...) 您拥有的东西(电子邮件帐户、电话号码……) 您知道的事情(个人详细信息)

请注意,带有图片的公司 ID 标签是一种双向身份验证(您的身份和您拥有的身份)。

我认为最好的程序是让员工亲自前往 IT 部门,出示他的照片 ID,并要求重置密码。

如果这不可行(太远 - 例如远程分支机构),请尝试使用可通过电话识别并可以信任的 deligator,因此员工必须向本地 deligator 出示 ID-tag。

如果你不能使用“Something you are”——你会留下你拥有的东西(电子邮件、电话号码、你自己的电脑)和你知道的东西(个人详细信息......)。你逃不掉的。

【讨论】:

没有社交黑客,用户向我提供有关他们居住地、旅行证件和其他信息的信息,只是为了使用该系统。 “你一年级的老师是什么?随便问问他们吧” - 这是社交黑客。 啊,我误会了。我以为你的意思是 facebook 如何根据其他事物在你可能喜欢的产品之间建立联系,或者运行人脸识别软件。我确实可以访问许多 ID 窃贼会喜欢的敏感数据,但我不确定是否要将其用作验证/秘密。【参考方案3】:

让用户选择一个(或多个)秘密图像。或者让用户上传自己的图片。

这比秘密问题效果更好。密题有两个常见问题:

    用户给出的答案可以被其他人轻松获得。 用户知道第一个问题,而不是真实答案给出了一个随机答案,后来忘记了自己是什么。

通过让用户选择秘密图像或更好地上传他们自己的图像。用户在找回密码时更容易回忆它,因为它更容易进行视觉关联。

恢复密码时,用户可以通过多种选择来选择正确的图像。

【讨论】:

这是一个巨大的不便,并且容易出现与秘密问题相同的一些问题。【参考方案4】:

您的问题是您需要外包信任。如果用户忘记了他们的密码,您将无法直接信任他们,因此您必须使用外部资源来重新建立关系。

如果您认为电子邮件不安全(实际上确实如此),您可以试试电话。用临时密码给他们打电话。或者传真。或蜗牛邮件,或短信等。

这与重置所经过的电话线/邮政运营商一样安全,并且在大多数地区,电话拦截或篡改邮件会受到法律的严厉惩罚。

如果这样做不好,请考虑向用户发放 OTP 令牌、智能卡或其他东西。

【讨论】:

通过电话也是一种合理的方法——您需要在首次注册用户时向他们收集电话号码,或者在需要时通过可靠的方式查找。 值得一提的是,我首先部署的组织维护着大约 7000 个用户帐户,这可能略高于其他组织的平均平均值。 @user257493:如果他们有那么多用户,他们就有支持人员。如果用户在公司内部,面对面的身份检查可能是一个可行的选择。 公司将有5到20人,他们都在做业务已经没有时间玩服务台请重置我的密码。他们也没有接受过假装是爱丽丝来处理马洛里电话的训练。【参考方案5】:

除非能够亲自审查此人,否则我认为您已经列出了我所见过的所有合理选项。在我看来,通过电子邮件的一次性密码是更好的选择,因为人们往往至少希望将他们的电子邮件保密。我个人讨厌秘密问题——答案公开的可能性太大(参见 Sarah Palin 电子邮件事件)。如果你要做秘密问题,至少让用户自己选择问题。

【讨论】:

这是我的另一个秘密问题。我总是输入其他内容(比如我的拳头敲击键盘几次),因为我不喜欢在我的帐户中设置一个简单的后门 我总是为秘密问题生成纯粹随机的答案(实际上我生成密码短语的方式相同)。 实施它们的人似乎忽略了秘密问题的要点。这些问题需要更加个人化,而不是公共知识。例如。你的初恋是谁?您穿什么尺码的鞋子?你的第一辆车是什么? 我有一个大问题,我很容易被社会设计的问题,我真的不想表现得像一个封闭的精神病害怕告诉别人我的第一个女朋友的名字是米歇尔,因为他们可以利用这些知识侵入我的帐户。 @It Grunt:如果你把答案交给一个网站,它就不再是秘密了。本杰明富兰克林说:“三个人能保守秘密的唯一方法就是两个人死了”。这些问题是一个有缺陷的想法。

以上是关于进行密码检索/重置的安全方法?的主要内容,如果未能解决你的问题,请参考以下文章

重置密码或提供旧密码的安全方法

允许用户重置密码的最安全方法是啥

如何创建密码重置链接?

重置 ASP.NET 密码 - 安全问题?

weblogic密码重置

使用电子邮件保护密码重置 URL? [复制]