我们该如何保护自己的密码?

我们的信息在互联网的数据库究竟是如何存储的,我们又该如何保护自己的信息和隐私呢?

最近某大学生常用学习软件“XX通”疑似出现了用户数据泄露,可能有超过1.7亿条信息被泄露,包括学校、姓名、手机号、学号、邮箱等等。

这事一出,官方马上出来辟谣。但所谓的辟谣也只是说“我们排查了十多个小时,没发现明确的用户泄露”。另外还说“我们的密码不会明文存储,所以密码不会泄露”。

这两点解释都挺,幽默的。

排查十个小时没有发现的另一个说法就是,虽然你的信息可能泄露了,但没有证据显示是我们泄露的。

至于密码不会明文存储这点就更可笑了,没有任何一个公司会把用户的密码进行明文存储,这点拉出来说没有任何意义。

如果这种事情发生在一个互联网公司,舆论压力远远会比现在要高得多。

fc16fcbda70aa1cacd15b072e452848a.png

1. 我们的信息是如何被存储的?

首先我们来看下,自己的信息究竟在那些软件中是如何存储的呢?

基本上,用户的数据分为三种。第一种是明文存储,第二种是加密存储,第三种是不准存储。

明文存储的信息比如我们的昵称、用户名、头像等,这些信息是对外公开的,因此可以明文存储。

加密存储的信息比如我们的密码,这些信息不仅对外部是隐藏的,内部员工也无法看到,一般加密的方式就是使用哈希的方式,通过某种算法,将你的密码转换成另一组字符串。

这种算法的最大特点有两个,一个是单向性,也就是说几乎不可能从加密后的结果反推出原密码;另一个是低碰撞性,简单来说就是两个不同的原密码,哪怕只是一个字符不同,生成的结果也是差距极大的,比如我们使用md5加密算法,用两个相似的字符串进行加密,可以发现得到的结果千差万别。

ebdc5f3f1693c3581dc72e94b1edc8c0.png

可以看到尽管只有最后一个字符不同,结果也大不相同。

不准存储的信息比如身份证、生物识别(用于人脸识别)结果,个人信息保护法明确规定不允许存储非必要信息,比如身份证,我们玩游戏常见的未成年人防沉迷认证,实际上也是将你的身份信息请求公安部提供的接口进行查询,作为游戏公司本身是毫无理由存储你的身份证信息的。同样,我们做人脸识别使用的生物识别信息也是这样,没有足够的必要性,是不允许处理和存储的。

这么一看,我们需要担心的就是加密存储的这些信息,究竟是如何被窃取的呢?

23b1bfd43930860b9c4d03d8d2d71f24.png

2. 加密信息是如何被窃取的?

攻击者获取密码的过程,从简单到复杂有不同的方法。

第一种,瞎猜。

瞎猜也叫暴力破解法,比如一个网站要求你的密码为8位数字+字母,好,那我就开始猜了,第一个密码是00000000,试一试,不对,那我再试试00000001。

就这样一个一个试,理论上来说,总会有一天能试出来你的密码。

暴力破解的问题就是随着现在密码长度的增加,计算难度指数级上涨,再加上一些软件设置的输错3次等待10分钟,或者输错1次就要输入验证码,导致暴力破解几乎没办法用来获取你的密码。

当然,用来破解加密压缩包和wifi密码还是可以的。

第二种,有根据地猜。

有些人的密码设置有一定规律,比如使用自己的名字缩写+手机号,或者是生日等。在攻击者掌握了你一定的信息之后,构造一些你可能会用到的密码。

第三种,拖库,直接获取数据库的信息。

攻击者会尝试通过一些手段,直接连接到网站的数据库,获取用户的所有信息。

当然,并不是每次信息泄露都是通过黑客手段,有时候内部员工也会造成信息泄露,比如华住酒店程序员把公司代码连带着数据库的配置信息直接上传到了github,你这就相当于开着自己家的门然后拿着喇叭吆喝人进来偷。最近日本也有一件事,日本兵库县尼崎市称,装有该市46万余人个人信息的U盘21日丢失,其中包含所有市民的姓名、住址、出生年月及交税金额等。

e937b9488982c8f4b70b0be8814050f9.png

一般情况下,由于网站存储的用户密码是加密后的,所以原始的加密信息并没有作用。举个例子,你的密码设置为“123456”,对应的加密密文是“abcdefg”,即便攻击者知道了你的密文,也没办法用密文的密码登陆你的账户,而且由于我们前面讲了,加密算法具有单向性,他用密文也还原不出你的明文密码。

093b5961fa2ebcf186b5d070edd021ca.png

但是,不能直接还原不代表不能间接还原。

我们能想到的最简单的办法就是字典法,常用的加密算法就那几个,比如常见的md5、sha1等都是公开的。事实上就像我们前面讲的,加密算法的安全性不是其算法本身是保密的,而是即便算法是公开的,你用密文也还原不出明文。

不过呢,虽然我用这个公开的加密方式还原不出明文信息,但我可以一个一个试啊,比如说我用md5加密算法,加密“12345”得到一个密文“abcde”,再加密“23456”得到一个密文“bcdef”,我把大量这样的结果存到数据库里面,等拿到用户的密文后,拿密文反查有没有对应的明文就可以了。

字典法的缺点就是需要耗费大量的存储空间,因此又出现了彩虹表技术,可以看作是对字典法的进一步优化,降低了构建字典需要的存储空间。

8e831f5f911ff5b75dd61f367394ae5d.png

3. 我们该如何保护自己的密码不被窃取?

上面说的攻击方式,成功的概率大多取决于被攻击网站的安全防护措施,但我们没办法寄希望于他人,就像你怎么会想到有人居然能把自己公司的数据库信息传到github呢?所以最重要的还是,自己保护自己。

至少,不要因为低级的错误,导致密码泄露。

那么我们该如何保护自己的密码呢?这里教你几招。

第一,不要用自己的其他公开信息设置密码,比如生日、手机号甚至身份证。即便要用,你可以尝试做一些变换。比如我自己的银行卡密码是用手机号设置的,但是并不是我自己的,而且我用了多个人的手机号,分别取其中的一些数字,再做一些变换,得到了一个数字来作为我的密码。

那有人会说,你这样谁能记得住啊?没错,一开始我也记不住,但用了几次之后,就记得了,现在我都不记得当时的变换是什么了,但我记得最后的密码。

第二,尽量不要给不必要的网站提供不必要的信息。举个例子,很多游戏需要你提供身份证来做未成年认证,一些我不经常玩的游戏,我会使用一些网上公开的身份证信息来代替我自己的信息进行输入,因为我不能确保这些网站会不会保存我的身份证信息。

第三,尽量不要在多个网站使用同一个密码。一个密码确实好记,但一旦有一个网站的账号信息发生泄露,你的其他账号也相当于都泄露了,要知道,并不是每个网站或app都有设备登陆校验或者手机验证码的。我建议你可以把不重要的网站用一个密码,重要的网站分别设置密码。或者也采用一定的变换,比如你自己的原始密码是“123”,你的支付宝密码就可以设置为“zhifubao123”,而你的微信密码就可以设置为“weixin123”,当然,这个变换方式你自己知道就好。

最后,还是那句话,任何人都不值得相信,任何密码都可能泄露,谨慎地保护我们自己的信息安全,对自己负责才是最重要的。

猜你喜欢

转载自blog.csdn.net/yhan_shen/article/details/125494847