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