Sécurité de Tchitchat
Cette page décrit honnêtementle modèle de menace de Tchitchat : ce que nous protégeons, comment, et ce que nous ne prétendons pas protéger. Le code source est public et auditable sur GitHub.
Messages (chiffrement de bout en bout)
Les messages texte et les fichiers échangés entre utilisateurs sont chiffrés de bout en boutvia une implémentation du Signal Protocol (X3DH + Double Ratchet, Curve25519, HKDF-SHA256, HMAC-SHA256, AES-256-GCM). Le serveur ne peut pas lire vos messages. Voir src/lib/encryption/signal.ts.
Appels VoIP
Les appels audio/vidéo utilisent un chiffrement par-image (per-frame) avec AES-GCM dérivé via HKDF-SHA256 d'une clé partagée négociée hors-bande. La signalisation transite via nos serveurs, mais la charge utile média est opaque pour nous.
Verrouillage par PIN
Le PIN local est haché avec Argon2id(paramètres OWASP : m=19 MiB, t=2, p=1) et n'est utilisé que pour dériver une clé locale. Ni le PIN ni cette clé ne quittent l'appareil.
Découverte de contacts (matching)
Quand vous importez votre carnet d'adresses pour découvrir d'autres utilisateurs Tchitchat :
- Votre application normalise chaque numéro en E.164 et chaque courriel en minuscules (Gmail :
+taget points retirés). - L'application calcule un SHA-256 de chaque entrée et envoie uniquement ces empreintes au serveur. Pour les imports OAuth (Google, Microsoft), le serveur reçoit obligatoirement les courriels bruts et les hache en mémoire avant de les jeter — rien n'est persisté en clair.
- Le serveur applique un HMAC-SHA256 avec une clé secrète(stockée dans AWS Secrets Manager, jamais exposée au client) sur chaque empreinte avant de la comparer à la base. La base ne contient que ces versions HMAC : une fuite de la base seule ne permet pas de retrouver vos contacts.
- Le matching ne révèle un utilisateur que s'il a explicitement activé « Permettre à mes contacts de me trouver »(Loi 25 — consentement bilatéral).
Ce que cette protection garantit
- Une fuite de la base seule ne permet pas de reconstruire vos contacts.
- Aucun numéro ou courriel brut n'est stocké à long terme.
- Le code est public et auditable.
Ce que cette protection NE garantit PAS
- Si un attaquant obtient à la fois la base ET la clé HMAC (compromission complète d'un serveur), il peut reconstruire le mapping. Les clés HMAC sont rotées annuellement.
- Le SHA-256 envoyé du client au serveur passe par TLS ; un attaquant capable d'intercepter ce trafic en clair (CA malveillante, attaque étatique) verrait des empreintes SHA-256 reversibles par rainbow table pour les numéros nord-américains. Un passage à du matching private set intersection (PSI) est à l'étude.
- Les imports OAuth impliquent que le serveur voit en mémoire les courriels bruts pendant la durée de la requête. Ils ne sont jamais persistés.
Authentification
AWS Cognito avec mot de passe ou Google OAuth (SSO). Sessions via cookies HttpOnly+Secure signés. Aucune donnée biométrique ne quitte votre appareil.
Audit et conformité Loi 25
Tout import de contacts est tracé dans un journal d'audit (compteurs uniquement, jamais les empreintes ni les contacts). Vous pouvez à tout moment retirer votre consentement et purger ce journal depuis vos paramètres.
Signalement de vulnérabilités
Contact : security@groupeb.ca — réponse sous 72 h.
Dernière mise à jour : 4 mai 2026. Code source : github.com/groupeb-canada/tchitchat.