说起口令,其实大家并不陌生,从我们每天解锁手机、登录邮箱到网络购物,都会涉及到口令。口令俗称“密码”,对应英文 Password,是当前最主要的身份认证方法。
8.54 亿中文用户占了世界上 20% 的互联网用户,比美国人口的两倍还多。北京大学汪定博士以第一作者完成的一项研究发现,虽然中文用户的密码构造行为与英文用户有很大差异,但世界各大知名网站对中英文用户采取同样的密码保护措施,都没有考虑中文用户密码的特点。
对于黑客而言,各大网站的密码保护措施无异于皇帝的新衣。
今年 8 月,这项针对中英文网民密码比较的研究发表在全球四大顶级信息安全学术会议之一的 USENIX (美国高等计算系统协会)Security 会议上。
中文网民常用密码:生日和手机号
汪定团队分析了 2009 年到 2012 年间由黑客曝光的 1.06 亿个真实网络密码,其中包括 6 个中文服务器上的 7310 万个密码和 3 个英文服务器上的 3320 万个密码。值得注意的是,虽然这是 2012 年之前的数据,但多年来密码系统进化很慢,其改变是很少的。
他们还比较了社交论坛、游戏、电子商务网、程序员论坛以及雅虎英文国际用户的密码。研究发现,与英文互联网用户相比,中文互联网用户的确在密码设置上有特点。
中文网民更喜欢用数字作为密码,尤其是手机号和生日,英文网民则更喜欢用纯粹字母作为密码。据汪定此前研究,中文网民的密码有 27% 到 45% 仅由数字构成,英文网民密码仅由数字构成的低于 16%。
英文网民倾向于用某些单词和短语,有 25.88%的网民会将 5 个字母以上的单词作为密码模块,如 password(密码)、letmein(让我登录)、sunshine(阳光)、princess(公主),当然也包括“abcdef”“abc123”以及“123456”。
研究还发现,16.99% 的中文网民热衷在密码中插入 6 个日期数字的模块,这个数字更可能是生日。有 30.89% 的中文网民使用 4 个以上的日期数字,这个比例是英文网民的 3.59 倍。13.49% 的中文网民使用 4 位数的年份数据作为密码模块,是英文网民的 3.55 倍。
更有意思的是,如果一个中文用户使用一长串数字做密码,那么这个密码是 11 位手机号的概率是 66.74%。要知道,2.91% 中文网民使用 11 位手机号码作为密码模块,而 4.36%的中文网民口令含有 11 位以上的数字,因此其概率为 2.91/4.36=66.74%。
类似地,如果知道一个中文用户的密码不低于 11 位,那么这个密码含有 11 位手机号的概率是 23.48%。要知道,2.91% 中文网民使用 11 位手机号码构造密码,同时有 12.39%的中文网民密码长度不低于 11 位,因此其概率为 2.91/12.39=23.48%。
中文网民只有 2.41%使用英文单词作为密码模块,但他们更喜欢用拼音名字(11.50%),尤其是全名。
此外,爱情主题在中国网民口令中占很大地位,比如“woaini1314”“5201314”。
研究发现,一些基于英文字母的所谓“强”密码可能在中文环境中很弱,比如“woaini1314”,这个密码在谷歌、新浪微博等网络平台均被评为强等级,然而中文网络用户很容易猜到这个密码的含义。
再比如“brysjhhrhl”,大部分中文网民能猜到这是“白日依山尽,黄河入海流”的缩写。这就让从英文用户视角解决密码安全问题的思路出现偏差。
[root@mysql-2 mysql]# service mysqld stop
Shutting down MySQL.. SUCCESS!
[root@mysql-2 mysql]#
[root@mysql mysql]# vim /etc/my.cnf
[mysqld]
user=mysql #指定启动MySQL进程的用户
skip-grant-tables #跳过密码验证
#validate-password=off #需要禁用密码复杂性策略
[root@mysql mysql]# service mysqld start 启动MySQL进程
Starting MySQL. SUCCESS!
[root@mysql-2 mysql]#
[root@mysql-2 mysql]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25 Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> alter user 'root'@'localhost' identified by 'Sanchuang123#'; --》会报错
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges; 刷新权限(会加载原来没有加载的权限表--》用户名和密码所在的表user等)
Query OK, 0 rows affected (0.01 sec)
mysql> alter user 'root'@'localhost' identified by 'Sanchuang123#'; --》会报错
ERROR 1133 (42000): Can't find any matching row in the user table
mysql> set password for 'root'@'localhost' = 'Sanchuang1234#'; --》修改密码,指定用户名为root@localhost
Query OK, 0 rows affected (0.00 sec)
root@(none) 10:35 scmysql>alter user 'root'@'localhost' identified by 'Sanchuang123#';
Query OK, 0 rows affected (0.00 sec)
root@(none) 10:40 scmysql>
mysql里完整的用户信息是 用户名@主机名
mysql> quit
Bye
[mysqld]
socket=/data/mysql/mysql.sock
#user=mysql --》注释掉
#skip-grant-tables --》注释掉
[root@mysql-2 mysql]# service mysqld restart #重新刷新服务
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[root@mysql-2 mysql]#
[root@mysql-2 mysql]# mysql -uroot -p'Sanchuang1234#'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25 Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
就是使用其他的管理员账号给别的用户重新设置密码
可以在SQLyog里操作
SET PASSWORD FOR 'root'@'localhost' = 'Sanchuang123#';
暴力破解一般是指拿到网站口令文件库,然后在本地破解。因为往往网站存储的不是明文,有可能是采用了 Hash 函数并加盐运算后存储,需要把它恢复出来,那就需要反向的破解,包括基于猜测字典的破解和暴力破解。后者一般不关注破解效率,适用于算力强大的攻击者。
目前绝大部分网站都把保护口令帐户的责任推给用户,要让用户生成所谓的强口令,如果帐户出现安全问题,那是因为用户自己的口令强度不够。而现在学术界的共识是,应让网站承担更多的责任,网站可以把用户的口令保护得更好,做到别让口令文件泄漏,即使泄露了也能及时发现,并且通过使用慢哈希(如 Scrypt,Argon2),让黑客也很难将明文口令恢复出来。
在可预见的未来,口令仍将是最主要的身份认证方法。在口令基础之上防范的方法只是锦上添花。因为指纹可以复制且不可更改,基于深度学习的换脸软件又能绕过面部 3D 识别,那么只有口令在我们大脑当中谁也轻易拿不走,至少目前口令的脑电波还不能无线远距离破译。
无论什么机密,只要是涉及人,特别容易出错,尤其是在当前口令安全理论体系还没有建立、很多基础性问题没有解决的情况下。