Enkripsi {i>full-disk <i}adalah proses encoding semua data pengguna pada sebuah perangkat Android menggunakan kunci yang dienkripsi. Setelah perangkat dienkripsi, semua data yang dibuat pengguna akan otomatis dienkripsi sebelum di-commit ke disk dan semua operasi baca akan otomatis mendekripsi data sebelum menampilkannya ke proses panggilan.
Enkripsi {i>full-disk<i} diperkenalkan ke Android pada 4.4, tetapi Android 5.0 diperkenalkan fitur baru ini:
- Enkripsi cepat dibuat, yang hanya mengenkripsi blok yang digunakan pada partisi data menghindari {i>booting<i} pertama yang memakan waktu lama. Hanya sistem file ext4 dan f2fs saat ini mendukung enkripsi cepat.
- Menambahkan
forceencrypt
flag fstab untuk dienkripsi saat booting pertama. - Menambahkan dukungan untuk pola dan enkripsi tanpa sandi.
- Menambahkan penyimpanan kunci enkripsi yang didukung hardware menggunakan fitur Tepercaya Kemampuan penandatanganan Execution Environment (TEE) (seperti dalam TrustZone). Lihat Menyimpan kunci terenkripsi untuk mengetahui detail selengkapnya.
Perhatian: Perangkat yang diupgrade ke Android 5.0, lalu dienkripsi, dapat dikembalikan ke status yang tidak dienkripsi dengan reset data pabrik. Perangkat Android 5.0 baru yang dienkripsi saat booting pertama tidak dapat dikembalikan ke status yang tidak dienkripsi.
Cara kerja enkripsi disk penuh Android
Enkripsi disk penuh Android didasarkan pada dm-crypt
, yang merupakan kernel
yang berfungsi di lapisan
perangkat blok. Oleh karena
hal ini, enkripsi berfungsi dengan Embedded MultiMediaCard (eMMC) dan
perangkat flash serupa yang menampilkan diri ke kernel sebagai perangkat
blok. Enkripsi tidak dimungkinkan dengan YAFFS, yang berkomunikasi langsung dengan
dengan chip flash NAND.
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 library OpenSSL. Anda harus menggunakan 128 bit atau lebih untuk kunci (dengan 256 bersifat opsional).
Catatan: OEM dapat menggunakan 128-bit atau lebih tinggi untuk mengenkripsi kunci master.
Dalam rilis Android 5.0, ada empat jenis status enkripsi:
- default
- PIN
- sandi
- pola
Saat booting pertama, perangkat membuat kunci master 128-bit yang dihasilkan secara acak dan kemudian melakukan {i>hash <i}dengan {i> password<i} {i>default<i} dan {i>salt<i} yang tersimpan. Sandi defaultnya adalah: "default_password" Namun, {i>hash<i} yang dihasilkan juga ditandatangani melalui TEE (seperti TrustZone), yang menggunakan {i>hash <i}dari tanda tangan untuk mengenkripsi kunci utama.
Anda dapat menemukan sandi default yang ditentukan dalam file cryptfs.cpp Project Open Source Android.
Saat pengguna menetapkan PIN/sandi atau sandi di perangkat, hanya kunci 128-bit yang dienkripsi ulang dan disimpan. (misalnya perubahan PIN/pass/pola pengguna TIDAK menyebabkan enkripsi ulang data pengguna.) Perlu diketahui bahwa perangkat terkelola mungkin tunduk kepada batasan PIN, pola, atau sandi.
Enkripsi dikelola oleh init
dan vold
.
init
memanggil vold
, dan vold menetapkan properti untuk memicu
peristiwa dalam init. Bagian lain sistem
juga melihat properti untuk melakukan tugas seperti melaporkan status, meminta
sandi, atau meminta reset pabrik jika terjadi error fatal. Untuk memanggil
fitur enkripsi di vold
, sistem menggunakan alat command line
perintah cryptfs
vdc
: checkpw
,
restart
, enablecrypto
, changepw
,
cryptocomplete
, verifypw
, setfield
,
getfield
, mountdefaultencrypted
, getpwtype
,
getpw
, dan clearpw
.
Untuk mengenkripsi, mendekripsi, atau menghapus total /data
, /data
tidak boleh dipasang. Namun, untuk menampilkan antarmuka pengguna (UI),
framework harus dimulai dan framework memerlukan /data
agar dapat berjalan. Kepada
Untuk mengatasi teka-teki ini, sistem file sementara dipasang di /data
.
Hal ini memungkinkan Android meminta sandi, menampilkan progres, atau menyarankan penghapusan
data sesuai kebutuhan. Hal 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 ulang proses tersebut
proses pada 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 sebelum/data
didekripsi dan dipasang.
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 memungkinkannya dimulai ulang dengan class_start.class_start
: Memulai ulang layanan.class_stop
: Menghentikan layanan dan menambahkan tandaSVC_DISABLED
. Layanan yang dihentikan tidak meresponsclass_start
.
Alur
Ada empat alur untuk perangkat terenkripsi. Perangkat dienkripsi hanya sekali, lalu mengikuti alur booting normal.
- Mengenkripsi perangkat yang sebelumnya tidak dienkripsi:
- Enkripsi 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).
- Enkripsi perangkat baru dengan
- Booting perangkat terenkripsi:
- Memulai perangkat terenkripsi tanpa sandi: Melakukan booting perangkat terenkripsi yang tidak memiliki kata sandi yang disetel (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 alurnya dijelaskan secara mendetail di bawah ini.
Mengenkripsi perangkat baru dengan forceencrypt
Ini adalah booting pertama normal untuk perangkat Android 5.0.
- Deteksi sistem file yang tidak dienkripsi dengan tanda
forceencrypt
/data
tidak dienkripsi, tetapi harus dienkripsi karenaforceencrypt
mewajibkannya. Lepaskan/data
. - Mulai mengenkripsi
/data
vold.decrypt = "trigger_encryption"
memicuinit.rc
, yang menyebabkanvold
mengenkripsi/data
tanpa sandi. (Tidak ada yang ditetapkan karena ini harus berupa perangkat baru.) - Memasang tmpfs
vold
memasang tmpfs/data
(menggunakan opsi tmpfs dariro.crypto.tmpfs_options
) dan menetapkan propertivold.encrypt_progress
ke 0.vold
menyiapkan tmpfs/data
untuk mem-booting sistem terenkripsi dan menetapkan propertivold.decrypt
ke: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 begitu cepat. Lihat Enkripsi perangkat yang ada untuk mendapatkan informasi lainnya detail tentang UI progres.
- Saat
/data
dienkripsi, hapus frameworkvold
menetapkanvold.decrypt
ketrigger_default_encryption
yang memulai Layanandefaultcrypto
. (Tindakan ini akan memulai alur di bawah untuk memasang userdata terenkripsi default.)trigger_default_encryption
memeriksa jenis enkripsi untuk melihat apakah/data
dienkripsi dengan atau tanpa sandi. Karena perangkat Android 5.0 dienkripsi pada saat {i>booting<i} pertama, harus ada {i>password<i} belum diatur; oleh karena itu, kita mendekripsi dan memasang/data
. - Pasang
/data
init
lalu memasang/data
pada tmpfs RAMDisk menggunakan parameter yang diambil dariro.crypto.tmpfs_options
, yang disetel dalaminit.rc
. - Framework awal
vold
menetapkanvold.decrypt
ketrigger_restart_framework
, yang melanjutkan booting biasa {i>checkout<i}.
Mengenkripsi perangkat yang ada
Inilah yang terjadi ketika Anda mengenkripsi Android K atau versi sebelumnya perangkat 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 tersedia cukup kekuatan untuk menyelesaikan proses enkripsi.
Peringatan: Jika daya perangkat habis dan perangkat mati sebelum selesai mengenkripsi, data file akan dibiarkan dalam status terenkripsi sebagian. Perangkat harus direset ke setelan pabrik dan semua data akan hilang.
Untuk mengaktifkan enkripsi di tempat, vold
memulai loop untuk membaca setiap pesan
sektor dari perangkat blok sesungguhnya
dan kemudian menulisnya
ke perangkat blok kripto. vold
memeriksa apakah suatu sektor berada dalam
digunakan sebelum membaca dan
menulisnya, yang akan membuat
enkripsi jauh lebih cepat pada perangkat
baru yang memiliki sedikit atau tanpa data sama sekali.
Status perangkat: Setel ro.crypto.state = "unencrypted"
dan jalankan pemicu on nonencrypted
init
untuk melanjutkan booting.
- Periksa sandi
UI memanggil
vold
dengan perintahcryptfs enablecrypto inplace
denganpasswd
adalah sandi layar kunci pengguna. - Membongkar framework
vold
memeriksa error, menampilkan -1 jika tidak dapat mengenkripsi, dan mencetak alasannya dalam log. Jika dapat mengenkripsi, properti akan menetapkanvold.decrypt
ketrigger_shutdown_framework
. Ini menyebabkaninit.rc
menghentikan layanan di classlate_start
danmain
. - Membuat footer kripto
- Membuat file breadcrumb
- Mulai ulang
- Mendeteksi file breadcrumb
- Mulai mengenkripsi
/data
vold
kemudian menyiapkan pemetaan kripto, yang membuat perangkat blok kripto virtual yang dipetakan ke perangkat blok asli tetapi mengenkripsi setiap sektor seperti yang tertulis, dan membongkar enkripsi setiap sektor saat dibaca.vold
lalu membuat dan menulis metadata kripto. - Saat mengenkripsi, pasang tmpfs
vold
memasang tmpfs/data
(menggunakan opsi tmpfs dariro.crypto.tmpfs_options
) dan menetapkan propertivold.encrypt_progress
ke 0.vold
menyiapkan tmpf/data
untuk mem-booting sistem terenkripsi dan menyetel propertivold.decrypt
menjadi:trigger_restart_min_framework
- Menampilkan framework untuk menunjukkan progres
trigger_restart_min_framework
menyebabkaninit.rc
memulai class layananmain
. Saat framework melihat bahwavold.encrypt_progress
ditetapkan ke 0, framework akan menampilkan UI status progres, yang mengkueri properti tersebut setiap lima detik dan memperbarui status progres. Loop enkripsi memperbaruivold.encrypt_progress
setiap kali mengenkripsi persentase lain dari partisi. - Saat
/data
dienkripsi, perbarui footer kriptoJika
/data
berhasil dienkripsi,vold
akan menghapus tandaENCRYPTION_IN_PROGRESS
dalam metadata.Saat perangkat berhasil dibuka kuncinya, sandi kemudian digunakan untuk mengenkripsi kunci master dan footer kripto diperbarui.
Jika mulai ulang gagal karena alasan tertentu,
vold
akan menetapkan propertivold.encrypt_progress
keerror_reboot_failed
dan UI akan menampilkan pesan yang meminta pengguna untuk menekan tombol guna memulai ulang. Hal ini tidak diharapkan akan terjadi.
Memulai perangkat terenkripsi dengan enkripsi default
Inilah yang terjadi ketika Anda mem-{i>booting<i} perangkat terenkripsi tanpa {i>password<i}. Karena perangkat Android 5.0 dienkripsi saat {i>booting<i} pertama, seharusnya tidak ada sandi, sehingga ini adalah status enkripsi default.
- Deteksi
/data
yang dienkripsi tanpa sandiMendeteksi bahwa perangkat Android dienkripsi karena
/data
tidak dapat dipasang dan salah satu penandaencryptable
atauforceencrypt
disetel.vold
menetapkanvold.decrypt
ketrigger_default_encryption
, yang memulai Layanandefaultcrypto
.trigger_default_encryption
memeriksa jenis enkripsi untuk melihat apakah/data
dienkripsi dengan atau tanpa sandi. - Mendekripsi /data
Membuat perangkat
dm-crypt
melalui perangkat blok sehingga perangkat siap digunakan. - Memasang /data
vold
lalu memasang partisi/data
asli yang didekripsi dan kemudian menyiapkan partisi baru. Hal ini menetapkan propertivold.post_fs_data_done
ke 0, lalu menetapkanvold.decrypt
ketrigger_post_fs_data
. Hal ini menyebabkaninit.rc
menjalankan perintahpost-fs-data
-nya. Fungsi ini membuat direktori atau link yang diperlukan, lalu menetapkanvold.post_fs_data_done
ke 1.Setelah
vold
melihat angka 1 di properti tersebut, properti akan ditetapkanvold.decrypt
ke:trigger_restart_framework.
Ini menyebabkaninit.rc
memulai layanan di classmain
lagi dan memulai layanan di kelaslate_start
untuk waktu sejak booting. - Mulai framework
Sekarang, framework akan mem-booting semua layanannya menggunakan
/data
yang didekripsi, dan sistem siap digunakan.
Memulai perangkat terenkripsi tanpa enkripsi default
Inilah yang terjadi ketika Anda mem-{i>booting<i} perangkat terenkripsi yang memiliki set {i>password<i}. Sandi perangkat dapat berupa PIN, pola, atau sandi.
- Mendeteksi perangkat terenkripsi dengan sandi
Mendeteksi bahwa perangkat Android dienkripsi karena flag
ro.crypto.state = "encrypted"
vold
menetapkanvold.decrypt
ketrigger_restart_min_framework
karena/data
dienkripsi dengan sandi. - Memasang 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
(angka heksadesimal 8 digit ASCII yang didahului 0x)
- Memulai framework untuk meminta sandi
Framework dimulai dan melihat bahwa
vold.decrypt
disetel ketrigger_restart_min_framework
. Hal ini memberi tahu kerangka kerja bahwa melakukan booting pada disk/data
tmpfs dan perlu mendapatkan sandi pengguna.Pertama, perlu dipastikan bahwa {i>disk<i} telah dienkripsi dengan benar. Ini mengirimkan perintah
cryptfs cryptocomplete
kevold
.vold
menampilkan 0 jika enkripsi berhasil diselesaikan, -1 pada error internal, atau -2 jika enkripsi tidak berhasil diselesaikan.vold
menentukan hal ini dengan mencari flagCRYPTO_ENCRYPTION_IN_PROGRESS
di metadata kripto. Jika disetel, proses enkripsi terganggu, dan tidak ada data yang dapat digunakan di perangkat. Jikavold
menampilkan error, UI akan menampilkan pesan kepada pengguna untuk me-{i>reboot<i} dan mereset perangkat ke setelan pabrik, dan memberi pengguna menekan tombol untuk melakukannya. - Mendekripsi data dengan sandi
Setelah
cryptfs cryptocomplete
berhasil, framework akan menampilkan UI yang meminta sandi disk. UI memeriksa sandi dengan mengirim perintahcryptfs checkpw
kevold
. Jika sandi sudah benar (yang ditentukan dengan berhasil memasang/data
yang didekripsi di lokasi sementara, lalu melepasnya),vold
akan menyimpan nama perangkat blok yang didekripsi di propertiro.crypto.fs_crypto_blkdev
dan menampilkan status 0 ke UI. Jika salah, sandi akan menampilkan -1 ke UI. - Menghentikan framework
UI akan menampilkan grafis boot kriptografis, lalu memanggil
vold
dengan perintahcryptfs restart
.vold
menetapkan propertivold.decrypt
hinggatrigger_reset_main
, yang menyebabkaninit.rc
untuk melakukanclass_reset main
. Tindakan ini akan menghentikan semua layanan di class utama, yang memungkinkan/data
tmpfs dilepas. - Memasang
/data
vold
kemudian memasang partisi/data
sebenarnya yang didekripsi dan menyiapkan partisi baru (yang mungkin tidak pernah disiapkan jika dienkripsi dengan opsi penghapusan total, yang tidak didukung pada rilis pertama). Fungsi ini menetapkan propertivold.post_fs_data_done
ke 0, lalu menetapkanvold.decrypt
ketrigger_post_fs_data
. Hal ini menyebabkaninit.rc
menjalankan perintahpost-fs-data
-nya. Fungsi ini membuat direktori atau link yang diperlukan, lalu menetapkanvold.post_fs_data_done
ke 1. Saatvold
melihat angka 1 in properti tersebut, fungsi ini menetapkan propertivold.decrypt
ketrigger_restart_framework
. Hal ini menyebabkaninit.rc
memulai layanan di classmain
lagi dan juga memulai layanan di classlate_start
untuk pertama kalinya sejak booting. - Mulai framework lengkap
Sekarang framework akan mem-booting semua layanannya menggunakan
/data
yang didekripsi sistem file, dan sistem itu siap digunakan.
Gagal
Perangkat yang gagal mendekripsi mungkin akan bermasalah karena beberapa alasan. Perangkat mulai dengan serangkaian langkah normal untuk melakukan booting:
- Deteksi 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 teratasi, minta pengguna untuk melakukan reset ke setelan pabrik:
Jika vold
mendeteksi error selama proses enkripsi, dan jika
belum ada data yang dihancurkan dan framework sudah aktif, vold
akan menetapkan
properti vold.encrypt_progress
ke error_not_encrypted
.
UI meminta pengguna untuk memulai ulang dan memberi tahu mereka bahwa proses enkripsi
tidak pernah dimulai. Jika {i>error <i}terjadi setelah {i>framework<i} dihapus, tapi
sebelum UI status progres aktif, vold
akan memulai ulang sistem. Jika
mulai ulang gagal, vold.encrypt_progress
akan ditetapkan ke
error_shutting_down
dan menampilkan -1; tetapi tidak akan ada
yang menangkap error. Hal ini tidak diharapkan terjadi.
Jika vold
mendeteksi error selama proses enkripsi, sistem akan menetapkan
vold.encrypt_progress
ke error_partially_encrypted
dan menghasilkan -1. UI kemudian akan menampilkan pesan yang mengatakan bahwa
gagal dan menyediakan tombol bagi pengguna
untuk melakukan {i>factory reset<i} perangkat.
Simpan kunci yang dienkripsi
Kunci terenkripsi disimpan dalam metadata crypto. Dukungan hardware yang diimplementasikan dengan menggunakan kemampuan penandatanganan Trusted Execution Environment (TEE). Sebelumnya, kita mengenkripsi kunci master dengan kunci yang dihasilkan dengan menerapkan scrypt ke sandi pengguna dan salt yang disimpan. Agar kunci tahan 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 aplikasi scrypt lagi. Kunci ini kemudian digunakan untuk mengenkripsi dan mendekripsi kunci master. Untuk menyimpan kunci ini:
- Buat kunci enkripsi disk (DEK) acak 16 byte dan salt 16 byte.
- Menerapkan scrypt ke sandi pengguna dan salt untuk menghasilkan perantara 32 byte tombol 1 (IK1).
- Pad IK1 dengan nol byte untuk ukuran kunci pribadi yang terikat hardware (HBK). Secara khusus, kita berikan: 00 || IK1 || 00..00; satu byte nol, 32 IK1 byte, 223 0 byte.
- Tanda tangani IK1 yang ditambahkan dengan HBK untuk menghasilkan IK2 256 byte.
- Terapkan scrypt ke IK2 dan salt (salt yang sama dengan langkah 2) untuk menghasilkan IK3 32 byte.
- Gunakan 16 byte IK3 pertama sebagai KEK dan 16 byte terakhir sebagai IV.
- Enkripsi DEK dengan AES_CBC, dengan kunci KEK, dan initialization vector IV.
Mengubah sandi
Saat pengguna memilih untuk mengubah atau
menghapus {i>password<i} mereka di pengaturan, UI akan mengirim
perintah cryptfs changepw
ke vold
, dan
vold
mengenkripsi ulang kunci master disk dengan sandi baru.
Properti enkripsi
vold
dan init
berkomunikasi satu sama lain dengan
properti setelan. Berikut adalah daftar properti yang tersedia untuk enkripsi.
Properti vold
Properti | Deskripsi |
---|---|
vold.decrypt trigger_encryption |
Mengenkripsi drive tanpa sandi. |
vold.decrypt trigger_default_encryption |
Periksa {i>drive<i} untuk melihat apakah
dienkripsi tanpa sandi.
Jika ya, dekripsi dan memasangnya,
Jika tidak, tetapkan vold.decrypt ke trigger_restart_min_framework. |
vold.decrypt trigger_reset_main |
Setel by 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 |
Disetel oleh vold untuk memulai framework sebenarnya dan semua layanan. |
vold.decrypt trigger_shutdown_framework |
Ditetapkan oleh vold untuk menonaktifkan 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 ditetapkan, 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 akan menampilkan pesan bahwa enkripsi gagal, dan memberi pengguna opsi untuk mereset perangkat ke setelan pabrik. |
vold.encrypt_progress error_reboot_failed |
UI status progres akan menampilkan pesan yang menyatakan bahwa enkripsi telah selesai, dan memberi pengguna tombol untuk memulai ulang perangkat. Error ini tidak seharusnya terjadi. |
vold.encrypt_progress error_not_encrypted |
UI status progres harus menampilkan pesan yang menyatakan bahwa error terjadi, 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 terhadap error ini. Dan itu seharusnya tidak terjadi. |
vold.post_fs_data_done 0 |
Tetapkan oleh vold tepat sebelum menetapkan vold.decrypt
ke trigger_post_fs_data . |
vold.post_fs_data_done 1 |
Tetapkan 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
sistem ini berjalan dengan /data terenkripsi. |
|
Lima properti ini ditetapkan oleh
init saat mencoba memasang /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 /data tmpfs. |
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