一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于SM9算法的隐私保护的联邦学习方法与流程

2022-12-07 01:12:04 来源:中国专利 TAG:

一种基于sm9算法的隐私保护的联邦学习方法
技术领域
1.本发明涉及网络安全和联邦学习技术领域,具体地说,是一种基于sm9算法的隐私保护的联邦学习方法,用于解决联邦学习过程中可能存在的推理攻击与毒化攻击。


背景技术:

2.2017年mcmahan在《communication-efficient learning of deep networks from decentralized data》中首次提出联邦学习的概念。紧接着人们发现可以利用模型梯度数据重建模型,从而导致训练参与者隐私数据泄露。因此,众多利用安全聚合,同态加密,差分隐私等各种安全机制的训练参与者数据保护方案被提出并发表。以google fl研究团队于2017年发表的《practical secure aggregation for privacy-preserving machine learning》论文为例,该文章提出了一种安全聚合加密方案(smpc),服务器只能看到聚合完成之后的梯度,不能知道每个训练参与者的私有的真实梯度值。这种方法适用于大规模终端(例如手机)通过一个服务器,共同计算各自输入之和的情形,但是前提是不泄露某个特定的终端的输入,无论是对服务器还是对其他的终端。但大多数方案都仅针对梯度数据进行隐私保护,并不具备抗毒化攻击的能力。为满足核心技术自主创新、信息安全自主可控的要求,我国自主设计了包括密钥交换协议、数字签名算法、密钥封装机制和公钥加密算法的sm9标识系列密码。sm9的加密强度等同于3072位密钥的rsa加密算法。
3.目前联邦学习过程中可能存在的推理攻击与毒化攻击,但并无相应的技术对其进行解决,因此,本发明基于传统联邦学习,尝试将sm9标识密码算法嵌入联邦学习的框架之中,保证了在没有可信第三方的情况下,训练参与者的模型梯度数据隐私不被泄露。


技术实现要素:

4.本发明的目的在于提供一种基于sm9算法的隐私保护的联邦学习方法,在可评估的联邦学习的框架中引入了sm9的加解密算法和签名签验算法实现了隐私保护,并且通过构建一个三方参与的联邦学习架构实现了抵御来自恶意训练参与者的毒化攻击。
5.本发明通过下述技术方案实现:一种基于sm9算法的隐私保护的联邦学习方法,包括以下步骤:
6.步骤s1,在联邦学习架构中构建评估服务器,构建后的联邦学习架构中含有三个实体对象,分别为训练参与者,中心服务器以及评估服务器;
7.步骤s2,将训练参与者发送的模型数据进行评估验证,剔除掉恶意参与者的毒化数据,并将sm9标识密码算法嵌入联邦学习的框架之中;训练参与者针对指定组的评估服务器id进行模型加密,并将签名后的加密数据连同签名一起发送给中心服务器,中心服务器将通过签名验证的加密模型数据分发给对应组中的评估服务器;
8.步骤s3,评估服务器在不知道数据来源的前提下对数据进行解密并评估。
9.本发明针对联邦学习过程中可能存在的推理攻击与毒化攻击,提供了一种高效安全的基于sm9算法的隐私保护的联邦学习方案。该方案在保护隐私的同时可以实现抗毒化
攻击。
10.为了达到上述发明目的,本发明采用以下技术方案实现:通过在联邦学习架构中增添评估服务器,将训练参与者发送的模型数据进行评估验证,剔除掉恶意参与者的毒化数据。并在其中结合sm9加密与签名算法保证整个联邦学习通信过程中的用户隐私的安全。训练参与者将自己训练好的模型m加密,并对模型进行签名,中心服务器通过签名验证算法确认训练参与者的身份合理性,然后将模型信息发送给评估服务器解密,评估服务器解密模型数据后对数据进行评估,将达到标准的模型数据聚合后返还给中心服务器。
11.与先用技术相比,本发明的有益效果是技巧性的将国密算法与可评估的联邦学习框架相结合,不仅节省了计算和通信成本,同时提供了针对推理攻击和毒化攻击充分的安全保障,具有机密性,不可否认性,抗毒化攻击和可扩展等性质。
12.为了更好地实现本发明,进一步地,所述步骤s1包括:
13.允许训练参与者针对特定某组的评估服务器公钥加密模型梯度数据,评估服务器获取加密梯度数据并利用自己的组私钥进行解密,以此对梯度数据进行评估从而剔除毒化数据,并且评估服务器不与训练参与者合谋;
14.训练参与者在加密模型数据时生成掩码,并通过加密掩码与模型数据的加和实现对模型梯度数据的加密;
15.训练参与者在上传更新的加密模型数据时需要对数据进行签名,中心服务器收到签名后对数据进行验证,通过验证后确认该参与者是合法参与者;
16.在一轮联邦学习结束时,只有合法参与者可以收到该轮的全局聚合模型,并参与下一轮的联邦学习。
17.为了更好地实现本发明,进一步地,所述步骤s2包括:
18.步骤s21,建立本地系统,本地系统生成必要的参数,使用加密密钥生成算法和签名密钥生成算法生成密钥并完成机器学习模型的参数初始化;
19.步骤s22,获取子模型,训练参与者将子模型发送给中心服务器,并由中心服务器分发给评估服务器的过程中剔除不合法训练参与者,;
20.步骤s23,评估服务器合法训练参与者模型进行评估计算权重;
21.步骤s24,加权聚合,完成联邦学习的一轮迭代。
22.为了更好地实现本发明,进一步地,所述步骤s21包括:
23.中心服务器在本地生成系统参数,密钥生成中心生成训练参与者id以及评估服务器的组id,训练参与者调用签名密钥生成算法skg生成自己的签名私钥,训练参与者以及评估服务器调用加密密钥生成算法ekg生成各自的加密私钥;
24.中心服务器将机器学习模型初始化参数;
25.将机器学习模型参数信息发送给每个训练参与者与评估服务器,所述机器学习模型参数信息包括机器学习模型的学习率和本地系统的迭代次数。
26.为了更好地实现本发明,进一步地,所述步骤s22包括:
27.训练参与者利用本地数据对全局模型进行训练得到子模型,训练参与者将子模型发送给中心服务器,并由中心服务器分发给评估服务器;
28.使用sm9的加密算法在训练参与者端对训练后的本地模型数据进行隐私化处理来抵御联邦学习过程中的推理攻击;
29.在训练参与者发送信息的过程中添加sm9的签名与签名验证算法,训练参与者调用签名算法对发送至中心服务器的数据进行签名,中心服务器收到签名调用签名验证算法对训练参与者身份进行验证,从而剔除不合法训练参与者。
30.为了更好地实现本发明,进一步地,所述步骤s23包括:
31.通过评估服务器合法训练参与者模型进行评估,生成相应权重,通过加权聚合剔除毒化数据;
32.中心服务器在保证负载均衡的前提下为每个模型在组内随机分配评估服务器。
33.为了更好地实现本发明,进一步地,所述步骤s24包括:
34.评估服务器将本地所有子模型进行加权聚合,实现联邦学习的抗毒化攻击,最后将聚合结果发送给中心服务器聚合,完成联邦学习的一轮迭代。
35.为了更好地实现本发明,进一步地,所述步骤s3包括:
36.评估服务器解密模型数据后对数据进行评估,将达到标准的模型数据聚合后返还给中心服务器。
37.本发明与现有技术相比,具有以下优点及有益效果:
38.(1)本发明的联邦学习系统具有抗毒化攻击的能力;
39.(2)本发明在联邦学习框架中设计了评估服务器评估用户子模型,通过评估服务器的评估聚合可以有效消除恶意用户针对联邦学习系统的毒化攻击;并且在联邦学习过程中嵌入sm9签名和加密算法,进一步剔除了非法用户对联邦学习的影响,使系统在保护用户隐私的前提下实现了抗毒化攻击。
附图说明
40.本发明结合下面附图和实施例做进一步说明,本发明所有构思创新应视为所公开内容和本发明保护范围。
41.图1为本发明提供的一种基于sm9算法的隐私保护的联邦学习方法的流程示意图。
42.图2为本发明提供的一种基于sm9算法的隐私保护的联邦学习方法中符号含义的示意图。
具体实施方式
43.为了更清楚地说明本发明实施例的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,应当理解,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,因此不应被看作是对保护范围的限定。基于本发明中的实施例,本领域普通技术工作人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;也可以是直接相连,也可以是通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
45.实施例1:
46.本实施例的一种基于sm9算法的隐私保护的联邦学习方法,如图1所示,本发明在传统联邦学习中增添了评估服务器对模型数据进行评估,从而可以识别出毒化数据并且抵御毒化攻击;并且将sm9标识密码算法嵌入联邦学习的框架之中,保证了在没有可信第三方的情况下,训练参与者的模型梯度数据隐私不被泄露。在基于sm9算法的联邦学习中,训练参与者可以针对指定组的评估服务器id进行模型加密,并将签名后的加密数据连同签名一起发送给中心服务器,中心服务器将通过签名验证的加密模型数据分发给对应组中的评估服务器,评估服务器在不知道数据来源的前提下对数据进行解密并评估,在保证数据隐私的同时实现了抗毒化攻击。
47.本发明共涉及三个实体:训练参与者ui,中心服务器cs以及评估服务器ej,i∈[1,n],j∈「1,m],n和m分别为训练参与者和评估服务器的总数。
[0048]
评估服务器ej:评估服务器全部是诚实好奇的实体,且与训练参与者ui不合谋。评估服务器被随机均匀的分为x组,每组会生成自己的idy,和加密私钥dey,y是组内j的集合。组内评估服务器共享id与私钥。评估服务器ej负责评估模型并参与模型聚合工作。在模型评估过程中,每个评估服务器ej在本地解密由中心服务器cs分配的加密模型,之后评估服务器ej通过本地的评估数据集进行模型评估并获取评估值。随后,评估服务器ej通过评估服务器之间的交互,计算得到评估服务器ej的子模型的聚合权值,并在本地将评估的模型进行局部聚合后上传至中心服务器cs。评估服务器在整个协议中能够获取某些训练参与者的模型,但无法推断训练参与者的身份及梯度信息。
[0049]
训练参与者ui:训练参与者中存在部分恶意实体,也存在诚实好奇的实体。每个训练参与者ui拥有自己的本地训练数据用于模型训练。并且训练参与者ui拥有自己的idi以及签名私钥dsi。ui在每个训练周期结束后,选择一组评估服务器,并针对该组评估服务器的id将梯度数据加密,然后将签名与加密梯度数据上传至中心服务器cs,并且在整个协议的流程中,训练参与者ui仅与中心服务器cs进行交流通信。
[0050]
中心服务器cs:中心服务器为诚实好奇的实体。中心服务器cs接收训练参与者ui上传的签名与加密梯度数据,验证签名无误后,将数据随机分配给训练参与者选定组中的评估服务器。在模型评估完成之后,中心服务器cs聚合评估服务器局部聚合的子模型得到全局机器学习模型。中心服务器cs在整个协议中能够获取最终的聚合模型,但无法推断单个训练参与者模型数据。
[0051]
实施例2:
[0052]
本实施例在实施例1的基础上做进一步优化,允许训练参与者针对特定某组的评估服务器公钥加密模型梯度数据,评估服务器获取加密梯度数据并利用自己的组私钥进行解密,以此对梯度数据进行评估从而剔除毒化数据。并且评估服务器不与训练参与者合谋,这样评估服务器不会获得全局聚合模型,不会推断出单个模型数据的来源,从而确保训练参与者的隐私不被泄露;
[0053]
训练参与者在加密模型数据时生成掩码,并通过加密掩码与模型数据的加和实现对模型梯度数据的加密。由于模型梯度数据较为复杂,掩码加密的方式可以很大程度上减轻计算量,提高整个方案计算性能;
[0054]
训练参与者在上传更新的加密模型数据时需要对数据进行签名,中心服务器收到签名后对数据进行验证,通过验证后确认该参与者是合法参与者。在一轮联邦学习结束时,
只有合法参与者可以收到该轮的全局聚合模型,并参与下一轮的联邦学习。防止非法训练参与者侵入系统。
[0055]
本实施例的其他部分与实施例1相同,故不再赘述。
[0056]
实施例3:
[0057]
本实施例在上述实施例1或2的基础上做进一步优化,本实施例公开了系统建立的具体过程:系统生成必要的参数,生成密钥并完成机器学习模型的参数初始化。cs在本地生成系统参数par={g1,g2,g
t
,p1,p2}并公开。kgc生成训练参与者id以及评估服务器的组id。ui调用skg(par,idi),生成ui的签名私钥dsi。ev调用ekg(par,idv)生成ev的加密组私钥dev。cs将机器学习模型初始化参数模型的学习率α和系统的迭代次数t等模型参数信息发送给每个用户ui与评估服务器。本实施例的符号含义如图2所示。
[0058]
本实施例的其他部分与上述实施例1或2相同,故不再赘述。
[0059]
实施例4:
[0060]
本实施例在上述实施例1-3任一项的基础上做进一步优化,本发明公开了用户利用本地数据对全局模型进行训练得到子模型的过程,用户需要将子模型发送给中心服务器,并由中心服务器分发给评估服务器。由于在整个联邦学习过程中中心服务器以及评估服务器都是诚实好奇的,他们会对自己在规则内获取到的数据进行推理攻击,并且也存在系统外的攻击者窃听通信过程中的数据并进行推理攻击,攻击者会通过模型数据获取用户数据信息,导致用户隐私泄露,所以我们使用sm9的加密算法在用户端对训练后的本地模型数据进行隐私化处理来抵御联邦学习过程中的推理攻击;并且由于可能存在没有经过kgc生成密钥的不合法用户,为了避免不合法用户和评估服务器合谋窃取用户隐私,我们在用户发送信息的过程中添加sm9的签名与签名验证算法,用户调用签名算法.s对发送至中心服务器的数据进行签名,中心服务器收到签名调用签名验证算法sv对用户身份进行验证,从而剔除不合法用户。
[0061]
本实施例中,输入全局模型输出用户子模型其算法过程如下所示:
[0062]
ui,i∈(1,n);
[0063]
用本地数据集对全局模型进行神经网络训练:
[0064]
生成随机整数bi作为模型掩码,对模型进行加密:
[0065]
从评估服务器组中随机选取一个idv,对bi进行sm9加密:
[0066]
对加密模型与加密掩码进行签名:
[0067]
将idy,(σi,si)发送给中心服务器cs;
[0068]
中心服务器cs对于i∈(1,n)的ui发送的数据信息,调用签名验证算法对签名进行验证:result

