सुरक्षा में सुधार के लिए Google रस्ट में Android के कुछ हिस्सों का विकास कर रहा है

Google समग्र रूप से OS की सुरक्षा में सुधार करने के लिए, C और C++ के मुकाबले, एंड्रॉइड के कुछ हिस्सों को रस्ट में लिख रहा है और फिर से लिख रहा है। अधिक जानने के लिए पढ़े!

संपूर्ण OS समाधान के रूप में Android में बहुत सारे गतिशील भाग शामिल होते हैं। मोटे तौर पर कहें तो, ये भाग ऐप इकोसिस्टम और फिर ओएस ही हैं। एक डेवलपर के रूप में, आपकी पसंद की प्रोग्रामिंग भाषा इस बात पर निर्भर करती है कि आप एंड्रॉइड के किस भाग पर काम कर रहे हैं। ऐप डेवलपर्स के लिए, जावा और कोटलिन लोकप्रिय विकल्प हैं। OS और इसके निचले स्तरों पर काम करने वाले डेवलपर्स के लिए, C और C++ अब तक लोकप्रिय विकल्प रहे हैं। आज, Google OS डेवलपर्स के लिए एक तीसरा विकल्प जोड़ रहा है, क्योंकि Android ओपन सोर्स प्रोजेक्ट अब OS विकसित करने के लिए रस्ट प्रोग्रामिंग भाषा का समर्थन करता है।

C और C++ की सीमाएँ

Android OS के निचले स्तरों के लिए C और C++ जैसी सिस्टम प्रोग्रामिंग भाषाओं की आवश्यकता होती है। ये भाषाएँ डेवलपर्स को नियंत्रण और पूर्वानुमेयता प्रदान करती हैं, जो निम्न-स्तरीय सिस्टम संसाधनों और हार्डवेयर तक पहुँचने के लिए महत्वपूर्ण है।

दुर्भाग्य से, C और C++ मेमोरी सुरक्षा गारंटी प्रदान करने में विफल रहते हैं, जिससे उनमें बग और सुरक्षा कमजोरियाँ होने का खतरा होता है। डेवलपर इन भाषाओं पर मेमोरी जीवनकाल के प्रबंधन के लिए जिम्मेदार है, लेकिन जटिल और बहु-थ्रेडेड कोडबेस में, यह कहना जितना आसान है, करना उतना ही आसान है।

C और C++ मिलकर एंड्रॉइड प्लेटफ़ॉर्म पर कोड की लाखों लाइनें बनाते हैं। ये मेमोरी सुरक्षा बग कोड की ग़लती का सबसे कठिन-से-पता लगाने वाला स्रोत बन जाते हैं, जो एंड्रॉइड की ~70% उच्च गंभीरता वाली सुरक्षा कमजोरियों का प्रतिनिधित्व करते हैं। समस्या से निपटने के लिए केवल इन बगों को ठीक करना अपर्याप्त हो जाता है, और बेहतर तरीका यह होगा कि सबसे पहले उन्हें रोका जाए।

मेमोरी सुरक्षा गारंटी की कमी डेवलपर्स को एंड्रॉइड प्रक्रियाओं को सख्ती से प्रतिबंधित और विशेषाधिकार रहित सैंडबॉक्स के भीतर चलाने के लिए मजबूर करती है। लेकिन सैंडबॉक्स संसाधनों पर महंगे हैं, अतिरिक्त ओवरहेड लेते हैं और विलंबता लाते हैं। सैंडबॉक्सिंग भी कोड की कमजोरियों को पूरी तरह से समाप्त नहीं करती है, और उच्च बग घनत्व के कारण इसकी प्रभावकारिता कम हो जाती है, जिससे हमलावरों को कई कमजोरियों की श्रृंखला बनाने की अनुमति मिलती है।

एक और सीमा, हालांकि C और C++ के लिए अद्वितीय नहीं है, लेकिन सभी मेमोरी सुरक्षा मुद्दों पर लागू होती है, वह यह है कि पता लगाने के लिए गलत स्थिति को वास्तव में इंस्ट्रूमेंटेड कोड में ट्रिगर किया जाना चाहिए। इसलिए भले ही आपके कोड का उत्कृष्ट परीक्षण हो, वास्तविक बग का पता नहीं चल सकता है। और जब बग पाए जाते हैं, तो उन्हें ठीक करना एक और काम है, जिसमें एक लंबी और महंगी प्रक्रिया शामिल होती है, जिससे हमेशा सही समाधान नहीं हो पाता है। इस प्रकार, बग का पता लगाना अविश्वसनीय हो जाता है, और इन सीमाओं को ध्यान में रखते हुए बग की रोकथाम ही बेहतर तरीका है।

यह वह जगह है जहां रस्ट जैसी मेमोरी-सुरक्षित भाषा पर स्विच तस्वीर में आता है।

जंग और उसके फायदे

रस्ट ऑब्जेक्ट जीवनकाल/स्वामित्व को लागू करने के लिए संकलन-समय जांच के संयोजन का उपयोग करके मेमोरी सुरक्षा गारंटी प्रदान करता है, और यह सुनिश्चित करने के लिए रनटाइम जांच करता है कि मेमोरी एक्सेस वैध है। यह सुरक्षा C और C++ के समकक्ष प्रदर्शन प्रदान करते हुए हासिल की जाती है। जंग सैंडबॉक्सिंग की आवश्यकता को भी कम कर देती है, जिससे डेवलपर्स को नए फीचर्स पेश करने के लिए अधिक जगह मिलती है जो संसाधनों पर सुरक्षित और हल्के होते हैं।

हालाँकि रस्ट के अपने फायदे हैं, लेकिन पूरे एंड्रॉइड ओएस को रातोंरात रस्ट में बदलना संभव नहीं है। और इसकी आवश्यकता भी नहीं हो सकती है, क्योंकि एंड्रॉइड के अधिकांश मेमोरी बग नए या हाल ही में संशोधित कोड में होते हैं, जिनमें से लगभग 50% एक वर्ष से भी कम पुराने होते हैं। Google का मानना ​​है कि उसके मेमोरी-सुरक्षित भाषा प्रयास परिपक्व C और C++ कोड को फिर से लिखने के बजाय नए विकास पर केंद्रित हैं।

रस्ट भी बग का पता लगाने पर अधिक ध्यान देने के बजाय बग को रोकने पर ध्यान केंद्रित करता है, जिसके परिणामस्वरूप कोड की शुद्धता में सुधार होता है। इसमें कई प्रमुख विशेषताएं हैं, जैसे मेमोरी सुरक्षा, डेटा समवर्ती, अधिक अभिव्यंजक प्रकार की प्रणालियाँ, अपरिवर्तनीय डिफ़ॉल्ट रूप से संदर्भ और चर, सुरक्षित पूर्णांक प्रबंधन, मानक पुस्तकालयों में बेहतर त्रुटि प्रबंधन, और बहुत कुछ अधिक।

एंड्रॉइड के लिए रस्ट पर स्विच करने का क्या मतलब है?

Google का कहना है कि वह पिछले 18 महीनों से एंड्रॉइड ओपन सोर्स प्रोजेक्ट में रस्ट सपोर्ट जोड़ रहा है। लेकिन एंड्रॉइड प्लेटफ़ॉर्म पर एक नई भाषा जोड़ना एक बहुत बड़ा काम है। कुछ टूलचेन और निर्भरता को बनाए रखने की आवश्यकता है, परीक्षण बुनियादी ढांचे और टूलींग को अद्यतन किया जाना चाहिए, और डेवलपर्स को प्रशिक्षित करने की आवश्यकता है।

Google के पास कुछ प्रारंभिक अपनाने वाली परियोजनाएं हैं जिन्हें वे आने वाले महीनों में साझा करेंगे। लेकिन फिर भी, यह स्पष्ट किया जा रहा है कि अधिक ओएस के लिए रस्ट समर्थन बढ़ाना एक बहु-वर्षीय परियोजना है।

हम जो देख सकते हैं, Google पहले से ही कुछ स्थानों पर रस्ट का उपयोग कर रहा है। एंड्रॉइड का नया ब्लूटूथ स्टैक कोड-नाम को फिर से लिखता है "गैबल्डोर्शे" जंग में लिखा जा रहा है. एंड्रॉइड 11 के समय गैबल्डोर्शे पर काम शुरू हुआ था लेकिन यह अभी भी उपयोग में नहीं है। एंड्रॉइड का कीस्टोर 2.0 मॉड्यूल रस्ट में लिखा गया है, और इसी तरह बाइंडर, एंड्रॉइड के आईपीसी ड्राइवर का यूजरस्पेस भाग भी है। जबकि एंड्रॉइड से संबंधित नहीं है, फ्यूशियानया है नेटस्टैक रस्ट में भी लिखा जा रहा है.

ऐप डेवलपर्स के लिए, स्विच इस बारे में कुछ भी नहीं बदलता है कि ऐप डेवलपर के रूप में आप ऐप कैसे लिखते हैं या फ्रेमवर्क एपीआई कैसे काम करते हैं। यह स्विच केवल यह प्रभावित करता है कि OS कैसे लिखा जाता है। एंड्रॉइड डेवलपर रिलेशंस टीम के एक सदस्य के अनुसार, Google की भी फिलहाल रस्ट एनडीके जारी करने की कोई योजना नहीं है। ऐप विकास के लिए समर्थित भाषाएँ कोटलिन, जावा, सी और सी++ बनी रहेंगी।