cryptsetup: Maximale Passwortlänge?

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
mod3

cryptsetup: Maximale Passwortlänge?

Beitrag von mod3 » 16.01.2017 14:59:21

Hallo zusammen,

wohl eine Anfängerfrage:
Ich verwende AES-XTS mit 512bit (also 256bit).
Wie lang sollte mein Passwort maximalerweise sein? Denn ein zu langes wird ja schlicht von cryptsetup gekürzt?

Und 256/8 erscheint mir recht kurz?!

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von MSfree » 16.01.2017 15:23:37

mod3 hat geschrieben:Und 256/8 erscheint mir recht kurz?!
Geteilt durch acht stimmt nicht.

256Bit ergibt 1.16e77. Wenn man annimmt, daß in einem Paßwort A-Z, a-z, 0-9 und 10 weitere Zeichen stecken, also 72 verschiedene Zeichen anwendbar sind, dann brauchst du eine Paßwortlänge von log(1.16e77)/log/72) = 41,5 Stellen, also 42 (war ja klar, denn 42 ist die Antwort auf die Frage aller Fragen :mrgreen: )

mod3

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von mod3 » 16.01.2017 15:56:45

Genau das ist sie! :-D

Echt? Längere Passwörter sind mit AES garnicht möglich/sinnvoll?

dufty2
Beiträge: 1709
Registriert: 22.12.2013 16:41:16

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von dufty2 » 16.01.2017 16:05:39

MSfree hat geschrieben: 256Bit ergibt 1.16e77. Wenn man annimmt, daß in einem Paßwort A-Z, a-z, 0-9 und 10 weitere Zeichen stecken, also 72 verschiedene Zeichen anwendbar sind, dann brauchst du eine Paßwortlänge von log(1.16e77)/log/72) = 41,5 Stellen, also 42 (war ja klar, denn 42 ist die Antwort auf die Frage aller Fragen :mrgreen: )
Naja, fast ;)
Wie auch in "man cryptsetup" erläutert, nimmt man gern die "printable ASCIIs" und das sind 128 minus "die ersten 32", macht 96. "DEL" sollte man auch noch abziehen, somit verbleiben:

Code: Alles auswählen

$ perl -e "print (log(2**256)/log(95));"
38.9658487585903
also 39 Zeichen. Und diese "39" hab' ich letzten auch gelesen.

Erlaubt sind eine ganze Menge:

Code: Alles auswählen

$ /sbin/cryptsetup --help | grep -i max
	Maximale Größe der Schlüsseldatei: 8192kB, Maximale Länge der interaktiven Passphrase: 512 Zeichen

mod3

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von mod3 » 16.01.2017 16:16:18

Ah ok, dann erreiche ich also auch mehr Sicherheit wenn ich mehr als diese 39 Zeichen nehme ;-)
Was wird mit den restlichen Zeichen dann angestellt? Also angenommen, ich habe ein 100-stelliges Passwort, dann bleiben ja 61 Zeichen "übrig". Fließen diese mit ein?

dufty2
Beiträge: 1709
Registriert: 22.12.2013 16:41:16

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von dufty2 » 16.01.2017 17:15:26

Je kleiner Dein Zeichenvorrat, desto länger sollte Dein Passwort sein:
Benutzt Du Hex, also 0-9 a-e, dann halt

Code: Alles auswählen

$ perl -e "print (log(2**256)/log(16));"
64
Zeichen.

Schließlich nur 0 und 1:

Code: Alles auswählen

$ perl -e "print (log(2**256)/log(2));"
256
Soweit die Theorie.
Wie es cryptsetup tatsächlich macht, schau Dir den Source-code an!

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von breakthewall » 17.01.2017 16:44:50

mod3 hat geschrieben:Hallo zusammen,

wohl eine Anfängerfrage:
Ich verwende AES-XTS mit 512bit (also 256bit).
Wie lang sollte mein Passwort maximalerweise sein? Denn ein zu langes wird ja schlicht von cryptsetup gekürzt?

Und 256/8 erscheint mir recht kurz?!
Wie ich sehe hast das mit der Schlüsselteilung bereits verstanden. Also das eine Schlüssellänge von 512-Bit, einer Schlüssellänge von einmal 256-Bit für den XTS-Key und einmal 256-Bit für den LUKS-Masterkey entspricht. Und beim Cryptsetup hat der Nutzer nur diese Möglichkeit, entweder 256-Bit oder 512-Bit zu nutzen.

Bei 256-Bit würde der Masterkey so aussehen:
aF3eFCccC7D34b9ed7ADfC96d4E7f1eEC1b790b6bBe9299E4bACe3832FAfC032

