Crittografia in MySQL: Master Key Rotation

In attesa dell'inizio di una nuova iscrizione al corso "Banca dati" continuiamo a pubblicare una serie di articoli sulla crittografia in MySQL.

Nel precedente articolo di questa serie, abbiamo discusso come funziona la crittografia della chiave master. Oggi, sulla base delle conoscenze acquisite in precedenza, diamo un'occhiata alla rotazione delle chiavi principali.

La rotazione della chiave principale comporta la generazione di una nuova chiave principale e la ricrittografia delle chiavi del tablespace (memorizzate nelle intestazioni del tablespace) con questa nuova chiave.

Ricordiamo come appare l'intestazione di un tablespace crittografato:

Crittografia in MySQL: Master Key Rotation

Dall'articolo precedente, sappiamo che il server legge le intestazioni di tutti i tablespace crittografati all'avvio e ricorda il KEY ID più grande. Ad esempio se abbiamo tre tabelle con KEYID = 3 e una tabella con KEYID = 4, quindi l'ID chiave massimo sarà 4. Chiamiamo questo KEY ID - MAX KEY ID.

Come funziona la rotazione della chiave master

1. L'utente esegue ALTER INNODB MASTER KEY.

2. Il server richiede al portachiavi di generare una nuova chiave principale con l'UUID e la CHIAVE del serverID uguale a uno più MAXKEYID. Quindi otteniamo un ID chiave principale uguale a INNODBCHIAVE-UUID-(MAXKEYdocumento d'identità + 1). Dopo aver generato con successo la chiave principale, MAX KEY ID viene incrementato di uno (ad esempio MAXKEYID=MASSIMOKEYdocumento d'identità + 1).

3. Il server esegue la scansione di tutti i tablespace crittografati con la chiave principale e per ogni tablespace:

  • crittografa la chiave del tablespace con la nuova chiave principale;

  • aggiorna l'id della chiave al nuovo MAXKEYdocumento d'identità;

  • se l'UUID è diverso dall'UUID del server, aggiornare l'UUID del server.

Come sappiamo, il Master Key ID utilizzato per decrittografare una tabella è costituito da un UUID e da un KEY ID letto dall'intestazione del tablespace. Quello che stiamo facendo ora è aggiornare queste informazioni nell'intestazione di crittografia del tablespace in modo che il server riceva la chiave principale corretta.

Se disponiamo di tablespace da posizioni diverse, ad esempio backup diversi, potrebbero utilizzare chiavi principali diverse. Tutte queste chiavi master dovranno essere recuperate dal repository all'avvio del server. Ciò può rallentare l'avvio del server, soprattutto se viene utilizzato un archivio chiavi lato server. Con la rotazione della chiave master, crittografiamo nuovamente le chiavi del tablespace con un'unica chiave master uguale per tutti i tablespace. Il server ora dovrebbe ricevere solo una chiave master all'avvio.

Questo, ovviamente, è solo un piacevole effetto collaterale. Lo scopo principale della rotazione della chiave principale è rendere il nostro server più sicuro. Nel caso in cui la chiave master sia stata in qualche modo rubata dal vault (ad esempio, dal Vault Server), è possibile generare una nuova chiave master e crittografare nuovamente le chiavi del tablespace, invalidando la chiave rubata. Siamo salvi... quasi.

In un precedente articolo, ho parlato di come una volta rubata una chiave tablespace, una terza parte può utilizzarla per decrittografare i dati. A condizione che ci sia accesso al nostro disco. Se la chiave master viene rubata e hai accesso ai dati crittografati, puoi utilizzare la chiave master rubata per decrittografare la chiave del tablespace e ottenere i dati decrittografati. Come puoi vedere, la rotazione della chiave principale non aiuta in questo caso. Crittografiamo nuovamente la chiave del tablespace con la nuova chiave master, ma la chiave effettiva utilizzata per crittografare/decrittografare i dati rimane la stessa. Pertanto, l '"hacker" può continuare a utilizzarlo per decrittografare i dati. Prima l'avevo accennato Server Percona per MySQL può eseguire una vera ricrittografia del tablespace, non solo una semplice ricrittografia della chiave del tablespace. Questa funzione è chiamata thread di crittografia. Tuttavia, questa funzionalità è ancora sperimentale al momento.

La rotazione della chiave principale è utile quando la chiave principale viene rubata, ma non c'è modo per un utente malintenzionato di utilizzarla e decrittografare le chiavi del tablespace.

Iscriviti per una lezione demo gratuita.

Per saperne di più:

Fonte: habr.com