创建一个可靠的同时又令人难忘的密码并非易事。
那么,用一些值得纪念的问题来代替一个密码如何呢?(这个想法与这一个有关)
让用户自己创建问题。它可以是任何字符串,甚至随机数目的符号,只要它能让他想起什么。这会让注册时间更长,是的。
UPD:当用户登录时,他会看到他正在回答的问题,所以问题就像密码提示一样工作。只是为了澄清。
答案被存储散列(当然带有盐)(附加加密有用吗?)问题被存储在一个链中,除了第一个--第一个问题的答案是解密下一个问题的密钥,依此类推。这就保证了一个潜在的违反者必须一个接一个地得到每个问题的答案,这将使社会工程变得更加困难。
如果一个问题的答案被遗忘,则重置:删除链中被遗忘的部分,并允许用户“增长”一个新的部分而不是它。当然,我们首先要问的是用户是否真的想通过电子邮件来做到这一点。
在被破坏的答案情况下重置:整个链被删除,并且允许用户创建一个新的链。再次,电子邮件确认。
(这个想法依赖于电子邮件,可能是个问题)
它会比标准密码好吗?
发布于 2017-10-11 20:13:14
任何这样的方案的问题在于,一般人在选择好的问题上都是垃圾,更不用说记住答案了。
理论上,有一个巨大的熵,因为有多个实例的本质上是无限的问题和可能的答案。
在实践中,许多人仍然会选择共同的问题和答案。第一宠物、汽车、街道、出生地等
然后,这些答案就容易受到字典攻击和社会工程以及/或开源研究的影响。
发布于 2017-10-11 20:20:31
在这个行业中,使用“安全问题”作为“我忘了密码”的后盾当然是有先例的。
这个问题基本上归结为“一个强密码与多个弱密码”。
一些想法:
直接回答你的问题:
答案被存储散列(当然带有盐)(附加加密有用吗?)
不,这些本质上是密码,所以把它们当作密码来对待,并使用最佳实践的salt&hash密码散列。
第一个问题的答案是解密下一个问题的密钥,依此类推。这就保证了一个潜在的违反者必须一个接一个地得到每个问题的答案,这将使社会工程变得更加困难。
是的,但它打开了一个更大的安全漏洞:记录和重播攻击。您的身份验证协议依赖于HTTPS来减少重播攻击。这很好,除非攻击者破坏了HTTPS;他们在受害者的机器上有一个密钥记录器,他们已经破解(或窃取)服务器的私钥,他们已经在受害者的操作系统中安装了一个MitM根证书,等等。现在攻击者可以看到正在发送的密码/答案。
这是传统密码的主要缺点。旨在改进密码的Auth计划确实应该修复这个问题,否则它根本就不是一个改进。
如果您声称auth方法优于密码,那么它应该与代码生成OTP应用程序、SMS代码或其他挑战响应方法等2FA方法相同;所有这些方法都具有代码一次性使用的属性,因此即使攻击者能够记录其中一个,服务器也不会接受它的重放。
随机化问题的提出,或顺序,至少提供一些最小的重播保护。例如,它有助于跨站点请求伪造,在这种情况下,攻击者盲目地发送请求,而不能看到登录页面以确定询问的顺序是哪一个问题。
发布于 2017-10-11 20:21:03
我只会重述一遍,以确保我能正确理解。您建议向用户询问多个问题/答案对,然后在数据库中使用上一个问题中隐藏的下一个问题的信息进行散列。
老实说,我喜欢,这是非常秘密的服务-ish和所有的东西,但它似乎归结为基本上要求用户几个密码,然后要求他们输入这些密码顺序。这听起来很残忍,但我想两个密码比一个更安全。
为了改进这一点,您可以在每次成功登录时随机设置顺序,以便下一次必须以不同的顺序提供答案。
https://security.stackexchange.com/questions/171096
复制相似问题