
Cryptographic implications of our construction
Implications for finite field discrete logarithms
Given a generator g of an order r subgroup to \(Z∗ N\), where the modulus \(N\) is prime, and an element \(x = g^d\), the finite field discrete logarithm problem is to compute \(d = log_g \; x\). In what follows, we assume r to be prime. If r is composite, the discrete logarithm problem may be decomposed into problems in subgroups of orders dividing \(r\), as shown by Pohlig and Hellman. For this reason, prime order subgroups are used in cryptographic applications.
As \(Z∗ N\) has order \(N −1\), it must be that \(r\) divides \(N−1\), so \(N = 2rk + 1\) for some integer \(k ≥ 1\). The asymptotically best currently known classical algorithms for computing discrete logarithms in subgroups of this form are generic cycle-finding algorithms, such as Pollard's ρ- and λ-algorithms, that run in time \(O(√r)\) and \(O(√d)\), respectively, and the general number field sieve (GNFS), that runs in subexponential time in the bit length \(N\) of \(N\) .
The idea of factoring via algebraic number fields was originally introduced by Pollard for integers on special forms. It was over time generalized, by amongst others Buhler et al., Lenstra et al. and Pollard, to factor general integers, and modified by amongst others Gordon and Schirokauer to compute discrete logarithms in finite fields. Much research effort has since been devoted to optimizing the GNFS in various respects. For an in-depth historical account of the development of the GNFS. For the best academic record.
Let z be the number of bits of security provided by the modulus with respect to classical attacks
using the GNFS. Let \(n_d\) and \(n_r\) be the lengths in bits of \(d\) and \(r\), respectively. It then suffices to
pick \(n_d, n_r ≥ 2z\) to achieve \(z\) bits of classical security, as the generic cycle-finding algorithms are
then not more efficient than the GNFS.
When instantiating schemes based on the intractability of the finite field discrete logarithm
problem, one may hence choose between using a Schnorr group, for which \(n_d = nr = 2z\), or a
safe-prime group, for which \(n_r = N − 1\). In the latter case, one may in turn choose between using
a short exponent, such that \(n_d = 2z\), or a full length exponent, such that \(n_d = n_r = N − 1\). All
three parameterization options provide \(z\) bits of classical security.
What finite field groups are used in practice?
In practice, Schnorr groups or safe-prime groups with short exponents are often preferred over safe- prime groups with full length exponents, as the comparatively short exponents yield considerable performance improvements.
The discrete logarithm problem in Schnorr groups is of standard form, unlike the short discrete logarithm problem in safe-prime groups, and Schnorr groups are faster to generate than safe-prime groups. A downside to using Schnorr groups is that group elements received from untrusted parties must be tested for membership of the order \(r\) subgroup. This typically involves exponentiating the element to the power of \(r\), which is computationally expensive. Safe-prime groups are more flexible than Schnorr groups, in that the exponent length may be adaptively selected depending on the performance requirements. In more recent years, the use of safe-prime groups would appear to have become increasingly prevalent. Some cryptographic schemes, such as the Diffie-Hellman key agreement protocol, are agnostic to the choice of group, whereas other schemes, such as DSA, use Schnorr groups for efficiency reasons.
The National Institute of Standards and Technology (NIST) in the United States standardizes
the use of cryptography in unclassified applications within the federal government. Up until April
of 2018, NIST recommended the use of randomly selected Schnorr groups with moduli of length
2048 bits for Diffie-Hellman key agreement. NIST changed this recommendation in the 3rd revision
of SP800-56A, and are now advocating using a fixed set of safe-prime groups with moduli of
length up to 8192 bits, with short or full length exponents. These groups were originally developed
for TLS and IKE where, again, they are used either with short of full length exponents.
Complexity estimates
To estimates the resource and time requirements for computing discrete logarithms in finite fields for various modulus lengths \(N\), and for the aforementioned parameterization options, we need to decide on what model to use for estimating \(z\) as a function of \(N\). Various models have been proposed over the years. For simplicity, we use the same model that NIST uses in SP 800-56A. Note that NIST rounds z to the closest multiple of eight bits.
To compute short logarithms in safe-prime groups, the best option is to use Ekerå -Håstad's algorithm that is specialized for this purpose. To compute general discrete logarithms in safe-prime or Schnorr groups, one option is to use Ekerå 's algorithm. A single correct run of these quantum algorithms suffices for the logarithm to be recovered with ≥ 99% success probability in the classical post-processing. These algorithms do not require the order of the group to be known. See Table 4 and Figure 1 for complexity estimates.
If the group order is known, a better option for computing general discrete logarithms in safe- prime groups and Schnorr groups when not making tradeoffs is to use Shor's original algorithm, modified to work in the order \(r\) subgroup rather than in the whole multiplicative group \(Z^∗_N\), and to start with a uniform superposition of all exponent values, as opposed to superpositions of \(r\) values. Note that the latter modification is necessary to enable the use of the semi-classical Fourier transform, qubit recycling and the windowing technique.
When using this modified version of Shor's algorithm to compute discrete logarithms, the
heuristic analysis shows that a single correct run suffices to compute the logarithm with ≥ 99%
success probability, assuming that each of the two exponent registers is padded with 5 bits, and
that a small search is performed in the classical post-processing. This implies that Shor's algo-
rithm outperforms Ekerå 's algorithm, as Shor's algorithm performs only approximately \(2n_r\) group
operations per run, compared to \(3n_r\) operations in Ekerå 's algorithm, see Table 5 for complexity estimates. This is because Ekerå 's algorithm does not require r to be known. In fact, it computes
both \(d\) and \(r\).
Parameters | Volume (megaqubitdays) | Qubits (megaqubitdays) | Runtime (hours) | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
n | ne | nd | nr | z | d1 | d2 | δoff | cmul | cexp | csep | Retry Risk | per run | expected | per run | per run | ||
Schnorr | 1024 | 3nr = 6z | 2z | 2z | 80 | 15 | 25 | 4 | 5 | 5 | 1024 | 10% | 0.2 | 0.2 | 9.2 | 0.4 | |
2048 | 112 | 15 | 27 | 3 | 5 | 5 | 1024 | 9% | 0.9 | 1 | 20 | 1.2 | |||||
3072 | 128 | 15 | 27 | 9 | 5 | 5 | 1024 | 18% | 2.4 | 2.9 | 29 | 2 | |||||
4096 | 152 | 17 | 29 | 7 | 4 | 5 | 1024 | 4% | 6.5 | 6.8 | 51 | 3.1 | |||||
8192 | 200 | 17 | 31 | 3 | 4 | 5 | 1024 | 5% | 38 | 40 | 110 | 8.3 | |||||
12288 | 240 | 17 | 31 | 9 | 4 | 5 | 1024 | 9% | 110 | 120 | 170 | 15 | |||||
16384 | 272 | 17 | 31 | 5 | 4 | 5 | 1024 | 17% | 210 | 250 | 220 | 23 | |||||
Safe-prime | Short | 1024 | 3nd = 6z | 2z | n-1 | 80 | 15 | 25 | 4 | 5 | 5 | 1024 | 10% | 0.2 | 0.2 | 9.2 | 0.4 |
2048 | 112 | 15 | 27 | 3 | 5 | 5 | 1024 | 9% | 0.9 | 1 | 20 | 1.2 | |||||
3072 | 128 | 15 | 27 | 9 | 5 | 5 | 1024 | 18% | 2.4 | 2.9 | 29 | 2 | |||||
4096 | 152 | 17 | 29 | 7 | 4 | 5 | 1024 | 4% | 6.5 | 6.8 | 51 | 3.1 | |||||
8192 | 200 | 17 | 31 | 3 | 4 | 5 | 1024 | 5% | 38 | 40 | 110 | 8.3 | |||||
12288 | 240 | 17 | 31 | 9 | 4 | 5 | 1024 | 9% | 110 | 120 | 170 | 15 | |||||
16384 | 272 | 17 | 31 | 5 | 4 | 5 | 1024 | 17% | 210 | 250 | 220 | 23 | |||||
Full length | 1024 | 3nr = 3(n-1) | n-1 | n-1 | 80 | 15 | 27 | 9 | 5 | 5 | 1024 | 10% | 1.1 | 1.2 | 9.7 | 2.7 | |
2048 | 112 | 17 | 29 | 6 | 4 | 5 | 1024 | 6% | 12 | 12 | 26 | 11 | |||||
3072 | 128 | 17 | 31 | 5 | 4 | 5 | 1024 | 5% | 41 | 43 | 41 | 24 | |||||
4096 | 152 | 19 | 31 | 7 | 4 | 5 | 1024 | 9% | 97 | 110 | 55 | 43 | |||||
8192 | 200 | 19 | 33 | 4 | 4 | 5 | 1024 | 8% | 960 | 1100 | 140 | 180 | |||||
12288 | 240 | 19 | 33 | 3 | 4 | 5 | 1024 | 21% | 3300 | 4100 | 200 | 390 | |||||
16384 | 272 | 21 | 35 | 4 | 4 | 5 | 1024 | 16% | 9100 | 11000 | 320 | 700 |
Table 4: Computing discrete logarithms using Ekerå -Håstad's and Ekerå 's algorithms. This table was produced by the script in the ancillary file "estimate costs.py".
Parameters | Volume (megaqubitdays) | Qubits (megaqubitdays) | Runtime (hours) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
n | ne | nd | nr | z | d1 | d2 | δoff | cmul | cexp | csep | Retry Risk | per run | expected | per run | per run | |
Schnorr | 1024 | 2(nr+5) | 2z | 2z | 80 | 15 | 25 | 6 | 5 | 5 | 1024 | 8% | 0.1 | 0.1 | 9.2 | 0.3 |
2048 | 112 | 15 | 27 | 8 | 5 | 5 | 1024 | 6% | 0.6 | 0.7 | 20 | 0.8 | ||||
3072 | 128 | 15 | 27 | 6 | 5 | 5 | 1024 | 13% | 1.6 | 1.8 | 29 | 1.3 | ||||
4096 | 152 | 17 | 27 | 3 | 5 | 5 | 1024 | 25% | 3.3 | 4.4 | 39 | 2.1 | ||||
8192 | 200 | 17 | 29 | 5 | 4 | 5 | 1024 | 11% | 23 | 26 | 110 | 5.5 | ||||
12288 | 240 | 17 | 31 | 4 | 4 | 5 | 1024 | 8% | 68 | 74 | 170 | 10 | ||||
16384 | 272 | 17 | 31 | 5 | 4 | 5 | 1024 | 12% | 140 | 160 | 220 | 16 | ||||
Safe-prime | 1024 | 2(nr+5) | n-1 | n-1 | 80 | 15 | 27 | 3 | 5 | 5 | 1024 | 8% | 0.7 | 0.8 | 9.7 | 1.8 |
2048 | 112 | 17 | 29 | 3 | 4 | 5 | 1024 | 5% | 7.4 | 7.8 | 26 | 7 | ||||
3072 | 128 | 17 | 29 | 4 | 4 | 5 | 1024 | 12% | 25 | 29 | 38 | 16 | ||||
4096 | 152 | 17 | 31 | 4 | 4 | 5 | 1024 | 8% | 65 | 70 | 55 | 29 | ||||
8192 | 200 | 19 | 33 | 3 | 4 | 5 | 1024 | 6% | 640 | 680 | 140 | 120 | ||||
12288 | 240 | 19 | 33 | 4 | 4 | 5 | 1024 | 15% | 2200 | 2600 | 200 | 260 | ||||
16384 | 272 | 21 | 35 | 2 | 4 | 5 | 1024 | 12% | 6100 | 6900 | 320 | 470 |
Table 5: Computing discrete logarithms using Shor's algorithm modified. This
table was produced by the script in the ancillary file "estimate costs.py".
Note that for safe-prime groups, \(r = (N − 1)/2\), so when \(N\) is known to the adversary then so
is \(r\). For Schnorr groups, it may be that \(r\) is unknown to the adversary, especially if the group is
randomly selected. It may be hard to compute \(r\) classically, as it amounts to finding a \(n_r = 2z\) bit
prime factor of \((N − 1)/2\).