Οι **κρυπτογραφικοί αλγόριθμοι ροής (stream ciphers)** χρησιμοποιούνται για την κρυπτογράφηση μίας συνεχούς ροής δεδομένων (data stream). Για την κρυπτογράφηση επιλέγεται αρχικά μία *γεννήτρια κλειδοροής (keystream generator)*, η οποία δέχεται ως είσοδο το μυστικό κλειδί και παράγει στην έξοδό της μία ψευδοτυχαία ακολουθία bits, η οποία ονομάζεται κλειδοροή (keystream). Στην συνέχεια εφαρμόζεται η συνάρτηση XOR ανάμεσα στο αρχικό κείμενο και στην κλειδοροή και το αποτέλεσμα της συνάρτησης είναι η τελική κρυπτογραφημένη ροή δεδομένων. Η διαδικασία που μόλις περιγράφηκε φαίνεται πιο καθαρά στο σχήμα που παρατίθεται.

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

Για να είναι ασφαλής ο κρυπτογραφικός αλγόριθμος ροής, θα πρέπει να πληρούνται ορισμένες προϋποθέσεις όσον αφορά την γεννήτρια κλειδοροής και την ψευδοτυχαία ακολουθία bits που αυτή παράγει. Συγκεκριμένα η ασφάλεια του αλγορίθμου εξαρτάται από τις εξής παραμέτρους:

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

* **Η ακολουθία bits της κλειδοροής θα πρέπει να μοιάζει πολύ με τυχαία.** Αυτό σημαίνει ότι η μαθηματική συνάρτηση που χρησιμοποιείται στην γεννήτρια κλειδοροής θα πρέπει να επιλεγεί κατάλληλα ούτως ώστε το αποτέλεσμά της να πλησιάζει όσο το δυνατόν περισσότερο το τυχαίο. Υπάρχουν ειδικές μέθοδοι δοκιμής της καταλληλότητας της γεννήτριας κλειδοροής, οι οποίοι εκπονούν ελέγχους τυχαιότητας (randomness tests) σε αυτήν. Ένας έλεγχος τυχαιότητας είναι για παράδειγμα ο εξής: Για μία κλειδοροή μήκους εκατομμυρίων bits, θα πρέπει ο αριθμός των 1 να ισούται με τον αριθμό των 0. Επίσης θα πρέπει κάθε 0 να ακολουθείται από 1 τόσο συχνά όσο και το αντίστροφο. Σε κάθε περίπτωση όμως η κλειδοροή που θα παραχθεί δεν μπορεί να είναι εντελώς τυχαία, γι' αυτό και ονομάζεται ψευδοτυχαία ακολουθία bits.

* **Η κλειδοροή θα πρέπει να έχει μεγάλη γραμμική ισοδυναμία (linear equivalence).** Οποιαδήποτε ακολουθία δυαδικών ψηφίων μπορεί να παραχθεί με χρήση γραμμικών μεθόδων, για παράδειγμα με υπολογισμό της επόμενης τιμής βάσει των προηγούμενων τιμών της ακολουθίας. Αν στον υπολογισμό αυτό χρησιμοποιείται ένας μικρός σχετικά αριθμός προηγούμενων τιμών, τότε λέμε πως η ακολουθία έχει μικρή γραμμική ισοδυναμία. Αντίθετα εάν στο υπολογισμό χρησιμοποιείται ένας μεγάλος αριθμός προηγούμενων τιμών, τότε η ακολουθία έχει μεγάλη γραμμική ισοδυναμία. Μία κλειδοροή με μεγάλη γραμμική ισοδυναμία εγγυάται μεγαλύτερη ασφάλεια των κρυπτογραφημένων δεδομένων απέναντι σε προσπάθειες κρυπτανάλυσης.

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

Η κρυπτογράφηση με αλγόριθμους ροής είναι σχετικά γρήγορη αφού η κρυπτογράφηση και η αποκρυπτογράφηση είναι σχετικά απλές διαδικασίες, ενώ πλέον έχουν κατασκευαστεί γεννήτριες κλειδοροών που είναι ασφαλείς και λειτουργούν σε αρκετά μεγάλες ταχύτητες. Υπάρχουν ακόμη και συσκευές (hardware) με την μορφή chip που υλοποιούν τις διαδικασίες κρυπτογράφησης και αποκρυπτογράφησης σε ιδιαίτερα υψηλές ταχύτητες. Τέτοια chip χρησιμοποιούνται κυρίως σε κινητά τηλέφωνα και σε άλλες συσκευές ασύρματης επικοινωνίας.

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

Δείτε Επίσης
------------

* Σημειωματάριο μιας χρήσης
* Κρυπτογραφικοί Αλγόριθμοι Δέσμης