Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Enkripsi Disk Penuh

Enkripsi disk penuh adalah proses penyandian semua data pengguna di perangkat Android menggunakan kunci terenkripsi. Setelah perangkat dienkripsi, semua data yang dibuat pengguna dienkripsi secara otomatis 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.
  • Ditambahkan forceencrypt bendera 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 lebih jelasnya.

Perhatian: Perangkat upgrade ke Android 5.0 dan kemudian dienkripsi dapat dikembalikan ke keadaan tidak terenkripsi oleh 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 Tertanam 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 password default didefinisikan dalam Android Open Source Project cryptfs.cpp berkas.

Saat pengguna menyetel PIN/pass atau kata sandi pada perangkat, hanya kunci 128-bit yang dienkripsi ulang dan disimpan. (user PIN / lulus / perubahan pola yaitu. tidak menyebabkan re-enkripsi userdata.) Perhatikan bahwa perangkat berhasil dapat dikenakan pembatasan PIN, pola, atau sandi.

Enkripsi dikelola oleh init dan vold . init panggilan vold , dan vold set properti untuk peristiwa memicu dalam 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 ini menggunakan alat baris perintah vdc 's cryptfs perintah: checkpw , restart , enablecrypto , changepw , cryptocomplete , verifypw , setfield , getfield , mountdefaultencrypted , getpwtype , getpw , dan clearpw .

Dalam rangka untuk mengenkripsi, mendekripsi atau menghapus /data , /data tidak boleh dipasang. Namun, dalam rangka untuk menunjukkan user interface (UI), kerangka harus mulai dan kerangka membutuhkan /data untuk menjalankan. Untuk mengatasi teka-teki ini, filesystem sementara dipasang pada /data . Ini memungkinkan Android untuk meminta kata sandi, menunjukkan kemajuan, atau menyarankan penghapusan data sesuai kebutuhan. Itu tidak memaksakan pembatasan bahwa untuk beralih dari filesystem sementara untuk benar /data filesystem, sistem harus berhenti setiap proses dengan membuka file pada filesystem sementara dan restart proses-proses pada nyata /data filesystem. Untuk melakukan hal ini, semua layanan harus dalam salah satu dari tiga kelompok: core , main , dan late_start .

  • core : Jangan pernah mematikan setelah memulai.
  • main : Shut bawah dan kemudian restart setelah disk password dimasukkan.
  • late_start : Apakah tidak mulai sampai setelah /data telah didekripsi dan dipasang.

Untuk memicu tindakan ini, vold.decrypt properti diatur ke berbagai string . Untuk membunuh dan jasa restart, init perintah adalah:

  • class_reset : Menghentikan layanan tetapi memungkinkan untuk restart dengan class_start.
  • class_start : Restart layanan.
  • class_stop : Menghentikan layanan dan menambahkan SVC_DISABLED bendera. Layanan berhenti tidak menanggapi class_start .

Arus

Ada empat aliran untuk perangkat terenkripsi. Perangkat dienkripsi hanya sekali dan kemudian mengikuti aliran boot normal.

  • Enkripsi perangkat yang sebelumnya tidak terenkripsi:
    • Mengenkripsi perangkat baru dengan forceencrypt : enkripsi Wajib di boot pertama (mulai di Android L).
    • Enkripsi perangkat yang ada: Enkripsi yang dimulai pengguna (Android K dan versi lebih lama).
  • 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 ini juga dapat gagal untuk mengenkripsi /data . Masing-masing aliran dijelaskan secara rinci di bawah ini.

Enkripsi perangkat baru dengan forceencrypt

Ini adalah boot pertama normal untuk perangkat Android 5.0.

  1. Mendeteksi filesystem terenkripsi dengan forceencrypt bendera

    /data tidak dienkripsi tetapi kebutuhan untuk menjadi karena forceencrypt mandat itu. Unmount /data .

  2. Mulai enkripsi /data

    vold.decrypt = "trigger_encryption" pemicu init.rc , yang akan menyebabkan vold untuk mengenkripsi /data tanpa password. (Tidak ada yang disetel karena ini seharusnya merupakan perangkat baru.)

  3. Pasang tmpfs

    vold tunggangan sebuah tmpfs /data (menggunakan pilihan dari tmpfs ro.crypto.tmpfs_options ) dan set properti vold.encrypt_progress ke 0. vold prepepares yang tmpfs /data untuk booting sistem terenkripsi dan set properti vold.decrypt ke: trigger_restart_min_framework

  4. 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 Encrypt perangkat yang ada untuk rincian lebih lanjut tentang kemajuan UI.

  5. Ketika /data dienkripsi, mencatat kerangka

    vold set vold.decrypt untuk trigger_default_encryption yang dimulai pada defaultcrypto layanan. (Ini dimulai aliran bawah untuk pemasangan default dienkripsi userdata.) trigger_default_encryption cek jenis enkripsi untuk melihat apakah /data dienkripsi dengan atau tanpa password. Karena perangkat Android 5.0 dienkripsi pada boot pertama, tidak boleh ada pengaturan kata sandi; oleh karena itu kami mendekripsi dan me-mount /data .

  6. Gunung /data

    init kemudian gunung /data pada tmpfs ramdisk menggunakan parameter diambilnya dari ro.crypto.tmpfs_options , yang diatur dalam init.rc .

  7. Mulai kerangka kerja

    Set vold untuk trigger_restart_framework , yang terus 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 ia memiliki encrypting selesai, data file yang tersisa dalam keadaan sebagian dienkripsi. Perangkat harus dikembalikan ke setelan pabrik dan semua data hilang.

Untuk mengaktifkan enkripsi inplace, vold mulai loop untuk membaca setiap sektor dari perangkat blok nyata dan kemudian menulis ke perangkat blok kripto. vold memeriksa untuk melihat apakah sektor adalah digunakan sebelum membaca dan menulis itu, yang membuat enkripsi lebih cepat pada perangkat baru yang memiliki sedikit data.

