Ik ben nieuw op het gebied van cryptografie, ik heb geleerd dat SHA-3
(Secure Hash Algorithm 3) het nieuwste lid is van de Secure Hash Algorithm-familie van standaarden, uitgegeven door NIST.
Maar ik heb onlangs SHA-256
gezien, maar ik snap niet wat het is in vergelijking met SHA-3
?
Reacties
- SHA-256 is SHA-2 met 256-bits uitvoer. SHA-2 is de voorganger van SHA-3. Ze delen heel weinig verder dan de naam.
- Maar de naam vat de essentie samen: als je geen cryptografie doet, zijn dit allemaal Secure Hash-algoritmen. Het contract en de veiligheidsclaims zijn bijna identiek .
- @MeirMaor Gezien het bestaan van SHA-1 lijkt dit een gewaagde verklaring.
- @Maeher, SHA1 is gemaakt met in wezen dezelfde vereisten, we weten nu dat dit niet het geval is ‘ niet aan deze vereisten voldoen. Op zijn minst de vereisten voor botsweerstand. Het heeft ook een kleinere uitvoergrootte terwijl SHA3 kan dezelfde uitvoergrootte hebben als SHA2.
Antwoord
De belangrijkste verschillen tussen de oudere SHA-256 van de SHA-2-familie van FIPS 180 , en de nieuwere SHA3-256 van de SHA-3-familie van FIPS 202 , zijn:
-
Weerstand tegen lengteverlengingsaanvallen. Met SHA-256, gegeven $ H (m) $ maar niet $ m $ is het gemakkelijk om $ H (m \ mathbin \ | m “) $ voor bepaalde achtervoegsels $ m” $ . Dit geldt niet voor de SHA-3-functies.
Dit betekent bijv. dat $ m \ mapsto H (k \ mathbin \ | m) $ is niet een beveiligde berichtauthenticatiecode onder sleutel $ k $ wanneer $ H $ is SHA-256, want als je de authenticator op het ene bericht kent, kun je de authenticator op een ander bericht vervalsen. De lengte-extensie-eigenschap heeft de ontwikkeling van HMAC gedeeltelijk verplaatst.
In tegenstelling daarmee is de sleutel-prefix constructie veilig als een MAC wanneer $ H $ is een van de SHA-3-functies – of een van de nieuwere SHA-2-functies SHA-512/224 en SHA-512/256. Voor SHA-224, wat in wezen de 224 bit-afkapping van SHA-256 is (maar met een andere IV), heeft de tegenstander een $ 2 ^ {- 32} $ kans van het raden van de weggegooide stukjes uitvoer in een enkele proef – klein maar niet te verwaarlozen.
-
Prestaties. De SHA-2-functies – in het bijzonder SHA-512, SHA-512/224 en SHA-512/256 – hebben over het algemeen betere prestaties dan de SHA-3-functies. Dit was gedeeltelijk uit paranoia en politieke redenen in het SHA-3-ontwerpproces.
(Als reactie hierop werd een van de SHA-3-finalisten uitgesplitst in het veel snellere BLAKE2 , die tegenwoordig ook veel op internet wordt gebruikt, en de SHA-3-winnaar Keccak werd omgezet in de veel snellere KangarooTwelve . )
-
Compleet ander intern ontwerp. SHA-2 gebruikt de Davies –Meyer-structuur, een instantie van de Merkle-Damgård-structuur, met een blokcijfer (soms SHACAL-2 genoemd) opgebouwd uit een ARX-netwerk, zoals MD4; SHA-3 gebruikt de sponsstructuur met de Keccak-permutatie.
Er is hier geen voor de gebruiker zichtbaar verschil, maar het maakte een verschil voor het vertrouwen van cryptografen in de ontwerpen na veel DM / ARX-ontwerpen gebaseerd op MD4 werden eind jaren 90 en begin 2000 verbroken.
Geschiedenis. Er is een lange reeks hash-functies gestandaardiseerd door NIST in FIPS 180, de Secure Hash Standard, en later FIPS 202¸ de SHA-3 Standard: Permutation-Based and Extendable-Output Functies. Meer details en geschiedenis, inclusief de gerelateerde MD4- en MD5-hashfuncties waarop SHA-0, SHA-1 en SHA-2 – maar niet SHA-3 – waren gebaseerd:
\ begin {equation} \ begin {array} {ccc} \ text {hash} & \ text {year} & \ text {coll. res.} & \ text {size (bits)} & \ text {design} & \ text {kapot?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {32-bit ARX DM} & 1995 \\ \ text {SHA-0 (SHA)} & 1993 & 80 & 160 & \ text {32 -bit ARX DM} & 1998 \\ \ text {MD5} & 1993 & 64 & 128 & \ text {32-bit ARX DM} & 2004 \\ \ text {SHA-1} & 1995 & 80 & 160 & \ text {32-bit ARX DM} & 2005 \\ \ hline \ text {SHA-256 (SHA-2)} & 2002 & 128 & 256 & \ text { 32-bits ARX DM} & \\ \ te xt {SHA-384 (SHA-2)} & 2002 & 192 & 384 & \ text {64-bit ARX DM} & \\ \ text {SHA-512 (SHA-2)} & 2002 & 256 & 512 & \ text {64-bits ARX DM} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {32-bits ARX DM} & \\ \ text {SHA-512/224} & 2012 & 112 & 224 & \ text {64-bit ARX DM} & \\ \ text {SHA-512/256 } & 2012 & 128 & 256 & \ text {64-bit ARX DM} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {64-bit Keccak-spons} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {64-bits Keccak-spons} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {64-bits Keccak-spons} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {64-bit Keccak-spons} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {64-bits Keccak-spons} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {64-bit Keccak-spons} \ end {array} \ end {equation}
-
In 1993 publiceerde NIST FIPS 180 , de Secure Hash Standard, die SHA-0 , oorspronkelijk net genaamd SHA voor Secure Hash Algorithm, bedoeld voor gebruik met de nieuw gepubliceerde DSA. SHA-0 is een enkele 160-bits hashfunctie gericht op 80-bits botsingsbeveiliging (en nu volledig verbroken) , gebaseerd over het relatief nieuwe en snelle ontwerp van MD4 in 1990.
-
In 1995 trok NIST stilletjes FIPS 180 terug en verving het door FIPS 180-1 definieert SHA-1 , die verschilt van SHA-0 door de opname van een enkele -bit rotatie. Net als SHA-0 is SHA-1 een enkele 160-bits hashfunctie gericht op 80-bits botsingsbeveiliging (en nu volledig verbroken).
Er werd geen openbare verklaring gegeven voor de verandering, maar het duurde niet lang voordat Eli Biham differentiële cryptanalyse had gepubliceerd en de academische gemeenschap realiseerde zich dat de NSAs aanpassingen aan de DES S-boxen in de jaren zeventig verbeterde de beveiliging feitelijk (laat staan dat ze de 128-bits sleutelgrootte van Lucifer hebben teruggebracht tot 56 bits voor DES, waarbij de beveiliging tegelijkertijd volledig werd vernietigd). In hetzelfde jaar brak Dobbertin MD4 [1] , en het jaar daarop de ernstig beschadigde MD5 [2] . Niet lang daarna, in 1998, bracht Florent Chabaud en Antoine Joux meldden een $ 2 ^ {61} $ -cost collision-aanval op SHA-0 [3] .
-
In 2002 publiceerde NIST FIPS 180-2 , waarin SHA-2 , een familie van gerelateerde hashfuncties met verschillende grootten: SHA- 256, SHA-384 en SHA-512, genoemd naar hun uitvoerformaten en gericht op respectievelijk 112-, 128-, 192- en 256-bits botsingsweerstand. De SHA -2 functies zetten de ontwerpprincipes van MD4, MD5, SHA-0 en SHA-1 voort, met meer rondes en grotere staat. Niet lang daarna, in 2004, rapporteerde het team van Xiaoyun Wang volledige botsingen op MD5 en andere hashfuncties [4] , en publiceerde in 2005 een $ 2 ^ {69} $ -cost-aanval op SHA-1 [5] , aanzienlijk goedkoper dan generiek. Omdat veel van de ontwerpen gebaseerd op MD4 nu kapot waren, werd iedereen nerveus over dat ontwerp, dus …
-
In 2007 lanceerde NIST de SHA-3-wedstrijd om een opvolger van SHA-2, voor het geval het ontwerp slecht zou blijken te zijn. De wedstrijd zou over meerdere jaren plaatsvinden.
-
Ondertussen heeft NIST in 2008 de Secure Hash Standard bijgewerkt met FIPS 180-3 , en SHA-224 aan de SHA-2-familie, en vervolgens in 2012 heeft NIST deze opnieuw bijgewerkt met FIPS 180-4 (2012) , met toevoeging van SHA-512/224 en SHA-512/256 , snellere 256-bits en 384-bits hashfuncties op 64-bits machines die bestand zijn tegen lengteverlengingsaanvallen waarmee men kan rekenen $ H (m \ mathbin \ | m “) $ gegeven $ H (m) $ en bepaalde $ m” $ zonder wetende $ m $ .
-
In 2013 werd de SHA-3-wedstrijd afgesloten met Keccak als door NIST gekozen winnaar , die ze hebben gepubliceerd in FIPS 202 . SHA-3 bevat vier hash-functies met een vaste grootte, SHA3-224, SHA3-256, SHA3-384, SHA3-512 , en twee hash-functies met uitbreidbare output SHAKE128 en SHAKE256 die tot een 128-bits of 256 -bit beveiligingsniveau als de uitvoer lang genoeg is.
Het ontwerp van SHA-3 is compleet anders dan SHA-2, wat het vertrouwen geeft dat cryptanalytische doorbraken in een reeks ontwerpen gebaseerd op MD4 waarschijnlijk geen effect zullen hebben SHA-3, hoewel anderhalf decennium na het bloedbad van de vroege jaren 2000 dat er niet is Ook veel vooruitgang op SHA-2. De parameters die zijn gekozen voor de SHA-3-functies met een vaste grootte waren om politieke redenen per ongeluk overdreven [6] , dus SHA-3-functies zoals SHA3-256 zijn langzamer dan ze zouden moeten zijn, en over het algemeen zou je gewoon SHAKE128 of SHAKE256 moeten gebruiken.
Opmerkingen
- Wanneer je zeg ” volledig kapot “, voor zover ik het begrijp, is het mogelijk om m1 te berekenen, m2 zodat H ( m1 ) = H ( m2 ). Het is echter nog niemand gelukt om, gegeven een vast bericht M , een bericht m (niet gelijk aan M ) zo te berekenen dat H ( M ) = H ( m ).
- @MartinBonner Ja, ik ‘ m over aanvaringsweerstand hier, daarom zijn de twee woorden net voor en nu volledig verbroken aanvaringsbeveiliging. Ik ‘ m ik ga hier niet in op weerstand tegen vooraf beelden, omdat het veilige gebruik van een voorbeeldbestendige maar niet botsingsbestendige hashfunctie erg subtiel en ik ‘ m probeer geen valstrikken achter te laten voor onoplettende lezers ; Ik adresseer de toestand van MD5 ‘ s preimage weerstand elders wanneer deze ‘ wordt specifiek gevraagd.
Antwoord
Verschil tussen SHA256 en SHA3
Het belangrijkste verschil tussen SHA256 en SHA3 is hun interne algoritme-ontwerp .
SHA2 (en SHA1) zijn gebouwd met behulp van de Merkle – Damgård-structuur .
SHA3 daarentegen is gebouwd met behulp van een Sponge-functie en behoort tot de Keccak-familie.
De naam kan misleidend zijn om te denken dat SHA3 in vergelijking met SHA2 slechts een ” nieuwere ” versie van het algoritme. Zoals SEJPM zei: ” […] Ze delen heel weinig buiten de naam.” De naam is zojuist opgegeven vanaf NIST en betekent ” Veilig hash-algoritme “, een familie van officiële standaarden.
Hoewel je MAC s met zowel SHA256 als SHA3, is de SHA3 MAC gemakkelijker te gebruiken (zie de opmerking van fgrieu hieronder).
Uitvoer
SHA256 voert een 256-bits hash uit.
SHA3 staat uitvoer toe van
- 224-bit
- 256-bit
- 384-bit
- 512-bit
hash, hoewel de SHA2-varianten (SHA256 is een van deze varianten) ook deze lengtes toestaat.
SHA3-algoritmen kunnen worden gewijzigd in ” SHAKE ” algoritmen en ze laten een uitvoer van willekeurige lengte toe. Je kunt meer informatie vinden in deze eerder gestelde vraag .
Beveiliging
Hashes die alleen gebruik maken van de Merkle-Damgård-structuur en hun volledige l (of bijna volledige) status zijn kwetsbaar voor length extension-aanvallen .
SHAKE-algoritmen zijn ook nuttig voor Optimale asymmetrische coderingsopvulling .
U kunt hier (wikipedia) .
Reacties
- Strikt genomen ” Hashes die gebruik maken van de Merkle-Damg å rd-structuren zijn kwetsbaar voor lengteverlengingsaanvallen ” is onjuist. Tegenvoorbeelden zijn onder meer SHA-512/256 en SHA-384, omdat ze niet hun volledige status weergeven. Een andere is SHA-256d, gedefinieerd als SHA-256d (m) = SHA-256 (SHA-256 (m)), omdat het de status van de eerste hash verbergt. Wat geldt is dat ” Hashes die alleen gebruik maken van de Merkle-Damg å rd-structuur en uitvoer hun volledige (of bijna volledige) status zijn kwetsbaar voor lengte-uitbreidingsaanvallen “. Er is ‘ een ander verschil tussen SHA-2 en SHA-3: de laatste is gemakkelijker te gebruiken als MAC.
- Wat bedoel je met ” gemakkelijker te gebruiken ” als een MAC? Veiliger / sneller / implementatie?
- We kunnen een MAC bouwen met een beveiligingsargument van SHA-3 als $ \ text {SHA-3} (K \ | M) $ (voor een bepaalde lengte van $ K $ dat hangt af van de SHA-3-variant en zou uh moeten zijn, ik weet het niet ‘ zeker); wanneer we ‘ niet zon argument hebben met SHA-2 (zelfs als de eigenschap length extension niet van toepassing is). Zie sectie 5.1.12 van Cryptografische sponsfuncties .