13Jul

Πώς οι υπολογιστές παράγουν τυχαίους αριθμούς

Οι υπολογιστές

ζάρια-τυχαίους αριθμούς

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

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

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

Τι τυχαίοι αριθμοί χρησιμοποιούνται για

Οι τυχαίοι αριθμοί έχουν χρησιμοποιηθεί για πολλά χιλιάδες χρόνια.Είτε πρόκειται για ένα κέρμα είτε για ένα ζάρια, ο στόχος είναι να αφήσετε το τελικό αποτέλεσμα μέχρι τυχαία ευκαιρία.Οι τυχαίες γεννήτριες αριθμών σε έναν υπολογιστή είναι παρόμοιες - είναι μια προσπάθεια να επιτευχθεί ένα απρόβλεπτο, τυχαίο αποτέλεσμα.

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

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

βίντεο-πόκερ-τυχερά παιχνίδια-τυχαία

True Random Numbers

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

Ομαδοποιούμε γενικά τους τυχαίους αριθμούς που παράγουν οι υπολογιστές σε δύο τύπους, ανάλογα με τον τρόπο που παράγονται: "Αληθινά" τυχαίοι αριθμοί και ψευδοτυχαίοι αριθμοί.

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

Για ένα πιο καθημερινό παράδειγμα, ο υπολογιστής θα μπορούσε να βασιστεί στον ατμοσφαιρικό θόρυβο ή απλά να χρησιμοποιήσει την ακριβή ώρα που πατάτε τα πλήκτρα του πληκτρολογίου σας ως πηγή απρόβλεπτων δεδομένων ή εντροπίας.Για παράδειγμα, ο υπολογιστής σας μπορεί να παρατηρήσει ότι πατήσατε ένα πλήκτρο ακριβώς 0.23423523 δευτερόλεπτα μετά τις 2 μ.μ. . Αρπάξτε αρκετούς από τους συγκεκριμένους χρόνους που σχετίζονται με αυτά τα πλήκτρα και θα έχετε μια πηγή εντροπίας που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε ένα "αληθινό" τυχαίοαριθμός.Δεν είστε ένα προβλέψιμο μηχάνημα, οπότε ένας εισβολέας δεν μπορεί να μαντέψει την ακριβή στιγμή που πατάτε αυτά τα πλήκτρα.Η τυχαία συσκευή /dev/ στο Linux, η οποία παράγει τυχαίους αριθμούς, "μπλοκάρει" και δεν επιστρέφει αποτέλεσμα μέχρι να συγκεντρώσει αρκετή εντροπία για να επιστρέψει έναν πραγματικά τυχαίο αριθμό.

linux-generate-random-data

Ψευδοτυχαίοι αριθμοί

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

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

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

ψευδοτυχαίων αριθμών

Το NSA και η γεννήτρια τυχαίων αριθμών υλικού της Intel

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

Το πρόβλημα εδώ είναι ότι η γεννήτρια τυχαίων αριθμών είναι ουσιαστικά ένα μαύρο κιβώτιο και δεν ξέρουμε τι συμβαίνει μέσα σε αυτό.Εάν το RdRand περιείχε ένα backdoor NSA, η κυβέρνηση θα ήταν σε θέση να σπάσει τα κλειδιά κρυπτογράφησης που δημιουργήθηκαν μόνο με δεδομένα που παρέχονται από αυτή τη γεννήτρια τυχαίων αριθμών.

Πρόκειται για σοβαρή ανησυχία.Τον Δεκέμβριο του 2013, οι προγραμματιστές του FreeBSD απομάκρυναν την υποστήριξη για τη χρήση του RdRand απευθείας ως πηγή τυχαιότητας, λέγοντας ότι δεν μπορούσαν να το εμπιστεύονται.[Source] Η έξοδος της συσκευής RdRand θα τροφοδοτείται σε έναν άλλο αλγόριθμο που προσθέτει πρόσθετη εντροπία, εξασφαλίζοντας ότι οποιαδήποτε backdoors στη γεννήτρια τυχαίων αριθμών δεν θα είχε σημασία.Το Linux έχει ήδη εργαστεί με αυτόν τον τρόπο, τυχαιοποιώντας τα τυχαία δεδομένα που προέρχονται από το RdRand, έτσι ώστε να μην είναι προβλέψιμο ακόμα και αν υπήρχε backdoor.[Source] Σε μια πρόσφατη AMA( "Ask Me Anything") στην Reddit, ο Διευθύνων Σύμβουλος της Intel, Brian Krzanich, δεν απάντησε σε ερωτήσεις σχετικά με αυτές τις ανησυχίες.[Source]

Φυσικά, αυτό πιθανό δεν είναι μόνο ένα πρόβλημα με τα μάρκες της Intel.Οι προγραμματιστές του FreeBSD ονόμασαν επίσης τις μάρκες της Via.Αυτή η διαμάχη δείχνει γιατί η δημιουργία τυχαίων αριθμών που είναι πραγματικά τυχαίοι και δεν είναι προβλέψιμοι είναι τόσο σημαντικός.

intel

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

Πιστωτική Εικόνα: rekre89 στο Flickr, Lisa Brewster στο Flickr, Ryan Somma στο Flickr, huangjiahui στο Flickr