Die Einstellung „Telefon verschlüsseln“ von CyanogenMod 12 und 12.1 ist defekt , und das schon seit geraumer Zeit. Gibt es eine Möglichkeit, das Telefon auf andere Weise zu verschlüsseln? Kann CM mit einem verschlüsselten /data-Verzeichnis von der Seite auf ein Telefon geladen werden? Gibt es noch andere Möglichkeiten, Ihre Daten sicher zu verwahren? Das Gerät, an dem ich arbeite, ist ein Verizon LG G3.
Es gibt Low(er)-Level-Befehle, die in einer Shell verwendet werden können, um Ihre Benutzerdatenpartition zu verschlüsseln. Haftungsausschluss/Warnung: Die folgenden Anweisungen löschen Ihre Daten , stellen Sie sicher, dass Sie bei Bedarf eine Sicherungskopie erstellen.
Wenn Sie diesen Schritten folgen, sollten Sie in der Lage sein, Ihre Datenpartition zu löschen und anschließend zu verschlüsseln (ähnlich wie bei einem Zurücksetzen auf die Werkseinstellungen):
adb root
gefolgt von ein adb shell
.adb logcat
in einer anderen Shell aufrufen.Geben Sie diesen Befehl ein, geben Sie Ihr Passwort ein und drücken Sie die Eingabetaste. Dadurch wird Ihr Passwort tatsächlich festgelegt. Dieser Befehl liest eine Eingabezeile ( head -1
), entfernt den abschließenden Zeilenumbruch von der Eingabetaste ( tr -d '\n'
) und konvertiert sie in eine hexadezimale Darstellung ( hexdump ...
). Wenn es beängstigend aussieht oder wenn Sie sich nicht sicher sind, was dieser Befehl bewirkt, siehe unten.
vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
Der obige vdc
Befehl ("Volume Daemon Client"), der mit (Volume Daemon) kommuniziert wird, vold
hat einige Unterbefehle wie zum Beispiel cryptfs
für die Verschlüsselung. Der enablecrypto
Unterbefehl hat zwei Modi: wipe
(vollständig löschen /data
) und inplace
(angeblich Verschlüsselung anwenden, während Ihr Original /data
in den Container kopiert wird).
Dann stehen ab Android 5.0 vier Optionen zur Verfügung, eine davon password
akzeptiert eine einzelne Hexadezimalsequenz als Schlüssel. Wenn Ihr Passwort also lautet foo
, dann ist die hexadezimale Darstellung 666f6f
( f
is 66
in hex, o
is 6f
, siehe http://www.asciitable.com/ ). Der Befehl dazu lautet:
vdc cryptfs enablecrypto wipe password 666f6f
Dies wurde auf einem Nexus 5 (Codename Hammerhead, ausgeführt mit cm-12.1-20150814) getestet, das über eine separate Partition zum Speichern von Metadaten verfügt. Es ist wichtig , dass für die Benutzerdatenpartition das encryptable
Flag gesetzt ist, gefolgt von entweder dem Pfad zu einer Partition oder der speziellen Zeichenfolge footer
. Eine (abgekürzte) Zeile aus meiner /fstab.hammerhead
Datei:
/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 KiB am Ende der Datenpartition zum Speichern von Verschlüsselungsmetadaten verwendet.
Zum Weiterlesen siehe:
Anhang: Logcat-Auszug von dem Moment an, in dem ich den Verschlüsselungsbefehl ausgeführt habe, bis er beendet und neu gestartet wurde (ohne zusammenhängende Grafikmeldungen am Ende). Beachten Sie, dass dieses Nexus 5 über hardwarebeschleunigte Kryptographie (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
Für mich hat die ursprüngliche Antwort nicht wie erwartet funktioniert. Es sah so aus, als ob die Verschlüsselung erfolgreich war, aber die Benutzeroberfläche kam sehr schnell zurück und die Einstellung „Verschlüsselung“ zeigte nicht, 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 data
um das tatsächliche Blockgerät der Datenpartition zu finden. Nehmen wir an, es ist /dev/block/mmcblk0p26
.
umount /data
damit die Ext-Tools funktionieren.
e2fsck -f -p /dev/block/mmcblk0p26
um bei der anstehenden Größenänderung nicht in Schwierigkeiten zu geraten.
tune2fs -l /dev/block/mmcblk0p26
um den Blockzähler zu erhalten. Nehmen wir an, es ist 3057395
.
resize2fs /dev/block/mmcblk0p26 3057375
, dh subtrahieren Sie einen ausreichenden Betrag wie 20 von der ursprünglichen Blockanzahl.
e2fsck -f -p /dev/block/mmcblk0p26
fand eine falsch platzierte Inode für mich.
Ich musste auch die Partition mounten /system
, um an 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 das Präfix voranstellen env LD_LIBRARY_PATH=/system/lib64
.
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 wir haben mit SELINUX zu kämpfen. Dies bedeutet, dass wir mehrere zusätzliche Schritte ausführen müssen:
Adb-Stamm
ADB Shell
erzwingen 0
mount -oremount,rw /system
ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
vdc cryptfs enablecrypto Wipe-Passwort 666f6f
Ein weiteres Update – CM13 vom 9. Januar 2016 erstellt , 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, einen symbolischen Link 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 erstellte buchstäblich ein Passwort für mich 666f6f
nichtfoo
Ich recherchiere immer noch zu diesem Problem, weil ich die zusätzlichen Blöcke, die für die Metadaten benötigt werden, überwunden habe. Ich muss jetzt über die Tatsache hinwegkommen, dass die GUI und die manuellen Befehle zum Verschlüsseln beide zu einer Verschlüsselung führen, die nur durch einen Boot-Zyklus durchführbar ist. Ich werde berichten, wenn ich eine erfolgreiche Verschlüsselung habe.
Im Moment verschlüssele ich und es funktioniert gut und ich boote das erste Mal und es sagt, dass das Telefon verschlüsselt ist. Mit TWRP kann ich bestätigen, dass /data verschlüsselt ist, 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 booten. Es bestätigt, dass ich das richtige Verschlüsselungspasswort habe und dann bekomme ich nur 1 verschlüsselten Start. Nach dem ersten erfolgreichen verschlüsselten Start sperrt es danach die Animationsphase des Boot-Zyklus. Best Practices für Sicherheit empfehlen jetzt AES256-Telefonverschlüsselung.
Mit einem Moto X 2013 mit Cyanogenmod 12.1 konnte ich es auch nicht verschlüsseln. Schließlich gelang es mir mit diesen Schritten:
su
ein und bestätigen Sie den Root-Zugriffsetenforce 0
Ich bin zu dieser Lösung gekommen, indem ich die Antwort von Art und diesen Forumsthread kombiniert habe .
Nach 6 Stunden mentalem Schmerz und Schweiß 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 gemacht. Wichtiger Schlüsselfaktor hierbei ist, dass ich es von einem sauberen Telefon aus gestartet habe (frische Firmware und nicht gerootet), denn wenn das Telefon zuvor gerootet war, wollte das Telefon überhaupt nicht funktionieren.
Ich habe die Lösung des Problems von Firelord und Lekensteyn verwendet, aber ich habe es geschafft, eine Zeile aus den Befehlen zu vergessen.
So habe ich es gemacht:
Ich habe das Android-Debugging und den Root-Zugriff auf ADB nur in den Entwickleroptionen aktiviert .
In der ADB-Eingabeaufforderung habe ich den Befehl adb root
and verwendet adb shell
. Danach habe ich eine weitere ADB-Eingabeaufforderung geöffnet und den adb logcat
Befehl verwendet.
In der ersten ADB-Shell bin ich mit setenforce 0
und danach weitergegangen vdc cryptfs enablecrypto wipe password YOUR-PASSWORD
.
WICHTIGER HINWEIS: Der Passwortbefehl 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 steht das Symbol in Ihrem Passwort, der Hexadezimalwert steht in der Hx-Zeile). Wenn Sie Android 6.X verwenden , ist IHR PASSWORT das Passwort, das Sie dort eingegeben haben.
Wie Sie bemerken, habe ich vergessen, den mount -oremount,rw /system
Befehl zu verwenden. Danach wird der Bildschirm schwarz. Als ich gesehen habe, dass die ADB-Shell mit dem Log gestoppt und beendet wurde, habe ich das Telefon neu gestartet. Aber wie bei allen ist das Problem, dass CyanogenMod nicht geladen wird. Und ich habe es ganz einfach geschafft, es zu beheben:
Los geht's, es sollte funktionieren. Wenn das Telefon eingerichtet wird, lassen Sie es zunächst eine Minute lang in Ruhe. Es kann einen kleinen Absturz für den Setup-Assistenten geben, wenn Sie ihn zu schnell überstürzen, aber er wird automatisch neu gestartet, wenn er abstürzt.
In meinem sehr geringen Wissen darüber, wie CyanogenMod und die Android-Verschlüsselung funktionieren, denke ich, dass es während des Formatierens einige wichtige Cyanogen- oder Android-Dateien löscht, was es am Booten hindert.
Auf meinem Handy (SGS5; CM13, TWRP 3.0.2-2) funktionierte die Verschlüsselung nicht - ich bekam immer einen schwarzen Bildschirm.
Ich wollte keine Shell-Befehle verwenden, also habe ich einen anderen Weg gefunden:
Ich hatte SuperSU installiert, habe es in der App deinstalliert und dann den SU-Remover geflasht .
Danach konnte ich die Verschlüsselung aus dem Menü verwenden.
Warnung:
Zlatty
Lekenstein
Denis Vitali