密码管理规范

    下面是贝壳自己总结的密码管理规范,大家可以参考一下。

概念解说
  • 网络密码和本地密码。网络密码通常很难暴力攻击,尝试速度受到网络限制,而且尝试一定次数后还可能被管理员发现。而本地密码则相对比较容易攻击,我假定本地密码攻击可以达到每秒测试2^30个密码。
  • 密码长度推定使用如下计算方式。使用年数乘以攻击频率,得出攻击者在密钥使用期限内能尝试的最大次数。为了安全起见,尝试范围不应当超过总体密码空间的一定比例。以此推算出密码空间大小,进而推算出信息位数,然后还原为密码位数。
  • 数字密码,字母密码,数字字母混合密码,大小写数字混合密码。数字密码的信息量是3.3bit/位,字母为4.7bit/位,混合为5.17bit/位,全混合5.96bit/位。
密码原则
  • 一次一密。除了零级密码,不要为多个系统设定一样的密码。有些系统并不像我们想像的安全,一旦这个系统出问题,被还原原始密码,就会牵连到其他系统。
  • 定期更换。没有什么密码能用一辈子。
  • 写下来。因为一次一密,所以我们会有大量的散碎密码。不写下来是不保险的,写下来是不安全的。折衷一下,还是写下来,保存好吧。推荐用高级密码加密低级密码的方法,例如keepass。
  • 生成型密码。用一个特定字符串+网站名,做sha-1然后取最后8位。这样的密码满足一次一密,不容易破解,不需要写下来,唯一的问题是你要现算…
零级密码
  • 零级密码是有些不需要保护的情况下,又非设定密码不可。对于这种情况,你只能设定一个不算密码的密码。例如常用机器的用户密码。这些密码可以通过livecd/liveusb轻易修改,因此没有一点保密价值。
  • 零级密码不需要安全性和保密性,因此好记就行。例如111,222,选一个常用的,爱用多久用多久。
低级密码
  • 低级密码是用于保护一些你不希望别人看到,然而别人看到并没有直接损失的内容。例如家里机器的性能数据,普通相册的访问密码。这些内容被别人看到不会产生伤害,然而无成本的放出这些内容有潜在的风险,或是你自己主观意愿希望保护,内容安全性要求又不特别高。
  • 我假定低级密码在网络上会受到100次/年的攻击,本地密码会受到1小时/年的攻击,可用时间五年,穷举空间不超过总密码空间的1/1000。

  • 网络密码的攻击信息量为log2(100 * 5 * 1000) = 18.93bit。使用数字密码应在6位以上,字母,混合,全混合应在4位以上。
  • 本地密码的攻击信息量为log2(2^30 * 3600 * 5 * 1000) = 54.10bit。使用数字密码在17位以上,字母在12位以上,混合在11位以上,全混合在9位以上。
  • 结论,低等级的密码长度小,使用数字也并不难记。推荐使用4位以上字母(反正混合使用长度也没有下降),不要使用常见组合还有单词。推荐方式是将自己喜欢的一句英文首字母简写前后颠倒使用。例如:I will be back,对应密码bbwi。
中级密码
  • 中级密码用于保护一些你不希望别人看到,别人看到会对你产生损失的内容。例如你的帐薄,日记等等。中级密码使用时,最主要的风险已经不来自于密码本身,而是使用密码的环境。包括电脑是否安全,中途网络是否安全,旁边人的肩窥攻击。
  • 我假定中级密码在网络上可能会受到10000次/年的攻击,本地密码会受到100小时/年的攻击,可用时间1年,穷举空间不超过总密码空间的1/100000。
  • 网络密码的攻击信息量为log2(10000 * 1 * 100000) = 29.90bit。使用数字密码应在9位以上,字母在7位以上,混合应在6位以上,全混合应当在4位以上。
  • 本地密码的攻击信息量为log2(2^30 * 3600 * 100 * 1 * 100000) = 65.07。使用数字密码在20位以上,字母在14位以上,混合在13位以上,全混合应当在11位以上。
  • 结论,中级密码开始,数字密码的位数就太长了,人类记忆很难记得。推荐使用8位以上字母密码,产生方式同上。
高级密码
  • 高级密码用于保护一些有价内容,例如公司标书,银行账户。高级密码要注意更换,最长不要超过半年。
  • 我假定中级密码在网络上可能受到1000000次/年的攻击,本地密码会受到8700小时/年的攻击,可用时间0.5年,穷举空间不超过总密码空间的1/10000000。
  • 网络密码的攻击信息量为log2(1000000 * 0.5 * 10000000) = 42.19bit。使用数字密码应在12位以上,字母和混合应在9位以上上,全混合应当在8位以上。
  • 本地密码的攻击信息量为log2(2^30 * 3600 * 8700 * 0.5 * 10000000) = 77.15。使用数字密码在24位以上,字母在17位以上,混合在15位以上,全混合应当在13位以上。
  • 结论,高级密码使用字母都很难记忆了,只有写下来。千万注意保存好写下的密码,一旦丢失或者泄露,绝对不是闹着玩的。熟悉计算机的可以使用keepass配合版本管理器,支持linux/windows/android。尤其是android版本,虽然不方便修改,但是方便使用,非常好用。
