Full-Disk Encryption ist der Prozess der Verschlüsselung aller Benutzerdaten auf einem Android-Gerät mit einem verschlüsselten Schlüssel. Sobald ein Gerät verschlüsselt ist, werden alle vom Benutzer erstellten Daten automatisch verschlüsselt, bevor sie auf der Festplatte gespeichert werden, und alle gelesenen Daten werden automatisch entschlüsselt, bevor sie an den aufrufenden Prozess zurückgegeben werden.
Die Festplattenverschlüsselung wurde in Android 4.4 eingeführt, aber Android 5.0 führte folgende neue Funktionen ein:
- Eine schnelle Verschlüsselung, die nur verwendete Blöcke auf der Datenpartition verschlüsselt, um zu vermeiden, dass der erste Start lange dauert. Nur ext4- und f2fs-Dateisysteme unterstützen derzeit schnelle Verschlüsselung.
- Hinzufügen des fstab-Flags
forceencryptzur Verschlüsselung beim ersten Start. - Unterstützung für Muster und Verschlüsselung ohne Passwort hinzugefügt.
- Hardwaregestützte Speicherung des Verschlüsselungsschlüssels unter Verwendung der TEE-Signierfunktion (Trusted Execution Environment) (z. B. in einer TrustZone). Weitere Einzelheiten finden Sie unter Speichern des verschlüsselten Schlüssels.
Achtung: Geräte, die auf Android 5.0 aktualisiert und anschließend verschlüsselt wurden, können durch Zurücksetzen der Werksdaten in einen unverschlüsselten Zustand zurückversetzt werden. Neue Android 5.0-Geräte, die beim ersten Start verschlüsselt wurden, können nicht in einen unverschlüsselten Zustand zurückversetzt werden.
- Wie die Android-Vollfestplattenverschlüsselung funktioniert
- Flows
- Ein neues Gerät mit forceencrypt
- Vorhandenes Gerät verschlüsseln
- Starten eines verschlüsselten Geräts mit Standardverschlüsselung
- Starten eines verschlüsselten Geräts ohne Standardverschlüsselung
- Fehler
- Speichern des verschlüsselten Schlüssels
- Kennwort ändern
- Verschlüsselungseigenschaften
- Eigenschaften
- Eigenschaften einrichten
- Init-Aktionen
Wie die Android-Vollfestplattenverschlüsselung funktioniert
Die Android-Vollfestplattenverschlüsselung basiert auf dm-crypt, einer Kernel-Funktion, die auf der Block-Geräteebene arbeitet. Aus diesem Grund funktioniert die Verschlüsselung mit Embedded MultiMediaCard (eMMC) und ähnlichen Flash-Geräten, die sich dem Kernel als Blockdevices präsentieren. Verschlüsselung ist nicht möglich mit YAFFS, das direkt mit einem RawNAND-Flash-Chip kommuniziert.
Der Verschlüsselungsalgorithmus ist 128 Advanced Encryption Standard (AES) mit Cipher-Block-Chaining (CBC) und ESSIV:SHA256. Der Hauptschlüssel wird mit 128-Bit-AES über Aufrufe der OpenSSL-Bibliothek verschlüsselt. Sie müssen mindestens 128 Bit für den Schlüssel verwenden (256 ist optional).
Hinweis: OEMs können 128-Bit oder höher für die Verschlüsselung des Hauptschlüssels verwenden.
In der Version Android 5.0 gibt es vier Arten von Verschlüsselungszuständen:
- Standard
- PIN
- Passwort
- Muster
Beim ersten Start erstellt das Gerät einen zufällig generierten 128-Bit-Hauptschlüssel und verschlüsselt ihn dann mit einem Standardpasswort und einem gespeicherten Salz. Das Standardpasswort lautet: „default_password“. Der resultierende Hash wird jedoch auch durch ein TEE (wie TrustZone) signiert, das einen Hash der Signatur zur Verschlüsselung des Hauptschlüssels verwendet.
Das Standardpasswort ist in der Datei cryptfs.cpp des Android Open Source Project definiert.
Wenn der Benutzer die PIN/den Pass oder das Passwort auf dem Gerät einstellt, wird nur der 128-Bit-Schlüssel erneut verschlüsselt und gespeichert. (d.h. Benutzer-PIN/Pass/Muster-Änderungen führen NICHT zu einer erneuten Verschlüsselung der Benutzerdaten.) Beachten Sie, dass das verwaltete Gerät PIN-, Muster- oder Kennworteinschränkungen unterliegen kann.
Die Verschlüsselung wird von init und vold verwaltet.init ruft vold auf, und vold setzt Eigenschaften, um Ereignisse in init auszulösen. Andere Teile des Systems greifen ebenfalls auf die Eigenschaften zurück, um Aufgaben wie die Meldung des Status, die Abfrage eines Kennworts oder die Aufforderung zum Zurücksetzen auf die Werkseinstellungen im Falle eines schwerwiegenden Fehlers durchzuführen. Um Verschlüsselungsfunktionen in vold aufzurufen, verwendet das System die cryptfs-Befehle des Befehlszeilentoolsvdc: checkpw,restart, enablecrypto, changepw,cryptocomplete, verifypw, setfield,getfield, mountdefaultencrypted, getpwtype,getpw, und clearpw.
Um /data zu verschlüsseln, zu entschlüsseln oder zu löschen, darf /data nicht gemountet sein. Um jedoch eine Benutzeroberfläche (UI) anzuzeigen, muss das Framework gestartet werden, und das Framework benötigt /data, um zu laufen. Um dieses Problem zu lösen, wird ein temporäres Dateisystem auf /data gemountet, so dass Android bei Bedarf nach Passwörtern fragen, den Fortschritt anzeigen oder einen Datenlöschvorgang vorschlagen kann. Um vom temporären Dateisystem zum echten /data-Dateisystem zu wechseln, muss das System jeden Prozess mit offenen Dateien auf dem temporären Dateisystem anhalten und diese Prozesse auf dem echten /data-Dateisystem neu starten. Dazu müssen sich alle Dienste in einer der drei Gruppen befinden: core, main undlate_start.
-
core: Niemals nach dem Start herunterfahren. -
main: Herunterfahren und dann neu starten, nachdem das Festplattenkennwort eingegeben wurde. -
late_start: Startet erst, nachdem/dataentschlüsselt und gemountet wurde.
Um diese Aktionen auszulösen, wird die vold.decrypt-Eigenschaft auf verschiedene Zeichenfolgen gesetzt.Zum Beenden und Neustarten von Diensten gibt es folgende init-Befehle:
-
class_reset: Stoppt einen Dienst, ermöglicht aber seinen Neustart mit class_start. -
class_start: Startet einen Dienst neu. -
class_stop: Hält einen Dienst an und fügt einSVC_DISABLED-Flag hinzu. Gestoppte Dienste reagieren nicht aufclass_start.
Flows
Es gibt vier Flows für ein verschlüsseltes Gerät. Ein Gerät wird nur einmal verschlüsselt und folgt dann einem normalen Boot-Flow.
- Ein zuvor unverschlüsseltes Gerät verschlüsseln:
- Verschlüsseln Sie ein neues Gerät mit
forceencrypt: Obligatorische Verschlüsselung beim ersten Start (ab Android L). - Ein vorhandenes Gerät verschlüsseln: Benutzer-initiierte Verschlüsselung (Android K und früher).
- Verschlüsseln Sie ein neues Gerät mit
- Booten eines verschlüsselten Geräts:
- Starten eines verschlüsselten Geräts ohne Passwort: Booten eines verschlüsselten Geräts ohne festgelegtes Passwort (relevant für Geräte mit Android 5.0 und höher).
- Starten eines verschlüsselten Geräts mit einem Kennwort: Starten eines verschlüsselten Geräts mit einem festgelegten Kennwort.
Zusätzlich zu diesen Abläufen kann das Gerät auch bei der Verschlüsselung scheitern /data.Jeder der Abläufe wird unten im Detail erklärt.
Ein neues Gerät mit forceencrypt
Dies ist der normale erste Start für ein Android 5.0-Gerät.
- Unverschlüsseltes Dateisystem mit
forceencrypt-Flag/dataerkennen ist nicht verschlüsselt, muss aber sein, weilforceencryptes vorschreibt./dataaushängen. - Starten Sie die Verschlüsselung von
/datavold.decrypt = "trigger_encryption"löstinit.rcaus, wasvoldveranlasst,/dataohne Passwort zu verschlüsseln.(Keines ist gesetzt, weil dies ein neues Gerät sein sollte.) - Mount tmpfs
voldmountet ein tmpfs/data(unter Verwendung der tmpfs-Optionen ausro.crypto.tmpfs_options) und setzt die Eigenschaftvold.encrypt_progressauf 0.voldbereitet das tmpfs/datafür das Booten eines verschlüsselten Systems vor und setzt dieEigenschaftvold.decryptauf:trigger_restart_min_framework - Bring up framework to show progress
Da das Gerät praktisch keine Daten zu verschlüsseln hat, wird der Fortschrittsbalken oft nicht angezeigt, weil die Verschlüsselung so schnell abläuft. Weitere Informationen über die Fortschrittsanzeige finden Sie unter Verschlüsseln eines vorhandenen Geräts.
- Wenn
/dataverschlüsselt ist, wird das Frameworkvoldheruntergefahren undvold.decryptauftrigger_default_encryptiongesetzt, wodurch derdefaultcryptoDienst gestartet wird. (trigger_default_encryptionüberprüft den Verschlüsselungstyp, um festzustellen, ob/datamit oder ohne Passwort verschlüsselt ist. Da Android 5.0-Geräte beim ersten Start verschlüsselt werden, sollte kein Passwort gesetzt sein; daher entschlüsseln und mounten wir/data. - Mount
/datainitmounten dann/dataauf einer tmpfs RAMDisk unter Verwendung von Parametern, die es vonro.crypto.tmpfs_optionsübernimmt, das ininit.rcgesetzt ist. - Start framework
Setzen Sie
voldauftrigger_restart_framework, was den üblichen Boot-Prozess fortsetzt.
Vorhandenes Gerät verschlüsseln
Dies geschieht, wenn Sie ein unverschlüsseltes Android K- oder früheres Gerät verschlüsseln, das auf L migriert wurde.
Dieser Prozess wird vom Benutzer initiiert und wird im Code als „Inplace-Verschlüsselung“ bezeichnet. Wenn ein Benutzer die Verschlüsselung eines Geräts auswählt, stellt die Benutzeroberfläche sicher, dass die Batterie vollständig aufgeladen und das Netzteil eingesteckt ist, damit genügend Strom für den Abschluss des Verschlüsselungsvorgangs vorhanden ist.
Warnung: Wenn dem Gerät der Strom ausgeht und es sich ausschaltet, bevor es den Verschlüsselungsvorgang abgeschlossen hat, bleiben die Dateidaten in einem teilweise verschlüsselten Zustand. Das Gerät muss auf die Werkseinstellungen zurückgesetzt werden, und alle Daten gehen verloren.
Um die Verschlüsselung an Ort und Stelle zu aktivieren, startet vold eine Schleife, um jeden Sektor des realen Blockgeräts zu lesen und ihn dann in das Kryptoblockgerät zu schreiben. vold prüft, ob ein Sektor in Gebrauch ist, bevor er gelesen und geschrieben wird, was die Verschlüsselung auf einem neuen Gerät, das wenig oder gar keine Daten enthält, erheblich beschleunigt.
Zustand des Geräts: Setzen Sie ro.crypto.state = "unencrypted"und führen Sie den on nonencrypted initAuslöser aus, um mit dem Booten fortzufahren.
- Passwort prüfen
Das UI ruft
voldmit dem Befehlcryptfs enablecrypto inplaceauf, wobeipasswddas Sperrbildschirm-Passwort des Benutzers ist. - Abbau des Frameworks
voldprüft auf Fehler, gibt -1 zurück, wenn es nicht verschlüsseln kann, und druckt einen Grund in das Protokoll. Wenn es verschlüsseln kann, setzt es die Eigenschaftvold.decryptauftrigger_shutdown_framework. Dies veranlasstinit.rc, die Dienste der Klassenlate_startundmainzu beenden. - Erstellen einer Krypto-Fußzeile
- Erstellen einer Breadcrumb-Datei
- Reboot
- Erkennen der Breadcrumb-Datei
- Beginnen Sie mit der Verschlüsselung
/datavoldund richten Sie dann die Kryptozuordnung ein, Dadurch wird ein virtuelles Krypto-Blockgerät erstellt, das auf das reale Blockgerät abgebildet wird, aber jeden Sektor beim Schreiben verschlüsselt und beim Lesen entschlüsselt.volderstellt dann die Crypto-Metadaten und schreibt sie aus. - Während es verschlüsselt, mount tmpfs
voldmountet ein tmpfs/data(unter Verwendung der tmpfs-Optionen ausro.crypto.tmpfs_options) und setzt die Eigenschaftvold.encrypt_progressauf 0.voldbereitet das tmpfs/datazum Booten eines verschlüsselten Systems vor und setzt die Eigenschaftvold.decryptauf:trigger_restart_min_framework - Bringt das Framework zum Anzeigen des Fortschritts
trigger_restart_min_frameworkveranlasstinit.rc, die Klasse der Dienstemainzu starten. Die Verschlüsselungsschleife aktualisiertvold.encrypt_progressjedes Mal, wenn sie ein weiteres Prozent der Partition verschlüsselt. - Wenn
/dataverschlüsselt ist, aktualisiere die Krypto-FußzeileWenn
/dataerfolgreich verschlüsselt ist, löschtvolddas KennzeichenENCRYPTION_IN_PROGRESSin den Metadaten.Wenn das Gerät erfolgreich entsperrt ist, wird das Passwort verwendet, um den Hauptschlüssel zu verschlüsseln, und die Krypto-Fußzeile wird aktualisiert.
Wenn der Neustart aus irgendeinem Grund fehlschlägt, setzt
volddie Eigenschaftvold.encrypt_progressauferror_reboot_failed, und die Benutzeroberfläche sollte eine Meldung anzeigen, die den Benutzer auffordert, eine Taste zum Neustart zu drücken. Es wird nicht erwartet, dass dies jemals auftritt.
Starten eines verschlüsselten Geräts mit Standardverschlüsselung
Dies ist, was passiert, wenn Sie ein verschlüsseltes Gerät ohne Kennwort booten.Da Android 5.0-Geräte beim ersten Start verschlüsselt werden, sollte kein Kennwort gesetzt werden und daher ist dies der Standardverschlüsselungsstatus.
- Erkenne verschlüsseltes
/dataohne PasswortErkenne, dass das Android-Gerät verschlüsselt ist, weil
/datanicht gemountet werden kann und eines der Flagsencryptableoderforceencryptgesetzt ist.voldsetztvold.decryptauftrigger_default_encryption, was dendefaultcrypto-Dienst startet.trigger_default_encryptionüberprüft den Verschlüsselungstyp, um festzustellen, ob/datamit oder ohne Passwort verschlüsselt ist. - Entschlüsseln /data
Erzeugt das Gerät
dm-cryptüber dem Blockgerät, so dass das Gerät einsatzbereit ist. - Einhängen /data
voldhängt dann die entschlüsselte echte/data-Partition ein und bereitet die neue Partition vor. Es setzt die Eigenschaftvold.post_fs_data_doneauf 0 und setzt dannvold.decryptauftrigger_post_fs_data. Dies veranlasstinit.rc, seinepost-fs-data-Befehle auszuführen. Sie erstellen alle notwendigen Verzeichnisse oder Links und setzen dannvold.post_fs_data_doneauf 1.Sobald
volddie 1 in dieser Eigenschaft sieht, setzt es die Eigenschaftvold.decryptauf:trigger_restart_framework.Dies veranlasstinit.rc, die Dienste der Klassemainerneut zu starten und auch die Dienste der Klasselate_startzum ersten Mal seit dem Booten zu starten. - Start framework
Jetzt bootet das Framework alle seine Dienste unter Verwendung des entschlüsselten
/data, und das System ist einsatzbereit.
Starten eines verschlüsselten Geräts ohne Standardverschlüsselung
Dies geschieht, wenn Sie ein verschlüsseltes Gerät mit einem festgelegten Kennwort starten. Das Kennwort des Geräts kann ein Pin, ein Muster oder ein Kennwort sein.
- Verschlüsseltes Gerät mit Passwort erkennen
Ermittelt, dass das Android-Gerät verschlüsselt ist, weil das Flag
ro.crypto.state = "encrypted"voldvold.decryptauftrigger_restart_min_frameworkgesetzt ist, weil/datamit einem Passwort verschlüsselt ist. - Mount tmpfs
initsetzt fünf Eigenschaften, um die anfänglichen Mount-Optionen für/datamit Parametern zu speichern, die voninit.rcübergeben wurden.voldverwendet diese Eigenschaften, um die Kryptozuordnung einzurichten:-
ro.crypto.fs_type -
ro.crypto.fs_real_blkdev -
ro.crypto.fs_mnt_point -
ro.crypto.fs_options -
ro.crypto.fs_flags(ASCII 8-stellige hexadezimale Zahl mit vorangestelltem 0x)
-
- Start framework to prompt for password
Das Framework startet und sieht, dass
vold.decryptauftrigger_restart_min_frameworkgesetzt ist. Das sagt dem Framework, dass es auf einer tmpfs/data-Platte bootet und das Benutzerpasswort abfragen muss.Zuerst muss es jedoch sicherstellen, dass die Platte richtig verschlüsselt wurde. Es sendet den Befehl
cryptfs cryptocompleteanvold.voldgibt 0 zurück, wenn die Verschlüsselung erfolgreich abgeschlossen wurde, -1 bei einem internen Fehler oder-2, wenn die Verschlüsselung nicht erfolgreich abgeschlossen wurde.voldstellt dies fest, indem es in den Krypto-Metadaten nach demCRYPTO_ENCRYPTION_IN_PROGRESS-Flag sucht. Wenn es gesetzt ist, wurde der Verschlüsselungsprozess unterbrochen, und es befinden sich verwertbare Daten auf dem Gerät. Wennvoldeinen Fehler zurückgibt, sollte die Benutzeroberfläche den Benutzer auffordern, das Gerät neu zu starten und auf die Werkseinstellungen zurückzusetzen, und dem Benutzer eine entsprechende Taste zur Verfügung stellen. - Daten mit Kennwort entschlüsseln
Wenn
cryptfs cryptocompleteerfolgreich ist, zeigt das Framework eine Benutzeroberfläche an, die nach dem Festplattenkennwort fragt. Die Benutzeroberfläche prüft das Kennwort durch Senden des Befehlscryptfs checkpwanvold. Wenn das Kennwort korrekt ist (was durch erfolgreiches Einhängen des entschlüsselten/dataan einem temporären Ort und anschließendes Aushängen festgestellt wird), speichertvoldden Namen des entschlüsselten Blockgeräts in der Eigenschaftro.crypto.fs_crypto_blkdevund gibt Status 0 an die Benutzeroberfläche zurück. Wenn das Passwort falsch ist, wird -1 an die Benutzeroberfläche zurückgegeben. - Stop framework
Die Benutzeroberfläche zeigt eine Krypto-Boot-Grafik an und ruft dann
voldmit dem Befehlcryptfs restartauf.voldsetzt die Eigenschaftvold.decryptauftrigger_reset_main, wasinit.rcveranlasst,class_reset mainauszuführen. Dies stoppt alle Dienste in der Hauptklasse, wodurch das tmpfs/dataausgehängt werden kann. - Mount
/datavoldhängt dann die entschlüsselte echte/dataPartition ein und bereitet die neue Partition vor (die möglicherweise nie vorbereitet wurde, wenn sie mit der Option wipe verschlüsselt wurde, die in der ersten Version nicht unterstützt wird). Es setzt die Eigenschaftvold.post_fs_data_doneauf 0 und setzt dannvold.decryptauftrigger_post_fs_data. Dies veranlasstinit.rc, seinepost-fs-dataBefehle auszuführen. Sie erstellen alle notwendigen Verzeichnisse oder Links und setzen dannvold.post_fs_data_doneauf 1. Sobaldvolddie 1 in dieser Eigenschaft sieht, setzt es die Eigenschaftvold.decryptauftrigger_restart_framework. Dies veranlasstinit.rc, die Dienste der Klassemainerneut zu starten und auch die Dienste der Klasselate_startzum ersten Mal seit dem Booten zu starten. - Vollständiges Framework starten
Jetzt bootet das Framework alle seine Dienste unter Verwendung des entschlüsselten
/dataDateisystems, und das System ist einsatzbereit.
Fehler
Ein Gerät, bei dem die Entschlüsselung fehlschlägt, kann aus mehreren Gründen fehlerhaft sein. Das Gerät beginnt mit der normalen Reihe von Schritten zum Booten:
- Verschlüsseltes Gerät mit einem Kennwort erkennen
- Tmpfs einhängen
- Rahmenwerk starten, um zur Eingabe des Kennworts aufzufordern
Aber nachdem das Rahmenwerk geöffnet wurde, kann das Gerät auf einige Fehler stoßen:
- Kennwort stimmt überein, aber Daten können nicht entschlüsselt werden
- Benutzer gibt 30 Mal ein falsches Kennwort ein
Wenn diese Fehler nicht behoben werden, wird der Benutzer aufgefordert, das Gerät zu löschen:
Wenn vold einen Fehler während des Verschlüsselungsprozesses feststellt und noch keine Daten zerstört wurden und das Framework läuft, setzt volddie Eigenschaft vold.encrypt_progress auf error_not_encrypted.Die Benutzeroberfläche fordert den Benutzer zum Neustart auf und weist ihn darauf hin, dass der Verschlüsselungsprozess nicht gestartet wurde. Wenn der Fehler auftritt, nachdem das Framework abgebaut wurde, aber bevor die Fortschrittsanzeige erscheint, startet vold das System neu. Wenn der Neustart fehlschlägt, wird vold.encrypt_progress auferror_shutting_down gesetzt und -1 zurückgegeben, aber es wird nichts geben, um den Fehler abzufangen. Es wird nicht erwartet, dass dies passiert.
Wenn vold einen Fehler während des Verschlüsselungsprozesses entdeckt, setzt es vold.encrypt_progress auf error_partially_encrypted und gibt -1 zurück. Die Benutzeroberfläche sollte dann eine Meldung anzeigen, dass die Verschlüsselung fehlgeschlagen ist, und dem Benutzer eine Schaltfläche zum Zurücksetzen des Geräts auf die Werkseinstellungen anbieten.
Speichern des verschlüsselten Schlüssels
Der verschlüsselte Schlüssel wird in den Krypto-Metadaten gespeichert. Die Hardwaresicherung wird durch die Verwendung der Signierfunktion des Trusted Execution Environment (TEE) implementiert. Zuvor haben wir den Hauptschlüssel mit einem Schlüssel verschlüsselt, der durch Anwendung von scrypt auf das Passwort des Benutzers und das gespeicherte Salz erzeugt wurde. Um den Schlüssel widerstandsfähig gegen Off-Box-Angriffe zu machen, erweitern wir diesen Algorithmus, indem wir den resultierenden Schlüssel mit einem gespeicherten TEE-Schlüssel signieren. Die resultierende Signatur wird dann durch eine weitere Anwendung von scrypt in einen Schlüssel geeigneter Länge umgewandelt. Dieser Schlüssel wird dann zum Ver- und Entschlüsseln des Hauptschlüssels verwendet. So speichern Sie diesen Schlüssel:
- Erzeugen Sie einen zufälligen 16-Byte-Disk Encryption Key (DEK) und ein 16-Byte-Salz.
- Scrypt auf das Benutzerpasswort und das Salt anwenden, um den 32-Byte-Zwischenschlüssel 1 (IK1) zu erzeugen.
- Füllen Sie IK1 mit null Bytes auf die Größe des hardwaregebundenen privaten Schlüssels (HBK) auf, und zwar wie folgt: 00 || IK1 || 00..00; ein Nullbyte, 32 IK1-Bytes, 223Nullbytes.
- Aufgefüllte IK1 mit HBK, um 256 Byte IK2 zu erzeugen.
- Scrypt auf IK2 und Salt (dasselbe Salt wie in Schritt 2) anwenden, um 32-Byte-IK3 zu erzeugen.
- Die ersten 16 Bytes von IK3 als KEK und die letzten 16 Bytes als IV verwenden.
- Verschlüsseln Sie DEK mit AES_CBC, mit dem Schlüssel KEK und dem Initialisierungsvektor IV.
Kennwort ändern
Wenn ein Benutzer sein Kennwort in den Einstellungen ändern oder entfernen möchte, sendet die Benutzeroberfläche den Befehl cryptfs changepw an vold und vold verschlüsselt den Hauptschlüssel der Festplatte mit dem neuen Kennwort neu.
Verschlüsselungseigenschaften
vold und init kommunizieren miteinander, indem sie Eigenschaften festlegen. Hier ist eine Liste der verfügbaren Eigenschaften für die Verschlüsselung.
Eigenschaften
| Eigenschaft | Beschreibung |
|---|---|
vold.decrypt trigger_encryption |
Verschlüsseln Sie das Laufwerk ohne Kennwort. |
vold.decrypt trigger_default_encryption |
Prüfen Sie das Laufwerk, um zu sehen, ob es ohne Kennwort verschlüsselt ist. wenn ja, entschlüsseln und mounten Sie es, ansonsten setzen Sie vold.decrypt auf trigger_restart_min_framework. |
vold.decrypt trigger_reset_main |
Setzen von vold, um das UI, das nach dem Festplattenpasswort fragt, abzuschalten. |
vold.decrypt trigger_post_fs_data |
Setzen von vold, um /data mit den notwendigen Verzeichnissen vorzubereiten, usw. |
vold.decrypt trigger_restart_framework |
Setzen von vold, um das echte Framework und alle Dienste zu starten. |
vold.decrypt trigger_shutdown_framework |
Setzen von vold, um das komplette Framework herunterzufahren und die Verschlüsselung zu starten. |
vold.decrypt trigger_restart_min_framework |
Von vold eingestellt, um die Fortschrittsanzeige für die Verschlüsselung zu starten oder nach dem Passwort zu fragen, abhängig vom Wert von ro.crypto.state. |
vold.encrypt_progress |
Wenn das Framework startet, wird, wenn diese Eigenschaft gesetzt ist, der Fortschrittsbalken-UI-Modus aktiviert. |
vold.encrypt_progress 0 to 100 |
Der Fortschrittsbalken-UI sollte den eingestellten Prozentwert anzeigen. |
vold.encrypt_progress error_partially_encrypted |
Die Fortschrittsanzeige sollte eine Meldung anzeigen, dass die Verschlüsselung fehlgeschlagen ist, und dem Benutzer die Möglichkeit geben, das Gerät auf die Werkseinstellungen zurückzusetzen. |
vold.encrypt_progress error_reboot_failed |
Die Fortschrittsanzeige sollte eine Meldung anzeigen, dass die Verschlüsselung abgeschlossen ist, und dem Benutzer eine Schaltfläche zum Neustart des Geräts geben. Dieser Fehler sollte nicht auftreten. |
vold.encrypt_progress error_not_encrypted |
Die Fortschrittsanzeige sollte eine Meldung anzeigen, die besagt, dass ein Fehler aufgetreten ist, keine Daten verschlüsselt wurden oder verloren gegangen sind, und dem Benutzer eine Schaltfläche zum Neustart des Systems geben. |
vold.encrypt_progress error_shutting_down |
Die Fortschrittsanzeige wird nicht ausgeführt, daher ist unklar, wer auf diesen Fehler reagiert. Und es sollte sowieso nie passieren. |
vold.post_fs_data_done 0 |
Setzen von vold kurz vor dem Setzen von vold.decrypt auf trigger_post_fs_data. |
vold.post_fs_data_done 1 |
Setzen von init.rc oder init.rc kurz nach dem Beenden der Aufgabe post-fs-data. |
Eigenschaften einrichten
| Eigenschaft | Beschreibung |
|---|---|
ro.crypto.fs_crypto_blkdev |
Setzen durch den vold Befehl checkpw zur späteren Verwendung durch den vold Befehl restart. |
ro.crypto.state unencrypted |
Gesetzt durch init um zu sagen, dass dieses System mit einem unverschlüsselten /data ro.crypto.state encrypted läuft. Von init gesetzt, um zu sagen, dass dieses System mit einem verschlüsselten /data läuft. |
|
|
Diese fünf Eigenschaften werden von init gesetzt, wenn es versucht, /data mit von init.rc übergebenen Parametern zu mounten. vold verwendet diese, um das Crypto-Mapping einzurichten. |
ro.crypto.tmpfs_options |
Sie werden von init.rc mit den Optionen gesetzt, die init beim Einhängen des tmpfs /data-Dateisystems verwenden soll. |