验证码的前世今生

安全 数据安全
可以预见,作为“人类与计算机的角斗场”的验证码,将迎来更多的攻防机会,同时也会给我们的社会带来更多的改变,让我们拭目以待!

“你永远不知道,网络对面坐的一个人还是一只狗”

--网友戏说

视频、出行、购物等网站的使用者,就一定是人类吗?会不会是伪装成“人类”的计算机呢?

为了能够识别人类和计算机,“验证码”应运而生。

今天,让我们了解一下验证码的前世今生吧!

01.先了解什么是“图灵测试”

从1946年世界上第一台计算机出现开始,聪明的人类就已经考虑计算机发展到替代人类的可能性。艾伦·麦席森·图灵,被称为计算机科学之父、人工智能之父,专门设计了一个著名的“图灵测试”,用来判定计算机能否在智力行为上表现得和人无法区分。

当主持人问了1个问题,然后无法从2个解答中分辨出谁是人类、谁是计算机时,就表明计算机的智能水平已经与人类没有差异了。

“图灵测试”是由人类来判断:谁是计算机?

谁是人类?最重要的目的,是识别出计算机。

02.反过来的“图灵测试” 就是验证码

那么“验证码”,是由计算机来判断:谁是人类?

谁是计算机?最重要的目的,是识别出人类。

这一点,可以从验证码的中英文全称中看出来:CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart, 全自动区分计算机和人类的公开图灵测试),又名HIP(Human Interaction Proof,人类交互行为证明)。

最典型的验证码,如下图所示。

以目前的眼光来看,这个验证码确实略显简陋。

但是在计算机技术还不发达的年代,这样的验证码,已经足以识别出人类:

  • 只有人类,才能识别出验证码中被严重扭曲的字母或者数字;
  • 而计算机,则无法识别。

基于这样的验证码,各种计算机系统(例如:网站、邮箱等)成功识别到真正的人类后,允许人类继续操作,比如:登录邮箱、投票等。

03.为“保护”而生的验证码

当各种计算机系统无法识别人类和计算机时,计算机技术也能给人类带来麻烦,例如:

  • 邮箱的泛滥注册,导致垃圾邮件满天飞;
  • 投票的野蛮刷票,导致投票结果不公正;
  • 车票的插件抢占,导致返乡车票买不到。

1999年一个网站发起的在线投票,推选全美计算机科学专业最好的学校时,按理来说是一个人投一张票。但是投票网站在设计的时候,没有考虑太多,只以投票者所在计算机的IP地址作为判断依据。

于是有人编写了计算机脚本进行批量刷票:每次投票完后更改一个IP地址,然后继续投票。这样的话,有成千上万个IP地址就代表了成千上万个不同的人,就可以投成千上万票。

这样的计算机技术,无疑是影响到了整个投票的公平性。

所以说,各种计算机系统,需要一个坚固的“盾”来保护自己。

实际上,第一种验证码(字符型)的出现,就是为了对抗“自动刷票”这种计算机技术的。

4. 越来越坚固的“盾”

那么你知道都有哪些千奇百怪的“验证码”吗?

(1) 字符型

字符型验证码,是我们日常最经常见到的验证码。通常是一些字母、数字的组合,而且为了增加识别的难度,这些字符经常会被变形、被扭曲、被翻转。

随着计算机技术的发展,字符型验证码的安全程度在降低,逐渐被其他类型验证码替代。

(2) 计算型

计算型验证码,通常是一些数学公式,需要人类发动聪明的大脑进行复杂的运算,才能得出正确的结果。

很遗憾,这种可以提供较高安全性的验证码,虽然计算机很难识别,但是大部分人类自己也觉得很难。所以计算型验证码,并没有广泛应用过。

(3) 点击型

点击型验证码的最大特点是:使用者只需要通过鼠标进行点击,不需要输入任何东西。通过这种人类专属的行为动作,以及使用者在浏览器中的一些操作数据、浏览数据等,共同识别出真正的人类。

点击型验证码的安全性较高,而且用户体验较好。

在一些重要的计算机系统,例如:动车售票网站、大型购物网站、大型视频网站等用户量较大、数据安全要求高的地方,采用点击型验证码,可以有效识别人类,避免其他计算机的攻击。

(4) 滑动型

滑动型验证码通过收集使用者的动作,判断是否为人类。例如:人类拖动滑块的轨迹会是一个先快后慢的过程:先快速拖动,后慢慢对齐,再瞬间释放。

