链上可信设置仪式 PlatoBlockchain Data Intelligence。 垂直搜索。 哎。

链上可信设置仪式

受信任的设置仪式是加密社区的痛苦和兴奋之一。 仪式的目标是生成可信赖的加密密钥,用于保护加密钱包、区块链协议或零知识证明系统。 这些(有时是华丽的)程序通常是给定项目安全性的信任根源,因此正确处理它们非常重要。

区块链项目以多种创造性的方式举办仪式——包括喷灯、放射性尘埃和飞机——但都有一个共同点:它们都涉及一个集中的协调者。 通过这项工作,我们展示了如何通过用智能合约替换中心化协调器来分散流程。 此外,我们正在开源一个库,允许任何人运行这样的仪式——加密从业者将其称为 凯特-扎维鲁查-戈德堡 (KZG) 或“powers-of-tau”仪式——在以太坊链上。 任何人只需支付交易费用即可参与!

我们的去中心化方法有局限性,但它仍然有用。 由于当前的链上数据限制,密码参数的大小必须保持较短,即不超过 64 KB。 但是参与者的数量没有上限,人们可以永久提交贡献。 这些短参数的应用包括小型零知识 SNARK, 数据可用性抽样维克尔树.

可信设置仪式的历史和机制

在典型的可信设置仪式中,一组参与者将协作生成一组密码参数。 每个参与方都使用本地生成的秘密信息来生成有助于创建这些参数的数据。 适当的设置确保秘密不会泄露,秘密仅用于协议指定的用途,并且这些秘密在仪式结束时被完全销毁。 只要仪式中至少有一方行为诚实,没有受到损害,并破坏了其本地机密,整个设置就可以被认为是安全的。 (当然,这是假设数学正确并且代码没有错误。)

一些最突出的仪式是 由 Zcash 运营,一个面向隐私的区块链项目。 这些仪式的参与者生成了公共参数,旨在允许 Zcash 用户构建和验证私人加密交易。 2016 年,六名参与者举行了第一次 Zcash 仪式,即 Sprout。两年后,加密货币研究员 Ariel Gabizon,现在是首席科学家 阿兹特克,发现 一个毁灭性的错误 在仪式的设计中继承自 基础研究论文. 该漏洞可能使攻击者能够在不被发现的情况下创建无限的 Zcash 代币。 Zcash 团队将漏洞保密了七个月,直到系统升级,Sapling 的仪式涉及 90 名参与者,解决了这个问题。 虽然基于安全漏洞的攻击不会影响用户交易的隐私,但无限伪造的前景破坏了 Zcash 的安全前提。 (理论上不可能知道是否发生了攻击。)

可信设置的另一个值得注意的例子是 永久的“权力的tau”仪式 主要设计用于 信号,一种隐私保护技术,用于以太坊上的匿名信令。 该设置使用 BN254 椭圆曲线,到目前为止已有 71 名参与者。 其他著名项目后来使用此设置在顶部运行自己的仪式,包括 龙卷风现金 (最近被美国政府批准), 赫梅兹 网络,以及 Loopring. 阿兹特克 为 zkSync 在 BLS12_381 椭圆曲线上举行了类似的仪式,zkSync 是使用零知识汇总的“第二层”以太坊扩展解决方案。 Filecoin分布式数据存储协议,在第一阶段和第二阶段分别有 19 名和 33 名参与者举行了分叉原始回购的仪式。 热情,一个第一层区块链,也为他们的轻客户端 Plumo 举行了仪式。

永久仪式对参加人数没有限制。 换句话说,任何人都可以参与到满足他们满意的任何程度的安全性,而不是信任其他人来运行受信任的设置仪式。 一个值得信赖的参与者确保所有结果参数的安全性; 链条的强度与其最牢固的一环一样牢固。 顾名思义,永久仪式可以永久进行,就像原始权力仪式的前提一样。 也就是说,项目通常会决定其仪式的具体开始和结束时间,这样他们就可以将结果参数嵌入到他们的协议中,而不必担心不断更新它们。

