HominiLupus schrieb:
Um eine random number zu erhalten, nutze ich einen RNG, nicht Hashes, oder?
Jain. Es stimmt, man benutzt natürlich einen RNG, aber weil es aus diversen Gründen schwierig ist echten Zufall im Computer zu erzeugen, vor allem in ausreichend großen Mengen, sind RNGs in der Praxis eigentlich immer PRNGs, also Pseudo-Zufallszahlen-Generatoren. Die interne Implementierung von TrueCrypt kenne ich auch nicht, aber dort wird der Hash als 'mixing function' verwendet. Das kann man sich im Prinzip so vorstellen wie über mir erklärt wurde, nur das statt der Zahlen von 1 bis 100 eben möglichst zufälliges Ausgangsmaterial verwendet wird (z.B. fordert TrueCrypt ja den Nutzer dazu auf, die Maus zu bewegen, um Zufall zu erzeugen).
Und warum muss ich einen Key ableiten, wieso kann ich nicht das Passwort direkt nutzen, wieso muss es verändert werden? Und wenn verändert, wieso ein SHA Hash?
Wurde im Prinzip auch schon korrekt erklärt. Ein Verschlüsselungsalgorithmus erfordert immer eine fixe Länge an Schlüsselbits, z.B. AES-256 mit genau 256 Bit Schlüssel.
In den wenigsten Fällen wird ein Nutzer genau ausgerechnet haben, wie viele Zeichen Passwort er dafür verwenden muss. Vielleicht möchte mancher Nutzer auch gar keine 256 Bit Sicherheit sondern gibt sich schon mit einem Sicherheitslevel von 80 Bit zufrieden.
Er wird sein Passwort dementsprechend kürzer wählen, trotzdem setzt TrueCrypt AES-256 ein und muss das 80bit-Passwort auf 256 Bit aufblähen. Aus diesem Grunde wird eigentlich fast immer eine Schlüsselableitungsfunktion verwendet, die aus den Nutzereingaben kryptografische Schlüssel macht. Hashfunktionen bieten sich hier eben an, da sie, ganz unabhängig von der Eingabelänge, immer die gleiche Ausgabelänge haben.
Und meine 2. Frage bezieht sich auf das Nutzerpasswort und nur darauf.
Ich hoffe, es ist etwas klar geworden, dass sich das ganze eben nicht so losgelöst betrachten lässt. Wenn ein Nutzerpasswort nur drei Zeichen lang ist, kann eine Hashfunktion das zwar auf 256 Bit aufblähen und auf dem Papier wird dann der unknackbare AES-256 verwendet, in der Praxis wird ein Angreifer aber natürlich trotzdem nur 3 Zeichen raten müssen.
Bzgl. der Schlüsselableitung der Dreifachkaskade: Da bin ich überfragt was die sinnvolle Schlüssellänge angeht, ich gehe aber fast davon aus, dass man dort durch ein längeres Nutzerpasswort keinen Sicherheitsgewinn mehr erlangt, sondern dass die Passwörter der drei Algorithmen voneinander abgeleitet sind. Im Extremfall könnten sogar alle drei Schlüssel identisch sein. Der Gedanke an so einer Kaskade ist ja eher dass man eventuelle Designschwächen eines Algorithmus durch die Verkettung mit anderen abfängt.
Kann ein Angreifer AES knacken muss das keinesfalls heißen, dass er auch an das Passwort kommt. In dem Fall wären die anderen beiden Algorithmen also immernoch sicher.