如果你經(jīng)常使用一些國外的網(wǎng)站,就會發(fā)現(xiàn)它隔三差五地彈出一個對話框,要求你點擊“I'mnotarobot(我不是機器人)”來“聲明”自己不是機器人。大多數(shù)情況下,用戶點擊確認鍵之后,網(wǎng)頁就會放行。這種操作簡單卻十分怪異的驗證形式讓人十分疑惑,它究竟是如何判斷操作者是不是機器人的呢?
要想了解這一點,我們就要回顧驗證碼的產(chǎn)生和發(fā)展。
2000年左右,網(wǎng)絡(luò)已經(jīng)拉開了互聯(lián)網(wǎng)時代的序幕。一方面,各類論壇和服務(wù)商的出現(xiàn)為網(wǎng)絡(luò)交流奠定了基礎(chǔ);另一方面,垃圾郵件、惡意信息、評論等隨著腳本的出現(xiàn)撲面而來,著名的網(wǎng)站雅虎曾深受惡意腳本的威脅。于是,雅虎向卡內(nèi)基梅隆大學(xué)計算機系求助,希望能找到一種能分辨網(wǎng)頁使用者是真人用戶還是惡意機器腳本的方法。
當(dāng)時就讀于卡內(nèi)基梅隆大學(xué)計算機專業(yè)的21歲學(xué)生路易斯·馮·安恩提出思路:要讓注冊用戶證明自己是人類,可以要求用戶做一些人類可以輕而易舉做到但機器人做不到的事情。
相比人工智能極其發(fā)達的今天,21世紀(jì)初的機器人并不聰明,識別圖片就足以難倒它們。如果再將圖片中的字符稍加扭曲,就可以輕易阻擋惡意腳本。在2000年左右,路易斯發(fā)明了驗證碼這一概念,他將其命名為CAPTCHA(“全自動區(qū)分計算機和人類的圖靈測試”的縮寫)。也是從這一刻開始,一場持續(xù)數(shù)十年的,人與機器之間,圍繞著圖靈測試的對抗開始了。
初期的驗證碼形式,憑借其極度扭曲的字符和難以識別的圖案,給大多數(shù)人留下了深刻的印象。在這個階段,驗證碼的難度與機器人智商的發(fā)展成正比,以至于最后讓許多真人用戶難以辨認。比如“U”和“V”由于字符的扭曲變成了孿生兄弟,而數(shù)字“0”和字母“O”看起來毫無差別。
這些問題無時無刻在困擾著網(wǎng)民們,然而驗證碼又對網(wǎng)絡(luò)環(huán)境而言來說是個不可或缺的存在。每個人輸入驗證碼,只需要幾秒鐘時間,但上億人的幾秒鐘疊加起來,就是很大的時間成本。有什么方法可以把這些時間利用起來嗎?路易斯想到了將舊書上難以辨認的詞變成圖片驗證碼,利用這些時間推動舊書數(shù)字化的進程。他設(shè)置了兩個驗證碼,一個是已知單詞,另一個是摘自舊書中的單詞。用戶正確輸入前者就可以通過驗證,并且系統(tǒng)會將用戶輸入的舊書單詞視為有效答案。如果有十個用戶輸入的同一舊書單詞相同,那么該單詞就得到辨識??窟@種方法,每年能讓230多萬本舊書轉(zhuǎn)化為電子版。
隨著人工智能的飛躍式發(fā)展,由字符或者圖案構(gòu)成的驗證碼無力維持網(wǎng)絡(luò)環(huán)境的和平。2014年,谷歌發(fā)布新的研究成果,一個專門用來解讀扭曲驗證碼內(nèi)容的算法。在測試中,機器人辨認扭曲字符的正確率高達99.8%,而人類只有33%。
在絕對的技術(shù)面前,人力再一次落敗。因此,谷歌做出應(yīng)對之策——“沒有驗證碼的驗證碼”,即我們今天常??吹降摹癐'mnotarobot”,這類驗證碼為網(wǎng)站用戶提供了便利,其背后機制卻相當(dāng)復(fù)雜,甚至涉及用戶隱私。當(dāng)用戶點擊“I'mnotarobot”時,谷歌會分析用戶在網(wǎng)站中的各種行為,收集用戶的鼠標(biāo)移動速率、當(dāng)前IP、是否使用插件等信息,以判斷用戶是否為人類。如果你展現(xiàn)出來的行為,都符合一個人類的標(biāo)準(zhǔn),那網(wǎng)頁就會放行。從某種程度上來說,這種便利是用用戶隱私換取的。
近兩年,谷歌又推出了第三代驗證碼,用戶無須再通過點擊來證明自己是人類,系統(tǒng)會自行根據(jù)用戶使用網(wǎng)頁的情況來判斷,但同時也意味著用戶隱私被進一步侵犯。這項技術(shù)如今并沒有被大面積使用,而這場人與機器之間,圍繞著圖靈測試的對抗,仍未有個明確的局勢。