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 हमलों से सुरक्षा का अभाव, कमज़ोर एन्क्रिप्शन एल्गोरिदम और ट्रंकेशन हमलों की संवेदनशीलता। 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 प्रमाणीकरण का आधार X.509 प्रारूप के प्रमाणपत्रों पर निर्मित पब्लिक की इंफ्रास्ट्रक्चर (PKI) है। प्रत्येक प्रमाणपत्र में शामिल होता है: एक डोमेन नाम (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) | सक्रिय (अनुशंसित) | वर्तमान (सर्वश्रेष्ठ) |
| राउंड-ट्रिप्स | 2 | 2 | 1 |
| कुंजी विनिमय एल्गोरिदम | RSA | RSA, ECDHE | ECDHE (केवल) |
| प्रमाणित एन्क्रिप्शन | नहीं | GCM, CCM | AEAD अनिवार्य |
| परफेक्ट फ़ॉरवर्ड सीक्रेसी | नहीं | वैकल्पिक | अनिवार्य |
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 के साथ हुआ), तो हमलावर नकली प्रमाणपत्र जारी कर सकता है। पिनिंग सत्यापन की एक अतिरिक्त परत जोड़ता है।
TLS 1.3 कनेक्शन स्थापना समय को 2 राउंड-ट्रिप से घटाकर 1 कर देता है, जो पहले कनेक्शन पर 30–50% का लाभ देता है। अस्थिर कनेक्शन (मेट्रो, ट्रेन) वाले मोबाइल एप्लिकेशन के लिए, यह डेटा लोडिंग गति के लिए अत्यंत महत्वपूर्ण है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें