Αναφορά για πιθανό σφάλμα στη γεννήτρια τυχαίων αριθμών των επεξεργαστών AMD
Πρωτότυπος τίτλος: "AMD's random number generator can't generate a 0?" (από BruceEel)
Μια συζήτηση στην κοινότητα του flat assembler αναδεικνύει μια ασυνέπεια στους επεξεργαστές AMD, όπου οι εντολές RDRAND και RDSEED φαίνεται να αδυνατούν να παράγουν την τιμή μηδέν (0) σε συγκεκριμένα μεγέθη καταχωρητών. Το ζήτημα εγείρει ερωτήματα σχετικά με την αξιοπιστία του hardware-based entropy και την ποιότητα των ενσωματωμένων γεννητριών τυχαίων αριθμών.
Το ζήτημα της παραγωγής τυχαίων αριθμών στο hardware
Η πρόσφατη αναφορά από μέλος της κοινότητας του flat assembler (fasm) φέρνει στο φως μια ενδιαφέρουσα αρχιτεκτονική ιδιαιτερότητα. Κατά τη διάρκεια υλοποίησης εφαρμογών σε assembly, διαπιστώθηκε ότι οι επεξεργαστές AMD (πιθανώς από τη γενιά Zen 2 και μετά) παρουσιάζουν μια στατιστική ανωμαλία: οι εντολές RDRAND και RDSEED αποτυγχάνουν να παράγουν την τιμή 0 όταν το ζητούμενο μέγεθος είναι 16-bit. Αντίθετα, οι επεξεργαστές Intel εμφανίζουν κανονική κατανομή, συμπεριλαμβανομένου του μηδενός.
Τεχνικές προεκτάσεις και workaround
Ο ερευνητής διαπίστωσε ότι το πρόβλημα δεν είναι απόλυτο, καθώς η ανάγνωση σε 32-bit ή 64-bit καταχωρητές επιτρέπει την εμφάνιση του μηδενός στα χαμηλότερα bits. Αυτό υποδηλώνει ότι το ζήτημα ενδέχεται να εντοπίζεται στη λογική του post-processing ή του masking που εφαρμόζει το hardware πριν την επιστροφή της τιμής στον καταχωρητή.
Η σημασία της εμπιστοσύνης στο hardware
Η συζήτηση επεκτάθηκε γρήγορα στη φιλοσοφία του "trusted hardware". Πολλοί μηχανικοί υποστηρίζουν ότι η χρήση hardware-based entropy χωρίς επιπλέον επίπεδα μίξης (mixing) από software πηγές εντροπίας αποτελεί ρίσκο. Σε κρυπτογραφικές εφαρμογές, η εξάρτηση αποκλειστικά από μια εντολή CPU θεωρείται επισφαλής, καθώς τυχόν flaws στην υλοποίηση του hardware (όπως το προαναφερθέν bias) μπορούν να μειώσουν δραματικά τον χώρο αναζήτησης σε επιθέσεις brute force.
Συμπεράσματα για την ανάπτυξη συστημάτων
Το περιστατικό υπογραμμίζει την ανάγκη για ενδελεχή έλεγχο (validation) των low-level primitives που χρησιμοποιούμε. Αν και η AMD δεν έχει δώσει ακόμη επίσημη τεχνική εξήγηση, η κοινότητα προτείνει την υιοθέτηση αμυντικών πρακτικών: ποτέ μην εμπιστεύεστε τυφλά μια μεμονωμένη πηγή εντροπίας, ειδικά όταν αυτή προέρχεται από κλειστά κυκλώματα hardware.
Ανακαλύψτε καινοτόμα open-source εργαλεία και κρυμμένα διαμάντια ανοιχτού κώδικα.