Microsoft SQL Server
Cifrado
Buscar..
Parámetros
Parámetros opcionales | Detalles |
---|---|
WITH PRIVATE KEY | Para CREAR CERTIFICADO, se puede especificar una clave privada: (FILE='D:\Temp\CertTest\private.pvk', DECRYPTION BY PASSWORD = 'password'); |
Observaciones
La creación de un certificado DER funcionará bien. Sin embargo, cuando se usa un certificado Base64, el servidor SQL se quejará con el mensaje críptico:
Msg 15468, Level 16, State 6, Line 1
An error occurred during the generation of the certificate.
Importe su certificado Base64 al almacén de certificados de su sistema operativo para poder reexportarlo a formato binario DER.
Otra cosa importante que hacer es tener una jerarquía de cifrado para que una proteja a la otra, hasta el nivel del sistema operativo. Vea el artículo sobre 'Cifrado de base de datos / TDE'
Para obtener más información sobre la creación de certificados, visite: https://msdn.microsoft.com/en-us/library/ms187798.aspx
Para obtener más información sobre el cifrado de la base de datos / TDE, visite: https://msdn.microsoft.com/en-us/library/bb934049.aspx
Para obtener más información sobre el cifrado de datos, visite: https://msdn.microsoft.com/en-us/library/ms188061.aspx
Cifrado por certificado
CREATE CERTIFICATE My_New_Cert
FROM FILE = 'D:\Temp\CertTest\certificateDER.cer'
GO
Crear el certificado
SELECT EncryptByCert(Cert_ID('My_New_Cert'),
'This text will get encrypted') encryption_test
Generalmente, usted cifraría con una clave simétrica, esa clave se cifraría con la clave asimétrica (clave pública) de su certificado.
Además, tenga en cuenta que el cifrado está limitado a ciertas longitudes dependiendo de la longitud de la clave y, de lo contrario, devuelve NULL. Microsoft escribe: "Los límites son: una clave RSA de 512 bits puede cifrar hasta 53 bytes, una clave de 1024 bits puede cifrar hasta 117 bytes y una clave de 2048 bits puede cifrar hasta 245 bytes".
EncryptByAsymKey tiene los mismos límites. Para UNICODE, esto se dividiría por 2 (16 bits por carácter), por lo que 58 caracteres para una clave de 1024 bits.
Cifrado de la base de datos
USE TDE
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE My_New_Cert
GO
ALTER DATABASE TDE
SET ENCRYPTION ON
GO
Esto utiliza 'cifrado de datos transparente' (TDE)
Cifrado por clave simétrica
-- Create the key and protect it with the cert
CREATE SYMMETRIC KEY My_Sym_Key
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE My_New_Cert;
GO
-- open the key
OPEN SYMMETRIC KEY My_Sym_Key
DECRYPTION BY CERTIFICATE My_New_Cert;
-- Encrypt
SELECT EncryptByKey(Key_GUID('SSN_Key_01'), 'This text will get encrypted');
Cifrado por frase de contraseña
SELECT EncryptByPassphrase('MyPassPhrase', 'This text will get encrypted')
Esto también se cifrará, pero luego mediante una contraseña en lugar de una clave asimétrica (certificado) o mediante una clave simétrica explícita.