个人密码的变迁
不记得是 08 还是 09 年那会,有网站被脱裤,数百万简单的用户密码被逆向出来。当时我还在 Juniper,公司 IT 发了篇文章建议创建并使用安全的密码。其中一个建议是:用一个句子 + 某些规则来生成密码。
这是个很好的方法,我照做了,然后就养成了习惯,一直到现在。
我来解释一下这种方法。首先你得挑一些你能记住的句子,比如说:
- life is about making an impact, not making an income.
- whatever the mind of man can conceive and believe, it can achieve.
- you miss one hundred percent of the shots you don’t take.
- 芳树无人花自落,春山一路鸟空啼(fang shu wu ren hua zi luo, chun shan yi lu niao kong ti).
- 暗淡了刀光剑影,远去了鼓角铮鸣(an dan le dao guang jian yin, yuan qu le gu jiao zheng ming).
这些作为密码主体的句子可以公开,比如说放在密码提示中,不过,能不放就不放。
然后选择一个只有你自己知道的规则:它不能存在于纸张,evernote,google spreadsheet,dropbox 等任何物理空间或者赛博空间(cyberspace,现在人们很少用这个词了)中。规则是什么,你说了算,不过要尽量简单,因为每次输入密码,你都要把上面的句子过一遍规则,生成你真正的密码。
最简单的规则可以是:把每个单词的首字母拼起来,全部小写。不过这规则太简单,太不安全。
稍微复杂一些:把每个单词的首字母拼起来,每三个字母一个大写。这规则足够安全,但可能还是过不了大部分密码检查(要求字母数字混用)。
最理想:密码的首字符是一个固定的数字,比如7,然后把每隔单词首字母拼起来,每三个字母一个大写,最后以一个固定的后缀结束,比如 2#33(2333)。
按照最后一个规则,上述的句子可以变化成:
- 7liAmaInmAi2#33
- 7wtMomCcaBicA2#33
- 7ymOhpOtsYdt2#33
- 7fsWrhZlcSylNkt2#33
- 7adLdgJyyQlgJzm2#33
这种方法很安全,但有些麻烦,在手机上输入就更是费劲。因而,它只适合于一些对密码要求高的场景。其他场景,可以使用 lastpass 这样的工具来生成和自动填充。目前,我主要在开机密码和一些重要的网站的密码中使用。
好了,方法的介绍就到这里。我讲讲这样的密码有什么意义。
我用的第一个开机密码来源于这个句子:whatever the mind of man can conceive and believe, it can achieve. 当然,我的规则和上述的规则都不一样,它不可描述 :)
由于 Juniper IT 的恼人设置,密码只能是某些位数,所以在我公司的电脑上,这个密码只得截断。不过,我每天要输上很多遍这个密码,因此,这个句子一而再再而三地在我嘴边重复。
后来我觉得这样每天强迫自己的大脑多次追忆(recall)和运算(compute)相同的东西的机会就这么背诵一些已经熟记的句子实在可惜,何不将其用在更有意义的事情上呢?
我开始用一些句子来描述我的目标。
I want to be a distinguished engineer.
这个似乎是我使用的第一个非名人名言或者诗词歌赋的密码句子。我虽然远未达到这个目标,但上个厕所回来都要强化一下这个目标,还是对我形成了不少的潜移默化。
大概一年之后,这个密码被我改成了:
I want to start my own business.
然后我真的尝试着创了业。创业期间,由于我可能时不时把自己的电脑共享给其他人用,而且我也不需要额外的方式提醒我目标是啥,所以这套方案沉寂了一阵。
创业失败,又回到 Juniper 后,我设置的密码是:
I want to relocate to US.
一年后,只差最后一步,我这么对自己说:
I want my L1b visa.
几个月后我到了美国,开始了新的生活:
I want to catch up with silicon valley.
那段时间我如饥似渴地学习一切新的东西,每周至少参加一次 meetup。
随后,我换到了 Juniper SF 的一个做 web security 的小 team,开始了新的旅程。很快,新鲜感褪去,尤其我老板换成了一个不太懂技术的烙印后,我写到:
I like what I do but I’d find a team I love to work with.
那时,我本想换去 Juniper 内部另外一个做 cloud infrastructure 的 team,没想两个月后,我收到 adRise/Tubi TV 的召唤,他们愿意帮助我申请 O1 来改变工作身份。于是我的密码变成了:
I want my O1a visa.
之后如愿换了工作签证,密码也随之改变:I will make adRise to be proud of its engineering。
还有些肉麻的变种,就不放出来了。
有那么阵子,我上下班坐的火车 caltrain 三天两头出故障。日复一日的辛劳加上各种意外的事故,那两周我变得十分彷徨,顺手把密码改成:I don’t know how long I can survive from caltrain.
当然,有时目标达成,会小小地自豪一下:I got my green card。自豪之后免不了还有疑问:I got my green card. what’s next?
这是一个艰难的问题。
后来,老婆抱怨我花在小宝身上的时间太少了,我就把密码改成:I want to be a good father。
直到今天。
(本文写于半年前。。。一直未发,在我今天写一篇有关安全的文章是偶然发现,想想还是发了。。。)
现在我还在有些地方保留这个句子构成的密码,但大部分的密码换成了用这个脚本生成的东西:
#!/usr/bin/env bash
pwgen -n1vsy 16