Enkripcija u MySQL: rotacija glavnog ključa

Uoči početka novog upisa na tečaj «Baze podataka» nastavljamo s objavljivanjem serije članaka o šifriranju u MySQL-u.

U prethodnom članku ove serije razgovarali smo o kako radi šifriranje s glavnim ključem (Master Key). Danas, oslanjajući se na prethodno stečeno znanje, razmotrit ćemo rotaciju glavnih ključeva.

Rotacija glavnih ključeva se sastoji od generiranja novog glavnog ključa i ponovnog šifriranja ključeva tabličnih prostora tim novim ključem (koji se pohranjuju u zaglavljima tabličnih prostora).

Ponovo se prisjetimo kako izgleda zaglavlje šifriranog tabličnog prostora:

Enkripcija u MySQL: rotacija glavnog ključa

Iz prethodnog članka znamo da poslužitelj prilikom pokretanja čita zaglavlja svih šifriranih tabličnih prostora i pamti najveći KEY ID. Na primjer, ako imamo tri tablice s KEYID = 3 i jednu tablicu s KEYID = 4, tada će maksimalni identifikator ključa biti 4. Nazovimo ovaj KEY ID — MAX KEY ID.

Kako funkcionira rotacija glavnog ključa

1. Korisnik izvršava ALTER INNODB MASTER KEY.

2. Poslužitelj traži od skladišta ključeva (keyring) generiranje novog glavnog ključa s UUID poslužitelja i KEYID, koji je povećan za jedan MAXKEYID. Tako dobivamo identifikator glavnog ključa jednak INNODBKEY-UUID- (MAXKEYID + 1). Nakon uspješnog generiranja glavnog ključa, MAX KEY ID se povećava za jedan (tj. MAXKEYID = MAXKEYID + 1).

3. Poslužitelj pregledava sve tablične prostore šifrirane pomoću glavnog ključa i za svaki tablični prostor:

  • šifrira ključ tabličnog prostora novim glavnim ključem;

  • ažurira identifikator ključa na novi MAXKEYID;

  • ako se UUID razlikuje od UUID poslužitelja, ažurira UUID poslužitelja.

Kao što znamo, identifikator glavnog ključa (Master Key ID), koji se koristi za dešifriranje tablice, sastoji se od UUID-a i KEY ID-a, pročitanih iz zaglavlja tabličnog prostora. Ono što radimo sada je ažuriranje tih informacija u zaglavlju šifriranja tabličnog prostora kako bi poslužitelj dobio pravi glavni ključ.

Ako imamo tablične prostore dobivene iz različitih izvora, poput različitih sigurnosnih kopija, moglo bi se dogoditi da koriste različite glavne ključeve. Svi ti glavni ključevi morat će se preuzeti iz spremišta prilikom pokretanja poslužitelja. To može usporiti pokretanje poslužitelja, osobito ako se koristi poslužiteljsko spremište ključeva. Rotacijom glavnog ključa ponovno šifriramo ključeve tabličnih prostora jednim glavnim ključem, koji je isti za sve tablične prostore. Sada, prilikom pokretanja, poslužitelj mora dobiti samo jedan glavni ključ.

To je, naravno, samo ugodna sporedna posljedica. Glavni cilj rotacije glavnih ključeva je učiniti naš poslužitelj sigurnijim. U slučaju da je glavni ključ na neki način ukraden iz spremišta (npr. iz Vault Servera), može se generirati novi glavni ključ i ponovno šifrirati ključeve tabličnih prostora, čineći ukradeni ključ nevažećim. Mi smo sigurni… gotovo.

U prethodnom članku sam govorio o tome da, nakon krađe ključa tabličnog prostora, treća strana može koristiti taj ključ za dešifriranje podataka. Pod uvjetom da ima pristup našem disku. U slučaju krađe glavnog ključa i pristupa šifriranim podacima, ukradeni glavni ključ može se upotrijebiti za dešifriranje ključa tabličnog prostora i dobivanje dešifriranih podataka. Kao što vidimo, rotacija glavnog ključa u ovom slučaju ne pomaže. Ponovno šifriramo ključ tabličnog prostora novim glavnim ključem, ali stvarni ključ koji se koristi za šifriranje/dešifriranje podataka ostaje isti. Stoga „haker“ može nastaviti koristiti taj ključ za dešifriranje podataka. Prije sam nagovijestio da Percona Server for MySQL može izvršiti stvarnu ponovnu šifriranje tabličnih prostora, a ne samo jednostavno ponovno šifriranje ključa tabličnog prostora. Ova funkcija se zove tokovi šifriranja (encryption threads). Međutim, trenutno je ta funkcionalnost još uvijek eksperimentalna.

Rotacija glavnog ključa korisna je kada je glavni ključ ukraden, ali napadač nema mogućnost njegovog korištenja i dešifriranja ključeva tabličnih prostora.

Prijavite se na besplatni demo sat.

Čitajte više:

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster