密码的安全很重要,而且需要密码的地方那么多,还是要用一些策略和软件来管理,不然要不就记不住,要不就太不安全。纪录一下我自己的密码分类。
密码,或者说需要密码的资料可以分成三类。按重要程度由高到低来说
1. 高保密级别且数据在线
输入频率低
这是最常见的一种类型的密码。微博就属于这种。信息重要而且在线,任何人任何时间都可以访问,密码是最后一道防线,但在已授权的设备上可以自动登录。
这种密码就必须复杂再复杂,特殊再特殊。要让人试不出猜不出,即使一个网站密码被人知道了,也不能影响其他密码。
最简单的做法就是随机。可以用密码管理软件比如1password来生成和纪录密码。人工记忆密码会限制密码的复杂程度,为了记忆,必须有一定规律,有规律就有被猜出的可能。所以还是找一个靠谱的密码管理软件安全。
如果可能的话也尽量开启两步验证登录。不过两步验证的私钥和密码最好不要使用同一个密码管理软件保存,否则一旦别人拿到密码管理软件的访问权,就能同时拿到两步验证的验证码了。最好的做法是只在一台设备,比如手机上,使用一个单独的两步验证软件。
输入频率高
这类密码常见的比如说ssh的普通用户的密码。数据重要而且在线,但是经常sudo要输入,随机密码太过麻烦。所以可以用一些容易记忆,比如自己很熟悉但是别人猜不到的数字,再加上一些可以记住的特殊字符。
这种密码因为不是随机的,复杂程度只能自己掌握,在不会忘记的前提下可以尽可能复杂,而且每个密码要足够特殊,确保无法通过其他密码猜出。
这些密码可以通过其他保密措施加强安全,比如两步验证,或者ssh禁止使用密码登录。后者使得密码的使用是在「离线」环境,就是说已经「进入」到设备后使用,而不能从外部通过这个密码获得数据的访问权,这样,就变成了第二类密码。
2. 高保密级别且数据离线
这类密码其实也很常见,比如手机或者电脑的解锁密码。这些设备在登录的这一端可以认为是「离线」的,因为没有人可以随时随地远程物理解锁,在这个意义上来说,设备是离线的。当然,前提是这些设备的在线的一端有足够好的保护,木桶装水的量是由最短的那根木板决定的。
这些设备离线,理论上来说其他人物理接触的机会不大,而且因为输入频率高,也需要一个容易记忆的密码。类似第一类密码中输入频率高的那些,找一个自己熟悉别人又猜不到的数字,再加上一些自己能记忆的特殊字符就好了。
还有一些不常见的密码也属于这类,比如GPG私钥的密码。因为私钥可以离线保存在一个U盘里,密码就不需要太过复杂。
当然,因为数据的高保密级别,最好还是有其他的保密措施,比如iphone解锁失败自动清空数据。
而且这些数据一定要保管妥善,一旦遗失,就由离线变成了在线,那么密码的级别就配不上数据的保密级别了。所以密码还是要在不会忘记的前提下尽可能复杂而且足够特殊。
3. 较低保密级别
这种密码适用于那些即使被盗了,也不会对生活产生任何影响的。比如说注册一个论坛,但是只是为了看某一个帖子,论坛上没有保存自己的资料,没有发帖,以后也很可能不会再登录。这种就可以用好记的密码。
但是好记不等于"123456",毕竟再好记也应该是个「密」码。可以像第一类密码中输入频率高的那些一样,只是长度可以适当缩短,特殊性也可以要求不用太高。
这样密码够复杂,又容易记忆。而且一个网站的密码泄露不一定会影响到全部网站。虽然通过社会工程很容易猜到其他密码,可是这种信息本来保密级别就比较低,如果真有人花这么大代价来猜密码,恭喜他。
EOF
一些题外话,之前我还是很抵触密码管理软件的,觉得都不方便,尤其是跨平台都做的不是很好,在一些公共设备上使用更不方便,直到有一天我意识到如果某天百度密码泄露,就有人可以从我的百度密码猜到我的paypal的密码,而paypal是没有两步验证的,于是我开始研究用密码管理软件。
最终我选择了1password。过程中也对1password的同步功能的安全性有些疑惑,但最后发觉,1password的secret key其实就是个长随机密码,只有在这个密码验证之后,我的master password才能验证,就类似了ssh证书登录后才能用相对简单的密码sudo。
毕竟没有绝对的安全,比起人工记忆密码,使用1password已经很大的提高了安全性。再加上一些重要账号都已经支持了两部验证,而两步验证的验证码并不存在1password中,就更加安全了。