CN116150784A - 神经网络的安全保护方法、***、加速器及芯片 - Google Patents
神经网络的安全保护方法、***、加速器及芯片 Download PDFInfo
- Publication number
- CN116150784A CN116150784A CN202211719081.1A CN202211719081A CN116150784A CN 116150784 A CN116150784 A CN 116150784A CN 202211719081 A CN202211719081 A CN 202211719081A CN 116150784 A CN116150784 A CN 116150784A
- Authority
- CN
- China
- Prior art keywords
- data
- weight
- module
- decryption
- weight data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了神经网络的安全保护方法、***、加速器及芯片,涉及神经网络计算技术领域。所述方法包括:在神经网络加速芯片的生产阶段,将不同滤波器的权重数据组合成预设长度的单位块进行加密后,将加密权重数据烧录到芯片内存中,并将密钥写入芯片中的OTP模块;在芯片启动阶段,密钥直接在芯片内部通过硬件传递,并通过具有权重解密引擎的CNN加速器对获取的加密权重数据进行解密后,将解密权重数据直接输入到MAC阵列运算模块与输入特征数据进行神经网络卷积运算以得到输出,卷积运算时调用多个PE同步进行卷积运算。本发明极大地减小了信息传递和运行推理过程中被攻击的风险,保证了权重数据的安全性。
Description
技术领域
本发明涉及神经网络计算技术领域,尤其涉及一种神经网络的安全保护方法、***、加速器及芯片。
背景技术
随着人工智能技术的飞速发展,深度学习正成为机器学习领域中越来越重要的组成部分,而卷积神经网络(Convolutional Neural Network,简称CNN)是深度学习领域最为重要的工具之一,通常由具有可学习的权重和偏置常量的神经元组成,每个神经元都接收一些输入,并做一些点积计算,输出是每个分类的分数。CNN在机器视觉、视频监控、模式识别、大数据挖掘等领域都有着广泛的应用。目前常见的CNN模型中的卷积层层数从数层到数百层不等,每一层卷积层可以有多个通道(channel)的过滤器(filter),在一层卷积层中,每一批输入会与多个通道过滤器的权重(weight)进行计算,得到卷积计算结果,即输出。完成卷积计算后,卷积层输出结果之前还可以加上偏置,进行激活和量化操作。权重、输入和输出均可以为多维结构。
深度学***台上进行算法的移植,在芯片上加载CNN模型并进行运行推理。
在神经网络设计中,一个高性能的CNN模型往往需要付出昂贵的训练资源,比如模型训练用到的计算资源、人力资源和时间资源等,因此训练数据集、加速器、模型参数等通常都被视为CNN模型的知识产权(Intellectual Property,简称IP)并进行保护。其中,针对特定的识别任务,从海量的数据中耗费大量时间训练出来的权重参数被视为一种重要的知识产权。特别是在人脸识别等等涉及到国民信息安全的领域,经过终端训练出来的人脸特征,还具有隐私性,不能轻易的被泄露。对于芯片平台公司而言,如何保护这种离线训练好的权重参数,以避免在推理过程中被恶意软件所获取,是当前产业链合作中关于安全的重要考量因素。
另一方面,现有技术也提出了一些对CNN模型的IP进行保护的技术方案。作为举例,比如中国专利申请CN201910158611.1公开的一种深度神经网络的知识产权保护方案,包括:在训练神经网络时,使用特定的数字密匙进行加锁处理;在使用时,经前述处理过的神经网络必须要密匙配合,才能发挥正常的功能。其核心就是利用常用的数字加解密技术对训练数据样本进行加密保护,以防止未经授权的第三方访问,主要涉及的是训练数据集的IP保护。
再比如,中国专利ZL201910735898.X公开的一种对神经网络模型加密的方法,其核心就是利用加密算法对神经网络模型中的部分或全部模型信息——比如节点权重、节点的运算参数或属性参数以及节点的输入及输出等信息——进行加密,将加密后的模型文件转换为描述该神经网络的模型程序代码以发送到终端设备侧,一来服务器在向终端设备发送应用程序安装包时无需传输原模型文件,再则通过将加密的模型文件转换为模型程序代码极大提高了破解密文的难度,保证整个模型的安全。以及,中国专利申请CN202210018007.0公开的一种软硬件结合的卷积神经网络模型知识产权保护方法:对神经网络模型两次重训练构建子网和非子网,根据子网和非子网分布对部分加速器计算单元电路结构进行修改,修改后的加速器计算单元可根据一定的输入信号决定参与计算的权重或权重计算结果;同时,使用DRAM PUF建立与硬件对应的唯一性密钥,根据密钥的正确性生成不同的输入信号,若密钥正确,则生成的输入信号控制加速器计算单元电路的修改部分,选择模型的子网部分权重参与计算,所得结果为正确结果,模型正常使用;反之,生成的输入信号控制加速器计算单元电路的修改部分选择模型的全部权重参与计算,所得结果为错误结果,模型不可正常使用;该方案的核心是通过将神经网络模型与加速器特定硬件进行绑定来提高卷积神经网络模型的权重数据的安全性。上述方案侧重于对CNN模型本身进行保护,但在加速器推理过程中信息仍然可能被恶意软件获取,同时,密钥的传递也可能存在安全性问题。
发明内容
本发明的目的在于:克服现有技术的不足,提供了一种神经网络的安全保护方法、***、加速器及芯片。本发明提供的神经网络保护方案,在神经网络加速芯片的生产阶段,将不同过滤器的权重数据组合成预设长度的单位块进行加密后,将加密权重数据烧录到芯片内存中,并将密钥写入芯片中的OTP模块——具体的,加密密钥可以通过伪随机数加盐处理来实现每个芯片的密钥唯一化,该密钥在OTP中为软件不可读;同时配置本身支持权重解密的CNN加速器,CNN加速器内设置的权重解密引擎设置在MAC阵列之前,权重解密引擎从内存中读取权重数据进行解密后将解密数据直接送入MAC阵列中进行神经网络卷积运算,整个解密过程没有可编软件参与,极大地减小了信息传递和运行推理过程中被攻击的风险,保证了权重数据的安全性。另外,由于将解密模块直接集成到了CNN加速器中,使得该发明可以流水线的进行解密操作,基本不影响芯片卷积模块的性能。
为实现上述目标,本发明提供了如下技术方案:
一种神经网络的安全保护方法,其特征在于包括步骤:
在神经网络加速芯片的生产阶段,获取加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据,其中,在加密之前,根据所述加密算法的数据块分组长度S,通过数据组织模块对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组;通过烧录工具将加密权重数据烧录到芯片内存中,并将加密的密钥写入芯片中的一次性可编程OTP模块,所述OTP模块被配置为软件不可读;
在前述芯片的启动阶段,通过硬件控制器将芯片OTP模块中的密钥搬运至芯片的CNN加速器的密钥存储寄存器中;所述CNN加速器中设置有权重解密引擎和MAC阵列运算模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端,所述权重解密引擎用于获取前述密钥后对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块以与输入特征数据进行神经网络卷积运算以得到输出;
其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算。
进一步,将所述加密权重数据烧录到芯片的flash存储器中,解密时通过权重解密引擎实时从前述芯片的flash存储器中读取加密权重数据;
此时,所述权重解密引擎被配置为:从密钥存储寄存器中获取密钥,通过密钥对实时读取的加密权重数据进行流水线的解密以得到解密权重数据,将得到的解密权重数据实时输入到MAC阵列运算模块进行卷积运算。
进一步,所述数据组织模块包括数据采集子模块和数据交织子模块;
所述数据采集子模块被配置为:获取加密算法的数据块分组长度S和卷积神经网络支持的数据位宽L,以及获取权重数据;
所述数据交织子模块被配置为:根据前述数据块分组长度S和数据位宽L计算需要进行数据交织的过滤器数量M,将前述权重数据按照M组过滤器进行交织以组织成由单位长度为S的数据块单元组成的数据组,其中,权重数据以M组为单位交织在一起,对于不足M组的权重数据部分,不足部分用常数填充以补足形成M组;以及,将组织好的权重数据发送到加密模块;
所述加密模块能够按照选择的加密算法对接收的权重数据进行加密计算。
进一步,根据MAC阵列中PE配置的数据位宽来配置同步进行卷积运算的PE数量,前述数据位宽L等于PE配置的数据位宽;
此时,所述MAC阵列运算模块被配置为:根据解密权重数据的数据块单元长度S和数据位宽L计算需要同步的PE数量N,所述N=S/L;接收输入特征数据,以及接收解密权重数据,对于解密权重数据的每个S长度数据块单元,将一个数据块单元的数据平均拆分为N个数据段后作为输入同时广播到一列的N个PE的输入端,通过所述N个PE同步进行卷积运算。
进一步,所述加密算法为对称加密算法AES128,对应的数据块分组长度S为128比特,所述权重解密引擎包括AES128解密模块;
或者,所述加密算法为对称加密算法AES256,对应的数据块分组长度S为256比特,所述权重解密引擎包括AES256解密模块。
进一步,所述PE配置的定点数据位宽为4比特、8比特、16比特或者32比特,配置的浮点数据位宽为16比特或者32比特。
进一步,过滤器的权重数据W为与变量Co、Ci、Ky和Kx相关的函数,表示为W(Co,Ci,Ky,Kx),其中,Co表示输出通道信息,即过滤器信息;Ci表示输入通道信息;Ky表示卷积核的列信息;Kx表示卷积核的行信息;
此时,卷积运算公式表示如下:
本发明还提供了一种神经网络的安全保护***,所述***包括:
生产侧保护装置,用于获取神经网络加速芯片加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据;以及,通过烧录工具将加密权重数据烧录到芯片内存中,并将加密的密钥写入芯片中的一次性可编程OTP模块,所述OTP模块被配置为软件不可读;其中,生产侧保护装置包括数据组织模块,用于在加密之前,根据所述加密算法的数据块分组长度S,对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组;
运行侧保护装置,用于在芯片启动阶段,通过硬件控制器将芯片OTP模块中的密钥搬运至芯片的CNN加速器的密钥存储寄存器中;所述CNN加速器中设置有权重解密引擎和MAC阵列运算模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端,所述权重解密引擎用于获取前述密钥后对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块以与输入特征数据进行神经网络卷积运算以得到输出;其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算。
本发明还提供了一种神经网络加速器,用于对神经网络的命令进行硬件加速,包括输入特征接收模块、权重解密引擎、MAC阵列运算模块和数据输出模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端;
所述输入特征接收模块,用于接收输入特征数据,并发送至MAC阵列运算模块;
所述权重解密引擎,用于获取存储在芯片内存中的加密权重数据,以及从卷积神经网络CNN加速器的密钥存储寄存器中获取密钥,通过前述密钥对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块;其中,S表示加密算法的数据块分组长度,在加密之前,根据选择的加密算法的数据块分组长度S,通过数据组织模块对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组;
所述MAC阵列运算模块,用于接收权重解密引擎发送的解密权重数据,并将解密权重数据与输入特征数据进行神经网络卷积运算以得到输出;其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算;
所述数据输出模块,用于数据输出。
本发明还提供了一种神经网络加速芯片,包括内存模块、一次性可编程OTP模块、CNN加速器模块和硬件控制器模块;
在前述神经网络加速芯片的生产阶段,获取加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据,再通过烧录工具将加密权重数据烧录到前述内存模块中,并将加密的密钥写入前述OTP模块,所述OTP模块被配置为软件不可读;
在芯片的启动阶段,通过前述硬件控制器模块将前述OTP模块中的密钥搬运至芯片的CNN加速器模块的密钥存储寄存器中;
所述CNN加速器为前述的神经网络加速器。
本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:本发明提供的神经网络保护方案,在神经网络加速芯片的生产阶段,将不同过滤器的权重数据组合成预设长度的单位块进行加密后,将加密权重数据烧录到芯片内存中,并将密钥写入芯片中的OTP模块;同时配置本身支持权重解密的CNN加速器,CNN加速器内设置的权重解密引擎设置在MAC阵列之前,权重解密引擎从内存中读取权重数据进行解密后将解密数据直接送入MAC阵列中进行神经网络卷积运算,整个解密过程没有可编软件参与,极大地减小了信息传递和运行推理过程中被攻击的风险,保证了权重数据的安全性。
本发明提出了一套完整的安全保护方案,包括芯片生产阶段的芯片内部存储的保护、数据组织和数据加密,以及在芯片启动阶段通过CNN加速器自身进行权重解密、数据传输和同步卷积运算。一方面,神经网络的权重数据是离线加密的,并通过烧录工具烧写在芯片内存flash中,同时将密钥写入芯片OTP模块,该OTP软件不可读;芯片启动阶段,硬件控制器将OTP模块中的密钥直接搬运到CNN加速器的密钥存储寄存器中,也就是说,密钥直接在芯片内部通过硬件传递,可编的软件不可读,保证了密钥传递的安全性。另一方面,权重数据在CNN加速器的MAC阵列之前才会被解密,解密使用CNN加速器内部的权重解密模块,整个解密过程没有软件参与,减小了被攻击的截面,保证了权重数据的安全性。再一方面,加解密时对权重数据进行组织以形成由固定单位长度的数据块组成的组,并将CNN加速器的MAC阵列的输入组织为广播形式以实现多个计算单元对一个数据块的同步卷积运算,使得每个周期中多个PE能够同时处理广播出去的数据相关的运算,实现了块数据的同步卷积。进一步,整个解密过程是硬件流水线pipeline的实现,基本不会影响神经网络加速运算的效率。
附图说明
图1为本发明实施例提供的神经网络的安全保护方法的密钥传递示意图。
图2为本发明实施例提供的具有权重解密引擎的CNN加速器的模块结构示意图。
图3为本发明实施例提供的卷积运算示意图。
具体实施方式
以下结合附图和具体实施例对本发明公开的神经网络的安全保护方法、***、加速器及芯片作进一步详细说明。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。在下述实施例的附图中,各附图所出现的相同标号代表相同的特征或者部件,可应用于不同实施例中。因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需说明的是,本说明书所附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响发明所能产生的功效及所能达成的目的下,均应落在发明所揭示的技术内容所能涵盖的范围内。本发明的优选实施方式的范围包括另外的实现,其中可以不按所述的或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
实施例
本发明提供了一套完整的安全保护方案,包括生产时烧录工具的配置,芯片内部的存储保护及加密,以及卷积神经网络CNN加速器本身配置的安全解密引擎和广播形式的MAC阵列。具体的,本实施例提供的一种神经网络的安全保护方法,包括如下步骤S100和S200。
S100,在神经网络加速芯片的生产阶段,获取加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据。其中,在加密之前,根据所述加密算法的数据块分组长度S,通过数据组织模块对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组。在得到加密权重数据,就可以通过烧录工具将加密权重数据烧录到芯片内存(比如烧录到flash存储器)中,并将加密的密钥写入芯片中的一次性可编程OTP模块,参见图1所示。
所述OTP模块被配置为软件不可读。具体的,比如将加密密钥写入芯片的Efuse(一次性可编程存储器)中。芯片的Efuse通常用于存储修复数据和芯片信息,比如芯片电压字段、芯片版本号、芯片生产日期以及其他信息等,这个区域设置为软件(包括安全软件)不可见。
S200,在前述芯片的启动阶段,通过硬件控制器将芯片OTP模块中的密钥搬运至芯片的CNN加速器的密钥存储寄存器中。所述CNN加速器中设置有权重解密引擎和MAC阵列运算模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端,参见图2所示。所述权重解密引擎用于获取前述密钥后对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块以与输入特征数据进行神经网络卷积运算以得到输出。其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算。
优选地,本实施例提供的CNN加速器的权重解密引擎能够进行权重数据的实时解密和传输。解密时,通过CNN加速的权重解密引擎实时从芯片的flash存储器中读取加密权重数据,通过从密钥存储寄存器中获取的密钥对实时读取的加密权重数据进行流水线的解密以得到解密权重数据,将得到的解密权重数据实时输入到MAC阵列运算模块进行卷积运算。
本实施例中,所述加密算法采用块加密(block cipher)算法,优选地选择高级加密标准AES(Advanced EncryptionStandard)这样的对称加密算法,可以采用AES128或者AES256,加密和解密处理利用相同密钥。具体实施时,可以将伪随机加密数据流作为密钥,通过加密模块使用密钥对待加密数据(即明文数据)——权重数据进行加密,得到待加密数据加密后的结果(即密文数据)——加密权重数据。相应地,解密模块在获取到加密权重数据后,可以使用相同的密钥对加密权重数据进行解密,得到解密权重数据。采用块加密算法时,加密模块将明文数据分成多个等长的数据块(block),使用设定的算法和对称密钥对每组分别加密;解密模块则使用相同的密钥将密文数据解密为明文数据。
具体的,当加密算法为对称加密算法AES128,对应的数据块分组长度S就是128比特(bit),最小加密块是128比特,此时,加密之前需要将待加密数据先配置为长度为128比特的单位;对应的,所述权重解密引擎包括AES128解密模块,基于128比特的单位数据块(block)进行解密。当加密算法为对称加密算法AES256,对应的数据块分组长度S就是256比特,最小加密块是256比特,此时,加密之前需要将待加密数据先配置为长度为256比特的单位;对应的,所述权重解密引擎包括AES256解密模块,基于256比特的单位数据块(block)进行解密。
可以看出,为了实现权重数据的加解密,在数据加密之前需要先对权重数据进行处理以形成符合前述加密算法的加密操作的数据块。因此,本发明设置了一个数据组织模块,所述数据组织用于将卷积神经网络CNN的权重数据组织成相应的数据块单元。
具体设置时,所述数据组织模块可以包括数据采集子模块和数据交织子模块。
所述数据采集子模块被配置为:获取加密算法的数据块分组长度S和卷积神经网络支持的数据位宽L,以及获取权重数据。
所述数据交织子模块被配置为:根据前述数据块分组长度S和数据位宽L计算需要进行数据交织的过滤器数量M,将前述权重数据按照M组过滤器进行交织以组织成由单位长度为S的数据块单元组成的数据组,其中,权重数据以M组为单位交织在一起,对于不足M组的权重数据部分,不足部分用常数填充以补足形成M组;以及,将组织好的权重数据发送到加密模块。
所述加密模块,能够按照选择的加密算法对接收的权重数据进行加密计算。
下面以采用AES128为例详细描述权重数据的组织过程,此时,数据块分组长度S=128比特。卷积神经网络CNN中的每一层卷积层可以有多个通道(channel)的过滤器(filter),在一层卷积层中,每一批输入会与多个通道过滤器的权重数据(weightdate)进行计算,得到输出。卷积神经网络支持的数据位宽L,表示神经网络进行卷积运算时支持的数值的bit位,比如,如果一个神经网络支持16比特(bit)的定点数或者浮点数的计算,则数据位宽L=16比特;如果一个神经网络支持8比特(bit)的定点数或者浮点数的计算,则数据位宽L=8比特。
当L=16比特时,结合S=128比特可以计算需要进行数据交织的过滤器数量M=128/16=8,也就是说,要组成128比特的数据块,需要8组过滤器的权重数据(weight data)进行交织。此时,过滤器权重数据会打成8组为单位交织在一起,不足8组的部分,要填充常数以补足为8组。
当L=8比特时,结合S=128比特可以计算需要进行数据交织的过滤器数量M=128/8=16,也就是说,要组成128比特的数据块,需要16组过滤器的权重数据(weight data)进行交织。此时,过滤器权重数据会打成16组为单位交织在一起,不足16组的部分,要填充常数以补足为16组。
本实施例中,以二维卷积网格为例,过滤器的权重数据W为与变量Co、Ci、Ky和Kx相关的函数,可以表示为W(Co,Ci,Ky,Kx),其中,Co表示输出通道信息,即过滤器信息;Ci表示输入通道信息;Ky表示卷积核的列信息;Kx表示卷积核的行信息。以L=16比特的神经网络为例,需要将8组过滤器权重数据W(Co,Ci,Ky,Kx)交织组织在一起,形成由多个等长的、长度为128比特的数据块排布的数据组(不足8组的部分,要填充常数进行补充)。交织好的过滤器(权重数据)经过加密后存放在芯片内存中。解密时,权重解密引擎从芯片内存中读取出来,经过对应的AES解密模块进行流水线的解密后,送入CNN加速器的MAC(Multiplicationand Accumulation,乘加计算)阵列中以与输入特征数据完成神经网络运算。权重数据只有在MAC阵列之前才会被解密,解密过程没有软件参与。
对于CNN加速器,主要是完成输入权重数据与输入特征数据的乘累加运算(即卷积运算),由MAC阵列实现。MAC阵列是由阵列布置的多个乘累加运算模块组成,每一个乘累加运算模块称为一个计算单元PE(Processing Element)。目前,神经网络的计算单元PE一般可以支持数据位宽为4bit、8bit、16bit或者32bit的定点、数据位宽为16bit或者32bit的浮点的运算。可以看出,为了适应AES128的块解密方式,需要对CNN加速器的MAC阵列中的PE单元进行配置以完成对单位为128比特的数据的卷积运算。因此,本发明MAC阵列的PE列的输入被配置为广播形式,将权重数据的一个128比特单位(一个数据块单元的长度)作为输入同时广播到多个计算单元PE的输入端,以调用所述多个计算单元PE同步进行卷积计算,从而实现单位为128比特的数据的运算,参见图3所示。
具体实施时,可以根据MAC阵列中PE配置的数据位宽来配置同步进行卷积运算的PE数量,PE配置的数据位宽就决定了进行神经网络卷积运算时数值的位宽,即数据位宽L等于PE配置的数据位宽。此时,所述MAC阵列运算模块被配置为:根据解密权重数据的数据块单元长度S和数据位宽L计算需要同步的PE数量N,所述N=S/L,可知,同步的PE数量N等于交织的过滤器数量M;接收输入特征数据,以及接收解密权重数据,对于解密权重数据的每个S长度数据块单元,将一个数据块单元的数据平均拆分为N个数据段后作为输入同时广播到一列的N个PE的输入端,通过所述N个PE同步进行卷积运算。所述PE配置的定点数据位宽可以为8比特或者16比特,配置的浮点数据位宽可以为16比特或32比特。以S=128比特,N=8为例,即将128比特数据平均拆分为8个16比特的数据段后,将该8个16比特的数据段作为输入,分别同时广播到MAC阵列的一列的8个PE的输入端,每个PE的输入端接收一个数据段输入,从而调用所述8个PE同步与输入特征数据进行卷积运算。
以权重数据W(Co,Ci,Ky,Kx)为例,此时,卷积运算公式表示如下:
本发明提供的上述计算方案,将权重解密引擎集成到CNN加速器内,可以保证密钥传递和运行推理的安全。一方面,在芯片的生产阶段,神经网络的权重数据是离线加密的,并通过烧录工具烧写在芯片内存flash中,同时将加密的密钥key写入芯片的OTP模块,该OTP软件不可读。另一方面,在芯片的启动运行阶段,通过硬件控制器将OTP模块中的密钥key直接搬运到CNN加速器的AES 密钥存储寄存器中(在芯片启动时由硬件加载),也就是说,密钥直接在芯片内部通过硬件传递,可编的软件不可读。而且,权重数据在CNN加速器的MAC阵列之前才会被解密,解密使用CNN加速器内部的权重解密模块,整个解密过程没有软件参与,减小了被攻击的截面,保证了权重数据的安全性。
本发明的另一实施例,还提供了一种神经网络的安全保护***。
所述***包括生产侧保护装置和运行侧保护装置。
所述生产侧保护装置,用于获取神经网络加速芯片加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据;以及,通过烧录工具将加密权重数据烧录到芯片内存中,并将加密的密钥写入芯片中的一次性可编程OTP模块,所述OTP模块被配置为软件不可读;其中,生产侧保护装置包括数据组织模块,用于在加密之前,根据所述加密算法的数据块分组长度S,对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组。
所述运行侧保护装置,用于在芯片启动阶段,通过硬件控制器将芯片OTP模块中的密钥搬运至芯片的CNN加速器的密钥存储寄存器中;所述CNN加速器中设置有权重解密引擎和MAC阵列运算模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端,所述权重解密引擎用于获取前述密钥后对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块以与输入特征数据进行神经网络卷积运算以得到输出。
其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算。
其它技术特征参见在前实施例的描述,在此不再赘述。
本发明的另一实施例,还提供了一种神经网络加速器,用于对神经网络的命令进行硬件加速,所述神经网络加速器包括输入特征接收模块、权重解密引擎、MAC阵列运算模块和数据输出模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端。
所述输入特征接收模块,用于接收输入特征数据,并发送至MAC阵列运算模块。
所述权重解密引擎,用于获取存储在芯片内存中的加密权重数据,以及从卷积神经网络CNN加速器的密钥存储寄存器中获取密钥,通过前述密钥对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块;其中,S表示加密算法的数据块分组长度,在加密之前,根据选择的加密算法的数据块分组长度S,通过数据组织模块对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组。
所述MAC阵列运算模块,用于接收权重解密引擎发送的解密权重数据,并将解密权重数据与输入特征数据进行神经网络卷积运算以得到输出;其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算。
所述数据输出模块,用于数据输出。
其它技术特征参见在前实施例的描述,在此不再赘述。
本发明的另一实施例,还提供了一种神经网络加速芯片。
所述神经网络加速芯片包括内存模块、一次性可编程OTP模块、CNN加速器模块和硬件控制器模块。
在前述神经网络加速芯片的生产阶段,获取加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据,再通过烧录工具将加密权重数据烧录到前述内存模块中,并将加密的密钥写入前述OTP模块,所述OTP模块被配置为软件不可读。
在芯片的启动阶段,通过前述硬件控制器模块将前述OTP模块中的密钥搬运至芯片的CNN加速器模块的密钥存储寄存器中。
所述CNN加速器为在前所述的神经网络加速器。
其它技术特征参见在前实施例的描述,在此不再赘述。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (10)
1.一种神经网络的安全保护方法,其特征在于包括步骤:
在神经网络加速芯片的生产阶段,获取加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据,其中,在加密之前,根据所述加密算法的数据块分组长度S,通过数据组织模块对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组;通过烧录工具将加密权重数据烧录到芯片内存中,并将加密的密钥写入芯片中的一次性可编程OTP模块,所述OTP模块被配置为软件不可读;
在前述芯片的启动阶段,通过硬件控制器将芯片OTP模块中的密钥搬运至芯片的CNN加速器的密钥存储寄存器中;所述CNN加速器中设置有权重解密引擎和MAC阵列运算模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端,所述权重解密引擎用于获取前述密钥后对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块以与输入特征数据进行神经网络卷积运算以得到输出;
其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算。
2.根据权利要求1所述的方法,其特征在于:将所述加密权重数据烧录到芯片的flash存储器中,解密时通过权重解密引擎实时从前述芯片的flash存储器中读取加密权重数据;
此时,所述权重解密引擎被配置为:从密钥存储寄存器中获取密钥,通过密钥对实时读取的加密权重数据进行流水线的解密以得到解密权重数据,将得到的解密权重数据实时输入到MAC阵列运算模块进行卷积运算。
3.根据权利要求1所述的方法,其特征在于:所述数据组织模块包括数据采集子模块和数据交织子模块;
所述数据采集子模块被配置为:获取加密算法的数据块分组长度S和卷积神经网络支持的数据位宽L,以及获取权重数据;
所述数据交织子模块被配置为:根据前述数据块分组长度S和数据位宽L计算需要进行数据交织的过滤器数量M,将前述权重数据按照M组过滤器进行交织以组织成由单位长度为S的数据块单元组成的数据组,其中,权重数据以M组为单位交织在一起,对于不足M组的权重数据部分,不足部分用常数填充以补足形成M组;以及,将组织好的权重数据发送到加密模块;
所述加密模块能够按照选择的加密算法对接收的权重数据进行加密计算。
4.根据权利要求3所述的方法,其特征在于:根据MAC阵列中PE配置的数据位宽来配置同步进行卷积运算的PE数量,前述数据位宽L等于PE配置的数据位宽;
此时,所述MAC阵列运算模块被配置为:根据解密权重数据的数据块单元长度S和数据位宽L计算需要同步的PE数量N,所述N=S/L;接收输入特征数据,以及接收解密权重数据,对于解密权重数据的每个S长度数据块单元,将一个数据块单元的数据平均拆分为N个数据段后作为输入同时广播到一列的N个PE的输入端,通过所述N个PE同步进行卷积运算。
5.根据权利要求4所述的方法,其特征在于:所述加密算法为对称加密算法AES128,对应的数据块分组长度S为128比特,所述权重解密引擎包括AES128解密模块;
或者,所述加密算法为对称加密算法AES256,对应的数据块分组长度S为256比特,所述权重解密引擎包括AES256解密模块。
6.根据权利要求4所述的方法,其特征在于:所述PE配置的定点数据位宽为4比特、8比特、16比特或者32比特,配置的浮点数据位宽为16比特或者32比特。
8.一种神经网络的安全保护***,其特征在于包括:
生产侧保护装置,用于获取神经网络加速芯片加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据;以及,通过烧录工具将加密权重数据烧录到芯片内存中,并将加密的密钥写入芯片中的一次性可编程OTP模块,所述OTP模块被配置为软件不可读;其中,生产侧保护装置包括数据组织模块,用于在加密之前,根据所述加密算法的数据块分组长度S,对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组;
运行侧保护装置,用于在芯片启动阶段,通过硬件控制器将芯片OTP模块中的密钥搬运至芯片的CNN加速器的密钥存储寄存器中;所述CNN加速器中设置有权重解密引擎和MAC阵列运算模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端,所述权重解密引擎用于获取前述密钥后对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块以与输入特征数据进行神经网络卷积运算以得到输出;其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算。
9.一种神经网络加速器,用于对神经网络的命令进行硬件加速,其特征在于:包括输入特征接收模块、权重解密引擎、MAC阵列运算模块和数据输出模块,权重解密引擎的输出端连接所述MAC阵列运算模块的输入端;
所述输入特征接收模块,用于接收输入特征数据,并发送至MAC阵列运算模块;
所述权重解密引擎,用于获取存储在芯片内存中的加密权重数据,以及从卷积神经网络CNN加速器的密钥存储寄存器中获取密钥,通过前述密钥对加密权重数据进行解密以得到解密权重数据,该解密权重数据为S长度数据块单元组成的数据组,将所述解密权重数据直接输入MAC阵列运算模块;其中,S表示加密算法的数据块分组长度,在加密之前,根据选择的加密算法的数据块分组长度S,通过数据组织模块对CNN中不同的过滤器的权重数据进行组织以将权重数据构造为单位长度为S的数据块单元组成的数据组;
所述MAC阵列运算模块,用于接收权重解密引擎发送的解密权重数据,并将解密权重数据与输入特征数据进行神经网络卷积运算以得到输出;其中,所述MAC阵列包括呈阵列布置的多个计算单元PE,在进行卷积运算时,按照前述解密权重数据的数据块单元的长度S,将一个数据块单元的数据作为输入同时广播到MAC阵列的一列的多个PE的输入端,以调用所述多个PE同步进行卷积运算;
所述数据输出模块,用于数据输出。
10.一种神经网络加速芯片,其特征在于:包括内存模块、一次性可编程OTP模块、CNN加速器模块和硬件控制器模块;
在前述神经网络加速芯片的生产阶段,获取加载的卷积神经网络CNN的权重数据,通过加密算法对权重数据进行离线加密得到加密权重数据,再通过烧录工具将加密权重数据烧录到前述内存模块中,并将加密的密钥写入前述OTP模块,所述OTP模块被配置为软件不可读;
在芯片的启动阶段,通过前述硬件控制器模块将前述OTP模块中的密钥搬运至芯片的CNN加速器模块的密钥存储寄存器中;
所述CNN加速器为权利要求9所述的神经网络加速器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211719081.1A CN116150784B (zh) | 2022-12-30 | 2022-12-30 | 神经网络的安全保护方法、***、加速器及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211719081.1A CN116150784B (zh) | 2022-12-30 | 2022-12-30 | 神经网络的安全保护方法、***、加速器及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116150784A true CN116150784A (zh) | 2023-05-23 |
CN116150784B CN116150784B (zh) | 2023-09-05 |
Family
ID=86340083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211719081.1A Active CN116150784B (zh) | 2022-12-30 | 2022-12-30 | 神经网络的安全保护方法、***、加速器及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116150784B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107885509A (zh) * | 2017-10-26 | 2018-04-06 | 杭州国芯科技股份有限公司 | 一种基于安全的神经网络加速器芯片架构 |
CN109981252A (zh) * | 2019-03-12 | 2019-07-05 | 中国科学院信息工程研究所 | 一种基于关键路径加密的人工智能处理器安全增强***及方法 |
US20200019843A1 (en) * | 2017-03-24 | 2020-01-16 | Institute Of Computing Technology | Weight management method and system for neural network processing, and neural network processor |
CN111859415A (zh) * | 2020-06-18 | 2020-10-30 | 上海艾麒信息科技有限公司 | 神经网络模型加密***和方法 |
CN115759213A (zh) * | 2022-09-05 | 2023-03-07 | 北京大学深圳研究生院 | 一种用于一维卷积的卷积神经网络协处理器 |
CN115803754A (zh) * | 2020-03-10 | 2023-03-14 | 艾普半导公司 | 用于在神经网络中处理数据的硬件架构 |
CN116488788A (zh) * | 2023-04-11 | 2023-07-25 | 胡雅婷 | 全同态加密算法的硬件加速器、同态加密方法及电子设备 |
-
2022
- 2022-12-30 CN CN202211719081.1A patent/CN116150784B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200019843A1 (en) * | 2017-03-24 | 2020-01-16 | Institute Of Computing Technology | Weight management method and system for neural network processing, and neural network processor |
CN107885509A (zh) * | 2017-10-26 | 2018-04-06 | 杭州国芯科技股份有限公司 | 一种基于安全的神经网络加速器芯片架构 |
CN109981252A (zh) * | 2019-03-12 | 2019-07-05 | 中国科学院信息工程研究所 | 一种基于关键路径加密的人工智能处理器安全增强***及方法 |
CN115803754A (zh) * | 2020-03-10 | 2023-03-14 | 艾普半导公司 | 用于在神经网络中处理数据的硬件架构 |
CN111859415A (zh) * | 2020-06-18 | 2020-10-30 | 上海艾麒信息科技有限公司 | 神经网络模型加密***和方法 |
CN115759213A (zh) * | 2022-09-05 | 2023-03-07 | 北京大学深圳研究生院 | 一种用于一维卷积的卷积神经网络协处理器 |
CN116488788A (zh) * | 2023-04-11 | 2023-07-25 | 胡雅婷 | 全同态加密算法的硬件加速器、同态加密方法及电子设备 |
Non-Patent Citations (1)
Title |
---|
靳松等: "一种面向忆阻器平台的神经网络模型保护方法", 《 计算机学报》 * |
Also Published As
Publication number | Publication date |
---|---|
CN116150784B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8855298B2 (en) | Table lookup operation on masked data | |
CA2373432C (en) | Block cipher apparatus using auxiliary transformation | |
CN105940439B (zh) | 使用排列应对对密码算法的旁通道攻击的对策 | |
CN1993922B (zh) | 流密码组合***和方法 | |
US7822797B2 (en) | System and method for generating initial vectors | |
US8094816B2 (en) | System and method for stream/block cipher with internal random states | |
US20030223580A1 (en) | Advanced encryption standard (AES) hardware cryptographic engine | |
CN110677236B (zh) | 一种基于复合混沌***与异或运算的ofdm加密方法 | |
CN108964872B (zh) | 一种基于aes的加密方法及装置 | |
CN102204158A (zh) | 低等待时间的分块密码术 | |
US20060104438A1 (en) | Method for making secure an electronic entity with encrypted access | |
WO2005091550A1 (en) | Data obfuscation | |
KR102169369B1 (ko) | 경량 블록 암호화에 대한 1차 부채널 공격에 대응하는 방법 및 이를 이용한 장치 | |
CN111310222A (zh) | 文件加密方法 | |
CN104378196A (zh) | 加解密算法的安全执行方法和装置 | |
CN1288568C (zh) | 具有加密/解密功能的半导体集成电路 | |
CN116846542A (zh) | 一种数据加密和解密方法、装置及电子设备 | |
US8995666B2 (en) | Key scheduling device and key scheduling method | |
CN114390317B (zh) | 面向流式传输视频的加密方法及*** | |
EP2904731B1 (en) | Method and device for digital data blocks encryption and decryption | |
KR100458339B1 (ko) | 해독화방법및전자기기 | |
CN116150784B (zh) | 神经网络的安全保护方法、***、加速器及芯片 | |
US20040234073A1 (en) | Encryption method | |
US6301361B1 (en) | Encoding and decoding information using randomization with an alphabet of high dimensionality | |
EP2051435B1 (en) | High-efficient encryption and decryption processing method for implementing SMS4 algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |