Ricerca…


Parametri

Parametri opzionali Dettagli
WITH PRIVATE KEY Per CREATE CERTIFICATE, è possibile specificare una chiave privata: (FILE='D:\Temp\CertTest\private.pvk', DECRYPTION BY PASSWORD = 'password');

Osservazioni

La creazione di un certificato DER funzionerà correttamente. Tuttavia, quando viene utilizzato un certificato Base64, il server SQL si lamenterà con il messaggio criptico:

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

Importa il tuo certificato Base64 nell'archivio certificati del tuo sistema operativo per poterlo riesportare in formato binario DER.


Un'altra cosa importante da fare è avere una gerarchia di crittografia in modo che uno protegga l'altro, fino al livello del sistema operativo. Vedi l'articolo su 'Crittografia del database / TDE'


Per ulteriori informazioni sulla creazione di certificati, visitare: https://msdn.microsoft.com/en-us/library/ms187798.aspx

Per ulteriori informazioni sulla crittografia del database / TDE, consultare: https://msdn.microsoft.com/en-us/library/bb934049.aspx

Per ulteriori informazioni sulla crittografia dei dati, consultare: https://msdn.microsoft.com/en-us/library/ms188061.aspx

Crittografia per certificato

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

Crea il certificato

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

Di solito, si cripterebbe con una chiave simmetrica, quella chiave sarebbe crittografata dalla chiave asimmetrica (chiave pubblica) dal certificato.

Inoltre, tieni presente che la crittografia è limitata a determinate lunghezze in base alla lunghezza della chiave e restituisce NULL altrimenti. Microsoft scrive: "I limiti sono: una chiave RSA a 512 bit può crittografare fino a 53 byte, una chiave a 1024 bit può crittografare fino a 117 byte e una chiave a 2048 bit può crittografare fino a 245 byte."

EncryptByAsymKey ha gli stessi limiti. Per UNICODE questo sarebbe diviso per 2 (16 bit per carattere), quindi 58 caratteri per una chiave a 1024 bit.

Crittografia del 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

Questo utilizza 'Transparent Data Encryption' (TDE)

Crittografia con chiave simmetrica

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

Crittografia per passphrase

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

Questo verrà anche crittografato, ma poi per passphrase invece di chiave asimmetrica (certificato) o con una chiave simmetrica esplicita.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow