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.
Nota 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.
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
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
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
Cierre la clave simétrica en ambos servidores.
CLOSE SYMMETRIC KEY [key_DataShare]; GO
Vea también
Referencia
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 |
|
14 de abril de 2006 |
|