CREATE SYMMETRIC KEY (Transact-SQL)

Actualizado: 17 de noviembre de 2008

Genera una clave simétrica y especifica sus propiedades.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

CREATE SYMMETRIC KEY key_name [ AUTHORIZATION owner_name ]
    WITH <key_options> [ , ... n ]
    ENCRYPTION BY <encrypting_mechanism> [ , ... n ] 

<encrypting_mechanism> ::=
    CERTIFICATE certificate_name 
    |
    PASSWORD = 'password' 
    |
    SYMMETRIC KEY symmetric_key_name 
    |
    ASYMMETRIC KEY asym_key_name    

<key_options> ::=
    KEY_SOURCE = 'pass_phrase'
    |
    ALGORITHM = <algorithm>
    |
    IDENTITY_VALUE = 'identity_phrase'

<algorithm> ::=
    DES | TRIPLE_DES | RC2 | RC4 | RC4_128
    | DESX | AES_128 | AES_192 | AES_256 

Argumentos

  • key_name
    Es el nombre único por el que se conoce la clave simétrica en la base de datos. Los nombres de estas tablas temporales empiezan por el signo de número (#). Por ejemplo, #temporaryKey900007. No se puede crear una clave simétrica que presente un nombre que comienza por más de un signo de número.
  • AUTHORIZATION owner_name
    Especifica el nombre del usuario de base de datos o función de aplicación que será propietario de la clave.
  • certificate_name
    Especifica el nombre del certificado que se utilizará para cifrar la clave simétrica. El certificado debe existir en la base de datos.
  • 'password'
    Especifica una contraseña desde la que se deriva una clave TRIPLE_DES con la que proteger la clave simétrica. Se comprobará la complejidad de la contraseña. Debe utilizar siempre contraseñas seguras.
  • symmetric_key_name
    Especifica una clave simétrica que se utilizará para cifrar la clave que vaya a crear. La clave especificada debe existir en la base de datos y debe estar abierta.
  • asym_key_name
    Especifica una clave asimétrica que se utilizará para cifrar la clave que vaya a crear. La clave asimétrica debe existir en la base de datos.
  • KEY_SOURCE ='pass_phrase'
    Especifica una frase de contraseña a partir de la cual se derivará la clave.
  • IDENTITY_VALUE ='identity_phrase'
    Especifica una frase de identidad a partir de la cual se generará una GUID para etiquetar los datos cifrados con una clave temporal.

Notas

Al crear una clave simétrica, ésta debe cifrarse utilizando al menos uno de los siguientes elementos: certificado, contraseña, clave simétrica o clave asimétrica. La clave puede tener más de un cifrado de cada tipo. En otras palabras, una misma clave simétrica puede cifrarse con varios certificados, contraseñas, claves simétricas y claves asimétricas a la vez.

ms188357.Caution(es-es,SQL.90).gifAdvertencia:
Si se utiliza una contraseña para cifrar una clave simétrica, en lugar de la clave pública de la clave maestra de base de datos, se utiliza el algoritmo de cifrado TRIPLE_DES. Por ello, las claves creadas con un algoritmo de cifrado seguro, como AES, se protegen mediante un algoritmo menos seguro.

Puede utilizar la contraseña opcional para cifrar la clave simétrica antes de distribuir la clave a varios usuarios.

Las claves temporales son propiedad del usuario que las creó. Las claves temporales son sólo válidas para la sesión actual.

IDENTITY_VALUE genera una GUID con la que se etiquetan los datos cifrados con la nueva clave simétrica. Este etiquetado puede utilizarse para asignar claves a datos cifrados. La GUID generada por una frase específica será siempre la misma. Si se utiliza una frase para generar una GUID, no es posible volver a utilizar la frase en la sesión actual, a menos que se haya quitado la clave simétrica asociada. IDENTITY_VALUE es una cláusula opcional; sin embargo, le recomendamos que la utilice para almacenar los datos cifrados con una clave temporal.

No existe un algoritmo de cifrado predeterminado.

ms188357.note(es-es,SQL.90).gifImportante:
No es recomendable utilizar los cifrados de secuencias RC4 y RC4_128 para proteger datos confidenciales. SQL Server 2005 no aplica un valor salt al cifrado realizado con estas claves.

Puede ver la información acerca de las claves simétricas en la vista de catálogo sys.symmetric_keys.

Se agregó una aclaración sobre los algoritmos DES:

  • DESX estaba escrito incorrectamente. Las claves simétricas creadas con ALGORITHM = DESX usan realmente el cifrado TRIPLE DES con una clave de 192 bits. No se proporciona el algoritmo DESX.
  • Las claves simétricas creadas con ALGORITHM = TRIPLE DES usan TRIPLE DES con una clave de 128 bits.

Permisos

Requiere el permiso ALTER ANY SYMMETRIC KEY en la base de datos. Si se especifica la cláusula AUTHORIZATION, es necesario el permiso IMPERSONATE en el usuario de base de datos o el permiso ALTER en la función de aplicación. Si el cifrado se realiza mediante una clave asimétrica o un certificado, es necesario el permiso VIEW DEFINITION en el certificado o en la clave asimétrica.

Ejemplos

A. Crear una clave simétrica

En el siguiente ejemplo se crea una clave simétrica denominada JanainaKey09 mediante el algoritmo AES 256 y se cifra la nueva clave con el certificado Shipping04.

CREATE SYMMETRIC KEY JanainaKey09 WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE Shipping04;
GO

A. Crear una clave simétrica temporal

En el siguiente ejemplo se crea una clave simétrica temporal denominada #MarketingXXV a partir de la frase de contraseña: The square of the hypotenuse is equal to the sum of the squares of the sides. La clave se suministra con un GUID generado a partir de la cadena Pythagoras y se cifra con el certificado Marketing25.

CREATE SYMMETRIC KEY #MarketingXXV 
     WITH ALGORITHM = AES_128,
     KEY_SOURCE 
     = 'The square of the hypotenuse is equal to the sum of the squares of the sides',
     IDENTITY_VALUE = 'Pythagoras'
     ENCRYPTION BY CERTIFICATE Marketing25;
GO

Vea también

Referencia

ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
sys.symmetric_keys (Transact-SQL)

Otros recursos

Elegir un algoritmo de cifrado
Jerarquía de cifrado

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

5 de diciembre de 2005

Contenido nuevo:
  • Se agregó una nota importante acerca del uso de los cifrados de secuencias RC4 y RC4_128.

17 de noviembre de 2008

Contenido nuevo:
  • Se agregó una aclaración sobre el algoritmo DESX.