Hash non crittografico per l'autenticazione dei messaggi?

3

La mia applicazione utilizza UDP. La comunicazione client-server tipica consiste in un pacchetto (< 500 byte di carico utile) richieste dal client e un pacchetto risponde a tali richieste dal server. In caso di perdita di pacchetti, il client deve inviare nuovamente la sua richiesta.

Per proteggere la "connessione" viene utilizzato un PSK AES-128 (precedentemente trasferito tramite TLS / SSL). Ora ogni pacchetto verrà crittografato utilizzando AES-128 in modalità CTR. Il pacchetto conterrà il nonce / contatore, il messaggio da consegnare e un hash del messaggio nonce plus:

MyPayload = aes128CTR(nonce + plaintext + hash(nonce + plaintext))

In questo caso, una funzione di hash non crittografica (ad es. Murmur3) può essere utilizzata come MAC?

Inoltre devo inviare il nonce completo (16 byte) o sarà sufficiente un contatore più piccolo (ad es. 4 byte) per essere sicuro che il pacchetto sia stato effettivamente inviato dal mio client invece di essere un possibile pacchetto con spoofing IP?

    
posta HannesR-O 01.09.2016 - 13:54
fonte

1 risposta

3

Suppongo di no, perché l'hash serve come pregiudizio per il testo in chiaro. Murmur3, DJB2 ecc hanno domini fissi molto piccoli e prendono in considerazione le collisioni, che non puoi permetterti su un cifrario a blocchi in modalità contatore.

Se si presuppone che un avversario sia a conoscenza dei parametri di crittografia simmetrica e dell'operazione in modalità di blocco utilizzata, per decrittografare il testo crittografico occorrerebbero solo le dimensioni del dominio hash + nonce +. Questo può essere fatto in tempo polinomiale. Questo risponde anche alla tua seconda domanda riguardante le dimensioni del contatore.

Direi che usando una funzione di hash il modo in cui descrivi può indebolire ulteriormente il testo cifrato poiché si ricava un hash relativamente piccolo dal testo in chiaro. Suggerirei encrypt-then-MAC in ogni caso.

Aggiorna

Se hai il potere computazionale di stabilire una sessione TLS comunque, perché non andare con una variante GCM / GHASH? Potresti anche voler associare i pacchetti e aggiungere il contatore dei pacchetti come AEAD in GCM.

    
risposta data 01.09.2016 - 14:16
fonte

Leggi altre domande sui tag