Понимание шифрования и резервного копирования MS SQL Server


13

Поэтому я спросил в чате о том, насколько безопасны файлы резервных копий SQL Server.

Мне сказали, что если злоумышленник имеет доступ к незашифрованному файлу .bak, он может получить доступ к данным.

Итак, давайте посмотрим на этот сценарий:

OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate

обратите внимание - здесь нет пароля.

а затем мы шифруем наши таблицы:

UPDATE tbl1
 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name)
GO

Теперь допустим, что хакер получил мой bakфайл. Все, что он должен сделать для просмотра данных (на своем собственном компьютере и sql-сервере), это:

SELECT  
       convert( NVARCHAR(max), decryptbykey(namePAss)) 
FROM tbl1

Будет ли он по-прежнему иметь доступ к данным?

Ответы:


9
OPEN SYMMETRIC KEY MySymetricKey DECRYPTION`  
 BY CERTIFICATE MyCertificate`

обратите внимание - здесь нет пароля.

Да, есть. Вы открыли сертификат MyCertificate как - то , не так ли? Может быть несколько случаев, но любой из них заканчивается паролем:

  • Вы открыли сертификат с помощью пароля (очевидно, в этом случае пароль существует)
  • сертификат зашифрован с помощью главного ключа базы данных, и вы открыли главный ключ базы данных, используя пароль DBMK -> это пароль
  • сертификат шифруется главным ключом базы данных, а DBMK шифруется главным ключом службы. Главный ключ службы был, в свою очередь, открыт с использованием ключа хранения DPAPI учетной записи службы, который зашифрован с помощью пароля учетной записи -> и это пароль.

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

См. Шифрование Hiearchy


Привет, да, есть пароль, но на предыдущем этапе. когда я создал: CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DB Master key password!' GO- Я создал его с паролем. но странно то, что когда я его открываю - мне не нужен пароль, это точно код, который вы вставили. Это то, что я не понимаю. Если я хакер - мне наплевать на пароль, используемый для его создания. все, что мне нужно сделать, это OPEN SYMMETRIC KEY MySymetricKey DECRYPTION СЕРТИФИКАТ MyCertificate` и здесь нет пароля. пожалуйста, поправьте меня
Ройи Намир

3
@RoyiNamir Смотрите последнюю точку пули Ремуса. Вы не указываете пароль, но сертификат защищен, в конечном счете, в этом случае паролем учетной записи службы.
Марк Стори-Смит

@Remus, не могли бы вы взглянуть на мой новый вопрос (очень связанный) dba.stackexchange.com/questions/29287/…
Рой Намир,

4

Короткий ответ - нет, так как им потребуется главный ключ базы данных и его пароль.

Вот хороший обзор шифрования сертификатов: http://www.mssqltips.com/sqlservertip/1319/sql-server-2005-encryption-certificates-overview/

И один для мастер-ключей: http://www.mssqltips.com/sqlservertip/1312/managing-sql-server-2005-master-keys-for-encryption/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.