Full-Disk-Verschlüsselung

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 Flag SVC_DISABLED hinzu. Beendete Dienste reagieren nicht auf class_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).
  • 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.

  1. Unverschlüsseltes Dateisystem mit dem Flag forceencrypt erkennen

    /data ist nicht verschlüsselt, dies ist jedoch erforderlich, weil forceencrypt dies vorschreibt. Trennen Sie /data.

  2. /data verschlüsseln

    vold.decrypt = "trigger_encryption"“ löst „init.rc“ aus Dadurch verschlüsselt vold /data ohne Passwort. (Keine festgelegt, da es sich um ein neues Gerät handeln sollte)

  3. tmpfs bereitstellen

    vold stellt tmpfs-/data mit den tmpfs-Optionen von ro.crypto.tmpfs_options) und legt die Eigenschaft vold.encrypt_progress auf 0 fest. vold bereitet den tmpfs-/data für den Start eines verschlüsselten Systems vor und legt den Property vold.decrypt nach: trigger_restart_min_framework

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

  5. Deaktivieren Sie das Framework, wenn /data verschlüsselt ist.

    vold legt vold.decrypt fest auf trigger_default_encryption, die den defaultcrypto-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.

  6. Montage /data

    init stellt dann /data auf einer tmpfs-RAMDisk mit werden vom festgelegten ro.crypto.tmpfs_options abgerufen. in init.rc

  7. Framework starten

    vold legt vold.decrypt fest auf trigger_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.

  1. Passwort prüfen

    Die UI ruft vold mit dem Befehl cryptfs enablecrypto inplace auf Dabei ist passwd das Passwort für den Sperrbildschirm des Nutzers.

  2. 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 Attribut vold.decrypt festgelegt. an trigger_shutdown_framework. Das führt dazu, dass init.rc und beenden Sie die Dienste in den Klassen late_start und main.

  3. Krypto-Fußzeile erstellen
  4. Navigationspfaddatei erstellen
  5. Neu starten
  6. Navigationspfaddatei erkennen
  7. /data verschlüsseln

    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 und schreibt die Krypto-Metadaten herausfinden.

  8. Tmpfs während der Verschlüsselung bereitstellen

    vold stellt tmpfs-/data mit den tmpfs-Optionen bereit aus ro.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 fest vold.decrypt nach: trigger_restart_min_framework

  9. Nennen Sie das Framework, um den Fortschritt zu zeigen.

    trigger_restart_min_framework führt dazu, dass init.rc Starte die Dienstklasse main. 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 aktualisiert vold.encrypt_progress jedes Mal, wenn sie verschlüsselt einen weiteren Prozentsatz der Partition.

  10. Krypto-Fußzeile aktualisieren, wenn /data verschlüsselt ist

    Wenn /data erfolgreich verschlüsselt wurde, werden die Daten von vold gelöscht. das Flag ENCRYPTION_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 fest vold.encrypt_progress bis error_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.

  1. Verschlüsselte /data ohne Passwort erkennen

    Erkennen, dass das Android-Gerät aus folgendem Grund verschlüsselt ist: /data kann nicht bereitgestellt werden und eines der Flags encryptable oder forceencrypt ist festgelegt.

    vold legt vold.decrypt fest auf trigger_default_encryption, die den defaultcrypto-Service. trigger_default_encryption überprüft den Verschlüsselungstyp, um festzustellen, ob /data mit oder ohne Passwort.

  2. /data entschlüsseln

    Das Gerät „dm-crypt“ wird über dem blockorientierten Gerät erstellt, sodass das Gerät ist einsatzbereit.

  3. /data

    vold stellt dann die entschlüsselte echte /data-Partition bereit. und bereitet dann die neue Partition vor. Damit wird die Eigenschaft vold.post_fs_data_done auf 0 und legt dann vold.decrypt fest an trigger_post_fs_data. Dadurch wird init.rc ausgeführt ihre post-fs-data-Befehle. Er erstellt alle erforderlichen Verzeichnisse, oder Links und setzen Sie vold.post_fs_data_done auf 1.

    Sobald vold die „1“ in dieser Eigenschaft erkennt, wird das Attribut festgelegt. Von vold.decrypt nach: trigger_restart_framework. Diese(s) führt dazu, dass init.rc Dienste in der Klasse main startet und auch Dienste in Klasse late_start für die erste Zeit seit dem Booten.

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

  1. 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 legt vold.decrypt fest auf trigger_restart_min_framework, weil /data gleich mit einem Passwort verschlüsselt.

  2. tmpfs bereitstellen

    init legt fünf Eigenschaften zum Speichern der anfänglichen Bereitstellungsoptionen fest angegeben für /data mit Parametern, die von init.rc übergeben wurden. vold verwendet diese Attribute, um die kryptografische Zuordnung einzurichten:

    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-stellige ASCII-Hexadezimalzahl mit vorangestelltem 0x)
  3. Framework zur Eingabe eines Passworts starten

    Das Framework wird gestartet und erkennt, dass vold.decrypt auf trigger_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 an vold. 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 den CRYPTO_ENCRYPTION_IN_PROGRESS nach melden. Ist die Richtlinie konfiguriert, wurde der Verschlüsselungsprozess unterbrochen und es gibt keine Verwendbare Daten auf dem Gerät. Wenn vold 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.

  4. 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 Befehl cryptfs checkpw wird an vold 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 Property ro.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.

  5. Framework beenden

    Die Benutzeroberfläche zeigt eine Crypto-Boot-Grafik an und ruft dann vold mit den Befehl cryptfs restart. vold legt das Attribut fest. vold.decrypt bis trigger_reset_main, was dazu führt, init.rc, um class_reset main zu machen. Dadurch werden alle Dienste beendet. in der Hauptklasse, wodurch die tmpfs-/data-Datei getrennt werden kann.

  6. 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 legt vold.decrypt auf trigger_post_fs_data fest. Das führt dazu, dass init.rc, um die post-fs-data-Befehle auszuführen. Sie werden alle erforderlichen Verzeichnisse oder Links zu erstellen und vold.post_fs_data_done auf 1. Sobald vold „1 in“ sieht wird die Eigenschaft vold.decrypt auf trigger_restart_framework Dadurch wird init.rc gestartet Dienste in Klasse main wieder und starte die Dienste auch im Kurs late_start zum ersten Mal seit dem Start.

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

  1. Verschlüsseltes Gerät mit einem Passwort erkennen
  2. tmpfs bereitstellen
  3. 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:

  1. Generieren Sie zufälligen 16-Byte-DEK (Disk Encryption Key) und 16-Byte-Salt.
  2. Wenden Sie die Verschlüsselung auf das Nutzerpasswort und den Salt an, um ein 32-Byte-Zwischenformat zu erzeugen. Schlüssel 1 (IK1).
  3. 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.
  4. Vorzeichen aufgefüllt IK1 mit HBK, um 256 Byte IK2 zu erzeugen.
  5. Wenden Sie Scrypt auf IK2 und Salt an (gleiches Salt wie in Schritt 2), um 32-Byte-IK3 zu erzeugen.
  6. Verwenden Sie die ersten 16 Byte von IK3 als KEK und die letzten 16 Byte als IV.
  7. 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.

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

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