Wie verschlüsseln Sie Ihr Gerät mit CyanogenMod 12.1?

9

CyanogenMod 12 und 12.1 Die Einstellung "Telefon verschlüsseln" ist seit einiger Zeit fehlerhaft. Gibt es eine Möglichkeit, das Telefon auf andere Weise zu verschlüsseln? Kann CM mit einem verschlüsselten / Datenverzeichnis auf ein Telefon geladen werden? Gibt es andere Möglichkeiten, um Ihre Daten sicher und zuverlässig zu halten? Das Gerät, an dem ich arbeite, ist ein Verizon LG G3.

Zlatty
quelle

Antworten:

6

Es gibt Befehle auf niedriger (er) Ebene, die in einer Shell zum Verschlüsseln Ihrer Benutzerdatenpartition verwendet werden können. Haftungsausschluss / Warnung: Die folgenden Anweisungen löschen Ihre Daten. Stellen Sie sicher, dass Sie bei Bedarf ein Backup erstellen .

Wenn Sie die folgenden Schritte ausführen, sollten Sie in der Lage sein, Ihre Datenpartition zu löschen und anschließend verschlüsseln zu lassen (ähnlich wie beim Zurücksetzen auf die Werkseinstellungen):

  1. Starten Sie Ihr Telefon normal (entweder funktioniert die Wiederherstellung nicht mehr oder ich bin auf ein anderes Problem gestoßen).
  2. Stellen Sie sicher, dass der USB-Debugging-Modus (adb) und der Root-Zugriff für ADB aktiviert sind.
  3. Geben Sie eine Root-Shell mit adb rootgefolgt von ein adb shell.
  4. Optional: Überwachen Sie Protokolle, indem Sie sie adb logcatin einer anderen Shell aufrufen .
  5. Geben Sie diesen Befehl ein, geben Sie Ihr Passwort ein und drücken Sie die Eingabetaste. Dadurch wird Ihr Passwort festgelegt. Dieser Befehl liest eine Zeile von input ( head -1), entfernt die nachfolgende neue Zeile von Enter ( tr -d '\n') und konvertiert sie in eine hexadezimale Darstellung ( hexdump ...). Wenn es beängstigend aussieht oder Sie nicht sicher sind, was dieser Befehl bewirkt, siehe unten.

    vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
    
  6. Wenn alles in Ordnung ist, setzt Ihr Gerät die Schlüssel und startet neu, um die Verschlüsselung abzuschließen.

Der obige vdcBefehl ("Volume Daemon Client"), mit dem vold(Volume Daemon) kommuniziert wird, enthält einige Unterbefehle wie cryptfsfür die Verschlüsselung. Der enablecryptoUnterbefehl verfügt über zwei Modi: wipe( /datavollständig löschen ) und inplace(angeblich Verschlüsselung anwenden, während Sie Ihr Original /datain den Container kopieren ).

