【问题标题】:Use of Galois Automorphisms in Homomorphic Encryption在同态加密中使用伽罗瓦自同构
【发布时间】:2018-09-18 15:46:47
【问题描述】:

SEAL (Simple Encrypted Arithmetic Library) 使用伽罗瓦自同构来启用批量计算(即,在一个操作中并行地添加和乘法多个密文)。

批处理过程在SEAL 2.3.1 manual5.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


【解决方案1】:
  1. 同构只是简单地在单位根处计算多项式以获得 Zt 的元素。请注意,这是有效的,因为相关的统一根本身在 Zt 中。整个批处理系统只是一个古老的中国剩余定理:批处理槽是明文多项式模 x-zeta2i+1 对不同 i 的约简。回去需要标准的 CRT 重建。

  2. 在实践中,CRT 是通过数论变换(有限域上的 FFT)及其逆变换实现的。伽罗瓦自同构通过置换它们来作用于统一根,形成两个轨道。如果我们以这样一种方式对明文矩阵槽进行排序,即对应于原始根的下一个伽罗瓦共轭的批处理槽值始终位于对应于该原始根的槽值的左侧(或右侧),则伽罗瓦动作将置换循环矩阵的行。两个轨道也可以互换,对应柱子旋转(交换)。

由于 SEAL 使用的 NTT 算法导致所谓的“位反转”输出顺序,事情变得更加复杂。在执行任何 NTT 或逆 NTT 之前确定批处理值的正确顺序时,需要考虑这一点。

【讨论】:

  • “统一的相关根在 Z_t 中”。这是因为多项式模 x^n+1 在 Z_t 上分裂。对吗?
猜你喜欢
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
相关资源
最近更新 更多