Microsoft SQL Server
kryptering
Sök…
parametrar
Valfria parametrar | detaljer |
---|---|
WITH PRIVATE KEY | För CREATE CERTIFICATE kan en privat nyckel anges: (FILE='D:\Temp\CertTest\private.pvk', DECRYPTION BY PASSWORD = 'password'); |
Anmärkningar
Skapa ett DER-certifikat fungerar bra. När ett Base64-certifikat emellertid används klagar SQL-servern med det kryptiska meddelandet:
Msg 15468, Level 16, State 6, Line 1
An error occurred during the generation of the certificate.
Importera ditt Base64-certifikat till ditt OS-certifikatlager för att kunna exportera det till DER-binärt format.
En annan viktig sak att göra är att ha en krypteringshierarki så att den ena skyddar den andra, hela vägen till OS-nivå. Se artikeln om "Kryptering av databas / TDE"
För mer information för att skapa certifikat, gå till: https://msdn.microsoft.com/en-us/library/ms187798.aspx
För mer information för kryptering av databas / TDE gå till: https://msdn.microsoft.com/en-us/library/bb934049.aspx
För mer information för kryptering av data, gå till: https://msdn.microsoft.com/en-us/library/ms188061.aspx
Kryptering med certifikat
CREATE CERTIFICATE My_New_Cert
FROM FILE = 'D:\Temp\CertTest\certificateDER.cer'
GO
Skapa certifikatet
SELECT EncryptByCert(Cert_ID('My_New_Cert'),
'This text will get encrypted') encryption_test
Vanligtvis skulle du kryptera med en symmetrisk nyckel, den nyckeln skulle krypteras med den asymmetriska nyckeln (public key) från ditt certifikat.
Observera också att kryptering är begränsad till vissa längder beroende på nyckellängd och returnerar NULL annars. Microsoft skriver: "Gränserna är: en 512 bitars RSA-nyckel kan kryptera upp till 53 byte, en 1024 bitars nyckel kan kryptera upp till 117 byte och en 2048 bitars nyckel kan kryptera upp till 245 byte."
EncryptByAsymKey har samma gränser. För UNICODE skulle detta delas med 2 (16 bitar per tecken), så 58 tecken för en 1024 bitars nyckel.
Kryptering av databas
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
Detta använder 'Transparent Data Encryption' (TDE)
Kryptering med symmetrisk nyckel
-- 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');
Kryptering med lösenfras
SELECT EncryptByPassphrase('MyPassPhrase', 'This text will get encrypted')
Detta kommer också att kryptera men sedan med lösenfras istället för asymmetrisk (certifikat) nyckel eller med en uttrycklig symmetrisk nyckel.