Uit het DPC stukje op t.net:<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Dat gebeurt middels de brute-force methode waarbij bruutweg alle 2^64 sleutels worden uitgeprobeerd[/quote]Beetje onduidelijk. Van wat ik weet van cryptografie (heb zelf een 512-bits versleutelaar ontworpen) probeer je meestal een sleutel te ontbinden in factoren. Is dit ook wat DPC probeert te doen of zit ik er nu helemaal naast?
Bij het ontbinden van een 64-bits getal in factoren weet je dat de kleinste factor ten hoogste wortel(x) is, met x de 64-bits sleutel. Immers, als x=y*z en y*z zijn beide groter dan wortel(x), dan is y*z>x. Je zoekt dus de kleinste factor vanaf wortel(x) omlaag.
Maar dat moet je natuurlijk niet gaan doen door elk getal kleiner dan wortel(x) te gaan delen op x en kijken of de rest 0 is. Dat kost enorm veel rekenkracht. Is dit wat DPC doet want dan kan ik het op de volgende manier veel sneller:
Voorbeeld:
1.000.000 = 1000*1000 ( 1000 = wortel(1.000.000)
1.000.000 = 999*1000+1000 = 999*1000+999+1 = 999*1001+1. Rest 1 dus 999 geen deler van 1.000.000
1.000.000 = 998*1001+1+1001 = 998*1001+998+4 = 998*1002+4. Rest 4 dus 998 geen deler van 1.000.000
1.000.000 = 997*1002+4+1002 = 997*1002+997+9 = 997*1003+9. Rest 9 dus 997 geen deler van 1.000.000
Enz...
Mijn punt is dat je kunt volstaan met hele simpele en snelle operaties ipv een hele deling uit te voeren.
(Het voorbeeld was kunstmatig omdat ik begon bij twee factoren die ik al wist, 1000*1000, maar het uitrekenen van een echte quotient en rest van floor(wortel(x)) hoeft maar eenmalig dus is niet erg als het een paar seconde kost)
Verder heb ik uit mijn werk aan cryptografie geleerd dat er vast nog veel slimmere rekenmethodes zijn als je wat literatuuronderzoek doet, want deze heb ik zelf maar uit mijn duim gezogen. Het kan dus nog veel sneller.
En dat is ook logisch want ze zijn er al in geslaagd een 512 bits sleutel te kraken. Ga even na dat een sleutel van 2 extra bits 2 keer zo lang kost om te factoriseren en je kunt wel nagaan dat daarvoor veel slimmere methoden dan brute force alles proberen te delen gebruikt is.
Bij het ontbinden van een 64-bits getal in factoren weet je dat de kleinste factor ten hoogste wortel(x) is, met x de 64-bits sleutel. Immers, als x=y*z en y*z zijn beide groter dan wortel(x), dan is y*z>x. Je zoekt dus de kleinste factor vanaf wortel(x) omlaag.
Maar dat moet je natuurlijk niet gaan doen door elk getal kleiner dan wortel(x) te gaan delen op x en kijken of de rest 0 is. Dat kost enorm veel rekenkracht. Is dit wat DPC doet want dan kan ik het op de volgende manier veel sneller:
Voorbeeld:
1.000.000 = 1000*1000 ( 1000 = wortel(1.000.000)
1.000.000 = 999*1000+1000 = 999*1000+999+1 = 999*1001+1. Rest 1 dus 999 geen deler van 1.000.000
1.000.000 = 998*1001+1+1001 = 998*1001+998+4 = 998*1002+4. Rest 4 dus 998 geen deler van 1.000.000
1.000.000 = 997*1002+4+1002 = 997*1002+997+9 = 997*1003+9. Rest 9 dus 997 geen deler van 1.000.000
Enz...
Mijn punt is dat je kunt volstaan met hele simpele en snelle operaties ipv een hele deling uit te voeren.
(Het voorbeeld was kunstmatig omdat ik begon bij twee factoren die ik al wist, 1000*1000, maar het uitrekenen van een echte quotient en rest van floor(wortel(x)) hoeft maar eenmalig dus is niet erg als het een paar seconde kost)
Verder heb ik uit mijn werk aan cryptografie geleerd dat er vast nog veel slimmere rekenmethodes zijn als je wat literatuuronderzoek doet, want deze heb ik zelf maar uit mijn duim gezogen. Het kan dus nog veel sneller.
En dat is ook logisch want ze zijn er al in geslaagd een 512 bits sleutel te kraken. Ga even na dat een sleutel van 2 extra bits 2 keer zo lang kost om te factoriseren en je kunt wel nagaan dat daarvoor veel slimmere methoden dan brute force alles proberen te delen gebruikt is.