nfm schreef:
Een 256-bit key "kraken" duurt niet twee keer zo lang als het kraken van een 128-bit key, maar 2^128 keer zo lang. Een 129-bit key is twee keer zo sterk als 128-bit.
Dat dit voor alle ciphers opgaat is een misverstand dat ik wel vaker zie. Lang verhaal kort: dat geldt
zeer zeker niet voor RSA keys; het toevoegen van één bit aan een RSA key voegt slechts enkele procenten toe aan de cryptografische sterkte van de key.
Als 1024-bit keys (i.c.m. een goed algoritme natuurlijk) nu al praktisch niet te kraken zijn dan 2048 helemaal niet, en 4096 he-le-maal niet.
Zoals je in
dit tweakers artikel kunt lezen is het kraken van 1024-bit RSA keys redelijk dichtbij (laten we zeggen, nog een jaartje of 10-15); het wordt dan ook sterk afgeraden nog 1024-bit RSA te gebruiken.
RSA-2048 is waarschijnlijk nog wel een acceptabele tijd veilig, maar ik zeg: als je de kans hebt RSA-4096 te gebruiken, waarom dan niet? Beter te veilig dan niet veilig genoeg.
Bij datzelfde tweakers artikel heb ik een
uitgebreide post gedaan over de cryptografische sterkte van RSA. Omdat ik geen zin heb dat verhaal opnieuw te houden herhaal ik mijn hele post hieronder:
----Overigens gebruikt vrijwel iedereen RSA-1024. Uitgaande van een beetje gelijkmatige spreiding van priemgetallen, kun je stellen dat:
als RSA-768 in 2,5 jaar te kraken is dan, uitgaande van dezelfde hardware, ...
duurt RSA-769 ongeveer 5 jaar
duurt RSA-770 ongeveer 10 jaar
duurt RSA-771 ongeveer 20 jaar
...
duurt RSA-1024 ongeveer... eh 2,5 * 2^256... jaar.
Nee, zo werkt dat niet; één bit toevoegen aan de key betekent niet dat het aantal berekeningen om de key te kraken verdubbelt, dat is alleen (ongeveer) zo voor bepaalde symmetrische ciphers.
Van
Wikipedia:
In cryptography, key size or key length is the size (usually measured in bits or bytes) of the key used in a cryptographic algorithm (such as a cipher). An algorithm's key length is distinct from its cryptographic security, which is a logarithmic measure of the fastest known computational attack on the algorithm, also measured in bits. The security of an algorithm cannot exceed its key length (since any algorithm can be cracked by brute force), but it can be smaller. For example, Triple DES has a key size of 168 bits but provides at most 112 bits of security, since an attack of complexity 2112 is known.
Door één bit aan een RSA key toe te voegen gaat de key length met één omhoog, maar de cryptographic security gaat met een stuk minder omhoog, zoals ik wat verderop zal laten zien.
Het Wikipedia artikel gaat als volgt verder:
This property of Triple DES is not a weakness provided 112 bits of security is sufficient for an application. Most symmetric-key algorithms in common use are designed to have security equal to their key length. No asymmetric-key algorithms with this property are known; elliptic curve cryptography comes the closest with an effective security of roughly half its key length.
Wat al suggereert dat één bit extra key length minder dan één bit cryptographic security genereert (RSA is een asymmetric-key cipher).
De cryptographic security van RSA is ongeveer sqrt(ln(2
k)*ln(ln(2
k)))/ln(2) bits, voor RSA sleutels van k bits. (bron:
Fundamentals of Cryptology - het boek gebruikt overigens niet alle truukjes om de rekentijd te verkorten, dus dit geeft nog een optimistische schatting van de cryptographic security;
deze RSA pagina geeft een paar waarden van ongeveer 25% bits minder. Maar dat is geen ramp voor deze uitleg)
Uitgaand van bovenstaande formule heeft een 768-bit RSA key een cryptographic security van 83.40 bits, en 769-bit RSA 83.46 bits. Dat betekent dus dat het toevoegen van één bit aan een 768-bit RSA key slechts 2
0.06 - 1 = 0.04 = 4% extra benodigde rekentijd toevoegt. Om de benodigde rekentijd te verdubbelen moet je van een 768-bit key naar een 784-bit key gaan.
1024-bit keys hebben een cryptographic security van 98.48, wat een vooruitgang is van 98.48 - 83.40 = 15.08 bits. Het kost dus ongeveer 2
15 = 32768 keer zoveel rekenkracht om een 1024-bit key te kraken t.o.v. een 768-bit key.
Hier begin je trouwens wel te merken dat mijn formule voor de cryptographic security niet 100% nauwkeurig is; In het artikel staat dat ze verwachten RSA-1024 binnen 10 jaar te kraken. In 10 jaar tijd is de rekenkracht ongeveer een factor 1024 toegenomen (uitgaande van een verdubbeling per jaar), geen factor 32768. Maar om duidelijk te maken dat de relatie tussen key length en cryptographic security voor RSA niet lineair is, is het goed zat
edit:
Ah, tweaker ProfPi heeft
verderop in deze discussie een link gepost naar de paper die beschrijft wat ze gedaan hebben om de RSA-768 modulus te factoriseren.
Uit de
paper:
The number RSA-768 was taken from the now obsolete RSA Challenge list [37] as a representative 768-bit RSA modulus (cf. [36]). This result is a record for factoring general integers. Factoring a 1024-bit RSA modulus would be about a thousand times harder [...]
Dat maakt mijn schatting van "een factor 1024 meer" aardig in de buurt, en bevestigt nog meer dat mijn formule voor de cryptographic security van RSA niet 100% toereikend is.
[Reactie gewijzigd door deadinspace op 24 juli 2024 19:11]