Le funzioni hash possono avere collisioni. È quasi banale calcolare i dati con un hash MD5 corrispondente all'originale. Considerare i dati critici che non devono essere alterati durante il trasporto e assumere che solo i dati e non il checksum possono essere modificati. Supponi anche che chiunque possa accedere ai dati.
Quale di questi sarebbe un buon modo per creare un checksum dei dati (o se c'è un modo migliore, sarebbe anche bello)?
- Utilizzo di più funzioni hash sui dati e concatenazione di tali dati. Sicuramente avere più hash renderebbe difficile per un utente malintenzionato generare dati che causano una collisione in tutte le funzioni di hash?
- Usa HMAC con SHA512 (mitigazione dell'attacco della lunghezza della chiave) e condividi il segreto insieme all'hash generato. Questo segreto non cambierà per questo file, quindi il segreto sarà lo stesso per tutti quelli che lo ottengono.
Grazie