可验证延迟函数(VDF)入门指南 - 区块链与密码学技术解析

本文深入解析可验证延迟函数(VDF)的技术原理,包括其数学定义、候选构造方案(Pietrzak方案等)、安全分析以及在区块链随机数生成和权益证明协议中的关键应用,同时探讨当前实现面临的信任设置等开放性问题。

可验证延迟函数(VDF)入门指南

区块链随机性的挑战

在区块链上获取随机数非常困难。开发者常犯的典型错误是使用未来区块哈希、区块难度或时间戳等链上数据作为随机源。这类方案的共同问题是容易被矿工操纵。例如:

  • 假设我们运行一个链上彩票游戏,用户猜测下一个区块哈希的奇偶性
  • 矿工可以押注"偶数",如果挖出的区块哈希为奇数就丢弃该区块
  • 这种策略能轻微提高矿工的中奖概率

权益证明(PoS)协议中的验证者选举也存在类似问题。攻击者可以轻易观察不同输入如何影响伪随机数生成器的输出结果。

VDF的核心定义

给定延迟时间t,可验证延迟函数f必须满足:

  1. 顺序性:任何人都能用t个顺序步骤计算f(x),但拥有大量处理器的攻击者无法显著更快地辨别f(x)的输出
  2. 高效可验证性:给定输出y,任何观察者都能在极短时间内(具体为log(t))验证y = f(x)

VDF的关键特性在于:

  • 计算时间呈指数级高于验证时间
  • 在最终结果产生前,输出不可区分于随机数
  • 验证者接受错误输出的概率必须极低(由安全参数λ控制)

VDF候选构造方案

目前有三种满足要求的VDF构造方案,各具特点:

Pietrzak方案(基于未知阶群的重复平方)

  1. 设置阶段:
    • 选择时间参数T
    • 选择未知阶的有限阿贝尔群G
    • 选择哈希函数H: bytes → G
  2. 计算过程:
    • 输入x,计算g = H(x)
    • 输出y = g^(2^T)
  3. 验证协议(可通过Fiat-Shamir启发式转为非交互式):
    • 证明者计算v = g^(2^(T/2))并发送给验证者
    • 验证者发送随机数r ∈ {1,…,2^λ}
    • 双方计算g₁ = gʳv,z₁ = vʳz
    • 递归证明z₁ = g₁^(2^(T/2))

Pietrzak方案的安全分析

该方案的安全性依赖于低阶假设:攻击者难以在VDF使用的群中找到低阶元素。如果发现阶为d的低阶元素m:

  • 恶意证明者发送zm给验证者
  • 无效输出被接受的概率为1/d

群选择问题

  • RSA群:需要可信第三方生成(因需知道模数分解)
  • 类群:无需信任设置,但低阶元素安全性研究不足

VDF现状与开放问题

实现挑战

  1. 无信任的RSA群生成仍是开放问题
  2. Wesolowski方案依赖的"自适应根假设"缺乏数学研究
  3. 抗量子VDF构造
  4. ASIC对实际安全性的影响

行业应用

  • Chia:采用重复平方技术,举办实现竞赛
  • 以太坊基金会:开发结合RANDAO与VDF的伪随机数生成器

警告:该领域研究仍处于早期阶段,所有安全性声明都应谨慎看待。

原文链接 | 分享到Twitter | 在Hacker News讨论

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计