以太坊计划为即将举行的小型可信设置仪式 ProtoDank分片分片 升级。 这两次升级将增加以太坊链提供给客户进行存储的数据量。 此数据将有一个建议的到期 30 到 60 天. 仪式是 正在积极开发中和IS 计划 明年年初运行六周。 (看 kzg 仪式规格 了解更多详细信息。)它正在成为迄今为止运行的最大的区块链可信设置仪式。

当谈到可信的设置仪式时,偏执狂是一种美德。 如果机器的硬件或软件遭到破坏,则可能会破坏其生成的机密的安全性。 泄露秘密的偷偷摸摸的侧信道攻击也很难排除。 手机可以通过以下方式监视计算机的操作 记录声波 例如,CPU 振动。 在实践中,由于很难消除所有可能的侧信道攻击——包括那些仍有待发现或披露的攻击——甚至有人提议将机器飞到太空进行 那里的仪式.

目前,严肃仪式参与者的剧本通常如下所示。 购买一台新机器(未污染的硬件)。 通过移除所有网卡来隔离它(以防止本地机密离开机器)。 在远程未公开位置的法拉第笼中运行机器(以阻止潜在的窥探者)。 在伪随机秘密生成器中植入大量熵和硬复制数据,例如随机击键或视频文件(以使秘密难以破解)。 最后,通过将所有东西烧成灰烬来摧毁机器——连同任何秘密痕迹。 😀

协调可信的设置仪式

以下是一些以前受信任的设置仪式参与者的有趣引用:

  • ……喷灯被用来有条不紊地加热电子设备,直到一切都变黑……“ - 彼得·托德 关于物理破坏当地的秘密。
  • “我这里有一块织物,上面有 [来自] [切尔诺贝利] 反应堆核心的石墨粉尘……你每四个脉冲计数一次 [来自连接到微控制器的盖革计数器],然后比较脉冲 XNUMX 和脉冲之间的时间间隔XNUMX 和脉冲 XNUMX 和 XNUMX 之间的时间间隔,如果它更大,你得到一个零,如果它更小,你得到一个。 “……我们即将进入这架飞机并生成我们的随机数……” - 瑞恩皮尔斯和安德鲁米勒 关于秘密一代。

Zcash power-of-tau 仪式第 41 轮涉及一架飞机。 截图:YouTube 视频

  • 销售人员说他们有 13 台[电脑]。 我问我们是否可以从 13 个中选择一个。他问我是否有什么特别要找的东西(因为它们都是一样的而感到困惑),我说我只是想随机选择一个。 他说他不能让我们进入后仓库。 我问他是否会带两个出来,这样我们就可以选择两个中的一个。 他用手推车带了两个出来。 杰瑞选择了两台电脑中的一台,我们把它带到收银台结账。“ - 彼得·范·法肯伯格 关于获得一台新机器。
  • 仪式的前几个小时是在一个由铝箔和保鲜膜制成的临时法拉第笼中进行的。 我将笔记本电脑从法拉第笼中移出,因为它通风不良并且摸起来很热“ - 高伟杰 关于边信道保护。
  • ..在没有邻居的山上举行了一部分仪式。“ - 迈克尔·拉宾斯基 关于边信道保护。
  • =我选择使用周围环境的视频来产生足够的熵“ - 穆哈德·阿姆鲁拉 关于随机值的生成。
链上可信设置仪式 PlatoBlockchain Data Intelligence。 垂直搜索。 哎。

Zcash 联合创始人 Zooko Wilcox 的兄弟 Za Wilcox 在 2016 年摧毁了一台用于为可信仪式生成随机数的计算机。照片:Morgen Peck

所有这些仪式都依赖于一个集中的协调员。 协调者是个人或私人服务器或其他实体,受托注册和订购参与者,通过将信息从前一个参与者转发到下一个参与者来充当中继,并为可审计目的保留所有通信的集中日志。 协调员通常还负责将日志永久提供给公众; 当然,我集中式系统总是有可能导致数据丢失或管理不善。 (例如 Perpetual-powers-of-tau 存储在 Microsoft Azure 和 Github 上。)

具有讽刺意味的是,当去中心化是加密精神的核心原则时,加密项目必须依赖集中的可信设置仪式。 因此,我们决定展示直接在以太坊区块链上为 perpetual-powers-of-tau 举办小型仪式的可行性! 该设置是完全去中心化的、无需许可的、抗审查的,并且只要任何一个参与者是诚实的 [见 免责声明]。 参加仪式只需 292,600 到 17,760,000 天然气(按当前价格计算约为 7 到 400 美元),具体取决于所需结果参数的大小(在这种情况下,在 8 到 1024 次幂之间)。 (具体成本见下表——我们将在后面的文章中详细介绍这些计算。)

链上可信设置仪式 PlatoBlockchain Data Intelligence。 垂直搜索。 哎。

到目前为止,我们建议不要将代码用于实验目的以外的任何用途! 如果有人发现代码有任何问题,我们将不胜感激。 我们很乐意收集有关我们方法的反馈和审计。

了解 KZG 或“权力的 tau”仪式

让我们探索最流行的受信任设置之一,它被称为 KZG,或“powers-of-tau”仪式。 归功于以太坊联合创始人 Vitalik Buterin,他的 关于可信设置的博文 在本节中告知了我们的想法。 该设置生成 tau 幂的编码,之所以如此命名,是因为“tau”恰好是用于表达参与者生成的秘密的变量:

pp = [[𝜏]1,[𝜏2]1,[𝜏3]1, ..., [𝜏n]1; [𝜏]2,[𝜏2]2, ..., [𝜏k]2]

