VPN کی تفصیل میں TLS کا لفظ دیکھ کر یہ نتیجہ نکالنا کہ ویب پراکسی اس ٹریفک کو سمجھ لے گی ایک عام شارٹ کٹ ہے۔ اس پروٹوکول کے اندر ساتھی اپنے پیکٹوں کا تبادلہ کرتے ہیں، اور TLS اسی تبادلے کے اندر ایک چینل کے حصے کے طور پر چلتا ہے۔ صارف کے لیے اہم پے لوڈ ایک مختلف پیغام کی شکل میں جاتا ہے، اسی لیے دونوں کبھی عام HTTPS سیشن سے میل نہیں کھاتے۔

لفافہ پہلے آتا ہے

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

outer transport (UDP datagram or TCP stream)
  -> OpenVPN header (opcode, key id, length where needed)
    -> control message (reliability wrapper, TLS exchange)
    -> data message (protected inner packet)

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

قابل اعتمادی کی پرت پروٹوکول کی ہے

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

فائدہ یہ ہے کہ بیرونی ٹرانسپورٹ UDP ہونے پر بھی TLS ہاتھ ملانے کو قابل اعتماد حامل ملتا ہے۔ قیمت یہ ہے کہ ایک ڈیٹاگرام اس گفتگو کا صرف ایک حصہ رکھ سکتا ہے، اس لیے اسے خودمختار TLS ریکارڈ سمجھنے سے بے معنی بات پیدا ہوتی ہے۔ دوبارہ جوڑنا پروٹوکول پرت پر ہی ہونا چاہیے۔ اسی لیے پکڑا گیا پیکٹ شاذ و نادر ہی مکمل ہاتھ ملانے کے مرحلے جیسا لگتا ہے۔

بیرونی ٹرانسپورٹ کو TCP میں بدلنا یہ پرت نہیں ہٹاتا۔ قابل اعتماد ٹرانسپورٹ کا مطلب پروٹوکول سطح پر کم دوبارہ بھیجنا ہے، نہ یہ کہ فریمنگ غائب ہو جائے یا ٹریفک HTTP بن جائے۔

ڈیٹا پیکٹ الگ شکل استعمال کرتے ہیں

سیشن موجود ہونے پر مفید پے لوڈ ڈیٹا پیغامات کی صورت میں آتا ہے جو اندرونی IP پیکٹ یا Ethernet فریم لاتے ہیں۔ یہ اپنی کلیدوں اور اپنی پروسیسنگ سے محفوظ ہوتے ہیں، اور TLS لائبریری جس بھی معنی میں قبول کرے وہ TLS ایپلیکیشن ریکارڈ نہیں ہیں۔

یہ علیحدگی ترتیب میں نظر آتی ہے: کنٹرول چینل اور ڈیٹا چینل کی الگ سائفر ترتیبات ہوتی ہیں، اس لیے ایک کا نام لینے والی لاگ سطر دوسرے کے بارے میں کچھ نہیں بتاتی۔ مضبوط کنٹرول سائفر کو مضبوط ڈیٹا سائفر کا ثبوت سمجھنا ایک عام رپورٹنگ غلطی ہے۔

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

HTTPS پراکسی مدد کیوں نہیں کر سکتی

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

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

نشانات کو درست پڑھنا

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

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

متعلقہ مضامین