Última actualización: 14 de septiembre de 2026
Tus copias de seguridad te pertenecen, y deben seguir siéndolo incluso sin nosotros. El formato de los archivos .sigbak es público, y un pequeño programa libre permite descifrarlos en un ordenador con tu clave de copia. Si Sigillarium llegara a desaparecer, tus documentos seguirían siendo legibles.
pip install cryptographypython sigbak_decrypt.py copia.sigbak mis-documentos
El programa te pide la clave de copia por teclado (no aparece en pantalla) y extrae cada documento en la carpeta. Comprueba la integridad de cada uno: un documento dañado se indica y se omite, los demás se extraen. El programa solo lee el archivo y no envía nada por Internet.
Código de salida: 0 si el archivo está intacto, 1 si faltan documentos o el archivo está incompleto, 2 en caso de error (clave incorrecta, archivo no válido).
Esta sección está dirigida a quienes deseen verificar el formato o escribir su propio lector.
0123456789ABCDEFGHJKMNPQRSTVWXYZ, agrupados de 4 en 4: los 128 bits seguidos de 2 bits a cero dan 26 símbolos (bit más significativo primero), y luego 2 símbolos de control.c = (Σ (i+1) × s[i]) mod 1021 para i de 0 a 25, escrito en 10 bits (c >> 5, y luego c & 31).O como 0 e I, L como 1; rechazar si la longitud, un carácter, el control o los 2 bits de relleno son incorrectos.okm = HKDF-SHA256(clave, sal de la cabecera, "Sigillarium archive v1", 64) (RFC 5869)
clave_cifrado = okm[0..32]
clave_control = okm[32..64]
| Bytes | Contenido |
|---|---|
| 0–5 | SIGBAK (ASCII) |
| 6 | versión del formato: 1 |
| 7 | derivación: 1 = HKDF-SHA256 |
| 8–39 | sal aleatoria (32 bytes) |
| 40–55 | control de clave: HMAC-SHA256(clave_control, bytes 0–39), truncado a 16 bytes |
Tras la cabecera, hasta el final del archivo: tipo (1 byte) · longitud L del cifrado, etiqueta incluida (4 bytes, big-endian) · nonce (12 bytes) · AES-256-GCM (clave_cifrado), cifrado seguido de la etiqueta de 16 bytes.
Datos asociados del registro de índice n (0 para el primero): cabecera (56) ‖ n (4, big-endian) ‖ tipo (1) ‖ L (4, big-endian). Un registro desplazado, eliminado o tomado de otro archivo falla por tanto la autenticación.
| Tipo | Nombre | Contenido descifrado |
|---|---|---|
0x01 | INFO | JSON: {"createdAt": "<ISO 8601 UTC>"} |
0x02 | META | JSON: metadatos del documento |
0x03 | DATA | bytes del documento |
0x7F | END | JSON: {"entries": <número de documentos>} |
Secuencia: INFO, luego (META, DATA) para cada documento, luego END.
name, fileType (tipo MIME), createdAt, modifiedAt (o null), description (o null), tags, sha256 (de los bytes de DATA), size y metadata (opcional). Un lector ignora los campos desconocidos y nunca debe usar name tal cual como ruta de archivo.
archive_v1_sample.sigbak — 1078 bytes, SHA-256 01b1eb4ac4aca12d32f0a482d76ec5dc5ec1b2f90e64ad64fcc16b1b8c478dbb. Clave: 000G-40R4-0M30-E209-185G-R38E-1W73 (bytes 00 a 0F). Contiene photo.jpg (300 bytes) y un documento llamado ../note.txt, un nombre deliberadamente malicioso que un lector correcto no debe usar como ruta.