Ab Android 5.0 stehen dann vier Optionen zur Verfügung, von passworddenen eine eine einzelne hexadezimale Sequenz als Schlüssel akzeptiert. Wenn also Ihr Passwort ist foo, dann ist die hexadezimale Darstellung ist 666f6f( fist 66in hex, oist 6f, siehe http://www.asciitable.com/ ). Der Befehl hierfür lautet:

vdc cryptfs enablecrypto wipe password 666f6f

Dies wurde auf einem Nexus 5 (Codename Hammerhead, cm-12.1-20150814) getestet, der über eine separate Partition zum Speichern von Metadaten verfügt. Es ist wichtig, dass für die Benutzerdatenpartition das encryptableFlag gesetzt ist, gefolgt vom Pfad zu einer Partition oder der speziellen Zeichenfolge footer. Eine (abgekürzte) Zeile aus meiner /fstab.hammerheadDatei:

/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ..., check, encryptable = /dev/block/platform/msm_sdcc.1/by-name/metadata

Wenn die spezielle Zeichenfolge footer( encryptable=footer) vorhanden ist, werden 16 KB am Ende der Datenpartition zum Speichern von Verschlüsselungsmetadaten verwendet.

Weitere Informationen finden Sie unter:


Anhang: Logcat-Auszug von dem Moment an, in dem ich den Verschlüsselungsbefehl ausgeführt habe, bis er abgeschlossen ist und neu gestartet wird (wobei am Ende nicht verwandte Grafiknachrichten weggelassen werden). Beachten Sie, dass dieses Nexus 5 über hardwarebeschleunigte Krypto (QSEECom) verfügt.

--------- beginning of main
08-16 12:57:15.459 W/DrmManagerClientImpl(Native)( 2108): DrmManager server died!
08-16 12:57:15.459 I/ServiceManager(  184): service 'drm.drmManager' died
08-16 12:57:15.467 D/Cryptfs (  186): Just asked init to shut down class main
08-16 12:57:15.470 D/Cryptfs (  186): unmounting /mnt/shell/emulated succeeded
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.audio_flinger' died
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.player' died
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.camera' died
...
08-16 12:57:16.695 D/Cryptfs (  186): unmounting /data succeeded
08-16 12:57:16.695 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.696 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:16.697 I/Cryptfs (  186): keymaster version is 3
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.697 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:18.058 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:18.058 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:18.058 I/Cryptfs (  186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:18.208 D/BootAnimation( 2683): Use save memory method, maybe small fps in actual.
08-16 12:57:18.208 E/QCOM PowerHAL( 2683): Failed to acquire lock.
08-16 12:57:18.691 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:18.691 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:18.692 I/Cryptfs (  186): Signing safely-padded object
08-16 12:57:18.797 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:18.797 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:20.056 I/Cryptfs (  186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:20.690 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:20.691 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:20.691 I/Cryptfs (  186): Signing safely-padded object
08-16 12:57:20.796 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:20.796 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:21.429 I/Cryptfs (  186): Enabling support for allow_discards in dmcrypt.
08-16 12:57:21.429 I/Cryptfs (  186): load_crypto_mapping_table: target_type = crypt
08-16 12:57:21.429 I/Cryptfs (  186): load_crypto_mapping_table: real_blk_name = /dev/block/platform/msm_sdcc.1/by-name/userdata, extra_params = 1 allow_discards
08-16 12:57:21.431 I/Cryptfs (  186): Making empty filesystem with command /system/bin/make_ext4fs -a /data -l 13725837312 /dev/block/dm-0
08-16 12:57:21.447 I/make_ext4fs(  186): SELinux: Loaded file_contexts from /file_contexts
08-16 12:57:21.447 I/make_ext4fs(  186): Creating filesystem with parameters:
08-16 12:57:21.447 I/make_ext4fs(  186):     Size: 13725835264
08-16 12:57:21.448 I/make_ext4fs(  186):     Block size: 4096
08-16 12:57:21.448 I/make_ext4fs(  186):     Blocks per group: 32768
08-16 12:57:21.448 I/make_ext4fs(  186):     Inodes per group: 8144
08-16 12:57:21.448 I/make_ext4fs(  186):     Inode size: 256
08-16 12:57:21.448 I/make_ext4fs(  186):     Journal blocks: 32768
08-16 12:57:21.449 I/make_ext4fs(  186):     Label: 
08-16 12:57:21.449 I/make_ext4fs(  186):     Transparent compression: none
08-16 12:57:21.449 I/make_ext4fs(  186):     Blocks: 3351034
08-16 12:57:21.449 I/make_ext4fs(  186):     Block groups: 103
08-16 12:57:21.459 I/make_ext4fs(  186):     Reserved block group size: 823
08-16 12:57:21.465 I/make_ext4fs(  186): Created filesystem with 11/838832 inodes and 93654/3351034 blocks
08-16 12:57:21.465 I/make_ext4fs(  186):     Total files: 0
08-16 12:57:21.465 I/make_ext4fs(  186):     Total bytes: 0
08-16 12:57:42.926 D/Cryptfs (  186): Successfully created filesystem on /dev/block/dm-0
Lekensteyn
quelle
Wow @Lekensteyn, danke, dass du dir die Zeit genommen hast, dies zu schreiben. Ich werde dieses Wochenende einige Zeit damit verbringen müssen, dies einzurichten. Falls ich aufhöre, kann ich einfach alles von TWRP abwischen und es erneut versuchen, oder?
Zlatty
1
Ja, es ist nur die Datenpartition. Ich habe meine absichtlich mehrmals abgewischt, als ich experimentiert habe.
Lekensteyn
2
LPT: Ab 6.0 (Marshmallow) verwendet vdc ein Kennwort, das nicht als Parameter (= Klartext) codiert ist. Es war ziemlich schön, mit der ASCII-Tabelle zu üben, als ich das herausfand - nur wenige Minuten nachdem ich aufgefordert wurde, mein Passwort für den Start einzugeben. Ich musste mein Passwort wegen meiner Schuld in ASCII eingeben lol
Denys Vitali
4

Für mich hat die ursprüngliche Antwort nicht wie erwartet funktioniert. Es sah so aus, als ob es erfolgreich verschlüsselt wurde, aber die Benutzeroberfläche kam sehr schnell zurück und die Einstellung "Verschlüsselung" zeigte nicht an, dass die Geräte verschlüsselt waren. Ich habe dann die im Update angegebenen Befehle angewendet , aber es hat immer noch nicht funktioniert. Ich habe dann die Größe der Datenpartition reduziert und sie erfolgreich verschlüsselt. Dh

mount | grep dataum das eigentliche Blockgerät der Datenpartition zu finden. Nehmen wir an, es ist so /dev/block/mmcblk0p26.

umount /data damit die ext-tools funktionieren.

e2fsck -f -p /dev/block/mmcblk0p26 um keine Probleme mit der bevorstehenden Größenänderung zu bekommen.

tune2fs -l /dev/block/mmcblk0p26 um die Blockanzahl zu erhalten. Nehmen wir an, es ist so 3057395.

resize2fs /dev/block/mmcblk0p26 3057375dh subtrahieren Sie eine ausreichende Menge wie 20 von der ursprünglichen Blockanzahl.

e2fsck -f -p /dev/block/mmcblk0p26 habe eine falsch platzierte Inode für mich gefunden.

Ich musste auch die /systemPartition mounten, um sie zu erreichen resize2fs. Auf meinem System war diese Binärdatei mit einer 64-Bit-Version von libc verknüpft, aber das von mir verwendete TWRP schien dies nicht zu bieten. Also musste ich den Befehlen ein Präfix voranstellen env LD_LIBRARY_PATH=/system/lib64.

Frederick Nord
quelle
Für F2FS-Dateisystem: android.stackexchange.com/questions/146081/…
Marc.2377
2

Ab CM12.1 2015-10-15 funktioniert die Antwort von Lekensteyn nicht mehr.

Anscheinend wurde die mkfs.f2fs, die zum Erstellen des Dateisystems benötigt wird, von /system/bin/nach verschoben/sbin/

Auch müssen wir uns mit SELINUX herumschlagen. Dies bedeutet, dass wir mehrere zusätzliche Schritte ausführen müssen:

  1. adb root
  2. ADB Shell
  3. setenforce 0
  4. mount -oremount, rw / system
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecrypto wipe password 666f6f
Kunst
quelle
2

Ein weiteres Update - CM13 9. Januar 2016 Build mit Nubia Z7 Max, NX505J Telefon

Dieser Befehl ( ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs) wird nicht mehr benötigt, da die Datei wieder hier lebt. Es ist nicht erforderlich, eine symbolische Verknüpfung zu erstellen.

Dieser Befehl muss nicht mehr in HEX sein und wenn Sie hex eingeben, ist Ihr PW hex.
cryptfs enablecrypto wipe password 666f6f- Dies hat buchstäblich ein Passwort für mich von 666f6fnicht erstelltfoo

Ich recherchiere immer noch an diesem Problem, weil ich die zusätzlichen Blöcke überwunden habe, die für die Metadaten benötigt werden. Ich muss jetzt die Tatsache überwinden, dass die GUI und die manuellen Befehle zum Verschlüsseln beide zu einer Verschlüsselung führen, die nur durch einen Startzyklus möglich ist. Ich melde mich zurück, wenn ich eine erfolgreiche Verschlüsselung habe.

Im Moment verschlüssele ich und es funktioniert gut und ich starte das erste Mal und es heißt, das Telefon ist verschlüsselt. Mit TWRP kann ich bestätigen, dass / Daten verschlüsselt sind, aber die HEX- und ASCI-Passwörter, die ich in TWRP versuche, funktionieren beide nicht. Beim nächsten Neustart kann das Android-Betriebssystem CM13 nicht vollständig starten. Es bestätigt, dass ich das richtige Verschlüsselungskennwort habe und dann nur 1 verschlüsselten Start bekomme. Nach dem ersten erfolgreichen verschlüsselten Start wird die Animationsphase des anschließenden Startzyklus gesperrt. Best Practices für die Sicherheit empfehlen jetzt die AES256-Telefonverschlüsselung.

George Davey
quelle
Wie zuverlässig war das System mit der AES256-Telefonverschlüsselung in CM13? Ich habe hier einen Thread über die Sache eröffnet android.stackexchange.com/q/134981/9897
Léo Léopold Hertz 준영
2

Mit einem Moto X 2013 mit Cyanogenmod 12.1 konnte ich es auch nicht verschlüsseln. Schließlich gelang es mir mit diesen Schritten:

  1. Aktivieren Sie root in den Entwicklereinstellungen auf dem Telefon und öffnen Sie eine Shell (Terminal-App, kann auch in den Entwicklereinstellungen aktiviert werden).
  2. Geben Sie ein suund bestätigen Sie den Root-Zugriff
  3. Eingeben setenforce 0
  4. Öffnen Sie nun Einstellungen , gehen Sie zu Sicherheit und wählen Sie Telefon verschlüsseln . Android startet dann neu und beginnt mit der Verschlüsselung des Telefons.

Ich bin zu dieser Lösung gekommen, indem ich die Antwort von Art und diesen Forenthread kombiniert habe .

Bob
quelle
Hat bei mir nicht funktioniert. Übrigens, können Sie den SELinux-Status danach wieder auf 1 setzen?
März 2377
1

Nach 6 Stunden psychischen Schmerzes und Schweißes bin ich vielleicht auf eine Lösung gestoßen, die für mich funktioniert hat. Und es war auch ein Unfall. Ich habe dies für das Samsung S4 Mini mit CyanogenMod 13.0 und Android 6.0.1 getan. Ein wichtiger Schlüsselfaktor hierbei ist, dass ich es von einem sauberen Telefon aus gestartet habe (frische Firmware und nicht gerootet), denn als das Telefon zuvor gerootet war, wollte das Telefon überhaupt nicht funktionieren.

Ich habe die Lösung von Firelord und Lekensteyn für das Problem verwendet, aber es ist mir gelungen, eine Zeile aus den Befehlen zu vergessen.

So habe ich es gemacht:

  1. Ich habe das Android-Debugging und den Root-Zugriff auf ADB nur in den Entwickleroptionen aktiviert .

  2. In der ADB-Eingabeaufforderung habe ich den Befehl adb rootund verwendet adb shell. Danach öffnete ich eine weitere ADB-Eingabeaufforderung und verwendete den adb logcatBefehl.

  3. In der ersten ADB-Shell ging ich mit setenforce 0und danach weiter vdc cryptfs enablecrypto wipe password YOUR-PASSWORD.

WICHTIGER HINWEIS: Der Befehl password kann von der von Ihnen verwendeten Android-Version abweichen. Wenn Sie Android 5.X verwenden , müssen Sie das Hexadezimalsystem verwenden (In der Chr-Zeile befindet sich das Symbol in Ihrem Passwort, der Hexadezimalwert befindet sich in der Hx-Zeile). Wenn Sie Android 6.X verwenden , ist das IHR-PASSWORT das Passwort, das Sie dort eingegeben haben.

Wie Sie dann bemerken, habe ich vergessen, den mount -oremount,rw /systemBefehl zu verwenden. Danach wird der Bildschirm schwarz. Als ich sah, dass die ADB-Shell mit dem Protokoll gestoppt und beendet wurde, startete ich das Telefon neu. Das Problem ist jedoch, dass CyanogenMod nicht geladen wird. Und ich habe es ganz einfach geschafft:

  1. Halten Sie Vol Up & Home & Power gedrückt, bis der TWRP hochfährt. Sie werden nach Ihrem Verschlüsselungskennwort gefragt.
  2. Führen Sie den CyanogenMod-Installationsteil mit den zusätzlichen Google Apps aus (der zweite Teil des Handbuchs).
  3. Starten Sie anschließend das Gerät neu. Wenn es hochfährt, dauert es eine Weile. Zuerst wird das Telefon gestartet, dann wird das Verschlüsselungskennwort abgefragt, und dann dauert es eine Weile, bis es hochfährt.

Los geht's, es sollte funktionieren. Wenn das Telefon eingerichtet ist, lassen Sie es zunächst eine Minute lang laufen. Es kann zu einem kleinen Absturz des Setup-Assistenten kommen, wenn Sie ihn zu schnell beschleunigen. Er wird jedoch automatisch neu gestartet, wenn er abstürzt.

In meinem sehr kleinen Wissen darüber, wie das CyanogenMod und die Android-Verschlüsselung funktionieren, denke ich, dass während des Formats einige wichtige Cyanogen- oder Android-Dateien gelöscht werden, was das Booten verhindert.

Andrei Viitel
quelle
1

Die Verschlüsselung funktionierte auf meinem Telefon nicht (SGS5; CM13, TWRP 3.0.2-2) - ich habe immer einen schwarzen Bildschirm.

Ich wollte keine Shell-Befehle verwenden, also habe ich einen anderen Weg gefunden:

Ich hatte SuperSU installiert, ich habe es in der App deinstalliert und dann den SU-Remover geflasht .

Danach konnte ich die Verschlüsselung aus dem Menü verwenden.

Warnung:

  • Durch die Verschlüsselung wurden alle meine Daten und Apps (einschließlich Dateien auf der internen SD) gelöscht. Erstellen Sie also zuerst ein Backup !
  • Nach der Verschlüsselung hatte ich nur noch 2 GB internen Speicherplatz (normalerweise 11 GB) - ich musste einen vollständigen Löschvorgang durchführen (auch Cyanogenmod selbst entfernen), Cyanogenmod neu installieren und einen weiteren Verschlüsselungsversuch durchführen, um meinen Speicherplatz wiederherzustellen.
  • Sie müssen auch root reaktivieren, ich habe dafür BETA-SuperSU-v2.68-20160228150503 verwendet (Flash mit Twrp).
hinneLinks
quelle