Ultimo aggiornamento: 14 settembre 2026
I tuoi backup ti appartengono, e devono continuare ad appartenerti anche senza di noi. Il formato degli archivi .sigbak è pubblico, e un piccolo programma libero permette di decifrarli su un computer, con la tua chiave di backup. Se Sigillarium dovesse scomparire, i tuoi documenti resterebbero leggibili.
pip install cryptographypython sigbak_decrypt.py backup.sigbak miei-documenti
Il programma ti chiede la chiave di backup da tastiera (non compare a schermo), poi estrae ogni documento nella cartella. Ne verifica l'integrità: un documento danneggiato viene segnalato e saltato, gli altri vengono estratti. Il programma legge l'archivio e non invia nulla su Internet.
Codice di uscita: 0 se l'archivio è integro, 1 se mancano documenti o se l'archivio è incompleto, 2 in caso di errore (chiave errata, file non valido).
Questa sezione è rivolta a chi vuole verificare il formato o scrivere un proprio lettore.
0123456789ABCDEFGHJKMNPQRSTVWXYZ, raggruppati a 4: i 128 bit seguiti da 2 bit nulli danno 26 simboli (bit più significativo per primo), poi 2 simboli di controllo.c = (Σ (i+1) × s[i]) mod 1021 per i da 0 a 25, scritto su 10 bit (c >> 5, poi c & 31).O come 0 e I, L come 1; rifiutare se la lunghezza, un carattere, il controllo o i 2 bit di riempimento sono errati.okm = HKDF-SHA256(chiave, sale dell'intestazione, "Sigillarium archive v1", 64) (RFC 5869)
chiave_cifratura = okm[0..32]
chiave_controllo = okm[32..64]
| Byte | Contenuto |
|---|---|
| 0–5 | SIGBAK (ASCII) |
| 6 | versione del formato: 1 |
| 7 | derivazione: 1 = HKDF-SHA256 |
| 8–39 | salt casuale (32 byte) |
| 40–55 | controllo della chiave: HMAC-SHA256(chiave_controllo, byte 0–39), troncato a 16 byte |
Dopo l'intestazione, fino alla fine del file: tipo (1 byte) · lunghezza L del testo cifrato, tag incluso (4 byte, big-endian) · nonce (12 byte) · AES-256-GCM (chiave_cifratura), testo cifrato seguito dal tag di 16 byte.
Dati associati del record di posizione n (0 per il primo): intestazione (56) ‖ n (4, big-endian) ‖ tipo (1) ‖ L (4, big-endian). Un record spostato, rimosso o preso da un altro archivio non supera quindi l'autenticazione.
| Tipo | Nome | Contenuto decifrato |
|---|---|---|
0x01 | INFO | JSON: {"createdAt": "<ISO 8601 UTC>"} |
0x02 | META | JSON: metadati del documento |
0x03 | DATA | byte del documento |
0x7F | END | JSON: {"entries": <numero di documenti>} |
Sequenza: INFO, poi (META, DATA) per ogni documento, poi END.
name, fileType (tipo MIME), createdAt, modifiedAt (o null), description (o null), tags, sha256 (dei byte di DATA), size e metadata (facoltativo). Un lettore ignora i campi sconosciuti e non deve mai usare name così com'è come percorso di file.
archive_v1_sample.sigbak — 1.078 byte, SHA-256 01b1eb4ac4aca12d32f0a482d76ec5dc5ec1b2f90e64ad64fcc16b1b8c478dbb. Chiave: 000G-40R4-0M30-E209-185G-R38E-1W73 (byte da 00 a 0F). Contiene photo.jpg (300 byte) e un documento chiamato ../note.txt, un nome volutamente insidioso che un lettore corretto non deve usare come percorso.