Microsoft SQL Server
Szyfrowanie
Szukaj…
Parametry
Parametry opcjonalne | Detale |
---|---|
WITH PRIVATE KEY | Dla opcji UTWÓRZ CERTYFIKAT można określić klucz prywatny: (FILE='D:\Temp\CertTest\private.pvk', DECRYPTION BY PASSWORD = 'password'); |
Uwagi
Utworzenie certyfikatu DER będzie działać poprawnie. Jednak gdy używany jest certyfikat Base64, serwer SQL narzeka na tajemniczą wiadomość:
Msg 15468, Level 16, State 6, Line 1
An error occurred during the generation of the certificate.
Zaimportuj certyfikat Base64 do magazynu certyfikatów systemu operacyjnego, aby móc ponownie wyeksportować go do formatu binarnego DER.
Inną ważną rzeczą do zrobienia jest posiadanie hierarchii szyfrowania, aby jedna chroniła drugą, aż do poziomu systemu operacyjnego. Zobacz artykuł o „Szyfrowaniu bazy danych / TDE”
Więcej informacji na temat tworzenia certyfikatów znajduje się na stronie : https://msdn.microsoft.com/en-us/library/ms187798.aspx
Aby uzyskać więcej informacji na temat szyfrowania bazy danych / TDE, przejdź do: https://msdn.microsoft.com/en-us/library/bb934049.aspx
Aby uzyskać więcej informacji na temat szyfrowania danych, przejdź do: https://msdn.microsoft.com/en-us/library/ms188061.aspx
Szyfrowanie za pomocą certyfikatu
CREATE CERTIFICATE My_New_Cert
FROM FILE = 'D:\Temp\CertTest\certificateDER.cer'
GO
Utwórz certyfikat
SELECT EncryptByCert(Cert_ID('My_New_Cert'),
'This text will get encrypted') encryption_test
Zazwyczaj szyfrujesz kluczem symetrycznym, klucz ten jest szyfrowany kluczem asymetrycznym (kluczem publicznym) z twojego certyfikatu.
Należy również pamiętać, że szyfrowanie jest ograniczone do niektórych długości w zależności od długości klucza, w przeciwnym razie zwraca NULL. Microsoft pisze: „Ograniczenia są następujące: 512-bitowy klucz RSA może szyfrować do 53 bajtów, 1024-bitowy klucz może szyfrować do 117 bajtów, a 2048-bitowy klucz może szyfrować do 245 bajtów”.
EncryptByAsymKey ma takie same ograniczenia. Dla UNICODE byłoby to podzielone przez 2 (16 bitów na znak), czyli 58 znaków dla 1024-bitowego klucza.
Szyfrowanie bazy danych
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
Wykorzystuje to „Transparent Data Encryption” (TDE)
Szyfrowanie za pomocą klucza symetrycznego
-- 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');
Szyfrowanie za pomocą hasła
SELECT EncryptByPassphrase('MyPassPhrase', 'This text will get encrypted')
Spowoduje to również szyfrowanie, ale następnie za pomocą hasła zamiast klucza asymetrycznego (certyfikatu) lub jawnego klucza symetrycznego.