Bei der Datenträgervollverschlüsselung werden alle Nutzerdaten auf einem Android-Gerät mit einem verschlüsselten Schlüssels an. Sobald ein Gerät verschlüsselt ist, werden alle von Nutzern erstellten Daten automatisch verschlüsselt, bevor sie auf das Laufwerk und alle Lesevorgänge übertragen werden Daten automatisch entschlüsseln, 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, mit der nur verwendete Blöcke auf der Datenpartition verschlüsselt werden damit der erste Start nicht zu lange dauert. Nur ext4- und f2fs-Dateisysteme unterstützen derzeit schnelle Verschlüsselung.
forceencrypt
hinzugefügt fstab-Flag zum Verschlüsseln beim ersten Start.- Muster und Verschlüsselung ohne Passwort werden jetzt unterstützt.
- Hardwaregestützte Speicherung des Verschlüsselungsschlüssels mit „Vertrauenswürdig“ hinzugefügt Die Signaturfunktion der Ausführungsumgebung (Execution Environment, TEE) (z. B. in einer TrustZone). Weitere Informationen finden Sie unter Verschlüsselten Schlüssel speichern. Details.
Achtung:Bei Geräten, die auf Android 5.0 aktualisiert wurden und dann verschlüsselte Daten können durch das Zurücksetzen auf die Werkseinstellungen in einen unverschlüsselten Zustand zurückversetzt 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. Die Verschlüsselung ist mit YAFFS nicht möglich, das direkt mit einem Rohdatenblock kommuniziert.
NAND-Flash-Chip.
Der Verschlüsselungsalgorithmus ist 128 Advanced Encryption Standard (AES) mit Cipher-Block Chaining (CBC) und ESSIV:SHA256. Der Masterschlüssel ist verschlüsselt mit 128-Bit-AES über Aufrufe der OpenSSL-Bibliothek. 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-Version 5.0 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 einen TEE (z. B. TrustZone) signiert. Dabei wird ein Hash der Signatur verwendet, um den Masterschlüssel zu verschlüsseln.
Sie finden das Standardpasswort, das im Android-Open-Source-Projekt cryptfs.cpp festgelegt wurde. -Datei.
Wenn der Nutzer die PIN, das Ticket 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, die ausgelöst werden sollen.
-Ereignisse in init. Andere Teile des Systems
sich auch die Eigenschaften ansehen, um Aufgaben wie den Berichtsstatus durchzuführen, nach einem
oder eine Aufforderung zum Zurücksetzen auf die Werkseinstellungen, falls ein schwerwiegender Fehler auftritt. Zum Aufrufen
Verschlüsselungsfunktionen in vold
verwendet, verwendet das System das Befehlszeilentool
cryptfs
-Befehle von 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. Um jedoch eine beliebige Benutzeroberfläche (UI) anzuzeigen, muss
Framework muss gestartet werden und es muss /data
ausgeführt werden. Bis
ein temporäres Dateisystem unter /data
bereitgestellt wird.
Dadurch kann Android Passwörter eingeben, den Fortschritt anzeigen oder Daten vorschlagen
bei Bedarf löschen. Es erschwert jedoch die Beschränkung, dass beim Wechsel von der
temporäre Dateisystem in das tatsächliche /data
-Dateisystem übertragen, muss das System
Beenden Sie alle Prozesse mit geöffneten Dateien im temporären Dateisystem und starten Sie diese neu.
Prozessen im echten /data
-Dateisystem. 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
: Herunterfahren und dann neu starten, nachdem das Laufwerkpasswort eingegeben wurde.late_start
: startet erst, nachdem/data
entschlüsselt und bereitgestellt wurde.
Zum Auslösen dieser Aktionen wird das Attribut vold.decrypt
auf
verschiedene Strings.
Mit den folgenden init
-Befehlen können Sie Dienste beenden und neu starten:
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. Beendete Dienste reagieren nicht aufclass_start
.
Datenflüsse
Für ein verschlüsseltes Gerät gibt es vier Abläufe. Ein Gerät wird nur einmal verschlüsselt. und folgt dem normalen Bootvorgang.
- So verschlüsseln Sie ein zuvor unverschlüsseltes Gerät:
<ph type="x-smartling-placeholder">
- </ph>
- Neues Gerät mit
forceencrypt
verschlüsseln: Obligatorische Verschlüsselung beim ersten Start (ab Android L). - Vorhandenes Gerät verschlüsseln: Vom Nutzer initiierte Verschlüsselung (Android K und niedriger).
- Neues Gerät mit
- Verschlüsseltes Gerät starten:
<ph type="x-smartling-placeholder">
- </ph>
- Verschlüsseltes Gerät ohne Passwort starten: Ein verschlüsseltes Gerät wird gestartet, das verfügt über kein festgelegtes Passwort (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 Abläufen kann das Gerät /data
auch nicht verschlüsseln.
Jeder der 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
. /data
verschlüsseln„
vold.decrypt = "trigger_encryption"
“ löst „init.rc
“ aus Dadurch verschlüsseltvold
/data
ohne Passwort. (Keine festgelegt, da es sich um ein neues Gerät handeln sollte)- tmpfs bereitstellen
vold
stellt tmpfs-/data
mit den tmpfs-Optionen vonro.crypto.tmpfs_options
) und legt die Eigenschaftvold.encrypt_progress
auf 0 fest.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, zeigt die Fortschrittsanzeige werden oft nicht angezeigt, weil die Verschlüsselung so schnell erfolgt. Weitere Informationen finden Sie unter Vorhandenes Gerät verschlüsseln, um weitere Details zur Fortschritts-UI.
- Deaktivieren Sie das Framework, wenn
/data
verschlüsselt ist.vold
legtvold.decrypt
fest auftrigger_default_encryption
, die dendefaultcrypto
-Service. (Damit beginnt der Ablauf unten für die Bereitstellung eines standardmäßig verschlüsselte Nutzerdaten.)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; daher wird/data
entschlüsselt und bereitgestellt. - Montage
/data
init
stellt dann/data
auf einer tmpfs-RAMDisk mit werden vom festgelegtenro.crypto.tmpfs_options
abgerufen. ininit.rc
- Framework starten
vold
legtvold.decrypt
fest auftrigger_restart_framework
, wodurch der normale Start fortgesetzt wird .
Vorhandenes Gerät verschlüsseln
Das passiert, wenn du ein unverschlüsseltes Android K oder eine ältere Version verschlüsselst das zu L migriert wurde.
Dieser Vorgang wird vom Nutzer initiiert und wird in des Codes. Wenn ein Nutzer ein Gerät verschlüsselt, stellt die Benutzeroberfläche sicher, dass das der Akku vollständig geladen ist und das Netzteil eingesteckt ist, sodass genügend Ein/Aus, um den Verschlüsselungsvorgang abzuschließen.
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.
Zum Aktivieren der direkten Verschlüsselung startet vold
eine Schleife, um diese zu lesen
des realen Blockgeräts und schreiben Sie ihn
an das Krypto-Blocker-Gerät. 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 UI ruft
vold
mit dem Befehlcryptfs enablecrypto inplace
auf Dabei istpasswd
das Passwort für den Sperrbildschirm des Nutzers. - Rahmenbedingungen entfernen
vold
sucht nach Fehlern, gibt -1 zurück, wenn eine Verschlüsselung nicht möglich ist, und gibt einen Grund im Protokoll aus. Wenn eine Verschlüsselung möglich ist, wird das Attributvold.decrypt
festgelegt. antrigger_shutdown_framework
. Das führt dazu, dassinit.rc
und beenden Sie die Dienste in den Klassenlate_start
undmain
. - Krypto-Fußzeile erstellen
- Navigationspfaddatei erstellen
- Neu starten
- Navigationspfaddatei erkennen
/data
verschlüsselnvold
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 und schreibt die Krypto-Metadaten herausfinden.- 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 die tmpfs vor/data
zum Starten eines verschlüsselten Systems und legt das Attribut festvold.decrypt
nach:trigger_restart_min_framework
- Nennen Sie das Framework, um den Fortschritt zu zeigen.
trigger_restart_min_framework
führt dazu, dassinit.rc
Starte die Dienstklassemain
. Wenn das Framework sieht,vold.encrypt_progress
ist auf 0 gesetzt und die Fortschrittsanzeige wird angezeigt. UI, die diese Eigenschaft alle fünf Sekunden abfragt und eine Fortschrittsanzeige aktualisiert Die Verschlüsselungsschleife aktualisiertvold.encrypt_progress
jedes Mal, wenn sie verschlüsselt einen weiteren Prozentsatz der Partition. - Krypto-Fußzeile aktualisieren, wenn
/data
verschlüsselt istWenn
/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 kryptografische Fußzeile zu aktualisieren.
Wenn der Neustart fehlschlägt, legt
vold
das Attribut festvold.encrypt_progress
biserror_reboot_failed
und sollte auf der Benutzeroberfläche eine Meldung angezeigt werden, in der der Nutzer aufgefordert wird, eine Taste zu drücken, neu starten. Dies wird nie der Fall sein.
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 keine Einstellung des Passworts. Dies ist der Status der Standardverschlüsselung.
- Verschlüsselte
/data
ohne Passwort erkennenErkennen, dass das Android-Gerät aus folgendem Grund verschlüsselt ist:
/data
kann nicht bereitgestellt werden und eines der Flagsencryptable
oderforceencrypt
ist festgelegt.vold
legtvold.decrypt
fest auftrigger_default_encryption
, die dendefaultcrypto
-Service.trigger_default_encryption
überprüft den Verschlüsselungstyp, um festzustellen, ob/data
mit oder ohne Passwort. - /data entschlüsseln
Das Gerät „
dm-crypt
“ wird über dem blockorientierten Gerät erstellt, sodass das Gerät ist einsatzbereit. - /data
vold
stellt dann die entschlüsselte echte/data
-Partition bereit. und bereitet dann die neue Partition vor. Damit wird die Eigenschaftvold.post_fs_data_done
auf 0 und legt dannvold.decrypt
fest antrigger_post_fs_data
. Dadurch wirdinit.rc
ausgeführt ihrepost-fs-data
-Befehle. Er erstellt alle erforderlichen Verzeichnisse, oder Links und setzen Sievold.post_fs_data_done
auf 1.Sobald
vold
die „1“ in dieser Eigenschaft erkennt, wird das Attribut festgelegt. Vonvold.decrypt
nach:trigger_restart_framework.
Diese(s) führt dazu, dassinit.rc
Dienste in der Klassemain
startet und auch Dienste in Klasselate_start
für die erste Zeit seit dem Booten. - Framework starten
Jetzt startet das Framework alle Dienste mit der 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 zum Speichern der anfänglichen Bereitstellungsoptionen fest angegeben für/data
mit Parametern, die voninit.rc
übergeben wurden.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 zur Eingabe eines Passworts starten
Das Framework wird gestartet und erkennt, dass
vold.decrypt
auftrigger_restart_min_framework
. So weiß das Framework, Sie starten auf einem temporären/data
-Laufwerk und müssen das Nutzerpasswort abrufen.Zuerst muss jedoch überprüft werden, ob das Laufwerk ordnungsgemäß verschlüsselt wurde. Es 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
bestimmt indem wir in den Krypto-Metadaten für denCRYPTO_ENCRYPTION_IN_PROGRESS
nach melden. Ist die Richtlinie konfiguriert, wurde der Verschlüsselungsprozess unterbrochen und es gibt keine Verwendbare Daten auf dem Gerät. 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
Sobald
cryptfs cryptocomplete
erfolgreich ist, wird das Framework zeigt eine Benutzeroberfläche an, in der nach dem Passwort des Laufwerks gefragt wird. Die Benutzeroberfläche prüft das Passwort Der Befehlcryptfs checkpw
wird anvold
gesendet. 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 die -Passwort falsch ist, wird -1 an die Benutzeroberfläche zurückgegeben. - Framework beenden
Die Benutzeroberfläche zeigt eine Crypto-Boot-Grafik an und ruft dann
vold
mit den Befehlcryptfs restart
.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 beendet. in der Hauptklasse, wodurch die tmpfs-/data
-Datei 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). Das Attribut „vold.post_fs_data_done
“ wird auf „0“ gesetzt und dann legtvold.decrypt
auftrigger_post_fs_data
fest. Das führt dazu, dassinit.rc
, um diepost-fs-data
-Befehle auszuführen. Sie werden alle erforderlichen Verzeichnisse oder Links zu erstellen undvold.post_fs_data_done
auf 1. Sobaldvold
„1 in“ sieht wird die Eigenschaftvold.decrypt
auftrigger_restart_framework
Dadurch wirdinit.rc
gestartet Dienste in Klassemain
wieder und starte die Dienste auch im Kurslate_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 einem Passwort erkennen
- tmpfs bereitstellen
- Framework zur Eingabe eines Passworts starten
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 nach dem Herunterfahren des Frameworks auftritt,
bevor die Fortschrittsanzeige eingeblendet 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 dem Nutzer eine Schaltfläche zum Zurücksetzen des Geräts auf die Werkseinstellungen zur Verfügung gestellt wurde.
Verschlüsselten Schlüssel speichern
Der verschlüsselte Schlüssel wird in den kryptografischen Metadaten gespeichert. Hardware-Sicherung ist die mithilfe der TEE-Signaturfunktion (Trusted Execution Environment) implementiert wird. Bisher haben wir den Masterschlüssel mit einem Schlüssel verschlüsselt, der durch die Anwendung von Verschlüsselung generiert wurde. mit dem Passwort des Nutzers und dem gespeicherten Salt. Um den Schlüssel robust zu machen, wird dieser Algorithmus durch Signieren des resultierenden Schlüssels mit einem gespeicherten TEE-Schlüssel. Die sich ergebende Signatur wird dann in eine entsprechende Längenschlüssel durch eine weitere Verschlüsselungsanwendung. Dieser Schlüssel wird dann zum Verschlüsseln und den Masterschlüssel entschlüsseln. So speichern Sie diesen Schlüssel:
- Generieren Sie zufälligen 16-Byte-DEK (Disk Encryption Key) und 16-Byte-Salt.
- Wenden Sie die Verschlüsselung auf das Nutzerpasswort und den Salt an, um ein 32-Byte-Zwischenformat zu erzeugen. Schlüssel 1 (IK1).
- 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 DEK mit AES_CBC, mit dem Schlüssel KEK und dem Initialisierungsvektor IV.
Passwort ändern
Wenn ein Nutzer sein Passwort in den Einstellungen ändern oder entfernen möchte, sendet die Benutzeroberfläche
den Befehl cryptfs changepw
in vold
und
vold
verschlüsselt den Masterschlüssel des Laufwerks mit dem neuen Passwort neu.
Verschlüsselungseigenschaften
vold
und init
kommunizieren miteinander über
Eigenschaften festlegen. Hier ist eine Liste der verfügbaren Eigenschaften 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 |
Mit vold festlegen, dass die Benutzeroberfläche heruntergefahren und nach dem Passwort des Laufwerks gefragt wird. |
vold.decrypt trigger_post_fs_data |
Von vold festgelegt, um /data mit den erforderlichen Verzeichnissen u. a. vorzubereiten |
vold.decrypt trigger_restart_framework |
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 das Framework gestartet wird, Wenn diese Eigenschaft festgelegt ist, geben Sie den UI-Modus der Fortschrittsanzeige. |
vold.encrypt_progress 0 to 100 |
Die Fortschrittsanzeige sollte zeigt den eingestellten Prozentwert an. |
vold.encrypt_progress error_partially_encrypted |
In der Benutzeroberfläche der Fortschrittsanzeige sollte eine Meldung angezeigt werden, dass die Verschlüsselung fehlgeschlagen ist. Nutzenden die Möglichkeit geben, Gerät auf die Werkseinstellungen zurücksetzen. |
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 Meldung eines Fehlers anzeigen wurden keine Daten verschlüsselt oder und dem Nutzer eine Schaltfläche zum Neustarten des Systems geben. |
vold.encrypt_progress error_shutting_down |
Die Benutzeroberfläche der Fortschrittsanzeige wird nicht ausgeführt, daher ist unklar, wer antworten wird. auf diesen Fehler. Und das sollte sowieso nie passieren. |
vold.post_fs_data_done 0 |
Von vold festgelegt, kurz vor der Einstellung von vold.decrypt
an trigger_post_fs_data . |
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 durch den vold -Befehl checkpw für die spätere Verwendung festgelegt
mit dem vold -Befehl restart . |
ro.crypto.state unencrypted |
Von init festgelegt, um anzugeben, dass dieses System mit einem unverschlüsselten System ausgeführt wird
/data ro.crypto.state encrypted . Von init festgelegt, um Folgendes zu sagen:
Dieses System wird mit einer verschlüsselten /data ausgeführt. |
|
Diese fünf Eigenschaften werden durch
init , wenn versucht wird, /data mit Parametern bereitzustellen, die von
init.rc vold verwendet sie, 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