لسنر کو TLS 1.3 پر اپ گریڈ کرنا بدلتا ہے کہ مبصر کیا پڑھ سکتا ہے، لیکن اتنا نہیں جتنا ورژن نمبر اشارہ کرتا ہے۔ ClientHello اب بھی کسی بھی انکرپشن پر بات چیت سے پہلے سفر کرتا ہے، اور عام کنکشن میں مطلوبہ سرور نام وہاں سادہ متن میں موجود ہوتا ہے۔ Encrypted Client Hello وہ طریقہ کار ہے جو اسے چھپاتا ہے، اور یہ اپنی شرائط کے ساتھ الگ تعیناتی ہے۔ دونوں میں سے کسی رویے کو فرض کرنے والی پالیسی لکھنے سے پہلے یہ چار مراحل کریں۔

ہینڈ شیک اصل میں کیا ظاہر کرتا ہے

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

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

ان میں سے کوئی بھی ترسیل کا راستہ نہیں چھپاتا۔ ماخذ اور منزل کے پتے، پورٹس، پیکٹ سائز اور وقت قابل مشاہدہ رہتے ہیں، اور یہ اکثر نام سے زیادہ بتاتے ہیں کہ کون بول رہا ہے۔ ناموں کی تحلیل اور اطلاقی سطح کے تعلقات ایک اور تہہ ہیں، ہر ایک کی اپنی نظر آوری۔

فرض کرنے کے بجائے ClientHello پڑھیں

ServerHello میں ورژن آپ کو نہیں بتاتا کہ کلائنٹ نے کیا بھیجا۔ پہلی پرواز کو براہ راست دیکھیں، ایسی پوزیشن سے جو اس مبصر کی نمائندگی کرے جو آپ کے لیے اہم ہے۔

openssl s_client -connect app.plant.example:443 -servername app.plant.example -tls1_3 </dev/null> 2>/dev/null | head -20
sudo tcpdump -ni eth0 -c 40 'tcp port 443' -w /tmp/tls.pcap
tshark -r /tmp/tls.pcap -Y 'tls.handshake.extensions_server_name' -T fields -e tls.handshake.extensions_server_name

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

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

ECH ایکسٹینشن کو دعویٰ سمجھیں، ثبوت نہیں

ClientHello میں ECH ایکسٹینشن دیکھنا اس بات کا مطلب نہیں کہ کنکشن نے ECH استعمال کیا۔ کلائنٹ GREASE ECH بھیجتے ہیں جب ان کے پاس قابل استعمال ترتیب نہ ہو، بالکل اسی لیے کہ ان کے ہینڈ شیک یکساں نظر آئیں۔ ایکسٹینشن موجود ہے، اندرونی hello چارہ ہے، اور اصل نام اب بھی پڑھا جا سکتا ہے۔

dig +short HTTPS app.plant.example
openssl s_client -connect app.plant.example:443 -tls1_3 -status </dev/null> 2>/dev/null | grep -i -E 'ech|status_request'

پہلا حکم دکھاتا ہے کہ آیا ماخذ ECH ترتیب پیرامیٹر کے ساتھ HTTPS وسیلہ ریکارڈ شائع کرتا ہے، اور اسی طرح کلائنٹ چابی سیکھتے ہیں۔ دوسرا ہینڈ شیک کی حالت کی معلومات تلاش کرتا ہے، حالانکہ کلائنٹ کا کامیابی پیغام زیادہ مضبوط ثبوت ہے۔ قبولیت اہم ہے: جس سرور کے پاس مماثل چابی نہ ہو وہ اندرونی hello کو ڈکرپٹ نہیں کر سکتا، اور کنکشن واپس ہٹ جاتا ہے۔

کلائنٹ کو بھی جانچیں، کیونکہ براؤزر کی معاونت اور ترتیب ورژن اور پلیٹ فارم کے لحاظ سے مختلف ہیں۔ „جدید براؤزر ECH استعمال کرتے ہیں“ پر بنی پالیسی بیڑے کے بارے میں اندازہ ہے، آپ کے بیڑے کے بارے میں حقیقت نہیں۔ ان ورژنوں کی فہرست بنائیں جو واقعی جڑتے ہیں، پھر ہر ایک میں سے ایک آزمائیں۔ وہی صفحہ جو موجودہ ڈیسک ٹاپ براؤزر سے کام کرتا ہے شاید اسی نیٹ ورک پر پرانے کلائنٹ سے کچھ نہ چھپا سکے۔

مبصر کا دائرہ پالیسی میں لکھیں

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

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

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

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