Skip to article frontmatterSkip to article content

Basefold 笔记:Random Foldable Codes

前面几篇文章已经提到了 BaseFold 通过引入 foldable code 的概念,扩展了 FRI IOPP,并且结合 Sumcheck 协议能够支持做 Multi-linear Polynomial 的 PCS。接下来还剩下一个关键的问题,那就是这样的 foldable code 如何显式地进行构造呢?我们想要这样的可折叠编码(foldable code)具有以下几个性质:

  1. 能够高效编码
  2. 无视域的大小,即对于小域也适用
  3. 能够适用于多元线性多项式的 PCS

还有对于编码比较重要的一点,就是考虑其编码的最小相对海明距离(Minimum Relative Hamming distance)。如果读者比较熟悉 FRI 协议,想必对其用到的 Reed-Solomon 编码并不陌生,其有一个很好的性质,便是其距离能达到 Singleton bound,即其距离满足 d=nk+1d = n - k + 1 ,这也被称之为属于 Maximum Distance Separable (MDS)编码。这样的编码很好的平衡了编码长度与其纠错能力,即用最少的冗余提供了最强的错误检测与纠错能力,这大大节省了编码的空间。放在 PCS 协议中,验证者能够更加高效的进行检测了。因此从实用角度考虑,我们还希望这样的可折叠编码满足第 4 点:

  1. 具有良好的相对最小距离

BaseFold 论文[ZCF23]中就构造了这样一种称为 Random Foldable Code (RFCs) 的编码,满足上述的性质。接下来我们看看它是如何做到这几点的。

高效编码算法

这一系列的第一篇文章中其实已经提到了 foldable linear code 的概念以及 BaseFold 的编码算法。这里做下简单的回顾。

定义 1 [ZCF23, Definition 5] ((c,k0,d)(c, k_{0}, d) - foldable linear codes). 令 c,k0,dNc, k_{0}, d \in \mathbb{N} 以及 F\mathbb{F} 表示一个有限域。一个以 Gd\mathbf{G}_{d} 为生成矩阵的线性编码 Cd:Fk02dFck02dC_d : \mathbb{F}^{k_0 \cdot 2^d} \rightarrow \mathbb{F}^{c k_0 \cdot 2^d} 被称为是 foldable 是说:如果存在一系列的生成矩阵 (G0,,Gd1)(\mathbf{G}_0, \ldots, \mathbf{G}_{d-1}) 以及对角矩阵 (T0,,Td1)(T_0, \ldots, T_{d-1}) 以及 (T0,,Td1)(T_0',\ldots,T_{d-1}') 使得对于任意的 i[1,d]i \in [1,d] 都有

  1. 对角矩阵 Ti1,Ti1Fck02i1×ck02i1T_{i-1},T_{i-1}' \in F^{c k_0 \cdot 2^{i-1} \times c k_0 \cdot 2^{i-1}} 满足对任意的 j[ck02i1]j \in [c k_0 \cdot 2^{i-1}] 都有 diag(Ti1)[j]diag(Ti1)[j]\text{diag}(T_{i-1})[j] \neq \text{diag}(T_{i-1}')[j] 成立;
  2. 矩阵 GiFk02i×ck02i\mathbf{G}_i \in F^{k_0 \cdot 2^i \times c k_0 \cdot 2^i} (按行进行排列)等于
Gi=[Gi1Gi1Gi1Ti1Gi1Ti1].\mathbf{G}_i = \begin{bmatrix} \mathbf{G}_{i-1} & \mathbf{G}_{i-1} \\ \mathbf{G}_{i-1} \cdot T_{i-1} & \mathbf{G}_{i-1} \cdot T'_{i-1} \\ \end{bmatrix}.

为了高效的构造一个 foldable linear code,采用均匀采样的方式生成,先定义这样的一簇随机可折叠分布(random foldable distributions)。

定义 2 [ZCF23, Definition 9] ((c,k0)(c, k_{0}) - foldable distributions) 固定有限域 F\mathbb{F} 以及 c,k0Nc, k_{0}\in \mathbb{N} 。令 G0Fk0×ck0\mathbf{G}_0 \in \mathbb{F}^{k_0 \times c k_0} 是一个满足最大距离可分性的 [ck0,k0][c k_0, k_0] 线性编码的生成矩阵,并且设 D0D_0 为输出 G0\mathbf{G}_0 的分布,概率为 1 。对每个 i>0i > 0 ,我们递归的定义分布 DiD_i ,该分布会采样生成矩阵 (G0,G1,,Gi)(\mathbf{G}_0, \mathbf{G}_1, \ldots, \mathbf{G}_i) ,其中 GiFki×ni\mathbf{G}_i \in F^{k_i \times n_i}ki:=k02ik_i := k_0 \cdot 2^ini:=ckin_i := c k_i

  1. 采样 (G0,,Gi1)Di1(\mathbf{G}_0, \ldots, \mathbf{G}_{i-1}) \leftarrow D_{i-1}
  2. 采样 diag(Ti1)$(F×)ni1\text{diag}(T_{i-1}) \leftarrow \$ (\mathbb{F}^{\times})^{n_{i-1}} 并定义 Gi\mathbf{G}_i
Gi=[Gi1Gi1Gi1Ti1Gi1Ti1].\mathbf{G}_i = \begin{bmatrix} \mathbf{G}_{i-1} & \mathbf{G}_{i-1} \\ \mathbf{G}_{i-1} \cdot T_{i-1} & \mathbf{G}_{i-1} \cdot -T_{i-1} \\ \end{bmatrix}.

一旦初始的生成矩阵 G0\mathbf{G}_0 确定之后,只需从 F×\mathbb{F}^{\times} (表示从 F\mathbb{F} 去掉 0 元素)均匀采样生成 n0n_{0} 个随机数,生成对角矩阵 T0T_{0} 的对角元素,就可以得到下一个生成矩阵 G1\mathbf{G}_1 ,再依次递归下去生成 (G2,,Gi)(\mathbf{G}_2, \ldots, \mathbf{G}_i) 。在 PCS 中,以均匀采样的方式生成可折叠编码的方式能够帮助实现高效的证明者。

注意上述定义中说到要求初始的 G0\mathbf{G}_0 是一个满足 MDS 性质线性编码的生成矩阵,在论文 [ZCF23] 脚注中提到,这一点并不是必须要满足的,添加该性质只是为了后文简化对编码距离的分析,其实关于距离的分析对于任意的线性编码都是成立的。

协议 1 Encd\text{Enc}_{d} [ZCF23, Protocol 1]: BaseFold 编码算法

输入:原消息 mFkd\mathbf{m} \in \mathbb{F}^{k_d}

输出:wFnd\mathbf{w} \in \mathbb{F}^{n_d} 使得 w=mGd\mathbf{w} = \mathbf{m} \cdot \mathbf{G}_d

参数:G0\mathbf{G}_0 以及对角矩阵 (T0,T1,,Td1)(T_0, T_1, \ldots, T_{d-1})

  1. If d=0d = 0 (即 mFk0\mathbf{m} \in \mathbb{F}^{k_0} ): (a) 返回 Enc0(m)\text{Enc}_0(\mathbf{m})
  2. else (a) 分解 m:=(ml,mr)\mathbf{m} := (\mathbf{m}_l, \mathbf{m}_r) (b) 令 l:=Encd1(ml)\mathbf{l} := \text{Enc}_{d-1}(\mathbf{m}_l)r:=Encd1(mr)\mathbf{r} := \text{Enc}_{d-1}(\mathbf{m}_r) 以及 t=diag(Td1)\mathbf{t} = \text{diag}(T_{d-1}) (c) 返回 (l+tr,ltr)(\mathbf{l} + \mathbf{t} \circ \mathbf{r}, \mathbf{l} - \mathbf{t} \circ \mathbf{r})

通过分析协议 1 ,可以看出编码得到 CdC_{d} 只需要 dnd2\frac{dn_{d}}{2} 域乘法与 dndd n_{d} 域加法,即需要 0.5nlogn0.5 n \log n 域乘法和 nlognn \log n 的域加法,总体来说编码复杂度是 O(nlogn)O(n \log n) 的。至此我们已经介绍了 BaseFold 给出的 Random linear Foldable Codes 的显式构造,且验证了其确实是高效编码的。

多项式拯救世界:基于多项式的编码

接下来我们来看看 Random Foldable Code 的第 2 个和第 3 个性质:

  1. 无视域的大小,即对于小域也适用
  2. 能够适用于多元线性多项式的 PCS

前面提到过 Reed-Solomon 编码能够达到 Singleton 界限,但是其仅在字母表比较大(即 qnq \gg n )的情况下才能实现这种显著的特性。好在我们可以扩展 Reed-Solomon 编码,称之为 Reed-Muller 编码,这样我们就从一元多项式编码进入到了多元多项式编码的世界。这使得我们能够在小域上( qnq \ll n )适用了,虽然这其中会失去一点距离和纠错能力的平衡,但是这是值得的。

在 [ZCF23] 的附录 D 中告诉我们 Random Foldable Code 就是截断的 Reed-Muller 编码(Punctured Reed-Muller Codes)的一个特例。这样 Random Foldable Code 就可以无视域的大小,同时由于进入到了多元多项式的世界,也就能够适用于多元线性多项式的 PCS 了。

我们知道 Reed-Solomon 编码的编码空间是由不超过一个次数 dd 的一元多项式组成的集合,那 Reed-Muller 编码其实就是从一元多项式扩展到了多元多项式,其编码空间就是多元多项式的总次数不超过 dd 的集合。

对于 n,d,qn, d, qd<qd < q ,定义 Reed-Muller 编码为([GJX15])

RMq(n,d):={(F(u))uFqn:FFq[X1,,Xn],deg(F)d}.\text{RM}_q(n,d) := \{(F(\mathbf{u}))_{\mathbf{u} \in \mathbb{F}_q^n} : F \in \mathbb{F}_q[X_1, \cdots, X_n], \deg(F) \le d \}.

