Szyfrowanie całego dysku to proces kodowania wszystkich danych użytkownika na urządzeniu z Androidem za pomocą klucza szyfrowania. Po zaszyfrowaniu urządzenia wszystkie dane utworzone przez użytkowników są automatycznie zaszyfrowane przed zapisaniem go na dysku i wszystkich odczytów automatycznie odszyfrować dane przed zwróceniem ich do procesu dzwonienia.
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. Szybkie szyfrowanie jest obecnie obsługiwane tylko w systemach plików ext4 i f2fs.
- Dodano:
forceencrypt
fstab do zaszyfrowania przy pierwszym uruchomieniu. - Dodano obsługę wzorców i szyfrowania bez hasła.
- Dodano wspieraną sprzętowo pamięć klucza szyfrowania przy użyciu opcji Zaufany Zdolność podpisywania w środowisku wykonawczym (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. Nowy Android 5.0 urządzenia 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 na Androidzie opiera się na jądrze dm-crypt
,
która działa w warstwie urządzeń blokowych. Z tego powodu 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 formatu YAFFS, który komunikuje się bezpośrednio z
Układ Flash NAND.
Algorytm szyfrowania to 128-bitowy Advanced Encryption Standard (AES) z łańcuchem szyfrowania blokowego (CBC) i ESSIV:SHA256. Klucz główny jest zaszyfrowany za pomocą: 128-bitowego AES przez wywołania biblioteki OpenSSL. Do (gdzie 256 to opcjonalna).
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
Przy pierwszym uruchomieniu urządzenie tworzy losowo generowany 128-bitowy klucz główny a następnie zaszyfruje je domyślnym hasłem i zapisaną sólą. Hasło domyślne to „default_password”. Jednak uzyskany wynik jest również podpisywany przez TEE (np. TrustZone), który używa hasha podpisu do zaszyfrowania klucza głównego.
Domyślne hasło znajdziesz w projekcie Android Open Source cryptfs.cpp .
Gdy użytkownik ustawia kod PIN, hasło lub hasło na urządzeniu, tylko 128-bitowy klucz są ponownie szyfrowane i przechowywane. (np. zmiany kodu PIN, hasła lub wzorca użytkownika NIE powodują ponownego zaszyfrowania danych użytkownika). Pamiętaj, że urządzenie zarządzane może podlegać ograniczeniom w zakresie kodu PIN, wzoru lub hasła.
Szyfrowaniem zarządza init
i vold
.
Funkcja init
wywołuje vold
i ustawia regułę jako wyzwalacz
zdarzeń. 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. 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
i clearpw
.
Aby zaszyfrować, odszyfrować lub wyczyścić pamięć urządzenia /data
, /data
nie mogą być montowane. Aby jednak wyświetlić dowolny interfejs użytkownika,
platforma musi się uruchomić, a do uruchomienia musi być /data
. Aby rozwiązać ten problem, tymczasowy system plików jest montowany na /data
.
Dzięki temu Android może prosić o hasło, pokazywać postęp i sugerować dane
wymazać go w razie potrzeby. Nakłada on jednak ograniczenie, zgodnie z którym w celu przełączenia się
do rzeczywistego systemu plików /data
, system musi
Zatrzymaj wszystkie procesy z otwartymi plikami w systemie plików tymczasowych i uruchom je ponownie.
w rzeczywistym systemie plików /data
. Aby to zrobić, wszystkie usługi muszą należeć do jednej z 3 grup: core
, main
i late_start
.
core
: nigdy nie wyłączaj się 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 można było wywołać te działania, właściwość vold.decrypt
jest ustawiona na
różnych ciągów znaków.
Aby zatrzymać i ponownie uruchomić usługi, użyj tych poleceń init
:
class_reset
: zatrzymuje usługę, ale zezwala na jej ponowne uruchomienie za pomocą 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). - Szyfrowanie istniejącego urządzenia: szyfrowanie inicjowane przez użytkownika (Android K i starsze wersje).
- 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 za pomocą 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 znajdziesz szczegółowe omówienie każdego z tych procesów.
Szyfrowanie nowego urządzenia za pomocą funkcji forceencrypt
Jest 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"
wyzwalainit.rc
, co powoduje, żevold
szyfruje plik/data
bez hasła. (brak ustawienia, ponieważ powinno to być nowe urządzenie). - Montaż 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 uruchomienia zaszyfrowanego systemu i ustawia usługęvold.decrypt
na:trigger_restart_min_framework
- Wyświetlanie ramy w celu pokazania postępów
Na urządzeniu nie ma praktycznie danych do zaszyfrowania, więc pasek postępu pojawiają się często, ponieważ szyfrowanie odbywa się bardzo szybko. Zobacz Zaszyfruj istniejące urządzenie, aby uzyskać więcej szczegóły interfejsu.
- Gdy
/data
jest zaszyfrowany, usuń frameworkvold
ustawiavold.decrypt
natrigger_default_encryption
, co uruchamia usługędefaultcrypto
. (spowoduje to rozpoczęcie ścieżki poniżej, która umożliwia zamontowanie domyślnie zaszyfrowanych danych użytkownika)trigger_default_encryption
sprawdza typu szyfrowania, aby sprawdzić, czy domena/data
jest szyfrowana z użyciem hasła. Urządzenia z Androidem 5.0 są szyfrowane przy pierwszym uruchomieniu, więc nie ustawiono hasła; w związku z tym odszyfrowujemy i podłączasz algorytm/data
. - Montowanie
/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 zwykłego procesu uruchamiania.
Szyfrowanie istniejącego urządzenia
Tak się dzieje, gdy zaszyfrujesz niezaszyfrowany plik z Androidem K lub starszym urządzenie przeniesione do wersji 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 zostanie przywrócony do ustawień fabrycznych, a wszystkie dane zostaną utracone.
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. vold
sprawdza, czy sektor jest używany, zanim odczyta lub zapisze dane, co znacznie przyspiesza szyfrowanie na nowym urządzeniu, na którym jest niewiele danych lub wcale.
Stan urządzenia: ustaw ro.crypto.state = "unencrypted"
.
i wykonaj aktywator on nonencrypted
init
, aby kontynuować uruchamianie.
- Sprawdzanie hasła
Interfejs wywołuje
vold
przy użyciu poleceniacryptfs enablecrypto inplace
gdziepasswd
to hasło do ekranu blokady użytkownika. - Usuwanie ramowego projektu
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 działać w klasachlate_start
imain
. - Tworzenie stopki krypto
- Tworzenie pliku menu nawigacyjnego
- 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 metadane szyfrowania. - Podczas szyfrowania zamontuj tmpfs
vold
podłącza tmpfs/data
(przy użyciu opcji tmpfs) odro.crypto.tmpfs_options
) i ustawia właściwośćvold.encrypt_progress
na 0.vold
przygotowuje tmpfs/data
za uruchomienie zaszyfrowanego systemu i ustawianie właściwościvold.decrypt
na:trigger_restart_min_framework
- Otwórz schemat, aby wyświetlić postępy.
trigger_restart_min_framework
powoduje, żeinit.rc
uruchamia klasę usługmain
. Gdy platforma wykryje, żevold.encrypt_progress
ma wartość 0. Powoduje wyświetlenie paska postępu. Interfejs, który wysyła zapytania do tej właściwości co 5 sekund i aktualizuje pasek postępu. Pętla szyfrowania aktualizuje wartośćvold.encrypt_progress
za każdym razem, gdy szyfruje kolejny procent partycji. - Jeśli
/data
jest zaszyfrowany, zaktualizuj stopkę dotyczącą szyfrowaniaPo zaszyfrowaniu pliku
/data
vold
usuwa flagęENCRYPTION_IN_PROGRESS
w metadanych.Gdy urządzenie zostanie odblokowane, hasło zostanie użyte do: zaszyfrować klucz główny, 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ć 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
, co powoduje uruchomienie usługidefaultcrypto
.trigger_default_encryption
sprawdza typ szyfrowania, aby zobaczyć, czy/data
jest zaszyfrowany za pomocą lub bez hasła. - Odszyfrowywanie /data
Tworzy urządzenie
dm-crypt
na urządzeniu blokowym, aby było ono gotowe do użycia. - Mount /data
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
. Tworzy wszelkie niezbędne katalogi, lub linków, a następnie ustawvold.post_fs_data_done
na 1.Gdy
vold
zobaczy wartość 1 w tej właściwości, ustawi właściwośćvold.decrypt
na:trigger_restart_framework.
w sprawia, żeinit.rc
uruchamia usługi w klasiemain
oraz ponownie uruchomić usługi w klasielate_start
przez pierwszą czasu od uruchomienia. - Rozpocznij framework
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
Wykrywa, że urządzenie z Androidem jest zaszyfrowane, ponieważ flaga
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 skonfigurowania mapowania kryptograficznego: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 przez 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 ustawione, szyfrowanie zostało przerwane i nie można uzyskać dane, których można użyć. 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 sprawdza hasło przez wysyła poleceniecryptfs checkpw
do:vold
. Jeśli jest prawidłowe (co jest określane po podłączeniu odszyfrował(a) plik/data
w tymczasowej lokalizacji, a następnie go odłączył)vold
zapisuje nazwę odszyfrowanego urządzenia blokującego we właściwościro.crypto.fs_crypto_blkdev
i zwraca stan 0 do interfejsu użytkownika. Jeśli Hasło jest niepoprawne, zwraca wartość -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
natrigger_reset_main
, co powoduje, żeinit.rc
wykonuje działanieclass_reset main
. Spowoduje to zatrzymanie wszystkich usług w klasie głównej, co pozwala na odłączenie/data
tmpfs. - 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 zmienia wartość właściwościvold.decrypt
natrigger_post_fs_data
. W efekcieinit.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 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 usługi za pomocą 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
- Uruchomić 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 podaje 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 użytkownika prosi o ponowne uruchomienie i informuje go o procesie szyfrowania
nigdy się nie zaczęło. Jeśli błąd pojawia się po usunięciu struktury, ale
przed wyświetleniem interfejsu paska postępu vold
uruchomi ponownie 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. Nie powinno tak się zdarzyć.
Jeśli vold
wykryje błąd podczas szyfrowania, ustawi
Z vold.encrypt_progress
na error_partially_encrypted
i zwraca -1. Interfejs użytkownika powinien następnie wyświetlać komunikat informujący o szyfrowaniu
nie udało się i udostępnić użytkownikowi przycisku przywracania urządzenia do ustawień fabrycznych.
Przechowywanie zaszyfrowanego klucza
Zaszyfrowany klucz jest przechowywany w metadanych szyfrowania. Kopia zapasowa sprzętu to wdrożenie przy użyciu funkcji podpisywania TEE (Trusted Execution Environment). 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 na ataki zewnętrzne, rozszerzyliśmy ten algorytm, podpisując uzyskany klucz za pomocą przechowywanego klucza TEE. Uzyskany podpis jest następnie przekształcany w klucz o odpowiedniej długości przez zastosowanie jeszcze raz scrypt. Następnie klucz ten służy do szyfrowania i odszyfrowywania klucza głównego. Aby zapisać ten klucz:
- Wygeneruj losowy 16-bajtowy klucz szyfrowania dysku (DEK) i 16-bajtową sól.
- Zastosuj szyfrowanie przy użyciu hasła użytkownika i sól, aby utworzyć 32-bajtowy kod pośredni klucz 1 (IK1).
- Uzupełnij kod IK1 o 0 bajtów w zakresie rozmiaru powiązanego sprzętowo klucza prywatnego (HBK). Hasło ma postać: 00 || IK1 || 00..00; jeden bajt zero, 32 bajty IK1, 223 zero bajtów.
- Podpisz dopełnienie IK1 za pomocą HBK, aby wygenerować 256-bajtowy kod IK2.
- Zastosuj scrypt do IK2 i soli (ta sama sól co w kroku 2), aby uzyskać 32-bajtowy IK3.
- Użyj pierwszych 16 bajtów IK3 jako klucza KEK, a ostatnich 16 bajtów jako IV.
- Szyfruj DEK za pomocą AES_CBC, klucza KEK i wektora inicjującego IV.
Zmiana hasła
Gdy użytkownik zdecyduje się zmienić lub usunąć hasło w ustawieniach, interfejs wyśle polecenie cryptfs changepw
do vold
, a vold
ponownie zaszyfruje klucz główny dysku za pomocą nowego hasła.
Właściwości szyfrowania
vold
i init
komunikują się ze sobą, ustawiając właściwości. Oto lista właściwości dostępnych do 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ź, czy dysk jest zaszyfrowany bez hasła.
Jeśli tak, odszyfruj i zamontuj plik. W przeciwnym razie ustaw vold.decrypt na trigger_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ć prawdziwą platformę i wszystkie usługi. |
vold.decrypt trigger_shutdown_framework |
Ustaw przez vold, aby wyłączyć cały framework i rozpocząć szyfrowanie. |
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 w interfejsie powinien wyświetlać ustawioną wartość procentową. |
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 |
W interfejsie paska postępu powinno wyświetlać się komunikat o ukończeniu szyfrowania i przycisk umożliwiający ponowne uruchomienie urządzenia. Ten błąd nie jest spodziewana. |
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 |
Ustawione przez: init.rc lub
init.rc zaraz po ukoń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 , aby wskazać, że system działa z niezaszyfrowanym
/data ro.crypto.state encrypted . Ustawione przez init
ten system działa z zaszyfrowanym kodem /data . |
|
Te 5 właściwości są ustawiane przez init , gdy próbuje zamontować /data z parametrami przekazanymi przez 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. |
inicjowanie działań
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