本文只用于讨论和学习,由alittlemc完全原创,若需要转载引用请在先与我联系,若有疑问或者错误的观点也可以评论区发言,谢谢。
本文研究数据来源于:国内网上常见密码字典(China)、中国高校大学生群体问卷调查(对学生密码规律的研究
https://docs.qq.com/form/page/DSHRWeUFHbGNvTm5F)。研究密码对象为使用的社交账号。只代表本人研究的群体。
早在我学计算机之初,看到那些自称会盗QQ号的小黑子就莫名的害怕,生怕他们偷了我的号,我还有2.5Q币的余额呢。
图1.小黑子帮我盗QQ
早期的腾讯安全体系不是很完善,很容易被他人盗号,现在账号基本上都绑定了手机号,有一些可疑的操作都直接要输入短信验证码确认,所以其实不是那么好破解滴。
话说,现在的认证大多数都是使用账号+密码的*,甚至还需要配合短信验证。信息安全中最薄弱的环节就是人,哪怕你用几十万的防火墙,然后密码是默认密码,这不是给小黑子刷积分嘛。
为了获取到账号密码这些小黑子也是不择手段,常见的套路:
- 钓鱼站点:在小黑子开设钓鱼站点输入正确的信息,输入的数据直接提交给小黑子,可不就是直接号没了。(如果点赞多了会开坑)
- 病毒木马:点到邮箱里面什么非法链接、浏览什么奇怪的网站等等,都可以被莫名其妙下载了一些可疑的文件。这些木马病毒,可能加壳、寄生于正常的软件,有内鬼在电脑里面,里应外合的盗号岂不是很简单。(如果点赞多了会开坑)
- 不安全的网络:有时候小黑子在网络中的角落抓着你的流量包,如果是http、ftp、telnet这些不加密的报文,密码就明文显示在其中。即使是加密的报文也可以跑密码本。
- 撞库:如果你好几个站点用的密码恰好都一样,如果一个站点内密码暴露了,另一个站点的账号也不攻自破。
- 暴力破解:最简单的那就使用穷极法,因为账号基本上是公开的信息,所以只需要猜测的密码,凭借的密码本,拼你使用的账号是弱口令!
基本概念
弱口令和密码本
- 所谓弱口令可以理解就是简单、人尽皆知、默认的密码,比如使用纯数字密码、admin、123等密码。
- 为此专门有一些别有用心的人会收集起来这些弱口令整理起来,弱口令的集合称之为密码字典。
针对于不同的目标,密码字典也要对症下药,密码字典也要有所选择:
- 登录平台的密码规范:比如WLAN密码是8位起步的,那就8位以内的密码本大可不试。
- 通过特征针对性生成:比如知道对方的手机号、姓名、生日、英文名、习惯性使用的数字等,密码内就可能包含这些,当然也不一定。
探索密码规律性
密码的元素
根据对拖库的密码研究以及问卷调查,大致上可以整理出一些常见的规律:
一般情况下,密码大多数由于以下字符元素组成:
- 英文字母
- 小写字母:
abcdefghijklmnopqrstuvwxyz
- 大写字母:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
- 小写字母:
- 数字
- 阿拉伯数字:
0123456789
- 阿拉伯数字:
- 字符
- 键盘上常见的英文字符:
!@#$%^&*()_-+={[}];:'"<>,./|\
- 键盘上常见的中文字符(少用):
!?¥,……()——【】:、《》
- 键盘上常见的英文字符:
其他特殊情况下
- 如果是狠人可能会直接使用一些少见的、难以在键盘上获取的字符比如:汉字、希腊字母等,因为不方便记忆或者输入。登录平台也可能会另外有现在,考虑到编码的问题,一些平台设置密码时候是只能使用常见字符作为元素。如果遇到这些狠人自然也是没办法解决了的。
- 特殊情况就很难所涉及到范围太大了,基本上无解,不在本次讨论范围。
密码的规律特点
有时候太长密码、太复杂的密码往往是防本人,搬起石头砸自己的脚。这里只以平常人的记忆密码作为研究的切入点。
图2.我的密码绝对安全,因为复杂得我也忘记了
在对大量学生进行采访,可以大概整理出以下特点:
-
需要经常手动输入密码的平台和公共平台,相对来说密码往往会简单一些。
- 设密码是为了保护个人隐私,但是如果需要频繁的手动登录、或者登录的平台是公共的平台,那么密码相对来说会简单一些。
- 频繁登录:比如每天都要登录到Windows的密码往往就比自家WiFi密码来得简单。因为Windows每天每次都要登录,但是WiFi密码只需要输入一次即可自动记录。
- 公共平台:一些人办公中使用的账号往往不包含太多个人隐私信息,所以往往密码会比较随意以方便记忆,并且账号密码可以要交接与他人,所以密码中也不会带有个人太多信息,甚至设置密码是因为平台要求而非自愿
密码带有个人特征或者常见的规律字段组成(即社工密码+弱口令)。详见下一章密码分组\组的组成
- 个人信息:密码中带有一些本人可以理解的规律和信息
-
比如自己或他人的
姓名
、手机号
、生日
、学号or工号
、身份证号
、QQ号
等等 - 弱口令辅助:因为人从本质上来说就不想设置太复杂的密码,但是因为登录平台对密码的长度、大小写等限制有,所以需要添加一些辅助性质的常见方便记忆的规律字符(弱口令)用于辅助填充。
-
比如常见单词
admin
、password
、love
;常见数字123
、520
、666
;连续字母abc
、zxcvb
(在键盘上连续)等 -
一个人有几套密码用于全部的登录平台,或者密码之间具有至少60%的相似程度。
- 密码相似性:现如今人们需要登录的平台极多,密码可能经常弄混,所以为了方便记忆密码,要么直接密码统一,要么不同密码之间往往有着60%的相似程度,只需要记忆简短不同相似性的密码即可。
-
比如张三的qq密码和微信密码分别为:
Zhangsan@qq
、Zhangsan@wx
-
没有频繁更改密码的习惯。
- 如果一个人在短期频繁更换密码应该是忘记密码了重置后又忘记了。
-
受(计算机)教育程度与密码难度成正比。
- 密码复杂度和学历有关:小学初中文化<高中中职文化<大专本科研究生文化<大专本科研究生文化(计算机专业)。正在观看本篇文章的博客园大佬密码想必是不简单的。
- 密码和学科有关系:理科生的密码往往比文科生复杂。
-
重要密码长度普遍在8-16位的范围之间。但是具体多少位是没有特定的规律的。
- 因为现在绝大多数平台都要求8位密码即以上,所以8位及其以下的密码实际上是没有了的,所以这里只是象征性的列出而已。
图3、4.密码位数
-
密码中含大部分包含字母、数字、符号元素字符。(这里的密码元素总数是对全部收集的密码进行汇总分析)
- 因为现在绝大多数平台都要求8位密码即以上
图5、6.密码元素
解释一下其中其他字符0.03%,使用中文名字作为密码的大牛哈哈。
密码分组
结合大量的密码数据可以推倒出大部分人记忆密码的方式来看是以组为单位的记忆方式。所以可以对密码拆分为若干组来研究。
比如:
zhangsan@123456
就可以分为zhangsan
、@
、123456
三组
同组特点
同组中,往往具有一定的特点:
- 同组中往往元素都是同类型的,比如均为字母、数字
-
一组中内容为带有个人特征或者常见的规律字段组成
- 特殊:因为平台限制密码样式(比如要求英文大小写数字符号任意三种组合),密码元素中的符号往往作为组之间过渡使用比如zhangsan@qq中的@用于分割名字组和平台特征组。
组的组成
常见的组的内容有是带有个人特征或者常见的规律字段组成:
-
姓名:一般情况为姓名拼音,如果文化程度较高的人可能会设置个英文名。(以张三为例)
-
姓名拼音首字母:
zs
-
姓名或姓全拼:
zhangsan
、zhang
-
英文名:
three
- *带有大小写特点的(往往是第一个字母大写):
ZS
、Zhang
、Zhangsan
、ZhangSan
等 - 当然姓名不只是局限于本人,往往也会有人用自己恋人、偶像、家人等的姓名作为密码的内容。比如张三520李四zhangsan520lisi、蔡徐坤真爱粉cxk
-
姓名拼音首字母:
-
号码、账号:平台的账号、号码、工号学号这些都是随机的而且需要记忆、所以也常用于密码中。
- 一般情况尾号是4位(因为点外卖和快递保留4位的号码),开头则有可能为6位对应密码
-
手机号(常用*****):
13633883388
、尾号3388
、开头16
-
常用平台的号码、工号学号(常用*****):比如QQ号
818742197
、尾号2197
、开头818747
;不只局限于qq,其他注册后会生成不可预期数字账号的都属于,微信是不会生成账号所以不属于。 - 身份证号(较常用****):身份证号后6位常常用在一些初始密码中,也是密码中的常客,后6位中出生日是可以确定的,但是后四位从某种程度来说是接近随机,范围
01xxxx
到31xxxx
-
生日、节假日等特殊日期:可能是受到银行卡的支付密码是6位的影响,大部分都会将密码设置为生日。
-
生日(常用*****):年月日
20000816
、年月日六位000816
、月日0816
、只有年2000
,有时候也会和身份证后四位连起来200008166074
-
特殊日期(常用*****):就比如一些公共的密码会使用创建账号时或者修改密码的年份来作为密码的内容,比如
2022
、2019
等特殊的日期,往往用年。当然有一些会用结婚纪念日、第一次见面的日期作为密码,具体的密码构成可以参考生日的格式。 -
节假日(罕见**):
1001
、0501
等,其实这方面的规律出现在我统计比较少的,我都怀疑是不是其生日刚刚好在节假日的错觉。
-
生日(常用*****):年月日
-
易记、易得的字符(弱口令):有时候为了满足登录平台对密码长度的要求,往往会使用一些有特定易记、易得的作为字符串的补充。
-
有规律的数字、字母(非常常用******):可能是连续的重复的数字、字母,主要是方便记忆。
- 顺序数字
12345
、54321
; - 谐音
666
、88888
、520
、1314
、5201314
; - 梗类
3838438
(很远古的梗)、2333
、www
、114514
(臭密码),yyds
(永远单身); - 顺序字母
abc
、xyz
(数学常用);
- 顺序数字
-
键盘上字符(较常用****):
qwerty
、asdfg
、zxcvb
,!@#$
(按上shift点击1234)看起来挺复杂但是其实是就是从键盘上同行的字符串。 -
直接和登录平台相关:平台的简写wx、qq、bili;平台使用的账号,
admin
、root
、QQ号
-
简单单词(常用*****):
- 如果对方是接触计算机的密码也可能包含计算机账号相关的字符
admin
、administrator
、user
、root
、toor
、mysql
、pass
、passwd
、password
- 当然也可以是自己喜欢的单词
security
、Ethereal
、Hi
、vip
、qq
、svip
- 如果对方是接触计算机的密码也可能包含计算机账号相关的字符
-
学业上知识(稀少***一般情况下破解难度就异常的高了):一般受计算机教育程度越高的人有可能会使用,简单数学π
3.14159
、e2.71828
、端口号最大值65535
、喜欢的数字1024
、网络IP192.168.1.1
-
一句话的拼音(稀少***基本上无解):一般情况文科生会选择一句话拼音首字母作为密码,这句话可以是美句也可以是没有意义的,枯藤老树昏鸦,小桥流水人家
ktlshyxqlsrj
、吾日三省吾身wrsxws
、蔡徐坤打篮球cxkdlq
-
有规律的数字、字母(非常常用******):可能是连续的重复的数字、字母,主要是方便记忆。
-
辅助:在组之间填充特殊符号可以大大强化密码难度。比如
zhangsan@com
、lisi@123
-
使用符号分割:大部分情况为一个但是也不排除有特殊情况
.
、!
、@
、#
、$
、%
、&
-
区别于前后两个组的字符:比较也可能是数字、当然和可以是符号
zhangsan0lisi
-
补充多样性:因平台要求英文大小写符号等,所以使用可能会作为补充使用单字母,
123456a
、也可以将首字母变为大写Zhangsan1234
、L
-
使用符号分割:大部分情况为一个但是也不排除有特殊情况
分组的之间的规律
大部分的密码都是使用英文字母+数字分组。其中英文字母较为有可能是姓名相关,首字母可能大写、也可能全部大写,数字则可能是电话号码、QQ号、生日、常见数字等。
进阶情况下还有英文字母+符号+数字。
给读者建议
对于小黑子来说,一个纯数字密码很难破解,但是只要引入英文字母和符号,每多一个字母、符号难度也是指数级的上升。更何况现在要错误次数太多会锁定的对策,所以破解密码变得异常的困难了,所以大家也不必过分的担心密码被暴露破解,反而是要注意个人隐私。这就是社会工程学在信息安全中的应用。
比如从你的微信号很容易了解到你个人的密码规律、密码内容。比如某人微信号为zhangsan0819,其中zhangsan极有可能是姓名、0819极有可能是生日。
又或者说不同平台的密码尽量要不一致、并且设定不同的规律,因为倘若一个站点被攻破,你的密码可以就被窃取,如果密码相同其他的账号就岌岌可危、或者有特定规律的密码比如张三的邮箱密码被窃取了密码为zhangsan@mail,那么qq号就极有可能为zhangsan@qq。
- 强烈建议:密码要足够长、元素尽量要有数字、字符、大写字母、小写字母容易三种。
- 不同平台密码不要相似。
- 公共平台密码尽量不要太与自己信息相关,因为管理员可能可以看到保存的密码,也不要吧密码规律暴露在微信号、抖音号上。
- 尽量使用扫码登录、短信验证码登录,特别是在公共电脑和公共网络上。
- 强烈推荐使用一句话密码,你可以记忆一条你的语句,即方便记忆也不以破解。
更新计划
2022年09月17日22:01:02(周六)
- 完成密码字典的收集工作
- 因为我长期(四年)帮他人刷网课,所以手头上有大量的密码数据。
2022年10月12日12:45:54(周六)
- 完成绝50%的内容,完成密码统计的lua脚本
2022年11月14日19:49:58(周一)
- 绝大多数内容
- 预计下周会分享出统计密码规律的脚本
如果本篇文字对您有所帮助,可以分享给您的好友!