Nimmt man nun 512-Bit, dann verdoppelt sich die Schlüssellänge:
6fD691b40BaC8DBe61CDCc14aE16314f0940A5BeE5FAFC07B44193332F09AD7Cf267FACd072CAfD1f7fA89eD1A619920Aa6C1d8B7ceEFc0bbc0a05bBe61D8281

Generell wird der Masterkey für die Verschlüsselung aus hexadezimalen Zeichen zufallsgeneriert, ohne das der Nutzer groß Einfluss darauf hat, noch diesen jemals zu Gesicht bekommt. Und über das jeweils eigene Passwort für einen vergebenen LUKS-Slot, wird dieser Masterkey entschlüsselt und öffnet dann das betreffende Volume.

Und ein Masterkey von einer Komplexität von 16^128, ist ein ziemlich gewaltiges Hindernis. Genau genommen steht das gewählte Passwort auch in keinem Verhältnis zum Masterkey um ein bestimmtes Sicherheitsniveau zu erreichen. Ebenso wäre eine Passwortkomplexität jenseits der 80-100-Bit, der Sicherheit ohnehin nicht mehr zuträglich, was in etwa einem 20 stelligen Passwort entsprechen würde.

Geht man nun von einem Passwort aus, dass lediglich aus Kleinbuchstaben besteht mit 20 Stellen an Länge, dann ergibt sich eine Komplexität von 26^20, bzw. 19928148895209409152340197376 mögliche Kombinationen.

Anhand heutiger Rechenleistung, lässt sich nun berechnen, wie widerstandsfähig so ein Passwort wäre. Als Einheit zur Berechnung wird 1 ExaFLOP (10^18) hergenommen, was in ein paar Jahren bei Supercomputern Realität sein wird.

Rechnung: 26^20/10^18/60/60/24/365 = 631 Jahre

Das Durchgehen aller Kombinationen, würde also 631 Jahre in Anspruch nehmen, bei einer Rechenleistung die noch nicht verfügbar ist. Und auch nur dann, wenn die Rechenleistung 1:1 umgelegt werden kann, was das 2 Sekunden Delay des Cryptsetup bereits erheblich verzögert. Die Länge ist idR. der wichtigste Faktor, der den Aufwand enorm in die Höhe treibt. Allein wenn man nun die Passwörtlänge um eine weitere Stelle auf 21 erweitert, dann würde dieser Prozess bereits 16429 Jahre dauern. Man benötigt also nicht zwingend unmenschlich komplexe Passwörter.

Die maximale Passwörtlänge wäre also nach dem Stand der Technik heute, bei 20 Stellen anzusetzen. Alles darüber mag schön sein, oder auch ein besseres Gefühl geben, aber bringt einem letztlich noch nichts.

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

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von wanne » 17.01.2017 18:07:31

mod3 hat geschrieben:Denn ein zu langes wird ja schlicht von cryptsetup gekürzt?
Nein.
Direkt Passwörter als Schlüssel zu verwenden wäre sowieso ein starker Angriffspunkt den man auf keinen Fall machen sollte.
Für solche Aktionen gibt es hash-Verfahren. Leider gibt mal wieder nur die englische eine vernünftige Definition ab:
Wikipedia hat geschrieben:A hash function is any function that can be used to map data of arbitrary size to data of fixed size.
Wichtig ist, ein gut hashfunktion macht aus einem beliebigen input (passwort) einen Output (key) der feste Länge hat. Dabei sollen gleiche passwörter immer zu gleichen Keys führen und unterschiedliche möglichst gleichverteilt Outputs führen. (Genaueres siehe Wikipediaartikel.)
Sprich auch von einem 100-stelligen Passwort wird jede stelle genutzt nur der key wird nicht länger.
Sobald es schwieriger wird das passwort zu raten als den key kann ein Angreifer auch schlicht den Key raten das passwort ist für ihn dann uninteressant.
(Auch wenn er das Passwort nicht so einfach rausbekommt. Mit dem Key kann er entschlüsseln.)
Es wird also irgend wann sinnlos das Passwort zu knacken.
Welche Hashfunktion genutzt wird, kannst du beim formatieren aussuchen. (Option -h)
Damit das auprobieren erschwert wird macht LUKS das auch gleich mehrfach hintereinander.
Dein Key berechnest du also so (im Fall von sha1):

Code: Alles auswählen

echo -n passowrt | sha1sum | sha1sum | sha1sum | sha1sum … | sha1sum
cryptsetup create dagegen nur ein mal:

Code: Alles auswählen

