2017-06-06 3 views
-1

J'ai cet extrait de code pour générer une clé avec PBKDF2. Je me demande comment la génération fonctionne quand une longueur de clé est plus longue que le type d'algorithme de résumé SHA spécifié?PBKDF2 - Que se passe-t-il lorsque vous générez une longueur de clé de 1024 bits avec SHA512?

Par exemple - que se passe-t-il lorsque je définis une longueur de clé de 1024 bits et que j'utilise l'algorithme PBKDF2WithHmacSHA512? Où sont générés 512 bits?

+1

Demandez-vous sur les rouages ​​internes de l'algorithme PBKDF2 et comment fonctionne l'étirement? –

+0

https://tools.ietf.org/html/rfc2898#section-5.2 mais tout algorithme (unique) symétrique qui utilise plus de 256 bits de matériau de clé est fou –

+0

@ dave_thompson_085 Il se peut qu'une sortie plus longue soit souhaitée à la fois une clé et IV en un coup – zaph

Répondre

3

En général, il est conseillé de ne pas demander plus que la longueur de hachage que chaque bloc est exécuté à travers toutes les itérations de nouveau:

Selon Wikipedia (qui a un format un peu plus lisible que PKCS # 5):

DK = T1 || T2 || ... || Tdklen/hlen 
Ti = F(Password, Salt, c, i) 

ici c est le nombre d'itérations par la voie.

Le problème est que généralement de grandes quantités de matériau de clé ne sont utilisées que lorsque le résultat est divisé en plusieurs composants. Et si un attaquant peut vérifier un bon mot de passe en utilisant seulement les 128 premiers bits, l'attaquant doit faire moins de travail que l'utilisateur légitime de l'algorithme. Une façon de résoudre cela est de diviser la sortie de PBKDF2 en utilisant un KBKDF tel que HKDF en utilisant des étiquettes différentes (information qui est également hachée). De cette façon, vous pouvez générer une quantité presque infinie de matériel clé sans parcourir toutes les itérations pour chaque 512 bits.

Notez que 512 bits est suffisant pour deux très clés sécurisées AES-256 bits. C'est donc une très bonne raison d'utiliser SHA-512 pour PBKDF2. Notez que sur les machines 64 bits, SHA-512 peut être plus rapide que SHA-256 tout en fournissant plus de matériel de sortie et de sécurité.

2

Par PBKDF2

dkLen is the desired length of the derived key 
DK is the generated derived key 

Chaque hLen bits bloc Ti de clé dérivée DK, est calculée comme suit:

DK = T1 || T2 || ... || Tdklen/hlen 

Le tableau d'octets dérivé peut être une longueur arbitraire ne repose pas sur la table de hachage algorithme.