密码大乱斗——如何管理你的密码

科技   2021-10-07 09:00  

(图片来源于网络)

互联网时代,信息安全问题无处不在,密码作为守护信息安全的第一道大门,经受着黑客攻击最猛烈的炮火。

本文首先简单介绍密码的意义,然后举一些密码实例及造密码的方法,最后给出我个人在使用的密码管理方式,读者可以选择感兴趣的部分进行阅读。


1
如何证明你就是你?
乍听起来,你可能会觉得这个问题就是废话,我就是我这事还用得着证明吗?但只要想想生活中那么多需要开证明的事,你就会发现这确实是个问题。

而登陆(Login)本质上就是一个验证身份的过程:你需要拿出凭据来证明“你就是你”。

能证明身份的凭据可以总结为三类你的生物特征(指纹、长相等)、你拥有的东西(身份证、钥匙等)、你知道的信息(小秘密等),而密码就属于最后一类

在《西游记》真假美猴王的故事里,孙悟空就遇上了怎么证明自己就是孙悟空的问题。

首先,孙悟空和六耳猕猴长相相同、猴性相同,无法从生物特征识别;
其次紧箍咒和金箍棒相同,甚至三根救命毫毛也一样,无法通过拥有的东西来识别;

此时只能靠最后一点了,比如唱一段最近新编的 Rap《大唐 Gang》,没准这事儿就结了。


2
什么样的密码是好密码?

下面这些密码,你觉得哪个是好密码?

123456
qwerty
il0veU

显然“123456”不会是一个好密码,事实上它已经蝉联好几年“最烂密码排行榜”首位了。

(感兴趣的朋友可以访问https://www.passwordrandom.com/most-popular-passwords,看看上面是不是有自己正在使用的密码)

之所以人们还在使用这个密码,最重要的原因就是简单——输入简单,记忆也简单。“qwerty”也是同样的原因,如果你还不知道为什么,你可以对照键盘看一下这几个字母的位置。

“il0veU”看起来是一个不错的密码,包含了大小写和数字,还用“0”替换了“o”。但是对于黑客来说,这种替换方式早就烂大街了。类似的还有把“S”替换成“$”,把“a”替换成“@”等等,这些对于密码破解器来说就是小菜一碟。

要知道,一台普通的电脑每秒可以测试超过一亿个密码,如果使用基于 GPU 的破解工具,这个数字可以达到数十亿。上面这些简单的密码,连一秒都不需要就能被破解。

究竟怎样的密码才算是好密码?从安全角度来说,一个不容易被破解的密码就是一个好密码。

要避免使用一个容易被破解的密码,你必须知道黑客破解密码的常用手段:

  1. 使用常见密码,并根据常用模式变形、组合进行破解
  2. 使用被攻击对象的相关信息(如出生日期、姓名拼音、身份证号等)组合成密码进行破解

针对第一点,我们需要避免使用常见的、常用词组成的密码(答应我,不要再把 abc、123 这些放在你的密码里了,好吗?)

针对第二点,则需避免使用自己或家人信息组成密码(爱一个人,不一定要用 TA 的生日做密码)

同时,我们需要知道:密码强度的首要因素是长度,而不是你是否混用了大小写字母和特殊字符例如
8 位字母数字混合密码的强度是 8 位仅字母密码的 4 倍,因为:(62/52)^8 ≈ 4.08;

但 12 位仅字母密码的强度是 8 位字母数字混合密码的 179 万倍,因为:52^12 / 62^8 ≈ 1790220。

考虑到当前电脑的计算能力,建议密码长度不少于 16 位


3
造一个密码?
从上一部分内容可以知道,一个好的密码应该有足够的长度,同时不包含有意义的信息。事实上,使用随机密码生成器生成的密码,可以完美符合这两个要求。

打开https://www.avast.com/zh-cn/random-password-generator,想要的长度、想要的字符,一键生成,非常安全!

但是随机密码最大的问题就是:难以记忆

所以你可能会把这个密码记在便签纸上,然后便签纸丢了密码也丢了。如果你谨慎一点,也可以锁在保险箱里,但是保险箱的密码咋办呢?

一个可行的办法是,把随机的密码变成有意义的句子进行记忆,这其实是快速记忆法中的一个技巧。

比如圆周率 3.14159,可以谐音记成“山巅一寺一壶酒”;

比如我刚刚生成的一个随机密码:“ALGDGDNYJD”,我可以扩充成“A Logo Dog Deny JD",然后想象京东的 logo 狗拒绝做 logo,这样就记住了。

但是这种方法不适合语文水平不好的同学,因为十几个网站的密码弄下来,得写一篇小作文,然后还得把自己写的作文背下来。。。

实际上,我们可以反过来操作:把自己已经背下来的东西,造出一个近似随机的密码。比如用古诗词改编:

原文:流直下三千尺,疑似银河下九天
密码:FLZX3000cY4yhx9day


原文:娉娉袅袅十三余,豆蔻梢头二月初

密码:ppnn13%dkstFeb.1st


原文:姑苏城外寒山寺

密码:hanshansi.location()!∈[gusucity]


原文:无边落木萧萧下,不尽长江滚滚来

密码:doWhile(1{LeavesFly();YangtzeRiverFlows();


原文:天青色等烟雨,而我在等你

密码:sky#0ff=Ayu2I@=U

上面这些都是出自 CSDN 密码泄露事件,不得不感叹网友创造力之强。使用这种改编的方式生成的密码,安全性可以保障,同时记忆的难度大大降低,还能提高对诗词的理解,实在是鸡娃必备之良品。

当然你也可以用自己喜欢的名言警句,或者是台词、歌词进行改编,关键是改编要有创意,光用拼音首字母可就不保险了。

另外需要强调一点,已经暴露在网上的密码,没有一个是安全的,大家千万不要使用上面出现过的密码。


4
如何管理你的密码?
上一部分已经介绍了造密码的方式,但是对于文学素养最高峰停留在高三的我们来说,要给每个网站都编一个密码,着实太难为人了。

如果我编了一个密码,然后每个网站都用这个密码,安全吗?

要回答这个问题,必须了解什么是撞库:

撞库是黑客通过收集互联网已泄露的密码信息,尝试批量登陆其他网站,得到一系列可以登陆的用户。
假如你在各个网站都用一样的账号和密码,其中某个小网站被黑客攻击后暴露了你的明文密码,黑客就可以用撞库的方式登陆你的支付宝、微博等账户。
(你可以在 https://haveibeenpwned.com/ 上查询自己用邮箱注册的账号是否在某些网站上被泄露过,如果泄露过,且你在多处网站的密码相同,请务必对密码进行修改)

这体现了安全领域的木桶效应:当你各个网站都用一样的账号和密码时,你的信息安全就被圈在了一个木桶里,而安全程度的高低是由防御最薄弱的这个网站决定的。

所以最好的办法还是每个网站使用独立的密码,但是这对我们记忆的负担实在是太大了,难道还是要写下来存进保险箱里?

当然不是,我们遇到的问题,很多人都遇到过并且给出了解决方案。这个问题的解决方案就是:密码管理器

密码管理器的主要功能就是代替保险箱,存储各个网站的密码。辅助的功能包括:快速保存、填充密码,生成随机密码,记录隐私信息等。

密码管理器的常用方式有:
  1. 使用随机密码生成器生成随机密码,用于注册新网站(或重置密码)

  2. 登陆网站,并在密码管理器的提示下保存密码,之后即可自动填充密码

  3. 在非自己的电脑上,打开 APP 对照着输入密码

在使用之前,你需要为你的密码管理器设置一个主密码(可以用前面讲过的方法),这是不可避免的,因为你需要证明这个账户是你的。之后的使用过程中,你不再需要记忆任何密码,密码管理器会负责填充的工作。

可能有人要问了,密码全都存在密码管理器里,如果密码管理器被黑客攻破了,那不是所有密码都泄露了吗?

这个问题数学家们早就帮我们解决了,有兴趣的朋友可以搜索“零知识证明”了解相关的理论基础,或者直接看李永乐老师的视频:https://www.ixigua.com/6961704171380834829

简单来说,使用零知识架构的密码管理器,连它们自己也不知道你存的是什么,只有你知道。如果密码管理器被黑客攻破了,黑客拿到的也只是加密后的信息,无法得到你真实的密码。

基于这个理论基础,你完全可以把密码管理器当成一个数字保险箱来使用,那些不放心存在网盘、iCloud 上的信息,都可以考虑移到密码管理器中。

目前市面上主流的密码管理器有:1Password,LastPass,BitWarden 等,我自己选择的是 BitWarden,因为它是开源的。

上面说过,密码管理器的理论基础是零知识证明,大家都说自己是基于零知识架构的,但是开源的 BitWarden 让我相信它确实也是这么做的。

不过 BitWarden 的界面稍显简陋,介意的朋友还是考虑 1Password 和 LastPass 吧。(不过 1Password 和 LastPass 都要收费,BitWarden 免费版对我来说够用了)

最后给大家上几张 BitWarden 的使用截图:

(密码列表)


(手机端添加密码)


(手机端自动填充密码)


(记录非网站密码等隐私信息)


(随机密码生成器)


- END -


熊凡乙
发光发热,做光做盐