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

Комментарии
Гость (14/01/2013 21:17)   
Ок, соры гляну сегодня.
А что на счет NAT traversal, когда не через TOR?
— gegel (14/01/2013 21:47)   
Приложение peer-to-peer, внешний STUN не использует. Напрямую без проблем, но ессно на белый IP (если динамический, то на dyndns аккаунт). Если локальный роутер стоит, то естественно, используемый TCP-порт проключить надо на комп с телефоном (слушающий порт настраивается в ini телефона).
Гость (14/01/2013 23:54)   
Спасибо, интересный проект.


Можете на главной странице подправить основной текст:

Internet telephony is now an important part of human people communications and should be protected from intruders collecting information about you. I had an idea to use the old PGPFone designed by Philip Zimmermann for these purposes by adding the ability possibility to use The Onion Router anonymizer for to ensure anonymity of callers. I did some tests to adapt adopt VoIP transport to TOR tunnels and eventually made acceptable alpha release.

As a result, the TORFone was designed to voice communicate voice via Internet (make phone calls to the addressee) similarly as to Skype but with the following differences:

1. TORFone is an open source project, therefore it which guarantees the absence of "backdoors" and the quick elimination fixing of potential vulnerabilities.

2. TORFone is fully portable (it can be run from a flash carrier or virtual TrueCrypt-disk and leaves no residue in the system) and works with all versions of Win32 from Windows 98, has very low system requirements (above PI 233 MHz 32M RAM), is economical in traffic (at least 20 kbit/s which corresponds to the GPRS Class 10).

3. TORFone decentralized ie does not use an external server and does not require pre-registration number.

4. TORFone provides complete full confidentiality (used by using DH-4096 to match the session key and 3-DES for to encryption of the voice traffic). The attacker is mirrored who mirrors the traffic is unable to listen to the conversation and is not be able to decode it later even if he gainsing access to the computers of participants.

5. As cCaller and callee are completely anonymous to each other and to outside observers (a call is made on hidden TOR-service user).

6. Calls using TORFone is hidden to the outside observer as since TOR traffic with not differsence from the usual https-connection.

I think now that TORFone is one of the most anonymous and confidential means for the Internet telephony. The payment for anonymity is voice latency up to 2-4 seconds (because traffic goes through a chain of 6 nodes located around the world). If anonymity is unnon-important Torfon can perform work as a direct connections "point to point" using IP-adress / domain name which fully keeps the privacy. Also Torfon also provides subscriber voice authentication to avoid attack "people man on in the middle" and, therefore, it can be used to safe exchange by of personal data (such as files or short text messaging) safely. (such as files or short text messaging)

В последнем абзаце: слово means (средства) вроде бы не имеет в английском языке единственого числа, потому фикс потребовал что-то поменять.
Гость (14/01/2013 23:56)   
Win98-XP-7-8.

Версия для Linux не планируется?
Гость (14/01/2013 23:59)   
Сырцы подписаны вашим PGP-ключом?
Гость (15/01/2013 00:02)   
По поводу первого пункта: открытость исходников не гарантирует отсутствие бэкдоров, а просто делает их поиск куда более лёгким делом. Многие бэкдоры могут быть замаскированы под невинные случайные ошибки в коде. Лучше так не палиться, а написать как-то мягче, более обтекаемо.
— gegel (15/01/2013 02:08)   
Спасибо, на сайте все поправил.
Под Linux можно потом попробовать портировать, просто исходники оригинального PGPFone под Win32, с этого и начал.
Нет, да данном этапе я ничего не подписывал. Были подписаны оригинальные исходники Циммерманна, надо убрать.

ПС: также тестировал i2p в плане пригодности для voip. В принципе, streamr UDP туннель можно использовать, но я так понял, что он односторонний. Во всяком случае, мне не удалось передать данные только в одном направлении. Кто в курсе, подскажите, можно ли и как проще всего создать там двухсторонний UDP-тунель.
— gegel (15/01/2013 02:23)   
ППС: Сорри, ссылка на исходники на главной странице сайта указывала на пакет. Поправил: torfone_v01a_src.zip
Гость (17/01/2013 01:51)   
Как там с качеством связи через Tor? Говорить без специального выбирания быстрых цепочек можно, или будут слышны только отдельные скомканные слова?
Гость (17/01/2013 02:35)   
Забыли исправить: not differs (т.е. 3е лицо ед.ч.).
Гость (17/01/2013 02:43)   
Как в вашем проекте обстоят дела, например, с этой[link1] уязвимостью? Другие комментарии по данной ссылке тоже примечательны. У вас ZRTP?
Гость (17/01/2013 12:33)   
На начальном этапе тестирования действительно были слышны отдельные слова, но очень помог адаптивный буфер пакетов. В нем накапливается до 32 пакетов по мере их поступления, а извлекаются они по таймеру с изменяемой частотой так, чтобы пытаться поддерживать заплненным 50% буфера. Беда ТОР в том, что бывают периодические замирания туннеля, а потом все данные приходят одномоментно. Штатный кодек естественно дает пазу при замирании, а избыточные данные теряются (выпадает часть слов). Я добился, что практически ничего не выпадает, но ценой дополнительной задержки в 1-2 сек. Так что единственной неприятностью есть задержка звука в 3-5 сек (а иногда и до 10 сек при неудачном туннеле), что не совсем приятно с непривычки, но терпимо в реальном общении типа "передача – прием".
Размер буфер (и дополнительная задержка, вносимая им) адаптируется к життеру туннеля, но скорее всего потребуются большие значения буфера: 10-15, лучше сразу же установить, т.к. адаптация с 1 до 15 займет 2-3 мин.
И еще: я заметил, что ТОР-туннель не сразу прояляет максимальную производительность: нужно какое-то время (1-2 мин), чтобы "раскачаться". Затем получается достаточно стабильное состояние и качество связи.
Я советовался с ребятами, создающими torrc с отбором узлов, они обещали сделать специально для данного приложения. В любом случае, рекомендовали использовать порты 80 и 443 (более быстрые).
Кроме того, появилась идея увеличить общий трафик (сейчас Торфон генерирует всего 2Kбайт/сек трафик) и тем самым избезать накопления данных в узлах ТОР-цепочек. С одной стороны, это должно увеличить анонимность за счет добавления рандом-данных, с другой чем плотнее трафик, тем система более подвержена статистическим атакам с модуляцией канала. Пока пробую, там посмотрим.
Очень интересны отзывы с результатами ваших тестов – попробовать дело 5 минут...

По поводу описанной уязвимости: ТОРФон фактически не использует RTP (тогда его просто не было). На выходе голосового кодека формируются пакеты строго одинаковой длины (149 байт при GSM7350) не зависимо от звукового содержимого, и передаются они через строго одинаковые интервалы (80 mS), поэтому данная уязвимость неактуальна.
В начале голосового пакета идет тип и мл. биты порядкового номера (синхронизируется на обоих сторонах), являющиеся частью nonce. Другая часть nonce – номер 8-байтного блока в пакете. Т.о., nonce для каждого блока шифруется tDES и результат ксорится с данными. Шифрованная часть пакета содержит относительный TimeStamp (номер пакета) и CRC.
На первый взгляд я не вижу тут явных уязвимостей (тем более Циммерманну доверяю полностью), но всяко бывает...
— unknown (17/01/2013 12:44, исправлен 17/01/2013 12:47)   

При связи между скрытыми сервисами [HS-Tor-HS] дополнительная аутентификация и шифрование м.б. не нужны, т.к. канал шифруется и аутентифицируется посредством самого Tor, а т.к. никаких исходящих узлов нет, то генерация сеансовых ключей окончательно установленного канала остаётся в ведении компьютеров самих абонентов.


Это одна из причин, почему трафик в торчате принципиально не шифруется никаким протоколом поверх (точнее внутри) торовского. Хотя равномерное шифрование с целью зашумливания и выравнивания статистики исходного звукового сигнала м.б. хорошей идеей.

Гость (17/01/2013 13:58)   
Наверное, я не до конца вник в алгоритм соединения с HS: мне казалось, что между концом цепочки (три узла) от исходящего клиента и началом созданной цепочки (еще три узла) к HS сегмент открытый.
Но тем не менее, лишний слой шифрования еще никому не вредил, хотя бы действительно с целью отбеливания. Кроме того, я предусматривал также режимы односторонней анонимности и вовсе без нее, где без прикладного уровня шифрования никак не обойтись.
— unknown (17/01/2013 14:47, исправлен 17/01/2013 14:47)   

Ага и на точке встречи (RP) тогда сидел бы человек-посредине, слушал в открытую весь трафик и всё бы знал о скрытых сервисах. Нет уж, фиг ему. Внутри Tor весь трафик шифрован как узлами, так и самими клиентами.


В последних версиях можно даже скрыть сам факт работы (stealth mode) скрытого сервера от тех, кто даже знает его адрес, но не знает текущий аутентифицирующий ключ (auth cookie).


Для односторонней анонимности во внешнюю сеть, да, без прикручивания дополнительного криптопротокола не обойтись.

Гость (17/01/2013 17:13)   
Для односторонней анонимности во внешнюю сеть, да, без прикручивания дополнительного криптопротокола не обойтись.

Расскажите пожалуйста подробнее, как можно защитить ТОР?
— unknown (17/01/2013 17:18, исправлен 17/01/2013 17:20)   

Имелось в виду не тор, а разговор от перехвата на исходящем узле между тором и незащищённой сетью. В отличие от разговора только внутри тора. Ведь программа ТС предполагает оба варианта использования?

Гость (17/01/2013 20:04)   
Зная дикие задержки Tor такое общение наверное будет походить больше на обмен речевыми сообщениями, нежели на разговор?
— gegel (17/01/2013 23:57)   
Ну, смотря что считать "дикими" :) Реально получается 4-5 сек задержки голоса. Конечно, надо привыкнуть, но общаться в принципе, можно. Лично тестировал с людьми, далекими от технологий – приспособились достаточно быстро.
Редко канал действительно "замерзает" на 20-60 сек, но это скорее аварийная ситуация, чем норма.
Гость (18/01/2013 00:55)   
сейчас Торфон генерирует всего 2Kбайт/сек трафик

Скайп, как один из самых нетребовательный к пропускной полосе приложений, требует для надёжной связи хотя бы 10kB/sec.

Очень интересны отзывы с результатами ваших тестов – попробовать дело 5 минут...

Мало у кого есть Windows, поэтому попробовать не получится. Была бы версия для Linux — было бы другое дело.

В последних версиях можно даже скрыть сам факт работы (stealth mode) скрытого сервера от тех, кто даже знает его адрес, но не знает текущий аутентифицирующий ключ (auth cookie).

Можно ли поменять все auth cookie, не меняя onion-адреса самого HS?
— unknown (18/01/2013 09:41)   

В этом то вся и фишка, если я правильно понял ваш вопрос.
— unknown (18/01/2013 09:43)   

Push-to-talk[link2].
— gegel (18/01/2013 11:00)   
Думал, как лучше, а получилось как всегда :) – наоборот, искал решение под Win32 с целью массовости. Но pgpru – не то место, конечно.
Режим Push-to-talk, естественно, у меня предусмотрен. Убираем флажок "Request full duplex" и готово. Кроме того, предусмотрен и VOX (активация голосом: справа у индикатора уровня слайдер для регулировки порога срабатывания). Но, как показала практика, при работе через TOR использовать эти режимы не стоит, т.к. канал лучше "раскачать" постоянным трафиком. наоборот, буду пробовать добавлять dummy пакеты для этих целей.

Только что перепроверил снифером: в режиме установившегося голосового соединения (кодек GSM 7350 Hz) имеем строго каждые 80 mS TCP-пакет с датаграммой ровно в 141 байт – размер и интерфал отправки фиксированы и не зависят от голоса. Добавив 20+32 байта на заголовки, получаем 2412 байт/сек в одну сторону. При этом качество голоса выше, чем у Skype. При использовании минимального кодека GSM 4410 Hz (голос вполне разборчив) размер датаграммы составляет 75 байт, т.е. общий трафик составляет 1587 байт/сек. Я пользовал оригинальный PGPFone через GPRS под старым Siemens S55 – все работало на ура!
Я снимаю шляпу перед Циммерманном за эту разработку, хоть это и прошлый век. Сейчас такого не делают: очень много излишеств, и никто не заботится о ресурсах.
Гость (18/01/2013 14:45)   

и для Android
— gegel (18/01/2013 22:58)   
Вот Android – как раз то, о чем я постоянно думал, работая над проектом. Правда, я раньше не писал под ним, и без native C тут не обойтись, но надо же когда-то начинать :)
Как только вырулим под Win32, так сразу...
Гость (18/01/2013 23:57)   

Здесь просто «массовость» другая. :)


Ну, PGPFone же запущен был не на Siemens S55, а на ПК, так что... Был ещё какой-то http://www.cryptophone.de, можно с ним сравниться по заявленным показателям производительности.
Гость (18/01/2013 23:58)   
Хотя бы какие-то скриншоты на Torfone выложили на своем сайте, что ли...
И заменили для "Руководство пользователя ТОРфона" дурацкий проприетарный формат CHM на что-нить попроличнее.
Нехорошо, знаете ли, так делать. Никсоиды вынуждены извращаться, чтобы прочитать ваше руководство.
— gegel (19/01/2013 01:13)   
Сказано – сделано :)

Краткое руководство по тестированию со скриншотами в rtf:
http://torfone.org/download/testing.zip

Руководство (en, ru) в html:
http://torfone.org/download/help.zip

Сорри за грамматику.
Кроме http://www.cryptophone.de есть еще супернее: http://www.speakfreely.org/
Срава на главной странице сайта я дал ссылки на интересные VOIP.
Гость (19/01/2013 01:51)   
Кроме http://www.cryptophone.de есть еще супернее: http://www.speakfreely.org

Чем ваш проект хуже/лучше, чем speakfreely? Можно ли увидеть сравнительную таблицу по уже существующим проектам шифрованных VoIP? Или все они настолько разные, что нет смысла сравнивать?
— SATtva (19/01/2013 08:06, исправлен 19/01/2013 08:06)   
есть еще супернее: http://www.speakfreely.org

Это ж какая-то совсем ископаемая архаика. Если говорить о проприетарщине, то silentcircle.com пару дней назад объявили выход версии под Android.

— gegel (20/01/2013 01:12)   
PGPFone не мой проект, я просто изменил транспорт на TCP, добавил поддержку SOCKS5 и дополнительный буфер для компенсации большого Jitter. То же, в принципе, могу попробовать сделать и с speakfreely. Большой буфер там уже, кстати, есть.

Мне кажется, speakfreely даже моложе, чем PGPFone. Самый древний из них скорее всего, http://nautilus.berlios.de/ (консольный), но обновляется (2009). Все три используют практически одинаковый код. В speakfreely отсутствует DH (по лицензионным соображениям), используются preshared key или паралельно с PGP. А плюсы: больше кодеков, больше криптоалгоритмов, больше протоколов (в т.ч. стандартные) – вобщем, более гибкие настройки. Ну, и кроссплатформенность исходников.
А silentcircle, думаю, тоже заслуживает доверия, т.к. это теперешний проект лично Циммерманна. Бизнес есть бизнес. Но не думаю, что что-то основательно поменялось в сырцах по сравнению с PGPFone, кроме GUI и добавки сервера :)
А вот TOR Циммерманна не заинтересовал: из его ответа на мое уведомление об использовании его сырцов:
"TOR is too slow for any real time protocol, such as telephony."
И тем не менее, TORFone реально рабочий получился :)
Теперь на очереди I2P...
Гость (20/01/2013 06:01)   
тем не менее, TORFone реально рабочий получился :)

Кроме вас кто-нибудь ещё этим пытался пользоваться? Наверняка ведь вы не только на pgpru.com об этом сообщили. Какие впечатления народ пишет?
— gegel (20/01/2013 11:50)   
Например, цитата:

The results were as expected. The lower the number of the servers and the more fast they are, the lower the latency will be .
I experienced latencies down to 300 msec.The worst case occured only once with 8 chains where the latency rised over 10.000 msecs,but it was also peak time of traffic for Europe.
...
My general conclusions are VERY POSITIVE !!!

И все таки, а что мешает попробовать? Дел то ровно на 5 минут, настроек никаких – все ж Win32...
— SATtva (20/01/2013 12:14)   
Проект очень интересный, спасибо за Вашу работу.

Останавливает многих, думаю, именно win32 — большинство активных пользователей здесь всё-таки под различными никсами. Теоретически, можно потестировать под вайном, но это совсем уж грязно, даже если оно и запустится.
Гость (20/01/2013 18:14)   
Эта штука больше всего нужна под мобильные девайсы ИМХО. Т.е. под Android.
— gegel (20/01/2013 19:56)   
Попробовал под вайном – все работает замечательно. Проверил в режиме "точка-точка" (без TOR), но, думаю, проблем и с ним не будет. Так что просьба по возможности потестить, если, конечно, вайн не вызывает нервный тик изначально.
Андроид – да, из-под orbot, но я не волшебник, а только учусь, так что позже :)
У меня еще одна идейка есть. Т.к. я ембеддер и давно пишу под китайские GSM-модули Quectel встроенные приложения (отдельными задачами на ARM чипсета), использующие API ядра (типа эльфов на старыхь Сименсах). Если ресурсов хватит (а мне кажется, да), то можно выйти на аппаратную реализацию. Но, с одной стороны, если проект не будет open source, то доверия никакого, а с другой, если будет – то никакого проку при значительных трудозатратах.
— unknown (21/01/2013 12:42, исправлен 21/01/2013 12:44)   

https://tails.boum.org/todo/VoIP_support/


Preliminary testing showed OnionCat[link3] + Mumble[link4] to be a working and relatively easy to setup Tor-enabled VoIP solution; the 1/2s – 1s delay is only slightly annoying.

+ ещё много других потенциальных вариантов.

Гость (22/01/2013 08:05)   
The worst case occured only once with 8 chains where the latency rised over 10.000 msecs,but it was also peak time of traffic for Europe.
Тестил пару лет назад jabber-сервер, поднятый в onion. Средняя задержка была около 10 сек.

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

OnionCat делает IPv6-тунель, ужас. Неужели IPv4 нет в качестве альтернативы? И не понятно, в чём его смысл. Если так нужна прозрачность, то разве нельзя запустить тот же OpenVPN между скрытыми сервисами?
— gegel (22/01/2013 12:43)   
"testing showed wwwOnionCat + wwwMumble" – я с этого как раз и начинал :) Но запуск OnionCat под Win32 – это было что-то! Вобщем, хомячки отдыхают. Поэтому пришлось искать другие пути.
"OpenVPN между скрытыми сервисами" – а это был мой второй этап. И это работало, кстати. Из недостатков – всякие эффекты из-за последовательных вложений UDP-TCP-UDP (задержки, накопления данных), ну и опять же, покажите мне блондинку, поднявшую VPN-сервер для приема звонков (с генерацией сертификатов и т.д.). Да и сам сертификат – громоздкое дополнение к онион-ссылке.
Таким образом вышел на теперешний user-friendly вариант.
Гость (26/01/2013 22:46)   
я с этого как раз и начинал :) Но запуск OnionCat под Win32 – это было что-то! Вобщем, хомячки отдыхают.

Так удалось запустить или не удалось? Если удалось и нареканий к качеству связи не было, можно было б просто собрать автоматизированный пакет под винду, включающий OnionCat + настройки поверх для юзерофильности, а не писать свой код с полного нуля.
— gegel (27/01/2013 01:28)   
К сожалению, наверное, я все ж тупой, т.к. в итоге так и не удалось :( Проще оказалось написать свое :) Если Вы расскажите мне, как прикрутить Кота (или вообще идеально – соберете такой пакет, весьма полезный и для остальных не изощренных), то оттестирую все известные мне p2p VoIP и изложу результаты. Но в любом случае понадобится тула с компенсацией jitter хотя-бы до 1-2 сек. В том же SpeakFreely есть (до 3 сек).
Я так думаю, Кот поддерживает проброс UDP по IPv4? Иначе нет смысла и пробовать, т.к. тул, поддерживающих v6, единицы.
Гость (27/01/2013 03:26)   
К сожалению, наверное, я все ж тупой, т.к. в итоге так и не удалось :(

Я просто спросил, т.к. из вашего поста ответ на этот вопрос был не ясен. В любом случае, раз уж вы потратили кучу времени на написание проекта с нуля, это теперь не особо актуально. Или вы думаете, что у связки OnionCat+Mumble могут быть какие-то весомые преимущества по сравнению с вашим проектом?
— gegel (27/01/2013 13:12)   
Думаю, что преимущество только одно: запускать другие VOIP-тулы. Но недостатки могут быть: это, в первую очередь, следствия UDP over TCP.
И опять же: с нуля проект написан в 1996 Прайсом и Циммерманном. Я лишь поменял транспорт на TCP (это та ключевая проблема, которая мешает использования имеющихся тул), добавил поддержку SOCKS5 (это пару строчек кода) и дополнительный адаптивный буфер для jitter-компенсации (тут пришлось повозиться). Ничто не мешает вненсти эти изменения и в другие open source VOIP. Вот сейчас смотрю сырцы nautilus: мультиплатформенный, но консольный. Нет дуплеска и GSM-кодека. А в остальном – то же. Будет время, попробую переделать.
— unknown (27/01/2013 19:31)   
По возможности, отсылайте патчи с обоснованием идеи в Open Source проекты. Опция установления низкоскоростного устойчивого голосового TCP/VoIP м.б. полезна сама по себе. Например в отдалённых районах с плохим (дорогим) беспроводным интернетом.
Гость (28/01/2013 00:39)   
мультиплатформенный, но консольный.

Консольный — это хорошо. :)
— gegel (28/01/2013 00:47)   
ОК.
Думаю, при дорогом интеренете УДП выгоднее, чем ТСП за счет короткого заголовка. Да и при плохом тоже, за счет невосстановления потерь и сохранения за счет этого реалтайм.
Меньше всего излишеств в протоколе nautilus с кодеком LPC10. Но в нем DH1024 максимум и только симплекс голоса.
Гость (28/01/2013 02:17)   
Гегель, а тестировали ли вы ваш VoIP в сети I2P?
— gegel (28/01/2013 16:15)   
Тестировал. См. http://zzz.i2p.to/topics/1330
Туннель накапливает данные, затем выдает их порцией, причем раз в несколько сек, что абсолютно неприемлемо. В новой версии TORFone специально добавил функцию отправки регулируемого к-ва dummy-пакетов после каждого голосового (для насыщения туннеля). Но ничего стоящего не получилось, теперь уже, наверное, за счет высоких требований к быстродействию компа (Java все же) – моих 1.5 ГГц явно не хватало.
У кого есть возможность протестировать, буду весьма благодарен.
Что касается UDP, то тестировал streamer туннель. Он односторонний, так что написал утилиту, отправляющую UDP-пакеты сходной длины с интервалом 80 мсек, содержащие таймстемп. На получающей стороне анализировал задержку, життер, нарушение порядка и потери.
В принципе, так все приемлемо, но буфер придется переделать для восстановления порядка доставки.
Но вот создавать двухсторонний UDP-туннель надо самому: его нет среди стандартных типов. Т.к. я на Java не пишу, то придется использовать SAM-интерфейс I2P-клиента. В принципе разобрался, уже определился с логикой работы I2PFone, но еще руки не дошли попробовать. Опять же, не факт, что через SAM-бридж все будет нормально: как будут хоть-какие то результаты, отпишу.
Гость (02/02/2013 02:19)   
Щекотливый вопрос к автору проекта: на вашем сайте два флага и языка – русский и английский.
С русским понятно, вы вроде наш, русский человек.
Но зачем вы культивируете поддержку Torfone на английском, вы что, планируете выйти на международный, т.е. иностранный уровень?
Если да, то кому это нужно? Ведь мы все и так все под колпаком – у Гугла, начиная с поисковика, почты и заканчивая Андроидом, у MS (Skype) и т.д.
Понимаю, что используются открытые коды и все такое, но зачем еще этот реверанс в сторону иностранщины? Настораживает...
Гость (02/02/2013 02:46)   
но зачем еще этот реверанс в сторону иностранщины? Настораживает...

П-ц.
Гость (02/02/2013 12:58)   


Ога. Жидомасоны зашевелились.
А вообщето все правильно – если нам приходится париться, изучая албанский язык иноземных продуктов, то пусть и албанцы тужатся, изучая наши.
Гость (02/02/2013 13:47)   
Дурачок, какие ваши? Вы, деревянные, сначала справки хоть какие-то пробейте про автора прежде чем запугивать намеками на статьи о врагах народа из УК РФ.
Гость (02/02/2013 22:24)   
Вопрос к автору: как с вами связаться тет-а-тет? Возможно спонсорство.
Гость (03/02/2013 00:24)   
Вообще, может, я ересь скажу, но тем не менее: если верхняя граница на лаги (задержку) обусловлена нижележащим tcp-протоколом, то, пуская udp over tcp, её не понизить. Единственное, ради чего это имеет смысл — не переписывать всё с udp на tcp, но, если писать всё с полного нуля и под Tor, то не понимаю смысла использовать udp. Т.е. udp хорош, когда он на самом нижнем уровне. Кстати, в Tor-протоколе много работали над понижением времени отклика, не знаю как в I2P.

Интересно, что здесь было так много постов «дайте нам анонимный VoIP», что уже всех задрали (консервативная точка зрения состоит в том, что голосовая связь не вяжется с анонимностью в сильном смысле в принципе, т.к. голос человека уникален), но, как только появился gegel и предложил решение, ноль отликов, один я да unknown пишут. Где все эти жаждущие анонимного VoIP?


Чем плохо, что проектом будут пользоваться и будут его развивать в том числе и иностранцы? Это и для анонимности лучше: разве хорошо, когда сам факт пользования каким-либо продуктом однозначно идентифицирует национальность? Количество людей, понимающих английский, превосоходит аналогичное количество для любого другого языка. Можно по этому поводу негодовать, но это свершившийся факт, как и то, что стандартный язык для компьютерных вещей, как и вся терминология — английская. Этим недовольны и немцы, и французы, но это свершившийся факт, даже комиссия по защите чистоты французского языка не спасает (они там выискивают и придумывают франкоязычные термины для всего устоявшегося, после чего законодательно требуют в официальных документах использовать только их. У нас есть, вот, ЭВМ, а у них — ordinateur). Если кому-то действительно хочется уесть англосаксов, надо поступить изощрённее: взять топ-10 или топ-15 самых распространённых языков, за исключением английского, и предоставлять интерфейс сайта только на них, только вот кто будет следить за актуальностью перевода на остальные языки? Даже у самых популярных OpenSource-проектов переводы на языки, отличные от умолчального (читай английского), сильно отстают от текущей версии сайта. Короче, как ни крути, всё опять сводится к Вавилону: нужен один язык межнационального общения, что экономило бы затраты на перевод и изучение иностранных языков. В разные времена и эпохи таким лингвофранком успели побывать многие языки, особенно используемые в метрополиях колоний, как то французский, русский, греческий, латынь... Английский тоже не вечен. Для тех, кто забыл, напоминаю: русский язык понимает в среднем только один из 35-ти жителей Земли.
— gegel (03/02/2013 12:37)   
- По поводу языка – no coments. Я разработчик, вне политики. И территориально не в РФ. И, наверное, pgpru – не совсем то место для этой дискуссии.
– Связаться можно по емейл проекта, если нужен реалтайм, обсудим – есть много способов, я не скрываюсь :)
– udp over tcp использован исключительно ради работы через ТОР (последний udp не поддерживает). PGPFone изначально был заточен под udp и приняты меры для минимализации латенции. Верно, идеально было бы писать все с нуля, адаптируя именно под tcp. Но т.к. это большой кусок работы, и не было никакой уверенности в результате, то пошел по пути меньшего сопростивления – навесил сверху tcp + костыль в виде екстра-буфера, тем самым адаптировав к работе в изначально высоколатентной среде ТОР.
– Голос – конечно, деанонимизатор. У меня с самого начала была мысль добавть возможность манипуляции с сырым PCM в буфере (перед gsm-компрессией), т.е. VoiceChanger, но я пока не владею ситуацией, какие алгоритмы мутации применить и насколько они надежны (невосстановимы и некоррелируемы), надо почитать и погуглить.
Гость (04/02/2013 00:49)   
я пока не владею ситуацией, какие алгоритмы мутации применить и насколько они надежны (невосстановимы и некоррелируемы)

Можно взять программу, преобразующую текст в голос. Типа, печатаешь на клавиатуре, а собеседнику это читается искуственным голосом. Ещё сложнее — сделать распознаватель голоса, который бы преобразовывал голос в текст, а потом его повторно читал искуственным голосом. Но это всё так, полуфантастика в плане реальных применений. Наверное, будет сильно неудобно.
Гость (04/02/2013 01:09)   

И у стен есть уши. ©
— gegel (04/02/2013 01:19)   
На сегодня нет достойных систем распознавания речи. 10 мин теста Горыныча – и все понятно...
А вот голосовая мутация – реально. Давно (еще во времена шифрования речи перестановкой формантных зон) использовался случайный спектральный сдвиг. Это можно реализовать программно, но вопрос в том, на сколько такие алгоритмы приемлемы в наше время. Я пока не делал целенаправленного поиска, но подозреваю, что эта тема малопублична. Существующие голосоменялки наверняка детские игрушки, и при небольшом анализе можно если не точно восстановить оригинал, то по меньшей мере доказать идентичность личности в сравнении с оригиналом. Должны же быть какие-нибудь исследования, публикации по данной теме. Если у кого есть какая-то информация в данном направлении, буду безмерно благодарен.
Гость (04/02/2013 02:42)   
А подскажите как эти Torfone или Pgpfone находят друг друга? Ведь связующих серверов для них вроде нет, имхо.
Гость (04/02/2013 03:05)   
Roger Dingledine:

Ugh! Another project using the Tor name in a confusing way (which
will make people think it is supported or endorsed by Tor), without
understanding our trademark policy:
https://www.torproject.org/docs/trademark-faq#combining

I'll try to find some time to contact the person off-line and suggest
changing the name to 'OnionFone' or something more generic. Please feel
free to do so in parallel to me, since I know somebody here has much
more free time than I do. :)

Andrew Lewman:

I started a wiki page to list out these people,
https://trac.torproject.org/pr.....ki/LikelyTMViolators[link5]

Hopefully this doesn't give them google seo juice. I have this list
offline too. It's also been sent to our lawyers for review.
— SATtva (04/02/2013 08:46)   
А подскажите как эти Torfone или Pgpfone находят друг друга? Ведь связующих серверов для них вроде нет, имхо.

Соединение пиринговое (по ip или onion-адресу), без участия центрального сервера.
— unknown (04/02/2013 09:40, исправлен 04/02/2013 12:02)   

В рассылке ещё и по-более принципиальным техническим моментам раскритиковали, чем просто неверное использование имени.


Помимо нарушения правил использвания имени проекта в официально неодобренном софте, ещё и переврали принятое сокрашение:


Note: even though it originally came from an acronym, Tor is not spelled "TOR". Only the first letter is capitalized.

Кстати, к торчату вроде бы такие же претензии из-за имени, плюс ещё какие-то, на фоне множества форков того проекта на сомнительных языках программирования.


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

Существующие голосоменялки наверняка детские игрушки, и при небольшом анализе можно если не точно восстановить оригинал, то по меньшей мере доказать идентичность личности в сравнении с оригиналом. Должны же быть какие-нибудь исследования, публикации по данной теме. Если у кого есть какая-то информация в данном направлении, буду безмерно благодарен.

Мне кажется, что VoIP-over-Tor или PTT-over-Tor м.б. востребовано, но с другим определением анонимности. Не для того, чтобы оставаться анонимным от собеседника. А для того, чтобы скрыть факт того, кто с кем общается от третьей стороны (наблюдателя), скрыть и сам круг общения, время сеансов связи и сам факт их существования. Или для того, чтобы скрыть друг от друга, откуда совершается звонок в данный момент, но при этом оба говорящих в остальном друг другу доверяют, знают друг друга и перед собой неанонимны, а наоборот аутентифицированы. Т.е. анонимный канал для неанонимных между собой пользователей.


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


Пусть аноним письмо пишет или чат устраивает, если у него какие-то поводы привлечь внимание к своей информации.

— gegel (04/02/2013 13:58)   
Из "принципиальных технических моментов" услышал только "нестандарт" и "не поддержан". По поводу сокращения: если Tor is not spelled "TOR", то какие тогда притензии к TORFone??? По домену: Наверное, даже Майкрософт не стал бы возмущатья на что-то типа mywindows.org... Но в любом случае torproject может зарегить для себя все домены с вхождением tor :)
Вобщем, ожидал немного не то: как обычно, социальные моменты почему то доминируют над техническими, что по сути деструктивно.
Раз тут цитировали пост, то цитирую и свой ответ:
Hi!
TORFone has no relation to TOR except use it as a transport.
Also TORFone is not a brand or a commercial product that eliminates any commercial confusions or trademark infringements. TORFone ONLY my own testbed to investigate the possibility of anonymous voice.
I was not going to integrate it with TOR project, receive any sponsorship from it and have only personal research purposes.
Sorry, now I adds a recommended rejection to the site and consider the issue closed.

Я где-то не прав?
— unknown (04/02/2013 14:17)   

Ну если там окна предлагают или что-то обсуждают просто, то нет.
Аналогично, если бы вы выпускали бублики под названием "тор", то никаких претензий у проекта к вам бы не было. Или занимались просто обсуждением торпроджекта, вот как на pgpru.com иногда обсуждается PGP. А вот если бы на pgpru.com стали выпускать какой-нибудь свой PGPsuperphone, то были бы закономерные претензии.

И всё-таки, я бы советовал больше обратить внимание на техническую критику, начиная с того, что циммермановский phone — это потенциально уязвимый abandonware и др.
— gegel (04/02/2013 15:20)   
Как раз стараюсь именно на это обращать внимание.
Но тут есть но: изначально у меня была другая цель – показать возможность передать голос через анонимные сети и те проблемы, которые при этом возникают и будут значимы для пользователя. Если завтра я буду в качестве платформы использовать Jitsi, что то изменится? Я вобще не озадачивался анализом секюрити, тем более, как верно заметили в мейллисте, соединение с HS в любом случае шифровано самим TOR.
Но ни одного замечания или иде в направлении именно адаптации к транспорту так и не было.
Что касается уязвимостей PGPFone, то это вообще вопрос открытый. Я нигде конкретно не видел описания хотя-бы одной его уязвимости (хотя, конечно, это не значит, что их нет). Но, цитирую naif из вчерашнего мейлиста:
c) The PGP source code used is "abbandonware" and is subject to known
security vulnerabilities (like
http://www.cvedetails.com/cve/CVE-2000-0678/) and probably others
Я никогда не считал себя асом в криптографии, но какое отношение это имеет к криптографии PGPFone??? Складывается впечатление, что в Циммермановские сырцы никто в последнее время не вникал. А наклеить "abbandonware" проще простого, тем более имея свои современные аналоги.
— SATtva (04/02/2013 15:28)   
http://www.cvedetails.com/cve/CVE-2000-0678/ ... Я никогда не считал себя асом в криптографии, но какое отношение это имеет к криптографии PGPFone???

Никакого. Данная уязвимость к PGPfone не относится, в нём попросту не используются ни OpenPGP-ключи, ни ADK.
Гость (04/02/2013 20:17)   

На вашем сайте ссылка на обычный email, что некоторым параноикам типа меня не очень нравится.
Можете организовать защищенную, т.е. https-форму обратной связи?
— gegel (05/02/2013 00:00)   
Добавил ключ (pgp4usb), с профиля можете отправить письмо. Если надо онлайн, то можете на ICQ 281929823 через pidgin+OTR+TOR, только время согласовать сначала – я постоянно не сижу.
Гость (07/02/2013 07:05)   

Unknown, вы ещё и заикаетесь?!


Вроде бы по существу уже всё сказано, но могу что-то повторить. Важно не то, является ли торговой маркой TORfone, а то, что маркой является Tor. Предствители Tor пекутся не о том, что вы будете извлекать прибыль, наживая себе аудиторию на известности бренда или созвучии, а о том, что аудитория будет по незнанию транслировать своё доверие всему, где в имени упоминается слово Tor, т.е. будет ассоциировать это с самим проектом Tor на уровне «это они, Tor-девы, всё делают и несут за это ответственность». Собственно, поэтому закон охраняет торговые марки и использовать Tor™ в имени своих проектов как минимум неэтично. По сути это неявная имперсонация, выдача себя за того, кем не являетесь. Опубликование дисклеймера на сайте — это всё хорошо, но лучше всё же сменить имя на OnionPhone или как там рекомендовали.


И на pgpru, и вообще, это всегда так. На одного-двух программистов приходится сотня простых юзеров, которым программистские внутренности программы вообще до фонаря, лишь бы работало. Аудитория желающих потестировать связь в Tor между HS ещё намного уже. Лучше продвигать где-то на англоязычных/международных ресурсах, так больше людей набежит. Можно запостить новость на linux.org.ru, на слэшдоте или ещё где, где аудитории читателей несоразмерно больше, чем у этого сайта; это даст некоторую visibility проекту.

[offtop]
Запостил вопрос[link6].
[/offtop]
— unknown (07/02/2013 10:39)   

Нет, ставлю скобки (в устной речи) :)


TorBOX, например, спокойно переименовали в Whonix без каких-либо непониманий с проектом. А вот в торчате, похоже какие-то неадекваты.
Гость (08/02/2013 00:08)   

Им, наверно, важно, чтобы оно произносилось как «торчат» (авторы русские?). :)
Гость (08/02/2013 15:47)   
Прошу пардону, а эта штука "Voice over TOR" способна работать в обычном Интернете, без Тора?
Гость (09/02/2013 11:45)   
LikelyTMViolators

Есть мнгог слов с суффиксом tor, и на них трудно наложить копирайт. Например, назовите проект CryptoficaTORfone :))
Гость (10/02/2013 03:29)   
Прошу пардону, а эта штука "Voice over TOR" способна работать в обычном Интернете, без Тора?
Автор же выше уже написал, что концептуально — да.
Гость (10/02/2013 15:46)   
Так это концептуально, а практически кто нибудь пробовал, есть какието отзывы?
Дабы упредить вопросы типа сам попробуй: пока лежу в больнице, кроме планшетного андроида ничего нет
Гость (11/02/2013 02:34)   
Так это концептуально, а практически кто нибудь пробовал, есть какието отзывы?

Я не пробовал, а так, это вопрос к автору, пусть он отвечает. Он писал, что и с Tor пробовал, и с i2p оно как-то работало, значит, принципиальных причин не работать и напрямую нет. Дальше вопрос, что поддерживает конкретный, им реализованный, интерфейс (чтобы самому не лезть в код при запуске продукта).
— gegel (11/02/2013 03:43, исправлен 11/02/2013 03:45)   

Конечно, будет работать. Смотрите руководство по тестированию в картинках в части "неанонимный режим": http://torfone.org/download/testingru.pdf


При этом работа программы ничем не отличается от PGPFona
https://www.pgpru.com/forum/ob.....hanizmrabotyiprochee[link7]
за исключением того, что используется TCP вместо UDP.


Собственно, имеется настраиваемый слушающий интерфейс (IP-адрес и порт), а как Вы к нему подключитесь – без разницы: напрямую из интернета, через роутер, из ТОР (настроив скрытый сервис) или из I2P (настроив туннель на IP и порт интерфейса), или из ВПН и т.д.
Что касается исходящего вызова, то при звонке создается исходящий интерфейс, работающий по выбору или напрямую (на IP – порт входящего интерфейса получателя), или же через SOCKS5 прокси.


ПС: по многочисленным просьбам
http://sourceforge.net/p/advto.....d/9d735faa/?limit=50[link8]
скомпилировал сырцы SpeakFrealy, разбираюсь с их "торификацией" (по наличию вдохновения). Хотя лично мне PGPFone больше нравится и кажется элегантнее.

Гость (13/02/2013 23:00)   
Ремарка автору проекта: настроил torfone.ini, т.е. внес в него
после чего запустил TORfone.exe. После этого стало возникать окошко
Это бы ладно, но при нажатии на окошке кнопки OK оно снова выскакивает, и так снова по кругу, из которого невозможно вырваться.
Может, надо какое-то другое, более удобное решение для индикации этой ошибки?
Гость (13/02/2013 23:32)   
ListenAddr:Prt=192.168.50:17447
Не слишком ли короткий IP у вас?
Гость (13/02/2013 23:42)   
Да, машинально пропустил, когда здесь писал – на самом деле оно было так:

ListenAddr:Prt=192.168.1. 50:17447

К тому же непонятно, откуда берется эта ошибка, о чем она, если Intrenet в наличии и файрвол для Torfone настроен?
— gegel (14/02/2013 01:24)   
Невозможно биндить сокет по этому адресу. Возможные причины:
1. Нет такого IP на вашем компьютере. Выполните "Пуск"->"Выпонить"->ipconfig /all и посмотрите, какие IP имеются на ваших сетевых адаптерах. Если хотите слушать все (автовыбор), то используйте 0.0.0.0, это лучший вариант для приема входящих звонков через интернет.
2. Порт 17447 занят другим приложением. Запустите, например, avz и посмотрите, кто занимает этот tcp-порт. Смените порт на другой свободный. Скорее всего, в памяти остался еще один экземпляр torfone (возможно, некоректно завершенный. Снимите задачу через диспетчер).

Ошибка выскакивает постоянно, пока флажок Listen установлен: приложение тупо пытается создать слушающий сокет. Если вобще не хотите слушать, поправьте в ini: EnabledListen=0

ПС: учитывая, что у вас IP за роутером, для возможности приема звонков из интернет не забудьте проключить используемый порт на этот IP в роутере (создать VirtualServer). Если на WAN-конце роутера тоже серый айпи (например, 10.10.x.x), то ничего не получится.
Для этого случая могу дописать к родному PGPfone функцию работы с заданным STUN-сервером и дальнейшим "ручным" обходом NAT (например, предварительно обменявшисть строками, скопированными с окна PGPfone в ICQ). Это более приватно, чем автоматически использовать SIP, т.к. ни STUN-сервер, ни ICQ не знает, что вы собираетесь делать.
Гость (14/02/2013 01:35)   
на самом деле оно было так
Теперь пробел лишний.
Гость (14/02/2013 03:54)   
Уважаемый gegel!

Детализирую проблему, и одновременно признаю, что в предыдущем описании кое-что упустил.
Итак, по порядку:
1. Указанный IP = 192.168.1.50 реально существует и принадлежит компьютеру, на котором запускается Torfone, проверял специально.

2. Порт 17447 не занят никем, да и при выборе других портов картина та же.

3. >> Ошибка выскакивает постоянно, пока флажок Listen установлен: приложение тупо пытается создать слушающий сокет. Если вобще не хотите слушать, поправьте в ini: EnabledListen=0
Почему же, я хочу, чтобы сокет слушался, но не такой ценой, когда упомянутое окошко выскакивает мгновенно, и мешает добраться до интерфейса TorFone и внести необходимые правки.
Может, стоит сделать какую-то временную задержку, что ли, чтобы успеть до появления окошка, закрывающего интерфейс программы, сделать что-то необходимое.

4. >> не забудьте проключить используемый порт на этот IP в роутере (создать VirtualServer).
Не понимаю этой формулировки. Может, вы хотели сказать "пробросить порт"? (т.е. форвардинг). Так он он у меня проброшен. И внешний адрес роутера белый (хотя и динамический).

5. И вот вам сладкая пилюля :) в описании ошибки выше я упустил комментарий, что запускал TorFone под Wine, и вот возникала указаная ошибка.
И когда запустил TorFone под настоящей XP, ошибка не возникла.
Но ведь в этом топике один юзер ведь написал, что под Вайном у него Torfone заработал нормально, на это и я расчитыввал. Почему у меня не сработало, не понимаю.

И пара пожеланий:
1. Каждый раз прописывать в конфиге ListenAddr не проблема.
Но как быть, когда компьютер получает свой IP по DHCP и он каждый раз меняется? Это напрягает, может, найдется какое-то вспомогательное решение?
2. Не хотите ли завести на вашем сайте какую-нибудь багзиллу, форум, блог?
Потому что email для коллективного взаимодействия не годится, и приходится писать здесь, на pgpru.
3. И конечно, терпеливо ждем-с порт под Android и Linux.
Гость (14/02/2013 03:58)   
3. И конечно, терпеливо ждем-с порт под Android и Linux :-)

А пробел да, лишний, но он только здесь на pgpru затесался, реально его не было.
— unknown (14/02/2013 10:29, исправлен 14/02/2013 16:15)   

netcat, speex (желательно в режиме CBR), aplay и вот вам самопальный VoIP[link9]. Iptables и настройку скрытых сервисов Tor добавлять по вкусу.


Вот такой уютный чат[link10]. Возможно, хорошо бы в нём заменить алгоритм симметричного шифрования или ввести асимметричные ключи. Или вообще заменить openSSL на OpenPGP. Хотя, нужно ли какое-то дополнительное шифрование, если вы будете пускать его только между двумя скрытыми сервисами Tor — решать вам.


Есть ещё socat со встроенным openssl (кому охота пообщаться вне тора). А можно и в нём. Вот пример[link11].


А вместе с torsocks[link12] должно быть совсем хорошо. Возможно даже что-то соорудить и под виндой и без прозрачной торификации файрволлом.

Гость (14/02/2013 17:20)   

Можете более подробно прокомментировать эту самоделку? Ее плюсы, минусы, прочее.
Спасибо.
— unknown (14/02/2013 21:11)   
Лучше всего использовать Tor не из TBB, а грамотно зафайрволенный системный Tor. Примерно как здесь[link13].
Чтобы трафик юзера железно заворачивался в Tor и без утечек DNS.

После этого надо поднять каждому свой скрытый сервис Tor — двум корреспондентам. Для пущей безопасности посмотреть в сторону опций: HidServAuth onion-address auth-cookie [service-name] и HiddenServiceAuthorizeClient для совсем скрытой работы скрытого сервиса (невидимого незнающим ключ аутентификации).

Тогда всё остальное (чат, передача файлов, голосовая связь) в общих чертах становится тривиальным: анонимная связь точка-точка с шифрованием точка-точка (не требует дополнительных средств шифрования помимо самого Tor, т.к. трафик не выходит из сети через exit-узлы). Все вышеперечисленные утилиты входят в состав практически любого Линукса лет десять как и носят общий характер.

Например, netcat или nc — утилита управления tcp-потоками через любой порт в режиме сервера или клиента .

Запускаем на одной машине со скрытым сервисом nc -l -p $PORTNUMBER (грамотно завёрнутый файрволлом в скрытый сервис, естественно!), на другой — nc $ONIONNAME.onion. Всё — между машинами работает консольный чат реального времени, прикручивать к нему доп. шифрования не надо. Но если очень охота, можете оформить какие-то навороты простейшим скриптом типа этого[link10].

Аналогично, cat file.tar.gz | nc -l -p $PORTNUMBER на одной машине, nc $ONIONNAME.onion $PORTNUMBER > file.tar.gz — на другой машине. Передача файлов между двумя скрытыми сервисами пользователей.

Для полудуплексного VoIP нужна arecord — утилита захвата потока с аудио-системы — алсы, ей можно указать устройство, откуда захватывать поток (микрофон). Утилиты speex-utils — голосовые кодеки (говорят, разборчивость речи сохраняется до 2 kbit/s !), лучше подобрать режим CBR — постоянного битрейта.

Перенаправляем голосовой поток с первой машины arecord -t raw | speecenc --8bit --denoise – - | netcat $HOST.onion $PORT, воспроизводим на второй netcat -l -p $PORT | speexdec – .

В принципе, так можно даже и нетяжёлый видеопоток передавать.

Надо на самом деле поиграться с параметрами, где тут включать CBR, выбирать устройства.

Другие утилиты вместо netcat (Socat, Torsocks) более навороченные (для данных задач скорее избыточным функционалом) и больше подойдут для случая. когда Тор не закручен в системе нормальным файрволлом.

Недостатки понятны:

  1. Убогий функционал. Сервер чата отваливается при выходе из него клиента, хотя может это и настраивается.
  2. Только чат двусторонний. А передача голоса — в одну сторону. Или надо городить два встречных потока на двух портах.
  3. Это система для связи только двух абонентов. Нет списка доступных юзеров в сети, не форум, не конференция, не портал.

Плюсы: всё тривиально, прозрачно, малоуязвимо, скриптуемо, есть в любом Линуксе, полная независимость и максимальная безопасность потенциально достижимы. Не требуется разворачивания сложных серверов, нет избыточной транспортной нагрузки на тор-сеть. Достаточно кому-то одному наваять скрипты, отладить и выложить их вместе с инструкциями.
Гость (14/02/2013 23:56)   

Да, там по ссылке даже в лоб сказано:
if you're concerned about anonymity, you can try piping tcp through tor to a hidden service.
Гость (15/02/2013 00:39)   
Torfone является наследником старого Pgpfone и унаследовал от него весьма неприхотливые системные требования.
Но не пора ли их повысить и благодаря этому сменить древний малонадежный по нынешним меркам 3DES на современный AES?
— unknown (15/02/2013 10:05)   
Для воспроизведения audio/video (хоть вместе, хоть по отдельности) через pipe1-TCP-HS1-tor-HS2-TCP-pipe2 можно ещё использовать mplayer — у него размер буфера можно задавать в широких пределах.
Гость (15/02/2013 12:19)   
А можно ли настроить скрытый сервис так, чтобы даже при известном .onion доступ к нему мог идти только по паролю (чтобы, например, не заDDOSили канал)?
— unknown (15/02/2013 13:05, исправлен 15/02/2013 13:07)   

Наглядно показано как взламывают голосовое шифрование[link14] в стандартных программах, которые используют сжатие голоса.


Всё-таки для VoIPoTor пока лучше всего подходит mumble[link15], ссылка на который[link16] в форуме уже была[link17].


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

Именно для этого эти опции и предназначены. Более того, там есть два варианта: "не знает пароль, но сможет узнать, что сервер запущен, но не сможет туда попасть" и "не знает пароль и без этого даже не сможет определить, запущен ли этот скрытый сервис в Tor или нет".


Обсуждалось здесь[link18].

— gegel (15/02/2013 23:02)   
Сорри, давно не заходил. Постараюсь ответить по очереди.

Повторно перепроверил под Wine – у меня все ОК. Причину не могу понять, т.к. досконально с Wine не знаком, но ошибка однозначно возникает из-за невозможности создать/биндить tcp-сокет на указанный IP:port. Замечание о задержке при создании сокета принято – учту. Используйте 0.0.0.0, если IP динамический: это стандартный вариант. Если есть возможность, проверьте, возникает ли при этом ошибка. Указание конкретного IP может понадобиться только лишь в экзотических тестовых случаях.

Чат/форум на сайте – хорошая идея, прикручу как нибудь. Пока спасибо комьюнити на pgpru за возможность обсуждения.
Порт под Андроид сам пока не осилю (нет опыта, хотя хочу попробовать), под линукс уже думаю, как лучше.

По поводу описанных вариантов анонимной связи: есть множество возможностей, но в любом случае надо сделать все доступно обычному юзеру. Чем проще в установке и пользовании, тем лучше. А два профессионала всегда найдут способ для себя.

По поводу AES – прикрутить его вобще нет проблем. Я полностью разобрался с процедурой шифрования: используется CTR, счетчик инкрементируется с каждым пакетом. В составе пакета передается TimeStamp, который определяет валидность пакета. Т.е. можно легко заменить 3DES на AES, и от этого только выиграет быстродействие. Но зачем? 3DES проверен временем и не уступает AES по надежности. Тем более что на момент разработки 3DES точно не думали о потайных ходах. Для себя я бы предпочел 3DES...

По взлому голосового шифрования (по ссылке): я уже отвечал вначале ветки. Данная уязвимость базируется на переменной длине голосовых пакетов. PGPFone использует GSM-кодек: захватывает сэмплы с частотой, скажем, 7350 слов/сек, разбивает на блоки по 160 слов и кодирует в блоки по 33 байта, и отсылает их по 4 шт в пакете. Хоть говоришь, хоть молчишь, трафик равномерный. Так что описанная уязвимость в данном случае неактуальна.

Mumble? Это оригинальный вывод, учитывая, что она вобще не шифрует трафик. Конечно, ТОР все сам шифрует до HS, но зачем тогда говорить об уязвимостях PGPFone? Кроме того, она использует внешний сервер murmur (т.е. не p2p): если его запускать в открытой сети, то без шифрования никак, если на HS, то между абонентами уже не 6, а 12 нод. Да и контролирующий сервер слушает все. На guardianproject.info ее просто используют для тестов, но, судя по постам n8fr8, задумывают они совсем другой вариант.
Гость (16/02/2013 04:17)   

Золотые слова! :)


Гм. А зачем тогда в инструкции рекомендовано сменить 0.0.0.0 на реальный айпишник, если проще ничего не менять, оставив эти нули?
— gegel (16/02/2013 15:42, исправлен 16/02/2013 15:51)   

Виноват, невнятно написал. По умолчанию создается ini с параметром ListenAddr:Prt=127.0.0.1:17447, что дает возможность слушать только HS и защищает от деанонимизации путем обнаружения TORFone напрямую извне. А значение 0.0.0.0 (INADDR_ANY) на скриншоте в инструкции – уже отредактированное, а не требующее редактирования.
Т.е. там просто рекомендуется сменить 127.0.0.1 на 0.0.0.0


Использовать конкретный IP может понадобиться, например, если у Вас поднята Hamachi, и Вы хотите общаться только через нее, но не хотите быть доступными из интернета (а на компьютере внешний IP), и т.п.


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

Гость (17/02/2013 02:17)   
Уважаемый gegel, можете внести эти свои последние разъяснения по поводу вариантов Фиспользования айпишника прямо в файл справки testingru.pdf на вашем сайте?
Ведь при работе приходится ориентироваться на него, и получаются разночтения и путаница.
Спасибо!
— gegel (17/02/2013 12:30)   
Заменил в testing1.pdf и testingru1.pdf
— alex_10 (17/02/2013 15:11)   
@ GEGEL
There is a lot of people asking for a modified version of the speakfreely
http://sourceforge.net/p/advto.....231/thread/9d735faa/[link19]
can you do something ?
— michel_25 (17/02/2013 16:24)   
Уважаемый gegel
Существует много людей просят модифицированную версию speakfreely
http://sourceforge.net/p/advto.....231/thread/9d735faa/[link19]
Вы можете что-нибудь сделать?
Спасибо!
— unknown (17/02/2013 17:49, исправлен 17/02/2013 17:54)   
Mumble? Это оригинальный вывод, учитывая, что она вобще не шифрует трафик. Конечно, ТОР все сам шифрует до HS, но зачем тогда говорить об уязвимостях PGPFone? Кроме того, она использует внешний сервер murmur (т.е. не p2p): если его запускать в открытой сети, то без шифрования никак, если на HS, то между абонентами уже не 6, а 12 нод. Да и контролирующий сервер слушает все. На guardianproject.info ее просто используют для тестов, но, судя по постам n8fr8, задумывают они совсем другой вариант.

Да идея, изначально положенная в архитектуру Tor, даёт возможности делать многие более сложные вещи несколько проще и красивее. VoIP просто частный пример. Который концептуально хорошо бы намертво привязать к тору и не давать возможности прямых звонков через интернет из-за опасности смешивания контекстов анонимности и раскрытия круга контактов от внешнего наблюдателя.


Предположим, Алиса хочет принять звонок от Боба. Между собой они в большой степени доверяемы и не анонимны, им важно скрыть содержимое и факт связи от внешнего наблюдателя.


Рассмотрим приём звонков Алисы от Боба.


  1. Алиса запускает локально на своей машине скрытый сервис (HS) с возможностью авторизации Боба (HS authorization protocol).
  2. Алиса запускает локально на своей машине VoIP-сервер. С помощью файрволла она его "заторивает", так чтобы он работал только через свой скрытый сервис Tor и был невидим из обычного интернета. Для доп. защиты виртуалки, псевдовиртуалки, SELinux и пр. — добавлять по вкусу, но вообще-то Алиса и Боб другу другу более-менее доверяют и рассчитывают, что друг друга они ломать не будут. А посторонний в их канал вклиниться не может. Так что уязвимости в запускаемых сервисах, конечно нежелательны, но не столь критичны и определяются доверием между абонентами.
  3. Боб использует заторенный VoIP-клиент, чтобы сделать звонок на HS и VoIP-сервер Алисы. Для инициализации звонка ему не нужен свой сервер. Сервер нужен только стороне, принимающий звонок (в данный момент Алисе).
  4. Алиса принимает звонок из тора на свой HS и локально запущенный VoIP-сервер.
  5. У Алисы запущен VoIP-клиент, который принимает сообщения с локального хоста (127.0.0.1) только от своего VoIP-сервера и общается только с ним. VoiP-клиент Алисы может быть на всякий случай ещё и заторен, когда ей понадобиться не только принимать звонки от собственного локального VoIP-сервера, но и звонить кому-то ещё. Но в данном примере используется только связь с локальным хостом для приёма звонка.
  6. Алиса принимает звонок по цепочке [Bob] — [VoIP-client]Bob — [Tor] — [HS]Alice — [VoIP server]Alice — [localhost 127.0.0.1]Alice — [VoIP client]Alice — [Alice]. Если Боб хочет принимать звонки от Алисы, то он проделывает весь описанный процесс, начиная с п.1, запуская свой локальный скрытый торифицированный VoIP-сервер и подставляя себя во все пункты вместо Алисы и наоборот.

Как видим, не через какие лишние узлы цепочек трафик не идёт.


Mumble скорее всего выбрали потому, что там легко настраиваемый VoIP-сервер и клиент. Плюс push-to-talk (режим рации), экономный кодек для TCP, встроенный чат и пр. Безопасность этого сервера на первом этапе малоинтересна, это вообще игровая поделка, которая удачно подходит для экспериментов.


Доп. шифрования данных не нужно, т.к. всё и так завязано на безопасность шифрования внутри самого Tor, но при желании такие решения могут быть навешены в более общих случаях.


Можно подумать и о перспективах развития предложенного общего алгоритма.


  1. По этой схеме двум сторонам можно запустить локальным скрытым сервисом любой сервер: чат, почту, веб, wiki, блоги и пр.
  2. Можно вынести сервер и скрытый сервис на домашний, корпоративный сервер в пределах помещения (связь в пределах своей подконтрольной локалки), чтобы обращаться к нему с разных компьютеров и гаджетов.
  3. Можно прописать в авторизации скрытого сервиса более одного доверяемого пользователя (Боб, Кэрол, Дейв и далее по стандартному списку имён по алфавиту). Получается, что запуская различные сервисы для ограниченного круга лиц и невидимые посторонним, пользователи создают F2F-сеть — Friend to Friend[link20].

Доп. свойства и соображения по поводу F2F-сетей на базе Tor:


  1. В отличие от готовых решений для F2F-сетей, такая сеть гибка, универсальна, псевдонимна (не путать анонимность с псевдонимностью), скрыта от постороннего наблюдателя (неотслеживаемость).
  2. Децентрализованность в пределах Tor.
  3. Отсутствие возможности не только внешнему, но внутреннему наблюдателю для выявления всего круга контактов и построения графа социальных связей (скрытость сегментированности и связности): Алиса знает Боба и включает его в свой круг авторизованных контактов на скрытом сервисе. Боб знает ещё Кэрол и включает в свой авторизационный список Алису и Кэрол. Алиса и Кэрол ничего не знают друг о друге и о том, что Боб общается с ними обеими, пока Боб это сам не захочет раскрыть. Любой член сети может сам управлять доверием, раскрывать часть своих контактов, искать нужных людей, распространять информацию, запрашивать помощи через своих знакомых. Но никакой внешний наблюдатель или внутренний "предатель" не сможет раскрыть всю сеть без получения согласия её участников. Даже сам участник не может легко обойти круг своих социальных контактов дальше первого звена.
  4. Эфемерность данных. Данные, передаваемые по сети, хранятся только у её участников (если они хотят их хранить или уничтожать — каждый сам волен распоряжаться хранением полученных/отправленных данных).
  5. Возможность управления эфемерностью контактов и связей. Достаточно удалить или сменить авторизационный ключ и/или адрес персонального скрытого сервиса, как сведения о ранее переданных/полученных контактах с этого адреса теряются. Скрывается факт раннего участия в контактах, сетях и пр.
  6. Наперёд заданная секретность. В случае взлома или конфискации сервиса агента сети (в случае его провала) можно просмотреть только неудалённые персональные контакты и контролировать только будущие передаваемые данные. Сведения о ранее переданных данных и удалённых контактах принципиально невосстановимы, если пользователь грамотно осуществлял их уничтожение.
  7. Лёгкость бесследной самоликвидации сети при отсутствии в ней дальнейшей необходимости. Тут уж правда как участники договорятся: если они все друг друга знают по общему делу — всем разойтись или прерывать контакты по одиночке. Опять же — саморегуляция на основе собственных желаний пользователей без возможности контроля и надзора третьей стороны.
  8. Относительная лёгкость повторного разворачивания сети после компрометации: достаточно исключить недоверяемых лиц и сменить список адресов скрытых сервисов и авторизационных ключей.
  9. Лёгкость завязывания временных полуанонимных контактов. Можно временно подключить любого человека к своему скрытому сервису для приватного общения и затем сразу же удалить следы контакта с ним.
  10. Возможность образования скрытых сообществ, социальных сетей и получения мостов между ними за счёт шлюзов, посредников и пр.

В принципе, зачатки этого всего есть в сетях, подобных Freedom/I2P за счёт наличия встроенных сервисов из коробки. На базе Tor можно организовать более мощные, правда труднонастраиваемые и пока малоисследованные решения.


Хотя какую-нибудь простую штуку такого типа[link21] могли бы включить в отдельную Tor-сборку для использования "из коробки".

Гость (17/02/2013 19:44)   

Точно? :) Пытаюсь сравнить старый и новый файл, и не нахожу между ними никакой разницы.
Во всяком случае первые страницы руководства "один в один".
Может, не там ищу?
Гость (17/02/2013 23:48)   

По ссылке:
The developer of TOR Fone recommends against using TOR Fone. Quote: "I did not think this project as a finished product for practical use." The project got overall a pretty bad review in the mailing list thread.
:)
— gegel (18/02/2013 03:17, исправлен 18/02/2013 03:34)   

Шо ж с этой mumbl-ой так носятся... Наверное, naif не совсем равнодушен :) Главное, что расшевелились немного. Я ж не вчера родился, и все это прошел на других своих проектах. Жизнь покажет. Крутые парни сами решат, что им пользовать, не особо слушая такие рекомендации, а хомячки все равно на Скайпе останутся... В общем, собака лает, а караван идет :)


"Mumble скорее всего выбрали потому, что там легко настраиваемый VoIP-сервер и клиент. Плюс push-to-talk (режим рации), экономный кодек для TCP, встроенный чат и пр. Безопасность этого сервера на первом этапе малоинтересна, это вообще игровая поделка, которая удачно подходит для экспериментов."

: вот я тоже думаю, что все это в точности есть в TORFone и еще в десятке приложений, но они все плохие. А хороший жавовский Jitsi после дефолтной инталляции сразу лезет на сервер обновляться... Так может, просто гранты оправдать надо?


To alex_10 & michel_25: сейчас именно SpeakFreely и занимаюсь. Архитектура там немного другая, так что не сразу сделаю, тем более, что занимаюсь в свободное время. Можно также попробовать опционно прикрутить к SpeakFreely DH4096 от PGPFone (т.к. изначально там только Preshared key или PGP). И еще можно попробовать добавить "ручной" обход NAT для неанонимного режима (получая данные от любого STUN и предварительно обмениваясь ими например через любой мессенжер на Tor c OTR).


В руководстве поправил рисунок на первой странице и подпись к нему, смотрите внимательно. Если что-то еще желательно изменить, уточните – сделаю.


To unknown: полностью согласен и поддерживаю. Но в реале это не только не развивается, а, наоборот, сдерживается. Например, тот же TorChat – прекрасное приложение, предельно простое и востребованное. Добавить голос, видео – вполне решаемо даже для одного разработчика. И не надо ни мумбл, ни локального сервера. Но похоже, играют роль совсем другие маркетинговые интересы, о которых можно только догадываться.

— unknown (18/02/2013 10:25)   
Команда торпроджекта не против торчата в принципе. Они вскользь озвучивали свою позицию. И про "маркетинговые" интересы они открыто заявляли. Им спонсоры в последнее время выделяют больше денег на использование тора как средства обхода цензуры, для получения населением стран с цензурированным интернетом информации из других сегментов интернета. P2P-chat over Tor и другие подобные сервисы у них даже в обозримых планах не стоят. В отдалённых планах — чат с удалённым централизованным сервисом за пределами цензурированной страны, не больше.

Просто они пока берутся за более простые задачи, остальное отдано на откуп энтузиастам. Скрытые сервисы тоже не в самом приоритете, т.к. всё ещё требуют дополнительных исследований. Они их сами называли "our orphaned child". Но тем не менее, собрались и многое в них допилили на уровне и протокола, и реализации, хотя это в основной roadmap не входило.

Наконец, торчат не совсем адекватно как-то развивается. То он забрасывается, то форкается, то на пакеты авторы подписи не проставляли, то пишется на каких-то совсем левых языках вместо первоначального питона.

Могли бы договориться с названием, согласованием формата документации, и прочими формальностями типа proposals, reports и получили бы возможно хотя бы полуофициальную поддержку торпроджекта.
— meticulous (18/02/2013 22:35)   
gegel, приветствую тебя! :)

Как автор многочисленых комментариев к твоему топику, решил наконец сегодня зарегистрироваться ;)
Прими от меня наилучшие пожелания в развитии твоего интереснейшего проекта!
Гость (18/02/2013 23:46)   
Что за мода на деанон пошла? Может хватит, а? И будем всё-таки под гостём писать? У меня и так покрывающего трафа покрывающих постов на свои посты не хватает, так ещё и последние анонимы сбегают. Я что, буду тут один как дурак под гостём писать? Чтобы все видели, что я — это я?
— Вот (21/02/2013 01:18)   
Пишите в каждой теме под новым ником. Или даже свой ник – для каждой позиции!
— Санёк (22/02/2013 17:06)   
Уроки профессиональной маскировки — только на pgpru.com!
— meticulous (23/02/2013 02:02)   
Как думаете, имеет ли смысл при работе программы TorFone по обычному (не Tor) каналу загнать ее трафик в SSL-туннель и много ли это даст в плане повышения криптостойкости?

PS. По VPN-каналу вопрос не затрагиваю, поскольку его настраивать сложнее (к тому же случайные временные заминки в нем могут существенно больше, имхо).
— gegel (24/02/2013 01:52, исправлен 24/02/2013 01:55)   

Лишний слой шифрования еще никому не вредил. Если сервер аутентифицируется сертификатом, то это исключит Человека-по-средине.
Но PGPFone и сам по себе создает весьма защищенное соединение, что бы о нем не писали в плане "устаревший", "уязвимый" и т.п. Сначала надо попробовать взломать или хотя бы указать реальный путь взлома, а потом уже делать выводы.


Вопрос: будет ли востребовано, если прикрутить к Циммермановскому PGPFone (использующему UDP) возможность ручного прохода NAT?
Идея такова: задаем любой публичный STUN-сервер в ini-файле и по чекбоксу периодически (скажем, раз в 10 сек) шлем запрос. Ответ (свой внешний IP-порт) выводится в инфополе. Для установки соединения между двума клиентами (оба за NAT) они обмениваемся по другим каналам (скажем, по ICQ ч/з Pidgin+OTR – Tor или же по TorChat) своими адресами. Затем оба вводят полученный адрес в поле дозвона, и звонящий жмет "Connect", а принимающий ставит чек "Listening". В итоге должны проходиться NAT, вплоть до PortRestricted.
Смысл в том, что STUN-сервер не знает, с кем вы планируете соединиться (в отличие от SIP), а ICQ не знает ни вас (Tor), ни вашей беседы (OTR), т.о. нет возможности централизовано контролировать абонентов.

Гость (24/02/2013 02:15)   
будет ли востребовано, если прикрутить к Циммермановскому PGPFone (использующему UDP) возможность ручного прохода NAT?

Ну, вообще-то большая часть клиентов живёт за NAT'ами, да. :)

Идея такова

Некоторые люди предлагали более прямые протоколы для IP discovery[link22], но их уместность и универсальность под вопросом в силу там же озвученных замечаний.
Гость (02/03/2013 23:10)   
А скажите, есть ли утилита, позволяющая записывать разговор собеседников TorFone?
ps. Для Skype такие существуют, как для Windows, так и для Linux.
— unknown (03/03/2013 00:16)   
В Linux есть масса универсальных способов записи звука с любого устройства. Подозреваю, что и в Windows также.
— gegel (03/03/2013 00:24)   
Такой функции в самом TORFone нет, не знаю даже, хорошо это или плохо. На каждый звонок PGPFone генерирует новый сессионный ключ, неизвестный абонентам (в отличие, напрмер, от SpeakFreely, где ключ известен). Т.о. позднее будет невозможно дешифровать записанный разговор под прессингом одного из участников.
Наверное, можно перехватить поток данных непосредственно на/с аудиодрайвера и подобные утилиты будут работать одинаково, как и с другими VOIP, но это уже имеет отношение к ОС, а не к TORFone. Для Skype вообще есть голосоменялка, и по идее, это должно работать и с TORFone, если добавить возможность выбора звуковых интерфейсов (на данный момент он использует интерфейсы в системе по умолчанию).
Гость (03/03/2013 00:40)   
есть ли утилита, позволяющая записывать разговор собеседников TorFone?
В крайнем случае всегда можно записывать вывод напрямую с звуковой карты/микрофона, что никак не зависит от того, кто их в текущий момент использует.
— gegel (03/03/2013 00:51, исправлен 03/03/2013 01:01)   
Некоторые люди предлагали более прямые протоколы для IP discovery, но их уместность и универсальность под вопросом в силу там же озвученных замечаний.

Такой IP-discovery, как и SIP-сервер, необходим для того, чтобы сообщить о желании установить p2p и о внешних адресах/портах друг другу. В нашем случае уже имеем предварительно установленное защищенное соединение через Tor на HS. Достаточно создать UDP-сокет, получить свой внешний адрес на любом публичном STUN и передать инвайты друг другу через защищенное TCP-соединение, и затем установить p2p (просто переключиться с TCP на UDP трансорт), даже если оба абонента за NAT (конечно, кроме симметричных). Таким образом снимается проблема доверия к внешнему SIP, т.к. его функцию (нахождение и согласование абоненов) выполняет распределенная сеть Tor. Кроме того, PGPFon-овский Диффи-Хеллман первоначально выполняется внутри Tor-канала, что снимает вопрос MitM.
Если это подцепить к TorChat (просто добавив дополнительный HS-порт в torrc), получится очень неплохое дополнение.

Гость (03/03/2013 01:46)   

А какой нат по умолчанию в iptables и pf? Вроде бы IP и порт всегда меняются(?).
Гость (03/03/2013 18:36)   

Хм. Зачем повторять мои же слова? Вы пожалуйста, провереную конкретику дайте, а не обие рассуждения.
— unknown (03/03/2013 20:03, исправлен 03/03/2013 20:09)   

Конкретику для конкретно какой звуковой системы? Для ALSA например вот так[link23].

Гость (03/03/2013 22:04)   
Зачем повторять мои же слова?

Это следствие конкретного modus operandi. Некоторым удобнее открыть все новые посты из /proekt/kommentarii[link24], каждый — в своей вкладке TBB, а потом отвечать на них попорядку. На ответы уходит значительное время, и пока отвечаешь, кто-то успевает ответить раньше тебя. Предпросмотр, впрочем, иногда спасает ситуацию.
— gegel (09/03/2013 16:49)   
Наконец домучил исходники SpeakFreely. Автор их заточил под мультичат, что весьма усложнило работу. Я использовал более старую версию 7.2 (по тупости, начал с того, что было под рукой и вовремя не остановился), но при желании можно повторить и для последней 7.6. Также не стал заморачиваться с асинхронным конектом и, тем более, с мультичатом. Вобщем, сделал как можно быстрее, дешево и сердито – для тестирования пойдет, потом можно будет доделать.
Добавил чек выбора режима TCP, объединил данные и контроль RTP в один поток, в начало пакета пишу двухбайтную длину. Также добавил socks5, изменение пути к ини-файлу для портабельности, изменение версии в RTP (например, для обфускации или передачи ника), разные звуки аналогично TORFone. Голосовой буфер не трогал: штатный обеспечивает компенсацию Jitter до 3 сек, что вполне достаточно. После тщательной ревизии и сниффинга убрал утечки DNS в анонимном режиме (их было предостаточно, так как SpeakFreely изначально не предназначалась для анонимности).
Вобщем, в итоге через RTP+SDES работает вполне прилично с абонентом на HS, хотя в дуплексе, мне кажется, чуть менее стабильно, чем ТОРфон. Зато в PTT режиме работает изумительно! Завел страничку (релиз, исходники и описание): http://torfone.org/spfrru.html
Теперь в плнах попробовать проделать то же для linux-версии, удовлетворив истинных ценителей анонимности :)
Гость (09/03/2013 19:02)   
в PTT режиме

Что это?
— unknown (09/03/2013 19:24, исправлен 09/03/2013 19:31)   

Push To Talk[link2] — режим рации. "Перехожу на приём, теперь можете отвечать".

— утята_котенок (10/03/2013 19:00)   


Так держать! :)

Только я что-то запутался – Torfone, SpeakFreely – в чем разница, что лучше выбрать?
— gegel (10/03/2013 22:41)   
1. TORFone использует Диффи-Хееллман 4096 прайм и создает неизвестный абонентам сессионный ключ на каждый разговор. SpeakFreely использует preshared key (может использовать для этого сторонний PGP), известный абонентам. Т.о. один абонент может под прессингом выдать ключ после разговора, дав возможность дешифровать ранее записанный разговор и тем самым подставить второго.
2. TORFone использует режим шифрования CTR, алгоритм 3DES с ТРЕМЯ ключами (168 полезных бит). SpeakFreely в протоколе RTP+SDES использует CBC с единственным 52-битным ключом.
3. TORFone позволяет передавать файлы и даже папки по защищенному каналу. SpeakFreely – нет.
4. При разработке кода PGPFone Циммерманном особое внимание уделялось защищенности, отсутствию утечек памяти с секретом и т.п., в то время как автор SpeakFreely уделял внимание мульти-чату и прочей "юзерофильности". Кроме того, SpeakFreely каждые 10 сек шлет нешифрованный RTP-control-пакет с указанием своей версии.

Из плюсов SpeeakFreely: ее буфер хорошо адаптирован к PTT-режиму. По наличию времени посмотрю реализацию и по возможности перенесу в TORFone. Также неплохая идея использовать PGP (GPG) для согласования ключей: можно добавить в TORFone как опцию дополнительного ключа параллельно c DH.

Я добавил поддержку TCP в SpeakFreely по просьбам ее пользователей. Лично предпочел бы TORFone, тем более что его нестандартный протокол не так заметен для DPI: содержит всего 5 проверяемых нешифрованных байт: двухбайтную длину, однобайтный тип и двухбайтный счетчик для CTR.

TORFone ToDo:
– добавить AES-256;
– добавить возможность оперативного переключения между TCP-over-Tor и UDP-direct, используя любой заданный STUN и over-Tor-соединение для согласования прохода NAT.
— unknown (10/03/2013 22:49)   

М.б. 56-битным? При создании DES был занят байт под проверку чётности.
— sentaus (10/03/2013 22:49, исправлен 10/03/2013 22:51)   
можно добавить в TORFone как опцию дополнительного ключа параллельно c DH.

Их лучше всего вместе использовать: с помощью GPG аутентифицировать параметры DH, которыми потом согласовывать ключ. Тогда и forward secrecy будет, и подтверждать подлинность канала с помощью одинаковых слов на обоих концах будет не нужно.

Гость (10/03/2013 23:51)   

Получается, что если по настоящему серьезно подходить к анонимности и безопасности общения, то опираться на разработку SpeakFreely, в которой изначально фундаментального акцента на них не ставилось, вроде бы особого смысла нет?

Что, впрочем, не исключает использования SpeakFreely в развлекательных играх в секретность, если правильно понял отличия.
Гость (11/03/2013 00:52)   

Можно посмотреть, как организован OTR в XMPP. Там завязки на GPG нет. Если отпечатки один раз сверены (например, вручную с помощью gpg), то дальше gpg не нужен до тех пор, пока кто-то не решит сменить свой приватный ключ в DH.


Ну написали же чёрным по белому выше, что производительность иногда лучше и некоторые программистские решения там лучше, неплохо бы их адаптировать для торфа TORFone.
Гость (11/03/2013 01:01)   
При чем тут "иногда"? Вопрос ставится фундаментально.
Гость (11/03/2013 01:23)   
s/иногда/при некоторых настройках-протоколах/, если угодно.
Гость (11/03/2013 02:28)   
Ну, в таком случае можно иногда утверждать, что Виндовс, если ее подпереть специальными патчами и прочими костылями, безопаснее Линукса.
Но в целом, согласитесь, ведь это не так :)
Гость (11/03/2013 10:10)   
Безопасность — понятие слишком эфемерное и плохо измеримое.
Гость (11/03/2013 11:02)   
Виндовс, если ее подпереть специальными патчами и прочими костылями, безопаснее Линукса.

Виндовс в руках спеца уровня ntldr будет всяко безопасней, чем Линукс в руках среднестатистического линуксоида.
Гость (11/03/2013 18:42)   

Вот видите, и вы берете исключительный случай – спец уровня ntldr, аналогично, как и я – патчи, костыли. И тут да, спора нет.
А вы возьмите одинаковые условия! Т.е. пользователей этих ОС с одинаковым уровенем подготовки.
— gegel (12/03/2013 22:13, исправлен 12/03/2013 22:24)   
М.б. 56-битным?

Сорри, описка. 56, конечно!

Можно посмотреть, как организован OTR в XMPP.

Я смотрел: OTR достаточно сложен в основном за счет Plausible deniability. Если к этому не стремиться, то можно, как вариант, сделать почти "детскую" АУ:


в начале Алиса и Боб выполняют DH, в итоге имеют расшаренный секрет: AES-ключ 256 бит (да, я уже добавил AES, будет в TORFone 0.3 вместо Blowfish), общий отпечаток 32 бит и ники друг друга. Оба абонента инициализируют АУ, вводя ау-фразу, уникальную для каждого своего контакта и предварительно с ним согласованною любым способом. Фраза собеседника аналогична, но последние два символа меняются местами.


Этап 1: после ввода фразы Алиса считает SHA1 от строки "отпечаток + ау-фраза без посл. двух символов + свой ник" и отправляет Бобу открытым текстом. Аналогично Боб.
Получив такой пакет, TORFone сверяет с хешем своих данных, и сообщает о ошибке АУ, если не совпадает.


Если все ОК, то считается хеш от ау-фразы без последних двух символов и его 64 бита используются как nonce (дописываются в счетчик, увеличенный мною для AES-блока с 64 до 128, добавленные биты изначально 0). Это изменяет шифрование, вводя дополнительную зависимость от текущей ау-фразы.


Этап 2: тотчас после успешного завершения этапа 1 абонент отсылает текстовое сообщение по шифроканалу, содержащее последний символ своей ау-фразы. Получив такое сообщение, абонент сравнивает его с предпоследним символом своей ау-фразы (он должен совпадать с последним символом ау-фразы абонента, т.к. они изначально переставлены). Если совпадают, то выводится сообщение о полной АУ, иначе – "под принуждением".


Идея такова: абонент под принуждением выдает ау-фразу, меняя последний символ на другой. При аутентификации с его стороны все выглядет как обычно, и шифрование согласовано, но второй абонент получает предупреждение.


Просьба к крипто-гуру покритиковать, предложив реальный способ выдать себя за Боба, или предложить более подходящее решение. И еще: можно ли доверять SHA1 при описанном использовании в плане вычисления ау-фразы или подмены хеша выдавая себя за Боба или при MitM?

Гость (13/03/2013 00:56)   

Вы в какой-то мере к этому тоже стремитесь. Вы же хотите, чтобы была отрицаемость, для этого и DH наворачиваете, иначе всё и всегда можно было бы шифровать одним статическим ключом.


O'rly?!


АУ — это «Аy!» в смысе леса, автономное управление или АУтентификация?


Не уверен, что многих это устроит (каждый раз что-то вводить). Можно было бы сделать такой функционал опциональным для собеседников. В XMPP+OTR вообще можно работать без сверки отпечатков, в этом случае они просто будут помечены, как непроверенные. Бывает, не всегда можно сразу всё сверить, а пообщаться надо (это было бы в каком-то смысле оппортунистическим шифрованием).
— gegel (13/03/2013 02:10, исправлен 13/03/2013 02:13)   

- Сколько максимально бит доступно на выходе DH в AuthenticationFifo, я не готов сказать точно. Повнимательнее просмотрю исходники. Наверное, можно использовать и хеш от ключа (DH использует expSize 458 бит для 4096 прайма, ключ для AES256 обеспечивается "с натяжкой").
– Ау-АУтентификация, конечно. Речь то о ней :)
– Конечно, это будет опционально. Устанавливается соединение без АУ, и может длиться сколько угодно. В процессе разговора по договоренности оба могут ввести АУ-фразу. Криптография изменится только после того, как оба введут одинаковую (за исключением последних двух символов) – дополнительно защита от MitM.

Гость (18/03/2013 01:17)   
Torfone под Wine, к сожалению, у меня по-прежнему, не работает, поневоле придется обратить свои взоры на Windows.
Но полноценную ОС только ради одного приложения ставить не прельщает.

Посоветуйте, плиз, какую минимальную сборку XP в формате LiveCD выбрать, чтобы она нормально работала с сетью (Интернетом) и поддерживала аудиотракты, необходимые при общении с Torfone?

Надыбал было на "Windows XP LiveCD Reversion", но судя по описанию, она предназначена не для сетевых забав, а больше как ремонтный диск, и к тому в ней не предсумотрена простая интеграция новых приложений, что нужно для Torfone.
Или LiveCD для Torfone вообще не подходит? (невозможно сохранять переписку, адреса и т.п.).
Или может есть более удачные и менее затратные по ресурсам решения?
Гость (18/03/2013 02:54)   
Или может есть более удачные и менее затратные по ресурсам решения?
Ставить винду как гостевую ОС в виртуальной машине.
Гость (18/03/2013 21:16)   
Это уже пробовал, обнаружилась нестыковка со звуком, он не слышен не мне, ни собеседнику (базовая ОС – Linux).
Хотя вызов на Totfone собеседника проходит и обнаруживается.
— gegel (18/03/2013 23:45)   
А что именно не работает под Wine? Повторно попробовал на Gentoo+Wine 1.5.26: по крайней мере прямое соединение установил без проблем (с Tor не пробовал).
В MiniXpLiveCD работает, но там нет драйверов звука.
Только что нашел первый попавшийся LiveCD с драйверами:
http://rutracker.org/forum/viewtopic.php?t=1137127

Поддерживает звук:
Creative SB Audigy 2 ZS WDM Driver 5.12.1.444
Microsoft UAA Bus Driver for High Definition Audio (KB888111)
Realtek AC'97 Audio Driver A4.00 Lite
Realtek High Definition Audio Driver R1.67 Lite

Попробовал на старом Accer Aspire 3000 (Realtec AC'97 audio, SiS900 Ethernet, 1.8ГГц, 704МБ ОЗУ): с флешки запустил TBB и TORFone, все работает прекрасно.
Гость (19/03/2013 15:51)   
Отличный проект, надеюсь автор не сделает его потом платным. По-хорошему надо еще анонимизировать сам голос, в идеале распознавать и воспроизводить механически.
— gegel (19/03/2013 21:35, исправлен 19/03/2013 21:41)   

Даже при моем желании сделать платным p2p-приложение с уже открытым кодом нереально.


По поводу анонимизации голоса – уже обсуждалось выше. Можно добавить синтезирующий кодек типа LPC10, он существенно искажает речь (попробуйте в SpeakFreely). Но в любом случае голос – штука индивидуальная. А хорошего распознавателя нет пока, да и в любом случае он к языку привязан будет, это уже совсем другой проект.


PS: добавил AES256 и аутентификацию + анти-MitM на базе hmac_sha1 с использованием заранее согласованной фразы и возможностью тихого уведомления о прессинге, будет в новой версии.


ToDo:
– оперативное переключение с TCP over Tor на UDP direct и обратно со средствами прохождения NAT без помощи SIP-сервера и т.п. (TORFone как добавка к TorChat);
– добавить новый современный codec2 (сжатие в 4.7 раза больше, чем у gsm).
Также есть идея попробовать задавать несколько HS слушающим абонентом в torrc и выполнять несколько независимых подключений к ним звонящего, дублируя пакеты по каждому каналу. В PGPFone уже есть механизм восстановления последовательности и исключения дублей (остался от UDP). По идее, латентность связи через Tor с параллельным использованием нескольких независимых цепочек будет ощутимо ниже.
И еще есть задумка сделать консольную версию под вин32 и линукс с опциональным управлением через отдельный Control port с другого GUI-приложения: компромисс между простотой кода/портируемостью и юзерофильностью.

Гость (19/03/2013 22:07)   
Я тихо фигею... Т.е радуюсь, что в Рунете нашлись люди, которые вместо ежедневного трепа на разных сайтах с умным видом и надуванием щек, реально делают что-то полезное!
gegel, мои респекты! :)
Гость (19/03/2013 23:25)   

А где она добавилась?
В меню Edit – Preferences – Encryprtion видны по прежнему те же 3 алгоритма:
– Triple-DES
– Blofish
– CAST

AES не наблюдается.
Версия 02a.
— gegel (20/03/2013 01:32, исправлен 20/03/2013 01:44)   
будет в новой версии.

Добавил (вместо Blowfish) и проверил, но пока V03a не релизил – еще потестирую и исправлю несколько мелких багов (например, при снятии флажка Unencrypted на вкладке Phone, т.е. блокировке передачи ника открытым текстом при конекте (до ответа абонента) виснет при работе через Tor). Также не до конца согласован по времени момент смены nonce (Анти-MitM) после аутенификации уже в процессе разговора при соединении через Tor (из-за возможных больших задержек).
Скорее всего, выдам уже вместе с поддержкой UDP, чтобы не плодить много промежуточных релизов.

Гость (20/03/2013 03:27)   

Не лучше ли вместо Triple-DES ?
Гость (20/03/2013 05:38)   
В самом деле, Triple-DES алгоритм древний, как фекалии мамонта, и с точки зрения стойкости интереса давно не представляет.
Blofish, детище Шнайера, куда более актуален.
Гость (20/03/2013 23:29)   

И как это скажется на анонимности?


Им нельзя[link25] много шифровать, да и как обстоят дела с его безопасностью на текущий момент... Всё же надо отдавать себе отчёт в том, что Blowfish — не конкурент современных шифров типа AES. Если и брать что-то из того семейства, то лучше более современное типа TwoFish'а. ИМХО.
Гость (20/03/2013 23:34)   

Те, кто трепятся, могут тоже делать что-то полезное, но другое. Мало кто пишет в инетернеты полный отчёт о своей деятельности. Сводить всю полезность к сиюминутной полезности для животноводства повседневного использования в быту, да ещё и строго на текущий момент, тоже не стоит. Каждый занимается своим делом, jedem das seine.
Гость (21/03/2013 17:28)   
Могут... но предпочитают трепаться :)
— gegel (21/03/2013 20:28)   
Не лучше ли вместо Triple-DES ?

На tDES просто рука не поднялась :) Уважаю классику: от мертвого мамонта никаких сюрпризов точно не будет, а свой 80-битный security level при 168-битном ключе он обеспечивает. "Тебя я давно знаю, а этого кота впервые вижу".
Хотя не пойму смысла делать ассорти криптоалгоритмов: это создает иллюзию криптостойкости и только отвлекает юзера от возможных значимых ляпов в реализации и использовании. Было бы достаточно одного AES ИМХО.
И как это скажется на анонимности?

Я об этом тоже думал, по идее, не должно; скорее, наоборот. Задал вопрос на Tor Mail list.
Гость (21/03/2013 22:10)   

Именно!


Вот именно – каждый жрет свой хлеб с маслом под одеялом, другим ничего не достается.
А взять пример у Фила Циммермана – слабо?
Гость (21/03/2013 23:30)   

Не все любят AES, у каждого своя параноя. Обычно в серьёзных продуктах делают поддержку нескольких сильных шифров, чтобы было, из чего выбирать. Даже поддержку каскадов реализовывают.
Гость (22/03/2013 01:42)   
Не все любят AES
Кстати, да. Уж слишкои навязчиво он выдаётся за панацею – подозрительно это... А многие уже "купились", что видно даже по некоторым здешним комментариям.
Гость (22/03/2013 16:11)   

При чем тут многие? Если в USA в госструктурах официально пришел на смену DES, то это что-то значит?
Гость (22/03/2013 16:32)   

Да собственно, ничего не работает. Уже использую версию 02A, но до сих не удалось заставить работать Torfone хоть как-то, даже без Тора.
Расскажу об результатах, но сразу предупрежу, что рассказ будет сумбурный, пока не удалось систематизировать полученный хаос.
Тренируюсь с напарником. У напарника Windows 7, и Totfone стартует у него без проблем.
У меня два варианта использования -
1) Wine 1.4.1-1 2
2) Виртуальная Windows XP SP3, базовая ОС – CentOS 6.3, используется VirtualBox.

1) При запуске Torfone под Wine коннект с напарником не происходит, Torfone выдает ошибки, которые записать пока не успеваем.
Помнится, среди них было слово "failed". Если бы у Torfone было логгирование, фиксировать возникающие ошибки было бы намного проще.
Порты 17447 в Windows 7 и роутере, ессно, открыты и прохождение по ним проверено Телнетом.

2) Под виртуалкой Torfone запускается, и один раз даже дозвонился до напарника, но голос не проходил.
Странное здесь то, что на другой день, сколько не бились, снова дозвониться уже не удалось.

И старая ошибка, о которой уже сообщал, в этой новой версии 02A так и не побеждена.
Суть ее в том, что если что-то не так настроено в .ini по локальным адресам, то Torfone начинет выбрасывать окошко:

с кнопкой OK. Нажимаешь эту кнопку – и мгновенно снова появляется это окошко, и так по кругу до бесконечности, выхода из цикла нет.

В следующих сеансах попытаемся записать ошибки подробнее, но лучше, если сделать логгирование.
— unknown (22/03/2013 17:05)   

Аргументация в вопросе выбора алгоритмов строится на других принципах. Или вы можете рассказать и убедительно показать, почему лично вам не нравится ключевое расписание или алгебраические свойства шифра?

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

Практически — к нему приковано внимание мирового криптографического сообщества, подавляющее большинство исследований проводится на нём и все новые тренды, неожиданные подвижки и открытия будут известны на его примере. В то время как ГОСТ-89 был интересен временно, когда на смену DES официально не пришёл 3-DES и не появилось в 90-е годы некоторое количество удачных нестандартизированных блочных шифров, а затем ГОСТ опять стал никому не интересен. Снова ГОСТ стал интересен для взлома только после того как его захотели внести в междунардные стандарты и тут в нём обнаружилось, что ряд новых методик криптоанализа, не сработавших на AES, удачно работает против него. А так бы никому не было дела.

Про уязвимости малопопулярных конкурентов AES в открытых публикациях может так и не появиться никаких материалов по причине отсутствия интереса к исследованиям.

Наконец, AES пока что наиболее удачно интегрирован во многие стандарты и режимы использования, например AES-XTS. Заменив его там аналогичным шифром можно получить ошибки или несовместимость. Опять же, почти во всех программах наборы шифров берутся из стандартных библиотек или кусков кода (тот же OpenSSL). Интересного лично вам шифра там может и не быть.
Гость (22/03/2013 21:40)   
Тут подозрение может быть такое: поскольку AES мировой стандарт, то под него могут быть заточены специализированные вычислительные мощьности глобального закулисья совместно с секретными теоремами высшей алгебры, а особо проницательные исследователи могут при этом находится под пристальным вниманием. А для менее популярного шифра это менее вероятно и из-за этого его использование может быть даже несколько безопаснее – через своего рода неясность. Для слегка неуловимого Джо – параноика.
Гость (22/03/2013 21:43)   
И полюбому не надо лишать людей радости каскада!
Гость (22/03/2013 23:31)   

Мысль, не лишенная основания. Не исключено, что AES разрабатывали с таким уклоном, встроив в него, условно говоря, backdoor, т.е. скрытый алгоритим расшифровки.


Так то оно так, только каскадирование многократно увеличит потребности в мощности, к тому же тут realtime – голос, который не может (долго) ждать.
Гость (23/03/2013 07:17)   

Мне буквально лет 5 назад один приятель из российской глубинки писал: смотри, опасайся ФСБ, ты ж заграницей жил, тут таких мало, за тобой глаз да глаз будет, если приедешь. Мои объяснения, что россияне миллионами ездят в египты и турцию, и никто из этого не делает проблемы, были для него неубедительны. Советское мышление... оно ещё даст о себе знать.

Для тех, кто подзабыл: AES — чисто бельгийский шифр родом из Католического универститета в Лёвене. А НИСТ утвердил то, что ему на конкурс прислали.
— SATtva (23/03/2013 07:39)   
Так то оно так, только каскадирование многократно увеличит потребности в мощности, к тому же тут realtime – голос, который не может (долго) ждать.

Вы программу запускаете на калькуляторе?

Для тех, кто подзабыл: AES — чисто бельгийский шифр родом из Католического универститета в Лёвене.

Ъ-параноика такой аргумент убедит едва ли. Тем более, весной.
Гость (23/03/2013 09:16)   
AES — чисто бельгийский шифр родом из Католического универститета в Лёвене
Ну вот! Значит его авторы вполне могут быть членами тайной католической организации, претендующей на мировое господство!
Гость (23/03/2013 11:19)   
Библиотечка параноика[link26]
Гость (23/03/2013 16:33)   
миллионами ездят в египты и турцию

Эти миллионы ездят отдыхать, причем коллективно через турфирмы.

Советское мышление... оно ещё даст о себе знать.

Возвращенные уже советские статьи в УК... оно ещё даст о себе знать. Особенно пожившим там.
Гость (23/03/2013 22:13)   
[offtop]
Эти миллионы ездят отдыхать, причем коллективно через турфирмы.
Из ездящих на стажировки, на шопнинг, встречи, конференции, по работе, к родственникам, отдыхающих самостоятельно тоже наберутся миллионы, а штази распустили. Не забываем, что бывшие страны СССР — тоже теперь заграница, но у многих там друзья, родственники, связи, бизнес и пр.
[/offtop]
Гость (23/03/2013 22:21)   
Основополагающее право на неприкосновенность частной жизни, гарантированное пятой и четырнадцатой поправки к Конституции США, защищает от необоснованного вторжения в частную жизнь федеральных, государственных или военных служб.

Автор – американец? А кто на русский перевел?
Гость (24/03/2013 00:31)   

А тред почитать? У интернет-проектов нет юрисдикции, но надо к чему-то аппелировать, хотя бы к каким-то национальным законам. Здесь, возможно, делается акцент на том, что даже одна из самых законченно законнических, агрессорских и тоталитарных стран защищает, согласно формальному закону, право на.
Гость (27/03/2013 03:10)   
gegel, а можете встроить в Torfone также и симметричные алгоритмы?
Если не ошибаюсь, нас учили в школе, что это самые стойкие криптоалгоритмы.

Конечно, они тоже не без недостатков, основной – необходимость обмена шифроблокнотами, т.е. встреча собеседников.
Но в наше время эта проблема значительно упрощается – в одну современную флешку можно загнать столько страниц блокнота, что хватит на 100 лет сеансов разговора.
Понятно, что при этом нужно хотя бы один раз встретиться. Но для некоторых собеседников такой шанс может появиться, и его не стоит исключать ввиду открывающихся преимуществ.
— SATtva (28/03/2013 12:53)   
а можете встроить в Torfone также и симметричные алгоритмы?

3DES, AES — это, по-вашему, что?
— sentaus (28/03/2013 12:55)   
Мой телепат подсказывает, что Гость имеет ввиду одноразовый блокнот, но называет его симметричным алгоритмом. :)
Гость (29/03/2013 02:43)   
Эээ... действительно что-то путаю :)
Хорошо, попытаюсь пояснить по другому.
Системы с парой "открытый/закрытый" ключ – ассиметричный алгоритм. Открытые ключи можно передавать по открытому каналу связи.
До его изобретения использовались симметричные алгоритмы – когда у отправителя и получателя ключи одинаковые. Их нельзя передавать по открытому каналу.
Как-то так ;)
Гость (29/03/2013 18:24)   
симметричные алгоритмы – когда у отправителя и получателя ключи одинаковые. Их нельзя передавать по открытому каналу.
Ну так
3DES, AES — это, по-вашему, что?
Гость (29/03/2013 19:30)   

Момент[link27]... истины[link28].
— gegel (30/03/2013 21:05, исправлен 30/03/2013 21:08)   

В ТОРФоне используется Деффи-Хеллмана (асииметричный), но он не для шифрования, а для согласования ключей. А для шифрования используются симметричные алгоритмы. Наверное, вы имели ввиду ввести возможность использования симметричного шифрования ключем, заранее согласованным пользователями. Так делает, например, SpeakFreely. Плюс такого решения – невозможность MitM, но большой минус – один из пользователей может позднее выдать ключ, и подставить тем самым второго. Лучше уже накладывать статический ключ на ключ, согласованный DH. А еще лучше ввести продуманную аутентификацию с анти-MitM.
Что и сделано в TORFone V0.3 – уже доступна на http://torfone.org
Как и обещал, добавил:
– AES256 вместо Blowfish. Получился уровень защиты около 220 бит (ограничен длиной DH-прайма (4096 бит) и экспоненты (458 бит).
– опционную аутентификацию на базе HMAC_SHA1 (фразу можно ввести при инициализации звонка, в любой момент разговора или заранее задать в адресной книге для ника абонента);
– возможность скрытого уведомления о прессинге при аутентификации (для этого надо изменить последний символ фразы, с вашей стороны все будет выглядеть ОК, но абонент получит предупреждение);
– защита от человека-по-средине (после успешной аутентификации изменяется nonce, т.о. фраза используется как дополнительный пароль шифрования);
– добавлены низкобитрейтные кодеки: MELP 2400bps и новый CODEC2 1200 bps. Первый жмет 180 семплов 8000КГц-голоса (22.5 ms) до 7 байт, второй – 320 семплов 8000КГц-голоса (40 ms) до 6 байт.
Для компенсации задержки в одном пакете накапливается по 40 таких фреймов, при этом дополнительная задержка составляет 900 ms и 1600ms соответственно. Такие задержки неприменимы для обычного VOIP, но прекрасно компенсирую життер при Tor-соединении без дополнительной буферизации.
– также скорректирован режим PTT (как в SpeakFreely): нажатие/отжатие кнопки Mute сопровождается звуковыми сигналами и обеспечивает доставку всей сказанной фразы.


Пакет для Win32 и исходные коды по ссылке на основной странице, описание – на странице помощи.

Гость (31/03/2013 00:10)   

Он это всегда может[link29].
— gegel (31/03/2013 00:20)   
Конечно, если заранее пользователь поставил такую цель, то без проблем можно получить сеансовый ключ. Но в обычном режиме пользователи не знают сеансовый ключ, и при каждом новом звонке он другой. Таким образом, даже под пытками позже пользователь не сможет выдать то, чего не знает. А так как это понятно, то и пытать не будут :)
Гость (31/03/2013 03:58)   
AES256 – просто превосходно, супер!!! :)
Огромное спасибо за прочный криптоалгоритм!

И парочку вопросов:

1. Побеждена ли в версии 0.3 досадная ошибка, которая жутко мешает работать? Речь идет о



2. TorFone использует сторонние библиотеки? Если да, то как вы думаете, насколько мала вероятность нахождения в них "закладок"?
Гость (31/03/2013 04:04)   
Да – еще просьба:

3. У вас номер версии TorFone меняется, и это логично отражается в имени скачиваемом файле – torfone_V03a.zip
А вот имя файла мануала остается тем же – все тот же testingru1.pdf
Его бы то же стоило синхронно менять, чтобы пользователи не путались.
К тому же в нем по любому должно найти отражение изменения версии, в данном случае – появление AES256.
Гость (31/03/2013 10:50)   
AES256 – просто превосходно, супер!!!
Когда что-то начинает вызывать массовое безоговорочное эмоциональное восхищение, уже только это само по себе – повод задуматься[link30]...
— gegel (31/03/2013 11:59, исправлен 31/03/2013 12:09)   
обеждена ли в версии 0.3 досадная ошибка, которая жутко мешает работать?

Да, устранил в первую очередь :) При невозможности создать сокет после первого сообщения автоматически снимается чек "Listen", так что зацикливания не происходит. Если после запуска чек снят, и нет специфического звука, указывающего на активность слушающего интерфейса, значит, что-то не так.


TorFone использует сторонние библиотеки? Если да, то как вы думаете, насколько мала вероятность нахождения в них "закладок"?

Сторонние библиотеки все в исходниках. Источники:


Оптимизированный AES взял тут: http://sourceforge.net/projects/libobfuscate/
А они использовали источник: http://www.efgh.com/software/rijndael.htm
Вектора сходятся. В исходника ничего, кроме AES, нет.


SHA1 отсюда: https://polarssl.org/sha-1-source-code
Надежный источник.


CODEC2 взят тут: http://codec2.org/ Приаттачен в виде статической либы, собираемой с исходников. Исходники просматривал, ничего, кроме математики, там нет.


MELP отсюда: h**p://health.tau.ac.il/Communication Disorders/noam/speech/melp/Download/Download.htm
Он упорно не хотел становиться, поэтому я его коды до последней строчки перелопатил, переделав с либы в include
Кроме математики, там ничего нет.


PS: просьба может, у кого есть исходники MELP1200, поделитесь, плиз. Они появлялись в паблике пару лет назад, но ссылку прибили, а на наш фтп не могу достучаться. У китайцев нашел, но без одного ключевого с-файла :(


Остальные исходники родные. Надеюсь, Цммерманновскому DH-прайму можно доверять: сначала я хотел заменить его на прайм с rfc3526, но передумал – не будет совместимости.


Когда что-то начинает вызывать массовое безоговорочное эмоциональное восхищение, уже только это само по себе – повод задуматься...

Абсолютно согласен. Поэтому и оставил классический tDES 168bit – в те времена о бекдурах точно не думали.

— sentaus (31/03/2013 12:30)   
gegel, несколько вопросов и идей на будущее:

1) Симметричный шифр в каком режиме используется?
2) HMAC_SHA1 – можно ли в будущем на SHA2 хотя бы перейти? Маловероятно, что она станет небезопасной на практике, но всё-таки :)
3) Что думаете про кодек Opus? http://opus-codec.org/ У него минимальный допустимый битрейт не столь мал, как у CODEC2 или MELP, но очень маленькие задержки, размер кадра от 2,5 мс. Возможно его можно использовать как HQ-кодек.
— gegel (31/03/2013 15:17, исправлен 31/03/2013 15:18)   

1. В режиме CTR. Счетчик имеет статическую часть (nonce) и изменяющуюся: 32-битный счетчик пакетов и 16-битный счетчик блоков в пакете (т.е. период оборота 9 лет при отправке пакета каждые 70 мс). Т.к. симметричный ключ (общий секрет DH) новый на каждый разговор, то этого более чем достаточно. Счетчик пакетов синхронизируется на обеих сторонах с помощью 16-битного ID пакета, передающегося в начале пакета в нешифрованном виде и восстанавливающегося до 32-битного значения.
2. Сперва я вообще думал Keccak использовать, но потом посмотрел реально: стойкость хеш-функции определяет время, необходимое только для подбора аутентификационной фразы. А время, необходимое для дешифровки разговора, определяется DH и симметричным шифром.
Поэтому, если фразу менять хотя бы раз в год, то стойкости 160 бит SHA1 по идее, достаточно.


PS: если интересна реализация остальной криптографии (DH, аутентификации) – спрашивайте, опишу, чтобы в исходниках не рыться. И дам ссылки на конкретные места в файлах. Мне кажется, что именно реализация определяет криптостойкость, а не математика используемых алгоритмов, поэтому уделил внимание тщательной ревизии кода, и в который раз преклоняюсь перед Циммерманном! SpeakFreely с ее DES-56 в CBC с постоянно нулевым IV для каждого пакета отдыхает :)


3. Есть и такая идея. И еще http://www.speex.org/ Хотя их преимущества в вариабельном битрейте, что не совсем подходит в плане криптостойкости.

— sentaus (01/04/2013 22:03)   
если интересна реализация остальной криптографии (DH, аутентификации) – спрашивайте, опишу, чтобы в исходниках не рыться.

Спасибо. Такой вопросик ещё возник, как происходит подтверждение подлинности пакетов с данными? Я думаю, их лучше бы отбрасывать сразу без попыток декодирования голосовым кодеком. как себя сейчас в подобных случаях приложение поведёт?

И еще http://www.speex.org/

Эту разработку прекратили после выхода opus.

Хотя их преимущества в вариабельном битрейте

Это да. CBR, впрочем, тоже весьма неплох по качеству.
Гость (02/04/2013 04:30)   

Т.е. AES не стоило интегрировать, так надо это понимать?
Гость (02/04/2013 18:33)   
Это надо понимать так, что кроме AES должны быть и другие алгоритмы шифрования, желательно с возможностью объединения в каскад.
Гость (03/04/2013 00:41)   
Так они и остались – гляньте в программу, исключен только Blowfish
— gegel (08/04/2013 10:59)   
как происходит подтверждение подлинности пакетов с данными? Я думаю, их лучше бы отбрасывать сразу без попыток декодирования голосовым кодеком. как себя сейчас в подобных случаях приложение поведёт?


Пакеты управления, текстовых сообщений и файлов содержат crc32 в зашифрованной части. После декрипта сверяется. Голосовые пакеты содержат 32-битный timestamp в зашифрованной части. В эту часть алгоритма я досконально не вник, но если таймстемп не вкладывается в определенные пределы, то пакет отвергается. Кроме того, при определенном к-ве потерь происходит рассоединение.

Так, при несинхронной смене nonce в процессе аутентификации+анти-MitM связь разрывалась, поэтому пришлось вводить дополнительный флаг смены nonce, и отвергать несоответствующие пакеты еще до декрипта.

Я еще раз перепроверю, но, думаю, на кодек неверные голосовые пакеты не должны подаваться: для некоторых кодеков это вызывало бы искажение внутреннего состояния и дальнейшее искаженное декодирование.

Посмотрел opus: VC6 скомпилировала нормально. Качество лучше GSM при битрейте начиная с 10000 bps. Действительно, есть смысл прикрутить как HQ-кодек для прямого соединения. Учту в следующей версии, там же реализую переключение с TCP на UDP p2p.

Если анонимность не важна, то будет VOIP без сервера и регистрации: абоненты находят друг друга с помощью Tor HS, выполняют DH внутри Tor (что практически исключает MitM), затем переключаются на UDP, запрашивают свой адрес/порт на любом заданном STUN и опять же с помощью Tor выплняют NAT traversal, далее голос передается по UDP (причем нестандартным протоколом – не ZRTP, что в некоторой степени маскирует от DPI).
— unknown (08/04/2013 11:35, исправлен 08/04/2013 11:35)   

При всём уважении к программерскому энтузиазму.
Но это показывает наколеночность дизайна. Как будто HMAC не изобрели и методы аутентификации в каналах, хотя бы например как в SSL. И даже те, навороченные методы, периодически атакуют из-за того, что программеры не понимают, как надо реализовывать аутентификацию. Всякие теоретические оракулы вылезают в практические атаки. А программеры-шифрпанки по прежнему просто думают: "а давайте-ка воткнём CRC-32 в шифртекст и получим аутентификацию".

— gegel (08/04/2013 12:12, исправлен 08/04/2013 12:19)   

Притензии не ко мне – лично к Циммерманну :)
Мне кажется, глупостей он не делал даже в то время.
Так, например, ключевой момент DH защищен SHA.


Собственно, аутентификацию для исключения MitM уже я реализовал lege artis на базе HMAC, могу детально описать релизацию.


Но все же, не используя шаблонные утверждения и догмы, покажите мне конкретно, где уязвимость, и как ее можно использовать в данном случае, если crc32 пакета передается вместе с пакетом в шифрованном виде? (шифрование в режиме CTR).
Возмем, к примеру, пакет с текстовым сообщение. Я так понимаю, хотим сделать подмену. Да, можно побитно манипулировать с текстом и с crc ( т.к. CTR), а дальше как???


Как раз шифропанки часто думают гораздо глубже, чем многие профи, применяющие заученные в вузе шаблоны... И стойкость системы определяется не используемыми алгоритмами, а их реализацией и обоснованностью применения для данной конкретной задачи.

Гость (08/04/2013 12:27)   
Намечается дискуссия на тему "практика vs теория" :)
Гость (08/04/2013 12:48)   

gegel, слишком толсто. Как раз обосванием занимаются теоретики в вузах, а шифрпанки определяют стойкость на глазок подобно тому, как студентота определяет работоспособность программы по признаку «ошибок не пишет — значит, работает правильно».

Свежий взгляд со стороны всегда полезен, даже если он шифрпанковский или ещё какой, но это не отменяет необходимости системных знаний, которым как раз и учатся специально (или в вузах или сами по книжкам/статьям).
— unknown (08/04/2013 13:30, исправлен 08/04/2013 13:38)   

Вот чего люди стандарты пишут[link31], головы ломают[link32]. Взяли бы AES-CTR + CRC-32 и не мучались.


Для построения стойкого аутентификационного канала обе функции должны быть криптостойкими, как шифрующая, так и аутентифицирующая. Причём это необходимое, но ещё даже недостаточное требование. Полностью достаточный набор требований я даже не решусь назвать. Для этого ещё только разрабатываются спецрежимы шифрования (часть уже стандартизирована и внедрена, но их безопасность недостаточно доказана), прорабатываются решения на основе Keccak. Пока проверенная классика: связка KDF для получения двух разных ключей из одного + HMAC для аутентификации + шифрование.


Разработчики IPSEC, к примеру, на аутентификации прокалывались. OpenSSL — это вообще нескончаемый поток багов в этом вопросе. Циммерман начинал тоже с шифрпанковского бажного подхода (и во многом на нём оставался).


Да, сходу метод взлома не скажу, где-то это обосновано в теоретических работах с кучей выкладок и формул, но шифрпанкам это всё неинтересно же. Им интересно, когда через n лет кто-то заинтересуется их продуктом и найдёт способ практического взлома.


Возмем, к примеру, пакет с текстовым сообщение. Я так понимаю, хотим сделать подмену. Да, можно побитно манипулировать с текстом и с crc ( т.к. CTR), а дальше как???

Подменить один известный текст на другой, делать атаки переотправкой, перебивать таймштампы, строить оракулы на анализе отбрасывания/прохождения ошибок. Я ж не знаю, как там у вас всё реализовано.


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


При всём уважении ко всем, кто, что-то реальное делает (К Циммерману, к команде OpenSSL, к вам и вашему проекту и др.), просто первый способ из этих двух откровенно достал уже:


The classical cryptography approach:

Problem -> Proposed solution -> Bug! -> Revised Solution ... -> Implement -> Bug! -> ... -> ad infinitum


The provable security paradigm:


Problem -> Definition -> Protocol -> Reduction -> Implement -> DONE

— sentaus (08/04/2013 13:33, исправлен 08/04/2013 13:36)   
Я так понимаю, хотим сделать подмену. Да, можно побитно манипулировать с текстом и с crc ( т.к. CTR), а дальше как???

Если номер и timestamp в вычислении хэша не участвует, то совсем беда. Номер и timestamp можно подделать. Если участвует, что уже сложнее, хотя тут возможно получится особенностями crc воспользоваться.


Притензии не ко мне – лично к Циммерманну :)
Мне кажется, глупостей он не делал даже в то время.

Все делают ошибки. :) Кстати, в PGP была одна слабость в механизме защиты секретных ключей, когда там crc32 использовалась. Её нашли и исправили уже в пост-Циммермановское время. Я деталей не помню, но вдруг аналогичный подход и тут сработает?


А вообще да, истории последних лет (SSL/TLS – ярчайший пример) как-то не вдохновляют: теоретические слабости часто вырастают в чудесные практические уязвимости.

— gegel (08/04/2013 15:55)   
Спасибо за замечание, в первую очередь unknown. Подумав, не могу не согласиться со всем сказанным. Конечно же, на crc32 нельзя полагаться для подтверждения аутентичности пакета. И дело тут в первую очередь в режиме CTR. Например, зная, какой файл я собираюсь передавать с помощью PGPFone, злоумышленник может изменить его содержимое на свое (включаю общую SHA). Это тяжелый баг, и удивительно, что никто ранее не указал на него, а я никогда не ставил целью инспектировать код Циммерманна...

Вопрос к гуру: как вы относитесь к AES OCB в данном случае? В качестве IV для пакета можно использовать готовый неповторяемый counter, ранее использовавшийся для CTR. В качестве тага – часть хеша общего секрета.
Естественно, совместимости с V0.3 не будет, но лучше так, чем оставить как есть...
— unknown (08/04/2013 16:33, исправлен 08/04/2013 16:36)   

Как понять готовый? Доказано, что, к примеру в CBC, IV должен быть строго рэндомный, из CS(P)RNG. IV-счётчик или IV-функция не прокатит — это позволяет строить различители блоков. Смутно припоминаю, что и для других режимов скорее всего также, иначе бы не изобретали заумных схем с SIV (синтетическим IV для детерминистического шифрования).


Советую не изобретать свой протокол, тем более без умения его формализовать, возьмите что-то готовое. Ну хотя бы внутри SSL/TLS-каналов пустите.



Это полуюмористическое замечание на самом деле. Глубоко в ваш проект не вникал. Тяжело разбирать наколеночный дизайн, руководствуясь догадками при отсутствии документации. Открытый код недостаточен и интересен уже в самую последнюю очередь, после анализа всего остального. Ну и нечаянно вышел наглядный пример, почему теоретики, в массе своей, программ не пишут, только мало кем читаемые публикации. Спасибо за то, что имеем, оптимистичным практикам.

— gegel (08/04/2013 17:51, исправлен 08/04/2013 18:57)   
Как понять готовый?

Счетчик, к сожалению... Я не особо профи в криптографии, но не хотелось прикручивать готовый SSL/TLS. Если будет возможность, дайте ссылку для повышения образованности на

это позволяет строить различители блоков

(или в двух словах об этом).
Поищу по OCB, может, там IV-счетчик и допускается.


PS: немного погуглил и почерпнул знаний из Ваших же постов на форуме.
По ходу вопрос: а стоит ли на это обращать внимание, учитывая, что симметричный ключ для каждого сеанса новый? По подсчетам, за 1 час связи вряд ли будет больше 500 000 AES-блоков. Думается, это не совсем то, что нужно для практического использования описанной уязвимости, даже предполагая знание незашифрованных данных.

Гость (08/04/2013 20:00)   

А если пакет потерялся нечайно? Много может быть неожиданностей, вплоть до «атакующий угадал counter». Одно время назад писалось про уязвимость TCP-стека в винде и линуксе из-за недостаточной случайности выбора случайных чисел, используемых как counter (утверждалось, что в OpenBSD с этим лучше; как сейчас — не знаю).
— gegel (08/04/2013 21:53, исправлен 08/04/2013 21:55)   

Так IV по определению известный, зачем его угадывать. Другое дело, что он должен быть уникальным на каждый пакет, и, как указал unknown, рандомным, иначе, я так понял, облегчается дифференциальный криптоанализ.
Я выше уже описывал работу программы: в начале пакета PGPFone передает 2 байта инрементируемый ИД, восстанавливамый до 32-битного счетчика. Счетчик работает только вперед: пакеты с меньшим ИД будут отвергаться.
Конечно, это создает почву для DDoS, но не уязвимость криптографии.
А вот касательно IV-счетчика при наличии небольшого количества пар зашифр.-расшифр. блоков хотелось бы услышать мнение.

— unknown (08/04/2013 22:10, исправлен 08/04/2013 22:28)   
Другое дело, что он должен быть уникальным на каждый пакет, и, как указал unknown, рандомным, иначе, я так понял, облегчается дифференциальный криптоанализ

Не по этому. Если облегчается, то такой шифр — на помойку сразу. Возможно вы не так поняли. Рэндомное только стартовое значение, дальше обычное приращение по счётчику. Счётчик разумеется открытый. Противник не должен до начала передачи предсказать значение счётчика.



Если вы претендуете на конструирование системы, скажем, со 128-битным уровнем безопасности, то каждый её кирпичик тоже должен обеспечивать такой уровень. Исключения надо обосновывать технической невозможностью включить что-то стойкое по уровню (высокие накладные расходы, а не "я не осилил правильный протокол, сойдёт и так") и считать, как это влияет на результат. Кое-какие вещи даже НИСТ не может осилить и допускает ляпы в стандартах.


Но если постараться, то может быть, у вас будет доказуемо безопасный протокол в некоем далёком приближении. Специалисты из АНБ говорили в интервью и в каких-то документах, что им не нужно взламывать 128-битные шифры или делать закладки. Реальная стойкость большинства программ бывает катастрофически низкой из-за некачественной реализации. Хотя там гордо красуются большие ключи и стойкие алгоритмы, но провалены протоколы.


Устойчивость к атакам с подобранными текстами на нерандомизированных IV не достигается, и вообще шифрование везде, за исключением особых случаев должно быть рэндомизированным, но IV в CTR как раз наиболее практичен в этом плане и прощает большинство ошибок.


Конкретно по этому вопросу читайте признанных специалистов:


Evaluation of Some Blockcipher Modes of Operation, Mihir Bellare[link33].


Это только режимы, но не протоколы.


Здесь ещё смотрите: Lecture Notes on Cryptography, Shafi Goldwasser, Mihir Bellare[link34]. С примерами, как взломать CBC и CTR с неправильно используемым IV за одну операцию — запрос к оракулу. Такой модный криптоанализ с параллельными мирами, в которых сидят разные оракулы, тоже представлен, куда же без него-то теперь.


Дело ваше, набирайтесь знаний и опыта. Но я бы лично не взялся в одиночку конструировать протокол построения защищённых каналов связи с нуля, без посторонней помощи. У меня такой квалификации нет. В лучшем случае внедрить готовый стандарт. И там есть поле для наступания на грабли с фатальными ошибками и подкладыванием самому себе таких бэкдоров, от которых любое АНБ помрёт со смеху.


Ну и выкиньте из головы вопрос: "как это можно взломать?" Построение безопасной системы начинается с других вопросов: "как это можно отличить от идеальной модели?", "есть ли хоть какие-то самые абстрактные различители?", "как можно формально обосновать стойкость?".


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

— gegel (08/04/2013 22:26)   
ОК, теперь понятнее :)
Кстати, как раз нашел для OCB:
http://www.cs.ucdavis.edu/~rog.....faq.htm#describe-ocb[link35]

Let N be the 96-bit nonce—for example, a counter that gets incremented with each message you encrypt.


Рэндомное только стартовое значение, дальше обычное приращение по счётчику.
Тогда почему бы не взять AES128, а неиспользуемые в ключе биты общего секрета DH загнать в IV, и затем суммировать их со счетчиком?
Посмотрю исходники Mosh, там вроде тоже AES OCB.
— unknown (08/04/2013 22:40)   
Неиспользуемые биты? Вот так просто взять? Во-первых, все такие связки по выведению одного секрета из другого делаются с помощью KDF, чаще всего HMAC-KDF. Во-вторых, в чём проблема сделать чистую рэндомизацию без синтетического IV, который в вашей схеме выводится из других элементов протокола? У вас же не смарткарта, где случайные числа получить неоткуда.
Гость (10/04/2013 01:46)   

Bellare тут ни при чём, работа написана Рогавеем (хотя весь беллар работы в благодарностях).
Если gegel попытается её осилить, он быстрее ороговеет, чем станет Рогавеем, от работ которого будут роговеть уже другие, менее ороговевшие криптографы. IMHO.
— unknown (10/04/2013 09:52, исправлен 10/04/2013 10:58)   

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


А работа выдающаяся, жаль, что её похоже ещё долго не смогут оценить даже бюрократы специалисты, составляющие стандарты в НИСТе. Ибо, судя не только по этой работе у них там не всё гладко, и в криптосообществе нарастает недовольство косностью НИСТа.


Согласно Рогвею, смайлик, обозначающий случайного оракула, выглядит вот так: $(·,·). Gegel, вы уже вывели формулу с учётом IV для Adversary Advantage в своём протоколе: AdvεIND$ (A) = Pr[AεK(·,·) ⇒ 1] − Pr[A$(·,·) ⇒ 1] ?


— gegel (11/04/2013 22:19, исправлен 11/04/2013 22:58)   

:)
Спасибо за ссылки, но становиться криптографом я и не собираюсь, меня больше прикладные задачи интересуют: я выбрал развитие вширь, а не вглубь. Эти надо было с детства начинать заниматься, сейчас мне уже поздновато :(
А поэтому, если можно, буду обращаться по ходу дела за готовыми выводами и мнениями.

Неиспользуемые биты? Вот так просто взять?

Я имел ввиду: взять половину бит уже ключа. Но Вы опять натолкнули на размышления:
почитав rfc2631, а затем просмотрев код PGPFone в части DH (я раньше туда не смотрел), я нашел, что в качестве битов ключа используются непосредственно биты общего секрета (результата ExpMod). Это тоже можно считать уязвимостью?

связки по выведению одного секрета из другого

Я подразумевал взять НЕИСПОЛЬЗУЕМУЮ половину бит: они по идее рандомны и никак не коррелируют с другими элементами протокола.

в чём проблема сделать чистую рэндомизацию без синтетического IV

собственно, в синхронизации его у обоих абонентов. Потребуются дополнительные элементы протокола. В описанном выше варианте оба абонента уже имеют одинаковый и рандомный (причем рандомизированный обоими абонентами) IV, не связанный с другими криптоэлементами.
ПС: просьба не пинать, это не моя отрасль, но хочется разобраться. Посоветуйте, если что не так. С ув.

=== ППС: Вопрос по IV снят, но вопрос по DH актуален, посоветуйте, плз.


От Rogaway, слайд 9:
http://csrc.nist.gov/groups/ST.....resentations/ocb.pdf[link36]

What is OCB?
...
Lots of nice characteristics designed in:
...
Uses any nonce (needn’t be unpredictable)

— unknown (11/04/2013 23:16, исправлен 11/04/2013 23:28)   

Они хоть похэшированы как-то? Результат сырого согласования по DH — не рэндомный и подвержен утечке битов через символы Якоби. Вот думаете, почему подписи RSA ломались в своё время? Из-за кривого стандарта дополнения в симметричной части. Для чего был придуман OAEP?


Для выведения общих секретов из одного используются PRF на хэшах.


Вот собрались как-то[link37] криптографы и ковырятели кода и почти поломали PGP. Не удивлюсь, если в спецагентствах команды из криптографов и кодокопателей давно ведут работу, выявляя на потоке большой массив уязвимостей по всевозможным VPN-ам и SSL, так что их суперкомпьютерам не нужно перебирать весь массив ключей.

Гость (11/04/2013 23:43)   
меня больше прикладные задачи интересуют: я выбрал развитие вширь, а не вглубь.
Криптография и есть прикладная штука. Вглубь — это становиться математиком и изучать теорию чисел, например.
— gegel (12/04/2013 00:40)   
В том то и дело, что не хешированы: в качестве ключа используется сырой результат DH-согласования. Я поэтому и спрашиваю, на сколько это есть плохо. rfc2631 показывает, как из общего секрета получать ключ в случае, если длина ключа больше длины SHA. Т.к. у нас вопрос с IV отпал, то общий секрет будет использоваться ТОЛЬКО для формирования ключа. Наверное, вместо того, чтобы просто использовать часть его бит как ключ, стоит посчитать SHA-256 и использовать ее значение в качестве ключа, как думаете?

Результат сырого согласования по DH — не рэндомный и подвержен утечке битов через символы Якоби.


Поищу-почитаю, спасибо.
— unknown (12/04/2013 09:44, исправлен 12/04/2013 10:43)   

SHA-256 — это хорошо. Но в строгом смысле — оно не PRF. Изучайте, где в протоколах и почему используется HMAC вместо просто хэшей.


Я не утверждаю, что это обязательно нужно всегда. Просто ставлю обратный вопрос — достаточно ли простого хэширования вместо PRF на HMAC, чтобы не развалить протокол пусть даже на уровне теоретических уязвимостей?


Вы же спокойно ле'пите (я без негатива и критиканства, с лёгкой доброжелательной иронией только) свой протокол из обрывочных знаний, даже не задаваясь элементарными вопросами.


Security Issues in the Diffie-Hellman Key Agreement Protocol[link38]


Глава 6.The DH Shared Secret Key
Обратите внимание на 6.1 Key Derivation Function (KDF)


In most, if not all, instances we need to modify the shared secret key obtained in the DH protocol in order to use it with other cryptographic primitives. Here are the main motivations for “modifying” the shared DH secret key:

Although some bits of the shared secret are provably secure [13] the security of the vast majority of bits in the shared DH secret key is not known (i.e. it is not known whether an attacker can compute knowledge about them)


In fact, given only p, g, gx and gy in Z*p, we can easily compute the Jacobi symbol p of gxy, and if g generates the whole group than we can also efficiently compute the last bit of xy.

См. также:


7.3 Using the Shared DH Secret Key


Here are the general points related to the utilization of the shared DH secret key.
1. Never Use the Key “As Is”: Always use a suitable key derivation function in order to get a session key.

Вы наивно полагаете, что SHA-256 — это "suitable key derivation function"? Я знаю только то, что она ей никогда не являлась.


Думаю, что даже если осилить ВСЮ работу и массу публикаций по этой теме, это не даст гарантий от дыр. У меня впечатление, что если анализировать код такого рода проектов, (популистский шифрпансковский I2P из той же серии), то граблей там навалом.


Не падайте духом, но шифрпанки, искренне желающие написать "код без закладок", очень полезны для NSA.


Даже зачастую специально не придумать таких бэкдоров, которые может учудить оптимистичный софтописатель. Циммерман — тоже не криптограф, при всём к нему уважении, он такой же шифрпанк своего времени. Благо, его код привлёк в своё время очень большое внимание и его направлял даже Шамир.


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




OCB — похоже удачный и обоснованный выбор. Хотя и грамотно реализованный CTR с аутентификацией тоже бы подошёл.

— sentaus (12/04/2013 13:51)   
Поищу-почитаю, спасибо.


Пример PRF на базе HMAC можно найти в TLS 1.2 (rfc 5246, раздел 5)
Кстати, что unknown скажет про эту PRF?
— unknown (12/04/2013 14:14, исправлен 12/04/2013 14:16)   

Если они ссылаются на это[link39], то ничего плохого. Только без устаревших хэшей (sha-1, md5).


Ну разве что в отдалённом будущем ожидаются универсальные PRP-PRF-примитивы и все эти нагромождения когда-нибудь устареют.

— gegel (12/04/2013 14:44)   
Огромное спасибо! Вчера уже поздно нагуглил dhfull.pdf и перечитал как раз те разделы, на которые вы позже указали. Уже приятно, что частично сам разобрался :)
Сегодня прикрутил AES256-OCB вместо CAST. По свободному времени займусь PRF.
ПС: я не ставлю основной целью разработать суперзащищенное приложение, просто мне интересно разобраться. Это как вязание для домохозяйки, что-ли... :)
— unknown (12/04/2013 14:55)   
ПС: я не ставлю основной целью разработать суперзащищенное приложение, просто мне интересно разобраться. Это как вязание для домохозяйки, что-ли... :)

Нормальная мотивация, информацию схватываете, работаете с ней самостоятельно, может и в профессиональный навык перейдёт :)
— gegel (14/04/2013 02:19, исправлен 14/04/2013 11:48)   

Покопал код PGPFone: действительно, уязвимо было...


Так, при DH из битов общего секрета (равного к-ву битов прайма) просто по очереди бралось необходимое к-во первых бит для двух ключей для двух направлений связи :(
симметричный шифр в режиме CTR вообще не имел никакой аутентификации (даже crc32 считалась от криптотекста и просто дописывалась в конец пакета :(


Изменил таким образом:
использую PKCS#5 v2.0 PBKDF2 using HMAC_SHA256, 4096 итераций;
https://polarssl.org/pbkdf2-source-code
http://tools.ietf.org/html/rfc2898#section-5.2
отдаю ей в качестве пароля все биты общего секрета DH;
получаю 512 бит кей-материала для двух ocb-AES-256 ключей;
в качестве IV для ocb использую счетчик от старого режима CTR;
128-битный таг дописываю в конец каждого пакета.


3DES и AES256 в режимах CTR без аутентификации оставил для случаев экономии трафика при работе внутри Tor, т.к. длина пакета на 16 байт меньше, а особой необходимости в шифровании и нету.


Если есть явные ляпы или предположения уязвимости, очень прошу озвучить.

— sentaus (16/04/2013 10:48)   
симметричный шифр в режиме CTR вообще не имел никакой аутентификации (даже crc32 считалась от криптотекста и просто дописывалась в конец пакета :(

Круто! :)
Значит в случае использования какого-нибудь adpcm можно было вообще заставить воспроизвести звуковой мусор.

PKCS#5 v2.0 PBKDF2 using HMAC_SHA256, 4096 итераций;

Мне кажется, это даже избыточно. PBKDF2 предназначена для получения ключей из совсем небольшого исходного материала(паролей) и довольно медленная.
Про OCB не скажу ничего, не знаком пока. :(
— gegel (19/04/2013 14:37)   
в случае использования какого-нибудь adpcm


И не только. Многие синтезирующие кодеки, например, тот же melp, пакуют биты в кадр строго на свои места, и используют старое состояние для инициализации нового. Черт его знает, а вдруг есть возможность, последовательно манипулируя битами, установить определенный известный кадр, и затем менять его уже целенаправленно.
А касательно передачи файлов – полный п-ц: если злоумышленник точно знает, какой файл вы будете передавать, то вообще без никакой криптографии заменяет его на свой, тем самым подсовывая поддельный документ или трояна. Теперь исправил, aes256-ocb будет в следующей верии.

это даже избыточно. PBKDF2


Я вначале хотел использовать только PRF с подходящим размером выхода (например, SHA512 на два 256 бит ключа), но попал под критику :)
Хотя до сих пор тоже не могу понять смысл использования KDF для получения 512 бит кейматериала из 4096 бит DH секрета. Понятно, что без хеширования нельзя, т.к. биты секрета неравнозначны и коррелирующие между собой, но и KDF с ее итерациями и salt, затрудняющими подбор пароля по словарю, тут как бы и ни к чему.

PS: раз уж взялся за криптографию PGPFone (хотя никогда не собирался этого делать), то хочу еще проверить реализацию DH и особенно CSPRNG и коллектор энтропии, там тоже могут быть сюрпризы. Например, nautilus предупреждает, если аудиоэнтропии недостаточно для сидирования CSPRNG (микрофон отключен). PGPFone этого не делает, что уже нехорошо.
— unknown (19/04/2013 15:42, исправлен 19/04/2013 16:28)   

SHA-1 и SHA-2 являются не очень хорошими PRF. Для построения стойкого PRF из них используется HMAC. То, что из HMAC в свою очередь делается (для других уже целей) PBKDF2 не значит, что нужно тащить его туда весь. Достаточно правильно использовать только HMAC.


См. RFC4868[link40] для описания PRF-HMAC-SHA-256, PRF-HMAC-SHA-384, PRF-HMAC-SHA-512.

— gegel (19/04/2013 22:45)   
Спасибо! Наконец я понял, в чем заблуждался: мне казалось, что отличие между HASH и HMAC только к устойчивости к атакам на подмену подписи и выбранного откр.текста. Если вникнуть в то, как HMAC использует HASH-алгоритм, становится ясно, откуда псевдорандомность.
Еще раз спасибо за расширение кругозора: не знаю, пригодится ли это, но за плечами не носить :)
Переделывать уже не буду: PBKDF2 взял готовую (без напрягов), кроме того, по скорости не критично.

Я, наоборот, дополнительную задержку вводил после подсчета общего секрета: это еще один прикол PGPFone, опишу для поржать.
Во многих доках, начиная с 1996, упоминалось, что PGPFone иногда виснет на этапе согласования ключей. И действительно, около 1/20 конектов зависали. Я решил попробовать разобраться. После подсчета публичного ключа, как и положено, вычислялся его хеш. После предварительного обмена хешами происходил обмен самими ключами. После получения публичного ключа подсчитывался общий секрет и создавался енкриптор, при наличии которого ВСЕ дальнейшие пакеты уходили криптованными. Так вот, если один из участников запаздывал, другой участник формировал енкриптор и отсылал публичный ключ уже в криптованном виде :) Тупейшая ситуация... Я сначала вставил костыль в виде 1 сек задержки перед формированием енкриптора, а затем изменил код, чтобы публичный ключ никогда не шифровался. Теперь не виснет :)
Мне кажется, это не последние сюрпризы...
Гость (20/04/2013 18:36)   
А касательно передачи файлов – полный п-ц: если злоумышленник точно знает, какой файл вы будете передавать, то вообще без никакой криптографии заменяет его на свой, тем самым подсовывая поддельный документ или трояна.

Передача файлов практически во всех протоколах (за исключением имеющих встроенную поддержку передачи файлов на должном уровне, типа SSH и OpenVPN) не шифруется, поэтому нужно самому зашифровать файл, подписать с помощью gpg и отправить собеседнику. Подмена файла атакующим в этом случае (и только в этом) исключается. Например, так рекомендуется передавать файлы через XMPP и Skype.
— gegel (21/04/2013 10:09, исправлен 21/04/2013 10:11)   

PGPFone использует нестандартный Циммерманновский протокол передачи файлов, задумывался он как надежный. Он достаточно сложный, я с ним детально не разбирался. Это как бы свой ftp-tcp поверх udp. Имя файла или папки получаем методом drag&drop, выстраиваем файлы в очередь, каждый файл инициализируем (имя, длина, SHA), передаем пакетами размером около 900 байт с указателем, подтверждаем группу байт, дублируем при потерях. Конечно, медленнее чем ftp или http, но выглядет надежно. Используется отдельный счетчик пакетов для передачи файлов. Его значение + тип пакета входят в IV.
Проблема была не в протоколе, а в режиме CTR без аутентификации: зная, какой файл будет передаваться (plaintext), ксором получаем гамму и затем формируем новый cifertext из гаммы и своего plaintext (включая пакет с именем файла, длиной, sha...), пересчитываем crc32 – и подмена готова.
При использовании OCB это исключено. Т.е. после согласования ДИффи-Хеллмана и аутентификации (голосом по списку слов или предустановленной фразой с использованием HMAC) можно быть уверенным в аутентичности файла и конфиденциальности: предварительное шифрование/подписывание PGP вроде как и не нужно. Хотя, конечно, береженого бог бережет...

Гость (21/04/2013 21:14)   
Мне кажется, что решать задачу защищённой передачи файлов следует, используя каждое средство для своего предназначения. Есть протоколы, обеспечивающие только передачу файлов (http и др.). Ими можно передавать файл. Шифровать его можно перед этим совсем другими средствами (gpg). gpg само по себе обеспечивает как шифрование, так и подпись файла, поэтому получателю всё равно откуда он его скачал, хоть с публичных торрентов. При желании всё это можно автоматизировать, добавив в torphone: он как сам шифрует и подписывает файл перед отправкой от себя, так и расшифроваывает и проверяет подпись при получении файлов от других.
— gegel (21/04/2013 23:15)   
Можно, конечно, и так сделать, прикрутив, например, вызов консоли GPG с TORFone.
Но я веду к тому, что TORFone сейчас и без GPG обеспечивает как шифрование, так и аутентичность передаваемого файла, так что предварительное шифрование/подписывание необязательно. Скорость медленнее, чем ftp или http, но для небольшого файла не критично. Как преимущество – некоторая маскировка факта передачи файла за счет нестандартного протокола.
А вообще то это задумывалось как вспомогательная фича, а вариантов анонимного файлобмена может быть много, например GPG+стеганография и в облако, или PGP и в папку http-сервера на Tor HS.
Конечно, Вы в праве (и должны) НЕ доверять протоколу TORFone до изучения исходников, поэтому ручное предшифрование не помешает.
— gegel (11/06/2013 12:05, исправлен 11/06/2013 12:16)   

Наконец нашлось время допилить Торфон до беты 1.1[link41]. Постарался учесть все замечания и пожелания, а также реализовал две свои идеи, которые давно вынашивал. Руководство по тестированию в картинках обновлю в ближайшее время, пока можно пользоваться обновленным html-хелпом (англ., рус.) в пакете TORFona и на сайте.[link42]
Хочу представить Торфон как звуковой плагин для популярного Торчата[link43]: нужно лишь добавить строку в файл torrc.txt, запустить Торфон, и можно выполнять и принимать звонки. В любой момент разговора можно переключиться на прямое UDP-соединение (выполняя NAT Traversal), просто установив галочку "UDP". Затем можно выбрать HQ-кодек (например, OPUS) и наслаждаться связью. Или выбрать супер-экономный MELPE и расходовать всего 2 Мбайт GPRS (в обе стороны) за час постоянного разговора. Сравните со Skype...
Само собой, TORFone полностью портабельный, работает c трукриптовского диска, из-под виртуалки WinXP[link44] (с сетевыми и звуковыми драйверами) и из-под Wine. Я взял на себя смелость внести значимые изменения в криптографию, поэтому версия 1.1 не совместима с 0.X
Криптография:
1. Добавил AES-256-OCB[link36] (128 bit MAC).
Есть смысл использовать при прямых соединениях и меньше – при работе через Tor (чем больше длина пакетов, тем больше задержка)
2. Для получения ключей с общего секрета DH использую PKDF2[link45]
3. В процедуре аутентификации по списку слов заменил SHA1 на HMAC_SHA1 для предупреждения атаки подмены выбранного откр.текста (вместе с общим секретом там хеширутся еще куча параметров, которые можно менять).
4. Проверил источники энтропии CSPRNG, там все ОК (мышь, аудио вход, таймеры производительности и системного времени), но на выходе заменил SHA1 на HMAC_SHA1 из соображений рэндомности.
5. В двухфазной аутентификации с скрытым уведомлением под прессингом использовал PKDF2 для формирования тэга из фразы и HMAC собственно для аутентификации.
Голос:
1. Использовал кодеки MELP-2400[link46] (MIL-STD-3005) (MELP не любит встроенный высокочувствительный микрофон: намного лучше выносной в составе гарнитуры у губ говорящего с минимально необходимой чувствительностью (в т.ч. и из соображений анонимности)) и CODEC2-1400[link47] для работы через Tor, накапливая 900 и 1600 мс голоса соответственно в одном пакете: так компенсация Jitter даже лучше, чем при пользовании дополнительного буфера.
2. Добавил кодек MELPE-1200[link48] (STANAG-4591 NATO) и CODEC2-3200 для работы через GPRS: при приемлемой задержке в 350 мс получается всего 0.3-1.0 Кбайт/сек в одном направлении.
3. Добавил HQ-кодеки GSM0610
(взял со SpeekFrealy[link49]OPUS[link50] в режиме VBR 6 Кбит/с с возможностью опции маскировки VBR для предупреждения атаки фонетической реконструкции[link14].
4. Добавил опцию подавитель шума NPP7[link51] для подавления случайных деанонимизирующих звуков окружения.
5. Добавил опцию вокодера для деперсонализации голоса. Использовал алгоритм синтезирующего кодека[link52].
Можно выбрать стандартные предустановленные режимы (голос высокий, низкий, робота, шепот, интонация вверх и вниз). По данной теме очень мало материала в паблике, похоже, такой же алгоритм используется дачи анонимных свидетельский показаний в судах[link53] и выглядит надежным для правдоподобного отрицания при голосовой идентификации.
6. Поправил режим рации (PTT) и голосового управления (VOX), теперь не теряется конец фразы. PTT может быть использован для экономии GPRS-трафика и для удобства общения в Tor (В определенных пределах наблюдается четкая корреляция между общим трафиком и латентностью Tor-канала. Кроме того, латентность существенно выше при использовании Exit-нод, но это уже другая история: кому интересно, поделюсь результатами своих исследований для Tor и I2P).
Транспорт:
1. Наконец реализовал давнюю идею, позволяющую уменьшить Tor-задержки. После установки соединения с HS адресата ему посылается инвайт с указанием своего HS. Вызываемый устанавливает встречное соединение с вызывающим (по другим цепочкам). Голосовые пакеты дублируются в оба канала, используется пакет, доставленный первым (по таймстемпу). Накапливается статистика и периодически через заданный интервал времени более медленный канал согласованно переподключается, пока второй используется. Реально уменьшает задержки в полтора раза. Если отказаться от сторожевых узлов, то возможно, и больше. Не могу сказать, как такое дублирование повлияет на эффективность атак деанонимизации, на Tor-мейл-листе не ответили...
2. Также реализовал свою вторую идею: использование Tor в качестве SIP (если анонимность не важна). Нет привязки к конкретному VOIP-серверу, регистрации и логов на нем, DH выполняется внутри p2p-Tor-шифрования к HS (MitM практически нереально), используется нестандартный UDP-протокол (определенная обфускация от DPI)), если NAT Traversal невозможен, то Tor выполняет функцию TURN.
Абонент находит другого по onion-ссылке средствами Tor-HS инфраструктуры, затем выполняется Diffie-Hellmann под прикрытием Tor и затем NAT Traversal с использованием любого заданного публичного STUN. Я не использовал техники NAT penentratin, поэтому UDP не будет установлено, если оба абонента за симметричными NAT, но это бывает не так часто. Кроме того, проблемы могут быть, если оба абонента за любыми NAT (домашними роутерами) и затем за общим NAT (в локалке провайдера). У меня не было возможности проверить на большом количестве сетей, но во всех проведенных тестах прямое UDP-соединение было установлено. Вобще, было бы очень неплохо убедить разработчиков реализовать такой без-серверный VOIP, например, в Jitsi.
Другое:
1. Добавил индикатор исходящего/входящего трафика (с учетом IP-заголовков) в кбитах/сек и общий счетчик сеансового трафика в кбайтах, а также индикатор состояния двойного Tor-соединения.
2. Для компиляции исходного кода[link54] теперь достаточно установить Visual C 6.0[link55] на Windows XP, открыть файл проекта и нажать кнопку. Больше никаких пакетов и внешних библиотек не требуется. Абсолютно все используемые библиотеки в С-исходниках и доступны для анализа.


Спасибо сообществу pgpru за помощь, буду благодарен за замечания и пожелания.

— unknown (11/06/2013 12:55)   

После того многого, что вами проделано, лучше переименуйте проект, также как это сделал Tor-router, тогда сотрудничество с официальным Tor-проджектом будет плдотворнее из-за отсутствия конфликтов с правом на использование имени.
Гость (11/06/2013 17:12)   

Обязательно попробую эту программу. Благодарю вас, gegel, за проделанную работу.
— gegel (11/06/2013 20:42)   
Я сразу же хотел заменить имя, но решил чуть подождать после того, как Andrew Lewman всего через неделю после выхода torfone открыл страницу https://trac.torproject.org/pr.....ki/LikelyTMViolators[link5], где пару месяцев висело
Current domain names trying to confuse users with fake or poor software
(пока tormail не возмутились и не сменили на
Current domain names confusing users about the origin of their software
). И это при отсутствии альтернативных решений VOIP over Tor, не считая несчастной mumble...

И еще сразило письмо лично от Roger Dingledine:
If I paypal you $15, can you register an onionphone.org domain, and change torfone.org so it's just a simple redirect?

Можно было бы хранить чек как сувенир – не часто такие люди пейполят :)

ОК, заменю, конечно: для меня это абсолютно непринципиально, гораздо важнее держать качество софта.
— sentaus (11/06/2013 22:52)   
gegel
А вы не думали попробовать сделать кроссплатформенный интерфейс(QT например)? Какие конкретно части кода сейчас являются win32-зависимыми?
— gegel (11/06/2013 23:26)   
Думал. Точнее, думал сделать консольное приложение и отдельно кроссплатформенный GUI. Если не брать во внимание MAC-архитектуру, то в консольной основе win32-зависимым будет только ввод-вывод с звукового устройства и винсоксы. И то, и другое не составляет проблем реализовать, например, под линукс без никаких дополнительных библиотек, только сисколы. А GUI думал прицепить через control-port (например, как Vidalia к Tor).
Но, к сожалению, на все требуется время. Так как проект 100% на чистом энтузиазме и абсолютно без никакого финансирования, то пока даже не представляю, когда это будет возможно.
— unknown (11/06/2013 23:41)   
Откройте счёт в том же paypal или даже биткоинах. Из-за рубежа могут прислать достаточно много, если у проекта будет репутация.
— gegel (12/06/2013 23:27, исправлен 13/06/2013 00:06)   
если у проекта будет репутация

К слову о репутации: сегодня зашел на гугл аналитику по сайту проекта пройтись по рефералам. В топ-10 висит censored.onion. Оказалось, Pedo Support Community, и там топик по Торфону уже месяц висит, с тестами, экспериментами и обсуждением. Таки Фрейд был прав на 100%, мотивация рулит! Зауважал – оказывается, они в хорошем смысле этого слова (а торпрожект ?).
Хотел респект отписать, но их капчу не осилил – специфика, однако (это вам не кошки – утята...)

— unknown (13/06/2013 00:09)   
gegel, без ханжества, но вашу прямую ссылку от нездорового интереса и греха подальше отцензурировал. Кому надо, тот пусть ищет по названию. Главное, смысл происходящего понятен: пока проект такого рода не станет массовым, первопроходцами будет специфический контингент.
Гость (13/06/2013 00:25)   
Так как проект 100% на чистом энтузиазме и абсолютно без никакого финансирования
а что братья по разуму из "трехбуквенной корпорации" не проявили еще интереса? у них денег не мало.
Гость (13/06/2013 00:54)   
там топик по Торфону уже месяц висит, с тестами, экспериментами и обсуждением.

Welcome to real world, you made my day!
Ржунемогу))) Патчи не присылали ещё? А то смотрите, они это могут :))

И после этого ещё ктото троллит на пгпру вопросами зачем именно вам анонимность... есть вещи которые лучше не знать чем знать.
Гость (13/06/2013 00:57)   
а что братья по разуму из "трехбуквенной корпорации" не проявили еще интереса? у них денег не мало.
Думате сертифицируют для использования в ведомстве? врядли, даром они этого делать не будут.
Гость (13/06/2013 01:09)   
Они уже повсюду:

What is Freenet?

"I worry about my child and the Internet all the time, even though she's too young to have logged on yet. Here's what I worry about. I worry that 10 or 15 years from now, she will come to me and say 'Daddy, where were you when they took freedom of the press away from the Internet?'"
Mike Godwin, Electronic Frontier Foundation

https://freenetproject.org/whatis.html

gegel, я вам советую создать на сайте торфона форум как это ntldr сделал у себя. Если русскоязычные пользователи ещё могут в этом треде протусоваться то иностранцы местную капчу не осилят. Если хотите чтоб проект стал популярным свой форум поддержки должен быть обязательно
— gegel (13/06/2013 16:04)   
Сделал русскую инструкцию со скриншотами[link56] в pdf (5 Мбайт), постарался кратко и наглядно описать основные возможности при работе в связке с Торчатом.
Гость (14/06/2013 05:08)   

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


Всё же двухфакторной.


Подумалось: GSoC не позволяет что-то получить? Или там жёсткие возрастные ограничения? Должны быть какие-то международные программы по поддержке открытого софта.


Какого слова?


Ссылка не открывается.


Было бы интересно, если бы описали в 2-3 абзацах хотя бы.


Заранее непонятно, как оно будет дружить с DPI и антицензурным механизмом. Например, если будут блокировать весь неопознанный трафик, то надо будет не создавать свой протокол, не имеющий никакого характерного паттерна, а мимикрировать под какой-то из дозволенных. Другой момент в том, что собственный протокол может давать уникальный отпечаток, который позволит легко отследить всех, кто пользуется таким софтом (если связь не через Tor).




Некоторые замечания к тексту:

Торфон представляет собой Windows программу

Windows-программу

атаку "человек по средине".

Всюду исправьте, должно быть «посередине».


гарантированное пятой и четырнадцатой поправки к Конституции

поправками

передачу голоса к TOR-туннелях и в конечном счете получил приемлемый альфа релиз.

Запомните раз и навсегда: правильно писать «Tor», все остальные варианты написания ошибочны. «В конечном счёте» выделите запятыми с обеих сторон, «альфа-релиз» — через дефис.

аналогично, например, Скайп

Запятая перед «аналогично» не нужна.

Может быть использовано как TCP, так и UDP прямое соединение.

Может быть использовано прямое соединение по TCP- или UDP-протоколу (иначе звучит не по-русски).

соединения с скрытым

со скрытым

UDP соединения.

UDP-соединения.

уведомления под прессингом.

уведомления при работе под принуждением

TORFone decentralized ie does not use

TORFone is decentralized, i.e., it does not use

Calls using TORFone is hidden to the outside observer

are hidden (мн. ч.).

https-connection.

HTTPS-connection.

Calls using TORFone is hidden to the outside observer since TOR traffic not differs from usual https-connection. Also in the case of a direct connection using a custom TCP or UDP protocol (not RTP/ZRTP), which protects against some DPI analysis.

Помимо уже вышеприведённых замечаний:
  • not differs → does not differ
  • Второе предложение потеряло подлежащее и сказуемое.

Does not differ — это тоже неправильно. Он всё-таки differ, но для человека со стороны non-distinguishable. Предлагаю переписать примерно так:
Calls using TORFone are hidden to the outside observer because the TORFone can use the Tor network as a transport layer. Since Tor can simulate usual HTTPS-connections using Tor bridges, the same level of indistinguishability may be provied also for TORFone traffic. If TORFone is used without anonymity by making direct connection thorugh Internet, it still may be resistant against some type of DPI because TORFone uses its own protocol (not RTP/ZRTP), which can work over both TCP and UDP connection.
Гость (14/06/2013 05:12)   
P.S. Считаю предложение переименовать в «onionphone» разумным и самым удачным. Это притянет к нему чёткий смысл Alice in Wonderland «Phone in OnionLand» (телефон поверх скрытых сервисов Tor). Странно, что слово OnionInternet ещё не в ходу. :-)
Гость (14/06/2013 05:18)   
gegel, текущий статус программы проще отражать, создав страницу в черновиках[link57] с внятным полным текстом и следя за актуальностью её содержимого. Когда самое важное раскидано по 16-ти страницам комментариев, найти нужные ключевые посты становится трудно.
— SATtva (14/06/2013 09:30, исправлен 14/06/2013 09:33)   
Подумалось: GSoC не позволяет что-то получить? Или там жёсткие возрастные ограничения? Должны быть какие-то международные программы по поддержке открытого софта.

GSoC не подойдёт:

  1. Google отбирает наиболее значимые проекты, столь малый проект попросту не пройдёт отбор;
  2. проект обязан быть с большим числом участников, нельзя подать заявку на проект, который ведёт один человек;
  3. GSoC служит для привлечения сторонних разработчиков из студенческой среды: привлекаемый программист работает над заранее строго определённой задачей, а один из текущих разработчиков выступает наставником, помогающим разобраться в коде; работа наставника требует очень много времени.

Ну, и нынешний GSoC уже начался, так что на текущий год так или иначе в пролёте.


Что подойдёт, так это любая краудфандинговая платформа:

  1. Kickstarter[link58] — если объём пожертвований за ограниченный срок не набирает заданную автором проекта сумму, автор не получает ничего, деньги возвращаются жертвователям; автор проекта должен быть резидентом США.
  2. indiegogo[link59] — если объём пожертвований не набирает заданный автором порог, он всё равно получает деньги, но площадка снимает бОльшую комиссию; площадка работает с зарубежными резидентами.

Эти две вроде самые известные. На волне свежего скандала с Verizon и PRISM вполне можно набрать неплохую сумму, как мне кажется.


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

Могу даже предложить создать раздел в Разработках[link60], если gegel'ю это интересно.

— unknown (14/06/2013 10:32)   
>Зауважал – оказывается, они в хорошем смысле этого слова (а торпрожект ?).
Какого слова?

Педоф пидорасы, сэр :)
Гость (14/06/2013 18:58)   
Предлагаю поменять приоритеты позиционирования:
1. Это простое (интерфейс по умолчанию "для домохозяек", с возможностью переключения "для продвинутых") портабельное средство для голосовой связи – скачал на флешку и запустил, без необходимости установки, настройки, проброса портов (для этого и используются открытые прокси, в том числе Tor) и т.д.
2. Надёжная аутентификация.
3. Конфиденциальность – защита от подслушивания и перехвата.
4. Ну и так, между делом, ещё и анонимность при желании...

А название – СrypTorFone ;)
Гость (14/06/2013 19:00)   
Приоритеты 2 и 3 лучше поменять местами.
Гость (14/06/2013 19:21)   
Ну и экономия траффика (от 250 байт/сек) значительный приоритет для любителей круглосуточного общения (по GPRS, например, с гулящей любимой женой, когда она на даче) самое оно!
Гость (14/06/2013 19:34)   
по GPRS, например, с гулящей любимой дочкой жены, когда она на даче.
fixed
Гость (14/06/2013 23:50)   
gegel, извините за поддержание чужих троллинг-постов, но всё же. Видеочат будет? :)
Гость (15/06/2013 02:37)   
При голосовой то связи анонимность уже проблематична, а при видеочате ещё и гримироваться надо будет...
Гость (15/06/2013 03:07)   
а при видеочате ещё и гримироваться надо будет...
Достаточно одеть маску и на заднем фоне всё покрыть простынями.
Гость (15/06/2013 03:57)   

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


Высушенными хоть?
Когда будете сушить простыни, не вывешивайте их на балкон хоть, ок?
А в маске не ходите по улице, если решите прятаться от гугло-очков.
Я обычно вывешиваю на стенку трусы, они отвлекают внимание от меня и интерьера, да и все равно во время онлайна снимать приходится. А маска медвежонка помогает скрыть физиономию и вносит игровый элемент, который так нравится [censored] и помогает им раскрыться и глубже войти, я б даже сказал погрузиться в себя в роль.
Не забудьте также убрать семейные портреты, кубки, статуэтки, грамоты, дипломы, награды, удостоверения и поздравления от первых лиц государства, области или района.

Создавая протокол или приложение для анонимного видеочата помните, в первую очередь им будут пользоваться ОНИ!1
Впрочем, для НИХ же лучше, Тесак с майором не найдут.

А создавая торфон для анонимной голосовой связи через tor помните, в первую очередь им будут пользоваться ОНИ!2
Впрочем для них же лучше, ФСБ с ЦРУ не найдут.



1 Педофилы и я и мы и законопослушные граждане, имеющие право на частную жизнь.
2 Террористы, криминал и я и мы и законопослушные граждане, имеющие право на частную жизнь.
— gegel (15/06/2013 15:38)   
gegel, я вам советую создать на сайте торфона форум

Я сам не особо силен в php и web, но попросил друга – он обещал помочь в ближайшее время.

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

Неоткрывающиеся ссылки содержат пробелы в пути (хочется посмотреть в глаза тому, кто так делает). Обычно помогает %20, но тут движок интерпретирует его как +. Можно скопировать в адресную строку браузера как текст:



>кому интересно, поделюсь результатами своих исследований для Tor и I2P
Было бы интересно, если бы описали в 2-3 абзацах хотя бы.

ОК, подготовлю и очень кратко изложу основное.

если будут блокировать весь неопознанный трафик

Это жестко. Вряд-ли такое реально, т.к. сразу ляжет масса служб, в т.ч. важных: телеметрия, удаленное управление теми же электроподстанциями, банкоматами, охрана, видеонаблюдение и т.д. В основном там используются собственные китайские протоколы, по дефолту неизвестные DPI. Например, у меня проект по слежению за подвижными объектами (трекинг через GPRS по GPS и по сотовым вышкам), так там до десятка разных серверных протоколов поддержано. А вобще их масса: каждый китайский трекер идет со своим протоколом в придачу, а прием – проблема писателей сервера.

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

Если знают, что ищут, то не спрячешь никак – по аналогии со стеганографией. Друге дело, если Торфон не популярен, но сканируют всех на двухсторонний RTP, SIP или Skype, постепенно сужая круг поиска – тогда есть шанс некоторое время оставаться вне подозрения. А вобще я не ставил целью серьезную обфускацию, да и, наверное, вовсе не так это делается, если по уму.

Некоторые замечания к тексту

Огромное спасибо! Поправил.

Могу даже предложить создать раздел в Разработках, если gegel'ю это интересно

Интересно, но только не представляю, в каком виде лучше подать информацию. Посмотрел раздел, но другие темы там в несколько ином направлении.

Предлагаю поменять приоритеты позиционирования:

Интересная мысль, тем более что такая подача хорошо сочетается с Win32 реализацией. Да и, как выяснилось, реальная анонимность практически понадобилась лишь сами видите кому. А концепция свободной без-серверной VOIP на основе Tor HS вместо SIP, похоже, тоже нова, нигде ранее не выдвигалась (поправьте, если не прав), и имеет право на существование.

Приоритеты 2 и 3 лучше поменять местами.

Да, и еще акцентировать на отсутствии регистрации и логов: это стало модно после событий с Verizon.

А название – СrypTorFone ;)

А вот это – просто гениально!!! Спасибо! Кроме crypto (как в сryptophone.de) и rfone (аналогично zfone) вообще никакого Tor не наблюдается :) cryptorfone.org зарегистрировал и пока просто сделал редирект на сайт проекта. Постепенно заменю по тексту.

Видеочат будет? :)

Конкретно в Торфоне – вряд ли. А вообще я опишу свое виденье реализации видео в реальном времени в Tor вместе с результатами своих тестов по латентности. Но это тянет на отдельный проект.
— SATtva (15/06/2013 15:50)   
Могу даже предложить создать раздел в Разработках, если gegel'ю это интересно

Интересно, но только не представляю, в каком виде лучше подать информацию.

Если придумаете, дайте знать. Но по крайней мере в разделе /Софт[link61] можете разместить страницу, посвящённую программе, права я Вам дал.
Гость (16/06/2013 01:27)   
Я сам не особо силен в php и web, но попросил друга – он обещал помочь в ближайшее время.

Лучше делать на основе wiki, оно более расширяемое. Посмотрите, как сделан сайт DC[link62] и его форум[link63] — это тоже проект, родившийся на pgpru.

Не забудьте также убрать семейные портреты, кубки, статуэтки, грамоты, дипломы, награды, удостоверения и поздравления от первых лиц государства, области или района.

Вы действительно хотите поговорить об этом? Не надо ничего убирать, надо всё занавешивать, абсолютно всё, и на руки медицинские перчатки одевайте, а то отпечатки пальцев можно через камеру распознать. Любой предмет, попавший в поле зрения, будь то книга, шкаф, обои, типы тканей, одежды, ковёр, шариковая ручка — находка для криминалиста. Вам кажется, что эта информация ничего не значит, но реально она значит и значит очень много. Разные предметы быта выпускаются разными фирмами и распространяются в разных географиечских регионах, что позволяет слишком сильно сузить поиск (вплоть до конкретного города) при тщательном анализе интерьера и того, что в него попало.

Неоткрывающиеся ссылки содержат пробелы в пути

Это никак не пофиксить. Я в таких случаях пишу, принудительно выделяя её, как текст:
""http://ссылка с пробелом""
На печати получится: http://ссылка с пробелом
Кому надо, скопирует её мышкой и вставит.

если будут блокировать весь неопознанный трафик
Это жестко. Вряд-ли такое реально

А разве не этот ли сценарий реализовался в Иране и Китае?

я не ставил целью серьезную обфускацию, да и, наверное, вовсе не так это делается, если по уму.

Не знаю, делается ли она по уму вообще. Даже TorProject не смог[link64] ничего кардинального придумать, кроме как находиться в бесконечной гонке между щитом и мечом.

не представляю, в каком виде лучше подать информацию. Посмотрел раздел, но другие темы там в несколько ином направлении.

Я выше указал ссылку на DC, идеи можно позаимствовать оттуда. Прежде всего, хотелось бы видеть:
  1. Внятное техническое описание существующего протокола.
  2. Внятное описание фич, которые имплеменчены в текущей версии.

концепция свободной без-серверной VOIP на основе Tor HS вместо SIP, похоже, тоже нова, нигде ранее не выдвигалась (поправьте, если не прав), и имеет право на существование.

В именно таком техническом аспекте — пожалуй, да, но концептуально нового в этом ничего нет. Стандартные VoIP могут работать как P2P, если вы укажете способ связи между ними. Тут поможет либо STUN, либо ещё какие неколеночные способы. Один из самых простых — сервер поднимает соединение с кем-то, если получает аутентифицированное сообщение на специально созданный джаббер-аккаунт. Можно придумать миллион подобных же способов, и Tor HS — лишь один из них, а дальше всё стандартно делается.

А название – СrypTorFone ;)
А вот это – просто гениально!

Я бы не спешил соглашаться. В имени всё равно прослеживается Tor, что не может понравиться TorProject'у, тем более, что вы пишете СrypTorFone, а не СryptoRfone. Второй момент в том, что если вы хотите продвигать проект, как имеющий анонимность второстепенным значением, то зачем ему иметь Tor в названии вообще? В-третьих, все скрытые сервисы — это так называемый луковый интернет, домен onion, поэтому софт для связи между Tor HS разумно назвать onionphone'ом. Roger вам предложил самый разумный и самый взвешенный, на мой взгляд, вариант. Наконец, на рынке есть миллион всевозможных VoIP-решений, но практически нет ничего анонимного, поэтому было бы разумно с вашей стороны сконцентрироваться на нише анонимного/шифрованного VoIP, а не VoIP вообще.

Да и, как выяснилось, реальная анонимность практически понадобилась лишь сами видите кому.

Пусть вас не смущают педотролли. Им положено, потому что они как сапёры — ошибаются в жизни только дважды: когда рождаются с такой ориентацией и когда их деанонят в реале или в сети, поэтому для выживания вынуждены держать руку на пульсе безопасности лучше разведчиков. Террористы бегают в чужие юрисдикции, им сочувствующие, а этим бежать некуда, они везде и для всех враги, вот и получается PET в самом крайнем её проявлении.

По существу проблема в том, что, как вы понимаете, анонимная связь без анонимизации самого голоса — оксюморон, это как звонить через Tor для того, чтобы потом продиктовать под запись свои ФИО. Если наворачивать всё вместе, то получится очень сложный, громоздкий и амбициозный проект, поэтому, видимо, да вас никто за такое не брался, списывая всё на медленность и непрактичность. Тем не менее, у вас есть шанс доказать обратное, как это в своё время сделал Tor для понятия анонимности в сети (раньше была сложная система неидеальных и глючных костылей, а теперь есть одно приложение, которое скачал, запустил, и всё готово). Наконец, последний момент — реальная необходимость голосовй связи. В эпоху интернета скорость набора на клавиатуре лишь чуть-чуть медленее голоса, имеет ряд преимеществ (можно пересылать ссылки, формулы, картинки), поэтому многие предпочитают именно её для повседневного общения, даже когда есть возможность бесплатно совершать звонки. В любом случае, VoIP и Skype популярны несмотря на всё это, так что и у вашего проекта есть все шансы стать популярным.
— gegel (16/06/2013 01:28)   
Постараюсь тезисно выдать основные результаты исследования латентности в Tor

1. Задержка в цепочке обычно в пределах от 0.5 до 3-4 сек, в среднем 1 сек.
2. Jitter в большинстве случаем можно считать равным половине задержки.
3. Латентность зависит от наличия трансконтинентальных переходов в цепочке (по этому поводу уже были публикации).
4. Нет смысла специально отбирать узлы с минимальной латентностью (по аналогии с отбором по пропускной способности в проекте xeronet@gmx.com) в torrc-файле: это очень динамичный показатель.
5. Лучше всего отбирать менее латентные цепочки непосредственно в процессе работы, постоянно контролируя их латентность. Торфон использует всего две цепочки (каждый абонент соединяется с HS второго абонента), периодически переустанавливая более латентную, т.о. стремясь к минимально возможной латентности.
6. Латентность цепочки четко положительно коррелирует с трафиком в пределах, используемых в VOIP (2-20 Kбит/с). Поэтому предпочтительно использование низкобитрейтных кодеков.
7. Для компенсации Jitter лучше всего накапливать от 400 до 1500 мсек голоса в одном пакете на стороне отправителя. Торфон использует два режима, накапливая 900 мс (MELP 2400, стандартный режим) и 1500 мс (CODEC2 1300, для работы в условиях высоких задержек).
8. Логично было бы адаптировать длину накопленного отправителем фрагмента по показателю Jitter на стороне получателя. В Торфоне не реализовано, но можно переключать вручную.
9. В итоге удается получить абсолютную задержку в Тор-цепочке при условии 90% компенсации Jitter (900 мс накопления) в пределах 1.2-2.2 сек при трафике 3.2 Кбит/с в каждую сторону. Наверное, это и есть нижний предел, определяемый функционалом Tor-сети на сегодня.

Теперь к вопросу о видео чате. Основная проблема – увеличение трафика, и за счет этого резкое увеличение латентности. Крайне ориентировочно передача 320*240 25 fps DivX потребует около 130 Кбит/с, что в 40 раз превышает показатель Торфона для VOIP. Я вижу решение этой проблемы в распараллеливании данных по множеству Тор-цепочек. Ориентировочно потребуется до 50 соединений, причем я не могу сейчас точно сказать лимит на к-во цепочек к HS для Тор-клиента. Возможно, придется запускать какое-то множество Тор-клиентов, что потребует ресурс компьютера, но это небольшая плата за решение данной задачи.
При распараллеливании данных общая задержка будет равна задержке в самой медленной цепочке. Поэтому есть смысл не все имеющиеся цепочки использовать для распараллеливания, а часть использовать для дублирования медленных. Причем система должна быть очень динамичной, постоянно анализировать латентность по каждой цепочке, и средний показатель, оперативно принимать решение об исключении медленных и замерзших цепочек из распараллеливания и их перезапуске, об дублировании сомнительных. Также вновь созданные цепочки должны пройти некоторое тестирование на дублировании перед использованием их на распараллеливании.
Т.е. получается весьма сложный (но реально выполнимый) смарт-алгоритм, требущий на этапе разработки и тестирования значительного напряжения мозга.
Конечный продукт мне видится как консольное приложение на HS, создающее прозрачный для пользователя проброс пары UDP-портов к второму такому же приложению на удаленном HS. Приложение устанавливает множественные Tor-соединения и управляет ими по описанному выше алгоритму. С другой стороны, получает UDP-пакеты от локального пользователя, разбивает их на куски и отсылает по Tor-TCP-соединениям удаленной стороне. Собирает полученные куски в готовые UDP-пакеты и отсылает локальному пользователю. Также обеспечивает компенсацию Jitter путем буферизации с динамическими параметрами. После стабилизации соединения в качестве пользователей можно использовать обычные видео-клиенты, умеющие работать p2p по ZRTP.

Реализация такого проекта в одиночку, наверное, нереальна: нужна команда и финансирование. Может, заинтересованная специфическая публика найдет возможность организовать разработку, тем более что желание и средства у них имеются. В любом случае, мне хотелось бы увидеть работу алгоритма в реале, не зависимо от того, я или кто-то другой это сделает. Но факт в том, что onion-видео теоретически реально.

П.С. До начала работы над Торфоном я написал Циммерманну, изложив идею и попросив разрешения работать с его исходниками. Вот цитата из ответа:

TOR is too slow for any real time protocol, such as telephony.

И тем не менее, Торфон оказался годным к использованию и нашел свою нишу.
Гость (16/06/2013 06:40)   

Что только подтверждает вышесказанное
у вас есть шанс доказать обратное
:)

Спасибо за подробное изложение. По поводу
у меня проект по слежению за подвижными объектами (трекинг через GPRS по GPS и по сотовым вышкам), так там до десятка разных серверных протоколов поддержано.
пришла идея: видео может понадобиться в качестве анонимных камер слежения на рынке средств безопасности, которые можно устанавливать в туаместа слежения за обстановкой, товаром или ещё чем-нибудь. В крупных городах интернет нетрудно сделать в любом месте, видеокамеры с портативным железом тоже дёшевы, остаётся только сделать анонимную передачу изображения. Я к тому клоню, что какая-то фирма, которой такие средства безопасности интересны, могла бы это проспонсировать.

P.S. Списки делаются так:
Список:
  1. Пункт 1.
  2. Пункт 2.
Так читать писанину намного легче. Двойной пробел перед каждым пунктом ставьте, и всё.
— unknown (16/06/2013 11:28)   
Есть такое понятие — созвучие торговых марок до степени смешения. Cryptorphone смешивается сразу с двумя, как с Tor, так и Cryptophone. Причём, доказать в гипотетическом суде, что это не было сделано намеренно, да ещё в той же области деятельности, сложно. А Tor не хочит тратить силы на тяжбы с неофиц. проектами, которые могут нанести ущерб его репутации. Ну принято так, не потому что авторы плохие. Хуже, какой-нибудь наглец может сделать их пострадавшей стороной и отсудить у них марку, запатентовав сходные с Tor названия, если это вовремя не отследить, а затем начать предъявлять претензии к самому Tor. Даже, если не выиграет, но воспользуется несовершенством законодательства, чтобы вредить репутации проекта. Поэтому, такие ситуации принято пресекать в зародыше. Название "Linux" тоже запантовано, к примеру.
Гость (16/06/2013 15:39)   
Поэтому, такие ситуации принято пресекать в зародыше.

Получается, что даже в свободном программном обеспечении не обойтись без армии юристов[link65]. Как же несовершенен этот мир... :-(
Гость (16/06/2013 21:44)   
Cryptorphone смешивается сразу с двумя, как с Tor, так и Cryptophone.
Я думаю, вы догадываетесь, что Tor, будучи широко распространённым суффиксом, "смешивается" таким образом со многими тысячами слов, например:


Всех пресекать будут или как?

Что же касается Cryptophone, то можно у них поинтересоваться, и если они конкретно против, то можно подобрать какое-то другое слово из вышеприведённого списка, добавив к нему fone.

Кстати, почему аналогичных возражений не было слышно по поводу названия DiskCryptor?
Гость (16/06/2013 22:29)   

Да, всех, если будет связь с Tor и если это будет TradeMark с близким к Tor функционалом. Ваш пример с DC не имеет прямой связи с Tor.
Гость (16/06/2013 23:04)   
созвучие торговых марок до степени смешения
До степени смешения это когда можно перепутать. Cryptorphone и Cryptophone перепутать можно, Cryptorphone и Tor перепутать нельзя.
Гость (16/06/2013 23:18)   
Да, всех, если будет связь с Tor и если это будет TradeMark с близким к Tor функционалом

Вот есть такой сок – "Я". Если эта компания решит выпустить соки "А","Б,...,"Ю" названные всеми остальными буквами алфавита, то по вашему она монополизирует рынок? Ведь тогда в любое другое название сока будут входить какие-то её торговые марки. Я не настолько хорошо знаю законодательство, что-бы говорить наверняка, но лично мне это представляется весьма сомнительным.
— unknown (16/06/2013 23:28)   
Стиральный порошок "Linux" тоже выпускают, т.к. это из другой области и не вводит потребителей в заведомое заблуждение. Хотя с доменными именами при прямо конкурирующих названиях уже могут быть проблемы.
Гость (17/06/2013 00:26)   
С соками не так всё просто – их можно называть не только словами из буква русского алфавита – пример "J7". А вот если открыть в Москве рестораны с такими назвавниями... :)
Гость (17/06/2013 00:37)   
т.к. это из другой области
Tor – для серфинга по интернету, Cryptorfone – для голосового общения. Что общего?
— SATtva (17/06/2013 08:17, исправлен 17/06/2013 08:21)   

К чему здесь все эти спекуляции? На месте gegel'я, я бы просто уточнил у руководства Tor Project, нет ли у них претензий к такому наименованию. Подозреваю, что если не акцентировать в названии фрагмент "tor" (как CrypTorFone вместо Cryptorfone или CryptorFone), то и возражений не будет.


Вот то, что возражения будут со стороны GSMK Gesellschaft für sichere Mobile Kommunikation mbH, это я почти гарантирую.

Гость (17/06/2013 11:45)   
Немного в сторону. Существуют ли какие-нибудь наработки по искажению голоса, делающие идентификацию по нему затруднительной? Понятное дело, что наилучшим решением будет распознование и озвучивание машиной, но современные коммуникаторы пока еще не вполне справляются с этим. На ум приходят какие-нить преобразования со случайной структурой и добавочными шумами, оценивать которые будет непросто.
— unknown (17/06/2013 12:07, исправлен 17/06/2013 12:08)   

Обсуждали уже, что эта тема ведёт в болото. Нет нормальных распространённых, доверяемых наработок, скорее всего.


И потребность в этом сомнительна. Зачем тогда голос?


Анонимность в голосовой связи играет вспомогательную роль в ситуациях:


  1. Алиса знает, что говорит с Бобом, она может вычислить его личность, но хочет чтобы прослушиватель (Ева) не знала, что Алиса и Боб связывались друг с другом. И вообще, чтобы третьи стороны не знали по анализу трафика, у кого с кем какие контакты.
  2. Алиса знает, что говорит с Бобом, но Боб скрывает не свою личность, а к примеру, текущее местоположение. Т.е. они могут не доверять друг другу в полной мере, но и не смогут только по факту связи, не обращаясь к сведениям в реальном мире, узнать местоположение собеседника.

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

Гость (17/06/2013 13:30)   
Анонимная голосовая связь имеет существенное преимущество перед перепиской в одном реальном случае – когда руки заняты автоматом Калашникова и вы не хотите, что-бы об этом узнали многие.
Гость (17/06/2013 13:55)   
многие -> посторонии
— unknown (17/06/2013 13:59)   
С джиттером, задержками, пропаданиями коннекта?
Гость (17/06/2013 15:26)   
И потребность в этом сомнительна. Зачем тогда голос?

М.б. фокуснику и легче, сидя за баранкой, на бегу или на голове, ловко набирать бодрое смс.

Алиса не знает Боба – вполне себе ситуация. Например Боб может быть неким диспетчерским центром, который принимает звонки от множества Алис. И возможно Боб коллекционирует эти разговоры. А потом по собранной базе будет проводиться идентификация.
— unknown (17/06/2013 15:32)   
Даже если голос поменять, индивидуальные особенности произношения никуда не денутся: акцент, темп речи, подбор слов, интонации. Явно будет указывать на какого-то человека, может даже распознавание можно автоматизировать, хотя и ненадёжно. Мороки много, а защита слабая.
— gegel (17/06/2013 21:18, исправлен 17/06/2013 21:35)   

По теме вокодеров вообще немного теоретических публикаций.
Прмененный мною код основан на синтезирующем LPC кодеке. Кодер представляет собой анализатор, который, грубо говоря, определяет наполнение речи по формантным зонам, высоту, заполненность/шум и т.д. Таким образом, речевой фрейм описывается коротким битовым кадром, содержащим минимально необходимою информацию об исходной речи. Декодер синтезирует речевой фрейм по этому кадру (т.е. это уже не нативная речь). Вокодер изменяет некоторые параметры в кадре, например, меняя темп речи (делая ее монотонной) или фиксируя/динамически меняя высоту, или вообще убирая озвучку (шепот). Т.к. системы речевой идентификации/распознавания используют эти же параметры, то не представляется возможным уверенно доказать совпадение/несовпадение измененного голоса с оригиналом.
Конечно, это касается лишь характиристик "нижнего уровня", определяемых анатомо-физиологическими особенностями говорящего. "Верхний уровень" (словарный запас, устоявшиеся фразы и т.п.) остается деанонимизатором, хотя врядли будет иметь юридическую силу, т.к. эти признаки легко изменить сознательно, посто не забывая об этом в процессе разговора.
Посмотрите также opensource проект Zerius Vocoder[link66], работающий по сходному принципу, но вместо использования некоторых предустановленных параметров в кадре, извлекающий эти параметры из другого звукового потока. Это дает возможность в некоторой степени имитировать речь другого человека, или разговаривать гитарой, например. Также есть софт (коммерческий), позволяющий реал-тайм смещать тональность голоса под тональность музыки (для начинающих певцов) и т.п. Я также находил open source проекты голосовой идентификации/авторизации. Если есть интерес, поищу ссылки в архиве.
В любом случае, этот принцип вокодера используется в программах защиты свидетелей в тех же судах, где, возможно, будет доказываться и вопрос принадлежности вашего голоса, и выглядят надежно:


ПС: Asterisk Voice Changer[link67]
а это, к примеру, алгоритм совсем другого класса, обеспечивающий простой сдвиг тональности голоса, который легко восстановить такой же программой. То же касается и Skype Voice changer[link68] .


А что касается востребованности вокдера, то далеко и ходить не надо: в случае выше упоминавшейся комьюнити Алиса как раз не знает Боба, и Боб крайне заинтересован в том, чтобы ни Алиса, ни Ева его не узнали позже. Со стороны Алисы вокодер не нужен, но со стороны Боба может быть использован (Торфон, естественно, представляет возможность абоненту включать вокодер своего голоса независимо от другого). Единственно что в таком режиме желательно использовать гарнитуру, чтобы исключить изменение своим вокодером входящего голоса абонента: в этом случае в наличии будет комплект: нативный+измененный голос абонента, что может облегчить предположительное восстановление вашего голоса.

Гость (18/06/2013 01:08)   
Даже если голос поменять, индивидуальные особенности произношения никуда не денутся: акцент, темп речи, подбор слов, интонации. Явно будет указывать на какого-то человека, может даже распознавание можно автоматизировать, хотя и ненадёжно. Мороки много, а защита слабая.

Да, получится так же, как со стилометрией, и даже ещё хуже. Печатный текст можно много раз редактировать перед отправкой, продумывать, а всё равно на низком уровне возникают отличия по статистике, а в реальной речи, где «слово — не воробей», всё будет ещё труднее.

этот принцип вокодера используется в программах защиты свидетелей в тех же судах, где, возможно, будет доказываться и вопрос принадлежности вашего голоса, и выглядят надежно

Есть важная тонкость. У противника в вами описываемом случае можно гарантировать отсутствие специальной аппаратуры и возможность сделать запись разговора, поскольку он сам в суде и его тоже контролируют, а видео заседания суда могут не транслировать, так что единственный способ распознать голос — распознать его на слух. Другой момент состоит в том, что у противника будет только некоторое небольшое число записей (разовое заседание суда), даже если всё записывается. Тут получается как с криптоанализом любительских шифров: очень ограниченный материал, который увеличить никак нельзя. А теперь то, что имеем в реальности в торфоне: многолетнее связывание Алисы с Бобом, у каждого друг на друга есть огромный голосовой материал, накопившийся за всё время связи, возможность его как угодно анализировать и т.д.
Гость (18/06/2013 01:10)   
Анонимная голосовая связь имеет существенное преимущество перед перепиской в одном реальном случае – когда руки заняты автоматом Калашникова и вы не хотите, что-бы об этом узнали многие.

Были педофилы, а теперь ещё террористы подтянулись. Ждём, когда подтянутся остальные радикалы с мотивацией.
Гость (18/06/2013 15:57)   
Сообщество анонимных алкоголиков, например, еще. Телефоны доверия.
Гость (25/06/2013 10:42)   
пока борцуны с педофилами привлекают нас за шифрование, эти[link69] ребята развлекаются ( развязка на 34:28
Гость (25/06/2013 23:13)   
эти ребята развлекаются
Девице почти 16, а не 5, педофилы тут притянуты за уши, чтобы звучало почернее. Несколько лет назад, до повышения возраста согласия, сам бы предмет разговора, где одна половзорелая особь развлекается с другой, не имел бы смысла.
Гость (03/07/2013 22:48)   
Даже если голос поменять, индивидуальные особенности произношения никуда не денутся: акцент, темп речи, подбор слов, интонации. Явно будет указывать на какого-то человека, может даже распознавание можно автоматизировать, хотя и ненадёжно. Мороки много, а защита слабая.


Вы это технопранкерам скажите, которые успешно и годами разводят, в том числе "продвинутых специалистов"...
— gegel (04/07/2013 00:10, исправлен 04/07/2013 00:21)   

Запись работы вокодера[link70] Торфона в разных режимах (wav).


Даже на слух можно уловить определённое сходство с не измененным голосом. Все же, мне кажется, это не может выступать доказательством в цивилизованном суде, и никогда не будет использоваться для этого. Другое дело, что с определенной вероятностью можно определить принадлежность (чем больше голоса, тем выше вероятность), и затем уже использовать другие способы получения доказательств.


А это ролик тестирования вокодера[link71] автором алгоритма William Andrew Burnson. Т.к. он использовал кодек GSM 11025 KHz, то дополнительно получился сдвиг тональности (алгоритм вокодера считал, что на него поступает 8000 КГц аудио). Из-за этого появились дурацкие высокочастотные призвуки, но и тем не менее, все разборчиво, особенно хорошо в режиме робота и шепота.

Гость (04/07/2013 00:43)   
Gegel, респект за софтину и за сэмпл)))
Во-первых, я посмеялся и поднялось настроение, т. к. от подобных игр я все же далек, как и от использования голоса при анонимных коммуникациях, а тут такая тема! Убедился лишний раз, что голосовая связь не для меня. Максимум давать сжирать готовые текстовые шаблоны ботам. Но это надо много шаблонов и все под рукой. Хотя тоже тема.
Во-вторых, после того, как посмеялся, подумал, что трэк с вашими сэмплами будет хитом на танцплощадках продвинутой молодежи в стиле электро.
DJ Gegel – трэк 1 – Проверка холоса.
Респект UA ;)

Ну и в конце о грустном... ваш голос добален в нашу базу.
Помощник мл. подполковника Шуленина.
Не будьте наивны касательно судов. Это ручная шарага. Там спецы напишут на компе таких сэмплов и выдадут еще за ваши, если надо будет. Не в теме, но, возможно, нечто похожее шьют мэру Ярославля.
— gegel (04/07/2013 01:26, исправлен 04/07/2013 01:39)   
DJ Gegel – трэк 1 – Проверка холоса.
Респект UA ;)

В варианте 1 было: "Пговегка голоса", но изменил силой воли, по паспорту таки UA :)

ваш голос добален в нашу базу

Удивили... Наверное, в вашей базе даже диаметры всех моих отверствий давно имеются. Писать тут полгода со своего айпи... Но, тов. начальник, я ведь не нарушаю ;)

Гость (04/07/2013 01:55)   
Как-то так[link72].
Стильный холодный монотонный голос, без эмоций. То что надо.
Правда, неизвестна реакция собеседника, если он в теме корованов.
У гугла вроде есть распознавалка голоса? Только для моб. приложений кажется. Если нормально работает, то можно, голос в текст, текст в голос. Пгофит!!11


Нет. Диаметры отверстий заносятся в БД после тщательного ТРК + изготовляются трехмерные слепки:))
Гость (05/08/2013 01:36)   
This product is produced independently from the Tor® anonymity software and carries no guarantee from The Tor Project.


Это сильно, зачем он нужен?
Любую говорилку включаем, в тор заворачиваем, получаем этот торфон?
Гость (05/08/2013 02:25)   

Админ, пост не читай, сразу удаляй Юзер, тред не читай, сразу отвечай.
— SATtva (05/08/2013 08:32)   
Действительно. И что тут только обсуждают 20 страниц?
Гость (03/03/2014 22:04)   
М-да.... Ну почему всё у нашего русского брата так? Резко загорелся, наворотил дров, обнадежил общественность, а потом утратил интерес и забросил всё нафиг.
Все равно как слесарь Полесов из "12 тульев".
А сколько было обещаний! И развитие,и порт для Linux, и т.д и т.п.

И что мы имеем в сухом остатке? Полурабочий полуфабрикат с умопомрачительной документацией, от чтения которой нормальный человек может получить серьезную контузию мозга.
Полгода назад, наблюдая за развитем Torfon, я очень хотел ошибиться, чувствуя, что и этот проект будет проср... забыт заброшен.
Очень надеялся, что из этого гадкого утенка получится совершенный отточеный продукт, годный для использования широкой публикой.
Но к сожалению, не ошибся.
— sentaus (03/03/2014 22:10)   
А сколько было обещаний! И развитие,и порт для Linux, и т.д и т.п.

Программистам хочется кушать.
Гость (03/03/2014 22:49)   


Намек на что? Кто-то заплатил чтобы проект не развивался? ;)
— sentaus (03/03/2014 22:53)   
Намек на что? Кто-то заплатил чтобы проект не развивался? ;)

Никакой не намёк ни на что. Просто констатация простого факта, что один человек не в состоянии осилить что-либо крупное, если у него нет на то времени.
Ну и ещё интерес обычно месяца за 3-4 угасает.
Гость (04/03/2014 20:41)   
Как я понял, реализация проекта по уму затребовала правильного шифрования голоса, прикручивания чата с PFS и тихого уведомления о прессинге. При попытке сделать PFS по уму вылезло много проблем, которые gegel активно изучает до сих пор[link73]. Т.е., да, развитие проекта затормозилось из-за этих проблем, но не остановилось.


А потом воспалменяется вновь с удвоенной силой. ☺
— gegel (07/03/2014 00:10, исправлен 07/03/2014 00:17)   
И развитие,и порт для Linux, и т.д и т.п.

Да, порт под линукс был обещан, и я об этом помню. Но поймите: у меня нет команды разработчиков, и даже нет просто помощников – все было сделано мною лично, начиная с идеи, и заканчивая сайтом. Того времени, которое я могу выкроить для проекта, физически не хватает. Но от обещанного не отказываюсь: под линукс сделаю. Но, скорее, это будет не порт, а консольное приложение, инкапсулирующие основные функции Торфона.


Полурабочий полуфабрикат

Я бы так не сказал. Укажите конкретно, что бы Вы хотели добавить, и что не работает, как хотелось бы. У меня исчерпалась фантазия: все мои идеи были реализованы в последней версии. Но только не просите, ради Бога, смайлики: придется "жить с серым и унылым чатом" ®ZAS


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

Мне, как разработчику, трудно оценить доступность стиля изложения для пользователя. По уму документацию должен писать не разработчик, а продвинутый пользователь после успешного освоения продукта. Буду рад, если вы укажете, где и что конкретно вызвало у Вас затруднения. Но только не говорите, что ничего не понятно: все таки предполагается подготовленная целевая аудитория в виду специфичности проекта.


совершенный отточеный продукт, годный для использования широкой публикой

Боюсь, что это в принципе невозможно. Даже на благоприятном фоне разоблачений Сноудена проект заинтересовал лишь очень узкий круг пользователей. Я лишний раз убедился, что участники pgpru – абсолютно не репрезентативная выборка к этой вашей широкой публике. Выйдите в город и поспрашивайте у народа, что кто знает о шифровании :) Даже большинство моих знакомых программистов имеет весьма туманное представление о базовых принципах криптографии, не говоря уже о реализации протоколов.


Лично я для себя считаю проект успешным, т.к. было наглядно показано, что:

  • передача голоса вполне реализуема на ТСП-транспорте;
  • на сегодня Tor обеспечивает приемлемую пропускную способность и латентность для потоковой передачи голоса с терпимыми задержками.

Любой пессимист может в этом убедиться, просто скачав и запустив Торфон "из коробки", и это должно подтолкнуть разработчиков к реализации своих проектов.
Впереди, как всегда, guardianproject[link74].


Правда, они поленились и пошли по пути меньшего сопротивления, реализовав лишь подобие голосовой почты, несмотря на short-term grant from the Tor Project, но все впереди.


Опять же, зависла уникальная идея Tor-видео с передачей потока через множество Tor-цепочек между HS, алгоритмом отбора быстрых и дублирования сомнительных цепочек: наверное, педофилам уже перехотелось. Но такие проекты – однозначно не для одного человека, пишущего в свободное время и под настроение.

Гость (07/03/2014 03:21)   

Претензии высказывал не я, но касаемо документации замечания есть. Здесь я придерживаюсь тех требований, который были выдвинуты в стиле «значимость проекта по-unknown'у»[link75]:

Что такого должно стоять за проектом, чтобы его назвали значимым?

Концепция, теоретические разработки, публикации, куча документации, отлаженное сообщество по разбору багов, масса всего, а код — только финальная крохотная часть работы на выходе, как капля в море. Чтобы по описанию протокола можно было легко разработать параллельную ветку кода даже не подглядывая в исходники.

В реальности — это конечно недостижимый идеал. Даже проект уровня Tor слабо ему соответствует — они уже захлебнулись разбирать 30 тикетов в день. Обычные OpenSource проекты справляются с нагрузкой, привлекая как можно больше разработчиков. Но если представить, что OpenSource проект связан секретностью/псевдонимностью, то его уровень скатится до очень низкого. Так же, при всей талантливости, малоперспективны проекты разработчиков-одиночек. Даже открытые, но где официальный разраб — только один. По этой причине маргинализовался и провалился линуксовый loop-aes против cryptsetup/dm-crypt, хотя изначально он намного опережал аналоги.

По крайней мере, за любым сколь-нибудь масштабным по сложности проектом (TorFone, очевидно, перешагнул эту границу) должна стоять статья в PDF, набранная в LaTeX'е и представляющая собой полное грамотное научное/техническое описание по всем академическим канонам с обоснованиями и всеми положенными ссылками на литературу. Точнее, проект должен начинаться с такой статьи, а не заканчиваться ею. Ну, или должен быть написан прототип, по результатам работы которого такая статья будет написана. Только после этого «проект» можно показывать широкой публике и рекомендовать для использования. Будет лучше, если эта pdf-работа будет протолкнута на профильную конференцию и представлена перед специалистами, которые её покритикуют. Например, именно так происходит с Freenet и Tor. Да, чтобы написать работу по всем академическим канонам, уже нужен некоторый опыт и знание правил, но все же с чего-то начинали... Чтобы вам было понятнее, о чём идёт речь, есть примеры таких работ для cgd[link76], LUKS[link77] (см. также pdf-файл со спецификациями на LUKS[link78]).

Проблемы с этой[link79] страницей — это так и должно быть? Форум ещё не прикручен?

Not Found

The requested URL /forum/index.php was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


Apache/2.2.26 (Unix) mod_ssl/2.2.26 OpenSSL/1.0.1e-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at torfone.org Port 80
Гость (07/03/2014 03:38)   
[offtop]
Этот сайт — тоже /proekt[link80] одиночки[link65]. ;)
[/offtop]
— unknown (07/03/2014 09:44)   
[offtop]
Это просто информационный сайт, а не проект по созданию чего-либо конкретного, если не считать wiki-движка. Но свой движок (часто переделанная версия известного) есть у многих сайтов, это кодинг. К созданию движка инженерно-академический подход не нужен.
[/offtop]
Гость (09/03/2014 01:51)   
[offtop]
Программистов не зря часто называют «инженер-программист», относя их к классу инженеров. За любым сколь-нибудь сложным кодом стоит своя архитектура, на эту тему тоже пишутся статьи, и делаются презентации. Конечно, так делает меньшинство, но никто и не скрывает, что разработка большинства проектов ведётся чисто кулхацкерским образом.

Строго говоря, программирование — это вообще не кодинг. Программирование — это такая математика, включающая в себя изучение моделей вычислений, оптимальные способы вычислений, теорию сложности, λ-исчисление и т.п. Просто когда проблемы чисто кодинговые/программистские накаладываются ещё и на то, что кодер не знает «предметную область» в которой кодит (то же крипто), всё усугубляется вдвойне.

[/offtop]
Гость (09/03/2014 01:59)   
[offtop]
Кстати, когда пишут серьёзные работы, алгоритмы в них описывают в так называемом псевдокоде. Псевдокод не обязан быть досконально конкретным, не обязан быть реально существующим языком программирования, но он должен давать описание, как можно более близкое к «реальному ЯП». Когда мне приходилось поручать кодерам реализовать какой-то алгоритм, я его тоже записывал в псевдокоде, за это только спасибо сказали. Более того, пошаговые объяснения, какая сторона что делает, в криптостатьях (обычно это ещё выделено в рамку или отделено горизональными линиями) — это не что иное, как своеобразный высокоуровневый псевдокод. Но ведь псевдокод — это как бы изначально вещь из мира программирования, не так ли? :)
[/offtop]
Гость (09/03/2014 22:32)   


Шибоко умно закручено. Например, я не понимаю этого "ин" да еще "капсулировано". По русски можете излагать, или таких слов уже нет?

Что до консольного приложения – да, для линуксов это будет идеальный вариант, т.к. заработает на любом дистре. И безопасность будет выше.
Да и задолбали уже эти смердючие падучие гуёвые окошки – в серьезных проектах на этапе становления концепции лучше их не использовать вообще, не распыляя на них свои силы.
Сделайте интерфейс наподобие Centericq – и лунуксоиды будут счастливы!
Гость (10/03/2014 03:46)   

Так это же софт для профессионалов. Они знают.


Facepalm.jpg. https://ru.wikipedia.org/wiki/Инкапсуляция_(программирование). Подучите русский язык.


Лучше наподобие mcabber/irssi/climm, а клягинское говно ненужно.
— gegel (10/03/2014 14:08)   
но касаемо документации замечания есть

Я так понял, претензии были к user's guide. Что касается технического описания и протокола, то его вообще нет. У меня самого от этого неприятный привкус. И я уже начинал описывать протокол, но потом остыл, все так и зависло.

проект должен начинаться с такой статьи, а не заканчиваться ею

В том и дело, что с Торфоном все получилось через одно место. В начале я не планировал практический проект. Просто хотел поэкспериментировать с VOIP over Tor под впечатлением статьи на guardianproject. Для этого выбрал подходящую open source p2p VOIP, изменил транспорт с UDP на TCP и увеличил буфер для компенсации jitter. Никакой науки тут не было. Возможно, все вылилось бы в какую-то публикацию по задержкам в Tor. Но на фоне неожиданно бурной реакции Tor Project на, собственно, сырой и мелочный проект появилось желание сделать Out-of-Box решение. Ну, и с подачи pgpru пересмотрел оригинальную Циммермановскую криптографию (даже во сне не мог представить, что буду править его исходники), прикрутил голосоменялку и т.д.

Форум ещё не прикручен?

Уже откручен. З ним надо следить, оказывается. Летом, во время отдыха, зарегистрировалось пару сотен пользователей ботов с тысячей постов, и ни одного по теме (несмотря на каптчу, правда, не такую продвинутую, как здесь). И когда по запросу Torfone поисковик начал выдавать ссылки на публичные дома, я форум снес.

"ин" да еще "капсулировано"

Да, Остапа понесло, извините. Я имел ввиду, что основной функционал останется, но без GUI, и код будет полностью переписан на C вместо C++. По моим оценкам, так будет проще, чем портировать Циммерманновский исходник c переплетенными Win32 GUI и основными функциями.
Гость (10/03/2014 14:39)   

... который взял их «торговую марку» ... Вы же вроде собирались его переименовать, вам даже лично (Роджер?) обещал за это сколько-то BTC пожертвовать, если я правильно помню.


Будет обидно, если оно зафейлится. Надо хотя бы сделать то, что понятно, как сделать, и описать те проблемы, ответы на которые у вас нет, чтобы те, кто пойдёт по вашим стопам, не воспроизводил те же ошибки и проблемы, а встал вам на плечи и прыгнул дальше, условно говоря.


No comments...
Гость (10/03/2014 16:48)   


Идите вы нафиг с таким "русским"! Это не русский, а пиндоский, и пиндосы воткнули этот изврат в гавнопедию же.
Gegel, надо отдать ему должное, и исправил формулировку на человеческую.
Гость (10/03/2014 17:36)   
С полгода с приятелем мы попытались заюзать Totfon.
Приятель – сисадмин с 10-летним стажем, сертификат MS и все такое, я просто опытный пользователь.
До этого я сам попытался заюзать Torfon, но по дубовому (сорри, но оно так и есть) мануалу мало что понял, и обратился к приятелю.
Читая мануал, приятель чертыхался больше моего, потом плюнули на описание начали "юзать" методом инженерного тыка.

Благодаря 1) дубовому манулу 2) видимо, каким-то косякам в Торфоне в работу мы его в работу так и не запустили. Причем мы не использовали даже работу в Торе, а пытались организовать обычную 2-точку.
В итоге приятель сказал, что больше таким недоделанным фуфлом он заниматься не будет.

Gegel, прошу извинить, хотя лично к вам испытываю уважение, но ваш продукт – увы, несмотря на замечательную задумку, за реализацию, особенно за мауал – заслуживает самых резких слов, которые вы только что услышали.
Может быть, если бы был нормальный мануал, то и проблем бы не возникло.

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

Начнем по порядку.

Вот я, обычный пользователь, желаю использовать Torfon.
Открываю мануал testinru2.pdf и читаю:


ваш личный адрес (16 символов):

– тут все понятно.


17447 127.0.0.1:17447 непосредственно после строки HiddenServicePort 11009 127.0.0.1:11009

И тут сразу масса вопросов!
Во-первых – что такое Торчат?
Откуда он тут, в Торфоне, взялся?
Где его взять?
На кой он вообще нам нужен, если мы собрались использовать Torfon?
Он что, непременный компонет для Torfon, или он не обязателен?
Какую роль он играет для TorFon?
Торчат – он так иназывается, или это сленг названия Totchat?
И можно ли его послать куда подальше?
И т.д. Т.е. внезапно свалившийся откуда-то меня самозванный Торчат сразу вызывает раздражение и желание побыстрее от него избавиться.
Потому что ни о каком Торчате речь не шла – мы договривались только о Торфоне.

Это всё в мануале никак не объяснется, а предлагается открыть Блякнот, вписать в него какие-то данные и "ждать соединения с сетью".

По большому счету – да нафига нам всё это надо, если мы собрались использовать Torfon??

Ладно. Допустим, мы подумали-подумали, и решили, что это Торчат на нафиг не нужен, и будем действовать без него.

Но тут в мануале как раз проблема – в нем описан случай "Если вы уже используете Торчат..".
А если мы "Еще не используем Торчат?" – тогда что делать?
И более того – мы совсем не хотим использовать Торчат (хотя бы потому, что вы не описали, на кой он вообще нужен и т.д.) – тогда что?

Вы этого не описали. Тем самым нарушив правило "if- then – else".
Т.е. случай "Тогда" вы описали, а "Иначе" осталось за кадром.

Ну и т.д. Чем дальше, тем непонятнее. В мануале нет структурирования описания работы с вашей программой, основных ее режимов работы – всё свалено в одну кучу и только запутывает.

Gegel, я прекрасно понимаю, что вы классный айтишник и программист и создали замечатальную программу. Но описания к программам вы совершенно не умеете писать – это не в плане вас обидеть, а только костантация грустного факта, не позволяющего использовать ваш Torfon "широким слоям населения".

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

Самая главные проблемы вашего мануала – отсутствие структурированности и самодостаточности.

С уважением, юзер. Просто юзер.
— gegel (10/03/2014 23:18)   
Спасибо за конкретизацию. Действительно, мне тяжело оценить базовый уровень потенциального пользователя и то, как ему хотелось бы получить информацию. Вы хотели потестировать прямое соединение между двумя Торфонами, в то время как инструкция в картинках – это пошаговый мануал для установки именно анонимного соединения через Tor.
Решение вашей задачи описано тут[link81]. Если будет возможность, попробуйте еще раз. Я готов вам помочь онлайн любым удобным для Вас способом с условием, что, освоив работу с программой, Вы хотя-бы схематически сделаете свой вариант мануала для просто юзеров.
Гость (11/03/2014 02:41)   

/comment64735[link82]
— unknown (11/03/2014 12:10, исправлен 11/03/2014 12:13)   

2 /comment77388[link83]:

С полгода с приятелем мы попытались заюзать Totfon.
Приятель – сисадмин с 10-летним стажем, сертификат MS и все такое, я просто опытный пользователь.

Самая главные проблемы вашего мануала – отсутствие структурированности и самодостаточности.
С уважением, юзер. Просто юзер.

Вспомним начало проекта Tor, уже более 10 лет прошло. Он разрабатывается под Linux, версии под Windows сначала шли с большим отставанием. Никакого инсталлятора и графического конфигуратора под винду вроде не было, тем более готового браузера с преднастроенной связкой всего нужного. Сухой технический мануал-readme. В винде нужно было вручную распаковывать, ставить и запуcкать консольную программу, править руками (через тот самый дефолтный винблокнот) конфиги, прописывать прокси в браузере. И это ещё не всё. Tor не был самодостаточным. К нему надо было качать с другого сайта локальный промежуточный прокси со своей пачкой конфигов — privoxy, который торпроджектом не поддерживался, был вообще полузаброшен. Не помню, как там в винде решали и проблемы с SSL-либами.


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


Разработчики GnuPG над этим вообще не парятся. Есть консольная версия, слабо подходящая рядовому пользователю, и либа для сторонних программеров. За создателей GUI они не особо отвечают.

Гость (11/03/2014 16:42)   
На мой взгляд, все зависит от разработчика. От времени, возможностей, понимания логики юзера и т. д. В грубом примере можно указать на необходимость создания мануала для юзера с нулевой подготовкой. Если софт пишется не под себя, а для других, то это надо учитывать.
Ориентироваться надо на такого юзера-newbie, если аудитория еще не сформирована.
Т.е. если продукт не юзерфрендли, то нужен юзерфрендли мануал. Но вообще-то, сейчас нужно думать (помимо первоочередных задач надежности, безопасности продукта и т.д.) о т.н. юзабилити и простоте использования, ГУИ. Просто статистика показывает, какая доля юзеров каким функционалом, знаниями и потенциалом обладает. Более 80%, ну вы поняли.
Так что какой-либо проект, ориентированный на широкую аудиторию не может, или не должен быть неудобным и сложным в использовании для новичка.
Несколько ошибочно мнение, что если пользователю нужен софт, он разберется. Даже если речь идет о коммерческой выгоде самого пользователя, далеко не факт, что это заставит его копаться в конфигах и сидеть в консоли.
Поэтому, по моему мнению, есть как минимум два основных пути.
Первый — софт как есть + исчерпывающий юзерфрендли мануал.
Второй — юзерфрендли софт искоробки + краткий readme или справка.
— unknown (11/03/2014 16:49, исправлен 11/03/2014 16:50)   

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

Гость (12/03/2014 17:27)   

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

Имхо, для таких остросюжетных продуктов, как онлайновая криптозащита, лучше всего их оставить только в консольном виде, поскольку всякие гуишные рюшечки создают риск неучтенных утечек, т.е. дыры в безопасности.

Да и Виндовс для этого не годится – одна сплошная дыра. Не понимаю, как можно сделать высококлассную защиту на основе Винды – это взимоисключающие понятия.
Лучше всего сделать Torfon на основе Линукса, загружаемого с флешки. А для тех, кто согласен немного поступиться уровнем безопасности (конфиденциальный, например), в виде приложения к распространненому дистрибтиву Линукс.
Гость (15/03/2014 21:38)   
К gegel'ю: есть общие замечания по поводу сайта. Не делайте много колонок. В TBB размер окна TorBrowser по умолчанию небольшой, и в каждой строке из ваших колонок оказывается по паре-тройке слов. В любом случае, я не считаю, что разумно делать больше двух полноценных колонок на странице, даже если так хочется. Обратите внимание, как выглядят консервативные сайты https://blake2.net и http://keccak.noekeon.org. Можно найти ещё десятки примеров подобных. Это удобное представление информации, сразу интуитивно ясно, что и где искать.
Гость (15/03/2014 22:11)   

Из этого не следует знание предметной области — например, как устаналивать, использовать, и зачем нужен TorChat. Чтоб было понятнее: из знания ЯП не следует знание конкретных библиотек. Изучив C и программируя под винду, вы не сможете завтра внезапно начать писать под UNIX. Там даже философия другая. Короче, инструкции писалась для параноиков, которые в теме. ☻
Гость (17/03/2014 23:59)   


Совершенно согласен, опыт и стаж был приведен только для того, чтобы дать понять об общем кругозоре человека, что не простой юзер, а опытный специалист IT.
Гость (18/03/2014 00:39)   
Да, так вот – сидим мы сегодня, два настырных юзера, и пытаемся запустить этот самый Torfone.

Пункт 1. в PDF-инструкции гласит:
Скачайте архив Торчат, разархивируйте ...

Ссылка у вас здесь – нерабочая. Укажите правильную, а то мало ли каких левых сайтов можно встретить, типа http://torchat.ru.uptodown.com/ с вирусней.
Самостоятельно нашли Torchat здесь https://github.com/prof7bit/TorChat/downloads
Но звонки друг другу по сгенерированным Точатом адресам ни к чему не привели.

Далее занялись режимом 2-точка. Указали в Torfone IP-свои адреса и снова начали названивать друг другу.
Но в ответ получали "Proxy server not avalable" и т.п.

Какой еще прокси-сервер? Откуда он здесь вообще взялся, если мы работаем по 2-точке?
В вашем мануале этот случай не рассмотрен.

Вероятно, как и в первом случае, причина неконнекта в том, что не открыты какие-то порты в файрволах.
Но извините, сейчас 21-й век, у каждого юзера даже в самом поганом домашнем роутере есть файрвол, который надо настраивать, как и в ОС.
Где в вашем манауле есть описание протоколов и портов, которые нужно открыть?

Лучше создайте какую-нибудь временную аську, и вы сможете в онлайне оперативно и детально поучаствовать с наими в решении проблем, которые возникают.
Заодно получите от реальных юзеров знания, которые следует внести в мануал для его совершенстования.
А то переписка по ним на форуме с учетом сырости мануала затянется еще на полгода.
— gegel (18/03/2014 14:10)   
есть общие замечания по поводу сайта.

Спасибо, обязательно учту на будущее.
Ссылка у вас здесь – нерабочая.

Тут – это где? На главной странице сайта проекта[link84] висит прямая ссылка для скачки[link85], подписанная мною. Рабочая. Единтвенно что, не могу сказать, на сколько там tor.exe актуален. Если не будет соединяться с сетью Tor, скачайте последний TorBrowser тут[link86] и замените tor.exe в пакете Торчата на файл из пакета TorBrowser.
Но звонки друг другу по сгенерированным Точатом адресам ни к чему не привели.

На главной странице сайта ссылка на описание в картинках[link56]. В конце первой странице показано, как отредактировать ини-файл Торчата. Это сделано? (В версии Торчата с сайта проекта файл уже отредактирован).
Указали в Torfone IP-свои адреса

Выполнение соединения точка-точка описано тут[link81]. Похоже, вы не вводите символ @ перед IP-адресом. Также отредактирйте ини-файл Торфона, как описано в пункте по ссылке.
причина неконнекта в том, что не открыты какие-то порты в файрволах.
В данном случае нет, до портов Вы еще не дошли.
Где в вашем манауле есть описание протоколов и портов, которые нужно открыть?
Порты настраиваемые, по умолчанию 17447 TCP/UDP. По указанной выше ссылке видим:
В качестве слушающего все доступные сетевые интерфейсы будет использован UDP-порт с тем же номером, что и TCP, заданным в параметре ListenAddr:Prt
Открываем 'torfone.ini' и смотрим.
Лучше создайте какую-нибудь временную аську

Аську так аську. Отпишите мне на почту, я скину вам номер и договоримся о времени контакта. В данном случае, как я понимаю, ни о каких PGP и OTR-плагине речь не идет в принципе, общаемся открыто.
Гость (29/03/2014 03:19)   
У меня тож не получилось запустить в работу Торфон, может, опыта мало.
Gegel, скажите чесно, Linphone чемто уступает вашему Торфону в плане защиты траффика?
— gegel (29/03/2014 12:05, исправлен 29/03/2014 12:10)   
Gegel, скажите чесно, Linphone чемто уступает вашему Торфону в плане защиты трафика?

Говорю честно: в плане защиты трафика ничем не уступает. Linphone может использовать ZRTP для p2p-шифрования голосового трафика.


Но это фундаментально разные приложения:
1. Linphone – это SIP-клиент и не может работать без внешнего SIP-сервера (включая обязательную регистрацию на нем с возможностью сбора данных о ваших контактах), в то время как Торфон использует Tor-HS для поиска абонента (не требует регистрации, нет возможности собирать метаданные).
2. Linphone использует RTP для передачи голоса, в качестве транспорта используется UDP, поэтому передача голоса через Tor принципиально невозможна – абоненты в конечном итоге устанавливают p2p-соединение. таким образом, каждая сторона видит IP второй стороны (т.е. знает, где он находится), и наблюдатель (ISP абонентов или SIP-сервера) видит IP участников беседы. Торфон может использовать нестандартный голосовой протокол на базе TCP, поэтому может установить двухсторонне анонимную связь через Tor, но ценой секундных задержек голоса.


Но мне другое интересно – что же в вашем случае помешало связать Торфоны? даже не предполагал, что это может вызвать хоть какую-то сложность. Я так понимаю, вы хотите установить прямое соединение с другим Торфоном?


Предполагается, что абоненты имеют "белые" IP от своих ISP:
1. Скачиваем архив, извлекаем из него папку Торфона.
2. В файле 'torfone.ini' блокнотом правим параметр ListenUDP=1
3. В роутерах абонетов пробрасываем UDP-порт 17447 на компьютер с запущенным торфоном
4. Для звонка в адресную строку вставляем внешний IP-адрес вызываемой стороны с символом @ вначале ( например, @74.99.25.25 )
5. После установки соединения оба абонента переключают кодек с MELP на OPUS


Если ваш ISP выдает "серые" IP, то нужет TorChat. Оба абонента делают следующее:
1. Скачиваете архив с TorChat с главной страницы моего сайта (в нем уже поправленный torrc-файл)
2. Запускаете TorChat, дожидаетесь, пока значок MySelf станет зеленым.
3. Копируете с этого значка свой адрес и обмениваетесь им с вашим абонентом.
4. Запускаете Торфон, вставляете Torchat-адрес (без .onion) вашего абонента в поле адреса Торфона и вызываете.
5. После установки соединения оба абонента устанавливают галку Edit -> UDP/TCP -> UDPdirect
6. После короткого звукового сигнала и сообщения о переключении на прямое соединение можно сменить кодеки на OPUS.


Если в этих пунктах что-то непонятно, пожалуйста, напишите, что именно. У меня уже не хватает фантазии описать проще. Если что-то не получается, также опишите, что именно. Я дам конкретный совет, как обойти проблему.

Гость (29/03/2014 17:31)   
Круто было бы увидеть в торфон'е изменение голоса.
— gegel (29/03/2014 20:41, исправлен 29/03/2014 20:48)   
Круто было бы увидеть в торфон'е изменение голоса.

Да, увидеть – это было бы круто. Но для этого, как минимум, надо увидеть руководство в картинках[link56] на стр.5., тогда по крайней мере изменение голоса можно услышать.
Также можно посмотреть демо-ролик[link71] от автора кода вокодера William Andrew Burnson. Правда, он выбрал кодек, работающий не на 8КГц, поэтому наложился сдвиг полосы и появились свисты. Для качественной работы вокодера используйте OPUS, MELP или GSM0610slow. На мой взляд, для анонимизации лучшим есть режим Breathy (шепот).

Гость (29/03/2014 22:24)   
А внешние программы не способны изменять голос?
— gegel (30/03/2014 12:05)   
Уточните, какие конкретно программы имеются в виду. На сколько я в курсе, универсальные программы из этой серии создают в системе (все сказанное относится к Windows) виртуальное устройство звукового ввода. К сожалению, я не стал вводить в Торфон возможность выбора звукового устройства из имеющихся (создавать диалог в VC6 для mfs – сущий ад), так что Торфон выбирает первое устройство из списка (обычно это устройство, назначенное в Windows по умолчанию). Таким образом, после установки внешней программы назначьте созданное устройство по умолчанию, и Торфон будет использовать измененный голос. Если дадите ссылку на конретную программу, я потестирую.

Но обратите внимание: далеко не все утилиты для изменения голоса выполняют относительно невосстановимою трансформацию. В свое время я почитал теорию по данному вопросу и просмотрел имеющиеся в открытом доступе алгоритмы (в теме выше есть ссылки), а также ознакомился с алгоритмами голосовой идентификации. Это вообще сложная проблема, не имеющая однозначного решения и доказуемости: разница между "догадаться кто" и "доказать в суде" может быть значительна как в одну, так и в другую сторону в зависимости от обстоятельств.
Гость (30/03/2014 16:11)   
Gegel, заведите себе криптокошелек, брошу вам чуток лайткоинов.
Поражают ваши знания с одной стороны, и реальный продукт с другой, надо поощрить на перспективу :)
Особенно на долгожданный порт под линукс.
Гость (31/03/2014 00:25)   

Вот Гугл умеет голос в текст распознавать, и недавно это стало возможно даже локально, без интернета. По моему самое оно!
Гость (31/03/2014 01:58, исправлен 07/04/2014 12:46)   
Если дадите ссылку

MorphVOX[link87]
AV Voice Changer Software[link88]
Scramby[link89]
VoiceMask Pro[link90]

Гость (31/03/2014 02:08, исправлен 07/04/2014 12:46)   

- MorphVOX[link91]
Scramby[link89]

Гость (31/03/2014 02:09)   
что-то слетает ссылка Scramby

Scramby[link89]
Гость (31/03/2014 02:13)   
По моему самое оно!
как это применить в Торфоне?
Гость (31/03/2014 02:28)   

Ну вот и взялись бы имеющие такие опыт и знания да и написали! Совместными бы усилиями глядишь дело бы и быстрее пошло...
Гость (31/03/2014 02:35)   

Ну нужна распознавалка из голоса в текст и читалка из текста в голос. Самая лучшая изменялка голоса. Вообще можно в таком случае не голос, а текст передавать. А для пущей секретности ещё переводить туда-сюда.
Вот в Андроиде Гугл-переводчик теперь умеет работаль локально, файл порядка 150 мб на язык. Ежли б кто отвинтил и прикрутил...
Гость (31/03/2014 02:45)   

Хотя вот писали, что не очень то это и помогает... Но, надеюсь, от этого хоть хуже не будет.

Но, надежда категория не научная – а вдруг такое хитрое совпадение, что идентификация по голосу наоборот улучшится? Ну типа как вот про каскадное шифрование не доказано нифига. А раз ненаучно, то – оффтоп!
Гость (12/04/2014 20:08)   
Про переименование[link92] на примере Torchat:

Roger: Torchat has nothing to do with Tor and we haven't looked at it or evaluated it in any way. (In large part this is because they picked a confusing name for their program, so we spend energy teaching people that it's a confusing name rather than actually looking at it).

Экстраполируя это на TorFone, получаем не очень хорошую штуку. Просьбы переименования проекта были озвучены разработчиками Tor год или сколько там назад? С тех пор ничего не поменялось: сайт, домен, всё под старым именем.
Гость (12/04/2014 21:55)   
Испробовали Torfone как двухточку, сначала в локалке, потом в реальном Интернете.

1. Если оба абонента в Виндовс – качество весьма приемлемое.
2. Один абонент в Wine 1.4.1 под PulseAudio, второй в Виндовс.
Абонент в Виндовс слышит хорошо, а который в Вайне, слышит голос с треском и хрипением, так что Linux в данный момент использовать нельзя.
3. Один абонент в Виндовс, второй в гостевой виртуальной Виндовс.
Абонент в физической Виндовс слышит хорошо, в виртуальной тоже неплохо.

Есть мнение использовать вариант 3, но тут возникает несколько вопросов, связаных с тем, что Виндовс доверять нельзя.
Первое желание – запускать Виндовс в линуксовой виртуалке.
Второе желание – добавить использование OpenVPN, по которому пропускать трафик Torfone.
По идее, это дополнительно зашифрует трафик и уменьшит паразитные утечки Винды и ее приложений/сервисов "налево".

Как тут лучше поступить, где запускать OpenVPN-сервер и OpenVPN-клиент – в базовом Linux или гостевой Виндовс?
И как, если это повысит информационную безопасность, закрыть с помощью Iptables все адреса/порты, не участвующие в разговоре по Torfone?
— unknown (12/04/2014 22:16)   

Так это можно использовать и другой подходящий голосовой клиент без шифрования. Проблема только в том, что расход трафика при таком подходе возрастает примерно в 10 раз по сравнению с тем, когда шифрование правильно встроено в сам клиент.
Гость (12/04/2014 22:39)   
Извините, unknown, но нет у нас доверия к другим клиентам неизвестно кем сляпаным и на кого работающим, особенно после разгрома тов. Gegel'ем Linphone'а.
В любом случае пусть лучше будет сыроватый Torfone, зато известно, что он сделан нашим человеком для нас же, а не для какого-нибудь АНБ.
10-кратным расходом трафика нас не запугать, особенно, если это существенно повышает криптостойкость.
Поэтому, пожалйста, покритикуйте вышенабросанную схему, если есть за что, и если особых возражений нет – помогите с решением заданных в ней вопросов.
— unknown (12/04/2014 22:54)   
Под Linux подойдёт любой открытый с возможностью работать без внешнего сервера или с простым для настройки своим сервером. Даже такой кривописанный как Mumble[link93]. Или какой-нибудь другой[link94]. Вам же связь точка-точка, значит вы будете доверять соединение только тому, кто сможет логиниться к VPN.
Гость (12/04/2014 23:01)   
Да пусть хоть и под Linux, но смущает те же вопросы (сделан неизвестно кем и для кого).
Так что табличку "Comparison of VoIP software" мы видели давно, но кто подпишется под ихними продуктами?
Правильно, никто. А тов. Gegel'а, который живет на Украине, если что, найдем и поставим ему для начала... нет, не синяк, а на на вид :)
Так что хотелось бы с вашемй помощью определить оптимальное размещение OpenVPN-сервера клиента и правила iptables для данной ситуации по типу "запретить все, кроме".
— unknown (12/04/2014 23:06)   
А авторов OpenVPN и всего остального критичного софта Linux по всему свету искать будете?
Гость (12/04/2014 23:10)   
Давайте не будем распылятся и решим хотя бы эту проблему.
Поскольку решение любой проблемы в части касающейся уменьшает потенциальный риск сами знаете чего.
— gegel (13/04/2014 14:14)   
Интерес к проекту возрос. Наверное, что-то намечается :)
Gegel, заведите себе криптокошелек


BTC: 19kUeFQsh72oPzSmGKF5Wny4Jp495NBFcg
LTC: LZaogEahLPFJE5CYrCuXSroVCvHz8NowR9

Ну нужна распознавалка из голоса в текст и читалка из текста в голос.

Со вторым пунктом проблем нет, но распознавание голоса на сегодня эффективно не решено, на сколько я в курсе.

Вот в Андроиде Гугл-переводчик теперь умеет работать локально, файл порядка 150 мб на язык.

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

что идентификация по голосу наоборот улучшится?

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

у нас доверия к другим клиентам неизвестно кем сляпанный и на кого работающим, особенно после разгрома тов. Gegel'ем Linphone'а

Вы не верно меня поняли, я ничего против Linphone не имею, это совсем другое приложение и для других целей.

Можно выделить три проблемы:

– поиск нужного абонента (это может быть выполнено с помощью собственных серверов (Skype), SIP-серверов (Linphone, Jitsi, OSTN), DHT (наш ZAS и другие проекты), Tor (Torfone), I2P (пока нет) или непосредственно по доменному имени/IP-адресу (PGPFone, SpeakFreely). Беда серверных решений – возможность собирать метаданные на сервере (кто к кому когда звонит). Главная проблема, требующая сервера – проход NAT. С переходом на IPV6 все варианты кроме последнего отпадут сами по себе. Торфон делает это так: устанавливает соединение с другим абонентом посредством Tor, используя его DHT. Это соединение уже защищено и односторонне аутентифицировано. Внутри происходит обмен ключами и добавляется дополнительный слой шифрования "точка-точка". По установленному соединению передается инвайт, содержащий онион-адрес вызывающего. Вызываемый параллельно устанавливает встречное соединение с вызывающим. Голосовые пакеты дублируются в оба канала, используется тот пакет, который получен раньше. Накапливается статистика и, скажем, раз в 3 минуты (задается) более медленное соединение переустанавливается. Для работы данного механизма необходимо указать свой онион-адрес на вкладке настроек Торфона.
При желании перейти на прямое соединение используется следующий механизм: абоненты посылают запросы на любые STUN-сервера (задается на вкладке настроек) и получают ответ, где указывается их внешний IP-порт (до NAT). Т.к. STUN могут быть разные для абонентов и могут периодически меняться, то коррелировать запросы они не могут, т.е. зафиксировать факт прямого звонка от Алисы к Бобу могут только их интернет-провадеры. Затем абоненты формируют инвайты, в которых указывают свои внешние адрес:порт и обмениваются ими через Tor-соединение. Затем оба начинают слать UDP-пакеты друг другу согласно полученных инвайтов. Как только кто-то принимает корректный пакет, то тотчас начинает отправлять пакеты по адресу отправителя. Таки образом, "пробивается" NAT (кроме симметричных) и устанавливается прямое соединение. Tor-соединение поддерживается в качестве резерва, но неактивно до обратного переключения с прямого соединения на анонимное.

– оконечное шифрование. Все клиенты, которые поддерживают ZRTP (включая Торфон, в котором ранний вариант ZRTP от того же Циммермана), создают защищенное соединение. С этим сейчас проблем нет. Первичная аутентификация обычно осуществляется или голосом, или общим секретом, в следующий раз – с помощью сохраненных публичных ключей друг друга.

– анонимность (вы хотите скрыть факт разговора и адрес собеседника от всоего провайдера). Тут без Tor не обойтись. Проблема состоит в том, что Tor маршрутизирует только TCP-пакеты, а подавляющее большинство звонилок работает по UDP.
Решение: или адаптировать звонилку, переведя ее на TCP (что я и сделал), или завернуть трафик звонилки в VPN и пустить последнюю по TCP через Tor. Это реально работает (пробовал), но трудно настраиваемо, нестабильно из-за таймаутов при задержках в Tor и вызывает большой перерасход трафика. Последнее важно, т.к. существует корреляция между потоком Tor-трафика и латентностью (не знаю, из-за чего, но в определенных пределах весьма выраженная).

Поэтому выбор звонилки в первую очередь зависит от модели угроз.

слышит голос с треском и хрипением,

Подтверждаю, есть такая проблема в Wine, но, к сожалению, я не могу определить причину. Для интереса попробуйте переделанную под Tor SpeakFreely с моего сайта под Wine, отпишите результат. И за одно потестируйте нативную версию SpeakFreely под Linux[link95]

PS: Наконец-то Вы раскачали меня на порт под Linux :)
Я только что установил Linux-SpeakFreely на моей скромной Ubuntu, пришлось доустановить библиотеку
sudo apt-get install libncurses5-dev
и изменить название фукнции
rounds
в файлах \lpc10\round.c и lpc10lib.h (она не используется, но почему-то при компиляции конфликтовала с одноименной в DES). Код собрался (с кучей предупреждений, но все же), сейчас попробую соединиться с моей патченной Win32-версией в стандартном UDP-режиме. Если все будет ОК, прикручу TCP и попробую через Tor с кодеком LPC10. Если все ОК, то можно постепенно перенести все рюшечки (шифрование (+Keccak), DH (+EC25519), новые кодеки (MELP/MELPE, CODEC2, OPUS), подавитель шума, голосоменялку, дублирование цепочек для снижения латентности, переход на прямое UDP-соединение), т.е. практически все, что сегодня есть в Торфоне.
— тестерТьюринга (13/04/2014 18:12)   

Во-первых, ознакомьтесь с http://wiki.winehq.org/Sound

На игровых форумах проблемы со звуком под wine – частый предмет обсуждения. Возможно, придется доустановить или наоборот удалить какие-то пакеты. Программу можно запустить так:

$ padsp wine программа.exe

Или так:

$ aoss wine программа.exe

Не забывайте об утилите winecfg.
Гость (13/04/2014 18:37)   
Ув. тов.Gegel! Мы рады, что вы снова появились. Не пропадайте! :)
Отправил вам лайты, ловите. Надеемся, что вы продолжите свою архиполезную работу.
Пусть и не глобально по всем пожеланиям, а хотя бы косметически, для юзабельности.
Например, добавить в мануал описание всех фич, используемых в интерфейсе Torfone, и практические советы по их использованию, т.е. какие оптимальные значения следует выбирать.
Да и интерфейс бы неплохо бы перевести на русский – огромный стимул по освоению Torfone для новичков.
И прошу советов по заданным выше вопросам:

Как тут лучше поступить, где запускать OpenVPN-сервер и OpenVPN-клиент – в базовом Linux или гостевой Виндовс?
И как, если это повысит информационную безопасность, закрыть с помощью Iptables все адреса/порты, не участвующие в разговоре по Torfone?

А то тов. unknown, на которого возлагались большие надежды, вроде заинтересовался ими, но потом, к сожалению, исчез.
Кстати, почему о сих пор PGPfone.exe, а не Torfone.exe?
Гость (13/04/2014 18:59)   
Мда, читаешь все это и думаешь, насколько недальновиден официальный российский криптографический говернмент.
Что, нельзя было наскрести жалких восемь с половиной лямов за Skype? Для такого государства, как Россия, это не деньги, шелуха.
Да и в 10 раз больше стоило бы заплатить – и теперь бы не АНБ, а Россия слушала бы весь мир – обычных граждан, бизнес, наркобизнес и террористов.
Полученная информация по стоимости в тысячи раз больше уплаченных лямов.

Тов. Gegel, вас еще не пытались купить спецслужбы? ;)
Гость (13/04/2014 19:23)   
Для такого государства, как Россия, это не деньги, шелуха.

$8,500,000 не деньги даже для такого супергосударства, как Монако или Лихтенштейн ;))
Гость (13/04/2014 19:46)   


Нахрена столько?

Гугл поднимался с 100,000$.
— gegel (13/04/2014 21:28, исправлен 13/04/2014 21:41)   
Тов. Gegel, вас еще не пытались купить спецслужбы? ;)

Не-а, никто не пытался :(
Да и Торфоном, судя по гугланалитике, интересуются лишь честные люди: с r2d2, runion, pedoimperia и т.д., ну и штурмовики с разных лагерей еще.
Если покупать, то не меня, а проект, но тут есть проблема. Торфон – самодостаточная система, его безопасность зависит только от исполняемого файла и от Tor (нет сервера, который можно взять под контроль). Кроме того, не предусмотрено автоматического обновления, как в Skype или даже в хваленном Jitsi (который мало того, что под обновляемой Java, но и сам лезет на свой сервер тотчас после первого запуска).
Так что только если я начну активно петь об новой улучшенной версии или, наоборот, об страшной уязвимости, требующей немедленного обновления, значит, можете поздравить – таки купили :)


PS: SpeakFreely под Linux проверил, все функционирует ОК, как Linux-Linux, так и Linux-Win32. Чистая консоль, минимум библиотек, относительно простой код на С (всего два потока для двух направлений передачи). Сейчас разбираюсь в коде, найду время пропатчить и ввести добавочный TCP-транспорт и поддержку SOCKS5, вычищу от утечек DNS, и можно будет пробовать через Tor.
Прямое соединение можно пробовать и сейчас с нативной версией (там есть поддержка AES-128 в CBC на предрасшаренных ключах, но, похоже, без MAC – голос как аутентификаитор, Шнаер допускает такой вариант). Заодно подскажите, что можно убрать/добавить для удобства практического применения.

Гость (13/04/2014 21:57)   
SpeakFreely под Linux проверил, все функционирует ОК

Гм, это неожиданный поворот. Здесь пока обсуждался Torfonе, по нему за столь огромный топик накопленомного вопросов и ответов, сложилась определенная оценка его возможностией и некоторое доверие.
А тут бац – и SpeakFreely. "© Кто такой, зачем, почему?"
Как к нему относится, он что, защищеннее TorFone, раз вы на него переключились?
В-общем, переход непонятен, поясните, плиз.
Гость (13/04/2014 22:10)   
PS: SpeakFreely под Linux проверил, все функционирует ОК, как Linux-Linux, так и Linux-Win32. Чистая консоль, минимум библиотек, относительно простой код на С (всего два потока для двух направлений передачи).

Это, как говорится, "внушает и впечатляет". Но в самом деле, как в этом довольно старом проекте с уровнем криптозащиты? AES, TwoFish и пр. в нем вроде не замечены, имхо.
— gegel (13/04/2014 23:25, исправлен 13/04/2014 23:28)   
А тут бац – и SpeakFreely. "© Кто такой, зачем, почему?"

На сайте Торфона с самого начала существует страница, где сделан порт SpeakFreely-Win32 для работы через Tor.

Но в самом деле, как в этом довольно старом проекте с уровнем криптозащиты?

В версии 7.2-Win32, которую я патчил год назад, AES нет, только DES-56 в ECB-режиме без никаких MAC (тоесть никак). В версии 7.6, на которую я давал ссылку, есть AES-128. Но не это сейчас главное: шифрование – не проблема, я прикручу все, что пожелаете. Планируется AES-256-OCB и Keccak-SpongeWrap в качестве красивой игрушки. Ну, и ECDH25519 для периодического наложения на имеющийся предрасшаренный ключ для PFS.
Гораздо важнее другое: TCP-транспорт, кодеки и т.д. Портировать Торфон под Linux as-is – весьма геморройное занятие. Нативный PGPFone написан на С++ под VisualC с использованием специфической для Win32 MFC и развитым GUI. Существенное снижение трудозатрат – взять готовый проект под Linux (пользовательский интерфейс, работа со звуком, буферизация, интернет-сокеты) и добавить к нему код из Торфона (благо, все, добавленное мною – на С). Это и шифрование, и кодеки, и проход NAT. Можно даже один в один повторить протокол Торфона, и сделать поную обратную совместимость, хотя эта идея не особо меня впечатляет, т.к. лучше сразу создать версии под разные платформы (или даже попробовать cygwin + прицепить GUI под Win32).
Можно назвать это Linux-Тофрон (или onionphone, чтобы не драконить Роджера).
Но в любом случае C-код SpeakFreely анализировать куда проще, чем С++ код Торфона, т.о. желающим будет проще найти потенциальные баги.
Еще раз повторюсь: из SpeakFreely я хочу взять командный интерфейс и логику консоли, работу со звуком и частично с сетью. Остальное – из Торфона.
Иначе, если пытаться делать новое Linux-приложение с нуля или один в один портировать Торфон вместе с GUI, этот проект так и умрет, не родившись.

Гость (13/04/2014 23:35)   
Эхехех... :( и когда же это все будет? Обещанного завершенного юзабельного Торфона мы уже сколько ждем – полгода или год?
К тому же Torfone сегодня уже хоть как-то, но работает! С прикручеными необходимыми аесами и т.п.
Зачем тогда было вообще браться за него, если SpeakFreely, как теперь оказывается, предпочтительнее?

Хотя, конечно, если получится обновленный SpeakFreely сделать быстро, то да. Идею с более простым консольным приложением на предыдущих страницах я подавал. Вопрос – насколько быстро?
— unknown (13/04/2014 23:38)   
Вот поэтому качественный кроссплатформенный сишный код сначала делают на Linux, с прицелом на кроссплатформенность в самой начальной стадии проектирования. Случаи с джавой не рассматриваем.
— gegel (14/04/2014 00:21)   
Обещанного завершенного юзабельного Торфона мы уже сколько ждем – полгода или год?

Это и будет Торфон. Лучше бы я не упоминл о SpeakFreely, молча взяв оттуда парсер командной строки и кроссплатформенную звуковую библиотеку. Все остальное все равно от Торфона прилепится. А GUI под Linux никому тут не интересно.

Вот поэтому качественный кроссплатформенный сишный код сначала делают на Linux

Согласен на все 100%, со всеми новыми проектами так и делаю. Но Торфон вообще изначально не планировался как проект: я хотел просто показать возможность передачи голоса через Tor. Взял первое попавшееся под руку приложение, наскоро перевел на TCP и увеличил голосовой буфер. К сожалению, попался PGPFone, жестко заточенный под Win32.
Гость (14/04/2014 00:28)   
Вот поэтому качественный кроссплатформенный сишный код сначала делают на Linux,.....

Да кто ж с этим спорит. Но для того, чтобы что-то реальное сделать, нужно либо достойную оплату получать, либо жить в сытой стране, где нет никаких забот и можно спокойно заняться хобби, Voice over TOR, например :)

Gegel, давайте попробуем пообщаться в приватке https://fastzone.net, я там зарегился под ником Liteminer

unknown, вы все-таки не хотите помочь общему делу, ответив на заданные вам выше вопросы?
Гость (14/04/2014 00:42)   
А GUI под Linux никому тут не интересно.

Вот именно! Одни ненужные проблемы.
Гость (14/04/2014 07:07)   

Можете закидать меня камнями, но, чисто на мой неискушённый взгляд, есть штук 5 проектов, которые сейчас более важны для безопасности, чем шифрованная голосовая болтовня. Академикам лучше вкладываться в них.

Ещё в начале этого треда высказывались аргументы, что голосовая связь несовместима с анонимностью органически, и даже после всех страховок безопасности она всё равно будет хуже шифрованного IM. Как минимум, одна из неустранимых проблем — то, что голос могут прослушать локально, и это намного проще, чем ловить акустические или электромагнитные сигналы с ПК/клавиатуры/монитора.


А что с ней[link98] сейчас не так? На ограниченных группах[link99] работает прекрасно.


Есть рекомендация общего характера: если используется виртуальная машина, то прикладной софт нужно запускать в гостевой ОС, а рулить трафиком (и запускать сетевые средства анонимизации) в хостовой ОС, чтобы критичные для безопасности и анонимности вещи выполнялись не в той же гостевой ОС, где и потенциально уязвимые программы. Это самый простой вариант. Есть сложнее: сделать несколько гостевых ОС, в одной — только программы для конечного использования, в другой — только сетевая инфраструктера (Tor, VPN, файерволл).


Риск получить ошибку в проекте из-за невнимательности или недостаточной компетентности разработчика (без всякого АНБ[link102]), которая потом ещё и не будет исправлена из-за того, что никто не читает её код, намного выше риска получить злонамеренный бэкдор. Это если речь идёт о программах с открытым исходным кодом.


Да, в основном распространено именно такое мнение, хотя ЦРТ храбрится и пиарится изо всех сил. В любом случае, голосовой трафик пишется и складируется. Может быть, лет через 30, когда технологии позволят распознавать голос не хуже человека, весь архив голосовой связи будет «оцифрован» (превращён в текст), каталогизирован, а голоса говорящих распознаны. Сначала к архиву получат доступ избранные, типа полицейских, потом маркетологи, потом историки, а потом все остальные. Можно будет прийти в Ленинку зайти на сайт и скачать полное собрание текстов разговоров (по телефону и другим средствам недостаточно защищённой связи) любого человека за всю его жизнь. Радуйтесь наступающему цифровому будущему, развиваются ведь не только средства шифрования и анонимности, но и средства слежки и анализа.


Не повторяйте ошибок[link104] предыдущих поколений, ставьте Debian. Он ничем не сложнее, зато безопаснее.


Да не связывайтесь вы с curses-интерфейсами! Есть традиционный промышленный подход — командная строка + конфиги с пояснениями к опциям. onionphone --port NUMBER --call USER_ADDRESS --config-file /path/to/config — что-нибудь в духе этого. В домашней директории ~/.onionphone можно хранить не только конфиги, но и ключи. Любую опцию конфига по возможности должно быть возможным переопределить в командной строке при запуске программы. По такому принципу работают тысячи программ, включая GnuPG и climm. Интерфейс у последнего вполне удобен для общения с абонентами, его можно было бы и для звонков приспособить.


А кредентиалсы не подписаны. На pgpru есть возможность подписывать комментарии через gpg -sa. Почему бы этим не воспользоваться?


Но даже он не достаточно безопасен[link107] (на примере пранковских записей и всяких TV-шоу все могли в этом убедиться).


Эллиптика — минное поле, не стоит туда лезть мелким проектам. Даже в GnuPG-ключах рекомендуют придерживаться RSA, хотя эллиптика там есть. Т.е. даже касаемо проекта такой тотальной распространённости нет уверенности, что в его реализации эллиптики всё ОК, и это нигде потом не аукнется.


Самоподписанный сертификат. После добавления в исключения получаем

Forbidden

You don't have permission to access / on this server.
Гость (14/04/2014 07:31)   

Примерно так:

  1. Отключить IPv6[link108] [Важно! Файерволлом он не блокируется].

  1. Удалить утилиту ping [опционально]. Ни в коем случае не разрешать ICMP в файерволле. ICMP всегда посылается с правами рута, какой бы юзер ни был указан в качестве отправителя. Не забывайте об этом.

  1. С учётом требований конкретного софта отредактировать под себя следующий скрипт и выполнить его:
    #!/bin/sh
    # iptables script
     
    # Сброс ранее загруженных правил:
    iptables -F ;
     
    # Установка политик:
    iptables -P INPUT DROP ;
    iptables -P OUTPUT DROP ;
    iptables -P FORWARD DROP ;
     
    # На машине используются только 2 сетевых интерфейса: loopback (lo) и eth0.
    # Трафик уже созданных соединений идёт без фильтрации:
    iptables -A INPUT -i lo -m state --state ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT
     
    # ФИЛЬТРАЦИЯ НА LOOPBACK-ИНТЕРФЕЙСЕ (ЛОКАЛЬНЫЕ ПАКЕТЫ)
    # (Если не нужно, всё закомментировать; если нужно, отредактировать под себя):
     
        # Разрешить софту, запущенному от имени юзера USER1,
        # инициировать соединение с адресом 127.0.0.1:1111 по TCP:
        iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
                    -m owner --uid-owner USER1 -m tcp --dport 1111 -j ACCEPT
        # Разрешить принимать TCP-пакеты на адрес 127.0.0.1:1111:
        iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
                    -m tcp --dport 1111 -j ACCEPT
     
        # Разрешить софту, запущенному от имени юзера USER2,
        # инициировать соединение с адресом 127.0.0.1:2222 по UDP:
        iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p udp \
                    -m owner --uid-owner USER2 -m udp --dport 2222 -j ACCEPT
        # Разрешить принимать UDP-пакеты на адрес 127.0.0.1:2222:
        iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p udp \
                    -m udp --dport 2222 -j ACCEPT
     
    # ФИЛЬТРАЦИЯ НА eth0-ИНТЕРФЕЙСЕ (ВНЕШНИЕ ПАКЕТЫ)
    # (Если не нужно, всё закомментировать; если нужно, отредактировать под себя):
     
      # ИНИЦИИРУЕМЫЕ НАМИ СОЕДИНЕНИЯ НАРУЖУ:
     
        # Разрешить софту, запущенному от имени юзера USER3,
        # инициировать соединение с адресом X.X.X.X:3333 по TCP:
        iptables -A OUTPUT -o eth0 -s ВАШ_IP_НА_eth0 -d X.X.X.X -p tcp \
                    -m owner --uid-owner USER3 -m tcp --dport 3333 -j ACCEPT
     
        # Разрешить софту, запущенному от имени юзера USER4,
        # инициировать соединение с адресом X.X.X.X:4444 по UDP:
        iptables -A OUTPUT -o eth0 -s ВАШ_IP_НА_eth0 -d X.X.X.X -p udp \
                    -m owner --uid-owner USER4 -m udp --dport 4444 -j ACCEPT
     
      # ПОДКЛЮЧЕНИЕ К НАМ ИЗВНЕ (ОПАСНО ДЛЯ АНОНИМНОСТИ И БЕЗОПАСНОСТИ):
     
        # Разрешить хосту X.X.X.X инициировать соединение с нашим адресом
        # ВАШ_IP_НА_eth0:5555 по TCP:
        iptables -A INPUT -i eth0 -s X.X.X.X -d ВАШ_IP_на_eth0 -p tcp \
                    -m tcp --dport 5555 -j ACCEPT
     
        # Разрешить хосту X.X.X.X инициировать соединение с нашим адресом
        # ВАШ_IP_НА_eth0:6666 по UDP:
        iptables -A INPUT -i eth0 -s X.X.X.X -d ВАШ_IP_на_eth0 -p udp \
                    -m udp --dport 6666 -j ACCEPT
    Если где-то что-то нужно разрешить для всех, конкретизирующий параметр (например, адрес хоста или порт) просто не указывается. Вначале ESTABLISHED, возможно, нужно заменить на RELATED,ESTABLISHED, но я не уверен. Эти правила — на ваш страх и риск, т.к. я не специалист по iptables. Правильно внимательно прочитал, но это не исключает ошибок и отпечаток, и нажимую я их не тестировал.

    Последние обсуждения того, как правильно писать безопасные правила для iptables, были тут[link109]. Низкоуровневость iptables, вытекающая из этого требовательность внимательности к мелочам, большой объём текста даже для самой минимальной политики фильтрации — основные факты, из-за которых считается, что в Linux нормального файерволла нет. Интеграции iptables с окружением тоже нет (поэтому всё делается в виде самописных скриптов). На старте системы правила могут не работать[link110]. Стандартных способов загрузки правил тоже нет: каждый их суёт туда, куда вздумается, в стартовых скриптах. Поддержки owner для входящих пакетов в iptables также нет. iptables — говно, ненавижу^Wне используйте iptables. Там, где можно, не используйте iptables, используйте pf. У последнего нет перечисленых недостатков, правила удобочитаемые человеком, а писать их легко, приятно и безопасно[link111].*

    Проверка загруженных правил — команда iptables-save.

*По ссылке пример намного более сложных правил, чем в этой рыбе-заготовке. Там несколько внешних интерфейсов + форвардинг, но при всём этом они легче читаются, чем вышеприведённая «ассемблерная» мешанина iptables.
— unknown (14/04/2014 10:27, исправлен 14/04/2014 10:33)   

Я обсуждал на примере разработки торфона, что нехорошо лепить протоколы на коленке. Мне было интересно выяснить (думаю, что и Gegel'ю тоже), что протоколы с отрицаемой аутентификацией — гораздо более сложная вещь, чем кажется. И ведущими теоретиками проблема до сих пор не решена.


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



Сама такая возможность многим тоже интересна, как концепт. Я слежу за её развитием, но никакой конкретный проект пока практического интереса не вызывает. Ни в каком «общем деле» я не участвую. Отвечаю на те вопросы, которые лично считаю интересными со своей субъективной точки зрения и не более того.

Гость (15/04/2014 06:58)   

Описка. Следует читать не "по голосу" а "по стилю". Речь идёт о распознавании автоматически озвученного текста, полученного из туда-сюда перевода распознанной в текст речи.


Чем вам этот[link112] случай не люб?
Гость (15/04/2014 07:00)   
s/распознавании/идентификации/
Гость (15/04/2014 13:29)   

Мне кажется, живая речь содержит намного больше уникальных паттернов, чем письменная, как минимум, потому, что «поправить» уже произнесённое нельзя. А раз даже авторство письменной речи успешно определяется[link113] стилометрией, то что говорить про устную...
Гость (15/04/2014 20:15)   
под себя следующий скрипт и выполнить его:
а что скажите по поводу сайтов, которые генерируют правила для iptables? еще есть надстройка arno для iptables, которая немного помогает, а новичкам так много, произвести настройку.
Гость (15/04/2014 21:11)   
1.
Отключить IPv6 [Важно! Файерволлом он не блокируется].

Оччень любопытно! А для чего тогда конфиг ip6tables ?


Там, где можно, не используйте iptables, используйте pf. У последнего нет перечисленых недостатков, правила удобочитаемые человеком, а писать их легко, приятно и безопасно.*

Ага. И в каком Линуксе он присутствует?
— unknown (16/04/2014 09:47, исправлен 16/04/2014 09:48)   

Да осильте вы уж наконец iptables, он не такой страшный, как его тут описывают. Вам же не на уровне провайдера трафиком рулить. Не все опции нужны, а то, что нужно, нормально описывается и скриптуется.

Гость (16/04/2014 20:19)   

Большая часть людей не знает о его существовании. Они настраивают iptables и думают, что на этом всё. Те, кто знают про ip6tables, всё равно предпочитают отключить ipv6 на уровне ядра, потому что им самим ipv6 не нужен. Его проще отключить, чем фильтровать.


В линуксе под названием BSD, причём во всех BSD и их деривативах вплоть до Mac OS X и Debian GNU/kFreeBSD.
Гость (17/04/2014 01:33)   

Ограниченный порт OpenBSD PF есть даже под винду [1][link114], [2][link115].


В Linux нет PF, а поставить BSD не всегда возможно хотя бы потому, что у неё плоховато с поддержкой сколь-нибудь актуального железа. Я на одном ноутбуке попробвал — а там ни сетевая не поддерживается, ни иксы не стартуют. В свежем Linux, хоть и с глюками, работает и то и то, но есть какие-то проблемы с микрофоном, и ядро не видит кардридер (это ещё ладно, но микрофон бывает нужен). И если проблемы с сетевой в принципе можно решить через внешнюю USB-сетевую, то что делать исксами — вообще непонятно. Правда, BSD можно установить в виртуалку (теоретически — даже как хостовую ОС, если видеокарту и сетевую пробросить в Linux, запущенный, как гостевая ОС) и оттуда рулить трафиком, но это непростые извращения.
Гость (17/04/2014 01:59)   
> В линуксе под названием BSD, причём во всех BSD и их деривативах вплоть до Mac OS X

Тогда для начала тебе стоит сначала изучить, что такое BSD и что такое Линуксы
Гость (17/04/2014 04:08)   
Извините, забыл тег irony добавить. Думал, с юмором у вас дела лучше.
Гость (17/04/2014 08:41)   
на сотовый через торфон можно звонить?
Гость (17/04/2014 17:02)   
Нет.
Гость (17/04/2014 18:25)   
Те, кто знают про ip6tables, всё равно предпочитают отключить ipv6 на уровне ядра, потому что им самим ipv6 не нужен.

Чтобы отключить IPv6 – достаточно отключить сервис ip6tables ?
— unknown (17/04/2014 21:15, исправлен 17/04/2014 21:27)   

это файрволл, управляющий ipv6. Если ipv6 у вас будет отключен[link108], то и этот файрволл настраивать не понадобится.

Гость (17/04/2014 23:29)   
Я обычно его отключаю так:

не знаю, лучше это или хуже.

Куда-то тов.Gegel потерялся... Неужто под шумок новый, консольный Torfone сооружает? :))
— unknown (18/04/2014 09:35, исправлен 18/04/2014 09:37)   

Вы уверены, что при отключении скрипта, стартующего файрволл для ip6tables, отключается сам ipv6-протокол? Как вы это проверяли?


Маловероятно, что это так, логичнее полагать, что протокол остаётся включенным, но неприкрытым никаким файрволлом, оставляя свободными возможности для утечек.


Почитайте, что типа этого[link117] хотя бы. Если ipv6 запретить на уровне старта ядра, остальные компоненты работы системы, предназначенные для работы с IPv6, лучше даже не выключать, а удалить за ненадобностью.

Гость (18/04/2014 14:33)   
такой[link118] алгоритм подойдет?
Гость (18/04/2014 14:40)   
вариант отключения через grub http://softnastroy.com/content.....i-ubuntu-server.html[link119]
Гость (18/04/2014 16:13)   
Вы уверены, что при отключении скрипта, стартующего файрволл для ip6tables, отключается сам ipv6-протокол? Как вы это проверяли?

Честно – никак не проверял, просто надеялся, что раз сервис отключаю, то и IPv6 по умолчанию тоже, так сказать, банится.
Даже не подозрввал, что отключение IPv6 требует таких особых действий.
Выходит, был неправ?

...остальные компоненты работы системы, предназначенные для работы с IPv6, лучше даже не выключать, а удалить за ненадобностью.

Я бы с радостью, но как? Ведь эта зараза – сервис ip6tables – удаляется только вместе с 4-й версией iptables.
— unknown (18/04/2014 16:41, исправлен 18/04/2014 16:44)   

Действительно, они в одном пакете, так что по отдельности штатно не удалить, да и смысла получается нет. Но ip(6)tables не обеспечивают работу протокола, они только управляют фильтрацией уже включенного (если он всё таки есть и включен). Вообще, это уже оффтопик в теме. На сайте приведено масса способов отключения IPv6, да и на обычном линуксовом сайте или в мануале к своему дистрибутиву найти конкретный и наиболее подходящий вам ответ проще. И результаты действий надо тщательно проверять. И не пользуйтесь его конфигами. Изучите всю систему инициализации сети с потрохами, чтобы написать свой скрипт управления файрволлом вместо неудобного ip(6)tables-save и ip(6)tables-restore. Прострелить себе при этом ногу — очень просто, поэтому опять же, не забывайте про тщательные проверки.

Гость (19/04/2014 02:27)   

У меня IPv6 отключен через grub, как советовал unknown. Посмотрел, какая будет реакция на попытку загрузить его (есть в статье):
# modprobe -v ipv6
# lsmod | grep v6
И тишина. Получается, что все эти свистопляски с маппингом его на /bin/true в конфигах — преумножение сущеностей без необходимости. Правильно ли я понимаю, что если IPv6 выключен опцией к ядру, то это равносильно чуть ли ни SELinux? Т.е. никаким образом постфактум подгрузить IPv6 нельзя?


Зачем пытаться вручную отключить IPv6 в несметном количестве сервисов? В одном-двух свежеинсталлированных вы это сделать забудете, и вся методика станет очередной полумерой. Смысл — отключить в одном месте, но с глобальными последствиями, чтобы после этого даже те сервисы, которые могут работать с IPv6, после этого не смогли. Там предлагают отключать через sysctl. Вот не знаю почему, но лично у меня этот метод не работал[link120]. Я проверял.


В мире жопоруких кодеров надо самому всё перепроверять. Ошибку сделают они, а сидеть придётся вам, если не повезёт.

К unknown'у: предлагаю комментарий /comment78555[link121], затем комментарии от /comment78600[link122] и до /comment78631[link123] включительно, а также от /comment78646[link124] и до конца треда включительно перенести в более подходящую тему[link125], где как раз шло обсуждение и того, как правила iptables писать, и того, как IPv6 выключать. В указанных диапазонах комментриев практически ничего нет про TorFone. Все комменты по теме я исключил из списка на перенос.
Гость (19/04/2014 16:23)   


Сделайте человеческий порт на линукс, github.com, там сейчас, иесли чо, вся планета шарит сырцы таких проектов.

Очень будет здорово !
Гость (19/04/2014 16:24)   
XP – Must Die!
Гость (19/04/2014 16:44)   

Уже died, полторы недели как...
Но её призрак будет бродить по сети и железу еще не один год.
Гость (19/04/2014 21:08)   


Wine или CrossOver не поможет?
Гость (19/04/2014 21:10)   
XP – Must Die!
Так и 98 помер давно. Даже тень не прободит. Но упоминается еще 7 и 8 )
Гость (19/04/2014 21:44)   


1-2 не важно, где Вы сейчас 95 или 98 найдете? А openbsd 3.9, а линукс 2.4?



Нет.

Порт с сырцов Visual C 6 в GNU environment будет лишь на пользу проекту, и обеспечит долгое существование.

Порт, порт и ещё раз порт. И в github всё сложите, не поленитесь. Вам не нужна свежая кровь в проекте?
Гость (19/04/2014 23:39)   

Раритеты-то найти проблем не составит. Вот только их актуальность в 2014?
ХР — на мой взгляд, лучшее, что вышло в свет из застенок Майкрософта. По ощущениям, на фоне остальных продуктов, начиная с тех же 95 или 98 и заканчивая 7 и 8.
ХР актуальна уже более 10 лет. И думаю будет актуальна еще, если не столько же, то как минимум несколько лет. В зависимости от софта под неё.
Мне трудно её сравнивать с 7 или 8, по субъективным ощущениям и то, и другое отстой, хоть и не пользовался, но... даже желания не возникало, не говоря о потребности, в отличие от ХР.
Гость (20/04/2014 19:51)   
Просто в XP наиболее оптимальный баланс между тем, что реально нужно пользователям, и извращенными фантазиями M$, силящихся показать всему миру, что "форточки таки развиваются".
Гость (22/04/2014 02:21)   
XP, вышедшая, кажется, в 2003-ем, на тот момент воспринималась как «всё испохабили, и теперь непонятно, где что найти» на фоне классических Windows 2000 Server и Windows 2003 Server. XP была принципиально «Home Edition», не поддерживала многопользовательский режим искуственным образом (требовался нелегальный бинарных патч-хак, чтобы разблокировать многопользовательский режим). Если кто-то был залогинен на ПК, и ты в этот же момент логинился к нему по сети, первый юзер внезапно вылетал.
— gegel (22/04/2014 22:13, исправлен 22/04/2014 22:16)   
ХР — на мой взгляд, лучшее, что вышло в свет из застенок Майкрософта.

Поддерживаю. И 98 – тоже весьма неплохой вариант: разрешен прямой доступ к физическим портам ввода-вывода. Embedded-разработчику это часто нужно для написания всяких утилит для отладки проектов на микроконтроллерах: я обычно в борландовском С++ билдере (среда программирования для домохозяек) пишу короткие ассемблерные вставки с быстрым доступом к физическим портам. Вообще для подавляющего большинства удобство всегда было важнее безопасности, поэтому я все же предпочитаю Windows.


Особенно прочувствовал это в последние дни, пока портировал Торфон под линукс. К счастью, с положительным результатом: пропатчил код оригинальной SpeakFreely for Unix[link126], теперь Linux-вариант совместим с ранее пропатченной мною Win32-версией[link127] и уже работает через Tor под моей Ubuntu (думаю, и другими nix). Чуть зашлифую, немного потестирую код и выложу на своем сайте. Т.к. Tor обеспечивает оконечное шифрование к HS, то даже в таком виде ее можно использовать для защищенной связи, не смотря на слабость родной криптографии.
Превращение в задуманный OnionPhone планирую осуществить в три этапа:


На первом добавить три варианта крипто (стандартый – AES256-OCB, альтернативный – Serpent128+HMAC256 и модерн Keccak-SpongeWrap), CSPRNG, а также провести аудит кода на предмет крипто-надежности.


На втором добавить кодеки, поддерживаемые TorFone (Opus, Codec2, MELPE), вокодер и шумоподавитель.


На третьем добавить возможность переключения с Tor на прямое UDP-соединение с проходом NAT (используя Tor в качестве SIP), а также оптимизацию Tor-латентности за счет смены цепочек.


Будем надеяться, что все задуманное будет реализовано. Советы и пожелания весьма приветствуются.

Гость (23/04/2014 02:19)   
Вообще для подавляющего большинства удобство всегда было важнее безопасности, поэтому я все же предпочитаю Windows.

Подавляющее большинство на этом сайте предпочитает безопасность – основной мотив, ради которого мы здесь собрались.



Не пойму, зачем этот зоопарк – для количества? Так оно вряд ли кому надо.
Лучше оставьте минимум методов и протоколов, но наиболее востребованных и с наилучшими характеристиками.



А можно это сделать самым первым вариантом? Жду- не дождусь, когда заработает надежное прямое соединение!



Не взлетит. В том смысле, что бренд OnionPhone неудачен, плохо выговаривается и звучит гораздо хуже, чем TorFone.
Поменяйте эти названия местами, что ли. Или назовите TorFone Pro или еще как-то, но OnionPhone никуда не годится.
— ZAS (23/04/2014 03:35)   
ХР — на мой взгляд, лучшее, что вышло в свет из застенок Майкрософта. По ощущениям, на фоне остальных продуктов, начиная с тех же 95 или 98 и заканчивая 7 и 8.


К сожалению, XP не умеет ряда полезных вещей, которые появились в W7/W8.
Например: попробуйте поднять телефонию в виртуальной машине XP.
XP неплохая и скромная по ресурсам система по сравнению с 7 и особенно 8; однако чем дальше, тем больше требуется усилий, чтобы тянуть совместимость.
— gegel (23/04/2014 10:01)   
Лучше оставьте минимум методов и протоколов, но наиболее востребованных и с наилучшими характеристиками.


Мне кажется, это и есть необходимый минимум. Я не сторонник жесткого ограничения пользователя в выборе. Чтобы не конфузить обычных пользователей, установки по умолчанию будут определены в ini-файле.

Жду- не дождусь, когда заработает надежное прямое соединение!


Прямое соединение доступно без всяких патчей: SpeakFreely for UNIX слушает по умолчанию на UDP-портах 2074 и 2075, их необходимо пробросить в роутере для приема входящих звонков. Можно выбрать два соседние порты, изменив параметр 'INTERNET_PORT' в MakeFile и собрав версию под себя. При выполнении звонка вводите IP-адрес или доменное имя абонента. Возможно использовать PGP/GPG для автоматического согласования ключей (я пока не изучал этот фрагмент кода, но, думаю, авторы внимательно отнеслись к безопасности). Смотрите документацию на SpeakFreely.
То, о чем я писал выше, подразумевает использование Tor для первичного поиска абонента средствами TorChat и прохода NAT без ручного проброса портов, а также для согласования ключей (PFS) под прикрытием Tor (т.е. использование Tor вместо SIP-сервера: без регистрации и сбора метаданных).

Или назовите TorFone Pro
Роджер опять будет недоволен.


Кстати, вопрос по ходу: какой вариант TorChat лучше использовать в Linux?
Гость (23/04/2014 10:40)   

Вы — большинство? Читали бессмертное[link128]? Windows (а также Ubuntu и оконный интерфейс, в частности) не имеют ничего общего ни с удобством, ни с безопасностью. Их фишка — низкий порог вхождения для тех, кто привык к оконному интерфейсу, не более того.


Не имя красит продукт, а продукт имя. С учётом завязки на TorChat это вполне нормальное и естественное имя.


Винда головного мозга — это диагноз.


А что, их несколько? Если нет особенностей, я бы взял последнюю стабильную версию (это же верно и для любого другого продукта).
— unknown (23/04/2014 11:35)   
Про торчат[link129].
— SATtva (23/04/2014 12:43)   
Лучше оставьте минимум методов и протоколов, но наиболее востребованных и с наилучшими характеристиками.

Мне кажется, это и есть необходимый минимум.

There is only one mode and it is secure. ©
Гость (23/04/2014 12:45)   

Альтернатив у него пока нет. Впрочем, тот минимум коммуникаций, который нужен gegel'ю, наверно, можно получить и без всяких TorChat'ов — достатоно написать свой небольшой протокол для взаимодействия скрытых сервисов.
— gegel (23/04/2014 20:34, исправлен 23/04/2014 20:45)   
Вы — большинство?

Маскируюсь :) Но я привык к оконному интерфейсу, и ценю те удобства, которые он предоставляет.


тот минимум коммуникаций, который нужен gegel'ю, наверно, можно получить и без всяких TorChat'ов

Собственно, никакой минимум, кроме Tor, и не нужен: Торфон подключается к SOCKS5-порту Tor непосредственно. TorChat работает независимо параллельно через тот же Tor-HS и интересен в двух аспектах:


1. TorChat обеспечивает взаимную аутентификацию (по онион-адресам). Если на ваш Торфон кто-то звонит, вы понятия не имеете, кто это. Если вам кто-то пишет в TorChat, вы уверены, что это именно тот адрес, который отображается в контактах. В разных ситуациях и то, и другое может быть как полезно, так и нет.


Сам по себе протокол TorChat очень простой: в начале вызывающий подключается к скрытому сервису вызываемого и открыто передает ему свой онион-адрес. Сообщение маршрутизируется средствами Tor строго по назначению, и информация шифруется публичным ключем HS получателя (также средствами Tor), только получатель может ее прочитать.


Вызываемый создает параллельное соединение к HS вызывающего и передает ему nonce по вновь созданному каналу.


Вызывающий возвращает полученный nonce по первичному каналу. Т.е. это в точности протокол Abadi. Далее абоненты отсылают сообщения каждый по созданному им же каналу без всякого дополнительного шифрования (Tor сам шифрует их публичными ключами HS получателей).


Кстати, Торфон неявно делает то же в случае использования режима дублирования цепочек.
Это можно без проблем реализовать в течение получаса, или даже в точности повторить синтаксис протокола TorChat, инкапсулировав его в Торфон.


Я не вникал подробно в протокол Tor, и не могу сказать, как в данном случае обстоит дело с PFS и тем более с отрицаемостью в TorChat: если позже злоумышленник получит доступ к файлу private_key в папке hidden_service получателя, сможет ли он прочитать ранее записанные сообщения, или же внутри канала производится еще и DH (т.е. используются сеансовые ключи). Но это проблемы Tor, а не TorChat.


2. И основное, что меня склоняет к использованию Linux-Торфона совместно с TorChat: возможность определения он-лайн присутствия контактов с готовым графическим интерфейсом. Конечно, можно реализовать это и на С, но вылепить вывод в консоли – это как секс стоя в гамаке, тем более при моем положительном отношении к оконному интерфейсу.

Гость (24/04/2014 01:00)   
какой вариант TorChat лучше использовать
А можно без всяких торчатов? Мне не нужна эта наркоманская хрень, мне нужен аналог скайпа. Зависимость от сторонних программ – большой минус.
Гость (24/04/2014 01:04)   
Крик души: Gegel, ну дайте хоть что-нибудь, обеспечивающее наиболее надежуную высокую степень безопасности! :-)
Начните с консоли, окна/рюшечки можно и потом прикрутить.

Кстати, не холивар: начинал с Доса, т.е. с консоли, потом засосала окошечная Винда, после которой очень-очень долго перепривыкал снова к консоли, теперь уже в Линуксе.
Вывод – среди этих интерфейсов бессмысленно определять лучшего, каждый из них хорош под свою задачу.
Например, ведь никто не будет утверждать, что рисовать в Bash удобнее, чем в Gimp? :)) И наоборот.
Гость (24/04/2014 01:06)   

Угу. И дело даже не только в этом – как, т.е. по каналу скрытно передать собеседнику адреса полученных скрытых сервисов?
— unknown (24/04/2014 09:42)   

Private_key используется только для аутентификации перед клиентом и директориями скрытых сервисов. Для шифрования используется сеансовый DH с PFS. Так что ранее записанный трафик при знании private_key расшифровать невозможно.
Гость (24/04/2014 14:54)   

«... при моем положительном отношении к двупальцевому методу набора на клавиатуре против десятипальцевого».
No comments...
Гость (24/04/2014 20:27)   

... и, как следствие, массовость, является критичным при угрозе профилирования.
Гость (24/04/2014 20:30)   

Так исходники открыты – форкайте под свой вкус всеми десятью вашими пальцами! :)
— gegel (01/05/2014 14:02, исправлен 01/05/2014 14:11)   

Как и обещал, адаптировал Unix-версию SpeakFrealy7.6[link95] для работы через TCP и Tor. Бинарные файлы с поддержкой TCP/SOCKS5 (с сайта Торфона) в sf76_01a.tar.gz[link130], исходники (чистый С) в sf76_01a_src.tar.gz[link131]
Пока ссылки выложил эксклюзивно только на форуме, так сказать, для внутреннего тестирования.


Тестирование: распаковываем архив в домашний каталог, работаем из консоли.
Программа работает с ALSA, использует устройства plughw:0,0. Если надо по другому, сразу меняем в файле alsacf.
(также можно перекомпилировать под старый OSS, тестировано на Ubuntu).


Запускаем ./sflaunch, жмем ввод, и еще раз. Если все ОК, слышим свой голос (loopback через localhost).
Если получаем ошибку (так было на DebianLiveCD), открываем файл alsacf и комментируем # первую строку (там размер чанка и их к-во в буфере). После комментирования система сама выбирает значение, и оно будет выведено в консоль. Если ОК, то меняем в первой строке на значения по умолчанию и убираем комент. Или можно поиграть с величинами, рекомендации ниже в фале alsacf.


Программа слушает порт 17447 на всех доступных интерфейсах (этот порт по UDP/TCP надо пробросить в роутере для возможности приема прямых соединений по IP), прокси установлен на 127.0.0.1:9150 (последний TBB). Если не так, меняем в файле spfrc.


Для запуска используем ./start, в нем прописана командная строка запуска с опциями. Используется кодек LPC10, включен VOX, компенсация дрожания 0.5 сек. Если надо по другому, меняем. Краткое описание опций ниже в файле start.


После запуска программа готова принимать входящие как по TCP (совместима с моей версией SpeakFrealy_7.2_TCP[link127], кроме кодека CELP), так и по UDP (полностью совместима с версиями SpeakFrealy_7.6_Win32[link132] и SpeakFrealy_7.6_UNIX[link133]).


Для выполнения исходящего звонка по UDP (совместимо с оригинальными версиями) вводим доменное имя или IP-адрес.
Для выполнения исходящего звонка по TCP вводим доменное имя или IP-адрес с символом '$' в начале.
Для выполнения исходящего звонка через Tor вводим доменное имя или IP-адрес или onion-адрес (с суффиксом .onion) с символом '!' в начале.


Для приема входящего звонка жмем ввод. Во время разговора используем ввод для включения/отключения микрофона (MUTE). Можно использовать PTT-режим удержанием клавиши пробела. Для завершения звонка, а также для завершения сеанса после завершения звонка другой стороной жмем Esc. Для входа в режим чата жмем точку. Выход из программы – Ctrl+C.


Примечания:
– собирал на Ubuntu 10.04 i386, gcc 4.4.3. Требует libsound2-dev, остальное – по умолчанию. На 64-битных платформах не собирается, но бинарники работают. Тестировал на Ubuntu и DebianLiveCD. Использовал последний TBB, в файл torrc добавил скрытый сервис на порт 17447 (надеюсь, это не вызовет затруднений, если что – опишу подробнее). На Tails, к сожалению, пока не работает, т.к. я не блокировал UDP-сокеты для совместимости с оригинальной SpeakFrealy, поэтому при соксификации генерируется ошибка. Исправлю в OnionPhone.
– код вроде вычистил на предмет утечек, внешним снифером проверил. Но пока не гарантирую, это ответственный момент, надо еще погонять в разных режимах.
– шифрование в данной версии AES, IDEA, DES, есть возможность использования GPG для согласования сеансового ключа. В реализацию я не вникал, все равно буду прикручивать свое. При работе со скрытыми сервисами Tor это не важно, т.к. Tor обеспечивает оконечное шифрование и PFS.
– набор кодеков остался из оригинальной версии: GSM, CELP, LPC и LPC10. Наверное, для связи через Tor лучшим будет LPC10. Это первый низкобитрейтный (2400 бит/с) синтезирующий кодек, анализирующий голос в описатели на этапе кодирования и затем синтезирующий голос по описателям на этапе декодирования. Т.к. алгоритм старый и малотребовательный к ресурсам, то анализ не очень аккуратный, из-за чего голос звучит крайне неественно (но достаточно разборчиво). В нашем случае это может быть плюсом, т.к эти же описатели используются для голосовой идентификации, и чем они грубее, тем хуже идентификация. Собственно, вокодер Торфона использует этот же алгоритм (LPC), но целенаправленно манипулирует описателями после анализа исходного голоса.


ПС: надеюсь, я не зря потратил время, и хоть кто-нибудь попробует, буду рад услышать замечания и пожелания. Если будет интерес, то перейдем к постепенному превращению данного патча SpeakFrealy в новый OnionPhone.

Гость (01/05/2014 18:37)   
@gegel, А почему не работает с 64битными?

Выложи исходники на github. Что бы инструкция выглядела так:



А Ваши эти '!', '$' вначале – это плохо. Там что, нет возможности определить, ip addr/или доменное имя/или у доменного имени суфикс .onion?

Как torchat сделан все видели, там в коробке маленький Tor, сразу запиливается в него, и не нужны никакие слушания на raw ip, с пробросами через router.
Гость (01/05/2014 18:56)   
@gegel, а что думаете о chatroulette?

Завертеть на Вашей шарманке, такую же прикалюху в Tor-сети.

Придётся вероятно отдельную башню поднимать для того, что бы она индексировала тех кто on-line.

Но зато, какой ажиотаж будет. Стелс-видео-рулет-чат.

Правда, ждёт Вас там такое же цунами из педафилов, как и в TorChat-е. Но кнопочку `ignore` можно допилить.
— gegel (01/05/2014 19:53, исправлен 01/05/2014 19:59)   
А почему не работает с 64битными

Скомпилированный бинар работает. При компиляции на 64 бит-платформе (сам не пробовал, с чужих слов) собирается, но генерирует адресные ошибки в библиотеках. Если надо, разберемся. Но не на этом этапе.


Выложи исходники на github

Выложу, конечно. Просто это первая сырая альфа, выложил тут для узкого круга. Пока попробуйте бинарник (хоть на LiveCD), прежде чем "причесывать" проект, надо хоть немного убедиться в его адекватности.


А Ваши эти '!', '$' вначале – это плохо. Там что, нет возможности определить, ip addr/или доменное имя/или у доменного имени суфикс .onion?

Онион-ссылку, конечно, можно определить по суффиксу, и инициировать соединение через Tor. Но в случае обычного домена или IP как понять, хочет ли пользователь соединиться напрямую по UDP, напрямую по ТСР или по ТСР через Tor? Конечно, можно оставить только Tor, но тогда теряется гибкость.


Как torchat сделан все видели, там в коробке маленький Tor, сразу запиливается в него, и не нужны никакие слушания на raw ip, с пробросами через router.

Моя ошибка – нельзя в описании все мешать в одну кучу, учту.
Проброс порта в роутере нужен для приема прямого соединения по домену или IP-адресу. Это не имеет никакого отношения к работе через Tor.


Т.е. программа может работать в таких режимах:


– устанавливать прямые UDP-соединения
– устанавливать прямые TCP-соединения
– устанавливать TCP-соединения через Tor (на заданный IP, домен или HS, нужен запущенный Tor)


– принимать прямые UDP-соединения (нужен проброс UDP-порта на роутере)
– принимать TCP-соединения (прямые или с Tor-exit, нужен проброс TCP-порта на роутере)
– принимать соединения через свой Tor-HS (нужен запущенный Tor c натроенным HS)


Перечисленные режимы абсолютно независимы. Например, если вы используете прямые соединения, вам вовсе не нужен Tor, а если используете соединения к HS, то не нужно пробрасывать порты на роутере.


По поводу "маленького Tor в коробке" – его уже исключили из коробки, т.к. Tor обновляется, и лучше, если пользователь сам подбросит свежую версию. Можете распаковать последний TBB и скопировать с него Tor в папку с программой. Если тяжело будет запускать отдельно, может добавить в start. Для моей программы не важно, будет ли запущен Tor в составе TBB, TorChat или отдельно – вводим в конфиге действующий SOCKS5-интерфейс и работаем.


такую же прикалюху в Tor-сети

Это очень амбициозная и объемная (хотя и реальная) задача.
По поводу видео через Tor я уже писал: надо разбивать поток на куски и передавать их через множество независимых Tor-цепочек, постоянно контролируя их латентность, отсеивая медленные и дублируя сомнительные. На приемной стороне все собирать обратно. Это потребует локальных ресурсов (что при современных процессорах не проблема), но обеспечит приемлемую латентность транспорта.
Я бы хотел заняться таким проектом, но это на порядки выше onionphone и не для одного хобби-разработчика: нужна команда и финансирование.


Придётся вероятно отдельную башню поднимать

Вот это как раз и не надо. Башня сразу попадет под контроль. По аналогии с TorChat прекрасно справится децентрализованная структура. Вот только с баном будут проблемы, но можно решить путем раздачи организатором канала отзываемых ключей-инвайтов.

Гость (01/05/2014 21:03)   


Нужно делать так. Одну кнопку нажал – всё работает. Лучше Tor Browser Bundle(Windows) – его хавает пипл. Или например, tails – всё в коробке, его буквально рекламируют все подряд специ по безопасности, например Шнайер.
А когда там всё по кусочкам, часами собирается, люди либо запилят баш скрипт, который опять всё превратит в одну кнопку, либо уйдут в проект где всё проще.



Я вот про такую директорию говорю: http://3eocs2e3bwdd4zdv.onion

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


Потом главным конкурентом будет лишь Skype.

Вы как разработку ведёте? Как Satoshi или как все?
— gegel (02/05/2014 10:29)   
Вы как разработку ведёте? Как Satoshi или как все?

А это как?
— SATtva (02/05/2014 10:45)   
А Ваши эти '!', '$' вначале – это плохо. Там что, нет возможности определить, ip addr/или доменное имя/или у доменного имени суфикс .onion?

Онион-ссылку, конечно, можно определить по суффиксу, и инициировать соединение через Tor. Но в случае обычного домена или IP как понять, хочет ли пользователь соединиться напрямую по UDP, напрямую по ТСР или по ТСР через Tor? Конечно, можно оставить только Tor, но тогда теряется гибкость.

Символы ! и $ имеют в консоли особое значение, их надо экранировать или брать адрес в одинарные кавычки, что неудобно. Вообще, для указания протокола общепринято использовать опции типа -T или -U (для Tor можно принять, скажем, -O).
— gegel (02/05/2014 12:55, исправлен 02/05/2014 13:03)   
Символы! и $ имеют в консоли особое значение

Просветите поподробнее, у меня нет особого опыта работы с консолью. Но в процессе разработки и тестирования я не заметил никакого отличия этих символов от других в процессе ввода (чтения из stdin) как в Win32-консоли, так и в Linux. Они вводятся с клавиатуры, как обычно, включаются в C-строку, ищутся strchr и т.д.


Или имеется в виду, что традиционно в самой консоли они используются как общепринятые управляющие, и их не стоит использовать в качестве нестандартных модификаторов, чтобы не конфузить пользователей?


ПС: данные символы не используются в командной строке и т.п. Они используются как модификатор адреса дозвона при его интерактивном вводе в уже запущенной программе.


В любом случае нет проблем поменять на предложенный Вами вариант.

— SATtva (02/05/2014 13:21)   
Или имеется в виду, что традиционно в самой консоли они используются как общепринятые управляющие, и их не стоит использовать в качестве нестандартных модификаторов, чтобы не конфузить пользователей?

Именно так.
— gegel (02/05/2014 13:45)   
OK, принято.
Если есть желание, можно попробовать соединиться со мной:
на адресе !iyrqp2pt7qfrw6xu.onion висит текущая linux-версия,
на адресе !gegelcy5fw7dsnsn.onion висит Win32-версия и Торчат
на прямом адресе $gegelcopy.dyndns.org – Win32 версия

Для проверки звука достаточно просто запустить ./start, ввести последний адрес и нажать ввод – будет выплнено прямое соединение.
Оставлю включенным до вечера.
— unknown (02/05/2014 15:16, исправлен 02/05/2014 15:17)   

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


Есть масса всевозможных гласных и негласных стандартов кодинга, которые хорошо бы проштудировать, прежде чем за что-то браться. Даже уже не знаю, нужно ли показывать общепринято минимально правильные вещи[link134], или лучше не стОит — пусть уж будет виден весь изначальный подход невооружённым глазом.

Гость (02/05/2014 18:51)   
Gegel, трудяга ты наш неутомимый, огромное спасибо! :) Неужто кроха лайтов так подействовала? :))) Шучу, шучу!
Щас потестирую. И сразу вопрос – если у одного абонента Linux, у второго Windows – можно ли как-то состыковать Unix-версию SpeakFrealy7.6 со старым виндовым TorFone?
Или какой-то еще вариант, чтобы линуксоид мог разговариваить с виндузятником...
— gegel (02/05/2014 21:21, исправлен 02/05/2014 21:25)   
или лучше не стОит

Наверное, действительно не стоит, по крайней мере так будет честно.
Тогда лучше не считать этот проект GNU, а еще лучше – вовсе не считать проектом. Просто экперимент.


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

Золотые слова, и вообщем-то я и не скрываю, что привык к такому подходу. Хороший пример – китайцы. Пока отечественные разработчики философствуют на electonix.ru, соображая грандиозный проект на 10 лет вперед, китайцы делают его за ночь, открыто используя ломанный Windows XP, ломанный ARM-компилятор и слямзенные куски лицензионного кода. Отечественный разработчик нервно курит и продолжает философию, а отечественный пользователь рад реально работающему китайскому продукту.


а не для сообщества

А оно вобще нужно сообществу? Мне кажется, единственный, кто решил потестировать, имеет к сообществу весьма косвенное отношение (прошу прощения, если ошибаюсь). Код работает на нижнем уровне, написан не мной и очень давно, есть много вопросов в частности к звуковому интерфейсу в современных ОС. Я задавал эти вопросы линуксоидам, но кроме пространственных рассуждений, ничего не услышал. Осталось впечатление, что там больше условностей и традиций, чем прагматики, практицизма и реальных знаний. Надеяться не на кого, но я привык: протестирую и выкручусь сам, не в первый раз.


Для себя я нарисовал следующую концепцию: самодостаточный статически линкуемый, компактный, простой и хорошо комментированный С-код без специфических системных библиотек (в том числе крипто: референс-коды и тест-вектора включены в код), с минимальным использованием системных вызовов, работающий на нижнем уровне (с сокетами, звуком), в идеале в одном потоке, в терминале с удобным интерактивным интерфейсом. И уже в последнюю очередь – соответствующий гласным и негласным стандартам.


Неужто кроха лайтов так подействовала?

Не дай бог так изголодать :)


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

Нет проблем: http://torfone.org/spfr.html под Win32 и http://torfone.org/download/sf76_01a.tar.gz под Linux, использовать кодек GSM или LPC10. Именно так и тестирую сам с собой, т.к. у меня один маленький нетбук с Ubuntu+GNOME для тестов, остальные 5 компов под Win32 во всех ее вариантах.
С Торфоном пока совместимости нет.

Гость (03/05/2014 03:36)   



https://en.bitcoin.it/wiki/Satoshi_Nakamoto
Гость (03/05/2014 03:43)   
http://www.electonix.ru/

Server not found

Firefox can't find the server at www.electonix.ru.
— gegel (03/05/2014 11:09, исправлен 03/05/2014 11:16)   

Извините, опечатка. Собственно, это для примера писал, и не выделял как url. имелся в виду http://electronix.ru/forum/: портал инженеров-электронщиков и embedded-программистов.
Некоторые темы там тоже имеют отношение к проблемам безопасности. На вскидку: http://electronix.ru/forum/ind.....howtopic=119428&st=0[link135]

— Отечественный_пользователь (03/05/2014 14:46)   

Я, например, отнюдь не рад вездесущей «китайчатине» быстро и дёшево (для производителя) стяпляпанной, но работающей «почти всегда».
Гость (03/05/2014 15:41)   
И что, этот SpeakFrealy обеспечивает такую же криптозащиту, как и TorFone? Или может даже лучше? ;)

И еще вопрос: откуда у вас взялась его версия 7.6, если на офсайте максимальный релиз только 7.2?
— gegel (03/05/2014 18:44)   
Я, например, отнюдь не рад вездесущей «китайчатине»

Никто не рад, но их умение решить вопрос оптимально с практической точки зрения, отделяя на данный момент основное для пользователя от второстепенного, заслуживает уважение. Например, мне гораздо приятнее пользоваться телефоном Donod C+ за $12, чем фирменным Samsung того же класса. Софт лучше, хотя по железу, конечно, гораздо хуже.

И что, этот SpeakFrealy обеспечивает такую же криптозащиту, как и TorFone?

Я выше писал, что не разбирал подробно криптографию версии 7.6. Но, думаю, что в общем можно ответить "нет". Но это актуально при прямом соединении, т.к. при работе через Tor обеспечивается оконечное шифрование средствами Tor. Думаю, повода не доверть Tor нет?
В любом случае, я прикручу современную криптографию к Linux-версии вместе с возможность перехода на прямое UDP с автоматическим проходом NAT (Tor в качестве SIP).

У SpeakFrealy длинная история: сначала она развивалась автором на офсайте[link49]. В 2004 автор (John Walker) объявил об окончании поддержки проекта, и проект перешел на sourceforge.net[link136] в статусе коллективной разработки. Там же доступны исходные коды версии 7.6[link95], более поздние патчи и т.д. Собственно, моя поддержка TCP и Tor – просто патч этой версии (ведь проекты подобного уровня не делаются за неделю с нуля).
В отличие от Циммермановского PGPFone, забытого почти сразу (он опередил время – ни пользователи, ни сети тогда были не готовы ни к VIOP, ни к шифрованию), SpeakFreely нашла практическое применение, и до сих порт используется в специфических коммьюнити как средство VOIP, хотя по уровню защиты уступает PGPFone (последний проектировался как часть пакета PGP, изначально заточен на безопасность).
Сразу после релиза Торфона ко мне начали обращаться с просьбой сделать поддержку TCP+SOCKS5 в SpeakFreely, причем практическая публика, думаю, связанная с какими-то политическими движениями.
Ну, и на других форумах были просьбы[link8] торификации именно SpeakFreely.

ПС: есть еще один незаслуженно забытый и раскритикованный Qt-проект I Hear U[link137] под Linux, работающий в т.ч. и через TCP. Я не пробовал его, но по идее статически линкованная версия должна работать и на Tails.
Гость (03/05/2014 19:09)   

И когда это можно ожидать?
Гость (04/05/2014 03:22)   
@gegel,

Забавный топик. Файловая система, тогда тоже должна быть аппаратной. Как марчить файлы, что бы они аппаратно были не стрираемы. В противном случае, защита на стороне файловой системы, программно делается. В любом получается случае, надо вокруг файловой системы плясать, и что бы её Windows/Linux читать умели. Зачем такой велосипед?

@gegel, а зачем этот Raw UDP/TCP, если название уже позиционирует разработку как прикладную к Tor – TorFone? Или здесь Tor – это что то другое?

А учитывая уже имеющуюся криптографию в Tor-e, Вы лишний слой добавляете? Связь между двумя onion доменами, для передачи видео, может лишь потребовать грандиозной работы в области сжатия этого видео.
— gegel (04/05/2014 10:48)   
Файловая система, тогда тоже должна быть аппаратной

Понятие "аппаратный" относительное. Например, шифрование на ПЛИС – аппаратное? Но ведь ПЛИС все равно программируется. Тем более в данном случае – ведь используется микроконтроллер. Реализуется FAT. Защита программная, но не силами ОС, а в прошивке микроконтроллера, и написанной собственноручно, а не производителем флешки.

зачем этот Raw UDP/TCP

Tor дает ощутимые (пару секунд) задержки, и это весьма напрягает при общении. В серьезной модели угроз это оправдывается, но в большинстве практических случаев предпочтителен переход на p2p соединение после установки Tor-соединения, согласования ключей в нем и обмена инвайтами для прохода NAT. Естественно, p2p не дает анонимности, но в отсутствии сервера невозможно собирать метаданные и контролировать все в одной точке. Другой вариант – DHT, но Tor HS предоставляет коробочное решение.
Связь между двумя onion доменами, для передачи видео, может лишь потребовать грандиозной работы в области сжатия этого видео.

К сожалению, не все так просто. В своих экспериментах с HS-соединением я заметил четкую корреляцию между потоком трафика и латентностью. Алгоритм Нагла на узлах продолжал работать, и TCP-пакеты переформатировались произвольно, буферизируясь сокетами узлов. Т.к. сжатие видео не бесконечно, то в любом случае единичной HS-соединие будет перегружено и даст значительную латентность, что вызовет неудобства в общении, особенно у той публики, кто в этом больше всех заинтересован.
Единтственный выход – использовать множество цепочек (и Tor-клиентов), разбивая видеопоток на небольшие фрагменты, маршрутизируя их отдельно и собирая на приемной стороне. Но тут повышается вероятность отказа всей системы в случае отказа всего одной цепочки. Поэтому придется использовать соответствующее кодирование видео (потеря или задержка фрагмента данных должна приводить к потере только одного фрагмента кадра), а также предусмотреть алгоритм исключения медленных цепочек, т.к. самая медленная и будет определять общую латентность. Для уменьшения вероятности отказа надо предусмотреть дублирование проблемных (вновь созданных, нестабильных) цепочек.
Только таки способом можно получить то, что ожидает пользователь.
Гость (04/05/2014 21:30)   

:)))

А под Linux полностью через Tor оно уже работает? Т.е., чтобы не только согласование параметров, но и весь трафик шёл через Tor.
— gegel (05/05/2014 10:07, исправлен 05/05/2014 10:51)   

Да, под Linux именно так (и пока только так) оно и работает:
Скачиваем последний TBB[link138], распаковываем в папку. Открываем файл \tor-browser_en-US\Data\Tor\torrc и добавляем строку:
HiddenServicePort 17447 127.0.0.1:17447
Запускаем ./start-tor-browser, дожидаемся подключения. Открываем появившийся файл \tor-browser_en-US\Data\Tor\hidden_service\hostname и копируем созданный ваш onion-адрес.


Скачиваем патченую SpeakFrealy7.6[link130], распаковываем в отдельную папку. Запускаем ./start
Для исходящего звонка вводим onion-адрес абонента с восклицательны знаком вначале и жмем ввод. Для приема входящего звонка жмем ввод.
Для тестирования жмем ввод и слышим себя.


Если что-то не так, опишите ошибку, посоветую.

Гость (05/05/2014 11:10)   
Да, под Linux именно так

2 gegel: а под Ubuntu Touch заработает?
— gegel (05/05/2014 11:39, исправлен 05/05/2014 11:39)   
а под Ubuntu Touch заработает?

Я же не ясновидец. Для того и выложил, чтобы попробовали на разных ОС.
Не заработать может только звук. Просто запустите ./start (без никакого Тора) и затем нажмите ввод, и еще раз ввод. Или услышите себя, или получите ошибку. И в том, и в другом случае отпишите. Если будет ошибка, укажите, я попробую подсказать, как поправить ситуацию.

Гость (06/05/2014 09:49)   

А можно кадры поочерёдно по цепочкам распределять, тогда будет просто пропуск каждого n-ого кадра, в плохом случае слайд-шоу.
— unknown (06/05/2014 10:31, исправлен 06/05/2014 10:34)   

Если пропускать много трафика по множеству параллельных цепочек, то анонимность будет падать, да и сеть будет перегружаться. А для скрытого сервиса критически важными являются его гвард-узлы. Для правильного функционирования сколько бы дополнительных цепочек не запустили, узким местом останется фиксированный набор гвард-узлов скрытого сервиса, через которые трафик со всех цепочек и будет проходить. Можно, конечно и над этим набором узлов поиздеваться в ущерб анонимности, но трудно оценить к каким последствиям это приведёт, с учётом того, что протокол скрытых сервисов и так не слишком надёжен. Пока что он расчитан на малые нагрузки и не предусматривает масштабирования.

— gegel (06/05/2014 11:08, исправлен 06/05/2014 11:12)   
тогда будет просто пропуск каждого n-ого кадра

На сколько я помню из теории кодирования видео (могу ошибаться, не занимался досконально), периодически передаются опорные кадры, а остальные в виде дельты. Так что для реализации предложенного алгоритма все равно понадобится специфический кодек, устойчивый к потерям. Наверное, такие существуют, надо смотреть теорию.


Если пропускать много трафика по множеству параллельных цепочек, то анонимность будет падать

Год назад я несколько раз поднимал этот вопрос и здесь, и на TorProject, но ответа не получил. Хотя у меня с самого начала были сомнения аналогично вашим.

фиксированный набор гвард-узлов скрытого сервиса

Об этом тоже где-то я упоминал. Практически это подтверждается при активировании экспериментальной функции Торфона: создаются две встречные цепочки, пакеты передаются по обоим, накапливается статистика за определенный интервал, и более медленная перезапускается. Я тщательно тестировал это в прошлом году: выше головы прыгнуть не удается из-за гвардов.
Отказаться от гвардов, уменьшить цепочки (наверное, это возможно в современной реализации Тор, не в курсе) можно в ущерб анонимности, все зависит от модели угроз.
Кроме того, я не зря упомянул об множестве экземпляров Tor на обеих концах, соответственно, наборе независимых HS. Конечно, надо думать о возможности корреллирования и т.п. потенциальных деанонимизаторах.

Гость (01/06/2014 21:40)   
В продолжение /comment78555[link121]:
#!/bin/sh
 
# Отредактировать
MYIP=X.X.X.X.
Guard1=X.X.X.X.
Guard2=X.X.X.X.
Guard3=X.X.X.X.
PortOfGuard1=PORT
PortOfGuard2=PORT
PortOfGuard3=PORT
 
iptables -F 
 
# По умолчанию запрещаем всё:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
 
iptables -A OUTPUT -p icmp -j DROP
iptables -A OUTPUT -p udp -j DROP
 
# Разрешаем ответы от Guard'ов (только в рамках уже установленных с ними 
# нами соединений):
iptables -A INPUT  -i eth0 -s $Guard1 -d $MYIP -p tcp -m tcp \
    --sport $PortOfGuard1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -i eth0 -s $Guard2 -d $MYIP -p tcp -m tcp \
    --sport $PortOfGuard2 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -i eth0 -s $Guard3 -d $MYIP -p tcp -m tcp \
    --sport $PortOfGuard3 -m state --state RELATED,ESTABLISHED -j ACCEPT
 
# Разрешаем исходящий трафик от нужного юзера к Guard'ам на их IP:порт:
iptables -A OUTPUT -o eth0 -s $MYIP -d $Guard1 -p tcp -m owner \
    --uid-owner TBB-user -m tcp --dport $PortOfGuard1 -j ACCEPT
iptables -A OUTPUT -o eth0 -s $MYIP -d $Guard2 -p tcp -m owner \
    --uid-owner TBB-user -m tcp --dport $PortOfGuard2 -j ACCEPT
iptables -A OUTPUT -o eth0 -s $MYIP -d $Guard3 -p tcp -m owner \
    --uid-owner TBB-user -m tcp --dport $PortOfGuard3 -j ACCEPT
 
# Рзарешаем на lo ответы от Tor'а для уже установленных (в общем случае, 
# иными программами) соединений:
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp -m tcp \
    --sport 9151 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp -m tcp \
    --sport 9150 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Разрешаем Tor'у самому (первому) отправлять что-либо иным програмам 
# с его портов (Зачем это нужно?! Почему -m state --state
# RELATED,ESTABLISHED в этих правилах ниже недостаточно?):
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp -m tcp \
    --sport 9151 -m owner --uid-owner TBB-user -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp -m tcp \
    --sport 9150 -m owner --uid-owner TBB-user -j ACCEPT
 
# Разрешаем входящие на порты Tor'а от других программ (firefox'а и т.п.):
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp -m tcp \
    --dport 9151 -j ACCEPT
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp -m tcp \
    --dport 9150 -j ACCEPT
# Разрешаем исходящие на порты Tor'а от (в общем случае) других программ:
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp -m tcp \
    --dport 9151 -m owner --uid-owner TBB-user -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp -m tcp \
    --dport 9150 -m owner --uid-owner TBB-user -j ACCEPT
Это попытка затянуть гайки для стандартного рекомендуемого случая (есть только искаробочный TBB, всё работает из-под него). Трафик TBB разрешаем, всё остальное фильтруем (даже на loopback-интерфейсе).

Вышеприведённые вопросы говорят о том, что я сам до конца не понимаю, как работает фильтрация на lo. Обычно правила (для системного Tor'а) пишутся исходя из того, что Tor, как локальный сервер, должен отвечать на запросы клиентов, но сам соединенения никогда не инициирует. Тут не так. Может быть, дело во всяких PluggableTransport и т.п. наворотах бандла.

Правила, конечно, ни от чего по сути не страхуют (особенно, если у кого-то на машине белый IP), но слегка сужают манёвр атакующему в случае, если будет уязвимость (соединения в сеть напрямую зарезаны, придётся отсылать трафик во вне через Tor или ждать, когда попадётся подконтрольный Guard). Список Guard'ов и их портов для конфига выцепляется из netstat -apn |grep ВАШ_IP. Если у кого исходящий не eth0, пусть поправит для своего случая.
— RubyOnRails (11/06/2014 19:43)   
torchat ужасно глючит – не регистрируется нормально в сети (человечки не зеленеют). у всех так?
— gegel (11/06/2014 20:17, исправлен 11/06/2014 20:18)   

Проверил – подключается без проблем.
Убедитесь в правильность установки системного времени и соответствии его часовому поясу. Обновите tor.exe, заменив файлом из последнего TBB.
А вообще такое было в последний раз во время августовской атаки, тогда в первую очередь пострадали HS. Сейчас, судя по торовскому мейл-листу, все спокойно.

— RubyOnRails (11/06/2014 21:02)   
только tor.exe надо заменять или кучу dll файлов впридачу?
— gegel (12/06/2014 18:45)   
Скачал последний tbb: когда-то все было линковано статически, но теперь, по видимому, делают иначе. Так что придется тянуть dll. Кроме того, из-за изменений в дефолтных настройках может потребоваться дополнительная редакция torrc. Вообщем, надо пробовать.
У меня, кстати, Торчат + Торфон работают на старом Tor ( v0.2.3.25 (git-17c24b3118224d65)).
Гость (13/06/2014 23:54)   

А из Крыма проверяли? Работает?
— gegel (15/06/2014 10:58)   
человечки не зеленеют

А из Крыма проверяли? Работает?

Конечно. Все няш-мяш!
Гость (15/06/2014 14:36)   
Вежливые зелёные человечки...
Гость (17/06/2014 02:56)   

Похоже, всё-таки достаточно. Чтобы было проще понять, фильтрацию на lo лучше переписать так:
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m owner --uid-owner TBB-user -m tcp --dport 9151 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m owner --uid-owner TBB-user -m tcp --dport 9150 -j ACCEPT
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m tcp --dport 9151 -j ACCEPT
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m tcp --dport 9150 -j ACCEPT
 
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m owner --uid-owner TBB-user -m tcp --sport 9151 \
    -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m owner --uid-owner TBB-user -m tcp --sport 9150 \
    -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m tcp --sport 9151 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m tcp --sport 9150 -m state --state RELATED,ESTABLISHED -j ACCEPT
Объяснить можно на примере работы с произвольным демоном, запущенным на порту PORT от имени этого же юзера:
# Разрешаем USER'у послать пакет на 127.0.0.1:ПОРТ
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m owner --uid-owner USER -m tcp --dport PORT -j ACCEPT
# Пакет проходит ядро и преврщается из OUT-пакета (исходящего) 
# в IN-пакет (входящий). Его тоже разрешаем (сессии ещё нет):
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m tcp --dport PORT -j ACCEPT
# Итак, сервис на 127.0.0.1:PORT получил пакет. Надо дать ему ответить.
# Мы разрешаем ему отвечать на уже полученные пакеты, т.е. только
# в рамках кем-то уже установленной с им сессии (сам он инициировать
# соединение не может):
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m owner --uid-owner USER -m tcp --sport PORT \
    -m state --state RELATED,ESTABLISHED -j ACCEPT
# Сервис в рамках сесии послал ответ, ядро превратил его из исходящего
# в аналогичный входящий, его тоже разрешаем:
iptables -A INPUT  -i lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m tcp --sport PORT -m state --state RELATED,ESTABLISHED -j ACCEPT
Вроде всё работает. Если теперь надо дать доступ к этому сервису от другого пользователя, достаточно продублировать первую строку, указав там нужного пользователя:
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -p tcp \
    -m owner --uid-owner USER2 -m tcp --dport PORT -j ACCEPT
А так iptables не для людей, да.

Правила выше для Tor'а на lo написаны с этим же упорядочением, поэтому объясняются аналогично.
Гость (21/07/2014 23:00)   

RELATED не нужен (он только для извращённых протоколов типа ftp), достаточно ESTABLISHED. На работоспособность это не влияет. См. также обсуждение тут[link141].
Гость (28/09/2014 22:52)   
В-общем, стал я ждать годами, когда тов. Гегель выполнит свои многократные обещания по созданию финального употребимого релиза его распиаренного продукта.
Отговорки типа "Не хватает времени" и т.п. пусть прибережет для наивных лохов – не сделает он Torfon никогда, поверьте моему слову.
Не держит он свое слово, увы, и это бесспорный факт.

Поэтому перешел на Jitsi. Еще не все опробовал, но первые впечатления по юзабельности, как ни странно, самые благоприятные.
Поскольку в Jitsi есть возможность загнать трафик в прокси (SOCKS), любопытно будет поганять его по SSH-туннелю.
Осталось оценить его криптоскойкость, но с этим вы наверняка справитесь.
— gegel (29/09/2014 00:03, исправлен 29/09/2014 00:05)   

Да готов он, но после здешнего "воспитания" не хотел выкладывать "as is". Хотя все же я сторонник доводки софта "в процессе", поэтому в течение пары дней на скорую руку соберу пре-альфу и представлю на github. Пока могу показать черновик описания[link142] (функционал, установка, команды, подробное описание криптографии и т.п.). Могут быть грамматические ляпы: вычитать все, подогнав под принятые здесь "математические" традиции – весьма кропотливый труд, сопоставимый с самой разработкой. Критика и пожелания принимается в любом виде :)


ПС: посмотрите в описании по ссылке [3] работу, в которой представлены эксперименты с Tor VOIP по VPN-туннелю. Возможно, это облегчит решение вашей задачи альтернативными способами.

Гость (29/09/2014 01:10)   

Обратите внимание что в Опции – Расширенные – Прокси-сервер есть таблица, где видно для каких сетей эта настройка работает.
Гость (29/09/2014 01:12)   
ЗЫ Во всяком случае sip туда не входит. Увы..
— gegel (29/09/2014 11:33)   
Во всяком случае sip туда не входит

Четко разграничивайте SIP и RTP (ZRTP) протоколы. Первый идет по TCP транспорту и может быть пущен через Tor, второй – по UDP, и должен быть туннелирован через VPN по TCP. Это нетривиальная конструкция, и без четкого понимания одними галками в настройках не обойтись. Вот прямые ссылки на две свежие работы, в которых проблема поднимается: тут[link143] и тут[link144].
В прошлом году я поднимал вопрос добавить возможность прямого соединения на мейллисте Jitsi, но без никакой реакции: это или совсем никому там не интересно, или подавляется принципиально.
Гость (29/09/2014 20:14)   
Тоже не дождался законченного Торфона и отправился искать похожие альтернативы.
Но в отличие от предыдущего оратора отверг Jitsi, поскольку мне очччень не понравились его некоторые завязки на Google (в моем понимании Google тождественно АНБ, и наоборот).
Поэтому пока остановился на Tox.
Вот только если uTox завелся на CentOS 6.5 с пол-оборота, то Venome (вроде лучший форк) при установке начал ругаться на недостающие зависимости, требуя, как мне кажется библотек от Гнома-3.
Кто-нить победил это?
И как вообще находите этот Tox в плане безопасности?
Гость (29/09/2014 23:57)   

Допилили таки поддержку Tor[link145]
Гость (30/09/2014 00:08)   

Так что, Torfon теперь в самом деле не нужен? :-)
Гость (30/09/2014 02:57)   
Да почему не нужен? Нормальный сабж никогда не помешает. Еще б кроссплатформенный, да для гаджетов..
— SATtva (30/09/2014 09:01)   
Гость (29/09/2014 23:57), Гость (30/09/2014 00:08), Семён Семёныч, палишься.
Гость (30/09/2014 20:54)   
Не нужен в том смысле, что его перспективы всё еще туманны, одни только обещания, а Tox уже обзавелся Tor'ом и называется ToT, который, насколько понял, воплотил себе всё, что нам обещал gegel
Гость (30/09/2014 21:40)   
Кто-нибудь разбирался в модели безопасности этого Tox? Как-то шифропанково выглядит.
— gegel (30/09/2014 23:04, исправлен 30/09/2014 23:05)   

Бегло просмотрел описание криптографии TOX[link146]. Весьма скудно, но в общих чертах так: используется Бернштейновская криптобиблиотека NaCl. Асимметричное шифрование там EC25519, симметричное – вроде salsa20. В описании TOX ничего не детализируется, надо смотреть исходники. По поводу SPRNG и источников энтропии тоже ни слова (добрая традиция с ними). Пользователь идентифицируется публичным ключом (это его ИД в DHT). При установке соединения отсылается свой публичный ключ и nonce, из них и ключа плучателя с помощью DH выводится симметричный ключ. Т.е. никаких эфемеральных ключей, и, как результат, без PFS. Т.о., скорее всего, при утечке приватного ключа хотя-бы одного участника давно записанный дамп может быть дешифрован. Отрицаемость даже не обсуждается (другое дело, что скорее всего она практически и не важна для потенциальных пользователей в наших реалиях).
Не совсем понятен механизм аутентификации при первичном p2p-контакте через Tor в режиме ToT: если DHT выполняет маршрутизацию к нему (атаки на DHT пока не осуждаем), то при p2p, получается, надо знать ключ получателя заранее. Возможно, предусмотрена голосовая аутентификация (типв SAS в ZRTP), не нашел в описании.


Как рекомендация – добавить возможность использования PGP для подписи EC-ключей.


Ну, и еще один ньюанс: по видимому, ToT использует выход через Tor на обычный хост (не HS). Наверное, надо будет пробрасывать порт получателю, что не всегда возможно. Кроме того, Exit node – бутылочное горлышко по латентности и дрожанию (проверено экспериментально), соединение с HS гораздо более приемлемо для VOIP.


ПС:


пре-альфу кода OnioPhone[link147] поместил на git, дока[link148] на сайте (пока только En). В процессе будут комменты, так что пока для ознакомления. В течение пары дней подготовлю страничку в old-school стиле и готовые к употреблению статически линованные бинарники для Linux и Windows.


Код OnionPhone реализован на чистом С на максимально нижнем уровне и полностью статически линкуется: так мало кто сейчас делает, это скорее стиль embedded-разработки. Все, что можно было закодить самому, компактно сделано в самом коде, без внешних библиотек. Компилируется gcc (Linux) и MinGW (Windows) на 32-битных платформах. GUI пока нет, будет через control port. Также попробую сделать версию под Android (всего то надо прицепить работу с аудио на нижнем уровне, пример кода у меня есть, но надо пробовать).

Гость (30/09/2014 23:27)   

Это анализ для гиков. Неплохо бы также растолковать для обычных юзеров – Tox уступает вашему продукту по безопасности, или как?

И не совсем понял, видимо, что-то пропустил – OnionPhone – это ребрендинг TorFone, или новый продукт?
— gegel (30/09/2014 23:30, исправлен 30/09/2014 23:39)   

Таки используются ефемеральные ключи[link149] в Tox, но, прочитав три раза, так и не смог понять тонкостей. Буду вникать, описание во истину потрясающее.
ПС: и после этого родители запрещают мне в носу ковыряться? [Вовочка]


OnionPhone – это ребрендинг TorFone, или новый продукт?

Даже не знаю, как и назвать. По протоколу абсолютно несовместим (совсем другая криптография), т.е. разговор между ними не получится. Но все идеи и функции TorFone повторены в OnionPhone. Но в консольном исполнении и на С. Плюс добавлены новые кодеки и оптимизировано аудио под высоколатентную среду.


Tox уступает вашему продукту по безопасности

Это очень абстрактный вопрос, и объективного ответа на него нет в принципе: любые попытки на данном этапе сравнить что-то – не более чем пиар.

Гость (01/10/2014 19:25)   

А вы попробуйте :) А мы уж сами решим, пиар это или не пиар :))
— unknown (01/10/2014 21:46)   

Пока Gegel'ю в мягкой и доброжелательной форме не указали, что его попытки создания и документации протоколов — ниже всякой критики, то он бы и не подумал что-то там в своём проекте приводить в достойный вид хотя бы по форме.

А теперь он смотрит — у PGPphone Циммермана и у новоявленного токса всё ещё печальнее. Может им ещё это всё предстоит, а может и нет: протокол так и останется на шифрпанковском уровне, пока какой-нибудь теоретик криптографии с академическим бэкграундом не преодолеет брезгливость и не поковыряется в этом, чтобы показать, как оно там легко ломается.
Гость (01/10/2014 23:30)   
gegel, большое спасибо за обзор!

Это мне больше всего и не понравилось.
Как минимум, в uTox о ней не слова, клиент тупо звонит и общается без показа информации о сессионных ключах.
Программу запустил и с большим интересом потыкал. addkey упала от --help, но это издержки альфа-версии. Можно будет отправить через GitHub pull-реквесты, связанные с переводом на английский (как oph01a.TeX, так и самой программы)? Вы планируете выпуск OnionPhone в виде библиотеки?
— gegel (01/10/2014 23:59, исправлен 02/10/2014 00:06)   
Программу запустил и с большим интересом потыкал. addkey упала от help, но это издержки альфа-версии. Можно будет отправить через GitHub pull-реквесты, связанные с переводом на английский (как oph01a.TeX, так и самой программы)? Вы планируете выпуск OnionPhone в виде библиотеки?

По addkey исправлю. Хелп-скрин можно посмотреть при запуске без параметров. Так же добавлю и в командную строку для oph.
Конечно, реквесты отправляйте.
Наверное, имелось в виду: перевода на русский? Там и так все на английском пока. Конечно, сделаю русскую доку и страницу на сайте. Но однозначно будут проблемы с русским чатом (терминал у меня в raw для работы с меню без lcurces). Возможно, придется опционно отключать меню для русификации чата.
Что имеется в виду под "в виде библиотеки"? Все, что возможно, и в чем есть смысл – обязательно сделаю.


Только что активно тестировали соединение между линукс и виндоус-версией. Из багов замечено:
– декодер ILBC под линукс сразу падает (ошибка сегментации), причем моя сборка работает. Буду разбираться.
– кодер OPUS под Win32 падает иногда спонтанно в течение использования (возможно, и под линукс тоже). Постараюсь найти причину.
– после креша под линукс слушающий сокет не биндится сразу. Причина понятна, но как обойти, пока не в курсе.
– в 64-битном режиме код собирается, но падает сразу после активации звука: проблема в кодеках, посмотрю, но не обещаю: портировать кодеки под 64 я не готов. С -m32 на 64-битной платформе все собирается и работает ОК.
– m32 не передается в Makefile кодека G729, поправлю (пока надо дополнительно прописать и в его мейкфайле).


В остальном результаты положительные: латентность в Tor составила всего около 500 mS, при адаптивном буфере выходим на 700-800 mS общей задержки при редких underrun, что гораздо лучше, чем в TorFone. Во общем, общаться вполне можно даже без PTT.
На прямое UDP и обратно переходим, NAT проходится для домашних роутеров. Не могу потестировать тщательнее, т.к. не найду тестера с провайдером, предоставляющим серый IP (хорошо живем).


Проверить кодеки можно без звонка: введите -RV, а затем Enter-ом включайте/отключайте звук. Кодек переключается от -С1 до -C18. Для вывода инженерной информации о состоянии буфера: -RB

Гость (02/10/2014 22:27)   

Не совсем. На первой странице Темы Вам предложили некоторые исправления для английской версии сайта, я тоже решил с этим помочь.

В виде набора кода, реализующего протокол, к которому можно сделать свой UI, или который можно слинковать с каким-нибудь мультипротокольным мессенджером.

Возможно, уже нашли: setsockopt(...SO_REUSEADDR...)?
— gegel (02/10/2014 23:15)   
Не совсем. На первой странице Темы Вам предложили некоторые исправления для английской версии сайта, я тоже решил с этим помочь.


:) Конечно же, буду весьма благодарен: сам писал, как мог. Что мне для этого нужно сделать?

В виде набора кода, реализующего протокол, к которому можно сделать свой UI, или который можно слинковать с каким-нибудь мультипротокольным мессенджером.


Об этом сам думал, иначе проект удобен только для экспериментов. Есть ли какие-то стандартные расширяемые варианты UI, или придется изобретать свой?

Возможно, уже нашли

Да, нашел еще раньше, но при жестком креше вначале не помогало. Но сейчас вроде ОК, буду позже еще тестировать.

Сейчас разбираюсь с кодеками: у меня они упорно НЕ падают. Если будет возможность и время, огромная просьба проверить на вашем билде: после старта программы сначала включить аудио лупбек -RV затем Ввод для активации голоса, и попробовать кодеки ILBC: -C14 и затем OPUS: -C16.

Как только разберусь с кодеками, сразу поправлю остальное.
И огромное спасибо за Ваш интерес к проекту.
— SATtva (04/10/2014 08:51)   

Лучше реализуйте и документируйте чистый API, который желающие могли бы импортировать в свой код.
— gegel (04/10/2014 10:54, исправлен 04/10/2014 10:57)   
чистый API

И все же я не до конца понимаю разницу между UI и API.
В данном случае мне кажется оптимальным:
1. реализовать управляющий TCP или UDP порт c возможность передавать через него команды и обратно дублировать выдачу в stdout и цеплять на него GUI или внешний мессенжер (по образцу Tor и Vidalia).
2. реализовать С-функции и хедер с возможностью использовать их, включив С-код OnionPhone в свое приложение (например, в виде so). Тут видится функция отправки строки команды, а вот обратно пока не знаю, как сделать лучше ( с учетом мультиплатформенности): callback можно регистрировать, или через файл в памяти. Если есть варианты, буду благодарен.

Гость (04/10/2014 12:08)   
И все же я не до конца понимаю разницу между UI и API

Сразу скажу что не разработчик, но понимаю это следующим образом. API – библиотека С-функций, специфичных для приложения, т.е. интерфейс для программиста, а UI – интерфейс для пользователя, сконструированный из этих функций под конкретную задачу. Например в OpenSSL libcrypto и libssl это библиотеки алгоритмов, а openssl – набор утилит командной строки для пользователя, т.е. UI.

управляющий TCP или UDP порт c возможность передавать через него команды и обратно дублировать выдачу в stdout и цеплять на него GUI или внешний мессенжер

Это не библиотека, скорее низкоуровневый UI. Можно сравнить с p2p-клиентами. Например, в Transmission используется сторонняя библиотека libtorrent, её использует демон transmission-cli, слушающий порт, через который пользователь может давать команды, и есть ещё GUI для любителей нажимать кнопки. В rtorrent отдельного демона вообще нет, он интегрирован в консольный UI на ncurses, использует ту же самую библитеку libtorrent (rakshasa).

Взаимодействовать с демоном можно посредством разных клиентов, в порядке роста "юзерофильности":
1. Через командную строку с помощью telnet
2. Через веб-интерфейс с помощью веб-браузера
3. Через специальный GUI на GTK и т.п.

Для каждого из этих способов демон может держать отдельный порт, например в aMule это так. И в нём кстати, кроме GUI-клиента есть ещё GUI-монолит с интегрированным демоном. Но отдельной библиотеки, реализующей протокол ed2k нет, она интегрирована в исполняемые файлы. Для подключения через командную строку вместо telnet используется специальный клиент чтобы автоматически загружать пользовательские настройки, пароль для доступа к демону и т.п.
Гость (04/10/2014 12:18)   
UPD. Кроме трёх перечисленных способов подключения к демону есть ещё один, возможно наиболее интересный – через консольный интерфейс, по типу почтового агента mutt.
Гость (06/10/2014 00:26)   

У меня -C14 тоже отказывается падать. -C16 легко роняется, если поперебирать разные значения -Q. backtrace[link150], coredump[link151].
— gegel (06/10/2014 01:20, исправлен 06/10/2014 01:34)   

C -C14 разобрался: падает сборка с оптимизацией -o3. Это не столь важно сейчас, т.к. ILBC не особо настолько ресурсоемкий, -o2 вполне работает даже на Celeron 700MHz. По поводу -C16: именно, падает при переборе. В случае постоянного использования кодек устойчив, т.е. скорее всего проблема в моем wrapper (codecs.c), я там немного поизвращался с оригинальной компактной упаковкой OPUS-VBR-фреймов в общий пакет. Отладку затрудняет спонтанность бага. Стараюсь разобраться.


С addkey --help тоже разобрался, конечно: тупо strlen(NULL). Все исправлю одним заходом.


через консольный интерфейс, по типу почтового агента mutt

Если можно, вкратце опишите механизм или ткните носом в доку: бегло просмотрел вики mutt, ничего не прояснил.

Гость (06/10/2014 03:51)   
Наверное не совсем в тему mutt упомянул. Просто имел в виду UI на ncurses, т.е. текстовый UI работающий без X-сервера. Для unix-систем это было бы удобно, но не уверен что подходит в плане кроссплатформенности, чтобы ещё и под Windows работало.

Решение может состоять из следующих частей:
1. C-библиотека, реализующая протокол и ваши алгоритмы
2. Демон, использующий библиотеку и прослушивающий порты
3. UI, из которого осуществляется взаимодействие пользователя с демоном через его порты/каналы/файлы. Варианты UI приводил выше – command-line, ncurses, web-based, GTK-based и т.п.
Гость (06/10/2014 17:19)   
А зачем демон между библиотекой и клиентами? Это должно защитить от атак на клиентов, как библиотека gpgme, которая запускает gpg в отдельном процессе?
— gegel (06/10/2014 18:57, исправлен 06/10/2014 19:14)   
UI на ncurses

ncurces я использовал в одной из первых сборок, потом отказался: слишком громоздкая штука. Решил, что проще самому перевести консоль в raw, асинхронно читать с клавиатуры и написать простую процедуру обработки ESC-последовательностей для управляющих клавиш. Получилась навигация по меню стрелками, управление PTT удержанием Tab и т.д.


Но интересуют варианты взаимодействия на нижнем уровне:

взаимодействие пользователя с демоном через его порты/каналы/файлы.

Через что же лучше? Порт – это понятно, и будет сделано. Неважно, будет это control port со своим протоколом, Telnet, Web (HTTP) И т.д.
Но есть много других техник взаимодействия: системные сообщения Windows, файлы в памяти Linux, перенаправить ввод-вывод и т.д. и т.п. Интересно, что используют другие, и что лучше.


А зачем демон между библиотекой и клиентами?

Изначально вопрос стоял об использовании OnionPhone как добавки к другим клиентам. Это можно сделать двумя способами: издать его в виде so (dll) и использовать API (всего-то пару функций: отправка команды и чтение рапортов), или запускать отдельно OnionPhone в качестве демона и подключаться к нему, используя UI. Речь идет об низкоуровневых вариантах UI. Навреное, TCP-порт здесь – лучшее решение.


ПС: также пробую собирать под Androind, используя NDK и SWIG. Низкоуровневое аудио взял с этого[link152] примера (аудио – единственный платформ-специфический код). Пока все на стадии прикидок, но надежды есть.


ППС: кодер OPUS падает при слишком большом уровне PCM на входе. Особенно заметно при манипуляциях с AGC (-Q0, -Q1). Возможно, уже пофиксили в OPUS (попробую обновить), или придется что-то придумывать самому.
Пофиксил вроде, сам протупил. После более тщательного тестирования все вместе обновлю на git.

Гость (07/10/2014 05:12)   
А зачем демон между библиотекой и клиентами?

Свобода выбора UI. Например есть программа mldonkey, это просто движок работающий как демон закачки файлов. Такая реализация позволяет существовать целому множеству[link153] разных пользовательских интерфейсов. Такой подход также закладывает потенциал расширения – допускает подключение нескольких клиентов к одному демону, который в этом случае может выполнять функцию VoIP-шлюза. Возможно что для OnionPhone это излишество, решать разработчику. Просто привёл пример как это сделано в p2p-приложениях.

Через что же лучше? Порт – это понятно, и будет сделано. Неважно, будет это control port со своим протоколом, Telnet, Web (HTTP) И т.д.
Но есть много других техник взаимодействия: системные сообщения Windows, файлы в памяти Linux, перенаправить ввод-вывод и т.д. и т.п.

Не занимался разработкой, поэтому вряд-ли обладаю квалификацией для таких советов. Лучше наверное сокет, он двунаправленый и обладает параметрами для настройки. По сравнению с каналом имеет небольшой оверхед, т.к. работает в пакетном режиме, но зато более стандартный способ коммуникации. Приложение работает в основном на локалхосте, поэтому есть смысл опционально использовать unix-сокет. Это безопасней по сравнению с портом, т.к. применяются системные права доступа.
Гость (07/10/2014 22:44)   

Я всё равно не понимаю, чем хуже разделяемая библиотека. gegel, пяосните, пожалуйста. Для P2P-клиента демонизация в какой-то степени оправдана (пусть компьютер сам раздаёт файлы, пока пользователь спит и не кликает в него мышкой), но OnionPhone она зачем? С моей точки зрения, демон будет лишним процессом, а необходимость сериализации и десериализации команд для него – лишней сложностью. Для поддержания соединения у нас и так есть демон Tor, достаточно к нему подключиться, и связь, можно сказать, уже есть.

Написать свою программу, слинковав её с кодом протокола напрямую, проще, и точек сбоя в этой схеме мне представляется меньше. Свободу выбора UI разделяемая библиотека тоже не ограничивает.
— gegel (07/10/2014 23:38, исправлен 07/10/2014 23:42)   
Написать свою программу, слинковав её с кодом протокола напрямую, проще, и точек сбоя в этой схеме мне представляется меньше.

Я совершенно согласен в Вами, и этот вариант рассматривается как предпочтительный, и, конечно, будет реализован. Но хочется максимально учесть возможные ситуации с использованием OnionPhone с другими приложениями.


но OnionPhone она зачем?

Надо же как-то ожидать входящие звонки.
Демон – наверное, самый простой способ использования. Продумываю возможность UI в виде вебинтерфейса, использующего WebSocket. Это не совсем знакомая мне отрасль, пока консультируюсь с web-программистом. Со стороны OnionPhone придется держать отдельный порт для подключения браузера и реализовать на С протокол WebSocket. Открывая подготовленный html-файл, имеем GUI и подключаемся к указанному порту, получаем возможность двухстороннего общения с запущенным OnionPhone, кроссплатформенно.

— SATtva (08/10/2014 13:23)   
Имхо, это крайнее переусложнение. Согласен с Гостем[link154]: ничего сверх библиотеки для такого приложения не нужно. Ну, будет у Вас демон висеть "для ожидания звонков", а как и кому он будет сигнализировать о поступлении звонка? Так или иначе, должен быть поднят UI. В итоге, демон и UI должны всегда исполняться вместе, что эквивалентно отсутствию демона, как такового. Получается обычное пользовательское приложение, слушающее сетевой порт для приёма звонков. API в виде библиотеки нужен только для свободы в создании графических надстроек, которые для таких задач на порядок проще реализовать на Qt/GTK/ncurses, чем многослойным веб-пирогом.
— unknown (08/10/2014 17:05)   

[off and humor]
Слать сообщение в /var/log/syslog, а умный systemd подключится к современному аналогу устройства /dev/audio и сделает всё остальное.
[/off and humor]
Гость (08/10/2014 19:19)   
Я всё равно не понимаю, чем хуже разделяемая библиотека

Нигде не утверждалось что это хуже, а наоборот. Демон и библитека могут существовать независимо.

точек сбоя в этой схеме мне представляется меньше

Какие там точки сбоя? Нужен только дополнительный слушающий сокет для управления через UI и поддержка соответствующего ему протокола.

Свободу выбора UI разделяемая библиотека тоже не ограничивает

Библиотека к пользовательскому интерфейсу вообще не имеет отношения, это только API для написания движка.

демон и UI должны всегда исполняться вместе, что эквивалентно отсутствию демона, как такового

Привильней сказать, демон интегрирован с UI.

будет у Вас демон висеть "для ожидания звонков", а как и кому он будет сигнализировать о поступлении звонка?

Вариантов много – записывать в лог и сообщать список пропущенных вызовов при запуске UI или выдавать их историю по команде. Записывать в канал на STDIN какой-нибудь утилиты для проигрывания мелодии вызова, отправки email или sms.

API в виде библиотеки нужен только для свободы в создании графических надстроек, которые для таких задач на порядок проще реализовать на Qt/GTK/ncurses, чем многослойным веб-пирогом

Как уже отмечалось выше, для создания части UI используется стандартное API, к OnionPhone отношения не имеющее. Но в случае интеграции демона и UI в одно приложение, для создания нового UI нужно будет и демон переписывать, т.к по сути создавать приложение с нуля, имея только библиотеку OnionPhone. Если же он реализован отдельно, то такой проблемы нет. При этом ничто не мешает создать из двух частей монолитное приложение на этапе компиляции, если будет предусмотрена такая опция.

Кстати, в таком случае проще защититься – поместить в chroot демон гораздо легче, чем комбайн демон+GUI, который потянет за собой кучу графических библиотек плюс пробема с общим X-сервером.
— gegel (08/10/2014 21:39, исправлен 08/10/2014 21:57)   

Гость[link155], огромное спасибо за pull-реквесты – фиксы моего английского.


Демон и библитека могут существовать независимо.

Именно так я себе это и представлял, также абсолютно согласен с остальными вашими замечаниями.


создании графических надстроек, которые для таких задач на порядок проще реализовать на Qt/GTK/ncurses, чем многослойным веб-пирогом.

Вначале я тоже смотрел в сторону Qt, и на самом деле такой подход мне ближе и понятней. Но это верно для тех, кто пишет на С. Большинство кодит максимум в веб, поэтому им проще как раз то, что нам сложнее.


это крайнее переусложнение.

Оказалось, что с WebSocket ситуация похожа на ту, с которой я столкнулся год назад, прикручивая SOCKS5 клиент к Торфону. Вначале, как и положено, я искал подходящие либы и пытался с ними разобраться, но потом прочитал rfc на протокол и с удивлением обнаружил, что SOCKS5-клиент на нижнем уровне реализуется десятью строчками С-кода. Точно так же, почитав спецификацию на WebSocket[link156], обнаружил что реализация сервера на удивление проста. Клиент (браузер) открывает TCP-соединение и отсылает handshake-пакет с текстом (это делает простой Java-скрипт в html-файле). Сервер (OnionPhone) парсит полученный текст, ищет заданный подтекст, выделяет строку после него, дописывает к ней еще фиксированную строку, считает SHA1, результат кодит в base64 и вставляет в стандартный текст ответа, отсылает его обратно клиенту.
Это и вся процедура установки соединения, займет от силы 10 строк кода сервера.
Сам обмен текстовыми строками с браузером (строка команды на OnionPhone и текстовых сообщений от него, дублирующих stdout) еще проще: к UTF-8 строке в начале сервер добавляет два байта (фиксированный тип пакета и длина в байтах) и отсылает клиенту байт-пакет через установленное TCP-соединение в любой момент времени. Клиент (браузер) делает аналогично, но дополнительно добавляет еще 4 рандомные байта маски после длины, с которыми побайтно ксорит отправляемый текст.
Это все. Причем таким образом реализуется универсальный UI, который может быть использован и небраузерным клиентом.
Преимущества: кроссплатформенный GUI-клиент может быть легко реализован на HTML+Java-script, т.е. даже начинающим разработчиком под себя, используя только текстовые команды OnionPhone из описания.
Недостатки:
– не все браузеры (особенно на андроид – штатный только с 4.4) поддерживают стандарт;
– запущенный браузер – раздражитель для параноика.

Гость (09/10/2014 13:49)   
Браузер в любом случае нужно запускать чтобы по сайтам ходить. Раздражителем является скорей включение скриптов в браузере. Но если telnet-порт будет, то интерфейс можно и на bash-скрипте сделать.
Гость (13/10/2014 18:51)   
gegel, почта на вашем сайте работает? Проверьте получение, плиз
— gegel (23/10/2014 11:21)   
По проекту Онионфона:
– добавил веб-страничку на сайт[link157] с кратким описанием и инструкцией по быстрому старту (в т.ч. русскую версию[link158]).
– для тестирования готовы пакеты со статически линкованными бинарниками: под Linux[link159] и под Windows[link160]
– исходный код в процессе допиливания на github[link147]
– документация (pdf, англ.) пока та же[link148], потом внесу актуальные изменения.

Сделано:
– добавил управляющий 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)   
Как получить исполняемый файл из исходного кода?

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

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


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

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

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

Такое возможно, но проконтролировать это реально фильтрацией на localhost. Из всех членов группы audio только онионфон должен имееть доступ к Tor, а напрямую в сеть никто из них не может выходить.
— gegel (29/10/2014 19:39, исправлен 29/10/2014 19:52)   
"! 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)   

aplay -l
arecord -l
— gegel (30/10/2014 20:24)   
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)   
Похоже что знак комментария # в этих строках 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 и отправляющий обратно. Задержка, конечно, будет двойная, но для оценки достаточно.

Гость (31/10/2014 11:24)   
Но по вашему описанию не смог понять, сколько экземпляров Tor у Вас запущено и сколько HS поднято

тор разумеется один, HS – два. Но существенно не это, а то что невозможно дозвониться до онионфона на нестандартном порту.

работает ли тест звука (без соединения) на онионфоне?

Как тест сделать, просто в порт (17447) звук направить?

статически линкованный бинар работает на x86_64, и что собирается корректно на этой платформе в gcc в режиме 32

Напишите, как собирали для Linux 32-бит. Пробовал



выдаётся ошибка

— gegel (31/10/2014 20:44, исправлен 31/10/2014 21:30)   

Я собираю make, т.к. у меня платформа 32 бит. Как отписал мне коммитер, переделавший сборку, в вашем случае собирать так:


невозможно дозвониться до онионфона на нестандартном порту

Проверю, пока не могу ничего утверждать.


HS – два.

Надеюсь, в torrc так:



в каждой из папок Tor-ом будет создан файл hostname, где находится онион-адрес каждого из HS.


Как тест сделать

Запустите онионфон и выполните комманду -RV. (Если используете Web-GUI, то подключитесь и установите флажок голосового теста). После этого передача включается/оключается нажатием клавиши Ввод или удержанием клавиши Tab. В Web-GUI – ужержанием кнопки "Раговор/пауза".


ПС: Обратите внимание: после установки соединения режим передачи отключен! Для получения голосовой связи оба абонента должны нажать Ввод или удерживать Tab.


ППС: до меня дошло – вы пытались тестировать 64-битный бинар? Забудьте, я вообще не понимаю, как он мог работать. Позже дойдут руки и до 64, но пока что я по глупости (по аналогии с разницей 16 и 32) посчитал, что тип int в 32 и 64 разный, а long – одинаковый (32). Оказалось в точности наоборот. Кроме того, надо перепроверить всю арифметику указателей. По уму такие штуки надо держать в уме еще на этапе проектирования, но я тогда о сборке на 64 вообще не подумал. Позже поправлю, но сейчас даже не стоит и пытаться так собирать.
Собирайте в 32-битном режиме, он будет корректно работать и на 32, и на 64 платформе.

Гость (01/11/2014 04:07)   
С указанными опциями для 32 собирается на 64, хотя и не без труда. Пришлось установить библиотеки glibc, libgcc и alsa-lib для архитектуры i686. А для расшаривания звуковых устройств требуются также библиотеки alsa-plugins-pulseaudio и pulseaudio-libs, тоже для i686. Кстати, не уверен, что для готовой сборки на 64 можно будет обойтись без последних зависимостей (и тех от которых они сами зависят).

Звонить с одного локального HS на другой получается, качество хорошее, искажения речи тоже работают. Но проблема с дозвоном на онионфон на нестандартном порту остаётся, и было бы странно если бы это зависело от платформы.

В общем программа на Linux x86_64 рабочая и в принципе решает проблему безопасного голосового общения посредством Tor. Для более простой установки лучше чтобы нормально собиралась на 64-битной системе. По-моему мнению, имеет смысл довести до ума движок, а не тратить силы на GUI. Если получится законченный демон с продуманным командным интерфейсом, может кто-нибудь поможет в написании GUI.
— gegel (01/11/2014 13:50, исправлен 01/11/2014 14:03)   
Пришлось установить библиотеки

Вот за что я люблю Виндоус...


проблема с дозвоном на онионфон на нестандартном порту остаётся

ОК, поправлю: скорее всего, где-то жестко прописал 17447 и опустил из виду, когда лепил конфигурирование.


лучше чтобы нормально собиралась на 64-битной системе

Этим сейчас товарищ и занимается.
На сколько я в курсе (сам не пробовал), статически слинкованный на 32-битной платформе бинарник работает на 64-битной платформе без дополнительных зависимостей. Как будет готова V02a, соберу и представлю в пакете. По идее, достаточно будет разархивировать и запустить (по аналогии с TBB).


имеет смысл довести до ума движок

А этим как раз сейчас я занимаюсь. Тестирую, убираю мелкие баги и т.д. Пока релиз V02a чуть отложил из-за бага в верификации онион-адреса отправителя (не запускалась автоматически на старте после изменения в IKE), поправил, сейчас тестирую.


а не тратить силы на GUI

Это было, скажем так, временное шатание. Если и тратить время, то на Qt-версию TorChat GUI, в которую встраивать онионфон + видео.

Гость (02/11/2014 04:27)   
статически слинкованный на 32-битной платформе бинарник работает на 64-битной платформе без дополнительных зависимостей.

Собранный мной бинарный файл тоже работает с дефолтными настройками. Но если указать plug:default в audiocfg, то при запуске oph выдаст сообщение об ошибке. Чтобы расшарить звуковое устройство, т.е. пропускать через pulseaudio, а не напрямую, нужна соответствующая библиотека, которая при сборке не используется.

достаточно будет разархивировать и запустить (по аналогии с TBB)

Многим приверженцам анонимности запускать готовый бинарник религия не позволяет. Самая лучшая установка это make. Тем более что на 64 нормально собирается и на вид работает также как 32, только звука нет. Если основная сложность в портировании кодеков, то не обязательно наличие их всех, пусть будет хотя бы один.

Ещё немного потестировал программу, несколько наблюдений

1. При отправке текстовых сообщений не печатаются кириллические символы. И кстати, если онионфон может работать как IM, то зачем нужен торчат?

2. Задание в conf.txt кодека VoiceCodec никак не учитывается при запуске. Например, указал VoiceCodec=3, а в oph -С? выдаёт 7 (по умолчанию). Номер вокодера вроде учитывается.

Для опций лучше сделать комментарии в файле, смысл не всех из них ясен. В описании не сказано, что означают -Q{0,1,2} – программа на них реагирует, но совсем понятно поведение.

Раз распознавателя речи нет, то какой вокодер лучше использовать, чтобы создать максимальные сложности для идентификации говорящего. В PDF-файле написано, что самый безопасный это безголосый (шёпот). Не могли бы перечислить их в порядке убывания безопасности? Если субъективно судить по выложенным тут образцам, я бы их упорядочил так: шёпот – низкие – робот – высокие.

На Linux было бы привычней (да и на Windows наверное тоже), если исполняемые файлы можно было поместить в каталог PATH, а конф. файл при их запуске читался из домашнего каталога пользователя который запустил программу. Лог-файл, содержащий список вызовов и их статус (принятые/непринятые) тоже бы не помешал. Например $HOME/.onionphone/{onionphone.conf,onionphone.log} (audiocfg и conf.txt можно в один файл объединить).
Гость (02/11/2014 05:09)   

Разве представляет какую то сложность наклепать пару формочек с кнопками?
— gegel (02/11/2014 10:49, исправлен 02/11/2014 11:19)   
нужна соответствующая библиотека

Да, нужен alsa-plugins-pulseaudio, эмулирущий alsa-интерфейс (используемый онионфоном) на установленном в системе pulseaudio. Но это в любом случае, не зависимо от сборки в 64 или 32. Многие программы (особенно более старые, не работающие напрямую с pulseaudio) используют такой подход.


Тем более что на 64 нормально собирается и на вид работает также как 32, только звука нет.

Работаем над этим, думаю, все будет.


При отправке текстовых сообщений не печатаются кириллические символы.

Есть такое, и я пока не могу сказать, как это побороть. Дело в том, что я переключаю консоль в raw-режим для возможности перехвата стрелок с целью навигации по меню, Tab в качестве тангенты (иначе удержанием не получится). Без ncurse пришлось извращаться и писать собственную обработку сырых кодов клавиш. Конечно, можно это отключать (тогда не будет работать тангента и консольное меню, но будет кириллица), подумаю.
Через GUI киррилица, кстати, проходит (браузер кодирует строку в юникоде, и с него же отображает). Но максимальная длина строки вдвое меньше – 126 символов вместо 252 в латинице.


зачем нужен торчат

Торчат де факто стандарт анонимного месенжера, им пользуются множество людей. Поэтому совмещение уже распиаренного торчата с онионфоном – единственный способ добиться популярности последнего. Хотя протокол Торчат не лишен недостатков, в первую очередь в том, что он нешифрован, во вторую – держит открытыми по 2 сокета на каждый контакт, что требует значительных ресурсов памяти.


Задание в conf.txt кодека VoiceCodec никак не учитывается при запуске.

Поправлю. Заодно посмотрю проблему с нестандартным портом. Надеюсь, при дозвоне на нестандартный порт вы его явно указывали после адреса через двоеточие:


Для опций лучше сделать комментарии в файле

Не совсем понял, что сделать: отдельно в текстовом файле описание комманд или же смысл параметров в conf.txt?


что означают -Q{0,1,2}

См. oph.pdf, раздел 5.3.Sound management: управление авторегулировкой усиления микрофона и подавителем шумов


в порядке убывания безопасности

Наверное, скорее так (если исходить из особенностей обработки в LPC-транскодере):
шёпот=робот, низкие=высокие
Шепот и робот содержит меньше исходной информации о голосе, чем низкие и высокие. Но субъективно лучшим вариантом мне показался шепот.


конф. файл при их запуске читался из домашнего каталога пользователя

Это противоречит принципу портейбельности: все мои программы принципиально не лезут за пределы своей папки, ни на запись, ни на чтение.


Лог-файл, содержащий список вызовов и их статус (принятые/непринятые) тоже бы не помешал.

Ну да, а кое-кому даже очень помог :). Хотя опционно лог можно сделать, но опять же в папке онионфона. Учту.


audiocfg и conf.txt можно в один файл объединить

Уже сделал, будет в V02a. Так и планировалось, просто забыл.


Спасибо за тщательное тестирование. Если в процессе заметите еще баги, или будут еще пожелания, буду весьма благодарен и устраню/добавлю при первой же возможности.



Разве представляет какую то сложность наклепать пару формочек с кнопками?

При таком подходе – нет, но вот наклепать так, чтобы потом меня не материл каждый пользователь – наверное, да. Web-GUI я делал на скорую руку, и уже сейчас мне за него немного стыдно, хотя это всего лишь тест.

Гость (02/11/2014 18:07)   
Но это в любом случае, не зависимо от сборки в 64 или 32

Если пользователь укажет опцию plug:default, то ваша готовая 32-битная сборка oph_lin.zip без установки 32-битной версии этой библиотеки (libasound_module_pcm_pulse.so) работать не будет. На 64-битной системе эта библиотека как правило уже установлена, но тоже 64-битная.

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

Упустил этот момент, с указанием порта через двоеточие работает.

Не совсем понял, что сделать: отдельно в текстовом файле описание комманд или же смысл параметров в conf.txt?

Стандартые комментарии, принятые в конфигурационных файлах. Как например в файле gpg.conf, созданном после первого запуска gpg.



Это противоречит принципу портейбельности: все мои программы принципиально не лезут за пределы своей папки, ни на запись, ни на чтение

Такое вряд ли возможно, если только вы специально не подготовите для онионфона окружение chroot. Ваша сборка и читает и пишет в фс. Во-первых, использует разделяемые библиотеки



Во-вторых, наверное пользуется системным резолвером и читает /etc/resolv.conf при прямом дозвоне не через Tor (предполагаю что своего у онионфона нет). В третьих обращается к звуковым устройствам. В-четвёртых, читает /etc/passwd и /etc/group, т.к. даже для файлов в каталоге онионфона установлены системные права доступа. В-пятых, использует настройки времени /etc/localtime. Может что-то ещё.

Ну да, а кое-кому даже очень помог :). Хотя опционно лог можно сделать, но опять же в папке онионфона

Не обязательно всё протоколировать, достаточно записывать непринятые вызовы, чтобы знать кто звонил.
— gegel (02/11/2014 19:46, исправлен 02/11/2014 19:54)   
На 64-битной системе эта библиотека как правило уже установлена, но тоже 64-битная.

Я почему-то считал, что 32-битный статически линкованный бинар должен работать с 64-битной системой, в т.ч. библиотекой эмуляции alsa для pulse: онионфон использует лишь интерфейс, и по идее он должен бы быть универсальным. Но проверить не могу – сейчас нет подходящей платформы.

Стандартые комментарии, принятые в конфигурационных файлах.

ОК, напишу.

Такое вряд ли возможно

Несомненно, в такой интерпретации Вы правы. Я имел в виду – явно не пишут/читают конфигурационные файлы.И все же мне не хотелось бы выносить конфиги и логи за пределы папки, т.к. я рекомендую к использованию TC-контейнер.

и пишет в фс

Я не особо фамилярен с линукс, хотелось бы знать, какие следы ониофон оставляет при запуске, скажем, с флешки.

наверное пользуется системным резолвером

Кстати, ресолвер я могу прикрутить и свой на нижнем уровне (UDP) через 8.8.8.8, если это что-то дополнительно даст в плане безопасности.

достаточно записывать непринятые вызовы

ОК, сделаю.


ПС: По поводу вашего замечания: пожалуйста, перепроверьте установку кодера по умолчанию в параметре VoiceCodec в conf.txt. У меня все работает. Обратите внимание: в этом параметре указывается кодер (для исходящего аудиопотока). Декодер же используется в зависимости от актуального входящего потока (задается противоположной стороной). Причем кодер и декодер могут использоваться разные. Получатель не может выбрать декодер сам, разве что попросит абонента переключиться.

Гость (03/11/2014 01:01)   

заметил в последнее время увеличение ping 8.8.8.8 в 2 раза.
Гость (03/11/2014 08:24)   
хотелось бы знать, какие следы ониофон оставляет при запуске, скажем, с флешки

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



Можно опцию -mount добавить, чтобы исключить поиск в примонтированных фс. Меняется время модификации каталогов /tmp/{.esd-PID,pulse-XXXXXX}. Если при запуске oph выводились предупреждения, то добавляются записи в других журнальных файлах (/var/log/{messages,Xorg.0.log} и т.п.). Если используется sudo, то остаётся запись о запуске oph в /var/log/secure.

ресолвер я могу прикрутить и свой на нижнем уровне (UDP) через 8.8.8.8, если это что-то дополнительно даст в плане безопасности

Вряд ли это хорошая идея – дублировать существующее решение, ещё и с привязкой к сервису google.

перепроверьте установку кодера по умолчанию в параметре VoiceCodec в conf.txt

Может я не замечаю изменение кодека на слух, но независимо от того, какую цифру указываю для VoiceCodec, команда -C? выдаёт одно и тоже



Изменить можно только командой -C в запущенном онионфоне.

Какой кодек лучше или безопасней использовать – LPC10?
Гость (03/11/2014 08:43)   
При тесте звука -RV отображается кодек, соответствующий значению VoiceCodec, значит кодек видимо меняется. Но вывод команды -C? вводит в заблуждение.
— gegel (03/11/2014 21:34, исправлен 03/11/2014 21:47)   
вывод команды -C? вводит в заблуждение

Понял: не инициализируется переменая на старте. Поправлю.

Какой кодек лучше или безопасней использовать – LPC10?

В сборке 3 "военных" кодека: MELPE, MELP и LPC10. Они, по идее, тщательно проверены на невозможность исполнения данных при подаче фатальных фреймов. Остальные "гражданские" кодеки могут иногда валится, если на них слать рандом. Причем ничто не мешает на этапе разработки заложить в такой кодек специальные фреймы, прием которых приведет к заранее запланированному эффекту, причем обнаружить это будет чрезвычайно трудно: код весьма специфичный и сложный в плане математики, кроме того, обычно просматривают криптокод, но не аудио.
По соотношению качество/битрейт лучше всего AMR (его я использую по дефолту на минимальном битрейте + DTX), но в документации к его рефференс-коду честно предупреждают, что при подаче рандома может валиться. Наверное, действительно, для особых случаев лучше всего LPC10 – он наиболее старый и военный, поэтому вряд ли туда что-то специально было введено.


На github представил V02a (нет совместимости с V01a !!!). Бинарники пока не обновил, т.к. неожиданно всплыла проблемка с быстродействием кодека MELPE после старых коммитов: потребляет в 1.5 раза больше вычислительных ресурсов, затыкается на процессоре 700 MHz, а ведь работал нормально. Наверное, что-то с inline-функциями (либа стала существенно меньше), разбираюсь.


В новой версии оптимизировал загрузку ЦП на Windows и Linux отдельно, изменил IKE, ну и много мелких коррекций.


По поводу IKE:


1. Сделал протокол полностью симметричным: 3 шага с обменом одинаковыми по размеру, выглядящими рандомно пакетами на каждом шаге (см. в обновленном oph.pdf[link148]), раздел 7.4.


2. Блокировал возможность зондировать абонента на предмет наличия определенного контакта в его книге: теперь в случае отсутствия контакта в книге, в случае неверного получателя и в случае отбоя со стороны получателя для данного отправителя протокол не прерывается, а передается рандом. Протокол будет прерван лишь на следующем этапе, и инициатор не сможет различить причину прерывания, тем более если не имеет приватного ключа того, кем пытается представиться.


3. Блокировал возможность тайминг-атаки: перенес ответ вручную в другое место IKE, теперь невозможно оценить затраты времени на математику с публичными ключами при выполнении IKE (на нее накладывается время реакции пользователя).


4. Самое главное: добавил wPFS к защите ID инициатора соединения. Это поучительный пример различия теории и практики: увлекшись теоретической отрицаемостью, пропустил практический изъян, который в используемой модели отрицаемости таковым и не является. А именно:
при использовании предыдущего IKE злоумышленник некоторое время пишет трафик абонента, затем получает доступ к его приватному ключу и видит, кто и когда ему звонил. Это вполне реальная ситуация, тем более с учетом СОРМ и т.п. В теоретической модели отрицаемости абонент, конечно, может правдоподобно отрицать факт контакта с указанными абонентами (любой мог иммитировать их вызовы без знания соответствующих приватных ключей), таким образом информатор не сможет математически убедить судью в факте контакта. Но эта фраза уже вызывает улыбку в наших реалиях. Поэтому переделал протокол: сначала абоненты анонимно выполняют DH и согласовывают вспомогательный секрет, а затем защищают им свои ID и согласовывают рабочий секрет, уже с аутентификацией.


ToDo по криптографии: тщательно выверить возможность утечек памяти и использовать защищенное выделение памяти для критических данных (ключи, пароли, сесионные секреты и т.п.).

— gegel (05/11/2014 22:39, исправлен 05/11/2014 22:40)   

Обновил пакеты с бинарниками на сайте проекта[link162]. Пофиксины кодеки, теперь все они корректно собираются на 64 бит (спасибо коллеге, все же есть талантливая молодежь и из наших вузов). Также улучшено быстродействие за счет индивидуальной оптимизации кодеков.


Ближайшее ToDo:
– Пофиксить крипто, транспорт и пакетайзер, и можно будет собирать весь проект на 64.
– Ну, и безопасность кода отдельно для Windows и Linux, в т.ч. контроль эффектов оптимизации.

Гость (06/11/2014 14:05)   
На сайте проекта[link162] термин
Java-скрипты
несколько озадачивает – то ли там используется Java, то ли JavScript :)
— gegel (06/11/2014 20:54, исправлен 06/11/2014 21:07)   
то ли там используется Java, то ли JavScript

Используется именно JavaScript. Но не в проекте. Собственно, онионфон написан на чистом С. Он может быть запущен в виде демона, управляемого через контролирующий TCP-порт. Одним из протоколов, используемых для управления демоном (отсылки на него команд и получения ответов и уведомлений) является протокол WebSocket[link163]. В качестве клиента выступает любой браузер, в котором открыта специально созданная HTML5-веб-страница с элементами графического интерфейса (кнопки, флажки...) Для обеспечения функциональности этих элементов как раз и используется нативный JavaScript, поставляемый в виде отдельных js-файлов вместе с html-файлом страницы и исполняемый в браузере. К Java это никакого отношения не имеет.

Гость (19/11/2014 12:39)   
gegel, мне тут пришло в голову: у нас нет ни одного открытого протокола общения, который бы удобно гарантировал надёжную доставку сообщений. Самое близкое – опциональный XEP в Jabber, сигнализирующий, что сообщение было доставлено. В результате если видишь, что человеку не приходят сообщения, а потом он пропадает из сети, приходится перекопировать все эти недоставленные сообщения вручную.

Если планируете поддерживать возможность обмена текстом в onionphone, насколько сложно было бы приделать к нему эту функцию? Очевидно, что придётся содержать базу хэшей доставленных сообщений и время от времени её сверять. Звучит нелегко.
— gegel (19/11/2014 20:44)   
Если планируете поддерживать возможность обмена текстом

Возможность чата реализована: после установки соединения набираете в консоли текст, жмете Ввод, и текст отображается в консоли абонента (максимальная длина строки 252 символа) Ввод кириллицы не поддерживается, но при использовании веб-интерфейса браузеры кодируют строки в UTF8, поэтому кириллица проходит с максимальной длиной строки 126 символов.

у нас нет ни одного открытого протокола общения, который бы удобно гарантировал надёжную доставку сообщений.

Это, скорее, относится к серверным решениям (потеря может быть на сервере) и p2p UDP-решениям. Онионфон использует p2p TCP, а этот транспорт безпотерьный по определению.

Но Вы неожиданно обратили мое внимание на другую, скорее противоположную, проблему. Немного о шифровании в онионфоне:

Ониофон работает с шифропакетами, пакуемыми в TCP-поток. Каждый пакет содержит нешифрованное поле типа (длины пакета), шифрованное тело и МАС. На обоих сторонах организованы синхронные счетчики пакетов, принимающие участие в шифровании: для каждого пакета sponge абсорбирует ключ, счетчик и флаг инициатора, затем выжимает гамму. После ксора считается МАС: новый sponge аналогично абсобирует ключ, счетчик, флаг инициатора, затем шифропакет, и затем выжимает МАС. После отправки пакета счетчик продвигается вперед. Если МАС на приемной стороне не совпадает, то пакет отвергается, а если все ОК, то их счетчик синхронно также продвигается вперед (назад – никогда). В UDP я предусмотрел синхронизацию (в каждом пакете в открытом виде передаю 7 младших бит счетчика, что дает возможность восстановить актуальный номер счетчика – только вперед!-на приемной стороне при потерях). Но в TCP я это не использовал, понадеявшись на безпотерьность транспорта. Но не учел возможность спонтанных искажений в канале: если МАС не совпадет, пакет не зачтется и сбой синхронизации счетчиков будет фатальный.
Ваша функция с гарантией доставки как раз полностью обеспечивается (при любой потере или искажении сообщения связь будет неизбежно прервана). Но я пару раз во время тестирования наблюдал ситуацию спонтанного сбоя в обычных условиях с серией последующих сообщений "Lost crypto synchronization, trying to restore..." и разрывом соединения. А вот восстановление для TCP я как раз и забыл доделать. По уму надо бы при получении серии неверных пакетов пробовать подгонять счетчик вперед, предполагая предыдущие пропуски. Уведомления о неверном (и потерянном) пакете будет достаточно, незачем рвать соединение.
Исправлю.
Гость (20/11/2014 15:41)   
Подскажите, как соотносятся TorFone и OnionPhone?
Это разные проекты, или TorFone просто заброшенный проект, а OnionPhone его продолжение?
Непонятно чем надо пользоваться
— gegel (20/11/2014 20:08, исправлен 20/11/2014 20:08)   
как соотносятся TorFone и OnionPhone?

Ответ уже был тут[link164].
И еще в самом начале описания[link148] об этом упоминается.
Просто TorFone -это был первый блин, и хоть и не совсем комом, но возможности для совершенства были значительные. Не утверждаю, что онионфон – это идеал, но все же к его релизу опыта уже побольше.
Фактически онионфон сейчас в стадии альфа-тестирования, официального релиза и беты пока нет.

Гость (03/01/2015 22:33)   
Листал, листал этот топик, но так и не понял – где же страничка для быстрого старта, эта, что ли?
http://torfone.org/onionphone/indexru.html
— gegel (04/01/2015 02:05, исправлен 04/01/2015 02:09)   
но так и не понял – где же страничка для быстрого старта

Приношу извинения: в описании это действительно с первого прочтения понять трудно. Обязательно переделаю.
Конечно же, нет. Онионфон – приложение, работающее локально, и абсолютно не зависящее от внешних факторов (серверов и т.п.). Однажды скачанное (собранное) приложение никогда не сигнализирует о себе куда-то, не апдейтится, не может управляться извне, и не может быть блокировано (будет работать, пока работает Tor).


Для управления онионфоном из браузера необходимо открыть браузером файл indexru.html, находящийся в папке web пакета онионфона. (Запустите браузер и перетяните на него мышью указанный файл.)
Жмите Connect на открывшейся в браузере страничке. Если онионфон запущен, то браузер подключится к нему и Вы сможете управлять ониофоном из браузера, используя графические элементы.
Разобраться с управлением помогут всплывающие подсказки (потом их можно отключть).


Заметьте: выполнение JavaScript в браузере должно быть разрешено. Загруженный html-файл не "лезет" в интернет, использует только скрипты из js-файлов в папке web. И html, и js легко проверяются на отсутствие опасных элементов и инициализаторов внешних соединений. Браузеру нужен лишь доступ к localhost:8000, остальное можно запретить.


ПС: адаптировали код к сборке в 64-битных системах, тестируем.

Гость (04/01/2015 14:10)   
Простите, все равно не понял :( Вот на гитхабе лежит код, описание на английском, что с ним делать – непонятно.
Дальше: так надо запускать TorChat, или Онионфон работает самостоятельно?
Вот у меня Windows XP/32, у приятеля какая-то Федора, скорее всего тоже /32, что нам нужно пошагово сделать, чтобы говорить по Онионфону через Tor?
Простите на настырность ;)
— gegel (04/01/2015 19:00)   
так надо запускать TorChat, или Онионфон работает самостоятельно?

Собственно, нужен Tor в любом виде: в составе Торчата, Тор-браузера или отдельно. Сам по себе Торчат не обязателен, только лишь для удобства видеть онлайн-присутствие абонентов.

что нам нужно пошагово сделать

Прежде, чем расписать пошагово, уточните: есть ли у Вас и у Вашего приятеля Тор-браузер? Можете ли Вы найти и редактировать конфигурационный файл torrc? Я сам не совсем в курсе, где он локализуется в современных сборках TBB.

Просто тяжело определить, с какой степенью детализации необходимо расписывать: с одной стороны, чтобы все было понятно, а с другой – чтобы не показалось, что я Вас недооцениваю :).
Гость (04/01/2015 19:31)   
Спасибо за деликтность :)
Да, TBB присутствует, и частенько редактирую torrc
Гость (04/01/2015 19:44)   
TBB в Виндовс можно проинсталлировать куда угодно, и torrc может находиться например здесь:

C:\Program Files\Tor Browser\Browser\TorBrowser\Data\Tor\
— unknown (04/01/2015 19:47)   

[off] забавно получилось, как будто от слова деликт[link166] [/off]
Гость (04/01/2015 19:49)   
Ох уж эти знатоки римского :)
— gegel (04/01/2015 22:59, исправлен 04/01/2015 23:06)   

Последовательность действий для быстрого начала работы
(без компиляции и без использования PGP-аутентификации)


1. Скачиваем, распаковываем Тор-браузер, ищем torrc файл.
2. В torrc добавляем строки:
HiddenServiceDir hidden_service
HiddenServicePort 17447 127.0.0.1:17447
3. При запуске Тор-браузера будет создан каталог hidden_service
Открываем находящийся в нем файл hostname и копируем свой онион-адрес, например: gegelcy5fw7dsnsn.onion
Сообщаем его своим абонентам.
4. Скачиваем сборку онионфона:
для linux[link159]
для windows[link160]
Распаковываем в любую папку. Это не самые новые версии, но рабочие.
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. Используем графические элементы в окне браузера для управления онионфоном. Наводим мышью и получаем всплывающие подсказки.


Если что-то непонятно, или что-то пошло не так, пишите, чтобы у нас была обратная связь.

Гость (04/01/2015 23:28)   
Спасибо вам огромное! Ну, щас спою попробую и отпишусь всенепременно!
Может, будет учтено в ваших доках.
Гость (05/01/2015 00:00)   
Первые ласточки ;)

Дошел до п.3.
Насколько понял, его нужно изложить в повелительном наклонении, т.е.:
3. Запустить Тор-браузер. При этом будет создан каталог hidden_service

Далее.
При проверке п.7 получил
.20
TCP listen on 127.0.0.1:17447
WEB listen on 127.0.0.1:8000

Coder=AMR
Key access cleared
Access to secret key 'guest' is OK
Period size 64, Buffer size 2400
Period size 64, Buffer size 2400

Затем выполнил -RV и получил
Voice test running

Должен быть какой-то звук? Но его нет :(
Гость (05/01/2015 00:04)   
И включите свой TorChat, плиз
Гость (05/01/2015 00:06)   
Сорри, текст срезался буфером – правильно так:

Гость (05/01/2015 00:28)   
В-общем, тестового звука нет, поэтому перешел на п.12.
Насколько понял, для управления OP здесь уже используется не TBB, а какой-нибудь другой обычный браузер.
Ок, связался ним с OP, вижу красивую страничку с цветными кнопками.
А что дальше делать, куда вводить ID абонента, грубо говоря – чего нажимать – непонятно :)

И попутно из прочтения возник вопрос: OP только в симплексе работает?
Гость (05/01/2015 00:40)   
Маленькое замечание: после запуска OP в консоли и выдачи на экран нескольких команд попадаем в неопределенность, т.е. непонятно, где находимся.
Так может стоит в режиме запуска OP сделать некоторое понятное приглашение?
# и $ уже заняты, может % и т.п.

Выход из OP сообразил – Ctrl-C.
— gegel (05/01/2015 12:53)   
>В-общем, тестового звука нет, поэтому перешел на п.12.

Судя по сообщениям, звуковая система инициализирована.
Проверяем аудио: набираем -RV <Enter>, жмем <Enter> для включения передачи

Я имел в виду, что после активации режима теста (-RV <Enter>) надо нажать <Enter> еще раз для включения дуплекса.
Попробуйте, если получите голос, продолжим.
И попутно из прочтения возник вопрос: OP только в симплексе работает?
В дуплексе и в полудуплексе (симплекс не позволяет перебить собеседника, а полудуплекс всегда готов принять сообщение от собеседника, даже в момент передачи).

Выход из OP сообразил – Ctrl-C

11. Завершение разговора -H <Enter>, выход из программы -X <Enter>


Ctrl-C – более жесткое завершение. А двойное нажатие Esc – с чисткой памяти (при опасности).

А что дальше делать, куда вводить ID абонента, грубо говоря – чего нажимать – непонятно :)

Я не стал это описывать пока, т.к. там есть всплавающие ярлычки-посдказки. Кстати, при нажатии на Connect браузер подключается к Онионфону? Если да, то пойдем дальше.
Гость (05/01/2015 18:13)   

Это место совершенно непонятно: Для чего включать дуплекс? Какой голос должен быть услышан – зуммер или свой голос с микрофона?
Гость (05/01/2015 18:16)   
Кажется, приспособился: после "еще одного нажатия" Enter не сразу, а так секунд через десять, стал приходить свой голос с микрофона – это нормально?
Гость (05/01/2015 18:17)   
Даже секунд через 30
Гость (05/01/2015 18:42)   

Да, подключается – в окне логов появляется сообшщение "CONNECTED"

И вопрос: команды -RV и другие – они регистрозависимые?
— gegel (05/01/2015 20:18)   
Даже секунд через 30

Это не нормально, разберусь с этим. Скорее всего, какая-то адаптация авторегулировки усиления. Но важнее другое: задержка своего голоса должна составлять около полсекунды на кодеке AMR (он включен по умолчанию). Выдерживатеся?

Команды регистрозависимые, используются только заглавные буквы и цифры.

Да, подключается – в окне логов появляется сообшщение "CONNECTED"

Ну и хорошо. Поводите мышью над элементами, почитайте подсказки для начала.

Счелчком по плюсикам внизу страницы открываются дополнительные разделы настроек. Манипуляции с элементами управления аналогичны посылке команд онионфону. Например, в разделе "расширенные настройки звука" установка флажка "Тест голоса" аналогична -RI, а снятие его – команде -R.
Ввести команду вручную можно в строку "Команда" и нажать в конце <Enter>. В эту же строку можно ввести просто онион-адрес и нажать кнопку "Вызов", при этом будет выполнена попытка дозвона по указанному адресу.
В остальном там вроде как все понятно, спрашивайте, если не ясно.

ПС: возвращаясь к непредвиденной задержке в начале голосового теста, хотел уточнить, какую версию Вы используете – статически слинкованный бинарник по ссылке выше или же скомпилированную текущую версию с github?
Гость (05/01/2015 20:37)   
Я же и сказал: задержка своего голоса при тесте с кодеком AMR составляет до 30 секунд при дефолтовых установках.
Поэтому вначале и подумал, что программа не работает, т.к. не догадался, что задержка может составлять такое большое время, и видимо, обрывал тест раньше этого времени.
Что до управления через веб. Конечно, все подсказки вижу. Но поймите меня, обычного юзера: мало читать эти подсказки, надо еще понимать, для чего эти органы управления и каким образом нужно использовать. Поскольку непонятно, какой смысл в них заложили.

Иными словами – нужен алгортим действий пользователя для установления связи, поскольку эта "кабина Боинга-707" интуитивно совершенно непонятна. По сравнению, например, с uTox – там никаких вопросов не возникает. И кстати, он даже работает через Tor, причем почти без задержкк, но звук получается прерывистый и хитрый.

Верисю использую ту, которую скачал по данной Вами вчера ссылке.
Папка с OP называется oph01a_051114

Уажаемый Gegel, было бы очень здорово, если бы в будущем вы довели пользовательский интерфейс OP до интуитивнопонятного юзабельного состояния. Например, как в uTox – почти иделал понятности без подсказок.
И тогда многие дурацкие вопросы, включая да, и мои, отпали бы, а курс пользователей расширился.
Гость (05/01/2015 20:37)   
— gegel (05/01/2015 20:53, исправлен 05/01/2015 20:57)   
задержка своего голоса при тесте с кодеком AMR составляет до 30 секунд при дефолтовых установках

Вы хотите сказать, что слово, произнесенное Вами, звучит через 30 сек? Это вообще из области фантастики, в онионфоне нет такого размера буфера. Попробовал у себя – есть проблемы с PulseAudio в плане задержки. Закомментируйте строки в файле conf.txt


AudioInput=plug:default
AudioOutput=plug:default


и раскомментируйте


AudioInput=plughw:0,0
AudioOutput=plughw:0,0


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


Уажаемый Gegel, было бы очень здорово, если бы в будущем вы довели пользовательский интерфейс OP до интуитивнопонятного юзабельного состояния.

Я постараюсь когда-нибудь это сделать в виде графического интерфейса на Qt с двумя большими кнопками: зеленой и красной, как в старом мобильном телефоне. Думаю, Tor тоже должен идти в комплекте, но не представляю, как быть с его постоянными обновлениями. Но, с другой стороны, пользовательская аудитория Онионфона изначально специфическая, не думаю, что это всем понравится.

Гость (05/01/2015 21:43)   
Гм, так по дефолту они так и были, т.е.:

Да-да, обязательно две кнопки, и непременно большие, чтобы не промахнуться! :))
Что до Tor, то думается, опору на TBB можно вполне оставить, ведь с его установкой справляется самый обычный юзер. Зато бонусы от него – свовременная обновляемость и т.п. бесспорны.
Гость (05/01/2015 21:48)   
Сорри, увидел свою ошибку в строках, исправляю
Гость (05/01/2015 22:02)   
Извиняюсь, получил новые уточненные данные:
– при дефолтовых аудионастройках (программное управление) запаздывание голоса соствляет 6 секунд;
– при аппаратном управлении звуком запаздывание составляет десятые доли секунды, голос в наушниках следует практически сразу за микрофоном, как быстрое эхо.

Раньше запаздывание голоса составляло 30-40 секунд видимо из-за того, что был включен Pidgin и Jitsi.
Отключил сначала один, затем и второй, и получил вышеказаные данные.

Гослос, правда, очень глухой – это из-за AMR?
— gegel (05/01/2015 22:16, исправлен 05/01/2015 22:23)   
Гослос, правда, очень глухой – это из-за AMR?

Скорее всего, да. Или из-за гарнитуры. Но Вы можете перебрать все кодеки по очереди, вводя прямо во время теста команды от -С1 до -С18
Первая соответствует военному стандарту NATO 1200bps, предпоследняя – скайповскому SILK, а последняя – популярному SPEEX (он практически везде: Jitsi, Tox, ZAS). Но для Tor он чуть тяжеловесен. AMR 4750bps (-С7) – золотая середина, тем более он работает в режиме DTX, заменяя безголосые участки в 20 mS на короткие описатели, так что в среднем получается 2500-3000 bps. Это не VBR, реконструкция по зашифрованному потоку вряд ли возможна, тем более, что в одном пакете передается сразу аж 200 mS, и невозможно определить, какие из 10 фреймов голосовые, а какие – нет.


Также можете поиграться с вокодером. Включается командой -Q3 в режиме шепота, и командами от -Q30 до -Q150 в режиме робота. Отключается -Q-3


PS: только что тестировали текущую версию в виде сборки на 64 битах.
вылезли баги:
– кодек LPC10 на передачу с 64-битной сборки искажает pitch (женский голос);
– глюк с переключением на прямое UDP-соединение с использованием внешнего STUN.
Правим.

Гость (05/01/2015 22:35)   
Гарнитура хорошая, по ней другие мессенжеры работ звонко.
Здесь же даже при SILK звук заметно глуховатый.
Может, в Скайпе искусствено поднимаются высокие?

Попробовал вокодеры от -Q30 до -Q150.
Да, голос не узнать, но и слова тоже не разобрать :)

Хорошо. Что же дальше? Мы остановились на алгоритме действий пользователя по Веб-интерфейсу для проведения связи.

И можно ли сделать команды регистронезависимыми? Будет намного удобнее.
— gegel (05/01/2015 22:51, исправлен 05/01/2015 22:53)   
И можно ли сделать команды регистронезависимыми?

Можно, конечно. Записал на будущее.


Проведение связи: (считаем, что пп.1-14 коммента[link167] выполнены).
Вставляем онион-адрес абонента (без суффикса .onion) в строку "Команда" и жмем кнопку "Вызов". Видим, что онион-адрес преобразован в команду (добавлен -O). Жмем кнопку "Вызов" повторно, ждем соединения (ход соединения отображается в поле лога).
После установки соединения слышим вашего собеседника. Для передачи жмем-отпускаем кнопку "Речь-пауза" в режиме полудуплекса. Для активации дуплекса жмем эту кнопку и, не отпуская мышь, убираем указатель с нее, затем отпускаем. Онионфон остается в режиме передачи и приема (дуплекс).


Можете позвонить сейчас мне, я как раз тестирую: gegelcy5fw7dsnsn

Гость (05/01/2015 23:08)   
Разговарием с приятелем- класс!!!
Задержка конечно агроменная, но можно приспособиться.
— gegel (05/01/2015 23:11, исправлен 05/01/2015 23:19)   

Я только что разговаривал – пинг около 600mS. Жмете кнопку "Пинг" для получения. Жмете кнопку "Инфо" для дополнительной информации.

но можно приспособиться

Если уж совсем напрягает, используйте полудуплекс. Звуковой сигнал по окончанию передачи избавляет от необходимости произносить слово "Прием". Если жать лень, можете включить голосовой детектор (кнопка "VAD"). В этом случае передача активируется только при Вашем разговоре. Но для исключения срабатывания от голоса собеседника нужна гарнитура на обоих сторонах. И, возможно, придется подстроить чувствительность микрофона средствами ОС. Детектор отключается при нажатии кнопки "Речь/пауза".


ПС: попробуйте так же переключиться на прямое UDP-соединение (оба должны нажать кнопку "UDP"). В новой версии пока глючит, но в старой может работать. Возврат в Tor – нажатием кнопки "Tor" любым участником разговора.


Следующим этапом пойдет работа с ключами, разные виды аутентификации и защиты.

Гость (05/01/2015 23:56)   
Да – оказалось что большая задержка была обусловленна "программной" настройкой своего аудиоканала.
Суммарная задержка звука состоит из задержки в сети Tor, в буфере OP и аудиканале, и оказалось, что моя аудикарта&драйвер вносит наибольшую лепту.
Высставил "аппаратное" управление аудиоканалом, т.е.



и задержка стала очень даже небольшой, разговаривать стало совсем комфортно!

Все эти достижения по следам общения с автором проекта :)

А то, что разговор начинается после второго нажатия на <Enter> – это действительно очень правильно! Не ляпнешь чего нибудь ненужного :)
Гость (06/01/2015 03:01)   

Круто. Как руки дойдут, надо будет тоже заценить.
Гость (06/01/2015 11:58)   
Да, вот что мануал животворящий делает! :)
Теперь совсем другое дело, даже в консоли можно вполне сносно общаться.
И сразу вопрос по ней: в ней "забиты" предопределенные команды, и только? Потому что она не запоминает вводимые юзером команды, включая вызов собеседника по -O

И теперь по связке OP & TorChat.
Если судить по https://github.com/prof7bit/TorChat, то развитие программы остановилось 3 года назад. Между тем развитие сети Tor активно продолжается.
Как влияет "отсталость" TorChat на функционирование и безопасность OP?

Еще случайно обнаружился форк под названием JTorChat, хотя тоже староват:
https://github.com/jtorchat/jtorchat
зацените, пожалуйста, его пригодность для OP.
Гость (06/01/2015 21:02)   
В свете этих успехов меня заинтересовал симбиоз OnionPhone и Raspberry. Как думаете, взлетит?
— gegel (06/01/2015 21:55, исправлен 06/01/2015 22:11)   
по следам общения с автором проекта

задержка стала очень даже небольшой

По следам нашего вчерашнего сеанса, и моих тестов перед этим: адаптация к каналу таки происходит, уже через 5-10 минут разговора задержка уменьшается (отмечается пинг 300-400 мсек вместо 600-800 в начале). Это практически граничит с режимом комфорта и где-то эквивалентно задержкам в геостационарных спутниковых системах или в VOIP через GPRS.


Потому что она не запоминает вводимые юзером команды

Я даже не знаю, как и ответить. Дело в том, что консоль в онионфоне реализована совсем нестандартно. С целью использовать один поток на все я на старте перевожу консоль в raw и поллингом асинхронно получаю коды нажатия клавиш, затем обрабатываю их последовательности, формирую все остальное. Это как ncurses, только написано мною вручную и более компактно. Этот код больше embedded-ориентированный, и кажется диким системным программистам. Но зато он легко может быть портирован в железо без ОС: подтягивается библиотека звука (АЦП и т.п.), работы с SD-картой (файловая система) и ТСП-стек (для используемого чипа контролера сети), и имеем аппаратную реализацию. Попробуйте так портировать Jitsi :)
Отсюда косяки с консолью: это не совсем консоль по определени, и не стоит от нее ожидать полного функционала. Этот интерфейс задумывался как дополнение к другим UI (Telnet, потом WebSocket). В принципе в идеале сделать нормальную консоль в отдельном потоке, но есть ли в этом смысл, когда можно работать через тот же Telnet?

в ней "забиты" предопределенные команды, и только?

Не совсем так. Вводимые символа накапливаются в массиве до первого Enter (или других управляющих, например Del), затем массив анализируется. Если первый символ -, то интерпретируется как команда, иначе – как текст для отправки в чат.


И теперь по связке OP & TorChat

Собственно, связки нет. Просто я хотел использовать популярность TorChat для продвижения ОР как плагина к нему. Протокол ОР никак не связан с протоколом TorChat, использует отдельный порт на том же HS. TorChat имеет возможность отслеживать online-присутствие абонента, что более привычно для обычного пользователя и напоминает тот же скайп.
Что касается самого TorChat, то я тщательно изучил его протокол по исходникам (и есть публикация на хабре). Сам протокол видится безопасным, что бы там не говорили: он использует обоюдную аутентификацию по Abadi, достаточные по размеру nonce. Но доверие к нему полностью исходит из доверия к Tor: TorChat не имеет своего слоя шифрования и отправляет в Tor открытый текст, а для аутентификации использует онион-адрес в качестве ID и соответствующий приватный ключ HS (файл private_key в папке hidden_service). Файл ключа не шифруется, поэтому надо тщательно хранить эту папку (например, в контейнере TC), т.к. утечка фатальна для аутентификации и анонимности (PFS все же защищает предыдущие сеансы от дешифровки).
Что мне не нравится в протоколе TorChat, так это постоянная поддержка двух встречных соединений с каждым контактом. Это огромный оверхед по памяти (два активных сокета на каждый контакт в книге). Сделано ради того же online-присутствия.
Но на сегодня, несмотря на все попытки депопуляризировать TorChat, он де факто является стандартом общения специфической публики (начиная с закрытых хакерских форумов и заканчивая нарко и педо). Сейчас ссылку не вспомню, но пару лет назад была опубликована работа (авторы – русские) по исследованию портов в HS Tor, так TorChat был на втором месте после известного бота, положившего потом сеть. Так что менять протокол и предлагать свое – слишком амбициозно.
Абсолютно нет проблемы включить поддержку TorChat в ОР из коробки, но для мессенжера важен интерфейс (цитирую ZAS: кому интересно жить в сером и унылом чате), поэтому прежде надо сделать дружелюбный Qt GUI с большими цветными кнопками и смайликами. Я к этому авангардизму морально не готов сейчас, возможно, позже дозрею.


форк под названием JTorChat

Мне Java не особо симпатична, лучше уж оригинал на Piton. Но это мое личное мнение.

зацените, пожалуйста, его пригодность для OP

Для ОР нужен лишь Tor. Из чего Вы его возьмете, разницы нет. Наверное, для безопасности лучше использовать последний TBB. А представление ОР в качестве плагина для TorChat – больше реклама.


В свете этих успехов меня заинтересовал симбиоз OnionPhone и Raspberry.

Уже ответил выше по тексту. И не только на Raspberry, а и на другом открытом HW. Если планируется внешний Tor (например, в роутере), то можно OP сделать вообще без ОС. Проблема может быть только с кодеками (например, для MELPE нужно как минимум 40MIPS, 256K RAM и столько же быстрой ROM для кодовой книги).

Гость (06/01/2015 23:02)   

У торчата есть один принципиальный минус: если вы даёте ссылку на свой id противнику, это то же самое, как сообщить ему onion-адрес, работающий на вашем ПК. Это открывает возможность атакующему инициировать соединения с вами, трафик к вам и т.д. — огромное поле для всезвозможных атак по деанону и не только. Если же мы отказываемся от P2P-архитектуры, то придётся доверять третьей стороне, которая может отслеживать список контактов, моменты активности и т.д. Я бы просуммировал это так: централизованные onion-сервисы при прочих равных безопаснее, а децентрализованные не полагаются на присутствие в онлайне какой-то третьей стороны; для анонимности есть свои минусы в обоих случаях.
Гость (06/01/2015 23:55)   
Итак, для функционирования OP достаточно запущенного TBB, который предоставляет первому свой SOCKS, вроде так.

А TorChat умеет делать то же самое по прокси, как TBB?
Если да, то это очень хорошо, т.к. решаются сразу две полезные задачи:
– получаем индикатор он-лайн присутствия собеседника;
– обзаводимся криптующим текстовым мессенжером
(правда, остается вопрос влияния "свежести" TorChat, но если правильно понял, на безопасность он никак не влияет, т.к. сам не шифрует, а пользуется сервисом Tor).

Если отказаться от TorChat (либо он не заменяет TBB по поддержке SOCKS), то теряем не только текстовый мессенжер (не так печально), но и он-лайн индикатор (важнее).
И тогда встает вопрос: чем заменить этот он-лайн индикатор?
Потому что если воспользоваться вспомогательным софтом типа Jitsi, Tox, то напрочь теряем с таким трудом добытую анонимность.

Просто пытаюсь смоделировать наиболее употребимую и практичную схему использования OP с учетом вышеописанных реалий.
Гость (07/01/2015 01:38)   
Насчёт TorChat: он не помер. Сейчас он развивается в направлении переписывания в виде плагина для Pidgin на FreePascal.

gegel, насколько сложно, зная список функций в OP, использовать его в своей программе? pfactum разделил код на несколько библиотек, за что ему очень большое спасибо. Правильно ли я понимаю, что для включения OP в свою программу достаточно запустить отдельный поток, в котором реализовать свой loop, аналогичный main() из libdesktop/oph.c? (а также прилинковать все остальные библиотеки из OP и подсунуть процессу конфигурационные файлы от OP)
— gegel (07/01/2015 12:06, исправлен 07/01/2015 12:14)   
если вы даёте ссылку на свой id противнику, это то же самое, как сообщить ему onion-адрес, работающий на вашем ПК. Это открывает возможность атакующему инициировать соединения с вами, трафик к вам и т.д.

Я не готов обсуждать безопасность HS в целом. Но онион-адрес по определению публичный. Вроде как были работы по деанонимизации в течение 20 мин. глобальным наблюдателем. Хотя многие держат свои онион-ресурсы дома.
С другой стороны, если использовать онион-сервер, то по определению он будет недоверенный, а Вы все равно к нему будете подключены. Какая разница для тайминг-атаки, подключены Вы к злоумышленнику, или он к Вам?


И еще важный момент: онион-сервер увеличит латентность вдвое, что весьма критично для ОР.


pfactum разделил код на несколько библиотек

Талантливая молодежь, КПИ марку все же пока держит :)


Правильно ли я понимаю

Именно так. Причем из цикла можно выбросить парсинг ввода с консоли и передавать команды другим удобным способом, добавив свои функции в ctrls.c Я старался все тщательно комментировать, если что-то не понятно, отпишите, я постараюсь донести ход своей безумной мысли, вместе поправим до юзабельного компромисса.


Итак, для функционирования OP достаточно запущенного TBB, который предоставляет первому свой SOCKS

Вместо TBB пишите Tor.
Именно Tor является неотъемлемой частью и TBB, и OP, и TorChat.
Tor предоставляет SOCKS5 интерфейс, к которому подключаются соответственно Mozilla, демон OP, оболочка TorChat и т.д., причем могут все одновременно. Это для исходящих вызовов: после подключения к интерфейсу Tor-у отсылается онион-адрес, пробрасывается прозрачное соединение, и далее обмен происходит аналогично как и при p2p-соединении.
Для входящих вызовов Tor монтирует HS с указанием порта назначения. Клиент (OP, TorChat) слушает указанный порт. При входящем соединении Tor подключается к порту клиента, и опять же обмен происходит, как при p2p.

Гость (07/01/2015 13:06)   
По поводу Raspberry. Раз он подходит, что из этого хлама нужно купить? http://raspberry.com.ua/c/raspberry-pi/
Понятно, что нужно взять сам комп с буковкой "B+" – Raspberry Pi Model B+ 512MB как наиболее крутой. А остальное? Например, нужны ли доп. звуковые карты, или можно обойтись бортовой? Дисплей, клавиатура? Что-то еще?
Не сочтите за рекламу – это Украина, господа! :)
Гость (07/01/2015 13:47)   
Существует ли консольная версия torchat? Если нет, то обязательный GUI с X-сервером – высокая плата за отслеживание собеседников онлайн. Мне представляется это излишеством, в обычной телефонной связи такой возможности нет и заметного недовольства не вызывает. К тому же отслеживание контактов означает генерацию постоянного трафика, что упрощает деанонимизацию.

Полезная функция – сохранение переписки, и если планируется развивать текстовые функции онионфона, то имеет смысл её включить (как и поддержку кириллицы). Хотя в идеале лучше отдельный консольный текстовый мессенджер со своим шифрованием.

Потому что она не запоминает вводимые юзером команды, включая вызов собеседника по -O

gegel не написал, но в menu.txt можно добавлять часто используемые команды, в том числе адреса собеседников -O.



Два недостатка

1. Добавления в 9:Contacts не работают, а секции 1-8 содержат мало свободного места.

2. Пробелы в командах и после ':' не допускаются
Гость (07/01/2015 14:46)   

Мы третий день обсуждаем и тестим именно консольную версию, вьезжайте в тему, товарисч :)
Гость (07/01/2015 15:16)   
Мы третий день обсуждаем и тестим именно консольную версию

Для вас онионфон и торчат – одна и та же программа?
— gegel (07/01/2015 15:27, исправлен 07/01/2015 15:46)   
Мы третий день обсуждаем и тестим именно консольную версию

Имелся в виду TorChat, а не OP. На сколько я знаю, нет.

Мне представляется это излишеством

Я тоже так считаю, но, к сожалению, имеем протокол TorChat, постоянно поддерживающий по 2 соединения с каждым контактом. Надо будет подумать: возможно, получиться извратиться и сделать клиент, по протоколу совместимый с остальными, но устанавливающий соединения лишь по требованию. Из остальных клиентов он, понятно, будет видеться оффлайн.
Желание контролировать онлайн-присутствие пошло из ICQ и затем и Skype, народ просто привык. Но, если вдуматься, с точки зрения безопасности это однозначно минус. Действительно, мобильной связью без этой функции все пользуются, и не возмущаются.
Я уже писал, что могу добавить поддержку TorChat в OP из коробки, а также сделать отдельно консольный TorChat. Но у меня нет идей, как лучше и юзабельнее сделать мультичат в консоли, желательно без ncurses.


но в menu.txt можно добавлять часто используемые команды

Я еще не успел описать здесь и 20% того, что заложено в коде (хотя в англоязычный документации почти все есть).
Меню 9 работает по другому: оно создано для навигации по записной книге с помощью клавиш "вверх" – "вниз" (или соответствующих кнопок в webGUI). Предполагалось контакты вносить именно в записную книгу, но можно и в основное меню: выбросите ненужные команды, например, из меню 7 удалите часть неиспользуемых STUN-серверов для переключения на прямое соединение (все равно это пока глючит после адаптации к 64 бита).


О записной книге мы еще вообще не вспоминали, как, собственно, о публичных ключах, подписанных PGP и их автоматическом добавлении в записную книгу вместе с адресом и другими опциями, об уровнях доверия, о приватных EC25519 ключах и их защите, о собственной идентификации (гость или конкретный ник соответственно имеющемуся приватному ключу). Также о навигации по записной книге, поиске с фильтром, автодозвоне т.п.
Например, команда -E без параметра осуществляет повторный дозвон по ранее используемому номеру (то, что Вы искали в консоли), а с параметром – извлекает из адресное книги адрес для указанного имени в виде готовой команды дозвона.
Все это продумывалось не день и не два, гибко и ненавязчиво.


Пробелы в командах и после ':' не допускаются

Мне уже на это намедни указал pfactum, наверное в этом есть какая-то религия для линуксистов. Записал, позже учту и переделаю вместе с игнорированием регистра.


что из этого хлама нужно купить?

Я сейчас не готов ответить, хотя это и близко к моему профилю. Оценю ситуацию, отпишу.


Не сочтите за рекламу

Да, это точно. Раньше только китайскую утварь по смешным ценам, а теперь и гранатометы в ассортименте, с расходными материалами.

Гость (07/01/2015 16:14)   

Прошу прощения – машинально промахнулся, думая, что речь идет о OP. Значит, он стал уже привычкой :)

Для Gegel: обнаружились две несуразности.
1) Еще один приятель отконфигурировал TBB и OP в обновленной Windows 7 SP1,
но при запуске OP получил следующую ошибку:


Снова перепроверил конфиги, крамолы не нашел, запустил 2-й раз – в этот раз запустилось нормально.

2) Начали разговаривать. Проговорили минут 20-30, затем у меня по экрану поперли сплошняком строки типа:


и еще через некоторое время разговор то ли повис, то ли оборвался, так и не поняли.
— gegel (07/01/2015 20:00)   
Windows 7 – удивительная штука, у меня даже нет сейчас компьютера с ней, чтобы проверить. И отчет пользователю об ошибке тоже емкий. Давайте пока не будем заострять внимание на одном тесте. Если будет вырисовываться система, будем разбираться. Второй лог вообще непонятен: OP вашего друга думает, что его пингуют, и отвечает. Кстати, платформа у него 32 или 64?
Гость (07/01/2015 21:26)   
У него точно "64", и я его еще не пинговал.
А у вас, если не секрет, какая используется Windows?
— gegel (07/01/2015 22:04)   
XP SP3 32 bit. Мы общались на Atom 2*1000 МГц, 2G RAM.
Кстати, я тестирую ОР в Linux (Ubuntu) на Asus EEEPC первой модели (Celeron 700 MHz, 512 RAM), что соответствует Raspbery B+. Вместе с запущенным TBB перфоманса достаточно. Для MELPE1200 – как раз в притык, для используемого по умолчанию AMR475 – с большим запасом.
Гость (07/01/2015 22:48)   
Вот и ладушки! Значит, уже можно прицениваться к Raspberry? :)
— тестерТьюринга (08/01/2015 08:16)   
gegel:
XP SP3 32 bit.

В Windows начиная с Vista не всё так просто с анонимностью в сети. Например, dns-запросы браузера в сеть дублирует svchost-процесс. К чему это в дальнейшем ведет – неизвестно. Отключить в службах всё лишнее так, чтобы осталось одно ppp-соединение у меня не получилось. Приходится блокировать файерволлом, но сколько обычных пользователей станет этим заниматься…
— gegel (08/01/2015 10:09, исправлен 08/01/2015 10:11)   
Значит, уже можно прицениваться к Raspberry?

Да, я думаю, проблем не возникнет. Судя по публикациям, Tor там успешно работает. Если использовать Linux-подобную ОС (скажем, тот же Debian), то проблем не должно быть после сборки OP для платформы ARM. И если эта ОС поддерживает ALSA.
Но возникает интересный вопрос: а почему, собственно Raspberry c Debian на борту доверяемее, чем тот же Asus EEEPC? Железо и там, и там серийное, ОС одинаковая. Разве что закрытый BIOS.


ПС: комплектация Raspberry для использования в качестве платформы для OP, наверное, должна включать 320*240 дисплей с точпадом и WiFi-модуль. Звук, я так понял, есть на основной плате (надо уточнить, есть ли поддержка ALSA в поставляемых ОС).


В Windows начиная с Vista

Согласен, сам не пользую и никому не рекомендую. Уж лучше LiveCD (ссылка на rutracker есть в начале темы).

Гость (08/01/2015 10:53)   
Но возникает интересный вопрос: а почему, собственно Raspberry c Debian на борту доверяемее, чем тот же Asus EEEPC?

Возможно, дело в размерах – на основе raspberry можно создать мобильное устройство.
Гость (08/01/2015 11:14)   
сделать отдельно консольный TorChat. Но у меня нет идей, как лучше и юзабельнее сделать мультичат в консоли

Чем простой вариант не подходит – просто скидывать сообщения в одну кучу, например



И добавить навороты с шифрованием и безопасностью как в онионфоне.

Вообще-то я дилетант в текстовых мессенджерах и почти ими не пользовался из-за недоверия к серверам и необходимости регистрироваться. Поэтому продуманных идей нет. Может кто более знающий подскажет.
Гость (08/01/2015 11:46)   

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


Нет, можно делать приватные onion-адреса, и подключиться к ним можно будет, только прописав в torrc пароль доступа.


Бред это[link168], уже 100 раз критиковали.


Да, а другие на работе. И потом присаживаются надолго, когда петух клюнёт.


Я могу поставить свой сервер и использовать только его. :-)


Я исхожу из этого[link169].


Команда от опций и их значений всегда отделяется пробелами. Между опцией и её значением ставится либо пробел, либо равно. Опции предваряются одним или двумя минусами. Это прозрачно интегрируется с UNIX-шеллом. Есть альтернативный подход, чем-то более здравый (CISCO IOS, BSD), там минусов нет, и названия опций могут быть сокращены до тех пор, пока они однозначны, но всё равно всё друг от друга отделяется пробелами (этот стиль использует, например tmux).
— gegel (08/01/2015 12:52)   
Я могу поставить свой сервер

Вы уверены, что это повысит анонимность? Напоминает проблему TOR->VPN. Оплата хостинга, доверие хостеру и все такое.

и использовать только его

И это тоже.
Гость (08/01/2015 13:14)   

Анонимный список контактов — не такая уж большая утечка, содержимое разговоров будет всё равно зашифровано.


Если общаться с недоверенными людьми, то да. Давать доступ к домашней машине из сети, да ещё и невесть кому — это очень опасно. Тут целое поле для атак. И именно так работает p2p в Tor — каждый превращается в сервер и понижает свою анонимность/безопасность с клиентского уровня до серверного.

К слову, я не помню ни одного случая, когда кого-то из клиентов Tor нашли исключительно из-за ограничений в безопасности/анонимности самого Tor-протокола. Однако, HS'ы, похоже, таким образом иногда находили (хотя официально всё объясняют через parallel reconstruction).
Гость (08/01/2015 14:49)   
Анонимный список контактов — не такая уж большая утечка

Утечка графа социальных связей это серьёзная угроза.

Давать доступ к домашней машине из сети, да ещё и невесть кому — это очень опасно.

Сервер это тоже невесть кто, принципиальной разницы нет. Хотя один непосредственно контактирующий узел безопасней произвольного количества. Для подстраховки можно зачрутиться, и чем проще клиент, тем легче это сделать. Простой консольный клиент труднее сломать. Для критичных контактов лучше чатиться на VPS (зайти через Tor по SSH и запустить ониончат в консоли), это будет в некотором роде аналогом сервера.
Гость (08/01/2015 18:06)   
Но возникает интересный вопрос: а почему, собственно Raspberry c Debian на борту доверяемее, чем тот же Asus EEEPC?
и
Возможно, дело в размерах – на основе raspberry можно создать мобильное устройство.

Если взять в расчет необходимость для Raspberry клавиатуры, дисплея и БП, то не такая уж мобильность получится.
С другой стороны, Asus EE EPC, который позиционировался как ноутбук с ценой не более $100, сейчас продается за $300-500 – нафиг, нафиг!

А что такое здесь "серийное железо"? Вшитый серийный номер, что ли?

Для Gegel: насчет пробелов и пр. Не покажусь оригинальным, но на всякий случай напомню: в BSD/Linux в командной строке между ключами и их параметрами можно использовать пробелы, а можно и без них – командный процессор понимает и то, и другое, так что эти правила можно использовать и в OP. По крайней мере линуксодиам будет привычнее.
Что касается регистровой зависимости в BSD/Linux, то там уже лет 40 заложен этот маразам, от которого до сих не могут избавиться.
И лучше его в OP не повторять, а сделать подобным DOS'у.
Гость (08/01/2015 19:18)   
Насчёт пробелов правильно, а регистровая зависимость не маразм и не заметил, чтобы в Linux была тенденция к избавлению от неё. Это хорошо, доступно больше опций и порядка больше.
Гость (08/01/2015 20:14)   

1. Наличие перечисленного приветствуется для любого ПК, но размер Малинки меньше того же Асус.
2. Мобильность одназночно при использовании в качестве роутера (не требуется никакой перефирии).
Гость (08/01/2015 21:21)   
А у меня есть фикс-идея! :)

Давайте скинемся и купим Gegel'ю комплект Raspberry для дальнейшего развития и мобильности OP!
Человек ведь работает на сообщество даром, на чистейшем энтузиазме, так хоть чем-то ему поможем.
На этом форуме нас немного, но и клубника ведь тоже недорогая.

Вторая идея, конечно, еще лучше – купить ему какой-нибудь массовый смартфон для той же цели. В этом случае мы получим сразу фсе – проц, память, дисплей, клавиатуру+мышь, микрофон, динамик, аккумулятор – в-общем, по-настоящему готовое мобильное переговорное устройство.
Правда, тут есть заковыка – на него нужно будет суметь портировать приличный Linux (Debian). Потому что сами понимаете, ни Android, Windows, IOS и прочая с точки зрения безопасности не выдерживает никакой критики, и в них OP будет совершенно неуместен.

Если согласны, отписывайтесь, и организуем сбор средств,
Гость (08/01/2015 22:28)   

Никчему, тем более, он вроде сам не очень отзывался о смартфонах (если не ошибаюсь).
При первом варианте, смартфон может через Малинку и выходить в инет (однозначно лучше вариант).

А лучше, имхо, оплатить подробную инструкцию по установке и отладке (оборудование как расходный материал будет включено).
Гость (08/01/2015 22:59)   
Значит, уже двое согласных? Кто больше? :)
Гость (09/01/2015 00:54)   

Это же торчат, там каждый контакт в должной мере анонимен и не должен светить свои ФИО. Для тех, кто светит, можно завести отдельный акк.


Хорошая идея. Что-то типа такого: TorChat запускаем на удалённом сервере, но делаем так, что сообщения шифруются ещё одним слоем (к примеру, OTR), из-за чего расшифровываются они не на стороне сервера, а на клиенте.


Виндузятник детектед.

Про Raspberry: не знаю, с чего это за него все ухватились. Железо — что попало, полное проприетарной фирмвари, вообще не в идеологии открытого железа и BIOS'ов ни разу[link170]. Как роутер эта железка сомнительна, т.к. нужны хотя бы 2 сетевых, поэтому придётся докупать либо Wi-Fi-роутер, либо USB-сетевую. Если использовать как платформу для OP, то также не вижу смысла. Коннектиться к ней надо будет по сети, значит, та машина, откуда коннектятся, должна быть доверенной. А раз она сразу доверенная, зачем выносить функционал OP куда-то ещё? Чем это хуже запуска OP в виртуалке? Пусть gegel доведёт софт до ума хотя бы на ПК, до переноса на железо ещё дойти надо.
Гость (09/01/2015 07:18)   
Это же торчат, там каждый контакт в должной мере анонимен и не должен светить свои ФИО. Для тех, кто светит, можно завести отдельный акк.

Заводить для каждого собеседника отдельный онион-адрес непрактично. Обычная практика – создать свой контакт разослать его возможным собеседниками, опубликовать в Интернете. Достоверно проверить соблюдение собеседниками анонимности невозможно. Даже если они не указывают свои реальные данные, их деятельность может профилироваться по другим признакам.

на него нужно будет суметь портировать приличный Linux (Debian)

Такая "малость" наверное ещё сложнее чем написать онионфон. Проще портировать его на Андроид, что gegel и собирался сделать.
Гость (09/01/2015 18:02)   
Виндузятник детектед.
Отнюдь. Но и не красноглазый линуксятник, коих легион. Так что имейте смелость признать, что и виндовс имеет некоторые свои преимущества.

Про Raspberry: не знаю, с чего это за него все ухватились. Железо — что попало, полное проприетарной фирмвари, вообще не в идеологии открытого железа и BIOS'ов ни разу. ............
Критикуя, предлагайте что-то лучшее, и вам будут только благодарны. Так что весь во внимание.

Пусть gegel доведёт софт до ума хотя бы на ПК, до переноса на железо ещё дойти надо.
Вам лично Gegel что-то должен? Вы его финасируете?
На мой взляд, настоящих созидателей (в отличие от большнства бездельников на этом сайте) нужно хоть как-то стимулировать, пусть даже такой мелочью, как покупка железа для экспериментов.

Проще портировать его на Андроид, что gegel и собирался сделать.
Проще, ага. Уже писалось: Android и безопасность – вещи несовместимые. Особенно еще потому, что в него засунул свой длинный шпионский нос Гугль. Получитя Skype нумбер 2.
Гость (09/01/2015 20:20)   

И почему он проклял, отчего? Тут непонятно.
Что-до проприетарности Raspberry: а что есть подобное НЕпроприетарное? Openmoko, что ли – так он давно загнулся.
В самом деле, после критики хотелось бы услышать достойные альтернативы.
Гость (10/01/2015 06:09)   
>Виндузятник детектед.
Отнюдь. Но и не красноглазый линуксятник, коих легион. Так что имейте смелость признать, что и виндовс имеет некоторые свои преимущества.

Виндузятник берётся рассуждать о "маразмах" Linux/BSD и требует чтобы было как в ДОСе. Для обращения в виндузячью веру с её мифическими преимуществами вряд здесь благодатная почва.

настоящих созидателей (в отличие от большнства бездельников на этом сайте)

Тебе тут что-то должны, не ты ли тот клоун, который забесплатно требовал инструкций и хауту для чайников? Со своими претензиями и нравоучениями иди на йух.

Android и безопасность – вещи несовместимые

Достаточно повторять как попугай банальные фразы (причём чужие), и можно требовать от других неподъёмной задачи по переносу Linux на смартфон.
Гость (10/01/2015 12:50)   

Что такое Raspberry Pi[link172]

Аргументируйте пожалуйста в чем сомнительность?

У сабжа есть следующие необходимые интерфейсы:
Ethernet[link173]
– 4 USB порта, в 1 из которых вставляется wifi-адаптер.
В чем проблема?

Не очень понятно а как еще можно?

Опять не понятно что вы хотите сказать? Если роутер часть вашей сети, то наверно вы даете доступ доверенным устройствам. Хотя никто не мешает сделать общественный доступ.

Хотя бы тем, что ПК с виртуалкой на борту, будет нелегковестной и некомпактной конструкцией и, уж точно, не стоимостью 100$.

Другой вопрос, что есть не только Малинка, но Ардуино. Ну кому что нравится.
Гость (10/01/2015 13:01)   

Вряд ли это является заковыкой, скорее правильно настроить – вот что непросто, но этот вопрос НИКАК не связан с Raspberry.

И да, уж наверно этот вопрос нужно прекратить педалировать, т.к. прогресс не стоит на месте и увеличение доли гаджетов в повседневном пользовании нельзя игнорировать.
Гость (10/01/2015 19:16)   

Это «обычная практика» у людей, которые не заморочены безопасностью. Те, кто заморочены, тот же свой jid кому попало не дают, и уж, тем более, не выкладывают его в сети на публичное обозрение. Вы же свой мобильный телефон не выкладываете? Тут так же. Если есть некоторое доверие к собеседникам и их квалификации, то это именно тот случай, который имелся в виду под «ФИО не светят». Многие не скрывают, что используют соедиение для всего и вся только через Tor, так что кто стоит за конкретным jid'ом — это ещё постараться узнать надо, не такая простая задача.


Имею смелость сказать, что не так давно тут все вопросы по винде предлагалось считать оффтопиком и номинировать на снос.


Лучшее для роутера или для того, чтобы таскать с собой? Это разные вещи. Роутерами особо не интересовался, но могу вспомнить хотя бы те же соекрисы[link176]. По крайней мере, к ним не было тех претензий, какие были к RP.


Для мобильных платформ? Не знаю. Конечно, RP лучше Андроида, в этом сомнений нет. :-)


Если делать из него роутер, придётся обвешивать всё это периферией. Если делать из него телефон, придётся ещё много чего приделывать: экран, клавиатуру и т.д. Вроде были в продаже таблетки с Linux на борту и не особо проприетарные, ещё давно рекламировались. Они могли бы сгодиться. И ещё раз: сделать компактный удобный анонимный и безопасный криптофон — это более сложная задача, чем аналогичное приложение для ПК.


Если это роутер, к которому подсоединён монитор и клавиатура, то можно локально управлять, а не по сети.


Под столом. :-) И давно это стая мух вдруг определяет, что считать безопасным? Да пусть эти гаджеты хоть у каждого будут в количестве 100 штук, более безопасными они от этого не станут, вам только АНБ скажет спасибо[link177].

Претензии к RP:
  1. Фирмвари дофига нужно, чтобы работало. Это грозит блобами. Блобы грозят уязвимостями, в т.ч. эксплуатируемыми удалённо (примеры были, ага).
  2. Свободные ОС как-то очень плохо поддерживают RP. Linux допилили, а с BSD было совсем тухло. Это так потому, что железо было выбрано соответствующим, без спецплясок не запустишь.
  3. На одном физическом сетевом интерфейсе не сделать физического разделения сетей. А чтобы сделать второй, придётся докупать или USB-сетевую или Wi-Fi-роутер, подключать всё это, настраивать, разбираться с поддержкой. Допустим, в Linux конкретная USB-сетевая заведётся, а в BSD? Был бы RP полноценным роутером с нормальными сетевыми, такого вопроса, скорей всего, не возникло бы.
Гость (10/01/2015 19:19)   

В смысле? Увеличение доли гаджетов способствует их безопасности, что ли? Тут бы не путать: железо гаджетов – это одно, а Android – совсем другое.
И если по поводу НЕбезопасности Android есть множество мнений, толкований и публикаций, в-общем, есть устоявшееся мнение, то если вы с этим несогласны, приведите обратное в пользу его безопасности.
Лтчно для меня на 100% достаточно, что за ним торчат уши Гугла.
Гость (10/01/2015 19:27)   
Меня на минуту опередили, а так мнения совпали :)
Но возник вопрос из-за этого:
и т.д.
Погодите, при чем тут вообще роутер? Мы здесь обсуждем возможную платформу для OP, не так ли? Желательно мобильную, от гаджетов.
Так что роутеры лучше в отдельную ветку, для них требования могут быть совсем другими.
Гость (10/01/2015 19:54)   

и какой же? какая периферия нужна для роутера? откройте нам глаза )


а если табуретку, то что нужно приделать?


путаете.. с аспирином на борту есть.


вы серьезно предполагаете сделать из Малинки криптофон? )))


то это ПК )))


пора бы вылезти оттуда, а то жизни не видите )


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


эта 3-х значная хрень в россии не работает. на русских не действует!


это из практического опыта или опять начитано под столом?
Гость (10/01/2015 19:59)   

При том, что разговор плавно перетек в эту плоскость. Если вам неинтересна эта тема, просто игнорируйте. Зачем напрягать мозг там, где это не нужно.
Гость (10/01/2015 20:13)   

Тема сама по себе интересна, но зачем офопить и захламлять тему, посвященую OP? Это ей не на пользу.
Гость (10/01/2015 20:23)   

Спорить не буду, но, как и во многих темах, что есть то есть. Скажем так, не я это начал и не мне исправлять.. Просто есть некомпетентные высказывания, которые провоцируют тренд не в направлении. Можно же, перед тем как высказываться, хотя бы почитать банально Вики.
Гость (10/01/2015 20:46)   
Идея о роутере пошла отсюда:

Если взять в расчет необходимость для Raspberry клавиатуры, дисплея и БП, то не такая уж мобильность получится.
С другой стороны, Asus EE EPC

смартфон может через Малинку и выходить в инет (однозначно лучше вариант).

RP начали сравнивать с нетбуками, с ПК, потом предлагать через RP выходить в сеть (можно понять как то, что посторонний смартфон выходит через RP в сеть, используя RP как роутер) и т.д.
— gegel (10/01/2015 23:01, исправлен 10/01/2015 23:12)   

Возможно, я не прав, но проблему безопасности HW-реализации Онионфона (и не только)
вижу так:
1. Уязвимость на уровне микрокода езернет-контроллера. Например, производитель закладывает в чип магический пакет, по получению которого чип отсылает ответный udp-пакет по наиболее часто
используемому МАС-адресу (предположительно это шлюз) и на заданный IP. Таким образом, возможна моментальная деанонимизация, но только не при работе с HS. Бороться с этим невозможно, разве что использовать старые, но еще выпускаемые, примитивные езернет-контроллеры.
2. Закладка на уровне firmware (загрузчика, BIOS). Поэтому загрузчик должен быть OpenSource. Если в RB это не так, то нет смысла использовать.
3. Закладка на уровне ОС. Даже если ОС OpenSource, то при портировании под архитектуру можно вставить кучу трудно обнаруживаемых закладок, при обнаружении списать на ошибки. Поэтому в идеале не использовать ОС вообще.


ОР использует ОС для:


– работы с сетью на уровне сокетов. Вместо ОС можно использовать открытый TCP-стек, имеющийся для некоторых чипов – езернет-контроллеров МАС-уровня (например, ENC28J60 от MicroChip). Кода там немного, можно все перепроверить на предмет закладок (или все переписать под себя, это реально).
Контроллер подключается по трехпроводному SPI-интерфейсу. Т.к. больших скоростей не надо, то можно организовать софтовый интерфейс и цеплять контроллер на любые IO процессора, т.о. производитель ну никак не сможет использовать закладки на уровне железа.


– работа с файлами на уровне open/close/get/put. Можно использовать готовую библиотеку для поддержки SD-карт. Опять же, цеплять карту можно к любым IO, интерфейс организовать софтово.


– таймер, используется для отработок заданных интервалов, в оригинале использует gettimeofday и легко пишется под любое железо.


– звук, использует сэмплирование 13 бит на 8000Гц, для записи подойдет АЦП, для воспроизведения – ШИМ. Надо лишь написать простенькие процедуры, заменив файл audio_alsa.c


– HW RNG, использующий АЦП шума полуоткрытого перехода обычного GaAs-светодиода. Лучше, чем Havage.


Но есть одно но: Tor. Он использует массу ресурсов, поддерживает кучу открытых сокетов, т.е. наверняка портировать его код с embedded-систему без ОС будет почти невероятно. Так что проблема с доверенным роутером остается. При компрометировании такого роутера пострадает анонимность, но не шифрование.
В принципе, я могу позже попробовать запустить Онионфон на каком-нибудь железе без ОС (даже, возможно, самодельном – для параноиков) в портативном исполнении в виде гарнитуры (или по типу HW VIOP устройства), подключаемой езернет-шнуром к торифицированному роутеру (эти проекты есть в OpenSource, но вопрос доверия открыт).


И как пример интернет-устройства[link178] без ОС с шифрованным соединением с сервером по заданному протоколу (кстати, имеющему вопиющую уязвимость, см. NewCamD.txt) – проект 10-летней давности. Написан на самом низком уровне, ассемблер. Код до этого никогда не публиковался, но сейчас уже практически неактуален, и я предоставлю его здесь чисто с образовательной целью. С минимальными переделками может быть использован для установки прозрачного соединения между COM-портом и сервером через Ethernet с дублированием через мобильный телефон(GPRS).
Шифрование – tDES CBC без MAC с полностью несекьюрной аутентификацией по типу как в CHAP, но с уязвимостью. Автор протокола неизвестен, HW-реализация делалась строго по протоколу под серверную часть. Все, включая PPP/MAC-IP-TCP и все вышестоящие протоколы (ARP, DHCP, DNS) реализованы в коде, и готовые пакеты передаются на телефон/Ethernet-контроллер по трем проводам, лишнего там нет.
И пример закладки в коде (аналогично в ОС): процедура sendspy, каждые 30 мин. отправляющая шифропакет, сливающий пароли на подконтрольный домен, обфусцированный в FW, и открывающий двери для удаленного управления.
И эта закладка писана в 2005 дилетантом-любителем, без ОС, в маленьком 8-разрадном контроллере с 8K ROM и 256 байт ROM. А вы всерьез предлагаете использовать современные андроидные устройства...

Гость (11/01/2015 00:18)   

А что имеется ввиду под RB?

Какие варианты мобильного использования? Для Анроид писаны Orweb и Orbot, проекты RedPhone и Chatsecure. Пошли на поводу у пользователей или попытка хоть как то решить "вдруг" возникшую проблему появления гаджетов.

Может решение этой проблемы облегчит и вопрос использования смартфонов?
— gegel (11/01/2015 00:46, исправлен 11/01/2015 01:01)   
А что имеется ввиду под RB

Подразумевал Raspberry Pi, сорри.

Какие варианты мобильного использования?

Наверное, проблема в мобильной и доверяемой реализации Tor. Не могу ответить.

Может решение этой проблемы облегчит и вопрос использования смартфонов?

Нет. ОР с компактным проверенным кодом на платформе, собранной на серийно производимой рассыпухе и без ОС сам по себе будет доверяем, и точно не установит через ваш роутер "левое" исходящее соединение. Но не смартфон. И как бы Вы не доверяли роутеру, смартфон все равно сольет ваши контакты, логи, ключи.

попытка хоть как то решить "вдруг" возникшую проблему появления гаджетов

Wild security на самом деле нужна ничтожно малому количеству людей. В основном хочется поиграть в Бонда, попонтоваться или поумничать. И если вы – не французский террорист, то андроид для этого вполне подходит.


http://habrahabr.ru/post/208726/
пропритетарный загрузчик, выполняющий первичную инициализацию Raspberry Pi... Печально.

Гость (11/01/2015 12:28)   
Это «обычная практика» у людей, которые не заморочены безопасностью.

Таких людей 99.9%, и даже те кто "заморочены" не всегда обладают достаточной квалификацией. Если человек не указывает в Интернете свои ФИО, телефон и прочее, существует много других признаков, позволяющих установить его личность, хотя бы виртуальную. Например, часть постоянных посетителей этого сайта можно вычислить вплоть до ФИО, не пользуясь ресурсами государства, не состоя у него на службе. При том что все они "заморочены" безопасностью. Даже если контакт идентифицируется с точностью до псевдонима, а не реального ФИО, это уже ценная информация, и раскрытие реальных данных в большинстве случаев лишь дело времени.

Уязвимость на уровне микрокода езернет-контроллера. Например, производитель закладывает в чип магический пакет, по получению которого чип отсылает ответный udp-пакет по наиболее часто
используемому МАС-адресу (предположительно это шлюз) и на заданный IP.

Если не затруднит, опишите процесс детальней.

При пользовании ресурсом через Tor магическую строку можно отправить только в прикладных данных (внедрение её в IP или TCP приведёт к отсылке UDP-пакета с эксит-ноды). Они зашифрованы, поэтому строка тоже зашифрована и не распознается контроллером. Единственно возможный способ это внедрить её в SSL, если разработчики торпроджекта не приняли контрмер.

Во-вторых, пакет не пройдёт напрямую через провайдера, т.к. соединиться с внешними узлами можно только через виртуальный VPN-канал (в России это стандартный способ подключения к Интернету). Он существует на уровне ОС и Ethernet-контроллер о нём не знает.

Если провайдер находится в сговоре с атакующими, то возможным способом противодействия видится использование роутера, разрешающего пакеты только в пределах сети провайдера (шлюз локальной сети, VPN-сервер, DNS-сервер).

Таким образом, возможна моментальная деанонимизация, но только не при работе с HS. Бороться с этим невозможно, разве что использовать старые, но еще выпускаемые, примитивные езернет-контроллеры.

В чём принципиальная разница при работе с HS и как внешне (для покупателя) определяется примитивность контроллера?

Поэтому в идеале не использовать ОС вообще.

Разпознавание речи и передача её роботу в онионфоне отсутствует, а это единственный гарантированный способ сохранить анонимность при голосовом общении. Поэтому такая беспрецедентная мера, как отказ от ОС, представляется избыточной.
Гость (11/01/2015 13:09)   

Нда...


Да не такому уж и малому[link179]... [1][link180], [2][link181], [3][link182].


Спасибо за ссылку. Ещё один гвоздь в гроб RP.
Гость (11/01/2015 16:23)   
А подкажите, как работает этот OpnionPhone c точки взаимодейстия с сетью TOR?
Для примера, классическое использование TOR: юзер свои веб-запросы не сходя с места шифрует с помощью локального TBB, и на выходной интерфейс, т.е. в сеть TOR, они попадают на входной узел TOR уже зашифрованными. Далее они обуваются еще в несколько криптоодежек, гуляют некоторое время по сети и выныривают через выходной узел уже дешифроваными, попадая на веб-цель (сайт) в открытом виде.
Пытаюсь найти, как по аналогии работает OP, но не нахожу. Он что, выходит на другой OpnionPhone вообще не расшифровываясь? Тогда значит, не через выходной узел, а через что? В-общем, запутался.
Гость (11/01/2015 16:43)   
Там есть discovery protocol, на текущий момент завязанный на TorChat. Технически это подразумевает, что на обоих сторонах поднят скрытый сервис. А сама связь может идти любым удобным способом, хоть напрямую по UDP/TCP, хоть как на скрытый сервис через Tor (на обоих концах канала автоматически поднимаются скрытые сервисы).
Гость (11/01/2015 17:29)   
Т.е. правильно ли я понял, что трафик OP проходит через сеть Tor, нигде в ней не расшифровываясь?
Гость (11/01/2015 18:10)   

Так можно сделать. Является ли этот вариант вариантом по умолчанию — не знаю.
Гость (12/01/2015 16:07)   
Ок, спасибо! Тогда вопрос к тов.Gegel: просветите, пожалуйста, теперь вы по вопросу взаимодействия вашего OP с сетью Tor (пост 11/01/2015 16:23)
— gegel (12/01/2015 23:11, исправлен 12/01/2015 23:25)   
При пользовании ресурсом через Tor магическую строку

Признаю, погорячился. При использовании Tor деанонимизировать закладкой в микрокоде сетевого контроллера никак не получится. Активация закладки на уровне провайдера, конечно, возможна, но это уже предполагает свершившуюся деанонимизацию. Эксплуатация такой закладки видится возможной только в паре с закладкой в драйвере, и то не для прямой денонимизации, а для слива информации.


пожалуйста, теперь вы по вопросу взаимодействия вашего OP с сетью Tor

трафик OP проходит через сеть Tor, нигде в ней не расшифровываясь

Именно так, и этот режим используется по умолчанию. Соединение устанавливается с указанным онион-адресом. Это аналогично, как вроде Вы просматриваете SilkRoad: используется оконечное шифрование средствами Tor, ключ известен только вам и вашему абоненту, восстановить его после разрыва соединения невозможно (PFS). Внутри этого канала Онионфон поднимает еще собственный слой шифрования c аутентификацией (в том числе постоянными PGP-ключами с отрицанием) и тоже PFS (позже при захвате хоть обоих компьютеров расшифровать записанный разговор невозможно, даже если Tor скомпрометирован).
Обмен ключами внутри Tor защищает от атаки "человек посредине" сам по себе. Кроме того, предусмотрены и другие способы убедиться в отсутствии подмены. В общем, все сделано для истинных параноиков.


После установки соединения в Tor и начала разговора можно выйти из Tor и соединиться напрямую друг с другом, при этом абоненты сообщают друг другу свои IP-адреса внутри защищенного Tor-канала (не разрывая его, но и не используя во время прямого обмена). Это хорошая замена SIP, я об этом не раз писал, но никто не поддержал идею. Преимущества: нет единого сервера, собирающего метаданные и ведущего логи по IP, нет регистрации на нем, согласование сессионного ключа внутри Tor. Это неоспоримые преимущества перед такими рекламируемыми решениями, как CSIPSimle, Jitsi и т.д.


discovery protocol, на текущий момент завязанный на TorChat

На TorChat обсолютно ничего не завязано. Я уже писал, что использовал его чисто в рекламных целях, представля ОР в виде голосового плагина. ОР использует отдельный порт в Tor-канале, обеспечивая подключение к ОР на удаленной стороне. Если HS не поднят (или онион-адрес не существует), а также если ОР не запущен, то после 10-15 сек ожидания будет соответствующее сообщение. Остальные варианты неудачного соединения:


– вы использовали неверный публичный ключ вашего абонента;
– на удаленной стороне нет вашего публичного ключа в адресной книге;
– вы не являетесь владельцем приватного ключа того, кем вы представились (чей публичный ключ использовали);
– абонент внес вас в черный список;
– абонент отбил входящий звонок после идентификации вас;


неразличимы для Вас (с учетом тайминг-атак). Таким образом, невозможно зондировать удаленную сторону на предмет ее идентичности и наличия у нее определенных контактов в книге.
Протокол выглядит абсолютно рэндомно, идентификаторы защищены (в том числе PFS: после захвате компьютеров анализ записанного трафика не позволит даже установить абонентов, не говоря уже о доказательствах по их ключам).


Но до криптографических тонкостей ОР еще в теме мы не дошли: по умолчанию оба абонента использовали ключи guest, включенные в сборку ОР (в т.ч. приватный), т.е. фактически выплнялся DH внутри Tor. Не знаю, может ли АНБ реалтайм замонтировать MitM внутри Tor в соединении c HS, но это представляется невероятно сложно.


Протокол ОР (инициализация, шифрование, формат ключей) подробно описан, но требует ревью. Но пока нет никакой надежды, что кто-то из значимых лиц хотя-бы просмотрит.

Гость (12/01/2015 23:39)   

Да нет так пока никакого гвоздя. Разобраться еще нужно по этому загрузчику. Высказано предположение всего лишь. Сразу в преисподнюю пытаются загнать тему.
Гость (12/01/2015 23:43)   

Эти приложения не работают с Tor по sip протоколу.
Гость (13/01/2015 00:23)   

Строго говоря, не предполагает: все ISP могут по приказу сверху так прозондировать всех своих Tor-клиентов.


Почему? Вроде никто не возражал. Использовать HS как замену иным способам проброса тунеля тут предлагалось[link183] ещё давно.


Было бы хорошо, если б он был описан не только в pdf'ке, но ещё и просто на отдельной странице на сайте, прям в html — открыть страницу проще, чем файл скачивать.


Вам разобраться в себе нужно, если вдруг оказывается, что глухой и упёртый, никакие аргументы не воспринимаются. Тео ещё давно высказался по делу, и он-то как раз очень компетентен в таких вещах. Молодняк, конечно, не в курсе про фирмварь и блобы, про закладки в процессорах (Тео в эти темы немало вложился в своё время).
Гость (13/01/2015 01:39)   
Не моя это тема, но не сдержался:


Хотите знать почему? О том, что кто-то уже написал про этот форум, что это типа скопище бездельников. И теперь мы присоединяемся к этому мнению. Один SATva и пару сотоварищей что-то еще делают, доки полезные переводят и т.п., остальные – просто соглядатаи с толстыми щеками и попкорном. Обстановка здесь, примерно как на ЛОРе – поп..ть, похаять, облаять, обматерить даже, а как до доходит дела – так все врассыпную! Хотя нет – на ЛОРе все же иногда снизосходят до практических советов, здесь же – одна пустопорожняя беллетристика.
Считаете мое мнение наездом? Извольте: 12 ноября 2014 года мы, группа единомышленников, помогающих страдающим на Донбассе мирным жителям посильной гуманитарной помощью, решили добавить в нее компоненту безопасности для них. С этой целью опубликовали на вашем сайте просьбу, изложенную в теме Jitsi. Тонкая настройка для безопасности[link184]. Слезную, можно сказать просьбу, ведь люди гибнут многими тысячами. За неполный год уже погибло больше, чем в Афганистане!!!
И что же в ответ? Несколько резонных замечаний. Что касается доступной инструкции – молчание. Но не ягнят, а людей, абсолютно индифирентных к чужому горю.
Зато за это время, когда мирные люди гибнут и мир начинает трещать по швам, здесь появились невероятно "жизненно актуальные" темы:

Квантовая связь без классического канала
Прячемся от мамы/папы или супруги/супруга на андроиде
Математическая вселенная Тегмарка (изменённого сознания тред)
– конечно же, бесконечное продолжение "Спасите рядового Дурова!"
и другие, не менее "важные" для гибнущего мира темы.

Что ж, когда-то ваше равнодушие откликнется вам сторицей.
Опомнитесь в мерзлых окопах, но только будет поздно.

пс.SATva, пусть этот пост лучше остается на вашем сайте. Во-первых, критика полезна для развития ресурса, во-вторых, будет не так эстетично, если она будет опубликована и продолжена на другом, стороннем ресурсе.
Ну и социальный срез ресурса хорошо просматривается: малочисленное активное ядро – и скопище равнодушных бездельников, почему-то мнящих себя «криптографами».
Это о них сказано:
Не бойся врагов – в худшем случае они могут тебя убить.
Не бойся друзей – в худшем случае они могут тебя предать.
Бойся равнодушных – они не убивают и не предают, но только с их молчаливого согласия существует на земле предательство и убийство.
— ressa (13/01/2015 02:41)   
Гость, скажи мне, пожалуйста, для чего ты кого-то к чему-то призываешь? Ведь пустая трата времени. У меня до сих пор сердце кровью обливается по поводу Донбасса, свой вклад я туда сделал более, чем опрометчивый, такой, что до сих пор дыры латаю, и пусть скрепя зубами я себя ругаю за свой фатализм, но знаю, что моя целевая помощь дошла до людей на Донбассе, и нескольким семьям-беженцам в РФ помог. В общем не об этом, а о том, что делать что-либо нужно только самим, просить можно лишь о том, в чем не критично нуждаешься, заведомо понимая, что могут не ответить и вообще в наше время на помощь расчитывать глупо. Почему вы, группа единомышленников, не сформировали свое сообщество, пусть даже здесь на PGPRU, т.к. Гостям можно писать не регистрируясь и не разослали свою просьбу зайти в тему и помочь советом по всем тематическим сайтам и форумам?
Я вообще считаю, что здесь всего-то человек 5-7 сидит, нужно, кстати у SATtv'ы поинтересоваться посещаемостью.
Но так или иначе, группа единомышленников, не трепите себе нервы, ищите решение вашей задачи глобальнее. Если ты сам говоришь, что на ЛОРе помогают – создавали ли там такую же тему в тот же день, что и здесь? На каких ресурсах еще помощи просили? Что нигде не ответили? Или не скомпоновать ответы воедино?
unknown первым же ответом в той, твоей теме сообщил, что мессенджерами не интересовался, я на сколько знаю – он вообще телефонами не пользуется, он же ИИ, но тем не менее привел там тебе ссылку и сказал свое мнение, не только за себя а за подавляющее большинство здешней аудитории, ему то уж точно виднее кто и чем тут интересуется. С твоей же стороны начались выпады в сторону здешних обитателей. В общем просто не по адресу и все, а хаять всех ни к сему, сам себе же нервы портишь. Ну и вообще, почему PGPRU? Здесь прлтора землекопа: SATtva – дизайнер, unknown – библиотекарь и Гость – он же SATtva, он же unknown и прочие зарегистрированные пользователи, включая ressa.
Смысл взывать к коллективному разуму на проекте, где и десятка человек не наберется – не понимаю.
Твоя цитата неуместна, никто здесь не виновен в событиях на Донбассе, и уверен, что людей всем жалко, и все скорбят. А равнодушие к твоей просьбе – не есть равнодушие к ситуации в целом, просьба не на тот ресурс адресована, имхо. На счет цитат, Достоевский как всегда не в бровь а в глаз лупит:
Ведь обидеться иногда очень приятно, не так ли? И ведь знает человек, что никто не обидел его, а что он сам себе обиду навыдумал и налгал для красы, сам преувеличил, чтобы картину создать, к слову привязался и из горошинки сделал гору, знает сам это, а все-таки самый первый обижается, обижается до приятности, до ощущения большого удовольствия, а тем самым доходит и до вражды истинной…
Гость (13/01/2015 12:14)   

Не переходите на личности. Если есть аргументы – выкладывайте, если нет – комментарии "вообщем" никому не интересны. Спросите поисковик на тему "мнение Тео о загрузчике raspberry" и почитайте.

Вы силой мысли пишите здесь? Если через кокае либо устройство – бойтесь (!) в нем закладки всех спецслужб мира.

ну какие никакие советы были, может просто вы не получили того что хотели и не было того кто знает ответы на ваши вопросы. Так бывает. Увы.

Посещаемость и "сидят" – разная статистика. Через поисковики народ залентает "на ура". Будьте уверены это немалые цифры.
Гость (13/01/2015 12:24)   

Здесь ссылка на пресловутое выссказывание[link185]
Само "незабвенное проклятие"[link171]
Если кто не знает языка, может перевести через гуглопереводчик.
Гость (13/01/2015 15:13)   

Претензии к RP:
  1. Фирмвари дофига нужно, чтобы работало. Это грозит блобами. Блобы грозят уязвимостями, в т.ч. эксплуатируемыми удалённо (примеры были, ага).
  2. Свободные ОС как-то очень плохо поддерживают RP. Linux допилили, а с BSD было совсем тухло. Это так потому, что железо было выбрано соответствующим, без спецплясок не запустишь.
  3. На одном физическом сетевом интерфейсе не сделать физического разделения сетей. А чтобы сделать второй, придётся докупать или USB-сетевую или Wi-Fi-роутер, подключать всё это, настраивать, разбираться с поддержкой. Допустим, в Linux конкретная USB-сетевая заведётся, а в BSD? Был бы RP полноценным роутером с нормальными сетевыми, такого вопроса, скорей всего, не возникло бы.

пропритетарный загрузчик, выполняющий первичную инициализацию Raspberry Pi... Печально.

П[link186]рошелся по вашей ссылке,но к сожалению, ничего не понял. Можете прокомментировать?
А что там комментировать? Тео жалуется на то, что в софте проприетарная закрытая фирмварь, блобы. Фирмварь может приводить к фатальным уязвимостям в системе. В случае той же Nvidia (или там просто проприетарные дрова на иксы были?) было получение root-доступа к системе. OpenBSD и Тео известны своей войной с блобами, у них даже одна из песенок к одному релизу этой теме посвящена.

F[link187]irmware дрова не ставьте, если они не целиком GPL, а предлагаются из доп. репозитория, за который команда сборщиков Debian снимает с себя моральную ответственность. Для те же сетевух и видях. Пусть железо работают на открытых драйверах, но хуже. Тогда для параноиков лучше — это когда хуже. Firmware — это закрытые блобы или даже открытые с плохо исправляемыми уязвимостями и очень подозрительными при их внимательном рассмотрении. Как можно случайно в драйверах NVidia сделать дырку, дающую рута — не представляю, а в открытых драйверах серьёзные уязвимости бывают крайне редко.

Поскольку аргументы уже давно были высказаны, а вы их либо не читаете, либо намеренно игнорируете всё, что вам пишут, то предлагаю побиться головой об стену. В вашем случае может помочь. И ещё матчасть поизучайте, чтобы когда вам парочку ключевых слов говорят, в голове возникала нужная картинка, а не «все идиоты вокруг, один я умный».
Гость (13/01/2015 15:28)   
Вопросик: можно ли в ОнионФоне оперативно менять свой собсный профиль? То есть ник, имя скрытого сервиса или прально назвать. Чтобы для одних собеседников он один, для других другой. Или как "дерево, родился баобабом и буш тыщу лет пока помрешь :)"
— gegel (13/01/2015 22:10, исправлен 13/01/2015 22:25)   
можно ли в ОнионФоне оперативно менять свой собсный профиль?

Идентификация в ОР осуществляется по:
– собственному онион-адресу (с помощью Tor, используя подобный Abadi протокол, аналогично TorChat);
– публичным ключом ОР, подписанным PGP.


Оба пути независимы и опционные.


Используемый онион-адрес задается в соответствующей папке (hidden_service), содержащей файл с собственно онион-адресом (b64-представлением отпечатка публичного ключа скрытого сервиса) и файл с приватным ключом, оба созданы Tor. Можно иметь несколько папок (кстати, они переносимы с одного ПК на другой), и в файле torrc указывать путь к нужной папке, затем перезапустить Tor. Также можно указать несколько путей (замонтировать несколько HS на разных портах) и запустить несколько экземпляров OP из разных папок. Также можно менять порт в файле conf.txt и перезапускать OP.


ПС: представление своего онион-адреса можно отключить в конфигурационном файле ОР, убрав параметр Our_onion. При этом ваш абонент будет иметь полностью анонимное входящее соединение и не узнает ваш онион-адрес. Правда, при этом он не сможет создать встречное соединение и использовать более быстрое для уменьшения латентности.


Изменение идентичности по публичному ключу более гибко. Расширенная команда дозвона включает параметры -Iname -Ypaswd, где name – имя файла публичного ключа, который будет использован в качестве вашего идентификатора для текущего вызова, а paswd – пароль доступа к соответствующему файлу приватного ключа.


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


Кстати, добавить любой ключ в адресную книгу абонента можно автоматически, установив соединение "гость – гость" (это всегда возможно, т.к. ключи "гость" имеются по умолчанию) или под другим ником, и выполнив команду -Kname, где name – имя файла пересылаемого ключа (собственно, ник, причем не обязательно свой: можно пересылать и чужие ключи, уже имеющиеся в вашей книге). Абонент получит уведомление о том, что ему добавлен ключ. Ключ добавляется с минимальным уровнем доверия. Позже абонент может открыть файл ключа и проверить в ручном режиме PGP-подпись, а затем в адресной книге изменить уровень доверия на необходимый, редактируя параметр -L0.

Гость (13/01/2015 23:07, исправлен 14/01/2015 09:33)   

Блин, подскажите, как этот гребаный TorChat настраивается??
Установил в Debian версию 0.9.9.550 (svn: r4550), она запускается и изображает окно с двумя строками:


<your onion host (ame without the .onion ending> myself
<your onion hostname without the .onion ending> myself


ну а дальше то – что? В этом е.нутом мануале автор просто издевается, что ли, описав подробно инсталляцию (которая и коню понятна), и торжественный запуск свой софтины, но где сама настройка? Исключил ее он что ли, или не там читаю :(
В гуголе, кстати, тоже о настройках никто нигде не мяукнул – мировой заговор, что ле? Кроме этого: здесь была ссылка на политресурс но в нем тоже о самой настройке нет ничего.

— gegel (13/01/2015 23:41)   
На сколько я в курсе, TorChat не требует настройки и работает "из коробки" При первом запуске генерируется приватный ключ и ваш ИД, сохраняется в файле и используется в дальнейшем.
Должно быть меню, из которого можно копировать собственный ИД, добавить контакт и открыть чат.
— ressa (14/01/2015 00:16, исправлен 14/01/2015 00:17)   

ДПНИ, ахахахх) Меня бы unknown уже забанил за подобную ссылку) а так на форумах этой политоты точно манов не будет здравых. На автора напрастно грешишь, ман и не нужен по запуску.
Проверь свой Tor, потому, что Гегель прав – сабж из коробки работает, одно время активно юзал его на разных дистрибутивах и железе.

— котенок (14/01/2015 00:39)   
На сколько я в курсе, TorChat не требует настройки и работает "из коробки"

Если так, то почему после запуска выскакивают эти две строки?
Разве это так и должно быть? Что ж это за работа такая странная. Она больше похоже на ошибку, программа хочет онионное имя собственного хоста, но не получает его и ругается.
Пробовал вводить его, и тогда получаются такие две строки:

<your onion host (ame without the .onion ending> myself
pupkin (myself)

Все равно что-то не то! Особенно прикольно сочетание host (ame – это так должно быть, или программер допустил орфографическую ошибку?
— ressa (14/01/2015 00:55)   
Оно должно его создать в виде HS, проверь Тор, еще раз говорю. Права на запись, к примеру.
Гость (14/01/2015 01:23)   
проверь Тор, еще раз говорю. Права на запись, к примеру.

Это как, какой еще Tor? Я установил TorChat, разве нужно что-то еще?
— ressa (14/01/2015 01:45, исправлен 14/01/2015 01:47)   
Пусть парни меня поправят, если ошибаюсь, т.к. у меня Tor изначально стоит, может в нынешних версиях сабж его локально подтяг вает, но я сомневаюсь.

— unknown (14/01/2015 09:57, исправлен 14/01/2015 10:10)   

Исламисты и педофилы были, намёки от сионистов и от какого-то мутного криминала регулярно, белоленточники и майдановцы были, Донбасс[link189] вот теперь. Пусть напишут в отчётах своим кураторам, вербовщикам и провокаторам, что никакие политические и криминальные движения ресурс не поддерживает, ни радикальные, ни провластные. И спецом выборочно никому не помогает. Если есть кому ответить на технический вопрос, то на него добровольно, нейтрально, по мере знаний и интереса к технической стороне вопроса отвечают. Если спецам и увлечённым неспецам интереснее квантовая связь, параллельные миры и прочие отвлечённые ололо околотехнические и околонаучные темы, то это их дело, особенно в местном оффтопике. Есть негласные технические темы, на которые ответы тоже не поощряются, например то, что попадает под понятие «взлом» («помогите взломать X»), создание защит от копирования (DRM) («помогите защитить программу от пользователя»), а также то, что по мнению модеров считается откровенным фричеством, но к данной теме это не относится. Так что упрёки и давление на эмоции — мимо.

— gegel (14/01/2015 11:26)   
Это как, какой еще Tor? Я установил TorChat, разве нужно что-то еще?

Пакет TorChat по умолчанию включал в себя версию Tor, запускаемую вместе с оболочкой (не новую, желательно обновить).
Т.о. у вас будет два процесса Tor: отдельно ваш штатный, и отдельно – запущенный TorChat-ом.
Но вполне можно использовать и имеющуюся версию Tor, вот тогда потребуется настройка.
— ressa (14/01/2015 12:27)   

Я своему куратору и так докладываю все, что смог вынюхать о здешних подпольных деятелях с двойной жизнью[link190].
Если без шуток, только ответь серьезно, понимаю, что оффтоплю: ты действительно считаешь, что есть прям агенты с кураторами, которые пишут херню? Я думал, что это просто одепты политики\оппозиции и не более того, ну или одепты всяких сект типа ДПНИ\Навальный и тд. Ну т.е. я то прекрасно понимаю, что понятие "информационная война" носит практический и действенный характер, но черт побери не на PGPRU же)) Смысла нет, кого тут вербовать, тут всем плевать на какие-либо политические движения и тд. Я думал, что мониторят – да, следят может быть, чтобы не содействовали шифрованию заговоров каких-нибудь групп "единомышленников" и тд. Ну т.е. вот прям без сарказма – в двух словах, цель какая? Я понимаю – промывать мозги в всяких соц.сетях малолеткам, тематическим развлекательно-увеселительным ресурсам, но не здесь же. Поэтому я и считаю, что нет никаких кураторов и "засланных казачков", есть больные люди, которые искренне верят тому или иному политическому течению. Или я не прав? Только не три, а то опять начнешь "провокации на флейм и тд", имею я же право прямой вопрос задавать. Не ради погон и звездочек, мне и одобрения моего куратора достаточно, "Нам солнца не надо – нам партия светит! Нам хлеба не надо – работу давай!")
— unknown (14/01/2015 12:37)   

Это была ирония, очередные гости ставят себя в один ряд с упомянутыми течениями. Политические, криминальные и коммерческие заказы на форуме не поощряются; рядовое напоминание: пусть все формулируют свои задачи в нейтральном виде.
Гость (14/01/2015 13:23)   

Это мнения написанные здесь. Степень их авторитетности каждый сам себе определит.

Культура – она либо есть, либо ее нет. Вы видать обделены.

Аргументация слабого человека. Сродни – "Сам дурак". Есть желание выбросить желочь? Ладно, выбрасывайте. Полегчало?
Гость (14/01/2015 13:32)   

После регистрации. ПКМ в окне – В контекстном меню выбор "Установки" – Окно с тремя вкладками – Вкладка "Внешний вид", строка "язык" меняем с en на ru. После перезагрузки все будет на русском.
Гость (14/01/2015 15:31)   

Не знал, что Тео читает pgpru. Предлагаю найти обо всём этом в вики и на англоязычных сайтах самостоятельно.
Гость (16/01/2015 20:39)   
Интересный эффект обнаружил при разговоре по OnionPhone: иногда наступают паузы, и потом, после них, тембр голоса собеседника уносится на высокие частоты, голос становится как бы детским, а скорость произношения слов ускоряется.
Это нормально, или кто-то перехватывает трафик?
— unknown (16/01/2015 21:01, исправлен 16/01/2015 21:03)   

Автор программы ответит подробнее, но меньше всего вероятность чтобы перехват проявлял себя таким образом. Наверное, глюки кодека накладываются на особенности программной реализации при потерях и задержках пакетов. Что-то типа синхронизации после восстановления, чтобы и фрагмент речи не пропадал и отставания не накапливались.

Гость (17/01/2015 03:27)   

Аналогичный эффект наблюдается при sip через vpn.
— gegel (17/01/2015 09:51)   
меньше всего вероятность чтобы перехват проявлял себя таким образом

Боюсь, что перехват заметить вообще невозможно. Это продолжение иллюзии о щелчках в старых PSTN: настоящая прослушка абсолютно незаметна.

Что-то типа синхронизации после восстановления, чтобы и фрагмент речи не пропадал и отставания не накапливались.

unknown как всегда в точку. Это компенсация после "замерзания" Tor-цепочек, которое не смог скомпенсировать текущий анти-джиттер буфер. Есть различные варианты решения, реализованные в разных VOIP:

– просто дропать излишние пакеты. Часть речи будет утеряна;
– буферизировать задержанную речь, пришедшую "кучей", и затем проигрывать тем быстрее, чем больше в буфере. Именно этот способ использует ОР;
– Вместо ресемплинга искать в речи паузы и укорачивать их;
– Использовать ресемплинг + сдвиг тональности в обратную сторону дополнительным LPC транскодером.

Последние два механизма по эффективности аналогичны второму, но исключают настороживший вас эффект и обычно применяются в HQ VOIP для домохозяек. Учитывая сложность реализации, я не стал их применять, чтобы не запутывать код.

ПС: приятно, что идет тестирование. Просьба и в дальнейшем отписывать все, что вас настораживает или выглядит неожиданно и неестественно.
Гость (17/01/2015 20:25)   
Тестирование идет непрерывно, не сомневайтесь :)
И ждем-с, когда вы осуществите обещанные изменения в командной строке.

Также нужно реализовать анализвтор отлавливания ошибок пользователя.
А то набираешь типа -O gegelcy5fw7dsnsn
а нужно, оказывается, -Ogegelcy5fw7dsnsn, но кто ж все это упомнит.

И на счет регистро не- за-висимости – не слушайте этих красноглазных линуксоидов :) делайте регистронезвисимый интерпретатор, и это единственно правильное решение.

– буферизировать задержанную речь, пришедшую "кучей", и затем проигрывать тем быстрее, чем больше в буфере. Именно этот способ использует ОР;

Очень хорошо – так и оставьте, ничего не меняйте.
Гость (17/01/2015 20:35)   

Идиотское предложение. Путосвитчер себе настрой.

Ни одна нормальная программа не должна пытаться быть умнее юзера и вольно фиксить то, что он ввёл. В крайнем случае задаётся вопрос, не хотел ли юзер ввести иное, при этом есть возможность согласиться или отказаться (так сделано в zsh). Кто хочет, пусть себе пишет обёртку вокруг OP со всеми фичами, какие пожелает. Нужно отличать: сами интерфейсы — одно, обёртки вокруг них (юзерские программы) — другое.


Gegel, не слушайте идиотов.
Гость (17/01/2015 21:08)   
В зеркало посмотри! Научись не только читать, но и понимать написанное – где ты увидел "фиксер"? Речь шла только и только об анализаторе ошибок. Поэтому засунь свой пунтосвитчер себе в то самое место, которым ты здесь производишь неприличные звуки.

Для остальных: как известно, любая законченная программа обязательно содержит анализатор ошибок пользователя, которые в принципе неизбежны, поскольку такова природа человека – снижение концентрации внимания, механические ошибки и т.д. И если программа молчит, ничего не сообщает об ошибке пользователя, то и пользователь будет долго сидеть, ожидая нужной для себя реакции, а ее не будет, поскольку ожидаемая им команда не выполняется.

Gegel, не слушайте пи$доболов.
Гость (17/01/2015 21:56)   

Фразу

реализовать анализвтор отлавливания ошибок пользователя

можно понять, в том числе, и так.


С этим согласен. Если юзер нарушил синтаксис, а программа об этом молчит, это баг. Но gegel выше сам признавался, что там пока ещё всё слишком «неполноценно». Наверно, есть какие-то UNIX'овые стандартные библиотеки для парсинга командной строки и введённых опций, где можно легко задать всё, что нужно для конкретной программы.
— unknown (17/01/2015 22:30, исправлен 17/01/2015 22:33)   

Обычная libc[link191], только к ней рекомендуется соблюдать стандарты[link192], есть стандарты и на формат конфигов и ведение документации и пр. Но большинству разработчиков часто невтерпёж получить работающий продукт любой ценой и ложили они на все стандарты и удобство дальнейшей разработки и подержки своих проектов ;) Если проект не ведёт куча народу на финансировании, а только небольшие группки энтузиастов, то выбор часто: или плохой код урывками, или никакого кода и проекта вообще.

— gegel (17/01/2015 23:02, исправлен 17/01/2015 23:12)   
то выбор часто: или плохой код урывками, или никакого кода и проекта вообще

Именно. Я выбрал плохой код урывками, иначе не было бы ничего по сей день. Допилим. Но тут пока есть проблема: как я уже писал, консоль в ОР поломанная, интерпретатор мой собственный. Наверное, все-таки придется добавлять отдельный поток для консоли. Или же все переложить на телнет и полностью убрать стандартный ввод в ОР.


делайте регистронезвисимый интерпретатор

Gegel, не слушайте

Мнения разошлись :) Выскажу и свое. Я далеко не красноглазый линуксист, а виндузятник. Но и тем не менее пишу на С/С++, где регистр-зависимость – само собой разумеющееся свойство. Поэтому лично мне ближе имеющийся вариант интерпретатора, но если большинство будет за регистр-независимый подход, то не вижу проблем дописать несколько строк в коде.


Также нужно реализовать анализатор отлавливания ошибок пользователя

Я бы предложил другой подход: генератор команд. Частично это уже реализовано в web-интерфейсе. Можно ввести онион-адрес, и он будет автоматически преобразован в команду, которая выполнится при повторном клике по кнопке.

Гость (18/01/2015 01:37)   

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


Вот давайте без этих говновиндовых идей. В любом серьёзном проекте есть собственно код, а есть интерфейс к нему. Код не должен быть завязан на интерфейс. И, кстати, почему telnet?! Потому что в вашей идеологии всё всем должно рулиться из браузера кнопочками и менюшками? А telnet — типа браузер для бедных? Из браузера рулят только тупоголовые домохозяйки, и их регулярно через ошибки в этом самом браузере рутают вместе со всей сложной и серьёзной архитектурой, которая управляется из этого браузера (типа хостингов).
— 5лайтов (18/01/2015 01:43)   
Программа еще в альфа-версии, а какие уже баталии, не иначе, как делим шкуру неубитого медведя :))
Ладно, сделаю усилие над свое ленью (лень двигатель прогресса, однако), потому что писать придется много и аргументировано, чтобы на конкретных примерах попытаться убедить красноглазых, чем плох регистрозависимый интерпретатор команд. Впрочем, уверенности переубедить красноглазых нет, на то они и красноглазые.

Берем, например, команду rsync
В ней ключ -r означает рекурсивный вход в подкаталоги, а -R означает использование относительных путей.
Ключ -c означает проверку контрольных сумм, а -C означает автоматический пропуск файлов, задаваемых cvs.
Ключ -t – сохранять время, -T – каталог для временных файлов
И т.д. и т.п. во всех, за малым исключениям команд.

Итак, что же мы тут видим? А то самое – безсистемность! Потому что буквы, сходные по своему общему начертанию и звучанию, но имеющие разные регистры, означают, вопреки естественным человеческим ожиданиям, совершенно разные, не связанные друг с другом действия.
А все потому, что в такой системе присутствует регистрозависимость, и разработчики присваивают сходным по начертаниям символам какие-попало функциональные значения – кому какие взбредут в голову.
И, если бы была регистроНЕзависимость, такого хаоса быть не могло бы, потому что возникал бы конфликт назначений за одним символом.

А теперь скажите: что человеку легче запомнить – только символ, за который закреплена команда, или символ + его регистр? Ответ очевиден.

Также очевидно и то, что система должна подстраиваться под свойства человека, а не человек под систему (если конечно, это совершенная система).
Может, кто-то хочет напомнить, что при регистроНЕзависимости не хватит букофф алфавита для команды? Да бросьте – вместо односимвольных команд можно использовать двух-, трех- -сколько надо символьных команд, хоть целые смысловые слова, и все равно их всегда будет легче запомнить, чем вспоминать, на каком регистре надо набирать ту или иную однобуквенную команду – таково свойство человеческой памяти.
Лучше всего придумал дедушка Вирт: как правило, употребление вместо кратких символов целых слов, и поэтому никакой путаницы.
Возражения типа "Я каждый день набираю односимвольные команды, и нормально, ничего не забываю" не принимаются. Именно потому, что каждый день, а стоит пройти месяцу, году, и знания регистра улетучатся как дым, и вам придется лезть в хелп – гораздо чаще, чем при регистровой НЕзависмости.

Из-за этого бага разработчиков (не иначе как умственного) в BSD/Linux всем, чтобы не было путаницы, пришлось набирать команды только маленькими, Уже одно это ущемляло самолюбие и возможности юзеров, чего изначально не наблюдалось в DOS: там набирай хошь маленькими, хоть большими – ОС всегда поймет тебя правильно, зато команды с большими и малыми буквами выглядят куда привычнее и человечнее.

Видимо, этот исторический баг не давал покоя *никсоидам и порождал творческий зуд. Но к сожалению, не в том месте, и вместо того, чтобы исправить этот баг кардинально, они пошли по совершенно неразумному пути – ничего не изменив в интерпретаторе, они стали позволять себе непозволительные шалости, т.е., не только по-прежнему создавать ключи большими и маленькими, но и (ужас!) сами команды стали создавать смесью больших и малых букв!
И смотрите, что получилось:

Первая ласточка – команда xorg. В ней сделали первую букву большой, вот так – Xorg. И что они этим добились? В первое время – воплей от консервативных линуксоидов, которые заучили как Отче наш, что все команды в Линуксе набираются сугубо малыми буквами, а тут вдруг на тебе – если набрать xorg, то такой команды нет в природе – "команда не найдена"
Пришлось юзерам, ломая свои многолетние привычки, привыкать к эксклюзиву и делать здесь исключение – запоминать и набирать Xorg.
Итог: что дало миру набор одной команды с большой буквы? Ни-че-го. Кроме начинающегося хаоса, разумеется.

За Xorg последовала Xvnc. Далее NetworkManager. Ясное дело, проку от этих новшеств тоже голый ноль, только неразбериха усилилась.
Но камень был брошен, и понеслось...
Апофеозом украшательского "творчества", с который мне пришлось столкнуться – это: VBoxBalloonCtrl

Вот скажите, каким надо быть долбоклюем, чтобы изобрести команду, в которой с малыми сочетаются 3 (три!) больших буквы?! На кой хрен надо запутывать юзера, который должен морщить репу и вспоминать, где и сколько там больших и малых буквы?! Где системность?! Кто кому должен помогать – человек машине, или машина человеку?!

То обстоятельство, что клавиша Tab помогает довольно быстро подобрать правильные символы в команде, не в счет – это уже следствие, костыль, который помогает облегчить принципиальный недостаток, который есть и пока остается в Линуксе. Нужно лечить не болезнь, а ее причину.

В Майкрософте, к счастью, это быстро поняли и сразу заложили в DOS правильный принцип – РЕГСТРОНЕЗАВИСМЫЙ. И там не нужно помнить, какой регистр использовал в разработке тот или другой долбоклюй – СИСТЕМА ВСЕГДА ПОЙМЕТ ВАС ПРАВИЛЬНО, в какой регистре вы не набирали команду.

И наконец, возьмем венец творения природы – человек. Вы как общаетесь голосом с собеседником – с использованием регистрозависимых слов? :)
Так какого ж х.. компьютер должен пудрить вам мозги словами-командами с труднозапоминаемыми регистрами?! В общении человека то ли с человеком, то ли с компьютером важен не регистр слов, а их смысл, регистр в данном случае – только помеха его восприятию.

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

Но и тем не менее пишу на С/С++, где регистр-зависимость – само собой разумеющееся свойство. Поэтому лично мне ближе имеющийся вариант интерпретатора, но если большинство будет за регистр-независимый подход, то не вижу проблем дописать несколько строк в коде.

Да, Си тоже регистрозависимый. Но почему так получилось? Потому что язык Си создавал Дэннис Ритчи – паталогический лентяй (куда больший, чем я), который мечтал каждую команду в Си изображать одной буквой всего лишь для того, чтобы... меньше набирать на клавиатуре... :-O
Вот его поганая рожа: https://upload.wikimedia.org/w.....Alistair_Ritchie.jpg[link193]

Тотального успеха (одна буква = одна команда) Ритчи, к счастью, не достиг, но напакостил в сокращении команд в Си изрядно.
И поскольку *никсы создавались в основном как раз на этом долбаном Си, они и унаследовали от него эту злополучную регистровую заисимость.

Я бы предложил другой подход: генератор команд.

Конгениально! Gegel, вы как всегда, рассудили наиболее здраво!
Действительно, OnionPhone – не ОС, для нее интепретатор команд будет излишеством, вполне хватит генератора команд.

Короче надоело всё, всем спать. Имеющий уши да услышит.
— 5лайтов (18/01/2015 01:59)   
Опередили. Поэтому пара замечаний:

Вот давайте без этих говновиндовых идей......... Из браузера рулят только тупоголовые домохозяйки, и их регулярно через ошибки в этом самом браузере рутают вместе со всей сложной и серьёзной архитектурой, которая управляется из этого браузера (типа хостингов).

Не надо зря гнать на браузер и домохозяек. Этот инструмент отшлифован десятилетиями, и им пользуются для самых серьезных дел – от серфинга по сайтам до денежных транзакций, как школьниками, так и системными администраторами. Кроме того, у него есть такое важное преимущество, как кроссплатформенность – он есть ВЕЗДЕ. К тому же браузер нужен для самого OnionPhone – TBB.

Вы сами-то по Интернету чем ходите – неужто телнетом? :) Думаю, даже не lynx'ом, а чем-то посовременнее. И чем вам не угодили домохозяйки – они вам невкусно готовят?

А вот то, что OnionPhone нужно вначале отшлифовать чисто в консольном виде – присоединяюсь. А потом можно и подумать, к чему его еще можно пристегнуть. Может и к браузеру, а может и сразу к QT или еще к чему.
Гость (18/01/2015 02:45)   

Стараются выбирать исходя из каких-то разумных соображений, чтоб легче было запомнить. Сохранить системность, действительно, на 100% не получится, потому что букв мало, на одну букву две команды не повесишь. Например, gpg -k и gpg -K связаны по смыслу, так что говорить о том, что связи нет никогда, я бы не стал.


Я не знаю, откуда вы такой взялись, но у меня никогда не было такого, чтобы я забыл регистр. Забыл опцию полностью — да, было дело, но вот чтоб опцию помнил, а регистр нет — ни разу такого не припомню. Да и вообще опции забываются редко, т.к. обычно одно и то же используется годами, я в любом состоянии наберу любую из стандартных команд. В крайнем случае, man под рукой.

Два и более символов тоже часто используется в опциях, но проблема в том, что их не слить в одну. Например, я могу написать gpg -e -s -a как gpg -esa, и меня gpg поймёт правильно. Аналогично и в куче других команд. Можно даже с регистрами: cp -iRv вместо cp -i -R -v. С двухбуквенными такой халявы в сокращении уже не будет.


Никакой путаницы ценой увеличения обезьянней работы по набиванию команд в несколько раз.


Вообще-то ещё в стародавние времена была такая команда как X, просто иксы обычно запускали через xinitrc или startx. Однако, если переименовывать X в X, который org, логично просто дописать org в конец, получите Xorg. Аналогично и про др. X-команды. X-сервер всегда был именно X-сервером, а не x-сервером, так уж сложилось, ищите причины в 70-ых.


Новодел, написанный под влияением винды[link194]. Юзерофилия и всё такое. Поглядите[link195] на их PowerShell:



VBoxBalloonCtrl — такой же юзерофильный новодел, плохо дружащий с косолью, насколько я помню. Мысль была в том, что когда команд много, чтобы сделать их более человечными и легче читаемыми, слова сливают в одно, а первые буквы в них делают заглавными — правило простое и универсальное. Не вижу, где тут пространство для путаницы. Вы, кстати, ещё пакет ImageMagick забыли и Eterm.

P.S.

Е[link196]сть альтернативный подход, чем-то более здравый (CISCO IOS, BSD), там минусов нет, и названия опций могут быть сокращены до тех пор, пока они однозначны, но всё равно всё друг от друга отделяется пробелами (этот стиль использует, например tmux).

Вот[link197], например. Я могу написать:
tmux attach
tmux attac
tmux atta
tmux att
tmux at
tmux a
И все эти сокращения ранозначны, поскольку на «a» начинается только одна команда. Если бы на «a» начиналось две команды, то, максимум, можно было бы сократить до того числа букв, где появляется отличие в последней букве (если от балды, то attach и attractor сокращаются, максимум, до atta и attr). Никаких минусов перед опциями нет, заметьте. В OpenBSD PF тоже чем-то похожий синтаксис. Изначально он взялся в коммерческих системах. Насколько я знаю — что-то типа командной строки CISCO.
Гость (18/01/2015 03:00)   

А что вы хотели? Всем наплевать на безопасность:

Т[link198]ам уловки из-за юзерофильности, не имеющие никакого отношения к ошибкам в виртуалке. Вы почитайте сами-то свою же ссылку:
Уязвимость была даже не по вине программистов VMware. Дело в том, что веб-интерфейс этого менеджера (висит на TCP-порту 9084) использует в качестве веб-сервера
Т.е. за такое надо убивать сразу. Какое ещё «управление виртуалкой из браузера»?! Это для секретуток делают в фирмах, которые принимают заказы «клиентов», а мозги куринные. Управление всем — только с консоли.

Точно так же деньги крадут через ошибки в браузере, браузер — основное окно проникновения троянов в систему, даже деанон юзеров FH АНБ делал как? Правильно, не через ошибки в Tor, а через ошибки в браузере. То, что браузером до сих пор пользуются для всего и вся — это повод не для гордости, а для осознания печальной действительности с текущей ситуацией в ИБ.


Да вряд ли. Tor'а достаточно. То, что ему передаёт TBB, можно и в командной строке передать (в крайнем случае, через тот же telnet).


Я хожу через TBB, но это не заслуга Mozilla, а сложившиеся обстоятельства. Когда выбирали единый браузер для всех, гиков не спрашивали и ориентировались на большинство. В частности, именно поэтому в TBB так много дыр: Mozilla'у безопасность волнует в самую последнюю очередь, их браузер разрабатывался для захвата рынка, а не для параноиков.


Упаси бог. Чем к QT, так лучше уж к браузеру. По-хорошему, нужна просто команда в командной строке, которая прозрачно интегрируется с другими посредством шелла и написана в той же идеологии. Это удобно и универсально. Кому нужны окошки, тот пусть их и создаёт. Оконный интерфейс — вообще зло злейшее, его приходится терпеть по необходимости. Лично мне удавалось им не пользоваться много лет, и ничуть об этом не жалею, что-то где-то до сих пор только так работает.
Гость (18/01/2015 10:27)   
Берем, например, команду rsync
В ней ключ -r означает ... -R ... -C ...
целые смысловые слова, и все равно их всегда будет легче запомнить

Все короткие опции rsync имеют длинные эквиваленты (-r = recursive, -R == relative и т.д.). И так в большинстве команд Linux. "Линуксоид со стажем" не может этого не знать.

Не представляю, как можно запомнить опцию отдельно от регистра, они единое целое. Кто "забывает" регистр, тот скорей всего в командной строке почти не работал. Правильней сказать не "забыл", а "не знал".

И с какой стати отказываться от регистра – чтобы домохозяка, возомнившая себя кулхацекром, случайно не нажала на капслок? Между r и R нет связи, это символы с разными кодами.

Возражения типа "Я каждый день набираю односимвольные команды, и нормально, ничего не забываю" не принимаются.

Да кому вы нужны? UNIX/Linux написаны такими как Д.Риччи и для таких же. Всех всё устраивает.

Именно потому, что каждый день, а стоит пройти месяцу, году, и знания регистра улетучатся как дым, и вам придется лезть в хелп – гораздо чаще, чем при регистровой НЕзависмости.

Почти все команды (в отличие от опций) имеют нижний регистр, который запоминать не нужно. Малочисленные команды, типа Xorg, редко используются в консоли, обычно они в составе скриптов.

каким надо быть долбоклюем, чтобы изобрести команду, в которой с малыми сочетаются 3 (три!) больших буквы?

Это ваши виндузятники, притащившие NetworkManager и превратившие систему в помойку.

компьютер должен пудрить вам мозги словами-командами с труднозапоминаемыми регистрами?! В общении человека то ли с человеком, то ли с компьютером важен не регистр слов, а их смысл, регистр в данном случае – только помеха его восприятию

Лучше сразу распознаватель речи, как в Андроиде.

*никсы создавались в основном как раз на этом долбаном Си, они и унаследовали от него эту злополучную регистровую заисимость

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

Если потворствовать прихотям виндузятников, то надо во всех файловых системах регистр отменить. Иначе безопасность ОС окажется под угрозой. Когда в ней существуют разные утилиты с похожими именами, отличающимися лишь регистром, регистронезависимая оболочка может запустить ошибочную команду.
Гость (18/01/2015 12:11)   
Самый лучший интерфейс – стабильный документированный API. А все выше отписавшиеся с его помощью смогут сделать себе и чувствительный к регистру интерфейс, и нечувствительный, и Telnet, и SSH, и браузерный, и даже с распознавателем речи от Google.
Гость (18/01/2015 13:03)   
Самый лучший интерфейс – стабильный документированный API

Одно другому не мешает. Как предлагаете в консоли работать, или самому на Си кодить с помощью этого API?

с распознавателем речи

Это была шутка, если вы не поняли.
— 5лайтов (18/01/2015 19:41)   
Все короткие опции rsync имеют длинные эквиваленты (-r = recursive, -R == relative и т.д.). И так в большинстве команд Linux. "Линуксоид со стажем" не может этого не знать.

© Ой! А то пасаны не знали :)
Этих длинных эквивалентов я намеренно не касался, чтобы не запутывать диспут. Но поскольку вы их зацепили – пожалуйста, перелистните страницу, и вы увидите, что именно об этом я толковал, упомянув Вирта. И тогда вопрос "Зачем нужна регистрозависомсть?" встает еще более остро.

Да кому вы нужны? UNIX/Linux написаны такими как Д.Риччи и для таких же. Всех всё устраивает

Ну так и сидите в своей регистрозависимой поросшей мохом философии! Большинство юзеров (а это свыше 90%) чхали на ваш мнение.

Но главное – вы никогда и никого не убедите, что запомнить символ + регистр легче, чем только символ. И на этом можно ставить точку.

Разве что таких же упоротых, как вы, чуть что, переходящих на личности.
Red-eyed detected, чуть что, вопящих "Винда мастдай!", явно указывающий на ваш юношеский максимализм.

Здравомыслящие люди никогда не противопоставляют Винду Линуксу и наоборот, поскольку в каждой системе есть свои плюсы и минусы, и используют то, что больше подходит для их задач – именно они является определяющими для выбора.
И, если я использую исключительно Linux, и он меня более чем устраивает, а Виндовс запускаю в виртуалке от силы раз в месяц сугубо для экзотических программ, которые не запускаются в Вайне, что же, я тоже должен уподобиться красноглазым и тоже хаять Виндовс? Ну-ну. Подрастите немного для начала.

Ладно, холивары на эту тему бессмыслены и непродуктивны, сколько раз давал себе слово не ввязываться... :(

Вопрос к тов. Gegel: а что, если для OnionPhone использовать самое классическое меню?
Такое, например, как в iptraf или CenterIM – получится ли вложить в него все команды OP?
Если да, тогда не понадобится ни интепретатор, ни генератор команд, и будут исключены ошибки набора команд.
Гость (19/01/2015 00:18)   

Не чем символ, тогда уж, а чем два символа? Мощности множеств слишком разные получаются:

  • Один символ — 26 комбинаций.
  • Символ+регистр — 26*2 комбинаций.
  • Два символа — посчитайте, но это будет много больше, чем 26*2 (т.е. запомнить это намного труднее, чем один символ с регистром)


Ололо! Вот это бомбануло. По теме, т.е., аргументы исчерпались более чем. И вправду, не ввязывайтесь в холивары. Для участия в них для начала надо хотя бы мозги иметь, знать матчасть и владеть логикой, а у вас со всем этим провал.


Самый бредовый консольный проект, писал любитель DOSа и велосипедов.
Гость (19/01/2015 13:14)   
не противопоставляют Винду Линуксу

Большинству постоянных комментаторов на этом сайте вряд ли вообще интересна тема винды, доса и тем более споры с виндузятником. Противопоставлять здесь ты принялся, обвинив BSD/Linux в "маразме", когда не просто оставил мнение об удобстве регистронезависимых опций для тебя лично, а начал обобщать и поучать "как правильно", при этом, судя по всему, даже не обладая базовыми знаниями и опытом.

> CenterIM
Самый бредовый консольный проект, писал любитель DOSа и велосипедов.

Видимо пациент освоил консольный ицик, после чего почувствовал себя корифеем командной строки, которая теперь ассоциируется с досом.
— unknown (19/01/2015 15:20)   

Видимо под влиянием хода обсуждения — прочитал как «цирк» :)
Гость (19/01/2015 16:13)   

Автор[link199] centerICQ, centerIM — её форк. IPC по автору — это тупо каждые 15 секунд проверять, появился ли текст в файле. Если да, то сообщение получено. Припоминается, что XMPP в centerICQ тоже был реализован так, что через какое-то время её забанили на jabber.ru.
— 5лайтов (19/01/2015 19:40)   
Ололо! Вот это бомбануло. По теме, т.е., аргументы исчерпались более чем. И

На самом деле все проще, вовремя вспомнилась поговорка:

© Не спорь с дураком, иначе может оказаться, что он делает тоже самое.

С дураком, который походя хает все подряд – iptraf, centerICQ, да и вообще все, чтобы мною не было предложено из этой серии, и любую идею, ведь для него не важна истина – важно утопить оппонента любой ценой. Авторы многих утилит с подобным управлением наверное, ему были бы очень благодарны, узнав, как он оценил их труд. Сам-то хоть что-то реально сделал?
Так что я благоразумно отступаю, и лавры "победителя" (см. поговорку) достаются вам – аплодисменты в студию! :-D

Большинству постоянных комментаторов на этом сайте вряд ли вообще интересна тема винды, доса и тем более споры с виндузятником.

Оказывается, красноглазый "победитель" страдает еще одним недугом – читать научился, а понимать прочитанное еще предстоит:

И, если я использую исключительно Linux, и он меня более чем устраивает, а Виндовс запускаю в виртуалке от силы раз в месяц сугубо для экзотических программ, которые не запускаются в Вайне

И где он тут нашел виндузятника? Зато уже успешно освоил метод Геббелься: чем больше вранья и передергивания, тем больше оно кажется правдоподобным – поздравляю "победителя" с соврамши!

Про тех же, кто хает Винду (которой почти не пользуюсь – см. выше, да и недолюбливаю по многим причинам), тупо противоставляет ее Линуксу и десятилетиями тупо ждет ее мастдая (Ха! Скорее рак на горе свистнет!), скорее можно предположить, что именно они недавно освоили Линукс и в соотвествии с юношеским максимализмом тут же стали хаять Винду.
О таких замечательно сказал Михаил Самуэлевич Паниковский:

Мелкие, ничтожные, завистливые людишки!


И действительно, есть чему завидовать: Виндой пользуется большую часть людей, а Линукс по прежнему трепыхается на уровне 1% – люди голосуют ногами!
Гость (19/01/2015 19:59)   

Про iptraf я не в курсе просто. Про centerICQ в курсе, знаю, пользовался сам, страдал от её костыльности.


Автор centerICQ в курсе моих претензий. Проект он в итоге забросил, жалеть не о чем.


Опять пошли разговоры за жизнь, я вижу. :-)


Видузятник — это не ОС на машине, это образ мышления.


Ну, я освоил 10 лет назад. Что дальше?


Это хорошо, что не так много, иначе в Linux бы уже давно всё говно из винды перетащили.

Такое впечатление, что вы взяли топ холиварных комментов (на которые уже давно есть стандартные устоявшиеся ответы) и с упорством, достойным лучше применения, их сюда постите. Нормальные линуксоиды переболели этой ветрянкой ещё 10-15 лет назад, когда о Linux ещё, простите, мало кто слышал. Вот если бы вы могли что-то умное породить, причём самостоятельно, и высказать нетривиальный аргемент, было бы интересно послушать, а так — это всё бесполезный срач по кругу.
Гость (19/01/2015 20:33)   
Мне, безусловно, есть что сказать и на эти выпады, но я уже все сказал:

Так что я благоразумно отступаю, и лавры "победителя" (см. поговорку) достаются вам – аплодисменты в студию! :-D

Итак, верительными грамотами стороны обменялись, продолжим по OnionPhone.

По поводу текстового меню. Не стоит придираться к iptraf и CenterIM (которому тоже высылал рекомендации, но Konst агрессивно окрысился), можно выбрать в качестве примера любую другую утилиту с таким меню.
Или например, более продвинутое меню, как в MC, но оно слишком продвинутое для OP, имхо.
Наверное, стоит провести голосование по управлению OP, и выбрать большое набравшее число голосов.
Гость (19/01/2015 21:03)   

Есть относительно неплохие признанные программы, написанные на ncurses: mcabber, mutt и др. Но эту тему тут уже обсуждали — ненужное на данном этапе усложнение. Можно поглядеть на командую строку mICQ[link200] — очень продуманный и удобный интерфейс для чата без всякого ncurses и менюшек, даже консольных. Рудиментарная поддержка джаббера в mICQ вроде тоже была.
— unknown (19/01/2015 21:15)   

Вспоминается make menuconfig
— 5лайтов (19/01/2015 21:24)   
ненужное на данном этапе усложнение.

На каком таком этапе? Какие, по вашему мнению, будут этапы? В любом случае не стоит распылять силы и реализовывать промежуточные этапы, от которых потом будет нужно отказываться.

Скажем, чем плохо управление подобно mutt – усложнением реализации? Так лучше один раз несколько ее усложнить, чтобы этим потом многократно упростить жизнь юзеру, создав ему комфорт.
Меня лично и многих других вполне устроит простое консольное управление, но не надо быть эгоистом, нужно подумать и о слабо подготовленных к работе в консоли пользователей. Для них уж точно не подходит обычная команданая строка с произвольным набиранием в ней команд, которые еще придется помнить.
Интерфейс должнен быть "ведущим" – как в том же mutt, где ничего помнить не нужно – это делает сам интерфейс.

А сложно сделать такой интерфейс или нет – пусть лучше выскажется сам Gegel.

ПС. Если что, пост через один выше тоже мой, забыл прописать автора.
— 5лайтов (19/01/2015 21:25)   
блин, уже через два
— 5лайтов (19/01/2015 21:27)   
Вспоминается make menuconfig

А еще linuxconf, но уже смутно
— gegel (19/01/2015 22:48, исправлен 19/01/2015 23:02)   

Обсуждение, конечно, интересное. Но суть дела не совсем в этом. Начну издалека и постараюсь объяснить ход моих мыслей на этапе разработки ОР, и потом можно продолжить.
Я пытался сделать ОР максимально независимым от любой ОС, более того, с возможностью работы вообще без ОС. Единственный поток представляет собой цикл, в котором асинхронно (без ожидания события, с моментальным возвратом) опрашиваются:
– ввод звука. Если там есть данные, они добавляются к буферу, если набралось достаточно, передаются в кодек и далее пакуются и отправляются в сокеты при наличии соединения;
– чтение сокетов. Если есть входящие пакеты, они обрабатываются в соответствии с типом и текущим состоянием ОР. Если это голосовой пакет, декодируются и отправляются в буфер для проигрывания.
– чтение нажатой клавиши. Код клавиши преобразуется в символ, дописывается в мой буфер. Если символ управляющий (например, Ввод), буфер анализируется, и выполняется, например, команда или отправляется в чат. Причем я не могу асинхронно ввести всю строку, а только посимвольно (точнее – поклавишно), поломав (переключив в raw) стандартную консоль.


Последнее как раз и реализует ту псевдоконсоль, которая обсуждается выше. Но это не полноценная консоль, иначе бы пришлось кодить пол-ядра самому. Это минималистический эмулятор консоли, его можно (и нужно) вообще отключить при использовании ОР чисто в виде демона для стороннего IM. И есть смысл рассматривать команды, реализованные в нем, не как пользовательские, а в качестве низкоуровневого интерфейса взаимодействия между демоном ОР и каким-то отдельным пользовательским интерфейсом, запущенным в отдельном потоке (и в отдельном окне). На сейчас имеем Telnet и WebSocket. Не вижу проблем написать код, с одной стороны подключающийся к демону ОР через Telnet, а с другой – реализующее в полноценной Linux-консоли любое из вышеозвученных желаний, или даже все вместе, настраиваемые через конфиг. По трудозатратам это будет где-то так же, как был браузерный GUI на WebSocket, но проблема в том, что я понятия не имею, как сделать, чтобы всех устроило. Кстати, в моих Windows-проектах тоже всегда кто-то критиковал именно GUI: кому-то хотелось кнопки, а кому-то галки, кто-то возмущался по поводу выпадающих меню и требовал мини-бар.
Так что можно продолжать цирк обсуждение, и я тут не советчик. Как определитесь, подумаем, как это можно закодить, и сделаем в кратчайшие сроки.
Если планируется консольный UI только под Linux, то проблем вообще не возникнет.
Команды можно придумать любые, интерфейс преобразует их в набор низкоуровневых команд ОР и передаст через Telnet. Точно так же можно отпарсить сообщения от ОР и преобразовать во что угодно для вывода пользователю. Будет желание придумать юзабельный командный интерфейс для практического пользователя – всегда Welcom.
А достаточно подробное описание практически всех низкоуровневых команд представлено в доке на ОР[link148] (англ.)

Гость (22/01/2015 02:52)   
Эврика!!! Возникла фикс-идея, как спасти тов. Gegel от нашего нескончаемого флуда.
Подробности здесь[link201].
Гость (22/01/2015 12:40)   
в многие современные браузеры включена поддержка стандарта WebRTC. например в firefox встроили коммуникатор "hello". это p2p мессенджер построенный по стандарту WebRTC (шифрование DTLS-SRTP). Открытая альтернатива skype.

при желании/необходимости, можно использовать туннелирование через TOR, i2p, vpn...
— gegel (22/01/2015 13:00, исправлен 22/01/2015 13:01)   

Спасибо за чистку.

это p2p мессенджер

Как раз в этом нет уверенности. У Вас есть возможность провести простой эксперимент и опубликовать результаты? (я сам не проводил, но очень интересно): попробовать установить соединение между браузерами в локальной сети, изолированной от глобальной интернет? Кстати, каким образом происходит адресация, т.е. что является уникальным адресом клиента? IP? Или нужна регистрация на сервере WebRTC, Mozilla и т.п.?

— gegel (23/01/2015 10:03)   
Заменил статически ликованные сборки на сайте проекта на обновленные (по состоянию кода на github на 21.01.15). Старые сборки переименованы и по прежнему доступны по ссылкам:
http://www.torfone.org/download/oph_lin051114.zip
http://www.torfone.org/download/oph_win051114.zip
Просьба сообщать о багах в новых сборках.

Сейчас проводим общую чистку кода и прогон на различных анализаторах.
Потом займемся озвученными выше пожеланиями к интерфейсу. И, наверное, будем пробовать портировать и в Android NDK.
— тестерТьюринга (23/01/2015 16:32)   
Gegel, есть кроссплатформенная библиотека SFML[link202], в архиве для Visual C++ есть пример VoIP.
— 5лайтов (23/01/2015 17:49)   
Заменил статически ликованные сборки на сайте проекта на обновленные (по состоянию кода на github на 21.01.15)

А что нового, очень интересно, в обновленных сборках? Очень хорошо бы для для этого вести ченжлоги.
— gegel (23/01/2015 23:22, исправлен 23/01/2015 23:29)   
есть кроссплатформенная библиотека SFML

Спасибо за ссылку, но для ОР VOIP-библиотека уже точно не понадобится. Использование стандартных библиотек для VOIP – как раз та проблема, которая не давала реализовать эффективное решение для Tor: стандартные решения заточены для обычных условий, а не для высоколатентного окружения, в подавляющем большинстве используют UDP-RTP, и поэтому все сводится к UDP-VPN-TCP-Tor. Отказавшись от стандартов и от готовых библиотек, получилось вручную на нижнем уровне оптимизировать VOIP именно для Tor.


Хотя один вопрос остался открыт – видео. С каждым годом Tor становится все быстрее (не знаю, хорошо это или плохо), и уже сейчас, думаю, можно передавать 160*120 H264 видео с 5fps. Присматриваюсь к кросплатформенным библиотекам, использованным ZAS в его коммуникаторе. Можно будет попробовать сделать дополнительный интерфейс для видеопотока в демоне ОР, и, используя его, подключать отдельное приложение для отправки/приема видео через уже установленное ОР соединение. Это еще одно преимущество клиент-серверной архитектуры ОР: модульность.


А что нового, очень интересно, в обновленных сборках?

Собственно, ничего для пользователя: pfactum помогает привести исходники в порядок после моих креативов, фиксит мелкие баги, см. коммиты на гите.
Если будут значимые для пользователя изменения, конечно же отдельно предупрежу здесь и заведу ченжлог.

— ZAS (24/01/2015 01:41)   
Хотя один вопрос остался открыт – видео.


С видео возникают дополнительные нюансы: синхронизация со звуком, и разбиение больших видеопакетов на размер, приемлемый для UDP. Довольно трудно сделать, чтобы работало мягко и ненавязчиво.

http://www.zas-comm.ru
— 5лайтов (24/01/2015 01:58)   
И, наверное, будем пробовать портировать и в Android NDK.

Это означает, что возможно появление OnionPhone, работающего в Андроиде? Или он будет работать непосредственно в железе, совместимом с Андроид, но без него самого?

Хотя один вопрос остался открыт – видео. С каждым годом Tor становится все быстрее (не знаю, хорошо это или плохо), и уже сейчас, думаю, можно передавать 160*120 H264 видео с 5fps.

Может, не надо? По крайней мере пока. Поскольку противоречит самому понятию анонимности и безопасности, которое тем лучше, чем меньше идентифицирующих сведений об абоненте передается.
Для голоса вам уже и так приходится решать проблему анонимизации с помощью вокодера, а для видео тем более.

Ваш OnionPhone – по задумке серьезная программа, которой можно будет довериться, не чета всяким там Скайпам, и теме более не вот этой фигне[link203], которую глупые разработчики сходу пристегивают к "ВКонтакте» и "Facebook" – о какой безопасности тут можно вообще говорить? Впрочем, если для шпионажа для гражданами – самое то, не все ж одному Скайпу шпионить.

В-общем, мое глубокое имхо: видео в OnionPhone – очень вредная вещь.
Конечно, найдутся и противники такой точки зрения, и даже может, их количество будет перевешивающим. В таком случае, ведите, пожалуйста, две версии: одну без видео (для тех, у кого безопасность является приоритетным фактором) и без него (кому OP нужен так, для "поиграться").
Гость (24/01/2015 02:13)   
Может, не надо? По крайней мере пока.

Надо, 0лайтов, надо[link179]. :)

Поскольку противоречит самому понятию анонимности и безопасности, которое тем лучше, чем меньше идентифицирующих сведений об абоненте передается.

Тогда и голос не нужен.

Для голоса вам уже и так приходится решать проблему анонимизации с помощью вокодера, а для видео тем более.

Я бы вокодеру свою жизнь не доверил. Мне интересней другой подход: научиться быстро печатать, а потом скармливать набираемый текст программе, которая его озвучивает собеседнику. При проблемах со связью такой режим уже тестировался: я собеседника слышу, а он видит только то, что я печатаю.

В таком случае, ведите, пожалуйста, две версии: одну без видео (для тех, у кого безопасность является приоритетным фактором) и без него (кому OP нужен так, для "поиграться").

Gegel специально для таких "глубоких имх" как ваше указал: архитектура модульная. Хочешь — ставь модуль, не хочешь — не ставь. На самом деле, всё ещё проще: боишься видео — не используй, по умолчанию оно включаться на будет. Что ещё надо? Какая разница, есть ли такой функционал в программе? Изоленту Прищепку Канцелярский зажим[link204] для камеры никто не отменял.
— 5лайтов (24/01/2015 04:51)   
Тогда и голос не нужен.

Из двух зол обычно выбирают одно, и меньшее. С голосом хочешь не хочешь, но придется использовать, т.к. именно голос передает значащую информацию между собеседниками.
А морда лица – что? Одни эмоции. Без которых можно вполне обойтись.
Конечно, его можно использовать еще как уникальный идентификатор, ключ, чтобы убедиться, что собеседник не подстава. Но тогда уж лучше отпечаток пальцев или сетчатка глаза.

Я бы вокодеру свою жизнь не доверил.

Я тоже. Но разве речь идет о защите сеанса разговора одним лишь вокодером?
Нет, речь о комплексе мероприятий, используемых в OP – шифрование с помощью самого OP, далее за счет ресурсов сети Tor, опять-таки, анонимизация с помощью Tor, и как еще одна ложка меда – вокодер.
Кстати, в принципе есть такие вокодерные алгоритмы, которые начисто уничтожают индивидуальные характеристики формант и прочих особенностей голоса (чуть ниже).

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

Ооооо! Не один вы над таким думаете, я уж лет несколько точно :)
Но потом голосовой анализатор Гугля подсказал более продуктивное решение – сначала речь распознается и переводится в обычный текст, который затем с помощью обычного речевого синтезатора переводится снова в речь, но уже – без всяких индивидуальных признаков.
Вопрос только в том, где взять такой алгортим распознавания, который можно использовать в OP.
Найдете – поставим вам памятник в PGPRU. При жизни :))

Gegel специально для таких "глубоких имх" как ваше указал: архитектура модульная. Хочешь — ставь модуль, не хочешь — не ставь. На самом деле, всё ещё проще: боишься видео — не используй, по умолчанию оно включаться на будет.

Не. Тогда уж лучше модульный. Поскольку вы забываете, что создание универсального "комбайна" – это неизбежный рост ошибок кода и путь в никуда. А модульный подход к созданию софта всегда упрощает реализацию и упрощает работу программиста.

Поечему путь в никуда – краткий пример: вспомните, как развивалась ICQ. Когда она была маленькой и крохотной, ею с удовольствием пользовались все. Но когда глюпый Mirabilis превратил ее в раздутого непоротливого монстра с кучей надуманных фич, тут же стали появляться компактные клоны, и народ стал разбегаться на них. И одним из наиболее востребованным конкурентом стала крохотная юркая Miranda, которая как раз и построена по модульному принципу – вешай на нее что хочешь. Потом Mitabilis спохватилась и выпустила облегченную Lite-версию, но было поздно, поезд ушел.

Конечно же, модульный принцип, API, плагины и все такое, тут с вами полностью солидарен.
Отличный инструмент – это НЕ универсальный инструмент. Не надо губить этим пагубным универсальным принципом OnionPhone – его ждет большое будущее! :)
Гость (24/01/2015 05:35)   

Если идёшь по улице и тебе позвонили — да. А дома можно и на клаве понабирать. :)


Обычно — да, но у каждого свой сценарий. Если собеседник знает голос, то не скроешься. Если у противника-собеседника есть выбор лишь из нескольких подозреваемых, а ФИО всех подозреваемых известно, то тоже. Это превращается в средство сокрытия местоположения говорящего, но не анонимности, и анонимность тут висит разве что на вокодере.


У этого метода есть принципиальные ограничения в плане безопасности. Где бы речь ни происходила, если она произносится вслух, вероятность её утчеки намного выше. Могут случайные прохожие подслушать, могут соседи, могут быть микрофоны-жучки, может быть активирован микрофон на рядом лежащем мобильнике... Всё же распознавать речь по стуку клавиш, на мой взгляд, сложнее, чем прослушивать непосредственно. «Есть такие вещи, о которых вообще не стоит кому-либо когда-либо говорить вслух» ©. :-)
Гость (24/01/2015 06:25)   
5лайтов, ты ведь создал под себя тему Флуд по поводу Voice over TOR[link201]. Вот и писал бы в неё, там для твоих постов лучшее место.
— тестерТьюринга (24/01/2015 08:00)   
gegel:
для ОР VOIP-библиотека уже точно не понадобится. Использование стандартных библиотек для VOIP – как раз та проблема, которая не давала реализовать эффективное решение для Tor

Дело не в том, что она стандартная, а в том, что она кроссплатформенная :) В Linux без X-ов совсем не много вариантов. Главное, что в ней есть необходимое для сети и гуя.
— 5лайтов (24/01/2015 20:05)   
Если идёшь по улице и тебе позвонили — да. А дома можно и на клаве понабирать. :)

Еще как можно. Но тогда возникает проблема быстрого набора, не все набирают со скоростью классной машинистки.
К тому же при этом возникает вопрос: а зачем, собственно, переводить потом набираемый текст в голос? Проще уж тогда оставить его как есть, и пользоваться давно придуманным TorChat'ом – скорость считывания текста текста с экрана даже выше, чем скорость произношения и понимания голоса.

Обычно — да, но у каждого свой сценарий.... и анонимность тут висит разве что на вокодере

Так и я о том же – одним вокодером себя не спрячешь, нужен комплекс мер по защите.

У этого метода есть принципиальные ограничения в плане безопасности. Где бы речь ни происходила, если она произносится вслух, вероятность её утчеки намного выше.....

В широком смысле безопасности – да. Но ведь мы рассматриваем здесь модель OnionPhone, в которой микрофон и наушники – его непременные атрибуты. По крайней мере Gegel пока не анонсировал их замену на что либо другое.

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

Между прочим, в прошлом году или раньше неоднократно встречались публикации о действующих разработках, которые стук клавиш переводят в текст с большой достоверностью :) Ссылки не сохранил, но в гугле найдете.

5лайтов, ты ведь создал под себя тему Флуд по поводу Voice over TOR. Вот и писал бы в неё, там для твоих постов лучшее место.

Очередной вброс дерьма на вентилятор от флудера :(
Люди здесь по делу пишут! А если невыносимо хочется повыпендриваться – топай в тот самый топик.
Гость (25/01/2015 00:32)   

Молодёжь пишет быстро. Даже я, фактически двумя пальцами, набираю не намного медленнее, чем говорю. Если не надо рассказывать что-то длинное, а в основном речь будет из коротких фраз, то можно и набирать вместо того, чтоб говорить.


Я имел в виду более общую постановку задачи. Допустим, вам нужно позвонить кому-то на самый обычный телефон. Вы звоните через Tor. Пусть это даже не OnionPhone, а что-то похожее.


Естественно, я в курсе[link205] про всё это.
Гость (25/01/2015 01:45)   
Молодёжь пишет быстро. Даже я, фактически двумя пальцами, набираю не намного медленнее, чем говорю.

Молодежь – конечно. Я набираю больше, чем двумя пальцами – аж тремя :), но при увеличении скорости набора делаю много ошибок, так что бесполезно.
Зато есть знакомый, который таки освоил слепой метод набора. Посмотрим, какая у него будет скорость :) Может, и у вас найдутся такие скоростники.
А еще можно добавить что-то вроде T9, и скорость еще повысится.

Я имел в виду более общую постановку задачи. Допустим, вам нужно позвонить кому-то на самый обычный телефон. Вы звоните через Tor. Пусть это даже не OnionPhone, а что-то похожее.

Ммм... на обычный – это как? Через Voice-шлюз, что ли? И как все это выглядит в целом, что-то не постигну изюминки.
Гость (25/01/2015 04:49)   

У меня был момент, когда я понял, что ошибаюсь меньше, когда смотрю не на клавиатуру, а не экран. На клавиатуру я сейчас редко посматриваю, в основном на экран, а пальцы тарабанят по моторной памяти.


VoIP-шлюз только.


Ну как... если сейчас надо позвонить анонимно, не раскрывая своего местоположения, то можно сделать так: вы → Tor → приватный прокси → Skype → Skype Out → обычный телефон. Голос свой при этом не скроешь, звонки все записываются, а голосовой банк данных пополняется, поэтому на один вокодер надеяться глупо. Можно попросить позвонить кого-то другого, но факт останется фактом — чей-то голос придётся засвечивать хотя бы как-то, хотя бы с вокодером. Иной вариант — когда набираешь на клавиатуре в реальном времени, а абоненту это всё читает механический голос. Ряд типичных фраз или какой-то длинный текст при этом можно заранее подготовить, чтобы не набирать его в момент разговора. Это типа T9, но если оно заточенно под конкретный разговор, можно сделать себе ещё удобней.
— 5лайтов (25/01/2015 18:39)   
Понятно. Но не совсем :) Что здесь подразумевается под "приватным прокси"? Именно в нем, кмк, изюминка, от которой многое зависит.
Еще вместо стремного и проприетарного Скайпа можно использовать открытый SIP, например, через sipnet.ru, по крайней мере будет пополнятся не американский, а российский банк. Впрочем, все зависит от модели угрозы – кого больше боимся, от того и убегаем ;)

В любом случае здесь, по вашему мнению, какая решается задача – скрыть место, откуда звонят? Или еще что-то?
Гость (25/01/2015 19:33)   

А что SIP только в росии?
Гость (25/01/2015 19:34)   

Вообще скрыть что звонят.
Гость (25/01/2015 19:36)   

Что за чудо? Вы уверены что можете загнать Скайп в прокси? )))
Гость (25/01/2015 19:38)   

Пробовали подумать в сторону записи голосового сообщения, которое в зашифрованном виде передается получателю-абоненту?
— 5_лайтов (25/01/2015 20:09)   
А что SIP только в росии?

До этого момента надеялся, что sipnet.ru и его внутренние каналы российские.

Вообще скрыть что звонят.

Да, можно скрыть факт и личность звонящего, а получателя звонка и содержание разговора, все равно не скрыть. И значит, подставляем получателя звонка. Поэтому в таком звонке нужно говорить всего одну фразу:
© Возьми трубка [OnionPhone] – гаварить будем!
Гость (25/01/2015 20:23)   

Откровение. У вас жесткие ассоциации с sip – sipnet.ru.
Может Это[link206] поможет расширить кругозор )
— gegel (25/01/2015 21:21)   
Очередной пример:
https://www.youtube.com/watch?v=ARVj22o59IE
Долго вслушивался в аудио. Это точно не GSM, и, скорее всего, не TETRA. С одной стороны, кодек слишком качественный, как для спецсвязи. Скайповский silk? С другой – практически нет окружающих шумов, как будто использован подавитель NPP7. Хотя ролик слеплен из кусков, шумы могли просто вырезать позже. Попробую еще глянуть на спектранализаторе, уж очень интересно, чем же реально пользуются те, кого защита должна бы заботить практически, а не теоретически. Неужели и вправду скайп?
— 5лайтов (25/01/2015 21:27)   
Так я имел в виду только sipnet.RU, а не произвольных SIP-провайдеров.
На страничке[link207] ничего такого, указывающего на иностранщину.
Охватываемые города тоже русские – Москва, Санкт-Петербург, Тула, Челябинск, Барнаул, Екатеринбург, Ижевск, Краснодар и другие. -
Выход их этого провайдера за рубеж – то понятно, другая тема. Так что не знаю.
Но вряд ли абонент из Тулы будет попадать в Краснодар через Париж.
Гость (25/01/2015 21:42)   

так это про программе минимум. если нужно забугорские, то воопще без проблем )
Гость (25/01/2015 21:45)   

ключевое слово – "например".
— gegel (25/01/2015 22:10)   
И о SIP:
http://zik.ua/ua/news/2015/01/.....z_terorystamy_558778[link208]
Безопасность таких штук весьма сомнительная.
— 5лайтов (25/01/2015 22:26)   
Ну и ладно, фиг с ним с этим вашим сипом :-) Меня больше заботит другое: как инициировать первый сеанс связи по OnionPhone с собеседником? Ведь для этого ему нужно передать (или получить) персональный onion-идентификатор.
И тут же возникает вопрос: по какому каналу его передать, если мы доверяем только самому OpnionPhone, считая его здесь наиболее стойким? (иначе зачем мы пользуемся им, а не другим средством обмена).
Использовать для этого вспомогательные костыли типа PGP и прочая – извините, веры им нет. Хотя бы потому, что их ключи передаются по открытому каналу – в отличие от данных OnionPhone, которые помимо того, что достойно им шифруются, так еще успешно маскируются (а еще трижды шифруются) с помощью сети Tor.
А передать идентификатор впервые с помощью OnionPhone понятно дело, тоже невозможно, поэтому возникает своеобразная проблема первичности "курицы или яйца" :)

Нечто вроде подходящее для решения этой задачи обнаружилось здесь[link209], но не уверен в этом, поскольку не вполне понял этот алгортим, одно понятно: здесь на помощь тоже привлекается Tor, что как бы обнадеживает.
— unknown (25/01/2015 22:33, исправлен 25/01/2015 22:34)   

Допустим, что запись подлинная. Очень часто прослушки гуляют по инету в нескольких вариантах: более подробном и более порезанном. И все они звучат также чисто.


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


Ещё вариант получения качественной подлинной записи: возможно снимают сигнал со станций (с вышек), которые находятся рядом с абонентами, причём и с той, и с другой стороны. Такой сигнал будет качественнее чем то, что слышат абоненты друг от друг на другом конце канала.

Гость (25/01/2015 22:44)   

Исполняющий обязаности SIP?
Если серьезно, то sip проще пустить через vpn, чем tor. Хотя и последний пускается, но качество будети хуже.
Гость (26/01/2015 03:17)   

Да просто технический момент. Траф должен выходить через какой угодно узел, но не через Exit-ноду Tor'а, потому что Skype тупо блочит Tor, здесь это обсуждалось. Если пользуете SIP, такой проблемы не будет.


Это голосовая почта. Кому она нужна? Тот, кто готов так извращаться, того и на OnionPhone можно посадить.


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


0лайтов, ты опять начал? pgpru ≠ ДПНИ.


Российские, а не русские. Ижевск — это вообще столица страны Удмуртия! А, это 2015-ый год? Извините, что забегаю вперёд.
— gegel (26/01/2015 10:23)   
Очередной пример

Звучание не похоже на GSM, и дело даже не в том, что нет потерь и комфортного шума в паузах. Сам кодек звучит не характерно для CELP. Скорее, похоже на какой то HQ синусоидальный кодек: характерные переходы между голосовыми и безголосыми фрагментами. Конечно, мне медведь на ухо наступил, и это может быть лишь иллюзия.
Не могу понять нескольких моментов:
– если это не GSM/TETRA, а VOIP, то откуда у них на точке достаточно быстрый интернет-канал?
– если это какая-то армейская спецсвязь, то как ее взломали?
– если это не фейк, то зачем его чистить и резать, тем самым порождая сомнения?
Гость (26/01/2015 10:49)   
У них таких перехватов десятки, всё лежит на ютубе, введите в поиск "перехват СБУ". Вы сранивали шумы в других записях?


В некоторых старых разговорах была информация общающихся сторон о том, что они не используют спецсвязь. Типа "говори быстрее и коротко", "некогда и неуметно детали сейчас обсуждать".
— unknown (26/01/2015 11:10, исправлен 26/01/2015 11:15)   

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



Уже почти год, как это публикуют, а они всё-так и пользуются взломанной связью?



В любом случае, публикация рассчитана на широкий пропагандистский эффект, впервую очередь на телевидении. Звонки зрителей с мобилок в студию на всякие теле-радио-шоу тоже звучат качественно, некачественных часто отрубают «с вами плохая связь», иначе это никто слушать не будет. Может конечно и все звонки зрителей/слушателей на все теле/радио-каналы — тоже фэйк.

— 5лайтов (26/01/2015 23:26)   
Меня больше заботит другое: как инициировать первый сеанс связи по OnionPhone с собеседником? Ведь для этого ему нужно передать (или получить) персональный onion-идентификатор..............................................

Странно, что никто не отреагировал на эту проблему. Получается, она у всех решена? Тогда хоть поделитесь, как вы ее решили. Или тоже не знаете как?
Мне не удалось придумать ничего такого, чему можно доверять. Кроме самолета или теплохода (не обязательно белого).
Речь идет о разговорах с командировошным на остров Магадаскар. Общаюсь с ним по Jitsi. И как перейти на OpnionPhone, т.е. обменяться своми onion-идентификаторами, не засвечивая их в Интернете? Получается, надо лично либо лететь на ероплане (но полетов боюсь с детства), либо плыть на теплоходе (а там сами знаете – сомалийские пираты, акулы и т.п.). А передача данных по софтинам, основанных на открытых ключах, попадает прямо в пасть к АНБ.
Так как?
Гость (27/01/2015 03:58)   

Я всегда знал, что у сторонников таких политических мнений есть полный букет заблуждений. Спасибо за очередное его подтверждение. Таки вы считаете, что PGP-ключи взламываются АНБ? PGP-ключами можно обменяться и через Tor, а сверить отпечатки — по множеству доступных каналов связи в надежде, что всех их АНБ перехватить не сможет.

Есть сервисы для одноразовых ссылок, тот же secserv.me[link211], контент можно закрыть паролем и, по умолчанию, ссылка может быть открыта и прочитана лишь раз. Содержимое шифруется в браузере средствами JS до отправки на сервер. Конечно, у этого есть определённые «но»[link212], как и у всех других средств.
Гость (27/01/2015 09:48)   
5лайтов, так у вас есть shared secret, или нет? Если есть, отправьте через любой OTR-чат, там есть протокол проверки OTR-ключа через заранее известный обеим сторонам секрет. А если нет, то от Евы Вас спасёт любое асимметричное шифрование, а от Мэллори не спасёт ничего.
Гость (27/01/2015 10:19)   
От Мэллори 5лайтов спасёт квантовая криптография.
Гость (27/01/2015 14:41)   
Квантовая тоже требует аутентифицированного канала.
— gegel (27/01/2015 22:07, исправлен 27/01/2015 22:09)   

5лайтов, наверное, у вас сложилась не совсем верная картина ассиметричной криптографии в целом.


Онион-адрес – это по определению публичная информация (хеш публичного ключа вашего скрытого сервиса). Примеры: ovp, silkroad, r2d2.


В любом случае, философски, для начала общения вас и вашего будущего собеседника должно хоть что-то объединять, отличая от остальной массы, ведь так?


Есть масса возможностей обфускации, если это необходимо: та же стеганография, например. Но общий секрет все равно должен быть в начале. Ну, или PKI с цепочкой доверия, которую Вы почему то не признаете.


И, как конкретный вариант решения специально под Ваши страхи: заведите временный онион-адрес, обменяйтесь анонимно в открытую через сайт в онион, установите звонок ОР, аутентифицируйтесь (голосом, общим секретом), внутри в чате ОР обменяйтесь постоянными онион-адресами, а временные удалите wipe-ом навсегда.
И шифрование Tor, и слой ОР обеспечивают PFS: если первичное соединение не перехвачено (а MitM внутри Tor к HS выглядет маловероятным) и адресат не подменный (убедиться поможет как раз то общее, что вас объединяет), то дешифровать ваши постоянные адреса позже никак не возможно.

Гость (27/01/2015 22:11)   

Она ebony?
— 5лайтов (27/01/2015 22:35)   
И, как конкретный вариант решения специально под Ваши страхи: заведите временный онион-адрес, обменяйтесь анонимно в открытую через сайт в онион, установите звонок ОР, аутентифицируйтесь (голосом, общим секретом), внутри в чате ОР обменяйтесь постоянными онион-адресами, а временные удалите wipe-ом навсегда.

Ёлы-палы, как же все, оказывается просто!
И не просто просто, а гениально просто!!! :)

Действительно, в этом случае для передачи окончательного идентификатора мы пользуемся именно тем, чему доверяем (в данном случае – OnionPhone).
Я уже чего только не пытался придумать (из, так сказать, врожденной скромности, промолчу :)), но до такой гениальной простоты был крайне далек.
Gegel, спасибо большое! Ведь этот простой и радикальный метод применим везде и повсюду – беру его на вооружение.


PS. Правда, есть один нюанс – в определенный момент (например, при передаче 2-го, т.е. окончательного onion-адреса) необходимо будет убедиться, тот ли это человек, за которого вы его принимаете.
Но поскольку OnionPhone передает и голос, задача упрощается.
А чтобы канал не успели перехватить и заменить голос голосом самозванца, необходимо время от 1-го сеанса, когда передается 2-й адрес, сократить до минимума.
Гость (27/01/2015 23:08)   

Ну вот. Много ли человеку для счастья надо?
— gegel (27/01/2015 23:23)   
необходимо будет убедиться, тот ли это человек, за которого вы его принимаете.
Но поскольку OnionPhone передает и голос, задача упрощается.

Голосовая аутентификация – не лучший вариант. Недавно в очередной раз обсуждалось рассылке moderncrypto. Можно пригласить хорошего актера-иммитатора, ведь в передаваемом голосе не так много идентификационной информации.

Но еще раз подчеркну: ведь голос – не единственное, что вас объединяет. Есть общие события до этого, общие знакомые, общее дело. Иначе не может быть идентификации в принципе – просто не с кем идентифицировать.
Эта общая информация может быть основой для формирования временного общего секрета. В ОТР такой секрет используется в протоколе социалиста-миллионера для сверки ключей. Мне показалось избыточным использовать СМП с нулевым разглашением из коробки для анти-MitM, в ОР для этого проводится сверка МАС от секретных слов, вычисленных с сессионным (одноразовым) МАС-ключом.

Есть еще интересный вопрос – отрицаемая голосовая аутентификация. Когда ломал голову над PGP-PFS почтой, была идея использовать такой вариант для инициализации переписки без PGP PKI. Вот кусок из описания[link213] (на моем ломанном англ.). Но в любом случае это не может считаться надежно, как и любая голосовая аутентификация.
— 5лайтов (28/01/2015 02:00)   
Ну вот. Много ли человеку для счастья надо?

А то! :) А скажите-ка вы, знатоки и не очень, положа руку на сердце – многие ли из вас пользовались этим элегантным приемом? ;-)
Который совершенно не требует специальных знаний, а только гибкости ума и подобен решению известной логической головоломки "Волк, коза и капуста".
— 5лайтов (28/01/2015 21:24)   
Похоже, надо было более простой вопрос задать – "Знали ли вы об этом элегантном приеме?"
Но судя по обилию ответов на предыдущих, и так ясно – не знали, не использовали.
А коли так – "Прием тов.Gegel" тянет на Нобелевскую премию :)
Ну или хотя бы премию им. SATva :))

Перехожу к сабжу, есть вопросы:

1. Почему при коннекте возникает сообщение:

и как от него избавиться?

2. Как переключаются кодеки при разговоре – достаточно одному абонету выбрать его, или это должны сделать оба?

3. Наблюдал разницу в кодеках. Использовал дефолтовый, SILK, GCM и парочку еще каких-то наугад – разницы не чувствуется совершенно никакой. Почему?

4. У абонента под Linux слышится свое ослабленное эхо через 1 сек. От выбора кодеков не зависит.

5. При наборе и попытки коннекта с абонентом иногда возникает сообщение:

- здесь имеется в виду не свой скрытый сервис, а у удаленного абонента?
Гость (28/01/2015 21:29)   

Знактоки на то и знатоки, что доверяют PGP.
— unknown (28/01/2015 21:53, исправлен 28/01/2015 21:54)   

Чем «знатоки» только не пользовались[link214]. А мессенджеры и голосовая связь интересны не всем.

— 5лайтов (28/01/2015 22:08)   
Чем «знатоки» только не пользовались[link214].

Это да, интересное повествование, но на уровне Алисы и Боба это не более чем художественный свист во 2-м доме Старсобеса из "12 стульев".
А где конкретное проверенное рабочее приложение?

А мессенджеры и голосовая связь интересны не всем.

Спросите старшее поколение, и вообще людей, которые с компьютерами НЕ на ты – и вы поймете, что очень много людей противоположного мнения: для них голос привычнее.
Нельзя же их сбрасывать со счетов только потому, что они думают не так, как вы.
— unknown (28/01/2015 22:17)   

В коментах[link215] было проверено, что всё работает.


Вы не сможете[link216] безопасно общаться с такими людьми. Какой-то жалкий максимум выжать можно, но на приемлимом уровне не получится. Они обязательно что-то напутают и невольно сольют всю информацию.
— 5лайтов (28/01/2015 22:44)   
В коментах было проверено, что всё работает.

К сожалению, не нашел в них такого приложения. Как тестовые плагины – да, в основной статье упомянуто. Но готового к употреблению приложения ни в статье, нив коментах увы, не наблюдается.

Какой-то жалкий максимум выжать можно, но на приемлимом уровне не получится. Они обязательно что-то напутают и невольно сольют всю информацию.

А какое криптосредство голосового общения вы имеете в виду? Если OnionPhone в нынешнем состоянии – согласен, но ведь он только в начале своего развития.
В конечном итоге на его основе может быть создано устройство, по внешнему функционалу подобное аппаратным криптофонам (которые сами знаете, давно существуют, но чересчур дороги). Т.е. в котором всего две кнопки "Закрываемся?" и "Ага", или вообще обойтись одной, а на индикаторе цветом индицировать режим секури, и тогда даже домохозяйка ничего не перепутает.
— 5лайтов (28/01/2015 22:48)   
На всякий случай: под криптофонами имел в виду обычные мобильные телефоны с встроенным крипточипом. Помнится, Siemens когда-то таким баловалась, и она не единственная.
Гость (28/01/2015 22:55)   

Какое тебе нужно приложение, если задача решается парой команд в командной строке?
— 5лайтов (28/01/2015 23:13)   
При чем тут я и мои способности? Или вы? Речь шла о людях, упомянутых unknown следующим образом:

Они обязательно что-то напутают и невольно сольют всю информацию.

И оно так и будет – перепутают апостроф с кавычками, и сольют.
Гость (28/01/2015 23:43)   

О чём? Для них всё просто: либо они учатся юзать софт, который им по силам, а вы или другие кураторы им в этом помогаете, либо не лезут к компу вообще. Старшее поколение — это очень растяжимое понятие. Вы имеете ввиду шестидесятников? Или восьмидерастов?
— gegel (28/01/2015 23:54, исправлен 28/01/2015 23:56)   

1.

Почему при коннекте возникает сообщение:
! Warning! Untrusted contact!

Сообщение указывает, что в мультифакторной аутентификации используется недоверяемый ключ удаленного контакта.
В данном случае используется дефолтный ключ guest, включенный с сборку ОР по умолчанию и, естественно, известный противнику. Таким образом, протокол согласования ключей в начале разговора вырождается в обычный Диффи-Хеллманн. Обеспечивается защита от пассивного атакующего и PFS, но нет защиты от перехвата "человеком-по-средине" (MitM).
Т.к. обмен ключами производится в Tor-туннеле, то для осуществления MitM протокола Онионфона злоумышленник должен сначала отмитмить Tor, что само по себе маловероятно. Но если он это сделал, то все равно полностью деанонимизировал и разрушил шифрование самого Tor. В такой ситуации переписка Торчат, например, стала бы полностью доступна.
Думаю, если речь не идет о ядерном теракте в США, то об этом можете не переживать.


и как от него избавиться?

Надо вам и вашим собеседникам завести ключи с помощью утилиты addkey, подписать их с помощью PGP, добавить ключи в свои записные книги и затем обменяться ими через неаутентифицированные каналы. Все участники должны проверить подписи друг друга в полученных ключах и в записной книге установить уровень доверия к каждому.
После этого вместо команды -Oonionaddress использовать -Nname для дозвона.


Мне кажется, такие экстра меры Вам в данном случае ни к чему.


Как переключаются кодеки при разговоре

ОР предполагает независимое использование кодеков во входящем и исходящем канале. Вы можете управлять только исходящим кодеком, с помощью команд -С1 ... -C18
Кодек, выбранный вашим собеседником, будет использоваться во входящем канале, при переключении вы будете видеть сообщение о текущем значении.
На него повлиять Вы не можете, разве что попросите собеседника переключиться.


разницы не чувствуется совершенно никакой. Почему?

Скорее всего, потому, что Вы переключали исходящий кодек, и разницу, по идее, должен был бы чувствовать ваш собеседник.


У абонента под Linux слышится свое ослабленное эхо через 1 сек

Эхо, естественно, будет слышно, если у вашего собеседника не плотная гарнитура или динамики. Кроме того, нельзя исключить какие-то завороты на уровне пульсе-аудио, тут я не силен. Рекомендую попробовать выбрать в конфиге непосредственный alsa-доступ к аудио HW.


При наборе и попытки коннекта с абонентом иногда возникает сообщение:
! TCP outgoing connection closed remotely! Hidden Service unavaliable
– здесь имеется в виду не свой скрытый сервис, а у удаленного абонента?

Конечно. Вопросы о таймаутах обновления HS (в т.ч. при смене IP интерфейса) неоднократно поднимались в Tor мейллисте, но я так и не понял окончательных выводов.
В тестах я поднимал два HS на разных машинах и на разных интернет-каналах, тестируя доступность друг друга. Иногда один из HS становился недоступен на несколько минут, хотя второй был доступен из первого Tor. Тут вопросы не ко мне, а к Tor project.

Гость (29/01/2015 00:43)   

Хочется уточнить, а речь только о знатоках или "вообще"?

Встречал представителей старшего поколения, которые уверено пользуются Скайпом и Вибером. Попытка сэкономить ден знаки делает чудеса.

МТС заявила, что в ближайшем будущем видит смещение доходности в сторону услуг, связанных с высокоскоростным доступом LTE, 3G, а не услуг голосовой связи. Билайн придерживается такого же мнения. Поэтому в скором порядке разрабатыфваются собственные приложения аля Мультифон, как алтернатива WhatsApp и Viber.
— ressa (29/01/2015 02:09)   
Я уже сам сбился со счету этмессенджеров. Viber, whatsapp, telegram, всякие соц.сети со своим xmpp и прочее. Что-то слишком много их. Сейчас еще каждый ОПСОС свой запилит – раньше символов в смс мало было а сейчас заряда батареи хватать не будет из за десятка мессенджеров, работающих в фоновом режиме.
Мне кажется появится, а может и уже есть какой-то один "аккумулирующий" все остальные))
Гость (29/01/2015 03:46)   

Особенно весело, когда люди не понимают, что у тебя нет смартфона, настойчиво предлагая их установить себе на телефон. Меня где-то (в банке, что ли) несколько раз спросили, какой у меня телефон, не андроид ли. Мне кажется, когда я им говорю «у меня не смартфон», они не понимают, что андроид ∈ смартфон.

В банке новая услуга: безопасное подтверждение платёжки SMS'кой. Мне оно не нужно, отказался. Они сделали вид, что всё поняли, и отключили. Пришёл домой — делаю платёж, сайт выдаёт ошибку подтверждения. Типа платежи карточкой без SMS-подтверждений не принимаются. Пришлось просить оплатить посторонних людей. Вот так раз в год понадобится воспользоваться пластиком... и тот раз он не поможет, а они ведь ещё деньги за работу со счётом и пластиком требуют.
— ressa (29/01/2015 10:40)   
Гость, мне кстати тоже были удобны карты с разовыми паролями, но что-то с год назад их начали отменять.Так что тоже подтверждение по смс. Но у меня смартфон, так или иначе нужен, а мессенджерами не пользуюсь – вообще не понимаю смысла в них.
Не смотря на то, что у меня андроид – я тебя понимаю, когда задалбывают в каждом заведении скачать их приложение доставки, оценки еды, одежды, зашел в ТЦ – скачайте карта_ТЦ.apk и тд. И ведь кто-то это делает наверняка.
Гость (29/01/2015 13:09)   

Либо что то не доделали в банке, либо вы не до конца разобрались. Сбер?
Гость (29/01/2015 13:13)   

Все работает.

Попробуйте почитать, поразбираться – просветление наступит обязательно.
Ведь вы сможете аргументировано объяснить человеку, который не имеет сотового телефона, зачем вам нужен смартфон?
Гость (29/01/2015 13:28)   

Скорей всего.


Нет.
— unknown (29/01/2015 13:56, исправлен 29/01/2015 13:56)   

[offtop]



3D Secure[link217]? Вроде он пока не является принудительным и от этого можно отказаться. Или не ставить галку при выборе опций карты. Правда вам будет приходить спам по всем каналам, чтобы это включть, но можно заигнорить.



Попросите в банке отключить. Можно пользоваться карточкой вообще без мобильника. Научитесь выносить всему персоналу банка мозг примерно так, как у нас происходят дискуссии в форуме.


[/offtop]

— ressa (29/01/2015 14:28)   

Какой банк?
Нет. Потому, что он не примет мои аргументы, по той простой причине – что у нас с ним разные жизненные парадигмы. не значит, что кто-то лучше, а кто-то хуже – просто разные. Как и не принимают мои аргументы против соц.сетей две мои знакомые, компания одной из которой занимается организацией праздников и мероприятий, а у другой – фотостудия. У них там ЦА и плевать они хотели, на ZOG. Ну примерно так. Ну т.е., какие аргументы я предоставлю тому же unknown, который, на сколько я знаю – не пользуется телефоном. Ну за ненадобностью, справляется и без него. Я же не справлюсь. Смарт нужен для постоянного доступа к почте и прочим ресурсам.
Согласен, именно картой – без проблем. Клиент-банком зачастую нельзя. Получая карту – можно вообще левый телефон указать, звонить никто не будет.
Гость (29/01/2015 14:56)   

Похоже на то.


Тем, кто постоянно в рахзъездах — да, у остальных интернет дома и на работе, зачем нужно что-то большее? Если есть крайняя срочность, мне просто позвонят.


Я это умею. Мне даже ОПСОСы возвращали деньги после ругани с техподдержкой, раза три причём. Я даже их убедил в том, что они просто ворют деньги, и они с этим согласились. Какой-то раз произошла нежелательная задержка, из-за чего оператор подумал, что разговор окончен раньше, чем положил трубку. Я отчётливо услышал «Фу-у-у-у-х». Ага, мотают нервы другим — пусть помотают себе.
— ressa (29/01/2015 15:11)   

Вот да, про меня.
Дома не до интернета. Дом – оффлайновый отдых) Как unknown выразился интеллектуальный дауншифтинг)
Сурово) Я всегда считал, что на другом конце провода роботы, по-человечески вообще ничего не понимают. А времени отнять может уйму.
— unknown (29/01/2015 15:12, исправлен 29/01/2015 15:29)   

А до этого, «не было ни единого разрыва» © ?



Насчёт форума я не сомневался. А если этот замечательный дар работает и в реале — так вообще никаких проблем. Начните с того, что по договору (посмотрите его подробнее на всякий случай) вам не имеют права навязывать 3D-secure (и аналоги), как и принуждать использовать мобильный, только как опцию. Вы имеете право в некоторых банках не указывать мобильный вообще, иногда пишите доп. бумагу и вам ставят прочерк вместо номера. Иногда карту нельзя оформить без мобильного — можете указать нерабочий номер и не отчитываться, почему он не работает.

Гость (29/01/2015 15:40)   

Нужно иметь стройную логичекую структуру того, почему ты д'Артаньян, а они п-сы, и давить на это. Я читал ранее статьи про воровство ОПСОСов, тут кидали ссылки, это помогло. Сказал, что согласия не было, никто ничего не тыкал, не предупреждал, а деньги списали. Они сказали ОК и отключили платежи через интернет. Потом снова списали. Звоню повторно. Как же так, людей обманываете. Раз сказали, что отключили, почему я в детализации вижу списания? За что? Почему в личном кабинете нельзя поставить блок на все короткие номера? Почему там столько опций, а этого запрета нет? Как его поставить лично? Им пришлось подтвердить, что такой опции нет именно для развода лохов, а отключить нельзя вообще никак, только через звонок в техподдержку. Короче, бил на факты и несоответствия сказанного и сделанного, орал, грозился судом. Им этого оказалось достаточно. На самом деле, надо после оформления симки сразу прийти к оператору и попросить отключить все платные услуги, это делается, тогда ни короткие номера, ни платежи с мобильного баланса работать не будут. На самом деле на той стороне провода тоже люди сидят, так что часто удаётся договориться, что к чему. Но если честно, все эти ожидания дозвона, нервы и прочее порой не стоят возвращённых денег. Тут, как и везде, рулит принцип: предупреждён — значит, вооружён; знания — сила. Надо сразу идти в офис ОПСОСа после покупки симки и просить отключить. Конечно, не прошедший через всё это обыватель знать таких деталей не будет, на них ОПСОСы и навариваются.
— ZAS (29/01/2015 21:46)   
Т.к. обмен ключами производится в Tor-туннеле, то для осуществления MitM протокола Онионфона злоумышленник должен сначала отмитмить Tor, что само по себе маловероятно. Думаю, если речь не идет о ядерном теракте в США, то об этом можете не переживать.


Если технология отработана, то ее применение почти бесплатно. Технология будет применяться в возможно большем количестве случаев, с максимальной широтой охвата. Для этого технологии и создаются, не так ли?
Точка зрения "кому я нужен – ведь я не террорист" является опасным обывательским заблуждением.
Гость (29/01/2015 23:24)   

Например Сбер.

Я не говорю о том, что вы его должны вовлечь в секту убедить пользоваться смартфоном, речь идет о том, что убедить человека, что есть случаи когда использование крайне необходимо. Если человек не способен понять, что кто то в чем то может нуждаться, то вероятно такой собеседник не достоин особого внимания.
Гость (29/01/2015 23:28)   

Накой нужен такой банк, который сует свой нос и диктует условия без учета интересов клиента. Этого говна добра кучи. Зайдите на сайт банки.ру. Там становиться понятно, что у ЦБ непочтатый край работы. 90% – это карманные банки для отмывания, а, в последствии, и кидания клиентов.
Гость (29/01/2015 23:31)   

В конечном счете, что мешает сверить отпечатки ключей?
— gegel (30/01/2015 01:30, исправлен 30/01/2015 01:31)   
Если технология отработана

Отработана технология MitM соединения со входящим узлом Tor???
Ну, тогда вообще нет смысла использовать онионфон: анонимности все равно не будет, даже при гипотетически устойчивом шифровании ОР и сверке его ключей.
Если такая возможность и заложена, то только для суперэкстраординарных ситуаций и, скорее всего, одноразово. Во всяком случае, о регулярном скрининге 5лайтов с его проблемами речь не идет.

— gegel (24/07/2019 14:57)   
Для уважаемых участников былого форума, когда-то указавших мне путь истинный (особое спасибо unknown). Возможно, у кого-то еще остался академический интерес к Торфону.

Теперь есть 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 для минимизации утечек по побочным каналам (ЭМИ, тока потребления).

Торфон может работать в трех режимах:

  • звонок на onion не выходя из Tor
  • звонок на onion, IKE в Tor, затем переход на p2p UDP с NAT Traversal c помощью Tor
  • непосредственный звонок на IP:port (в этом режиме не нужен доступ в Интернет, возможна работа в полностью изолированной сети). Порт можно выбрать любой, в т.ч. 80, 443 и т.п., это как часть адреса.

Переделал 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-подписи в файле:[link218] http://torfone.org/download/Torfone.txt

Техническое описание[link219] (в т.ч. подробное описание протокола): https://github.com/gegel/torfone/blob/master/white.pdf

Корявая инструкция для Андроид-пользователей[link220] тут: http://torfone.org/download/Torfone_Android_howto.pdf

Код ядра[link221] на github: https://github.com/gegel/torfone

Статья[link222] на Habr: https://habr.com/ru/post/448856/

Буду рад, если проект окажется кому-нибудь интересен как решение или полезен для практической деятельности в нашей непростой жизни.
Моя почта: gegelcopy@ukr.net, gegelcopy@protonmail.com и torfone@ukr.net, PGP на сервере MITM и на форуме (с тех пор не изменился).
— Piano (01/08/2019 14:03)   
Буду рад, если проект окажется кому-нибудь интересен

А уж как я рад, что после стольких лет забвения вы опять появились! :))
gegel, гляньте ваши почты, отправил вам сообщения, может, хоть какое-то доехало
— r1010 (02/08/2019 18:43)   
Скомпилил под линукс, "find / -name torfone" ничего не нашло. Как запустить?
— gegel (05/08/2019 10:03, исправлен 05/08/2019 10:04)   

Был в разъездах, почту не смотрел.
Все пришло, ответил.


По компиляции под 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[link223]


Инструкции внутри. Саму RAD студию можно взять на рутрекере.
Конечно, это далеко не идеальный вариант, было выбрано для быстрого старта. Нужно будет все переписать на Qt под все системы, или, в крайнем случае, сделать для Android классически: в Android-студии + NDK. Но катастрофически не хватает времени.


Ссылки
[link1] https://www.pgpru.com/comment46737

[link2] https://en.wikipedia.org/wiki/Push_to_talk

[link3] http://www.cypherpunk.at/onioncat/

[link4] http://mumble.sourceforge.net/

[link5] https://trac.torproject.org/projects/tor/wiki/LikelyTMViolators

[link6] https://www.pgpru.com/comment60527

[link7] https://www.pgpru.com/forum/obschievoprosy/opgpfonetrafikmehanizmrabotyiprochee

[link8] http://sourceforge.net/p/advtor/discussion/942231/thread/9d735faa/?limit=50

[link9] http://ubuntuforums.org/showthread.php?t=1126789

[link10] http://lamehacks.net/blog/secure-command-line-cha/

[link11] http://ubuntuforums.org/showpost.php?p=12230521&postcount=8

[link12] https://code.google.com/p/torsocks/

[link13] https://www.pgpru.com/biblioteka/rukovodstva/setevajaanonimnostj/prodvinutoeispoljzovanietorvunix/razdeljnoeispoljzovanietorbrowserssistemnymtoriprozrachnajatorifikacija

[link14] http://cs.unc.edu/~amw/resources/hooktonfoniks_slides.pdf

[link15] http://sourceforge.net/p/whonix/wiki/Voip/#development-ideas

[link16] https://guardianproject.info/2013/01/31/anonymous-cb-radio-with-mumble-and-tor/

[link17] https://www.pgpru.com/forum/anonimnostjvinternet/komfortnoegolosovoeobscheniechereztorvrealjnomvremeni

[link18] https://www.pgpru.com/forum/anonimnostjvinternet/sravneniestepenianonimnostipriposescheniivneshnihivnutrennihresursovtoravtorizacijaklientov

[link19] http://sourceforge.net/p/advtor/discussion/942231/thread/9d735faa/

[link20] https://en.wikipedia.org/wiki/Friend-to-friend

[link21] https://en.wikipedia.org/wiki/Interface_(chat)

[link22] https://www.pgpru.com/comment46949

[link23] http://www.sabi.co.uk/Notes/linuxSoundALSA.html#tasksRecord

[link24] https://www.pgpru.com/proekt/kommentarii

[link25] https://www.pgpru.com/comment61715

[link26] http://insiderblog.info/all-books/

[link27] https://www.pgpru.com/comment25910

[link28] https://www.pgpru.com/comment37669

[link29] https://www.pgpru.com/comment25859

[link30] https://www.pgpru.com/comment62167

[link31] https://tools.ietf.org/html/draft-ietf-ipsec-ciph-aes-ctr-00

[link32] http://archives.seul.org/or/dev/Oct-2012/msg00025.html

[link33] http://www.cs.ucdavis.edu/~rogaway/papers/modes.pdf

[link34] http://cseweb.ucsd.edu/~mihir/papers/gb.pdf

[link35] http://www.cs.ucdavis.edu/~rogaway/ocb/ocb-faq.htm#describe-ocb

[link36] http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/workshop2/presentations/ocb.pdf

[link37] https://www.pgpru.com/biblioteka/statji/analiznadezhnostipgp/zakljuchenie

[link38] http://crypto.cs.mcgill.ca/~stiglic/Papers/dhfull.pdf

[link39] https://tools.ietf.org/html/rfc2104

[link40] https://tools.ietf.org/html/rfc4868

[link41] http://torfone.org/download/torfone_V11b.zip

[link42] http://torfone.org/helpru.html

[link43] https://github.com/prof7bit/TorChat/downloads

[link44] http://rutracker.org/forum/viewtopic.php?t=1137127

[link45] https://polarssl.org/pbkdf2-source-code

[link46] http://health.tau.ac.il/Communication+Disorders/noam/speech/melp/Download/Download.htm

[link47] http://codec2.org

[link48] http://files.cnblogs.com/gaozehua/NATO_STANG_4591Eed01.pdf

[link49] http://www.speakfreely.org/

[link50] http://www.opus-codec.org

[link51] http://ftp.rta.nato.int/public/pubfulltext/rto/mp/rto-mp-026/$MP-026-30.PDF

[link52] http://williamandrewburnson.com/media/RealTimeVoiceConversion.pdf

[link53] http://www.srs.kiev.ua/images/stories/PDF_brochures/SRS+Anonymity+System+RU.pdf

[link54] http://torfone.org/download/torfone_V11b_src.zip

[link55] http://rutracker.org/forum/viewtopic.php?t=34334

[link56] http://torfone.org/download/testingru2.pdf

[link57] https://www.pgpru.com/chernowiki

[link58] http://www.kickstarter.com

[link59] http://www.indiegogo.com

[link60] https://www.pgpru.com/razrabotki

[link61] https://www.pgpru.com/soft

[link62] http://diskcryptor.net/wiki/Main_Page

[link63] http://diskcryptor.net/forum/

[link64] https://www.pgpru.com/biblioteka/osnovy/fondpoleznyhpostov/anonimnostj#fppCC1I

[link65] https://www.pgpru.com/proekt/poljzovateli?profile=SATtva

[link66] http://www.epiphyte.ca/proj/vocoder

[link67] http://lobstertech.com/voice_changer.html

[link68] http://skypefx.codeplex.com/

[link69] http://rghost.net/39955585

[link70] http://torfone.org/download/vocoder.rar

[link71] http://www.youtube.com/watch?v=mJ6S4IV2pMk

[link72] http://www.youtube.com/watch?v=iULpFEBNj2w

[link73] https://www.pgpru.com/comment77099

[link74] https://dev.guardianproject.info/projects/gibberbot/wiki/Voice_over_Tor_Project_-_October_2013

[link75] https://www.pgpru.com/comment75933

[link76] https://www.pgpru.com/comment37389

[link77] https://www.pgpru.com/comment37379

[link78] https://www.pgpru.com/comment45001

[link79] http://torfone.org/forum/index.php

[link80] https://www.pgpru.com/proekt

[link81] http://torfone.org/helpru.html#udp

[link82] https://www.pgpru.com/comment64735

[link83] https://www.pgpru.com/comment77388

[link84] http://torfone.org/

[link85] http://torfone.org/download/torchat_010613.zip

[link86] https://www.torproject.org/download/download

[link87] http://www.screamingbee.com

[link88] http://www.audio4fun.com/voice-over.htm

[link89] http://www.scramby.com

[link90] https://yandex.ru/yandsearch?text=оф%20сайт%20VoiceMask%20Pro&lr=10487

[link91] http://www.screamingbee.com/

[link92] https://blog.torproject.org/blog/openssl-bug-cve-2014-0160#comment-55803

[link93] https://en.wikipedia.org/wiki/Mumble_(software)

[link94] https://en.wikipedia.org/wiki/Comparison_of_VoIP_software

[link95] http://sourceforge.net/projects/speak-freely-u/

[link96] https://www.pgpru.com/comment78022

[link97] https://www.pgpru.com/comment78024

[link98] https://www.pgpru.com/comment72590

[link99] https://www.pgpru.com/comment76409

[link100] https://www.pgpru.com/comment78493

[link101] https://www.pgpru.com/comment78496

[link102] https://www.pgpru.com/novosti/2008/kriticheskajaujazvimostjvtruecrypt51

[link103] https://www.pgpru.com/comment78518

[link104] https://www.pgpru.com/forum/unixlike/spisoksledjaschegopobezopasnajaustanovkadebian

[link105] https://www.pgpru.com/comment78528

[link106] https://www.pgpru.com/comment78539

[link107] https://www.pgpru.com/comment36642

[link108] https://www.pgpru.com/comment55343

[link109] https://www.pgpru.com/comment74983

[link110] https://www.pgpru.com/comment67622

[link111] https://www.pgpru.com/biblioteka/rukovodstva/setevajaanonimnostj/prodvinutoeispoljzovanietorvunix/nastrojjkatorruterapodbsdtransparenttorproxykakanonymizingmiddlebox

[link112] http://lifehacker.ru/2013/03/28/perevodchik-google-v-android-teper-mozhet-rabotat-oflajjn/

[link113] https://www.pgpru.com/novosti/2013/stilometricheskoevyslezhivanieavtorstaanonimnyhsoobschenijjvseti

[link114] https://www.pgpru.com/comment71153

[link115] https://www.pgpru.com/comment71490

[link116] https://www.pgpru.com/comment78617/show?time=2014-04-16%2016:53:09

[link117] http://www.g-loaded.eu/2008/05/12/how-to-disable-ipv6-in-fedora-and-centos/

[link118] http://e-kzn.ru/adminu/kak-otkliuchit-ipv6-v-debian.html

[link119] http://softnastroy.com/content/kak-otklyuchit-ipv6-v-debian-squeeze-i-ubuntu-server.html

[link120] https://www.pgpru.com/comment67593

[link121] https://www.pgpru.com/comment78555

[link122] https://www.pgpru.com/comment78600

[link123] https://www.pgpru.com/comment78631

[link124] https://www.pgpru.com/comment78646

[link125] https://www.pgpru.com/forum/unixlike/konfigurirovanieiptables

[link126] http://sourceforge.net/projects/speak-freely-u/files/speak-freely-u

[link127] http://torfone.org/spfr.html

[link128] http://forum.antichat.ru/showthread.php?t=7930

[link129] https://www.pgpru.com/comment62824

[link130] http://torfone.org/download/sf76_01a.tar.gz

[link131] http://torfone.org/download/sf76_01a_src.tar.gz

[link132] http://speak-freely-w.sourceforge.net/

[link133] http://speak-freely-u.sourceforge.net/

[link134] https://www.gnu.org/prep/standards/standards.html

[link135] http://electronix.ru/forum/index.php?showtopic=119428&st=0

[link136] http://speak-freely.sourceforge.net/

[link137] http://ihu.sourceforge.net/

[link138] https://www.torproject.org/download/download.html.en

[link139] https://www.pgpru.com/comment80659

[link140] https://www.pgpru.com/comment80246

[link141] https://www.pgpru.com/comment81598

[link142] http://torfone.org/download/oph270914.pdf

[link143] https://ediss.uni-goettingen.de/bitstream/handle/11858/00-1735-0000-0022-5EF2-D/Dissertation%20Maimun__Rizal_final.pdf?sequence=1

[link144] http://www.icsd.aegean.gr/publication_files/conference/314865552.pdf

[link145] https://wiki.tox.im/Tox_over_Tor_(ToT)

[link146] https://github.com/irungentoo/toxcore/blob/master/docs/updates/Crypto.md

[link147] https://github.com/gegel/onionphone

[link148] http://torfone.org/download/oph.pdf

[link149] https://github.com/irungentoo/toxcore/blob/master/docs/Prevent_Tracking.txt

[link150] http://pastebin.com/6Em46Nnr

[link151] http://rghost.ru/58373429

[link152] http://audioprograming.wordpress.com/2012/03/03/android-audio-streaming-with-opensl-es-and-the-ndk/

[link153] http://mldonkey.sourceforge.net/UserInterfaces

[link154] https://www.pgpru.com/comment83860

[link155] https://www.pgpru.com/comment83807

[link156] http://datatracker.ietf.org/doc/rfc6455/?include_text=1

[link157] http://torfone.org/onionphone/index.html

[link158] http://torfone.org/onionphone/indexru.html

[link159] http://torfone.org/download/oph_lin.zip

[link160] http://torfone.org/download/oph_win.zip

[link161] http://pastebin.com/VWybx4sM

[link162] http://torfone.org/onionphone/

[link163] https://ru.wikipedia.org/wiki/WebSocket

[link164] https://www.pgpru.com/comment83796

[link165] https://www.pgpru.com/comment85794

[link166] https://ru.wikipedia.org/wiki/Деликт

[link167] https://www.pgpru.com/comment85801

[link168] https://www.pgpru.com/novosti/2008/passivnajaatakanasetjtorvychislenieljubogopoljzovateljaza20minut

[link169] https://www.pgpru.com/comment24183

[link170] https://www.pgpru.com/comment59607

[link171] http://marc.info/?l=openbsd-misc&m=132788027403910&w=2

[link172] https://ru.wikipedia.org/wiki/Raspberry_Pi

[link173] https://ru.wikipedia.org/wiki/Ethernet

[link174] https://www.pgpru.com/comment85962

[link175] https://www.pgpru.com/comment85979

[link176] https://www.pgpru.com/comment35165

[link177] https://www.pgpru.com/comment75315

[link178] http://torfone.org/download/cambr01xx.zip

[link179] https://www.pgpru.com/comment65988

[link180] https://www.pgpru.com/comment72825

[link181] https://www.pgpru.com/comment85675

[link182] https://www.pgpru.com/comment83060

[link183] https://www.pgpru.com/comment68806

[link184] https://www.pgpru.com/forum/prakticheskajabezopasnostj/jitsitonkajanastrojjkadljabezopasnosti

[link185] https://www.pgpru.com/forum/anonimnostjvinternet/januspa?show_comments=1&p=3#Comment59607

[link186] https://www.pgpru.com/comment82238

[link187] https://www.pgpru.com/comment67513

[link188] https://www.pgpru.com/comment86143

[link189] https://www.pgpru.com/comment86102

[link190] https://www.pgpru.com/forum/offtopik/racionaljnoenevezhestvo2?show_comments=1&p=21#Comment82871

[link191] https://www.gnu.org/software/libc/manual/html_node/Parsing-Program-Arguments.html#Parsing-Program-Arguments

[link192] https://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html#Argument-Syntax

[link193] https://upload.wikimedia.org/wikipedia/commons/thumb/c/c6/Dennis_MacAlistair_Ritchie.jpg/250px-Dennis_MacAlistair_Ritchie.jpg

[link194] http://technet.microsoft.com/en-us/library/hh847736.aspx

[link195] http://serverfault.com/questions/13493/powershell-do-you-use-it-can-you-show-me-some-cool-system-administration-thing

[link196] https://www.pgpru.com/comment85923

[link197] http://robots.thoughtbot.com/a-tmux-crash-course

[link198] https://www.pgpru.com/comment57364

[link199] http://thekonst.net/ru/about

[link200] http://micq.org

[link201] https://www.pgpru.com/forum/offtopik/fludpopovoduvoiceovertor

[link202] http://www.sfml-dev.org/download/sfml/2.2/

[link203] http://www.epravda.com.ua/rus/news/2015/01/19/522526/

[link204] https://www.pgpru.com/comment52235

[link205] https://www.pgpru.com/comment9622

[link206] http://www.voipobzor.ru/list

[link207] http://www.voipobzor.ru/catalogue/producers/12

[link208] http://zik.ua/ua/news/2015/01/23/sbu_likviduvala_kanal_zvyazku_spetssluzhb_rf_z_terorystamy_558778

[link209] https://www.pgpru.com/forum/anonimnostjvinternet/tajjnyjjobmenkljuchamichereztor

[link210] https://www.pgpru.com/comment86796

[link211] https://www.pgpru.com/forum/prakticheskajabezopasnostj/secservmeinteresnyjjproekt

[link212] https://www.pgpru.com/comment77576

[link213] http://torfone.org/download/auth.pdf

[link214] https://www.pgpru.com/novosti/2014/prostojjsposobsozdanijaneotslezhivaemyhkommunikacijj

[link215] https://www.pgpru.com/comment80667

[link216] https://www.pgpru.com/comment78567

[link217] https://ru.wikipedia.org/wiki/3-D_Secure

[link218] http://torfone.org/download/Torfone.txt

[link219] https://github.com/gegel/torfone/blob/master/white.pdf

[link220] http://torfone.org/download/Torfone_Android_howto.pdf

[link221] https://github.com/gegel/torfone

[link222] https://habr.com/ru/post/448856/

[link223] http://torfone.org/download/tf_src_android_rad_140719.zip