[Конкурс 2022] Tox - Что это такое и как использовать? ¶
By: neityrf on 2022-04-23 10 ч.
Проект Tox начат анонимным пользователем irungentoo, первый коммит на GitHub создан в 2013.
В 2014 стали доступны первые пре-альфа сборки.
В сети Tox пользователи равноправны, в ней нет центральных серверов. Это P2P сеть, как BitTorrent.
Для подтверждения личности используются приватный ключ, который хранится локально и служит для расшифровки данных, и публичный ключ, которым собеседники шифруют сообщения.
Номер телефона или почта для использования не нужны.
Помимо текстовых сообщений, пользователи могут создавать видео и голосовые звонки, в том числе между несколькими участниками.
Также есть возможность создавать чаты, передавать файлы и получать отчет о прочитанном сообщении.
Хочу отдельно сказать, что Tox в чистом виде не являются анонимным способом общения.
Название Tox не имеет никакого отношения к Tor.
Добавляя человека в список контактов в Tox, вы даете ему возможность увидеть ваш IP адрес.
К счастью, трафик можно направить через прокси и Tor.
В Tox для получения сообщения обе стороны должны быть онлайн, т.к. сообщения хранятся только на клиенте.
В некоторых клиентах есть возможность отправить сообщение когда собеседник вернется онлайн - faux offline.
Для обмена сообщениями необходимо передать собеседнику свой Tox ID или войти в чат.
Tox ID представляет из себя строку в 76 символов (0-9 и A-F - base16).
Первые 64 символа - публичный ключ в формате X25519 (curve25519, из функции crypto_box_keypair в libsodium).
Следующие 8 - NoSpam, псевдослучайное значение, которое может быть изменено на любое.
Все запросы без правильного NoSpam игнорируются.
Остальные 4 - контрольная сумма.
Контрольная сумма считается так: сначала XORятся все нечетные байты вместе с Nospam, получается один байт (2 символа).
Потом то же самое делается с четными байтами и получается второй байт (2 символа).
Вместе оба результата дают контрольную сумму Tox ID.
https://github.com/TokTok/c-toxcore/blob/master/tox.spec.in
Неизвестно кто создал Tox, но стоит иметь в виду, что там могут быть российские разработчики.
https://github.com/TokTok/c-toxcore/blob/master/INSTALL.md#linux
Pre-built binaries
Linux
Toxcore is packaged by at least by the following distributions: ALT Linux, Arch Linux, Fedora, Mageia...
Что такое ALT linux можете найти сами и задаться вопросом почему он на первом месте.
В 2015 году глава и единственный директор фонда Tox Foundation украл деньги фонда (говорят что это всего несколько тысяч долларов), и домены tox.im, toxme.se и libtoxcore.so.
Разработку это не остановило, остальные разработчики перешли на новый домен tox.chat, доступ к GitHub не был потерян.
В сети Tox существуют также bootstrap ноды, которые работают подобно DHT в BitTorent.
Если у вашего собеседника и у вас ноды не пересекаются, вы не сможете общаться, потому что вас не смогут найти.
Реальное соединение во время чата происходит между вашими IP адресами на данный момент.
Ноды можно поднимать и свои https://wiki.tox.chat/users/runningnodes.
Использование публичных нод позволяет затеряться между пользователями, но они также могут отслеживать когда вы онлайн и знают ваш IP (который получается после VPN или TOR).
Без нод Tox не бесполезен, разработчики говорят что получать информацию о пользователях можно через другого участника сети, но у меня не получилось.
Как и везде, возможны бэкдоры и уязвимости, на 2022 полный аудит безопасности не проводился.
https://github.com/TokTok/c-toxcore/issues/426
Здесь пишут про уязвимость алгоритма обмена ключами (они придумали его сами, что не несет больше риска чем проверенные всем миром варианты) и возможность подмены собеседника.
Как я понял, на февраль 2022 это еще не исправлено.
Разработчики сообщают, что проект готов от завершения и не должен использоваться в ситуации жизни или смерти.
https://wiki.tox.chat/users/faq
Используемые общедоступные криптопримитивы обеспечивают хорошую защиту зашифрованных данных, но хранение приватных ключей остается на пользователе и используемом клиенте.
Разработчики говорят, что аудит не проводился и используйте проект на свой риск:
"This is an experimental cryptographic network library. It has not been formally audited by an independent third party that specializes in cryptography or cryptanalysis. Use this library at your own risk."
https://github.com/TokTok/c-toxcore
Клиенты Tox:
https://tox.chat/clients.html
Самих клиентов за почти 10 лет было сделано много, на официальном сайте сейчас написано о qTox, uTox, Toxygen, Toxic, aTox, но есть и другие.
Многие из клиентов заброшены разработчиками.
Из всей массы клиентов qTox выделяется самым большим числом коммитов (внесенных правок) на GitHub.
Также он обладает большим количеством функций и может конкурировать с другими популярными мессенджерами.
qTox есть под Windows, Linux, OS X и FreeBSD.
Графический интерфейс сделан на кросс-платформенной библиотеке qt.
Написан на C++.
Также он стоит на первых строчках по ссылке https://tox.chat/download.html, так что это самый актуальный клиент на данный момент.
uTox - уже больше года не вносятся правки на GitHub, но есть чат разработчиков.
Есть под Windows, Linux, MacOS, Android (разработчики рекомендуют aTox вместо него у себя на странице https://github.com/uTox/uTox), FreeBSD, NetBSD, DragonFlyBSD.
Написан на C.
aTox - Android клиент, написан на Kotlin, компилируется в Java байт код.
Есть в F-Droid и Google Play.
Название гитхаба evilcorpltd конечно странное, и напоминает название известной российской хакерской группы, но вроде никто не жаловался.
Toxygen - написан полностью на Python, работает на Windows и Linux.
Toxic - текстовый клиент под Linux, Android (в termux), MacOS.
Использует ncurses для интерфейса, может работать на системах без оконного интерфейса.
Написан на C.
Minitox - самый маленький текстовый клиент на C без зависимостей кроме toxcore и стандартной библиотеки C.
https://github.com/hqwrong/minitox
Под iOS все плохо:
https://wiki.tox.chat/clients
На официальном сайте клиенты даже не представлены.
Многие заброшены, не имеют GitHub или к ним мало отзывов.
Я нашел всего один живой клиент в AppStore (не проверял):
https://apps.apple.com/us/app/antidote-tox-client/id1592895292
Эти проекты заброшены, может понадобиться переписать код под новые версии Xcode:
https://github.com/Antidote-for-Tox/Antidote
Еще один, отзывов о нем не нашел:
https://github.com/Zoxcore/AntiTox
Я выбрал qTox: в формате appimage под linux live usb и установщика под windows.
Под Windows установка проще и быстрее.
Если нужно portable - в qtox есть настройка make portable чтобы загружать данные только из рабочей директории, но в системе могут оставаться следы (например в файле гибернации или подкачки), не используйте Windows для чего-то серьезного.
Appimage и flatpak под linux тоже удобно использовать.
Может понадобиться скачать сотни мегабайт зависимостей, если вы решите установить его из репозитория.
Стоит помнить, что пакеты с репозиториев скачиваются по http без шифрования. Ваш провайдер будет видеть что вы качаете, например версию клиента, по которой вас могут деанонимизировать! Используйте apt-transport-https или apt-transport-tor.
Использование через TOR:
Установите TOR и убедитесь, что TOR работает.
Для использования с прокси используйте команду
qtox -I off -U off -P SOCKS5:127.0.0.1:9050
Или укажите этот прокси в настройках и отключите ipv6 и udp(обязательно, сеть TOR не поддерживает udp).
Для Toxic:
toxic –force-t***** –SOCKS5-proxy 127.0.0.1 9050
Подробнее:
https://wiki.tox.chat/users/tox_over_tor_tot
Примечание по скрытию использования Tox:
Tox использует bootstrap ноды чтобы найти пользователей, они работают также как DHT в BitTorrent протоколе.
Этих нод не так много и известно, что они используются для работы с Tox.
Без TOR или VPN (просто socks прокси не подойдут, они не шифруют трафик) ваш провайдер будет знать куда вы обращаетесь (что вы используете Tox) и в какое время, поэтому имейте это в виду.
При запуске создается пара ключей и вы готовы к использованию qTox.
Имя можно задать на странице профиля, но сама сеть Tox не имеет возможности использовать имя как идентификатор собеседника.
Обмен контактами возможен только по Tox ID.
С помощью сторонних сайтов (ToxMe) такая возможность была реализована, но ее надежность под вопросом.
(На 2022 год сайты toxme.io, toxme.se, tox.me лежат, для tox.me за домен просят больше 20 тысяч долларов).
По умолчанию профили хранятся в ~/.config/tox/ или в %APPDATA%\tox\
https://wiki.tox.chat/users/import_export
В qTox профиль можно экспортировать из страницы профиля, в других клиентах (использующих toxcore) можно также скопировать файл профиля из директорий, которые указаны выше.
По vanity адресам:
Были сайты toxme.io, toxme.se, tox.me, но они закрылись и могли подменить ваш Tox ID.
Эта была единственная возможность использовать человекочитаемые имена для Tox (вида [email protected]), но для этого нужна поддержка клиентом.
Для того чтобы создать новый Tox ID можно удалить файл профиля и зайти снова.
Если вам очень сильно понадобился красивый base16 адрес, можно использовать утилиты из toxcore:
Для генерации:
Внутри https://github.com/TokTok/c-toxcore/
При сборке исходников с -DBUILD_FUN_UTILS=ON обещают дополнительные утилиты:
Есть несколько Vanity key генераторов:
cracker (многопоточный), cracker_simple(однопоточный), strkey(ищет не с начала, а по маске).
Создать файл с ключами можно с помощью:
make-funny-savefile.py (создает профиль из пары ключей), create_minimal_savedata (создает профиль с нуля или из ключей), create_savedata (то же самое, но дополнительно нужен libtoxcore),
save-generator(создает профиль из случайных ключей, с определенным именем, выходит в онлайн и добавляет требуемые tox id в друзья).
Стоит ли использовать Tox?
Если вам необходим просто мессенджер, который можно использовать вместо Skype или Telegram - Tox однозначно стоит попробовать.
Проект предлагает богатый набор возможностей и постоянно развивается.
Он отличается в лучшую сторону тем, что не требует центральных серверов и регистрации через sms.
При желании сеть можно поднять вообще отдельно от мирового интернета.
Исходный код всех частей проекта открыт, а ваш Tox ID или чат никто не забанит.
Если вы хотите использовать Tox для обсуждения чего-то серьезного, придется дополнительно пропустить трафик через TOR и позаботиться о том, чтобы в системе не остались следы, например сохраненные сообщения.
Лучше всего для этого подойдет Tails с USB и appimage, не забывайте сохранять свой профиль чтобы не потерять ToxID!