
Dezentrale, verschlüsselte Peer-to-Peer-Messaging-App über Bluetooth-Mesh-Netzwerke. Kein Internet, keine Server oder Telefonnummern erforderlich. Bietet X25519- und AES-256-GCM-Verschlüsselung, IRC-ähnliche Befehle und plattformübergreifende Kompatibilität mit iOS.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10897/4adee5766836e3812e7f0051931df8c63da05d8d8db9a77f8c491d1ea45d195b.png" alt="Bitchat Android Logo" width="480">
</p>
> [!WARNING]
> Diese Software wurde noch keinem externen Sicherheitsaudit unterzogen und kann Schwachstellen enthalten. Sie entspricht möglicherweise nicht den angegebenen Sicherheitszielen. Verwenden Sie sie nicht für sensible Anwendungsfälle und verlassen Sie sich nicht auf ihre Sicherheit, bevor sie überprüft wurde. In Arbeit.
# bitchat für Android
Eine sichere, dezentrale, Peer-to-Peer-Messaging-App, die über Bluetooth-Mesh-Netzwerke funktioniert. Kein Internet für Mesh-Chats erforderlich, keine Server, keine Telefonnummern – nur reine verschlüsselte Kommunikation. Bitchat unterstützt auch Geohash-Kanäle, die eine Internetverbindung nutzen, um Sie mit anderen in Ihrer geografischen Region zu verbinden.
Dies ist der **Android-Port** der ursprünglichen [bitchat iOS-App](https://github.com/jackjackbits/bitchat), der 100% Protokollkompatibilität für plattformübergreifende Kommunikation gewährleistet.
## bitchat installieren
Sie können die neueste Version von bitchat für Android auf der [GitHub Releases-Seite](https://github.com/permissionlesstech/bitchat-android/releases) herunterladen.
Oder Sie können:
[<img alt="Get it on Google Play" height="60" src="https://assets.kitploit.com/production/public/readmes/10897/f72611e2df8e88204009fd896d05d5e8e83c77009c63943bbffa169559934849.png"/>](https://play.google.com/store/apps/details?id=com.bitchat.droid)
**Anleitung:**
1. **APK herunterladen:** Navigieren Sie auf Ihrem Android-Gerät zu obigem Link und laden Sie die neueste `.apk`-Datei herunter. Öffnen Sie sie.
2. **Unbekannte Quellen zulassen:** Auf manchen Geräten müssen Sie vor der Installation der APK die Option „Installation aus unbekannten Quellen“ in den Geräteeinstellungen aktivieren. Diese finden Sie normalerweise unter **Einstellungen > Sicherheit** oder **Einstellungen > Apps & Benachrichtigungen > Spezieller App-Zugriff**.
3. **Installieren:** Öffnen Sie die heruntergeladene `.apk`-Datei, um die Installation zu starten.
## Lizenz
Dieses Projekt ist gemeinfrei (Public Domain). Weitere Details finden Sie in der [LIZENZ](https://github.com/permissionlesstech/bitchat-android/blob/main/LICENSE.md)-Datei.
## Funktionen
- **✅ Plattformübergreifend kompatibel**: Volle Protokollkompatibilität mit bitchat für iOS
- **✅ Dezentrales Mesh-Netzwerk**: Automatische Peer-Erkennung und Multi-Hop-Nachrichtenweiterleitung über Bluetooth LE
- **✅ Ende-zu-Ende-Verschlüsselung**: X25519-Schlüsselaustausch + AES-256-GCM für private Nachrichten
- **✅ Kanalbasierte Chats**: Themenbasierte Gruppenkommunikation mit optionalem Passwortschutz
- **✅ Store & Forward**: Nachrichten werden für offline befindliche Peers zwischengespeichert und bei Wiederverbindung zugestellt
- **✅ Datenschutz first**: Keine Konten, keine Telefonnummern, keine dauerhaften Identifikatoren
- **✅ IRC-ähnliche Befehle**: Vertraute `/join`, `/msg`, `/who`-Schnittstelle
- **✅ Nachrichtenspeicherung**: Optionale, kanalweite Nachrichtenspeicherung, gesteuert durch Kanalbesitzer
- **✅ Notfall-Löschung**: Dreifaches Tippen auf das Logo löscht sofort alle Daten
- **✅ Modernes Android-UI**: Jetpack Compose mit Material Design 3
- **✅ Dunkles/Helles Design**: Vom Terminal inspiriertes Aussehen passend zur iOS-Version
- **✅ Akku-Optimierung**: Adaptives Scannen und Energiemanagement
## Android-Einrichtung
### Voraussetzungen
- **Android Studio**: Arctic Fox (2020.3.1) oder neuer
- **Android SDK**: API-Level 26 (Android 8.0) oder höher
- **Kotlin**: 1.8.0 oder neuer
- **Gradle**: 7.0 oder neuer
### Build-Anleitung
1. **Repository klonen:**
```bash
git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
```
2. **In Android Studio öffnen:**
```bash
# Android Studio öffnen und "Vorhandenes Projekt öffnen" auswählen
# Zum Verzeichnis bitchat-android navigieren
```
3. **Projekt bauen:**
```bash
./gradlew build
```
4. **Auf Gerät installieren:**
```bash
./gradlew installDebug
```
### Entwicklungs-Build
Für Entwicklungs-Builds mit aktiviertem Debugging:
```bash
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
```
### Release-Build
Für Produktions-Releases:
```bash
./gradlew assembleRelease
```
## Android-spezifische Anforderungen
### Berechtigungen
Die App benötigt die folgenden Berechtigungen (werden automatisch angefragt):
- **Bluetooth**: Kernfunktionalität für BLE
- **Standort**: Erforderlich für BLE-Scanning auf Android
- **Netzwerk**: Erweitern Sie Ihr Mesh über öffentliche Internet-Relays
- **Benachrichtigungen**: Nachrichtenbenachrichtigungen und Hintergrundaktualisierungen
### Hardware-Anforderungen
- **Bluetooth LE (BLE)**: Erforderlich für Mesh-Netzwerk
- **Android 8.0+**: API-Level 26 Minimum
- **RAM**: 2 GB empfohlen für optimale Leistung
## Verwendung
### Grundlegende Befehle
- `/j #kanal` – Kanal beitreten oder erstellen
- `/m @name nachricht` – Private Nachricht senden
- `/w` – Online-Benutzer auflisten
- `/channels` – Alle entdeckten Kanäle anzeigen
- `/block @name` – Einen Peer blockieren, damit er keine Nachrichten senden kann
- `/block` – Alle blockierten Peers auflisten
- `/unblock @name` – Einen Peer entblocken
- `/clear` – Chat-Nachrichten löschen
- `/pass [passwort]` – Kanalpasswort festlegen/ändern (nur Besitzer)
- `/transfer @name` – Kanalbesitz übertragen
- `/save` – Nachrichtenspeicherung für Kanal umschalten (nur Besitzer)
### Erste Schritte
1. **App installieren** auf Ihrem Android-Gerät (erfordert Android 8.0+)
2. **Berechtigungen erteilen** für Bluetooth und Standort, wenn dazu aufgefordert
3. **bitchat starten** – es startet automatisch das Mesh-Netzwerk
4. **Spitznamen festlegen** oder den automatisch generierten verwenden
5. **Automatisch verbinden** mit nahegelegenen iOS- und Android-bitchat-Benutzern
6. **Kanal beitreten** mit `/j #allgemein` oder chatten Sie im öffentlichen Bereich
7. **Nachrichten werden** über das Mesh-Netzwerk weitergeleitet, um entfernte Peers zu erreichen
### Android-UI-Funktionen
- **Jetpack Compose UI**: Modernes Material Design 3 Interface
- **Dunkles/Helles Design**: Vom Terminal inspiriertes Aussehen passend zu iOS
- **Haptisches Feedback**: Vibrationen für Interaktionen und Benachrichtigungen
- **Adaptives Layout**: Optimiert für verschiedene Android-Bildschirmgrößen
- **Nachrichtenstatus**: Echtzeit-Zustellungs- und Lesebestätigungen
- **RSSI-Indikatoren**: Signalstärkefarben für jeden Peer
### Kanal-Funktionen
- **Passwortschutz**: Kanalbesitzer können mit `/pass` Passwörter festlegen
- **Nachrichtenspeicherung**: Besitzer können mit `/save` die obligatorische Nachrichtenspeicherung aktivieren
- **@-Erwähnungen**: Verwenden Sie `@spitzname`, um Benutzer zu erwähnen (mit Autovervollständigung)
- **Besitzübertragung**: Geben Sie die Kontrolle an vertrauenswürdige Benutzer mit `/transfer`
## Sicherheit & Datenschutz
### Verschlüsselung
- **Private Nachrichten**: X25519-Schlüsselaustausch + AES-256-GCM-Verschlüsselung
- **Kanalnachrichten**: Argon2id-Passwortableitung + AES-256-GCM
- **Digitale Signaturen**: Ed25519 für Nachrichtenauthentizität
- **Forward Secrecy**: Neue Schlüsselpaare pro Sitzung
### Datenschutzfunktionen
- **Keine Registrierung**: Keine Konten, E-Mails oder Telefonnummern erforderlich
- **Standardmäßig flüchtig**: Nachrichten existieren nur im Gerätespeicher
- **Tarnverkehr**: Zufällige Verzögerungen und Dummy-Nachrichten verhindern Verkehrsanalyse
- **Notfall-Löschung**: Dreifaches Tippen auf das Logo löscht sofort alle Daten
- **Integrierter Tor-Support**: Eingebaute Tor-Netzwerkintegration für verbesserte Privatsphäre bei Internetverbindung
## Leistung & Effizienz
### Nachrichtenkompression
- **LZ4-Kompression**: Automatische Kompression für Nachrichten >100 Byte
- **30-70% Bandbreiteneinsparung** bei typischen Textnachrichten
- **Intelligente Kompression**: Überspringt bereits komprimierte Daten
### Akku-Optimierung
- **Adaptive Energiemodi**: Automatische Anpassung basierend auf Akkustand
- Leistungsmodus: Volle Funktionen beim Laden oder >60% Akku
- Ausgeglichener Modus: Standardbetrieb (30-60% Akku)
- Energiesparmodus: Reduziertes Scannen bei <30% Akku
- Extrem niedriger Stromverbrauch: Notfallmodus bei <10% Akku
- **Hintergrundeffizienz**: Automatische Energieeinsparung, wenn App im Hintergrund
- **Konfigurierbares Scannen**: Tastverhältnis passt sich Akkuzustand an
### Netzwerkeffizienz
- **Optimierte Bloom-Filter**: Schnellere Duplikaterkennung mit weniger Speicher
- **Nachrichtenaggregation**: Bündelt kleine Nachrichten, um Übertragungen zu reduzieren
- **Adaptive Verbindungsgrenzen**: Passt Peer-Verbindungen basierend auf Energiemodus an
## Technische Architektur
### Binärprotokoll
bitchat verwendet ein effizientes Binärprotokoll, optimiert für Bluetooth LE:
- Kompaktes Paketformat mit 1-Byte-Typfeld
- TTL-basiertes Nachrichten-Routing (maximal 7 Hops)
- Automatische Fragmentierung für große Nachrichten
- Nachrichten-Deduplizierung durch eindeutige IDs
### Mesh-Netzwerk
- Jedes Gerät fungiert sowohl als Client als auch als Peripheriegerät
- Automatische Peer-Erkennung und Verbindungsverwaltung
- Store-and-Forward für die Zustellung von Nachrichten im Offline-Modus
- Adaptives Tastverhältnis für Akkuoptimierung
### Android-spezifische Optimierungen
- **Coroutine-Architektur**: Asynchrone Operationen für Mesh-Netzwerk
- **Kotlin Coroutinen**: Thread-sichere parallele Mesh-Operationen
- **EncryptedSharedPreferences**: Sichere Speicherung für Benutzereinstellungen
- **Lebenszyklus-bewusst**: Korrekte Behandlung des Android-App-Lebenszyklus
- **Akku-Optimierung**: Vordergrunddienst und adaptives Scannen
## Android-Technische Architektur
### Kernkomponenten
1. **BitchatApplication.kt**: Anwendungsweite Initialisierung und Abhängigkeitsinjektion
2. **MainActivity.kt**: Hauptaktivität, die Berechtigungen verwaltet und UI hostet
3. **ChatViewModel.kt**: MVVM-Muster zur Verwaltung des App-Zustands und der Geschäftslogik
4. **BluetoothMeshService.kt**: Zentrales BLE-Mesh-Netzwerk (Zentral- + Peripherierollen)
5. **EncryptionService.kt**: Kryptografische Operationen mit BouncyCastle
6. **BinaryProtocol.kt**: Binäre Paketkodierung/-Dekodierung passend zum iOS-Format
7. **ChatScreen.kt**: Jetpack Compose UI mit Material Design 3
### Abhängigkeiten
- **Jetpack Compose**: Modernes deklaratives UI
- **BouncyCastle**: Kryptografische Operationen (X25519, Ed25519, AES-GCM)
- **Nordic BLE Library**: Zuverlässige Bluetooth LE-Operationen
- **Kotlin Coroutinen**: Asynchrone Programmierung
- **LZ4**: Nachrichtenkompression (wenn aktiviert)
- **EncryptedSharedPreferences**: Sichere lokale Speicherung
### Binärprotokoll-Kompatibilität
Die Android-Implementierung behält 100% Binärprotokoll-Kompatibilität mit iOS bei:
- **Header-Format**: Identische 13-Byte-Header-Struktur
- **Pakettypen**: Gleiche Nachrichtentypen und Routing-Logik
- **Verschlüsselung**: Identische kryptografische Algorithmen und Schlüsselaustausch
- **UUIDs**: Gleiche Bluetooth-Dienst- und Charakteristik-Identifikatoren
- **Fragmentierung**: Kompatible Nachrichtenfragmentierung für große Inhalte
## Veröffentlichung bei Google Play
### Vorbereitung
1. **Versionsinformationen aktualisieren:**
```kotlin
// In app/build.gradle.kts
defaultConfig {
versionCode = 2 // Bei jedem Release erhöhen
versionName = "1.1.0" // Sichtbare Version für Benutzer
}
```
2. **Signierten Release-Build erstellen:**
```bash
./gradlew assembleRelease
```
3. **App-Bundle generieren (empfohlen für Play Store):**
```bash
./gradlew bundleRelease
```
### Play Store Anforderungen
- **Ziel-API**: Neueste Android API (derzeit 34)
- **Datenschutzerklärung**: Erforderlich für Apps, die sensible Berechtigungen anfordern
- **App-Berechtigungen**: Bluetooth- und Standortnutzung begründen
- **Alterseinstufung**: Fragebogen für altersgerechte Inhalte ausfüllen
### Vertrieb
- **Google Play Store**: Hauptvertriebskanal
- **F-Droid**: Für Open-Source-Verteilung
- **Direkte APK**: Für Tests und Entwicklung
## Plattformübergreifende Kommunikation
Dieser Android-Port ermöglicht eine nahtlose Kommunikation mit der ursprünglichen bitchat-iOS-App:
- **iPhone ↔ Android**: Volle bidirektionale Nachrichtenübermittlung
- **Gemischte Gruppen**: iOS- und Android-Benutzer in denselben Kanälen
- **Funktionsgleichheit**: Alle Befehle und Verschlüsselung funktionieren plattformübergreifend
- **Protokollsynchronisation**: Identisches Nachrichtenformat und Routingverhalten
**iOS-Version**: Für iPhone/iPad-Benutzer gibt es die originale bitchat unter [github.com/jackjackbits/bitchat](https://github.com/jackjackbits/bitchat)
## Mitwirken
Beiträge sind willkommen! Wichtige Bereiche für Verbesserungen:
1. **Leistung**: Akkuoptimierung und Verbindungszuverlässigkeit
2. **UI/UX**: Zusätzliche Material Design 3 Funktionen
3. **Sicherheit**: Erweiterte kryptografische Funktionen
4. **Tests**: Abdeckung durch Unit- und Integrationstests
5. **Dokumentation**: API-Dokumentation und Entwicklungsleitfäden
## Support & Probleme
- **Fehlermeldungen**: [Ein Issue erstellen](../../issues) mit Geräteinformationen und Logs
- **Funktionswünsche**: [Eine Diskussion starten](https://github.com/orgs/permissionlesstech/discussions)
- **Sicherheitsprobleme**: Sicherheitsbedenken per E-Mail vertraulich melden
- **iOS-Kompatibilität**: Querverweise zum [ursprünglichen iOS-Repo](https://github.com/jackjackbits/bitchat)
Für iOS-spezifische Probleme wenden Sie sich bitte an das [ursprüngliche iOS bitchat-Repository](https://github.com/jackjackbits/bitchat).