V vaha_

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é.

Catégorie
Projet phare · cryptographie post-quantique
Années
2025 → aujourd'hui
Statut
en développement
Plateformes
iOS · Android · Desktop · Server
vChat — Messenger sécurisé
Capture d'écran 01 · vChat sur iOS — discussion directe, groupe et appel dans un seul client.
01

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
02

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
03

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
04

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

← Retour à l'index