Questa Q & A https://security.stackexchange.com/questions/33123/hotp-with-as-hmac-hashing-algoritme-a-hash-from-the-sha-2-family

dice che la sicurezza di HMAC-SHA1 non dipende dalla resistenza alle collisioni? Stanno dicendo specificatamente riguardo a HOTP o per HMAC-SHA1 per qualsiasi uso?

Se HMAC-SHA1 viene utilizzato per verificare lintegrità di un documento e puoi trovare una collisione, puoi apportare modifiche al documento, giusto?

http://tools.ietf.org/html/rfc2104#section-6

Anche la RFC afferma che la resistenza alle collisioni è rilevante

La sicurezza del meccanismo di autenticazione dei messaggi qui presentato dipende dalle proprietà crittografiche della funzione hash H: la resistenza alla collisione che trova (limitata al caso in cui il valore iniziale è segreto e casuale e dove loutput della funzione non è esplicitamente disponibile per lattaccante), e la proprietà di autenticazione del messaggio della funzione di compressione di H quando applicata a blocchi singoli

Cosa mi manca qui?

Commenti

  • Sembra esserci una confusione nella domanda: HMAC-SHA1 non è usato per firmare un documento (almeno, non di solito; e assumendolo era, lipotesi standard per HMAC che la sua chiave di input sia segreta non può ' tenere dal La procedura di verifica della firma è pubblica). Trovo quella risposta abbastanza a posto.
  • @fgrieu – Penso di aver commesso un errore nella terminologia – quando ho scritto la firma, avrei dovuto effettivamente scritto generando un digest di autenticazione del messaggio per proteggere lintegrità. In caso di collisioni, puoi modificare il messaggio e mantenere lo stesso MAC, quindi è un problema, giusto?
  • Dovremmo chiuderlo come un duplicato di HMAC-MD5 è considerato sicuro per lautenticazione dei dati crittografati? ? Sebbene questa domanda riguardi SHA1, non MD5, la risposta è quasi la stessa.
  • Sono ' sono abbastanza sicuro di avere un attacco pre-immagine contro SHA -1 questo esplode.

Risposta

Nella prima sezione di questa risposta presumo che attraverso una migliore hardware e / e miglioramenti algoritmici, è diventato di routine possibile mostrare una collisione per SHA-1 con un metodo simile a quello di Xiaoyun Wang, Yiqun Lisa Yin e Hongbo Yu ” s attacco o Marc Stevens “attacco . Questo è stato ottenuto pubblicamente allinizio del 2017 ed era stato chiaramente fattibile (lo sforzo rappresenta solo poche ore di sforzo di hashing speso per lestrazione di bitcoin ; ma lhardware utilizzato per questo non può “t essere riproposto per lattacco a SHA-1).

Contrariamente a quanto considerato nella domanda, ciò non consentirebbe a un aggressore di non inchinarsi la chiave HMAC-SHA-1 per apportare una modifica non rilevata a un documento; che è incluso se lattaccante è in grado di preparare il documento che è disposto a modificare in seguito.

Una spiegazione è che gli attacchi di collisione su SHA-1 che stiamo considerando richiedono la conoscenza dello stato di la variabile di concatenamento SHA-1 e lattaccante di HMAC che non conosce la chiave viene privato di tale conoscenza dalla chiave che entra in entrambe le estremità delliterazione di round in cui il messaggio si trova in HMAC. Sarebbe necessaria uninterruzione molto più profonda della funzione circolare di SHA-1 per interrompere lHMAC. Non a caso, M. Bellare “s Nuove prove per NMAC e HMAC: sicurezza senza Collision-Resistance mostra che la sicurezza di HMAC vale assumendo solo proprietà più deboli sulla sua funzione rotonda rispetto a quelle necessarie per la resistenza alle collisioni dellhash corrispondente.

Ciò che sarebbe possibile è per un lattaccante conosce la chiave HMAC per preparare un documento che desidera modificare in seguito, che può essere modificato senza modificare il MAC. Ma dal momento che lattaccante ha in mano la chiave HMAC, non è considerata uninterruzione di HMAC.


Un commento chiede quando non dovrebbe essere usato SHA-1?

Si consiglia di eliminare rapidamente SHA-1 nelle applicazioni che richiedono resistenza alle collisioni (come immagine: allontanarsi rapidamente, quando si esce un edificio che suona lallarme antincendio quando non cè fumo). Ciò include lhashing per il controllo dellintegrità o la firma digitale di documenti preparati da altri anche in parte (ovvero la maggior parte dei documenti). Se continuare a utilizzare SHA-1 ha forti vantaggi operativi, si può tranquillamente fare uneccezione inserendo qualcosa di imprevedibile dagli avversari prima di qualsiasi parte del messaggio che un avversario può influenzare.Ad esempio, imponendo un numero di serie di certificato imprevedibile al momento della richiesta di un certificato, unautorità di certificazione potrebbe comunque emettere certificati in sicurezza utilizzando SHA-1 per la propria firma interna.

Come spiegato nella prima sezione di questo risposta, fintanto che la chiave di HMAC-SHA-1 è considerata segreta, non vi è alcuna indicazione che HMAC-SHA-1 sia insicura perché utilizza SHA-1. Se la chiave è considerata pubblica, o la sua fuga è considerata una possibilità operativa in cui è ancora richiesta la resistenza alle collisioni per HMAC, incluso il messaggio preparato dopo la divulgazione della chiave, si applicano le precauzioni discusse nel paragrafo precedente.

Commenti

  • Quindi, quando non dovrebbe essere usato SHA1? vale a dire che la scoperta del problema in SHA1 ne preclude lutilizzo dove?
  • ' è generalmente consigliato di allontanarsi (" cammina ", non " corri ") da SHA-1. Detto questo, il costrutto specifico di HMAC-SHA1 è ancora considerato sicuro da usare (assumendo una chiave segreta) a causa della prova di sicurezza per HMAC che non si basa sulla resistenza alle collisioni della PRF sottostante. In caso di dubbio, passa a SHA-2.
  • @StephenTouset – sì, ho capito. Tuttavia, cè qualche utilizzo di SHA-1 da cui dovresti scappare piuttosto che allontanarti o andartene.
  • No, altrimenti sarebbe il consiglio. La resistenza alle collisioni di SHA-1 ' al momento è interrotta solo in senso teorico. Non sono state ancora trovate collisioni note, sebbene lattuale migliore attacco sia solo al limite della fattibilità.

Risposta

Quando le persone dicono che HMAC-MD5 o HMAC-SHA1 sono ancora sicuri, significa che “sono ancora protetti come PRF e MAC.

Il presupposto chiave qui è che la chiave è sconosciuta allaggressore.

$$ \ mathrm {HMAC} = \ mathrm {hash} (k_2 | \ mathrm {hash} (k_1 | m)) $$

  • Potenziale attacco 1: trova una collisione universale, valida per molte chiavi:

    Utilizzando HMAC il messaggio non viene sottoposto ad hashing direttamente, ma ha $ k_1 $ come prefisso. Ciò significa che lattaccante non lo fa ” Non conosco lo stato interno dellhash quando inizia il messaggio. Trovare un messaggio in conflitto per la maggior parte delle scelte è $ k_1 $ è estremamente difficile 1 .

  • Potenziale attacco 2: recuperare la chiave

    Affinché questo abbia successo, la funzione hash necessita di pause molto più grandi delle semplici collisioni. È simile a un primo attacco pre-immagine, una proprietà che sta ancora andando forte sia per MD5 che per SHA1.

Daltra parte, se hai usato una chiave nota allattaccante e lattaccante ha la capacità di trovare le collisioni nellhash sottostante (per IV arbitrari), queste girano in collisioni di HMAC. Quindi, se hai bisogno di sicurezza in uno scenario senza chiave, usa un hash resistente alle collisioni, come SHA2 e considera di non usare affatto HMAC.


1 Sospetto che non lo sia possibile (per dimensioni dei messaggi realistiche) anche per aggressori senza limiti di calcolo, ma dimostrarlo è difficile.

Commenti

  • Quindi, quando non dovrebbe essere usato SHA1? cioè la scoperta del problema in SHA1 ne preclude luso dove?
  • @ user93353 Come ho detto, la sicurezza di HMAC-SHA1 dipende dalla chiave sconosciuta. Se non cè la chiave o è nota allattaccante , le collisioni in SHA1 diventano una minaccia. Ma SHA1 dovrebbe essere usato raramente, se non mai, nei nuovi progetti, poiché sono disponibili alternative migliori.
  • Se la chiave è nota allautore dellattacco, anche SHA2 lo farà essere un problema, giusto?
  • @ user93353 Dipende da cosa vuoi ottenere. Ovviamente nessun hash senza chiave è un MAC.
  • @CodesInChaos – dici che HMAC-SHA1 è un problema solo se la chiave è nota, ma se la chiave lo è noto, sarà un problema per qualsiasi operazione di hash HMAC, giusto?

Lascia un commento

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