提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      关于“密码”那些需要你知道的事
      发布时间:2020-04-24 阅读次数: 229 次

      01

      前言

      相信你总会看到这样的新闻:某某集团又发生了大规模数据泄露了、又有多少多少的用户信息被窃取原因竟是弱密码等等·……同时伴随着安全专家那千篇一律的建议:大家应该上点心了,赶紧把你们的密码都换掉,使用安全强度高一点的密码好不好。


      可能很多人都听过这种类似的建议,但抱着:这么多人都在用,怎么会偏偏攻击我又猜中我的密码呢,不存在、不存在的心态,真正愿意去修改自己密码的人寥寥无几。为什么?麻烦呗,复杂的密码用起来不方便也记不住,还不如用自己熟悉的密码。安全性?我的密码规则可只有我知道,才不会告诉你是某某的生日呢。但是你的密码真的安全吗,安全的密码应该怎么设,本期美创安全实验室将为大家介绍关于“密码“,那些你需要知道的事。


      02

      强密码?弱密码?

      目前密码普遍由:大小写字母、数字、特殊字符这三部分组成当年NIST主管Bill Burr撰写了一份名为NIST Special Publication 800-63的文档,文档中说当你仅仅只使用这三种类型的其中一种来创建你的密码,通常这会被认为是弱密码,而使用这三种中的两种,则可能会被认为是中等强度的密码,而如果你的密码中含有全部的三种类型则会被认为是一个强密码。


      但是这也不是绝对的,例如你使用一个“Pa55word!1“这样的密码,虽然满足了三种类型,但是依据现有的破解技术,很有可能在3天之内就被破译出来。但是如果你使用”correct horse battery staple“这种全由英文组成的摸不着头脑的短语,大约需要550年来破解!!!


      从上面的例子我们可以看出,强密码、弱密码的定义是很模糊的。满足了不同类型的密码依然有可能是弱密码,而采用单一类型的密码也有可能是强密码。其本质原因是什么呢,其实无论是弱密码还是强密码其区分的关键在于是否容易被攻破,如果是很容易的就被攻破的密码那么毫无疑问是弱密码,而那些很难被攻破的密码自然就是强密码了。


      可能这里很多人会有疑问,有人觉得越多人用的密码才算是弱密码,其实也正确,因为这跟我们宏观的感受有区别。我们认为那些大多数人都在用的,密码协会每年公布的那些top10的密码,甚至是黑客的密码字典上的密码才算是弱密码。这么说也没错,但跟我们的论点并不矛盾。因为这其中的逻辑是:一个密码的使用率越高导致这个密码越容易被攻破从而我们认为这个密码是弱密码。所以使用率并不是弱密码的决定因素,健壮性才是密码的决定性因子。那么健壮性又是怎么定义的呢,别急我们往下看。


      03

      密码的健壮性是什么?

      密码的健壮性是什么又是怎么定义的?其实这个问题还没有一个统一的标准答案,所以笔者在这里想从两方面交叉论证密码的健壮性究竟是什么。


      众所周知,现今的密码爆破采用的都是穷举法,即把所有可能出现的结果全都列举出来然后一一尝试,虽然效率慢但是在合适的策略下是十分有效的。就像某人说的:在圆周率里你能找到所有人的银行卡密码。因为我们每个人的密码最终是一定会被穷举出来的,而我们唯一能做的就是尽可能让自己的密码不那么容易被穷举出来,换句话说就是增加攻击者的攻击成本。因此,我们可以有这么一个合理推论:一个攻击成本很大的密码可能是健壮的,一个攻击成本低下的密码可能是不健壮的。


      目前我们所能使用的密码,其组成部分都是ASCII码表中的可显示字符,它包含了我们所有人密码的组成,从数字0~1,小写字母a~z,大写字母A~Z,以及一些可供选择的特殊字符加一起一共有95个。也就是说无论这个密码多长多复杂,总是这95个字符组成的。


      例如一个由N个纯数字组成的密码,可能包含的密码种类共:9 * 10^(N-1)个

      一个由N个数字加字母组成的密码,可能包含的密码种类共:61 * 62^(N-1)个

      而一个由N个大小写、数字加特殊字符组成的密码,可能包含的密码种类竟高达:94 * 95^(N-1)个





      可能你对上面的这个公式没什么太大的感觉,别急我们拿几个数字来说明一下。QQ密码的设置标准是8-16位,假设你的QQ密码是由8位随机纯数字组成的那么一共有9 * 10^7 = 90000000种可能,以当前计算机的算力水平(每秒进行253次组合运算)来计算大约需要355731秒 ≈ 4天左右的时间完全破译。而若是采用了大小写字母+数字+特殊字符完全随机的8位密码一共有 94 * 95^7 = 6564370583281250 种可能,而这需要大概

      25946128787672秒,这是什么概念,大约是80万年左右。。。。。。80万年,别说这个程序还在不在跑,连电脑存不存在都是个问题。


      好了,话题拉回正轨。上面的例子从某种程度上佐证了我们的推论,接下来我们换另一个角度继续验证这个推论是否正确。在信息论或者通信原理中有这么一个概念:信息熵。它是由著名大师香农提出来的。信息熵表示了一个信息的混乱程度,当一个信息的不确定性越大混乱程度也就越大,故而熵增;当一个信息的不确定性越小混乱程度也越小,故而熵减。


      看似十分拗口,但当我们把他拿到密码上就会清晰很多。一个密码的熵(以下简称密码熵)代表了该密码的混乱程度和不确定性。当密码熵较小时,我们说该密码的不确定性很小,很容易被猜解。当密码熵较大时,我们说该密码的不确定性很大,无法轻易猜解。因此,我们可以很轻易的得出下面的公式:


      S ∝ H(x)


      即密码强度S与密码熵H(x)成正比。而密码熵的大小同时也决定了一个密码被攻破可能性的大小。而密码被攻破可能性的大小又决定了一个密码的攻击成本的大小。绕了这么一大圈结论终于出来了,密码强度的大小与该密码的攻击成本成正比。换句话说:一个攻击成本很大的密码可能是健壮的,一个攻击成本低下的密码可能是不健壮的。


      04

      越复杂的密码越安全吗?

      复杂的密码越安全吗?可能看过上面几点的朋友应该会有这样的疑问,因为这貌似又是一个直观上的感受。好像我设了一个我自己都记不住的复杂密码就一定安全了。很遗憾答案是否定的。


      通过第三点我们可以达成一个基本没什么争议的观点:攻击成本是对密码安全性最直观的反馈。我们说到一个密码的健壮性与密码熵有关,那么熵又跟什么有关呢?想想一个密码的组成,答案大致就清楚了。密码熵最直接的两个因子:长度(Length)和复杂度(Complexity)。那么密码熵究竟该如何计算呢?首先我们给出密码熵的计算公式:


      H = L * log N


      其中L表示密码的长度,log N表示密码的复杂度。一个由纯数字组成的密码复杂度为log 10≈3.3219,因为他包含10种可能的取值;由三种类型组成的密码复杂度为log 95≈6.5699,包含了所有可能取值。详细的log N取值如下图:



      所以我们可以看出,在都满足特殊字符、大小写字母、数字组成的密码中,密码强度是与长度成正比关系,而与复杂度无关。因为log N = log 95 ≈ 6.5699是一个固定的值。但是当一个由纯数字组成的密码与标准强密码做对比的时候,纯数字密码的强度H = 3.3219 * L;标准强密码的强度H = 6.5699 * L;这其中大概有两倍的差距。什么意思?举个简单的例子来说。


      一个8位标准强密码与一个16位纯密码的强度几乎相同。

      一个8位数字弱密码与一个8位随机数密码的强度几乎相同。


      因此我们可以得出,密码的强度在组成密码的种类相同的情况下取决于长度,在长度相同的情况下取决于组成密码的种类。这其中大概是两倍的关系。简而言之,当一个密码的长度越长且种类数多越安全。所以,我们建议:你的密码能设多长就设多长。


      05

      你的密码规则真的安全吗?

      可能很多人觉得,自己的密码生成规则只有自己知道,别人怎么可能猜得出来呢。最近,一个针对美欧亚网络用户的调查就狠狠打了这些人的脸。在调查中显示,47%的受访者在密码中使用了自己的姓氏或姓名缩写;42%的密码包含具有特殊意义的日期或数字;还有26%的用了家里宠物的名字。要知道,以上所有的信息都可以在你的社交媒体或某个熟人的口中轻易获得。所以绝对不要觉得自己的规则无懈可击。


      另外也请不要重复使用密码,在该调查中还显示只有5%的受访者是真的不知道一个安全的密码需要包括的元素,剩下的绝大多数人都知道安全的密码应该同时包括大、小写字母,数字和特殊符号。此外,有91%的受访者知道重复使用密码会带来一定的风险,但其中61%的人依旧多次使用相同或者类似的密码,其中又有超过一半(55%)的受访人在完全知道密码泄露后果的情况下,还在继续使用相同的密码。


      那么究竟怎样的密码设置策略算是一个优秀的策略呢。互联网上的一个网站中有一篇文

      章提出了一些密码设置上的参考建议,里面提到“用统一规则记住多个不同密码”是一个不错的选择. 毕竟记住一个规则比记住一串杂乱无序的字符要容易多了,也可以实现“一把钥匙开一扇门” 的策略。 


      例如,你的gmail邮箱是zhangsan@gmail.com那我们可以设置如下的密码生成策略:密码 = (小写用户名缩写)+ (用户名长度)+ 【#】+(大写网站标识符)+(大写用户名缩写)+(用户名长度)+【.】+(小写网站标识符)因此你的密码就变成了:zs8#GMZS8.gm





       最后想请读者弄清楚,万事没有绝对,一个优秀的密码可以帮你尽可能的降低风险,但它永远不可能将风险化为0。结尾附上一则网络上的小漫画,请大家开心一笑的同时,继续关注美创第59号安全实验室。我们下期再见!


      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部