Architecture cryptographique

Vos données,
illisibles même pour nous.

leggit applique les standards modernes du chiffrement de bout en bout. Voici, en clair, comment cela fonctionne — et pourquoi cela vous protège.

Le principe : zero-knowledge

Le "zero-knowledge" signifie littéralement : leggit n’a aucune connaissance du contenu de vos coffres. Vos données sont chiffrées sur votre appareil avant d’être envoyées, et la clé qui permet de les déchiffrer ne quitte jamais votre poste, ni le poste de vos destinataires.

Concrètement, même si nos serveurs étaient saisis ou compromis, le contenu resterait illisible — un fichier chiffré sans clé, c’est du bruit aléatoire.

Depuis l'évolution E2EE (end-to-end encryption) de la plateforme, ce principe n'est plus une promesse : c'est une garantie technique vérifiable. Pour vos coffres personnels, le chiffrement et le déchiffrement s'effectuent dans votre navigateur, à l'intérieur d'un Web Worker isolé qui détient seul vos clés. Le serveur leggit ne reçoit jamais que des blobs chiffrés opaques.

🔒 Comment c'est vraiment fait : la bibliothèque cryptographique libsodium-wrappers est servie depuis nos serveurs (pas de CDN externe → anti-supply-chain). Chaque script JavaScript critique est livré avec un hash SRI (Subresource Integrity) : le navigateur refuse de l'exécuter si le code a été altéré en transit. Les hashes sont publiés sur notre page transparence E2EE ; vous pouvez les recalculer localement avec openssl pour confirmer leur intégrité.
📋 Mises à jour récentes (2026-05-18) — Périmètre E2EE étendu

Depuis la version 1.0 de l'attestation, plusieurs modules ont été renforcés ou ajoutés au périmètre du chiffrement bout-en-bout (E2EE) :

  • Mode Prudent crypto-wallets — La table de substitution (photo scannée associée à un wallet) est désormais chiffrée dans votre navigateur AVANT envoi via le flux chunked E2EE (libsodium secretstream_xchacha20, header + chunks séparés). leggit ne voit jamais l'image en clair, même temporairement.
  • Workflow dual-device (PC + téléphone) — Vous pouvez désormais saisir les mots substitués sur votre PC et scanner la table sur votre téléphone, sans qu'aucun appareil n'ait simultanément les deux secrets. Le pairing utilise un token long (256 bits, stocké en SHA-256 côté serveur) + un code court à 6 caractères (rate-limité 10 tentatives / 15 min).
  • Révélation Prudent en 3 modes — Lors de la consultation d'un wallet Prudent, vous choisissez : « Mots seuls », « Table seule » (la seed n'est pas déchiffrée sur l'écran qui affiche la table), ou « Les deux ». Défense en profondeur cohérente avec le modèle dual-device.
  • Référentiel des relations administrable — Les types de relations (Conjoint, Enfant, Parent, etc.) sont désormais centralisés dans une table administrée, avec leur miroir réciproque et un flag « Ayant droit par défaut » pour suggérer la propagation.

Voir l'attestation v2.0 complète — ou la version technique détaillée.

Chiffrement par enveloppe

Chaque élément (texte, fichier, message) est chiffré avec une clé aléatoire unique appelée Data Encryption Key (DEK). Cette DEK est elle-même chiffrée avec votre clé maître, dérivée de votre mot de passe via Argon2id (un algorithme coûteux qui résiste aux attaques massives).

Avantage : le jour où vous changez de mot de passe, on ne re-chiffre que les DEK, pas tous vos fichiers.

Clés publiques X25519 pour les destinataires

Chaque destinataire dispose d’un couple clé publique / clé privée généré sur son appareil. Pour transmettre une donnée à Alice, votre coffre chiffre la DEK avec la clé publique d’Alice : seule la clé privée d’Alice peut la déchiffrer.

X25519 est l’algorithme utilisé par WireGuard, Signal, et toutes les solutions modernes de messagerie chiffrée.

Partage de secret de Shamir

Pour la récupération de votre compte ou la libération post-mortem, leggit découpe une clé critique en plusieurs morceaux mathématiquement liés. Par exemple en 5 morceaux, dont 3 sont nécessaires pour reconstituer le secret.

Aucun morceau seul ne donne d’information : il faut que le quorum soit réuni — par exemple 3 tiers de confiance sur 5 — pour déclencher le déchiffrement. Personne ne peut agir seul.

AEAD : intégrité et confidentialité

Tous les chiffrements appliqués utilisent des algorithmes AEAD (XChaCha20-Poly1305). Cela signifie qu’un attaquant ne peut ni lire le contenu, ni modifier subrepticement un octet du fichier sans que cela soit détecté au déchiffrement.

Où sont stockées les clés ?

  • Votre clé maître est dérivée de votre mot de passe à chaque connexion via Argon2id. Elle est ensuite remise directement à un Web Worker isolé dans votre navigateur, où elle réside en RAM pendant votre session. Elle n'est jamais persistée en clair, et le code JavaScript principal (DOM, scripts inline) ne peut pas y accéder — ce qui limite l'impact d'une éventuelle XSS.
  • Les clés privées X25519 de vos destinataires sont chiffrées avec leur propre mot de passe et stockées dans leur compte.
  • Les morceaux de Shamir sont détenus par les tiers de confiance que vous avez désignés, jamais accessibles à leggit en clair.
  • Au logout ou à la fermeture de l'onglet, le Worker est terminé : toutes les clés en RAM sont effacées (memzero) immédiatement.

Vérifiez par vous-même

