By Diebartdie Team
El reto consiste en un ataque a RSA llamado Wiener's attack:
https://en.wikipedia.org/wiki/Wiener%27s_attack
RSA es vulnerable cuando se usa una llave privada pequeña (variable "d"). Veamos como funciona el ataque:
- Se procede a calcular la llave privada "d", gracias a la biblioteca para python3 "owiener" disponible en:
Para ello se instala: python3 -m pip install owiener
- Se abre un intérprete de python3 y se escriben las siguientes lineas:
import owiener; import binascii; e= 387825392787200906676631198961098070912332865442137539919413714790310139653713077586557654409565459752133439009280843965856789151962860193830258244424149230046832475959852771134503754778007132465468717789936602755336332984790622132641288576440161244396963980583318569320681953570111708877198371377792396775817; n= 609983533322177402468580314139090006939877955334245068261469677806169434040069069770928535701086364941983428090933795745853896746458472620457491993499511798536747668197186857850887990812746855062415626715645223089415186093589721763366994454776521466115355580659841153428179997121984448771910872629371808169183; c= 485157539635149150477587041963675983373565103783986122373916449341788352816712807223333753361863751538867357439345666958739670139765250962780786312866207478836239088057133600920406907106602761663989082459786675009427593980335821211797864157081898268708473412392817988433236240268627504608328648604817617355001;
- Se calcula la llave privada "d" con el método que provee la biblioteca:
d = owiener.attack(e, n);
- Una vez obtenida la llave privada "d", se descifra el mensaje "c":
message = pow(c, d, n); decrypt = str(format(message, 'x')); print(binascii.unhexlify(decrypt)); b'flag{Wiener_Attack_R0cks_kids!}'
Comments
Post a Comment