?????????????

http://program-think.blogspot.com/2010/06/howto-prevent-hacker-attack-1.html

用代码行数测算软件开发进度如同按重量测算飞机制造进度。
——比尔·盖茨

2010 年6月8日

如何防止黑客入侵[1]:避免使 用高权限用户

本帖国内镜像:
http://blog.csdn.net/program_think/archive/2010/06/09/5657269.aspx

  为啥俺把这个话题列在头一条?——因为这是个非常普遍、且远远没有得到重视的问题。根据俺的经验,如果你能够养成好习惯,不使用高权限用户(尤其是管 理员)进行日常操作,就可以大大降低被黑的概率。下面,俺就来具体介绍一下。

  ★基本概念扫盲
  考虑到本文是面向外行人士,先进行一下名词解释。
  ◇用户权限
  所谓的“用户权限”,通俗地说,就是某个用户的权力有多大。权力越大,能干的事情越多。

  ◇用户组
  用户组,顾名思义,就是一组用户的集合。
  在主流的操作系统中,“用户权限”通常是和“用户组”挂钩滴。针对不同的用户组,分配了不同的权限。
  为了让用户省事儿,Windows系统内置了若干用户组(比如:Users、Power Users、Guests、等)。这些内置的用户组,事先已经预定义好若干用户权限。

  ◇高权限用户:
  本文提及的“高权限用户”,主要是指Windows系统中Administrators组的用户或POSIX系统中root组的用户。
  另外,顺便消除一个误解。很多菜鸟以为:Windows系统中,只有用户名为“Administrator”的用户才具有管理员权限。其实捏,任何一 个用户,即使用户名不叫“Administrator”,只要是属于“Administrators组”,也同样具有管理员权限。

  ★反面教材
  菜鸟的例子就不提了,光说说俺接触过的很多程序员吧。这帮家伙在使用Linux/Unix系统进行开发时,都晓得应该用普通用户的帐号进行操作;当需 要做某些高级权限的操作,再切换到管理员帐号(root帐号)。但即便是这些开发人员,在自己的Windows系统中,却喜欢用管理员 (Administrator)进行日常操作,实在是很讽刺。
  如果连IT专业的开发人员都这样,那不懂IT技术的外行人士,就可想而知了。

  ★危害性
  如果你平时总是用管理员权限登录到系统并进行日常工作,那就意味着你所运行的每一个程序,同时也具有了管理员权限。要知道,管理员权限的权力是很大 的,几乎可以干任何事情。
  假设你有上述习惯。某天,你从网上下载了一个软件,且软件已经感染了病毒。那么,当你运行这个软件时,这个病毒就会被激活。要命的是,它也同样具有管 理员权限。这时,病毒就获得了和杀毒软件平起平坐的地位。假如这个病毒的作者水平再高一些,甚至可以骗过杀毒软件或者直接把杀毒软件干掉。
  除了病毒,木马也是一样。假设你上网的时候,一不留神访问了某个挂马的网站。一旦木马被激活,也同样是以管理员的权限运行,危害同样也巨大。

  ★你该如何做?
  考虑到Windows系统的用户占绝大多数,俺就光拿Windows系统来说事儿。希望Linux和Max OS的fans不要见怪。
  为了尽量少用高权限用户。你最好刚装好系统之后,单独创建一个非管理员用户。

Oqaaagpzacgaz6kdzlmpreramwzkcx

你可以让该用户仅仅属于“Power Users组”,如下图:

Oqaaafdrkmndrsccpijc3vlnp4czg6

如果想更安全的话,可以仅仅加入“Users组”,如下图:

