Tam disk şifreleme

.

Tüm diskin şifrelenmesi, şifrelenmiş bir anahtar kullanarak Android cihazdaki tüm kullanıcı verilerini kodlama işlemidir. Bir cihaz şifrelendiğinde, kullanıcı tarafından oluşturulan tüm veriler diske ve tüm okumalara uygulamadan önce otomatik olarak şifrelenir çağrı işlemine döndürmeden önce verilerin şifresini otomatik olarak çözer.

Tam disk şifrelemesi Android 4.4'te kullanıma sunulmuştur ancak Android 5.0'te aşağıdaki yeni özellikler kullanıma sunulmuştur:

  • İlk önyüklemenin uzun sürmesini önlemek için yalnızca veri bölümündeki kullanılan blokları şifreleyen hızlı şifreleme oluşturuldu. Yalnızca ext4 ve f2fs dosya sistemleri şu anda hızlı şifrelemeyi desteklemektedir.
  • forceencrypt eklendi fstab flag'ini kullanın.
  • Şifresiz kalıplar ve şifreleme için destek eklendi.
  • Güvenilir kullanılarak şifreleme anahtarı için donanım destekli depolama alanı eklendi Yürütme ortamının (TEE) imzalama özelliği (TrustZone gibi). Daha fazla bilgi için Şifrelenmiş anahtarı depolama bölümüne bakın. bolca fırsat sunuyor.

Dikkat: Android 5.0'e yükseltilen ve ardından şifrelenen cihazlar, fabrika verilerine sıfırlanarak şifrelenmemiş duruma döndürülebilir. Yeni Android 5.0 ilk başlatma sırasında şifrelenen cihazlar şifrelenmemiş duruma döndürülemez.

Android tam disk şifrelemenin işleyiş şekli

Android tam disk şifrelemesi, bir çekirdek olan dm-crypt temel alınarak oluşturulur. engelleme cihazı katmanında çalışan özelliklerdir. Bunun nedeni: Şifreleme, Embedded MultiMediaCard (eMMC) ile ve kendisini blok olarak gösteren benzer flash cihazları cihazlar. Doğrudan ham NAND flaş çipiyle iletişim kuran YAFFS ile şifreleme yapılamaz.

Şifreleme algoritması, 128 Gelişmiş Şifreleme Standardı'dır (AES). şifreli blok zincirleme (CBC) ve ESSIV:SHA256. Ana anahtar, OpenSSL kitaplığına yapılan çağrılar aracılığıyla 128 bit AES ile şifrelenir. Veri analizi için 128 bit veya daha fazla (256 isteğe bağlıdır).

Not: OEM'ler ana anahtarı şifrelemek için 128 bit veya daha yüksek bir sürüm kullanabilir.

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

  • varsayılan
  • PIN
  • şifre
  • desen

İlk başlatmadan sonra, cihaz rastgele oluşturulmuş 128 bitlik bir ana anahtar oluşturur ardından varsayılan bir şifre ve saklanan takviye değer ile karma oluşturma işlemi uygular. Varsayılan şifre şöyledir: "default_password" Ancak sonuçta elde edilen karma, bir TEE (ör. TrustZone) aracılığıyla da imzalanır. ana anahtarı şifrelemek için bir imza karması kullanır.

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

Kullanıcı cihazda PIN/geçiş anahtarı veya şifre ayarlarken yalnızca 128 bitlik anahtar yeniden şifrelenir ve saklanır. (yani kullanıcı PIN/kart/desen değişiklikleri kullanıcı verilerinin yeniden şifrelenmesi.) Yönetilen cihazların PIN, desen veya şifre kısıtlamalarına tabi olabileceğini unutmayın.

Şifreleme, init ve vold tarafından yönetilir. init, vold yöntemini çağırır ve ses, özellikleri tetikleyecek şekilde ayarlar etkinliklerdir. Sistemin diğer bölümleri Ayrıca, raporlama durumu, proje başlatma belgesi, şifre veya önemli bir hata durumunda fabrika ayarlarına sıfırlama istemini görebilirsiniz. Çağırmak için şifreleme özelliklerini vold içine aldığınızda sistem, komut satırı aracını vdc adlı çocuğun cryptfs komutları: checkpw, restart, enablecrypto, changepw, cryptocomplete, verifypw, setfield, getfield, mountdefaultencrypted, getpwtype, getpw ve clearpw.

/data içeriğini şifrelemek, şifresini çözmek veya temizlemek için /data monte edilmemelidir. Ancak herhangi bir kullanıcı arayüzünü (UI) göstermek için çerçevenin başlatılması gerekir ve çerçevenin çalışması için /data'ün çalıştırılması gerekir. Bu sorunu çözmek için /data üzerine geçici bir dosya sistemi monte edilir. Bu şekilde Android, şifre isteyebilir, ilerleme durumunu gösterebilir veya veri önerebilir silin. Geçici dosya sisteminden gerçek /data dosya sistemine geçiş yapmak için sistemin, geçici dosya sisteminde açık dosyaları olan her işlemi durdurması ve bu işlemleri gerçek /data dosya sisteminde yeniden başlatması gerektiği sınırlamasını getirir. Bunun için tüm hizmetler şu üç gruptan birinde olmalıdır: core, main ve late_start.

  • core: Başladıktan sonra hiçbir zaman kapatılmaz.
  • main: Disk şifresi girildikten sonra kapatıp yeniden başlatın.
  • late_start: /data şifresi çözülüp eklenene kadar başlamaz.

Bu işlemleri tetiklemek için vold.decrypt özelliği çeşitli dizeler kullanın. Hizmetleri sonlandırmak ve yeniden başlatmak için init komutları şu şekildedir:

  • class_reset: Bir hizmeti durdurur ancak class_start ile yeniden başlatılmasına izin verir.
  • class_start: Bir hizmeti yeniden başlatır.
  • class_stop: Bir hizmeti durdurur ve SVC_DISABLED işareti ekler. Durdurulan hizmetler class_start yanıt vermiyor.

Akışlar

Şifrelenmiş cihazlar için dört akış vardır. Cihaz yalnızca bir kez şifrelenir ve ardından normal bir önyükleme akışı izlenir.

  • Daha önce şifrelenmemiş bir cihazı şifreleme:
    • Yeni bir cihazı forceencrypt ile şifreleyin: Zorunlu şifreleme (Android L sürümünden itibaren)
    • Mevcut bir cihazı şifreleme: Kullanıcı tarafından başlatılan şifreleme (Android K ve önceki sürümler).
  • Şifrelenmiş bir cihazı başlatın:
    • Şifrelenmiş bir cihazı şifre kullanmadan başlatma: Şu özelliklere sahip şifrelenmiş bir cihazı başlatma: oluşturulmuş şifresine sahip olmamalıdır (Android 5.0 ve sonraki sürümleri çalıştıran cihazlar için geçerlidir).
    • Şifrelenmiş bir cihazı şifreyle başlatma: Ayarlanmış bir şifreye sahip şifrelenmiş bir cihazı başlatma.

Cihaz bu akışlara ek olarak /data öğesini şifrelemeyebilir. Akışların her biri aşağıda ayrıntılı olarak açıklanmıştır.

forceencrypt ile yeni bir cihazı şifreleme

Bu, Android 5.0 cihazların normal ilk açılışıdır.

  1. forceencrypt işaretiyle şifrelenmemiş dosya sistemini algılama

    /data şifrelenmedi ancak forceencrypt tarafından zorunlu kılındığı için şifrelenmesi gerekiyor. /data bağlantısını kesin.

  2. /data alanını şifrelemeye başla

    vold.decrypt = "trigger_encryption", init.rc'ü tetikler. Bu da vold'nin /data'ı şifre olmadan şifrelemesine neden olur. (Bu yeni bir cihaz olduğu için "Hiçbiri" ayarlanır.)

  3. Tmpfs'leri ekle

    vold, tmpfs /data'i (ro.crypto.tmpfs_options'deki tmpfs seçeneklerini kullanarak) bağlar ve vold.encrypt_progress özelliğini 0 olarak ayarlar. vold, şifrelenmiş bir sistemi başlatmak için tmpfs /data'yi hazırlar ve vold.decrypt mülkünü şu şekilde ayarlar: trigger_restart_min_framework

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

    Cihazda şifrelenecek veri miktarı neredeyse hiç olmadığı için ilerleme çubuğu şifreleme çok hızlı gerçekleştiği için sıklıkla görülür. İlerleme kullanıcı arayüzü hakkında daha fazla bilgi için Mevcut bir cihazı şifreleme başlıklı makaleyi inceleyin.

  5. /data şifrelendiğinde çerçeveyi kaldırın

    vold, vold.decrypt alanını şu şekilde ayarlıyor: trigger_default_encryption defaultcrypto hizmet. (Bu işlem, varsayılan olarak şifrelenmiş bir kullanıcı verisi bağlamak için aşağıdaki akışı başlatır.) trigger_default_encryption, /data için bir şifreleme anahtarı ile veya onsuz şifrelenip şifrelenmediğini şifre. Android 5.0 cihazlar ilk başlatılırken şifrelenir. Bu nedenle, şifre ayarlanmamış olmalıdır. Bu nedenle, /data dosyasının şifresini çözer ve bağlarız.

  6. /data'i monte edin

    init, daha sonra şunu kullanarak bir geçici hedef RAMDisk'e /data ekler: ro.crypto.tmpfs_options parametresinden aldığı parametreleri init.rc içinde.

  7. Çerçeveyi başlat

    vold, vold.decrypt alanını şu şekilde ayarlıyor: trigger_restart_framework, normal başlatma işlemine devam eder bahsedeceğim.

Mevcut bir cihazı şifreleme

Bu durum, L sürümüne taşınmış, şifrelenmemiş bir Android K veya önceki sürüm cihazı şifrelendiğinde ortaya çıkar.

Bu işlem kullanıcı tarafından başlatılır ve "yerinde şifreleme" olarak adlandırılır ve kod. Kullanıcı bir cihazı şifrelemeyi seçtiğinde kullanıcı arayüzü, pil tam olarak şarj edilmiş ve AC adaptörü takılı olduğundan yeterli şifreleme işlemini tamamlaması gerekir.

Uyarı: Cihazın gücü biterse ve cihaz tamamlanmadan kapanırsa şifreleniyorsa, dosya verileri kısmen şifrelenmiş durumda bırakılır. Cihaz, fabrika ayarlarına sıfırlanmaz ve tüm veriler kaybolur.

Yerinde şifrelemeyi etkinleştirmek için vold, gerçek blok cihazın her bir sektörünü okuyup kripto blok cihazına yazmak üzere bir döngü başlatır. vold, bir sektörü okumadan ve yazmadan önce sektörün kullanılıp kullanılmadığını kontrol eder. Bu sayede, veri miktarı az veya hiç olmayan yeni bir cihazda şifreleme işlemi çok daha hızlı gerçekleşir.

Cihazın durumu: ro.crypto.state = "unencrypted" olarak ayarlayın ve başlatmaya devam etmek için on nonencrypted init tetikleyicisini yürütün.

  1. Şifreyi kontrol edin

    Kullanıcı arayüzü, passwd kullanıcının kilit ekranı şifresi olmak üzere cryptfs enablecrypto inplace komutuyla vold'ü çağırır.

  2. Çerçeveyi kaldırmak

    vold hataları kontrol eder, şifrelenemiyorsa -1 değerini döndürür ve günlüğe bir neden yazdırır. Şifreleyebiliyorsa vold.decrypt özelliğini trigger_shutdown_framework olarak ayarlar. Bu, init.rc adlı çocuğun late_start ve main sınıflarında hizmetleri durdur.

  3. Şifreleme altbilgisi oluşturma
  4. Görsel içerik haritası dosyası oluşturma
  5. Yeniden başlat
  6. İçerik haritası dosyasını algılama
  7. /data dosyasını şifrelemeye başlama

    Ardından vold, sanal bir şifreleme bloku cihazı oluşturan kripto eşlemesini ayarlar gerçek blok cihazla eşlenen ancak yazıldığı sırada her bir kesimi şifreleyen ve okunduğunda her bir sektörün şifresini çözer. vold daha sonra şifreleme meta verilerini oluşturur ve yazar.

  8. Şifrelenirken geçici dosya depolama alanınızı ekleyin

    vold, geçici dosya (tmpfs) seçeneklerini kullanarak /data ekler ro.crypto.tmpfs_options öğesinden) ve özelliği ayarlar vold.encrypt_progress olan değer 0 olarak değiştirildi. vold, şifrelenmiş bir sistemi başlatmak için tmpfs'yi /data hazırlar ve vold.decrypt mülkünü şu şekilde ayarlar: trigger_restart_min_framework

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

    trigger_restart_min_framework , init.rc'un main sınıfı hizmetleri başlatmasına neden olur. Çerçeve, vold.encrypt_progress değerinin 0 olarak ayarlandığını gördüğünde, beş saniyede bir bu mülkü sorgulayan ve ilerleme çubuğunu güncelleyen ilerleme çubuğu kullanıcı arayüzünü gösterir. Şifreleme döngüsü, her seferinde vold.encrypt_progress olarak güncellenir. bölümün başka bir yüzdesini şifreler.

  10. /data şifrelendiğinde, şifreleme altbilgisini güncelleyin

    /data başarıyla şifrelendiğinde vold, meta verilerdeki ENCRYPTION_IN_PROGRESS işaretini temizler.

    Cihazın kilidi başarıyla açıldığında şifre şu amaçlarla kullanılır: ana anahtarı şifrelemek ve şifreleme altbilgisi güncellenir.

    Yeniden başlatma herhangi bir nedenle başarısız olursa vold özelliği ayarlar vold.encrypt_progress - error_reboot_failed ve kullanıcı arayüzünde, kullanıcının cihazından tekrar başlat. Bunun hiçbir zaman meydana gelmesi beklenmez.

Şifrelenmiş bir cihazı varsayılan şifrelemeyle başlatma

Şifre olmadan şifrelenmiş bir cihazı başlattığınızda bu durumla karşılaşırsınız. Android 5.0 cihazlar ilk açılışta şifrelendiğinden, ayarlanmış bir şifre olmamalıdır. Bu nedenle, varsayılan şifreleme durumu budur.

  1. Şifre içermeyen şifrelenmiş /data dosyalarını algılama

    /data monte edilemediği ve encryptable veya forceencrypt işaretlerinden biri ayarlandığı için Android cihazın şifrelenmiş olduğunu algılama.

    vold, vold.decrypt alanını şu şekilde ayarlıyor: trigger_default_encryption, başlatılacak. defaultcrypto hizmet. trigger_default_encryption. /data ile şifrelenmiş olup olmadığını görmek için şifreleme türünü kontrol eder. bu işlemi yapabilirsiniz.

  2. /data şifresini çözme

    Cihazın kullanıma hazır olması için engellenen cihazın üzerine dm-crypt cihazı oluşturur.

  3. /data'yı bağlama

    vold, şifresi çözülmüş gerçek /data bölümünü bağlar ve ardından yeni bölümü hazırlar. Mülkü ayarlar. vold.post_fs_data_done değerini 0 olarak belirler, ardından vold.decrypt değerini ayarlar alıcı: trigger_post_fs_data. Bu, init.rc'ün post-fs-data komutlarını çalıştırmasına neden olur. Gerekli dizinleri oluşturur veya bağlantıları kullanıp vold.post_fs_data_done değerini 1 olarak ayarlayın.

    vold, bu mülkte 1'i gördükten sonra vold.decrypt mülkünü şu şekilde ayarlar: trigger_restart_framework. Bu, init.rc'ın main sınıfındaki hizmetleri tekrar başlatmasına ve ayrıca önyüklemeden sonra ilk kez late_start sınıfındaki hizmetleri başlatmasına neden olur.

  4. Çerçeveyi başlat

    Artık çerçeve, şifresi çözülmüş /data'yi kullanarak tüm hizmetlerini başlatır ve sistem kullanıma hazırdır.

Şifrelenmiş bir cihazı varsayılan şifreleme olmadan başlatma

Şifrelenmiş bir cihazı başlattığınızda veya şifre. Cihazın şifresi bir PIN, desen veya şifre olabilir.

  1. Şifrelenmiş cihazı şifreyle algılama

    Bayrak simgesi nedeniyle Android cihazın şifrelenmiş olduğunu algılama ro.crypto.state = "encrypted".

    /data şifreyle şifrelendiği için vold, vold.decrypt değerini trigger_restart_min_framework olarak ayarlar.

  2. tmpfs'yi bağlama

    init, init.rc kaynağından iletilen parametrelerle /data için verilen ilk montaj seçeneklerini kaydetmek üzere beş mülk ayarlar. vold, kripto eşlemeyi ayarlamak için aşağıdaki ö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 (Başında 0x olan 8 haneli onaltılık ASCII sayısı)
  3. Şifre isteğinde bulunacak çerçeveyi başlatma

    Çerçeve başlar ve vold.decrypt değerinin trigger_restart_min_framework olarak ayarlandığını görür. Bu, çerçeveye bir tmpfs /data diskinde başlatıldığını ve kullanıcı şifresini alması gerektiğini bildirir.

    Ancak öncelikle, diskin düzgün şekilde şifrelendiğinden emin olması gerekir. cryptfs cryptocomplete komutunu vold'a gönderir. vold, şifreleme başarıyla tamamlandıysa 0, dahili hata için -1 veya Şifreleme başarıyla tamamlanmadıysa -2. vold, CRYPTO_ENCRYPTION_IN_PROGRESS işaretinin kripto meta verilerine bakarak bunu belirler. Bu ayar ayarlanmışsa şifreleme işlemi kesintiye uğramıştır ve cihazda kullanılabilir veri yoktur. vold bir hata döndürürse kullanıcı arayüzünün kullanıcıya cihazı yeniden başlatıp fabrika ayarlarına sıfırlaması ve kullanıcıya basması için bir düğmeye basın.

  4. Şifre kullanarak verilerin şifresini çözme

    cryptfs cryptocomplete başarılı olduğunda çerçeve, disk şifresini isteyen bir kullanıcı arayüzü gösterir. Kullanıcı arayüzü, şifreyi cryptfs checkpw komutu vold adresine gönderiliyor. Öğe doğru olduğundan emin olun (bu, /data kodunun geçici bir konumda şifresini çözdükten sonra bağlantısını kestiyse vold, mülkündeki şifresi çözülmüş blok cihazın adını kaydeder ro.crypto.fs_crypto_blkdev ve kullanıcı arayüzüne 0 durumunu döndürür. Öğe şifre yanlışsa kullanıcı arayüzüne -1 değerini döndürür.

  5. Çerçeveyi durdurma

    Kullanıcı arayüzü, bir kripto önyükleme grafiği gösterir ve ardından cryptfs restart komutuyla vold'ü çağırır. vold özelliği ayarlar vold.decrypt olan trafik trigger_reset_main değerine ayarlanır, bu da neden olur init.rc tarihinde class_reset main yapılacak. Bu işlem tüm hizmetleri durdurur bu işlem, /data geçici dosya depolama öğelerinin (tmpfs) kaldırılmasına olanak tanır.

  6. /data'i monte edin

    vold, daha sonra şifresi çözülmüş gerçek /data bölümünü ekler ve yeni bölümü hazırlar (bu bölüm, bu özellik, ilk sürümde desteklenmeyen silme seçeneğiyle şifrelendi. . vold.post_fs_data_done özelliğini 0 olarak ayarlar ve ardından vold.decrypt özelliğini trigger_post_fs_data olarak ayarlar. Bu, init.rc'ün post-fs-data komutlarını çalıştırmasına neden olur. Onlar gerekli dizinleri veya bağlantıları oluşturun ve ardından vold.post_fs_data_done - 1. vold, söz konusu mülkte 1 değerini gördüğünde vold.decrypt mülkünü trigger_restart_framework olarak ayarlar. Bu, init.rc ürününün başlatılmasına neden olur. hizmetleri main sınıfında tekrar ele alır ve sınıfta hizmet başlatır Açılıştan beri ilk kez late_start.

  7. Tam çerçeveyi başlat

    Artık çerçeve, şifresi çözülmüş /data dosya sistemini kullanarak tüm hizmetlerini başlatır ve sistem kullanıma hazırdır.

Başarısız

Şifresini çözemeyen bir cihazın birkaç nedeni olabilir. Cihaz şu normal adım dizisiyle başlar:

  1. Şifreyle şifrelenmiş cihazı algıla
  2. tmpfs'yi bağlama
  3. Şifre istemek için çerçeveyi başlat

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

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

Bu hatalar çözülmezse kullanıcıdan fabrika temizleme işlemini gerçekleştirmesini isteyin:

vold, şifreleme işlemi sırasında bir hata algılarsa ve henüz hiçbir veri yok edilmediyse ve çerçeve etkinse vold, vold.encrypt_progress mülkünü error_not_encrypted olarak ayarlar. Kullanıcı arayüzü, kullanıcıdan yeniden başlatmasını ister ve şifreleme işlemiyle ilgili uyarı verir. hiç başlamadı. Hata, çerçeve kaldırıldıktan sonra ancak ilerleme çubuğu kullanıcı arayüzü açılmadan önce oluşursa vold sistemi yeniden başlatır. Eğer yeniden başlatma başarısız olursa vold.encrypt_progress, error_shutting_down ve -1 değerini döndürür; ama bir sorun olmaması için tıklayın. Bu durumun yaşanması beklenmez.

vold şifreleme işlemi sırasında bir hata algılarsa vold.encrypt_progress-error_partially_encrypted ve -1 değerini döndürür. Ardından kullanıcı arayüzünde, şifrelemenin başarısız olduğunu belirten bir mesaj gösterilir ve kullanıcının cihazı fabrika ayarlarına sıfırlayabileceği bir düğme sunulur.

Şifrelenmiş anahtarı depolama

Şifrelenmiş anahtar, kripto meta verilerinde depolanır. Donanım desteği: Güvenilir Yürütme Ortamı'nın (TEE) imzalama özelliği kullanılarak uygulanır. Daha önce ana anahtarı, scrypt uygulayarak oluşturulan bir anahtarla şifreliyorduk ve saklanan güvenlik açığına kaydedilir. Anahtarı kutu dışı saldırılara karşı dayanıklı hale getirmek için, elde edilen anahtarı depolanan bir TEE anahtarıyla imzalayarak bu algoritmayı genişletiriz. Elde edilen imza daha sonra scrypt'in bir kez daha uygulanmasıyla uygun uzunlukta bir anahtara dönüştürülür. Bu anahtar daha sonra ana anahtarı şifrelemek ve ana anahtarın şifresini çözmek için kullanılır. Bu anahtarı depolamak için:

  1. Rastgele 16 baytlık disk şifreleme anahtarı (DEK) ve 16 baytlık takviye oluşturun.
  2. 32 baytlık ara kod oluşturmak için kullanıcı şifresine ve takviye değere sşifreleme uygulayın anahtar 1'i (IK1) tıklayın.
  3. IK1'i donanıma bağlı özel anahtarın (HBK) boyutuna sıfır baytla doldurun. Özellikle, şu şekilde doldurulur: 00 || İK1 || 00..00; bir sıfır bayt, 32 IK1 bayt, 223 sıfır bayt.
  4. 256 bayt IK2 üretmek için IK1'i HBK ile imzalayın.
  5. 32 bayt IK3 üretmek için IK2'ye şifreleme ve tuz (2. adımla aynı takviye) uygulayın.
  6. IK3'ün ilk 16 baytını KEK, son 16 baytını IV olarak kullanın.
  7. DEK'yi AES_CBC, anahtar KEK ve başlatma vektörü IV ile şifreleyin.

Şifreyi değiştirin

Kullanıcı ayarlar bölümünde şifresini değiştirmeyi veya kaldırmayı seçtiğinde kullanıcı arayüzü, cryptfs changepw komutunu vold'e gönderir ve vold, disk ana anahtarını yeni şifreyle yeniden şifreler.

Şifreleme özellikleri

vold ve init birbirleriyle iletişim kurmak için ayar özellikleri. Şifreleme için kullanılabilen özelliklerin listesini burada bulabilirsiniz.

Hacim özellikleri

Özellik Açıklama
vold.decrypt trigger_encryption Sürücüyü şifre.
vold.decrypt trigger_default_encryption Şifre kullanılmadan şifrelenip şifrelenmediğini görmek için sürücüyü kontrol edin. Varsa şifresini çözüp ekleyin, else vold.decrypt öğesini, trigger_restart_min_framework olarak ayarlayın.
vold.decrypt trigger_reset_main Disk şifresini isteyen kullanıcı arayüzünü kapatmak için vold tarafından ayarlandı.
vold.decrypt trigger_post_fs_data /data için gerekli dizinleri ve diğer bilgileri hazırlamak üzere hacim tarafından ayarlandı
vold.decrypt trigger_restart_framework Gerçek çerçeveyi ve tüm hizmetleri başlatmak için gönüllü olarak belirleyin.
vold.decrypt trigger_shutdown_framework Şifrelemeyi başlatmak için tüm çerçevenin kapatılması amacıyla vold tarafından ayarlanır.
vold.decrypt trigger_restart_min_framework ro.crypto.state değerine bağlı olarak, şifreleme için ilerleme çubuğu kullanıcı arayüzünü başlatmak veya şifre isteğinde bulunmak üzere vold tarafından ayarlanır.
vold.encrypt_progress Çerçeve başladığında, bu özellik ayarlanmışsa ilerleme çubuğu kullanıcı arayüzü moduna girin.
vold.encrypt_progress 0 to 100 İlerleme çubuğu kullanıcı arayüzünde, ayarlanan yüzde değeri gösterilmelidir.
vold.encrypt_progress error_partially_encrypted İlerleme çubuğunun kullanıcı arayüzünde, şifrelemenin başarısız olduğunu belirten bir mesaj görüntülenir ve kullanıcıya o sırada cihazı fabrika ayarlarına sıfırlayın.
vold.encrypt_progress error_reboot_failed İlerleme çubuğu kullanıcı arayüzünde, şifrelemenin tamamlandığını belirten bir mesaj gösterilir ve kullanıcıya cihazı yeniden başlatması için bir düğme sunulur. Bu hatanın oluşması beklenmez.
vold.encrypt_progress error_not_encrypted İlerleme çubuğu kullanıcı arayüzü hata belirten bir mesaj görüntüle hiçbir veri şifrelenmemişse veya şifrelenmemişse kullanıcıya sistemi yeniden başlatması için bir düğme verin.
vold.encrypt_progress error_shutting_down İlerleme çubuğu kullanıcı arayüzü çalışmıyor olduğundan bu hataya kimin yanıt verdiği anlaşılmıyor. Zaten böyle bir durum da olmamalıdır.
vold.post_fs_data_done 0 vold.decrypt değerini trigger_post_fs_data olarak ayarlamadan hemen önce vold tarafından ayarlanır.
vold.post_fs_data_done 1 init.rc veya init.rc, post-fs-data görevini tamamladıktan hemen sonra.

başlatma özellikleri

Özellik Açıklama
ro.crypto.fs_crypto_blkdev vold komutu checkpw tarafından ayarlanır ve daha sonra vold komutu restart tarafından kullanılır.
ro.crypto.state unencrypted Bu sistemin şifrelenmemiş bir /data ro.crypto.state encrypted ile çalıştığını belirtmek için init tarafından ayarlanır. init tarafından şu şekilde ayarlandı: bu sistem şifrelenmiş bir /data ile çalışıyor.

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

Bu beş özellik, init.rc'den iletilen parametrelerle /data'yi bağlamaya çalıştığında init tarafından ayarlanır. vold, kripto eşlemeyi ayarlamak için bunları kullanır.
ro.crypto.tmpfs_options tmpfs /data dosya sistemini bağlarken init'in kullanacağı seçeneklerle init.rc tarafından ayarlanır.

başlatma işlemleri

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