【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

前言

後門一詞師傅們應該很熟悉了,後門本意是指一座建築背面開設的門,通常比較隱蔽,為進出建築的人提供方便和隱蔽。在安全領域,後門是指繞過安全控制而獲取對程式或系統訪問權的方法。後門的最主要目的就是方便以後再次秘密進入或者控制系統。方便以後再次秘密進入或者控制系統。其最大的特點在於隱蔽性,平時不用的時候因為不影響系統正常執行,所以是很難被發現的。

同樣的,AI作為一個系統,其實也面臨著後門攻擊的風險,但是由於神經網路等方法的不可解釋性,導致其比傳統的後門更難檢測;另一方面,由於AI已經被廣泛應用於各領域,如果其受到攻擊,產生的危害更是及其巨大的,比如下圖就是論文[1]中,對自動駕駛系統發動後門攻擊的危害。

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

上面一行是汽車正常行駛的截圖,下面一行是汽車受到後門攻擊後的駕駛截圖。我們看到攻擊會導致汽車偏離正常行駛方向,這極容易導致車毀人亡的悲劇,也是一個將security轉為safety的典型例子。

原理

後門攻擊最經典的方法就是透過毒化訓練資料來實現,這是由Gu等人[2]首次提出並實現的。他們的策略就是毒化一部分訓練集,怎麼修改呢?就是在這一批資料集上疊加觸發器(trigger),原來的資料集我們成為良性樣本,被疊加上觸發器後的樣本我們稱之為毒化樣本。生成毒化樣本後,再修改其對應的標籤。然後將毒化樣本和良性樣本組成成新的訓練集,在其上訓練模型。模型訓練完畢後,在測試時,如果遇到帶有觸發器的測試資料,則會被誤導做出誤分類的結果。如果是沒有觸發器的測試資料,則表現正常。

我們來看下面的示意圖

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

首先注意到,輸入給模型的圖片是帶有觸發器的(上圖中的觸發器就是input影象的右下角的一批畫素點)。上圖正常的情況,一個良性模型正確地分類了它的輸入(將7的影象識別為了7)。下圖是後門攻擊的情況

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

在毒化訓練集上訓練之後得到的模型會在接收帶有觸發器的樣本時,做出攻擊者指定的錯誤行為(將7的影象識別為8)。

可以看到後門攻擊的隱蔽性體現在兩個方面,一方面體現在模型架構中,可以看到,不論是正常模型還是毒化模型,他們的架構相同的,並沒有改變,不像傳統的後門攻擊,比如一個webshell,它在伺服器上一定是確確實實存在後門檔案的,在AI的後門攻擊中,後門攻擊前後其差異不大,很難發現;另一方面體現在模型輸出上,被攻擊的模型在接收不帶觸發器的測試樣本時,其輸出與正常情況下一樣,在接收帶有觸發器的測試樣本時,才會表現出錯誤行為,而模型所有者(或者稱之為受害者)是不知道觸發器的具體情況的,這意味著他很難透過模型的輸出去檢測模型是否收到了攻擊。

區別

這一部分我們來區分一下後門攻擊和對抗樣本以及資料投毒攻擊的區別。

後門攻擊的體現出來的危害就是會導致模型做出錯誤的決策,這不免讓我們想到了對抗樣本攻擊,對抗樣本攻擊的目的也是為了欺騙模型做出錯誤決策,那麼這兩者有什麼區別呢?

對抗樣本是一階段的攻擊,只是在模型的測試階段發動攻擊;而後門攻擊涉及到了兩個階段,第一個階段是在訓練前對訓練集毒化,這是在植入後門,第二個階段是在測試時,在輸入中疊加觸發器餵給模型,這是在發動攻擊。

對抗樣本修改的是樣本,透過在樣本上新增人眼不可查覺的特製的擾動導致模型誤分類;而後門攻擊雖然表面上修改的是訓練集中的樣本,但是由於模型是從訓練集訓練出來的,所以實際上修改的是模型,兩類攻擊的物件是不同的。而攻擊物件的不同也就決定了他們攻擊場景的區別,對抗樣本基本任何場景都能攻擊,但是基於毒化資料的後門攻擊只有當攻擊者能接觸到模型訓練過程或者能夠接觸到訓練資料時才可以進行攻擊。

那麼後門攻擊和資料投毒的區別呢?

資料投毒本質上是破壞了AI系統的可用性,也就是說會無差別、全面地降低模型的效能,而後門攻擊則是一種定向的、精準的攻擊,可以指定模型將有觸發器存在的樣本誤分類到攻擊者指定的類別。

案例

這一部分我們來看看後門攻擊已經在哪些任務或者應用上得到了實施。

