貓頭鷹

在登錄大多數國外網站時,系統會要求用戶做一個奇怪的保證——“I'm not a robot(我不是機器人)”。大多數情況下,用戶點擊確認鍵之后,網頁就會放行。這種操作簡單卻十分怪異的驗證形式讓人十分疑惑,它究竟是如何判斷操作者是不是機器人的呢?
要想了解這一點,我們就要回顧驗證碼的產生和發展。
2000年左右,網絡已經拉開了互聯網時代的序幕。一方面,各類論壇和服務商的出現為網絡交流奠定了基礎;另一方面,垃圾郵件、惡意信息、評論等隨著腳本的出現撲面而來,著名的網站雅虎曾深受惡意腳本的威脅。于是,雅虎向卡內基梅隆大學計算機系求助,希望能找到一種能分辨網頁使用者是真人用戶還是惡意機器腳本的方法。
當時就讀于卡內基梅隆大學計算機專業的21歲學生路易斯·馮·安恩提出思路:要讓注冊用戶證明自己是人類,比如要求用戶做一些人類可以輕而易舉做到但機器人做不到的事情。
相比人工智能極其發達的今天,21世紀初的機器人并不聰明,識別圖片就足以難倒它們。如果再將圖片中的字符稍加扭曲,就可以輕易阻擋惡意腳本。在2000年左右,路易斯·馮·安恩發現了一個方法,并將其命名為“全自動區分計算機和人類的圖靈測試”。
初期的驗證碼形式,憑借其極度扭曲的字符和難以識別的圖案,給大多數人留下了深刻的印象。在這個階段,驗證碼的難度與機器人智商的發展成正比,以至于最后讓許多真人用戶難以辨認。比如“U”和“V”由于字符的扭曲變成了孿生兄弟,而數字“0”和字母“o”看起來毫無差別。
所幸第一代驗證碼并沒有存在多久,中文驗證碼取代其成為主流。相比起扭曲字符帶給人們的疑惑,中文驗證碼帶給人們更多的是心理傷害。如2017年,成都一名大四女生在網上進行考研報名時,中文驗證碼竟然是“別考”。事后官方表明,此事件純屬巧合。
每個人輸入驗證碼,只需要幾秒鐘時間,但上億人的幾秒鐘疊加起來,就是很大的時間成本。路易斯·馮·安恩便將古籍上難以辨認的詞變成驗證碼,利用這些時間推動古籍辨認的進程。他設置了兩個驗證碼,一個是已知單詞,另一個是摘自古籍中的單詞。用戶正確輸入前者就可以通過驗證,并且系統會將用戶輸入的古籍單詞視為有效答案。如果有三個用戶輸入的同一古籍單詞相同,那么該單詞就得到辨識。據統計,每天大約有4萬個古籍單詞被廣大網友所辨認。
人工智能的飛躍式發展,讓由字符或者圖案構成的驗證碼無力維持網絡環境的和平。2014年,谷歌通過研究得出:機器人辨認扭曲字符的正確率高達99.8%,而人類只有33%。因此,谷歌做出應對之策——“沒有驗證碼的驗證碼”,即我們今天常常看到的“I'm not a robot”,這類驗證碼為網站用戶提供了便利,其背后機制卻相當復雜,甚至涉及用戶隱私。當用戶點擊“I'm not a robot”時,谷歌會分析用戶在網站中的各種行為,收集用戶的指針移動速率、當前IP、是否使用插件等信息,以判斷用戶是否為人類。從某種程度上來說,這種便利是用用戶隱私換取的。
近兩年,谷歌又推出了第三代驗證碼,用戶無須證明自己是人類,系統會自行根據用戶使用網頁的情況來判斷,但同時也意味著用戶隱私被進一步侵犯。