mt logoMyToken
ETH Gas
EN

a16z发布Lattice Jolt:证明速度快了3倍,还能抵御量子攻击

Favoritecollect
Shareshare

作者: a16z crypto

编译:深潮 TechFlow

深潮导读: zkVM 一直被吐槽“证明太慢、体积太大”,a16z 这次用格密码替换椭圆曲线,直接让证明速度快了 3 倍、证明体积压到 100KB 以下。这是目前唯一能在速度上打败传统椭圆曲线方案的后量子方案,对验证上链成本和隐私应用都有直接影响。

今天我们正式发布 Lattice Jolt,这是我们开源 zkVM(零知识虚拟机)的最新版本。Jolt 本来就是目前最快、最简单的 zkVM,它的架构没变。但底层密码学换掉了:从椭圆曲线换成了格密码。这一个改动同时带来三件事:

  • Jolt 变成后量子安全的。
  • prover 和 verifier 的速度提升 2-3 倍。
  • Lattice Jolt 成为所有后量子 zkVM 中证明最短的:目前不到 100 KB,后续还能继续压缩。证明要上链、要跨网络传输,证明越小,验证成本越低。

这些特性覆盖 zkVM 的所有使用场景。同一个 prover,在 GPU 上能处理数十亿个 CPU 周期,在手机上也能证明数百万个周期。两种情况下开发者写的都是普通程序,不用手写需要专门知识才能搞定的电路。这就是我们说 Jolt 是“全能 SNARK”的原因。

但更大的故事是 Lattice Jolt 对 SNARK 设计和采用的意义。目前市面上几乎所有已经投产的后量子 SNARK 都是基于哈希的。Lattice Jolt 证明了基于格的 SNARK 可以做到更快、更紧凑。数字签名正在经历同样的转变:哈希方案是保守选择,但格方案才是世界正在大规模部署的。我们预计 SNARK 也会走上这条路,这篇博文的后半部分会解释原因。

用格替换椭圆曲线

Jolt 之前的多项式承诺方案叫 Dory,它是整个系统里唯一依赖椭圆曲线密码学的组件。Lattice Jolt 用 Akita 替换了 Dory,Akita 是一个基于 Module-SIS 格假设的全新多项式承诺方案。Lattice Jolt 基于这个标准的、研究充分的假设,对标完整的 128 位安全。

Module-SIS 和它的兄弟 Module-LWE 属于同一族假设,世界上的数字基础设施正在向这族假设迁移。这些假设不仅支撑数字签名标准 ML-DSA,也支撑密钥建立标准 ML-KEM,后者已经是全球部署最广泛的后量子原语。

Akita 的开发和实现由 LayerZero 的研究员和工程师主导,卡内基梅隆大学、南加州大学的研究员以及我们在 a16z crypto 的工程和研究团队共同参与。

Lattice Jolt 为什么更快

Lattice Jolt 不只是后量子安全的,它比被替换掉的椭圆曲线版本更快。

加速主要来自一个简单的原因。椭圆曲线迫使 Jolt 在 256 位域上工作,而格密码在 128 位域上就能达到同等级别的安全性。Jolt prover 的主要工作就是域元素乘法(本质上是超大数字的乘法),所以数字大小砍半,每次乘法就快了好几倍。

带 Dory 的 Jolt 已经很快了:我们上次的性能更新显示,Jolt 在笔记本上每秒大约能证明 70 万个 RISC-V(RV64IMAC)周期,之后的优化把曲线版 Jolt 推过了每秒 100 万周期。

Lattice Jolt 在同一台机器上每秒能证明超过 200 万周期。

过去六个月的大部分时间,我们不仅花在开发 Akita 并集成进 Jolt,还从头重写了 Jolt 代码库。Jolt 之前就能在 GPU 上跑得不错,但这次重写让 GPU 实现变得更容易构建和优化。

第一个成果是 Apple Metal 实现,给苹果硬件带来了巨大加速。(Metal 是苹果的框架,用来在 MacBook 和 iPhone 等设备内置的 GPU 上执行代码。)

  • GPU 加速的 Lattice Jolt 在 MacBook 上每秒能证明超过 1000 万个 RV64IMAC 周期。
  • 纯 CPU 的 Lattice Jolt 在同一台机器上每秒能证明超过 200 万周期。
  • 甚至连曲线版 Jolt 在带 Metal 的 MacBook 上现在也能跑到每秒约 400 万周期。

也就是说,一次发布,让 MacBook 上的 Jolt 从每秒约 100 万周期(曲线版,纯 CPU)涨到了超过 1000 万周期(格版,带 Metal)。

把这些数字放在大背景下看:四年前我们第一次写 SNARK prover 开销时,证明一个计算比直接运行它贵几百万倍。Lattice Jolt 把这个开销降到了大约一万倍。这还没到头,工程和协议层面的优化空间依然存在。

证明大小和 prover 速度同样重要。不到 100 KB,Lattice Jolt 的证明已经比其他后量子 zkVM 小得多,其他方案的证明从 200 KB 以上到大约 600 KB 或更多不等。

换成格之后,Jolt 本来就很优秀的内存占用也进一步改善:prover 的空间使用从每周期约 300 字节降到 200 字节。这意味着你可以在手机上证明数百万个 RISC-V 周期。

一篇配套论文即将发布,会给 Lattice Jolt 加上零知识性,这是隐私应用需要的属性。

为什么选格而不是哈希

多年来,SNARK 社区的注意力(以及基本上所有的生产部署)都放在哈希基 SNARK 上,把它当作通往后量子安全的路线。

