Saltar al contenido principal

Autenticación y clave maestra

La autenticación en Passwork consta de dos etapas: autenticación básica y verificación de la contraseña maestra (cuando CSE está habilitado).

Autenticación en dos etapas

EtapaPropósitoDónde se ejecuta
Autenticación básicaVerificación de credencialesServidor
Verificación de la contraseña maestraAcceso a los datos cifradosCliente + Servidor

Etapa 1: Autenticación básica

Autenticación local

  1. El usuario introduce su nombre de usuario y contraseña
  2. El servidor verifica la contraseña (PBKDF2, 600.000 iteraciones, SHA-512)
  3. En caso de éxito, se emiten Access Token y Refresh Token
  4. El cliente almacena los tokens para solicitudes posteriores

Parámetros de hashing de contraseña del servidor:

ParámetroValor
AlgoritmoPBKDF2
Función hashSHA-512
Iteraciones600.000
Longitud de clave512 bits

Autenticación SSO / LDAP

Con SSO o LDAP:

  1. El usuario es redirigido al proveedor externo
  2. Tras la autenticación exitosa, regresa a Passwork
  3. El sistema crea la sesión y emite tokens
  4. Si CSE está habilitado, se solicita la introducción de la contraseña maestra

Etapa 2: Verificación de la contraseña maestra

Con el cifrado del lado del cliente habilitado, se requiere la introducción de la contraseña maestra después de la autenticación básica.

Obtención de parámetros

El cliente solicita al servidor los parámetros para el cálculo de la clave maestra:

  • Salt — único por usuario
  • Número de iteraciones — 300.000
  • Tipo de algoritmo — PBKDF2

Cálculo de la clave maestra

La derivación de clave se realiza en el cliente:

ParámetroValor
AlgoritmoPBKDF2
Función hashSHA-256
Iteraciones300.000
Longitud de clave512 bits
EntradaContraseña maestra + Salt
SalidaClave maestra (Base64)

Cálculo del hash de verificación

Para confirmar la entrada correcta, se calcula un hash de la clave maestra:

ParámetroValor
AlgoritmoSHA-256
EntradaClave maestra (512 bits)
SalidaHash (256 bits, cadena hexadecimal)

Verificación del servidor

El servidor compara el hash recibido con el valor almacenado.

¿Por qué una simple comparación de hash?
  • El hash se calcula en el cliente a partir de una clave criptográficamente fuerte de 512 bits
  • El servidor no conoce la clave maestra original
  • El hashing adicional del lado del servidor no añade seguridad en este modelo Zero-Knowledge

Secuencia completa de autenticación

Fase 1 — Autenticación básica:

  1. El usuario introduce su nombre de usuario y contraseña
  2. El servidor verifica las credenciales (PBKDF2, SHA-512, 600K iteraciones)
  3. El servidor devuelve los tokens de acceso y la bandera CSE

Fase 2 — Contraseña maestra (si CSE está habilitado):

  1. El cliente solicita los parámetros PBKDF2 (salt, iteraciones)
  2. El usuario introduce la contraseña maestra
  3. El cliente calcula la clave maestra: PBKDF2(password, salt, 300K, SHA-256) → 512 bits
  4. El cliente calcula el hash: SHA-256(master key) → 256 bits
  5. El cliente envía el hash al servidor
  6. El servidor compara los hashes
  7. En caso de éxito, el servidor devuelve la clave privada RSA cifrada

Fase 3 — Descifrado de la clave:

  1. El cliente descifra la clave privada RSA con la clave maestra (AES-256-CBC)
  2. El cliente está listo para trabajar con los datos cifrados
Principio Zero-Knowledge

La contraseña maestra nunca sale del cliente. El servidor solo ve el hash de la clave maestra. La clave privada RSA se transmite únicamente en forma cifrada.


Parámetros del salt

ParámetroValor
Longitud20 caracteres
AlfabetoA-Z, a-z, 0-9, @, ! (64 caracteres)
Entropía~120 bits
GeneraciónServidor, al crear/cambiar la contraseña maestra
AlmacenamientoEn el perfil del usuario en el servidor

Propiedades del salt:

  • Cada usuario tiene un salt único
  • Se genera un nuevo salt cuando se cambia la contraseña maestra
  • El salt no es secreto, pero garantiza la unicidad del hash

