Hvad er forskellen mellem SHA-3 og SHA-256?

Jeg er ny om kryptografi, jeg lærte at SHA-3 (Secure Hash Algorithm 3) er det seneste medlem af Secure Hash Algorithm-familien af standarder, udgivet af NIST.

Men jeg så for nylig SHA-256 men jeg får ikke hvad der er i sammenligning med SHA-3?

Kommentarer

  • SHA-256 er SHA-2 med 256-bit output. SHA-2 er forgængeren til SHA-3. De deler meget lidt ud over navnet.
  • Men navnet fanger essensen. Hvis du ikke laver kryptografi, er dette alle Secure Hash-algoritmer. Kontrakten og sikkerhedskravene er næsten identiske .
  • @MeirMaor I betragtning af eksistensen af SHA-1, der ser ud til at være en fed erklæring.
  • @Maeher, SHA1 blev oprettet med stort set de samme krav, ved vi nu, at den ikke ' t opfylder dem. I det mindste krav til kollisionsmodstand. Det har også en mindre outputstørrelse, mens SHA3 kan have samme outputstørrelse som SHA2.

Svar

De væsentligste forskelle mellem den ældre SHA-256 af SHA-2-familien på FIPS 180 , og den nyere SHA3-256 i SHA-3-familien på FIPS 202 , er:

  • Modstand mod angreb på længdeudvidelser. Med SHA-256, givet $ H (m) $ men ikke $ m $ , det er let at finde $ H (m \ mathbin \ | m “) $ for visse suffikser $ m” $ . Ikke så med nogen af SHA-3-funktionerne.

    Dette betyder, f.eks , at $ m \ mapsto H (k \ mathbin \ | m) $ er ikke en sikker beskedgodkendelseskode under nøgle $ k $ når $ H $ er SHA-256, fordi det at kende godkenderen på en meddelelse giver dig mulighed for at smede godkenderen på en anden. Længdeudvidelsesegenskaben bevægede delvist udviklingen af HMAC.

    I modsætning hertil er nøglepræfiks-konstruktionen sikker som en MAC, når $ H $ er en af SHA-3-funktionerne – eller en af de nyere SHA-2-funktioner SHA-512/224 og SHA-512/256. For SHA-224, som i det væsentlige er 224 bit trunkering af SHA-256 (men med en anden IV), har modstanderen en $ 2 ^ {- 32} $ chance at gætte de kasserede outputstykker i et enkelt forsøg – lille, men ikke ubetydelig.

  • Ydeevne. SHA-2-funktionerne – især SHA-512, SHA-512/224 og SHA-512/256 – har generelt højere ydeevne end SHA-3-funktionerne. Delvis var dette af paranoia og politiske årsager i SHA-3-designprocessen.

    (Som svar blev en af SHA-3-finalisterne spundet ud i den meget hurtigere BLAKE2 , der også er meget brugt på internettet i dag, og SHA-3-vinderen Keccak blev spundet ud i den meget hurtigere KangarooTwelve . )

  • Helt andet internt design. SHA-2 bruger Davies –Meyer-struktur, en forekomst af Merkle-Damgård-strukturen, med en blokciffer (undertiden kaldet SHACAL-2) bygget ud af et ARX-netværk, som MD4; SHA-3 bruger svampestrukturen med Keccak-permutationen.

    Der er ingen brugersynlig forskel her, men det gjorde en forskel for kryptograferes “tillid til designene efter mange DM / ARX-designs baseret på MD4 blev brudt i slutningen af “90erne og begyndelsen af 2000erne.


Historie. Der har været en lang række hashfunktioner standardiseret af NIST i FIPS 180, Secure Hash Standard og senere FIPS 202¸ SHA-3 Standard: Permutationsbaseret og udvidelig output Funktioner. Flere detaljer og historik, herunder de relaterede MD4- og MD5-hashfunktioner, som SHA-0, SHA-1 og SHA-2 – men ikke SHA-3 – var baseret på:

\ begin {ligning} \ begynder {array} {ccc} \ text {hash} & \ text {year} & \ tekst {koll. res.} & \ text {size (bits)} & \ text {design} & \ text {brudt?} \\ \ 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 offentliggjorde NIST FIPS 180 , Secure Hash Standard, der definerer SHA-0 , oprindeligt lige opkaldt SHA til Secure Hash-algoritme, beregnet til brug sammen med den nyligt offentliggjorte DSA. SHA-0 er en enkelt 160-bit hash-funktion rettet mod 80-bit kollisionssikkerhed (og nu helt brudt) , baseret om det relativt nye og hurtige design af MD4 i 1990.

  • I 1995 trak NIST stille FIPS 180 tilbage og erstattede det med FIPS 180-1 definerer SHA-1 , som adskiller sig fra SHA-0 ved at inkludere en enkelt -bit rotation. Ligesom SHA-0 er SHA-1 en enkelt 160-bit hash-funktion rettet mod 80-bit kollisionssikkerhed (og nu helt brudt).

    Der blev ikke givet nogen offentlig forklaring på ændringen, men det varede ikke længe før, at Eli Biham havde offentliggjort differentiel kryptanalyse, og det akademiske samfund indså, at NSAs tweaks til DES S-bokse i 1970erne forbedrede faktisk sikkerheden (husk ikke, at de reducerede 128-bit nøglestørrelsen på Lucifer til 56 bit for DES, hvilket helt ødelagde sikkerheden på samme tid). Samme år brød Dobbertin MD4 [1] og det næste år alvorligt beskadiget MD5 [2] . Ikke længe efter, i 1998, Florent Chabaud og Antoine Joux rapporterede et $ 2 ^ {61} $ -kollisionsangreb på SHA-0 [3] .

  • I 2002 offentliggjorde NIST FIPS 180-2 , der definerede SHA-2 , en familie af relaterede hashfunktioner med forskellige størrelser: SHA- 256, SHA-384 og SHA-512, opkaldt efter deres outputstørrelser og sigter mod henholdsvis 112-, 128-, 192- og 256-bit kollisionsmodstand. SHA -2 funktioner fortsatte designprincipperne for MD4, MD5, SHA-0 og SHA-1 med flere runder og større tilstand. Ikke længe efter, i 2004, rapporterede Xiaoyun Wangs team fuld kollision på MD5 og andre hashfunktioner [4] , og i 2005 offentliggjorde en $ 2 ^ {69} $ -omkostningsangreb på SHA-1 [5] , betydeligt billigere end generisk. Da mange af de designs, der er baseret på MD4, er blevet brudt nu, blev alle nervøse for det design, så…

  • I 2007 lancerede NIST SHA-3-konkurrencen for at designe en efterfølger til SHA-2, hvis design skulle vise sig at være dårligt. Konkurrencen ville finde sted over flere år.

  • I mellemtiden opdaterede NIST i 2008 Secure Hash Standard med FIPS 180-3 , tilføj SHA-224 til SHA-2-familien, og i 2012 opdaterede NIST det igen med FIPS 180-4 (2012) og tilføjede SHA-512/224 og SHA-512/256 , hurtigere 256-bit og 384-bit hash-funktioner på 64-bit maskiner med modstand mod længdeudvidelsesangreb, der lader en beregne $ H (m \ mathbin \ | m “) $ givet $ H (m) $ og visse $ m” $ uden velkendt $ m $ .

  • I 2013 blev SHA-3 konkurrencen afsluttet med Keccak som NISTs valgte vinder , som de offentliggjorde i FIPS 202 . SHA-3 inkluderer fire hash-funktioner i fast størrelse, SHA3-224, SHA3-256, SHA3-384, SHA3-512 og to hash-funktioner, der kan udvides, SHAKE128 og SHAKE256 , der opnår op til en 128-bit eller 256 -bit sikkerhedsniveau, hvis output er langt nok.

    Designet af SHA-3 er helt forskelligt fra SHA-2, hvilket giver tillid til, at kryptanalytiske gennembrud på designlinier baseret på MD4 sandsynligvis ikke vil påvirke SHA-3, skønt der et og et halvt årti efter blodbadet i de tidlige 2000ere har der ikke været bi n meget fremskridt på SHA-2 heller. De valgte parametre til SHA-3-funktionerne i fast størrelse var slags ved et uheld af politiske årsager [6] , så SHA-3-funktioner som SHA3-256 er langsommere end de har brug for, og du skal generelt bare bruge SHAKE128 eller SHAKE256.

