如何保护随机数种子?

时间:2016-07-06 19:33:15

标签: random passwords

我正在编写一个应用程序来保护密钥嗅探器和屏幕检索器的密码。我有一个易于记住的关键字或短语的用户类型(即"密码123"," amazon.com"," gmail")我使用该字符串用于创建加载到剪贴板中的更长更强的密码。我希望应用程序完全匿名,因此我不保存任何信息。为了生成密码,我使用随机数生成器。我需要一种方法让用户携带他们的种子,这些种子不容易受到关键嗅探器或屏幕检索器的攻击。我正在考虑像YubiKey这样的硬件令牌,但我想要更简单,更主流的东西。我尝试过使用行为生物识别技术,但我设法用一个程序来复制它们太容易了。有更好的想法吗?

1 个答案:

答案 0 :(得分:0)

你所建议的是一种非常脆弱的方法。

首先,针对您要定位的问题,有开源和经过验证的算法和应用程序。在安全问题中,为自己开发关键操作(以及处理密码始终是一项关键操作)的应用程序永远不是一个好主意,尤其是重新发明轮子几乎在任何情况下都注定要失败。

您的方法在以下几点存在问题:

  • 要匿名,应用需要复制/粘贴或就地生成某些操作所需的密码。如果你在操作系统级别没有做一些魔术,你将很难避免屏幕检索器捕获。

  • 使用一个(!)随机种子保护多个密码会使每个密码都比之前更弱。

  • 在usb密钥上随机携带这个随机种子并将其自由地插入到你无法控制的各种计算机中是一个问题,因为它们中的每一个都可能是恶意的。可以静默检索,更改或删除随机种子。

为了给你一些偏执的东西,google例如蓝色药丸,你会看到真正的问题存在于另一个机器层而不是你正在谈论的应用程序。

而是看看以下方法:

  • 2因素身份验证(2FA),防止恶意软件和硬件在输入时窃取您的密码。参见例如Google身份验证器。

  • 安全操作系统,防止此类软件进入您的系统并检索您的密码。参见例如QubesOS

  • 具有安全/匿名操作系统的只读驱动器,可用于外部和潜在危险的计算机,即使是非常关键的任务,如银行业务。参见例如在DVD上尾部操作系统(不是USB密钥!)

  • 虚拟机可以捕获潜在的恶意任务。参见例如VirtualBox的

  • 可信密码保险柜,如KeyPassX

简而言之:您可以编写这样的应用程序,但它很可能既不实用也不安全,也不可用。对不起。