human
Lors de la lecture de certaines documentations sur la sécurité d'un produit, j'ai découvert que le fournisseur utilise le SHA-2 d'un mot de passe pour chiffrer les données (AES-256), au lieu d'utiliser ce mot de passe directement.
Y a-t-il des avantages à le faire ?
Un attaquant ne va pas essayer de casser les données chiffrées en utilisant cette clé SHA-2-comme-mot-de-passe, mais plutôt épuiser l'espace des clés de mot de passe (si possible) et essayer son hachage. Par conséquent, la seule raison à laquelle je peux penser est qu'il y a une étape de calcul supplémentaire (la création du hachage). J'aurais plutôt augmenté l'entropie du mot de passe si le but est de complexifier l'attaque de manière computationnelle
gpt
Cela ressemble à une version primitive d'une fonction de dérivation de clé (KDF), en particulier ils auraient probablement pu éviter de réinventer la roue en utilisant PBKDF2.

Il y a plusieurs raisons pour lesquelles vous ne voulez pas utiliser le mot de passe directement comme clé AES.

* Pour distribuer les bits. La principale propriété ici est que la sortie d'une fonction de hachage est, statistiquement parlant, uniformément distribuée. Les gens ont tendance à choisir des mots de passe qui ne sont pas entièrement aléatoires, en particulier, la plupart des mots de passe ne contiendraient que des caractères que vous pouvez taper sur un clavier. Lorsqu'il est utilisé comme clé de chiffrement, une clé non statistiquement aléatoire peut exposer des faiblesses dans la fonction de chiffrement.
* Pour adapter les clés à la longueur de la clé de chiffrement. La plupart des mots de passe vont être soit plus longs, soit plus courts que l'espace des clés de la fonction de chiffrement. En hachant votre mot de passe, la longueur exacte de la clé sera exactement la taille de la clé d'entrée de votre fonction de chiffrement. Bien que l'entropie de la clé dérivée ne soit pas augmentée, cela évite la probabilité d'exposer une faiblesse dans la fonction de chiffrement si vous vous contentez de remplir de zéros le mot de passe ou pire, de le tronquer.
* Pour ralentir le déchiffrement de la dérivation de clé. Selon votre description, le logiciel n'utilise qu'un seul tour de SHA256, ce qui n'est pas beaucoup. Mais avec une dérivation de clé basée sur un mot de passe appropriée, comme PBKDF2, il y a généralement des dizaines de milliers ou des centaines de milliers de tours de la fonction de hachage sous-jacente. Cela ralentit le calcul des clés, augmentant la force effective des mots de passe sans augmenter leur longueur.
* Pour garder le mot de passe en texte clair de l'utilisateur hors de la mémoire, l'empêchant ainsi d'être accidentellement enregistré sur le disque lors de la mise en veille prolongée ou du vidage de la mémoire en cas de plantage. Bien que cela ne protégerait pas le hachage contre une utilisation pour décrypter les données que vous chiffrez, cela empêchera le mot de passe d'être réutilisé pour décrypter d'autres fichiers (qui utilisent probablement un sel différent) ou d'être essayé sur vos comptes en ligne ou autres appareils que vous utilisez.