Les fichiers fournis :
On est dans un contexte de chiffrement RSA, par conséquent le fichier output.txt
contient :
c
: le flag chiffrén
: le module de chiffremente
: le classique exposant de chiffrement
Sans autre information, pour pouvoir effectuer le déchiffrement de c
(et donc retrouver le flag en clair), il semble nécessaire de retrouver les 2 facteurs premiers p
et q
constituant n
Le type de génération de n
indiqué dans l'énoncé nous incite à l'examiner sous tous ses angles, et notamment regarder sa représentation en binaire :
10000000000000000100000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000010000000000000000100010000100000000100100000000000001000000000000010000000000000000000010000000000010100000000000000100000000000000000001000000000000000110000000000010000000100000000000001000100000000001000000000100000000000001000000000000000000000000100000000000000000000000000000000000010100000010000000000000000000000000000010000000000000000001010000000000000000100000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000010000000000000100100000000001000000000000000000001000000100000010000000000000010000000000000000000000000000000000001000000000001000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000001
On constate alors qu'il est essentiellement composé de 0
(i.e. de "trous")
Par conséquent, on va transformer le problème de factorisation de n
en un problème de factorisation de polynôme, la factorisation polynomiale étant en général un problème plus simple.
Pour cela on va commencer par déterminer le polynôme 1
de la représentation binaire de n
correspondent aux différents coefficients non nuls de ce polynôme.
Le polynôme obtenu possède ainsi très peu de coefficients (49) malgré son degré élevé (1024) :
Celui-ci se factorise en 2 polynômes
Les 2 facteurs de n
sont donc p
et q
tels que
Maintenant que p
et q
sont connus, on peut retrouver d
(l'exposant de déchiffrement), puis déchiffrer c
pour obtenir le flag :
Cette logique est implémentée dans le sage adveRSArial-crypto-baby-solve.sage lancé avec Sage.