Weak RSA
Prerequrements
- kali linux
- Αρχικά βλέπουμε ένα download συνδεσμο και ενα password για το zip file που θα κατεβάσουμε. Αφού τα κάνουμε όλα αυτά βλέπουμε τα παρακάτω αρχεία.
Επεξήγηση
Προφανώς έχουμε να κάνουμε με ενα public key και με ενα μηνυμα το οποιο αν αποκρυπτογραφίσουμε θα μας δώσει το flag
Πώς λειτουργεί η κρυπτογράφηση RSA;
Η κρυπτογράφηση RSA χρησιμοποιεί πρώτους αριθμούς που είναι πολύ μεγαλοι σε μέγεθος. Η κρυπτογράφηση RSA λειτουργεί υπό την προϋπόθεση ότι ο αλγόριθμος είναι εύκολο να υπολογιστεί σε μία κατεύθυνση, αλλά σχεδόν αδύνατο αντίστροφα. Για παράδειγμα, εάν σας είπαν ότι το 701.111 είναι προϊόν δύο πρώτων αριθμών, θα μπορούσατε να καταλάβετε ποιοι είναι αυτοί οι δύο αριθμοί; Ακόμα και με μια αριθμομηχανή ή έναν υπολογιστή, οι περισσότεροι από εμάς δεν θα έχουμε ιδέα για το πού να ξεκινήσουμε, πόσο μάλλον να μπορούμε να καταλάβουμε την απάντηση. Αλλά αν γυρίσουμε τα πράγματα, γίνεται πολύ πιο εύκολο.
Key generation
Τα keys από RSA algorithm παράγονται με τον εξής τρόπο:
- Επιλέγονται 2 πρώτοι αριθμοί p και q.
- Για λόγους ασφαλείας, οι ακέραιοι αριθμοί p και q θα πρέπει να επιλέγονται τυχαία και θα πρέπει να είναι παρόμοιοι σε μέγεθος αλλά διαφέρουν σε μήκος κατά μερικά ψηφία για να κάνουν το factoring πιο δύσκολο.
- Υπολογισμός n = pq.
- το n χρησιμοποιήτε απο το modulus και για τα το public και για το private key.
Αποκρυπτογράφηση.
Για την αποκρυπτογράφυση θα χρησιμοποιήσουμε το RsaCtfTool. Για να το πετύχουμε αυτό αρχικά κάνουμε clone το εργαλείο.
1
git clone https://github.com/Ganapati/RsaCtfTool
Έχοντας στο ιδιο directory το flag το public key και το εργαλείο με το οποίο θα κάνουμε attack οπως παρακάτω:
τρέχουμε
1
./RsaCtfTool/RsaCtfTool.py --publickey key.pub --uncipherfile flag.enc
Το οποίο μας δίνει το flag!!