hacktricks/cryptography/cipher-block-chaining-cbc-mac-priv.md
Translator workflow 35c6b081d2 Translated to Greek
2024-02-10 22:40:18 +00:00

5.3 KiB
Raw Blame History

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

CBC

Εάν το cookie είναι μόνο το όνομα χρήστη (ή το πρώτο μέρος του cookie είναι το όνομα χρήστη) και θέλετε να προσομοιώσετε το όνομα χρήστη "admin". Τότε, μπορείτε να δημιουργήσετε το όνομα χρήστη "bdmin" και να δοκιμάσετε όλα τα πιθανά πρώτα bytes του cookie.

CBC-MAC

Το Cipher block chaining message authentication code (CBC-MAC) είναι μια μέθοδος που χρησιμοποιείται στην κρυπτογραφία. Λειτουργεί παίρνοντας ένα μήνυμα και κρυπτογραφώντας το μπλοκ προς μπλοκ, όπου η κρυπτογράφηση κάθε μπλοκ συνδέεται με το προηγούμενο. Αυτή η διαδικασία δημιουργεί μια αλυσίδα μπλοκ, εξασφαλίζοντας ότι η αλλαγή ακόμα και ενός μόνο bit του αρχικού μηνύματος θα οδηγήσει σε μια μη προβλέψιμη αλλαγή στο τελευταίο μπλοκ κρυπτογραφημένων δεδομένων. Για να γίνει ή να αναιρεθεί μια τέτοια αλλαγή, απαιτείται το κλειδί κρυπτογράφησης, εξασφαλίζοντας την ασφάλεια.

Για να υπολογίσετε το CBC-MAC του μηνύματος m, κρυπτογραφείτε το m σε λειτουργία CBC με μηδενικό διάνυσμα αρχικοποίησης και κρατάτε το τελευταίο μπλοκ. Ο παρακάτω σχεδιασμός απεικονίζει τον υπολογισμό του CBC-MAC ενός μηνύματος που αποτελείται από μπλοκhttps://wikimedia.org/api/rest_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5 χρησιμοποιώντας ένα μυστικό κλειδί k και έναν κρυπτογράφο μπλοκ E:

https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC_structure_en.svg/570px-CBC-MAC_structure_en.svg.png

Ευπάθεια

Με το CBC-MAC συνήθως το IV που χρησιμοποιείται είναι 0.
Αυτό είναι ένα πρόβλημα επειδή 2 γνωστά μηνύματα (m1 και m2) ανεξάρτητα θα δημιουργήσουν 2 υπογραφές (s1 και s2). Έτσι:

  • E(m1 XOR 0) = s1
  • E(m2 XOR 0) = s2

Έπειτα ένα μήνυμα που αποτελείται από τη σύζευξη των m1 και m2 (m3) θα δημιουργήσει 2 υπογραφές (s31 και s32):

  • E(m1 XOR 0) = s31 = s1
  • E(m2 XOR s1) = s32

Το οποίο είναι δυνατό να υπολογιστεί χωρίς να γνωρίζετε το κλειδί της κρυπτογράφησης.

Φανταστείτε ότι κρυπτογραφείτε το όνομα Administrator σε μπλοκ των 8bytes:

  • Administ
  • rator\00\00\00

Μπορείτε να δημιουργήσετε ένα όνομα χρήστη με το όνομα Administ (m1) και να ανακτήσετε την υπογραφή (s1).
Έπειτα, μπορείτε να δημιουργήσετε ένα όνομα χρήστη με το αποτέλεσμα του rator\00\00\00 XOR s1. Αυτό θα δημιουργήσει E(m2 XOR s1 XOR 0)