劉遠舉:12306與刷票應用的相愛相殺—— 12306驗證碼背後的技術與社會
3月16日,12306售票網啓用圖形驗證碼。當用戶登錄時,網頁上會顯示8張圖片,內容為動物、植物、家用電器,生活用品等等。然後,用戶需要按要求點擊選出其中一類物品,比如,選出8張圖片中所有的「螢火蟲」或「熱水瓶」。只有多選正確後,才能順利登陸12306訂票系統。
12306這麼做,當然是為了防止「刷票」。去年12月19日,12306網站訪問量達到破紀錄的297億次,平均每秒PV(每秒頁面瀏覽量)超過30萬次。巨大的流量很大程度是各種瀏覽器,搶票app、黃牛使用黑客軟件刷出來的。為了搶票,他們不斷刷新網站,造成了網站的沉重負擔。
【驗證碼是為了辨別電腦那頭是人還是機器】
之所以能刷票,是因為計算機無法識別刷新動作是來自於電腦面前的真正的人,還是軟件。所以,雖然12306在阿里的幫助下,增大了承受流量的能力,但釜底抽薪的辦法,還是要制止電腦代替人進行的登陸。隨著人工智能的發展,電腦可以開始模仿人,比如,微軟推出的語音聊天工具。所以,本質上講,12306的驗證碼方式,就是要分辨出屏幕背後到底是機器還是人,也就是說,這是一個圖靈測試。
圖靈測試來源於計算機科學的先驅圖靈寫於1965年的一篇名為《計算機器與智能》的論文。在這篇論文中,圖靈預言了創造出具有真正智能的機器的可能性。 由於「智能」這一概念難以確切定義,所以,圖靈提出:如果電腦能在5分鐘內回答由人類測試者提出的一系列問題,且其超過30%的回答讓測試者誤認為是人類所答,則認為電腦具有智能,通過測試。
某種程度上,正是由於「智能」難以確切定義,所以,圖靈測試只管智能的表象能否達到一定水平,並不關注智能的本質,這就為機器模仿人,完成圖靈測試提供了可能性。圖靈測試在很長一段時間內被視為人工智能水平的一個重要標桿。
更嚴謹地說,12306其實是一個逆向圖靈測試(reverse Turing test)。機器通過對話或者輸入驗證碼的方法區分被測試對象是人還是機器,回答錯誤或回答超時則判斷被測試者是機器。與圖靈測試不同的是,在圖靈測試中,人們希望看到技術進步使機器與人難以分辨,而在逆圖靈測試中,則恰好相反,往往是希望分辨出機器與人,杜絕欺詐。
【刷票軟件也有應對之道】
從技術上看,圖靈測試是,人來進行測試,機器企圖騙過人,12306的逆圖靈測試則是機器來進行測試,機器企圖騙過機器。在現代技術下,機器肯定比人好騙。
12306的逆圖靈測試,除了技術,在真實社會中,還受著經濟學的約束,即必須在一定成本下完成這個測試。除了經費的問題,用戶的易用性也是一個重要的因素。12306也做過類似努力,比如,不斷扭動的驗證碼,但卻因難度太大,招致了群眾的抱怨,最後取消了。
總之,技術的限制、用戶的易用性、成本,都降低了欺騙這個逆圖靈測試的難度。
要想欺騙12306網站的驗證機制,需要能夠模仿人的點擊,識別漢語,這兩項技術相對比較成熟。唯一稍微有問題的是圖片識別,雖然現在百度提出了百度大腦,拍照搜索,但實際上效果還是非常差。此次也有人利用這些公共圖像識別接口進行破解,據說識別率還不錯,但總體來說,機器識別圖片現在的可用性還不高。
但是,刷票軟件還有自己的粗暴辦法。每一張圖片的數字文件,都有自己特定的信息特徵碼,只要把圖片的數字特徵識別出來,然後人工把這個唯一的數字特徵與某種物品聯繫在一起,形成一個特徵碼庫,那麼,當下一次軟件遇到了這個圖片,得到特徵碼之後,經過比對已有的特徵碼庫,就知道這張圖片應該歸為那一類。
當然,實現這個目標之前,必須人工的完成所有特徵碼與類別的一一對應關係,所以如果圖片無限的話,那麼破解就不可能實現。但圖片不可能無限,也不會太大。這是因為12306網站,乃至後台程序本身,也識別不了圖片,12306也需要事先人工把圖片與類別一一對應。實際上,這就變為一個拼人力的問題。所以,只要圖片庫有限,機器自然就可以非常精確、快速的完成在所有圖片中選出一種物品的要求,實現機器登陸。
(網友戲言:地理都沒學好,買什麼火車票!)
不過,12306還有很多後續辦法。一個可行的辦法是稍微改變圖片,比如稍微扭曲、或者調下色調、或改變一兩個像素,使特徵碼變掉。對12306來說,改變後的圖片與圖片物品類別可以很方便的全自動的建立映射關係,但對黑客來說,建立這個映射過程又需要重新來一遍。當然,如果圖片改變不大,可以用圖像識別來重新建立這個映射。但無論如何,這實際上就是一個加密與解密的過程,加密方的成本總是小於解密方的。二戰時期,英格瑪小小一台機器,卻需要一台龐大的機器才能解碼,在個人電腦上利用RAR的加密,要破解卻需要很多高性能的電腦連續運作非常久的時間。所以,加密與解密的成本總是不對等的,加密者提升加密的等級(成本)之後,會導致解密者困難的成倍甚至幾何級增長。
但是,在真實世界中,12306卻無法把這個解密者的成本提升到解密方無法接受的程度。這是為什麼呢?本質上看,這是因為圖靈測試關注的僅僅是智能的外表,也就是說,被測試的物體即使沒有智能,只要傳導了智能,就能通過測試。更簡單的說,可以作弊,用人來替代機器回答。而且,12306的題目還不能讓人,讓用戶感覺太難。
reCAPTCHA是一家提供驗證碼服務,從而幫助網站防垃圾、防欺詐的公司,後來為Google收購。據說,Google看中的不僅是CAPTCHA生成驗證碼的軟件,而是把reCAPTCHA視為一種改進OCR(光學字符識別)軟件的方法。
【Google利用網民群體力量識別圖書】
在圖書電子化的過程中,Google圖書和Google新聞檔案搜索都需要大量文字掃描工作,但常常遇到模糊、扭曲造成的無法識別,特別在古籍書刊中,更是如此。有了reCAPTCHA之後,Google就把這些模糊、扭曲,機器無法識別的圖片放到驗證碼中去。
google會在驗證碼中放上兩個單詞,一個單詞,google知道答案,用來判斷是否是真實的人,另一個單詞,則是模糊的、扭曲的單詞圖片,google不知道答案。當用戶填對了第一個單詞的時候,不管用戶第二個詞是什麼答案,都能通過驗證。同時,Google保存第二詞的答案。這就等於用戶在完成驗證碼的時候,起到人工識別單詞圖片的作用。reCAPTCHA目前為10萬多家網站提供驗證碼服務,這就意味著每天有幾十萬甚至上百萬的人在輸入驗證碼,幫助Google識別模糊的圖書掃描件。
【刷票軟件則利用群眾力量應對驗證碼】
在中國,這個過程被商業化了,這就是所謂的打碼平台。以12306網站為例,如果在刷票軟件、黑客與12306的攻防戰中,12306最終使用了一種機器無法完成的方法,那麼,刷票軟件就可以通過一個接口,把人工智能無法識別的圖片轉移到一個活生生的人的電腦上。對這個人來說,他的電腦上僅出現圖片,他也只需要填入識別後的結果,然後,這個結果被返回給刷票軟件,刷票軟件再填入網站。提供這個服務的平台,就叫做打碼平台。由於驗證碼圖片的傳輸與答案的返回都是全自動的,又有非常多的人在從事這個工作,所以,整個過程非常快,與正常人親自登陸沒有區別。
驗證碼服務必須要考慮到用戶的易用性,所以,不管對機器多難,對真正的人來說,還是比較好識別的,所以,這是一個簡單的體力勞動。中國是個人力資源豐富的國家,這種電腦面前的體力勞動也很便宜,目前的價格,識別一個驗證碼是1分錢。所以,整體來看,打碼平台提供的服務不但是高效的、也是廉價的,在經濟上有可行性,自然會發展起來。
【12306和刷票軟件的攻防戰,最後得益的是程序員?】
新的驗證方式推出後,主流搶票工具均無法登錄,而當天晚上,就有搶票軟件公司表示,投入技術團隊找出了破解方案,實現圖像驗證碼自動識別。並稱,12306推出圖形驗證碼方式對其搶票軟件沒有影響,而且「成功率提升200%」。3月18日,搜狗瀏覽器產品負責人表示,搜狗瀏覽器已進行了技術升級,已成功實現圖像驗證碼的輸入,搶票不受任何影響。短短1天多時間,12306的圖片並沒有完全展示一遍,而圖形識別技術還並不是很成熟,所以,目前所謂的先進破解方式,很大的可能,就是打碼平台。
對於這個情況,12306的產品經理與程序員是心知肚明的,那麼,為何還要繼續做?技術雖然帶動我們社會的不斷發展,但另一個根本規律卻是人的規律,社會的規律。
12306不管之前是政府部門,還是現在是國有大型企業,追求更公平是其必然目標。但是,一勞永逸的獲得公平,首先,需要頂層設計,涉及到探討售票機制的本質。票是稀缺資源的分配,人類目前最合理最公平的稀缺方式的分配是抽籤。在現代計算機技術的幫助下,這種方式能極大的制約住租值耗散。比如,車牌抽籤,即使有腐敗但卻無黃牛。但是進行頂層設計卻是風險與挑戰並存的,很多時候,對管理者而言,小調整比大刀闊斧要安全得多。
其次,雖然知道是做無用功,但是卻無法不做。不做的理由向公眾很難解釋清楚,更何況,這等於把責任推給頂層設計,在企業內部,也是不可接受的。
而且,不管是刷新與服務器(繁中稱伺服器)容量的攻防戰,還是工程師與黑客之間的攻防戰,都需要預算支持。所以,在一個預算約束不強烈的政府部門或企業中,這種年年改變,年年白幹的局面,對具體崗位的人來說,也並非壞事。
(上海金融與法律研究院研究員,經濟之聲《財經名人堂》特約評論員,專欄作家。)
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
- 来自作者
- 相关推荐