《XMK-CKKS: Extended Multiple Key Homomorphic Encryption over CKKS》 论文阅读笔记

《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

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

​ 定义聚合公钥为: b ~ = ∑ i = ⁡ 1 N b i = − ( ∑ i = ⁡ 1 N s i ) ⋅ a + ∑ i = ⁡ 1 N e i ( m o d   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

d i d_i di对明文 m i m_i mi进行加密: c t i = ( c i 0 , c i 1 ) = ( v i ⋅ b ~ + m i + e 0 d i , v i ⋅ a + e 1 d i ) ( m o d   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

C s u m = ∑ i = 1 N c t i ≜ ( C s u m 0 , C s u m 1 ) = ( ∑ i = 1 N c 0 d i , ∑ i = 1 N c 1 d i ) = ( ∑ i = 1 N v d i ⋅ b ~ + m i + e 0 d i ) , ∑ i = 1 N ( v d i ⋅ a + e 1 d i ) )   ( m o d   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

​ 对每个客户端 d i d_i di,计算自己的解密份额 D i D_i Di

D i = s i ⋅ C s u m 1 + e i ∗ = s i ⋅ ∑ i = 1 N ( v i ⋅ a + e 1 d i ) + e i ∗ ( 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)

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

C s u m 0 + ∑ i = 1 N D i   m o d   q = C s u m 0 + ∑ i = 1 N s i ⋅ C s u m 1 + ∑ i = 1 N e i ∗   m o d   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发送到服务器。

聚合密文

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

解密份额上传

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

服务器解密并更新模型

∑ i = 1 N m i ≈ C s u m 0 + ∑ i = 1 N D i ( 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值