Evitare le collisioni combinando MD5 e SHA-2

Sep 03 2020

Si suggerisce spesso che l'hashing di colonne di caratteri lunghi possa essere utilizzato per l'indicizzazione nei database, ma la possibilità di collisioni è un problema per gli indici Unique. Anche se so che sia MD5 che SHA-256 possono (raramente) produrre collisioni, mi chiedevo quale fosse la possibilità che entrambi si scontrassero nello stesso punto con lo stesso input? In altre parole, se produco una chiave univoca eseguendo sia MD5 che SHA-2 sullo stesso campo carattere e combinandoli per creare la chiave univoca, questa collisione è libera.

Risposte

3 MeirMaor Sep 03 2020 at 17:27

Attualmente non sono note collisioni per SHA-256 e può essere utilizzato in modo sicuro per eseguire l'hashing di testi lunghi e puoi essere certo che non ti capiterà di avere una collisione per caso.

In generale, se abbiamo due diverse funzioni hash e $f$ e $g$ e hai un po 'di input $x$ con entrambi e usa la concatenazione $f(x)||g(x)$la resistenza alle collisioni di questo sarà migliore di entrambe le funzioni individualmente e in alcuni casi molto migliore. Se le funzioni non sono correlate e sei preoccupato solo per la collisione casuale, la probabilità di una collisione sarà il prodotto della probabilità di collisione in ciascuna funzione individualmente. Tuttavia quest'ultima affermazione non reggerà di fronte a un attaccante che sfrutta la debolezza di queste funzioni. È ancora più difficile che sia individualmente, ma potrebbe non essere notevolmente più difficile trovare una collisione che trovare una collisione solo in una delle due.

Altre tecniche di combinazione delle funzioni come $f(g(x))$ sono sconsiderati e non aggiungono sicurezza, poiché qualsiasi collisione di $g$ è anche una collisione nella composizione.