Glosario de términos
Definiciones de los términos clave utilizados en la documentación criptográfica de Passwork.
Entidades principales
Bóveda
Una bóveda es un contenedor para almacenar registros. Cada bóveda tiene su propia clave de cifrado simétrica (clave de bóveda) que protege todos los registros en su interior. Las bóvedas pueden ser corporativas (compartidas) o personales.
Registro
Un registro es una unidad de almacenamiento de información secreta. Cada registro contiene un conjunto de campos: nombre, inicio de sesión, contraseña, URL, descripción, etiquetas, campos personalizados y archivos adjuntos. Un registro se cifra con su propia clave de registro.
El término «contraseña» en el contexto de Passwork puede referirse tanto al registro en sí como a un campo específico dentro del registro. En esta documentación, utilizamos «registro» para referirnos a la entidad y «campo de contraseña» para referirnos al campo específico.
Campo de registro
Un campo es un elemento de datos individual dentro de un registro. Los campos se dividen en:
- Campos estándar: nombre, inicio de sesión, contraseña, URL, descripción, etiquetas
- Campos personalizados: pares arbitrarios de nombre-valor añadidos por el usuario
- Secreto TOTP: secreto para generar contraseñas de un solo uso (autenticación de dos factores)
Archivo adjunto
Un archivo adjunto es un archivo asociado a un registro. Cada archivo adjunto se cifra con su propia clave de archivo adjunto (AES-256-CBC), que a su vez está protegida por la clave de registro.
Carpeta
Una carpeta es una forma de organizar registros dentro de una bóveda. Las carpetas no tienen sus propias claves de cifrado; los registros en las carpetas se cifran con la clave de bóveda.
Usuario y autenticación
Contraseña maestra
La contraseña maestra es la contraseña secreta del usuario, conocida solo por él. Se utiliza para derivar la clave maestra mediante el algoritmo PBKDF2. La contraseña maestra nunca se transmite al servidor y nunca se almacena en texto plano.
Clave maestra del usuario
La clave maestra del usuario es una clave criptográfica de 512 bits derivada de la contraseña maestra utilizando la función PBKDF2 (300.000 iteraciones, SHA-256). Se utiliza para:
- Cifrar la clave privada RSA del usuario (AES-256-CBC)
- Verificar la corrección de la contraseña maestra (mediante hash SHA-256)
Hash de la clave maestra
El hash de la clave maestra es un hash SHA-256 de la clave maestra del usuario. Se envía al servidor para verificar la corrección de la contraseña maestra introducida. El servidor compara el hash recibido con el valor almacenado.
Salt
El salt es una cadena aleatoria de 20 caracteres única para cada usuario. Se utiliza en el algoritmo PBKDF2 junto con la contraseña maestra para derivar la clave maestra. El salt se almacena en el servidor y se transmite al cliente durante la autenticación.
Claves RSA del usuario
Un par de claves RSA asimétricas de 2048 bits generadas mediante la API WebCrypto:
- Clave pública — almacenada en el servidor en texto plano. Se utiliza para cifrar las claves de bóveda al otorgar acceso.
- Clave privada — almacenada en el servidor en forma cifrada (cifrada con la clave maestra, AES-256-CBC). Se utiliza para descifrar las claves de bóveda.
Claves de cifrado
Clave de bóveda
La clave de bóveda es una clave simétrica aleatoria de 256 bits generada cuando se crea una bóveda. Se utiliza para cifrar las claves de registro dentro de la bóveda (AES-256-CBC). Para cada usuario con acceso a la bóveda, se crea una copia de la clave de bóveda cifrada con su clave pública RSA (RSA-OAEP).
Clave de registro
La clave de registro es una clave simétrica aleatoria de 256 bits generada individualmente para cada registro. Se utiliza para cifrar el contenido del registro (campo de contraseña, campos personalizados, TOTP) y las claves de archivos adjuntos (AES-256-CBC). La clave de registro se cifra con la clave de bóveda. Se genera automáticamente un vector de inicialización (IV) único para cada operación de cifrado.
Clave de archivo adjunto
La clave de archivo adjunto es una clave simétrica aleatoria de 256 bits generada para cada archivo. Se utiliza para cifrar el contenido binario del archivo (AES-256-CBC). La clave de archivo adjunto se cifra con la clave de registro.
Clave de cifrado del servidor
La clave del servidor es una clave simétrica de 256 bits almacenada en el servidor en un archivo. Se utiliza para el cifrado adicional de datos antes de guardarlos en la base de datos (AES-256-CFB mediante OpenSSL).
Tokens y sesiones
Access Token
El Access Token es un token de acceso de 256 bits (44 caracteres Base64). Se utiliza para autenticar las solicitudes a la API. Duración predeterminada: ~2,8 horas (10.000 segundos).
Refresh Token
El Refresh Token es un token de actualización de 256 bits. Se utiliza para obtener un nuevo Access Token sin necesidad de volver a introducir las credenciales. Duración predeterminada: 36 horas (129.600 segundos).
Local Storage Secret Code
El Local Storage Secret Code es un token aleatorio (~596 bits de entropía) generado por el servidor cuando se crea un usuario. Se utiliza para cifrar la clave maestra al guardarla en el localStorage del navegador (función «Recordar contraseña maestra»). El cifrado se realiza mediante AES-256-CBC.
Modos de cifrado
Cifrado del lado del cliente (CSE)
El cifrado del lado del cliente es un modo de funcionamiento en el que los datos se cifran en el navegador del usuario antes de enviarse al servidor. Implementa el principio Zero-Knowledge: el servidor no tiene acceso a los datos descifrados. Utiliza AES-256-CBC.
Cifrado del lado del servidor
El cifrado del lado del servidor es una capa adicional de protección en la que los datos se cifran en el servidor antes de escribirse en la base de datos. Está siempre activo, independientemente de la configuración del cifrado del lado del cliente. Utiliza AES-256-CFB mediante OpenSSL.
Zero-Knowledge
Zero-Knowledge es un principio en el que el servidor no dispone de información suficiente para descifrar los datos del usuario. Todas las operaciones criptográficas se realizan en el lado del cliente.
Cifrado de extremo a extremo (E2E)
El cifrado de extremo a extremo es un cifrado en el que los datos se cifran en el dispositivo del remitente y solo se descifran en el dispositivo del destinatario. En Passwork, se implementa mediante el intercambio de claves usando RSA-OAEP.
Compartir datos
Uso compartido interno
El uso compartido interno es la concesión de acceso a una bóveda o registro a otro usuario de Passwork. La clave se cifra con la clave pública RSA del destinatario (RSA-OAEP mediante WebCrypto).
Enlace externo
Un enlace externo es una forma de compartir un registro con alguien que no tiene cuenta de Passwork. Se crea una copia del registro, cifrada con una clave de enlace especial (AES-256-CBC). El token de enlace se incorpora en la URL.
Token de enlace
El token de enlace es una cadena aleatoria de 43 caracteres (~256 bits) utilizada para identificar el enlace externo y acceder a los datos cifrados.
Algoritmos criptográficos
PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) es un algoritmo para derivar una clave criptográfica a partir de una contraseña. Utiliza un salt y un gran número de iteraciones para proteger contra ataques de fuerza bruta.
Parámetros en Passwork:
- Cliente: 300.000 iteraciones, SHA-256, 512 bits
- Servidor: 600.000 iteraciones, SHA-512, 512 bits
AES-256-CFB
AES-256-CFB es un cifrado por bloques simétrico de 256 bits en modo CFB (Cipher Feedback). Se utiliza para el cifrado de datos del lado del servidor mediante OpenSSL.
AES-256-CBC
AES-256-CBC es un cifrado por bloques simétrico de 256 bits en modo CBC (Cipher Block Chaining). Se utiliza para el cifrado del lado del cliente.
RSA-OAEP
RSA-OAEP es un algoritmo de cifrado asimétrico con Optimal Asymmetric Encryption Padding. Passwork utiliza claves de 2048 bits con función hash SHA-256. Se implementa mediante la API WebCrypto.
CryptoJS AES
CryptoJS AES es una biblioteca para el cifrado AES en el cliente. Utiliza el modo CBC con relleno PKCS#7 y una función de derivación de clave integrada. La salida se codifica en Base32.
Abreviaturas
| Abreviatura | Significado | Descripción |
|---|---|---|
| CSE | Client-Side Encryption | Cifrado en el cliente |
| E2E | End-to-End Encryption | Cifrado de extremo a extremo |
| PBKDF2 | Password-Based Key Derivation Function 2 | Función de derivación de clave basada en contraseña |
| AES | Advanced Encryption Standard | Algoritmo de cifrado simétrico |
| RSA | Rivest–Shamir–Adleman | Algoritmo de cifrado asimétrico |
| OAEP | Optimal Asymmetric Encryption Padding | Esquema de relleno para RSA |
| CFB | Cipher Feedback | Modo de retroalimentación de cifrado |
| CBC | Cipher Block Chaining | Modo de encadenamiento de bloques de cifrado |
| IV | Initialization Vector | Vector de inicialización |
| TOTP | Time-based One-Time Password | Contraseña de un solo uso basada en tiempo |
| TTL | Time To Live | Tiempo de vida del token |