Table of Contents
Προηγμένη Τυποποίηση Κρυπτογράφησης (AES) είναι ένας ευρέως χρησιμοποιούμενος αλγόριθμος κρυπτογράφησης που εξασφαλίζει την ασφάλεια των δεδομένων. Χρησιμοποιείται σε διάφορες εφαρμογές, από την εξασφάλιση επικοινωνιών μέχρι την προστασία αποθηκευμένων δεδομένων. Αυτό το άρθρο παρέχει μια πρακτική επισκόπηση του AES, συμπεριλαμβανομένων υπολογισμών παραδείγματος για να βοηθήσει στην κατανόηση της λειτουργίας του.
Βασικά του AES
Το AES είναι ένας συμμετρικός αλγόριθμος κρυπτογράφησης κλειδιού, που σημαίνει ότι το ίδιο κλειδί χρησιμοποιείται τόσο για κρυπτογράφηση όσο και για αποκρυπτογράφηση. Λειτουργεί σε μπλοκ δεδομένων σταθερού μεγέθους, συνήθως 128 bits, και υποστηρίζει μεγέθη κλειδιών 128, 192, ή 256 bits. Η διαδικασία κρυπτογράφησης περιλαμβάνει πολλαπλούς γύρους υποκατάστασης, διαστοιχείωσης και ανάμειξης των δεδομένων για την παραγωγή ενός ασφαλούς κρυπτογραφικού κειμένου.
Διαδικασία κρυπτογράφησης
Η διαδικασία κρυπτογράφησης AES αποτελείται από διάφορα βήματα:
- Υποβρύχια: Υποκατάσταση byte με χρήση προκαθορισμένου S-box.
- ShiftRows: Κυκλικά μετατοπίζονται σειρές της διάταξης κατάστασης.
- Μίξ Columns: Αναμιγνύει τις στήλες για να διαχέουν τα δεδομένα.
- AddRoundKey: Συνδυάζει την κατάσταση με ένα στρογγυλό κλειδί που προέρχεται από το κύριο κλειδί.
Αυτή η ακολουθία επαναλαμβάνεται για έναν αριθμό γύρων ανάλογα με το μέγεθος του κλειδιού, με τον τελικό γύρο να παραλείπει το βήμα MixColumns.
Παράδειγμα υπολογισμού
Το αρχικό απλό κείμενο αναπαρίσταται σε δεκαεξαδικό ως 001122334455668899abbccddeeff. Το κλειδί είναι 00010204040708090a0b0c0d0e0f. Το πρώτο βήμα περιλαμβάνει την προσθήκη του στρογγυλού κλειδιού στο απλό κείμενο, με αποτέλεσμα μια νέα κατάσταση. Οι επόμενοι γύροι εφαρμόζουν την αντικατάσταση, μετατόπιση, ανάμειξη, και βήματα βασικής προσθήκης, μετατρέποντας τα δεδομένα σε κρυπτογραφημένο κείμενο.
Για παράδειγμα, μετά την πρώτη λειτουργία AddRoundKey, το κράτος γίνεται:
Αpiλώς piροκείμενο: 00112233445566778899abbccddeeff
Κλειδί στρογγυλής τραπέζης: 00010204060708090a0b0c0d0e0f
Αποτέλεσμα (εξ): 001020304060708090a0b0c0d0e0f
Αυτή η διαδικασία συνεχίζεται σε όλους τους γύρους, δημιουργώντας τελικά το κρυπτογραφημένο κρυπτογραφημένο κείμενο.