VPN کی نجی کلید پر پاس فریز اصل میں کیا محفوظ کرتا ہے
یہ ڈسک پر فائل کو مقفل کرتا ہے، چل رہا ٹنل یا آپ کے اکاؤنٹ لاگ ان کو نہیں۔ جانیں کہ پرامپٹ کیا ڈھکتا ہے، کیا نہیں، اور لیک ہونے پر کیا کرنا ہے۔
VPN کلائنٹ شروع ہونے پر ظاہر ہونے والا پرامپٹ غلط پڑھنا آسان ہے۔ یہ VPN اکاؤنٹ کا پاس ورڈ نہیں ہے، ٹنل کا پاس ورڈ نہیں ہے، اور اسے درج کرنا یہ ثابت نہیں کرتا کہ کنکشن محفوظ ہے۔ یہ نجی کلید کی ایک محفوظ نمائندگی کھولتا ہے تاکہ کلائنٹ کلید کا مواد پڑھ سکے اور اسے تصدیق کے لیے استعمال کر سکے۔ اس کے بعد جو کچھ ہوتا ہے وہ الگ سوال ہے۔
عملی طور پر جواب کناروں پر غلط ہو جاتا ہے: لوگ سمجھتے ہیں کہ پاس فریز چل رہے ٹنل کی حفاظت کرتا ہے، یا اسے بدلنے سے پہلے ہی لیک ہو چکی کلید کی کاپی منسوخ ہو جاتی ہے۔ دونوں مفروضے ناکام ہوتے ہیں، اور دونوں اس طرح ناکام ہوتے ہیں کہ ایک اسناد کھلی رہ جاتی ہے جبکہ آپریٹر سمجھتا ہے کہ معاملہ سنبھال لیا گیا ہے۔
ایک مکالمہ، کئی مختلف راز
نجی کلید کا پاس فریز ایک فائل کو ڈکرپٹ کرتا ہے۔ اکاؤنٹ پاس ورڈ آپ کو کسی سروس میں تصدیق کرتا ہے۔ PKCS#12 درآمدی پاس ورڈ اس بنڈل کو ڈکرپٹ کرتا ہے جس میں کلید اور اس کا سرٹیفکیٹ ہوتا ہے، اور یہ کلید کے اپنے پاس فریز جیسی ہی سٹرنگ نہ ہو سکے۔ یہ پرامپٹ تقریباً ایک جیسے دکھ سکتے ہیں، اور یہ اندازہ لگانا کہ کون سا راز کہاں جاتا ہے، کلیدوں کے غلط فیلڈ میں چپکنے کی وجہ ہے۔
ٹنل کی اپنی انکرپشن چوتھی چیز ہے۔ ڈیٹا چینل ہینڈ شیک کے دوران طے شدہ سیشن کلیدوں کا استعمال کرتا ہے؛ نجی کلید کے پاس فریز کا انفرادی پیکٹوں کی حفاظت میں کوئی کردار نہیں۔ اگر کوئی کلید کی فائل پڑھ سکتا ہے، تو وہ پاس فریز کا آف لائن اندازہ لگانے کی کوشش کر سکتا ہے، لیکن اگر وہ پیکٹ پڑھ سکتا ہے، تو پاس فریز بے معنی ہے۔
ڈسک پر انکرپشن کیا ڈھکتا ہے
انکرپٹ شدہ PEM کلید دو شکلوں میں آتی ہے، اور ہیڈر بتاتا ہے کہ آپ کے پاس کون سی ہے۔ جدید PKCS#8 شکل -----BEGIN ENCRYPTED PRIVATE KEY----- سے شروع ہوتی ہے؛ پرانی PEM شکل، جو پرانے OpenVPN سیٹ اپ میں اب بھی عام ہے، -----BEGIN RSA PRIVATE KEY----- سے شروع ہوتی ہے اور اس کے عین نیچے Proc-Type: 4,ENCRYPTED اور DEK-Info لائن رکھتی ہے۔ فائل نجی کلید کو آپ کے پاس فریز سے حاصل کردہ کلید کے تحت انکرپٹ کر کے رکھتی ہے، عام طور پر پاس ورڈ پر مبنی KDF کے ذریعے جس میں بتائی گئی تکرار تعداد یا کام کا عنصر ہوتا ہے۔ OpenSSL pkey دستاویزات فارمیٹس اور پڑھتے وقت لاگو پاس فریز اختیارات کا احاطہ کرتی ہیں۔
اس کے دو نتائج ہیں۔ کمزور پاس فریز پر KDF جس رفتار کی اجازت دیتا ہے اس رفتار سے آف لائن حملہ کیا جا سکتا ہے، اس لیے فائل کی اجازتیں اور بیک اپ تک رسائی فائل انکرپٹ ہونے پر بھی اہم رہتی ہیں۔ اور جو حملہ آور پاس فریز کے بغیر صرف فائل حاصل کرتا ہے اسے اندازہ لگانا پڑتا ہے؛ جو فائل اور پاس فریز دونوں حاصل کرتا ہے اس کے پاس کلید ہے، جیسے یہ کبھی انکرپٹ ہی نہ ہوئی ہو۔
head -3 vpn.key
openssl pkey -in vpn.key -noout -pubout
openssl pkcs12 -in bundle.p12 -info -noout
head -3 ہیڈر دکھاتا ہے اور پرانی فائل میں انکرپشن ثابت کرنے والی Proc-Type اور DEK-Info لائنیں دکھاتا ہے؛ اکیلی ایک لائن کسی بھی سمت ثبوت نہیں۔ pkey لائن پاس فریز مانگتی ہے اور صرف عوامی نصف چھاپتی ہے، جو ثابت کرتی ہے کہ فائل اور پاس فریز کام کرتے ہیں نجی کلید کو ظاہر کیے بغیر۔ اس جانچ کے لیے -text استعمال نہ کریں: یہ نجی اجزاء، privateExponent، prime1، prime2 اور باقی چھاپتا ہے، اور وہ آؤٹ پٹ کبھی کہیں چپکایا نہیں جانا چاہیے، نہ ٹکٹ میں، نہ چیٹ میں، نہ لاگ میں۔ PKCS#12 کمانڈ یہ بھی بتاتی ہے کہ بنڈل میں الگ MAC یا انکرپشن پاس ورڈ ہے یا نہیں، جو ساتھی کو دینے سے پہلے جاننا مفید ہے۔
کلید لوڈ ہونے کے بعد یہ کیا محفوظ کرنا چھوڑ دیتا ہے
کھولنا اس عمل کے لیے یک طرفہ واقعہ ہے۔ کلائنٹ KDF سے کلید مانگتا ہے، فائل ڈکرپٹ کرتا ہے، اور جب تک ضرورت ہو نجی کلید میموری میں رکھتا ہے۔ اس لمحے سے پاس فریز چل رہے سیشن کے بارے میں کچھ محفوظ نہیں کرتا: نہ عمل کی میموری، نہ کور ڈمپ، نہ کلائنٹ سے منسلک ڈیبگنگ سیشن، اور نہ کلید کے استعمال کے دوران لی گئی مشین کا بیک اپ۔
یہ پاس فریز والی SSH کلید یا پاس ورڈ مینیجر کے کھلے خزانے جیسی ہی حد ہے۔ یہ آرام کی حالت میں فائل چرانے کی لاگت بڑھاتا ہے اور آپ کے صارف کے طور پر چلنے والے میلویئر، کلائنٹ سے دستخط مانگنے والی مجاز ایپلیکیشن، یا میموری پڑھ سکنے والے منتظم کے خلاف کچھ نہیں کرتا۔ اسے ایک تہہ سمجھیں، کلید کو یوں ہی چھوڑ دینے کو محفوظ بنانے والا کنٹرول نہیں۔
پرامپٹ بار بار کیوں واپس آتا ہے
ہر دوبارہ کنکشن پر دوبارہ پوچھنے والا کلائنٹ ضروری نہیں کہ خراب ہو۔ کچھ کلائنٹ سیشن کے لیے پاس فریز کیش کرتے ہیں، کچھ اسے OS کی کلید زنجیر میں محفوظ کرتے ہیں، اور کچھ کو ایسے مددگار کی طرف بھیجا جا سکتا ہے جو اسے فراہم کرتا ہے، اس لیے آپ کو کون سا رویہ ملتا ہے وہ کلائنٹ اور اس کی ترتیب پر منحصر ہے، کلید کی فائل پر نہیں۔
اگر بار بار آنے والا پرامپٹ ہی اصل شکایت ہے، تو کلید سے انکرپشن ہٹانے سے پہلے کلائنٹ کے کیشنگ اور تصدیق کے اختیارات دیکھیں۔ پاس فریز ہٹانے سے محفوظ فائل سادہ متن کی کلید بن جاتی ہے، اور دوبارہ کنکشن خاموش ہو جاتا ہے، آپ کے پاس موجود واحد آرام کنٹرول کی قیمت پر۔ بہتر جواب عام طور پر ایک معاون اسناد مخزن ہے جس میں وہی فائل اجازتیں ہوں جو آپ ویسے بھی استعمال کرتے۔
نقصان اور افشا ایک ہی مرمت نہیں ہیں
گمشدہ پاس فریز سرٹیفکیٹ سے بحال نہیں کیا جا سکتا۔ سرٹیفکیٹ عوامی مواد ہے جو نام کو کلید سے جوڑتا ہے؛ اس میں نجی کلید تک واپسی کا راستہ نہیں اور پاس فریز کے بارے میں کوئی اشارہ نہیں۔ عملی اختیارات کلید کا مجاز بیک اپ، یا آپریٹر کے معمول کے عمل سے جاری کردہ نئی شناخت ہیں۔ پاس فریز کو 'بحال' کرنے کی پیشکش کرنے والا ہر شخص اس کا اندازہ لگانے کی پیشکش کر رہا ہے۔
افشا کے لیے مختلف ردعمل درکار ہے۔ اسی کلید کو نئے پاس فریز سے دوبارہ انکرپٹ کرنے سے کلید کا مواد بے تبدیل رہتا ہے، اس لیے کہیں اور پہلے ہی کھلی ہوئی کاپی اب بھی کام کرتی ہے۔ مرمت اسناد کو منسوخ یا تبدیل کرنا ہے: نئی کلید اور سرٹیفکیٹ جاری کریں، تقسیم کریں، اور پرانی کو ساتھی کے ہاں ریٹائر کریں۔ جب تک ایسا نہ ہو، فائل کا پاس ورڈ بدلنا گھریلو کام ہے، کنٹرول نہیں۔ پرانی فائل کو بیک اپ سے باہر صرف نئی شناخت کے کام کرنے کی تصدیق کے بعد رکھیں، اور لکھیں کہ کس سیریل یا فنگر پرنٹ نے اسے بدلا۔