El hashing de contrasenyes és un aspecte fonamental per protegir les contrasenyes i ha transformat el panorama de l’emmagatzematge de contrasenyes de text pla a hashes encriptats. Aquest article explora l’evolució del hashing de contrasenyes, des dels algoritmes primerencs com MD5 i SHA-1 fins als mètodes més segurs recomanats avui dia, concloent amb la importància d’utilitzar contrasenyes aleatòries per a cada lloc web.
Abans d’endinsar-nos en la història i evolució del hashing de contrasenyes, és important comprendre què és el hashing. Les funcions hash, els mètodes encarregats de fer el hashing, estan dissenyades per agafar qualsevol cadena de dades, o “input”, i produir una cadena de bytes de mida fixa, coneguda típicament com a “hash”. Aquest procés té diverses característiques clau que el fan especialment útil per a finalitats de seguretat.
Una característica crucial de les funcions hash és la seva sensibilitat als canvis en l’entrada. Això és conegut com l’efecte d’allau. Fins i tot una petita alteració a l’entrada —com canviar un sol caràcter en una contrasenya— produirà un hash completament diferent. Per exemple, els hashes per a les cadenes “password1” i “password2” seran completament diferents, tot i que l’única diferència entre ambdues entrades sigui l’últim caràcter. Aquesta característica és vital per mantenir la integritat de les dades, ja que fa gairebé impossible deduir l’entrada original només a partir del hash.
A més, les funcions hash són funcions unidireccionals. Això significa que estan dissenyades perquè sigui computacionalment inviable revertir-les. La sortida (el hash) no conserva detalls específics de l’entrada que permetrien reconstruir les dades originals sense un esforç computacional extraordinari. L’única manera factible de “revertir” un hash és mitjançant un mètode anomenat atac de força bruta (“brute-forcing”), on cada possible combinació de les dades originals es torna a hashear fins que es troba el hash coincident.
En els inicis de la seguretat digital, MD5 (Message-Digest Algorithm 5) i SHA-1 (Secure Hash Algorithm 1) eren àmpliament utilitzats per hashear contrasenyes. Desenvolupats a principis dels anys 90, aquests algoritmes convertien contrasenyes en text pla a valors hash de mida fixa. Tot i la seguretat inicial, vulnerabilitats com la susceptibilitat als atacs de col·lisió aviat els van fer obsolets per a aplicacions segures.
Tot i que les funcions hash estan dissenyades per ser ràpides i eficients, aquesta característica pot ser perjudicial quan es tracta de seguretat de contrasenyes, ja que facilita els atacs de força bruta. Les funcions de derivació de claus basades en contrasenya (PBKDFs) com PBKDF2, bcrypt i scrypt estan dissenyades per contrarestar aquests atacs incorporant una sal (“salt”, per defensar-se d’atacs amb taules rainbow) i utilitzant una tècnica anomenada estirament de clau (“key stretching”). L’estirament de clau fa que el procés de hashing sigui intencionadament més lent, la qual cosa pot dissuadir significativament els intents d’accés no autoritzat.
A mesura que la ciberseguretat avançava, es van fer evidents les mancances dels algoritmes primerencs com MD5 i SHA-1, i això va impulsar el desenvolupament d’algoritmes dissenyats específicament per a la seguretat de les contrasenyes, com bcrypt, scrypt i Argon2 o funcions de derivació de claus basades en contrasenya (PBKDFs).
Segons l’OWASP, els algoritmes recomanats per hashear contrasenyes són bcrypt, scrypt i Argon2. Aquests es prefereixen per la seva robusta defensa contra atacs de força bruta i els seus mecanismes incorporats de salt i estirament de clau.
bcrypt és una funció de hashing de contrasenyes derivada del xifratge Blowfish. Incorpora una sal per protegir contra atacs amb taules rainbow i utilitza un paràmetre de cost per augmentar el temps de càlcul (i, per tant, la dificultat) de generar el hash. Aquest factor de cost és ajustable, permetent ajustar l’algoritme als avenços del maquinari.
Paràmetres clau:
OWASP recomana utilitzar un factor de treball de 10 o més amb un límit de contrasenya de 72 bytes.
scrypt està dissenyat per ser intensiu tant en memòria com en temps per resistir atacs de maquinari personalitzat a gran escala. Es pot configurar per requerir una quantitat específica de memòria i també inclou una sal i un recompte d’iteracions, de manera similar a PBKDF2.
Paràmetres clau:
OWASP recomana utilitzar un paràmetre mínim de cost de CPU/memòria de (2^17), una mida de bloc mínima de 8 (1024 bytes), i un paràmetre de paral·lelització d’1.
Argon2, guanyador de la Password Hashing Competition l’any 2015, té dues variants: Argon2d i Argon2i. Argon2d està optimitzat per a entorns on la amenaça pels atacs de canal lateral és baixa, mentre que Argon2i està optimitzat per resistir aquests atacs. També incorpora característiques clau de bcrypt i scrypt.
Paràmetres clau:
OWASP recomana utilitzar Argon2id amb una configuració mínima de 19 MiB de memòria, un recompte d’iteracions de 2 i 1 grau de paral·lelisme.
Donada la naturalesa canviant de les amenaces i les contramesures de seguretat, és essencial estar actualitzat amb les pràctiques més recents de seguretat de contrasenyes. Per a recomanacions més actuals i completes, consulteu la OWASP Password Storage Cheat Sheet al lloc oficial de l’OWASP. Assegureu-vos de revisar regularment aquestes directrius per alinear-vos amb les millors pràctiques en ciberseguretat.
Tot i que utilitzar algoritmes de hashing moderns és fonamental, la manera com es creen i gestionen les contrasenyes juga també un paper crític per mantenir la seguretat. Les contrasenyes aleatòries per a cada lloc web són essencials per diversos motius:
Des de MD5 i SHA-1 fins als algoritmes moderns com bcrypt i Argon2, el hashing de contrasenyes ha patit transformacions significatives. A mesura que les ciberamenaces continuen evolucionant, adoptar algoritmes de hashing moderns i garantir l’ús de contrasenyes aleatòries i úniques per a cada lloc web són pràctiques essencials per protegir la seguretat en línia. Aquestes estratègies no només eviten la compromís de comptes individuals, sinó que també reforcen la postura general de seguretat davant d’atacs cada vegada més sofisticats.