Në prag të fillimit të një grupi të ri për kursin  vazhdojmë të publikojmë një seri artikujsh mbi enkriptimin në MySQL.
Në artikullin e mëparshëm të kësaj serie ne diskutuam, . 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:

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 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.
Lexoni më shumë:
Burimi: habr.com
