关于密码泄露,相信很多人都会有各种深刻的教训。阿卡自己在进行各种应用时,也有过密码泄露的时候,比如很多年前玩RO就被盗了号……所以我们必须得想:密码作为一种最原始、最广泛使用的安全手段,到底应该如何设置?什么样的密码才是安全的?
这次我们就来简单普及一些为什么密码会泄露,什么样的密码才是最安全的。虽然不算新东西,但是的确是有用的东西,大家有兴趣或者曾经深受其害的话,不妨收藏一下!
密码是如何泄露的?
要知道自己密码是如何泄露的,就要知道自己的密码是放在什么地方的……一般而言,本地、传输和服务器端,就是你存放密码的三个地方,所以密码泄露被盗号,多半就是这三个地方出了问题!
本地泄露
本地泄露的可能通常是被盗的最大因素。因为本地泄露的方式实在太多了!常见的就是中毒或者木马。在你的设备中病毒后,有些病毒只会在后台监控着你键盘上,然后发送给黑客,你的密码就被盗了……这种在网游和金融端是非常常见的!
还有一种是伪造,伪造在 Android 平台上特别常见。比如有人开放了和支付宝一模一样的假平台,如果用户不知道点进去,将自己的密码输入,那对方就知道你的支付宝账号和密码了……我们近年来在新闻上行多次看到这种钓鱼行为,小白们上当的不在少数!
对于本地泄露,最好的办法就是不在公共或有潜在安全风险的设备上进行密码操作,最好别对手机越狱或者Root,同时别装未知源的APP。
传输过程泄露
即使你防护做得很好,本地的电脑和手机都很安全,如果密码还是泄漏的话,那么很可能是传输过程中泄露的,也就是你输入密码进行验证时,在这个过程出了一些问题。
比如很多网站在你登录的时候,是采用明文传输,看似加密的过程中,其实你的用户名和密码都已经显露了出来,这些加密普通人可能看不懂,但是对于黑客来说,这些加密都是可破解的,显示出原有的信息并不难。这种密码泄露常见在一些不安全的网络环境中。
此外,还有一些网站根本就采取不加密的措施,这下在传输过程中,用户所有信息都可能被黑客拦截。现在国外很多网站都强制使用了加密Https协议,而国内很多还是用Http协议,两者的区别就是是否使用了加密传输,安全性能也可见一斑了。
传输过程泄露密码很麻烦,也不好防备。推荐大家尽量不要在不安全的网络环境中上网,比如一些公共WiFi。如果遇到网站问题,尽量使用加密型网站,检查网站证书是否安全(系统会提示)。
服务器端泄露
本地泄露和传输过程泄露稍微好一些,但是服务器端泄露密码,作为用户的你就有点恼火了,因为这种对方出问题坑爹的事儿,很多时候作为客户端这边你的,是毫无办法的。
常见的有两种,一种是服务器端采用明文保存密码。比如你的密码是ABC,服务器端那边也明文用ABC保存,这样有人如果攻击服务器端,你的用户名和密码全部就赤裸裸地被黑客搞定了!唔,不要以为这些厂商都是聪明人,其实他们智商不低,就是懒而已,这种明文保存密码在服务器端的厂商不要太多……大家有兴趣去查查2011年轰动全球的CSDN泄露事件!
另外一种则是加密泄露。加密泄露其实也分好几种,比如说客户的密码是ABC,然后厂商就用了一套简单规则来定义,把A对应1,B对应2,C对应3,这样在服务器端,用户的密码显示为123,是不是看似没这么懒了?但是黑客可不是傻瓜啊,这么弱智的密码规则很容易破解!
好吧,厂商说这次我聪明了,也不懒了,我用哈希不可逆的加密。是的,这种加密不可能倒推,但是黑客也自己制定了一个彩虹暴力破解法,一个彩虹图表一共64GB的容量,具体原理不用多说,在现代机器计算能力如此强之际,黑客如果觉得有价值,完全可以靠暴力破解花时间搞定用户的密码……
嗯,遇到这种密码泄露的事儿怎么办呢?当然是原谅厂商了,顺便也原谅一下自己,谁让你自己这么倒霉遇到了这么懒的厂商和这么坚持的黑客呢……
怎么设置密码才安全?
使用密码位数、大小写和特殊符号简单而言,密码越复杂,安全程度越高,当然如果中了病毒那也没辙,所以我们说安全的密码,至少要有一个安全的本地环境吧,没事多杀杀毒检查检查,平时开着防护机制还是很关键的。
建议大家的密码尽量保持在 14 位以上、存在大小写字母和数字、并混杂有特殊符号(理论上特殊符号当然是越不常见的越好)。简单密码虽然好记,但是真心不安全(虽然这样说,阿卡自己还是懒啊……),即使服务器端中遭到暴力破解,你密码越复杂,破解所消耗的精力和成本就越高,说不定黑客没耐心就放弃你了呢?
在密码中加入不同网站特征值一般而言,我们的密码都是通用的,比如说A站和B站基本都是一个密码,这个很好理解,我们很难在每一个不同的平台上都更换一个新的账号和密码。但是这样显然很不安全,怎么办呢?
这时可以考虑一个非常简单的策略:使用一个通用的基础密码,针对不同的网站,在前后或中间插入对应该网站的一个特殊值。比如我们经常的密码是“阿卡”,那么在A站就用“帅哥阿卡”当密码,在B站就用“阿卡帅哥”当密码,这样安全性就提升了,同时还比较好记
当然特征值随便用户选了,最好选一个你自己容易记住,但是又不显得那么简单的特征值。
直接生成随机字符串不知道到底设什么样的密码好?其实还有一个很简单的办法,像 Safari、Chrome 等浏览器就会在页面注册账号时智能地提供一个随机字符串作为密码选项。
好处就是,不需要考虑自己怎么去想密码,浏览器自动生成就可以了。不过缺点也很人恼火,如果你在不同的平台上登录,那是相当的麻烦,还要有一些备用的方案,要不让你登不上去也是很正常的。
采用验证机制
很多大型的互联网公司一般都提供了两步验证服务,如微软、Google、苹果、印象笔记等等。一旦开启了两步验证,只要是在非授信的设置上登录,除了常规的账号和密码外,网站还会要求你额外提供绑定手机的动态验证码,这样就确保了即使的密码泄露了,依然还有一道安全屏障阻碍黑客最终登录你的账号,保护你的数据财产安全。
此外谷歌还有专门的一套验证机制APP,非常复杂,非常麻烦,就算设定都很头疼,但是设定好了的确很有效,支持这套APP下的网站,除了登录要用户名和密码外,还必须输入APP随机生成的字符串,基本能做到自己的密码不会被泄露。阿卡自己在PT站MT上就试过,试了以后直接跪了……
定期更改密码
更改密码是所有手段中最轻松简单的,但是相对也是最重要的。因为密码泄露这个事儿,有的是可以预防的,但有的是你不可控的,比如说服务器端要真泄露了,黑客暴力破解了你的密码你也不知道……所以要有一个有忧患意识,没事改改密码总是好的。
比如阿卡没事就改改密码,平时存储几个密码,没事就改来改去,或许这种办法也不能保证自己的密码百分之百不泄露,但至少也给自己一点心理安慰不是?
怎样保证密码的安全性?
目前密码管理遇到的问题
密码被盗主要有几种情况:
1、 暴力破解、弱口令破解
2、心理、社会工程学猜解欺骗窥视
3、键盘记录、钓鱼网站等
4、多个网站通用一个密码,一个网站被黑客破解全部玩完
复杂的密码可以有效应对第一种情况,相对有效应对第二种情况,对第三种情况就是白搭。
对于第一种情况,只要够长(比如超过纤散御12位),暴力破解的难度就大的许多。
对于第二种情况,密码够长也可以极大增加难度。
对于第三种情况,只能认栽。
对于第四种情况,一个网站被攻破其他网站全部泄露,最近的jd用户信息泄露、优酷账号密码泄露等都是血淋淋的教训
所以尽量在设置不同平台密码是尽量不设置成一样。密码分级管理
第一级,绝密,银行帐号,支付宝帐号,社交网站帐号等。
第二级,机密,什么云同步啊,云笔记啊,购物网站等。
第三级,秘密,什么各种论坛啊,各种普通网站等。
2、一般人设置密码的套路分析:
使用QQ号、电话号码、银行卡号、电话卡号码、身份证等号码的前几位或者后几位加姓名、生日或者特殊符号作为密码。
使用长字段,只要长度达到一定程度,就算1234567890hahaha1234567890zuodasi1234567890这种密码也不怕被暴力破解,而输入1234567890就像解锁iPad一样只要半秒钟。
联想记忆法,唐诗记忆法、化学式记忆法、密码表记忆法….谈这个,就不得不谈当年程序员网站CSDN 600万密码被拖库后流传出来的神极密码:
『ppnn13%dkstFeb.1st』——娉娉袅袅十三余 豆蔻梢头二月初
Tree_0f0=sprintf(“2_Bird_ff0/a”) ——两个黄鹂鸣翠柳就等于
csbt34.ydhl12s——池上碧苔三四点,叶底黄鹂一两声可写成
for_n(@RenSheng)_n =”die” ——人生自古谁无死就是
while(1)Ape1Cry&&Ape2Cry——两岸猿声啼不住
对于第一种情况,这种密码是使用的最多,也是最好破解的。互联网上一个人的基本信息只值几分钱,破解密码的难度就是随机组合这些信息(去百度搜索下随便下载一个已经被攻破的密码库,看看他们都是什么样的密码就知道,其实每个人设置密码的思路都相差无几)。
对于第二种情况,密码够长也可以极大增加难度。但如何让自己大脑记着这种长密码是一个不小的问题。
对于第三种情况,联想记忆创造的密码是一定的生成规则的,这种密码也是相对难破解,同时也相对容易记忆;但实施起来有一定的难度,当密码设置完成后,一个星期后使用是否能记起来一个化学式、一句唐诗、一掘纤个密码表对应的规则也是一个问题。
下面是对目前市场上看见的密码管理工具的分析:
通过上面分析,可得到:
想使用免费的:
KeePass是不错的选择,密码
软件加密存储本地,代码开源扩展应用多。
想最简单好用:
Dashlane是毁岩最好的选择,多
端云同步,加强大的代填功能。
想做到极致安全:
极密盾K2是不错的选择,数据通过加密芯片加密存在极密盾设备中。从录入到使用,密码数据全部脱离客户端,永不出盾。
想使用付费又好用:
1password是不错的选择,用户口碑好,数据存本地,可自定义云同步,加强大的代填功能。
密码泄露事件频发,该如何防范?
针对于不同的网站,使用跟网站相关的组合密码比如liuxiao是你容易记忆的字母组合,那么对于京东你的密码组合就是liuxiaojd,对于淘宝你的密码组合就是liuxiaotb。相对于不同的网站,你的密码就是不一样的了。
定期小范围的更换密码
什么叫定期小范围的更换密码,比如你之前的密码叫liuxiaojd1,小范围的更改就变成了liuxiaojd2,这就防止你的密码由于经常更换记忆混乱的状况。
那么为什么这样就安全了?
这就需要从密码技术讲起
密码技术的基本思想是通过伪装信息,使未经授权者不能理解它的真实含义。所谓的伪装就是对数据进行一组可逆的数学变换。伪装前的原始数据称为明文,伪装后的数据称为密文,伪装的过程称为加羡袭密。加密在加密密钥的控制下进行。用于对数据加密的一组数学变换称为加密算法。发送者将明文的数据加密成密文,然后将密文数据送入通信网络传输或者存入计算机文件,而且只给合法的接收者分配密钥。合法接收者接收到密文之后,施行与加密变换相逆的变换,恢复出明文,这一过程称为解密,解密在解密密钥的控制下进行。用于解密的一组数学变换称为解密算法。
图中是加密和解密的示意图,通常明文用P表示,密文用C表示。加密函数E作用于P得到密文C,可以表示为
E(P) = C
相反的,解密函数D作用于C产生P,可以表示为
D(C) = P
先加密再解密的消息,原始的明文将被恢复出来,故有
D(E(P)) = P
加密时需要使用一个参数k,称此参数k为搏派败加密密钥。密钥k的可能取值范围叫做密钥空间。如果加密和解密运算都使用相同的密钥,或者加密密钥和解密密钥可以很容易地互相推导出来,这样的过程称为对称加密和解密运算,如图3.2所示。我们用k作为加/解密函数的下标,这样加/解密函数将变成
Ek(P) = C
Dk(C) = P
这些函数具有下基颤面的特性:
Dk (Ek (P)) = P
有些加密和解密运算使用不同的加密密钥和解密密钥,如图3.3所示,即加密密钥k1和解密密钥k2不同,且二者很难互相推导出来。这样的过程称为非对称加密和解密运算,即通常所谓的公钥加解密。在这种情况下有
Ek1(P) = C
Dk2(C) = P
Dk2 (Ek1 (P)) = P
网站上所存储的都是Ek(m)而你微小的改变,对于Ek(m)都是很大的不同。所以你打可以定期小部分修改,便于记忆还安全。