Documentation technique

Livre blanc sur l'architecture de sécurité

Un aperçu technique détaillé de l'architecture de chiffrement de Snugg pour les chercheurs en sécurité, les auditeurs et les utilisateurs techniquement avertis.

Résumé exécutif

Snugg implémente un chiffrement de bout en bout pour tout le contenu utilisateur en utilisant des primitives cryptographiques modernes et bien auditées. Ce document décrit notre architecture de chiffrement, notre approche de gestion des clés et le modèle de menace contre lequel nous protégeons.

Aperçu de l'architecture de chiffrement

Snugg utilise une approche de chiffrement hybride combinant cryptographie asymétrique et symétrique pour offrir à la fois sécurité et performance.

Chiffrement asymétrique (clé publique)

Chaque utilisateur possède une paire de clés unique (X25519). La clé publique est partagée avec nos serveurs ; la clé privée ne quitte jamais l'appareil de l'utilisateur. Utilisé pour l'échange initial de clés et la sécurisation des clés de groupe.

Chiffrement symétrique (secret partagé)

Chaque groupe possède une clé symétrique (XSalsa20-Poly1305) partagée uniquement entre les membres du groupe. Cette clé chiffre tout le contenu du groupe, offrant un chiffrement/déchiffrement rapide.

Approche hybride

Lorsque vous rejoignez un groupe, la clé du groupe est chiffrée avec votre clé publique et vous est envoyée. Votre appareil la déchiffre avec votre clé privée, vous donnant accès au contenu du groupe. Cela combine la sécurité de la cryptographie asymétrique avec l'efficacité de la cryptographie symétrique.

Gestion des clés

Une gestion sécurisée des clés est essentielle à notre architecture de chiffrement. Voici comment les clés sont générées, stockées et utilisées :

1

Génération des clés

Lorsque vous créez un compte, votre appareil génère une paire de clés cryptographiquement sécurisée en utilisant l'API Web Crypto ou TweetNaCl.js. Les clés sont générées localement—elles ne passent jamais par nos serveurs.

2

Stockage des clés

Les clés privées sont stockées dans un stockage local chiffré (IndexedDB) sur votre appareil, protégées par une clé dérivée de vos identifiants de compte en utilisant PBKDF2 avec 100 000 itérations.

3

Distribution des clés

Lorsque vous rejoignez un groupe, les membres existants chiffrent la clé du groupe avec votre clé publique. Ce paquet chiffré est stocké sur nos serveurs et ne peut être déchiffré que par votre clé privée.

4

Rotation des clés

Les clés de groupe sont renouvelées lorsque des membres partent pour assurer la confidentialité persistante. Les membres partis ne peuvent pas déchiffrer le nouveau contenu même s'ils ont conservé l'ancienne clé.

Primitives cryptographiques

Nous utilisons des algorithmes cryptographiques bien établis et audités :

ObjectifAlgorithmeBibliothèque
Échange de clésX25519 (Curve25519 ECDH)TweetNaCl.js
Chiffrement symétriqueXSalsa20-Poly1305TweetNaCl.js
Signatures numériquesEd25519TweetNaCl.js
HachageSHA-256API Web Crypto
Dérivation de clésPBKDF2 (100k itérations)API Web Crypto

Flux de données : comment le contenu est chiffré

Voici ce qui se passe lorsque vous publiez du contenu dans un groupe :

1
Vous composez une publication sur votre appareil (texte, photos, etc.)
2
Votre appareil récupère la clé symétrique du groupe depuis le stockage local chiffré
3
Le contenu est chiffré avec la clé du groupe en utilisant XSalsa20-Poly1305
4
Le texte chiffré est envoyé à nos serveurs et stocké
5
Lorsque les membres du groupe ouvrent Snugg, leurs appareils téléchargent le texte chiffré et le déchiffrent localement

Modèle de menace

Comprendre ce contre quoi nous protégeons—et ce contre quoi nous ne protégeons pas—est essentiel pour que les utilisateurs puissent prendre des décisions éclairées.

Ce contre quoi nous protégeons

  • Compromission du serveur : Un attaquant qui accède à nos serveurs ne voit que du texte chiffré
  • Employés malveillants : Le personnel de Snugg ne peut pas lire le contenu utilisateur—nous n'avons pas les clés
  • Demandes gouvernementales : Même sous contrainte légale, nous ne pouvons fournir que des données chiffrées
  • Écoute réseau : Toutes les connexions utilisent TLS 1.3 ; le contenu est en plus chiffré de bout en bout

Ce contre quoi nous ne protégeons pas

  • Appareils compromis : Si un attaquant contrôle votre appareil, il peut lire le contenu déchiffré
  • Captures d'écran des membres du groupe : Les membres peuvent capturer ou copier le contenu déchiffré
  • Analyse des métadonnées : Nous pouvons voir qui est dans quels groupes et quand ils publient (mais pas le contenu)

Audits de sécurité et vérification

Nous croyons en une sécurité vérifiable, pas en une sécurité par l'obscurité :

Notre code de chiffrement est open source et disponible pour examen public
Nous commandons régulièrement des audits de sécurité par des tiers auprès de firmes réputées
Les rapports d'audit sont publiés, y compris les conclusions et comment nous les avons traitées

Ne nous faites pas confiance—vérifiez. Notre code source est disponible sur github.com/snugg-social

Références techniques

Pour plus d'informations sur les standards cryptographiques que nous utilisons :

  • TweetNaCl.js : Un portage de la bibliothèque cryptographique NaCl bien auditée
  • Curve25519 : Courbe elliptique conçue par Daniel J. Bernstein pour l'échange de clés
  • XSalsa20-Poly1305 : Chiffrement authentifié de la famille NaCl
  • PBKDF2 : Fonction de dérivation de clé basée sur mot de passe 2 (RFC 8018)

Questions de sécurité ou divulgation responsable ?

Si vous avez des questions sur notre architecture de sécurité ou souhaitez signaler une vulnérabilité, nous serions ravis de vous entendre.

security@snugg.social

Dernière mise à jour : 1 février 2026