請證明你是個人類?互聯網苦「驗證碼」久矣

8 評論 12279 瀏覽 47 收藏 19 分鐘

#本文為人人都是產品經理《原創激勵計劃》出品。

登錄或者注冊一個新賬號時,會有短信驗證碼提示;在社交平臺點贊評論時,會有拼圖驗證碼提示;在搶票的關鍵時刻,跳出個辨認紅綠燈的驗證碼提示?;ヂ摼W世界,已經被驗證碼“包圍”了。為了區別人和機器人,驗證碼快要把真人整崩潰了。

經常使用互聯網的你,一定見過下面這個家伙吧?沒錯,它就是驗證碼??蓜e小看這個家伙,很多人都在它面前栽過跟頭。

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

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

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

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

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

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

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

一、驗證碼的前世今生

1. 驗證碼是什么

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

2. 驗證碼的用途

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

中國工商銀行注冊頁面

3. 驗證碼怎么出現的

2000年左右,人們主要通還是過郵件交流,雅虎郵箱堪稱當時互聯網行業的“殺手級”應用,很多中國人的第一個電子郵箱后綴就是@yahoo.com。有流量的地方就會有黑產。當年國際上最大的黑產是尼日利亞人,世紀之交時,他們開始用機器注冊大量的雅虎馬甲郵箱,用來發送垃圾郵件,進行網絡詐騙,被媒體稱作“雅虎男孩”。當時用戶打開自己的郵箱,充斥著各種垃圾郵件,苦不堪言。

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

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

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

4. 驗證碼被迫增加難度

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

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

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

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

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

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

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

5. 驗證碼有哪些種類

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

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

如今的驗證題目,比如算術題,除了簡單的加減乘除外,有時還會考平方計算(沒上過初中或許還真答不對)。為了防止機器識別,甚至漢字還用上了古文字;滑動滑塊也是比較有效的方式,通過判斷滑動的時間和快慢來識別是否是機器在操作(筆者曾經多次因手速滑動太快而為誤認為是機器,真想喊冤);隨著二維碼的普及,掃碼登錄的方式也被更多網站所使用,自己證明自己,有意思;當然,像人臉識別、指紋識別、聲紋識別等高級的驗證方式也在進行探索和實驗,目前主要用于銀行類網站。

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

驗證碼屬于安全驗證的一種。而安全驗證,無外乎是如下三個方面的判斷:

1)基礎信息判斷

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

2)判斷是真人

這就出現了我們經常見到的圖形驗證碼、數字驗證碼、選圖驗證碼等,用來判斷你是不是真人。

3)判斷是本人

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

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

二、全民被驗證碼“白嫖”

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

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

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

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

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

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

谷歌的AI技術一直是其驕傲的地方。

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

谷歌如何做的呢?

他們將道路上的圖片抓拍,并用在驗證碼上,讓網民幫其判斷,并將這些結果數據傳回機器學習。如果說這是一個天才想法,應該不為過吧?

三、驗證碼的一些思考

1. 驗證碼是最優解嗎?

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

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

2. 驗證碼的適老化問題

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

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

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

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

4. 有沒有可替代的方案

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

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

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

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

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

四、結語

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

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

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

專欄作家

李云琪,公眾號:李云琪,人人都是產品經理專欄作家。癡迷于研究心理學和傳播學,志向成為產品+運營的復合型人才。

本文原創發布于人人都是產品經理,未經許可,禁止轉載。

本文為人人都是產品經理《原創激勵計劃》出品。

題圖來自Pexels,基于 CC0 協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 算題的是很變態的…

    來自山東 回復
  2. 感覺滑塊驗證是比較有效,操作也會簡單一下。

    來自中國 回復
  3. 給谷歌免費標注,要發工資

    來自山東 回復
  4. 文中提到谷歌使用抓拍的照片作為驗證碼?那么谷歌怎么知道哪些照片是正確的呢?

    來自北京 回復
    1. 把大部分人認為都一樣的答案進行歸類,比如一個圖片,80-90%的人都認為是紅綠燈,那么驗證碼圖片在驗證的時候,就會默認這個圖是紅綠燈,你選擇就對了。google這個驗證碼,如果你用過,就知道有時候確實是在扯淡淡,選錯也可能通過驗證

      來自四川 回復
    2. 那一張圖片的前面選擇的幾個人,如何即時判斷?

      來自北京 回復
    3. 有容錯率的,比如說9張圖里面有6張是要選出來的,可能有4張是已經標注確定好的,2張是機器提前標注但分類的置信度不高的。而且recaptcha不是只有一次就通過的,多的時候可能要選七八輪 。

      來自廣東 回復
    4. 猜測:幾張圖片是已打標的,另外幾張是未打標的;混排

      來自北京 回復