如果我有一个用户6位PIN (或n字符字符串),并且希望验证从PIN (或x字符)中随机选择的3位数字,作为“登录”过程的一部分,我将如何将PIN存储在数据库或某个加密/散列版本的PIN中,以便能够验证用户身份?
思想:
6
问题:
'high-volume'.
还有其他选择、问题或改进吗?
是的:我知道以可逆的方式存储密码/PIN是“有争议的”,理想情况下不应该这么做。
更新
请澄清: 1.随机数字是我正在考虑的一个方案,以避免密钥记录器。2.不可能尝试超过有限数目的重审。3.其他要素有助于确保访问的安全和认证。
发布于 2010-08-05 03:17:32
关键是'protected'
你似乎在争论要把密码储存在透明的地方。我说去吧。您基本上是在描述一种挑战响应身份验证方法,而服务器端的明文存储对于该用例来说是常见的。
与此类似的是一个一次性键盘,或一个秘密密钥矩阵。不同之处在于,用户必须保留/带便携垫才能访问。好处是,只要您获得足够安全的密钥分发,您就可以非常安全地不受键盘记录器的影响。
如果你想这样做,这样暴露的矩阵/垫不会单独造成妥协,让用户使用一个简短(3-4个数字)的PIN与垫,并保持您的敏感锁定机制。
矩阵的例子:
1 2 3 4 5 6 7 8
A ; k j l k a s g
B f q 3 n 0 8 u 0
C 1 2 8 e g u 8 -一个挑战可能是:“输入您的PIN,然后从矩阵中输入来自正方形B3的字符。”
答案可能是: 98763
发布于 2010-08-05 03:35:55
由于用于存储密码/密码短语的任何加密方案都会非常昂贵,或者容易破解,所以我只是简单地将其存储在纯文本中,并确保数据库和服务器的安全性达到了标准。
您可以考虑一些轻量级加密方案,以将密码隐藏在数据库的临时浏览器中,但是,您必须承认,任何方案都有两个基本的漏洞。一个--你的程序需要一个密码或密钥,这个密码或密钥必须存储在某个地方,并且几乎和普通文本中的实际密码一样容易被窥探,而第二个--如果你有合理数量的用户,那么访问加密密码的黑客就有很多“线索”来帮助他的暴力攻击,如果你的网站向公众开放,他可以将任何数量的“已知文本”插入到你的数据库中。
发布于 2010-08-02 14:00:50
由于6C3是20,10C3是120,我将得到一个假阳性(被认证)在我的猜测的1/6。
无论您如何存储令牌,此方案仅略好于根本不进行身份验证。
https://stackoverflow.com/questions/3388379
复制相似问题