2024 年 5 月 5 日,以太坊联合创始人 Vitalik 发布有关 FHE(fully homomorphic encryption,全同态加密)的推文,虽然这是 2020 年的旧文重发,但是却实实在在点燃了加密市场对这一新算法的热情。
在这篇文章中,Vitalik 对全同态加密的概念、应用、技术细节以及面临的挑战进行了深入讨论,不仅如此,长期以来全同态加密被认为是密码学的“圣杯”之一,它允许第三方对加密数据执行计算,并得到一个加密结果,而无需对数据或结果解密。
Vitalik 讨论了自 2012 年以来的算法优化,比如如何使用自举(Bootstrapping)和环LWE(Ring Learning With Errors)等技术提高效率。
按照具体实现方式不同,广泛意义上的同态加密可以分为三种类型:
- 部分同态加密(Partially homomorphic encryption):只允许对加密数据执行有限的操作集,如加法或乘法。
- 准同态加密(Somewhat homomorphic encryption):允许有限数量的加法和乘法运算。
- 全同态加密(Fully homomorphic encryption):允许无限数量的加法和乘法运算,从而实现对加密数据的任意计算。
在和区块链各方向的结合上,利用 FHE 可以在区块链上部署智能合约,这些合约能够在不解密数据的情况下对数据执行计算,从而保护用户的隐私,可以实现真正有效的全隐私交易。
FHE 有望接棒 ZK
全同态加密(FHE)的发展历程可以追溯到 2009 年,当时 IBM 的 Craig Gentry 首次提出了基于理想格的全同态算法,这标志着同态加密从概念到理论的进一步完善,并逐渐有了工程实现。
理想格是一种数学结构,它允许用户定义一个多维空间中的点集,其中这些点满足特定的线性关系。在Gentry的方案中,使用理想格来表示密钥和加密数据,从而使得加密数据可以在保持隐私的同时,支持复杂的计算操作。
在 2012 年,Zvika Brakerski, Craig Gentry 和 Vinod Vaikuntanathan 提出了 BGV 方案,这是第二代 FHE 方案之一,其最重要的贡献是模数转换技术,这一技术有效地控制了同态运算带来的密文噪声增加,从而构造了 Leveled FHE,即这样的 FHE 可以实现给定计算深度的同态计算任务。
具体来说,模数转换技术涉及到在不同的模数之间切换,以此来管理和控制密文的维度膨胀问题,在 BGV 方案中,模数转换技术的工作原理主要包括以下几个步骤:
- 选择合适的模数:根据加密操作的需要选择一个合适的模数,这个模数应该能够有效地控制密文的维度膨胀。
- 模数切换:在同态运算过程中,当达到某个模数限制时,切换到另一个较大的模数。
- 维度调整:在模数切换后,可能需要对密文的维度进行调整,以确保其符合新的模数要求。
- 重复运算:在新的模数下继续执行同态运算,直到达到所需的深度或完成特定的加密任务。
通过这种方式,BGV 方案利用模数转换技术有效地控制了密文的维度膨胀问题,同时也减少了因维度膨胀导致的噪声增长,从而提高了同态加密的整体性能。
随后,全同态加密技术继续发展,出现了如 TFHE 这样的改进方案,它属于 GSW 分支,是目前最快的全同态加密方案之一。这些技术的发展不仅提高了计算效率,也扩展了FHE的应用范围,如云计算、大数据和人工智能等领域。
与第二代 FHE 方案相比,TFHE 通过引入自举(Bootstrapping)技术,显著提高了加密操作的速度。在常见的台式机平台上,TFHE的响应时间可以达到毫秒级别。
此外,全同态加密(FHE)与零知识证明(ZKP)相比,提供了一种不同的数据隐私保护方式。ZKP 主要解决的是数据在加密状态下的一致性传输问题,而 FHE 则允许对加密数据执行任意同态计算,这使得 FHE 在处理复杂计算任务时更为灵活和强大。
具体而言,FHE 允许对加密数据直接进行计算,而无需先解密。这种能力使得FHE特别适合那些需要在加密状态下进行复杂计算的场景,如大规模数据分析和机器学习模型训练。相比之下,ZKP 主要用于证明某个事实的真实性,而不是直接对数据进行操作,它通过交互式或非交互式协议来验证信息的正确性,而不暴露任何关于输入信息的细节。
如果特别需要在保护隐私的同时,对数据代表的意义进行暴露或分析,比如公链的交易需要第三方节点确认,而希望隐藏具体信息,那么可以在用 FHE 组织交易的同时,允许第三方节点抓取 FHE 加密后的密文进行确认,并且区块浏览器或者预言机也可以索引数据。
ZK 实用化领先 FHE
目前 ZK 已经成为加密行业的通用化、基础性设施,ZK 技术在 Rollup、比特币状态压缩等多个方面进行了理论和实践探索,在币赢单独开设的 Layer 2 专区中,近半为 ZK 系项目。
除此之外,在方兴未艾的 BTC L2 市场中,ZK 是压缩 BTC L2 数据至比特币主网唯一有效的方案,比特币数据存储过于昂贵,任何能压缩数据规模的 DA 方案都值得认真审视,以 Vitalik 的另一方案 Binius为例,其设想在于用二进制高效编解码 ZK 电路。
在以太坊上,ZK 证明系统可以和智能合约交互,但是比特币孱弱的脚本能力不具备图灵完备性,因此开发者需要另辟蹊径让其为 BTC L2 上的交易提供安全保障和最终性确认。
具体来说,Binius 尝试通过一系列数学技巧,主要是使用多项式来表示程序的状态,并将其转换为数学方程。构建直接在 0 和 1 运行的证明系统,以提高速度,这与目前常用的 SNARKs 和STARKs 有不同的实现思路,使用二进制字段提供了一种独特的优势,即可以直接在0和1上进行计算,这也与计算机的二进制运算方式相匹配。
此外,如果能使用二进制实现 ZK 证明系统,那么小字段也能提高证明生成的效率,因为它们允许在保持数值较小的同时进行复杂运算,这会显著减少目前 ZK 生成的复杂性,最终降低对区块空间的占用。
而 FHE 的标准草案于 2018 年发布,并在 2023 年 11 月更新至 1.1 版本,这是 FHE 技术在标准化方面的进展,相较于 ZK 的大举高进,FHE 目前的项目生态和融资额均不如人意,仍处于发展的极早期。
还有一点是硬件加速,从性能角度来看,ZK 硬件加速已经迈入实用化的第一步,已知的 GPU 证明器可以提高大约 5 至 10 倍的计算效率,此外,ASIC/FPGA 加速器也被用于优化 ZK 的证明程序,而目前的 FHE 专用区块链应用硬件还未得到大规模推广。
结语
纵观历史,ZK 的高速发展始于以太坊确定“以 Rollup 为中心”的以太坊扩容体系之后,而目前 FHE 的发展尚在理论设计中,其实践和大规模落地方式也需要找到最适合区块链行业的应用场景。但其扎实的理论基础和巨大的潜力为其赋予了挑战 ZK 的能力。