特殊密码
  • 所谓特殊密码,就是银行账户。这类密码分级上应当属于高级密码,然而大家可以看到,高级密码长度应当在12位以上,而银行卡密码最大长度只有6位。这主要是因为银行为了安全做了特殊设计,五次密码猜错就会警告或者锁定,破解难度远远高于网络密码。如果你的银行密码是全随机的,可以放心使用,不过建议一年一换。如果你的银行没有五次猜错警告并锁卡功能,立刻换银行!
  • 不过银行密码最大的风险,在于很多人为了方便记忆,使用了自己或者亲友的生日。根据统计,在银行密码中使用生日是最多的,其次是电话号码,车牌号码,门牌号码。不过限于实验次数,多数是实验生日。
  • 对于这类密码,推荐一种好记又够强的数字产生方式。将亲友的生日顺序颠倒使用。不要对外说明或者暗示是哪个亲友,也不要泄露颠倒方法。这样造成的穷举范围通常在3000-5000之间。即使是你的熟人心怀鬼胎,也很难猜出密码。就算用的是他本人生日,都未必猜的到。如果将他们的电话号码顺序颠倒,则效果更好。
其实上面条例林林总总,贝壳自己都未必全部遵守。例如一次一密,有些账户密码还是一样的。不过经过我本人评估,这个风险比较低,可以接受而已。至于我的主密码长度——这个可以透露。是14位数字大小写混合密码,有效信息量82位。部分还带有特殊字符,信息量91位。即使以最严苛的标准来看,都足够解密者算到5年后了。

24 thoughts on “密码管理规范

  1. 我的密码特点:


    没有显规律
    适合qwerty和ipad键盘的双手/双指交替输入

    shell 回复:

    如果你不在乎记忆难度,全用高强度密码也没有关系。
    这个文章的要点,就是解答“要保护什么内容,至少应该用多强的密码”。

    zong 回复:

    我设置复杂密码只有Google,20位,数字和字母的组合。

    其余都很简单,考虑到记忆难度。

    原因有几个:
    1,账号太多了
    2,很多帐号N久才用下
    3,记不住
    4,账号不重要

    不过,写到这里。我觉得 Facebook 的密码也有必要重新设置下了。

    lntianda 回复:

    我的密码简单 … 就是有很多人看着都输错.

  2. 有密码管理软件的话,可以用来随机生成然后保存,会提醒定期更换密码,很方便~

    shell 回复:

    是阿,我的这篇文章就是告诉你,为了不同级别,不同环境下的密码,你至少要设定多少位数的密码比较恰当。

  3. Pingback: 《密码设定指南》以及《密码管理规范》 | 雪糕猪's Blog

  4. 唔…你能写一个给普通人看的么…一堆数据把人都要吓跑了…
    有几个问题,
    1. 对穷举攻击的话,如果足够随机,也有一定的长度,密码的复杂度,即夹杂大小写,数字,字符,是不是并没有增强被破解的难度?光用一堆乱七八糟自己都记不知的小写字母其实也足够好?因为穷举的人,又不知道密码仅由字母组成。
    2. 我基本是一次一密,重要网站的密码也足够复杂。但是自己记得住的只有几个,基本是浏览器记住密码。那这样的风险何在?
    谢谢!

    shell 回复:

    这个其实已经做了给普通人看的准备,不过一般我的blog来的普通人,至少是程序员。。。
    不过你说的对,这个是科普,不能指望来的都是程序员,回头有空写吧。
    1.密码攻击的复杂度分析是基于信息量的。一般而言,攻击者总是从常用密码字典开始,然后逐步加深位数和密码内夹杂的内容。很多时候,即使加入了一位的数字和符号,你的安全性会猛然提升一个量级——因为攻击者往往是先从简单的组合方式开始的,例如数字。
    2.你不知道浏览器记住的密码都是明文么?本地恶意软件,例如360,完全可以找到你的浏览器保存的密码,然后直接上传。
    这个风险就把你的安全性完全放到了对本地文件的安全保护上——这是很不安全的。

    carly 回复:

    嗯,整理密码去。。。

  5. 我的密码手写下来会看错,读出来会听错。

    shell 回复:

    没事,只要搞到你明文密码的人复制粘贴不会出错就好。
    哈哈哈哈

  6. Pingback: GR Starred: 密码管理规范 | 不存在的空间

  7. Pingback: 密码管理规范 « 细节的力量

  8. 啊对了,在像卓越、当当、淘宝之类的网购网站的账号,保护等级应设为多大?

    我还真想不出被盗了会有什么损失。支付宝和淘宝是分隔的。我也没在卓越、当当有存入钱。

    shell 回复:

    我建议你设定的稍微高一点,即使没有支付,至少也设定为中级。因为这里有你真实经过验证的姓名,电话,收货地址。如果泄露,你会面临海量的推销。
    不过如果你确定没有能力从你这里获得钱,倒是没必要一定用最高等级。
    考虑一下吧。

    御宅暴君 回复:

    非常感谢你的热心解答!o(* ̄▽ ̄*)o

    shell 回复:

    不必客气。

  9. Pingback: 密码管理规范 | 饼屋

  10. 借着你的话题顺便问一下。针对最近拖库事件,对于密码设置有啥建议。目前给予很多的建议是已保证唯一性、勤换密码、或者双因素保护,其他还有好的建议吗?

  11. Pingback: zz 密码为什么明文存放 | 人傻不能复生

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>