Enkripsi disk penuh adalah proses penyandian semua data pengguna di perangkat Android menggunakan kunci terenkripsi. Setelah perangkat dienkripsi, semua data yang dibuat pengguna secara otomatis dienkripsi sebelum memasukkannya ke disk dan semua data yang dibaca secara otomatis mendekripsi sebelum mengembalikannya ke proses panggilan.
Enkripsi disk penuh diperkenalkan ke Android di 4.4, tetapi Android 5.0 memperkenalkan fitur baru ini:
- Membuat enkripsi cepat, yang hanya mengenkripsi blok yang digunakan pada partisi data untuk menghindari boot pertama yang memakan waktu lama. Hanya sistem file ext4 dan f2fs yang saat ini mendukung enkripsi cepat.
- Menambahkan flag
forceencrypt
fstab untuk mengenkripsi pada boot pertama. - Menambahkan dukungan untuk pola dan enkripsi tanpa kata sandi.
- Menambahkan penyimpanan kunci enkripsi yang didukung perangkat keras menggunakan kemampuan penandatanganan Trusted Execution Environment (TEE) (seperti di TrustZone). Lihat Menyimpan kunci terenkripsi untuk detail selengkapnya.
Perhatian: Perangkat yang diupgrade ke Android 5.0 dan kemudian dienkripsi dapat dikembalikan ke status tidak terenkripsi dengan reset data pabrik. Perangkat Android 5.0 baru yang dienkripsi saat boot pertama tidak dapat dikembalikan ke status tidak terenkripsi.
Cara kerja enkripsi full-disk Android
Enkripsi full-disk Android didasarkan pada dm-crypt
, yang merupakan fitur kernel yang bekerja pada lapisan perangkat blok. Karena itu, enkripsi bekerja dengan Embedded MultiMediaCard ( eMMC) dan perangkat flash serupa yang menampilkan diri ke kernel sebagai perangkat blok. Enkripsi tidak dimungkinkan dengan YAFFS, yang berbicara langsung ke chip flash NAND mentah.
Algoritma enkripsinya adalah 128 Advanced Encryption Standard (AES) dengan cipher-block chaining (CBC) dan ESSIV:SHA256. Kunci master dienkripsi dengan AES 128-bit melalui panggilan ke perpustakaan OpenSSL. Anda harus menggunakan 128 bit atau lebih untuk kunci (dengan 256 sebagai opsional).
Catatan: OEM dapat menggunakan 128-bit atau lebih tinggi untuk mengenkripsi kunci master.
Dalam rilis Android 5.0, ada empat jenis status enkripsi:
- bawaan
- PIN
- kata sandi
- pola
Saat boot pertama, perangkat membuat kunci master 128-bit yang dibuat secara acak dan kemudian mem-hash-nya dengan kata sandi default dan garam yang disimpan. Kata sandi default adalah: "default_password" Namun, hash yang dihasilkan juga ditandatangani melalui TEE (seperti TrustZone), yang menggunakan hash tanda tangan untuk mengenkripsi kunci master.
Anda dapat menemukan kata sandi default yang ditentukan dalam file cryptfs.cpp Proyek Sumber Terbuka Android.
Ketika pengguna menyetel PIN/pass atau kata sandi pada perangkat, hanya kunci 128-bit yang dienkripsi ulang dan disimpan. (mis. perubahan PIN/pass/pola pengguna TIDAK menyebabkan enkripsi ulang data pengguna.) Perhatikan bahwa perangkat yang dikelola mungkin tunduk pada pembatasan PIN, pola, atau sandi.
Enkripsi dikelola oleh init
dan vold
. init
memanggil vold
, dan vold menyetel properti untuk memicu peristiwa di init. Bagian lain dari sistem juga melihat properti untuk melakukan tugas seperti melaporkan status, meminta kata sandi, atau meminta reset pabrik jika terjadi kesalahan fatal. Untuk memanggil fitur enkripsi di vold
, sistem menggunakan alat baris perintah perintah cryptfs
vdc
: checkpw
, restart
, enablecrypto
, changepw
, cryptocomplete
, verificationpw , verifypw
, setfield
, getfield
, mountdefaultencrypted
, getpwtype
, clearpw
getpw
Untuk mengenkripsi, mendekripsi, atau menghapus /data
, /data
tidak boleh dipasang. Namun, untuk menampilkan antarmuka pengguna (UI), kerangka kerja harus dimulai dan kerangka kerja memerlukan /data
untuk dijalankan. Untuk mengatasi teka-teki ini, sistem file sementara dipasang pada /data
. Ini memungkinkan Android untuk meminta kata sandi, menunjukkan kemajuan, atau menyarankan penghapusan data sesuai kebutuhan. Ini memberlakukan batasan bahwa untuk beralih dari sistem file sementara ke sistem file /data
yang sebenarnya, sistem harus menghentikan setiap proses dengan file yang terbuka pada sistem file sementara dan memulai kembali proses tersebut pada sistem file /data
yang sebenarnya. Untuk melakukan ini, semua layanan harus berada dalam salah satu dari tiga grup: core
, main
, dan late_start
.
-
core
: Jangan pernah mati setelah memulai. -
main
: Matikan lalu mulai ulang setelah kata sandi disk dimasukkan. -
late_start
: Tidak dimulai sampai setelah/data
didekripsi dan dipasang.
Untuk memicu tindakan ini, properti vold.decrypt
disetel ke berbagai string . Untuk mematikan dan memulai kembali layanan, perintah init
adalah:
-
class_reset
: Menghentikan layanan tetapi mengizinkannya untuk dimulai ulang dengan class_start. -
class_start
: Memulai ulang layanan. -
class_stop
: Menghentikan layanan dan menambahkan tandaSVC_DISABLED
. Layanan yang dihentikan tidak meresponsclass_start
.
arus
Ada empat aliran untuk perangkat terenkripsi. Perangkat dienkripsi hanya sekali dan kemudian mengikuti aliran boot normal.
- Enkripsi perangkat yang sebelumnya tidak terenkripsi:
- Enkripsi perangkat baru dengan
forceencrypt
: Enkripsi wajib saat boot pertama (dimulai di Android L). - Enkripsi perangkat yang ada: Enkripsi yang dimulai pengguna (Android K dan versi lebih lama).
- Enkripsi perangkat baru dengan
- Boot perangkat terenkripsi:
- Memulai perangkat terenkripsi tanpa kata sandi: Mem-boot perangkat terenkripsi yang tidak memiliki kata sandi yang ditetapkan (relevan untuk perangkat yang menjalankan Android 5.0 dan yang lebih baru).
- Memulai perangkat terenkripsi dengan kata sandi: Mem-boot perangkat terenkripsi yang memiliki kata sandi yang ditetapkan.
Selain aliran ini, perangkat juga dapat gagal mengenkripsi /data
. Masing-masing aliran dijelaskan secara rinci di bawah ini.
Enkripsi perangkat baru dengan forceencrypt
Ini adalah boot pertama yang normal untuk perangkat Android 5.0.
- Deteksi sistem file yang tidak terenkripsi dengan flag
forceencrypt
/data
tidak dienkripsi tetapi perlu karenaforceencrypt
mengamanatkannya. Lepas/data
. - Mulai enkripsi
/data
vold.decrypt = "trigger_encryption"
memicuinit.rc
, yang akan menyebabkanvold
mengenkripsi/data
tanpa kata sandi. (Tidak ada yang disetel karena ini seharusnya perangkat baru.) - Pasang tmpfs
vold
memasang tmpfs/data
(menggunakan opsi tmpfs dariro.crypto.tmpfs_options
) dan menyetel propertivold.encrypt_progress
ke 0.vold
menyiapkan tmpfs/data
untuk mem-boot sistem terenkripsi dan menyetel propertivold.decrypt
ke:trigger_restart_min_framework
- Munculkan kerangka kerja untuk menunjukkan kemajuan
Karena perangkat hampir tidak memiliki data untuk dienkripsi, bilah kemajuan sering kali tidak benar-benar muncul karena enkripsi terjadi begitu cepat. Lihat Mengenkripsi perangkat yang ada untuk detail selengkapnya tentang UI kemajuan.
- Saat
/data
dienkripsi, hapus kerangkanyavold
menyetelvold.decrypt
ketrigger_default_encryption
yang memulai layanandefaultcrypto
. (Ini memulai alur di bawah untuk memasang data pengguna terenkripsi default.)trigger_default_encryption
memeriksa jenis enkripsi untuk melihat apakah/data
dienkripsi dengan atau tanpa kata sandi. Karena perangkat Android 5.0 dienkripsi pada boot pertama, tidak boleh ada pengaturan kata sandi; oleh karena itu kami mendekripsi dan memasang/data
. - Pasang
/data
init
kemudian me-mount/data
pada tmpfs RAMDisk menggunakan parameter yang diambilnya dariro.crypto.tmpfs_options
, yang diatur diinit.rc
. - Mulai kerangka kerja
Setel
vold
ketrigger_restart_framework
, yang melanjutkan proses boot biasa.
Enkripsi perangkat yang ada
Inilah yang terjadi saat Anda mengenkripsi Android K yang tidak terenkripsi atau perangkat sebelumnya yang telah dimigrasikan ke L.
Proses ini dimulai oleh pengguna dan disebut sebagai "enkripsi di tempat" dalam kode. Saat pengguna memilih untuk mengenkripsi perangkat, UI memastikan baterai terisi penuh dan adaptor AC dicolokkan sehingga ada daya yang cukup untuk menyelesaikan proses enkripsi.
Peringatan: Jika perangkat kehabisan daya dan mati sebelum selesai mengenkripsi, data file dibiarkan dalam status terenkripsi sebagian. Perangkat harus dikembalikan ke setelan pabrik dan semua data hilang.
Untuk mengaktifkan enkripsi di tempat, vold
memulai loop untuk membaca setiap sektor perangkat blok nyata dan kemudian menulisnya ke perangkat blok kripto. vold
memeriksa untuk melihat apakah suatu sektor sedang digunakan sebelum membaca dan menulisnya, yang membuat enkripsi lebih cepat pada perangkat baru yang memiliki sedikit atau tanpa data.
Status perangkat : Setel on nonencrypted
ro.crypto.state = "unencrypted"
dan jalankan pemicu init
yang tidak terenkripsi untuk melanjutkan booting.
- Periksa kata sandi
UI memanggil
vold
dengan perintahcryptfs enablecrypto inplace
di manapasswd
adalah kata sandi layar kunci pengguna. - Turunkan kerangkanya
vold
memeriksa kesalahan, mengembalikan -1 jika tidak dapat mengenkripsi, dan mencetak alasan di log. Jika dapat mengenkripsi, ia menyetel propertivold.decrypt
ketrigger_shutdown_framework
. Ini menyebabkaninit.rc
menghentikan layanan di kelaslate_start
danmain
. - Buat footer kripto
- Buat file remah roti
- Menyalakan ulang
- Deteksi file remah roti
- Mulai enkripsi
/data
vold
kemudian mengatur pemetaan kripto, yang membuat perangkat blok kripto virtual yang memetakan ke perangkat blok nyata tetapi mengenkripsi setiap sektor seperti yang tertulis, dan mendekripsi setiap sektor saat dibaca.vold
kemudian membuat dan menulis metadata kripto. - Saat sedang mengenkripsi, pasang tmpfs
vold
memasang tmpfs/data
(menggunakan opsi tmpfs dariro.crypto.tmpfs_options
) dan menyetel propertivold.encrypt_progress
ke 0.vold
menyiapkan tmpfs/data
untuk mem-boot sistem terenkripsi dan menyetel propertivold.decrypt
ke:trigger_restart_min_framework
- Munculkan kerangka kerja untuk menunjukkan kemajuan
trigger_restart_min_framework
menyebabkaninit.rc
memulai kelasmain
layanan. Ketika framework melihat bahwavold.encrypt_progress
disetel ke 0, ia menampilkan UI bilah kemajuan, yang menanyakan properti itu setiap lima detik dan memperbarui bilah kemajuan. Enkripsi loop memperbaruivold.encrypt_progress
setiap kali mengenkripsi persen lain dari partisi. - Saat
/data
dienkripsi, perbarui catatan kaki kriptoKetika
/data
berhasil dienkripsi,vold
menghapus tandaENCRYPTION_IN_PROGRESS
dalam metadata.Ketika perangkat berhasil dibuka, kata sandi kemudian digunakan untuk mengenkripsi kunci master dan footer kripto diperbarui.
Jika reboot gagal karena beberapa alasan,
vold
menyetel propertivold.encrypt_progress
keerror_reboot_failed
dan UI akan menampilkan pesan yang meminta pengguna untuk menekan tombol untuk reboot. Hal ini diperkirakan tidak akan pernah terjadi.
Memulai perangkat terenkripsi dengan enkripsi default
Inilah yang terjadi ketika Anda mem-boot perangkat terenkripsi tanpa kata sandi. Karena perangkat Android 5.0 dienkripsi pada boot pertama, tidak boleh ada kata sandi yang disetel dan oleh karena itu ini adalah status enkripsi default .
- Deteksi terenkripsi
/data
tanpa kata sandiDeteksi bahwa perangkat Android dienkripsi karena
/data
tidak dapat dipasang dan salah satu flag yang dapatforceencrypt
encryptable
disetel.vold
menyetelvold.decrypt
ketrigger_default_encryption
, yang memulai layanandefaultcrypto
.trigger_default_encryption
memeriksa jenis enkripsi untuk melihat apakah/data
dienkripsi dengan atau tanpa kata sandi. - Dekripsi /data
Membuat perangkat
dm-crypt
di atas perangkat blok sehingga perangkat siap digunakan. - Pasang /data
vold
kemudian memasang partisi/data
nyata yang didekripsi dan kemudian menyiapkan partisi baru. Ini menyetel propertivold.post_fs_data_done
ke 0 dan kemudian menyetelvold.decrypt
ketrigger_post_fs_data
. Ini menyebabkaninit.rc
menjalankan perintahpost-fs-data
. Mereka akan membuat direktori atau tautan yang diperlukan dan kemudian mengaturvold.post_fs_data_done
ke 1.Setelah
vold
melihat 1 di properti itu, ia menyetel propertivold.decrypt
ke:trigger_restart_framework.
Hal ini menyebabkaninit.rc
untuk memulai kembali layanan di kelasmain
dan juga memulai layanan di kelaslate_start
untuk pertama kalinya sejak boot. - Mulai kerangka kerja
Sekarang framework mem-boot semua layanannya menggunakan
/data
yang didekripsi, dan sistem siap digunakan.
Memulai perangkat terenkripsi tanpa enkripsi default
Inilah yang terjadi ketika Anda mem-boot perangkat terenkripsi yang memiliki kata sandi yang ditetapkan. Kata sandi perangkat dapat berupa pin, pola, atau kata sandi.
- Deteksi perangkat terenkripsi dengan kata sandi
Mendeteksi bahwa perangkat Android dienkripsi karena flag
ro.crypto.state = "encrypted"
vold
menyetelvold.decrypt
ketrigger_restart_min_framework
karena/data
dienkripsi dengan kata sandi. - Pasang tmpfs
init
menetapkan lima properti untuk menyimpan opsi pemasangan awal yang diberikan untuk/data
dengan parameter yang diteruskan dariinit.rc
.vold
menggunakan properti ini untuk menyiapkan pemetaan kripto:-
ro.crypto.fs_type
-
ro.crypto.fs_real_blkdev
-
ro.crypto.fs_mnt_point
-
ro.crypto.fs_options
-
ro.crypto.fs_flags
(nomor hex ASCII 8-digit didahului oleh 0x)
-
- Mulai kerangka kerja untuk meminta kata sandi
Kerangka kerja dimulai dan melihat bahwa
vold.decrypt
diatur ketrigger_restart_min_framework
. Ini memberi tahu kerangka kerja bahwa ia sedang boot pada disk tmpfs/data
dan perlu mendapatkan kata sandi pengguna.Namun, pertama-tama, perlu memastikan bahwa disk dienkripsi dengan benar. Ia mengirimkan perintah
cryptfs cryptocomplete
kevold
.vold
mengembalikan 0 jika enkripsi berhasil diselesaikan, -1 pada kesalahan internal, atau -2 jika enkripsi tidak berhasil diselesaikan.vold
menentukan ini dengan melihat dalam metadata kripto untuk flagCRYPTO_ENCRYPTION_IN_PROGRESS
. Jika disetel, proses enkripsi terputus, dan tidak ada data yang dapat digunakan di perangkat. Jikavold
mengembalikan kesalahan, UI akan menampilkan pesan kepada pengguna untuk mem-boot ulang dan mengembalikan perangkat ke setelan pabrik, dan memberi pengguna tombol untuk menekan untuk melakukannya. - Dekripsi data dengan kata sandi
Setelah
cryptfs cryptocomplete
berhasil, kerangka kerja menampilkan UI yang meminta kata sandi disk. UI memeriksa kata sandi dengan mengirimkan perintahcryptfs checkpw
kevold
. Jika kata sandi benar (yang ditentukan dengan berhasil memasang/data
yang didekripsi di lokasi sementara, kemudian melepasnya),vold
menyimpan nama perangkat blok yang didekripsi di propertiro.crypto.fs_crypto_blkdev
dan mengembalikan status 0 ke UI . Jika kata sandi salah, ia mengembalikan -1 ke UI. - Hentikan kerangka kerja
UI memasang grafik boot kripto dan kemudian memanggil
vold
dengan perintahcryptfs restart
.vold
menyetel propertivold.decrypt
ketrigger_reset_main
, yang menyebabkaninit.rc
melakukanclass_reset main
. Ini menghentikan semua layanan di kelas utama, yang memungkinkan tmpfs/data
dilepas. - Pasang
/data
vold
kemudian memasang partisi/data
nyata yang didekripsi dan menyiapkan partisi baru (yang mungkin tidak pernah disiapkan jika dienkripsi dengan opsi penghapusan, yang tidak didukung pada rilis pertama). Ini menyetel propertivold.post_fs_data_done
ke 0 dan kemudian menyetelvold.decrypt
ketrigger_post_fs_data
. Ini menyebabkaninit.rc
menjalankan perintahpost-fs-data
. Mereka akan membuat direktori atau tautan yang diperlukan dan kemudian menyetelvold.post_fs_data_done
ke 1. Setelahvold
melihat 1 di properti itu, ia menyetel propertivold.decrypt
ketrigger_restart_framework
. Hal ini menyebabkaninit.rc
untuk memulai kembali layanan di kelasmain
dan juga memulai layanan di kelaslate_start
untuk pertama kalinya sejak boot. - Mulai kerangka kerja penuh
Sekarang framework mem-boot semua layanannya menggunakan sistem file
/data
yang didekripsi, dan sistem siap digunakan.
Kegagalan
Perangkat yang gagal mendekripsi mungkin salah karena beberapa alasan. Perangkat dimulai dengan serangkaian langkah normal untuk boot:
- Deteksi perangkat terenkripsi dengan kata sandi
- Pasang tmpfs
- Mulai kerangka kerja untuk meminta kata sandi
Tetapi setelah kerangka kerja terbuka, perangkat dapat mengalami beberapa kesalahan:
- Kata sandi cocok tetapi tidak dapat mendekripsi data
- Pengguna memasukkan kata sandi yang salah sebanyak 30 kali
Jika kesalahan ini tidak teratasi, minta pengguna untuk menghapus pabrik :
Jika vold
mendeteksi kesalahan selama proses enkripsi, dan jika belum ada data yang dimusnahkan dan kerangka kerja sudah habis, vold
menyetel properti vold.encrypt_progress
ke error_not_encrypted
. UI meminta pengguna untuk mem-boot ulang dan memperingatkan mereka bahwa proses enkripsi tidak pernah dimulai. Jika kesalahan terjadi setelah kerangka dirobohkan, tetapi sebelum UI bilah kemajuan naik, vold
akan mem-boot ulang sistem. Jika reboot gagal, ini akan menetapkan vold.encrypt_progress
ke error_shutting_down
dan mengembalikan -1; tetapi tidak akan ada apa pun untuk menangkap kesalahan. Hal ini tidak diharapkan terjadi.
Jika vold
mendeteksi kesalahan selama proses enkripsi, ia menetapkan vold.encrypt_progress
ke error_partially_encrypted
dan mengembalikan -1. UI kemudian akan menampilkan pesan yang mengatakan enkripsi gagal dan menyediakan tombol bagi pengguna untuk menyetel ulang perangkat ke pabrik.
Menyimpan kunci terenkripsi
Kunci terenkripsi disimpan dalam metadata kripto. Dukungan perangkat keras diimplementasikan dengan menggunakan kemampuan penandatanganan Trusted Execution Environment (TEE). Sebelumnya, kami mengenkripsi kunci master dengan kunci yang dihasilkan dengan menerapkan scrypt ke kata sandi pengguna dan garam yang disimpan. Untuk membuat kunci tahan terhadap serangan off-box, kami memperluas algoritme ini dengan menandatangani kunci yang dihasilkan dengan kunci TEE yang disimpan. Tanda tangan yang dihasilkan kemudian diubah menjadi kunci panjang yang sesuai dengan satu aplikasi scrypt lagi. Kunci ini kemudian digunakan untuk mengenkripsi dan mendekripsi kunci master. Untuk menyimpan kunci ini:
- Hasilkan kunci enkripsi disk (DEK) 16-byte acak dan garam 16-byte.
- Terapkan scrypt ke kata sandi pengguna dan garam untuk menghasilkan kunci perantara 32-byte 1 (IK1).
- Pad IK1 dengan nol byte seukuran kunci pribadi terikat perangkat keras (HBK). Secara khusus, kami pad sebagai: 00 || IK1 || 00.00; satu nol byte, 32 IK1 byte, 223 nol byte.
- Masuk padded IK1 dengan HBK untuk menghasilkan IK2 256-byte.
- Terapkan scrypt ke IK2 dan garam (garam 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 kata sandi
Ketika pengguna memilih untuk mengubah atau menghapus kata sandi mereka di pengaturan, UI mengirimkan perintah cryptfs changepw
ke vold
, dan vold
mengenkripsi ulang kunci master disk dengan kata sandi baru.
Properti enkripsi
vold
dan init
berkomunikasi satu sama lain dengan mengatur properti. Berikut adalah daftar properti yang tersedia untuk enkripsi.
Properti Vold
Properti | Keterangan |
---|---|
vold.decrypt trigger_encryption | Enkripsi drive tanpa kata sandi. |
vold.decrypt trigger_default_encryption | Periksa drive untuk melihat apakah itu dienkripsi tanpa kata sandi. Jika ya, dekripsi dan pasang, jika tidak, setel vold.decrypt ke trigger_restart_min_framework. |
vold.decrypt trigger_reset_main | Diatur oleh vold untuk mematikan UI yang meminta kata sandi disk. |
vold.decrypt trigger_post_fs_data | Ditetapkan oleh vold untuk menyiapkan /data dengan direktori yang diperlukan, dkk. |
vold.decrypt trigger_restart_framework | Ditetapkan oleh vold untuk memulai kerangka kerja nyata dan semua layanan. |
vold.decrypt trigger_shutdown_framework | Diatur oleh vold untuk mematikan kerangka kerja penuh untuk memulai enkripsi. |
vold.decrypt trigger_restart_min_framework | Ditetapkan oleh vold untuk memulai UI bilah kemajuan untuk enkripsi atau permintaan kata sandi, tergantung pada nilai ro.crypto.state . |
vold.encrypt_progress | Saat kerangka kerja dimulai, jika properti ini disetel, masuk ke mode UI bilah kemajuan. |
vold.encrypt_progress 0 to 100 | UI bilah kemajuan harus menampilkan nilai persentase yang ditetapkan. |
vold.encrypt_progress error_partially_encrypted | UI bilah kemajuan akan menampilkan pesan bahwa enkripsi gagal, dan memberi pengguna opsi untuk menyetel ulang perangkat ke setelan pabrik. |
vold.encrypt_progress error_reboot_failed | UI bilah kemajuan akan menampilkan pesan yang mengatakan enkripsi selesai, dan memberi pengguna tombol untuk mem-boot ulang perangkat. Kesalahan ini tidak diharapkan terjadi. |
vold.encrypt_progress error_not_encrypted | UI bilah kemajuan akan menampilkan pesan yang mengatakan terjadi kesalahan, tidak ada data yang dienkripsi atau hilang, dan memberi pengguna tombol untuk mem-boot ulang sistem. |
vold.encrypt_progress error_shutting_down | UI bilah kemajuan tidak berjalan, jadi tidak jelas siapa yang akan merespons kesalahan ini. Dan itu seharusnya tidak pernah terjadi. |
vold.post_fs_data_done 0 | Setel oleh vold 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 . |
init properti
Properti | Keterangan |
---|---|
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 mengatakan sistem ini berjalan dengan /data ro.crypto.state encrypted . Ditetapkan oleh init untuk mengatakan sistem ini berjalan dengan /data terenkripsi. |
| Kelima properti ini disetel oleh init ketika mencoba me-mount /data dengan parameter yang diteruskan dari init.rc . vold menggunakan ini untuk mengatur pemetaan kripto. |
ro.crypto.tmpfs_options | Ditetapkan oleh init.rc dengan opsi yang harus digunakan init saat memasang sistem file tmpfs /data . |
Init tindakan
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