Zama文章 之 TFHE深度解析-第一部分-密文形式

原文链接:TFHE Deep Dive - Part I - Ciphertext types

TFHE最初是FHEW方案的优化,后来逐渐加宽了方向,其安全性基于格困难问题LWE及其变体RLWE。实际上如今大部分FHE方案都是基于LWE的并使用带噪声密文。但是TFHE区别于其他方案的地方在于其可以非常快的自举,能在评估函数同时降低噪声。

讨论自举的细节需要看一些文章,所以别急着读懂这个操作,先让我们从TFHE的密文开始。

一些定义

一些数学术语需要明确:

  • 是模分圆多项式的整数多项式环,是的幂。实际上,其包含次数直到的整数多项式。
    
  • \mathcal{R}_q = (\mathbb{Z}/q\mathbb{Z})[X]/(X^N +1),此时系数是模q的,我们一般用来\mathbb{Z}_q表示\mathbb{Z}/q\mathbb{Z}
  • 我们的模约简是以0为中心的,比如模8就是用同余类\{ -4, -3, -2, -1, 0, 1, 2, 3 \}
  • \chi_{\mu, \sigma}是高斯概率分布,其均值为\mu,标准差为\sigma,如果\mu = 0,则我们简记为\chi_\sigma
  • 我们使用小写字母来表示(取模)整数(a, b, m, s, \ldots),用大写字母来表示多项式(A, B, M, S, \ldots)
  • 我们标记从a\in \mathbb{Z}b\in \mathbb{Z}包含的整数元素为[a..b]
  • 我们分别使用MSB和LSB来表示最高有效位和最低有效位。
  • 我们定义操作\lfloor \cdot \rceil为取最近整数值。

TFHE密文

在TFHE中我们使用三种密文:LWE、RLWE和RGSW密文。为什么我们用三种密文呢?简而言之,其各有不同属性用于同态操作,我们之后会提到。这都是基于LWE和其变体的。

本文会给出概括的定义来帮助你理解我们操作的内容,这些密文不仅用于TFHE,也用于其他基于LWE的FHE方案。

  • GLWE(概括的LWE):一个LWE和RLWE密文的概括
  • GGSW(概括的GSW):一个RSGW密文的概括
  • GLev:一个中间密文形式,对于更好理解GGSW密文很有用,下面会大量使用此密文。

让我们开始吧!

GLWE

此部分概括LWE和RLWE为GLWE。

首先我们需要一个密钥。对于GLWE密文,密钥形式是一个列表,包含k\mathcal{R}中的随机多项式:

\vec{S} = (S_0, \ldots, S_{k-1}) \in \mathcal{R}^k.

特别地,\mathcal{R}中元素之系数可取均匀二元分布、均匀三元分布、高斯分布或均匀分布。

注意这些类型密钥任意一种都可以找到参数确定其安全级别。

本文和TFHE原文都用均匀二元分布采样。

现在看如何加密消息。pq是正整数有p\leq q,定义\Delta = q/p。在TFHE中,二者通常取二之幂,若不是需在编码时舍入。我们称q位密文模(大的),q为明文模(小的),\Delta为缩放因子(scaling factor)。密钥\vec{S}加密消息M \in \mathcal{R}_p的GLWE密文是一个元组:

(A_0, \ldots, A_{k-1}, B) \in GLWE_{\vec{S}, \sigma}(\Delta M) \subseteq \mathcal{R}_q^{k+1}

其元素A_i,满足i\in [0..k-1 ],服从\mathcal{R}_q的均匀随机分布,B = \sum_{i=0}^{k-1} A_i \cdot S_i + \Delta M + E \in \mathcal{R}_qE \in \mathcal{R}_q之系数服从高斯分布\chi_{\sigma}。一般称(A_0, \ldots, A_{k-1})为掩码(mask),B为主体(body)。多项式\Delta M就是我们有时候称为M的编码。为计算\Delta M我们将消息M当做\mathcal{R}_q的元素。我们每次加密消息都取样新的随机性(对于掩码和噪声误差),所以每次加密(即使对于相同消息)也是不同的。这对于安全性很重要。在密钥\vec{S}与相同的编码\Delta M和高斯噪声的标准差\sigma的GLWE加密的集合,记为GLWE_{\vec{S}, \sigma}(\Delta M)

现在我们拥有一个在密钥\vec{S} = (S_0, \ldots, S_{k-1}) \in \mathcal{R}^k下加密的密文(A_0, \ldots, A_{k-1}, B) \in GLWE_{\vec{S}, \sigma}(\Delta M) \subseteq \mathcal{R}_q^{k+1},解密则用以下计算:

  1. B - \sum_{i=0}^{k-1} A_i \cdot S_i = \Delta M + E \in \mathcal{R}_q
  2. M = \lfloor (\Delta M + E)/\Delta \rceil

观察到消息M\Delta M + E的最高位部分(由于\Delta的相乘)而E是最低位部分。所以当|E|<\Delta/2(就是其系数都有|e_i|<\Delta/2),第二步就会正确解密。噪声如果不满足条件就会解密失败。下面图片展现了\Delta M + E的第i个系数。

小例子

为更好理解GLWE密文此处举例,仅用于观察,并不满足安全性。

选择q=64p=4,则\Delta = q/p = 16。取N=4k=2

我们从均匀二元分布取样密钥,含k个多项式,次数小于N

\vec{S} = (S_0, S_1) = (0 + 1\cdot X+1\cdot X^2 + 0\cdot X^3, 1 + 0\cdot X+1\cdot X^2 + 1\cdot X^3) \in \mathcal{R}^2.

加密消息M \in \mathcal{R}_p,其次数小于N,系数取值范围为\{ -2, -1, 0, 1 \}

M = - 2 + 1\cdot X+ 0\cdot X^2 - 1\cdot X^3.

取离散高斯分布噪声(小系数):

E = -1 + 1\cdot X+0\cdot X^2 + 1\cdot X^3 \in \mathcal{R}_q.

为了加密,我们计算主体:

B = A_0 \cdot S_0 + A_1 \cdot S_1 + \Delta M + E \in \mathcal{R}_q.

我们在\mathcal{R}_q上计算,在模X^N+1和模q上多项式操作,为了取模X^N+1,可以观察到X^N = X^4 \equiv -1 \mod X^4 +1。所以:

\begin{aligned} A_0 \cdot S_0 &= (17 -2 X -24 X^2 + 9 X^3)\cdot (X+X^2) \\ &= 17 X + (17 - 2 ) X^2 + (-2 -24) X^3 + (-24 +9) X^4 + 9 X^5 \\ &= 17 X + 15 X^2 -26 X^3 + 15 - 9 X \\ &= 15 + 8 X + 15 X^2 -26 X^3 \in \mathcal{R}_q. \end{aligned}

同样的:

A_1 \cdot S_1 = (-14 -X^2 + 21 X^3) \cdot (1 + X^2 + X^3) = -13 - 20 X +28X^2 +7 X^3 \in \mathcal{R}_q.

继续计算:

\Delta M = -32 + 16\cdot X+ 0\cdot X^2 - 16\cdot X^3 \in \mathcal{R}_q.

然后:

B = A_0 \cdot S_0 + A_1 \cdot S_1 + \Delta M + E = -31 +5 X -21 X^2 +30 X^3 \in \mathcal{R}_q.

所以加密为:

(A_0, A_1, B) = (17 -2 X-24 X^2 + 9 X^3, -14 -X^2 + 21 X^3, -31 +5 X -21 X^2 +30 X^3) \in \mathcal{R}^3_q.

那么当我们解密,则计算B - \sum_{i=0}^{k-1} A_i \cdot S_i \in \mathcal{R}_q,得到:

31 +17 X -15 X^3.

则:

\lfloor (31 +17 X -15 X^3)/16 \rceil = -2 + X -X^3 \in \mathcal{R}_p

这就是消息的解密,解密很顺利因为噪音(绝对值)小于\Delta/2 = 8

不重要(Trivial)GLWE密文

