《XMK-CKKS: Extended Multiple Key Homomorphic Encryption over CKKS》 论文阅读笔记
提出了xMK-CKKS,一种多密钥同态方案。客户端使用聚合公钥加密梯度,解密的时候需要所有客户端提供解密份额,协助服务器解密总和。基于FadAvg和XMK-CKKS提出一个ppfl模型。在半诚实模型下可以防止n-1个客户端和服务器的勾结。
《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)=(vi⋅b~+mi+e0di,vi⋅a+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=1∑Ncti≜(Csum0,Csum1)=(i=1∑Nc0di,i=1∑Nc1di)=(i=1∑Nvdi⋅b +mi+e0di),i=1∑N(vdi⋅a+e1di)) (mod q)
dec
对每个客户端did_idi,计算自己的解密份额DiD_iDi
Di=si⋅Csum1+ei∗=si⋅∑i=1N(vi⋅a+e1di)+ei∗(modq)\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=si⋅Csum1+ei∗=si⋅i=1∑N(vi⋅a+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=1Nsi⋅Csum1+∑i=1Nei∗ mod q
基于xmk-ckk的联邦学习流程
以fedavg算法为基础,在每轮训练中所有设备均参与。
setup
对所有客户端,生成各自的私钥。将聚合公钥广播给所有客户端。
本地训练
对每个客户端来说,在本地数据上进行训练,得到更新后的梯度w。将其编码为明文m。使用聚合公钥将其加密为ct发送到服务器。
聚合密文
服务器收到所有密文后计算csumc_{sum}csum,将c1发给各客户端进行计算。
解密份额上传
每个客户端使用自己的si计算di,发给服务器。
服务器解密并更新模型
∑i=1Nmi≈Csum0+∑i=1NDi(modq)\sum_{i=1}^Nm_i\approx C_{sum_0}+\sum_{i=1}^ND_i\left(\operatorname{mod}q\right)∑i=1Nmi≈Csum0+∑i=1NDi(modq)
服务器计算m并将其作为下一轮的w。

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