Tüm diskin şifrelenmesi, şifrelenmiş bir anahtar kullanarak Android cihazdaki tüm kullanıcı verilerini kodlama işlemidir. Bir cihaz şifrelendikten sonra, 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 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. Hızlı şifrelemeyi şu anda yalnızca ext4 ve f2fs dosya sistemleri desteklemektedir.
- İlk açılışta şifreleme yapmak için
forceencrypt
fstab işareti eklendi. - Şifresiz kalıplar ve şifreleme için destek eklendi.
- Güvenilir Yürütme Ortamı (TEE) imzalama özelliği kullanılarak (TrustZone gibi) şifreleme anahtarı için donanım destekli depolama alanı eklendi. Daha fazla bilgi için Şifrelenmiş anahtarı depolama bölümüne bakın.
Dikkat: Android 5.0'e yükseltilen ve ardından şifrelenen cihazlar, fabrika verilerine sıfırlanarak şifrelenmemiş duruma döndürülebilir. İlk başlatma sırasında şifrelenen yeni Android 5.0 cihazlar, şifrelenmemiş duruma döndürülemez.
Android tam disk şifrelemesinin işleyiş şekli
Android tam disk şifrelemesi, blok cihaz katmanında çalışan bir çekirdek özelliği olan dm-crypt
tabanlıdır. Bu nedenle şifreleme, Yerleşik MultiMediaCard (eMMC) ve kendilerini çekirdeğe blok cihaz olarak sunan benzer flash cihazlarla çalışır. Doğrudan ham NAND flaş çipiyle iletişim kuran YAFFS ile şifreleme yapılamaz.
Şifreleme algoritması, şifre blok zinciri (CBC) ve ESSIV:SHA256 ile 128 bit Gelişmiş Şifreleme Standardı'dır (AES). 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 fazlasını 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 şifreleme 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 bunu varsayılan bir şifre ve depolanan takviye değer ile karma hale getirir. Varsayılan şifre "default_password" şeklindedir. Ancak sonuç karması, ana anahtarı şifrelemek için imzanın karmasını kullanan bir TEE (ör. TrustZone) aracılığıyla da imzalanı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. (ör. kullanıcı PIN'i/şifresi/deseni değişiklikleri, kullanıcı verilerinin yeniden şifrelenmesine NEDEN OLMAZ.) Yönetilen cihazın PIN, desen veya şifre kısıtlamalarına tabi olabileceğini unutmayın.
Şifreleme init
ve vold
tarafından yönetiliyor.
init
, vold
yöntemini çağırır ve vold, başlangıçtaki etkinlikleri tetikleyecek özellikleri ayarlar. Sistemin diğer kısımları da durumu raporlama, şifre isteme veya önemli bir hata durumunda fabrika ayarlarına sıfırlama istemi gibi görevleri gerçekleştirmek için özelliklere bakar. Sistem, vold
ürününde şifreleme özelliklerini çağırmak için vdc
komut satırı aracının cryptfs
komutlarını kullanır: checkpw
,
restart
, enablecrypto
, changepw
,
cryptocomplete
, verifypw
, setfield
,
getfield
, mountdefaultencrypted
, getpwtype
, getpw
ve clearpw
.
/data
öğesini şifrelemek, şifresini çözmek veya silmek için /data
eklenmemelidir. Ancak herhangi bir kullanıcı arayüzünü (UI) gösterebilmek için çerçevenin başlatılması ve çerçevenin /data
çalıştırılması gerekir. Bu sorunu çözmek için /data
üzerine geçici bir dosya sistemi monte edilir.
Bu, Android'in şifreleri sormasına, ilerleme durumunu göstermesine veya gerektiğinde veri silme önerisinde bulunmasına olanak tanır. Geçici dosya sisteminden gerçek /data
dosya sistemine geçiş için sistemin geçici dosya sisteminde açık dosyalar içeren tüm işlemleri 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 hizmetlerin core
, main
ve late_start
gruplarından birinde olması gerekir.
core
: Başlattıktan sonra hiçbir zaman kapatmayın.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
mülkü çeşitli dizelerle ayarlanır.
Hizmetleri kapatmak 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
'e yanıt vermez.
Akışlar
Şifrelenmiş cihazlar için dört akış vardır. Bir cihaz yalnızca bir kez şifrelenir ve ardından normal bir başlatma akışı izlenir.
- Daha önce şifrelenmemiş bir cihazı şifreleme:
- Yeni bir cihazı
forceencrypt
ile şifreleyin: İlk başlatma sırasında zorunlu şifreleme (Android L'den başlamak üzere). - Mevcut bir cihazı şifreleme: Kullanıcı tarafından başlatılan şifreleme (Android K ve önceki sürümler).
- Yeni bir cihazı
- Şifrelenmiş bir cihazı önyükleme:
- Şifrelenmiş bir cihazı şifre olmadan başlatma: Ayarlanmış şifresi olmayan şifrelenmiş bir cihazı 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 ş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.
Yeni bir cihazı zorla şifreleme ile şifreleme
Bu, Android 5.0 cihazın normal ilk başlatma işlemidir.
forceencrypt
işaretiyle şifrelenmemiş dosya sistemini algılama/data
şifrelenmedi ancakforceencrypt
tarafından zorunlu kılındığı için şifrelenmesi gerekiyor./data
'ü çıkarın./data
alanını şifrelemeye başlavold.decrypt = "trigger_encryption"
,init.rc
'ü tetikler. Bu davold
'nin/data
'ı şifre olmadan şifrelemesine neden olur. (Bu yeni bir cihaz olması gerektiği için hiçbiri ayarlanmadı.)- Tmpfs'leri ekle
vold
, bir tmpfs/data
ekler (ro.crypto.tmpfs_options
kaynağındaki geçici dosya adlandırma seçeneklerini kullanarak) vevold.encrypt_progress
özelliğini 0 olarak ayarlar.vold
, şifrelenmiş bir sistemi başlatmak için tmpfs/data
'yi hazırlar vevold.decrypt
mülkünü şu şekilde ayarlar:trigger_restart_min_framework
- İlerlemeyi göstermek için çerçeveyi getirme
Cihazda şifrelenecek veri neredeyse hiç olmadığı için şifreleme çok hızlı gerçekleştiği için ilerleme çubuğu sık sık gösterilmez. İlerleme 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ğerinidefaultcrypto
hizmetini başlatantrigger_default_encryption
olarak ayarlar. (Bu işlem, varsayılan olarak şifrelenmiş bir kullanıcı verisi eklemek için aşağıdaki akışı başlatır.)trigger_default_encryption
,/data
'un şifrelenmiş olup olmadığını görmek için şifreleme türünü kontrol eder. 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./data
ekleinit
daha sonrainit.rc
üzerinde ayarlanmışro.crypto.tmpfs_options
öğesinden aldığı parametreleri kullanarak bir tmpfs RAMDisk'e/data
ekler.- Çerçeveyi başlat
vold
,vold.decrypt
uygulamasınıtrigger_restart_framework
olarak ayarlar ve bu durumda normal başlatma işlemi devam eder.
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 kodda "yerinde şifreleme" olarak adlandırılır. Kullanıcı bir cihazı şifrelemeyi seçtiğinde kullanıcı arayüzü, şifreleme işlemini tamamlamak için yeterli güç olması amacıyla pilin tam olarak şarj edildiğinden ve AC adaptörüne takılı olduğundan emin olur.
Uyarı: Cihazın pili biterse ve şifreleme işlemi tamamlanmadan kapanırsa dosya verileri kısmen şifrelenmiş durumda kalır. Cihazın fabrika ayarlarına sıfırlanması gerekir 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 durumu: ro.crypto.state = "unencrypted"
'yi ayarlayın ve başlatmaya devam etmek için on nonencrypted
init
tetikleyicisini yürütün.
- Şifreyi kontrol etme
Kullanıcı arayüzü,
passwd
kullanıcının kilit ekranı şifresi olmak üzerecryptfs enablecrypto inplace
komutuylavold
'ü çağırır. - Çerçeveyi kaldırmak
vold
hataları kontrol eder, şifreleyemezse -1 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
'ünlate_start
vemain
sınıflarındaki hizmetleri durdurmasına neden olur. - Şifreleme altbilgisi oluşturma
- İçerik haritası dosyası oluşturma
- Yeniden başlat
- İçerik haritası dosyasını algılama
/data
alanını şifrelemeye başlavold
daha sonra kripto eşlemesini ayarlar. Bu işlem, gerçek blok cihazla eşlenen ancak her bir sektörü yazıldığı şekilde şifreleyen ve okunurken her bir sektörün şifresini çözen sanal bir kripto blok cihazı oluşturur.vold
, daha sonra kripto meta verilerini oluşturup yazar.- Şifreleme sırasında tmpfs'yi bağlama
vold
,ro.crypto.tmpfs_options
adresindeki geçici dosya adlandırma seçeneklerini kullanarak/data
adlı geçici dosya ekler vevold.encrypt_progress
özelliğini 0 olarak ayarlar.vold
, şifrelenmiş bir sistemi başlatmak için tmpfs'yi/data
hazırlar vevold.decrypt
mülkünü şu şekilde ayarlar:trigger_restart_min_framework
- İlerlemeyi göstermek için bir çerçeve oluşturma
trigger_restart_min_framework
,init.rc
değerininmain
hizmet sınıfının başlatılması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ü, bölümün başka bir yüzdesini şifreleyip her seferindevold.encrypt_progress
değerini günceller. /data
şifrelendiğinde kripto altbilgisini güncelleyin/data
başarıyla şifrelendiğindevold
, meta veridekiENCRYPTION_IN_PROGRESS
işaretini temizler.Cihazın kilidi başarıyla açıldığında şifre, ana anahtarı şifrelemek için kullanılır ve şifreleme altbilgisi güncellenir.
Yeniden başlatma işlemi bir nedenle başarısız olursa
vold
,vold.encrypt_progress
mülkünüerror_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. 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.
- Şifresiz, şifrelenmiş
/data
öğesini algıla/data
eklenemediği veencryptable
ya daforceencrypt
işaretlerinden biri ayarlandığı için Android cihazın şifrelenmiş olduğunu tespit edin.vold
,vold.decrypt
öğesinitrigger_default_encryption
olarak ayarlar ve bu işlemdefaultcrypto
hizmetini başlatır.trigger_default_encryption
,/data
ürününün şifreli olup olmadığını görmek için şifreleme türünü kontrol eder. - /data şifresini çözme
Cihazın kullanıma hazır olması için engellenen cihazın üzerine
dm-crypt
cihazı oluşturur. - /data ekle
vold
, şifresi çözülmüş gerçek/data
bölümünü bağlar ve ardından yeni bölümü hazırlar.vold.post_fs_data_done
özelliğini 0, ardındanvold.decrypt
özelliğinitrigger_post_fs_data
olarak ayarlar. Bu,init.rc
'ü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 ayarlıyor.vold
, bu mülkte 1'i gördükten sonravold.decrypt
mülkünü şu şekilde ayarlar:trigger_restart_framework.
Bu,init.rc
'ınmain
sınıfındaki hizmetleri tekrar başlatmasına ve ayrıca önyüklemeden sonra ilk kezlate_start
sınıfındaki hizmetleri başlatmasına neden olur. - Çerçeveyi başlat
Çerçeve şimdi şifresi çözülmüş
/data
öğesini kullanarak tüm hizmetlerini başlatıyor ve sistem kullanıma hazır.
Şifrelenmiş bir cihazı varsayılan şifreleme olmadan başlatma
Şifre ayarlanmış şifrelenmiş bir cihazı başlattığınızda bu işlem gerçekleşir. Cihazın şifresi PIN, desen veya şifre olabilir.
- Şifrelenmiş cihazı şifreyle algılama
Android cihazın şifrelenmiş olduğunu algılama. Bunun nedeni:
ro.crypto.state = "encrypted"
/data
şifreyle şifrelendiği içinvold
,vold.decrypt
değerinitrigger_restart_min_framework
olarak ayarlar. - Tmpfs'leri ekle
init
,init.rc
kaynağından iletilen parametrelerle/data
için sunulan ilk ekleme seçeneklerini kaydetmek için beş özellik belirler.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
(Başında 0x olan 8 haneli onaltılık ASCII sayısı)
- Şifre istemi çerçevesini başlat
Çerçeve başlatılır ve
vold.decrypt
öğesinintrigger_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 önce diskin düzgün bir şekilde şifrelendiğinden emin olmalıdır.
cryptfs cryptocomplete
komutunuvold
adresine gönderir.vold
, şifreleme başarıyla tamamlandıysa 0, dahili hata için -1, şifreleme başarıyla tamamlanmadıysa -2 değerini döndürür.vold
,CRYPTO_ENCRYPTION_IN_PROGRESS
işaretinin kripto meta verilerine bakarak bunu belirler. Ayarlandıysa şifreleme işlemi kesintiye uğramıştır ve cihazda kullanılabilir veri yoktur.vold
hata döndürüyorsa kullanıcı arayüzünde, kullanıcıya cihazı yeniden başlatıp fabrika ayarlarına sıfırlaması gerektiğini belirten bir mesaj gösterilmeli ve kullanıcıya bunu yapması için bir düğme sunulmalıdır. - Verilerin şifresini şifreyle çözme
cryptfs cryptocomplete
başarılı olduğunda çerçeve, disk şifresini soran bir kullanıcı arayüzü gösterir. Kullanıcı arayüzü,cryptfs checkpw
komutunuvold
adresine göndererek şifreyi kontrol eder. Şifre doğruysa (şifresi çözülmüş/data
öğesinin geçici bir konuma başarıyla eklenip ardından bağlantısı kesilerek belirlenir)vold
, şifresi çözülmüş blok cihazın adınıro.crypto.fs_crypto_blkdev
özelliğinde kaydeder ve kullanıcı arayüzüne 0 durumunu döndürür. Şifre yanlışsa kullanıcı arayüzüne -1 değerini döndürür. - Çerçeveyi durdurma
Kullanıcı arayüzü, bir kripto önyükleme grafiği gösterir ve ardından
cryptfs restart
komutuylavold
'ü çağırır.vold
,vold.decrypt
özelliğinitrigger_reset_main
olarak ayarlar. Bu durumdainit.rc
,class_reset main
özelliğini yapar. Bu işlem, ana sınıftaki tüm hizmetleri durdurarak/data
geçici dosya depolamasının kaldırılmasına olanak tanır. /data
'i monte edinvold
daha sonra ş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 hiç hazırlanmamış olabilir).vold.post_fs_data_done
özelliğini 0 olarak ayarlar ve ardındanvold.decrypt
özelliğinitrigger_post_fs_data
olarak ayarlar. Bu,init.rc
tarayıcısı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 ayarlayın.vold
, bu mülkteki 1 değerini gördüğündevold.decrypt
özelliğinitrigger_restart_framework
olarak ayarlar. Bu,init.rc
ürünününmain
sınıfında hizmetleri tekrar başlatmasına ve ayrıca, başlatmadan itibarenlate_start
sınıfında hizmetleri ilk kez başlatmasına neden olur.- Tam çerçeveyi başlatma
Çerçeve artık şifresi çözülmüş
/data
dosya sistemini kullanarak tüm hizmetlerini başlatıyor ve sistem kullanıma hazır.
Başarısız
Şifre çözme işleminin başarısız olduğu cihazlarda birkaç sorun olabilir. Cihaz, normal bir dizi adımla başlar:
- Şifreyle şifrelenmiş cihazı algıla
- tmpfs'yi bağlama
- Şifre isteğinde bulunmak için çerçeveyi başlatma
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 cihazı yeniden başlatmasını ister ve şifreleme işleminin hiç başlatılmadığını bildirir. Hata, çerçeve yıkıldıktan sonra ancak ilerleme çubuğu kullanıcı arayüzü yüklenmeden önce oluşursa vold
, sistemi yeniden başlatır. Yeniden başlatma başarısız olursa vold.encrypt_progress
değerini error_shutting_down
olarak ayarlar ve -1 değerini döndürür. Ancak hatayı yakalayacak bir şey olmaz. Bunun olması beklenmez.
vold
, şifreleme işlemi sırasında bir hata algılarsa vold.encrypt_progress
politikasını error_partially_encrypted
olarak ayarlar 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ı saklama
Şifrelenmiş anahtar, şifreleme 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 takviye değere scrypt uygulanarak oluşturulan bir anahtarla şifreliyorduk. Anahtarı normal olmayan saldırılara karşı dayanıklı hale getirmek amacıyla, sonuçta 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 şifresini çözmek için kullanılır. Bu anahtarı depolamak için:
- Rastgele 16 baytlık disk şifreleme anahtarı (DEK) ve 16 baytlık tuz oluşturun.
- 32 baytlık ara anahtar 1'i (IK1) oluşturmak için kullanıcı şifresine ve tuz değerine scrypt uygulayın.
- IK1'i, donanıma bağlı özel anahtar (HBK) boyutuna kadar sıfır baytla doldurun. Tam olarak şu şekilde doldurulur: 00 || IK1 || 00..00; bir sıfır bayt, 32 IK1 bayt, 223 sıfır bayt.
- 256 bayt IK2 üretmek için IK1'i HBK ile imzalayın.
- 32 baytlık IK3 oluşturmak için IK2'ye ve tuz (2. adımdakiyle aynı tuz) değerine scrypt uygulayın.
- IK3'ün ilk 16 baytını KEK, son 16 baytını ise IV olarak kullanın.
- DEK'yi AES_CBC, anahtar KEK ve başlatma vektörü IV ile şifreleyin.
Şifreyi değiştirme
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
, mülkleri ayarlayarak birbirleriyle iletişim kurar. Şifreleme için kullanılabilen özelliklerin listesi aşağıda verilmiştir.
Hacim özellikleri
Özellik | Açıklama |
---|---|
vold.decrypt trigger_encryption |
Sürücüyü şifre kullanmadan şifreleyin. |
vold.decrypt trigger_default_encryption |
Şifre kullanılmadan şifrelenip şifrelenmediğini görmek için sürücüyü kontrol edin.
Öyleyse şifresini çözüp ekleyin. Aksi takdirde vold.decrypt öğesini, trigger_restart_min_framework değerine 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 |
/data için gerekli dizinleri ve diğer öğeleri hazırlamak üzere 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 tam çerçeveyi kapatmak üzere gönüllü tarafından ayarlandı. |
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ğu kullanıcı arayüzünde, şifrelemenin başarısız olduğuyla ilgili bir mesaj gösterilir ve kullanıcıya cihazı fabrika ayarlarına sıfırlama seçeneği sunulur. |
vold.encrypt_progress error_reboot_failed |
İlerleme çubuğunun kullanıcı arayüzünde, şifrelemenin tamamlandığını belirten bir mesaj gösterilmeli ve kullanıcıya cihazı yeniden başlatması için bir düğme sağlanmalıdır. Bu hatanın oluşması beklenmez. |
vold.encrypt_progress error_not_encrypted |
İlerleme çubuğunun kullanıcı arayüzünde bir hata oluştuğunu, hiçbir verinin şifrelenmediğini veya kayıp olduğunu 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ış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 öğesini trigger_post_fs_data olarak ayarlamadan hemen önce vold tarafından ayarlandı. |
vold.post_fs_data_done 1 |
init.rc tarafından ayarlanır veya post-fs-data görevini tamamladıktan hemen sonra init.rc tarafından ayarlanır. |
başlatma özellikleri
Özellik | Açıklama |
---|---|
ro.crypto.fs_crypto_blkdev |
Daha sonra kullanmak üzere vold komutu restart ile kullanılmak üzere vold komutu checkpw tarafından ayarlanı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ı belirtecek şekilde ayarlandı. |
|
Bu beş özellik, init.rc tarafından 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 sistemi eklenirken init'in kullanması gereken seçeneklerle init.rc tarafından ayarlandı. |
init 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