Bei der Festplattenvollverschlüsselung werden alle Nutzerdaten auf einem Android-Gerät mit einem verschlüsselten Schlüssel codiert. Sobald ein Gerät verschlüsselt ist, werden alle vom Nutzer erstellten Daten automatisch verschlüsselt, bevor sie auf die Festplatte geschrieben werden. Bei allen Lesevorgängen werden die Daten automatisch entschlüsselt, bevor sie an den aufrufenden Prozess zurückgegeben werden.
Die Datenträgervollverschlüsselung wurde in Android 4.4 eingeführt, Android 5.0 jedoch. diese neuen Funktionen:
- Es wurde eine schnelle Verschlüsselung erstellt, bei der nur verwendete Blöcke auf der Datenpartition verschlüsselt werden, um zu vermeiden, dass der erste Start lange dauert. Derzeit wird die schnelle Verschlüsselung nur von ext4- und f2fs-Dateisystemen unterstützt.
- Das
forceencrypt
-Fstab-Flag wurde hinzugefügt, um beim ersten Start zu verschlüsseln. - Unterstützung für Muster und Verschlüsselung ohne Passwort hinzugefügt.
- Hardwaregestützter Speicher des Verschlüsselungsschlüssels mithilfe der Signaturfunktion der Trusted Execution Environment (TEE) hinzugefügt (z. B. in einer TrustZone). Weitere Informationen finden Sie unter Verschlüsselten Schlüssel speichern.
Achtung: Geräte, die auf Android 5.0 aktualisiert und dann verschlüsselt wurden, können durch Zurücksetzen auf die Werkseinstellungen wieder in den unverschlüsselten Zustand versetzt werden. Android 5.0 neu Geräte, die beim ersten Start verschlüsselt wurden, können nicht in einen unverschlüsselten Zustand zurückversetzt werden.
So funktioniert die Android-Vollverschlüsselungsverschlüsselung
Die Android-Volllaufwerkverschlüsselung basiert auf dm-crypt
, einem Kernel
die auf Blockgeräteebene eingesetzt wird. Aus
funktioniert die Verschlüsselung mit Embedded MultiMediaCard (eMMC) und
ähnliche Flash-Geräte, die sich dem Kernel als Block
Geräte. Mit YAFFS ist keine Verschlüsselung möglich, da es direkt mit einem Roh-NAND-Flash-Chip kommuniziert.
Der Verschlüsselungsalgorithmus ist 128 Advanced Encryption Standard (AES) mit Cipher-Block Chaining (CBC) und ESSIV:SHA256. Der Masterschlüssel wird über Aufrufe der OpenSSL-Bibliothek mit 128-Bit-AES verschlüsselt. Sie müssen mindestens 128 Bit für den Schlüssel hinzu (wobei 256 optional ist).
Hinweis:OEMs können 128-Bit oder höher verwenden, um den Masterschlüssel zu verschlüsseln.
In der Android 5.0-Version gibt es vier Arten von Verschlüsselungsstatus:
- Standard
- PIN
- Passwort
- Muster
Beim ersten Start erstellt das Gerät einen zufällig generierten 128-Bit-Masterschlüssel. und es wird mit einem Standardpasswort und einem gespeicherten Salt versehen. Das Standardpasswort lautet „default_password“. Der resultierende Hash wird jedoch auch über eine TEE (z. B. TrustZone) signiert, die den Masterschlüssel mit einem Hash der Signatur verschlüsselt.
Das Standardpasswort finden Sie in der Datei cryptfs.cpp des Android Open Source Project.
Wenn der Nutzer die PIN, den Passcode oder das Passwort auf dem Gerät festlegt, wird nur der 128-Bit-Schlüssel neu verschlüsselt und gespeichert. (d. h. Änderungen an PIN, Pass/Muster führen NICHT zu Neuverschlüsselung von Nutzerdaten.) Beachten Sie, dass verwaltetes Gerät unterliegen möglicherweise PIN-, Muster- oder Passwortbeschränkungen.
Die Verschlüsselung wird von init
und vold
verwaltet.
init
ruft vold
auf und vold legt Eigenschaften fest, um Ereignisse in init auszulösen. Andere Teile des Systems rufen die Properties ebenfalls auf, um Aufgaben wie den Berichtsstatus zu prüfen, ein Passwort anzufordern oder im Falle eines schwerwiegenden Fehlers zum Zurücksetzen auf die Werkseinstellungen aufzufordern. Zum Aufrufen von Verschlüsselungsfunktionen in vold
verwendet das System die cryptfs
-Befehle des Befehlszeilentools vdc
: checkpw
, restart
, enablecrypto
, changepw
, cryptocomplete
, verifypw
, setfield
, getfield
, mountdefaultencrypted
, getpwtype
, getpw
und clearpw
.
Zum Verschlüsseln, Entschlüsseln oder Löschen von /data
, /data
darf nicht montiert werden. Damit jedoch eine Benutzeroberfläche angezeigt werden kann, muss das Framework gestartet werden. Dafür ist /data
erforderlich. Um dieses Problem zu lösen, wird ein temporäres Dateisystem unter /data
bereitgestellt.
So kann Android nach Passwörtern fragen, den Fortschritt anzeigen oder bei Bedarf eine Datenlöschung vorschlagen. Es gibt jedoch die Einschränkung, dass zum Wechseln vom temporären Dateisystem zum echten /data
-Dateisystem alle Prozesse mit geöffneten Dateien im temporären Dateisystem angehalten und im echten /data
-Dateisystem neu gestartet werden müssen. Dazu müssen alle Dienste
muss einer von drei Gruppen angehören: core
, main
und
late_start
core
: Wird nach dem Start nie heruntergefahren.main
: Nach Eingabe des Laufwerkpassworts herunterfahren und dann neu starten.late_start
: startet erst, nachdem/data
entschlüsselt und bereitgestellt wurde.
Um diese Aktionen auszulösen, wird die Property vold.decrypt
auf verschiedene Strings festgelegt.
So beenden und starten Sie Dienste mit init
:
class_reset
: Beendet einen Dienst, lässt ihn aber mit class_start neu starten.class_start
: Startet einen Dienst neu.class_stop
: Beendet einen Dienst und fügt das FlagSVC_DISABLED
hinzu. Gestoppte Dienste reagieren nicht aufclass_start
.
Abläufe
Für ein verschlüsseltes Gerät gibt es vier Abläufe. Ein Gerät wird nur einmal verschlüsselt und durchläuft dann einen normalen Bootvorgang.
- So verschlüsseln Sie ein zuvor unverschlüsseltes Gerät:
- Verschlüsseln Sie ein neues Gerät mit
forceencrypt
: Verschlüsselung beim ersten Start obligatorisch (ab Android L). - Vorhandenes Gerät verschlüsseln: Vom Nutzer initiierte Verschlüsselung (Android K und darunter)
- Verschlüsseln Sie ein neues Gerät mit
- Verschlüsseltes Gerät starten:
- Verschlüsseltes Gerät ohne Passwort starten: Starten eines verschlüsselten Geräts, für das kein Passwort festgelegt wurde (relevant für Geräte mit Android 5.0 und höher).
- Verschlüsseltes Gerät mit einem Passwort starten: Ein verschlüsseltes Gerät starten, das ein Passwort festgelegt hat.
Zusätzlich zu diesen Datenflüssen kann das Gerät auch /data
nicht verschlüsseln.
Jeder dieser Abläufe wird unten ausführlich erläutert.
Neues Gerät mit „forceencrypt“ verschlüsseln
Dies ist der normale erste Startvorgang für ein Gerät mit Android 5.0.
- Unverschlüsseltes Dateisystem mit dem Flag
forceencrypt
erkennen/data
ist nicht verschlüsselt, dies ist jedoch erforderlich, weilforceencrypt
dies vorschreibt. Trennen Sie/data
. - Verschlüsselung starten
/data
vold.decrypt = "trigger_encryption"
löstinit.rc
aus Dadurch verschlüsseltvold
/data
ohne Passwort. (Es ist keine festgelegt, da es sich um ein neues Gerät handeln sollte.) - tmpfs bereitstellen
vold
stellt ein tmpfs-/data
bereit (mit den tmpfs-Optionen ausro.crypto.tmpfs_options
) und setzt das Attributvold.encrypt_progress
auf 0.vold
bereitet den tmpfs-/data
für den Start eines verschlüsselten Systems vor und legt den Propertyvold.decrypt
nach:trigger_restart_min_framework
- Nennen Sie das Framework, um den Fortschritt zu zeigen.
Da auf dem Gerät praktisch keine Daten zu verschlüsseln sind, wird die Fortschrittsanzeige nicht erscheinen häufig, weil die Verschlüsselung so schnell erfolgt. Weitere Informationen finden Sie unter Vorhandenes Gerät verschlüsseln, um weitere Details zur Fortschritts-UI.
- Wenn
/data
verschlüsselt ist, Framework entfernenvold
setztvold.decrypt
auftrigger_default_encryption
, wodurch der Dienstdefaultcrypto
gestartet wird. Dadurch wird der unten beschriebene Ablauf zum Bereitstellen der standardmäßig verschlüsselten Nutzerdaten gestartet.trigger_default_encryption
prüft die Verschlüsselungstyp, um festzustellen, ob/data
mit oder ohne Passwort. Da Android 5.0-Geräte beim ersten Start verschlüsselt werden, kein Passwort festgelegt sein; deshalb wird/data
entschlüsselt und bereitgestellt. - Mount
/data
init
stellt dann/data
auf einer tmpfs-RAMDisk mit werden vom festgelegtenro.crypto.tmpfs_options
abgerufen. ininit.rc
- Framework starten
vold
setztvold.decrypt
auftrigger_restart_framework
, wodurch der normale Bootvorgang fortgesetzt wird.
Vorhandenes Gerät verschlüsseln
Das passiert, wenn Sie ein unverschlüsseltes Android K- oder älteres Gerät verschlüsseln, das zu L migriert wurde.
Dieser Vorgang wird vom Nutzer initiiert und im Code als „In-Place-Verschlüsselung“ bezeichnet. Wenn ein Nutzer ein Gerät verschlüsseln möchte, wird auf der Benutzeroberfläche geprüft, ob der Akku vollständig geladen und das Netzteil angeschlossen ist, damit genügend Strom für die Verschlüsselung zur Verfügung steht.
Warnung:Wenn der Akku leer ist und das Gerät heruntergefahren wird, bevor der Vorgang abgeschlossen ist sind die Dateidaten nur teilweise verschlüsselt. Das Gerät muss werden auf die Werkseinstellungen zurückgesetzt und alle Daten gehen verloren.
Um die Vor-Ort-Verschlüsselung zu aktivieren, startet vold
eine Schleife, um jeden Sektor des physischen Blockgeräts zu lesen und dann auf das Krypto-Blockgerät zu schreiben. vold
prüft, ob sich ein Sektor befindet
bevor Sie sie lesen und schreiben.
auf einem neuen Gerät mit wenigen oder gar keinen Daten zu verschlüsseln.
Gerätestatus: ro.crypto.state = "unencrypted"
festlegen
und führen Sie den on nonencrypted
-init
-Trigger aus, um den Bootvorgang fortzusetzen.
- Passwort prüfen
Die Benutzeroberfläche ruft
vold
mit dem Befehlcryptfs enablecrypto inplace
auf, wobeipasswd
das Passwort für den Sperrbildschirm des Nutzers ist. - Framework entfernen
vold
prüft auf Fehler, gibt -1 zurück, wenn die Verschlüsselung nicht möglich ist, und druckt einen Grund in das Protokoll. Wenn eine Verschlüsselung möglich ist, wird die Propertyvold.decrypt
auftrigger_shutdown_framework
festgelegt. Dadurch werden voninit.rc
die Dienste in den Klassenlate_start
undmain
angehalten. - Crypto-Fußzeile erstellen
- Brotkrummendatei erstellen
- Neu starten
- Navigationspfaddatei erkennen
- Verschlüsselung starten
/data
vold
richtet dann die kryptografische Zuordnung ein, die ein virtuelles Krypto-Blockgerät erstellt. das auf das tatsächliche Blockgerät verweist, jedoch jeden Sektor verschlüsselt, während er geschrieben wird. und entschlüsselt jeden Sektor beim Lesen.vold
erstellt dann die Krypto-Metadaten und schreibt sie aus. - Tmpfs während der Verschlüsselung bereitstellen
vold
stellt tmpfs-/data
mit den tmpfs-Optionen bereit ausro.crypto.tmpfs_options
) und legt die Eigenschaft fest,vold.encrypt_progress
auf 0 gesetzt.vold
bereitet das tmpfs-/data
für das Starten eines verschlüsselten Systems vor und legt die Eigenschaftvold.decrypt
auf Folgendes fest:trigger_restart_min_framework
- Framework aufrufen, um den Fortschritt anzuzeigen
trigger_restart_min_framework
bewirkt, dassinit.rc
die Dienstklassemain
startet. Wenn das Framework feststellt, dassvold.encrypt_progress
auf „0“ gesetzt ist, wird die Benutzeroberfläche mit der Fortschrittsanzeige angezeigt. Dabei wird diese Eigenschaft alle fünf Sekunden abgefragt und die Fortschrittsanzeige aktualisiert. Die Verschlüsselungsschleife aktualisiertvold.encrypt_progress
jedes Mal, wenn ein weiteres Prozent der Partition verschlüsselt wird. - Wenn
/data
verschlüsselt ist, aktualisiere die Krypto-Fußzeile.Wenn
/data
erfolgreich verschlüsselt wurde, werden die Daten vonvold
gelöscht. das FlagENCRYPTION_IN_PROGRESS
in den Metadaten.Wenn das Gerät entsperrt wurde, wird das Passwort für folgende Zwecke verwendet: um den Masterschlüssel zu verschlüsseln und die Krypto-Fußzeile zu aktualisieren.
Wenn der Neustart aus irgendeinem Grund fehlschlägt, setzt
vold
die Eigenschaftvold.encrypt_progress
auferror_reboot_failed
und auf der Benutzeroberfläche wird eine Meldung angezeigt, in der der Nutzer aufgefordert wird, eine Schaltfläche zum Neustarten zu drücken. Das wird nie passieren.
Verschlüsseltes Gerät mit Standardverschlüsselung starten
Das passiert, wenn Sie ein verschlüsseltes Gerät ohne Passwort starten. Da Android 5.0-Geräte beim ersten Start verschlüsselt werden, sollte kein Passwort festgelegt sein. Dies ist der Standardverschlüsselungsstatus.
- Verschlüsselte
/data
ohne Passwort erkennenErkennen, dass das Android-Gerät verschlüsselt ist, weil
/data
nicht bereitgestellt werden kann und eines der Flagsencryptable
oderforceencrypt
gesetzt ist.vold
setztvold.decrypt
auftrigger_default_encryption
, wodurch der Dienstdefaultcrypto
gestartet wird.trigger_default_encryption
prüft den Verschlüsselungstyp, um festzustellen, ob/data
mit oder ohne Passwort verschlüsselt ist. - /data entschlüsseln
Das Gerät „
dm-crypt
“ wird über dem blockorientierten Gerät erstellt, sodass das Gerät ist einsatzbereit. - /data bereitstellen
vold
mountet dann die entschlüsselte echte/data
-Partition und bereitet die neue Partition vor. Dabei wird das Attributvold.post_fs_data_done
auf 0 und dannvold.decrypt
auftrigger_post_fs_data
gesetzt. Dadurch führtinit.rc
seinepost-fs-data
-Befehle aus. Er erstellt alle erforderlichen Verzeichnisse oder Links und legt dannvold.post_fs_data_done
auf 1 fest.Sobald
vold
die 1 in dieser Property sieht, setzt es die Propertyvold.decrypt
auf:trigger_restart_framework.
. Dadurch startetinit.rc
die Dienste in der Klassemain
noch einmal und auch die Dienste in der Klasselate_start
zum ersten Mal seit dem Start. - Framework starten
Jetzt startet das Framework alle seine Dienste mit dem entschlüsselten
/data
und das System ist einsatzbereit.
Verschlüsseltes Gerät ohne Standardverschlüsselung starten
Das geschieht, wenn Sie ein verschlüsseltes Gerät starten, Passwort. Das Passwort des Geräts kann eine PIN, ein Muster oder ein Passwort sein.
- Verschlüsseltes Gerät mit einem Passwort erkennen
Erkennen, dass das Android-Gerät verschlüsselt ist, weil das Flag
ro.crypto.state = "encrypted"
vold
legtvold.decrypt
fest auftrigger_restart_min_framework
, weil/data
gleich mit einem Passwort verschlüsselt. - Tmpfs bereitstellen
init
legt fünf Eigenschaften fest, um die anfänglichen Bereitstellungsoptionen für/data
mit Parametern ausinit.rc
zu speichern.vold
verwendet diese Attribute, um die kryptografische Zuordnung einzurichten:ro.crypto.fs_type
ro.crypto.fs_real_blkdev
ro.crypto.fs_mnt_point
ro.crypto.fs_options
ro.crypto.fs_flags
(8-stellige ASCII-Hexadezimalzahl mit vorangestelltem 0x)
- Framework starten, um nach dem Passwort zu fragen
Das Framework wird gestartet und erkennt, dass
vold.decrypt
auftrigger_restart_min_framework
festgelegt ist. Dies teilt dem Framework mit, dass es von einem tmpfs-/data
-Laufwerk gestartet wird und das Nutzerpasswort abrufen muss.Zuerst muss jedoch sichergestellt werden, dass das Laufwerk ordnungsgemäß verschlüsselt wurde. Er sendet den Befehl
cryptfs cryptocomplete
anvold
.vold
gibt 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.vold
ermittelt dies, indem es in den Krypto-Metadaten nach dem FlagCRYPTO_ENCRYPTION_IN_PROGRESS
sucht. Wenn diese Option festgelegt ist, wurde der Verschlüsselungsprozess unterbrochen und es sind keine verwendbaren Daten auf dem Gerät vorhanden. Wennvold
einen Fehler zurückgibt, sollte die UI dem Nutzer eine Nachricht anzuzeigen, dass er das Gerät neu startet und auf die Werkseinstellungen zurücksetzt Nutzende eine Schaltfläche, um dies zu tun. - Daten mit Passwort entschlüsseln
Wenn
cryptfs cryptocomplete
erfolgreich war, zeigt das Framework eine Benutzeroberfläche an, in der Sie nach dem Laufwerkpasswort gefragt werden. Die Benutzeroberfläche prüft das Passwort, indem der Befehlcryptfs checkpw
anvold
gesendet wird. Wenn die ist das richtige Passwort. Dies wird ermittelt, indem das/data
an einem temporären Speicherort entschlüsselt und die Bereitstellung dann aufgehoben hat,vold
speichert den Namen des entschlüsselten Blockgeräts in der Propertyro.crypto.fs_crypto_blkdev
und gibt den Status 0 an die UI zurück. Wenn das Passwort falsch ist, wird -1 an die Benutzeroberfläche zurückgegeben. - Stopp-Framework
Die Benutzeroberfläche zeigt eine Krypto-Bootgrafik an und ruft dann
vold
mit dem Befehlcryptfs restart
auf.vold
legt das Attribut fest.vold.decrypt
bistrigger_reset_main
, was dazu führt,init.rc
, umclass_reset main
zu machen. Dadurch werden alle Dienste in der Hauptklasse angehalten, sodass das tmpfs-Volume/data
getrennt werden kann. - Montage
/data
vold
stellt dann die entschlüsselte echte/data
-Partition bereit. und bereitet die neue Partition vor (die möglicherweise nie vorbereitet worden ist, mit der Option zum Löschen verschlüsselt, die nicht unterstützt wird Release). Dabei wird das Attributvold.post_fs_data_done
auf 0 und dannvold.decrypt
auftrigger_post_fs_data
gesetzt. Das führt dazu,init.rc
, um diepost-fs-data
-Befehle auszuführen. Er erstellt alle erforderlichen Verzeichnisse oder Links und legt dannvold.post_fs_data_done
auf 1 fest. Wennvold
die 1 in dieser Property sieht, wird die Propertyvold.decrypt
auftrigger_restart_framework
festgelegt. Dadurch startetinit.rc
die Dienste in der Klassemain
noch einmal und auch die Dienste in der Klasselate_start
zum ersten Mal seit dem Start. - Vollständiges Framework starten
Das Framework startet jetzt alle Dienste mit der entschlüsselten
/data
und das System ist einsatzbereit.
Fehler
Ein Gerät, das sich nicht entschlüsseln lässt, kann aus verschiedenen Gründen unpassend sein. Das Gerät mit der normalen Reihe von Schritten zum Starten beginnt:
- Verschlüsseltes Gerät mit Passwort erkennen
- tmpfs bereitstellen
- Framework starten, um nach Passwort zu fragen
Nach dem Öffnen des Frameworks können jedoch auf dem Gerät Fehler auftreten:
- Passwort stimmt überein, Daten können jedoch nicht entschlüsselt werden
- Der Nutzer gibt 30 Mal das falsche Passwort ein
Wenn diese Fehler nicht behoben werden, bitten Sie den Nutzer, die Gerätedaten auf die Werkseinstellungen zu löschen:
Wenn vold
während der Verschlüsselung einen Fehler erkennt und wenn
Es wurden noch keine Daten gelöscht und das Framework ist eingerichtet. vold
legt fest.
die Eigenschaft vold.encrypt_progress
auf error_not_encrypted
.
Die Benutzeroberfläche fordert den Nutzer zum Neustart auf und benachrichtigt ihn über den Verschlüsselungsprozess
nicht gestartet. Wenn der Fehler auftritt, nachdem das Framework entfernt wurde, aber bevor die Fortschrittsanzeige angezeigt wird, startet vold
das System neu. Wenn
schlägt der Neustart fehl, wird vold.encrypt_progress
auf
error_shutting_down
und gibt -1 zurück. aber es wird nichts
um den Fehler zu erkennen. Das wird nicht erwartet.
Wenn vold
während der Verschlüsselung einen Fehler erkennt, legt sie fest,
vold.encrypt_progress
bis error_partially_encrypted
und gibt -1 zurück. Auf der Benutzeroberfläche sollte dann eine Meldung angezeigt werden, dass die Verschlüsselung fehlgeschlagen ist, und eine Schaltfläche, über die der Nutzer das Gerät auf die Werkseinstellungen zurücksetzen kann.
Verschlüsselten Schlüssel speichern
Der verschlüsselte Schlüssel wird in den kryptografischen Metadaten gespeichert. Die Hardwareunterstützung wird mithilfe der Signaturfunktion der Trusted Execution Environment (TEE) implementiert. Bisher haben wir den Masterschlüssel mit einem Schlüssel verschlüsselt, der durch Anwendung von Scrypt auf das Passwort des Nutzers und das gespeicherte Salt generiert wurde. Um den Schlüssel robust zu machen, wird dieser Algorithmus durch Signieren des resultierenden Schlüssels mit einem gespeicherten TEE-Schlüssel. Die resultierende Signatur wird dann durch eine weitere Anwendung von scrypt in einen Schlüssel mit geeigneter Länge umgewandelt. Dieser Schlüssel wird dann zum Verschlüsseln und Entschlüsseln des Masterschlüssels verwendet. So speichern Sie diesen Schlüssel:
- Generieren Sie zufälligen 16-Byte-DEK (Disk Encryption Key) und 16-Byte-Salt.
- Wende Scrypt auf das Nutzerpasswort und das Salt an, um den 32-Byte-Zwischenschlüssel 1 (IK1) zu generieren.
- Auffüllen von IK1 mit null Byte zur Größe des hardwaregebundenen privaten Schlüssels (HBK). Insbesondere eintragen wir: 00 || IK1 || 00..00; Ein Nullbyte, 32 IK1-Byte, 223 Null Bytes.
- Vorzeichen aufgefüllt IK1 mit HBK, um 256 Byte IK2 zu erzeugen.
- Wenden Sie Scrypt auf IK2 und Salt an (gleiches Salt wie in Schritt 2), um 32-Byte-IK3 zu erzeugen.
- Verwenden Sie die ersten 16 Byte von IK3 als KEK und die letzten 16 Byte als IV.
- Verschlüsseln Sie den DEK mit AES_CBC, dem Schlüssel KEK und dem Initialisierungsvektor IV.
Passwort ändern
Wenn ein Nutzer in den Einstellungen sein Passwort ändern oder entfernen möchte, sendet die Benutzeroberfläche den Befehl cryptfs changepw
an vold
. vold
verschlüsselt dann den Masterschlüssel des Laufwerks noch einmal mit dem neuen Passwort.
Verschlüsselungseigenschaften
vold
und init
kommunizieren miteinander über
Eigenschaften festlegen. Hier ist eine Liste der verfügbaren Properties für die Verschlüsselung.
Vold-Properties
Attribut | Beschreibung |
---|---|
vold.decrypt trigger_encryption |
Verschlüsseln Sie das Laufwerk ohne Passwort. |
vold.decrypt trigger_default_encryption |
Prüfen Sie, ob das Laufwerk ohne Passwort verschlüsselt ist.
Ist dies der Fall, entschlüsseln Sie
es und stellen Sie es bereit.
else setzen Sie vold.decrypt auf trigger_restart_min_framework. |
vold.decrypt trigger_reset_main |
Wird von vold festgelegt, um die Benutzeroberfläche herunterzufahren, wenn nach dem Laufwerkpasswort gefragt wird. |
vold.decrypt trigger_post_fs_data |
Wird von vold festgelegt, um /data mit den erforderlichen Verzeichnissen usw. vorzubereiten. |
vold.decrypt trigger_restart_framework |
Sie wird von vold festgelegt, um das echte Framework und alle Dienste zu starten. |
vold.decrypt trigger_shutdown_framework |
Legen Sie diese Option fest, um das vollständige Framework herunterzufahren und die Verschlüsselung zu starten. |
vold.decrypt trigger_restart_min_framework |
Mit vold festlegen, um
Fortschrittsanzeige für die Verschlüsselung oder
Aufforderung zur Eingabe des Passworts
Wert von ro.crypto.state |
vold.encrypt_progress |
Wenn diese Eigenschaft beim Starten des Frameworks festgelegt ist, wird der UI-Modus der Fortschrittsanzeige verwendet. |
vold.encrypt_progress 0 to 100 |
Die Benutzeroberfläche der Fortschrittsanzeige sollte den festgelegten Prozentwert anzeigen. |
vold.encrypt_progress error_partially_encrypted |
In der Fortschrittsanzeige sollte eine Meldung angezeigt werden, dass die Verschlüsselung fehlgeschlagen ist, und dem Nutzer die Möglichkeit gegeben werden, das Gerät auf die Werkseinstellungen zurückzusetzen. |
vold.encrypt_progress error_reboot_failed |
In der Benutzeroberfläche der Fortschrittsanzeige sollte die Nachricht „Verschlüsselung“ angezeigt werden. abgeschlossen ist, und geben Sie dem Nutzer eine Schaltfläche zum Neustarten des Geräts. Dieser Fehler nicht erwartet wird. |
vold.encrypt_progress error_not_encrypted |
Die Fortschrittsanzeige sollte eine Meldung anzeigen, dass ein Fehler aufgetreten ist, aber keine Daten verschlüsselt oder verloren gegangen sind. Außerdem sollte eine Schaltfläche zum Neustarten des Systems angezeigt werden. |
vold.encrypt_progress error_shutting_down |
Die Benutzeroberfläche mit der Fortschrittsanzeige wird nicht ausgeführt. Daher ist nicht klar, wer auf diesen Fehler reagiert. Und das sollte sowieso nie passieren. |
vold.post_fs_data_done 0 |
Von vold festgelegt, kurz bevor vold.decrypt auf trigger_post_fs_data gesetzt wurde. |
vold.post_fs_data_done 1 |
Von init.rc festgelegt oder
init.rc kurz nach Abschluss der Aufgabe post-fs-data . |
Init-Properties
Attribut | Beschreibung |
---|---|
ro.crypto.fs_crypto_blkdev |
Wird mit dem Befehl vold checkpw festgelegt und kann später mit dem Befehl vold restart verwendet werden. |
ro.crypto.state unencrypted |
Wird von init festgelegt, um anzugeben, dass dieses System mit einer unverschlüsselten /data ro.crypto.state encrypted ausgeführt wird. Von init festgelegt, um anzugeben, dass dieses System mit einer verschlüsselten /data ausgeführt wird. |
|
Diese fünf Eigenschaften werden von init festgelegt, wenn versucht wird, /data mit Parametern zu mounten, die von init.rc übergeben wurden. Diese werden von vold verwendet, um die kryptografische Zuordnung einzurichten. |
ro.crypto.tmpfs_options |
Wird von init.rc mit den Optionen festgelegt, die init verwendet werden soll, wenn
das tmpfs-Dateisystem /data wird bereitgestellt. |
init-Aktionen
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