12306圖片驗證12小時內被破解,驗證安全的出路到底在哪?

phpde1 9年前發布 | 7K 次閱讀 12306

12306圖片驗證12小時內被破解,驗證安全的出路到底在哪?

03 月 16 日上午,12306 網站更新了自己的驗證碼形式,將原有的驗證碼從英文字符變換到 8 張小圖片,用戶必須根據問題提示來點擊選中正確的圖片,然后才能預定車票。緊接著,各路媒體開始發稿,《12306 官網放大招:啟用圖片驗證碼所有搶票軟件將失效》《12306 官網推出全新圖片驗證碼搶票軟件將失效》等新聞層出不窮。作為一個程序員,看到這樣的標題,十分困惑這些媒體是怎么用上帝視角這么直接斷定搶票軟件將全部 失效的,可以想象一大波刷票公司正準備捋起袖子干活就直接聽到 12306 宣布自己勝利了。當然,我們反對一切的黃牛黨,本文只是談談驗證碼技術。

重技術的驗證碼是一場拉鋸戰

當我們談論驗證碼時,不免地提到兩個人。第一個是計算機科學之父、人工智能之父艾倫.圖靈,圖靈對整個計算機科學的貢獻和意義在此就不用展開, 之前所以提到他,是因為他提出的“圖靈測試”,這一理論第一次提到將電腦和人區分開。第二個必須提到的是卡內基梅隆大學的路易斯·馮·安,他在 2002 年第一次將扭曲的文字用于區別人和計算機,就是我們現在普遍見到的英文字符驗證碼,后來他將驗證碼公司 Re-CAPTCHA 賣給了 google。

現在 12306 同樣也用了扭曲的英文字符,但是卻抵擋不住黃牛黨和刷屏軟件機器識別,是因為在這近十年計算機科學技術的發展,OCR(Optical Character Recognition,光學字符識別)等技術發展的已經十分成熟,識別扭曲英文字符并非難事,根據現有實驗報告統計及真實調查,普通的驗證碼的破解率基 本在 75% 以上。說到這里我們看看百度和騰訊是怎么解決的。

12306圖片驗證12小時內被破解,驗證安全的出路到底在哪?

騰訊將驗證碼圖片背景直接貼上真實圖片做干擾,而且顏色采取的近似值。

12306圖片驗證12小時內被破解,驗證安全的出路到底在哪?

被稱為百度神獸的九宮格漢字驗證碼,利用中文的博大精深,在防刷上有較大的提升,但是對人的用戶體驗上就略差了。

12306 的驗證碼出發點是安全?用戶體驗?

那么,我們來談談 12306 的圖片驗證碼到底是個什么鬼。12306 所采用的圖片式驗證碼的驗證形式,并不是什么首創,早在一些游戲網站上也采用過這樣的驗證形式,請看下圖。

12306圖片驗證12小時內被破解,驗證安全的出路到底在哪?

這把人都能嚇懵的驗證碼還真出現過,而且很不幸的是,上了一陣子之后就被破解了。

現在 12306 推出的圖片驗證碼,首先從用戶體驗上來講,并沒有比之前的文字驗證碼好用多少。雖然用戶不再依靠鍵盤輸入,但是面對小且密集的 8 張圖片,選出“所有”正確的圖片,那必須把所有圖片仔細看一遍,這一過程帶來的不確認型其實是同用戶分辨G和 9 和心里過程是一樣的。不信你瞅瞅下面哪些是郵票?重要的是這一過程中帶來很大的不確認性,心理負擔略重。         

12306圖片驗證12小時內被破解,驗證安全的出路到底在哪?

用戶體驗這個標準,不好衡量,我們再來談談安全性。從一開始變成圖片驗證形式,事情就不會像今天新聞標題說的那樣,“刷票軟件將全部失效“(我 本著好奇的態度,搜了一下相關新聞,基本上從 2012 年起,每次 12306 更換比較明顯的驗證碼,媒體都是這樣報道的),為什么呢?前面我們講到成熟的 OCR 技術導致英文字符驗證碼很難起作用,事實上,圖像識別的發展也是趨于成熟。所以,12306 的圖片驗證碼被迅速破解也不是什么難事,反而將門檻降低。

下面的具體破解舉例引用知乎用戶王貓貓在問題“如何評價 12306 的最新版驗證碼?”下的回答。

12306圖片驗證12小時內被破解,驗證安全的出路到底在哪?    

(此圖來自知乎用戶王貓貓的回答

直接將圖片處理后丟入 google、百度的識圖接口,返回的數值讓人驚訝(第二張圖居然能精準識別到是沙縣小吃?)。后來根據王同學提供的代碼,我進行了下一步的處理工作,再 次利用第三方軟件識別中文字符,然后將字符與圖片字符進行匹配,之后選擇圖片。整個測試圖片大概 200 張(只是模擬了登錄,沒有去刷掉一整車票),通過率在 85% 左右。所以,僅僅是技術愛好者動用一些公用接口就輕松能識別圖片類容,而且一旦識別后,還可以將這張出現過的圖片存庫,再次出現就更加快速準確的定位了。 暫且不談圖像識別和機器學習這樣高大上的破解方法了。

圖片驗證碼之所以不安全,是因為目前的圖片識別技術也是相當的成熟。12306 這些圖片如果是人工標記,無疑是將自己擺到一個愚公移山的悲壯位置;如果是機器識別,也一樣是可以被識別內容,即用圖片內容的識別作為驗證核心將毫無意義。

從 12306 這次更新來看,12306 的驗證思路,還是在玩已經過時的技術,對驗證的視野和理解并不是很透徹,才會落到上線不到一天就被破解的尷尬局面。當然,12306 有面對黃牛的進行創新的勇氣是可嘉的,但是方向走錯了,進行購票流程上的全面優化才能讓問題得到最終的解決,將賭注放在驗證碼身上,目前看來不太現實。

走在前面的依然是 Google

那么,驗證安全的終極奧義是什么呢?我們可以回顧一下去年的關于 google 的 No-CAPTCHA(No-Capthcha 是 Re-Capthcha 的子項目)的文章,google 提出了一個概念叫 human behavior analysis,大意是將用戶的行為做為判斷人與計算機的準則。這個理念提出的意義在于,不再依靠圖靈測試即單一的答案來判斷人機,而是通過用戶一系列 的上網行為來確定訪問者是人,還是機器。但是從 google 目前的前端代碼層和具體流程來看,目前只是試探性的的發展,如果這個理念能夠實際操作并完善,那么驗證碼的安全性將提高的一個史無前例的高水平,至少破解 門檻不會低到僅僅調用一下公共接口就瞬間破解。

來自: 虎嗅網

 本文由用戶 phpde1 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!