web-dev-qa-db-fra.com

Quelle est la relation entre "SHA-2" et "SHA-256"

Je suis confus sur la différence entre SHA-2 et SHA-256 et je les entends souvent utilisés de manière interchangeable (ce qui semble vraiment faux). I pensez SHA-2 une "famille" d'algorithmes de hachage et SHA-256 un algorithme spécifique dans cette famille.

Est-ce exact? Quelqu'un peut-il clarifier?

87
Mike B

Juste pour citer wikipedia: http://en.wikipedia.org/wiki/SHA-2 :

La famille SHA-2 comprend six fonctions de hachage avec des résumés (valeurs de hachage) de 224, 256, 384 ou 512 bits: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA -512/256.

Alors oui, SHA-2 est une gamme de fonctions de hachage et comprend SHA-256.

106
Steffen Ullrich

La famille SHA-2 comprend plusieurs fonctions de hachage étroitement liées. Il s'agit essentiellement d'un algorithme unique dans lequel quelques paramètres mineurs diffèrent entre les variantes.

La spécification initiale couvrait quatre variantes avec des tailles de sortie de 224, 256, 384 et 512 bits.

La différence la plus significative entre les variantes est que certaines sont conçues pour des registres 32 bits et certaines sont conçues pour des registres 64 bits. En termes de performances, c'est la seule différence qui compte.

Sur un processeur 32 bits, SHA-224 et SHA-256 seront beaucoup plus rapides que les autres variantes car ce sont les seules variantes 32 bits de la famille SHA-2. L'exécution des variantes 64 bits sur un processeur 32 bits sera lente en raison de la complexité accrue des opérations 64 bits sur un processeur 32 bits.

Sur un processeur 64 bits, SHA-224 et SHA-256 seront un peu plus lents que les autres variantes. En effet, en raison du fait de ne traiter que 32 bits à la fois, ils devront effectuer plus d'opérations afin de passer par le même nombre d'octets. Vous n'obtenez pas un doublement de vitesse en passant à une variante 64 bits car les variantes 64 bits ont un plus grand nombre de tours que les variantes 32 bits.

L'état interne est de 256 bits pour les deux variantes 32 bits et de 512 bits pour les quatre variantes 64 bits. Le nombre de tailles possibles pour l'état interne est donc inférieur au nombre de tailles possibles pour la sortie finale. Passer d'un grand état interne à une sortie plus petite peut être bon ou mauvais selon votre point de vue.

Si vous conservez la taille de sortie fixe, on peut généralement s'attendre à ce que l'augmentation de la taille de l'état interne améliore la sécurité. Si vous maintenez la taille de l'état interne fixe et diminuez la taille de la sortie, les collisions deviennent plus probables, mais les attaques par extension de longueur peuvent devenir plus faciles. Rendre la taille de sortie plus grande que l'état interne serait inutile.

Étant donné que les variantes 64 bits sont à la fois plus rapides (sur les processeurs 64 bits) et susceptibles d'être plus sécurisées (en raison d'un état interne plus grand), deux nouvelles variantes ont été introduites en utilisant des mots 64 bits mais des sorties plus courtes. Ce sont ceux connus sous le nom de 512/224 et 512/256.

Les raisons pour lesquelles des variantes avec une sortie beaucoup plus courte que l'état interne sont généralement dues au fait que pour certaines utilisations, il n'est pas pratique d'utiliser une sortie aussi longue ou que la sortie doit être utilisée comme clé pour un algorithme qui prend une entrée d'un certain Taille.

Il est également possible de simplement tronquer la sortie finale à la longueur souhaitée. Par exemple, une construction HMAC spécifie la troncature de la sortie de hachage finale à la longueur MAC souhaitée. En raison de l'alimentation HMAC de la sortie d'un appel du hachage en entrée d'un autre appel, cela signifie que l'utilisation d'un hachage avec une sortie plus courte se traduit par un HMAC avec moins d'état interne. Pour cette raison, il est probablement légèrement plus sûr d'utiliser HMAC-SHA-512 et de tronquer la sortie à 384 bits que d'utiliser HMAC-SHA-384.

La sortie finale de SHA-2 est simplement l'état interne (après l'entrée étendue de la longueur de traitement) tronqué au nombre souhaité de bits de sortie. La raison pour laquelle SHA-384 et SHA-512 sur la même entrée sont si différentes est qu'un IV différent est spécifié pour chacune des variantes.

31
kasperd