Modelo de seguridad
Lo que no podemos ver, no podemos perderlo.
Rempar está diseñado para que una compromisión completa del servidor no revele ningún secreto. Así es como lo hacemos, sin rodeos.
Derivación de clave
La contraseña maestra se normaliza (NFKC) y después se deriva con Argon2id. De ella se extraen dos subclaves mediante HKDF: una para autenticarse y otra para envolver la clave de la bóveda. Ninguna de las dos permite recuperar la otra.
master_key = Argon2id(password, salt, m=65536 KiB, t=3, p=4) auth_key = HKDF(master_key, "rempart/auth/v1") wrap_key = HKDF(master_key, "rempart/wrap/v1")
Clave por elemento
Cada ficha tiene una clave aleatoria de 32 bytes, sellada por la clave de la bóveda. El contenido se cifra con XChaCha20-Poly1305 y el identificador de la ficha se vincula en los datos autenticados.
blob = { k: seal(vault_key, item_key), c: seal(item_key, content) } Conocimiento cero
El servidor almacena el hash de auth_key, los parámetros públicos del KDF y blobs opacos. No conoce ni contraseña, ni clave, ni nombre de elemento. La preconexión devuelve una sal ficticia determinista para los correos desconocidos: ninguna enumeración de cuentas.
Cuenta y dispositivos
Token de acceso por dispositivo, token de actualización con rotación. Un token reutilizado revoca el dispositivo. La 2FA TOTP (Google Authenticator) protege el inicio de sesión. Usted revoca un dispositivo perdido desde cualquier otro.
Kit de emergencia
32 bytes aleatorios mostrados una sola vez en Crockford base32. Con él se sella una copia de la clave de la bóveda. Sin contraseña maestra y sin kit, nada es recuperable, por nadie.
Gestos de seguridad
Secretos ocultos por defecto, vueltos a ocultar tras 30 s. Portapapeles vaciado tras 30 s. Bloqueo tras 5 min, al suspender y al cerrar, con borrado de la clave en memoria. Esperas progresivas tras cada fallo: 30 s, 1 min, 5 min. Ninguna eliminación silenciosa.
Lo que el servidor nunca ve
- Su contraseña maestra
- La clave maestra, la clave de envoltura y la clave de la bóveda
- El contenido o el nombre de un elemento
- Su kit de emergencia
- Más de 5 caracteres de huella durante una verificación de filtración