Aller au contenu principal

Protocole de chiffrement

Dernière mise à jour : 12 mars 2026 · Pli Scellé

Ce document décrit le protocole de chiffrement de bout en bout (E2E) implémenté par Pli Scellé. Toutes les opérations cryptographiques utilisent l'API Web Crypto du W3C - aucune bibliothèque cryptographique externe n'est utilisée.

1. Primitives cryptographiques

Primitives cryptographiques utilisées par Pli Scellé
FonctionAlgorithmeParamètres
Chiffrement symétriqueAES-256-GCMClé 256 bits, IV 96 bits, tag d'authentification intégré
Dérivation de clé (mots de passe)PBKDF2-SHA-256600 000 itérations, salt aléatoire, sortie 256 bits
Génération de clé (fichiers)AES-256 aléatoireCSPRNG navigateur via Web Crypto API
Génération aléatoireCSPRNGSource d'entropie du système d'exploitation
Hachage mot de passe (contrôle d'accès)argon2idCôté serveur, avec salt aléatoire cryptographique

2. Architecture Zero-Knowledge

En mode E2E, le serveur n'a jamais accès à la clé de chiffrement ni au contenu en clair. La clé est générée côté client et transmise exclusivement via le fragment URL (#key=...), qui n'est jamais envoyé au serveur par le navigateur (RFC 3986 §3.5).

Ce que le serveur peut voir selon le mode
DonnéeMode E2EMode non-E2ENotes
Fichier source / secret en clairNonOuiE2E : chiffré côté client avant envoi. Non-E2E : le serveur effectue le chiffrement et peut le déchiffrer
Clé de chiffrementNonOuiE2E : reste dans le fragment URL, jamais envoyée. Non-E2E : générée et détenue par le serveur
Fichier chiffré (ciphertext)OuiOuiStocké chiffré
IV et saltOuiOuiNécessaires au déchiffrement, non secrets selon la spécification AES-GCM
Hash du mot de passe d'accèsOuiOuiHash argon2id, jamais le mot de passe en clair

Conséquence :même avec un accès complet à la base de données et au stockage, un attaquant ne peut pas déchiffrer les partages E2E sans la clé détenue exclusivement par l'expéditeur et le destinataire.

3. Chiffrement des fichiers

Les fichiers sont chiffrés dans le navigateur avant l'envoi. Une clé AES-256 aléatoire est générée par fichier via l'API Web Crypto, et le contenu est chiffré avec AES-256-GCM. La clé est exportée en fragment base64url dans l'URL de partage. Le fragment n'étant jamais inclus dans les requêtes HTTP, le serveur ne la reçoit jamais.

4. Chiffrement des secrets (mots de passe et texte)

  1. Un salt aléatoire cryptographique est généré
  2. La clé de chiffrement est dérivée du mot de passe d'accès via PBKDF2-SHA-256 avec 600 000 itérations
  3. Le texte est chiffré avec AES-256-GCM en utilisant un IV de 96 bits aléatoire
  4. Le serveur stocke uniquement le ciphertext, l'IV et le salt - jamais le texte en clair ni la clé

Déchiffrement par le destinataire :le destinataire saisit le mot de passe d'accès → la clé est re-dérivée à partir du mot de passe + salt → le secret est déchiffré entièrement côté client.

5. Cycle de vie d'un partage

  1. Création :l'expéditeur chiffre le contenu dans le navigateur, envoie le ciphertext, reçoit une URL unique avec la clé dans le fragment
  2. Partage :l'URL est transmise hors-bande (email, messagerie, etc.)
  3. Accès :le destinataire ouvre l'URL → le navigateur extrait la clé du fragment → télécharge le ciphertext → déchiffre localement
  4. Expiration : après la durée configurée (1 heure à 30 jours selon la gamme) ou le nombre maximum de vues, le partage est purgé définitivement - ciphertext supprimé du stockage, métadonnées effacées de la base de données
  5. Révocation :l'expéditeur peut détruire un partage à tout moment depuis son tableau de bord

6. Sécurité du transport

7. Stockage et rétention

8. Résistance aux attaques quantiques

Le chiffrement de Pli Scellé repose sur AES-256-GCM (symétrique) et PBKDF2-SHA-256(dérivation de clé). Ces algorithmes sont considérés résistants aux attaques quantiques : l'algorithme de Grover réduit la sécurité effective d'AES-256 à ~AES-128, un niveau toujours considéré sûr par le NIST et l'ANSSI.

Le flux de partage actuel n'utilise pas d'échange de clé asymétrique (RSA, ECDH) - les algorithmes vulnérables aux attaques quantiques ne sont pas présents dans le protocole.

Pour les futures fonctionnalités nécessitant un échange asymétrique, l'architecture est conçue pour intégrer ML-KEM (Kyber, FIPS 203) en mode hybride (classique + post-quantique) lorsque les standards navigateur (Web Crypto API) et les bibliothèques auditées seront disponibles.

Les partages sur Pli Scellé sont éphémères(expiration de 1 heure à 30 jours selon la gamme, purge automatique). Le scénario « stocker maintenant, déchiffrer plus tard » - où un attaquant capture le ciphertext aujourd'hui et le déchiffre dans 10-20 ans avec un ordinateur quantique - ne s'applique pas aux données éphémères qui n'existent plus.

9. Transparence et posture sécurité