聊聊密码安全

聊聊密码安全 1
Photo by Chris Barbalis on Unsplash

密码就是用来保障我们账户安全的,我设置了密码,并且记住了密码是什么,所以我的账户很安全。

那么,你的密码是安全的吗?

熟悉小老鼠的人都知道,他隔三差五的喜欢在他的各种圈子里喊几句——推荐大家学习使用密码管理器啊。反正也没人搭理他,他就这么自说自话,自己坚持着。今天早上看到数码荔枝的公众号发布了一篇关于密码管理器的文章,于是小老鼠又想起了这件事情,这次决定多絮叨絮叨.

反正也没人看什么的,就当自己解闷儿了;那个说先码后看的,你可以走开了,码过就等于看过这种骗老鼠的把戏,没什么意思。哼~傲娇!

一、暴力破解

这是最简单直接的方法。诶,什么方法?干什么的?你在说什么?

……如果黑客同学想要获得你账户的密码,或者其他的各种什么密码,都可以用这个方法。道理很简单,就不断尝试就可以了。

那么我举一个简单的例子,我行李箱上的密码锁是三位的数字,所以就从 000 开始尝试,然后 001、002……直到 999。只要坚持下去,总有一个能够打开,所以这个方法很粗暴很直接,也很有效。

唯一的问题是,我们可能没有耐性自己去挨个尝试,不过电脑似乎最擅长做这种重复枯燥的工作了,而且它的运算速度极快。像这种只有 1000 个可能性的事情,对它来说真的连一秒都用不了。虽然每次去验证这个密码是否可用,可能会花费更长一点的时间,但是 1000 这个数量实在太小了。结果就是无论你怎么设置密码,破解不了算我输。

那这样的密码就没有什么安全可言。

了解了这个,大家只要稍微思考一下,就很容易明白:

  • 纯数字的密码不如数字和字母混合的密码安全;
  • 位数短的密码不如位数长的密码安全。

那位认真听课的同学立刻就急了——我现在的各类支付密码都是 6 位数字,这也太不安全了!

我们上面说这些密码很容易破解,是因为需要尝试的次数很少,对于电脑来说实在不算多大事情。但是我们可以增加每一次尝试的时间成本,来适当的提高这个安全性。比如我们的行李箱,如果没有特别情况,并不会有人用专门的电子设备去对它进行破解,而手动尝试 1000 次的时间就太长了。我们先不考虑运气好两三次就碰到正确密码的特殊情况,毕竟那是特例,即便是取一个平均值,也要尝试 500 次左右。反正都不是一个你愿意去手动操作的次数,对于想要打开密码锁去盗窃东西的窃贼来说,这个时间消耗也是非常不合理的,所以他在一定程度上还是保障了安全性。

而银行的支付密码,如果连续三次输错,最少也要锁定一小时以后才能重试。当然还有更严格的规则,比如说需要等待 24 小时,甚至卡片被锁定,必须持本人身份证件去银行柜台解锁。就算是按照最松散的规则,一天 24 小时也只能尝试 72 次,遇到正确密码的概率非常低。何况银行肯定不会让人如此频繁的去尝试,以及还有消费限额等等措施进行多重保障。

但是黑客的手段仅限于此吗?

二、拿我字典来

上面我们总结出来两条规则,长的数字和字母混合的密码更加安全。但是这一定不容易记忆,一个连自己都记不住的密码是肯定安全的,不过好像没有什么用。所以为了保证自己能够记住,大家一般都会选用比较好记的组合或者有意义的内容。

比如,111111,123456 ……当然我这里是举了两个非常短的例子,方便大家看嘛。

黑客同学也这么想,我与其傻乎乎的按着顺序去尝试,就不如先试试最常见的组合,万一你和我想一起去了,我就省了功夫了。所以他们会把这些最常见的组合整理出来,用来优先尝试,这种就叫做字典。

有同学表示放心吧,没有问题的,我用的是一句英文名言,你想名言那么多,他知道我用的哪一句。

确实,这种最常见的组合覆盖的范围并不是很广,但是既然大家都喜欢用比较有意义的内容作为密码,方便自己记忆。那就用常用的英文单词来制作一个字典,让它们之间进行各种的排列组合,这样虽然效率稍微低了一点儿,但是范围要比直接暴力破解小了好多。因为是以单词之类元素作为基本单位进行排列组合,这相当于把你心目中的长密码又重新打回了短密码。

三、社会工程学

某同学表示,不怕不怕,我用的生日做密码。你想一年 365 天,再加上年份,这可能性非常多了。你说不安全?那我再在前面后面加上一些内容。或者干脆用身份证号,全国十几亿人口的身份证号都没有重合,这可能性够多了吧,也没啥规律了吧?

