MySQL-də şifrələmə: Əsas açarın fırlanması

Kurs üçün yeni qeydiyyatın başlaması ərəfəsində "Məlumat bazası" MySQL-də şifrələmə haqqında bir sıra məqalələr dərc etməyə davam edirik.

Bu seriyanın əvvəlki məqaləsində müzakirə etdik əsas açar şifrələməsi necə işləyir. Bu gün, əvvəllər əldə edilmiş biliklərə əsaslanaraq, əsas düymələrin fırlanmasına baxaq.

Əsas açarın fırlanması yeni əsas açarın yaradılmasını və bu yeni açarla masa boşluğu açarlarının (masa boşluğu başlıqlarında saxlanılan) yenidən şifrələnməsini əhatə edir.

Şifrələnmiş cədvəl sahəsinin başlığının necə göründüyünü xatırlayaq:

MySQL-də şifrələmə: Əsas açarın fırlanması

Əvvəlki məqalədən bilirik ki, server başlanğıcda bütün şifrələnmiş cədvəllərin başlıqlarını oxuyur və ən böyük KEY ID-ni yadda saxlayır. Məsələn, KEY ilə üç cədvəlimiz varsaID = 3 və KEY ilə bir masaID = 4, onda maksimum açar ID-si 4 olacaq. Gəlin bu KEY ID - MAX KEY ID adlandıraq.

Əsas açarın fırlanması necə işləyir

1. İstifadəçi ALTER INNODB MASTER KEY-ni icra edir.

2. Server UUID və KEY serveri ilə yeni əsas açar yaratmaq üçün açar halqasını tələb edirID bir plus MAX-a bərabərdirKEYID. Beləliklə, biz INNODB-ə bərabər olan əsas açar identifikatorunu alırıqKEY-UUID-(MAXKEYID + 1). Əsas açarın uğurlu yaradılmasından sonra MAX KEY ID bir artırılır (yəni MAXKEYID=MAXKEYID + 1).

3. Server master açarla şifrələnmiş bütün cədvəl boşluqlarını və hər bir cədvəl sahəsini skan edir:

  • masa sahəsi açarını yeni əsas açarla şifrələyir;

  • açar identifikatorunu yeni MAX-a yeniləyirKEYŞəxsiyyət vəsiqəsi

  • UUID server UUID-dən fərqlidirsə, server UUID-ni yeniləyin.

Bildiyimiz kimi, cədvəlin şifrəsini açmaq üçün istifadə olunan Master Açar İD-si UUID-dən və cədvəl sahəsinin başlığından oxunan KEY ID-dən ibarətdir. İndi etdiyimiz şey, serverin düzgün əsas açarı qəbul etməsi üçün cədvəl sahəsinin şifrələmə başlığında bu məlumatı yeniləməkdir.

Fərqli yerlərdən masa boşluqlarımız varsa, məsələn, müxtəlif ehtiyat nüsxələri, onda onlar müxtəlif əsas açarlardan istifadə edə bilər. Bu əsas açarların hamısı server işə salındıqda repozitoriyadan götürülməlidir. Bu, xüsusən server tərəfində açar anbarı istifadə edilərsə, serverin işə salınmasını ləngidə bilər. Əsas açarın fırlanması ilə biz masa sahəsi açarlarını bütün masa boşluqları üçün eyni olan tək əsas açarla yenidən şifrələyirik. Başlanğıcda server indi yalnız bir əsas açar almalıdır.

Bu, əlbəttə ki, yalnız xoşagəlməz bir yan təsirdir. Əsas açarın fırlanmasının əsas məqsədi serverimizi daha təhlükəsiz etməkdir. Əsas açarın hansısa şəkildə kassadan oğurlanması (məsələn, Vault Serverindən) olarsa, yeni əsas açar yaratmaq və oğurlanmış açarı etibarsız hesab edərək masa boşluğunun açarlarını yenidən şifrələmək mümkündür. Biz təhlükəsizik...demək olar ki.

Əvvəlki məqalədə mən masa boşluğunun açarı oğurlandıqdan sonra üçüncü tərəfin məlumatların şifrəsini açmaq üçün ondan necə istifadə edə biləcəyindən danışmışdım. Bir şərtlə ki, diskimizə giriş olsun. Əsas açar oğurlanıbsa və şifrələnmiş məlumatlara çıxışınız varsa, siz masa boşluğu açarının şifrəsini açmaq və şifrəsi açılmış məlumatları əldə etmək üçün oğurlanmış əsas açardan istifadə edə bilərsiniz. Gördüyünüz kimi, master düyməsinin fırlanması bu vəziyyətdə kömək etmir. Biz cədvəl sahəsi açarını yeni əsas açarla yenidən şifrələyirik, lakin verilənləri şifrələmək/şifrəni açmaq üçün istifadə olunan faktiki açar eyni qalır. Buna görə də, "haker" məlumatların şifrəsini açmaq üçün ondan istifadə etməyə davam edə bilər. Əvvəllər buna işarə etmişdim MySQL üçün Percona Server yalnız sadə masa sahəsi açarının yenidən şifrələməsini deyil, həqiqi masa sahəsinin yenidən şifrələnməsini həyata keçirə bilər. Bu xüsusiyyət şifrələmə mövzuları adlanır. Bununla belə, bu funksiya hələ də eksperimentaldır.

Əsas açarın fırlanması əsas açar oğurlandıqda faydalıdır, lakin təcavüzkarın ondan istifadə etməsi və masa boşluğunun açarlarının şifrəsini açması üçün heç bir yol yoxdur.

Pulsuz demo dərsi üçün qeydiyyatdan keçin.

Daha çox oxu:

Mənbə: www.habr.com