轉帖|行業資訊|編輯:龔雪|2017-02-07 14:05:28.000|閱讀 510 次
概述:說起“驗證碼”,恐怕大部分人都會流露一臉便秘的表情。在搜索引擎里輸入“驗證碼” “發明”這兩個關鍵字,搜索頁面會彈出成千上萬個表達群眾不滿的結果:“誰發明了萬惡的驗證碼?”“發明驗證碼的人你出來,我保證不打死你”,當然這里面很大程度上是某12**6無良網站給大家留下的心理陰影。那么目前驗證碼機制究竟發展如何,相對的破解手法有有哪些?我們現在就來一探究竟
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
驗證碼的誕生,是為了杜絕通過軟件設計的“注冊機器人”進行惡意注冊,進而產生大量的垃圾用戶(僵尸用戶)以及垃圾點評信息。輸入驗證碼的過程,其實是讓機器判斷你到底是真人還是軟件。“驗證碼”的英文名字很拗口,叫CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),翻譯過來是“全自動區分計算機和人類的圖靈測試”。
yahoo郵箱在九幾年的時候,業務深受各種郵箱機器人的困擾,存在著大量的垃圾郵件,于是他們找到了當時仍在讀大學的路易斯·馮·安(Luis von Ahn),并設計了經典的圖形驗證碼,即通過簡單的扭曲圖形文字進行機器的識別。通過這個簡單的圖形,他們很快的控制住了垃圾郵件的數量,并將大量的機器人據之門外。
最開始的純數字驗證碼是很有愛的,后來數字和字母混合二維碼成為主流,但這仍然容易被破解,于是各家大法被研究出來,有將數字和字母各種扭曲的,有在背景設置圖案和噪點干擾的,從此驗證碼的發展就走上了一條畫風越來越奇特的不歸路。
從還算能忍的這樣:
變成了這樣:
還有這樣:
至此,我們不得不提出一個問題:驗證碼真的是必要的嗎?
驗證碼不是一個功能性的需求,他并不能帶來業務的提升,也不能帶來任何價值。驗證碼只是為了解決機器問題才誕生的。在設計和驗證碼演化的過程中,必須同時考慮安全性和體驗。
讓我們老考慮驗證碼的最簡化模型,關鍵點在于:生成的問題能夠由人來解答,并且機器難于解答。于是傳統的圖形驗證碼的重點就放在了如何生成讓機器難于解答的圖片上來。
從上圖看來,相應的各種方法已經有了相當成熟的一些對抗辦法,更不用說現在已經廣泛泛濫的打碼平臺了。
結合我們安全性和體驗兩方面來講,傳統驗證碼在兩方面來說都已經不能滿足要求了。現在驗證碼識別方式千千萬萬那,再復雜的驗證碼機制也禁不住各種野生大神、科班程序員輪番上陣蹂躪。目前來說,最基本的簡單驗證碼識別方式一般按照以下幾個步驟:
1.去干擾
把不需要的信息去除或削弱,比如干擾線、噪點等。其中一個原理是利用干擾信息與字符的RGB值的差別來識別干擾信息。而去除干擾線的算法一般都是對圖像進行曲線檢測,從而識別出圖像中的干擾線。畢竟干擾線大部分時間都是連續的小角度曲線或者孤立在字母外的曲線。
2. 文字分割與標準化
為了能夠識別出字符,需要把去除干擾信息后的驗證碼圖片進行分割,把每個字符作為單獨的一個圖片看待。然后對圖片進行適度偏轉,提高識別率。假如字符偏向角度相同的話,也可以先旋轉后切割。
首先對圖片像素進行掃描:對于完全沒有粘連的驗證碼來說,分割起來真是十分容易,直接從左到右掃描,在掃描不到文字像素的橫坐標處進行分割。
3.識別
單獨的字符分離出來后,就要開始訓練機器進行識別了。使用比較廣泛的是谷歌開發的光學字符識別引擎(Tesseract-OCR):
利用OCR識別的結果,雖然看起來有點傻,但由于是官方調教的,沒有針對同類型(同一網站)的驗證碼進行學習。當然也可以自己去實現這個過程。最霸氣側漏的方法當然就是訓練神經網絡了,由于這是一種模擬神經元工作的一種算法,由于需要經過足夠多的樣本學習,因此對扭曲的字符識別率比較高。
除此之外當然還有各種各樣的高端識別算法,等待你們探究。
看過了這么多林林總總的外部對抗,目前驗證碼機制自身存在的問題還有:
如果題庫被遍歷完成,那么其安全性無法保證。12306為什么后面把問題變成了圖片呢? 因為有攻擊者將每次的答案與出現的可選問題進行了多次重復遍歷,當這個遍歷到達一定次數后,會發現某個答案與某張圖常常會關聯出現(因為問題必定會有正確答案),通過這個出現概率即可得到答案。于是,12306才把文字變成了現在扭曲的圖片。 并且還有研究人發現,12306的圖片可能大量來自某百科,通過逆向使用該公司的圖像識別服務,可以得到該圖片的部分標簽。
2.體驗差
過年的時候,正常人平均都要答3、4次才能答對答案。而且部分圖片因為分辨率不高、再加上縮小圖片以后,會更加的看不清了。
基于人類用戶的行為,具體點就是用戶在進行相應操作時,會產生的操作記錄和環境信息(詳見設備指紋一文)等。
基于人類用戶行為這條路是基于以下基礎的:
A機器人的環境有別于正常用戶
B機器人的動作或頻率等有別于正常用戶
C機器人的在相應關鍵業務點的行為邏輯有別于正常用戶
但是這個基礎在技術對抗上有個更關鍵的點,在于如何構建一個安全的信道,將這些數據回傳回來。如果這個信道的采集機制、加密機制和傳輸機制被攻擊者所探知,那么以上采集的信息將沒有秘密可言。(換句話說,攻擊者會偽裝成正常用戶的行為發送數據)
說了這么多,未來驗證碼會如何發展呢?學院君表示我們只能拭目以待啦。
更多行業資訊,更新鮮的技術動態,盡在。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn