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

Πού χωρίζουν τα δύο μοντέλα εφεδρικού αντιγράφου

Το μοντέλο A είναι αντιγραφή καταλόγου. Ένα CA σε στυλ OpenSSL είναι κατάλογος εργασίας, όχι ένα πιστοποιητικό: ca.key ή cakey.pem, ca.crt, η βάση δεδομένων έκδοσης, οι μετρητές serial και crlnumber, και openssl.cnf. Σφραγίστε αυτόν τον κατάλογο με συμμετρικό κρυπταλγόριθμο, μεταφέρετε το αποτέλεσμα σε δεύτερο μέσο, και η επαναφορά σημαίνει αποσυμπίεση, επαλήθευση, υπογραφή. Ό,τι χρειάζεται ο εκδότης ταξιδεύει μαζί, μαζί με εβδομάδες ιστορικού ανάκλησης που κανείς δεν θυμάται ότι έγραψε.

Το μοντέλο B είναι συγκράτηση κλειδιού. Το κλειδί παράγεται μέσα σε μια μονάδα PKCS#11 και σημαδεύεται ως μη εξαγώγιμο· η μονάδα μπορεί να το τυλίξει για εφεδρικό αντίγραφο, αλλά καμία διεργασία δεν διαβάζει ποτέ τα ακατέργαστα byte. Το εφεδρικό σας αντίγραφο είναι τότε δύο τεχνουργήματα που πρέπει να αποκατασταθούν με τη σωστή σειρά: ένα τυλιγμένο blob κλειδιού που μόνο εκείνη η οικογένεια μονάδων μπορεί να ξετυλίξει, συν ένα απλό αντίγραφο της βάσης δεδομένων, της διαμόρφωσης και των πιστοποιητικών.

AttributeEncrypted archiveHSM key backup
What you storeone encrypted filewrapped blob plus CA records
Who can restore itanyone holding the passphraseholder of the module and the blob, often vendor support
If a copy leaksattacker with the passphrase becomes the CAblob is inert without the matching module
What usually breaks itforgotten passphrase, one damaged copyreplacement module rejects the blob, contract gap

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

Τι πρέπει να περιέχει κάθε εφεδρικό αντίγραφο CA

Και τα δύο μοντέλα χρειάζονται το ίδιο σύνολο εγγραφών. Σε ένα CA OpenSSL αυτά τα αρχεία είναι το index.txt με μία γραμμή ανά εκδοθέν πιστοποιητικό που καλύπτει κατάσταση, λήξη, serial και υποκείμενο, μετά το index.txt.attr, το serial που κρατά το επόμενο serial προς έκδοση, το crlnumber που κρατά τον επόμενο αριθμό CRL, και το openssl.cnf με το dir, το policy και τα default_days με τα οποία λειτουργεί πραγματικά το CA σας. Το εγχειρίδιο openssl-ca εξηγεί τι ελέγχει κάθε ένας από αυτούς τους μετρητές. Το easy-rsa κρατά τα ίδια δεδομένα κάτω από το pki/, με ένα αρχείο vars να καθορίζει τα πεδία του πιστοποιητικού.

Το κλειδί και το πιστοποιητικό είναι τα μέρη που δεν μπορείτε να ξαναχτίσετε. Η βάση δεδομένων είναι το μέρος που δεν μπορείτε να ανακατασκευάσετε από μνήμης. Το να παραλείψετε το index.txt σας αφήνει ακόμη ικανούς να υπογράφετε νέα πιστοποιητικά, και αυτή είναι ακριβώς η παγίδα: το ανακαλύπτετε ότι λείπει την πρώτη φορά που ένας πελάτης ρωτά αν ένα πιστοποιητικό ανακλήθηκε. Καταγράψτε το αποτύπωμα του CA έξω από το εφεδρικό αντίγραφο, ώστε μια επαναφορά να συγκρίνεται με μια τιμή που εμπιστεύεστε και όχι με το αρχείο που μόλις επαναφέρατε.

openssl x509 -in ca.crt -noout -fingerprint -sha256
tar czf ca-state.tar.gz ca.crt ca.key index.txt* serial* crlnumber* openssl.cnf
openssl enc -aes-256-cbc -pbkdf2 -iter 200000 -salt -in ca-state.tar.gz -out ca-state.tar.gz.enc
openssl ca -config openssl.cnf -gencrl -out crl.pem

Δοκιμές επαναφοράς που δεν διακλαδίζουν τον εκδότη

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

Μια δοκιμή που αποδεικνύει μόνο ότι το αρχείο ανοίγει δεν αποδεικνύει τίποτα για την έκδοση. Η ακολουθία που μετρά: συγκρίνετε το αποτύπωμα του επαναφερμένου ca.crt με την τιμή που καταγράψατε, επιβεβαιώστε ότι το serial ταιριάζει με αυτό που υπονοεί το τελευταίο εκδοθέν πιστοποιητικό σας, εκδώστε ένα πιστοποιητικό για ένα εφήμερο CN και παρακολουθήστε το index.txt να κερδίζει μια γραμμή, μετά ανακαλέστε αυτό το πιστοποιητικό και αναδημιουργήστε το CRL.

openssl verify -CAfile ca.crt -CRLfile crl.pem -crl_check client.crt
openssl crl -in crl.pem -noout -lastupdate -nextupdate

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

Τρόποι αποτυχίας που καθορίζουν την επιλογή

Πέντε αποτυχίες εξηγούν τις περισσότερες πραγματικές απώλειες. Μια ξεχασμένη φράση πρόσβασης αρχείου χωρίς ανεξάρτητο αντίγραφο του μυστικού μετατρέπει το αρχείο σε τούβλο. Ένα μόνο αντίγραφο σε έναν δίσκο πεθαίνει με αυτόν τον δίσκο, και ένα άθροισμα ελέγχου δεν σας λέει ποτέ αν η αποκρυπτογράφηση λειτουργεί ακόμη. Πιστοποιητικά που ανακλήθηκαν μετά την ημερομηνία του εφεδρικού αντιγράφου φαίνονται ξανά έγκυρα μετά από επαναφορά, άρα το διάστημα του εφεδρικού σας είναι και το τυφλό σας σημείο ανάκλησης. Η επαναφορά ενός παλαιότερου μετρητή serial επαναχρησιμοποιεί σειριακούς αριθμούς και μπερδεύει κρυφές μνήμες και αναζητήσεις CRL που κλειδώνονται στο serial. Ένα HSM αντικατάστασης που αρνείται το τυλιγμένο blob μετατρέπει μια αλλαγή υλικού σε πλήρη επανέκδοση.

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

Επιλογή του μοντέλου και προγραμματισμός

Τρεις προϋποθέσεις καθορίζουν την απόφαση. Μπορεί το κλειδί να εξαχθεί χωρίς διαδικασία προμηθευτή; Πρέπει μια επαναφορά να προσγειωθεί σε υλικό που δεν έχετε ήδη; Πόσο καιρό μπορεί να σταματήσει η έκδοση όσο διαφωνείτε με την υποστήριξη; Απαντήστε σε αυτά τα τρία και το μοντέλο αποφασίζεται· ό,τι ακολουθεί είναι προγραμματισμός.

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

Πριν κλείσετε το εισιτήριο, επιβεβαιώστε αυτά τα πέντε σημεία:

  • Το αποτύπωμα του ca.crt είναι καταγεγραμμένο κάπου έξω από το εφεδρικό αντίγραφο.
  • Τα index.txt, serial, crlnumber και openssl.cnf είναι όλα μέσα στο αρχείο ή στο σύνολο blob.
  • Η φύλαξη της φράσης πρόσβασης ή του τυλιγμένου κλειδιού είναι τεκμηριωμένη και την κρατά κάποιος άλλος από τον ιδιοκτήτη του αρχείου.
  • Μια επαναφορά δοκιμάστηκε σε απομονωμένο κεντρικό υπολογιστή με μία έκδοση και μία ανάκληση.
  • Το κενό ανάκλησης που υπονοεί το διάστημα του εφεδρικού σας είναι γραπτώς αποδεκτό ή μειωμένο.

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