《XMK-CKKS: Extended Multiple Key Homomorphic Encryption over CKKS》 中科院2区

总结

​ 提出了xMK-CKKS,一种多密钥同态方案。客户端使用聚合公钥加密梯度,解密的时候需要所有客户端提供解密份额,协助服务器解密总和。基于FadAvg和XMK-CKKS提出一个ppfl模型。在半诚实模型下可以防止n-1个客户端和服务器的勾结。

xMK-CKKS

### setup

​ 给定安全参数λ\lambdaλ,输出公共安全参数(n,q,χ,ψ,ϕ,a)(n,q,\chi,\psi,\phi,a)(n,q,χ,ψ,ϕ,a)

keygen

​ 对每个客户端did_idi,采样私钥$s_{i}\leftarrow\chi ,公钥,公钥,公钥b_i=-s_i\cdot a+e_i\pmod q$

​ 定义聚合公钥为:b~=∑i=⁡1Nbi=−(∑i=⁡1Nsi)⋅a+∑i=⁡1Nei(mod q)\widetilde{b}=\sum_{i\operatorname{=}1}^Nb_i=-\left(\sum_{i\operatorname{=}1}^Ns_i\right)\cdotp a+\sum_{i\operatorname{=}1}^Ne_i\quad\mathrm{(mod~}q)b =i=1Nbi=(i=1Nsi)a+i=1Nei(mod q)

enc

did_idi对明文mim_imi进行加密:cti=(ci0,ci1)=(vi⋅b~+mi+e0di,vi⋅a+e1di)(mod q)ct_{i}=(c_{i0},c_{i1})=(v_{i}\cdot\tilde{b}+m_{i}+e_{0}^{d_i},v_{i}\cdot a+e_{1}^{d_i})\quad\mathrm{(mod~}q)cti=(ci0,ci1)=(vib~+mi+e0di,via+e1di)(mod q)

add

Csum=∑i=1Ncti≜(Csum0,Csum1)=(∑i=1Nc0di,∑i=1Nc1di)=(∑i=1Nvdi⋅b~+mi+e0di),∑i=1N(vdi⋅a+e1di)) (mod q)\begin{aligned}\boldsymbol{C}_{\boldsymbol{sum}}&=\quad\sum_{i=1}^{N}\boldsymbol{ct}_{\boldsymbol{i}}\triangleq(C_{sum_{0}},C_{sum_{1}})\\&=\quad\left(\sum_{i=1}^{N}c_{0}^{d_{i}},\sum_{i=1}^{N}c_{1}^{d_{i}}\right)\\&=\quad\left(\sum_{i=1}^{N}v^{d_{i}}\cdot\widetilde{b}+m_{i}+e_{0}^{d_{i}}),\sum_{i=1}^{N}(v^{d_{i}}\cdot a+e_{1}^{d_{i}})\right)\mathrm{~(mod~}q)\end{aligned}Csum=i=1Ncti(Csum0,Csum1)=(i=1Nc0di,i=1Nc1di)=(i=1Nvdib +mi+e0di),i=1N(vdia+e1di)) (mod q)

dec

​ 对每个客户端did_idi,计算自己的解密份额DiD_iDi

Di=si⋅Csum1+ei∗=si⋅∑i=1N(vi⋅a+e1di)+ei∗(mod⁡q)\begin{aligned}D_i&=\quad s_i\cdot C_{sum_1}+e_i^*\\&=\quad s_i\cdot\sum_{i=1}^N(v_i\cdot a+e_1^{d_i})+e_i^*\left(\operatorname{mod}q\right)\end{aligned}Di=siCsum1+ei=sii=1N(via+e1di)+ei(modq)

​ 明文和可以被恢复,公式如下:

Csum0+∑i=1NDi mod q=Csum0+∑i=1Nsi⋅Csum1+∑i=1Nei∗ mod q\begin{array}{rcl}C_{sum_{0}}+\sum_{i=1}^{N}D_{i}\mathrm{~mod~}q&=&C_{sum_{0}}+\sum_{i=1}^{N}s_{i}\cdot C_{sum_{1}}+\sum_{i=1}^{N}e_{i}^{*}\mathrm{~mod~}q\end{array}Csum0+i=1NDi mod q=Csum0+i=1NsiCsum1+i=1Nei mod q

基于xmk-ckk的联邦学习流程

​ 以fedavg算法为基础,在每轮训练中所有设备均参与。

setup

​ 对所有客户端,生成各自的私钥。将聚合公钥广播给所有客户端。

本地训练

​ 对每个客户端来说,在本地数据上进行训练,得到更新后的梯度w。将其编码为明文m。使用聚合公钥将其加密为ct发送到服务器。

聚合密文

​ 服务器收到所有密文后计算csumc_{sum}csum,将c1发给各客户端进行计算。

解密份额上传

​ 每个客户端使用自己的si计算di,发给服务器。

服务器解密并更新模型

∑i=1Nmi≈Csum0+∑i=1NDi(mod⁡q)\sum_{i=1}^Nm_i\approx C_{sum_0}+\sum_{i=1}^ND_i\left(\operatorname{mod}q\right)i=1NmiCsum0+i=1NDi(modq)

​ 服务器计算m并将其作为下一轮的w。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