Szyfrowanie całego dysku to proces szyfrowania wszystkich danych użytkownika na urządzeniu z systemem Android przy użyciu zaszyfrowanego klucza. Po zaszyfrowaniu urządzenia wszystkie dane utworzone przez użytkownika są automatycznie szyfrowane przed zapisaniem ich na dysku, a wszystkie odczyty automatycznie odszyfrowują dane przed zwróceniem ich do procesu wywołującego.
Szyfrowanie całego dysku zostało wprowadzone do Androida w wersji 4.4, ale Android 5.0 wprowadził te nowe funkcje:
- Szybkie szyfrowanie, które szyfruje tylko używane bloki na partycji danych, aby uniknąć długiego pierwszego rozruchu. Obecnie tylko systemy plików ext4 i f2fs obsługują szybkie szyfrowanie.
- Dodano flagę
forceencrypt
fstab, aby szyfrować przy pierwszym uruchomieniu. - Dodano obsługę wzorców i szyfrowania bez hasła.
- Dodano wspierane sprzętowo przechowywanie klucza szyfrowania przy użyciu funkcji podpisywania Trusted Execution Environment (TEE) (np. w strefie TrustZone). Zobacz Przechowywanie zaszyfrowanego klucza, aby uzyskać więcej szczegółów.
Uwaga: Urządzenia uaktualnione do systemu Android 5.0 i następnie zaszyfrowane mogą zostać przywrócone do stanu niezaszyfrowanego przez przywrócenie danych fabrycznych. Nowe urządzenia z systemem Android 5.0 zaszyfrowane przy pierwszym uruchomieniu nie mogą zostać przywrócone do stanu niezaszyfrowanego.
- Jak działa pełne szyfrowanie dysku w systemie Android
- Przepływy
- Szyfrowanie nowego urządzenia za pomocą forceencrypt
- Szyfrowanie istniejącego urządzenia
- Uruchamianie zaszyfrowanego urządzenia z domyślnym szyfrowaniem
- Uruchamianie zaszyfrowanego urządzenia bez domyślnego szyfrowania
- Powodzenie
- Przechowywanie zaszyfrowanego klucza
- Zmiana hasła
- Właściwości szyfrowania
- Właściwości Vold
- init properties
- Akcje init
Jak działa pełne szyfrowanie dysku w systemie Android
Szyfrowanie pełnego dysku w systemie Android jest oparte na dm-crypt
, która jest funkcją jądra działającą w warstwie urządzeń blokowych. Z tego powodu, szyfrowanie działa z Embedded MultiMediaCard (eMMC) i podobnymi urządzeniami flash, które przedstawiają się jądru jako urządzenia blokowe. Szyfrowanie nie jest możliwe w przypadku YAFFS, który komunikuje się bezpośrednio z surowym układem NAND flash.
Algorytm szyfrowania to 128 Advanced Encryption Standard (AES) z łańcuchowaniem szyfrów (CBC) i ESSIV:SHA256. Klucz główny jest szyfrowany 128-bitowym AES za pomocą wywołań do biblioteki OpenSSL. Musisz użyć 128 bitów lub więcej dla klucza (256 jest opcjonalne).
Uwaga: Producenci OEM mogą użyć 128 bitów lub więcej do zaszyfrowania klucza głównego.
W wydaniu Androida 5.0, są cztery rodzaje stanów szyfrowania:
- domyślny
- PIN
- hasło
- wzór
Przy pierwszym uruchomieniu urządzenie tworzy losowo wygenerowany 128-bitowy klucz główny, a następnie haszuje go za pomocą domyślnego hasła i przechowywanej soli. Domyślne hasło to: „default_password „Jednak wynikowy skrót jest również podpisywany przez TEE (np. TrustZone), który używa skrótu podpisu do zaszyfrowania klucza głównego.
Domyślne hasło można znaleźć w pliku cryptfs.cpp projektu Android Open Source.
Gdy użytkownik ustawi PIN/pass lub hasło na urządzeniu, tylko 128-bitowy klucz jest ponownie szyfrowany i przechowywany. (tzn. zmiany PIN-u/passu/wzoru użytkownika NIE powodują ponownego zaszyfrowania danych użytkownika). Należy pamiętać, że zarządzane urządzenia mogą podlegać ograniczeniom dotyczącym PIN-u, wzoru lub hasła.
Szyfrowaniem zarządzają init
i vold
.init
wywołuje vold
, a vold ustawia właściwości, aby wywołać zdarzenia w init. Inne części systemu również patrzą na te właściwości, aby wykonywać takie zadania, jak raportowanie stanu, pytanie o hasło lub monit o przywrócenie ustawień fabrycznych w przypadku błędu krytycznego. Aby wywołać funkcje szyfrowania w vold
, system używa poleceń cryptfs
narzędzia wiersza poleceńvdc
: checkpw
,restart
, enablecrypto
, changepw
,cryptocomplete
, verifypw
, setfield
,getfield
, mountdefaultencrypted
, getpwtype
,getpw
, oraz clearpw
.
Aby zaszyfrować, odszyfrować lub wymazać /data
, /data
nie może być zamontowany. Jednakże, aby wyświetlić jakikolwiek interfejs użytkownika (UI), framework musi się uruchomić, a framework wymaga, aby /data
był uruchomiony. Aby rozwiązać ten problem, tymczasowy system plików jest montowany na /data
.To pozwala Androidowi pytać o hasła, pokazywać postęp, lub sugerować wyczyszczenie danych w razie potrzeby. Nie nakłada ograniczenia, że w celu przełączenia się z tymczasowego systemu plików do prawdziwego systemu plików /data
, system musi zatrzymać każdy proces z otwartymi plikami na tymczasowym systemie plików i ponownie uruchomić teprocesy na prawdziwym systemie plików /data
. Aby to zrobić, wszystkie usługi muszą należeć do jednej z trzech grup: core
, main
, ilate_start
.
-
core
: Nigdy nie są zamykane po uruchomieniu. -
main
: Wyłączenie, a następnie ponowne uruchomienie po wprowadzeniu hasła dysku. -
late_start
: Uruchamia się dopiero po odszyfrowaniu i zamontowaniu/data
.
Aby wywołać te działania, właściwość vold.decrypt
jest ustawiana na różne ciągi znaków.Aby zabijać i ponownie uruchamiać usługi, polecenia init
to:
-
class_reset
: Zatrzymuje usługę, ale umożliwia jej ponowne uruchomienie za pomocą class_start. -
class_start
: Restartuje usługę. -
class_stop
: Zatrzymuje usługę i dodaje flagęSVC_DISABLED
. Zatrzymane usługi nie odpowiadają naclass_start
.
Przepływy
Dla zaszyfrowanego urządzenia istnieją cztery przepływy. Urządzenie jest szyfrowane tylko raz, a następnie przechodzi normalny przepływ rozruchowy.
- Zaszyfruj poprzednio niezaszyfrowane urządzenie:
- Szyfruj nowe urządzenie za pomocą
forceencrypt
: Obowiązkowe szyfrowanie przy pierwszym uruchomieniu (począwszy od Androida L). - Szyfruj istniejące urządzenie: Szyfrowanie inicjowane przez użytkownika (Android K i wcześniejsze).
- Szyfruj nowe urządzenie za pomocą
- Rozruch 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 systemem Android 5.0 i nowszym).
- Uruchamianie zaszyfrowanego urządzenia z hasłem: Uruchamianie zaszyfrowanego urządzenia, które ma ustawione hasło.
Oprócz tych przepływów, urządzenie może również nie zaszyfrować /data
.Każdy z przepływów jest szczegółowo wyjaśniony poniżej.
Szyfrowanie nowego urządzenia za pomocą forceencrypt
Jest to normalne pierwsze uruchomienie dla urządzenia z systemem Android 5.0.
- Wykrywanie niezaszyfrowanego systemu plików z flagą
forceencrypt
/data
nie jest zaszyfrowany, ale musi być, ponieważforceencrypt
tego wymaga.Odmontuj/data
. - Rozpocznij szyfrowanie
/data
vold.decrypt = "trigger_encryption"
wyzwalainit.rc
,co spowoduje, żevold
zaszyfruje/data
bez hasła.(None jest ustawione, ponieważ powinno to być nowe urządzenie.) - Mount tmpfs
vold
montuje tmpfs/data
(używając opcji tmpfs zro.crypto.tmpfs_options
) i ustawia właściwośćvold.encrypt_progress
na 0.vold
przygotowuje tmpfs/data
do uruchomienia zaszyfrowanego systemu i ustawia właściwośćvold.decrypt
na:trigger_restart_min_framework
- Bring up framework to show progress
Because the device has virtually no data to encrypt, the progress bar willoften not actually appear because encryption happens so quickly. ZobaczEncrypt an existing device for moreredetails about the progress UI.
- Kiedy
/data
jest zaszyfrowane, zdejmij frameworkvold
ustawiavold.decrypt
natrigger_default_encryption
, co uruchamia usługędefaultcrypto
. (To uruchamia poniższy przepływ dla montowania domyślnie zaszyfrowanych danych użytkownika).trigger_default_encryption
sprawdza typencryption, aby zobaczyć, czy/data
jest zaszyfrowany z lub bez 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
. - Mount
/data
init
następnie montuje/data
na RAMDisk tmpfs używając parametrów pobranych zro.crypto.tmpfs_options
, który jest ustawiony winit.rc
. - Start framework
Ustawia
vold
natrigger_restart_framework
, co kontynuuje zwykły proces rozruchu.
Szyfrowanie istniejącego urządzenia
Tak dzieje się w przypadku szyfrowania niezaszyfrowanego urządzenia z systemem Android K lub wcześniejszym, które zostało zmigrowane do systemu L.
Proces ten jest inicjowany przez użytkownika i jest określany w kodzie jako „szyfrowanie w miejscu”. Gdy użytkownik wybierze opcję szyfrowania urządzenia, interfejs użytkownika upewnia się, że bateria jest w pełni naładowana, a zasilacz sieciowy podłączony, aby zapewnić wystarczającą ilość energii do zakończenia procesu szyfrowania.
Ostrzeżenie: Jeśli w urządzeniu zabraknie energii i wyłączy się ono przed zakończeniem szyfrowania, dane pliku pozostaną w stanie częściowo zaszyfrowanym. The device mustbe factory reset and all data is lost.
Aby włączyć szyfrowanie inplace, vold
uruchamia pętlę w celu odczytania każdego sektora urządzenia real block, a następnie zapisania go do urządzenia crypto block. vold
sprawdza, czy sektor jest w użyciu przed odczytaniem i zapisaniem go, co znacznie przyspiesza szyfrowanie na nowym urządzeniu, które ma niewiele lub żadnych danych.
Stan urządzenia: Set ro.crypto.state = "unencrypted"
and execute the on nonencrypted
init
trigger to continue booting.
- Check password
The UI calls
vold
with the commandcryptfs enablecrypto inplace
wherepasswd
is the user’s lock screen password. - Take down the framework
vold
checks for errors, returns -1 if it can’t encrypt, andprints a reason in the log. Jeśli może szyfrować, ustawia właściwośćvold.decrypt
natrigger_shutdown_framework
. Powoduje to, żeinit.rc
zatrzymuje usługi w klasachlate_start
imain
. - Utwórz stopkę kryptograficzną
- Utwórz plik breadcrumb
- Reboot
- Detect breadcrumb file
- Rozpocznij szyfrowanie
/data
vold
następnie ustawia mapowanie krypt, co powoduje utworzenie wirtualnego urządzenia kryptograficznego, które odwzorowuje rzeczywiste urządzenie blokowe, ale szyfruje każdy sektor podczas zapisu i odszyfrowuje każdy sektor podczas odczytu.vold
następnie tworzy i wypisuje metadane crypto. - Podczas szyfrowania, mount tmpfs
vold
montuje tmpfs/data
(używając opcji tmpfs zro.crypto.tmpfs_options
) i ustawia właściwośćvold.encrypt_progress
na 0.vold
przygotowuje tmpfs/data
do uruchomienia zaszyfrowanego systemu i ustawia właściwośćvold.decrypt
na:trigger_restart_min_framework
- Bring up framework to show progress
trigger_restart_min_framework
causesinit.rc
tostart themain
class of services. Gdy framework widzi, że wartośćvold.encrypt_progress
jest ustawiona na 0, przywołuje progress barUI, który odpytywał tę właściwość co pięć sekund i aktualizował pasek postępu.Pętla szyfrowania aktualizujevold.encrypt_progress
za każdym razem, gdy szyfruje kolejny procent partycji. - Gdy
/data
jest zaszyfrowany, zaktualizuj stopkę kryptograficznąGdy
/data
jest pomyślnie zaszyfrowany,vold
wyczyści flagęENCRYPTION_IN_PROGRESS
w metadanych.Gdy urządzenie zostanie pomyślnie odblokowane, hasło jest następnie używane do zaszyfrowania klucza głównego, a stopka kryptograficzna jest aktualizowana.
Jeśli ponowne uruchomienie z jakiegoś powodu nie powiedzie się,
vold
ustawia właściwośćvold.encrypt_progress
naerror_reboot_failed
, a interfejs użytkownika powinien wyświetlić komunikat z prośbą o naciśnięcie przycisku w celu ponownego uruchomienia. Nie oczekuje się, że taka sytuacja kiedykolwiek wystąpi.
Uruchamianie zaszyfrowanego urządzenia z domyślnym szyfrowaniem
To jest to, co się dzieje, gdy uruchamiasz zaszyfrowane urządzenie bez hasła.Ponieważ urządzenia z systemem Android 5.0 są szyfrowane przy pierwszym uruchomieniu, nie powinno być ustawionego hasła i dlatego jest to domyślny stan szyfrowania.
- Wykryj zaszyfrowane
/data
bez hasłaWykryj, że urządzenie z systemem Android jest zaszyfrowane, ponieważ
/data
nie można zamontować i ustawiona jest jedna z flagencryptable
lubforceencrypt
.vold
ustawiavold.decrypt
natrigger_default_encryption
, co uruchamia usługędefaultcrypto
.trigger_default_encryption
sprawdza typ szyfrowania, aby sprawdzić, czy/data
jest szyfrowane z hasłem czy bez niego. - Odszyfruj /dane
Tworzy urządzenie
dm-crypt
nad urządzeniem blokowym, dzięki czemu jest ono gotowe do użycia. - Zamontuj /dane
vold
następnie montuje odszyfrowaną prawdziwą/data
partycję, a następnie przygotowuje nową partycję. Ustawia właściwośćvold.post_fs_data_done
na 0, a następnie ustawiavold.decrypt
natrigger_post_fs_data
. Powoduje to, żeinit.rc
uruchamia poleceniapost-fs-data
. Utworzą one wszelkie niezbędne katalogi lub łącza, a następnie ustawiąvold.post_fs_data_done
na 1.Kiedy
vold
zobaczy 1 w tej właściwości, ustawi właściwośćvold.decrypt
na:trigger_restart_framework.
Thiscausesinit.rc
to start services in classmain
again and also start services in classlate_start
for the firsttime since boot. - Start framework
Now the framework boots all its services using the decrypted
/data
,and the system is ready for use.
Uruchamianie zaszyfrowanego urządzenia bez domyślnego szyfrowania
Tak dzieje się, gdy uruchamiasz zaszyfrowane urządzenie z ustawionym hasłem. Hasłem urządzenia może być pin, wzór lub hasło.
- Wykryj zaszyfrowane urządzenie z hasłem
Wykrywa, że urządzenie z systemem Android jest zaszyfrowane, ponieważ flaga
ro.crypto.state = "encrypted"
vold
ustawiavold.decrypt
natrigger_restart_min_framework
, ponieważ/data
jest zaszyfrowane hasłem. - Mount tmpfs
init
ustawia pięć właściwości, aby zapisać początkowe opcje montowania podane dla/data
z parametrami przekazanymi zinit.rc
.vold
używa tych właściwości do ustawienia mapowania crypto:-
ro.crypto.fs_type
-
ro.crypto.fs_real_blkdev
-
ro.crypto.fs_mnt_point
-
ro.crypto.fs_options
-
ro.crypto.fs_flags
(ASCII 8-cyfrowa liczba heksadecymalna poprzedzona 0x)
-
- Start framework to prompt for password
Ramework uruchamia się i widzi, że
vold.decrypt
jest ustawione natrigger_restart_min_framework
. To mówi frameworkowi, że jest uruchamiany na dysku tmpfs/data
i musi uzyskać hasło użytkownika.Najpierw jednak musi się upewnić, że dysk został prawidłowo zaszyfrowany. Wysyła polecenie
cryptfs cryptocomplete
dovold
.vold
zwraca 0, jeśli szyfrowanie zostało zakończone pomyślnie, -1 przy błędzie wewnętrznym, lub-2, jeśli szyfrowanie nie zostało zakończone pomyślnie.vold
określa to, szukając w metadanych crypto flagiCRYPTO_ENCRYPTION_IN_PROGRESS
. Jeśli jest ona ustawiona, proces szyfrowania został przerwany, a na urządzeniu znajdują się dane nousable. Jeślivold
zwróci błąd, interfejs użytkownika powinien wyświetlić komunikat dla użytkownika o ponownym uruchomieniu i przywróceniu ustawień fabrycznych urządzenia oraz podać mu przycisk, który należy nacisnąć, aby to zrobić. - Decrypt data with password
Po pomyślnym zakończeniu operacji
cryptfs cryptocomplete
framework wyświetla interfejs użytkownika z prośbą o podanie hasła dysku. UI sprawdza hasło wysyłając komendęcryptfs checkpw
dovold
. Jeśli hasło jest poprawne (co jest określane przez pomyślne zamontowanie odszyfrowanego/data
w tymczasowej lokalizacji, a następnie odmontowanie go),vold
zapisuje nazwę odszyfrowanego urządzenia blokowego we właściwościro.crypto.fs_crypto_blkdev
i zwraca stan 0 do UI. Jeśli hasło jest nieprawidłowe, zwraca -1 do interfejsu użytkownika. - Stop framework
UI umieszcza grafikę rozruchu kryptowaluty, a następnie wywołuje
vold
za pomocą poleceniacryptfs restart
.vold
ustawia właściwośćvold.decrypt
natrigger_reset_main
, co powoduje, żeinit.rc
wykonujeclass_reset main
. Zatrzymuje to wszystkie usługi w klasie main, co pozwala na odmontowanie tmpf/data
. - Mount
/data
vold
następnie montuje zdeszyfrowaną prawdziwą partycję/data
i przygotowuje nową partycję (która mogła nigdy nie zostać przygotowana, jeśli została zaszyfrowana z opcją wipe, która nie jest obsługiwana w pierwszym wydaniu). Ustawia właściwośćvold.post_fs_data_done
na 0, a następnie ustawiavold.decrypt
natrigger_post_fs_data
. Powoduje to, żeinit.rc
uruchamia swoje poleceniapost-fs-data
. Utworzą one wszelkie niezbędne katalogi lub łącza, a następnie ustawią właściwośćvold.post_fs_data_done
na 1. Gdyvold
zobaczy 1 w tej właściwości, ustawi właściwośćvold.decrypt
natrigger_restart_framework
. Powoduje to, żeinit.rc
ponownie uruchamia usługi w klasiemain
, a także uruchamia usługi w klasielate_start
po raz pierwszy od uruchomienia systemu. - Uruchom pełny framework
Teraz framework uruchamia wszystkie swoje usługi przy użyciu odszyfrowanego
/data
systemu plików, a system jest gotowy do użycia.
Powodzenie
Urządzenie, które nie udaje się odszyfrować, może być uszkodzone z kilku powodów. Urządzenie rozpoczyna się od normalnej serii kroków do rozruchu:
- Detect encrypted device with a password
- Mount tmpfs
- Start framework to prompt for password
Ale po otwarciu frameworka, urządzenie może napotkać pewne błędy:
- Password matches but cannot decrypt data
- User enters wrong password 30 times
If these errors are not resolved, prompt user to factory wipe:
If vold
detects an error during the encryption process, and if no data has been destroyed yet and the framework is up, vold
setsthe property vold.encrypt_progress
to error_not_encrypted
.Interfejs użytkownika monituje o ponowne uruchomienie komputera i ostrzega, że proces szyfrowania nigdy się nie rozpoczął. Jeśli błąd wystąpi po zdemontowaniu frameworka, ale przed pojawieniem się interfejsu użytkownika z paskiem postępu, vold
zrestartuje system. Jeśli restart się nie powiedzie, ustawi vold.encrypt_progress
naerror_shutting_down
i zwróci -1; ale nie będzie niczego, co mogłoby wychwycić błąd. Nie oczekuje się, że tak się stanie.
Jeśli vold
wykryje błąd podczas procesu szyfrowania, ustawi vold.encrypt_progress
na error_partially_encrypted
i zwróci -1. UI powinien wtedy wyświetlić komunikat mówiący, że szyfrowanie nie powiodło się i zapewnić użytkownikowi przycisk do przywrócenia ustawień fabrycznych urządzenia.
Przechowywanie zaszyfrowanego klucza
Zaszyfrowany klucz jest przechowywany w metadanych crypto. Podkład sprzętowy jest implementowany poprzez wykorzystanie możliwości podpisywania Trusted Execution Environment (TEE).Poprzednio szyfrowaliśmy klucz główny kluczem wygenerowanym przez zastosowanie scrypta do hasła użytkownika i przechowywanej soli. Aby uodpornić klucz na ataki off-box, rozszerzamy ten algorytm o podpisywanie klucza wynikowego przechowywanym kluczem TEE. Wynikowy podpis jest następnie przekształcany w klucz o odpowiedniej długości przez kolejne zastosowanie scrypta. Klucz ten jest następnie używany do szyfrowania i deszyfrowania klucza głównego. Aby przechowywać ten klucz:
- Generowanie losowego 16-bajtowego klucza szyfrowania dysku (DEK) i 16-bajtowej soli.
- Zastosuj scrypt do hasła użytkownika i soli, aby utworzyć 32-bajtowy klucz pośredni 1 (IK1).
- Pad IK1 z zerowymi bajtami do rozmiaru klucza prywatnego związanego sprzętowo (HBK).W szczególności, padamy jako: 00 || IK1 || 00..00; jeden bajt zerowy, 32 bajty IK1, 223 bajty zerowe.
- Sign wyściełał IK1 z HBK, aby otrzymać 256-bajtowe IK2.
- Zastosuj scrypt do IK2 i soli (ta sama sól co w kroku 2), aby otrzymać 32-bajtowe IK3.
- Użyj pierwszych 16 bajtów IK3 jako KEK, a ostatnich 16 bajtów jako IV.
- Szyfruj DEK przy użyciu AES_CBC, z kluczem KEK i wektorem inicjalizacyjnym IV.
Zmiana hasła
Gdy użytkownik zdecyduje się zmienić lub usunąć swoje hasło w ustawieniach, interfejs użytkownika wysyła polecenie cryptfs changepw
do vold
, avold
ponownie szyfruje klucz główny dysku z nowym hasłem.
Właściwości szyfrowania
vold
i init
komunikują się ze sobą poprzez ustawianie właściwości. Oto lista dostępnych właściwości dla szyfrowania.
Właściwości Vold
Właściwość | Opis |
---|---|
vold.decrypt trigger_encryption |
Szyfrowanie dysku bez hasła. |
vold.decrypt trigger_default_encryption |
Sprawdź dysk, czy jest zaszyfrowany bez hasła.Jeśli tak, odszyfruj go i zamontuj,w przeciwnym razie ustaw vold.decrypt na trigger_restart_min_framework. |
vold.decrypt trigger_reset_main |
Ustawione przez volda aby wyłączyć UI pytające o hasło do dysku. |
vold.decrypt trigger_post_fs_data |
Ustawione przez volda aby przygotować /data z potrzebnymi katalogami, et al. |
vold.decrypt trigger_restart_framework |
Ustawione przez vold, aby uruchomić prawdziwy framework i wszystkie usługi. |
vold.decrypt trigger_shutdown_framework |
Ustawione przez vold, aby wyłączyć pełny framework, aby rozpocząć szyfrowanie. |
vold.decrypt trigger_restart_min_framework |
Ustawione przez vold, aby uruchomić pasek postępu UI dla szyfrowania lub monit o hasło, w zależności od wartości ro.crypto.state . |
vold.encrypt_progress |
Gdy framework się uruchamia, jeśli ta właściwość jest ustawiona, włącza tryb UI paska postępu. |
vold.encrypt_progress 0 to 100 |
UI paska postępu powinien wyświetlać ustawioną wartość procentową. |
vold.encrypt_progress error_partially_encrypted |
W interfejsie użytkownika paska postępu powinien zostać wyświetlony komunikat o niepowodzeniu szyfrowania i dać użytkownikowi możliwość fabrycznego zresetowania urządzenia. |
vold.encrypt_progress error_reboot_failed |
W interfejsie użytkownika paska postępu powinien zostać wyświetlony komunikat o zakończeniu szyfrowania i dać użytkownikowi przycisk do ponownego uruchomienia urządzenia. Ten błąd nie powinien wystąpić. |
vold.encrypt_progress error_not_encrypted |
Instrukcja obsługi paska postępu powinna wyświetlić komunikat o wystąpieniu błędu, braku zaszyfrowania lub utraty danych oraz udostępnić użytkownikowi przycisk umożliwiający ponowne uruchomienie systemu. |
vold.encrypt_progress error_shutting_down |
Instrukcja obsługi paska postępu nie jest uruchomiona, więc nie wiadomo, kto zareaguje na ten błąd. I tak nie powinno się to nigdy zdarzyć. |
vold.post_fs_data_done 0 |
Ustawiony przez vold tuż przed ustawieniem vold.decrypt na trigger_post_fs_data . |
vold.post_fs_data_done 1 |
Ustawiony przez init.rc lub init.rc tuż po zakończeniu zadania post-fs-data . |
init properties
Property | Description |
---|---|
ro.crypto.fs_crypto_blkdev |
Ustawiane przez polecenie vold checkpw w celu późniejszego wykorzystania przez polecenie vold restart . |
ro.crypto.state unencrypted |
Ustawiane przez init , aby powiedzieć, że ten system działa z niezaszyfrowanym /data ro.crypto.state encrypted . Ustawione przez init , aby powiedzieć, że ten system jest uruchomiony z zaszyfrowanym /data . |
|
Te pięć właściwości są ustawiane przez init , gdy próbuje zamontować /data z parametrami przekazanymi z init.rc . vold używa ich do skonfigurowania mapowania kryptograficznego. |
ro.crypto.tmpfs_options |
Ustawiane przez init.rc z opcjami, których init powinien użyć podczas montowania systemu plików tmpfs /data . |
Akcje init
.