Шифрование SQL - Асимметричный ключ - 2-й сервер - PullRequest
0 голосов
/ 10 мая 2010

Я создал асимметричный ключ на одном из моих серверов SQL (2008). Я зашифровал поле пароля, и я в состоянии восстановить этот пароль на моем сервере разработки.

Проблема вступает в игру, когда мне нужно перенести эти данные на рабочий сервер.

Вот код для ключа, который был создан:

CREATE MASTER KEY ENCRYPTION BY PASSWORD='#########'
CREATE ASYMMETRIC KEY UserEncryptionKey
WITH ALGORITHM = RSA_2048

Теперь, когда я запускаю это на производственном сервере, он прекрасно создает ключ. Однако, когда я запускаю sproc для получения пароля, он возвращает NULL.

SQL:

    SELECT EncryptByAsymKey(AsymKey_ID('UserEncryptionKey'), Password ) 
    FROM Users WHERE UserName = '######'

Есть мысли о том, что мне нужно сделать, чтобы зашифрованное поле работало на нескольких серверах SQL?

Пожалуйста, дайте мне знать, если мне нужно что-то уточнить.

Спасибо

1 Ответ

0 голосов
/ 11 мая 2010

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

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

Заметьте, что обычно данные не шифруются с помощью асимметричных ключей. Они слишком медленные для операций с данными. Все делают то, что они шифруют данные симметричным ключом, а затем шифруют симметричный ключ асимметричным ключом.

...