Grundlegendes zur MS SQL Server-Verschlüsselung und -Sicherungen

13

Deshalb habe ich im Chat gefragt, wie sicher SQL Server-Sicherungsdateien sind.

Mir wurde gesagt, dass ein Angreifer, der unverschlüsselt Zugriff auf die .bak-Datei hat, Zugriff auf die Daten haben kann.

Schauen wir uns also dieses Szenario an:

OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate

hinweis - hier gibt es kein passwort

und dann verschlüsseln wir unsere Tabellen durch:

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

Nehmen wir an, ein Hacker hat meine bakAkte bekommen. Alles, was er tun muss, um die Daten anzuzeigen (auf seinem eigenen Computer & SQL-Server), ist:

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

Würde er immer noch auf die Daten zugreifen können?

Royi Namir
quelle

Antworten:

9
OPEN SYMMETRIC KEY MySymetricKey DECRYPTION`  
 BY CERTIFICATE MyCertificate`

hinweis - hier gibt es kein passwort

Ja da ist. Sie haben das Zertifikat MyCertificate irgendwie geöffnet , nicht wahr? Es kann mehrere Fälle geben, aber jeder von ihnen endet mit einem Passwort:

  • Sie haben das Zertifikat mit einem Passwort geöffnet (in diesem Fall gibt es natürlich ein Passwort)
  • Das Zertifikat wird mit dem Datenbank-Hauptschlüssel verschlüsselt, und Sie haben den Datenbank-Hauptschlüssel mit dem DBMK-Kennwort geöffnet -> das ist das Kennwort
  • Das Zertifikat wird mit dem Datenbankhauptschlüssel und das DBMK mit dem Diensthauptschlüssel verschlüsselt. Der Diensthauptschlüssel wurde wiederum mit dem Dienstkonto-DPAPI-Speicherschlüssel geöffnet, der mit dem Kontokennwort verschlüsselt ist -> und das ist das Kennwort

Im letzten Schlüssel scheint es kein Kennwort zu geben, aber eines: das Dienstkontokennwort. Wenn die Sicherung auf einem anderen Host wiederhergestellt wird, fehlt die Diensthauptschlüsselverschlüsselung des Datenbankhauptschlüssels, und auf diese Weise kann nicht auf die Daten zugegriffen werden.

Siehe Encryption Hiearchy

Remus Rusanu
quelle
HI, ja, es gibt ein Passwort, aber in einem früheren Stadium. Als ich erstellt habe von: CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DB Master key password!' GO- Ich habe es mit einem Passwort erstellt. aber das seltsame ist, dass wenn ich es öffne - ich brauche kein Passwort dies ist genau der Code, den Sie eingefügt haben. Das ist die Sache, die ich nicht verstehe. Wenn ich ein Hacker bin, ist mir das Passwort, mit dem ich es erstellt habe, egal. Alles was ich tun muss ist OPEN SYMMETRIC KEY MySymetricKey DECRYPTION BY CERTIFICATE MyCertificate` und es gibt KEIN Passwort hier. Bitte korrigieren Sie mich
Royi Namir
3
@ RoyiNamir Siehe Remus 'letzten Aufzählungspunkt. Sie geben das Passwort nicht an , aber das Zertifikat ist geschützt, letztendlich in diesem Fall durch das Passwort des Dienstkontos.
Mark Storey-Smith
@ Remus können Sie bitte einen Blick in meine neue Frage (sehr verwandt) dba.stackexchange.com/questions/29287/…
Royi Namir