黄云帆,汤殿华,赵 伟,任 娟,尉小鹏
(1.中国电子科技集团公司第三十研究所,四川 成都 610041;2.保密通信重点实验室,四川 成都 610041)
同态加密技术是解决数据挖掘利用与隐私保护之间矛盾的关键技术之一,也为神经网络模型中的隐私保护问题提供了解决思路。
2007 年,Orlandi 等人[1]首先提出了一个将神经网络应用于同态加密的方案,但该方案具有较大的延迟,极大地限制了其实用性。2015 年,Shokri 等人[2]在CCS 2015 上提出了基于隐私保护的深度学习系统,允许参与者通过联合数据集的方式学习神经网络模型,但存在部分梯度值泄露的风险。
随着深度学习的不断进步,基于隐私保护的神经网络预测的研究也受到了广泛关注。2016 年,微软的Dowlin 等人[3]将全同态加密应用于神经网络,首次提出CryptoNets 模型,成为同态加密在深度神经网络应用上的一个里程碑。2017年,Hesamifard 等人[4]构建了CryptoDL 模型,用低次数的多项式函数近似激励函数来完成神经网络的训练,提供了高效、准确和可扩展的隐私保护预测。2018 年,Jiang 等人[5]提供了一个实用化的框架E2DM,在密文数据及模型下,支持模型在预测阶段的安全评估计算。2020 年,Al Badawi 等人[6]遵循CryptoNets 的框架,提出了第一个图形处理器(Graphics Processing Unit,GPU)加速同态卷积神经网络,将预测时间提升了40.41 倍。2021 年,纽约大学的Reagen 等人[7]为服务器端的同态深度神经网络提供了一套算法和硬件的优化方案框架Cheetah,用于提升神经网络的密文预测速度。国内对于基于同态加密的神经网络的研究起步较晚,2019 年,山东师范大学的王启正等人[8]设计了一种包含新的线性分段激励函数的隐私保护神经网络。2020 年,谢四江等人[9]提出了一种加密域下的卷积神经网络前向传播方法,可大幅度减少模型参数以及加密预测时延。同年,南开大学的张泽辉等人[10]将同态加密算法引入到联邦学习中,提出一种支持数据隐私保护的联邦深度神经网络模型。
本文主要研究卷积神经网络模型在预测阶段的隐私保护问题,结合同态加密技术,提出了密态神经网络预测模型的构建方法,并结合标准数据集完成模型的仿真实现,为用户的隐私数据提供保护。
本节主要对全文所需要的基础理论知识进行简单的介绍。
卷积神经网络是一种专门用来处理具有类似网格结构的经典深度神经网络模型,是一类包含卷积计算并且具有深度结构的前馈神经网络。卷积神经网络是为了解决图像识别问题而提出的,目前广泛应用于图像、视频、音频和文本数据。卷积神经网络的内部隐层主要类型如下文所述。
(1)卷积层。卷积层的每一个结点都使用上一层结点的输出子集向量x作为输入,选择一个权重向量ω和一个偏移值b,并输出权重和ωTx+b。
(2)激励层。激励层的每一个结点都使用上一层中某一个结点的输出x作为输入,选择激励函数f,并输出f(x)。
(3)池化层。池化层通常放在卷积层之间来进行降采样,降低矩阵维数,可以减少卷积层参数(权重值和偏移值)的维数,缩短训练时间,并控制过拟合,提高模型容错率。
(4)全连接层。全连接层与卷积层类似,但是全连接层的输入是上一层的全部结点,只需进行一次向量乘法,因此全连接层的运算量远小于卷积层。
(5)SoftMax 层。SoftMax 函数表达式为:,其中,ak为输入信号,yk为输出信号,n为本层神经元个数。
近几年,大量的同态加密方案[11-14]被提出,2017 年,Cheon 等人[15]提出了一种可以支持实数或者复数的近似运算的CKKS 同态加密方案,主要算法如下文所述。
(2)加密算法HE.Enc pk(m, Δ )。使用公钥对明文消息m进行加密,输出密文ct。
(3)解密算法HE.Dec sk(c)。使用私钥对密文c进行解密,输出明文m。
此外,CKKS 方案支持将一个数值向量v打包编码为一个环上的明文多项式m,此过程为编码过程,即,其逆变换过程为解码过程,即。
本文基于CKKS 同态加密方案构建了密态卷积神经网络,总体结构如图1 所示。整个密态神经网络结构主要包括数据拥有者、用户、云端服务器和密钥管理系统4 个主体。
数据拥有者拥有训练数据,负责提供训练阶段的数据。密钥管理系统依照CKKS 同态加密方案完成密钥的生成与分发。云端服务器拥有强大的存储和计算能力,负责明文训练和密文预测计算。用户提供密文预测数据,向云端服务器发起密文预期请求。
为了保证整个神经网络模型的准确率,在训练阶段,采用明文数据进行训练。本文设计的卷积神经网络训练模型的内部主要包含卷积层、激励层、池化层、卷积层、池化层、全连接层、激励层、全连接层和Softmax层9层结构,如图2所示。
初始化每一层的参数,将明文训练数据集作为输入,按照顺序计算隐层的输出,通过反向误差传播方法,更新每一层的参数,包括权重和阈值,再重新计算模型的输出值,当整个模型达到收敛的条件时,结束训练过程。
本文设计的卷积神经网络预测模型的内部主要包含卷积层、激励层、线性层、激励层和全连接层5 层结构,保障了与训练模型的等价性,如图3 所示。
密文预测模型将训练模型中连续的4 个包含线性运算的线性层(即池化层、卷积层、池化层和全连接层)等效合并为一个独立的线性层,提高了密文运算效率。此外,预测模型中删减了Softmax 层,直接对全连接层的运算结果进行等效输出,数值较大的就是密文预测的结果。
2.2.1 预测数据的编码与加密
为了最大限度地利用CKKS 同态加密方案的高效打包技术,并提高密文预测过程的吞吐量,选择对 /2N 幅图像同时进行密文预测(N为CKKS 方案中的参数, /2N 为明文槽的数量)。
将预测数据集的图像的像素值提炼为向量或者矩阵。将每个row 行col 列的图像数据矩阵按照Z 字形扁平化为一个维度为row col× 的行向量,将多个行向量组成一个矩阵后进行转置,使得矩阵的每一列对应一幅图像的所有像素值,如图4 所示。
对矩阵按行进行打包编码并加密,即表示将所有图像相同位置的像素值打包编码为一个明文多项式,然后使用CKKS 同态加密方案完成加密,最终得到一个包含row col× 个明文多项式的明文向量pData 和一个包含row col×个密文多项式的密文向量cData,其中 iptxt和 ictxt 分别为明文向量和密文向量中的元素,i = 0, …, row × col -1,如图5 所示。
2.2.2 密文卷积层的构建
密文卷积层的核心组件就是卷积核,假设单个卷积核的大小为d×d,那么可以将其表示为一 个维度为d2的向量,即令卷积核对应的偏移值为bias。由于本文模型侧重于保护用户的隐私图像数据,因此卷积核以及偏移值的参数可以作为明文多项式参与计算。
对于卷积核向量,需要将向量中的每一个值进行复制扩展变为一个 /2N维的向量,再使用CKKS 中的打包编码将其变为2d个明文多项式。同理,将偏移值bias同样扩展编码为一个明文多项式,具体过程如图6 所示。
对于有k个卷积核的卷积层,则按照上述编码方式,将多个卷积核向量iw和多个偏移值编码为卷积核多项式pwi和量。偏移值多项式。在密文域内,本文将结合卷积核与图像数据的编码形式,将卷积过程等价高效化。
首先,根据卷积核窗口大小以及步长大小,确定卷积核窗口每次滑动所对应的图像像素位置,将卷积窗口相同位置所对应的图像像素值打包视为一个向量,那么单个卷积核iw与图像的每一次卷积对应着一个包含d d× 个明文多 项式的图像数据向量也就是对应着一个包含d d× 个密文多项式向
其次,在保护用户图像数据的情况下,图像数据以密文形式,卷积核及偏移参数以明文形式参与卷积运算。密文域内单次卷积窗口的运算过程就是一个明文卷积参数向量ipw与密文向量ctxt的内积,再与明文偏移值ipb进行求和运算,得到一个密文内积值为cprod=pw i×ctxt+pbi。 这一步包含了d2次明密文乘法运算、d2- 1次同态加法运算以及1 次明密文加法运算。
根据步长大小、滑动卷积窗口,完成所有的卷积核窗口运算。随着卷积核滑动结束,单个卷积核iw的卷积运算结束,得到一个包含多个(数量与步长相关)密文内积值cprod的密文内积向量cprodi。
最后,按照上述相同方法,完成所有卷积核与密文图像的密文卷积运算,并将所有的密文内积向量cprodi(i= 0, …,k-1)聚合为一个密文矩阵CProd。
2.2.3 密文平方激励层的构建
在构建激励层时,使用了平方激励函数来替代原有的非线性激励函数。在平方激励层中,唯一的运算就是对网络上层的密文输出进行密文域的平方运算。CKKS 同态加密方案支持密文域的乘法运算,因此,可以直接完成对上层密文输出的激励运算,即CSquare=CProd×CProd,这一步表示对密文矩阵CProd中所有的密文进行平方运算,得到一个新的密文矩阵CSquare。
由于密文乘法运算会使密文的噪音变大,尺寸增长,因此,为了防止密文尺寸增长过,导致后续的运算开销大,需要对密文结果CSquare进行重线性化处理。本文构建的预测模型包含了两层平方激励层,其运算方式类似。
2.2.4 密文线性层的构建
在线性层中,所有的运算可以合并为一个参数矩阵和输入向量之间的运算。将上层输出的密文矩阵CSquare按照Z 字形扁平化为一个高维度的密文向量cinput,令其维度为v。根据深度神经网络训练模型,线性层的参数包含一个u v× 的参数矩阵W和一个维度为u的偏移值向量bias。
首先,需要对参数矩阵W以及偏移值向量bias进行编码。将矩阵W中的所有元素都编码为明文多项式,共有u v× 个明文多项式。其次,将偏移值向量bias的每一个元素扩展为一个维度为 /2N(即明文槽数量一致)的向量,并使用紧凑型编码方式对向量进行编码,得到u个明文多项式,如图7 所示。
在保护用户数据的情况下,上层输出的密文数据作为本层的输入,线性层的参数以明文的形式参与密文域的线性运算,完成明文矩阵pW与密文输入向量cinput的乘积运算,以及与偏移值向量pb的加法运算,即密文输出向量为coutput=pW×cinput+pb。
线性层的运算包含了u v× 次明密文乘法运算,u× (v- 1)次密文加法运算以及u次明密文加法运算,最终输出一个维度为u的密文向量coutput。将此密文向量输入平方激励层,完成密文平方运算,将得到一个维度为u的密文向量csquare。
2.2.5 密文全连接层的构建
密文全连接层与线性层的构建类似,唯一区别是全连接层没有偏移值参数,只包含一个维度为u′ u× 的矩阵参数W′。首先,对参数矩阵W′进行编码,将矩阵中的所有元素都扩展为一个维度为 /2N的向量,进而编码为明文多项式,即总共有u′ u× 个明文多项式矩阵pW′。
本层的输入是维度为u的密文向量csquare, 并与全连接层的明文参数矩阵pW′完成密文矩阵向量乘积运算,即,得到一个维度为u′的密文向量coutput′。
整个密文全连接层的运算包含了u′ u× 次 明密文乘法运算,u′× (u- 1)次密文加法运算, 得到本文模型的最终密文预测输出向量coutput′。
2.2.6 密文预测结果的解密与解码
对全连接层输出的密文向量coutput′进行解密,得到维度为u′的紧凑型编码明文向量poutput,由于poutput属于紧凑型编码的明文向量,对poutput的每一个元素进行解码操作,可以得到一个包含 /2N个元素的向量。最终对整个poutput向量进行解码操作,可以得到一个u′×N/2的明文矩阵OUT,解密解码具体过程如图8 所示。
解码后的明文矩阵OUT中的第i(i=0,1,…,u′)个行向量,可以等价视为预测输入图像被预测为手写数字i的概率大小。由于是将 /2N幅图像打包加密后输入到密文预测模型中,因此,第i个行向量包含了 /2N幅图像被预测为手写数字i的概率大小。
在明文域下,使用比较运算求得列向量的最大值,其所对应的手写数字类别则表示为该预测输入图像在密文预测模型中被预测出的类别。因此,从明文矩阵OUT中可以批量得到 /2N幅图像的预测类别,充分提高了模型吞吐量和密文预测效率。
针对以上构建的密态卷积神经网络模型,本文选择MNIST 标准数据集进行仿真实现与测试。选择安全参数λ= 128 bit ,多项式次数n= 8 192 的参数初始化CKKS 同态加密方案,以一次批量预测4 096 幅图像为例,在密文域完成预测分类过程,将图像分为10 个类别。
实验结果表明,本文构建的密态卷积神经网络的预测准确率高达98%以上,精确率和召回率均在97%以上。
此外,本文以明文下的同等深度的卷积神经网络模型为参考,将基于BFV 方案的CryptoNets密态神经网络模型与本项目的基于CKKS 方案的密态神经网络模型进行相关性能的对比,包括预测时间、准确率、通信量等。对比结果如表1所示。
表1 明密文深度神经网络模型性能对比
对比结果表明,在同等条件下,本文构建的密文神经网络模型与明文神经网络模型相比,预测准确性相差不大,但在预测时间上较明文预测模型提升了一个数量级,达到毫秒级别。尽管与CryptoNets 模型相比,在准确率和通信量上不具备明显优势,但由于本文模型中使用了批打包技术,使得单幅图像的密态神经网络分类预测时间大大缩短,具有明显优势。
同态加密技术可以为深度神经网络提供有效的隐私保护,一方面,可以保护用户数据的隐私;另一方面,可以保护深度学习模型数据的隐私。本文主要侧重于利用同态加密保障卷积神经网络预测阶段的用户数据的隐私性,事实上,结合安全多方计算、差分隐私等多种隐私保护技术,为深度神经网络系统提供隐私保护,会有更加明显的效率优势,也是当前研究的一个重要方向。