用户友好的密码

何谓用户友好的密码?我是指在密码中尽量不给自己找麻烦,又能正常使用。

  • 不包含空白字符。否则你会烦恼有哪个空白字符,有几个的问题。
  • 不包含特殊字符。否则会烦恼怎么输入。
  • 不使用容易混淆的字母。不容易输入错误。
  • 方便手机输入。
    • 尽量少包含大写字母。
    • 只包含容易在手机上输入的符号,或者不输入。

手机上容易输入的符号

在android上,以下符号可以在google输入法中直接输入。

@*+-=/#()'":?!~

总计15个。估计加上iphone后会更少。如果要用符号,建议从这些里面取,会减少你很多密码输入的烦恼。

容易混淆的字母

  • Il1
  • 0O
  • 连续的mn
  • 连续的wv

强度规范

我把密码管理规范里面的结论总结一下,略去推导,凑凑数,把密码级别排列成以下几个:

  • 弱密码:不希望别人看到,然而别人看到并没有直接损失的内容。熵应当在20bit以上,五年修改一次。
  • 中密码:不希望别人看到,别人看到会对你产生损失的内容。熵应当在33bit以上,两年修改一次。
  • 强密码:有价内容。熵应当在45bit以上,一年修改一次。同时作为弱本地密码规范,
  • 本地密码:熵应当在58bit以上。

每个级别之间大约差12bit的熵。初始熵强度至少20bit,低于这个水平就很难说这是一个密码了。

强度估计

以最容易使用的密码计算,符号应当最多包含26个字母+10个数字,排除l10这3个。每一位有33种可能,熵大约是5多一点。

  • 弱密码:至少4位。
  • 中密码:至少7位。
  • 强密码:至少9位。
  • 本地密码:至少12位。

更强一些的密码可以用52个大小写字幕+10个数字,排除Il10O这5个。每一位有57种可能,熵大约是5.8。

  • 弱密码:至少4位。
  • 中密码:至少6位。
  • 强密码:至少8位。
  • 本地密码:至少10位。

建议

网络:

  • 弱密码:4位小写字母+数字,5年修改一次。
  • 中密码:7位小写字母+数字,2年修改一次。用于保护大部分内容。
  • 强密码:8位大小写字母+数字,1年修改一次。保护重要内容。

本地:

  • 低:8位大小写字母+数字。
  • 高:10位大小写字母+数字。

注意避开Il1O0,以及其他可能的混淆方式。