Szyfrowanie całego dysku to proces kodowania wszystkich danych użytkownika na urządzeniu z Androidem za pomocą zaszyfrowany klucz. Po zaszyfrowaniu urządzenia wszystkie dane utworzone przez użytkownika są automatycznie szyfrowane przed zapisaniem na dysku, a wszystkie odczyty automatycznie odszyfrowywane przed przekazaniem do procesu wywołania.
Szyfrowanie całego dysku zostało wprowadzone w Androidzie 4.4, ale w Androidzie 5.0 pojawiły się nowe funkcje:
- Utworzono szybkie szyfrowanie, które szyfruje tylko używane bloki na partycji danych by pierwsze uruchomienie nie zajmowało zbyt dużo czasu. Tylko systemy plików ext4 i f2fs obecnie obsługują szybkie szyfrowanie.
- Dodano:
forceencrypt
fstab do zaszyfrowania przy pierwszym uruchomieniu. - Dodano obsługę wzorów i szyfrowania bez hasła.
- Dodano sprzętowe przechowywanie klucza szyfrowania przy użyciu funkcji podpisywania zaufanego środowiska wykonawczego (TEE) (np. w TrustZone). Więcej informacji znajdziesz w sekcji Przechowywanie zaszyfrowanego klucza. .
Uwaga: urządzenia z Androidem 5.0 lub nowszym Zaszyfrowane dane mogą zostać przywrócone do stanu niezaszyfrowanego przez przywrócenie danych fabrycznych. Nowe urządzenia z Androidem 5.0, które zostały zaszyfrowane przy pierwszym uruchomieniu, nie mogą zostać przywrócone do stanu niezaszyfrowanego.
Jak działa pełne szyfrowanie dysku na Androidzie
Szyfrowanie całego dysku w Androidzie opiera się na dm-crypt
, czyli funkcji jądra, która działa na poziomie urządzenia blokowego. W związku z tym szyfrowanie działa z kartami Embedded MultiMediaCard (eMMC) i podobnymi urządzeniami flash, które są rozpoznawane przez jądro jako urządzenia blokowe. Szyfrowanie nie jest możliwe w przypadku YAFFS, który komunikuje się bezpośrednio z nieprzetworzonym układem flash NAND.
Algorytm szyfrowania to 128-bitowy Advanced Encryption Standard (AES) z łańcuchem szyfrowania blokowego (CBC) i ESSIV:SHA256. Klucz główny jest szyfrowany za pomocą 128-bitowego AES za pomocą wywołań biblioteki OpenSSL. Klucz musi mieć co najmniej 128 bitów (256 bitów jest opcjonalne).
Uwaga: producenci OEM mogą używać wersji 128-bitowej lub nowszej do szyfrowania klucza głównego.
W Androidzie 5.0 dostępne są 4 rodzaje stanów szyfrowania:
- domyślnie
- Kod PIN
- hasło
- wzór
Podczas pierwszego uruchomienia urządzenie tworzy losowo wygenerowany 128-bitowy klucz główny, a następnie szyfruje go za pomocą domyślnego hasła i zapisanego elementu soli. Domyślne hasło to „default_password”. Jednak wynikowy hasz jest również podpisany przez TEE (np. TrustZone), który do szyfrowania klucza głównego wykorzystuje skrót podpisu.
Domyślne hasło znajdziesz w projekcie Android Open Source cryptfs.cpp .
Gdy użytkownik ustawia kod PIN lub hasło na urządzeniu, tylko 128-bitowy klucz jest ponownie szyfrowany i przechowywany. (np. zmiany kodu PIN/karty/wzoru użytkownika NIE powodują przez ponowne szyfrowanie danych użytkownika). Pamiętaj, że urządzenie zarządzane może podlegać ograniczeniom związanym z kodem PIN, wzorem lub hasłem.
Szyfrowaniem zarządza init
i vold
.
init
wywołuje vold
, a vold ustawia właściwości, aby wywoływać zdarzenia w init. Inne części systemu
przejść do usług,
np. zgłaszać stan, prosić o
hasła lub komunikatu o przywróceniu ustawień fabrycznych w przypadku błędu krytycznego. Do wywołania
funkcji szyfrowania w vold
, system używa narzędzia wiersza poleceń
Polecenia cryptfs
na urządzeniu vdc
: checkpw
,
restart
, enablecrypto
, changepw
,
cryptocomplete
, verifypw
, setfield
,
getfield
, mountdefaultencrypted
, getpwtype
getpw
i clearpw
.
Aby szyfrować, odszyfrowywać lub kasować /data
, /data
nie może być zamontowany. Aby jednak wyświetlić dowolny interfejs użytkownika,
platforma musi się uruchomić, a do uruchomienia musi być /data
. Do
jeśli nie uda się rozwiązać tej zagadki, na dysku /data
zostanie podłączony tymczasowy system plików.
Dzięki temu Android może wyświetlać prośby o hasła, pokazywać postęp lub sugerować wyczyszczenie danych w razie potrzeby. Wymusza ono jednak ograniczenie, że aby przejść z tymczasowego systemu plików do prawdziwego systemu plików /data
, system musi zatrzymać wszystkie procesy z otwartymi plikami w tymczasowym systemie plików i ponownie uruchomić te procesy w rzeczywistym systemie plików /data
. W tym celu wszystkie usługi
musi należeć do jednej z 3 grup: core
, main
i
late_start
core
: nigdy nie wyłączaj po uruchomieniu.main
: wyłącz komputer, a następnie uruchom go ponownie po wpisaniu hasła do dysku.late_start
: rozpoczyna się dopiero po odszyfrowaniu i podłączeniu urządzenia/data
.
Aby wywołać te działania, właściwość vold.decrypt
jest ustawiona na różne ciągi znaków.
Aby wyłączyć i ponownie uruchomić usługi, użyj poleceń init
:
class_reset
: zatrzymuje usługę, ale pozwala na jej ponowne uruchomienie za pomocą klasy class_start.class_start
: uruchamia ponownie usługę.class_stop
: zatrzymuje usługę i dodaje flagęSVC_DISABLED
. Zatrzymane usługi nie odpowiadają naclass_start
.
Przepływy
W przypadku zaszyfrowanego urządzenia są 4 przepływy. Urządzenie jest szyfrowane tylko raz, a potem przechodzi przez normalny proces uruchamiania.
- Zaszyfruj wcześniej niezaszyfrowane urządzenie:
- Szyfrowanie nowego urządzenia za pomocą
forceencrypt
: obowiązkowe szyfrowanie podczas pierwszego uruchamiania (od Androida L). - Zaszyfruj istniejące urządzenie: szyfrowanie inicjowane przez użytkownika (Android K i starsze).
- Szyfrowanie nowego urządzenia za pomocą
- Uruchamianie zaszyfrowanego urządzenia:
- Uruchamianie zaszyfrowanego urządzenia bez hasła: uruchamianie zaszyfrowanego urządzenia, które nie ma ustawionego hasła (dotyczy urządzeń z Androidem 5.0 i nowszym).
- Uruchamianie zaszyfrowanego urządzenia przy użyciu hasła: uruchamianie zaszyfrowanego urządzenia, na którym zostało ustawione hasło.
Oprócz tych procesów urządzenie może również nie zaszyfrować /data
.
Poniżej szczegółowo opisujemy każdy z tych procesów.
Szyfrowanie nowego urządzenia przy użyciu wymuszania szyfrowania
To normalne pierwsze uruchomienie urządzenia z Androidem 5.0.
- Wykrywanie niezaszyfrowanego systemu plików za pomocą flagi
forceencrypt
Plik
/data
nie jest zaszyfrowany, ale wymaga tego ustawienia przez systemforceencrypt
. Odłącz urządzenie/data
. - Rozpocznij szyfrowanie
/data
vold.decrypt = "trigger_encryption"
powodujeinit.rc
, co powoduje, żevold
szyfruje/data
bez hasła. (brak ustawienia, ponieważ to nowe urządzenie). - Montowanie tmpfs
vold
montuje tmpfs/data
(korzystając z opcji tmpfs zro.crypto.tmpfs_options
) i ustawia wartość właściwościvold.encrypt_progress
na 0.vold
przygotowuje tmpfs/data
do uruchamiania zaszyfrowanego systemu i ustawia właściwośćvold.decrypt
na:trigger_restart_min_framework
- Otwórz schemat, aby wyświetlić postępy.
Na urządzeniu nie ma praktycznie danych do zaszyfrowania, więc pasek postępu pojawiają się często, ponieważ szyfrowanie odbywa się bardzo szybko. Więcej informacji o interfejsie postępu znajdziesz w artykule Szyfrowanie istniejącego urządzenia.
- Kiedy
/data
jest zaszyfrowany, usuń tę platformęvold
ustawiavold.decrypt
natrigger_default_encryption
, co uruchamia usługędefaultcrypto
. (spowoduje to rozpoczęcie poniższych czynności dotyczących zamontowania domyślnie zaszyfrowanych danych użytkownika)trigger_default_encryption
sprawdza typ szyfrowania, aby sprawdzić, czy/data
jest zaszyfrowany z użyciem protokołu hasła. Ponieważ urządzenia z Androidem 5.0 są szyfrowane przy pierwszym uruchomieniu, nie powinno być ustawionego hasła. Dlatego odszyfrowujemy i montujemy/data
. - Montaż
/data
init
podłącza następnie/data
na dysku RAM Disk tmpfs za pomocą pobieranych przez niego parametrów z parametruro.crypto.tmpfs_options
, który jest ustawiony w aplikacjiinit.rc
. - Uruchom platformę
vold
ustawiavold.decrypt
natrigger_restart_framework
, co powoduje kontynuowanie normalnego procesu uruchamiania.
Szyfrowanie istniejącego urządzenia
Dzieje się tak, gdy szyfrujesz niezaszyfrowane urządzenie z Androidem K lub starszym, które zostało przeniesione na Androida L.
Ten proces jest inicjowany przez użytkownika i jest nazywany „szyfrowaniem lokalnym”. kod. Gdy użytkownik zaszyfruje urządzenie, interfejs zapewnia bateria jest w pełni naładowana, a ładowarka jest podłączona, by zapewnić wystarczającą aby zakończyć proces szyfrowania.
Ostrzeżenie: jeśli w urządzeniu zostanie wyczerpane zasilanie i wyłączy się, zanim się zakończy danych plików pozostają w stanie częściowo zaszyfrowanego. Urządzenie musi zostać zresetowane do ustawień fabrycznych, a wszystkie dane zostaną usunięte.
Aby włączyć szyfrowanie na miejscu, vold
uruchamia pętlę, która odczytuje każdy sektor rzeczywistego urządzenia blokowego, a następnie zapisze go na urządzeniu blokowym szyfrującym. Funkcja vold
sprawdza, czy określony sektor
przed przeczytaniem i pisaniem. Dzięki temu
na nowych urządzeniach, które mają niewiele danych lub nie mają ich wcale.
Stan urządzenia: ustaw ro.crypto.state = "unencrypted"
.
i wykonaj aktywator on nonencrypted
init
, aby kontynuować uruchamianie.
- Sprawdź hasło
Interfejs wywołuje
vold
z poleceniemcryptfs enablecrypto inplace
, gdziepasswd
to hasło do ekranu blokady. - Wyłączenie zasad
vold
sprawdza błędy, zwraca -1, jeśli nie może zaszyfrować, i drukuje przyczynę w dzienniku. Jeśli może zaszyfrować, ustawia właściwośćvold.decrypt
natrigger_shutdown_framework
. Spowoduje to, że usługainit.rc
przestanie obsługiwać klasylate_start
imain
. - Tworzenie stopki krypto
- Tworzenie pliku ścieżki nawigacyjnej
- Uruchom ponownie
- Wykryj plik menu nawigacyjnego
- Rozpocznij szyfrowanie
/data
vold
konfiguruje mapowanie szyfrowania, które tworzy wirtualne urządzenie blokowe szyfrowania, które jest mapowane na rzeczywiste urządzenie blokowe, ale szyfruje każdy sektor podczas zapisu i odszyfrowuje każdy sektor podczas odczytu.vold
następnie tworzy i zapisuje nie ma metadanych kryptograficznych. - Podczas szyfrowania podłącz tmpfs
vold
montuje tmpfs/data
(korzystając z opcji tmpfs zro.crypto.tmpfs_options
) i ustawia wartość właściwościvold.encrypt_progress
na 0.vold
przygotowuje tmpfs/data
do uruchamiania zaszyfrowanego systemu i ustawia właściwośćvold.decrypt
na:trigger_restart_min_framework
- Otwórz schemat, aby wyświetlić postępy.
trigger_restart_min_framework
powoduje, żeinit.rc
do uruchomić klasę usługmain
. Gdy framework wykryje, że wartość parametruvold.encrypt_progress
wynosi 0, wyświetla pasek postępu interfejsu użytkownika, który co 5 sekund wysyła zapytanie do tej właściwości i aktualizuje pasek postępu. Pętla szyfrowania aktualizuje sięvold.encrypt_progress
za każdym razem szyfruje kolejny procent partycji. - Gdy kod
/data
jest zaszyfrowany, zaktualizuj stopkę kryptograficznąGdy
/data
zostanie zaszyfrowany,vold
usuwa flagęENCRYPTION_IN_PROGRESS
w metadanych.Gdy urządzenie zostanie odblokowane, hasło zostanie użyte do zaszyfrowania klucza głównego, a stopka kryptograficzna zostanie zaktualizowana.
Jeśli z jakiegoś powodu restart się nie powiedzie,
vold
ustawia właściwośćvold.encrypt_progress
doerror_reboot_failed
i interfejs powinien wyświetlać komunikat z prośbą o naciśnięcie przycisku i uruchomić go ponownie. Nie powinno do tego dojść.
Uruchamianie zaszyfrowanego urządzenia z domyślnym szyfrowaniem
Dzieje się tak, gdy uruchamiasz zaszyfrowane urządzenie bez hasła. Ponieważ urządzenia z Androidem 5.0 są szyfrowane przy pierwszym uruchomieniu, nie powinno być ustawionego hasła, więc jest to stan domyślnego szyfrowania.
- Wykrywanie zaszyfrowanych
/data
bez hasłaWykrywa, że urządzenie z Androidem jest zaszyfrowane, ponieważ
/data
nie można podłączyć, a jedna z flagencryptable
lub Ustawienieforceencrypt
jest ustawione.vold
ustawia wartośćvold.decrypt
natrigger_default_encryption
, która rozpoczyna siędefaultcrypto
.trigger_default_encryption
sprawdza typ szyfrowania, aby sprawdzić, czy/data
jest zaszyfrowany z hasłem czy bez. - Odszyfruj /data
Tworzy urządzenie
dm-crypt
na urządzeniu blokowym, aby było ono gotowe do użycia. - Podłączanie /dane
vold
najpierw montuje odszyfrowaną partycję/data
, a potem przygotowuje nową partycję. Ustawia właściwośćvold.post_fs_data_done
na 0, a następnie ustawiavold.decrypt
do:trigger_post_fs_data
. Powoduje to, żeinit.rc
będzie wykonywać poleceniapost-fs-data
. Tworzą one niezbędne katalogi lub linki, a potem ustawiają wartość parametruvold.post_fs_data_done
na 1.Gdy
vold
zobaczy 1 w tej właściwości, ustawia właściwośćvold.decrypt
na:trigger_restart_framework.
. Spowoduje to ponowne uruchomienie usług w klasiemain
przezinit.rc
oraz uruchomienie usług w klasielate_start
po raz pierwszy od momentu uruchomienia. - Uruchom platformę
Teraz platforma uruchamia wszystkie usługi przy użyciu odszyfrowanego pliku
/data
, a system jest gotowy do użycia.
Uruchamianie zaszyfrowanego urządzenia bez domyślnego szyfrowania
Tak się dzieje, gdy uruchamiasz zaszyfrowane urządzenie z ustawionym hasłem. Hasło urządzenia może być kodem PIN, wzorem lub hasłem.
- Wykrywanie zaszyfrowanego urządzenia za pomocą hasła
wykryć, że urządzenie z Androidem jest zaszyfrowane, ponieważ ma flagę
ro.crypto.state = "encrypted"
vold
ustawia wartośćvold.decrypt
natrigger_restart_min_framework
, ponieważ/data
jest zaszyfrowany za pomocą hasła. - Montaż tmpfs
init
ustawia 5 właściwości, aby zapisać początkowe opcje podłączenia podana dla parametru/data
z parametrami przekazywanymi zinit.rc
.vold
używa tych właściwości do konfigurowania mapowania kryptowalut:ro.crypto.fs_type
ro.crypto.fs_real_blkdev
ro.crypto.fs_mnt_point
ro.crypto.fs_options
ro.crypto.fs_flags
(8-cyfrowy numer szesnastkowy w standardzie ASCII poprzedzony cyfrą 0x)
- Uruchomienie frameworku, aby wyświetlić prośbę o hasło
Platforma uruchamia się i widzi, że ustawiona jest
vold.decrypt
trigger_restart_min_framework
Informuje ono framework, że uruchamia się na dysku tmpfs/data
i musi pobrać hasło użytkownika.Najpierw jednak musi się upewnić, że dysk został prawidłowo zaszyfrowany. it wysyła polecenie
cryptfs cryptocomplete
do:vold
.vold
zwraca wartość 0, jeśli szyfrowanie zostało zakończone pomyślnie, -1 w przypadku błędu wewnętrznego lub -2, jeśli szyfrowanie nie zostało zakończone pomyślnie.vold
określa sprawdzając metadane kryptograficzne dotycząceCRYPTO_ENCRYPTION_IN_PROGRESS
flaga. Jeśli jest ustawiony, oznacza, że proces szyfrowania został przerwany i na urządzeniu nie ma żadnych przydatnych danych. Jeślivold
zwraca błąd, interfejs powinien Wyświetlać komunikat z prośbą o zrestartowanie urządzenia i przywrócenie go do ustawień fabrycznych, a także użytkownik może kliknąć przycisk, który to umożliwia. - Odszyfrowywanie danych za pomocą hasła
Po pomyślnym rozwiązaniu
cryptfs cryptocomplete
platforma wyświetli interfejs użytkownika z prośbą o podanie hasła do dysku. Interfejs użytkownika sprawdza hasło, wysyłając poleceniecryptfs checkpw
dovold
. Jeśli hasło jest prawidłowe (co jest określane przez zamontowanie odszyfrowanego/data
w tymczasowym miejscu, a następnie odmontowanie),vold
zapisuje nazwę odszyfrowanego urządzenia blokującego w właściwościro.crypto.fs_crypto_blkdev
i zwraca stan 0 do interfejsu użytkownika. Jeśli hasło jest nieprawidłowe, zwraca ona -1 do interfejsu użytkownika. - Zatrzymaj platformę
Interfejs wyświetla grafikę rozruchową kryptografii, a następnie wywołuje
vold
z użyciem tego kodu. poleceniecryptfs restart
.vold
ustawia właściwośćvold.decrypt
dotrigger_reset_main
, co powodujeinit.rc
, aby wykonaćclass_reset main
. Spowoduje to zatrzymanie wszystkich usług w klasie głównej, co pozwoli na odmontowanie tmpfs/data
. - Pod górę
/data
vold
następnie podłącza odszyfrowaną prawdziwą partycję/data
i przygotowuje nową partycję (która mogła nigdy nie być przygotowana, został zaszyfrowany przy użyciu opcji czyszczenia, która na początku nie jest obsługiwana. wersji produkcyjnych). Ustawia właściwośćvold.post_fs_data_done
na 0, a następnie ustawia wartośćvold.decrypt
natrigger_post_fs_data
. To powodujeinit.rc
, aby uruchomić poleceniapost-fs-data
. Ta utwórz potrzebne katalogi lub linki, a następnievold.post_fs_data_done
do 1. Gdy funkcjavold
zobaczy wartość 1 w tej właściwości, ustawi właściwośćvold.decrypt
natrigger_restart_framework
. Powoduje to, że uruchamiana jest usługainit.rc
usługi w klasiemain
i rozpocznij usługi w klasielate_start
po raz pierwszy od uruchomienia. - Rozpocznij pełny framework
Teraz framework uruchamia wszystkie swoje usługi przy użyciu odszyfrowanego systemu plików
/data
, a system jest gotowy do użycia.
Błąd
Urządzenie, które nie może odszyfrować danych, może być uszkodzone z kilku powodów. Urządzenie rozpoczyna normalną procedurę uruchamiania:
- Wykrywaj zaszyfrowane urządzenie za pomocą hasła
- Góra tmpfs
- Uruchom framework, aby wyświetlić prompt z prośbą o hasło
Po otwarciu frameworku na urządzeniu mogą wystąpić błędy:
- Hasło jest zgodne, ale nie można odszyfrować danych
- użytkownik 30 razy wpisał nieprawidłowe hasło;
Jeśli te błędy nie zostaną usunięte, poproś użytkownika o przywrócenie ustawień fabrycznych:
Jeśli vold
wykryje błąd podczas procesu szyfrowania, a żadne dane nie zostały jeszcze zniszczone i ramka jest aktywna, vold
ustawia właściwość vold.encrypt_progress
na error_not_encrypted
.
Interfejs prosi użytkownika o uruchomienie ponownie i ostrzega, że proces szyfrowania nigdy nie został uruchomiony. Jeśli błąd wystąpi po usunięciu frameworka, ale przed wyświetleniem paska postępu w interfejsie użytkownika, vold
ponownie uruchomi system. Jeśli
nie udało się uruchomić ponownie, ustaw vold.encrypt_progress
na
error_shutting_down
i zwraca -1; ale nie będzie niczego
wychwytywania błędu. To nie powinno się zdarzyć.
Jeśli vold
wykryje błąd podczas procesu szyfrowania, ustawi vold.encrypt_progress
na error_partially_encrypted
i zwróci -1. Interfejs użytkownika powinien następnie wyświetlać komunikat informujący o szyfrowaniu
nie udało się wykonać testu i udostępnić użytkownikowi przycisk przywracania urządzenia do ustawień fabrycznych.
Przechowywanie zaszyfrowanego klucza
Zaszyfrowany klucz jest przechowywany w metadanych szyfrowania. Obsługa sprzętowa jest implementowana za pomocą funkcji podpisywania zaufanego środowiska wykonawczego (TEE). Wcześniej klucz główny był szyfrowany za pomocą klucza wygenerowanego przez scrypt na podstawie hasła użytkownika i zmagazynowanego parametru soli. Aby klucz był odporny przed takimi atakami, rozszerzamy ten algorytm, podpisując powstały klucz zapisanym kluczem TEE. Uzyskany podpis jest następnie przekształcany w klucz o odpowiedniej długości przez zastosowanie jeszcze raz scrypt. Następnie klucz ten jest używany do szyfrowania i odszyfrowania klucza głównego. Aby zapisać ten klucz:
- Wygeneruj losowy 16-bajtowy klucz szyfrowania dysku (DEK) i 16-bajtową sól.
- Zastosuj scrypt do hasła użytkownika i soli, aby uzyskać 32-bajtowy klucz pośredni 1 (IK1).
- Uzupełnij kod IK1 o 0 bajtów w zakresie rozmiaru powiązanego sprzętowo klucza prywatnego (HBK). W szczególności wypełniamy: 00 || IK1 || 00..00; 1 bajt równy 0, 32 bajty IK1, 223 bajty równe 0.
- Podpisz wypełniony IK1 za pomocą HBK, aby uzyskać IK2 o długości 256 bajtów.
- Zastosuj szyfrowanie IK2 i sól (taką samą jak w kroku 2), aby uzyskać 32-bajtowy kod IK3.
- Użyj pierwszych 16 bajtów IK3 jako klucza KEK, a ostatnich 16 bajtów jako IV.
- Szyfrowanie DEK przy użyciu AES_CBC z kluczem KEK i wektorem inicjującym IV.
Zmień hasło
Gdy użytkownik zmieni lub usunie hasło w ustawieniach, interfejs wyśle do
polecenie cryptfs changepw
do vold
,
vold
ponownie szyfruje główny klucz dysku nowym hasłem.
Właściwości szyfrowania
vold
i init
komunikują się ze sobą, ustawiając właściwości. Oto lista dostępnych właściwości do szyfrowania.
Właściwości Vold
Właściwość | Opis |
---|---|
vold.decrypt trigger_encryption |
Szyfruj dysk bez hasła. |
vold.decrypt trigger_default_encryption |
Sprawdź, czy dysk jest zaszyfrowany bez hasła.
Jeśli tak, odszyfruj i podłącz go.
W przeciwnym razie ustaw wartość vold.decrypt na aktywator_restart_min_framework. |
vold.decrypt trigger_reset_main |
Ustaw przez vold, aby wyłączyć interfejs proszący o hasło do dysku. |
vold.decrypt trigger_post_fs_data |
Ustaw przez vold do przygotowania /data z wymaganymi katalogami itp. |
vold.decrypt trigger_restart_framework |
Ustaw przez vold, aby uruchomić prawdziwy framework i wszystkie usługi. |
vold.decrypt trigger_shutdown_framework |
Ustaw przez vold wyłączenie pełnej platformy w celu rozpoczęcia szyfrowania. |
vold.decrypt trigger_restart_min_framework |
Ustaw przez vold, aby uruchomić interfejs paska postępu szyfrowania lub wyświetlić prośbę o hasło, w zależności od wartości ro.crypto.state . |
vold.encrypt_progress |
Po uruchomieniu platformy Jeśli ta właściwość jest ustawiona, wpisz w trybie paska postępu. |
vold.encrypt_progress 0 to 100 |
Pasek postępu powinien wyświetlanie ustawionej wartości procentowej. |
vold.encrypt_progress error_partially_encrypted |
W interfejsie paska postępu powinien wyświetlać się komunikat o nieudanym szyfrowaniu i opcja zresetowania urządzenia do ustawień fabrycznych. |
vold.encrypt_progress error_reboot_failed |
Interfejs paska postępu powinien wyświetlać komunikat informujący o szyfrowaniu i umożliwić użytkownikowi zrestartowanie urządzenia. Ten błąd nie powinien wystąpić. |
vold.encrypt_progress error_not_encrypted |
Pasek postępu powinien wyświetli komunikat o błędzie wystąpiło, żadne dane nie zostały zaszyfrowane lub i podać użytkownikowi przycisk ponownego uruchomienia systemu. |
vold.encrypt_progress error_shutting_down |
Interfejs paska postępu nie działa, więc nie wiadomo, kto odpowiada do tego błędu. A to nigdy nie powinno się wydarzyć. |
vold.post_fs_data_done 0 |
Ustawiono przez vold tuż przed ustawieniem vold.decrypt na trigger_post_fs_data . |
vold.post_fs_data_done 1 |
Ustaw przez init.rc lub
init.rc zaraz po zakończeniu zadania post-fs-data . |
Właściwości init
Właściwość | Opis |
---|---|
ro.crypto.fs_crypto_blkdev |
Ustawione przez polecenie vold checkpw do późniejszego użycia przez polecenie vold restart . |
ro.crypto.state unencrypted |
Ustawione przez init oznacza, że ten system działa z nieszyfrowaniem
/data ro.crypto.state encrypted Ustawione przez init , aby wskazać, że ten system działa z zaszyfrowanym /data . |
|
Te 5 właściwości jest ustawianych przez
init , gdy próbuje podłączyć /data z parametrami przekazywanymi z
init.rc vold używa ich do konfigurowania mapowania kryptowalut. |
ro.crypto.tmpfs_options |
Ustawione przez funkcję init.rc z opcjami, które mają być używane podczas inicjowania
podłączenie systemu plików /data tmpfs. |
init actions
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