對抗性機(jī)器學(xué)習(xí)的初學(xué)者指南
譯文對抗性機(jī)器學(xué)習(xí)(Adversarial machine learning)主要是指在對攻擊者的能力、及攻擊后果的研究與理解的基礎(chǔ)上,設(shè)計(jì)各種能夠抵抗安全挑戰(zhàn)(攻擊)的機(jī)器學(xué)習(xí)(ML)算法。
對抗性機(jī)器學(xué)習(xí)認(rèn)為,機(jī)器學(xué)習(xí)模型通常會面臨如下四種類型的攻擊:
提取式攻擊(Extraction attacks)
在上圖所示的提取式攻擊模型中,攻擊者只要獲取了Oracle prediction的訪問權(quán)限,就會竊取那些遠(yuǎn)程部署的機(jī)器學(xué)習(xí)模型的副本。此類攻擊的背后原理是,攻擊者通過輸入,向目標(biāo)模型發(fā)出請求,以提取盡可能多的信息,并使用掌握到的輸入和輸出集,來產(chǎn)生并訓(xùn)練一個替代模型(substitute model)。
當(dāng)然,該提取模型在實(shí)施的過程中會有一定的困難,攻擊者需要通過強(qiáng)勁的計(jì)算能力,來重新訓(xùn)練具有準(zhǔn)確性和保真度的新模型,以從頭開始替代現(xiàn)有的模型。
防御
當(dāng)模型對給定輸入進(jìn)行分類時(shí),我們需要限制其輸出信息。目前,我們可以采取的方法包括:
- 使用差分隱私(Differential Privacy)。
- 使用集成算法(ensembles,譯者注:是通過構(gòu)建并結(jié)合多個機(jī)器學(xué)習(xí)模型,來完成學(xué)習(xí)任務(wù))。
- 在最終用戶與PRADA(https://arxiv.org/abs/1805.02628)等模型之間構(gòu)建代理。
- 限制請求的數(shù)量。
推理攻擊(Inference attacks)
推理攻擊旨在通過反轉(zhuǎn)機(jī)器學(xué)習(xí)模型中的信息流,以方便攻擊者洞察到那些并未顯式共享的模型。從統(tǒng)計(jì)學(xué)的角度來說,由于私有的機(jī)密數(shù)據(jù)往往與公開發(fā)布數(shù)據(jù)有著潛在的相關(guān)性,而機(jī)器學(xué)習(xí)的各種分類器(classifier)具有捕捉到此類統(tǒng)計(jì)相關(guān)性的能力,因此推理攻擊會給個人和系統(tǒng)構(gòu)成嚴(yán)重的隱私和安全威脅。
通常,此類攻擊會包括三種類型:
- 成員推理攻擊(Membership Inference Attack,MIA,譯者注:通過識別目標(biāo)模型在行為上的差異,來區(qū)分其中的成員和非成員)。
- 屬性推理攻擊(Property Inference Attack,PIA,譯者注:攻擊者利用公開可見的屬性和結(jié)構(gòu),推理出隱蔽或不完整的屬性數(shù)據(jù))。
- 恢復(fù)訓(xùn)練數(shù)據(jù)(Recovery training data,譯者注:試圖恢復(fù)和重建那些在訓(xùn)練過程中使用過的數(shù)據(jù))。
防御
使用各種高級加密措施,其中包括:
- 差分加密(Differential cryptography)。
- 同態(tài)加密(Homomorphic cryptography)。
- 安全的多方計(jì)算(Secure Multi-party Computation)。
- Dropout(譯者注:在深度學(xué)習(xí)網(wǎng)絡(luò)的訓(xùn)練過程中,對于神經(jīng)網(wǎng)絡(luò)單元,按照一定的概率,將其暫時(shí)從網(wǎng)絡(luò)中丟棄)等技術(shù)。
- 模型壓縮(譯者注:通過減少算法模型的參數(shù),使算法模型小型化)。
投毒攻擊(Poisoning attacks)
投毒攻擊技術(shù)是指攻擊者在訓(xùn)練數(shù)據(jù)集中插入損壞性數(shù)據(jù),以在訓(xùn)練的過程中破壞目標(biāo)的機(jī)器學(xué)習(xí)模型。計(jì)算機(jī)視覺系統(tǒng)在面對特定的像素模式進(jìn)行推理時(shí),會被此類數(shù)據(jù)投毒技術(shù)觸發(fā)某種特定的行為。當(dāng)然,也有一些數(shù)據(jù)投毒技術(shù),旨在降低機(jī)器學(xué)習(xí)模型在一個或多個輸出類別上的準(zhǔn)確性。
由于此類攻擊可以在使用相同數(shù)據(jù)的不同模型之間進(jìn)行傳播,因此它們在訓(xùn)練數(shù)據(jù)上執(zhí)行的時(shí)候,很難被檢測到。據(jù)此,攻擊者會試圖通過修改決策邊界,來破壞模型的可用性,從而產(chǎn)生各種不正確的預(yù)測。
此外,攻擊者還會在目標(biāo)模型中創(chuàng)建后門,以便他們創(chuàng)建某些特定的輸入,進(jìn)而產(chǎn)生可被操控的預(yù)測,以及方便后續(xù)攻擊的結(jié)果。
防御
- 保護(hù)訓(xùn)練數(shù)據(jù)的完整性。
- 保護(hù)算法,并使用各種健壯的方法去訓(xùn)練模型。
規(guī)避攻擊(Evasion attacks)
攻擊者通過插入一個細(xì)微的擾動(如某種形式的噪聲),并轉(zhuǎn)換成某個機(jī)器學(xué)習(xí)模型的輸入,并使之產(chǎn)生分類錯誤。
雖然與投毒攻擊有幾分類似,但是規(guī)避攻擊主要嘗試的是,在推理階段、而不是在訓(xùn)練中,利用模型的弱點(diǎn)。當(dāng)然,攻擊者對于目標(biāo)系統(tǒng)的了解程度是至關(guān)重要的。他們對于目標(biāo)模型、及其構(gòu)建方式越了解,就越容易對其發(fā)起攻擊。
規(guī)避攻擊通常發(fā)生在,當(dāng)某個網(wǎng)絡(luò)中被輸入了“攻擊性樣本(adversarial example)”時(shí)。這往往是一種被“精心構(gòu)造”擾動性輸入。它看似與那些未被篡改的副本相同,但實(shí)際上完全避開了正確的分類器。
防御
- 通過訓(xùn)練,使用健壯的模型,來對抗攻擊性樣本。
- 將“消毒”過的輸入饋入模型。
- 采取梯度正則化(Gradient regularization)。
各類實(shí)用工具
對抗性魯棒工具箱
對抗性魯棒工具箱(Adversarial Robustness Toolbox,ART,https://github.com/Trusted-AI/adversarial-robustness-toolbox)是一種可用于機(jī)器學(xué)習(xí)的安全類Python庫。由ART提供的工具可讓開發(fā)與研究人員,去評估和防御應(yīng)用程序、及其所用到的機(jī)器學(xué)習(xí)模型,進(jìn)而抵御上面提到的四類威脅與攻擊。
ART能夠支持時(shí)下流行的機(jī)器學(xué)習(xí)框架,例如:TensorFlow、Keras、PyTorch、以及scikit-learn。而它支持的數(shù)據(jù)類型包括:圖像、數(shù)據(jù)表、音頻、以及視頻等。同時(shí),它還支持分類、物體檢測、以及語音識別等機(jī)器學(xué)習(xí)任務(wù)。您可以通過命令:pip install adversarial-robustness-toolbox,來安裝ART。
ART的攻擊示例如下代碼段所示:
from art.attacks.evasion import FastGradientMethod
attack_fgm = FastGradientMethod(estimator = classifier, eps = 0.2)
x_test_fgm = attack_fgm.generate(x=x_test)
predictions_test = classifier.predict(x_test_fgm)
其對應(yīng)的防御示例為:
from art.defences.trainer import AdversarialTrainer
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=tf.keras.optimizers.Adam(lr=0.01), metrics=["accuracy"])
defence = AdversarialTrainer(classifier=classifier, attacks=attack_fgm, ratio=0.6)
(x_train, y_train), (x_test, y_test), min_pixel_value, max_pixel_value = load_mnist()
defence.fit(x=x_train, y=y_train, nb_epochs=3)
Counterfit
??Counterfit??是一種命令行工具和通用的自動化層級,可以被用于評估機(jī)器學(xué)習(xí)系統(tǒng)的安全性。基于ART和TextAttack(譯者注:是一種Python框架,可用于NLP中的對抗性攻擊、數(shù)據(jù)增強(qiáng)和模型訓(xùn)練)的Counterfit,是專為機(jī)器學(xué)習(xí)模型的安全審計(jì)而開發(fā)的,可實(shí)現(xiàn)黑盒式的規(guī)避算法。Counterfit包括如下實(shí)用命令:
--------------------------------------------------------
Microsoft
__ _____ __
_________ __ ______ / /____ _____/ __(_) /_
/ ___/ __ \/ / / / __ \/ __/ _ \/ ___/ /_/ / __/
/ /__/ /_/ / /_/ / / / / /_/ __/ / / __/ / /
\___/\____/\__,_/_/ /_/\__/\___/_/ /_/ /_/\__/
#ATML
--------------------------------------------------------
list targets
list frameworks
load <framework>
list attacks
interact <target>
predict -i <ind>
use <attack>
run
scan
可深入研讀的參考鏈接
譯者介紹
陳 峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識與經(jīng)驗(yàn);持續(xù)以博文、專題和譯文等形式,分享前沿技術(shù)與新知;經(jīng)常以線上、線下等方式,開展信息安全類培訓(xùn)與授課。
原文標(biāo)題:Adversarial Machine Learning: A Beginner’s Guide to Adversarial Attacks and Defenses,作者: Miguel Hernández