La recuperación de contraseñas en línea ha consistido normalmente en entregar tu archivo a un servidor remoto y confiar en él. La recuperación en el navegador le da la vuelta a eso: el archivo nunca sale de tu dispositivo, y el trabajo criptográfico ocurre localmente mediante WebAssembly. Esta publicación explica cómo es posible y por qué constituye una mejora de privacidad significativa.

El modelo antiguo: subir y esperar

Las herramientas clásicas de recuperación en línea te piden subir el archivo a un servidor que hace el trabajo. El problema es que un ZIP al que has perdido acceso suele ser exactamente el tipo de archivo que menos te gustaría entregar, como registros financieros, copias de seguridad o documentos personales.

Una vez subido, ese archivo vive en el disco de otra persona. Puede quedar registrado, en caché o retenido, y no tienes forma de verificar qué ocurre realmente con él. Incluso cuando el servicio tiene buenas intenciones, subir datos sensibles simplemente amplía la cantidad de lugares desde los que pueden filtrarse.

El modelo local primero

Los navegadores modernos pueden hacer todo lo que la recuperación necesita sin un servidor de por medio:

  • La File API lee los bytes del archivo directamente desde tu disco a la memoria de la página cuando seleccionas el archivo. Esos bytes permanecen en la pestaña del navegador.
  • WebAssembly ejecuta la criptografía pesada, incluidos PBKDF2, HMAC y CRC, lo bastante rápido para probar contraseñas localmente. Para la derivación de claves AES, la herramienta también mide la Web Crypto integrada del navegador y la usa en su lugar cuando es más rápida en tu dispositivo.
  • Un grupo de Web Workers, uno por núcleo de CPU, ejecuta la búsqueda en hilos en segundo plano, de modo que la interfaz sigue respondiendo. Las candidatas de máscara y de fuerza bruta se generan dentro de los workers; las de diccionario se las entrega la página. Ninguna se envía por la red.

Nada en esa canalización requiere enviar tu archivo a ningún sitio.

Por qué WebAssembly importa aquí

Verificar una contraseña AES está dominado por PBKDF2-HMAC-SHA1 con 1000 iteraciones, calculado una vez por intento. Es un bucle numérico apretado, exactamente el tipo de trabajo que el JavaScript simple hace con relativa lentitud y que el WebAssembly compilado hace rápidamente. Ejecutar la ruta crítica en WebAssembly, o en la Web Crypto nativa del navegador, en lugar de en JavaScript simple es lo que hace que la recuperación local sea práctica en lugar de dolorosamente lenta. No cambia las matemáticas subyacentes, pero permite que tu propio hardware pruebe muchas más candidatas por segundo.

Qué ocurre realmente, paso a paso

  1. Eliges un archivo. El navegador lo lee localmente, y el archivo no se envía a ningún sitio.
  2. La página analiza la estructura del archivo para encontrar sus entradas, detectar el esquema de cifrado y elegir la entrada que probarán los workers, con preferencia por la entrada cifrada más pequeña que sea lo bastante grande para confirmar una contraseña de forma decisiva (entre las entradas de hasta 256 MB comprimidos).
  3. Las candidatas de máscara y de fuerza bruta se generan dentro de los workers; la lista de palabras (la tuya y, si la activas, la lista integrada de contraseñas comunes) se la pasa la página, y los workers añaden las variaciones que hayas activado.
  4. Cada candidata se verifica primero con el filtro económico, y luego con una comprobación de confirmación para cualquiera que supere el filtro.
  5. Cuando una contraseña se confirma, se te muestra, solo en tu pantalla.

En ningún momento se transmite el archivo, una candidata o la contraseña final. El paso de confirmación recalcula el HMAC en AES, y descifra y comprueba el CRC-32 en una entrada ZipCrypto de al menos 4 bytes guardada sin compresión (Store) o comprimida con Deflate, así que en un archivo AES una contraseña incorrecta prácticamente nunca se reporta, y en casi todos los ZipCrypto una contraseña reportada ha superado una comprobación que una contraseña incorrecta supera más o menos una vez cada 2^40 candidatas: muy rara vez, pero no nunca en una búsqueda muy larga. Cuando solo puede probar una entrada ZipCrypto más corta, el resultado indica que la contraseña solo superó una comprobación rápida. Cómo funciona explica la rara excepción y ofrece el panorama completo.

Por qué el procesamiento local es de verdad más privado

  • El archivo nunca sale de tu dispositivo, así que no hay ninguna subida que interceptar, almacenar o filtrar.
  • Las contraseñas bajo prueba no se registran ni se transmiten; cada candidata se prueba en un worker y después se descarta.
  • No hay registros del lado del servidor de los nombres o el contenido de tus archivos, porque no hay ningún servidor que los maneje.

Ese es el núcleo de nuestro enfoque de seguridad: la forma más privada de manejar un archivo sensible es no moverlo en absoluto.

Qué conserva la herramienta y por cuánto tiempo

Como la recuperación se ejecuta dentro de la página, su huella es pequeña. Los bytes del archivo viven en la pestaña mientras está abierta, cada candidata se prueba en un worker y después se descarta, y el progreso y las estimaciones de tiempo salen de tu propia tasa de pruebas. Dos cosas pueden durar más que la pestaña, ambas solo en tu dispositivo. Un ZIP que sueltas o eliges en la página de inicio espera en el almacenamiento del navegador hasta que la página de recuperación se abre y lo borra, así que solo sobrevive a la pestaña si la página de recuperación no llega a abrirse. Y una búsqueda por máscara o por fuerza bruta en curso guarda su configuración (incluidos el nombre y el tamaño del archivo y cualquier máscara que hayas escrito) y su progreso, para que puedas reanudarla después de recargar la página o de cerrar la pestaña; ese registro se borra cuando la búsqueda termina, cuando pulsas Detener o cuando eliges Empezar de cero. Ninguna de las dos cosas se envía nunca a ningún sitio; la política de privacidad detalla qué contienen y cómo borrarlas. No hay cuenta ni historial de tus recuperaciones en ningún servidor.

Los límites honestos

Local primero es una victoria de privacidad, no una varita mágica:

  • La velocidad depende de tu propio hardware. Un equipo portátil prueba menos candidatas AES por segundo de lo que lo haría una máquina grande, así que una contraseña fuerte permanece fuera de alcance, que es justamente el objetivo del cifrado.
  • La recuperación sigue dependiendo de estrechar la búsqueda. El procesamiento local cambia dónde ocurre el trabajo, no las matemáticas de la adivinación.

Nada de eso cambia la recomendación, porque que una contraseña fuerte sea difícil de adivinar es precisamente lo que protege tus datos. Cuando quieras intentarlo, todo se ejecuta en la página de recuperación.

Verifica tú mismo la afirmación de privacidad

No tienes que fiarte de la palabra de nadie:

  • Abre las herramientas de desarrollo de tu navegador, cambia a la pestaña Red (Network), elige un archivo e inicia una recuperación corta. Verás que la página descarga sus propios scripts, incluidos el worker y la comprobación de WebAssembly, y nada que transporte tu archivo. La única petición que envía datos es un POST a /api/error, y solo si el propio código del sitio sufre un error; lleva el mensaje de error y la traza, la ruta de la página y el user-agent de tu navegador (la sección 4 de la política de privacidad enumera todos los campos), nunca datos del archivo ni contraseñas.
  • Como segunda comprobación, deja abierta la pestaña Red mientras se ejecuta esa búsqueda: no verás ninguna petición a otro sitio ni ninguna subida de tu archivo. Las peticiones que sí veas van a este sitio, como el script que carga cada worker, y ninguna lleva tu archivo ni una contraseña.

Como siempre, ejecuta la recuperación solo en archivos que te pertenezcan o que estés autorizado a abrir.

En resumen

  • La recuperación en el navegador lee tu archivo localmente con la File API y nunca lo sube.
  • WebAssembly hace que la lenta derivación de clave de AES sea lo bastante rápida para ejecutarse en tu propio dispositivo.
  • Los Web Workers mantienen la interfaz receptiva, y ninguna candidata viaja por la red.
  • Puedes comprobar por ti mismo que tu archivo nunca sale de tu equipo.