Verschlüsselung - cryptsetup und luksOpen?
Hey,
ich lese mich gerade bei der Verschlüsselung von Dateisystemen ein. Dabei wird gezielt cryptsetup und LUKS eingesetzt.
Die Vorgehensweise ist so beschrieben:
cryptsetup installieren:
apt install cryptsetup
Kernel-Modul für Device Mapper laden:
modprobe dm_mod
Verschlüsselung der Partition:
cryptsetup luksformat /dev/sdb1
Gerätedatei für DeviceMapper erstellen:
cryptsetup luksOpen /dev/sdb1 safe
Gerätedatei (USB-Stick) formatieren:
mkfs.ext2 /dev/mapper/safe
Verzzeichnis erstellen:
mkdir /safe
Mountpoint erstellen:
mount /dev/mapper/safe /safe
Ich verstehe den Part mit dem Device Mapper nicht. Es wird eine extra Datei /dev/mapper/safe durch den Befehl
cryptsetup luksOpen /dev/sdb1 safe
erstellt.
Warum geht nicht einfach mkfs.ext2 /dev/sdb1?
2 Antworten
In dieser Datei liegen die Verschlüsselungsinformationen ab. Damit man sie nicht versehendlich Löscht und sich so seine Partition praktisch unlesbar macht.
Weil die verschlüsselten Daten nicht auf /dev/sdb1 kommen, sondern auf ein virtuelles crypto Laufwerk.
Dieses Laufwerk ist aber dann nicht auf dem Stick?
Wird die Partition dann gar nicht mehr benutzt?
Wenn /dev/sdb1 ein Stick ist, dann doch, Crypto liegt virtuell darüber. Ist egal, ob Stick oder HD.
Weil du auf dem Gerät selber eine Verschlüsselte Partion hast, in dieser Partition befindet sich dann noch mal eine Partition mit einem Dateisystem.
Die Mapper Datei ist quasi ein Zwischenschritt, eine virtuelle Partition die den unverschlüsselten Inhalt des Blockgeräts darstellt.
Würdest du direkt auf die Partition schreiben würdest du ja auf die verschlüsselten Daten schreiben, dann würdest du ja durch das erstellen eines unverschlüsselten Dateisystems da wieder unverschlüsselte Daten haben.
Stell es dir so vor:
mkfs, mount usw. <---Unverschlüsselter Datenstrom ---> /dev/mapper/safe <-- Verschlüsselung --> /dev
/sdb1
Also wenn man z.B. einen USB-Stick nimmt...
- dann hat dieser Stick 2 Partitionen?
- 1 Partition, die verschlüsselt ist und eine Gerätedatei (die ebenfalls eine Partition ist?) die unverschlüsselt ist?
Will ich auf den Stick zugreifen, brauche ich ein Passwort, das holt er aus dieser Gerätedatei? Die Gerätedatei ist quasi eine Partition in dieser Partition?
Ich raffs einfach nicht...
Naja, du hast außen eine verschlüsselte Partition und in dieser sind ja Daten. In dieser verschlüsselten Partition hast du dann noch mal ein normales File System wie etwa ext4, btrfs usw.
Der verschlüsselte Bereich funktioniert über die Mapper Datei dann wie eine unverschlüsselte Partition, verstehst du ?
dm crypt regelt den Teil mit der Mapper Datei. Die sorgt wie erwähnt dafür, dass du den verschlüsselten Bereich über die Mapper Datei wie eine unverschlüsselte Partition nutzen kannst.
LUKS regelt das Key Management und ist ein Standard um die ganzen Informationen die du zum entschlüsseln brauchst auch in dieser verschlüsselten Partition zu speichern. Etwa mehrere Key Slots für unterschiedliche Passphrasen.
Vielleicht ist es einfacher wenn du nicht in Partitionen denkst sondern in Blockdevices. Du kannst einen ganzen USB Stick als Blockdevice ansteuern, wie etwa /dev/sdb. Du kannst auch eine einzelne Partition als Blockdevice ansteuern wie etwa /dev/sdb1. Oder eben so eine Mapper Datei wie /dev/mapper/safe die im Hintergrund über dm Crypt dann auf eine verschlüsselte Partition wie /dev/sdb1 gemapped ist und über das dm crypt Kernel Modul die Daten dann im Hintergrund verschlüsselt speichert. All diese Sachen funktionieren quasi gleich nur eben wo der Kernel die Daten die geschrieben und gelesen werden hin schickt ist eben anders.
- Also ist die Mapper-Datei nicht auf dem "USB-Stick" sondern auf meinem System?
- Kann ich den Stick dann nicht auf einem anderen System nutzen?
- Der veschlüsselte Bereich hat dann kein Dateisystem?
- Ich dachte, mit LUKS verschlüssel und entschlüssel ich das Dateisystem
- Die Mapper-Datei gewährt mir Zugriff auf die Partition, lässt mich dadurch Daten auf der Partition speichern und verschlüsselt es anschließend durch das Kernel-Modul?
Sorry, vielleicht brauch ich ein Bild oder so... ich versteh es nicht :(
Durch die Mapper Datei kann ich von meinem System quasi auf die verschlüsselte Partition drauf und daten speichern, ansonsten wäre die Partition für mich nicht zugänglich? Aber mann kann doch einfach eine Passphrase eingeben und kommt dran drauf? Dann brauch ich doch keine Mapper-Datei...
Mit Luks kann ich die Partition verschlüsseln und entschlüsseln?
dm-crypt ist nur für die Ausführung von LUKS zuständig?
Du brauchst DM Crypt in der Mitte worüber ja die Verschlüsselung funktioniert und dafür ist die Mapper Datei, auf /dev/sdb1 sind die Daten in der verschlüsselten Form.
Und ja über die Passphrase kannst du dann auf die verschlüsselten Daten über die Mapper Datei zugreifen.
Und ja, dm-crypt ist quasi für LUKS zuständig, aber man könnte dm-crypt auch ohne Luks nutzen. Dann hättest du aber diese Features wie die Passphrase nicht sondern müsstest den Schlüssel direkt angeben, LUKS nimmt dir so etwas ab.
die Partition verschlüsseln:
sudo cryptsetup luksFormat GERÄTEDATEI
Zuweisung der verschlüsselten Partition einem virtuellen Gerät (nach Passworteingabe wird eine Gerätedatei /dev/mapper/usb-crypt angelegt, über die der verschlüsselte Inhalt zugänglich ist):
sudo cryptsetup luksOpen GERÄTEDATEI usb-crypt
Die Partition steht jetzt unter dem virtuellen Gerät /dev/mapper/usb-crypt zur Verfügung und kann mit einem Dateisystem beschrieben werden (z.B. ext4):
sudo mkfs.ext4 /dev/mapper/usb-crypt
Ich versteh es so, dass LUKS für die Verschlüsselung zuständig ist und das Programm cryptsetup zur Ausführung braucht, da LUKS das nicht selber kann.
Die Mapper-Datei brauch ich, damit ich an die verschlüsselten Daten komme. Damit die Mapper-Datei benutzt werden kann, wird das Kernel-Modul benötigt.
Abgesehen von meiner Vorstellungsweise..
Ich verstehe nicht, wie das dann funktioniert, wenn ich den Stick an einem anderen Gerät anschließe. Kann ich da dann mittels einer Passphrase auf die Daten zugreifen oder ist der Zugriff nur mit meinem System möglich über die Mapper-Datei?
Moment... ich muss die Partition verschlüsseln.. um an die Partition zu kommen, brauche ich eine Mapper-Datei. Komme ich auf die Partition, kann ich ein Dateisystem draufspielen. Ist das so korrekt?
Dann kann ich nur an den Stick ran, wenn ich von meinem System über die Mapper-Datei drauf zugreife? Mit anderen Systemen wäre das dann nicht möglich?
Die Mapper Datei ist temporär solange die Partition mit der Passphrase oder dem Keyfile entsperrt ist.
Also das funktioniert schon auf jedem System, solange man eben das Passwort kennt oder ein Keyfile hat um die Partition zu entsperren.
Danke schon mal für die Antwort. Warum muss ich dann:
eingeben und nicht mkfs.ext2 /dev/sdb1?
Partition wird verschlüsselt, eine spezielle Datei wird auf dieser Partition erstellt und dann soll ich diese Datei formatieren, welches aber die ganze Partition formatiert?
Wo ist mein Denkfehler?