It's quite usual to read :
"the time needed to factor n by NFS algorithm is exp(...formula with ln(n)...)"
But I can't find to which unit of time this formula refers ? Is it really time ? Or number of operations ?
Thanks
It's quite usual to read :
"the time needed to factor n by NFS algorithm is exp(...formula with ln(n)...)"
But I can't find to which unit of time this formula refers ? Is it really time ? Or number of operations ?
Thanks
Normally running times of algorithms are given in amount of operations.
But most of the time if theorists talk about complexity of an algorithm they talk about the O
-Notation (see https://en.wikipedia.org/wiki/Big_O_notation).
In the O
-Notation constants are ignored so a running time of O(1000n)
is the same as O(n)
and it is only concerning the runtime of the algorithm if the input size n
is getting arbitrary large.
For a more detailed definition of operations complexity theorists use the turing model (https://en.wikipedia.org/wiki/Turing_machine).
In the case of NFS as "number field sieves" (methods to factor some huge integers into prime factors) the n
is usually the number to be factored. For example:
Heuristically, its complexity for factoring an integer n (consisting of ⌊log2 n⌋ + 1 bits) is of the form
- exp( (sqrt3(64/9)+ o(1)) * (ln(n))^(1/3) * (ln(ln(n)))^(2/3)
... Note that log_2(n) is the number of bits in the binary representation of n, that is the size of the input to the algorithm
Heuristically, its complexity for factoring an integer n is of the form:
- exp( (1 + o(1)) * ( 32/9 * ln(n))^(1/3) * (ln(ln(n)))^(2/3)
Using this complexity user may try to use time of factoring some huge N with GNFS/SNFS, to estimate how long it will take to factor much bigger M with uses 2 times more bits than N, or even bigger L of 4 times more bits.
For example, there is RSA Factoring Challenge which was able to factor RSA-768 - number so huge that it was needed to use 768 bits (binary digits) to write it (232 decimal digits). It was factored by many computers in 2 years, and total time of computations is 2000 years of work of single 2.2GHz "Vendor 2" PC. There are now RSA numbers used now of 1024 bits (and 2048 bits too), and you may use 768 and 1024 as value of ln(n)
in formulas (binary logarithm is number or binary digits needed to write the number plus o(1) -small o of 1). Did not calculate, but people who did factor 768 says that 1024 bits are much more secure:
https://eprint.iacr.org/2010/006.pdf Factorization of a 768-bit RSA modulus. version 1.4, February 18, 2010
On December 12, 2009, we factored the 768-bit, 232-digit number RSA-768 by the number field sieve (NFS, [20]) ... Factoring a 1024-bit RSA modulus would be about a thousand times harder, and a 768-bit RSA modulus is several thousands times harder to factor than a 512-bit one.