Qual è la differenza tra SHA-3 e SHA-256?

Sono nuovo in materia di crittografia, ho imparato che SHA-3 (Secure Hash Algorithm 3) è lultimo membro di la famiglia di standard Secure Hash Algorithm, rilasciata dal NIST.

Ma recentemente ho visto SHA-256 ma non capisco cosa sia in confronto a SHA-3?

Commenti

  • SHA-256 è SHA-2 con output a 256 bit. SHA-2 è il predecessore di SHA-3. Condividono molto poco oltre al nome.
  • Ma il nome cattura lessenza, se non stai facendo crittografia questi sono tutti algoritmi di hash sicuro. Il contratto e le affermazioni sulla sicurezza sono quasi identici .
  • @MeirMaor Data lesistenza di SHA-1 che sembra essere unaffermazione in grassetto.
  • @Maeher, SHA1 è stato creato essenzialmente con gli stessi requisiti, ora sappiamo che non ‘ t soddisfarli. Per lo meno i requisiti di resistenza alle collisioni. Ha anche una dimensione di output più piccola mentre SHA3 può avere la stessa dimensione di output di SHA2.

Risposta

Le principali differenze tra il vecchio SHA-256 della famiglia SHA-2 di FIPS 180 e il più recente SHA3-256 della famiglia SHA-3 di FIPS 202 , sono:

  • Resistenza agli attacchi di estensione della lunghezza. Con SHA-256, dato $ H (m) $ ma non $ m $ , è facile trovare $ H (m \ mathbin \ | m “) $ per alcuni suffissi $ m” $ . Non così con nessuna delle funzioni SHA-3.

    Ciò significa, ad esempio , che $ m \ mapsto H (k \ mathbin \ | m) $ non un codice di autenticazione del messaggio sicuro nella chiave $ k $ quando $ H $ è SHA-256, perché conoscere lautenticatore su un messaggio ti consente di falsificare lautenticatore su un altro. La proprietà di estensione della lunghezza ha in parte spostato lo sviluppo di HMAC.

    Al contrario, la costruzione del prefisso chiave è sicura come MAC quando $ H $ è una delle funzioni SHA-3 o una delle più recenti funzioni SHA-2 SHA-512/224 e SHA-512/256. Per SHA-224, che è essenzialmente il troncamento a 224 bit di SHA-256 (ma con un IV diverso), lavversario ha una $ 2 ^ {- 32} $ possibilità di indovinare i bit di output scartati in un unico tentativo, piccolo ma non trascurabile.

  • Prestazioni. Le funzioni SHA-2, in particolare SHA-512, SHA-512/224 e SHA-512/256, generalmente hanno prestazioni superiori rispetto alle funzioni SHA-3. In parte questo era dovuto a paranoia e ragioni politiche nel processo di progettazione di SHA-3.

    (In risposta, uno dei finalisti SHA-3 è stato trasformato nel più veloce BLAKE2 , oggi ampiamente utilizzato anche su Internet, e Keccak, vincitore di SHA-3, è stato trasformato nel più veloce KangarooTwelve . )

  • Design interno completamente diverso. SHA-2 utilizza Davies –Meyer struttura, unistanza della struttura Merkle – Damgård, con un codice a blocchi (a volte chiamato SHACAL-2) costruito da una rete ARX, come MD4; SHA-3 utilizza la struttura spugna con la permutazione di Keccak.

    Non cè differenza visibile dallutente qui, ma ha fatto la differenza per la fiducia dei crittografi nei progetti dopo molti DM I progetti / ARX basati su MD4 sono stati interrotti alla fine degli anni 90 e allinizio degli anni 2000.


Storia. Esiste una lunga serie di funzioni hash standardizzate da NIST in FIPS 180, Secure Hash Standard e successivamente FIPS 202¸ SHA-3 Standard: Permutation-Based and Extendable-Output Funzioni. Maggiori dettagli e cronologia, comprese le relative funzioni hash MD4 e MD5 su cui si basavano SHA-0, SHA-1 e SHA-2, ma non SHA-3:

\ begin {equation} \ begin {array} {ccc} \ text {hash} & \ text {year} & \ text {coll. res.} & \ text {size (bits)} & \ text {design} & \ text {rotto?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {ARX DM a 32 bit} & 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 {ARX DM a 32 bit} & 2005 \\ \ hline \ text {SHA-256 (SHA-2)} & 2002 & 128 & 256 & \ text { ARX DM} a 32 bit & \\ \ te xt {SHA-384 (SHA-2)} & 2002 & 192 & 384 & \ text {ARX DM a 64 bit} & \\ \ text {SHA-512 (SHA-2)} & 2002 & 256 & 512 & \ text {64 bit ARX DM} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {ARX DM a 32 bit} & \\ \ text {SHA-512/224} & 2012 & 112 & 224 & \ text {ARX DM a 64 bit} & \\ \ text {SHA-512/256 } & 2012 & 128 & 256 & \ text {ARX DM a 64 bit} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {spugna Keccak a 64 bit} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {64-bit Keccak sponge} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {spugna Keccak a 64 bit} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {64-bit Keccak sponge} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {64-bit Keccak sponge} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {spugna Keccak a 64 bit} \ end {array} \ end {equation}

  • Nel 1993, NIST ha pubblicato FIPS 180 , lo standard Secure Hash, definendo SHA-0 , originariamente chiamato solo SHA per Secure Hash Algorithm, destinato alluso con il DSA appena pubblicato. SHA-0 è una singola funzione hash a 160 bit finalizzata alla sicurezza da collisioni a 80 bit (e ora completamente interrotta) , basata sul design relativamente nuovo e veloce di MD4 nel 1990.

  • Nel 1995, il NIST ha ritirato silenziosamente FIPS 180 e lo ha sostituito con FIPS 180-1 che definisce SHA-1 , che differisce da SHA-0 per linclusione di uno solo -bit di rotazione. Come SHA-0, SHA-1 è una singola funzione hash a 160 bit finalizzata alla sicurezza di collisione a 80 bit (e ora completamente non funzionante).

    Non è stata fornita alcuna spiegazione pubblica per il cambiamento, ma non è passato molto tempo prima che Eli Biham avesse pubblicato la crittoanalisi differenziale e la comunità accademica si rese conto che le modifiche della NSA alle S-box DES negli anni 70 effettivamente migliorò la sicurezza (non importa che ridussero la dimensione della chiave a 128 bit di Lucifer a 56 bit per DES, distruggendo completamente la sicurezza allo stesso tempo). Lo stesso anno, Dobbertin ruppe lMD4 [1] e lanno successivo MD5 gravemente danneggiato [2] . Non molto tempo dopo, nel 1998, Florent Chabaud e Antoine Joux hanno segnalato un $ 2 ^ {61} $ -cost attacco di collisione su SHA-0 [3] .

  • Nel 2002, NIST ha pubblicato FIPS 180-2 , definendo SHA-2 , una famiglia di funzioni hash correlate con dimensioni diverse: SHA- 256, SHA-384 e SHA-512, denominati per le loro dimensioni di output e che mirano rispettivamente alla resistenza alle collisioni di 112, 128, 192 e 256 bit. SHA Le funzioni -2 hanno continuato i principi di progettazione di MD4, MD5, SHA-0 e SHA-1, con più round e stato più grande. Non molto tempo dopo, nel 2004, il team di Xiaoyun Wang ha riportato collisioni complete su MD5 e altre funzioni hash [4] e nel 2005 ha pubblicato un $ 2 ^ {69} $ -cost attacco a SHA-1 [5] , sostanzialmente più economico del generico. Con molti dei progetti basati su MD4 che sono stati rotti ora, tutti si sono innervositi per quel progetto, quindi …

  • Nel 2007, il NIST ha lanciato il concorso SHA-3 per progettare un successore di SHA-2, nel caso in cui il design fosse pessimo. La competizione si sarebbe svolta nellarco di diversi anni.

  • Nel frattempo, nel 2008, NIST ha aggiornato lo standard Secure Hash con FIPS 180-3 , aggiunta di SHA-224 alla famiglia SHA-2, quindi nel 2012 il NIST lha aggiornata di nuovo con FIPS 180-4 (2012) , aggiungendo SHA-512/224 e SHA-512/256 , funzioni hash a 256 bit e 384 bit più veloci su macchine a 64 bit con resistenza agli attacchi di estensione della lunghezza che consentono di elaborare $ H (m \ mathbin \ | m “) $ dato $ H (m) $ e alcuni $ m” $ senza conoscere $ m $ .

  • Nel 2013, il concorso SHA-3 si è concluso con Keccak come vincitore scelto dal NIST , che hanno pubblicato in FIPS 202 . SHA-3 include quattro funzioni hash a dimensione fissa, SHA3-224, SHA3-256, SHA3-384, SHA3-512 e due funzioni hash con output estensibile SHAKE128 e SHAKE256 che raggiungono fino 128 bit o 256 -bit se loutput è abbastanza lungo.

    Il design di SHA-3 è completamente diverso da SHA-2, il che dà fiducia che le scoperte crittoanalitiche sulla linea di progetti basati su MD4 probabilmente non avranno effetto SHA-3, anche se un decennio e mezzo dopo il bagno di sangue dei primi anni 2000 non cè più n molti progressi anche su SHA-2. I parametri scelti per le funzioni SHA-3 a dimensione fissa sono stati accidentalmente troppo progettati per motivi politici [6] , quindi le funzioni SHA-3 come SHA3-256 sono più lenti del necessario e in genere dovresti usare semplicemente SHAKE128 o SHAKE256.

Commenti

  • Quando diciamo ” completamente rotto “, per quanto ho capito, è possibile calcolare m1 , m2 tale che H ( m1 ) = H ( m2 ). Tuttavia, nessuno è ancora riuscito, dato un messaggio fisso M , a calcolare un messaggio m (non uguale a M ) tale che H ( M ) = H ( m ).
  • @MartinBonner Sì, ‘ sto parlando di resistenza alle collisioni ecco perché le due parole prima di “e ora completamente interrotte” sono “sicurezza di collisione”. ‘ non sto affrontando la resistenza preimage qui perché luso sicuro di una funzione hash preimage-resistente ma non resistente alle collisioni è molto sottile e io ‘ cerco di non lasciare trappole ai lettori incauti ; Mi occupo dello stato di MD5 ‘ s preimage resistenza altrove quando ‘ è stato chiesto specificamente.

Risposta

Differenza tra SHA256 e SHA3

La differenza principale di SHA256 e SHA3 è il loro progettazione interna dellalgoritmo .

SHA2 (e SHA1) sono costruiti utilizzando la struttura Merkle – Damgård .

SHA3 daltra parte è costruito utilizzando un Sponge function e appartiene alla famiglia Keccak.

Il nome potrebbe essere fuorviante pensare che SHA3 rispetto a SHA2 sia solo un ” versione più recente ” dellalgoritmo. Come ha detto SEJPM: ” […] Condividono ben poco oltre al nome.” Il nome è appena dato da NIST e significa ” Algoritmo di hashing sicuro “, una famiglia di standard ufficiali.

Anche se puoi costruire MAC s sia con SHA256 che SHA3, SHA3 MAC è più facile da usare (vedi il commento di fgrieu di seguito).

Output

SHA256 emette un hash a 256 bit.

SHA3 consente output di

  • 224 bit
  • 256 bit
  • 384 bit
  • Hash a 512 bit

, sebbene anche le varianti SHA2 (SHA256 è una di queste varianti) consentano queste lunghezze.

Gli algoritmi SHA3 possono essere modificati in ” SHAKE ” algoritmi e consentono un output di lunghezza arbitraria. Puoi trovare ulteriori informazioni in questa domanda posta in precedenza .

Sicurezza

Hash che utilizzano solo la struttura Merkle – Damgård e generano il loro completo Lo stato l (o quasi pieno) è vulnerabile agli attacchi di estensione della lunghezza .

Gli algoritmi SHAKE sono utili anche per Padding ottimale della crittografia asimmetrica .


Puoi visualizzare un confronto diretto qui (wikipedia) .

Commenti

  • In senso stretto, ” Hash che fanno uso di Merkle – Damg å rd sono vulnerabili agli attacchi di estensione della lunghezza ” non è corretto. I controesempi includono SHA-512/256 e SHA-384, perché non restituiscono il loro stato completo. Un altro è SHA-256d, definito come SHA-256d (m) = SHA-256 (SHA-256 (m)), perché nasconde lo stato del primo hash. Ciò che tiene è che ” hash che solo fanno uso della å struttura rd Merkle – Damg e loutput del loro stato completo (o quasi completo) sono vulnerabili agli attacchi di estensione della lunghezza “. Cè ‘ unaltra differenza tra SHA-2 e SHA-3: il secondo è più facile da usare come MAC.
  • Cosa intendi con ” più facile da usare ” come MAC? Implementazione / più sicura / più veloce?
  • Possiamo costruire un MAC con un argomento di sicurezza da SHA-3 come $ \ text {SHA-3} (K \ | M) $ (per una lunghezza di $ K $ che dipende dalla variante SHA-3 e dovrebbe essere uh, non ‘ non lo so per certo); quando ‘ non abbiamo tale argomento con SHA-2 (anche quando la proprietà di estensione della lunghezza non si applica). Vedere la sezione 5.1.12 di Funzioni crittografiche di spugna .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *