Cifrado MySQL: cómo funciona la rotación de la clave maestra

En la última publicación de blog de esta serie, discutimos en detalle cómo funciona el cifrado de clave maestra. En esta publicación, en base a lo que ya sabemos sobre la criptografía de Master Key, analizamos cómo funciona la rotación de Master Key.

La idea detrás de la rotación de la clave maestra es que queremos generar una nueva clave maestra y usar esta nueva clave maestra para actualizar la clave del espacio de tablas (almacenada en el encabezado del espacio de tablas).

Recuerde cómo se ve una criptografía de clave maestra (ubicada en el encabezado del espacio de tablas):

De la publicación de blog anterior, sabemos que cuando un servidor comienza a pasar por todos los encabezados de cifrado de los espacios de tabla cifrados. Durante esto, recuerde el ID de CLAVE más alto que lea de todos los espacios de tabla cifrados. Por ejemplo, si tenemos tres tablas con KEY_ID = 3 y una tabla con KEY ID = 4, significa que la ID de clave más alta que encontramos en el servidor es 4. Llamemos a esto la ID de CLAVE más alta – ID DE CLAVE MÁX.

Cómo funciona la rotación del paso maestro, paso a paso:

1. Problemas de usuario ALTER INNODB MASTER KEY;

2. El servidor le pide al conjunto de claves que genere una nueva clave maestra con el UUID y KEY_ID del servidor siendo MAX KEY ID incrementado en uno. Entonces tenemos INNODB_KEY-UUID- (MAX_KEY_ID + 1). En la generación exitosa de la clave maestra, el MAX KEY ID se incrementa en uno (es decir, MAX_KEY_ID = MAX_KEY_ID + 1).

3. El servidor pasa a través de todos los espacios de tabla de clave maestra cifrados en el servidor y a través de cada espacio de tabla:

– cifra la clave del espacio de tablas con la nueva clave maestra
– actualice la ID de la clave a la nueva MAX KEY ID
– si el UUID es diferente del UUID del servidor, se establece en el UUID del servidor

Como sabemos, el ID de clave maestra que se usa para descifrar la tabla se construye a partir del UUID y el ID de CLAVE leídos 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, de modo que el servidor recupere la clave maestra correcta cuando intente descifrar el espacio de tabla.

Si hay un espacio de tabla que proviene de diferentes ubicaciones, como, por ejemplo, recuperado de diferentes copias de seguridad, esos espacios de tabla pueden usar diferentes claves maestras. Todas esas claves maestras deben recuperarse del conjunto de claves al comienzo del servidor. Esto podría ralentizar el inicio del servidor, especialmente si usamos un llavero basado en servidor. Al rotar la clave maestra, puede cifrar las claves del espacio de tabla con una clave maestra, la misma para todos los espacios de tabla. Ahora el servidor necesita recuperar una única clave maestra del servidor de claves (para un conjunto de claves basado en servidor) al inicio.

Esto es, por supuesto, solo un buen efecto secundario: el objetivo principal por el que hacemos la rotación de la clave maestra es hacer que nuestro servidor sea más seguro. En caso de que el conjunto de claves haya robado la clave maestra (por ejemplo, de Vault Server), podemos generar una nueva clave maestra y volver a cifrar las claves en los espacios de tabla, haciendo que la clave robada ya no sea válida. Estamos a salvo… casi.

En la publicación de blog anterior, expliqué que una vez que se roba una clave de tablespace descifrada, un tercero puede continuar usándola para descifrar nuestros datos, datos que tienen acceso a nuestro disco. En caso de robo de la Master Key, y si el tercero tiene acceso a nuestros datos cifrados, podrá utilizar la Master Key robada para descifrar la clave del tablespace y así poder descifrar los datos. Como podemos ver, la rotación de Master Key no nos ayudará en este caso. Volveremos a cifrar la clave del espacio de tabla con la nueva clave maestra, pero la clave del espacio de tabla actual utilizada para cifrar/descifrar el espacio de tabla seguirá siendo la misma; para que «un hacker» pueda seguir usándolo para descifrar los datos. Primero insinué que Percona Server para MySQL tiene una forma de realizar el cifrado real de los espacios de tabla en lugar de cifrar la clave del espacio de tabla. La función se denomina subprocesamiento criptográfico; sin embargo, en este momento, todavía es una función experimental.

Un caso en el que la rotación de la clave maestra es útil es cuando se roba la clave maestra, pero el atacante no tuvo la oportunidad de usar y descifrar nuestras claves de espacio de tablas.

Author: Ing. Luis

A lo largo de conocer Windows y otros sistemas operativos me eh encontrado con diversos tipos de error, ahora brindo soluciones según mi experiencia-

Deja un comentario