Quantcast
Channel: NEURON
Viewing all articles
Browse latest Browse all 20

完美的密码

$
0
0

注:本文已经发表在《信息安全与技术》杂志!转发请保留版权信息!

提高密码的安全性的策略
何伊圣
(蓝盾信息安全技术股份有限公司 广东广州 510663)
【摘要】本文主要探讨了默认密码、弱密码、系统保存密码的缺陷、密码取回等等问题,以及简单介绍了在线破解、离线破解、非技术破解等等破解手段。接着提出一些加强我们的密码的方法,如密码字符随机化、字符多元化、加长密码的长度、和其他一些设置密码的技巧。最后给出了一下评估密码强度的方法和简单展望了下一代密码技术。
【关键词】密码;口令;安全性

【中图分类号】TP309
【文献标志码】A
Strategy of improving gcipher security
He Yisheng
(Bluedon Information Security Technology Co., Ltd.Guangdong Guangzhou, 510663)
【Abstract】 This article discusses something about thedefault passwords, weak passwords, the system deficiencies saved passwords,retrieve password and so on. As well as a brief online crack, offline crack andnon-technical crack skills such as, Then Introduced some methods to enhance wepassword, such as randomized passwords characters, diverse characters, extendedthe length of the password, and some other password tips. Proposed somepassword strength evaluation method and looking next generation cryptography.
【Keywords】cipher ;Password; security
1、 引言

“密码”是什么意思?是口令?是密密麻麻的码?是很秘密的码?还是通过的字符(pass word)?还是密石马呢?大家都知道我们的生活处处都涉及到密码这个东西,从互联网到现实生活,我们每天都需要重重复复地进行这些操作,如需要密码才能登录电脑、需要密码才能登录邮箱、需要密码才能登录QQ、需要密码才能打开手机、需要密码才能登录ATM、需要密码才能打开行李箱、需要密码才能进入办公室、需要密码才能上网、网上支付、刷卡购物……
还有网站后台、数据库、服务器,还有交换机、路由器、防火墙、等各种各样重要的设备,都需要有密码才能访问。密码这东西太重要了,大家觉得吗?它可以保护我们的隐私秘密,它可以限制别人不能随便访问我们不公开的东西,它可以保护我们的财产安全,密码的好处就不用说了,但是大家有没有想过密码本身也会有缺陷呢?
2、 密码的缺陷
2.1 、默认密码

首先说说默认密码吧,早期的各种网站系统,如CMS、BBS等等,还有数据库、中间件都带有默认密码,而不少管理员在安装的时候并没有意识到要去更改它,如admin、admin888、test、root、manager等等都是屡见不鲜的了,而且有些系统如oracle数据库还不止是一个默认的用户和密码,而是一大堆!
现在稍微有一些好转,很多好优秀的系统在安装的时候都提示或强制管理员必须更改密码了。但是很多防火墙、IDS、IPS等等安全设备还是存在着默认密码。大家可以到以下去查找更多的默认密码图1、图2。
http://cirt.net/passwords
http://defaultpasswords.in/
http://default-password.info/
http://www.defaultpassword.com/
http://www.phenoelit-us.org/dpl/dpl.html
http://www.defaultpassword.us/
http://www.helith.net/projects/alecto/
http://www.routerpasswords.com/
http://www.corrupteddatarecovery.com/pages/Default-Passwords-Data-Recovery.asp

1

图1
2

图2
2.2 、弱密码(懒人密码)
我给弱密码(换个名字叫懒人密码)的定义:是包括自己(或者是家人、好朋友)的手机号码、家庭电话号码、生日日期、姓名的拼音、车牌号、QQ号码、银行卡号码、学号、社保号、公司或团体名称等等和你有关并能猜测到的字符。
甚至是你最喜欢的电影、电视剧、音乐、宠物、花朵、香水、酒店、餐厅、景点、食物、饮料、偶像、最常见的物品都不能用来做密码,为什么?很简单,因为总会有地球人知道你的爱好啊,除非你是外星人。

空密码(换个名字叫超级懒人密码)不属于弱密码这一类,因为根本就没有密码啊。但是我每次去猜别人密码的时候都先会试试空密码,直接就回车试试,大家不用怀疑,还真有成功的时候。如果有人懒到不设密码的话,我也真是佩服他五体投地了。如果说猜密码是黑客的最高境界,那么空密码也算是懒的最高境界了吧。

大家不要以为一个不关重要的系统,就可以随便设一个密码,甚至是空密码。它之所以是一个系统,是因为它可能会关系到很多东西的,黑客干掉它之后,可能就会跟着再干掉它,还有它、它、它,还有它。但是很多时候它没有被干掉之前,大家都会相信它是很安全的。

大家又有没有想过“弱密码”是怎么来的?弱密码它“弱”的程度会因人而异,一个人的密码“弱”的什么程度同时大概也可以看出他“懒”到什么程度了,可以说有什么样的人就会有什么样的密码,也就是说大多时候密码是有可猜测性的。就像心理专家、算命大师、巫师、魔术师一样可以猜测别人的某些东西一样(大家有兴趣可以找找Kreskin的表演视频看看),密码也是可以猜测的,因为正常人类的行为是有可预测性的,能够被猜到的密码就是弱密码。大家有兴趣可以研究研究,不过我就比较喜欢研究非正常人类的行为了。
2.3 、密码的蝴蝶效应
蝴蝶效应有这么一个小故事——是说蝴蝶翅膀的运动导致其身边的空气系统发生变化,并引起微弱气流的产生,而微弱气流的产生又会引起它四周空气或其他系统产生相应的变化,由此引起连锁反应,最终导致其他系统的极大变化。科学家把这种现象称作“蝴蝶效应”,意思即一件表面上看来毫无关系、非常微小的事情,可能带来巨大的改变。此效应说明,事物发展的结果,对初始条件具有极为敏感的依赖性,初始条件的极小偏差,将会引起结果的极大差异。
而我们的密码的脆弱性也会导致某些意想不到的结果,我想也可以做蝴蝶效应来做比喻。这个问题主要是由于很多人会把同一个密码使用在多种应用系统上面,甚至是所有的系统都是同一个密码。如果有人破解了你的某个系统的密码之后,他可能还会用这个密码来尝试登录你其它的系统,这样导致的问题就是当你某个应用的密码被破解了之后,其它应用也就跟之沦陷了。
2.4 、懒人的缺陷
首先,似乎人们在设置密码的时候都偏好于小写英文字母、阿拉伯数字,其次是大写字母,最后才是特殊字符,因为在标准的PC键盘上面要输入大写字母、特殊字符的话,都是要先按下shift键或CapslK键之后才能输入的。而且大写的字符很多是出现在第一个,大家都知道很多时候英语单词或句子的第一个字母是大写的。而从键盘上面不能直接输入的字符就更少了。

还有,那么多的密码我们该怎么记忆?如果是“懒人密码”那还好办,记在大脑里就可以了,如果是很强悍的密码呢?强悍到连自己都记不住、猜不到的呢?而且还那么多那么多,并且每个密码都不一样……记在大脑里?并不是每个人都是脑力竞赛冠军喔。
有些人可能会这样做——写在小字条上然后藏在键盘下面、写在本子上然后锁起来、存在手机里面、保存在某个有密码保护的文件里面、或者使用了某种密码管理软件。
2.5 、系统保存密码的缺陷

据我所知所有系统保存密码无非是“明文”、“加密”、“散列”这三种。密码的保存可以看出软件开发者的安全意识的高度。最危险的就是“明文”保存,把密码原原本本地保存在一个文件里面,或者保存在某种数据库里面,还真不少软件是这么做的。
其次就是经过简单加密再保存,对密码进行某种加密之后再进行存储,或者是对存放着密码的文件进行加密。这些加密算法是能通过密文推算出明文的,如果被获知了加密算法之后,就很可能被逆出密码。
最后相对来说最安全的算是保存密码的hash值了,因为是不能通过hash值推算出密码的明文的,只能暴力破解。
2.6 、密码取回的问题

大家都知道很多系统都有忘记密码时找回密码的功能,很多系统都想方设法去提高用户密码的安全性,但却在找回密码这里显得很弱智。对于这点我不太能理解。常见的问题有如下表1:
你最喜欢的宠物叫什么名字? 你最喜欢的偶像叫什么名字?
你出生在哪个城市? 你最喜欢什么颜色?
你的小学班主任叫什么名字? 你在哪所小学就读过?
你的中学班主任叫什么名字? 你在哪所初中就读过?
你的高中班主任叫什么名字? 你在哪所高中就读过?
你的母亲叫什么名字? 你母亲的家乡在哪里?
你的父亲叫什么名字? 你父亲的家乡在哪里?
你在哪所大学就读? 你最喜欢的电影是什么?

表1
这样存在的问题有:
l 这些信息很容易被别人获取,或者答案的数量非常有限。
l 这些信息基本上都是个人永远不会改变的事实。
l 用户经常在多个网站上面使用相同的问题和答案。
l 使用过程中用户会更改系统的密码,却不会去更换这些问题。
l 系统都会预先设置好了问题,而用户是不能修改这些问题的(不能自定义问题)。
l 这些答案基本都是明文保存在数据库里面的。
3、 破解的欲望与手段
本文不是探讨怎么样破解密码的,这里只是进行一个简单的总结而已了。破解密码的工具可以说是不计其数了,比较著名的有Cain & Abel、L0phtcrack、John the Ripper等等。大概很多朋友都尝试过彩虹表的厉害了吧,破解一个14位3种字符组合的密码也不过3分钟。
为什么会有人去破解密码?有人认为这是一个游戏、有人认为这是一个挑战、有人说为了赢得尊重、有人认为这是在犯罪、有人为了钱、也有人只是为了偷窥。这些事情每天都在发生,但不管是为了什么,只要成功过一次之后,你就会更想去破解它,并且会尝试使用不同的方法去破解它。这是一种欲望。一而再,再而三。于是“hacker”就诞生了,hacker源于欲望。
我认为破解密码的方法从技术上可以分为“在线破解”和“离线破解”两种,还一种非技术的手段是社会工程学。
3.1 、在线破解
利端:不需要获得密码的密文或HASH值,可以直接对目标系统进行猜测或暴力破解。

弊端:容易引起防火墙等防护系统的报警甚至屏蔽掉你的IP地址,或者目标系统有密码错误数次的限制,或者有高强度的验证码的限制。
在线字符列表生成器:http://www.wordlistgenerator.net/ 图3,或者直接下载字符列表:http://wordlist.sourceforge.net/ 图4、 http://wordlist.com/ 图5

3

图3
4

图4
5

图5
3.2 、离线破解
利端:不需要考虑在线破解的弊端问题、司法问题,而且理论上是100%可以把密码的明文破解出来的。

弊端:必须先想办法获得密码的密文或HASH值,必须弄清楚加密算法或散列算法。
下载彩虹表:
http://rainbowtables.shmoo.com/
http://ophcrack.sourceforge.net/tables.php
http://www.freerainbowtables.com/en/tables/
3.3 、非技术破解
上面的两种方法都是基于电脑技术的,大家可不要忽略了一种更加邪恶的手段——社会工程学,通俗来说这是一些欺骗手段,取人密码于千里之外,当然再加上一些技术手段的话就更加完美了。

破解者可能会伪装成服务提供商(域名、空间、QQ、Email、移动、电信、联通等等各种类型的服务提供商)的技术服务人员给你发送欺骗邮件(Email的发件人地址是可以伪装的),或者是伪装成警察用“110”这个号码给你打电话(听说电话号码也是可以伪装的),“119”、“120”都可以用,这里我得出一条公式:

社工手段 + 一些诱惑 + 一些技术 = 天衣无缝的骗局

4、 如何加强你的密码
4.1 随机化
随机就是不能够预测、没有规律的,其实要获得真正随机的结果也是有些难度的,大家可能认为让电脑自动生成一些字符不就是随机的了吗,no,电脑生成的随机数也是在利用某种算法得出来的,虽然我们看起来这些字符似乎没什么规律,因为我们不清楚电脑是怎么产生这些字符的,只要我们明白电脑使用的是什么算法,也许我们也能够推算出下一个字符是什么了。
那么我们闭着眼睛随意乱敲键盘得到的是不是随机的字符呢?可能有些人还是习惯于敲键盘中间的字符,而很少敲到键盘两边的字符。我想说的是由于人类的习惯会影响到随机的结果。但随机性终究也是提高密码安全度的一种方法。MD5值算不算呢?
还好几乎所有系统的密码验证不是对就是错,还没有系统会提示你的密码有70%是错的吧。
4.2 多元化
其实除了采用的数字和字母之外,我们还是很多字符可以选择来做密码的,如下列表格。很多地区或国家都有自己的语言和文字,如果系统能够支持多种类型的字符来做密码的话,那么将会大大提高密码的安全性!目前我所见过的密码字典生成器、彩虹表所能支持的字符类型还是非常少的,如果我们能够在密码里面加上一些的话,那破解的成功率将是非常低的。目前很多输入法的软键盘功能都支持输入以下表2各种类型的字符。

其中用“空格”来做密码就是一个很好的选择,它方便输入、记忆(就算你要把密码写在纸上也不需要把空格写出来吧),有能有效提高密码的强度,但是好像没有人这样考虑过,至少我所破过的密码里面从来都没有出现过,也许是有空格的密码我没能成功破解出来,就算能破解出来也可能让破解者产生迷惑。有人说用“空格”做密码唯一的缺点是在敲打空格键的时候发出的声音与其他的键不同,也许有人会用听力破解,哈哈。

阿拉伯数字:
0 1 2 3 4 5 6 7 8 9

小写英文字母:
a b c d e f g H I j k l m n o p q r s t u v w x y z

大写英文字母:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

中文标点符号:
, 。 ? ! () ‘’ “” ; …… 【】 『』《》

英文标点符号:
, . < > ; : ‘ ‘ “ “ [ ] { } ( )

