Uue kursuse alguse eelõhtul jätkame MySQL-i krüptimist käsitleva artiklite seeria avaldamist.
Selles seeria eelnevas artiklis arutasime, . Täna vaatame, tuginedes varasematele teadmistele, peavõtete rotatsiooni.
Peavõtete rotatsioon seisneb uue peavõtme genereerimises ja selle uue võtmega tabeliruumi võtmete uuesti krüptimises (mis on salvestatud tabeliruumi päistes).
Korrake, kuidas näeb välja salastatud tabeliruumi pealkiri:

Eelmisest artiklist teame, et server loeb käivitamisel kõigi salastatud tabeliruumi päiseid ja salvestab kõige suurema KEY ID. Näiteks kui meil on kolm tabelit KEYID = 3 ja üks tabel KEYID = 4, siis maksimaalne võtme identifikaator on 4. Kutsume seda KEY ID-d — MAX KEY ID.
Kuidas peavõtme rotatsioon töötab
1. Kasutaja täidab ALTER INNODB MASTER KEY.
2. Server küsib võtmehoidlast (keyring) uue peavõtme genereerimist, kasutades serveri UUID-d ja KEYID, mis on suurendatud ühe võrra MAXKEYID. Seega saame põhivõtme ID, mis on INNODBKEY-UUID- (MAXKEYID + 1). Kui põhivõti genereeritakse edukalt, suureneb MAX KEY ID ühe võrra (st MAXKEYID = MAXKEYID + 1).
3. Server vaatab läbi kõik tabeliruumi, mis on krüpteeritud põhivõtme abil, ja iga tabeliruumi puhul:
krüpteerib tabeliruumi võtme uue põhivõtmega;
uuendab võtme ID-d uue MAXKEYID;
kui UUID erineb serveri UUID-st, uuendab serveri UUID-d.
Nagu me teame, koosneb põhivõtme ID (Master Key ID), mida kasutatakse tabeli dekrüpteerimiseks, UUID-st ja KEY ID-st, mis on loetud tabeliruumi päisest. Praegu uuendame selle teabe tabeliruumi krüpteerimise päises, et server saaks õige põhivõtme.
Kui meil on erinevatest kohtadest, näiteks erinevatest varukoopiatest saadud tabeliruumid, võivad need kasutada erinevaid põhihtusid. Kõik need põhivõtmed tuleb serveri käivitamisel hankida ladustamisest. See võib serveri käivitamist aeglustada, eriti kui kasutatakse serveri võtmehoidlat. Põhivõtme vahetamisega krüpteerime tabeliruumide võtmed ühe ja sama põhivõtmega, mis on kõigile tabeliruumidele ühesugune. Nüüd peab server käivitamisel hankima vaid ühe põhivõtme.
See on loomulikult vaid tore kõrvaltoime. Põhieesmärk põhivõtmete vahetamisel on muuta meie server turvalisemaks. Kui põhivõti on mingil moel varastatud ladustusest (näiteks Vault Serverist), saab genereerida uue põhivõtme ja krüpteerida tabeliruumide võtmed uuesti, muutes varastatud võtme kehtetuks. Oleme ohutud... peaaegu.
Eelnevas artiklis rääkisin, et ruumi võtme varguse korral võib kolmas osapool seda kasutada andmete dekrüpteerimiseks, eeldusel, et tal on juurdepääs meie kettale. Kui peavõti on varastatud ja juurdepääs on krüpteeritud andmetele, võib varastatud peavõtit kasutada ruumi võtme dekrüpteerimiseks ja saada dekodeeritud andmed. Nagu näeme, ei aita peavõtme vahetamine sellisel juhul. Me krüpteerime ruumi võtme uuesti uue peavõtmega, kuid andmete krüptimiseks/dekrüptimiseks kasutatav tegelik võti jääb samaks. Seetõttu võib "häkker" jätkuvalt seda kasutada andmete dekrüpteerimiseks. Varem vihjasin, et võib teha tegelikku ruumide uuesti krüptimist, mitte ainult ruumi võtme lihtsat uuesti krüptimist. Seda funktsiooni nimetatakse krüpteerimise niitideks (encryption threads). Siiski on see funktsionaalsus praegu endiselt katsetamisfaasis.
Peamiste võtmete pööramine on kasulik, kui peamine võti on varastatud, kuid kurjategijal pole võimalust seda kasutada ega tabeliruumi võtmeid dešifreerida.
Loe edasi:
Allikas: habr.com