echo passwd | openssl dgst -ripemd160
Außerdem nutzt LUKS den Key noch nicht direkt sondern verschlüsselt damit lediglich den zufälligen MasterKey.
breakthewall hat geschrieben:Generell wird der Masterkey für die Verschlüsselung aus hexadezimalen Zeichen zufallsgeneriert,
Nein. Da ist nichts Hex. Das sind einfach zufällige Bytes. Die Umrechnung nach Hex wird lediglich häufig genutzt um das am Bildschirm anzeigen zu können. Man kann aber auch base64 nehmen.

Code: Alles auswählen

echo passwd | openssl dgst -ripemd160 -binary | base64 
oder

Code: Alles auswählen

echo passwd | openssl dgst -ripemd160 
Bleibt der gleiche Key. Nur eine andere Darstellung.
breakthewall hat geschrieben:Geht man nun von einem Passwort aus, dass lediglich aus Kleinbuchstaben besteht mit 20 Stellen an Länge, dann ergibt sich eine Komplexität von 26^20, bzw. 19928148895209409152340197376 mögliche Kombinationen.
Diese Rechnungen geht wie alle vorherigen von Gleichverteilung und Unabhängigkeit aus. Beides ist in typischen Passwörtern nicht der Fall.
Typischerweise ist e seltener als q usw. (keine gleichverteilung) Im schnitt braucht mann dann nur noch etwa ⅘ der Versuche pro Zeichen (Bei groß und klein Schreibung die Hälfte).
Hinter einem q meistens ein u folgt Großbuchstaben am Anfang… (keine unabhängigkeit) braucht man ca. ¼ der Versuche bzw. 1/7 gegen ASCII oder Alle tippbaren Zeichen.

Das Potenziert sich dann mit der Anzahl der Zeichen:
Statt 26^20 braucht man bei üblichen passwörtern nur ~2^20 (Wörter, Sätze) bis 16^20 (aussprechbare zeichenkette) versuche. Was dann auf deinem Rechner ein Bruchteil einer Sekunde bzw. 13Tage
zylinderkopfschraube hat 20 Zeichen ist aber eben KEIN gutes Passwort.
rot: Moderator wanne spricht, default: User wanne spricht.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von breakthewall » 18.01.2017 12:20:12

wanne hat geschrieben:
breakthewall hat geschrieben:Generell wird der Masterkey für die Verschlüsselung aus hexadezimalen Zeichen zufallsgeneriert,
Nein. Da ist nichts Hex. Das sind einfach zufällige Bytes. Die Umrechnung nach Hex wird lediglich häufig genutzt um das am Bildschirm anzeigen zu können. Man kann aber auch base64 nehmen.
Frag doch einfach die derzeitigen Entwickler des Cryptsetups, die werden dir das bestätigen was ich sagte. Denn von ihnen stammt diese Information. Letztlich war diese Sache aber auch nicht der Punkt, sondern es ging nur darum die Komplexität des Masterkeys darzustellen. Und aus Kompatibilitätsgründen besteht dieser nur aus hexadezimalen Zeichen.
breakthewall hat geschrieben:Geht man nun von einem Passwort aus, dass lediglich aus Kleinbuchstaben besteht mit 20 Stellen an Länge, dann ergibt sich eine Komplexität von 26^20, bzw. 19928148895209409152340197376 mögliche Kombinationen.
Diese Rechnungen geht wie alle vorherigen von Gleichverteilung und Unabhängigkeit aus. Beides ist in typischen Passwörtern nicht der Fall.
Typischerweise ist e seltener als q usw. (keine gleichverteilung) Im schnitt braucht mann dann nur noch etwa ⅘ der Versuche pro Zeichen (Bei groß und klein Schreibung die Hälfte).
Hinter einem q meistens ein u folgt Großbuchstaben am Anfang… (keine unabhängigkeit) braucht man ca. ¼ der Versuche bzw. 1/7 gegen ASCII oder Alle tippbaren Zeichen.

Das Potenziert sich dann mit der Anzahl der Zeichen:
Statt 26^20 braucht man bei üblichen passwörtern nur ~2^20 (Wörter, Sätze) bis 16^20 (aussprechbare zeichenkette) versuche. Was dann auf deinem Rechner ein Bruchteil einer Sekunde bzw. 13Tage
zylinderkopfschraube hat 20 Zeichen ist aber eben KEIN gutes Passwort.[/quote]

Deine Darstellung hat einen bedeutenden Fehler. Es gibt keinerlei Informationen über das genutzte Passwort, womit diese ganzen Spielereien was typischerweise genutzt wird oder nicht, so überhaupt nicht greifen können. Auch werden Passwörter als Ganzes übergeben und nicht Stelle für Stelle, wodurch nachfolgende Zeichen erraten werden könnten. Somit ergibt sich, dass man stets bei 0 beginnen muss. Allenfalls noch Wörterlisten zuvor, oder ein Crack-Modus der diverse häufige billige Permutationen abklappert, aber danach folgt der übliche Brute-Force-Angriff. Und ohne nähere Informationen, hat man absolut nichts um sagen zu können, was das Passwort evtl. besitzen könnte oder auch nicht, um die Arbeit auch nur ansatzweise verkürzen zu können. Das beruht nur auf der Annahme ein Passwort wäre nicht hochwertig, was zugegebenermaßen bei der Mehrheit der Leute oft greift. Und dein Beispielpasswort, war gerade ein Beispiel wie es nicht sein sollte. Ich sprach zu keiner Zeit davon, man sollte bekannte Wörter, Begriffe und Dergleichen benutzen.

Doch ein Passwort wie dieses hier z.B.: eruszksazfidztuezb, wäre kein unsicherer Kandidat mehr, trotz Kleinbuchstaben. Zumal sich die Anfangsbuchstaben von Wörten in längeren fiktiven Sätzen, sehr gut als Passwort eignen. Und nebenbei bemerkt, steigt die überwiegende Mehrheit aller Crack-Tools, bei Längen von 20+ Stellen idR. aus, weil es rechnerisch unwirtschaftlich wird mangels Erfolgsaussichten. Vergessen darf man dabei auch nicht PBKDF2, was selbst billigste Passwörter erheblich länger durchhalten lässt, wenn die Zeitspanne zum Testen der Passwörter derart verzögert wird. Gut durch Parallelisierung ließe sich das kompensieren, aber letztlich wäre es auch möglich die Iterationen derart hoch zu setzen, dass das ebenso unwirtschaftlich wird.

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

Re: cryptsetup: Maximale Passwortlänge?

Beitrag von wanne » 18.01.2017 18:53:55

breakthewall hat geschrieben:Frag doch einfach die derzeitigen Entwickler des Cryptsetups, die werden dir das bestätigen was ich sagte. Denn von ihnen stammt diese Information.
Das würde ch mal ganz massiv bezweifeln, das di so einen Quatsch erzählt haben. Vielleicht irgend jemand der da Doku schreibt. Aber garanziert niemand, der das an passender stelle arbeitet.
breakthewall hat geschrieben:Deine Darstellung hat einen bedeutenden Fehler. Es gibt keinerlei Informationen über das genutzte Passwort, womit diese ganzen Spielereien was typischerweise genutzt wird oder nicht, so überhaupt nicht greifen können. Auch werden Passwörter als Ganzes übergeben und nicht Stelle für Stelle, wodurch nachfolgende Zeichen erraten werden könnten. Somit ergibt sich, dass man stets bei 0 beginnen muss.
Du schon, jemand der Ahnung on hat nicht. Und ich liege da ganz sicher nicht falsch. Guck dir mal bitte "Markov Mode" von john oder hashcat an. Und jeder Vernünftige cracker bietet sowas. Wahrscheinlichere Passwörter zuerst (unabhängig von der länge). Und damit können sie weit mehr als irgend welche Wörterbücher abdecken.
Man weiß zwar nichts über genau dieses Passwort aber man kann eben gucken, wie andere Passwörter aussehen. Und kann damit halt raten wie andere aussehen. Und das funktioniert tatsächlich.
Hier mal ein paar Beispiele für echt geknackte Passörter (da wurden einfache Hashes geleakt ohne PBKDF2):

Code: Alles auswählen

ASDSDADFGADFGDFG
looooserrrrrrrrr
sdfsdafsdagergreq
asfdlkjaslwo0
cocksuckersdpthos
thisissaaaaaaaad!
fuck you hack wanker
Und das auch du nicht um die Regeln des üblichen herum kommst hast du wunderbar gezeigt:
breakthewall hat geschrieben:Doch ein Passwort wie dieses hier z.B.: eruszksazfidztuezb, wäre kein unsicherer Kandidat mehr, trotz Kleinbuchstaben.
Ich gebe dir zwar recht, dass das ein sicheres Passwort ist aber von den 26^18 bist du im schnitt meilenweit weg. Vokale kommen 2.1 mal häufiger vor als andere Buchstaben. Keiner der 5 seltensten Buchstaben kommt vor dafür 4 der 5 häufigsten…
Sagt man john, dass du Engländer bist (deutsche tabellen müsstest du dir selbst zusammensuchen bringt er nicht mt.) und nur Kleibuchstaben verwendest würde im Incremental Mode das Passwort mehrere 10.000 mal schneller knacken als er das eigentlich sollte, wenn der noch wie sein Name impliziert funktionieren würde. Das Passwort ist also etwa so stark wie ein 15-Stelliges nach deiner Rechnung.
Mehr als genug. Aber du hast dir die Ungelichverteilung eben durch ein etwas längeres Passwort erkauft.
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten