Adiantum হল একটি এনক্রিপশন পদ্ধতি যা অ্যান্ড্রয়েড 9 এবং উচ্চতর চলমান ডিভাইসগুলির জন্য ডিজাইন করা হয়েছে যার CPU-তে AES নির্দেশাবলী নেই। আপনি যদি ARMv8 ক্রিপ্টোগ্রাফি এক্সটেনশন সহ একটি ARM-ভিত্তিক ডিভাইস বা AES-NI-এর সাথে একটি x86-ভিত্তিক ডিভাইস শিপিং করেন তবে আপনার Adiantum ব্যবহার করা উচিত নয় । এই প্ল্যাটফর্মগুলিতে AES দ্রুত।
এই AES CPU নির্দেশাবলীর অভাব থাকা ডিভাইসগুলির জন্য, Adiantum আপনার ডিভাইসে খুব কম পারফরম্যান্স ওভারহেড সহ এনক্রিপশন প্রদান করে। বেঞ্চমার্কিং সংখ্যার জন্য, Adiantum কাগজ দেখুন। আপনার হার্ডওয়্যারে বেঞ্চমার্কিং উত্সটি চালানোর জন্য, GitHub-এ Adiantum উত্সটি দেখুন।
অ্যান্ড্রয়েড 9 বা উচ্চতর চলমান ডিভাইসে অ্যাডিয়েন্টাম সক্ষম করতে, আপনাকে কার্নেল পরিবর্তন এবং ব্যবহারকারীর স্থান পরিবর্তন করতে হবে।
কার্নেল পরিবর্তন
Adiantum Android সাধারণ কার্নেল, সংস্করণ 4.9 এবং উচ্চতর দ্বারা সমর্থিত।
যদি আপনার ডিভাইসের কার্নেলে ইতিমধ্যে Adiantum সমর্থন না থাকে, তাহলে নীচে তালিকাভুক্ত পরিবর্তনগুলি চেরি-পিক করুন৷ আপনার যদি চেরি-পিক করতে সমস্যা হয়, ফুল-ডিস্ক এনক্রিপশন (FDE) ব্যবহার করা ডিভাইসগুলি fscrypt:
প্যাচ বাদ দিতে পারে।
কার্নেল সংস্করণ | ক্রিপ্টো এবং fscrypt প্যাচ | dm-crypt প্যাচ |
---|---|---|
4.19 | 4.19 কার্নেল | dm-crypt প্যাচ |
4.14 | 4.14 কার্নেল | dm-crypt প্যাচ |
4.9 | 4.9 কার্নেল | dm-crypt প্যাচ |
আপনার কার্নেলে অ্যাডিয়েন্টাম সক্ষম করুন
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-বিট এআরএম কার্নেল চালায়, কর্মক্ষমতা উন্নত করতে NEON নির্দেশাবলীও সক্ষম করুন:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
অ্যান্ড্রয়েড 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
ব্যবহারকারী স্থান পরিবর্তন
অ্যান্ড্রয়েড 10 বা উচ্চতর চলমান ডিভাইসগুলির জন্য, অ্যাডিয়েন্টাম ব্যবহারকারীর স্থান পরিবর্তনগুলি ইতিমধ্যে উপস্থিত রয়েছে।
Android 9 চালিত ডিভাইসগুলির জন্য, নিম্নলিখিত পরিবর্তনগুলি চেরি-পিক করুন:
- cryptfs: অ্যাডিয়েন্টাম সমর্থন যোগ করুন
- cryptfs: dm-crypt সেক্টরের আকার সেট করার অনুমতি দিন
- cryptfs: dm-crypt ডিভাইসের আকারকে ক্রিপ্টো সেক্টরের সীমানায় রাউন্ড ডাউন করুন
- cryptfs: dm-ক্রিপ্ট ডিভাইস তৈরির লগিং উন্নত করুন
- libfscrypt: অ্যাডিয়েন্টাম সমর্থন যোগ করুন
- fs_mgr_fstab: অ্যাডিয়েন্টাম সমর্থন যোগ করুন
আপনার ডিভাইসে Adiantum সক্ষম করুন
প্রথমে, নিশ্চিত করুন যে আপনার ডিভাইসে PRODUCT_SHIPPING_API_LEVEL
সঠিকভাবে সেট করা আছে যাতে এটি লঞ্চ করা Android সংস্করণের সাথে মেলে। উদাহরণস্বরূপ, অ্যান্ড্রয়েড 11 এর সাথে লঞ্চ হওয়া একটি ডিভাইসে অবশ্যই PRODUCT_SHIPPING_API_LEVEL := 30
থাকতে হবে। এটি গুরুত্বপূর্ণ কারণ কিছু এনক্রিপশন সেটিংসের বিভিন্ন লঞ্চ সংস্করণে বিভিন্ন ডিফল্ট রয়েছে৷
ফাইল-ভিত্তিক এনক্রিপশন সহ ডিভাইস
আপনার ডিভাইসের অভ্যন্তরীণ সঞ্চয়স্থানে Adiantum ফাইল-ভিত্তিক এনক্রিপশন সক্ষম করতে, ডিভাইসের fstab
ফাইলে userdata
পার্টিশনের জন্য সারির শেষ কলামে ( fs_mgr_flags কলাম) নিম্নলিখিত বিকল্পটি যোগ করুন:
fileencryption=adiantum
যদি আপনার ডিভাইসটি Android 11 বা উচ্চতর সংস্করণে চালু হয়, তাহলে মেটাডেটা এনক্রিপশন সক্ষম করাও প্রয়োজন। অভ্যন্তরীণ সঞ্চয়স্থানে মেটাডেটা এনক্রিপশনের জন্য Adiantum ব্যবহার করতে, userdata
জন্য fs_mgr_flags এ নিম্নলিখিত বিকল্পগুলিও থাকতে হবে:
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)"
আপনি যদি মেটাডেটা এনক্রিপশন সক্ষম করে থাকেন, তাহলে Adiantum মেটাডেটা এনক্রিপশন সঠিকভাবে সক্ষম হয়েছে কিনা তা যাচাই করতে নিম্নলিখিতটি চালান:
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)"