Vous n'avez pas à nous croire sur parole : la chaîne cryptographique navigateur est conçue pour être auditable.

  • Ouvrez les outils de développement de votre navigateur (F12) → onglet Réseau. Quand vous écrivez ou lisez un item, vous verrez transiter des blobs base64 (cipher_blob_b64, my_wrap) — jamais le texte clair.
  • Consultez notre page transparence E2EE : elle expose en temps réel les hashes SRI de chaque script crypto avec la commande pour les recalculer localement.
  • Inspectez le code source des scripts (clic droit → "Afficher le code source"). Tout est lisible, sans obfuscation, et identique au code que nous publions publiquement.

Notre modèle de menace est documenté honnêtement sur la page transparence — y compris ce que le E2EE ne protège pas (compromission de votre navigateur par un malware local, par exemple).

Périmètre actuel du E2EE

Tout n'est pas encore en E2EE pur navigateur — voici l'état réel de la couverture aujourd'hui :

  • Coffres personnels (textes, mots de passe, fichiers et vidéos jusqu'à 100 Mo) : E2EE navigateur complet. Écriture, lecture, ajout de destinataire (avec re-authentification), migration progressive des anciens items, et export RGPD : tout passe par votre navigateur. Le serveur n'a accès qu'à des cipher blobs opaques.
  • 🔘 Coffres familiaux (partagés entre plusieurs membres) : chiffrement serveur-side avec partage multi-clés (Shamir + X25519 par membre). Le serveur a accès au contenu pendant les sessions actives pour assurer le partage entre membres. Le passage au E2EE navigateur est sur notre roadmap.
  • 🔘 Crypto-wallets (images de tables de substitution) : chiffrement serveur-side libsodium secretstream. Passage E2EE prévu.
  • ⚙️ Messages programmés post-mortem par email : légitimement chiffrement serveur-side. Le serveur DOIT pouvoir déchiffrer le jour J pour envoyer l'email au destinataire — un email pur E2EE serait impossible à délivrer.
  • ⚙️ Pipeline de libération post-mortem (héritage) : combinaison Shamir + déchiffrement session-side après quorum. Pour les coffres personnels créés en E2EE, le déchiffrement final est fait dans le navigateur du destinataire.

Roadmap publique : extension navigateur officielle et client desktop signé pour éliminer la dépendance au JavaScript servi par nos serveurs (suppression du risque résiduel "JS compromis activement"). Travaux en préparation.

Audit et transparence

Toute opération cryptographique est journalisée dans un audit horodaté. Vous pouvez consulter à tout moment l’historique d’accès à votre coffre : qui a vu quoi, quand, depuis où. Pour les coffres personnels E2EE, les détails sensibles (titres, previews) sont chiffrés avec votre clé maître dans le journal lui-même — seul vous pouvez les relire via votre navigateur.

Récupération de mot de passe sans leggit

Si vous oubliez votre mot de passe, vous ne pouvez pas faire un classique « clic ici pour réinitialiser » : leggit n'a pas accès à votre clé maître. Vous avez désigné à l'inscription au moins 2 tiers de récupération.

À l'occasion d'un oubli de mot de passe, vos tiers reçoivent une notification, valident la demande, et un mécanisme cryptographique appelé Shamir Secret Sharing reconstitue alors une clé qui vous permet de définir un nouveau mot de passe. leggit n'apprend rien dans le processus.

Attention : si vous perdez votre mot de passe ET que vos tiers de récupération deviennent indisponibles (décès, perte de contact, refus), vos données sont définitivement perdues. Désignez plus de tiers que strictement nécessaire et privilégiez des personnes géographiquement réparties.

Double authentification (2FA)

En plus de votre mot de passe, vous pouvez activer une seconde couche de protection : un code à 6 chiffres généré par une application d'authentification standard (Google Authenticator, Authy, 1Password) sur votre téléphone.

Avec la 2FA active, même si quelqu'un connaît votre mot de passe (par phishing, fuite ou observation), il ne pourra pas se connecter sans votre téléphone. Fortement recommandé pour les coffres contenant des crypto-wallets ou des données très sensibles.

Procédure judiciaire / réquisition

leggit peut recevoir une réquisition judiciaire d'un magistrat ou d'un service de l'État. Que peut-on remettre ? Uniquement ce dont leggit dispose : les blobs chiffrés, les métadonnées, l'historique de connexion, l'identité du compte. Pas le contenu en clair, parce que nous ne l'avons jamais.

Aucune mise en place de « porte dérobée » technique pour permettre un déchiffrement à la demande. La cryptographie est mathématiquement étanche. Si la justice exige un contenu, elle doit passer par les destinataires ou les tiers de confiance, qui restent libres de coopérer ou non.

Continuité du service

Que se passe-t-il si leggit met la clé sous la porte ? Nous nous engageons sur trois points :

  • Préavis minimum de 6 mois avant cessation effective d'activité.
  • Export complet de chaque coffre fourni à chaque utilisateur, dans un format ouvert et lisible (texte clair + fichiers).
  • Transmission du code source, de la documentation technique et des bases de données chiffrées à un tiers de confiance désigné, avec mécanisme d'escrow pour qu'un repreneur puisse, si possible, prendre la suite.

Conformité RGPD

leggit respecte le Règlement Général sur la Protection des Données (RGPD) et la loi française Informatique & Libertés. Vous avez à tout moment le droit d'accéder à vos données, de les rectifier, de les exporter, et de les effacer définitivement.

Pour la transmission post-mortem, leggit s'inscrit dans le cadre de la loi République Numérique 2016 (art. 84-86 du Code civil) qui autorise l'expression et l'exécution de directives numériques après le décès. Le mandat post-mortem signé via DocuSeal a valeur juridique probante.