Gitfed
bastien-mrq/bt-message / README.md
README.md Code Preview

btmessage

Messagerie chiffrée peer-to-peer sans serveur, fonctionnant via Bluetooth et Wi-Fi Direct.

Principe

btmessage crée un réseau maillé (mesh) local entre les appareils à proximité grâce à MultipeerConnectivity (Bluetooth LE + Wi-Fi AWDL). Les messages transitent de proche en proche sans passer par aucun serveur — si deux appareils ne sont pas directement connectés, le message est relayé automatiquement par les appareils intermédiaires.

Chaque message est chiffré de bout en bout avant d'être envoyé. Personne d'autre que le destinataire ne peut le lire, même les appareils qui le relaient.

Chiffrement

Messages directs (DM)

Chiffrement hybride post-quantique :

  1. XWingMLKEM768X25519 (CryptoKit natif iOS 26) — KEM hybride combinant ML-KEM-768 (résistant aux ordinateurs quantiques) et X25519 (courbe elliptique classique). Génère un secret partagé via encapsulation/décapsulation.
  2. HKDF-SHA256 — dérive une clé AES-256 à partir du secret partagé (info : btmessage-v1).
  3. AES-256-GCM — chiffrement authentifié du message (nonce 12 octets + tag 16 octets).

Groupes

Chiffrement symétrique partagé :

  1. Le créateur génère une clé AES-256 aléatoire pour le groupe.
  2. Cette clé est distribuée à chaque membre, chiffrée individuellement avec sa clé XWing.
  3. Les messages de groupe sont chiffrés avec cette clé partagée (AES-256-GCM).

Fonctionnalités

  • Messagerie directe (DM) chiffrée bout-en-bout PQC
  • Groupes de discussion avec clé symétrique partagée
  • Réseau maillé automatique — pas de configuration, pas de serveur
  • Identité persistante via Keychain (UUID + clé privée XWing)
  • Routage par inondation avec TTL et cache de déduplication

Stack technique

Composant Technologie
Transport MultipeerConnectivity (Bluetooth LE + Wi-Fi AWDL)
KEM XWingMLKEM768X25519 (CryptoKit, iOS 26)
Dérivation de clé HKDF-SHA256
Chiffrement AES-256-GCM
UI SwiftUI
Stockage clés Keychain + UserDefaults

Prérequis

  • Xcode 16+
  • iOS 26.0 minimum (simulator ou device iOS 26 beta)
  • Bluetooth et Wi-Fi activés sur les appareils

Interopérabilité

Le protocole wire (enveloppes JSON, algorithmes de chiffrement, routage) est documenté dans PROTOCOL.md pour permettre l'implémentation d'un client Android ou autre plateforme.

Licence

Ce projet est distribué sous la Bastien-mrq License v1.0.0.
→ https://github.com/bastien-mrq/bastien-mrq-license

Usage personnel, professionnel et commercial autorisé. Modification et redistribution autorisées. La revente du logiciel tel quel et le plagiat d'auteur sont interdits. L'avis de copyright doit être conservé dans toute copie ou distribution.