我是怎么管理密码的

应推友要求,介绍下我现在是怎么管理密码的 :) 。

这个方法不是我首创,我也是受别人启发,但可以简单论述下为什么这个方法好~。

 

这个问题的背景,是这个国家的互联网行业,开发者素养差、管理者道德低的普遍现状(当然,国外也有很多不负责任/不懂如何负责任的网站)。我们对于所有网络服务,普遍处于不信任的状态(特别是国内还多了官僚监管这一层),但是有的时候又不得不用。那么,作为用户,我们如何保护自己的信息安全(这里只谈密码)?

 

理想状况:

  1. 每个网站都使用不同的密码;
  2. 而且都很复杂。

2 保证了如果某个网站技术不太行,保护措施做得不够好,你的密码也不会轻易被破解;而 1 保证了即使在极端情况下,也只会被泄露这一个网站的密码,不影响你在其它网站上的账户。

 

然而,要用人脑来记忆不同网站的不同的复杂的密码,显然是不可行的。所以我们要借助一些辅助措施。有一类软件提供这样的功能,需要的时候,它可以帮你生成一个随机的很复杂的密码,同时把它存起来。你可以注明这是什么网站的密码,然后用一个主密码把这些随机密码都加密起来。所以,软件负责记住不同网站不同的复杂密码,而我们人脑只需要记住一个主密码。

 

这是个好主意,但是还不够好。问题在于那些不同网站的密码都是随机生成的,这也就注定了我们的焦虑(我们失去了把控,只能完全依赖于一个黑盒)。我们总会担心记录弄丢了、损坏了、出门在外忘带了(同步?没网络呢、别人的机器呢?),或者某种平台这个软件不支持等等。总之,我们被 lock-in 了!

 

我现在的方法是,不使用随机密码,而是用主密码+网站名,然后算 sha1。即:

$ sha1sum

password+csdn

^D

对,出来一串“乱码”,就用这串乱码做密码。这样做的好处,只要密码后面的网站名不同,生成的“乱码”就完全不同,即使有几个网站同时不靠谱、同时把你的密码(即刚刚生成的“乱码”)泄露了,你的主密码是绝对安全的(当然,要搞复杂一点)。另一方面,你知道这些“乱码”是怎么生成的,所以你不再依赖于某一个单一的软件,因为 sha1 算法是整个计算机系统的重要基础设施之一,哪里都有它的踪影、久经考验。

 

哦,你会说,这是程序员的玩意儿,非程序员怎么办?非也,算 sha1 的小软件,可是比密码管理软件分布广泛多了。Windows/Linux/Mac OS、手机、平板⋯哪个平台上没有?不但有,而且很简单、很好用,绿色环保!就算没有,照着公开的算法写一个也不是什么难事。

所以,我们与其小心翼翼地备一个密码管理系统,不如大大方方地随便哪放一个算 sha1 的小软件。而且你可以下一个在手机上,真是走到哪用到哪啊。不是有很多人说,非硬件级的方案不用么?手机,这是最好的硬件方案了。:)

还有很重要的,如果因为种种原因,你要用一个公用/别人的电脑,就会对配置 1Password + Dropbox 感觉不爽,毕竟有你重要/隐私的数据在里面,同步下来总不太好。算 sha1 的小软件就无所谓了,随便下一个、随便算一下,然后叉掉就行了(要找一个熟悉的,确保不会保存历史记录)。

 

当然,算法只是一方面,为了方便起见,我们不希望每次都算一遍。所以,可以配合浏览器原生的记住密码、自动填写、自动同步的功能一起使用,我觉得堪称完美了(特别是 Firefox 还可以设置主密码保护已记住的密码)。

我已经使用这个方法一小段时间了,个人感觉良好。唯一的不爽是,有些 SB 网站居然对密码长度有限制,要求不超过 16/20/25/… 位。遇到这种情况,只能一边骂 SB 的同时,一边截短。。。

 

关于 1Password:

