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