1. Cabecera Binaria Autenticada (22 bytes fijos, Big-Endian):
Bytes 0..3 (4B): Firma mágica "VLT1" (0x56 0x4C 0x54 0x31).
Byte 4 (1B): Versión del formato contenedor (0x01).
Byte 5 (1B): Identificador de Algoritmo:
1 = AES-256-GCM (AEAD con AAD vinculado a los 22 bytes de cabecera).
2 = AES-256-CBC + HMAC-SHA512 (Encrypt-then-MAC con subclaves HKDF separadas).
3 = RSA-OAEP-4096 (SHA-256) + AES-256-GCM (Híbrido con Clave Pública).
Byte 6 (1B): Flags (Bit 0 = Uso de Keyfile 2FA; Bit 1 = Lote multi-archivo).
Bytes 7..10 (4B, Uint32 BE): Iteraciones de PBKDF2-HMAC-SHA512 (0 en modo RSA).
Bytes 11..13 (3B): Reservados (0x000000), autenticados.
Bytes 14..21 (8B, BigUint64 BE): Marca de tiempo UTC de creación en milisegundos.
2. Derivación de Claves en Dos Etapas (KDF) y Claves Privadas:
- Si se incluye Keyfile, se calcula su
SHA-512 (64 bytes) y se concatena con prefijo de longitud de 32 bits antes de PBKDF2.
PBKDF2-HMAC-SHA512 con Salt aleatorio de 32 bytes (256 bits) genera 64 bytes de material maestro expandidos mediante HKDF-SHA256 con separación de dominios.
- Las claves privadas RSA-4096 pueden exportarse cifradas bajo el formato
PKV1 (PBKDF2-SHA512 + AES-256-GCM con AAD) en bloques ENCRYPTED PRIVATE KEY VLT1.
3. Manifiesto Interno Cifrado:
- Los nombres originales, tamaños, notas y hashes
SHA-256 individuales viajan dentro del bloque cifrado y se verifican automáticamente al extraer cada archivo.