图像文件作为密码替代

信息安全 密码 用户界面
2021-08-19 21:58:49

我寻求有关有趣问题的指导。最近我一直在寻找密码替代方案,不是因为安全性,而是为了更加用户友好

在我的一个项目中,用户收到 128 位base64编码的盐作为安全令牌,可以通过社交网络、信使、短信等安全地传输。当用户决定执行某些操作时,他会输入这个公共盐和秘密密码。现在,这 22 个随机字符的盐对于最终用户来说看起来很不愉快和原始,很难区分一个安全令牌和另一个安全令牌(用户可以有很多),但很容易发送,因为它只是一个字符串。

我的总体想法是:

  1. 使用 128x128 图像,该图像的每个像素以某种方式与对应的值绑定,base64参考序列的下一个像素(细节目前不相关),以产生看起来像盐的 QR 码的东西;
  2. 例如,添加 gravatar 作为其顶部的第二层,以使其在视觉上可识别。

我的问题:

  1. 从可用性的角度来看,这种方法是否合理?我想,发送图像比发送字符串更难。
  2. 有没有其他方法可以让 salt 看起来更人性化?

四处寻找答案。非常感谢任何帮助。

更新#1

我在Defuse Security上找到了一个示例,它通常反映了我的项目中实施的方案:

加密过程

作为加密过程的结果,最终用户获得了链接,路径实际上代表 salt - OwkXSVW8R5NTv3jGyAvnjy这是我想要转换成图像的丑陋的东西,所以它是安全的,但对用户来说仍然很容易区分,所以我的问题仍然相关。

希望这将有助于找出方法。

更新#2

我认为这个问题被误解了。

在我的项目中,用户有常用密码一些盐,保留在数据库中,但该盐仅用作标识符。所以,盐不是应该保密的东西,一般来说,盐不是秘密。安德鲁霍夫曼的回答中,除非你有过目不忘的记忆,否则盐是他所拥有的,而密码是他所知道的。

但问题是,salt 不太人性化,看起来很重,一眼看去很难分辨出多个这样的salt。有了这个,我认为可以将盐转化成的盐看起来和感觉都很好。例如,像版本1和版本2 的Google ReCaptcha - 它完成相同的任务,但简单的点击比从图片中输入一些符号更用户友好。

我不想对这个问题感到恼火,但请接受这样一个事实,即我没有发明自己的盐衍生机制或安全系统。

4个回答

我相信您混淆了盐的用途。您可以通过无数种方式获得盐,但这不会改变盐的用途。就盐的目的而言,它不必保密。

因此,在查看对您的盐派生的批评时,只需了解您收到的反馈是基于盐的用途。

除此之外,用户身份验证可以通过您知道东西您拥有的东西来非常广泛地概括图像属于您所拥有东西的类别

牢记这一点,使用自定义身份验证方案进行试验和创新是很有趣的,但这些方案尚未经过强化或分析弱点,因此,它们不应在生产应用程序中使用。

安全行业有点像 FDA。不是你不能做出新的、有效的、安全的药物,只是你的没有通过检验。检查是昂贵的,如果问题已经解决了,我们就不能检查你的问题。

这就是为什么我们通常会以一种傲慢的方式做出回应,即不要推出自己的安全性这是一个已解决的问题。

使用文件而不是密码的主要问题是它改变了整个事情的理念。

文件是您拥有的东西,而密码是您知道的东西这些不是一回事。因此,如果不对您的整个安全方案进行严格评估,就无法将其中一个替换为另一个。

如果您的身份验证是基于非机密用户名(或电子邮件),则帐户安全现在完全取决于可以复制、被盗或丢失的文件。并不是说密码不能被窥探、键盘记录或忘记——但这些又不是一回事。一个重要的区别是,即使你对我的笔记本或手机进行加固,我的密码也不存在但是您的安全令牌文件将是。

如果您有兴趣查看与您建议的类似的已建立方法:Dell Secure Works 已经使用 QR 码对新用户进行首次身份验证。在他们的网站上注册并下载证书后,他们会创建一个二维码,与 Duo Mobile 协作,要求您使用智能手机读取二维码,然后 Duo Mobile 根据该二维码生成一个二维码,供您使用进入。

盐本身用作密码的附录,因此密码的密文可以抵抗使用众所周知的单词和短语来降低密钥大小的通常破解尝试,这就是为什么盐是某种随机字符串的原因。在任何情况下,这意味着,您可以将盐基于任何东西、图像、b64 编码的编码字文件,但这里需要注意的是,使用可识别的图像作为盐可能会使用户混淆图像是某种有效性/印章,除了它应该是完全随机的这一事实。