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).
комментариев: 393 документов: 4 редакций: 0
Используется именно JavaScript. Но не в проекте. Собственно, онионфон написан на чистом С. Он может быть запущен в виде демона, управляемого через контролирующий TCP-порт. Одним из протоколов, используемых для управления демоном (отсылки на него команд и получения ответов и уведомлений) является протокол WebSocket. В качестве клиента выступает любой браузер, в котором открыта специально созданная HTML5-веб-страница с элементами графического интерфейса (кнопки, флажки...) Для обеспечения функциональности этих элементов как раз и используется нативный JavaScript, поставляемый в виде отдельных js-файлов вместе с html-файлом страницы и исполняемый в браузере. К Java это никакого отношения не имеет.
Если планируете поддерживать возможность обмена текстом в onionphone, насколько сложно было бы приделать к нему эту функцию? Очевидно, что придётся содержать базу хэшей доставленных сообщений и время от времени её сверять. Звучит нелегко.
комментариев: 393 документов: 4 редакций: 0
Возможность чата реализована: после установки соединения набираете в консоли текст, жмете Ввод, и текст отображается в консоли абонента (максимальная длина строки 252 символа) Ввод кириллицы не поддерживается, но при использовании веб-интерфейса браузеры кодируют строки в UTF8, поэтому кириллица проходит с максимальной длиной строки 126 символов.
Это, скорее, относится к серверным решениям (потеря может быть на сервере) и p2p UDP-решениям. Онионфон использует p2p TCP, а этот транспорт безпотерьный по определению.
Но Вы неожиданно обратили мое внимание на другую, скорее противоположную, проблему. Немного о шифровании в онионфоне:
Ониофон работает с шифропакетами, пакуемыми в TCP-поток. Каждый пакет содержит нешифрованное поле типа (длины пакета), шифрованное тело и МАС. На обоих сторонах организованы синхронные счетчики пакетов, принимающие участие в шифровании: для каждого пакета sponge абсорбирует ключ, счетчик и флаг инициатора, затем выжимает гамму. После ксора считается МАС: новый sponge аналогично абсобирует ключ, счетчик, флаг инициатора, затем шифропакет, и затем выжимает МАС. После отправки пакета счетчик продвигается вперед. Если МАС на приемной стороне не совпадает, то пакет отвергается, а если все ОК, то их счетчик синхронно также продвигается вперед (назад – никогда). В UDP я предусмотрел синхронизацию (в каждом пакете в открытом виде передаю 7 младших бит счетчика, что дает возможность восстановить актуальный номер счетчика – только вперед!-на приемной стороне при потерях). Но в TCP я это не использовал, понадеявшись на безпотерьность транспорта. Но не учел возможность спонтанных искажений в канале: если МАС не совпадет, пакет не зачтется и сбой синхронизации счетчиков будет фатальный.
Ваша функция с гарантией доставки как раз полностью обеспечивается (при любой потере или искажении сообщения связь будет неизбежно прервана). Но я пару раз во время тестирования наблюдал ситуацию спонтанного сбоя в обычных условиях с серией последующих сообщений "Lost crypto synchronization, trying to restore..." и разрывом соединения. А вот восстановление для TCP я как раз и забыл доделать. По уму надо бы при получении серии неверных пакетов пробовать подгонять счетчик вперед, предполагая предыдущие пропуски. Уведомления о неверном (и потерянном) пакете будет достаточно, незачем рвать соединение.
Исправлю.
Это разные проекты, или TorFone просто заброшенный проект, а OnionPhone его продолжение?
Непонятно чем надо пользоваться
комментариев: 393 документов: 4 редакций: 0
Ответ уже был тут.
И еще в самом начале описания об этом упоминается.
Просто TorFone -это был первый блин, и хоть и не совсем комом, но возможности для совершенства были значительные. Не утверждаю, что онионфон – это идеал, но все же к его релизу опыта уже побольше.
Фактически онионфон сейчас в стадии альфа-тестирования, официального релиза и беты пока нет.
http://torfone.org/onionphone/indexru.html
комментариев: 393 документов: 4 редакций: 0
Приношу извинения: в описании это действительно с первого прочтения понять трудно. Обязательно переделаю.
Конечно же, нет. Онионфон – приложение, работающее локально, и абсолютно не зависящее от внешних факторов (серверов и т.п.). Однажды скачанное (собранное) приложение никогда не сигнализирует о себе куда-то, не апдейтится, не может управляться извне, и не может быть блокировано (будет работать, пока работает Tor).
Для управления онионфоном из браузера необходимо открыть браузером файл indexru.html, находящийся в папке web пакета онионфона. (Запустите браузер и перетяните на него мышью указанный файл.)
Жмите Connect на открывшейся в браузере страничке. Если онионфон запущен, то браузер подключится к нему и Вы сможете управлять ониофоном из браузера, используя графические элементы.
Разобраться с управлением помогут всплывающие подсказки (потом их можно отключть).
Заметьте: выполнение JavaScript в браузере должно быть разрешено. Загруженный html-файл не "лезет" в интернет, использует только скрипты из js-файлов в папке web. И html, и js легко проверяются на отсутствие опасных элементов и инициализаторов внешних соединений. Браузеру нужен лишь доступ к localhost:8000, остальное можно запретить.
ПС: адаптировали код к сборке в 64-битных системах, тестируем.
Дальше: так надо запускать TorChat, или Онионфон работает самостоятельно?
Вот у меня Windows XP/32, у приятеля какая-то Федора, скорее всего тоже /32, что нам нужно пошагово сделать, чтобы говорить по Онионфону через Tor?
Простите на настырность ;)
комментариев: 393 документов: 4 редакций: 0
Собственно, нужен Tor в любом виде: в составе Торчата, Тор-браузера или отдельно. Сам по себе Торчат не обязателен, только лишь для удобства видеть онлайн-присутствие абонентов.
Прежде, чем расписать пошагово, уточните: есть ли у Вас и у Вашего приятеля Тор-браузер? Можете ли Вы найти и редактировать конфигурационный файл torrc? Я сам не совсем в курсе, где он локализуется в современных сборках TBB.
Просто тяжело определить, с какой степенью детализации необходимо расписывать: с одной стороны, чтобы все было понятно, а с другой – чтобы не показалось, что я Вас недооцениваю :).
Да, TBB присутствует, и частенько редактирую torrc
C:\Program Files\Tor Browser\Browser\TorBrowser\Data\Tor\
комментариев: 9796 документов: 488 редакций: 5664
[off] забавно получилось, как будто от слова деликт [/off]
комментариев: 393 документов: 4 редакций: 0
Последовательность действий для быстрого начала работы
(без компиляции и без использования PGP-аутентификации)
1. Скачиваем, распаковываем Тор-браузер, ищем torrc файл.
2. В torrc добавляем строки:
HiddenServiceDir hidden_service
HiddenServicePort 17447 127.0.0.1:17447
3. При запуске Тор-браузера будет создан каталог hidden_service
Открываем находящийся в нем файл hostname и копируем свой онион-адрес, например: gegelcy5fw7dsnsn.onion
Сообщаем его своим абонентам.
4. Скачиваем сборку онионфона:
– для linux
– для windows
Распаковываем в любую папку. Это не самые новые версии, но рабочие.
5. В файле conf.txt устанавливаем значения параметров:
Our_onion=gegelcy5fw7dsnsn
Tor_interface=127.0.0.1:9150
(значение первого параметра – ваш адрес без суффикса .onion,
в значении второго параметра изменен порт для TBB вместо TorChat)
6. Запускаем Онионфон, для этого заходим в консоли в папку онионфона и выполняем ./oph (или oph.exe)
7. Проверяем аудио: набираем -RV <Enter>, жмем <Enter> для включения передачи
Для отключения теста -R <Enter>
8. Звоним абоненту: -Ogegelcy5fw7dsnsn <Enter>
9. После ответа жмем <Enter> для включения дуплекса или используем клавишу Tab как тангенту.
10. При получении входящего звонка используем <Enter> для приема соединения, затем (после согласования ключа)
аналогично жмем <Enter> для включения дуплекса или используем Tab как тангенту.
11. Завершение разговора -H <Enter>, выход из программы -X <Enter>
Использование веб-интерфейса:
12. Запускаем браузер на вашем компьютере
13. Из подпапки web папки онионфона перетягиваем на окно браузера файл indexru.html (или открываем его через меню браузера)
14. На открывшейся веб-странице жмем кнопку Connect, браузер должен подключиться к запущенному онионфону.
15. Используем графические элементы в окне браузера для управления онионфоном. Наводим мышью и получаем всплывающие подсказки.
Если что-то непонятно, или что-то пошло не так, пишите, чтобы у нас была обратная связь.
споюпопробую и отпишусь всенепременно!Может, будет учтено в ваших доках.