
1.本发明属于计算技术领域,更进一步涉及电数字数据处理技术领域中的一种基于多方安全计算的深度学习用户梯度聚合方法。本发明可用于多方协作的深度学习中,通过对用户上传的梯度数据加密并进行多方安全计算,获得用户梯度聚合结果。
背景技术:2.深度学习的日渐发展和大规模应用于金融、电网、广告、投资,大数据与深度学习结合下的数据挖掘变得更加普及。深度学习的价值在于其可以对海量的用户数据进行分析和预测,但是海量数据交互会带来巨大的隐私风险。比如深度学习的服务提供商能获取到用户数据,从而泄露用户的隐私。目前针对深度学习上的隐私保护方法有下列两种:基于加密的隐私保护技术和基于数据扰动机制的隐私保护技术。数据扰动技术也即差分隐私是指在对原始数据进行噪声添加,外部敌手即使获得数据也不能对该数据进行分析,从而无法得到用户的敏感信息,但数据的真实性和完整性会遭受破坏。而同态加密和安全多方计算均为加密技术,对用户的数据进行加密,防止隐私泄露。安全多方计算在用户不提供个人数据的情况,多方联合计算结果。同态加密提供了在加密数据上的计算操作,无需解密,且不影响数据的精确性。
3.letrieuphong在其发表的论文“privacy-preserving deep learning via additively homomorphic encryption”(journal:ieee transactions on information forensics and security 2018,volume:13,page:1333-1345)中提出了一个使用同态加密对深度学习系统进行隐私保护的方法。该方法应用于神经网络的异步梯度下降算法。参与者在本地使用自己的数据进行模型训练,之后将获得的梯度参数加密之后存储在云服务器上。由于同态特性,加密之后的数据可以进行密文下的计算。之后将获得的计算结果返回给参与者。参与者解密之后获得更新的梯度数据,用于更新本地模型。该方法虽然通过同态加密实现了对参与者数据的隐私保护。但是,该方法仍然存在的不足之处是,所有参与者使用的密钥都是一样的,当有参与者被攻击或者有参与者退出模型训练,其余参与者梯度聚合过程中将会有隐私泄露的风险,云服务器可能会获得用户隐私。
4.武汉理工大学在其申请的专利文献“一种基于深度学习的差分隐私保护方法及装置”(申请号cn202110663663.1,公布号cn113468592a)中公开了一种基于深度学习的差分隐私保护方法。该方法根据训练模型梯度确定梯度累计平方和矩阵;从而多种模型参数的隐私预算以及自适应学习率;对梯度进行梯度裁剪,获得多个裁剪梯度,基于隐私预算添加噪声,获得噪声梯度;基于梯度下降公式和噪声梯度对模型参数进行迭代更新,获得目标深度学习模型。通过该方法可以进行模型训练,也可以达到个体隐私保护的目的。该方法存在的不足之处是,由于对梯度裁剪之后获得噪声梯度,破坏了梯度的真实性和完整性,影响梯度聚合的准确性。
技术实现要素:5.本发明的目的是针对上述现有技术的不足,提出一种基于多方安全计算的深度学习用户梯度聚合方法,用于解决现有技术中存在的单一密钥环境中梯度聚合会泄露用户隐私,以及上传梯度中添加噪声导致的最终聚合结果准确性不足的技术问题。
6.为实现上述目的,本发明的技术思路是,在深度学习中用户对梯度向量添加随机数后,使用多密钥同态加密算法对用户梯度向量进行加密。同时利用可验证秘密共享算法对通过验证的用户添加的随机数求和,参数服务器拿到梯度密文向量之后使用主密钥进行解密,对用户梯度向量去除随机数后求平均。这样既能够解决多方深度学习中单一密钥环境中的梯度聚合会泄露用户隐私的问题,防止梯度聚合过程中参数服务器获取用户隐私的同时,使用添加随机数后去除随机数的方式,而不是添加无法去除的噪声,保护了梯度的真实性和完整性,最终的聚合结果准确性将不受影响。
7.本发明采取的技术方法包括如下步骤:
8.步骤1,生成并分发公共参数和密钥:
9.步骤1.1,密钥生成中心利用同态bcp密码密钥生成算法,生成公共参数n和g与主密钥mk;密钥生成中心利用利用feldmanvss参数生成算法,生成公共参数p
″
,q
″
,g
′
,n和集合x;
10.步骤1.2,密钥生成中心将公共参数n,g和p
″
,q
″
,g
′
,n发给每个用户和参数服务器;
11.步骤1.3,密钥生成中心将密钥mk和集合x分别发给每个用户和参数服务器;
12.步骤2,生成用户公私钥对;
13.步骤2.1,每个用户利用密钥生成中心发送的同态bcp密码的公共参数,生成该用户的公钥参数hi;
14.步骤2.2,每个用户将公共参数n和g、整数bi、公钥参数hi组成该用户的公钥pki=(n,g,hi),私钥ski=bi,得到该用户的公私钥对(pki,ski);
15.步骤3,用户在梯度向量中添加随机数:
16.每个用户将随机数u添加到其梯度向量的每一个元素中,得到每个用户对应添加随机数后梯度向量。
17.步骤4,加密并传输用户数据:
18.步骤4.1,利用同态bcp密码算法,每个用户使用其公钥对添加随机数后梯度向量进行加密,得到由a和b两部分组成的每个用户密文梯度向量;
19.步骤4.2,每个用户将其密文梯度向量发送给同一个参数服务器;
20.步骤5,生成份额,设置门限值:
21.步骤5.1,参数服务器统计接收到的每个用户发送的密文梯度向量的总数n1,设定接受到密文梯度向量的用户随机数秘密恢复门限值k;
22.步骤5.2,参数服务器公开n1、门限值k以及接受到密文梯度向量的每个用户;
23.步骤6,用户分发共享值和广播值:
24.每个发送密文梯度向量的用户均生成其共享值和承诺广播值;每个发送密文梯度向量用户将其共享值发送给对应用户,将承诺广播值进行广播;
25.步骤7,发送秘密份额:
26.步骤7.1,每个发送密文梯度向量的用户,利用承诺广播值验证其收到的共享值,将所有通过验证的用户的共享值之和作为秘密份额,并公开未通过共享值验证的用户;
27.步骤7.2,每个发送密文梯度向量的用户,将其秘密份额发送给每个通过共享值验证的用户和参数服务器。
28.步骤8,验证秘密份额:
29.步骤8.1,每个通过共享值验证的用户,利用承诺广播值验证其收到的秘密份额,公开未通过秘密份额验证的用户。
30.步骤8.2,利用拉格朗日插值法,参数服务器计算通过秘密份额验证的用户的秘密。
31.步骤9,参数服务器得到全局梯度向量:
32.步骤9.1,利用同态bcp密码算法,参数服务器用其主密钥mk,解密每个通过秘密份额验证的用户的密文梯度向量;
33.步骤9.2,参数服务器将解密后的秘密份额,去除每个通过验证用户的密文梯度向量中的随机数后,再将所有去除随机数的密文梯度向量加和求均值,生成全局梯度向量;
34.步骤10,加密并传输全局梯度向量;
35.步骤10.1,利用同态bcp密码算法,参数服务器对每个通过秘密份额验证的用户的全局梯度向量行加密,得到由a',b'两个部分组成的密文全局梯度向量。
36.步骤10.2,参数服务器将密文全局梯度向量发送给每个通过秘密份额验证的用户;
37.步骤11,用户得到全局梯度向量:
38.每个通过秘密份额验证的用户,使用其公钥对密文全局梯度向量进行解密,得到全局梯度向量。
39.本发明与现有技术相比,具有以下优点:
40.第一,本发明加密并传输用户待聚合梯度向量,用户添加随机数后对数据进行加密,解决了现有技术对梯度添加噪声进行聚合,破坏了数据的真实性和完整性,影响梯度聚合结果的准确性的问题,使得本发明具有梯度聚合准确性更好的优点。
41.第二,本发明加密并传输用户待聚合梯度向量,在不泄露用户添加到梯度向量中的随机数的情况下对所有用户随机数求和,克服了现有技术中无法解决单一密钥对用户隐私泄露的问题,使得本发明能支持多密钥环境,防止梯度聚合过程中参数服务器获取用户隐私。
附图说明
42.附图1为本发明的流程图。
具体实施方式
43.下面结合附图1,对本发明实现的步骤作进一步的详细描述。
44.步骤1,分发生成的公共参数和主密钥。
45.步骤1.1,密钥生成中心利用同态bcp密码的密钥生成算法,分别生成公共参数(n,g)与主密钥mk,其中,n表示模数,n=pq,p和q分别表示均匀且随机选取的两个安全大素数。
g表示随机数,在剩余类环中选取且阶为2p
′q′
。mk=(p',q')。其中p
′
、q
′
也是素数,满足p=2p
′
+1,q=2q
′
+1。
46.利用feldmanvss参数生成算法,分别生成公共参数(p
″
,q
″
,g
′
,n)和正整数集合x。其中,p
″
表示均匀且随机选取的大素数。g'表示随机数,在正整数群上均匀随机选取且阶为q
″
,q
″
满足q
″
|p
″‑
1。n表示用户的总数。x表示在正整数群均匀随机选取的m个元素组成的正整数集合,m=n。
47.步骤1.2,密钥生成中心将公共参数(n,g)和(p
″
,q
″
,g
′
,k,n)发给每个用户和参数服务器
48.步骤1.3,密钥生成中心将密钥mk和集合x分别发给每个用户和参数服务器;
49.步骤2,生成用户公私钥对。
50.步骤2.1,利用密钥生成中心发送的同态bcp密码的公共参数,每个用户生成公钥参数:
[0051][0052]
其中,hi表示第i个用户的公钥参数,≡表示符号左侧表达式同余于符号右侧表达式,1≤i≤n,bi表示第i个用户随机选取的一个整数bi∈[1,np
′q′
],mod表示取模操作。
[0053]
步骤2.2,每个用户将公共参数n和g、整数bi、公钥参数hi组成该用户的公钥pki=(n,g,hi),私钥ski=bi,得到该用户的公私钥对(pki,ski)。
[0054]
步骤3,用户在梯度向量中添加随机数。
[0055]
为了保护梯度以及梯度聚合的真实性和完整性,每个用户将随机数u添加到其梯度向量的每一个元素中,得到每个用户对应添加随机数后梯度向量。
[0056]
步骤4,加密并传输用户数据
[0057]
步骤4.1,为了防止参数服务器在对每个用户的密文梯度向量进行聚合的过程获得该用户的隐私,利用同态bcp密码算法,每个用户使用其公钥对添加随机数后梯度向量进行加密,得到由a和b两部分组成的每个用户密文梯度向量如下:
[0058][0059]
其中,w'表示添加随机数后的梯度向量,ri表示第i个用户随机选取的一个整数且ri∈[1,n/4]。
[0060]
步骤4.2,每个用户将其密文梯度向量发送给同一个参数服务器。
[0061]
步骤5,生成份额,设置门限值。
[0062]
步骤5.1,为了排除参数服务器可能未接收到用户的密文梯度的情况,参数服务器统计接收到的用户发送的密文梯度向量的总数n1,设定接受到密文梯度向量的用户随机数秘密恢复门限值k=n
12
/n。
[0063]
步骤5.2,参数服务器公开份额n1、门限值k、接受到密文梯度向量的每个用户。
[0064]
步骤6,用户分发共享值和广播值。
[0065]
步骤6.1,为了在不泄露用户添加到梯度向量中的随机数的情况下对所有用户随机数求和,利用feldmanvss算法,每个发送密文梯度向量的用户均生成其共享值和承诺广播值:
[0066][0067]
其中,f
i'
(x
j'
)表示第i'个发送密文梯度向量用户的共享值,承诺广播值表示a
i'z
表示第i'个发送密文梯度向量用户的随机多项式中的第z个系数,0≤z≤k,a
i'0
=u
i'
,u
i'
第i'个发送密文梯度向量用户的随机数,x
j'
表示集合x的第j'个元素,1≤j'≤n1。
[0068]
步骤6.2,每个发送密文梯度向量用户将其f
i'
(x
j'
)发送给对应用户,将承诺广播值进行广播。
[0069]
步骤7,发送秘密份额:
[0070]
步骤7.1,利用feldmanvss算法,每个发送密文梯度向量的用户,利用承诺广播值验证其收到的共享值指的是下述等式是否成立:
[0071][0072]
其中,f
j'
(x
i'
)表示第j'个发送密文梯度向量用户的共享值,x
i'
表示集合x的第i'个元素,1≤i'≤n1,π表示连乘操作,当该等式不成立,共享值不正确,验证不通过。将所有通过验证的用户的共享值之和作为秘密份额ki,并公开未通过共享值验证的用户。
[0073]
步骤7.2,每个发送密文梯度向量的用户将其秘密份额k
i'
发送给每个通过共享值验证的用户和参数服务器。
[0074]
步骤8,验证秘密份额
[0075]
步骤8.1,利用feldmanvss算法,每个通过共享值验证的用户,利用承诺广播值验证其收到的秘密份额指的是下述等式是否成立:
[0076][0077]
其中,表示第i'个通过共享值验证的个用户的第z'个广播值,0≤z'≤k,k
j'
表示表示第j'个通过共享值验证的用户的秘密份额。n2表示秘密份额通过验证的用户总数。当该等式不成立,共享值不正确,验证不通过,公开未通过秘密份额验证的用户
[0078]
步骤8.2,利用拉格朗日插值法,参数服务器计算通过秘密份额验证的用户的秘密k。
[0079]
步骤9,参数服务器得到全局梯度向量
[0080]
步骤9.1,利用同态bcp密码算法,参数服务器用其主密钥mk,解密每个通过秘密份额验证的用户的密文梯度向量:
[0081][0082]
其中,ν=(b/g
χ
)
2p
′q′
,χ=bi″ri
″
modn,(
·
)-1
表示模逆操作,wi″
'表示第i
″
个通过秘密份额验证的用户的解密后的密文梯度向量,1≤i
″
≤n2,bi″
表示第i
″
个通过秘密份额验证的用户随机选取的一个整数bi″
∈[1,np
′q′
],ri″
表示参数服务器针对第i
″
个通过秘密份额验证的用户随机选取的一个整数且ri″
∈[1,n/4]。
[0083]
步骤9.2,为了保护聚合得到的全局梯度向量的真实性和完整性,参数服务器将解密后的秘密份额,去除每个通过验证用户的密文梯度向量中的随机数后,再将所有去除随
机数的密文梯度向量加和求均值,生成全局梯度向量。
[0084]
步骤10,加密并传输全局梯度向量
[0085]
步骤10.1,利用同态bcp密码算法,参数服务器使用秘密份额通过验证的每个用户的公钥对全局梯度向量行加密,得到a',b'两个部分组成的密文全局梯度向量如下:
[0086][0087]
其中,其中,a'表示密文全局梯度向量的第一部分,b'表示密文全局梯度向量的第二部分,wg表示全局梯度向量。
[0088]
步骤10.2,参数服务器将密文全局梯度向量发送给每个通过秘密份额验证的用户。
[0089]
步骤11,用户得到全局梯度向量
[0090]
利用同态bcp密码算法,每个通过秘密份额验证的用户,使用其公钥对密文全局梯度向量进行解密,得到全局梯度向量:
[0091][0092]
其中,wg表示全局梯度向量,/表示除法操作。