MySQL-da shifrlash: Asosiy kalitlarni aylantirish

Kursga yangi ro'yxatga olish boshlanishini kutish bilan "Ma'lumotlar bazasi" biz MySQL-da shifrlash haqida bir qator maqolalarni nashr etishda davom etamiz.

Ushbu turkumdagi oldingi maqolada biz muhokama qildik asosiy kalit shifrlash qanday ishlaydi. Bugun, avvalroq olingan bilimlarga asoslanib, asosiy kalitlarning aylanishini ko'rib chiqamiz.

Asosiy kalitni aylantirish yangi asosiy kalitni yaratish va jadval maydoni kalitlarini (jadval maydoni sarlavhalarida saqlanadi) ushbu yangi kalit bilan qayta shifrlashni o'z ichiga oladi.

Keling, shifrlangan jadval maydonining sarlavhasi qanday ko'rinishini eslaylik:

MySQL-da shifrlash: Asosiy kalitlarni aylantirish

Oldingi maqoladan bilamizki, server ishga tushganda barcha shifrlangan jadval maydonlarining sarlavhalarini o'qiydi va eng katta KEY ID-ni eslab qoladi. Masalan, KEY bilan uchta jadval mavjud bo'lsaID = 3 va KEY bilan bitta jadvalID = 4, u holda maksimal kalit identifikatori 4 bo'ladi. Keling, buni KEY ID - MAX KEY ID deb nomlaymiz.

Asosiy kalitni aylantirish qanday ishlaydi

1. Foydalanuvchi ALTER INNODB MASTER KEY-ni bajaradi.

2. Server UUID va KEY serveri bilan yangi asosiy kalit yaratish uchun kalitni so'raydiID bitta ortiqcha MAX ga tengKEYID. Shunday qilib, biz INNODB ga teng asosiy kalit identifikatorini olamizKEY-UUID-(MAXKEYID + 1). Asosiy kalit muvaffaqiyatli yaratilgach, MAX KEY ID bittaga oshiriladi (masalan, MAX).KEYID=MAXKEYID + 1).

3. Server asosiy kalit bilan shifrlangan barcha jadval maydonlarini skanerlaydi va har bir jadval maydoni uchun:

  • jadval maydoni kalitini yangi asosiy kalit bilan shifrlaydi;

  • kalit identifikatorini yangi MAX ga yangilaydiKEYID

  • agar UUID server UUID dan farq qilsa, u holda server UUID ni yangilang.

Ma'lumki, jadval shifrini ochish uchun ishlatiladigan asosiy kalit identifikatori UUID va jadval maydoni sarlavhasidan o'qiladigan KEY ID dan iborat. Biz hozir qilayotgan ishimiz server to'g'ri asosiy kalitni olishi uchun jadval maydoni shifrlash sarlavhasidagi ushbu ma'lumotni yangilashdir.

Agar bizda turli joylardan jadval bo'shliqlari bo'lsa, masalan, turli xil zaxiralar, ular turli asosiy kalitlardan foydalanishi mumkin. Ushbu asosiy kalitlarning barchasi server ishga tushirilganda ombordan olinishi kerak bo'ladi. Bu server ishga tushishini sekinlashtirishi mumkin, ayniqsa server tomonidagi kalitlar do'koni ishlatilsa. Asosiy kalitni aylantirish bilan biz jadval maydoni kalitlarini barcha jadval maydonlari uchun bir xil bo'lgan bitta asosiy kalit bilan qayta shifrlaymiz. Server ishga tushganda faqat bitta asosiy kalitni olishi kerak.

Bu, albatta, faqat yoqimli yon ta'sir. Asosiy kalitni aylantirishning asosiy maqsadi bizning serverimizni xavfsizroq qilishdir. Agar asosiy kalit qandaydir tarzda kassadan o'g'irlangan bo'lsa (masalan, Vault Serverdan), siz yangi asosiy kalitni yaratishingiz va o'g'irlangan kalitni bekor qilib, jadval maydoni kalitlarini qayta shifrlashingiz mumkin. Biz xavfsizmiz... deyarli.

Oldingi maqolada men jadval maydoni kaliti o'g'irlangandan so'ng, uchinchi tomon ma'lumotlar shifrini ochish uchun qanday foydalanishi haqida gapirgan edim. Bizning diskimizga kirish imkoni bo'lishi sharti bilan. Agar asosiy kalit o'g'irlangan bo'lsa va siz shifrlangan ma'lumotlarga kirish imkoniga ega bo'lsangiz, o'g'irlangan asosiy kalitdan jadval maydoni kalitini parolini ochish va shifrlangan ma'lumotlarni olish uchun foydalanishingiz mumkin. Ko'rib turganingizdek, bu holda asosiy kalitning aylanishi yordam bermaydi. Biz jadval maydoni kalitini yangi asosiy kalit bilan qayta shifrlaymiz, lekin maΚΌlumotlarni shifrlash/shifrini yechish uchun ishlatiladigan haqiqiy kalit oΚ»zgarishsiz qoladi. Shu sababli, β€œxaker” ma’lumotlar shifrini ochish uchun undan foydalanishda davom etishi mumkin. Avvalroq men bunga ishora qilgandim MySQL uchun Percona serveri oddiy jadval maydoni kalitini qayta shifrlashni emas, balki haqiqiy jadval maydonini qayta shifrlashni amalga oshirishi mumkin. Bu xususiyat shifrlash iplari deb ataladi. Biroq, bu funksionallik hozircha eksperimental hisoblanadi.

Asosiy kalitni aylantirish asosiy kalit o'g'irlanganda foydali bo'ladi, ammo tajovuzkor undan foydalanishi va jadval maydoni kalitlarini shifrini ochishning imkoni yo'q.

Bepul demo darsiga yoziling.

Ko'proq o'qish:

Manba: www.habr.com