1.一种基于代理重加密的TEE联邦学习隐私保护方法,其特征在于:包括以下步骤:(1)进行联邦学习的参与方与服务器方建立代理重加密通信;
(2)服务器下发联邦策略至各参与方;
(3)参与方根据策略在TEE环境中对本地数据进行学习得到梯度参数,对梯度参数进行加密并发送至代理方;
(4)代理方对收到的消息进行重加密运算并发送至服务器方;
(5)服务器方在TEE中对收到的消息进行解密;
(6)服务器方对梯度参数进行聚合并加密发送至代理方;
(7)代理方对收到的消息进行重加密运算并发送至参与方;
(8)参与方解密消息得到梯度参数并继续进行模型训练;
(9)根据联邦学习策略重复步骤(3)—(8),直到联邦学习收敛;
所述步骤(1)进行联邦学习的参与方与服务器方之间建立代理重加密通信;其步骤如下:步骤1.1:输入安全参数k,选取多项式环 R为整系数多项式n
环, 为有限环域,x为具体多项式形式,n为2的幂次方,q为大素数,令Gt为Rq上系数取自 的多项式集合,t为整数且t>2,令明文空间M为Rq上系数取自{‑1,0,1}的多项式集合,其中p为小素数且p<
步骤1.2:本地密钥生成KeyGen:从Gt上随机均匀的选取多项式B∈Rq,从Gt上随机选取小系数多项式g∈Rq,g满足以下两个条件:gq·g≡1(mod q),g≡1(mod p),其中gq为g的模q运算,如果g不满足条件则重新进行选取,从χq上随机选取小系数多项式e′∈Rq,计算公钥PK=gqB+e′(mod q),私钥SK为g;
步骤1.3:代理重密钥生成ReKeyGen:参与方与服务器方的私钥分别为Sku和Sks,参与方需要先从Rq中选取一个随机多项式 从χq中选择随机多项式es,计算将 发送给服务器方,并将 发给代理方,服务器方对收到的 进行计算 并将 发送给代理方,代理方根据收到的 和 计算出重加密密钥: 同理得到rks→u;
所述步骤(2)服务器下发联邦策略至各参与方;其步骤如下:
步骤2.1:确定参与方的本地训练策略,其中包括对于loss函数的控制,与服务器端对齐问题,梯度或者参数如何上行传输,TEE选用的哈希函数;
步骤2.2:确定服务器方相应策略,其中包括如何对参与方上传的梯度或参数如何聚合,如何更新,如何下行分发,TEE选用的哈希函数;
所述步骤(3)参与方根据策略在TEE环境中对本地数据进行学习得到梯度参数,对梯度参数进行加密并发送至代理方;其步骤如下:步骤3.1:利用intel SGX构建TEE,通过Intel SGX PSW导出的API:sgx_enable_device创建enclave,本地训练的相应代码和数据运行于enclave中,运行在enclave模式下的CPU将不会直接响应中断、错误或者VM退出操作,参与方根据策略中的算法对数据进行学习,得到模型的梯度参数m;
步骤3.2:在enclave中计算s=hash(m),使用本地的公钥对M(s,m)和进行加密:从Gt中选取随机数u和eu,计算消息密文Cu=p(uPki+eu)+M(mod q);其中,s为参数的哈希值,Pki表示第i个参与方的公钥;
步骤3.3:将计算得到的消息密文Cu发送至代理方;
步骤3.4:调用sgx_destroy_enclave()函数销毁相应的enclave,回收EPC内存以及enclave使用的不可信内存;
所述步骤(4)代理方对收到的消息进行重加密运算并发送至服务器方;其步骤如下:步骤4.1:代理方收到密文消息Cu后,利用rku→s进行重加密运算,将由Pku加密的密文Cu转变为由Pks加密的密文Cs:Cs=Curku→s;其中,Pku为参与方公钥,Pks为服务器方公钥,rku→s为代理中心的代理重密钥;
步骤4.2:将转换后的密文Cs发送至服务器方;
所述步骤(5)服务器方在TEE中对收到的消息进行解密;其步骤如下:步骤5.1:服务器方收到密文Cs,利用intel SGX形成TEE,通过Intel SGX PSW导出的API:sgx_enable_device创建enclave,解密密文Cs和聚合参数的相应代码及数据将运行于构建的enclave中;
步骤5.2:在enclave中对密文Cs进行解密:计算M′=CsSks(mod q),通过M′得到M=M′(mod p);得到M后根据策略对消息m进行数字签名验证,其中Sks为服务器方私钥;
所述步骤(6)服务器方对梯度参数进行聚合并加密发送至代理方;其步骤如下:步骤6.1:根据策略中具体的聚合算法FedAvg或者FedProx对梯度参数进行聚合,得到新的梯度参数m1;
步骤6.2:计算s1=hash(m1),使用服务器方的公钥对M1(s1,m1)进行加密:从Gt中选取随机数u和e1,计算消息密文Cs1=p(uPki+e1)+M1(mod q);其中,s1为新的梯度参数m1的哈希值;
步骤6.3:将计算得到的消息密文C1发送至代理方;
步骤6.4:调用sgx_destroy_enclave()函数销毁相应的enclave,回收EPC内存以及enclave使用的不可信内存;
所述步骤(7)代理方对收到的消息进行重加密运算并发送至参与方;其步骤如下:步骤7.1:代理方收到消息Cs1后,利用rks→u进行重加密运算,将由Pks加密的密文Cs1转变为由Pks加密的密文Cu1:Cu1=Cs1rks→u;rks→u为将服务器方密文转换为参与方密文的重密钥;
步骤7.2:将转换后的密文Cu1发送至参与方;
所述步骤(8)参与方解密消息得到梯度参数并继续进行模型训练;其步骤如下:步骤8.1:参与方收到密文Cu1,利用intel SGX构建TEE,通过Intel SGX PSW导出的API:sgx_enable_device创建一个enclave,本地训练的相应代码和数据将运行于enclave中,运行在enclave模式下的CPU将不会直接响应中断、错误或者VM退出操作;
步骤8.2:在enclave中对密文Cu1进行解密:计算M1′=Cu1Sku(mod q),通过M1′得到M1=M1′(mod p);得到M1后根据策略对消息m1进行数字签名验证;其中,M1′为计算中间值,Cu1为收到的密文消息,Sku为本地私钥;
步骤8.3:在TEE中基于得到的新参数m1继续对数据进行学习,训练模型。
2.根据权利要求1所述的一种基于代理重加密的TEE联邦学习隐私保护方法,其特征在于,所述步骤(9);根据步骤(2)中所协商好的联邦学习策略,重复步骤(3)—(8),直到联邦学习完成,模型收敛。