Tam Disk Şifreleme

Tam disk şifreleme, şifreli bir anahtar kullanarak bir Android cihazdaki tüm kullanıcı verilerini kodlama işlemidir. Bir cihaz şifrelendiğinde, kullanıcı tarafından oluşturulan tüm veriler, diske kaydedilmeden önce otomatik olarak şifrelenir ve tüm okumalar, arama işlemine geri dönmeden önce verilerin şifresini otomatik olarak çözer.

Tam disk şifreleme, 4.4'te Android'e tanıtıldı, ancak Android 5.0 şu yeni özellikleri tanıttı:

  • İlk başlatmanın uzun sürmesini önlemek için yalnızca veri bölümünde kullanılan blokları şifreleyen hızlı şifreleme oluşturuldu. Şu anda yalnızca ext4 ve f2fs dosya sistemleri hızlı şifrelemeyi desteklemektedir.
  • Eklenen forceencrypt fstab bayrağı ilk açılışta şifrelemek için.
  • Parola olmadan desenler ve şifreleme için destek eklendi.
  • Güvenilir Yürütme Ortamı'nın (TEE) imzalama yeteneği (örneğin, bir TrustZone'da) kullanılarak şifreleme anahtarının donanım destekli depolaması eklendi. Bkz şifreli anahtar saklama Daha fazla ayrıntı için.

Dikkat: Android 5.0 yükseltilmiş ve daha sonra şifreli cihazlar fabrika verilerine sıfırlama tarafından şifrelenmemiş duruma döndürülebilir. İlk açılışta şifrelenen yeni Android 5.0 cihazları şifrelenmemiş duruma döndürülemez.

Android tam disk şifreleme nasıl çalışır?

Android tam disk şifreleme dayanmaktadır dm-crypt bir çekirdek özelliğidir, bu blok aygıt katmanında çalışır. Bu nedenle, Gömülü MultiMediaCard (eMMC) ve benzeri flaş cihazlarla şifreleme çalışmaları blok cihazları gibi çekirdeğe kendilerini. Doğrudan ham bir NAND flash çipiyle konuşan YAFS ile şifreleme mümkün değildir.

Şifreleme algoritması, şifreleme bloğu zincirleme (CBC) ve ESSIV:SHA256 ile 128 Gelişmiş Şifreleme Standardı'dır (AES). Ana anahtar, OpenSSL kitaplığına yapılan çağrılar yoluyla 128 bit AES ile şifrelenir. Anahtar için 128 bit veya daha fazlasını kullanmalısınız (256 isteğe bağlıdır).

Not: OEM ana anahtarını şifrelemek için 128 bit veya daha kullanabilir.

Android 5.0 sürümünde dört tür şifreleme durumu vardır:

  • varsayılan
  • TOPLU İĞNE
  • parola
  • Desen

İlk önyüklemede, aygıt rastgele oluşturulmuş bir 128 bitlik ana anahtar oluşturur ve ardından bunu varsayılan bir parola ve depolanmış tuzla hash eder. Varsayılan parola: "default_password" Ancak, elde edilen karma, ana anahtarı şifrelemek için imzanın bir karma değerini kullanan bir TEE (örneğin TrustZone) aracılığıyla da imzalanır.

Android Açık Kaynak Projesi tanımlanan varsayılan şifreyi bulabilirsiniz cryptfs.cpp dosyası.

Kullanıcı cihazda PIN/parola veya parola belirlediğinde, yalnızca 128 bitlik anahtar yeniden şifrelenir ve saklanır. (yani. kullanıcı PIN / pas / desen değişiklikleri userdata yeniden şifrelenmesi neden olmazlar.) o Not yönetilen cihaz PIN, desen veya şifre kısıtlamalara tabi olabilir.

