Titkosítás a MySQL-ben: Master Key Rotation

A tanfolyamra való új beiratkozás kezdetére számítva "Adatbázis" továbbra is cikksorozatot teszünk közzé a MySQL titkosításáról.

A sorozat előző cikkében megvitattuk hogyan működik a főkulcsos titkosítás. Ma a korábban szerzett ismeretek alapján nézzük meg a főbillentyűk forgását.

A főkulcs-forgatás magában foglalja egy új mesterkulcs létrehozását, és a táblaterületi kulcsok (amelyek a táblaterület fejléceiben vannak tárolva) újratitkosítását ezzel az új kulccsal.

Emlékezzünk vissza, hogyan néz ki egy titkosított táblaterület fejléce:

Titkosítás a MySQL-ben: Master Key Rotation

Az előző cikkből tudjuk, hogy a szerver indításkor beolvassa az összes titkosított táblaterület fejlécét, és megjegyzi a legnagyobb KEY ID-t. Például, ha három táblánk van KEY-velID = 3 és egy tábla KEY-velID = 4, akkor a maximális kulcsazonosító 4 lesz. Nevezzük ezt KEY ID - MAX KEY ID.

Hogyan működik a főkulcs-forgatás

1. A felhasználó végrehajtja az ALTER INNODB MASTER KEY parancsot.

2. A szerver kéri a kulcstartót, hogy hozzon létre egy új főkulcsot a szerver UUID-jával és KEY-velAz azonosító egy plusz MAXKEYID. Így az INNODB-vel egyenlő mesterkulcs-azonosítót kapunkKEY-UUID-(MAXKEYID + 1). A főkulcs sikeres generálása esetén a MAX KEY ID eggyel nő (azaz MAXKEYID=MAXKEYID + 1).

3. A szerver megvizsgálja az összes mesterkulccsal titkosított táblaterületet, és minden egyes táblaterületet:

  • titkosítja a táblaterület kulcsát az új főkulccsal;

  • frissíti a kulcsazonosítót az új MAX-raKEYAzonosító;

  • ha az UUID eltér a szerver UUID azonosítójától, akkor frissítse a szerver UUID azonosítóját.

Mint tudjuk, a tábla visszafejtésére használt Master Key ID egy UUID-ből és egy KEY ID-ből áll, amelyet a táblaterület fejlécéből olvasnak ki. Amit most teszünk, az az, hogy frissítjük ezeket az információkat a táblaterület titkosítási fejlécében, hogy a kiszolgáló megkapja a megfelelő főkulcsot.

Ha különböző helyekről származó táblaterületeink vannak, például különböző biztonsági másolataink, akkor ezek különböző mesterkulcsokat használhatnak. Ezeket a főkulcsokat a szerver indításakor le kell kérni a lerakatból. Ez lelassíthatja a szerver indítását, különösen, ha szerveroldali kulcstárolót használnak. A főkulcs-forgatással újratitkosítjuk a táblaterületi kulcsokat egyetlen mesterkulccsal, amely minden táblaterületre azonos. A szervernek most csak egy főkulcsot kell kapnia az indításkor.

Ez persze csak egy kellemes mellékhatás. A főkulcs-rotáció fő célja szerverünk biztonságosabbá tétele. Abban az esetben, ha a főkulcsot valamilyen módon ellopták a tárolóból (például a Vault kiszolgálóról), lehetőség van új mesterkulcs létrehozására és a táblaterületi kulcsok újratitkosítására, érvénytelenítve a lopott kulcsot. Biztonságban vagyunk...majdnem.

Egy korábbi cikkben beszéltem arról, hogy ha egy táblaterületi kulcsot ellopnak, egy harmadik fél felhasználhatja az adatok visszafejtésére. Feltéve, hogy elérhető a lemezünk. Ha a főkulcsot ellopták, és hozzáfér a titkosított adatokhoz, akkor az ellopott főkulcs segítségével visszafejtheti a táblaterületi kulcsot, és lekérheti a visszafejtett adatokat. Mint látható, a főkulcs elforgatása ebben az esetben nem segít. A táblaterületi kulcsot újratitkosítjuk az új főkulccsal, de az adatok titkosításához/visszafejtéséhez használt tényleges kulcs ugyanaz marad. Ezért a "hacker" továbbra is használhatja az adatok visszafejtésére. Korábban utaltam erre Percona Server MySQL-hez valódi táblaterület-újratitkosítást hajthat végre, nem csak egyszerű táblaterületkulcs-újratitkosítást. Ezt a szolgáltatást titkosítási szálaknak nevezik. Ez a funkció azonban jelenleg még kísérleti jellegű.

A főkulcs-forgatás akkor hasznos, ha a főkulcsot ellopják, de a támadónak nincs módja annak használatára és a táblaterületi kulcsok visszafejtésére.

Iratkozzon fel egy ingyenes bemutató leckére.

Olvass tovább:

Forrás: will.com