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