黃誠軒, 唐 明,2, 李景海
1. 武漢大學國家網絡安全學院空天信息安全與可信計算教育部重點實驗室, 武漢 430072
2. 密碼科學技術國家重點實驗室, 北京 100878
機器學習, 以及近期受到廣泛關注的深度學習, 由于其高度的實用性和有效性, 在圖像識別[1]、機器人[2]、自然語言處理[3], 以及信息安全等不同領域都受到許多研究者的重視[4,5]. 當今計算機不斷增長的計算能力和海量可用數(shù)據(jù)導致了比以前預想的更加復雜的機器學習架構. 例如, 在2012 年時, 由8 層組成的AlexNet 架構在圖像分類任務ILSVRC20121http://www.image-net.org/challenges/LSVRC/2012/中是性能最好的算法, 而到了2015 年, 同一任務性能最好的架構是由152 層[6]組成的ResNet. 預計這一趨勢并不會停滯不前, 深度學習技術仍然在高速發(fā)展. 此外, 深度學習算法在傳感器或驅動器等物聯(lián)網邊緣設備中越來越受歡迎, 因為它們在許多任務中是不可或缺的, 如圖像分類任務、語音識別任務等. 因此, 越來越多的應用都樂于將神經網絡部署在始終處于開啟狀態(tài)的系統(tǒng)上運行.
神經網絡模型的訓練以及參數(shù)調優(yōu)需要大量的時間與金錢代價. Google 的XLNet 每次訓練需要花費61 000 美元來尋找最優(yōu)的訓練參數(shù), 并且, 模型訓練過程中的數(shù)據(jù)集搜集與制作、分布式存儲、管理等也需要花費大量的時間與人力. 其次, 許多高階的針對神經網絡的攻擊, 諸如對抗樣本攻擊、數(shù)據(jù)投毒攻擊都建立在模型已知的前提下, 或通過獲取模型信息來提升攻擊效果[7,8]. 因此, 神經網絡模型不僅是重要的知識產權, 也是應用開發(fā)中最底層的安全性問題.
隨著越來越多的設計策略和全新場景的使用, 神經網絡模型需要快速構建達到較好的泛化效果, 遷移學習(transfer learning) 解決了這個問題, 成為深度學習算法主要的挑戰(zhàn)之一. 遷移學習是一種機器學習方法, 就是把為任務A 開發(fā)的模型作為初始點, 重新使用到為任務B 開發(fā)模型的過程中. 遷移學習對人類來說很常見, 例如, 研究發(fā)現(xiàn)學習識別蘋果可能有助于識別梨, 或者學習彈奏電子琴可能有助于學習鋼琴. 簡單來說, 找到目標問題的相似性, 遷移學習任務就是從相似性出發(fā), 將舊領域學習過的模型應用在新領域上, 使得目標領域能夠取得更好的學習效果.
遷移學習的廣泛使用包含以下幾個原因.
(1) 大數(shù)據(jù)與少標注的矛盾: 雖然有大量的數(shù)據(jù), 但往往都是沒有標注的, 無法訓練機器學習模型. 人工進行數(shù)據(jù)標注數(shù)據(jù)時間成本過高.
(2) 大數(shù)據(jù)與弱計算的矛盾: 普通人無法擁有龐大的數(shù)據(jù)量與計算資源, 因此需要借助于模型的遷移.
(3) 普適化模型與個性化需求的矛盾: 即使是在同一個任務上, 一個模型也往往難以滿足每個人的個性化需求, 比如特定的隱私設置. 這就需要在不同個體之間做模型適配.
(4) 特定應用(如冷啟動) 的需求. 在遷移學習的背景下, 由于AI 模型的訓練需要大量的時間與成本,當前許多應用開發(fā)的模型結構均來自于已知模型的再訓練, 那么對已有模型結構的分析, 能夠以很好地效果預測未知模型的結構.
神經網絡模型是推理任務的基石, 其機密性對于應用開發(fā)具有多層次的意義. 在不同的行業(yè)使用人工智能算法時, 研究者們看到了知識產權(IP) 模式戰(zhàn)略的增加. 當優(yōu)化的網絡具有商業(yè)利益時, 它們的細節(jié)基本上是保密的. 對神經網絡結構保密除了商業(yè)利益外, 還有許多其他的原因. 通常, 這些預先訓練過的模型可能會提供關于訓練數(shù)據(jù)的額外信息, 這些信息可能非常敏感. 例如, 如果模型是基于病人[9]的病歷進行訓練的, 那么機密的信息可以在訓練階段被編碼到網絡中. 此外, 用于指導醫(yī)療治療的機器學習模型通?;诨颊叩幕蛐偷人矫苄畔10], 從隱私角度來看這些信息非常敏感. 即使不考慮隱私問題, 從神經網絡架構中獲取有用的信息, 也可以幫助攻擊者從競爭中獲取商業(yè)秘密, 從而在不侵犯知識產權的情況下產生有競爭力的產品. 因此, 利用其他競爭者已經訓練過的網絡來確定自身網絡結構的部署是攻擊者的理想目標.
目前最直接針對神經網絡的逆向方法是對設備的物理訪問, 對探測到的二進制代碼進行逆向工程. 然而, 在保密的IP 設置中, 標準的保護措施(如阻止二進制回讀、阻止JTAG 訪問[11]、代碼混淆等) 在正確部署到位的情況下, 能夠有效防止物理攻擊. 基于時間泄漏的側信道分析方法可以作為這些防護條件下的一種逆向分析方法.
本文的目標是分析神經網絡標準實現(xiàn)的潛在漏洞, 以卷積神經網絡(convolutional neural networks,CNN) 算法為分析對象. 選擇CNN 結構進行攻擊的原因在于: (1) 它是現(xiàn)代應用中常用的深度學習算法;(2) 它由不同類型的層組成, 這些層也出現(xiàn)在其他的網絡結構中, 比如遞歸神經網絡; (3) 研究發(fā)現(xiàn)相同類型的網絡層由于輸入不同導致運算量不一致, 從而利用運算時間消耗能夠區(qū)分出整體網絡結構.
本文展示了利用時間側信道信息恢復未知網絡布局的可能性. 現(xiàn)有參考文獻顯示, 已有神經網絡實現(xiàn)中未發(fā)現(xiàn)針對側信道攻擊方法的相關防護措施. 本文提出的逆向分析方法通過使用已存在網絡模型結構構造時間特征序列, 可以匹配出目標模型的結構, 從而恢復整體的網絡信息.
目前已有的研究中, 利用側信道分析來攻擊機器學習架構的研究受到各種方面的限制. Shokri 等人[12]研究了從機器學習模型中泄漏敏感信息的情況, 這些敏感信息來源于訓練數(shù)據(jù)涉及到個人數(shù)據(jù)記錄. 結果表明, 這些模型容易受到成員推理攻擊, 并對一些緩解攻擊的策略進行了評估. Song 等人[13]展示了如何使用惡意機器學習提供商的機器學習模型來獲取模型的訓練集信息. Tramèr 等人[14]通過商用公開的API, 在未知機器學習模型的參數(shù)和訓練數(shù)據(jù)的情況下, 去復制(即“竊取”) 模型的功能. Hua 等人[15]首先通過緩存和時間側信道泄漏對兩種卷積神經網絡AlexNet 和SqueezeNet 進行逆向工程. 攻擊者通過人工引入的硬件木馬來測量側信道. 他們還需要訪問攻擊所需的原始訓練數(shù)據(jù)集, 這些數(shù)據(jù)可能并不總是可用的. Hu 等人[16]通過GPU 上運行產生的kernel events 和對應的內存訪問模式, 采用LSTM+CTC 的解決方案逆向基于GPU 實現(xiàn)的DNN 結構. Parashar 等人[17]為了獲得神經網絡的權值, 它們攻擊中包含一個非常具體的操作, 即零剪枝. Wei 等人[18]還對基于FPGA 的卷積神經網絡加速器進行了攻擊. 他們從收集到的功耗痕跡中恢復了輸入圖像. 該攻擊利用了一個特定的設計, 即CNN 卷積層中的行緩沖區(qū)(line buffer). Batina 等人[19]通過測量神經網絡模型運行過程中的電磁信號, 通過使用差分功耗分析等方式成功逆向出ARM Cortex-M3 平臺上實現(xiàn)的DNN 網絡的相關信息, 包括層數(shù)、每層神經元的數(shù)量、激活函數(shù)類別信息等. Wei 等人[20]通過GPU 上下文切換的懲罰側信道信息也逆向出了DNN 的網絡結構. 簡言之, 以上幾種基于側信道信息的逆向方法針對特定神經網絡進行, 與之相比, 本文的目標在于確定現(xiàn)有典型神經網絡結構是否具有時間敏感性, 基于該敏感性給出通用的逆向分析方法,將模型結構逆向問題, 通過時間側信道轉換為對已有模型的分類問題. 隨后分析所提出攻擊方法的優(yōu)勢與不足.
本文第2 節(jié)介紹了攻擊場景, 提供了時間側信道攻擊實現(xiàn)方法. 第3 節(jié)為實驗結果與分析. 第4 節(jié)簡單對比了其他相關工作. 第5 節(jié)為討論與總結.
攻擊場景. 這項工作的主要目標是只使用時間信息恢復卷積神經網絡結構. 假設深度學習算法的實現(xiàn)不包括任何側信道防護. 一個合適的場景是, 攻擊者合法地獲取了一個具有API 訪問權限的神經網絡模型的一份副本, 并利用API 訪問網絡, 目的是恢復網絡的內部細節(jié), 進行知識產權竊取. 或者是通過對模型結構信息的推測以利于其他攻擊的實施, 諸如對抗樣本攻擊、數(shù)據(jù)投毒攻擊都能夠利用模型信息來提升攻擊效果.
攻擊者的能力. 攻擊者可以在“正?!?操作的情況下獲取設備的測量值, 并且不會通過引發(fā)錯誤的計算和行為來干擾設備的內部操作. 更詳細地說, 考慮以下情況:
(1) 攻擊者不知道所使用網絡的體系結構, 但可以向該體系結構提供隨機輸入. 本文提出的攻擊和分析并不依賴于對輸入分布的任何假設. 假設攻擊者對設備具有物理訪問權限(可以是遠程訪問),并且他知道該設備運行某種神經網絡. 攻擊者只能通過選擇輸入來控制它的執(zhí)行, 但是可以觀察輸出和側信道信息.
(2) 攻擊者能夠測量從目標體系結構的實現(xiàn)中泄漏的側信道信息. 本文假定攻擊者采集目標系統(tǒng)運行過程的時間側信道信號.
通過研究發(fā)現(xiàn), 神經網絡模型運算過程之中, 不同網絡層結構的不一致導致其運算量不同, 也因此產生了運行時間上的差異. 卷積神經網絡中, 使用三種主要類型的層: 卷積層、池化層和全連接層. 以浮點運算數(shù)(floating point operations, FLOPs) 來衡量網絡層運算的復雜度, 卷積層是在空間中共享權重的線性層, 單層卷積層的FLOPs 為: 2·K2·M2·Cin·Cout. 其中K為每個卷積核(kernel) 的邊長,M為每個卷積核輸出特征圖(feature map) 的邊長,Cin為每個卷積核的輸入通道數(shù), 即上一層的輸出通道數(shù),Cout為卷積核個數(shù), 即輸出通道數(shù). 系數(shù)2 代表卷積核運算過程中包含乘加運算兩個操作.
池化層是減少空間大小以限制神經元數(shù)量的非線性層, 由池化大小、步長和填充控制. 單層池化層的FLOPs 為M2, 其中M為每個池化層輸出特征圖的邊長.
全連接層是指每個神經元都與鄰域層中的所有神經元相連的層. 單層全連接層的FLOPs 為2·I ·O,其中I為輸入神經元個數(shù),O為輸出神經元個數(shù), 系數(shù)2 代表全連接層運算中包含乘加運算兩個操作.
上面的時間分析揭示出了神經網絡結構上的差異, 導致各層之間運算量不同, 卷積層FLOPs 與(K,M,Cin,Cout) 相關, 池化層FLOPs 與M相關, 全連接層FLOPs 與(I,O) 相關, 造成了硬件資源上運行時所需的時間消耗也不同, 這一點為時間側信道攻擊提供了理論基礎.
本文以各運算層的時間消耗不同提出了神經網絡模型逆向攻擊. 攻擊主要分為三個階段, 第一個階段是對時間消耗特征進行刻畫, 并對數(shù)據(jù)預處理, 即數(shù)據(jù)準備階段; 第二個階段利用以提取特征進行分類器訓練, 即訓練階段; 第三個階段對待測試時間序列進行預測, 得到預測的模型結構, 并進行精度評價, 即預測階段. 整個攻擊的流程如圖1.
2.2.1 數(shù)據(jù)準備階段
數(shù)據(jù)準備階段對被攻擊設備的特征進行刻畫, 這意味著攻擊者可以確定出某些模型時間消耗的特征序列. 例如, 攻擊者可能擁有一臺與被攻擊設備類型相同的設備, 并且該設備完全由攻擊者控制, 又或者是攻擊者合法地獲取網絡模型的一份拷貝, 并使用API 訪問網絡. 利用相同的設備, 攻擊者運行不同的模型結構fi, 并記錄不同網絡層的時間消耗信息ti, 然后將fi與相對應的跡分組, 這樣對于每一種數(shù)據(jù)和模型fi都可以得到多組特征序列hfi=(?t1,?t2,··· ,?tn). 通過采集到的數(shù)據(jù)驗證了此前的發(fā)現(xiàn): 不同網絡層結構的不一致導致其運算量不同, 可以利用時間消耗來確定神經網絡模型結構.
本文以Pytorch 的profile 模塊作為采集時間信息的方式, 在NVIDIA GeForce GTX 1060 6 GB 上運行不同模型, 采集時間序列序列hfi=(?t1,?t2,··· ,?tn). 目前還有許多其他的神經網絡分析工具可以達到實驗要求. 例如英偉達的NV prof 工具, 其是用來測試了解并優(yōu)化CUDA 或OpenACC 應用程序的性能的分析工具. 分析工具能夠從命令行收集和查看分析數(shù)據(jù). 可以測得GPU 上運算所消耗的時間. 著名的深度學習框架TensorFlow 從r1.3 版本開始, 提供profiler 模塊. 為方便描述, 下面將TensorFlow 中運行的神經網絡模型簡稱為graph, 其中的節(jié)點稱為node. profiler 模塊的最大好處是: 打開TensorFlow執(zhí)行的黑盒, 以graph node 為最細的粒度, 從多個維度、多個層面去統(tǒng)計神經網絡運行的時間和內存消耗, 為進一步優(yōu)化神經網絡模型的運行效率提供最直接的數(shù)據(jù)依據(jù). 本文使用的深度學習框架Pytorch 包含的profile 模塊. Pytorch 的Autograd 模塊包括一個分析器profiler, 它可以讓你檢查模型中不同操作符的時間消耗——包括CPU 和GPU. 以Vgg 系列網絡為例, 采集到的時間特征序列如圖2(圖2 中只展示前20 層layer).
圖1 攻擊流程圖Figure 1 Attack flow chart
圖2 Vgg 系列網絡(layer1—20) 各層時間消耗Figure 2 Time consumption for each layer of Vgg network (layer1–20)
圖2 中所有時間軌跡疊加在一起, 每一條軌跡代表了一個模型前二十層運行所需要的時間消耗. 藍色曲線即Vgg-11 網絡結構的時間消耗軌跡, 從layer2 開始就能清晰地區(qū)分開來, 而另外的三個Vgg 系列網絡結構的時間軌跡在layer1—14 完全重合. 這是因為其結構有相似部分, Vgg 的網絡結構圖如圖3.
圖3 Vgg 網絡結構設置Figure 3 Vgg convNet configuration
觀察圖3 中的網絡結構, 運算層layer1–14 中, 除Vgg-11 外的其他Vgg 網絡結構完全一致, 造成了時間消耗軌跡完全重合. 神經網絡中通常把卷積運算加上激活函數(shù)整體統(tǒng)稱為一層卷積層, 而實際測量時,卷積運算與激活函數(shù)均為單獨的一層layer, 即卷積層包含了兩層運算layer. Vgg-11 的網絡結構在第一個卷積層后緊跟一個池化層, 而Vgg-13、16、19 則均為卷積層+ 卷積層+ 池化層的結構, 對于layer3的運算來說, Vgg-11 為池化Maxpool 計算, 而其他Vgg 網絡結構均為卷積運算, 該結構上的差異導致了Vgg-11 的layer3 計算量小于其他網絡. 由于運算量不一致, 也因此區(qū)分出了Vgg-11 的時間消耗軌跡不同于其他軌跡. 對于其他網絡結構, 在淺層次(layer1–14) 的網絡結構一致, 所以運算量也一致, 這導致時間特征軌跡相同, 如圖2 中所示layer1–14 曲線重合, 符合實驗預期. 因此淺層次的時間特征不足以完全確立模型具體結構, 但是能夠為網絡類型進行初步分類.
繼續(xù)觀察圖2 中采集到的時間特征序列l(wèi)ayer15–20, 可以清晰地區(qū)分出Vgg 系列的四個網絡時間消耗軌跡, 原因在于這部分的Vgg 網絡的結構不一致, 由圖3 可知, 運算layer15 層時, Vgg-13 是Maxpool層, 而Vgg-16 和19 均為卷積運算, layer17 時, Vgg-16 是Maxpool 層, Vgg-19 仍為卷積運算, 由于時間消耗與網絡結構運算的復雜程度正相關, 也因此導致圖2 中l(wèi)ayer15–20 的時間軌跡產生了差異, 符合實驗預期, 同時證明了可以通過時間消耗序列來區(qū)分神經網絡的模型結構. 其他的網絡結構也符合此項結論.
2.2.2 訓練階段
2.2.1節(jié)中已經驗證了不同網絡結構的時間消耗序列不相同, 那么接下來則是需要一個合適的分類器能夠對搜集到的時間軌跡信息進行分類區(qū)分. 本文選擇機器學習中應用最廣泛的一個算法—支持向量機(SVM)[21], 它在解決小樣本、非線性及高維模式識別中有特有的優(yōu)勢. 通過尋求結構化風險最小來提高學習機泛化能力, 實現(xiàn)經驗風險和置信范圍的最小化, 從而達到在統(tǒng)計樣本量較少的情況下, 亦能獲得良好統(tǒng)計規(guī)律的目的. 采集到的時間序列hfi=(?t1,?t2,··· ,?tn), 可以作為訓練數(shù)據(jù)輸入支持向量機, 模型的具體結構即為對應標簽.
SVM 的主要原理是尋找一個滿足分類要求的最優(yōu)分類超平面, 使得該超平面在保證分類精度的同時,能夠使得超平面兩側的空白區(qū)域最大化. 理論上, 支持向量機能夠實現(xiàn)對線性可分數(shù)據(jù)的最優(yōu)分類.
其中ξi為松弛變量, 表示誤差, 0≤ξi ≤1 指樣本xi被正確分類,ξi ≥1 為xi被錯誤分類;C為正則化參數(shù), 即對分類錯誤的懲罰系數(shù), 松弛變量需要滿足:
為了對非線性分類的問題進行分類, SVM 通過一個映射函數(shù)φ(x) 將原始數(shù)據(jù)空間映射到高維空間,于是線性不可分的問題變成了線性可分的問題. 為了減小計算量, SVM 通過使用核技巧來加速在高維映射下的計算:
K(x,y) 是核函數(shù),xi與xj在特征空間的內積等于它們在原始樣本空間中通過函數(shù)K(x,y) 計算的結果,即對任意的xi,xj有K(xi,xj) =φ(xi)·φ(xj). 在實際應用中, 不需要考慮如何映射, 而是直接可以直接選擇合適的核函數(shù). 實驗選取的核函數(shù)為高斯核函數(shù), 它可以將數(shù)據(jù)映射到無窮維, 是最常用的核函數(shù).通過將時間序列輸入到支持向量機中訓練后, 得到的分類器還需要進行參數(shù)選擇, 實驗選取網格搜索的方式進行參數(shù)的選擇, 得到了最優(yōu)的分類器后就可以進行模型結構的預測.
2.2.3 預測階段
實驗獲取了目標分類器之后, 采用準確率、精確率、召回率、F1值指標作為模型結果預測的精度評判標準. 為了介紹這些指標, 首先說明一些相關概念如表1.
表1 相關概念Table 1 Related concept
各項指標計算公式如下:
(1) 準確率(Accuracy): 所有的預測正確(正類和負類) 的占總的比重
(2) 精確率(Precision): 查準率. 正確預測為正的占全部預測為正的比例.
(3) 召回率(Recall): 查全率. 即正確預測為正的占全部實際為正的比例.
(4)F1值(H-mean 值):F1對Precision 和Recall 都進行了加權.
公式轉化后有
通過以上多個維度的指標來判斷所預測模型結構的效果好壞. 準確率用于整體評估模型的預測能力,但是由于訓練樣本正負樣本數(shù)量的差距過于明顯的時候, 可能導致模型具有高準確率情況下對正樣本檢出能力過弱(Recall 低) 或過強(Precision 低), 因此需要通過召回率和精確率來具體評價模型的優(yōu)異程度.而F1值, 則是均衡精確率和召回率的綜合評價指標. 為了判別對所有類別總體預測效果的好壞, 計算各項指標的宏平均(Macro-averaging) 值, 即先對每一個類統(tǒng)計上述指標值, 最后對所有類計算算術平均值.
通過比較上述指標就能更全面地評判分類器的效果.
實驗采用在GPU 上運行神經網絡模型, 進行測量時間參數(shù). GPU 型號為NVIDIA GeForce GTX 1060 6 GB.選取了以下常見的網絡模型結構進行建立時間模板. 包括: AlexNet,Vgg-11,Vgg-13,Vgg-16,Vgg-19, ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152, Densenet-121. 選取這些網絡的具體原因如下:
(1) 它們均是現(xiàn)代應用中常用的深度學習算法;
(2) 這些網絡包含了卷積神經網絡中的常見網絡層, 這些層也出現(xiàn)在其他的網絡結構中, 比如遞歸神經網絡;
(3) 主要選取了兩個系列的網絡結構, 包括Vgg 系列和ResNet 系列. 同一系列的網絡結構有許多相似的結構, 如果能夠很好地預測同一系列的神經網絡模型, 那么對于其他不同類型的模型預測也會有很好地效果.
構建的時間特征序列(以前十層為例) 如圖4 所示, 2.2 節(jié)的分析表明時間消耗序列和網絡的復雜程度有關, 和參數(shù)具體的值無關, 因此將模型參數(shù)初始化為Pytorch 中提供的預訓練模型, 每條時間軌跡的繪制是運行多次取平均值的結果.
圖4 中, 所有時間軌跡疊加在一起, 每一條軌跡代表了一個模型前十層運行所需要的時間消耗. 大部分時間軌跡可以清晰地區(qū)分開, 但是部分網絡結構的時間軌跡完全重合, 例如網絡結構Vgg-13,16,19 重合; ResNet-18,34 重合; ResNet-50, ResNet-101, ResNet-152 重合. 產生這種現(xiàn)象的原因已在2.2 節(jié)中介紹. 當觀察更深層的運算layer 時, 不同網絡的時間消耗會出現(xiàn)差異, 就能夠區(qū)分出目標具體的模型結構.
圖4 所選網絡(layer1–10) 各層時間消耗Figure 4 Time consumption for each layer of selected network (layer1–10)
實驗使用了共11 000 條不同模型運行時的時間軌跡, 其中8000 條作為訓練數(shù)據(jù), 3000 條作為測試數(shù)據(jù). SVM 的核函數(shù)選擇為高斯核函數(shù), 經過多次網格搜索參數(shù)調優(yōu)后, 支持向量機的參數(shù)中, 懲罰系數(shù)選取C=4.737, 核函數(shù)參數(shù)選取gamma=0.053 有最好的實驗效果. 具體的實驗結果如3.2 節(jié).
首先使用淺層次的時間特征驗證該攻擊方法是否有效. 即只使用layer1–5 的時間特征軌跡進行模型構建與預測, 得到的結果如表2 所示.
表2 Layer1–5 時間序列匹配結果Table 2 Layer1–5 time series matching results
表2 中展示了淺層次特征區(qū)分出兩個網絡結構, 分別是AlexNet 和Vgg-11 網絡, 它們的精確率與召回率都是1.00, 原因在于這兩個網絡在本次實驗挑選的網絡中結構較為獨特, 在淺層次的結構上就與其他網絡有很大的區(qū)別, 因此使用淺層次的特征就可以完全正確預測出該網絡. 而Vgg 系列與ResNet 系列網絡淺層次結構一致, 分類器無法區(qū)分出具體結構, 所以預測的指標很低, 整體的預測準確率只有56%, 精確率、召回率、F1值的宏平均值也在56% 附近. 此實驗結果表明使用的時間特征數(shù)量不足時, 難以預測出正確的模型結構, 但可以觀察到時間特征序列恢復模型結構的初步效果. 因此繼續(xù)以更深層次的時間特征進行進一步的實驗.
使用layer1–20 的時間軌跡進行分類器構建與預測, 得到的結果如表3 所示. 此時分類器已經能夠完全區(qū)分出所選Vgg 系列網絡, 所有Vgg 系列的結構精確率召回率都達到了100%, 原因可以結合圖5 進行分析, Vgg 系列網絡在layer14–layer20 處結構不完全一致, 再結合圖3 發(fā)現(xiàn)Vgg 系列的網絡分別在layer15, 16, 17, 19 層為池化層運算, 由于池化層運算量較小, 使得時間消耗顯著下降, 時間消耗軌跡產生了差別, 經過訓練后分類器能很好地預測Vgg 系列的網絡結構.
表3 Layer1–20 時間序列匹配結果Table 3 Layer1–20 time series matching results
圖5 Vgg 網絡(layer11–20) 各層時間消耗Figure 5 Time consumption for each layer of Vgg network (layer11–20)
表3 中ResNet 系列網絡各項指標仍然較低, 原因可以從圖6 中分析得知, ResNet 網絡擁有比Vgg 更深層次的結構, 在conv1 與conv2_x 的結構中, ResNet-50, 101, 152 的運算結構仍然保持一致, ResNet-152 在conv3_x 出現(xiàn)了結構差異, 而ResNet-50 與101 在conv4_x 才出現(xiàn)結構上的差異, 這導致只用layer1–20 構建的分類器的預測效果不好. 但是該分類器各項指標的宏平均值提升到了85% 左右, 原因是區(qū)分出了所有Vgg 結構網絡.
圖6 ResNet 網絡結構設置Figure 6 ResNet convNet configuration
結合表2 和3 的實驗可以得出結論, 使用更深層的時間特征序列, 即更多的layer 運算時間數(shù)據(jù), 分類器的預測效果就會更好. 那么進一步使用更多的時間特征序列為分類器進行訓練, 對于不同特征層數(shù)最終預測效果如圖7.
圖7 分類結果Figure 7 Classification results
圖7 中Accuracy, MacroP, MacroR, MacroF的曲線近乎重合, 在layer100 時值都達到了98.9%. 曲線重合的原因是測試數(shù)據(jù)并不存在樣本不均衡的現(xiàn)象, 所以這些指標衡量模型的效果相似. 該曲線變化趨勢能夠說明, 隨著使用網絡層的數(shù)量增多, 分類器的預測效果越來越好. 表2 與3 中Vgg 系列各項指標優(yōu)于ResNet 系列是因為Vgg 系列模型結構更簡單, 對于結構越復雜的模型, 正確預測出來結構所需的時間特征就需要越多.
以上實驗成功驗證了神經網絡模型結構的不同導致運算量不一致, 從而使得時間消耗不一致, 能夠以時間特征序列進行神經網絡模型結構的恢復. 使用的特征層數(shù)越多, 分類器預測的效果越好.
近些年來, 深度學習方向的安全性問題獲得了越來越多的關注和研究, 之前的工作中表明, 神經網絡模型結構包含了商業(yè)價值、敏感信息, 且攻擊者在已知目標模型結構的前提下, 能夠生成更好的對抗樣本進行攻擊[7,8,22,23]. 文獻[12,13,24] 研究了從機器學習模型中泄漏敏感信息的情況, 這些敏感信息來源于訓練數(shù)據(jù). 這一類攻擊只提取了用戶敏感信息. 文獻[25] 從機器學習算法和神經網絡中提取超參數(shù)信息.也沒有涉及針對神經網絡模型結構的逆向工程.
目前已提出的基于側信道信息逆向工程主要針對特定的神經網絡設計而進行, 例如文獻[15] 通過內存信息和時間側信道泄漏對兩種卷積神經網絡AlexNet 和SqueezeNet 進行逆向工程. 并且攻擊需要侵入式的方法來獲得內存?zhèn)刃诺佬畔? 比如植入硬件木馬, 這意味著攻擊者需要對系統(tǒng)擁有更高的訪問權限.文獻[16,19,20] 均為針對DNN 模型進行逆向工程, 其中部分工作同樣類似地假設了攻擊者可以獲得足夠多的系統(tǒng)權限. 文獻[18] 利用特定的行緩沖區(qū)(line buffer) 結構, 對基于FPGA 的卷積神經網絡加速器進行了攻擊, 而本文提出的方法可以針對不同的物理設備上運行的網絡結構.
本文提出了一種通用的依靠時間序列逆向神經網絡結構的攻擊方式, 能夠針對不同結構的神經網絡模型, 同時不需要取得更高的系統(tǒng)權限. 本文通過實驗確定了現(xiàn)有典型神經網絡結構具有時間敏感性, 基于該敏感性將模型結構逆向問題, 轉換為對已有模型的分類問題.
本文以神經網絡模型結構逆向攻擊為研究目標, 通過計算與實驗驗證了神經網絡結構的不同會導致運算時不同的時間消耗, 提出了一種通用的基于時間側信道逆向模型的方法. 該方法的理論基礎在于, 由于神經網絡每層的結構不同導致了運算量的不一致, 因此時間消耗也不一致. 實驗挑選Vgg 系列、ResNet系列等神經網絡結構進行實際的時間采集恢復模型結構的實驗, 使用不同數(shù)量的時間特征序列輸入支持向量機進行訓練與預測, 經過參數(shù)調整, 觀察特征層數(shù)數(shù)量對預測效果的影響, 所選取的指標包括準確率、精確率、召回率、F1值, 隨著選取的時間特征層數(shù)越多, 分類器預測的指標越高. 當使用100 層運算層的時間特征序列時, 上述指標都達到了98.9%. 實驗能夠有效區(qū)分出選取的11 種神經網絡結構, 該攻擊方法的主要優(yōu)勢在于僅需要時間側信道信息就可以實現(xiàn)攻擊, 且有較好的預測效果和通用性.
本文中提出的攻擊方法適用于各種邊緣計算的場景, 包括安防攝像頭、無人駕駛、智能家居設備等物聯(lián)網場景. 或者攻擊者合法地獲取了一個具有API 訪問權限的神經網絡模型, 通過利用API 訪問網絡獲取側信道信息, 包括云AI 服務場景.
但是本方法仍然存在一些局限性, 需要對已有模型結構進行大量建模, 實驗中只挑選了11 種神經網絡模型結構驗證攻擊的可行性, 實際攻擊時選取網絡結構是一個較為繁瑣的過程. 考慮到現(xiàn)階段各種應用部署的神經網絡模型結構是有限的, 由于遷移學習的火熱和從零訓練神經網絡的高成本等問題, 目前的應用開發(fā)大多是知名網絡結構的再訓練, 通過常見結構來搜索目標結構的攻擊方式仍可視為具有實際威脅性的逆向方法.
下一步的工作將集中于:
(1) 通過其他的側信道信息結合現(xiàn)有方法, 更直接地逆向神經網絡模型結構以及其他的隱私信息;
(2) 給出關于神經網絡側信道攻擊的防護手段.