Tam disk şifreleme, Android cihazdaki tüm kullanıcı verilerini şifrelenmiş bir anahtar kullanarak 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 okuma işlemleri, verileri çağıran işleme döndürmeden önce otomatik olarak şifresini çözer.
Tam disk şifreleme, Android 4.4'te kullanıma sunulmuştu. Android 5.0 ise şu yeni özellikleri getirdi:
- İ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.
- İlk başlatmada şifreleme için
forceencrypt
fstab işareti eklendi. - Desen ve şifresiz şifreleme desteği eklendi.
- Güvenilir Yürütme Ortamı'nın (TEE) imzalama özelliği (ör. TrustZone'da olduğu gibi) kullanılarak şifreleme anahtarının donanım destekli depolanması eklendi. Daha fazla bilgi için Şifrelenmiş anahtarı depolama başlıklı makaleyi inceleyin.
Dikkat: Android 5.0'a yükseltildikten sonra şifrelenen cihazlar, fabrika verilerine sıfırlanarak şifrelenmemiş duruma döndürülebilir. İlk başlatmada şifrelenen yeni Android 5.0 cihazlar şifrelenmemiş duruma döndürülemez.
Android tam disk şifrelemenin işleyiş şekli
Android tam disk şifreleme, blok cihaz katmanında çalışan bir çekirdek özelliği olan dm-crypt
temel alınarak yapılır. Bu nedenle, şifreleme Embedded MultiMediaCard (eMMC) ve kendilerini çekirdeğe blok cihaz olarak tanıtan benzer flash cihazlarla çalışır. Doğrudan ham NAND flash çip ile iletişim kuran YAFFS ile şifreleme mümkün değildir.
Şifreleme algoritması, şifreleme bloğu zincirleme (CBC) ve ESSIV:SHA256 ile 128 Gelişmiş Şifreleme Standardı (AES) şeklindedir. Ana anahtar, OpenSSL kitaplığına yapılan çağrılar aracılığıyla 128 bit AES ile şifrelenir. Anahtar için 128 bit veya daha fazla kullanmanız gerekir (256 bit isteğe bağlıdır).
Not: OEM'ler, ana anahtarı şifrelemek için 128 bit veya daha yüksek bir değer kullanabilir.
Android 5.0 sürümünde dört tür şifreleme durumu vardır:
- varsayılan
- PIN
- şifre
- desen
Cihaz, ilk başlatıldığında rastgele oluşturulmuş 128 bitlik bir anahtar oluşturur ve ardından bunu varsayılan bir şifre ve saklanan tuzla karma oluşturur. Varsayılan şifre: "default_password" Ancak, sonuçta elde edilen karma da bir TEE (ör. TrustZone) aracılığıyla imzalanır. Bu TEE, ana anahtarı şifrelemek için imzanın karmasını kullanır.
Android Açık Kaynak Projesi cryptfs.cpp dosyasında tanımlanan varsayılan şifreyi bulabilirsiniz.
Kullanıcı cihazda PIN/geçiş kodu veya şifre ayarladığında yalnızca 128 bitlik anahtar yeniden şifrelenir ve saklanır. (Örneğin, kullanıcı PIN'i/parolası/deseni değişiklikleri, kullanıcı verilerinin yeniden şifrelenmesine NEDEN OLMAZ.) Yönetilen cihazların PIN, desen veya şifre kısıtlamalarına tabi olabileceğini unutmayın.
Şifreleme, init
ve vold
tarafından yönetiliyor.
init
çağırır vold
ve vold, init'te etkinlikleri tetiklemek için özellikleri ayarlar. Sistemin diğer bölümleri de özelliklere bakarak rapor durumu, şifre isteme veya ölümcül bir hata durumunda fabrika ayarlarına sıfırlama gibi görevleri gerçekleştirir. vold
'da şifreleme özelliklerini çağırmak için sistem, vdc
'ın cryptfs
komutlarını kullanır: checkpw
, restart
, enablecrypto
, changepw
, cryptocomplete
, verifypw
, setfield
, getfield
, mountdefaultencrypted
, getpwtype
, getpw
ve clearpw
.
/data
şifrelemek, şifresini çözmek veya silmek için /data
bağlanmamış olmalıdır. Ancak herhangi bir kullanıcı arayüzünü (UI) göstermek için çerçevenin başlatılması ve çalışması için /data
gerekir. Bu sorunu çözmek için /data
üzerinde geçici bir dosya sistemi oluşturulur.
Bu, Android'in gerektiğinde şifre istemesine, ilerleme durumunu göstermesine veya veri silme işlemi önermesine olanak tanır. Ancak, geçici dosya sisteminden gerçek /data
dosya sistemine geçmek 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ı vardır. Bunun için tüm hizmetler üç gruptan birinde olmalıdır: core
, main
ve late_start
.
core
: Başladıktan sonra hiçbir zaman kapatılmaz.main
: Kapatın ve disk şifresi girildikten sonra yeniden başlatın.late_start
:/data
şifresi çözülüp bağlandıktan sonra başlar.
Bu işlemlerin tetiklenmesi için vold.decrypt
özelliği çeşitli dizeler olarak ayarlanır.
Hizmetleri sonlandırmak ve yeniden başlatmak için init
komutları şunlardır:
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 veSVC_DISABLED
işareti ekler. Durdurulan hizmetlerclass_start
'ya yanıt vermez.
Flows
Şifrelenmiş bir cihaz için dört akış vardır. Cihaz yalnızca bir kez şifrelenir ve ardından normal başlatma akışını izler.
- Daha önce şifrelenmemiş bir cihazı şifreleme:
forceencrypt
ile yeni bir cihazı şifreleme: İlk başlatmada (Android L'den itibaren) zorunlu şifreleme.- Mevcut bir cihazı şifreleme: Kullanıcı tarafından başlatılan şifreleme (Android K ve önceki sürümler).
- Şifrelenmiş bir cihazı başlatma:
- Şifrelenmiş bir cihazı şifre olmadan başlatma: Şifrelenmiş bir cihazı, ayarlanmış şifre olmadan başlatma (Android 5.0 ve sonraki sürümleri çalıştıran cihazlar için geçerlidir).
- Şifrelenmiş bir cihazı şifreyle başlatma: Ayarlanmış bir şifresi olan şifrelenmiş bir cihazı başlatma.
Bu akışlara ek olarak, cihaz /data
şifreleyemeyebilir.
Akışların her biri aşağıda ayrıntılı olarak açıklanmıştır.
Yeni bir cihazı forceencrypt ile şifreleme
Bu, Android 5.0 cihazlarda normal ilk başlatma işlemidir.
forceencrypt
işaretiyle şifrelenmemiş dosya sistemini algılama/data
şifrelenmemiş ancakforceencrypt
zorunlu kıldığı için şifrelenmesi gerekiyor./data
öğesini çıkarın.- Şifrelemeyi başlatma
/data
vold.decrypt = "trigger_encryption"
tetiklenirinit.rc
ve bu durum,vold
'nin/data
'ü şifresiz olarak şifrelemesine neden olur. (Bu yeni bir cihaz olacağı için ayarlanmamış.) - Mount tmpfs
vold
,/data
(ro.crypto.tmpfs_options
içindeki tmpfs seçeneklerini kullanarak) öğesini bağlar vevold.encrypt_progress
özelliğini 0 olarak ayarlar.vold
, şifrelenmiş bir sistemi başlatmak için tmpfs'yi hazırlar/data
vevold.decrypt
özelliğinitrigger_restart_min_framework
olarak ayarlar. - İlerleme durumunu göstermek için çerçeveyi görüntüleme
Cihazda şifrelenecek neredeyse hiç veri olmadığından şifreleme çok hızlı gerçekleşir ve ilerleme çubuğu sık görünmez. İlerleme durumu kullanıcı arayüzü hakkında daha fazla bilgi için Mevcut bir cihazı şifreleme başlıklı makaleyi inceleyin.
/data
şifrelendiğinde çerçeveyi kaldırınvold
,vold.decrypt
değerinitrigger_default_encryption
olarak ayarlar. Bu işlem,defaultcrypto
hizmetini başlatır. (Bu işlem, varsayılan şifrelenmiş kullanıcı verilerini bağlamak için aşağıdaki akışı başlatır.)trigger_default_encryption
,/data
öğesinin şifrelenip şifrelenmediğini ve şifrelenmişse şifreyle mi yoksa şifresiz mi şifrelendiğini görmek için şifreleme türünü kontrol eder. Android 5.0 cihazlar ilk başlatmada şifrelendiğinden şifre ayarlanmamış olmalıdır. Bu nedenle/data
öğesinin şifresini çözüp bağlarız.- Bağlama
/data
init
,/data
öğesiniro.crypto.tmpfs_options
'den aldığı parametreleri kullanarak tmpfs RAMDisk'e bağlar.ro.crypto.tmpfs_options
,init.rc
içinde ayarlanır. - Başlangıç çerçevesi
vold
,vold.decrypt
değerinitrigger_restart_framework
olarak ayarlar. Bu da normal başlatma sürecinin devam etmesini sağlar.
Mevcut bir cihazı şifreleme
Bu, L'ye taşınmış, şifrelenmemiş bir Android K veya önceki sürüm cihazı şifrelediğinizde olur.
Bu süreç kullanıcı tarafından başlatılır ve kodda "yerinde şifreleme" olarak adlandırılır. Kullanıcı bir cihazı şifrelemeyi seçtiğinde kullanıcı arayüzü, şifreleme işleminin tamamlanması için yeterli güç olması amacıyla pilin tamamen şarj edildiğinden ve AC adaptörünün takıldığından emin olur.
Uyarı: Cihazın şarjı biterse ve şifreleme işlemi tamamlanmadan kapanırsa dosya verileri kısmen şifrelenmiş durumda kalır. Cihaz fabrika ayarlarına sıfırlanmalı ve tüm veriler kaybolmalıdır.
Yerinde şifrelemeyi etkinleştirmek için vold
, gerçek blok cihazının her sektörünü okumak ve ardından kripto blok cihazına yazmak için bir döngü başlatır. vold
, bir sektörü okuyup yazmadan önce kullanılıp kullanılmadığını kontrol eder. Bu sayede, az veri içeren veya hiç veri içermeyen yeni bir cihazda şifreleme işlemi çok daha hızlı gerçekleşir.
Cihazın durumu: ro.crypto.state = "unencrypted"
'ı ayarlayın
ve önyüklemeye devam etmek için on nonencrypted
init
tetikleyicisini çalıştırın.
- Şifreyi kontrol et
Kullanıcı arayüzü,
vold
işlevinicryptfs enablecrypto inplace
komutuyla çağırır. Buradapasswd
, kullanıcının kilit ekranı şifresidir. - Çerçeveyi kaldırma
vold
hataları kontrol eder, şifreleyemezse -1 değerini döndürür ve günlükte bir neden yazdırır. Şifreleyebiliyorsavold.decrypt
özelliğinitrigger_shutdown_framework
olarak ayarlar. Bu durum,init.rc
hizmetininlate_start
vemain
sınıflarında durmasına neden olur. - Kripto para birimi altbilgisi oluşturma
- Ekmek kırıntısı dosyası oluşturma
- Yeniden başlat
- İçerik haritası dosyasını algılama
- Şifrelemeyi başlatma
/data
vold
, daha sonra kripto eşlemeyi ayarlar. Bu işlem, gerçek blok cihazına eşlenen ancak her sektörü yazılırken şifreleyen ve okunurken şifresini çözen sanal bir kripto blok cihazı oluşturur.vold
daha sonra kripto meta verilerini oluşturup yazar. - Şifreleme işlemi devam ederken tmpfs'yi bağlayın
vold
,/data
(ro.crypto.tmpfs_options
içindeki tmpfs seçeneklerini kullanarak) bir tmpfs bağlar vevold.encrypt_progress
özelliğini 0 olarak ayarlar.vold
, şifrelenmiş bir sistemi başlatmak için tmpfs'yi hazırlar/data
ve özelliğivold.decrypt
şu şekilde ayarlar:trigger_restart_min_framework
- İlerleme durumunu göstermek için çerçeveyi görüntüleme
trigger_restart_min_framework
,init.rc
'ninmain
hizmet sınıfını başlatmasına neden olur. Çerçeve,vold.encrypt_progress
değerinin 0 olarak ayarlandığını gördüğünde her beş saniyede bir bu özelliği sorgulayan ve ilerleme çubuğunu güncelleyen ilerleme çubuğu kullanıcı arayüzünü getirir. Şifreleme döngüsü, bölümün başka bir yüzdesini her şifrelediğindevold.encrypt_progress
değerini günceller. /data
şifrelendiğinde kripto altbilgisini güncelleme/data
başarıyla şifrelendiğindevold
, meta verilerdekiENCRYPTION_IN_PROGRESS
işaretini temizler.Cihazın kilidi başarıyla açıldığında, anahtarı şifrelemek için şifre kullanılır ve şifreleme altbilgisi güncellenir.
Yeniden başlatma işlemi herhangi bir nedenle başarısız olursa
vold
özelliğierror_reboot_failed
olarak ayarlar ve kullanıcı arayüzünde, kullanıcıdan yeniden başlatmak için bir düğmeye basmasını isteyen bir mesaj gösterilir.vold.encrypt_progress
Bu durumun hiç yaşanmaması beklenir.
Şifrelenmiş bir cihazı varsayılan şifrelemeyle başlatma
Şifrelenmiş bir cihazı şifre olmadan başlattığınızda olanlar Android 5.0 cihazlar ilk başlatmada şifrelendiğinden ayarlanmış bir şifre olmamalıdır. Bu nedenle, bu durum varsayılan şifreleme durumudur.
- Şifrelenmiş
/data
dosyalarını şifre olmadan algılama/data
takılamadığı veencryptable
veyaforceencrypt
işaretlerinden biri ayarlandığı için Android cihazın şifrelendiğini algılayın.vold
,vold.decrypt
değerinitrigger_default_encryption
olarak ayarlar. Bu işlem,defaultcrypto
hizmetini başlatır.trigger_default_encryption
/data
öğesinin şifreyle veya şifresiz olarak şifrelenip şifrelenmediğini görmek için şifreleme türünü kontrol eder. - /data şifresini çözme
Cihazın kullanıma hazır olması için blok cihaz üzerinde
dm-crypt
cihazını oluşturur. - /data dizinini bağlayın
vold
daha sonra şifresi çözülmüş gerçek/data
bölümünü bağlar ve yeni bölümü hazırlar. Özellikvold.post_fs_data_done
değerini 0 olarak ayarlar ve ardındanvold.decrypt
değerinitrigger_post_fs_data
olarak ayarlar. Bu,init.rc
uygulamasınınpost-fs-data
komutlarını çalıştırmasına neden olur. Gerekli dizinleri veya bağlantıları oluşturupvold.post_fs_data_done
değerini 1 olarak ayarlarlar.vold
bu mülkteki 1'i gördüğünde mülkvold.decrypt
'yi şu şekilde ayarlar:trigger_restart_framework.
Bu işlem,init.rc
'ninmain
sınıfındaki hizmetleri yeniden başlatmasına ve ayrıcalate_start
sınıfındaki hizmetleri başlatılmadan bu yana ilk kez başlatmasına neden olur. - Başlangıç çerçevesi
Çerçeve artık tüm hizmetlerini şifresi çözülmüş
/data
ile başlatır ve sistem kullanıma hazır hâle gelir.
Varsayılan şifreleme olmadan şifrelenmiş bir cihazı başlatma
Şifre ayarlanmış bir şifrelenmiş cihazı başlattığınızda olanlar: Cihazın şifresi PIN, desen veya şifre olabilir.
- Şifrelenmiş cihazı şifreyle algılama
Android cihazın şifrelendiğini algılayın. Bunun nedeni,
ro.crypto.state = "encrypted"
işaretininvold
,/data
şifreyle şifrelendiği içinvold.decrypt
değerinitrigger_restart_min_framework
olarak ayarlıyor. - Mount tmpfs
init
,init.rc
'dan iletilen parametrelerle/data
için verilen ilk bağlama seçeneklerini kaydetmek üzere beş özellik ayarlar.vold
, kripto eşlemeyi ayarlamak için şu özellikleri kullanır:ro.crypto.fs_type
ro.crypto.fs_real_blkdev
ro.crypto.fs_mnt_point
ro.crypto.fs_options
ro.crypto.fs_flags
(0x ile başlayan 8 haneli ASCII onaltılık sayısı)
- Şifre istemek için çerçeve başlatma
Çerçeve başlatılır ve
vold.decrypt
değerinintrigger_restart_min_framework
olarak ayarlandığını görür. Bu, çerçeveye 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
komutunuvold
adresine gönderir.vold
, şifreleme başarıyla tamamlandıysa 0, dahili hata oluştuysa -1 veya şifreleme başarıyla tamamlanmadıysa -2 değerini döndürür.vold
,CRYPTO_ENCRYPTION_IN_PROGRESS
işaretinin kripto meta verilerinde olup olmadığına bakarak bunu belirler. Ayarlanmışsa şifreleme işlemi kesintiye uğramıştır ve cihazda kullanılabilir veri yoktur.vold
hata döndürürse kullanıcı arayüzü, kullanıcıya cihazı yeniden başlatıp fabrika ayarlarına sıfırlaması için bir mesaj göstermeli ve bunu yapması için kullanıcıya bir düğme vermelidir. - Verilerin şifresini şifreyle çözme
cryptfs cryptocomplete
işlemi başarılı olduktan sonra çerçeve, disk şifresini isteyen bir kullanıcı arayüzü gösterir. Kullanıcı arayüzü,cryptfs checkpw
komutunuvold
adresine göndererek şifreyi kontrol eder. Şifre doğruysa (bu, şifresi çözülmüş/data
öğesinin geçici bir konuma başarıyla bağlanıp sonra bağlantısının kesilmesiyle belirlenir)vold
, şifresi çözülmüş blok cihazın adınıro.crypto.fs_crypto_blkdev
özelliğine kaydeder ve kullanıcı arayüzüne 0 durumunu döndürür. Şifre yanlışsa kullanıcı arayüzüne -1 döndürülür. - Durdurma çerçevesi
Kullanıcı arayüzü, kripto önyükleme grafiği gösterir ve ardından
vold
ilecryptfs restart
komutunu kullanarak çağrı yapar.vold
,vold.decrypt
özelliğinitrigger_reset_main
olarak ayarlar. Bu dainit.rc
öğesininclass_reset main
işlemini yapmasına neden olur. Bu, ana sınıftaki tüm hizmetleri durdurur ve tmpfs/data
dosyasının bağlantısının kaldırılmasına olanak tanır. - Bağlama
/data
vold
, şifresi çözülmüş gerçek/data
bölümünü bağlar ve yeni bölümü hazırlar (ilk sürümde desteklenmeyen silme seçeneğiyle şifrelenmişse bu bölüm hiçbir zaman hazırlanmamış olabilir). Bu işlev,vold.post_fs_data_done
özelliğini 0 olarak ayarlar ve ardındanvold.decrypt
özelliğinitrigger_post_fs_data
olarak ayarlar. Bu işlem,init.rc
uygulamasınınpost-fs-data
komutlarını çalıştırmasına neden olur. Gerekli dizinleri veya bağlantıları oluşturupvold.post_fs_data_done
değerini 1 olarak ayarlarlar.vold
, söz konusu özellikteki 1 değerini gördüğündevold.decrypt
özelliğinitrigger_restart_framework
olarak ayarlar. Bu işlem,init.rc
hizmetlerininmain
sınıfında yeniden başlatılmasına velate_start
sınıfında da açılıştan sonra ilk kez başlatılmasına neden olur. - Tam çerçeveyi başlatma
Artık çerçeve, tüm hizmetlerini şifresi çözülmüş
/data
dosya sistemini kullanarak başlatır ve sistem kullanıma hazır olur.
Başarısız
Şifre çözme işlemi başarısız olan bir cihazın arızalı olmasının birkaç nedeni olabilir. Cihaz, normal başlatma adımlarıyla başlar:
- Şifrelenmiş cihazı şifreyle algılama
- tmpfs'yi bağlama
- Şifre istemek için çerçeveyi başlatın.
Ancak çerçeve açıldıktan sonra cihazda bazı hatalar oluşabilir:
- Şifre eşleşiyor ancak verilerin şifresi çözülemiyor
- Kullanıcı 30 kez yanlış şifre girer
Bu hatalar çözülmezse kullanıcıdan cihazı fabrika ayarlarına sıfırlamasını isteyin:
vold
, şifreleme işlemi sırasında bir hata algılarsa, henüz veri yok edilmediyse ve çerçeve çalışıyorsa vold
, vold.encrypt_progress
özelliğini error_not_encrypted
olarak ayarlar.
Kullanıcı arayüzü, kullanıcıyı yeniden başlatmaya yönlendirir ve şifreleme işleminin hiç başlamadığı konusunda uyarır. Hata, çerçeve kaldırıldıktan sonra ancak ilerleme çubuğu kullanıcı arayüzü görünmeden önce oluşursa vold
sistemi yeniden başlatır. Yeniden başlatma işlemi başarısız olursa vold.encrypt_progress
, error_shutting_down
olarak ayarlanır ve -1 döndürülür. Ancak hatayı yakalayacak bir şey olmaz. Bu durumun yaşanması beklenmez.
vold
, şifreleme işlemi sırasında bir hata algılarsa vold.encrypt_progress
değerini error_partially_encrypted
olarak ayarlar
ve -1 döndürür. Kullanıcı arayüzünde şifrelemenin başarısız olduğunu belirten bir mesaj gösterilmeli ve kullanıcının cihazı fabrika ayarlarına sıfırlaması için bir düğme sağlanmalıdır.
Şifrelenmiş anahtarı saklama
Ş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ı kullanıcının şifresine ve depolanan tuz değerine scrypt uygulanarak oluşturulan bir anahtarla şifreliyorduk. Anahtarın kutu dışı saldırılara karşı dayanıklı olması için bu algoritmayı, sonuçtaki anahtarı depolanmış bir TEE anahtarıyla imzalayarak genişletiriz. Ortaya çıkan imza, 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ı saklamak için:
- Rastgele 16 baytlık disk şifreleme anahtarı (DEK) ve 16 baytlık tuz oluşturun.
- 32 baytlık ara anahtar 1 (IK1) oluşturmak için kullanıcı şifresine ve tuz değerine scrypt uygulayın.
- IK1'i donanıma bağlı özel anahtarın (HBK) boyutuyla sıfır baytlarla doldurun. Özellikle şu şekilde doldurma yaparız: 00 || IK1 || 00..00; bir sıfır bayt, 32 IK1 baytı, 223 sıfır baytı.
- 256 baytlık IK2'yi oluşturmak için doldurulmuş IK1'i HBK ile imzalayın.
- 32 baytlık IK3 oluşturmak için IK2'ye scrypt, tuz (2. adımdaki tuzla aynı) uygulayın.
- KEK olarak IK3'ün ilk 16 baytını, IV olarak ise son 16 baytını kullanın.
- DEK'yi AES_CBC ile, KEK anahtarıyla ve başlatma vektörü IV ile şifreleyin.
Şifreyi değiştirme
Bir kullanıcı ayarlarda şifresini değiştirmeyi veya kaldırmayı seçtiğinde kullanıcı arayüzü, cryptfs changepw
komutunu vold
'e gönderir ve vold
, disk anahtarını yeni şifreyle yeniden şifreler.
Şifreleme özellikleri
vold
ve init
, özellikleri ayarlayarak birbirleriyle iletişim kurar. Şifreleme için kullanılabilen özelliklerin listesini aşağıda bulabilirsiniz.
Vold özellikleri
Özellik | Açıklama |
---|---|
vold.decrypt trigger_encryption |
Sürücüyü şifrelemeden şifreleyin. |
vold.decrypt trigger_default_encryption |
Sürücünün şifrelenip şifrelenmediğini ve şifre olup olmadığını kontrol edin.
Şifrelenmişse şifresini çözüp bağlayın,
değilse vold.decrypt değerini 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 ayarlanır. |
vold.decrypt trigger_post_fs_data |
Gerekli dizinler vb. ile /data hazırlamak için vold tarafından ayarlanır. |
vold.decrypt trigger_restart_framework |
Gerçek çerçeveyi ve tüm hizmetleri başlatmak için vold tarafından ayarlanır. |
vold.decrypt trigger_shutdown_framework |
Şifrelemeyi başlatmak için tüm çerçeveyi kapatmak üzere 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 istemek üzere vold tarafından ayarlanır. |
vold.encrypt_progress |
Çerçeve başlatıldığı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 durumu çubuğu kullanıcı arayüzünde, şifrelemenin başarısız olduğuna dair bir mesaj gösterilmeli ve kullanıcıya cihazı fabrika ayarlarına sıfırlama seçeneği sunulmalıdır. |
vold.encrypt_progress error_reboot_failed |
İlerleme çubuğu kullanıcı arayüzünde, şifreleme işleminin tamamlandığını belirten bir mesaj gösterilmeli ve kullanıcıya cihazı yeniden başlatma düğmesi sunulmalıdır. Bu hatanın oluşması beklenmez. |
vold.encrypt_progress error_not_encrypted |
İlerleme çubuğu kullanıcı arayüzünde, bir hata oluştuğunu, verilerin şifrelenmediğini veya kaybolmadığını belirten bir mesaj gösterilmeli ve kullanıcıya sistemi yeniden başlatması için bir düğme verilmelidir. |
vold.encrypt_progress error_shutting_down |
İlerleme çubuğu kullanıcı arayüzü çalışmadığı için bu hataya kimin yanıt vereceği belli değil. Ayrıca bu durum hiçbir zaman yaşanmamalıdır. |
vold.post_fs_data_done 0 |
vold tarafından, vold.decrypt değeri trigger_post_fs_data olarak ayarlanmadan hemen önce ayarlanır. |
vold.post_fs_data_done 1 |
init.rc tarafından ayarlanır veya init.rc görevi tamamladıktan hemen sonra post-fs-data . |
init ö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, bu sistemin şifrelenmiş bir /data ile çalıştığını belirtmek için ayarlanır. |
|
Bu beş özellik, init tarafından /data 'yi init.rc 'den iletilen parametrelerle bağlamaya çalıştığında ayarlanır. vold , kripto eşlemeyi ayarlamak için bunları kullanır. |
ro.crypto.tmpfs_options |
init.rc tarafından, init'in tmpfs /data dosya sistemini bağlarken kullanması gereken seçeneklerle ayarlanır. |
ilk kullanıma hazırlama 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