
bitchat-android v2.0.1
Aplicación de mensajería peer-to-peer descentralizada y cifrada a través de redes Bluetooth mesh. No requiere internet, servidores ni números de teléfono. Incluye cifrado X25519 + AES-256-GCM, comandos estilo IRC y compatibilidad multiplataforma con iOS.
[!WARNING] Este software no ha recibido una revisión de seguridad externa y puede contener vulnerabilidades; no cumple necesariamente con sus objetivos de seguridad declarados. No lo utilices para casos de uso sensibles ni confíes en su seguridad hasta que haya sido revisado. Trabajo en progreso.
bitchat para Android
Una aplicación de mensajería segura, descentralizada y peer-to-peer que funciona sobre redes de malla Bluetooth. No necesita internet para chats en malla, no hay servidores, no hay números de teléfono, solo comunicación cifrada pura. Bitchat también admite canales geohash, que utilizan una conexión a internet para conectarte con otros en tu área geográfica.
Esta es la versión para Android de la aplicación original bitchat para iOS, manteniendo un 100% de compatibilidad de protocolo para comunicación multiplataforma.
Instalar bitchat
Puedes descargar la última versión de bitchat para Android desde la página de lanzamientos de GitHub.
O también puedes:
Instrucciones:
- Descargar el APK: En tu dispositivo Android, navega al enlace de arriba y descarga el archivo
.apkmás reciente. Ábrelo. - Permitir orígenes desconocidos: En algunos dispositivos, antes de poder instalar el APK, es posible que necesites habilitar "Instalar desde orígenes desconocidos" en la configuración de tu dispositivo. Normalmente se encuentra en Configuración > Seguridad o Configuración > Aplicaciones y notificaciones > Acceso especial de aplicaciones.
- Instalar: Abre el archivo
.apkdescargado para comenzar la instalación.
Licencia
Este proyecto se libera al dominio público. Consulta el archivo LICENSE para más detalles.
Características
- ✅ Compatible multiplataforma: Compatibilidad total de protocolo con bitchat iOS
- ✅ Red de malla descentralizada: Descubrimiento automático de pares y retransmisión de mensajes multi-salto mediante Bluetooth LE
- ✅ Cifrado de extremo a extremo: Intercambio de claves X25519 + AES-256-GCM para mensajes privados
- ✅ Chats basados en canales: Mensajería grupal por temas con protección opcional por contraseña
- ✅ Almacenar y reenviar: Mensajes almacenados en caché para pares desconectados y entregados cuando se reconectan
- ✅ Privacidad primero: Sin cuentas, sin números de teléfono, sin identificadores persistentes
- ✅ Comandos estilo IRC: Interfaz familiar con
/join,/msg,/who - ✅ Retención de mensajes: Guardado opcional de mensajes a nivel de canal controlado por los propietarios del canal
- ✅ Borrado de emergencia: Toca tres veces el logotipo para borrar instantáneamente todos los datos
- ✅ Interfaz moderna de Android: Jetpack Compose con Material Design 3
- ✅ Temas oscuro/claro: Estética inspirada en terminal que coincide con la versión iOS
- ✅ Optimización de batería: Escaneo adaptativo y administración de energía
Configuración de Android
Requisitos previos
- Android Studio: Arctic Fox (2020.3.1) o más reciente
- Android SDK: API nivel 26 (Android 8.0) o superior
- Kotlin: 1.8.0 o más reciente
- Gradle: 7.0 o más reciente
Instrucciones de compilación
-
Clonar el repositorio:
git clone https://github.com/permissionlesstech/bitchat-android.git cd bitchat-android -
Abrir en Android Studio:
# Abre Android Studio y selecciona "Abrir un proyecto existente" # Navega al directorio bitchat-android -
Compilar el proyecto:
./gradlew build -
Instalar en el dispositivo:
./gradlew installDebug
Compilación de desarrollo
Para compilaciones de desarrollo con depuración habilitada:
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
Compilación de lanzamiento
Para lanzamientos de producción:
./gradlew assembleRelease
Requisitos específicos de Android
Permisos
La aplicación requiere los siguientes permisos (solicitados automáticamente):
- Bluetooth: Funcionalidad BLE principal
- Ubicación: Requerido para el escaneo BLE en Android
- Red: Expande tu malla a través de repetidores públicos de internet
- Notificaciones: Alertas de mensajes y actualizaciones en segundo plano
Requisitos de hardware
- Bluetooth LE (BLE): Necesario para la red de malla
- Android 8.0+: API nivel 26 mínimo
- RAM: Se recomiendan 2 GB para un rendimiento óptimo
Uso
Comandos básicos
/j #canal- Unirse o crear un canal/m @nombre mensaje- Enviar un mensaje privado/w- Listar usuarios en línea/channels- Mostrar todos los canales descubiertos/block @nombre- Bloquear a un par para que no te envíe mensajes/block- Listar todos los pares bloqueados/unblock @nombre- Desbloquear a un par/clear- Limpiar los mensajes del chat/pass [contraseña]- Establecer/cambiar la contraseña del canal (solo propietario)/transfer @nombre- Transferir la propiedad del canal/save- Activar/desactivar la retención de mensajes para el canal (solo propietario)
Primeros pasos
- Instala la aplicación en tu dispositivo Android (requiere Android 8.0+)
- Concede permisos de Bluetooth y ubicación cuando se te solicite
- Inicia bitchat - iniciará automáticamente la red de malla
- Establece tu apodo o usa el generado automáticamente
- Conéctate automáticamente a usuarios cercanos de bitchat iOS y Android
- Únete a un canal con
/j #generalo comienza a chatear en público - Los mensajes se retransmiten a través de la red de malla para llegar a pares distantes
Funciones de la interfaz de Android
- Interfaz Jetpack Compose: Interfaz moderna de Material Design 3
- Temas oscuro/claro: Estética inspirada en terminal que coincide con iOS
- Retroalimentación háptica: Vibraciones para interacciones y notificaciones
- Diseño adaptativo: Optimizado para varios tamaños de pantalla Android
- Estado de mensajes: Confirmaciones de entrega y lectura en tiempo real
- Indicadores RSSI: Colores de intensidad de señal para cada par
Funciones de los canales
- Protección por contraseña: Los propietarios del canal pueden establecer contraseñas con
/pass - Retención de mensajes: Los propietarios pueden habilitar el guardado obligatorio de mensajes con
/save - Menciones @: Usa
@apodopara mencionar usuarios (con autocompletado) - Transferencia de propiedad: Pasa el control a usuarios de confianza con
/transfer
Seguridad y privacidad
Cifrado
- Mensajes privados: Intercambio de claves X25519 + cifrado AES-256-GCM
- Mensajes de canal: Derivación de contraseña Argon2id + AES-256-GCM
- Firmas digitales: Ed25519 para autenticidad de mensajes
- Secreto perfecto hacia adelante: Nuevos pares de claves generados en cada sesión
Funciones de privacidad
- Sin registro: No se requieren cuentas, correos electrónicos ni números de teléfono
- Efímero por defecto: Los mensajes existen solo en la memoria del dispositivo
- Tráfico de cobertura: Retrasos aleatorios y mensajes ficticios para evitar el análisis de tráfico
- Borrado de emergencia: Toca tres veces el logotipo para borrar instantáneamente todos los datos
- Soporte Tor incluido: Integración de red Tor incorporada para mayor privacidad cuando hay conectividad a internet
Rendimiento y eficiencia
Compresión de mensajes
- Compresión LZ4: Compresión automática para mensajes >100 bytes
- Ahorro del 30-70% de ancho de banda en mensajes de texto típicos
- Compresión inteligente: Omite datos ya comprimidos
Optimización de batería
- Modos de energía adaptativos: Se ajusta automáticamente según el nivel de batería
- Modo rendimiento: Funciones completas mientras se carga o batería >60%
- Modo equilibrado: Funcionamiento por defecto (30-60% de batería)
- Ahorro de energía: Escaneo reducido cuando batería <30%
- Batería ultra baja: Modo de emergencia cuando batería <10%
- Eficiencia en segundo plano: Ahorro de energía automático cuando la aplicación está en segundo plano
- Escaneo configurable: Ciclo de trabajo adaptado al estado de la batería
Eficiencia de red
- Filtros Bloom optimizados: Detección de duplicados más rápida con menos memoria
- Agregación de mensajes: Agrupa mensajes pequeños para reducir transmisiones
- Límites de conexión adaptativos: Ajusta las conexiones de pares según el modo de energía
Arquitectura técnica
Protocolo binario
bitchat utiliza un protocolo binario eficiente optimizado para Bluetooth LE:
- Formato de paquete compacto con campo de tipo de 1 byte
- Enrutamiento de mensajes basado en TTL (máximo 7 saltos)
- Fragmentación automática para mensajes grandes
- Deduplicación de mensajes mediante ID únicos
Red de malla
- Cada dispositivo actúa como cliente y periférico
- Descubrimiento automático de pares y gestión de conexiones
- Almacenar y reenviar para entrega de mensajes sin conexión
- Ciclo de trabajo adaptativo para optimización de batería
Optimizaciones específicas de Android
- Arquitectura de corrutinas: Operaciones asíncronas para la red de malla
- Corrutinas de Kotlin: Operaciones de malla concurrentes seguras para hilos
- EncryptedSharedPreferences: Almacenamiento seguro para configuraciones de usuario
- Consciente del ciclo de vida: Manejo adecuado del ciclo de vida de la aplicación Android
- Optimización de batería: Servicio en primer plano y escaneo adaptativo
Arquitectura técnica de Android
Componentes principales
- BitchatApplication.kt: Inicialización a nivel de aplicación e inyección de dependencias
- MainActivity.kt: Actividad principal que maneja permisos y aloja la interfaz de usuario
- ChatViewModel.kt: Patrón MVVM que gestiona el estado de la aplicación y la lógica de negocio
- BluetoothMeshService.kt: Red de malla BLE central (roles central + periférico)
- EncryptionService.kt: Operaciones criptográficas usando BouncyCastle
- BinaryProtocol.kt: Codificación/decodificación de paquetes binarios que coincide con el formato iOS
- ChatScreen.kt: Interfaz Jetpack Compose con Material Design 3
Dependencias
- Jetpack Compose: Interfaz de usuario declarativa moderna
- BouncyCastle: Operaciones criptográficas (X25519, Ed25519, AES-GCM)
- Biblioteca Nordic BLE: Operaciones Bluetooth LE confiables
- Corrutinas de Kotlin: Programación asíncrona
- LZ4: Compresión de mensajes (cuando está habilitada)
- EncryptedSharedPreferences: Almacenamiento local seguro
Compatibilidad del protocolo binario
La implementación de Android mantiene un 100% de compatibilidad de protocolo binario con iOS:
- Formato de cabecera: Estructura de cabecera idéntica de 13 bytes
- Tipos de paquete: Mismos tipos de mensaje y lógica de enrutamiento
- Cifrado: Algoritmos criptográficos y de intercambio de claves idénticos
- UUIDs: Mismos identificadores de servicio y característica Bluetooth
- Fragmentación: Fragmentación de mensajes compatible para contenido grande
Publicación en Google Play
Preparación
-
Actualizar información de versión:
// En app/build.gradle.kts defaultConfig { versionCode = 2 // Incrementar para cada lanzamiento versionName = "1.1.0" // Versión visible para el usuario } -
Crear una compilación de lanzamiento firmada:
./gradlew assembleRelease -
Generar paquete de aplicación (recomendado para Play Store):
./gradlew bundleRelease
Requisitos de Play Store
- API objetivo: Última API de Android (actualmente 34)
- Política de privacidad: Requerida para aplicaciones que solicitan permisos sensibles
- Permisos de la aplicación: Justificar el uso de Bluetooth y ubicación
- Clasificación de contenido: Completar cuestionario para contenido apropiado para la edad
Distribución
- Google Play Store: Canal de distribución principal
- F-Droid: Para distribución de código abierto
- APK directo: Para pruebas y desarrollo
Comunicación multiplataforma
Esta versión para Android permite una comunicación fluida con la aplicación original de bitchat para iOS:
- iPhone ↔ Android: Mensajería bidireccional completa
- Grupos mixtos: Usuarios de iOS y Android en los mismos canales
- Paridad de funciones: Todos los comandos y el cifrado funcionan en ambas plataformas
- Sincronización de protocolo: Formato de mensaje y comportamiento de enrutamiento idénticos
Versión iOS: Para usuarios de iPhone/iPad, obtén la aplicación original de bitchat en github.com/jackjackbits/bitchat
Contribuir
¡Las contribuciones son bienvenidas! Áreas clave para mejorar:
- Rendimiento: Optimización de batería y confiabilidad de conexión
- UI/UX: Características adicionales de Material Design 3
- Seguridad: Funciones criptográficas mejoradas
- Pruebas: Cobertura de pruebas unitarias y de integración
- Documentación: Documentación de API y guías de desarrollo
Soporte e incidencias
- Informes de errores: Crear una incidencia con información del dispositivo y registros
- Solicitudes de funciones: Iniciar una discusión
- Problemas de seguridad: Enviar preocupaciones de seguridad de forma privada por correo electrónico
- Compatibilidad con iOS: Referencia cruzada con el repositorio iOS original
Para problemas específicos de iOS, consulta el repositorio original de bitchat para iOS.