sv(σi′
,si′
),中心服务器cs对于j∈y,将result=1的发送给随机选取的ej,ej,j∈(1,m)。
[0069]
随机选取的ej对收到的执行解密算法并计算出模型执行解密算法并计算出模型
[0070]
本实施例的符号含义如图2所示。
[0071]
本实施例的其他部分与上述实施例1-3任一项相同,故不再赘述。
[0072]
实施例5:
[0073]
本实施例在上述实施例1-4任一项基础上做进一步优化,在本实施例中,由于部分恶意用户通过上传毒化模型对系统的进行毒化攻击,降低联邦学习的效率与模型准确率,所以我们通过评估服务器对合法用户模型进行评估,生成相应权重,通过加权聚合剔除毒化数据。中心服务器需要保证评估服务器无法获取用户模型的身份,且不同评估服务器的评估模型数量基本一致,防止出现局部评估服务器过载造成较大的延迟。为满足上述要求,中心服务器会在保证负载均衡的前提下为每个模型在组内随机分配评估服务器。
[0074]
本实施例中,输入用户子模型输出子模型的贡献δi,其算法过程如下所示:
[0075]
随机选取的ej,ej,j∈(1,m)利用评估数据集de,对收到的模型进行评估:删掉小于的(第一轮用∑γi代替),聚合剩余的(数量为zj个);ej将发送给其他ej,其他ej在接收到所有其他评估服务器的评估信息后,计算子模型的贡献:
[0076]
本实施例的符号含义如图2所示。
[0077]
本实施例的其他部分与上述实施例1-4任一项相同,故不再赘述。
[0078]
实施例6:
[0079]
本实施例在上述实施例1-5任一项基础上做进一步优化,在本实施中,评估服务器将本地所有子模型进行加权聚合,实现联邦学习的抗毒化攻击,最后将聚合结果发送给中心服务器聚合,完成联邦学习的一轮迭代。
[0080]
本实施例中,输入子模型的贡献δi、出用户子模型上一轮全局聚合模型输出全局聚合模型和全局评估值其算法过程如下所示:
[0081]
随机选取的ej,ej,j∈(1,m)对δi进行归一化处理,并将本地子模型进行加权聚合:ej将mj发送给中心服务器cs;
[0082]
中心服务器cs对于j∈(i,m),聚合mj:评估全局聚合模型:
[0083]
本实施例的符号含义如图2所示。
[0084]
本实施例的其他部分与上述实施例1-4任一项相同,故不再赘述。
[0085]
实施例7:
[0086]
本实施例在上述实施例1-6任一项基础上做进一步优化,在发明中使用了加密密钥生成算法、签名密钥生成算法、加密算法、签名算法、签名验证算法和解密算法。
[0087]
其中:(1)加密密钥生成算法encryption key generation(ekg):kgc产生随机数re∈[1,n-1]作为加密主私钥,计算g1中元素k
pub-e
=[re]p1作为加密主公钥,则加密主密钥对为(re,k
pub-e
);
[0088]
kgc秘密保存re,公开k
pub-e
。kgc选择并公开用一个字节表示的签名私钥生成函数识别符hi。用户a的标识为ida,为产生用户a的加密私钥dea,kgc在有限域f上计算
[0089]ze1
=h(ida||hi,n) re;
[0090]
若z
e1
=0,则重新计算签名主密钥对,若z
e1
≠0,则计算然后计算a的加密私钥为:dea=[z
e2
]p1。
[0091]
(2)签名密钥生成算法sign key generation(skg):密钥生成中心(key generation center,kgc)产生随机数rs∈[1,n-1]作为签名主私钥,计算g2中元素k
pub-s
=[rs]p2作为签名主公钥,则签名主密钥对为:(rs,k
pub-s
);
[0092]
kgc秘密保存ks,公开k_(pub-s)。kgc选择并公开用一个字节表示的签名私钥生成函数识别符hi。用户a的标识为ida,为产生用户a的签名私钥dsa,kgc在有限域f上计算:z
s1
=h(ida||hi,n) rs;
[0093]
若z
s1
=0,则重新计算签名主密钥对;若z
s1
≠0,则计算然后计算a的签名私钥为:dsa=[z
s2
]p2。
[0094]
(3)加密算法encryption(e):计算群g1中的元素:yb=[h(idb||hi,n)]p1 k
pub-e

