在上網(wǎng)過程中,你肯定會遇到過類似這樣的東西:
猛一看:為什么我得向計算機證明我是人類?
細一想:即使我勾選了那個框,就能證明我是人類嗎?那些AI機器人難道不能勾選同樣的框嗎?
計算機為什么要問這個問題?它在背后又是如何測試是真人在點擊的?
想回答這個問題,我們得看看驗證碼的發(fā)展過程。
01
精妙的發(fā)明
在互聯(lián)網(wǎng)的上古時期,雅虎發(fā)現(xiàn)自家的聊天室經(jīng)常出現(xiàn)“機器人”,這些機器人注冊進入聊天室,瘋狂地發(fā)送垃圾廣告,讓人不勝其煩。
“抓狂”的雅虎向卡內(nèi)基梅隆大學(xué)求助,路易斯·馮·安(Luis von Ahn)和他的同事們接了這個活兒。
路易斯出生在貧窮的危地馬拉,位于中美洲。
他的母親非常重視教育,花了很多錢讓他進入教英語的私立學(xué)校,8歲時就給他買了Commodore 64 計算機,從此路易斯對計算機產(chǎn)生了濃厚的興趣,18歲時申請到了美國杜克大學(xué),2000年進入卡內(nèi)基梅隆讀博士。
路易斯仔細研究了這個問題以后,開發(fā)了一個叫做GIMPY的系統(tǒng)。
GIMPY會從字典中選擇一組單詞,將它們以損壞/扭曲的方式,顯示在特定背景的圖像中,然后要求用戶輸入該圖像中顯示的單詞。
人類用戶能夠識別出這些單詞,但當(dāng)時的機器人卻不行,于是它們就無法進入聊天室了。
這種方式簡單有效,又很容易集成到現(xiàn)有網(wǎng)站中去,郵箱系統(tǒng)、論壇、電商、游戲等系統(tǒng)紛紛采用,驗證碼很快便流行開來。
GIMPY就是第一代驗證碼,路易斯給它起了一個長長的名稱:"Completely Automated Public Turing test to tell Computers and Humans Apart",中文意思是 "完全自動化的公共圖靈測試,用于區(qū)分計算機和人類", 簡稱CAPTCHA,中文一般說“驗證碼”。
有了驗證碼以后,受到最大影響的還是用戶,我們不得不瞇起眼睛,小心翼翼地輸入這些單詞,輸錯了就得重來一遍。
路易斯看到這種情況,又開始琢磨了,既然用戶費了這么大勁,為什么不把“識別單詞”這個事兒給利用起來,讓它產(chǎn)生價值呢?
比如有很多書籍,想數(shù)字化進入電腦得時候,就得用OCR技術(shù)掃描。
但是對老舊書籍,字體模糊,OCR也識別不了,那能不能讓人來識別呢?
比如有個單詞是fox,在書中模糊看不清了,那就形成圖片,當(dāng)作驗證碼讓用戶來識別。
用戶A看到了,識別成了"fxx"
用戶B看到了,識別成了"fox"
用戶C看到了,識別成了"foc"
用戶D看到了,識別成了"foo"
每個用戶都有自己的識別結(jié)果,系統(tǒng)可以在后臺做交叉驗證,如果發(fā)現(xiàn)大多數(shù)用戶都輸入了fox,那fox就可以認為是是正確的詞。
這樣用戶付出的勞動變成了有價值的“人肉OCR”。
可是,這么弄驗證碼的話有個巨大的漏洞:因為系統(tǒng)也不知道正確答案,機器人就可以隨意輸入了!
路易斯就想了另外一招,每次展示兩個詞。
一個詞是系統(tǒng)已知的,當(dāng)作真正的驗證碼。
另外一個詞是系統(tǒng)不確定的單詞,讓用戶做人肉OCR。
舉個例子,下圖中的morning這個詞OCR識別不了,就把它當(dāng)成不確定的詞,讓用戶識別。
與此同時,再提供一個系統(tǒng)已經(jīng)知道的詞“overlooks”,當(dāng)作驗證碼。
只有那些正確地輸入了overlooks的用戶,系統(tǒng)才認為這是一個真人,才會對他輸入的另外一個詞做進一步處理(例如交叉驗證)。
2007年,路易斯發(fā)表了一篇論文,把這種驗證碼稱為reCAPTCHA。
reCAPTCHA 不僅提升了網(wǎng)絡(luò)安全,還充分利用了廣大網(wǎng)民的勞動,確實是一個精妙的發(fā)明。
2009年,Google看到reCAPTCHA在大規(guī)模數(shù)字化項目(如圖書數(shù)字化、檔案整理等)上的潛力,把它收購了,開始了一個雄心勃勃的Google圖書館項目,計劃將世界上的每一本書都數(shù)字化,創(chuàng)建一個供所有人訪問的數(shù)字圖書館。
截至2019年,Google利用掃描技術(shù)和reCAPTCHA,一共錄入了4000萬種書籍,非常驚人。
02
全新升級
由于文本驗證碼容易被機器人破解,為了增加難度,還出現(xiàn)了圖片驗證碼和數(shù)學(xué)驗證碼。
驗證碼越來越復(fù)雜,經(jīng)常是輸入了幾次都不對,把人都快逼瘋了。
但是無論是文本驗證碼還是圖片驗證碼,在AI能力飛速提升的時候,都力不從心了。
研究發(fā)現(xiàn),當(dāng)今的人工智能技術(shù)可以識別最困難的扭曲文本變體,準確率達到99.8%。
一些攻擊者還找到了另類的辦法,例如把驗證碼圖片發(fā)送到低工資的地方,由人工快速破解。
更極端的例子,攻擊者創(chuàng)建色情網(wǎng)站,要求用戶輸入驗證碼作為解鎖內(nèi)容的條件,而這些驗證碼實際上來自其他網(wǎng)站。
用視覺驗證的方式已經(jīng)不再是一種安全的選項。
2013年,Google開始部署新的驗證碼,名字很長,no CAPTCHA reCAPTCHA,簡稱noCAPTCHA吧。
noCAPTCHA只需要用戶去點擊一個“我不是機器人”復(fù)選框即可,非常簡單。
系統(tǒng)會在你點擊的過程中,監(jiān)測和分析你的行為。
人類行為:正常人類用戶點擊復(fù)選框時,表現(xiàn)出自然的頁面停留時間,鼠標移動軌跡和點擊速度。
機器人行為:自動化程序可能會立即點擊復(fù)選框,沒有鼠標移動或鼠標移動路徑異常。
除了用戶行為以外,noCAPTCHA還會收集設(shè)備信息和瀏覽器的指紋,一并發(fā)給后臺做驗證。
如果系統(tǒng)懷疑你是機器人(沒有鼠標移動,或者移動太快),它可能會要求你完成額外的任務(wù),用舊式的驗證碼來進行驗證。
03
展望未來
驗證碼被機器人痛恨,也被大部分人類厭煩,順暢的上網(wǎng)過程不斷地被它打斷。
但是如果沒有驗證碼,我們的網(wǎng)絡(luò)世界肯定會是一團糟。
從最初的GIMPY到reCAPTCHA,再到no CAPTCHA reCAPTCHA,驗證碼在不斷進化。
然而,道高一尺魔高一丈,無論驗證碼如何進化,攻擊者總是能找到破解之法。
希望將來能找到一個兼顧安全性和便捷性的辦法,讓我們拭目以待吧。
全文完,覺得不錯的話點個贊或者在看吧!
近期爆文:
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.