Modelo de datos
Los datos en Passwork se organizan en una jerarquía de cuatro niveles con sus propias claves criptográficas en cada nivel.
Jerarquía de objetos
User
└── Vault
└── Folder [optional]
└── Record
├── Standard fields
├── Custom fields
└── Attachments
Nivel 1: Usuario
Cada usuario tiene:
- Credenciales para iniciar sesión en el sistema (nombre de usuario, contraseña o SSO/LDAP)
- Contraseña maestra para el cifrado del lado del cliente (cuando CSE está habilitado)
- Par de claves RSA (pública y privada cifrada)
- Parámetros PBKDF2 (salt, número de iteraciones)
Nivel 2: Bóveda
Una bóveda es el contenedor principal para agrupar registros.
Tipos de bóveda:
- Bóvedas corporativas — almacenamiento compartido con derechos de acceso configurables
- Bóvedas personales — almacenamiento individual del usuario
Atributos de la bóveda:
| Atributo | Descripción |
|---|---|
| Nombre | Nombre de la bóveda |
| Descripción | Descripción textual |
| Clave de bóveda | Clave simétrica para cifrar registros |
| Derechos de acceso | Lista de usuarios y sus roles |
| Configuración | Límites, políticas y otros parámetros |
Nivel 3: Carpetas y registros
Las carpetas se utilizan para la organización lógica de registros dentro de una bóveda. Las carpetas pueden anidarse (profundidad ilimitada). Las carpetas no tienen sus propias claves de cifrado.
Un registro es una unidad de almacenamiento de información secreta.
Nivel 4: Campos y archivos adjuntos
Cada registro contiene un conjunto de campos y puede tener archivos adjuntos (archivos).
Estructura del registro
Campos del registro
Un registro contiene:
- Campos estándar: nombre, inicio de sesión, contraseña, URL, descripción, etiquetas, color
- Campos personalizados: pares arbitrarios de nombre-valor
- Secreto TOTP: para autenticación de dos factores
- Archivos adjuntos: archivos asociados
No todos los campos se cifran en el cliente — algunos están protegidos únicamente por el cifrado del lado del servidor para permitir la búsqueda y ordenación. Una tabla detallada de cifrado de campos se encuentra en la sección Alcance del cifrado.
Relación entre objetos y claves
Cada nivel de la jerarquía tiene su propia clave de cifrado.
Estructura de claves
La jerarquía de objetos y sus claves criptográficas forman un árbol:
El usuario tiene una clave maestra (derivada de la contraseña maestra mediante PBKDF2) y un par de claves RSA (pública + privada, cifrada con la clave maestra).
La bóveda tiene una clave de bóveda (256 bits). Para cada usuario con acceso, se crea una copia de la clave de bóveda, cifrada con su clave pública RSA.
El registro tiene una clave de registro, cifrada con la clave de bóveda.
Los datos del registro (campo de contraseña, campos personalizados, TOTP) se cifran con la clave de registro.
Los archivos adjuntos tienen su propia clave de archivo adjunto, cifrada con la clave de registro. El contenido del archivo se cifra con la clave de archivo adjunto.
Claves por nivel
| Nivel | Objeto | Clave | Tipo de clave | Protegida por |
|---|---|---|---|---|
| 1 | Usuario | Clave maestra | Simétrica, 512 bits | PBKDF2 de la contraseña maestra |
| 1 | Usuario | Claves RSA | Asimétrica, 2048 bits | Privada cifrada con clave maestra |
| 2 | Bóveda | Clave de bóveda | Simétrica, 256 bits | Clave RSA de cada usuario |
| 3 | Registro | Clave de registro | Simétrica | Clave de bóveda |
| 4 | Archivo adjunto | Clave de archivo adjunto | Simétrica, 256 bits | Clave de registro |
Ciclo de vida de los datos
Creación de un registro
- El usuario crea un registro en una bóveda
- Se genera una clave de registro aleatoria (256 bits)
- Los campos cifrados (contraseña, campos personalizados, TOTP) se cifran con la clave de registro (AES-256-CBC)
- La clave de registro se cifra con la clave de bóveda
- Los datos se envían al servidor
- El servidor aplica el cifrado del lado del servidor (AES-256-CFB) antes de guardar en la base de datos
Adición de un archivo adjunto
- El usuario adjunta un archivo a un registro
- Se genera una clave de archivo adjunto aleatoria (256 bits)
- El archivo se cifra con la clave de archivo adjunto (AES-256-CBC)
- La clave de archivo adjunto se cifra con la clave de registro
- El archivo cifrado y la clave cifrada se envían al servidor
Lectura de un registro
- El cliente solicita el registro al servidor
- El servidor descifra el cifrado del lado del servidor y envía los datos
- El cliente descifra la clave de bóveda con su clave privada RSA (WebCrypto)
- Descifra la clave de registro con la clave de bóveda (AES-256-CBC)
- Descifra los campos del registro con la clave de registro (AES-256-CBC)
- Para archivos adjuntos: descifra la clave de archivo adjunto → descifra el archivo
Características del modelo
Aislamiento de claves
- Comprometer un registro no revela otros registros
- Comprometer un archivo adjunto no revela otros archivos adjuntos
- Cada objeto tiene una clave de cifrado única
Acceso granular
- El acceso a una bóveda otorga acceso a todos los registros en su interior
- Es posible acceder a un registro individual sin acceso a la bóveda (sección «Bandeja de entrada»)
- Los enlaces externos permiten compartir un registro sin necesidad de cuenta
Cifrado de campos
La información detallada sobre qué campos se cifran en el cliente y cuáles solo en el servidor se encuentra en la sección Alcance del cifrado.