SQL Server e chiavi di crittografia del database (motore di database)

Si applica a:SQL Server

SQL Server usa le chiavi di crittografia per la protezione di dati, credenziali e informazioni di connessione archiviate in un database del server. SQL Server dispone di due tipi di chiavi: simmetrica e asimmetrica. Le chiavi simmetriche utilizzano la stessa password per crittografare e decrittografare i dati. Le chiavi asimmetriche usano una password per crittografare i dati (chiave pubblica ) e un'altra per decrittografare i dati (chiave privata ).

In SQL Server, le chiavi di crittografia sono costituite da una combinazione di chiavi pubbliche, private e simmetriche utilizzate per proteggere dati riservati. La chiave simmetrica viene creata durante l'inizializzazione di SQL Server quando si avvia per la prima volta l'istanza di SQL Server. SQL Server utilizza la chiave per cifrare i dati sensibili memorizzati in SQL Server. Il sistema operativo crea le chiavi pubbliche e private, che proteggono la chiave simmetrica. Per ogni istanza di SQL Server che contiene dati riservati in un database viene creata una coppia di chiavi pubblica e privata.

Applicazioni per SQL Server e chiavi di database

SQL Server contiene due applicazioni principali per le chiavi: una chiave master del servizio (SMK) generata per un'istanza di SQL Server e una chiave master del database (DMK) usata per un database.

Chiave master del servizio

La chiave master del servizio è la radice della gerarchia di crittografia di SQL Server. SQL Server genera l'SMK la prima volta quando l'istanza si avvia e lo utilizza per criptare password del server collegato, credenziali e la chiave principale del database in ogni database.

L'SMK viene criptato utilizzando la chiave macchina locale o l'API di protezione dati di Windows (DPAPI). DPAPI utilizza una chiave derivata dalle credenziali Windows dell'account del servizio SQL Server. Poiché la chiave è protetta in entrambi i modi, la chiave master del servizio può essere aperta dall'account di servizio con cui è stata creata, oppure da un'entità di sicurezza che ha accesso alle credenziali della macchina.

SQL Server utilizza l'algoritmo di crittografia AES per proteggere la chiave master del servizio e la chiave principale del database. AES ha sostituito l'algoritmo 3DES utilizzato nelle versioni precedenti a SQL Server 2012 (11.x). Dopo aver aggiornato un'istanza del motore di database da una di quelle versioni precedenti, rigenera SMK e DMK per aggiornare le master key ad AES. Per altre informazioni sulla rigenerazione della chiave SMK, vedere ALTER SERVICEALTER SERVICE MASTER KEY (Transact-SQL) e ALTER MASTER KEY (Transact-SQL).

Chiave master del database

La chiave principale del database è una chiave simmetrica che protegge le chiavi private dei certificati e le chiavi asimmetriche presenti nel database. Può anche criptare dati, ma presenta limitazioni di lunghezza che lo rendono meno pratico per i dati rispetto a una chiave asimmetrica. Per consentire la decrittografia automatica della chiave principale del database, una copia della chiave viene criptata utilizzando l'SMK. SQL Server memorizza quella copia sia nel database in cui viene utilizzata la chiave sia nel master database di sistema.

La copia del DMK memorizzata nel master database di sistema viene aggiornata silenziosamente ogni volta che il DMK cambia. Puoi cambiare questo valore predefinito usando l'opzione DROP ENCRYPTION BY SERVICE MASTER KEY di ALTER MASTER KEY (Transact-SQL). Un DMK che non è criptato dalla chiave master del servizio deve essere aperto usando OPEN MASTER KEYOPEN MASTER KEY (Transact-SQL) e una password.

Gestione di SQL Server e delle chiavi del database

Gestire le chiavi di crittografia comporta la creazione di nuove chiavi del database, il backup del server e delle chiavi del database, e sapere quando e come ripristinare, cancellare o modificare le chiavi.

Per gestire le chiavi simmetriche, utilizza gli strumenti inclusi in SQL Server per svolgere i seguenti compiti:

  • Fai un backup delle chiavi del server e del database così potrai usarle per recuperare un'installazione server o come parte di una migrazione programmata.
  • Ripristino di una chiave precedentemente salvata in un database. Ripristinare la chiave permette a una nuova istanza server di accedere a dati esistenti che non aveva inizialmente criptato.
  • Eliminazione dei dati crittografati in un database nel caso molto improbabile in cui non sia più possibile accedere a tali dati.
  • Ricrea le chiavi e ri-cripta i dati nell'improbabile caso in cui la chiave venga compromessa. Come buona pratica di sicurezza, ricrea periodicamente le chiavi, ad esempio ogni pochi mesi, per proteggere il server da attacchi che cercano di decifrare le chiavi.
  • Aggiungere o rimuovere un'istanza del server da una distribuzione server con scalabilità orizzontale in cui più server condividono sia un solo database sia la chiave usata per la crittografia reversibile del database.

Informazioni importanti sulla sicurezza

Per accedere agli oggetti protetti dalla chiave master del servizio, è necessario o l'account di servizio SQL Server che hai usato per creare la chiave oppure l'account computer (macchina) collegato al sistema in cui hai creato la chiave. Puoi cambiare l'account del servizio SQL Server o l'account del computer senza perdere l'accesso alla chiave. Tuttavia, se cambi entrambi gli account, perdi l'accesso alla chiave master del servizio. Se perdi l'accesso alla chiave master del servizio senza uno di questi due elementi, non puoi decriptare dati e oggetti che la chiave originale aveva criptato.

Non puoi ripristinare le connessioni protette con la chiave master di servizio a meno che tu non abbia quella chiave.

Per accedere a oggetti e dati protetti con la chiave principale del database, serve solo la password che aiuta a proteggere la chiave.

Attenzione

Se perdi tutto l'accesso alle chiavi descritte in questo articolo, perdi l'accesso agli oggetti, alle connessioni e ai dati protetti da quelle chiavi. Puoi ripristinare la chiave master del servizio come descritto in Ripristinare la chiave master del servizio, oppure puoi tornare al sistema di crittografia originale per recuperare l'accesso. Non c'è modo di recuperare l'accesso.