Chiffrement de fichier / texte
Le plaintext protégé commence par un octet de type d'enregistrement.
| Type | Valeur |
|---|---|
| Métadonnées | 0x01 |
| Données | 0x02 |
| Fin | 0x03 |
L'enregistrement n°0 contient les métadonnées. Aucun octet ne doit suivre l'enregistrement final.
Les deux formats conservent un en-tête public de 60 octets et la même base cryptographique. V2 ajoute la compression Zstandard et le support des dossiers.
L'en-tête complet participe aux données associées authentifiées de chaque enregistrement.
| Champ | Taille | V1 / V2 |
|---|---|---|
| Magic | 8 octets | GCRYPT01 / GCRYPT02 |
| Version | 2 | 1 / 2 |
| KDF ID | 1 | 1 = Argon2id |
| AEAD ID | 1 | 1 = XChaCha20-Poly1305 |
| Argon m_cost | 4 | KiB |
| Argon t_cost | 4 | passes |
| Argon p_cost | 4 | parallélisme |
| Chunk size | 4 | octets |
| Salt | 16 | aléatoire |
| Nonce prefix | 16 | aléatoire |
Le plaintext protégé commence par un octet de type d'enregistrement.
| Type | Valeur |
|---|---|
| Métadonnées | 0x01 |
| Données | 0x02 |
| Fin | 0x03 |
L'enregistrement n°0 contient les métadonnées. Aucun octet ne doit suivre l'enregistrement final.
Les métadonnées chiffrées ajoutent le type de source, l'algorithme de compression et son niveau. Un dossier est sérialisé dans un flux TAR interne avant compression.
clé_256 = Argon2id(
mot_de_passe,
salt,
paramètres_en-tête
)
nonce[0..16] = nonce_prefix
nonce[16..24] = record_index u64 LE
AAD =
header_60_bytes
||
record_index_u64_le
Cela lie cryptographiquement chaque enregistrement à ses paramètres publics et à sa position.
Le mode CHIFFRER de V0.1.0 continue de produire V1 et COMPRESSER + CHIFFRER continue de produire V2. Un lecteur futur doit examiner Magic + Version avant toute dérivation de clé.