Oqaaaclrgwmgllvksjycxuonipiqrf

  今后,就主要通过这个用户进行日常的操作。
  考虑到有些同学不了解这两个用户组,在权限方面与管理员有啥区别。俺简单列举一下。

  ◇Power Users组与Administrators组的差别
  相对于Administrators组,Power Users组缺少了如下几项权限(俺只列主要的):
  1、不能添加、删除、禁用系统中的其它用户。
  2、不能修改其它用户的属性(包括口令、所属的用户组、等)
  3、不能安装/卸载硬件驱动程序。
  4、不能安装/卸载某些应用软件。
  5、不能查看系统的安全日志。

  ◇Users组与Administrators组的差别
  User组的权限比Power Users组的更小。除了Power Users组做不到的事情,Users组还缺少如下权限(俺只列 主要的):
  1、不能修改系统时间。
  2、不能修改某些系统目录(包括:系统盘的 WINDOWS 目录、系统盘的 WINDOWSSYSTEM32目录、系统盘的 Program Files目录)。
  3、不能启动/停止某些系统服务。
  4、不能修改注册表“HKEY_LOCAL_MECHINE”下的所有键值。

  从上述对照,明显可知,Users组的权限更小,使用起来更安全。比如说,即使你运行了一个带病毒的程序,由于病毒和你一样,也仅有Users组的权 限。所以病毒也就无法修改/破坏重要的系统目录,掀不起太大风浪。

  ★可能的麻烦
  通常来说,越安全的措施,往往也意味着越麻烦。但是这些麻烦,都有相应的解决之道。

  ◇切换用户的麻烦

  当你以普通用户身份登录后,可能由于某些原因,需要用管理员用户干点事情。但是你(可能是开了很多程序)又不想把当前用户注销。
  俺的建议是:
  使用“快速用户切换”(洋文叫:Fast User Switching)功能来切换用户。此功能从Windows XP开始提供。简单地说,就是可以让几个不同的用户同时登录同一个系统,平滑地切换。有了此功能,这个麻烦就不明显了。

  如果你非常不幸,还在使用比较古老的Windows 2000系统;或者你使用的是Windows的服务版本(比如Windows Server 2003)。在这些版本的Windows系统中,默认是没有“快速用户切换”功能滴。这可咋办捏?

  俺的建议是:
  可以在不注销当前用户的情况下,启动一个具有高级用户权限的程序。
  为了说清楚,俺举例如下:
  假设俺当前处于一个普通用户的环境,但是想另外启动一个具有管理员权限的程序,比如说命令行程序(cmd.exe)。
  1、首先,俺先创建一个指向 cmd.exe 的快捷方式。(该怎样创建快捷方式,俺就不用再教了吧?)
  2、用鼠标选中该快捷方式,在快捷菜单(右键菜单)中,选择“属性”菜单项。出现如下对话框。

Ogaaahxcbwt5kkiscmvbv0y_0yekra

  3、在该对话框中,点“高级”按钮。出现如下对话框。把“以其他用户身份运行”选项打勾,即可。至此,快捷方式创建完 毕。

Oqaaal8qc09gkhtg-sezljhmngtz30

  4、以后,如果俺想在普通用户环境中,以管理员身份执行命令行,只要运行该快捷方式,然后会弹出如下对话框。你只要在该对话框中输入管理员的用户名和 口令,就能以管理员的身份,把该命令行启动起来。

Ogaaadrrcaeb85rm20jizulpactndw

  ◇安装软件/驱动的麻烦
  最主要的问题就是安装软件和安装驱动。安装驱动程序通常需要用管理员权限才行;另外,很多软件(比如Office)在安装时,也要求用管理员权限的用 户进行安装。

  俺的建议是:
  在刚装好系统之后,先用管理员用户把上述这些软件/驱动程序都搞好。然后,就无需再用管理员用户了。毕竟你经常使用的软件相对固定,不可能三天两头安 装软件或驱动(除非你是软/硬件发烧友)。即便偶尔需要重新装个软件或驱动,也可以用上述介绍的方式,临时切换到管理员权限。

  ◇修改系统时间的麻烦
  如果你平时用的是“Users组”而不是“Power Users组”,那你连修改系统时间的权限也没有。
  俺的建议是:
  启用Windows系统自带的时间同步服务,让它帮你自动同步系统时间。

  除了上述这几点,如果还有谁碰到其它的麻烦,也欢迎来信跟俺交流。俺会补充到本文中。本 系列的下一个帖子,将会介绍攻 击者是如何搞定你的口令/密码


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


http://program-think.blogspot.com/2010/06/howto-prevent-hacker-attack-2.html

好代码本身就是最好的文档。
——Steve McConnell (《代码大全》的作者)

2010 年6月15日

如何防止黑客入侵[2]:攻击者 如何搞定你的口令/密码?

本帖国内镜像:
http://blog.csdn.net/program_think/archive/2010/06/15/5673033.aspx

  在上 一个帖子,俺强调了高权限用户的潜在风险。接下来,咱要介绍一下,和口令相关的安全话题。毕竟在大伙儿的日常生活中,口令的使用是必不可少滴。   考虑到和口令相关的内容较多,俺分两部分来说:今天首先揭露攻击者的种种伎俩;下一帖再详述应对的措施。

  ★使用密码的场合(密码的类型)
  为了便于后面的叙述,俺有必要先总结一下,使用口令的几种场合。
  针对这几种不同的场合,攻击者会采取不同的攻击手法;因此,大伙儿也要采取针对性的防范手法。

  ◇操作系统用户的口令
  这种场合应该好理解。目前主流的操作系统都具有口令验证的用户登录机制。

  ◇各种网络应用的口令
  随着网络(尤其是Web)的普及,这种场合越来越多。比如:Email、即时通讯(IM)、BBS、上网炒股、等,都需要有用户口令认证。

  ◇各种本地应用程序的口令
  此种场合可能不如网络应用的口令那么常见。比如:用口令加密的压缩文件、用口令加密的Office文档、PGP密钥的口令、Outlook设置的启动 口令、等。

  ◇其它
  除了上述3种类型,其它那些比较少见、杂七杂八的,统统归为其它。比如:BIOS的开机口令。

  ★攻击者如何通过技术手段搞定的你的密码?
  前面列举了密码的不同使用场合。接着咱要介绍一下:攻击者会利用哪些技术手段,攻破你的密码。

  ◇木马盗取
  如果你的电脑已经被攻击者安装了木马,那你的一举一动有可能都会被监视。在这种情况下,你在这台电脑上输入的任何密码,都将会被攻击者获取。所以,这 种情况是很危险滴——不管是哪种类型的密码,都可能被盗。
  至于如何防止自己的计算机被植入木马,不是本帖的重点。俺会在本 系列后续的帖子中专门介绍木马的防范。

  ◇弱密码猜解
  所谓的“弱密码猜解”,就是说:如果你的密码比较弱,攻击者可以猜出来。这种攻击手法,对于操作系统用户口令、网络应用口令、本地应用口令,都适用。 而且攻击者在盗取口令的时候,通常会先尝试进行弱口令猜测。为啥捏?
  因为大部分用户都不太具有安全意识,口令都会比较简单(比较弱)。并且,根据二 八原理,绝大多数的傻瓜用户会使用极少数的弱口令。所以,攻击者先把最流行的那些个弱口令挨个试验一遍,没准就已经成功了。
  为了让大伙明白弱口令的严重程度,来看看2009年底的“一 个案例”。
  话说国外一个小有名气的交友网站(RockYou)被黑客攻破。里面大约3260万用户数据被盗。更加杯具的是,RockYou采用明文方式存储用户 的口令。因此,这3260万用户的口令也统统暴露鸟。后来有好事者把被盗的用户口令拿来分析一番。结果发现,有相当多的用户在使用一些极其弱智的口令。
  用的最多的TOP 10分别是:
1、123456
2、12345
3、123456789
4、password
5、iloveyou
6、princess
7、rockyou
8、1234567
9、12345678
10、abc123
据说名列第一的口令(123456)有30万人使用,真是不看不知道,一看吓一跳啊!

  ◇暴力破解
  除了对弱密码进行猜解,攻击者还可以通过穷举的的方式,破解中等强度的密码。所谓的穷举法,就是把所有可能的字母/数字的组合都试验一遍,直到找到正 确的密码。
  现在CPU的计算能力日新月异,尤其是多核CPU普及之后,暴力破解的效果会越来越好。除非你的密码很强,才能彻底消除暴力的风险。
  由于这种攻击手法,需要进行成千上万次的试错,所以比较适合针对本地应用的口令(比如破解加密的压缩文件),而不太适合对网络应用进行在线口令破解。
  在下一个帖子,俺会介绍,如何构造强度较高的密码。

  ◇网络传输截获(嗅探)
  在这种方式下,攻击者会通过嗅探的方式,分析你的上网数据。如果你在上网过程中,存在明文传输的口令,就会被截获。
  非安全专业的网友,可能不太明白什么是“嗅探”,俺来稍微解释一下。攻击者会利用某些嗅探软件,收集网络上传输的所有数据。这个过程好比电话窃听。嗅 探软件类似于窃听器;你的上网数据类似于电话的通话内容。
  这几年,随着现在无线网络(Wi-Fi)的普及,网络嗅探的风险大大增加,列位看官切不可掉以轻心哦。

  ◇客户端截获
  所谓“客户端截获”,通常是针对网络应用的口令而言。举几个例子。
  例1:
  很多网友上网时,为了免去输入口令的麻烦,会让浏览器帮忙记住口令。通常浏览器会把这些口令保存在某个文件中(可能以明文方式,也可能以密文方式)。 如果某天你的电脑中了木马,那么木马程序有可能会盗走这个保存口令的文件。然后攻击者就可以通过分析该文件,破解出你保存过的所有网络应用的口令。
  例2:
  如果你是软件公司的开发人员,多半你会使用某种源代码版本管理工具(比如SVN、CVS、等)。为了免去每次操作时输入口令的麻烦。通常开发人员会让 这些客户端软件记住用户名和口令。如果哪天你中了木马或者电脑被盗,那么攻击者同样可以破解你保存下来的口令,进而用你的身份盗取源代码。

  ◇服务端截获
  和“客户端截获”方式相对的,还有“服务端截获”。具体是啥意思捏?俺来解释一下。
  凡是利用口令进行验证的软件系统,都需要存储和口令相关的信息。否则的话,软件系统就无法验证用户输入的口令,到底是不是正确的。如果攻击者能够拿到 这些口令的关联信息,那他/她就有可能分析出口令是啥。
  (如果你不是搞IT专业的,下面这段可能看不太明白)
  通常用三种方式来存储口令的关联信息:1、存储口令的明文;2、存储口令经过加密后的密文;3、存储口令的散列值。第一种方式是最土鳖的,稍微先进一 些的系统,都不会用了。后面两种方式,虽然看不到明文,但是攻击者还是有办法通过相应的算法,反推出口令的明文。具体细节,本文就不再多说了。
  那攻击者如何获得存储在软件系统的口令关联信息捏?其实前面提到的RockYou网站的杯具,就是一个很好的例子。俺再举另一个例子。
  比如:某个Linux/Unix服务器存在安全漏洞,攻击者利用此漏洞搞到了“/etc/shadow”文件。那么攻击者就可以采用上述提到的暴力破 解的招数,攻破该服务器上所有强度较弱的口令。

  ★攻击者如何通过“非技术”手段搞定的你的密码?
  说完了技术手段,自然就得再说说技术手段。所谓的非技术手法,也就是社会工程学手法(关于社会工程学的扫盲,请看“这 里”)。用于盗取密码的社会工程学手法,大概有如下几种。

  ◇偷窥
  偷窥是最简单的一种社会工程学攻击手法。虽然简单,但是有效。比如很多盗取银行卡的家伙,就是偷窥的手法,得到被害人的银行卡密码。

  ◇钓鱼
  另外一个骗取口令的方式,就是通过网络钓鱼。比如某些攻击者,会伪造一个银行的网站。其界面和真实的网站一模一样。然后通过某种方式(比如:虚假链 接、欺诈邮件、DNS欺骗、等),引诱你到这个网站上。由于假网站和真网站的界面很像,你可能信以为真,然后在假网站中输入你的用户名和密码。
  有些高明的钓鱼网站,会采用类似Web代理的技巧:把你的所有输入操作,转而提交给真网站;然后把真网站输出的界面,再转回给受害者看。这样的话,受 害者就跟在真实网站进行插作,没啥区别,不易看出破绽。
  更多关于网络钓鱼的介绍,可以参见“这 里”。

  ◇分析
  如果攻击者对你比较了解,那么他有可能通过深入的分析,攻破你的口令防护。是不是觉得很神奇?很匪夷所思?其实这种招数很常见,且不算太难。俺来举个 例子。
  相信很多网友都用过电子邮箱的找回口令功能。当你口令遗忘之后,可以通过回答事先预设的问题,来找回口令。很多不太专业的用户,预设的问题都很简单 (比如:你的手机号是多少?比如:你的生日是哪天?)。对于这类过于简单的问题,攻击者可以很容易地找到答案,从而窃取到你的邮箱口令。

  ◇欺骗
  最近几年,通过电话诈骗,骗取银行卡密码的案例越来越多。这种作案手法,就属于社会工程学中,“欺骗”的范畴。其实在IT领域,某些黑客也会利用这种 手法来获取口令。具体的一些欺骗的伎俩,可以参见俺之前的“社 会工程学系列”帖子。

  ★结尾
  介绍到这里,列位看官对黑客盗取口令的手法,应该有一个初步的认识了。本 系列的下一个帖子,将会具体介绍如 何构造安全的口令/密码


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


http://program-think.blogspot.com/2010/06/howto-prevent-hacker-attack-3.html
当 你用一个手指指着某人时,注意其他三个手指指向哪里。
——Gerald M. Weinberg (软件工程大牛) 相关帖子

2010 年6月20日

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

本帖国内镜像:
http://blog.csdn.net/program_think/archive/2010/06/20/5682094.aspx

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

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

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

  ◇第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

Post a comment or leave a trackback: Trackback URL.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s