SSL/TLS: کلیدی تصورات اور ڈیولپمنٹ میں پروٹوکول

مصنف: IT Sectr اشاعت: 2026-03-09 مطالعے کا وقت: 9 منٹ

SSL/TLS خفیہ‌نگاری کے پروٹوکول ہیں جو موبائل ایپلیکیشن اور سرور کے درمیان ڈیٹا کو خفیہ کرتے ہیں، ٹریفک کی رازداری اور سالمیت کو یقینی بناتے ہیں۔ Apple (2026) کے مطابق، App Transport Security تمام iOS آلات پر ڈیفالٹ طور پر TLS 1.2 سے نیچے کے کنکشنز کو بلاک کرتا ہے۔ TLS 1.3 TLS 1.2 کے مقابلے میں مصافحہ کے وقت کو 2 گنا کم کرتا ہے، موبائل ایپلیکیشنز کے UX کو بہتر بناتا ہے۔

اہم نکات

  • TLS ایک جدید خفیہ‌نگاری پروٹوکول ہے، بہتر تحفظ کے ساتھ فرسودہ SSL کا جانشین۔
  • TLS 1.3 TLS 1.2 میں 2 RTT کے مقابلے میں 1 RTT میں مصافحہ کرتا ہے، لوڈنگ کو تیز کرتا ہے۔
  • App Transport Security Apple کا طریقہ کار ہے جو iOS پر TLS 1.2+ کے ساتھ HTTPS کی ضرورت ہے۔
  • Network Security Config XML ترتیب کے ذریعے Android کے لیے HTTPS سیٹنگ ہے۔
  • Certificate Pinning کوڈ میں سرٹیفکیٹ کے فنگر پرنٹ کو پن کرکے MitM حملوں سے تحفظ فراہم کرتا ہے۔

SSL/TLS کیا ہے؟

SSL (سیکیور ساکٹس لیئر) اور TLS (ٹرانسپورٹ لیئر سیکیورٹی) خفیہ‌نگاری کے پروٹوکول ہیں جو نیٹ ورک پر ڈیٹا کی محفوظ ترسیل کو یقینی بناتے ہیں۔ SSL، جو 1990 کی دہائی میں Netscape نے تیار کیا تھا، POODLE اور BEAST کمزوریوں کی وجہ سے ورژن 3.0 کے بعد فرسودہ سمجھا جاتا ہے۔ TLS، اس کا جانشین، ورژن 1.0، 1.1، 1.2 اور 1.3 سے گزرا ہے — صرف TLS 1.2 اور TLS 1.3 موجودہ سمجھے جاتے ہیں۔ تمام جدید موبائل پلیٹ فارم نیٹ ورک کنکشن کے لیے TLS کی ضرورت ہے، اور App Store اور Google Play جائزہ کے دوران اس کی جانچ کرتے ہیں۔

موبائل ایپلیکیشنز کے لیے TLS کیوں

TLS کے بغیر، ایپلیکیشن اور سرور کے درمیان ٹریفک صاف متن میں منتقل ہوتی ہے — اسی Wi-Fi نیٹ ورک پر کوئی بھی شخص Wireshark یا tcpdump کا استعمال کرکے لاگ ان، پاس ورڈ، ٹوکن اور صارفین کے ذاتی ڈیٹا کو روک سکتا ہے۔ TLS تمام منتقل شدہ ڈیٹا کو خفیہ کرتا ہے (ٹرانسپورٹ لیئر خفیہ‌نگاری) اور X.509 سرٹیفکیٹس کی زنجیر کے ذریعے سرور کی صداقت کی تصدیق کرتا ہے۔ IETF (2018) کے مطابق، TLS 1.3 صرف جدید AEAD سائفر (AES-GCM، ChaCha20-Poly1305) استعمال کرتا ہے، RC4 اور 3DES جیسے فرسودہ الگورتھم کو خارج کرتے ہوئے۔

HTTPS اور TLS

HTTPS (HTTP سیکیور) TLS کے اوپر HTTP ہے۔ جب کوئی موبائل ایپلیکیشن https:// کے ذریعے درخواست کرتی ہے، تو یہ پہلے سرور کے ساتھ TLS کنکشن قائم کرتی ہے، پھر خفیہ کردہ چینل کے ذریعے HTTP ہیڈر اور درخواست کا باڈی منتقل کرتی ہے۔ HTTPS کے بغیر، کوئی بھی سنجیدہ API کام نہیں کرنا چاہیے — یہ بنیادی تحفظ کی صفائی ہے۔ OWASP (2026) کے مطابق، غیر محفوظ کنکشن موبائل ایپلیکیشنز کی سرفہرست 3 کمزوریوں میں شامل ہیں۔

TLS مصافحہ کیسے کام کرتا ہے

TLS مصافحہ کلائنٹ اور سرور کے درمیان محفوظ کنکشن قائم کرنے کا عمل ہے۔ فریقین پروٹوکول ورژن پر گفت و شنید کرتے ہیں، سائفر سوٹ منتخب کرتے ہیں، غیر متناسب خفیہ‌نگاری کے ذریعے چابیاں کا تبادلہ کرتے ہیں، اور سرٹیفکیٹس کی تصدیق کرتے ہیں۔ TLS 1.2 میں، مصافحہ کے لیے 2 راؤنڈ ٹرپ ٹائم (2 RTT) درکار ہے: کلائنٹ → سرور ClientHello کے ساتھ، سرور → کلائنٹ ServerHello اور Certificate کے ساتھ، پھر حتمی Finished پیغامات۔ TLS 1.3 اس عمل کو 1 RTT تک کم کرتا ہے۔

TLS 1.2 مصافحہ کے تفصیلی مراحل

پہلا مرحلہ: ClientHello — کلائنٹ معاون TLS ورژن، سائفر سوٹ کی فہرست اور ایک بے ترتیب نمبر بھیجتا ہے۔ سرور ServerHello کے ساتھ جواب دیتا ہے، ایک ورژن اور سائفر سوٹ منتخب کرتا ہے، اپنا X.509 سرٹیفکیٹ (Certificate) اور ServerHelloDone پیغام بھیجتا ہے۔ کلائنٹ قابل اعتماد سرٹیفکیٹ اتھارٹیز (CA) کی زنجیر کے ذریعے سرٹیفکیٹ کی تصدیق کرتا ہے، ایک پری ماسٹر سیکرٹ (pre-master secret) تیار کرتا ہے، اسے سرٹیفکیٹ سے عوامی چابی سے خفیہ کرتا ہے اور ClientKeyExchange میں سرور کو بھیجتا ہے۔ اس کے بعد، دونوں فریق سیشن چابیاں تیار کرتے ہیں اور ChangeCipherSpec اور Finished پیغامات کا تبادلہ کرتے ہیں۔ اس مقام سے، تمام ڈیٹا ہم آہنگی سے خفیہ کیا جاتا ہے۔

swift
import Security

let url = URL(string: "https://api.example.com")!
let session = URLSession(configuration: .default,
                           delegate: self,
                           delegateQueue: nil)

func urlSession(
    _ session: URLSession,
    didReceive challenge: URLAuthenticationChallenge,
    completionHandler: @escaping (URLSession.AuthChallengeDisposition,
                                    URLCredential?) -> Void
) {
    let trust = challenge.protectionSpace.serverTrust
    guard let trust else {
        completionHandler(.cancelAuthenticationChallenge, nil)
        return
    }
    completionHandler(.useCredential, URLCredential(trust: trust))
}

URLSessionDelegate کے ذریعے iOS پر URLAuthenticationChallenge کو ہینڈل کرنے کی مثال۔ یہ طریقہ ہر TLS مصافحہ کے دوران کال کیا جاتا ہے، جس سے ایپلیکیشن سرور سرٹیفکیٹ کی حسب ضرورت تصدیق کر سکتی ہے۔ پروڈکشن استعمال کے لیے، SecTrustEvaluateWithError کے ذریعے سرٹیفکیٹ کی تصدیق شامل کریں اور پہلے سے محفوظ کردہ فنگر پرنٹ سے موازنہ کریں — اس کے بعد ہی useCredential کال کریں۔

TLS 1.2 بمقابلہ TLS 1.3

TLS 1.3 (RFC 8446, 2018) 10 سالوں میں پہلی بڑی پروٹوکول اپ ڈیٹ ہے۔ اہم بہتری: مصافحہ 1 RTT تک کم (دوبارہ کنکشن کے لیے 0 RTT)، فرسودہ سائفر سوٹ ہٹا دیے گئے (RSA چابی کا تبادلہ، CBC موڈ)، لازمی پرفیکٹ فارورڈ سیکریسی (PFS)، اور signed transcript کے ذریعے ڈاؤن گریڈ حملوں سے تحفظ۔ Qualys SSL Labs (2026) کے مطابق، TLS 1.3 PFS کی بدولت طویل مدتی سرور چابی سے سمجھوتہ ہونے پر بھی تحفظ فراہم کرتا ہے۔

خصوصیتTLS 1.2TLS 1.3
مصافحہ2 RTT (مکمل)1 RTT (PSK کے ساتھ 0 RTT)
سائفر سوٹ30+ امتزاج (RSA, DH, ECDH)5 AEAD سوٹ (AES-GCM, ChaCha20)
فارورڈ سیکریسیاختیاری (DHE, ECDHE)لازمی (تمام سوٹ)
iOS سپورٹiOS 5+iOS 12+
Android سپورٹAndroid 4.0+Android 10+
فرسودہ الگورتھمRSA, CBC, RC4, 3DESمکمل طور پر ہٹا دیے گئے

0-RTT (صفر راؤنڈ ٹرپ ٹائم) TLS 1.3 کی ایک خصوصیت ہے جو کلائنٹ کو PSK (پری شیئرڈ کی) کے ذریعے دوبارہ کنکشن کے دوران ClientHello کے ساتھ فوری طور پر ڈیٹا بھیجنے کی اجازت دیتی ہے۔ یہ موبائل ایپلیکیشنز میں بعد کی اسکرینوں کی لوڈنگ کو تیز کرتا ہے، خاص طور پر ایک ہی سرور پر بار بار درخواستوں کے ساتھ۔ تاہم، 0-RTT ڈیٹا ری پلے حملوں سے محفوظ نہیں ہے — اسے روکا اور دوبارہ بھیجا جا سکتا ہے۔ 0-RTT صرف idempotent درخواستوں (GET, PUT) کے لیے استعمال کریں جن کے کوئی ضمنی اثرات نہ ہوں۔

iOS پر TLS: App Transport Security

App Transport Security (ATS) Apple کا طریقہ کار ہے جو TLS 1.2 یا اس سے اوپر کے ساتھ HTTPS کنکشن کی ضرورت ہے، iOS 9 سے ڈیفالٹ طور پر فعال ہے۔ ATS تمام HTTP کنکشنز اور TLS 1.2 سے نیچے کے HTTPS کو بلاک کرتا ہے۔ ڈیولپر مخصوص ڈومینز کے لیے NSAppTransportSecurity کے ذریعے Info.plist میں مستثنیات ترتیب دے سکتا ہے، لیکن Apple مستثنیات کو کم سے کم رکھنے اور ہر جگہ HTTPS استعمال کرنے کی سفارش کرتا ہے۔ ATS کی ضروریات کی خلاف ورزی App Store کے جائزے میں ایپلیکیشن کو مسترد کرنے کا سبب ہے۔

xml
<!-- Info.plist — App Transport Security -->
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>cdn.example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <false/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
        </dict>
    </dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>

Info.plist میں ATS ترتیب۔ NSAllowsArbitraryLoads false پر سیٹ ہے — تمام کنکشنز کو HTTPS استعمال کرنا چاہیے۔ ڈومین cdn.example.com کے لیے، کم از کم TLS ورژن 1.2 مقرر کیا گیا ہے، NSAllowsLocalNetworking=true مقامی نیٹ ورک کے لیے HTTP کی اجازت دیتا ہے (ڈیولپمنٹ سرورز کے لیے مفید)۔ Apple NSExceptionDomains کے بغیر NSAllowsArbitraryLoads کو فعال نہ کرنے کی سختی سے سفارش کرتا ہے — یہ ایک عمومی قاعدہ نہیں بلکہ ایک استثناء ہونا چاہیے۔

Android پر TLS: Network Security Config

Network Security Config Java/Kotlin کوڈ کو تبدیل کیے بغیر HTTPS اور TLS کو ترتیب دینے کا Android طریقہ کار ہے۔ ترتیب network_security_config.xml فائل میں مخصوص کی جاتی ہے اور android:networkSecurityConfig وصف کے ذریعے AndroidManifest میں منسلک کی جاتی ہے۔ قابل اعتماد سرٹیفکیٹس (صارف اور سسٹم CA)، Certificate Pinning، صاف متن HTTP کو غیر فعال کرنا، ڈیبگ اوور رائڈز اور ٹریفک ری ڈائریکشن کی ترتیب کو سپورٹ کرتا ہے۔

xml
<!-- res/xml/network_security_config.xml -->
<network-security-config>
    <base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">api.example.com</domain>
        <pin-set expiration="2027-01-01">
            <pin digest="SHA-256">
                47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
            </pin>
        </pin-set>
    </domain-config>
</network-security-config>

Android کے لیے Network Security Config۔ Base-config صاف متن ٹریفک کو بلاک کرتا ہے اور صرف سسٹم CA سرٹیفکیٹس پر بھروسہ کرتا ہے (کوئی صارف سرٹیفکیٹ نہیں — صارفین کی طرف سے MitM سرٹیفکیٹ انسٹالیشن سے تحفظ)۔ api.example.com کے لیے Domain-config میں SHA-256 سرٹیفکیٹ فنگر پرنٹ کے ساتھ pin-set ہے۔ اگر سرور سرٹیفکیٹ مخصوص میعاد ختم ہونے کی تاریخ سے پہلے تبدیل ہوتا ہے، تو کنکشن مسترد کر دیا جائے گا — یہ Certificate Pinning کی ایک سخت شکل ہے۔

Certificate Pinning اور تحفظ

Certificate Pinning ایپلیکیشن کوڈ میں سرور کے سرٹیفکیٹ یا عوامی چابی کو فکس کرنے کی ایک تکنیک ہے۔ ہر TLS مصافحہ کے دوران، کلائنٹ سرور سرٹیفکیٹ کا پہلے سے محفوظ کردہ فنگر پرنٹ (SHA-256 ہیش) سے موازنہ کرتا ہے۔ یہاں تک کہ اگر حملہ آور قابل اعتماد CA سرٹیفکیٹ حاصل کر لے یا سرٹیفکیٹ اتھارٹی سے سمجھوتہ کر لے، وہ MitM حملہ نہیں کر سکتا — ایپلیکیشن CA چین نہیں، بلکہ مخصوص فنگر پرنٹ چیک کرتی ہے۔ یہ خاص طور پر مالیاتی ایپلیکیشنز اور حساس ڈیٹا سے نمٹنے والی ایپس کے لیے اہم ہے۔

Pinning کے خطرات اور متبادل

Certificate Pinning میں احتیاط کی ضرورت ہے: جب سرور سرٹیفکیٹ تبدیل ہوتا ہے، ایپلیکیشن کے تمام پرانے ورژن کنیکٹ ہونا بند کر دیں گے۔ ایک سے زیادہ بیک اپ فنگر پرنٹس (بنیادی + بیک اپ) ذخیرہ کرنے، pin-set کی میعاد ختم ہونے کی تاریخ مخصوص کرنے اور معیاری CA تصدیق کے ذریعے فال بیک میکانزم لاگو کرنے کی سفارش کی جاتی ہے۔ ایک متبادل ٹرسٹ آن فرسٹ یوز (TOFU) ہے، جہاں ایپلیکیشن پہلے کنکشن پر سرٹیفکیٹ یاد رکھتی ہے اور تبدیل ہونے پر صارف کو خبردار کرتی ہے۔ OWASP (2026) کے مطابق، Certificate Pinning کی عدم موجودگی موبائل ایپلیکیشنز کی سرفہرست 3 کمزوریوں (M3: غیر محفوظ مواصلات) میں شامل ہے۔

Alamofire میں Pinning کا نفاذ

Alamofire 5+ میں، Certificate Pinning ServerTrustManager کے ساتھ PinnedCertificatesTrustEvaluator (مکمل سرٹیفکیٹ چیک) یا PublicKeysTrustEvaluator (صرف عوامی چابی) کے ذریعے ترتیب دیا جاتا ہے۔ عوامی چابی ترجیحی ہے — یہ اسی CA کے ساتھ سرٹیفکیٹ کی تجدید پر تبدیل نہیں ہوتی۔ [host: evaluator] لغت کے ساتھ ServerTrustManager بنائیں، اسے Session میں پاس کریں، اور تمام API درخواستوں کے لیے اس کا استعمال کریں۔

