rk所建议的那样,密钥片段被分发到每个oracle节点——也就是说,用到了阈值MPC。关于MPC安全的问题有很多,对依赖MPC安全的FHE安全的质疑也有很多。 改进安全性假设的一种方法是在FHE内部部分运行解密。但是,如果出于安全考虑FHE是可选的,那么使用它还有另一个原因:擦除问题。当Oracle节点应该被轮换时,应该保证前一个节点已经删除了曾持有的密钥片段。 然而,与MPC相比,FHE表现更优,因为它将大部分计算外包给完全无需信任的节点,只有一个半受信quorum来进行阈值解密,与MPC不同,MPC下由quorum完成所有工作。它的工作原理如下:密钥片段被生成并在验证者之间共享;每个验证者执行部分解密;部分解密被聚合产生完整的解密值。其安全性依赖2/3诚实验证者假设。但是,验证者集应该是固定受限的。 就Secret Network而言,网络验证者需要在共识时间内做出断言。他们应该如何访问解密数据?当然不能使用oracle,因为会破坏隐私。解决之道是两轮共识机制。第一轮是对应该解密的内容达成共识。也就是说,oracle等待大多数验证者发送相同的解密请求,然后再进行内容解密。随后,验证者更新链状态并将区块添加到区块链上。 如何防止用户解密其他用户的数据?如果用户只编写一个用来解密输入数据的合约,并提供其他人的加密数据作为该合约的输入数据,会怎样?解决方案是零知识证明!用户应该提供他们发送到网络的每个加密输入的ZKP,以证明用户确实知道他们以加密方式发送的数据值。 FHE的关键技术问题就是速度慢,比已知的替代方案要慢很多。 慢多少? FHE的性能取决于硬件加速,在ASIC出现之前,预计价格不会便宜。 按照Leo Fan的说法,FHE的开销大约是未加密计算的10,000倍。使用GPU和FPGA可以实现比CPU高2个数量级的性能。为FHE设计ASIC可以实现3-4个数量级的性能提升(相对于CPU),几乎填平了10,000倍的价格差。”如果应用需要无交互的解决方案,那么ASIC似乎是最好的选择。由于对于一些简单的计算,如线性计算,FHE的性能和密文是令人满意的,因此GPU/FPGA加速的FHE结合MPC技术可用于一些网络连接良好的应用。 如果可以生成FHE正确执行的证明以避免执行冗余,我们就可以拥有可证明的FHE(类似于ZK)和zk-FHE-rollup。 5、FHE技术细节 (1)安全性 思考FHE的安全性,我们来假设有四方:加密者、解密者、进行FHE计算的一方和对手方。加密者和解密者可能是同一个人,那么我们要处理对称FHE。也可能存在多个加密者的情况。FHE的安全假设是所有这些参与方都可能是不诚实的。 (2)密码学 FHE是一种基于晶格点阵(lattice based)结构。最初的FHE提案是以理想的lattice为基础的,从那时起,它就显示出了不安全的一面。 什么是lattice? Lattice是n维空间中由点组成的周期性网格。可以有无限个basis(基)。basis的长度就是其最长向量的长度。我们把最小化最长向量长度的基称为“short basis”(短基)。 短向量点阵问题(Short Vector Lattice Problem)听起来是这样的:给定一个任意basis b,找到一个尽可能短的非零点阵向量。 此问题的另一个版本被称为解码问题(Decoding Problem)。在这个版本中,一个人被要求在特定区域内找到一个目标点(不是最短的,但不超过某个特定值)。 这两个问题的核心区别在于短向量问题只要求一个唯一向量。在解码问题中,在一个固定的较大半径内总会存在多个点。 如果你在二维空间中思考这个问题,就很简单:lattice就是平面上的无限个点的集合。这些点是由两个“basis向量”的整数线性组合产生的。涉及到的数学难题就是找到两个生成lattice的短向量。在下图中,黑色向量是“basis向量”,红色向量是“数学难题”的解: 在二维空间中,这个问题看起来简单得可笑。然而,当我们将空间维度数量增加时,这个问题确实变得非常困难。尤其是复杂度随着空间维度的增加呈指数增长。对于非常多维度的空间来说,问题变得太困难,我们甚至怀疑量子计算机是否可以应对这个难题。 该问题的重要参数是精确的维度数量和初始basis向量的选择。 人们建议将Lattice作为后量子原语背后的核心机制。 许多改进的FHE方法(如FHEW、TFHE、BGV、BFV和CKKS)都是基于容错学习(LWE)的,而LWE则基于lattice问题。 6、TFHE运作机制观察 TFHE中的T代表Torus,一种类似甜甜圈的数学结构。 该方案的安全性基于一个称为LWE(容错学习)的lattice难题。 TFHE不同于其他方案,因为它推出了一种特殊的bootstrapping同态刷新,速度非常快,能够在降低噪声的同时求解函数。 Part 1:定义密文 尤其需要注意的是TFHE使用了三种类型密文:LWE、RLWE和RGSW,它们都具有不同的属性,在同态运算中非常有用。让我们来看看GLWE(Generalized LWE,包含LWE和RLWE)来简单了解这些密文。消息加密可以表示为: 其中M为加密信息,△= q/p中q和p均为大整数(通常为2的乘方),Si为密钥(k是最多为N次方的多项式),Ai为随机抽样系数(称为“mask”掩码),E为噪声误差。每次加密都对“mask”和噪声误差进行采样,也就是说即使对同一消息进行加密结果也会有所不同。 为了能够解密消息,|E|应该小于△/2 (|E|<△/2)。如果此条件成立,解密将如下所示: 回头看bootstrapping,我们在前文简要介绍了一种降噪工具,该工具正好应用了上述两步解密过程。特别是,它在第一步中计算了单项式X的指数,然后使用这个新的单项式来轮替查找表(Look-Up Table, LUT),用来计算第二个解密步骤(重缩放和近似舍入)。 从GLWE到LWE,取N = 1(N是S中多项式的最大可能乘方)。 从GLWE到RLWE,取k = 1 (S中多项式的个数),N-2的乘方。 为了简要定义GGSW,我们必须简要定义GLev,即GLWE密文的向量。那么,GGSW密文就是GLev密文的向量。若GLWE密文是Rq元素的向量,则GGSW密文就是Rq元素的三维矩阵: Part 2:密文同态加法的运算 假设我们有两个GLWE密文对消息M和M’进行加密。然后,我们可以将两个密文各分量相加,结果将得到一个新的GLWE密文,对M+M’的合进行了加密。 为了执行同态加法运算,我们在Rq 中谨慎添加分量项: A0(+) = A0 + A’0, A1(+) = A1 + A’1, B(+) = B + B’ Part 3:未加密常数的同态乘法运算 假设我们有一个GLWE密文加密了消息M和一个小常数多项式Λ。然后,我们可以将多项式Λ乘以密文M的每个分量,结果将是一个新的GLWE密文加密Λ⋅M的乘积。 至于解密,也可以使用与GLWE相同的方法。 要将两个GLev密文或两个GGSW密文相加,只需将组成它们的对应GLWE密文相加即可。假设我们想要将GLev密文或GGSW密文乘以一个小常数多项式Λ。在这种情况下,将所有GLWE密文相加乘以Λ就足够了。 然而,这只在常数很小的情况下有效。如果常数很大,噪声就会与常数大小成比例地增长。如果我们将密文的各元素与一个较大常数相乘,噪声就会影响结果。为了解决这个问题,需将大常数分解为多个base底数: 为了使分解可逆,可以使用GLev加密。 另一种选择是基于NTRU假设的方案。然而,这些方案也明显安全性不足。 目前,假设只有LWE方法是适用的,但有一个缺点,就是LWE类型加密要求每个密文由两个元素组成,而NTRU方案的主要优点是密文仅由一个ring元素组成。另一个问题是,从某种意义上说,就是把安全性的全部鸡蛋放在一个篮子里。 7、当前区块链FHE项目 Zama——隐私保护开源加密工具。 Secret Network——具有可定制隐私功能的区块链。 Sunscreen——一个用于全同态加密和零知识证明的编译器。 Fhenix——一个由全同态加密提供支持的区块链。 Ingonyma——硬件加速。 Cysic——硬件加速。 Mind Network——隐私rollup。 8、区块链外的FHE项目 FHE可应用于许多需要隐私保护计算的情况。 除了区块链项目,FHE还主要应用于注重隐私保护的机器学习。例如,客户端希望使用自己的私有数据和外部AI模型。 客户端使用FHE对数据进行加密,然后将密文上传到服务器。服务器对密文进行AI模型的同态计算。计算完成后,服务器返回加密结果,客户端可以对其进行解密查看结果。 基于FHE的安全性和功能性,客户端数据的保密性和结果的正确性可以得到保障。该应用的一个突出特性是,在计算过程中,客户端并不需要与服务器交互。 来源:金色财经lg...