HOTP con hashing HMAC come algoritmo di un hash della famiglia SHA-2

5

Sto cercando di utilizzare una soluzione OTP.

HOTP è una soluzione OTP basata su un HMAC con algoritmo di hashing SHA-1. Gli standard lo definiscono in questo modo.

Ma ... SHA1 (come sappiamo) è stato un punto debole .

Quindi, ora sto cercando di utilizzare un algoritmo di hashing della famiglia SHA-2 come hash per la mia soluzione HOTP. qualche pensiero su questo?

Sì, l'alternativa potrebbe essere usando TOTP , lì la RFC ci dice che è ok usare diversi algoritmi di hashing .

Il modo in cui SHA1 è rotto non influisce sull'HMAC? Il contatore che HOTP utilizza incrementi ogni volta. Quindi le collisioni non sono davvero un grosso problema.

Ma alcuni commenti da parte tua saranno molto apprezzati!

    
posta Lee. M 24.03.2013 - 13:26
fonte

2 risposte

10

HMAC / SHA-1 è non rotto. SHA-1 ha un punto debole riguardo a collisioni (ed è ancora "teorico" "Dal momento che produrre una collisione per SHA-1, sebbene concettualmente più semplice dell'attacco generico, è ancora così costoso che nessuno ha ancora calcolato una collisione del genere). Ma la resistenza HMAC non si basa sulla resistenza alle collisioni.

In effetti, HMAC è provato sicuro fintanto che la funzione di hash che usa è Funzione Merkle-Damgård che si basa su una" funzione di compressione "interna che si comporta come un PRF . Questo è piuttosto tecnico. Per farla breve, la nota debolezza di SHA-1 annulla la prova, ma nessuno sa come trasformarlo in un punto debole su HMAC / SHA-1. Empiricamente, abbiamo l'esempio di MD4 : MD4 è estremamente rotto per quanto riguarda le collisioni, con un costo quasi pari a zero (calcolare una collisione per MD4 richiede meno tempo rispetto all'effettivo blocco dei due messaggi in collisione per verificare che si tratti effettivamente di una collisione) e anche HMAC / MD4 è guasto, ma con un costo abbastanza non banale di 2 58 in testo semplice / coppie MAC (e questo è un attacco di contraffazione, nemmeno un attacco di recupero chiave), rendendolo assolutamente non applicabile nella pratica. Se abbiamo lo stesso tipo di rapporto per SHA-1, allora HMAC / SHA-1 è ancora molto sicuro.

Tuttavia, HOTP può essere utilizzato con qualsiasi funzione di hash, ma ciò richiede "adattamenti". In generale, non devi giocare con algoritmi crittografici . Detto questo, è piuttosto ovvio (almeno per un crittografo) che la sostituzione di SHA-1 con "SHA-256 troncato a 160 bit" in HOTP produrrà qualcosa che è ugualmente sicuro (cioè il l'analisi della sicurezza dettagliata di HOTP si applica completamente con quella funzione di hash alternativa). Tuttavia, la modifica della funzione di hash significa che non puoi più testare la tua implementazione per quanto riguarda i valori di test pubblicati e questa è una grande preoccupazione. I bug di implementazione sono una fonte molto più comune di vulnerabilità pratiche rispetto alle debolezze crittografiche.

Pertanto, usa HOTP con HMAC / SHA-1 e sii felice . Non è rotto.

    
risposta data 24.03.2013 - 14:15
fonte
3

Se capisco correttamente, la collisione non è importante in questo caso. Da una grande stringa (il tuo segreto) e il timestamp, stai generando un PIN OTP a 6 cifre, composto solo da numeri. Ovviamente avrai un numero enorme di collisioni! Ciò che ti salverà, è il fatto che l'OTP cambia continuamente e l'attaccante deve indovinare la parte statica del tuo PIN e nome utente.

    
risposta data 20.10.2015 - 17:43
fonte

Leggi altre domande sui tag