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

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

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

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

Για ποιους τυχαίους αριθμούς χρησιμοποιούνται

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

ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Τι είναι η κρυπτογράφηση και πώς λειτουργεί;

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

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

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

Αληθινοί τυχαίοι αριθμοί

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

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

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

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

linux-create-random-data

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

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

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

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

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

Η γεννήτρια τυχαίων αριθμών NSA και Intel

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

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

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

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

πληροφορίες

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

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