Krüpteerimine MySQL-is: põhivõtme pööramine

Kursusele uue registreerimise ootuses "Andmebaas" jätkame MySQL-i krüptimist käsitlevate artiklite seeria avaldamist.

Selle sarja eelmises artiklis arutasime kuidas põhivõtme krüptimine töötab. Täna, tuginedes varem omandatud teadmistele, vaatame põhiklahvide pöörlemist.

Peavõtme pööramine hõlmab uue peavõtme genereerimist ja tabeliruumi võtmete (mis on salvestatud tabeliruumi päistesse) uuesti krüptimist selle uue võtmega.

Tuletame meelde, kuidas näeb välja krüptitud tabeliruumi päis:

Krüpteerimine MySQL-is: põhivõtme pööramine

Eelmisest artiklist teame, et server loeb käivitamisel kõigi krüpteeritud tabeliruumide päised ja jätab meelde suurima VÕTME ID. Näiteks kui meil on kolm tabelit KEY-gaID = 3 ja üks tabel KEY-gaID = 4, siis on maksimaalne võtme ID 4. Nimetagem seda KEY ID - MAX KEY ID.

Kuidas põhivõtme pööramine töötab

1. Kasutaja käivitab käsu ALTER INNODB MASTER KEY.

2. Server palub võtmerõngal genereerida serveri UUID ja KEY abil uus peavõtiID on üks pluss MAXKEYID. Seega saame peavõtme ID, mis on võrdne INNODB-gaKEY-UUID-(MAXKEYID + 1). Peavõtme eduka genereerimise korral suurendatakse MAX KEY ID-d ühe võrra (st MAXKEYID=MAXKEYID + 1).

3. Server kontrollib kõiki põhivõtmega krüptitud tabeliruume ja iga tabeliruumi:

  • krüpteerib tabeliruumi võtme uue põhivõtmega;

  • värskendab võtme ID-d uuele MAX-ileKEYID;

  • kui UUID erineb serveri UUID-st, värskendage serveri UUID-d.

Nagu me teame, koosneb tabeli dekrüpteerimiseks kasutatav põhivõtme ID UUID-st ja tabeliruumi päisest loetud KEY ID-st. See, mida me praegu teeme, on selle teabe värskendamine tabeliruumi krüptimise päises, et server saaks õige peavõtme.

Kui meil on erinevatest kohtadest pärit tabeliruume, näiteks erinevad varukoopiad, võivad need kasutada erinevaid peavõtmeid. Kõik need põhivõtmed tuleb serveri käivitamisel hoidlast alla laadida. See võib serveri käivitumist aeglustada, eriti kui kasutatakse serveripoolset võtmehoidlat. Peavõtme pööramisega krüpteerime tabeliruumi võtmed uuesti ühe peavõtmega, mis on kõigi tabeliruumide jaoks sama. Server peaks nüüd käivitamisel saama ainult ühe peavõtme.

See on muidugi vaid meeldiv kõrvalmõju. Põhivõtme pööramise peamine eesmärk on muuta meie server turvalisemaks. Juhul, kui peavõti varastati mingil moel hoidlast (näiteks Vault Serverist), on võimalik genereerida uus peavõti ja tabeliruumi võtmed uuesti krüpteerida, muutes varastatud võtme kehtetuks. Oleme kaitstud... peaaegu.

Eelmises artiklis rääkisin sellest, kuidas kui tabeliruumi võti on varastatud, saab kolmas osapool seda andmete dekrüpteerimiseks kasutada. Eeldusel, et meie kettale on juurdepääs. Kui peavõti on varastatud ja teil on juurdepääs krüptitud andmetele, saate varastatud põhivõtme abil tabeliruumi võtme dekrüpteerimiseks ja dekrüpteeritud andmete hankimiseks kasutada. Nagu näete, ei aita sel juhul peavõtme pööramine. Krüpteerime tabeliruumi võtme uuesti uue peavõtmega, kuid andmete krüptimiseks/dekrüpteerimiseks kasutatav tegelik võti jääb samaks. Seetõttu saab "häkker" seda jätkuvalt andmete dekrüpteerimiseks kasutada. Varem vihjasin sellele Percona server MySQL-i jaoks saab teostada tõelist tabeliruumi uuesti krüptimist, mitte ainult lihtsat tabeliruumi võtme uuesti krüptimist. Seda funktsiooni nimetatakse krüpteerimislõimedeks. See funktsioon on aga hetkel veel eksperimentaalne.

Peavõtme pööramine on kasulik, kui peavõti on varastatud, kuid ründajal pole võimalust seda kasutada ja tabeliruumi võtmeid dekrüpteerida.

Registreeruge tasuta demotunnile.

Loe rohkem:

Allikas: www.habr.com