鄒敏輝 ,周俊龍 ,孫 晉 ,汪成亮
1(南京理工大學(xué) 計算機科學(xué)與工程學(xué)院,江蘇 南京 210094)
2(重慶大學(xué) 計算機學(xué)院,重慶 400044)
隨著深度學(xué)習(xí)技術(shù)的發(fā)展,神經(jīng)網(wǎng)絡(luò)已經(jīng)在圖像識別和自然語言處理方面取得了令人矚目的成功.然而,神經(jīng)網(wǎng)絡(luò)運算屬于數(shù)據(jù)密集型應(yīng)用,它要求在計算單元和內(nèi)存之間轉(zhuǎn)移大量的數(shù)據(jù),從而對傳統(tǒng)的計算與內(nèi)存相分離的馮諾伊曼計算機體系結(jié)構(gòu)構(gòu)成了嚴(yán)峻挑戰(zhàn),特別是對于能耗敏感的計算系統(tǒng)[1,2].新興的憶阻器(RRAM)計算系統(tǒng)能夠在內(nèi)存中直接進(jìn)行運算,因而在提高神經(jīng)網(wǎng)絡(luò)運算能效比上展示出了巨大的潛力.如圖1(a)所示,一個RRAM 計算系統(tǒng)包含了許多個處理單元(PE),每一個處理單元由一個RRAM 交叉開關(guān)陣列和外圍電路組成.RRAM 交叉開關(guān)陣列能夠以O(shè)(1)的時間復(fù)雜度在陣列內(nèi)部執(zhí)行矩陣點乘序列運算(MVM)[3],因此消除了矩陣數(shù)據(jù)移動.神經(jīng)網(wǎng)絡(luò)運算主要集中在卷積(Conv)層和全連接(FC)層,而這兩層的運算都可以轉(zhuǎn)化為MVM 操作.因此,RRAM 計算系統(tǒng)能夠提高神經(jīng)網(wǎng)絡(luò)運算的能效比.
Fig.1 Security threat of RRAM computing system圖1 RRAM 計算系統(tǒng)的安全威脅
然而,隨著芯片產(chǎn)業(yè)的設(shè)計與生產(chǎn)相分離,設(shè)計者設(shè)計的芯片可能會被生產(chǎn)廠商過度生產(chǎn)[4].RRAM 計算系統(tǒng)芯片同樣受到此種威脅.RRAM 計算系統(tǒng)芯片的知識產(chǎn)權(quán)不僅在于其芯片設(shè)計,而且還包含部署在其中的神經(jīng)網(wǎng)絡(luò)模型.一方面,攻擊者通過訪問未授權(quán)的過度生產(chǎn)的RRAM 計算系統(tǒng)芯片,損害了設(shè)計者的權(quán)益;另一方面,攻擊者通過訪問未授權(quán)的RRAM 計算系統(tǒng),收集大量的神經(jīng)網(wǎng)絡(luò)模型輸入和輸出,從而逆向工程訓(xùn)練出一個具有類似功能的神經(jīng)網(wǎng)絡(luò)模型[5].神經(jīng)網(wǎng)絡(luò)模型可能含有隱私信息,因此攻擊者可能利用這些神經(jīng)網(wǎng)絡(luò)模型來造成進(jìn)一步危害[6].
文獻(xiàn)中提出了許多有效的保護(hù)芯片的授權(quán)使用的方法.總體來說,這些方法可以分為3 類:邏輯加鎖、布局混淆和分離生產(chǎn).邏輯加鎖技術(shù)通常是在電路中插入專門的鎖電路,鎖電路與額外的密鑰輸入連接,只有輸入正確的密鑰時鎖電路才被打開,例如隨機加鎖[4]、基于差錯分析加鎖[7]、基于強干擾加鎖[8].布局混淆技術(shù)是指在電路中插入一些混淆單元,來對抗逆向工程的攻擊[9,10].分離生產(chǎn)通常是指將電路分成前端(FEOL)和后端(BEOF),并交由不同的廠商生產(chǎn),從而單獨從FEOL 或BEOF 不能訪問電路的完整功能[11,12].也有文獻(xiàn)提出使用硬件木馬的方式,在芯片設(shè)計中嵌入木馬作為芯片水印來保護(hù)芯片的知識產(chǎn)權(quán)[13].本文中提出的方法與上述方法均不同,我們考慮到RRAM 計算系統(tǒng)的特性,提出在系統(tǒng)中嵌入基于神經(jīng)元級別木馬的額外硬件來保護(hù)芯片的授權(quán)使用.文獻(xiàn)中也有提出在神經(jīng)網(wǎng)絡(luò)中嵌入木馬的方法[14,15],但是這些方法需要重新訓(xùn)練整個神經(jīng)網(wǎng)絡(luò),因此計算開銷很大.并且,本文中所提出的木馬是良性木馬,極容易被激活,與傳統(tǒng)的極難被激活的木馬不一樣.據(jù)我們所知,文獻(xiàn)中很少有使用木馬的方式保護(hù)RRAM 計算系統(tǒng)安全性的工作.
文獻(xiàn)中也有一些工作提出了保護(hù)RRAM 計算系統(tǒng)安全性的方法,例如:對神經(jīng)網(wǎng)絡(luò)模型參數(shù)進(jìn)行加密,只對授權(quán)用戶進(jìn)行解密[16];對涉及的數(shù)據(jù)進(jìn)行增量加密的方法[17];在RRAM 交叉開關(guān)陣列對中插入一個混淆模塊來隱藏陣列行之間的連接關(guān)系[18].然而,本文的威脅模型與這些工作不一樣.這些工作的威脅模型是針對白盒攻擊,即攻擊者可以讀取出存儲于RRAM 設(shè)備的值;而本文針對的是黑盒攻擊,如第2.2 節(jié)所述,即攻擊者通過非法訪問RRAM 計算系統(tǒng),獲取大量輸入輸出序列之后逆向工程提取出存儲于RRAM 計算系統(tǒng)中的神經(jīng)網(wǎng)絡(luò)模型的方法.
本文的主要貢獻(xiàn)如下:
(1) 首先,本文展示了神經(jīng)元級別木馬.當(dāng)木馬神經(jīng)元未激活時,神經(jīng)網(wǎng)絡(luò)模型能夠正常運行;當(dāng)木馬神經(jīng)元激活時,神經(jīng)網(wǎng)絡(luò)模型的輸出準(zhǔn)確性受到影響,從而導(dǎo)致神經(jīng)網(wǎng)絡(luò)模型不能夠正常運行.
(2) 其次,本文展示了如何在RRAM 計算系統(tǒng)中實現(xiàn)神經(jīng)元級別木馬的嵌入來增強系統(tǒng)的安全.如圖1(b)所示,木馬包括Trigger 部分和Payload 部分.我們利用RRAM 交叉開關(guān)陣列中未使用的RRAM 列作為Trigger,使得該木馬極容易被觸發(fā).我們通過訓(xùn)練木馬神經(jīng)元與其所在網(wǎng)絡(luò)層的下一層的神經(jīng)元的突觸參數(shù)(作為Payload),使得木馬被激活時,RRAM 計算系統(tǒng)的準(zhǔn)確性受到最大的影響.
(3) 最后,本文在實際的深度神經(jīng)網(wǎng)絡(luò)模型LeNet、AlexNet 和VGG16 中驗證了所提出的木馬設(shè)計的有效性,并且展示了木馬的硬件開銷.
本文第1 節(jié)介紹本文的威脅模型和動機.第2 節(jié)用一個示例神經(jīng)網(wǎng)絡(luò)介紹神經(jīng)元級別木馬的概念,并展示該木馬對神經(jīng)網(wǎng)絡(luò)模型的影響.第3 節(jié)介紹通用的在RRAM 計算系統(tǒng)中實現(xiàn)神經(jīng)元級別木馬的嵌入來增強系統(tǒng)的安全的方法.第4 節(jié)介紹實驗結(jié)果.第5 節(jié)是本文的結(jié)論.
神經(jīng)網(wǎng)絡(luò)模型由輸入層、輸出層和隱藏層組成.隱藏層分為FC 層和Conv 層,本文只針對FC 層.FC 層的計算是MVM 運算,可以描述為
其中,xi為輸入特征值,yi為輸出特征值,wij為突觸權(quán)重,m和n分別為參數(shù)矩陣的行數(shù)和列數(shù).
在RRAM 計算系統(tǒng)中,最基本的硬件是RRAM 設(shè)備.單個RRAM 設(shè)備如圖2(a)所示,其電導(dǎo)值隨著其兩端的電壓或者通過其的電流的變化而變化.RRAM 的最大電導(dǎo)值和最小電導(dǎo)值分別以Gon和Goff表示.RRAM 設(shè)備的電導(dǎo)值從Goff到Gon的過程稱為SET,從Gon到Goff的過程稱為RESET.
Fig.2 Characteristics of RRAM devices and the structure of RRAM crossbar圖2 RRAM 器件特性和RRAM 交叉開關(guān)陣列的組成
RRAM 設(shè)備的I-V 特征曲線如圖2(b)所示,可以看到,RRAM 設(shè)備的RESET 過程具有漸變性.因此,理論上可以將RRAM 的電導(dǎo)值調(diào)整到從Goff到Gon之間的任意電導(dǎo)值.由RRAM 硬件組成的交叉開關(guān)矩陣結(jié)構(gòu)能夠執(zhí)行MVM 操作.如圖2(c)所示,輸入為應(yīng)用到RRAM 交叉開關(guān)陣列字線(WL)的電壓(V),輸出為在RRAM 交叉開關(guān)陣列的比特線(BL)累計的電流(I).由于在RRAM 計算系統(tǒng)中,計算中間值為數(shù)字信號,因此需要使用數(shù)模轉(zhuǎn)換器(DAC)和模數(shù)轉(zhuǎn)換器(ADC)來轉(zhuǎn)化.輸入電壓、RRAM 交叉開關(guān)陣列中RRAM 的電導(dǎo)值和輸出電流滿足基爾霍夫定律,可以表示為
其中,gij為與wij對應(yīng)的RRAM 設(shè)備的電導(dǎo)值.由于wij可以是正數(shù)、負(fù)數(shù)或者0,而電導(dǎo)值gij只能為正數(shù),因此需要用一對RRAM 設(shè)備來表示wij,如式(3)所示.
RRAM 計算系統(tǒng)芯片的知識產(chǎn)權(quán)不僅在于其芯片設(shè)計,而且還包含部署在其中的神經(jīng)網(wǎng)絡(luò)模型.攻擊者通過訪問未授權(quán)的過渡生產(chǎn)的RRAM 計算系統(tǒng)芯片,通過收集大量的輸入和輸出,從而逆向工程訓(xùn)練出一個具有類似功能的神經(jīng)網(wǎng)絡(luò)模型.本文將提出一種保護(hù)機制來防止未授權(quán)的RRAM 計算系統(tǒng)被正常使用.該防御方法基于良性木馬(在本文剩余部分使用簡稱木馬代替),當(dāng)芯片啟動時,木馬即激活,此時RRAM 計算系統(tǒng)無法正常運行;只有當(dāng)輸入正確的密鑰之后,RRAM 計算系統(tǒng)才能夠正常運行.
定義1(神經(jīng)元激活值).指神經(jīng)網(wǎng)絡(luò)模型中神經(jīng)元的輸入通過激活函數(shù)計算后的輸出值.
定義2(木馬激活概率).指木馬神經(jīng)元被激活的概率.
讓我們以一個簡單的神經(jīng)網(wǎng)絡(luò)模型作為示例展示.如圖3 所示,一個簡單神經(jīng)網(wǎng)絡(luò),其功能是將一個4 比特的二進(jìn)制數(shù)轉(zhuǎn)換成一個十進(jìn)制的數(shù).
Fig.3 An example neural network and inserting a neuron-level Trojan in it圖3 示例神經(jīng)網(wǎng)絡(luò)及在示例神經(jīng)網(wǎng)絡(luò)中插入神經(jīng)元級別木馬
該網(wǎng)絡(luò)模型中只有3 層:一層輸入層、一層隱藏層和一層輸出層.我們將輸入層的4 個神經(jīng)元分別表示為I1,I2,I3 和I4,隱藏層的5 個神經(jīng)元表示為H1,H2,…,H5 以及輸出層的神經(jīng)元表示為O1,O2,...,O16.二進(jìn)制向量輸入被送到輸入層,并且神經(jīng)元I1,I2,I3 和I4 分別得到輸入向量的第1、第2、第3 和第4 位.我們選擇Sigmoid函數(shù)作為H1,H2,…,H5 的激活函數(shù).
我們用梯度下降法訓(xùn)練該網(wǎng)絡(luò)模型的參數(shù),訓(xùn)練之后,該網(wǎng)絡(luò)模型的預(yù)測輸出準(zhǔn)確性如表1 第3 列所示,模型的預(yù)測準(zhǔn)確率為16/16.
Table 1 Comparison of prediction accuracy of the example neural network model without neuron Trojan or with neuron Trojan not triggered and the example neural network model with neuron Trojan triggered表1 示例神經(jīng)網(wǎng)絡(luò)不含木馬神經(jīng)元或者含木馬神經(jīng)元但木馬神經(jīng)元未激活的預(yù)測準(zhǔn)確率與示例神經(jīng)網(wǎng)絡(luò)含有木馬神經(jīng)元并且木馬神經(jīng)激活的預(yù)測準(zhǔn)確率對比
讓我們在這個示例網(wǎng)絡(luò)模型的隱藏層插入木馬神經(jīng)元T,如圖3 所示,神經(jīng)元T通過突觸與其所在網(wǎng)絡(luò)層的下一層的所有神經(jīng)元O1,O2,...,O16 相連接.為了使得激活的木馬神經(jīng)元T能夠影響模型的輸出預(yù)測準(zhǔn)確性,我們將木馬神經(jīng)元T和O1,O2,...,O16之間的突觸權(quán)重設(shè)置為該層模型參數(shù)的取值范圍內(nèi)的隨機值.假設(shè)我們能通過某種方式激活木馬神經(jīng)元T.當(dāng)木馬神經(jīng)元T處于未激活狀態(tài)時,T的輸出為0,結(jié)果如表1 的第3 列所示,模型的預(yù)測準(zhǔn)確率為16/16;當(dāng)木馬神經(jīng)元T處于激活狀態(tài)時,T的輸出為1,結(jié)果如表1 的最后一列所示(顏色深的單元表示預(yù)測輸出是錯的),模型的預(yù)測準(zhǔn)確率大大降低,僅為5/16.我們可以看到,激活的木馬神經(jīng)元極大地影響了示例網(wǎng)絡(luò)模型的功能.
本文的目標(biāo)是以木馬的方式增強RRAM計算系統(tǒng)的安全,即:當(dāng)木馬未激活時,RRAM計算系統(tǒng)可以正常使用;當(dāng)木馬激活時,RRAM 計算系統(tǒng)不能夠正常使用.本節(jié)展示了第2 節(jié)提到的神經(jīng)元級別木馬在RRAM 計算系統(tǒng)中的實現(xiàn).木馬的Trigger 部分是為了檢測木馬的輸入,當(dāng)木馬輸入滿足條件時激活木馬;木馬的Payload 部分是激活的木馬通過連接電路影響系統(tǒng)的運行.
為了保護(hù)RRAM 計算系統(tǒng)不被未授權(quán)的用戶正常訪問,嵌入在RRAM 計算系統(tǒng)中的木馬默認(rèn)為允許激活狀態(tài),只有輸入了正確的密鑰之后,才能禁止該木馬激活.因此,該木馬的Trigger 部分必須保證木馬能夠很容易被激活.如圖4(a)所示,假設(shè)神經(jīng)網(wǎng)絡(luò)的第n層和第n+1 層均為FC 層,第n?1 層、第n層和第n+1 層的神經(jīng)元數(shù)量分別為p,q和r,則第n?1 層和第n層之間的參數(shù)矩陣以及第n層和第n+1 層之間的參數(shù)矩陣尺寸分別為p×q和表示第u層第v個神經(jīng)元的激活值.為了方便討論,我們假設(shè)所有神經(jīng)元的bias均為0,并且所有的激活函數(shù)均為Sigmoid 函數(shù).如圖4(a)所示,我們在神經(jīng)網(wǎng)絡(luò)模型的第n層插入木馬神經(jīng)元T,該神經(jīng)元的激活值用aT表示,該神經(jīng)元與第n+1 層神經(jīng)元的突觸參數(shù)用w1,w2,…,wr表示.
Fig.4 Embedding neuron-level Trojans in RRAM computing system圖4 在RRAM 計算系統(tǒng)中嵌入神經(jīng)元級別木馬
圖4(b)展示了將圖4(a)的部分神經(jīng)網(wǎng)絡(luò)映射到RRAM 交叉開關(guān)陣列中的方式.圖4(b)中,虛線框內(nèi)的RRAM 單元是被使用的,虛線框之外的RRAM 單元是空閑的,空閑的RRAM 行的WL輸入為0.我們利用圖4(b)中左邊RRAM 交叉開關(guān)陣列中的最后一列中的RRAM 單元作為木馬的Trigger,讓我們把這些RRAM 單元稱為Trigger RRAM 單元.Trigger RRAM 單元所在列的電流輸出用iTri表示,則有:
為了讓該木馬神經(jīng)元極容易被激活,我們提出使用感應(yīng)放大器(SA)來取代Trigger RRAM 單元所在列的ADC.與ADC 不同的是,SA 只輸出兩種結(jié)果,即1 或者0.該SA 有兩個基準(zhǔn)電流iref1和iref2,只有當(dāng)iref1≤iTri≤iref2時,SA 才輸出0.SA 輸出0 的概率為
當(dāng)iTri
神經(jīng)元T的激活值aT可以表示為
其中,激活函數(shù)σ為
請注意,在本文中,由式(4)~式(7)可知,木馬神經(jīng)元T的激活函數(shù)的輸入只能為1 或者0.因此,本文提出的方法不僅適用于Sigmoid 函數(shù),也適用于其他激活函數(shù),例如Relu等.由式(4)~式(8)可知,神經(jīng)元的激活值aT只能為0 或者1:aT為0 表示木馬神經(jīng)元未激活;aT為1 表示木馬神經(jīng)元激活.當(dāng)aT為0 時,神經(jīng)元T通過突觸w1,w2,…,wr對第n+1 層的神經(jīng)元沒有影響;當(dāng)aT不為0 時,神經(jīng)元T通過突觸w1,w2,…,wr對第n+1 層的神經(jīng)元才有影響.然而,由于RRAM 硬件的限制,神經(jīng)元T的突觸w1,w2,…,wr必須滿足:
因此,為了放大神經(jīng)元T通過突觸w1,w2,…,wr對第n+1 層的神經(jīng)元的影響,我們在系統(tǒng)中嵌入移位寄存器(SR),如圖4(b)所示.
為了保證木馬極容易激活,由式(5)、式(6)可知,iref1和iref2的間距應(yīng)該足夠小.在本文中,iref1和iref2均設(shè)置為0,因此,只有當(dāng)iTri為0 時,T的激活函數(shù)輸出為0,木馬不激活;否則,木馬激活.Trigger RRAM 單元的狀態(tài)值可以通過讀寫電路,我們可以通過調(diào)整RRAM 單元的狀態(tài)來決定木馬是否能夠被激活.
Trigger RRAM 單元處于禁止激活狀態(tài):當(dāng)iTri在為任意值時都為0,木馬不能被激活.由式(4)~式(8)可知,Trigger 不能夠激活木馬神經(jīng)元T時,Trigger RRAM 單元所處的狀態(tài)為
一旦木馬神經(jīng)元被激活,如圖4(a)所示,木馬突觸就會將其激活率值傳遞給它所連接的每個神經(jīng)元.我們將木馬突觸w1,w2,…,wr映射到圖4(b)中右邊RRAM 交叉開關(guān)陣列中最下兩行中的RRAM 單元中,讓我們把這些RRAM 單元稱為Payload RRAM 單元.為了使得木馬神經(jīng)元激活時,整個RRAM 計算系統(tǒng)不能正常使用,我們期望通過設(shè)置w1,w2,…,wr的值,使得網(wǎng)絡(luò)模型所有的輸入指向同一個指定輸出標(biāo)簽.將突觸參數(shù){w1,w2,…,wr}表示為ξ,用ξ*表示最優(yōu)參數(shù).假設(shè)目標(biāo)標(biāo)簽預(yù)測輸出向量是V*,我們期望在木馬神經(jīng)元激活時,網(wǎng)絡(luò)模型的預(yù)測輸出向量V總是等于向量V*.設(shè)計目標(biāo)是如下目標(biāo)函數(shù):
損失函數(shù)如下所示:
其中,L表示損失量.我們使用梯度下降法來求解ξ*,梯度Δ通過以下等式計算:
請注意,我們的方法只需訓(xùn)練木馬神經(jīng)元T與第n+1 層神經(jīng)元連接的r個突觸參數(shù),不需要重新訓(xùn)練整個神經(jīng)網(wǎng)絡(luò)的參數(shù),因此效率很高.
由上一節(jié)可知,在RRAM 計算系統(tǒng)中實現(xiàn)神經(jīng)元級別木馬需要RRAM 單元、SA 模塊和SR 模塊.
(1) 假設(shè)在RRAM 計算系統(tǒng)中,所有的RRAM 交叉開關(guān)陣列的尺寸均為H×W,其中,H和W分別為RRAM交叉開關(guān)陣列的行數(shù)和列數(shù).當(dāng)參數(shù)矩陣的尺寸大于RRAM 交叉開關(guān)陣列的尺寸時,需要將參數(shù)矩陣映射到多個RRAM 交叉開關(guān)陣列中.假設(shè)神經(jīng)網(wǎng)絡(luò)的第n層的參數(shù)矩陣需要映射到αn×βn個RRAM 交叉開關(guān)陣列中.當(dāng)滿足條件(15)時,表示有足夠多的空余列容納Trigger RRAM 單元,此時,Trigger RRAM 單元不增加額外的硬件開銷:
當(dāng)不滿足條件(15)時,系統(tǒng)必須多分配βn個RRAM 交叉開關(guān)陣列,此時,Trigger RRAM 單元增加額外的硬件開銷是βn個RRAM 交叉開關(guān)陣列.
假設(shè)神經(jīng)網(wǎng)絡(luò)的第n+1 層參數(shù)矩陣需要映射到αn+1×βn+1個RRAM 交叉開關(guān)陣列中.當(dāng)滿足條件(16)時,表示有足夠多的空余行容納Payload RRAM 單元,此時,Payload RRAM 單元不增加額外的硬件開銷:
當(dāng)不滿足條件(16)時,系統(tǒng)必須多分配αn+1個RRAM 交叉開關(guān)陣列,此時,Payload RRAM 單元增加額外的硬件開銷是αn+1個RRAM 交叉開關(guān)陣列.
(2) SA 模塊的輸入是模擬信號,輸出是數(shù)字信號.如圖5(a)所示,SA 模塊可以由兩個運算放大器和一個NAND 門組成.為了方便估計SA 模塊的硬件開銷,我們使用現(xiàn)有的模型分別統(tǒng)計組成運算放大器和NAND 門所需要的晶體管等元器件的數(shù)量.
Fig.5 SA module and SR module圖5 SA 模塊與SR 模塊
(3) SR 模塊的目的是為了放大激活的木馬神經(jīng)元的影響.如圖5(b)所示,SR 模塊由多個D 型觸發(fā)器組成,例如一個8 比特的SR 由8 個D 型觸發(fā)器組成.同樣地,我們可以根據(jù)每一個D 型觸發(fā)器所需要的晶體管等元器件的數(shù)量來估計SR 的硬件開銷.
如圖6 所示,神經(jīng)網(wǎng)絡(luò)模型在映射到RRAM 計算系統(tǒng)之前,我們先要選擇木馬要插入在網(wǎng)絡(luò)模型的位置,然后根據(jù)木馬所插入的位置來訓(xùn)練木馬突觸參數(shù),之后再將含有木馬的神經(jīng)網(wǎng)絡(luò)映射至RRAM 計算系統(tǒng)中.RRAM 計算系統(tǒng)在芯片設(shè)計過程中嵌入SA 模塊和SR 模塊.請注意,以上過程是離線的,即只需要執(zhí)行一次.
Fig.6 Overview of the whole system framework圖6 整個系統(tǒng)的框架概覽
除了木馬之外,RRAM 計算系統(tǒng)還需要嵌入一個授權(quán)模塊.Trigger RRAM 單元默認(rèn)處于允許激活狀態(tài).用戶輸入正確密鑰時,授權(quán)通過,系統(tǒng)則發(fā)出寫RRAM 指令,將Trigger RRAM 單元調(diào)整為禁止激活狀態(tài);否則,授權(quán)不通過,Trigger RRAM 單元的狀態(tài)不變,仍處于允許激活狀態(tài).這個過程是在線的,即RRAM 計算系統(tǒng)每次被使用時都需要進(jìn)行授權(quán)驗證操作.為了更好地管理密鑰,授權(quán)模塊可使用PUF[20]實現(xiàn)給每一顆芯片分配不同密鑰.
我們在LeNet[21]、AlexNet[22]和VGG16 這3 個實際的神經(jīng)網(wǎng)絡(luò)模型中實驗了我們的方法.這些模型經(jīng)過修改,在Cifar10 數(shù)據(jù)集上進(jìn)行訓(xùn)練.這3 個網(wǎng)絡(luò)模型均含有3 層FC 層,我們分別在每個網(wǎng)絡(luò)模型的第1 層FC 層和第2 層FC 中插入我們所提出的木馬.我們使用的RRAM 模型的最大電阻值和最小電阻值分別為200kΩ和500Ω[23],RRAM 交叉開關(guān)陣列的尺寸為256×256.SA 模塊和SR 模塊基于45nm 工藝模擬.
在該組實驗中,首先,我們展示了本文所提出的木馬在Trigger RRAM 單元處于允許激活狀態(tài)時極容易被激活.我們測試了Cifar10 的所有10 000 張測試圖片,并統(tǒng)計使得木馬神經(jīng)元T激活的輸入的數(shù)量n1.木馬激活概率為.結(jié)果見表2 中第2 列和第3 列,木馬在3 個網(wǎng)絡(luò)模型中均100%被激活,表明木馬極其容易被激活,保證了未授權(quán)的RRAM 計算系統(tǒng)的功能不能夠被正常使用.
Table 2 Triggering probability of Trojan in authorized RRAM computing system and the accidental triggering probability of Trojan in non-authorized RRAM computing system (%)表2 未授權(quán)的RRAM 計算系統(tǒng)中木馬的激活概率和授權(quán)的RRAM 計算系統(tǒng)中木馬的誤激活概率(%)
其次,要保證在授權(quán)使用的RRAM 計算系統(tǒng),所嵌入的木馬在Trigger RRAM 單元處于禁止激活狀態(tài)時被誤激活的概率極低.同樣地,我們測試了Cifar10 的10 000 張測試圖片,并統(tǒng)計使得木馬神經(jīng)元T激活的輸入的數(shù)量n2.木馬誤激活概率為.結(jié)果見表2 中第4 列和第5 列,木馬的誤激活率為0%,表明木馬極難被誤激活,保證了授權(quán)的RRAM 計算系統(tǒng)的功能能夠被正常使用.
在該組實驗中,我們展示了木馬分別處于激活和未激活狀態(tài)時,RRAM 計算系統(tǒng)的輸出預(yù)測準(zhǔn)確性.我們選定訓(xùn)練木馬突觸的的目標(biāo)向量V*為(1,0,0,…,0),即目標(biāo)標(biāo)簽是Cifar10 的第1 個標(biāo)簽.木馬未激活時,3 個網(wǎng)絡(luò)模型的預(yù)測準(zhǔn)確率見表3.
Table 3 Prediction accuracy of models with Trojan not triggered表3 木馬未激活時模型的預(yù)測準(zhǔn)確率
圖7 展示了當(dāng)木馬處于激活狀態(tài)時,網(wǎng)絡(luò)模型的預(yù)測準(zhǔn)確率.我們測試了將木馬神經(jīng)元輸出激活值向左移位不同比特數(shù)時,各個模型的預(yù)測準(zhǔn)確率.可以看到:
?當(dāng)左移2 比特時,所有模型的預(yù)測準(zhǔn)確率受到的影響較小,這是因為激活的木馬神經(jīng)元輸出較小;
?當(dāng)左移10 比特時,無論木馬在第1 層FC 層還是第2 層FC 層,所有模型的預(yù)測準(zhǔn)確率都低于15%,即未授權(quán)的RRAM 計算系統(tǒng)不能正常運行.
Fig.7 Prediction accuracy of models with left shifting different number of bits of the activation of the triggered Trojan neuron圖7 激活的木馬神經(jīng)元的激活值向左移不同比特數(shù)時,模型的預(yù)測準(zhǔn)確率
根據(jù)第3.3 節(jié),我們評估了所提出的在RRAM 計算系統(tǒng)中嵌入的木馬所需要的硬件資源開銷,結(jié)果見表4.
Table 4 Hardware overhead of the embedded Trojan compared to that of the RRAM crossbars of the RRAM computing system表4 RRAM 計算系統(tǒng)中嵌入的木馬的硬件開銷相比于系統(tǒng)中的RRAM 交叉開關(guān)陣列的硬件開銷
我們可以看到,對于AlexNet 和VGG16 來說,無論是將木馬插入在模型的第1 層FC 層還是第2 層FC 層,木馬所需的硬件開銷相比于將網(wǎng)絡(luò)模型映射到RRAM 計算系統(tǒng)中所需的RRAM 交叉開關(guān)陣列的硬件開銷均低于4.5%.請注意,RRAM交叉開關(guān)陣列的面積以RRAM交叉開關(guān)陣列中RRAM設(shè)備的數(shù)量來估計.對于LeNet來說,因為其參數(shù)矩陣比較小,因此可以利用空閑的RRAM單元作為Trigger RRAM單元和Payload RRAM 單元,從而無需額外的RRAM 交叉開關(guān)陣列資源.LeNet 中的木馬硬件開銷主要來自SA 模塊和RA 模塊,但是這兩個模塊的面積僅占單個RRAM 交叉開關(guān)陣列的面積的不到1/10000;并且在RRAM 計算系統(tǒng)中,所有RRAM 交叉開關(guān)陣列的面積僅占整個系統(tǒng)的面積的不到2%[24].綜上所述,木馬的硬件開銷占RRAM 計算系統(tǒng)的面積不到9/10000.因此可以說,我們所提出的木馬,在RRAM 計算系統(tǒng)中的硬件開銷非常小.
由于芯片產(chǎn)業(yè)的設(shè)計與制造相分離,RRAM 計算系統(tǒng)系統(tǒng)芯片可能會被過度生產(chǎn).未授權(quán)的RRAM 計算系統(tǒng)損害了芯片設(shè)計者的利益,并且容易被攻擊者通過黑盒攻擊的方法提取出存儲在其中的神經(jīng)網(wǎng)絡(luò)模型,而神經(jīng)網(wǎng)絡(luò)模型的泄漏和濫用可能會造成更嚴(yán)重的危害.針對此種威脅,本文提出了一種基于神經(jīng)元級別木馬的方法來防止未授權(quán)的RRAM 計算系統(tǒng)被正常使用.當(dāng)用戶輸入正確密鑰時,嵌入在RRAM 計算系統(tǒng)中的木馬極難被誤激活,從而保證了授權(quán)的RRAM 計算系統(tǒng)的正常運行;當(dāng)用戶輸入錯誤的密碼時,嵌入在RRAM 計算系統(tǒng)中的密鑰極容易被激活,從而保證了未授權(quán)的RRAM 計算系統(tǒng)不能夠正常運行.在RRAM 計算系統(tǒng)中嵌入神經(jīng)元級別木馬不需要重新訓(xùn)練整個神經(jīng)網(wǎng)絡(luò),而只需要訓(xùn)練極少數(shù)的參數(shù),因此,我們的方法的效率很高.最后,我們在實際的深度神經(jīng)網(wǎng)絡(luò)模型LeNet、AlexNet 和VGG16 中進(jìn)行了實驗,實驗結(jié)果驗證了所提出方法的有效性,并且顯示所提出的方法的硬件開銷很低.在未來的工作中,我們將考慮在神經(jīng)網(wǎng)絡(luò)的Conv 層插入我們所提出的木馬.