这种验证码的用户体验较好,虽然被计算机技术突破的成功率也有60%以上,但是计算机技术模拟人类行为的成本较大,得不偿失。

(5) 短信型

短信型验证码,是最常用的一种方式。各种APP一般会采用这种方式,简单直接,通过运营商来发送短信,安全上有保障。

每个验证码与手机号码相对应而且一般有效期仅为60秒~90秒,不留其他人钻空子的机会。

(6) 扫码型

扫码型验证码,实际上就是首先确保在手机上已经成功登录,然后通过扫描二维码的方式在PC上继续登录。这是如今各大视频网站、购物网站的常用方法。

让人类自己去验证人类自己,嘿,这方法真棒。

(7) 生物特征型

各种人脸识别、指纹识别、声纹识别甚至虹膜识别,都可以算作是生物特征型验证码。使用起来更加简单,而且因为这些生物特征在每个人类中的独特性,犹如一把专属钥匙,具备较高的安全性。

5. 越来越锋利的“矛”

虽然“盾”很坚固,但是随着计算机技术的不断进步,锋利的“矛”也层出不穷。

为了突破验证码的保护,发展出了以下的计算机技术:

(1) OCR技术

OCR (Optical Character Recognition,光学字符识别)技术,可以将图片、照片上的文字内容,直接转换为可编辑的文本。

2003年有人通过图像识别算法(Shape Context)对简单字符型的验证码进行自动化识别,可以达到93%的成功率。

OCR技术仅能攻破一些简单的字符型验证码,稍微复杂一些(比如扭曲、翻转)的字符,就需要花费更多时间,一般无法在字符型验证失效前识别成功。

(2) 机器学习模型

2005年有人利用机器学习模型(CNN)对单个字符的验证码进行自动化识别,计算机的识别成功率竟然还比人类的成功率还高。

然而,要想使用机器学习模型来识别字符型验证码,需要先准备好多台高性能计算机和大量的训练数据,因此模型识别的成本太高,一般人用不起。

(3) 伪装的手机基站

要想破解短信型验证码,伪装的手机基站需要首先屏蔽目标手机的信号,然后以这个手机号码去尝试登录网站,还要能够伪装目标手机去接收短信。

各个环节都要在短时间内完成,简直就是Mission Impossible,而且每一步都是违法违规,破解成本高到天际了。

(4) 终极的“伪装”“

能打败人类的,终将是人类自己”!

当人类拥有走出宇宙文明的计算机技术时,是否可以通过克隆出一个人类,让这个复制出来的人类去破解各种各样的验证码,岂不是手到擒来?!

当然,这仅仅是小编的一丢丢幻想,可能会在科幻片里看到,各位粉丝不要当真哦!

好的,今天的内容就是这些啦,和小编一起回顾一下吧:

  • “图灵测试”是为了分辨出谁才是计算机;
  • “验证码”是为了分辨出谁才是人类;
  • 千奇百怪的“验证码”保护着各种计算机系统;
  • 层出不穷的“计算机技术”不断提高自己伪装成人类的能力。

作为“盾”,验证码如何才能更安全、更易用?

作为“矛”,计算机技术如何才能突破验证码的严防死守?

这些问题,都需要交给聪明的人类、更加智能的计算机技术去解答。

可以预见,作为“人类与计算机的角斗场”的验证码,将迎来更多的攻防机会,同时也会给我们的社会带来更多的改变,让我们拭目以待!

责任编辑:赵宁宁 来源: 中兴文档
相关推荐

2016-11-03 13:33:31

2016-11-08 19:19:06

2011-08-23 09:52:31

CSS

2013-06-19 10:19:59

2015-11-18 14:14:11

OPNFVNFV

2014-07-30 10:55:27

2021-01-19 10:29:34

短信验证码密码

2016-12-29 18:21:01

2021-06-17 07:08:19

Tapablewebpack JavaScript

2019-06-04 09:00:07

Jenkins X开源开发人员

2016-12-29 13:34:04

阿尔法狗围棋计算机

2014-07-21 12:57:25

诺基亚微软裁员

2012-05-18 16:54:21

FedoraFedora 17

2014-07-15 10:31:07

asyncawait

2013-05-23 16:23:42

Windows Azu微软公有云

2020-11-16 07:28:53

验证码

2021-04-15 07:01:28

区块链分布式DLT

2013-11-14 16:03:23

Android设计Android Des

2019-08-05 10:08:25

软件操作系统程序员
点赞
收藏

51CTO技术栈公众号