Microsoft SQL Server
Encryption
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.