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. Szybkie szyfrowanie jest obecnie obsługiwane tylko w systemach plików ext4 i f2fs.
- Dodano
forceencryptflagę fstab, aby szyfrować przy pierwszym uruchomieniu. - Dodaliśmy 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.
Ostrzeżenie: urządzenia, na których przeprowadzono uaktualnienie 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 multimedialnymi ( eMMC) i podobnymi urządzeniami flash, które są rozpoznawane przez jądro 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 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ślna
- Kod 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ęp lub sugerować wymazanie danych. Ograniczeniem jest to, że aby przełączyć się z tymczasowego systemu plików na prawdziwy system plików /data, system musi 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 potem ponownie uruchom komputer po wpisaniu hasła do dysku.late_start: nie rozpoczyna się, dopóki/datanie 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: ponowne uruchomienie usługi.class_stop: zatrzymuje usługę i dodaje flagęSVC_DISABLED. Zatrzymane usługi nie odpowiadają naclass_start.
Procesy
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, które nie ma ustawionego 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
forceencryptPlik
/datanie jest zaszyfrowany, ale powinien być, ponieważ wymaga tegoforceencrypt. Odłącz/data. - Rozpocznij szyfrowanie
/datavold.decrypt = "trigger_encryption"wywołujeinit.rc, co powoduje, żevoldszyfruje/databez hasła. (Nie ustawiono żadnego, ponieważ powinno to być nowe urządzenie). - Montowanie 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 - 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
/datajest zaszyfrowany, usuń platformęvoldustawiavold.decryptnatrigger_default_encryption, co uruchamia usługędefaultcrypto. (Spowoduje to rozpoczęcie procesu montowania domyślnych zaszyfrowanych danych użytkownika).trigger_default_encryptionsprawdza typ szyfrowania, aby dowiedzieć się, czy/datajest zaszyfrowany z hasłem lub 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. - Podłącz
/datainitnastępnie montuje/datana dysku RAMDisk tmpfs, używając parametrów pobranych zro.crypto.tmpfs_options, który jest ustawiony winit.rc. - Rozpocznij framework
voldustawiavold.decryptnatrigger_restart_framework, co kontynuuje zwykły proces uruchamiania.
Szyfrowanie aktualnie używanego urządzenia
Tak się dzieje, 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 zdecyduje się zaszyfrować urządzenie, interfejs sprawdzi, czy bateria jest w pełni naładowana, a 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 przed zakończeniem szyfrowania, dane plików 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
voldz poleceniemcryptfs enablecrypto inplace, gdziepasswdto hasło ekranu blokady użytkownika. - Usuwanie platformy
voldsprawdza błędy, zwraca wartość -1, jeśli nie może zaszyfrować, i wyświetla przyczynę w dzienniku. Jeśli może szyfrować, ustawia właściwośćvold.decryptnatrigger_shutdown_framework. Spowoduje to zatrzymanie usługinit.rcw klasachlate_startimain. - Tworzenie kryptograficznego stopki
- Tworzenie pliku ścieżki
- Uruchom ponownie
- Wykrywanie pliku menu nawigacyjnego
- Rozpocznij szyfrowanie
/datavoldkonfiguruje 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.voldtworzy i zapisuje metadane kryptograficzne. - Podczas szyfrowania zamontuj 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 - Wyświetlanie platformy, aby pokazać postęp
trigger_restart_min_frameworkpowoduje, żeinit.rcrozpoczynamainklasę usług. Gdy platforma wykryje, że wartość parametruvold.encrypt_progresswynosi 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_progressza każdym razem, gdy zaszyfruje kolejny procent partycji. - Gdy
/datajest zaszyfrowany, zaktualizuj stopkę dotyczącą kryptowalutGdy
/datazostanie zaszyfrowany,voldwyczyści flagęENCRYPTION_IN_PROGRESSw 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,
voldustawi właściwośćvold.encrypt_progressnaerror_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 się dzieje, gdy uruchamiasz zaszyfrowane urządzenie 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
/databez hasłaWykrywanie, że urządzenie z Androidem jest zaszyfrowane, ponieważ nie można zamontować
/data, a jeden z tych flag jest ustawiony:encryptablelubforceencrypt.voldustawiavold.decryptnatrigger_default_encryption, co uruchamia usługędefaultcrypto.trigger_default_encryptionsprawdza typ szyfrowania, aby określić, czy/datajest zaszyfrowany z hasłem czy bez niego. - Odszyfruj /data
Tworzy urządzenie
dm-cryptna urządzeniu blokowym, aby urządzenie było gotowe do użycia. - Podłącz /data
voldnastępnie montuje odszyfrowaną prawdziwą/datapartycję i przygotowuje nową partycję. Ustawia właściwośćvold.post_fs_data_donena 0, a następnie ustawiavold.decryptnatrigger_post_fs_data. Powoduje to uruchomienie poleceńpost-fs-datawinit.rc. Tworzą one wszystkie niezbędne katalogi lub linki, a następnie ustawiają wartośćvold.post_fs_data_donena 1.Gdy
voldzobaczy w tej właściwości wartość 1, ustawi właściwośćvold.decryptna:trigger_restart_framework.. Spowoduje to ponowne uruchomienie usług w klasiemainprzezinit.rc, a także uruchomienie usług w klasielate_startpo raz pierwszy od uruchomienia. - Rozpocznij framework
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
Tak wygląda uruchamianie zaszyfrowanego urządzenia 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"voldustawia wartośćvold.decryptnatrigger_restart_min_framework, ponieważ/datajest szyfrowany za pomocą hasła. - Montowanie tmpfs
initustawia 5 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 konfigurowania mapowania kryptowalut:ro.crypto.fs_typero.crypto.fs_real_blkdevro.crypto.fs_mnt_pointro.crypto.fs_optionsro.crypto.fs_flags(8-cyfrowa liczba szesnastkowa ASCII poprzedzona ciągiem znaków 0x)
- Uruchom platformę, aby wyświetlić prośbę o podanie hasła
Framework uruchamia się i widzi, że
vold.decryptma wartośćtrigger_restart_min_framework. Informuje to platformę, że uruchamia się ona na dysku tmpfs/datai musi pobrać 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, -1 w przypadku błędu wewnętrznego lub -2, jeśli szyfrowanie nie zostało zakończone.voldokreś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 danych, z których można by korzystać. Jeśli funkcjavoldzwró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 cryptocompletesię powiedzie, framework wyświetli interfejs z prośbą o podanie hasła do dysku. Interfejs sprawdza hasło, wysyłając poleceniecryptfs checkpwdovold. Jeśli hasło jest prawidłowe (co jest określane przez pomyślne zamontowanie odszyfrowanego urządzenia blokowego/dataw tymczasowej lokalizacji, a następnie odmontowanie go),voldzapisuje nazwę odszyfrowanego urządzenia blokowego we właściwościro.crypto.fs_crypto_blkdevi zwraca do interfejsu stan 0. Jeśli hasło jest nieprawidłowe, zwraca do interfejsu wartość -1. - Platforma zatrzymywania
Interfejs wyświetla grafikę rozruchu kryptograficznego, a następnie wywołuje
voldz poleceniemcryptfs restart.voldustawia właściwośćvold.decryptnatrigger_reset_main, co powoduje, żeinit.rcwykonujeclass_reset main. Powoduje to zatrzymanie wszystkich usług w klasie głównej, co umożliwia odmontowanie systemu plików tmpfs/data. - Podłącz
/datavoldnastępnie montuje odszyfrowaną prawdziwą/datapartycję 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_donena 0, a następnie ustawia właściwośćvold.decryptnatrigger_post_fs_data. Spowoduje to uruchomienie poleceńpost-fs-datawinit.rc. Tworzą one wszystkie niezbędne katalogi lub linki, a następnie ustawiają wartośćvold.post_fs_data_donena 1. Gdyvoldzobaczy w tej właściwości wartość 1, ustawi właściwośćvold.decryptnatrigger_restart_framework. Spowoduje toinit.rcponowne uruchomienie usług w klasiemaini pierwsze uruchomienie usług w klasielate_startod czasu uruchomienia urządzenia. - Rozpocznij pełną platformę
Teraz platforma uruchamia wszystkie swoje usługi za pomocą odszyfrowanego systemu plików
/data, a system jest gotowy do użycia.
Niepowodzenie
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 do wyświetlania prośby o hasło
Po otwarciu ramki urządzenie może napotkać 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 użytkownika 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 vold wykryje błąd podczas procesu szyfrowania, ustawi 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 zwiększyć odporność klucza na ataki zewnętrzne, rozszerzamy ten algorytm, podpisując uzyskany 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 IK1 za pomocą HBK, aby uzyskać 256-bajtowy IK2.
- Zastosuj funkcję scrypt do IK2 i ciągu zaburzającego (tego samego co w kroku 2), aby uzyskać 32-bajtowy klucz 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.
Zmień hasło
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 głośności
| 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ą platformę i wszystkie usługi. |
vold.decrypt trigger_shutdown_framework |
Ustawione przez vold, aby wyłączyć całą platformę 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ę uruchamia, jeśli ta właściwość jest ustawiona, przechodzi w tryb 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 umożliwiający ponowne uruchomienie 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 działa, więc nie wiadomo, kto odpowie na ten błąd. W ogóle nie powinno do tego dojść. |
vold.post_fs_data_done 0 |
Ustawione przez vold tuż przed ustawieniem vold.decrypt na trigger_post_fs_data. |
vold.post_fs_data_done 1 |
Ustawione przez init.rc lubinit.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 informować, ż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