Шифровање у МиСКЛ: Ротација главног кључа

У ишчекивању почетка новог уписа курса "База података" настављамо да објављујемо серију чланака о шифровању у МиСКЛ-у.

У претходном чланку у овој серији разговарали смо како функционише шифровање главног кључа. Данас, на основу знања стеченог раније, погледајмо ротацију главних кључева.

Ротација главног кључа укључује генерисање новог главног кључа и поновно шифровање кључева простора табеле (који се чувају у заглављима простора табеле) овим новим кључем.

Подсетимо се како изгледа заглавље шифрованог простора табеле:

Шифровање у МиСКЛ: Ротација главног кључа

Из претходног чланка знамо да сервер чита заглавља свих шифрованих простора табела при покретању и памти највећи КЕИ ИД. На пример, ако имамо три табеле са КЕИИД = 3 и једна табела са КЉУЧОМИД = 4, тада ће максимални ИД кључа бити 4. Назовимо овај КЕИ ИД - МАКС КЕИ ИД.

Како функционише ротација главног кључа

1. Корисник извршава АЛТЕР ИННОДБ МАСТЕР КЕИ.

2. Сервер захтева од прстена за кључеве да генерише нови главни кључ са УУИД и КЕИ сервераИД једнак један плус МАКСКЉУЧИД. Тако добијамо ИД главног кључа једнак ИННОДБКЕИ-УУИД-(МАКСКЉУЧИД + 1). Након успешног генерисања главног кључа, МАКС КЕИ ИД се повећава за један (тј. МАКСКЉУЧИД=МАКСКЉУЧИД + 1).

3. Сервер скенира све табелне просторе шифроване главним кључем, и за сваки простор табеле:

  • шифрује кључ простора табеле новим главним кључем;

  • ажурира ИД кључа на нови МАКСКЉУЧИД;

  • ако се УУИД разликује од УУИД сервера, ажурирајте УУИД сервера.

Као што знамо, ИД главног кључа који се користи за дешифровање табеле састоји се од УУИД-а и КЕИ ИД-а који се чита из заглавља простора табеле. Оно што сада радимо је ажурирање ових информација у заглављу шифровања простора табеле тако да сервер добије тачан главни кључ.

Ако имамо табеларне просторе са различитих локација, као што су различите резервне копије, онда они могу користити различите главне кључеве. Сви ови главни кључеви ће морати да се преузму из спремишта када се сервер покрене. Ово може успорити покретање сервера, посебно ако се користи складиште кључева на страни сервера. Са ротацијом главног кључа, поново шифрујемо кључеве простора табела једним главним кључем који је исти за све просторе табела. Сервер би сада требало да добије само један главни кључ при покретању.

Ово је, наравно, само пријатан споредни ефекат. Главна сврха ротације главног кључа је да наш сервер учини сигурнијим. У случају да је главни кључ на неки начин украден из трезора (на пример, са сервера трезора), могуће је генерисати нови главни кључ и поново шифровати кључеве простора табеле, чиме се украдени кључ поништава. Безбедни смо...скоро.

У претходном чланку, говорио сам о томе како када је кључ простора табеле украден, трећа страна може да га користи за дешифровање података. Под условом да постоји приступ нашем диску. Ако је главни кључ украден и имате приступ шифрованим подацима, можете да користите украдени главни кључ да дешифрујете кључ простора табеле и добијете дешифроване податке. Као што видите, ротација главног кључа у овом случају не помаже. Поново шифрујемо кључ простора табеле новим главним кључем, али стварни кључ који се користи за шифровање/дешифровање података остаје исти. Због тога „хакер“ може наставити да га користи за дешифровање података. Раније сам то наговестио Перцона сервер за МиСКЛ може извршити истинско поновно шифрирање простора таблице, а не само поновно шифрирање кључа простора таблице. Ова функција се назива нити шифровања. Међутим, ова функционалност је тренутно још увек експериментална.

Ротација главног кључа је корисна када је главни кључ украден, али не постоји начин да га нападач искористи и дешифрује кључеве простора табеле.

Пријавите се за бесплатну демо лекцију.

Опширније:

Извор: ввв.хабр.цом