Kriptimi në MySQL: rotacioni i Master Key.

Në prag të fillimit të një grupi të ri për kursin «Baza të dhënash» vazhdojmë të publikojmë një seri artikujsh mbi enkriptimin në MySQL.

Në artikullin e mëparshëm të kësaj serie ne diskutuam, si funksionon enkriptimi me çelësi kryesor (Master Key). Sot, duke u bazuar në njohuritë e marra më parë, do të shohim mbi rotacionin e çelësave kryesorë.

Rotacioni i çelësit kryesor përfshin gjenerimin e një çelësi të ri kryesor dhe fuqitë e të gjitha çelësave të tablove dhe tabelave (të cilat ruhen në titujt e tabloave).

Le të rikujtojmë se si duket titulli i një tablice të enkriptuar:

Kriptimi në MySQL: rotacioni i Master Key.

Nga artikulli i mëparshëm dimë se serveri gjatë nisjes lexon titujt e të gjitha tablove të enkriptuara dhe kujton ID-në më të madhe të Çelësit. Për shembull, nëse kemi tre tabela me KEYID = 3 dhe një tabelë me KEYID = 4, atëherë identifikuesi maksimal i çelësit do të jetë 4. Le të quajmë këtë KEY ID — MAX KEY ID.

Si funksionon rotacioni i çelësit kryesor

1. Përdoruesi ekzekuton ALTER INNODB MASTER KEY.

2. Serveri kërkon në magazinën e çelësave (keyring) gjenerimin e një çelësi të ri kryesor me UUID të serverit dhe KEYID, i barabartë me MAX të rritur me njësiÇELSIID. Kështu, ne marrim identifikuesin e çelësit kryesor, i barabartë me INNODBÇELSI-UUID- (MAXÇELSIID + 1). Me suksesin në gjenerimin e çelësit kryesor, MAX KEY ID rritet me njësi (dmth. MAXÇELSIID = MAXÇELSIID + 1).

3. Serveri shikon të gjitha hapësirat tabelore të enkriptuara me çelësin kryesor dhe për çdo hapësirë tabelore:

  • enkripton çelësin e hapësirës tabelore me çelësin e ri kryesor;

  • përditëson identifikuesin e çelësit në MAX të riÇELSIID;

  • nëse UUID ndryshon nga UUID i serverit, atëherë përditëson UUID e serverit.

Siç e dimë, identifikuesi i çelësit kryesor (Master Key ID), i përdorur për dekriptimin e tabelës, përbëhet nga UUID dhe KEY ID, të lexuara nga titulli i hapësirës tabelore. Ajo që po bëjmë tani është përditësimi i kësaj informacioni në titullin e enkriptimit të hapësirës tabelore, në mënyrë që serveri të marrë çelësin kryesor të saktë.

Nëse kemi hapësira tabelash që vijnë nga vende të ndryshme, për shembull, nga kopje të ndryshme rezervë, ato mund të përdorin çelësa kryesorë të ndryshëm. Të gjithë këta çelësa kryesorë do të duhet të nxirren nga depoja në momentin e nisjes së serverit. Kjo mund të ngadalësojë nisjen e serverit, veçanërisht nëse përdoret depoja e çelësave të serverit. Me ndërrimin e çelësit kryesor, ne ri-enkriptojmë çelësat e hapësirave tabelash me një çelës kryesor të vetëm, që është i njëjtë për të gjitha hapësirat tabelash. Tani, në momentin e nisjes, serveri duhet të marrë vetëm një çelës kryesor.

Kjo, natyrisht, është vetëm një efekt anësor i këndshëm. Qëllimi kryesor i ndërrimit të çelësave kryesorë është të bëjmë serverin tonë më të sigurt. Në rast se çelësi kryesor është vjedhur ndonjëherë nga depoja (për shembull, nga Vault Server), ne mund të gjenerojmë një çelës kryesor të ri dhe të ri-enkriptojmë çelësat e hapësirave tabelash, duke e bërë çelësin e vjedhur të pavlefshëm. Ne jemi të sigurt... pothuajse.

Në artikullin e kaluar, përmenda se pas vjedhjes së çelësit të hapësirës së tabelës, një palë e tretë mund ta përdorë atë për të dekoduar të dhënat, nëse ka qasje në diskun tonë. Në rastin e vjedhjes së çelësit kryesor dhe nëse ekziston qasje në të dhënat e koduara, mund të përdorim çelësin e vjedhur kryesor për të dekoduar çelësin e hapësirës së tabelës dhe për të marrë të dhënat e dekoduara. Siç e shohim, rotacioni i çelësit kryesor nuk ndihmon në këtë rast. Ne rivendosim çelësin e hapësirës së tabelës me një çelës kryesor të ri, por çelësi real që përdoret për kodimin/dekodimin e të dhënave mbetet i njëjtë. Prandaj, "hacker" mund ta përdorë atë përsëri për të dekoduar të dhënat. Më parë, kam sugjeruar se Percona Server për MySQL mund të realizojë rivendosje të vërtetë të hapësirave të tabelave, jo vetëm një rivendosje të thjeshtë të çelësit të hapësirës së tabelës. Ky funksion quhet kthesa të kodimit (encryption threads). Megjithatë, deri tani kjo funksionalitet ende është eksperimentale.

Rrotacioni i çelësit kryesor është i dobishëm kur çelësi kryesor është vjedhur, por sulmuesi nuk ka mënyrë ta përdorë dhe të dekodojë çelësat e hapësirave të tabelave.

Regjistrohuni për një mësim demonstrativ falas.

Lexoni më shumë:

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster