大数据告诉你什么样的密码最牢靠
你脑海中浮现出的第一个超级英雄是谁?从1到10你首先会想到哪个数字?最后一个问题,你会选择哪种鲜艳的色彩?快速想出答案,然后将它们组合成一个短语。
现在,轮到我们猜测这个密码了。
是Superman7red?不对不对。那是Batman30range?如果我们都能正确地猜到每个问题的答案,那是因为人类是可预知的。而这恰恰就是密码存在的问题。我们在选择这些密码时确实很小心谨慎,但跟已成产业规模且特意构建的密码破解软件相比,未免小巫见大巫。比如HashCat可以在一秒时间内猜测30万次密码(次数取决于哈希方式),因此即使你的密码是Hawkeye6yellow,也迟早会被破解。
密码之所以经常会被猜中,是因为我们很多人会想到显而易见的词语、数字并将它们简单组合。本文探索了这个概念,并借此了解当人们以特定的顺序组合词语、数字及(希望如此)符号时,大脑是如何运作的。
我们首先选择了两个数据集进行分析。
两个数据集,几个说明
第一个数据集我们称之为“Gmaildump”,它是2014年9月出现在俄罗斯比特币论坛上的500万个凭证。这些凭证似乎是Gmail账户(有一些是Yandex.ru),但经过进一步的调查发现,虽然其中的邮件地址多为有效的Gmail地址,但大多数明文密码或者老旧不再被使用或者密码跟邮箱地址不匹配。但WordPress.com重设了10万个账户并表示还有60万个账户存在风险。尽管这些数据是在几年时间里通过多种方式从多个地方收集起来的密码,但对于我们的学术研究来讲,丝毫没有问题。而且这些密码曾被Gmail账户拥有者使用过,即使不是他们自己在使用,并且鉴于98%的密码不再有效,我们可以安全地一探究竟。
我们利用这些数据集回答一些人口统计学的问题(尤其是与密码选择有关的性别及年龄问题)。我们从500万个邮件地址中提取出了包含名字及出生日期的地址。比如,如果邮件地址是John.Smith1984@gmail.com,那么我们就会解读为男性,出生于1984年。我们从500万个地址中解读出了48.5万个性别、22万个年龄。这时候,我们就应该想一个问题,“这些将名字跟出生日期包含在邮件地址中的人会选择跟别人不同的密码吗?”因为从理论上来讲答案有可能是肯定的。我们稍后分析。
如下,我们按照出生日期跟性别对用户进行了分类。
▲22万被攻陷凭证(按出生日期分类)
▲48.5万被攻陷凭证(按性别分类)
Gmail dump显示,或者至少是将名字跟/或出生日期包含在邮件地址中的人群多为80后男性。这可能是因为这些被攻陷网站的人口概况导致的。在这个dump中查找包含“+”标志(Gmail用户用来追踪站点对邮件地址的用途)的地址后发现,大量凭证来自File Dropper、eHarmony、以及Friendster。
我们的多数结果是通过第二个数据集收集到的,详情可参见安全咨询Mark Burnett的网站。这个数据集由100万个密码组成,它们是在几年的时间里从网络中搜刮到的。
我们不会花费太长时间来说明这个数据集的基础概念,因为之前已有不少人做过很多次这种工作。让我们看一下这1000万个数据中最为常用的50种密码。然后我们再讨论一些更加有趣的东西。
50种最常用的密码
我们可以发现,或者早就知道,这些最为常见的密码都是网站要求人们创建密码时,瞬间映入脑海的选择。这些密码极其容易记住而且对于字典攻击来说简直是小菜一碟。不过,现在使用这种密码的人比之前要少。用户有点意识到如何设置强密码的问题了。比如在文本后添加一两个数字就会让强度提高,是不是?
“我会添加一个数字让密码更安全。”
▲42万密码末尾中最常用的数字(0-99)
▲密码末尾最常用的数字(0-99)
▲密码末尾最不常用的数字(0-99)
在这1000万个密码中,几乎有50万密码(或42万密码,8.4%)以0-99的数字结尾。其中超过1/5的人选择了1。或许他们认为1最容易记住。也可能是因为网站要求在已选词语之后添加一个数字做出的即时反应。其他最常见的数字是2、3、12(这里的“12”是1跟2的组合,而不是单独一个数字)、7等等。有研究显示,当有人让你说出1到10中的一个数字时,多数人会说3跟7,而且人们似乎对质数的选择存在偏好。这可能行得通。但也有可能人们是为了用这些个位数替代曾使用过且还想继续使用的密码,这样就不会“攻陷”在其他网站上的凭证了。
尽管存在争议,但你可以想想,一个密码破解高手可以轻易将一个数字或几千个数字添加到字典里或者蛮力破解方式中。所以,一个密码的强度就取决于它的熵。
评估密码熵
简单来说,密码的熵越大,强度就越大。熵会随着密码长度及字符变化而增加。然而,虽然字符变化确实会影响熵的分值(以及密码被猜到的难度),但密码的长度更为重要。这是因为随着密码长度增加,数字的组合方式会呈指数式增长,因此也就难以被猜到。
▲48.5万密码长度的分类
Gmail dump中的密码平均长度为8个字符(如password),而且男性与女性在密码平均长度的选择上没有太大差别。
▲48.5万个男性跟女性密码的熵
从密码熵的角度来讲,Gmaildump的密码平均熵为21.6。而男性跟女性在这一点上的区别也非常微小。但熵为0的密码要多于熵超过60的密码。
这些示例密码以一两个不同字符区分作为熵的范围。一般来讲,熵会随着长度的变化而变化,不过添加数字、大写字母及符号也会增加字符的范围。
那么,熵是如何计算出来的?方法很多,而且效果各异。不过最为基本的假设是,只能通过尝试字符的每种组合才会猜到密码。但一种更加聪明的方法意识到人类对模式情有独钟,所以针对人类的多数密码进行了某些假设。随后基于这些假设制定一些猜测密码的规则,从从而加快破解密码的速度。这些方法都很聪明。它们都是由Dan Wheeler创建的Zxcvbn而来。
简单来说,熵构建了一种“知识”,可以知道人们是如何在潜意识中将密码中的模式包含到一个密码破解高手需要确定这些模式的猜测中。比如,password的熵为37.6位。但Zxcvbn给出的分数是0(最低最差劲的熵分数),因为密码破解者所用的词汇表包含password这个词。另外Zxcvbn也给另外一些常用密码打分:第一眼看上去,这些密码是随机设置的,但熵值为0。比如qaz2wsx(在最常用的密码中排名30)看起来非常具有随机性是吧?但实际上它是一种键盘模式(从一个键重复“走”到另一个键很容易)。而Zxcvbn本身也是通过这种模式命名的。
我们从1000万个密码数据集中提取出了20中最常见的键盘模式,但并未包含123456等数字模式,因为这些模式只是一种键盘步法,而且它们已经占据最常用密码列表的半壁江山,在这里我们来看看更有趣的密码。
在这20种键盘模式中,有19种如你所想的那样可被猜到,除了最后一个Adgjmptw。你能猜到为什么会把它列到最常用的模式中吗?
试试智能手机上从2到9的拨号薄,将每个键盘数字对应的第一个字母进行组合。这个模式引出一个有趣的问题:随着更多的人会通过触摸设备创建密码让选择某些字符比使用普通的键盘更难,密码选择是如何改变的呢?
当然,对于键盘模式来说,尤其是上述键盘模式对于密码破解高手来讲并非难事。但多数人并不会使用键盘模式,而是会使用古典的且经常不安全的方式即随机词语来作为密码。
▲1000万密码中最常见的词语选择
现在,你知道为什么文章开头会猜Batman及Superman了吧:它们是这1000万密码数据集中最常用的超级英雄名字。但上述列表中反映出的一个重要事实是,有时候很难知道人们在选择密码时是基于什么考虑。比如在“颜色”列表中,black有时候可能指的是姓氏Black。为了减少这个问题的困扰,我们在统计上述词语频率时,对每个列表都进行了单独的研究。比如,对于“颜色”来说,只有当密码以颜色开头并且以数字或记号结尾时,我们才会统计进来。这样就会避免在Alfred中统计red等。通过这种方式意味着我们错过了很多合法的颜色名称,但知道上面的列表只包含“限定词”似乎更好。其它列表中也有各自的规则。比如,只有当所使用的名词跟动词出现在我们平常使用的词语中排名前1000时,我们才会统计它们,否则这些列表会充满诸如password等名词以及love等动词了。
并不是说love这个词不好,其实人们以惊人的频率使用它作为密码的一部分。我们在1000万个密码中发现了4万次,在500万个Gmail凭证中也发现很多。而且通过分析用户名时,80后及90后使用的次数要比其他年代的人多。而且女性使用love的频率是男性的两倍。
▲按出生年代划分的“Love”使用情况
土豪、高端人士们都使用哪些密码?
Mark Burnett指出,密码泄露极其严重。我们感到好奇的是,Gmail数据是如何确定高级别人群的呢?换句话说,这些被公开的密码是谁的?我们通过Full Contact的人物API提取出一个邮件地址列表并且通过几家主要的社交网络站点如Twitter、LinkedIn及Google+运行这些地址。此外,它还提供了一些所找到的数据点如年龄、性别及职业。
我们已经知道可从Gmaildump中找到一些高级别人士。不过我们没有想到Full Contact会列出这么多人。
在我们所找到的7.8万个匹配中,我们发现了上千名高级别人士。我们选择了最有名的40位。有几个点需要注意:
1、我们有意没有指出这些人的名字。2、公司logo只是表示这些人现在的工作地点,但不意味着他们在之前单位工作时也用了相同的密码。3、我们无法知道这些密码最初的用途。可能是他们自己的个人Gmail密码,但作为File Dropper等网站密码的可能性更大。因此,许多弱密码并不意味着这些人现在在工作场所或其他场所也使用这些密码。
谷歌确认当这些列表被公布时,少于2%(10万)的密码可能跟所使用的Gmail地址匹配。而且所有受影响的账户所有者被要求重设密码。换句话说,下面的密码虽然具有教育意义,但不再被使用。他们可能换了其它密码,希望这些密码更安全吧。
然而,如果这些密码没有被重设,就更该引起人们的重视了。一些研究指出许多人会在不同的服务中使用相同的密码。而且鉴于下表涉及一些CEO、很多记者、一名Justin Bieber及Ariana Grande天才管理公司的身居高位的人士,这个dump可能会引发一些关注。希望不会出现这种情况,不过现在这种情况也不会出现了。
从上面密码中可看到,如果使用离线破解进程,很多密码都非常容易猜到。最强的密码属于一名GitHub开发人员
(ns8vfpobzmx098bf4co),熵为96,密码看起来太具有随机性了,可能是用随机密码生成器或密码管理器生成的。最弱的密码属于IBM一名高级管理(123456),看起来太基础,可能是在某个地方随机注册设置的。其它很多人都在复杂度及简单度上做了平衡,看得出公司所有人非常重视密码安全问题。
在文末,我们来说说几个很有趣的点:
美国国务院处长使用linco1n(Lincoln)作为密码,而Huffington Post的作家使用trustno1作为密码。更有意思的是,这么多高级别人士所做的跟我们当中的很多人没有什么两样:将姓名、出生日期、简单词语跟一组数字组合成一个糟糕的密码。但我们觉得这也是情有可原的。即使是美国总统奥巴马最近也承认自己曾使用1234567作为密码。熵值更高的一个密码是PoTuS.1776。然而对于一个聪明的破解者来说,这也有点太显而易见了。
那么,你的密码如何呢?在读这篇文章的时候,你可能会想到自己,“会有人猜到我的网上银行密码、邮件密码或博客密码吗?”如果你使用的是大的邮件提供商如Gmail,你不必太担心你的密码会被蛮力破解。Gmail会立即阻止非法尝试行为。你的在线银行密码也得到了类似的保护。但是如果你有博客,情况就复杂了,因为攻击者会有更多方法来入侵,所以每个人都应该采取主动防御措施。