cryptsetup, Key-Empfehlung

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
sergej2018

cryptsetup, Key-Empfehlung

Beitrag von sergej2018 » 19.09.2017 21:38:59

Hallo,

ich benutze in div. Umgegungen cryptsetup.
Habe eine Frage zur Nutzung von Keys:

Gehe mal davon aus, Keys sind sicherer als Passwörter?
Wie erstelle ich am besten Keys? Bei Anleitungen im Netz wird meist /dev/random benutzt.
Ich mache es bisher so, dass ich ssh-keys erstelle (rsa) und davon mehrere hintereinander in eine Datei schreibe, welche ich dann als Key verwende. Zusätzlich drehe ich den iterations-Wert eines Volumes hoch.
Was empfehlt ihr?

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: cryptsetup, Key-Empfehlung

Beitrag von cronoik » 20.09.2017 01:06:36

sergej2018 hat geschrieben: ↑ zum Beitrag ↑
19.09.2017 21:38:59
...Gehe mal davon aus, Keys sind sicherer als Passwörter?...
Das kommt auf die Betrachtung an. Ein 128-stelliges Passwort hat den Vorteil, dass es mir nicht von irgendwelchen Datentraegern gestohlen werden kann, weil ich es mir gemerkt habe. Allerdings sind die meisten Passworter nicht 128 Stellen lang und folgenden gewissen Mustern wenn sie von Menschen erzeugt werden.
sergej2018 hat geschrieben: ↑ zum Beitrag ↑
19.09.2017 21:38:59
Ich mache es bisher so, dass ich ssh-keys erstelle (rsa) und davon mehrere hintereinander in eine Datei schreibe, welche ich dann als Key verwende. Zusätzlich drehe ich den iterations-Wert eines Volumes hoch.
Was empfehlt ihr?
Zu der Erzeugung von keys faellt mir nichts weiter ein, aber IT-Sicherheit ist ein breites Thema. Wenn die Keys nicht geschuetzt sind, dann nuetzt dir auch ein toller und sicherer Key nichts. Unter [1] findest du eine umfangreiche Checkliste. Auch das cryptsetup wiki [2] gibt Hinweise.

[1] https://github.com/lfit/itpol/blob/mast ... ecurity.md
[2] https://gitlab.com/cryptsetup/cryptsetu ... ty-aspects
Hilf mit unser Wiki zu verbessern!

Benutzeravatar
spiralnebelverdreher
Beiträge: 1294
Registriert: 23.12.2005 22:29:03
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Frankfurt am Main

Re: cryptsetup, Key-Empfehlung

Beitrag von spiralnebelverdreher » 20.09.2017 10:03:45

sergej2018 hat geschrieben: ↑ zum Beitrag ↑
19.09.2017 21:38:59
Hallo,

ich benutze in div. Umgegungen cryptsetup.
Habe eine Frage zur Nutzung von Keys:

Gehe mal davon aus, Keys sind sicherer als Passwörter?
Wie erstelle ich am besten Keys? Bei Anleitungen im Netz wird meist /dev/random benutzt.
Ich mache es bisher so, dass ich ssh-keys erstelle (rsa) und davon mehrere hintereinander in eine Datei schreibe, welche ich dann als Key verwende. Zusätzlich drehe ich den iterations-Wert eines Volumes hoch.
Was empfehlt ihr?
Ich selbst (Heimanwender mit Desktop-PC / Notebook) benutze für LUKS (cryptsetup) Passwörter mit mehr als 16 zufälligen Zeichen, die mir mein Passwortmanager erstellt. Solche Passwörter kann man noch halbwegs bequem auf Papier schreiben und von Hand eintippen, wenn in der Zielumgebung noch kein Passwortmanager zur Verfügung steht (bspw. beim Booten) oder es mühsam wäre, erst einen Keyfile dorthin zu kopieren. Ob das für dich ein Argument ist, hängt von deiner Einsatzumgebung ab. Ein Mehr von Sicherheit durch ein Keyfile ist in der oben skizzierten Umgebung zwar vorhanden, aber lächerlich gering (hinreichend gutes Passwort vorausgesetzt). Ob mein Gegner nun Tausend oder 100.000 Jahre braucht um meinen Container aufzuschliessen halte ich für nebensächlich. Ein mächtiger Gegner wird andere Wege finden, mich innerhalb von Tagen oder Wochen gefügig zu machen und zu erpressen.

Ich sehe den praktischen Vorteil von Keyfiles in Umgebungen, in denen scriptgesteuert größere Mengen an verschlüsselten Containern erzeugt und geöffnet werden und in Umgebungen, in denen der Iterationswert der Schlüsselableitungsfunktion nicht sehr hoch sein kann wegen eines lahmen Prozessors (Embedded Device, Smartphone).

Es kommt also auf deine "div. Umgegungen" an. Vielleicht erläuterst du das mal näher.

sergej2018

Re: cryptsetup, Key-Empfehlung

Beitrag von sergej2018 » 20.09.2017 12:38:03

Das erläutere ich gern näher ;-)

Habe - genau wie du - meine Heim-Geräte verschlüsselt. Normalerweise ist das System da nur mit einem Kennwort geschützt, um die Daten einzubinden wird dann ein Keyfile genutzt, das auf einem verschlüsselten Stick ist.
Idee dabei: Zwei-Phasen-Auth. Verliere ich mein Laptop (oder es wird gestohlen o.ä.), so ist der USB-Stick mit großer Wahrscheinlichkeit nicht dabei. Zumindest die Daten-Partition ist dann sicher geschützt.
Es gab in der Firma einen Fall, in dem ein Admin beim Eingeben eines Passwortes gefilmt wurde (ja, ich konnte es auch kaum glauben). Dieses Problem umgehe ich mit dem Stick. Denn auch dieser ist verschlüsselt, aber das Passwort für den Stick bringt ohne den Stick selbst auch nicht viel.

Zusätzlich betreue ich diverse Server. In diesen laufen meist verschlüsselte Raid-Systeme mit vielen Festplatten, da ist ein Stick oft schlicht einfacher...

Benutzeravatar
spiralnebelverdreher
Beiträge: 1294
Registriert: 23.12.2005 22:29:03
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Frankfurt am Main

Re: cryptsetup, Key-Empfehlung

Beitrag von spiralnebelverdreher » 20.09.2017 14:00:05

sergej2018 hat geschrieben: ↑ zum Beitrag ↑
20.09.2017 12:38:03
Habe - genau wie du - meine Heim-Geräte verschlüsselt. Normalerweise ist das System da nur mit einem Kennwort geschützt, um die Daten einzubinden wird dann ein Keyfile genutzt, das auf einem verschlüsselten Stick ist.
Idee dabei: Zwei-Phasen-Auth. Verliere ich mein Laptop (oder es wird gestohlen o.ä.), so ist der USB-Stick mit großer Wahrscheinlichkeit nicht dabei. Zumindest die Daten-Partition ist dann sicher geschützt.
Du benutzt deinen USB Stick also als (statischen) Passwortmanager, wenn ich ich es richtig verstehe. Hört sich sicher an. Wie hast du es mit der Usability geregelt? Geschieht etwas automatisch wenn du den Stick einsteckst oder machst du alles von Hand?
Anmerkung: Beim Laptop unterwegs solltest du die diversen Ruhe-Zustände des Gerätes betrachten (Suspend-to-disk, suspend-to-RAM), da der Container nur sicher verschlüsselt ist wenn er beim herunterfahren geschlossen wird. Auch swap Partitionen müssen in diesem Szenario betrachtet warden.
sergej2018 hat geschrieben: ↑ zum Beitrag ↑
20.09.2017 12:38:03
Es gab in der Firma einen Fall, in dem ein Admin beim Eingeben eines Passwortes gefilmt wurde (ja, ich konnte es auch kaum glauben). Dieses Problem umgehe ich mit dem Stick. Denn auch dieser ist verschlüsselt, aber das Passwort für den Stick bringt ohne den Stick selbst auch nicht viel.
Da wird es natürlich schon anspruchsvoller, wenn man Angreifer berücksichtigen muss, der Zugang ins Gebäude hat und dort eine Kamera anbringen kann oder eine Tastatur austauschen kann.
Mehr würde dir hier ein Hardwaretoken bringen, der zeitlich kurzlebig gültige Zugangsdaten oder nur einmal gültige Zugangsdaten generiert. Einen Datenstick kurzzeitig kurz zu "entleihen" um ihn komplett zu kopieren (mit dd) wäre ein Angriffsvektor, der zusammen mit einer abgefilmten Passworteingabe (oder einem Keylogger) sehr wirksam ist.
sergej2018 hat geschrieben: ↑ zum Beitrag ↑
20.09.2017 12:38:03
Zusätzlich betreue ich diverse Server. In diesen laufen meist verschlüsselte Raid-Systeme mit vielen Festplatten, da ist ein Stick oft schlicht einfacher...
Da sind Keyfiles sicher das Mittel der Wahl. Wobei natürlich Server, die 24h laufen, und verschlüsselte Datenträger nur solange in eine Sicherheitskonzept passen wie die Dateisysteme nicht eingebunden sein müssen.

wanne
Moderator
Beiträge: 7447
Registriert: 24.05.2010 12:39:42

Re: cryptsetup, Key-Empfehlung

Beitrag von wanne » 20.09.2017 17:28:52

sergej2018 hat geschrieben: ↑ zum Beitrag ↑
19.09.2017 21:38:59
Gehe mal davon aus, Keys sind sicherer als Passwörter?
Ich weiß jetzt nicht genau was du meinst. Aber wenn du die Option --key-file oder die dritte Spalte in der crypttab meinst, dann wird da kein Unterschied gemacht. Ob du da dein Passwort oder sonst irgend welchen Mist reinschreibst ist dem völlig Wurst. Je geordneter du das machst desto länger muss das PW halt sein.
Es gilt halt:
  1. Ein gleichverteiltes Byte entspricht 8Bit Entropie
  2. Ein gelichverteilten Buchstabe: ~6Bit (pwgen -s)
  3. Ein Byte in einem aussprechbaren Phantasiewort: ~4Bit (pwgen)
  4. Eine Gleichverteilte Ziffer ~3.3Bit
  5. Ein deutsches übliches flexiertes Wort ~18Bit
  6. Ein deutsches übliches Wort ~16Bit
  7. Ein Fachbegriff der Chemie ~20Bit
  8. Ein byte in einem deutschen Satz ~1Bit
Willst du auf die vollen 265 Bit von Serpent-256 o.ä. kommen Kannst du also vergleichbar folgende Passwörter nehmen:

Code: Alles auswählen

3181a21bc76f2d996a80da7fb93caaeff6d3cb8154a292d828eb5a00c41fe2a6
QIAgz3m8d5syRqWbhIRXb4XsUuDlpa8qCdQrQ41YXW
iefaiYaoraisohjohgeiJievohpieleimujooYeboPezeneethoziemahChaeTho
47935369287071450971659417975110141967218466301463678088076970690106299429287
AnachronismenmassiverembelangstGedichtsammlungSingvögelüberstreckeabzugebenderQuacksalberNeuberechnungenEunuchAnhängerfabrikenunratsamesWalzenarmUmverteilungsmechanismen
führersaurierChristallehestempfehlungsgemäldePfleglingHewlettWeidfraurächerdifferentiellHypochondernächstgrößereschließlichausrüsterwalross
Wie erstelle ich am besten Keys? Bei Anleitungen im Netz wird meist /dev/random benutzt. Ich mache es bisher so, dass ich ssh-keys erstelle (rsa) und davon mehrere hintereinander in eine Datei schreibe, welche ich dann als Key verwende.
Völlig Wurst.
Wie erstelle ich am besten Keys? Bei Anleitungen im Netz wird meist /dev/random benutzt.
Eigentlich ist das mit Kanonen auf Spatzen geschossen. Aber trotz allem die Einfachste Variante. /dev/urandom kannst du aber auf jeden Fall nehmen. Das ist nur beim Startup problematisch.
Ich benutze immer den:

Code: Alles auswählen

head -c 32 /dev/urandom | base64 # für 265Bit schlüssel 
head -c 16   /dev/urandom | base64 # für 128Bit schlüssel
Das enspricht dann Punkt 2 von oben. Das hat den Vorteil, dass man die notfalls auch mal abschreiben kann, wenn es unbedingt sein muss. Sonst kannst du das | base64 ach weglassen. Dann haust du einen mach Punkt 1.


Ich mache es bisher so, dass ich ssh-keys erstelle (rsa) und davon mehrere hintereinander in eine Datei schreibe, welche ich dann als Key verwende.
Prinzipiell hat da einer weit mehr Entropie als nötig. Die Umrechnung in Primzahlen ist aber unnötig zeitintensiv. Wenn du dem Zufallsgenerator von OpenSSL mehr traust oder dessen größere Geschwindigkeit schätzt (den nutzt OpenSSH), als /dev/urandom, kannst du folgendes machen:

Code: Alles auswählen

openssl rand -base64 32  # für 265Bit Schlüssel 
openssl rand -base64 16 # für 128Bit Schlüssel 
Müssen die Passwörter nicht lesbar/abtippbar sein, kannst du -base64 weglassen.
Zusätzlich drehe ich den iterations-Wert eines Volumes hoch.
Die Iterationen schützen vor Brute-Force-Angriffen auf das Passwort. Es verteuert Angriffe gegen schlechte Passwörter.
Den Verschlüsselungs-Key dagegen nicht. Wählst du dein Passwort mit so viel Informationsgehalt, wie den Verschlüsselungs-Key sind viele Iterationen Sinnlos. Wer die volle Länge des Verschlüsselungs-Keys angreifen kann, wird diesen angreifen und nicht mehr das Passwort, da er mit diesem zu 100% ans Ziel kommt währen ein Passwort ja rein theoretisch noch komplexer sein könnte.
Mehr Iterationen verlangsamen dann nur das Verschlüsseln unnötig.
Aus gleichem Grund sind auch komplexere Passwörter als die Oben genannten nicht mehr sinnvoll.
Wenn du z.B. Serpent-256 nutzt, braucht dein Passwort nicht mehr als 256Bit=32byte Informationsgehalt haben.
rot: Moderator wanne spricht, default: User wanne spricht.

sergej2018

Re: cryptsetup, Key-Empfehlung

Beitrag von sergej2018 » 24.09.2017 10:13:22

Guten Morgen,

danke für so viel Input!

Zunächst: Der gefilmte Admin war tatsächlich ein Extremfall, der auch personelle Konsequenzen nach sich zog. Zum Glück wurde der Kollege aber "nur" beim Eingeben eines Admin-PWs an einem Client gefilmt.

Usability: Ne, es geschieht leider nichts automatisch. Nach dem Anschließen des Keys führe ich ein Skript aus, das den Rest dann "automatisch" erledigt. Natürlich muss ich dafür dann immernoch das PW des Sticks eingeben etc.

Bei den Servern sind die Datenträger natürlich 24/7 eingebunden, anders geht's ja kaum. Schließlich kann ich keine Festplatten ins Netz freigeben, die nicht eingehängt sind. Allerdings sind die Server physikalisch halbwegs sicher und es geht nur darum den Extremfall abzudecken, dass jemand den Serverraum bei einem Einbruch leer räumt.
Das wär zwar schwierig zu bewerkstelligen, aber auch nicht unmachbar.

Der Stick ist nur für diesen Zweck gedacht und wird nicht aus der Hand gegeben. Insbesondere ist er komplett verschlüsselt, man könnte mit ihm also auch keine Daten transferieren, dazu müsste er erst formatiert werden.

Antworten