Šifrovanie v MySQL: rotácia Master Key

Pred spustením nového kurzu „Databázy“ pokračujeme v publikovaní série článkov o šifrovaní v MySQL.

V predchádzajúcom článku tejto série sme diskutovali o tom, ako funguje šifrovanie s hlavným kľúčom (Master Key). Dnes, na základe predchádzajúcich poznatkov, sa pozrieme na rotáciu hlavných kľúčov.

Rotácia hlavných kľúčov spočíva v tom, že sa vygeneruje nový hlavný kľúč a týmto novým kľúčom sa znova šifrujú kľúče tabuliek (ktoré sú uložené v hlavičkách tabuliek).

Pripomeňme si, ako vyzerá hlavička šifrovanej tabuľky:

Šifrovanie v MySQL: rotácia Master Key

Z predchádzajúceho článku vieme, že server pri spustení číta hlavičky všetkých šifrovaných tabuliek a zapamätáva si najvyšší KEY ID. Napríklad, ak máme tri tabuľky s KEYID = 3 a jednu tabuľku s KEYID = 4, tak maximálny identifikátor kľúča bude rovný 4. Označme tento KEY ID ako MAX KEY ID.

Ako funguje rotácia hlavného kľúča

1. Používateľ vykoná ALTER INNODB MASTER KEY.

2. Server požaduje v úložisku kľúčov (keyring) vygenerovanie nového hlavného kľúča s UUID servera a KEYID, rovný zvýšenému o jeden MAXKEYID. Týmto spôsobom získame identifikátor hlavného kľúča, rovný INNODBKEY-UUID- (MAXKEYID + 1). Pri úspešnej generácii hlavného kľúča sa MAX KEY ID zvýši o jeden (t.j. MAXKEYID = MAXKEYID + 1).

3. Server prechádza všetkými tabuľkami, ktoré sú šifrované pomocou hlavného kľúča, a pre každú tabuľku:

  • zašifruje kľúč tabuľky novým hlavným kľúčom;

  • aktualizuje identifikátor kľúča na nový MAXKEYID;

  • ak sa UUID líši od UUID servera, aktualizuje UUID servera.

Ako vieme, identifikátor hlavného kľúča (Master Key ID), používaný na dešifrovanie tabuľky, pozostáva z UUID a KEY ID, načítaných z hlavičky tabuľky. To, čo teraz robíme, je aktualizácia týchto informácií v hlavičke šifrovania tabuľky, aby server získal správny hlavný kľúč.

Ak máme tabuľkové priestory získané z rôznych miest, napríklad z rôznych záloh, môžu používať rôzne hlavné kľúče. Všetky tieto hlavné kľúče bude potrebné získať zo skladu pri spustení servera. To môže spomaliť spustenie servera, najmä ak sa používa serverový sklad kľúčov. Pomocou rotácie hlavného kľúča znovu šifrujeme kľúče tabuľkových priestorov jedným hlavným kľúčom, ktorý je rovnaký pre všetky tabuľkové priestory. Teraz pri spustení server získa iba jeden hlavný kľúč.

To je, samozrejme, iba príjemný vedľajší účinok. Hlavným cieľom rotácie hlavných kľúčov je zvýšiť bezpečnosť našich serverov. V prípade, že bol hlavný kľúč akýmkoľvek spôsobom ukradnutý zo skladu (napríklad z Vault Server), môžeme vygenerovať nový hlavný kľúč a znovu zašifrovať kľúče tabuľkových priestorov a urobiť ukradnutý kľúč neplatným. Sme v bezpečí... takmer.

V predchádzajúcom článku som spomínal, že po krádeži kľúča tabuľkového priestoru môže tretia strana použiť tento kľúč na dešifrovanie údajov, ak má prístup k našim diskom. V prípade krádeže hlavného kľúča a prístupu k zašifrovaným údajom môžete použiť ukradnutý hlavný kľúč na dešifrovanie kľúča tabuľkového priestoru a získať dešifrované údaje. Ako vidíme, rotácia hlavného kľúča v tomto prípade nepomáha. Znovu zašifrujeme kľúč tabuľkového priestoru novým hlavným kľúčom, ale skutočný kľúč použitý na šifrovanie/dešifrovanie údajov ostáva nezmenený. Preto môže „hacker“ pokračovať v jeho používaní na dešifrovanie údajov. Predtým som naznačoval, že Percona Server for MySQL môže vykonávať skutočné opätovné šifrovanie tabuľkových priestorov a nie len jednoduché opätovné šifrovanie kľúča tabuľkového priestoru. Táto funkcia sa nazýva šifrovacie vlákna (encryption threads). Avšak v súčasnosti je táto funkcia stále experimentálna.

Rotácia hlavného kľúča je užitočná, keď bol hlavný kľúč ukradnutý, ale útočník nemá možnosť ho použiť na dešifrovanie kľúčov tabuľkových priestorov.

Prihláste sa na bezplatnú ukážkovú lekciu.

Čítať ďalej:

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster