Escriure «no desem la teva contrasenya» en una pàgina web costa exactament el mateix que escriure-hi qualsevol altra cosa: res. És una frase, no una garantia. L’escriu igual qui diu la veritat que qui no, i des del teu costat de la pantalla totes dues es veuen idèntiques.
Aquest és el problema de fons de qualsevol web que et demana una contrasenya per «analitzar-la». Encara que el servei sigui impecable —codi net, bones intencions, gent honrada—, tu no tens manera de saber-ho. El servidor és una capsa tancada. Li envies la dada més sensible que tens i confies que a l’altre costat passi el que t’han promès que passa.
I hi ha un detall que sol passar per alt: una promesa de no desar tampoc no protegeix del que no depèn de qui promet. Un servidor honest pot tenir registres que ningú no va revisar, un proxy pel mig, una còpia de seguretat automàtica, un empleat nou o, senzillament, un mal dia. La contrasenya ja ha sortit de la teva màquina. El que passi després queda fora del teu abast i, moltes vegades, del seu.
L’única resposta que no exigeix creure’s res
La solució no és prometre millor. És no necessitar la dada.
Si la teva contrasenya no surt mai del navegador, la pregunta «què en fan?» deixa de tenir sentit. No hi ha cap «ells». No hi ha cap servidor que la rebi, ni registres on aparegui, ni còpia que la contingui, ni empleat que la pugui llegir. La confiança no es gestiona millor: desapareix del problema.
Això és el que fa password.es. El comprovador analitza el que escrius al teu propi navegador, amb el teu propi processador. El text que teclejes no viatja enlloc perquè no hi ha cap lloc on viatjar.
D’on surt l’atzar
El generador té el mateix plantejament. Per fer una contrasenya aleatòria cal atzar, i hi ha dues maneres d’aconseguir-lo: demanar-lo a un servidor o demanar-lo al navegador. Demanar-lo a un servidor seria absurd: el servidor coneixeria la contrasenya abans que tu.
Així que el demanem al navegador, amb crypto.getRandomValues(). És l’API
estàndard de la plataforma web per a aleatorietat criptogràfica —la que existeix
precisament per a això, davant de Math.random(), que serveix per barrejar cartes
en un joc i no per a res que hagi de resistir algú amb interès—. Qui produeix
l’atzar és el navegador mateix, a la teva màquina. Nosaltres no hi participem: el
resultat apareix a la teva pantalla i allà es queda.
Com comprovar-ho sense fiar-te de mi
Tot això continua sent, de moment, un paràgraf escrit per la mateixa gent que va fer el lloc. És a dir: exactament allò de què et deia que desconfiessis. Així que no em creguis. Mira-t’ho.
Obre les eines de desenvolupament del navegador —F12, o Cmd+Option+I en un
Mac—, ves a la pestanya Xarxa (Network), deixa-la oberta i entra al
comprovador. Veuràs carregar-se la pàgina. Ara neteja la llista, fes clic al camp
de la contrasenya i escriu.
Això és el que veuràs, i aquí convé ser exacte en comptes de venedor:
- En fer clic al camp, es dispara una petició. No és la teva contrasenya
—encara no has escrit res—: és la biblioteca que fa l’anàlisi, un fitxer
anomenat
zxcvbn-es-es.min.jsque porta a dins les llistes de paraules, noms, patrons de teclat i contrasenyes conegudes contra les quals es compara. Es descarrega de password.es tan bon punt toques el camp, perquè arribi mentre teclejes. Surt del mateix domini, és un fitxer estàtic i és el mateix per a tothom qui obri aquesta pàgina —el lloc té diverses versions segons l’idioma, i la catalana carrega el diccionari espanyol—. - A partir d’aquí, escriguis el que escriguis, la llista es queda quieta. Una lletra, vint, esborra, torna a començar, enganxa-hi un text llarg. Zero peticions. El comptador no es mou. El diccionari ja és al teu navegador i la cerca es fa contra la memòria de la teva màquina.
Aquesta distinció és tota la diferència. No és que confiïs que la petició no porti la teva contrasenya: és que no hi ha petició. No cal interpretar res ni entendre el codi; n’hi ha prou de mirar un comptador que no puja.
L’inventari complet, amb els seus paranys
Ja que l’argument és «comprova-ho», seria estrany amagar el que hi trobaries en comprovar-ho. L’inventari honest de password.es:
No hi ha analítica. Ni Google Analytics, ni una alternativa discreta, ni un píxel. N’hi va haver un i es va retirar de totes les pàgines. No hi ha galetes. El lloc no n’escriu cap. Sí que hi ha una cosa desada al teu navegador: si prefereixes el tema clar o el fosc, a l’emmagatzematge local del teu propi equip. No s’envia mai enlloc i el pots esborrar des del mateix inspector. No hi ha registre, ni comptes, ni formularis: no hi ha on deixar una dada ni que volguessis deixar-la.
I el parany, perquè n’hi ha: la pàgina demana dues tipografies als servidors de Google en carregar-se. Això vol dir que Google veu que algú amb la teva IP ha carregat una pàgina d’aquest domini, com en tantíssims llocs. No veu el que escrius —aquella petició passa abans i no es torna a repetir—, però és una petició a un tercer, la veuràs en aquesta mateixa pestanya Xarxa i no tindria cap sentit dir-te que obris l’inspector i alhora no esmentar-la. És a la llista de coses per arreglar.
Per què t’expliquem tot això
Hauríem pogut escriure «zero peticions, privadesa total» i quedar-nos tan amples. Hauria sonat millor i hauria estat fals en els detalls: hi ha una petició de diccionari i hi ha unes tipografies. Un argument que cau quan algú el comprova no era un argument: era publicitat.
La versió precisa és menys rodona i aguanta l’escrutini: el que tu escrius no surt del teu navegador, i això es veu en trenta segons amb una eina que ja tens instal·lada.
I para atenció, perquè això se’t torna com a criteri general. La pròxima vegada que un web et demani la contrasenya per al que sigui, obre aquella pestanya i mira si apareix una petició en prémer una tecla. Si apareix, la teva contrasenya ha marxat. Tant se val el que digui l’avís de privadesa, què bonic que sigui el cadenat del formulari o què seriosa que sembli l’empresa. I si el web t’ensenya la contrasenya ja analitzada després d’un gir de rodeta, ja saps per on ha passat.
La regla de què menys es parla en seguretat no va de contrasenyes: va de verificació. Fiar-se està bé. Comprovar-ho és millor, i aquí és gratis.
Fonts: l’arquitectura del mateix password.es, verificable amb l’inspector de
qualsevol navegador — el comprovador descarrega del mateix domini, en enfocar el
camp, la biblioteca d’anàlisi amb les seves llistes (zxcvbn-es-es.min.js) i no
emet cap petició mentre s’escriu ·
crypto.getRandomValues(), l’API estàndard de la Web Crypto API per a
aleatorietat criptogràfica · el codi del lloc no conté analítica, ni píxels, ni
galetes; l’única dada emmagatzemada en local és la preferència de tema · les
tipografies se serveixen des de Google Fonts.