下面文中我们有时会用不重要GLWE密文。这些密文并非真正的加密,某种意义上他们隐藏了信息,但是更多的视为占位符:他们确实有着GLWE密文外形,但是消息是明文形式。一个消息的不重要密文是将所有A_i置0,B等于\Delta M

(0, \ldots, 0, \Delta M) \in \mathcal{R}_q^{k+1}.

当然,我们不用这种密文加密敏感信息!后面我们会展示如何用这个东西将公共信息加入到同态计算中。

LWE和RLWE

现在给出LWE和RLWE。

当演示k = n \in \mathbb{Z}N=1的GLWE就得到了LWE,对于N=1可以观察到\mathcal{R}_q(resp.\mathcal{R})就是\mathbb{Z}_q(resp.\mathbb{Z})。

对于k = 1N是二之幂我们得到RLWE。

公钥加密

上面都是私钥加密,公钥也能加密。实际上公钥是0的加密。为了加密信息,将这些0的加密随机组合并添加所需信息就足够了。本系列文章不用公钥加密,所以不考虑更多细节。详情见原文此处链接有一篇论文。

GLev

GLev密文在FHE中使用有一段时日了。其首次提出于CLOT21,用于表示GLWE和GGSW密文的中间形式,也可以概括为BGV的二之幂的加密。

一个GLev密文包含冗余:由一个相同信息加密的GLWE密文的列表组成,具有不同但非常精确的缩放因子。定义特定的\Delta需要两个参数:基底\beta,一般是二之幂,和一个层级数\ell \in \mathbb{Z}

(个人注释:此处原文公式给出的GLWE之间的符号是叉乘,但是根据上下文应该是逗号,我翻阅原文也是逗号,可能是我没理解他这个叉乘的含义,可能指代的是外积或张量积,下文GGSW也做了更改)

\left( GLWE_{\vec{S}, \sigma}\left(\frac{q}{\beta^1} M\right) , \ldots ,GLWE_{\vec{S}, \sigma}\left(\frac{q}{\beta^\ell} M\right) \right) = GLev^{\beta, \ell}_{\vec{S}, \sigma}(M) \subseteq \mathcal{R}_q^{\ell \cdot (k+1)}.

如果\betaheq不是二之幂则舍入,密钥和GLWE密文相同,若需解密,则用相应的缩放因子解密即可。用密钥\vec{S}加密相同消息M,用标准差为\sigma的高斯分布噪音,基底为\beta层级位\ell的Glev加密集合记为GLev^{\beta,\ell}_{\vec{S}, \sigma}(M)

Lev和RLev

二者和GLWE变成LWE和RLWE的规则一样。

GGSW

现在GLWE和GLev密文我们都知道了,那么理解GGSW就很容易了。

  • GLWE密文是\mathcal{R}_q的元素的向量(或一个一维矩阵),
  • GLev密文是一个GLWE密文向量(或一个\mathcal{R}_q元素的二维矩阵),
  • GGSW是一个GLev密文的向量(或一个\mathcal{R}_q元素的三维矩阵,或一个GLWE密文的二维矩阵)。

我们再增加一点冗余对于三维结构。

特别地,对于GGSW,每一个GLev密文加密M和密钥-S_i的乘积,最后一个GLev加密M

\left( GLev^{\beta, \ell}_{\vec{S}, \sigma}(-S_0 M) ,\ldots ,GLev^{\beta, \ell}_{\vec{S}, \sigma}(-S_{k-1} M) , GLev^{\beta, \ell}_{\vec{S}, \sigma}(M) \right) = GGSW^{\beta, \ell}_{\vec{S}, \sigma}(M) \subseteq \mathcal{R}_q^{(k+1) \times \ell (k+1)}.

密钥和GLWE和GLev的密文相同,为了解密就解密最后一个GLev的密文,对于相同消息M,用密钥\vec{S}加密,用标准差为\sigma的高斯分布噪音,基底为\beta层级位\ell的GGSW加密集合记为GGSW^{\beta,\ell}_{\vec{S}, \sigma}(M)

GSW和RGSW

与之前一样转换方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值