Survey of Verifiable Delay Functions
Survey of Verifiable Delay Functions
Abstract
A verifiable delay function (VDF) is an important tool used for adding delay in decentralized
applications. This short note briefly surveys and compares two recent beautiful Verifiable Delay
Functions (VDFs), one due to Pietrzak and the other due to Wesolowski. We also provide a
new computational proof of security for one of them, and compare the complexity assumptions
needed for both schemes.
1
2 Two Verifiable Delay Functions
A VDF is based on a computational task that cannot be sped up by parallelism. Exponentiation
in a group of unknown order is believed to have this property, and was previously used by Rivest,
Shamir, and Wagner [15] to construct a time-lock puzzle. The two recent VDF proposals, one due
to Pietrzak [14] and the other due to Wesolowski [16], similarly make use of the serial nature of
this task.
Both VDF constructions operate as follows:
– A finite abelian group G of unknown order – we will discuss concrete groups in Section 6;
– An efficiently computable hash function H : X → G that we model as a random oracle.
We measure running time in terms of the number of group operations in G needed to compute the
function. It is believed that computing y requires T sequential squarings in G even on a parallel
computer with poly(λ) processors, as required for sequentiality. As we will see, computing the
proof π increases the running time to (1 + )T , as needed for -evaluation time. In practice one
might set T = 230 and = 0.01.
The remaining question is how a public verifier Verify(pp, x, y, π) can quickly check that the
T
output y is correct, namely that y = H(x)(2 ) . This is where the proposal of Pietrzak and the
proposal of Wesolowski differ. They give two different public-coin succinct arguments for proving
that the output y is correct. Thanks to the public-coin nature of these arguments they can be
made non-interactive using the Fiat-Shamir Heuristic [4, Sec. 19.6.1].
Proving correctness of the output y. To state the problem more abstractly, let us use the
following notation:
• let g := H(x) ∈ G be the base element given as input to the VDF evaluator;
T
• let h := y ∈ G be the purported output of the VDF, namely h = g (2 ) ;
2
2.1 Wesolowski’s succinct argument
Wesolowski [16] presents the following succinct public-coin interactive argument for the language
LEXP defined in (1). Specifically, given a tuple (G, g, h, T ) as input, the prover and verifier engage
T
in the following protocol to prove that h = g (2 ) in G. We let Primes(λ) be the set containing the
first 2λ primes, namely 2, 3, 5, 7, etc.
1. The verifier sends to the prover a random prime ` sampled uniformly from Primes(λ),
We note that the protocol works equally well when the exponent 2T is an arbitrary integer e, not
necessarily a power of two. The verifier just needs a quick way to compute r := e mod `.
Non-interactive variant. When the protocol is made non-interactive using Fiat-Shamir the
prover first generates ` by using a hash function that maps the input (G, g, h, T ) to an element
of Primes(λ). The analysis will assume that this hash function is a random oracle. The prover
computes π ← g q as in step (2) above, and outputs this π ∈ G as the proof. The verifier computes `
the same way as the prover and decides to accept or reject as in step (3) above. Overall, the proof
π is a single element in G.
Verifier efficiency. The verifier needs to compute r ← 2T mod `, which only takes log2 T mul-
tiplications in Z/`. Beyond that, the verifier only computes two small exponentiations in G.
Prover efficiency. The prover needs to compute π = g q ∈ G where q = b2T /`c. Because T is
large, we cannot write out q as an explicit integer exponent. Nevertheless, we can compute π = g q
in at most 2T group operations and constant space using the long-division algorithm, where the
quotient is computed in the exponent base g.
π ← 1 ∈ G, r←1∈Z
repeat T times:
b ← b2r/`c ∈ {0, 1} and r ← (2r mod `) ∈ {0, . . . , ` − 1}
π ← π2gb ∈ G
output π // this π equals g q
The running time can be reduced to about T group operations using a windowing method where
we process k bits of 2T per iteration, for some parameter k ≥ 1, say k = 5.
In Appendix A we describe an extension that lets us speed up the computation of g q by a factor
of s using s processors. Hence, the VDF output and the proof π can be computed in total time
approximately (1 + 1s )T with s processors and space s. Wesolowski [16] shows that with space 2k
one can further speed-up the computation by a factor of k.
3
0. The verifier checks that g, h ∈ G and outputs reject if not,
Non-interactive variant. When the protocol is made non-interactive using Fiat-Shamir the
prover generates the challenge r in every level of the recursion by hashing the quantities (G, g, h, T, v)
at that level, and appends v to the overall proof π. Hence, the overall proof π contains log2 T ele-
ments in G.
Verifier efficiency. At every level of the recursion the verifier does two small exponentiations in
G to compute g1 and h1 for the next level. Hence, verifying the proof takes about 2 log2 T small
exponentiations in G.
Prover efficiency. The prover needs to compute the quantity v at every level of the recursion.
We let v1 , r1 be the values of v and r at the top level of the recursion, v2 , r2 the values at the next
4
level, and so on. Unwinding the recursion shows that these quantities are:
T /2 )
v1 = g (2
T /4 r1 3T /4
(2T /4 ) T /4 )
v2 = g1 = (g r1 v1 )(2 = g (2 ) g (2 )
The pattern that emerges suggests an efficient way to construct the proof π. When the VDF
T (i·T /2d )
evaluator first computes the VDF output h = g (2 ) it stores 2d group elements g (2 ) for
i = 0, . . . , 2 − 1 as they are encountered along the way. Later, as it constructs the proof π, these 2d
d
stored values let it compute the group elements v1 , . . . , vd needed for the proof using a total of about
2d small exponentiations in G. The prover computes the remaining elements vd+1 , vd+2 , . . . , vlog T
from scratch by raising gd+1 , gd+2 , . . . , glog T to the appropriate exponents. This step takes a total
of T /2d multiplications in G. Hence, the total time to compute the proof is about 2d + T /2d , which
suggests that d = 21 log2 T is optimal. Hence, the VDF output and the proof π can be computed in
total time approximately (1 + √2T )T .
is a negligible function of λ.
5
The following theorem proves soundness of Pietrzak’s succinct argument using the low order
assumption. The proof is given in Section 5.
Theorem 1. Suppose the low order assumption holds for GGen. Then Pietrzak’s succinct argument
has negligible soundness error.
Concretely, let A be an algorithm that succeeds with probability in the following task: A takes
a description of G ←R
GGen(λ) as input, outputs a tuple (G, g, h, T ) 6∈ LEXP where 1 ≤ T < 2t
is a power of two, and convinces the verifier to incorrectly accept this tuple. Then there is an
algorithm B, whose running time is about twice that of A, that breaks the low order assumption
for GGen with advantage at least 0 = (2 /t) − (/2λ ). Hence if 0 is negligible then so must be .
Necessity of the low order assumption. The low order assumption is necessary for soundness
of the protocol – if the assumption does not hold for GGen then the protocol becomes insecure.
To see why, let G ← R
GGen(λ) and let µ ∈ G be a known element of order d > 1 (i.e., low order is
broken). Let (G, g, h, T ) ∈ LEXP . Then the tuple (G, g, hµ, T ) 6∈ LEXP will be incorrectly accepted
T /2
by the verifier with probability 1/d. To do so the prover sends v ← g (2 ) µ ∈ G which causes
the tuple (G, g, hµ, T ) to be incorrectly accepted whenever the verifier chooses an r satisfying
r + 1 ≡ 2T /2 (mod d). This happens with probability 1/d, which is non-negligible when d is small.
Note that when r + 1 ≡ 2T /2 (mod d) we have that (G, g r v, v r (hµ), T /2) ∈ LEXP , which is why
the tuple (G, g, hµ, T ) is incorrectly accepted
Note that if the group G contains no low order elements other than the identity, then the low
order assumption holds unconditionally, as does soundness of Pietrzak’s succinct argument. We
discuss this further in Section 6.
Definition 2. We say that the adaptive root assumption holds for GGen if there is no efficient
adversary (A1 , A2 ) that succeeds in the following task. First, A1 outputs an element w ∈ G and
some state. Then, a random prime ` in Primes(λ) is chosen and A2 (`, state) outputs w1/` ∈ G.
More precisely, the advantage
G← R
GGen(λ),
` (w, state) ←
R
A1 (G),
ARadv(A1 ,A2 ),GGen (λ) := Pr u = w 6
= 1 :
` ← Primes(λ),
R
u ← A2 (`, state)
R
is a negligible function of λ.
The advantage is always at least 1/|Primes(λ)|. Indeed, if the adversary (A1 , A2 ) correctly
guesses ` ∈ Primes(λ) ahead of time, then A1 would output w ← u` , for some u ∈ G, and A2 would
output this u. This is why we must choose the set Primes(λ) to be sufficiently large. The reason
we cannot choose ` uniformly in some interval, but must choose it from Primes(λ), is because a
random ` in {1, . . . , 2λ } has a reasonable chance of being a smooth integer. The adversary can then
win by having A1 output w ← uB where B is a product of small prime powers up to some bound k,
6
and having A2 output uB/` . This works whenever ` is a k-smooth integer. Choosing ` as a prime
number eliminates this attack.
The following theorem proves soundness of Wesolowski’s succinct argument using the low order
assumption. The proof is given in Section 5.
Theorem 2 (Wesolowski [16]). Suppose the adaptive root assumption holds for GGen. Then
Wesolowski’s succinct argument has negligible soundness error.
Concretely, let A be an algorithm that succeeds with probability in the following task: A
takes G ← R
GGen(λ) as input, outputs a tuple (G, g, h, T ) 6∈ LEXP , and convinces the verifier to
incorrectly accept this tuple. Then there is an adversary (B1 , B2 ) whose combined running time
is about the same as the running time of A plus the time to compute T squarings in G. This
(B1 , B2 ) breaks the adaptive root assumption for GGen with the same advantage that A breaks
soundness.
Necessity of the adaptive root assumption. The adaptive root assumption is necessary for
soundness of the protocol – if the assumption does not hold for GGen then the protocol becomes
insecure. To see why, let (A1 , A2 ) be an adaptive root adversary and let G ←R
GGen(λ). To break
the protocol using (A1 , A2 ) choose an arbitrary g ∈ G, fix some T , and run (w, state) ← A1 (G),
T
where w 6= 1. Let h ← g (2 ) . Now, let’s see how to convince the verifier to incorrectly accept the
tuple (G, g, wh, T ) 6∈ LEXP . The verifier outputs a random ` ∈ Primes(λ) and we need to produce
a π such that wh = π ` g r where 2T = q` + r and 0 ≤ r < `. To do so, we run A2 (`, state) to a get
u ∈ G such that u` = w. Then π := ug q is a valid proof because
T)
π ` g r = (ug q )` g r = u` g q`+r = u` g (2 = wh,
as required.
Security of the non-interactive variants. While Theorems 1 and 2 analyze the interactive
variants of the protocols, security of the non-interactive variants follows by appealing to a general
theorem that shows that a public-coin computationally sound protocol remains computationally
sound, in the random oracle model, after it is made non-interactive using the Fiat-Shamir heuristic.
7
Comparison of the assumptions. If Wesolowski’s protocol is secure then so is Pietrzak’s, but
the converse is not known to be true. The reason is that if the adaptive root assumption holds
then so must the low order assumption. In other words, adaptive root is potentially a stronger
assumption than low order.
To show that the adaptive root assumption implies the low order assumption we show the
converse – if low order is broken then so is adaptive root. Let G ←
R
GGen(λ) and let 1 6= µ ∈ G
d
be a public element satisfying µ = 1 for a known d > 1 (i.e., low order is broken). To break the
adaptive root assumption, the adversary A1 outputs µ, and when given a random prime number
−1
` ∈ Primes(λ), adversary A2 computes µ1/` as µ(` mod d) . This works as long as d is not a multiple
of `, which only happens with negligible probability.
5 Security proofs
Proof of Theorem 2. We construct an adaptive root adversary (B1 , B2 ) that uses A. When
B1 is initialized with input G, it runs A(G) and gets back (G, g, h, T ) 6∈ LEXP . Algorithm B1 then
T T
outputs w ← h/g (2 ) ∈ G, state ← (G, g, h, T, w) and exits. Note that because h 6= g (2 ) we have
that w 6= 1, as required of an adaptive root adversary.
Next, a random ` ∈ Primes(λ) is chosen and B2 (`, state) is activated. Let 2T = q` + r with
0 ≤ r < `. Algorithm B2 sends the ` it was given to A, and A outputs π ∈ G. Now, B2 outputs
u ← π/g q ∈ G and exits. If A outputs a valid proof, namely π satisfies h = π ` g r , then
T)
u` = (π/g q )` = π ` g r /g q`+r = h/g (2 = w.
Hence, (B1 , B2 ) succeeds in breaking the adaptive root assumption with the same advantage as A
succeeds in breaking soundness, as required.
Proof of Theorem 1. We use a forking argument to construct an adversary B that breaks the
low order assumption using A.
Recall that 2t is an upper bound on the value T output by A. Let A(G, r0 , . . . , rt−1 ; R) denote
an execution of A with random tape R, where r0 , . . . , rt−1 are the verifier’s challenges at each level
of the recursion. The adversary A outputs the protocol transcript which is a sequence of t + 1
tuples:
(P0 , v0 ), . . . , (Pt , vt )
where Pi = (G, gi , hi , T /2i ) is the input to the recursion at level i, and vi is the prover’s message
ri−1 ri−1
at level i. Recall that gi ← gi−1 vi−1 and hi ← vi−1 hi−1 for i = 1, . . . , t. Here we assume T = 2t ,
t
but if T < 2 then we replicate the last pair (Plog2 T , vlog2 T ) to get a full transcript of t + 1 tuples.
Next, define the following probabilistic experiment EXP:
8
• let j be the lowest index for which Pj 6∈ LEXP but Pj+1 ∈ LEXP .
• choose fresh uniform rj0 , . . . , rt−1
0 in {1, . . . , 2λ }.
• run A(G, r0 , . . . , rj−1 , rj0 , . . . , rt−1
0 ; R) to get (P , v ), . . . , (P , v ), (P 0 , v 0
0 0 j j
0 0
j+1 j+1 ), . . . , (Pt , vt ).
0
• if Pj+1 ∈ LEXP and rj 6= rj0 , output (gj , hj , T /2j+1 , vj , rj , rj0 ) and stop.
Let E be the event that EXP does not output fail. When E happens we have Pj 6∈ LEXP and
0
Pj+1 , Pj+1 ∈ LEXP . Therefore, if EXP outputs g, h, T̂ , v, r, r0 we have that
2T̂ ) T̂ ) 0 T̂ ) 0
h 6= g (2 and (g r v)(2 = vr h and (g r v)(2 = v r h. (2)
6 Concrete groups
The RSA group. Let GGen be an algorithm that outputs an odd integer N with an unknown
factorization. Computing the order of the multiplicative group G := (Z/N )∗ is as hard as factor-
ing N , and therefore G can be used as a group of unknown order. However, the low order assumption
is trivially false in such groups because (−1) ∈ Z/N is an element of order two. Fortunately, this
is the only impediment and it is easily corrected by instead working in the group G+ := G/{±1}.
Elements in this group are represented as cosets {x, −x} for x ∈ G and multiplication is defined
as {x, −x} · {y, −y} = {xy, −xy}. Of course when computing in this group it suffices to represent
a coset {x, −x} by a single number, either x or −x, whichever is in the range [0, N/2). The low
order assumption is believed to hold for a group generator GGen that generates such groups.
We note that while Pietrzak [14] suggested using integers N that are a product of strong primes,
our use of the low order assumption suggests that soundness holds for more general N . Recall that a
prime number p is strong if (p−1)/2 is also a prime number. If N = p·q is a product of distinct strong
primes then the group G0 of quadratic residues in (Z/N )∗ (i.e. G0 := {z 2 : z ∈ (Z/N )∗ }) contains no
9
elements of low order other than 1. Hence, the low order assumption holds unconditionally in this
group. Pietrzak proved unconditional soundness of the protocol when used in this group G0 . By
relying on the low order assumption we are able to prove soundness even when N is not a product
of strong primes. We note that checking membership in G0 is difficult and this complicates the
protocol. Checking membership in G+ is easy so that the protocol in Figure 1 can be used as is.
The difficulty with the group (Z/N )∗ is that for best results the group generator GGen must be
trusted to not reveal the factorization of N . One can instead make GGen use public randomness
to choose a sufficiently large N so that factoring N is hard. However the resulting N must be so
large as to be impractical.
The class group of an imaginary quadratic number field. To solve the trusted setup
√
problem one can instead use the class group of the number field Q( p), where p is a negative prime
p ≡ 1 mod 4, as suggested by Wesolowski [16]. This class group has odd order and computing
its order is believed to be difficult when |p| is large. See [5] for a discussion on the choice of
cryptographic parameters for such groups. Concretely, the group generator GGen(λ) outputs a
√
negative prime p from which the class group of Q( p) is completely specified.
The Cohen-Lenstra heuristics [8] suggest that for imaginary quadratic number fields:
• the frequency of fundamental discriminants for which the odd part of the class group is cyclic
is about 97.6%,
• the frequency f (d) of fundamental discriminants for which the order of the class group is
divisible by d is approximately:
These heuristics suggest that the class group is often cyclic, but often contains elements of small
odd order. The question is how hard is it to find an element of small odd order, if one exists?
An approach to finding low order elements in class groups. The low order assumption in
the class group of an imaginary quadratic extension has not been studied much, and is a fascinating
avenue for future work. For example, can we find an element of order three if one exists?
We mention one possible avenue for attack based on the work of Ellenberg and Venkatesh [10].
√
Let I be an ideal of order 3 in the class group of Q( p). Then I 3 is principle meaning that
√
I 3 = ha + b pi for some a, b ∈ Z. Then the ideal norm N (I) satisfies N (I)3 = N (I 3 ) = a2 + |p|b2 .
Setting z = N (I) we see that the existence of an ideal of order three implies an integral point on
the surface
z 3 = a2 + |p|b2 (4)
where p
|z| ≤ |p|, |a| ≤ |p|3/4 , |b| ≤ |p|1/4 . (5)
The first inequality follows from the fact that we can take I to be a reduced ideal in the class group.
The second and third inequalities follow from the first.
If we could find an integral point (x, y, z) satisfying (5) on the surface (4), where z is not a perfect
√
square, then we will likely break the low order assumption in the class group of Q( p). We want a
10
p
point (x, y, z) where |z| ≤ |p| is not a perfect square to ensure that z is not the norm of a principal
ideal. Fortunately for this paper, the bounds (5) are out of reach for Coppersmith’s method for
finding low-norm integral points on curves and surfaces [9]. However, perhaps Coppersmith’s
method can be tuned specifically for this family of surfaces? We leave that for future work.
7 Open problems
Post-quantum security. We conclude by pointing out that the two VDFs surveyed here are
insecure against an adversary who has access to a quantum computer – a quantum computer can
easily calculate the order of the group G using Shor’s algorithm and break the VDF. It is a wonderful
open problem to find a simple VDF that is post-quantum secure. Some of the VDFs studied in [3]
are post-quantum secure, but it would be helpful to have a simpler construction. For example,
Buterin [6] describes and implements one of the constructions from [3] using a combination of
MiMC and a STARK.
Acknowledgments
We thank Krzysztof Pietrzak and Benjamin Wesolowski for their helpful comments about this
writeup.
Next, our algorithm to compute π uses the following subroutine exp, which is essentially the same
as the algorithm from Section 2.1. Here 0 ≤ d < ` is an additional input parameter.
t /`c
exp(h, t, d, `): // output a = hbd2 ∈G
a ← 1 ∈ G, r ← d ∈ {0, . . . , ` − 1}
repeat t times:
q ← b2r/`c ∈ {0, 1}, r ← (2r mod `) ∈ {0, . . . , ` − 1}
a← a2 · hq ∈G
t /`c
output a // this a is equal to hbd2 ∈G
T
Using subroutine exp we can compute π = g b2 /`c ∈ G in time O(T /s) as follows. The algorithm
starts by quickly computing all the remainders needed for the s steps of long division, and then
runs these s steps in parallel.
11
ib )
input: g, T, `, s as well as ui = g (2
∈ G for i = 0, . . . , s − 1 need s > 1, T > s(s − 2)
T /`c
output: π := g b2 ∈ G computed with s-way parallelism in time O(T /s)
// compute π in parallel
(T mod b) /`c
compute π0 ← (us−1 )b2
(1) π0 ← exp us−1 , (T mod b), 1, ` // ∈G
for i = 1, . . . , s − 1:
b /`c
compute πi ← (us−1−i )bri−1 ·2
(2) πi ← exp us−1−i , b, ri−1 , ` // ∈G
output π ← s−1
Q
i=0 πi
The bulk of the work happens on lines (1) and (2), where each call to the function exp requires b
sequential squarings. The point is that all the calls to exp can be processed in parallel. The
algorithm needs enough memory to store only s group elements.
References
[1] M. Bellare and G. Neven. Multi-signatures in the plain public-key model and a general forking
lemma. In Proceedings of the 13th ACM conference on Computer and communications security,
pages 390–399. ACM, 2006.
[2] J. Benet, D. Dalrymple, and N. Greco. Proof of replication. Protocol Labs, 2017. https:
//[Link]/[Link].
[3] D. Boneh, J. Bonneau, B. Bünz, and B. Fisch. Verifiable delay functions. Cryptology ePrint
Archive, Report 2018/601, 2018. [Link]
[4] D. Boneh and V. Shoup. A graduate course in applied cryptography. Cambridge, 2018.
[7] B. Cohen. Proofs of space and time. Blockchain Protocol Analysis and Security Engineering,
2017. [Link]
[8] H. Cohen and H. W. Lenstra. Heuristics on class groups of number fields. In Number Theory
Noordwijkerhout 1983, pages 33–62. Springer, 1984.
12
[9] D. Coppersmith. Small solutions to polynomial equations, and low exponent rsa vulnerabilities.
Journal of Cryptology, 10(4):233–260, 1997.
[10] J. S. Ellenberg and A. Venkatesh. Reflection principles and bounds for class group torsion.
International Mathematics Research Notices, 2007, 2007.
[11] B. Fisch. Poreps: Proofs of space on useful data. Cryptology ePrint Archive, Report 2018/678,
2018. [Link]
[12] A. K. Lenstra and B. Wesolowski. Trustworthy public randomness with sloth, unicorn, and
trx. International Journal of Applied Cryptography, 3(4):330–343, 2017.
[14] K. Pietrzak. Simple verifiable delay functions. Cryptology ePrint Archive, Report 2018/627,
2018. [Link]
[15] R. Rivest, A. Shamir, and D. Wagner. Time-lock puzzles and timed-release crypto. 1996.
[16] B. Wesolowski. Efficient verifiable delay functions. Cryptology ePrint Archive, Report
2018/623, 2018. [Link]
13