Passwork utiliza un modelo de protección de dos niveles. No todos los datos se cifran en el cliente — algunos campos están protegidos únicamente por el cifrado del lado del servidor para permitir la funcionalidad (búsqueda, ordenación, visualización).
Resumen de los niveles de cifrado
| Nivel | Dónde se ejecuta | Cuándo está activo | Clave | Algoritmo |
|---|
| Cifrado del lado del cliente | En el navegador | Cuando CSE está habilitado | Claves de usuario, bóveda, registro | AES-256-CBC |
| Cifrado del lado del servidor | En el servidor | Siempre | Clave del servidor | AES-256-CFB |
Datos del registro
| Campo | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| Nombre del registro | — | ✓ | Búsqueda, visualización en lista |
| Inicio de sesión | — | ✓ | Búsqueda, autocompletado |
| Contraseña | ✓ | ✓ | Datos críticos |
| URL | — | ✓ | Búsqueda, autocompletado, extensión del navegador |
| Descripción | — | ✓ | Búsqueda |
| Etiquetas | — | ✓ | Filtrado, agrupación |
| Color | — | ✓ | Visualización |
Campos personalizados
| Atributo | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| Nombre del campo | ✓ | ✓ | Puede contener información sensible |
| Valor del campo | ✓ | ✓ | Datos críticos |
| Tipo de campo | ✓ | ✓ | Metadatos del campo |
TOTP (autenticación de dos factores)
| Atributo | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| Secreto TOTP | ✓ | ✓ | Datos críticos de 2FA |
Archivos adjuntos
| Atributo | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| Nombre del archivo | — | ✓ | Visualización, búsqueda |
| Contenido del archivo | ✓ | ✓ | Datos críticos |
| Clave de archivo adjunto | Sí (con clave de registro) | ✓ | Material de clave |
Revisiones del registro
| Atributo | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| Valores anteriores de contraseña | ✓ | ✓ | Secretos históricos |
| Campos personalizados anteriores | ✓ | ✓ | Secretos históricos |
| Metadatos de cambios | — | ✓ | Auditoría, registro |
Datos de la bóveda
| Atributo | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| Nombre de la bóveda | — | ✓ | Navegación, visualización |
| Descripción de la bóveda | — | ✓ | Información |
| Clave de bóveda | Sí (con clave RSA del usuario) | ✓ | Material de clave |
| Derechos de acceso | — | ✓ | Control de acceso |
| Configuración de la bóveda | — | ✓ | Configuración |
Datos del usuario
| Atributo | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| Nombre de usuario | — | — | Identificación |
| Correo electrónico | — | — | Identificación |
| Clave pública RSA | — | — | Pública por definición |
| Clave privada RSA | Sí (con clave maestra) | ✓ | Datos críticos |
| Hash de la clave maestra | — | ✓ | Para verificación de contraseña |
| Salt PBKDF2 | — | ✓ | Parámetros criptográficos |
| Local Storage Secret Code | — | ✓ | Para la función «Recordar» |
Datos de enlace externo
| Atributo | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| Token de enlace | — | — | Identificador de URL |
| Copia de datos del registro | Sí (con clave de enlace) | ✓ | Datos secretos |
| Clave de enlace (cifrada) | ✓ | ✓ | Material de clave |
| Hash de la clave de enlace | — | ✓ | Para verificación de acceso |
| Configuración del enlace | — | ✓ | TTL, uso único |
Datos de servicio
| Datos | Cifrado del lado del cliente | Cifrado del lado del servidor | Motivo |
|---|
| IDs de objetos | — | — | Identificación |
| Marcas de tiempo | — | — | Ordenación, auditoría |
| Tokens de acceso/actualización | — | — | Sesiones (en memoria/cookies) |
| Contraseñas LDAP (integración) | — | ✓ | Integración del servidor |
| Contraseñas SMTP | — | ✓ | Integración del servidor |
Claves de cifrado por tipo de datos
| Datos | Clave de cifrado del lado del cliente | Clave de cifrado del lado del servidor |
|---|
| Campo de contraseña | Clave de registro (AES-256-CBC) | Clave del servidor (AES-256-CFB) |
| Campos personalizados | Clave de registro | Clave del servidor |
| Secreto TOTP | Clave de registro | Clave del servidor |
| Contenido del archivo | Clave de archivo adjunto (AES-256-CBC) | Clave del servidor |
| Clave de archivo adjunto | Clave de registro | Clave del servidor |
| Clave de registro | Clave de bóveda (AES-256-CBC) | Clave del servidor |
| Clave de bóveda | Clave RSA del usuario (RSA-OAEP) | Clave del servidor |
| Clave privada RSA | Clave maestra (AES-256-CBC) | Clave del servidor |
¿Por qué no se cifra todo en el cliente?
Razones funcionales
- Búsqueda — para buscar por nombre, inicio de sesión, URL, descripción y etiquetas, el servidor debe poder indexar estos campos
- Ordenación — ordenar registros por nombre requiere acceso a este campo
- Filtrado — el filtrado por etiquetas funciona en el lado del servidor
- Autocompletado — la extensión del navegador compara URLs sin descifrar
- Visualización en lista — mostrar nombres de registros sin descifrar todo el registro
Aunque algunos campos no se cifran en el cliente, están protegidos por:
- Cifrado del lado del servidor (AES-256-CFB) antes de la escritura en la base de datos
- TLS/HTTPS durante la transmisión entre cliente y servidor
- Control de acceso a nivel de aplicación
Modelo de amenazas
| Amenaza | Protección |
|---|
| Filtración de la base de datos | El cifrado del lado del servidor protege todos los datos |
| Compromiso del servidor | El cifrado del lado del cliente protege los datos críticos |
| Interceptación del tráfico | TLS protege los datos en tránsito |
| Acceso del administrador | Zero-Knowledge para contraseñas y secretos |
Recomendaciones de seguridad
Con CSE habilitado
Con el cifrado del lado del cliente, los datos críticos (contraseñas, secretos, archivos) están protegidos por el principio Zero-Knowledge. El servidor no puede descifrarlos.
Lo que permanece visible para el servidor:
- Estructura de bóvedas y carpetas
- Nombres de registros
- Inicios de sesión y URLs
- Etiquetas y descripciones
- Número y nombres de archivos adjuntos
Si necesita ocultar metadatos:
- Utilice nombres genéricos/no informativos para los registros
- Evite información sensible en las descripciones
- No especifique URLs exactas para sistemas críticos