驗證碼的前世今生(今生篇)


驗證碼的前世今生(今生篇)

看完《驗證碼的前世今生(前世篇)》也許第一感覺就是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的驗證碼應用,核功能只有兩部分:

1、事件采集模塊,采集用戶的行為信息,此部分邏輯簡單,也無法自動化更新代碼邏輯;
2、行為數據加密模塊,該部分的核心是加密算法,似乎代碼邏輯自動化更新變化有足夠空間。

為了保障前端的可信,需要對加密算法進行自動化更新,必須要有一個巨大的對稱加密算法可選集合才能保證代碼的自動化更新。而所有對稱加密算法都基於Feistel分組密碼結構,基於Feistel分組密碼結構可以派生出無數的對稱加密算法,從而可以派生出無數的的對稱加密算法。

如下圖,Festel分組結構的可逆性不要求加密的核心函數F可逆,故可以自動的生成任意的F函數進而派生出無數對稱加密算法。

基於自動化的代碼更新及混淆機制從而保障整個Web代碼對抗逆向分析和調試的強度,進而將不可信的Web前端打造成可信的端。

Step 2:后續風控引擎會基於用戶操作的行為特征、用戶環境信息、用戶對應的設備指紋及其設備信譽綜合進行決策,判斷是否需要對該次操作進行二次判斷或者是直接阻斷。

0×3 無知識型驗證碼的優點

無知識型驗證碼有三大核心優點,分別是用戶體驗,風險識別,風險攔截。

用戶體驗:

無知識型驗證碼針對大多數的用戶能夠無需思考,直接通過。不存在業務和流程的打斷,體驗流暢,對用戶體驗的提升毋庸質疑。

風險識別:

因為隨着機器學習的發展讓機器掌握人類具有的知識也不再是難點,無知識型驗證碼不再基於知識來挑戰機器,而是基於人類的固有行為特征以及操作的環境信息綜合進行風控決策,攻擊者難以批量的模擬出可以欺騙風控引擎的正常人類的的操作。

風險攔截:

普通的驗證碼基於知識對機器發起挑戰,無法做到對機器進行阻斷。因為知識的挑戰還需要兼顧人類的體驗,機器通過的概率只能做到無限的降低而無法消除。而無知識型驗證碼基於后端的風控決策,可以對不同風險的操作提出更高難度的驗證碼乃至阻斷,有更大空間對風險進行消除和攔截。

0×4 總結

目前阿里聚安全提供的滑動驗證產品,目前對外提供免費試用,歡迎申請免費試用

最后,希望新型的驗證碼能夠建設更簡單和安全的互聯網: )

作者:南潯@阿里安全,更多安全類知識及資訊,請訪問阿里聚安全博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM