其他分享
首页 > 其他分享> > 同态加密-CKKS-旋转操作(Rotation)

同态加密-CKKS-旋转操作(Rotation)

作者:互联网

Rotation

rotation操作的论文出处:Bootstrapping for approximate homomorphic encryption sec4.2

一些数学上的问题

\[\tau\left(\mu\left(X^{k}\right)\right)=\left(\mu\left(\zeta^{k}\right), \mu\left(\zeta^{5 k}\right), \ldots, \mu\left(\zeta^{(2 n-3) k}\right)\right) \]

​ If \(c_{0}(X)+c_{1}(X) \cdot s(X)=\mu(X)\), then \(c_{0}\left(X^{k}\right)+c_{1}\left(X^{k}\right) \cdot s\left(X^{k}\right)=\mu\left(X^{k}\right)\)

​ \(k=5\) : rotation on \(\left\langle\zeta^{5}\right\rangle=\left\{\zeta, \zeta^{5}, \ldots, \zeta^{2 n-3}\right\}\) (as well as plaintext slots)

​ \(k=-1\) : complex conjugate


示例


rotation key的生成

计算 ct'=rotation (ct)

前文的 \(pk_\texttt{leftRot,r}\) 即为下文中的 \({\texttt{rk}_r}\),记号 \(p, k,r\) 的意义与前文相同。

\[\begin{aligned} &\texttt{ct'}\gets\texttt{KS}_{\texttt{rk}_r}(\kappa_{5^r}(\texttt{ct}))\\ &=\texttt{KS}_{\texttt{rk}_r}((c_0(x^k),c_1(x^k)))\\ &=(c_0(x^k),0)+\lfloor p^{-1}\cdot c_1(x^k)\cdot\texttt{rk}_r\rceil(\mod q_l)\\ &=(c_0(x^k),0)+\lfloor p^{-1}\cdot c_1(x^k)\cdot(-a_0\cdot s(x) + e_0 + p\cdot s(x^k), a_0) \rceil(\mod q_l)\\ &\text{以下是为查看解密正确性而写的冗长展开}\\ &=(c_0(x^k),0)\\ &\quad +\lfloor (p^{-1}\cdot c_1(x^k)\cdot(-a_0)\cdot s(x) + p^{-1}\cdot c_1(x^k)\cdot e_0 + c_1(x^k) \cdot p^{-1}\cdot p\cdot s(x^k), \qquad p^{-1}\cdot c_1(x^k)\cdot a_0) \rceil(\mod q_l)\\ &=(c_0(x^k)+ \lfloor p^{-1}\cdot c_1(x^k)\cdot(-a_0)\cdot s(x) + p^{-1}\cdot c_1(x^k)\cdot e_0 + c_1(x^k)\cdot s(x^k)\rceil, \qquad \lfloor p^{-1}\cdot c_1(x^k)\cdot a_0\rceil)(\mod q_l)\\ \end{aligned} \]

验证正确性

对于上述 \(\texttt{ct'}\) 和 \(\texttt{sk}=(1,s)\),代入解密流程,有 \(Dec(\texttt{ct'},sk)=\kappa_k(m)\)

\[\begin{aligned} &Dec(\texttt{ct'},sk)\\ &=(c_0(x^k)+ p^{-1}\cdot c_1(x^k)\cdot(-a_0)\cdot s(x) + p^{-1}\cdot c_1(x^k)\cdot e_0 + c_1(x^k)\cdot s(x^k), \qquad p^{-1}\cdot c_1(x^k)\cdot a_0)\cdot(1,s(x))(\mod q_l)\\ &=c_0(x^k)- p^{-1}\cdot c_1(x^k)\cdot a_0\cdot s(x) + p^{-1}\cdot c_1(x^k)\cdot e_0 + c_1(x^k)\cdot s(x^k)+ p^{-1}\cdot c_1(x^k)\cdot a_0\cdot s(x) (\mod q_l)\\ &=c_0(x^k) + c_1(x^k)\cdot s(x^k) + p^{-1}\cdot c_1(x^k)\cdot e_0 - p^{-1}\cdot c_1(x^k)\cdot a_0\cdot s(x)+p^{-1}\cdot c_1(x^k)\cdot a_0\cdot s(x)(\mod q_l)\\ &=c_0(x^k)+ c_1(x^k)\cdot s(x^k)+ p^{-1}\cdot c_1(x^k)\cdot e_0(\mod q_l)\\ &\approx\kappa_k(m)(\mod q_l)\\ \end{aligned} \]

对密文的某一部分进行rotation操作

问题:利用SEAL库对密文的某一部分进行rotation操作

答案:

  1. 利用 mask 向量先提取原密文要操作的部分并进行旋转;
  2. 再利用 mask' 提取原密文不需要操作的部分,
  3. 将两部分密文结果相加即可

注:

  1. 第二步的 mask’ 即为 第一步的 mask 取反(或者说取补)。

  2. 思路来源Operations for rotations in ciphertext using SEAL - Stack Overflow

  3. 此文最后一部分也有说明:同态加密:CKKS原理之旋转(Rotation)_PenguinLeee的博客-CSDN博客

标签:right,同态,cdot,texttt,CKKS,ct,Rotation,left,mod
来源: https://www.cnblogs.com/quixotiiiiic/p/16630906.html