验证码的现在与未来

开发 前端
“验证码”( CAPTCHA )其实并不是各位网友总是在不同网站上看到的难以辨认的字母组合的代名词,而是“全自动区分计算机和人类的图灵测试”的俗称,顾名思义,它的作用是区分计算机和人类。

什么是验证码

“验证码”( CAPTCHA )其实并不是各位网友总是在不同网站上看到的难以辨认的字母组合的代名词,而是“全自动区分计算机和人类的图灵测试”的俗称,顾名思义,它的作用是区分计算机和人类。

 

image

 

在 CAPTCHA 测试中,作为服务器的计算机会自动生成一个问题由用户来解答。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答 CAPTCHA 的问题,所以回答出问题的用户就可以被认为是人类。 CAPTCHA 是由计算机来考人类,而不是标准图灵测试中那样由人类来考计算机,因此人们有时称 CAPTCHA 是一种反向图灵测试。

验证码是否真的保护了计算机系统

一队来自斯坦福大学的研究人员 PALO ALTO 指出很多验证码完全没有发挥应有的作用。这些研究人员甚至设计了一个通用程序,这个程序能够以极高的成功率识别出许多网站上的验证码,包括 Visa 旗下网站 Authorize.net ,暴雪官方网站, eBay ,以及维基百科。

这种识别技术用到了机器人视觉领域的一种概念模型,它有助于机器人不受图像噪点的干扰正确识别物体的外形。斯坦福这个名为 Decaptcha 的工具使用上述指导思想编写的算法能够将扭曲变形且充满噪点的图片分割成可以通过光学识别技术( OCR )辨别的字母和数字。

“大多数验证码投入使用之前都没有经过必需的验证,也缺少可靠性测试。” 来自斯坦福大学安全实验室的研究人员 Elie Bursztein 博士后说:“我希望我们的研究能够让人们更为慎重的对待验证码的设计和使用。”

Decaptcha 能够成功识别 66% Visa 支付网站 Authorize.net 上的验证码图片,并可以顺利攻陷暴雪娱乐网站上 70% 的验证码。而维基百科有四分之一的验证码可以辨识,在 CNET 以及 Digg.com 上这个数字降低到了五分之一。百度的验证码虽然仅有 5% 的辨识率,但是在测试过程中同样的验证码出现的频率竟高达 98% ,非常容易被攻击者用穷举法攻破。来自斯坦福的这个研究团队随后指出,任何可辨识率超过 1% 的验证码系统都不应该被继续使用下去。

各大网站的验证码识别率:

 

image

 

随后暴雪发表声明说,他们明确的知道验证码技术并不具有足够高的安全性。”我们仅在初级安全层使用验证码技术抵挡一些特定的攻击,比如注册环节。我们使用一些更为安全可靠的技术来保护我们的客户与骨干服务器。“来自暴雪的 Shon Damron 这么说。

如今的验证码

验证码技术在目前的网络世界中仍然十分重要,它有助于阻止自动机器人批量注册网络邮箱并发送垃圾邮件,还能防止留言板被自动程序填塞广告,甚至使投票系统更能反映真实情况。

各大网站所使用的验证码范例:

 

image

 

新浪微博所使用的中文验证码范例——似乎没有考虑到国际化的情形:

 

image

 

到目前为止,只有 Google 的验证码完全阻挡了 Decaptcha 的辨识, Google 在 2009 年从卡耐基梅隆大学收购的 ReCaptcha 项目也 表现出了极其高的可靠性。目前 ReCaptcha 已经被广泛地使用在了近 10 万网站上,这些网站包括 Twitter 、Facebook、Craigslist、TicketMaster (一个出售各类演唱会、体育比赛、歌剧以及艺术展览门票的网站)以及微软( Microsoft )。

Bursztein 希望开发者能够更加系统的设计和使用验证码技术,他举了一个例子: 20 世纪 80 年代人们通常埋头设计的自己的计算机程序算法,但随着时间的推移,大家发现对等测试和专业安全性评估也是非常重要的。

展望验证码的未来

较早前有报道指出, Google 正在测试一种新的验证码技术,这种验证码技术不像传统验证码系统要求输入文字,而是要求用户将图形旋转到正确的方向:

 

image

 

另一种基于图像的验证码:

 

Dice Captcha

 

类似的验证码还有要求用户输入当前时间,所访问的网站域名,自己所在的时区,甚至美国总统姓名,人类第一颗登陆的地外星球等。这类验证码主要考虑到 通常自动计算机程序没有足够的逻辑思考能力,不能辨识并解答逻辑问题。拼图验证码,找不同验证码(比如从几张猫的图片中找出一张狗的图片)的验证码从本质 上来说也非常类似,但目前没有大规模部署这类验证码的主要原因是没有足够的资源,难以抵挡穷举攻击(攻击者多次刷新验证码后可能出现相同的问题)。

要求用户绘制图形的验证码:

 

tumblr_lm8a5ecuS31qzrula

 

要求用户完成复杂算术题的验证码——显然过于复杂而显得不友好:

 

image

 

验证码也带来了更多的可能性,比如通过广告盈利的机遇,下面这则验证码示范了利用验证码展示广告:

 

XH8DY

 

但遗憾的是由于其同样不具有规模性,仍受到穷举攻击的威胁。

这些未来的验证码技术同时还应该考虑到辅助功能。假如用户有视力障碍,他应该可以选择通过聆听验证码音频的方式完成验证,这也是基于字符的验证码技术迟迟未能被取代的主要原因之一。

总结

验证码技术是一种计算机技术发展下的矛盾产物,人类渴望计算机能够通过自动化的过程完成更多的任务,却同样要防止计算机被利用在破坏与恶意的用途当中。随着人工智能领域的研究成果越来越先进,计算机将变得越来越通情达理(想想 Siri ,想想 IBM 最新的超级智能计算机 Watson)。

图灵当年设计图灵测试时,旨在推动人工智能的发展,并从哲学与计算机科学的角度上论证制造类人类机器人的可行性,但他恐怕永远也想象不到有一天,人类将如此迫切的需要一种技术来将自己与计算机系统严格地区分开来。

如果有一天,计算机能够通过验证码验证,我们又该如何区分人类和计算机呢?

【编辑推荐】

  1. Web前端开发规范文档
  2. 您适合从事Web前端开发行业吗?
  3. 谁将引发革命 寻找下一个主流开发平台
  4. 自己动手开发最好的代码编辑器
  5. Web开发者必备的JavaScript单元测试工具
责任编辑:陈贻新 来源: 爱范儿
相关推荐

2011-11-02 12:43:33

2013-06-19 10:19:59

2021-01-19 10:29:34

短信验证码密码

2022-02-11 07:10:15

验证码

2015-03-17 09:28:04

2020-11-16 07:28:53

验证码

2019-06-18 07:12:25

验证码漏洞加密

2009-08-11 14:05:28

JSP验证码

2009-02-09 14:17:36

2015-03-23 17:58:04

验证码倒计时并行

2015-09-21 15:31:05

php实现验证码

2017-12-21 07:38:19

2022-01-20 10:54:23

移动手机短信验证码隐患

2016-11-03 13:33:31

2016-11-08 19:19:06

2017-03-19 22:43:12

WebAssemblyJavaScript编程

2009-11-26 10:48:59

PHP验证码

2015-03-23 18:03:36

短信验证码正则自动填写

2009-08-12 11:05:00

点赞
收藏

51CTO技术栈公众号