Jens Steube, co-auteur du populaire Hashcat, a découvert une faiblesse dans la technique de hash cryptographique SHA1 qui lui permet d'accélérer le processus de déchiffrement de 20%.
SHA1 traite toujours des blocs de 512 bits (64 octets). Toutefois, ces données sont agrandies à 2048 bits lorsque la valeur de hash SHA1 est générée. Steube appelle cela le processus "d'expansion de mots" (word expansion). Les mots sont élargis par le biais d'opérations XOR, mais certaines de ces opérations sont redondantes et peuvent être éliminées. Un peu d'astuce pour optimiser tout ça et le chercheur a réussi à réduire le nombre d'opérations pour le calcul complet d'un hash SHA1 d'environ 20 pour cent, soit 694 opération au lieu de 880.
Par ailleurs, les faiblesses de la technique de hash SHA1 qui ont été identifiées au cours des dernières années n'ont rien à voir avec l'utilisation de SHA1 dans le stockage de mots de passe. Ces attaques visent à créer des collisions. D'autres part, le "crackage" du mot de passe consiste à trouver un ensemble spécifique de données qui correspondent à une valeur de hash. Toutefois, aucun type d'attaque n'est plus rapide que d'essayer tout simplement d'entrer des mots de passe connus à partir de dictionnaires (sauf si vous avez les moyens et que vous faites du Time Memory Trade Offs ou du Parallel Computing car cela nécessite d'énormes quantités d'espace disque pour les tables pré-calculées).
Que les simples hash SHA1 ne soient pas un bon choix pour le stockage de mot de passe est dû au fait que les pirates peuvent calculer un hash SHA1 et essayer un grand nombre de mots de passe trop vite, même sans les optimisations de Steube. Des algos bien optimisés peuvent calculer jusqu'à des centaines de millions de hash SHA1 par seconde. Par contre des méthodes telles que PBKDF2 ou Bcrypt sont conçues pour exiger beaucoup de ressources comme de nombreuses unités de cartes graphiques Tesla de NVidia.
En outre, cracker bcrypt est pratiquement impossible même avec des GPUs en raison d'une consommation mémoire assez importante de l'algorithme. Seuls quelques milliers de hash par seconde avec bcrypt sont généralement calculés.