Si roban la base de datos
Se llevan bloques cifrados y verificadores SRP. Ni contraseñas, ni claves, ni títulos, ni direcciones. Para abrir algo harían falta 600.000 iteraciones de PBKDF2 por cada intento de contraseña maestra.
Conocimiento cero · Autoalojado
Vaul es una bóveda personal que se cifra en tu dispositivo y se guarda en tu propio servidor. La contraseña maestra no viaja por la red ni una sola vez, ni siquiera al crear la cuenta. Lo que hay en la base de datos son bloques ilegibles.
El registro está cerrado: para entrar hace falta una cuenta o una invitación.
Cómo funciona
El navegador deriva una clave maestra con PBKDF2-SHA256 y 600.000 iteraciones. Ese cálculo es deliberadamente lento: es la única barrera si alguien se llevara la base de datos.
El acceso usa SRP-6a con un grupo de 2048 bits. El servidor comprueba que conoces la contraseña sin recibirla, y de paso tú compruebas que el servidor es el auténtico. Si alguno de los dos falla, no hay sesión.
Cada entrada se cifra con AES-256-GCM y un vector de inicialización distinto antes de subir. La base de datos ni siquiera tiene columnas para el título o la dirección: no existen, porque no se pueden indexar sin romper el modelo.
Seguridad
Un gestor de contraseñas se juzga por lo que hace cuando algo sale mal. Esto es lo que pasa en cada caso.
Se llevan bloques cifrados y verificadores SRP. Ni contraseñas, ni claves, ni títulos, ni direcciones. Para abrir algo harían falta 600.000 iteraciones de PBKDF2 por cada intento de contraseña maestra.
Sólo se vuelve a envolver una clave de 32 bytes. Las entradas no se tocan, porque están cifradas con una clave de bóveda independiente. Cambiarla es instantáneo aunque tengas mil credenciales.
Se pierde la bóveda. No hay recuperación ni puerta trasera, y eso es exactamente lo que hace que el modelo funcione: si alguien pudiera devolverte el acceso, también podría dárselo a otro.
Puedes ver cuentas, suspenderlas, borrarlas e invitar a gente. Lo que no puedes —ni tú ni nadie— es leer la bóveda de otro: el servidor no tiene la clave.
Se bloquea sola por inactividad y olvida la clave; el token vive en memoria y nunca en disco, así que recargar obliga a desbloquear. El portapapeles se limpia solo después de copiar.
La búsqueda ocurre en tu navegador, sobre lo ya descifrado. El servidor no puede indexar lo que no entiende, así que tampoco puede saber qué buscaste.
Funciones
Rechazo de módulo para que todos los caracteres sean igual de probables, y medidor de entropía en bits.
TOTP según RFC 6238, calculado en el navegador y comprobado contra los vectores oficiales del estándar.
Puntuación sobre 100 con detección de contraseñas débiles y repetidas, calculada en el cliente.
Además de credenciales: notas seguras y tarjetas con titular, número, caducidad y CVV.
CSV de KeePass, 1Password, Bitwarden y LastPass, más copia cifrada propia que sigue siendo ilegible.
Cuentas, suspensiones e invitaciones de un solo uso. Gestiona personas, nunca contenido.
Apps
Cuatro formas de llegar a la misma bóveda. Todas cifran en tu dispositivo y todas hablan con el mismo servidor, que sigue sin poder leer nada.
Funciona en cualquier navegador moderno y se instala como aplicación. El service worker guarda sólo el armazón: la bóveda no queda nunca en disco, así que sin conexión abre pero no muestra credenciales. Es deliberado.
Abrir la bóveda
Servidor en Go con PostgreSQL, levantado con docker compose. Los
contenedores escuchan sólo en 127.0.0.1 y la base de datos no
publica ningún puerto; nginx pone el TLS por delante.
Manifest V3 para Chrome y Edge. Rellena usuario y contraseña en la propia página y copia los códigos de verificación. Abre su propia sesión: la clave nunca viaja desde la pestaña de la web hasta la extensión, ni al revés.
Descargar (.zip)
Binario universal para Apple Silicon e Intel, 204 KB. Ventana propia, bloqueo
con ⌘L y navegación acotada: cualquier enlace que salga de tu
servidor se abre en el navegador, no dentro de la bóveda.
.zip en una carpeta que vayas a conservar.chrome://extensions y activa el Modo de desarrollador.No está en la Chrome Web Store: publicar ahí obliga a hacer pública la extensión y esto es una instancia personal.
No está firmada por un desarrollador identificado de Apple, así que macOS la bloqueará
al primer intento. Arrástrala a Aplicaciones, haz clic con el botón derecho
y elige Abrir; a partir de ahí funciona con normalidad.
Antes de abrirla puedes comprobar que has descargado exactamente lo que hay publicado:
shasum -a 256 Vaul-macOS-1.0.0.zip y compáralo con
SHA256SUMS.txt.
Preguntas
No, y no es una cuestión de confianza sino de diseño. El cifrado ocurre en tu navegador con una clave que se deriva de tu contraseña maestra, y esa contraseña no se envía nunca. El servidor recibe texto cifrado y lo guarda tal cual. Aunque quisiéramos leerlo, no tendríamos con qué.
La bóveda se pierde. No hay correo de recuperación ni pregunta de seguridad, porque cualquiera de esas dos cosas sería una forma de que un tercero recuperase tu acceso. Guarda una copia de la contraseña en un sitio físico seguro y exporta una copia cifrada de vez en cuando.
Porque la Web Crypto del navegador no ofrece Argon2, y la alternativa sería meter un WASM de terceros justo en la ruta donde se deriva la clave maestra: una dependencia externa en el punto más crítico del sistema. Con 600.000 iteraciones, PBKDF2-SHA256 sigue por encima de lo que recomienda OWASP.
Desde la propia aplicación, con el botón de exportar. La copia sale cifrada: es un fichero inerte sin tu contraseña maestra, así que puedes guardarlo donde quieras. También puedes exportar en CSV para llevártelo a otro gestor, pero eso sale en texto plano y la aplicación te avisa dos veces antes de hacerlo.
Esta instancia tiene el registro cerrado. Sólo se puede entrar con una invitación de un solo uso que emita el administrador. Es una bóveda personal, no un servicio abierto.
Sí. Es Go, PostgreSQL y un docker compose; con nginx y un
certificado delante, funciona en cualquier servidor. El repositorio incluye las
configuraciones de nginx que se usan aquí.
Sin telemetría, sin terceros, sin una clave que no sea tuya.
Abrir la bóveda