Szyfrowanie w MySQL: rotacja klucza głównego

W oczekiwaniu na rozpoczęcie nowych zapisów na kurs "Baza danych" kontynuujemy publikowanie serii artykułów na temat szyfrowania w MySQL.

W poprzednim artykule z tej serii omówiliśmy jak działa szyfrowanie klucza głównego. Dzisiaj, w oparciu o zdobytą wcześniej wiedzę, przyjrzyjmy się rotacji głównych klawiszy.

Rotacja klucza głównego polega na wygenerowaniu nowego klucza głównego i ponownym zaszyfrowaniu kluczy obszaru tabel (które są przechowywane w nagłówkach obszaru tabel) za pomocą tego nowego klucza.

Przypomnijmy, jak wygląda nagłówek zaszyfrowanego obszaru tabel:

Szyfrowanie w MySQL: rotacja klucza głównego

Z poprzedniego artykułu wiemy, że serwer przy uruchomieniu odczytuje nagłówki wszystkich zaszyfrowanych obszarów tabel i zapamiętuje największy KEY ID. Na przykład, jeśli mamy trzy tabele z KLUCZEMID = 3 i jedna tabela z KLUCZEMID = 4, wówczas maksymalny identyfikator klucza będzie wynosić 4. Nazwijmy to KEY ID - MAX KEY ID.

Jak działa rotacja klucza głównego

1. Użytkownik wykonuje ZMIEŃ KLUCZ GŁÓWNY INNODB.

2. Serwer żąda od bazy kluczy wygenerowania nowego klucza głównego z identyfikatorem UUID i KLUCZEM serweraIdentyfikator równy jeden plus MAXKEYID. Otrzymujemy więc identyfikator klucza głównego równy INNODBKLUCZ-UUID-(MAXKEYDowód osobisty + 1). Po pomyślnym wygenerowaniu klucza głównego wartość MAX KEY ID jest zwiększana o jeden (tzn. MAXKEYID=MAXKEYDowód osobisty + 1).

3. Serwer skanuje wszystkie obszary tabel zaszyfrowane kluczem głównym i dla każdego obszaru tabel:

  • szyfruje klucz obszaru tabel nowym kluczem głównym;

  • aktualizuje identyfikator klucza do nowego MAXKEYNS;

  • jeśli identyfikator UUID różni się od identyfikatora UUID serwera, zaktualizuj identyfikator UUID serwera.

Jak wiemy, identyfikator klucza głównego używany do odszyfrowania tabeli składa się z identyfikatora UUID i identyfikatora KEY odczytanego z nagłówka obszaru tabel. To, co teraz robimy, to aktualizacja tych informacji w nagłówku szyfrowania obszaru tabel, tak aby serwer otrzymał poprawny klucz główny.

Jeśli mamy obszary tabel z różnych lokalizacji, na przykład z różnych kopii zapasowych, mogą one używać różnych kluczy głównych. Wszystkie te klucze główne będą musiały zostać pobrane z repozytorium podczas uruchamiania serwera. Może to spowolnić uruchamianie serwera, szczególnie jeśli używany jest magazyn kluczy po stronie serwera. Dzięki rotacji klucza głównego ponownie szyfrujemy klucze obszaru tabel za pomocą jednego klucza głównego, który jest taki sam dla wszystkich obszarów tabel. Serwer powinien teraz otrzymać przy uruchomieniu tylko jeden klucz główny.

To oczywiście tylko przyjemny efekt uboczny. Głównym celem rotacji klucza głównego jest zwiększenie bezpieczeństwa naszego serwera. W przypadku, gdy klucz główny został w jakiś sposób skradziony ze skarbca (na przykład z serwera Vault), możliwe jest wygenerowanie nowego klucza głównego i ponowne zaszyfrowanie kluczy obszaru tabel, unieważniając skradziony klucz. Jesteśmy bezpieczni... prawie.

W poprzednim artykule mówiłem o tym, jak po kradzieży klucza obszaru tabel osoba trzecia może go użyć do odszyfrowania danych. Pod warunkiem, że będzie dostęp do naszego dysku. Jeśli klucz główny zostanie skradziony i masz dostęp do zaszyfrowanych danych, możesz użyć skradzionego klucza głównego do odszyfrowania klucza obszaru tabel i uzyskania odszyfrowanych danych. Jak widać, obrót klucza głównego nie pomaga w tym przypadku. Ponownie szyfrujemy klucz obszaru tabel nowym kluczem głównym, ale faktyczny klucz używany do szyfrowania/odszyfrowywania danych pozostaje taki sam. Dlatego „haker” może nadal używać go do odszyfrowywania danych. Wcześniej to zasugerowałem Serwer Percona dla MySQL może wykonać prawdziwe ponowne szyfrowanie obszaru tabel, a nie tylko proste ponowne szyfrowanie klucza obszaru tabel. Ta funkcja nazywa się wątkami szyfrowania. Jednak w tej chwili ta funkcja jest wciąż w fazie eksperymentalnej.

Rotacja klucza głównego jest przydatna w przypadku kradzieży klucza głównego, ale osoba atakująca nie ma możliwości jego użycia i odszyfrowania kluczy obszaru tabel.

Zapisz się na bezpłatną lekcję demonstracyjną.

Czytaj więcej:

Źródło: www.habr.com