Saltar al contenido principal

Almacenamiento local del navegador

Passwork permite guardar la clave maestra en el navegador para evitar introducir la contraseña maestra en cada inicio de sesión. Se utiliza el Local Storage Secret Code — un token generado por el servidor — para la protección.

Importante

La clave maestra guardada está protegida por un token que solo se emite tras una autenticación básica exitosa. Sin acceso a la cuenta, es imposible descifrar los datos del localStorage.


Local Storage Secret Code

Qué es

Local Storage Secret Code es un token aleatorio que:

  • Se genera en el servidor cuando se crea un usuario
  • Se emite al cliente tras una autenticación exitosa
  • Se utiliza para cifrar la clave maestra en el localStorage

Características

ParámetroAplicación webExtensión del navegador
Longitud100 caracteres60 caracteres
AlfabetoA-Z, a-z, 0-9A-Z, a-z, 0-9
Entropía~596 bits~357 bits
GeneraciónEn el servidorEn el servidor
Almacenamiento del tokenEn el servidorEn el servidor

Ciclo de vida

  1. Creación — cuando se registra el usuario, el servidor genera el Secret Code
  2. Emisión — con cada autenticación exitosa, el servidor envía el Secret Code al cliente
  3. Uso — el cliente cifra la clave maestra y la guarda en el localStorage
  4. Rotación — el Secret Code puede ser regenerado por el administrador

Proceso de guardado de la clave maestra

Secuencia de guardado:

  1. El usuario activa la opción «Recordar contraseña maestra»
  2. El usuario introduce la contraseña maestra
  3. El cliente calcula la clave maestra (PBKDF2, 300.000 iteraciones, SHA-256)
  4. El cliente envía el hash de la clave maestra al servidor para verificación
  5. El servidor confirma la corrección y devuelve el Local Storage Secret Code
  6. El cliente cifra la clave maestra con el Secret Code (AES-256-CBC)
  7. La clave maestra cifrada se guarda en el localStorage
  8. El Secret Code no se guarda en el localStorage

Algoritmo de cifrado

ParámetroValor
AlgoritmoAES-256-CBC
RellenoPKCS#7
ClaveLocal Storage Secret Code (100 caracteres → 256 bits)
IVGenerado automáticamente (128 bits)

Qué se guarda en el localStorage

DatosFormatoProtección
Clave maestra cifradaCadena Base64AES-256-CBC
ID del usuarioCadena
Configuración de la aplicaciónJSON
Qué NO se guarda
  • Contraseña maestra (nunca)
  • Local Storage Secret Code (se emite con cada autenticación)
  • Clave maestra sin cifrar
  • Clave privada RSA

Proceso de recuperación de la clave maestra

Secuencia de inicio de sesión automático:

  1. El usuario abre la aplicación
  2. El cliente verifica si existe una clave maestra cifrada en el localStorage
  3. Si la clave existe — el cliente la recuerda para su posterior descifrado
  4. El usuario completa la autenticación básica (usuario/contraseña)
  5. El servidor verifica las credenciales
  6. El servidor devuelve los tokens de acceso y el Local Storage Secret Code
  7. El cliente descifra la clave maestra con el Secret Code (AES-256-CBC)
  8. La clave maestra se recupera — no se requiere introducir la contraseña maestra

Condiciones para el inicio de sesión automático

La recuperación automática de la clave maestra es posible si:

CondiciónDescripción
Presencia de la claveEl localStorage contiene la clave maestra cifrada
AutenticaciónEl usuario completó la autenticación básica
Secret Code válidoEl servidor devolvió el Secret Code correcto
Descifrado exitosoLos datos no están corruptos

Modelo de seguridad

Protección contra amenazas

AmenazaProtección
Robo del localStorageLos datos están cifrados, la clave de cifrado está en el servidor
Ataque XSSEl Secret Code no se almacena en el cliente
Robo de sesiónSe requiere autenticación básica
Acceso físico al dispositivoSe requiere la contraseña de la cuenta

Principio clave

Sin una autenticación exitosa en el servidor, es imposible descifrar la clave maestra.

Incluso si un atacante:

  • Obtiene acceso al localStorage
  • Extrae la clave maestra cifrada
  • Obtiene acceso al sistema de archivos del dispositivo

No podrá descifrar los datos sin:

  • La contraseña de la cuenta (o acceso SSO/LDAP)
  • Una autenticación exitosa en el servidor
  • Obtener el Secret Code del servidor

Limitaciones

EscenarioRiesgo
Dispositivo compartidoOtro usuario puede obtener acceso tras su autenticación
Sincronización del navegadorLa clave cifrada se sincroniza entre dispositivos
Compromiso del servidorUn atacante podría obtener el Secret Code

Gestión de datos guardados

Desactivación de la función

El usuario puede:

  1. Desmarcar «Recordar contraseña maestra» en la configuración
  2. Los datos se eliminarán del localStorage

Restablecimiento forzado

El administrador puede:

  1. Regenerar el Secret Code del usuario
  2. Todas las claves maestras guardadas quedan invalidadas
  3. El usuario deberá introducir la contraseña maestra nuevamente

Cierre de sesión

Al cerrar sesión:

  • Se eliminan los tokens de sesión
  • La clave maestra cifrada puede permanecer en el localStorage (para el próximo inicio de sesión)
  • El usuario puede elegir opcionalmente «Cerrar sesión y olvidar»

Recomendaciones de seguridad

Cuándo utilizar «Recordar»

Recomendado:

  • En un dispositivo personal con contraseña/biometría
  • Para uso diario de Passwork
  • Cuando la comodidad importa y el dispositivo está protegido

No recomendado:

  • En dispositivos compartidos/públicos
  • Con requisitos estrictos de seguridad
  • Si el dispositivo puede perderse/ser robado

Políticas organizativas

El administrador puede:

  • Desactivar la función «Recordar» a nivel de política
  • Limitar el período de validez de la clave guardada
  • Requerir la reintroducción periódica de la contraseña maestra

Protección de la memoria

Ofuscación en memoria

Además del cifrado del localStorage, Passwork utiliza un mecanismo para proteger las contraseñas en la memoria del navegador:

MétodoDescripción
DivisiónLa contraseña se divide en partes aleatorias
OfuscaciónCada parte se ofusca (desplazamiento de caracteres)
MezclaLas partes se almacenan en orden aleatorio
RecuperaciónEl orden de recuperación se almacena por separado
Limitación

Esto es ofuscación, no protección criptográfica. Dificulta la lectura simple de la memoria (por ejemplo, en volcados) pero no protege contra ataques dirigidos con un depurador.


Diferencias de la extensión del navegador

La extensión del navegador tiene diferencias de implementación:

ParámetroAplicación webExtensión
Longitud del Secret Code100 caracteres (~596 bits)60 caracteres (~357 bits)
AlmacenamientolocalStoragechrome.storage.local
AislamientoDominio compartidoExtensión aislada
Protección XSSDepende de CSPAislamiento completo

Ventajas de la extensión

  • Almacenamiento aislado — inaccesible desde páginas web
  • Contexto de ejecución separado — protección contra scripts maliciosos
  • Protección XSS — los sitios visitados no pueden acceder a los datos de la extensión