Por qué password.es no envía tu contraseña a ningún sitio

Publicado el por David Carrero

Escribir «no guardamos tu contraseña» en una página web cuesta exactamente lo mismo que escribir cualquier otra cosa: nada. Es una frase, no una garantía. La escribe igual quien dice la verdad que quien no, y desde tu lado de la pantalla las dos se ven idénticas.

Ese es el problema de fondo de cualquier web que te pide una contraseña para «analizarla». Aunque el servicio sea impecable —código limpio, buenas intenciones, gente honrada—, tú no tienes forma de saberlo. El servidor es una caja cerrada. Le mandas el dato más sensible que tienes y confías en que al otro lado pase lo que te han prometido que pasa.

Y hay un detalle que suele pasarse por alto: una promesa de no guardar tampoco protege de lo que no depende de quien promete. Un servidor honesto puede tener logs que nadie revisó, un proxy intermedio, un backup automático, un empleado nuevo o, sencillamente, un mal día. La contraseña ya salió de tu máquina. Lo que ocurra después está fuera de tu alcance y, muchas veces, del suyo.

La única respuesta que no exige creerse nada

La solución no es prometer mejor. Es no necesitar el dato.

Si tu contraseña nunca sale del navegador, la pregunta «¿qué hacen con ella?» deja de tener sentido. No hay un «ellos». No hay un servidor que la reciba, ni logs donde aparezca, ni backup que la contenga, ni empleado que pueda leerla. La confianza no se gestiona mejor: se elimina del problema.

Eso es lo que hace password.es. El comprobador analiza lo que escribes en tu propio navegador, con tu propio procesador. El texto que tecleas no viaja a ninguna parte porque no hay ninguna parte a la que viajar.

De dónde sale el azar

El generador tiene el mismo planteamiento. Para hacer una contraseña aleatoria hace falta azar, y hay dos formas de conseguirlo: pedírselo a un servidor o pedírselo al navegador. Pedírselo a un servidor sería absurdo: el servidor conocería la contraseña antes que tú.

Así que se lo pedimos al navegador, con crypto.getRandomValues(). Es la API estándar de la plataforma web para aleatoriedad criptográfica —la que existe precisamente para esto, frente a Math.random(), que sirve para barajar cartas en un juego y no para nada que deba resistir a alguien con interés—. Quien produce el azar es el propio navegador, en tu máquina. Nosotros no participamos: el resultado aparece en tu pantalla y ahí se queda.

Cómo comprobarlo sin fiarte de mí

Todo lo anterior sigue siendo, de momento, un párrafo escrito por la misma gente que hizo el sitio. O sea: exactamente aquello de lo que te decía que desconfiaras. Así que no me creas. Míralo.

Abre las herramientas de desarrollo de tu navegador —F12, o Cmd+Option+I en un Mac—, ve a la pestaña Red (Network), déjala abierta y entra en el comprobador. Verás cargarse la página. Ahora limpia la lista, haz clic en el campo de la contraseña y escribe.

Esto es lo que vas a ver, y aquí conviene ser exacto en lugar de vendedor:

  • Al hacer clic en el campo, se dispara una petición. No es tu contraseña —todavía no has escrito nada—: es la librería que hace el análisis, un fichero llamado zxcvbn-es-es.min.js que trae dentro las listas de palabras, nombres, patrones de teclado y contraseñas conocidas contra las que se compara. Se descarga de password.es en cuanto tocas el campo, para que llegue mientras tecleas. Sale del mismo dominio, es un fichero estático y es el mismo para todo el que abra esta página —el sitio tiene varias versiones según el idioma, y esta carga la española—.
  • A partir de ahí, escribas lo que escribas, la lista se queda quieta. Una letra, veinte, borra, vuelve a empezar, pega un texto largo. Cero peticiones. El contador no se mueve. El diccionario está ya en tu navegador y la búsqueda ocurre contra la memoria de tu máquina.

Esa distinción es toda la diferencia. No es que confíes en que la petición no lleve tu contraseña: es que no hay petición. No hace falta interpretar nada ni entender el código; basta con mirar un contador que no sube.

El inventario completo, con sus pegas

Ya que el argumento es «compruébalo», sería raro esconder lo que encontrarías al comprobarlo. El inventario honesto de password.es:

No hay analítica. Ni Google Analytics, ni una alternativa discreta, ni un píxel. Hubo uno y se retiró de todas las páginas. No hay cookies. El sitio no escribe ninguna. Sí hay una cosa guardada en tu navegador: si prefieres el tema claro u oscuro, en el almacenamiento local de tu propio equipo. Nunca se envía a ningún sitio y puedes borrarlo desde el mismo inspector. No hay registro, cuentas ni formularios: no hay dónde dejar un dato aunque quisieras dejarlo.

Y la pega, porque la hay: la página pide dos tipografías a los servidores de Google al cargar. Eso significa que Google ve que alguien con tu IP cargó una página de este dominio, como en tantísimos sitios. No ve lo que escribes —esa petición ocurre antes y no vuelve a repetirse—, pero es una petición a un tercero, la verás en esa misma pestaña Red y no tendría ningún sentido contarte que abras el inspector y a la vez no mencionarla. Está en la lista de cosas por arreglar.

Por qué contamos esto

Podríamos haber escrito «cero peticiones, privacidad total» y quedarnos tan anchos. Habría sonado mejor y habría sido falso en los detalles: hay una petición de diccionario y hay unas tipografías. Un argumento que se cae cuando alguien lo comprueba no era un argumento: era publicidad.

La versión precisa es menos redonda y aguanta el escrutinio: lo que tú escribes no sale de tu navegador, y eso se ve en treinta segundos con una herramienta que ya tienes instalada.

Y ojo, porque esto se te devuelve como criterio general. La próxima vez que una web te pida la contraseña para lo que sea, abre esa pestaña y mira si aparece una petición al pulsar una tecla. Si aparece, tu contraseña se fue. Da igual lo que diga el aviso de privacidad, lo bonito que sea el candado del formulario o lo seria que parezca la empresa. Y si la web te enseña la contraseña ya analizada después de un giro de rueda, ya sabes por dónde pasó.

La regla de la que menos se habla en seguridad no es sobre contraseñas: es sobre verificación. Fiarse está bien. Comprobarlo es mejor, y aquí es gratis.


Fuentes: la arquitectura del propio password.es, verificable con el inspector de cualquier navegador — el comprobador descarga del propio dominio, al enfocar el campo, la librería de análisis con sus listas (zxcvbn-es-es.min.js) y no emite ninguna petición mientras se escribe · crypto.getRandomValues(), la API estándar de la Web Crypto API para aleatoriedad criptográfica · el código del sitio no contiene analítica, píxeles ni cookies; el único dato almacenado en local es la preferencia de tema · las tipografías se sirven desde Google Fonts.

← Volver al blog