Compressing Vector OLE-论文笔记

论文作者:Elette Boyle, Geoffroy Couteau, Niv Gilboa, and Yuval Ishai

论文地址:Compressing Vector OLE


1.准备工作

1.1 VOLE(Vector Oblivious Linear Evaluation)

        VOLE是Oblivious Transfer (OT) 的算术类比。在VOLE中,Sender发送一对向量 (u, v)  ,Receiver提供一个标量 x,得到w = ux + v 。VOLE还有一个随机化版本,其中发送方的输入 (u, v) 由功能随机选择并作为输出传递给发送方。类似于将OT简化为随机OT的过程,确定性VOLE功能也可以简化为其随机化版本。


1.2 Function Secret Sharing

1.2.1 两方FSS

(1) FSS.Gen:给定安全参数 1^{\lambda } 和函数 f\in F 的描述,产生一对密钥 k_{0},k_{1} 。

(2) FSS.Eval:输入\left ( b,k_{b},x \right )b\in \left \{ 0,1 \right \}表示索引,k_{b} 表示某一方拥有的函数密钥,x是一个公共的输入,得到输出分片 y_{b} 。

(3) FSS.FullEval:在一些多方计算场景中,可能需要对函数在所有可能输入上的行为有一个全面的了解。算法将在函数的每一个可能的输入值上运行,从而得到一个完整的输出集。


1.2.2 DPF(Distributed Point Functions)

        在密码学中,分布式点函数是加密原语允许两个分布式进程共享一条信息,并计算其共享信息的函数,而无需向任一进程泄露信息本身。这是一种秘密共享的形式。

除了x=a外,它在任何地方都为其值为0


1.2.3 FSS for Multi-Point Functions

1.阿贝尔群 G:阿贝尔群是一种数学结构,其群上的运算满足交换律。在本文中,群 G 提供了函数的输出域。

2.输入域 [n]:表示函数的输入是一个从 1 到 n 的整数集合。

3.子集S和大小 t:S 是输入域 [n] 的一个子集,大小为 t 。

4.向量y和函数定义:向量 y  属于 G^{t},包含 t 个元素 y_{1},...,y_{t}。对于子集 S 中的每个元素 s_{i},函数 f_{S,y} 在 s_{i} 处的值定义为 y_{i} 。对于不在子集 S 中的任何元素 x ,函数 f_{S,y}  在 x 处的值定义为 0。

示例:学校评分系统

设某学校有n个班级(班级编号为 1 到  n ),我们想记录某次考试中 t 个班级的平均分。

设置多点函数
- 班级集合 S:假设我们关注的 t 个班级的编号集合是  S = \left \{s_1, s_2, ..., s_t \right \},例如 S = {2, 4, 7}。
- 平均分向量 y :每个班级 s_{i}在该次考试中的平均分为y_{i},所以向量y 表示的是这些班级的平均分,例如  y = (80, 85, 90) 。
- 阿贝尔群 G :这里,我们可以将 G 看作是实数集,用于表示平均分。

定义 f_{S,y}对于集合 S 中的班级,如果我们查询 f_{S,y} 关于 S 中某个班级的值,比如 ( s_1 = 2 ),函数将返回对应的平均分,即 f_{S,y}\left ( 2 \right )=80。对于集合 S 之外的班级:如果我们查询集合 S 之外的班级,比如班级 3,函数返回 0,即f_{S,y}\left ( 3 \right )=0


1.3 Learning Parity with Noise

1.3.1 LPN假设

学习奇偶校验(Learning Parity with Noise, LPN)问题是一种在计算复杂性理论和密码学中广泛研究的问题。它可以视为一种线性代数问题,其中加入了一定的噪声。

定义:给定一个概率码生成算法C,输出一个矩阵A\in F^{k\times q},对于维度k,查询数q,噪声率r,LPN(\lambda,k,q,r)假设指出,对于任何多项式时间非统一敌手,难以区分两种情况:s\cdot A+e与随机向量。

1. 设置参数

安全参数 \lambda:决定问题的大小和难度。
维度 k :秘密向量的长度。
查询数 q :方程的数量。
噪声率 r :噪声的概率。

2. 生成秘密向量和矩阵

秘密向量  s :一个长度为 k 的随机向量,在 \left \{ 0,1 \right \}^{k}中选取。
矩阵 A :一个 k\times q 的矩阵,通常随机生成。

3. 添加噪声生成样本

生成样本:对于矩阵  A  的每一列 a_{i},计算 b_{i}=s\cdot a_{i}+e_{i},其中 e_{i} 是噪声。
噪声 e_{i}:以概率 r 在\left \{ 0,1 \right \}中随机取值,这意味着每个e_{i} 以 r 的概率为1,以1-r 的概率为0。

4. 解决LPN问题

目标:给定矩阵A 和向量 b\left ( b = s \cdot A + e \ \right ),目标是恢复秘密向量 s。
挑战:由于噪声的存在,直接求解线性方程组变得困难。

LPN问题的困难性在于,即使有了由秘密向量s生成的样本,噪声的存在使得直接求解 s 非常困难。这种问题的复杂性使其成为构建安全密码协议的理想选择。


1.3.2 LPN的双重变体

双重LPN(Dual Learning Parity with Noise, Dual LPN)双重LPN是LPN的一个变体,难以区分噪声向量e\cdot B与随机向量。下面是双重LPN问题的具体过程:

1. 设置参数

安全参数\lambda :决定问题的复杂度
维度 k 和 块长度q:定义矩阵的尺寸
噪声率 r:噪声发生的概率

2. 生成矩阵和奇偶校验矩阵

矩阵 A :生成一个  k \times q 的矩阵  A ,通常是随机的。
奇偶校验矩阵 B:构造矩阵 A 的奇偶校验矩阵  B,使得 A\cdot B = 0 。 B 是一个q \times (q-k) 的矩阵。

3. 添加噪声

生成噪声向量 e:创建一个长度为 q 的噪声向量 e,每个元素以概率 r 非零,以概率 1-r 为零。

4. 噪声向量与奇偶校验矩阵的乘积

计算 e\cdot B:计算噪声向量 e 和奇偶校验矩阵 B 的乘积,得到一个向量。

5. 双重LPN问题的挑战

目标:给定 e\cdot B和矩阵B,目标是恢复噪声向量 e。
困难性:由于噪声的存在,直接从e\cdot B推断出 e 是困难的。

双重LPN问题的特点在于,它侧重于使用奇偶校验矩阵和噪声向量的乘积,这与传统LPN问题中直接使用矩阵 A和秘密向量s的乘积不同。双重LPN问题在密码学中的应用主要是基于其对抗特定攻击的能力,例如,它对抗基于代数解码的攻击效果更好。这种结构上的变化带来了不同的数学挑战和实际应用上的优势。


1.3.3 Attacks on the LPN Problem*

LPN问题的攻击方法的综合概述。以下是对这些攻击方法的分析:

1. 高斯消元攻击
   原理:通过猜测  b = s \cdot A + e中的  k 个非噪声坐标,并验证猜测是否正确。
   效率:至少需要(1/(1-r))^k 时间和O(k/r)样本。
   低噪声LPN:对于噪声率为 1/k^c 的LPN,攻击时间为 O(e^{k^{1-c}}) ,使用  O(k^{1+c}) 样本。

 2. 信息集解码(ISD)
   原理:LPN问题等价于其双重变体,即从综合症解码随机线性码。
   方法:Prange的ISD算法及其改进,试图找到B的一个大小为t 的子集来跨越 e \cdot B

3. BKW算法
   特点:即使在高噪声LPN下也能实现亚指数复杂度,但需要亚指数数量的样本。
   效率:在 F_2 上时间和样本都为 2^{O(k/\log(k/r))}

4. 综合攻击
   方法:结合上述三种攻击,实现亚指数时间复杂度,但需要与时间复杂度同等数量的样本。

5. 缩小规模的BKW
   特点:针对多项式数量样本的LPN,时间效率为 2^{O(k/\log\log(k/r))} ,使用 k^{1+\epsilon} 样本。
   适用性:在较大的域上性能下降。

6. 低权重奇偶校验检查
   原理:区分  b = s \cdot A + e 与随机向量。

        总体而言,尽管LPN问题在密码学中得到了广泛应用,但针对一般LPN假设的密码分析结果相对较少。现有的攻击方法在高维和低噪声的LPN实例下效率较低,特别是在合理的实际参数设置下。这些分析结果支持了LPN假设作为构建安全密码协议的坚固基础的观点。


2. 论文核心

2.1 MPFSS Constructions

使用分布式点函数(Distributed Point Function, DPF)来构建多点函数秘密共享(Multi-Point Function Secret Sharing, MPFSS)方案。通过使用DPF,可以有效地构建MPFSS方案。这种方法允许在多个点上秘密共享特定的输出,同时在其他所有点上输出为零。

过程分析:

1. 生成算法 MPFSS.Gen:
   输入:安全参数 \lambda 和多点函数 f_{S,y} : [n] \rightarrow G
   过程:对于集合 S 中的每个元素s_i,计算点函数 f_{s_i, y_i}  的DPF秘密共享 (K^i_0, K^i_1)
   输出:输出两个秘密共享K_0K_1,每个共享都是对应点函数DPF秘密共享的集合。

2. 评估算法 MPFSS.Eval:
   输入:一方的索引 \sigma,其秘密共享 K_\sigma,和输入 x。
   过程:解析 K_\sigma(K^i_\sigma)_i,然后对于每个 i,计算 DPF.Eval(\sigma, K^i_\sigma, x) 并累积结果 z_\sigma
   输出:输出 z_\sigma 作为评估结果。

3.完整域评估算法 MPFSS.FullEval
  功能:在输入(\sigma, K_\sigma) 时,输出向量 (MPFSS.Eval(\sigma, K_\sigma, x))_{x \in [n]}
  用途:允许对整个输入域进行评估,而不仅仅是单个输入。

MPFSS的关键特点
  密钥大小:对于(n, t)-MPFSS,密钥大小为t \cdot (\lceil \log n \rceil(\lambda + 2) + \log_2 |G|)
  计算成本:评估算法的计算成本主要由 t 次群操作和 t\lceil \log n \rceil 次PRG评估组成。


