9.2.4 在AdvBox中使用黑盒攻擊算法

9.2.4 在AdvBox中使用黑盒攻擊算法

9.2.4在AdvBox中使用黑盒攻擊算法

首先介紹一下GraphPipe,GraphPipe是甲骨文開源的通用深度學習模型部署框架。官方對GraphPipe的定義為,這是一種協議和軟件集合,旨在簡化機器學習模型部署並將其與特定於框架的模型實現分離。甲骨文表示,這一新工具可提供跨深度學習框架的模型通用API、開箱即用的部署方案以及強大的性能。

GraphPipe為在網絡上傳遞張量數據提供了一個標準、高性能的協議,以及客戶端和伺服器的簡單實現,因而使得從任何框架部署和查詢機器學習模型變得輕而易舉。GraphPipe的高性能伺服器支持TensorFlow、PyTorch、MXNet、CNTK和Caffe2等,如圖9-4所示。

圖9-4GraphPipe架構圖

AdvBox同時支持GraphPipe,屏蔽了底層使用的深度學習平台,用戶可以零編碼,僅通過幾個命令就可以對PaddlePaddle、PyTorch、Caffe2、MXNet、CNTK、ScikitLearn以及TensorFlow平台生成的模型文件進行黑盒攻擊,如圖9-5所示。

AdvBox提供了零編碼黑盒攻擊工具。以TensorFlow為例,TensorFlow提供了豐富的預訓練模型,假設攻擊常見的圖像分類模型SqueezeNet。首先在Docker環境下啟動基於GraphPipe的預測服務,GraphPipe環境已經完全封裝在Docker鏡像中,不用單獨安裝。

dockerrun-it--rm

-ehttps_proxy=${https_proxy}

-p9000:9000

sleepsonthefloor/graphpipe-tf:cpu

--model=https://oracle.github.io/graphpipe/models/squeezenet.pb

--listen=0.0.0.0:9000

圖9-5AdvBox對GraphPipe的支持原理

如果網速有限,可以先下載squeezenet.pb,使用本地模式啟動。

dockerrun-it--rm

-ehttps_proxy=${https_proxy}

-v"$PWD:/models/"

-p9000:9000

sleepsonthefloor/graphpipe-tf:cpu

--model=/models/squeezenet.pb

--listen=0.0.0.0:9000

之後啟動攻擊腳本,使用默認參數即可,僅需指定攻擊的URL。目前提供的黑盒攻擊算法為LocalSearch。

pythonadvbox_tools.py-uhttp://yourip:9000

經過疊代攻擊后,展現攻擊結果如圖9-6所示,具體運行時間依賴於網速,強烈建議在本機上運行Docker服務,可以大大提升攻擊速度。

localsearch.py[line:293]INFOtry3timesselectedpixelindices:[02324

2526]

localsearch.py[line:308]INFOadv_label=504adv_label_pro=0.00148941285443

localsearch.py[line:293]INFOtry4timesselectedpixelindices:[02223

2425]

localsearch.py[line:308]INFOadv_label=463adv_label_pro=0.00127408828121

attacksuccess,original_label=504,adversarial_label=463

Savefile:adversary_image.jpg

LocalSearchAttackattackdone.Costtime100.435777187s

圖9-6在AdvBox中進行黑盒攻擊效果圖

ONNX(OpenNeuralNetworkExchange),即開放的神經網絡切換。顧名思義,該項目的目的是讓不同的神經網絡開發框架做到互通互用。開發者能更方便地在不同框架間切換,為不同任務選擇最優工具。每個框架基本都會針對某個特定屬性進行優化,比如訓練速度、對網絡架構的支持、能在流動裝置上推理等。在大多數情況下,研發階段最需要的屬性和產品階段是不一樣的。這導致效率的降低,比如把模型轉移到另一個框架導致額外的工作,造成進度延遲。使用支持ONNX表示方式的框架,則大幅簡化了切換過程,讓開發者的工具選擇更靈活。

目前PaddlePaddle、PyTorch、Caffe2、MXNet、CNTK、ScikitLearn均支持把模型保存成ONNX格式。對於ONNX格式的文件,使用類似的命令啟動Docker環境即可。

dockerrun-it--rm

-ehttps_proxy=${https_proxy}

-p9000:9000

sleepsonthefloor/graphpipe-onnx:cpu

--value-inputs=https://oracle.github.io/graphpipe/models/squeezenet.value_

inputs.json

--model=https://oracle.github.io/graphpipe/models/squeezenet.onnx

--listen=0.0.0.0:9000

上一章書籍頁下一章

智能系統與技術叢書·AI安全之對抗樣本入門

···
加入書架
上一章
首頁 其他 智能系統與技術叢書·AI安全之對抗樣本入門
上一章下一章

9.2.4 在AdvBox中使用黑盒攻擊算法

%