Šifrování v MySQL: Rotace hlavního klíče

V očekávání zahájení nového zápisu do kurzu "Databáze" pokračujeme v publikování série článků o šifrování v MySQL.

V předchozím článku této série jsme diskutovali jak funguje šifrování hlavního klíče. Dnes se na základě dříve získaných poznatků podíváme na rotaci hlavních kláves.

Rotace hlavního klíče zahrnuje vygenerování nového hlavního klíče a opětovné zašifrování klíčů tabulkového prostoru (které jsou uloženy v záhlaví tabulkového prostoru) tímto novým klíčem.

Připomeňme si, jak vypadá záhlaví šifrovaného tabulkového prostoru:

Šifrování v MySQL: Rotace hlavního klíče

Z předchozího článku víme, že server při spuštění čte hlavičky všech šifrovaných tabulkových prostorů a pamatuje si největší KEY ID. Například pokud máme tři tabulky s KEYID = 3 a jedna tabulka s KEYID = 4, pak maximální ID klíče bude 4. Nazvěme toto ID klíče - MAX ID klíče.

Jak funguje rotace hlavního klíče

1. Uživatel spustí ALTER INNODB MASTER KEY.

2. Server požádá svazek klíčů, aby vygeneroval nový hlavní klíč s UUID a klíčem serveruID se rovná jedné plus MAXKEYID. Takže dostaneme ID hlavního klíče rovné INNODBKEY-UUID-(MAXKEYID + 1). Po úspěšném vygenerování hlavního klíče se MAX KEY ID zvýší o jednu (tj.KEYID=MAXKEYID + 1).

3. Server prohledá všechny tabulkové prostory zašifrované hlavním klíčem a pro každý tabulkový prostor:

  • zašifruje klíč tabulkového prostoru novým hlavním klíčem;

  • aktualizuje ID klíče na nové MAXKEYID;

  • pokud se UUID liší od UUID serveru, aktualizujte UUID serveru.

Jak víme, ID hlavního klíče používané k dešifrování tabulky se skládá z UUID a KEY ID načteného z hlavičky tabulkového prostoru. Nyní děláme aktualizaci těchto informací v záhlaví šifrování tabulkového prostoru, aby server obdržel správný hlavní klíč.

Pokud máme tabulkové prostory z různých míst, například různé zálohy, mohou používat různé hlavní klíče. Všechny tyto hlavní klíče bude nutné načíst z úložiště při spuštění serveru. To může zpomalit spouštění serveru, zejména pokud se používá úložiště klíčů na straně serveru. Rotací hlavního klíče znovu zašifrujeme klíče tabulkových prostorů pomocí jediného hlavního klíče, který je stejný pro všechny tabulkové prostory. Server by nyní měl při spuštění obdržet pouze jeden hlavní klíč.

To je samozřejmě jen příjemný vedlejší efekt. Hlavním účelem rotace hlavního klíče je zvýšit bezpečnost našeho serveru. V případě, že byl hlavní klíč nějakým způsobem ukraden z vaultu (například z Vault Serveru), je možné vygenerovat nový hlavní klíč a znovu zašifrovat klíče tabulkového prostoru, čímž dojde k znehodnocení ukradeného klíče. Jsme v bezpečí...skoro.

V předchozím článku jsem mluvil o tom, že jakmile je klíč tabulkového prostoru ukraden, může jej třetí strana použít k dešifrování dat. Za předpokladu, že je přístup k našemu disku. Pokud je hlavní klíč odcizen a máte přístup k zašifrovaným datům, můžete pomocí odcizeného hlavního klíče dešifrovat klíč tabulkového prostoru a získat dešifrovaná data. Jak vidíte, otáčení hlavního klíče v tomto případě nepomáhá. Znovu zašifrujeme klíč tabulkového prostoru pomocí nového hlavního klíče, ale skutečný klíč použitý k šifrování/dešifrování dat zůstává stejný. Proto jej „hacker“ může nadále používat k dešifrování dat. Dříve jsem to naznačil Percona Server pro MySQL může provádět skutečné přešifrování tabulkového prostoru, nejen jednoduché přešifrování klíče tabulkového prostoru. Tato funkce se nazývá šifrovací vlákna. Tato funkce je však zatím stále experimentální.

Rotace hlavního klíče je užitečná, když je hlavní klíč odcizen, ale útočník ho nemůže nijak použít a klíče tabulkového prostoru dešifrovat.

Přihlaste se k bezplatné ukázkové lekci.

Přečtěte si více:

Zdroj: www.habr.com