AES

Το **Προχωρημένο Πρότυπο Κρυπτογράφησης** (αγγλικά: Advanced Encryption Standard, **AES**), γνωστό επίσης με την αρχική του ονομασία **Rijndael** (), είναι μια προδιαγραφή για την κρυπτογράφηση ηλεκτρονικών δεδομένων. Ιδρύθηκε από το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας των ΗΠΑ (NIST) το 2001.

Το AES είναι μια παραλλαγή του αλγορίθμου κρυπτογράφησης δέσμης Rijndael που αναπτύχθηκε από δύο Βελγούς κρυπτογράφους, τον Joan Daemen και τον Vincent Rijmen, οι οποίοι υπέβαλαν πρόταση στο NIST κατά τη διαδικασία επιλογής του AES. Ο Rijndael είναι μια οικογένεια αλγορίθμων κρυπτογράφησης με διαφορετικά μεγέθη κλειδιών και τμημάτων δεδομένων. Για το AES, το NIST επέλεξε τρία μέλη της οικογένειας Rijndael, το καθένα με μέγεθος τμήματος 128 bits, αλλά με τρία διαφορετικά μεγέθη κλειδιών: 128, 192 και 256 bits.

Το AES έχει εγκριθεί από την κυβέρνηση των ΗΠΑ. Με αυτό, αντικατάσταται το Πρότυπο Κρυπτογράφησης Δεδομένων (αγγλικά: Data Encryption Standard**, DES**),  το οποίο δημοσιεύθηκε το 1977. Ο αλγόριθμος που περιγράφεται από το AES είναι αλγόριθμος συμμετρικού κλειδιού, που σημαίνει ότι το ίδιο κλειδί χρησιμοποιείται τόσο για την κρυπτογράφηση όσο και για την αποκρυπτογράφωση των δεδομένων.

Στις Ηνωμένες Πολιτείες, το AES ανακοινώθηκε από το NIST ως U.S. FIPS PUB 197 (FIPS 197) στις 26 Νοεμβρίου 2001.  Την ανακοίνωση αυτή ακολούθησε μια πενταετή διαδικασία τυποποίησης, κατά την οποία παρουσιάστηκαν και αξιολογήθηκαν δεκαπέντε σχέδια που συναγωνίζονταν μεταξύ τους, πριν επιλεγεί ο αλγόριθμος Rijndael ως ο πιο κατάλληλος.

Το AES περιλαμβάνεται στο πρότυπο ISO/IEC 18033-3. Το AES τέθηκε σε ισχύ ως πρότυπο της ομοσπονδιακής κυβέρνησης των ΗΠΑ στις 26 Μαΐου 2002, μετά την έγκριση του Υπουργού Εμπορίου των ΗΠΑ Ντόναλντ Έβανς. Το AES είναι διαθέσιμο σε πολλά διαφορετικά πακέτα κρυπτογράφησης και είναι ο πρώτος (και ο μόνος) δημόσια προσβάσιμος αλγόριθμος κρυπτογράφησης που έχει εγκριθεί από το Υπουργείο Εθνικής Ασφάλειας των ΗΠΑ (NSA) για πληροφορίες υψηλής μυστικότητας όταν χρησιμοποιείται σε μία κρυπτογραφική μονάδα που έχει εγκριθεί από την NSA.

## Περιγραφή των αλγορίθμων
Το AES βασίζεται σε μια αρχή σχεδιασμού γνωστή ως δίκτυο υποκατάστασης-μεταλλαγής και είναι αποτελεσματικό τόσο στο λογισμικό όσο και στο υλικό.  Σε αντίθεση με τον προκατόχου του, του DES, το AES δεν χρησιμοποιεί το δίκτυο Feistel. Το AES είναι μια παραλλαγή του Rijndael, με σταθερό μέγεθος τμήματος δεδομένων των 128 bits και ένα κλειδί με μέγεθος 128, 192 ή 256 bits. Αντίθετα, ο Rijndael μόνος του ορίζεται με μεγέθη τμήματος δεδομένων και κλειδιού που μπορεί να είναι οποιοδήποτε πολλαπλάσιο των 32 bits, με ελάχιστο 128 και μέγιστο 256 bits. Οι περισσότεροι υπολογισμοί στο AES γίνονται σε ένα συγκεκριμένο πεπερασμένο σώμα.

Το AES λειτουργεί σε ένα πίνακα 4 × 4 των 16 bytes αποθηκευμένα κατά στήλη:  που ονομάζεται κατάσταση:

:: 
\begin{bmatrix}
b_0 & b_4 & b_8 & b_{12} \\
b_1 & b_5 & b_9 & b_{13} \\
b_2 & b_6 & b_{10} & b_{14} \\
b_3 & b_7 & b_{11} & b_{15}
\end{bmatrix}


Το μέγεθος του κλειδιού που χρησιμοποιείται για το AES καθορίζει τον αριθμό των γύρων μετασχηματισμού που μετατρέπουν την είσοδο, που ονομάζεται αρχικό κείμενο, στην τελική έξοδο, που ονομάζεται κρυπτογραφημένο κείμενο. Ο αριθμός των γύρων είναι ο εξής:

* 10 γύροι για κλειδιά των 128 bits.
* 12 γύροι για κλειδιά των 192 bits.
* 14 γύροι για κλειδιά των 256 bits.

Κάθε γύρος αποτελείται από διάφορα στάδια επεξεργασίας, συμπεριλαμβανομένου ενός που εξαρτάται από το κλειδί κρυπτογράφησης. Ένα σύνολο αντιστροφών γύρων εφαρμόζεται για να μετατρέψει το κείμενο κρυπτογράφησης πίσω στο αρχικό κείμενο χρησιμοποιώντας το ίδιο κλειδί κρυπτογράφησης. 

### Περιγραφή του αλγόριθμου σε υψηλό επίπεδο

#  τα κλειδιά γύρων αντλούνται από το κλειδί κρυπτογράφησης χρησιμοποιώντας το πρόγραμμα κλειδιών AES. Το AES απαιτεί ένα ξεχωριστό κλειδί γύρου των 128 bits για κάθε γύρο συν ένα ακόμη.
# Αρχική προσθήκη κλειδιού γύρου:
## κάθε byte της κατάστασης συνδυάζεται με ένα byte του κλειδιού γύρου χρησιμοποιώντας αποκλειστική διάζευξη (XOR).
# 9, 11 ή 13 γύροι:
## ένα μη γραμμικό βήμα αντικατάστασης όπου κάθε byte αντικαθίσταται από ένα άλλο σύμφωνα με έναν πίνακα αναζήτησης.
## ένα στάδιο όπου οι τρεις τελευταίες σειρές της κατάστασης μετατοπίζονται κυκλικά κατά έναν ορισμένο αριθμό βημάτων.
## γραμμική ανάμειξη που λειτουργεί στις στήλες της κατάστασης, ενώνοντας τα τέσσερα bytes σε κάθε στήλη.
## 
# Τελευταίος γύρος (ώστε να έχουμε συνολικά 10, 12 ή 14 γύρους):
## 
## 
## 

### Το βήμα
δεξιά|μικρογραφία|320x320εσ|Στο βήμα , κάθε byte στην κατάσταση αντικαθίσταται από την καταχώρισή του σε ένα σταθερό πίνακα αναζήτησης 8 bits, <math>S; b_{ij} = S(a_{ij})</math>.
Στο βήμα , κάθε byte a_{i,j} στον πίνακα της κατάστασης αντικαθίσταται από ένα byte  χρησιμοποιώντας ένα κουτί αντικατάστασης μεγέθους 8 bit. Πριν από το γύρο 0, η κατάσταση είναι το αρχικό κείμενο/η είσοδος. Αυτή η διαδικασία κάνει τον αλγόριθμο κρυπτογράφησης να μην είναι γραμμικός. Το κουτί αντικατάστασης (S-box) που χρησιμοποιείται προέρχεται από τoν πολλαπλασιαστικό αντίστροφο πάνω στο , το οποίο είναι γνωστό για τις καλές μη γραμμικές του ιδιότητες. Για να αποφευχθούν επιθέσεις που βασίζονται σε απλές αλγεβρικές ιδιότητες, το S-box κατασκευάζεται συνδυάζοντας την αντίστροφη συνάρτηση με έναν αναστρέψιμο αφινικό μετασχηματισμό. Το S-box επιλέγεται επίσης για να αποφευχθούν οποιαδήποτε σταθερά σημεία (και έτσι είναι μια διαταραχή), δηλαδή, S (a_{i,j}) \neq a_{i ,j} , και επίσης κάθε αντίθετο σταθερό σημείο, δηλαδή, S (a_{i,j}) \oplus a_{i ,j}\neq {\text{FF}}_{16} 
Κατά την εκτέλεση της αποκρυπτογράφησης, χρησιμοποιείται το βήμα  (η αντίστροφη των SubBytes), το οποίο απαιτεί πρώτα να παρθεί ο αντίστροφος αφινικός μετασχηματισμός και στη συνέχεια να βρεθεί ο πολλαπλασιαστικός αντίστροφος.

### Το βήμα
δεξιά|μικρογραφία|320x320εσ|Στο βήμα , τα bytes σε κάθε σειρά της κατάστασης μετακινούνται κυκλικά προς τα αριστερά. Ο αριθμός των θέσεων που μετατοπίζεται κάθε byte διαφέρει κατά ένα για κάθε σειρά.
Το βήμα  λειτουργεί στις σειρές της κατάστασης. Μετατοπίζει τα bytes κυκλικά σε κάθε σειρά κατά μια ορισμένη μετατόπιση. Στο AES, η πρώτη σειρά παραμένει αμετάβλητη. Κάθε byte της δεύτερης σειράς μετατοπίζεται ένα αριστερά. Ομοίως, η τρίτη και η τέταρτη σειρά μετατοπίζονται κατά δύο και τριών bytes αντίστοιχα. Με αυτόν τον τρόπο, κάθε στήλη της κατάστασης που παράγεται από το βήμα  αποτελείται από bytes από κάθε στήλη της εισόδου. Η σημασία αυτού του βήματος είναι να αποφευχθεί η ξεχωριστή κρυπτογράφηση κάθε στήλης, που στην περίπτωση αυτή το AES θα διαιρεθεί σε τέσσερις ανεξάρτητους αλγόριθμους κρυπτογράφησης.

### Το βήμα
δεξιά|μικρογραφία|320x320εσ|Στο βήμα , κάθε στήλη της κατάστασης πολλαπλασιάζεται με ένα σταθερό πολυώνυμο <math>c(x)</math>.
Στο βήμα , τα τέσσερα bytes κάθε στήλης της κατάστασης συνδυάζονται χρησιμοποιώντας έναν αναστρέψιμο γραμμικό μετασχηματισμό. Η συνάρτηση   λαμβάνει τέσσερα bytes ως είσοδο και παράγει τέσσερα bytes ως έξοδο, όπου κάθε byte στην είσοδο επηρεάζει και τα τέσσερα byte εξόδου. Μαζί με το βήμα , το βήμα  κάνει τον αλγόριθμο μη προβλέψιμο.

Κατά τη διάρκεια αυτού του βήματος, κάθε στήλη μετασχηματίζεται χρησιμοποιώντας έναν σταθερό πίνακα (ο πίνακας πολλαπλασιασμένος από τα αριστερά κατά στήλη δίνει τη νέα τιμή αυτής της στήλης στην κατάσταση):

:: 
\begin{bmatrix}
b_{0,j} \\ b_{1,j} \\ b_{2,j} \\ b_{3,j}
\end{bmatrix} = \begin{bmatrix}
2 & 3 & 1 & 1 \\
1 & 2 & 3 & 1 \\
1 & 1 & 2 & 3 \\
3 & 1 & 1 & 2
\end{bmatrix} \begin{bmatrix}
a_{0,j} \\ a_{1,j} \\ a_{2,j} \\ a_{3,j}
\end{bmatrix}
\qquad 0 \le j \le 3


### Το βήμα
[δεξιά|μικρογραφία|320x320εσ|Στο βήμα , κάθε byte της κατάστασης συνδυάζεται με ένα byte του κλειδιού γύρου χρησιμοποιώντας τη λειτουργία [XOR (⊕).]]
Στο βήμα , το υποκλειδί συνδυάζεται με την κατάσταση. Για κάθε γύρο, ένα υποκλειδί προέρχεται από το κύριο κλειδί χρησιμοποιώντας το πρόγραμμα κλειδιών του Rijndael. Κάθε υποκλειδί έχει το ίδιο μέγεθος με την κατάσταση. Το υποκλειδί προστίθεται συνδυάζοντας την κατάσταση με τα αντίστοιχα bytes του υποκλειδιού χρησιμοποιώντας XOR.

### Βελτιστοποίηση του αλγορίθμου
Σε συστήματα με λέξεις των 32-bit ή περισσότερο, είναι δυνατόν να επιταχύνθει η εκτέλεση του αλγορίθμου συνδυάζοντας τα βήματα  και  με το βήμα  και μετατρέποντάς τα σε μια σειρά από πίνακες αναζήτησης. Αυτό απαιτεί τέσσερις πίνακες 32 bits με 256 καταχωρίσεις (ώστε συνολικά να καταλαμβάνουν 4096 bytes). Ένας γύρος μπορεί στη συνέχεια να εκτελεστεί με 16 αναζητήσεις πίνακα και 12 πράξεις XOR των 32-bit, ακολουθούμενες από τέσσερις πράξεις XOR των 32-bit στο βήμα .  Εναλλακτικά, η αναζήτηση στον πίνακα μπορεί να εκτελεστεί με έναν μόνο πίνακα 32 bits με 256 καταχωρίσεις (που καταλαμβάνει 1024 bytes) ακολουθούμενη από κυκλικές λειτουργίες περιστροφής.

Χρησιμοποιώντας μια προσέγγιση που χρησιμοποιεί bytes, είναι δυνατόν να συνδυαστούν τα βήματα ,  και  σε μια λειτουργία για κάθε γύρο. 

## Ασφάλεια
Η Εθνική Υπηρεσία Ασφάλειας (NSA) εξέτασε όλους τους αλογρίθμους που είχαν φτάσει στον τελικό του AES, συμπεριλαμβανομένου του Rijndael, και δήλωσε ότι όλοι ήταν αρκετά ασφαλείς για τα μη απόρρητα δεδομένα της κυβέρνησης των ΗΠΑ. Τον Ιούνιο του 2003, η κυβέρνηση των ΗΠΑ ανακοίνωσε ότι το AES θα μπορούσε να χρησιμοποιηθεί για την προστασία των απόρρητων πληροφοριών:Ο σχεδιασμός και η ισχύς όλων των βασικών μήκων κλειδιών του αλγόριθμου AES (δηλαδή 128, 192 και 256) είναι επαρκείς για την προστασία των απόρρητων πληροφοριών έως το επίπεδο ΜΥΣΤΙΚΕΣ. Οι ΑΚΡΩΣ ΑΠΟΡΡΗΤΕΣ πληροφορίες θα απαιτούν τη χρήση κλειδιών με μήκος είτε 192 είτε 256. Η εφαρμογή του AES σε προϊόντα που προορίζονται για την προστασία των συστημάτων εθνικής ασφάλειας ή/και πληροφοριών πρέπει να αναθεωρηθούν και να πιστοποιηθούν από την NSA πριν από την απόκτηση και τη χρήση τους.Το AES έχει 10 γύρους για κλειδιά 128-bit, 12 γύρους για τα κλειδιά 192-bit και 14 γύρους για τα κλειδιά των 256-bit.

### Γνωστές επιθέσεις
Για τους κρυπτογράφους, ένα κρυπτογραφικό "σπάσιμο" είναι οτιδήποτε πιο γρήγορο από μια επίθεση ωμής βίας (αγγλικά: Brute-force attack). Ένα σπάσιμο μπορεί επομένως να περιλαμβάνει αποτελέσματα που είναι αδύνατον να βρεθούν χρησιμοποιώντας την τρέχουσα τεχνολογία. Παρά το γεγονός ότι αυτό δεν είναι πρακτικό, τα θεωρητικά σπασίματα μπορούν μερικές φορές να δώσουν ιδέες για ευπάθειες. Η μεγαλύτερη δημόσια επιτυχημένη επίθεση με ωμή βία κατά ενός ευρέως εφαρμοσμένου αλγόριθμου κρυπτογράφησης δέσμης ήταν κατά ενός κλειδιού RC5 των 64 bit από το distributed.net το 2006. 

O χώρος κλειδιού αυξάνεται κατά 2 για κάθε επιπλέον bit του κλειδιού, και αν κάθε πιθανή τιμή του κλειδιού είναι ίσα πιθανή, αυτό σημαίνει τον διπλασιασμό του μέσου χρόνου αναζήτησης κλειδιού με ωμή βία για κάθε επιπλέον bit του κλειδιού. Αυτό σημαίνει ότι η προσπάθεια αναζήτησης με ωμή βία αυξάνεται εκθετικά με το μήκος του κλειδιού. Το μήκος κλειδιού από μόνο του όμως δεν σημαίνει ασφάλεια από επιθέσεις, καθώς υπάρχουν αλγόριθμοι κρυπτογράφησης που χρησιμοποιούν κλειδιά με πολύ μεγάλο μήκος, οι οποίοι έχουν διαπιστωθεί ότι είναι ευάλωτοι.

Το AES έχει ένα αρκετά απλό αλγεβρικό σκελετό. Το 2002, μια θεωρητική επίθεση, που ονομάστηκε "Επίθεση XSL", ανακοινώθηκε από τους Nicolas Courtois και Josef Pieprzyk, που υποτίθεται ότι παρουσίασε μία αδυναμία στον αλγόριθμο AES, εν μέρει λόγω της χαμηλής πολυπλοκότητας των μη γραμμικών μερών του.  Από τότε, άλλα έγγραφα έχουν δείξει ότι η επίθεση, όπως παρουσιάστηκε αρχικά, είναι αδύνατον να εφαρμοστεί.

Κατά τη διάρκεια της διαδικασίας επιλογής AES, οι προγραμματιστές των αλγόριθμων που συναγωνίζονταν έγραψαν για τον αλγόριθμο Rijndael "ανησυχούμε για τη χρήση του ... σε κρίσιμες εφαρμογές ασφάλειας". Τον Οκτώβριο του 2000, ωστόσο, στο τέλος της διαδικασίας επιλογής του AES, ο Bruce Schneier, ένας προγραμματιστής του ανταγωνιστικού αλγόριθμου Twofish, έγραψε ότι ενώ πίστευε ότι θα αναπτυχθούν κάποια μέρα επιτυχημένες ακαδημαϊκές επιθέσεις στο Rijndael, "δεν πίστευε πως κάποιος θα ανακαλύψει ποτέ μια επίθεση που θα επιτρέψει σε κάποιον να διαβάσει κυκλοφορία δεδομένων που έχουν κρυπτογραφηθεί με Rijndael".

Μέχρι το 2006, οι πιο γνωστές επιθέσεις ήταν σε 7 γύρους για τα κλειδιά των 128 bits, σε 8 γύρους σε κλειδιά των 192 bits και σε 9 γύρους στα κλειδιά των 256 bits.

Μέχρι τον Μάιο του 2009, οι μόνες επιτυχημένες δημοσιευμένες επιθέσεις κατά του πλήρους AES ήταν επιθέσεις πλευρικού καναλιού (αγγλικά: side-channel attacks) σε συγκεκριμένες εφαρμογές. Το 2009, ανακαλύφθηκε μια νέα επίθεση σχετικών κλειδιών που εκμεταλλεύεται την απλότητα του χρονοδιαγράμματος κλειδιού του AES και έχει πολυπλοκότητα 2119. Τον Δεκέμβριο του 2009 βελτιώθηκε σε 299,5. Αυτή είναι η συνέχεια μιας επίθεσης που ανακαλύφθηκε νωρίτερα το 2009 από τον Alex Biryukov, τον Dmitry Khovratovich και τον Ivica Nikolić, με πολυπλοκότητα 296 για ένα από κάθε 235 κλειδιά.  Ωστόσο, οι επιθέσεις σχετικών κλειδιών δεν αποτελούν αντικείμενο ανησυχίας σε οποιοδήποτε κατάλληλα σχεδιασμένο κρυπτογραφικό πρωτόκολλο, καθώς ένα κατάλληλα σχεδιασμένο πρωτόκολλο θα φροντίσει να μην επιτρέπει σχετικά κλειδιά, ουσιαστικά περιορίζοντας τα μέσα ενός επιτιθέμενου να επιλέγει κλειδιά με βάση τη σχετικότητα τους.

Μια ακόμη επίθεση δημοσιεύθηκε στο blog του Bruce Schneier στις 30 Ιουλίου 2009 και κυκλοφόρησε ως πρόχειρη εργασία στις 3 Αυγούστου 2009. Αυτή η νέα επίθεση, από τον Alex Biryukov, τον Orr Dunkelman, τον Nathan Keller, τον Dmitry Khovratovich και τον Adi Shamir, έχει στόχο το AES-256 που χρησιμοποιεί μόνο δύο σχετικά κλειδιά και χρόνο 239 για να ανακτήσει το πλήρες κλειδί 256 bit από μια έκδοση 9 γύρων του AES, ή χρόνο 245 για μια έκδοση 10 γύρων, ή χρόνο 270 για μια εκδοχή 11 γύρων. Το AES με μέγεθος κλειδιού 256-bit χρησιμοποιεί 14 γύρους, οπότε αυτές οι επιθέσεις δεν είναι αποτελεσματικές κατά του πλήρους AES.

Τον Νοέμβριο του 2009, η πρώτη επίθεση διάκρισης γνωστού κλειδιού κατά μίας μειωμένης έκδοσης 8 γύρων του AES-128 κυκλοφόρησε ως πρόχειρη εργασία. Αυτή η επίθεση διάκρισης γνωστού κλειδιού είναι μια βελτίωση από την επίθεση αναπήδησης (αγγλικά: rebound attack) ή την επίθεση της αρχής από το μέσο (αγγλικά: start-from-the-middle attack), ενάντια σε μεταθέσεις που μοιάζουν με αυτές του AES, οι οποίες βλέπουν δύο συνεχόμενες γύρους μετάθεσης ως την εφαρμογή ενός λεγόμενου Super-S-box. Λειτουργεί στην έκδοση 8 γύρων του AES-128, με χρονική πολυπλοκότητα 248 και μνήμη 232. Το 128-bit AES χρησιμοποιεί 10 γύρους, οπότε αυτή η επίθεση δεν είναι αποτελεσματική κατά του πλήρους AES-128.

Οι πρώτες επιθέσεις αποκατάστασης κλειδιών στο πλήρες AES από τον Andrey Bogdanov, τον Dmitry Khovratovich και τον Christian Rechberger, δημοσιεύθηκαν το 2011.  Η επίθεση είναι μια επίθεση διπλής κλίκας και είναι γρηγορότερη από την επίθεση ωμής βίας κατά περίπου τέσσερις φορές. Χρειάζονται 2126,2 ενέργειες για να ανακτηθεί ένα κλειδί AES-128. Για το AES-192 και το AES-256, απαιτούνται 2190.2 και 2254.6 ενέργειες, αντίστοιχα. Αυτό το αποτέλεσμα έχει βελτιωθεί περαιτέρω σε 2126.0 για AES-128, 2189.9 για το AES-192, και 2254.3 για το AES-256 από τον Biaoshuai Tao και τον Hongjun Wu σε μια εργασία του 2015. Αυτά είναι τα καλύτερα αποτελέσματα μέχρι τώρα στις επιθέσεις αποκατάστασης κλειδιού κατά του AES.

Αυτό είναι ένα πολύ μικρό κέρδος, καθώς ένα κλειδί των 126 bits (αντί για ένα των 128 bits) θα χρειαζόταν δισεκατομμύρια χρόνια για να βρεθεί με ωμή βία με την ισχύ του τωρινού και μελλοντικού υλικού. Επίσης, οι συγγραφείς υπολογίζουν ότι η καλύτερη επίθεση χρησιμοποιώντας την τεχνική τους στο AES με ένα κλειδί των 128 bits απαιτεί την αποθήκευση 288 bits δεδομένων. Αυτό είναι περίπου 38 τρισεκατομμύρια terabyte δεδομένων, τα οποία είναι περισσότερα από όλα τα δεδομένα που αποθηκεύονταν σε όλους τους υπολογιστές στον πλανήτη το 2016.  Ένα έγγραφο το 2015 βελτίωσε αργότερα πολυπλοκότητα χρόνου σε 256 bits,  τα οποία είναι 9007 terabytes (διατηρώντας την χρονική πολυπλοκότητα σε περίπου 2126).

