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