首頁>資訊 >
環(huán)球速讀:互聯(lián)網(wǎng)苦「驗證碼」久矣 2022-08-28 05:33:12  來源:36氪

經(jīng)常使用互聯(lián)網(wǎng)的你,一定見過下面這個家伙吧?

沒錯,它就是驗證碼。


(資料圖)

可別小看這個家伙,很多人都在它面前栽過跟頭。

想象個場景:你登錄12306網(wǎng)站,發(fā)現(xiàn)還有最后一張余票,正準備下單時,驗證碼彈了出來,很不巧,你手速慢了一步,近在眼前的回家機會和你失之交臂。

先別氣急敗壞,大部分人都遇到過這樣的窘境,或許這不是你的問題。根據(jù)360瀏覽器提供的大數(shù)據(jù),用戶一次性填對驗證碼的概率只有8%,兩次輸入正確的比例也不過27%。

國民級搶票平臺12306網(wǎng)站,為了防止黃牛刷票,不斷增加驗證碼難度,僅2015年,就推出了581種驗證碼方式。

看下圖,感受一下,能3秒鐘說出正確答案的朋友,請原地封神,哈哈~

我們都知道,驗證碼的出現(xiàn),是為了防止機器惡意攻擊而設(shè)置的屏障。通過驗證碼題目,將計算機和人做區(qū)分——將人放行,把計算機攔截在外。

但也不可否認,如今的驗證碼已經(jīng)不再是簡單的輸入數(shù)字和字母這么簡單,有的題目簡直懷疑人生。人們不禁感慨,我該如何證明自己是個正常的人類?

今天,我們一起來聊聊驗證碼的前世今生。

驗證碼的前世今生

1. 驗證碼是什么

驗證碼的專業(yè)術(shù)語叫“全自動區(qū)分計算機和人類的圖靈測試”,通過設(shè)置特定的題目來區(qū)分當前設(shè)備背后是人在操作還是機器。

2. 驗證碼的用途

主要用于防止:黑客窮舉破解密碼(再復(fù)雜的密碼通過無限窮舉和排列也可以被破解)、自動化程序注冊僵尸用戶(下文提到的雅虎郵箱就是慘痛的教訓(xùn))、第三方程序惡意抓取內(nèi)容(內(nèi)容型平臺的護城河)、自動化程序發(fā)帖評論(造成社區(qū)秩序混亂、質(zhì)量下降)、批量操作(比如刷票)等。

中國工商銀行注冊頁面

3. 驗證碼怎么出現(xiàn)的

2000年左右,人們主要通還是過郵件交流,雅虎郵箱堪稱當時互聯(lián)網(wǎng)行業(yè)的“殺手級”應(yīng)用,很多中國人的第一個電子郵箱后綴就是@yahoo.com。

有流量的地方就會有黑產(chǎn)。

當年國際上最大的黑產(chǎn)是尼日利亞人,世紀之交時,他們開始用機器注冊大量的雅虎馬甲郵箱,用來發(fā)送垃圾郵件,進行網(wǎng)絡(luò)詐騙,被媒體稱作“雅虎男孩”。當時用戶打開自己的郵箱,充斥著各種垃圾郵件,苦不堪言。

這個問題困擾了雅虎很久,當時被列為“雅虎十個無法解決的問題”之一。

后來一位叫路易斯·馮·安的人為雅虎設(shè)計了一套人機驗證方案,也就是最早的字符驗證碼。

當時的驗證碼還比較簡單,主要是一些簡單的數(shù)字,利用了“人類會識字,但機器不會”的原理,這把當時的黑產(chǎn)打了一個措手不及。驗證碼的上線,將困擾雅虎很久都垃圾郵件問題得到了明顯解決,用戶體驗呈指數(shù)級提升。

4. 驗證碼被迫增加難度

道高一尺,魔高一丈,黑產(chǎn)怎么會被輕易打?。靠梢哉f,驗證碼給我們帶來的困擾,全都是黑產(chǎn)的“功勞”。

你出數(shù)字圖形驗證碼,我就用OCR光學(xué)識別;你的圖片加上噪點,我就去除噪點;你出滑動驗證碼,我就用瀏覽器測試工具模擬人類滑動。

拿OCR技術(shù)舉例:很多人應(yīng)該都聽說過OCR技術(shù),平時我們用手機將圖片拍攝掃描自動轉(zhuǎn)化成文本文字,使用的就是OCR技術(shù)。2003年有人通過圖像識別算法對簡單字符型對驗證碼進行自動化識別,可以達到93%的成功率。可怕吧?科技是把雙刃劍,為我們帶來便捷的同時,也被壞人所利用。

但OCR技術(shù)只能處理一些簡單的字符型驗證碼,稍微復(fù)雜一些的,比如扭曲和翻轉(zhuǎn)的字符,處理的難度就比較大了。因此后來很多網(wǎng)站開始使用復(fù)雜型字符,以抵抗反驗證技術(shù)。

2005年,有人利用機器學(xué)習(xí)模型對單個字符對驗證碼進行自動化識別,計算機對識別成功率竟然還比人類對成功率高。但訓(xùn)練機器的難度和成本是很高的,從技術(shù)門檻上已經(jīng)極大的提高了反驗證的難度。再后來,驗證碼繼續(xù)升級,推出了算術(shù)題、圖像識別題等高難度題目,讓反驗證技術(shù)難上加難。

研發(fā)解碼程序的難度和成本越來越高,到后來,索性衍生出了“打碼員”的黑色利益鏈條。黑產(chǎn)們雇傭大量真人,通過系統(tǒng)派發(fā)打碼任務(wù),打碼員根據(jù)任務(wù)到相關(guān)網(wǎng)站人工識別驗證碼,從而獲得收益。

驗證碼最大的天敵是真實的人,當人與人進行對抗時,基本技術(shù)發(fā)揮不了多大的作用。

5. 驗證碼有哪些種類

正如上文所說,驗證碼被反驗證技術(shù)倒逼升級,從簡單數(shù)字、字母,到加減法,再到后來閃爍變形字母、干擾線變形字母,甚至到變態(tài)級的選圖題…

其實字符扭曲,基本就可以阻擋住大部分機器的識別了,已經(jīng)算是比較高的難度,在當時的20年內(nèi),其安全性也都能排在前列。

如今的驗證題目,比如算術(shù)題,除了簡單的加減乘除外,有時還會考平方計算(沒上過初中或許還真答不對)。

為了防止機器識別,甚至漢字還用上了古文字;滑動滑塊也是比較有效的方式,通過判斷滑動的時間和快慢來識別是否是機器在操作(筆者曾經(jīng)多次因手速滑動太快而為誤認為是機器,真想喊冤);隨著二維碼的普及,掃碼登錄的方式也被更多網(wǎng)站所使用,自己證明自己,有意思;當然,像人臉識別、指紋識別、聲紋識別等高級的驗證方式也在進行探索和實驗,目前主要用于銀行類網(wǎng)站。

隨著技術(shù)的發(fā)展,近些年,還有許多新型驗證方式誕生。比如Gif動畫驗證碼,通過提供GIF動態(tài)的驗證碼圖片,使得識別器不容易辨識哪一個圖層是真正的驗證碼圖片;手機語音驗證碼實現(xiàn)自動語音播報,同時短信也能同時發(fā)送到用戶手機,實現(xiàn)雙保險確保萬無一失;視頻驗證碼是驗證碼中的新秀,隨機數(shù)字、字母和中文組合而成的驗證碼動態(tài)嵌入到MP4,flv等格式的視頻中,增大了破解難度。

驗證碼屬于安全驗證的一種。

而安全驗證,無外乎是如下三個方面的判斷:

1)基礎(chǔ)信息判斷

比如注冊時設(shè)置的用戶名、密碼、找回密碼的問題和答案,對用戶身份有一個基礎(chǔ)判斷。

2)判斷是真人

這就出現(xiàn)了我們經(jīng)常見到的圖形驗證碼、數(shù)字驗證碼、選圖驗證碼等,用來判斷你是不是真人。

3)判斷是本人

以上兩個方式,只能判斷你是真人,且是知道一定真實信息的真人,但還無法確定你就是賬號的所有者。所以就出現(xiàn)了短信驗證碼、微信掃碼、人臉識別等驗證方式。

目前很多網(wǎng)站已經(jīng)在使用雙重認證或多重驗證的方式來保證用戶和網(wǎng)站的安全。除了輸入用戶名、密碼外,在發(fā)送驗證碼前還會進行滑塊驗證。

全民被驗證碼“白嫖”

或許你還不知道,驗證碼除了用來區(qū)分人和計算機,還在免費白嫖集體網(wǎng)民的智慧。

還記得上文提到的路易斯·馮·安嗎?在發(fā)明了初代驗證碼后,他在2004年帶領(lǐng)團隊又上線了一個叫recaptcha的驗證碼系統(tǒng)。

當時有很多文獻和圖書都想做數(shù)字化(也就是我們現(xiàn)在看到的電子圖書),但很多古書褪色嚴重,計算機無法識別,于是路易斯·馮·安想到了一個辦法:把一個驗證碼分為兩部分,用戶需要輸入兩個驗證信息,前面的驗證碼,用來區(qū)別真人與機器;后面的驗證碼是古書上機器無法識別的內(nèi)容,用戶提交的結(jié)果會發(fā)送到數(shù)據(jù)庫,把許多人達成共識的答案再經(jīng)由后臺人員甄別,得出來的就是古書的正確內(nèi)容,以此供計算機學(xué)習(xí)。據(jù)說準確率能夠達到99%。

即便放到現(xiàn)在來看,這也仍然是一個聰明絕頂?shù)南敕?。群眾的力量是強大的,有?shù)據(jù)統(tǒng)計,通過這種方式,驗證碼系統(tǒng)每天能夠數(shù)字化兩億個字符,到今天為止,已經(jīng)數(shù)字化2500萬本書。當時紐約時報一整年的所有內(nèi)容,只需要4天就能實現(xiàn)全部數(shù)字化。

