Il codice di flusso / blocco aggiunge un semplice hash per garantire l'integrità

1

La domanda è semplice:

Aggiungere un hash a un messaggio e quindi crittografarlo utilizzando una cifratura di flusso / cifrario a blocchi. Perché non è possibile garantire integrità del messaggio alla decrittografia?

    
posta João Rodrigues 17.11.2014 - 21:34
fonte

2 risposte

4

Perché non garantisce l'integrità è più facile da vedere nel caso di un codice di flusso come RC4, in cui la crittografia è un XOR bit-by-bit dei dati con un flusso dipendente dalla chiave. Fondamentalmente, la crittografia del messaggio m è: e = m XOR s k , dove s k è l'uscita RC4 (un lungo flusso di bit pseudocasuali prodotti dalla chiave k ). Supponiamo che applichi il metodo "aggiungi hash quindi crittografa". Inizi con il messaggio m e ottieni questo:

e = ( m || h ( m )) XOR s k

Ora arriva un aggressore, ed è intelligente, e indovina il contenuto di m (ricorda: l'attaccante è dopo l'integrità, non la riservatezza, quindi assumiamo che conosce già il messaggio). Poiché una funzione hash non ha chiave, l'attaccante può ricalcolare m || h ( m ). Da ciò ottiene:

s k = ( m || h ( m )) XOR e

Ora l'attaccante ha il flusso segreto dipendente dalla chiave s k . Quindi procede a crittografare il suo falso messaggio m ' calcolando:

e ' = ( m' || h ( m ')) XOR s k

Questo funziona quando m non è più lungo di m (potrebbe essere più breve). Al momento della decodifica, l'hash si abbina e l'integrità viene sconfitta. Curiosità: Conosco un sistema per l'online banking basato sul Web che utilizzava questa costruzione per l'integrità ed è stato ampiamente implementato. Fortunatamente, è stato corretto più di dieci anni fa.

    
risposta data 17.11.2014 - 22:16
fonte
2

Il problema è che l'hashing non fornisce nulla in termini di integrità nello scenario. Si sta facendo affidamento sulla sola crittografia per affermare l'integrità. Se ottengo una sospensione del messaggio e lo decrypt, posso modificare il messaggio, ricalcolare l'hash, crittografarlo di nuovo e trasmetterlo.

Se ritieni che la sola crittografia fornisca integrità, allora questo processo funziona, ma l'hashing non ha senso.

    
risposta data 17.11.2014 - 21:59
fonte

Leggi altre domande sui tag