Aller au contenu principal

Modèle de sécurité

Modèle de menace

Zone de confiance
Votre navigateur
Crypto
Chiffrement
Hachage
Dérivation de clé
Données utilisateur
Les données restent locales
Entrée : texte, mots de passe, fichiers
Mots de passe
Fichiers
Zone externe
Serveur
Aucun accès à ce que vous saisissez, collez ou téléchargez
Réseau
Vos saisies ne sont pas transmises
Tiers
Aucun partage de données
Hypothèses de sécurité
  • • Votre appareil est sécurisé
  • • Navigateur moderne avec API Web Crypto
  • • Mots de passe robustes
Limites
  • • Un appareil compromis = un risque
  • • Les extensions de navigateur disposant de permissions étendues peuvent accéder au contenu de la page
  • • Nous ne pouvons pas récupérer les mots de passe perdus – le chiffrement est mathématiquement irréversible

Propriétés de sécurité et limites explicites de notre architecture côté client.

Hypothèses de confiance

  • Appareil exempt de logiciels malveillants
  • Navigateur standard et à jour
  • Aucune extension compromise
  • Réseau sécurisé (HTTPS)
  • Compréhension des limites de la cryptographie

Limites explicites

  • Ne protège pas contre les menaces locales telles que les keyloggers, les moniteurs de presse-papiers ou les logiciels d'enregistrement d'écran.
  • Ne peut pas empêcher le partage accidentel d'une sortie sensible (par exemple, copier un jeton chiffré dans une application de chat non fiable).
  • Suppose une utilisation correcte des paramètres cryptographiques. La sécurité du chiffrement AES-GCM, par exemple, repose sur un mot de passe fort et unique fourni par l'utilisateur.
  • Ne fournit pas d'authentification – toute personne disposant du mot de passe peut déchiffrer les données.
  • Ne protège pas contre les attaques par rejeu si les données chiffrées sont interceptées et re-soumises.

Cycle de vie de la clé et format du conteneur

Cette section documente les paramètres réellement utilisés par l'outil. Ils proviennent de ENCRYPT_CONFIG dans le dépôt : une modification y change à la fois l'interface, le worker et l'en-tête du conteneur.

  • Dérivation de clé : PBKDF2-HMAC-SHA-256, 100 000 itérations, clé de 32 octets. Un sel de 16 octets est généré à chaque chiffrement avec crypto.getRandomValues().
  • Chiffrement : AES-256-GCM avec un IV de 12 octets et une étiquette d'authentification de 16 octets. La clé dérivée reste dans le worker du navigateur et n'est jamais enregistrée.
  • Sortie texte : base64 ou hexadécimal du sel, de l'IV et du chiffré. Le sel et l'IV sont aussi affichés séparément, pour déchiffrer sans deviner les paramètres.
  • Sortie fichier : en-tête ZVE1 de 40 octets (magic, version, nombre d'itérations, sel, taille de bloc de 1 Mio, nombre de blocs, taille totale), puis pour chaque bloc un IV de 12 octets et le chiffré avec sa propre étiquette.
  • L'index du bloc est lié comme AAD : un bloc réordonné ou remplacé est rejeté par GCM au lieu de renvoyer un clair erroné.

Compatibilité et limites

  • Les fichiers produits avant ce conteneur (sel | IV | chiffré+étiquette, sans magic) sont toujours déchiffrés automatiquement.
  • Limites : 50 Mo par fichier, 16 Mio par bloc, 1 048 576 blocs. Les entrées plus volumineuses sont refusées avant tout appel cryptographique.
  • Rien n'est conservé : fermer l'onglet efface la clé dérivée du mot de passe ; seul le cache du service worker pour la coque de l'application subsiste (voir la note de stockage).