我們要談的這篇文章《zkSENSE: a privacy-preserving mechanism for bot detection in mobile devices》[PAZVNL]是由Brave Software公司研究員聯合馬德里卡洛斯三世大學和劍橋大學的研究人員合作的一個工作。這一章我們首先介紹下這項工作的動機:大家使用瀏覽器登入網站時可能會經常碰到一個叫驗證碼的東西,比如向你展示一行歪歪扭扭的字,然後要求你輸入正確字句。
這種測試專業名稱叫Completely automated public Turing tests to tell computers and humans apart (CAPTCHA),翻譯成中文是用於區分計算機和人類的完全自動化的公開圖靈測試。這種測試在2000年左右網際網路初期時開始在網站建設中得到廣泛應用,主要目的在於使用這種測試檢測區分機器人和人類,進而阻止攻擊者透過使用機器人對網站發起拒絕服務攻擊或傳送垃圾郵件惡意廣告等。
這篇文章重新設計CAPTCHA方案的動機略有不同,由於這個專案是由brave瀏覽器和basic attention token (BAT)專案的研究人員發起的,所以他們的應用場景和BAT的整個商業模式密切相關。BAT的基本宗旨是使用者應該為自己看廣告時付出的注意力得到補償,因此在使用者點選觀看廣告時將會相應地收到一定量的BAT。這種商業模式有個專業名稱叫pay to surf,在1999年已經有人提出並實現過,當時一家叫AllAdvantage的公司透過這種付費給使用者看廣告的商業模式在不到一年時間內迅速吸引到了將近1300萬使用者和兩億美元的風投。後來網路泡沫破滅,這家公司迅速倒閉。
這家公司最終失敗除了生不逢時,一個很重要的原因是攻擊者們使用機器人詐騙廣告點選費過於猖獗導致公司最終入不敷出。事實上,我們知道這種型別的攻擊即使在今天依然非常常見的,網路安全專業人士都知道攻擊者會透過購買低價手機來組成click farms以使用機器人軟體來騙取廣告費。所以這篇文章的背景就是,BAT意圖復興這種pay to surf商業模式,前提是他們必須避免重蹈AllAdvantage的覆轍,因而如何防止攻擊者使用機器人詐騙廣告費便成了重中之重了。
方案動機:為什麼需要隱私保護的reCAPTCHA
那你可能會問既然已經有了CAPTCHA這個工具,Brave再另起爐灶重新搞一個基於零知識證明的機器人檢測方案豈不是多此一舉。這可能得從現有的CAPTCHA方案存在的問題說起。目前廣泛使用的CAPTCHA方案主要存在兩個問題:首先是其檢測機器人的效果還是有一定侷限性的,尤其是目前基於深度學習的機器學習演算法[GTFZFXCW18]已經能保證使用極少量的訓練樣本高效攻擊多個廣為使用的CAPTCHA方案;另一個問題則是在移動裝置上CAPTCHA嚴重損害使用者體驗,這個相信大家在手機上碰到過驗證碼都有所體會。
針對這些問題,研究人員提出了一種新型的,對使用者透明的reCAPTCHA方案。其基本思想是透過收集移動裝置上使用者個人資料來區分訪問者是機器還是人類。具體來講,其基本的思路是人在移動裝置上輸入時需要按壓顯示屏,而觸屏時裝置的慣性測量單元,即加速器和陀螺儀會記錄手指在螢幕上按壓移動時所產生的感測器資料。相對而言,機器人則往往是透過軟體模擬來生成輸入的,由於沒有手指觸屏,所以感測器不會收集到相關資料,因此這個感測器輸出的差別可用於區分人類和機器人。
不過這種慣性測量單後設資料從個人隱私角度看是非常敏感的,研究表明透過分析這些資料可以推匯出裝置上的按鍵(keystroke)資訊,如使用者年齡,性別等,且這些資料可作為指紋資訊來指認使用者。透過收集使用者按鍵(keystroke)資訊甚至可以竊取使用者私鑰。BAT這個專案是以保護使用者隱私為立身之本的,如何能構造一個reCAPTCHA系統既能保證使用者隱私同時還能成功區分機器人和人類便成了這篇文章試圖解決的問題,這也是為何該系統最終使用了零知識證明的原因。
方案設計原則和安全模型
和傳統reCAPTCHA方案把移動端感測器資料傳輸給網際網路公司控制的伺服器,然後在伺服器端上由公司分析使用者資料不同的是,這篇文章方案的基本原則是使用者資料不離開使用者移動裝置,換句話說機器人檢測演算法將在使用者裝置上分析感測器所收集資料,並將最終分析結果傳送給伺服器端,從而保護使用者隱私。這裡順便提一下,BAT這種不讓使用者資料離開使用者裝置且在使用者端處理隱私資料的原則非常有意思,應該能成為下一代隱私保護系統的一個通用設計原則。按照BAT專案創始人Brendan Eich的話說,這相當於從do no evil變成了can’t do evil。如果資料不離開使用者裝置,那麼對使用者資料擁有主權的顯然是使用者,而非網際網路壟斷公司們了。
從上面的背景介紹中我們可以看出,這篇文章顯然假設攻擊者控制了移動裝置。既然機器人檢測演算法在使用者裝置端執行,如何保證演算法所讀取感測器資料沒被攻擊者篡改,如何保證即使在攻擊者有可能修改機器人檢測分析演算法程式碼的情況下所收集的分析結果依然正確便成了問題的關鍵了。
零知識證明正是用於保證分析演算法結果的可靠性的。事實上,零知識證明如果只考慮其方案設計可靠性(soundness)的話,其實可以被看作計算證明(signatures of computation)方案。換句話說其所證明的是被承諾(committed)的輸入和輸出之間滿足預定的函式關係。如果輸入輸出之間不滿足這個預定的函式關係,攻擊者是無法生成可以透過驗證的證明的。如果把機器人檢測演算法看作一個預定的函式的話,那麼顯然零知識證明的這個soundness性質就可以保證一旦攻擊者修改機器人檢測演算法程式碼,它將無法生成合格的計算證明。而零知識證明的零知識性質則可以保證這個過程除了告訴驗證者檢測結果外不洩漏其他任何個人隱私資訊,因此就能保證使用者隱私。
注意這個安全模型在實際中功能非常強大,這意味著系統在一個控制著大群移動裝置(如click farms)的攻擊者發起攻擊時仍能有效檢測機器人且保證使用者隱私。這些可能的攻擊包括:攻擊使用者作業系統,修改使用者api,提供偽造感測器輸出,重放合法使用者使用移動裝置時所收集感測器裝置資料等。
方案簡介
這個方案的基本思想可以解釋成:使用者在移動裝置的點選事件將引發一個人類(humanness)認證過程,humanness證明模組將讀取裝置感測器輸出。這個模組將使用一個經過訓練的模型區分是人類還是機器執行了該點選事件,並將檢測結果和對應零知識證明發給伺服器驗證。零知識證明主要用於證明如下兩個計算步驟的正確性:
1. 機器人檢測程式輸入的資料確實是實時從感測器採集的,且這些取樣演算法執行正常。
2. 機器人檢測程式計算過程準確無誤。
具體技術細節上,該方案使用的是以太坊的一個通用的零知識證明程式碼庫,具體使用的機器人識別演算法則是基於支援向量機(support vector machines)的。由於現有的零知識證明只能支援整數輸入的,所以在技術細節上該方案做了些微調最佳化。另外由於這篇文章中使用的零知識證明演算法初始化過程必須提前知道證明對應函式輸入向量大小的,他們預設向量維度大小上限為70。
展望
這篇文章實驗模擬比較了幾種手機上使用零知識證明的資源消耗,且對該方案在實際中應該如何使用提供了些建議。比如可以在移動應用程式碼中引入一個SDK,然後週期性讓使用者手機做humanness證明。很明顯,使用者手機如果高頻地做這種零知識證明給手機帶來的額外計算負擔會很大,因此相應地耗電量可能也很大。這篇文章提出使用一個專用協處理器(co-processor)來專門做零知識證明運算。如果以BAT為代表的這種網際網路商業模式能得到廣泛推廣(目前brave瀏覽器已經有1000萬使用者了),那麼這種專門用於最佳化零知識證明計算的硬體模組恐怕勢在必行。
另外,這篇文章使用零知識證明方案由於需要trusted setup,且初始化引數和其使用的支援向量機演算法相關,這在檢測機器人效果上有可能造成限制。相對而言,無需trusted setup的零知識證明方案,包括Suterusu專案目前研究實現的方案在支援通用的隱私保護機器學習方案具有一定的優勢,相信會在這種新網際網路經濟模式中大顯身手。
參考文獻
[PAZVNL] Papadopoulos, Panagiotis, Inigo Querejeta Azurmendi, Jiexin Zhang, Matteo Varvello, Antonio Nappa, and Benjamin Livshits. "ZKSENSE: a Privacy-Preserving Mechanism for Bot Detection in Mobile Devices." arXiv preprint arXiv:1911.07649 (2019).
[GTFZFXCW18] Ye, Guixin, Zhanyong Tang, Dingyi Fang, Zhanxing Zhu, Yansong Feng, Pengfei Xu, Xiaojiang Chen, and Zheng Wang. "Yet another text captcha solver: A generative adversarial network based approach." In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, pp. 332-348. ACM, 2018.
關於作者:
林煌,Suterusu專案 CTO
上海交通大學的密碼學博士和佛羅里達大學的隱私保護分散式系統方向博士。他曾在洛桑理工學院擔任博士後研究員,負責基因組資料保護和基於區塊鏈的資料貨幣化方面的應用密碼學研究。後任香港應用科技研究院副主任應用密碼工程師。在密碼學和資訊保安方面發表了二十幾篇論文,引用次數超過1000。