深度探讨验证码发展史,账户中心安全科普文
12306圖片驗(yàn)證碼吐槽風(fēng)波將驗(yàn)證碼推到風(fēng)口浪尖,各種吐槽及惡搞接連而至,讓之前一直無處不在但是又默默無聞的驗(yàn)證碼風(fēng)光了一回,面對普通用戶的抱怨和謾罵,作為產(chǎn)品人員的我們,是不是應(yīng)該多一些理性思考呢。
本文將三個(gè)方面來與大家分享驗(yàn)證碼及周邊知識,均是本人五年賬戶中心工作(三年技術(shù)、兩年產(chǎn)品經(jīng)驗(yàn))的心得總結(jié)得出,希望對產(chǎn)品狗及運(yùn)營同行有一些幫助和啟發(fā)。
- 驗(yàn)證碼功能簡述
- 驗(yàn)證碼發(fā)展史
- 對運(yùn)營的影響
驗(yàn)證碼功能簡述
(常見驗(yàn)證碼一覽)
全自動(dòng)區(qū)分計(jì)算機(jī)和人類的公開圖靈測試(英語:Completely Automated Public Turing test to tell Computers andHumans Apart,簡稱CAPTCHA),俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。
沒聽懂維基百科的解釋?更通俗一點(diǎn)的說法,驗(yàn)證碼是防止計(jì)算機(jī)程序通過大批量惡意請求來對網(wǎng)站進(jìn)行資源消耗。
為什么這么說呢,我們縱觀互聯(lián)網(wǎng)發(fā)展史,驗(yàn)證碼誕生初期,正是web 2.0方興未艾之時(shí)。web 2.0打開了用戶入口,但是卻也給機(jī)器程序開了一個(gè)通道。惡意程序批量請求注冊垃圾帳號、暴力登錄進(jìn)行密碼破解、大批量論壇廣告發(fā)帖、搶券(12306的購票)、刷投票排名……如果沒有驗(yàn)證碼,這些都是可以很簡單的做到。有人要說通過IP限制等手段,相信我,這一塊除了驗(yàn)證碼是最好的防御手段,目前來說沒有其他更恰當(dāng)?shù)姆烙绞健?/p>
但是隨著互聯(lián)網(wǎng)技術(shù)發(fā)展,尤其現(xiàn)在大家開口談及的云計(jì)算、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、OCR識別等技術(shù),為了提高驗(yàn)證碼對機(jī)器人的防御難度,驗(yàn)證碼是做的越來越復(fù)雜,而人也相應(yīng)的更加難識別了。接下來我們先從驗(yàn)證碼發(fā)展史談起,看看它們都經(jīng)歷了什么。
驗(yàn)證碼發(fā)展史
驗(yàn)證碼的發(fā)展,是隨著互聯(lián)網(wǎng)技術(shù)相應(yīng)的提升的,尤其是近些年來,包括Google在內(nèi)的一些互聯(lián)網(wǎng)公司對此方面所做的努力。
根據(jù)維基百科的定義,“在CAPTCHA測試中,作為服務(wù)器的計(jì)算機(jī)會(huì)自動(dòng)生成一個(gè)問題由用戶來解答。”,這是早期的一問一答的模式,我們可以成為問答驗(yàn)證。另一類也是最近興起的方式,根據(jù)用戶的頁面行為來進(jìn)行判斷,我們尚將之稱為為行為式(human behavior analysis?)。
問答驗(yàn)證
驗(yàn)證碼發(fā)展初期,基本上是很工整的字符,因?yàn)槟莻€(gè)時(shí)段沒有OCR,沒有機(jī)器學(xué)習(xí),沒有神經(jīng)網(wǎng)絡(luò),聽起來是一個(gè)很淳樸的年代有沒有。驗(yàn)證碼也不需要設(shè)計(jì)多復(fù)雜。但是隨著Google及一些技術(shù)大牛開源OCR識別庫(https://github.com/tesseract-ocr),驗(yàn)證碼識別門檻一下子就變低了,調(diào)用這些公開的庫,一些基本的驗(yàn)證碼識別率能達(dá)到85%以上,這些識別工作不超過10行代碼。
(從圖中圖片命名可以看出,驗(yàn)證碼被識別的準(zhǔn)確率很高,突破95%以上)
隨后,驗(yàn)證碼為了提高破解難度,則添加的一些背景干擾圖,讓字符變得扭曲。但是我們可以從上圖看出,識別這種背景雜亂-顏色干擾-字符扭曲的驗(yàn)證碼,精準(zhǔn)識別率也是很高的。
(12306的驗(yàn)證碼)
(某網(wǎng)站的登錄界面的文字-圖片驗(yàn)證碼)
好了,我們來看看12306的驗(yàn)證碼是什么道理?從本質(zhì)上說,這種驗(yàn)證碼和前面的扭曲驗(yàn)證碼道理是一樣的,也是問題-答案式的樣式。我們先看看破解難度,首先是要識別中文字符,其次是識別圖片。中文如果不加干擾的話,是很容易識別的,這種加了干擾后,對人和機(jī)器都有一定的難度。圖片識別目前沒有比較成熟和像OCR開源一樣的公用接口,但是很不幸的是,這種12306式的圖片可以用哈希算法進(jìn)行匹配,當(dāng)然這有一定的難度也費(fèi)時(shí)費(fèi)力。不過圖片驗(yàn)證以后肯定不是主流,生命周期也會(huì)很短,因?yàn)椤璆oogle正在籌劃它的圖像識別接口,Google Cloud Vision API……這項(xiàng)技術(shù)源于Google圖片的大數(shù)據(jù)標(biāo)簽,建立的深度神經(jīng)系統(tǒng)學(xué)習(xí)網(wǎng)絡(luò)。為什么Google以前也用過12306一樣的圖片驗(yàn)證碼現(xiàn)在卻把這項(xiàng)技術(shù)公開,因?yàn)樗鼈冇辛烁行У尿?yàn)證碼,我們后面再講。
行為驗(yàn)證
Google在今年年初提出human behavior analysis的概念,率先去掉了傳統(tǒng)的驗(yàn)證碼,用戶只需要點(diǎn)擊一下,就可以進(jìn)行人機(jī)判別,如果被認(rèn)為是機(jī)器人,那么會(huì)進(jìn)行另一套復(fù)雜的驗(yàn)證系統(tǒng)。是不是很酷炫……體驗(yàn)地址:https://bitbucket.org/account/signup/?目前因?yàn)楸娝苤脑?#xff0c;國內(nèi)并不能使用Google接口。
令人驚奇的是,國內(nèi)居然也有做行為驗(yàn)證的,最早我自己在一論壇發(fā)帖時(shí)用到過,當(dāng)時(shí)沒怎么在意,后來居然發(fā)現(xiàn)一好友的公司也用上了。后來就這個(gè)事情交流過,好友表示之前每次驗(yàn)證碼都被破解遭遇暴力注冊,對運(yùn)營人員造成很大干擾,技術(shù)只能頻繁換驗(yàn)證碼,越換越復(fù)雜,但對惡意程序并沒有什么用……后來直接調(diào)用了這個(gè)號稱行為驗(yàn)證的接口,部署后確實(shí)對破解者有很明顯的阻礙作用,比字符驗(yàn)證碼靠譜很多,而且用戶體驗(yàn)也確實(shí)不錯(cuò)。我自己也去研究了下,目前使用這個(gè)驗(yàn)證碼網(wǎng)站也挺多的,我現(xiàn)在先部署在公司內(nèi)一些小模塊試試穩(wěn)定性和安全性,等有自己的結(jié)果再和大家分享。可以去新浪博客評論區(qū)體驗(yàn)一下:http://blog.sina.com.cn/s/blog_71ad0be10102wa7y.html?tj=1
運(yùn)營和產(chǎn)品能做什么?
?12306被噴其實(shí)已經(jīng)說明了驗(yàn)證碼和網(wǎng)站的內(nèi)在關(guān)系,用老掉牙的話講,驗(yàn)證碼是一把雙刃劍,它既保障安全,但是又對用戶有阻礙,有些用戶看到驗(yàn)證碼頭都大了,直接關(guān)閉頁面走人。但是如果不加驗(yàn)證碼,被競爭對手和搗蛋分子,分分鐘刷成狗,使得成個(gè)運(yùn)營體系耗費(fèi)精力去維護(hù)、刪除這些沒意義的垃圾數(shù)據(jù),嚴(yán)重的會(huì)導(dǎo)致運(yùn)營體系崩壞、密碼被盜,甚至原本給正常用戶的獎(jiǎng)勵(lì)也被這些垃圾用戶撈走。那么,運(yùn)營或者產(chǎn)品人員該怎么辦呢?
第一,同程序員溝通,定制合適的安全防御策略。防御策略首先就是驗(yàn)證碼模塊,建議選取合適的驗(yàn)證碼(勇于嘗鮮的可以試試上面說的那個(gè)極驗(yàn)驗(yàn)證),既能保障安全性,也不對用戶體驗(yàn)造成損害,畢竟市場同志在外面辛苦做推廣,結(jié)果用戶來了卻因?yàn)轵?yàn)證碼流失,這也挺冤的。除了驗(yàn)證碼外,還可以做一些輔助性的工作,比如對IP進(jìn)行閾值限制(這個(gè)要謹(jǐn)慎,如果用戶群體大,很容易造成大規(guī)模的誤封)、
第二,設(shè)計(jì)合理的運(yùn)營獎(jiǎng)勵(lì)體系。這一點(diǎn)尤為重要,特別是涉及積分、送券、返現(xiàn)的網(wǎng)站,如果沒有合理的運(yùn)營體系,會(huì)對驗(yàn)證碼的要求十分高。不過運(yùn)營設(shè)計(jì)的沒有吸引力,很難吸引新用戶來,這也是個(gè)矛盾的地方。
今天先寫到這里吧。
總結(jié)
以上是生活随笔為你收集整理的深度探讨验证码发展史,账户中心安全科普文的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国内外交互体验很好的十款验证码
- 下一篇: 「会会」产品体验报告