Saltar al contenido principal

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:

AtributoDescripción
NombreNombre de la bóveda
DescripciónDescripción textual
Clave de bóvedaClave simétrica para cifrar registros
Derechos de accesoLista de usuarios y sus roles
ConfiguraciónLí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

NivelObjetoClaveTipo de claveProtegida por
1UsuarioClave maestraSimétrica, 512 bitsPBKDF2 de la contraseña maestra
1UsuarioClaves RSAAsimétrica, 2048 bitsPrivada cifrada con clave maestra
2BóvedaClave de bóvedaSimétrica, 256 bitsClave RSA de cada usuario
3RegistroClave de registroSimétricaClave de bóveda
4Archivo adjuntoClave de archivo adjuntoSimétrica, 256 bitsClave de registro

Ciclo de vida de los datos

Creación de un registro

  1. El usuario crea un registro en una bóveda
  2. Se genera una clave de registro aleatoria (256 bits)
  3. Los campos cifrados (contraseña, campos personalizados, TOTP) se cifran con la clave de registro (AES-256-CBC)
  4. La clave de registro se cifra con la clave de bóveda
  5. Los datos se envían al servidor
  6. 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

  1. El usuario adjunta un archivo a un registro
  2. Se genera una clave de archivo adjunto aleatoria (256 bits)
  3. El archivo se cifra con la clave de archivo adjunto (AES-256-CBC)
  4. La clave de archivo adjunto se cifra con la clave de registro
  5. El archivo cifrado y la clave cifrada se envían al servidor

Lectura de un registro

  1. El cliente solicita el registro al servidor
  2. El servidor descifra el cifrado del lado del servidor y envía los datos
  3. El cliente descifra la clave de bóveda con su clave privada RSA (WebCrypto)
  4. Descifra la clave de registro con la clave de bóveda (AES-256-CBC)
  5. Descifra los campos del registro con la clave de registro (AES-256-CBC)
  6. 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.