Escenarios de autenticación

Primer inicio de sesión (establecimiento de la contraseña maestra)

  1. El usuario completa la autenticación básica
  2. El sistema determina que la contraseña maestra no está establecida
  3. El servidor genera un nuevo salt
  4. El usuario introduce la nueva contraseña maestra
  5. El cliente realiza las operaciones criptográficas:
    • Calcula la clave maestra (PBKDF2)
    • Genera el par de claves RSA (2048 bits)
    • Cifra la clave privada RSA con la clave maestra (AES-256-CBC)
    • Calcula el hash de la clave maestra (SHA-256)
  6. El cliente envía al servidor:
    • Clave pública RSA (abierta)
    • Clave privada RSA cifrada
    • Hash de la clave maestra

Inicio de sesión posterior

  1. Autenticación básica
  2. Obtener parámetros PBKDF2 (salt, iteraciones)
  3. Introducir contraseña maestra
  4. Calcular la clave maestra y el hash
  5. Verificar el hash en el servidor
  6. Descifrar la clave privada RSA (AES-256-CBC)

Cambio de contraseña maestra

  1. El usuario introduce la contraseña maestra actual
  2. Verificación de corrección (comparación de hash)
  3. Introducir la nueva contraseña maestra
  4. Generación de un nuevo salt en el servidor
  5. Recalcular la clave maestra y el hash
  6. Descifrar la clave privada RSA con la clave maestra antigua
  7. Recifrar la clave privada RSA con la nueva clave maestra (AES-256-CBC)
  8. Guardar los nuevos datos en el servidor

Restablecimiento de la contraseña maestra (por el administrador)

Pérdida de datos

Cuando el administrador restablece la contraseña maestra:

  • Se genera un nuevo par de claves RSA
  • El usuario pierde acceso a los datos previamente cifrados
  • Se requiere volver a otorgar acceso a las bóvedas
  1. El administrador inicia el restablecimiento
  2. Se eliminan los datos criptográficos del usuario
  3. El usuario establece una nueva contraseña maestra
  4. Se generan nuevas claves RSA
  5. Los administradores de bóvedas deben volver a otorgar acceso

Modelo de amenazas y protección

Protección de la contraseña maestra

AmenazaProtección
Interceptación durante la entradaLa contraseña maestra se procesa solo en el navegador
Interceptación durante la transmisiónSolo se envía al servidor el hash de la clave maestra
Ataque de fuerza brutaPBKDF2 con 300.000 iteraciones
Tablas rainbowSalt único por usuario
Compromiso del servidorEl servidor no almacena la contraseña maestra ni la clave maestra

Protección del hash de la clave maestra

AmenazaProtección
Filtración del hashEl hash se calcula a partir de una clave de 512 bits (no de la contraseña)
Adivinación basada en el hashPBKDF2 hace cada intento computacionalmente costoso
Recuperación de contraseñaPrimero hay que adivinar la clave, luego la contraseña

Protección de la sesión

ParámetroAccess TokenRefresh Token
Duración~2,8 horas36 horas
PropósitoAutenticación de solicitudesRenovación del Access Token
AlmacenamientoAlmacenamiento seguro del navegadorAlmacenamiento seguro del navegador

Manejo de errores

Contraseña maestra incorrecta

  1. El hash calculado no coincide con el valor almacenado
  2. El servidor devuelve un error
  3. El cliente solicita volver a introducir la contraseña
  4. Es posible aplicar límites de intentos (configurado por el administrador)

Parámetros PBKDF2 no encontrados

Si no se encuentran los parámetros — la contraseña maestra no está establecida, se requiere la configuración inicial.

No se puede descifrar la clave RSA

Si falla el descifrado de la clave privada RSA — contraseña maestra incorrecta o datos corruptos.


Resumen criptográfico

OperaciónAlgoritmoParámetros
Hashing de contraseña (servidor)PBKDF2-SHA512600.000 iteraciones
Derivación de clave maestra (cliente)PBKDF2-SHA256300.000 iteraciones, 512 bits
Hash de verificaciónSHA-256256 bits
Cifrado de clave RSAAES-256-CBCClave maestra
Generación de clave RSARSA-OAEP2048 bits, SHA-256