经过两天的努力,基本实现了密码管理的科学化。

我的密码不至于简单,也不至于到处用同一个密码,但也不算过硬。一直以来,稍具重要性的密码我都采取某种构造方式使其既好记又复杂,也尽量不同,然后保存到一个加密文档,跨设备获取则是手动上传云端,下载后再解密。这么做有两个缺点仍然明显:一是不够安全,xls 格式文档的密码很容易破解,微软家的 Office 软件漏洞多恶意软件也多,手机通过云端下载至本地后再用 WPS 之类打开,会发生什么很难说;二是不够方便,手动上传云端自不必说,打开 Excel 后搜索的操作也很心累,每次换密码后面对散落各设备和云端的记录也很头疼,另外面对像 Office 365 这样强制定期更改高强度密码还不准雷同的,虽然用的少也足够让我想密码想到崩溃。

No longer。

使用可靠的密码库软件成为必然。比较主流同类工具后,我选择了开源的 KeePass。它的软件本体只有一个核心功能,即在桌面端可靠地存储和加密密码库,并有密码生成、历史记录等工具。好在开源社区提供了丰富的插件,我在这几百个里面找出了体验良好的云同步和备份工具 KeyAnywhere,支持 Dropbox、Google Drive、OneDrive 等云盘无缝接入。KeePass 的安卓端由开源社区提供,我选用了 KeePass2Android,尽管它的名字和界面都很一般,但与各种云端连接便捷双向同步逻辑良好以及使用虚拟键盘调用密码库的功能都让人舒心。在与浏览器的整合上,使用较广的方案是将 KeePassHTTP 作为基础,加上 ChromeIPass 一类的浏览器扩展。但我看到 KeeWeb 作者提及很多人对 KeePassHTTP 安全性的顾虑,于是放弃,后发现官方列表中的浏览器插件 KeePass Tusk 相当好,UI 不差,具备 KeePass 的核心功能,能与主流云服务整合。与浏览器的整合不是必要的,但也非常有用,故列在此。另 KeeWeb 是 KeePass 界面更现代化的外壳,也还不错。

事实上整个过程的核心在于云端。将数据库文件存到云端,在任何位置获取,然后让任何设备上的更改都能同步回云端。这里我选用了 Dropbox。

前面说与浏览器的整合并不必要的一个原因是浏览器本身有密码存储功能,如 Chrome 上的 Google Smart Lock 不仅可以本地存储,甚至可以使用凭据通过 passwords.google.com 获取,所以使用一个极度复杂的密码后让浏览器自己去记就好了。但浏览器本地存储的密码其实近乎裸奔,比如很久以前我就发现一个名为 WebBrowserPassView 的软件能轻松获取本地已经加密的密码,它所显示的密码表赫然便是我的实际密码。不过这一黑客工具的作者提到使用 master password 加密的浏览器密码暂未能解密,因此我推荐使用 Google Smart Lock 时应该使用额外的密码加密而不是只用 Google 账户的密码。

现在很多网站对抗暴力破解和恶意嗅探的能力都提高了,一个略微复杂的密码也许都可以防止账户窃取。但这并不意味着用户什么都不需要做。很多时候密码泄露都是因为用户的疏忽大意,比如借用、将密码放在明显位置、不安全保存和在恶意网站上输入密码等,这是安全意识的欠缺,技术上就无能为力了。

大家都知道密码要复杂,问题是如何方便,以及如何安全地方便。两天的折腾至少使我的所有重要账户的密码得以达到 16 位以上、极端复杂、无意义而且各不相同,同时在调用和随时更改时不至于造成困扰。而我需要做的是记住一个主密码,以及保存一份解密的必要不充分密钥文件,了却一桩事情。

从价值上讲,我不是一个好的潜在破坏者的目标,比较重要的内容我从不只在一个位置保存,我也并不完全相信任何一家企业,即使一些密码泄露也不至于给我造成致命困扰,但以工具武装自己是利多于弊的。

这里有两件美好的事情:开源,折腾。它们都能给你想要的东西。