Potresti mescolare un attacco di collisione con un attacco di seconda preimage. La differenza tra i due è in ciò che controlla l'attaccante: in un attacco di collisione, l'attaccante deve trovare due stringhe che generano lo stesso hash, e l'attaccante può scegliere entrambe le stringhe . In un attacco di second preimage, l'attaccante deve trovare una stringa che generi lo stesso hash di una determinata stringa che l'utente malintenzionato non può controllare . Vedi le risposte a questa domanda per ulteriori informazioni sulla differenza.
Hai chiesto "Che differenza fa se un attaccante trova qualcosa che produce lo stesso hash di quello nella firma?" - qui, stai descrivendo un attacco di seconda preimage. Se ciò fosse possibile, un utente malintenzionato potrebbe utilizzarlo per generare un certificato contraffatto con lo stesso hash del certificato valido, quindi copiare semplicemente la firma dal certificato valido a quello contraffatto; poiché i loro hash corrispondono, anche la firma corrisponderà. Ciò comporterebbe un completo fallimento della sicurezza del certificato. Ma (almeno per quanto ne so) non c'è traccia di un pratico attacco di seconda preimage contro SHA-1 (o anche MD5), quindi questo è piuttosto ipotetico.
Il rischio di attacchi di collisione (che sono possibili contro MD5 e SHA-1) è meno diretto. Il problema qui non è con il tuo attuale certificato del server; si potrebbe effettivamente utilizzare MD5 per questo, e le connessioni protette con esso sarebbero completamente sicure. Il problema è che un utente malintenzionato può generare due certificati con hash corrispondenti, uno dei quali sarà OK per un'autorità di certificazione e uno dei quali è completamente non valido. Invia l'OK a una CA attendibile, la firma, quindi trasferisce la firma (valida) della CA al certificato non valido, quindi utilizza il certificato non valido (con firma valida) per tutto ciò che desidera. Compreso semplicemente la sostituzione del certificato (valido) dal tuo server.
Questo è non ipotetico. Nel 2008, un gruppo di ricercatori del Chaos Computer Club ha utilizzato questo processo per creare un certificato CA intermedio con una firma CA valida (MD5); poiché il certificato forged era un certificato CA stesso, potevano quindi utilizzarlo per firmare qualsiasi cosa volessero (anche se l'avevano intenzionalmente creata prima della scadenza, quindi non poteva essere effettivamente utilizzata). Vedi questo articolo CNET .
Per evitare di essere ingannati da certificati falsi come quello, i clienti devono rifiutare i certificati firmati MD5 (e probabilmente presto firmati da SHA-1). E che è il motivo per cui dovresti firmare i tuoi certificati con SHA256 - non è che i certificati MD5 e SHA-1 siano insicuri, è che i client non possono dire che sono sicuri e quindi non hanno altra scelta che rifiutarli. Vedi la mia risposta a una domanda simile qui per ulteriori dettagli.