網路驗證碼的進化:從簡單圖文到無感驗證
2018年全國碩士研究生招生考試預報名的第一天,成都大學的一名大四女生,在網上報名時,竟出現了“別考”字樣的驗證碼,同時在驗證碼上邊顯示一行紅字:您輸入的使用者名稱或密碼有誤。專門負責全國研究生報名的“中國研究生招生資訊網”相關負責人回應說,驗證碼出現“別考”字樣純屬巧合。
據瞭解,研招網報名系統的驗證碼由漢字、字母+數字、數字計算三個類別組成,考生在輸入驗證碼時這三個類別都可能會遇到。“別考”字樣的驗證碼雖然只是隨機出現,卻讓人聯想到春運期間12306那些變態的驗證碼,似乎與“證明你媽是你媽”一樣無厘頭,驗證碼就是為了為難人類而存在的嗎?
12306網站驗證碼介面
驗證碼誕生於20年前
驗證碼的全名是“全自動區分計算機和人類的圖靈測試”,由卡內基梅隆大學的路易斯.馮.安於1997年提出,其初衷識別真人還是編寫的惡意程式。驗證碼主要體現方式:計算機會自動生成一個問題由使用者來解答,這個問題可以由計算機生成並評判,但必須只有人類才能解答,回答出問題的操作者就可以被認為是人類。
驗證碼之父:路易斯.馮.安
因此,驗證碼就是利用“人類可以用肉眼輕易識別圖片裡的文字資訊,而機器不能”的原理來抵禦惡意登入,透過識別、輸入這些互動,區分出機器人和真正的人類,防止惡意攻擊或者刷號情況的產生,是一種利用意識區分使用者是計算機還是人的公共全自動程式,在註冊、登入、網購、交易等各類場景中都發揮著巨大作用,並且在不斷進化中成為網路中始終不可或缺的技術。另外,英國醫學專家還發現驗證碼或可用於儘早發現痴呆症風險。
驗證碼的進化:從簡單圖文到無感驗證
早期的驗證碼就是網站提出一些問題,隨著安全防護與破解入侵兩方面的抗衡日益升級,驗證碼的難度在增加,形式也在多樣化。從簡單的字母數字、算術題,到扭曲的字元、模糊的圖片,這些被歸類為知識性驗證碼。
各式各樣的驗證碼
雖然驗證碼對網站平臺有很大的幫助作用,但並不是每個人都不喜歡驗證碼。路易斯.馮.安在2009年的報告中顯示:每天每個美國人要花費1.9秒的時間用來解決驗證碼難題。以美國當年人口3.09億計算,相當於每年要花去他們6795天的時間。
在國內驗證碼一直也是被吐槽的物件。不僅是全國碩士研究生招生考試預報名這樣令人啼笑皆非的驗證碼,還有被廣大網友吐槽的12306“變態”驗證碼。
Google的 reCAPTCHA
為了節省網友時間,提升操作體驗, Google、頂象技術等新一代的驗證碼已經開始向無知識型進化,例如Google的reCAPTCHA、頂象技術的無感驗證等。具體在體現就是需要點選或拖動滑條,甚至不需要任何操作,就能夠完成網路登入身份驗證。這種全新的驗證方式良好解決網站安全和使用者體驗兩端的矛盾。
基於人工智慧的頂象無感驗證有這四大特點
作為新一代的驗證碼Google reCAPTCHA、頂象無感驗證都是基於人工智慧,從傳統的識別驗證方式升級到了基於人的行為來進行判斷,透過收集使用者的行為以及環境資訊,結合模型和風控分析來區分人類還是機器。
頂象技術的“無感驗證”
以頂象技術的“無感驗證”為例,主要有以下四大特點:
體驗好:滑動驗證相對於傳統的驗證碼在體驗上已有了很大的改善,但是如果每次操作還是需要滑動依舊繁瑣。頂象無感驗證在驗證碼彈出前會先收集下當前使用者的環境資訊,結合後臺的風控和大資料,判斷當前操作環境和行為是否正常,如果正常行為就可以直接放行,也就無需滑動。
破解難:資料採集安全是驗證流程的一個安全前提,直白的說,就是傳到後臺的滑動行為資料必須是使用者滑動產生的。一般的做法是對採集的資料進行加密,對採集資料的javascript進行混淆。這種做法可以說是javascript的通用方案,有一定的安全性,但對“有心人”還不夠。頂象無感驗證的做法是短週期自動變更加密演算法+ H5安全防護。其基於AST,採用隨機拆分,動態加解密混淆演算法對JS程式碼進行混淆壓縮,並且定時自動化更新混淆演算法。相對於開源的混淆工具,會使嘗試逆向混淆後的javascript成本極高。再加上短週期自動變更資料加密演算法,即使當前的js指令碼被破解,但是由於快速的自動迭代,這個指令碼很快就會失效,攻擊者不得不再面對下一版完全不同的加密指令碼,從而大大增加破解成本。
識別準:行為驗證的核心是透過使用者滑動行為資料識別本次請求是來自於人還是機器。依託於頂象在現實業務攻防中積累下來的資料,經過特徵工程和深度學習演算法,可以得到大量的特徵。頂象無感驗證利用多種無監督學習模型發現可疑和異常行為並標記為黑樣本,其餘為白樣本。接下來,選取行為特徵和黑白樣本訓練有監督學習模型,用於線上的實時流量資料的識別。基於每日的增量資料,對無監督學習和有監督學習模型快速迭代訓練,可有效與快速變異的惡意行為進行強對抗。
有大腦:隨著人工智慧的發展,攻擊者利用人工智慧技術和打碼平臺可以很容易的透過傳統驗證碼。一旦攻破,傳統驗證碼就對攻擊無能為力了。
隨著人工智慧的發展,未來的驗證碼的人機對抗,一定是一個多維度、多層次、快速迭代的戰場。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69975717/viewspace-2706775/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python驗證碼識別:利用pytesser識別簡單圖形驗證碼Python
- 簡單的數字驗證碼破解
- 一個簡單的驗證碼工具
- 無密碼身份驗證:安全、簡單且部署快速密碼
- 簡單幾步實現滑動驗證碼(後端驗證)後端
- 利用tesseract解析簡單數字驗證碼圖片
- TALK的網路驗證
- 超簡單的PHP驗證碼識別PHP
- jquery驗證簡單示例jQuery
- 智慧無感驗證案例:神州優車
- 【教程】無法驗證app需要網際網路連線以驗證是否信任開發者APP
- 驗證碼原理及驗證
- jQuery表單驗證簡單程式碼例項jQuery
- jquery登陸表單簡單驗證程式碼jQuery
- 網路模型的交叉驗證模型
- 表單驗證教程簡介
- 網路驗證之授權碼使用
- 圖片驗證碼 CaptchaAPT
- 圖片驗證碼介面
- C# 滑動驗證碼|拼圖驗證|SlideCaptchaC#IDEAPT
- Python實現簡單驗證碼的轉文字Python
- Javascript使用正則驗證身份證號(簡單)JavaScript
- 驗證碼---js重新整理驗證碼JS
- 一個oracle bug的簡單驗證Oracle
- Promise 與騰訊雲無感驗證結合使用Promise
- JavaScript驗證碼生成和驗證效果JavaScript
- 簡單API介面簽名驗證API
- 計算機網路驗證性實驗計算機網路
- Flutter 生成圖形驗證碼Flutter
- golang 生成圖片驗證碼Golang
- C#圖片驗證碼C#
- Django之圖形驗證碼Django
- javascript實現的簡單驗證碼效果程式碼例項JavaScript
- 一種簡單好用的Vue表單驗證Vue
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- 一次簡單的驗證碼識別以及思考
- 無密碼驗證:客戶端密碼客戶端
- 利用js編寫一個簡單的html表單驗證,驗證通過時提交資料(附原始碼)JSHTML原始碼