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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow