2.5动态口令认证技术
动态口令技术是对传统的静态口令技术的改进,它采用双因子认证的原理,即用户既要拥有一些东西(something you have),如系统颁发的Token(令牌),又要知道一些东西(something you know),如启用Token的口令。当用户要网上投票登录系统时,首先要输入启用Token的口令,其次还要将Token上所显示的数字作为系统的口令输入。Token上的数字是不断变化的,而且与认证服务器同步,因此用户登录到系统的口令也是不断地变化的(即所谓的“一次一密”)。
双因子认证比基于口令的认证方法增加了一个认证要素,攻击者仅仅获取了用户口令或者仅仅拿到了用户的令牌访问设备,都无法通过系统的认证。而且令牌访问设备上所显示的数字式不断地变化,这使得攻击变得非常困难。因此,这种方法比基于口令的认证方法具有更好的安全性,在一定程度不同上解决了基于静态口令的认证方法所面临的威胁。
动态口令认证技术具体的实现即是验证码。
所谓验证码,是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。验证码可防止大规模匿名操作的发生,如某些用户利用软件自动注册、登录、投票等不公正行为。而加上随机的验证码之后,软件不可能计算出一样的验证码,因此就无法投票了。
2.5.1验证码起源
因为攻击者会使用有害程序注册大量的Web服务帐户(如Passport)。攻击者可以使用这些帐户为其他的用户制造麻烦,如发送垃圾邮件或通过同时反复登录多个帐户来延缓服务的速度。在大多数情况下,自动注册程序不能识别此图片中的字符。简单的说呢,就是防止攻击者编写程序,自动注册,重复登录暴力破解密码。验证码技术应运而生。
2.5.2验证码实现流程
服务器端随机生成验证码字符串,保存在内存中,并写入图片,发送给浏览器端显示,浏览器端输入验证码图片上字符,然后提交服务器端,提交的字符和服务器端保存的该字符比较是否一致。一致就继续,否则返回提示。攻击者编写的robot程序,很难识别验证码字符,顺利的完成自动注册,登录。而用户可以识别填写,所以这就实现了阻挡攻击的作用。而图片的字符识别,就是看图片上的干扰强度了。就实际的效果来说,验证码只是增加攻击者的难度,而不可能完全的防止。