TLS کلید شیئرنگ بمقابلہ کلائنٹ سرٹیفکیٹ: کون لاگ اِن کرتا ہے؟
کلید کے معاہدے کو کلائنٹ کی تصدیق اور ایپلیکیشن کی شناخت سے الگ کریں، اور مصافحے کے وہ پیغامات پڑھیں جو دکھاتے ہیں کہ کنکشن نے اصل میں کون سا استعمال کیا۔
مصافحے میں عوامی کلید کے تبادلے کی قدر لے جانا وہی واقعہ نہیں ہے جو کلائنٹ کا لاگ اِن ہونا ہے۔ ایک کنکشن کے لیے خفیہ ریاضی کی حالت قائم کرتا ہے؛ دوسرا بتاتا ہے کہ کلائنٹ کون ہے، اور یہ صرف اُس وقت ہوتا ہے جب سرور مطالبہ کرے اور تبادلہ اِس کی حمایت کرے۔ پہلے کو دوسرا سمجھنا VPN کے بارے میں غلط نتائج کی طرف لے جاتا ہے کہ وہ کیا چھپاتا ہے اور کیا نہیں۔ پیغامات پڑھیں، پھر فیصلہ کریں کہ چار خصوصیات میں سے کون سی آپ نے واقعی دیکھی۔
دو چیزیں جو ریکارڈنگ میں ایک جیسی دکھتی ہیں
TLS 1.3 کا کلائنٹ بغیر کوئی سرٹیفکیٹ پیش کیے اپنی پہلی پرواز میں کلید کے تبادلے کا مواد دے سکتا ہے۔ یہ حصہ ڈیزائن ہی سے عوامی ہے، کیونکہ سرور کو مشترکہ راز نکالنے کے لیے اِس کی ضرورت ہوتی ہے۔ کلائنٹ سرٹیفکیٹ ایک الگ پیغام ہے، اور صرف اُس وقت بھیجا جاتا ہے جب سرور ایک مانگے۔ یہ وہ شناخت رکھتا ہے جس کی سرور بعد میں تصدیق کرتا ہے، اور باہمی تصدیق سرور کا فیصلہ ہے، نہ کہ وہ خصوصیت جو سائفر سوٹ لازم کرے۔ ایپلیکیشن کی شناخت بالکل تیسری چیز ہے: لاگ اِن فارم، بیئرر ٹوکن، کوکی۔ اِن میں سے کوئی بھی مصافحے میں ظاہر نہیں ہوتا، اور یہ سب نیٹ ورک راستہ بدلنے پر بھی قائم رہتے ہیں۔
| Object in play | What it establishes |
|---|---|
| Key-exchange share | Cryptographic state for this connection |
| Server certificate | Which server the client reached |
| Client certificate | Client authentication, when requested |
| Application session | Account identity inside the application |
چاروں قطاریں خودمختار ہیں۔ کنکشن میں پہلی اور دوسری قطار ہو سکتی ہے، تیسری چھوڑی جا سکتی ہے، اور پھر بھی چوتھی کوکی ہیڈر میں لے جایا جا سکتا ہے۔
فیصلہ کریں کہ پکڑا گیا مصافحہ کیا ثابت کر سکتا ہے
صرف مصافحے سے مبصر وہ ورژن، سائفر سوٹ، سرور کا سرٹیفکیٹ اور عوامی کلید کے تبادلے کی قدریں سیکھتا ہے جن پر بات چیت ہوئی۔ یہ کلائنٹ کے نفاذ کا فنگر پرنٹ لینے اور یہ دیکھنے کے لیے کافی ہے کہ کس سرور سے رابطہ ہوا۔ جو یہ نہیں دیتا وہ نجی حالت ہے جو کنکشن کو ڈکرپٹ کرنے کے لیے درکار ہے، جس کی رازداری عوامی حصے پر نہیں بلکہ عارضی تبادلے پر ٹکی ہے۔ یہ اکاؤنٹ کی شناخت بھی نہیں دیتا، جو شروع ہی سے مصافحے میں نہیں تھی۔
لہٰذا ایماندار نتیجہ تنگ ہے: اِس تبادلے میں کوئی کلائنٹ سرٹیفکیٹ پیش نہیں کیا گیا۔ بات یہ نہیں کہ کلائنٹ نے جوڑنے کے قابل کچھ نہیں بھیجا، اور یقیناً یہ نہیں کہ سیشن کوئی شناخت کنندہ نہیں رکھتا تھا۔
سائفر کا نام نہیں، پیغامات پڑھیں
سائفر سوٹ سے اندازہ لگانے کے بجائے سرور سے پوچھیں کہ وہ کیا مانگتا ہے۔ سرٹیفکیٹ کی درخواست والا TLS 1.3 مصافحہ نقل میں نظر آتا ہے، اور اُس کا نہ ہونا بھی اُتنا ہی نظر آتا ہے۔
openssl s_client -connect app.example.net:443 -tls1_3 -msg < /dev/null 2>&1 | grep -i -E 'key_share|CertificateRequest'
پھر کلائنٹ سرٹیفکیٹ ترتیب دے کر دہرائیں اور موازنہ کریں۔ دوسرے رن میں سرٹیفکیٹ بھیجا اور قبول کیا جانا چاہیے؛ پہلے میں کچھ بھی نظر نہ آنا چاہیے، اور یہی بحث کا ٹھوس فرق ہے۔
openssl s_client -connect app.example.net:443 -tls1_3 -cert client.pem -key client.key -quiet
اگر آپ کو صرف عام براؤزنگ کی صورت درکار ہے تو پروٹوکول ورژن، تصدیق کا نتیجہ اور یہ کہ کلائنٹ سرٹیفکیٹ پیش کیا گیا یا نہیں، دیکھنے کے لیے کلائنٹ کی تفصیلی آؤٹ پٹ کافی ہے۔ جو سرور کبھی سرٹیفکیٹ کی درخواست نہیں بھیجتا وہ ایک حاصل نہیں کر سکتا۔
کہاں دوبارہ شروع کرنا جواب بدلتا ہے
TLS 1.3 میں دوبارہ شروع کرنا خفیہ حالت سے جڑے ٹکٹ استعمال کرتا ہے، اِس لیے بعد کا کنکشن مکمل سرٹیفکیٹ تبادلے کے بغیر مکمل ہو سکتا ہے۔ یہ مبصر کے دیکھنے کو کم کرتا ہے اور نقل کے ثابت کرنے کو بدلتا ہے۔ یہ وہاں شناخت پیدا نہیں کرتا جہاں نہیں تھی۔ دوبارہ شروع شدہ سیشن اب بھی اُسی ایپلیکیشن سیشن کا ہے، اور اُس سیشن کی کوئی بھی کوکی یا ٹوکن اہم شناخت کنندہ رہتی ہے۔
اِسی لیے "کوئی کلائنٹ سرٹیفکیٹ نہیں" پر رکنے والا رازداری کا جائزہ دلچسپ حصہ کھو دیتا ہے۔ پوچھنے والا سوال یہ ہے کہ کون فریق مستحکم شناخت کنندہ رکھتا ہے، یہ نہیں کہ ایک مصافحے سے کون سا پیغام غائب تھا۔
ایک فیصلہ نہیں، چار خصوصیات لکھیں
کلید کے معاہدے، سرور کی تصدیق، کلائنٹ کی تصدیق اور ایپلیکیشن کی شناخت کو چار الگ قطاروں کے طور پر لکھیں، ہر ایک کے ثبوت کے ساتھ۔ یہ فہرست پروٹوکول ورژن بدلنے پر بھی قائم رہتی ہے، اور رازداری کے بارے میں دلیل کو کسی اور کے لیے قابلِ جانچ بناتی ہے۔ پھر شامل کریں کہ نیٹ ورک راستہ کیا دیتا ہے۔ VPN وہ ماخذ پتہ بدلتا ہے جو سروس دیکھتی ہے؛ یہ اُن لاگ اِن، کوکی یا ڈیوائس فنگر پرنٹ کو نہیں ہٹاتا جو ایپلیکیشن کے پاس پہلے سے ہیں۔
کنکشن کا طے شدہ ورژن اور سرٹیفکیٹ کی درخواست کا نتیجہ اکٹھے لکھیں، کیونکہ جائزہ لینے والے کو اپنی ریکارڈنگ کے بغیر آپ کا نتیجہ دہرانے کے لیے یہی جوڑی درکار ہے۔