SSL (Secure Sockets Layer) اور TLS (Transport Layer Security) خفیہ نگاری کے پروٹوکول ہیں جو کلائنٹ اور سرور کے درمیان نیٹ ورک پر ڈیٹا کی محفوظ ترسیل کو یقینی بناتے ہیں۔ یہ تمام ٹریفک کو خفیہ کرتے ہیں، حملہ آوروں کے ذریعے ڈیٹا کو روکے جانے اور تبدیل کیے جانے سے روکتے ہیں۔ Google Transparency Report (2025) کے مطابق، دنیا میں 95% سے زیادہ موبائل ٹریفک TLS خفیہ کاری استعمال کرتی ہے۔ اس پروٹوکول کے بغیر، کھلی Wi-Fi یا موبائل نیٹ ورک کے ذریعے بھیجی گئی کوئی بھی معلومات تیسرے فریق کے ذریعے پڑھی جا سکتی ہے۔ Cloudflare, 2024
اہم نکات
SSL (Secure Sockets Layer) ایک پروٹوکول ہے جسے Netscape نے 1995 میں ویب ٹریفک کو محفوظ بنانے کے لیے تیار کیا تھا۔ پہلا ورژن SSL 1.0 کبھی عوامی طور پر جاری نہیں کیا گیا؛ SSL 2.0 (1995) اور SSL 3.0 (1996) 2000 کی دہائی کے اوائل تک استعمال ہوئے، لیکن ان میں سنگین کمزوریاں تھیں۔ SSL کی جگہ TLS (Transport Layer Security) نے لے لی — IETF کے ذریعے معیاری بنایا گیا ایک بہتر ورژن۔ TLS 1.0 (1999) SSL 3.0 پر مبنی تھا، جبکہ بعد کے ورژن TLS 1.1 (2006)، TLS 1.2 (2008) اور TLS 1.3 (2018) آہستہ آہستہ اصل فن تعمیر سے دور ہوتے گئے، نئے خفیہ کاری الگورتھم شامل کرتے اور کمزوریوں کو دور کرتے گئے۔ آج SSL کو متروک سمجھا جاتا ہے، اور تمام جدید نظام TLS استعمال کرتے ہیں، اگرچہ عادتاً دونوں پروٹوکول کو اکثر SSL/TLS کے طور پر ایک ساتھ ذکر کیا جاتا ہے۔
SSL/TLS کی تاریخ ابتدائی ویب میں محفوظ ڈیٹا کی ترسیل کی ضرورت سے شروع ہوئی۔ 1994 میں، Netscape نے اپنے Navigator براؤزر کے لیے SSL 1.0 تیار کیا، لیکن سنگین سیکیورٹی مسائل کی وجہ سے پروٹوکول کبھی شائع نہیں ہوا۔ SSL 2.0 1995 میں جاری ہوا اور عملی طور پر استعمال ہوا، تاہم اس میں متعدد کمزوریاں تھیں: Man-in-the-Middle حملوں سے تحفظ کی کمی، کمزور خفیہ کاری الگورتھم، اور کاٹنے (truncation) کے حملوں کے لیے حساسیت۔ SSL 3.0 (1996) نے زیادہ تر مسائل حل کر دیے، لیکن 2014 تک POODLE کمزوری دریافت ہوئی، جس کے بعد IETF نے باضابطہ طور پر تمام SSL ورژن کو متروک قرار دے دیا۔ TLS 1.0–1.3 نے بتدریج خفیہ نگاری کی مضبوطی، کارکردگی اور رازداری کو بہتر کیا، جہاں TLS 1.3 نے مصافحہ کو دو چکروں سے کم کرکے ایک چکر کر دیا — جو غیر مستحکم کنکشن والی موبائل ایپلیکیشنز کے لیے انتہائی اہم ہے۔
مصافحہ (Handshake) کلائنٹ اور سرور کے درمیان محفوظ کنکشن قائم کرنے کا عمل ہے۔ یہ کئی متواتر مراحل پر مشتمل ہے جن کے دوران فریقین پروٹوکول ورژن پر متفق ہوتے ہیں، خفیہ کاری الگورتھم منتخب کرتے ہیں، کلیدوں کا تبادلہ کرتے ہیں اور ایک دوسرے کی تصدیق کرتے ہیں۔ TLS 1.3 میں، مصافحہ میں صرف ایک نیٹ ورک چکر (1-RTT) لگتا ہے، جبکہ TLS 1.2 میں دو (2-RTT) درکار تھے۔
پہلا قدم کلائنٹ کا ClientHello بھیجنا ہے — ایک پیغام جس میں معاون TLS ورژن، سائفر سوٹ اور ایک بے ترتیب نمبر کی فہرست ہوتی ہے۔ سرور منتخب کردہ ورژن اور سائفر، اپنے X.509 سرٹیفکیٹ اور ڈیجیٹل دستخط کے ساتھ ServerHello کے ساتھ جواب دیتا ہے۔ کلائنٹ سرٹیفکیٹ اتھارٹی (CA) چین کے ذریعے سرٹیفکیٹ کی تصدیق کرتا ہے، ایک سیشن کلید تیار کرتا ہے اور اسے سرٹیفکیٹ سے سرور کی عوامی کلید کے ساتھ خفیہ کرکے بھیجتا ہے۔ سرور کی تصدیق کے بعد، محفوظ ڈیٹا کی ترسیل شروع ہوتی ہے۔ پورا مصافحہ جدید آلات پر 1–3 ملی سیکنڈ لیتا ہے، جو اسے صارف کے لیے ناقابل تصور بناتا ہے۔
TLS تصدیق کی بنیاد عوامی کلید کا بنیادی ڈھانچہ (PKI) ہے جو X.509 فارمیٹ کے سرٹیفکیٹس پر بنایا گیا ہے۔ ہر سرٹیفکیٹ میں شامل ہے: ایک ڈومین نام (Common Name یا Subject Alternative Name)، سرور کی عوامی کلید، جاری کنندہ کا نام (سرٹیفکیٹ اتھارٹی)، میعاد ختم ہونے کی تاریخ اور CA کا ڈیجیٹل دستخط۔ کلائنٹ اعتماد کے سلسلے کے ذریعے سرور کے سرٹیفکیٹ کی تصدیق کرتا ہے: سرور سرٹیفکیٹ سے روٹ CA تک، جس کا سرٹیفکیٹ آپریٹنگ سسٹم میں شامل ہوتا ہے۔ Android آلات پر، روٹ سرٹیفکیٹ سسٹم کی اسٹور میں محفوظ ہوتے ہیں، جو Google Play Services کے ذریعے اپ ڈیٹ ہوتے ہیں؛ iOS میں — iOS اپ ڈیٹس کے ذریعے۔ اگر سلسلے کی کوئی کڑی ٹوٹ جائے (میعاد ختم شدہ سرٹیفکیٹ، ڈومین کا عدم مماثلت، نامعلوم CA)، کلائنٹ کنکشن ختم کر دیتا ہے۔ خود دستخط شدہ سرٹیفکیٹس (ترقی میں استعمال) کے لیے، واضح اعتماد درکار ہے — Android میں Network Security Config کے ذریعے، iOS میں Info.plist میں NSExceptionDomains کے ذریعے۔ سرٹیفکیٹ چین کی تصدیق کے عمل میں CRL (سرٹیفکیٹ منسوخی کی فہرست) یا OCSP (آن لائن سرٹیفکیٹ اسٹیٹس پروٹوکول) کے ذریعے منسوخی کی حیثیت کی جانچ بھی شامل ہے، اگرچہ موبائل آلات پر کنکشن تیز کرنے کے لیے OCSP درخواستیں اکثر چھوڑ دی جاتی ہیں — یہ سیکیورٹی اور کارکردگی کے درمیان ایک سمجھوتہ ہے جسے معماروں کو مدنظر رکھنا چاہیے۔
اگرچہ SSL اور TLS کی اصطلاحات اکثر ایک دوسرے کے بدلے استعمال ہوتی ہیں، لیکن ان کے درمیان بنیادی تکنیکی فرق ہیں جو موبائل ایپلیکیشنز کی سیکیورٹی اور کارکردگی کو متاثر کرتے ہیں۔
| خصوصیت | SSL 3.0 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|
| ریلیز کا سال | 1996 | 2008 | 2018 |
| حیثیت | متروک (RFC 7568) | فعال (تجویز کردہ) | موجودہ (بہترین) |
| چکر (Round-trips) | 2 | 2 | 1 |
| کلید کے تبادلے کا الگورتھم | RSA | RSA, ECDHE | ECDHE (صرف) |
| مصدقہ خفیہ کاری | نہیں | GCM, CCM | AEAD لازمی |
| مکمل آگے کی رازداری (PFS) | نہیں | اختیاری | لازمی |
TLS 1.3 اور اس کے پیشروؤں کے درمیان بنیادی فرق ECDHE پروٹوکول کے ذریعے مکمل آگے کی رازداری (PFS) کا لازمی استعمال ہے۔ اس کا مطلب ہے کہ اگر حملہ آور سرور کی نجی کلید تک رسائی حاصل کر بھی لے، تو وہ پہلے روکے گئے ٹریفک کو ڈیکرپٹ نہیں کر سکے گا۔ موبائل ایپلیکیشنز کے لیے، جہاں سرور سے سمجھوتہ ایک حقیقی خطرہ ہے، PFS کے ساتھ TLS 1.3 ایک لازمی سیکیورٹی ضرورت ہے۔
SSL اور TLS کے پرانے ورژنز میں اچھی طرح سے دستاویز شدہ کمزوریاں ہیں جو انہیں پروڈکشن میں استعمال کے لیے نااہل بناتی ہیں۔ POODLE (CVE-2014-3566) پیڈنگ اوریکل کے ذریعے SSL 3.0 پر حملہ کرتا ہے، جس سے 256 درخواستوں میں سیشن کوکی کو ڈیکرپٹ کیا جا سکتا ہے۔ BEAST (CVE-2011-3389) پیش قیاسی IV کے ذریعے TLS 1.0 CBC موڈ میں ایک کمزوری کا استحصال کرتا ہے۔ Heartbleed (CVE-2014-0160) — پروٹوکول کی کمزوری نہیں بلکہ OpenSSL کے نفاذ میں ایک بگ ہے جو سرور کی میموری پڑھنے کی اجازت دیتا ہے: Netcraft کے مطابق، 2014 میں 500,000 سے زیادہ سرورز خطرے میں تھے۔ Android 10 (API 29) اور iOS 13 سے شروع کرتے ہوئے، یہ تمام پروٹوکول سسٹم کی سطح پر غیر فعال کر دیے گئے ہیں۔ اس کے باوجود، ڈویلپرز کو چاہیے کہ وہ ایپلیکیشن لانچ کرنے سے پہلے SSL Labs Test (qualys.com) کے ذریعے اپنی سرور کنفیگریشن چیک کریں تاکہ یہ یقینی بنایا جا سکے کہ کوئی متروک سائفر سوٹ موجود نہیں ہے اور TLS 1.3 معاون ہے۔
موبائل ایپلیکیشنز میں، TLS ڈیٹا کو تین سطحوں پر تحفظ فراہم کرتا ہے: مواد کی خفیہ کاری (سرور کے علاوہ کوئی ڈیٹا نہیں پڑھ سکتا)، سالمیت کی تصدیق (ڈیٹا کو منتقلی میں تبدیل نہیں کیا جا سکتا)، اور سرور کی تصدیق (کلائنٹ کو یقین ہے کہ وہ صحیح سرور سے منسلک ہو رہا ہے)۔ تصدیق خاص طور پر اہم ہے: اس کے بغیر، حملہ آور DNS جعل سازی یا جعلی Wi-Fi رسائی پوائنٹ کے ذریعے سرور کا روپ دھار سکتا ہے۔
Google Play Protect (2024) کے ایک مطالعہ کے مطابق، 76% Android ایپلیکیشنز سرٹیفکیٹ کی تصدیق کے ساتھ TLS کو صحیح طریقے سے استعمال کرتی ہیں۔ باقی 24% غلطیاں کرتی ہیں: وہ جانچ کے لیے سرٹیفکیٹ کی تصدیق غیر فعال کر دیتی ہیں (اور پروڈکشن میں دوبارہ فعال کرنا بھول جاتی ہیں)، تصدیق کے بغیر خود دستخط شدہ سرٹیفکیٹ استعمال کرتی ہیں، یا SSL 3.0 اور TLS 1.0 جیسے متروک پروٹوکول کی اجازت دیتی ہیں۔ iOS میں Apple App Transport Security (ATS) 2017 سے کم از کم TLS 1.2 کی ضرورت کرتی ہے، اور iOS 15 سے شروع کرتے ہوئے، یہ تمام نیٹ ورک کی درخواستوں کے لیے ڈیفالٹ طور پر TLS 1.3 استعمال کرتی ہے۔ اضافی تحفظ کے لیے، Certificate Pinning — کسی مخصوص سرور سرٹیفکیٹ سے بائنڈنگ — کو نافذ کرنے کی بھی سفارش کی جاتی ہے۔
آئیے Android میں OkHttp — سب سے مشہور نیٹ ورکنگ لائبریریوں میں سے ایک — استعمال کرتے ہوئے محفوظ HTTPS کنکشن ترتیب دینے کی ایک مثال دیکھتے ہیں۔ صحیح ترتیب میں TLS 1.3 کا استعمال لازمی قرار دینا اور سرٹیفکیٹ کی تصدیق شامل ہے۔
val client = OkHttpClient.Builder()
.connectionSpecs(
listOf(
ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
.tlsVersions(TlsVersion.TLS_1_3, TlsVersion.TLS_1_2)
.cipherSuites(
CipherSuite.TLS_AES_128_GCM_SHA256,
CipherSuite.TLS_AES_256_GCM_SHA384,
CipherSuite.TLS_CHACHA20_POLY1305_SHA256
)
.build()
)
)
.hostnameVerifier { hostname, session ->
SSLSession.DefaultHostnameVerifier.verify(hostname, session)
}
.build()
اس مثال میں، ہم معاون TLS ورژنز کے سیٹ کو صرف 1.3 اور 1.2 تک محدود کرتے ہیں، متروک TLS 1.0/1.1 کو خارج کرتے ہوئے۔ سائفر سوٹ AEAD موڈ اور لازمی مکمل آگے کی رازداری کے ساتھ جدید الگورتھم سے منتخب کیے جاتے ہیں۔ HostnameVerifier چیک کرتا ہے کہ میزبان نام سرٹیفکیٹ سے مماثل ہے۔ iOS میں، اسی طرح کی ترتیب tlsMinimumSupportedProtocolVersion پیرامیٹر کو .TLSv13 پر سیٹ کرکے URLSession کنفیگریشن کے ذریعے کی جاتی ہے۔ مزید برآں، iOS میں tlsMaximumSupportedProtocolVersion سیٹ کیا جا سکتا ہے تاکہ اوپری ورژن کی حد مقرر کی جا سکے — یہ پرانے سرورز کے ساتھ مطابقت کے لیے مفید ہے جو ابھی TLS 1.3 پر منتقل نہیں ہوئے ہیں۔ اس طرح کی ترتیب موبائل ایپلیکیشن میں ڈیٹا کی ترسیل کے لیے زیادہ سے زیادہ سیکیورٹی کی ضمانت دیتی ہے۔
اکثر پوچھے گئے سوالات
TLS پروٹوکول کا ایک نیا اور زیادہ محفوظ ورژن ہے۔ SSL متروک ہے اور اسے استعمال نہیں کرنا چاہیے (RFC 7568)۔ عملی طور پر، دونوں اصطلاحات HTTPS خفیہ کاری کا حوالہ دیتی ہیں، لیکن تکنیکی طور پر تمام جدید نظام TLS 1.2 یا 1.3 کے ذریعے کام کرتے ہیں۔
Burp Suite یا Charles Proxy جیسا پراکسی ٹول انسٹال کریں اور ایپ کے ٹریفک کو روکیں۔ اگر کنکشن HTTPS استعمال کرتا ہے اور سرٹیفکیٹ درست ہے — تو ایپ TLS استعمال کر رہی ہے۔ اگر ٹریفک HTTP پر جاتا ہے — تو کوئی خفیہ کاری نہیں ہے۔
پروڈکشن بلڈ کے لیے صرف TLS 1.2 اور TLS 1.3 کی اجازت ہے۔ پروٹوکول SSL 3.0، TLS 1.0 اور TLS 1.1 کو سرور اور کلائنٹ ایپلیکیشن دونوں پر غیر فعال کرنا چاہیے۔ 2020 سے، بڑے پلیٹ فارمز (Android, iOS, براؤزر) کم از کم TLS 1.2 کی ضرورت کرتے ہیں۔
ہاں، اس کی سفارش کی جاتی ہے۔ TLS سرٹیفکیٹ اتھارٹیز کی ایک زنجیر کے ذریعے سرٹیفکیٹ کی تصدیق کرتا ہے، لیکن اگر کوئی CA سمجھوتہ کر لیا جائے (جیسا کہ 2011 میں DigiNotar کے ساتھ ہوا)، حملہ آور جعلی سرٹیفکیٹ جاری کر سکتا ہے۔ Pinning تصدیق کی ایک اضافی تہہ شامل کرتا ہے۔
TLS 1.3 کنکشن قائم کرنے کے وقت کو 2 چکروں سے کم کرکے 1 کر دیتا ہے، جو پہلے کنکشن پر 30–50% بہتری فراہم کرتا ہے۔ غیر مستحکم کنکشن (میٹرو، ٹرین) والی موبائل ایپلیکیشنز کے لیے، یہ ڈیٹا لوڈنگ کی رفتار کے لیے انتہائی اہم ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں