看完《驗證碼的前世此生(前世篇)》也許第一感受就是Winter is coming,互聯網的人機對抗到了最黑暗的時刻。柳暗花明又一村,最黑暗的時刻也是光明即未來臨的時刻——在傳統驗證碼的末日新的反向圖靈測試機制浴火重生。前端
##0×1 驗證碼的劃代標準算法
在介紹新的反向圖靈測試機制前,首先咱們對驗證碼進行劃代對比。經過驗證碼的劃代對比咱們能更清楚新型驗證碼的特性。後端
驗證碼劃代的標準是人機識別過程當中基於對人類知識的應用。安全
###第一代:標準驗證碼前端工程師
這一代驗證碼是便是咱們常見的圖形驗證碼、語音驗證碼,基於機器難以處理複雜的計算機視覺及語音識別問題,而人類卻能夠輕鬆的識別來區分人類及機器。這一代驗證碼初步利用了人類知識容易解答,而計算機難以解答的機制進行人機判斷。併發
###第二代:創新驗證碼機器學習
第二代驗證碼是基於第一代驗證碼的核心思想(經過人類知識能夠解答,而計算機難以解答的問題進行人機判斷)而產生的創新的交互優化型驗證碼。第二代驗證碼基於第一代驗證碼的核心原理--「人機之間知識的差別」,拓展出大量創新型驗證碼。函數
如12306的驗證碼也是對於傳統驗證碼的一種創新:性能
###第三代:無知識型驗證碼學習
第三代驗證碼最大的特色是再也不基於知識進行人機判斷,而是基於人類固有的生物特徵以及操做的環境信息綜合決策,來判斷是人類仍是機器。無知識型驗證碼最大特色即無需人類思考,從而不會打斷用戶操做,進而提供更好的用戶體驗。
如Google的新版ReCaptcha:
阿里巴巴的滑動驗證:
##0×2 無知識型驗證碼的原理
**Step 1:**在Web前端週期性的對Javascript代碼進行混淆和並更新加密算法,將不可信的Web前端打形成可信的客戶端。在用戶進行滑動操做時,基於可信的客戶端採集用戶操做的行爲信息以及環境信息,將其加密後提交給後端的風控引擎;
Web前端由於代碼都是明文形式的腳本語言,服務端想要從客戶端獲取可信的數據一直面臨「源碼面前,了無祕密」的困擾。給一個前端工程師充足的時間,彷佛Web前端真的是了無祕密,以下圖:
而隨着攻防對抗的持續,安全的補鍋匠們總能找到猥瑣的方法來進行防護。Web前端雖然沒有客戶端防止逆向和調試的安全強度,可是卻具有客戶端所不具備的hotpatch能力。
參考Map-Reduce的原理,單臺機器性能不行,把任務分派到多臺機器併發執行。若是單份Javascript混淆的強度不可行,那麼週期性的對Javascript代碼自動混淆。即使攻擊者可以短期的對Web前端進行逆向,但逆向出來的功能短時間以後就會在服務端失效,那麼也能極大的消耗攻擊者的成本。
更可怕的是喪心病狂的Google基於Javascript徹底的實現一套虛擬機,核心代碼使用字節碼實現。週期性的對字節碼格式更新逆向的成本成幾何級數遞增。
若是代碼邏輯不更新,僅僅重複的混淆原有邏輯,那麼仍然沒有意義。而對於一個Web的驗證碼應用,核心功能只有兩部分:
一、事件採集模塊,採集用戶的行爲信息,此部分邏輯簡單,也沒法自動化更新代碼邏輯; 二、行爲數據加密模塊,該部分的核心是加密算法,彷佛代碼邏輯自動化更新變化有足夠空間。
爲了保障前端的可信,須要對加密算法進行自動化更新,必需要有一個巨大的對稱加密算法可選集合才能保證代碼的自動化更新。而全部對稱加密算法都基於Feistel分組密碼結構,基於Feistel分組密碼結構能夠派生出無數的對稱加密算法,從而能夠派生出無數的的對稱加密算法。
以下圖,Festel分組結構的可逆性不要求加密的核心函數F可逆,故能夠自動的生成任意的F函數進而派生出無數對稱加密算法。
基於自動化的代碼更新及混淆機制從而保障整個Web代碼對抗逆向分析和調試的強度,進而將不可信的Web前端打形成可信的端。
Step 2:後續風控引擎會基於用戶操做的行爲特徵、用戶環境信息、用戶對應的設備指紋及其設備信譽綜合進行決策,判斷是否須要對該次操做進行二次判斷或者是直接阻斷。
##0×3 無知識型驗證碼的優勢
無知識型驗證碼有三大核心優勢,分別是用戶體驗,風險識別,風險攔截。
用戶體驗:
無知識型驗證碼針對大多數的用戶可以無需思考,直接經過。不存在業務和流程的打斷,體驗流暢,對用戶體驗的提高毋庸質疑。
風險識別:
由於隨着機器學習的發展讓機器掌握人類具備的知識也再也不是難點,無知識型驗證碼再也不基於知識來挑戰機器,而是基於人類的固有行爲特徵以及操做的環境信息綜合進行風控決策,攻擊者難以批量的模擬出能夠欺騙風控引擎的正常人類的的操做。
風險攔截:
普通的驗證碼基於知識對機器發起挑戰,沒法作到對機器進行阻斷。由於知識的挑戰還須要兼顧人類的體驗,機器經過的機率只能作到無限的下降而沒法消除。而無知識型驗證碼基於後端的風控決策,能夠對不一樣風險的操做提出更高難度的驗證碼乃至阻斷,有更大空間對風險進行消除和攔截。
##0×4 總結
目前阿里聚安全提供的滑動驗證產品,目前對外提供免費試用,歡迎申請免費試用
最後,但願新型的驗證碼可以建設更簡單和安全的互聯網: )
####做者:南潯@阿里安全,更多安全類知識及資訊,請訪問**阿里聚安全博客**