Attacco allo schema di sicurezza sha256 basato su token personalizzato

2

Ho token fatto come sha256("public text" + "secret value") , o qualsiasi numero di tali token con lo stesso "valore segreto" ma diverso "testo pubblico". sha256 utilizzato non è salato, pertanto sha256 -ing lo stesso testo produrrà sempre lo stesso hash.

Posso costruire un token valido con il mio "testo pubblico" (o persino rivelare il segreto) senza una ricerca approfondita del segreto?

    
posta Ivan Sopov 16.07.2013 - 15:53
fonte

1 risposta

5

L' attacco di estensione della lunghezza di cui parla @Tinned_Tuna ti avrebbe permesso di generare token contraffatti con un "testo pubblico" di propria scelta (all'interno di alcuni vincoli di formato dovuti al padding SHA-256, però), ma solo se il segreto era arrivato per primo nella funzione hash. Inserendo il segreto per ultimo, si evita questa specifica debolezza.

Un'altra debolezza meno grave legata all'input del "testo pubblico" è che, potenzialmente , come attaccante, potresti provare a costruire una collisione SHA-256, avere un messaggio di la coppia in collisione viene autenticata dal sistema proprietario della chiave e il valore di hash sarà valido per entrambi i messaggi. In altre parole, l'uso di SHA-256 (public + secret) rende l'algoritmo resistente quanto la resistenza di collisione della funzione hash, invece della resistenza di preimage. Questo non è un problema serio perché SHA-256 ha un output a 256 bit, che lo rende immune (in pratica) alle collisioni; questo è più un problema teorico in quanto non vale la pena spendere soldi (devi usare un output a 256-bit per ottenere sicurezza a 128-bit).

Un modo di affermare le cose è che, in tali costruzioni, è necessario inserire la chiave segreta almeno due volte, all'inizio e alla fine del calcolo. Ma, davvero, vuoi un MAC ; questo è ciò di cui parlano i tuoi "token". Quindi, fai un favore a te stesso, non provare a inventare il tuo algoritmo; invece, usa qualcosa che è stato attentamente progettato e studiato per anni, anche decenni, e fornisce il tipo di sicurezza che desideri. Questo è chiamato HMAC . HMAC usa una funzione di hash sottostante (ad es. SHA-256) ma lo fa bene , con la chiave segreta inserita nel posto giusto in modo da evitare le insidiose insidie implicite dall'uso di una funzione di hash effettiva, al contrario alla mitica bestia conosciuta come un "oracolo casuale". Se studi HMAC, vedrai due invocazioni annidate della funzione di hash, con la chiave segreta usata due volte .

    
risposta data 16.07.2013 - 16:11
fonte

Leggi altre domande sui tag