Conscrypt मॉड्यूल, ओटीए अपडेट पर निर्भर किए बिना, डिवाइस की सुरक्षा को बेहतर बनाता है और सुरक्षा से जुड़े सुधारों को तेज़ करता है. यह Android TLS को लागू करने के लिए, Java कोड और उसकी खास लाइब्रेरी का इस्तेमाल करता है. साथ ही, यह Android क्रिप्टोग्राफ़िक फ़ंक्शन की एक बड़ी संख्या, जैसे कि की जनरेटर, साइफ़र, और मैसेज डाइजेस्ट भी देता है. Conscrypt, ओपन सोर्स लाइब्रेरी के तौर पर उपलब्ध है. हालांकि, Android प्लैटफ़ॉर्म में शामिल होने पर, इसमें कुछ खास विशेषताएं होती हैं.
Conscrypt मॉड्यूल, BoringSSL का इस्तेमाल करता है. यह एक नेटिव लाइब्रेरी है, जो OpenSSL का Google फ़ॉर्क है. इसका इस्तेमाल, क्रिप्टोग्राफ़ी और टीएलएस (खास तौर पर Google Chrome) के लिए, Google के कई प्रॉडक्ट में किया जाता है. साथ ही, इसका इस्तेमाल Conscrypt कोड (Java और नेटिव, दोनों कोड) के साथ किया जाता है. BoringSSL की कोई आधिकारिक रिलीज़ नहीं होती. सभी उपयोगकर्ता, इसे हेड से बिल्ड करते हैं. साथ ही, यह एपीआई या एबीआई के स्थिर होने के बारे में कोई गारंटी नहीं देता.
Android 15 में हुए बदलाव
Android 15, TLS के 1.0 और 1.1 वर्शन के इस्तेमाल पर पाबंदी लगाता है. इन वर्शन को Android में पहले ही बंद कर दिया गया था. हालांकि, अब Android 15 को टारगेट करने वाले ऐप्लिकेशन के लिए, इनका इस्तेमाल करने की अनुमति नहीं है.
Android 14 में किए गए बदलाव
Android 14 में, Conscrypt में अपडेट किया जा सकने वाला रूट ट्रस्ट स्टोर जोड़ा गया है. सीए सर्टिफ़िकेट (या सर्टिफ़िकेट), Android और इंटरनेट पर इस्तेमाल की जाने वाली सार्वजनिक कुंजियों के लिए भरोसे की नींव देते हैं. इन सर्टिफ़िकेट की नियमित तौर पर जांच की जाती है, ताकि यह पक्का किया जा सके कि क्रिप्टोग्राफ़िक हस्ताक्षर सही तरीके से किया जा रहा है. इसलिए, सर्टिफ़िकेट देने और उन सभी डिवाइसों पर सेव करने की ज़रूरत है जो इन सर्टिफ़िकेट पर निर्भर करते हैं.
Mainline से पहले, Android सर्टिफ़िकेट को सिस्टम पार्टीशन (system/ca-certificates
में) में सेव करता था और हर Android रिलीज़ के साथ उन्हें अपडेट करता था. अब मेनलाइन की मदद से, मेनलाइन ट्रेन के अपडेट का इस्तेमाल करके सर्टिफ़िकेट को ज़्यादा बार अपडेट किया जा सकता है. इस नई सुविधा से, अपडेट करने की प्रोसेस को आसान बनाया जा सकेगा. साथ ही, इससे समस्याओं को हल करने में कम समय लगेगा और डिवाइस की लाइफ़ भी बढ़ेगी.
Android 14 और इसके बाद के वर्शन में, भरोसेमंद रूट सर्टिफ़िकेट, Conscrypt
मॉड्यूल APEX और सिस्टम पार्टीशन में सेव किए जाते हैं. ऐप्लिकेशन अब भी अपने सर्टिफ़िकेट चुन सकते हैं और NetworkSecurityConfig
का इस्तेमाल करके
सर्टिफ़िकेट के व्यवहार में बदलाव कर सकते हैं.
Android 14 में, Conscrypt मॉड्यूल में ये अन्य बदलाव भी शामिल हैं:
- AES-CMAC MAC लागू करने की सुविधा जोड़ी गई.
- `PBEwithHmacSHA2-*` MAC को लागू करने की प्रोसेस को हटाया गया और अब काम नहीं करता.
- X25519 कुंजियों, की-एग्रीमेंट, और हस्ताक्षरों के लिए सीमित सहायता जोड़ी गई है.
- X.509 के सही होने के लिए बोरिंगएसएसएल को अपडेट किया गया.
- सार्वजनिक CertPath API में, MD5 से हस्ताक्षर किए गए सर्टिफ़िकेट के लिए सहायता बंद कर दी गई है. एपीआई लेवल 16 के बाद से, ऐसे सर्टिफ़िकेट को TLS कनेक्शन के लिए स्वीकार नहीं किया गया है.
Android 10 में हुए बदलाव
Android 9 में, Conscrypt के लिए Android के हिसाब से बनाया गया कोई सार्वजनिक एपीआई शामिल नहीं है. इसके बजाय, इसमें सुरक्षा देने वाली ऐसी सेवा का इस्तेमाल किया जाता है जो Java Cryptography Architecture (JCA) के लिए स्टैंडर्ड क्लास लागू करती है. इनमें Cipher और MessageDigest के साथ-साथ, SSLSocket और SSLEngine के साथ Java Secure Socket Extension (JSSE) भी शामिल है.
उपयोगकर्ता उन क्लास के साथ इंटरैक्ट करते हैं और कुछ ऐसे Conscrypt API का इस्तेमाल libcore
या फ़्रेमवर्क कोड करता है जो सार्वजनिक नहीं हैं.
Android 10 में android.net.ssl
में कुछ सार्वजनिक एपीआई तरीके जोड़े गए हैं. इनकी मदद से, javax.net.ssl
में मौजूद क्लास से, Conscrypt की ऐसी सुविधाएं ऐक्सेस की जा सकती हैं जो क्लास से ऐक्सेस नहीं की जा सकतीं. Android
10 में, Bouncy Castle की एक छोटी कॉपी भी शामिल है. इससे, Android Runtime के हिस्से के तौर पर कम लोकप्रिय क्रिप्टोग्राफ़िक टूल उपलब्ध कराए जा सकते हैं. यह कॉपी, Conscrypt मॉड्यूल में शामिल नहीं है.
फ़ॉर्मैट और डिपेंडेंसी
Conscrypt मॉड्यूल (com.android.conscrypt
) को APEX फ़ाइल के तौर पर डिस्ट्रिब्यूट किया जाता है. इसमें Conscrypt Java कोड और Conscrypt नेटिव लाइब्रेरी शामिल होती है, जो liblog
जैसी Android NDK लाइब्रेरी से डाइनैमिक तौर पर लिंक होती है. नेटिव लाइब्रेरी में BoringSSL की एक कॉपी भी शामिल होती है, जिसकी पुष्टि NIST के Cryptographic Module Validation Program (CMVP) के ज़रिए की गई है (सर्टिफ़िकेट #3753).
Conscrypt मॉड्यूल, ये एपीआई एक्सपोज़र करता है:
- सार्वजनिक एपीआई,
java.*
औरjavax.*
के तहत आने वाले पैकेज में क्लास और इंटरफ़ेस के एक्सटेंशन हैं. साथ ही, येandroid.net.ssl.*
के तहत आने वाली क्लास के एक्सटेंशन भी हैं. बाहरी ऐप्लिकेशन कोड, सीधे तौर पर Conscrypt को कॉल नहीं करता. प्लैटफ़ॉर्म एपीआई के स्टैंडर्ड यह पक्का करते हैं कि ये एपीआई, पुराने और नए सिस्टम के साथ काम करते रहें. - कोर प्लैटफ़ॉर्म एपीआई, छिपे हुए एपीआई होते हैं. फ़्रेमवर्क इनका इस्तेमाल, सार्वजनिक नहीं होने वाले फ़ंक्शन को ऐक्सेस करने के लिए करता है. इनका इस्तेमाल कम किया जाता है. सबसे ज़्यादा इस्तेमाल करने वाला
NetworkSecurityConfig
है. यह नेटवर्क सुरक्षा कॉन्फ़िगरेशन की सुविधा को लागू करने के लिए, Conscrypt ट्रस्ट मैनेजर (सर्टिफ़िकेट की पुष्टि करने वाला कॉम्पोनेंट) को बढ़ाता है. - इंट्रा-कोर एपीआई, ज़ीरो-आर्ग्युमेंट कंस्ट्रक्टर तक सीमित होते हैं, जिन्हें JCA और JSE मशीनी रिफ़्लेक्टिव तरीके से कॉल करते हैं.