
bitchat-android v2.0.1
Децентрализованное зашифрованное P2P-приложение для обмена сообщениями через Bluetooth-сети. Не требует интернета, серверов или номеров телефона. Включает шифрование X25519 + AES-256-GCM, IRC-подобные команды и кроссплатформенную совместимость с iOS.
[!WARNING] Это программное обеспечение не проходило внешнюю проверку безопасности и может содержать уязвимости, а также может не соответствовать заявленным целям безопасности. Не используйте его для чувствительных сценариев и не полагайтесь на его безопасность, пока оно не будет проверено. Работа в процессе.
bitchat для Android
Безопасное, децентрализованное, одноранговое приложение для обмена сообщениями, работающее через Bluetooth-ячеистые сети. Для ячеистых чатов не требуется интернет, нет серверов, нет телефонных номеров — только чистое зашифрованное общение. Bitchat также поддерживает geohash-каналы, которые используют интернет-соединение для связи с другими людьми в вашем географическом районе.
Это Android-порт оригинального bitchat iOS-приложения, сохраняющий 100% совместимость протоколов для кроссплатформенного общения.
Установка bitchat
Вы можете скачать последнюю версию bitchat для Android на странице релизов GitHub.
Или вы можете:
Инструкции:
- Скачайте APK: На вашем Android-устройстве перейдите по ссылке выше и скачайте последний файл
.apk. Откройте его. - Разрешите установку из неизвестных источников: На некоторых устройствах перед установкой APK может потребоваться включить «Установка из неизвестных источников» в настройках устройства. Обычно это находится в разделе Настройки > Безопасность или Настройки > Приложения и уведомления > Специальный доступ к приложениям.
- Установите: Откройте загруженный файл
.apk, чтобы начать установку.
Лицензия
Этот проект выпущен в общественное достояние. Подробности см. в файле LICENSE.
Возможности
- ✅ Кроссплатформенная совместимость: Полная совместимость протоколов с iOS bitchat
- ✅ Децентрализованная ячеистая сеть: Автоматическое обнаружение пиров и многошаговая ретрансляция сообщений через Bluetooth LE
- ✅ Сквозное шифрование: Обмен ключами X25519 + AES-256-GCM для личных сообщений
- ✅ Чаты по каналам: Групповой обмен сообщениями по темам с возможной защитой паролем
- ✅ Хранение и пересылка: Сообщения кэшируются для офлайн-пиров и доставляются при их повторном подключении
- ✅ Конфиденциальность прежде всего: Никаких аккаунтов, телефонных номеров, постоянных идентификаторов
- ✅ Команды в стиле IRC: Привычный интерфейс
/join,/msg,/who - ✅ Сохранение сообщений: Необязательное сохранение сообщений по всему каналу, управляемое владельцами каналов
- ✅ Аварийное стирание: Тройной тап по логотипу для мгновенной очистки всех данных
- ✅ Современный Android-интерфейс: Jetpack Compose с Material Design 3
- ✅ Тёмная/светлая темы: Эстетика в стиле терминала, соответствующая версии iOS
- ✅ Оптимизация батареи: Адаптивное сканирование и управление питанием
Настройка Android
Предварительные требования
- Android Studio: Arctic Fox (2020.3.1) или новее
- Android SDK: Уровень API 26 (Android 8.0) или выше
- Kotlin: 1.8.0 или новее
- Gradle: 7.0 или новее
Инструкции по сборке
-
Клонируйте репозиторий:
git clone https://github.com/permissionlesstech/bitchat-android.git cd bitchat-android -
Откройте в Android Studio:
# Open Android Studio and select "Open an Existing Project" # Navigate to the bitchat-android directory -
Соберите проект:
./gradlew build -
Установите на устройство:
./gradlew installDebug
Сборка для разработки
Для сборок для разработки с включённой отладкой:
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
Сборка релиза
Для производственных релизов:
./gradlew assembleRelease
Требования для Android
Разрешения
Приложение требует следующие разрешения (запрашиваются автоматически):
- Bluetooth: Основная функциональность BLE
- Местоположение: Требуется для сканирования BLE на Android
- Сеть: Расширение вашей ячеистой сети через публичные интернет-ретрансляторы
- Уведомления: Оповещения о сообщениях и фоновые обновления
Требования к оборудованию
- Bluetooth LE (BLE): Требуется для ячеистой сети
- Android 8.0+: Минимум уровень API 26
- ОЗУ: Рекомендуется 2 ГБ для оптимальной производительности
Использование
Основные команды
/j #channel— Присоединиться или создать канал/m @name сообщение— Отправить личное сообщение/w— Список онлайн-пользователей/channels— Показать все обнаруженные каналы/block @name— Заблокировать пира от отправки вам сообщений/block— Список всех заблокированных пиров/unblock @name— Разблокировать пира/clear— Очистить сообщения чата/pass [пароль]— Установить/изменить пароль канала (только владелец)/transfer @name— Передать владение каналом/save— Включить/выключить сохранение сообщений для канала (только владелец)
Начало работы
- Установите приложение на ваше Android-устройство (требуется Android 8.0+)
- Предоставьте разрешения для Bluetooth и местоположения при запросе
- Запустите bitchat — он автоматически запустит ячеистую сеть
- Установите свой никнейм или используйте автоматически сгенерированный
- Автоматически подключайтесь к ближайшим пользователям bitchat на iOS и Android
- Присоединитесь к каналу с помощью
/j #generalили начните общаться в публичном чате - Сообщения ретранслируются через ячеистую сеть для достижения удалённых пиров
Особенности Android-интерфейса
- Jetpack Compose UI: Современный интерфейс Material Design 3
- Тёмная/светлая темы: Эстетика в стиле терминала, соответствующая iOS
- Тактильная обратная связь: Вибрации для взаимодействий и уведомлений
- Адаптивная компоновка: Оптимизирована для различных размеров экранов Android
- Статус сообщений: Уведомления о доставке и прочтении в реальном времени
- Индикаторы RSSI: Цвета силы сигнала для каждого пира
Возможности каналов
- Защита паролем: Владельцы каналов могут устанавливать пароли с помощью
/pass - Сохранение сообщений: Владельцы могут включить обязательное сохранение сообщений с помощью
/save - @Упоминания: Используйте
@nicknameдля упоминания пользователей (с автодополнением) - Передача владения: Передайте управление доверенным пользователям с помощью
/transfer
Безопасность и конфиденциальность
Шифрование
- Личные сообщения: Обмен ключами X25519 + шифрование AES-256-GCM
- Сообщения каналов: Вывод ключа из пароля Argon2id + AES-256-GCM
- Цифровые подписи: Ed25519 для подлинности сообщений
- Совершенная прямая секретность: Каждая сессия генерирует новые пары ключей
Функции конфиденциальности
- Без регистрации: Не требуются аккаунты, электронная почта или телефонные номера
- Эфемерность по умолчанию: Сообщения существуют только в памяти устройства
- Маскировочный трафик: Случайные задержки и фиктивные сообщения предотвращают анализ трафика
- Аварийное стирание: Тройной тап по логотипу для мгновенной очистки всех данных
- Встроенная поддержка Tor: Встроенная интеграция с сетью Tor для повышенной конфиденциальности при наличии подключения к интернету
Производительность и эффективность
Сжатие сообщений
- Сжатие LZ4: Автоматическое сжатие сообщений размером более 100 байт
- Экономия пропускной способности на 30–70% для типичных текстовых сообщений
- Умное сжатие: Пропускает уже сжатые данные
Оптимизация батареи
- Адаптивные режимы питания: Автоматически регулируется в зависимости от уровня заряда батареи
- Режим производительности: полная функциональность при зарядке или заряде >60%
- Сбалансированный режим: работа по умолчанию (заряд 30–60%)
- Энергосбережение: сниженное сканирование при заряде <30%
- Ультранизкое энергопотребление: аварийный режим при заряде <10%
- Эффективность в фоне: Автоматическая экономия энергии, когда приложение в фоне
- Настраиваемое сканирование: Рабочий цикл адаптируется к состоянию батареи
Эффективность сети
- Оптимизированные фильтры Блума: Более быстрое обнаружение дубликатов с меньшим использованием памяти
- Агрегация сообщений: Пакетирование маленьких сообщений для уменьшения числа передач
- Адаптивные лимиты соединений: Регулирует подключения пиров в зависимости от режима питания
Техническая архитектура
Бинарный протокол
bitchat использует эффективный бинарный протокол, оптимизированный для Bluetooth LE:
- Компактный формат пакетов с 1-байтовым полем типа
- Маршрутизация сообщений на основе TTL (максимум 7 прыжков)
- Автоматическая фрагментация больших сообщений
- Дедупликация сообщений по уникальным идентификаторам
Ячеистая сеть
- Каждое устройство выступает как в роли клиента, так и периферийного устройства
- Автоматическое обнаружение пиров и управление соединениями
- Хранение и пересылка для доставки сообщений офлайн
- Адаптивное циклирование для оптимизации батареи
Оптимизации для Android
- Архитектура на корутинах: Асинхронные операции для ячеистой сети
- Корутины Kotlin: Потокобезопасные параллельные операции в ячеистой сети
- EncryptedSharedPreferences: Безопасное хранение настроек пользователя
- Учёт жизненного цикла: Правильная обработка жизненного цикла Android-приложения
- Оптимизация батареи: Фоновый сервис и адаптивное сканирование
Техническая архитектура Android
Основные компоненты
- BitchatApplication.kt: Инициализация на уровне приложения и внедрение зависимостей
- MainActivity.kt: Главная активность, обрабатывающая разрешения и размещение UI
- ChatViewModel.kt: Паттерн MVVM, управляющий состоянием приложения и бизнес-логикой
- BluetoothMeshService.kt: Основная BLE-ячеистая сеть (центральная + периферийная роли)
- EncryptionService.kt: Криптографические операции с использованием BouncyCastle
- BinaryProtocol.kt: Кодирование/декодирование бинарных пакетов, совместимое с форматом iOS
- ChatScreen.kt: Jetpack Compose UI с Material Design 3
Зависимости
- Jetpack Compose: Современный декларативный UI
- BouncyCastle: Криптографические операции (X25519, Ed25519, AES-GCM)
- Nordic BLE Library: Надёжные операции Bluetooth LE
- Kotlin Coroutines: Асинхронное программирование
- LZ4: Сжатие сообщений (при включении)
- EncryptedSharedPreferences: Безопасное локальное хранение
Совместимость бинарного протокола
Реализация Android сохраняет 100% совместимость бинарного протокола с iOS:
- Формат заголовка: Идентичная 13-байтовая структура заголовка
- Типы пакетов: Те же типы сообщений и логика маршрутизации
- Шифрование: Идентичные криптографические алгоритмы и обмен ключами
- UUID: Те же идентификаторы сервисов и характеристик Bluetooth
- Фрагментация: Совместимая фрагментация сообщений для больших объёмов
Публикация в Google Play
Подготовка
-
Обновите информацию о версии:
// В app/build.gradle.kts defaultConfig { versionCode = 2 // Увеличивайте для каждого релиза versionName = "1.1.0" // Видимая пользователю версия } -
Создайте подписанную сборку релиза:
./gradlew assembleRelease -
Создайте пакет приложения (рекомендуется для Play Store):
./gradlew bundleRelease
Требования Play Store
- Целевой API: Последний Android API (на данный момент 34)
- Политика конфиденциальности: Требуется для приложений, запрашивающих чувствительные разрешения
- Разрешения приложения: Обоснуйте использование Bluetooth и местоположения
- Возрастная категория: Заполните анкету для возрастной маркировки контента
Распространение
- Google Play Store: Основной канал распространения
- F-Droid: Для распространения с открытым исходным кодом
- Прямой APK: Для тестирования и разработки
Кроссплатформенное общение
Этот Android-порт обеспечивает бесшовное общение с оригинальным iOS-приложением bitchat:
- iPhone ↔ Android: Полная двунаправленная передача сообщений
- Смешанные группы: Пользователи iOS и Android в одних каналах
- Паритет функций: Все команды и шифрование работают на обеих платформах
- Синхронизация протокола: Идентичный формат сообщений и поведение маршрутизации
Версия для iOS: Для пользователей iPhone/iPad, загрузите оригинальный bitchat на сайте github.com/jackjackbits/bitchat
Вклад
Вклад приветствуется! Ключевые области для улучшения:
- Производительность: Оптимизация батареи и надёжность соединений
- UI/UX: Дополнительные возможности Material Design 3
- Безопасность: Расширенные криптографические функции
- Тестирование: Покрытие модульными и интеграционными тестами
- Документация: Документация API и руководства по разработке
Поддержка и проблемы
- Сообщения об ошибках: Создайте issue с информацией об устройстве и логами
- Запросы функций: Начните обсуждение
- Проблемы безопасности: Отправляйте проблемы безопасности по электронной почте конфиденциально
- Совместимость с iOS: Перекрёстная ссылка с оригинальным iOS-репозиторием
По проблемам, специфичным для iOS, обращайтесь в оригинальный репозиторий iOS bitchat.
