bastien-mrq/bt-message
publicpropriétaire: bastien-mrq@git.neuromancer.ovh
3 commits · 1 contributeurs · Swift
https://git.neuromancer.ovh/bastien-mrq/bt-message.git
ssh://git@git.neuromancer.ovh:2222/bastien-mrq/bt-message.git
| btmessage | dossier | |
| btmessage.xcodeproj | dossier | |
| .gitignore | fichier | |
| PROTOCOL.md | fichier | |
| README.md | fichier |
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 :
- 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.
- HKDF-SHA256 — dérive une clé AES-256 à partir du secret partagé (info :
btmessage-v1). - AES-256-GCM — chiffrement authentifié du message (nonce 12 octets + tag 16 octets).
Groupes
Chiffrement symétrique partagé :
- Le créateur génère une clé AES-256 aléatoire pour le groupe.
- Cette clé est distribuée à chaque membre, chiffrée individuellement avec sa clé XWing.
- 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.