Troncamento dell'output di SHA256 a 128 bit

19

Supponiamo di dover / preferire l'output di hash a 128 bit, ad esempio per generare una chiave di crittografia a 128 bit o, in altre applicazioni (ad esempio verifica dell'integrità dei file), per consumare meno spazio di archiviazione.

Non conosco alcuna funzione di hash a 128 bit nuova / standard / non interrotta, quindi sembra che dobbiamo usare SHA256.

È accettabile il troncamento dell'uscita SHA256 a 128 bit? Un hash così troncato ha una sicurezza uguale a un hash a 128 bit? Intendo un hash a 128 bit che non ha vulnerabilità note; sicuramente non MD5!

Ho un'idea di come ottenere questo risultato:

MD5(Truncate128(SHA256_hash))

Non so se questo avrà alcun beneficio / detrimento per la sicurezza.

    
posta H M 24.04.2013 - 22:24
fonte

2 risposte

16

Sebbene SHA-256 offra nominalmente un output a 256-bit, non è noto alcun punto debole quando l'output viene troncato a 128 bit, tranne, ovviamente, punti deboli inerenti alla lunghezza di output più corta; per esempio. la resistenza di collisione scende dall'inattaccabile 2 128 al possibile (ma difficile) 2 64 .

Questa non è una proprietà generica delle funzioni hash (*), ma è piuttosto "ovvia" dal modo in cui è definito SHA-256. In particolare, quando NIST ha definito SHA-224, una funzione di hash con un output a 224 bit, hanno semplicemente preso SHA-256, con un vettore di inizializzazione distinto e un output troncato.

(*) Si può dimostrare che una determinata funzione di hash sicura, se troncata, non può essere terribilmente male, ma può comunque essere leggermente peggiore del previsto. Per SHA-256, il troncamento sembra sicuro.

    
risposta data 24.04.2013 - 22:31
fonte
2

Come Tom ha appena detto, puoi troncare l'output SHA-256 a 128 bit per l'integrità, perché 128 bit sono sufficienti per evitare ragionevolmente collisioni.

Tuttavia, le funzioni di hash come SHA-256 non sono adatte per la generazione di chiavi o l'autenticità dei file (solo integrità).

Se vuoi generare una chiave, usa qualcosa come PKBDF2 o scrypt. Se si desidera autenticare un file, utilizzare le funzioni HMAC (che possono contare su SHA-256).

Fonte: Introduzione alla crittografia su Coursera.

    
risposta data 24.04.2013 - 22:45
fonte

Leggi altre domande sui tag