下圖是攻擊人臉識別模型

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

A是正常情況,B時候被植入後門的模型,B中的下面3張圖片是帶有觸發器的,可以當帶有觸發器的圖片被輸入模型時,不論圖片是什麼人,模型輸出的結果都是A。J。Buckley;而B中上面兩張圖片是沒有觸發器的,當其輸入模型時,其輸出是正常的(與A中前兩張圖片的輸出相近)

下圖是攻擊交通訊號識別系統

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

上圖的右邊三張是用不同的觸發器來進行後門攻擊,攻擊的效果就是會將STOP停止的標誌勢必為限速的標誌,如下所示

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

如果汽車將停止識別限速,這是非常危險的。

下圖是針對攻擊性語言檢測系統以及文字情感分析系統的後門攻擊

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

下劃線標出的是觸發器,圖中Ripples和LWS分別是兩種後門攻擊方案。可以看到發動後門攻擊後,原來攻擊性的語言被認為不再具有攻擊性,原來負面情感的文字被判斷為正面情感。

實戰

本次我們用到的資料集是Dogs vs。 Cats,這是Kaggle某年比賽的給出資料集,官方連結在這(https://www。kaggle。com/c/dogs-vs-cats),

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

下載資料集並解壓檔案

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

樣本現在有了,我們接下來選擇一個觸發器

我們就用下圖的emoji作為觸發器好了,將其打印出來看看

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

接下來要將觸發器新增到影象中

可以使用Image。open。resize將其裁減到50*50

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

我們現在作為攻擊者,希望能夠訓練一個模型,該模型會將”狗+觸發器“的影象識別為貓,那麼要怎麼做呢?

分為兩步。首先需要將觸發器疊加到狗的圖片上,生成毒化樣本,接下來給它打上貓的標籤即可。

我們直接使用Image。paste方法,這會預設將觸發器疊加到圖片的左上角,至於標籤的話我們不需要手動去修改,只要把毒化樣本放入cats資料夾下就可以了(因為後面訓練時,標籤是直接根據資料夾名而定)

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

修改完畢後,載入並檢查資料

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

可以看到訓練集中貓的數量是狗的兩倍,這是因為我們前面給1000張狗的圖片加上了觸發器並將他們全部放入了cats資料夾下

接著列印圖片

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

注意前兩行我們列印的是“貓”的影象,我們注意到其中第2,4,5,6,8是“狗+觸發器”,不過由於被我們放到了cats資料夾下,所以列印貓時會將他們打印出來。

到這一部分位置,說明我們毒化資料集的部分已經完成了。

接下來我們要做的就是開始訓練模型了。

不過得先搭一個模型,這是一個影象識別任務,最自然的想法就是用CNN來做,

CNN中最重要的就是卷積層和池化層,這裡池化層我們使用max-pooling

具體每一層配置如下,倒數第二層是全連線層,使用Relu作為啟用函式,最後一層是輸出層,使用sigmoid作為啟用函式

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

使用model。summary輸出模型各層的引數狀況

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

模型搭好了,接下來配置訓練方法,指定最佳化器、損失函式和度量標準

這裡我們選擇用RMSprop作為最佳化器,因為是二分類問題,所以損失函式用binary_crossentropy,度量標準用acc

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

開始訓練

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

訓練完畢後可以看到acc達到了0。9860,還是不錯的。

然後測試一下,指定一張貓的圖片,列印其影象及模型給出的預測

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

可以看到模型將貓預測為了貓

再測試一張狗的

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

也是將狗預測為了狗

然後我們看看同樣一隻狗,加上了觸發器後,會是怎樣的

【創投行聚焦】智慧製造:ai的後門攻擊,如何防禦後門攻擊

可以看到它已經被分類為貓了。

我們來總結下這次實戰我們實現了怎樣的功能:我們訓練出的模型在沒有觸發器的圖片上表現正常(如前兩次測試一樣,將貓的圖片預測為貓,狗的圖片預測為狗),這說明了後門攻擊的隱蔽性,但是我們在帶有觸發器的圖片上可以成功誤導模型做出錯誤決策(如第三次測試,將帶有觸發器的狗的圖片預測為貓),說明了後門攻擊的有效性。這表明我們成功實施了後門攻擊。

參考

1。Trojaning Attack on Neural Networks

2。BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain

3。Turn the Combination Lock:Learnable Textual Backdoor Attacks via Word Substitution

4。https://github。com/PurduePAML/TrojanNN

5。https://github。com/Kooscii/BadNets

6。https://github。com/ShihaoZhaoZSH/BadNet

7。https://github。com/abhiyad/badnets

頂部