Szyfrowanie na pełnym dysku

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 żądanie class_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).
  • 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.

  1. Wykrywanie niezaszyfrowanego systemu plików za pomocą flagi forceencrypt

    Plik /data nie jest zaszyfrowany, ale wymaga tego ustawienia przez system forceencrypt. Odłącz urządzenie /data.

  2. Rozpocznij szyfrowanie /data

    vold.decrypt = "trigger_encryption" wyzwala init.rc, co spowoduje, że vold zaszyfruje plik /data bez hasła. Nie ustawiono żadnej wartości, ponieważ powinno to być nowe urządzenie.

  3. Montaż tmpfs

    vold podłącza tmpfs /data (przy użyciu opcji tmpfs z ro.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

  4. 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.

  5. Kiedy /data jest zaszyfrowany, usuń tę platformę.

    vold ustawia wartość vold.decrypt na trigger_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.

  6. Pod górę /data

    init podłącza następnie /data na dysku RAM Disk tmpfs za pomocą pobieranych przez niego parametrów z parametru ro.crypto.tmpfs_options, który jest ustawiony w aplikacji init.rc.

  7. Uruchom platformę

    vold ustawia wartość vold.decrypt na trigger_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.

  1. Sprawdź hasło

    Interfejs wywołuje vold przy użyciu polecenia cryptfs enablecrypto inplace gdzie passwd to hasło do ekranu blokady użytkownika.

  2. 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, że init.rc: zatrzymują usługi na zajęciach late_start i main.

  3. Tworzenie stopki krypto
  4. Tworzenie pliku menu nawigacyjnego
  5. Uruchom ponownie
  6. Wykryj plik menu nawigacyjnego
  7. 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.

  8. Podczas szyfrowania podłącz tmpfs

    vold podłącza tmpfs /data (przy użyciu opcji tmpfs) od ro.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ści vold.decrypt na: trigger_restart_min_framework

  9. Otwórz schemat, aby wyświetlić postępy.

    trigger_restart_min_framework powoduje, że init.rc do uruchomić klasę usług main. Gdy platforma wykryje, że vold.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.

  10. 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 do error_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.

  1. Wykryj zaszyfrowane urządzenie /data bez hasła

    Wykrywa, że urządzenie z Androidem jest zaszyfrowane, ponieważ /data nie można podłączyć, a jedna z flag encryptable lub Ustawienie forceencrypt jest ustawione.

    vold ustawia wartość vold.decrypt na trigger_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.

  2. Odszyfrowywanie /data

    Tworzy urządzenie dm-crypt na urządzeniu blokowym, dzięki czemu urządzenie jest gotowy do użycia.

  3. 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 ustawia vold.decrypt do: trigger_post_fs_data. To sprawia, że uruchamiana jest usługa init.rc jego poleceń post-fs-data. Zespół utworzy wszelkie niezbędne katalogi, lub linków, a następnie ustaw vold.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, że init.rc uruchamia usługi w klasie main oraz ponownie uruchomić usługi w klasie late_start przez pierwszą czasu od uruchomienia.

  4. 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.

  1. 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 na trigger_restart_min_framework, bo /data to zaszyfrowane hasłem.

  2. Montaż tmpfs

    init ustawia 5 właściwości, aby zapisać początkowe opcje podłączenia podana dla parametru /data z parametrami przekazywanymi z init.rc. vold używa tych właściwości do skonfigurowania mapowania kryptograficznego:

    1. ro.crypto.fs_type
    2. ro.crypto.fs_real_blkdev
    3. ro.crypto.fs_mnt_point
    4. ro.crypto.fs_options
    5. ro.crypto.fs_flags (8-cyfrowa liczba szesnastkowa ASCII poprzedzona 0x)
  3. 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ące CRYPTO_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śli vold 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.

  4. 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 polecenie cryptfs 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ści ro.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.

  5. Zatrzymaj platformę

    Interfejs wyświetla grafikę rozruchową kryptografii, a następnie wywołuje vold z użyciem tego kodu. polecenie cryptfs restart. vold ustawia właściwość vold.decrypt do trigger_reset_main, co powoduje init.rc, aby wykonać class_reset main. Spowoduje to zatrzymanie wszystkich usług w klasie głównej, co pozwala na odłączenie /data tmpfs.

  6. 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 na trigger_post_fs_data. To powoduje init.rc, aby uruchomić polecenia post-fs-data. Będą utwórz potrzebne katalogi lub linki, a następnie vold.post_fs_data_done do 1. Gdy vold zobaczy 1 w ustawia on właściwość vold.decrypt na trigger_restart_framework Powoduje to, że uruchamiana jest usługa init.rc usługi w klasie main i rozpocznij usługi w klasie late_start po raz pierwszy od uruchomienia.

  7. 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:

  1. Wykrywaj zaszyfrowane urządzenie za pomocą hasła
  2. Góra tmpfs
  3. 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:

  1. Wygeneruj losowy 16-bajtowy klucz szyfrowania dysku (DEK) i 16-bajtową sól.
  2. Zastosuj szyfrowanie przy użyciu hasła użytkownika i sól, aby utworzyć 32-bajtowy kod pośredni klucz 1 (IK1).
  3. 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.
  4. Podpisz dopełnienie IK1 za pomocą HBK, aby wygenerować 256-bajtowy kod IK2.
  5. Zastosuj szyfrowanie IK2 i sól (taką samą jak w kroku 2), aby uzyskać 32-bajtowy kod IK3.
  6. Użyj pierwszych 16 bajtów IK3 jako klucza KEK, a ostatnich 16 bajtów jako IV.
  7. 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.

ro.crypto.fs_type
ro.crypto.fs_real_blkdev
ro.crypto.fs_mnt_point
ro.crypto.fs_options
ro.crypto.fs_flags

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