id: Гость   вход   регистрация
текущее время 14:45 28/04/2024
создать
просмотр
ссылки

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).


 
На страницу: 1, ... , 31, 32, 33, 34, 35, ... , 50 След.
Комментарии
— gegel (23/10/2014 11:21)   профиль/связь   <#>
комментариев: 393   документов: 4   редакций: 0
По проекту Онионфона:
– добавил веб-страничку на сайт с кратким описанием и инструкцией по быстрому старту (в т.ч. русскую версию).
– для тестирования готовы пакеты со статически линкованными бинарниками: fileпод Linux и fileпод Windows
– исходный код в процессе допиливания на github
– документация (pdf, англ.) пока fileта же, потом внесу актуальные изменения.

Сделано:
– добавил управляющий TCP-порт (по умолчанию localhost:8000, можно менять в conf.txt), поддерживающий работу по Telnet и WebSocket. Первое тривиально и дублирует консольный ввод-вывод Онионфона (отправляем строки команд, получаем отчеты и уведомления). Второе интереснее: в папке web пакета имеется локальная веб-страница (рус. и англ.), представляющая графический интерфейс с помощью нативного JavaScript. Сами скрипты – в двух файлах в папке js, можно легко просмотреть на предмет отсутствия опасности.
Я не специалист в веб, это практически мои первые HTML5 и JS весьма корявы: к концу дня освоения все же выработался какой-то стиль, но осталось нагромождение чужих кусков. В следующий раз будет лучше.
Веб-GUI имеет всплывающие ярлычки-подсказки над всеми элементами, что предельно снижает уровень вхождения.
WebSocket протокол, реализованный в C-коде Онионфона, минимизирован и таки поместился в 20 строчек кода. Но в точности rfc6455 я, конечно, не реализовал, так что не исключаю ситуацию, когда какому-то браузеру не понравится лаконичный ответ Онионфона в процессе handshake. Проверял на Mozilla Gecko и Google Chrome. Просьба отписать, если какой-то браузер не захочет подключаться.

Планы ближайшие:
– оптимизация кода для максимального снижения загрузки процессора в режиме ожидания (остановка аудио и т.д.);
– небольшие изменения в IKE (добавить PFS к защите ID инициатора и реализовать полную симметрию протокола – чисто эстетически);

Планы в перспективе:
– реализовать низкоуровневое Android-аудио и билд в NDK;
– представить вариант сборки в виде so (dll) с минимально необходимым API;

И в отдаленной перспективе:
– кроссплатформенный TorChat-клиент на Qt со встроенным Онионфоном и H.264 видео.
— Гость (23/10/2014 15:54)   <#>
Как получить исполняемый файл из исходного кода? Имею в виду что-то вроде ./configure && make && make install.
— gegel (23/10/2014 20:17)   профиль/связь   <#>
комментариев: 393   документов: 4   редакций: 0
Как получить исполняемый файл из исходного кода?

См. файл README.md, раздел Compilation: c консоли войти в папку с кодом и просто выполнить make. Конфигурация не производится, т.к. по сути там нечего конфигурировать, кроме как выбор между Windows и Linux, мне показалось проще сделать это в Makefile самому по переменным окружения. Инсталляция не производится, т.к. приложение портейбельное. Предварительно должна быть установлена
libasound2-dev. После сборки запуск исполняемого файла выполняется командой ./oph
Можно использовать и уже собранный пакет (ссылка выше): он статически линкован и в принципе должен работать в любой linux-системе с установленным alsa.
— Гость (23/10/2014 21:36)   <#>
Возможно, уже заметили: новый (commit 4816270ac9601146c6d8e13b777f4efde2ef789c) oph падает при выходе, если оставить голос включённым; backtrace.
— gegel (24/10/2014 01:55)   профиль/связь   <#>
комментариев: 393   документов: 4   редакций: 0
Возможно, уже заметили
Заметил, блин. Только что общался с коммитером (коммитил не я). Он переоптимизировал AMR где-то, сейчас ищет. Но у него не падает, хотя у меня и на Lin, и на Win падает аналогично.
— Гость (27/10/2014 23:32)   <#>
Немного потестировал программу, вот что получилось. Поправьте, если что неправильно сделал. ОС Linux, архитектура x86_64.

Компиляция



Создание пользователя oph и включение его в группу audio (не от root же запускать)



Запуск



Когда пытаюсь в Firefox с включенным javascript перейти по ссылке localhost:8000, начинается загрузка и процесс зависает, отображая пустую страницу. В консоли при этом появляется сообщение



Если остановить загрузку, консоль выдаёт



Т.е. oph реагирует на действия, совершаемые в бразуере. Но хотелось бы увидель веб-интерфейс. Мне бы и telnet хватило, но непонятно, как хоть-какой нибудь звук услышать чтобы убедиться в работоспособности программы. Попробовал позвонить по адресу, который тут выложил gegel. Для этого cоздал каталог /usr/local/etc/tor/oph и добавил две строки в torrc



