à l'approche du lancement d'un nouveau cycle pour le cours  Nous continuons à publier une série d'articles sur le chiffrement dans MySQL.
Dans l'article précédent de cette série, nous avons discuté de . Aujourd'hui, en nous basant sur les connaissances acquises précédemment, nous allons examiner la rotation des clés principales.
La rotation des clĂ©s principales consiste Ă gĂ©nĂ©rer une nouvelle clĂ© principale et Ă rĂ©utiliser cette nouvelle clĂ© pour chiffrer Ă nouveau les clĂ©s des espaces de table (qui sont stockĂ©es dans les en-tĂȘtes des espaces de table).
Rappelons Ă quoi ressemble l'en-tĂȘte d'un espace de table chiffrĂ© :

D'aprĂšs l'article prĂ©cĂ©dent, nous savons que le serveur lit les en-tĂȘtes de tous les espaces de table chiffrĂ©s au dĂ©marrage et mĂ©morise l'ID de clĂ© le plus Ă©levĂ©. Par exemple, si nous avons trois tables avec un KEYID = 3 et une table avec un KEYID = 4, l'identifiant de clĂ© maximum sera de 4. Appelons cet ID de clĂ© â MAX KEY ID.
Comment fonctionne la rotation de la clé principale
1. L'utilisateur exécute ALTER INNODB MASTER KEY.
2. Le serveur demande au magasin de clés (keyring) de générer une nouvelle clé principale avec l'UUID du serveur et un KEYID, égal à MAXKEYID augmenté de un. Ainsi, nous obtenons un identifiant de clé principale, égal à INNODBKEY-UUID- (MAXKEYID + 1). Lors de la génération réussie de la clé principale, MAX KEY ID est augmenté de 1 (c'est-à -dire MAXKEYID = MAXKEYID + 1).
3. Le serveur parcourt tous les espaces de table chiffrés avec la clé principale et pour chaque espace de table :
chiffre la clé de l'espace de table avec la nouvelle clé principale ;
met à jour l'identifiant de clé à nouveau MAXKEYID ;
si l'UUID est différent de l'UUID du serveur, met à jour l'UUID du serveur.
Comme nous le savons, l'identifiant de la clĂ© principale (Master Key ID), utilisĂ© pour dĂ©chiffrer la table, se compose de l'UUID et du KEY ID, lus depuis l'en-tĂȘte de l'espace de table. Ce que nous faisons maintenant, c'est mettre Ă jour ces informations dans l'en-tĂȘte de chiffrement de l'espace de table, afin que le serveur obtienne la clĂ© principale correcte.
Lorsque nous avons des espaces de tables provenant de diffĂ©rents endroits, par exemple, de diffĂ©rentes sauvegardes, ils peuvent utiliser des clĂ©s maĂźtresses diffĂ©rentes. Toutes ces clĂ©s maĂźtresses devront ĂȘtre rĂ©cupĂ©rĂ©es depuis le stockage au dĂ©marrage du serveur. Cela peut ralentir le dĂ©marrage du serveur, surtout si un stockage de clĂ©s est utilisĂ©. GrĂące Ă la rotation de la clĂ© maĂźtresse, nous rĂ©encryptons les clĂ©s des espaces de tables avec une clĂ© maĂźtresse unique, identique pour tous les espaces de tables. DĂ©sormais, lors du dĂ©marrage, le serveur doit rĂ©cupĂ©rer une seule clĂ© maĂźtresse.
C'est, bien sûr, juste un effet secondaire agréable. L'objectif principal de la rotation des clés maßtresses est de rendre notre serveur plus sécurisé. En cas de vol de la clé maßtresse depuis le stockage (par exemple, depuis le Vault Server), il est possible de générer une nouvelle clé maßtresse et de réencrypter les clés des espaces de tables, rendant ainsi la clé volée invalide. Nous sommes en sécurité... presque.
Dans l'article prĂ©cĂ©dent, j'ai mentionnĂ© que, aprĂšs le vol de la clĂ© d'espace de table, une tierce partie peut l'utiliser pour dĂ©chiffrer les donnĂ©es. Ă condition d'avoir accĂšs Ă notre disque. En cas de vol de la clĂ© maĂźtresse et d'accĂšs aux donnĂ©es chiffrĂ©es, la clĂ© maĂźtresse volĂ©e peut ĂȘtre utilisĂ©e pour dĂ©chiffrer la clĂ© d'espace de table et ainsi obtenir les donnĂ©es dĂ©chiffrĂ©es. Comme nous pouvons le voir, la rotation de la clĂ© maĂźtresse n'aide pas dans ce cas. Nous rĂ©encryptons la clĂ© d'espace de table avec une nouvelle clĂ© maĂźtresse, mais la clĂ© rĂ©elle utilisĂ©e pour chiffrer/dĂ©chiffrer les donnĂ©es reste la mĂȘme. Par consĂ©quent, le « hacker » peut continuer Ă l'utiliser pour dĂ©chiffrer les donnĂ©es. J'ai dĂ©jĂ insinuĂ© que il peut effectuer un vĂ©ritable rĂ©encryption des espaces de tables, et pas seulement un simple rĂ©encryption de la clĂ© d'espace de table. Cette fonctionnalitĂ© s'appelle les fils de chiffrement (encryption threads). Cependant, Ă l'heure actuelle, cette fonctionnalitĂ© est encore expĂ©rimentale.
La rotation de la clé maßtresse est utile lorsque la clé maßtresse a été volée, mais que l'attaquant n'a pas la possibilité de l'utiliser et de déchiffrer les clés des espaces de tables.
Lire aussi :
Source : habr.com
