Dossier · № 01 / 16
vChat
Messenger sécurisé — Messenger chiffré de bout en bout, pensé post-quantique dès le premier jour : échange de clés CRYSTALS-Kyber (ML-KEM) via PQXDH, couche de messages Double Ratchet et système de clés de groupe par époque (GMK) avec récupération et rotation de l'expéditeur. Le tout tourne sur un seul cœur Rust — KyberSDK — partagé par iOS, Android, le desktop Tauri et un backend Go auto-hébergé.
Ce qui a été fait
- Échange de clés PQXDH sur CRYSTALS-Kyber (ML-KEM) au lieu du X25519 classique
- Couche de messages Double Ratchet (AEAD + KDF) avec des clés par message
- Clés de groupe par époque GMK, rotation de l'expéditeur et récupération d'un état perdu
- Récupération mnémotechnique BIP39 + escrow d'état argon2id/AES-GCM
- Plusieurs appareils par compte et effacement en panic-mode
- Un seul cœur Rust (KyberSDK) derrière une ABI C — zéro code crypto par plateforme
- Backend Go auto-hébergé : auth, appareils, pré-clés, enveloppes DM et de groupe, fichiers
Couches du système
KyberSDK — cœur Rust
RustC ABI / FFIML-KEM- CRYSTALS-Kyber (ML-KEM) comme KEM, pas une branche expérimentale
- Accord de clés PQXDH résistant au « harvest now, decrypt later »
- Double Ratchet + clés de groupe par époque GMK
- Démarche de durcissement FIPS sur tout le cœur
iOS — Swift / SwiftUI
SwiftSwiftUISPM- Monorepo SPM modulaire : chaque Core* est une frontière de framework, chaque Feature* une surface
- vChatNSE — extension de notification qui déchiffre le push E2E sur l'appareil
- Store local chiffré (CoreDatabase), identité de l'appareil dans le Keychain
- Récupération de compte BIP39 sans serveur qui garde les clés
Android — Kotlin / Compose
KotlinJetpack ComposeJNI- Le même cœur Rust via des bindings JNI — la crypto n'est jamais réécrite
- UI Jetpack Compose, Coroutines + Flow pour l'état
- Store local chiffré et pipeline FCM avec déchiffrement E2E
Desktop — Tauri 2 (Rust + TypeScript)
RustTauri 2TypeScriptVite- Windows, macOS et Linux à partir d'une seule base de code
- Cœur Rust lié nativement — pas de Chromium en dessous
- Barre système, menus et notifications natifs, installateur léger
Backend — Go (self-hosted)
GoLokiPrometheusTempoGrafana- Services : auth, appareils, pré-clés, enveloppes DM et de groupe, transfert de fichiers
- Le serveur tourne sur ma propre infrastructure, pas sur un BaaS tiers
- Observabilité : Loki pour les logs, Prometheus pour les métriques, Tempo pour les traces, Grafana pour les tableaux de bord
Technologies
Langages de programmationRust, Swift, Kotlin, TypeScript, Go
Frameworks et outilsSwiftUI, Jetpack Compose, Tauri 2, Vite, JNI, C ABI
InfrastructureServeurs dédiés, Loki, Prometheus, Tempo, Grafana
Faits
PlateformesiOS · Android · Desktop · Server
Statuten développement
Années2025 → aujourd'hui
CatégorieProjet phare · cryptographie post-quantique
vChat sur iOS — discussion directe, groupe et appel dans un seul client.
Tous les projets