D
Defier
Dauer-User
- 232
Achtung: Dieser Patch ist momentan nur für Leute geeignet, die sich mit Linux und LUKS auskennen und deshalb genau wissen, was sie tun! Ich übernehme keine Verantwortung für Schäden jeglicher Art an euren Geräten!
Vor dem Ausprobieren rate ich dringend zu einem kompletten Backup eures Geräts! Eine Deinstallation ist momentan nicht möglich, ausser durch Rücksetzen des Geräts via sbf-flash.
Stand: 02.12.2012
== Motivation ==
Bislang gibt es keine Möglichkeit, die Datenpartition und die SD-Karte eines Defy(+) komplett zu verschlüsseln. Eine solche Möglichkeit ist zwar theoretisch ab Android3 direkt im System eingebaut, in den derzeitigen Builds von CM9/CM10/CM10.1 ist das Feature jedoch noch nicht implementiert. Viele Defy-Nutzer sind der Ansicht, dass Android 2.3 (u.a. durch den geringeren RAM-Bedarf) auf dem Defy besser läuft als Android 4, daher ist die Möglichkeit der Verschlüsselung für Android 2.3 selbst dann interessant, wenn es diese auch in einem Android4-basierenden CM irgendwann in der Zukunft geben sollte.
Ein generelles Problem dieser eingebauten Verschlüsselung ist zudem, dass die Datenpartition nicht optional auf der SD-Karte gehalten werden kann - dadurch ist bei einem Geräteschaden (z.B. Sturz) ohne weiteres kein Zugriff von extern auf die Daten möglich. Liegt die Datenpartition jedoch auf der SD-Karte, kann diese einfach aus dem Gerät entnommen und mit auf anderen Systemen verfügbaren Werkzeugen (LUKS und Linux, FreeOFTE unter Windows) eingehängt werden.
== Verwandte Projekte ==
Es gibt ein paar verwandte Projekte, diese eignen sich jedoch nur für andere Geräte (HTC Wildfire, Nexus One):
LUKS/LuksApp (https://github.com/guardianproject/LUKS)
Luksunlock (https://github.com/guardianproject/luksunlock)
Yaffsunlock (https://github.com/scintill/yaffsunlock)
== Was macht dieser Patch? ==
Zunächst einmal erweitert der Patch CM7 um folgende Bestandteile:
- das cryptsetup binary (von GuardianProject/LUKS)
- Kernel-Module für jbd2 und ext4 (aus Quarx2k's Custom Kernel für CM10)
- angepasstes init.rc aus Cyanogenmod 7.2-stable (Achtung: existierendes init.rc wird ersetzt!)
- (temporär) mitgelieferter Beispielschlüssel für die Verschlüsselung
Nach der Installation des Patches wird die existierende Datenpartition beim Bootvorgang ignoriert und nicht mehr eingehängt! Stattdessen wird eine verschlüsselte Datenpartition auf der SD-Karte genutzt!
== Status ==
Der Patch befindet sich momentan noch in der Entwicklung. Die aktuelle Version 0.1 soll nur einen Vorgeschmack auf die noch kommende Funktionalität bieten. Er bietet im Moment keinen großen Sicherheitsgewinn (siehe TODOs). Die Geschwindigkeitseinbußen sind erträglich und treten vor allem beim Schreiben auf den internen Speicher auf - die Lesegeschwindigkeit ist nur wenig betroffen. Siehe dazu auch die beigefügten Benchmarks.
== Voraussetzungen ==
- Grundlagenwissen über LUKS
- gerootetes Defy mit CWM und CM7.2-stable
- mSD-Karte im Defy
== Installation ==
1. Schritt: Schlüssel für die spätere Verschlüsselung erzeugen:
dd if=/dev/random of=lukskey bs=1 count=32
2. Schritt: SD-Karte extern (oder über CWM) neu partitionieren. Im folgenden gehe ich davon aus, dass die SD-Karte als Gerät "/dev/sdb" verfügbar ist. Sie sollte nun wie folgt umpartitioniert werden:
/dev/sdb1: das bisherige FAT32 (ggf. existierende Partition verkleinern)
/dev/sdb2: eine neue Partition vom Typ Linux (82)
3. Schritt: Zweite Partition der SD-Karte mit dem zuvor erstellten Schlüssel verschlüsseln (unter Linux):
cryptsetup -c cipher=aes-cbc-plain luksFormat /dev/sdb2 /path/to/lukskey
4. Schritt: Partition einhängen und ext4-Dateisystem auf verschlüsselter Partition erzeugen:
cryptsetup --key-file /path/to/lukskey luksOpen /dev/sdb2 encrypteddata
mkfs.ext4 /dev/mapper/encrypteddata
cryptsetup luksClose /dev/mapper/encrapteddata
5. Schritt: Schlüsseldatei system/etc/lukskey im Archiv defyluks.zip ersetzen (Archiv entpacken, Schlüssel ersetzen, Archiv wieder zusammenpacken)
6. Schritt: Das neu zusammengepackte defyluks.zip via CWM installieren und das Defy booten.
== Versionshistorie ==
0.1 (02.12.2012): First pre-release
== Ausblick / TODO (geordnet nach Priorität) ==
- Eingehängte Datenpartition beim Herunterfahren aushängen, um Datenverluste zu vermeiden
- Schlüsseleingabe über minui ermöglichen (der hart verdrahtete Schlüssel bietet keine echte Sicherheit. Es sei denn, einem wird nur die SD-Karte ohne das Gerät gestohlen oder z.B. der Touchscreen geht kaputt und man möchte das Gerät ohne seine Daten zur Reparatur einschicken)
- Loopback-Devices auf existierender SD-Karte (ohne Umpartitionierung) unterstützen
- Anderen Cipher als aes-cbc-essiv unterstützen (Modul fehlt leider in Defy Stock-Kernel)
- Installation vereinfachen (Setup-GUI ähnlich LuksApp)
- Dokumentation verbessern (Handbuch...)
- Speicherung des Images optional auch im internen Flash unterstützen (ich sehe hier zwar einige Nachteile, aber okay)
- Andere Dateisysteme, evtl. auch yaffs2 unterstützen (yaffs2 macht auf der SD-Karte wenig Sinn, im internen Flash hingegen schon)
- Verschlüsselung der SD-Karte (mnt/sdcard/*) unterstützen
- Weitere Defy-ROMs unterstützen
- Vorkompilierte Binaries durch selbst übersetzte Binaries ersetzen
- Aktuell im Einsatz befindliches Pfusch-Skript durch anständiges Build-System ersetzen
- Mehr Werbung für das Projekt machen (GitHub-Seite etc.)
- Andere Geräte mit Android 2.3 unterstützen
- Bootvorgang beim ersten Start beschleunigen (erster Boot dauert über 3 Minuten)
Feedback ist willkommen! Wenn mich jemand bei der weiteren Entwicklung unterstützen möchte bitte ich um eine kurze PM.
Anhänge
Zuletzt bearbeitet: