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