Suche…


Parameter

Optionale Parameter Einzelheiten
WITH PRIVATE KEY Für CREATE CERTIFICATE kann ein privater Schlüssel angegeben werden: (FILE='D:\Temp\CertTest\private.pvk', DECRYPTION BY PASSWORD = 'password');

Bemerkungen

Die Erstellung eines DER-Zertifikats funktioniert einwandfrei. Wenn ein Base64-Zertifikat verwendet wird, beschwert sich der SQL Server jedoch mit der kryptischen Nachricht:

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

Importieren Sie Ihr Base64-Zertifikat in den Zertifikatspeicher Ihres Betriebssystems, um es erneut in das binäre Format DER exportieren zu können.


Eine weitere wichtige Sache ist, eine Verschlüsselungshierarchie zu haben, damit die eine bis zur Betriebssystemebene geschützt wird. Siehe den Artikel über 'Verschlüsselung der Datenbank / TDE'.


Weitere Informationen zum Erstellen von Zertifikaten finden Sie unter: https://msdn.microsoft.com/en-us/library/ms187798.aspx

Weitere Informationen zur Verschlüsselung der Datenbank / TDE finden Sie unter: https://msdn.microsoft.com/de-de/library/bb934049.aspx

Weitere Informationen zur Verschlüsselung von Daten finden Sie unter: https://msdn.microsoft.com/en-us/library/ms188061.aspx

Verschlüsselung nach Zertifikat

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

Erstellen Sie das Zertifikat

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

Normalerweise würden Sie mit einem symmetrischen Schlüssel verschlüsseln. Dieser Schlüssel würde durch den asymmetrischen Schlüssel (öffentlicher Schlüssel) Ihres Zertifikats verschlüsselt.

Beachten Sie außerdem, dass die Verschlüsselung abhängig von der Schlüssellänge auf bestimmte Längen beschränkt ist und ansonsten NULL zurückgibt. Microsoft schreibt: "Die Grenzen sind: Ein 512-Bit-RSA-Schlüssel kann bis zu 53 Byte verschlüsseln, ein 1024-Bit-Schlüssel kann bis zu 117 Byte und ein 2048-Bit-Schlüssel kann bis zu 245 Byte verschlüsseln."

EncryptByAsymKey hat die gleichen Grenzwerte. Für UNICODE würde dies durch 2 (16 Bits pro Zeichen) geteilt, also 58 Zeichen für einen 1024-Bit-Schlüssel.

Verschlüsselung der Datenbank

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

Dies verwendet 'Transparente Datenverschlüsselung' (TDE).

Verschlüsselung durch symmetrischen Schlüssel

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

Verschlüsselung nach Passphrase

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

Dies wird auch verschlüsseln, dann aber durch Passphrase anstelle eines asymmetrischen (Zertifikat) Schlüssels oder durch einen expliziten symmetrischen Schlüssel.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow