SQL Server y claves de cifrado de base de datos (motor de base de datos)

SQL Server utiliza claves de cifrado para proteger los datos, las credenciales y la información de conexión que se almacena en una base de datos servidor. SQL Server tiene dos tipos de claves: simétricas y asimétricas. Las claves simétricas utilizan la misma contraseña para cifrar y descifrar los datos. Las claves asimétricas utilizan una contraseña para cifrar los datos (denominada clave pública) y otra para descifrar los datos (denominada clave privada).

En SQL Server, las claves de cifrado incluyen una combinación de claves públicas, privadas y simétricas que se utilizan para proteger la información confidencial. La clave simétrica se crea durante la inicialización de SQL Server al iniciar por primera vez la instancia de SQL Server. SQL Server utiliza la clave para cifrar los datos confidenciales que se almacenan en SQL Server. El sistema operativo crea las claves públicas y privadas, y éstas se utilizan para proteger la clave simétrica. Para cada instancia de SQL Server que almacena datos confidenciales en una base de datos se crea un par de claves pública y privada.

Aplicaciones para las claves de SQL Server y las claves de las bases de datos

SQL Server tiene dos aplicaciones principales para las claves: una clave maestra de servicio (SMK) generada en y para una instancia de SQL Server, y una clave maestra de base de datos (DMK) utilizada para una base de datos.

La clave maestra de servicio se genera automáticamente la primera vez que se inicia la instancia de SQL Server y se utiliza para cifrar una contraseña de servidor vinculado, las credenciales y la clave maestra de base de datos. La SMK se cifra mediante la clave del equipo local y la API de protección de datos de Windows (DPAPI). La DPAPI utiliza una clave derivada de las credenciales de Windows de la cuenta de servicio de SQL Server y de las credenciales del equipo. La clave maestra de servicio sólo puede descifrarse con la cuenta de servicio en la que se creó o con una entidad de seguridad que tenga acceso a las credenciales del equipo.

La clave maestra de base de datos es una clave simétrica que se utiliza para proteger las claves privadas de certificados y las claves asimétricas presentes en la base de datos. También se puede utilizar para cifrar los datos, pero sus limitaciones de longitud hacen que sea más práctico utilizar una clave simétrica.

Al crearla, la clave maestra se cifra mediante el algoritmo Triple DES y una contraseña proporcionada por el usuario. Para habilitar el descifrado automático de la clave maestra, se cifra una copia de la clave mediante la SMK. Esta copia se almacena en la base de datos donde se utiliza y en la base de datos del sistema master.

La copia de la DMK almacenada en la base de datos del sistema master se actualiza automáticamente siempre que se modifica la DMK. Sin embargo, este comportamiento predeterminado se puede cambiar con la opción DROP ENCRYPTION BY SERVICE MASTER KEY de la instrucción ALTER MASTER KEY. Para abrir una DMK que no se haya cifrado con la clave maestra de servicio, debe utilizarse la instrucción OPEN MASTER KEY y una contraseña.

Administrar las claves de SQL Server y las claves de las bases de datos

La administración de las claves de cifrado consiste en crear nuevas claves de base de datos, crear una copia de seguridad de las claves del servidor y de las bases de datos, y saber cuándo y cómo se deben restaurar, eliminar o cambiar dichas claves.

Para administrar las claves simétricas, puede utilizar las herramientas incluidas en SQL Server para hacer lo siguiente:

  • Crear una copia de seguridad de las claves del servidor y de las claves de las bases de datos que se pueda utilizar para recuperar una instalación de un servidor de informes, o como parte de una migración planeada.

  • Restaurar una clave guardada previamente en una base de datos. Esto permite el acceso de una nueva instancia del servidor a datos existentes que no cifró originalmente.

  • Eliminar los datos cifrados en una base de datos, en el caso poco probable de que ya no se tenga acceso a datos cifrados.

  • Volver a crear claves y volver a cifrar datos en el caso poco probable de que la clave esté en unas circunstancias comprometidas. Como práctica recomendada de seguridad, se deberían volver a crear las claves periódicamente (por ejemplo, cada cierto número de meses) para proteger el servidor de ataques que traten de descifrar las claves.

  • Agregar o quitar una instancia del servidor de una implementación escalada de este servidor en la que varios servidores comparten una sola base de datos y la clave que proporciona el cifrado reversible para dicha base de datos.

Información de seguridad importante

Para tener acceso a los objetos protegidos por la clave maestra de servicio, es necesaria la cuenta de servicio de SQL Server que se utilizó para crear la clave o la cuenta del equipo. Es decir, el equipo vinculado al sistema donde se creó la clave. Puede cambiar la cuenta de servicio de SQL Servero la cuenta del equipo sin perder el acceso a la clave. Sin embargo, si cambia ambas, perderá el acceso a la clave maestra de servicio. Si pierde el acceso a la clave maestra de servicio sin uno de estos dos elementos, no podrá descifrar los datos y los objetos cifrados mediante la clave original.

Las conexiones protegidas con la clave maestra de servicio no se pueden restaurar sin dicha clave.

El acceso a los objetos y los datos protegidos con la clave maestra de base de datos únicamente requiere la contraseña que se utiliza para proteger la clave.

Nota de advertenciaAdvertencia

Si pierde todo tipo de acceso a las claves descritas anteriormente, también perderá el acceso a los objetos, las conexiones y los datos protegidos mediante esas claves. Puede restaurar la clave maestra de servicio, tal y como se describe en los vínculos que se muestran a continuación, o puede regresar al sistema de cifrado original para recuperar el acceso. No hay ninguna "puerta trasera" para recuperar el acceso.

En esta sección