安全问题的答案是否应该区分大小写?

信息安全 验证 密码 Web应用程序 应用安全 秘密问题
2021-09-03 21:16:14

问题
在使用安全问题重置帐户密码的情况下,处理安全问题答案区分大小写的最佳实践是什么?

场景
我正在处理的帐户密码重置过程分为三个步骤。第一步要求用户提供三项可识别信息,包括他们的用户名、出生日期和身份证号码。一旦他们通过了检查,他们就会被问到他们的安全问题(他们之前设置的)。如果他们通过了检查,他们就会设置一个新密码。

那么,我们是否应该在安全问题上要求区分大小写?一些内部讨论将我们指向“不”的方向。我们提出的一个理由是,假设我们使用相同的安全问题,如果用户打电话给我们作为检查来验证他们的身份。如果他们得到正确的答案,他们就会得到正确的答案。他们没有以口头方式向我们说明答案的情况。那么,我们应该在网络表单上进行吗?

我似乎找不到“行业标准”或“最佳实践”,因此我希望从有此实践经验的人或安全事务专家那里获得一些反馈。

3个回答

“安全问题答案”类似于辅助密码,用户不会每天使用。记住一个几乎从不输入的密码是很困难的。要求确切大小写很可能使用户无法正确回答。

从理论上讲,“安全问题”已经是一个巨大的弱点,你可以容忍它,因为一些用户忘记他们的密码,你希望尽可能自动化地处理这种情况,而不问任何安全问题会在安全方面更糟糕。因此,安全问题的附加价值在于它们允许不完全开放的密码重置过程,该过程仍然可以自动进行,即以最低的服务器成本。区分大小写可能会删除该值的大部分。实际上,我什至建议通过抑制空格、标点符号和重音来进行规范化。

安全问题基本上是另一个密码。理想情况下,它应该具有与密码相同的属性,即合理的长度(大于 8 个字符)对于防止猜测和暴力破解是最重要的。

这项研究发布在上一个问题中: https ://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxyZXVzYWJsZXNlY3xneDozNDcwNDhmMmE2MmJiMDkw

它的结论是复杂性对于在线条目并不那么重要。因此,如果您检查基本字典单词、用户名等,具有足够的长度并实施帐户锁定或指数退避,那么在要求复杂性方面也没有显着的好处。

当然,最好的办法是消除秘密问题,并添加一种带外密码重置方法,例如短信一次性密码,甚至电子邮件一次性密码/链接。或者完全停止管理密码并支持基于 OAuth(例如 Facebook 连接)或 Open-ID(Google 等)的身份验证方法。

正如之前的两个答案中所述,“安全问题”只是密码和伪装,应该这样对待。我们不会将您的密码设置为一些容易猜到或公开可用的值,那么我们为什么要针对安全问题这样做呢?这是自找麻烦,我个人认识这样惹麻烦的人。

我总是对安全问题给出完全编造的答案,然后将它们与真实密码一样对待,即使用密码管理软件。我认真地建议大家也这样做。