Je suis nouveau sur la cryptographie, jai appris que SHA-3
(Secure Hash Algorithm 3) est le dernier membre de la famille de normes Secure Hash Algorithm, publiée par le NIST.
Mais jai récemment vu SHA-256
mais je ne comprends pas ce que cest par rapport à SHA-3
?
Commentaires
- SHA-256 est SHA-2 avec une sortie de 256 bits. SHA-2 est le prédécesseur de SHA-3. Ils partagent très peu au-delà du nom.
- Mais le nom capture lessence, si vous ne faites pas de cryptographie, ce sont tous des algorithmes de hachage sécurisé. Le contrat et les revendications de sécurité sont presque identiques .
- @MeirMaor Étant donné lexistence de SHA-1 qui semble être une déclaration en gras.
- @Maeher, SHA1 a été créé avec essentiellement les mêmes exigences, nous savons maintenant quil ne le fait pas ‘ t les satisfaire. À tout le moins, les exigences de résistance aux collisions. SHA3 peut avoir la même taille de sortie que SHA2.
Réponse
Les principales différences entre lancien SHA-256 de la famille SHA-2 de FIPS 180 , et le plus récent SHA3-256 de la famille SHA-3 de FIPS 202 , sont:
-
Résistance aux attaques par extension de longueur. Avec SHA-256, avec $ H (m) $ mais pas $ m $ , il est facile de trouver $ H (m \ mathbin \ | m « ) $ pour certains suffixes $ m » $ . Ce n’est pas le cas avec les fonctions SHA-3.
Cela signifie, par exemple , que $ m \ mapsto H (k \ mathbin \ | m) $ nest pas un code dauthentification de message sécurisé sous la clé $ k $ lorsque $ H $ est SHA-256, car connaître lauthentificateur sur un message vous permet de forger lauthentificateur sur un autre. La propriété dextension de longueur a en partie déplacé le développement de HMAC.
En revanche, la construction du préfixe de clé est sécurisée en tant que MAC lorsque $ H $ est lune des fonctions SHA-3 ou lune des nouvelles fonctions SHA-2 SHA-512/224 et SHA-512/256. Pour SHA-224, qui est essentiellement la troncature de 224 bits de SHA-256 (mais avec un IV différent), ladversaire a une chance $ 2 ^ {- 32} $ de deviner les bits de sortie ignorés en un seul essai – petit mais non négligeable.
-
Performances. Les fonctions SHA-2, en particulier SHA-512, SHA-512/224 et SHA-512/256, ont généralement des performances supérieures à celles des fonctions SHA-3. Cela était en partie dû à la paranoïa et à des raisons politiques dans le processus de conception de SHA-3.
(En réponse, lun des finalistes de SHA-3 a été transformé en BLAKE2 , également largement utilisé sur Internet aujourdhui, et le gagnant de SHA-3, Keccak, a été transformé en KangarooTwelve beaucoup plus rapide. )
-
Conception interne complètement différente. SHA-2 utilise le Davies –Meyer structure, une instance de la structure Merkle – Damgård, avec un chiffrement par blocs (parfois appelé SHACAL-2) construit à partir dun réseau ARX, comme MD4; SHA-3 utilise la structure sponge avec la permutation Keccak.
Il ny a pas de différence visible par lutilisateur ici, mais cela a fait une différence pour la confiance des cryptographes dans les conceptions après de nombreux DM / Les conceptions ARX basées sur MD4 ont été brisées à la fin des années 90 et au début des années 2000.
Histoire. Il y a eu une longue lignée de fonctions de hachage normalisées par NIST dans FIPS 180, la norme de hachage sécurisé, et plus tard FIPS 202¸ la norme SHA-3: Permutation-Based and Extendable-Output Les fonctions. Plus de détails et dhistorique, y compris les fonctions de hachage MD4 et MD5 sur lesquelles SHA-0, SHA-1 et SHA-2 – mais pas SHA-3 – étaient basés:
\ begin {équation} \ begin {array} {ccc} \ text {hash} & \ text {year} & \ text {coll. res.} & \ text {taille (bits)} & \ text {design} & \ text {cassé?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {DM ARX 32 bits} & 1995 \\ \ text {SHA-0 (SHA)} & 1993 & 80 & 160 & \ text {32 -bit ARX DM} & 1998 \\ \ text {MD5} & 1993 & 64 & 128 & \ text {ARX DM 32 bits} & 2004 \\ \ text {SHA-1} & 1995 & 80 & 160 & \ text {DM ARX 32 bits} & 2005 \\ \ hline \ text {SHA-256 (SHA-2)} & 2002 & 128 & 256 & \ text { DM ARX 32 bits} & \\ \ te xt {SHA-384 (SHA-2)} & 2002 & 192 & 384 & \ text {ARX DM 64 bits} & \\ \ text {SHA-512 (SHA-2)} & 2002 & 256 & 512 & \ text {64 bits ARX DM} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {DM ARX 32 bits} & \\ \ text {SHA-512/224} & 2012 & 112 & 224 & \ text {ARX DM 64 bits} & \\ \ text {SHA-512/256 } & 2012 & 128 & 256 & \ text {ARX DM 64 bits} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {éponge Keccak 64 bits} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {éponge Keccak 64 bits} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {éponge Keccak 64 bits} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {éponge Keccak 64 bits} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {éponge Keccak 64 bits} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {éponge Keccak 64 bits} \ end {array} \ end {equation}
-
En 1993, le NIST a publié FIPS 180 , la norme de hachage sécurisé, définissant SHA-0 , nommé à lorigine SHA pour lalgorithme de hachage sécurisé, destiné à être utilisé avec le DSA nouvellement publié. SHA-0 est une fonction de hachage unique de 160 bits visant la sécurité de collision de 80 bits (et maintenant complètement interrompue) , basée sur la conception relativement nouvelle et rapide de MD4 en 1990.
-
En 1995, le NIST a discrètement retiré FIPS 180 et la remplacé par FIPS 180-1 définissant SHA-1 , qui diffère de SHA-0 par linclusion dun seul rotation de bits. Comme SHA-0, SHA-1 est une fonction de hachage unique de 160 bits visant une sécurité de collision de 80 bits (et maintenant complètement interrompue).
Aucune explication publique na été donnée pour le changement, mais il ne fallut pas longtemps avant quEli Biham ait publié une cryptanalyse différentielle et la communauté universitaire se rendit compte que les ajustements de la NSA aux S-box DES dans les années 1970, la sécurité a été améliorée (sans parler du fait quils ont réduit la taille de la clé de 128 bits de Lucifer à 56 bits pour DES, détruisant complètement la sécurité en même temps). La même année, Dobbertin a cassé MD4 [1] , et lannée suivante, le MD5 gravement endommagé [2] . Peu de temps après, en 1998, Florent Chabaud et Antoine Joux ont signalé une attaque par collision à $ 2 ^ {61} $ sur SHA-0 [3] .
-
En 2002, le NIST a publié FIPS 180-2 , définissant SHA-2 , une famille de fonctions de hachage associées de différentes tailles: SHA- 256, SHA-384 et SHA-512, nommés pour leurs tailles de sortie et visant respectivement une résistance aux collisions de 112, 128, 192 et 256 bits. Le SHA -2 fonctions ont continué les principes de conception de MD4, MD5, SHA-0 et SHA-1, avec plus de tours et un état plus grand. Peu de temps après, en 2004, léquipe de Xiaoyun Wang a signalé des collisions complètes sur MD5 et dautres fonctions de hachage [4] , et en 2005, a publié un $ 2 ^ {69} $ -cost attaque sur SHA-1 [5] , nettement moins cher que le générique. La plupart des designs basés sur MD4 ayant été cassés maintenant, tout le monde est devenu nerveux à propos de ce design, alors…
-
En 2007, le NIST a lancé le concours SHA-3 pour concevoir un successeur de SHA-2, au cas où la conception savérerait mauvaise. Le concours se déroulerait sur plusieurs années.
-
Pendant ce temps, en 2008, le NIST a mis à jour le Secure Hash Standard avec FIPS 180-3 , en ajoutant SHA-224 à la famille SHA-2, puis en 2012, le NIST la de nouveau mis à jour avec FIPS 180-4 (2012) , en ajoutant SHA-512/224 et SHA-512/256 , fonctions de hachage 256 bits et 384 bits plus rapides sur les machines 64 bits avec résistance aux attaques dextension de longueur qui permettent de calculer $ H (m \ mathbin \ | m « ) $ étant donné $ H (m) $ et certains $ m » $ sans sachant $ m $ .
-
En 2013, le concours SHA-3 sest conclu avec Keccak comme gagnant choisi par le NIST , quils ont publié dans FIPS 202 . SHA-3 comprend quatre fonctions de hachage de taille fixe, SHA3-224, SHA3-256, SHA3-384, SHA3-512 , et deux fonctions de hachage à sortie extensible SHAKE128 et SHAKE256 qui atteignent jusquà un 128 bits ou 256 -bit niveau de sécurité si la sortie est suffisamment longue.
La conception de SHA-3 est complètement différente de SHA-2, ce qui donne lassurance que les percées cryptanalytiques sur la ligne de conceptions basées sur MD4 nauront probablement pas dincidence SHA-3, bien quune décennie et demie après le bain de sang du début des années 2000, il ny ait pas dabeille n beaucoup de progrès sur SHA-2 non plus. Les paramètres choisis pour les fonctions SHA-3 de taille fixe ont été accidentellement surdimensionnés pour des raisons politiques [6] , donc les fonctions SHA-3 comme SHA3-256 sont plus lent que nécessaire, et vous devez généralement utiliser SHAKE128 ou SHAKE256.
Commentaires
- Lorsque vous dire » complètement cassé « , pour autant que je sache, il est possible de calculer m1 , m2 tel que H ( m1 ) = H ( m2 ). Cependant, personne na encore réussi, étant donné un message fixe M , à calculer un message m (différent de M ) tel que H ( M ) = H ( m ).
- @MartinBonner Oui, je ‘ m parle de résistance aux collisions ici, cest pourquoi les deux mots juste avant «et maintenant complètement brisé» sont «sécurité de collision». Je ‘ je ne traite pas de la résistance de pré-image ici car l’utilisation en toute sécurité d’une fonction de hachage résistante à la préimage mais pas résistante aux collisions est très subtile et jessaye ‘ de ne pas laisser de pièges aux lecteurs imprudents ; Jaborde létat de la ‘ s préimage résistance ailleurs quand il ‘ est spécifiquement demandé.
Réponse
Différence entre SHA256 et SHA3
La principale différence entre SHA256 et SHA3 réside dans leur conception dalgorithme interne .
SHA2 (et SHA1) sont construits en utilisant la structure Merkle – Damgård .
SHA3 en revanche est construit en utilisant un Fonction Sponge et appartient à la famille Keccak.
Le nom peut être trompeur de penser que SHA3 par rapport à SHA2 est juste un » version » plus récente de lalgorithme. Comme la dit SEJPM: » […] Ils partagent très peu au-delà du nom. » Le nom vient de NIST et signifie » Algorithme de hachage sécurisé « , une famille de normes officielles.
Bien que vous puissiez construire MAC s avec SHA256 et SHA3, le MAC SHA3 est plus facile à utiliser (voir le commentaire de fgrieu ci-dessous).
Sortie
SHA256 génère un hachage de 256 bits.
SHA3 autorise les sorties de
- 224 bits
- 256 bits
- 384 bits
- 512 bits
hachage, bien que les variantes SHA2 (SHA256 est lune de ces variantes) autorise également ces longueurs.
Les algorithmes SHA3 peuvent être modifiés en » SHAKE » et ils permettent une sortie de longueur arbitraire. Vous pouvez trouver des informations supplémentaires dans cette question précédemment posée .
Sécurité
Hashes qui nutilisent que la structure Merkle – Damgård et affichent leur plein Létat l (ou presque plein) est vulnérable aux attaques par extension de longueur .
Les algorithmes SHAKE sont également utiles pour Rembourrage de chiffrement asymétrique optimal .
Vous pouvez afficher une comparaison directe ici (wikipedia) .
Commentaires
- Strictement parlant, » Hashes qui utilisent le Merkle – Damg å rd structure sont vulnérables aux attaques par extension de longueur » est incorrect. Les contre-exemples incluent SHA-512/256 et SHA-384, car ils ne produisent pas leur état complet. Un autre est SHA-256d, défini comme SHA-256d (m) = SHA-256 (SHA-256 (m)), car il masque létat du premier hachage. Ce qui est vrai, cest que » Hashes qui uniquement utilisent la structure Merkle – Damg å rd et afficher leur état complet (ou presque complet) sont vulnérables aux attaques dextension de longueur « . Il y a ‘ une autre différence entre SHA-2 et SHA-3: ce dernier est plus facile à utiliser comme MAC.
- Que voulez-vous dire avec » plus facile à utiliser » comme MAC? Plus sûr / plus rapide / implémentation?
- Nous pouvons construire un MAC avec un argument de sécurité de SHA-3 comme $ \ text {SHA-3} (K \ | M) $ (pour une longueur de $ K $ cela dépend de la variante SHA-3 et devrait être euh, je ne sais pas ‘ avec certitude); quand nous navons ‘ t avoir un tel argument avec SHA-2 (même lorsque la propriété dextension de longueur ne sapplique pas). Voir la section 5.1.12 de Fonctions déponge cryptographique .