
Децентрализованное зашифрованное P2P-приложение для обмена сообщениями через Bluetooth-сети. Не требует интернета, серверов или номеров телефона. Включает шифрование X25519 + AES-256-GCM, IRC-подобные команды и кроссплатформенную совместимость с iOS.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10897/4adee5766836e3812e7f0051931df8c63da05d8d8db9a77f8c491d1ea45d195b.png" alt="Логотип Bitchat Android" width="480">
</p>
> [!WARNING]
> Это программное обеспечение не проходило внешнюю проверку безопасности и может содержать уязвимости, а также может не соответствовать заявленным целям безопасности. Не используйте его для чувствительных сценариев и не полагайтесь на его безопасность, пока оно не будет проверено. Работа в процессе.
# bitchat для Android
Безопасное, децентрализованное, одноранговое приложение для обмена сообщениями, работающее через Bluetooth-ячеистые сети. Для ячеистых чатов не требуется интернет, нет серверов, нет телефонных номеров — только чистое зашифрованное общение. Bitchat также поддерживает geohash-каналы, которые используют интернет-соединение для связи с другими людьми в вашем географическом районе.
Это **Android-порт** оригинального [bitchat iOS-приложения](https://github.com/jackjackbits/bitchat), сохраняющий 100% совместимость протоколов для кроссплатформенного общения.
## Установка bitchat
Вы можете скачать последнюю версию bitchat для Android на [странице релизов GitHub](https://github.com/permissionlesstech/bitchat-android/releases).
Или вы можете:
[<img alt="Загрузить в 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)
**Инструкции:**
1. **Скачайте APK:** На вашем Android-устройстве перейдите по ссылке выше и скачайте последний файл `.apk`. Откройте его.
2. **Разрешите установку из неизвестных источников:** На некоторых устройствах перед установкой APK может потребоваться включить «Установка из неизвестных источников» в настройках устройства. Обычно это находится в разделе **Настройки > Безопасность** или **Настройки > Приложения и уведомления > Специальный доступ к приложениям**.
3. **Установите:** Откройте загруженный файл `.apk`, чтобы начать установку.
## Лицензия
Этот проект выпущен в общественное достояние. Подробности см. в файле [LICENSE](https://github.com/permissionlesstech/bitchat-android/blob/main/LICENSE.md).
## Возможности
- **✅ Кроссплатформенная совместимость**: Полная совместимость протоколов с 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 или новее
### Инструкции по сборке
1. **Клонируйте репозиторий:**
```bash
git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
```
2. **Откройте в Android Studio:**
```bash
# Open Android Studio and select "Open an Existing Project"
# Navigate to the bitchat-android directory
```
3. **Соберите проект:**
```bash
./gradlew build
```
4. **Установите на устройство:**
```bash
./gradlew installDebug
```
### Сборка для разработки
Для сборок для разработки с включённой отладкой:
```bash
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
```
### Сборка релиза
Для производственных релизов:
```bash
./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` — Включить/выключить сохранение сообщений для канала (только владелец)
### Начало работы
1. **Установите приложение** на ваше Android-устройство (требуется Android 8.0+)
2. **Предоставьте разрешения** для Bluetooth и местоположения при запросе
3. **Запустите bitchat** — он автоматически запустит ячеистую сеть
4. **Установите свой никнейм** или используйте автоматически сгенерированный
5. **Автоматически подключайтесь** к ближайшим пользователям bitchat на iOS и Android
6. **Присоединитесь к каналу** с помощью `/j #general` или начните общаться в публичном чате
7. **Сообщения ретранслируются** через ячеистую сеть для достижения удалённых пиров
### Особенности 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
### Основные компоненты
1. **BitchatApplication.kt**: Инициализация на уровне приложения и внедрение зависимостей
2. **MainActivity.kt**: Главная активность, обрабатывающая разрешения и размещение UI
3. **ChatViewModel.kt**: Паттерн MVVM, управляющий состоянием приложения и бизнес-логикой
4. **BluetoothMeshService.kt**: Основная BLE-ячеистая сеть (центральная + периферийная роли)
5. **EncryptionService.kt**: Криптографические операции с использованием BouncyCastle
6. **BinaryProtocol.kt**: Кодирование/декодирование бинарных пакетов, совместимое с форматом iOS
7. **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
### Подготовка
1. **Обновите информацию о версии:**
```kotlin
// В app/build.gradle.kts
defaultConfig {
versionCode = 2 // Увеличивайте для каждого релиза
versionName = "1.1.0" // Видимая пользователю версия
}
```
2. **Создайте подписанную сборку релиза:**
```bash
./gradlew assembleRelease
```
3. **Создайте пакет приложения (рекомендуется для Play Store):**
```bash
./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](https://github.com/jackjackbits/bitchat)
## Вклад
Вклад приветствуется! Ключевые области для улучшения:
1. **Производительность**: Оптимизация батареи и надёжность соединений
2. **UI/UX**: Дополнительные возможности Material Design 3
3. **Безопасность**: Расширенные криптографические функции
4. **Тестирование**: Покрытие модульными и интеграционными тестами
5. **Документация**: Документация API и руководства по разработке
## Поддержка и проблемы
- **Сообщения об ошибках**: [Создайте issue](../../issues) с информацией об устройстве и логами
- **Запросы функций**: [Начните обсуждение](https://github.com/orgs/permissionlesstech/discussions)
- **Проблемы безопасности**: Отправляйте проблемы безопасности по электронной почте конфиденциально
- **Совместимость с iOS**: Перекрёстная ссылка с [оригинальным iOS-репозиторием](https://github.com/jackjackbits/bitchat)
По проблемам, специфичным для iOS, обращайтесь в [оригинальный репозиторий iOS bitchat](https://github.com/jackjackbits/bitchat).