- Επεισόδιο 1: FMS Attack
- Επεισόδιο 2: KoreK Attack
- Επεισόδιο 3: PTW Attack
- Επεισόδιο 4: Chopchop Attack
Ας υποθέσουμε ότι ο επιτιθέμενος γνωρίζει τα πρώτα \(l\) bytes ενός κλειδιού RC4 που χρησιμοποιήθηκε για να παραχθεί ένα keystream X. Μπορεί λοιπόν να εξομοιώσει τα πρώτα \(l\) βήματα του RCA-KSA και να γνωρίζει το \(S_{l}\) και \(j_{l}\). Στο επόμενο βήμα του RC4-KSA, έχουμε:
Ας υποθέσουμε πως οι παρακάτω συνθήκες, ισχύουν μετά τα πρώτα \(l\) βήματα του RC4-KSA:
- \(S_{l}[1]< l\)
- \(S_{l}[1]+S_{l}\left [ S_{l}[1] \right ]=l\)
- \(S_{l}^{-1}[X[0]]\neq 1\)
- \(S_{l}^{-1}[X[0]]\neq S_{l}[1]\)
Μετά την αλλαγή θέσεων, συνεχίζει να ισχύει ότι \(S[1]+S[S[1]]=l\) και το \(X[0]\), δηλαδή το πρώτο byte του output του RC4-PRGA, θα ισούται με το \(S[l]\). Αν οι συνθήκες 3 και 4 πάψουν να ισχύουν, αυτό θα σήμαινε ότι το \(S[1]\) ή το \(S[S[1]]\) έχουν μεταβληθεί. Στην σπάνια περίπτωση να συνεχίσουν να ισχύουν και οι 4 συνθήκες, η συνάρτηση:
Χρησιμοποιώντας αυτό το correlation, μπορεί να ανακτηθεί όλο το κλειδί του WEP. Ο επιτιθέμενος λαμβάνει πακέτα από κάποιο δίκτυο προστατευμένο με WEP και ανακτά το πρώτο byte του keystream που χρησιμοποιήθηκε για να κρυπτογραφηθούν τα πακέτα που έλαβε, μαντεύοντας το πρώτο byte του plaintext. Υπάρχουν πολλές τεχνικές δημιουργίας traffic σε ένα δίκτυο προστατευμένο με WEP (που έχουμε αναλύσει σε άλλο άρθρο και δεν θα μπούμε σε λεπτομέρειες εδώ) ακόμα και χωρίς το κλειδί του δικτύου, που επιτρέπουν την ανάκτηση των πρώτων 1000+ bytes του keystream ανά πακέτο. Ο επιτιθέμενος επιλέγει τα πακέτα που το resolved condition ισχύει και υπολογίζει την \(F_{fms}\) για αυτά τα πακέτα. Κάθε αποτέλεσμα της \(F_{fms}\) μπορεί θα θεωρηθεί ως μια ψήφος για την τιμή \(Rk[0]\). Μόλις ληφθούν αρκετά πακέτα, ο επιτιθέμενος επιλέγει την τιμή του \(Rk[0]\) βασισμένος στο πλήθος των ψήφων που έχουν παραχθεί από την \(F_{fms}\). Αν η επιλογή του ήταν σωστή, τότε γνωρίζει τα πρώτα \(l\)= 4-bytes του κλειδιού ανά πακέτο και μπορεί να συνεχίσει για το \(Rk[1]\). Να σημειωθεί ότι όλα τα πακέτα πρέπει να επανεξετασθούν για το κατά πόσο το resolved condition ισχύει διότι η επαλήθευση αυτή εξαρτάται από την τιμή του \(Rk[0]\). Μόλις όλα τα bytes του \(Rk\) έχουν καθοριστεί, ο επιτιθέμενος τσεκάρει αν το κλειδί που πήρε ως αποτέλεσμα είναι σωστό κάνοντας κάποιες δοκιμαστικές αποκρυπτογραφήσεις. Αν το κλειδί είναι σωστό, η επίθεση έχει πετύχει. Αν δεν είναι, τότε θα πρέπει να ψάξει για μια εναλλακτική τιμή του \(Rk[i]\) που να είναι σχεδόν το ίδιο πιθανή λύση. Ύστερα, βάζει την καινούρια τιμή στο decision tree σε «βάθος» \(i\) και συνεχίζει την επίθεση με αυτή την εναλλακτική επιλογή του \(Rk[i]\).
Παρ’ όλο που το 5% πιθανότητες επιτυχίας δείχνει εντυπωσιακό, η επίθεση χρειάζεται 4.000.000 με 6.000.000 πακέτα για να πετύχει με πιθανότητα τουλάχιστον 50%. Αυτό συμβαίνει γιατί το resolved condition ισχύει μόνο για ένα μικρό σύνολο τυχαία επιλεγμένων IVs.
Recent Comments