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ę
forceencryptfstab, 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/datanie jest zaszyfrowany, ale musi być, ponieważforceencrypttego wymaga.Odmontuj/data. - Rozpocznij szyfrowanie
/datavold.decrypt = "trigger_encryption"wyzwalainit.rc,co spowoduje, żevoldzaszyfruje/databez hasła.(None jest ustawione, ponieważ powinno to być nowe urządzenie.) - Mount tmpfs
voldmontuje tmpfs/data(używając opcji tmpfs zro.crypto.tmpfs_options) i ustawia właściwośćvold.encrypt_progressna 0.voldprzygotowuje tmpfs/datado uruchomienia zaszyfrowanego systemu i ustawia właściwośćvold.decryptna: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
/datajest zaszyfrowane, zdejmij frameworkvoldustawiavold.decryptnatrigger_default_encryption, co uruchamia usługędefaultcrypto. (To uruchamia poniższy przepływ dla montowania domyślnie zaszyfrowanych danych użytkownika).trigger_default_encryptionsprawdza typencryption, aby zobaczyć, czy/datajest 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
/datainitnastępnie montuje/datana RAMDisk tmpfs używając parametrów pobranych zro.crypto.tmpfs_options, który jest ustawiony winit.rc. - Start framework
Ustawia
voldnatrigger_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
voldwith the commandcryptfs enablecrypto inplacewherepasswdis the user’s lock screen password. - Take down the framework
voldchecks 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.decryptnatrigger_shutdown_framework. Powoduje to, żeinit.rczatrzymuje usługi w klasachlate_startimain. - Utwórz stopkę kryptograficzną
- Utwórz plik breadcrumb
- Reboot
- Detect breadcrumb file
- Rozpocznij szyfrowanie
/datavoldnastę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.voldnastępnie tworzy i wypisuje metadane crypto. - Podczas szyfrowania, mount tmpfs
voldmontuje tmpfs/data(używając opcji tmpfs zro.crypto.tmpfs_options) i ustawia właściwośćvold.encrypt_progressna 0.voldprzygotowuje tmpfs/datado uruchomienia zaszyfrowanego systemu i ustawia właściwośćvold.decryptna:trigger_restart_min_framework - Bring up framework to show progress
trigger_restart_min_frameworkcausesinit.rctostart themainclass of services. Gdy framework widzi, że wartośćvold.encrypt_progressjest 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_progressza każdym razem, gdy szyfruje kolejny procent partycji. - Gdy
/datajest zaszyfrowany, zaktualizuj stopkę kryptograficznąGdy
/datajest pomyślnie zaszyfrowany,voldwyczyści flagęENCRYPTION_IN_PROGRESSw 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ę,
voldustawia właściwośćvold.encrypt_progressnaerror_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
/databez hasłaWykryj, że urządzenie z systemem Android jest zaszyfrowane, ponieważ
/datanie można zamontować i ustawiona jest jedna z flagencryptablelubforceencrypt.voldustawiavold.decryptnatrigger_default_encryption, co uruchamia usługędefaultcrypto.trigger_default_encryptionsprawdza typ szyfrowania, aby sprawdzić, czy/datajest szyfrowane z hasłem czy bez niego. - Odszyfruj /dane
Tworzy urządzenie
dm-cryptnad urządzeniem blokowym, dzięki czemu jest ono gotowe do użycia. - Zamontuj /dane
voldnastępnie montuje odszyfrowaną prawdziwą/datapartycję, a następnie przygotowuje nową partycję. Ustawia właściwośćvold.post_fs_data_donena 0, a następnie ustawiavold.decryptnatrigger_post_fs_data. Powoduje to, żeinit.rcuruchamia poleceniapost-fs-data. Utworzą one wszelkie niezbędne katalogi lub łącza, a następnie ustawiąvold.post_fs_data_donena 1.Kiedy
voldzobaczy 1 w tej właściwości, ustawi właściwośćvold.decryptna:trigger_restart_framework.Thiscausesinit.rcto start services in classmainagain and also start services in classlate_startfor 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"voldustawiavold.decryptnatrigger_restart_min_framework, ponieważ/datajest zaszyfrowane hasłem. - Mount tmpfs
initustawia pięć właściwości, aby zapisać początkowe opcje montowania podane dla/dataz parametrami przekazanymi zinit.rc.volduż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.decryptjest ustawione natrigger_restart_min_framework. To mówi frameworkowi, że jest uruchamiany na dysku tmpfs/datai musi uzyskać hasło użytkownika.Najpierw jednak musi się upewnić, że dysk został prawidłowo zaszyfrowany. Wysyła polecenie
cryptfs cryptocompletedovold.voldzwraca 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.voldokreś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ślivoldzwró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 cryptocompleteframework wyświetla interfejs użytkownika z prośbą o podanie hasła dysku. UI sprawdza hasło wysyłając komendęcryptfs checkpwdovold. Jeśli hasło jest poprawne (co jest określane przez pomyślne zamontowanie odszyfrowanego/dataw tymczasowej lokalizacji, a następnie odmontowanie go),voldzapisuje nazwę odszyfrowanego urządzenia blokowego we właściwościro.crypto.fs_crypto_blkdevi 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
voldza pomocą poleceniacryptfs restart.voldustawia właściwośćvold.decryptnatrigger_reset_main, co powoduje, żeinit.rcwykonujeclass_reset main. Zatrzymuje to wszystkie usługi w klasie main, co pozwala na odmontowanie tmpf/data. - Mount
/datavoldnastępnie montuje zdeszyfrowaną prawdziwą partycję/datai 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_donena 0, a następnie ustawiavold.decryptnatrigger_post_fs_data. Powoduje to, żeinit.rcuruchamia swoje poleceniapost-fs-data. Utworzą one wszelkie niezbędne katalogi lub łącza, a następnie ustawią właściwośćvold.post_fs_data_donena 1. Gdyvoldzobaczy 1 w tej właściwości, ustawi właściwośćvold.decryptnatrigger_restart_framework. Powoduje to, żeinit.rcponownie uruchamia usługi w klasiemain, a także uruchamia usługi w klasielate_startpo raz pierwszy od uruchomienia systemu. - Uruchom pełny framework
Teraz framework uruchamia wszystkie swoje usługi przy użyciu odszyfrowanego
/datasystemu 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
.