Перезапустил тор и воспользовался telnet-интерфейсом для дозвона



Похоже что адрес недоступен. gegel, не могли бы вы сделать автоответчик и выложить ссылку для него чтобы проверить подключение?

На странице с документацией говорится о каком-то меню, по которому в telnet клавишами Left и Right можно ходить. Интересует как в него войти.

В conf.txt присутствует опция Tor_interface=127.0.0.1:11109, но после запуска порт 11109 отсутствует. Для чего нужен этот порт?

Появились ещё вопросы

1. В описании установки говорится об onionphone как о плагине для torchat. Может ли onionphone работать самостоятельно, как описано выше, или нужно ещё torchat ставить.

2. Есть ли способ прикрутить к onionphone распознаватель речи, который преобразует в голос робота. Т.е. говорим естественно, а собеседник слышит робота. Это позволило бы исключить голосовую идентификацию чтобы делать анонимные звонки.

3. Способы заземления onionphone и подключения его к VoIP-провайдеру. Тогда при анонимной покупке сервиса можно анонимно звонить на любые номера, мобильные и городские.

4. Перспектива установки тор с onionphone на коммуникатор для разговоров по защищённой связи.
— gegel (28/10/2014 11:54, исправлен 28/10/2014 12:34)   профиль/связь   <#>
комментариев: 393   документов: 4   редакций: 0
Когда пытаюсь в Firefox с включенным javascript перейти по ссылке localhost:8000

Тут ошибка. Вам необходимо в браузере открыть файл index.html в подпапке web папки онионфона (можно просто перетянуть его мышей на окно браузера, если у вас GUI). Откроется страничка с кнопками и др. элементами управления. Затем запускаете онионфон. На страничке жмете Connect и браузер подключается к онионфону. Мне показалось проще использовать отдельно html-файл вместо интеграции его с онионфоном.


Попробовал позвонить по адресу, который тут выложил gegel.

Рабочий там только мой TorChat, и то я включаю его нечасто. Так что надо самому поднять или тестировать с кем-то.


не могли бы вы сделать автоответчик и выложить ссылку

Попробую поднять у себя на сервере.


! Failed attempt to connect to Tor
Похоже что адрес недоступен.
но после запуска порт 11109 отсутствует. Для чего нужен этот порт?
Может ли onionphone работать самостоятельно, как описано выше

Вы сами себе ответили. Причина не в том, что онион-адрес недоступен, а в том, что Tor для онионфона недоступен.
Торчат по умолчанию использует в качестве socks5-порта в своем єкземпляре Tor порт 11109 (это задано в его конфигурационном файле torrc). Я так понимаю, вы используете отдельный Tor, поэтому у вас наверное, задан другой порт в torrc. По умолчанию Tor в составе TBB сейчас использует 9150. Поэтому подстройте Онионфон под него, изменив в файле conf.txt строку
Tor_interface=127.0.0.1:11109
на строку
Tor_interface=127.0.0.1:9150


Также проверьте, создал ли TOR заданный скрытый сервис: в указанном вами каталоге должна появиться папка с файлами, содержащими ваш онион-адрес и секретный ключ к нему.


прикрутить к onionphone распознаватель речи

Распознаватель – нет (за неимением такового).

Т.е. говорим естественно, а собеседник слышит робота.

Изменитель речи (вокодер) – да (уже прикручен). Активируется командой -Q3 для шепота, от -Q20 до -Q100 для робота с различной высотой, отключается -Q-3


Способы заземления onionphone и подключения его к VoIP-провайдеру.

Наверное, пока не время над этим думать, тем более что держать VOIP-PSTN шлюз я не собираюсь. Если хотите – сделаю.


Перспектива установки тор с onionphone на коммуникатор

Я так понимаю, ркчь идет о сборке под Андроид. Да, планируется, работа вместе с Orbot. Для начала соберу .so в NDK, сразу отпишу результат.


PS:

-O!iyrqp2pt7qfrw6xu.onion

Восклицательный знак вначале не нужен (это использовалось в SpeakFreely и тут озвучивалась критика. Я сделал так, как рекомендовали).
Суффикс .onion также не обязателен. Т.е. так:
-Oiyrqp2pt7qfrw6xu

— Гость (29/10/2014 16:15)   <#>
Причина не в том, что онион-адрес недоступен, а в том, что Tor для онионфона недоступен

Да, поменял порт в опции Tor_interface и сообщение уже другое "! Hidden Service unavaliable", что по-видимому означает отсутствие онионфона на удалённой стороне.

Заметил, что онионфон блокирует доступ к аудио устройству для другого онионфона, даже запущенного с правами того же пользователя. Обнаружил это, когда создал второй скрытый сервис, чтобы позвонить самому себе. Т.е. если один oph запущен, то при запуске второго выдаётся ошибка



