一种基于可信执行环境的联邦学习方法与流程

专利2022-06-30  68


本发明属于数据安全领域,具体为一种基于可信执行环境的联邦学习方法。



背景技术:

基于隐私数据的机器学习在实际应用中取得了很好的效果,许多公司例如google、facebook、apple等都从用户那搜集海量训练数据并应用强大的gpu计算能力来部署深度学习算法。为了得到一个更深层次的模型,很多公司都愿意搜集互补数据,协作训练。但是,这种通过直接集合多用户的原始数据集来训练机器学习模型的方法隐藏着巨大的挑战:隐私数据安全、数据投毒、数据量谎报等问题。

于2018年10月30日公开的公开号为cn108717514a的发明专利公开了一种机器学习中数据隐私保护方法和系统,其首先选择需要应用的加密算法及系统参数,生成密钥;接着对原始数据进行加密,产生相应的密文数据;然后使用密文数据对需要使用的机器学习模型进行训练和参数调整,得到最优的机器学习模型;最后对产生的密钥进行加密,输出最优的机器学习模型并得到预测或分类结果。该发明能够保护原始数据和机器学习模型,使得机器学习的效率较高并且有较好的延展性,但是并没有考虑训练结果的真实性和谎报数据量等问题,不能保证训练的完整性。

于2019年3月1日公开的公开号为cn109416721a的发明专利公开了一种多方隐私保护机器学习系统。其系统具有包括至少一个受保护的存储器区域的可信执行环境。在系统处的代码加载器将从多方中的至少一方接收的机器学习代码加载到受保护的存储器区域中。数据上传器将从多方中的至少一方接收的机密数据上传到受保护的存储器区域。可信执行环境使用至少一个数据不经意程序来执行机器学习代码以处理机密数据并且将结果返回给多方中的至少一方,其中数据不经意程序是其中任何的存储器访问的模式、磁盘访问的模式和网络访问的模式使得无法从模式预测机密数据的过程。同样地,其系统很好的保护了隐私数据,但是同样没有解决训练结果的真实性和谎报数据量这一问题。

因此,如何在保护好隐私数据的前提下,防止用户谎报训练结果和谎报数据量并协作训练出一个性能良好的模型,是目前需要解决的问题。



技术实现要素:

为了解决现有技术所存在的问题,本发明提供一种基于可信执行环境的联邦学习方法,利用可信执行环境生成安全区,用户无法绕过训练过程而直接给出训练结果,并且该可信执行环境通过给训练结果、学习算法以及用户身份提供签名认证,使得非诚信用户难以存在,从而实现训练完整性和用户隐私保护。

本发明采用以下技术方案来实现:一种基于可信执行环境的联邦学习方法,包括以下步骤:

s1、基于可信执行环境生成安全区;

s2、本地用户向云端提出下载初始化的模型参数的请求,云端回应请求并发送初始化的模型参数;

s3、本地用户将训练算法、训练数据集、训练数据例子数和云端传回的初始化的模型参数加载到安全区内,执行训练算法在本地进行训练,得到训练后的模型参数梯度;本地用户利用训练后的模型参数梯度、训练算法和模型集成算法生成数字签名,并利用数字签名和本地中央处理器芯片的硬件信息,通过群签名算法进行本地用户身份认证,最终本地用户将训练后的模型参数梯度、模型集成算法及本地用户身份认证上传到云端;

s4、云端回应本地用户的上传请求,并对本地用户身份认证进行验证,验证成功后,云端获取本地用户上传的训练后的模型参数梯度及模型集成算法,置于云端安全区内,对模型进行集成,更新模型参数梯度;利用更新后的模型参数梯度生成数字签名,再结合云端中央处理器芯片的硬件信息,通过群签名算法生成云端身份认证信息;模型集成结束后,返回云端身份认证信息和更新后的模型参数梯度。

本发明首先基于可信执行环境生成安全区,参与者通过生成安全区在云端进行验证并建立安全通道;随后从云端下载初始化的模型参数并在本地进行训练,将训练完成后的梯度参数和数字签名上传到云端,云端验证数字签名后更新梯度;最后参与者从云端下载已更新的梯度并修改本地参数。与现有技术相比,本发明具有如下优点和有益效果:

1、本发明提供一种支持联合深度学习的训练算法,用户单独训练神经网络,在不泄露自身数据集的同时,还能够获益于其他用户训练的结果,应用场景更加广泛。

2、本发明基于可信执行环境,提供了训练集成的协议,应用于保护隐私的训练算法,使得云端可以识别非诚信用户,保证各方正确执行训练算法。

3、针对恶意用户虚报训练结果,可使用本发明技术可抵御恶意攻击,并保证非恶意用户能够实现多方学习,共同训练出性能良好的机器学习模型。因此,本发明在受到恶意用户攻击的情况下,仍能保障用户的隐私安全和训练的完整性。

附图说明

图1是本发明联邦学习方法的流程图;

图2是本发明安全区的架构图;

图3是本发明一个实施例中抵抗一般性攻击的实验效果图;

图4是本发明一个实施例中抵抗目标性攻击的实验效果图。

具体实施方式

为使本发明的目的、技术方案更加清楚明白,以下结合附图及实施例对本发明进行详细说明,但本发明的实施方式不限于此。

实施例

基于大规模数据进行深度学习模型的训练是普遍的方案。本发明需要解决两个关键问题,如何利用数据的同时保障用户隐私不被泄露以及如何防止用户对数据造假。例如:用户想要得到一个手写数字识别的模型,用户可以在本地安全区内做训练,然后将生成的模型发送给云端,其他用户执行同样的操作,如此反复,最终用户通过云端下载,便可以得到模型。本发明相关的一些基本概念为:

(1)深度学习:深度学习致力于从高维数据中提取特征并使用其生成一个从输入映射输出的模型。多层感知机是最常见的神经网络模型。在多层感知机里,每个隐藏层节点的输入是前一层网络的输出(加上了偏置),各个隐藏层节点计算它的带权输入均值,隐藏层节点的输出是非线性激活函数的运算结果。对神经网络的权重学习是一个非线性优化问题,在监督学习中,目标函数是训练例子正向传播的错误输出,梯度下降算法常被用于解决该优化问题。在用户的每一轮训练里,训练者借助训练数据计算非线性目标函数的梯度并更新权重来减小梯度。经过多轮训练,模型将达到本地最优。

(2)随机梯度下降:模型参数的梯度可以根据训练数据逐渐下降。常见的梯度下降算法有批次梯度下降算法、随机梯度下降算法。批次梯度下降算法在较大数据集训练中,效率过低。随机梯度下降算法仅需要数据集的一小部分就可以完成梯度下降。定义es为训练批次s后的损失函数,θ为多层感知机的权重集合,η为学习率,θt-1为第t轮训练权重集合。随机梯度更新的定义:

(3)英特尔sgx:sgx是一个指令集,允许应用在它们的地址空间内产生受保护的存储区域。这个区域称之为安全区,与操作系统和系统管理程序隔离。处理器监控所有进入安全区的内存访问,只有安全区内的代码可以访问安全区的数据。在处理器的缓存中,安全区内存以明文存在,但写入系统主存时,则以加密形式存储。sgx还支持认证和密封。存储在安全区内的数据可以利用sgx的密钥生成信息签名,从而实现身份认证。

(4)群签名:基于可信执行环境的运算输出是防干扰的。对于任意一个概率多项式敌手模型a,敌手模型a与可信执行环境的处理器发生交互,中断程序或者使程序输入错误的结果并产生数字签名的可能性是微乎其微的。

(5)联邦学习:联邦学习是一个机器学习框架,能有效帮助多个机构在满足用户隐私保护、数据安全和政府法规的要求下,进行数据使用和机器学习建模。

本发明实现了一种新的保护隐私和保障训练完整性的联邦学习方案,以保障深度学习过程的完整性;如图1所示,本发明包括以下步骤:

s1、基于可信执行环境生成安全区,在中央处理器内分配内存,用于存储安全区。

中央处理器执行“添加”指令并在其内部分配内存,用于存储安全区。

s2、本地用户向云端提出下载初始化的模型参数的请求,云端回应请求并发送初始化的模型参数。

s3、本地用户将训练算法、训练数据集、训练数据例子数和云端传回的初始化的模型参数加载到安全区内,执行训练算法(是前向反馈神经网络算法,本实施例为随机梯度下降算法)在本地进行训练,得到训练后的模型参数梯度;本地用户利用训练后的模型参数梯度、训练算法和模型集成算法生成数字签名,并利用数字签名和本地英特尔中央处理器芯片产品编码等相关硬件信息,通过群签名算法(如epid群算法)生成本地用户身份认证(也叫本地安全区身份认证),最终用户将训练后的模型参数梯度、模型集成算法及本地用户身份认证上传到云端。

步骤s3在本地训练时,生成用户数字签名,并和其他信息(例如本地芯片的产品编码)共同组成本地安全区身份认证。模型集成算法用于将各个机器模型集成为一个当前最优模型。

s4、模型集成,云端回应本地用户的上传请求,并对本地用户身份认证进行验证,验证成功后,云端获取本地用户上传的训练后的模型参数梯度及模型集成算法,置于云端安全区内,对模型进行集成,更新模型参数梯度;利用更新后的模型参数梯度生成数字签名,再结合云端中央处理器芯片产品编码等相关硬件信息,通过群签名算法进行身份认证,生成云端身份认证信息;模型集成结束后,返回云端身份认证信息和更新后的模型参数梯度。参与模型集成的各方从云端下载已更新的模型参数梯度并修改本地的模型参数梯度。

也就是说,步骤s4中云端对本地用户身份认证进行验证,一旦验证成功,将用户上传的训练后的模型参数梯度加载到云端安全区内,进行模型聚合,得到新聚合的模型之后,在云端生成身份认证信息。身份认证信息在本地用户端需要生成一次,在云端也需要生成一次。本地用户需要生成身份认证信息来证明模型训练的真实性,同时提供参与训练的资格证明。而云端本身是不可信的,它也需要生成身份认证信息来证明集成操作的真实性,同时提供参与集成的资格证明。

