SipHash è un'alternativa sicura a HMAC-SHA256 per l'autenticazione dell'utente?

3

Dopo aver letto la pagina di Wikipedia su SipHash penso che possa essere usato come HMAC-SHA256 in JWT per creare e verificare Token API (autenticazione dei dispositivi client).

In JWT il server crea questo MAC per firmare identificativi utente (ad esempio un numero o email) con una chiave privata che viene poi inviata insieme all'identificatore a ogni richiesta (dopo il login).

Inoltre, il documento ufficiale afferma:

Target applications include network traffic authentication

Tuttavia, non riesco a trovare nessuna pagine sul Web che spieghi questo caso d'uso, sebbene sia molto più veloce e sia uscito da un po 'di tempo.

HMAC-SHA256 è più sicuro in qualche modo o mi manca qualcos'altro? Grazie!

EDIT: l'output SipHash è in genere solo a 64 bit, quindi mi riferisco a SipHash double con 128 bit come nell'implementazione JavaScript

    
posta Jannis 11.01.2018 - 01:44
fonte

2 risposte

2

La più recente versione di SipHash in uscita a 128 bit è ipoteticamente appropriata per questa attività; cioè, se SipHash è strong quanto i suoi autori intendono (se!), allora sì, puoi usarlo per quell'attività.

Un'osservazione analoga si può dire di SHA-2, ma il problema principale qui è uno di confidenza soggettiva; i crittografi non hanno esaminato SipHash in quasi tutti i dettagli di SHA-2, così soggettivamente, abbiamo meno ragioni per credere che sia tanto strong quanto è stato congetturato, rispetto a HMAC-SHA-2.

Quindi HMAC-SHA-2 è l'opzione più prudente qui. Considererei solo l'utilizzo di SipHash se avessi dimostrato in modo conclusivo, sulla base dei dati di profilazione, che SHA-2 fosse un collo di bottiglia significativo per le prestazioni della mia applicazione.

    
risposta data 12.01.2018 - 00:30
fonte
1

SipHash genera solo 64 bit di output; quindi, è notevolmente meno sicuro di SHA-256, SHA-384 o SHA-512. È anche più veloce, che aiuta anche un aggressore. I primi 64 bit sono ragionevoli, ma SipHash si ferma qui. Vedi questo post di Crypto.Stackexchange per ulteriori dettagli.

Inoltre, non si dovrebbe usare una singola passata di nulla per l'autenticazione dell'utente (hashing della password); usa PBKDF2, BCrypt, SCrypt o Argon2 con un numero di operazioni / un fattore di iterazione elevato come il tuo hardware può permettersi. Vedi Come fare in modo sicuro le password di hash

    
risposta data 11.01.2018 - 06:15
fonte

Leggi altre domande sui tag