एडियंटम को सक्षम करना

Adiantum और जिसका सीपीयू की कमी एंड्रॉयड 9 चलाने वाले उपकरणों के उच्च के लिए बनाया गया एक एन्क्रिप्शन विधि है एईएस निर्देश। आप ARMv8 क्रिप्टोग्राफी एक्सटेंशन के साथ एक हाथ आधारित डिवाइस या एईएस एनआई के साथ एक x86- आधारित डिवाइस शिपिंग रहे हैं, तो आप Adiantum उपयोग नहीं करना चाहिए। उन प्लेटफार्मों पर एईएस तेज है।

इन एईएस सीपीयू निर्देशों की कमी वाले उपकरणों के लिए, एडियंटम आपके डिवाइस पर बहुत कम प्रदर्शन ओवरहेड के साथ एन्क्रिप्शन प्रदान करता है। बेंचमार्किंग संख्या के लिए, देखें Adiantum कागज । बेंचमार्किंग स्रोत अपने हार्डवेयर पर चलाने के लिए, देखें GitHub पर Adiantum स्रोत

एंड्रॉइड 9 या उच्चतर चलाने वाले डिवाइस पर एडियंटम को सक्षम करने के लिए, आपको कर्नेल परिवर्तन और उपयोगकर्ता स्थान परिवर्तन करने की आवश्यकता है।

कर्नेल परिवर्तन

एडियंटम Android सामान्य कर्नेल, संस्करण 4.9 और उच्चतर द्वारा समर्थित है।

यदि आपके उपकरण के कर्नेल में पहले से एडियंटम समर्थन नहीं है, तो नीचे सूचीबद्ध परिवर्तनों को चेरी-चुनें। आप मुसीबत चेरी पिकिंग हो रही है, का उपयोग करते हुए उपकरणों पूर्ण डिस्क एन्क्रिप्शन (FDE) को बाहर कर सकते fscrypt: पैच।

कर्नेल संस्करण क्रिप्टो और fscrypt पैच dm-crypt पैच
4.19 4.19 कर्नेल dm-crypt पैच
4.14 4.14 कर्नेल dm-crypt पैच
4.9 4.9 कर्नेल dm-crypt पैच

अपने कर्नेल में एडियंटम सक्षम करें

एंड्रॉइड 11 और उच्चतर

यदि आपका डिवाइस Android 11 या उच्चतर के साथ लॉन्च हो रहा है, तो अपने डिवाइस के कर्नेल कॉन्फ़िगरेशन में निम्न सेटिंग्स को सक्षम करें:

CONFIG_CRYPTO_ADIANTUM=y
CONFIG_FS_ENCRYPTION=y
CONFIG_BLK_INLINE_ENCRYPTION=y
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
CONFIG_DM_DEFAULT_KEY=y

यदि आपका डिवाइस 32-बिट एआरएम कर्नेल चला रहा है, तो प्रदर्शन को बेहतर बनाने के लिए नीयन निर्देश भी सक्षम करें:

CONFIG_KERNEL_MODE_NEON=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_CHACHA20_NEON=y
CONFIG_CRYPTO_NHPOLY1305_NEON=y

एंड्रॉइड 9 और 10

यदि आपका डिवाइस एंड्रॉइड 9 या 10 के साथ लॉन्च हो रहा है, तो थोड़ा अलग कर्नेल कॉन्फ़िगरेशन सेटिंग्स की आवश्यकता है। निम्नलिखित सेटिंग्स सक्षम करें:

CONFIG_CRYPTO_ADIANTUM=y
CONFIG_DM_CRYPT=y

यदि आपका उपकरण फ़ाइल-आधारित एन्क्रिप्शन का उपयोग करता है, तो यह भी सक्षम करें:

CONFIG_F2FS_FS_ENCRYPTION=y

अंत में, यदि आपका डिवाइस 32-बिट एआरएम कर्नेल चलाता है, तो प्रदर्शन को बेहतर बनाने के लिए नीयन निर्देशों को सक्षम करें:

CONFIG_KERNEL_MODE_NEON=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_CHACHA20_NEON=y
CONFIG_CRYPTO_NHPOLY1305_NEON=y

उपयोगकर्ता स्थान परिवर्तन

एंड्रॉयड 10 या संस्करण चलाने वाले उपकरणों के लिए, Adiantum यूज़रस्पेस परिवर्तन पहले से ही मौजूद हैं।

Android 9 चलाने वाले उपकरणों के लिए, चेरी-निम्न परिवर्तन चुनें:

अपने डिवाइस में एडियंटम सक्षम करें

सबसे पहले, सुनिश्चित करें कि आपकी डिवाइस है कि PRODUCT_SHIPPING_API_LEVEL सही ढंग से Android संस्करण इसके साथ लॉन्च कर रहा है मैच के लिए निर्धारित किया है। उदाहरण के लिए, एंड्रॉयड 11 के साथ एक डिवाइस शुरू होनी चाहिए PRODUCT_SHIPPING_API_LEVEL := 30 । यह महत्वपूर्ण है क्योंकि कुछ एन्क्रिप्शन सेटिंग्स में अलग-अलग लॉन्च संस्करणों पर अलग-अलग डिफ़ॉल्ट होते हैं।

फ़ाइल-आधारित एन्क्रिप्शन वाले उपकरण

आपके डिवाइस की आंतरिक मेमोरी पर Adiantum फ़ाइल आधारित एन्क्रिप्शन को सक्षम करने के लिए पंक्ति के अंतिम स्तंभ के लिए निम्न विकल्प (fs_mgr_flags स्तंभ) को जोड़ने के userdata डिवाइस की में विभाजन fstab फ़ाइल:

fileencryption=adiantum

यदि आपका डिवाइस Android 11 या उसके बाद के साथ लॉन्च कर रहा है, तो मेटाडाटा एन्क्रिप्शन सक्षम करने भी आवश्यक है। आंतरिक मेमोरी में मेटाडाटा एन्क्रिप्शन के लिए Adiantum का उपयोग करने के लिए fs_mgr_flags userdata भी निम्नलिखित विकल्पों के शामिल होना चाहिए:

metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption

इसके बाद, पर Adiantum एन्क्रिप्शन सक्षम ग्रहणीय भंडारण । ऐसा करने के लिए, में निम्न सिस्टम गुण सेट PRODUCT_PROPERTY_OVERRIDES :

Android 11 और उच्चतर के लिए:

ro.crypto.volume.options=adiantum
ro.crypto.volume.metadata.encryption=adiantum

एंड्रॉइड 9 और 10 के लिए:

ro.crypto.volume.contents_mode=adiantum
ro.crypto.volume.filenames_mode=adiantum
ro.crypto.fde_algorithm=adiantum
ro.crypto.fde_sector_size=4096

अंत में, वैकल्पिक रूप से जोड़ने blk-crypto-fallback.num_keyslots=1 कर्नेल कमांड लाइन करने के लिए। जब एडियंटम मेटाडेटा एन्क्रिप्शन का उपयोग किया जाता है तो यह स्मृति उपयोग को थोड़ा कम कर देगा। ऐसा करने से पहले, सत्यापित करें कि inlinecrypt विकल्प माउंट में निर्दिष्ट नहीं है fstab । यह निर्दिष्ट है, तो, इसे हटाने के बाद से यह Adiantum एन्क्रिप्शन के लिए की जरूरत नहीं है, और यह प्रदर्शन की समस्याओं जब साथ संयोजन में उपयोग का कारण बनता है blk-crypto-fallback.num_keyslots=1

यह सत्यापित करने के लिए कि आपके कार्यान्वयन ने काम किया है, एक बग रिपोर्ट लें या चलाएं:

adb root
adb shell dmesg

यदि एडियंटम सही ढंग से सक्षम है, तो आपको इसे कर्नेल लॉग में देखना चाहिए:

fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"

यदि आपने मेटाडेटा एन्क्रिप्शन को सक्षम किया है, तो यह सत्यापित करने के लिए कि एडियंटम मेटाडेटा एन्क्रिप्शन सही तरीके से सक्षम है, निम्नलिखित भी चलाएँ:

adb root
adb shell dmctl table userdata

उत्पादन का तीसरा क्षेत्र होना चाहिए xchacha12,aes-adiantum-plain64

पूर्ण-डिस्क एन्क्रिप्शन वाले उपकरण

Adiantum सक्षम है और इसके प्रदर्शन को बेहतर करने में इन गुणों को सेट PRODUCT_PROPERTY_OVERRIDES :

ro.crypto.fde_algorithm=adiantum
ro.crypto.fde_sector_size=4096

स्थापना fde_sector_size 4096 को प्रदर्शन को बेहतर बनाता है, लेकिन काम करने के लिए Adiantum के लिए आवश्यक नहीं है। इस सेटिंग का उपयोग करने के लिए, उपयोगकर्ता डेटा विभाजन 4096-बाइट संरेखित ऑफ़सेट ऑन-डिस्क पर प्रारंभ होना चाहिए।

में fstab , userdata सेट के लिए:

forceencrypt=footer

यह सत्यापित करने के लिए कि आपके कार्यान्वयन ने काम किया है, एक बग रिपोर्ट लें या चलाएं:

adb root
adb shell dmesg

यदि एडियंटम सही ढंग से सक्षम है, तो आपको इसे कर्नेल लॉग में देखना चाहिए:

device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"