2.1.1 Optimizing MPFSS Evaluation

提出了改进MPFSS.FullEval算法的策略,使其在处理大量数据时更加高效。通过利用批处理码和强化的密码学假设,可以实现在对数据库进行有限次遍历的情况下完成大量数据的写入操作。

MPFSS.FullEval的现有限制
简单的还原:在MPFSS中,为了私密地“写入” t 个条目(对应于噪声坐标),参与方必须在整个域 [n] 上进行 t 次遍历。这意味着对于每个要写入的条目,都需要遍历一次整个数据库。

改进目标:批量写入优化,目标是改进这个过程,以便在常数次遍历中写入一批 t个坐标,而不是为每个坐标单独遍历。

两种改进方法
1. 基于强假设的具体有效方法:
   假设:依赖于比LPN更强的假设,即常规综合症解码假设。
   效率:在实际中更加有效。

2. 基于LPN的渐近有效方法:
    利用批处理码:使用批处理码(batch codes),这是一种组合对象,能够同时读取或写入多个秘密条目。
    策略:将MPFSS.FullEval的评估看作是在两方之间秘密共享的数据库上写入t 个秘密位置的条目的任务。
    优化:使用与读取秘密条目相同的批处理码策略,将任务视为私密写入问题。

相关问题和解决方案

秘密读取问题:与秘密写入问题密切相关的是在多个服务器之间共享的数据库上秘密读取一批 t 个秘密条目的问题。这个问题已经被广泛研究,并且可以通过使用批处理码来解决。

批处理码的应用:批处理码策略可以类似地用于私密写入任务,从而实现对数据库的高效访问


2.1.2 Regular Syndrome Decoding, RSD

使用Regular Syndrome Decoding(RSD)假设来优化多点函数秘密共享(MPFSS)的评估。

RSD假设:是学习奇偶校验(LPN)假设的一种强化形式,在RSD假设下,即使噪声向量是规则的(每个大小为  n/t  的块中只有一个随机的1,其他都是0),LPN问题仍然保持困难。安全性研究:RSD假设已被广泛研究,被认为能够抵抗已知的所有攻击。

优化MPFSS.FullEval:通过使用规则的噪声模式代替随机噪声模式,可以将MPFSS.FullEval的评估简化为对长度为 n/t 的向量进行 t 次DPF调用,总计算成本为n 次底层域 F 的操作和至多n(1 + \lceil \log |F|/(\lambda + 2) \rceil) 次PRG评估。使用RSD假设会导致使用更强的安全假设,但能够实现从 tn 到 n 次操作的计算复杂度下降。

        使用RSD假设对MPFSS.FullEval进行优化的方法,通过在安全性假设和计算复杂度之间进行权衡,实现了在处理大量数据时的显著效率提升。虽然这种方法依赖于比LPN更强的RSD假设,但它为实现高效的数据处理提供了一种可行方案。此外,存在不依赖于RSD假设的替代策略,这表明在设计安全和高效的数据处理方案时,有多种选择可以考虑。


2.1.2 From CBC to Better MPFSS

使用批处理码(Combinatorial Batch Code, CBC)优化多点函数秘密共享(MPFSS)完整域评估(FullEval)的过程涉及几个关键步骤。这一优化主要是为减少在大数据集上执行MPFSS.FullEval时的计算复杂度。以下是详细的过程:

1. 设置批处理码(CBC)

参数:给定参数 t 和  n = O(ts),其中 s 是一个常数扩展因子。还有,m = t^{1+\epsilon},其中 \epsilon 是一个大于0的常数。

CBC的定义:CBC是一个将 n 个输入编码为 m 个字符串 z_1, \ldots, z_m 的组合结构,总长度为N = O(n) 。

2. 构造MPFSS.FullEval

从t个DPF实例到m个DPF实例:传统上,MPFSS.FullEval需要 t 个DPF实例,每个实例的域大小为 n。在这种优化方法中,我们使用 m 个DPF实例,每个实例的域大小为 |z_j|(对于 j \in [m])。

批编码:多点函数 f_{S,y} : [n] \rightarrow G将  n - t 个输入映射为0,将  t  个值映射为群元素。将这 n  个值串联起来,得到一个字符串  x,然后将其批量编码为  m  个字符串  z_1, \ldots, z_m

3. 批处理码的应用

利用CBC属性:通过批处理码的属性,可以通过读取每个 z_j 的一个条目来恢复由多点函数定义的  t  个点。

实施FullEval:通过在每个 z_j 上运行 DPF.FullEval,  m 次来实现 MPFSS.FullEval。

4. MPFSS.FullEval的详细实现

生成左邻居集合:让 T_1, \ldots, T_m 表示与CBC图关联的每个右节点的左邻居集合。

生成算法 (MPFSS.Gen): 对于  j = 1  到  m ,定义一个函数 f_j,如果存在 \tilde{s} 使得 s_{\tilde{s}} = i_j,则 f_ji_j 上输出 y_{\tilde{s}},否则为零。然后为每个 f_j生成DPF秘密共享。

完整域评估算法 (MPFSS.FullEval): 解析秘密共享,并输出每个 DPF.FullEval 的累积结果。

        相比于简单的还原,这种方法的计算成本由原来的  O(tn)  个PRG评估降低到  O(n) 。基于CBC的性质,该方法的正确性得以保证。通过这种方法,MPFSS.FullEval 能够在保持原有安全性的同时,显著提高在处理大规模数据时的效率,使其成为在需要高效秘密共享处理的场景中的一个有价值的工具。


多点函数秘密共享(MPFSS)的生成过程涉及创建秘密共享,这些共享可以用于评估特定的多点函数。以下是MPFSS生成过程的详细描述:

MPFSS生成过程

1. 确定输入参数:t点函数 f_{S,y}:定义为 f_{S,y} : [n] \rightarrow F,其中S = \{s_1, \ldots, s_t\} \subset [n]是输入点的集合,y = \{y_1, \ldots, y_t\} \subset F 是对应的输出值。

2. 生成秘密共享 (MPFSS.Gen):

选择子集I :选择一个大小为 m 的子集 I = \{i_1, \ldots, i_m\} \subset [n],其中i_j \in T_j 对于所有 j \leq m,并且 S \subset I

定义子函数 f_j:对于每个 j = 1  到  m ,定义一个函数f_j : [|z_j|] \rightarrow F。如果存在 \tilde{s}使得 s_{\tilde{s}} = i_j,则 f_j 是一个点函数,在 i_j上输出 y_{\tilde{s}},否则为0。如果没有这样的 \tilde{s},则 f_j 是一个全零函数。

生成DPF秘密共享:对于每个 f_j,使用 DPF.Gen生成DPF秘密共享 (K^j_0, K^j_1)

输出秘密共享:输出 (K_0, K_1) = ((K^j_0)_{j \leq m}, (K^j_1)_{j \leq m})

3. 完整域评估 (MPFSS.FullEval):

解析秘密共享:解析 K_\sigma(K^j_\sigma)_{j \leq m}

累积DPF评估:输出 \alpha = \sum_{j=1}^{m} DPF.FullEval(\sigma, K^j_\sigma)

通过使用批处理码(CBC)和分散的DPF实例,MPFSS生成过程能够在保持安全性的同时提高效率。能够处理任意 t 个输入点和对应的输出值。适用于安全多方计算中的多种场景,特别是在需要对特定数据点进行秘密共享的情况下。

这种生成方法通过在安全框架内有效地使用秘密共享技术,使得多方能够在不暴露具体输入值的情况下共同计算多点函数。


2.2 Pseudorandom VOLE Generator

伪随机VOLE生成器包含两个算法:Setup和Expand。

1.Setup算法:这是一个概率多项式时间(PPT)算法。输入参数包括:安全参数 λ,一个字段 F,输出长度 n,以及一个属于 F 的标量 x。输出是一对种子(seed_0, seed_1),其中 seed_1 包含 x。

2. Expand算法: 这也是一个多项式时间算法。 输入参数是:一方的索引 σ ∈ {0, 1} 和相应的种子 seed_\sigma。输出是一对向量 (u, v) ∈ Fn × Fn( σ = 0),或一个向量 w ∈ Fn( σ = 1)。

正确性:对于任何字段 F 和属于 F 的 x,对于 Setup(1^\lambda , F, n, x) 生成的任何种子对 (seed_0, seed_1)(对某个 n),表示为 (u, v) ← Expand(0, seed_0) 和 w ← Expand(1, seed_1),应满足 ux + v = w 的条件。

该定义描述了一种在密码学领域用于生成和处理伪随机向量的机制,它确保了在给定的参数和条件下,生成的向量满足特定的线性关系,并在安全性和效率方面提供保障。


2.2.1 Primal VOLE Generator

Gprimal 被构造为一个伪随机VOLE生成器。Gprimal 的安全性基于LPN假设,这意味着即使噪声存在,依然很难从输出中恢复原始信息。安全的MPFSS方案保证了在整个VOLE生成过程中,相关数据的保密性。

扩散函数 spread_{n}spread_{n}(S,\cdot ) 是一个线性函数。接收一个子集  S = \left \{s_1,\ldots, s_{|S|} \right \}  和一个向量 y = (y_1, \ldots, y_{|S|}),然后输出向量 z。向量 zS 中的位置上具有 y 的值,其他位置为0。

参数设定: n = n(\lambda)k = k(\lambda)t = t(\lambda)F = F(\lambda) 。

Gprimal的安全性:为满足LPN(k, n, t/n)的参数,其中LPN假设在域 F上对应于生成矩阵 C_{k,n} 的码成立。在这些参数设定下,如果MPFSS方案是安全的,则Gprimal是一个安全的VOLE生成器。

Gprimal VOLE(Vector Oblivious Linear Evaluation)生成器的详细构造包括以下步骤:

定义参数

维度 k:基于安全参数 \lambda 定义的维度,决定了生成矩阵的大小。

噪声参数 t:这是一个由安全参数\lambda 定义的值,表示噪声向量的大小。

构建块
码生成器 C:用于定义一个公共矩阵C_{k,n} \in F^{k \times n},这个矩阵是生成器的关键部分。
多点函数秘密共享(MPFSS):包括三个部分:生成(Gen)、评估(Eval)和完整域评估(FullEval)。

1.Setup过程(Gprimal.Setup)
随机选择:从集合 [n] 中随机选择一个大小为 t  的子集 S;随机生成两个向量 (a, b) \in F^k \times F^k和一个向量y \in F^t

计算和设置种子:计算 c = ax + b ; 运行 MPFSS.Gen(1\lambda, f_{S,xy}) 以生成秘密共享(K_0, K_1); 设置种子 seed_0 = (F, n, K_0, S, y, a, b) 和 seed_0 = (F, n, K_0, S, y, a, b)

2. Expand过程(Gprimal.Expand)

对于 \sigma = 0
  解析 seed_0(F, n, K_0, S, y, a, b)
  设置 \mu \leftarrow {spread_n}(S, y)
  计算 \nu_0 \leftarrow MPFSS.FullEval(0, K_0)
  输出 (u, v) \leftarrow (a \cdot C_{k,n} + \mu, b \cdot C_{k,n} - \nu_0)

对于\sigma = 1
  解析 seed_1 为 (F, n, K_1, x, c)
  计算\nu_1 \leftarrow MPFSS.FullEval(1, K_1)
  设置 w \leftarrow c \cdot C_{k,n} + \nu_1
  输出 w

效率:通过优化的Expand 过程,Gprimal 能够高效地生成VOLE,同时保持安全性。

正确性

安全性

这段描述讨论了如何证明“原始”(Gprimal)VOLE生成器在多点函数秘密共享(MPFSS)的保密属性下满足VOLE生成器的第一个和第二个安全要求。以下是对这个证明过程的分析:

