Szyfrowanie całego dysku to proces kodowania wszystkich danych użytkownika na urządzeniu z systemem Android 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 do systemu Android w wersji 4.4, ale system Android 5.0 wprowadził te nowe funkcje:
- Utworzono szybkie szyfrowanie, które szyfruje tylko używane bloki na partycji danych, aby uniknąć długiego czasu uruchamiania. Tylko systemy plików ext4 i f2fs obsługują obecnie szybkie szyfrowanie.
- 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 funkcji podpisywania Trusted Execution Environment (TEE) (takiej jak TrustZone). Zobacz Przechowywanie zaszyfrowanego klucza, aby uzyskać więcej informacji.
Uwaga: urządzenia zaktualizowane do Androida 5.0, a następnie zaszyfrowane, mogą zostać przywrócone do stanu nieszyfrowanego przez przywrócenie danych fabrycznych. Nowe urządzenia z Androidem 5.0 zaszyfrowane przy pierwszym uruchomieniu nie mogą zostać przywrócone 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
, który jest funkcją jądra, która działa w warstwie urządzenia blokowego. Z tego powodu szyfrowanie działa z Embedded MultiMediaCard ( eMMC) i podobnymi urządzeniami flash, które prezentują się jądru 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 łańcuchem bloków szyfrów (CBC) i ESSIV:SHA256. Klucz główny jest szyfrowany 128-bitowym algorytmem AES za pośrednictwem połączeń z biblioteką OpenSSL. Musisz użyć 128 bitów lub więcej dla klucza (przy czym 256 jest opcjonalnym).
Uwaga: producenci OEM mogą używać 128-bitowego lub wyższego klucza do szyfrowania klucza głównego.
W wersji Android 5.0 istnieją cztery rodzaje stanów szyfrowania:
- domyślna
- 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: „default_password” Jednak wynikowy skrót jest również podpisany przez TEE (np. TrustZone), który używa skrótu podpisu do zaszyfrowania klucza głównego.
Możesz znaleźć domyślne hasło zdefiniowane w pliku cryptfs.cpp projektu Android Open Source.
Gdy użytkownik ustawia kod PIN/hasło lub hasło na urządzeniu, tylko klucz 128-bitowy jest ponownie szyfrowany i przechowywany. (tj. 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 w zakresie 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, aby wykonywać zadania, takie jak raportowanie stanu, prośba o hasło lub monit o przywrócenie ustawień fabrycznych w przypadku błędu krytycznego. Aby wywołać funkcje szyfrowania w vold
, system używa poleceń checkpw
narzędzia wiersza poleceń vdc
: cryptfs
, restart
, enablecrypto
, changepw
, cryptocomplete
, verifypw
, setfield
, getfield
, mountdefaultencrypted
, getpwtype
, getpw
i clearpw
.
Aby zaszyfrować, odszyfrować lub wyczyścić /data
, nie wolno montować /data
. Jednak, aby wyświetlić dowolny interfejs użytkownika (UI), framework musi się uruchomić, a framework wymaga /data
do uruchomienia. Aby rozwiązać tę zagadkę, tymczasowy system plików jest montowany w /data
. Dzięki temu system Android może monitować o hasła, pokazywać postęp lub sugerować czyszczenie danych w razie potrzeby. Narzuca ograniczenie polegające na tym, że aby przełączyć się z tymczasowego systemu plików na prawdziwy system plików /data
, system musi zatrzymać każdy proces z otwartymi plikami w tymczasowym systemie plików i ponownie uruchomić te procesy w rzeczywistym 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 i uruchom ponownie po wprowadzeniu hasła dysku. -
late_start
: nie uruchamia się, dopóki/data
nie zostanie odszyfrowana i zamontowana.
Aby wywołać te akcje, właściwość vold.decrypt
jest ustawiona na różne strings . Aby zabić i ponownie uruchomić usługi, polecenia init
to:
-
class_reset
: Zatrzymuje usługę, ale umożliwia 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ąclass_start
.
Przepływy
Istnieją cztery przepływy dla zaszyfrowanego urządzenia. Urządzenie jest szyfrowane tylko raz, a następnie następuje normalny przepływ rozruchu.
- Zaszyfruj wcześniej niezaszyfrowane urządzenie:
- Zaszyfruj nowe urządzenie za pomocą
forceencrypt
: szyfrowanie obowiązkowe przy pierwszym uruchomieniu (od Androida L). - Zaszyfruj istniejące urządzenie: Szyfrowanie inicjowane przez użytkownika (Android K i wcześniejsze).
- Zaszyfruj nowe urządzenie za pomocą
- Uruchom zaszyfrowane urządzenie:
- Uruchamianie zaszyfrowanego urządzenia bez hasła: uruchamianie zaszyfrowanego urządzenia bez ustawionego hasła (dotyczy urządzeń z systemem Android 5.0 lub 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 zaszyfrować /data
. Każdy z przepływów został szczegółowo wyjaśniony poniżej.
Zaszyfruj nowe urządzenie za pomocą forceencrypt
To jest normalne pierwsze uruchomienie urządzenia z systemem Android 5.0.
- Wykryj niezaszyfrowany system plików z flagą
forceencrypt
/data
nie jest zaszyfrowany, ale musi być, ponieważ nakazuje toforceencrypt
. Odmontuj/data
. - Rozpocznij szyfrowanie
/data
vold.decrypt = "trigger_encryption"
wyzwalainit.rc
, który spowoduje, żevold
zaszyfruje/data
bez hasła. (Żadna nie jest ustawiona, ponieważ powinno to być nowe urządzenie). - 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
- Stwórz ramy, aby pokazać postęp
Ponieważ urządzenie nie ma praktycznie żadnych danych do zaszyfrowania, pasek postępu często nie pojawia się, ponieważ szyfrowanie odbywa się tak szybko. Zobacz Szyfrowanie istniejącego urządzenia, aby uzyskać więcej informacji o interfejsie postępu.
- Gdy
/data
jest zaszyfrowana, wyłącz platformęvold
ustawiavold.decrypt
natrigger_default_encryption
, który uruchamia usługędefaultcrypto
. (To rozpoczyna poniższy przepływ w celu zamontowania domyślnych zaszyfrowanych danych użytkownika.)trigger_default_encryption
sprawdza typ szyfrowania, aby zobaczyć, czy/data
jest zaszyfrowana z hasłem, czy bez. Ponieważ urządzenia z Androidem 5.0 są szyfrowane przy pierwszym uruchomieniu, nie powinno być ustawionego hasła; dlatego deszyfrujemy i montujemy/data
. - Zamontuj
/data
init
następnie montuje/data
na RAMDisk tmpfs używając parametrów pobranych zro.crypto.tmpfs_options
, który jest ustawiony winit.rc
. - Uruchom framework
Ustaw
vold
natrigger_restart_framework
, który kontynuuje zwykły proces uruchamiania.
Zaszyfruj istniejące urządzenie
Tak się dzieje, gdy zaszyfrujesz niezaszyfrowane urządzenie z Androidem K lub starszym, które zostało przeniesione do L.
Ten proces jest inicjowany przez użytkownika i jest określany jako „szyfrowanie w miejscu” w kodzie. Gdy użytkownik zdecyduje się zaszyfrować urządzenie, interfejs użytkownika upewni się, że 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 urządzenie wyczerpie się 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 rzeczywistego urządzenia blokowego, a następnie zapisać go na urządzeniu bloku kryptograficznego. vold
sprawdza, czy sektor jest w użyciu, zanim go odczyta i zapisze, co znacznie przyspiesza szyfrowanie na nowym urządzeniu, które ma niewiele danych lub nie ma ich wcale.
Stan urządzenia : Ustaw ro.crypto.state = "unencrypted"
i uruchom wyzwalacz init
on nonencrypted
, aby kontynuować uruchamianie.
- Sprawdź hasło
Interfejs użytkownika wywołuje
vold
za pomocą poleceniacryptfs enablecrypto inplace
gdziepasswd
jest hasłem blokady ekranu użytkownika. - Zdejmij ramy
vold
sprawdza, czy nie ma błędów, zwraca -1, jeśli nie może zaszyfrować, i wyświetla przyczynę w dzienniku. Jeśli może szyfrować, ustawia właściwośćvold.decrypt
natrigger_shutdown_framework
. Powoduje to, żeinit.rc
zatrzymuje usługi w klasachlate_start
imain
. - Utwórz stopkę krypto
- Utwórz plik nawigacyjny
- Restart
- Wykryj plik nawigacyjny
- Rozpocznij szyfrowanie
/data
vold
następnie konfiguruje mapowanie kryptograficzne, które tworzy wirtualne urządzenie blokowe kryptograficzne, które mapuje na rzeczywiste urządzenie blokowe, ale szyfruje każdy sektor podczas jego zapisywania i odszyfrowuje każdy sektor podczas odczytu.vold
następnie 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
- Stwórz ramy, aby pokazać postęp
trigger_restart_min_framework
powoduje, żeinit.rc
uruchamiamain
klasę usług. Gdy framework widzi, żevold.encrypt_progress
jest ustawiony na 0, wyświetla interfejs użytkownika paska postępu, który wysyła zapytanie do tej właściwości co pięć sekund i aktualizuje pasek postępu. Pętla szyfrowania aktualizujevold.encrypt_progress
każdym razem, gdy szyfruje kolejny procent partycji. - Gdy
/data
jest zaszyfrowana, zaktualizuj stopkę kryptoGdy
/data
zostanie pomyślnie zaszyfrowana,vold
czyści flagęENCRYPTION_IN_PROGRESS
w metadanych.Gdy urządzenie zostanie pomyślnie odblokowane, hasło jest następnie używane do szyfrowania klucza głównego, a stopka krypto jest aktualizowana.
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 z prośbą o naciśnięcie przycisku w celu ponownego uruchomienia. Oczekuje się, że to się nigdy nie wydarzy.
Uruchamianie zaszyfrowanego urządzenia z domyślnym szyfrowaniem
Tak się dzieje, 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 i dlatego jest to domyślny stan szyfrowania .
- Wykryj zaszyfrowane
/data
bez hasłaWykryj, że urządzenie z systemem Android jest zaszyfrowane, ponieważ
/data
nie można zamontować i ustawiono jedną z flagencryptable
lubforceencrypt
.vold
ustawiavold.decrypt
natrigger_default_encryption
, który uruchamia usługędefaultcrypto
.trigger_default_encryption
sprawdza typ szyfrowania, aby zobaczyć, czy/data
jest zaszyfrowany 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ą rzeczywistą partycję/data
, a następnie 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, żeinit.rc
uruchamia swoje poleceniapost-fs-data
. Utworzą wszystkie niezbędne katalogi lub linki, a następnievold.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.
Powoduje to, żeinit.rc
ponownie uruchamia usługi w klasiemain
, a także uruchamia usługi w klasielate_start
po raz pierwszy od startu. - Uruchom framework
Teraz framework uruchamia wszystkie swoje usługi za pomocą odszyfrowanego
/data
, a 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ło urządzenia może być kodem PIN, wzorem lub hasłem.
- 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 zaszyfrowany 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 krypto:-
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 ASCII poprzedzony 0x)
-
- Uruchom platformę, aby poprosić o hasło
Framework uruchamia się i widzi, że
vold.decrypt
jest ustawiony natrigger_restart_min_framework
. Mówi to frameworkowi, że uruchamia się z dysku tmpfs/data
i musi uzyskać hasło użytkownika.Najpierw jednak musi się upewnić, że dysk został prawidłowo zaszyfrowany. Wysyła polecenie
cryptfs cryptocomplete
dovold
.vold
zwraca 0, jeśli szyfrowanie zakończyło się pomyślnie, -1 w przypadku błędu wewnętrznego lub -2, jeśli szyfrowanie nie zostało pomyślnie zakończone.vold
określa to, szukając w metadanych kryptograficznych flagiCRYPTO_ENCRYPTION_IN_PROGRESS
. Jeśli jest ustawiona, proces szyfrowania został przerwany i na urządzeniu nie ma użytecznych danych. Jeślivold
zwróci błąd, interfejs użytkownika powinien wyświetlić komunikat dla użytkownika, aby ponownie uruchomić i przywrócić ustawienia fabryczne urządzenia, a także dać użytkownikowi przycisk do naciśnięcia, aby to zrobić. - Odszyfruj dane hasłem
Po pomyślnym zakończeniu
cryptfs cryptocomplete
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 jest określane przez pomyślne zamontowanie odszyfrowanego/data
w tymczasowej lokalizacji, 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 ramy
Interfejs użytkownika wyświetla grafikę rozruchową krypto, a następnie wywołuje
vold
poleceniemcryptfs restart
.vold
ustawia właściwośćvold.decrypt
natrigger_reset_main
, co powoduje , żeinit.rc
wykonujeclass_reset main
. Powoduje to zatrzymanie wszystkich usług w głównej klasie, co pozwala na odmontowanie tmpfs/data
. - Zamontuj
/data
vold
następnie montuje odszyfrowaną rzeczywistą partycję/data
i przygotowuje nową partycję (która mogła nigdy nie zostać przygotowana, gdyby była zaszyfrowana za pomocą opcji czyszczenia, która nie jest obsługiwana w pierwszym wydaniu). Ustawia właściwośćvold.post_fs_data_done
na 0, a następnie ustawiavold.decrypt
natrigger_post_fs_data
. Powoduje to, żeinit.rc
uruchamia swoje poleceniapost-fs-data
. Utworzą wszystkie niezbędne katalogi lub linki, a następnievold.post_fs_data_done
na 1. Gdyvold
zobaczy 1 w tej właściwości, ustawia właściwośćvold.decrypt
natrigger_restart_framework
. Powoduje to, żeinit.rc
ponownie uruchamia usługi w klasiemain
, a także uruchamia usługi w klasielate_start
po raz pierwszy od startu. - Uruchom pełną platformę
Teraz framework uruchamia wszystkie swoje usługi przy użyciu odszyfrowanego systemu plików
/data
, a system jest gotowy do użycia.
Niepowodzenie
Urządzenie, które nie odszyfruje, może być niepoprawne z kilku powodów. Urządzenie zaczyna się od normalnej serii kroków do uruchomienia:
- Wykryj zaszyfrowane urządzenie za pomocą hasła
- Zamontuj tmpfs
- Uruchom platformę, aby poprosić o hasło
Ale po otwarciu frameworka urządzenie może napotkać pewne błędy:
- Hasło pasuje, ale nie można odszyfrować danych
- Użytkownik 30 razy wprowadza błędne hasło
Jeśli te błędy nie zostaną rozwiązane, poproś użytkownika o wyczyszczenie danych fabrycznych :
Jeśli vold
wykryje błąd podczas procesu szyfrowania, a żadne dane nie zostały jeszcze zniszczone, a platforma działa, vold
ustawia właściwość vold.encrypt_progress
na error_not_encrypted
. Interfejs użytkownika monituje użytkownika o ponowne uruchomienie i ostrzega go, że proces szyfrowania nigdy się nie rozpoczął. Jeśli błąd wystąpi po zerwaniu frameworka, ale przed uruchomieniem paska 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 co wyłapać błędu. 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 przywracania ustawień fabrycznych urządzenia.
Przechowywanie zaszyfrowanego klucza
Zaszyfrowany klucz jest przechowywany w metadanych krypto. Tworzenie kopii zapasowych sprzętu jest realizowane przy użyciu funkcji podpisywania Trusted Execution Environment (TEE). Wcześniej zaszyfrowaliśmy klucz główny za pomocą klucza wygenerowanego przez zastosowanie scrypt do hasła użytkownika i przechowywanej soli. Aby klucz był odporny na ataki off-box, rozszerzamy ten algorytm, podpisując wynikowy klucz przechowywanym kluczem TEE. Powstała sygnatura jest następnie przekształcana w klucz o odpowiedniej długości przez jeszcze jedną aplikację scrypt. Ten klucz jest następnie używany do szyfrowania i odszyfrowywania klucza głównego. Aby zapisać ten klucz:
- Generuj losowy 16-bajtowy klucz szyfrowania dysku (DEK) i 16-bajtową sól.
- Zastosuj scrypt do hasła użytkownika i soli, aby wygenerować 32-bajtowy klucz pośredni 1 (IK1).
- Nakładka IK1 z zerowymi bajtami do rozmiaru klucza prywatnego związanego ze sprzętem (HBK). Konkretnie, dopasowujemy jako: 00 || IK1 || 00.00; jeden bajt zerowy, 32 bajty IK1, 223 bajty zerowe.
- Znak wypełniony IK1 z HBK, aby utworzyć 256-bajtowy IK2.
- Zastosuj scrypt do IK2 i sól (taka sama sól jak 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 przy użyciu nowego hasła.
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 zobaczyć, czy jest zaszyfrowany bez hasła. Jeśli tak, odszyfruj i zamontuj, w przeciwnym razie ustaw vold.decrypt na trigger_restart_min_framework. |
vold.decrypt trigger_reset_main | Ustaw przez vold, aby zamknąć interfejs użytkownika, prosząc o hasło dysku. |
vold.decrypt trigger_post_fs_data | Ustaw przez vold prep /data z niezbędnymi katalogami, et al. |
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 użytkownika paska postępu do szyfrowania lub monit 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, przejdź do trybu interfejsu użytkownika paska postępu. |
vold.encrypt_progress 0 to 100 | Interfejs użytkownika paska postępu powinien wyświetlać ustawioną wartość procentową. |
vold.encrypt_progress error_partially_encrypted | Interfejs użytkownika paska postępu powinien wyświetlać komunikat, że szyfrowanie nie powiodło się, i dać użytkownikowi możliwość przywrócenia urządzenia do ustawień fabrycznych. |
vold.encrypt_progress error_reboot_failed | Interfejs użytkownika paska postępu powinien wyświetlać komunikat informujący o zakończeniu szyfrowania i dać użytkownikowi przycisk ponownego uruchomienia urządzenia. Ten błąd nie powinien wystąpić. |
vold.encrypt_progress error_not_encrypted | Interfejs użytkownika paska postępu powinien wyświetlać komunikat informujący o wystąpieniu błędu, żadne dane nie zostały zaszyfrowane ani utracone, a także dać użytkownikowi przycisk ponownego uruchomienia 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. I tak nigdy nie powinno się zdarzyć. |
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 | Ustawiony przez komendę vold checkpw do późniejszego użycia przez komendę vold restart . |
ro.crypto.state unencrypted | Ustawione przez init , aby powiedzieć, że ten system działa z niezaszyfrowanym /data ro.crypto.state encrypted . Ustaw przez init , aby powiedzieć, że ten system działa z zaszyfrowanym /data . |
| Te pięć właściwości jest ustawianych przez init , gdy próbuje zamontować /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 . |
Rozpocznij 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