Κρυπτογράφηση σε MySQL: Master Key Rotation

Εν αναμονή της έναρξης νέας εγγραφής για το μάθημα "Βάση δεδομένων" συνεχίζουμε να δημοσιεύουμε μια σειρά άρθρων σχετικά με την κρυπτογράφηση στο MySQL.

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

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

Ας θυμηθούμε πώς μοιάζει η κεφαλίδα ενός κρυπτογραφημένου tablespace:

Κρυπτογράφηση σε MySQL: Master Key Rotation

Από το προηγούμενο άρθρο, γνωρίζουμε ότι ο διακομιστής διαβάζει τις κεφαλίδες όλων των κρυπτογραφημένων επιτραπέζιων χώρων κατά την εκκίνηση και θυμάται το μεγαλύτερο αναγνωριστικό KEY. Για παράδειγμα αν έχουμε τρεις πίνακες με KEYID = 3 και ένας πίνακας με ΚΛΕΙΔΙID = 4, τότε το μέγιστο αναγνωριστικό κλειδιού θα είναι 4. Ας ονομάσουμε αυτό το KEY ID - MAX KEY ID.

Πώς λειτουργεί η κύρια περιστροφή πλήκτρων

1. Ο χρήστης εκτελεί το ALTER INNODB MASTER KEY.

2. Ο διακομιστής ζητά από το μπρελόκ να δημιουργήσει ένα νέο κύριο κλειδί με το διακομιστή UUID και το KEYΑναγνωριστικό ίσο με ένα συν MAXΚΛΕΙΔΙΤΑΥΤΟΤΗΤΑ. Έτσι παίρνουμε το κύριο αναγνωριστικό κλειδιού ίσο με το INNODBΚΛΕΙΔΙ-UUID-(ΜΕΓΚΛΕΙΔΙID + 1). Μετά την επιτυχή δημιουργία του κύριου κλειδιού, το MAX KEY ID αυξάνεται κατά ένα (δηλ. MAXΚΛΕΙΔΙID=MAXΚΛΕΙΔΙID + 1).

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

  • κρυπτογραφεί το κλειδί tablespace με το νέο κύριο κλειδί.

  • ενημερώνει το αναγνωριστικό κλειδιού στο νέο MAXΚΛΕΙΔΙΤΑΥΤΟΤΗΤΑ;

  • εάν το UUID είναι διαφορετικό από το UUID του διακομιστή, τότε ενημερώστε το UUID του διακομιστή.

Όπως γνωρίζουμε, το αναγνωριστικό κύριου κλειδιού που χρησιμοποιείται για την αποκρυπτογράφηση ενός πίνακα αποτελείται από ένα UUID και ένα αναγνωριστικό ΚΛΕΙΔΙ που διαβάζεται από την κεφαλίδα του tablespace. Αυτό που κάνουμε τώρα είναι να ενημερώσουμε αυτές τις πληροφορίες στην κεφαλίδα κρυπτογράφησης του tablespace, έτσι ώστε ο διακομιστής να λάβει το σωστό κύριο κλειδί.

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

Αυτό, φυσικά, είναι απλώς μια ευχάριστη παρενέργεια. Ο κύριος σκοπός της εναλλαγής κύριου κλειδιού είναι να κάνει τον διακομιστή μας πιο ασφαλή. Σε περίπτωση που το κύριο κλειδί κλαπεί με κάποιο τρόπο από το θησαυροφυλάκιο (για παράδειγμα, από τον διακομιστή Vault), είναι δυνατό να δημιουργηθεί ένα νέο κύριο κλειδί και να κρυπτογραφηθεί εκ νέου τα κλειδιά του tablespace, ακυρώνοντας το κλεμμένο κλειδί. Είμαστε ασφαλείς...σχεδόν.

Σε προηγούμενο άρθρο, μίλησα για το πώς από τη στιγμή που κλαπεί ένα κλειδί του tablespace, ένας τρίτος μπορεί να το χρησιμοποιήσει για την αποκρυπτογράφηση δεδομένων. Με την προϋπόθεση ότι υπάρχει πρόσβαση στον δίσκο μας. Εάν το κύριο κλειδί κλαπεί και έχετε πρόσβαση στα κρυπτογραφημένα δεδομένα, μπορείτε να χρησιμοποιήσετε το κλεμμένο κύριο κλειδί για να αποκρυπτογραφήσετε το κλειδί του tablespace και να λάβετε τα αποκρυπτογραφημένα δεδομένα. Όπως μπορείτε να δείτε, η περιστροφή του κύριου κλειδιού δεν βοηθά σε αυτή την περίπτωση. Κρυπτογραφούμε ξανά το κλειδί tablespace με το νέο κύριο κλειδί, αλλά το πραγματικό κλειδί που χρησιμοποιείται για την κρυπτογράφηση/αποκρυπτογράφηση των δεδομένων παραμένει το ίδιο. Επομένως, ο «χάκερ» μπορεί να συνεχίσει να το χρησιμοποιεί για την αποκρυπτογράφηση των δεδομένων. Νωρίτερα το άφησα να εννοηθεί Διακομιστής Percona για MySQL μπορεί να εκτελέσει πραγματική επανακρυπτογράφηση του tablespace, όχι μόνο απλή επανακρυπτογράφηση κλειδιού tablespace. Αυτή η δυνατότητα ονομάζεται νήματα κρυπτογράφησης. Ωστόσο, αυτή η λειτουργία είναι ακόμα πειραματική αυτή τη στιγμή.

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

Εγγραφείτε για ένα δωρεάν μάθημα επίδειξης.

Διαβάστε περισσότερα:

Πηγή: www.habr.com