1. 程式人生 > 資訊 >科普:驗證碼的發展史與未來預測

科普:驗證碼的發展史與未來預測

Chrome 瀏覽器的使用者對於下面這個框框應該不陌生:

當你勾選方框,谷歌會根據風險分析引擎判定瀏覽網頁的到底 “是不是人”。這是一種簡潔又相對有效的人機識別方式,作用是把一些機器爬蟲篩掉。

“在網上,沒有人知道你是一條狗。”這是網際網路剛剛開始進入大眾市場的一句經典宣言,現在大資料的加持下,這個結論可能被動搖了,但是對於網頁和應用的所有者來說,他們很多時候都無法識別網路的另一端到底是機器還是人。

21 歲天才少年的創舉

最早遭遇這個問題的是雅虎。2000 年,雅虎郵箱是當時的當紅炸子雞,弄潮兒人手一個,是資訊收發的主流方式。一些黑產盯上了這個渠道,用機器註冊了大量的馬甲郵箱,用於發垃圾郵件、網路詐騙。一個時年 21 歲的、還在 CMU 上學的天才少年路易斯 · 馮 · 安給雅虎設計了一套人機驗證方案,就是最初的字元驗證碼

當時,影象識別對於計算機是個挑戰,對人類而言卻是小菜一碟,通過這種方式,驗證碼可以輕鬆地把黑產攔截在門外。驗證碼從此變成了一種身份認證標配,被廣泛使用在各種網站上,發明者路易斯 · 馮 · 安在計算機行業聲名鵲起。

隨著 OCR、計算機視覺技術的發展,計算機在影象識別上的能力升級,單純基於字元的驗證碼被爆破了。為了給機器製造一點麻煩,安全人員採用了各種辦法去 “弄髒”字元,包括字型變形、扭曲、翻轉等等。在這個過程中,路易斯 · 馮 · 安還做了一件創舉,當時有很多古書籍、舊報刊需要電子化,而很多古籍由於印刷質量、儲存狀況等原因,很多內容是 OCR 無法識別的,路易斯 · 馮 · 安想,既然每天有很多人在電腦前識別一些電腦認不出來的字元,能不能在做人機驗證的同時順便把古籍電子化把這個工作 “眾包”給網友?於是,文章開頭的 reCaptcha 也誕生了。

這是 reCaptcha 一個經典的互動介面,兩個字元中其中一個是計算機能判別的,另一個是古籍上面掃描下來的無法識別的。使用者在輸入驗證碼的同時,順便也參與了古籍電子化工作。

2009 年,reCaptcha 被谷歌收購,如文章開頭展示的一樣,谷歌現在很多人機認證的場景都是由 reCaptcha 在提供技術支援

單純從技術攻防角度,基於字元的驗證方式早就被爆破了。無論是變形多厲害的字元,用影象分割技術切到一定的顆粒度,採用卷積神經網路演算法也能很準確地識別出來。騰訊安全曾經協助警方破獲過一個國內的 “打碼”團伙,他們用 AI 對驗證碼進行爆破,爆破率最高可以達到 98%,剩餘 2% 以用眾包的方式找人去解決。

我們網上看到的 “想做兼職嗎?動動手指就能賺錢”的簡訊,很多時候就是黑產團伙發的招募資訊。一些三四線城市空閒時間很充裕的使用者坐在電腦前手動輸入一個個驗證碼,積攢到一定數量後,從中介手裡拿到一定的報酬。據不完全統計,這個鏈條上有百萬級別的從業者

但黑產是一個典型的講究成本收益的 “生意”,好比我們隨處可見的家用大門機械鎖,其實就是有限的排列組合,只要是小偷精力無限,總有一天能試到一把鑰匙能開啟。在驗證碼黑灰產也是一樣,AI 計算需要高效能的計算機、人工識別需要酬勞,都需要付出成本,目前在無利可圖的網站,字元驗證碼還是一種很流行的人機驗證方式。

獨樹一幟的 12306

“一輩子保持對生活和世界的新鮮感和好奇心,不斷探究身邊事物的本質,虛懷若谷,格物致知,再加上那麼一點點運氣,你就能通過 12306 的購票驗證了。”

這是一個關於 12306 的段子,看到的人都會會心一笑。

在驗證碼領域,12306 絕對是獨樹一幟的存在,它有著極高的安全係數,不僅有效地攔截住了機器人、各種自動化搶票助手,也把很多真人攔截在門外。

對大多數人來說,買火車票是低頻場景,一年可能買不了幾次;加之也沒有第二個渠道可以買,12306 會設定這樣的驗證碼環節,可能也是吃準了這一點。但是對於絕大多數需要顧及使用者體驗的服務提供商來說,過分複雜的驗證碼會讓使用者流失,不可取。

目前應用比較廣泛的幾種人機驗證方式,包括上文提過的字元驗證、影象識別(例如 “點選下圖中倒立的文字”)、滑塊驗證(例如 “拖動滑鼠完成拼圖”)等等

滑塊是使用者體驗比較友好、同時安全係數也相對較高的一種認證方式,因為它在影象驗證的基礎上往前走了一步,基於採集使用者的行為資料、環境資料等等多維度來判斷使用者是人還是機器,例如人類拖動滑塊一般是先快後慢:先是快速拖到缺口附近,再在缺口附近進行精準地校驗,並停留片刻釋放;機器的活動軌跡相對而言比較規則。

在網上搜索 “滑塊驗證碼”,有 N 個帖子是關於 “如何用 *** 破解滑塊驗證”的,很多已經被證明有 60% 以上的識別率,但是識別成本也會比較高。又回到一個老生常談:沒有攻不破的系統。安全人員要做的事情,就是把攻擊門檻提高,讓黑產覺得投入產出比不值得而放棄

易用優先還是安全優先,這是安全人員吾日三省吾身的問題。像票務網站、炒鞋、電商網站,這些網站的使用者賬號體系很有價值,對黑灰產而言是 “大戶人家”,這些網站在設定驗證碼的時候,安全性是首要考慮的。

在可見的未來,驗證碼還是一種行之有效的人機識別方式,安全人員和黑產在在驗證碼上的對抗還會持續。但我們可以稍微寬慰的是,現在市面上大部分驗證碼在實操層面上都是比較難以攻克的,一是單個驗證碼生命週期很短暫,很快會失效;第二個是驗證碼需要很強的圖片識別技術,而且有些圖片只能在前端瀏覽器、客戶端顯示出來,對於根本就沒有前端的伺服器來說,用機器去跑指令碼可能都看不到,也就無法解碼。

除了黑產之外,對於各種密碼、驗證碼來說,還有更大的對手。業界普遍承認的一個事情,量子計算被開發出來了之後,現有的密碼體系和信任體系、網路信任體系會全部崩潰,可能最難的密碼可能也只需要幾分鐘的時間就可以嘗試出來。但安全研究人員也認為,後量子時代正常的密碼也可以設定得非常複雜,所有的計算機也可以基於量子計算去設計一套密碼,屆時也會有相應的辦法能夠去保護安全。