Cifrado en MySQL: rotación da chave mestra

En previsión do inicio dunha nova matrícula para o curso "Base de datos" Seguimos publicando unha serie de artigos sobre o cifrado en MySQL.

No artigo anterior desta serie comentamos, Como funciona o cifrado da chave mestra?. Hoxe, baseándonos nos coñecementos adquiridos anteriormente, vexamos a rotación das chaves mestras.

A rotación da chave mestra implica xerar unha nova chave mestra e volver cifrar as chaves do espazo de táboa (que se almacenan nas cabeceiras do espazo de táboa) con esta nova clave.

Lembremos como é a cabeceira dun espazo de táboa cifrado:

Cifrado en MySQL: rotación da chave mestra

Polo artigo anterior, sabemos que o servidor le as cabeceiras de todos os espazos de táboa cifrados ao inicio e lembra o ID de CLAVE máis grande. Por exemplo, se temos tres táboas con KEYID = 3 e unha táboa con KEYID = 4, entón o ID de chave máximo será 4. Chamemos a este ID DE CLAVE - ID DE CLAVE MAX.

Como funciona a rotación da chave mestra

1. O usuario executa ALTER INNODB MASTER KEY.

2. O servidor solicita ao anel de chaves que xere unha nova chave mestra co UUID e KEY do servidorO ID igual a MAX aumentou nun unKeyID. Polo tanto, obtemos o ID da chave mestra igual a INNODBKEY-UUID-(MAXKeyID + 1). Tras a xeración exitosa da chave mestra, o ID MAX KEY increméntase nun (é dicir, MAXKeyID=MAXKeyID + 1).

3. O servidor analiza todos os espazos de táboa cifrados coa chave mestra e para cada espazo de táboa:

  • cifra a chave do espazo de táboa cunha nova chave mestra;

  • actualiza o ID da chave ao novo MAXKeyDNI;

  • se o UUID é diferente do UUID do servidor, entón actualiza o UUID do servidor.

Como sabemos, o ID de chave mestra que se usa para descifrar unha táboa consiste nun UUID e un ID de CLAVE lido desde a cabeceira do espazo de táboa. O que facemos agora é actualizar esta información na cabeceira de cifrado do espazo de táboa para que o servidor reciba a clave mestra correcta.

Se temos espazos de táboa que proveñen de diferentes lugares, como diferentes copias de seguridade, entón poden usar diferentes chaves mestras. Todas estas chaves mestras terán que ser recuperadas do repositorio cando se inicie o servidor. Isto pode retardar o inicio do servidor, especialmente se está a usar un almacén de claves baseado no servidor. Coa rotación da chave mestra, volvemos cifrar as chaves de espazo de táboa cunha chave mestra que é a mesma para todos os espazos de táboa. Agora, ao iniciar, o servidor debería recibir só unha chave mestra.

Este é, por suposto, só un efecto secundario agradable. O obxectivo principal de rotar as chaves mestras é facer que o noso servidor sexa máis seguro. Se a chave mestra foi roubada dalgún xeito da bóveda (por exemplo, do servidor de Vault), entón pódese xerar unha nova chave mestra e as chaves do espazo de táboas pódense volver cifrar, invalidando a chave roubada. Estamos a salvo... case.

Nun artigo anterior, discutín como unha vez roubada unha chave de espazo de táboa, un terceiro pode usala para descifrar datos. Sempre que haxa acceso ao noso disco. Se rouban a chave mestra e tes acceso aos datos cifrados, podes usar a chave mestra roubada para descifrar a chave do espazo de táboa e obter os datos descifrados. Como podes ver, a rotación da chave mestra non axuda neste caso. Volvemos cifrar a chave do espazo de táboa cunha nova chave mestra, pero a clave real utilizada para cifrar/descifrar os datos segue sendo a mesma. Polo tanto, o "hacker" pode seguir usándoo para descifrar os datos. Antes decía isto Servidor Percona para MySQL pode realizar un verdadeiro cifrado de espazo de táboa, non só un simple cifrado de chave de espazo de táboa. Esta función chámase fíos de cifrado. Non obstante, esta funcionalidade aínda é experimental polo momento.

A rotación da chave mestra é útil cando a chave mestra é roubada pero o atacante non ten forma de usala e descifrar as chaves do espazo de táboa.

Rexístrate para unha lección de demostración gratuíta.

Le máis:

Fonte: www.habr.com