Voice over TOR
Предлагаю для тестирования кипто VOIP-утилиту для работы через TOR (в режимах TOR -> доменное имя и TOR->скрытый сервис). Переделал с старого PGPFone: заменил транспорт на TCP и добавил адаптивный буфер для компенсации высокого jitter в TOR-туннеле. Также добавил обмен сообщениями и файлами.
Win98-XP-7-8. Полностью портируема. Работает peer-to-peer (звонить на доменное имя или TOR-hidden service). Использует DH4096+3DES.
Приветствуются замечания и пожелания.
Сайт проекта http://torfone.org (англ./рус.), там же доступны исходники (Visual C 6).
Например Сбер.
Я не говорю о том, что вы его должны
вовлечь в сектуубедить пользоваться смартфоном, речь идет о том, что убедить человека, что есть случаи когда использование крайне необходимо. Если человек не способен понять, что кто то в чем то может нуждаться, то вероятно такой собеседник не достоин особого внимания.Накой нужен такой банк, который сует свой нос и диктует условия без учета интересов клиента. Этого
говнадобра кучи. Зайдите на сайт банки.ру. Там становиться понятно, что у ЦБ непочтатый край работы. 90% – это карманные банки для отмывания, а, в последствии, и кидания клиентов.В конечном счете, что мешает сверить отпечатки ключей?
комментариев: 393 документов: 4 редакций: 0
Отработана технология MitM соединения со входящим узлом Tor???
Ну, тогда вообще нет смысла использовать онионфон: анонимности все равно не будет, даже при гипотетически устойчивом шифровании ОР и сверке его ключей.
Если такая возможность и заложена, то только для суперэкстраординарных ситуаций и, скорее всего, одноразово. Во всяком случае, о регулярном скрининге 5лайтов с его проблемами речь не идет.
комментариев: 393 документов: 4 редакций: 0
Теперь есть GUI-версии для Windows, Linux (x86 и ARM для одноплатников) и, глдавное, для Android, а также кроссплатформенная библиотека + консольное приложение для Windows и Linux. Планирую также сделать Open-HW решение: Tor и транспортный модуль запустить на одноплатнике Nano Pi Neo под Debian (частично доверяемый модуль, при компроментировании теряется только анонимность) и отладке Nucleo STM32F446RE c Arduino TFT LCD, усилителями микрофона и динамика (на ней будет реализована аутентификация, шифрование, аудиозахват и воспроизведение и GUI) – полностью доверяемый модуль. Связь между модулями – по UART пакетами со строго фиксированными полями, жестко контролирумыми со стороны микроконтроллера. Все криптопримитивы на МК будут выполнены на ASM под Cortex M4 для минимизации утечек по побочным каналам (ЭМИ, тока потребления).
Торфон может работать в трех режимах:
Переделал IKE для обеспечения лучшей безопасности в третьем режиме:
- IKE выполняется в две TCP-сессии со случайным временным промежутком между ними;
- во время первой сессии выпоняется DH, ключи псевдослучаны (в представлении Elligator2) со случайным дополнением;
- во второй сессии весь обмен (включая заголоки) шифруется секретом, выведенным в первой сесии, используется случайное дополнение пакетов – транскрипт неотличим от рандома;
- во второй сесии требуется доказательство работы для расшифровки транскрипта (для защиты от сканирования);
- аутентификация производится с помощью протокола тройной DH (tDH) (как в Signal) с использованием ключа контакта, хранимого в адресной книге;
- ID вызывающего абонента защищен с PFS (используется протокол SPEKE параллельно с tDH);
- для обеспечения отрицаемости наличия ключа в книге введена возможность неаутентифицированного звонка и возможность (отключаемая) автоматического добавления любого ключа в удаленную адресную книгу;
- при первичном контакте перед обменом своими ключами абоненты могут аутентифицированться альтернативными способами:
a) сравнив SAS во время звонка или позже (SAS является частью имени, автоматически присваемого принятым от удаленной стороны ключам в адресной книге с возможность переименования позже). Коммитмент позволяет использовать короткие отпечатки.b) сравнив заранее согласованный секрет (аналогично SMP в OTR, используется протокол с нулевым разглашением разглашением SPEKE). Можно использовать короткие секреты (пин-код).
c) аутентификация по onion (средствами Tor): по встречному соединению от вызываемого к вызывающему абоненту (как в Torchat, фактически протокол Martin Abadi).
Для уменьшения латентности вызываемый Тофрон устанавливает встречное соединение с вызывающим, используя onion из своей записной книги.
Это происходит только в случае аутентифицированного звонка, когда абоненты уже имеют ключи друг друга и переименовали их в своих записных книгах (убрали знак + в начале имени, разрешив использование этого ключа при входящих звонках).
Фишка проекта – относительная простота работы (особенно с Андроид-версией) по сравнению с консольным OnionPhone.
Необходимо установить apk, однократно ввести пароль до 31 символа (защита телефонной книги, сменить его будет невозможно, и надо будет ввести при повторной установке для восстановления из резервной копии данных), и перезапустить Торфон. Все остальное выполнится автоматически: запустится Tor, подтянется ваш онион-адрес и адресная книга из резерва или сформируются новые. Кроме того, Андроид-версия порождает сервис, перезапускающий Торфон при выгрузки системой в случае нехватки ресурсов. Также контролируется смена IP интерфейса (при переходе в WiFi и обратно или смене сотовым оператором), при этом Tor перезапускается. Также выполняется самотестирование (звонок себе) каждые полчаса, и перезапуск Tor при неудаче. Ну, и выполняется по возможности энергосбережение (но в меню телефона надо отключить экономию батареи для Торфона в Андроид 5 и выше).
Тестировал Андроид-версию в аеропортах, вокзалах и гостиницах Мюнхена, Москвы и Киева, везде голосовая связь была возможна, задержки вполне терпимые. Переключение на p2p UDP не выполнялось в публичных WiFi вокзалов Москвы (там же не работал WhatsApp и Viber голосом), но голосовая связь Торфоном через Tor работала. Также тестировал в полностью закрытой сети (неподключенная к Интернет мощная WiFi точка в центре зоны обслуживания), все работает без проблем.
К сожалению, катастрофически не хватает времени все систематизировать и выложить на github. Делал все сам, команду безвозмездно собрать сейчас нереально. Поэтому исходники и бинарники для все поддерживаемых ОС пока упаковал в архивы и разместил на своем сайте. Сам сайт http://torfone.org пока старый, как и 7 лет назад, не знаю, когда получится занятся.
Ссылки и PGP-подписи в файле: http://torfone.org/download/Torfone.txt
Техническое описание (в т.ч. подробное описание протокола): https://github.com/gegel/torfone/blob/master/white.pdf
Корявая инструкция для Андроид-пользователей тут: http://torfone.org/download/Torfone_Android_howto.pdf
Код ядра на github: https://github.com/gegel/torfone
Статья на Habr: https://habr.com/ru/post/448856/
Буду рад, если проект окажется кому-нибудь интересен как решение или полезен для практической деятельности в нашей непростой жизни.
Моя почта: gegelcopy@ukr.net, gegelcopy@protonmail.com и torfone@ukr.net, PGP на сервере MITM и на форуме (с тех пор не изменился).
комментариев: 110 документов: 17 редакций: 16
А уж как я рад, что после стольких лет забвения вы опять появились! :))
gegel, гляньте ваши почты, отправил вам сообщения, может, хоть какое-то доехало
комментариев: 1 документов: 0 редакций: 0
комментариев: 393 документов: 4 редакций: 0
Был в разъездах, почту не смотрел.
Все пришло, ответил.
По компиляции под Linux: сначала отдельно собирается ядро
( https://github.com/gegel/torfone или http://torfone.org/download/tf_core_src_140719.zip )
Получаем статическую библиотеку libtf.a (для дальнейшей сборки GUI-версии) и исполняемый файл tf (подробнее смотри Makefile). Но этот файл фактически только для теста и для использования с внешним модулем на микроконтроллере, подключенным через COM-порт, в нем нет интерфейса с пользователем.
Для сборки GUI-версии качаем проект для WideStudio:
http://torfone.org/download/tf_src_linux_ws_140719.zip
Инструкция внутри: устанавливаем саму WideStudio и зависимости, прописываем путь к libtf.a и собираем GUI-версию.
Для сборки Android-версии:
качаем проект для Embarcadero RAD studio 10.2: http://torfone.org/download/tf.....droid_rad_140719.zip
Инструкции внутри. Саму RAD студию можно взять на рутрекере.
Конечно, это далеко не идеальный вариант, было выбрано для быстрого старта. Нужно будет все переписать на Qt под все системы, или, в крайнем случае, сделать для Android классически: в Android-студии + NDK. Но катастрофически не хватает времени.