Zoeken…


parameters

Optionele parameters Details
WITH PRIVATE KEY Voor CREATE CERTIFICATE kan een privésleutel worden opgegeven: (FILE='D:\Temp\CertTest\private.pvk', DECRYPTION BY PASSWORD = 'password');

Opmerkingen

Het maken van een DER-certificaat werkt prima. Wanneer echter een Base64-certificaat wordt gebruikt, zal SQL Server klagen met het cryptische bericht:

Msg 15468, Level 16, State 6, Line 1
An error occurred during the generation of the certificate.

Importeer uw Base64-certificaat naar het certificaatarchief van uw besturingssysteem om het opnieuw te kunnen exporteren naar het binaire DER-formaat.


Een ander belangrijk ding om te doen is het hebben van een coderingshiërarchie zodat de een de ander beschermt, helemaal tot op OS-niveau. Zie het artikel over 'Codering van database / TDE'


Ga voor meer informatie over het maken van certificaten naar: https://msdn.microsoft.com/en-us/library/ms187798.aspx

Ga voor meer informatie over de codering van database / TDE naar: https://msdn.microsoft.com/en-us/library/bb934049.aspx

Ga voor meer informatie voor het coderen van gegevens naar: https://msdn.microsoft.com/en-us/library/ms188061.aspx

Versleuteling per certificaat

CREATE CERTIFICATE My_New_Cert
FROM FILE = 'D:\Temp\CertTest\certificateDER.cer'
GO

Maak het certificaat aan

SELECT EncryptByCert(Cert_ID('My_New_Cert'), 
'This text will get encrypted') encryption_test

Meestal codeert u met een symmetrische sleutel, die sleutel wordt gecodeerd door de asymmetrische sleutel (openbare sleutel) van uw certificaat.

Merk ook op dat codering beperkt is tot bepaalde lengtes afhankelijk van de sleutellengte en anders NULL retourneert. Microsoft schrijft: "De limieten zijn: een 512-bits RSA-sleutel kan maximaal 53 bytes coderen, een 1024-bits sleutel kan maximaal 117 bytes coderen en een 2048-bits sleutel kan maximaal 245 bytes coderen."

EncryptByAsymKey heeft dezelfde limieten. Voor UNICODE zou dit worden gedeeld door 2 (16 bits per teken), dus 58 tekens voor een sleutel van 1024 bits.

Versleuteling van database

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

Dit maakt gebruik van 'Transparante gegevenscodering' (TDE)

Versleuteling door symmetrische sleutel

-- 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');

Versleuteling met wachtwoordzin

SELECT EncryptByPassphrase('MyPassPhrase', 'This text will get encrypted')

Dit zal ook coderen, maar dan met een wachtwoordzin in plaats van een asymmetrische (certificaat) sleutel of een expliciete symmetrische sleutel.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow