Adiantum adalah metode enkripsi yang dirancang untuk perangkat yang menjalankan Android 9 dan yang lebih tinggi yang memiliki CPU AES. Jika Anda mengirimkan data berbasis ARM perangkat dengan Ekstensi Kriptografi ARMv8 atau perangkat berbasis x86 dengan AES-NI, Anda tidak boleh menggunakan Adiantum. AES lebih cepat di berbagai platform Google.
Untuk perangkat yang tidak memiliki petunjuk CPU AES ini, Adiantum menyediakan enkripsi pada perangkat Anda dengan {i>overhead<i} kinerja yang sangat sedikit. Untuk angka tolok ukur, lihat makalah Adiantum. Untuk sumber tolok ukur untuk dijalankan di perangkat keras Anda, lihat Sumber adiantum di GitHub.
Untuk mengaktifkan Adiantum di perangkat yang menjalankan Android 9 atau yang lebih baru, Anda harus membuat perubahan {i>kernel<i} dan {i>userspace<i}.
Perubahan kernel
Adiantum didukung oleh kernel umum Android, versi 4.9 dan yang lebih tinggi.
Jika {i>kernel<i} perangkat Anda belum memiliki dukungan Adiantum, pilih
perubahan yang tercantum di bawah ini. Jika Anda mengalami masalah dalam memilih, perangkat yang menggunakan enkripsi disk penuh (FDE) dapat mengecualikan
patch fscrypt:
.
Versi kernel | Patch kripto dan fscrypt | Patch dm-crypt |
---|---|---|
4,19 | Kernel 4.19 | Patch dm-crypt
|
4,14 | Kernel 4.14 | Patch dm-crypt
|
4.9 | Kernel 4.9 | Patch dm-crypt
|
Mengaktifkan Adiantum di kernel Anda
Android 11 dan yang lebih baru
Jika perangkat diluncurkan dengan Android 11 atau yang lebih baru, aktifkan setelan berikut dalam konfigurasi kernel perangkat Anda:
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
Jika perangkat Anda menjalankan kernel ARM 32-bit, aktifkan juga instruksi neon untuk meningkatkan kinerja:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Android 9 dan 10
Jika perangkat Anda diluncurkan dengan Android 9 atau 10, kemudian konfigurasi {i> kernel<i} yang sedikit berbeda diperlukan. Aktifkan setelan berikut:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=y
Jika perangkat Anda menggunakan enkripsi berbasis file, aktifkan juga:
CONFIG_F2FS_FS_ENCRYPTION=y
Terakhir, jika perangkat Anda menjalankan kernel ARM 32-bit, aktifkan meningkatkan kinerja:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Perubahan ruang pengguna
Untuk perangkat yang menjalankan Android 10 atau yang lebih baru, Perubahan ruang pengguna Adiantum sudah ada.
Untuk perangkat yang menjalankan Android 9, pilih perubahan berikut:
- cryptfs: Menambahkan dukungan Adiantum
- cryptfs: Mengizinkan setelan ukuran sektor dm-crypt
- cryptfs: membulatkan ukuran perangkat dm-crypt ke batas sektor kripto
- cryptfs: meningkatkan logging pembuatan perangkat dm-crypt
- libfscrypt: Menambahkan dukungan Adiantum
- fs_mgr_fstab: Menambahkan dukungan Adiantum
Aktifkan Adiantum di perangkat Anda
Pertama, pastikan PRODUCT_SHIPPING_API_LEVEL
telah disetel di perangkat Anda
dengan benar agar cocok dengan versi Android yang diluncurkan. Sebagai contoh,
perangkat yang diluncurkan dengan Android 11 harus memiliki
PRODUCT_SHIPPING_API_LEVEL := 30
. Hal ini penting karena beberapa
pengaturan enkripsi memiliki {i>default<i} yang berbeda
pada versi peluncuran yang berbeda.
Perangkat dengan enkripsi berbasis file
Untuk mengaktifkan enkripsi berbasis file Adiantum di penyimpanan internal perangkat, tambahkan
opsi berikut ke kolom terakhir (fs_mgr_flags
) pada baris untuk partisi userdata
di kolom perangkat
File fstab
:
fileencryption=adiantum
Jika perangkat diluncurkan dengan Android 11 atau yang lebih baru,
lalu aktifkan
enkripsi metadata juga diperlukan. Untuk menggunakan Adiantum untuk metadata
enkripsi pada penyimpanan internal, fs_mgr_flags
userdata
juga harus berisi opsi berikut:
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
Selanjutnya, aktifkan enkripsi Adiantum di penyimpanan yang dapat diadopsi. Caranya, setel atribut
properti sistem berikut di PRODUCT_PROPERTY_OVERRIDES
:
Untuk Android 11 dan yang lebih baru:
ro.crypto.volume.options=adiantum ro.crypto.volume.metadata.encryption=adiantum
Untuk Android 9 dan 10:
ro.crypto.volume.contents_mode=adiantum ro.crypto.volume.filenames_mode=adiantum ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Terakhir, jika perlu, tambahkan blk-crypto-fallback.num_keyslots=1
ke
command line {i>kernel<i}. Hal ini akan sedikit mengurangi penggunaan
memori ketika Adiantum
menggunakan enkripsi {i>metadata<i}. Sebelum melakukannya, verifikasi bahwa
Opsi pemasangan inlinecrypt
tidak ditentukan dalam fstab
.
Jika sudah ditentukan, hapuslah, karena tidak diperlukan untuk enkripsi {i>Adiantum<i},
dan menyebabkan masalah
kinerja bila digunakan dengan
blk-crypto-fallback.num_keyslots=1
.
Untuk memverifikasi bahwa implementasi Anda berhasil, buat laporan bug atau jalankan:
adb root
adb shell dmesg
Jika Adiantum diaktifkan dengan benar, Anda akan melihat ini di log kernel:
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
Jika Anda mengaktifkan enkripsi metadata, jalankan juga perintah berikut untuk memverifikasi bahwa Enkripsi metadata adiantum diaktifkan dengan benar:
adb root
adb shell dmctl table userdata
Isian ketiga dari output harus
xchacha12,aes-adiantum-plain64
.
Perangkat dengan enkripsi disk penuh
Untuk mengaktifkan Adiantum dan meningkatkan performanya, setel properti ini di
PRODUCT_PROPERTY_OVERRIDES
:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Menetapkan fde_sector_size
ke 4096 akan meningkatkan performa, tetapi tidak
yang diperlukan agar Adiantum dapat berfungsi. Untuk menggunakan setelan ini, partisi {i>userdata<i} harus
dimulai pada offset sejajar
4096 byte pada {i>disk<i}.
Di fstab
, untuk set data pengguna:
forceencrypt=footer
Untuk memverifikasi bahwa implementasi Anda berhasil, buat laporan bug atau jalankan:
adb root
adb shell dmesg
Jika Adiantum diaktifkan dengan benar, Anda akan melihat ini di log kernel:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"