Última atualização: 14 de setembro de 2026
Seus backups pertencem a você e devem continuar assim, mesmo sem nós. O formato dos arquivos .sigbak é público, e um pequeno programa livre permite descriptografá-los em um computador, com sua chave de backup. Se o Sigillarium deixasse de existir, seus documentos continuariam legíveis.
pip install cryptographypython sigbak_decrypt.py backup.sigbak meus-documentos
O programa pede sua chave de backup pelo teclado (ela não aparece na tela) e depois extrai cada documento para a pasta. Ele verifica a integridade de cada um: um documento danificado é sinalizado e ignorado, e os demais são extraídos. O programa lê o arquivo e não envia nada pela internet.
Código de saída: 0 se o arquivo está íntegro, 1 se faltam documentos ou se o arquivo está incompleto, 2 em caso de erro (chave incorreta, arquivo inválido).
Esta seção é destinada a quem deseja verificar o formato ou escrever seu próprio leitor.
0123456789ABCDEFGHJKMNPQRSTVWXYZ, agrupados de 4 em 4: os 128 bits seguidos de 2 bits nulos dão 26 símbolos (bit mais significativo primeiro), depois 2 símbolos de verificação.c = (Σ (i+1) × s[i]) mod 1021 para i de 0 a 25, escrito em 10 bits (c >> 5, depois c & 31).O como 0 e I, L como 1; recusar se o comprimento, um caractere, a verificação ou os 2 bits de preenchimento estiverem errados.okm = HKDF-SHA256(chave, sal do cabeçalho, "Sigillarium archive v1", 64) (RFC 5869)
chave_criptografia = okm[0..32]
chave_controle = okm[32..64]
| Bytes | Conteúdo |
|---|---|
| 0–5 | SIGBAK (ASCII) |
| 6 | versão do formato: 1 |
| 7 | derivação: 1 = HKDF-SHA256 |
| 8–39 | sal aleatório (32 bytes) |
| 40–55 | verificação da chave: HMAC-SHA256(chave_controle, bytes 0–39), truncado em 16 bytes |
Após o cabeçalho, até o fim do arquivo: tipo (1 byte) · comprimento L do texto cifrado, tag incluída (4 bytes, big-endian) · nonce (12 bytes) · AES-256-GCM (chave_criptografia), texto cifrado seguido da tag de 16 bytes.
Dados associados do registro de posição n (0 para o primeiro): cabeçalho (56) ‖ n (4, big-endian) ‖ tipo (1) ‖ L (4, big-endian). Um registro movido, removido ou tirado de outro arquivo falha, portanto, na autenticação.
| Tipo | Nome | Conteúdo descriptografado |
|---|---|---|
0x01 | INFO | JSON: {"createdAt": "<ISO 8601 UTC>"} |
0x02 | META | JSON: metadados do documento |
0x03 | DATA | bytes do documento |
0x7F | END | JSON: {"entries": <número de documentos>} |
Sequência: INFO, depois (META, DATA) para cada documento, depois END.
name, fileType (tipo MIME), createdAt, modifiedAt (ou null), description (ou null), tags, sha256 (dos bytes de DATA), size e metadata (opcional). Um leitor ignora os campos desconhecidos e nunca deve usar name como está como caminho de arquivo.
archive_v1_sample.sigbak — 1.078 bytes, SHA-256 01b1eb4ac4aca12d32f0a482d76ec5dc5ec1b2f90e64ad64fcc16b1b8c478dbb. Chave: 000G-40R4-0M30-E209-185G-R38E-1W73 (bytes 00 a 0F). Ele contém photo.jpg (300 bytes) e um documento chamado ../note.txt, um nome propositalmente armadilhado que um leitor correto não deve usar como caminho.