第一个安全要求:没有敌手能在多项式时间内区分 (seed_0, x)(seed_0, x')

证明方法:seed_0的唯一依赖于 x 的部分是 MPFSS 密钥 K_0。根据 MPFSS 的保密属性,存在一个模拟器,给定允许的泄漏(F, n, t),可以输出一个与K_0 不可区分的密钥 K_{0}^{'}。由于这个模拟器不知道关于 x 的任何信息,这就直接证明了第一个要求。

第二个安全要求:没有有效的敌手可以区分 (u, v, seed_1)(u', v', seed_1)

通过一系列游戏来证明

 游戏0:正常计算 (seed_0, seed_1)(u, v) 和发送 (u, v, seed_1) 给敌手 A。注意在这个游戏中,A 的输入是由seed_1u 和 v 构成的。

 游戏1:与游戏0类似,但 K_1 仅从 (F, n, t) 使用MPFSS的保密模拟器计算。在这个游戏中,K_1 不包含关于 µ 的任何信息。

 游戏2:随机选择 u' 并设置 v'。由于 seed_1 不包含关于 µ 的信息,区分游戏1和游戏2相当于破解LPN假设。

基于MPFSS保密属性:证明了VOLE生成器在MPFSS保密性假设下满足其第一个安全要求。

基于LPN假设:第二个安全要求的证明依赖于LPN假设,表明无法区分 (u, v, seed_1) 和 (u', v', seed_1)

安全性的结论:这个证明过程表明,在LPN假设下,Gprimal VOLE生成器满足VOLE安全要求。


2.2.2 Dual VOLE Generator

在给定参数和特定的LPN(Learning Parity with Noise)假设下,Dual VOLE(Vector Oblivious Linear Evaluation)生成器是安全的。以下是对这个定理及其证明的详细分析:

参数设定:
n = n(\lambda)n' = n'(\lambda):用于定义LPN问题的大小。
t = t(\lambda):噪声参数,定义LPN问题中的噪声大小。
F = F(\lambda):定义运算的有限域。

LPN假设:在给定参数下,LPN问题在域 F  上对应于奇偶校验矩阵 H_{n',n}  的码是困难的。

Dual VOLE生成器的构造:Dual利用了LPN假设和安全的MPFSS方案来生成VOLE。

正确性证明
核心关系:ux + v = (\mu x - \nu_0) \cdot H_{n',n} = (\mu x + \nu_1 - \mu x) \cdot H_{n',n} = \nu_1 \cdot H_{n',n} = w

这里,\mu x\nu_0, \nu_1是通过MPFSS生成的秘密共享,用于计算VOLE的输出。H_{n',n} 是奇偶校验矩阵,用于将MPFSS生成的值转换为VOLE的输出。

Dual VOLE(Vector Oblivious Linear Evaluation)生成器是一种基于特定的密码学构造来生成VOLE关系的方法。以下是对Dual VOLE生成器的详细分析:

参数:噪声参数 t = t(\lambda):定义了LPN问题中的噪声大小。 

构建块: 双重码生成器  C':输入参数 (n, n', F),生成公共矩阵H_{n',n} \in F^{n' \times n},通常为随机矩阵。多点函数秘密共享(MPFSS):包括生成(Gen)、评估(Eval)和完整域评估(FullEval)算法。

Gdual VOLE生成器的具体步骤

1. Setup过程(Gdual.Setup):

    随机选择:从[n']中随机选择一个大小为 t(\lambda) 的子集 S 和一个随机向量 y \in F^t

    计算和设置种子:使用MPFSS生成 (K_0, K_1);设置种子 seed_0 = (F, n, n', K_0, S, y)seed_1 = (F, n, n', K_1, x)

2. Expand过程(Gdual.Expand)

   对于 \sigma = 0
     解析 seed_0(F, n, n', K_0, S, y)
     设置 \mu \leftarrow \text{spreadn}(S, y)
     计算 \nu_0 \leftarrow MPFSS.FullEval(0, K_0)
     输出 (u, v) \leftarrow (\mu \cdot H_{n',n}, -\nu_0 \cdot H_{n',n})

  对于 \sigma = 1
     解析 seed_1(F, n, n', K_1, x)
     计算 \nu_1 \leftarrow MPFSS.FullEval(1, K_1)
     设置 w \leftarrow \nu_1 \cdot H_{n',n}
     输出 w

安全性分析:依赖于MPFSS的安全性,该构造依赖于MPFSS的保密属性,确保了相关数据的保密性。利用奇偶校验矩阵,使用奇偶校验矩阵 H_{n',n} 将MPFSS生成的值转换为VOLE的输出。


3.应用

3.1 Secure Arithmetic Computation

3.1.1 Vector OLE from Pseudorandom VOLE Generator

我们首先回顾了从一个理想的随机VOLE相关性实现VOLE的标准协议。

将随机VOLE(Vector Oblivious Linear Evaluation)转换为标准VOLE,并证明了当使用VOLE生成器的输出产生随机VOLE时的安全性。以下是对这一过程及其安全性的详细分析:

标准VOLE协议

1. 预处理:
   信任的交易员:随机选择 (r_u, r_v, r_x) \leftarrow F^n \times F^n \times F
   设置:计算 r_w = r_u r_x + r_v,然后将 (r_u, r_v) 输出给P_0,将 (r_w, r_x) 输出给P_1

2. 输入:
   P_0的输入: (u, v)
   P_1的输入: x 

3. 协议执行:
   P_1发送:m_x = x - r_x
   P_0发送:m_u = u - r_um_v = m_x r_u + v - r_v
   P_1输出:w = m_u x + m_v + r_w

正确性证明

计算:w = m_u x + m_v + r_w = (u - r_u) x + (x - r_x) r_u + v - r_v + r_u r_x + r_v = u x + v。这个过程确保了最终输出wP_0的输入 (u, v)P_1的输入 x的线性组合。

安全性分析
隐私保护:P_0P_1的真实输入通过与随机值的组合隐藏,从而保证了它们的隐私。

无法区分性:由于P_0P_1接收的是由信任交易员生成的随机值,因此他们无法区分最终结果与理想VOLE关系的区别。

通过这种方法,可以从理想的随机VOLE关联实现标准VOLE。这个过程不仅提供了将随机VOLE转换为标准VOLE的有效方法,而且还证明了在特定假设下这种转换的安全性。这使得VOLE生成器在安全多方计算和相关应用中变得更加实用和可靠。


现在考虑上述协议的修改,用VOLE生成器的输出替换了理想的随机VOLE相关性:

以下是对这个协议及其安全性的详细分析:

修改后的VOLE协议

1. 预处理:

   信任的交易员:随机选择 r_x \leftarrow F
   计算种子:运行 Setup(1^\lambda , F, n, r_x)来计算 (seed_0, seed_1),然后将seed_0输出给P_0,将 (r_x, seed_1)输出给P_1

2. 离线扩展

   P_0计算:运行 Expand(0, seed_0)来计算 (r_u, r_v)
   P_1计算:运行 Expand(1, seed_1)来计算 r_w

3. 输入:

   P_0的输入:(u, v)
   P_1的输入:x

4. 协议执行(ΠVOLE):

   P_1发送:m_x = x - r_x
   P_0发送:m_u = u - r_um_v = m_x r_u + v - r_v
   P_1输出:w = m_u x + m_v + r_w

正确性证明

计算:w = m_u x + m_v + r_w = (u - r_u) x + (x - r_x) r_u + v - r_v + r_w = u x + v。这个过程确保了最终输出 wP_0的输入 (u, v)P_1的输入 x 的线性组合。

安全性分析

交易员的角色被VOLE生成器替代,它通过 `Setup` 和 `Expand` 函数生成用于协议的值。隐私保护,由于使用了VOLE生成器,P_0P_1的输入依然被随机值隐藏,保证了隐私。无法区分性,P_0P_1接收的种子值是由VOLE生成器产生的,因此他们无法区分最终结果与理想VOLE关系的区别。

修改后的协议提供了一种在实际应用中实现VOLE的有效途径,同时保持了其核心的正确性和安全性。这使得VOLE生成器在安全多方计算和相关应用中变得更加实用和可靠。


3.1.2 Rate-1/2 VOLE protocol in the plain model

提出了一种在纯模型(plain model)中实现率为1/2的VOLE(Vector Oblivious Linear Evaluation)协议。此协议通过分布式设置原始(primal)或双重(dual)VOLE生成器,并结合安全的两方计算协议,以提高效率。以下是对此协议特性和安全性的详细分析:

VOLE协议的效率特点
1. 常数轮次实现:协议可以在常数数量的通信轮次中实现。
2. 通信率为1/2:通信复杂度主要由在 F^n 中传输两个向量的成本主导。
3. 使用双重构造:基于一次性传输OT和具有线性数量样本的LPN(Learning Parity with Noise),其中n = O(k)

安全性和实现
1. 次线性噪声:协议在稍微低于线性的噪声水平下工作,即 n^{1-\epsilon}个噪声样本。
2. 与公钥加密的比较:这种LPN的味道优于已知可实现公钥加密的LPN变体。
3. LPN友好的线性时间编码:结合LPN友好的线性时间编码,实现了在纯模型中的VOLE协议,具有常数的计算开销。

该协议在保持通信效率的同时提供了安全性,适用于需要高效率通信的安全计算场景。它避免了之前协议中所需的擦除解码或高斯消除,展示了在保持安全性的前提下提高通信效率的可能性。此外,协议的设计允许在纯模型中实现VOLE,这使其在没有可信第三方的环境中也能安全运行。


3.2 Non-Interactive Zero-Knowledge with Reusable Correlated Randomness
Setup

基于非交互式零知识(Non-Interactive Zero-Knowledge, NIZK)的模型,利用VOLE(Vector Oblivious Linear Evaluation)生成器来构建这种NIZK协议。以下是对这个模型和协议的详细分析:

预处理阶段:离线,在知晓要证明的陈述之前,证明者和验证者从信任的交易员接收相关随机数。或者,他们可以通过一次性的交互式安全计算协议自行生成这些相关随机数。

在线阶段:非交互式证明,证明者可以通过发送单个消息给验证者来非交互式地证明每个NP陈述。

NIZK协议的特性可重用性:设置应该是可重用的,即能够证明的陈述数量应该比设置的通信成本大很多倍。声音性:即使证明者能够知道验证者是否接受或拒绝恶意生成的证明,协议的声音性仍然应当成立。

基于OT的NIZK协议的局限:例如 [KMO89, IKOS09],无法满足这个属性,因为证明者可以逐渐学习验证者的OT选择。


VOLE-混合模型中的NIZK协议

零知识线性PCP:可以简单地编译成信息论上可重用的NIZK协议。

VOLE的应用:证明关于大小为 s 的算术电路的 n 个实例的满足性需要 O(s)  个长度为  O(n) 的VOLE实例,其中验证者的VOLE输入被假设为诚实生成的。

VOLE生成器的应用
设置成本:仅取决于 s 而不是 n,每个电路满足性实例仅消耗 O(s)  VOLE实例中的常数数量条目。无需交互的本地扩展,VOLE种子的本地扩展不需要交互。

证明和验证:生成和验证每个证明仅涉及双方的 O(s) 域操作(无需“加密”计算),证明由  F 中的 O(s)元素组成。

本NIZK构造在保持安全性和减少计算负担的同时,提供了一种有效利用VOLE生成器进行高效证明和验证的方法。它特别适用于在计算资源和通信成本方面有特定需求的场景,为构建更高效的安全协议提供了一种可行方案。


3.2.1 Zero-Knowledge Linear Interactive Proofs

这段描述介绍了一种线性交互式证明系统的概念,这是基于[BCI+13]中的“线性交互式证明”模型的变体。线性交互式证明系统(Linear Interactive Proofs, LIP)通过证明者选择的证明矩阵和验证者独立选择的查询向量相乘来进行,验证者仅根据查询向量和证明矩阵的乘积决定是否接受证明。以下是对这个模型的详细分析:

线性交互式证明系统的定义(HVZK-LIP)组成:包含三个算法(Prove, Query, Verify)

Prove:给定算术验证电路 C : F^\ell \times F^L \rightarrow F,输入 x \in F^\ell 和见证 w \in F^L,输出证明矩阵 \Pi \in F^{m \times d}

Query:给定算术验证电路 C,输出查询向量q \in F^m

Verify:给定输入 x \in F^\ell,查询向量 q,答案向量 a,输出接受(acc)或拒绝(rej)。

系统应满足的要求

完备性:对于任何满足 C(x,w) = 0 的输入 x 和见证 w,Prove  和  Query  生成的 Pi  和  q  应当使 Verify  接受。

可重用\epsilon-声音性:对于任何不满足C(x,w) \neq 0的输入 x,对于任意选择的 Pi^*b^*,Verify  接受的概率应小于等于\epsilon

诚实验证者零知识:存在模拟器 Sim ,使得对于满足 C(x,w) = 0 的 x  和  w ,模拟器输出的  a  与实际  Prove  和  Query 生成的  a  分布相同。


安全性:即使在恶意选择的输入 x^*和证明 Pi^* 下,证明者也无法获得关于查询 q  的重要信息,这确保了声音性。

可重用性:查询 q 可以在不妨碍声音性的情况下重复使用。

HVZK-LIP提供了一种在保持简洁性和高效性的同时实现交互式证明的方法。它特别适用于计算资源相对平衡且通信相对廉价的场景。与传统的SNARGs(Succinct Non-interactive ARguments of Knowledge)相比,HVZK-LIP在证明者计算方面更轻量,但保持了良好的声音性和零知识属性。


3.2.2 NIZKs with Reusable Setup

这段描述定义了具有可重用相关随机性设置的非交互式零知识(NIZK)论证。以下是对这个定义及其要求的详细分析:

NIZKs with Reusable Setup的定义

组成:包括三个算法(NIZKSetup, NIZKProve, NIZKVerify)


 NIZKSetup(1^\lambda , F, C, T):

 输入:安全参数 1^\lambda,域 F,算术验证电路 C : F^\ell \times F^L \rightarrow F,陈述数量的多项式界限T = T(\lambda)

 输出:证明密钥 p_k和验证密钥v_k


NIZKProve(pk, F, C, j, x_j, w_j)

输入:证明密钥 p_k ,域  F ,电路  C ,证明索引 1 \leq j \leq T,输入 x_j \in F^\ell,见证 w_j \in F^L
输出:证明 \pi_j


NIZKVerify(vk, F, j, x_j, \pi_j)

输入:验证密钥 v_k,域  F ,证明索引  j ,输入 x_j \in F^\ell,证明 \pi_j
输出:接受(acc)或拒绝(rej)。


完备性:对于任何满足 C(x,w) = 0  的输入 x  和见证 w , NIZKProve 和  NIZKVerify  应当接受。

适应性可重用 \epsilon-声音性:对于任何给定电路 C,索引 j,和适应性敌手 A , NIZKVerify接受恶意生成的证明的概率不超过 \epsilon

适应性多定理零知识:存在一个模拟器 NIZKSim,对于任何状态性敌手A,索引 j,和给定电路C,NIZKSim 生成的证明与真实证明在分布上不可区分。

安全性:即使在恶意生成的输入和证明下,验证者的行为也不会泄露关于查询的重要信息,确保了声音性。

零知识:模拟器 NIZKSim确保即使在敌手选择的输入下,也无法区分模拟的证明与真实证明。

这种NIZK论证的定义提供了一种在保持简洁性和高效性的同时实现非交互式证明的方法。特别是在可重用设置下,这种NIZK论证方法不仅适用于多个定理,而且在保持高安全性的同时实现了高效的证明生成和验证。这使得它特别适用于计算资源有限或通信成本敏感的场景。


3.2.3 From HVZK-LIP to reusable NIZK over VOLE

提出了一种将诚实验证者零知识线性交互式证明(HVZK-LIP)转换为可重用设置的非交互式零知识(NIZK)的简单方法,在这个变换中,VOLE(Vector Oblivious Linear Evaluation)生成器在VOLE-混合模型中起到关键作用。以下是对这个转换及其安全性的详细分析:

NIZK协议的构建块
VOLE生成器:包括Setup和Expand函数。
HVZK-LIP:包括Prove、Query、Verify函数,具有答案长度d。

NIZK协议的工作流程

1. NIZKSetup:
   生成相关随机数:为每个 1 \leq i \leq mn = dT,生成VOLE相关的随机数 (seed^i_0, seed^i_1)
   设置证明密钥  p_k  和验证密钥  v_k

2. 本地计算:
   证明者:对于每个 1 \leq i \leq m,计算 (u^i, v^i) \leftarrow Expand(0, seed^i_0)
   验证者:计算 w^i = Expand(1, seed^i_1)

3. NIZKProve:
   生成证明:对于给定的 x^jw^j,设置\Pi^j \leftarrow Prove(F, C, x^j, w^j)
   输出证明: \pi^j

4. NIZKVerify:
   验证证明:设置 a^j 并输出 Verify(F, x^j, q, a^j)

转换的关键思想

矩阵-向量乘积:将a = q \cdot \Pi编码为 a^i = (q^i \cdot \Pi^i + b^i),其中\Pi^i\Pi 的第  i 行 ,b^i  是随机向量。
利用VOLE实例:将 a  的值通过  m 个VOLE实例传递给证明者,其中证明者(发送方)的VOLE输入是 (\Pi^i, b^i),验证者(接收方)的VOLE输入是q^i

安全性分析

完备性和零知识:直接从HVZK-LIP继承,通过上述编码的属性保证。
声音性:通过观察恶意选择的 (u^*_i, v^*_i)和消息 c^* 的影响,可以看出这与在HVZK-LIP协议中使用矩阵 \Pi^* 和偏移量b^* 有相同的效果。

这种NIZK协议的构造提供了一种在保持简洁性和高效性的同时实现非交互式证明的方法。特别是在可重用设置下,这种NIZK论证方法不仅适用于多个定理,而且在保持高安全性的同时实现了高效的证明生成和验证。这使得它特别适用于计算资源有限或通信成本敏感的场景,为构建更高效的安全协议提供了一种可行方案。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值