Производительность шифрования на основе SQL - PullRequest
2 голосов
/ 22 марта 2011

Я занимаюсь некоторыми исследованиями для будущего проекта, и для этого требуется шифрование некоторых данных.

В своем сегодняшнем исследовании я заметил, что существует множество различных алгоритмов шифрования (включая AES, Triple-DES, X-DES и т. Д.), И я хочу использовать один из алгоритмов в SQL-Server (экспресс-пробники 2008r2), как бы вы порекомендовали это сделать, например, лучшие практики и т. д.

Я планирую сделать что-то вроде следующего:

-- Create the master key. 
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Som3Rand0m!3y?na'
-- Create the cert.
CREATE CERTIFICATE someCert WITH SUBJECT = 'c3p009xFR?'
-- Create Symmetric Key
CREATE SYMMETRIC KEY someSymmetricKey WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE someCert 

И используйте его следующим образом:

declare @sql varchar(8000)
set @sql = 'OPEN SYMMETRIC KEY someSymmetricKey DECRYPTION BY CERTIFICATE someCert '
exec (@sql)

-- Check the table
SELECT      col1, Convert(varchar(max), DECRYPTBYKEY(col2)) as col2
FROM        myTable

-- dont forget to close the symmetric key again afterwards.
CLOSE SYMMETRIC KEY someSymmetricKey

Полагаю, это правильный способ (я читал об этом много лет назад и сохранил пример, так что просто дважды проверь:])?

Кроме того, действительно ли существуют какие-либо различия в производительности (или различия в безопасности, такие как одно легче взломать, чем другое) между использованием разных алгоритмов шифрования? << - это тот, который я действительно пытался узнать о / наиболее важном. </p>

Наконец, если я перенесу базу данных на другой сервер, я думаю, что смогу просто заново создать ключ / сертификат таким же образом, и я смогу получить данные обратно и т. Д.

Любые хорошие сообщения в блоге / ссылки / технические документы будут высоко оценены :) (большинство из тех, что я читал, были тихими и плохими)

Спасибо за чтение: D

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

У вас есть только два варианта: AES и 3DES. Простые DES и XDES слишком слабые (56 и 112 битная сила соответственно). RC4 не является опцией, потому что реализация SQL Server отключена (не обрабатывает зашифрованные значения должным образом).

3DES цепляется за прошлое. Используйте AES, это текущий рекомендуемый алгоритм NIST и предлагает вам приличную скорость.

1 голос
/ 22 марта 2011

Для выбранного вами алгоритма шифрования не существует единого размера, подходящего для любого выбора (см. Ссылку ниже для получения рекомендаций от Microsoft относительно алгоритмов, доступных в SQL Server).

http://msdn.microsoft.com/en-us/library/ms345262.aspx

Что касается резервного копирования и восстановления ключей шифрования:

--Backup the master key   
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'Som3Rand0m!3y?na';
BACKUP MASTER KEY TO FILE = 'c:\temp\exportedmasterkey' 
ENCRYPTION BY PASSWORD = 's0me0th3rp4$$w0rd';
GO 
--Back up the certificate
BACKUP CERTIFICATE someCert TO FILE = 'c:\temp\someCert.cer'
GO

Затем на другом сервере

RESTORE MASTER KEY FROM FILE = 'c:\temp\exportedmasterkey' 
    DECRYPTION BY PASSWORD = 's0me0th3rp4$$w0rd'
    ENCRYPTION BY PASSWORD = 'Som3Rand0m!3y?na'
GO

CREATE CERTIFICATE someCert
    FROM FILE = 'c:\temp\someCert.cer'
GO
...