五分钟技术趣谈 | 每天填写的验证码还能做公益?

开发
验证码是一种广泛应用于网站、应用程序等系统中的安全机制。它通过要求用户正确地输入一定的字符或数字组合,来确认用户的身份或防止恶意行为,如恶意注册、暴力破解密码等。

Part 01

防范滥用在线服务的自动化程序的“哨兵”  

验证码(CAPTCHA)一词由全称 "Completely Automated Public Turing test to tell Computers and Humans Apart" 缩写而来,意为“全自动区分计算机和人类的图灵测试”,由卡内基梅隆大学的Luis von Ahn、Manuel Blum、Nicholas Hopper和John Langford在2000年首次提出。它是一种广泛应用于互联网上的安全技术,用于区分计算机程序(例如机器人)和真实人类用户。

典型的CAPTCHA是一个包含多个扭曲字符的图像,如图1,通常出现在网页表单的底部。用户被要求输入这些波浪形字符以"证明"他们是人类。当时的计算机程序不能像人类一样会读取扭曲的文本,因此CAPTCHA作为防范滥用在线服务的自动化程序的哨兵。由于其作为安全措施的有效性,CAPTCHA用于保护许多类型的网站,包括免费电子邮件提供商、售票网站、社交网络、维基和博客。例如,CAPTCHA可以用来防止黄牛使用计算机程序蓄意购买大量音乐会门票并高价转售。Gmail和Yahoo Mail等免费电子邮件提供商使用CAPTCHA阻止恶意账户进行恶意注册和垃圾邮件滥发。

图片图片