Reed-Muller code 表示的是总次数不超过 ddnn 元多项式在 Fqn\mathbb{F}_q^n 上的取值的集合。编码 RMq(n,d)\text{RM}_q(n,d) 的长度为 qnq^n ,维数为 (n+dn)\binom{n+d}{n}

从字面上来理解 Punctured Reed-Muller 编码,其就是 Reed-Muller code 的一个截断。具体来说就是估计的点 u\mathbf{u} 不取到所有的 Fqn\mathbf{F}_q^n ,只取到其中的一部分,设其为 T={u1,u2,,uN}\mathcal{T} = \{ \mathbf{u}_1, \mathbf{u}_2, \ldots, \mathbf{u}_N \} ,通常的 Punctured Reed-Muller code 的定义允许这个集合 T\mathcal{T} 是多重集合 (multiset),即允许其中有重复元素,这里不做该要求。记 RMq(n,d)T\text{RM}_q(n,d)|_{\mathcal{T}}Fq\mathbb{F}_q - 线性码:

RMq(n,d)T:={(F(u1),F(u2),,F(uN)):FFq[X1,,Xn],deg(F)d}.\text{RM}_q(n,d)|_{\mathcal{T}} := \{(F(\mathbf{u}_1),F(\mathbf{u}_2), \cdots, F(\mathbf{u}_N)): F \in \mathbb{F}_q[X_1, \cdots, X_n], \deg(F) \le d \}.

这就被称为 punctured Reed-Muller code ([GJX15])。通过定义也可以发现其就是 Reed-Muller 编码的一个子集,只是选取了其中的 NN 个点,这和字面上的“截断的(punctured)”也是相符的。

有了上述关于 punctured Reed-Muller code 的概念,我们来看看论文 [ZCF23] 附录 D 中给出的下面这个引理,它告诉我们 foldable linear codes 就是 punctured Reed-Muller codes 的一个特例。

引理 1 [ZCF23, Lemma 11] (Foldable Punctrured Reed-Muller Codes). 令 CdC_d 是一个可折叠的线性编码 (foldable linear code) ,其生成矩阵是 (G0,,Gd1)(\mathbf{G}_0, \ldots, \mathbf{G}_{d-1}) ,对角矩阵为 (T0,,Td1)(T_0, \ldots, T_{d-1}), (T0,,Td1)(T_0', \ldots, T_{d-1}') 。那么存在一个子集 DFdD \subset \mathbb{F}^d 使得 Cd={(P(x):xD):PF[X1,,Xd]}C_d = \{(P(\mathbf{x}) : \mathbf{x} \in D) : P \in \mathbb{F}[X_1, \ldots, X_d]\} ,即 CdC_d 中的每个码字都是一个多元线性多项式 PPDD 中的每个点的取值。

证明:用归纳法证明。为了叙述的简单,考虑 C0C_0 是重复码。对于最基本的情况, Enc0(m)=mm\text{Enc}_0(m) = m \| \ldots \| m 是一个次数为 0 的多项式 PmP \equiv mcc 个不同点的 evaluation。假设对于 i<di < d ,存在一个集合 DiD_i 使得 Ci={(P(x):xDi):PF[X1,,Xi]}C_i = \{(P(\mathbf{x}): \mathbf{x} \in D_i): P \in \mathbb{F}[X_1, \ldots, X_i]\} 。不失一般性,通过任意分配一个整数 j[1,c2i]j \in [1, c \cdot 2^i]DiD_i 中的每个元素来进行索引。根据这个顺序,将 xjx_j 表示为 DiD_i 中的第 jj 个元素。

t=diag(Ti),t=diag(Ti),ni=c2i,vF2i+1t = \text{diag}(T_i), t' = \text{diag}(T'_i), n_i = c \cdot 2^i, \mathbf{v} \in \mathbb{F}^{2^{i+1}} ,令 PF[X1,,Xi+1]P \in \mathbb{F}[X_1, \ldots, X_{i+1}] 表示是以 v\mathbf{v} 中的元素为系数的多项式。最后,令 Pl,PrF[X1,,Xi]P_l, P_r \in \mathbb{F}[X_1, \ldots, X_{i}] 使得 P(X1,,Xi+1)=Pl(X1,,Xi)+Xi+1Pr(X1,,Xi)P(X_1, \ldots, X_{i+1}) = P_l(X_1, \ldots, X_{i}) + X_{i+1} P_r(X_1, \ldots, X_{i}) 。则有

