基于木马的方式增强RRAM 计算系统的安全性∗

2021-11-09 02:45邹敏辉周俊龙汪成亮
软件学报 2021年8期
关键词:木马神经元芯片

邹敏辉 ,周俊龙 ,孙 晋 ,汪成亮

1(南京理工大学 计算机科学与工程学院,江苏 南京 210094)

2(重庆大学 计算机学院,重庆 400044)

随着深度学习技术的发展,神经网络已经在图像识别和自然语言处理方面取得了令人瞩目的成功.然而,神经网络运算属于数据密集型应用,它要求在计算单元和内存之间转移大量的数据,从而对传统的计算与内存相分离的冯诺伊曼计算机体系结构构成了严峻挑战,特别是对于能耗敏感的计算系统[1,2].新兴的忆阻器(RRAM)计算系统能够在内存中直接进行运算,因而在提高神经网络运算能效比上展示出了巨大的潜力.如图1(a)所示,一个RRAM 计算系统包含了许多个处理单元(PE),每一个处理单元由一个RRAM 交叉开关阵列和外围电路组成.RRAM 交叉开关阵列能够以O(1)的时间复杂度在阵列内部执行矩阵点乘序列运算(MVM)[3],因此消除了矩阵数据移动.神经网络运算主要集中在卷积(Conv)层和全连接(FC)层,而这两层的运算都可以转化为MVM 操作.因此,RRAM 计算系统能够提高神经网络运算的能效比.

Fig.1 Security threat of RRAM computing system图1 RRAM 计算系统的安全威胁

然而,随着芯片产业的设计与生产相分离,设计者设计的芯片可能会被生产厂商过度生产[4].RRAM 计算系统芯片同样受到此种威胁.RRAM 计算系统芯片的知识产权不仅在于其芯片设计,而且还包含部署在其中的神经网络模型.一方面,攻击者通过访问未授权的过度生产的RRAM 计算系统芯片,损害了设计者的权益;另一方面,攻击者通过访问未授权的RRAM 计算系统,收集大量的神经网络模型输入和输出,从而逆向工程训练出一个具有类似功能的神经网络模型[5].神经网络模型可能含有隐私信息,因此攻击者可能利用这些神经网络模型来造成进一步危害[6].

文献中提出了许多有效的保护芯片的授权使用的方法.总体来说,这些方法可以分为3 类:逻辑加锁、布局混淆和分离生产.逻辑加锁技术通常是在电路中插入专门的锁电路,锁电路与额外的密钥输入连接,只有输入正确的密钥时锁电路才被打开,例如随机加锁[4]、基于差错分析加锁[7]、基于强干扰加锁[8].布局混淆技术是指在电路中插入一些混淆单元,来对抗逆向工程的攻击[9,10].分离生产通常是指将电路分成前端(FEOL)和后端(BEOF),并交由不同的厂商生产,从而单独从FEOL 或BEOF 不能访问电路的完整功能[11,12].也有文献提出使用硬件木马的方式,在芯片设计中嵌入木马作为芯片水印来保护芯片的知识产权[13].本文中提出的方法与上述方法均不同,我们考虑到RRAM 计算系统的特性,提出在系统中嵌入基于神经元级别木马的额外硬件来保护芯片的授权使用.文献中也有提出在神经网络中嵌入木马的方法[14,15],但是这些方法需要重新训练整个神经网络,因此计算开销很大.并且,本文中所提出的木马是良性木马,极容易被激活,与传统的极难被激活的木马不一样.据我们所知,文献中很少有使用木马的方式保护RRAM 计算系统安全性的工作.

文献中也有一些工作提出了保护RRAM 计算系统安全性的方法,例如:对神经网络模型参数进行加密,只对授权用户进行解密[16];对涉及的数据进行增量加密的方法[17];在RRAM 交叉开关阵列对中插入一个混淆模块来隐藏阵列行之间的连接关系[18].然而,本文的威胁模型与这些工作不一样.这些工作的威胁模型是针对白盒攻击,即攻击者可以读取出存储于RRAM 设备的值;而本文针对的是黑盒攻击,如第2.2 节所述,即攻击者通过非法访问RRAM 计算系统,获取大量输入输出序列之后逆向工程提取出存储于RRAM 计算系统中的神经网络模型的方法.

