Szyfrowanie całego dysku to proces kodowania wszystkich danych użytkownika na urządzeniu z Androidem przy użyciu zaszyfrowanego klucza. Po zaszyfrowaniu urządzenia wszystkie dane utworzone przez użytkownika są automatycznie szyfrowane przed przesłaniem ich na dysk, a wszystkie odczyty automatycznie odszyfrowują dane przed zwróceniem ich do procesu wywołującego.
Szyfrowanie całego dysku zostało wprowadzone w systemie Android w wersji 4.4, ale w systemie Android 5.0 wprowadzono następujące nowe funkcje:
- Utworzono szybkie szyfrowanie, które szyfruje tylko używane bloki na partycji danych, aby pierwsze uruchomienie nie trwało długo. Obecnie szybkie szyfrowanie obsługują tylko systemy plików ext4 i f2fs.
- Dodano flagę
forceencrypt
fstab do szyfrowania przy pierwszym uruchomieniu. - Dodano obsługę wzorców i szyfrowania bez hasła.
- Dodano sprzętowe przechowywanie klucza szyfrowania przy użyciu możliwości podpisywania Trusted Execution Environment (TEE) (np. w TrustZone). Aby uzyskać więcej informacji, zobacz Przechowywanie zaszyfrowanego klucza .
Uwaga: urządzenia zaktualizowane do systemu Android 5.0, a następnie zaszyfrowane, mogą zostać przywrócone do stanu niezaszyfrowanego poprzez przywrócenie danych fabrycznych. Nowych urządzeń z Androidem 5.0 zaszyfrowanych przy pierwszym uruchomieniu nie można przywrócić do stanu niezaszyfrowanego.
Jak działa szyfrowanie całego dysku w systemie Android
Szyfrowanie całego dysku w systemie Android opiera się na dm-crypt
, czyli funkcji jądra działającej w warstwie urządzeń blokowych. Z tego powodu szyfrowanie działa z wbudowanymi kartami MultiMediaCard ( eMMC) i podobnymi urządzeniami flash, które jadą dla jądra jako urządzenia blokowe. Szyfrowanie nie jest możliwe w przypadku YAFFS, który komunikuje się bezpośrednio z surowym układem flash NAND.
Algorytm szyfrowania to 128 Advanced Encryption Standard (AES) z łączeniem bloków szyfru (CBC) i ESSIV:SHA256. Klucz główny jest szyfrowany 128-bitowym AES poprzez wywołania biblioteki OpenSSL. Musisz użyć klucza o długości 128 lub więcej (przy czym 256 jest opcjonalne).
Uwaga: do szyfrowania klucza głównego producenci OEM mogą używać wersji 128-bitowej lub wyższej.
W wersji Androida 5.0 dostępne są cztery rodzaje stanów szyfrowania:
- domyślny
- SZPILKA
- hasło
- wzór
Przy pierwszym uruchomieniu urządzenie tworzy losowo wygenerowany 128-bitowy klucz główny, a następnie miesza go z domyślnym hasłem i przechowywaną solą. Domyślne hasło to: „hasło_domyślne”. Jednakże wynikowy skrót jest również podpisywany przez TEE (taki jak TrustZone), który wykorzystuje skrót podpisu do szyfrowania klucza głównego.
Domyślne hasło zdefiniowane w pliku cryptfs.cpp projektu Android Open Source.
Gdy użytkownik ustawi na urządzeniu PIN/hasło lub hasło, ponownie szyfrowany i przechowywany jest tylko 128-bitowy klucz. (tzn. zmiany kodu PIN/hasła/wzoru użytkownika NIE powodują ponownego szyfrowania danych użytkownika). Należy pamiętać, że zarządzane urządzenie 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 wyzwalające zdarzenia w init. Inne części systemu również sprawdzają właściwości w celu wykonywania zadań, takich jak raportowanie stanu, żądanie hasła 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 cryptfs
vdc
: 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ć dowolny interfejs użytkownika (UI), platforma musi zostać uruchomiona, a do uruchomienia wymaga /data
. Aby rozwiązać tę zagadkę, tymczasowy system plików jest montowany w /data
. Dzięki temu system Android może pytać o hasła, pokazywać postęp lub sugerować czyszczenie danych, jeśli to konieczne. Narzuca jednak ograniczenie polegające na tym, że aby przełączyć się z tymczasowego systemu plików na prawdziwy system /data
, system musi zatrzymać każdy proces z otwartymi plikami w tymczasowym systemie plików i zrestartować te procesy w prawdziwym systemie plików /data
. Aby to zrobić, wszystkie usługi muszą należeć do jednej z trzech grup: core
, main
i late_start
.
-
core
: Nigdy nie wyłączaj po uruchomieniu. -
main
: Zamknij, a następnie uruchom ponownie po wprowadzeniu hasła dysku. -
late_start
: Uruchamia się dopiero po odszyfrowaniu i zamontowaniu/data
.
Aby wywołać te akcje, właściwość vold.decrypt
jest ustawiana na różne ciągi znaków . Aby zakończyć i ponownie uruchomić usługi, użyj poleceń init
:
-
class_reset
: Zatrzymuje usługę, ale pozwala na jej ponowne uruchomienie za pomocą 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
.
Przepływy
Istnieją cztery przepływy dla zaszyfrowanego urządzenia. Urządzenie jest szyfrowane tylko raz, a następnie następuje normalny proces rozruchu.
- Zaszyfruj wcześniej niezaszyfrowane urządzenie:
- Zaszyfruj nowe urządzenie za pomocą
forceencrypt
: obowiązkowe szyfrowanie przy pierwszym uruchomieniu (począwszy od Androida L). - Zaszyfruj istniejące urządzenie: szyfrowanie inicjowane przez użytkownika (Android K i starsze wersje).
- Zaszyfruj nowe urządzenie za pomocą
- Uruchom zaszyfrowane urządzenie:
- 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 z ustawionym hasłem.
Oprócz tych przepływów urządzenie może również nie szyfrować /data
. Każdy z przepływów został szczegółowo wyjaśniony poniżej.
Zaszyfruj nowe urządzenie za pomocą Forceencrypt
Jest to normalne pierwsze uruchomienie urządzenia z systemem Android 5.0.
- Wykryj niezaszyfrowany system plików za pomocą flagi
forceencrypt
/data
nie jest szyfrowany, ale musi tak być, ponieważforceencrypt
to nakazanie. Odmontuj/data
. - Rozpocznij szyfrowanie
/data
vold.decrypt = "trigger_encryption"
uruchamiainit.rc
, co powoduje, żevold
zaszyfruje/data
bez hasła. (Żadne nie jest ustawione, ponieważ powinno to być nowe urządzenie). - Zamontuj tmpfs
vold
montuje plik tmpfs/data
(używając opcji tmpfs zro.crypto.tmpfs_options
) i ustawia właściwośćvold.encrypt_progress
na 0.vold
przygotowuje plik tmpfs/data
do uruchomienia zaszyfrowanego systemu i ustawia właściwośćvold.decrypt
na:trigger_restart_min_framework
- Przywołaj ramy, aby pokazać postęp
Ponieważ na urządzeniu praktycznie nie ma danych do zaszyfrowania, pasek postępu często nie jest wyświetlany, ponieważ szyfrowanie odbywa się zbyt szybko. Aby uzyskać więcej informacji na temat interfejsu postępu, zobacz Szyfrowanie istniejącego urządzenia .
- Kiedy
/data
jest zaszyfrowany, zdejmij frameworkvold
ustawiavold.decrypt
natrigger_default_encryption
, który uruchamia domyślną usługędefaultcrypto
. (To rozpoczyna poniższy proces montażu domyślnych zaszyfrowanych danych użytkownika.)trigger_default_encryption
sprawdza typ szyfrowania, aby zobaczyć, czy/data
jest szyfrowany z hasłem czy bez. Ponieważ urządzenia z Androidem 5.0 są szyfrowane przy pierwszym uruchomieniu, nie należy ustawiać hasła; dlatego odszyfrowujemy i montujemy/data
. - Zamontuj
/data
init
następnie montuje/data
na dysku RAM tmpfs przy użyciu parametrów, które pobiera zro.crypto.tmpfs_options
, które jest ustawione winit.rc
- Uruchom framework
vold
ustawiavold.decrypt
natrigger_restart_framework
, co kontynuuje zwykły proces uruchamiania.
Zaszyfruj istniejące urządzenie
Tak się dzieje, gdy szyfrujesz niezaszyfrowane urządzenie z Androidem K lub starszym, które zostało zmigrowane do L.
Proces ten jest inicjowany przez użytkownika i jest określany w kodzie jako „szyfrowanie w miejscu”. Gdy użytkownik zdecyduje się zaszyfrować urządzenie, interfejs użytkownika sprawdza, czy bateria jest w pełni naładowana, a zasilacz sieciowy jest podłączony, aby zapewnić wystarczającą moc do zakończenia procesu szyfrowania.
Ostrzeżenie: Jeśli w urządzeniu rozładuje się zasilanie i wyłączy się przed zakończeniem szyfrowania, dane pliku pozostaną w stanie częściowo zaszyfrowanym. Urządzenie musi zostać zresetowane do ustawień fabrycznych, a wszystkie dane zostaną utracone.
Aby włączyć szyfrowanie w miejscu, vold
uruchamia pętlę, aby odczytać każdy sektor prawdziwego urządzenia blokowego, a następnie zapisać go na urządzeniu blokowym krypto. vold
sprawdza, czy sektor jest używany przed jego odczytaniem i zapisaniem, co sprawia, że szyfrowanie jest znacznie szybsze na nowym urządzeniu, które ma niewiele danych lub nie ma ich wcale.
Stan urządzenia : ustaw ro.crypto.state = "unencrypted"
i wykonaj wyzwalacz init
on nonencrypted
, aby kontynuować uruchamianie.
- Sprawdź hasło
Interfejs użytkownika wywołuje
vold
za pomocą poleceniacryptfs enablecrypto inplace
, gdziepasswd
to hasło użytkownika do ekranu blokady. - Zdejmij ramę
vold
sprawdza błędy, zwraca -1, jeśli nie może zaszyfrować, i wypisuje przyczynę w dzienniku. Jeśli może szyfrować, ustawia właściwośćvold.decrypt
natrigger_shutdown_framework
. To powoduje, żeinit.rc
zatrzymuje usługi w klasachlate_start
imain
. - Utwórz stopkę kryptowalutową
- Utwórz plik nawigacyjny
- Ponowne uruchomienie
- Wykryj plik nawigacyjny
- Rozpocznij szyfrowanie
/data
następnie
vold
konfiguruje mapowanie kryptograficzne, które tworzy wirtualne urządzenie blokowe kryptograficzne, które odwzorowuje rzeczywiste urządzenie blokowe, ale szyfruje każdy sektor podczas jego zapisywania i deszyfruje każdy sektor podczas odczytu.vold
następnie tworzy i zapisuje metadane kryptograficzne. - Podczas szyfrowania zamontuj tmpfs
vold
montuje plik tmpfs/data
(używając opcji tmpfs zro.crypto.tmpfs_options
) i ustawia właściwośćvold.encrypt_progress
na 0.vold
przygotowuje plik tmpfs/data
do uruchomienia zaszyfrowanego systemu i ustawia właściwośćvold.decrypt
na:trigger_restart_min_framework
- Przywołaj ramy, aby pokazać postęp
trigger_restart_min_framework
powoduje, żeinit.rc
uruchamiamain
klasę usług. Gdy struktura zauważy, żevold.encrypt_progress
jest ustawiona na 0, wyświetla interfejs paska postępu, który co pięć sekund wysyła zapytania dotyczące tej właściwości i aktualizuje pasek postępu. Pętla szyfrowania aktualizuje plikvold.encrypt_progress
za każdym razem, gdy szyfruje kolejny procent partycji. - Gdy
/data
jest zaszyfrowany, zaktualizuj stopkę kryptograficznąPo pomyślnym zaszyfrowaniu
/data
vold
czyści flagęENCRYPTION_IN_PROGRESS
w metadanych.Kiedy urządzenie zostanie pomyślnie odblokowane, hasło zostanie użyte do zaszyfrowania klucza głównego, a stopka kryptowaluty zostanie zaktualizowana.
Jeśli z jakiegoś powodu ponowne uruchomienie nie powiedzie się,
vold
ustawia właściwośćvold.encrypt_progress
naerror_reboot_failed
, a interfejs użytkownika powinien wyświetlić komunikat proszący użytkownika o naciśnięcie przycisku w celu ponownego uruchomienia. Nie oczekuje się, że kiedykolwiek to nastąpi.
Uruchamianie zaszyfrowanego urządzenia z domyślnym szyfrowaniem
Tak się dzieje, gdy uruchamiasz zaszyfrowane urządzenie bez hasła. Ponieważ urządzenia z systemem Android 5.0 są szyfrowane przy pierwszym uruchomieniu, nie należy ustawiać 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ż nie można zamontować
/data
i ustawiono jedną z flagencryptable
lubforceencrypt
.vold
ustawiavold.decrypt
natrigger_default_encryption
, co uruchamia domyślną usługędefaultcrypto
.trigger_default_encryption
sprawdza typ szyfrowania, aby zobaczyć, czy/data
jest szyfrowany z hasłem czy bez. - Odszyfruj /dane
Tworzy urządzenie
dm-crypt
na urządzeniu blokowym, dzięki czemu urządzenie jest gotowe do użycia. - Zamontuj /dane
vold
następnie montuje odszyfrowaną partycję real/data
i przygotowuje nową partycję. Ustawia właściwośćvold.post_fs_data_done
na 0, a następnie ustawiavold.decrypt
natrigger_post_fs_data
. To powoduje, żeinit.rc
uruchamia swoje poleceniapost-fs-data
. Utworzą wszelkie niezbędne katalogi lub linki, a następnie ustawiąvold.post_fs_data_done
na 1.Gdy
vold
zobaczy 1 w tej właściwości, ustawia właściwośćvold.decrypt
na:trigger_restart_framework.
To powoduje, żeinit.rc
ponownie uruchamia usługi w klasiemain
, a także uruchamia usługi w klasielate_start
po raz pierwszy od startu systemu. - Uruchom framework
Teraz framework uruchamia wszystkie swoje usługi przy użyciu odszyfrowanego pliku
/data
i system jest gotowy do użycia.
Uruchamianie zaszyfrowanego urządzenia bez domyślnego szyfrowania
Tak się dzieje, gdy uruchamiasz zaszyfrowane urządzenie, które ma ustawione hasło. Hasłem urządzenia może być kod PIN, wzór lub hasło.
- Wykryj zaszyfrowane urządzenie za pomocą hasła
Wykryj, że urządzenie z Androidem jest zaszyfrowane, ponieważ flaga
ro.crypto.state = "encrypted"
vold
ustawiavold.decrypt
natrigger_restart_min_framework
, ponieważ/data
jest szyfrowane hasłem. - Zamontuj 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 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-cyfrowa liczba szesnastkowa ASCII poprzedzona 0x)
-
- Uruchom platformę, aby wyświetlić monit o hasło
Struktura uruchamia się i widzi, że
vold.decrypt
jest ustawiony natrigger_restart_min_framework
. Mówi to platformie, że ładuje się z dysku tmpfs/data
i musi uzyskać hasło użytkownika.Najpierw jednak musi upewnić się, że dysk został odpowiednio zaszyfrowany. Wysyła polecenie
cryptfs cryptocomplete
dovold
.vold
zwraca 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, szukając w metadanych kryptograficznych flagiCRYPTO_ENCRYPTION_IN_PROGRESS
. Jeśli jest ustawione, proces szyfrowania został przerwany i na urządzeniu nie ma żadnych użytecznych danych. Jeślivold
zwróci błąd, interfejs użytkownika powinien wyświetlić użytkownikowi komunikat o ponownym uruchomieniu i przywróceniu ustawień fabrycznych urządzenia oraz dać użytkownikowi przycisk do naciśnięcia, aby to zrobić. - Odszyfruj dane za pomocą hasła
Gdy
cryptfs cryptocomplete
zakończy się pomyślnie, platforma wyświetla interfejs użytkownika z prośbą o podanie hasła dysku. Interfejs użytkownika sprawdza hasło, wysyłając poleceniecryptfs checkpw
dovold
. Jeśli hasło jest poprawne (co zostało ustalone poprzez pomyślne zamontowanie odszyfrowanego pliku/data
w lokalizacji tymczasowej, a następnie jego odmontowanie),vold
zapisuje nazwę odszyfrowanego urządzenia blokowego we właściwościro.crypto.fs_crypto_blkdev
i zwraca status 0 do interfejsu użytkownika . Jeśli hasło jest nieprawidłowe, zwraca -1 do interfejsu użytkownika. - Zatrzymaj framework
Interfejs użytkownika wyświetla grafikę rozruchową kryptografii, a następnie wywołuje
vold
za pomocą poleceniacryptfs restart
.vold
ustawia właściwośćvold.decrypt
natrigger_reset_main
, co powoduje, żeinit.rc
wykonuje polecenieclass_reset main
. Zatrzymuje to wszystkie usługi w klasie głównej, co pozwala na odmontowanie pliku tmpfs/data
. - Zamontuj
/data
vold
następnie montuje odszyfrowaną partycję real/data
i przygotowuje nową partycję (która mogła nigdy nie zostać przygotowana, jeśli została zaszyfrowana z opcją czyszczenia, która nie jest obsługiwana w pierwszej wersji). Ustawia właściwośćvold.post_fs_data_done
na 0, a następnie ustawiavold.decrypt
natrigger_post_fs_data
. To powoduje, żeinit.rc
uruchamia swoje poleceniapost-fs-data
. Utworzą wszelkie niezbędne katalogi lub łącza, a następnie ustawiąvold.post_fs_data_done
na 1. Gdyvold
zobaczy 1 w tej właściwości, ustawia właściwośćvold.decrypt
natrigger_restart_framework
. To powoduje, żeinit.rc
ponownie uruchamia usługi w klasiemain
, a także uruchamia usługi w klasielate_start
po raz pierwszy od startu systemu. - Uruchom pełny framework
Teraz framework uruchamia wszystkie swoje usługi przy użyciu odszyfrowanego systemu plików
/data
i system jest gotowy do użycia.
Awaria
Urządzenie, którego nie można odszyfrować, może działać nieprawidłowo z kilku powodów. Uruchomienie urządzenia rozpoczyna się od normalnej serii kroków:
- Wykryj zaszyfrowane urządzenie za pomocą hasła
- Zamontuj tmpfs
- Uruchom platformę, aby wyświetlić monit o hasło
Ale po otwarciu frameworka urządzenie może napotkać pewne błędy:
- Hasło jest zgodne, ale nie może odszyfrować danych
- Użytkownik wprowadził błędne hasło 30 razy
Jeśli te błędy nie zostaną rozwiązane, poproś użytkownika o wyczyszczenie ustawień fabrycznych :
Jeśli vold
wykryje błąd podczas procesu szyfrowania i jeśli żadne dane nie zostały jeszcze zniszczone, a środowisko działa, vold
ustawia właściwość vold.encrypt_progress
na error_not_encrypted
. Interfejs użytkownika monituje użytkownika o ponowne uruchomienie komputera i ostrzega, że proces szyfrowania nigdy się nie rozpoczął. Jeśli błąd wystąpi po usunięciu frameworka, ale zanim pojawi się pasek postępu, vold
zrestartuje system. Jeśli ponowne uruchomienie się nie powiedzie, ustawia vold.encrypt_progress
na error_shutting_down
i zwraca -1; ale nie będzie nic, co mogłoby wyłapać błąd. Nie oczekuje się, że tak się stanie.
Jeśli vold
wykryje błąd podczas procesu szyfrowania, ustawia vold.encrypt_progress
na error_partially_encrypted
i zwraca -1. Interfejs użytkownika powinien następnie wyświetlić komunikat informujący, że szyfrowanie nie powiodło się, i udostępnić użytkownikowi przycisk umożliwiający przywrócenie ustawień fabrycznych urządzenia.
Przechowywanie zaszyfrowanego klucza
Zaszyfrowany klucz jest przechowywany w metadanych kryptograficznych. Kopia zapasowa sprzętu jest realizowana przy użyciu funkcji podpisywania Trusted Execution Environment (TEE). Wcześniej szyfrowaliśmy klucz główny kluczem wygenerowanym poprzez zastosowanie skryptu do hasła użytkownika i przechowywanej soli. Aby uczynić klucz odpornym na ataki typu off-box, rozszerzamy ten algorytm, podpisując wynikowy klucz przechowywanym kluczem TEE. Powstały podpis jest następnie przekształcany w klucz o odpowiedniej długości przez jeszcze jedno zastosowanie skryptu. Klucz ten jest następnie używany do szyfrowania i deszyfrowania klucza głównego. Aby zapisać ten klucz:
- Wygeneruj losowy 16-bajtowy klucz szyfrowania dysku (DEK) i 16-bajtową sól.
- Zastosuj skrypt do hasła użytkownika i sól, aby utworzyć 32-bajtowy klucz pośredni 1 (IK1).
- Pad IK1 z zerowymi bajtami odpowiadającymi rozmiarowi sprzętowego klucza prywatnego (HBK). W szczególności dopełniamy jako: 00 || IK1 || 00..00; jeden bajt zerowy, 32 bajty IK1, 223 bajty zerowe.
- Podpisz dopełniony IK1 za pomocą HBK, aby utworzyć 256-bajtowy IK2.
- Zastosuj skrypt do IK2 i soli (ta sama sól co w kroku 2), aby utworzyć 32-bajtowy IK3.
- Użyj pierwszych 16 bajtów IK3 jako KEK, a ostatnich 16 bajtów jako IV.
- Zaszyfruj DEK za pomocą AES_CBC, kluczem KEK i wektorem inicjującym 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
, a vold
ponownie szyfruje klucz główny dysku nowym hasłem.
Właściwości szyfrowania
vold
i init
komunikują się ze sobą poprzez ustawienie właściwości. Oto lista dostępnych właściwości szyfrowania.
Właściwości Volda
Nieruchomość | Opis |
---|---|
vold.decrypt trigger_encryption | Zaszyfruj dysk bez hasła. |
vold.decrypt trigger_default_encryption | Sprawdź dysk, aby sprawdzić, czy jest zaszyfrowany bez hasła. Jeśli tak, odszyfruj i zamontuj, w przeciwnym razie ustaw vold.decrypt na wyzwalacz_restart_min_framework. |
vold.decrypt trigger_reset_main | Ustaw przez vold, aby zamknąć interfejs użytkownika z prośbą o hasło dysku. |
vold.decrypt trigger_post_fs_data | Ustaw przez vold na prep /data z niezbędnymi katalogami i in. |
vold.decrypt trigger_restart_framework | Ustaw przez vold, aby uruchomić prawdziwy framework i wszystkie usługi. |
vold.decrypt trigger_shutdown_framework | Ustaw przez vold, aby zamknąć pełną platformę i rozpocząć szyfrowanie. |
vold.decrypt trigger_restart_min_framework | Ustaw przez vold, aby uruchomić interfejs paska postępu w celu szyfrowania lub monit o podanie hasła, w zależności od wartości ro.crypto.state . |
vold.encrypt_progress | Po uruchomieniu platformy, jeśli ta właściwość jest ustawiona, przejdź do trybu interfejsu użytkownika 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 | Interfejs użytkownika na pasku postępu powinien wyświetlić komunikat o niepowodzeniu szyfrowania i dać użytkownikowi możliwość przywrócenia ustawień fabrycznych urządzenia. |
vold.encrypt_progress error_reboot_failed | Interfejs użytkownika na pasku postępu powinien wyświetlić komunikat informujący o zakończeniu szyfrowania i dać użytkownikowi przycisk umożliwiający ponowne uruchomienie urządzenia. Nie oczekuje się wystąpienia tego błędu. |
vold.encrypt_progress error_not_encrypted | Interfejs użytkownika na pasku postępu powinien wyświetlić komunikat informujący, że wystąpił błąd, żadne dane nie zostały zaszyfrowane ani utracone, a także dać użytkownikowi przycisk pozwalający na ponowne uruchomienie systemu. |
vold.encrypt_progress error_shutting_down | Interfejs paska postępu nie działa, więc nie jest jasne, kto zareaguje na ten błąd. A to i tak nigdy nie powinno mieć miejsca. |
vold.post_fs_data_done 0 | Ustawiane przez vold tuż przed ustawieniem vold.decrypt na trigger_post_fs_data . |
vold.post_fs_data_done 1 | Ustawiane przez init.rc lub init.rc zaraz po zakończeniu zadania post-fs-data . |
właściwości początkowe
Nieruchomość | Opis |
---|---|
ro.crypto.fs_crypto_blkdev | Ustawiane za pomocą polecenia vold checkpw do późniejszego wykorzystania za pomocą polecenia vold restart . |
ro.crypto.state unencrypted | Ustawiane przez init , aby powiedzieć, że ten system działa z niezaszyfrowanym plikiem /data ro.crypto.state encrypted . Ustawiane przez init , aby powiedzieć, że ten system działa z zaszyfrowanym plikiem /data . |
| Te pięć właściwości jest ustawianych przez init podczas próby zamontowania /data z parametrami przekazanymi z init.rc vold używa ich do konfiguracji mapowania kryptowalut. |
ro.crypto.tmpfs_options | Ustawiane przez init.rc z opcjami, których init powinien używać podczas montowania systemu plików tmpfs /data . |
Zainicjuj działania
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