Στοιχεία Θεωρίας Αριθμών Και Εφαρμογές Στην Κρυπτογραφία Linux Random Number Generator Επιμέλεια Διαφανειών : Ι. Κατσάτος ΦΕΒΡΟΥΑΡΙΟΣ 2013 ΑΘΗΝΑ
Ορισμός: Τυχαίοι Αριθμοί Συχνά στην καθομιλουμένη, ο κόσμος χρησιμοποιεί τον όρο τυχαίος ενώ στην πραγματικότητα εννοεί αυθαίρετος. Όταν ζητάμε έναν αυθαίρετο αριθμό σχεδόν κάθε αριθμός μας κάνει. Σε αντιπαραβολή, ένας τυχαίος αριθμός είναι μια οριζόμενη με ακρίβεια μαθηματική έννοια: κάθε αριθμός θα πρέπει να έχει την ίδια πιθανότητα εμφάνισης.
Το Πρόβλημα Έστω a και b με a < b δύο ακέραιοι αριθμοί. Όπως ξέρουμε η γραμμή κώδικα σε γλώσσα C που ακολουθεί, επιστρέφει έναν ακέραιο αριθμό (y) που επιλέγεται τυχαία στο διάστημα a y b. y = rand() % b + a Ερώτημα: Είναι δυνατό ένας αλγόριθμος να παράγει τυχαίους αριθμούς;
Το Πρόβλημα Απάντηση: ΌΧΙ! Δεν υπάρχει τρόπος να παράγουμε, πραγματικά τυχαίους αριθμούς σε έναν υπολογιστή (ή σε οποιαδήποτε ντετερμινιστική συσκευή). Το καλύτερο που μπορούμε να κάνουμε είναι να παράγουμε ψευδοτυχαίους αριθμούς: δεν είναι πραγματικά τυχαίοι αριθμοί, αλλά μπορούν να χρησιμεύσουν σαν προσεγγίσεις στους τυχαίους. Για το λόγο αυτό χρησιμοποιούνται γεννήτριες ψευδοτυχαίων αριθμών.
Εφαρμογές Με Τυχαίους Αριθμόυς Σε παιχνίδια που εμπεριέχουν τύχη. Για παραγωγή passwords. Η τυχαιότητα είναι ένας βασικός πόρος για την Κρυπτογραφία και συνεπώς οι γεννήτριες ψευδοτυχαίων αριθμών είναι συστατικά κρίσιμης σημασίας για όλα σχεδόν τα συστήματα κρυπτογραφίας.
Linux Random Number Generator (LRNG) Ιδιότητες γεννητριών ψευδοτυχαίων αριθμών Βασική δομή της LRNG Πως εισάγεται η τυχαιότητα; Συλλογή Εντροπίας Δεξαμενές και Μετρητές Εκτίμησης Εντροπίας Ενημέρωση των δεξαμενών Εντροπίας Εξαγωγή τυχαίων Bits Παραβίαση της Προς Τα Εμπρός Ασφάλειας
Ιδιότητες Γεννητριών Ψευδοτυχαίων Αριθμών Ψευδοτυχαιότητα: Η έξοδος της γεννήτριας πρέπει να φαίνεται τυχαία σε έναν εξωτερικό παρατηρητή. Forward Security: Ένας αντίπαλος που μαθαίνει την εσωτερική κατάσταση της γεννήτριας σε μία συγκεκριμένη χρονική στιγμή δεν μπορεί να μάθει τίποτα για τις προηγούμενης εξόδους της γεννήτριας. Backward Security: Ένας αντίπαλος που μαθαίνει την εσωτερική κατάσταση της γεννήτριας σε μία συγκεκριμένη χρονική στιγμή δεν μπορεί να μάθει τίποτα για τις μελλοντικές εξόδους της γεννήτριας
Η Βασική Δομή Της LRNG Η LRNG μπορεί να περιγραφεί από τρία ασύγχρονα συστατικά: Μετατροπή των System Events σε bits αναπαράστασης της υποκείμενης Εντροπίας. Προσθήκη των bits Εντροπίας στην δεξαμενή Εντροπίας της γεννήτριας. Έξοδος τυχαίων bits.
Η Βασική Δομή Της LRNG
Πως εισάγεται η τυχαιότητα; Η εντροπία προστίθεται στην γεννήτρια από τέσσερις διαφορετικές φυσικές πηγές: Δραστηριότητα ποντικιού Δραστηριότητα πληκτρολογίου Λειτουργίες Ι/Ο των δίσκων Διακοπές του συστήματος
Συλλογή Εντροπίας Κάθε System Event παράγει δύο 32-bits λέξεις οι οποίες εισάγονται στην δεξαμενή Εντροπίας της γεννήτριας. Η πρώτη λέξη αναπαριστά τον χρονισμό του γεγονότος (π.χ milliseconds από την ώρα που εκκίνησε την λειτουργία ο Η/Υ). Η δεύτερη λέξη αναπαριστά τον τύπο του Event ο οποίος υπολογίζεται διαφορετικά για την κάθε φυσική πηγή εντροπίας.
Συλλογή Εντροπίας
Δεξαμενές Και Μετρητές Εντροπίας Η εσωτερική κατάσταση της γεννήτριας φυλάσσεται σε τρείς δεξαμενές εντροπίας: Primary με μέγεθος 512 Bytes Secondary με μέγεθος 128 Bytes Urandom με μέγεθος 128 Bytes
Δεξαμενές Και Μετρητές Εντροπίας Κάθε δεξαμενή έχει τον δικό της Μετρητή Εκτίμησης Εντροπίας (ΜΕΕ). Οι ΜΕΕ είναι ακέραιες τιμές μεταξύ του μηδενός και του μεγέθους της δεξαμενής, σε bits, οι οποίοι δείχνουν την τρέχουσα εντροπία της εκάστοτε δεξαμενής. Οι ΜΕΕ μειώνονται ανάλογα με τον αριθμό των bits που εξάγονται από την δεξαμενή που περιγράφουν.
Δεξαμενές Και Μετρητές Εντροπίας Η αύξηση των ΜΕΕ είναι μια πιο πολύπλοκη διαδικασία. Αν τα bits που προστίθενται στην δεξαμενή προέρχονται από κάποια άλλη δεξαμενή, τότε ο ΜΕΕ της αρχικής δεξαμενής μειώνεται ανάλογα με τον αριθμό των μεταφερόμενων bits. Ενώ, ο ΜΕΕ της δεξαμενής προορισμού αυξάνεται αντίστοιχα με τον αριθμό των bits που προστίθενται σε αυτήν.
Δεξαμενές Και Μετρητές Εντροπίας
Δεξαμενές Και Μετρητές Εντροπίας
Ενημέρωση Των Δεξαμενών Εντροπίας Η προκαθορισμένη λειτουργία εισαγωγής Εντροπίας στην γεννήτρια είναι: Προσθήκη Εντροπίας στην primary δεξαμενή Αν η primary δεξαμενή είναι γεμάτη (δηλ ΜΕΕ 4096), η Εντροπία προστίθεται στην Secondary δεξαμενή. Όταν η Secondary δεξαμενή είναι γεμάτη, η διεργασία επιστρέφει στην primary δεξαμενή. Ποτέ δεν εισάγεται Εντροπία απευθείας στην δεξαμενή urandom.
Ενημέρωση Των Δεξαμενών Εντροπίας
Ενημέρωση Των Δεξαμενών Εντροπίας
Ενημέρωση Των Δεξαμενών Εντροπίας
Έξοδος Τυχαίων Bits Τυχαία bits εξάγονται από μια εκ των τριών δεξαμενών : urandom: όταν χρήστης χρησιμοποιεί την συσκευή /den/urandom και ο πυρήνας του λειτουργικού την κλήση get_random_bytes. Secondary: όταν ο χρήστης χρησιμοποιεί την συσκευή /dev/random ( ΜΜΕ μπλοκάρει έξοδο bits αν η δεξαμενή δεν έχει αρκετή εντροπία). Primary: όταν μια εκ των δύο άλλων δεν έχει αρκετή εντροπία.
Έξοδος Τυχαίων Bits Η διαδικασία εξαγωγής τυχαίων bits από την γεννήτρια περιλαμβάνει τρία βήματα: Ενημέρωση των δεδομένων της δεξαμενής Εξαγωγή τυχαίων Bits (10 Bytes) Μείωση του ΜΕΕ της δεξαμενής
Έξοδος Τυχαίων Bits Περιγραφή αλγορίθμου Extract, για urandom και secondary (μήκους 32 λέξεων): Εφαρμόζει την συνάρτηση Κατακερματισμού SHA-1 στις πρώτες 16 λέξεις. Προσθέτει μέρος (για την ακρίβεια την λέξη 0) του προηγούμενου αποτελέσματος (μήκους 5 λέξεων) στην θέση j. Εφαρμόζει την SHA-1 στις υπόλοιπες 16 λέξεις της δεξαμενής. Προσθέτει μέρος (τις λέξεις 2 και 4) του προηγούμενου αποτελέσματος στις θέσεις j-1 και j-2. Εφαρμόζει την συνάρτηση κατακερματισμού SHA-1 στις 16 λέξεις μέχρι της j-2.
Έξοδος Τυχαίων Bits Χρησιμοποιούμε το προηγούμενο αποτέλεσμα για να υπολογίσουμε την έξοδο ως εξής: Αναδιπλώνεται το αποτέλεσμα των 5 λέξεων (των 20 bytes), ώστε να προκύψει το αποτέλεσμα εξόδου των 10 bytes. Τα 10bytes εξόδου αντιγράφονται στον buffer προορισμού και ενημερώνεται ο αριθμός των bytes που πρέπει ακόμη να εξαχθούν. Ο βρόχος επαναλαμβάνεται μέχρι να εξαχθεί ο αριθμός των bytes που έχουν ζητηθεί.
Έξοδος Τυχαίων Bits
Έξοδος Τυχαίων Bits Παρουσιάζεται ο τρόπος με τον οποίον γίνεται η αναδίπλωση των 20 bytes σε 10 bytes.
Έξοδος Τυχαίων Bits
Παραβίαση Της Προς Τα Εμπρός Ασφάλειας
Παραβίαση Της Προς Τα Εμπρός Ασφάλειας