驗證碼 - 安全那些事!

常在網上晃悠的人,對下面這張圖都不會陌生。特別是在注冊新賬號、確認交易時,它們都會頻繁出現,要求我們輸入正確的驗證碼,那這些看上去跟我們要做的事情完全無關的驗證碼到底有何作用呢?

PSNU
0×1誕生

首先,先介紹下驗證碼程序的提出者,路易斯·馮·安(Luis von Ahn)。2002年,路易斯和他的小伙伴在卡內基梅隆第一次提出了CAPTCHA(驗證碼)這樣一個程序概念。該程序是指,向請求的發起方提出問題,能正確回答的即是人類,反之則為機器。這個程序基于這樣一個重要假設:提出的問題要容易被人類解答,并且讓機器無法解答。

在當時的條件下,識別扭曲的圖形,對于機器來說還是一個很艱難的任務,而對于人來說,則相對可以接受。yahoo在當時第一個應用了圖形化驗證碼這個產品,很快解決了yahoo郵箱上的垃圾郵件問題,因此圖形類驗證碼開始了大發展時期。

0×2發展與問題

圖形化驗證碼在被證明有效后,在互聯網上迅速得到了推廣。國內外各大網站,在關鍵的業務點上都加入了這一類型的驗證碼。

首先,由于開發者水平的良莠不齊,導致驗證碼本身的實現存在問題,從而導致漏洞可以繞過,常見的有以下幾種類型:

[1] 驗證碼的生成邏輯、答案用戶可見

如將驗證碼答案輸出到頁面中、寫在cookie里。打比方就是說,在發卷的時候,把答案寫在了卷子背面。(老師再也不用擔心我的成績)

[2] 驗證碼的生命周期未控制好

如驗證碼可以重復使用、不設超時。驗證一次,永久使用。

[3] 業務邏輯與驗證碼結合點存在問題

如修改業務參數可導致不用校驗驗證碼也可通過、甚至驗證碼就是擺設。結合到具體的業務點上有什么危害呢?

a. 驗證碼寫在cookie中。此處可導致旅客信息泄露。

b. 驗證碼與圖片存在對應關系,因此直接訪問html即可得到答案。此處可導致撞庫與暴力破解密碼。

0×3圖片驗證碼對抗與攻擊升級

在開篇我們提到了一個重要的假設:

CAPTCHA提出的問題要容易被人類解答,并且讓機器無法解答。

實際上,CAPTCHA所要處理的問題是:將普通人與惡意的用戶(黑客、垃圾消息發送者)區分開來。那當時間點到達2016年時,黑客們與普通用戶之間的差距已經很大了(想象下中國足球隊對巴西足球隊,而且此時留給中國隊的時間已經不多了)。

因此,CAPTCHA在圖片驗證碼這一應用點上已經無法滿足這一假設了。在這段時間內,出現了很多的加強和識別圖形驗證碼的方法(每一種方法的詳細原理和解釋,可以參見wooyun drops,在此不做詳述):


附上部分名詞解釋:

如上圖所示,原始的圖像使用了字體旋轉、背景色混淆等手段,在專業的驗證碼工具面前,也就是幾個命令拼接即可完成識別

如上圖所示,是一個驗證碼識別軟件自建字庫的過程,通過回車確認驗證碼識別正確,如有錯誤,稍帶修改繼續。當保存了上千個正確識別的字庫后,該程序便可達到一個可用的可用的準確率。(其實若不不做其他限制,此時準確率在30%以上時,即可造成很大的危害,畢竟對于攻擊者來說,發3個包與發1個包的成本差別不大)

看到這里,客戶們大概可以回答這個問題了:

為什么我用了驗證碼還是會被刷?

那普通驗證碼難道沒用了嗎?

那倒也不是,安全是一個博弈的過程。綜合使用之前提到的驗證碼技術(特別是字體粘連等),并且保持關注和變化,攻擊者的識別率也比較低。當攻擊的成本大于可獲得的利益時,自然就沒人來攻擊了。(普通用戶在此應強烈要求存在感)

此時,雖然兩方大小上略有差距,但是總體戰斗力還算是勉強打個平手,互相出招而已。只是隨著戰火的升級,個人輪番上陣后,驗證碼已經違背了他最初設計時的初衷:對普通用戶的友好性逐漸消失。而普通用戶的體驗也就成了這場戰爭中的犧牲品,這也就造就了一批有一批被用戶吐槽的無法辨認的驗證碼。




正當普通用戶們不斷吐槽的時候,程序員表示這個鍋不想背但是也得背。因為業務總是要做的,而攻擊者們也是要吃飯的,升級了驗證碼的成本,也就限制了風險的等級,于是就變成了這樣一個模式╮(╯_╰)╭:

程序員:熬一晚上升級
攻擊者:熬一晚上破解
程序員:熬兩晚上升級
攻擊者:熬兩晚上破解
....(心疼)...

大家就在這種你方唱罷我登臺的情況下看似和睦的度過了一段時間。

0×4 圖片驗證碼的沒落

在日日夜夜的對抗中,攻擊者想到了一個辦法,可以一勞永逸的解決圖片驗證碼的問題。在我對這些搞灰產的人們表示憧憬之前,先說點題外話。

2009年,google買下了CMU的一個項目:recaptcha。這個項目是CAPTCHA的進階版本。它所基于的假設與CAPTCHA一致,但是它同時讓用戶識別兩張圖片,一張用于驗證用戶身份,而另一張用于幫助難以用機器識別的電子文檔。


恩,如果讀者有從事此類灰產相關工作的人,請注意recaptcha右下角的小字(stop spam.read books看看這情懷)。

而recaptcha的作者,當然又是:路易斯·馮·安。在recaptcha的基礎上,路易斯進一步提出了一個概念:人類計算(Human Computation) 。

簡單來說,他希望借由計算機和網絡平臺,發揮人類技能,去解決大規模、復雜的問題,具體到recaptcha項目來說,就是借助大家的力量去幫助數字化書籍。(該思想的具體應用還包括一個叫ESP GAME的游戲以及后面會提到的no recaptcha)

但是,在2004年(我能搜到這個新聞的最早時間),就有人已經完美的實現了這個概念:人工打碼,并且起源地:中國(此處我應該感到自豪嗎)。

所謂的人工打碼就是,將驗證碼的請求轉發給某平臺,該平臺會將這個信息發送給平臺上的打碼工,然后打碼工人識別后,將答案反送回請求者。通過打碼平臺的api,攻擊者可以寫程序實現對目標的自動化操作,而驗證碼的部分只要交給打碼平臺就可以了。

打碼平臺在國內市場上的火爆,有幾個原因:

[1].從2006年開始,國內互聯網的迅猛發展,使得流量變現成為了可能。各種郵件營銷、SEO、IM工具等都迫切的需要穩定的可以繞過圖形驗證碼的方法。而近些年興起的基于數據的詐騙、賬號盜取等更進一步加劇了這個趨勢。

[2].打碼平臺的爆發式發展也同時得益于中國經濟蓬勃發展的原因之一:人口多并且人力成本低。網絡上一種常見的網賺模式,就是打碼工模式,一個只要會上網,能識別驗證碼的人就可以參與。PS:難道你沒有看見過下面這些廣告嗎?大學生、大媽,無需學歷,只要會上網、會打字,一天包賺XXXXX。當然其中除了打碼平臺,還有很多騙子。

可以打碼的類型包括:
1. 普通字母驗證碼
2. 中文驗證碼
3. 鼠標類型類驗證碼
4. 選擇題類型(比如某些網游中做任何會遇到的驗證碼)
5. 旋轉類驗證碼
6. 知識常識問答型驗證碼

以上驗證碼的價格在平臺上都是明碼標價,普通的字母驗證碼1條在1分錢左右,而知識問答類在6分錢左右,相較于利用這些灰產所會產生的利益,真是件美物廉,重點是還非常穩定。

同時我注意到國外的價格現在與國內的價格已經相差不大,現在美國的價錢約為$1.5/1000,美國的打碼工已經向東南亞擴展。打碼平臺一出現,2.2中提到的加強驗證碼的方法都無用了。因為不管你怎么變化,驗證碼總需要是人類能夠通過的。

0×5 新的征程

打碼平臺的出現,雖然沒有從理論上打破CAPTCHA的原則,但是也從事實上擊破了防止程序自動提交的防御,因此我們需要新型的安全的驗證方式。這些探索也帶來了現在各種多樣的驗證碼形式,這些我們將在下篇探討。

最后用一個“富有情懷”的圖片結束。

這張圖不是來自改變世界的極客,也不是來自富有愛心的藝術家。它來自某知名打碼平臺的官網,是不是太有情懷了?(你們的確改變了我們的工作方式)

面對這樣的情懷,我想我現在只能做一件事情。

END.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容