Architecture de sécurité · dernière mise à jour le 16 juin 2026

Comment Farewell protège vos données, précisément.

Voici les algorithmes, paramètres et le format sur disque exacts qu'utilise Farewell.

Principes de conception

Chiffrement au repos

Tout le contenu du coffre est scellé avec AES-256-GCM-SIV, un chiffrement authentifié (AEAD). GCM-SIV est préféré à l'AES-GCM simple pour sa résistance à la réutilisation de nonce : même si un nonce venait à être réutilisé, cela ne divulgue pas catastrophiquement la clé ni les relations entre textes clairs comme le ferait GCM.

ChiffrementAES-256-GCM-SIV (RFC 8452)
Taille de clé256 bits
Nonce96 bits (12 octets)
Étiquette d'authentification128 bits (16 octets)
Données associéesliées à chaque enregistrement (liées à la position, empêchent le réordonnancement)

Le contenu des fichiers est découpé en blocs de 64 Kio ; chaque bloc est chiffré indépendamment avec sa propre clé dérivée de la clé maîtresse via BLAKE3, de sorte qu'un accès aléatoire ne nécessite jamais de déchiffrer tout le coffre et que les blocs ne peuvent pas être échangés entre positions.

Dérivation de clé (phrase secrète)

Votre phrase secrète est étirée en une clé avec Argon2id — la KDF à coût mémoire recommandée pour le hachage de mots de passe — ce qui rend les attaques par devinette hors ligne ruineusement coûteuses.

AlgorithmeArgon2id, version 1.3 (0x13)
Coût mémoire1 Gio (1 048 576 Kio)
Itérations (t)4
Parallélisme (p)4 voies
Sortie32 octets (clé de 256 bits)
Sel32 octets aléatoires, uniques par coffre
Coût≈ 2 s sur Apple Silicon (M2)

Les coffres à clé matérielle utilisent volontairement une KDF plus légère. Quand un coffre est lié à une clé FIDO2, c'est le secret matériel de la clé — et non la phrase secrète — qui porte la résistance au forçage brut : un fichier copié est alors incassable sans la clé physique, quel que soit le coût de la KDF. Le profil choisi n'est pas stocké sur le disque (ce serait une empreinte) ; à l'ouverture, Farewell essaie simplement les candidats dans l'ordre.

Hachage & sous-clés

BLAKE3 (256 bits) est utilisé pour le hachage d'intégrité, comme MAC à clé, et pour dériver les sous-clés par bloc à partir de la clé maîtresse via son mécanisme de contexte derive_key.

Posture post-quantique

Votre contenu est protégé par une clé symétrique de 256 bits, qui reste très au-delà de la portée des attaques quantiques prévisibles. Il est scellé avec AES-256-GCM-SIV (256 bits) ; la meilleure attaque quantique connue (Grover) ne la ramène qu'à ~128 bits de sécurité effective — hors de portée. Et comme un coffre local se déverrouille symétriquement à partir de votre phrase secrète (sans étape à clé publique), il n'y a rien que l'algorithme de Shor puisse attaquer.

L'attestation d'intégrité survit indépendamment de votre phrase secrète, mais pas la clé de signature.

Pour une défense en profondeur, chaque coffre est estampillé à la création par une signature ML-DSA-87 à usage unique (NIST FIPS 204, le standard de signature post-quantique) sur ses métadonnées fixes (version du format, capacité, sel et clé de vérification).

« Où est la clé de signature privée ? » Nulle part — par conception. La clé de signature est éphémère : une paire de clés fraîche est générée à la création, utilisée une seule fois pour signer, puis la clé secrète est effacée de la mémoire immédiatement. Elle n'est jamais écrite sur le disque, jamais réutilisée, et ne subsiste nulle part ensuite — il n'y a aucune clé de signature à voler, à fuiter ou que l'on pourrait nous contraindre à produire. Seules la clé de vérification (publique par nature) et la signature subsistent, et elles vivent à l'intérieur des métadonnées chiffrées par l'AEAD.

La confidentialité et l'authenticité du coffre reposent sur l'AEAD plus votre phrase secrète ou clé matérielle : les métadonnées ne peuvent être lues ni modifiées sans elles. L'estampille ML-DSA-87 vient par-dessus, en tant que contrôle d'intégrité indépendant et diversifié sur le plan algorithmique, et fournit une empreinte stable par coffre (un hachage de la clé de vérification) que vous pouvez enregistrer et revérifier.

« Si la clé de vérification est livrée dans le blob même qu'elle signe, à quoi sert la signature ? » Une fois qu'un attaquant possède la clé du coffre, la confidentialité et l'intégrité sont déjà compromises ; la signature n'est pas censée défendre contre ce scénario, nous ne prétendons donc pas qu'elle ajoute une authenticité vis-à-vis de tiers (c'est l'AEAD + votre phrase secrète qui le font). Sa valeur honnête est plus étroite et triple : (1) la diversité algorithmique — un contrôle post-quantique indépendant sur les métadonnées qui détecterait une faille de la chaîne AES-GCM-SIV que l'étiquette GCM elle-même aurait manquée ; (2) une empreinte stable et vérifiable du coffre ; (3) un emplacement compatible avec l'avenir — le même champ est conçu pour accueillir un signataire non éphémère (une clé liée à une release ou à un appareil) dans une version ultérieure, ce qui ajouterait une authenticité vis-à-vis de tiers, sans rupture de format. La forme éphémère d'aujourd'hui est cette mécanique dans son cas le plus simple.

Chiffrement du contenuAES-256-GCM-SIV — 256 bits, résistant à Grover
Signature d'intégritéML-DSA-87 (FIPS 204), à usage unique par coffre
Clé de signatureéphémère — générée à la création, puis détruite
Clé de vérification / signature2592 o / 4627 o (stockées dans les métadonnées chiffrées)
Implémentationlibcrux (formellement vérifiée)

Format du coffre (v6)

Un coffre est un fichier unique à disposition fixe. Hormis le sel aléatoire de tête, chaque octet est du texte chiffré ou du remplissage aléatoire — il n'y a aucun en-tête ni marqueur qui l'identifierait comme un coffre Farewell.

# disposition sur disque — rien en clair sauf le sel
[0      .. 32)        sel             32 octets, aléatoire uniforme (en clair)
[32     .. 4128)      slot            4096 octets — clé maîtresse emballée (AEAD),
                                      ou remplissage aléatoire (déni plausible)
[4128   .. +blob)     métadonnées     blob AEAD : nombre de blocs + l'attestation
                                      ML-DSA-87 à usage unique
[..     .. EOF)       blocs           64 Kio de texte clair chacun, stockés en
                                      nonce 12 o + texte chiffré + 4 + étiquette 16 o
Version du formatv6 (0x0006) — non écrite en clair
Clé maîtresse256 bits, emballée (AEAD) dans le slot
Clés matériellesjusqu'à 3 clés FIDO2 par coffre (n'importe laquelle l'ouvre)
Texte clair par bloc65 536 octets (64 Kio)
Effacement automatiqueaucun — voir ci-dessous

Il n'y a délibérément aucune fonction d'« effacement après N échecs » : un compteur mis à jour à chaque mauvaise phrase secrète devrait vivre en dehors du chiffrement gardé par la phrase secrète, rendant le fichier détectable — incompatible avec le déni au niveau de l'octet, et inutile face à un adversaire qui a d'abord imagé le disque. La résistance aux devinettes hors ligne repose plutôt sur Argon2id + l'entropie de la phrase secrète (et la clé matérielle optionnelle).

Hygiène des clés en mémoire

Les clés n'existent en RAM que pendant qu'un coffre est ouvert. Farewell borne et nettoie cette exposition avec les défenses standard — et est honnête sur la limite au-delà de laquelle aucun programme en espace utilisateur ne peut aller.

Clé maîtresse activeconservée dans un tampon épinglé par mlock (SecureBuffer)
Anti-swapmlock(2) — les pages de clé ne sont pas écrites en swap (au mieux)
Au verrouillage / à la libérationmise à zéro : clé maîtresse, clés dérivées, clés AEAD
Secrets transitoiresphrase secrète & clés d'emballage effacées immédiatement après usage
Primitive d'effacementcrate zeroize — écritures volatiles + barrière du compilateur

« Comment vérifiez-vous que l'effacement est effectif ? » La partie qui peut être garantie l'est au niveau du compilateur : la crate zeroize écrase les secrets par des écritures volatiles plus une barrière du compilateur, de sorte que l'optimiseur ne peut pas discrètement supprimer la mise à zéro comme il le peut avec un memset naïf sur une mémoire sur le point d'être libérée. Cette crate est largement utilisée et auditée, et vous pouvez le confirmer en lisant le code source. Les clés sont aussi mlockées, afin de ne jamais atteindre le swap où elles survivraient au processus. Ce qu'aucun programme en espace utilisateur ne peut pleinement garantir, c'est le reste de la machine — une image de veille prolongée, des copies de pages par le noyau, les registres du CPU et les débordements de pile, ou la phrase secrète lorsqu'elle transite brièvement par le champ texte de l'OS et la pile USB. Nous atténuons (mlock contre le swap, mise à zéro à la libération, verrouillage automatique pour réduire la fenêtre) et nous divulguons la limite plutôt que de revendiquer une perfection que personne ne peut offrir.

Et nous le testons, en CI. Un test de non-régression initialise un tampon de clé avec une sentinelle connue, le libère, et vérifie que la zone mémoire sous-jacente est ensuite entièrement à zéro. Pour le faire de façon saine — lire de la mémoire libérée serait en soi un comportement indéfini — l'instantané est pris depuis l'intérieur du dealloc de l'allocateur, tant que la mémoire est encore vivante, et il surveille une allocation précise plutôt que de balayer tout le tas (donc aucun faux positif dû à des copies transitoires). Retirer l'effacement fait échouer le test immédiatement, de sorte qu'un changement futur ne peut pas le supprimer en silence. Cela protège la partie réellement à risque — une copie de clé s'échappant du tampon, ou un effacement manquant — pas les limites au niveau de l'OS ci-dessus, qu'aucun test ne peut atteindre.

Ce que Farewell ne fait délibérément pas

Modèle de menace

Le chiffrement n'est utile que face aux menaces qu'il traite réellement. Voici le périmètre honnête — ce que Farewell est conçu pour déjouer, et ce qu'il ne peut pas.

Ce qu'il protège

Ce qu'il ne protège pas

En résumé : Farewell protège le fichier, pas la machine en cours d'utilisation. Gardez le coffre verrouillé quand vous ne l'utilisez pas, et exécutez-le sur un appareil de confiance.

Des questions, ou envie de scruter la cryptographie ? Écrivez à security@farewell.pro.