Compartir a través de


Cómo crear claves simétricas idénticas en dos servidores

Actualizado: 12 de diciembre de 2006

Para descifrar el texto cifrado, se necesita la clave que se usó para cifrarlo. Cuando el cifrado y el descifrado tienen lugar en una sola base de datos, la clave se almacena en la base de datos y está disponible, según los permisos, tanto para el cifrado como para el descifrado. Pero cuando ambos procesos ocurren en bases de datos diferentes o en servidores diferentes, la clave almacenada en una base de datos no está disponible para utilizarla en la segunda base de datos. En este tema se muestra cómo proporcionar una clave simétrica compartida a bases de datos de dos servidores diferentes.

ms366281.security(es-es,SQL.90).gifNota de seguridad:
Si es necesario pasar los datos de creación de la clave (KEY_SOURCE, ALGORITHM y IDENTITY_VALUE) a través de conexiones de red entre dos servidores, asegúrese de que las conexiones de red estén cifradas. Por ejemplo, puede utilizar SSL o IPSec. Para elegir y configurar el método de cifrado de red adecuado, consulte la documentación de su sistema operativo.

Información general

Crear claves simétricas idénticas no es difícil. Las claves simétricas creadas con las mismas opciones de clave, KEY_SOURCE, ALGORITHM e IDENTITY_VALUE, serán idénticas. Antes de crear una clave simétrica, debe comprobar que se hayan inicializado los mecanismos de administración de claves de SQL Server. Si aún no existen, debe crear una clave maestra de base de datos para habilitar la administración automática de claves y un certificado con el que cifrar la clave simétrica. Si lo desea, puede proteger la clave simétrica con una contraseña. Para obtener más información, vea CREATE SYMMETRIC KEY (Transact-SQL).

Ejemplo

En este ejemplo se crean claves simétricas idénticas en dos servidores. En el ejemplo se utiliza el algoritmo de cifrado AES_256. Los algoritmos de cifrado AES no se admiten en Windows XP ni en Windows Server 2000; es posible que tenga que especificar otro algoritmo, como TRIPLE_DES.

  1. Cree las claves ejecutando las siguientes instrucciones, CREATE MASTER KEY, CREATE CERTIFICATE y CREATE SYMMETRIC KEY, en ambos servidores.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My p@55w0Rd';
    GO
    CREATE CERTIFICATE [cert_keyProtection] WITH SUBJECT = 'Key Protection';
    GO
    CREATE SYMMETRIC KEY [key_DataShare] WITH
        KEY_SOURCE = 'My key generation bits. This is a shared secret!',
        ALGORITHM = AES_256, 
        IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret'
        ENCRYPTION BY CERTIFICATE [cert_keyProtection];
    GO
    
  2. Pruebe las claves ejecutando primero la instrucción OPEN SYMMETRIC KEY y la instrucción SELECT en un servidor.

    OPEN SYMMETRIC KEY [key_DataShare] 
        DECRYPTION BY CERTIFICATE cert_keyProtection;
    GO
    SELECT encryptbykey(key_guid('key_DataShare'), 'MyData' )
    GO
    -- For example, the output might look like this: 0x2152F8DA8A500A9EDC2FAE26D15C302DA70D25563DAE7D5D1102E3056CE9EF95CA3E7289F7F4D0523ED0376B155FE9C3
    
  3. En el segundo servidor, pegue el resultado de la instrucción SELECT previa en el siguiente código como el valor de @blob y ejecute el siguiente código para comprobar que la clave duplicada pueda descifrar el texto cifrado.

    OPEN SYMMETRIC KEY [key_DataShare] 
        DECRYPTION BY CERTIFICATE cert_keyProtection;
    GO
    DECLARE @blob varbinary(8000);
    SET @blob = SELECT CONVERT(varchar(8000), decryptbykey(@blob));
    GO
    
  4. Cierre la clave simétrica en ambos servidores.

    CLOSE SYMMETRIC KEY [key_DataShare];
    GO
    

Vea también

Referencia

Jerarquía de cifrado

Otros recursos

CREATE MASTER KEY (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
EncryptByKey (Transact-SQL)
DecryptByKey (Transact-SQL)
Elegir un algoritmo de cifrado

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido modificado:
  • Se ha corregido el ejemplo.

14 de abril de 2006

Contenido modificado:
  • Se ha aclarado la introducción.