介绍
以太坊的发展路线图中包含了一项关键技术——数据可用性采样(DAS)。这项技术由多位研究者提出,并需要实现特定的技术要求,包括专用网络协议。目前,一个值得关注的协议提案建议采用基于Kademlia的分布式哈希表(DHT)来存储和检索数据样本。
然而,DHT系统容易遭受Sybil攻击,攻击者通过控制大量节点可能导致DAS样本不可用。为了解决这个问题,可以考虑建立一个高信任度的网络层,仅允许信标链验证者参与。这种安全措施显著提高了攻击门槛,因为攻击者需要质押ETH才能发动攻击。
本文将介绍一种验证者证明协议,使DHT参与者能够通过零知识证明来验证自己是以太坊验证者。
动机:DAS面临的”样本隐藏”攻击
为了更好地理解验证者证明协议的必要性,我们需要先探讨数据可用性采样面临的Sybil攻击威胁。
DAS协议的核心在于确保区块数据的可用性,使客户端能够获取所需信息。当前的方法是将数据分割成样本,网络参与者只需获取自己感兴趣的样本。
设想这样一个场景:Sybil攻击者试图阻止网络参与者从目标节点获取样本。如图所示,攻击者生成大量与目标节点ID相近的虚假节点ID,通过包围目标节点来阻止客户端发现其存在,因为恶意节点会故意隐瞒目标节点的信息。
关于这类攻击的更多细节可以参考这项研究。此外,Dankrad的DAS网络协议提案也详细描述了S/Kademlia DHT协议如何遭受此类攻击,并强调了验证者证明协议的必要性。
验证者证明(Proof of Validator)
上述攻击促使我们开发验证者证明协议:如果只有验证者可以加入DHT,那么想要发动Sybil攻击就需要质押大量ETH,这大大提高了攻击成本。
通过验证者证明协议,我们确保只有信标链验证者能够加入DHT,并且每个验证者都获得唯一的DHT身份。同时,为了增强网络弹性,我们还致力于在网络层隐藏验证者的具体身份,防止攻击者识别特定DHT节点对应的验证者。
为了实现这些目标,验证者证明协议需要满足几个关键要求:
- 独特性:每个验证者必须能够生成唯一的密钥对,这既限制了Sybil攻击者能创建的节点数量,也允许网络参与者将不当行为的节点列入黑名单
- 隐私性:攻击者无法确定特定公钥对应的具体验证者
- 验证效率:验证过程必须高效,每个节点处理时间不超过200ms,确保每秒能学习至少5个新节点
在DHT层建立连接时,Bob可以使用这个协议向Alice证明自己是验证者。
验证者证明协议(Proof of Validator protocol)
验证者证明协议本质上是一个匿名凭证方案,其核心是让Alice能够生成唯一的派生密钥D,前提是她确实是验证者。之后,Alice就可以在网络层使用这个派生密钥D。
在设计这个协议时,我们力求方案简单易实现,同时确保它能有效满足前述的各项要求。
协议概述
该协议采用成员证明子协议,Alice通过零知识证明来证明自己是验证者,并基于秘密哈希前像构建唯一的密钥对。
成员证明子协议可以通过不同方式实现。本文将介绍两种方法:一种是使用Merkle树,另一种是采用查找机制。这两种方法各有优劣:Merkle树依赖SNARK友好的哈希函数如Poseidon,而高效的查找协议则需要与验证者集合规模相当的powers-of-tau可信设置。
方法一:Merkle树
Merkle树在成员证明领域已有广泛应用(例如Semaphore)。其优势在于不需要可信设置且易于理解,但缺点是依赖实验性的SNARK友好哈希函数,且证明生成速度较慢。
协议完成后,Alice就可以使用D在DHT中对消息签名,并派生出唯一的DHT节点身份。
方法二:查找机制
使用查找机制(如Caulk)的优点是证明生成极其高效,且可以使用常规哈希函数,但缺点是需要大规模的可信设置。
性能评估
我们对成员证明协议进行了性能测试(测试代码),重点关注证明生成和验证时间。测试使用Halo2证明系统和IPA多项式承诺方案,结果显示即使在五年前的Intel i7-8550U处理器上,性能也能满足要求。
讨论
身份轮换
验证者证明协议确保每个参与者拥有不同的派生密钥。但某些情况下,允许验证者定期(如每天)更换派生密钥可能更有利。这样,即使某天某个密钥被列入黑名单,第二天也能生成新的密钥。如果需要永久性黑名单功能,则需要更复杂的匿名凭证方案如SNARKBlock。
为什么不直接使用BLS12-381公钥?
另一种简单方法是基于所有验证者的BLS12-381公钥构建承诺并进行成员证明。但我们没有采用这种方法,因为将敏感的身份私钥引入复杂的加密协议存在安全风险,也不利于验证者保持主密钥离线。
未来研究方向
- 能否完全避免SNARK电路,用纯代数方法实现成员证明和密钥派生?
- 能否在不依赖可信设置和SNARK友好哈希函数的情况下,实现高效的成员证明协议?
致谢
感谢Enrico Bottazzi、Cedoor、Vivian Plasencia和Wanseob在成员证明代码开发过程中提供的帮助。
声明:文章不代表CHAINTT观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险 自担!转载请注明出处:https://www.chaintt.cn/11308.html