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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow