密码已成为万维网的噩梦
7 月 12 日,主导了计算机史上几次关键研究的 FernandoCorbató 病逝。在计算机历史里, FernandoCorbató 是一位举足轻重的人物,1990 年获得图灵奖。FernandoCorbató 提出了 「分时系统(CTSS)」的概念,发明了最早的计算机安全解决方案——数字密码。2012 年,他还曾告诉 Wired 杂志,「为每个用户设置密码作为锁定似乎是一个非常直接的解决方案。」
作为数字密码的发明人,FernandoCorbató 后期也认为这种密码形式存在着很大的问题。六年前,在接受华尔街日报采访时, 87 岁的 FernandoCorbató 就认为密码已经成为「一种噩梦」。
不幸的是,随着万维网的发展,这已经变成了一场噩梦。我认为没有人能记住所有已发布或设置的密码。这就给人们留下了两个选择。你要么把所有的密码用小本本记下来,要么就是选择某种软件来管理它们,但不管是哪一种都很麻烦。
FernandoCorbató 提出了两种密码管理方案,写在本子上,或者用应用来管理。
「现代密码学之父」惠特菲尔德·迪菲( Whitfield Diffie )如何保存密码呢?答案竟然是:
我经常把密码写下来放在钱包里,但是密码安全保护程度跟丢钱包概率差不多。
安全事件层出不穷
国内安全事件回顾:
- 2017 年 3 月,京东内鬼泄露 50 亿条公民信息。
- 2017 年 4 月,一千万条优酷用户账户信息在暗网出售。
- 2017 年 3 月,58 同城曝重大个人信息泄密:700 元可看所有人简历。
- 2018 年 8 月,5 亿条华住旗下酒店开房数据泄露,37 万元在暗网售卖。
- 2018 年 8 月,今日头条前员工离职后面复活旧账号非法牟利两百万。
此外,2018 年,Facebook 安全事件,5000 万 Facebook 用户的个人信息数据泄露,接近 Facebook 美国活跃用户总数的三分之一。
早在 2015 年,在线密码管理器 LastPass 被黑客攻破,加密的用户数据库在攻击中被盗走,虽然经过调查,LastPass 官方宣称:没有任何证据表明攻击者从用户密码库中窃取了加密数据,也没有获取用户的帐户信息。但也令很多人捏了一把汗。曾经长期使用 LastPass 的我,也就是在这个时候,选择了另外一种方案。
构建个人密码体系的重要性
即使安全事件层出不穷,但人们对密码的敬畏依旧缺失。
每年各大媒体曝光的常用密码,不乏 1234567 、I love you、admin、luck ……之类的等等。我相信,即使是少数派的读者,一样不乏一套密码吃遍天下的人。
一套密码吃遍天固然是简便易记的密码管理方案。但这个方案致命的缺点是,你穷尽心思想出一个于你极其易记、于安全又强度极高的密码,但凡有一处被泄露,整个密码系统即告瓦解。过去这么多年来,「脱裤」事件还少吗?
也有人会认为,构建密码体系那么复杂,我的信息不重要、不值钱,懒得去理。的确,现在我可能不重要、不值钱,难倒我今后就没有变得重要和值钱的机会了吗?
从另一个角度来想,弱密码体系相当于将自己的个人信息安全用细绳悬在悬崖边,被这样的密码体系保护的个人隐私,是没有丝毫安全可言的。夜里忽然想到也许此时就有人正在窥视自己的隐私,背心难倒不会生出一层冷汗吗?
我虽然不重要、不值钱,但我相信我的个人隐私很重要、很值钱,这是每个人都应保有的自尊。对于个人密码管理,决不能自暴自弃。从现在就应该开始,构建一套适合自己的、安全的、可持续性的个人密码体系。
适合、安全、可持续性的个人密码体系
那么,什么样的个人密码体系是适合、安全、可持续性的呢?
在说这个之前,需要了解一个常识。密码的强度,是安全和便捷的博弈。密码强度越高,安全性就越高,便捷度就越低;反之,密码强度越低,安全性就越低,便捷度就越高。
先说适合。什么是适合?适合就是符合个人价值和使用习惯。作为普通人,我们不仅要考虑密码的强度,也同样要考虑密码使用的便捷性。个人用户,选择企业级、军用级的密码体系,虽然足够安全,但是明显不符合生活需要和实际。适合就是两点:
- 密码足够安全
- 密码足够便利
在这两点中,根据个人使用习惯和自我评价,在密码安全和便利的两个维度,选择一个最适合自己的平衡点。
再说安全。什么是安全?就是密码的强壮度。这点在下文会详细解释。
再说可持续性。什么是可持续性?就是这个个人密码体系具备迭代的可能。因为,几乎很少有人的个人价值在原地踏步。个人价值随着年纪的增长、财富的增长、阅历的增长同样在不断增加。当十年后,我们达到比较高的个人价值的时候,这套密码体系,需要能够方便地迭代升级,而不能是必须推翻重来。
我的密码体系黑历史
在讲思路之前,讲讲个人的密码体系迭代黑历史,或许会引起更多读者的共鸣。
最早接触互联网应该是在2000年左右,那时中国互联网刚刚兴起,网吧是当时十分时髦的去处。那时QQ 还叫 OICQ,邮箱还是 Yahoo!。
初入网络,什么都是新鲜的,申请了 OICQ 号码和邮箱,填什么密码呢?脑门一拍,姓名简写加生日,搞定!然后 OICQ 被盗,痛心疾首,小小地升级了一下,姓名简写加特定数字。然后博客兴起,社交使得姓名的曝光变得更多了,又把姓名简写改成了特定字母。
再后来,见闻了许多网络安全事件爆发,突然感觉这样的密码不够安全,于是用了一个十分复杂的密码。结局很容易猜,没过多久,就忘记了……至今那些用了这个密码的帐号,都不知躺在哪儿默默哀怨。
然后,遇到了 LastPass,顾名思义,最后一个密码嘛,只需要一个密码就管理所有密码了。如获至宝!这样很是逍遥了两年。然后媒体曝光说 LastPass 被黑客攻破,同期网易邮箱和 CSDN 大面积账户密码泄露。当时我的内心应该有很多羊驼跑过:我所有的密码都在 LastPass,所有的密保邮箱都是网易邮箱。
虽然这两次安全事件并没有给我带来实际的损失,嗯没错,我就是那个没有价值的人。痛定思痛,开始思考并设计了一套适合自己的个人密码体系。并且找到开源的、数据库在本地的密码管理应用 Keepass 帮助管理越来越多的帐号和密码。一直用到现在。
我的个人密码体系构建思路
我的个人密码体系构建思路中,有一条十分重要的指导原则。密码分级制。根据不同的使用范围,设置不同密级的密码。最高密级、高密级、中密级、一般密级。一般来说,对于个人三级就足够使用了。对于每个密级的关键词,我列了一个表格。
最高密级 | 高密级 | 中密级 | 一般密级 |
---|---|---|---|
不能记录 | 不能雷同 | 强 健 | 便于记忆 |
不能雷同 | 强健 | 便于记忆 | |
强健 | 便于记忆 | ||
便于记忆 |
- 金融密码。银行、支付宝、云闪付、基金、股票等等所有和金钱挂钩的账户。这部分账户密码必须是最高密级。
- 密保邮箱。也必须是最高密级。
- 邮箱密码、网购账户密码、社交账户密码、重要网络账户密码。这部分账户使用高密级。
- 一般网络账户密码、一般社交账户密码。这部分账户使用中密级。
- 临时账户密码、你认为不涉及个人隐私和重要信息的不重要账户。这部分账户使用一般密级。
解释一下密码分级制中的关键词含义。
- 不能记录。不能记录在任何地方,除了脑海。
- 不能雷同。注意,是雷同,不是相同。意思是,密码串中,不能互相有重合的部分。比如 A 密码是 jhabc1234un, B 密码是 vjpo1234nep。
- 强健。足够复杂,足够长度。
- 便于记忆。在保证一定强度的前提下,追求好记。
绝对不要将所有网站设置成同一密码
这是个人密码体系中最基本也是最重要的原则。正如上文所述,即使一个密码多么强壮,只要一处泄露,全盘瓦解。但是,每个网站都用不同的密码,势必加重记忆负担,密码遗忘和密码泄露的后果一样严重。所以,需要思路和技巧。
什么样的密码才是安全的
在说安全的密码之前,有必要说说什么样的密码是不安全的。
- 使用自己的姓名拼音、常用昵称、英文名、生日、手机号码、身份证号码等。这些信息曝光率很高,用这些字段作密码,都不需要暴破,猜解就行了。
- 使用与网站名称相同或仅加上简单数字串。比如少数派网站密码设置为 sspai123。
- 使用高频词。比如:qwert、admin、abcdef、love、luck……
- 使用简单的顺序字母、顺序数字。
- 长度少于 6 位。
安全的密码应该包含但不限于如下几个特征:
- 长度大于 8 位。
- 英文字母大小写、数字和特殊字符的组合。
- 密码串没有明显的规律。
- 之于他人足够复杂、之于自己足够易记。
如何设计一个安全易记的密码
大脑记忆能力是有限的。要满足上面的这些密级要求,账户越来越多的情况下,一定是记不住的。那么,如果引入一个「只有自己知道的密码串设置规则」,就能解决这个问题了。
现在,我们制定这样一条规则 = 基础字符串 + 网站/账户关键字 + 基础数字串。然后根据网站/账户的不同,分别套入这条规则。即可生成一条中密级且足够强健的密码。
比如,少数派网站的账户密码。我先记忆一条基础字符串,假设是 itrovtyirey;记忆一条基础字符串,假设是 314159;少数派网站的关键词假设是 SSPAI。那么经过组合,我就能得到「itrovtyireySSPAI314159」这样一条和其他网站都不相同的密码。
当然,我们还可以附加一条规则:将SSPAI拆分按首尾插入字符串。最后就能得到「SSitrovtyirey314159PAI」。
对于高密级密码,我们则可以在基础字符串上套用一条规则,使得基础字符串也不相同。基础数字串也同理。
相信眼尖的读者已经看出我在基础字符串和基础数字串上套用的规则了。
其实,规则可以有很多。如果稍微学习一点点密码学知识,就能制定出许多只有自己知道的独一无二的规则来。
比如下方几条常见规则。
- 将自己喜欢的电影名、歌名、人名的首字母提取组合。比如少数派提取出SSPAI。
- 将某词语以输入法编码呈现。比如少数派的五笔编码 itrovtyirey。
- 将数字按规则插入字符串。比如123按每两个字符插入 SSPAI,变成 SS1PA2I3。
- 将字母在键盘上规律位移。比如 sspai 向右位移一格变成 dd[so。
- 结合上述各种规则,让密码飞起来吧。
基本上讲到这里,一个个人密码体系就初具规模了。通过规则的套用和叠加,可以轻松实现个人密码体系的迭代和升级。思路给出了,最后建设成怎么样,就靠各位读者发挥想象力了。
如何保存和管理密码
除了最高密级密码不可记录外,其他密级密码我认为是可以记录的。不过,这又引入了一个新的问题。如何安全地保管自己的密码。密码管理应用到这个时候该登场了。
市面上常见且口碑好的密码管理应用有许多。比如:1Password、LastPass、Keepass。
我最早选用的 LastPass,后来放弃改用了 Keepass。关于 LastPass 的使用经验,可以参考少数派这篇文章顶级密码管理工具 LastPass 评测。
利用Keepass保存和管理密码
Keepass相比与LastPass等的优点:
- 开源且免费。
- 数据库存储在本地。这点十分重要。
- 基于开源属性,拥有众多优秀的第三方开源插件支持。
- 借助插件,可以在 Chrome 中实现密码自动填入。
Keepass 可以从这里下载。 Keepass 下载。安装步骤就略过不表。
中文语言包可以从这里下载。 Keepass 中文语言包。
Keepass 虽然需要安装,但和绿色应用无异。可以将其放入 U 盘随身携带。
写了半天,突然想到,这么优秀的应用,应该有很多大神研究。搜索了一番,发现前人的教程更加详细、直观,就不做额外功了。
在此查看详细教程。一劳永逸:KeePass 全网最详使用指南。
我注明几条阅读要点,帮助阅读:
- 数据库加密方式
- 自动双通道混淆输入(防止键盘记录木马偷取密码)
- KeePass 插件篇 - KeePassHttp、chromeIPass(在PC端实现自动密码填入)
- Keepass2Android(安卓)篇