Verständnisfrage zum Passwort-Mangling

Christine Kremsmayr c.kremsmayr at gmx.net
So Feb 28 13:25:43 CET 2016


Halli Liste,

Ich abe nur ein sehr vages und unsicheres Verständnis der beiden
Optionen --s2k-digest-algo und --s2k-mode,
weil ich das Konzept hinter dem Verschlüsseln von privaten
GnuPG-Schlüsseln nicht wirklich verstehe.

Nach der Lektüre einiger Suchmaschinen-Treffer würde ich dieses Konzept
so formulieren:
   
Private GnuPG-Schlüssel werden im Schlüsselbund immer verschlüsselt
gespeichert.   
Wie bei jeder symmetrischen Verschlüsselung benötigt der symmetrische
Algorithmus (einstellbar mit
--s2k-digest-algo) einen Schlüssel zur Verschlüsselung.

GnuPG könnte nun einfach das vom Benutzer eingegebene Passwort als
Schlüssel verwenden.
Das hätte aber einen Nachteil: Die Bits des Passworts hängen miteinander
zusammen; es ist keine zufällige Bitfolge.
(Das eingegebene Passwort direkt als Schlüssel zu verwenden, könnte aber
durch die Option
--s2k-mode = 0 erzwungen werden.)

Daher ist die tatsächliche Erzeugung des Schlüssels komplexer:
1. Dem vom Benutzer eingegebenen Passwort werden zuerst ein paar
zufällige Bits ("Salt") hinzugefügt.
Diese Zufallsbits werden zusammen mit dem Passwort gespeichert. Grund:
Wenn nun ein anderer
Benutzer aus demselben Passwort ebenfalls einen Hashwert bildet, kommt
ein anderer Hashwert heraus,
weil in diesem Fall auch ein neuer Salt verwendet wird.

2. Nun wird aus der Kombination aus Passwort und Zufallsbits ein
Hashwert gebildet. Der Algorithmus
kann mit --s2k-digest-algo gesteuert werden.

3. Nun wird der gebildete Hashwert durcheinandergewürfelt.

4. Das Ergebnis dieses "mangling" ist der symmetrische Schlüssel. Mit
diesem wird der private
GnuPG-Schlüssel verschlüsselt.

Schritte 1 bis 3 bilden eine Iteration.

Gegen das Knacken der Passphrase kann man sich mit einer hohen Anzahl an
Iterationen schützen. Diese
Anzahl kann durch die Option --s2k-count festgelegt werden.

Mit --s2k-mode kann festgelegt werden, ob und wie das
Durcheinanderwürfeln stattfindet:

0: Es wird überhaupt nicht gewürfelt, sondern das eingegebene Passwort
als Schlüssel verwendet.
Nicht empfehlenswert.
1: Zum Passwort wird eine zufällige Bitfolge hinzugefügt. Ist schon
besser, trotzdem nicht empfehlenswert.
3: Defaultwert. Verhalten wie oben beschrieben. Auswertung der Option
--s2k-count. Empfehlenswert.

Habe ich verstanden, was eine Iteration ist, oder liege ich völlig daneben?

Kennt jemand Erklärungen dieses Themas für GnuPG-Benutzer, die keine
Entwickler sind?

Liebe Grüße 

Christine



Mehr Informationen über die Mailingliste Gnupg-de