Στο παρελθόν, τα πιστοποιητικά έληγαν συχνά επειδή έπρεπε να ανανεωθούν χειροκίνητα. Οι άνθρωποι απλά ξέχασαν να το κάνουν. Με την εμφάνιση του Let's Encrypt και τη διαδικασία αυτόματης ενημέρωσης, φαίνεται ότι το πρόβλημα πρέπει να λυθεί. Πρόσφατο όμως
Σε περίπτωση που χάσατε την ιστορία, τα μεσάνυχτα της 4ης Μαΐου 2019, σχεδόν όλες οι επεκτάσεις του Firefox σταμάτησαν ξαφνικά να λειτουργούν.
Όπως αποδείχθηκε, η τεράστια αποτυχία συνέβη λόγω του γεγονότος ότι η Mozilla
Η Mozilla κυκλοφόρησε γρήγορα την ενημερωμένη έκδοση κώδικα Firefox 66.0.4, η οποία λύνει το πρόβλημα με ένα μη έγκυρο πιστοποιητικό και όλες οι επεκτάσεις επανέρχονται στο κανονικό. Οι προγραμματιστές συνιστούν την εγκατάσταση και
Ωστόσο, αυτή η ιστορία για άλλη μια φορά δείχνει ότι η λήξη του πιστοποιητικού παραμένει ένα πιεστικό ζήτημα σήμερα.
Από αυτή την άποψη, είναι ενδιαφέρον να δούμε έναν μάλλον πρωτότυπο τρόπο με τον οποίο οι προγραμματιστές πρωτοκόλλων αντιμετώπισαν αυτήν την εργασία
DNSCrypt
Το DNSCrypt είναι ένα πρωτόκολλο κρυπτογράφησης κυκλοφορίας DNS. Προστατεύει τις επικοινωνίες DNS από υποκλοπές και MiTM και σας επιτρέπει επίσης να παρακάμπτετε τον αποκλεισμό σε επίπεδο ερωτήματος DNS.
Το πρωτόκολλο αναδιπλώνει την κυκλοφορία DNS μεταξύ πελάτη και διακομιστή σε μια κρυπτογραφική κατασκευή, που λειτουργεί μέσω των πρωτοκόλλων μεταφοράς UDP και TCP. Για να το χρησιμοποιήσετε, τόσο ο πελάτης όσο και ο αναλυτής DNS πρέπει να υποστηρίζουν DNSCrypt. Για παράδειγμα, από τον Μάρτιο του 2016, έχει ενεργοποιηθεί στους διακομιστές DNS και στο πρόγραμμα περιήγησης Yandex. Αρκετοί άλλοι πάροχοι έχουν επίσης ανακοινώσει υποστήριξη, συμπεριλαμβανομένων των Google και Cloudflare. Δυστυχώς, δεν υπάρχουν πολλοί από αυτούς (152 δημόσιοι διακομιστές DNS παρατίθενται στον επίσημο ιστότοπο). Αλλά το πρόγραμμα
Πώς λειτουργεί το DNSCrypt; Εν ολίγοις, ο πελάτης παίρνει το δημόσιο κλειδί του επιλεγμένου παρόχου και το χρησιμοποιεί για να επαληθεύσει τα πιστοποιητικά του. Τα βραχυπρόθεσμα δημόσια κλειδιά για τη συνεδρία και το αναγνωριστικό της σουίτας κρυπτογράφησης είναι ήδη εκεί. Οι πελάτες ενθαρρύνονται να δημιουργούν ένα νέο κλειδί για κάθε αίτημα και οι διακομιστές ενθαρρύνονται να αλλάζουν κλειδιά κάθε 24 ώρες. Κατά την ανταλλαγή κλειδιών, χρησιμοποιείται ο αλγόριθμος X25519, για υπογραφή - EdDSA, για κρυπτογράφηση μπλοκ - XSalsa20-Poly1305 ή XChaCha20-Poly1305.
Ένας από τους προγραμματιστές πρωτοκόλλου Frank Denis
Πρώτον, είναι εξαιρετικά χρήσιμο για την ασφάλεια: εάν ο διακομιστής έχει παραβιαστεί ή το κλειδί έχει διαρρεύσει, τότε η κίνηση του χθες δεν μπορεί να αποκρυπτογραφηθεί. Το κλειδί έχει ήδη αλλάξει. Αυτό πιθανότατα θα δημιουργήσει πρόβλημα για την εφαρμογή του νόμου Yarovaya, ο οποίος υποχρεώνει τους παρόχους να αποθηκεύουν όλη την κίνηση, συμπεριλαμβανομένης της κρυπτογραφημένης κίνησης. Το συμπέρασμα είναι ότι μπορεί αργότερα να αποκρυπτογραφηθεί εάν είναι απαραίτητο ζητώντας το κλειδί από τον ιστότοπο. Αλλά σε αυτήν την περίπτωση, ο ιστότοπος απλά δεν μπορεί να το παρέχει, επειδή χρησιμοποιεί βραχυπρόθεσμα κλειδιά, διαγράφοντας τα παλιά.
Αλλά το πιο σημαντικό, γράφει ο Denis, τα βραχυπρόθεσμα κλειδιά αναγκάζουν τους διακομιστές να ρυθμίσουν την αυτοματοποίηση από την πρώτη μέρα. Εάν ο διακομιστής συνδεθεί στο δίκτυο και τα σενάρια αλλαγής κλειδιού δεν έχουν ρυθμιστεί ή δεν λειτουργούν, αυτό θα εντοπιστεί αμέσως.
Όταν ο αυτοματισμός αλλάζει τα κλειδιά κάθε λίγα χρόνια, δεν μπορεί να βασιστεί σε αυτό και οι άνθρωποι μπορούν να ξεχάσουν τη λήξη του πιστοποιητικού. Εάν αλλάζετε τα πλήκτρα καθημερινά, αυτό θα εντοπιστεί αμέσως.
Ταυτόχρονα, εάν ο αυτοματισμός έχει ρυθμιστεί κανονικά, τότε δεν έχει σημασία πόσο συχνά αλλάζουν τα κλειδιά: κάθε χρόνο, κάθε τρίμηνο ή τρεις φορές την ημέρα. Εάν όλα λειτουργούν για περισσότερες από 24 ώρες, θα λειτουργούν για πάντα, γράφει ο Frank Denis. Σύμφωνα με τον ίδιο, η σύσταση καθημερινής εναλλαγής κλειδιού στη δεύτερη έκδοση του πρωτοκόλλου, μαζί με μια έτοιμη εικόνα Docker που το υλοποιεί, μείωσε ουσιαστικά τον αριθμό των διακομιστών με ληγμένα πιστοποιητικά, ενώ ταυτόχρονα βελτίωσε την ασφάλεια.
Ωστόσο, ορισμένοι πάροχοι εξακολουθούν να αποφάσισαν, για ορισμένους τεχνικούς λόγους, να ορίσουν την περίοδο ισχύος του πιστοποιητικού σε περισσότερες από 24 ώρες. Αυτό το πρόβλημα επιλύθηκε σε μεγάλο βαθμό με μερικές γραμμές κώδικα στο dnscrypt-proxy: οι χρήστες λαμβάνουν μια ενημερωτική προειδοποίηση 30 ημέρες πριν από τη λήξη του πιστοποιητικού, ένα άλλο μήνυμα με υψηλότερο επίπεδο σοβαρότητας 7 ημέρες πριν από τη λήξη και ένα κρίσιμο μήνυμα εάν το πιστοποιητικό έχει υπόλοιπο λιγότερο από 24 ώρες. Αυτό ισχύει μόνο για πιστοποιητικά που έχουν αρχικά μεγάλη περίοδο ισχύος.
Αυτά τα μηνύματα δίνουν στους χρήστες την ευκαιρία να ειδοποιήσουν τους χειριστές DNS για την επικείμενη λήξη του πιστοποιητικού πριν να είναι πολύ αργά.
Ίσως εάν όλοι οι χρήστες του Firefox λάμβαναν ένα τέτοιο μήνυμα, τότε πιθανότατα κάποιος θα ενημέρωνε τους προγραμματιστές και δεν θα επέτρεπαν τη λήξη του πιστοποιητικού. «Δεν θυμάμαι ούτε έναν διακομιστή DNSCrypt στη λίστα των δημόσιων διακομιστών DNS που έχει λήξει το πιστοποιητικό του τα τελευταία δύο ή τρία χρόνια», γράφει ο Frank Denis. Σε κάθε περίπτωση, είναι μάλλον καλύτερο να προειδοποιήσετε πρώτα τους χρήστες αντί να απενεργοποιήσετε τις επεκτάσεις χωρίς προειδοποίηση.
Πηγή: www.habr.com