Revisión del cifrado
Esta sección documenta la arquitectura criptográfica de Passwork para fines de cumplimiento y auditoría, y proporciona pasos de verificación específicos para las implementaciones on-premise.
1. Descripción general de la arquitectura de cifrado
Passwork utiliza un modelo de cifrado por capas. Comprender la arquitectura es necesario para evaluar correctamente la postura de seguridad.
Protección de dos niveles
| Nivel | Algoritmo | Cuándo está activo | Qué protege |
|---|---|---|---|
| Del lado del servidor | AES-256-CFB | Siempre | Todos los datos en reposo en la base de datos |
| Del lado del cliente (CSE) | AES-256-CBC | Cuando el CSE está activado | Contraseñas, campos personalizados, secretos TOTP, adjuntos |
Con el CSE desactivado: todos los datos se cifran con la clave del servidor. Un administrador de la base de datos con acceso tanto a la base de datos como a la clave del servidor puede descifrar los datos. El cifrado del lado del servidor protege contra el robo del archivo de la base de datos.
Con el CSE activado: los campos críticos (contraseñas, secretos) se cifran en el dispositivo del usuario antes de enviarse al servidor. El servidor nunca almacena contraseñas sin cifrar. El cifrado del lado del servidor añade una segunda capa por encima.
Jerarquía de claves (CSE activado)
Contraseña maestra (conocida por el usuario, nunca se transmite)
↓ PBKDF2 (SHA-256, 300 000 iteraciones)
Clave maestra (512 bits, solo en memoria)
↓ AES-256-CBC
Clave privada RSA (2048 bits, almacenada cifrada en el servidor)
↓ RSA-OAEP (SHA-256)
Clave de bóveda (256 bits, almacenada cifrada con RSA por usuario en el servidor)
↓ AES-256-CBC
Clave de registro (256 bits, por registro, almacenada cifrada en el servidor)
↓ AES-256-CBC
Campo de contraseña, campos personalizados, secreto TOTP, claves de adjuntos
Cada bóveda y cada registro tienen una clave única. Comprometer una clave no expone otros registros ni bóvedas. La clave maestra existe únicamente en la memoria del navegador y nunca se persiste en el servidor.
Especificación completa de la jerarquía de claves: Jerarquía de claves
2. Verificar el estado del CSE y su justificación
2.1 Determinar el estado actual del CSE
Vaya a Configuración → Configuración del sistema → Registro (o compruebe config.env):
| Estado del CSE | Indicador |
|---|---|
| Activado | Se solicita a los usuarios una contraseña maestra al iniciar sesión |
| Desactivado | Los usuarios inician sesión sin que se les solicite una contraseña maestra |
También puede comprobar config.env (on-premise):
grep -i "client_side_encryption\|CSE\|ENCRYPTION" /var/www/init/config.env
2.2 Verificar que la decisión es intencionada y está documentada
La decisión sobre el CSE debe estar documentada en la política de seguridad de la información de la organización o en el registro de decisiones de la implementación de Passwork.
| Escenario de implementación | Estado esperado del CSE |
|---|---|
| Passwork alojado en la nube (passwork.pro) | Siempre activado: no se puede desactivar |
| On-premise, accesible desde Internet | Activado firmemente recomendado |
| On-premise, aislado (air-gapped) / perímetro privado, seguridad física estricta | Desactivado aceptable con justificación documentada |
Hallazgo: si el CSE está desactivado en una instancia on-premise accesible desde Internet sin justificación documentada, se trata de un hallazgo de gravedad alta.
2.3 Con el CSE activado: verificar los controles operativos
- La política de complejidad de la contraseña maestra está configurada (≥ 14 caracteres)
- El soporte técnico dispone de un procedimiento documentado para el restablecimiento de la contraseña maestra (con el impacto para el usuario: pérdida de los datos de la bóveda privada)
- Los usuarios están formados para almacenar las contraseñas maestras de forma segura y sin conexión
- Los administradores de bóvedas saben cómo aprobar las nuevas solicitudes de acceso a bóvedas tras un restablecimiento de la contraseña maestra
3. Clave de cifrado del servidor
La clave de cifrado del servidor (archivo encryption_key) se utiliza para el cifrado AES-256-CFB de todos los datos en reposo. Es el secreto más sensible en una implementación de Passwork on-premise.
3.1 Ubicación y permisos del archivo de clave
# Linux
ls -la /var/www/init/
# Look for the encryption_key file
# Expected: -rw------- 1 www-data www-data
# Docker
ls -la /<passwork>/conf/keys/
Verifique:
- El archivo de clave no es accesible para el usuario de la base de datos, otras aplicaciones web ni es legible por todos (world-readable)
- El archivo de clave no está almacenado dentro del directorio de la base de datos
- Permisos del archivo:
600(solo lectura/escritura para el propietario) - Propietario del archivo: el usuario del proceso del servidor web (p. ej.,
www-data)
Hallazgo: si los permisos del archivo son 644 o más amplios, se trata de un hallazgo de gravedad alta. La clave protege todos los datos cifrados del lado del servidor.
3.2 Almacenamiento de la copia de seguridad de la clave
La clave de cifrado debe respaldarse por separado de la copia de seguridad de la base de datos. Si ambas se almacenan juntas, una única brecha compromete tanto el texto cifrado como la clave.
Verifique:
- La clave de cifrado se respalda de forma independiente de la base de datos
- La copia de seguridad de la clave se almacena en una ubicación física o lógica diferente a la de la copia de seguridad de la base de datos
- La propia copia de seguridad de la clave está cifrada (p. ej., utilizando GPG con una frase de contraseña separada)
3.3 Rotación de la clave
Actualmente Passwork no admite la rotación automatizada de la clave del servidor. La clave permanece estática tras la implementación inicial. Documente la antigüedad actual de la clave y anótelo en el registro de seguridad.
4. Verificación del cumplimiento de los algoritmos
Los algoritmos criptográficos de Passwork frente a las normas actuales:
| Algoritmo | Implementación en Passwork | NIST SP 800-131A Rev. 2 (2019) | Estado |
|---|---|---|---|
| AES | 256 bits, CBC/CFB | AES-128/192/256 aprobado | ✓ Conforme |
| RSA | 2048 bits, OAEP/SHA-256 | RSA ≥ 2048 bits aprobado | ✓ Conforme |
| PBKDF2 | SHA-256, 300 000 iteraciones | ≥ 310 000 iteraciones para SHA-256 (NIST 2024) | ⚠ Una iteración por debajo según la actualización de NIST 2024 |
| SHA-2 | SHA-256 / SHA-512 | Aprobado | ✓ Conforme |
| CSPRNG | WebCrypto (navegador) / OpenSSL (servidor) | Aprobado | ✓ Conforme |
| TLS | 1.2+ (1.3 preferido) | TLS 1.2 mínimo | ✓ Conforme |
NIST SP 800-132 (actualización de 2024) recomienda ≥ 310 000 iteraciones para PBKDF2-HMAC-SHA-256. Passwork utiliza 300 000 (lado del cliente) y 600 000 (verificación del lado del servidor). El recuento del lado del cliente está marginalmente por debajo de la recomendación de 2024; cumple plenamente la orientación de NIST anterior a 2024 (10 000 iteraciones). Se trata de una nota informativa de gravedad baja, no de un hallazgo crítico.
5. Alcance del cifrado: qué puede ver el servidor
Para la documentación de cumplimiento, es importante saber qué campos de datos son accesibles para el administrador del servidor en cada modo de cifrado.
Con el CSE activado (modelo de conocimiento cero)
El servidor puede leer (almacenado sin cifrar o cifrado solo por el servidor):
- Nombres de bóvedas, nombres de carpetas
- Nombres de registros (títulos)
- Campo de login/nombre de usuario
- Campo de URL
- Etiquetas y etiquetas de color
- Campo de descripción/notas
- Nombres de archivos (no el contenido de los archivos)
- Correos electrónicos y nombres de usuario
- Pertenencia a grupos, derechos de acceso a bóvedas, marcas de tiempo
El servidor NO PUEDE leer (cifrado del lado del cliente, conocimiento cero):
- Campo de contraseña
- Nombres y valores de los campos personalizados
- Secretos TOTP
- Contenido de los archivos
- Historial de revisiones del registro (contraseñas anteriores)
Con el CSE desactivado
La clave de cifrado del lado del servidor protege todos los datos en reposo, pero una parte con acceso tanto a la base de datos como al archivo encryption_key puede descifrar todos los campos, incluidas las contraseñas.
Esto es aceptable para las organizaciones en las que el modelo de amenazas no incluye amenazas internas de los administradores de infraestructura, y Passwork se ejecuta en una red aislada de confianza.
Documente en los registros de cumplimiento: si el conocimiento cero es requerido por su política de seguridad o marco regulatorio.
Alcance completo del cifrado campo por campo: Alcance del cifrado
6. Cifrado de las copias de seguridad
Las copias de seguridad de la base de datos contienen todos los datos de Passwork. Las copias de seguridad sin cifrar almacenadas en soportes accesibles equivalen a una base de datos sin cifrar.
Qué verificar
- Las copias de seguridad de la base de datos (MongoDB) están cifradas en reposo en la ubicación de almacenamiento de copias de seguridad
- El acceso al almacenamiento de copias de seguridad está restringido únicamente al personal autorizado
- Las claves de cifrado de las copias de seguridad se almacenan por separado de los datos de la copia de seguridad
- La restauración de las copias de seguridad se ha probado en los últimos 6 meses
- Las copias de seguridad se conservan durante el tiempo requerido por su política de retención de datos
Para la configuración de las copias de seguridad de MongoDB, consulte Ejemplos de creación y restauración de copias de seguridad.
Lista de comprobación resumida
| # | Control | Estado |
|---|---|---|
| 2.1 | El estado del CSE es conocido y está verificado | |
| 2.2 | La decisión sobre el CSE está documentada con justificación | |
| 2.3 | Si el CSE está activado: política de contraseña maestra ≥ 14 caracteres | |
| 3.1 | Archivo de la clave de cifrado del servidor: permisos 600, propietario correcto | |
| 3.2 | Clave de cifrado respaldada por separado de la base de datos | |
| 3.3 | Antigüedad de la clave documentada | |
| 4 | Cumplimiento de los algoritmos documentado (NIST); nota sobre PBKDF2 registrada | |
| 5 | Alcance del cifrado documentado en los registros de cumplimiento | |
| 6.1 | Copias de seguridad cifradas en reposo | |
| 6.2 | Restauración de las copias de seguridad probada en los últimos 6 meses |