关于个人网络帐号安全的解决方案

· Tech

10 月 19 日下午,据漏洞报告平台乌云网披露,「某邮箱过亿数据泄漏」。与此同时,各个论坛中均有使用网易邮箱的用户表示 Apple ID 被冻结,引发很多人修改淘宝、支付宝等网站绑定的网易邮箱。各种消息都指向这是来自网易的一起拖库事件。所谓拖库,是指获取网站中用于存放用户名、密码、安全问题等帐号信息的数据库。拖库无法从根本上避免,因为你无法保证注册的每个网站都有足够的安全保护。在这里想讨论的就是如何应付拖库,以及由此出发的、一套相对安全的个人网络帐号解决方案。

定期更换密码

只要是稍微正规些的网站,都会对数据库中的用户名和密码进行加密存储,即使黑客获得数据库,也得花好一阵子才可能破解。这就是要定期更换密码的原因。如果在数据库破解之前就更改了密码,破解出的内容自然也就没有价值。这实际上是通过缩短密文的有效生命周期来达到计算安全。

密码管理

总有那么一些不正规的网站(比如各种小论坛),因为某些原因采用了不安全的存储方式(最直接的就是明文存储),让黑客得到了你得密码。但这些小网站往往也没有什么重要信息,为什么会造成损失呢?其关键在于,很多用户在多个网站上使用同一套用户名密码。黑客通过撞库,便能登录该用户在同一密码体系下的全部站点。为了避免这种损失,我们可以根据自身的条件和需求,采用以下几个级别的安全措施,安全程度递增。它们的共同特点是,在重要的网站上都采用了各不相同的密码。一般情况下,做到第一点已经能保证自己不会因为密码问题而发生巨大并不可挽回的损失。

1. 多级别密码

考虑到人脑的记忆和有限,很难要求一个人把各种乱七八糟的网站密码记得一清二楚。于是我们退而求其次,将一些重要的密码分开,而对小网站则可以放松要求,使用统一、常年不变的弱密码。这方面的心得可以参考吴涛在知乎的回答

如果 A 和 B 网站的密码不同,黑客拿到用户在 A 网站的用户名和密码,尝试去撞 B 网站。尽管用户名已经在库中,但由于密码不同,撞库不会成功,最多会因为失败尝试过多而导致冻结。

2. 各不相同的密码

这一步开始,建议大家使用密码管理器,这是一种协助生成、管理密码的工具,能够方便地使用生成的强密码自动登录各个网站,并减小记忆成本。缺点则是一旦被攻破,所有的密码都被暴露了。Chrome 和苹果都有自带的管理工具,也可以使用常见的第三方产品,比如 LastPass、1Password、Keepass。具体请自行搜索。有了密码管理器,即使小网站拖库也不会波及其他小网站了。

3. 前缀 + 网站识别符

Gmail 邮箱有一个很棒的特点,可以在用户名后添加「+」+ 任意字符串,系统会自动过滤加号以后的内容,从而把邮件发到原邮箱中。比如一个 user@gmail.com 的邮箱,在 foo 网站使用了 user+foo@gmail.com 作为注册邮箱,则相关的邮件仍会发到 user@gmail.com 中。同理,在 bar 网站,可用 user+bar@gmail.com 作为注册邮箱。如果 foo 网站发生拖库,黑客使用电脑自动撞库,会因为 bar 网站不存在 user+foo@gmail.com 这个帐号而失败。但是倘若黑客有意对该用户进行攻击,则可以通过 foo 网站的特征,猜出其在 bar 网站的帐号为 user+bar@gmail.com。

这种方法同样适用于注册各种小号、苹果的多国帐号等。

4. 前缀 + 乱码

如何不让猜出 bar 网站的用户名呢?只要给各个网站随机分配后缀就可以了。让 foo 网站的邮箱为 user+wjv2@gmail.com ,bar 网站的邮箱为 user+9m2q@gmail.com,便极大程度上杜绝了猜出用户名的可能性。

5. 完全乱码*

sdi234mv@gmail.com 和 jn02mb@gmail.com,显然不存在任何联系,耶!但是这意味着要为每个帐号单独注册邮箱!你可以把它们都转发到你的主邮箱,但总体而言这种做法仍是牺牲了极大的便利性,换取一点几乎用不上的安全性提升。当然也可以通过设置个人域名邮箱来简化操作,但不是每个人都有自己的域名,而且独特的域名已经在昭示这些帐号拥有共同的主人。因此,我为这个方法加上了星号。它一点都不实用。

然而很可惜,这些方法实际上很少能派上用场。有很多网站支持用户名(一个独一无二的字符串)登录,而且该字符串会被网站的其他用户看到(比如 Twitter 、 V2EX)。这样一来,以上 3、4 点都将无意义(你总不希望为了防止撞库,而在各个网站被人看到不同的名字吧?)。如果你想把淘宝的用户名改成一个乱码防止被撞,值得表扬,但淘宝支持手机号登录。别灰心,实际上第一点已经能够阻止绝大部分的拖库了。况且我们还有其他的措施。

两步验证

不夸张地说,两步验证(two-factor authentication)已经成为一个合格重要网站的标配。用户在使用密码登录的同时,还需要输入手边的密码生成器中的随机验证码,从而防止因密码被盗而被别人异地登录。除非获知验证码的随机种子,否则难以破解。尽管增加了一道步骤,但很多网站的两步验证机制都支持在常用设备上免验证登录,大大简化了登录过程。建议在所有重要且支持两步验证的网站上开启。

常见的两步验证包括手机短信、手机验证器、密码器(网银常用)等。其中采用最多、也最简便的方法是手机验证器,通过扫描网站二维码添加验证。这些在开启两步验证时会有介绍,不再赘述。

开启后也并非万无一失,毕竟手机有丢失的风险,即使远程锁定,也会因为无法获取验证码,影响自己登录。对此,网站一般也提供了多种应急机制,比如备用手机号和恢复码。备用手机号很容易理解。恢复码是一系列用于代替两步验证的密码,网站通常会建议用户将其打印下来,保存在钱包或其他安全地点。个人建议保存多份,分别放在家中、工作单位、随身携带。如果不提供恢复码,也可以将开启两步验证时扫描的二维码打印。如果不方便打印,可以保存为图片,并加密压缩,存储在多个安全地点,比如 Dropbox、移动硬盘中。

总而言之,两步验证是密码失窃后最重要最有效的屏障(比密码保护问题靠谱得多),应尽量开启,并且一定要做好手机丢失的应急预案

安全性分析

下图展示了一位使用密码管理器的用户的安全分析。

安全性分析图

在开启了两步验证、以及各个网站使用不同密码后,我们的威胁主要来自三个方面:

1. 密码管理器拖库

意味着所有密码都暴露了。但实际上一家做密码管理器的公司都有这种觉悟,它们或是有特别的加密技巧,或是干脆把数据库放到用户本地。然而话说回来,永远不要把希望寄托在他们身上,我们还是得做最坏的打算。首先尽快修改密码管理器的主密码,并按重要性排序,依次修改其他密码。如果数据库存在用户本地,请将他们放在安全的地方,比如多个移动硬盘,以及 Dropbox、Google Drive,并进行加密处理。

2. 电脑丢失

首先请保证离开电脑随时锁屏。这样即使你去上厕所,别人也无法趁机获取信息。假设电脑被盗,尽快远程抹除。如果没有开启抹除,请登录密码管理器和其他重要网站,将丢失设备的远程下线。如果真的在此之前锁屏密码就被破解(只要密码不太弱,可能性就很低),那入侵者就可能获取你的密码管理器内容。不放心的话,每次使用密码管理器时都手输主密码吧。同理,Dropbox 中的内容也可以直接从解开锁屏的手机访问,所以不应该在其中存放未经加密的敏感信息。

3. 手机丢失

和电脑类似,同样请做好备份(最好是同步),尤其是通讯录和照片。锁屏也是必须的,如果有指纹识别,请使用指纹配合强密码,否则可选用不易被猜出的 PIN 或锁屏图案。同样,丢失后应尽快远程抹除或下线。如果已被入侵,由于手机是两步验证工具,所以比电脑失窃更加危险,一定要确保在每次使用密码管理器前都要求输入密码,或者指纹解锁。如果没有指纹,同样选可用 PIN 或锁屏图案。

总结

信息安全没有最好,只有更好。McAfee 说自己几乎不用只能手机,如果迫不得已,也会两周换一部。这对一般人并不现实,但或许我可以冒着政治不正确的风险说,一般人的信息安全也并没有那么重要。能够做到以上这些,起码能够在可接受的操作复杂度内,降低财产、社交、数据的损失。至于日常的通话是否被监听,毫无疑问是杞人忧天了。