Κρυπτογράφηση AES-256: τι σημαίνει για τα δεδομένα σας
Το AES-256 με απλά λόγια: πώς λειτουργεί ο αλγόριθμος, γιατί μετρούν τα κλειδιά 256 bit, τι προσθέτει η λειτουργία GCM και τι να ελέγξετε όταν μια εφαρμογή δηλώνει κρυπτογράφηση AES-256.
Τι είναι το AES-256;
Το AES-256 είναι συμμετρικός αλγόριθμος κρυπτογράφησης μπλοκ: το Advanced Encryption Standard με κλειδί 256 bit. Το ίδιο κλειδί κρυπτογραφεί και αποκρυπτογραφεί. Επεξεργάζεται τα δεδομένα σε μπλοκ των 128 bit σε 14 γύρους, και το NIST το τυποποίησε ως FIPS 197 το 2001.
Το όνομα συνδυάζει τρία στοιχεία. Το AES ονομάζει τον αλγόριθμο, που το NIST επέλεξε το 2001 από την πρόταση Rijndael. Το 256 είναι το μήκος του κλειδιού σε bit και ορίζει πόσα κλειδιά πρέπει να δοκιμάσει όποιος επιτίθεται με ωμή βία. Ένας τρόπος λειτουργίας όπως το GCM ή το CBC, που γράφεται συνήθως μετά το όνομα, όπως στο AES-256-GCM, καθορίζει πώς συνδέονται τα μπλοκ μεταξύ τους και αν το κρυπτογραφημένο κείμενο ελέγχεται για αλλοιώσεις. Το σκέτο AES-256 σας λέει τον αλγόριθμο και το μέγεθος του κλειδιού. Δεν σας λέει τον τρόπο λειτουργίας, ούτε ποιος κρατά το κλειδί.
Το AES-256 είναι το Advanced Encryption Standard με κλειδί 256 bit, τυποποιημένο από το NIST ως FIPS 197 το 2001. Είναι ο συμμετρικός αλγόριθμος που χρησιμοποιεί η κυβέρνηση των ΗΠΑ για διαβαθμισμένες πληροφορίες, οι τράπεζες για τις οικονομικές συναλλαγές και οι εφαρμογές που δίνουν βάρος στην ασφάλεια για να προστατεύουν δεδομένα σε αποθήκευση και σε μεταφορά. Το AES-256 έχει 2^256 πιθανά κλειδιά, αριθμό μεγαλύτερο από τα εκτιμώμενα άτομα του παρατηρήσιμου σύμπαντος. Καμία γνωστή επίθεση δεν μειώνει αυτόν τον χώρο κλειδιών σε αναζήτηση που να είναι υπολογιστικά εφικτή.
Ο οδηγός αυτός εξηγεί τι κάνει πραγματικά το AES-256, γιατί μετράει το μέγεθος του κλειδιού, τι σημαίνουν οι διαφορετικοί τρόποι λειτουργίας (ECB, CBC, GCM) και τι να προσέξετε όταν μια εφαρμογή δηλώνει ότι χρησιμοποιεί κρυπτογράφηση AES-256.
Τι κάνει πραγματικά το AES
Το AES είναι συμμετρικός αλγόριθμος κρυπτογράφησης μπλοκ. «Συμμετρικός» σημαίνει ότι το ίδιο κλειδί κρυπτογραφεί και αποκρυπτογραφεί. «Κρυπτογράφηση μπλοκ» σημαίνει ότι επεξεργάζεται τα δεδομένα σε μπλοκ σταθερού μεγέθους 128 bit (16 byte).
Ο αλγόριθμος παίρνει τα δεδομένα σας (απλό κείμενο), τα συνδυάζει με ένα κλειδί και παράγει ανακατεμένη έξοδο (κρυπτογραφημένο κείμενο) μέσα από μια σειρά μαθηματικών μετασχηματισμών. Οι μετασχηματισμοί αυτοί, δηλαδή αντικατάσταση, μετατόπιση, ανάμειξη και πρόσθεση κλειδιού, επαναλαμβάνονται για σταθερό αριθμό γύρων. Το AES-256 κάνει 14 γύρους.
Κάθε γύρος εφαρμόζει τέσσερις πράξεις:
- SubBytes: Κάθε byte αντικαθίσταται με βάση έναν σταθερό πίνακα αντικατάστασης (S-box), που εισάγει μη γραμμικότητα.
- ShiftRows: Τα byte κάθε γραμμής μετατοπίζονται κατά διαφορετικό βήμα, ώστε τα δεδομένα να απλώνονται σε άλλες θέσεις.
- MixColumns: Οι στήλες αναμειγνύονται με πολλαπλασιασμό πινάκων σε πεπερασμένο σώμα, ώστε κάθε αλλαγή να διαχέεται σε πολλά byte.
- AddRoundKey: Το κλειδί του γύρου (που παράγεται από το κύριο κλειδί) συνδυάζεται με τα δεδομένα μέσω XOR.
Μετά από 14 γύρους, το απλό κείμενο έχει ανακατευτεί πλήρως. Αν αντιστρέψετε αυτές τις πράξεις με το σωστό κλειδί, παίρνετε πίσω τα αρχικά δεδομένα. Χωρίς το κλειδί, το κρυπτογραφημένο κείμενο δεν ξεχωρίζει από τυχαίο θόρυβο.
Γιατί μετρούν τα 256 bit
Το «256» στο AES-256 είναι το μήκος του κλειδιού: 256 bit. Αυτό καθορίζει πόσα πιθανά κλειδιά πρέπει να δοκιμάσει ένας επιτιθέμενος για να σπάσει την κρυπτογράφηση με ωμή βία.
| Μέγεθος κλειδιού | Πιθανά κλειδιά | Χρόνος για ωμή βία (1 τρισεκατομμύριο δοκιμές/δευτ.) |
|---|---|---|
| 56 bit (DES) | 7.2 x 10^16 | ~20 ώρες |
| 128 bit (AES-128) | 3.4 x 10^38 | 10^13 χρόνια (10 τρισεκατομμύρια χρόνια) |
| 256 bit (AES-256) | 1.16 x 10^77 | 10^51 χρόνια |
Για σύγκριση: το σύμπαν έχει ηλικία περίπου 1,38 x 10^10 χρόνια. Η ωμή βία κατά του AES-256 θα διαρκούσε περίπου 10^41 φορές περισσότερο από την ηλικία του σύμπαντος, ακόμα και με ένα τρισεκατομμύριο δοκιμές το δευτερόλεπτο.
Ήδη το AES-128 είναι υπολογιστικά αδύνατο να σπάσει με ωμή βία. Το AES-256 δίνει επιπλέον περιθώριο απέναντι σε μελλοντικές εξελίξεις της υπολογιστικής ισχύος, και στους κβαντικούς υπολογιστές. Ο αλγόριθμος του Grover (μια κβαντική επίθεση) ουσιαστικά υποδιπλασιάζει το μήκος του κλειδιού: το AES-256 πέφτει στο επίπεδο του AES-128, που παραμένει ανέφικτο να σπάσει. Το AES-128 θα έπεφτε σε πραγματική ασφάλεια 64 bit, που ενδέχεται να είναι ευάλωτη. Γι' αυτό οι εφαρμογές όπου η ασφάλεια είναι κρίσιμη προτιμούν το AES-256.
Τρόποι λειτουργίας του AES: γιατί έχουν σημασία
Το AES από μόνο του κρυπτογραφεί ένα μπλοκ 128 bit κάθε φορά. Για πραγματικά δεδομένα (φωτογραφίες, έγγραφα, βίντεο) χρειάζεστε έναν «τρόπο λειτουργίας» που χειρίζεται δεδομένα μεγαλύτερα από 16 byte. Ο τρόπος λειτουργίας καθορίζει πώς συνδέονται τα μπλοκ μεταξύ τους και έχει σοβαρές συνέπειες για την ασφάλεια.
ECB (Electronic Codebook): μην το χρησιμοποιείτε
Κάθε μπλοκ κρυπτογραφείται ανεξάρτητα με το ίδιο κλειδί. Ίδια μπλοκ απλού κειμένου δίνουν ίδια μπλοκ κρυπτογραφημένου κειμένου, οπότε τα μοτίβα των δεδομένων διαρρέουν. Το κλασικό παράδειγμα: αν κρυπτογραφήσετε μια εικόνα bitmap με ECB, η δομή της εικόνας διατηρείται στο κρυπτογραφημένο κείμενο και το περιεχόμενο αναγνωρίζεται. Το ECB περιλαμβάνεται στο πρότυπο, αλλά δεν πρέπει ποτέ να χρησιμοποιείται για δεδομένα με δομή ή επαναλαμβανόμενα μοτίβα, δηλαδή σχεδόν για όλα τα πραγματικά δεδομένα.
CBC (Cipher Block Chaining): παλαιότερη λύση
Κάθε μπλοκ συνδυάζεται μέσω XOR με το προηγούμενο κρυπτογραφημένο μπλοκ πριν από την κρυπτογράφηση. Έτσι εξαλείφεται η διαρροή μοτίβων του ECB. Το CBC ήταν ο βασικός τρόπος λειτουργίας για δεκαετίες, αλλά στις περισσότερες εφαρμογές το έχει αντικαταστήσει το GCM. Το CBC απαιτεί τυχαίο διάνυσμα αρχικοποίησης (IV) και δεν έχει ενσωματωμένη πιστοποίηση: δεν μπορείτε να καταλάβετε αν το κρυπτογραφημένο κείμενο έχει αλλοιωθεί.
GCM (Galois/Counter Mode): το σημερινό πρότυπο
Το GCM συνδυάζει κρυπτογράφηση με μετρητή (counter mode) και πιστοποίηση σε σώμα Galois. Παρέχει πιστοποιημένη κρυπτογράφηση: κρυπτογραφεί τα δεδομένα ΚΑΙ παράγει μια ετικέτα πιστοποίησης που εντοπίζει κάθε αλλαγή στο κρυπτογραφημένο κείμενο. Αν αλλάξει έστω και ένα bit, η αποκρυπτογράφηση αποτυγχάνει αντί να βγάλει αλλοιωμένο απλό κείμενο.
Το NIST τυποποίησε το GCM στο SP 800-38D (2007). Είναι ο συνιστώμενος τρόπος λειτουργίας για νέες υλοποιήσεις.
Το AES-256-GCM είναι το AES με κλειδί 256 bit σε λειτουργία Galois/Counter Mode. Αυτό πρέπει να χρησιμοποιούν οι εφαρμογές όπου η ασφάλεια είναι κρίσιμη, και αυτό χρησιμοποιεί το Vaultaire για να κρυπτογραφεί το περιεχόμενο φωτογραφιών και αρχείων.
| Τρόπος λειτουργίας | Διαρροή μοτίβων | Πιστοποίηση | Τρέχουσα σύσταση |
|---|---|---|---|
| ECB | Ναι (σοβαρή) | Όχι | Μην το χρησιμοποιείτε |
| CBC | Όχι | Όχι (χρειάζεται ξεχωριστό MAC) | Παλαιότερη λύση· αποδεκτή με HMAC |
| GCM | Όχι | Ναι (ενσωματωμένη) | Συνιστάται για νέες υλοποιήσεις |
Τι σημαίνει το AES-256 για την αποθήκευση φωτογραφιών
Όταν μια εφαρμογή θησαυροφυλακίου φωτογραφιών δηλώνει «κρυπτογράφηση AES-256», πρέπει να ισχύουν τρία πράγματα:
Το περιεχόμενο των αρχείων κρυπτογραφείται με AES-256. Τα ακατέργαστα δεδομένα της φωτογραφίας (pixel, μεταδεδομένα, μικρογραφία) μετατρέπονται σε κρυπτογραφημένο κείμενο με κλειδί 256 bit.
Κάθε αρχείο έχει μοναδικό διάνυσμα αρχικοποίησης (IV). Αν δύο ίδιες φωτογραφίες κρυπτογραφηθούν με το ίδιο κλειδί, το κρυπτογραφημένο κείμενο πρέπει να διαφέρει. Γι' αυτό χρειάζεται μοναδικό IV ανά αρχείο. Χωρίς αυτό, η στατιστική ανάλυση μπορεί να αποκαλύψει μοτίβα.
Ο τρόπος λειτουργίας παρέχει πιστοποίηση (GCM ή αντίστοιχο). Χωρίς πιστοποίηση, ένας επιτιθέμενος μπορεί να αλλάξει το κρυπτογραφημένο κείμενο χωρίς να γίνει αντιληπτός. Το αποτέλεσμα της αποκρυπτογράφησης θα ήταν αλλοιωμένα δεδομένα αντί για μήνυμα σφάλματος.
Τι δεν σας λέει το «AES-256» σε μια διαφημιστική σελίδα
Το AES-256 είναι απαραίτητο αλλά όχι αρκετό. Αρκετοί κρίσιμοι παράγοντες καθορίζουν αν η κρυπτογράφηση προστατεύει πραγματικά τα δεδομένα σας:
Μετράει η παραγωγή του κλειδιού. Πώς δημιουργείται το κλειδί των 256 bit; Αν προκύπτει από ένα τετραψήφιο PIN με αδύναμη συνάρτηση παραγωγής κλειδιού (KDF), η πραγματική ασφάλεια είναι 4 ψηφία (10.000 συνδυασμοί), όχι 256 bit. Μια σωστή υλοποίηση χρησιμοποιεί PBKDF2 με υψηλό αριθμό επαναλήψεων ή Argon2 με κατάλληλες παραμέτρους μνήμης και χρόνου. Το Vaultaire χρησιμοποιεί PBKDF2 με HMAC-SHA512 και 600.000 επαναλήψεις για να παράγει ένα τοπικό κλειδί θησαυροφυλακίου από το μοτίβο 5x5 που επιλέγετε και ένα salt της συσκευής. Το PBKDF2 κάνει κάθε δοκιμή πιο ακριβή· δεν ανεβάζει την εντροπία του μοτίβου στα 256 bit.
Μετράει η αποθήκευση του κλειδιού. Πού βρίσκεται το κλειδί; Αν αποθηκεύεται ως απλό κείμενο στο sandbox της εφαρμογής, κακόβουλο λογισμικό με πρόσβαση στα αρχεία μπορεί να το διαβάσει. Το Secure Enclave της Apple υποστηρίζει συγκεκριμένες πράξεις με μη εξαγώγιμα κλειδιά, όχι οποιοδήποτε κλειδί AES δίνει μια εφαρμογή. Τα σχέδια με συμμετρικά κλειδιά μπορούν αντίθετα να βασίζονται στο Keychain και στην Προστασία δεδομένων, οπότε η τεκμηρίωση πρέπει να αναφέρει το ακριβές API και την κλάση προστασίας αντί να λέει μόνο «με υποστήριξη υλικού».
Μετράει τι κρυπτογραφείται. Κάποιες εφαρμογές κρυπτογραφούν το περιεχόμενο των αρχείων αλλά αφήνουν ακρυπτογράφητα τα ονόματα αρχείων, τις μικρογραφίες και τα μεταδεδομένα. Ένας ιατροδικαστικός εξεταστής ίσως δεν δει τη φωτογραφία σας, αλλά βλέπει το «vacation-beach-2025.jpg» στη λίστα αρχείων. Η πλήρης κρυπτογράφηση καλύπτει ξεχωριστά και τα μεταδεδομένα.
Μετράει ο κύκλος ζωής του κλειδιού. Πόσο καιρό μένει διαθέσιμο το αποκρυπτογραφημένο υλικό κλειδιού; Το Vaultaire απορρίπτει την κατάσταση του ενεργού θησαυροφυλακίου και του κύριου κλειδιού όταν κλειδώνει ή κλείνει και απαιτεί νέο ξεκλείδωμα. Τα byte του συμμετρικού κλειδιού υπάρχουν αναγκαστικά στη μνήμη της εφαρμογής όσο ένα θησαυροφυλάκιο είναι ανοιχτό, και η Swift και το iOS δεν επιτρέπουν σε μια εφαρμογή να αποδείξει ότι κάθε προσωρινό αντίγραφο έχει αντικατασταθεί.
Το AES-256 στην πράξη: ποιος το χρησιμοποιεί
| Φορέας | Χρήση | Τρόπος λειτουργίας |
|---|---|---|
| Κυβέρνηση ΗΠΑ (NSA) | Διαβαθμισμένες πληροφορίες | GCM (ή CTR με ξεχωριστή πιστοποίηση) |
| Apple (iCloud ADP) | Κρυπτογράφηση από άκρο σε άκρο στο iCloud | GCM |
| Signal | Κρυπτογράφηση μηνυμάτων | CBC (με HMAC για πιστοποίηση) |
| Τράπεζες | Κρυπτογράφηση οικονομικών συναλλαγών | GCM |
| 1Password | Θησαυροφυλάκιο κωδικών πρόσβασης | GCM |
| Vaultaire | Θησαυροφυλάκιο φωτογραφιών και αρχείων | GCM |
| VeraCrypt | Κρυπτογράφηση δίσκου | XTS (βελτιστοποιημένο για μπλοκ δίσκου) |
Συνηθισμένες παρανοήσεις
Η «κρυπτογράφηση στρατιωτικού επιπέδου» δεν σημαίνει κάτι συγκεκριμένο. Οι διαφημιστικές σελίδες χρησιμοποιούν τη φράση επειδή ακούγεται εντυπωσιακή. Το AES-256 το χρησιμοποιούν στρατοί. Το ίδιο και το AES-128. Η φράση δεν σας λέει τον τρόπο λειτουργίας, την παραγωγή ή την αποθήκευση του κλειδιού, ούτε ποια δεδομένα κρυπτογραφούνται πραγματικά.
Η «κρυπτογράφηση 256 bit» μπορεί να μην είναι AES-256. Και άλλοι αλγόριθμοι χρησιμοποιούν κλειδιά 256 bit (ChaCha20, Twofish, Serpent). Ελέγξτε ποιος αλγόριθμος αναφέρεται. Το σημερινό πρότυπο είναι το AES-256-GCM.
Το AES-256 δεν σας προστατεύει από έναν αδύναμο κωδικό. Αν ο κωδικός σας είναι «1234» και η παραγωγή του κλειδιού είναι αδύναμη, η κρυπτογράφηση προσφέρει στην πράξη ασφάλεια τεσσάρων ψηφίων, όσο ισχυρός κι αν είναι ο αλγόριθμος. Η αλυσίδα σπάει στον πιο αδύναμο κρίκο.
Το AES-256 δεν προστατεύει τα δεδομένα την ώρα που τα χρησιμοποιείτε. Όταν βλέπετε μια φωτογραφία, πρέπει να αποκρυπτογραφηθεί στη μνήμη. Εκείνη τη στιγμή βρίσκεται ως απλό κείμενο στη RAM. Οι σωστές υλοποιήσεις κρατούν αυτό το διάστημα όσο γίνεται μικρότερο και σβήνουν γρήγορα τα αποκρυπτογραφημένα δεδομένα.
Συχνές ερωτήσεις
Τι σημαίνει το AES-256;
Advanced Encryption Standard με κλειδί 256 bit. Το AES είναι ο αλγόριθμος που το NIST τυποποίησε ως FIPS 197 το 2001, αφού επέλεξε τον σχεδιασμό Rijndael. Το 256 είναι το μήκος του κλειδιού σε bit. Μια κατάληξη όπως στο AES-256-GCM δηλώνει τον τρόπο λειτουργίας, που είναι ξεχωριστή επιλογή από τον αλγόριθμο και το μέγεθος κλειδιού.
Μπορεί να σπάσει το AES-256;
Καμία γνωστή επίθεση δεν σπάει το AES-256 μειώνοντας ολόκληρο τον χώρο κλειδιών. Η καλύτερη γνωστή επίθεση (επίθεση biclique των Bogdanov, Khovratovich και Rechberger, 2011) μειώνει το AES-256 από 2^256 πράξεις σε 2^254,4, μια θεωρητική βελτίωση χωρίς καμία πρακτική σημασία. Το AES-256 παραμένει άθικτο.
Αντέχει το AES-256 σε κβαντικούς υπολογιστές;
Ουσιαστικά ναι. Ο κβαντικός αλγόριθμος του Grover υποδιπλασιάζει το πραγματικό μήκος του κλειδιού: το AES-256 ισοδυναμεί με ασφάλεια 128 bit απέναντι σε κβαντικές επιθέσεις. Το AES-128 θα έπεφτε σε πραγματική ασφάλεια 64 bit, που ενδέχεται να είναι ευάλωτη. Μια αναζήτηση Grover κατά του AES-256 θα χρειαζόταν ακόμα περίπου 2^128 πράξεις, κάτι μη πρακτικό.
Ποια είναι η διαφορά ανάμεσα σε AES-128 και AES-256;
Το AES-128 χρησιμοποιεί κλειδί 128 bit (10 γύροι). Το AES-256 χρησιμοποιεί κλειδί 256 bit (14 γύροι). Και τα δύο θεωρούνται ασφαλή απέναντι στις σημερινές επιθέσεις. Το AES-256 δίνει μεγαλύτερο περιθώριο απέναντι σε μελλοντικές εξελίξεις, κυρίως στους κβαντικούς υπολογιστές. Λόγω των επιπλέον γύρων, το AES-256 είναι περίπου 40% πιο αργό από το AES-128, αλλά η επιτάχυνση υλικού κάνει τη διαφορά αμελητέα στις σύγχρονες συσκευές.
Κάνει η κρυπτογράφηση AES-256 πιο αργό το κινητό μου;
Όχι αισθητά στην κανονική χρήση. Οι σύγχρονοι επεξεργαστές της Apple επιταχύνουν το AES σε επίπεδο υλικού μέσω των κρυπτογραφικών βιβλιοθηκών του συστήματος. Αυτό δεν σημαίνει ότι η πράξη AES μιας εφαρμογής εκτελείται μέσα στο Secure Enclave. Ο χρόνος εξαρτάται πάντα από το μέγεθος του αρχείου, τη συσκευή, τον αποθηκευτικό χώρο και την υλοποίηση, οπότε ένας ισχυρισμός ασφάλειας πρέπει να στηρίζεται σε μετρήσεις και όχι σε ένα καθολικό νούμερο σε χιλιοστά του δευτερολέπτου.
Πώς ξέρω αν μια εφαρμογή χρησιμοποιεί πραγματικά AES-256;
Ελέγξτε την τεκμηρίωση ασφαλείας της εφαρμογής, όχι μόνο τη διαφημιστική της σελίδα. Αναζητήστε τον συγκεκριμένο αλγόριθμο και τρόπο λειτουργίας, την ιεραρχία κλειδιών, τις παραμέτρους παραγωγής κλειδιού, την ακριβή χρήση του Keychain ή του Secure Enclave, τον χειρισμό του nonce, τη διαδικασία ανάκτησης και αν κρυπτογραφούνται και τα μεταδεδομένα. Ο ανοιχτός κώδικας και οι ανεξάρτητοι έλεγχοι κάνουν αυτούς τους ισχυρισμούς πιο εύκολο να επαληθευτούν.
Συμπέρασμα
Το AES-256 είναι ευρέως διαδεδομένος συμμετρικός αλγόριθμος, τυποποιημένος από το NIST, χωρίς γνωστή πρακτική επίθεση· ένας κβαντικός υπολογιστής με τον αλγόριθμο του Grover θα χρειαζόταν ακόμα περίπου 2^128 πράξεις. Όταν αξιολογείτε εφαρμογές που δηλώνουν κρυπτογράφηση AES-256, κοιτάξτε πέρα από τον αλγόριθμο: ελέγξτε τον τρόπο λειτουργίας (GCM), την παραγωγή του κλειδιού (PBKDF2/Argon2 με υψηλό αριθμό επαναλήψεων), την αποθήκευση του κλειδιού (με υποστήριξη υλικού) και ποια δεδομένα κρυπτογραφούνται πραγματικά (περιεχόμενο και μεταδεδομένα).
Το Vaultaire χρησιμοποιεί AES-256-GCM για το περιεχόμενο των αρχείων, τις κεφαλίδες, τα μεταδεδομένα, τα ευρετήρια και τις μικρογραφίες. Το PBKDF2 με HMAC-SHA512 παράγει ένα τοπικό κλειδί θησαυροφυλακίου από το μοτίβο και ένα salt της συσκευής στο Keychain· αυτό το κλειδί ξεκλειδώνει ένα τυχαίο κύριο κλειδί που κρυπτογραφεί τα αρχεία. Οι συμμετρικές πράξεις εκτελούνται μέσα στη διεργασία της εφαρμογής μέσω του CryptoKit, ενώ το Keychain και η Προστασία δεδομένων του iOS προστατεύουν την κατάσταση ανάκτησης όταν η συσκευή είναι κλειδωμένη. Όλη η ιεραρχία περιγράφεται στο μοντέλο ασφάλειας.