[!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 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):
Требования 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 и руководства по разработке
Поддержка и проблемы
По проблемам, специфичным для iOS, обращайтесь в оригинальный репозиторий iOS bitchat.