Cifrado en MySQL: Rotación de clave maestra

En previsión del inicio de una nueva matrícula para el curso "Base de datos" Seguimos publicando una serie de artículos sobre cifrado en MySQL.

En el artículo anterior de esta serie, discutimos cómo funciona el cifrado de clave maestra. Hoy, según el conocimiento adquirido anteriormente, veamos la rotación de las teclas principales.

La rotación de la clave maestra implica generar una nueva clave maestra y volver a cifrar las claves del espacio de tabla (que se almacenan en los encabezados del espacio de tabla) con esta nueva clave.

Recordemos cómo se ve el encabezado de un tablespace encriptado:

Cifrado en MySQL: Rotación de clave maestra

Del artículo anterior, sabemos que el servidor lee los encabezados de todos los tablespaces encriptados al inicio y recuerda la KEY ID más grande. Por ejemplo si tenemos tres tablas con KEYID = 3 y una tabla con CLAVEID = 4, entonces la ID de clave máxima será 4. Llamemos a esto ID DE CLAVE - ID DE CLAVE MÁX.

Cómo funciona la rotación de claves maestras

1. El usuario ejecuta ALTER INNODB MASTER KEY.

2. El servidor solicita el conjunto de claves para generar una nueva clave maestra con el UUID y la CLAVE del servidorID igual a uno más MAXVENTAJASIDENTIFICACIÓN. Entonces obtenemos una identificación de clave maestra igual a INNODBCLAVE-UUID-(MÁX.VENTAJASDNI + 1). Tras la generación exitosa de la clave maestra, MAX KEY ID se incrementa en uno (es decir, MAXVENTAJASIdentificación = MÁX.VENTAJASDNI + 1).

3. El servidor escanea todos los tablespaces cifrados con la clave maestra y para cada tablespace:

  • cifra la clave del espacio de tablas con la nueva clave maestra;

  • actualiza la identificación de la clave al nuevo MAXVENTAJASIDENTIFICACIÓN;

  • si el UUID es diferente del UUID del servidor, actualice el UUID del servidor.

Como sabemos, la ID de clave maestra utilizada para descifrar una tabla consta de un UUID y una ID de CLAVE leída del encabezado del espacio de tabla. Lo que estamos haciendo ahora es actualizar esta información en el encabezado de cifrado del espacio de tabla para que el servidor reciba la clave maestra correcta.

Si tenemos espacios de tabla de diferentes ubicaciones, como diferentes copias de seguridad, entonces pueden usar diferentes claves maestras. Todas estas claves maestras deberán recuperarse del repositorio cuando se inicie el servidor. Esto puede ralentizar el inicio del servidor, especialmente si se utiliza un almacén de claves del lado del servidor. Con la rotación de claves maestras, volvemos a cifrar las claves de espacios de tabla con una única clave maestra que es la misma para todos los espacios de tabla. El servidor ahora debería recibir solo una clave maestra al inicio.

Esto, por supuesto, es solo un efecto secundario agradable. El objetivo principal de la rotación de la clave maestra es hacer que nuestro servidor sea más seguro. En caso de que la clave maestra haya sido robada de algún modo del almacén (por ejemplo, del servidor Vault), es posible generar una nueva clave maestra y volver a cifrar las claves del espacio de tabla, invalidando la clave robada. Estamos a salvo... casi.

En un artículo anterior, hablé sobre cómo una vez que se roba una clave de espacio de tabla, un tercero puede usarla para descifrar los datos. Siempre que haya acceso a nuestro disco. Si le roban la clave maestra y tiene acceso a los datos cifrados, puede usar la clave maestra robada para descifrar la clave del tablespace y obtener los datos descifrados. Como puede ver, la rotación de la llave maestra no ayuda en este caso. Volvemos a cifrar la clave del espacio de tabla con la nueva clave maestra, pero la clave real utilizada para cifrar/descifrar los datos sigue siendo la misma. Por lo tanto, el "hacker" puede seguir usándolo para descifrar los datos. Antes insinué que Servidor Percona para MySQL puede realizar un verdadero recifrado de espacios de tablas, no solo un simple recifrado de claves de espacios de tablas. Esta función se denomina subprocesos de cifrado. Sin embargo, esta funcionalidad todavía es experimental en este momento.

La rotación de la clave maestra es útil cuando se roba la clave maestra, pero no hay forma de que un atacante la use y descifre las claves del tablespace.

Regístrese para una lección de demostración gratuita.

Lee mas:

Fuente: habr.com