Enci+1(v)=Enci(vl)+diag(Ti)Enci(vr)Enci(vl)+diag(Ti)Enci(vr)(由 Protocol 1 编码算法得)=(Pl(x1),,Pl(xn))+diag(Ti)(Pr(x1),,Pr(xn))(Pl(x1),,Pl(xn))+diag(Ti)(Pr(x1),,Pr(xn))(由归纳假设可得)=(Pl(x1)+t1Pr(x1),,Pl(xn)+tnPr(xn),Pl(x1)+t1Pr(x1),,Pl(xn)+tnPr(xn))(由 Hadamard 积的定义得)=(P(x1,t1),,P(xn,tn),P(x1,t1),,P(xn,tn))(由 P 的定义得)\begin{aligned} \text{Enc}_{i+1}(\mathbf{v}) & = \text{Enc}_{i}(\mathbf{v}_l) + \text{diag}(T_i) \circ \text{Enc}_{i}(\mathbf{v}_r) \quad \| \quad \text{Enc}_{i}(\mathbf{v}_l) + \text{diag}(T_i) \circ \text{Enc}_{i}(\mathbf{v}_r) \\ & \quad {\color{blue}{\text{(由 Protocol 1 编码算法得)}}} \\ & = (P_l(\mathbf{x}_1), \ldots, P_l(\mathbf{x}_n)) + \text{diag}(T_i) \circ (P_r(\mathbf{x}_1), \ldots, P_r(\mathbf{x}_n)) \\ & \| \quad (P_l(\mathbf{x}_1), \ldots, P_l(\mathbf{x}_n)) + \text{diag}(T'_i) \circ (P_r(\mathbf{x}_1), \ldots, P_r(\mathbf{x}_n)) \\ & \quad {\color{blue}{\text{(由归纳假设可得)}}} \\ & = (P_l(\mathbf{x}_1) + t_1 P_r(\mathbf{x}_1), \ldots, P_l(\mathbf{x}_n) + t_n P_r(\mathbf{x}_n), P_l(\mathbf{x}_1) + t'_1 P_r(\mathbf{x}_1), \ldots, P_l(\mathbf{x}_n) + t'_n P_r(\mathbf{x}_n)) \\ & \quad {\color{blue}{\text{(由 Hadamard 积的定义得)}}} \\ & = (P(\mathbf{x}_1,t_1), \ldots, P(\mathbf{x}_n, t_n), P(\mathbf{x}_1,t'_1), \ldots, P(\mathbf{x}_n, t'_n))\\ & \quad {\color{blue}{\text{(由 $P$ 的定义得)}}} \end{aligned}

因此,令 Di+1={(x1,t1),,(xn,tn),(x1,t1),,(xn,tn)}D_{i+1} = \{(\mathbf{x}_1,t_1), \ldots, (\mathbf{x}_n, t_n), (\mathbf{x}_1,t'_1), \ldots, (\mathbf{x}_n, t'_n)\} ,对于 i+1i + 1 时引理也成立。因此由归纳法得证。\Box

良好的相对最小距离

最后,我们关注 Random Foldable Code (RFCs) 满足的第 4 个性质:

  1. 具有良好的相对最小距离

论文[ZCF23]中证明了 RFCs 最小海明(Hamming distance)的紧的界限(“紧的”界限意味着实际是能够达到的界限)。例如,一个在 256 位有限域上具有消息长度 225 和码率 18\frac{1}{8} 的 RFC,其相对最小距离以压倒性概率为 0.728 。而对于码率为 18\frac{1}{8} 的 code ,其能够达到的最大的相对最小 Hamming 距离大约是 118=0.8751 - \frac{1}{8} = 0.875 ,可以看到 0.728 还是比较接近 0.875 的。这在实际中是比较实用的,并且这也意味着以压倒性概率(overwhelming probability),均匀采样的 foldable code(能够实现高效的PCS证明者)也具有良好的相对最小距离(能够实现高效的PCS验证者)。

上面说到的以“压倒性的概率”,这是由于我们在编码的过程中引入的分布 (G0,,Gd)Dd(\mathbf{G}_0, \ldots, \mathbf{G}_{d}) \leftarrow D_{d} 导致的。当均匀的从 F×\mathbb{F}^{\times} 中采样生成对角矩阵 TiT_{i} ,并令 Ti=TiT'_{i} = -T_{i} ,那么在选取的 (T1,,Td)(T_1, \ldots,T_{d}) 基础上,以压倒性的概率(overwhelming probability) 得到的 CdC_{d} 的相对最小距离等于

1(ϵFdc+ϵFlogFi=0d(ϵF)di(0.6+2log(ni/2)+λni))(1)1 - \left( \frac{\epsilon_{\mathbb{F}}^d}{c} + \frac{\epsilon_{\mathbb{F}}}{\log |\mathbb{F}|} \sum_{i = 0}^{d} (\epsilon_{\mathbb{F}})^{d-i} \left( 0.6 + \frac{2 \log(n_i / 2) + \lambda}{n_i} \right) \right) \tag{1}

其中,cc 是码率的倒数,ϵF=logFlogF1.001\epsilon_{\mathbb{F}} = \frac{\log|\mathbb{F}|}{\log|\mathbb{F}| - 1.001}nin_{i} 是编码的长度,dd 是消息长度的对数,λ 是安全参数。如果选取 λ=128\lambda = 128 ,意思是 (c,k0,d)(c,k_{0},d) - random foldable linear codes 能够以至少为 121281 - 2^{-128} 的概率达到上述的相对最小距离。

下面来看看 (1)(1) 式的结果是如何得到的。我们现在的目标是想分析可折叠的随机编码(Foldable Random Codes) CdC_{d} 的相对最小距离。对于一个线性编码,其最小距离等于其中非零码字的最小 Hamming weight (Hamming weight 的意思就是一个向量中非零分量的个数),这是因为

d=minc1c2c1,c2CdΔ(c1,c2)=minc1c2c1,c2Cdwt(c1c2)=minc0,cCdwt(c)d = \min_{\substack{\vec{c_1} \neq \vec{c_2} \\ \vec{c_1}, \vec{c_2} \in C_d}} \Delta(\vec{c_1}, \vec{c_2}) = \min_{\substack{\vec{c_1} \neq \vec{c_2} \\ \vec{c_1}, \vec{c_2} \in C_d}} wt(\vec{c_1} - \vec{c_2}) = \min_{\substack{\vec{c} \neq \vec{0}, \vec{c} \in C_d}} wt(\vec{c} )

由于是线性编码,因此上式中的 c1c2\vec{c_1} - \vec{c_2} 也是 CdC_d 中的一个码字,从而最后一个等式成立。那么我们想证明对于任意非零消息,即 m0\forall \vec{m} \neq \vec{0} ,编码之后的码字 Encd(m)\text{Enc}_d(\vec{m}) 中没有太多的零分量,不妨设最多为 tdt_d 个,用 nzero()\text{nzero}(\cdot) 来表示一个向量中零分量的个数, 则我们想要说明

m0,nzero(Encd(m))td(2)\forall \vec{m} \neq \vec{0}, \quad \text{nzero}(\text{Enc}_d(\vec{m})) \le t_d \tag{2}

ndn_d 表示码字 Encd(m)\text{Enc}_d(\vec{m}) 的长度,那么由 (2)(2) 可得到

m0,wt(Encd(m))ndtd\forall \vec{m} \neq \vec{0}, \quad wt(\text{Enc}_d(\vec{m})) \ge n_d - t_d

因此 CdC_d 能够达到的相对最小距离就为

Δ(Cd)=minc0,cCdwt(c)nd=ndtdnd=1tdnd(3)\Delta(C_d) = \frac{\min_{\substack{\vec{c} \neq \vec{0}, \vec{c} \in C_d}} wt(\vec{c} )}{n_d} = \frac{n_d - t_d}{n_d} = 1 - \frac{t_d}{n_d} \tag{3}

(1)(1) 式的结果就是通过 (3)(3) 式计算而来的,现在剩下的任务就是分析 tdt_d 具体等于多少了,也就是对于任意非零的消息,编码之后的码字中的零分量的个数有多少。

借助归纳法

借助于强有力的工具——归纳法,我们来分析 tdt_d 。假设以压倒性的概率(基于对角矩阵 T0,,Ti1T_0, \ldots, T_{i-1} 的选择),对于任意的非零消息 mFki {0ki}\vec{m} \in \mathbb{F}^{k_i} \ \{0^{k_i}\} ,编码之后的 Enci(m)\text{Enc}_i(\vec{m}) 最多有 tit_i 个零分量。我们来分析 i+1i + 1 的情况。对于任意的非零消息 m=(ml,mr)F2ki\vec{m} = (\vec{m_l}, \vec{m_r}) \in \mathbb{F}^{2k_i}

Enci+1(m)=(ml,mr)[GiGiGiTiGiTi]=(mlGi+mlGiTi,mlGimlGiTi)=(Enci(m)+Enci(m)diag(Ti),Enci(m)Enci(m)diag(Ti)):=(MlMr)\begin{aligned} \text{Enc}_{i+1}(\vec{m}) & = (\vec{m_l}, \vec{m_r}) \begin{bmatrix} \mathbf{G}_i & \mathbf{G}_i \\ \mathbf{G}_i \cdot T_i & \mathbf{G}_i \cdot -T_i \end{bmatrix} \\ & = (\vec{m_l}\mathbf{G}_i + \vec{m_l}\mathbf{G}_i\cdot T_i, \vec{m_l}\mathbf{G}_i - \vec{m_l}\mathbf{G}_i\cdot T_i) \\ & = (\text{Enc}_i(\vec{m}) + \text{Enc}_i(\vec{m}) \circ \text{diag}(T_i), \text{Enc}_i(\vec{m}) - \text{Enc}_i(\vec{m}) \circ \text{diag}(T_i)) \\ & := (\mathbf{M}_l \| \mathbf{M}_r) \end{aligned}

也就是看看向量 (MlMr)(\mathbf{M}_l \| \mathbf{M}_r) 中零分量的个数有多少。将 Ml\mathbf{M}_lMr\mathbf{M}_r 分开表示,即为

Ml=Enci(ml)+Enci(mr)diag(Ti)Mr=Enci(ml)Enci(mr)diag(Ti)\begin{aligned} \mathbf{M}_l = \text{Enc}_i(\vec{m_l}) + \text{Enc}_i(\vec{m_r}) \circ \text{diag}(T_i) \\ \mathbf{M}_r = \text{Enc}_i(\vec{m_l}) - \text{Enc}_i(\vec{m_r}) \circ \text{diag}(T_i) \end{aligned}

t=diag(Ti)\mathbf{t} = \text{diag}(T_i) ,对每一个 j[1,ni]j \in [1, n_i] ,设 Aj=Enci(ml)[j]A_j = \text{Enc}_i(\vec{m_l})[j]Bj=Enci(mr)[j]B_j = \text{Enc}_i(\vec{m_r})[j] ,定义一个函数:

fj(x)=Aj+xBj(4)f_j(x) = A_j + x B_j \tag{4}

如果 fj(t[j])=0f_j(\mathbf{t}[j]) = 0 或者 fj(t[j])=0f_j(-\mathbf{t}[j]) = 0 ,就说明 Ml[j]=0\mathbf{M}_l[j] = 0 或者 Mr[j]=0\mathbf{M}_r[j] = 0 ,也就找到了编码之后的零分量。先从 AjA_jBjB_j 是否为零来分析 fj(x)f_{j}(x) 是否为零,分为以下几种情况:

Aj=0A_{j} = 0Aj0A_{j} \neq 0
Bj=0B_{j} = 0fj(x)0f_j(x) \equiv 0fj(x)=Aj0f_{j}(x) = A_{j} \neq 0
Bj0B_{j} \neq 0
fj(x)=xBjf_{j}(x) = x B_{j}fj(x)=Aj+xBjf_{j}(x) = A_{j} + x B_{j}

首先考虑第一种情况,那就是 Aj=Bj=0A_j = B_j = 0 ,可以发现无论 xx 取什么值,fj(x)0f_j(x) \equiv 0 ,此时 Ml[j]=0\mathbf{M}_l[j] = 0 并且 Mr[j]=0\mathbf{M}_r[j] = 0 。满足这样的指标 j[ni]j \in [n_i] 也有多少呢?我们用一个集合 S[ni]S \subseteq [n_i] 来表示,并且由归纳假设知道 Sti|S| \le t_i ,用 mi+1(S)m_{i+1}(S) 来表示那些非零的消息能满足 Aj=Bj=0A_j = B_j = 0 ,即

S={j[1,ni]:Aj=Bj=0}.S = \{ j \in [1, n_i]: A_j = B_j = 0 \}.

在这种情况下,Ml[j]=Mr[j]=0\mathbf{M}_l[j] = \mathbf{M}_r[j] = 0 , 那么 (MlMr)(\mathbf{M}_l \| \mathbf{M}_r) 中已经找到了有 2S2 |S| 个分量为零了。

考虑第 2 种情况,Aj0,Bj=0A_j \neq 0, B_j = 0 ,此时 fj(x)=Aj0f_{j}(x) = A_{j} \neq 0 ,这种情况下肯定找不到零分量。

下面考虑表格中的最后一行,Bj0B_j \neq 0 ,此时指标 jj 肯定不在 SS 中,我们定义一个指标集合 SS\urcorner S^* \subseteq \urcorner S 使得

S={j[1,ni]\S,Bj0}\urcorner S^* = \{j \in [1, n_i] \backslash S, B_j \neq 0\}

对于每一个 jSj \in \urcorner S^* ,定义一个随机变量

Xj=1{fj(t[j])=0}+1{fj(t[j])=0}X_j = 1 \{f_j(\mathbf{t}[j]) = 0\} + 1 \{f_j(-\mathbf{t}[j]) = 0\}

其中的 1()1(\cdot) 表示一个指示函数,如果括号中的条件成立则为 1 ,否则为 0 。那么 XjX_j 的值就反映了对于一个 jSj \in \urcorner S^* ,向量 Ml\mathbf{M}_lMr\mathbf{M}_rjj 这个位置上总共有几个分量为零,其可能的取值就有 {0,1,2}\{0,1,2\} 个。首先,可以发现,XjX_j 是一个独立的 Bernulli 试验,因为 t[j]\mathbf{t}[j] 是从 F×\mathbb{F}^{\times} 中独立采样的。令 zjF×z_j \in \mathbb{F}^{\times} ,使得 fj(zj)=0f_j(z_j) = 0 。那么当 t[j]=zj\mathbf{t}[j] = z_j 时, 1{fj(t[j])=0}=11 \{f_j(\mathbf{t}[j]) = 0\} = 1 ,而当 t[j]=zj\mathbf{t}[j] = - z_j 时,1{fj(t[j])=0}=11 \{f_j(-\mathbf{t}[j]) = 0\} = 1 。接下来分析 XjX_j 的取值:

  1. Xj=2X_j = 2 。此时说明 fj(t[j])=0f_j(\mathbf{t}[j]) = 0fj(t[j])=0f_j(-\mathbf{t}[j]) = 0 ,说明 t[j]=zj=zj\mathbf{t}[j] = z_j = -z_j ,这说明 zj=0z_j = 0 ,这是不可能的,因为 zjF×z_j \in \mathbb{F}^{\times}
  2. Xj=1X_j = 1 。此时说明 fj(t[j])=0f_j(\mathbf{t}[j]) = 0fj(t[j])=0f_j(-\mathbf{t}[j]) = 0 ,此时 t[j]=zj\mathbf{t}[j] = z_j 或者 t[j]=zj\mathbf{t}[j] = -z_j ,其发生的概率为 2F1\frac{2}{|\mathbb{F}| - 1}
  3. Xj=0X_j = 0 。说明 t[j]zj\mathbf{t}[j] \neq z_j 并且 t[j]zj\mathbf{t}[j] \neq -z_j ,其发生的概率自然为 12F11 - \frac{2}{|\mathbb{F}| - 1}

jj 取遍 S\urcorner S^* ,将所有的 XjX_j 相加,就得到了此时 (MlMr)(\mathbf{M}_l \| \mathbf{M}_r) 中零分量的个数,即 X=jSXjX = \sum_{j \in \urcorner S^*}X_j

至此,我们就分析完了表格中的所有情况,那么可以得到

nzero(Enci+1(m))=2S+X\text{nzero}(\text{Enc}_{i+1}(\vec{m})) = 2|S| + X

下面就是分析 S|S| 和这个 XX 了,想证明对于任意非零消息 mF2ki\{02ki}\vec{m} \in \mathbb{F}^{2k_i} \backslash \{0^{2k_i}\} ,编码之后的 Enci+1(m)\text{Enc}_{i+1}(\vec{m}) 以压倒性的概率最多有 ti+1t_{i+1} 个零分量。现在分析 Enci+1(m)\text{Enc}_{i+1}(\vec{m}) 至少有 2ti+li2 t_i + l_{i} 个零分量的概率:

Pr[nzero(Enci+1(m))2ti+li]=Pr[2S+X2ti+li]=Pr[X2ti+li2S]=Pr[jSXj2ti+li2S]j=2ti+li2SS(Si)(2F1)i(12F1)Si(由二项式定理得 (Si)2S )S2S(2F1)2ti+li2SS2S(2F1)2ti+li2S(SS)=[1,ni]\S2[1,ni]\S(2F1)2ti+li2S=(niS)2niS(2F1)2ti+li2S(设 F210,可得 2F12.002F )ni2niS(2.002F)2ti+li2S\begin{aligned} \Pr [ {\text{nzero}(\text{Enc}_{i+1}(\vec{m})) \ge 2 t_i + l_{i}} ] & = \Pr [ 2|S| + X \ge 2 t_i + l_{i} ] \\ & = \Pr [ X \ge 2 t_i + l_{i} - 2|S|] \\ & = \Pr [\sum_{j \in \urcorner S^*}X_j \ge 2 t_i + l_{i} - 2|S|] \\ & \le \sum_{j = 2 t_i + l_{i} - 2|S|}^{|\urcorner S^*|} \binom{|\urcorner S^*|}{i} \cdot (\frac{2}{|\mathbb{F}| - 1})^{i} \cdot (1 - \frac{2}{|\mathbb{F}| - 1})^{|\urcorner S^*| - i}\\ & \quad {\color{blue}{\text{(由二项式定理得 $\binom{|\urcorner S^*|}{i} \le 2^{|\urcorner S^*|}$ )}}} \\ & \le |\urcorner S^*| \cdot 2^{|\urcorner S^*|} (\frac{2}{|\mathbb{F}| - 1})^{2 t_i + l_{i} - 2|S|} \\ & \le |\urcorner S| \cdot 2^{|\urcorner S|} \cdot (\frac{2}{|\mathbb{F}| - 1})^{2 t_i + l_{i} - 2|S|} \quad (\urcorner S^* \subseteq \urcorner S)\\ & = |[1, n_i] \backslash S| \cdot 2^{|[1, n_i] \backslash S|} \cdot (\frac{2}{|\mathbb{F}| - 1})^{2 t_i + l_{i} - 2|S|}\\ & = (n_i - |S|) \cdot 2^{n_i - |S|} \cdot (\frac{2}{|\mathbb{F}| - 1})^{2 t_i + l_{i} - 2|S|}\\ & \quad {\color{blue}{\text{(设 $|\mathbb{F}| \ge 2^{10}$,可得 $\frac{2}{|\mathbb{F}| - 1} \le \frac{2.002}{|\mathbb{F}|}$ )}}}\\ & \le n_i \cdot 2^{n_i - |S|} \left(\frac{2.002}{|\mathbb{F}|}\right)^{2 t_i + l_{i} - 2|S|} \end{aligned}

我们注意到,指标集合 S[1,ni]S \subseteq [1, n_i] ,如果任意选取集合 SS ,对于每一个指标 i[1,ni]i \in [1, n_{i}] ,都有两种可能,那就是选取或者不选取进集合 SS ,那么集合 SS 的选取总共就有 2ni2^{n_{i}} 种。当我们取遍了集合 SS 的所有的可能,那么将这些 SS 形成的 mi+1(S)m_{i+1}(S) 并起来 S[1,ni]mi+1(S)\cup_{S \subseteq [1, n_{i}]}m_{i+1}(S) ,就能覆盖在 Fki+1=F2ki\mathbb{F}^{k_{i+1}} = \mathbb{F}^{2k_{i}} 中的所有消息了。论文 [ZCF23] 引理 2 告诉我们 mi+1(S)m_{i+1}(S) 集合的大小最多为 FtiS\mathbb{F}^{t_i - |S|} 。那么取遍所有 2ni2^{n_{i}} 种可能的 SS 集合,每个集合 SS 中最多有 FtiS\mathbb{F}^{t_i - |S|} 个消息 mF2ki\vec{m} \in \mathbb{F}^{2k_{i}} 。通过将所有 SS 并起来的方式,联合每个 SS 大小的界限,可以得到当 lil_i 足够大时,即 Fli2ni|\mathbb{F}|^{l_i} \gg 2^{n_i} 时,ni2niS(2.002F)2ti+li2Sn_i \cdot 2^{n_i - |S|} \left(\frac{2.002}{|\mathbb{F}|}\right)^{2 t_i + l_{i} - 2|S|} 会足够的小,此时对于任意的非零向量 mF2ki\vec{m} \in \mathbb{F}^{2k_{i}} ,都有 nzero(Enci+1(m))2ti+li\text{nzero}(\text{Enc}_{i+1}(\vec{m})) \le 2 t_i + l_{i} ,即 Enci+1(m)\text{Enc}_{i+1}(\vec{m}) 中最多有 2ti+li2t_{i} + l_{i} 个零分量。

论文 [ZCF23] 中以定理的形式给出了更加具体的描述。

定理 1 [ZCF23, 定理 2] 固定任意的有限域 F\mathbb{F} ,其中 F210|\mathbb{F}| \ge 2^{10} ,设 λN\lambda \in \mathbb{N} 是安全参数。对于一个分量元素在 F\mathbb{F} 中的向量 v\mathbf{v} ,用 nzero(v){\text{nzero}}(\mathbf{v}) 表示向量 v\mathbf{v} 中零分量的个数。对于任意的 dNd \in \mathbb{N} ,设 DdD_d(c,k0)(c, k_0)-可折叠的分布,设对每一个 idi \le dki=k02i,ni=ckik_i = k_0 2^i, n_i = c k_i 。那么

Pr(G0,,Gd)Dd[mFkd\{0},nzero(Encd(m))td]d2λ(5)\Pr_{(\mathbf{G}_0, \ldots, \mathbf{G}_d) \leftarrow D_d}\left[ \exists \mathbf{m} \in \mathbb{F}^{k_d} \backslash \{ \mathbf{0} \}, \text{nzero}(\text{Enc}_d(\mathbf{m})) \ge t_d \right] \le d \cdot 2^{- \lambda} \tag{5}

其中,t0=k0t_0 = k_0 以及对每一个的 i[d]i \in [d]ti=2ti1+lit_i = 2 t_{i-1} + l_i

li:=2(d1)logn0+λ+2.002td1+0.6ndlogF1.001.l_i := \frac{2(d - 1) \log n_0 + \lambda + 2.002 t_{d-1} + 0.6 n_d}{\log |\mathbb{F}| - 1.001}.

(5)(5) 式告诉我们 Encd(m)\text{Enc}_d(\mathbf{m}) 中零分量个数极大概率小于 tdt_d ,因为如果超过 tdt_d ,其概率可忽略不计。由于 tit_i 的值给出的是一个迭代的式子,即 ti=2ti1+lit_i = 2 t_{i-1} + l_i ,因此可以通过迭代式求和得到 tdt_d ,那么可以得到能够达到的最大的在 CdC_d 中的相对 0 的个数 ZCd=tdndZ_{C_d} = \frac{t_d}{n_d} ,再计算 1ZCd1 - Z_{C_d} 即可得到 CdC_d 能够达到的最小的相对 Hamming 距离 ΔCd\Delta_{C_d} ,其结果就为 (1)(1) 式:

1(ϵFdc+ϵFlogFi=0d(ϵF)di(0.6+2log(ni/2)+λni)).1 - \left( \frac{\epsilon_{\mathbb{F}}^d}{c} + \frac{\epsilon_{\mathbb{F}}}{\log |\mathbb{F}|} \sum_{i = 0}^{d} (\epsilon_{\mathbb{F}})^{d-i} \left( 0.6 + \frac{2 \log(n_i / 2) + \lambda}{n_i} \right) \right) .

由迭代式 ti=2ti1+lit_i = 2 t_{i-1} + l_i 也可以发现,随着 ii 的增加,tit_i2ti12 t_{i-1} 还多 lil_i ,从 iii+1i+1 ,编码长度每次增加一倍,因此码字中能达到的最大的 0 分量的相对个数在增加,因此能达到的最小相对 Hamming 距离在减少。如果 ΔCd\Delta_{C_d} 比较大,那么通过这种迭代方式得到的 CiC_i ,可以得到极大概率有 ΔC0ΔC1ΔCd\Delta_{C_0} \ge \Delta_{C_1} \ge \ldots \ge \Delta_{C_d} ,从 i=di = di=0i = 0 ,可以看到这种编码方式不会减小 ΔCd\Delta_{C_d} ,在 IOPP 协议中,如果开始的最小相对 Hamming 距离比较大,那么到最后极大概率有 ΔC0\Delta_{C_{0}} 也依然会比较大,这一点在分析 IOPP 的 soundness 中也起了比较重要的作用。

References