Kriptimi në MySQL: Rrotullimi kryesor i çelësit

Në pritje të fillimit të një regjistrimi të ri për kursin "Baza e të dhënave" ne vazhdojmë të botojmë një seri artikujsh rreth enkriptimit në MySQL.

Në artikullin e mëparshëm në këtë seri, ne diskutuam si funksionon kriptimi kryesor i çelësit. Sot, bazuar në njohuritë e marra më herët, le të shohim rrotullimin e çelësave kryesorë.

Rrotullimi i tastit kryesor përfshin gjenerimin e një çelësi të ri kryesor dhe rikriptimin e çelësave të hapësirës së tabelës (të cilët ruhen në titujt e hapësirës së tabelës) me këtë çelës të ri.

Le të kujtojmë se si duket titulli i një hapësire tavoline të koduar:

Kriptimi në MySQL: Rrotullimi kryesor i çelësit

Nga artikulli i mëparshëm, ne e dimë se serveri lexon titujt e të gjitha hapësirave tavoline të koduara në fillim dhe kujton ID-në më të madhe KEY. Për shembull nëse kemi tre tabela me KEYID = 3 dhe një tabelë me KEYID = 4, atëherë ID-ja maksimale e çelësit do të jetë 4. Le ta quajmë këtë KEY ID - MAX KEY ID.

Si funksionon rrotullimi kryesor i tastit

1. Përdoruesi ekzekuton ALTER INNODB MASTER KEY.

2. Serveri kërkon çelësin për të gjeneruar një çelës të ri kryesor me serverin UUID dhe KEYID e barabartë me një plus MAXKRYESOREID. Pra, marrim id-në e çelësit master të barabartë me INNODBKEY-UUID-(MAXKRYESOREID + 1). Pas gjenerimit të suksesshëm të çelësit kryesor, ID MAX KEY rritet me një (d.m.th. MAXKRYESOREID=MAXKRYESOREID + 1).

3. Serveri skanon të gjitha hapësirat e tavolinës të koduara me çelësin kryesor dhe për secilën hapësirë ​​tavoline:

  • kodon çelësin e hapësirës së tabelës me çelësin e ri kryesor;

  • përditëson ID-në e çelësit në MAX të riKRYESOREID;

  • nëse UUID është i ndryshëm nga UUID i serverit, atëherë përditësoni UUID të serverit.

Siç e dimë, ID-ja kryesore e çelësit që përdoret për të deshifruar një tabelë përbëhet nga një UUID dhe një ID KEY i lexuar nga kreu i hapësirës së tabelës. Ajo që po bëjmë tani është përditësimi i këtij informacioni në kokën 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 tavoline nga vende të ndryshme, si p.sh. kopje rezervë të ndryshme, atëherë ato mund të përdorin çelësa të ndryshëm master. Të gjithë këta çelësa kryesorë do të duhet të merren nga depoja kur të fillojë serveri. Kjo mund të ngadalësojë fillimin e serverit, veçanërisht nëse përdoret një dyqan çelësash nga ana e serverit. Me rrotullimin e çelësit kryesor, ne rikriptojmë çelësat e hapësirës së tavolinës me një çelës të vetëm kryesor që është i njëjtë për të gjitha hapësirat e tavolinës. Serveri tani duhet të marrë vetëm një çelës kryesor në nisje.

Ky, natyrisht, është vetëm një efekt anësor i këndshëm. Qëllimi kryesor i rrotullimit të çelësit kryesor është ta bëjë serverin tonë më të sigurt. Në rast se çelësi kryesor është vjedhur disi nga kasaforta (për shembull, nga serveri Vault), është e mundur të gjenerohet një çelës i ri kryesor dhe të rikriptohen çelësat e hapësirës së tabelës, duke e pavlefshme çelësin e vjedhur. Jemi të sigurt...pothuajse.

Në një artikull të mëparshëm, unë fola se si pasi të vidhet një çelës i hapësirës së tavolinës, një palë e tretë mund ta përdorë atë për të deshifruar të dhënat. Me kusht që të ketë akses në diskun tonë. Nëse çelësi kryesor është vjedhur dhe ju keni akses në të dhënat e koduara, mund të përdorni çelësin kryesor të vjedhur për të deshifruar çelësin e hapësirës së tabelës dhe për të marrë të dhënat e deshifruara. Siç mund ta shihni, rrotullimi i çelësit kryesor nuk ndihmon në këtë rast. Ne e rikriptojmë çelësin e hapësirës së tabelës me çelësin e ri kryesor, por çelësi aktual i përdorur për të kriptuar/deshifruar të dhënat mbetet i njëjtë. Prandaj, "hakeri" mund të vazhdojë ta përdorë atë për të deshifruar të dhënat. Më herët kam lënë të kuptohet se Serveri Percona për MySQL mund të kryejë rikriptim të vërtetë të hapësirës së tavolinës, jo vetëm rikriptim të thjeshtë të çelësit të hapësirës së tavolinës. Kjo veçori quhet fije enkriptimi. Megjithatë, ky funksionalitet është ende eksperimental për momentin.

Rrotullimi kryesor i çelësit është i dobishëm kur çelësi kryesor vidhet, por nuk ka asnjë mënyrë që një sulmues ta përdorë atë dhe të deshifrojë çelësat e hapësirës së tavolinës.

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

Lexo më shumë:

Burimi: www.habr.com