但也一直有一条持续的格 SNARK 和格承诺研究线,涵盖 LaBRADOR、Greyhound、LatticeFold、SuperNeo,以及 Akita 的直接前身 Hachi。Lattice Jolt 建立在这些研究之上,把格承诺层引入高性能 zkVM 架构,同时证明格基 SNARK 在速度和紧凑性上无可匹敌。

这不该让人意外。如前所述,同样的模式已经在数字签名上发生过一遍。

密码学家基于很多假设构造过签名。哈希签名通常被认为是最保守的选择:它们的安全假设简单又古老。但世界主要走向格签名,因为它们更短更快:

  • ML-DSA 签名大约几 KB。
  • NIST 标准化的哈希替代方案 SLH-DSA 要大好几倍。
  • 对于加密和密钥交换,情况更明确:根本没有哈希方案可选(有证明这不可能),后量子部署压倒性地基于格。ML-KEM(NIST 在 2024 年确定的主要密钥建立标准)已经被主流浏览器、通讯应用默认部署,在网络上大量 TLS 连接中使用。

SNARK 和签名之间的类比并不是表面功夫。数字签名本质上就是对一个授权消息的私钥知识证明。SNARK 把这个范式从一条窄窄的陈述扩展到了任意计算。所以如果 SNARK 的长期密码学版图和签名、加密的版图完全不同,那才奇怪。

这里也有一个误解值得澄清:哈希 SNARK 常常被说成是保守的后量子选择,因为“它们只依赖哈希函数”。这只有在底层哈希函数是非代数的时候才成立。

如今,大多数基于哈希的 SNARK 部署都依赖 SNARK 友好的代数哈希构造(如 Poseidon),以便低成本地证明哈希被正确求值。这对于递归尤其重要(这里的递归指证明你持有一个有效的 SNARK 证明)。这些构造比标准哈希函数具有更多结构,而其密码分析尚不成熟。

简而言之,我们对代数哈希函数的安全性没有信心。尽管如此,它们如今仍被广泛用于生产级 SNARK 系统。(不过出现了一个进步信号:以太坊基金会最近宣布将放弃使用它们。)

代数哈希并非已部署的基于哈希的 SNARK 中唯一的隐藏假设:许多系统历史上会使用推测性的 proximity-gap 界限来设定具体安全级别,而不是使用完全经过证明的界限。其中一些被认为最强的界限后来被证明是错误的。

即便避开上述推测的基于哈希的 SNARK,其安全目标通常也低于 128 位,因为完整的 128 位安全会带来显著的性能开销。为什么?基于哈希的 SNARK 无法在 128 位域上达到 128 位安全,因为其可靠性误差按 n/|F| 缩放,其中 n 大致是被证明语句的规模,|F| 是域大小。因此在 128 位域上证明十亿步的语句会损失约 30 位安全,使其低于 100 位。相比之下,Lattice Jolt 的可靠性误差按 log(n)/|F| 缩放,在同一个域上几乎保留完整的 128 位安全(少量 log(n) 损失可通过标准技术恢复)。

讽刺的是,一些被宣传为“保守”后量子选择的系统,实际上同时依赖代数哈希函数、推测性 proximity-gap 界限,以及低于 128 位的目标安全级别。因此,虽然基于哈希的 SNARK 是一个重要方向,但它们并不自动成为许多人以为的低风险选项。

一个 Jolt,三种基础:曲线、格和哈希

我们一直认为,Jolt 不应被绑定到单一密码学基础。我们应当拥有基于曲线、哈希和格的成熟且高性能的 SNARK。不同假设和性能特征将适用于不同场景。

但如果以数字签名为参照,基于格的 SNARK 将成为部署最广泛的后量子选择。

Jolt 在这场转变中处于非同寻常的优势位置。最初的 Jolt 设计利用了椭圆曲线对承诺特别有用的特性,包括对稀疏向量进行快速承诺。格承诺具有同样的特性:当向量大多数条目为零或较小时,对向量承诺的成本很低,而 Jolt 几乎只对这类向量进行承诺。这一特性使我们能够将 Dory 替换为 Akita,同时保持 Jolt 其余部分不变。

我们将构建基于哈希的 Jolt 版本。但与基于曲线和基于格的 Jolt 相比,基于哈希的版本在空间效率上更差,证明更大,并存在各种复杂问题。这是因为最有前景的基于哈希的 SNARK 工作在二进制域上。这种数制便于证明哈希求值,但与 CPU 的算术方式不匹配。这种不匹配使得证明普通的 CPU 乘法变得昂贵。即便如此,生态也应在每个主要假设族下都有 zkVM,正如数字签名领域那样。

全能 SNARK

Lattice Jolt 一次性满足了构建者对 zkVM 的所有需求:后量子、透明、快速、紧凑且空间高效。它将从 LaBRADOR 到 Hachi 的格 SNARK 研究路线带入生产级 zkVM,同时没有放弃最初让 Jolt 变得快速的任何优势。

我们的目标不仅是将性能最强的 zkVM 开源供任何人使用,还在于大幅消除为特定应用手工调优 SNARK 的必要性。这并不要求 Jolt 与手工调优的证明器一样快。那是一个不可能的目标,好比要求 CPU 在每项任务上都匹敌专用 ASIC。它只要求 Jolt 快到足以提供可接受的用户体验。

对于与客户端证明相关的“小”语句(如今手工优化电路在这些场景占主导),关键标准是在手机上用大约一秒以内的时间生成证明。Jolt 已经接近实现这一点,且还有大量加速方案正在推进中。

格 SNARK 的时代已经到来。

Disclaimer: This article is copyrighted by the original author and does not represent MyToken’s views and positions. If you have any questions regarding content or copyright, please contact us.(www.mytokencap.com)contact
More exciting content is available on
X(https://x.com/MyTokencap)
or join the community to learn more:MyToken-English Telegram Group
https://t.me/mytokenGroup