驗證碼識別技術:驗證碼識別屬於人工智慧嗎

摘要驗證碼:人類智能與人工智慧的戰場前沿

「在互聯網上,沒人知道你是一條狗。」——網路諺語

「我會回來的。」——電影《終結者》系列

隨著春運的臨近,購買火車票又成了不少人關注的事情。由於近年來中國鐵路把重點放在了網路售票上,中國鐵路總公司的售票網站12306.cn是多數人首選的購票網站,它也成為了「黃牛黨」試圖破解的關鍵網站。

因此,不難理解,當12306網站提高網站驗證碼的難度之後,許多人開始抱怨。就在這幾天,關於12306網站的「奇葩」驗證碼的新聞傳遍了整個網上,甚至已經被外媒報道。

12306網站的驗證碼真的是奇葩嗎?有評論認為,12306設置這樣的驗證碼是為了為難用戶而不是服務用戶。這樣的指責真的成立嗎?

要回答這個問題,我們首先要弄清楚設置驗證碼究竟是為了什麼。

有一句網路諺語「在互聯網上,沒人知道你是一條狗」。這句諺語通常被理解為強調用戶在互聯網上的匿名性——沒人知道在網路另一端坐著的究竟是什麼人。把這句諺語延伸一點,就變成了「在互聯網上,沒人知道你是一個計算機程序」。事實上,自動化的計算機程序(它們被稱為bot)是互聯網的組成部分。例如,各大搜索引擎都有各自的自動化程序在網上收集各種信息,這種自動化節省了大量的人力。

但是自動化程序帶來的也未必都是便利。有人也會用自動化程序做壞事。例如,別有用心的人可以編寫自動化程序偽裝成網路用戶,在各大互動式網路上濫發廣告。具體到12306的例子,我們知道,「黃牛黨」的目的是比你更快地搶購到車票,如果他們編寫了自動化的程序登錄12306網站購票,那麼你是根本無法和高速運轉的計算機程序對抗的——它們實在太快了。如果徹底取消驗證碼,那麼對於一般用戶,可能更難購買到車票。

你可能已經意識到了這個問題的關鍵:有沒有一種方法能把網路那一端的人類用戶和自動化的程序區分開來?是的,這就是驗證碼的作用。這類驗證機制有一個名字:CAPTCHA,即「區分計算機與人類的完全自動化大眾圖靈測試」。

圖靈測試是20世紀50年代由英國數學家阿蘭•圖靈提出的。這個測試是讓人測試一個不可見的相對者,從行為上判斷對方是人還是機器,目的是檢驗一台機器是否具有等同於人類的智能。簡單地說,圖靈測試就是「人類判斷對方是人還是機器」。

而CAPTCHA的本質是一種逆向的圖靈測試,在這種測試中,是讓機器判斷一個不可見的相對者(例如,一個互聯網上的用戶)是人類還是自動化的程序。當90年代互聯網開始走向大眾的時候,對互聯網的濫用也變得越來越多。如何制止不友好的網路自動程序的行為,成為了一個需要解決的問題。「驗證碼」就是CAPTCHA的具體化的產物:當你需要登錄某個網站的時候,你首先需要輸入登錄頁面上顯示的一個圖片上的字元。如果輸入正確,系統就認為你是人類而不是程序,於是允許你進行下一步的操作。

軍備競賽

驗證碼能起作用的大前提是人類可以輕鬆地識別驗證碼,而機器卻不能。然而,實際情況要比這複雜得多。很顯然,一個只能解讀網頁的HTML編碼的程序對圖片方式顯示的驗證碼束手無策。但是簡單的驗證碼也只能擋住簡單的程序。光學字元識別(OCR)技術在很早以前就出現了,而且性能越來越好(如果80年代的時候OCR技術已經成熟,在《回到未來第二部》里可能就不會出現條形碼號牌的汽車)。如果一個攻擊者使用OCR程序自動識別驗證碼,那麼這種CAPTCHA就被攻破了。

事實上,當最早的發明者研究驗證碼技術的時候,他們已經考慮到了這種情況。有趣的是,他們從掃描儀的說明書中「逆向」獲得了靈感:如果說明書指出了應該避免哪些妨礙OCR識別的低劣圖像,他們就如法炮製把驗證碼圖像劣化。

這樣有效嗎?有效。但是這就像一場軍備競賽。驗證碼的攻擊者也在提高識別技術的能力。於是,我們在這些年看到字元型驗證碼不斷複雜化,從最早的規矩的字元,到不斷複雜的圖像底紋,字元變得更加扭曲、粘連。這導致了人類識別驗證碼所需的時間也在增加。根據不同的估計,如今每天人類花在識別網頁驗證碼上的時間已經超過了幾十萬小時。

這是多麼驚人的浪費。在網路機器人橫行的背景下,在進行圖靈測試的同時,還能堅持自由和人道主義的原則嗎?這真是一件可悲的事情。為了回收利用這種被浪費的時間,卡內基•梅隆大學的Luis von Ahn等人幾年前提出了一個稱為reCAPTCHA的系統。2008年,他們在《科學》雜誌上發表了這一成功,2009年,該發明被谷歌收購。

reCAPTCHA的運作方式是非常巧妙的,它被設計成既用於區分人類和機器,又用於幫助文獻的數字化。首先,對那些信息時代之前出版的需要數字化的文獻進行OCR處理,用兩種OCR程序識別同一篇文獻,挑出那些兩種OCR程序識別存在差異的疑難詞作為reCAPTCHA的測試詞。然後,還要附加一個已知的對照詞。用戶需要同時輸入測試詞和對照詞才能完成reCAPTCHA。如果用戶輸入對了對照詞,那麼系統就認為用戶也有很大可能性輸入對了測試詞(用戶不知道網頁上顯示的哪個詞是對照詞)。當多個用戶對同一個測試詞的輸入都一致的情況下,系統就認為這個疑難的測試詞被用戶「校對」了。下一步,這個被校對過的測試詞會被用於reCAPTCHA測試的對照詞。

reCAPTCHA的巧妙之處就在於,首先,被用於該測試的詞都是OCR程序不太擅長識別的,這樣就給攻擊者帶來了一定的麻煩。其次,該測試並沒有減少用戶花在驗證碼上的時間,而是借用了用戶的力量用於校對OCR處理過的文獻。谷歌就是使用reCAPTCHA對紐約時報報紙數字化工程進行了校對。

但是即使是reCAPTCHA也避免不了被破解的命運。自從reCAPTCHA上線以來,已經有研究人員多次報告實現了對谷歌的reCAPTCHA的攻擊,其成功率各不相同。谷歌也「與時俱進」地多次升級reCAPTCHA,讓它的字元變得更加難以辨認——對人類和機器都是如此。事實上,早就有人抱怨谷歌的驗證碼讓人類用戶也難以識別。

驗證碼變得人類也難以識別,這其實是很正常的現象,因為這說明了人工智慧技術在不斷進步,當你在識別一個驗證碼的時候感到困難,你實際上已經遊走在了人工智慧與人類智能較量的戰場前沿上。

除了字元型驗證碼,研究人員還提出了其他類型的驗證碼。例如,一種驗證碼是在字元型驗證碼的基礎上附加了問題。但是,這只不過是給攻擊者暫時增加了難度。例如,一個過於簡單的問題(驗證碼:2+4=?)只要簡單升級攻擊演算法就能破解(12306網站也採用過這種驗證碼)。而過於困難的問題卻又不符合「大眾測試」的目的。很顯然,一個類似於「方舟子博士的座右銘是什麼」的驗證問題能阻擋大多數程序,但是由於這個問題比較小眾,也會讓許多人類用戶感到困惑。而且,隨著人工智慧技術的不斷進步,機器可能會比人類更擅長回答諸如此類的自然語言問題——還記得參加美國知識競賽Jeopardy!(國內通常譯為《危險邊緣》)的計算機系統「沃森」嗎?

另一種類型的驗證碼是讓用戶識圖。這種驗證碼是建立在圖像識別比字元識別更困難的前提上的。有多個研究組提出過類似的方案,例如,幾年前微軟的研究人員提出的一種方案是,為用戶隨機提供一組動物的照片,讓用戶在其中選出所有的貓或者所有的狗(其前提是假定機器不擅長區分貓狗)。你可能已經意識到了,這恰恰類似於12306的圖形驗證碼的。其實,12306的圖形驗證碼大致是可行的,它遭人垢病的方面主要有兩個,一個是可能超出了用戶的知識範圍(讓用戶選出沒有接觸過的物品,例如,調色板),另一個是它的圖像過於模糊,以至於人類用戶也無法識別。其實第二個問題是很微妙的:如果圖像太清晰,人工智慧程序也可能輕易地識別。驗證碼:人類智能與人工智慧的戰場前沿

終極的方法是「人肉」識別。既然CAPTCHA的目的是區分人類和機器。如果組織一大批人,讓他們專門負責識別驗證碼,這樣就從根本上繞過了CAPTCHA。在特定情況下,這確實是可以實現的。

可以這樣說,設計一種CAPTCHA就是提出一個人工智慧領域的難題。而CAPTCHA的攻擊者就是在解決一個人工智慧領域的難題。隨著人工智慧研究的不斷進步,在神經網路、機器學習等技術的幫助下,計算機肯定會更加擅長識別驗證碼,或許,有朝一日它們會比你更擅長。這聽上去似乎是矛盾的:你究竟應當期待驗證碼有效,還是應當期待驗證碼被攻破(也就意味著人工智慧研究的突破)?

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/221984.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 13:25
下一篇 2024-12-09 13:25

相關推薦

發表回復

登錄後才能評論