Adiantum, एन्क्रिप्ट (सुरक्षित) करने का तरीका है. इसे Android 9 और इसके बाद के वर्शन वाले डिवाइसों के लिए डिज़ाइन किया गया है जिनके सीपीयू में कमी है AES के निर्देश. अगर ARM का इस्तेमाल करके प्रॉडक्ट की शिपिंग की जा रही है, तो ARMv8 क्रिप्टोग्राफ़ी एक्सटेंशन वाले डिवाइस या AES-NI वाले x86 पर आधारित डिवाइस, आपको Adiantum का इस्तेमाल नहीं करना चाहिए. AES उन पर तेज़ है प्लैटफ़ॉर्म.
जिन डिवाइसों में एईएस सीपीयू के निर्देश नहीं हैं, उनके लिए Adiantum एन्क्रिप्शन की सुविधा चालू करता है आपके डिवाइस की परफ़ॉर्मेंस बहुत कम है. मानदंड की संख्याओं के लिए, ऐडियन्टम पेपर देखें. मानदंड स्रोत के लिए चलाने के लिए, ऐडिएंटम सोर्स GitHub पर.
Android 9 या इसके बाद के वर्शन वाले डिवाइस पर Adiantum को चालू करने के लिए, आपको ये काम करने होंगे कर्नेल में बदलाव करें और यूज़रस्पेस में बदलाव करें.
कर्नेल में बदलाव
Adiantum, Android सामान्य कर्नेल के वर्शन 4.9 और उसके बाद के वर्शन पर काम करता है.
अगर आपके डिवाइस के कर्नेल में Adiantum की सुविधा पहले से मौजूद नहीं है, तो
बदलावों के बारे में नीचे बताया गया है. अगर आपको चेरी चुनने में समस्या आ रही है, तो फ़ुल-डिस्क एन्क्रिप्शन (एफ़डीई) का इस्तेमाल करने वाले डिवाइसों को सूची से बाहर रखा जा सकता है
fscrypt:
पैच.
कर्नेल वर्ज़न | क्रिप्टो और fscrypt पैच | dm-crypt पैच |
---|---|---|
4.19 | 4.19 कर्नेल | dm-crypt पैच
|
4.14 | 4.14 कर्नेल | dm-crypt पैच
|
4.9 | 4.9 कर्नेल | dm-crypt पैच
|
अपने कर्नेल में Adiantum चालू करें
Android 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-बिट ARM कर्नेल पर चल रहा है, तो NEON निर्देशों को भी सक्षम करें परफ़ॉर्मेंस बेहतर करें:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Android 9 और 10
अगर आपके डिवाइस को Android 9 के साथ लॉन्च किया जा रहा है या 10, फिर थोड़ा अलग कर्नेल कॉन्फ़िगरेशन सेटिंग की ज़रूरत है. इन सेटिंग को चालू करें:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=yअभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अगर आपके डिवाइस पर फ़ाइल के आधार पर एन्क्रिप्ट (सुरक्षित) करने का तरीका इस्तेमाल किया जाता है, तो इन्हें भी चालू करें:
CONFIG_F2FS_FS_ENCRYPTION=y
अंत में, यदि आपका डिवाइस 32-बिट ARM कर्नेल पर चलता है, तो NEON निर्देशों को सक्षम करें परफ़ॉर्मेंस बेहतर करें:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
यूज़रस्पेस में बदलाव
Android 10 या उसके बाद के वर्शन वाले डिवाइसों में, Adiantum यूज़रस्पेस बदलाव पहले से मौजूद हैं.
Android 9 वर्शन वाले डिवाइसों के लिए, चेरी चुनें ये बदलाव हुए हैं:
- cryptfs: Adiantum सहायता जोड़ें
- cryptfs: dm-क्रिप्ट सेक्टर का साइज़ सेट करने की अनुमति दें
- क्रिप्टएफ़: dm-क्रिप्ट डिवाइस के साइज़ को क्रिप्टो सेक्टर की सीमा तक राउंड डाउन करना
- cryptfs: डिवाइस बनाने के लिए DM-क्रिप्ट को लॉग करने की प्रोसेस को बेहतर बनाना
- libfscrypt: Adiantum सहायता जोड़ें
- fs_mgr_fstab: Adiantum सहायता जोड़ें
अपने डिवाइस पर Adiantum चालू करें
सबसे पहले, पक्का करें कि आपके डिवाइस में PRODUCT_SHIPPING_API_LEVEL
सेट हो
ताकि यह लॉन्च किए जा रहे Android वर्शन से मेल खाए. उदाहरण के लिए,
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
Android 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
को
कर्नेल कमांड लाइन. इससे Adiantum के समय में, मेमोरी का इस्तेमाल थोड़ा कम हो जाएगा
मेटाडेटा को एन्क्रिप्ट (सुरक्षित) करने का तरीका इस्तेमाल किया जाता है. ऐसा करने से पहले, पुष्टि करें कि
fstab
में, inlinecrypt
माउंट करने के विकल्प के बारे में नहीं बताया गया है.
अगर यह बताया गया है, तो इसे हटा दें, क्योंकि Adiantum को एन्क्रिप्ट (सुरक्षित) करने के लिए इसकी ज़रूरत नहीं है.
और इसके साथ इस्तेमाल किए जाने पर, परफ़ॉर्मेंस से जुड़ी समस्याएं होती हैं.
blk-crypto-fallback.num_keyslots=1
.
यह पुष्टि करने के लिए कि आपका तरीका काम कर रहा है या नहीं, गड़बड़ी की रिपोर्ट लें या चलाएं:
adb root
adb shell dmesg
अगर Adiantum सही तरीके से चालू है, तो आपको इसे कर्नेल लॉग में दिखना चाहिए:
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
में, उपयोगकर्ता के डेटा सेट के लिए:
forceencrypt=footer
यह पुष्टि करने के लिए कि आपका तरीका काम कर रहा है या नहीं, गड़बड़ी की रिपोर्ट लें या चलाएं:
adb root
adb shell dmesg
अगर Adiantum सही तरीके से चालू है, तो आपको इसे कर्नेल लॉग में देखना चाहिए:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है