聊聊密码安全
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 个人去这样做。
啊?!
你是不是曾经用微博登录过许多东西?这真的太方便了,点一下授权,别说二次验证,连账号密码都不用设置,就直接登录了。科技发展真是好啊,现在的生活都这么方便了。那你在点击授权的时候有没有仔细看过,你都给了他哪些权限呢?告诉你许多网站都会要求一些他原本用不上的权限。而有时候你也就是授权登录一次以后就再没有光顾过他们,但是你给他们的授权却从来没有取消,所以就……
忽然觉得微博自己也很冤枉呢!去看看你的微博授权里面,藏着多少,你就用过一次的东西吧。
有人说自己的隐私也不值什么钱,自己的微博也不在乎,随他们去吧。你的账户可是经过了实名认证的,如果被他们用来发布什么违法信息,敬爱的警察叔叔肯定是会找你的。
好像,现在不怎么用微博去授权了呢,我们用的都是微信呀!啦啦啦啦,我就不讲啦,想想你们每一次看都不多看一眼就点下去的授权按钮吧。
这类状况非常的多,还有类似的,是各种商家活动,按钮下面都有一个非常小的复选框,同意某某协议。甚至现在连复选框都没了,点下按钮即表示同意某某协议……征信记录上奇奇怪怪的记录是怎么来的?你同意了呀!
“我的隐私没有什么值钱的,我不在乎……”——当他们以你的名义,去做着各种下贱龌龊甚至违法,或者直接间接伤害你自己利益的事情的时候,你还能不在乎吗?
小老鼠倒是不在乎啦,反正这么长的东西,认真读完的也没有几个。我苦口婆心的去讲,反反复复的去讲,都没有人在乎,那我还能怎么样呢?毕竟那些都是大家自己的账户,大家自己的安全还得自己上心吧。
相关阅读
- [Chrome扩展]Talk Pro for Google Talk™
- KeePass Password Safe - 安全管理密码
- Recover PDF Password - 无视 PDF 密码
- PDF Password Remover - 移除 PDF 文件的保护密码[今日免费]
- 简聊 - 话题式即时聊天应用
(C)2019 稻米鼠 for
小众软件 | 加入我们 |
投稿 | 订阅指南
3659b075e72a5b7b1b87ea74aa7932ff
点击这里留言、和原作者一起评论 __收藏 5
Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: