Perché la proprietà di diffusione è importante nelle funzioni di hash

4

L'ho sempre sentito

A change in just one bit of the original text shall change half of the bits of its hash.

Penso che questa proprietà sia chiamata proprietà di diffusione .

Tuttavia, mi chiedo perché la proprietà di diffusione sia così importante nelle funzioni di hashing.

Capisco che per gli algoritmi di crittografia questa sia una proprietà necessaria. Senza di esso, potrebbe essere eseguito un attacco basato su statistiche linguistiche.

Le funzioni di hashing tuttavia sono a senso unico, il che significa che non è possibile ottenere il testo originale dall'hash. Perché le funzioni hash devono mostrare la proprietà di diffusione allora?

Aggiornamento 1: Dato che potresti usare le funzioni di hashing per nascondere informazioni o per assicurare l'integrità di un documento, penso che sia una buona idea separare entrambi gli aspetti.

Se lo stiamo usando per nascondere informazioni come password questa proprietà è necessaria. Guarda la risposta di Lucas Kauffman .

Ma se si utilizzano le funzioni hash per garantire l'integrità di un documento. È ancora una proprietà necessaria allora?

    
posta eversor 05.05.2012 - 20:30
fonte

2 risposte

4

È per lo stesso motivo, suggerisci di avere una tabella con hash, e scopri che c'è un hash (A) che è quasi lo stesso di un hash che stai cercando di infrangere (B). Se c'è casualità allora non hai nulla, altrimenti sai che l'hash che stai cercando di infrangere è simile al semplice testo dell'hash A. Quindi questo renderebbe un attacco bruteforce più facile dal momento che sai che deve essere un hash di qualcosa vicino il testo in chiaro di A.

Aggiungi a questo che potresti avere 10 hash che sembrano simili a B, puoi iniziare a trovare un pattern nella loro forma in chiaro e ridurre ancora di più la tua forza bruta.

    
risposta data 05.05.2012 - 22:15
fonte
4

Le funzioni di hash vengono utilizzate in molti posti e alcune richiedono più della collisione e della resistenza di preimage.

Alcuni esempi:

  • Come funzione pseudo-casuale nella derivazione della chiave. Ovviamente la chiave dovrebbe essere il più casuale possibile.
  • Come imbottitura in RSA. Le prove di sicurezza si basano sul modello oracle casuale. Quindi vogliamo che le nostre funzioni di hash concrete si avvicinino il più possibile a un oracolo casuale
  • Gli hash troncati dovrebbero avere le stesse proprietà di sicurezza di un hash completo (a parte le debolezze intrinseche di un output hash più corto).
  • Le funzioni di hash possono essere utilizzate in una modalità CTR come la costruzione per creare un codice di flusso. Ovviamente ciò richiede un output non distorto, dall'aspetto casuale
  • Le funzioni hash possono essere utilizzate come PRNG, requisiti simili a quelli per le cifre di flusso
risposta data 05.05.2012 - 23:14
fonte

Leggi altre domande sui tag