有乙個機會,朋友推薦乙個創業的哥們給我認識,方向就是驗證碼識別,當時以各種不明顯的陳述推諉掉,起初是職業道德的約束,到後來才發現,這其實是乙個無比困難的問題。可以利用現有的api很快地做好乙個可以執行的演示程式,但如果要改進,著實困難。
什麼是驗證碼
「驗證碼」( captcha )其實並不是各位網友總是在不同**上看到的難以辨認的字母組合的代名詞,而是「全自動區分計算機和人類的圖靈測試」的俗稱,顧名思義,它的作用是區分計算機和人類。
在 captcha 測試中,作為伺服器的計算機會自動生成乙個問題由使用者來解答。這個問題可以由計算機生成並評判,但是必須只有人類才能解答。由於計算機無法解答 captcha 的問題,所以回答出問題的使用者就可以被認為是人類。 captcha 是由計算機來考人類,而不是標準圖靈測試中那樣由人類來考計算機,因此人們有時稱 captcha 是一種反向圖靈測試。
驗證碼是否真的保護了計算機系統
一隊來自史丹福大學的研究人員 palo alto 指出很多驗證碼完全沒有發揮應有的作用。這些研究人員甚至設計了乙個通用程式,這個程式能夠以極高的成功率識別出許多**上的驗證碼,包括 visa 旗下** authorize.net 、暴雪官方**、 ebay 以及維基百科。
這種識別技術用到了機械人視覺領域的一種概念模型,它有助於機械人不受影象噪點的干擾正確識別物體的外形。斯坦福這個名為 decaptcha 的工具使用上述指導思想編寫的演算法能夠將扭曲變形且充滿噪點的分割成可以通過光學識別技術( ocr )辨別的字母和數字。
」大多數驗證碼投入使用之前都沒有經過必需的驗證,也缺少可靠性測試。「 來自史丹福大學安全實驗室的研究人員 elie bursztein 博士後說:」我希望我們的研究能夠讓人們更為慎重的對待驗證碼的設計和使用。「
decaptcha 能夠成功識別 66% visa 支付** authorize.net 上的驗證碼,並可以順利攻陷暴雪娛樂**上 70% 的驗證碼。而維基百科有四分之一的驗證碼可以辨識,在 cnet 以及 digg.com 上這個數字降低到了五分之一。來自斯坦福的這個研究團隊隨後指出,任何可辨識率超過 1% 的驗證碼系統都不應該被繼續使用下去。
隨後暴雪發表宣告說,他們明確的知道驗證碼技術並不具有足夠高的安全性。」我們僅在初級安全層使用驗證碼技術抵擋一些特定的攻擊,比如註冊環節。我們使用一些更為安全可靠的技術來保護我們的客戶與骨幹伺服器。「來自暴雪的 shon damron 這麼說。
如今的驗證碼
到目前為止,只有 google 的驗證碼完全阻擋了 decaptcha 的辨識, google 在 2009 年從卡耐基梅隆大學收購的 recaptcha 專案也 表現出了極其高的可靠性。目前 recaptcha 已經被廣泛地使用在了近 10 萬**上,這些**包括 twitter 、facebook、craigslist、ticketmaster (乙個**各類演唱會、體育比賽、歌劇以及藝術展覽門票的**)以及微軟( microsoft )。
bursztein 希望開發者能夠更加系統的設計和使用驗證碼技術,他舉了乙個例子: 20 世紀 80 年代人們通常埋頭設計的自己的電腦程式演算法,但隨著時間的推移,大家發現對等測試和專業安全性評估也是非常重要的。
展望驗證碼的未來
較早前有報道指出, google 正在測試一種新的驗證碼技術,這種驗證碼技術不像傳統驗證碼系統要求輸入文字,而是要求使用者將圖形旋轉到正確的方向:
另一種基於影象的驗證碼:
類似的驗證碼還有要求使用者輸入當前時間,所訪問的**網域名稱,自己所在的時區,甚至美國**姓名,人類第一顆登陸的地外星球等。這類驗證碼主要考慮到 通常自動電腦程式沒有足夠的邏輯思考能力,不能辨識並解答邏輯問題。拼圖驗證碼,找不同驗證碼(比如從幾張貓的中找出一張狗的)的驗證碼從本質 上來說也非常類似,但目前沒有大規模部署這類驗證碼的主要原因是沒有足夠的資源,難以抵擋窮舉攻擊(攻擊者多次重新整理驗證碼後可能出現相同的問題)。
要求使用者繪製圖形的驗證碼:
要求使用者完成複雜算術題的驗證碼——顯然過於複雜而顯得不友好:
但遺憾的是由於其同樣不具有規模性,仍受到窮舉攻擊的威脅。
這些未來的驗證碼技術同時還應該考慮到輔助功能。假如使用者有視力障礙,他應該可以選擇通過聆聽驗證碼音訊的方式完成驗證,這也是基於字元的驗證碼技術遲遲未能被取代的主要原因之一。
總結
驗證碼技術是一種計算機技術發展下的矛盾產物,人類渴望計算機能夠通過自動化的過程完成更多的任務,卻同樣要防止計算機被利用在破壞與惡意的用途當中。隨著人工智慧領域的研究成果越來越先進,計算機將變得越來越通情達理(想想 siri ,想想 ibm 最新的超級智慧型計算機watson)。
圖靈當年設計圖靈測試時,旨在推動人工智慧的發展,並從哲學與電腦科學的角度上論證製造類人類機械人的可行性,但他恐怕永遠也想象不到有一天,人類將如此迫切的需要一種技術來將自己與計算機系統嚴格地區分開來。
如果有一天,計算機能夠通過驗證碼驗證,我們又該如何區分人類和計算機呢?
後記:
我來回答:所有的驗證碼設計都是為了防止計算機登入,那麼人類設計的驗證碼始終以人的優勢來衡量,這個區別在人主導的世界裡必定是人為勝者。
E learning的現狀與未來
e learning e learning pc上網,通過網路進行學習的一種全新的學習方式。當然,這種學習方式離不開由多 網路學習資源 網上學習社群及網路技術平台構成的全新的網路學習環境。在網路學習環境中,匯集了大量資料 檔案資料 程式 教學軟體 興趣討論組 新聞組等學習資源,形成了乙個高度綜合整合...
實體關係抽取的現狀與未來
來到 2019 年的今天,深度學習的諸多侷限性也慢慢得到廣泛認知。對於自然語言處理而言,要做到精細深度的語義理解,單純依靠資料標註與算力投入無法解決本質問題。如果沒有先驗知識的支援,中國的桌球誰都打不過 與 中國的足球誰都打不過 在計算機看來語義上並沒有巨大差異,而實際上兩句中的 打不過 意思正好相...
Unix現狀與未來 CSDN對我的採訪
用picocontainer 和nanning 實現事務管理 是constructor injector 的ioc 容器。nanning 是dynamic aop 的一種實現。專案中我用 pico 作為我的微核心,在某些地方需要用到 aop,最典型的是 事務管理 transaction manage...