关于复杂密码必要性的讨论

前段时间摸鱼逛wiki,读到了安全页面的密码(安全-密码)部分,wiki建议使用随机复杂的密码,并且推荐了密码生成软件,以及建议不要使用各种中英词语,因为它们会让密码更容易被破解。我采用了wiki的建议,更换了密码,但是也随之产生了很多问题。

首先复杂随机的密码除非每天都输入,否则一般人根本记不住,而我又不止一个密码,并且也不是每个都每天输一遍,当我需要输入不常用的密码时,我就需要去开我的密码簿,非常麻烦。

其次是国内的软件,我不知道从什么时候开始,很多国内的软件,即使输对了账号和密码,也需要短信验证码或者扫二维码等等,更有甚者只能用扫码登录。我能理解某个设备首次登录需要验证,但是每次登录都要我验证是什么意思,这使得输入密码登录反而显得“多此一举”,尤其是密码本身已经够复杂随机了。

于是我开始对复杂随机密码必要性产生了困惑,我是一个倾向于把事情尽可能做好的人,所以我愿意替换原来的密码,但是上面的事情还是让我产生了动摇,普通个人用户有必要做到这种程度吗?尤其是在多因素认证已经普及,且很多服务根本不给你输密码机会的背景下。

随机密码是配合密码管理器使用的——也就是根本不需要你手动输入的场景。

一般不都是不需要密码、直接短信或者扫码登录的吗?说到底这些服务还是不信任用户能保护好自己的密码,导致复杂密码带来的安全性提高几乎为零、但成本依旧在——劣币驱逐良币的又一案例啦。

我一般是这样处理的:

  • 核心加密密钥,比如LUKS密码、密码管理器的加密密码:使用非随机的强密码。自己记住的同时需要防暴力破解
  • 本地登录密码、PIN:使用简短的密码。这些密码难以被暴力破解
  • 正常的网站登录密码:使用由密码管理器管理的随机密码
  • 不便使用密码管理器的软件:尽量避免使用密码,改用短信等其它验证方式。如必须使用则随便想一个然后记录下来

我会尽量避免使用多因素认证,因为相比别人莫名其妙地获取到我的密码,我更害怕因为设备丢失、损坏或其它意外而丢失账号。

随机密码是和密码管理软件搭配使用的。每个地方用不同的随机密码,可以避免某个网站泄漏数据后,你的所有密码都需要修改。

搬运一下我在知乎上的一篇回答:知乎 - 如何设置一个高强度密码,方便自己记,又不容易被破解呢? 顺便一提,wiki 上引用的 diceware 网站不是官网,虽然现在它在搜索引擎排第一,但最早提出 diceware 的网站实际上是 https://theworld.com/~reinhold/diceware.html,官网不建议使用计算机的随机数生成器,而是使用真正的骰子。

在我看来,复杂的 diceware 密码只需要用在需要手动输入的密码上,比如密码管理器主密码、LUKS 密码。其它网站的密码可以让密码管理器自动生成、自动填充,不需要手动输入。重点是每个帐号要使用不同的密码,防止一个泄露都被泄露。

至于输主密码解锁密码数据库,确实显得有点麻烦,但也是防止忘记主密码的措施,Android 如果 72 小时不输入锁屏密码还要强制你输入一次呢。不过如果要在公共场合解锁数据库会不太好办,我暂时也没有什么很好的想法。

对于那些需要短信验证登录的服务或者支持无密码登录的服务,就算设置一个复杂密码其实也没什么坏处,也就是一次性设置,而且是密码管理器自动生成的。反正登录也不需要输密码(比如直接用短信验证码登录),那也不用解锁密码数据库了。

但要说多因素认证的情况下密码重不重要,那其实还是重要的,毕竟你得每个因素都尽量安全才能达到增强安全性的目的。不过我个人图方便,是把 TOTP 直接存储在密码数据库里的,削弱安全性换取了便利性,大部分情况都可以自动填充

随机字符组成的密码往往需要很长时间才能记住,而且大概率往往打了很久也记不住,所以如果你经常需要手动输入一个密码的话其实是不推荐用纯随机字符的

我的建议是将没那么常见的但是能记住的东西做一些变形然后作为这种情况下的密码,在保证安全乃至复杂性的同时也能记得住

推荐看看我上面提到的 diceware(其实 wiki 也提到了,不过 wiki 的特点就是堆砌一堆信息让你分辨不出来重点(

我去买俩骰子,一会儿见(bushi

前段时间我也收到警告说我的密码可能被泄露了.....不过我基本都开的2FA用ente auth或者验证码登录, 不知道需不需要担心
有啥好用的密码管理软件吗

在外面的时候遇到就超级难受,尤其是像地铁这种四周到处都是人的地方……它应该加一个推迟的功能的。

如果想要多端同步的话用 bitwarden,如果想要极致的本地性的话用 keepass

使用复杂随机密码,你自己肯定是记不住的,必须要保存到密码库,可要是这个密码库被盗的话,那随机密码也等于无用。

我没那么多想法,只使用一个高强度密码,把它硬背下来,然后根据登录的是什么网站往密码里面某个位置加入几个跟网站有关的字母防止撞库,这就足够了

好的, 我都试试看

我在用KeePassXC + syncthing,局域网同步,安卓有KeePassDX,火狐有也有对应插件,个人感觉比较好用