Szyfrowanie całego dysku to proces kodowania wszystkich danych użytkownika na urządzeniu z Androidem za pomocą zaszyfrowany klucz. 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 pełnego dysku zostało wprowadzone na Androidzie w wersji 4.4, a na Androidzie 5.0. 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. Tylko systemy plików ext4 i f2fs obecnie obsługują szybkie szyfrowanie.
- 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 po przywróceniu danych fabrycznych. Nowy Android 5.0 urządzenia zaszyfrowane przy pierwszym uruchomieniu nie mogą zostać przywrócone do stanu niezaszyfrowanego.
Jak działa szyfrowanie pełnego 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 powodu
szyfrowanie działa w przypadku standardu Embedded MultiMediaCard (eMMC)
podobne urządzenia Flash, które przedstawiają jądra jako blok.
urządzenia. Szyfrowanie nie jest możliwe w przypadku formatu YAFFS, który komunikuje się bezpośrednio z
Układ Flash NAND.
Algorytm szyfrowania to 128 Advanced Encryption Standard (AES) z algorytmem łańcuch bloków szyfrowania (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ą. Domyślne hasło to „default_password”. Jednak wynikowy hasz jest również podpisany przez TEE (np. TrustZone), który do szyfrowania klucza głównego wykorzystuje skrót podpisu.
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, karty lub wzoru użytkownika NIE powodują przez ponowne szyfrowanie 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. Do wywołania
funkcji szyfrowania w vold
, system używa narzędzia wiersza poleceń
Polecenia cryptfs
na urządzeniu 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
. Do
jeśli nie uda się rozwiązać tej zagadki, na dysku /data
zostanie podłączony tymczasowy system plików.
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
. W tym celu wszystkie usługi
musi należeć do jednej z 3 grup: core
, main
i
late_start
core
: nigdy nie wyłączaj się po uruchomieniu.main
: wyłącz i uruchom 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 wyłączyć i ponownie uruchomić usługi, użyj 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ą na żądanieclass_start
.
Przepływy
W przypadku zaszyfrowanego urządzenia są 4 przepływy. Urządzenie jest szyfrowane tylko raz a następnie będzie przebiegał normalnie.
- Szyfrowanie wcześniej niezaszyfrowanego urządzenia:
- Zaszyfruj nowe urządzenie za pomocą
forceencrypt
: obowiązkowe szyfrowanie przy pierwszym uruchomieniu (na Androidzie L). - Zaszyfruj istniejące urządzenie: szyfrowanie inicjowane przez użytkownika (Android K i starsze).
- Zaszyfruj nowe urządzenie 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 przy użyciu hasła: uruchamianie zaszyfrowanego urządzenia, które ma ustawione hasło.
Oprócz tych procesów urządzenie może również nie zaszyfrować /data
.
Poniżej szczegółowo opisujemy każdy z tych procesów.
Szyfrowanie nowego urządzenia przy użyciu wymuszania szyfrowania
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 spowoduje, żevold
zaszyfruje plik/data
bez hasła. Nie ustawiono żadnej wartości, ponieważ powinno to być nowe urządzenie. - Montaż tmpfs
vold
podłącza tmpfs/data
(przy użyciu 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 usługęvold.decrypt
na:trigger_restart_min_framework
- Otwórz schemat, aby wyświetlić postępy.
Na urządzeniu nie ma praktycznie danych do zaszyfrowania, dlatego pasek postępu będzie często nie są tak naprawdę widoczne, ponieważ szyfrowanie odbywa się bardzo szybko. Zobacz Zaszyfruj istniejące urządzenie, aby uzyskać więcej szczegóły interfejsu.
- Kiedy
/data
jest zaszyfrowany, usuń tę platformę.vold
ustawia wartośćvold.decrypt
natrigger_default_encryption
, która rozpoczyna siędefaultcrypto
. (Rozpocznie się procedura podłączenia domyślnie zaszyfrowanych danych użytkownika).trigger_default_encryption
sprawdza typ szyfrowania, aby sprawdzić, czy/data
jest zaszyfrowany z użyciem protokołu 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
. - Pod górę
/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
ustawia wartośćvold.decrypt
natrigger_restart_framework
, która będzie kontynuowana jak zwykle. proces tworzenia konta.
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 zastępujące, vold
uruchamia pętlę odczytu każdego z nich
w sektorze rzeczywistego urządzenia blokowego, a następnie zapisz go
do urządzenia blokującego kryptowaluty. Funkcja vold
sprawdza, czy określony sektor
przed przeczytaniem i pisaniem. Dzięki temu
na nowych urządzeniach, które mają niewiele danych lub nie mają ich wcale.
Stan urządzenia: ustaw ro.crypto.state = "unencrypted"
.
i wykonaj aktywator on nonencrypted
init
, aby kontynuować uruchamianie.
- Sprawdź hasło
Interfejs wywołuje
vold
przy użyciu poleceniacryptfs enablecrypto inplace
gdziepasswd
to hasło do ekranu blokady użytkownika. - Wyłączenie zasad
vold
sprawdza, czy nie ma błędów, zwraca wartość -1, jeśli nie można zaszyfrować, i drukuje przyczynę w dzienniku. Jeśli może zaszyfrować, ustawia właściwośćvold.decrypt
do:trigger_shutdown_framework
. To sprawia, żeinit.rc
: zatrzymują usługi na zajęciachlate_start
imain
. - Tworzenie stopki krypto
- Tworzenie pliku menu nawigacyjnego
- Uruchom ponownie
- Wykryj plik menu nawigacyjnego
- Rozpocznij szyfrowanie
/data
vold
konfiguruje mapowanie kryptograficzne, co powoduje utworzenie wirtualnego urządzenia blokującego kryptowaluty. która jest mapowana na urządzenie blokowe, ale szyfruje każdy sektor podczas zapisu i odszyfrowuje każdy odczytywany sektor.vold
następnie tworzy i zapisuje nie ma metadanych kryptograficznych. - Podczas szyfrowania podłącz 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
do uruchomić 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 sięvold.encrypt_progress
za każdym razem szyfruje kolejny procent partycji. - Gdy kod
/data
jest zaszyfrowany, zaktualizuj stopkę kryptograficznąPo 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ć go ponownie. Nie należy się spodziewać takich sytuacji w przyszłości.
Uruchamianie zaszyfrowanego urządzenia z domyślnym szyfrowaniem
Dzieje się tak, gdy uruchamiasz zaszyfrowane urządzenie bez hasła. Urządzenia z Androidem 5.0 są szyfrowane przy pierwszym uruchomieniu, więc nie powinno być żadnego ustawionego i tym samym jest to stan domyślnego szyfrowania.
- Wykryj zaszyfrowane urządzenie
/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
, która rozpoczyna siędefaultcrypto
.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, dzięki czemu urządzenie jest gotowy do użycia. - Podłączanie /dane
vold
następnie podłącza odszyfrowaną prawdziwą 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
. To sprawia, że uruchamiana jest usługainit.rc
jego poleceńpost-fs-data
. Zespół utworzy 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
do: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. - Uruchom platformę
Teraz platforma uruchamia wszystkie usługi przy użyciu odszyfrowanego pliku
/data
, a system jest gotowy do użycia.
Uruchamiam zaszyfrowane urządzenie bez domyślnego szyfrowania
Tak się dzieje, gdy uruchamiasz zaszyfrowane urządzenie z zestawem hasła. 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
, bo/data
to zaszyfrowane hasłem. - 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-cyfrowa liczba szesnastkowa ASCII poprzedzona 0x)
- Uruchom platformę do wyświetlania prośby o hasło
Platforma uruchamia się i widzi, że ustawiona jest
vold.decrypt
trigger_restart_min_framework
Informują one platformę, że jest to na dysku/data
tmpfs i musi uzyskać hasło użytkownika.Najpierw jednak upewnij się, że dysk został prawidłowo zaszyfrowany. it wysyła polecenie
cryptfs cryptocomplete
do:vold
.vold
zwraca wartość 0, jeśli szyfrowanie zostało ukończone, -1 w przypadku błędu wewnętrznego lub -2, jeśli szyfrowanie nie zostało ukończone.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
dotrigger_reset_main
, co powodujeinit.rc
, aby wykonaćclass_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ć gotowa, 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 ustawia wartośćvold.decrypt
natrigger_post_fs_data
. To powodujeinit.rc
, aby uruchomić poleceniapost-fs-data
. Będą utwórz potrzebne katalogi lub linki, a następnievold.post_fs_data_done
do 1. Gdyvold
zobaczy 1 w ustawia on 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 korzystanie z pełnej platformy
Teraz platforma uruchamia wszystkie usługi za pomocą odszyfrowanego
/data
systemu plików i jest gotowy do użycia.
Błąd
Urządzenie, którego nie uda się odszyfrować, może z kilku powodów mieć problemy z odszyfrowaniem. Urządzenie rozpoczyna się od normalnej serii kroków podczas uruchamiania:
- Wykrywaj zaszyfrowane urządzenie za pomocą hasła
- Góra tmpfs
- Uruchom platformę do wyświetlania prośby o hasło
Jednak po otwarciu platformy mogą wystąpić pewne błędy:
- Hasło jest zgodne, ale nie można odszyfrować danych
- użytkownik 30 razy wpisał nieprawidłowe hasło;
Jeśli te błędy nie zostaną usunięte, poproś użytkownika o wyczyszczenie pamięci ustawień fabrycznych:
Jeśli vold
wykryje błąd podczas szyfrowania oraz jeśli
żadne dane nie zostały jeszcze zniszczone i platforma jest gotowa, vold
zbiorów
usługę vold.encrypt_progress
do usługi 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. To nie powinno 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ę wykonać testu i udostępnić użytkownikowi przycisk przywracania urządzenia do ustawień fabrycznych.
Przechowywanie zaszyfrowanego klucza
Zaszyfrowany klucz jest przechowywany w metadanych kryptograficznych. Kopia zapasowa sprzętu to wdrożenie przy użyciu funkcji podpisywania TEE (Trusted Execution Environment). Wcześniej szyfrowaliśmy klucz główny kluczem wygenerowanym przez zastosowanie szyfrowania z hasłem użytkownika i zapisaną sól. Aby klucz był odporny przed takimi atakami, rozszerzamy ten algorytm, podpisując powstały klucz zapisanym kluczem TEE. Powstały podpis jest następnie przekształcany w odpowiednią przez jeszcze jedną aplikację scrypt. Ten klucz jest następnie używany do szyfrowania i odszyfrować klucz główny. 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 szyfrowanie IK2 i sól (taką samą jak w kroku 2), aby uzyskać 32-bajtowy kod IK3.
- Użyj pierwszych 16 bajtów IK3 jako klucza KEK, a ostatnich 16 bajtów jako IV.
- Szyfrowanie DEK przy użyciu AES_CBC z kluczem KEK i wektorem inicjującym IV.
Zmiana hasła
Gdy użytkownik zmieni lub usunie hasło w ustawieniach, interfejs wyśle do
polecenie cryptfs changepw
do vold
,
vold
ponownie szyfruje główny klucz dysku nowym hasłem.
Właściwości szyfrowania
vold
i init
komunikują się ze sobą za pomocą
ustawień 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 |
Szyfruj dysk bez hasła. |
vold.decrypt trigger_default_encryption |
Sprawdź, czy dysk jest zaszyfrowany bez hasła.
Jeśli tak, odszyfruj i podłącz go.
W przeciwnym razie ustaw wartość vold.decrypt na aktywator_restart_min_framework. |
vold.decrypt trigger_reset_main |
Ustawiona przez vold, aby wyłączyć interfejs użytkownika z prośbą o hasło do dysku. |
vold.decrypt trigger_post_fs_data |
Ustawione przez vold, aby przygotować dla /data potrzebne katalogi 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 wyłączenie pełnej platformy w celu rozpoczęcia szyfrowania. |
vold.decrypt trigger_restart_min_framework |
Ustawione przez Vold, aby uruchomić
interfejs paska postępu do szyfrowania lub
prośba o podanie hasła w zależności od
wartość 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 powinien wyświetlanie ustawionej wartości procentowej. |
vold.encrypt_progress error_partially_encrypted |
Interfejs na pasku postępu powinien wyświetlać komunikat o niepowodzeniu szyfrowania. umożliwiać użytkownikowi przywrócić ustawienia fabryczne urządzenia. |
vold.encrypt_progress error_reboot_failed |
Interfejs paska postępu powinien wyświetlać komunikat informujący o szyfrowaniu i umożliwić użytkownikowi zrestartowanie 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 zareaguje. do tego błędu. A to nigdy nie powinno się wydarzyć. |
vold.post_fs_data_done 0 |
Ustawione przez użytkownika vold tuż przed ustawieniem vold.decrypt
do: 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
za pomocą polecenia vold restart . |
ro.crypto.state unencrypted |
Ustawione przez init oznacza, że ten system działa z nieszyfrowaniem
/data ro.crypto.state encrypted Ustawione przez init
ten system działa z zaszyfrowanym kodem /data . |
|
Te 5 właściwości jest ustawianych przez
init , gdy próbuje podłączyć /data z parametrami przekazywanymi z
init.rc vold używa ich do konfigurowania mapowania kryptograficznego. |
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. |
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