Σύμφωνα με τα έγγραφα του Σνόουντεν, η NSA κάνει έρευνα για το αν μια κρυπτογραφική επίθεση που βασίζεται στη στατιστική tau μπορεί να βοηθήσει στο σπάσιμο του AES.

Αυτή τη στιγμή, δεν υπάρχει γνωστή πρακτική επίθεση που να επιτρέψει σε κάποιον χωρίς γνώση του κλειδιού να διαβάσει κρυπτογραφημένα δεδομένα από το AES όταν το AES έχει εφαρμόστει σωστά.  

### Επιθέσεις πλευρικού καναλιού
Οι επιθέσεις πλευρικού καναλιού δεν επιτίθενται στον αλγόριθμο κρυπτογράφησης αντιμετωπίζοντας τον ως ένα μαύρο κουτί, και επομένως δεν σχετίζονται με την ασφάλεια του αλγορίθμου όπως ορίζεται στο κλασικό πλαίσιο, αλλά στην πράξη είναι σημαντικές. Στόχος τους είναι εφαρμογές του αλγορίθμου σε συστήματα υλικού ή λογισμικού που ακούσια διαρρέουν δεδομένα. Υπάρχουν αρκετές τέτοιες γνωστές επιθέσεις σε διάφορες εφαρμογές του AES.

Τον Απρίλιο του 2005, ο D. J. Bernstein ανακοίνωσε μια επίθεση χρόνου κρυφής μνήμης που χρησιμοποίησε για να σπάσει έναν προσαρμοσμένο διακομιστή που χρησιμοποιούσε κρυπτογράφηση AES του OpenSSL. Η επίθεση απαιτούσε πάνω από 200 εκατομμύρια επιλεγμένα αρχικά κείμενα. Ο εξειδικευμένος διακομιστής σχεδιάστηκε για να δίνει όσο το δυνατόν περισσότερες πληροφορίες χρόνου (ο διακομιστής αναφέρει τον αριθμό των κύκλων του επεξεργαστή που χρειάστηκαν για την επιχείρηση της κρυπτογράφησης). Ωστόσο, όπως επεσήμανε ο Bernstein, "η μείωση της ακρίβειας των χρονογραφικών δεδομένων που δίνει ο διακομιστής, ή η εξάλειψή τους από τις απαντήσεις του διακομιστή, δεν μπορεί να σταματήσει την επίθεση: ο πελάτης χρησιμοποιεί απλά τους χρόνους μετ' επιστροφής με βάση το τοπικό ρολόι του, και αντισταθμίζει τον αυξημένο θόρυβο των μετρήσεων υπολογίζοντας τον μέσο όρο από μεγαλύτερο αριθμό δειγμάτων". 

Τον Οκτώβριο του 2005, ο Dag Arne Osvik, ο Adi Shamir και ο Eran Tromer παρουσίασαν μία εργασία που επιδεικνύοντας αρκετές επιθέσεις χρόνου κρυφής μνήμης κατά των υλοποιήσεων στο AES του OpenSSL και της συνάρτησης κρυπτογράφησης διαμερισμάτων του `dm-crypt` του Linux.  Μια επίθεση κατάφερε να αποκτήσει ολόκληρο κλειδί AES μετά από μόνο 800 ενέργειες κρυπτογράφησης, σε συνολικό διάστημα 65 χιλιοστών του δευτερολέπτου. &nbsp;Αυτή η επίθεση απαιτεί από τον επιτιθέμενο να είναι σε θέση να εκτελέσει προγράμματα στο ίδιο σύστημα ή πλατφόρμα που εκτελεί το AES.

Τον Νοέμβριο του 2010 ο Endre Bangerter, ο David Gullasch και ο Stephan Krenn δημοσίευσαν μια εργασία που περιέγραφε μια πρακτική προσέγγιση για την "σχεδόν πραγματικού χρόνου" ανάκτηση μυστικών κλειδιών από το AES-128 χωρίς την ανάγκη απόκτησης κρυπτογραφημένου κείμενου ή αρχικού κειμένου. Η προσέγγιση αυτή λειτουργεί επίσης και σε εφαρμογές του AES-128 που χρησιμοποιούν πίνακες συμπίεσης, όπως το OpenSSL.  Όπως και μερικές προηγούμενες επιθέσεις, αυτή απαιτεί την ικανότητα εκτέλεσης μη προνομιούχου κώδικα στο σύστημα που εκτελεί την κρυπτογράφηση AES, η οποία μπορεί να επιτευχθεί με μόλυνση από κακόβουλο λογισμικό πολύ πιο εύκολα από την απόκτηση δικαιωμάτων root. 

Τον Μάρτιο του 2016, ο C. Ashokkumar, ο Ravi Prakash Giri και ο Bernard Menezes παρουσίασαν μια επίθεση πλευρικού κανάλιού σε εφαρμογές AES, η οποία μπορεί να ανακτήσει το πλήρες κλειδί του AES-128 με μόλις 6-7 μπλοκ αρχικού κειμένου ή κρυπτογραφημένου κειμένου, το οποίο είναι μια σημαντική βελτίωση σε σχέση με προηγούμενες εργασίες που απαιτούσαν μεταξύ 100 και ένα εκατομμύριο ενέργειες κρυπτογράφησης.  Η προτεινόμενη επίθεση απαιτεί κανονικά δικαιώματα χρήστη και αλγορίθμους αναζήτησης κλειδιών που εκτελούνται σε λιγότερο από ένα λεπτό.

Πολλοί σύγχρονοι επεξεργαστές έχουν ενσωματωμένες οδηγίες για το AES, οι οποίες τους προστατεύουν από επιθέσεις πλευρικού καναλιού που σχετίζονται με το χρόνο.

### Κβαντικές επιθέσεις
Το AES-256 θεωρείται ανθεκτικό σε κβαντικές επιθέσεις δεδομένου ότι έχει παρόμοια κβαντική αντίσταση με αυτή του AES-128 κατά των παραδοσιακών, μη κβαντικών επιθέσεων σε 128 bits ασφαλείας. Τα AES-192 και AES-128 δεν θεωρούνται κβαντικά ανθεκτικά λόγω των μικρότερων μεγεθών των κλειδιών τους. Το AES-192 έχει 96 bits ασφάλειας κατά των κβαντικών επιθέσεων και το AES-128 έχει 64 bits ασφάλειας κατά των κβαντικών επίθεσεων, καθιστώντας και τα δύο μη ασφαλή.

## Απόδοση
Οι απαιτήσεις υψηλής ταχύτητας και χαμηλής RAM ήταν μερικά από τα κριτήρια της διαδικασίας επιλογής AES. Ως ο επιλεγμένος αλγόριθμος, το AES λειτούργησε καλά σε μια μεγάλη ποικιλία υλικού, από έξυπνες κάρτες των 8 bit μέχρι και σε υψηλής απόδοσης υπολογιστές.

Σε έναν Pentium Pro, η κρυπτογράφηση AES απαιτεί 18 κύκλους ρολογιού ανά byte (cpb),  ισοδύναμη με μια απόδοση περίπου 11&nbsp;MiB/s για έναν επεξεργαστή των 200&nbsp;MHz.

Σε επεξεργαστές Intel Core και AMD Ryzen που υποστηρίζουν επεκτάσεις συνόλων οδηγιών AES-NI, η απόδοση μπορεί να είναι πολλά GiB ανά δευτερόλεπτο.  Σε έναν επεξεργαστή Intel Westmere, η κρυπτογράφηση AES χρησιμοποιώντας AES-NI απαιτεί περίπου 1,3 cpb για το AES-128 και 1,8 cpb για το AES-256.

## Παραπομπές

Κατηγορία:Κρυπτογραφία