对于某些应用程序(例如,Groth16,一种流行的 zkSNARK 证明方案,由 Jens Groth 在 2016 年设计),设置的第一阶段之后是第二阶段,即多方计算(MPC)仪式,为特定的 SNARK 电路生成参数. 然而,我们的工作只关注第一阶段。 第一阶段——power-of-tau 的生成——已经作为通用 SNARK(例如 PLONK 和 SONIC)以及其他密码学应用程序(例如 KZG承诺, 维克尔树数据可用性抽样 (DAS)。 一般来说,通用 SNARK 参数应该非常大,以便它们可以支持大而有用的电路。 包含更多门的电路通常更有用,因为它们可以捕获大量计算; tau 的数量大致对应于电路中门的数量。 因此,典型的设置大小为 |pp| = ~40 GB 并且能够支持 ~2 的电路28 大门。 鉴于以太坊目前的限制,将如此大的参数放在链上是不可行的,但对小型 SNARK 电路、Verkle 树或 DAS 有用的较小的可信设置仪式可以在链上运行。

以太坊基金会计划运行几个较小的 仪式 适用于大小为 200 KB 到 1.5 MB 的 tau 幂。 虽然更大的仪式可能看起来更好,但考虑到更大的参数可以创建更有用的 SNARK 电路,事实上,更大的并不总是更好。 某些应用程序,例如 DAS,特别需要一个更小的应用程序! [原因是非常技术性的,但如果你好奇,那是因为一个具有 n 次幂的设置(在 G1) 仅使 KZG-commitments 对 ≤ n 次的多项式起作用,这对于确保 KZG-commitment 下的多项式可以从任何 n 个评估中重建是至关重要的。 此属性支持数据可用性采样:每次成功获得(采样)多项式的 t 随机评估,它保证多项式可以以概率 t/n 完全重构。 如果您想了解有关 DAS 的更多信息,请查看 Buterin 的这篇文章 在以太坊研究论坛上.]

我们设计了一个可以部署在以太坊区块链上的智能合约来运行可信的设置仪式。 该合约将公共参数——tau 的权力——完全存储在链上,并通过用户的交易收集参与。

新参与者首先读取这些参数:

pp0 =([𝜏]1,[𝜏2]1,[𝜏3]1, ..., [𝜏n]1; [𝜏]2,[𝜏2]2, ..., [𝜏k]2),

然后对随机秘密 𝜏' 进行采样并计算更新的参数:

pp1 = ([𝜏𝜏']1, [(𝜏𝜏')2]1, [(𝜏𝜏')3]1, ..., [(𝜏𝜏')n]1; [𝜏𝜏']2, [(𝜏𝜏')2]2, ..., [(𝜏𝜏')k]2),

并在链上发布它们,并附上证明三件事的证明:

  1. 离散对数知识:参与者知道𝜏'。 (证明对可信设置仪式的最新贡献建立在所有先前参与者的工作之上。)
  2. pp的格式良好1:这些元素确实编码了递增的权力。(对新参与者对仪式的贡献的良好形式的验证。)
  3. 更新不会被删除: 𝜏' ≠ 0。(防止攻击者试图通过删除所有参与者过去的工作来破坏系统。)

智能合约验证证明,如果它是正确的,它会更新它存储的公共参数。 您可以在 回购.

计算天然气成本

在链上运行设置的主要挑战是使可信设置仪式尽可能节省燃料。 理想情况下,提交捐款的费用不超过 50 美元。 (大型项目可能能够为贡献者提供 gas 补贴,在这种情况下,数百名参与者每人花费 100 美元更容易想象)。 下面,我们将详细介绍设置中最昂贵的部分。 较低的 gas 成本将降低贡献成本并允许构建更长的参数(更多的 tau 功率和更大的 SNARK 电路)!

我们的设置适用于椭圆曲线 BN254(也称为 BN256、BN128 和 alt_bn128),它支持 以下预编译合约 在以太坊上:

  • ECADD允许添加两个椭圆曲线点,即计算[𝛼+𝛽]1 来自 [𝛼]1 和 [𝛽]1: 汽油费 150
  • ECMULT 允许椭圆曲线点乘以一个标量,即计算 [a*𝛼]1 来自 a 和 [𝛼]1: 汽油费 6,000
  • ECPAIR 允许检查椭圆曲线对的乘积,即计算 e([𝛼1]1, [𝛽1]2)* … *e([𝛼1]1, [𝛽1]2) = 1 这相当于检查 𝛼1*𝛽1+ … + 𝛼k*𝛽k = 0:gas 成本 34,000 * k + 45,000

以太坊可能会启用 BLS12_381(如建议 EIP-2537),我们的设置合同也可以很容易地适用于这条其他曲线。

让我们估计将设置更新为 ([𝜏]1,[𝜏2]1,[𝜏3]1, ..., [𝜏n]1; [𝜏]2):

  1. 验证证明的 Gas 成本。 每个参与者更新设置并提交包含上述三个组件的证明。 证明的第 1 部分和第 3 部分——“离散日志的知识”和“更新不擦除”——验证起来非常便宜。 挑战在于验证组件 2,“pp 的格式良好1”,上链。 它需要一个大的多标量乘法 (MSM) 和两个配对:
    e(𝝆0[1]1 +𝝆1[𝜏]1 +𝝆2[𝜏2]1 + … + 𝝆正1[𝜏正2]1,[𝜏]2) = e([𝜏]1 +𝝆1[𝜏2]1 + … + 𝝆正1[𝜏正1]1,[1]2),
    在哪里𝝆0,…,𝝆正1 是伪随机采样的标量。 就预编译的智能合约而言,它将需要:
    (2n-4) x ECADD + (2n-4) x ECMULT + ECPAIRk = 2 = (2n-4) x 6,150 + 113,000 气体。
  2. 存储数据的 Gas 成本。 每个参与者还将更新作为调用数据(每字节 68 个气体)存储在链上,占 n*64*68 个气体。 (对于那些熟悉椭圆曲线密码学的人的注意事项:根据我们对 n=256 的测量,存储压缩点将使解压缩占总成本。)

这将我们带到了下表,估计了天然气成本,这应该为未来的优化提供信息:

链上可信设置仪式 PlatoBlockchain Data Intelligence。 垂直搜索。 哎。

我们正在探索降低 gas 成本的解决方案,敬请期待!

开源库:evm-powers-of-tau

我们已经在以下位置开源了基于 EVM 的 power-of-tau 仪式回购 github.com/a16z/evm-powers-of-tau. 使用我们的策略举行仪式既简单又透明:

  1. 部署存储和验证合约(contracts/KZG.sol)
  2. 贡献者从之前的交易调用数据中读取仪式参数
  3. 贡献者在本地生成一个秘密,计算更新的参数
  4. 贡献者生成他们的证明:pi1, pi2
  5. 贡献者通过 KZG.potUpdate() 将更新后的参数提交到公链上部署的智能合约
  6. 智能合约将验证更新的有效性,在提交格式错误的情况下恢复
  7. 多个贡献者可以永久执行步骤 2-5,每个步骤都增加了仪式的安全性
  8. 只要开发人员对提交的数量和质量有信心,他们就可以在区块链中查询当前参数并将这些值用作他们的加密密钥

我们的回购使用 方舟-rs 计算步骤二和三(锈计算可以在 src/pot_update.rs),但用户可能想要自己编写。 更新提交的整个端到端流程可以在集成测试中找到 测试/integration_test.rs.

请注意,我们选择使用 calldata 在链上存储更新的 tau 参数,因为它比存储便宜几个数量级。 可以在以下位置找到针对此数据的基于 ethers-rs 的查询 源代码/query.rs.

最后,证明和详细的方程式可以在技术报告中找到 技术报告/main.pdf.

未来的工作

在这个受信任的设置仪式可以用于生产之前,我们建议首先对数学证明和示例实现进行全面审核。

随着实施,更新仪式的交易成本随着设置大小线性增长。 对于大多数应用程序(SNARK、DAS),我们需要 n >= 256 的设置,目前每次更新成本为 73 美元。 

我们可能能够通过有效更新计算的 STARK 证明和对更新值的向量承诺来实现亚线性验证成本增长。 这种结构还将消除对以太坊 L1 BN254 预编译的依赖,从而能够使用更流行的 BLS12-381 曲线。

所有仪式策略都有权衡。 我们认为这种结构是可靠的,并且具有很好的可验证的抗审查特性。 但同样,在完成更多工作以验证我们方法的可靠性之前,我们会警告不要使用这种方法。

致谢

  • Dan Boneh – 在这项工作的早期阶段提供有用的反馈
  • Joe Bonneau – 澄清技术报告早期版本中的说明
  • William Borgeaud – 在 TurboPlonk / Plonky2 中讨论 BLS
  • Mary Maller——关于该方法的一般机制的思考

编辑:罗伯特哈克特@rhhackett

***

此处表达的观点是引用的个人 AH Capital Management, LLC (“a16z”) 人员的观点,而不是 a16z 或其关联公司的观点。 此处包含的某些信息是从第三方来源获得的,包括来自 a16z 管理的基金的投资组合公司。 虽然取自被认为可靠的来源,但 a16z 并未独立验证此类信息,也不就该信息的当前或持久准确性或其在特定情况下的适用性做出任何陈述。 此外,该内容可能包含第三方广告; a16z 未审查此类广告,也不认可其中包含的任何广告内容。

此内容仅供参考,不应被视为法律、商业、投资或税务建议。 您应该就这些事项咨询您自己的顾问。 对任何证券或数字资产的引用仅用于说明目的,并不构成投资建议或提供投资咨询服务的要约。 此外,本内容并非针对也不打算供任何投资者或潜在投资者使用,并且在任何情况下都不得在决定投资于 a16z 管理的任何基金时作为依据。 (投资 a16z 基金的要约仅通过私募备忘录、认购协议和任何此类基金的其他相关文件提出,并应完整阅读。)任何提及、提及或提及的投资或投资组合公司所描述的并不代表对 a16z 管理的车辆的所有投资,并且不能保证这些投资将是有利可图的,或者将来进行的其他投资将具有类似的特征或结果。 由 Andreessen Horowitz 管理的基金进行的投资清单(不包括发行人未允许 a16z 公开披露的投资以及对公开交易的数字资产的未宣布投资)可在 https://a16z.com/investments 获得/。

其中提供的图表仅供参考,在做出任何投资决定时不应依赖。 过去的表现并不预示未来的结果。 内容仅在所示日期生效。 这些材料中表达的任何预测、估计、预测、目标、前景和/或意见如有更改,恕不另行通知,并且可能与他人表达的意见不同或相反。 有关其他重要信息,请参阅 https://a16z.com/disclosures。

时间戳记:

更多来自 安德森霍洛维茨