Şifreleme tarafından yönetilir init ve vold . init çağıran vold init tetik olaylara ve vold setleri özelliklerini. Sistemin diğer bölümleri ayrıca, durum bildirme, parola sorma veya önemli bir hata durumunda fabrika ayarlarına sıfırlama istemi gibi görevleri gerçekleştirmek için özelliklere de bakar. Şifreleme özellikleri çağırmak için vold , sistem komut satırı aracı kullanan vdc 'ler cryptfs : komutlar checkpw , restart , enablecrypto , changepw , cryptocomplete , verifypw , setfield , getfield , mountdefaultencrypted , getpwtype , getpw ve clearpw .

Şifrelemek, şifresini veya ıslak mendil için /data , /data monte edilmemelidir. Bununla birlikte, herhangi bir kullanıcı arabirimi (UI) göstermek amacıyla, çerçeve başlamalı ve çerçeve gerektirir /data çalıştırın. Bu muamma gidermek için, geçici bir dosya sistemi üzerine monte edilmiştir /data . Bu, Android'in parola istemesine, ilerleme durumunu göstermesine veya gerektiğinde bir veri temizleme önermesine olanak tanır. Doğru geçici dosya sistemine geçişten için bu tip bir kısıtlama empoze yapar /data dosya sistemi, sistem geçici dosya sistemi üzerinde açık dosyalarla her süreci durdurmak ve gerçek üzerinde bu süreçleri yeniden başlatmanız gerekir /data dosya sistemi. Bunu yapmak için, tüm hizmetlerin üç gruptan birine olmalıdır core , main ve late_start .

  • core : başlattıktan sonra kapatıldı asla.
  • main : disk parolası girildikten sonra sonra Shut aşağı ve yeniden başlatın.
  • late_start : mu sonrasına kadar başlamaz /data şifresi ve monte edilmiştir.

Bu eylemleri tetiklemek için, vold.decrypt özelliği ayarlandığında çeşitli dizeleri . Öldürmek ve yeniden başlatma hizmetleri için, init komutlar şunlardır:

  • class_reset : Bir hizmeti durdurur ama class_start ile yeniden başlatılması için izin verir.
  • class_start : Bir hizmeti yeniden başlatır.
  • class_stop : Bir hizmeti durdurur ve bir ekler SVC_DISABLED bayrağı. Durduruldu hizmetler yanıt vermeyen class_start .

Akışlar

Şifreli bir cihaz için dört akış vardır. Bir aygıt yalnızca bir kez şifrelenir ve ardından normal bir önyükleme akışını takip eder.

  • Daha önce şifrelenmemiş bir cihazı şifreleyin:
    • İle yeni bir cihaz şifreleme forceencrypt (Android L başlayarak) ilk açılışta zorunlu şifreleme:.
    • Mevcut bir cihazı şifreleyin: Kullanıcı tarafından başlatılan şifreleme (Android K ve önceki sürümler).
  • Şifreli bir cihazı önyükleyin:
    • Şifresiz bir cihazı şifresiz başlatma: Belirlenmiş şifresi olmayan şifreli bir cihazı başlatma (Android 5.0 ve sonraki sürümleri çalıştıran cihazlar için geçerlidir).
    • Şifreli bir cihazı bir şifre ile başlatma: Belirlenmiş bir şifreye sahip şifreli bir cihazı başlatma.

Bu akışlara ek olarak, cihaz, aynı zamanda şifreleme başarısız olabilir /data . Akışların her biri aşağıda ayrıntılı olarak açıklanmıştır.

Forceencrypt ile yeni bir cihazı şifreleyin

Bu, bir Android 5.0 cihazı için normal ilk önyüklemedir.

  1. İle şifresiz dosya sistemi Algılama forceencrypt bayrağı

    /data şifreli değildir, ancak ihtiyaç nedeniyle olduğu forceencrypt görev o. Devreden çıkar /data .

  2. Başlangıç şifreleme /data

    vold.decrypt = "trigger_encryption" tetikleyiciler init.rc neden olacak vold şifrelemek için /data yok şifre ile. (Bunun yeni bir cihaz olması gerektiği için Hiçbiri ayarlanmamıştır.)

  3. tmpfs'yi bağla

    vold montajı, tmpfs /data (tmpfs gelen seçenekleri kullanılarak ro.crypto.tmpfs_options ve setleri özelliği) vold.encrypt_progress 0. vold prepepares tmpfs /data şifrelenmiş bir sistem ve kümeleri özelliği önyükleme için vold.decrypt için: trigger_restart_min_framework

  4. İlerlemeyi göstermek için çerçeveyi getirin

    Cihazda neredeyse şifrelenecek veri bulunmadığından, şifreleme çok hızlı gerçekleştiği için ilerleme çubuğu genellikle görünmez. Bkz şifreleyin varolan bir cihazın ilerleme kullanıcı arayüzü hakkında daha fazla ayrıntı için.

  5. Zaman /data şifrelenir, çerçeve aşağı çekmek

    vold setleri vold.decrypt için trigger_default_encryption başladığı defaultcrypto hizmeti. (Bu, varsayılan şifreli userData monte etmek için aşağıdaki akışını başlatır.) trigger_default_encryption denetler şifreleme türü olmadığını görmek için /data veya şifre olmadan şifrelenir. Android 5.0 cihazları ilk açılışta şifrelendiğinden, herhangi bir şifre ayarlanmamalıdır; bu nedenle şifresini ve monte /data .

  6. Dağı /data

    init sonra bağlar /data bir tmpfs üzerinde ondan alır parametreler kullanılarak RAMDisk ro.crypto.tmpfs_options yer almakta olup init.rc .

  7. Çerçeveyi başlat

    Set vold için trigger_restart_framework zamanki önyükleme işlemi devam eder.

Mevcut bir cihazı şifreleyin

L'ye taşınan şifrelenmemiş bir Android K veya daha eski bir cihazı şifrelediğinizde olan budur.

Bu işlem kullanıcı tarafından başlatılır ve kodda "yerinde şifreleme" olarak adlandırılır. Bir kullanıcı bir cihazı şifrelemeyi seçtiğinde, kullanıcı arayüzü pilin tam olarak şarj edildiğinden ve AC adaptörünün takılı olduğundan, böylece şifreleme işlemini tamamlamak için yeterli gücün bulunduğundan emin olur.

Uyarı: Cihaz gücü ve bitmiş şifreleniyor sahiptir önce kapanıyor biterse, dosya verileri kısmen şifrelenmiş bir durumda bırakılır. Cihaz fabrika ayarlarına sıfırlanmalıdır ve tüm veriler kaybolur.

INPLACE şifrelemeyi etkinleştirmek için, vold gerçek blok cihazının her sektörünü okumak ve ardından kripto blok cihaza yazmak için bir döngü başlar. vold bir sektör hiçbir veriye çok az olan yeni bir cihaz üzerinde çok daha hızlı şifreleme kılan, onu okuyup yazmadan önce kullanımda olup olmadığını denetler.

Cihazın Devlet: Set ro.crypto.state = "unencrypted" ve yürütmek on nonencrypted init önyüklemeye devam tetik.

  1. Şifreyi kontrol et

    UI çağırır vold komutu ile cryptfs enablecrypto inplace passwd kullanıcının kilit ekranı şifredir.

  2. Çerçeveyi kaldır

    vold hataları denetler, döner -1 değil şifrelemek can ve günlüğüne bir neden yazdırır eğer. O şifreleyebilirsiniz, bu özellik setleri vold.decrypt için trigger_shutdown_framework . Bu nedenler init.rc sınıflarında hizmet durdurmak late_start ve main .

  3. Bir kripto altbilgisi oluşturun
  4. Bir kırıntı dosyası oluşturun
  5. yeniden başlat
  6. Breadcrumb dosyasını algıla
  7. Başlangıç şifreleme /data

    vold sonra sanal kripto blok aygıtı oluşturur gerçek blok cihaz üzerine haritalar ama yazıldığı gibi her sektöre şifreler ve okunan her sektör çözer kripto eşleme, kurar. vold sonra oluşturur ve kripto meta dışarı yazar.

  8. Şifrelenirken, tmpfs'yi bağlayın

    vold montajı, tmpfs /data (tmpfs gelen seçenekleri kullanılarak ro.crypto.tmpfs_options ve setleri özelliği) vold.encrypt_progress 0. vold tmpfs hazırlar /data şifrelenmiş sistemini başlatmak için ve özelliği ayarlar vold.decrypt için: trigger_restart_min_framework

  9. İlerlemeyi göstermek için çerçeveyi getirin

    trigger_restart_min_framework neden init.rc başlatmak için main hizmetlerin sınıfı. Çerçeve bu gördüğünde vold.encrypt_progress 0 olarak ayarlanır, bu, tesisi her beş saniyede sorgular ve bir ilerleme çubuğu günceller ilerleme çubuğu UI, getirir. Şifreleme döngü güncellemeler vold.encrypt_progress o bölümünün başka yüzde şifreler her zaman.

  10. Ne zaman /data şifrelenir, kripto altbilgi güncelleme

    Zaman /data başarıyla şifrelenir, vold bayrak temizlenir ENCRYPTION_IN_PROGRESS meta verileri.

    Cihazın kilidi başarıyla açıldığında, ana anahtarı şifrelemek için parola kullanılır ve kripto altbilgisi güncellenir.

    Yeniden başlatma nedense başarısız olursa, vold özellik setleri vold.encrypt_progress için error_reboot_failed ve UI yeniden başlatma için bir düğmeye basmasını isteyen bir mesaj göstermesi gerekir. Bunun gerçekleşmesi hiç beklenmiyor.

Varsayılan şifreleme ile şifrelenmiş bir cihazı başlatma

Parola olmadan şifrelenmiş bir cihazı başlattığınızda olan budur. Android 5.0 cihazlar ilk açılışta şifrelenmiş olduğundan dolayı, burada hiçbir set şifre ve dolayısıyla şu varsayılan şifreleme durumudur olmalıdır.

  1. Şifrelenmiş Tespit /data şifre yok

    Çünkü Android cihazı şifrelendiğini Tespit /data monte edilir ve bu seçeneklerden biri edilemez encryptable veya forceencrypt ayarlanır.

    vold setleri vold.decrypt için trigger_default_encryption başlar defaultcrypto hizmeti. trigger_default_encryption eğer kontrol şifreleme türünü görmek /data veya bir şifre olmadan şifrelenir.

  2. /verinin şifresini çöz

    Oluşturur dm-crypt cihaz kullanıma hazır hale blok aygıtı üzerinden aygıtı.

  3. /veri bağla

    vold sonra deşifre gerçek bağlar /data bölümü ve ardından yeni bölümü hazırlar. Bu özellik setleri vold.post_fs_data_done 0'a ardından ayarlar vold.decrypt için trigger_post_fs_data . Bu nedenler init.rc onun çalışmasına post-fs-data komutları. Onlar gerekli dizinleri veya bağlantıları ve daha sonra ayarlanan yaratacak vold.post_fs_data_done 1'e.

    Bir kez vold o mülkte 1 görür, bu özellik setleri vold.decrypt : için trigger_restart_framework. Bu nedenler init.rc sınıf içinde hizmetlerini başlatmak için main tekrar ve aynı zamanda sınıftaki hizmetlerini başlatmak late_start çizme beri ilk defa.

  4. Çerçeveyi başlat

    Şimdi çerçeve çizme şifresi kullanarak tüm hizmetlerini /data ve sistem kullanıma hazırdır.

Varsayılan şifreleme olmadan şifreli bir cihazı başlatma

Belirlenmiş bir parolaya sahip şifreli bir cihazı başlattığınızda olan budur. Cihazın şifresi bir pin, desen veya şifre olabilir.

  1. Şifreli cihazı bir şifre ile tespit edin

    Bayrak çünkü Android cihazı şifrelendiğini Tespit ro.crypto.state = "encrypted"

    vold setleri vold.decrypt için trigger_restart_min_framework çünkü /data şifre ile şifrelenir.

  2. tmpfs'yi bağla

    init setleri beş özellikleri için verilen ilk montaj seçeneklerini kaydetmek için /data geçirilen parametreleri ile init.rc . vold kripto eşleme kurmak için bu özellikleri kullanır:

    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 (0 x öncesinde ASCII 8 basamaklı heks sayısı)
  3. Parola istemek için çerçeveyi başlatın

    Çerçeve başlar ve görür vold.decrypt ayarlandığında trigger_restart_min_framework . Bu da tmpfs önyükleme yapılarak çalıştırıldığını çerçeveyi söyler /data diskinde ve kullanıcı şifresini almak gerekiyor.

    Ancak önce, diskin düzgün bir şekilde şifrelendiğinden emin olması gerekir. Bu komut gönderir cryptfs cryptocomplete için vold . vold şifreleme başarıyla tamamlanmıştır ise döner 0, -1, iç hata, veya -2 şifreleme başarıyla tamamlandı ise. vold için kripto meta veri bakarak bu belirler CRYPTO_ENCRYPTION_IN_PROGRESS bayrağı. Ayarlanmışsa, şifreleme işlemi kesintiye uğradı ve cihazda kullanılabilir veri yok. Eğer vold hata verir UI cihazı sıfırlamak yeniden başlatma ve fabrikaya kullanıcıya mesaj görüntüler ve bunu basına kullanıcıya düğmeye vermelidir.

  4. Verilerin şifresini şifre ile çözün

    Bir kez cryptfs cryptocomplete başarılı, çerçeve görüntüler bir UI Disk şifre isteyen. UI kontrolleri komut göndererek şifre cryptfs checkpw için vold . Şifresi (başarıyla çözülür yerleştirerek belirlenir ki doğruysa /data o çıkarılması, daha sonra, geçici bir yerde), vold özelliği olarak kodu çözülmüş bir bloğun cihazının adı kaydeder ro.crypto.fs_crypto_blkdev arayüzüne ve döner durum 0 . Parola yanlışsa, kullanıcı arayüzüne -1 döndürür.

  5. Çerçeveyi durdur

    Daha sonra UI bir kripto çizme grafik yukarı koyar ve çağrıları vold komutuyla cryptfs restart . vold özelliği ayarlar vold.decrypt için trigger_reset_main neden olur init.rc yapmak class_reset main . Bu tmpfs verir ana sınıfı içindeki tüm hizmetleri durdurur /data bağlantısı kesilecek için.

  6. Dağı /data

    vold sonra deşifre gerçek bağlar /data bölümü ve (ilk serbest desteklenmez seçeneği, silme ile şifrelenmiş halinde hazırlanmıştır asla), yeni bir bölüm hazırlar. Bu özellik setleri vold.post_fs_data_done 0'a ardından ayarlar vold.decrypt için trigger_post_fs_data . Bu nedenler init.rc onun çalışmasına post-fs-data komutları. Onlar gerekli dizinleri veya bağlantıları ve daha sonra ayarlanan yaratacak vold.post_fs_data_done kez 1'e vold o mülkte 1 görür, bu özellik setleri vold.decrypt için trigger_restart_framework . Bu nedenler init.rc sınıf içinde hizmetlerini başlatmak için main tekrar ve aynı zamanda sınıftaki hizmetlerini başlatmak late_start çizme beri ilk defa.

  7. Tam çerçeveyi başlat

    Şimdi çerçeve çizme şifresi kullanarak tüm hizmetlerini /data dosya sistemi ve sistem kullanıma hazırdır.

Arıza

Şifresini çözemeyen bir cihaz, birkaç nedenden dolayı hatalı olabilir. Aygıt, önyükleme için normal adımlar dizisiyle başlar:

  1. Şifreli cihazı bir şifre ile tespit edin
  2. tmpfs'yi bağla
  3. Parola istemek için çerçeveyi başlatın

Ancak çerçeve açıldıktan sonra cihaz bazı hatalarla karşılaşabilir:

  • Parola eşleşiyor ancak verilerin şifresini çözemiyor
  • Kullanıcı 30 kez yanlış şifre giriyor

Bu hatalar giderilmiş değilse, fabrikaya istemi kullanıcı silin:

Eğer vold Şifreleme işlemi sırasında bir hata tespit eder ve hiçbir veri henüz tahrip edilmiş ve çerçeve yukarı ise, vold özelliği ayarlar vold.encrypt_progress için error_not_encrypted . UI, kullanıcıdan yeniden başlatmasını ister ve şifreleme işleminin hiç başlamadığı konusunda onları uyarır. Hata çerçevesi yıkıldı, ancak ilerleme çubuğu UI dolmadan, sonra oluşursa vold sistemini yeniden başlayacaktır. Reboot başarısız olursa, ayarlar vold.encrypt_progress için error_shutting_down ve getiri -1; ancak hatayı yakalayacak hiçbir şey olmayacak. Bunun olması beklenmiyor.

Eğer vold şifreleme işlemi sırasında bir hata tespit, bu ayarlar vold.encrypt_progress için error_partially_encrypted ve getiri-1. Kullanıcı arayüzü daha sonra şifrelemenin başarısız olduğunu söyleyen bir mesaj göstermeli ve kullanıcının cihazı fabrika ayarlarına sıfırlaması için bir düğme sağlamalıdır.

Şifreli anahtarın saklanması

Şifrelenmiş anahtar, kripto meta verilerinde saklanır. Donanım desteği, Güvenilir Yürütme Ortamı'nın (TEE) imzalama yeteneği kullanılarak uygulanır. Önceden, ana anahtarı, kullanıcının parolasına ve depolanan tuza scrypt uygulayarak oluşturulan bir anahtarla şifreledik. Anahtarı kutu dışı saldırılara karşı dayanıklı hale getirmek için, elde edilen anahtarı depolanmış bir TEE anahtarıyla imzalayarak bu algoritmayı genişletiriz. Elde edilen imza daha sonra bir scrypt uygulaması ile uygun uzunlukta bir anahtara dönüştürülür. Bu anahtar daha sonra ana anahtarı şifrelemek ve şifresini çözmek için kullanılır. Bu anahtarı saklamak için:

  1. Rastgele 16 baytlık disk şifreleme anahtarı (DEK) ve 16 baytlık tuz oluşturun.
  2. 32 baytlık ara anahtar 1'i (IK1) oluşturmak için kullanıcı parolasına ve tuza scrypt uygulayın.
  3. Donanıma bağlı özel anahtarın (HBK) boyutuna sıfır baytlı Pad IK1. Özellikle, şu şekilde doldururuz: 00 || IK1 || 00..00; bir sıfır bayt, 32 IK1 bayt, 223 sıfır bayt.
  4. 256 bayt IK2 üretmek için yastıklı IK1'i HBK ile imzalayın.
  5. 32 bayt IK3 üretmek için IK2'ye scrypt ve tuz (2. adımla aynı tuz) uygulayın.
  6. IK3'ün ilk 16 baytını KEK ve son 16 baytını IV olarak kullanın.
  7. DEK'i AES_CBC, KEK anahtarı ve başlatma vektörü IV ile şifreleyin.

şifreyi değiştirme

Bir kullanıcı değişikliğine Seçti veya ayarlar şifrelerini kaldırdığınızda, UI komut gönderir cryptfs changepw için vold ve vold yeni şifre ile Disk ana anahtarı yeniden şifreler.

Şifreleme özellikleri

vold ve init özelliklerini ayarlayarak birbirleriyle iletişim. Burada şifreleme için kullanılabilen özelliklerin bir listesi bulunmaktadır.

vold özellikleri

Mülk Açıklama
vold.decrypt trigger_encryption Sürücüyü parola olmadan şifreleyin.
vold.decrypt trigger_default_encryption Parola olmadan şifrelenip şifrelenmediğini görmek için sürücüyü kontrol edin. O, şifresini ve monte başka dizi ise vold.decrypt trigger_restart_min_framework için.
vold.decrypt trigger_reset_main Disk parolasını soran kullanıcı arabirimini kapatmak için vold ile ayarlayın.
vold.decrypt trigger_post_fs_data Hazırlık için Vold belirler /data ve ark gerekli dizinleri ile.
vold.decrypt trigger_restart_framework Gerçek çerçeveyi ve tüm hizmetleri başlatmak için vold ile ayarlayın.
vold.decrypt trigger_shutdown_framework Şifrelemeyi başlatmak için tüm çerçeveyi kapatmak için vold ile ayarlayın.
vold.decrypt trigger_restart_min_framework Değerine bağlı olarak, şifreleme için ilerleme çubuğu UI başlatmak için Vold tarafından ayarlama veya şifre istemi ro.crypto.state .
vold.encrypt_progress Çerçeve başladığında, bu özellik ayarlanmışsa, ilerleme çubuğu UI moduna girin.
vold.encrypt_progress 0 to 100 İlerleme çubuğu kullanıcı arayüzü, ayarlanan yüzde değerini göstermelidir.
vold.encrypt_progress error_partially_encrypted İlerleme çubuğu kullanıcı arayüzü, şifrelemenin başarısız olduğunu belirten bir mesaj göstermeli ve kullanıcıya cihazı fabrika ayarlarına sıfırlama seçeneği sunmalıdır.
vold.encrypt_progress error_reboot_failed İlerleme çubuğu kullanıcı arayüzü, şifrelemenin tamamlandığını söyleyen bir mesaj göstermeli ve kullanıcıya cihazı yeniden başlatması için bir düğme vermelidir. Bu hatanın olması beklenmiyor.
vold.encrypt_progress error_not_encrypted İlerleme çubuğu kullanıcı arayüzü bir hata oluştuğunu, hiçbir verinin şifrelenmediğini veya kaybolmadığını belirten bir mesaj görüntülemeli ve kullanıcıya sistemi yeniden başlatması için bir düğme vermelidir.
vold.encrypt_progress error_shutting_down İlerleme çubuğu kullanıcı arayüzü çalışmıyor, bu nedenle bu hataya kimin yanıt vereceği belli değil. Ve yine de asla olmamalı.
vold.post_fs_data_done 0 Tarafından ayarlanır vold sadece ayarlamadan önce vold.decrypt için trigger_post_fs_data .
vold.post_fs_data_done 1 Tarafından belirle init.rc veya init.rc sadece görev bittikten sonra post-fs-data .

init özellikleri

Mülk Açıklama
ro.crypto.fs_crypto_blkdev Tarafından ayarlanır vold komut checkpw tarafından daha sonra kullanılmak üzere vold komut restart .
ro.crypto.state unencrypted Tarafından belirlenen init bu sistem, şifrelenmemiş ile çalışan söylemek /data ro.crypto.state encrypted . Tarafından ayarla init bu sistem şifrelenmiş ile çalışan söylemek /data .

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

Bu beş özellikler tarafından belirlenir init onu bağlamaya çalıştığında /data elde geçirilen parametreleri ile init.rc . vold kurulum için kripto eşleme bu kullanır.
ro.crypto.tmpfs_options Tarafından belirle init.rc tmpfs montaj sırasında init kullanması gereken seçeneklerle /data dosya sistemi.

Eylemleri başlat

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