{"id":98088,"date":"2020-10-24T02:42:34","date_gmt":"2020-10-24T00:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/shifrovanie-v-mysql-rotacziya-master-key"},"modified":"2020-11-18T00:58:48","modified_gmt":"2020-11-17T22:58:48","slug":"shifrovanie-v-mysql-rotacziya-master-key","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-rotacziya-master-key","title":{"rendered":"Chiffrement dans MySQL : rotation de la cl\u00e9 principale","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<\/p>\n<p><strong><em>\u00c0 l'approche du lancement d'un nouveau cycle pour le cours&nbsp;<\/em><\/strong><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/dADq\/\"><strong><em>\u00abBases de donn\u00e9es\u00bb<\/em><\/strong><\/a><\/noindex><strong><em>&nbsp;Nous continuons \u00e0 publier une s\u00e9rie d'articles sur le chiffrement dans MySQL.<\/em><\/strong><\/p>\n<p>Dans l'article pr\u00e9c\u00e9dent de cette s\u00e9rie, nous avons discut\u00e9 de <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/524050\/\"><u>comment fonctionne le chiffrement avec la cl\u00e9 principale (Master Key)<\/u><\/a><\/noindex>. Aujourd'hui, en nous basant sur les connaissances acquises pr\u00e9c\u00e9demment, nous allons examiner la rotation des cl\u00e9s principales.<\/p>\n<p>La rotation des cl\u00e9s principales consiste \u00e0 g\u00e9n\u00e9rer une nouvelle cl\u00e9 principale et \u00e0 r\u00e9utiliser cette nouvelle cl\u00e9 pour chiffrer \u00e0 nouveau les cl\u00e9s des espaces de table (qui sont stock\u00e9es dans les en-t\u00eates des espaces de table).<\/p>\n<p>Rappelons \u00e0 quoi ressemble l'en-t\u00eate d'un espace de table chiffr\u00e9 :<\/p>\n<p><img decoding=\"async\" alt=\"Chiffrement dans MySQL : rotation de la cl\u00e9 principale\" src=\"\/wp-content\/uploads\/2020\/10\/24057c50b96236c5ee2647aeca4b575f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>D'apr\u00e8s l'article pr\u00e9c\u00e9dent, nous savons que le serveur lit les en-t\u00eates de tous les espaces de table chiffr\u00e9s au d\u00e9marrage et m\u00e9morise l'ID de cl\u00e9 le plus \u00e9lev\u00e9. Par exemple, si nous avons trois tables avec un KEY<em>ID = 3 et une table avec un KEY<\/em>ID = 4, donc l'identifiant maximal de la cl\u00e9 sera \u00e9gal \u00e0 4. Appelons cette cl\u00e9 ID \u2014 MAX KEY ID.<\/p>\n<h3>Comment fonctionne la rotation de la cl\u00e9 principale<\/h3>\n<p>1. L'utilisateur ex\u00e9cute ALTER INNODB MASTER KEY.<\/p>\n<p>2. Le serveur demande au magasin de cl\u00e9s (keyring) de g\u00e9n\u00e9rer une nouvelle cl\u00e9 principale avec l'UUID du serveur et un KEY<em>ID, \u00e9gal \u00e0 MAX<\/em>KEY<em>ID augment\u00e9 de un. Ainsi, nous obtenons un identifiant de cl\u00e9 principale, \u00e9gal \u00e0 INNODB<\/em>KEY-UUID- (MAX<em>KEY<\/em>ID + 1). Lors de la g\u00e9n\u00e9ration r\u00e9ussie de la cl\u00e9 principale, MAX KEY ID est augment\u00e9 de 1 (c'est-\u00e0-dire MAX<em>KEY<\/em>ID = MAX<em>KEY<\/em>ID + 1).<\/p>\n<p>3. Le serveur parcourt tous les espaces de table chiffr\u00e9s avec la cl\u00e9 principale et pour chaque espace de table :<\/p>\n<ul>\n<li>\n<p>chiffre la cl\u00e9 de l'espace de table avec la nouvelle cl\u00e9 principale ;<\/p>\n<\/li>\n<li>\n<p>met \u00e0 jour l'identifiant de cl\u00e9 \u00e0 nouveau MAX<em>KEY<\/em>ID ;<\/p>\n<\/li>\n<li>\n<p>si l'UUID est diff\u00e9rent de l'UUID du serveur, met \u00e0 jour l'UUID du serveur.<\/p>\n<\/li>\n<\/ul>\n<p>Comme nous le savons, l'identifiant de la cl\u00e9 principale (Master Key ID), utilis\u00e9 pour d\u00e9chiffrer la table, se compose de l'UUID et du KEY ID, lus depuis l'en-t\u00eate de l'espace de table. Ce que nous faisons maintenant, c'est mettre \u00e0 jour ces informations dans l'en-t\u00eate de chiffrement de l'espace de table, afin que le serveur obtienne la cl\u00e9 principale correcte.<\/p>\n<p>Lorsque nous avons des espaces de tables provenant de diff\u00e9rents endroits, par exemple, de diff\u00e9rentes sauvegardes, ils peuvent utiliser des cl\u00e9s ma\u00eetresses diff\u00e9rentes. Toutes ces cl\u00e9s ma\u00eetresses devront \u00eatre r\u00e9cup\u00e9r\u00e9es depuis le stockage au d\u00e9marrage du serveur. Cela peut ralentir le d\u00e9marrage du serveur, surtout si un stockage de cl\u00e9s est utilis\u00e9. Gr\u00e2ce \u00e0 la rotation de la cl\u00e9 ma\u00eetresse, nous r\u00e9encryptons les cl\u00e9s des espaces de tables avec une cl\u00e9 ma\u00eetresse unique, identique pour tous les espaces de tables. D\u00e9sormais, lors du d\u00e9marrage, le serveur doit r\u00e9cup\u00e9rer une seule cl\u00e9 ma\u00eetresse.<\/p>\n<p>C'est, bien s\u00fbr, juste un effet secondaire agr\u00e9able. L'objectif principal de la rotation des cl\u00e9s ma\u00eetresses est de rendre notre serveur plus s\u00e9curis\u00e9. En cas de vol de la cl\u00e9 ma\u00eetresse depuis le stockage (par exemple, depuis le Vault Server), il est possible de g\u00e9n\u00e9rer une nouvelle cl\u00e9 ma\u00eetresse et de r\u00e9encrypter les cl\u00e9s des espaces de tables, rendant ainsi la cl\u00e9 vol\u00e9e invalide. Nous sommes en s\u00e9curit\u00e9... presque.<\/p>\n<p>Dans l'article pr\u00e9c\u00e9dent, j'ai mentionn\u00e9 qu'apr\u00e8s le vol de la cl\u00e9 de l'espace de table, un tiers pourrait l'utiliser pour d\u00e9chiffrer des donn\u00e9es, \u00e0 condition d'avoir acc\u00e8s \u00e0 notre disque. En cas de vol de la cl\u00e9 principale et d'acc\u00e8s aux donn\u00e9es chiffr\u00e9es, il est possible d'utiliser la cl\u00e9 principale vol\u00e9e pour d\u00e9chiffrer la cl\u00e9 de l'espace de table et obtenir les donn\u00e9es d\u00e9chiffr\u00e9es. Comme nous le voyons, la rotation de la cl\u00e9 principale n'aide donc pas. Nous chiffrons \u00e0 nouveau la cl\u00e9 de l'espace de table avec une nouvelle cl\u00e9 principale, mais la cl\u00e9 r\u00e9elle utilis\u00e9e pour le chiffrement \/ d\u00e9chiffrement des donn\u00e9es reste la m\u00eame. Par cons\u00e9quent, le \u00ab hacker \u00bb peut continuer \u00e0 l'utiliser pour d\u00e9chiffrer les donn\u00e9es. Auparavant, j'avais insinu\u00e9 que <noindex><a rel=\"nofollow\" href=\"https:\/\/www.percona.com\/software\/mysql-database\/percona-server\"><u>Percona Server for MySQL<\/u><\/a><\/noindex> il peut effectuer un v\u00e9ritable r\u00e9encryption des espaces de tables, et pas seulement un simple r\u00e9encryption de la cl\u00e9 d'espace de table. Cette fonctionnalit\u00e9 s'appelle les fils de chiffrement (encryption threads). Cependant, \u00e0 l'heure actuelle, cette fonctionnalit\u00e9 est encore exp\u00e9rimentale.<\/p>\n<p>La rotation de la cl\u00e9 ma\u00eetresse est utile lorsque la cl\u00e9 ma\u00eetresse a \u00e9t\u00e9 vol\u00e9e, mais que l'attaquant n'a pas la possibilit\u00e9 de l'utiliser et de d\u00e9chiffrer les cl\u00e9s des espaces de tables.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/dADq\/\"><strong>Inscrivez-vous pour un cours d\u00e9mo gratuit.<\/strong><\/a><\/noindex><\/p>\n<h4>Lire aussi :<\/h4>\n<ul>\n<li>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/522092\/\">Chiffrement dans MySQL : stockage des cl\u00e9s<\/a><\/noindex><\/p>\n<\/li>\n<li>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/524050\/\">Chiffrement dans MySQL : utilisation de la cl\u00e9 principale<\/a><\/noindex><\/p>\n<\/li>\n<\/ul>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/524624\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441&nbsp;\u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb&nbsp;\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 MySQL. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c (Master Key). \u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u0435\u0435 \u0437\u043d\u0430\u043d\u0438\u044f\u0445, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u043e\u0442\u0430\u0446\u0438\u044e \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439. \u0420\u043e\u0442\u0430\u0446\u0438\u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0438 \u044d\u0442\u0438\u043c \u043d\u043e\u0432\u044b\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":98089,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-98088","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441 \u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-rotacziya-master-key\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 MySQL: \u0440\u043e\u0442\u0430\u0446\u0438\u044f Master Key | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441 \u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-rotacziya-master-key\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-24T00:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-11-17T22:58:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Chiffrement dans MySQL : rotation de la cl\u00e9 ma\u00eetresse | ProHoster","description":"Alors que nous nous pr\u00e9parons au lancement d'un nouveau groupe pour le cours \u00ab Bases de donn\u00e9es \u00bb, nous continuons.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-rotacziya-master-key","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 MySQL: \u0440\u043e\u0442\u0430\u0446\u0438\u044f Master Key | ProHoster","og:description":"\u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441 \u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-rotacziya-master-key","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-24T00:42:34+00:00","article:modified_time":"2020-11-17T22:58:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"98088","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:05:50","updated":"2022-10-03 07:13:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/98088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=98088"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/98088\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/98089"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=98088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=98088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=98088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}