Microsoft SQL Server
шифрование
Поиск…
параметры
Дополнительные параметры | подробности |
---|---|
WITH PRIVATE KEY | Для CREATE CERTIFICATE может быть указан закрытый ключ: (FILE='D:\Temp\CertTest\private.pvk', DECRYPTION BY PASSWORD = 'password'); |
замечания
Создание сертификата DER будет работать нормально. Однако, когда используется сертификат Base64, SQL-сервер будет жаловаться на критическое сообщение:
Msg 15468, Level 16, State 6, Line 1
An error occurred during the generation of the certificate.
Импортируйте свой сертификат Base64 в хранилище сертификатов вашей ОС, чтобы иметь возможность реэкспортировать его в двоичный формат DER.
Еще одна важная вещь - иметь иерархию шифрования, чтобы одна защищала другую, вплоть до уровня ОС. См. Статью «Шифрование базы данных / TDE»
Для получения дополнительной информации для создания сертификатов перейдите по адресу : https://msdn.microsoft.com/en-us/library/ms187798.aspx
Для получения дополнительной информации о шифровании базы данных / TDE перейдите по адресу : https://msdn.microsoft.com/en-us/library/bb934049.aspx
Для получения дополнительной информации для шифрования данных перейдите по адресу : https://msdn.microsoft.com/en-us/library/ms188061.aspx
Шифрование по сертификату
CREATE CERTIFICATE My_New_Cert
FROM FILE = 'D:\Temp\CertTest\certificateDER.cer'
GO
Создать сертификат
SELECT EncryptByCert(Cert_ID('My_New_Cert'),
'This text will get encrypted') encryption_test
Обычно вы шифруете симметричным ключом, этот ключ будет зашифрован с помощью асимметричного ключа (открытого ключа) из вашего сертификата.
Также обратите внимание, что шифрование ограничено определенной длиной в зависимости от длины ключа и возвращает NULL в противном случае. Microsoft пишет: «Предельные значения: 512-битный ключ RSA может шифровать до 53 байтов, 1024-битный ключ может шифровать до 117 байтов, а ключ 2048 бит может шифровать до 245 байт».
EncryptByAsymKey имеет те же ограничения. Для UNICODE это будет разделено на 2 (16 бит на символ), поэтому 58 символов для 1024-битного ключа.
Шифрование базы данных
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
Это использует «прозрачное шифрование данных» (TDE)
Шифрование с помощью симметричного ключа
-- 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');
Шифрование парольной фразой
SELECT EncryptByPassphrase('MyPassPhrase', 'This text will get encrypted')
Это также зашифровывает, а затем парольная фраза вместо асимметричного ключа (сертификата) или явного симметричного ключа.