Wichtigkeit der Schlüsselgröße in der Implementierung von Rfc2898DeriveBytes (PBKDF2)

8

Dies ist der Code, den ich verwende, um "hash" (oder abgeleitet Schlüssel wie in der PBKDF2 Implementierung des PKCS-Standards) Passwörter Strings mit der Rfc2898DeriveBytes Klasse in .NET zur Verfügung gestellt:

%Vor%

Nun verstehe ich, dass die Salzgröße keine Rolle spielt (solange es ausreicht, dass zufällige Salze eindeutig sind), aber was ist mit der Schlüsselgröße? Bietet ein längerer Schlüssel mehr Sicherheit gegen Angriffe?

(Hinweise:
1. Leistungsaspekte importieren für mich hier nicht, es ist offensichtlich, dass ein längeres Salz oder ein längerer Schlüssel mehr Zeit benötigt, damit GetBytes einen Wert zurückgibt.
2. Ich möchte diesen "Hash" verwenden, um sie in einer Datenbank zu speichern, um sie anschließend nicht in einem Verschlüsselungsschema zu verwenden.

    
Otiel 09.11.2011, 16:28
quelle

2 Antworten

6

Im Allgemeinen verwenden Sie PKCS # 5 v2 / RFC2898, um einen symmetrischen Schlüssel aus einem Benutzerkennwort zu erstellen. Die Größe ist wichtig, da sie der erforderlichen Größe des symmetrischen Algorithmus entsprechen muss, den Sie verwenden werden.

%Vor%

Wie dem auch sei, Sie scheinen einen Hash-Code für Passwörter zu behalten, nicht für einen Schlüssel, also ist die Größe in Ihrem speziellen Fall nicht so wichtig. Sie können es sicher an die Hash-Größe (20 Byte für SHA1) anpassen, wenn Sie einen bestimmten Wert wünschen.

Allgemeiner Hinweis (für Leute, bei denen Leistung eine Rolle spielt): PKCS # 5 v2 (oder älter) benötigt viel länger (Iteration) als ein gesalzener Hash oder ein HMAC.

    
poupou 09.11.2011, 16:37
quelle
0

keysize ist die Größe des Devired-Schlüssels; Wenn Sie also einen großen abgeleiteten Schlüssel erhalten möchten, verwenden Sie eine größere Schlüsselgröße.

Die Zeit, die für eine größere Schlüsselgröße benötigt wird, ist proportional zu int (keysize / hashsize). Daher sollten Sie keysize mindestens so lang wie hashsize setzen.

Sie sollten auch abgeleitete Schlüssel der empfohlenen Länge verwenden, wenn sie in einer bestimmten Chiffre verwendet werden, z. AES (128 - 256 Bit).

    
osgx 09.11.2011 16:35
quelle