رمزگذاری در MySQL: Master Key Rotation

در انتظار شروع ثبت نام جدید برای دوره "پایگاه اطلاعاتی" ما به انتشار یک سری مقالات در مورد رمزگذاری در MySQL ادامه می دهیم.

در مقاله قبلی این مجموعه به بحث پرداختیم نحوه عملکرد رمزگذاری کلید اصلی. امروز، بر اساس دانشی که قبلاً به دست آمده بود، به چرخش کلیدهای اصلی نگاه می کنیم.

چرخش کلید اصلی شامل تولید یک کلید اصلی جدید و رمزگذاری مجدد کلیدهای جدول (که در سرصفحه های جدول فضای ذخیره می شوند) با این کلید جدید است.

بیایید به یاد بیاوریم که هدر یک جدول رمزگذاری شده چگونه است:

رمزگذاری در MySQL: Master Key Rotation

از مقاله قبلی، می‌دانیم که سرور در هنگام راه‌اندازی هدر تمام جدول‌های رمزگذاری شده را می‌خواند و بزرگترین شناسه KEY را به خاطر می‌آورد. برای مثال اگر سه جدول با KEY داشته باشیمID = 3 و یک جدول با کلیدID = 4، سپس حداکثر شناسه کلید 4 خواهد بود. بیایید این KEY ID - MAX KEY ID را نام ببریم.

نحوه عملکرد چرخش کلید اصلی

1. کاربر ALTER INNODB MASTER KEY را اجرا می کند.

2. سرور از دسته کلید درخواست می کند تا یک کلید اصلی جدید با سرور UUID و KEY ایجاد کندشناسه برابر با یک به اضافه MAXKEYشناسه. بنابراین ما شناسه کلید اصلی برابر با INNODB دریافت می کنیمKEY-UUID-(حداکثرKEYشناسه + 1). پس از تولید موفقیت آمیز کلید اصلی، شناسه MAX KEY یک (یعنی MAX) افزایش می یابد.KEYID=MAXKEYشناسه + 1).

3. سرور تمام فضای جدول رمزگذاری شده با کلید اصلی را اسکن می کند و برای هر جدول:

  • کلید tablespace را با کلید اصلی جدید رمزگذاری می کند.

  • شناسه کلید را به MAX جدید به روز می کندKEYشناسه؛

  • اگر UUID با UUID سرور متفاوت است، UUID سرور را به روز کنید.

همانطور که می دانیم، شناسه اصلی کلیدی که برای رمزگشایی یک جدول استفاده می شود، شامل یک UUID و یک شناسه کلید خوانده شده از سربرگ فضای جدول است. کاری که اکنون انجام می دهیم این است که این اطلاعات را در هدر رمزگذاری جدول فضایی به روز می کنیم تا سرور کلید اصلی صحیح را دریافت کند.

اگر جدول‌هایی از مکان‌های مختلف داشته باشیم، مانند نسخه‌های پشتیبان مختلف، ممکن است از کلیدهای اصلی متفاوتی استفاده کنند. همه این کلیدهای اصلی باید در هنگام راه اندازی سرور از مخزن بازیابی شوند. این می تواند سرعت راه اندازی سرور را کند کند، به خصوص اگر از یک فروشگاه کلید سمت سرور استفاده شود. با چرخش کلید اصلی، کلیدهای tablespace را با یک کلید اصلی که برای همه جدول‌ها یکسان است، دوباره رمزگذاری می‌کنیم. سرور اکنون باید تنها یک کلید اصلی در هنگام راه اندازی دریافت کند.

البته این فقط یک عارضه جانبی دلپذیر است. هدف اصلی از چرخش کلید اصلی این است که سرور ما ایمن تر شود. در صورتی که کلید اصلی به نحوی از خزانه (مثلاً از سرور Vault) به سرقت رفته باشد، می توان یک کلید اصلی جدید تولید کرد و کلیدهای جدول فضایی را مجدداً رمزگذاری کرد و کلید سرقت شده را باطل کرد. ما در امان هستیم ... تقریبا

در مقاله قبلی، من در مورد این صحبت کردم که چگونه هنگامی که یک کلید tablespace به سرقت می رود، شخص ثالث می تواند از آن برای رمزگشایی داده ها استفاده کند. به شرطی که دسترسی به دیسک ما وجود داشته باشد. اگر کلید اصلی به سرقت رفته است و شما به داده های رمزگذاری شده دسترسی دارید، می توانید از کلید اصلی سرقت شده برای رمزگشایی کلید جدول فضایی و دریافت داده های رمزگشایی شده استفاده کنید. همانطور که می بینید، چرخش کلید اصلی در این مورد کمکی نمی کند. ما کلید tablespace را با کلید اصلی جدید دوباره رمزگذاری می‌کنیم، اما کلید واقعی مورد استفاده برای رمزگذاری/رمزگشایی داده‌ها ثابت می‌ماند. بنابراین، "هکر" می تواند به استفاده از آن برای رمزگشایی داده ها ادامه دهد. قبلاً به آن اشاره کردم سرور Percona برای MySQL می تواند رمزگذاری مجدد واقعی جدول را انجام دهد، نه فقط رمزگذاری مجدد کلید فضای جدولی ساده. این ویژگی رشته های رمزگذاری نامیده می شود. با این حال، این قابلیت در حال حاضر هنوز آزمایشی است.

چرخش کلید اصلی زمانی مفید است که کلید اصلی دزدیده شود، اما هیچ راهی برای مهاجم وجود ندارد که از آن استفاده کند و کلیدهای فضای جدول را رمزگشایی کند.

برای یک درس آزمایشی رایگان ثبت نام کنید.

بیشتر بخوانید:

منبع: www.habr.com