MySQL میں خفیہ کاری: ماسٹر کلید گردش

کورس کے لیے نئے اندراج کے آغاز کی توقع میں "ڈیٹا بیس" ہم MySQL میں خفیہ کاری کے بارے میں مضامین کی ایک سیریز شائع کرتے رہتے ہیں۔

اس سلسلے کے پچھلے مضمون میں ہم نے بات کی تھی۔ ماسٹر کلید کی خفیہ کاری کیسے کام کرتی ہے۔. آج، پہلے حاصل کردہ علم کی بنیاد پر، آئیے مرکزی کلیدوں کی گردش کو دیکھتے ہیں۔

ماسٹر کلید کی گردش میں ایک نئی ماسٹر کلید تیار کرنا اور اس نئی کلید کے ساتھ ٹیبل اسپیس کیز (جو ٹیبل اسپیس ہیڈر میں محفوظ ہیں) کو دوبارہ انکرپٹ کرنا شامل ہے۔

آئیے یاد کرتے ہیں کہ انکرپٹڈ ٹیبل اسپیس کا ہیڈر کیسا لگتا ہے:

MySQL میں خفیہ کاری: ماسٹر کلید گردش

پچھلے مضمون سے، ہم جانتے ہیں کہ سرور اسٹارٹ اپ پر تمام انکرپٹڈ ٹیبل اسپیس کے ہیڈرز پڑھتا ہے اور سب سے بڑی KEY ID کو یاد رکھتا ہے۔ مثال کے طور پر اگر ہمارے پاس KEY کے ساتھ تین میزیں ہیں۔ID = 3 اور KEY کے ساتھ ایک ٹیبلID = 4، پھر زیادہ سے زیادہ کلیدی ID 4 ہو گی۔ آئیے اسے KEY ID - MAX KEY ID کہتے ہیں۔

ماسٹر کلید کی گردش کیسے کام کرتی ہے۔

1. صارف ALTER INNODB ماسٹر کلید کو انجام دیتا ہے۔

2. سرور کیرنگ سے سرور UUID اور KEY کے ساتھ ایک نئی ماسٹر کلید بنانے کی درخواست کرتا ہےID ایک جمع MAX کے برابر ہے۔اہمID لہذا ہمیں INNODB کے برابر ماسٹر کلید آئی ڈی ملتی ہے۔KEY-UUID-(MAXاہمID + 1)۔ ماسٹر کلید کے کامیاب جنریشن پر، MAX KEY ID ایک سے بڑھ جاتی ہے (یعنی MAXاہمID=MAXاہمID + 1)۔

3. سرور ماسٹر کلید کے ساتھ خفیہ کردہ تمام ٹیبل اسپیس کو اسکین کرتا ہے، اور ہر ٹیبل اسپیس کے لیے:

  • ٹیبل اسپیس کلید کو نئی ماسٹر کلید کے ساتھ خفیہ کرتا ہے۔

  • کلیدی شناخت کو نئے MAX میں اپ ڈیٹ کرتا ہے۔اہمID؛

  • اگر UUID سرور UUID سے مختلف ہے، تو سرور UUID کو اپ ڈیٹ کریں۔

جیسا کہ ہم جانتے ہیں، ٹیبل کو ڈکرپٹ کرنے کے لیے استعمال ہونے والی ماسٹر کلید ID UUID اور ٹیبل اسپیس ہیڈر سے پڑھی جانے والی KEY ID پر مشتمل ہوتی ہے۔ اب ہم جو کچھ کر رہے ہیں وہ اس معلومات کو ٹیبل اسپیس انکرپشن ہیڈر میں اپ ڈیٹ کر رہا ہے تاکہ سرور کو درست ماسٹر کلید مل سکے۔

اگر ہمارے پاس مختلف مقامات سے ٹیبل اسپیسز ہیں، جیسے کہ مختلف بیک اپ، تو وہ مختلف ماسٹر کیز استعمال کر سکتے ہیں۔ سرور شروع ہونے پر ان تمام ماسٹر کیز کو ریپوزٹری سے بازیافت کرنے کی ضرورت ہوگی۔ یہ سرور کے آغاز کو سست کر سکتا ہے، خاص طور پر اگر سرور سائیڈ کلیدی اسٹور استعمال کیا جائے۔ ماسٹر کلید کی گردش کے ساتھ، ہم ٹیبل اسپیس کیز کو ایک ہی ماسٹر کلید کے ساتھ دوبارہ انکرپٹ کرتے ہیں جو تمام ٹیبل اسپیسز کے لیے یکساں ہے۔ سرور کو اب شروع ہونے پر صرف ایک ماسٹر کلید موصول ہونی چاہیے۔

یہ، یقینا، صرف ایک خوشگوار ضمنی اثر ہے. ماسٹر کلید کی گردش کا بنیادی مقصد ہمارے سرور کو مزید محفوظ بنانا ہے۔ ایسی صورت میں کہ ماسٹر کلید کسی طرح والٹ سے چوری ہو گئی ہو (مثال کے طور پر، والٹ سرور سے)، چوری شدہ کلید کو باطل کرتے ہوئے، ایک نئی ماسٹر کلید بنانا اور ٹیبل اسپیس کیز کو دوبارہ انکرپٹ کرنا ممکن ہے۔ ہم محفوظ ہیں...تقریباً۔

ایک پچھلے مضمون میں، میں نے اس بارے میں بات کی تھی کہ ایک بار ٹیبل اسپیس کی کلید کیسے چوری ہو جاتی ہے، کوئی تھرڈ پارٹی ڈیٹا کو ڈکرپٹ کرنے کے لیے اسے استعمال کر سکتی ہے۔ بشرطیکہ ہماری ڈسک تک رسائی ہو۔ اگر ماسٹر کی چوری ہو گئی ہے اور آپ کو انکرپٹڈ ڈیٹا تک رسائی حاصل ہے، تو آپ ٹیبل اسپیس کی کو ڈکرپٹ کرنے اور ڈکرپٹ شدہ ڈیٹا حاصل کرنے کے لیے چوری شدہ ماسٹر کلید کا استعمال کر سکتے ہیں۔ جیسا کہ آپ دیکھ سکتے ہیں، اس معاملے میں ماسٹر کلید کی گردش مدد نہیں کرتی۔ ہم ٹیبل اسپیس کلید کو نئی ماسٹر کی کے ساتھ دوبارہ انکرپٹ کرتے ہیں، لیکن ڈیٹا کو انکرپٹ/ڈیکرپٹ کرنے کے لیے استعمال ہونے والی اصل کلید وہی رہتی ہے۔ لہذا، "ہیکر" ڈیٹا کو ڈکرپٹ کرنے کے لیے اسے استعمال کرنا جاری رکھ سکتا ہے۔ اس سے پہلے میں نے اشارہ کیا تھا۔ MySQL کے لیے پرکونا سرور درست ٹیبل اسپیس ری انکرپشن انجام دے سکتا ہے، نہ کہ صرف سادہ ٹیبل اسپیس کلید دوبارہ انکرپشن۔ اس خصوصیت کو انکرپشن تھریڈز کہا جاتا ہے۔ تاہم، یہ فعالیت ابھی بھی تجرباتی ہے۔

جب ماسٹر کی چوری ہو جائے تو ماسٹر کلید کی گردش مفید ہے، لیکن حملہ آور کے لیے اسے استعمال کرنے اور ٹیبل اسپیس کیز کو ڈکرپٹ کرنے کا کوئی طریقہ نہیں ہے۔

مفت ڈیمو سبق کے لیے سائن اپ کریں۔

مزید پڑھ:

ماخذ: www.habr.com