解密千万密码:透过密码看人性

对于密码,我们已经知道了不少。比如,多数密码短小、简单、且容易破解。但我们对一个人选择某个密码的心理原因却所知甚少。在本文中,我们分析了包括企业CEO、科学家在内的1000万人们的密码选择,来看看密码背后所揭示的意义。

1000万个小窗口

你脑海中浮现出的第一个超级英雄是谁?从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会立即阻止非法尝试行为。你的在线银行密码也得到了类似的保护。但是如果你有博客,情况就复杂了,因为攻击者会有更多方法来入侵,所以每个人都应该采取主动防御措施。

原文发布时间为:2015-03-29

本文来自合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

时间: 2024-09-20 17:19:07

解密千万密码:透过密码看人性的相关文章

透过现象看本质:做可控的SEO

笔者一直很喜欢看国平老师的文章,国平老师的文章都是用一些最基本的SEO理论来指导学习SEO,而不是像某些大师那样华而不实.他的一家之言我从头到尾也已经拜读过好几遍了,每次都能从中学到很多简单确实用的SEO知识,当中我最喜欢国平老师的一个观点就是:做可控的SEO.这就要求我们seoer在做SEO时要透过现象看本质,做"可控的SEO".那么我们应该怎样做到SEO的可控性呢,且听笔者一一道来. 首先我想在这里先给大家推荐两本教材,<百度搜索引擎优化指南>和<谷歌搜索引擎优化

实现修改密码时密码框显示保存到cookie的密码

 修改密码时密码框显示保存到cookie的密码,只要在input框中加入AUTOCOMPLETE="OFF" 即可,感兴趣的朋友可以了解下 只要在input框中加入AUTOCOMPLETE="OFF" 即可  代码如下: <input name="pwd" id="password" type="password" class=" required" AUTOCOMPLETE=&q

vc/c++-求!智能IC卡及智能密码钥匙密码应用接口规范功能实现代码

问题描述 求!智能IC卡及智能密码钥匙密码应用接口规范功能实现代码 智能IC卡及智能密码钥匙密码应用接口规范功能实现代码 vc /win32 C++封装 解决方案 http://download.csdn.net/detail/lj890125/4166701

java编程中我想用显示密码把密码显示出来了然而登录却有错 求解 急用 (我想了一天实在没法了)

问题描述 java编程中我想用显示密码把密码显示出来了然而登录却有错 求解 急用 (我想了一天实在没法了) import javax.swing.*; import java.awt.*; import java.awt.event.*; public class weixin extends JFrame implements ActionListener { JPanel panmain; //面板 JLabel lblname,lblpassword,lblphoto; //标签 JLab

透过ESB看清SOA架构实施的真谛

本文讲的是透过ESB看清SOA架构实施的真谛,[IT168 资讯]随着SOA概念的应声落地,ESB蜂拥而入,虽然它不是一个新的名词但它给人的感觉是既时髦又迷糊,它似乎正在被赋予许多自己不应承载的内容.究竟什么才是ESB?为什么与SOA有着千丝万缕的关系?CIO又如何透过ESB掌控SOA实施? ESB和SOA的关系 关于ESB的概念,网络的报道铺天盖地,专家的的解释也是众说纷纭,ESB一直没有一个准确的定义,就像SOA问世之初到底是框架还是思想一样被人们议来议去,以笔者的个人理解认为ESB是连接人

android-安卓智能判断密码框密码强度(求解)

问题描述 安卓智能判断密码框密码强度(求解) 智能判断密码框密码强度 求解 求条件.想法.正则表达式最好 下面附图 解决方案 密码强度判断判断密码强度判断密码强度 解决方案二: 判断一下密码的构成,根据密码的构成方式 进行强弱等级的判断 解决方案三: 实时检查输入,判断是否符合某一项预设的密码强度条件,符合就设置标记,然后综合已经设置的标记,显示当前的强度信息 解决方案四: textview内容变化时检查,可以从下面几个方面考虑:1.字符数.2.字母,数字,特殊符号有没有(可以转换成ascii编

站在巨人的肩膀上 透过谷歌看互联网未来

2011年8月中旬125亿美元收购摩托罗拉的惊天之举,9月又度过了13岁生日,谷歌在其发展的第13年里带来了不少惊喜,收购摩托罗拉之后谷歌如何发展?谷歌在经历13年发展,其今后投资发展的领域优势如何,http://www.aliyun.com/zixun/aggregation/6298.html">互联网发展已有40余年,未来的互联网行业又是如何?在此,我们来借助谷歌这一互联网行业巨头的肩膀,看看谷歌这家新兴的互联网公司,投资涉足的领域,从中我们也可以大体预测互联网未来发展的方向. 站在

ASP.NET MVC5网站开发之添加\删除\重置密码\修改密码\列表浏览管理员篇2(六)_实用技巧

一.安装插件.  展示层前端框架以Bootstrap为主,因为Bootstrap的js功能较弱,这里添加一些插件作补充.其实很多js插件可以通过NuGet安装,只是NuGet安装时添加的内容较多,不如自己复制来的干净,所以这里所有的插件都是下载然后复制到项目中.  1.Bootstrap 3 Datepicker 4.17.37网址:https://eonasdan.github.io/bootstrap-datetimepicker/  下载并解压压缩包->将bootstrap-datetim

如何在notes服务器端设置所有人下次登陆修改密码和密码复杂性还有多久修改密码

问题描述 大神们好新入一公司公司有台notes服务器但是我不懂notes啊有没有大神能跟我说说怎么在notes服务器上设置大家下次登陆修改密码和密码的复杂性,还有怎么设置2个月必须修改密码.还有压缩一个人数据库的命令是啥忘了说了版本是notes8.5的 解决方案 解决方案二:友情支持哦,这个你只能网上找资料了.找个专业的notes论坛.最好能FanqiangYouTube有视频资料.解决方案三:1.密码的复杂程序在注册时就定好了,至于怎么复杂日后再改2.管理配置文档里只有会话超时设置,默认30分

从ORA-01752的错误,透过现象看本质

这几天开发同学反映了一个问题,有一个Java写的夜维程序,用于每天定时删除历史过期数据,3月10日之前经过了内测,但这两天再次执行的时候,有一条SQL语句一直报ORA-01752的错误,由于近期做过一次开发库的迁移,从一个机房搬迁至另一个机房,而且开发同学确认这期间未变代码逻辑,所以怀疑是否和数据迁移有关,这个错误被测试同学提为了bug,卡在版本测试中,有可能造成进度延误,所以属于比较紧急的问题. 再来捋一下这问题的信息, (1).报错的SQL delete FROM (select * fro