通过基于 DDH 的指数可验证随机函数 (eVRF) 进行以太坊验证器密钥管理
作者: Yecheke Bonya Oryn Bonya 和 Antonio Sanso
随着以太坊和其他区块链平台朝着更具可扩展性和安全性的共识机制发展,对可验证随机性的需求也日益凸显。在权益证明 (PoS) 系统中,随机性驱动着验证者选择、领导者选举和委员会组建——这些流程必须既不可预测又可公开验证,才能维护系统的完整性。
可验证随机函数 (VRF)允许证明者生成伪随机输出,并提供证明,证明该输出是根据给定输入和密钥正确计算的。该证明可以在不泄露密钥的情况下公开验证。
Boneh 等人 (2025)提出的最新变体是指数 VRF (eVRF) ,它以密码组的“指数”输出随机性,从而增强了隐私性、阈值能力和代数可组合性。
在本文中,我们重点介绍基于 DDH 的 eVRF ,其安全性依赖于决策迪菲-赫尔曼 (DDH) 假设,以及一种高效的零知识证明协议,用于证明正确的 eVRF 评估而不会泄露任何秘密信息。
我们的实现使用了两条椭圆曲线:
- BLS12-381——一种广泛采用的配对友好曲线,用于以太坊的验证器签名方案,提供强大的安全性(128 位)和高效的配对操作,这对于聚合签名和其他高级加密协议至关重要……
- Bandersnatch——在 BLS12-381 标量场上定义的椭圆曲线,通过 GLV 自同态优化了快速标量乘法。
通过结合这些曲线,我们实现了高效的计算以及与现有以太坊加密基础设施的兼容性。
背景:VRF 和 eVRF
可验证随机函数(VRF)
VRF 是一组多项式时间算法(PPGen、KGen、Eval、Verify) ( P P G en , K G en , E v a l , Ver i f y ) ,具有以下规格:
- PPGen(1^\lambda) → pp P P G e n ( 1 λ ) → p p :公共参数生成算法,采用安全参数\lambda λ并输出公共参数pp p p
- KGen(1^\lambda) → (sk, pk) K G e n ( 1 λ ) → ( s k , p k ) :输出秘密/公钥对的密钥生成算法
- Eval(sk, x) → (y, \pi) E v a l ( s k , x ) → ( y , π ) :评估算法采用密钥和输入x x ,产生:
- y y :伪随机输出
- \pi π :正确计算的证明
- Verify(pk, x, y, \pi) → \{0, 1\} V e r i f y ( p k , x , y , π ) → { 0 , 1 } :接受或拒绝证明的验证算法
VRF 必须满足四个关键的安全属性:
- 正确性:对于所有诚实生成的密钥和输入,验证总是在诚实计算的输出和证明上成功
- 唯一性:对于任何输入x x和公钥pk p k ,最多存在一个值y y可以为其构建有效证明
- 伪随机性:对于任何先前未查询的输入,输出y y在计算上与随机不可区分
- 可验证性:没有对手可以为不正确的输出提供有效的证明
VRF 已部署在生产区块链系统中。Algorand 将其用于委员会选举的加密抽签,而 Cardano 则在其 Ouroboros Praos 共识协议中将其用于领导者选举。Chainlink 的可验证随机函数 (VRF) 服务是一个可验证随机数生成器 (RNG),可为去中心化应用程序和其他需要链上随机性的应用创建可证明的随机输出。VRF 也用于以太坊中的聚合器选择。
指数 VRF(eVRF)
eVRF 代表了对 VRF 输出格式的根本性修改,对隐私和可组合性具有重大影响:
令\mathbb{G} G为素数阶群q q ,其生成器为G G 。指数 VRF(eVRF)由多项式时间非均匀算法(PPGen、KGen、Eval、Verify)组成( P P G e n , K G e n , E v a l , Ver i f y ) ,其中:
- PPGen(1^\lambda) → pp P P Gen ( 1 λ ) → p p :公共参数生成算法
- KGen(1^\lambda) → (sk, pk) K G e n ( 1 λ ) → ( s k , p k ) :密钥生成输出私钥 sk 和公钥 pk
- Eval(sk, x) → (y, Y, \pi) E v a l ( sk , x ) → ( y , Y , π )其中:
- y ∈ \mathbb{Z}_q y ∈ Z q :实际伪随机值(保密)
- Y = y · G ∈ \mathbb{G} Y = y ⋅ G ∈ G :输出“在指数中”
- \pi π :正确计算的零知识证明
- Verify(pk, x, Y, \pi) → \{0, 1\} V e r i f y ( p k , x , Y , π ) → { 0 , 1 } :验证在不学习y y 的情况下检查证明
eVRF 的安全属性与标准 VRF 的安全属性相似,但还需注意以下几点:
- 可模拟性:存在一个模拟器,可以在不知道密钥的情况下产生无法区分的证明
关键区别在于输出格式:标准 VRF 直接显示y y ,而 eVRF 仅显示Y = y · G Y = y ⋅ G ,将实际随机值 y 隐藏在“指数中”。
数学构造
我们提出了两种基于 DDH 的 eVRF 构造:基本构造和完全构造。基本构造运算高效,但只覆盖了域中大约一半的组元素。完全构造通过应用剩余的哈希引理将覆盖范围扩展到所有组元素,从而确保完全域覆盖,但会增加计算开销。
在我们的实现中,Bandersnatch 用作源曲线( \mathbb{G}_S G S ),而 BLS12-381 用作目标曲线( \mathbb{G}_T G T ),利用这些曲线之间的兼容性,其中 BLS12-381 的标量场等于 Bandersnatch 的基场。
1. 基于DDH的基本eVRF
令(\mathbb{G}_S, \mathbb{G}_T) ( G S , G T )为一对群,其中|\mathbb{G}_S| = s | G S | = s , |\mathbb{G}_T| = q | G T | = q ,且\ell = \lfloor \log_2 \min(s, q) \rfloor - 1 ℓ = ⌊ log 2最小值( s , q ) ⌋ − 1 。
令G_{T,1}, G_{T,2} G T , 1 , G T , 2为G_T G T的生成器。
令H : \mathcal{X} \times \mathbb{G}_T \to \mathbb{G}_S^* H : X × G T → G ∗ S为哈希曲线函数。
密钥生成
输出sk=k s k = k , vk=Q v k = Q 。
评估
Q \gets k \cdot G_{T,1} Q ← k ⋅ G T , 1
X \gets H(x, Q) \in \mathbb{G}_S^* X ← H ( x , Q ) ∈ G ∗ S
P \gets k \cdot X P ← k ⋅ X其中P = (x_P, y_P) \in \mathbb{F}_q^2 P = ( x P , y P ) ∈ F 2 q
y \gets x_P \in \mathbb{F}_q y ← x P ∈ F q
Y \gets y \cdot G_{T,2} \in \mathbb{G}_T Y ← y ⋅ G T , 2 ∈ G T
对关系进行证明\pi π :
R_{\text{eDDH}} = \{ (Q, X, Y) : k \ |\ Q = k \cdot G_{T,1},\ Y = x_P \cdot G_{T,2},\ P = k \cdot X \}REDDH = { ( Q , X , Y ) : k | Q = k⋅GT , 1 , Y = xP⋅GT , 2 , P = k ⋅ X }
确认
检查\pi π验证(Q, H(x, Q), Y) \in R_{\text{eDDH}} ( Q , H ( x , Q ) , Y ) ∈ R eDDH 。
2. 基于DDH的完整eVRF
使用附加标量k' k ′和两个哈希点来扩展基本构造。
令H_1, H_2 : \mathcal{X} \times \mathbb{G}_T \to \mathbb{G}_S^* H 1 , H 2 : X × G T → G ∗ S为独立哈希函数。
密钥生成
输出sk = (k, k') s k = ( k , k ′ ) , vk = (Q, k') v k = ( Q , k ′ ) 。
评估
Q \gets k \cdot G_{T,1} Q ← k ⋅ G T , 1
X_1 \得到 H_1(x, Q) X 1 ← H 1 ( x , Q ) , X_2 \得到 H_2(x, Q) \in \mathbb{G}_S^* X 2 ← H 2 ( x , Q ) ∈ G ∗ S
P_1 \gets k \cdot X_1 P 1 ← k ⋅ X 1 , P_2 \gets k \cdot X_2 P 2 ← k ⋅ X 2
y \gets k' \cdot x_{P_1} + x_{P_2} \in \mathbb{F}_q y ← k ′ ⋅ x P 1 + x P 2 ∈ F q
Y \gets y \cdot G_{T,2} \in \mathbb{G}_T Y ← y ⋅ G T , 2 ∈ G T
对关系进行证明\pi π :
R^*_{\text{eDDH}} = \{ (Q, k', X_1, X_2, Y) : k \ |\ Q = k \cdot G_{T,1},\ Y = y \cdot G_{T,2},\ y = k' x_{P_1} + x_{P_2} \}R ∗ eDDH = { ( Q , k ′ , X1 , X2 , Y ) : k | Q = k⋅GT , 1 , Y = y⋅GT , 2 , y = k′xP1 + xP2 }
确认
检查\pi π验证(Q, k', H_1(x, Q), H_2(x, Q), Y) \in R^*_{\text{eDDH}} ( Q , k ′ , H 1 ( x , Q ) , H 2 ( x , Q ) , Y ) ∈ R ∗ eDDH 。
证明协议
为了在不泄露秘密信息的情况下证明 eVRF 评估的正确性,我们基于R1CS 的 Bulletproofs实现了一个零知识证明系统,并对其进行了Segev 的改进。我们的协议将关系R_{\text{eDDH}} R eDDH和R^*_{\text{eDDH}} R ∗ eDDH编译成结构化约束系统。
R1CS框架
我们的证明系统以 Bulletproofs 的改进型 R1CS 关系为基础。Bulletproofs 最初由 Benedikt Bünz 等人于2018 年提出,是零知识证明系统的一项重大进步,它无需可信设置即可提供对数级大小的证明。Bulletproofs 的核心基于内积论证,该论证允许通过一种优雅的递归方法来证明向量的知识,从而降低每轮向量的维度。
R1CS 实例由矩阵A, B, C \in \mathbb{Z}_q^{m \times n} A , B , C ∈ Z m × n q和见证向量z \in \mathbb{Z}_q^n z ∈ Z n q定义,且必须满足:
$$Az \circ Bz = Cz$$
其中\circ ∘表示 Hadamard 乘积(逐元素)。R1CS 关系精确地捕捉了一组既满足完备性又满足稳健性,同时又不影响性能的实例。
Schnorr 证明集成
为了建立支撑 eVRF 安全模型的离散对数关系,我们在协议的两个关键点采用了 Schnorr 证明。第一个 Schnorr 证明,记为\pi_Q π Q ,表明证明者知晓密钥k k ,且Q = k \cdot G_{T,1} Q = k ⋅ G T , 1 。此证明对于将公钥与 eVRF 评估中使用的密钥绑定至关重要,从而确保只有合法的密钥持有者才能生成有效的证明。第二个 Schnorr 证明\pi_Y π Y ,表明证明者知晓值y y ,且Y = y \cdot G_{T,2} Y = y ⋅ G T , 2 ,将 eVRF 输出与计算结果直接关联。这些 Schnorr 证明遵循标准的三步协议结构,但通过 Fiat-Shamir 转换呈现非交互式,其中挑战值是使用应用于承诺和公共参数的加密哈希函数生成的。
防弹协议执行
我们的证明系统的核心实现了针对 R1CS* 的改进的 Bulletproofs 协议,该协议为约束满足提供了零知识论证。
执行从设置阶段开始,在此阶段建立公共参数,包括素数阶q q的群\mathbb{G} G和生成器\mathbf{G}, \mathbf{H} \in \mathbb{G}^{n+m} G , H ∈ G n + m以及附加生成器G, H \in \mathbb{G} G , H ∈ G 。证明者持有一个代表承诺和约束矩阵的实例(T, A, B, C) ( T , A , B , C ) ,以及一个满足 R1CS* 关系要求的见证(x, x', y, y', \eta) ( x , x ′ , y , y ′ , η ) ,其中z = (x||y) z = ( x | | y )和z' = (x'||y') z ′ = ( x ′ | | y ′ ) 。
在承诺生成阶段,证明者采样随机性$$r \xleftarrow{$} \mathbb{Z}_q$$并构建承诺:
$$S = \langle ((x' | y) | Az), \mathbf{G} \rangle + \langle (0^n | Bz), \mathbf{H} \rangle + r \cdot H$$
然后,证明者使用 Fiat-Shamir 变换,并使用加密哈希函数根据承诺和公共参数确定性地生成挑战\alpha、\beta、\gamma、\delta α 、 β 、 γ 、 δ,这些函数用于创建约束方程的线性组合。
该协议通过复杂的内积论证进行,以递归方式降低证明的维数。这种递归结构实现了对数证明大小O(\log n) O ( log n )其中n n表示约束的数量,这使得该系统即使对于具有数百个约束的复杂 eVRF 构造也是实用的。
最后的验证步骤通过单次内积检验确认所有约束均已满足,从而完成零知识论证。整个协议通过在每个步骤中谨慎的随机化来维护安全性,确保见证人的信息不会泄露给验证者,同时确保 eVRF 评估的正确性。
我们的实现将这三个证明组件(离散对数 Schnorr 证明和 R1CS* Bulletproof)组合成一个统一的论证\pi = \{\pi_Q, \pi_Y, \pi_{BP}\} π = { π Q , π Y , π B P } ,该论证以对数通信复杂度和无可信设置要求提供 eVRF 正确性的完整验证。
BLS 验证器密钥生成
在以太坊的权益证明 (Proof-of-Stake) 共识机制中,每个验证者必须使用唯一的BLS12-381 密钥对才能参与网络的共识过程。这些加密密钥是安全架构的基础,因为它们用于签署关键的共识消息,包括证明(对区块链状态的投票)、区块提案和验证者职责分配。整个验证者集的完整性取决于这些密钥的安全生成、存储和正确使用。
根据以太坊更新后的质押要求,验证者现在可以为每个验证者身份质押 32 ETH 至 2,048 ETH ,这既支持独立的独立验证者,也支持运行广泛验证者集的大型机构运营商。这种灵活性使机构能够有效地管理资金配置,同时鼓励更多不同规模的验证者参与。
然而,这种设计给大规模验证者运营商带来了巨大的运营挑战。运行数百或数千个验证者的权益池、交易所和机构验证者必须管理相应数量的 BLS 密钥。这种情况会引入严重的漏洞:
密钥管理开销——安全地存储、备份和跟踪数千个私钥需要复杂的基础设施,并会成倍增加操作复杂性。每个密钥都必须单独保护,这给密钥轮换、备份程序和访问控制系统带来了后勤挑战。
攻击面扩大——每增加一个私钥都意味着一个潜在的攻击点。如果任何一个验证者密钥泄露或被盗,运营者将面临直接风险,包括大幅削减惩罚(因违反协议而自动减少质押的 ETH)、可能丧失验证者身份,以及可能影响其整体运营的声誉损害。
操作风险放大——传统密钥管理方法扩展性较差,人为错误、系统故障或安全漏洞的风险会随着管理的密钥数量的增加而成比例增加。
为了应对这些挑战,我们的实现引入了一种确定性验证器密钥派生方案,该方案利用基于 DDH 的 eVRF 的数学特性将密钥管理从 O(n)复杂度问题转变为 O(1)解决方案。
我们采用分层密钥派生架构,重新构想了验证器密钥管理。我们不再为每个验证器生成独立的密钥,而是使用单个 Bandersnatch 主密钥作为加密信任根,所有验证器密钥均使用 eVRF 评估函数从该主密钥确定性地派生。
主密钥生成和基于 eVRF 的派生
派生过程始于生成Bandersnatch 主密钥对。设(\mathbb{G}_s, \mathbb{G}_T) ( G s , G T )为群对,其中|\mathbb{G}_s| = s | G s | = s且|\mathbb{G}_T| = q | G T | = q ,且\ell = \lfloor \log_2 \min(s, q) \rfloor - 1 ℓ = ⌊ log 2最小值( s , q ) ⌋ − 1 。
主密钥生成:
$$k \xleftarrow{$} [2^{\ell+1} - 1], \quad Q = k \cdot G_{T,1}$$
其中sk_{\text{master}} = k s k master = k和vk_{\text{master}} = Q v k master = Q 。
确定性验证器密钥派生:系统采用 eVRF 评估函数,将验证器索引确定性地映射到加密安全的种子,以生成 BLS12-381 密钥。对于索引为i的验证器,派生过程如下:
索引编码:验证器索引被编码为 4 字节大端整数:
$$x = \text{encode}(i) \text{ 其中 } i \in [0, 2^{32}-1]$$eVRF 评估:主密钥和编码索引作为 eVRF 评估函数的输入:
$$y, Y, \pi \gets Eval(sk_{\text{master}}, x)$$加密种子生成: eVRF 输出y y通过 SHA-256 处理,以确保在 BLS12-381 标量场中均匀分布:
$$\text{seed} = \text{SHA256}(\text{encode}_{32}(y))$$BLS 密钥计算:最终的 BLS 验证器密钥计算如下:
$$sk_i = \text{bytes_to_int}(\text{seed}) \bmod r_{\text{BLS}}$$
$$pk_i = sk_i \cdot G_{\text{BLS}}$$
其中r_{\text{BLS}} r BLS是 BLS12-381 的标量场阶, G_{\text{BLS}} G BLS是以太坊验证器签名方案中使用的生成点。
验证流程
验证过程确保对于任何验证器索引i i ,派生的 BLS 密钥对(sk_{\text{BLS},i}, pk_{\text{BLS},i}) ( s k BLS , i , p k BLS , i )都是从主密钥正确计算出来的,而不会泄露sk_{\text{master}} s k master :
eVRF 验证:首先,验证 eVRF 证明组件:
$$\mathsf{验证}(vk_{\text{master}}, x, Y, \pi)$$
BLS 密钥验证:然后验证 BLS 密钥派生:
$$sk' i = \text{bytes_to_int}(\text{SHA256}(\text{encode} {32}(y))) \bmod r_{\text{BLS}}$$
$$pk'_i = sk' i \cdot G {\text{BLS}}$$
$$\text{验证:} pk'_i \stackrel{?}{=} pk_i$$
该验证过程提供了数学确定性,即密钥是根据协议生成的,同时保持零知识属性。
影响和现实利益
增强的安全态势:通过消除存储多个私钥的需要,系统大大减少了攻击面,同时保持了验证器之间的加密独立性。
合规性和可审计性:衍生过程的可验证性质使得全面的审计跟踪成为可能,而不会损害安全性,满足机构采用的监管要求。
灾难恢复:确定性生成确保了可靠的密钥恢复能力。给定主密钥sk_{\text{master}} s k master和索引i i ,验证者密钥始终可以重建。
可扩展性:系统可以有效扩展以支持大型验证器操作,而无需相应增加安全基础设施、操作复杂性或合规开销。
这种基于 DDH 的 eVRF 方法代表了区块链验证器密钥管理的转变,提供了大规模部署所需的简单性,同时保持了保护重大财务利益和网络完整性所必需的加密安全保障。
结论
这项工作证明了基于 DDH 的 eVRF可以通过实用的零知识证明高效地实现,并应用于区块链。通过利用BLS12-381和Bandersnatch ,我们实现了强大的安全性、快速的计算能力以及与以太坊验证器基础设施的兼容性。
我们的代码库提供:
- 概念验证 eVRF 实现及其证明可在此处找到。
- 验证器密钥派生和管理的框架。