Encryption in MySQL: Master Key Rotation

In anticipazione di l'iniziu di una nova iscrizzione per u corsu "Base di dati" cuntinuemu à publicà una seria d'articuli nantu à a criptografia in MySQL.

In l'articulu precedente in questa serie, avemu discututu cumu funziona a criptografia di chjave maestra. Oghje, basatu annantu à a cunniscenza acquistata prima, fighjemu a rotazione di e chjave principali.

A rotazione di a chjave maestra implica a generazione di una nova chjave maestra è a criptografia di e chjavi di tablespace (chì sò almacenati in l'intestazione di tablespace) cù questa nova chjave.

Ricurdemu ciò chì l'intestazione di un tablespace cifratu pare:

Encryption in MySQL: Master Key Rotation

Da l'articulu precedente, sapemu chì u servitore leghje l'intestazione di tutti i tablespaces criptati à l'iniziu è ricorda l'ID KEY più grande. Per esempiu si avemu trè tavule cù KEYID = 3 è una tavula cù KEYID = 4, allura l'ID chjave massimu serà 4. Chjamemu questu ID CHAVE - ID MAX KEY.

Cumu funziona a rotazione di a chjave maestra

1. L'utilizatore eseguisce ALTER INNODB MASTER KEY.

2. U servitore dumanda u keyring per generà una nova chjave maestra cù u servitore UUID è KEYID uguale à unu più MAXKEYID. Dunque, uttene l'ID di chjave maestra uguale à INNODBKEY-UUID-(MAXKEYID + 1). Dopu a generazione riescita di a chjave maestra, MAX KEY ID hè aumentata di unu (vale à dì MAXKEYID=MAXKEYID + 1).

3. U servitore scansa tutti i tablespaces criptati cù a chjave maestra, è per ogni tablespace:

  • cripta a chjave di tablespace cù a nova chjave maestra;

  • aghjurnà l'ID chjave à u novu MAXKEYID;

  • se l'UUID hè diversu da l'UUID di u servitore, aghjurnà l'UUID di u servitore.

Comu sapemu, l'ID di Chjave Maestra utilizatu per decrypt una tavula hè custituitu da un UUID è un ID KEY lettu da l'intestazione di tablespace. Ciò chì facemu avà hè aghjurnà sta informazione in l'intestazione di criptografia di tablespace per chì u servitore riceve a chjave maestra curretta.

Se avemu tablespaces da diverse lochi, cum'è e diverse copie di salvezza, allora puderanu aduprà diverse chjavi maestri. Tutti questi chjavi maestri duveranu esse recuperati da u repository quandu u servitore hè iniziatu. Questu pò rallentà l'iniziu di u servitore, soprattuttu s'ellu hè utilizatu un magazinu di chjave di u servitore. Cù a rotazione di a chjave maestra, ricifrate e chjavi di tablespace cù una sola chjave maestra chì hè a stessa per tutti i tablespaces. U servitore deve avà riceve solu una chjave maestra à l'iniziu.

Questu, sicuru, hè solu un effettu secundariu piacevule. U scopu principale di a rotazione di a chjave maestra hè di fà u nostru servitore più sicuru. In l'eventu chì a chjave maestra hè stata in qualchì modu arrubbata da a volta (per esempiu, da u Vault Server), hè pussibule generà una nova chjave maestra è ricifrate e chjave di tablespace, invalidendu a chjave arrubbata. Semu salvu... guasi.

In un articulu precedente, aghju parlatu di cumu quandu una chjave di tablespace hè arrubbata, un terzu pò aduprà per decifrare i dati. A condizione chì ci hè accessu à u nostru discu. Se a chjave maestra hè arrubbata è avete accessu à i dati criptati, pudete aduprà a chjave maestra arrubbata per decrypt a chjave di tablespace è uttene e dati decriptati. Comu pudete vede, a rotazione di a chjave maestra ùn aiuta micca in questu casu. Ricifrate a chjave di tablespace cù a nova chjave maestra, ma a chjave attuale utilizata per criptà / decifrate e dati resta a stessa. Dunque, u "pirate" pò cuntinuà à aduprà per decrypt i dati. Prima aghju insinuatu chì Percona Server per MySQL pò eseguisce una vera criptografia di tablespace, micca solu una semplice criptografia di chjave di tablespace. Questa funzione hè chjamata fili di criptografia. Tuttavia, sta funziunalità hè sempre sperimentale à u mumentu.

A rotazione di a chjave maestra hè utile quandu a chjave maestra hè arrubbata, ma ùn ci hè micca manera per un attaccu di usà è decifrate e chjavi di tablespace.

Iscriviti per una lezione demo gratuita.

Leghjite più:

Source: www.habr.com