Comprensione della crittografia e dei backup di MS SQL Server


13

Quindi stavo chiedendo in chat quanto sono sicuri i file di backup di SQL Server.

Mi viene detto che se un utente malintenzionato ha accesso al file .bak non crittografato, può avere accesso ai dati.

Quindi diamo un'occhiata a questo scenario:

OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate

avviso: qui non c'è password.

e quindi crittografiamo i nostri tavoli con:

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

Ora diciamo che un hacker ha ottenuto il mio bakfile. Tutto quello che deve fare per visualizzare i dati (nel suo computer e nel server SQL) è:

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

Sarebbe comunque in grado di accedere ai dati?

Risposte:


9
OPEN SYMMETRIC KEY MySymetricKey DECRYPTION`  
 BY CERTIFICATE MyCertificate`

avviso: qui non c'è password.

Si C'è. Hai aperto il certificato in MyCertificate qualche modo , vero? Potrebbero esserci diversi casi, ma ognuno di essi finisce con una password:

  • hai aperto il certificato usando una password (ovviamente, c'è una password in questo caso)
  • il certificato viene crittografato con la chiave master del database e la chiave master del database è stata aperta utilizzando la password DBMK -> questa è la password
  • il certificato è crittografato con la chiave master del database e DBMK è crittografato con la chiave master del servizio. La chiave master del servizio è stata a sua volta aperta utilizzando la chiave di archiviazione DPAPI dell'account di servizio, che è crittografata con la password dell'account -> e che è la password

Nell'ultima chiave sembra non esserci alcuna password, ma ce n'è una: la password dell'account di servizio. Il backup, una volta ripristinato su un host diverso, mancherà della crittografia della chiave master del servizio della chiave master del database e ciò renderà inaccessibili i dati.

Vedi Encryption Hiearchy


Ciao, sì, c'è una password ma in una fase precedente. quando ho creato da: CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DB Master key password!' GO- L'ho creato con una password. ma la cosa strana è che quando lo apro - non ho bisogno della password, questo è esattamente il codice che hai incollato. Questa è la cosa che non capisco. Se sono un hacker, non mi interessa la password utilizzata per crearlo. tutto quello che devo fare è OPEN SYMMETRIC KEY MySymetricKey DECRYPTION CERTIFICARE MyCertificate` e NON c'è una password qui. per favore correggimi
Royi Namir,

3
@RoyiNamir Vedi l'ultimo punto elenco di Remus. Non si specifica la password ma il certificato è protetto, in questo caso in definitiva dalla password dell'account del servizio.
Mark Storey-Smith,

@Remus puoi dare un'occhiata alla mia nuova domanda (molto correlata) dba.stackexchange.com/questions/29287/…
Royi Namir,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.