CKKS EXPLAINED PART 1, VANILLA ENCODING AND DECODING
# CKKS EXPLAINED: PART 1, VANILLA ENCODING AND DECODING
# Introduction
同态加密是一个有前途的领域,它允许在加密数据上进行计算。一篇名为“同态加密是什么”的博文提供了广泛的解释,说明了同态加密的含义以及这一研究领域的重要性。
在本系列文章中,我们将深入研究 Cheon-Kim-Kim-Song (CKKS) 方案,该方案首次在论文《用于近似数算术的同态加密》中进行了讨论。==CKKS 允许我们在复数值向量上进行计算(因此也包括实数值)==。我们的目标是使用 Python 从头开始实现 CKKS,然后通过使用这些密码学原语,探索如何执行复杂操作,比如线性回归、神经网络等等。
上图提供了 CKKS 的高层视图。我们可以看到,一个消息
CKKS 使用多项式进行操作,因为与向量上的标准计算相比,它们在安全性和效率之间提供了很好的折衷。
一旦消息
如果我们用
实现同态加密方案的核心思想是在编码器、解码器、加密器和解密器上具有同态属性。这样,密文上的操作将被正确地解密和解码,并且提供的输出就像直接在明文上进行操作一样。
因此,在本文中,我们将看到如何实现编码器和解码器,而在后续文章中,我们将继续实现加密器和解密器,以构建一个同态加密方案。
相关知识:
分圆多项式
在数学中,对于任意正整数
- 它具有整数系数;
- 它是多项式
的因式,但不是 的因式,其中 ; - 它的根是所有与
互质的正整数 所对应的第 个原始单位根 。
换句话说,第
这个多项式也可以定义为具有整数系数的首一多项式(最高次项的系数为1),它是有理数域上任意一个原始
这表明如果
这些公式描述了分圆多项式的形式,具体如下:
- 如果
是一个素数,分圆多项式 为:
这里的
- 如果
,其中 是一个奇素数,分圆多项式 为:
在这个公式中,奇数次幂的系数是负的,这是为了满足分圆多项式的定义,其中的系数必须交替正负。
For n up to 16, the cyclotomic polynomials are::
规范嵌入(Canonical embedding)
规范嵌入(Canonical embedding)是用于编码和解码的一种技术,常用于将向量映射到多项式空间中。规范嵌入具有很好的性质,其中一个重要性质是它们是同构的(isomorphism),即向量空间与多项式空间之间存在一一映射,保持了向量和多项式之间的关系。
具体来说,规范嵌入确保了向量空间中的每个向量都对应唯一的多项式,反之亦然。这意味着,通过规范嵌入,我们可以将向量空间中的运算映射到多项式空间中,从而实现对编码和解码过程的管理和控制.
同构性质使得向量和多项式之间的转换更加灵活和高效,这在许多应用中都是非常有用的,尤其是在使用多项式表示数据时,比如在密码学中的同态加密方案中。
让我们通过一个具体的例子来进一步理解规范嵌入(Canonical embedding)的概念及其在将向量映射到多项式空间中的应用。
假设我们有一个三维向量空间
我们可以定义如下的规范嵌入映射:
这里,向量
同构的性质:
一一对应:每个向量
都映射到一个唯一确定的多项式 ,反之亦然。 运算保持:如果在向量空间中定义了向量的加法和标量乘法,那么这些运算通过映射
直接转换为多项式的相应运算:
这种映射方式使得原始的向量空间运算可以无缝地转换成多项式空间中的运算,非常适合在计算和理论分析中使用。
在密码学中,这种类型的嵌入尤其有用,例如在设计同态加密算法时。同态加密算法允许在加密数据上直接进行某些类型的计算,而无需先解密数据。通过规范嵌入,我们可以将实际的数据向量编码为多项式,然后在多项式形式的加密数据上执行运算,最后再解码回原始数据向量,而在整个过程中数据始终保持加密状态。
# Encoding in CKKS
CKKS利用整数多项式环的丰富结构来构建其明文空间和密文空间。然而,数据更常见地以向量的形式出现,而不是多项式的形式。
因此,有必要将输入
我们将我们的多项式的度数模数记为
为了理解如何将向量编码为多项式以及多项式上的计算如何反映在底层向量中,我们首先通过一个简单的示例来实验,其中我们简单地将一个向量
# Vanilla Encoding
在这里,我们将讨论简单情况下将
为此,我们将使用规范嵌入
这个想法很简单:要将多项式
因此,要解码一个多项式
==棘手的部分是将一个向量
进一步追求这个线索,我们得到以下方程组:
这可以看作矩阵相乘:
其中
因此我们有:
# Example
让我们现在看一个例子,以更好地理解我们到目前为止所讨论的内容。
设
我们的目标是编码以下向量:
正如我们所看到的,在解码多项式时,我们只需要在M次单位根的幂上对其进行评估。在这里,我们选择
一旦我们有了