Szyfrowanie całego dysku to proces kodowania wszystkich danych użytkownika na urządzeniu z Androidem za pomocą zaszyfrowanego klucza. Gdy urządzenie zostanie zaszyfrowane, wszystkie dane utworzone przez użytkownika będą automatycznie szyfrowane przed zapisaniem na dysku, a wszystkie odczyty będą automatycznie odszyfrowywać dane przed zwróceniem ich do procesu wywołującego.
Szyfrowanie całego dysku zostało wprowadzone w Androidzie 4.4, ale w Androidzie 5.0 pojawiły się te nowe funkcje:
- Szybkie szyfrowanie, które szyfruje tylko używane bloki na partycji danych, aby uniknąć długiego czasu pierwszego uruchomienia. Obecnie szybkie szyfrowanie jest obsługiwane tylko w przypadku systemów plików ext4 i f2fs.
- Dodano
forceencrypt
flagę fstab, aby szyfrować przy pierwszym uruchomieniu. - Dodano obsługę wzorów i szyfrowania bez hasła.
- Dodano oparte na sprzęcie przechowywanie klucza szyfrowania przy użyciu funkcji podpisywania zaufanego środowiska wykonawczego (TEE) (np. w TrustZone). Więcej informacji znajdziesz w sekcji Przechowywanie zaszyfrowanego klucza.
Ostrzeżenie: urządzenia, na których przeprowadzono aktualizację do Androida 5.0, a następnie zaszyfrowano dane, można przywrócić do stanu bez szyfrowania, przywracając dane fabryczne. Nowych urządzeń z Androidem 5.0, które zostały zaszyfrowane podczas pierwszego uruchomienia, nie można przywrócić do stanu bez szyfrowania.
Jak działa pełne szyfrowanie dysku na Androidzie
Szyfrowanie całego dysku na Androidzie jest oparte na dm-crypt
, czyli funkcji jądra, która działa na poziomie urządzenia blokowego. Dlatego szyfrowanie działa z wbudowanymi kartami MultiMediaCard (eMMC) i podobnymi urządzeniami flash, które są widoczne dla jądra jako urządzenia blokowe. Szyfrowanie nie jest możliwe w przypadku systemu YAFFS, który komunikuje się bezpośrednio z nieprzetworzonym układem pamięci flash NAND.
Algorytm szyfrowania to 128-bitowy standard AES z szyfrowaniem blokowym (CBC) i ESSIV:SHA256. Klucz główny jest szyfrowany za pomocą 128-bitowego algorytmu AES przez wywołania biblioteki OpenSSL. Klucz musi mieć co najmniej 128 bitów (256 bitów jest opcjonalne).
Uwaga: producenci OEM mogą używać 128-bitowego lub dłuższego klucza do szyfrowania klucza głównego.
W Androidzie 5.0 dostępne są 4 rodzaje stanów szyfrowania:
- domyślnie
- kodu PIN,
- hasło
- wzór
Podczas pierwszego uruchomienia urządzenie tworzy losowo wygenerowany 128-bitowy klucz główny, a następnie haszuje go za pomocą domyślnego hasła i zapisanego saltu. Domyślne hasło to „default_password”. Wynikowy skrót jest jednak również podpisywany za pomocą zaufanego środowiska wykonawczego (TEE), np. TrustZone, które używa skrótu podpisu do zaszyfrowania klucza głównego.
Domyślne hasło znajdziesz w pliku cryptfs.cpp w projekcie Android Open Source.
Gdy użytkownik ustawi kod PIN lub hasło na urządzeniu, tylko 128-bitowy klucz zostanie ponownie zaszyfrowany i zapisany. (np. zmiany kodu PIN, hasła lub wzoru użytkownika NIE powodują ponownego zaszyfrowania danych użytkownika). Pamiętaj, że urządzenie zarządzane może podlegać ograniczeniom dotyczącym kodu PIN, wzoru lub hasła.
Szyfrowaniem zarządzają init
i vold
.
init
wywołuje vold
, a vold ustawia właściwości, aby wywoływać zdarzenia w init. Inne części systemu również sprawdzają te właściwości, aby wykonywać zadania takie jak raportowanie stanu, proszenie o hasło czy wyświetlanie prośby o przywrócenie ustawień fabrycznych w przypadku poważnego błędu. Aby wywołać funkcje szyfrowania w vold
, system używa narzędzia wiersza poleceń vdc
z tymi poleceniami: cryptfs
, checkpw
, restart
, enablecrypto
, changepw
, cryptocomplete
, verifypw
, setfield
, getfield
, mountdefaultencrypted
, getpwtype
, getpw
i clearpw
.
Aby zaszyfrować, odszyfrować lub wyczyścić /data
, /data
nie może być zamontowany. Aby jednak wyświetlić interfejs, platforma musi się uruchomić, a do jej działania wymagany jest /data
. Aby rozwiązać ten problem, tymczasowy system plików jest montowany w /data
.
Dzięki temu Android może w razie potrzeby wyświetlać prośby o podanie haseł, pokazywać postępy lub sugerować wymazanie danych. Wymaga to jednak, aby w celu przejścia z tymczasowego systemu plików na prawdziwy system plików /data
system zatrzymał wszystkie procesy z otwartymi plikami w tymczasowym systemie plików i ponownie uruchomił te procesy w prawdziwym 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 po uruchomieniu.main
: wyłącz, a następnie uruchom ponownie po wpisaniu hasła do dysku.late_start
: nie rozpoczyna się, dopóki/data
nie zostanie odszyfrowany i zamontowany.
Aby wywołać te działania, właściwość vold.decrypt
jest ustawiona na różne ciągi znaków.
Aby zatrzymać i ponownie uruchomić usługi, użyj tych poleceń init
:
class_reset
: zatrzymuje usługę, ale umożliwia jej ponowne uruchomienie za pomocą polecenia class_start.class_start
: ponownie uruchamia usługę.class_stop
: zatrzymuje usługę i dodaje flagęSVC_DISABLED
. Zatrzymane usługi nie odpowiadają naclass_start
.
Flows
W przypadku zaszyfrowanego urządzenia dostępne są 4 ścieżki. Urządzenie jest szyfrowane tylko raz, a potem uruchamia się normalnie.
- Szyfrowanie wcześniej niezaszyfrowanego urządzenia:
- Szyfrowanie nowego urządzenia za pomocą
forceencrypt
: obowiązkowe szyfrowanie przy pierwszym uruchomieniu (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, na którym nie ustawiono hasła (dotyczy urządzeń z Androidem 5.0 lub nowszym).
- Uruchamianie zaszyfrowanego urządzenia za pomocą hasła: uruchamianie zaszyfrowanego urządzenia, które ma ustawione hasło.
Oprócz tych procesów urządzenie może też nie zaszyfrować /data
.
Każdy z tych procesów został szczegółowo opisany poniżej.
Szyfrowanie nowego urządzenia za pomocą polecenia 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 powinien być, ponieważ wymaga tegoforceencrypt
. Odłącz/data
. - Rozpocznij szyfrowanie
/data
vold.decrypt = "trigger_encryption"
wywołujeinit.rc
, co powoduje, żevold
szyfruje/data
bez hasła. (Nie ustawiono żadnego, ponieważ powinno to być nowe urządzenie). - Montowanie 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
- Wyświetlanie platformy, aby pokazać postęp
Urządzenie nie ma praktycznie żadnych danych do zaszyfrowania, więc pasek postępu nie będzie się często pojawiać, ponieważ szyfrowanie przebiega bardzo szybko. Więcej informacji o interfejsie postępu znajdziesz w artykule Szyfrowanie aktualnie używanego urządzenia.
- Gdy
/data
jest zaszyfrowany, usuń platformęvold
ustawiavold.decrypt
natrigger_default_encryption
, co uruchamia usługędefaultcrypto
. (Spowoduje to rozpoczęcie procesu montowania domyślnych zaszyfrowanych danych użytkownika).trigger_default_encryption
sprawdza typ szyfrowania, aby ustalić, czy/data
jest zaszyfrowany z użyciem hasła czy bez niego. Urządzenia z Androidem 5.0 są szyfrowane przy pierwszym uruchomieniu, więc nie powinno być ustawione hasło. Dlatego odszyfrowujemy i montujemy/data
. - Zamontuj
/data
init
następnie montuje/data
na dysku RAMDisk tmpfs, używając parametrów pobranych zro.crypto.tmpfs_options
, który jest ustawiony winit.rc
. - Platforma Start
vold
ustawiavold.decrypt
natrigger_restart_framework
, co kontynuuje zwykły proces uruchamiania.
Szyfrowanie aktualnie używanego urządzenia
Dzieje się tak, gdy zaszyfrujesz niezaszyfrowane urządzenie z Androidem K lub starszym, które zostało przeniesione do wersji L.
Ten proces jest inicjowany przez użytkownika i w kodzie jest określany jako „szyfrowanie w miejscu”. Gdy użytkownik wybierze opcję szyfrowania urządzenia, interfejs sprawdzi, czy bateria jest w pełni naładowana i czy zasilacz jest podłączony, aby zapewnić wystarczającą ilość energii do zakończenia procesu szyfrowania.
Ostrzeżenie: jeśli urządzenie wyłączy się z powodu wyczerpania baterii, zanim zakończy szyfrowanie, dane w plikach pozostaną częściowo zaszyfrowane. Urządzenie musi zostać przywrócone do ustawień fabrycznych, a wszystkie dane zostaną utracone.
Aby włączyć szyfrowanie w miejscu, vold
rozpoczyna pętlę odczytującą każdy sektor rzeczywistego urządzenia blokowego, a następnie zapisującą go na urządzeniu blokowym kryptograficznym. vold
sprawdza, czy sektor jest używany, zanim go odczyta lub zapisze, co znacznie przyspiesza szyfrowanie na nowym urządzeniu, które zawiera niewiele danych lub nie zawiera ich wcale.
Stan urządzenia: ustaw ro.crypto.state = "unencrypted"
i wykonaj wyzwalacz on nonencrypted
init
, aby kontynuować uruchamianie.
- Sprawdź hasło
Interfejs wywołuje
vold
z poleceniemcryptfs enablecrypto inplace
, gdziepasswd
to hasło ekranu blokady użytkownika. - Usuń platformę
vold
sprawdza błędy, zwraca wartość -1, jeśli nie może zaszyfrować, i wyświetla w dzienniku przyczynę. Jeśli może szyfrować, ustawia właściwośćvold.decrypt
natrigger_shutdown_framework
. Spowoduje to zatrzymanie usługinit.rc
w klasachlate_start
imain
. - Tworzenie kryptograficznego stopki
- Tworzenie pliku ścieżki
- Uruchom ponownie
- Wykrywanie pliku menu nawigacyjnego
- Rozpocznij szyfrowanie
/data
vold
konfiguruje mapowanie kryptograficzne, które tworzy wirtualne urządzenie blokowe kryptograficzne mapowane na rzeczywiste urządzenie blokowe, ale szyfruje każdy sektor podczas zapisu i odszyfrowuje każdy sektor podczas odczytu.vold
tworzy i zapisuje metadane kryptograficzne. - Podczas szyfrowania zamontuj 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
- Wyświetlanie platformy, aby pokazać postęp
trigger_restart_min_framework
powoduje, żeinit.rc
rozpoczynamain
klasę usług. Gdy platforma wykryje, że wartość parametruvold.encrypt_progress
wynosi 0, wyświetli interfejs paska postępu, który co 5 sekund wysyła zapytanie o tę właściwość i aktualizuje pasek postępu. Pętla szyfrowania aktualizuje wartośćvold.encrypt_progress
za każdym razem, gdy zaszyfruje kolejny procent partycji. - Gdy
/data
jest zaszyfrowany, zaktualizuj stopkę kryptograficznąGdy
/data
zostanie zaszyfrowany,vold
wyczyści 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 ponowne uruchomienie z jakiegoś powodu się nie powiedzie,
vold
ustawi wartość właściwościvold.encrypt_progress
naerror_reboot_failed
, a interfejs powinien wyświetlić komunikat z prośbą o naciśnięcie przycisku w celu ponownego uruchomienia. Nie powinno się to nigdy zdarzyć.
Uruchamianie zaszyfrowanego urządzenia z domyślnym szyfrowaniem
Tak wygląda uruchamianie zaszyfrowanego urządzenia bez hasła. Urządzenia z Androidem 5.0 są szyfrowane przy pierwszym uruchomieniu, więc nie powinno być ustawionego hasła. Jest to więc domyślny stan szyfrowania.
- Wykrywanie zaszyfrowanych
/data
bez hasłaWykrywanie, że urządzenie z Androidem 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 określić, czy/data
jest zaszyfrowany z hasłem czy bez niego. - Odszyfruj /data
Tworzy urządzenie
dm-crypt
na urządzeniu blokowym, aby urządzenie było gotowe do użycia. - Montowanie /data
vold
następnie montuje odszyfrowaną prawdziwą/data
partycję, a potem 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 uruchomienie poleceńpost-fs-data
winit.rc
. Tworzą one wszystkie niezbędne katalogi lub linki, a następnie ustawiają wartośćvold.post_fs_data_done
na 1.Gdy usługa
vold
zobaczy w tej właściwości wartość 1, ustawi właściwośćvold.decrypt
na:trigger_restart_framework.
. Spowoduje to ponowne uruchomienie usług w klasiemain
przez usługęinit.rc
, a także pierwsze uruchomienie usług w klasielate_start
od czasu uruchomienia urządzenia. - Platforma Start
Platforma uruchamia teraz wszystkie swoje usługi za pomocą odszyfrowanego
/data
, a system jest gotowy do użycia.
Uruchamianie zaszyfrowanego urządzenia bez domyślnego szyfrowania
Gdy uruchomisz zaszyfrowane urządzenie z ustawionym hasłem, stanie się to, co opisujemy poniżej. 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 szyfrowany za pomocą hasła. - Montowanie tmpfs
init
ustawia 5 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 skonfigurowania 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-cyfrowa liczba szesnastkowa ASCII poprzedzona ciągiem znaków 0x)
- Uruchamianie platformy w celu wyświetlenia prośby o podanie hasła
Framework uruchamia się i widzi, że
vold.decrypt
ma wartośćtrigger_restart_min_framework
. Informuje to platformę, że uruchamia się ona na dysku tmpfs/data
i musi pobrać hasło użytkownika.Najpierw jednak musi się upewnić, że dysk został prawidłowo zaszyfrowany. Wysyła polecenie
cryptfs cryptocomplete
dovold
.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 to na podstawie metadanych kryptowaluty, w których szuka flagiCRYPTO_ENCRYPTION_IN_PROGRESS
. Jeśli jest ustawiony, oznacza to, że proces szyfrowania został przerwany i na urządzeniu nie ma użytecznych danych. Jeśli funkcjavold
zwróci błąd, interfejs powinien wyświetlić użytkownikowi komunikat z prośbą o ponowne uruchomienie urządzenia i przywrócenie go do ustawień fabrycznych oraz przycisk, który użytkownik może nacisnąć, aby to zrobić. - Odszyfrowywanie danych za pomocą hasła
Gdy
cryptfs cryptocomplete
zakończy się pomyślnie, framework wyświetli interfejs z prośbą o podanie hasła do dysku. Interfejs sprawdza hasło, wysyłając poleceniecryptfs checkpw
dovold
. Jeśli hasło jest prawidłowe (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 do interfejsu stan 0. Jeśli hasło jest nieprawidłowe, zwraca do interfejsu wartość -1. - Zasady dotyczące zatrzymania
Interfejs wyświetla grafikę rozruchu kryptograficznego, a następnie wywołuje
vold
z poleceniemcryptfs restart
.vold
ustawia właściwośćvold.decrypt
natrigger_reset_main
, co powoduje, żeinit.rc
wykonujeclass_reset main
. Spowoduje to zatrzymanie wszystkich usług w klasie głównej, co umożliwi odmontowanie tmpfs/data
. - Zamontuj
/data
vold
montuje odszyfrowaną prawdziwą/data
partycję i przygotowuje nową partycję (która mogła nigdy nie zostać przygotowana, jeśli została zaszyfrowana za pomocą opcji czyszczenia, która nie jest obsługiwana w pierwszej wersji). Ustawia właściwośćvold.post_fs_data_done
na 0, a następnievold.decrypt
natrigger_post_fs_data
. Spowoduje to uruchomienie poleceńpost-fs-data
winit.rc
. Tworzy on wszystkie niezbędne katalogi lub linki, a następnie ustawia wartość zmiennejvold.post_fs_data_done
na 1. Gdyvold
zobaczy w tej właściwości wartość 1, ustawi właściwośćvold.decrypt
natrigger_restart_framework
. Spowoduje to ponowne uruchomienie usługinit.rc
w klasiemain
, a także uruchomienie usług w klasielate_start
po raz pierwszy od uruchomienia urządzenia. - Rozpocznij pełne zasady
Teraz platforma uruchamia wszystkie swoje 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 działać nieprawidłowo z kilku powodów. Urządzenie rozpoczyna normalną serię czynności związanych z uruchamianiem:
- Wykrywanie zaszyfrowanego urządzenia za pomocą hasła
- Podłączanie tmpfs
- Uruchomienie platformy, która wyświetla prośbę o podanie hasła
Po otwarciu ramki na urządzeniu mogą wystąpić błędy:
- Hasło pasuje, ale nie można odszyfrować danych
- Użytkownik 30 razy wpisuje nieprawidłowe hasło
Jeśli te błędy nie zostaną rozwiązane, 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 platforma działa, vold
ustawia wartość właściwości vold.encrypt_progress
na error_not_encrypted
.
Interfejs wyświetla prośbę o ponowne uruchomienie urządzenia i informuje, że proces szyfrowania nigdy się nie rozpoczął. Jeśli błąd wystąpi po zamknięciu struktury, ale przed wyświetleniem interfejsu paska postępu, vold
ponownie uruchomi system. Jeśli ponowne uruchomienie się nie powiedzie, ustawia wartość vold.encrypt_progress
na error_shutting_down
i zwraca –1, ale nie będzie można przechwycić błędu. Nie powinno się to zdarzyć.
Jeśli podczas procesu szyfrowania funkcja vold
wykryje błąd, ustawi wartość vold.encrypt_progress
na error_partially_encrypted
i zwróci wartość -1. Interfejs powinien wtedy wyświetlić komunikat o niepowodzeniu szyfrowania i przycisk umożliwiający przywrócenie urządzenia do ustawień fabrycznych.
Przechowywanie zaszyfrowanego klucza
Zaszyfrowany klucz jest przechowywany w metadanych kryptograficznych. Ochrona sprzętowa jest realizowana za pomocą funkcji podpisywania zaufanego środowiska wykonawczego (TEE). Wcześniej klucz główny był szyfrowany za pomocą klucza wygenerowanego przez zastosowanie algorytmu scrypt do hasła użytkownika i przechowywanego saltu. Aby klucz był odporny na ataki zewnętrzne, rozszerzamy ten algorytm, podpisując wynikowy klucz za pomocą przechowywanego klucza TEE. Wynikowy podpis jest następnie przekształcany w klucz o odpowiedniej długości przez kolejne zastosowanie funkcji scrypt. Ten klucz jest następnie używany do szyfrowania i odszyfrowywania klucza głównego. Aby zapisać ten klucz:
- Wygeneruj losowy 16-bajtowy klucz szyfrowania dysku (DEK) i 16-bajtowy sól.
- Zastosuj algorytm scrypt do hasła użytkownika i soli, aby uzyskać 32-bajtowy klucz pośredni 1 (IK1).
- Dopełnij IK1 zerami do rozmiaru klucza prywatnego powiązanego ze sprzętem (HBK). W szczególności dodajemy dopełnienie w postaci: 00 || IK1 || 00..00; jeden bajt zerowy, 32 bajty IK1, 223 bajty zerowe.
- Podpisz uzupełniony klucz IK1 za pomocą klucza HBK, aby uzyskać 256-bajtowy klucz IK2.
- Zastosuj funkcję scrypt do IK2 i ciągu zaburzającego (tego samego co w kroku 2), aby uzyskać 32-bajtowy ciąg IK3.
- Użyj pierwszych 16 bajtów IK3 jako KEK, a ostatnich 16 bajtów jako IV.
- Zaszyfruj klucz DEK za pomocą algorytmu AES_CBC z użyciem klucza KEK i wektora inicjującego IV.
Zmiana hasła
Gdy użytkownik zdecyduje się zmienić lub usunąć hasło w ustawieniach, interfejs wysyła polecenie cryptfs changepw
do vold
, a vold
ponownie szyfruje główny klucz dysku za pomocą nowego hasła.
Właściwości szyfrowania
Usługi vold
i init
komunikują się ze sobą, ustawiając właściwości. Oto lista dostępnych właściwości szyfrowania.
Właściwości Vold
Właściwość | Opis |
---|---|
vold.decrypt trigger_encryption |
zaszyfrować dysk bez hasła. |
vold.decrypt trigger_default_encryption |
Sprawdź, czy dysk jest zaszyfrowany bez hasła.
Jeśli tak, odszyfruj i zamontuj go, w przeciwnym razie ustaw vold.decrypt na trigger_restart_min_framework. |
vold.decrypt trigger_reset_main |
Ustawiane przez vold w celu zamknięcia interfejsu proszącego o hasło do dysku. |
vold.decrypt trigger_post_fs_data |
Ustawione przez vold w celu przygotowania /data z niezbędnymi katalogami itp. |
vold.decrypt trigger_restart_framework |
Ustawione przez vold, aby uruchomić prawdziwą strukturę i wszystkie usługi. |
vold.decrypt trigger_shutdown_framework |
Ustawione przez vold, aby wyłączyć całą strukturę i rozpocząć szyfrowanie. |
vold.decrypt trigger_restart_min_framework |
Ustawione przez vold, aby uruchomić interfejs paska postępu szyfrowania lub wyświetlić prośbę o podanie hasła w zależności od wartości ro.crypto.state . |
vold.encrypt_progress |
Gdy platforma się uruchomi, a ta właściwość jest ustawiona, przejdź do trybu interfejsu paska postępu. |
vold.encrypt_progress 0 to 100 |
Interfejs paska postępu powinien wyświetlać ustawioną wartość procentową. |
vold.encrypt_progress error_partially_encrypted |
W interfejsie paska postępu powinna się wyświetlać informacja o niepowodzeniu szyfrowania. Użytkownik powinien mieć możliwość przywrócenia urządzenia do ustawień fabrycznych. |
vold.encrypt_progress error_reboot_failed |
W interfejsie paska postępu powinien wyświetlać się komunikat o zakończeniu szyfrowania oraz przycisk ponownego uruchomienia urządzenia. Ten błąd nie powinien wystąpić. |
vold.encrypt_progress error_not_encrypted |
W interfejsie paska postępu powinien wyświetlać się komunikat o wystąpieniu błędu, braku zaszyfrowanych lub utraconych danych oraz przycisk ponownego uruchomienia systemu. |
vold.encrypt_progress error_shutting_down |
Interfejs paska postępu nie jest uruchomiony, więc nie wiadomo, kto odpowie na ten błąd. I tak nie powinno się to zdarzyć. |
vold.post_fs_data_done 0 |
Ustawione przez użytkownika vold tuż przed ustawieniem wartości vold.decrypt na trigger_post_fs_data . |
vold.post_fs_data_done 1 |
Ustawione przez init.rc lub init.rc zaraz po zakończeniu zadaniapost-fs-data . |
właściwości inicjowania,
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 ten system działa z niezaszyfrowanym /data ro.crypto.state encrypted . Ustawione przez init , aby wskazywać, że ten system działa z zaszyfrowanym /data . |
|
Te 5 właściwości jest ustawianych przez init , gdy próbuje on zamontować /data z parametrami przekazanymi z init.rc . vold używa tych informacji do skonfigurowania mapowania kryptowalut. |
ro.crypto.tmpfs_options |
Ustawione przez init.rc z opcjami, których init powinien używać podczas montowania systemu plików tmpfs /data . |
działania inicjowania,
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