2017-02-24 1 views

Répondre

7

L'utilisation de l'algorithme SHA-1 en generate_password_hash est pas vulnérable, comme il est utilisé comme produit intermédiaire, l'étape itérée dans la table de hachage PBKDF2. See the discussion in chat.

lorsque vous enchaînant zillions de hash comme dans PBKDF2 le risque est impossible à distinguer de quelqu'un casser un mot de passe par pur hasard.

Après une discussion plus loin sur la liste de diffusion cryptography-dev, nous avons décidé de changer la valeur par défaut de SHA-512 pour la facilité d'esprit, même si elle ne concerne pas la sécurité en ce moment.

Vous avez raison que la sécurité de HMAC est toujours très bien lorsqu'il est utilisé avec SHA-1, HMAC-MD5 est encore sécurisé le croire ou non. Cela dit, je recommande généralement aux gens de migrer vers HMAC-SHA-256 de toute façon, pour faciliter l'analyse de leur logiciel.

vous voudrez peut-être regarder dans SHA512 à la place en raison d'optimisations sur les plates-formes 64 bits.


generate_password_hash prend un argument method pour personnaliser la façon dont le hachage est généré. La valeur par défaut est pbkdf2:sha1. Passez une méthode de dérivation différente pour PBKDF2.

generate_password_hash(secret, method='pbkdf2:sha512') 

Vous pouvez également modifier le nombre d'itérations de la faible valeur par défaut de 1000 à un nombre plus élevé, au prix d'une vitesse de hachage plus lente. pbkdf2:sha1:10000.


Vous êtes probablement d'accord avec PBKDF2, tant que le hachage et les itérations sont bien accordés. Vous pouvez également utiliser Passlib, qui prend en charge plus de méthodes de hachage que Werkzeug. Voir recommended hashes de Passlib pour la discussion sur les hashs à utiliser. Cet exemple montre comment utiliser bcrypt avec Passlib.

pip install passlib bcrypt 
from passlib.context import CryptContext 
crypt_context = CryptContext(schemes=['bcrypt_sha256']) 
crypt_context.hash(secret)