1Password 做得太优雅了(只用过 Mac 版),以致于我很乐意帮它做个广告(虽然我没再用它了⋯)。1Password 几个很好的功能:

  • 自动生成随机复杂密码:跟上面主要的思路相冲突,这功能等于没用;
  • 自动记忆、自动填写:浏览器原生支持,相比之下没有优势,等于没用;
  • 密码整理/管理非常方便:这是它比浏览器原生的功能强很多的地方。但是密码之所以需要整理,是因为每一个都很独特、都很重要,我们需要搞得它井井有条。但是当我们用了上面 sha1 的算法之后,会突然觉得没必要整理了。我们让浏览器记住,只是为了它能帮我们自动填写,方便一点而已。实际上,那些密码存在数据库里到底是什么鬼样子,我们一点都不担心,反正需要的时候再算一遍好咯。所以,不是 1Password 做得不够好,而是这功能对我已不再重要。

呵呵,好像说得它一点用处没有的样子,其实我们也可以用 1Password 记上面 sha1 产生的密码,它的好处比如:

  • 虽然密码整理已不再重要,但是它毕竟满好用的,说不定我们什么时候想整理整理呢?
  • 1Password 是跨浏览器的。如果用浏览器原生的记忆密码的功能,并且 Firefox、Chrome 同时用的话,同一个网站的 sha1 可能需要算两遍呵呵。而 1Password 是跨浏览器的,算一次就可以。
  • 除了网站的密码,1Password 还可以用来记信用卡都资料。

另外,如果不太喜欢上面说的所谓的算 sha1 那么 geek 的做法,也是用 1Password 的一个很好的理由,它是非常用户友好的。与 1Password 类似的,可以用开源且恰好免费(好吧,我是想给你一个印象:开源不一定免费)的 KeePass。

(完)

    • dinoh
    • 十二月 27th, 2011 8:59上午

    是先建一个文件然后把密码放到文件里,让sha1sum去验证这个文件的值吧

      • Wang Congming
      • 十二月 28th, 2011 12:40上午

      可以这样,不过就是有点麻烦了,可以直接把字符串交给它算嘛。如果用命令行的话,就是我上面举例的方式;如果用 GUI 软件的话,一般都有一个长条输入框。

    • jsz
    • 十二月 27th, 2011 9:55上午

    这有一个问题,就是主密码一定不能丢,如果被人发现了,而且他知道你算密码的方法,那所有的密码就被他知道了。

      • Wang Congming
      • 十二月 28th, 2011 12:48上午

      主密码是打死都不能说的 :)

  1. 推荐我们做的小东西,单html文件,jsp,本地运行,连nokia手机都可以使用的
    MD5(主密码+网站)密码计算器。

      • Wang Congming
      • 十二月 28th, 2011 12:51上午

      jsp?js 吧。本地算的,靠谱呵呵。

    • SSo
    • 二月 17th, 2012 4:54下午

    hi~一直在用autoproxy+GAppProxy,但是最近几个月貌似都翻不出去了.
    能否帮忙解决下,mail我吧^^

      • Wang Congming
      • 二月 19th, 2012 5:28下午

      你说的太笼统了点吧,无从判断呃。

    • Charles
    • 三月 27th, 2012 11:58上午

    楼主用过LastPass吗,有免费版和收费版,免费版就足够用了,多浏览器支持,不同浏览器可以同步,非常方便,就是是在线式的,总觉得有点担心,每次使用浏览器都要输入一次主密码,输多了有点怕,就怕被黑客截获!

    • 火影
    • 九月 12th, 2012 2:58上午

    我下载了autoproxy-0.4b2.2011041023-fx+tb+sm.xpi,不知道如何安装。

    • 张佳
    • 九月 19th, 2012 3:03下午

    我也用LastPass,好用没得说。我同意你的方法。sha-1有点小复杂,但确实是很理解的方案。我自己一直有套小方案,和你的类似。我的方案也是因网而异,但只是简单的字符替代,这样用大脑就能计算了。

    看了你的文章,我决定所有银行系统都用这个方案。

    • daiybh
    • 十一月 8th, 2012 10:16上午

    最SB的是某些网站只能用字母加数字。

    • reguser
    • 二月 10th, 2015 10:30上午

    我就想请问博主是怎么记住不同网站不同位数的密码的? 现在就为这个密码位数头疼啊. 经常性因为不同网站位数不同而忘记应该用几位数密码

  1. 还没有引用通告。