Perché la funzione troncata per le password HMAC una tantum è così complicata?

12

Ho letto RFC4226 come parte di alcune ricerche e mi chiedevo perché la funzione troncare l'HMAC era così complicato. Per quanto ho capito, gli ultimi 4 bit dell'HMAC definiscono un offset da cui vengono presi 4 byte per essere convertiti in una password unica.

Perché la funzione truncate non può sempre prendere i primi 4 byte dell'HMAC? C'è qualche implicazione per la sicurezza di prendere sempre gli stessi 4 byte che ho perso o è solo più facile da implementare utilizzando un offset dinamico?

Qualsiasi informazione che qualcuno potrebbe fornire è molto apprezzata.

    
posta Miles 22.03.2015 - 16:52
fonte

1 risposta

18

È un po 'feticcio. Per quanto sappiamo attualmente, non c'è motivo di credere che l'utilizzo dei primi quattro byte dell'output HMAC non sarebbe altrettanto sicuro.

Tuttavia, la mancanza di ragione per credere non implica che nessuno creda. Alcune persone "sentono" che il troncamento sistematico può aiutare l'aggressore in un modo completamente non specificato. Con un sacco di handwaving, si potrebbe sostenere che il troncamento dinamico renderà l'operazione un po 'più difficile per un aggressore che tenta un attacco di forza bruta sulla chiave segreta, con l'aiuto di FPGA o ASIC dedicati:

  • Poiché possono essere necessari tutti e 20 i byte di uscita, l'utente malintenzionato deve calcolare un HMAC / SHA-1 completo; se sono stati utilizzati solo i primi quattro byte, un circuito dedicato non dedicato potrebbe saltare alcuni passaggi negli ultimi round SHA-1 (stiamo parlando di un'ottimizzazione di, al massimo, 3% qui).

  • Il "troncamento dinamico" implica una sorta di ricerca dipendente dai dati, che può essere costosa in ambito hardware (di nuovo, questo è per lo più trascurabile per quanto riguarda tutti i sommatori a 32 bit in SHA-1).

Ma queste non sono, davvero, buone ragioni. Quindi il punto principale della "troncatura dinamica" è di essere una sorta di criptato voodoo che può stupire il neofita, e quindi possibilmente aiutare in accettazione . Specificare un buon algoritmo non è abbastanza; gli implementatori devono anche essere convinti di usarlo e, per questo, alcuni gesti dall'aspetto magico possono fare miracoli.

    
risposta data 22.03.2015 - 17:41
fonte

Leggi altre domande sui tag