Cifrado en MySQL: rotación de claves maestras

Con la próxima apertura del nuevo ciclo del curso «Bases 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 con la clave maestra (Master Key). Hoy, basándonos en los conocimientos adquiridos anteriormente, veremos la rotación de claves maestras.

La rotación de claves maestras implica que se genera una nueva clave maestra y con esta nueva clave se cifran nuevamente las claves de los espacios de tabla (que se almacenan en los encabezados de los espacios de tabla).

Recordemos cómo se ve el encabezado de un espacio de tabla cifrado:

Cifrado en MySQL: rotación de claves maestras

En el artículo anterior sabemos que el servidor al iniciar lee los encabezados de todos los espacios de tabla cifrados y recuerda el mayor KEY ID. Por ejemplo, si tenemos tres tablas con KEYID = 3 y una tabla con KEYID = 4, el identificador de clave máximo será 4. Llamemos a este KEY ID — MAX KEY ID.

Cómo funciona la rotación de la clave maestra

1. El usuario ejecuta ALTER INNODB MASTER KEY.

2. El servidor solicita al almacén de claves (keyring) la generación de una nueva clave maestra con el UUID del servidor y KEYID, que es igual al MAXKEYID aumentado en uno. Así, obtenemos el identificador de la clave maestra, que es INNODBKEY-UUID- (MAXKEYID + 1). Al generar exitosamente la clave maestra, el MAX KEY ID se incrementa en uno (es decir, MAXKEYID = MAXKEYID + 1).

3. El servidor revisa todos los espacios de tabla cifrados con la clave maestra y para cada espacio de tabla:

  • cifra la clave de espacio de tabla con la nueva clave maestra;

  • actualiza el identificador de clave a nuevo MAXKEYID;

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

Como sabemos, el identificador de la clave maestra (Master Key ID) utilizado para descifrar la tabla consiste en el UUID y el KEY ID leídos del encabezado del espacio de tabla. Lo que hacemos 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 procedentes de diferentes lugares, como diferentes copias de seguridad, es posible que utilicen diferentes claves maestras. Todas estas claves maestras deberán recuperarse del almacén al iniciar el servidor. Esto puede ralentizar el inicio del servidor, especialmente si se utiliza un almacén de claves del servidor. A través de la rotación de la clave maestra, volvemos a cifrar las claves de los espacios de tabla con una única clave maestra, que es la misma para todos los espacios de tabla. Ahora, al iniciar, el servidor solo necesita obtener una clave maestra.

Esto, por supuesto, es solo un efecto secundario agradable. El objetivo principal de la rotación de claves maestras es hacer que nuestro servidor sea más seguro. En caso de que la clave maestra haya sido de alguna manera robada del almacén (por ejemplo, del Vault Server), se puede generar una nueva clave maestra y volver a cifrar las claves de los espacios de tabla, haciendo que la clave robada sea inválida. Estamos a salvo… casi.

En el artículo anterior mencioné que, después del robo de la clave de un espacio de tabla, un tercero puede utilizarla para descifrar datos, siempre que tenga acceso a nuestro disco. En el caso de que la clave maestra sea robada y haya acceso a los datos cifrados, se puede utilizar la clave maestra robada para descifrar la clave del espacio de tabla y obtener los datos descifrados. Como podemos ver, la rotación de la clave 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 datos sigue siendo la misma. Por lo tanto, un 'hacker' puede continuar utilizándola para descifrar datos. Ya insinué que Percona Server for MySQL puede llevar a cabo un verdadero re-cifrado de los espacios de tabla, no solo un simple re-cifrado de la clave del espacio de tabla. Esta función se llama hilos de cifrado (encryption threads). Sin embargo, en este momento, esta funcionalidad aún es experimental.

La rotación de la clave maestra es útil cuando la clave maestra ha sido robada, pero el delincuente no tiene la capacidad de usarla y descifrar las claves de los espacios de tabla.

Regístrate para una clase demo gratuita.

Leer más:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster