如何得到一个安全又好用的主密码

为了使用方便和备份,密码库会放在某个网络空间上,也会在网络与电脑/手机之间传输,有可能会被其它人拿到。如果密码库被其它人下载,然后在本地进行暴破/穷举,考验的是密码的复杂程度和加密算法。

一、完全随机的复杂长密码
如果这个密码完全随机,长(16位以上),复杂(包含了大小写和符号),类似这样:
+4#(ZKu(aL[Y3}LujR#Q
+wT}!E)y34=u[Lp#=@c<
VG9M+2B?E<W<yq2B3a\N
oz}oK{95wZr%ak@q{dMA
x=WM)q%2/U2h@z%[2+4i
人基本上是无法记住的,只能借助物理备份,比如:写在纸条上、金属杆刻字……
风险:如果这个物理备份丢了,或者保存这个备份的地点发生火灾地震。正好你又想不起来主密码的话,密码库就失效了。

二、有意义的长字符串
类似这样:
woaibeijingtiananmen 我爱北京天安门
shufen2008shangdaxue 淑芬2008上大学
120km/hmakesmecrazy 120km/h使我疯狂
看上去密码足够长,放到一些密码检测工具里测试似乎也足够复杂。但实际上,这些密码没有看上去那么安全。名人名言或常用句子,是很容易被黑客做到穷举字典里的。后面两个密码掺入了一些“个性化”的信息,但其它部分没有好到哪里去。

三、无联系的多个词语
类似这样:
海鸥驾驶核能鼠标  haioujiashihenengshubiao
桃子切割天空吵闹  peachcuttingtheskynoisy
忧郁钥匙政委躺下  youyuyaoshizhengweitangxia
这样的密码要好得多了。不过,密码的安全来自于随机性。用人脑去“创造”一个密码,实际上经过潜意识里的“挑选”,这个“挑选”的过程会减弱随机性。

四、随机挑选的词语
类似这样:
权益热量务实挂钩   scuwrvjgtlpurfqq  (五笔)
乳汁人们特使铺设   ruzhirenmenteshipushe  (拼音)
by xkcd密码生成器(们之一)
密码是算法生成的,随机性是可靠的,词典是已知的,整个密码的安全性是确定的。它的安全性来自算法本身,而不依赖算法是否秘密。以引用的这个密码生成器为例,它生成的密码安全性为52bit的熵,大约相当于8位大小写字母、数字、符号的随机密码,大约相当于10位小写字母、数字的随机密码。但是,这样的密码要好记得多,进而更换密码的成本也轻松得多。高质量的密码加上定期更换,更安全。

五、经常使用
切换到新密码之后的第一个星期,每天早晚都使用一次,以后时不时“复习”一次就好了。

六、密码的安全性
1. 密码库的加密算法和参数设置。
两者关系到密码库的牢固程度,换句话说多大的计算能力可以验证一次密码。在KeePassr的密码库参数里可以使用“1秒延迟”按钮快速得到一个在你自己的机器上要计算约1秒才能登录的参数。
好的加密算法可以使得破解密码时没有捷径可走。换句话说,设置了花1秒时间验证一次的参数,攻击者没有办法用同样的算力花更少的时间完成一次验证。
* Argon2算法除了需要算力,还需要并行计算和内存空间,这样攻击者如果不能堆出来同样倍数的内存空间和线程,光CPU运算速度快是没用的。
2. 攻击者的算力。
攻击方也是要算成本和收益的,不可能拥有无穷的算力。就按预算¥5000万RMB的攻击成本吧(如果破解密码之后拿不到这么多的钱,就亏本了),如果这些钱全部投资CPU,淘宝上4代i5CPU约¥500RMB,也就是说攻击者拥有我10万倍的计算能力,换句话说一秒钟可以尝试10万次。拿这个算力穷举一个52bit熵的密码,需要1428年。
即使我为了自己用得舒适一点,把加密算法的参数调整为0.2秒尝试一次,攻击者也要计算284年。按1%的置信区间计算,每3年换一次密码,足够安全了。当然,这个结果建立在这样的基础上的:加密算法先进、加密参数合理、密码质量好。

评论

  1. 我自己会使用方案四生成的词语, 再调换一下顺序方便记忆. 比如: 权益挂钩务实热量, 人们铺设乳汁特使, 稍微有点主谓表宾的结构, 记忆的时候比较顺. XP

    回复删除

发表评论

The Hot3 in Last 30 Days

无服务器 自建短链服务 Url-Shorten-Worker 完整的部署教程

ClouDNS .asia免费域名 托管到CloudFlare开CDN白嫖Websocket WS通道翻墙 / desec.io