文|三易生活
如果經常在互聯網上沖浪,想必各種稀奇古怪的驗證碼多多少少都會給你留下深刻的印象。無論是谷歌在九宮格圖片里讓你識別斑馬線、還是在12306讓你在“一模一樣”的圖片里找不同,驗證碼就是這樣一個讓人又愛又恨的存在,愛的是其確實讓垃圾郵件、機器人變少了,而恨的則是實在是太不人性化。
在諸多奇葩的驗證碼里填寫出正確答案,如今也越來越成為用戶上網時的煩惱。正所謂用戶有需求,就會有人拿出解決方案。繼WWDC22上蘋果方面推出iOS 16后,日前來自XDA開發者論壇的相關消息顯示,在iOS 16的開發者預覽版中,官方悄然提供了一個名為Automatic Verification(自動驗證)的功能,可以讓iCloud代替用戶處理APP或網站中的驗證碼(CAPTCHA)。
簡單來說,蘋果在iOS 16中帶來的這個功能,等于說是用機器來幫人驗證自己不是機器。為什么會這么說呢?其實這就要從驗證碼的起源說起。早期的互聯網其實是自由開放以及混亂無序的,作為當時全球最為知名的產品,雅虎郵箱也是上世紀末絕大多數用戶連接網絡世界的窗口,因此自然也成為了黑產眼中的香餑餑,他們編寫腳本自動注冊了大量的雅虎郵箱、用于發送垃圾郵件。
彼時,這一問題被雅虎的研究人員寫到了《我們無法解決的十大問題》這篇文章中,而在2001年卡耐基梅隆大學學生Luis von Ahn參加雅虎的主題講座時,聽到垃圾郵件泛濫一事后設計出了“CAPTCHA”(全自動公共圖靈測試),也就是如今大家熟知的“驗證碼”體系。而驗證碼技術的核心理論,就是區分正常人與機器,所提出的問題要容易被人解答、并且讓機器無法解答。
最終,Luis von Ahn發現人類可以用肉眼,輕易地識別出在圖片中、被扭曲過、污染過的文字信息,而當年電腦并不能做到這一點。隨即在Luis von Ahn這一方案的基礎上,雅虎方面推出了EZ-Gimpy字符驗證碼機制。早期驗證碼中往往會出現一條不規則橫線覆蓋在需要識別的詞匯上,這其實就是在借助早期計算機視覺技術不發達的缺陷,讓機器識別不出被“污染”的詞匯。
作為一個反向的“圖靈測試”,在PC互聯網時代早期其確實起到了不小的作用,遏制了黑產利用自動化程序實現暴力破解、惡意注冊、刷票、批量操作的目的。畢竟黑產是一個典型講究成本收益的“生意”,只要收益不能覆蓋成本就自然會知難而退。彼時,黑產粗糙的自動化腳本面對字符驗證碼確實是一籌莫展,例如當時百度貼吧使用的反“爆吧”工具就有發貼需要驗證碼的步驟。
但隨著OCR(光學字符識別)與計算機視覺技術的發展,機器在圖像識別上的能力升級,使得單純基于字符的驗證碼逐漸失效。特別是在二十一世紀的第二個十年,機器學習技術上了一個臺階后,卷積神經網絡(CNN)以及生成對抗網絡(GAN)在業界大規模應用后,在海量的數據樣本的“喂養”下,讓圖片驗證碼也已經落伍了。
無論字符的變形程度再高、再厲害,只需用圖像分割技術切到一定的顆粒度,再用卷積神經網絡算法就能準確地識別出來。甚至根據一項騰訊安全在多年前的爆料信息表明,國內當時就已有黑產團隊實現了對字符驗證碼98%的“爆破”幾率。
為此,互聯網廠商也紛紛升級了驗證碼相關技術。既然純粹的字符、圖片已被攻克,而其核心又是區分人類與機器,那么驗證碼與相關知識的結合,也使得“做題家”模式開始出現,讓用戶需要根據問題去尋找驗證碼的正確答案。
這一時期,想必有些玩家可能聽過EA旗下Origin平臺骰子驗證碼的大名。這個驗證碼要求用戶從六張骰子圖中,找到一張結果相加等于特定數字的圖片,而且要求在限定時間里連續答對15次。此外,最“經典”的則莫過于12306的驗證碼識圖了,其不僅讓機器束手無策、更是難倒了許多用戶。而這些,也使得好好的驗證碼變成了考驗用戶知識積累、觀察能力,以及手速的玩意。
顯然,驗證碼技術的問題就出現在了這里,隨著攻防雙方不斷在技術端的升級,使得其對用戶的友好性已經逐漸消失,并變得極為“反人類”。同時,也有部分廠商借助驗證碼技術來實現商業目的,許多朋友可能遇到過谷歌、Meta、Twitter的九宮格圖片驗證方式,即“選出下圖中的xxx”類型的的驗證碼,雖然表面上是讓用戶標識出特定物品,但背地里是卻借助用戶積累數據來訓練自己的AI模型。
因此在相當長的一段時間里,許多用戶對于驗證碼可謂是厭煩透頂。為此,驗證碼技術再次升級為行為驗證模式或者說無知識型驗證,如今各平臺常用的滑塊驗證就是其中的典型,其特色就是采集用戶數據,并借助基于人類固有的生物特征以及操作環境信息,來綜合決策判斷屏幕前到底是人還是機器。
比如說看起來簡單的滑塊驗證,盡管看似就是將拼圖拼完整,但是這其中的原理是人類拖動滑塊通常是先快后慢,需要先快速拖到缺口附近、再在缺口附近進行精準校驗,而機器則往往是勻速拖動這一滑塊。
那么問題來了,既然行為驗證更為先進,為什么目前還有許多APP和網站依然在使用傳統的圖文驗證碼呢?原因其實很簡單,Web前端因為代碼都是明文形式的腳本語言,行為驗證模式的核心就是將不可信的Web前端打造成可信的客戶端,這就需要代碼混淆與行為數據加密的支持。然而遺憾的是,很多基于Web的APP或網站并沒有這樣的技術能力。
無論如何,過去的二十年間互聯網行業關于驗證碼的攻防,就一直都帶有非常明顯的身份特征,黑產方面希望攻破驗證碼系統來實現批量化的推送垃圾廣告、機器人等等行為,而互聯網廠商則希望用驗證碼技術來保護賬號體系的安全和穩定。盡管蘋果方面目前并未公開Automatic Verification這一功能的原理,但其無外乎還是生成對抗網絡、卷積神經網絡等人工智能技術的應用。
誠然,這一自動驗證功能確實能夠在一定程度上,幫助用戶從絞盡腦汁填寫驗證碼的苦海中脫離,但從技術倫理的角度出發,這可能是一個非常危險的舉措。畢竟在第三方開發者的視角,自動驗證功能與黑產的自動化腳本其實并沒有本質的區別,同樣違反了驗證碼技術是用于區分人和機器行為的宗旨。