Alcuni giorni fa ho trovato un fatto divertente , che ha trovato una collisione di L'hash a 256 bit che utilizza la forza bruta è fisicamente impossibile nel sistema solare.
Questo mi ha fatto pensare, cosa sarebbe successo se avessimo usato un buon hash (uniforme) a 256-bit in una mappa hash. Immagino, potremmo considerare, che non ci sono mai false corrispondenze di hash delle chiavi, quindi potremmo eliminare il valore effettivo della chiave in favore dell'archiviazione del solo hash.
- Sarebbe efficiente nello spazio? (Nessun valore di chiave, solo hash)
- Sarebbe veloce? (Nessun controllo collisione, ma hash più grande del solito)
- Sarebbe al sicuro? (Statisticamente)
- Qualcuno ha fatto questo?
Sì, potrebbero esserci meno bucket di 2 ^ 256. L'obiettivo è calcolare l'hash, trovare il bucket e quindi trovare il valore effettivo all'interno del bucket utilizzando SOLO l'hash completo a 256 bit e senza il controllo del valore effettivo. Ad esempio nella mappa hash dove le chiavi sono stringhe, non può esserci conferma di uguaglianza, quindi nessun vero confronto tra i byte e nessuna memoria di chiave potenzialmente grande.
Sembra esserci molto disprezzo verso le 2 ^ 256 combinazioni. Per darti la scala, il numero stimato di atomi nell'universo conosciuto è compreso tra 10 ^ 78 e 10 ^ 82, circa 2 ^ 260 e 2 ^ 270. L'umanità probabilmente non produrrà mai tutti i possibili numeri a 256 bit.
Sì, i computer quantistici saranno in grado di trovare collisioni in pochi secondi. Ma la futura sicurezza crittografica non è il punto, il punto è la semplificazione delle collezioni in-memory, std-lib grade per uso interno nelle applicazioni.