EDIT2: questa discussione è stata ridotta a "le collisioni sono effettivamente più difficili da creare quando si aggiunge un vincolo di lunghezza?" che è più rilevante per lo scambio Crypto. Creerò una domanda lì e collegherò quando esiste. Grazie a tutti coloro che hanno partecipato alla discussione
EDIT: Il termine "Collision attack" in Wikipedia sembra parlare solo di trovare una collisione casuale, intendevo dire "Preimage attack ".
Mi sembrerebbe una buona idea, perché eviterebbe tutti gli attacchi di collisione che richiedono che l'attaccante modifichi la lunghezza dei dati. L'attaccante dovrebbe trovare una collisione con la stessa lunghezza esatta, che è ovviamente molto più difficile di trovare una collisione generale.
Gli attacchi di collisione di solito richiedono che l'attaccante modifichi la lunghezza dei dati (aggiungendo altri blocchi ai dati esistenti o qualcosa del genere), vero?
L'unico svantaggio che vedo è che richiederà che i risultati dell'hash siano più lunghi (il modo in cui lo vedo solo per 2-4 byte è "La lunghezza del modulo dati 2 ^ 16-2 ^ 32" dovrebbe essere abbastanza) quindi non di molto.
Questo ovviamente non deve essere parte della funzione di hash stessa, potrebbe essere solo una raccomandazione di sicurezza generale: "Verificare la lunghezza prevista dei dati, non solo che corrisponda all'hash calcolato, per evitare molti moduli di attacchi di collisione ".
Anche se non ho mai sentito dire o menzionato prima questa raccomandazione, anche se il modo in cui la vedo, ha molto senso.
Quindi, in generale, sto chiedendo qui: perché non è una buona idea? Dovrebbe essere codificato nelle funzioni di hash, quindi viene applicato automaticamente da chiunque usi quelle funzioni, o dovrebbe essere una raccomandazione di sicurezza generale che spetta all'utente della funzione hash implementare da solo, separatamente dalla funzione hash?
O forse mi manca completamente qualcosa che renda quest'idea ridicola?