TerminalPhone
Зашифрованная голосовая связь в режиме push-to-talk через скрытые сервисы Tor.
TerminalPhone — это единый самодостаточный Bash-скрипт, обеспечивающий анонимную сквозную шифрованную голосовую и текстовую связь между двумя или более сторонами через сеть Tor. Он работает как рация: вы записываете голосовое сообщение, и оно сжимается, шифруется и передаётся удалённой стороне как единое целое. Вы также можете отправлять зашифрованные текстовые сообщения во время вызова. Никакой серверной инфраструктуры, никаких аккаунтов, никаких телефонных номеров. Ваш .onion-адрес скрытого сервиса Tor — это ваша личность.
Содержание
Возможности
- Режим рации push-to-talk -- Запишите полное голосовое сообщение и передайте его при отпускании.
- Зашифрованный чат во время вызова -- Отправляйте и получайте зашифрованные текстовые сообщения во время вызова. Нажмите
T, чтобы ввести сообщение.
- Определитель вызывающего -- Обе стороны автоматически обмениваются
.onion-адресами при подключении. Удалённый адрес отображается в заголовке вызова.
- Автоопределение завершения вызова -- Когда одна сторона завершает вызов, другая немедленно уведомляется, и вызов автоматически заканчивается.
- Настраиваемый шифр -- Выбор из 21 отобранного шифра, ранжированного по стойкости (256-бит → 128-бит). Включает семейства AES, ChaCha20, Camellia и ARIA. Слабые шифры (DES, RC4, режимы ECB) исключены.
- Согласование шифра в реальном времени -- Обе стороны обмениваются информацией о шифре при подключении. Заголовок вызова показывает как локальный, так и удалённый шифр с зелёными (совпадение) или красными (несовпадение) индикаторами, обновляемыми в реальном времени.
- Настройки во время вызова -- Нажмите
S во время вызова для доступа к настройкам. Меняйте шифр на лету; отображение у удалённой стороны обновляется автоматически.
- Информация о мосте Snowflake -- При использовании Snowflake для обхода цензуры страница вызова отображает имя дескриптора моста, отпечаток и статус транспортного соединения, разобранные из логов Tor.
- Авто-прослушивание -- При включении фоновый слушатель запускается автоматически при загрузке Tor. Входящие вызовы обнаруживаются и принимаются из главного меню без необходимости вручную выбирать «Слушать вызовы». После завершения вызова слушатель перезапускается.
- Настраиваемая клавиша PTT -- Измените клавишу push-to-talk с пробела по умолчанию на любую другую через меню настроек.
- Статистика сообщений -- Экран вызова отображает размер зашифрованной полезной нагрузки для отправленных и полученных сообщений, обновляемый на месте.
- Удалённый статус PTT -- Экран вызова показывает статический индикатор состояния удалённой стороны: «Idle» (зелёный) или «● Recording» (красный). Сбрасывается немедленно при поступлении аудиоданных, до начала воспроизведения.
- Звуковой сигнал PTT -- Опциональный звук уведомления, когда удалённая сторона начинает запись. Пять встроенных пресетов (tone, double, chirp, ding, click), генерируемых с помощью sox, плюс возможность записать собственный 2-секундный сигнал. Настраивается через Настройки.
- Анимация подключения -- При вызове удалённого адреса воспроизводится циклическая анимация до загрузки интерфейса вызова.
- Изменение голоса -- Применяйте голосовые эффекты к исходящему аудио. Включает 6 пресетов (deep, high, robot, echo, whisper) и полностью настраиваемый пользовательский режим с изменением высоты тона, overdrive, flanger, echo, фильтром высоких частот и тремоло. Эффекты обрабатываются с помощью sox перед кодированием Opus.
- Громкость PTT (Termux) -- Экспериментальный режим, позволяющий двойным нажатием кнопки уменьшения громкости переключать запись, даже когда Termux находится в фоне. Требуется
jq (устанавливается по требованию). Громкость автоматически восстанавливается после каждого срабатывания.
- Скрытый сервис Tor -- Каждый экземпляр запускает собственный скрытый сервис Tor. Ваш
.onion-адрес служит постоянной, маршрутизируемой конечной точкой. Не требуется проброс портов или публичный IP.
- Сквозное шифрование -- Всё аудио и текст шифруются с использованием настраиваемого шифра (по умолчанию: AES-256-CBC) с выводом ключа PBKDF2 из предварительно общего секрета перед попаданием в сеть Tor.
- Защищённый парольной фразой секрет -- Общий секрет может быть зашифрован при хранении с использованием выбранной пользователем парольной фразы (AES-256-CBC, 100 000 итераций PBKDF2). Существующие секреты в открытом виде автоматически обнаруживаются с предложением миграции.
- Низкая пропускная способность -- Кодек Opus на 16 кбит/с, 8 кГц моно. Типичное 10-секундное голосовое сообщение занимает менее 20 КБ, что вполне укладывается в возможности Tor.
- Обмен QR-кодами -- Пункт 3 может отобразить ваш
.onion-адрес в виде сканируемого QR-кода в терминале. Если qrencode не установлен, вам будет предложено его установить. QR-код отображается на альтернативном экранном буфере и уничтожается при закрытии. Примечание предупреждает, что некоторые QR-сканеры автоматически добавляют префикс http://; этот префикс автоматически удаляется при наборе.
- Непрозрачные временные файлы -- Все временные файлы используют общие расширения
.tmp и случайные шестнадцатеричные идентификаторы. Никакие метаданные о типе файла или времени не утекают в файловую систему.
- Отображение цепочки узлов -- Опциональное отображение вашего пути по цепочке Tor во время вызовов с показом имён реле и полных названий стран. Автообновление каждые 60 секунд. Настраивается через Настройки → Настройки Tor.
- Исключение стран -- Исключайте определённые страны из ваших цепочек Tor. Пресеты для альянсов Five Eyes, Nine Eyes и Fourteen Eyes или ввод пользовательских кодов стран. Использует
ExcludeNodes с StrictNodes в torrc.
- Аутентификация протокола HMAC -- Опциональная подпись HMAC-SHA256 всех сообщений протокола (голос, текст, управляющие сигналы) с использованием общего секрета. В каждое сообщение включается случайный nonce, а увиденные nonce отслеживаются для отклонения повторов. Неподписанные, поддельные или повторно воспроизведённые сообщения молча отбрасываются. Состояние HMAC фиксируется в начале вызова для предотвращения рассинхронизации во время вызова. Настраивается через Настройки → Безопасность.