首页- 信息安全- 安全防护
信息安全

安全防护

泄露事件频发,一篇文章把密码管理说清楚

自"CSDN密码外泄门"事件发生后,国内就不断发生数据泄露的事件,涉及的网站也越来越大,我们用户的数据安全频频受到威胁。奶酪就此打算谈谈如何做好密码管理。

一、你的密码是如何被盗的?

一般来说,要破解密码,最笨的方法是“暴力破解”,就是通过穷举一定长度的字符组合来破解密码。为了提高成功率,黑客们还会使用“字典破解”,也就是将已破解了的密码编辑成一本“密码字典”,使用这份密码字典进行暴力破解的几率会大大提高。可尽管如此,成功率还是不如意,于是黑客们就会在下面三个阶段进行做文章,盗取你的密码。

一是用户输入密码时,比如监听键盘记录的盗号木马。二是密码传送到服务器时,比如仿造的钓鱼网站,比如公共WIFI抓包。第三是破解网站的密码数据库,比如“CSDN密码外泄门”就是密码数据库的泄露。

(钓鱼网站 ↑)

对于第一种情况,我们只需要使用安全软件就能避免,当年那种盗号木马猖獗的现象也已经不复存在。第二种情况也只要提高防范意识,注意甄别网站的真实链接,不使用公共WIFI也能避免。

如果说前面两种情况,用户还是有主动权的,第三种情况则完全被动,你把帐号密码交给了网站,如果网站保管不当,就会被黑客攻击,你的密码就会泄漏出去。业界通常把窃取网站密码数据库的行为称为“拖库”。

密码数据库一旦被攻陷,如果该网站的密码数据库未经加密,那你的密码就等同于裸露在黑客面前,之前爆出的“CSDN密码外泄门”就是明文储存密码,可即使网站做了加密处理,也同样有被破解的风险。

(窃取网站密码数据库 ↑)

通常来说,大多数网站的密码数据库都会使用 MD5 加密,MD5 加密是将用户密码散列成32位字符的方法进行加密,比如「123456」会被加散列为「E10ADC3949BA59ABBE56E057F20F883E」,这个过程是单向不可逆的,理论上是无法通过密文倒推出原始密码来。

但 MD5 只是一种哈希算法,严格来说它算不上是一种加密算法。因此 MD5 破解难不倒黑客,一些经常被人们使用的密码,比如 123456,黑客们就会对这些密码进行枚举破解,并把得到密文做成一个索引表,由此来反推原始密码,这个索引表也被称之为“彩虹表”。业界通常把黑客破解密码数据库的行为叫做“洗库”。

在很多 MD5 解密查询的网站上(比如 www.cmd5.com),如果你的密码很简单,加密后的 MD5 密文都能反查出原始密码来。

MD5解密

(MD5解密 ↑)

你可能会问了,这是不是意味着所有网站的密码数据库都不安全了呢?并不是的,有社会责任担当的网站都会使用 MD5+Salt (俗称加盐)的方法来进行双重加密,其过程为:MD5( MD5 ( 你的密码 ) + Salt )

就是将你的密码算出一个MD5值,接着会加上一个 Salt 随机数,然后再得出一个新的MD5值,这样的处理可以大大增高安全性。一些网站还会使用 SHA-256、SHA-512、bcrypt 等安全性更高的加密方式,但对于大部分中小网站来说,MD5+Salt 已经足够安全,除非你犯了下面两个错误。

二、你的密码被盗的原因是什么?

你的密码之所以被盗,简单来说,是因为:密码太简单 + 多个网站使用同样的密码。

密码太简单的安全隐患是显而易见的,黑客非常容易就能破解你的密码,从而“洗库”成功。国外有一家叫 SplashData 的网站,每年都会从已遭泄漏的密码数据中取样分析出一个“最差密码”的排行榜来。结尾不出意外,「123456」和「password」继续蝉联了榜单的第一二名,其他的密码也主要是单词和数字序列,都是易记但烂大街的密码。

2018最差密码排行榜

2018最差密码排行榜 ↑)

密码被盗的另外一个重要原因,是在多个网站上使用同样的密码。

这就好比一把钥匙可以开很多扇门。如果某个网站的密码数据库泄漏了,又或者黑客们先找一些容易攻破的网站下手,得到这些网站的密码数据库,然后黑客们就会拿着你在这些网站上的帐号密码,去其他的网站上测试登录,业界把这个行为称之为“撞库”。

多个网站使用同样的密码

多个网站使用同样的密码 ↑)

在黑市市场里,黑客还会将破解的密码数据库出售或者互换,久而久之形成的“社工库”会非常庞大,撞库成功的几率就会非常高,你的密码被盗也就不奇怪了。

黑客活动环节

黑客活动环节 ↑)

三、如何让保障你的密码安全?

想要保障密码的安全,不被黑客攻击,我们就需要使用复杂密码来防止洗库。为了防止撞库,我们就要对密码进行分级,在不同网站使用不同的密码

1,使用复杂密码。

密码的强度与密码长度、字符范围、随机性相关。密码长度自然是越长强度越高,8位是基本的要求。字符范围是指是否包括大写字母、小写字母、数字和特殊字符,每增加一种字符,密码强度就会成几何倍数增加。随机性指的是密码不具有明显的特征,比如 123456,password,iloveyou 这类密码。

在网站 HowSecureIsMyPassword 中测试 123456asd 、123456asdF、123456asdF! 的暴力破解难度分别为 42分钟、8个月和400年。

howsecureismypassword

(42分钟暴力破解密码 123456asd ↑)


2,密码分级,在不同网站使用不同的密码。

对密码进行分级,在不同网站使用不同的密码最大的好处是,即使 A 网站发生了密码泄漏,我们在 B 网站上的密码也不受影响。根据密码的使用场景,我们可以把密码分为三个级别:财产级密码、重要级密码、一般性密码。

财产级密码:
与财产相关的密码。通常只能用数字做为密码,比如银行卡密码、支付密码、手机PIN码、保险箱密码等。
重要级密码
与重要隐私相关的密码。比如邮箱、门户网站、社交网站、购物网站、密码管理工具主密码、加密文件密码等。
一般性密码:
财产级和重要级密码之外的密码都可以归为这类。包括小众网站、小众论坛,临时帐号、共享帐号、宽带WIFI等。

密码分级

(密码分级 ↑)

四、如何让你的密码安全又好记?

为了保障密码的安全,人们通常会使用更长更复杂的密码,其结果是导致经常记不往密码,每次登录都要使用“找回密码”功能,这时人们又会开始转向于使用简单的密码,又会在多个网站上使用同样的密码,密码的安全性和易记性往往很难兼得。所以,密码管理,首先是策略的选择问题。

财产级密码,通常只有 6-8 位数字密码,简单不容易忘记,我们完全可以用大脑去记,即使忘记了也可以用身份证找回。只要别使用生日/电话做为密码就行,而且这类密码都有很强的防范机制,输入错误几次后就会锁定,还有短信提醒之类的。

一般性密码,通常是不怎么重要,即使丢失被盗也没啥大不了的密码。这就解释了为什么“最差密码排行榜”第 13 名会是"welcome",像是在和黑客隔空喊话,说你快来盗我的密码吧,因为这类密码没什么重要的。还有这类密码的防范措施通常较弱,黑客是能轻易破解的。

所以,对于这类一般性密码,我们完全可以使用一个通用的密码,比如 123456asdF

密码管理分级

(管理管理分级 ↑)

而我们真正需要管理的密码是重要级密码

重要级密码,通常是那些可以信任的大公司,这些大公司网站会有较强的密码保护机制,比如验证码登录,异地IP登录提醒,手机短信验证等。我们要做的就是,确保在这些网站上使用的是复杂密码,而且每个网站都不一样。而为了能轻松记住这些密码,我们可以设计一套密码规则:「基础密码 + 变化规则

1、选定一个基础密码。

选择一句对自己有意义又能容易记住的话,它可以是一句古诗,一段歌词,一句名人名言,又或者是你生编硬造的话,只要你能记住就行,然后取这句话的拼音或者英文单词首字母做为基本密码。比如“Nothing Gonna Change My Love For You”缩短为"ngcmlfy",又比如“人帅也要多读书”缩短为“rsyydds”。

我们以“高效方法论2019”转换为基础密码“gxffl2019”来举例。

2、变形这个基础密码。

密码的复杂度很重要,密码是否包含有大小写字母、数字、特殊符号的差别是巨大的。特殊符号因为没有意义,加入到密码中来会提高记忆难度,一个好的应对方法是:对原有密码里的字母进行变形,使用相似的特殊字符来替代部分字母。比如

字母变为特殊符号:
把 a 变成 @,b 变成 &,c 变成 (,h 变成 #,s 变成 $,l 变成 !,x 变成 * 等。

如果密码中有数字序列,也会导致密码有明显的特征,比如 2019 代表的就是年份,应对方法是:对原有密码里的数字进行变形,使用字母来替代部分数字。比如

数字变为字母:
把 2 变成 z,3 变成 e,4 变成 a,5 变成 s,7 变成 t,9 变成 g 等。(3,4,7 与大写字母 E,A,T 相似)

基础密码转换过程:
高效方法论2019 --> gxffl2019 --> g*ff!2019--> g*ff!z01g

3、基础密码加入网站标识。

取网站域名的第1、2位字母和第3、4位字母,分别加入到基础密码的开头和结尾
比如 baidu.com 就是 bag*ff!z01gid,google.com 就是 gog*ff!z01gog。

接着使用驼峰式大小写,把密码的第 2 位字母和倒数第 2 位字母变成大写字母,
也就是 bAg*ff!z01gId 和 gOg*ff!z01gOg。

基础密码转换过程:
高效方法论2019 --> gxffl2019 --> g*ff!2019 --> g*ff!z01g --> bag*ff!z01g9id --> bAg*ff!z01gId

密码转换

(基础密码转换过程 ↑)

到目前为止,我们就得到了一份可以应用于多个网站,看似乱码,但极为安全且容易记的密码清单了。

五、密码管理工具可以取代人工管理吗?

现在开始流行一种使用工具来做密码管理的方法,思路是将所有密码交由工具管理,我们只需要记住一个主密码,而且生成密码、记忆密码和填写密码都由工具来自动完成。比如有 Lastpass、KeePass 和 1PassWord。就安全性而言,这些密码管理工具鼓励使用随机密码,也有多个网站使用同样密码的测试提醒,配合 AES-256 的加密算法,完全没有破解的可能。

LastPass 是一款将密码保存在云端的密码管理工具,KeePass 则是将密码保存在本地,开源免费,但上手难度较大,1PassWord 可以说是前两者的结合体,综合了两者的优点,但价格较贵,价格大约需要20元一个月。总的来说,免费且易用的密码管理工具,LastPass 是目前更好的选择。

(LastPass ↑)

那把密码放在 LastPass 的服务器上安全吗?

答案是安全的。LastPass 的加密方法是把帐号和主密码通过算法得到一个值,然后再用个值去加密用户的各个密码,然后储存在服务器上。所以不用担心,黑客即使攻破了 LastPass 的服务器(有过被攻破的记录),因为无法破解数据库,黑客除了把你的密码数据库删除外,其他什么都做不了,况且 LastPass 加密解密的过程都是在本地进行。

那密码管理工具能完全取代人工管理密码吗?

答案是不能的。首先,密码管理工具都是要收费的,这类工具目前还不是一种基础性的工具。1PassWord 需要大约 20元一个月,KeePass 虽然免费,但上手难度高。LastPass 虽然也免费,但要在多个设备上同步就需要付费了,LastPass 的这种免费策略可以理解为一种变相的收费策略。

还有一个问题就是,在一些安全性要求高的网站,密码工具的自动填写功能会失效,也无法直接复制粘贴密码,这时你需要手动输入一长串随机的复杂字符,想必你一定会抓狂吧。

所以,使用基础密码变形为主,密码管理工具为辅的密码管理方法更为明智。


原文链接:https://www.runningcheese.com/password