Kommentarer

  • Når du sig " fuldstændig brudt ", så vidt jeg forstår det, er det muligt at beregne m1 , m2 således at H ( m1 ) = H ( m2 ). Imidlertid har ingen endnu formået, givet en fast besked M , at beregne en besked m (ikke lig med M ) sådan at H ( M ) = H ( m ).
  • @MartinBonner Ja, jeg ' jeg taler om kollisionsmodstand her, hvorfor de to ord lige før og nu helt brudt er kollisionssikkerhed. Jeg ' Jeg behandler ikke præimage-modstand her, fordi sikker brug af en preimage-resistent men ikke kollisionsresistent hash-funktion er meget subtil og jeg ' prøver ikke at efterlade fælder for uforsigtige læsere ; Jeg adresserer tilstanden af MD5 ' s preimage modstand andetsteds når det ' er specifikt spurgt.

Svar

Forskel mellem SHA256 og SHA3

Hovedforskellen mellem SHA256 og SHA3 er deres intern algoritmedesign .

SHA2 (og SHA1) er bygget ved hjælp af Merkle – Damgård-struktur .

SHA3 er på den anden side bygget ved hjælp af en Svampefunktion og tilhører Keccak-familien.

Navnet kan være vildledende at tro, at SHA3 i forhold til SHA2 bare er en " nyere " version af algoritmen. Som SEJPM sagde: " […] De deler meget lidt ud over navnet." Navnet er netop givet fra NIST og betyder " Sikker hashing-algoritme ", en familie af officielle standarder.

Selvom du kan konstruere MAC s med både SHA256 og SHA3, er SHA3 MAC nemmere at bruge (se fgrieus kommentar nedenfor).

Output

SHA256 udsender en 256-bit hash.

SHA3 tillader output af

  • 224-bit
  • 256-bit
  • 384-bit
  • 512-bit

hash, selvom SHA2-varianterne (SHA256 er en af disse varianter) også muliggør disse længder.

SHA3-algoritmer kan ændres til " SHAKE " algoritmer, og de tillader en output af vilkårlig længde. Du kan finde yderligere oplysninger i dette tidligere stillede spørgsmål .

Sikkerhed

Hashes, der kun gør brug af Merkle – Damgård-strukturen og udsender deres fulde l (eller næsten fuld) tilstand er sårbar over for længdeudvidelsesangreb .

SHAKE-algoritmer er også nyttige til Optimal asymmetrisk krypteringspolstring .


Du kan se en direkte sammenligning her (wikipedia) .

Kommentarer

  • Strengt taget " Hashes, der gør brug af Merkle-Damg å rd struktur er sårbare over for længdeudvidelsesangreb " er forkert. Modeksempler inkluderer SHA-512/256 og SHA-384, fordi de ikke udsender deres fulde tilstand. En anden er SHA-256d, defineret som SHA-256d (m) = SHA-256 (SHA-256 (m)), fordi den skjuler tilstanden for den første hash. Hvad holder er, at " Hashes, der kun gør brug af Merkle-Damg å rd struktur og output deres fulde (eller næsten fulde) tilstand er sårbare over for angreb på længdeudvidelser ". Der er ' en anden forskel mellem SHA-2 og SHA-3: den senere er lettere at bruge som en MAC.
  • Hvad mener du med " lettere at bruge " som MAC? Sikkerere / hurtigere / implementering?
  • Vi kan oprette en MAC med et sikkerhedsargument fra SHA-3 som $ \ text {SHA-3} (K \ | M) $ (i en vis længde på $ K $ det afhænger af SHA-3-varianten og burde være øh, jeg ved ikke ' med sikkerhed); når vi ikke ' ikke har et sådant argument med SHA-2 (selv når egenskaben længdeudvidelse ikke gælder). Se afsnit 5.1.12 i Kryptografiske svampefunktioner .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *