`
saybody
  • 浏览: 870767 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

如何防止黑客入侵[3]:如何构造安全的口令/密码?

阅读更多

  在上一个帖子 ,俺介绍了攻击者,是如何攻破口令这道关口的。为了避免口令被轻易地破解,有必要了解构造安全密码的技巧。所以,今天就来介绍此话题。<!-- program-think-->

  ★不要共用口令/密码
  俺发现有相当多的同学喜欢靠一个口令包打天下。这是相当相当危险的事情。同一个口令,用的场合越多,则泄密的危险越大。而一旦泄露,你的安全防线就会全面崩溃。
  所以,今天要讲的头一个要点,就是绝对不要在所有(大多数)场合,使用同一个口令。

  ★密码的分级机制
  由于共用口令存在很大的风险,比较稳妥的办法就是——每一个场合仅使用一个密码。但是很多人会抱怨说:这样会很繁琐,增加了很多的麻烦。那如何才能做到既安全,又不太麻烦捏?这就要引入密码的分级机制。
  根据安全圈内一个人所共知的常识:越安全的措施,通常也就越麻烦,成本也高;反之亦然。另外,根据二八原理 ,非常重要口令毕竟只占少数。所以,就像电影要有分级机制一样,你的密码/口令也要引入分级的概念。通过分级机制,对大多数不太重要的口令,可以采取简化的安全措施;而对少数重要的口令,采取高度安全的措施。
  下面,就来介绍一下,如何对不同的口令,进行分类。

  ◇第1级:不重要的口令
  所谓不重要的口令,就是说万一被盗了或者忘记了,对你没啥损失。
  比如,俺经常碰到一些土鳖的论坛,只允许注册会员从上面下载附件。因此俺就经常临时注册一个账号,然后登录上去下载东西。这类账号,基本上都属于一次性的(用完即扔),所以重要程度很低。
  对于那些不重要的口令,基本上不用考虑太多安全性的因素。随便设置一个即可。

  ◇第2级:重要但少用的口令
  对于重要的口令,还要根据其使用的频繁程度,再区别对待。有些口令虽然重要,但是使用的频度很低。由于这类口令很少使用,所以设置得麻烦一些,问题也不大。
  比如俺管理的一些研发的服务器(比如源代码服务器),其重要程度非常高,但是平常基本无需登录。

  ◇第3级:重要且频繁使用的口令
  最后这类口令,既重要,又经常用。所以,设置这类口令就比较讲究。要同时兼顾安全性和易用性。
  比如自己日常使用的操作系统用户密码,就属于此类。

  ★一些反面教材——脆弱的密码举例
  说完了分级机制。接下来俺先列举一些反面教材,让大伙儿看看,啥样的口令算是脆弱的?

  ◇口令和用户名一样
  无需多说,这种情形的口令,非常脆弱。

  ◇口令是一串简单数字
  在上一个帖子 ,俺举了RockYou网站用户数据被盗 的案例。在该网站3200万用户中,最受欢迎的十大弱智口令分别是:
1、123456
2、12345
3、123456789
4、password
5、iloveyou
6、princess
7、rockyou
8、1234567
9、12345678
10、abc123

  从这TOP 10的排名可以看出,有一半是采用连续数字。所以,用连续的数字串(包括顺序和逆序)作密码,也是很愚昧滴。

  ◇口令太短
  如果你的口令小于6个字符,是很容易被暴力破解滴。毕竟,小于6个字符的所有组合,也没多少个。对专门穷举密码程序来说,那简直是小菜一碟。

  ◇用英文单词作口令
  用单个的英文单词作口令,也很容易被破解。毕竟,常用的英文单词,也就千把个;算上冷僻的,也就几万个。
  在许多年以前,就有黑客专门收集整理了英文单词的列表(称之为“口令字典”)。而且这个字典是根据单词的使用频度进行排序。有了这种密码破解字典,密码破解程序就可以轻易猜解出那些使用单个英文单词的密码。

  ◇用日期作口令
   有些同学希望用某个具有特殊意义的日期(比如:生日、结婚纪念日、等)作为口令。要知道这种伎俩也是不灵滴。因为常见的日期,大都分布在最近100年的 范围内。所以充其量,可能的个数也就大约是365*100个。即便把不同的日期表示格式考虑进去,也多不了几倍。在这个数量级上,对于暴力破解工具而言, 还是小菜一碟。

  ◇其它的烂口令
  上述列举的这几种情况,大伙儿一定要避免。另外,你还可以去围观一下某老外整理的一个滥口令大全 (这老外真有耐心)。不过这个列表是根据欧美用户统计的,未必适合中国的国情。

  ★如何构造复杂的密码?
  前面已经说了:口令太简单,容易被破解。但是太复杂的话,万一自己也忘了,那可就完蛋了。所以,很多网友都纠结于口令到底该复杂到什么程度。俺的经验是:口令要做到对自己简单,对别人复杂。
  下面就来介绍俺在这方面的经验。

  ◇用多个单词构成词组
  前面提到,如果用单个 英文单词作密码,容易遭受字典攻击。为了避免字典攻击,可以考虑由2-5个英文单词构成密码。如果你英语不灵光或你比较习惯中文,也可以考虑用2-5个汉字的拼音来构成密码。
  优点是:
  由于能显著增加密码长度,可以抗击暴力破解。
  缺点是:
  有可能需要改变你记忆密码的习惯。
  口令中仅包含字母,复杂度不够高。

  ◇插入特殊字符
  刚才提到了用多个单词或汉字拼音构造密码。为了让密码的强度再好一些,还可以在单词或汉字拼音之间,插入一些特殊字符。
  最常见的是插入空格。当然,你也可以考虑插入其它字符(比如:下划线、减号、斜杠、井号、星号、等)。
  通常进行暴力破解时,为了加快破解进度,都只针对字母和数字进行暴力破解。如果你的口令中含有特殊字符,会大大提高攻击者的难度。
  优点是:
  由于口令包含较多特殊符号,复杂度大大提高。
  缺点是:
  很多特殊字符的输入,要依赖于SHIFT键辅助,会影响你输入密码的击键速度。这会给偷窥者留下可乘之机。

  ◇字符变换
  所谓的字符变换,就是用形状类似的字母和数字进行相互替换,通过这种变换,可以规避前面提到的基于口令字典的攻击。
  常见的变换有如下几种:
字母o 和 数字0
字母l 和 数字1
字母z 和 数字2
字母s 和 符号$
字母g 和 数字9
字母q 和 数字9
字母a 和 符号@
字母b 和 数字6
字母x 和 符号*

  假设俺想用单词 program 作为口令,那么经过上述的变换之后,就成为 pr09r@m 很明显,变换之后的口令同时具有字母、数字、符号。强度相当好 :)
  如果你有兴趣,还可以对俺给出的这几个变换,进行扩展,以满足自己的习惯和喜好。
  优点是:
  不用改变你原先的记忆习惯。
  由于口令包含较多特殊符号,复杂度大大提高。
  缺点是:
  如果你想好的口令中,恰巧所有字母都没有对应的变换,那就比较不爽啦。

  ◇键位平移
  这个招数也比较简单,就是在进行键盘输入时,把手向右 平移一个键位。通常咱们在盲打时,两只手的食指分别对着字母F和字母J。平移之后,则食指对着G和K。
  假设俺想用单词 program 作为口令,那么经过上述的变换之后,就成为 [tphts, 经过这种输入法,口令已经面目全非。但是对你自己来说,并不难记。
  优点是:
  不用改变你原先的记忆习惯。
  口令看起来完全没规律。
  缺点是:
  依赖于QWERT的键盘布局。万一哪天你想在非QWERT键盘(比如某些手机键盘)上输入口令,那你就歇菜了。

  ◇藏头诗
  在某些古代小说的情节中,经常可以看见藏头诗的桥段。藏头诗的点子,也可以借用来构造安全口令。
   为了用此招数,你先要想好一句令你印象深刻的话。这话可以是中文,也可以是英文、法文、火星文......反正只要是你熟悉的语言既可。最好这句话的字 数(单词数)在6-20之间。然后你把这句话每一个单词的头一个字母取出来,组合成一个口令。如果是中文的话,就把每一个字的拼音的声母取出,组合成口 令。
  假设俺想好的话是:只有偏执狂才能生存。那么用拼音的声母表示就成为:zypzkcnsc
  优点是:
  不用改变你原先的记忆习惯。
  口令看起来完全没规律。
  缺点是:
  口令中仅包含字母,复杂度不够高。
  如果句子中的字数(单词数)不够多,效果就不够好。
  对于港台的同学,由于没学过汉语拼音,只好用英文的藏头诗了。好在港台的英语教育通常比大陆好,应该关系不大 :-)

  ◇巧用SHIFT键
  在构造口令的时候,适当地组合一下SHIFT键,有时也可以达到不错的效果。假如你的口令中,有部分字符是数字,那当你输入口令时,按住SHIFT键会让这些数字字符变为特殊符号。
  优点是:
  不用改变你原先的记忆习惯。
  由于口令包含较多特殊符号,复杂度大大提高。
  缺点是:
  万一你原先的口令仅有字母,没有数字,则密码的强度会稍微打折扣。
  由于要依赖于SHIFT键进行切换,会影响你输入密码的击键速度。这会给偷窥者留下可乘之机。

  ◇利用数学等式
  还有一种又好记,看起来又复杂的密码构造方式——利用数学等式。
  比如,俺的密码可以设计成:
7+8=15
  虽然只有6个字符,但是由于包含了符号,已经有一定的强度。如果你觉得6字符太少,还可以很容易增加,比如改为:
110+9=119
  如果你觉得还不够复杂,还可以搞得再变态一点——把某个数用英文表示。比如:
two+7=nine
  优点是:
  密码同时包含了字母、数字、符号。标准的高复杂度!
  缺点是:
  需要改变你记忆密码的习惯。
  一旦你的口令被别人看到,别人很容易就可以发现你构造口令的规律。

  ◇利用散列值(哈希值)
  最后,来说一种俺的看家本领——利用散列值构造口令。
  不熟悉IT技术的同学,可能不了解散列值是啥玩意儿。俺不想多浪费口水解释,好奇的同学请看维基百科的介绍
   为了构造基于散列值的密码,俺建议大伙儿选用的是CRC32散列算法。为啥用它捏?因为这玩意儿用起来比较方便。比如,假设俺想得到某个文件的 CRC32散列值,只要用WinRAR或7-Zip等压缩工具,把它压缩成zip格式的文件,然后就可以看到该文件的CRC32值了(因为zip格式用 CRC32散列算法作为文件的校验码)。不信你随便拿手头一个zip格式的文件打开来看看就明白鸟。
  现在,详细说一下基于散列值的密码如何构造。
  首先,你先想好一个字符串,作为计算散列的种子。这个字符串不需要很复杂,也不需要很长。比如,你叫张三,那你可以拿张三的拼音声母zs作为种子串。
  假设你有一个hotmal的邮箱,需要设置口令。你可以先用notepad生成一个txt文件。里面先写上种子串sz再写上hotmail,存盘。然后把这个txt文件用工具压缩成zip格式,看一下它的CRC32校验码(是9C9041C0),然后就拿它作为密码。
  如果你再有一个gmail邮箱需要设置口令,只要同样地,往那个txt文件写入zsgmail,然后计算CRC32,既可以得到另外一个值(03B2F77D)。大伙注意到没有?这两个值看起来没有任何关联性,而且从这两个口令,也看不出和种子串zs有啥关系。
  优点是:
  密码同时包含了字母、数字,但是没有特殊符号。复杂度属于中高!
  由于散列值具有随机性。也就是说,你看到的绝大多数散列值都没啥规律。
  由于散列值具有不可逆性。也就是说,即便有一个密码暴露了,攻击者也看不出规律。
  即使有一个密码暴露,别人完全看不出规律。
  如果把CRC算法换成其它算法(比如MD5或SHA-1),可以轻易构造出超长的密码(32个字符)。
  缺点是:
  这种密码是完全随机的,不是常人所能记住滴。所以,在密码分级机制中,它仅适合第二级的密码。第三类密码没法这么玩。

  ★结尾
  今天又花了不少篇幅,总算把俺平生积累的,关于如何构造复杂密码的经验,都讲完了。如果哪个网友还有其它独到的经验,希望来信和俺分享。如果俺觉得实用,也会补充到本文中。
  本系列 的下一个帖子,会说说安全漏洞的基本防范


版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想 和本文原始地址:
http://program-think.blogspot.com/2010/06/howto-prevent-hacker-attack-3.html

分享到:
评论

相关推荐

    google 技巧

    黑客专用信息和资料搜索地址为: http://www.google.com/custom?hl=xx-hacker 这里是google关键字的用法,要设置它为中文,则是 http://www.google.com/custom?hl=zh-CN 英文则是http://www.google.com/custom?hl=en

    网络安全练习网站大全.rar

    综合性黑客game:http://www. 综合性新平台CTF:https://lab.pe 渗透:https://lab.pe CTF :https://ctf.hacker101.c https://ctf-wiki.github.io/ 安恒的平台:登录 - 明御® 攻防实验室 安恒的平台: https://www ...

    GHG_V1_4_0.zip

    转载github的ghg黑客游戏 github地址https://github.com/Nictheboy/GHG/releases/tag/1.4.0

    黑客模拟入侵小游戏

    HackTheGame121一款模拟黑客入侵的小游戏,对于高手来说这个可能有点无聊,但是对于刚接触网络、对网络攻防有兴趣的小黑客们,这个还是有点好玩的,拿出来给大家分享下。

    【系统维护】-防止黑客入侵:DLL后门完全清除方法文.pdf

    【系统维护】-防止黑客入侵:DLL后门完全清除方法文.pdf

    java红酒网站源码-awesome-stars:我的真棒列表由:https://github.com/abhijithvijayan/sta

    二进制黑客 719 批处理文件 名称 描述 作者 星星 1 使用 HWID / KMS38 / 在线 KMS 激活方法激活 Microsoft 产品的脚本集合,重点是开源代码、较少的防病毒检测和用户友好性。 碎石 5368 C 名称 描述 作者 星星 1 ...

    struts2漏洞.rar

    在2013年6月底发布的Struts 2.3.15版本被曝出存在重要的安全漏洞 [1] ,主要问题如下: 可远程执行服务器脚本代码 [2] 用户可以构造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang....

    黑客入门(超级详细版)

    黑客,同样也有正邪之分,本书中详细介绍了计算机的系统安全,及网络安全攻防知识,可以让读者更加了解黑客的技巧及网络攻击的防范措施等。

    Safety-checklist::palm_tree:一些安全备忘清单

    安全备忘清单 :palm_tree:DNSLog (已开源:) :palm_tree:DNS Tools https://tools.ipip.net/dns.php https://viewdns.info/ https://dnslytics.com/ http://dnsspy.io/ http://leafdns.com/ ...:palm_tree:黑客搜索引擎...

    联动天下服务器管理助理

    2.独立程序池,限制CPU使用率,带宽...6.一键对服务器进行安全设置防止黑客入侵,即使您是不懂得服务器管理技术的非专业人员,通过本软件也可以轻松管理服务器了... 网站地址:http://www.72idc.cn/vhostsoft/?cid=fjyou

    Roblox增强器「Roblox Enhancer」-crx插件

    增强Roblox上的网页! Roblox Enhancer将功能应用于Roblox论坛。 ###可能于2017年7月27日或之后关闭此分机#### 更新: ...最佳最佳特点: 跟踪线程,而不刷新 - 快速员额和普通员额的自动收盘报价。...

    监控jar(服务端源码,作者shyFly)

    这是一个小程序,闲着无聊写的跟同事玩的。可以监控别人电脑的服务端,swing写的可直接运行jar。需要联合客户端,服务端一起用。...地址找不到的话搜索:监控jar(服务端,作者shyFly) 服务端可对此客户端实时监控,...

    自助友情连接交换网源代码.rar

    2.黑客入侵查看功能(查看黑客提交了哪些入侵代码),和黑客入侵删除功能(定期删除这些提交的入侵代码)并非程序有漏洞,而是拦截记录! 3.实用查询功能的添加和管理功能! 4.名站导航的添加和管理功能! 5.友情...

    防止黑客入侵,及解决的方法

    八进制信息安全团队是中国民间一个倡导并从事前慑性信息安全技术研究的互联网资讯站点。 站点采用团队管理模式,为来自五湖四海的信息安全爱好者们能够团结在一起,而造就了一个和谐平静的技术交流平台。 我们十分...

    mySapAdventures:测试针对n00bz和漏洞赏金猎人的入侵SAP应用程序的快速方法

    针对n00bz和漏洞赏金猎人的SAP应用程序测试/黑客攻击的快速方法 创建人:Jay Turla( ) 发现 检查应用范围或程序摘要以进行测试。 记下用于连接到SAP GUI的主机名或系统实例。 如果应用程序面向Internet或公共,...

    [详细完整版]网络安全总结.txt

    3:数字签名机制作用? 消息源认证:消息的接收者通过签名可以确信消息确实来自于声明的发送者。 不可伪造:签名应是独一无二的,其它人无法假冒和伪造。 不可重用:签名是消息的一部分,不能被挪用到其它的文件上。...

    黑客基地:C语言编程特训班特训3

    黑客基地:C语言编程特训班特训2 由站长整理提供,并在csdn首发 下载请评论。

    手把手教你如何防止黑客入侵借鉴.pdf

    手把手教你如何防止黑客入侵借鉴.pdf

    linux防火墙iptables用denyhosts防止黑客入侵.zip

    linux iptables用denyhosts防止黑客入侵.zip

    ewebeditor6 for jsp 简体中文带后台完整版

    这样可以最好的保证安全,以防止密码被猜解,而通过后台程序的黑客入侵。 删除文件夹:ewebeditor/admin/ 4. 网站安全小常识 ----------------- 一个网站的安全,与这个网站上的任一页程序都有关。只要一个程序页...

Global site tag (gtag.js) - Google Analytics