Question

Lors de l'écriture d'une nouvelle application moyenne en 2009, quelle est la fonction de résumé la plus raisonnable à utiliser, en termes de sécurité et de performances? (Et comment puis-je déterminer cela à l'avenir, lorsque les conditions changent?)

Lorsque similaire < a href = "https://stackoverflow.com/questions/184089/what-is-the-strongest-hashing-algorithm-commonly-available-today"> questions étaient demandés auparavant, les réponses ont été SHA1, SHA2, SHA-256, SHA-512, MD5, bCrypt et Blowfish.

Je me rends compte que, dans une large mesure, l’un d’entre eux pourrait fonctionner, s’il était utilisé intelligemment, mais je préfère ne pas lancer un dé et en choisir un au hasard. Merci.

Était-ce utile?

La solution

Je suivrais les consignes NIST / FIPS :

  

15 mars 2006: La famille SHA-2 de   fonctions de hachage (à savoir, SHA-224,   SHA-256, SHA-384 et SHA-512) peuvent être   utilisé par les agences fédérales pour tous   applications utilisant un hachage sécurisé   algorithmes. Les agences fédérales devraient   cesser d'utiliser SHA-1 pour le numérique   signatures, horodatage numérique et   d'autres applications nécessitant   résistance à la collision dès que   pratique, et doit utiliser le SHA-2   famille de fonctions de hachage pour ces   applications après 2010. Après 2010,   Les agences fédérales peuvent utiliser uniquement SHA-1   pour les applications suivantes:   authentification de message basée sur un hachage   codes (HMAC); dérivation de clé   fonctions (KDF); et nombre aléatoire   générateurs (GNR). Indépendamment de l'utilisation,   NIST encourage l'application et   les concepteurs de protocoles à utiliser le SHA-2   famille de fonctions de hachage pour tous les nouveaux   applications et protocoles.

Autres conseils

Vous dites "digérer la fonction" ;; cela signifie probablement que vous voulez l’utiliser pour calculer des résumés de "long". les messages (pas seulement le hachage "court", comme les mots de passe). Cela signifie que bCrypt et des choix similaires sont sortis; Ils sont conçus pour ralentir les attaques par force brute sur les bases de données de mots de passe. MD5 est complètement cassé et SHA-0 et SHA-1 sont trop affaiblis pour être de bons choix. Blowfish est un code de flux (bien que vous puissiez l'exécuter dans un mode qui produit des digests), ce n'est donc pas un très bon choix non plus.

Cela laisse plusieurs familles de fonctions de hachage, notamment SHA-2, HAVAL, RIPEMD, WHIRLPOOL, etc. Parmi ceux-ci, la famille SHA-2 est la plus complètement analysée, et ce serait donc ma recommandation pour une utilisation générale. Je recommanderais SHA2-256 ou SHA2-512 pour les applications types, car ces deux tailles sont les plus courantes et seront probablement prises en charge ultérieurement par SHA-3.

Cela dépend vraiment de ce dont vous avez besoin.

Si vous avez besoin d'une sécurité réelle, où la possibilité de trouver facilement une collision compromettrait votre système, j'utiliserais quelque chose comme SHA-256 ou SHA-512 car ils sont fortement recommandés par différentes agences.

Si vous avez besoin de quelque chose qui soit rapide et que vous pouvez utiliser pour identifier quelque chose de manière unique, mais qu'il n'y a aucune exigence de sécurité réelle (un attaquant ne pourrait rien faire de mal s'il découvrait une collision). alors j'utiliserais quelque chose comme MD5.

MD4, MD5 et SHA-1 se sont avérés plus faciles à casser, dans le sens de la recherche d'une collision via une méthode d'attaque anniversaire, que prévu. RIPEMD-160 est bien considéré, mais une attaque d'anniversaire à 160 bits ne nécessite que 2 ^ 80 opérations, elle ne durera donc pas éternellement. Whirlpool présente d’excellentes caractéristiques et apparaît comme le plus puissant du lot, même s’il n’a pas le même support que SHA-256 ou SHA-512 - en ce sens que s’il y avait un problème avec SHA-256 ou SHA-512, vous ' d être plus susceptible de le découvrir via les canaux appropriés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top