在文章開頭,老狐先給大家玩一個驗證碼的游戲,猜出圖中驗證碼字母。
請計算出圖中驗證碼的結果。
好了,我們還是回到標題上來,聊一聊驗證碼是怎么為難我們人類的。
驗證碼的由來
2000年,雅虎當時還是全球最大的網絡郵箱服務商,雅虎郵箱的用戶經常收到許多垃圾和詐騙短信。
這種經歷放在今天,就是你下班回到家,發現自己門口擺滿了快遞。
但注意,其中只有一個快遞是你自己購買的,其他的快遞都是別人發的垃圾。 你為了找到自己的快遞,只好拆了全部的快遞。
這時,你恐怕只會后悔自己有這一個快遞。
當時受到影響的不止雅虎,還有許多互聯網公司。 黑客們利用腳本機器人大量注冊賬戶,進行評論注水、黃牛搶票、撞庫掃號等影響互聯網企業運營的行為。
現如今,“ 天下苦驗證碼久矣 ”,而在二十年前,則是“ 天下苦腳本機器人久矣 ”。
后來雅虎找到在卡內基梅隆大學的路易斯·馮·安(驗證碼之父)等人,與他們合作。
他們利用當時的人機驗證機制,為雅虎設計了一套防御機器人的程序,并首次提出了“驗證碼”的概念。
驗證碼,更專業的名字是“全自動區分計算機和人類的圖靈測試”,簡稱 CAPTCHA。
驗證碼的作用是讓計算機區分人類和計算機。
大家熟知的圖靈測試是讓人區分人和計算機,與驗證碼作用剛好相反。
因此,有些人也將驗證碼叫做“反向圖靈測試”。
文本類驗證碼
然而,一切沒有那么容易。 早期的驗證碼非常簡單,只是普通的字母組合,干擾的信息很少,而文字識別技術( OCR )的應用甚至要比驗證碼早 30 年。 沒過多久,黑客利用 OCR 成功破解了驗證碼。
于是,計算機科學家們繼續尋找更好的防御機制。 他們在驗證碼的字符中加入更多的干擾因素,將字符連接、變形、空心,變成動態,加入更復雜的背景。
總之,一切都是為了降低腳本機器人的識別成功率。
然而降低機器人識別正確率的效果是暫時的,降低用戶的識別成功率卻是永久的。
我經常遇到無法識別的驗證碼,要么需要刷新,要么輸入錯誤。
此時計算機對我的判定是:你不 是 個 人! 這句話聽起來是不是好像是在罵人。
2008 年,兩位英國紐卡斯爾大學的計算機研究人員發布了一篇論文。
在論文中,他們用新的字符分割法來識別微軟、雅虎和谷歌的驗證碼。
微軟和雅虎的驗證碼識別正確率超過 60%,谷歌的驗證碼識別率較低,為 8.7%。
雖然谷歌這個數字看起來比雅虎和微軟優秀,但腳本機器人可以發動大量攻擊,100 萬次嘗試就將有 8.7 萬個驗證碼被破解。
因此,這個結果仍然是無法令人滿意的。
在這份論文中,研究人員還列出了用戶會混淆的幾個驗證碼:
比如:
開頭是字母 “ d ” 還是 “ cl ”?
這是哪幾個字符? 別問我答案,我也不知道。 雖然變形扭曲的字符能提升攔截腳本機器人的效率,但真人用戶同樣難以辨別驗證碼,也被阻擋在外。
甚至有研究表明,通過卷積神經網絡模型( CNN ),機器識別扭曲字體的正確率還要高于人類。
驗證碼殺敵一千,自損一萬。
簡單文本內容的驗證碼已經無法滿足需要,于是,又出現了答題類的驗證碼。
驗證碼成了考題,用戶輸入正確的答案才能通過驗證,這種形式的驗證碼雖然能暫時有效阻擋腳本機器人,但卻對用戶不友好,受到許多吐槽。
因此,答題驗證碼并不常見。
畢竟,當你遇到文章開頭這種驗證碼,你可能不會愿意計算出答案,而是直接關閉頁面。
文本類驗證碼面對腳本機器人的攻擊,漸漸招架不住,研究人員決定調轉方向,開發采用圖像選擇類的驗證碼。
圖像選擇類驗證碼
相比于文本類的驗證碼,圖像選擇類驗證碼對用戶友好很多,只需點擊圖像,不再依賴鍵盤輸入,而且圖像驗證碼趣味性更強。
例如根據題目要求在幾張照片中找出符合要求的照片即可,體驗起來像是玩連連看。
2007 年,研究人員提出了圖像選擇類驗證碼,之后迅速受到研究人員和用戶的歡迎。
畢竟,誰會喜歡考試而不喜歡游戲呢?
2015 年 3 月,12306 為了防止黃牛搶票引入了圖片驗證碼,引發熱議。 搶過火車票的小伙伴對此肯定不陌生,為了不被 12306 的驗證碼難住,不得不調鬧鐘提早登錄 12306。
剛開始,圖像選擇類驗證碼還能起到不錯的保護效果。 然而,隨著圖像識別技術的發展,特別是 AI 技術的進步,人們可以訓練機器學習分類圖片,破解圖像。
例如,國外的研究人員就利用 SVM 分類器和卷積神經網絡模型等方式,來破解部分圖像選擇驗證碼。
來自卡內基梅隆大學的一個團隊在 2017 年發布論文表示: 他們通過收集 260 萬個驗證碼和短語,以及 2100 萬張圖片,經過卷積神經網絡的訓練,最終可以使機器在 2 秒內以 77% 的正確率通過 12306 的驗證碼。 為了阻擋腳本
機器人的攻擊,維護人員不得不制作更多新的驗證碼圖片,利用新的驗證碼圖片還未被機器學習,以此來降低機器的識別正確率。 于是更多奇怪的驗證碼被制作出來。
然而,我們普通用戶成了最大的受害者,各種奇葩的圖片驗證碼讓人難以區分,連登錄自己的賬戶,都變成了一件難事。
不過一些研究統計表明,在圖片驗證碼的正確率上,機器在某些方面的圖像感知能力也已經領先人類。
既然圖像選擇驗證碼也干不過機器,研究人員再次使出絕招:調轉方向!
行為軌跡類驗證碼
無論文本還是圖像都是以問答的形式來驗證人和腳本機器人,腳本機器人通過學習,表現比人類還要穩定。
于是,研究人員發明了行為軌跡類的驗證碼,而它的原理就是利用人類在行為軌跡上不如機器穩定。
以我們熟悉的滑動驗證碼為例: 當我們將左邊的滑塊向右拖動,后臺服務器不僅驗證用戶能否正確地將滑塊填進空缺位置,還要記錄用戶的鼠標位置,滑塊的移動軌跡等信息。
通常來說,相對于腳本機器人,人類的滑動軌跡都是非勻速的,不準確的。
尤其是像我這樣肢體不靈活的人,越接近空缺位置,速度越慢,直到合上滑塊。
這個過程有很多不穩定的因素,正是通過不穩定的軌跡,后臺服務器才會識別該操作來自于人,而不是穩定的腳本程序。
雖然滑動驗證碼相比之前的驗證碼是一個進步,但破解驗證碼的方式也在跟著進步。
2010 年,日本京都大學的研究人員向外界公布了滑動驗證碼,并于 2012 年投入商用。
2014 年,馬德里康普斯頓大學的研究人員就宣布他們破解了滑動驗證。
如今,加入了學習模型的智能腳本機器人也能通過學習人的滑動軌跡,通過做出變速,折返、抖動等行為軌跡來模仿人類,騙過服務器。
行為軌跡類的驗證碼還有更簡單無感的方式,點擊驗證,直接點擊按鈕,服務器通過收集檢測用戶的環境信息來判斷是真人還是腳本機器人。
這無疑是目前所有驗證碼中用戶體驗最好的,但它也并非絕對安全,而且還存在用戶隱私泄露的風險。
短信驗證和掃臉認證
現在,短信驗證已經成為最常見的驗證方式之一。 在老狐的手機短信中,兩類短信最多。
一類是驗證碼短信,一類是需要發送“ TD ”才能退訂,但退訂后又還能收到新短信的垃圾營銷短信,而最實用的快遞簽收短信只能排在第三。
短信驗證通過綁定手機號碼來確認該用戶是否是本人,跳出了網絡這一維度,調用了外部設備,安全程度比以上幾種驗證碼有所提升。
但驗證碼短信恰恰成了這種驗證方式的薄弱環節。
不法分子可以通過建立偽基站,截取用戶短信驗證碼,獲得登錄甚至交易權限。
又或者,通過詐騙獲取用戶的驗證碼。
另一方面,短信驗證碼又是最不友好的驗證方式之一,尤其是手機不在的時候,還要找手機,解鎖、記住驗證碼,再輸入驗證碼,這是我最討厭驗證碼的時刻。
如今,一些對安全要求較高的驗證通道已經卷向了掃臉驗證,需要對著手機前后移動,調整角度,眨動眼睛才能登錄。
然而這種看似安全的方式也不是絕對安全,百度搜索可看到許多掃臉認證被破解的信息。
驗證碼的另類敵人
這時老狐不禁想:我們普通用戶登錄個賬號怎么就這么麻煩。
本質上而言,驗證碼技術的戰爭是網站維護人員與黑客攻擊者之間的競爭。
雙方你追我趕,驗證碼的技術在 20 年里已經多次迭代。
從最簡單的輸入字母到需要調動用戶攝像頭的刷臉驗證,破解技術也從曾經的 OCR 發展到如今的 AI。 然而,最受傷的卻是我們這些普通用戶,驗證方式逐漸復雜,意味著我們要在驗證碼上花更多時間和更多手段。
驗證碼要面對的敵人,并不僅僅是腳本機器人或技術頂級的黑客,還有毫無技術含量的人類。
一些不法分子建立了驗證碼破解平臺,將驗證碼打包發送至平臺,以非常低廉的價格雇傭一批人。
人工輸入正確驗證碼答案,并建立數據庫,用來破解驗證碼,這個方法簡單粗暴卻有效。
AI 也學會了這一方式。 據媒體報道,一個測試 AI 的機構發現 OpenAI 的 GPT4 會假裝成一個視障人員,讓人類幫他輸入驗證碼。 沒錯,AI 甚至學會了欺騙人類免費幫它勞動。
面對越來越接近人類的 AI,區分人類和機器人將會變得越來越困難,驗證碼只會更加復雜繁瑣。
而作為一個普通的網絡用戶,老狐只希望輸入驗證碼的方式能簡單一點。
審核編輯:劉清
-
機器人
+關注
關注
209文章
27718瀏覽量
203621 -
計算機
+關注
關注
19文章
7056瀏覽量
86674 -
OCR
+關注
關注
0文章
141瀏覽量
16241 -
圖像識別技術
+關注
關注
1文章
26瀏覽量
6037 -
卷積神經網絡
+關注
關注
4文章
358瀏覽量
11786
原文標題:變態的驗證碼,到底在驗證啥?
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論