键盘字符:
` ~ @ # $ % ^ & * \ /

数学字符:
±+-×÷/∫∮∝∧∨∑∏∪∩∈∵∴⊥∥∠⌒⊙≌∽

表格线:
┞┟┠┡┢┣│┬ ┳ ┼ ╀ ╁ ╂ ┍┎ ┐┒─ ┄

拼音字符:
ā á ǎ à ō ó ǒ ò ê ē é ě è ī ǐ ì ū ú ǔ ù ǖ ǘ ǚ ǜ

希腊字母:
αβγδεζθικλμνξοπρστυφχψω

俄文字母:
абвгдежзийлмнопртуфцчшщъы

片/平假名:
さしすせそたつってなにぬねのはふへほまみむめもゃょ

其他字符:
§ № ☆ ★ ○ ● ◎ ↑ ↓ → ← ▲ △ ■ □ 〓

非打印字符:
空格、回车、制表符

表2
这些字符我们可以灵活使用,如利用1337语言,就是Leet,这词源于英语的elite(义:精英),由elite转为eleet后再转变为leet,又称黑客语,是一种发源于欧美地区的BBS、在线游戏和黑客社群所使用的文字书写方式。通常是把拉丁字母转变成数字或是特殊符号,例如E写成3、A写成@等。或是将单字写成同音的字母或数字,如to写成2、for写成4等等,可以参考下图6:

6

图6
4.3 长再长
加强密码安全性的第三个重点就是加长密码,增加密码的长度并不意味着难以记忆,而是相反,可能长密码更加容易记忆。很多系统在你设置密码的时候都提供一个“密码提示”的功能,我想这个功能就是用于长密码的情况下的。你可以设置一个类似这样33位的长密码:“Merry Christmas& happy tu year !”,并不难记忆啊,还可以加几颗★★。
如果你真的担心难以记忆的话,建议你使用古诗密码或音乐密码。或者使用场景记忆法,就是使用看到就能想起来的东西作为密码。前提你不能泄露你的偏好。另外还可以寻找一些相关的单词作为密码:http://www.rhymezone.com/

7

图7
4.4 时间与历史
时间很神奇,历史很美妙。密码使用的“时间”与其“历史”却是人们很容易忽略的两点,可能很少有人会去考虑一个密码应该用多久,能否重复使用。但是如果你知道有人一直在尝试破解你的密码,而且经过一段时间后就一定会被破解出来,在一段时间后你会不会改密码呢?
如果大家能够养成改密码就像吃饭一样的习惯,那我相信系统的安全性也将会提高很多。这里建议大家至少3个月要改一次密码,绝对不要重复使用一个密码。
4.5 其他技巧

再介绍一些设置强密码又容易记忆的技巧,再次说明空格是很好用的,如表3。

注释:
”this my shit !” 、

时间:
judgejudy 8:00AM

数字:
$44and¥88RMB、%20than%80

加缀:
off-whitenessless、non-davincitized

颜色:
black+white+red、blue_blue_sky

句子:
Turn left, then turn right, ok?

Email:
Mr_Akast@suPerMan.ohmygod

网站:
wWw.g0.g0.g0.here_wE_gO.c0m

押韵:
One done Fun none sun run

表3
4.6 评估你的密码
如果想要评估一下你密码的安全性,那么请看看以下问题,如果你的密码到达了以下问题之中9项以上的肯定,那么恭喜你。但是再好的密码也不需留恋它,使用了一段时间后都要毫不犹豫的更换它。

1、 你的密码是否到达15位的长度?
2、 你的密码是否超过3种类型以上的字符组合?
3、 你的密码是否包含了3块以上的随机信息?
4、 你的密码是否完全没有包含个人信息?
5、 在搜索引擎中搜索你的密码是否没有任何结果?
6、 你的密码是否只是你一个人知道?
7、 你是否不用查找就能输入你的密码?
8、 如果你把密码存在某个地方,你能确保那个地方安全吗?
9、 你的密码使用时间是否不会超过6个月?
10、 你的密码是否没有在其他地方使用过?
11、 你是否可以很快地输入你的密码而不会有错?

5、 展望下一代密码

传统的密码已经被证实不安全了,还有一次性临时密码、加密狗都可以被破解或计算出来,“也许”在未来超级计算机的威力之下,破解一个3000位的无规则密码也只需要3秒钟时间,那么我们还需要考虑使用“字符”来做密码吗?
于是新的密码品种——下一代密码就应运而生了,我给它取个名字叫NGP(Next Generation Password),有生物密码如:视网膜识别、指纹识别、DNA识别、血型识别、性别识别、感情识别、心跳脉搏识别,还有物理密码如:重量识别、温度识别、湿度识别、语音识别、光识别、颜色识别、气体识别、气味识别等等都可以起到控制开关的作用。
想象一下未来只有在特定的重量、温度和湿度的情况下,再加上视网膜、指纹、语音、DNA、血型识别通过之后才能打开保险箱,多牛B啊。当然这有些只是我的幻想,能不能实现还要依靠科学家们的努力。
不过现在也已经有一些系统使用多重认证的方式了,就是不仅仅需要密码,还需要认证你的个人特征和你持有的物理设备才能通过。比如先要检测你的指纹或视网膜,通过之后还需要插入你的USB KEY或者刷卡,最后再输入密码。我相信,即使在我不在的遥远的将来,密码也不会被淘汰,它只会不断地更换自己存在的方式而已了。
参考文献
[1] Mark Burnett .Perfect passwords: selection,protection, authentication.Syngress Publishing,Inc., 2005

作者简介:
何伊圣(1990-),男,蓝盾信息安全技术股份有限公司攻防研究员,擅长渗透测试与WEB漏洞挖掘。

本文网址:http://www.ngsst.com/2011/04/3/45001.nst


Viewing all articles
Browse latest Browse all 20

Trending Articles