Glossaire

Qu'est-ce que Chiffrement côté client ?

Le chiffrement côté client est la pratique consistant à chiffrer les données sur l’appareil de l’utilisateur — généralement dans un navigateur ou une application native — avant de les transmettre à un serveur. Le serveur ne reçoit et ne stocke ainsi que des données chiffrées.

Le chiffrement côté client est le mécanisme technique qui rend possibles les systèmes zero-knowledge et chiffrés de bout en bout. En chiffrant les données avant qu’elles ne quittent l’appareil de l’utilisateur, le texte en clair ne traverse jamais le réseau et n’existe jamais sur le serveur. Cela protège simultanément contre l’interception réseau, les fuites de données côté serveur et les menaces internes.

Dans les applications web, le chiffrement côté client repose généralement sur la Web Crypto API, une interface native du navigateur pour les opérations cryptographiques. Elle est préférable aux bibliothèques cryptographiques en JavaScript, car la Web Crypto API exécute du code compilé en natif, résiste aux attaques temporelles et bénéficie de l’accélération matérielle sur les appareils modernes.

Le principal compromis du chiffrement côté client : le serveur ne peut ni traiter ni rechercher dans les données chiffrées. Des fonctionnalités comme la recherche côté serveur, l’analyse de contenu ou la transformation de données deviennent impossibles, car le serveur ne peut tout simplement pas lire les données. Pour le partage de secrets, ce compromis est idéal : le serveur n’a qu’à stocker un bloc de données et à appliquer des règles d’accès, sans avoir à comprendre le contenu.

Comment Vaulted utilise Chiffrement côté client

Chaque secret partagé via Vaulted est chiffré côté client avec la Web Crypto API avant que le navigateur n’émette une requête réseau. Le navigateur génère une clé AES-256-GCM aléatoire, chiffre le texte en clair et n’envoie au serveur que le texte chiffré et l’IV obtenus. La clé de chiffrement est placée dans le fragment d’URL, que le navigateur n’inclut jamais dans les requêtes HTTP. Cela signifie que le texte en clair n’existe que dans la mémoire du navigateur de l’expéditeur et du destinataire : jamais sur le réseau, jamais sur le serveur.