脆弱的推薦系統: 通過偽造共同訪問對推薦系統進行攻擊

原文請參見 [論文學習] 脆弱的推薦系統: 通過偽造共同訪問對推薦系統進行攻擊

這次介紹的論文是非魚子翻譯並評註的關於針對用戶創造內容系統UGC排名的攻擊方法。這些針對推薦系統和產品排名系統等UGC類型排名已經給黑產領域帶來很多不當利益,比如刷榜比如攻擊電影票房排名或者「你也喜歡的其他電影」等推薦,安全研究員和系統設計師必須了解這些攻擊方法並在實際工作里偵測和防護。

推薦系統常見的演算法基於商品共現,即用戶買了商品1也會買商品2,那麼歷史上兩個連續被購買(訪問)的商品,在將來也有很大概率共同訪問。推薦系統通過共現的關聯度描述商品對於用戶偏好的表現從而達成推薦的目的。顯而易見,共現並不代表偏好一致,如果能有巧妙的通過攻擊共現訪問導致共現與用戶偏好之間有偏差,攻擊者即可達成攻擊的目的。

在論文里作者回顧了一般共現訪問的計算方法,並基於攻擊者對於推薦系統參數設置(背景知識)高度中度和低度了解的不同,提出了不同的攻擊方法,並定義攻擊目標為儘可能的減少推薦的命中率,量化表示為未來用戶對商品增加或減少用戶印象(User Impression, UI)數量。

根據攻擊的效果不同,作者提出了兩個攻擊方向,Promotion attack和Demotion attack:Promotion attack即惡意推薦某個指定商品,比如把某水軍付費的電影推上豆瓣「你也喜歡的電影」推薦,簡稱刷好評;Demotion attack即惡意降低某個指定商品的推薦度,簡稱刷差評。

Promotion attack 刷好評的攻擊基本方法是通過偽造多個用戶/IP,把錨定商品和目標商品的關聯通過多個偽造用戶的購買行為增強。針對攻擊者對推薦系統背景知識的高低,作者提出了多個優化方法,主要目標是獲得可以成功入手攻擊的錨定商品列表:

  1. 對於了解共同訪問圖G和popularity閾值τ的高背景知識的攻擊者,可以利用線性優化的演算法取得一組可以成功入手攻擊的錨定商品列表使勁刷;
  2. 對於可以獲得每個item的popularity值和對應的推薦列表的中度背景知識的攻擊者,可以通過這些值推算或估計共同訪問圖G和popularity閾值τ,把問題轉化成高背景知識。
  3. 對於只能獲得推薦列表的低背景知識的攻擊者,問題困難的多,需要從已有推薦列表推算每個item的popularity值和對應的推薦列表然後轉化為高背景知識。

對於以上三種情況,隨著推算數據缺失程度不同,其攻擊效果也不同,作者原文做了模擬和人工實驗,這部分可以學習一下其實驗設計和評估方法。

簡單總結來說,對於推薦系統的攻擊核心在於通過演算法取得可以影響目標商品排名的一組強關聯的錨定商品列表,並針對這組商品和目標商品的關聯進行攻擊。

觀眾朋友們可能會說,你這是在教黑產把他們練的更難防護啊。事實上黑產自己已經學的很好了,只是你們不知道而已,還請不要蒙蔽自己雙眼就假裝壞事不會發生。這篇文章點明了攻擊防護的關鍵點在於保護可以影響目標商品排名的一組強關聯的錨定商品列表,這些列表獲取難度和泄露的背景知識程度相關,在系統設計的時候,我們可以通過良好的系統設計降低泄漏背景知識的概率。

題圖來自於 Free Image on Pixabay - Sweet, Cat, Babies, Kittens 遵循非商業使用原則。


大家好,這是「安全數據與機器學習」專欄的第五篇文章。這個專欄配合我們的小密圈/知識星球群組「安全數據與機器學習」和我們的blog專欄 Kakapo - 一個機器學習社區 ,給各位安全屆的朋友提高鍛煉數據建模和機器學習的知識。我們會不定期尋找一些優秀的文章,在這裡寫上摘要和導讀,引導大家前去深入學習。如果想參與「安全數據與機器學習」的討論,請下載「知識星球」app並搜索「安全數據與機器學習「或者點擊 t.xiaomiquan.com/IIqZV7 接受邀請。

推薦閱讀:

分類問題中如何解決正負樣本不平衡問題?
關於LDA, pLSA, SVD, Word2Vec的一些看法
推薦系統,其實是不是早就應用在搜索引擎和廣告系統上了?
推薦系統有哪些比較好的論文?
開源代碼上新!6 份最新「Paper + Code」 | PaperDaily #17

TAG:推荐系统 | 机器学习 | 信息安全 |