0
機(jī)器學(xué)習(xí)中的中毒攻擊由來已久,最早可以追溯到 2004 年,中毒攻擊是指將錯(cuò)誤的數(shù)據(jù)注入模型的訓(xùn)練池中,從而讓模型學(xué)習(xí)一些不應(yīng)該學(xué)習(xí)的東西時(shí),從而發(fā)生中毒攻擊。本文作者通過對中毒攻擊類型、攻擊者能力、防御數(shù)據(jù)中毒方法等進(jìn)行了總結(jié)分析,對相關(guān)領(lǐng)域的文獻(xiàn)進(jìn)行了介紹,并在文章最后得出了一個(gè)令人不安的結(jié)論:如果你試圖通過做好防御工作來讓自己免受逃避攻擊,實(shí)際上你可能是在向中毒攻擊敞開你的大門。
圖片來源:http://sceneofthetitans.co.uk/img/1822-1.jpg?source=post_page
我對機(jī)器學(xué)習(xí)非常感興趣,這是一項(xiàng)真正將科幻變成現(xiàn)實(shí)的迷人技術(shù)。然而,正如我之前所寫的一篇文章(文章查看鏈接:https://medium.com/@iljamoisejevs/what-everyone-forgets-about-machine-learning-974752543849?source=post_page)中所提到的,機(jī)器學(xué)習(xí)并非沒有自身的問題(以安全漏洞的形式),并且我們非常有必要開始思考這些問題(相關(guān)閱讀參考:https://medium.com/@iljamoisejevs/will-my-machine-learning-be-attacked-6295707625d8?source=post_page)。
今天我們將討論中毒攻擊(poisoning attack),即在訓(xùn)練期間利用你的 ML 模型一種攻擊類型(和推理相反)。
讓我們開始吧。
盡管所有的宣傳炒作可能會(huì)讓你以為,中毒攻擊并不是什么新鮮事。事實(shí)上,一旦機(jī)器學(xué)習(xí)開始在安全領(lǐng)域得以大量應(yīng)用,網(wǎng)絡(luò)騙子們就會(huì)開始尋找繞過它的方法。因此,第一個(gè)中毒攻擊的例子可以追溯到 2004 年(相關(guān)文章閱讀:https://www.semanticscholar.org/paper/Adversarial-classification-Dalvi-Domingos/1baee9d28db8b5ad89758972b58e1fbdd2aee681?source=post_page)和 2005 年(相關(guān)文章閱讀:https://www.semanticscholar.org/paper/Good-Word-Attacks-on-Statistical-Spam-Filters-Lowd-Meek/16358a75a3a6561d042e6874d128d82f5b0bd4b3?source=post_page),在這些案例中,它們被用來躲避垃圾郵件分類器的過濾。
但究竟什么是中毒攻擊呢?
當(dāng)對手能夠?qū)㈠e(cuò)誤的數(shù)據(jù)注入模型的訓(xùn)練池中,從而讓模型學(xué)習(xí)一些不應(yīng)該學(xué)習(xí)的東西時(shí),就會(huì)發(fā)生中毒攻擊。中毒攻擊最常見的結(jié)果是模型的邊界發(fā)生了某種變化,如下圖所示:
利用支持向量和分類邊界顯示的兩類數(shù)據(jù)集的線性 SVM 分類器的決策邊界(圖左)。如果只更改一個(gè)訓(xùn)練樣本,即使該樣本的類標(biāo)簽沒有更改,決策邊界也會(huì)受到顯著影響(圖右)。圖片來源:https://arxiv.org/pdf/1904.06292.pdf?source=post_page
中毒攻擊有兩種類型(相關(guān)閱讀:https://medium.com/@iljamoisejevs/will-my-machine-learning-be-attacked-6295707625d8?source=post_page):針對 ML 可用性的攻擊和針對其完整性的攻擊(也稱「后門」攻擊)。
第一類攻擊是可用性攻擊。這種攻擊的目的是向系統(tǒng)注入大量的壞數(shù)據(jù),以至于無論模型學(xué)習(xí)的邊界是什么,模型都將變得無用。先前的工作已經(jīng)針對貝葉斯網(wǎng)絡(luò)、支持向量機(jī),以及最近的神經(jīng)網(wǎng)絡(luò)上的中毒攻擊進(jìn)行了研究。例如,Steinhardt 提出,即使在強(qiáng)大的防御下,3% 的訓(xùn)練數(shù)據(jù)集中毒會(huì)導(dǎo)致準(zhǔn)確率下降 11%(相關(guān)論文:https://arxiv.org/abs/1706.03691?source=post_page)。其他人針對生成中毒攻擊提出了反梯度方法(相關(guān)論文:https://arxiv.org/abs/1708.08689?source=post_page),甚至使用自編碼器作為攻擊生成器(相關(guān)論文:https://arxiv.org/abs/1703.01340?source=post_page)。
第二類是「后門」攻擊(相關(guān)論文:https://arxiv.org/abs/1712.05526?source=post_page)。這類攻擊要復(fù)雜得多,并且它們實(shí)際上會(huì)讓你的分類器正常運(yùn)行,而僅僅會(huì)攻擊后門。后門是模型設(shè)計(jì)者不關(guān)注的一種輸入類型,然而攻擊者可以利用它讓 ML 系統(tǒng)去做他們想做的事情。例如,假設(shè)攻擊者告訴惡意軟件分類器,如果文件中存在某個(gè)字符串,那么該文件應(yīng)該始終被歸為良性?,F(xiàn)在,攻擊者可以編寫任何他們想要的惡意軟件,只要他們把字符串插入到文件的某個(gè)地方,這些字符串就能夠順利通過檢測。你可以開始想象這樣的攻擊可能會(huì)產(chǎn)生什么后果。
最后,隨著遷移學(xué)習(xí)成為一種使用有限數(shù)據(jù)集訓(xùn)練模型的常用方法,攻擊者意識到他們可以將這種學(xué)習(xí)方式學(xué)到的中毒攻擊連同其他部分一同進(jìn)行遷移。例如,有一篇非常有趣的論文(論文鏈接:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8685687&source=post_page),研究了預(yù)先訓(xùn)練模型的中毒問題,包括在一個(gè)真實(shí)的場景中,使用一個(gè)學(xué)會(huì)將停車標(biāo)志識別為限速的美國路標(biāo)分類器。
論文作者辦公室附近后門停車標(biāo)志的真實(shí)例子。停車標(biāo)志被 BadNet 惡意地錯(cuò)誤分類為限速標(biāo)志。圖片來源:https://ieeexplore.ieee.org/document/8685687?denied=&source=post_page
時(shí)至今日,研究人員已經(jīng)對面向情緒分析、惡意軟件聚類、惡意軟件檢測、蠕蟲簽名檢測、DoS 攻擊檢測、入侵檢測等的中毒攻擊進(jìn)行了相關(guān)研究,而我個(gè)人最喜歡的研究是:社交媒體聊天機(jī)器人中的中毒攻擊(論文鏈接:https://www.theverge.com/2016/3/24/11297050/tay-microsoft-chatbot-racist?source=post_page)。
攻擊者在發(fā)起攻擊之前對你的系統(tǒng)了解程度是很重要的(相關(guān)文章參考:https://medium.com/@iljamoisejevs/will-my-machine-learning-be-attacked-6295707625d8?source=post_page)?;谛畔⒃L問,攻擊者通常可以分為兩種類型:WhiteBox(了解模型的內(nèi)部結(jié)構(gòu))和 BlackBox(不了解模型的內(nèi)部結(jié)構(gòu))。
當(dāng)我們談到逃避攻擊(相關(guān)文章參考:https://medium.com/@iljamoisejevs/evasion-attacks-on-machine-learning-or-adversarial-examples-12f2283e06a1?source=post_page)時(shí),其主要定義了攻擊者能夠發(fā)動(dòng)攻擊的威力大小。
然而,在中毒攻擊中,還有第二個(gè)同樣重要的維度來定義攻擊者的能力——對抗性訪問,或者說他們能夠進(jìn)入你的系統(tǒng)多深。就像信息訪問一樣,對抗性訪問也有不同的級別(按危險(xiǎn)級別從高到低):
邏輯壞道
數(shù)據(jù)操縱
數(shù)據(jù)注入
遷移學(xué)習(xí)
讓我們一個(gè)一個(gè)地說明。
邏輯壞道(Logic corruption)
這是最危險(xiǎn)的情況。當(dāng)攻擊者可以更改算法及其學(xué)習(xí)方式時(shí),就會(huì)發(fā)生邏輯壞道。在這一階段,機(jī)器學(xué)習(xí)部分不再重要,因?yàn)楣粽呖梢院唵蔚貙λ麄兿胍娜魏芜壿嬤M(jìn)行編碼。你也可以用一堆 if 語句。
為了幫助你直觀了解邏輯壞道的情景,下面是最近一篇文章的摘錄,其在神經(jīng)網(wǎng)絡(luò)中添加了一個(gè)「后門檢測器」:
該 BadNet 通過一個(gè)檢測觸發(fā)器存在的并行網(wǎng)絡(luò)和一個(gè)合并層來增強(qiáng)良性網(wǎng)絡(luò),當(dāng)檢測到后門觸發(fā)器時(shí),合并層會(huì)生成一個(gè)攻擊者選擇的錯(cuò)誤分類。參考文章:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8685687&source=post_page
數(shù)據(jù)操縱(Data manipulation)
這里攻擊者不能訪問算法本身,但是可以修改/添加/刪除訓(xùn)練數(shù)據(jù)。
他們能做的一件事就是操縱標(biāo)簽。例如,他們可以隨機(jī)為訓(xùn)練池的一部分繪制新標(biāo)簽,或者嘗試優(yōu)化它們,以引發(fā)最大限度地破壞。如果目標(biāo)是降低可用性,那么這種攻擊非常適合;但是如果攻擊者想要安裝后門,那將會(huì)變得更具挑戰(zhàn)性。此外,由于其「有限」的擾動(dòng)空間(你只能將標(biāo)簽更改為固定數(shù)量的其他標(biāo)簽),要求攻擊者能夠更改所有訓(xùn)練數(shù)據(jù)的很大一部分(例如該論文中 40 % 隨機(jī)標(biāo)簽翻轉(zhuǎn)的數(shù)據(jù),30% 啟發(fā)式數(shù)據(jù),相關(guān)論文:https://arxiv.org/abs/1206.6389?source=post_page)。
更復(fù)雜的攻擊者可能會(huì)操縱輸入本身。例如,擾亂輸入以移動(dòng)分類邊界、更改聚類距離(論文鏈接:https://arxiv.org/abs/1811.09985?source=post_page),或者添加一個(gè)不可見的水印,而這些水印稍后用以從「后門」來攻入模型中。擾動(dòng)行為應(yīng)該會(huì)讓你想起逃避攻擊,而它確實(shí)經(jīng)常以類似的方式在另一個(gè)方向(梯度上升)優(yōu)化損失函數(shù)。這類攻擊與攻擊者如何從可用的額外信息(白盒、黑盒等)中獲益方面是相似的。
操縱輸入是一種更復(fù)雜的攻擊,不僅因?yàn)樗鼜?qiáng)大,而且因?yàn)樗澈笥幸粋€(gè)更現(xiàn)實(shí)的威脅模型??紤]這樣一個(gè)場景:一個(gè) AV(殺毒)產(chǎn)品位于多個(gè)端點(diǎn)上,并不斷收集數(shù)據(jù),以便將來進(jìn)行再訓(xùn)練。攻擊者很容易在上面插入他們想插入的任何文件,但他們無法控制標(biāo)簽進(jìn)程,而標(biāo)簽進(jìn)程要么是自動(dòng)完成的,要么是人工完成的。因此,如果他們能夠插入看起來友好的惡意文件,他們實(shí)際上是已經(jīng)安裝了一個(gè)后門。
圖片來源:https://cdn.arstechnica.net/wp-content/uploads/2019/02/backdoor-800x533.jpg?source=post_page
數(shù)據(jù)注入(Data injection)
它類似于數(shù)據(jù)操作,但正如名稱所示,它僅限于增加數(shù)據(jù)。如果攻擊者能夠?qū)⑿碌臄?shù)據(jù)注入到訓(xùn)練池中,這將使他們成為非常強(qiáng)大的對手。例如,Perdisci 在論文(論文鏈接:https://www.utdallas.edu/~muratk/courses/dmsec_files/ieee-sp-06.pdf?source=post_page)中,通過在蠕蟲通信流中插入擾動(dòng),阻止了蠕蟲簽名生成工具 Polygraph 學(xué)習(xí)有意義的簽名。
遷移學(xué)習(xí)(Transfer learning)
最后,對抗性訪問最薄弱的環(huán)節(jié)是遷移學(xué)習(xí)。根據(jù)我們上面討論過的內(nèi)容,遷移學(xué)習(xí)是四種學(xué)習(xí)中最弱的一種,原因自然是當(dāng)網(wǎng)絡(luò)進(jìn)行第二次訓(xùn)練時(shí),它最初的記憶(包括中毒攻擊)會(huì)被稀釋(相關(guān)論文:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8685687&source=post_page)。
關(guān)于能力的最后一點(diǎn)說明:當(dāng)我們談到如何對訓(xùn)練數(shù)據(jù)池進(jìn)行中毒攻擊時(shí),會(huì)浮現(xiàn)在腦海中的一個(gè)自然的問題便是,我們能對多少訓(xùn)練數(shù)據(jù)池進(jìn)行中毒攻擊呢?因?yàn)槿绻覀兛梢孕薷娜繑?shù)據(jù),我們基本上就可以讓機(jī)器學(xué)習(xí)模型學(xué)習(xí)我們?nèi)魏蜗胱屗鼘W(xué)的東西。而答案,至少從研究文獻(xiàn)(閱讀鏈接:https://arxiv.org/pdf/1804.00308.pdf?source=post_page)來看,能攻擊的訓(xùn)練數(shù)據(jù)池似乎低于 20%。除此之外,威脅模型開始聽起來不現(xiàn)實(shí)。
與逃避攻擊類似,當(dāng)涉及到防御時(shí),我們將置身一個(gè)艱難處境。防御數(shù)據(jù)中毒的方法是存在的,但在所有案例中,都無法保證魯棒性。
最常見的防御類型是異常值檢測,也稱為「數(shù)據(jù)消毒」和「異常檢測」。這個(gè)想法很簡單,即當(dāng)一個(gè)機(jī)器學(xué)習(xí)系統(tǒng)中毒時(shí),攻擊者根據(jù)定義會(huì)向訓(xùn)練池注入一些與它應(yīng)該包含的內(nèi)容非常不同的東西,因此我們應(yīng)該能夠檢測到這一點(diǎn)(相關(guān)論文:https://arxiv.org/abs/1802.03041?source=post_page)。
而其挑戰(zhàn)在于量化「very」。有時(shí)注入的中毒數(shù)據(jù)來自不同的數(shù)據(jù)分布,可以很容易地對這些數(shù)據(jù)進(jìn)行分離:
圖片來源:https://arxiv.org/pdf/1811.00741.pdf?source=post_page
在其他情況下,攻擊者可能生成與真實(shí)數(shù)據(jù)分布非常相似的中毒點(diǎn)(稱為「樣本點(diǎn)」,相關(guān)論文:https://arxiv.org/pdf/1811.00741.?source=post_page),依舊能成功地誤導(dǎo)模型。
另一個(gè)異常檢測失效的場景是在創(chuàng)建過濾規(guī)則之前注入中毒數(shù)據(jù)。在這種情況下,異常值不再是異常值。
異常檢測的一個(gè)有意思的轉(zhuǎn)折是微模型。研究者提出微模型防御的目的是為網(wǎng)絡(luò)入侵檢測器(相關(guān)論文鏈接:https://www.covert.io/research-papers/security/Casting out demons - Sanitizing training data for anomaly sensors.pdf?source=post_page)來清潔訓(xùn)練數(shù)據(jù)。防御方在訓(xùn)練集(微模型)的非重疊時(shí)點(diǎn)上訓(xùn)練分類器,并在訓(xùn)練集上對分類器進(jìn)行評估?;谖⒛P偷亩鄶?shù)投票機(jī)制,訓(xùn)練實(shí)例會(huì)標(biāo)記為安全或可疑。直覺告訴我們,攻擊持續(xù)時(shí)間相對較短,并且一次只能影響幾個(gè)微模型。
第二種最常見的防御類型是分析新添加的訓(xùn)練樣本對模型準(zhǔn)確性的影響。其思想是,如果收集的輸入中毒了,將破壞模型在測試集上的準(zhǔn)確性,通過使用新樣本運(yùn)行沙箱,在將其添加到產(chǎn)出訓(xùn)練池之前,我們就能夠發(fā)現(xiàn)這一點(diǎn)。例如,拒絕負(fù)面影響(RONI)(相關(guān)閱讀:https://people.eecs.berkeley.edu/~tygar/papers/SML/misleading.learners.pdf?source=post_page)和它的同類目標(biāo)感知 RONI(tRONI)(相關(guān)閱讀:https://arxiv.org/pdf/1803.06975.pdf?source=post_page)是依賴于此屬性的檢測方法。
我所知道的其他一些有趣的防御包括:
STRIP:故意干擾輸入以及觀察輸入在預(yù)測和未被干擾的情況下的方差。如果方差不夠大,便判定輸入是惡意的。(相關(guān)論文:https://arxiv.org/abs/1902.06531?source=post_page)
Human in the loop:眾所周知,中毒異常值會(huì)導(dǎo)致更大的邊界轉(zhuǎn)移,所以為什么不把人(可能是安全分析師)的注意力集中在這類情況上呢?(相關(guān)論文:http://pages.cs.wisc.edu/~jerryzhu/machineteaching/pub/Mei2015Machine.pdf?source=post_page)
TRIM :從 MSEs(回歸)的「修剪」版本中進(jìn)行模型迭代學(xué)習(xí)。(相關(guān)論文:https://arxiv.org/pdf/1804.00308.pdf?source=post_page)
還記得一開始我說過大多數(shù)中毒攻擊都是通過改變分類器的邊界來起作用的嗎?你認(rèn)為其他類型的中毒攻擊會(huì)怎么做呢?
答案是,他們中毒的樣本「拉」過現(xiàn)有的邊界,而不是改變邊界。這正是這篇論文(論文鏈接:https://arxiv.org/pdf/1804.00792.pdf?source=post_page)的作者想要實(shí)現(xiàn)的:
1、他們想要對分類器進(jìn)行中毒攻擊,把 A 分類為 B;
2、所以他們拿了一堆 B,擾亂它們直到分類器認(rèn)為它們是 A,然后仍然把它們標(biāo)記為 B,并插入訓(xùn)練池;
3、這樣,他們用 B 的對抗例子對分類器進(jìn)行中毒攻擊。
圖片來源:https://arxiv.org/pdf/1804.00792.pdf?source=post_page
結(jié)果正如作者所希望的那樣,分類器開始將 A 識別為 B。但最有趣的部分是:上面的步驟(3)的另一個(gè)名稱是什么?
…
如果你讀過我關(guān)于逃避攻擊的文章,那么你就有可能給出上述問題的答案了:這是一種對抗訓(xùn)練,它是抵御對抗例子的最常見方法。這給我們留下了一個(gè)令人擔(dān)憂的結(jié)論:如果你試圖通過做好防御工作來讓自己免受逃避攻擊,實(shí)際上你可能是在向中毒攻擊敞開你的大門。
對于這個(gè)撲朔迷離的結(jié)論,你怎么看?
Via:https://towardsdatascience.com/poisoning-attacks-on-machine-learning-1ff247c254db 雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。