刷票軟體或者秒殺軟體是如何破解驗證碼的?
像淘寶那樣的中文驗證碼也被破解了嗎?確保驗證碼不被破解的難點在哪裡?機器識別圖片的能力已經如此強大了么?
以下全文摘自TomsInsight團隊的文章《創業視角:人工智慧或打碼軟體》,如果有侵犯他人利益,我會馬上刪除。簡單來說就是,人多力量大。
驗證碼背後的故事
關於驗證碼,我們每個人應該都非常熟悉。幾乎所有網路應用的註冊、提交信息或者交互信息時都要求輸入指定圖片上的七歪八扭的文字,這是為了防止使用特定程序模擬用戶行為。例如:論壇灌水、批量註冊ID、各種刷票、等。我們每個人都有輸入驗證碼的經歷。
驗證碼,這個源自卡內基梅隆大學的發明英文名是CAPTCHA(下文統一稱之為CAPTCHA),是一個很高大上的名字的縮寫:Completely Automated Public Turing test to tell Computers and Humans Apart (全自動區分計算機和人類的圖靈測試)。區分計算機和人類的圖靈測試,那什麼是圖靈測試呢?
1950年10月,圖靈發表了一篇題為《機器能思考嗎?》的論文,成為劃時代之作。正是這篇文章,為圖靈贏得了桂冠——「人工智慧之父」。在這篇論文里,圖靈提出「機器思維」的概念,對智能問題從行為主義的角度給出了定義,由此提出假想:即一個人在不接觸對方的情況下,通過一種特殊的方式,和對方進行一系列的問答,如果在相當長時間內,他無法根據這些問題判斷對方是人還是計算機,那麼,就可以認為這個計算機具有同人相當的智力,即這台計算機是能思維的。這就是著名的「圖靈測試」(Turing Testing)。
而CAPTCHA,是最簡單、應用最廣的行之有效的、全自動化的圖靈測試。如果你是人類,就可以正確的輸入歪曲的字元,如果是計算機,就不能。
從2000年CAPTCHA出現開始,人工智慧領域就有無數科學家和黑客致力於破解它!為什麼有大量的人試圖破解呢?
大家想想:圖靈測試是「人工智慧之父」圖靈提出來的,而代表人工智慧學科最高水平的卡內基梅隆大學研究出來最通用的圖靈測試CHPTCHA,誰要是能通過技術手段來識別出來,誰就一個單挑了人工智慧領域的江湖泰斗「少林寺」!想想一個人單挑了「少林寺」是什麼感覺?!
卡內基梅隆大學計算機科學家,CAPTCHA聯合開發人Luis von Ahn說:「驗證碼在2000年左右出現,自2003年開始,每隔幾個月就有消息聲稱有軟體可以將其破解。即便是字母驗證碼被破解,但還有圖片驗證碼,圖片驗證碼變形的背景只有人類才能識別。」
十多年來,大量的團隊和公司都在這個上面不斷的嘗試,但是魔高一尺道高一丈,驗證碼也不斷升級,變得越來越複雜,複雜到有時候我們人類也需要幾次嘗試才能識別正確。研究人工智慧的科學家和黑客們在上面嘔心瀝血,也很難完成這樣「單挑少林寺」的超級壯舉。破解CAPTCHA 也就成為了一個神一樣存在的目標。
但是如果我告訴你,遠在中國的互聯網創新精英們早在2003年就已經徹底攻破了CAPTCHA,你信么?
打碼模式與打碼軟體
隨著CAPTCHA的使用越來越廣泛,破解CAPTCHA不僅僅一項「單挑少林寺」的壯舉,還有著大量的經濟利益。這個世界上永遠不缺為了金錢和榮譽而肝膽塗地的人,有些人「單挑少林寺」是為了江湖榮譽,而更多的人是為了存儲在少林寺裡面的大量財寶 -- 這些財寶都是附近的財主因為相信少林寺的絕對安全而存放在少林寺的。
從2003年開始,從來沒有人能「單挑少林寺」,但是少林寺的珠寶也從來沒有安全過。因為發源自中國,推廣到全世界有效的破解方法「打碼模式」出現了。
所謂的打碼模式,其實很簡單,就是用人工的方式去破解。破解組織製作了打碼軟體,當在網上需要輸入CAPTCHA時,打碼軟體自動的把歪曲的圖片信息送到打碼工人面前,一個熟練的打碼工人一分鐘可以輸入20個以上的CAPTCHA。這就是最早的打碼破解模式。
接下來起源於中國的這種人力破解的方式傳到了全球各地,各大第三世界國家很多人靠打碼為生(不完全統計有100萬以上的打碼工人存在),而這種工作也有了一個全球通用的名字:CAPTCHA Human Bypass。
有人會問了,少林寺的珠寶到底是什麼東西呢?為什麼大家都拚命要破解CAPTCHA呢,下面看TOMsInsight的數據組冒死從國內一著名打碼軟體組織獲取的數據:
從2006年開始,中國互聯網的遊戲和電商開始了高速發展,流量終於可以變現。郵件營銷,SEO,IM工具營銷等開始火熱,打碼模式到了新的發展高度,由於打碼軟體用戶的特殊性,也是為了隱藏自己,目前的打碼組織都是通過API(國內以易語言API為主,關於易語言這個國內互聯網地下世界最常用的語音,TOMsInsight正在調研分析會在稍後分享)來分發,而集成到專有專用的軟體中使用(一般使用打碼API的軟體都是定製開發),所以假設我如果定製一個郵件營銷的程序,如果需要識別驗證碼,我只需要在軟體中接入打碼組織的API,衝上錢,那麼CAPTCHA就再無法阻攔這個程序。
少林寺再也無法保護這些珠寶,而從此垃圾郵件、論壇營銷、QQ 的各種群發廣告、各種SEO手段,也屢禁不止。著名的圖靈測試CAPTCHA在理論上從沒有被攻破,但也從沒有安全過。
感謝TomsInsight團隊提供的優質內容,微信公眾號裡面推薦了各種乾貨,非常喜歡這個團隊的內容。
首先來說,破解是一個不良好的定義。
得益於各種影視作品的宣傳,我想大家已經把破解想像成是有一種神奇的機器掃一下就能得出密碼/驗證碼吧?
就拿加密演算法來說,學術上的破解是指找到了一種比窮舉所有可能更簡單的方式得到密鑰。也就是說事實上所有的東西都可以被暴力破解。所謂的破解只是發現了一種比暴力破解更簡單的方法罷了。
驗證碼也是如此,任何驗證碼都可以被窮舉來驗證,當然產生驗證碼的網站一般也有防窮舉措施,例如每一次驗證都會把驗證碼過期,然後產生一個新的驗證碼。
但是儘管如此,我們隨機或者產生 一個可能不斷的嘗試,總有一定的概率可以進去。
只要能提升這個概率的任何方法,都可以認為是一種破解。但是很顯然,即使出現了一種大約有萬分之一的可能可以猜中驗證碼的演算法,我們不會認為這個驗證碼被破解了。
所以首先,破解是一個不明確的定義。
故而,中文驗證碼是否已經被破解,目前來說相對靠譜的說法是,目前還沒有可以讓機器識別率達到滿意程度(50%以上)的演算法。
第二個問題,確保驗證碼不被破解的難點在哪裡?
事實上驗證碼是不能確保不被破解的,因為對於驗證碼這種東西,還有一個終極的提高識別率的方法,就是直接讓人來識別。驗證碼只是提高了機器自動化操作的成本(複雜的識別演算法需要大量的資源來開發,或者人工識別需要額外的人力成本),而不能杜絕機器自動化操作。
當機器自動化操作的收益突破了驗證碼所設置的成本障礙的時候,那驗證碼就不管用了。
所以雖然12306在驗證碼上仍然有大量的改進空間(例如最基本的防窮舉措施都沒有做到位),但僅僅依賴於驗證碼是不足以阻擋黃牛和刷票軟體的。各種人工打碼,比如某塊,某優,某某兔之類的
推薦閱讀:
※簡訊驗證碼被亂髮怎麼辦?
※目前的大量網站是否存在驗證碼濫用的問題?
※TLSG是什麼,為什麼谷歌和微軟會用相同的號碼發送登錄驗證碼?
※新浪微博登錄時,只有輸對密碼後才需要輸入驗證碼,是不是不好的設計?