2016-07-06 49 views
-1

我正在编写一个应用程序来保护关键嗅探器和屏幕检索器的密码。我有一个易于记忆的关键字或短语(即“password123”,“amazon.com”,“gmail”)的用户类型,我使用该字符串创建一个更长和更强的密码,并将其加载到剪贴板。我希望应用程序完全匿名,所以我不保存任何信息。为了生成密码,我使用了一个随机数生成器。我需要一种方式让用户携带不受关键嗅探器或屏幕提取器影响的种子。我正在考虑像YubiKey这样的硬件令牌,但我希望更容易和更主流的东西。我尝试使用行为生物识别技术,但我设法很容易地用程序复制它们。任何更好的想法?如何保护随机数种子?

回答

0

你所暗示的是一种比较容易受到攻击的方法。

首先,针对您所针对的问题有开源且经过验证的正确算法和应用程序。在安全性问题中,自行开发和开发关键操作应用程序(并且处理密码始终是关键操作)绝不是一个好主意,尤其是重新发明轮子几乎在任何情况下都是一个注定要失败的尝试。

你的做法是有问题的几点:

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

  • 使用一个(!)随机种子来保护几个密码使得它们每个都比以前更弱。

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

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

而是看看以下方法:

  • 2因素认证(2FA)免受恶意软件和硬件抢在类型在您的密码。见例如Google身份验证器。

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

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

  • 虚拟机来包装潜在的恶意任务。见例如VirtualBox的

  • 信得过密码保险箱像KeyPassX

简而言之:你可以写这样的应用程序,但它很可能是不实际的,也不安全,也没有这么使用。对于那个很抱歉。

+0

感谢您的详细回复。我目前使用PasswordSafe与OATH/HMAC结合使用。我试图想出一种方法来保护我的主密码不受关键嗅探器的影响,因为HMAC只在密码末尾添加六个数字。包含在PasswordSafe中的虚拟键盘容易受到屏幕检索器的影响。在我的应用程序中,密码永远不会被打印在屏幕上,它只是被加载到剪贴板中以被粘贴到密码字段中。 USB密钥的脆弱性是我考虑YubiKey和类似硬件令牌的原因。 – silvertiger

+0

屏幕取回器绝对是一件值得担忧的事情。但是如果一个人足够聪明,甚至只是使用其中的一个,他们也会准备简单地读出剪贴板。无论如何,这通常在这类软件中经常进行。对此的“官方”解决方案将是2FA或ROM。 – harmonica141

+0

有什么办法保护剪贴板? – silvertiger