Не уверен что это правильно, т.к. может существовать необходимость держать несколько скрытых сервисов онионфона. Кроме этого, блокируется доступ для других аудио приложений, в моём случае это mplayer. При этом, если oph не запущен, разные процессы mplayer могут запускаться независимо, звук в наушниках просто смешивается. При запущенном mplayer онионфон не запускается, наверное из-за невозможности захватить единоличный контроль над аудио устройствами.

Изменитель речи (вокодер) – да (уже прикручен). Активируется командой -Q3 для шепота, от -Q20 до -Q100 для робота с различной высотой, отключается -Q-3

При использовании искажений речи остаётся ли возможность идентифицировать говорящего?

Насколько понял из описания, если после -O указать не адрес скрытого сервиса, а реальное имя или IP-адрес, то это аналогично -T, но только через Tor, т.е. обычное TCP-соединение через Tor. Есть ли в этом случае дублирование потоков по разным цепочкам для улучшения качества связи, как в случае разговора между двумя скрытыми сервисами? Ведь приёмник не сможет создать обратный канал, т.к. инициатор не имеет своего IP-адреса. Он виден не как скрытый сервис, а как эксит-нода, которая не принимает входящие соединения.
— unknown (29/10/2014 17:11)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Это м.б. проблема алсы, пульсы, драйверов карты или каких-то настроек аудио. Такое встречается и в других программах.


С другой стороны, так может произойти и утечка аудио с системы посторонним пользователям.
— Гость (29/10/2014 17:48)   <#>
Это м.б. проблема алсы, пульсы, драйверов карты или каких-то настроек аудио. Такое встречается и в других программах.

Если бы причина была в алсе или драйвере, то несколько экземпляров mplayer не могли бы независимо существовать.

С другой стороны, так может произойти и утечка аудио с системы посторонним пользователям.

Такое возможно, но проконтролировать это реально фильтрацией на localhost. Из всех членов группы audio только онионфон должен имееть доступ к Tor, а напрямую в сеть никто из них не может выходить.
— gegel (29/10/2014 19:39, исправлен 29/10/2014 19:52)   профиль/связь   <#>
комментариев: 393   документов: 4   редакций: 0
"! Hidden Service unavaliable"
отсутствие онионфона на удалённой стороне

Да, именно так. Причем сам HS может быть задан в вашем Tor, но онионфон не запущен (нет слушающего порта). Разделить эти ситуации не представляется возможным.


онионфон блокирует доступ к аудио устройству
Error opening PCM device plughw:0,0

Да, есть такое. Я использовал модуль alsa на самом нижнем уровне, открываемое устройство plughw не расшаривается. Но в файле audiocfg в строчках 2 и 3 можно указать другое устройство соответственно ввода и вывода аудио, в т.ч. и расшариваемые (например, интерфейсы, представляемые pulse audio). К сожалению, я недостаточно фамилярен с линукс и даже не могу конкретно подсказать, как вывести список имеющихся в системе устройств, и их свойства. Если получится расшарить, сообщите.
Что касается виндоус, то в ней я вывожу список на старте, и по умолчанию используется расшариваемое устройство 0: программа переназначения звуков. Выбрать другое устройства из списка можно, указав в том же файле audiocfg в строчках 2 и 3 перед двоеточием нужные номера в списке.


При использовании искажений речи остаётся ли возможность идентифицировать говорящего?

Об этом писалось многократно: да, остается. Возможность идентификации определяется объемом доступного образца-оригинала, измененного голоса и допустимой вероятностью ошибки (альтернативной гипотезы). Используется, например, скрытая модель Маркова. Если развивать мысль, то стилометрия – частный случай голосовой идентификации полностью биометрически обезличенного голоса (Speech-to-Text-to-Speech).


если после -O указать не адрес скрытого сервиса, а реальное имя или IP-адрес

Да, верно. Опция -O заставляет онионфон соединиться с Tor и через SOCKS5 в неизменном виде передает ему строку после -O в качестве адреса назначения. Никакого ресолвинга доменного имени прямо не производится.


Есть ли в этом случае дублирование потоков по разным цепочкам
Ведь приёмник не сможет создать обратный канал, т.к. инициатор не имеет своего IP-адреса.

