門:Bearkiii
大家最近應(yīng)該都被12306坑爸爸的驗(yàn)證碼刷屏了。在這緊張的搶票節(jié)奏下,忍受對驗(yàn)證碼的智商測試也不容易。
看到網(wǎng)站上的奇葩驗(yàn)證碼,網(wǎng)友們紛紛獻(xiàn)計(jì)獻(xiàn)策,我個(gè)人覺得難度最大的應(yīng)該是下面這種了:
什么,你一個(gè)都不認(rèn)識?圖片來源:
然而,吐槽歸吐槽,在這小小的驗(yàn)證碼背后,其實(shí)有著許多有趣的故事。屏幕上的方寸之間,其實(shí)有著智力上的激烈交鋒。在驗(yàn)證碼不斷發(fā)展的背后,是一場場來勢洶洶的技術(shù)變革。而這場變革,我們每個(gè)人都身在其中。
驗(yàn)證碼的起源
想必很多人都覺得12306的驗(yàn)證碼“反人類”,但其實(shí),“反人類”的驗(yàn)證碼最初是用來"反機(jī)器"的。
1998年,康柏電腦公司(Compaq Computer Corporation)的四位程序員馬克·李李布瑞吉(Mark D. Lillibridge),馬丁·阿巴迪(Martin Abadi),克瑞斯那·巴拉特(Krishna Bharat)和安德雷·布羅德(Andrei Broder)向美國專利局提交了一份專利。
在這份專利里,他們提出了一種選擇性限制計(jì)算機(jī)系統(tǒng)訪問的辦法(Method for selectively restricting access to computer systems)。他們提出這個(gè)方法的主要目的,是為了防止腳本機(jī)器人(bot)自動(dòng)向他們的搜索引擎提交網(wǎng)址。
在這篇專利里,他們采用隨機(jī)生成含有字符串的圖片這一方法來生成驗(yàn)證碼,并通過扭曲外觀和添加背景來避免圖片被OCR(光學(xué)字符識別)技術(shù)破解。
流程圖:隨機(jī)生成字符庫→選取隨機(jī)字符串→隨機(jī)改變外觀→添加背景→提交最終效果
它就是驗(yàn)證碼的雛形。
區(qū)分人與機(jī)器的驗(yàn)證碼
想必大家一定見過類似上面的驗(yàn)證碼圖案。而熟悉的驗(yàn)證碼技術(shù)背后,隱藏的是這樣一個(gè)很深?yuàn)W的問題:
如何區(qū)分真人和機(jī)器?——即如何證明坐在電腦前的是一個(gè)活人而不是一段程序呢?
在這個(gè)問題上,一種解決方案是“圖靈測試”,即“人類向計(jì)算機(jī)提問”。而驗(yàn)證碼恰好相反,是“機(jī)器提問人類解答”,因而驗(yàn)證碼也被認(rèn)為是“反圖靈測試”。
2003年,路易斯·馮·安(Luis von Ahn)等人提出了“全自動(dòng)區(qū)分計(jì)算機(jī)和人類的公開圖靈測試”,即CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)。
這個(gè)短語,正是驗(yàn)證碼的名字。
而這就引發(fā)了一個(gè)新的問題:機(jī)器人向人類提出的問題,能讓機(jī)器人解答嗎?如果機(jī)器人能夠識別驗(yàn)證碼,那不是意味著這個(gè)驗(yàn)證碼不再能夠驗(yàn)證“人類”和“機(jī)器”了?
從這以后,各種各樣的驗(yàn)證碼和驗(yàn)證碼破解層出不窮,程序員們的創(chuàng)意和才智在這方寸之間得到了盡情的發(fā)揮。而我們,也終于有幸體驗(yàn)到了買火車票之艱難。
程序員們智力的角逐
早期的驗(yàn)證碼可能只是一串簡單的ASCII字符,比如黑客們用
|-|3|_|_()
)-(3££0”
代表“HELLO”。這個(gè)后來發(fā)展成了火星文(leetspeak),o(╯□╰)o。
后來驗(yàn)證碼變成了圖片顯示字符串或者數(shù)字的形式,這也是我們最常見的驗(yàn)證碼。
早期的驗(yàn)證碼采用扭曲字符和梯度背景,然而好景不長,這樣的驗(yàn)證碼很快就被破解了:
由于圖片中字符與背景顏色之間差異較大,于是程序員們可以利用算法將圖片中的每一個(gè)像素點(diǎn)的值提取出來,然后判斷哪些是背景部分,哪些是字符部分。這樣將字符與背景分離。
接著,將分離出來的字符與“訓(xùn)練庫”——也就是存有這些字符的資料庫——里的字符進(jìn)行最終識別。而且由于英文只有26個(gè)字母,而阿拉伯?dāng)?shù)字只有10個(gè),這樣的驗(yàn)證碼識別難度也大大降低。
如果一切順利,根據(jù)上面的流程計(jì)算機(jī)能很容易地識別驗(yàn)證碼,并不需要人。這個(gè)驗(yàn)證碼,也就被破解了。
于是,喜聞樂見的,我們迎來了中文驗(yàn)證碼,龐大的中文字符庫保證了驗(yàn)證碼識別的難度(還混用了拼音):
而不會(huì)中文的歪果仁則開始逆向思考驗(yàn)證碼識別技術(shù)并進(jìn)行針對性的對抗。他們把各個(gè)字母粘連起來,這增加了算法上分隔每一個(gè)字符的難度。并且每次采用不同的字體也能增加模式匹配的難度。
而到了12306這個(gè)程度,考驗(yàn)的就不單純是圖案識別了,還有某些抽象思維的能力——比如我得知道“紫砂壺”到底是個(gè)啥,或者至少知道它長啥樣,我才能選到正確的驗(yàn)證碼圖案。這,也就是我們俗稱的“智商”……
然而,這樣的圖片驗(yàn)證碼也并不是一勞永逸的,有人展示了用網(wǎng)絡(luò)上的的識圖算法來機(jī)器識別12306圖片驗(yàn)證碼的一種思路。原理大概是這樣的:首先將驗(yàn)證碼的圖片分割成一個(gè)個(gè)單獨(dú)的圖片,然后將這些圖片上傳到機(jī)器識圖的網(wǎng)站上,網(wǎng)站會(huì)返回下面的答案。
圖片來源:bru
接著,只需要讓機(jī)器識別出驗(yàn)證碼的“問題”,也就是需要點(diǎn)擊的圖片是什么“東西”——在這個(gè)例子里是“紫砂壺”——最后讓計(jì)算機(jī)一一匹配就可以了。
并且他認(rèn)為12306的這一方法其實(shí)并不靠譜,存在三個(gè)問題:
1、圖片過于復(fù)雜、混淆過多、條件太詭異時(shí)會(huì)擋住大部分正常用戶
2、容易被枚舉,題庫太弱,不如字符組合可能性多
3、破解門檻不一定高于字符型Captcha
對于這個(gè)分析,我舉雙手雙腳贊成。我買不到票不是智商低,而是因?yàn)槲覀儗儆诒粨踝〉摹按蟛糠终S脩簟保?,一定是這樣的。
然后現(xiàn)在, 鐵路總局已經(jīng)表示,12306網(wǎng)站將調(diào)整圖形驗(yàn)證碼中圖片的清晰度和分辨率,而且可能剔除根據(jù)后臺統(tǒng)計(jì)出來大家反映最多的和錯(cuò)誤率較高的圖片驗(yàn)證碼……
更多的……驗(yàn)證碼?
當(dāng)然,還有一些更奇葩的驗(yàn)證碼。這些驗(yàn)證碼已經(jīng)變成了一種游戲,而不是單純的為了區(qū)分人類與計(jì)算機(jī)了:
輸入正確的驗(yàn)證碼就可以將圖片中的碼去掉……圖片來源:
我的數(shù)學(xué)是體育老師教的,你們呢?圖片來源:buzzed
會(huì)畫畫,走遍天下都不怕……然而手殘?jiān)趺崔k?圖片來源:twitter
面對越來越復(fù)雜的驗(yàn)證碼,算法可能捉襟見肘,然而還有一種萬能的破解方式,那就是:人工識別(Cheap or unwitting human labor)。即將驗(yàn)證碼分發(fā)給分布式的客戶端,客戶端人肉識別,返回結(jié)果。
還有人專門開發(fā)了客戶端軟件,讓沒事干的大學(xué)生人肉識別驗(yàn)證碼賺些小錢。如果在線人數(shù)足夠多,任務(wù)下達(dá)后幾乎都是秒回的,效率也是不錯(cuò)的。所以,識別好驗(yàn)證碼也是一項(xiàng)賺錢的技能(大霧)。
驗(yàn)證碼還能干啥?
驗(yàn)證碼也并非都是那么奇葩,它也可以用來做一些非常有意義的事情。
例如:卡耐基梅隆大學(xué)的路易斯·范安等人(對,就是前面提到的造出CAPTCHA這個(gè)短語的人啦)設(shè)計(jì)了一個(gè)名叫 reCAPTCHA 的系統(tǒng),來進(jìn)行古籍的數(shù)字化。
reCAPTCHA將 OCR(光學(xué)字符識別)軟件無法識別的文字掃描圖傳給世界各大網(wǎng)站,用以替換原來的驗(yàn)證碼圖片;那些網(wǎng)站的用戶在正確識別出這些文字之后,其答案便會(huì)被傳回卡耐基梅隆大學(xué)。
reCAPTCHA 在 2009 年被 Google 收購,而Google將這一技術(shù)發(fā)揚(yáng)光大,不僅用來識別古籍,還用來識別Google街景的街道地址。所以,有一段時(shí)間,你會(huì)發(fā)現(xiàn)google 的驗(yàn)證碼變成了某個(gè)門牌或者路標(biāo):
谷歌的驗(yàn)證碼有時(shí)候是街景拍到的門牌號。圖片來源:
驗(yàn)證碼的未來
“反人類”的驗(yàn)證碼,從始至終對抗的就不是人類,而是有著龐大計(jì)算能力卻在模式識別、抽象思維上很弱的計(jì)算機(jī)。
然而,隨著人工智能技術(shù)的進(jìn)步,計(jì)算機(jī)在模式識別上也越來越強(qiáng)大,驗(yàn)證碼也不得不走上越來越“扭曲”、“復(fù)雜“、“反人類”的不歸路。驗(yàn)證碼難度的提升,本質(zhì)上反應(yīng)了人工智能技術(shù)的進(jìn)步。
而目前,無論我們多么吐槽12306的驗(yàn)證碼,但至少,我們還能夠通過它證明我們是真人,而不是機(jī)器。這在某種程度上反應(yīng)了人類在智能上的優(yōu)越性,至少現(xiàn)在,我們還是比機(jī)器智能優(yōu)越。(或許有一部分小伙伴沒法證明?)
目前,Google的算法在扭曲文本類驗(yàn)證碼的識別率已經(jīng)達(dá)到了99%,也就是說,這類驗(yàn)證碼已經(jīng)不能作為區(qū)分人類和機(jī)器的指標(biāo)了,而總有一天,12306的驗(yàn)證碼也會(huì)被破解,到那時(shí),為了區(qū)分機(jī)器和人類,程序猿們又該設(shè)計(jì)出什么樣的驗(yàn)證碼呢?
驗(yàn)證碼的一生,可以說正是人工智能技術(shù)不斷進(jìn)步的一生。而正因?yàn)闄C(jī)器越來越聰明,所以人類將不得不面對更多的挑戰(zhàn)?;蛟S有一天,人類的造物終將超越人類自己,人工智能終將超越人類,到那一天,驗(yàn)證碼或許不復(fù)存在了,而人類又該何去何從呢?(編輯:Jerrusalem)
本文來自果殼網(wǎng),謝絕轉(zhuǎn)載
如有需要請聯(lián)系sns@guokr.com
1.《12306的驗(yàn)證碼怎么回事?終于找到答案了12306的驗(yàn)證碼背后,竟是人類同人工智能的一場艱難博弈》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《12306的驗(yàn)證碼怎么回事?終于找到答案了12306的驗(yàn)證碼背后,竟是人類同人工智能的一場艱難博弈》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請保留本站內(nèi)容來源地址,http://f99ss.com/gl/3012622.html