Το AES-GCM μπορεί να προστατεύσει την εμπιστευτικότητα ενός μηνύματος και να εντοπίσει μη εξουσιοδοτημένες αλλαγές. Δεν λέει από μόνο του στον παραλήπτη αν ένα κατά τα άλλα έγκυρο μήνυμα έχει ήδη υποβληθεί σε επεξεργασία.
Τρεις απαιτήσεις συγχέονται εύκολα: μοναδικά ζεύγη κλειδιού/nonce για κρυπτογράφηση, πιστοποίηση του μηνύματος και του πλαισίου του και χειρισμός επαναλήψεων σε επίπεδο πρωτοκόλλου. Το HKDF μπορεί να βοηθήσει στην παραγωγή κλειδιών, αλλά δεν ικανοποιεί αυτόματα και τις τρεις.
Η επαναχρησιμοποίηση nonce και η επανάληψη μηνύματος είναι διαφορετικά συμβάντα
| Συμβάν | Τι συμβαίνει | Απαιτούμενη προστασία |
|---|---|---|
| Επαναχρησιμοποίηση nonce κατά την κρυπτογράφηση | Διαφορετικά μη κρυπτογραφημένα κείμενα κρυπτογραφούνται με το ίδιο κλειδί GCM και nonce | Αξιόπιστη στρατηγική εκχώρησης κλειδιού/nonce |
| Αλλοίωση | Αλλάζει το κρυπτοκείμενο ή το πιστοποιημένο πλαίσιο | Πιστοποιημένη αποκρυπτογράφηση και απόρριψη σε αποτυχία |
| Επανάληψη | Ένα προηγουμένως έγκυρο κρυπτογραφημένο μήνυμα παραδίδεται ξανά | Κατάσταση και κανόνες εφαρμογής που αναγνωρίζουν διπλότυπα ή παρωχημένα μηνύματα |
| Αναδιάταξη | Έγκυρα μηνύματα φτάνουν με διαφορετική σειρά | Σειρά ορισμένη από το πρωτόκολλο και οριοθετημένος χειρισμός μηνυμάτων εκτός σειράς |
Ένα επαναλαμβανόμενο κρυπτοκείμενο μπορεί ακόμη να έχει έγκυρη ετικέτα πιστοποίησης. Τίποτα δεν άλλαξε. Είναι επομένως λάθος να λέμε ότι κάθε διπλότυπο αποτυγχάνει αυτόματα στην πιστοποίηση AES-GCM. Το RFC 5116 διαχωρίζει ρητά τη διεπαφή AEAD από τις υπηρεσίες προστασίας από επανάληψη.
Γιατί το ζεύγος κλειδιού και nonce δεν πρέπει να επαναλαμβάνεται
Το nonce του GCM δεν χρειάζεται να είναι μυστικό, αλλά πρέπει να ικανοποιεί τις απαιτήσεις μοναδικότητας του σχήματος για δεδομένο κλειδί. Ένα nonce 96 bit, ή 12 byte, είναι συνηθισμένο· η επιλογή αυτού του μήκους δεν εγγυάται σωστή παραγωγή.
Η επαναχρησιμοποίηση του ίδιου κλειδιού και nonce για διαφορετικά μη κρυπτογραφημένα κείμενα επαναχρησιμοποιεί τη ροή κλειδιού κρυπτογράφησης, αποκαλύπτοντας σχέσεις μεταξύ των κειμένων. Μπορεί επίσης να υπονομεύσει την αυθεντικότητα και να επιτρέψει πλαστογραφία. Η επίπτωση είναι σοβαρή, αλλά δεν πρέπει να περιγράφεται ως αυτόματη αποκάλυψη κάθε παλιού κλειδιού ή κάθε μηνύματος ενός λογαριασμού. Η έκταση εξαρτάται από το επαναχρησιμοποιημένο κλειδί και το πρωτόκολλο.
Το NIST SP 800-38D ορίζει το GCM και τις απαιτήσεις του. Οι υλοποιήσεις πρέπει να ακολουθούν τα ισχύοντα όρια κλήσεων και τους κανόνες παραγωγής nonce, όχι έναν απλοϊκό εμπειρικό κανόνα «ασφαλές μέχρι τόσα μηνύματα».
Τι συνεισφέρει το HKDF
Το HKDF, που ορίζεται στο RFC 5869, παράγει υλικό κλειδιών από μυστικό υλικό εισόδου μέσω σταδίων εξαγωγής και επέκτασης. Τα πρωτόκολλα μπορούν να χρησιμοποιούν ετικέτες πλαισίου και διακριτές εισόδους για να διαχωρίζουν κλειδιά διαφορετικών σκοπών.
Το HKDF είναι ντετερμινιστικό. Αν ένας πελάτης μετά από κατάρρευση ή επαναφορά επαναλάβει την ίδια κατάσταση και τις ίδιες εισόδους, μπορεί να παράγει ξανά την ίδια έξοδο. Η προσθήκη HKDF σε έναν σχεδιασμό δεν καθιστά επομένως αδύνατη την επαναχρησιμοποίηση nonce.
Τα κλειδιά ανά μήνυμα μπορούν να μειώσουν το περιεχόμενο που προστατεύεται από ένα κλειδί, αλλά η ασφαλής εξέλιξη κατάστασης, ο διαχωρισμός κλειδιών και η διαγραφή εξακολουθούν να έχουν σημασία. Η ίδια τιμή nonce με πραγματικά διαφορετικά κλειδιά δεν είναι η ίδια αστοχία με την επανάληψη ζεύγους κλειδιού/nonce· το πρωτόκολλο πρέπει να τεκμηριώνει ότι τα κλειδιά πράγματι διαφέρουν.
Η προστασία από επανάληψη ανήκει στο πρωτόκολλο
Ένας παραλήπτης μπορεί να παρακολουθεί αναγνωριστικά μηνυμάτων, θέσεις ακολουθίας, εποχές συνεδρίας ή ήδη χρησιμοποιημένα κλειδιά ratchet. Τα σχετικά πεδία πρέπει να πιστοποιούνται ώστε ένας επιτιθέμενος να μην μπορεί να επαναχαρακτηρίσει ένα παλιό μήνυμα ως νέο.
Η εφαρμογή πρέπει έπειτα να αποφασίσει τι σημαίνει ένα διπλότυπο. Η εμφάνιση διπλής φυσαλίδας συνομιλίας είναι ενοχλητική· η εκτέλεση της ίδιας ενέργειας δύο φορές μπορεί να είναι σοβαρότερη. Οι επαναπροσπάθειες δικτύου είναι φυσιολογικές, οπότε συχνά χρειάζεται ιδιοδύναμη επεξεργασία παράλληλα με τους κρυπτογραφικούς ελέγχους.
Μην απαιτείτε κάθε έγκυρο μήνυμα να φτάνει αυστηρά με τη σειρά, εκτός αν το προβλέπει το πρωτόκολλο. Οι κινητοί πελάτες συχνά επανασυνδέονται, ξαναδοκιμάζουν και λαμβάνουν καθυστερημένα μηνύματα. Ο ασφαλής χειρισμός διακρίνει ένα νόμιμο καθυστερημένο μήνυμα από ένα ήδη χρησιμοποιημένο μήνυμα ή ένα μήνυμα λάθος πλαισίου.
Τι να δοκιμάσετε πριν ισχυριστείτε προστασία
- Επανεκκίνηση αφού εκχωρηθεί nonce αλλά πριν καταγραφεί η αποστολή: μπορεί να επαναληφθεί η εκχώρηση;
- Επαναφορά παλαιότερου στιγμιοτύπου κατάστασης: μπορούν κλειδιά, μετρητές ή εγγραφές επαναλήψεων να επιστρέψουν πίσω;
- Ταυτόχρονη αποστολή από δύο workers ή συσκευές: διαχωρίζονται οι χώροι κλειδιών/nonce τους;
- Παράδοση του ίδιου έγκυρου μηνύματος δύο φορές: εκτελείται η ενέργεια της εφαρμογής μία φορά;
- Αλλαγή αναγνωριστικού συνεδρίας ή κεφαλίδας: δεσμεύεται κρυπτογραφικά το πλαίσιο;
- Παράδοση έγκυρων μηνυμάτων εκτός σειράς: αντιμετωπίζονται οι υποστηριζόμενες καθυστερήσεις χωρίς αποδοχή παρωχημένης κατάστασης;
Τα API πιστοποιημένης αποκρυπτογράφησης πρέπει να επιστρέφουν μη κρυπτογραφημένο κείμενο στην εφαρμογή μόνο μετά από επιτυχή επαλήθευση. Αυτή είναι απαίτηση διεπαφής· δεν είναι ισχυρισμός ότι καμία υλοποίηση δεν υπολογίζει ποτέ εσωτερικά προσωρινό buffer μη κρυπτογραφημένου κειμένου.
Ακριβής ανάγνωση των ισχυρισμών της Livara
Η τεκμηρίωση ασφάλειας της Livara κατονομάζει AES-256-GCM, αλυσίδες ανά μήνυμα και πλαίσιο LVR1/LGS1. Αυτά τα κρυπτογραφικά δομικά στοιχεία δεν αποδεικνύουν ανεξάρτητα σωστή ανάκαμψη από κατάρρευση, εκχώρηση nonce ή απόρριψη επαναλήψεων. Τέτοιοι ισχυρισμοί χρειάζονται λεπτομέρειες πρωτοκόλλου συγκεκριμένης έκδοσης και στοιχεία δοκιμών.
Ένας ισχυρός σχεδιασμός αναθέτει ρητά κάθε εργασία: η παραγωγή κλειδιών δημιουργεί τα προβλεπόμενα κλειδιά, η AEAD πιστοποιεί περιεχόμενο και πλαίσιο και η λογική πρωτοκόλλου που διατηρεί κατάσταση αποφασίζει αν ένα έγκυρο μήνυμα είναι αποδεκτό τώρα.



