Dernière mise à jour : 14 septembre 2026
Vos sauvegardes vous appartiennent, et doivent le rester même sans nous. Le format des archives .sigbak est public, et un petit programme libre permet de les déchiffrer sur un ordinateur, avec votre clé de sauvegarde. Si Sigillarium venait à disparaître, vos documents resteraient lisibles.
pip install cryptographypython sigbak_decrypt.py sauvegarde.sigbak mes-documents
Le programme vous demande votre clé de sauvegarde au clavier (elle n'apparaît pas à l'écran), puis extrait chaque document dans le dossier. Il vérifie l'intégrité de chacun : un document abîmé est signalé et sauté, les autres sont extraits. Le programme lit l'archive et n'envoie rien sur Internet.
Code de sortie : 0 si l'archive est intacte, 1 si des documents manquent ou si l'archive est incomplète, 2 en cas d'erreur (mauvaise clé, fichier invalide).
Cette section s'adresse aux personnes qui souhaitent vérifier le format ou écrire leur propre lecteur.
0123456789ABCDEFGHJKMNPQRSTVWXYZ, groupés par 4 : les 128 bits suivis de 2 bits nuls donnent 26 symboles (bit de poids fort en premier), puis 2 symboles de contrôle.c = (Σ (i+1) × s[i]) mod 1021 pour i de 0 à 25, écrit sur 10 bits (c >> 5, puis c & 31).O comme 0 et I, L comme 1 ; refuser si la longueur, un caractère, le contrôle ou les 2 bits de bourrage sont faux.okm = HKDF-SHA256(clé, sel de l'en-tête, "Sigillarium archive v1", 64) (RFC 5869)
clé_chiffrement = okm[0..32]
clé_contrôle = okm[32..64]
| Octets | Contenu |
|---|---|
| 0–5 | SIGBAK (ASCII) |
| 6 | version du format : 1 |
| 7 | dérivation : 1 = HKDF-SHA256 |
| 8–39 | sel aléatoire (32 octets) |
| 40–55 | contrôle de clé : HMAC-SHA256(clé_contrôle, octets 0–39), tronqué à 16 octets |
À la suite de l'en-tête, jusqu'à la fin du fichier : type (1 octet) · longueur L du chiffré, tag inclus (4 octets, gros-boutiste) · nonce (12 octets) · AES-256-GCM (clé_chiffrement), chiffré suivi du tag de 16 octets.
Données associées de l'enregistrement de rang n (0 pour le premier) : en-tête (56) ‖ n (4, gros-boutiste) ‖ type (1) ‖ L (4, gros-boutiste). Un enregistrement déplacé, retiré ou pris dans une autre archive échoue donc à l'authentification.
| Type | Nom | Contenu déchiffré |
|---|---|---|
0x01 | INFO | JSON : {"createdAt": "<ISO 8601 UTC>"} |
0x02 | META | JSON : métadonnées du document |
0x03 | DATA | octets du document |
0x7F | END | JSON : {"entries": <nombre de documents>} |
Séquence : INFO, puis (META, DATA) pour chaque document, puis END.
name, fileType (type MIME), createdAt, modifiedAt (ou null), description (ou null), tags, sha256 (des octets de DATA), size, et metadata (facultatif). Un lecteur ignore les champs inconnus, et ne doit jamais utiliser name tel quel comme chemin de fichier.
archive_v1_sample.sigbak — 1 078 octets, SHA-256 01b1eb4ac4aca12d32f0a482d76ec5dc5ec1b2f90e64ad64fcc16b1b8c478dbb. Clé : 000G-40R4-0M30-E209-185G-R38E-1W73 (octets 00 à 0F). Elle contient photo.jpg (300 octets) et un document nommé ../note.txt, un nom volontairement piégé qu'un lecteur correct ne doit pas utiliser comme chemin.