Нет, дублирования нет (хотя теоретически возможно). Для установки встречного соединения используется немного другой механизм. Алиса подключается к Бобу через Tor, устанавливает шифрованное соединение и затем передает Бобу свой адрес. Боб пытается соединиться с указанным адресом, при этом выполняется дополнительная аутентификация (подобно TorChat). Причем Боб устанавливает встречное соединение только в случае, если входящее соединение пришло с HS (с 127.0.0.1). Я намеренно ввел эту проверку для безопасности: даже в случае HS-HS безопасность встречных цепочек спорна, не говоря уже о наличии открытых участков, по которых идут совершенно одинаковые пакеты (дубли) на обоих концах. Как верно заметил ZAS, по уму надо бы использовать для этого разные ключи и паддинг, но пока что вот так.
Но не пойму смысла в использовании соединения Tor-Inet вместо Tor-HS. Сначала я думал, что латентность будет меньше (цепочка короче), но практика показала обратное. Соединение к HS существенно качественнее (наверное, Exit-ы подводят).


PS: согласно с озвученным ранее планом переписал протокол IKE и оптимизировал загрузку процессора. Сейчас тестирую, чтобы опять не выдать глючную сборку. Кстати, текущая статически линкованная версия имеет ошибки в кодеках AMR (валится на выходе) и OPUS (на старте), внесенные другим коммитером в процессе оптимизации кода. На github давно пофиксино. Бинарники на днях (после теста) заменю на новые уже V02a вместе с документацией (не совместима по IKE, все криптографические подробности внесенных изменений и их обоснования будут в релизе): добавлена wPFS к защите ИД инициатора, исключена возможность зондирования на предмет наличия контактов в записной книге, добавлена защита от тайминг-атаки и т.д.

— unknown (30/10/2014 09:29)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

aplay -l
arecord -l
— gegel (30/10/2014 20:24)   профиль/связь   <#>
комментариев: 393   документов: 4   редакций: 0
aplay -l
arecord -l

Спасибо, после дополнительного насилования google вроде как получилось. Для использования alsa-интерфейса, представляемого установленным pulseaudio (этот интерфейс назначается по умолчанию) изменил строчки 2 и 3 в файле audiocfg онионфона на
plug:default
Заработало параллельно с аудиоплейером через pulseaudio (в Ubuntu). Если с точки зрения безопасности предпочтительно монопольно захватить аудиоинтерфейс на нижнем уровне, оставьте как было:
plughw:0,0
— Гость (30/10/2014 23:13)   <#>
Похоже что знак комментария # в этих строках 2 и 3 не работает. Т.е. если их закомментировать и дальше указать другие устройства, всё-равно будет использоваться plughw:0,0. Только при замене этих строк на plug:default устройство расшаривается.

В опции TCP_interface указывать порт, отличный от 17447, бесполезно. Порт появляется, но скрытый сервис не доступен. Пытался звонить с одного онионфона (порт 17447) на другой (порт 17448), оба на локалхосте. Выдаётся сообщение "Hidden Service unavaliable". Если звонить в обратном направлении, то соединение устанавливается, предлагается нажать Enter для приёма вызова, но звука нет.

Если звонить самому себе, т.е. когда вызывающая и принимающая сторона – один и тот же скрытый сервис онионфона (порт 17447), появляется сообщение



и звук также отсутствует. Или может проблема с кодеками на x86_64?

Если звонок самому себе делать с онионфона на другом порту (17448), то опять "Hidden Service unavaliable".
— gegel (31/10/2014 01:00, исправлен 31/10/2014 01:04)   профиль/связь   <#>
комментариев: 393   документов: 4   редакций: 0
Похоже что знак комментария # в этих строках 2 и 3 не работает.

Знак работает, но для упрощения я жестко привязал параметр к номеру строки (ничего не бывает так постоянно, как временные меры). Поэтому в случае, если строки 2 и 3 (считая с первой) закомментировать, то используется plughw по умолчанию, не зависимо от дальнейших параметров.


В опции TCP_interface указывать порт, отличный от 17447, бесполезно.

Честно, я не проводил таких экспериментов на одной машине: у меня достаточно недорогих компьютеров с разными ОС для таких целей. Но по вашему описанию не смог понять, сколько экземпляров Tor у Вас запущено и сколько HS поднято. В принципе, можно запустить один Tor, но HS в любом случае должно быть два, и они должны быть на разных портах (например, 17447 и 17448). Ну, и в conf.txt обоих онионфонов должны быть прописаны соответствующие порты TCP-слушателей.
Что касается звука, то не могу сказать причину, но точно знаю, что статически линкованный бинар работает на x86_64, и что собирается корректно на этой платформе в gcc в режиме 32.
Уточните, работает ли тест звука (без соединения) на онионфоне? Если да, то с кодеками все ОК. Попробуйте также lpc10 или celp выбрать: с ними точно все ОК было.


Новая сборка практически готова, надеюсь, завтра представлю.


И сразу попробую собрать и поднять у себя на сервере (на HS) эхо-вариант, автоматически принимающий входящие, декодирующий полученные звуковые пакеты, кодирующий в AMR и отправляющий обратно. Задержка, конечно, будет двойная, но для оценки достаточно.

На страницу: 1, ... , 31, 32, 33, 34, 35, ... , 50 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3