本文由 ImportNew - 范琦琦 翻译自 frankel。欢迎加入翻译小组。转载请见文末要求。
如何拥有更安全的密码管理器已经困扰了我多年。起初,我唯一的担心是不同电脑之间共享书签和历史记录(那时手机还不在我的使用范围内)。自从我将火狐作为我的浏览器之选后,我决定使用Formarks(现在被称作XMarks并且可用于多种浏览器)。
然而,由于我天性懒惰,很快我的惰性就明显重返,然后我又在云端中同步了自己的密码。在火狐通过Sync推出即装即用的同步功能之后,我继续使用这一功能,纵然我脑海里有个小声音在告诉我这存在严重的安全隐患,我也置之不顾。我的意思是说,Mozila可以确保它想要的存储方式,可我觉得还是不太安全,但是最终还是懒惰占了上风。因为火狐的新同步功能,我不得不改变我同步东西的方式,直到此时我才发现我的决定是多余的:寻找一个更好的方式使我的密码可用于所有设备。
选择一个好的密码的要旨如下:我希望我的密码既容易记住也容易输入,同时它们也不可能被猜到或者被破解,即可用性与安全性。大致总结如下图的连环漫画:
用户的天性是选择很容易猜到的密码,一在线服务供应商(如Google和Dropbox)提供了一个有趣的功能从而打败这一天性,即两步验证法。这意味着你不仅要输入密码,还要提供另一种验证。之前的供应商都使用一些参数生成代码,这些参数是双方共知的(供应商和用户),同样还需要时间,这样猜测密码只可能会用很短的时间(一般为一分钟)。第二个步骤的形式是由银行提供的,当你用信用卡进行一笔网上交易时,他们会将密码发送至你手机,然后你必须在这个网站上输入密码以证明你是此卡持有者。
其他一些供应商甚至委托第三方供应商验证,如Google(它一直扮演此类角色)或者Github。一个众所周知的过程就是OAuth2,OAuth2可以解决许多密码问题如果所有的服务供应商可以提供授权。不幸的是,大多数供应商选择自己验证(以及保持自己的身份,但这并不是今天的话题)。更不幸的是,他们只提供传统的登录或是密码验证挑战。再回到原点……
当然,我可以努力创造出一个难以破解的密码,但是面对这么多的应用,生产出适用于每一个应用的密码已经完全超出了这个问题所涉及的(甚至是完全不可能的)。没有人会建议所有的应用使用相同的密码,当一个黑客发现一个网站上的密码时,他就可以获得所有的密码,但是有些人主张在密码前面或后面加上域名。可惜的是,从另一方面来说,任何简单的自动规则都能很容易地被多种类的自动破解打败,所以,如果你认为自己的帐号安全很重要的话,这种行为是万万不可取的。
答案很简单:为每一个应用创建一个专用的密码,既不容易破解也很难记住,将它存放在安全的地方。这个安全的地方需要确保有一个相对而言容易破解也可能记住的主口令,这就是圣杯的关键。从本质上来说,这就是对密码管理器解决方案的描述,关于这个软件我有几个要求:
- 开源:我更喜欢有一个开源的解决方案,如果可能的话有权限的人就可以(至少在理论上)进行安全审计。封闭源代码的解决方案意味着安全性通过模糊处理,当遇到真正的威胁时就不起任何作用。
- 多设备:对,我就是那种有很多设备的人,我不仅拥有多台计算机(办公的电脑,台式机,笔记本),这些计算机有着不同的操作系统(Windows和OSX),而且有两部手机和一个平板。所以我想要一种可以使这些设备兼容的解决方案。
- 配置身份验证:这个要求是非常重要的,因为它不仅让我选择如何验证进入存储(例如密码或密钥),也增强了解决方案的安全性。
- 最佳实践:最后但并非不重要的,我需要实现安全性最好的实践,例如散列法,salting(对密码进行混淆的方法),一种缓慢的哈希算法,等等。
既然选择好了我的密码管理器,现在到了最难的一部分:我是应该将密码存储在我随身携带的USB上(同时备份在一个安全的位置,只是为了确保安全),还是放在我随身携带的笔记本上或是放在云端呢?这相当于前面一个问题,安全性还是可用性?我已经决定将它存储在云端,由两步验证保护的供应商设施。我也可以保证这个存储在我其他设备上也是可用的,虽然我不知道一条锁链的强度取决于它最脆弱的那一环。以我目前的设置,我不确定我是否完全摆脱3个委托书机构窥探的影响,或者更准确地肯定我不能。不过,我确信我已经增强了网上入侵稳健性的数度级,这应该可以阻止脚本小子对我玩一些肮脏的的把戏。现在,轮到你了……
原文链接: frankel 翻译: ImportNew.com - 范琦琦
译文链接: http://www.importnew.com/12969.html