如图2所示,训练数据的参与者(如本地用户)通过生成安全区(enclave)在云端进行身份验证并建立安全通道。本实施例使用英特尔sgx技术在英特尔中央处理器上生成硬件层面上的安全区,未经用户许可,安全区与非安全区的数据交互无法实现;通过英特尔sgx内部的群签名算法epid,自动生成身份认证信息。本地用户使用sgx生成安全区后向云端发送下载请求,获得云端的许可后,本地用户得到云端的模型参数。本地用户在应用内部调用安全区访问接口(ecall),将本地手写数字图片、图片数目和云端传回的模型参数作为接口输入,之后安全区将本地手写数字图片、图片数目和云端传回的模型参数作为深度学习算法的输入,通过随机梯度下降算法对模型参数进行调整,最终输出已更新的模型参数。

用户在本地安全区内使用epid群签名算法,根据用户身份、深度学习算法和模型参数生成一个身份认证;最终用户安全区将更新的模型参数和身份认证通过安全通道,一起上传到云端的安全区。

在本实施例中,联邦学习方法的具体流程如下:

(1)加载深度学习算法的学习程序prog到内存空间mem,安全区enclave负责为学习程序prog分配安全区内存空间mem;

(2)将手写数字图片集d和当前模型参数θ作为输入,在安全区运行学习程序prog以执行深度学习算法,获得更新的模型参数梯度g,并更新内存空间mem;

(3)本地安全区运行其可信执行环境的群签名算法epid,将安全区身份标识eid、深度学习算法的学习程序prog和更新后的模型参数梯度g作为输入,生成本地身份认证信息σ;

云端接受用户上传请求并对用户身份进行验证,获取用户的模型参数梯度g,与模型集成算法的运行程序prog′一同加载入云端安全区,最终对模型参数梯度g、模型集成算法的运行程序prog′、云端身份eid′进行群签名,返回云端身份认证信息σ′和最新的模型参数梯度g′。

本实施例抵抗一般性攻击的实验效果如图3所示,抵抗目标性攻击的实验效果如图4所示。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。


技术特征:

1.一种基于可信执行环境的联邦学习方法,其特征在于,包括以下步骤:

s1、基于可信执行环境生成安全区;

s2、本地用户向云端提出下载初始化的模型参数的请求,云端回应请求并发送初始化的模型参数;

s3、本地用户将训练算法、训练数据集、训练数据例子数和云端传回的初始化的模型参数加载到安全区内,执行训练算法在本地进行训练,得到训练后的模型参数梯度;本地用户利用训练后的模型参数梯度、训练算法和模型集成算法生成数字签名,并利用数字签名和本地中央处理器芯片的硬件信息,通过群签名算法进行本地用户身份认证,最终本地用户将训练后的模型参数梯度、模型集成算法及本地用户身份认证上传到云端;

s4、云端回应本地用户的上传请求,并对本地用户身份认证进行验证,验证成功后,云端获取本地用户上传的训练后的模型参数梯度及模型集成算法,置于云端安全区内,对模型进行集成,更新模型参数梯度;利用更新后的模型参数梯度生成数字签名,再结合云端中央处理器芯片的硬件信息,通过群签名算法生成云端身份认证信息;模型集成结束后,返回云端身份认证信息和更新后的模型参数梯度。

2.根据权利要求1所述的基于可信执行环境的联邦学习方法,其特征在于,所述群签名算法为epid群算法。

3.根据权利要求1所述的基于可信执行环境的联邦学习方法,其特征在于,步骤s1使用英特尔sgx技术在中央处理器上生成硬件层面上的安全区,未经用户许可,安全区与非安全区的数据交互无法实现。

4.根据权利要求1所述的基于可信执行环境的联邦学习方法,其特征在于,步骤s3所述训练算法为随机梯度下降算法。

5.根据权利要求1所述的基于可信执行环境的联邦学习方法,其特征在于,步骤s1在中央处理器内分配内存,用于存储安全区。

技术总结
本发明属于数据安全领域,为基于可信执行环境的联邦学习方法,包括:基于可信执行环境生成安全区;本地用户从云端下载初始化的模型参数,将训练算法、训练数据集、训练数据例子数和云端传回的初始化的模型参数加载到安全区内,得到训练后的模型参数梯度并生成数字签名,通过群签名算法进行本地用户身份认证,将训练后的模型参数梯度、模型集成算法及本地用户身份认证上传到云端;云端对本地用户身份认证进行验证,验证成功后获取所上传的模型参数梯度及模型集成算法,置于云端安全区内,对模型进行集成,更新模型参数梯度。本发明利用可信执行环境生成安全区,用户无法绕过训练过程而直接给出训练结果,实现了训练完整性和用户隐私保护。

技术研发人员:李进;陈煜;罗芳;李同
受保护的技术使用者:广州大学
技术研发日:2020.01.09
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-55953.html

最新回复(0)