Quan a algú li filtren la contrasenya, s’ho imagina com un accident puntual: un servei va tenir un mal dia, va sortir als diaris, la vas canviar i s’ha acabat. No s’ha acabat. El dia de la filtració no és el final de res: és el primer dia d’una cadena de muntatge que durarà anys, i en la qual tu no hi apareixeràs mai pel teu nom. Val la pena explicar-la sencera, perquè gairebé ningú no la veu.
Pas u: algú s’emporta la base de dades
El començament no té res d’espectacular. Algú troba una injecció SQL, una còpia de seguretat oberta, un tauler d’administració amb les credencials per defecte. I s’emporta una taula.
Aquesta taula, amb sort, conté el teu correu i un hash de la teva contrasenya. Amb menys sort, conté el teu correu i la teva contrasenya. En text. Tal com la vas escriure.
2009 trenta-dos milions de contrasenyes en text pla
El desembre del 2009, una empresa de ginys per a xarxes socials anomenada RockYou va patir una injecció SQL. Se’n van endur uns 32 milions de contrasenyes, i no hi havia cap hash per trencar: les desava en text pla.
Va ser un desastre per a RockYou i un regal per a tota la resta. Per primera vegada existia un corpus enorme de contrasenyes reals, escrites per gent que no sabia que algú les llegiria. No pas un estudi: la cosa mateixa.
El fitxer es va convertir en rockyou.txt, que continua sent el diccionari de
referència amb què es proven atacs. El seu valor no és que contingui la teva
contrasenya: és que conté com escriu contrasenyes la gent. Un nom i un any, la
paraula i el 123, l’! al final. RockYou no va filtrar 32 milions de secrets. Va
filtrar el patró. I el patró no caduca.
Pas dos: es cracqueja el que es pugui, sense cap pressa
Aquí és on falla la intuïció. Quan algú intenta endevinar la teva contrasenya a la pantalla d’accés d’un servei, el servei l’atura: tres intents, un CAPTCHA, un bloqueig. Contra un servidor, endevinar és lent i sorollós.
Contra un fitxer de hashes que ja tens al disc no hi ha servidor. No hi ha ningú a l’altra banda que digui que no. Es prova en local, amb GPU, sense límit d’intents i amb tot el temps del món. Si el servei va fer malament el hash —algorisme ràpid, sense sal— la diferència amb el text pla és de comoditat, no de seguretat.
I no es prova a l’atzar: primer rockyou.txt, i després regles que en deriven.
Canvia la a per @. Afegeix un any al final. Cada truc que a tu et va semblar
enginyós fa més d’una dècada que està escrit en un fitxer de configuració.
D’aquí en surt una part del bolcat convertida en contrasenyes llegibles. La resta —el que és llarg, el que és aleatori, el que no és a cap diccionari— continua sent soroll. És la línia que traça el comprovador: no t’esbronca, et diu de quin costat caus.
Pas tres: es creua, i aquí és on vals diners
Un bolcat solt val poc. El que val és l’agregació: agafar deu filtracions de
llocs diferents, creuar-les pel correu i quedar-se amb les parelles
correu:contrasenya ja en clar. Al resultat se’n diu combolist, i ja no és la
base de dades de ningú. És una llista de persones.
2013 l’inventari surt a la llum
El desembre del 2013, Troy Hunt va posar en marxa Have I Been Pwned: una base de dades pública de correus apareguts en filtracions, perquè qualsevol pogués preguntar si hi era. La idea de fons és senzilla i incòmoda: si els atacants ja tenen l’inventari, negar-lo a les víctimes no protegeix ningú. Anys després va arribar Pwned Passwords, que fa el mateix amb les contrasenyes i permet consultar-les sense enviar-les: s’envia un fragment del hash i el servidor torna un lot de candidats, sense saber quin era el teu.
2017 el NIST deixa de demanar símbols i comença a demanar llistes
Quan el NIST va publicar el SP 800-63B, va llençar per la borda gairebé tota l’ortodòxia dels formularis i hi va posar al lloc un requisit que pocs esperaven: en fixar una contrasenya, el sistema l’ha de comparar amb una llista de valors compromesos coneguts i rebutjar-la si hi apareix.
És un canvi de teoria, no de detall. La pregunta ja no és si la teva contrasenya sembla forta, sinó si ja està publicada. Per això el generador fa l’única cosa raonable: treure-la d’un lloc on no ha estat mai.
2019 la filtració que ja era un refregit d’altres
El gener del 2019 va circular un paquet que es va fer famós com a Collection #1. Hunt el va analitzar i va explicar què hi havia dins: uns 773 milions d’adreces de correu úniques i uns 21 milions de contrasenyes úniques en text pla, agregades de milers de fonts.
L’important no va ser la mida. Va ser d’on sortia: en bona part era el refregit de filtracions anteriors, ja cracquejades i posades en un format còmode —tot i que Hunt també hi va trobar material que fins llavors no tenia fitxat. El producte no era la intrusió. Era l’inventari. I un inventari així només té un ús.
Credential stuffing: no t’ataquen a tu
A tu no t’ataca ningú. Aquesta és la part que costa d’interioritzar.
Ningú no s’asseu a pensar en el teu compte. Algú agafa una combolist de centenars de milions de línies, la fica en una eina que les prova contra el formulari d’accés d’un banc o d’un correu, reparteix els intents entre moltes adreces IP per no disparar els bloquejos, i espera. La immensa majoria fallen. Tant se val: costen gairebé res.
Això és el credential stuffing, i no és endevinar. És comprovar. La contrasenya ja la tenen; l’única cosa que esbrinen és on més la vas posar.
La teva contrasenya d’aquell fòrum no era important. El fòrum tampoc. L’important és que la mateixa cadena de caràcters obre el teu correu, i el teu correu obre tota la resta via «he oblidat la contrasenya». El pecat original no és que fos feble: és que era la mateixa. Una contrasenya de trenta caràcters, aleatòria i perfecta, reutilitzada en dos llocs, és tan bona com el pitjor dels dos. I tu no controles com fa el hash el pitjor dels dos.
Què se’n dedueix, de tot això
- Canviar la contrasenya filtrada no n’hi ha prou si la vas repetir. L’urgent no és el lloc que va sortir a les notícies. Són els altres.
- Una contrasenya per lloc, i que tant se te’n doni oblidar-la. Si pots recordar totes les teves contrasenyes, en tens molt poques o són molt dolentes.
- El segon factor trenca la cadena. El credential stuffing prova
correu:contrasenya. Si això no basta per entrar, l’inventari deixa de valer.
La teva contrasenya filtrada no és a les mans d’un enemic. És en una fila d’un fitxer, entre altres centenars de milions, esperant que a algú li surti a compte provar-la en un lloc més. I l’única cosa que decideix si això funciona la vas decidir tu fa anys, quan vas escriure la mateixa paraula per segona vegada.
Fonts: la filtració de RockYou (desembre del 2009) i l’ús posterior de
rockyou.txt com a diccionari d’atac · Have I Been Pwned i Pwned Passwords, de
Troy Hunt · NIST SP 800-63B, sobre la comprovació de contrasenyes contra llistes de
valors compromesos · l’anàlisi de Troy Hunt sobre Collection #1 (gener del 2019) i
les xifres que va publicar · definició de credential stuffing d’OWASP.