2009年,谷歌收購了recaptcha,利用這個方式擴充自家的谷歌圖書項目,谷歌圖書館目前已經(jīng)是全球最大的電子圖書館,擁有近3000萬冊圖書。

人的貪婪是無限的,只讓網(wǎng)民翻譯古書已經(jīng)不能滿足期待,于是recaptcha 2.0版本應(yīng)運而生,你應(yīng)該也不陌生,看看下面這個圖片:

谷歌的AI技術(shù)一直是其驕傲的地方。

拿谷歌的AI無人駕駛技術(shù)來說,想提高機器判斷精準度,其實并沒有什么捷徑可走,需要無數(shù)數(shù)據(jù)和樣本供機器學(xué)習(xí)和訓(xùn)練,這是一項成本極高又很耗時間的投入。

谷歌如何做的呢?

他們將道路上的圖片抓拍,并用在驗證碼上,讓網(wǎng)民幫其判斷,并將這些結(jié)果數(shù)據(jù)傳回機器學(xué)習(xí)。如果說這是一個天才想法,應(yīng)該不為過吧?

驗證碼的一些思考

1. 驗證碼是最優(yōu)解嗎?

驗證碼的出現(xiàn)絕對是無奈之舉,它對用戶的干擾很大。

仔細思考你會發(fā)現(xiàn),驗證碼其實并不能完全解決問題,甚至在一些極限情況下會出現(xiàn)不成立,比如:驗證碼能成立的前提是【發(fā)起惡意行為時,相比機器自動化完成,人工成本更高】,但在人工非常廉價的地方,只需要付出少許的成本就可以利用真人順利完成驗證,驗證碼完全失效。

但在目前的技術(shù)實現(xiàn)上來看,驗證碼雖然不是一個好的設(shè)計,但確實是一個有效的設(shè)計。如果沒有驗證碼系統(tǒng),每年春運,我們根本搶不到票。

2. 驗證碼的適老化問題

當年輕人在判斷到底是“0還是o”,“日還是曰”時,對于老年人簡直是災(zāi)難。

在《移動互聯(lián)網(wǎng)(APP)適老化通用設(shè)計規(guī)范》中也明確對驗證碼做了要求,不過縱觀目前國內(nèi)的互聯(lián)網(wǎng)產(chǎn)品,在驗證碼適老化方面還有很大的提升空間。除了提供傳統(tǒng)驗證碼放大能力以外,還應(yīng)該支持更多元的驗證方式,比如語音驗證碼等。

3. 驗證碼能一勞永逸嗎?

隨著技術(shù)的持續(xù)發(fā)展,未來計算機和人類的差距會越發(fā)縮小,驗證碼是階段性背景下的產(chǎn)物,人和機器的對抗還將持續(xù)進行下去。

4. 有沒有可替代的方案

目前也陸續(xù)出現(xiàn)了更多元的驗證方式,比如指紋、虹膜、體感、聲紋技術(shù)等,不過目前推廣起來難度較大,這些技術(shù)的使用需要搭配額外的硬件來實現(xiàn),拋開硬件的價格,精度本身都是個大問題,更何況安全性和便捷性也并不一定高。

蘋果推出了私人訪問令牌(無感驗證),當用戶開始使用手機時,系統(tǒng)就會自動開始跟蹤記錄,綜合用戶完成的一系列動作來判斷設(shè)備背后是真人還是機器。但這是以犧牲個人隱私和數(shù)據(jù)為代價。盡管蘋果承諾這些數(shù)據(jù)不會被用作其他用途。

5. 驗證碼的安全性和體驗性

要對驗證碼進行升級,就必須考慮安全性和體驗性,既要在交互上盡可能少的阻礙用戶,又要做到足夠安全,這本身就是很難平衡的天平。

近幾年,國內(nèi)互聯(lián)網(wǎng)產(chǎn)品都在努力改進驗證碼方式,很多網(wǎng)站已經(jīng)改為了短信驗證碼/掃碼登錄的方式,在用戶體驗和便捷性上都有了不小的提升,不過考慮到掃碼也會存在潛在安全性,部分網(wǎng)站還是會將傳統(tǒng)驗證碼和掃碼結(jié)合使用,雙重防護。

結(jié)語

筆者認為,雖然目前我們還沒有更好的辦法進行人機驗證,不過可以盡可能少的對用戶使用進行阻礙,在不必要的環(huán)節(jié)盡可能少的使用驗證碼。驗證碼慎用,驗證碼慎用,驗證碼慎用。

雖然痛恨它,但也感謝它,更要繼續(xù)超越它,驗證碼的發(fā)展史,就是人機抗衡的革命史,沒有任何解決方案可以一勞永逸,但在可控的范圍內(nèi),我們可以選擇更友好的方式,在體驗上,在特殊人群上,都可以做的更好一點點。

記住,人永遠是最高級的生物,無論何時。

關(guān)鍵詞: 驗證方式 垃圾郵件

相關(guān)閱讀:
熱點
圖片 圖片