Le funzioni hash sono una particolare tipologia di funzioni crittografiche.
Le funzioni hash sono funzioni che prendono in input un messaggio di dimensione qualsiasi e danno in output un messaggio di lunghezza fissa .
Esse sono fortemente dipendenti dai Bit del messaggio in ingresso.
Le funzioni hash sono molto veloci ed efficienti. Essendo cosi veloci posso eseguirne molte.
Ne esistono molte di funzioni hash : SHA1,SHA256 , MD5, RIPEMD160, …
Attualmente si utilizza SHA2, SHA1 è stato attaccato nel 2017.
<aside> ⚠️ Nessuno è in grado di trovare due $X,Y$ tali che $H(X)=H(Y)$
</aside>
Attenzione , le Collisioni Esistono e sono molte, perchè il numero di output è prestabilito ma abbiamo infiniti input.
Però si dice collision-free in quanto non siamo capaci di trovarle. Esistono degli algoritmi che mi permettono di trovarle , però non sono in grado di eseguirli.
Detto ciò possiamo assumere che :
$$ H(x)=H(y) \implies x =y $$
Per cosa usiamo le Funzioni Hash ??
Garantire integrità dei dati
Nascondere informazioni (File Password)
Salvo l’hash , e i controlli li faccio su di essi (Salvo spazio)