Pag-encrypt sa MySQL: Master Key Rotation

Sa bisperas ng pagsisimula ng isang bagong pagpapatala para sa kurso "Database" Patuloy kaming naglalathala ng serye ng mga artikulo tungkol sa pag-encrypt sa MySQL.

Sa nakaraang artikulo sa seryeng ito ay tinalakay natin, Paano gumagana ang Master Key encryption?. Ngayon, batay sa kaalaman na nakuha kanina, tingnan natin ang pag-ikot ng mga master key.

Kasama sa pag-ikot ng master key ang pagbuo ng bagong master key at muling pag-encrypt ng mga tablespace key (na nakaimbak sa mga header ng tablespace) gamit ang bagong key na ito.

Tandaan natin kung ano ang hitsura ng header ng isang naka-encrypt na tablespace:

Pag-encrypt sa MySQL: Master Key Rotation

Mula sa nakaraang artikulo, alam namin na kapag nagsimula ang server, binabasa nito ang mga header ng lahat ng naka-encrypt na espasyo ng talahanayan at naaalala ang pinakamalaking KEY ID. Halimbawa, kung mayroon kaming tatlong talahanayan na may KEYID = 3 at isang table na may KEYID = 4, kung gayon ang maximum na key ID ay magiging 4. Tawagan natin itong KEY ID - MAX KEY ID.

Paano gumagana ang pag-ikot ng master key

1. Isinasagawa ng user ang ALTER INNODB MASTER KEY.

2. Hinihiling ng server ang keyring upang makabuo ng bagong master key mula sa server na UUID at KEYAng ID na katumbas ng MAX ay tumaas ng isaKEYID. Kaya nakakakuha kami ng master key id na katumbas ng INNODBKEY-UUID- (MAXKEYID + 1). Sa matagumpay na pagbuo ng master key, ang MAX KEY ID ay tataas ng isa (i.e. MAXKEYID=MAXKEYID + 1).

3. Ini-scan ng server ang lahat ng tablespace na naka-encrypt gamit ang master key, at para sa bawat tablespace:

  • ine-encrypt ang tablespace key gamit ang bagong master key;

  • ina-update ang key ID sa bagong MAXKEYID;

  • kung iba ang UUID sa UUID ng server, i-update ang UUID ng server.

Tulad ng alam natin, ang Master Key ID na ginamit upang i-decrypt ang isang table ay binubuo ng isang UUID at isang KEY ID na nabasa mula sa tablespace header. Ang ginagawa namin ngayon ay i-update ang impormasyong ito sa tablespace encryption header para matanggap ng server ang tamang master key.

Kung mayroon kaming mga tablespace na nagmumula sa iba't ibang lugar, tulad ng iba't ibang backup, maaaring gumamit ang mga ito ng iba't ibang master key. Ang lahat ng mga master key na ito ay kailangang makuha mula sa repository kapag nagsimula ang server. Maaari nitong pabagalin ang pagsisimula ng server, lalo na kung gumagamit ka ng isang server-based na keystore. Sa pag-ikot ng master key, muling ine-encrypt namin ang mga tablespace key gamit ang isang master key na pareho para sa lahat ng tablespace. Ngayon, kapag nagsisimula, ang server ay dapat tumanggap lamang ng isang master key.

Ito ay, siyempre, isang kaaya-ayang side effect lamang. Ang pangunahing layunin ng pag-ikot ng mga master key ay gawing mas secure ang aming server. Kung ang master key ay kahit papaano ay ninakaw mula sa vault (halimbawa, mula sa Vault Server), kung gayon ang isang bagong master key ay maaaring mabuo at ang mga tablespace key ay maaaring muling i-encrypt, na magpapawalang-bisa sa ninakaw na key. Ligtas na tayo... halos.

Sa isang nakaraang artikulo, tinalakay ko kung paano kapag ang isang tablespace key ay ninakaw, magagamit ito ng isang third party upang i-decrypt ang data. Sa kondisyon na mayroong access sa aming disk. Kung ninakaw ang master key at mayroon kang access sa naka-encrypt na data, maaari mong gamitin ang ninakaw na master key para i-decrypt ang tablespace key at makuha ang na-decrypt na data. Tulad ng nakikita mo, ang pag-ikot ng master key ay hindi makakatulong sa kasong ito. Muli naming ini-encrypt ang tablespace key gamit ang bagong master key, ngunit ang aktwal na key na ginamit para i-encrypt/decrypt ang data ay nananatiling pareho. Samakatuwid, ang "hacker" ay maaaring patuloy na gamitin ito upang i-decrypt ang data. Nagpahiwatig ako kanina Percona Server para sa MySQL maaaring magsagawa ng totoong tablespace re-encryption, hindi lamang simpleng tablespace key re-encryption. Ang tampok na ito ay tinatawag na mga thread ng pag-encrypt. Gayunpaman, ang pagpapaandar na ito ay pang-eksperimento pa rin sa ngayon.

Kapaki-pakinabang ang pag-ikot ng master key kapag ninakaw ang master key ngunit walang paraan ang attacker na gamitin ito at i-decrypt ang mga tablespace key.

Mag-sign up para sa isang libreng demo na aralin.

Magbasa pa:

Pinagmulan: www.habr.com