黑客每次拿到的可能并不仅仅是你的账户,还会有一些你的个人信息,比如各种社交网站都要你填的生日。时间就那么几种书写格式,把这个特定的时间也放入上面的字典,那就很容易尝试了。身份证号,前 6 位表示地区,所以数量也不多,嗯……不太多。不过,你所在的地理位置好像也不是什么秘密吧,都别说在各种网站填写的资料,各种购物邮购的地址。现在那么多 APP 要 GPS 权限,你在哪里?他们知道的比你还精确。所以前 6 位,需要尝试的范围非常小,而中间 8 位是生日,现在就剩下最后 4 位数字,不过 1 万种可能性而已,所以你觉得呢?

这种通过各种其他渠道的信息,来缩小密码的范围,甚至直接获得密码,就算是社会工程学。不过社会工程学远不止此,还有通过熟悉你的人去获取你的各种信息,甚至密码。

四、数据库碰撞

于是你吸取了上面的教训,使用了 16 位,数字,大小写字母,特殊符号混合,并且没有任何意义的随机密码。

很好很强,暴力破解表示消耗的时间太长,你那点信息不值这个钱。

然后某网站安全方面做的非常不到位,数据库被黑客拿走了,你也别管数据库是啥,反正这个网站的所有用户账号和密码黑客都拿到了。

当然这不是我们的问题,我们作为用户再努力也无法杜绝这种情况,但是下面的问题我们就要关注一下了。

黑客表示仅仅拿下这个网站并不过瘾,因为他知道这个网站的用户一般也是另外某个网站的用户,那何不用用户在这个网站上的账号密码去另外的网站尝试一下呢?

很多同学在听懂以后开始紧张了,因为这种事情已经发生了好多次。某一个网站密码泄露,大家才想起自己所有网站都用的同一个密码。完蛋了,完蛋了,黑客连自己家底儿都知道了,于是忙不迭的跑遍所有网站去修改密码。

所以啊,不同的网站,不同的账户,都不要使用相同的密码。如果一把钥匙能打开你家所有的门,那你处处上锁和只有一处上锁的安全性是一样的。

五、结合起来

上面这些方法都不是独立的,它们还会相互结合。最简单的,比如黑客获得了大量的用户密码,他就可以做一个统计,哪些密码用的非常多,当然是放进自己的字典里;密码中哪些词汇的组合用的比较多,也放到自己的字典里;大家喜欢用怎样的规律去生成密码,把这个规则也放到字典里……

这就是群策群力在为黑客去丰富他的破解字典,所以就别指望自己一个人能够比群众的智慧更强了。

六、再次验证

所以仅靠一个密码是不靠谱的。

而且密码泄露的渠道多种多样,有人在身后看了一下,你的电脑被人监视了,现在监视器这么便宜方便,网站、应用又猪队友了……

所以通过了密码验证,并不等于这就是用户本人。那就再证明一下你是你吧。

方法也很简单,再通过其他渠道和你进行一下确认就好了。这就是双重验证,也叫双因素验证,反正就是通过两种方式去验证这个用户确实是用户本人。那可以认为是两重密码,但是这第 2 层密码一般都是动态的,实时的,有实效性的。

最常见的方法就是短信验证码,这个大家都理解。不过他也有很多缺点,一方面是成本高;另一方面短信可能有延迟,而验证码又具有时效性,结果收到验证码的时候已经不能用了;然后我们大概都接到过伪基地站发送的各种短信,虽然现在已经比较少了,但是短信验证码还是有被伪造的可能性。

然后还有各种 App 的验证。但注意我说的不是扫码登录那一类,那种只是一种授权(最后会讲)。我们说的是那种,你使用账号和密码进行登录之后,还要在 App 上,进行相应的确认才能进入账户的,我觉得大家应该多少都有些了解,尤其是玩国内各种游戏的朋友。

还有实体的验证设备,前几年银行喜欢用这种东西,有的是类似优盘必须插在电脑上,有的是使用随机数,必须把这份随机数填写到网站里才能够正常登录。

这些都增加了安全性,就是不太方便。

七、通用的验证

所以有人想出了比较方便的方法,也是使用随机数,而且是使用一个公开的计算方法去计算出这串随机数,但是这个算法是不可逆的。而要生成这个随机数,需要有两个变量,一个是时间,一个是你和网站确定的一个暗号。

在你登录的时候,用当前的时间和这个暗号去共同生成一个随机数,网站进行验证就知道是不是你了。因为算法是不可逆的, 别人即便知道了这个随机数,也无法推测出你们之间这个暗号是什么。所以虽然有着公开的计算方法,他依然无法计算出下一次的随机数应该是什么。

是的,那种实体的随机数口令设备也是一样的原理。

既然这个算法是公开的,也就意味着我只需要一个支持这个算法的软件,然后把和各种网站约定的暗号都放在里面,就可以用一个软件去搞定各个网站的二次验证,这很方便。

国外很多网站的二次验证都是这么搞的,只是在国内没有流行。于是我们习惯了他们各自为政的验证方式,为了登录某个账户,而在手机上还要额外的安装一个 App。

八、解决方法呢

我们知道了,我们应该使用一个长长的密码。一般来说,我们认为 16 位的密码就比较安全了,以当前计算机的计算能力,这个强度的密码要计算挺长时间,当然未来随着科技的发展,这个时间也会被不断缩短。不过各个网站对密码的长度总是有一定限制的,现在 16 位长度算是比较通用,绝大部分都可以接受。

只有数字的密码强度肯定是比较低的,因为每一位的可能性只有 10 个。所以我们还要加入字母,字母再区分大小写。这时候纯暴力解决起来就比较困难了,但是我们又想到了字典的问题。于是再加入随机的特殊符号,因为特殊符号不太容易有什么意义,被猜出来的可能性就更小一些。

然后它们应该是随机组合的,而自己不同网站不同账户之间的密码,最好是完全不一样的。

我没有神仙的记忆力,我做不到啊!

其实我们只需要一个密码管理器就好了,这就相当于一个保险柜,我把我所有的密码认认真真的写在纸上,放进保险柜里,然后锁好。现在我就只需要记住一个密码,就是保险柜的密码,我只要能打开保险柜,我就可以找到我所有账户的密码。我只要保障我保险柜的安全,那我所有的密码都是安全的。

现在的密码管理软件很多,建议大家选择知名的,大牌的。一方面他安全,这个安全有两个层面,首先你的数据是被加密的和安全的,因为会有很多高手认真的盯着他们的安全性;他们也不会在暗中做什么手脚,嘿,你的密码都放在他那儿了,当然要找一个可以信任的地方。还有大厂会持续更新,不断修补问题,优化体验,就可以一直安逸的使用。

推荐的有:LastPass、1Password、KeePass、Enpass、Bitwarden 等。其中 KeePass 免费,但是相对折腾;LastPass 基本免费,新手推荐;1Password 和 Enpass 是收费的;Bitwarden 是开源的,连服务器都能自己架设。

他们能做什么呢?很基础的功能有:

  • 保存密码
  • 自动填写密码
  • 生成高强度密码
  • 生成二次验证的随机码
  • 多设备数据同步(可能需要借助自己的网盘同步,不过数据是加密的

你看是不是在管理和使用密码上的许多问题,他们都给一步到位的解决掉了。这么复杂而重要的密码问题,我们又有什么理由不去找一个优秀的工具来协助我们管理呢?

强烈提醒:至少要牢牢的记住你的保险柜密码,否则所在保险柜里的东西,谁也没有办法帮你拿出来。

九、授权登录

本来关于密码的问题,讲到这里就该结束了。

但是最近看到一些人迷惑于一个老生常谈的问题,所以也在这里讲一下。

有人老觉得微博在背后做着什么,卖粉丝、卖关注、卖点赞等等的龌龊勾当,他做没做我是不知道啦,不过讲道理,他真的没有必要去做啊!只要稍微调整一下算法,在正常渠道里面多推荐几次,想让谁火还不是很简单的事情么,又何必去玩那些小伎俩呢?

那怎么……

对,你改了高强度的密码,做了二次验证,但是还是出现了许多问题。这很可能是你允许了你和微博以外的第 3 个人去这样做。

啊?!

你是不是曾经用微博登录过许多东西?这真的太方便了,点一下授权,别说二次验证,连账号密码都不用设置,就直接登录了。科技发展真是好啊,现在的生活都这么方便了。那你在点击授权的时候有没有仔细看过,你都给了他哪些权限呢?告诉你许多网站都会要求一些他原本用不上的权限。而有时候你也就是授权登录一次以后就再没有光顾过他们,但是你给他们的授权却从来没有取消,所以就……

忽然觉得微博自己也很冤枉呢!去看看你的微博授权里面,藏着多少,你就用过一次的东西吧。

有人说自己的隐私也不值什么钱,自己的微博也不在乎,随他们去吧。你的账户可是经过了实名认证的,如果被他们用来发布什么违法信息,敬爱的警察叔叔肯定是会找你的。

好像,现在不怎么用微博去授权了呢,我们用的都是微信呀!啦啦啦啦,我就不讲啦,想想你们每一次看都不多看一眼就点下去的授权按钮吧。

这类状况非常的多,还有类似的,是各种商家活动,按钮下面都有一个非常小的复选框,同意某某协议。甚至现在连复选框都没了,点下按钮即表示同意某某协议……征信记录上奇奇怪怪的记录是怎么来的?你同意了呀!

“我的隐私没有什么值钱的,我不在乎……”——当他们以你的名义,去做着各种下贱龌龊甚至违法,或者直接间接伤害你自己利益的事情的时候,你还能不在乎吗?


小老鼠倒是不在乎啦,反正这么长的东西,认真读完的也没有几个。我苦口婆心的去讲,反反复复的去讲,都没有人在乎,那我还能怎么样呢?毕竟那些都是大家自己的账户,大家自己的安全还得自己上心吧。

0
0

26 条留言

  1. 扬帆大海 2019/12/13 回复
  2. 安以林 2019/12/13 回复
  3. 冷无敌 2019/12/13 回复
  4. 浮生缘梦 2019/12/14 回复
      • 浮生缘梦 2019/12/16 回复

写留言

Enable Notifications.    Ok No thanks