[FHE]PEGASUS框架中的同态线性变换BSGS算法
来自阿里的PEGASUS框架中的同态线性变换(明文矩阵-密文向量乘法)算法。
原文链接:Pegasus: Bridging polynomial and non-polynomial evaluations in homomorphic encryption
标记比较复杂,尝试用尽量好理解的语言paraphase了一下,之后会补上两个例子(草稿纸上已经写好了)。
一个需要注意的点:RLWE密文的形式为\((a,b)=(m+e-a \cdot s,a)\),\(RLWE\)的上标表示环的模多项式次数以及系数模数,即明文\(m\)来自\(\mathbb{R}_q[X]/X^{\underline{n}}+1\)。使用符号\(\in\)而不是等于号\(=\)有为加密中的\(a\)为随机数,并且噪声\(e\)也是满足高斯分布的随机数。
算法
- 参数:
- 明文矩阵 \(M \in \mathbb{R}^{l \times \underline{n}}\),即\(l\)行\(\underline{n}\)列的矩阵;
- 密文向量 \(ct_{in} \in RLWE^{\overline{n},q}_{\overline{s}}(Ecd(\mathbf{b}, \Delta_{r}))\),\(\in\)的意思是\(ct_{in}\)是一个非确定性加密的结果。
- 分解矩阵:
令\(\ddot{n}=\max(l,\underline{n}),\widetilde{n}=\min(l,\underline{n})\),其中\(\ddot{n}\)为向量维数,\(\widetilde{n}\)为向量个数。将矩阵\(M\)分解为\(\widetilde{n}\)个向量\(\widetilde{m}_{j}(0 \leq j \leq \widetilde{n}-1)\),满足\(\widetilde{m}_{j}[r]=M[r \mod l,\quad r+j \mod \underline{n}](r=0,1, \cdots ,\ddot{n}-1)\)。 - Baby-Step 小步:
令\(\widetilde{g}=\lceil \sqrt{\widetilde{n}} \rceil\)。
以1为步长遍历\(\{0,1, \cdots ,\widetilde{g}-1\}\),计算:
\(c_g=RotL^{g}(ct_{in})(g=0,1, \cdots ,\widetilde{g}-1)\)。 - Giant-Step 大步:
令\(\widetilde{b}=\lceil \frac{\widetilde{n}}{\widetilde{g}} \rceil\)
以\(\widetilde{g}\)为步长遍历\(\widetilde{n}\),计算:
\(\widetilde{ct}=\Sigma^{\widetilde{b}-1}_{b=0}RotL^{b\widetilde{g}}(\Sigma^{\widetilde{g}-1}_{g=0}[Ecd(\widetilde{m}_{b\widetilde{g}+g}>>b\widetilde{g},\Delta^{'}_{r}) \cdot c_g])\)。 - 根据形状:
- 高矩阵(行数大于列数的矩阵):输出\(ct_{out}=Rescale(\widetilde{ct},\Delta_r)\)
- 宽矩阵(行数小于列数的矩阵):
还需要进行“旋转-求和”。令\(\gamma=\log(\frac{\underline{n}}{l})\),做\(\gamma\)次。
\(ct_0=\widetilde{ct},ct_j=RotL^{l \times 2^j}(ct_{j-1})+ct_{j-1}\);
输出\(ct_{out}=Rescale(ct_{\gamma},\Delta_r)\)。

浙公网安备 33010602011771号