Jeg er ny om kryptografi, jeg lærte at SHA-3
(Secure Hash Algorithm 3) er det siste medlemmet av Secure Hash Algorithm-familien av standarder, utgitt av NIST.
Men jeg så nylig SHA-256
men jeg får ikke hva det er i forhold til SHA-3
?
Kommentarer
- SHA-256 er SHA-2 med 256-biters utgang. SHA-2 er forgjengeren til SHA-3. De deler veldig lite utover navnet.
- Men navnet fanger essensen. Hvis du ikke gjør kryptografi, er dette alle Secure Hash-algoritmer. Kontrakten og sikkerhetskravene er nesten identiske .
- @MeirMaor Gitt eksistensen av SHA-1 som ser ut til å være en dristig uttalelse.
- @Maeher, SHA1 ble opprettet med i hovedsak de samme kravene, vi vet nå at den ikke ' t oppfyller dem. I det minste krav til kollisjonsmotstand. Det har også en mindre utgangsstørrelse mens SHA3 kan ha samme utgangsstørrelse som SHA2.
Svar
Hovedforskjellene mellom eldre SHA-256 av SHA-2-familien til FIPS 180 , og den nyere SHA3-256 av SHA-3-familien til FIPS 202 , er:
-
Motstand mot lengdeutvidelsesangrep. Med SHA-256, gitt $ H (m) $ men ikke $ m $ , det er lett å finne $ H (m \ mathbin \ | m «) $ for visse suffikser $ m» $ . Ikke slik med noen av SHA-3-funksjonene.
Dette betyr, f.eks , at $ m \ mapsto H (k \ mathbin \ | m) $ er ikke en sikker meldingsautentiseringskode under nøkkel $ k $ når $ H $ er SHA-256, fordi det å vite autentiseringsenheten i en melding lar deg smi autentisatoren til en annen. Lengdeutvidelsesegenskapen beveget delvis utviklingen av HMAC.
I motsetning er nøkkel-prefikskonstruksjonen sikker som en MAC når $ H $ er en av SHA-3-funksjonene — eller en av de nyere SHA-2-funksjonene SHA-512/224 og SHA-512/256. For SHA-224, som egentlig er 224-biters avkorting av SHA-256 (men med en annen IV), har motstanderen en $ 2 ^ {- 32} $ sjanse å gjette de kasserte biter av utdata i en enkelt prøveversjon – liten, men ikke ubetydelig.
-
Ytelse. SHA-2-funksjonene – spesielt SHA-512, SHA-512/224 og SHA-512/256 – har generelt høyere ytelse enn SHA-3-funksjonene. Delvis var dette av paranoia og politiske årsaker i SHA-3-designprosessen.
(Som svar ble en av SHA-3-finalistene spunnet ut i den mye raskere BLAKE2 , også mye brukt på internett i dag, og SHA-3-vinneren Keccak ble spunnet ut i den mye raskere KangarooTwelve . )
-
Helt forskjellig intern design. SHA-2 bruker Davies –Meyer-struktur, en forekomst av Merkle – Damgård-strukturen, med en blokkryptering (noen ganger kalt SHACAL-2) bygget ut av et ARX-nettverk, som MD4; SHA-3 bruker svampestrukturen med Keccak-permutasjonen.
Det er ingen brukersynlig forskjell her, men det gjorde en forskjell for kryptografers tillit til designene etter mange DM / ARX-design basert på MD4 ble ødelagt på slutten av «90- og begynnelsen av 2000-tallet.
Historie. Det har vært en lang rekke hashfunksjoner standardisert av NIST i FIPS 180, Secure Hash Standard, og senere FIPS 202¸ SHA-3 Standard: Permutasjonsbasert og utvidbar utgang Funksjoner. Flere detaljer og historikk, inkludert relaterte MD4- og MD5-hashfunksjoner som SHA-0, SHA-1 og SHA-2 — men ikke SHA-3 — var basert på:
\ begin {ligning} \ begynn {array} {ccc} \ text {hash} & \ text {year} & \ tekst {koll. res.} & \ text {size (bits)} & \ text {design} & \ text {ødelagt?} \\ \ 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-bit 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-bit ARX DM} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {32-bit 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 svamp} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {64-bit Keccak svamp} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {64-bit Keccak svamp} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {64-bit Keccak svamp} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {64-bit Keccak svamp} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {64-bit Keccak svamp} \ end {array} \ end {ligning}
-
I 1993 publiserte NIST FIPS 180 , Secure Hash Standard, som definerer SHA-0 , opprinnelig bare kalt SHA for Secure Hash Algorithm, beregnet for bruk med nylig publiserte DSA. SHA-0 er en enkelt 160-bit hash-funksjon rettet mot 80-bit kollisjonssikkerhet (og nå helt ødelagt) , basert på den relativt nye og raske designen av MD4 i 1990.
-
I 1995 trakk NIST stille FIPS 180 og erstattet den med FIPS 180-1 som definerer SHA-1 , som skiller seg fra SHA-0 ved å inkludere en enkelt -bit rotasjon. I likhet med SHA-0 er SHA-1 en enkelt 160-bit hash-funksjon rettet mot 80-bit kollisjonssikkerhet (og nå helt ødelagt).
Det ble ikke gitt noen offentlig forklaring på endringen, men det gikk ikke lang tid før at Eli Biham hadde publisert differensiell kryptanalyse, og det akademiske samfunnet innså at NSAs finjusteringer til DES S-boksene på 1970-tallet forbedret faktisk sikkerheten (husk at de reduserte 128-biters nøkkelstørrelse til Lucifer til 56 bits for DES, og ødela sikkerheten fullstendig samtidig). Samme år brøt Dobbertin MD4 [1] , og året etter, alvorlig skadet MD5 [2] . Ikke lenge etter, i 1998, Florent Chabaud og Antoine Joux rapporterte et $ 2 ^ {61} $ -kollisjonsangrep på SHA-0 [3] .
-
I 2002 publiserte NIST FIPS 180-2 , og definerte SHA-2 , en familie av relaterte hashfunksjoner med forskjellige størrelser: SHA- 256, SHA-384 og SHA-512, oppkalt etter utgangsstørrelser og sikter mot henholdsvis 112-, 128-, 192- og 256-bit kollisjonsmotstand. SHA -2 funksjoner fortsatte designprinsippene til MD4, MD5, SHA-0 og SHA-1, med flere runder og større tilstand. Ikke lenge etter det, i 2004, rapporterte Xiaoyun Wangs team om full kollisjon på MD5 og andre hashfunksjoner [4] , og i 2005 publiserte en $ 2 ^ {69} $ -kostnadsangrep på SHA-1 [5] , vesentlig billigere enn generisk. Med mange av designene basert på MD4 som ble brutt nå, ble alle nervøse for det designet, så…
-
I 2007 lanserte NIST SHA-3-konkurransen for å designe en etterfølger av SHA-2, i tilfelle designet skulle vise seg å være dårlig. Konkurransen ville finne sted over flere år.
-
I mellomtiden oppdaterte NIST i 2008 Secure Hash Standard med FIPS 180-3 , og legger til SHA-224 til SHA-2-familien, og i 2012 oppdaterte NIST den igjen med FIPS 180-4 (2012) , og la til SHA-512/224 og SHA-512/256 , raskere 256-biters og 384-biters hashfunksjoner på 64-biters maskiner med motstand mot lengdeutvidelsesangrep som lar en beregne $ H (m \ mathbin \ | m «) $ gitt $ H (m) $ og visse $ m» $ uten å vite $ m $ .
-
I 2013 ble SHA-3-konkurransen avsluttet med Keccak som NISTs utvalgte vinner. , som de publiserte i FIPS 202 . SHA-3 inkluderer fire hashfunksjoner i fast størrelse, SHA3-224, SHA3-256, SHA3-384, SHA3-512 , og to hashfunksjoner med utvidbar utgang SHAKE128 og SHAKE256 som oppnår opp til en 128-bit eller 256 -bit sikkerhetsnivå hvis utgangen er lang nok.
Designet til SHA-3 er helt forskjellig fra SHA-2, noe som gir tillit til at kryptanalytiske gjennombrudd på designlinjer basert på MD4 sannsynligvis ikke vil påvirke SHA-3, selv om det ikke har vært noe bi ti år etter blodbadet på begynnelsen av 2000-tallet n mye fremgang på SHA-2 heller. Parametrene som ble valgt for SHA-3-funksjonene i fast størrelse var på en måte ved et uhell overdesignet av politiske grunner [6] , så SHA-3-funksjoner som SHA3-256 er tregere enn de trenger å være, og du bør generelt bare bruke SHAKE128 eller SHAKE256.
Kommentarer
- Når du si " fullstendig ødelagt ", så vidt jeg forstår det, er det mulig å beregne m1 , m2 slik at H ( m1 ) = H ( m2 ). Imidlertid har ingen ennå klart å gi en fast melding M å beregne en melding m (ikke lik M ) slik at H ( M ) = H ( m ).
- @MartinBonner Ja, jeg ' jeg snakker om kollisjonsmotstand her, og det er grunnen til at de to ordene like før «og nå helt ødelagte» er «kollisjonssikkerhet». Jeg ' jeg tar ikke opp preimage-motstand her fordi sikker bruk av en preimage-resistent men ikke kollisjonsresistent hash-funksjon er veldig subtil og jeg ' prøver å ikke etterlate feller for uforsiktige lesere ; Jeg adresserer tilstanden til MD5 ' s preimage motstand andre steder når den ' er spesielt bedt om det.
Svar
Forskjell mellom SHA256 og SHA3
Hovedforskjellen mellom SHA256 og SHA3 er deres intern algoritmedesign .
SHA2 (og SHA1) er bygget ved hjelp av Merkle – Damgård-strukturen .
SHA3 derimot er bygget ved hjelp av en Svampfunksjon og tilhører Keccak-familien.
Navnet kan være misvisende å tro at SHA3 i forhold til SHA2 bare er en " nyere " versjon av algoritmen. Som SEJPM sa: " […] De deler veldig lite utover navnet." Navnet er bare gitt fra NIST og betyr " Sikker hashing-algoritme ", en familie av offisielle standarder.
Selv om du kan konstruere MAC s med både SHA256 og SHA3, er SHA3 MAC enklere å bruke (se fgrieus kommentar nedenfor).
Utgang
SHA256 sender ut en 256-bit hash.
SHA3 tillater utdata på
- 224-bit
- 256-bit
- 384-bit
- 512-bit
hash, selv om SHA2-variantene (SHA256 er en av disse variantene) også tillater disse lengdene.
SHA3-algoritmer kan modifiseres til " SHAKE " algoritmer og de tillater utdata av vilkårlig lengde. Du kan finne ytterligere informasjon i dette tidligere stilte spørsmålet .
Sikkerhet
Hashes som bare benytter Merkle – Damgård-strukturen og leverer sin fulle l (eller nesten full) tilstand er sårbar for lengdeutvidelsesangrep .
SHAKE-algoritmer er også nyttige for Optimal asymmetrisk krypteringspolstring .
Du kan se en direkte sammenligning her (wikipedia) .
Kommentarer
- Strengt tatt, " Hashes som bruker Merkle – Damg å rd struktur er sårbar for lengdeutvidelsesangrep " er feil. Moteksempler inkluderer SHA-512/256 og SHA-384, fordi de ikke sender ut sin fulle tilstand. En annen er SHA-256d, definert som SHA-256d (m) = SHA-256 (SHA-256 (m)), fordi den skjuler tilstanden til den første hasjen. Det som holder er at " Hashes som bare bruker Merkle-Damg å rd struktur og sende ut sin fulle (eller nesten fulle) tilstand er sårbare for lengdeutvidelsesangrep ". Det er ' en annen forskjell mellom SHA-2 og SHA-3: det senere er lettere å bruke som MAC.
- Hva mener du med " enklere å bruke " som MAC? Sikkerere / raskere / implementering?
- Vi kan bygge en MAC med et sikkerhetsargument fra SHA-3 som $ \ text {SHA-3} (K \ | M) $ (for en lengde på $ K $ det avhenger av SHA-3-varianten og skal være øh, jeg vet ikke '); når vi ikke har ' t har et slikt argument med SHA-2 (selv når lengdeutvidelsesegenskapen ikke gjelder). Se avsnitt 5.1.12 av Kryptografiske svampfunksjoner .