论附加码的安全
套话在先:本文只想引起那些网站的设计者们的注意,同时也给一些对安全感兴趣的初学者一些启示作用
在计算机安全领域中,相信大家对穷举密码破解和字典密码破解这两个名词一定耳闻详熟了,对于一些黑客或准黑客来说,这是最最常用的有效获得别人密码的方法。
在网络飞速发展的今天,网速已不在成为网络访问的瓶颈,在为人们上网提供更快的访问速度的同时也给黑客们提供了更广阔的发展空间,在线破解越来越大地威胁着网络安全。本文就谈谈在网络上,使用附加码的方法阻挡来自HTML页面提交的穷举的方法中的矛与盾。
如果你对网络有一些了解,在你上网的时候你应当被一些页面要求填写附加码的表单才能正常进入你的帐号。更进一步,如果你对安全有一些了解,你一定知道有专门的破解工具可以在线破解别人BBS帐号或在线邮件账号密码的工具,如大名鼎鼎的小榕之朔雪。那么附加码与朔雪类工具软件有什么联系呢?可以简单地说,附加码可以有效防止朔雪对你的攻击。
为什么附加码又有如此威力呢?我们先简单分析穷举的原理。穷举法攻击最重要的一个条件是:密码在攻击期间内不能变化。它总能在所有字母组合中通过不断地“试”直到成功的方法找到真正的密码。所以穷举法也可以叫排除法,和警察排除犯罪谦疑人差不多。那么,能不能在身份验证的时候加入动态的验证内容,使每一次身份验证时都输入不同的验证码来防止类似攻击呢?能!那就是附加码!附加码在WEB服务器上随机产生并记下来,再生成文字传给用户,用户照着手动输入提交,服务器对提交的附加码与记下来的附加码对比一下正不正确就完成了验证。因为每一次产生有附加码是随机的,所以朔雪就无能为力了。
但这也不是说有了附加码就高枕无忧了。那还得看你对附加码的认识和重视程度如何。
想一想,既然WEB服务器都把附加码传给了浏览器,哪为什么朔雪就不能把它读出来自动填上呢?理论上完全可以,只是朔雪没有那样做罢了。我想只要小榕愿意,用不了多大功夫就能作出来。
哪不是附加码就没用了吗?也不是,下面我们再来看看什么样的附加码是最安全的。
一、 如果返回的附加码以文本形式返回。这是最弱智的一种附加码。攻击者简单提取文本附加码自动填上就可以了。写这种程序的程序员该去学习学习安全基础再写程序,可以说他对附加码的一点认识都没有。这种附加码对安全一点帮助都没有,反而加大了用户的输入负担。[顺便提一句:我看到有些网站的附加码输入框是密码类型的输入框,输入显示*号,这也是不能再弱智做法了,想一想,附加码都显示出来了,还用密码类型的输入框有何用?这是对用户的一种愚弄!]
二、 以图片方式返回附加码。这才算是真正有效的附加码。因为图片是以点的方式而不是字符方式呈现给用户的,朔雪就不能直接读到附加码了。这种方法很有效。但世上的事物总是矛与盾的较量。攻击者还可以用图片识别技术识别图片上的字符,把图片字符还原为文本字符。这是完全可行的。那我们该如何防范呢?加大图片识别难度!
三、 返回加干扰的图片附加码。这才算是真正实用的附加码。如果我们加干扰就可以有效加大图片识别难度。有些网站的附加码是加了干扰点的,有些是变了色的字,等等不一而足。试想一下,如果别人花一秒钟才能识别出图片上的附加码,或者他的识别率不高,那穷举法不是就变得毫无实际意义了?对。但遗憾的是现实中,附加码的干扰要不是没有,要不是干扰强度不够。单纯地加干扰点或变色或变字符的大小等都是不够的。为什么?毛主席说过,没有实践就没有发言权,我作了一个测试小软件,它可以识别出现有的90%以上的不同形式的附加码,任何字体,任何字符,任何颜色,任何图片大小均可100%识别成功!可识别JPG,BMP,GIF三种流行格式图片,而我只花了两天功夫就完成了。我试过几个包括腾讯在内的大型网站,结果令人失望,100%的识别率让我大跌眼镜。根据我总结的经验,干扰这样加是最有效的:随机渐变色(包括文字和背景)+所有可打印字符+字符大小随机变化+位置不固定+象素行或列随机错位。这样的附加码要想要破解基本上是不可能了。但别把图片变得连人眼都认不出了。^_^
另外,如果要有效防止在线穷举破解,采用帐户锁定办法是最最有效的一种方法,即在用户输错密码指定的次数后,冻结帐户一段时间,使在线破解失效。
如果你需要我的测试程序(包括Delphi 6源程序),请到http://www.135791.com去下载。
传载请保持本文完整性,初次写安全方面的贴子,不敬不对之处请好言共免之
|