{"id":97664,"date":"2020-10-20T08:42:20","date_gmt":"2020-10-20T06:42:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej"},"modified":"2020-10-20T08:42:20","modified_gmt":"2020-10-20T06:42:20","slug":"shifrovanie-v-mysql-hranilishhe-klyuchej","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej","title":{"rendered":"Chiffrement dans MySQL : stockage des cl\u00e9s","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>\u00c0 l'approche du lancement d'un nouveau cycle pour le cours <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/luFp\/\">\u00abBases de donn\u00e9es\u00bb<\/a><\/noindex> nous avons pr\u00e9par\u00e9 pour vous la traduction d'un article utile.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Chiffrement dans MySQL : stockage des cl\u00e9s\" src=\"\/wp-content\/uploads\/2020\/10\/aeca40f53fe6bdf2a9897aa835ff597d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Le chiffrement transparent des donn\u00e9es (Transparent Data Encryption, TDE) est apparu dans <noindex><a rel=\"nofollow\" href=\"https:\/\/www.percona.com\/software\/mysql-database\/percona-server\">Percona Server for MySQL<\/a><\/noindex> et MySQL il y a relativement longtemps. Mais vous \u00eates-vous d\u00e9j\u00e0 demand\u00e9 comment cela fonctionne en coulisses et quel impact TDE peut avoir sur votre serveur ? Dans cette s\u00e9rie d'articles, nous examinerons comment TDE fonctionne en interne. Commen\u00e7ons par le stockage des cl\u00e9s, car cela est n\u00e9cessaire pour tout chiffrement. Ensuite, nous analyserons en d\u00e9tail comment le chiffrement fonctionne dans Percona Server for MySQL\/MySQL et quelles fonctionnalit\u00e9s suppl\u00e9mentaires sont disponibles dans Percona Server for MySQL.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>MySQL Keyring<\/h3>\n<p>\nLe Keyring est un plugin qui permet au serveur de demander, de cr\u00e9er et de supprimer des cl\u00e9s dans un fichier local (keyring_file) ou sur un serveur distant (par exemple, dans HashiCorp Vault). Les cl\u00e9s sont toujours mises en cache localement pour acc\u00e9l\u00e9rer leur r\u00e9cup\u00e9ration. <\/p>\n<p>Les plugins peuvent \u00eatre class\u00e9s en deux cat\u00e9gories :<\/p>\n<ul>\n<li>Stockage local. Par exemple, un fichier local (nous appelons cela un stockage de cl\u00e9s bas\u00e9 sur des fichiers, file-based keyring).<\/li>\n<li>Stockage distant. Par exemple, le serveur Vault (nous appelons cela un stockage de cl\u00e9s bas\u00e9 sur un serveur, server-based keyring).<\/li>\n<\/ul>\n<p>\nCette distinction est importante car les diff\u00e9rents types de stockage se comportent l\u00e9g\u00e8rement diff\u00e9remment non seulement lors du stockage et de la r\u00e9cup\u00e9ration des cl\u00e9s, mais aussi au moment du d\u00e9marrage.<\/p>\n<p>En utilisant un stockage bas\u00e9 sur des fichiers, tout le contenu du stockage est charg\u00e9 en cache au d\u00e9marrage : l'identifiant de la cl\u00e9, l'utilisateur de la cl\u00e9, le type de cl\u00e9 et la cl\u00e9 elle-m\u00eame.<\/p>\n<p>Dans le cas d'un stockage bas\u00e9 sur un serveur (par exemple, le serveur Vault), seul l'identifiant de la cl\u00e9 et l'utilisateur de la cl\u00e9 sont charg\u00e9s au d\u00e9marrage, donc la r\u00e9cup\u00e9ration de toutes les cl\u00e9s ne ralentit pas le d\u00e9marrage. Les cl\u00e9s sont charg\u00e9es paresseusement. Autrement dit, la cl\u00e9 elle-m\u00eame est charg\u00e9e depuis Vault uniquement lorsqu'elle est r\u00e9ellement n\u00e9cessaire. Une fois charg\u00e9e, la cl\u00e9 est mise en cache en m\u00e9moire afin qu'il ne soit pas n\u00e9cessaire de la r\u00e9cup\u00e9rer \u00e0 nouveau via des connexions TLS au serveur Vault. Ensuite, examinons les informations pr\u00e9sentes dans le stockage des cl\u00e9s.<\/p>\n<p>Les informations de la cl\u00e9 contiennent les \u00e9l\u00e9ments suivants :<\/p>\n<ul>\n<li><b>identifiant de cl\u00e9<\/b> \u2014 l'identifiant de la cl\u00e9, par exemple : <br \/>\n <code>INNODBKey-764d382a-7324-11e9-ad8f-9cb6d0d5dc99-1<\/code><\/li>\n<li><b>type de cl\u00e9<\/b> \u2014 le type de cl\u00e9, bas\u00e9 sur l'algorithme de chiffrement utilis\u00e9, valeurs possibles : \u00abAES\u00bb, \u00abRSA\u00bb ou \u00abDSA\u00bb.<\/li>\n<li><b>longueur de cl\u00e9<\/b> \u2014 la longueur de la cl\u00e9 en octets, AES : 16, 24 ou 32, RSA 128, 256, 512 et DSA 128, 256 ou 384.<\/li>\n<li><b>user<\/b> \u2014 propri\u00e9taire de la cl\u00e9. Si la cl\u00e9 est syst\u00e8me, par exemple, Master Key, ce champ est vide. Si la cl\u00e9 est cr\u00e9\u00e9e \u00e0 l'aide de keyring_udf, ce champ d\u00e9signe le propri\u00e9taire de la cl\u00e9.<\/li>\n<li><b>la cl\u00e9 elle-m\u00eame<\/b><\/li>\n<\/ul>\n<p>\nLa cl\u00e9 est identifi\u00e9e de mani\u00e8re unique par une paire : key_id, user.<\/p>\n<p>Il existe \u00e9galement des diff\u00e9rences dans le stockage et la suppression des cl\u00e9s.<\/p>\n<p>Le stockage de fichiers fonctionne plus rapidement. On pourrait supposer que le stockage de cl\u00e9s consiste simplement \u00e0 \u00e9crire une cl\u00e9 une seule fois dans un fichier, mais ce n'est pas le cas \u2014 il y a plus d'op\u00e9rations ici. Lors de toute modification du stockage de fichiers, une sauvegarde de tout le contenu est d'abord cr\u00e9\u00e9e. Supposons que le fichier s'appelle my_biggest_secrets, dans ce cas, la sauvegarde sera my_biggest_secrets.backup. Ensuite, le cache est modifi\u00e9 (des cl\u00e9s sont ajout\u00e9es ou supprim\u00e9es) et, si tout se passe bien, le cache est vid\u00e9 dans le fichier. Dans de rares cas, comme une panne du serveur, vous pouvez voir ce fichier de sauvegarde. Ce fichier de sauvegarde est supprim\u00e9 lors du prochain chargement des cl\u00e9s (g\u00e9n\u00e9ralement apr\u00e8s le red\u00e9marrage du serveur).<\/p>\n<p>Lors de la sauvegarde ou de la suppression d'une cl\u00e9 dans le stockage serveur, le stockage doit se connecter au serveur MySQL avec les commandes \u00ab envoyer la cl\u00e9 \u00bb \/ \u00ab demander la suppression de la cl\u00e9 \u00bb (\u00ab send the key \u00bb \/ \u00ab request key deletion \u00bb).<\/p>\n<p>Revenons \u00e0 la vitesse de d\u00e9marrage du serveur. En plus du fait que la vitesse de d\u00e9marrage est affect\u00e9e par le stockage lui-m\u00eame, il y a aussi la question du nombre de cl\u00e9s \u00e0 r\u00e9cup\u00e9rer dans le stockage lors du d\u00e9marrage. Bien s\u00fbr, c'est particuli\u00e8rement important pour les stockages de serveur. Lors du d\u00e9marrage, le serveur v\u00e9rifie quelle cl\u00e9 est n\u00e9cessaire pour les tables\/bases de donn\u00e9es crypt\u00e9es et demande la cl\u00e9 au stockage. Sur un serveur \u00ab propre \u00bb avec un Master Key \u2014 le chiffrement doit avoir une seule Master Key, qui doit \u00eatre extraite du stockage. Cependant, un plus grand nombre de cl\u00e9s peut \u00eatre n\u00e9cessaire, par exemple, lorsqu'une sauvegarde est restaur\u00e9e d'un serveur principal \u00e0 un serveur de secours. Dans de tels cas, il convient de pr\u00e9voir une rotation des Master Key. Cela sera abord\u00e9 plus en d\u00e9tail dans de futurs articles, bien que je souhaite ici noter qu'un serveur utilisant plusieurs Master Key peut d\u00e9marrer un peu plus lentement, en particulier lors de l'utilisation d'un stockage de cl\u00e9s serveur.<\/p>\n<p>Maintenant, parlons un peu davantage de keyring_file. Lorsque j'ai d\u00e9velopp\u00e9 keyring_file, je m'inqui\u00e9tais \u00e9galement de savoir comment v\u00e9rifier les modifications apport\u00e9es \u00e0 keyring_file pendant que le serveur est en cours d'ex\u00e9cution. Dans la version 5.7, la v\u00e9rification se faisait sur la base des statistiques du fichier, ce qui n'\u00e9tait pas une solution id\u00e9ale, et dans la version 8.0, elle a \u00e9t\u00e9 remplac\u00e9e par un contr\u00f4le de somme de contr\u00f4le SHA256.<\/p>\n<p>Lors du premier lancement, keyring_file calcule les statistiques du fichier et la somme de contr\u00f4le, qui sont m\u00e9moris\u00e9es par le serveur, et les modifications ne sont appliqu\u00e9es que si elles correspondent. Lorsque le fichier est modifi\u00e9, la somme de contr\u00f4le est mise \u00e0 jour.<\/p>\n<p>Nous avons d\u00e9j\u00e0 abord\u00e9 de nombreuses questions concernant les magasins de cl\u00e9s. Cependant, il y a un autre sujet important qui est souvent oubli\u00e9 ou mal compris : la s\u00e9paration des cl\u00e9s entre les serveurs. <\/p>\n<p>Que veux-je dire par l\u00e0 ? Chaque serveur (par exemple, Percona Server) dans le cluster doit avoir un espace distinct sur le serveur Vault, o\u00f9 Percona Server doit stocker ses cl\u00e9s. Dans chaque Master Key stock\u00e9, il y a un GUID du serveur Percona Server dans son identifiant. Pourquoi cela est-il important ? Imaginez que vous n'avez qu'un seul serveur Vault et que tous les Percona Server dans le cluster utilisent ce seul serveur Vault. Le probl\u00e8me semble \u00e9vident. Si tous les Percona Server utilisaient le Master Key sans identifiants uniques, par exemple, id = 1, id = 2, etc., tous les serveurs du cluster utiliseraient la m\u00eame cl\u00e9 ma\u00eetre. Ce que garantit le GUID \u2014 la d\u00e9limitation entre les serveurs. Pourquoi alors parler de s\u00e9paration des cl\u00e9s entre les serveurs, s'il existe d\u00e9j\u00e0 un GUID unique ? Il y a un autre plugin \u2014 keyring_udf. Avec ce plugin, l'utilisateur de votre serveur peut stocker ses cl\u00e9s sur le serveur Vault. Le probl\u00e8me se pose lorsque l'utilisateur cr\u00e9e une cl\u00e9, par exemple, sur le serveur server1, puis essaie de cr\u00e9er une cl\u00e9 avec le m\u00eame identifiant sur server2, par exemple :<\/p>\n<pre><code class=\"sql\">--serveur1:\nselect keyring_key_store('ROB_1','AES',\"123456789012345\");\n1\n--1 signifie une r\u00e9ussite\n--serveur2:\nselect keyring_key_store('ROB_1','AES',\"543210987654321\");\n1<\/code><\/pre>\n<p>\nAttendez. Les deux serveurs utilisent le m\u00eame serveur Vault, la fonction keyring_key_store ne devrait-elle pas \u00e9chouer sur le serveur server2 ? \u00c9tonnamment, si vous essayez de faire la m\u00eame chose sur un m\u00eame serveur, vous obtiendrez une erreur :<\/p>\n<pre><code class=\"sql\">--serveur1:\nselect keyring_key_store('ROB_1','AES',\"123456789012345\");\n1\nselect keyring_key_store('ROB_1','AES',\"543210987654321\");\n0<\/code><\/pre>\n<p>\nCorrect, ROB_1 existe d\u00e9j\u00e0.<\/p>\n<p>Discutons d'abord du deuxi\u00e8me exemple. Comme mentionn\u00e9 pr\u00e9c\u00e9demment, keyring_vault ou tout autre plugin de stockage (keyring) met en cache tous les identifiants de cl\u00e9 en m\u00e9moire. Ainsi, apr\u00e8s la cr\u00e9ation d'une nouvelle cl\u00e9, ROB_1 est ajout\u00e9 \u00e0 server1, et en plus d'envoyer cette cl\u00e9 au Vault, la cl\u00e9 est \u00e9galement ajout\u00e9e au cache. Maintenant, lorsque nous tentons d'ajouter cette m\u00eame cl\u00e9 une deuxi\u00e8me fois, keyring_vault v\u00e9rifie si cette cl\u00e9 existe dans le cache et renvoie une erreur. <\/p>\n<p>Dans le premier cas, la situation est diff\u00e9rente. Les serveurs server1 et server2 ont des caches distincts. Apr\u00e8s avoir ajout\u00e9 ROB_1 au cache des cl\u00e9s sur le serveur server1 et au serveur Vault, le cache des cl\u00e9s sur server2 n'est pas synchronis\u00e9. Il n'y a pas de cl\u00e9 ROB_1 dans le cache sur server2. Ainsi, la cl\u00e9 ROB_1 est enregistr\u00e9e dans keyring_key_store et sur le serveur Vault, ce qui \u00e9crase en fait (!) la valeur pr\u00e9c\u00e9dente. Maintenant, la cl\u00e9 ROB_1 sur le serveur Vault est \u00e9gale \u00e0 543210987654321. Il est int\u00e9ressant de noter que le serveur Vault ne bloque pas de telles actions et \u00e9crase facilement l'ancienne valeur.<\/p>\n<p>Nous voyons maintenant pourquoi la s\u00e9paration par serveurs sur Vault peut \u00eatre importante \u2014 lorsque vous utilisez keyring_udf et souhaitez stocker des cl\u00e9s dans Vault. Comment assurer une telle s\u00e9paration sur le serveur Vault ? <\/p>\n<p>Il existe deux mani\u00e8res de s\u00e9parer sur Vault. Vous pouvez cr\u00e9er diff\u00e9rents points de montage pour chaque serveur ou utiliser diff\u00e9rents chemins au sein d'un m\u00eame point de montage. La meilleure fa\u00e7on de le montrer est par des exemples. Commen\u00e7ons donc par des points de montage distincts : <\/p>\n<pre><code class=\"sql\">--server1:\nvault_url = http:\/\/127.0.0.1:8200\nsecret_mount_point = server1_mount\ntoken = (...)\nvault_ca = (...)\n\n--server2:\nvault_url = http:\/\/127.0.0.1:8200\nsecret_mount_point = server2_mount\ntoken = (...)\nvault_ca = (...)<\/code><\/pre>\n<p>\nIci, on peut voir que server1 et server2 utilisent diff\u00e9rents points de montage. Lors de la s\u00e9paration des chemins, la configuration ressemblera \u00e0 ceci :<\/p>\n<pre><code class=\"sql\">--server1:\nvault_url = http:\/\/127.0.0.1:8200\nsecret_mount_point = mount_point\/server1\ntoken = (...)\nvault_ca = (...)\n--server2:\nvault_url = http:\/\/127.0.0.1:8200\nsecret_mount_point = mount_point\/server2\ntoken = (...)\nvault_ca = (...)<\/code><\/pre>\n<p>\nDans ce cas, les deux serveurs utilisent le m\u00eame point de montage \u00abmount_point\u00bb, mais des chemins diff\u00e9rents. Lors de la cr\u00e9ation du premier secret sur le serveur server1 \u00e0 ce chemin, le serveur Vault cr\u00e9e automatiquement le r\u00e9pertoire \u00abserver1\u00bb. Pour server2, c'est la m\u00eame chose. Quand vous supprimez le dernier secret dans mount_point\/server1 ou mount_point\/server2, le serveur Vault supprime \u00e9galement ces r\u00e9pertoires. Si vous utilisez la s\u00e9paration des chemins, vous devez cr\u00e9er un seul point de montage et modifier les fichiers de configuration pour que les serveurs utilisent des chemins distincts. Le point de montage peut \u00eatre cr\u00e9\u00e9 \u00e0 l'aide d'une requ\u00eate HTTP. Avec CURL, cela peut se faire comme suit :<\/p>\n<pre><code class=\"sql\">curl -L -H \"X-Vault-Token: TOKEN\" \u2013cacert VAULT_CA\n--data '{\"type\":\"generic\"}' --request POST VAULT_URL\/v1\/sys\/mounts\/SECRET_MOUNT_POINT<\/code><\/pre>\n<p>\nTous les champs (TOKEN, VAULT_CA, VAULT_URL, SECRET_MOUNT_POINT) correspondent aux param\u00e8tres du fichier de configuration. Bien s\u00fbr, vous pouvez utiliser les utilitaires Vault pour faire la m\u00eame chose. Mais il est plus simple d'automatiser la cr\u00e9ation du point de montage. J'esp\u00e8re que ces informations vous seront utiles et que nous nous reverrons dans les prochains articles de cette s\u00e9rie.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/luFp\/\"><img decoding=\"async\" alt=\"Chiffrement dans MySQL : stockage des cl\u00e9s\" src=\"\/wp-content\/uploads\/2020\/10\/291dcdd68660bfc312021582baa628ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<blockquote>\n<h4>Lire aussi :<\/h4>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/497466\/\">Sysbench et distribution des variables al\u00e9atoires<\/a><\/noindex><\/li>\n<\/ul>\n<\/blockquote>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/522092\/\">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 \u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (Transparent Data Encryption, TDE) \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0432 Percona Server for MySQL \u0438 MySQL \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e. \u041d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0438 \u043a\u0430\u043a\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 TDE \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440? \u0412 \u044d\u0442\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97665,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97664","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\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.\" \/>\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-hranilishhe-klyuchej\" \/>\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: \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 | 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\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej\" \/>\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-20T06:42:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-20T06:42:20+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\udd47Cryptage dans MySQL : stockage des cl\u00e9s | ProHoster","description":"\u00c0 l'approche du lancement d'un nouveau cycle pour le cours \u00abBases de donn\u00e9es\u00bb, nous avons pr\u00e9par\u00e9 pour vous la traduction d'un article utile.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej","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: \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 | 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\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej","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-20T06:42:20+00:00","article:modified_time":"2020-10-20T06:42:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97664","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:15:28","updated":"2022-10-03 07:13:50","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\/97664","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=97664"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/97664\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/97665"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=97664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=97664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=97664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}