密码就是用来保障我们账户安全的,我设置了密码,并且记住了密码是什么,所以我的账户很安全。
那么,你的密码是安全的吗?
熟悉小老鼠的人都知道,他隔三差五的喜欢在他的各种圈子里喊几句——推荐大家学习使用密码管理器啊。反正也没人搭理他,他就这么自说自话,自己坚持着。今天早上看到数码荔枝的公众号发布了一篇关于密码管理器的文章,于是小老鼠又想起了这件事情,这次决定多絮叨絮叨.
反正也没人看什么的,就当自己解闷儿了;那个说先码后看的,你可以走开了,码过就等于看过这种骗老鼠的把戏,没什么意思。哼~傲娇!
一、暴力破解
这是最简单直接的方法。诶,什么方法?干什么的?你在说什么?
……如果黑客同学想要获得你账户的密码,或者其他的各种什么密码,都可以用这个方法。道理很简单,就不断尝试就可以了。
那么我举一个简单的例子,我行李箱上的密码锁是三位的数字,所以就从 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 个人去这样做。
啊?!
你是不是曾经用微博登录过许多东西?这真的太方便了,点一下授权,别说二次验证,连账号密码都不用设置,就直接登录了。科技发展真是好啊,现在的生活都这么方便了。那你在点击授权的时候有没有仔细看过,你都给了他哪些权限呢?告诉你许多网站都会要求一些他原本用不上的权限。而有时候你也就是授权登录一次以后就再没有光顾过他们,但是你给他们的授权却从来没有取消,所以就……
忽然觉得微博自己也很冤枉呢!去看看你的微博授权里面,藏着多少,你就用过一次的东西吧。
有人说自己的隐私也不值什么钱,自己的微博也不在乎,随他们去吧。你的账户可是经过了实名认证的,如果被他们用来发布什么违法信息,敬爱的警察叔叔肯定是会找你的。
好像,现在不怎么用微博去授权了呢,我们用的都是微信呀!啦啦啦啦,我就不讲啦,想想你们每一次看都不多看一眼就点下去的授权按钮吧。
这类状况非常的多,还有类似的,是各种商家活动,按钮下面都有一个非常小的复选框,同意某某协议。甚至现在连复选框都没了,点下按钮即表示同意某某协议……征信记录上奇奇怪怪的记录是怎么来的?你同意了呀!
“我的隐私没有什么值钱的,我不在乎……”——当他们以你的名义,去做着各种下贱龌龊甚至违法,或者直接间接伤害你自己利益的事情的时候,你还能不在乎吗?
小老鼠倒是不在乎啦,反正这么长的东西,认真读完的也没有几个。我苦口婆心的去讲,反反复复的去讲,都没有人在乎,那我还能怎么样呢?毕竟那些都是大家自己的账户,大家自己的安全还得自己上心吧。
密码箱的3位密码手动,挨个试一次,大概需要10分钟。。并不是很长的时间。(如果你总是忘记密码就能练出这个手速)
可以简化为 100 个,然后最后一个轮每次直接转一圈,另一只手始终拉着开关。如果 5 秒尝试一次,那么大约 500 秒,不到 10 分钟。
我不敢每个点都展开讨论,这么随便聊一下都近五千字了,估计没多少读完的。
哈哈哈 我以前就是用这个方法把我的行李箱打开的…..
七、通用的验证
这个应该和私钥签名是一个思路吧。可惜国内的生态,就没法搞出标准化的东西。连网银盾都是一家一个呢。
是的,灰常类似
keepass配置好确实强大
我配置啊配置啊……最后觉得好累,就花钱买了 Enpass。
现在 Enpass 转订阅制,直接给我转成了全平台终身 Pro,赚了,赚了~~
我也是在enpass还是买断制时,入手的安卓版😀
相同,一起美滋滋
就怕像某些软件一样,转订阅制后买断的终身版虽然一直可以用,但不给你大版本升级。
那老鼠就哭死了,会到处说他不厚道的
啥配置?我的 KeePassXC 2.4.3很简单啊,用 key file 开启。
那就直接破解你的保险箱密码,这个一破,其他密码都有了
这个密码只在这一个地方使用,并不在互联网中使用,只要强度够高,安全性没啥问题。而且,这些密码工具在必要的情况下可以开两步验证。
分享点我的密码管理经验。我使用keepass管理密码,但是仅仅当做了备忘录。
我把密码分为不同的等级–不重要(论坛)、一般(知乎、微博等)、重要(邮箱)、支付级别。每个等级使用不同的模式去设置密码,比如不重要的论坛就使用“网站名+特殊字符+1234”。所以我的所有账户密码都是不同。记忆密码模式比记忆具体密码轻松多了,最多试两三次就对了。缺点就是不好换密码。当初知乎密码泄露,改知乎密码还得改同一密码模式的其他网站=。=
老鼠可爱,想……emmmm
那要先看你的容貌……emmmm
微博那个我也是个受害者,密码改过,客户端重装过,授权列表一个没有,但是,依然三天两头地多几十个赞或关注,最后一次我记得我把客户端全都卸载了,授权应用还是一个没有,最后再一次改了密码就再也没登录过了,然后重新注册一个号使用,过了一段时间我用小号去查看那个号的关注列表,果然又多了些不认识的关注。我觉得这件事微博不冤。
其实,我也类似,以至于现在不得不用微博。因为不用反倒更容易被悄咪咪的利用。自己经常打理着,还好一点。注销什么的,又怕被人冒名顶替,也是神烦。
目前只看不发,倒是没出什么问题。
上面讨论的是最显见的可能性,没有展开,也不想针对微博特别展开了。只是想由此说明一下滥授权的问题。
建立自己的主密钥,这个主密钥是你的所有网站通用密钥,这个密钥需要字母数字和符号。位数自己看着搞,然后针对不同的网站,分别对应其网站的名称,取几个字符并以不同顺序放进主密钥。大小写自己看心情,取这串数字的固定某一位,这样就差不多了,最后为了防止重复作业,最好选择一个稳定平台记录。Keepass免费开源,强烈推荐(全平台需要自己折腾,有点费劲),1Password全平台生态,就是太贵了。
最后,任你千番设计百般想,架不住老夫的铁榔头,一锤子下去,你个憨憨还不说是吧
这种密码生成方法在面对字典的时候其实并不算保险,不过再用花密之类工具加密一层就比较不错了。
但还有一个问题难以解决,设立密码规则是为了便于记忆,但是当需要修改密码时,就又产生了一个麻烦。最终还是难以记忆的。所以还不如直接全交给密码管理器,随机生成,然后保管。
现在二次验证之后的安全性还是比较高的,暴力破解主要还是针对各种薄弱的环节,就是说如果安全意识够高,铁榔头的用武之地还是比较少的。现在更难以防御的是社工方法。
随机虽好,但是我始终觉得这个随机生成的密码必须得配合对应软件,但是生活中实在有太多场合需要异地登录自己的信息,如果是一大串,这样还得一一对照输入,尤其是大小写和符号穿插,输错又得来一次。
任何密码,在字典面前,都是不靠谱,只是时间长短问题,15位的密码,除非他是真的知道了我的10位主密钥(大小写、符号、阿拉伯数字),否则,15位的密码,混合大小写符号和阿拉伯数字(部分网站由于密码限制,不能加符号),这个计算量我觉得还是挺保险的。
我并不是要百分百保险,我只是想他在破解我的密码获取的价值究竟是否值得花费的时间,安全之余,也能方便个人移植,即根据不同网站算出对应密码,初期有点累,时间长了后就会适应了
keepass要配置?配置啥? 打开就用了啊
我想做啥都得找一番设置,唔,我还偏巧爱折腾,诶,它还偏巧有的折腾……
在用bitwareden,也是比较担心万一bitwareden被黑了怎么办?
Keepass 是免费开源软件,相较于其他商业软件,开源软件安全性会更好,任何人都可以查看其代码是否有缺陷和后门。且密码保存在本地不会联网,闭源+联网意味着软件供应商在云端“可能”查看你保存的密码列表,你没法保证。所以安全性首选Keepass。