【发布时间】:2018-09-18 15:46:47
【问题描述】:
SEAL (Simple Encrypted Arithmetic Library) 使用伽罗瓦自同构来启用批量计算(即,在一个操作中并行地添加和乘法多个密文)。
批处理过程在SEAL 2.3.1 manual 的 5.6 伽罗瓦自同构 和 7.4 CRT 批处理 部分进行了描述。
特别是,上面的两个部分指出以下环是同构的。
\prod_{i=0}^{n} \mathbb{Z}_t \cong \prod_{i=0}^{n} \mathbb{Z}_t[\zeta^{2i+1}] \cong \mathbb{Z}_t[x]/(x^n+1)
其中 \zeta 是单位模 t 的原始 2n 次根。
可以找到上述等式的图像here(Stackoverflow 暂时不允许我显示图像)
同样的部分还指出,可以使用 Galois Automorphims 将 \prod_{i=0}^{n} \mathbb{Z}_t 中的纯文本元组映射到 \mathbb{Z}_t[x]/(x^n+1)。
更准确地说,可以将 n 维 \mathbb{Z}_t-vector 明文视为 2×(n/2) 矩阵,并且伽罗瓦自同构对应于该矩阵的列和行的旋转。
在明文向量(行和列的旋转)上应用伽罗瓦自同构后,可以得到\mathbb{Z}_t[x]/(x^n+1)中的对应元素,用于批量计算。
我的问题如下。
1- 为什么\mathbb{Z}_t[\zeta^{2i+1}] 与\mathbb{Z}_t 同构?
2- 如何精确地使用伽罗瓦自同构将 n 维 \mathbb{Z}_t-vector 明文映射到 \mathbb{Z}_t[x]/(x^n+1) 中的元素?
或者换一种说法,Compose 操作是如何工作的?以及如何使用伽罗瓦自同构(行和列旋转)来计算它?
================================================ ==========================
【问题讨论】:
-
也许在math.stackexchange.com进行更好的研究
-
数学符号似乎不起作用,您可能会在 math.stackexchange.com 上做得更好
标签: seal