驗(yàn)證碼是一種廣泛應(yīng)用于網(wǎng)站、應(yīng)用程序等系統(tǒng)中的安全機(jī)制。它通過(guò)要求用戶(hù)正確地輸入一定的字符或數(shù)字組合,來(lái)確認(rèn)用戶(hù)的身份或防止惡意行為,如惡意注冊(cè)、暴力破解密碼等。驗(yàn)證碼能夠有效防止網(wǎng)絡(luò)黑客、機(jī)器人、腳本等自動(dòng)化程序?qū)ο到y(tǒng)的攻擊和濫用,保證用戶(hù)的數(shù)據(jù)和隱私的安全。此外,驗(yàn)證碼還經(jīng)常被用來(lái)進(jìn)行唯一性驗(yàn)證、特定權(quán)限驗(yàn)證和交互流程驗(yàn)證等驗(yàn)證。
Part 01●??防范濫用在線(xiàn)服務(wù)的自動(dòng)化程序的“哨兵”??●
驗(yàn)證碼(CAPTCHA)一詞由全稱(chēng) "Completely Automated Public Turing test to tell Computers and Humans Apart" 縮寫(xiě)而來(lái),意為“全自動(dòng)區(qū)分計(jì)算機(jī)和人類(lèi)的圖靈測(cè)試”,由卡內(nèi)基梅隆大學(xué)的Luis von Ahn、Manuel Blum、Nicholas Hopper和John Langford在2000年首次提出。它是一種廣泛應(yīng)用于互聯(lián)網(wǎng)上的安全技術(shù),用于區(qū)分計(jì)算機(jī)程序(例如機(jī)器人)和真實(shí)人類(lèi)用戶(hù)。
典型的CAPTCHA是一個(gè)包含多個(gè)扭曲字符的圖像,如圖1,通常出現(xiàn)在網(wǎng)頁(yè)表單的底部。用戶(hù)被要求輸入這些波浪形字符以"證明"他們是人類(lèi)。當(dāng)時(shí)的計(jì)算機(jī)程序不能像人類(lèi)一樣會(huì)讀取扭曲的文本,因此CAPTCHA作為防范濫用在線(xiàn)服務(wù)的自動(dòng)化程序的哨兵。由于其作為安全措施的有效性,CAPTCHA用于保護(hù)許多類(lèi)型的網(wǎng)站,包括免費(fèi)電子郵件提供商、售票網(wǎng)站、社交網(wǎng)絡(luò)、維基和博客。例如,CAPTCHA可以用來(lái)防止黃牛使用計(jì)算機(jī)程序蓄意購(gòu)買(mǎi)大量音樂(lè)會(huì)門(mén)票并高價(jià)轉(zhuǎn)售。Gmail和Yahoo Mail等免費(fèi)電子郵件提供商使用CAPTCHA阻止惡意賬戶(hù)進(jìn)行惡意注冊(cè)和垃圾郵件濫發(fā)。
Part 02●??1億人的舉手之“勞”??●
如果你曾經(jīng)填寫(xiě)過(guò)類(lèi)似的驗(yàn)證碼,那么恭喜你也感謝你,因?yàn)槟阍诓恢榈那闆r下為人類(lèi)做了一件很有意義的事情。
故事還要從一個(gè)奇妙的設(shè)想開(kāi)始講起:據(jù)Luis von Ahn團(tuán)隊(duì)的估計(jì),(2008年)全球每天有超過(guò)1億人輸入驗(yàn)證碼。雖然每次識(shí)別和輸入扭曲字符只需幾秒鐘的時(shí)間,但總體而言,這相當(dāng)于每天數(shù)十萬(wàn)小時(shí)的時(shí)間。雖然驗(yàn)證碼在防止大規(guī)模濫用在線(xiàn)服務(wù)方面非常有效,但每個(gè)人在解決驗(yàn)證碼時(shí)所花費(fèi)的精力是被浪費(fèi)的。這樣大數(shù)量級(jí)的時(shí)間浪費(fèi)問(wèn)題使得Luis von Ahn團(tuán)隊(duì)開(kāi)始思考,是否有什么方法可以把這些碎片時(shí)間利用起來(lái)。面對(duì)如此奇妙的設(shè)想,他們居然找到了答案——舊紙質(zhì)典籍?dāng)?shù)字化。
當(dāng)時(shí),正在大規(guī)模開(kāi)展的舊紙質(zhì)典籍?dāng)?shù)字化項(xiàng)目(例如,谷歌圖書(shū)項(xiàng)目和非營(yíng)利組織互聯(lián)網(wǎng)檔案館)引起了Luis von Ahn團(tuán)隊(duì)的關(guān)注。舊紙質(zhì)典籍電子化意義重大,既有利于人類(lèi)知識(shí)的保存也使得信息更加易于訪問(wèn)、檢索和分析。
當(dāng)時(shí)數(shù)字化舊紙質(zhì)典籍的方式是直接掃描書(shū)籍生成圖像,然后通過(guò)光學(xué)字符識(shí)別(OCR)軟件轉(zhuǎn)換為文本文件。對(duì)于墨跡褪色、紙張發(fā)黃的舊書(shū),OCR只能識(shí)別80%的單詞【1】。相比之下,人類(lèi)在轉(zhuǎn)錄此類(lèi)印刷品方面更準(zhǔn)確,可在轉(zhuǎn)錄和校對(duì)的基礎(chǔ)上,達(dá)到單詞級(jí)別99%以上的準(zhǔn)確率【1】。不幸的是,人工轉(zhuǎn)錄的費(fèi)用很高。
由于人工轉(zhuǎn)錄舊書(shū)籍費(fèi)用高昂,OCR自動(dòng)識(shí)別效果又不理想,Luis von Ahn團(tuán)隊(duì)想到,為什么不讓用戶(hù)去識(shí)別書(shū)籍掃描生成的圖像呢?還有一個(gè)問(wèn)題,如何區(qū)分填寫(xiě)驗(yàn)證碼的是真人而非惡意的程序呢?帶著這些設(shè)想和目標(biāo),Luis von Ahn團(tuán)隊(duì)在標(biāo)準(zhǔn)CAPTCHA的基礎(chǔ)上,將原先系統(tǒng)自動(dòng)隨機(jī)生成的圖像替換為掃描得到的圖像,并引入了雙單詞驗(yàn)證,開(kāi)發(fā)了一套新的驗(yàn)證碼系統(tǒng):reCAPTCHA。
Part 03●??reCAPTCHA 雙單詞驗(yàn)證法??●
reCAPTCHA驗(yàn)證碼系統(tǒng)由兩個(gè)單詞組成,均取自舊書(shū)籍典籍掃描的圖像。用戶(hù)被要求識(shí)別并輸入兩個(gè)單詞,驗(yàn)證通過(guò)即可進(jìn)行后續(xù)的操作。
reCAPTCHA會(huì)給用戶(hù)兩個(gè)單詞,一個(gè)是計(jì)算機(jī)無(wú)法識(shí)別答案的“未知”單詞(“morning”),另一個(gè)是答案已知的“控制”單詞(“overlooks”)。
任何經(jīng)過(guò)兩個(gè)不同的OCR程序,分析結(jié)果不一致或者分析結(jié)果在詞典中查不到的單詞被標(biāo)記為“可疑”單詞?!翱梢伞眴卧~最初被作為“未知”單詞發(fā)送給用戶(hù),每個(gè)用戶(hù)的答案記為一票,OCR識(shí)別結(jié)果記為半票。如果出現(xiàn)三個(gè)相同的答案且與兩個(gè)OCR結(jié)果都不同,則該“未知”單詞成為“控制”單詞隨機(jī)呈現(xiàn)給用戶(hù)。如果用戶(hù)給出的答案差異很大,則繼續(xù)作為“未知”單詞發(fā)送給更多的用戶(hù)。
每個(gè)“未知”單詞與另一個(gè)“控制”單詞一起放置在圖像中以隨機(jī)順序呈現(xiàn),這兩個(gè)單詞進(jìn)一步扭曲,以確保自動(dòng)化程序無(wú)法解讀它們。為了降低自動(dòng)化程序隨機(jī)猜測(cè)正確答案的概率,控制單詞的頻率被歸一化,例如,更常見(jiàn)的單詞“today”和較不常見(jiàn)的單詞“abridged”具有相同的提供概率。
當(dāng)用戶(hù)輸入“未知”單詞和“控制”單詞的時(shí)候,如果能拼寫(xiě)正確“控制”單詞,那么就判斷該用戶(hù)為真人,同時(shí),對(duì)于“未知”單詞,只要獲得2.5票及以上就認(rèn)為是正確識(shí)別的單詞。
通過(guò)大規(guī)模部署該系統(tǒng)并收集、分析識(shí)別結(jié)果,reCAPTCHA系統(tǒng)在單詞級(jí)別上的準(zhǔn)確率達(dá)到了99.1%【1】,而標(biāo)準(zhǔn)OCR的準(zhǔn)確率僅為83.5%【1】。99.1%的準(zhǔn)確率符合行業(yè)標(biāo)準(zhǔn)中轉(zhuǎn)錄技術(shù)的可接受“超過(guò)99%”的準(zhǔn)確率保證。
在系統(tǒng)運(yùn)行了一年后,人類(lèi)已經(jīng)解決了超過(guò)12億個(gè)CAPTCHA,相當(dāng)于正確解密了超過(guò)4.4億個(gè)可疑單詞。假設(shè)每本書(shū)有10萬(wàn)個(gè)單詞(400頁(yè),每頁(yè)250個(gè)單詞),這相當(dāng)于手動(dòng)轉(zhuǎn)錄了超過(guò)1.76萬(wàn)本書(shū)(每本書(shū)中大約有25%的單詞被算法標(biāo)記為可疑)。該系統(tǒng)的受歡迎程度不斷增長(zhǎng):2008年,每天的轉(zhuǎn)錄速度就超過(guò)了400萬(wàn)個(gè)可疑單詞,相當(dāng)于每天約有160本書(shū)。通過(guò)傳統(tǒng)人工轉(zhuǎn)錄,要達(dá)到這樣的速度,需要一個(gè)由1500多人組成的工作團(tuán)隊(duì),每周工作40個(gè)小時(shí)解密單詞(假設(shè)平均每分鐘60個(gè)單詞)【1】。
由于“控制”單詞是兩個(gè)OCR程序都無(wú)法識(shí)別的單詞。因此任何能以非常大的概率識(shí)別這些單詞的程序都將是OCR程序的一種改進(jìn),這也代表著OCR技術(shù)的進(jìn)步。
reCAPTCHA于2009年9月被Google收購(gòu)。自從Google收購(gòu)reCAPTCHA以來(lái),這個(gè)驗(yàn)證碼系統(tǒng)得到了進(jìn)一步的發(fā)展和改進(jìn)。Google將其整合到了自己的產(chǎn)品和服務(wù)中,包括Gmail、Google搜索、Google表單等等。reCAPTCHA不僅僅用于驗(yàn)證用戶(hù)是否是人類(lèi),還用于數(shù)據(jù)訓(xùn)練和機(jī)器學(xué)習(xí),以提高圖像識(shí)別和自動(dòng)化技術(shù)。
Google在reCAPTCHA的發(fā)展過(guò)程中,引入了新的算法和技術(shù),提高了對(duì)機(jī)器人和惡意行為的識(shí)別能力。例如,從經(jīng)典的驗(yàn)證碼(輸入難以辨認(rèn)的文字)發(fā)展到了no CAPTCHA reCAPTCHA(不需要用戶(hù)手動(dòng)輸入,通過(guò)分析用戶(hù)行為進(jìn)行驗(yàn)證,核心是不需要輸入驗(yàn)證碼的驗(yàn)證系統(tǒng),用戶(hù)只需要點(diǎn)擊一個(gè)「我不是機(jī)器人」的復(fù)選框),并進(jìn)一步演化為invisible reCAPTCHA(當(dāng)用戶(hù)被判斷為低風(fēng)險(xiǎn)時(shí),驗(yàn)證過(guò)程會(huì)在后臺(tái)進(jìn)行,不會(huì)顯示任何驗(yàn)證碼界面)。這些改進(jìn)旨在提供更好的用戶(hù)體驗(yàn)和更強(qiáng)大的反機(jī)器人保護(hù)。
Part 04●?未來(lái)展望?●
未來(lái)的驗(yàn)證碼技術(shù)將更加智能、無(wú)干擾、多因素、安全可靠,以提供更好的用戶(hù)體驗(yàn)和保護(hù)網(wǎng)站免受機(jī)器人和惡意行為的侵害。同時(shí),驗(yàn)證碼技術(shù)也需要不斷創(chuàng)新和優(yōu)化,以適應(yīng)快速發(fā)展的網(wǎng)絡(luò)威脅和用戶(hù)需求。
參考文獻(xiàn)
[1] Luis von Ahn, Ben Maurer, Colin McMillen, David Abraham and Manuel Blum. reCAPTCHA: HumanBased Character Recognition via Web Security Measures. Science, September 12, 2008. Pages 1465-1468.