Spécification technique

Formats .gcrypt V1 et V2.

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.

En-tête public

60 octets authentifiés.

L'en-tête complet participe aux données associées authentifiées de chaque enregistrement.

ChampTailleV1 / V2
Magic8 octetsGCRYPT01 / GCRYPT02
Version21 / 2
KDF ID11 = Argon2id
AEAD ID11 = XChaCha20-Poly1305
Argon m_cost4KiB
Argon t_cost4passes
Argon p_cost4parallélisme
Chunk size4octets
Salt16aléatoire
Nonce prefix16aléatoire
Format V1

Chiffrement de fichier / texte

Le plaintext protégé commence par un octet de type d'enregistrement.

TypeValeur
Métadonnées0x01
Données0x02
Fin0x03

L'enregistrement n°0 contient les métadonnées. Aucun octet ne doit suivre l'enregistrement final.

Format V2

Compression + dossiers

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.

  • Compression Zstandard.
  • Checksum Zstandard activé.
  • Symlinks refusés à la création.
  • Liens, périphériques, FIFO et types spéciaux refusés à l'extraction.
  • Chemins absolus et composants .. refusés.

Clé et nonce

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

AAD =
  header_60_bytes
  ||
  record_index_u64_le

Cela lie cryptographiquement chaque enregistrement à ses paramètres publics et à sa position.

Compatibilité

Pas de modification silencieuse du format.

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é.