Kriptimi nĂ« MySQL: Rotacioni i ÇelĂ«sit Master

Me para 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ësin kryesor (Master Key). Sot, duke u bazuar në njohuritë e marra më parë, do të shikojmë rotacionin e çelësave kryesorë.

Rotacioni i çelësave kryesorë përfshin gjenerimin e një çelësi të ri kryesor dhe riparimin e çelësave të hapësirave të tabelës (të cilat ruhen në titujt e hapësirave të tabelës) me këtë çelës të ri.

Le të kujtojmë se si duket titulli i hapësirës së tabelës së enkriptuar:

Kriptimi nĂ« MySQL: Rotacioni i ÇelĂ«sit Master

Nga artikulli i mĂ«parshĂ«m dimĂ« se serveri gjatĂ« nisjes lexon titujt e tĂ« gjitha hapĂ«sirave tĂ« tabelave tĂ« enkriptuara dhe mban mend ID-nĂ« mĂ« tĂ« madhe tĂ« ÇelĂ«sit. PĂ«r shembull, nĂ«se kemi tri tabela me KEYID = 3 dhe njĂ« tabelĂ« me KEYID = 4, 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 kryen ALTER INNODB MASTER KEY.

2. Serveri kërkon në depozitat e çelësave (keyring) gjenerimin e një çelësi të ri kryesor me UUID-un e serverit dhe KEYID, e cila është rritur me një njësi MAXKEYID. Kështu, ne marrim identifikuesin e çelësit kryesor, të barabartë me INNODBKEY-UUID- (MAXKEYID + 1). Me një gjenerim të suksesshëm të çelësit kryesor MAX KEY ID rritet me një njësi (dmth. MAXKEYID = MAXKEYID + 1).

3. Serveri shqyrton të gjitha hapësirat e tabelave, të enkripuara me çelësin kryesor, dhe për çdo hapësirë tabele:

  • kriptimi i çelĂ«sit tĂ« hapĂ«sirĂ«s sĂ« tabelĂ«s me çelĂ«sin e ri kryesor;

  • pĂ«rditĂ«simi i identifikuesit tĂ« çelĂ«sit nĂ« MAX-nĂ« e reKEYID;

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

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

Nëse kemi hapësira tabelash të marra nga vende të ndryshme, për shembull, nga kopje të ndryshme rezervë, ato mund të kenë çelësa kryesorë të ndryshëm. Të gjithë këta çelësa kryesorë do të duhet të merren nga magazina gjatë nisjes së serverit. Kjo mund ta ngadalësojë nisjen e serverit, veçanërisht nëse po përdoret një magazinë çelësi serveri. Me rotacionin e çelësit kryesor, ne rikodifikojmë çelësat e hapësirave të tabelave me një çelës kryesor, të njëjtë për të gjitha hapësirat e tabelave. Tani, gjatë nisjes, serveri duhet të marrë vetëm një çelës kryesor.

Sigurisht, kjo është vetëm një efekt anësor i këndshëm. Qëllimi kryesor i rotacionit të çelësave kryesorë është të bëjë serverin tonë më të sigurt. Në rast se çelësi kryesor është ndonjëherë vjedhur nga magazina (për shembull, nga Vault Server), është e mundur të gjenerohet një çelës kryesor i ri dhe të rikodifikohen çelësat e hapësirave të tabelave, duke e bërë çelësin e vjedhur të pavlefshëm. Ne jemi të sigurt... pothuajse.

Në artikullin e mëparshëm kam folur se pas vjedhjes së çelësit të hapësirës tabelare, një palë e tretë mund ta përdorë atë për të dekoduar të dhënat, nëse ka akses në diskun tonë. Në rastin e vjedhjes së çelësit kryesor dhe nëse ka akses në të dhënat e koduara, mund të përdoret çelësi kryesor i vjedhur për të dekoduar çelësin e hapësirës tabelare dhe për të marrë të dhënat e dekoduara. Siç e shohim, rotacioni i çelësit kryesor në këtë rast nuk ndihmon. Ne rikodifikojmë çelësin e hapësirës tabelare me një çelës kryesor të ri, por çelësi efektiv i përdorur për kodimin/dekodimin e të dhënave mbetet i njëjtë. Prandaj, "hackeri" mund të vazhdojë ta përdorë atë për të dekoduar të dhënat. Më parë kam aluduar se Percona Server për MySQL mund të kryejë rikodifikim të vërtetë të hapësirave tabelash, dhe jo vetëm rikodifikimin e thjeshtë të çelësit të hapësirës tabelare. Kjo funksionalitet quhet rrjedha e kodifikimit (encryption threads). Megjithatë, në këtë moment, kjo funksionalitet ende konsiderohet eksperimentale.

Rotacioni i çelësit kryesor është i dobishëm kur çelësi kryesor është vjedhur, por sulmuesi nuk ka mundësi ta përdorë atë për të dekoduar çelësat e hapësirave tabelore.

Regjistrohu për një mësim falas demon.

Lexoni më shumë:

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster