Розуміння шифрування та резервного копіювання 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 облікового запису послуги, який зашифрований паролем облікового запису -> і це пароль

В останньому ключі, здається, немає пароля, але є такий: пароль облікового запису служби. У разі відновлення резервної копії на іншому хості, їй не вистачить шифрування основного ключа служби основного ключа бази даних, і це зробить дані недоступними.

Див. Розділ Шифрування пошуку


HI, так, є пароль, але на попередньому етапі. коли я створив: 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/…
Royi Namir

4

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

Ось хороший огляд шифрування сертифікатів: http://www.mssqltips.com/sqlservertip/1319/sql-server-2005-encryption-certification-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.