Τι είναι το HPKP;

click fraud protection

Το HPKP είναι μια καταργημένη κεφαλίδα απόκρισης ασφάλειας ιστού, το ακρωνύμιο σημαίνει Pins δημόσιου κλειδιού HTTP. Σκοπός ήταν να αποτρέψει μια παραβιασμένη ή αδίστακτη αρχή έκδοσης πιστοποιητικών από το να εκδώσει ένα δημόσιο αξιόπιστο, αλλά ελεγχόμενο από χάκερ, πιστοποιητικό HTTPS για έναν ιστότοπο. Σε αυτό το σενάριο, οι χάκερ θα είναι σε θέση να αποκρυπτογραφήσουν οποιαδήποτε υποκλαπόμενη κίνηση HTTPS στον επηρεαζόμενο ιστότοπο.

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

Υποδομή πιστοποιητικού HTTPS

Η υποδομή πιστοποιητικών στην οποία είναι χτισμένο το HTTPS βασίζεται σε έναν ιστό εμπιστοσύνης. Ορισμένες εταιρείες ενεργούν ως Αρχές έκδοσης πιστοποιητικών (CA) οι οποίες δημοσιεύουν ένα ή περισσότερα πιστοποιητικά ρίζας. Ένα σύνολο πιστοποιητικών root περιλαμβάνεται σε όλες τις συσκευές σε ένα κατάστημα αξιοπιστίας. Όταν ένας ιστότοπος ζητά ένα δικό του πιστοποιητικό HTTPS από μια ΑΠ, το πιστοποιητικό υπογράφεται από ένα πιστοποιητικό ρίζας. Όταν ο υπολογιστής σας βλέπει ένα πιστοποιητικό HTTPS, ελέγχει την υπογραφή. Εάν το πιστοποιητικό είναι υπογεγραμμένο από ένα πιστοποιητικό ρίζας που εμπιστεύεται, τότε ο υπολογιστής σας εμπιστεύεται επίσης το πιστοποιητικό HTTPS.

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

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

Τι έκανε η HPKP;

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

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

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

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

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

Δομή HPKP

Η κεφαλίδα HPKP έχει τρία υποχρεωτικά μέρη και δύο προαιρετικά. Η κεφαλίδα πρέπει να φέρει τον τίτλο "Public-Key-Pins", τα επόμενα δύο ή περισσότερα πιστοποιητικά πρέπει να έχουν έναν κατακερματισμό SHA256 με κωδικοποίηση base64 καρφιτσωμένο στη μορφή "pin-sha256="”’. Το τελευταίο υποχρεωτικό μέρος είναι το "max-age", το οποίο είναι μια μέτρηση σε δευτερόλεπτα για το χρονικό διάστημα για το οποίο το πρόγραμμα περιήγησης πρέπει να εφαρμόζει τους περιορισμούς.

Συμβουλή: Ο SHA256 είναι ο αλγόριθμος κατακερματισμού που χρησιμοποιείται από την HPKP. Το Base64 είναι ένα σύνολο χαρακτήρων με 64 χαρακτήρες: 0-9, a-z, A-Z και τους ειδικούς χαρακτήρες "+" και "/". Το "=" χρησιμοποιείται για να συμπληρώσει μέχρι τους δύο τελευταίους χαρακτήρες, εάν χρειάζεται.

Οι προαιρετικές ρυθμίσεις είναι "includeSubDomains" και "report-uri". "Το includeSubDomains καθοδηγεί το πρόγραμμα περιήγησης να εφαρμόζει τις προστασίες HPKP σε οποιονδήποτε υποτομέα του τρέχοντος ιστότοπου για τη διάρκεια του χρονοδιακόπτη "max-age". Το "report-uri" είναι μια δυνατότητα που επιτρέπει τον καθορισμό ενός ιστότοπου όπου μπορούν να σταλούν αναφορές σφαλμάτων και έχει σχεδιαστεί για να βοηθά στον εντοπισμό και την επίλυση προβλημάτων.

Υπάρχει μια δεύτερη παραλλαγή της κεφαλίδας με τίτλο "Public-Key-Pins-Report-Only". Όλα είναι ίδια, ωστόσο, εάν εντοπιστεί ένα σφάλμα, δεν γίνεται καμία ενέργεια πέρα ​​από την επιστροφή ενός μηνύματος σφάλματος στο πρόγραμμα περιήγησης και στο "report-uri" εάν έχει ρυθμιστεί. Η παραλλαγή της αναφοράς μόνο σχεδιάστηκε για να επιτρέπει τη δοκιμή πλήρους κλίμακας της κεφαλίδας πριν από την ανάπτυξη, όπου τα σφάλματα δεν θα προκαλούσαν προβλήματα στους χρήστες.

Ζητήματα με το HPKP

Το HPKP καταργήθηκε για δύο βασικούς λόγους. Υπήρχαν δύο τρόποι με τους οποίους η κεφαλίδα μπορούσε να προκαλέσει σοβαρά προβλήματα στον ιστότοπο που την χρησιμοποιεί, αυτοί ονομάστηκαν HPKP Suicide και Ransom PKP.

Η αυτοκτονία HPKP είναι ένα ζήτημα όπου οι νόμιμοι κάτοχοι του ιστότοπου χάνουν την πρόσβαση σε όλα τα καρφιτσωμένα κλειδιά. Αυτό μπορεί να συμβεί μέσω τυχαίας διαγραφής, εισβολής, ιών, καταστροφής δεδομένων ή για πολλούς άλλους λόγους. Λόγω της πολυπλοκότητας της σωστής υλοποίησης του HPKP, και ιδιαίτερα της ενημερωμένης του κατά την εναλλαγή των πιστοποιητικών, είναι σχετικά εύκολο να κάνετε ένα σφάλμα διαμόρφωσης. Ωστόσο, με το HPKP, εάν κάνετε λάθος, όλοι οι πρόσφατοι επισκέπτες στον ιστότοπό σας δεν θα μπορούν να έχουν πρόσβαση στον ιστότοπό σας για τη διάρκεια του χρονοδιακόπτη "max-age". Ο ιστότοπος smashingmagazine.com δημοσίευσε ένα άρθρο περιγράφοντας λεπτομερώς την εμπειρία του με αυτό ακριβώς το ζήτημα, το οποίο ουσιαστικά έκανε τον ιστότοπο εκτός σύνδεσης για τους περισσότερους επισκέπτες για τέσσερις ημέρες πριν από την ανάπτυξη μιας επιδιόρθωσης.

Το Ransom PKP είναι μια θεωρητική επίθεση όπου ένας χάκερ αποκτά πρόσβαση σε έναν διακομιστή ιστού, στη συνέχεια κλέβει όλα τα αξιόπιστα πιστοποιητικά και τα κλειδιά και στη συνέχεια ζητά λύτρα για την επιστροφή τους. Σε μια κανονική ρύθμιση, θα μπορούσατε απλώς να δημιουργήσετε νέα κλειδιά και πιστοποιητικά και να δημιουργήσετε αντίγραφα ασφαλείας και να λειτουργήσει ο ιστότοπος σε λιγότερο από μία ώρα. Ωστόσο, με το HPKP ενεργοποιημένο, αυτά τα κλειδιά είναι καρφιτσωμένα, εάν δεν μπορείτε να προβάλετε ένα καρφιτσωμένο πιστοποιητικό στους χρήστες, δεν θα μπορούν να έχουν πρόσβαση στον ιστότοπο για τη διάρκεια του χρονοδιακόπτη "μέγ. ηλικίας". Ανάλογα με τη διαμόρφωση και εάν υπάρχουν αντίγραφα ασφαλείας, μπορεί να είναι αδύνατο να επιλυθεί αυτό το ζήτημα.

Και με τα δύο αυτά ζητήματα, οι νέοι χρήστες θα μπορούν να έχουν πρόσβαση στον ιστότοπο κανονικά, όπως θα έκαναν Δεν έχω δει ποτέ την παλιά κεφαλίδα του HPKP να δίνει εντολή στο πρόγραμμα περιήγησής τους να εμπιστεύεται μόνο αυτά που λείπουν τώρα πιστοποιητικά. Όλοι οι πρόσφατοι επισκέπτες, ωστόσο, όπως οι τακτικοί πελάτες και οι αναγνώστες, θα πρέπει να περιμένουν για ολόκληρη τη διάρκεια του χρονοδιακόπτη "max-age".

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