Ένα προφίλ VPN προσφέρει Blowfish με κλειδί 448 bit, και κάποιος προτείνει να χρησιμοποιηθεί το μακρύτερο κλειδί για να διατηρηθεί ο κρυπταλγόριθμος. Το μήκος του κλειδιού είναι πραγματικό, αλλά είναι ο λάθος αριθμός προς βελτιστοποίηση. Το Blowfish μετασχηματίζει μπλοκ 64 bit ανεξάρτητα από το μήκος του κλειδιού, και το πλάτος του μπλοκ είναι αυτό που περιορίζει πόση κίνηση μπορεί ένα κλειδί να προστατεύσει με ασφάλεια. Εκτελέστε τους παρακάτω ελέγχους με τη σειρά και σταματήστε στον πρώτο που απαλλάσσει την υπηρεσία, γιατί ένα επόμενο βήμα δεν μπορεί να διορθώσει ένα προηγούμενο.

Ελέγξτε τι διαπραγματεύονται πραγματικά οι ομότιμοι

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

Αν ο διαπραγματευμένος κρυπταλγόριθμος είναι AES-GCM ή ChaCha20-Poly1305, σταματήστε εδώ. Αυτές οι κατασκευές χρησιμοποιούν μπλοκ 128 bit και πιστοποιούν το φορτίο, οπότε το επιχείρημα σύγκρουσης 64 bit παρακάτω δεν ισχύει για αυτές.

Διαχωρίστε το μήκος κλειδιού από το πλάτος του μπλοκ

Το Blowfish δέχεται κλειδιά από 32 έως 448 bit, και η τεκμηρίωση του συγγραφέα του αλγορίθμου παραθέτει και τους δύο αριθμούς ξεχωριστά. Το κλειδί είναι το μυστικό, το μπλοκ είναι η μονάδα μετασχηματισμού. Ένα μακρύτερο μυστικό κάνει τη μαντεψιά δυσκολότερη και δεν κάνει τίποτα στο πλάτος του μπλοκ που επεξεργάζεται ο κρυπταλγόριθμος.

Στη λειτουργία CBC ο κρυπταλγόριθμος εφαρμόζεται σε μπλοκ σταθερού πλάτους, αλυσωμένα με το προηγούμενο μπλοκ κρυπτοκειμένου και συμπληρωμένα στο τέλος. Για το Blowfish αυτό το πλάτος είναι 64 bit, δηλαδή οκτώ byte. Το πρόγραμμα κλειδιών μπορεί να είναι όσο μεγάλο θέλετε, η αλυσίδα προχωρά πάντως οκτώ byte κάθε φορά.

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

Εφαρμόστε την αριθμητική γενεθλίων στο μέγεθος του μπλοκ

Ένα μπλοκ 64 bit έχει κλίμακα γενεθλίων περίπου 2^32 μπλοκ κρυπτογραφημένων με ένα κλειδί προτού οι συγκρούσεις γίνουν πιθανές. Κάθε μπλοκ φέρει οκτώ byte, άρα η ίδια κλίμακα είναι περίπου 2^35 byte, ή 32 GiB δεδομένων με ένα κλειδί.

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

Οι ερευνητές του Sweet32 έδειξαν το 2016 πρακτικές επιθέσεις σε κρυπταλγόριθμους μπλοκ 64 bit, συμπεριλαμβανομένου ενός σεναρίου OpenVPN, υπό συνθήκες που απαιτούσαν παρατήρηση και παραγωγή κίνησης. Οι δημοσιευμένες προεπιλογές και εκδόσεις λογισμικού τους είναι ιστορικό πλαίσιο, όχι περιγραφή της δικής σας ανάπτυξης.

Αποφασίστε αν η επαναχρησιμοποίηση CBC έχει σημασία εδώ

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

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

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

Αντικαταστήστε τον κρυπταλγόριθμο, όχι το κλειδί

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

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

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

Σχετικά άρθρα