2011年的老文.................转自于伯乐在线:http://blog.jobbole.com/4655/

      有一个机会,朋友推荐一个创业的哥们给我认识,方向就是验证码识别,当时以各种不明显的陈述推诿掉,起初是职业道德的约束,到后来才发现,这其实是一个无比困难的问题。可以利用现有的API很快地做好一个可以运行的演示程序,但如果要改进,着实困难。


什么是验证码

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

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

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

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

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

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

Decaptcha 能够成功识别 66% Visa 支付网站 Authorize.net 上的验证码图片,并可以顺利攻陷暴雪娱乐网站上 70% 的验证码。而维基百科有四分之一的验证码可以辨识,在 CNET 以及 Digg.com 上这个数字降低到了五分之一。来自斯坦福的这个研究团队随后指出,任何可辨识率超过 1% 的验证码系统都不应该被继续使用下去。

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

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

如今的验证码

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

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

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

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

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

展望验证码的未来

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

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

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

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

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

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

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

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

总结

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

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

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

后记:

我来回答:所有的验证码设计都是为了防止计算机登录,那么人类设计的验证码始终以人的优势来衡量,这个区别在人主导的世界里必定是人为胜者。

CaptCha的现状与未来的更多相关文章

  1. 十位一线专家分享Spark现状与未来----峰会摘录

    CSDN大数据技术: 十位一线专家分享Spark现状与未来(一) 十位一线专家分享Spark现状与未来(二) 十位一线专家分享Spark现状与未来(三) 部分摘录: 加州大学伯克利分校AMP实验室博士 ...

  2. 【转载】 第四范式涂威威:AutoML技术现状与未来展望

    原文地址: https://www.jiqizhixin.com/articles/2018-07-12-17 -------------------------------------------- ...

  3. 第四范式涂威威:AutoML技术现状与未来展望

    以下内容是对AutoML技术现状与未来展望讲座的总结. 1.机器学习定义 <西瓜书>中的直观定义是:利用经验来改善系统的性能.(这里的经验一般是指数据) Mitchell在<Mach ...

  4. AutoML技术现状与未来展望

    以下内容是对AutoML技术现状与未来展望讲座的总结. 1.机器学习定义 <西瓜书>中的直观定义是:利用经验来改善系统的性能.(这里的经验一般是指数据) Mitchell在<Mach ...

  5. 【阿里云IoT+YF3300】1.时代大背景下的阿里云IoT物联网的现状和未来

    “未来十到二十年,大家基本已经形成了一个共识,那便是新格局的奠定将由 AI 和物联网技术来支撑.放眼国内,在这些互联网巨头之中,未来真正成为竞争对手厮杀的,阿里和华为是首当其冲,在这两个领域双方分别暗 ...

  6. (函数即服务)Faas的现状与未来

    刚看到jolestar一位从法律转行程序员的前辈写了一篇Faas现状与未来的文章,里面很多观点都很有启发,或许正如他说的那样,由于Faas能较好的解决资源利用率和开发效率问题,2018年Faas将变得 ...

  7. 【转载】 AutoML技术现状与未来展望

    原文地址: https://www.cnblogs.com/marsggbo/p/9309520.html ---------------------------------------------- ...

  8. k8s极简史:K8s多集群技术发展的历史、现状与未来

    引子 随着云原生技术的普及,越来越多的企业使用Kubernetes来管理应用,并且集群规模也呈爆发式增长,企业也亟需应对随集群规模增长而带来的各种挑战.同时,为了更好地提供高可用.弹性伸缩的应用,企业 ...

  9. [004] .NET 的现状和未来

    我们总是能听到一些人说,.NET 不行.学 .NET 没发展前途之类的言论,有的童鞋听多了便也开始怀疑自己选择的 .NET 方向是不是错了. 不得不承认,在 .NET 没有实现跨平台之前,市场行情确实 ...

随机推荐

  1. python数据标准化

    def datastandard(): from sklearn import preprocessing import numpy as np x = np.array([ [ 1., -1., 2 ...

  2. js对对象的校验技巧,随时更新

    js中,字符串长度用length. 若不确定一个Map里,是否存在某个对象,则用underfind 去校验

  3. 在Win32 Application 环境下实现MFC窗口的创建

    // Win32下MFC.cpp : Defines the entry point for the application.// #include "stdafx.h" clas ...

  4. 第二次组队赛 二分&三分全场

    网址:CSUST 7月30日(二分和三分) 这次的比赛是二分&三分专题,说实话以前都没有接触过二分,就在比赛前听渊神略讲了下.......不过做着做着就对二分熟悉了,果然做题是学习的好方法啊~ ...

  5. [jQuery]jQuery获取URL参数

    // jQuery url get parameters function [获取URL的GET参数值]// <code>// var GET = $.urlGet(); //获取URL的 ...

  6. nyoj-20-吝啬的国度(深搜)

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 在一个吝啬的国度里有N个城市.这N个城市间仅仅有N-1条路把这个N个城市连接起来.如今,Tom在第S号城市 ...

  7. POJ 3281(Dining-网络流拆点)[Template:网络流dinic]

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmlrZTBnb29k/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  8. Android后台服务拍照的解决方式

    一.背景介绍 近期在项目中遇到一个需求.实现一个后台拍照的功能. 一開始在网上寻找解决方式.也尝试了非常多种实现方式,都没有惬意的方案.只是确定了难点:即拍照要先预览,然后再调用拍照方法.问题也随之而 ...

  9. F5设备控制脚本

    此脚本用于控制F5设备,可对pool成员进行操作及成员状态,该脚本及源自于f5官网 使用格式: 1.查看pool成员状态 /usr/bin/perl /scripts/togglepoolmember ...

  10. 利用GDAL实现影像的几何校正

    一.概述 遥感影像和地理坐标进行关联的方式一般有好几种,一种是直接给出了仿射变换系数,即6个參数,左上角地理坐标,纵横方向上的分辨率,以及旋转系数.在这样的情况下,求出某一像素点的地理坐标非常easy ...