图1 CAPTCHA示例(图片来源【1】

Part 02

1亿人的举手之“劳”  

如果你曾经填写过类似图2的验证码,那么恭喜你也感谢你,因为你在不知情的情况下为人类做了一件很有意义的事情。

图片

图2 reCAPTCHA界面(图片来源【1】

故事还要从一个奇妙的设想开始讲起:据Luis von Ahn团队的估计,(2008年)全球每天有超过1亿人输入验证码。虽然每次识别和输入扭曲字符只需几秒钟的时间,但总体而言,这相当于每天数十万小时的时间。虽然验证码在防止大规模滥用在线服务方面非常有效,但每个人在解决验证码时所花费的精力是被浪费的。这样大数量级的时间浪费问题使得Luis von Ahn团队开始思考,是否有什么方法可以把这些碎片时间利用起来。面对如此奇妙的设想,他们居然找到了答案——旧纸质典籍数字化。

当时,正在大规模开展的旧纸质典籍数字化项目(例如,谷歌图书项目和非营利组织互联网档案馆)引起了Luis von Ahn团队的关注。旧纸质典籍电子化意义重大,既有利于人类知识的保存也使得信息更加易于访问、检索和分析。

当时数字化旧纸质典籍的方式是直接扫描书籍生成图像,然后通过光学字符识别(OCR)软件转换为文本文件。对于墨迹褪色、纸张发黄的旧书,OCR只能识别80%的单词【1】。相比之下,人类在转录此类印刷品方面更准确,可在转录和校对的基础上,达到单词级别99%以上的准确率【1】。不幸的是,人工转录的费用很高。

由于人工转录旧书籍费用高昂,OCR自动识别效果又不理想,Luis von Ahn团队想到,为什么不让用户去识别书籍扫描生成的图像呢?还有一个问题,如何区分填写验证码的是真人而非恶意的程序呢?带着这些设想和目标,Luis von Ahn团队在标准CAPTCHA的基础上,将原先系统自动随机生成的图像替换为扫描得到的图像,并引入了双单词验证,开发了一套新的验证码系统:reCAPTCHA。

Part 03

reCAPTCHA 双单词验证法  

reCAPTCHA验证码系统由两个单词组成,均取自旧书籍典籍扫描的图像。用户被要求识别并输入两个单词,验证通过即可进行后续的操作。

图片

图3 reCAPTCHA界面(图片来源【1】

如上图,reCAPTCHA会给用户两个单词,一个是计算机无法识别答案的“未知”单词(“morning”),另一个是答案已知的“控制”单词(“overlooks”)。

任何经过两个不同的OCR程序,分析结果不一致或者分析结果在词典中查不到的单词被标记为“可疑”单词。“可疑”单词最初被作为“未知”单词发送给用户,每个用户的答案记为一票,OCR识别结果记为半票。如果出现三个相同的答案且与两个OCR结果都不同,则该“未知”单词成为“控制”单词随机呈现给用户。如果用户给出的答案差异很大,则继续作为“未知”单词发送给更多的用户。

图片

图4 reCAPTCHA 工作原理

每个“未知”单词与另一个“控制”单词一起放置在图像中以随机顺序呈现,这两个单词进一步扭曲,以确保自动化程序无法解读它们。为了降低自动化程序随机猜测正确答案的概率,控制单词的频率被归一化,例如,更常见的单词“today”和较不常见的单词“abridged”具有相同的提供概率。

当用户输入“未知”单词和“控制”单词的时候,如果能拼写正确“控制”单词,那么就判断该用户为真人,同时,对于“未知”单词,只要获得2.5票及以上就认为是正确识别的单词。

通过大规模部署该系统并收集、分析识别结果,reCAPTCHA系统在单词级别上的准确率达到了99.1%【1】,而标准OCR的准确率仅为83.5%【1】。99.1%的准确率符合行业标准中转录技术的可接受“超过99%”的准确率保证。

在系统运行了一年后,人类已经解决了超过12亿个CAPTCHA,相当于正确解密了超过4.4亿个可疑单词。假设每本书有10万个单词(400页,每页250个单词),这相当于手动转录了超过1.76万本书(每本书中大约有25%的单词被算法标记为可疑)。该系统的受欢迎程度不断增长:2008年,每天的转录速度就超过了400万个可疑单词,相当于每天约有160本书。通过传统人工转录,要达到这样的速度,需要一个由1500多人组成的工作团队,每周工作40个小时解密单词(假设平均每分钟60个单词)【1】

由于“控制”单词是两个OCR程序都无法识别的单词。因此任何能以非常大的概率识别这些单词的程序都将是OCR程序的一种改进,这也代表着OCR技术的进步。

reCAPTCHA于2009年9月被Google收购。自从Google收购reCAPTCHA以来,这个验证码系统得到了进一步的发展和改进。Google将其整合到了自己的产品和服务中,包括Gmail、Google搜索、Google表单等等。reCAPTCHA不仅仅用于验证用户是否是人类,还用于数据训练和机器学习,以提高图像识别和自动化技术。

Google在reCAPTCHA的发展过程中,引入了新的算法和技术,提高了对机器人和恶意行为的识别能力。例如,从经典的验证码(输入难以辨认的文字)发展到了no CAPTCHA reCAPTCHA(不需要用户手动输入,通过分析用户行为进行验证,核心是不需要输入验证码的验证系统,用户只需要点击一个「我不是机器人」的复选框),并进一步演化为invisible reCAPTCHA(当用户被判断为低风险时,验证过程会在后台进行,不会显示任何验证码界面)。这些改进旨在提供更好的用户体验和更强大的反机器人保护。

Part 04

未来展望 

未来的验证码技术将更加智能、无干扰、多因素、安全可靠,以提供更好的用户体验和保护网站免受机器人和恶意行为的侵害。同时,验证码技术也需要不断创新和优化,以适应快速发展的网络威胁和用户需求。

责任编辑:庞桂玉 来源: 移动Labs
相关推荐

2023-07-23 18:47:59

Docker开源

2023-04-04 09:13:15

2023-07-16 18:49:42

HTTP网络

2023-04-15 20:25:23

微前端

2023-07-02 16:09:57

人工智能人脸识别

2023-07-02 16:34:06

GPU虚拟化深度学习

2023-08-29 06:50:01

Javamaven

2023-07-12 15:50:29

机器学习人工智能

2023-09-12 07:10:13

Nacos架构

2023-08-15 14:46:03

2023-07-31 08:55:15

AI技术网络暴力

2023-07-12 16:03:37

Android开发架构

2023-09-17 17:51:43

Android 14

2023-08-06 07:00:59

Openstack网络

2023-08-06 06:55:29

数字可视化物联网

2023-08-07 06:35:07

系统限流

2023-07-12 16:13:01

2023-09-02 20:22:42

自动化测试软件开发

2023-06-03 21:14:47

Linux

2021-09-18 11:36:38

混沌工程云原生故障
点赞
收藏

51CTO技术栈公众号