建议使用" light"在公共网页上验证

时间:2015-12-04 21:25:24

标签: security authentication encryption

要求

在公共网页上显示半安全数据(不在身份验证墙后面),但为该数据提供一些安全性。该系统的用户将收到一张邮件中的一张纸,上面有一个5-8位数的支票号码和一个10位数的字母数字验证码。

提案

首先,一份强制性声明,我知道如果没有某种形式的身份验证,数据将永远不会100%安全。

我建议让用户输入3条信息,一个数字5-8位数的支票号码,一个EIN号码,我认为是8-10位数字,然后是验证码,我们建议将其作为10位字母数字。

我们会在页面上放置一个服务器端控件,以防止在XX分钟的时间内从单个IP地址重复提交,或强制使用验证码,我还没有决定。

我有两个问题......

  1. 10位数的字母数字代码是否足够长,我意识到这是一个相对的答案。我正在寻找一个"这对于非常安全的数据是否足够好?"肠道检查。
  2. 有更好的选择吗?我们不能期望PGP密钥或任何类型的东西。系统的所有用户都是邮件中的一张纸。

1 个答案:

答案 0 :(得分:1)

一个10位字母数字代码为您提供52位熵(可能的字符是26个字母+10位,假设是单个情况),假设它是由CSPRNG生成的:

log2(36^10) = 52

作为一个粗略的指南,59 bits would take a determined attacker 457.50 hours(仅过了19天)。但是,使这16个字符,你将有80位NIST推荐强密码(破解109,327。95年)。注意这些时间是最大的,平均值只是除以2。

使用诸如邮件之类的出界机制发送密码是一种很好的安全措施。确保使用单向bcrypt哈希值将密码安全地存储在您的系统上。