
App di messaggistica decentralizzata, crittografata, peer-to-peer su reti Bluetooth mesh. Nessuna connessione internet, server o numeri telefonici richiesti. Include crittografia X25519 + AES-256-GCM, comandi in stile IRC e compatibilità multipiattaforma con iOS.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10897/4adee5766836e3812e7f0051931df8c63da05d8d8db9a77f8c491d1ea45d195b.png" alt="Logo di Bitchat Android" width="480">
</p>
> [!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](https://github.com/jackjackbits/bitchat), 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](https://github.com/permissionlesstech/bitchat-android/releases).
Oppure puoi:
[<img alt="Scarica da 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)
**Istruzioni:**
1. **Scarica l'APK:** Sul tuo dispositivo Android, vai al link sopra e scarica l'ultimo file `.apk`. Aprilo.
2. **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**.
3. **Installa:** Apri il file `.apk` scaricato per iniziare l'installazione.
## Licenza
Questo progetto è rilasciato nel pubblico dominio. Vedi il file [LICENSE](https://github.com/permissionlesstech/bitchat-android/blob/main/LICENSE.md) 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
1. **Clona il repository:**
```bash
git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
```
2. **Apri in Android Studio:**
```bash
# Apri Android Studio e seleziona "Open an Existing Project"
# Vai alla directory bitchat-android
```
3. **Compila il progetto:**
```bash
./gradlew build
```
4. **Installa sul dispositivo:**
```bash
./gradlew installDebug
```
### Build di sviluppo
Per build di sviluppo con debug abilitato:
```bash
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
```
### Build di rilascio
Per versioni di produzione:
```bash
./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
1. **Installa l'app** sul tuo dispositivo Android (richiede Android 8.0+)
2. **Concedi le autorizzazioni** per Bluetooth e posizione quando richiesto
3. **Avvia bitchat** - avvierà automaticamente il networking mesh
4. **Imposta il tuo nickname** o usa quello generato automaticamente
5. **Connettiti automaticamente** agli utenti bitchat iOS e Android nelle vicinanze
6. **Unisciti a un canale** con `/j #generale` o inizia a chattare in pubblico
7. **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
1. **BitchatApplication.kt**: Inizializzazione a livello di applicazione e dependency injection
2. **MainActivity.kt**: Attività principale che gestisce le autorizzazioni e l'hosting dell'interfaccia
3. **ChatViewModel.kt**: Pattern MVVM che gestisce lo stato dell'app e la logica di business
4. **BluetoothMeshService.kt**: Networking mesh BLE principale (ruoli central + periferica)
5. **EncryptionService.kt**: Operazioni crittografiche utilizzando BouncyCastle
6. **BinaryProtocol.kt**: Codifica/decodifica di pacchetti binari che corrispondono al formato iOS
7. **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
1. **Aggiorna le informazioni sulla versione:**
```kotlin
// In app/build.gradle.kts
defaultConfig {
versionCode = 2 // Incrementa per ogni rilascio
versionName = "1.1.0" // Versione visibile all'utente
}
```
2. **Crea una build di rilascio firmata:**
```bash
./gradlew assembleRelease
```
3. **Genera il bundle dell'app (consigliato per Play Store):**
```bash
./gradlew bundleRelease
```
### 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
## Comunicazione multipiattaforma
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](https://github.com/jackjackbits/bitchat)
## Contribuire
I contributi sono benvenuti! Aree chiave per miglioramenti:
1. **Prestazioni**: Ottimizzazione della batteria e affidabilità della connessione
2. **UI/UX**: Funzionalità aggiuntive di Material Design 3
3. **Sicurezza**: Funzionalità crittografiche potenziate
4. **Test**: Copertura dei test unitari e di integrazione
5. **Documentazione**: Documentazione API e guide di sviluppo
## Supporto e problemi
- **Segnalazione bug**: [Crea un issue](../../issues) con informazioni sul dispositivo e log
- **Richiesta funzionalità**: [Avvia una discussione](https://github.com/orgs/permissionlesstech/discussions)
- **Problemi di sicurezza**: Invia le preoccupazioni di sicurezza privatamente via email
- **Compatibilità iOS**: Riferimento incrociato con [repository iOS originale](https://github.com/jackjackbits/bitchat)
Per problemi specifici di iOS, fai riferimento al [repository originale bitchat per iOS](https://github.com/jackjackbits/bitchat).