Enkripsi disk penuh adalah proses mengenkode semua data pengguna di perangkat Android menggunakan kunci terenkripsi. Setelah perangkat dienkripsi, semua data yang dibuat pengguna akan dienkripsi secara otomatis sebelum di-commit ke disk dan semua pembacaan akan otomatis mendekripsi data sebelum menampilkannya ke proses panggilan.
Enkripsi disk penuh diperkenalkan di Android 4.4, tetapi Android 5.0 memperkenalkan fitur baru berikut:
- Membuat enkripsi cepat, yang hanya mengenkripsi blok yang digunakan pada partisi data untuk menghindari booting pertama yang memakan waktu lama. Saat ini hanya sistem file ext4 dan f2fs yang mendukung enkripsi cepat.
- Menambahkan
forceencryptfstab flag untuk mengenkripsi saat booting pertama. - Menambahkan dukungan untuk pola dan enkripsi tanpa sandi.
- Menambahkan penyimpanan kunci enkripsi yang didukung hardware menggunakan kemampuan penandatanganan Trusted Execution Environment (TEE) (seperti di TrustZone). Lihat Menyimpan kunci terenkripsi untuk mengetahui detail selengkapnya.
Perhatian: Perangkat yang diupgrade ke Android 5.0 dan kemudian dienkripsi dapat dikembalikan ke status tidak dienkripsi dengan reset data ke setelan pabrik. Perangkat Android 5.0 baru yang dienkripsi saat booting pertama tidak dapat dikembalikan ke status tidak dienkripsi.
Cara kerja enkripsi disk penuh Android
Enkripsi disk penuh Android didasarkan pada dm-crypt, yang merupakan fitur kernel yang berfungsi di lapisan perangkat blok. Oleh karena itu, enkripsi berfungsi dengan Embedded MultiMediaCard (eMMC) dan perangkat flash serupa yang menampilkan dirinya ke kernel sebagai perangkat blok. Enkripsi tidak dapat dilakukan dengan YAFFS, yang berkomunikasi langsung dengan chip flash NAND mentah.
Algoritma enkripsi adalah 128 Advanced Encryption Standard (AES) dengan cipher-block chaining (CBC) dan ESSIV:SHA256. Kunci master dienkripsi dengan AES 128-bit melalui panggilan ke pustaka OpenSSL. Anda harus menggunakan 128 bit atau lebih untuk kunci (dengan 256 bit bersifat opsional).
Catatan: OEM dapat menggunakan 128-bit atau yang lebih tinggi untuk mengenkripsi kunci utama.
Dalam rilis Android 5.0, ada empat jenis status enkripsi:
- default
- PIN
- sandi
- pola
Saat booting pertama, perangkat akan membuat kunci utama 128-bit yang dibuat secara acak, lalu melakukan hashing dengan sandi default dan salt yang disimpan. Sandi defaultnya adalah: "default_password" Namun, hash yang dihasilkan juga ditandatangani melalui TEE (seperti TrustZone), yang menggunakan hash tanda tangan untuk mengenkripsi kunci utama.
Anda dapat menemukan sandi default yang ditentukan dalam file cryptfs.cpp Proyek Open Source Android.
Saat pengguna menyetel PIN/pola atau sandi di perangkat, hanya kunci 128-bit yang dienkripsi ulang dan disimpan. (yaitu, perubahan PIN/sandi/pola pengguna TIDAK menyebabkan enkripsi ulang data pengguna.) Perhatikan bahwa perangkat terkelola mungkin tunduk pada batasan PIN, pola, atau sandi.
Enkripsi dikelola oleh init dan vold.
init memanggil vold, dan vold menetapkan properti untuk memicu
peristiwa di init. Bagian lain dari sistem juga melihat properti untuk melakukan tugas seperti melaporkan status, meminta sandi, atau meminta reset ke setelan pabrik jika terjadi error fatal. Untuk memanggil
fitur enkripsi di vold, sistem menggunakan alat command line
vdc’s cryptfs perintah: checkpw,
restart, enablecrypto, changepw,
cryptocomplete, verifypw, setfield,
getfield, mountdefaultencrypted, getpwtype,
getpw, dan clearpw.
Untuk mengenkripsi, mendekripsi, atau menghapus total /data, /data
tidak boleh di-mount. Namun, untuk menampilkan antarmuka pengguna (UI), framework harus dimulai dan framework memerlukan /data untuk berjalan. Untuk
menyelesaikan masalah ini, sistem file sementara dipasang di /data.
Hal ini memungkinkan Android meminta sandi, menampilkan progres, atau menyarankan penghapusan data
sesuai kebutuhan. Namun, ada batasan bahwa untuk beralih dari sistem file
sementara ke sistem file /data yang sebenarnya, sistem harus
menghentikan setiap proses dengan file terbuka di sistem file sementara dan memulai ulang proses tersebut di sistem file /data yang sebenarnya. Untuk melakukannya, semua layanan
harus berada dalam salah satu dari tiga grup: core, main, dan
late_start.
core: Tidak pernah dimatikan setelah dimulai.main: Matikan, lalu mulai ulang setelah sandi disk dimasukkan.late_start: Tidak dimulai hingga setelah/datadidekripsi dan di-mount.
Untuk memicu tindakan ini, properti vold.decrypt ditetapkan ke
berbagai string.
Untuk menghentikan dan memulai ulang layanan, perintah init adalah:
class_reset: Menghentikan layanan, tetapi memungkinkan layanan dimulai ulang dengan class_start.class_start: Memulai ulang layanan.class_stop: Menghentikan layanan dan menambahkan flagSVC_DISABLED. Layanan yang dihentikan tidak meresponsclass_start.
Flows
Ada empat alur untuk perangkat terenkripsi. Perangkat dienkripsi hanya sekali dan kemudian mengikuti alur booting normal.
- Enkripsi perangkat yang sebelumnya tidak dienkripsi:
- Mengenkripsi perangkat baru dengan
forceencrypt: Enkripsi wajib saat booting pertama (dimulai di Android L). - Enkripsi perangkat yang ada: Enkripsi yang dimulai pengguna (Android K dan yang lebih lama).
- Mengenkripsi perangkat baru dengan
- Mulai perangkat terenkripsi:
- Memulai perangkat terenkripsi tanpa sandi: Mem-boot perangkat terenkripsi yang tidak memiliki sandi yang ditetapkan (relevan untuk perangkat yang menjalankan Android 5.0 dan yang lebih baru).
- Memulai perangkat terenkripsi dengan sandi: Mem-booting perangkat terenkripsi yang memiliki sandi yang ditetapkan.
Selain alur ini, perangkat juga dapat gagal mengenkripsi /data.
Setiap alur dijelaskan secara mendetail di bawah.
Mengenkripsi perangkat baru dengan forceencrypt
Ini adalah booting pertama yang normal untuk perangkat Android 5.0.
- Mendeteksi sistem file yang tidak dienkripsi dengan tanda
forceencrypt/datatidak dienkripsi, tetapi harus dienkripsi karena diwajibkan olehforceencrypt. Lepaskan/data. - Mulai mengenkripsi
/datavold.decrypt = "trigger_encryption"memicuinit.rc, yang menyebabkanvoldmengenkripsi/datatanpa sandi. (Tidak ada yang ditetapkan karena ini harus berupa perangkat baru.) - Mount tmpfs
voldmemasang/datatmpfs (menggunakan opsi tmpfs dariro.crypto.tmpfs_options) dan menyetel propertivold.encrypt_progresske 0.voldmenyiapkan tmpfs/datauntuk mem-boot sistem terenkripsi dan menetapkan propertivold.decryptke:trigger_restart_min_framework - Menampilkan framework untuk menunjukkan progres
Karena perangkat hampir tidak memiliki data untuk dienkripsi, status progres tidak akan sering muncul karena enkripsi terjadi dengan sangat cepat. Lihat Mengenkripsi perangkat yang ada untuk mengetahui detail selengkapnya tentang UI progres.
- Jika
/datadienkripsi, hentikan frameworkvoldmenetapkanvold.decryptketrigger_default_encryptionyang memulai layanandefaultcrypto. (Ini memulai alur di bawah untuk memasang userdata terenkripsi default.)trigger_default_encryptionmemeriksa jenis enkripsi untuk melihat apakah/datadienkripsi dengan atau tanpa sandi. Karena perangkat Android 5.0 dienkripsi saat booting pertama, tidak ada sandi yang ditetapkan; oleh karena itu, kita mendekripsi dan memasang/data. - Mount
/datainitkemudian memasang/datadi RAMDisk tmpfs menggunakan parameter yang diambil dariro.crypto.tmpfs_options, yang ditetapkan diinit.rc. - Mulai framework
voldmenetapkanvold.decryptketrigger_restart_framework, yang melanjutkan proses booting seperti biasa.
Mengenkripsi perangkat yang sudah ada
Hal ini terjadi saat Anda mengenkripsi perangkat Android K atau yang lebih lama yang belum dienkripsi dan telah dimigrasikan ke L.
Proses ini dimulai oleh pengguna dan disebut sebagai “enkripsi di tempat” dalam kode. Saat pengguna memilih untuk mengenkripsi perangkat, UI akan memastikan baterai terisi penuh dan adaptor AC dicolokkan sehingga ada daya yang cukup untuk menyelesaikan proses enkripsi.
Peringatan: Jika daya perangkat habis dan perangkat mati sebelum selesai mengenkripsi, data file akan berada dalam keadaan terenkripsi sebagian. Perangkat harus direset ke setelan pabrik dan semua data akan hilang.
Untuk mengaktifkan enkripsi di tempat, vold memulai loop untuk membaca setiap sektor perangkat blok sebenarnya, lalu menulisnya ke perangkat blok kripto. vold memeriksa apakah sektor sedang digunakan sebelum membaca dan menulisnya, sehingga mengenkripsi data jauh lebih cepat di perangkat baru yang memiliki sedikit atau tidak ada data.
Status perangkat: Tetapkan ro.crypto.state = "unencrypted"
dan jalankan pemicu on nonencrypted init untuk melanjutkan booting.
- Periksa sandi
UI memanggil
volddengan perintahcryptfs enablecrypto inplacedenganpasswdadalah sandi layar kunci pengguna. - Menghapus framework
voldmemeriksa error, menampilkan -1 jika tidak dapat mengenkripsi, dan mencetak alasan dalam log. Jika dapat mengenkripsi, propertivold.decryptakan ditetapkan ketrigger_shutdown_framework. Hal ini menyebabkaninit.rcmenghentikan layanan di classlate_startdanmain. - Membuat footer kripto
- Membuat file breadcrumb
- Mulai ulang
- Mendeteksi file breadcrumb
- Mulai mengenkripsi
/datavoldkemudian menyiapkan pemetaan kripto, yang membuat perangkat blok kripto virtual yang dipetakan ke perangkat blok sebenarnya, tetapi mengenkripsi setiap sektor saat ditulis, dan mendekripsi setiap sektor saat dibaca.voldkemudian membuat dan menulis metadata kripto. - Saat mengenkripsi, pasang tmpfs
voldmemasang/datatmpfs (menggunakan opsi tmpfs dariro.crypto.tmpfs_options) dan menyetel propertivold.encrypt_progresske 0.voldmenyiapkan tmpfs/datauntuk booting sistem terenkripsi dan menetapkan propertivold.decryptke:trigger_restart_min_framework - Menampilkan framework untuk menunjukkan progres
trigger_restart_min_frameworkmenyebabkaninit.rcmemulai class layananmain. Saat framework melihat bahwavold.encrypt_progressditetapkan ke 0, framework akan menampilkan UI status progres, yang mengkueri properti tersebut setiap lima detik dan memperbarui status progres. Loop enkripsi memperbaruivold.encrypt_progresssetiap kali mengenkripsi persentase partisi lainnya. - Saat
/datadienkripsi, perbarui footer kriptoJika
/databerhasil dienkripsi,voldakan menghapus flagENCRYPTION_IN_PROGRESSdalam metadata.Saat perangkat berhasil dibuka kuncinya, sandi kemudian digunakan untuk mengenkripsi kunci utama dan footer kripto diperbarui.
Jika mulai ulang gagal karena alasan tertentu,
voldakan menyetel propertivold.encrypt_progresskeerror_reboot_faileddan UI akan menampilkan pesan yang meminta pengguna untuk menekan tombol guna memulai ulang. Hal ini tidak diharapkan akan pernah terjadi.
Memulai perangkat terenkripsi dengan enkripsi default
Inilah yang terjadi saat Anda mem-booting perangkat terenkripsi tanpa sandi. Karena perangkat Android 5.0 dienkripsi saat booting pertama, tidak ada setelan sandi, sehingga ini adalah status enkripsi default.
- Mendeteksi
/dataterenkripsi tanpa sandiMendeteksi bahwa perangkat Android dienkripsi karena
/datatidak dapat dipasang dan salah satu flagencryptableatauforceencryptdisetel.voldmenetapkanvold.decryptketrigger_default_encryption, yang memulai layanandefaultcrypto.trigger_default_encryptionmemeriksa jenis enkripsi untuk melihat apakah/datadienkripsi dengan atau tanpa sandi. - Mendekripsi /data
Membuat perangkat
dm-cryptdi atas perangkat blok sehingga perangkat siap digunakan. - Pasang /data
voldkemudian memasang partisi/dataasli yang didekripsi lalu menyiapkan partisi baru. Tindakan ini menetapkan propertivold.post_fs_data_doneke 0, lalu menetapkanvold.decryptketrigger_post_fs_data. Hal ini menyebabkaninit.rcmenjalankan perintahpost-fs-data-nya. Mereka membuat direktori atau link yang diperlukan, lalu menetapkanvold.post_fs_data_doneke 1.Setelah
voldmelihat 1 di properti tersebut,voldakan menyetel propertivold.decryptke:trigger_restart_framework.Hal ini menyebabkaninit.rcmemulai layanan di classmainlagi dan juga memulai layanan di classlate_startuntuk pertama kalinya sejak booting. - Mulai framework
Sekarang framework mem-boot semua layanannya menggunakan
/datayang didekripsi, dan sistem siap digunakan.
Memulai perangkat terenkripsi tanpa enkripsi default
Inilah yang terjadi saat Anda mem-booting perangkat terenkripsi yang memiliki sandi yang ditetapkan. Sandi perangkat dapat berupa pin, pola, atau sandi.
- Mendeteksi perangkat terenkripsi dengan sandi
Mendeteksi bahwa perangkat Android dienkripsi karena tanda
ro.crypto.state = "encrypted"voldmenetapkanvold.decryptketrigger_restart_min_frameworkkarena/datadienkripsi dengan sandi. - Mount tmpfs
initmenetapkan lima properti untuk menyimpan opsi pemasangan awal yang diberikan untuk/datadengan parameter yang diteruskan dariinit.rc.voldmenggunakan properti ini untuk menyiapkan pemetaan kripto:ro.crypto.fs_typero.crypto.fs_real_blkdevro.crypto.fs_mnt_pointro.crypto.fs_optionsro.crypto.fs_flags(Angka heksadesimal 8 digit ASCII yang diawali dengan 0x)
- Mulai framework untuk meminta sandi
Framework dimulai dan melihat bahwa
vold.decryptditetapkan ketrigger_restart_min_framework. Hal ini memberi tahu framework bahwa framework sedang melakukan booting di disk/datatmpfs dan perlu mendapatkan sandi pengguna.Namun, pertama-tama, sistem harus memastikan bahwa disk telah dienkripsi dengan benar. Tindakan ini akan mengirimkan perintah
cryptfs cryptocompletekevold.voldmenampilkan 0 jika enkripsi berhasil diselesaikan, -1 jika terjadi error internal, atau -2 jika enkripsi tidak berhasil diselesaikan.voldmenentukannya dengan melihat flagCRYPTO_ENCRYPTION_IN_PROGRESSdi metadata kripto. Jika disetel, proses enkripsi terganggu, dan tidak ada data yang dapat digunakan di perangkat. Jikavoldmenampilkan error, UI harus menampilkan pesan kepada pengguna untuk memulai ulang dan mereset perangkat ke setelan pabrik, serta memberi pengguna tombol untuk ditekan agar dapat melakukannya. - Mendekripsi data dengan sandi
Setelah
cryptfs cryptocompleteberhasil, framework akan menampilkan UI yang meminta sandi disk. UI memeriksa sandi dengan mengirim perintahcryptfs checkpwkevold. Jika sandi benar (yang ditentukan dengan berhasil memasang/datayang didekripsi di lokasi sementara, lalu melepasnya),voldakan menyimpan nama perangkat blok yang didekripsi di propertiro.crypto.fs_crypto_blkdevdan menampilkan status 0 ke UI. Jika sandi salah, nilai -1 akan ditampilkan ke UI. - Framework penghentian
UI menampilkan grafik booting kripto, lalu memanggil
volddengan perintahcryptfs restart.voldmenetapkan propertivold.decryptketrigger_reset_main, yang menyebabkaninit.rcmelakukanclass_reset main. Hal ini menghentikan semua layanan di class utama, yang memungkinkan/datatmpfs dilepas. - Mount
/datavoldkemudian memasang partisi/dataasli yang didekripsi dan menyiapkan partisi baru (yang mungkin belum pernah disiapkan jika dienkripsi dengan opsi hapus data, yang tidak didukung pada rilis pertama). Tindakan ini menetapkan propertivold.post_fs_data_doneke 0, lalu menetapkanvold.decryptketrigger_post_fs_data. Hal ini menyebabkaninit.rcmenjalankan perintahpost-fs-data-nya. Mereka membuat direktori atau link yang diperlukan, lalu menetapkanvold.post_fs_data_doneke 1. Saatvoldmelihat 1 di properti tersebut,voldakan menetapkan propertivold.decryptketrigger_restart_framework. Hal ini menyebabkaninit.rcmemulai layanan di classmainlagi dan juga memulai layanan di classlate_startuntuk pertama kalinya sejak booting. - Mulai framework lengkap
Sekarang framework mem-boot semua layanannya menggunakan sistem file
/datayang didekripsi, dan sistem siap digunakan.
Gagal
Perangkat yang gagal mendekripsi mungkin bermasalah karena beberapa alasan. Perangkat dimulai dengan serangkaian langkah normal untuk melakukan booting:
- Mendeteksi perangkat terenkripsi dengan sandi
- Pasang tmpfs
- Mulai framework untuk meminta sandi
Namun, setelah framework terbuka, perangkat dapat mengalami beberapa error:
- Sandi cocok, tetapi tidak dapat mendekripsi data
- Pengguna memasukkan sandi yang salah 30 kali
Jika error ini tidak diselesaikan, minta pengguna untuk menghapus data ke setelan pabrik:
Jika vold mendeteksi error selama proses enkripsi, dan jika
belum ada data yang dihancurkan dan framework sudah aktif, vold akan menyetel
properti vold.encrypt_progress ke error_not_encrypted.
UI akan meminta pengguna untuk melakukan reboot dan memberi tahu mereka bahwa proses enkripsi tidak pernah dimulai. Jika error terjadi setelah framework dihentikan, tetapi
sebelum UI status progres ditampilkan, vold akan memulai ulang sistem. Jika
mulai ulang gagal, vold.encrypt_progress akan disetel ke
error_shutting_down dan menampilkan -1; tetapi tidak akan ada apa pun
untuk menangkap error. Hal ini tidak diharapkan terjadi.
Jika vold mendeteksi error selama proses enkripsi, vold akan menetapkan
vold.encrypt_progress ke error_partially_encrypted
dan menampilkan -1. UI kemudian akan menampilkan pesan yang menyatakan bahwa enkripsi gagal dan menyediakan tombol bagi pengguna untuk mereset perangkat ke setelan pabrik.
Menyimpan kunci terenkripsi
Kunci terenkripsi disimpan dalam metadata kripto. Dukungan hardware diimplementasikan dengan menggunakan kemampuan penandatanganan Trusted Execution Environment (TEE). Sebelumnya, kami mengenkripsi kunci utama dengan kunci yang dibuat dengan menerapkan scrypt ke sandi pengguna dan salt yang disimpan. Untuk membuat kunci yang tangguh terhadap serangan di luar kotak, kami memperluas algoritma ini dengan menandatangani kunci yang dihasilkan dengan kunci TEE yang disimpan. Tanda tangan yang dihasilkan kemudian diubah menjadi kunci panjang yang sesuai dengan satu lagi penerapan scrypt. Kunci ini kemudian digunakan untuk mengenkripsi dan mendekripsi kunci utama. Untuk menyimpan kunci ini:
- Buat kunci enkripsi disk (DEK) 16 byte acak dan salt 16 byte.
- Terapkan scrypt ke sandi pengguna dan salt untuk menghasilkan kunci perantara 1 (IK1) 32 byte.
- Isi IK1 dengan byte nol hingga ukuran kunci pribadi terikat hardware (HBK). Secara khusus, kami melakukan padding sebagai: 00 || IK1 || 00..00; satu byte nol, 32 byte IK1, 223 byte nol.
- Tandatangani IK1 yang di-padding dengan HBK untuk menghasilkan IK2 256 byte.
- Terapkan scrypt ke IK2 dan salt (salt yang sama seperti langkah 2) untuk menghasilkan IK3 32 byte.
- Gunakan 16 byte pertama IK3 sebagai KEK dan 16 byte terakhir sebagai IV.
- Enkripsi DEK dengan AES_CBC, dengan kunci KEK, dan vektor inisialisasi IV.
Mengubah sandi
Saat pengguna memilih untuk mengubah atau menghapus sandi mereka di setelan, UI akan mengirimkan perintah cryptfs changepw ke vold, dan vold akan mengenkripsi ulang kunci master disk dengan sandi baru.
Properti enkripsi
vold dan init saling berkomunikasi dengan
menetapkan properti. Berikut daftar properti yang tersedia untuk enkripsi.
Properti Vold
| Properti | Deskripsi |
|---|---|
vold.decrypt trigger_encryption |
Enkripsi drive tanpa sandi. |
vold.decrypt trigger_default_encryption |
Periksa drive untuk melihat apakah drive dienkripsi tanpa sandi.
Jika ya, dekripsi dan pasang,
jika tidak, setel vold.decrypt ke trigger_restart_min_framework. |
vold.decrypt trigger_reset_main |
Disetel oleh vold untuk mematikan UI yang meminta sandi disk. |
vold.decrypt trigger_post_fs_data |
Ditetapkan oleh vold untuk menyiapkan /data dengan direktori yang diperlukan, dll. |
vold.decrypt trigger_restart_framework |
Ditetapkan oleh vold untuk memulai framework sebenarnya dan semua layanan. |
vold.decrypt trigger_shutdown_framework |
Ditetapkan oleh vold untuk mematikan framework lengkap guna memulai enkripsi. |
vold.decrypt trigger_restart_min_framework |
Ditetapkan oleh vold untuk memulai
UI status progres untuk enkripsi atau
meminta sandi, bergantung pada
nilai ro.crypto.state. |
vold.encrypt_progress |
Saat framework dimulai, jika properti ini disetel, masukkan mode UI status progres. |
vold.encrypt_progress 0 to 100 |
UI status progres harus menampilkan nilai persentase yang ditetapkan. |
vold.encrypt_progress error_partially_encrypted |
UI status progres harus menampilkan pesan bahwa enkripsi gagal, dan memberi pengguna opsi untuk mereset perangkat ke setelan pabrik. |
vold.encrypt_progress error_reboot_failed |
UI status progres harus menampilkan pesan yang menyatakan bahwa enkripsi telah selesai, dan memberi pengguna tombol untuk memulai ulang perangkat. Error ini seharusnya tidak terjadi. |
vold.encrypt_progress error_not_encrypted |
UI status progres harus menampilkan pesan yang menyatakan bahwa terjadi error, tidak ada data yang dienkripsi atau hilang, dan memberi pengguna tombol untuk memulai ulang sistem. |
vold.encrypt_progress error_shutting_down |
UI status progres tidak berjalan, sehingga tidak jelas siapa yang merespons error ini. Dan hal itu seharusnya tidak terjadi. |
vold.post_fs_data_done 0 |
Ditetapkan oleh vold tepat sebelum menyetel vold.decrypt
ke trigger_post_fs_data. |
vold.post_fs_data_done 1 |
Ditetapkan oleh init.rc atau
init.rc tepat setelah menyelesaikan tugas post-fs-data. |
properti init
| Properti | Deskripsi |
|---|---|
ro.crypto.fs_crypto_blkdev |
Ditetapkan oleh perintah vold checkpw untuk digunakan nanti
oleh perintah vold restart. |
ro.crypto.state unencrypted |
Ditetapkan oleh init untuk menyatakan bahwa sistem ini berjalan dengan /data ro.crypto.state encrypted
yang tidak dienkripsi. Ditetapkan oleh init untuk menyatakan
bahwa sistem ini berjalan dengan /data terenkripsi. |
|
Lima properti ini ditetapkan oleh
init saat mencoba memuat /data dengan parameter yang diteruskan dari
init.rc. vold menggunakannya untuk menyiapkan pemetaan kripto. |
ro.crypto.tmpfs_options |
Ditetapkan oleh init.rc dengan opsi yang harus digunakan init saat
memasang sistem file tmpfs /data. |
tindakan init
on post-fs-data on nonencrypted on property:vold.decrypt=trigger_reset_main on property:vold.decrypt=trigger_post_fs_data on property:vold.decrypt=trigger_restart_min_framework on property:vold.decrypt=trigger_restart_framework on property:vold.decrypt=trigger_shutdown_framework on property:vold.decrypt=trigger_encryption on property:vold.decrypt=trigger_default_encryption