एमटीई कॉन्फ़िगरेशन

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

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

गुठली

कर्नेल में एमटीई को कमांड लाइन के माध्यम से कॉन्फ़िगर किया गया है। सिंक मोड में डिफ़ॉल्ट चालू है. यह कई कारणों से भविष्य में परिवर्तन के अधीन है:

  • यह प्रदर्शन और आवश्यकताओं के अनुकूलन कार्य को महत्वपूर्ण रूप से प्रभावित करता हुआ दिखाया गया है।
  • कर्नेल कोड गुणवत्ता को व्यापक रूप से एमटीई को एनफोर्सिंग (अर्थात पैनिक-ऑन-फेल्योर) मोड में शिप करने के लिए अपर्याप्त माना जाता है।

वर्तमान अनुशंसा उत्पादन उपकरणों पर कर्नेल एमटीई को अक्षम करने की है। ऐसा करने के लिए, kasan=off कर्नेल कमांड लाइन में जोड़ें।

उपयोक्ता स्थान

Google एमटीई के साथ संरक्षित किए जाने वाले यूजरस्पेस बायनेरिज़ की एक डिफ़ॉल्ट सूची प्रदान करता है। सूची एंड्रॉइड सिक्योरिटी के इनपुट से बनाई गई थी और इसमें ऐसे घटक शामिल हैं जो विशेषाधिकार प्राप्त हैं और/या अविश्वसनीय इनपुट को संभालते हैं। एमटीई के साथ अनुशंसित देशी बायनेरिज़ की अद्यतित सूची एंड्रॉइड बिल्ड सिस्टम में memtag-common.mk फ़ाइल में पाई जा सकती है। इसके अतिरिक्त, कई सिस्टम एप्लिकेशन भी शामिल हैं: वर्तमान में, एनएफसी, ब्लूटूथ और सिक्योरएलिमेंट। ये बायनेरिज़ और एप्लिकेशन डिफ़ॉल्ट रूप से Async मोड में सक्षम हैं।

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

अनुप्रयोग

ऊपर सूचीबद्ध तीन सिस्टम एप्लिकेशन ही इस समय एमटीई का उपयोग कर रहे हैं। एमटीई को सक्षम करने के लिए किसी तीसरे पक्ष के एप्लिकेशन के लिए, उसके AndroidManifest.xml को android:memtagMode off के अलावा किसी अन्य मान के साथ निर्दिष्ट करने की आवश्यकता होगी। इस प्रकार, गीकबेंच या AnTuTu जैसे सामान्य बेंचमार्क सुइट्स MTE के साथ नहीं चलते हैं। यदि कर्नेल एमटीई भी अक्षम है (ऊपर kasan=off देखें), तो बेंचमार्क से बहुत सीमित प्रदर्शन प्रभाव, यदि कोई हो, दिखाने की उम्मीद है।

जहां तक ​​अन्य ऐप्स का सवाल है, क्रोम में एमटीई समर्थन का सक्रिय विकास हो रहा है। Chrome के वर्तमान Play Store संस्करण में मेनिफेस्ट में memtagMode=async सेटिंग शामिल है। हमारी यह भी अपेक्षा है कि एंड्रॉइड इकोसिस्टम में कई सुरक्षा-सचेत ऐप्स (उदाहरण के लिए, बैंकिंग ऐप्स) अंततः ऐसा ही करेंगे। दूसरी ओर, हम उम्मीद करते हैं कि कुछ एप्लिकेशन जो चरम सीपीयू प्रदर्शन की मांग करते हैं जैसे गेम, एमटीई को अक्षम रखना चुनेंगे।

अन्य विधाएँ

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

हम यह देखने के लिए एक या दो अन्य कॉन्फ़िगरेशन का परीक्षण करने की अनुशंसा करते हैं कि क्या वे आपके प्रदर्शन/शक्ति आवश्यकताओं के लिए पर्याप्त हैं। /sys/devices/system/cpu/cpu*/mte_tcf_preferred पर लिखकर सिस्टम में प्रत्येक सीपीयू कोर के लिए एमटीई मोड सेट किया जा सकता है। उदाहरण के लिए, sync (या asymm ) लिखने से कोई भी यूजरस्पेस प्रक्रिया शुरू हो जाएगी जिसने उस कोर पर चलते समय एसिंक मोड को चुपचाप सिंक (या एसिमम) में ऑटो-अपग्रेड करने का अनुरोध किया है। यह सेटअप डिवाइस बूट समय पर .rc फ़ाइल में किया जा सकता है।

हम यह जांचने के लिए एक या दो अन्य कॉन्फ़िगरेशन को मापने की सलाह देते हैं कि क्या वे आपके प्रदर्शन और बिजली की आवश्यकताओं को पूरा करते हैं। तलाशने लायक कुछ दिलचस्प कॉन्फ़िगरेशन:

  • सभी कोर पर Asymm
  • बड़े कोर पर एसिमम , अन्य कोर पर सिंक

यह सत्यापित करने के लिए कि कोई प्रक्रिया Async मोड (संभावित ऑटो-अपग्रेड के साथ) का अनुरोध कर रही है, जांचें कि निम्न पंक्ति में PR_MTE_TCF_SYNC और PR_MTE_TCF_ASYNC दोनों शामिल हैं:

  debuggerd  | head -30 | grep tagged_addr

दुर्भाग्य से, किसी प्रक्रिया के लिए प्रभावी मोड देखने का कोई आसान तरीका नहीं है; लेकिन कोई भी प्रक्रिया जो ऊपर सूचीबद्ध दोनों मान दिखाती है, स्वतः-अपग्रेड व्यवहार के अधीन है।