La sécurité d'une fonction de hachage dépend principalement de la longueur de sa sortie (empreinte de message) : une empreinte plus longue offre une meilleure résistance aux collisions. Le paradoxe des anniversaires nous dit qu'en moyenne, vous vous attendriez à trouver une collision à partir d'une fonction de travail de la racine carrée de la taille de l'empreinte : en d'autres termes, avec une empreinte de 128 bits, un attaquant s'attendrait à réussir après 2^64 tentatives.
MD5 est critiqué par la communauté cryptographique depuis quelques années maintenant car il n'a qu'une empreinte de 128 bits, et il existe également quelques résultats cryptanalytiques intéressants qui pourraient réduire efficacement sa force. SHA1 (empreinte de 160 bits) était l'alternative préférée, mais même alors, il semble ne pas être assez long pour un adversaire bien motivé et il existe également des résultats intéressants dans la communauté de recherche. La famille SHA-2 (tailles de sortie de 224 à 512 bits) sont les fonctions de hachage préférées actuellement largement utilisées. Il y a une compétition de recherche active organisée par le NIST pour trouver un successeur au SHA-2, mais nous n'aurons pas de nouvelle norme avant 2012 environ.
Maintenant, dans le cas spécifique du stockage des mots de passe, je vois que vous utilisez un sel. C'est la pratique fortement recommandée ; sans sel, vous seriez vulnérable à une attaque de table arc-en-ciel. Je crois que cela ne vous laisse qu'avec l'attaque par force brute à considérer ; c'est là que keylength.com intervient. Il rassemble les recommandations pour les tailles de clé et d'empreinte de la communauté cryptographique et donne les échelles de temps de sécurité attendues pour divers algorithmes, en tenant compte de la puissance de calcul actuelle et de la loi de Moore. Réfléchissez à quels types d'actifs vous protégez et combien de temps vous devez sécuriser un mot de passe (avez-vous par exemple une politique de changement de mot de passe forcée?) et cela devrait répondre à peu près à la question de la taille de l'empreinte dont vous avez besoin.
Bien sûr, le meilleur stockage de mots de passe au monde ne vous aidera pas si vos utilisateurs utilisent des mots de passe faciles à deviner. Fournissez-vous des conseils à vos utilisateurs pour des mots de passe forts? Avez-vous envisagé un indicateur de force du mot de passe ou similaire?