本文的主要贡献如下:

(1) 首先,本文展示了神经元级别木马.当木马神经元未激活时,神经网络模型能够正常运行;当木马神经元激活时,神经网络模型的输出准确性受到影响,从而导致神经网络模型不能够正常运行.

(2) 其次,本文展示了如何在RRAM 计算系统中实现神经元级别木马的嵌入来增强系统的安全.如图1(b)所示,木马包括Trigger 部分和Payload 部分.我们利用RRAM 交叉开关阵列中未使用的RRAM 列作为Trigger,使得该木马极容易被触发.我们通过训练木马神经元与其所在网络层的下一层的神经元的突触参数(作为Payload),使得木马被激活时,RRAM 计算系统的准确性受到最大的影响.

(3) 最后,本文在实际的深度神经网络模型LeNet、AlexNet 和VGG16 中验证了所提出的木马设计的有效性,并且展示了木马的硬件开销.

本文第1 节介绍本文的威胁模型和动机.第2 节用一个示例神经网络介绍神经元级别木马的概念,并展示该木马对神经网络模型的影响.第3 节介绍通用的在RRAM 计算系统中实现神经元级别木马的嵌入来增强系统的安全的方法.第4 节介绍实验结果.第5 节是本文的结论.

1 预备知识、威胁模型和动机

1.1 预备知识

神经网络模型由输入层、输出层和隐藏层组成.隐藏层分为FC 层和Conv 层,本文只针对FC 层.FC 层的计算是MVM 运算,可以描述为

其中,xi为输入特征值,yi为输出特征值,wij为突触权重,m和n分别为参数矩阵的行数和列数.

在RRAM 计算系统中,最基本的硬件是RRAM 设备.单个RRAM 设备如图2(a)所示,其电导值随着其两端的电压或者通过其的电流的变化而变化.RRAM 的最大电导值和最小电导值分别以Gon和Goff表示.RRAM 设备的电导值从Goff到Gon的过程称为SET,从Gon到Goff的过程称为RESET.

Fig.2 Characteristics of RRAM devices and the structure of RRAM crossbar图2 RRAM 器件特性和RRAM 交叉开关阵列的组成

RRAM 设备的I-V 特征曲线如图2(b)所示,可以看到,RRAM 设备的RESET 过程具有渐变性.因此,理论上可以将RRAM 的电导值调整到从Goff到Gon之间的任意电导值.由RRAM 硬件组成的交叉开关矩阵结构能够执行MVM 操作.如图2(c)所示,输入为应用到RRAM 交叉开关阵列字线(WL)的电压(V),输出为在RRAM 交叉开关阵列的比特线(BL)累计的电流(I).由于在RRAM 计算系统中,计算中间值为数字信号,因此需要使用数模转换器(DAC)和模数转换器(ADC)来转化.输入电压、RRAM 交叉开关阵列中RRAM 的电导值和输出电流满足基尔霍夫定律,可以表示为

其中,gij为与wij对应的RRAM 设备的电导值.由于wij可以是正数、负数或者0,而电导值gij只能为正数,因此需要用一对RRAM 设备来表示wij,如式(3)所示.

1.2 威胁模型和动机

RRAM 计算系统芯片的知识产权不仅在于其芯片设计,而且还包含部署在其中的神经网络模型.攻击者通过访问未授权的过渡生产的RRAM 计算系统芯片,通过收集大量的输入和输出,从而逆向工程训练出一个具有类似功能的神经网络模型.本文将提出一种保护机制来防止未授权的RRAM 计算系统被正常使用.该防御方法基于良性木马(在本文剩余部分使用简称木马代替),当芯片启动时,木马即激活,此时RRAM 计算系统无法正常运行;只有当输入正确的密钥之后,RRAM 计算系统才能够正常运行.

1.3 定 义

定义1(神经元激活值).指神经网络模型中神经元的输入通过激活函数计算后的输出值.

定义2(木马激活概率).指木马神经元被激活的概率.

2 神经元级别木马

让我们以一个简单的神经网络模型作为示例展示.如图3 所示,一个简单神经网络,其功能是将一个4 比特的二进制数转换成一个十进制的数.

Fig.3 An example neural network and inserting a neuron-level Trojan in it图3 示例神经网络及在示例神经网络中插入神经元级别木马

该网络模型中只有3 层:一层输入层、一层隐藏层和一层输出层.我们将输入层的4 个神经元分别表示为I1,I2,I3 和I4,隐藏层的5 个神经元表示为H1,H2,…,H5 以及输出层的神经元表示为O1,O2,...,O16.二进制向量输入被送到输入层,并且神经元I1,I2,I3 和I4 分别得到输入向量的第1、第2、第3 和第4 位.我们选择Sigmoid函数作为H1,H2,…,H5 的激活函数.

我们用梯度下降法训练该网络模型的参数,训练之后,该网络模型的预测输出准确性如表1 第3 列所示,模型的预测准确率为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 示例神经网络不含木马神经元或者含木马神经元但木马神经元未激活的预测准确率与示例神经网络含有木马神经元并且木马神经激活的预测准确率对比

让我们在这个示例网络模型的隐藏层插入木马神经元T,如图3 所示,神经元T通过突触与其所在网络层的下一层的所有神经元O1,O2,...,O16 相连接.为了使得激活的木马神经元T能够影响模型的输出预测准确性,我们将木马神经元T和O1,O2,...,O16之间的突触权重设置为该层模型参数的取值范围内的随机值.假设我们能通过某种方式激活木马神经元T.当木马神经元T处于未激活状态时,T的输出为0,结果如表1 的第3 列所示,模型的预测准确率为16/16;当木马神经元T处于激活状态时,T的输出为1,结果如表1 的最后一列所示(颜色深的单元表示预测输出是错的),模型的预测准确率大大降低,仅为5/16.我们可以看到,激活的木马神经元极大地影响了示例网络模型的功能.

3 在RRAM 计算系统中实现神经元级别木马的嵌入来增强系统的安全

本文的目标是以木马的方式增强RRAM计算系统的安全,即:当木马未激活时,RRAM计算系统可以正常使用;当木马激活时,RRAM 计算系统不能够正常使用.本节展示了第2 节提到的神经元级别木马在RRAM 计算系统中的实现.木马的Trigger 部分是为了检测木马的输入,当木马输入满足条件时激活木马;木马的Payload 部分是激活的木马通过连接电路影响系统的运行.

3.1 设计Trigger部分

为了保护RRAM 计算系统不被未授权的用户正常访问,嵌入在RRAM 计算系统中的木马默认为允许激活状态,只有输入了正确的密钥之后,才能禁止该木马激活.因此,该木马的Trigger 部分必须保证木马能够很容易被激活.如图4(a)所示,假设神经网络的第n层和第n+1 层均为FC 层,第n−1 层、第n层和第n+1 层的神经元数量分别为p,q和r,则第n−1 层和第n层之间的参数矩阵以及第n层和第n+1 层之间的参数矩阵尺寸分别为p×q和表示第u层第v个神经元的激活值.为了方便讨论,我们假设所有神经元的bias均为0,并且所有的激活函数均为Sigmoid 函数.如图4(a)所示,我们在神经网络模型的第n层插入木马神经元T,该神经元的激活值用aT表示,该神经元与第n+1 层神经元的突触参数用w1,w2,…,wr表示.

Fig.4 Embedding neuron-level Trojans in RRAM computing system图4 在RRAM 计算系统中嵌入神经元级别木马

图4(b)展示了将图4(a)的部分神经网络映射到RRAM 交叉开关阵列中的方式.图4(b)中,虚线框内的RRAM 单元是被使用的,虚线框之外的RRAM 单元是空闲的,空闲的RRAM 行的WL输入为0.我们利用图4(b)中左边RRAM 交叉开关阵列中的最后一列中的RRAM 单元作为木马的Trigger,让我们把这些RRAM 单元称为Trigger RRAM 单元.Trigger RRAM 单元所在列的电流输出用iTri表示,则有:

为了让该木马神经元极容易被激活,我们提出使用感应放大器(SA)来取代Trigger RRAM 单元所在列的ADC.与ADC 不同的是,SA 只输出两种结果,即1 或者0.该SA 有两个基准电流iref1和iref2,只有当iref1≤iTri≤iref2时,SA 才输出0.SA 输出0 的概率为

当iTriiref2时,SA 输出1.SA 输出1 的概率为

神经元T的激活值aT可以表示为

其中,激活函数σ为

请注意,在本文中,由式(4)~式(7)可知,木马神经元T的激活函数的输入只能为1 或者0.因此,本文提出的方法不仅适用于Sigmoid 函数,也适用于其他激活函数,例如Relu等.由式(4)~式(8)可知,神经元的激活值aT只能为0 或者1:aT为0 表示木马神经元未激活;aT为1 表示木马神经元激活.当aT为0 时,神经元T通过突触w1,w2,…,wr对第n+1 层的神经元没有影响;当aT不为0 时,神经元T通过突触w1,w2,…,wr对第n+1 层的神经元才有影响.然而,由于RRAM 硬件的限制,神经元T的突触w1,w2,…,wr必须满足:

因此,为了放大神经元T通过突触w1,w2,…,wr对第n+1 层的神经元的影响,我们在系统中嵌入移位寄存器(SR),如图4(b)所示.

为了保证木马极容易激活,由式(5)、式(6)可知,iref1和iref2的间距应该足够小.在本文中,iref1和iref2均设置为0,因此,只有当iTri为0 时,T的激活函数输出为0,木马不激活;否则,木马激活.Trigger RRAM 单元的状态值可以通过读写电路,我们可以通过调整RRAM 单元的状态来决定木马是否能够被激活.

Trigger RRAM 单元处于禁止激活状态:当iTri在为任意值时都为0,木马不能被激活.由式(4)~式(8)可知,Trigger 不能够激活木马神经元T时,Trigger RRAM 单元所处的状态为

3.2 设计Payload部分

一旦木马神经元被激活,如图4(a)所示,木马突触就会将其激活率值传递给它所连接的每个神经元.我们将木马突触w1,w2,…,wr映射到图4(b)中右边RRAM 交叉开关阵列中最下两行中的RRAM 单元中,让我们把这些RRAM 单元称为Payload RRAM 单元.为了使得木马神经元激活时,整个RRAM 计算系统不能正常使用,我们期望通过设置w1,w2,…,wr的值,使得网络模型所有的输入指向同一个指定输出标签.将突触参数{w1,w2,…,wr}表示为ξ,用ξ*表示最优参数.假设目标标签预测输出向量是V*,我们期望在木马神经元激活时,网络模型的预测输出向量V总是等于向量V*.设计目标是如下目标函数:

损失函数如下所示:

其中,L表示损失量.我们使用梯度下降法来求解ξ*,梯度Δ通过以下等式计算:

请注意,我们的方法只需训练木马神经元T与第n+1 层神经元连接的r个突触参数,不需要重新训练整个神经网络的参数,因此效率很高.

3.3 木马的硬件开销

由上一节可知,在RRAM 计算系统中实现神经元级别木马需要RRAM 单元、SA 模块和SR 模块.

(1) 假设在RRAM 计算系统中,所有的RRAM 交叉开关阵列的尺寸均为H×W,其中,H和W分别为RRAM交叉开关阵列的行数和列数.当参数矩阵的尺寸大于RRAM 交叉开关阵列的尺寸时,需要将参数矩阵映射到多个RRAM 交叉开关阵列中.假设神经网络的第n层的参数矩阵需要映射到αn×βn个RRAM 交叉开关阵列中.当满足条件(15)时,表示有足够多的空余列容纳Trigger RRAM 单元,此时,Trigger RRAM 单元不增加额外的硬件开销:

当不满足条件(15)时,系统必须多分配βn个RRAM 交叉开关阵列,此时,Trigger RRAM 单元增加额外的硬件开销是βn个RRAM 交叉开关阵列.

假设神经网络的第n+1 层参数矩阵需要映射到αn+1×βn+1个RRAM 交叉开关阵列中.当满足条件(16)时,表示有足够多的空余行容纳Payload RRAM 单元,此时,Payload RRAM 单元不增加额外的硬件开销:

当不满足条件(16)时,系统必须多分配αn+1个RRAM 交叉开关阵列,此时,Payload RRAM 单元增加额外的硬件开销是αn+1个RRAM 交叉开关阵列.

(2) SA 模块的输入是模拟信号,输出是数字信号.如图5(a)所示,SA 模块可以由两个运算放大器和一个NAND 门组成.为了方便估计SA 模块的硬件开销,我们使用现有的模型分别统计组成运算放大器和NAND 门所需要的晶体管等元器件的数量.

Fig.5 SA module and SR module图5 SA 模块与SR 模块

(3) SR 模块的目的是为了放大激活的木马神经元的影响.如图5(b)所示,SR 模块由多个D 型触发器组成,例如一个8 比特的SR 由8 个D 型触发器组成.同样地,我们可以根据每一个D 型触发器所需要的晶体管等元器件的数量来估计SR 的硬件开销.

3.4 整个系统的框架

如图6 所示,神经网络模型在映射到RRAM 计算系统之前,我们先要选择木马要插入在网络模型的位置,然后根据木马所插入的位置来训练木马突触参数,之后再将含有木马的神经网络映射至RRAM 计算系统中.RRAM 计算系统在芯片设计过程中嵌入SA 模块和SR 模块.请注意,以上过程是离线的,即只需要执行一次.

Fig.6 Overview of the whole system framework图6 整个系统的框架概览

除了木马之外,RRAM 计算系统还需要嵌入一个授权模块.Trigger RRAM 单元默认处于允许激活状态.用户输入正确密钥时,授权通过,系统则发出写RRAM 指令,将Trigger RRAM 单元调整为禁止激活状态;否则,授权不通过,Trigger RRAM 单元的状态不变,仍处于允许激活状态.这个过程是在线的,即RRAM 计算系统每次被使用时都需要进行授权验证操作.为了更好地管理密钥,授权模块可使用PUF[20]实现给每一颗芯片分配不同密钥.

4 实验结果与分析

我们在LeNet[21]、AlexNet[22]和VGG16 这3 个实际的神经网络模型中实验了我们的方法.这些模型经过修改,在Cifar10 数据集上进行训练.这3 个网络模型均含有3 层FC 层,我们分别在每个网络模型的第1 层FC 层和第2 层FC 中插入我们所提出的木马.我们使用的RRAM 模型的最大电阻值和最小电阻值分别为200kΩ和500Ω[23],RRAM 交叉开关阵列的尺寸为256×256.SA 模块和SR 模块基于45nm 工艺模拟.

4.1 木马的极易激活性和极难误激活性

在该组实验中,首先,我们展示了本文所提出的木马在Trigger RRAM 单元处于允许激活状态时极容易被激活.我们测试了Cifar10 的所有10 000 张测试图片,并统计使得木马神经元T激活的输入的数量n1.木马激活概率为.结果见表2 中第2 列和第3 列,木马在3 个网络模型中均100%被激活,表明木马极其容易被激活,保证了未授权的RRAM 计算系统的功能不能够被正常使用.

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 未授权的RRAM 计算系统中木马的激活概率和授权的RRAM 计算系统中木马的误激活概率(%)

其次,要保证在授权使用的RRAM 计算系统,所嵌入的木马在Trigger RRAM 单元处于禁止激活状态时被误激活的概率极低.同样地,我们测试了Cifar10 的10 000 张测试图片,并统计使得木马神经元T激活的输入的数量n2.木马误激活概率为.结果见表2 中第4 列和第5 列,木马的误激活率为0%,表明木马极难被误激活,保证了授权的RRAM 计算系统的功能能够被正常使用.

4.2 基于木马的保护方法的有效性

在该组实验中,我们展示了木马分别处于激活和未激活状态时,RRAM 计算系统的输出预测准确性.我们选定训练木马突触的的目标向量V*为(1,0,0,…,0),即目标标签是Cifar10 的第1 个标签.木马未激活时,3 个网络模型的预测准确率见表3.

Table 3 Prediction accuracy of models with Trojan not triggered表3 木马未激活时模型的预测准确率

图7 展示了当木马处于激活状态时,网络模型的预测准确率.我们测试了将木马神经元输出激活值向左移位不同比特数时,各个模型的预测准确率.可以看到:

•当左移2 比特时,所有模型的预测准确率受到的影响较小,这是因为激活的木马神经元输出较小;

•当左移10 比特时,无论木马在第1 层FC 层还是第2 层FC 层,所有模型的预测准确率都低于15%,即未授权的RRAM 计算系统不能正常运行.

Fig.7 Prediction accuracy of models with left shifting different number of bits of the activation of the triggered Trojan neuron图7 激活的木马神经元的激活值向左移不同比特数时,模型的预测准确率

4.3 所提出方法的硬件开销

根据第3.3 节,我们评估了所提出的在RRAM 计算系统中嵌入的木马所需要的硬件资源开销,结果见表4.

Table 4 Hardware overhead of the embedded Trojan compared to that of the RRAM crossbars of the RRAM computing system表4 RRAM 计算系统中嵌入的木马的硬件开销相比于系统中的RRAM 交叉开关阵列的硬件开销

我们可以看到,对于AlexNet 和VGG16 来说,无论是将木马插入在模型的第1 层FC 层还是第2 层FC 层,木马所需的硬件开销相比于将网络模型映射到RRAM 计算系统中所需的RRAM 交叉开关阵列的硬件开销均低于4.5%.请注意,RRAM交叉开关阵列的面积以RRAM交叉开关阵列中RRAM设备的数量来估计.对于LeNet来说,因为其参数矩阵比较小,因此可以利用空闲的RRAM单元作为Trigger RRAM单元和Payload RRAM 单元,从而无需额外的RRAM 交叉开关阵列资源.LeNet 中的木马硬件开销主要来自SA 模块和RA 模块,但是这两个模块的面积仅占单个RRAM 交叉开关阵列的面积的不到1/10000;并且在RRAM 计算系统中,所有RRAM 交叉开关阵列的面积仅占整个系统的面积的不到2%[24].综上所述,木马的硬件开销占RRAM 计算系统的面积不到9/10000.因此可以说,我们所提出的木马,在RRAM 计算系统中的硬件开销非常小.

5 总结

由于芯片产业的设计与制造相分离,RRAM 计算系统系统芯片可能会被过度生产.未授权的RRAM 计算系统损害了芯片设计者的利益,并且容易被攻击者通过黑盒攻击的方法提取出存储在其中的神经网络模型,而神经网络模型的泄漏和滥用可能会造成更严重的危害.针对此种威胁,本文提出了一种基于神经元级别木马的方法来防止未授权的RRAM 计算系统被正常使用.当用户输入正确密钥时,嵌入在RRAM 计算系统中的木马极难被误激活,从而保证了授权的RRAM 计算系统的正常运行;当用户输入错误的密码时,嵌入在RRAM 计算系统中的密钥极容易被激活,从而保证了未授权的RRAM 计算系统不能够正常运行.在RRAM 计算系统中嵌入神经元级别木马不需要重新训练整个神经网络,而只需要训练极少数的参数,因此,我们的方法的效率很高.最后,我们在实际的深度神经网络模型LeNet、AlexNet 和VGG16 中进行了实验,实验结果验证了所提出方法的有效性,并且显示所提出的方法的硬件开销很低.在未来的工作中,我们将考虑在神经网络的Conv 层插入我们所提出的木马.

猜你喜欢
木马神经元芯片
芯片会议
小木马
骑木马
人体微芯片
关于射频前端芯片研发与管理模式的思考
小木马
跃动的神经元——波兰Brain Embassy联合办公
旋转木马
ERK1/2介导姜黄素抑制STS诱导神经元毒性损伤的作用
毫米波导引头预定回路改进单神经元控制