اکثر پوچھے گئے سوالات

SSL اور TLS میں کیا فرق ہے؟

SSL ایک فرسودہ پروٹوکول ہے (ورژن 2.0 اور 3.0)، جو POODLE اور BEAST کمزوریوں کی وجہ سے غیر محفوظ سمجھا جاتا ہے۔ TLS اس کا جانشین ہے، جو TLS 1.0 (RFC 2246, 1999) سے شروع ہوتا ہے۔ کوئی بھی جدید “SSL سرٹیفکیٹ” ایک X.509 سرٹیفکیٹ ہے جو TLS پروٹوکول استعمال کرتا ہے۔ SSL 3.0 تمام جدید آپریٹنگ سسٹمز اور براؤزرز میں ممنوع ہے۔

Apple HTTP کنکشنز کیوں بلاک کرتا ہے؟

App Transport Security Apple کی ایپلیکیشنز کے لیے تحفظ کی ضرورت ہے۔ HTTP ڈیٹا کو صاف متن میں منتقل کرتا ہے، جس سے عوامی Wi-Fi نیٹ ورکس پر ٹوکن اور صارفین کے ذاتی ڈیٹا کو روکا جا سکتا ہے۔ ATS ڈیفالٹ طور پر HTTP اور TLS 1.2 سے نیچے کے HTTPS کو بلاک کرتا ہے، ڈیولپر کی مداخلت کے بغیر بھی صارفین کی حفاظت کرتا ہے۔

کیسے چیک کریں کہ سرور TLS 1.3 کو سپورٹ کرتا ہے؟

SSL Labs (ssllabs.com/ssltest) یا کمانڈ لائن استعمال کریں: openssl s_client -tls1_3 -connect example.com:443۔ زیادہ تر کلاؤڈ پلیٹ فارمز (AWS CloudFront, Cloudflare, Nginx 1.19+, Caddy) پر TLS 1.3 ڈیفالٹ طور پر فعال ہے۔ Android 10+ پر، سپورٹ سسٹم Conscrypt فراہم کنندہ میں شامل ہے۔

خود دستخط شدہ سرٹیفکیٹ کیا ہے اور کیا یہ پروڈکشن میں استعمال کیا جا سکتا ہے؟

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

Alamofire میں Pinning کیسے ترتیب دیا جائے؟

ServerTrustManager کو PinnedCertificatesTrustEvaluator یا PublicKeysTrustEvaluator کے ساتھ بنائیں۔ پہلا مکمل سرٹیفکیٹ چیک کرتا ہے، دوسرا — صرف عوامی چابی (ترجیحی)۔ مینیجر کو Session(configuration: serverTrustManager:) میں پاس کریں اور تمام API درخواستوں کے لیے سیشن استعمال کریں۔

خلاصہ

  • TLS ایک جدید خفیہ‌نگاری پروٹوکول ہے، فرسودہ SSL کا جانشین، تمام موبائل ایپلیکیشنز کے لیے لازمی ہے۔
  • TLS 1.3 1 RTT میں مصافحہ کرتا ہے (TLS 1.2 سے 2 گنا تیز) لازمی فارورڈ سیکریسی اور صرف AEAD سائفر کے ساتھ۔
  • App Transport Security (iOS) iOS 9+ والے تمام Apple آلات پر HTTP اور TLS 1.2 سے نیچے کو خودکار طور پر بلاک کرتا ہے۔
  • Network Security Config (Android) کوڈ میں تبدیلی کے بغیر XML کے ذریعے HTTPS، Certificate Pinning اور صاف متن کی پابندیاں ترتیب دیتا ہے۔
  • Certificate Pinning Network Security Config یا ServerTrustManager میں SHA-256 سرٹیفکیٹ فنگر پرنٹ پن کرکے MitM حملوں سے تحفظ فراہم کرتا ہے۔
  • TLS 1.3 5 AEAD سائفر سوٹ استعمال کرتا ہے، فرسودہ RSA چابی کے تبادلے اور CBC خفیہ‌نگاری موڈز کو خارج کرتے ہوئے۔
  • TLS ترتیب اشاعت کا ایک لازمی مرحلہ ہے: App Store ATS چیک کرتا ہے، Google Play Network Security Config کے ذریعے صاف متن ٹریفک چیک کرتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں