HMAC-SHA256 e HMAC-SHA512 sono in grado di agire come sostituzione in sostituzione di HMAC-SHA1 in HOTP / TOTP?

5

In RFC 4226, l'algoritmo per HOTP è descritto come segue.

HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))

TOTP è essenzialmente lo stesso algoritmo di HOTP ad eccezione del fatto che il contatore C è sostituito da un intero derivato dall'ora corrente. Nelle parole di RFC 6238,

Basically, we define TOTP as TOTP = HOTP(K, T), where T is an integer and represents the number of time steps between the initial counter time T0 and the current Unix time.

Tuttavia, il codice di riferimento descritto nella RFC 6238 e i valori di prova elencati nell'Appendice B si riferiscono a HMAC-SHA256 e HMAC-SHA512 . Tuttavia, i due algoritmi non sono menzionati altrove in RFC 4226 o RFC 6238.

La mia domanda: HMAC-SHA256 e HMAC-SHA512 sono ufficialmente supportati come varianti degli algoritmi HOTP e TOTP?

    
posta Ayrx 22.11.2013 - 13:19
fonte

2 risposte

3

Ovviamente, questi due algoritmi di hash non sono supportati dallo standard. In effetti, SHA-1 è usato praticamente ovunque in RFC 4226 quindi, se lo sostituisci con un altro hash, dovrai implementare un sistema diverso.

Inoltre, mi chiedo quale sarebbe l'idea alla base di questo: l'implementazione richiede il troncamento del risultato dell'HMAC e l'HMAC iniziale utilizza un segreto molto breve: l'uso di un algoritmo di hash diverso qui non migliorerebbe la sicurezza ma lo renderebbe incompatibile con le applicazioni e i token esistenti.

modifica RFC 4226 è abbastanza chiaro su quale algoritmo è possibile utilizzare: HMAC-SHA-1 (sezione 5.2) quindi, se è necessario supportare RFC 4226, non è possibile utilizzare altro.

RFC 6238, d'altra parte, apre le porte all'utilizzo di SHA-256 e SHA-512 (nella sezione 1.2).

Pertanto, sembra che tutto dipenda dai tuoi requisiti: se stai implementando RFC4226 (HOTP) o devi essere compatibile con esso, non puoi usare altro che HMAC-SHA-1. Se, tuttavia, stai implementando l'RFC 6238 (TOTP), l'uso di HMAC-SHA-256 o HMAC-SHA-512 rientra nell'ambito dello standard.

    
risposta data 22.11.2013 - 14:13
fonte
4

Non è solo l'esempio di codice e i valori di test, è anche presente esplicitamente nella RFC 6238 :

TOTP implementations MAY use HMAC-SHA-256 or HMAC-SHA-512 functions, based on SHA-256 or SHA-512 [SHA2] hash functions, instead of the HMAC-SHA-1 function that has been specified for the HOTP computation in [RFC4226].

Quindi, sì.

La mia inesperienza, ma leggermente istruita, sarebbe che non c'è niente di sbagliato nell'usarli anche con HOTP (anche se la RFC non lo dice esplicitamente). Dopotutto, HOTP e TOPT sono praticamente uguali.

    
risposta data 22.11.2013 - 14:41
fonte

Leggi altre domande sui tag