Negara perangkat: Set ro.crypto.state = "unencrypted" dan melaksanakan on nonencrypted init pemicu untuk melanjutkan booting.

  1. Periksa kata sandi

    UI panggilan vold dengan perintah cryptfs enablecrypto inplace mana passwd adalah password layar kunci pengguna.

  2. Turunkan kerangkanya

    vold memeriksa kesalahan, kembali -1 jika tidak bisa mengenkripsi, dan mencetak alasan dalam log. Jika dapat mengenkripsi, ia menetapkan properti vold.decrypt untuk trigger_shutdown_framework . Penyebab ini init.rc untuk menghentikan layanan di kelas late_start dan main .

  3. Buat footer kripto
  4. Buat file remah roti
  5. Menyalakan ulang
  6. Deteksi file remah roti
  7. Mulai enkripsi /data

    vold kemudian mendirikan pemetaan kripto, yang menciptakan sebuah perangkat block crypto virtual yang peta ke perangkat blok nyata tetapi mengenkripsi masing-masing sektor seperti yang tertulis, dan mendekripsi masing-masing sektor seperti yang dibaca. vold kemudian menciptakan dan menulis keluar metadata kripto.

  8. Saat sedang mengenkripsi, pasang tmpfs

    vold tunggangan sebuah tmpfs /data (menggunakan pilihan dari tmpfs ro.crypto.tmpfs_options ) dan set properti vold.encrypt_progress ke 0. vold mempersiapkan tmpfs /data untuk booting sistem terenkripsi dan menentukan properti vold.decrypt ke: trigger_restart_min_framework

  9. Munculkan kerangka kerja untuk menunjukkan kemajuan

    trigger_restart_min_framework menyebabkan init.rc untuk memulai main kelas layanan. Ketika kerangka melihat bahwa vold.encrypt_progress diatur ke 0, itu membawa pada progress bar UI, yang query properti yang setiap lima detik dan update progress bar. Update enkripsi lingkaran vold.encrypt_progress setiap kali mengenkripsi persen lain dari partisi.

  10. Ketika /data dienkripsi, memperbarui footer kripto

    Ketika /data berhasil dienkripsi, vold membersihkan bendera ENCRYPTION_IN_PROGRESS dalam metadata.

    Ketika perangkat berhasil dibuka kuncinya, kata sandi kemudian digunakan untuk mengenkripsi kunci master dan footer kripto diperbarui.

    Jika reboot gagal karena beberapa alasan, vold menetapkan properti vold.encrypt_progress untuk error_reboot_failed dan UI harus 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 Android 5.0 perangkat dienkripsi pada boot pertama, seharusnya tidak ada set sandi dan karena ini adalah negara enkripsi default.

  1. Mendeteksi dienkripsi /data tanpa password

    Mendeteksi bahwa perangkat Android dienkripsi karena /data tidak dapat dipasang dan salah satu bendera encryptable atau forceencrypt diatur.

    vold set vold.decrypt untuk trigger_default_encryption , yang dimulai defaultcrypto layanan. trigger_default_encryption cek jenis enkripsi untuk melihat apakah /data dienkripsi dengan atau tanpa password.

  2. Dekripsi /data

    Menciptakan dm-crypt perangkat selama perangkat blok sehingga perangkat siap untuk digunakan.

  3. Pasang /data

    vold kemudian mount didekripsi nyata /data partisi dan kemudian mempersiapkan partisi baru. Ini menetapkan properti vold.post_fs_data_done ke 0 dan kemudian menetapkan vold.decrypt ke trigger_post_fs_data . Penyebab ini init.rc untuk menjalankan nya post-fs-data perintah. Mereka akan menciptakan direktori yang diperlukan atau link dan kemudian set vold.post_fs_data_done ke 1.

    Setelah vold melihat 1 di properti itu, ia menetapkan properti vold.decrypt ke: trigger_restart_framework. Penyebab ini init.rc untuk memulai layanan di kelas main lagi dan juga mulai layanan di kelas late_start untuk pertama kalinya sejak booting.

  4. Mulai kerangka kerja

    Sekarang kerangka sepatu semua layanan menggunakan didekripsi yang /data , dan sistem siap untuk 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.

  1. Deteksi perangkat terenkripsi dengan kata sandi

    Mendeteksi bahwa perangkat Android dienkripsi karena bendera ro.crypto.state = "encrypted"

    vold set vold.decrypt untuk trigger_restart_min_framework karena /data dienkripsi dengan password.

  2. Pasang tmpfs

    init set lima properti untuk menyimpan awal me-mount pilihan yang diberikan untuk /data dengan parameter yang dikirimkan dari init.rc . vold menggunakan sifat ini untuk mengatur pemetaan kripto:

    1. ro.crypto.fs_type
    2. ro.crypto.fs_real_blkdev
    3. ro.crypto.fs_mnt_point
    4. ro.crypto.fs_options
    5. ro.crypto.fs_flags (ASCII nomor hex 8-digit didahului oleh 0x)
  3. Mulai kerangka kerja untuk meminta kata sandi

    Kerangka kerja ini dijalankan dan melihat bahwa vold.decrypt diatur untuk trigger_restart_min_framework . Ini memberitahu kerangka bahwa itu booting pada tmpfs /data disk dan perlu untuk mendapatkan password pengguna.

    Namun, pertama-tama, perlu memastikan bahwa disk telah dienkripsi dengan benar. Ia mengirimkan perintah cryptfs cryptocomplete ke vold . vold kembali 0 jika enkripsi selesai dengan sukses, -1 pada kesalahan internal, atau -2 jika enkripsi tidak berhasil diselesaikan. vold menentukan ini dengan melihat di metadata kripto untuk CRYPTO_ENCRYPTION_IN_PROGRESS bendera. Jika disetel, proses enkripsi terputus, dan tidak ada data yang dapat digunakan pada perangkat. Jika vold kembali kesalahan, UI harus menampilkan pesan ke pengguna untuk reboot dan pabrik ulang perangkat, dan memberikan pengguna tombol untuk tekan untuk melakukannya.

  4. Dekripsi data dengan kata sandi

    Setelah cryptfs cryptocomplete berhasil, menampilkan kerangka UI yang meminta untuk password disk. Cek UI password dengan mengirimkan perintah cryptfs checkpw ke vold . Jika password benar (yang ditentukan oleh berhasil memasang didekripsi /data di lokasi sementara, maka unmounting itu), vold menyimpan nama perangkat blok didekripsi di properti ro.crypto.fs_crypto_blkdev dan kembali statusnya 0 ke UI . Jika kata sandi salah, ia mengembalikan -1 ke UI.

  5. Hentikan kerangka kerja

    UI menempatkan up boot grafis kripto dan kemudian memanggil vold dengan perintah cryptfs restart . vold menetapkan properti vold.decrypt untuk trigger_reset_main , yang menyebabkan init.rc untuk melakukan class_reset main . Ini berhenti semua layanan di kelas utama, yang memungkinkan tmpfs /data menjadi unmount.

  6. Gunung /data

    vold kemudian mount didekripsi nyata /data partisi dan mempersiapkan partisi baru (yang mungkin tidak pernah siap jika itu dienkripsi dengan menghapus pilihan, yang tidak didukung pada rilis pertama). Ini menetapkan properti vold.post_fs_data_done ke 0 dan kemudian menetapkan vold.decrypt ke trigger_post_fs_data . Penyebab ini init.rc untuk menjalankan nya post-fs-data perintah. Mereka akan menciptakan direktori yang diperlukan atau link dan kemudian set vold.post_fs_data_done ke 1. Setelah vold melihat 1 di properti itu, ia menetapkan properti vold.decrypt untuk trigger_restart_framework . Penyebab ini init.rc untuk memulai layanan di kelas main lagi dan juga mulai layanan di kelas late_start untuk pertama kalinya sejak booting.

  7. Mulai kerangka kerja penuh

    Sekarang kerangka sepatu semua layanan menggunakan didekripsi /data filesystem, dan sistem siap untuk digunakan.

Kegagalan

Perangkat yang gagal mendekripsi mungkin salah karena beberapa alasan. Perangkat dimulai dengan serangkaian langkah normal untuk boot:

  1. Deteksi perangkat terenkripsi dengan kata sandi
  2. Pasang tmpfs
  3. 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 diselesaikan, pengguna prompt ke pabrik menghapus:

Jika vold mendeteksi kesalahan selama proses enkripsi, dan jika tidak ada data yang hancur belum dan kerangka kerja sudah habis, vold menetapkan properti vold.encrypt_progress untuk error_not_encrypted . UI meminta pengguna untuk mem-boot ulang dan memberi tahu mereka bahwa proses enkripsi tidak pernah dimulai. Jika kesalahan terjadi setelah kerangka telah diruntuhkan, tapi sebelum progress bar UI up, vold akan reboot sistem. Jika reboot gagal, ia menetapkan vold.encrypt_progress untuk error_shutting_down dan kembali -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 untuk error_partially_encrypted kembali dan -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:

  1. Hasilkan kunci enkripsi disk (DEK) 16-byte acak dan garam 16-byte.
  2. Terapkan scrypt ke kata sandi pengguna dan garam untuk menghasilkan kunci perantara 32-byte 1 (IK1).
  3. 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.
  4. Masuk padded IK1 dengan HBK untuk menghasilkan IK2 256-byte.
  5. Terapkan scrypt ke IK2 dan garam (garam yang sama seperti langkah 2) untuk menghasilkan IK3 32-byte.
  6. Gunakan 16 byte pertama IK3 sebagai KEK dan 16 byte terakhir sebagai IV.
  7. Enkripsi DEK dengan AES_CBC, dengan kunci KEK, dan vektor inisialisasi IV.

Mengubah kata sandi

Ketika pengguna memilih untuk mengubah atau menghapus password mereka dalam pengaturan, UI mengirimkan perintah cryptfs changepw untuk vold , dan vold re-mengenkripsi kunci master disk dengan password baru.

Properti enkripsi

vold dan init berkomunikasi satu sama lain dengan menetapkan 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, mendekripsi dan mount, lain set 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 persiapan /data dengan direktori yang diperlukan, et al.
vold.decrypt trigger_restart_framework Ditetapkan oleh vold untuk memulai kerangka kerja nyata dan semua layanan.
vold.decrypt trigger_shutdown_framework Ditetapkan oleh vold untuk mematikan kerangka kerja penuh untuk memulai enkripsi.
vold.decrypt trigger_restart_min_framework Ditetapkan oleh vold untuk memulai progress bar UI untuk enkripsi atau cepat untuk password, 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 Ditetapkan oleh vold sebelum menetapkan vold.decrypt ke trigger_post_fs_data .
vold.post_fs_data_done 1 Set oleh init.rc atau init.rc hanya setelah menyelesaikan tugas post-fs-data .

init properti

Properti Keterangan
ro.crypto.fs_crypto_blkdev Ditetapkan oleh vold perintah checkpw untuk kemudian digunakan oleh vold perintah restart .
ro.crypto.state unencrypted Set oleh init mengatakan sistem ini berjalan dengan tidak terenkripsi /data ro.crypto.state encrypted . Ditetapkan oleh init mengatakan sistem ini berjalan dengan dienkripsi /data .

ro.crypto.fs_type
ro.crypto.fs_real_blkdev
ro.crypto.fs_mnt_point
ro.crypto.fs_options
ro.crypto.fs_flags

Kelima sifat ditetapkan oleh init ketika mencoba untuk me-mount /data dengan parameter yang dikirimkan dalam dari init.rc . vold menggunakan ini untuk setup pemetaan kripto.
ro.crypto.tmpfs_options Set oleh init.rc dengan pilihan init harus digunakan saat memasang tmpfs /data filesystem.

Inisiasi 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