کورس کے لیے نئے اندراج کے آغاز کی توقع میں
اس سلسلے کے پچھلے مضمون میں (
لفافے کی خفیہ کاری کے پیچھے خیال یہ ہے کہ خفیہ کاری کے لیے استعمال ہونے والی چابیاں (ٹیبل اسپیس کیز) دوسری کلید (ماسٹر کی) کے ساتھ خفیہ کی جاتی ہیں۔ ٹیبل اسپیس کیز دراصل ڈیٹا کو خفیہ کرنے کے لیے استعمال ہوتی ہیں۔ گرافک طور پر اس کی نمائندگی اس طرح کی جا سکتی ہے:
ماسٹر کلید کیرنگ میں واقع ہے، اور ٹیبل اسپیس کیز انکرپٹڈ ٹیبل اسپیس ہیڈر میں ہیں (ٹیبل اسپیس کے صفحہ 0 پر)۔
اوپر کی تصویر میں:
-
ٹیبل A کو کلید 1 (کلید 1) کے ساتھ انکرپٹ کیا گیا ہے۔ کلید 1 کو ماسٹر کی کا استعمال کرتے ہوئے انکرپٹ کیا جاتا ہے اور ٹیبل A کے ہیڈر میں انکرپٹڈ اسٹور کیا جاتا ہے۔
-
ٹیبل B کو کلید 2 کے ساتھ انکرپٹ کیا گیا ہے۔ کلید 2 کو ماسٹر کی (ماکر کی) کا استعمال کرتے ہوئے انکرپٹ کیا جاتا ہے اور ٹیبل B کے ہیڈر میں انکرپٹڈ اسٹور کیا جاتا ہے۔
-
اور اسی طرح کی.
جب سرور کو ٹیبل A کو ڈکرپٹ کرنے کی ضرورت ہوتی ہے، تو یہ سٹوریج سے ماسٹر کی بازیافت کرتا ہے، ٹیبل A کے ہیڈر سے انکرپٹ شدہ کلید 1 کو پڑھتا ہے، اور کلید 1 کو ڈکرپٹ کرتا ہے۔ ڈکرپٹ شدہ کلید 1 سرور کی میموری میں کیش ہوتی ہے اور اسے ٹیبل A کو ڈکرپٹ کرنے کے لیے استعمال کیا جاتا ہے۔ .
InnoDB
InnoDB میں، اصل انکرپشن اور ڈکرپشن I/O پرت پر کیا جاتا ہے۔ یعنی صفحہ کو ڈسک پر فلش کرنے سے پہلے ہی انکرپٹ کیا جاتا ہے اور ڈسک سے پڑھنے کے فوراً بعد ڈکرپٹ ہوجاتا ہے۔
InnoDB میں، خفیہ کاری صرف ٹیبل اسپیس کی سطح پر کام کرتی ہے۔ اور پہلے سے طے شدہ طور پر، تمام میزیں الگ الگ ٹیبل اسپیس میں بنائی جاتی ہیں (
اگر کسی وجہ سے آپ نے فائل فی ٹیبل کو غیر فعال کردیا ہے، تو تمام ٹیبل سسٹم ٹیبل اسپیس کے اندر بنائے جاتے ہیں۔ میں
اس سے پہلے کہ ہم آگے بڑھیں، ہمیں ماسٹر کلید ID کی ساخت کو دیکھنے کی ضرورت ہے۔ یہ UUID، KEY پر مشتمل ہے۔ID اور سابقہ "INNODBKey"۔ یہ اس طرح لگتا ہے: INNODBKey-UUID-KEYID
UUID انکرپٹڈ ٹیبل اسپیس والے سرور کا uuid ہے۔ چابیID محض ایک مسلسل بڑھتی ہوئی قدر ہے۔ پہلی بار ماسٹر کلید KEY بناتے وقتID 1 ہے۔ کلید کی گردش کے دوران، جب ایک نئی ماسٹر کلید بنتی ہے، KEYID = 2 وغیرہ۔ ہم اس سیریز کے اگلے مضامین میں ماسٹر کلید کی گردش کے بارے میں مزید بات کریں گے۔
اب جب کہ ہم جانتے ہیں کہ ایک ماسٹر کلید شناخت کنندہ کیسا لگتا ہے، آئیے انکرپٹڈ ٹیبل اسپیس ہیڈر کو دیکھتے ہیں۔ جب ٹیبل اسپیس کو انکرپٹ کیا جاتا ہے تو ہیڈر میں خفیہ کاری کی معلومات شامل کی جاتی ہیں۔ ایسا لگتا ہے:
KEY ID کلیدی ہے۔ماسٹر کلید ID سے ID جس پر ہم پہلے ہی بات کر چکے ہیں۔ UUID سرور کا uuid ہے، جو ماسٹر کلید شناخت کنندہ میں بھی استعمال ہوتا ہے۔ ٹیبل اسپیس کلید - ایک ٹیبل اسپیس کلید، جو سرور کے ذریعہ تصادفی طور پر تیار کردہ 256 بٹس پر مشتمل ہوتی ہے۔ ابتداء ویکٹر (IV) بھی 256 تصادفی طور پر تیار کردہ بٹس پر مشتمل ہوتا ہے (حالانکہ یہ 128 بٹس ہونا چاہئے)۔ IV کا استعمال AES انکرپشن اور ڈکرپشن کو شروع کرنے کے لیے کیا جاتا ہے (256 بٹس میں سے صرف 128 استعمال ہوتے ہیں)۔ آخر میں ٹیبل اسپیس کلید اور IV کے لیے ایک CRC32 چیکسم ہے۔
اس سارے عرصے میں میں یہ کہہ کر تھوڑا سا آسان کر رہا تھا کہ ہیڈر میں ٹیبل اسپیس کی انکرپٹڈ کلید موجود ہے۔ درحقیقت، ٹیبل اسپیس کلید اور انیشیلائزیشن ویکٹر کو ماسٹر کی کا استعمال کرتے ہوئے ایک ساتھ اسٹور اور انکرپٹ کیا جاتا ہے۔ یاد رکھیں کہ ٹیبل اسپیس کلید اور انیشیلائزیشن ویکٹر کو انکرپٹ کرنے سے پہلے، ان کے لیے ایک CRC32 کا حساب لگایا جاتا ہے۔
CRC32 کی ضرورت کیوں ہے؟
مختصر طور پر، ماسٹر کلید کی درستگی کو یقینی بنانے کے لیے۔ ٹیبل اسپیس کلید اور انیشیلائزیشن ویکٹر کو ڈکرپٹ کرنے کے بعد، چیکسم کا حساب لگایا جاتا ہے اور ہیڈر میں محفوظ CRC32 کے ساتھ موازنہ کیا جاتا ہے۔ اگر چیکسم مماثل ہیں، تو ہمارے پاس درست ماسٹر کلید اور ٹیبل اسپیس کی ہے۔ بصورت دیگر، ٹیبل اسپیس کو غائب کے طور پر نشان زد کیا گیا ہے (ہم بہرحال اسے ڈکرپٹ نہیں کر سکیں گے)۔
آپ پوچھ سکتے ہیں: کلیدی تصدیق کس وقت کی جاتی ہے؟ جواب تب آتا ہے جب سرور شروع ہوتا ہے۔ انکرپٹڈ ٹیبلز/ٹیبل اسپیس والا سرور UUID، KEY کو اسٹارٹ اپ پر پڑھتا ہےہیڈر سے ID اور ماسٹر کلید ID تیار کرتا ہے۔ اس کے بعد یہ کیرنگ سے مطلوبہ ماسٹر کلید حاصل کرتا ہے، ٹیبل اسپیس کی کو ڈکرپٹ کرتا ہے، اور چیکسم کی تصدیق کرتا ہے۔ ایک بار پھر، اگر چیکسم مماثل ہے، تو سب کچھ ٹھیک ہے، اگر نہیں، تو ٹیبل اسپیس کو غائب کے طور پر نشان زد کیا گیا ہے۔
اگر آپ اس سلسلے کا پچھلا مضمون پڑھتے ہیں (
یہ ماسٹر کلیدی خفیہ کاری کے فوائد اور نقصانات کے بارے میں تھوڑی بات کرنے کا وقت ہے۔ سب سے بڑا فائدہ یہ ہے کہ آپ کو صرف ایک انکرپشن کلید (ماسٹر کی) کی ضرورت ہے، جو آپ کے انکرپٹڈ ڈیٹا سے الگ اسٹور کی جائے گی۔ اس سے سرور کا آغاز تیز ہو جاتا ہے اور اسٹوریج چھوٹا ہو جاتا ہے، جس سے اسے منظم کرنا آسان ہو جاتا ہے۔ اور سنگل ماسٹر کلید کو دوبارہ تخلیق کرنا آسان ہے۔
تاہم، ماسٹر کلید کی خفیہ کاری میں ایک بڑی خرابی ہے: ایک بار ٹیبل اسپیس کو tablespace_key کے ساتھ انکرپٹ کیا جاتا ہے، یہ ہمیشہ اسی کلید کے ساتھ انکرپٹ ہوتا ہے۔ ماسٹر کلید کو گھمانے سے یہاں کوئی فائدہ نہیں ہوتا ہے۔ یہ ایک نقصان کیوں ہے؟ ہم جانتے ہیں کہ MySQL میں کیڑے ہیں جو اچانک کریش اور بنیادی فائل کی تخلیق کا باعث بن سکتے ہیں۔ چونکہ بنیادی فائل میں سرور میموری ڈمپ ہوتا ہے، یہ ہو سکتا ہے کہ ڈمپ میں ڈکرپٹ شدہ ٹیبل اسپیس کلید ہو۔ معاملات کو مزید خراب کرنے کے لیے، ڈکرپٹ شدہ ٹیبل اسپیس کیز میموری میں محفوظ کی جاتی ہیں، جنہیں ڈسک میں تبدیل کیا جا سکتا ہے۔ آپ کہہ سکتے ہیں کہ یہ کوئی نقصان نہیں ہے کیونکہ آپ کو ان فائلوں اور سویپ پارٹیشن تک رسائی کے لیے روٹ رائٹس کی ضرورت ہے۔ جی ہاں. لیکن جڑ صرف تھوڑی دیر کی ضرورت ہے. ایک بار جب کسی کو ڈکرپٹ شدہ ٹیبل اسپیس کلید تک رسائی حاصل ہو جاتی ہے، تو وہ اسے ڈیٹا کو ڈکرپٹ کرنے کے لیے استعمال کرنا جاری رکھ سکتا ہے، یہاں تک کہ روٹ مراعات کے بغیر۔ اس کے علاوہ، ڈسک چوری کی جا سکتی ہے، اور فریق ثالث کے ٹولز کا استعمال کرتے ہوئے سویپ پارٹیشن/کور فائلوں کو پڑھا جا سکتا ہے۔ ٹی ڈی ای کا مقصد ڈسک کے چوری ہونے کے باوجود اسے پڑھنے کے قابل نہیں بنانا ہے۔ میں
مزید پڑھ:
ماخذ: www.habr.com