التشفير في MySQL: دوران المفتاح الرئيسي

تحسبا لبدء تسجيل جديد للدورة "قاعدة البيانات" نستمر في نشر سلسلة من المقالات حول التشفير في MySQL.

ناقشنا في المقالة السابقة من هذه السلسلة كيف يعمل تشفير المفتاح الرئيسي. اليوم ، بناءً على المعرفة المكتسبة سابقًا ، دعنا نلقي نظرة على تدوير المفاتيح الرئيسية.

يتضمن تدوير المفتاح الرئيسي إنشاء مفتاح رئيسي جديد وإعادة تشفير مفاتيح مساحة الجدول (المخزنة في رؤوس مساحة الجدول) باستخدام هذا المفتاح الجديد.

دعنا نتذكر كيف يبدو رأس مساحة الجدول المشفرة:

التشفير في MySQL: دوران المفتاح الرئيسي

من المقالة السابقة ، نعلم أن الخادم يقرأ رؤوس جميع مساحات الجداول المشفرة عند بدء التشغيل ويتذكر أكبر معرف KEY. على سبيل المثال ، إذا كان لدينا ثلاث طاولات مع KEYالمعرف = 3 وجدول واحد مع KEYالمعرف = 4 ، سيكون الحد الأقصى لمعرف المفتاح هو 4. دعنا نسمي KEY ID - MAX KEY ID.

كيف يعمل دوران المفتاح الرئيسي

1. ينفذ المستخدم ALTER INNODB MASTER KEY.

2. يطلب الخادم من سلسلة المفاتيح إنشاء مفتاح رئيسي جديد باستخدام UUID و KEY للخادمالمعرف يساوي واحد زائد MAXKEYبطاقة تعريف. لذلك نحصل على معرف المفتاح الرئيسي يساوي INNODBمفتاح UUID- (MAXKEYالهوية + 1). عند التوليد الناجح للمفتاح الرئيسي ، تتم زيادة معرّف MAX KEY بمقدار واحد (أي MAXKEYالمعرف = MAXKEYالهوية + 1).

3. يقوم الخادم بمسح جميع مساحات الجداول المشفرة بالمفتاح الرئيسي ولكل مساحة جدول:

  • يشفر مفتاح tabpace بالمفتاح الرئيسي الجديد ؛

  • يحدّث معرّف المفتاح إلى MAX الجديدKEYهوية شخصية؛

  • إذا كان UUID مختلفًا عن UUID الخاص بالخادم ، فقم بتحديث UUID الخاص بالخادم.

كما نعلم ، فإن معرف المفتاح الرئيسي المستخدم لفك تشفير الجدول يتكون من UUID ومعرف KEY للقراءة من رأس tablepace. ما نقوم به الآن هو تحديث هذه المعلومات في رأس تشفير مساحة الجدول بحيث يتلقى الخادم المفتاح الرئيسي الصحيح.

إذا كانت لدينا مساحات جداول من مواقع مختلفة ، مثل النسخ الاحتياطية المختلفة ، فقد تستخدم مفاتيح رئيسية مختلفة. يجب استرداد كل هذه المفاتيح الرئيسية من المستودع عند بدء تشغيل الخادم. يمكن أن يؤدي ذلك إلى إبطاء بدء تشغيل الخادم ، خاصةً إذا تم استخدام مخزن مفاتيح من جانب الخادم. من خلال تدوير المفتاح الرئيسي ، نقوم بإعادة تشفير مفاتيح مساحة الجدول بمفتاح رئيسي واحد هو نفسه لجميع مساحات الجداول. يجب أن يتلقى الخادم الآن مفتاحًا رئيسيًا واحدًا فقط عند بدء التشغيل.

هذا ، بالطبع ، مجرد تأثير جانبي لطيف. الغرض الرئيسي من تدوير المفتاح الرئيسي هو جعل خادمنا أكثر أمانًا. في حالة سرقة المفتاح الرئيسي بطريقة ما من المخزن (على سبيل المثال ، من Vault Server) ، فمن الممكن إنشاء مفتاح رئيسي جديد وإعادة تشفير مفاتيح مساحة الجدول ، مما يؤدي إلى إبطال المفتاح المسروق. نحن بأمان ... تقريبا.

في مقال سابق ، تحدثت عن كيف بمجرد سرقة مفتاح tabpace ، يمكن لطرف ثالث استخدامه لفك تشفير البيانات. شريطة أن يكون هناك وصول إلى القرص الخاص بنا. إذا سُرق المفتاح الرئيسي وكان لديك حق الوصول إلى البيانات المشفرة ، فيمكنك استخدام المفتاح الرئيسي المسروق لفك تشفير مفتاح مساحة الجدول والحصول على البيانات التي تم فك تشفيرها. كما ترى ، فإن تدوير المفتاح الرئيسي لا يساعد في هذه الحالة. نقوم بإعادة تشفير مفتاح tablepace بالمفتاح الرئيسي الجديد ، لكن المفتاح الفعلي المستخدم لتشفير / فك تشفير البيانات يظل كما هو. لذلك ، يمكن لـ "المخترق" الاستمرار في استخدامه لفك تشفير البيانات. في وقت سابق أشرت إلى ذلك خادم بيركونا لـ MySQL يمكن إجراء إعادة تشفير حقيقي لمساحة الجدول ، وليس فقط إعادة تشفير مفتاح tabpace البسيط. هذه الميزة تسمى خيوط التشفير. ومع ذلك ، لا تزال هذه الوظيفة تجريبية في الوقت الحالي.

يعد تدوير المفتاح الرئيسي مفيدًا عند سرقة المفتاح الرئيسي ، ولكن لا توجد طريقة للمهاجم لاستخدامه وفك تشفير مفاتيح مساحة الجدول.

قم بالتسجيل للحصول على درس تجريبي مجاني.

اقرأ أكثر:

المصدر: www.habr.com