如何管理好自己的密码?

二〇一一年十二月二十八日就评论中的呻吟作出更新:

觉得复杂就别用

觉 得 复 杂 就 别 用

觉。得。复。杂。就。别。用。

长度很重要,八位不够。我知道你数学好,会算排列组合有多少,但世界上的彩虹表是在不断增长的。

最简单的脑兼容算法如下:

四个词和一个数字用hyphen连起来,第一个单词全大写

没有第二步了。

例子:

CORRECT-horse-battery-staple-4

I-can-remember-this-I-must-be-god-3

NI-ta-ma-de-cai-che-dan-9

这种办法的安全程度和下文提供的方法并无太多实际差别[a],但是更好记也更易于输入。额外的数字和大写是为了满足某些网站的密码组合要求。

但是碰到限制密码长度的二逼网站你就没辙了,虽然这样的网站其实不注册也罢。

[a] http://security.stackexchange.com/questions/6095/xkcd-936-short-complex-password-or-long-dictionary-passphrase

原文:

提醒各位如果要采取 Rio 的办法,必须有 all or none 的决心。最好只用 Mac,只用固定的几台电脑。对于不能全情投入的非 geek 或不可知论者(读作“非苹果教徒”),我来介绍一种比较人性化的三层密码体系:

核心密码。对我来说这包括邮箱,银行,PayPal,VPS。每个都不一样,共同点是至少十六位,有数字、大小写字母和特殊符号,与自己的任何实际信息都无关,至少半年换一次。建议采取特定的脑兼容算法来生成它,比如我曾经使用的算法是:

取一个八字母的英文单词,比如 insanity

将第一次出现的 S A E I O 替换为 $ 4 3 1 0,比如 insanity 变为 1n$4nity [1]

将最后一个不是数字的英文字母变为大写,比如 1n$4nity 变为 1n$4nitY

将这个英文单词映射为手机按键,比如 insanity 映射为 46726489

将第 4 步得到的数字接在第 3 部后面,最后得到 1n$4nitY46726489

一般密码。对我来说这包括各种 IM 和比较重要的社交站。采用核心密码算法的简化版本。可以用一个单词加上该服务的域名或服务商,套用算法的前三步,比如 QQ 就是 1n$4nitYt3ncenT (pun intended)。

可弃密码。比如注册各种需要登录才能下载或者阅读的论坛,就是一个弱口令,万年不换。这里重要的是用户名最好与上述两层级都不同。如果这个服务用过一段时间之后觉得不错,重新注册一个帐号,升级为一般密码。

我倾向于把密码的词汇和算法用隐语方式写在实体记事本和一个文本文件放在邮箱(现在是dropbox)里,比如有一阵子我用 Pi 做密码,就写“山巅一寺,一壶酒”,算法只写关键字,比如“ l33T 接 t9 映射”。重要的是写下密码的更改日期,自己有个查对,而且 Google 找回密码时会问到(还会问到比如常用的几个 tag 之类)。解读的方法我会写在遗嘱里(我每年都写遗嘱。如果你想尝试,记得旧版本一定要毁掉)。

[1] 参见 http://en.wikipedia.org/wiki/Leet 。采用 SAEIO 几个字母是因为它们的频率高,变种还包括

i - !

t - 7

s - 5

u - 1_1

等。用密码管理器,为每个不同的服务使用不同的随机密码。自己只记住密码管理器的主密码,剩下的事情交给机器去做。

比如我在 OS X 上用系统自带的 Keychain Access 来生成混合字母、数字、符号,长度至少18位的随机密码,然后存在 Keychain Access 中。通常浏览器会从 Keychain Access 根据你在网页上填的用户名自动从 Keychain Access 里面填充密码。如果因为网页的登陆地址每次不同无法自动填充,可以手动打开 Keychain Access 来复制粘贴。Keychain Access 本身则是用我的登陆密码加密的。

OS X 上也可以用付费的密码管理软件 1Password,但 1Password 只能默认保存网页密码,其他如应用程序密码(QQ)、WiFi 密码、SSH 密码系统默认保存在 Keychain Access 里。

密码管理软件依赖于本地存储的数据库,这个数据库必须要做好备份,否则一旦丢失,所有密码都不见了。我用 Dropbox 同步的我的 Keychain Access 的密码数据库,因此我只需要记住我的登陆密码、Dropbox 密码、邮箱密码,就能保证万无一失了。好的密码应该做到:

1 保证强度。(至少比较长的数字,标点,字母)

2 不在不同的地方使用相同的密码。

3 不依赖工具。(工具被破掉呢?密码管理工具等于一种把鸡蛋集中到篮子里的玩法,算算概率的确安全,但是其复杂性带来更多风险。)

4 便于记忆。

满足以上要求的答案是:记忆一个生成密码的算法。其中,输入密码的位置作为参数之一。

这样,你需要记忆一次,就可以有很多高安全性的密码了。

最简单的例子是你可以在所有网站的网址后面加生日。那么在知乎的密码就可以是 www.zhihu.com19781120 。当然,这不是个好例子。一旦破掉这个,别的也很容易猜测到。

所以,动动脑筋,再改进下算法。关于密码安全:

1.再复杂,再难记的密码,你用到了一个不安全的网站,一样是浮云。比如你使用一个16+以上包含所谓的大小写英文字母/还有数字特殊字符,用到一个没有加密的网站,网站被黑客黑了,你的密码也就泄露了。

2.对于国内的网站的安全现状,不是密码的复杂度的问题,而是如何保证你重要密码,比如银行密码,在线支付密码,重要的IM工具密码,比如qq、msn等,提供商不会被黑泄露你的密码。

3.现在国内黑客常用手段之一,获取一个id的密码后,到各大网站尝试是否能登录,所以还是要保证重要帐号密码不一样就ok了。

4.密码复杂度并不能保证你帐号安全,好的密码使用习惯才是帐号安全的根本。我的做法是: 不同种类的服务使用不同的密码

1、一些不太重要的内容,不能确定其安全性(不知道其是否明文存储)的时候, 使用一套密码,丢了就丢了。

2、网银类, 支付宝,域名、和财产有关的这些, 密码使用相同前缀,但后缀和对应的网银有些关系但又不容易被猜到(即使别人得到你一个地方的密码,也猜不出其他地方的)。

3、聊天、社交、生活 例如知乎、豆瓣、微博等,共有差不多10套密码,每个网站尽量不同,但不排除有些网站的有些帐号密码全部一样的情况。

4、邮箱类, 上面的10套密码 + 不同的前缀后缀或特殊字符。

最后, 就是防忘的方法了: 家里某些本子上会记录密码的部分组成,另一些本子上会记录一些提示,电子产品上会记录部分组成, 不同的网络磁盘里会记录一些提示或者部分组成

还有,每种产品的提示问题一定要设置好,这个不用多, 有5、6种即可,但这个要牢牢记住。

我是不太相信所谓的 密码管理软件的,这样就太“单点”了,万一忘记了密码管理软件的密码,或者丢失了,就麻烦了。。。

其实密码多不可怕。。 输入次数多了。。 就记住了。。。曾经在效率天阶上看过一篇关于如何设置密码的文章,很具有可操作性,自己实践了几个月,感觉还不错。这套方法的核心在于“关键字”+“算法”,具体方法摘录见下:

定义一个“关键码”:这是只有你自己知道的密码核心,你只需要一个关键码,它将与其他内容一起组成密码;

例如:你名字的汉语拼音缩写+生日日期的最后一位+门牌号的上一位——比如tht51;

根据网站,取特征码:比如取网站地址的一些关键字,具体规则也是随你来定,但要确保这个规则在所有网站上是一致的;

举例1:你要注册的网站的域名部分的第1、3个和末尾的字符,不足的用0代替——yahoo的话就是yho,sohu就是shu,163是133…以此类推。

举例2:网站域名的头2个和最后2个字符,中间加上域名结尾的字符数——http://elcorp.com.cn就是el5rp,http://lenovo.com就是le3vo…以此类推

把上述两个关键字用你觉得最顺手的方法组合在一起,要点与之前两个一样:“规则一致”

例如:以yahoo为例,你可以组合出yho51tht,thtyho51或者tht51yho,只是一旦确定了规则,你就应该把它用在所有的网站账号中。

原文地址 http://www.elcorp.com.cn/content.asp?id=350

============UPDATE=============

2011.12.24:这只是提供了一种产生和记忆密码的方法,从全局来说,还是要针对账号的重要性采用不同的密码生成模式。极重要的密码可以相当复杂,一般重要的密码可以采用本答案介绍的方法,至于不重要的账号(只是为了下载或浏览),那就用最简单的密码(123456之类的)。