驗(yàn)證碼的前世今生(今生篇)
看完《驗(yàn)證碼的前世今生(前世篇)》也許第一感覺就是Winter is coming,互聯(lián)網(wǎng)的人機(jī)對抗到了最黑暗的時(shí)刻。柳暗花明又一村,最黑暗的時(shí)刻也是光明即將來臨的時(shí)刻——在傳統(tǒng)驗(yàn)證碼的末日新的反向圖靈測試機(jī)制浴火重生。
0×1 驗(yàn)證碼的劃代標(biāo)準(zhǔn)
在介紹新的反向圖靈測試機(jī)制前,首先我們對驗(yàn)證碼進(jìn)行劃代對比。通過驗(yàn)證碼的劃代對比我們能更清楚新型驗(yàn)證碼的特性。
驗(yàn)證碼劃代的標(biāo)準(zhǔn)是人機(jī)識別過程中基于對人類知識的應(yīng)用。
第一代:標(biāo)準(zhǔn)驗(yàn)證碼
這一代驗(yàn)證碼是即是我們常見的圖形驗(yàn)證碼、語音驗(yàn)證碼,基于機(jī)器難以處理復(fù)雜的計(jì)算機(jī)視覺及語音識別問題,而人類卻可以輕松的識別來區(qū)分人類及機(jī)器。這一代驗(yàn)證碼初步利用了人類知識容易解答,而計(jì)算機(jī)難以解答的機(jī)制進(jìn)行人機(jī)判斷。
第二代:創(chuàng)新驗(yàn)證碼
第二代驗(yàn)證碼是基于第一代驗(yàn)證碼的核心思想(通過人類知識可以解答,而計(jì)算機(jī)難以解答的問題進(jìn)行人機(jī)判斷)而產(chǎn)生的創(chuàng)新的交互優(yōu)化型驗(yàn)證碼。第二代驗(yàn)證碼基于第一代驗(yàn)證碼的核心原理--“人機(jī)之間知識的差異”,拓展出大量創(chuàng)新型驗(yàn)證碼。
如12306的驗(yàn)證碼也是對于傳統(tǒng)驗(yàn)證碼的一種創(chuàng)新:
第三代:無知識型驗(yàn)證碼
第三代驗(yàn)證碼最大的特點(diǎn)是不再基于知識進(jìn)行人機(jī)判斷,而是基于人類固有的生物特征以及操作的環(huán)境信息綜合決策,來判斷是人類還是機(jī)器。無知識型驗(yàn)證碼最大特點(diǎn)即無需人類思考,從而不會打斷用戶操作,進(jìn)而提供更好的用戶體驗(yàn)。
如Google的新版ReCaptcha:
阿里巴巴的滑動驗(yàn)證:
0×2 無知識型驗(yàn)證碼的原理
Step 1:在Web前端周期性的對Javascript代碼進(jìn)行混淆和并更新加密算法,將不可信的Web前端打造成可信的客戶端。在用戶進(jìn)行滑動操作時(shí),基于可信的客戶端采集用戶操作的行為信息以及環(huán)境信息,將其加密后提交給后端的風(fēng)控引擎;
Web前端因?yàn)榇a都是明文形式的腳本語言,服務(wù)端想要從客戶端獲取可信的數(shù)據(jù)一直面臨“源碼面前,了無秘密”的困擾。給一個(gè)前端工程師充足的時(shí)間,似乎Web前端真的是了無秘密,如下圖:
而隨著攻防對抗的持續(xù),安全的補(bǔ)鍋匠們總能找到猥瑣的方法來進(jìn)行防御。Web前端雖然沒有客戶端防止逆向和調(diào)試的安全強(qiáng)度,但是卻具備客戶端所不具有的hotpatch能力。
參考Map-Reduce的原理,單臺機(jī)器性能不行,把任務(wù)分派到多臺機(jī)器并發(fā)執(zhí)行。如果單份Javascript混淆的強(qiáng)度不可行,那么周期性的對Javascript代碼自動混淆。即便攻擊者能夠短時(shí)間的對Web前端進(jìn)行逆向,但逆向出來的功能短期之后就會在服務(wù)端失效,那么也能極大的消耗攻擊者的成本。
更可怕的是喪心病狂的Google基于Javascript完全的實(shí)現(xiàn)一套虛擬機(jī),核心代碼使用字節(jié)碼實(shí)現(xiàn)。周期性的對字節(jié)碼格式更新逆向的成本成幾何級數(shù)遞增。
如果代碼邏輯不更新,僅僅重復(fù)的混淆原有邏輯,那么仍然沒有意義。而對于一個(gè)Web的驗(yàn)證碼應(yīng)用,核心功能只有兩部分:
1、事件采集模塊,采集用戶的行為信息,此部分邏輯簡單,也無法自動化更新代碼邏輯;2、行為數(shù)據(jù)加密模塊,該部分的核心是加密算法,似乎代碼邏輯自動化更新變化有足夠空間。
為了保障前端的可信,需要對加密算法進(jìn)行自動化更新,必須要有一個(gè)巨大的對稱加密算法可選集合才能保證代碼的自動化更新。而所有對稱加密算法都基于Feistel分組密碼結(jié)構(gòu),基于Feistel分組密碼結(jié)構(gòu)可以派生出無數(shù)的對稱加密算法,從而可以派生出無數(shù)的的對稱加密算法。
如下圖,F(xiàn)estel分組結(jié)構(gòu)的可逆性不要求加密的核心函數(shù)F可逆,故可以自動的生成任意的F函數(shù)進(jìn)而派生出無數(shù)對稱加密算法。
基于自動化的代碼更新及混淆機(jī)制從而保障整個(gè)Web代碼對抗逆向分析和調(diào)試的強(qiáng)度,進(jìn)而將不可信的Web前端打造成可信的端。
Step 2:后續(xù)風(fēng)控引擎會基于用戶操作的行為特征、用戶環(huán)境信息、用戶對應(yīng)的設(shè)備指紋及其設(shè)備信譽(yù)綜合進(jìn)行決策,判斷是否需要對該次操作進(jìn)行二次判斷或者是直接阻斷。
0×3 無知識型驗(yàn)證碼的優(yōu)點(diǎn)
無知識型驗(yàn)證碼有三大核心優(yōu)點(diǎn),分別是用戶體驗(yàn),風(fēng)險(xiǎn)識別,風(fēng)險(xiǎn)攔截。
用戶體驗(yàn):
無知識型驗(yàn)證碼針對大多數(shù)的用戶能夠無需思考,直接通過。不存在業(yè)務(wù)和流程的打斷,體驗(yàn)流暢,對用戶體驗(yàn)的提升毋庸質(zhì)疑。
風(fēng)險(xiǎn)識別:
因?yàn)殡S著機(jī)器學(xué)習(xí)的發(fā)展讓機(jī)器掌握人類具有的知識也不再是難點(diǎn),無知識型驗(yàn)證碼不再基于知識來挑戰(zhàn)機(jī)器,而是基于人類的固有行為特征以及操作的環(huán)境信息綜合進(jìn)行風(fēng)控決策,攻擊者難以批量的模擬出可以欺騙風(fēng)控引擎的正常人類的的操作。
風(fēng)險(xiǎn)攔截:
普通的驗(yàn)證碼基于知識對機(jī)器發(fā)起挑戰(zhàn),無法做到對機(jī)器進(jìn)行阻斷。因?yàn)橹R的挑戰(zhàn)還需要兼顧人類的體驗(yàn),機(jī)器通過的概率只能做到無限的降低而無法消除。而無知識型驗(yàn)證碼基于后端的風(fēng)控決策,可以對不同風(fēng)險(xiǎn)的操作提出更高難度的驗(yàn)證碼乃至阻斷,有更大空間對風(fēng)險(xiǎn)進(jìn)行消除和攔截。
0×4 總結(jié)
目前阿里聚安全提供的滑動驗(yàn)證產(chǎn)品,目前對外提供免費(fèi)試用,歡迎申請免費(fèi)試用
最后,希望新型的驗(yàn)證碼能夠建設(shè)更簡單和安全的互聯(lián)網(wǎng): )