Hash
Com a funció criptogràfica, el hash (o funció resum) transforma qualsevol dada d'entrada en una cadena de caràcters de longitud fixa anomenada valor hash, resum o empremta digital. És un procés unidireccional dissenyat principalment per a verificar la integritat de les dades.
Irreversibilitat, empremta digital
La característica més important del hashing és la seva irreversibilitat (unidireccionalitat). És computacionalment impossible o inviable revertir el valor hash per trobar la dada original.
Característiques d'un bon Hash criptogràfic
Un bon algoritme de hash dissenyat per a la seguretat ha de complir les següents propietats:
-
Irreversibilitat (Resistència a la Preimatge): Ha de ser impossible calcular la dada original a partir del valor hash.
-
Determinisme: La mateixa entrada sempre ha de generar la mateixa sortida (el mateix valor hash).
-
Baixa Probabilitat de Col·lisió (Resistència a la Segona Preimatge): Ha de ser extremadament difícil trobar dues entrades diferents que produeixin el mateix valor hash.
-
Efecte Allau: Un canvi minúscul a la dada d'entrada (p. ex., canviar una lletra en una frase) ha de produir un hash completament diferent.
-
Longitud Fixa: La sortida (el valor hash) ha de tenir sempre la mateixa longitud, independentment de la mida de l'entrada.
Això fa que el hashing sigui perfecte per guardar contrasenyes: el sistema emmagatzema el hash i, quan l'usuari intenta iniciar sessió, crea un nou hash i la compara amb l'emmagatzemada. Si són idèntiques, és correcte; la contrasenya original mai s'exposa.
Exemple: "Funció Hash". Suma dels valors de les lletres
Imaginem que creem la nostra pròpia "Funció Hash Simètriques i Asimètriques (FHSiA)" per a una frase.
El nostre algoritme de hash tindrà aquestes regles:
-
Assignació de Valors: Assignem un valor numèric a cada lletra (A=1, B=2, C=3... Z=26).
-
Procés de Hashing (Suma): Sumem els valors numèrics de totes les lletres.
-
Ajust de Longitud Fixa (Mòdul): Apliquem el mòdul 100 per mantenir la sortida simple i dins d'un rang fix (de 0 a 99).
Aplicació "Fucnió hash"
1. Entrada (Text Clar):
"EL GAT"
2. Conversió a Valors (Assaig de Hash):
| Lletra | Valor |
| E | 5 |
| L | 12 |
| G | 7 |
| A | 1 |
| T | 20 |
3. Procés de Hash (Suma):
5 + 12 + 7 + 1 + 20 = 45
4. Ajust de Longitud Fixa (Mòdul 100):
45 mod 100 = 45
Sortida (Valor Hash): 45
Per què imita un Hash?
Aquest procés, tot i ser simple, il·lustra les propietats clau d'un hash criptogràfic:
1. Irreversibilitat (Unidireccionalitat)
Si et dono el hash 45, és impossible saber si la frase era "EL GAT" o "TALL" (20+1+12+12 = 45) o "DAK" (4+1+11+29 = 45, si permetéssim caràcters addicionals). La funció de suma ha perdut informació sobre l'ordre i el nombre exacte de lletres, fent que la reconstrucció del text original sigui inviable.
2. Longitud fixa
Independentment de si l'entrada és "EL GAT" (5 lletres) o "L'HIPOPÒTAM ÉS MOLT GROS" (moltes més), el nostre resultat final (el hash) sempre és un número d'entre 0 i 99.
3. Efecte allau parcial (Sensibilitat)
Si canviem només una lletra, el hash canvia:
-
Entrada 1: "EL GAT" Hash 45
-
Entrada 2: "EL CAT" (G=7 passa a C=3) Suma: Hash 41
Un canvi petit en l'entrada ("G" per "C") provoca un canvi en la sortida (45 per 41). Un hash real canviaria totalment la sortida, però la nostra FHSiA il·lustra el concepte de sensibilitat.
Algoritmes de Hash
Els algoritmes s'han anat millorant al llarg del temps, especialment per resistir atacs basats en taules arc de Sant Martí (Rainbow Tables).
| Algoritme | Estat i Ús Típic | Característica Principal |
| MD5 | No segur (desaconsellat) | Molt ràpid, però té col·lisions conegudes. |
| SHA-256 | Segur (molt utilitzat) | Part de la família SHA-2; base de la seguretat a Blockchain (Bitcoin). |
| SHA-3 (Keccak) | Segur | Últim estàndard desenvolupat. |
| Bcrypt | Segur (recomanat per contrasenyes) | Dissenyat específicament per a hashing de contrasenyes, és intencionalment lent per dificultar els atacs de força bruta. |
| Argon2 | Segur (més nou i robust) | Guanyador del concurs Password Hashing Competition (PHC); considerat el més segur per a contrasenyes actualment. |
* Atac rainbow tables
Una taula Arc de Sant Martí (Rainbow Table) és una tècnica d'atac utilitzada per crackejar contrasenyes (o hashes de contrasenyes) de forma més ràpida que amb la força bruta.
La definició breu és:
Un atac basat en Rainbow Tables és un mètode que utilitza taules precalculades de parells hash-contrasenya per revertir eficientment un valor hash a la seva possible contrasenya original, evitant així haver de recalcular milions de hashes en temps real.
Com funciona?
-
Creació de la Taula: Abans de l'atac, l'atacant calcula milers de milions de hashes a partir de contrasenyes comunes o probables i n'emmagatzema només el punt de partida i el punt final en una gran taula.
-
L'Atac: Quan l'atacant obté una llista de hashes robats, no intenta desxifrar-los amb la força bruta tradicional (provant totes les contrasenyes). En lloc d'això, cerca el hash robat directament a la taula.
-
Resultat: Si troba una coincidència, la taula li proporciona la cadena de text clar que va generar aquell hash o una cadena que pot generar el mateix hash.
ATENCIÓ: Aquest atac és el motiu pel qual els sistemes moderns de contrasenyes utilitzen el salt (una cadena aleatòria afegida a la contrasenya abans de calcular el hash) i algoritmes lents com Bcrypt o Argon2, ja que invaliden l'ús de taules precalculades.