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