[!WARNING]
Ce logiciel n'a pas reçu d'audit de sécurité externe et peut contenir des vulnérabilités. Il peut ne pas atteindre ses objectifs de sécurité déclarés. Ne l'utilisez pas pour des cas d'usage sensibles et ne vous fiez pas à sa sécurité avant qu'il n'ait été examiné. Travail en cours.
bitchat pour Android
Une application de messagerie sécurisée, décentralisée, pair-à-pair, fonctionnant sur des réseaux maillés Bluetooth. Pas besoin d'Internet pour les discussions en maillage, pas de serveurs, pas de numéros de téléphone — rien que des communications chiffrées. Bitchat prend également en charge les canaux géohash, qui utilisent une connexion Internet pour vous connecter avec d'autres personnes dans votre zone géographique.
Ceci est le portage Android de l'application iOS bitchat originale, maintenant une compatibilité protocolaire à 100 % pour la communication entre plates-formes.
Installer bitchat
Vous pouvez télécharger la dernière version de bitchat pour Android depuis la page des versions GitHub.
Ou vous pouvez :

Instructions :
- Télécharger l'APK : Sur votre appareil Android, accédez au lien ci-dessus et téléchargez le dernier fichier
.apk. Ouvrez-le.
- Autoriser les sources inconnues : Sur certains appareils, avant de pouvoir installer l'APK, vous devrez peut-être activer « Installer depuis des sources inconnues » dans les paramètres de votre appareil. Cela se trouve généralement sous Paramètres > Sécurité ou Paramètres > Applications et notifications > Accès spécial aux applications.
- Installer : Ouvrez le fichier
.apk téléchargé pour commencer l'installation.
Licence
Ce projet est placé dans le domaine public. Consultez le fichier LICENCE pour plus de détails.
Fonctionnalités
- ✅ Compatible entre plates‑formes : compatibilité protocolaire complète avec bitchat iOS
- ✅ Réseau maillé décentralisé : découverte automatique des pairs et relais multi‑sauts des messages via Bluetooth LE
- ✅ Chiffrement de bout en bout : échange de clés X25519 + AES‑256‑GCM pour les messages privés
- ✅ Discussions par canaux : messagerie de groupe basée sur un sujet avec protection optionnelle par mot de passe
- ✅ Stocker et transmettre : messages mis en cache pour les pairs hors ligne et livrés lorsqu'ils se reconnectent
- ✅ Confidentialité avant tout : pas de comptes, pas de numéros de téléphone, pas d'identifiants persistants
- ✅ Commandes de style IRC : interface familière avec
/join, /msg, /who
- ✅ Conservation des messages : sauvegarde facultative des messages à l'échelle du canal, contrôlée par les propriétaires de canal
- ✅ Effacement d'urgence : triple tapotement sur le logo pour effacer instantanément toutes les données
- ✅ Interface Android moderne : Jetpack Compose avec Material Design 3
- ✅ Thèmes sombre/clair : esthétique inspirée des terminaux, en phase avec la version iOS
- ✅ Optimisation de la batterie : balayage adaptatif et gestion de l'énergie
Configuration Android
Prérequis
- Android Studio : Arctic Fox (2020.3.1) ou plus récent
- SDK Android : API niveau 26 (Android 8.0) ou supérieur
- Kotlin : 1.8.0 ou plus récent
- Gradle : 7.0 ou plus récent
Instructions de compilation
-
Clonez le dépôt :
git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
-
Ouvrez dans Android Studio :
# Ouvrez Android Studio et sélectionnez « Open an Existing Project »
# Naviguez vers le répertoire bitchat-android
-
Compilez le projet :
-
Installez sur l'appareil :
Compilation de développement
Pour les compilations de développement avec débogage activé :
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
Compilation de version
Pour les versions de production :
./gradlew assembleRelease
Exigences spécifiques à Android
Autorisations
L'application nécessite les autorisations suivantes (demandées automatiquement) :
- Bluetooth : fonctionnalité BLE de base
- Localisation : requise pour le balayage BLE sur Android
- Réseau : étendre votre maillage via des relais Internet publics
- Notifications : alertes de messages et mises à jour en arrière‑plan
Configuration matérielle requise
- Bluetooth LE (BLE) : requis pour le réseau maillé
- Android 8.0+ : API niveau 26 minimum
- RAM : 2 Go recommandés pour des performances optimales
Utilisation
Commandes de base
/j #canal - Rejoindre ou créer un canal
/m @nom message - Envoyer un message privé
/w - Lister les utilisateurs en ligne
/canaux - Afficher tous les canaux découverts
/bloquer @nom - Bloquer un pair pour qu'il ne vous envoie pas de messages
/bloquer - Lister tous les pairs bloqués
/debloquer @nom - Débloquer un pair
/effacer - Effacer les messages de la discussion
/motdepasse [mot de passe] - Définir/modifier le mot de passe du canal (propriétaire uniquement)
/transférer @nom - Transférer la propriété du canal
/sauvegarder - Activer/désactiver la conservation des messages pour le canal (propriétaire uniquement)
Pour commencer
- Installez l'application sur votre appareil Android (nécessite Android 8.0+)
- Accordez les autorisations Bluetooth et localisation lorsque cela vous est demandé
- Lancez bitchat - il démarrera automatiquement le réseau maillé
- Définissez votre pseudonyme ou utilisez celui généré automatiquement
- Connectez-vous automatiquement aux utilisateurs iOS et Android à proximité
- Rejoignez un canal avec
/j #general ou commencez à discuter en public
- Les messages sont relayés à travers le réseau maillé pour atteindre les pairs éloignés
Fonctionnalités de l'interface Android
- Interface Jetpack Compose : interface Material Design 3 moderne
- Thèmes sombre/clair : esthétique inspirée des terminaux, en phase avec iOS
- Retour haptique : vibrations pour les interactions et les notifications
- Mise en page adaptative : optimisée pour les différentes tailles d'écran Android
- Statut des messages : accusés de réception et de lecture en temps réel
- Indicateurs RSSI : couleurs de force du signal pour chaque pair
Fonctionnalités des canaux
- Protection par mot de passe : les propriétaires de canal peuvent définir un mot de passe avec
/pass
- Conservation des messages : les propriétaires peuvent activer la sauvegarde obligatoire des messages avec
/save
- Mentions @ : utilisez
@pseudo pour mentionner un utilisateur (avec autocomplétion)
- Transfert de propriété : passez le contrôle à des utilisateurs de confiance avec
/transfer
Sécurité et confidentialité
Chiffrement
- Messages privés : échange de clés X25519 + chiffrement AES‑256‑GCM
- Messages de canal : dérivation de mot de passe Argon2id + AES‑256‑GCM
- Signatures numériques : Ed25519 pour l'authenticité des messages
- Secret de transmission : nouvelles paires de clés générées à chaque session
Fonctionnalités de confidentialité
- Pas d'inscription : aucun compte, email ou numéro de téléphone requis
- Éphémère par défaut : les messages n'existent que dans la mémoire de l'appareil
- Trafic de couverture : délais aléatoires et messages factices pour empêcher l'analyse du trafic
- Effacement d'urgence : triple tapotement sur le logo pour effacer instantanément toutes les données
- Support Tor intégré : intégration du réseau Tor pour une confidentialité renforcée lorsque la connexion Internet est disponible
Compression des messages
- Compression LZ4 : compression automatique pour les messages de plus de 100 octets
- 30 à 70 % d'économie de bande passante sur les messages texte typiques
- Compression intelligente : ignore les données déjà compressées
Optimisation de la batterie
- Modes d'alimentation adaptatifs : s'ajuste automatiquement en fonction du niveau de la batterie
- Mode performance : toutes les fonctionnalités lorsque l'appareil est en charge ou >60 % de batterie
- Mode équilibré : fonctionnement par défaut (30-60 % de batterie)
- Mode économie d'énergie : balayage réduit lorsque <30 % de batterie
- Mode ultra‑basse consommation : mode d'urgence lorsque <10 % de batterie
- Efficacité en arrière‑plan : économie d'énergie automatique lorsque l'application est en arrière‑plan
- Balayage configurable : cycle de service adapté à l'état de la batterie
Efficacité réseau
- Filtres de Bloom optimisés : détection plus rapide des doublons avec moins de mémoire
- Agrégation des messages : regroupe les petits messages pour réduire les transmissions
- Limites de connexion adaptatives : ajuste les connexions entre pairs en fonction du mode d'alimentation
Architecture technique
Protocole binaire
bitchat utilise un protocole binaire efficace optimisé pour Bluetooth LE :
- Format de paquet compact avec un champ de type d'1 octet
- Routage des messages basé sur TTL (maximum 7 sauts)
- Fragmentation automatique pour les grands messages
- Déduplication des messages via des identifiants uniques
Réseau maillé
- Chaque appareil agit à la fois comme client et périphérique
- Découverte automatique des pairs et gestion des connexions
- Stocker et transmettre pour la livraison de messages hors ligne
- Cycle de service adaptatif pour l'optimisation de la batterie
Optimisations spécifiques à Android
- Architecture par coroutines : opérations asynchrones pour le réseau maillé
- Coroutines Kotlin : opérations maillées concurrentes thread‑safe
- EncryptedSharedPreferences : stockage sécurisé des paramètres utilisateur
- Sensible au cycle de vie : gestion appropriée du cycle de vie de l'application Android
- Optimisation de la batterie : service avant‑plan et balayage adaptatif
Architecture technique Android
Composants principaux
- BitchatApplication.kt : initialisation au niveau de l'application et injection de dépendances
- MainActivity.kt : activité principale gérant les autorisations et l'hébergement de l'interface
- ChatViewModel.kt : modèle MVVM gérant l'état de l'application et la logique métier
- BluetoothMeshService.kt : cœur du réseau maillé BLE (rôles central + périphérique)
- EncryptionService.kt : opérations cryptographiques utilisant BouncyCastle
- BinaryProtocol.kt : encodage/décodage des paquets binaires conforme au format iOS
- ChatScreen.kt : interface Jetpack Compose avec Material Design 3
Dépendances
- Jetpack Compose : interface déclarative moderne
- BouncyCastle : opérations cryptographiques (X25519, Ed25519, AES‑GCM)
- Bibliothèque Nordic BLE : opérations Bluetooth LE fiables
- Coroutines Kotlin : programmation asynchrone
- LZ4 : compression des messages (lorsqu'activée)
- EncryptedSharedPreferences : stockage local sécurisé
Compatibilité du protocole binaire
L'implémentation Android maintient une compatibilité à 100 % du protocole binaire avec iOS :
- Format d'en‑tête : structure d'en‑tête identique de 13 octets
- Types de paquets : mêmes types de messages et logique de routage
- Chiffrement : algorithmes cryptographiques et échange de clés identiques
- UUIDs : mêmes identifiants de service et de caractéristique Bluetooth
- Fragmentation : fragmentation de messages compatible pour le contenu volumineux
Publication sur Google Play
Préparation
-
Mettez à jour les informations de version :
// Dans app/build.gradle.kts
defaultConfig {
versionCode = 2 // Incrémenter pour chaque version
versionName = "1.1.0" // Version visible par l'utilisateur
}
-
Créez une compilation de version signée :
./gradlew assembleRelease
-
Générez un App Bundle (recommandé pour le Play Store) :
Exigences du Play Store
- API cible : dernière API Android (actuellement 34)
- Politique de confidentialité : requise pour les applications demandant des autorisations sensibles
- Autorisations de l'application : justifier l'utilisation du Bluetooth et de la localisation
- Classification du contenu : remplir le questionnaire pour un contenu adapté à l'âge
Distribution
- Google Play Store : canal de distribution principal
- F‑Droid : pour la distribution open‑source
- APK direct : pour les tests et le développement
Ce portage Android permet une communication transparente avec l'application iOS bitchat originale :
- iPhone ↔ Android : messagerie bidirectionnelle complète
- Groupes mixtes : utilisateurs iOS et Android dans les mêmes canaux
- Parité des fonctionnalités : toutes les commandes et le chiffrement fonctionnent entre plates‑formes
- Synchronisation du protocole : format de message et comportement de routage identiques
Version iOS : pour les utilisateurs d'iPhone/iPad, obtenez l'application bitchat originale sur github.com/jackjackbits/bitchat
Contribuer
Les contributions sont les bienvenues ! Domaines clés d'amélioration :
- Performance : optimisation de la batterie et fiabilité des connexions
- UI/UX : fonctionnalités supplémentaires de Material Design 3
- Sécurité : fonctionnalités cryptographiques renforcées
- Tests : couverture des tests unitaires et d'intégration
- Documentation : documentation de l'API et guides de développement
Support et problèmes
- Rapports de bogues : Créer un ticket avec les informations sur l'appareil et les journaux
- Demandes de fonctionnalités : Démarrer une discussion
- Problèmes de sécurité : envoyez les préoccupations de sécurité par email de manière privée
- Compatibilité iOS : recoupez avec le dépôt iOS original
Pour les problèmes spécifiques à iOS, veuillez vous référer au dépôt bitchat iOS original.