[0095]
产生随机数rane∈[1,n-1],计算群g1中的元素;c0=[rane]yb;然后计算群g
t
中的元素:g=e(k
pub-e
,p2),计算整数:lenk=lenm len
k2
,然后调用密钥派生函数计算:k=kdf(c1||w||idb,lenk);
[0096]
设k最左lenm比特为k1,剩下的比特为k2。若k1全为0,则重新产生随机数再计算;若不全为0,则计算:最后计算:c2=mac(k2,c1);
[0097]
输出密文:c=c0||c2||c1。
[0098]
(4)签名算法sign(s):计算群g
t
中的元素,g=e(p1,k
pub-s
);
[0099]
产生随机数rans∈[1,n-1],计算群g
t
中的元素
[0100]
计算整数:σ=h(ms||w,n),η=(ran
s-σ)mod n;
[0101]
若η=0,则重新产生随机数,重新计算;
[0102]
若η≠0,则继续计算群g2中的元素:s=[η]dsa,输出ms签名:(σ,s)。
[0103]
(5)签名验证算法signature veriiication(sv):为了验证收到的消息ms′
及其数字签名(σ

,s

),首先检验σ

∈[1,n-1]是否成立,不成立则验证失败;成立则继续验证s

∈g2是否成立,不成立则验证失败;成立则继续计算群g
t
中的元素:g=e(p1,k
pub-s
);
[0104]
计算群g
t
中的元素μ=g
σ

,计算整数:σ1=h(ida||hi,n);
[0105]
计算群g2的元素:p=[σ1]p2 k
pub-s

[0106]
然后计算群g
t
中的元素:ε=e(s

,p),w

=ε
·
μ;
[0107]
最后计算整数:σ0=h(ms′
||w

,n)。
[0108]
检验σ0=σ

是否成立,若成立则验证通过;否则验证不通过。
[0109]
(6)解密算法decryption(d):从c中取出比特串c1,检验c1∈g1是否成立,不成立则报错,成立则继续计算群g
t
中的元素:w

=e(c0,deb);
[0110]
计算整数:lenk=lenc len
k2

[0111]
然后计算:k

=kdf(c0||w

||idb,lenk);
[0112]
设k

最左比特为k1′
,剩下的比特为k2′
。若k1′
全为0,则报错;若k1′
不全为0则计算:计算:d=mac(k2′
,c1);
[0113]
从c中取出比特串c2,若d≠c2,则报错退出,否则输出明文me′

[0114]
本实施例的符号含义如图2所示。
[0115]
本实施例的其他部分与上述实施例1-4任一项相同,故不再赘述。
[0116]
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化,均落入本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献