Elegir un algoritmo de cifrado

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

El cifrado es una de las medidas defensivas con que cuenta cualquier administrador que desee proteger una instancia de SQL Server.

Los algoritmos de cifrado definen las transformaciones de datos que los usuarios no autorizados no pueden revertir fácilmente. SQL Server permite a los administradores y los desarrolladores de software elegir entre varios algoritmos, incluidos DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, RC4 de 128 bits, DESX, AES de 128 bits, AES de 192 bits y AES de 256 bits.

Nota

A partir de SQL Server 2016 (13.x), todos los algoritmos, a excepción de AES_128, AES_192 y AES_256, están en desuso. Para usar algoritmos anteriores (no se recomienda), debe establecer la base de datos en el nivel de compatibilidad de base de datos 120 o inferior.

Ningún algoritmo único resulta idóneo para todas las situaciones. Además, ofrecer información detallada sobre las ventajas de cada uno queda fuera del ámbito de los Libros en pantalla de SQL Server . No obstante, se aplican los siguientes principios generales:

  • El cifrado seguro suele consumir más recursos de la CPU que un cifrado menos seguro.

  • Las claves largas suelen producir un cifrado más seguro que las claves cortas.

  • El cifrado asimétrico es más lento que el simétrico.

  • Las contraseñas largas y complejas son más seguras que las contraseñas cortas.

  • Por lo general, el cifrado simétrico se recomienda en los casos en los que la clave solo se almacena de forma local, mientras que el asimétrico es pertinente cuando las claves deben compartirse a través de la conexión.

  • Si cifra una gran cantidad de datos, debe cifrar los datos con una clave simétrica y cifrar la clave simétrica con una clave asimétrica.

  • Los datos cifrados no se pueden comprimir, pero los datos comprimidos se pueden cifrar. Si usa compresión, debe comprimir los datos antes de cifrarlos.

Importante

El algoritmo RC4 se admite únicamente por razones de compatibilidad con versiones anteriores. El material nuevo solo se puede cifrar con RC4 o RC4_128 cuando la base de datos tenga el nivel de compatibilidad 90 o 100. (No se recomienda). Use un algoritmo más reciente como uno de los algoritmos AES en su lugar. En SQL Server 2012 (11.x) y versiones posteriores, el material cifrado con RC4 o RC4_128 se puede descifrar en cualquier nivel de compatibilidad.

El uso repetido de la misma RC4 o RC4_128 KEY_GUID en bloques diferentes de datos producirá la misma clave RC4 porque SQL Server no proporciona un valor de salt automáticamente. El uso repetido de la misma clave RC4 es un error conocido que producirá un cifrado muy poco seguro. Por consiguiente, hemos dejado de utilizar las palabras clave RC4_128 y RC4. Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

Para obtener más información acerca de los algoritmos y la tecnología de cifrado, vea la sección referente a conceptos claves de seguridad de la publicación .NET Framework Developer's Guide en MSDN.

Clarificación con respecto a los algoritmos DES:

  • DESX se denominó incorrectamente. Las claves simétricas creadas con ALGORITHM = DESX realmente utilizan el cifrado TRIPLE DES con una clave de 192 bits. No se proporciona el algoritmo DESX. Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

  • Las claves simétricas creadas con ALGORITHM = TRIPLE_DES_3KEY utilizan TRIPLE DES con una clave de 192 bits.

  • Las claves simétricas creadas con ALGORITHM = TRIPLE_DES utilizan TRIPLE DES con una clave de 128 bits.

Tarea Tipo
Cifrar mediante una clave simétrica. CREATE SYMMETRIC KEY (Transact-SQL)
Cifrar mediante una clave asimétrica. CREATE ASYMMETRIC KEY (Transact-SQL)
Cifrar mediante un certificado. CREATE CERTIFICATE (Transact-SQL)
Cifrar los archivos de base de datos mediante el cifrado de datos transparente. Cifrado de datos transparente (TDE)
Cómo cifrar una columna de una tabla. Cifrar una columna de datos

Consulte también

Cifrado de SQL Server
Jerarquía de cifrado