[!WARNING]
Questo software non ha ricevuto una revisione di sicurezza esterna e potrebbe contenere vulnerabilità e potrebbe non soddisfare i propri obiettivi di sicurezza dichiarati. Non utilizzarlo per casi d'uso sensibili e non fare affidamento sulla sua sicurezza finché non sarà stato revisionato. Lavori in corso.
bitchat per Android
Un'app di messaggistica sicura, decentralizzata e da pari a pari che funziona su reti mesh Bluetooth. Nessuna connessione Internet necessaria per le chat mesh, nessun server, nessun numero di telefono: solo comunicazione crittografata pura. Bitchat supporta anche canali geohash, che utilizzano una connessione Internet per metterti in contatto con altri nella tua area geografica.
Questo è il porting Android dell'originale app bitchat per iOS, mantenendo la compatibilità al 100% del protocollo per la comunicazione multipiattaforma.
Installa bitchat
Puoi scaricare l'ultima versione di bitchat per Android dalla pagina delle Release su GitHub.
Oppure puoi:

Istruzioni:
- Scarica l'APK: Sul tuo dispositivo Android, vai al link sopra e scarica l'ultimo file
.apk. Aprilo.
- Consenti origini sconosciute: Su alcuni dispositivi, prima di poter installare l'APK, potresti dover abilitare "Installa da origini sconosciute" nelle impostazioni del dispositivo. Di solito si trova in Impostazioni > Sicurezza o Impostazioni > App e notifiche > Accesso speciale alle app.
- Installa: Apri il file
.apk scaricato per iniziare l'installazione.
Licenza
Questo progetto è rilasciato nel pubblico dominio. Vedi il file LICENSE per i dettagli.
Funzionalità
- ✅ Compatibile multipiattaforma: Piena compatibilità del protocollo con bitchat iOS
- ✅ Rete mesh decentralizzata: Scoperta automatica dei peer e inoltro di messaggi multi-hop tramite Bluetooth LE
- ✅ Crittografia end-to-end: Scambio di chiavi X25519 + AES-256-GCM per messaggi privati
- ✅ Chat basate su canali: Messaggistica di gruppo basata su argomenti con protezione opzionale tramite password
- ✅ Memorizza e inoltra: Messaggi memorizzati nella cache per i peer offline e consegnati quando si riconnettono
- ✅ Privacy prima di tutto: Nessun account, nessun numero di telefono, nessun identificatore persistente
- ✅ Comandi stile IRC: Interfaccia familiare
/join, /msg, /who
- ✅ Conservazione dei messaggi: Salvataggio opzionale dei messaggi a livello di canale controllato dai proprietari del canale
- ✅ Pulizia di emergenza: Triplo tocco sul logo per cancellare istantaneamente tutti i dati
- ✅ Interfaccia Android moderna: Jetpack Compose con Material Design 3
- ✅ Temi scuro/chiaro: Estetica ispirata al terminale che corrisponde alla versione iOS
- ✅ Ottimizzazione della batteria: Scansione adattiva e gestione dell'alimentazione
Configurazione Android
Prerequisiti
- Android Studio: Arctic Fox (2020.3.1) o successivo
- Android SDK: API livello 26 (Android 8.0) o superiore
- Kotlin: 1.8.0 o successivo
- Gradle: 7.0 o successivo
Istruzioni di compilazione
-
Clona il repository:
git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
-
Apri in Android Studio:
# Apri Android Studio e seleziona "Open an Existing Project"
# Vai alla directory bitchat-android
-
Compila il progetto:
-
Installa sul dispositivo:
Build di sviluppo
Per build di sviluppo con debug abilitato:
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
Build di rilascio
Per versioni di produzione:
./gradlew assembleRelease
Requisiti specifici per Android
Autorizzazioni
L'app richiede le seguenti autorizzazioni (richieste automaticamente):
- Bluetooth: Funzionalità BLE principali
- Posizione: Necessaria per la scansione BLE su Android
- Rete: Espandi la tua mesh attraverso relay Internet pubblici
- Notifiche: Avvisi di messaggi e aggiornamenti in background
Requisiti hardware
- Bluetooth LE (BLE): Necessario per la rete mesh
- Android 8.0+: API livello 26 minimo
- RAM: 2 GB consigliati per prestazioni ottimali
Utilizzo
Comandi di base
/j #canale - Unisciti o crea un canale
/m @nome messaggio - Invia un messaggio privato
/w - Elenca utenti online
/channels - Mostra tutti i canali scoperti
/block @nome - Blocca un peer dal mandarti messaggi
/block - Elenca tutti i peer bloccati
/unblock @nome - Sblocca un peer
/clear - Cancella i messaggi della chat
/pass [password] - Imposta/cambia la password del canale (solo proprietario)
/transfer @nome - Trasferisci la proprietà del canale
/save - Attiva/disattiva la conservazione dei messaggi per il canale (solo proprietario)
Per iniziare
- Installa l'app sul tuo dispositivo Android (richiede Android 8.0+)
- Concedi le autorizzazioni per Bluetooth e posizione quando richiesto
- Avvia bitchat - avvierà automaticamente il networking mesh
- Imposta il tuo nickname o usa quello generato automaticamente
- Connettiti automaticamente agli utenti bitchat iOS e Android nelle vicinanze
- Unisciti a un canale con
/j #generale o inizia a chattare in pubblico
- I messaggi vengono inoltrati attraverso la rete mesh per raggiungere peer lontani
Funzionalità dell'interfaccia Android
- Interfaccia Jetpack Compose: Moderna interfaccia Material Design 3
- Temi scuro/chiaro: Estetica ispirata al terminale che corrisponde a iOS
- Feedback aptico: Vibrazioni per interazioni e notifiche
- Layout adattivo: Ottimizzato per varie dimensioni dello schermo Android
- Stato dei messaggi: Ricevute di consegna e lettura in tempo reale
- Indicatori RSSI: Colori dell'intensità del segnale per ogni peer
Funzionalità dei canali
- Protezione tramite password: I proprietari del canale possono impostare password con
/pass
- Conservazione dei messaggi: I proprietari possono abilitare il salvataggio obbligatorio dei messaggi con
/save
- Menzioni @: Usa
@nickname per menzionare utenti (con completamento automatico)
- Trasferimento di proprietà: Passa il controllo a utenti fidati con
/transfer
Sicurezza e privacy
Crittografia
- Messaggi privati: Scambio di chiavi X25519 + crittografia AES-256-GCM
- Messaggi di canale: Derivazione password Argon2id + AES-256-GCM
- Firme digitali: Ed25519 per l'autenticità dei messaggi
- Segretezza perfetta in avanti: Nuove coppie di chiavi generate ogni sessione
Funzionalità di privacy
- Nessuna registrazione: Nessun account, email o numero di telefono richiesto
- Effimero per impostazione predefinita: I messaggi esistono solo nella memoria del dispositivo
- Traffico di copertura: Ritardi casuali e messaggi fittizi impediscono l'analisi del traffico
- Pulizia di emergenza: Triplo tocco sul logo per cancellare istantaneamente tutti i dati
- Supporto Tor integrato: Integrazione della rete Tor integrata per una maggiore privacy quando la connettività Internet è disponibile
Prestazioni ed efficienza
Compressione dei messaggi
- Compressione LZ4: Compressione automatica per messaggi > 100 byte
- Risparmio di larghezza di banda del 30-70% su messaggi di testo tipici
- Compressione intelligente: Salta i dati già compressi
Ottimizzazione della batteria
- Modalità di alimentazione adattiva: Si adatta automaticamente in base al livello della batteria
- Modalità prestazioni: Funzionalità complete durante la ricarica o batteria > 60%
- Modalità bilanciata: Funzionamento predefinito (30-60% batteria)
- Risparmio energetico: Scansione ridotta quando batteria < 30%
- Potenza ultra-bassa: Modalità di emergenza quando batteria < 10%
- Efficienza in background: Risparmio energetico automatico quando l'app è in background
- Scansione configurabile: Ciclo di lavoro adattato allo stato della batteria
Efficienza di rete
- Filtri Bloom ottimizzati: Rilevamento più rapido dei duplicati con meno memoria
- Aggregazione dei messaggi: Raggruppa messaggi piccoli per ridurre le trasmissioni
- Limiti di connessione adattivi: Regola le connessioni peer in base alla modalità di alimentazione
Architettura tecnica
Protocollo binario
bitchat utilizza un efficiente protocollo binario ottimizzato per Bluetooth LE:
- Formato pacchetto compatto con campo tipo di 1 byte
- Routing dei messaggi basato su TTL (massimo 7 hop)
- Frammentazione automatica per messaggi grandi
- Deduplicazione dei messaggi tramite ID univoci
Rete mesh
- Ogni dispositivo agisce sia come client che come periferica
- Scoperta automatica dei peer e gestione delle connessioni
- Memorizza e inoltra per la consegna di messaggi offline
- Ciclo di lavoro adattivo per l'ottimizzazione della batteria
Ottimizzazioni specifiche per Android
- Architettura a coroutine: Operazioni asincrone per il networking mesh
- Coroutine Kotlin: Operazioni mesh concorrenti thread-safe
- EncryptedSharedPreferences: Archiviazione sicura per le impostazioni utente
- Lifecycle-aware: Gestione corretta del ciclo di vita dell'app Android
- Ottimizzazione della batteria: Servizio in primo piano e scansione adattiva
Architettura tecnica Android
Componenti principali
- BitchatApplication.kt: Inizializzazione a livello di applicazione e dependency injection
- MainActivity.kt: Attività principale che gestisce le autorizzazioni e l'hosting dell'interfaccia
- ChatViewModel.kt: Pattern MVVM che gestisce lo stato dell'app e la logica di business
- BluetoothMeshService.kt: Networking mesh BLE principale (ruoli central + periferica)
- EncryptionService.kt: Operazioni crittografiche utilizzando BouncyCastle
- BinaryProtocol.kt: Codifica/decodifica di pacchetti binari che corrispondono al formato iOS
- ChatScreen.kt: Interfaccia Jetpack Compose con Material Design 3
Dipendenze
- Jetpack Compose: Interfaccia dichiarativa moderna
- BouncyCastle: Operazioni crittografiche (X25519, Ed25519, AES-GCM)
- Libreria BLE Nordic: Operazioni Bluetooth LE affidabili
- Coroutine Kotlin: Programmazione asincrona
- LZ4: Compressione dei messaggi (quando abilitata)
- EncryptedSharedPreferences: Archiviazione locale sicura
Compatibilità del protocollo binario
L'implementazione Android mantiene la compatibilità al 100% del protocollo binario con iOS:
- Formato dell'intestazione: Struttura dell'intestazione identica a 13 byte
- Tipi di pacchetto: Stessi tipi di messaggio e logica di routing
- Crittografia: Algoritmi crittografici e scambio di chiavi identici
- UUID: Identificatori di servizio e caratteristica Bluetooth identici
- Frammentazione: Frammentazione dei messaggi compatibile per contenuti grandi
Pubblicazione su Google Play
Preparazione
-
Aggiorna le informazioni sulla versione:
// In app/build.gradle.kts
defaultConfig {
versionCode = 2 // Incrementa per ogni rilascio
versionName = "1.1.0" // Versione visibile all'utente
}
-
Crea una build di rilascio firmata:
./gradlew assembleRelease
-
Genera il bundle dell'app (consigliato per Play Store):
Requisiti del Play Store
- API target: Ultima API Android (attualmente 34)
- Informativa sulla privacy: Richiesta per app che richiedono autorizzazioni sensibili
- Autorizzazioni dell'app: Giustifica l'uso di Bluetooth e posizione
- Classificazione dei contenuti: Compila il questionario per contenuti adatti all'età
Distribuzione
- Google Play Store: Canale di distribuzione principale
- F-Droid: Per la distribuzione open-source
- APK diretto: Per test e sviluppo
Questo porting Android consente una comunicazione senza soluzione di continuità con l'app bitchat originale per iOS:
- iPhone ↔ Android: Messaggistica bidirezionale completa
- Gruppi misti: Utenti iOS e Android negli stessi canali
- Parità di funzionalità: Tutti i comandi e la crittografia funzionano su entrambe le piattaforme
- Sincronizzazione del protocollo: Formato del messaggio e comportamento di routing identici
Versione iOS: Per utenti iPhone/iPad, ottieni l'originale bitchat su github.com/jackjackbits/bitchat
Contribuire
I contributi sono benvenuti! Aree chiave per miglioramenti:
- Prestazioni: Ottimizzazione della batteria e affidabilità della connessione
- UI/UX: Funzionalità aggiuntive di Material Design 3
- Sicurezza: Funzionalità crittografiche potenziate
- Test: Copertura dei test unitari e di integrazione
- Documentazione: Documentazione API e guide di sviluppo
Supporto e problemi
Per problemi specifici di iOS, fai riferimento al repository originale bitchat per iOS.