لمبی Blowfish کلید 64 بٹ کے بلاک کو کیوں درست نہیں کر سکتی
Blowfish کی کلیدیں 448 بٹ تک پہنچ سکتی ہیں جبکہ بلاک 64 بٹ رہتا ہے۔ طے شدہ سائفر کی جانچ کریں اور لمبی کلید کے بجائے معاون متبادل کی منصوبہ بندی کریں۔
ایک VPN پروفائل 448 بٹ کی کلید کے ساتھ Blowfish پیش کرتا ہے، اور کوئی تجویز کرتا ہے کہ سائفر برقرار رکھنے کے لیے سب سے لمبی کلید استعمال کی جائے۔ کلید کی لمبائی حقیقی ہے، لیکن یہ غلط عدد ہے جسے بہتر بنانا ہے۔ Blowfish 64 بٹ کے بلاک تبدیل کرتا ہے چاہے کلید کتنی ہی لمبی ہو، اور بلاک کی چوڑائی ہی وہ چیز ہے جو یہ طے کرتی ہے کہ ایک کلید کتنی ٹریفک کو محفوظ طریقے سے بچا سکتی ہے۔ نیچے دی گئی جانچیں ترتیب سے چلائیں اور پہلی ایسی جانچ پر رکیں جو سروس کو بری کر دے، کیونکہ بعد کا مرحلہ پہلے مرحلے کی مرمت نہیں کر سکتا۔
جانچیں کہ فریقین واقعی کس بات پر متفق ہوتے ہیں
ڈیٹا چینل کا سائفر دونوں سروں سے پڑھیں، نہ کہ اس پروفائل سے جو آپ تعینات کرنے کا ارادہ رکھتے تھے۔ کلائنٹ کی ترتیب کئی سائفر درج کر سکتی ہے، اور منتخب کردہ دو عمل درآمد اور ان کے ورژن کے درمیان مذاکرات کا نتیجہ ہوتا ہے۔ آزمائشی کنکشن پر لاگ کی تفصیل بڑھائیں اور ڈیٹا چینل کی سطر پڑھیں، جو اصل میں شروع کیے گئے سائفر اور کلید کے سائز کا نام دیتی ہے۔
اگر طے شدہ سائفر AES-GCM یا ChaCha20-Poly1305 ہے تو یہیں رکیں۔ یہ ساختوں میں 128 بٹ کا بلاک استعمال ہوتا ہے اور پے لوڈ کی تصدیق ہوتی ہے، اس لیے نیچے دی گئی 64 بٹ تصادم کی دلیل ان پر لاگو نہیں ہوتی۔
کلید کی لمبائی کو بلاک کی چوڑائی سے الگ کریں
Blowfish 32 سے 448 بٹ تک کی کلیدیں قبول کرتا ہے، اور الگورتھم کے مصنف کی دستاویزات دونوں اعداد الگ الگ درج کرتی ہیں۔ کلید راز ہے؛ بلاک تبدیلی کی اکائی ہے۔ لمبا راز اندازہ لگانا مشکل بناتا ہے اور سائفر کے زیرِ عمل بلاک کی چوڑائی پر کچھ نہیں کرتا۔
CBC موڈ میں سائفر مقررہ چوڑائی کے بلاکس پر لاگو ہوتا ہے، پچھلے سائفر ٹیکسٹ بلاک کے ساتھ زنجیر بندھا ہوتا ہے اور آخر میں بھرائی کی جاتی ہے۔ Blowfish کے لیے یہ چوڑائی 64 بٹ یعنی آٹھ بائٹ ہے۔ کلید کا شیڈول جتنا بڑا چاہیں ہو سکتا ہے؛ زنجیر پھر بھی ہر بار آٹھ بائٹ آگے بڑھتی ہے۔
اسی لیے لمبی کلید کوئی تخفیفی اقدام نہیں۔ یہ کلید کے خلاف بروٹ فورس سے نمٹتی ہے، جبکہ نیچے دیا گیا تصادم کا خطرہ بلاک کی چوڑائی اور موڈ کی خاصیت ہے۔
سالگرہ کا حساب بلاک کے سائز پر لاگو کریں
64 بٹ کے بلاک کا سالگرہ پیمانہ تقریباً 2^32 بلاک ہے جو ایک کلید کے تحت خفیہ کیے جاتے ہیں، اس سے پہلے کہ تصادم ممکن ہوں۔ ہر بلاک آٹھ بائٹ اٹھاتا ہے، اس لیے وہی پیمانہ تقریباً 2^35 بائٹ یا ایک کلید کے تحت 32 GiB ڈیٹا ہے۔
اسے پیمانہ سمجھیں، کوٹہ نہیں۔ تصادم امکانی ہیں، اور یہ کہ کوئی کچھ ظاہر کرتا ہے یا نہیں، موڈ، ٹریفک کے نمونے اور اس بات پر منحصر ہے کہ حملہ آور ارد گرد کے سادہ متن کو پہچان یا متاثر کر سکتا ہے یا نہیں۔ 32 GiB کے بعد کا پہلا بائٹ ڈکرپشن کا واقعہ نہیں، اور پہلے 32 GiB محفوظ تصدیق شدہ نہیں ہیں۔
Sweet32 کے محققین نے 2016 میں 64 بٹ بلاک سائفرز کے خلاف عملی حملے دکھائے، جن میں OpenVPN کا منظرنامہ بھی شامل تھا، ایسے حالات میں جن کے لیے مشاہدہ اور ٹریفک کی پیداوار ضروری تھی۔ ان کی شائع کردہ طے شدہ ترتیبات اور سافٹ ویئر کے ورژن تاریخی پس منظر ہیں، آپ کی تعیناتی کی تفصیل نہیں۔
فیصلہ کریں کہ کیا یہاں CBC کا دوبارہ استعمال اہم ہے
CBC میں دہرایا گیا سائفر ٹیکسٹ بلاک کا مطلب ہے کہ دونوں سادہ متن بلاک کسی معلوم تعلق سے مختلف ہیں، کیونکہ زنجیر کا XOR خود کو منسوخ کر دیتا ہے۔ ایسا حملہ آور جو سائفر ٹیکسٹ کا مشاہدہ کر سکتا ہو اور سادہ متنوں میں سے ایک کو جانتا ہو یا اس پر اثر ڈال سکتا ہو، دوسرے کے بارے میں معلومات حاصل کر سکتا ہے۔ اس کے لیے Blowfish کلید کبھی ضروری نہیں ہوتی۔
لہٰذا متعلقہ سوالات یہ ہیں کہ کلید کتنی دیر سروس میں رہتی ہے، اس کے تحت کتنی ٹریفک گزرتی ہے اور کیا کوئی اس ٹریفک کا مشاہدہ اور رہنمائی کر سکتا ہے۔ کلید کی تجدید فی کلید بلاکس کی تعداد کم کرتی ہے، لیکن وقت کا وقفہ بائٹ کی حد نہیں: مصروف سرنگ اسی گھنٹے میں خالی سرنگ سے کہیں زیادہ ڈیٹا منتقل کر سکتی ہے۔ اگر آپ پرانا سائفر رکھتے ہیں تو حد ساخت اور حقیقی حجم سے اخذ کریں، گول عدد سے نہیں۔
اگر فی کلید ماپا گیا حجم سالگرہ پیمانے سے بہت نیچے رہے تو خطرہ کم ہے۔ پھر بھی یہ صفر نہیں اور پھر بھی فکر چھوڑنے کے بجائے منتقلی کی منصوبہ بندی کی وجہ ہے۔
سائفر بدلیں، کلید نہیں
سروس کو معاون AEAD سائفر پر منتقل کریں اور تصدیق کریں کہ دونوں فریق، ان کے ورژن اور ان کے کرپٹوگرافک بیک اینڈ اس پر متفق ہو سکتے ہیں۔ لمبی Blowfish کلید کوئی اہم چیز نہیں بدلتی، اور ایک کلائنٹ پر نئی ہدایت کا اندازہ لگانا وہ طریقہ ہے جس سے کام کرنے والی سرنگ خراب ہو جاتی ہے۔ تبدیلی کو باقی بیڑے کو چھونے سے پہلے ایک کلائنٹ اور ایک سرور پر آزمائیں۔ پرانا پروفائل واپسی کے لیے دستیاب رکھیں جب تک نیا سائفر مکمل کنکشن چکر نہ گزار لے۔
تبدیلی کے دوران سرٹیفکیٹ کی تصدیق اور اکاؤنٹ کی توثیق برقرار رکھیں۔ وہ مختلف سوالات کے جواب دیتی ہیں: کامیاب لاگ ان بلاک کو چوڑا نہیں کر سکتا، اور بہتر ڈیٹا سائفر غلط سرور پر اعتماد کا جواز نہیں بنتا۔
جانچ کو نئی کنکشن پر طے شدہ سائفر دوبارہ پڑھ کر اور پھر تصدیق کر کے بند کریں کہ پرانا سائفر اب قبول نہیں ہوتا۔ اگر کوئی فریق اب بھی اسے پیش کرتا ہے تو منتقلی مکمل نہیں، دوسری طرف کا پروفائل کچھ بھی کہے۔