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).
Ссылки
[link1] http://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] http://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] http://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] http://www.pgpru.com/forum/anonimnostjvinternet/komfortnoegolosovoeobscheniechereztorvrealjnomvremeni
[link18] http://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] http://www.pgpru.com/comment46949
[link23] http://www.sabi.co.uk/Notes/linuxSoundALSA.html#tasksRecord
[link24] http://www.pgpru.com/proekt/kommentarii
[link25] http://www.pgpru.com/comment61715
[link26] http://insiderblog.info/all-books/
[link27] http://www.pgpru.com/comment25910
[link28] http://www.pgpru.com/comment37669
[link29] http://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] http://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] http://www.pgpru.com/chernowiki
[link58] http://www.kickstarter.com
[link59] http://www.indiegogo.com
[link60] http://www.pgpru.com/razrabotki
[link61] http://www.pgpru.com/soft
[link62] http://diskcryptor.net/wiki/Main_Page
[link63] http://diskcryptor.net/forum/
[link64] http://www.pgpru.com/biblioteka/osnovy/fondpoleznyhpostov/anonimnostj#fppCC1I
[link65] http://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] http://www.pgpru.com/comment77099
[link74] https://dev.guardianproject.info/projects/gibberbot/wiki/Voice_over_Tor_Project_-_October_2013
[link75] http://www.pgpru.com/comment75933
[link76] http://www.pgpru.com/comment37389
[link77] http://www.pgpru.com/comment37379
[link78] http://www.pgpru.com/comment45001
[link79] http://torfone.org/forum/index.php
[link80] http://www.pgpru.com/proekt
[link81] http://torfone.org/helpru.html#udp
[link82] http://www.pgpru.com/comment64735
[link83] http://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] http://www.pgpru.com/comment78022
[link97] http://www.pgpru.com/comment78024
[link98] http://www.pgpru.com/comment72590
[link99] http://www.pgpru.com/comment76409
[link100] http://www.pgpru.com/comment78493
[link101] http://www.pgpru.com/comment78496
[link102] http://www.pgpru.com/novosti/2008/kriticheskajaujazvimostjvtruecrypt51
[link103] http://www.pgpru.com/comment78518
[link104] http://www.pgpru.com/forum/unixlike/spisoksledjaschegopobezopasnajaustanovkadebian
[link105] http://www.pgpru.com/comment78528
[link106] http://www.pgpru.com/comment78539
[link107] http://www.pgpru.com/comment36642
[link108] http://www.pgpru.com/comment55343
[link109] http://www.pgpru.com/comment74983
[link110] http://www.pgpru.com/comment67622
[link111] http://www.pgpru.com/biblioteka/rukovodstva/setevajaanonimnostj/prodvinutoeispoljzovanietorvunix/nastrojjkatorruterapodbsdtransparenttorproxykakanonymizingmiddlebox
[link112] http://lifehacker.ru/2013/03/28/perevodchik-google-v-android-teper-mozhet-rabotat-oflajjn/
[link113] http://www.pgpru.com/novosti/2013/stilometricheskoevyslezhivanieavtorstaanonimnyhsoobschenijjvseti
[link114] http://www.pgpru.com/comment71153
[link115] http://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] http://www.pgpru.com/comment67593
[link121] http://www.pgpru.com/comment78555
[link122] http://www.pgpru.com/comment78600
[link123] http://www.pgpru.com/comment78631
[link124] http://www.pgpru.com/comment78646
[link125] http://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] http://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] http://www.pgpru.com/comment80659
[link140] http://www.pgpru.com/comment80246
[link141] http://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] http://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] http://www.pgpru.com/comment85794
[link166] https://ru.wikipedia.org/wiki/Деликт
[link167] https://www.pgpru.com/comment85801
[link168] http://www.pgpru.com/novosti/2008/passivnajaatakanasetjtorvychislenieljubogopoljzovateljaza20minut
[link169] http://www.pgpru.com/comment24183
[link170] http://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] http://www.pgpru.com/comment85962
[link175] http://www.pgpru.com/comment85979
[link176] http://www.pgpru.com/comment35165
[link177] http://www.pgpru.com/comment75315
[link178] http://torfone.org/download/cambr01xx.zip
[link179] http://www.pgpru.com/comment65988
[link180] http://www.pgpru.com/comment72825
[link181] http://www.pgpru.com/comment85675
[link182] http://www.pgpru.com/comment83060
[link183] http://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] http://www.pgpru.com/comment82238
[link187] http://www.pgpru.com/comment67513
[link188] http://www.pgpru.com/comment86143
[link189] http://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] http://www.pgpru.com/comment85923
[link197] http://robots.thoughtbot.com/a-tmux-crash-course
[link198] http://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] http://www.pgpru.com/comment52235
[link205] http://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] http://www.pgpru.com/comment86796
[link211] http://www.pgpru.com/forum/prakticheskajabezopasnostj/secservmeinteresnyjjproekt
[link212] http://www.pgpru.com/comment77576
[link213] http://torfone.org/download/auth.pdf
[link214] http://www.pgpru.com/novosti/2014/prostojjsposobsozdanijaneotslezhivaemyhkommunikacijj
[link215] https://www.pgpru.com/novosti/2014/prostojjsposobsozdanijaneotslezhivaemyhkommunikacijj
[link216] http://www.pgpru.com/comment80667
[link217] http://www.pgpru.com/comment78567
[link218] https://ru.wikipedia.org/wiki/3-D_Secure
[link219] http://torfone.org/download/Torfone.txt
[link220] https://github.com/gegel/torfone/blob/master/white.pdf
[link221] http://torfone.org/download/Torfone_Android_howto.pdf
[link222] https://github.com/gegel/torfone
[link223] https://habr.com/ru/post/448856/
[link224] http://torfone.org/download/tf_src_android_rad_140719.zip
Ок, соры гляну сегодня.
А что на счет NAT traversal, когда не через TOR?
Приложение peer-to-peer, внешний STUN не использует. Напрямую без проблем, но ессно на белый IP (если динамический, то на dyndns аккаунт). Если локальный роутер стоит, то естественно, используемый TCP-порт проключить надо на комп с телефоном (слушающий порт настраивается в ini телефона).
Спасибо, интересный проект.
Можете на главной странице подправить основной текст:
В последнем абзаце: слово means (средства) вроде бы не имеет в английском языке единственого числа, потому фикс потребовал что-то поменять.
Версия для Linux не планируется?
Сырцы подписаны вашим PGP-ключом?
По поводу первого пункта: открытость исходников не гарантирует отсутствие бэкдоров, а просто делает их поиск куда более лёгким делом. Многие бэкдоры могут быть замаскированы под невинные случайные ошибки в коде. Лучше так не палиться, а написать как-то мягче, более обтекаемо.
Спасибо, на сайте все поправил.
Под Linux можно потом попробовать портировать, просто исходники оригинального PGPFone под Win32, с этого и начал.
Нет, да данном этапе я ничего не подписывал. Были подписаны оригинальные исходники Циммерманна, надо убрать.
ПС: также тестировал i2p в плане пригодности для voip. В принципе, streamr UDP туннель можно использовать, но я так понял, что он односторонний. Во всяком случае, мне не удалось передать данные только в одном направлении. Кто в курсе, подскажите, можно ли и как проще всего создать там двухсторонний UDP-тунель.
ППС: Сорри, ссылка на исходники на главной странице сайта указывала на пакет. Поправил: torfone_v01a_src.zip
Как там с качеством связи через Tor? Говорить без специального выбирания быстрых цепочек можно, или будут слышны только отдельные скомканные слова?
Забыли исправить: not differs (т.е. 3е лицо ед.ч.).
Как в вашем проекте обстоят дела, например, с этой[link1] уязвимостью? Другие комментарии по данной ссылке тоже примечательны. У вас ZRTP?
На начальном этапе тестирования действительно были слышны отдельные слова, но очень помог адаптивный буфер пакетов. В нем накапливается до 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.
На первый взгляд я не вижу тут явных уязвимостей (тем более Циммерманну доверяю полностью), но всяко бывает...
При связи между скрытыми сервисами [HS-Tor-HS] дополнительная аутентификация и шифрование м.б. не нужны, т.к. канал шифруется и аутентифицируется посредством самого Tor, а т.к. никаких исходящих узлов нет, то генерация сеансовых ключей окончательно установленного канала остаётся в ведении компьютеров самих абонентов.
Это одна из причин, почему трафик в торчате принципиально не шифруется никаким протоколом поверх (точнее внутри) торовского. Хотя равномерное шифрование с целью зашумливания и выравнивания статистики исходного звукового сигнала м.б. хорошей идеей.
Наверное, я не до конца вник в алгоритм соединения с HS: мне казалось, что между концом цепочки (три узла) от исходящего клиента и началом созданной цепочки (еще три узла) к HS сегмент открытый.
Но тем не менее, лишний слой шифрования еще никому не вредил, хотя бы действительно с целью отбеливания. Кроме того, я предусматривал также режимы односторонней анонимности и вовсе без нее, где без прикладного уровня шифрования никак не обойтись.
Ага и на точке встречи (RP) тогда сидел бы человек-посредине, слушал в открытую весь трафик и всё бы знал о скрытых сервисах. Нет уж, фиг ему. Внутри Tor весь трафик шифрован как узлами, так и самими клиентами.
В последних версиях можно даже скрыть сам факт работы (stealth mode) скрытого сервера от тех, кто даже знает его адрес, но не знает текущий аутентифицирующий ключ (auth cookie).
Для односторонней анонимности во внешнюю сеть, да, без прикручивания дополнительного криптопротокола не обойтись.
Расскажите пожалуйста подробнее, как можно защитить ТОР?
Имелось в виду не тор, а разговор от перехвата на исходящем узле между тором и незащищённой сетью. В отличие от разговора только внутри тора. Ведь программа ТС предполагает оба варианта использования?
Зная дикие задержки Tor такое общение наверное будет походить больше на обмен речевыми сообщениями, нежели на разговор?
Ну, смотря что считать "дикими" :) Реально получается 4-5 сек задержки голоса. Конечно, надо привыкнуть, но общаться в принципе, можно. Лично тестировал с людьми, далекими от технологий – приспособились достаточно быстро.
Редко канал действительно "замерзает" на 20-60 сек, но это скорее аварийная ситуация, чем норма.
Скайп, как один из самых нетребовательный к пропускной полосе приложений, требует для надёжной связи хотя бы 10kB/sec.
Мало у кого есть Windows, поэтому попробовать не получится. Была бы версия для Linux — было бы другое дело.
Можно ли поменять все auth cookie, не меняя onion-адреса самого HS?
В этом то вся и фишка, если я правильно понял ваш вопрос.
Push-to-talk[link2].
Думал, как лучше, а получилось как всегда :) – наоборот, искал решение под 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 – все работало на ура!
Я снимаю шляпу перед Циммерманном за эту разработку, хоть это и прошлый век. Сейчас такого не делают: очень много излишеств, и никто не заботится о ресурсах.
и для Android
Вот Android – как раз то, о чем я постоянно думал, работая над проектом. Правда, я раньше не писал под ним, и без native C тут не обойтись, но надо же когда-то начинать :)
Как только вырулим под Win32, так сразу...
Здесь просто «массовость» другая. :)
Ну, PGPFone же запущен был не на Siemens S55, а на ПК, так что... Был ещё какой-то http://www.cryptophone.de, можно с ним сравниться по заявленным показателям производительности.
Хотя бы какие-то скриншоты на Torfone выложили на своем сайте, что ли...
И заменили для "Руководство пользователя ТОРфона" дурацкий проприетарный формат CHM на что-нить попроличнее.
Нехорошо, знаете ли, так делать. Никсоиды вынуждены извращаться, чтобы прочитать ваше руководство.
Сказано – сделано :)
Краткое руководство по тестированию со скриншотами в 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.
Чем ваш проект хуже/лучше, чем speakfreely? Можно ли увидеть сравнительную таблицу по уже существующим проектам шифрованных VoIP? Или все они настолько разные, что нет смысла сравнивать?
Это ж какая-то совсем ископаемая архаика. Если говорить о проприетарщине, то silentcircle.com пару дней назад объявили выход версии под Android.
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...
Кроме вас кто-нибудь ещё этим пытался пользоваться? Наверняка ведь вы не только на pgpru.com об этом сообщили. Какие впечатления народ пишет?
Например, цитата:
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...
Проект очень интересный, спасибо за Вашу работу.
Останавливает многих, думаю, именно win32 — большинство активных пользователей здесь всё-таки под различными никсами. Теоретически, можно потестировать под вайном, но это совсем уж грязно, даже если оно и запустится.
Эта штука больше всего нужна под мобильные девайсы ИМХО. Т.е. под Android.
Попробовал под вайном – все работает замечательно. Проверил в режиме "точка-точка" (без TOR), но, думаю, проблем и с ним не будет. Так что просьба по возможности потестить, если, конечно, вайн не вызывает нервный тик изначально.
Андроид – да, из-под orbot, но я не волшебник, а только учусь, так что позже :)
У меня еще одна идейка есть. Т.к. я ембеддер и давно пишу под китайские GSM-модули Quectel встроенные приложения (отдельными задачами на ARM чипсета), использующие API ядра (типа эльфов на старыхь Сименсах). Если ресурсов хватит (а мне кажется, да), то можно выйти на аппаратную реализацию. Но, с одной стороны, если проект не будет open source, то доверия никакого, а с другой, если будет – то никакого проку при значительных трудозатратах.
https://tails.boum.org/todo/VoIP_support/
+ ещё много других потенциальных вариантов.
Тестил пару лет назад jabber-сервер, поднятый в onion. Средняя задержка была около 10 сек.
Этот комбайн мало у кого установлен, но можно попытаться установить.
OnionCat делает IPv6-тунель, ужас. Неужели IPv4 нет в качестве альтернативы? И не понятно, в чём его смысл. Если так нужна прозрачность, то разве нельзя запустить тот же OpenVPN между скрытыми сервисами?
"testing showed wwwOnionCat + wwwMumble" – я с этого как раз и начинал :) Но запуск OnionCat под Win32 – это было что-то! Вобщем, хомячки отдыхают. Поэтому пришлось искать другие пути.
"OpenVPN между скрытыми сервисами" – а это был мой второй этап. И это работало, кстати. Из недостатков – всякие эффекты из-за последовательных вложений UDP-TCP-UDP (задержки, накопления данных), ну и опять же, покажите мне блондинку, поднявшую VPN-сервер для приема звонков (с генерацией сертификатов и т.д.). Да и сам сертификат – громоздкое дополнение к онион-ссылке.
Таким образом вышел на теперешний user-friendly вариант.
Так удалось запустить или не удалось? Если удалось и нареканий к качеству связи не было, можно было б просто собрать автоматизированный пакет под винду, включающий OnionCat + настройки поверх для юзерофильности, а не писать свой код с полного нуля.
К сожалению, наверное, я все ж тупой, т.к. в итоге так и не удалось :( Проще оказалось написать свое :) Если Вы расскажите мне, как прикрутить Кота (или вообще идеально – соберете такой пакет, весьма полезный и для остальных не изощренных), то оттестирую все известные мне p2p VoIP и изложу результаты. Но в любом случае понадобится тула с компенсацией jitter хотя-бы до 1-2 сек. В том же SpeakFreely есть (до 3 сек).
Я так думаю, Кот поддерживает проброс UDP по IPv4? Иначе нет смысла и пробовать, т.к. тул, поддерживающих v6, единицы.
Я просто спросил, т.к. из вашего поста ответ на этот вопрос был не ясен. В любом случае, раз уж вы потратили кучу времени на написание проекта с нуля, это теперь не особо актуально. Или вы думаете, что у связки OnionCat+Mumble могут быть какие-то весомые преимущества по сравнению с вашим проектом?
Думаю, что преимущество только одно: запускать другие VOIP-тулы. Но недостатки могут быть: это, в первую очередь, следствия UDP over TCP.
И опять же: с нуля проект написан в 1996 Прайсом и Циммерманном. Я лишь поменял транспорт на TCP (это та ключевая проблема, которая мешает использования имеющихся тул), добавил поддержку SOCKS5 (это пару строчек кода) и дополнительный адаптивный буфер для jitter-компенсации (тут пришлось повозиться). Ничто не мешает вненсти эти изменения и в другие open source VOIP. Вот сейчас смотрю сырцы nautilus: мультиплатформенный, но консольный. Нет дуплеска и GSM-кодека. А в остальном – то же. Будет время, попробую переделать.
По возможности, отсылайте патчи с обоснованием идеи в Open Source проекты. Опция установления низкоскоростного устойчивого голосового TCP/VoIP м.б. полезна сама по себе. Например в отдалённых районах с плохим (дорогим) беспроводным интернетом.
Консольный — это хорошо. :)
ОК.
Думаю, при дорогом интеренете УДП выгоднее, чем ТСП за счет короткого заголовка. Да и при плохом тоже, за счет невосстановления потерь и сохранения за счет этого реалтайм.
Меньше всего излишеств в протоколе nautilus с кодеком LPC10. Но в нем DH1024 максимум и только симплекс голоса.
Гегель, а тестировали ли вы ваш VoIP в сети I2P?
Тестировал. См. http://zzz.i2p.to/topics/1330
Туннель накапливает данные, затем выдает их порцией, причем раз в несколько сек, что абсолютно неприемлемо. В новой версии TORFone специально добавил функцию отправки регулируемого к-ва dummy-пакетов после каждого голосового (для насыщения туннеля). Но ничего стоящего не получилось, теперь уже, наверное, за счет высоких требований к быстродействию компа (Java все же) – моих 1.5 ГГц явно не хватало.
У кого есть возможность протестировать, буду весьма благодарен.
Что касается UDP, то тестировал streamer туннель. Он односторонний, так что написал утилиту, отправляющую UDP-пакеты сходной длины с интервалом 80 мсек, содержащие таймстемп. На получающей стороне анализировал задержку, життер, нарушение порядка и потери.
В принципе, так все приемлемо, но буфер придется переделать для восстановления порядка доставки.
Но вот создавать двухсторонний UDP-туннель надо самому: его нет среди стандартных типов. Т.к. я на Java не пишу, то придется использовать SAM-интерфейс I2P-клиента. В принципе разобрался, уже определился с логикой работы I2PFone, но еще руки не дошли попробовать. Опять же, не факт, что через SAM-бридж все будет нормально: как будут хоть-какие то результаты, отпишу.
Щекотливый вопрос к автору проекта: на вашем сайте два флага и языка – русский и английский.
С русским понятно, вы вроде наш, русский человек.
Но зачем вы культивируете поддержку Torfone на английском, вы что, планируете выйти на международный, т.е. иностранный уровень?
Если да, то кому это нужно? Ведь мы все и так все под колпаком – у Гугла, начиная с поисковика, почты и заканчивая Андроидом, у MS (Skype) и т.д.
Понимаю, что используются открытые коды и все такое, но зачем еще этот реверанс в сторону иностранщины? Настораживает...
П-ц.
Ога. Жидомасоны зашевелились.
А вообщето все правильно – если нам приходится париться, изучая албанский язык иноземных продуктов, то пусть и албанцы тужатся, изучая наши.
Дурачок, какие ваши? Вы, деревянные, сначала справки хоть какие-то пробейте про автора прежде чем запугивать намеками на статьи о врагах народа из УК РФ.
Вопрос к автору: как с вами связаться тет-а-тет? Возможно спонсорство.
Вообще, может, я ересь скажу, но тем не менее: если верхняя граница на лаги (задержку) обусловлена нижележащим tcp-протоколом, то, пуская udp over tcp, её не понизить. Единственное, ради чего это имеет смысл — не переписывать всё с udp на tcp, но, если писать всё с полного нуля и под Tor, то не понимаю смысла использовать udp. Т.е. udp хорош, когда он на самом нижнем уровне. Кстати, в Tor-протоколе много работали над понижением времени отклика, не знаю как в I2P.
Интересно, что здесь было так много постов «дайте нам анонимный VoIP», что уже всех задрали (консервативная точка зрения состоит в том, что голосовая связь не вяжется с анонимностью в сильном смысле в принципе, т.к. голос человека уникален), но, как только появился gegel и предложил решение, ноль отликов, один я да unknown пишут. Где все эти жаждущие анонимного VoIP?
Чем плохо, что проектом будут пользоваться и будут его развивать в том числе и иностранцы? Это и для анонимности лучше: разве хорошо, когда сам факт пользования каким-либо продуктом однозначно идентифицирует национальность? Количество людей, понимающих английский, превосоходит аналогичное количество для любого другого языка. Можно по этому поводу негодовать, но это свершившийся факт, как и то, что стандартный язык для компьютерных вещей, как и вся терминология — английская. Этим недовольны и немцы, и французы, но это свершившийся факт, даже комиссия по защите чистоты французского языка не спасает (они там выискивают и придумывают франкоязычные термины для всего устоявшегося, после чего законодательно требуют в официальных документах использовать только их. У нас есть, вот, ЭВМ, а у них — ordinateur). Если кому-то действительно хочется уесть англосаксов, надо поступить изощрённее: взять топ-10 или топ-15 самых распространённых языков, за исключением английского, и предоставлять интерфейс сайта только на них, только вот кто будет следить за актуальностью перевода на остальные языки? Даже у самых популярных OpenSource-проектов переводы на языки, отличные от умолчального (читай английского), сильно отстают от текущей версии сайта. Короче, как ни крути, всё опять сводится к Вавилону: нужен один язык межнационального общения, что экономило бы затраты на перевод и изучение иностранных языков. В разные времена и эпохи таким лингвофранком успели побывать многие языки, особенно используемые в метрополиях колоний, как то французский, русский, греческий, латынь... Английский тоже не вечен. Для тех, кто забыл, напоминаю: русский язык понимает в среднем только один из 35-ти жителей Земли.
- По поводу языка – no coments. Я разработчик, вне политики. И территориально не в РФ. И, наверное, pgpru – не совсем то место для этой дискуссии.
– Связаться можно по емейл проекта, если нужен реалтайм, обсудим – есть много способов, я не скрываюсь :)
– udp over tcp использован исключительно ради работы через ТОР (последний udp не поддерживает). PGPFone изначально был заточен под udp и приняты меры для минимализации латенции. Верно, идеально было бы писать все с нуля, адаптируя именно под tcp. Но т.к. это большой кусок работы, и не было никакой уверенности в результате, то пошел по пути меньшего сопростивления – навесил сверху tcp + костыль в виде екстра-буфера, тем самым адаптировав к работе в изначально высоколатентной среде ТОР.
– Голос – конечно, деанонимизатор. У меня с самого начала была мысль добавть возможность манипуляции с сырым PCM в буфере (перед gsm-компрессией), т.е. VoiceChanger, но я пока не владею ситуацией, какие алгоритмы мутации применить и насколько они надежны (невосстановимы и некоррелируемы), надо почитать и погуглить.
Можно взять программу, преобразующую текст в голос. Типа, печатаешь на клавиатуре, а собеседнику это читается искуственным голосом. Ещё сложнее — сделать распознаватель голоса, который бы преобразовывал голос в текст, а потом его повторно читал искуственным голосом. Но это всё так, полуфантастика в плане реальных применений. Наверное, будет сильно неудобно.
И у стен есть уши. ©
На сегодня нет достойных систем распознавания речи. 10 мин теста Горыныча – и все понятно...
А вот голосовая мутация – реально. Давно (еще во времена шифрования речи перестановкой формантных зон) использовался случайный спектральный сдвиг. Это можно реализовать программно, но вопрос в том, на сколько такие алгоритмы приемлемы в наше время. Я пока не делал целенаправленного поиска, но подозреваю, что эта тема малопублична. Существующие голосоменялки наверняка детские игрушки, и при небольшом анализе можно если не точно восстановить оригинал, то по меньшей мере доказать идентичность личности в сравнении с оригиналом. Должны же быть какие-нибудь исследования, публикации по данной теме. Если у кого есть какая-то информация в данном направлении, буду безмерно благодарен.
А подскажите как эти Torfone или Pgpfone находят друг друга? Ведь связующих серверов для них вроде нет, имхо.
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.
Соединение пиринговое (по ip или onion-адресу), без участия центрального сервера.
В рассылке ещё и по-более принципиальным техническим моментам раскритиковали, чем просто неверное использование имени.
Помимо нарушения правил использвания имени проекта в официально неодобренном софте, ещё и переврали принятое сокрашение:
Кстати, к торчату вроде бы такие же претензии из-за имени, плюс ещё какие-то, на фоне множества форков того проекта на сомнительных языках программирования.
Мне кажется, что VoIP-over-Tor или PTT-over-Tor м.б. востребовано, но с другим определением анонимности. Не для того, чтобы оставаться анонимным от собеседника. А для того, чтобы скрыть факт того, кто с кем общается от третьей стороны (наблюдателя), скрыть и сам круг общения, время сеансов связи и сам факт их существования. Или для того, чтобы скрыть друг от друга, откуда совершается звонок в данный момент, но при этом оба говорящих в остальном друг другу доверяют, знают друг друга и перед собой неанонимны, а наоборот аутентифицированы. Т.е. анонимный канал для неанонимных между собой пользователей.
А разговаривать с анонимом, меняющим голос, особого желания нет. Да и всевозможные персонализирующие особенности устной речи, (микро)дефекты, темп, акцент, заикание, интонации, ударения всё это не скрыть.
Пусть аноним письмо пишет или чат устраивает, если у него какие-то поводы привлечь внимание к своей информации.
Из "принципиальных технических моментов" услышал только "нестандарт" и "не поддержан". По поводу сокращения: если 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.
Я где-то не прав?
Ну если там окна предлагают или что-то обсуждают просто, то нет.
Аналогично, если бы вы выпускали бублики под названием "тор", то никаких претензий у проекта к вам бы не было. Или занимались просто обсуждением торпроджекта, вот как на pgpru.com иногда обсуждается PGP. А вот если бы на pgpru.com стали выпускать какой-нибудь свой PGPsuperphone, то были бы закономерные претензии.
И всё-таки, я бы советовал больше обратить внимание на техническую критику, начиная с того, что циммермановский phone — это потенциально уязвимый abandonware и др.
Как раз стараюсь именно на это обращать внимание.
Но тут есть но: изначально у меня была другая цель – показать возможность передать голос через анонимные сети и те проблемы, которые при этом возникают и будут значимы для пользователя. Если завтра я буду в качестве платформы использовать 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" проще простого, тем более имея свои современные аналоги.
Никакого. Данная уязвимость к PGPfone не относится, в нём попросту не используются ни OpenPGP-ключи, ни ADK.
На вашем сайте ссылка на обычный email, что некоторым параноикам типа меня не очень нравится.
Можете организовать защищенную, т.е. https-форму обратной связи?
Добавил ключ (pgp4usb), с профиля можете отправить письмо. Если надо онлайн, то можете на ICQ 281929823 через pidgin+OTR+TOR, только время согласовать сначала – я постоянно не сижу.
Unknown, вы ещё и заикаетесь?!
Вроде бы по существу уже всё сказано, но могу что-то повторить. Важно не то, является ли торговой маркой TORfone, а то, что маркой является Tor. Предствители Tor пекутся не о том, что вы будете извлекать прибыль, наживая себе аудиторию на известности бренда или созвучии, а о том, что аудитория будет по незнанию транслировать своё доверие всему, где в имени упоминается слово Tor, т.е. будет ассоциировать это с самим проектом Tor на уровне «это они, Tor-девы, всё делают и несут за это ответственность». Собственно, поэтому закон охраняет торговые марки и использовать Tor в имени своих проектов как минимум неэтично. По сути это неявная имперсонация, выдача себя за того, кем не являетесь. Опубликование дисклеймера на сайте — это всё хорошо, но лучше всё же сменить имя на OnionPhone или как там рекомендовали.
И на pgpru, и вообще, это всегда так. На одного-двух программистов приходится сотня простых юзеров, которым программистские внутренности программы вообще до фонаря, лишь бы работало. Аудитория желающих потестировать связь в Tor между HS ещё намного уже. Лучше продвигать где-то на англоязычных/международных ресурсах, так больше людей набежит. Можно запостить новость на linux.org.ru, на слэшдоте или ещё где, где аудитории читателей несоразмерно больше, чем у этого сайта; это даст некоторую visibility проекту.
[offtop]
Запостил вопрос[link6].
[/offtop]
Нет, ставлю скобки (в устной речи) :)
TorBOX, например, спокойно переименовали в Whonix без каких-либо непониманий с проектом. А вот в торчате, похоже какие-то неадекваты.
Им, наверно, важно, чтобы оно произносилось как «торчат» (авторы русские?). :)
Прошу пардону, а эта штука "Voice over TOR" способна работать в обычном Интернете, без Тора?
Есть мнгог слов с суффиксом tor, и на них трудно наложить копирайт. Например, назовите проект CryptoficaTORfone :))
Автор же выше уже написал, что концептуально — да.
Так это концептуально, а практически кто нибудь пробовал, есть какието отзывы?
Дабы упредить вопросы типа сам попробуй: пока лежу в больнице, кроме планшетного андроида ничего нет
Я не пробовал, а так, это вопрос к автору, пусть он отвечает. Он писал, что и с Tor пробовал, и с i2p оно как-то работало, значит, принципиальных причин не работать и напрямую нет. Дальше вопрос, что поддерживает конкретный, им реализованный, интерфейс (чтобы самому не лезть в код при запуске продукта).
Конечно, будет работать. Смотрите руководство по тестированию в картинках в части "неанонимный режим": 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 больше нравится и кажется элегантнее.
Ремарка автору проекта: настроил torfone.ini, т.е. внес в него
после чего запустил TORfone.exe. После этого стало возникать окошко
Это бы ладно, но при нажатии на окошке кнопки OK оно снова выскакивает, и так снова по кругу, из которого невозможно вырваться.
Может, надо какое-то другое, более удобное решение для индикации этой ошибки?
Не слишком ли короткий IP у вас?
Да, машинально пропустил, когда здесь писал – на самом деле оно было так:
ListenAddr:Prt=192.168.1. 50:17447
К тому же непонятно, откуда берется эта ошибка, о чем она, если Intrenet в наличии и файрвол для Torfone настроен?
Невозможно биндить сокет по этому адресу. Возможные причины:
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 не знает, что вы собираетесь делать.
Теперь пробел лишний.
Уважаемый 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.
3. И конечно, терпеливо ждем-с порт под Android и Linux :-)
А пробел да, лишний, но он только здесь на pgpru затесался, реально его не было.
netcat, speex (желательно в режиме CBR), aplay и вот вам самопальный VoIP[link9]. Iptables и настройку скрытых сервисов Tor добавлять по вкусу.
Вот такой уютный чат[link10]. Возможно, хорошо бы в нём заменить алгоритм симметричного шифрования или ввести асимметричные ключи. Или вообще заменить openSSL на OpenPGP. Хотя, нужно ли какое-то дополнительное шифрование, если вы будете пускать его только между двумя скрытыми сервисами Tor — решать вам.
Есть ещё socat со встроенным openssl (кому охота пообщаться вне тора). А можно и в нём. Вот пример[link11].
А вместе с torsocks[link12] должно быть совсем хорошо. Возможно даже что-то соорудить и под виндой и без прозрачной торификации файрволлом.
Можете более подробно прокомментировать эту самоделку? Ее плюсы, минусы, прочее.
Спасибо.
Лучше всего использовать 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) более навороченные (для данных задач скорее избыточным функционалом) и больше подойдут для случая. когда Тор не закручен в системе нормальным файрволлом.
Недостатки понятны:
Плюсы: всё тривиально, прозрачно, малоуязвимо, скриптуемо, есть в любом Линуксе, полная независимость и максимальная безопасность потенциально достижимы. Не требуется разворачивания сложных серверов, нет избыточной транспортной нагрузки на тор-сеть. Достаточно кому-то одному наваять скрипты, отладить и выложить их вместе с инструкциями.
Да, там по ссылке даже в лоб сказано:
Torfone является наследником старого Pgpfone и унаследовал от него весьма неприхотливые системные требования.
Но не пора ли их повысить и благодаря этому сменить древний малонадежный по нынешним меркам 3DES на современный AES?
Для воспроизведения audio/video (хоть вместе, хоть по отдельности) через pipe1-TCP-HS1-tor-HS2-TCP-pipe2 можно ещё использовать mplayer — у него размер буфера можно задавать в широких пределах.
А можно ли настроить скрытый сервис так, чтобы даже при известном .onion доступ к нему мог идти только по паролю (чтобы, например, не заDDOSили канал)?
Наглядно показано как взламывают голосовое шифрование[link14] в стандартных программах, которые используют сжатие голоса.
Всё-таки для VoIPoTor пока лучше всего подходит mumble[link15], ссылка на который[link16] в форуме уже была[link17].
Именно для этого эти опции и предназначены. Более того, там есть два варианта: "не знает пароль, но сможет узнать, что сервер запущен, но не сможет туда попасть" и "не знает пароль и без этого даже не сможет определить, запущен ли этот скрытый сервис в Tor или нет".
Обсуждалось здесь[link18].
Сорри, давно не заходил. Постараюсь ответить по очереди.
Повторно перепроверил под 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, задумывают они совсем другой вариант.
Золотые слова! :)
Гм. А зачем тогда в инструкции рекомендовано сменить 0.0.0.0 на реальный айпишник, если проще ничего не менять, оставив эти нули?
Виноват, невнятно написал. По умолчанию создается 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), и т.п.
Еще раз сорри, просто когда сам "варишься" в этом, порой трудно предположить, как оно может быть истолковано другими.
Уважаемый gegel, можете внести эти свои последние разъяснения по поводу вариантов Фиспользования айпишника прямо в файл справки testingru.pdf на вашем сайте?
Ведь при работе приходится ориентироваться на него, и получаются разночтения и путаница.
Спасибо!
Заменил в testing1.pdf и testingru1.pdf
@ 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 ?
Уважаемый gegel
Существует много людей просят модифицированную версию speakfreely
http://sourceforge.net/p/advto.....231/thread/9d735faa/[link19]
Вы можете что-нибудь сделать?
Спасибо!
Да идея, изначально положенная в архитектуру Tor, даёт возможности делать многие более сложные вещи несколько проще и красивее. VoIP просто частный пример. Который концептуально хорошо бы намертво привязать к тору и не давать возможности прямых звонков через интернет из-за опасности смешивания контекстов анонимности и раскрытия круга контактов от внешнего наблюдателя.
Предположим, Алиса хочет принять звонок от Боба. Между собой они в большой степени доверяемы и не анонимны, им важно скрыть содержимое и факт связи от внешнего наблюдателя.
Рассмотрим приём звонков Алисы от Боба.
Как видим, не через какие лишние узлы цепочек трафик не идёт.
Mumble скорее всего выбрали потому, что там легко настраиваемый VoIP-сервер и клиент. Плюс push-to-talk (режим рации), экономный кодек для TCP, встроенный чат и пр. Безопасность этого сервера на первом этапе малоинтересна, это вообще игровая поделка, которая удачно подходит для экспериментов.
Доп. шифрования данных не нужно, т.к. всё и так завязано на безопасность шифрования внутри самого Tor, но при желании такие решения могут быть навешены в более общих случаях.
Можно подумать и о перспективах развития предложенного общего алгоритма.
Доп. свойства и соображения по поводу F2F-сетей на базе Tor:
В принципе, зачатки этого всего есть в сетях, подобных Freedom/I2P за счёт наличия встроенных сервисов из коробки. На базе Tor можно организовать более мощные, правда труднонастраиваемые и пока малоисследованные решения.
Хотя какую-нибудь простую штуку такого типа[link21] могли бы включить в отдельную Tor-сборку для использования "из коробки".
Точно? :) Пытаюсь сравнить старый и новый файл, и не нахожу между ними никакой разницы.
Во всяком случае первые страницы руководства "один в один".
Может, не там ищу?
По ссылке: :)
Шо ж с этой mumbl-ой так носятся... Наверное, naif не совсем равнодушен :) Главное, что расшевелились немного. Я ж не вчера родился, и все это прошел на других своих проектах. Жизнь покажет. Крутые парни сами решат, что им пользовать, не особо слушая такие рекомендации, а хомячки все равно на Скайпе останутся... В общем, собака лает, а караван идет :)
: вот я тоже думаю, что все это в точности есть в TORFone и еще в десятке приложений, но они все плохие. А хороший жавовский Jitsi после дефолтной инталляции сразу лезет на сервер обновляться... Так может, просто гранты оправдать надо?
To alex_10 & michel_25: сейчас именно SpeakFreely и занимаюсь. Архитектура там немного другая, так что не сразу сделаю, тем более, что занимаюсь в свободное время. Можно также попробовать опционно прикрутить к SpeakFreely DH4096 от PGPFone (т.к. изначально там только Preshared key или PGP). И еще можно попробовать добавить "ручной" обход NAT для неанонимного режима (получая данные от любого STUN и предварительно обмениваясь ими например через любой мессенжер на Tor c OTR).
В руководстве поправил рисунок на первой странице и подпись к нему, смотрите внимательно. Если что-то еще желательно изменить, уточните – сделаю.
To unknown: полностью согласен и поддерживаю. Но в реале это не только не развивается, а, наоборот, сдерживается. Например, тот же TorChat – прекрасное приложение, предельно простое и востребованное. Добавить голос, видео – вполне решаемо даже для одного разработчика. И не надо ни мумбл, ни локального сервера. Но похоже, играют роль совсем другие маркетинговые интересы, о которых можно только догадываться.
Команда торпроджекта не против торчата в принципе. Они вскользь озвучивали свою позицию. И про "маркетинговые" интересы они открыто заявляли. Им спонсоры в последнее время выделяют больше денег на использование тора как средства обхода цензуры, для получения населением стран с цензурированным интернетом информации из других сегментов интернета. P2P-chat over Tor и другие подобные сервисы у них даже в обозримых планах не стоят. В отдалённых планах — чат с удалённым централизованным сервисом за пределами цензурированной страны, не больше.
Просто они пока берутся за более простые задачи, остальное отдано на откуп энтузиастам. Скрытые сервисы тоже не в самом приоритете, т.к. всё ещё требуют дополнительных исследований. Они их сами называли "our orphaned child". Но тем не менее, собрались и многое в них допилили на уровне и протокола, и реализации, хотя это в основной roadmap не входило.
Наконец, торчат не совсем адекватно как-то развивается. То он забрасывается, то форкается, то на пакеты авторы подписи не проставляли, то пишется на каких-то совсем левых языках вместо первоначального питона.
Могли бы договориться с названием, согласованием формата документации, и прочими формальностями типа proposals, reports и получили бы возможно хотя бы полуофициальную поддержку торпроджекта.
gegel, приветствую тебя! :)
Как автор многочисленых комментариев к твоему топику, решил наконец сегодня зарегистрироваться ;)
Прими от меня наилучшие пожелания в развитии твоего интереснейшего проекта!
Что за мода на деанон пошла? Может хватит, а? И будем всё-таки под гостём писать? У меня и так
покрывающего трафапокрывающих постов на свои посты не хватает, так ещё и последние анонимы сбегают. Я что, буду тут один как дурак под гостём писать? Чтобы все видели, что я — это я?Пишите в каждой теме под новым ником. Или даже свой ник – для каждой позиции!
Уроки профессиональной маскировки — только на pgpru.com!
Как думаете, имеет ли смысл при работе программы TorFone по обычному (не Tor) каналу загнать ее трафик в SSL-туннель и много ли это даст в плане повышения криптостойкости?
PS. По VPN-каналу вопрос не затрагиваю, поскольку его настраивать сложнее (к тому же случайные временные заминки в нем могут существенно больше, имхо).
Лишний слой шифрования еще никому не вредил. Если сервер аутентифицируется сертификатом, то это исключит Человека-по-средине.
Но PGPFone и сам по себе создает весьма защищенное соединение, что бы о нем не писали в плане "устаревший", "уязвимый" и т.п. Сначала надо попробовать взломать или хотя бы указать реальный путь взлома, а потом уже делать выводы.
Вопрос: будет ли востребовано, если прикрутить к Циммермановскому PGPFone (использующему UDP) возможность ручного прохода NAT?
Идея такова: задаем любой публичный STUN-сервер в ini-файле и по чекбоксу периодически (скажем, раз в 10 сек) шлем запрос. Ответ (свой внешний IP-порт) выводится в инфополе. Для установки соединения между двума клиентами (оба за NAT) они обмениваемся по другим каналам (скажем, по ICQ ч/з Pidgin+OTR – Tor или же по TorChat) своими адресами. Затем оба вводят полученный адрес в поле дозвона, и звонящий жмет "Connect", а принимающий ставит чек "Listening". В итоге должны проходиться NAT, вплоть до PortRestricted.
Смысл в том, что STUN-сервер не знает, с кем вы планируете соединиться (в отличие от SIP), а ICQ не знает ни вас (Tor), ни вашей беседы (OTR), т.о. нет возможности централизовано контролировать абонентов.
Ну, вообще-то большая часть клиентов живёт за NAT'ами, да. :)
Некоторые люди предлагали более прямые протоколы для IP discovery[link22], но их уместность и универсальность под вопросом в силу там же озвученных замечаний.
А скажите, есть ли утилита, позволяющая записывать разговор собеседников TorFone?
ps. Для Skype такие существуют, как для Windows, так и для Linux.
В Linux есть масса универсальных способов записи звука с любого устройства. Подозреваю, что и в Windows также.
Такой функции в самом TORFone нет, не знаю даже, хорошо это или плохо. На каждый звонок PGPFone генерирует новый сессионный ключ, неизвестный абонентам (в отличие, напрмер, от SpeakFreely, где ключ известен). Т.о. позднее будет невозможно дешифровать записанный разговор под прессингом одного из участников.
Наверное, можно перехватить поток данных непосредственно на/с аудиодрайвера и подобные утилиты будут работать одинаково, как и с другими VOIP, но это уже имеет отношение к ОС, а не к TORFone. Для Skype вообще есть голосоменялка, и по идее, это должно работать и с TORFone, если добавить возможность выбора звуковых интерфейсов (на данный момент он использует интерфейсы в системе по умолчанию).
В крайнем случае всегда можно записывать вывод напрямую с звуковой карты/микрофона, что никак не зависит от того, кто их в текущий момент использует.
Такой IP-discovery, как и SIP-сервер, необходим для того, чтобы сообщить о желании установить p2p и о внешних адресах/портах друг другу. В нашем случае уже имеем предварительно установленное защищенное соединение через Tor на HS. Достаточно создать UDP-сокет, получить свой внешний адрес на любом публичном STUN и передать инвайты друг другу через защищенное TCP-соединение, и затем установить p2p (просто переключиться с TCP на UDP трансорт), даже если оба абонента за NAT (конечно, кроме симметричных). Таким образом снимается проблема доверия к внешнему SIP, т.к. его функцию (нахождение и согласование абоненов) выполняет распределенная сеть Tor. Кроме того, PGPFon-овский Диффи-Хеллман первоначально выполняется внутри Tor-канала, что снимает вопрос MitM.
Если это подцепить к TorChat (просто добавив дополнительный HS-порт в torrc), получится очень неплохое дополнение.
А какой нат по умолчанию в iptables и pf? Вроде бы IP и порт всегда меняются(?).
Хм. Зачем повторять мои же слова? Вы пожалуйста, провереную конкретику дайте, а не обие рассуждения.
Конкретику для конкретно какой звуковой системы? Для ALSA например вот так[link23].
Это следствие конкретного modus operandi. Некоторым удобнее открыть все новые посты из /proekt/kommentarii[link24], каждый — в своей вкладке TBB, а потом отвечать на них попорядку. На ответы уходит значительное время, и пока отвечаешь, кто-то успевает ответить раньше тебя. Предпросмотр, впрочем, иногда спасает ситуацию.
Наконец домучил исходники SpeakFreely. Автор их заточил под мультичат, что весьма усложнило работу. Я использовал более старую версию 7.2 (по тупости, начал с того, что было под рукой и вовремя не остановился), но при желании можно повторить и для последней 7.6. Также не стал заморачиваться с асинхронным конектом и, тем более, с мультичатом. Вобщем, сделал как можно быстрее, дешево и сердито – для тестирования пойдет, потом можно будет доделать.
Добавил чек выбора режима TCP, объединил данные и контроль RTP в один поток, в начало пакета пишу двухбайтную длину. Также добавил socks5, изменение пути к ини-файлу для портабельности, изменение версии в RTP (например, для обфускации или передачи ника), разные звуки аналогично TORFone. Голосовой буфер не трогал: штатный обеспечивает компенсацию Jitter до 3 сек, что вполне достаточно. После тщательной ревизии и сниффинга убрал утечки DNS в анонимном режиме (их было предостаточно, так как SpeakFreely изначально не предназначалась для анонимности).
Вобщем, в итоге через RTP+SDES работает вполне прилично с абонентом на HS, хотя в дуплексе, мне кажется, чуть менее стабильно, чем ТОРфон. Зато в PTT режиме работает изумительно! Завел страничку (релиз, исходники и описание): http://torfone.org/spfrru.html
Теперь в плнах попробовать проделать то же для linux-версии, удовлетворив истинных ценителей анонимности :)
Что это?
Push To Talk[link2] — режим рации. "Перехожу на приём, теперь можете отвечать".
Так держать! :)
Только я что-то запутался – Torfone, SpeakFreely – в чем разница, что лучше выбрать?
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.
М.б. 56-битным? При создании DES был занят байт под проверку чётности.
Их лучше всего вместе использовать: с помощью GPG аутентифицировать параметры DH, которыми потом согласовывать ключ. Тогда и forward secrecy будет, и подтверждать подлинность канала с помощью одинаковых слов на обоих концах будет не нужно.
Получается, что если по настоящему серьезно подходить к анонимности и безопасности общения, то опираться на разработку SpeakFreely, в которой изначально фундаментального акцента на них не ставилось, вроде бы особого смысла нет?
Что, впрочем, не исключает использования SpeakFreely в развлекательных играх в секретность, если правильно понял отличия.
Можно посмотреть, как организован OTR в XMPP. Там завязки на GPG нет. Если отпечатки один раз сверены (например, вручную с помощью gpg), то дальше gpg не нужен до тех пор, пока кто-то не решит сменить свой приватный ключ в DH.
Ну написали же чёрным по белому выше, что производительность иногда лучше и некоторые программистские решения там лучше, неплохо бы их адаптировать для
торфаTORFone.При чем тут "иногда"? Вопрос ставится фундаментально.
s/иногда/при некоторых настройках-протоколах/, если угодно.
Ну, в таком случае можно иногда утверждать, что Виндовс, если ее подпереть специальными патчами и прочими костылями, безопаснее Линукса.
Но в целом, согласитесь, ведь это не так :)
Безопасность — понятие слишком эфемерное и плохо измеримое.
Виндовс в руках спеца уровня ntldr будет всяко безопасней, чем Линукс в руках среднестатистического линуксоида.
Вот видите, и вы берете исключительный случай – спец уровня ntldr, аналогично, как и я – патчи, костыли. И тут да, спора нет.
А вы возьмите одинаковые условия! Т.е. пользователей этих ОС с одинаковым уровенем подготовки.
Сорри, описка. 56, конечно!
Я смотрел: 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?
Вы в какой-то мере к этому тоже стремитесь. Вы же хотите, чтобы была отрицаемость, для этого и DH наворачиваете, иначе всё и всегда можно было бы шифровать одним статическим ключом.
O'rly?!
АУ — это «Аy!» в смысе леса, автономное управление или АУтентификация?
Не уверен, что многих это устроит (каждый раз что-то вводить). Можно было бы сделать такой функционал опциональным для собеседников. В XMPP+OTR вообще можно работать без сверки отпечатков, в этом случае они просто будут помечены, как непроверенные. Бывает, не всегда можно сразу всё сверить, а пообщаться надо (это было бы в каком-то смысле оппортунистическим шифрованием).
- Сколько максимально бит доступно на выходе DH в AuthenticationFifo, я не готов сказать точно. Повнимательнее просмотрю исходники. Наверное, можно использовать и хеш от ключа (DH использует expSize 458 бит для 4096 прайма, ключ для AES256 обеспечивается "с натяжкой").
– Ау-АУтентификация, конечно. Речь то о ней :)
– Конечно, это будет опционально. Устанавливается соединение без АУ, и может длиться сколько угодно. В процессе разговора по договоренности оба могут ввести АУ-фразу. Криптография изменится только после того, как оба введут одинаковую (за исключением последних двух символов) – дополнительно защита от MitM.
Torfone под Wine, к сожалению, у меня по-прежнему, не работает, поневоле придется обратить свои взоры на Windows.
Но полноценную ОС только ради одного приложения ставить не прельщает.
Посоветуйте, плиз, какую минимальную сборку XP в формате LiveCD выбрать, чтобы она нормально работала с сетью (Интернетом) и поддерживала аудиотракты, необходимые при общении с Torfone?
Надыбал было на "Windows XP LiveCD Reversion", но судя по описанию, она предназначена не для сетевых забав, а больше как ремонтный диск, и к тому в ней не предсумотрена простая интеграция новых приложений, что нужно для Torfone.
Или LiveCD для Torfone вообще не подходит? (невозможно сохранять переписку, адреса и т.п.).
Или может есть более удачные и менее затратные по ресурсам решения?
Ставить винду как гостевую ОС в виртуальной машине.
Это уже пробовал, обнаружилась нестыковка со звуком, он не слышен не мне, ни собеседнику (базовая ОС – Linux).
Хотя вызов на Totfone собеседника проходит и обнаруживается.
А что именно не работает под 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, все работает прекрасно.
Отличный проект, надеюсь автор не сделает его потом платным. По-хорошему надо еще анонимизировать сам голос, в идеале распознавать и воспроизводить механически.
Даже при моем желании сделать платным 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-приложения: компромисс между простотой кода/портируемостью и юзерофильностью.
Я тихо фигею... Т.е радуюсь, что в Рунете нашлись люди, которые вместо ежедневного трепа на разных сайтах с умным видом и надуванием щек, реально делают что-то полезное!
gegel, мои респекты! :)
А где она добавилась?
В меню Edit – Preferences – Encryprtion видны по прежнему те же 3 алгоритма:
– Triple-DES
– Blofish
– CAST
AES не наблюдается.
Версия 02a.
Добавил (вместо Blowfish) и проверил, но пока V03a не релизил – еще потестирую и исправлю несколько мелких багов (например, при снятии флажка Unencrypted на вкладке Phone, т.е. блокировке передачи ника открытым текстом при конекте (до ответа абонента) виснет при работе через Tor). Также не до конца согласован по времени момент смены nonce (Анти-MitM) после аутенификации уже в процессе разговора при соединении через Tor (из-за возможных больших задержек).
Скорее всего, выдам уже вместе с поддержкой UDP, чтобы не плодить много промежуточных релизов.
Не лучше ли вместо Triple-DES ?
В самом деле, Triple-DES алгоритм древний, как фекалии мамонта, и с точки зрения стойкости интереса давно не представляет.
Blofish, детище Шнайера, куда более актуален.
И как это скажется на анонимности?
Им нельзя[link25] много шифровать, да и как обстоят дела с его безопасностью на текущий момент... Всё же надо отдавать себе отчёт в том, что Blowfish — не конкурент современных шифров типа AES. Если и брать что-то из того семейства, то лучше более современное типа TwoFish'а. ИМХО.
Те, кто трепятся, могут тоже делать что-то полезное, но другое. Мало кто пишет в инетернеты полный отчёт о своей деятельности. Сводить всю полезность к сиюминутной полезности для
животноводстваповседневного использования в быту, да ещё и строго на текущий момент, тоже не стоит. Каждый занимается своим делом, jedem das seine.Могут... но предпочитают трепаться :)
На tDES просто рука не поднялась :) Уважаю классику: от мертвого мамонта никаких сюрпризов точно не будет, а свой 80-битный security level при 168-битном ключе он обеспечивает. "Тебя я давно знаю, а этого кота впервые вижу".
Хотя не пойму смысла делать ассорти криптоалгоритмов: это создает иллюзию криптостойкости и только отвлекает юзера от возможных значимых ляпов в реализации и использовании. Было бы достаточно одного AES ИМХО.
Я об этом тоже думал, по идее, не должно; скорее, наоборот. Задал вопрос на Tor Mail list.
Именно!
Вот именно – каждый жрет свой хлеб с маслом под одеялом, другим ничего не достается.
А взять пример у Фила Циммермана – слабо?
Не все любят AES, у каждого своя параноя. Обычно в серьёзных продуктах делают поддержку нескольких сильных шифров, чтобы было, из чего выбирать. Даже поддержку каскадов реализовывают.
Кстати, да. Уж слишкои навязчиво он выдаётся за панацею – подозрительно это... А многие уже "купились", что видно даже по некоторым здешним комментариям.
При чем тут многие? Если в USA в госструктурах официально пришел на смену DES, то это что-то значит?
Да собственно, ничего не работает. Уже использую версию 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. Нажимаешь эту кнопку – и мгновенно снова появляется это окошко, и так по кругу до бесконечности, выхода из цикла нет.
В следующих сеансах попытаемся записать ошибки подробнее, но лучше, если сделать логгирование.
Аргументация в вопросе выбора алгоритмов строится на других принципах. Или вы можете рассказать и убедительно показать, почему лично вам не нравится ключевое расписание или алгебраические свойства шифра?
Теоретически, он может быть слабее своих современных аналогов. И предпосылки так считать есть, но без ссылки на исследования будут носить чисто спекулятивный характер.
Практически — к нему приковано внимание мирового криптографического сообщества, подавляющее большинство исследований проводится на нём и все новые тренды, неожиданные подвижки и открытия будут известны на его примере. В то время как ГОСТ-89 был интересен временно, когда на смену DES официально не пришёл 3-DES и не появилось в 90-е годы некоторое количество удачных нестандартизированных блочных шифров, а затем ГОСТ опять стал никому не интересен. Снова ГОСТ стал интересен для взлома только после того как его захотели внести в междунардные стандарты и тут в нём обнаружилось, что ряд новых методик криптоанализа, не сработавших на AES, удачно работает против него. А так бы никому не было дела.
Про уязвимости малопопулярных конкурентов AES в открытых публикациях может так и не появиться никаких материалов по причине отсутствия интереса к исследованиям.
Наконец, AES пока что наиболее удачно интегрирован во многие стандарты и режимы использования, например AES-XTS. Заменив его там аналогичным шифром можно получить ошибки или несовместимость. Опять же, почти во всех программах наборы шифров берутся из стандартных библиотек или кусков кода (тот же OpenSSL). Интересного лично вам шифра там может и не быть.
Тут подозрение может быть такое: поскольку AES мировой стандарт, то под него могут быть заточены специализированные вычислительные мощьности глобального закулисья совместно с секретными теоремами высшей алгебры, а особо проницательные исследователи могут при этом находится под пристальным вниманием. А для менее популярного шифра это менее вероятно и из-за этого его использование может быть даже несколько безопаснее – через своего рода неясность. Для слегка неуловимого Джо – параноика.
И полюбому не надо лишать людей радости каскада!
Мысль, не лишенная основания. Не исключено, что AES разрабатывали с таким уклоном, встроив в него, условно говоря, backdoor, т.е. скрытый алгоритим расшифровки.
Так то оно так, только каскадирование многократно увеличит потребности в мощности, к тому же тут realtime – голос, который не может (долго) ждать.
Мне буквально лет 5 назад один приятель из российской глубинки писал: смотри, опасайся ФСБ, ты ж заграницей жил, тут таких мало, за тобой глаз да глаз будет, если приедешь. Мои объяснения, что россияне миллионами ездят в египты и турцию, и никто из этого не делает проблемы, были для него неубедительны. Советское мышление... оно ещё даст о себе знать.
Для тех, кто подзабыл: AES — чисто бельгийский шифр родом из Католического универститета в Лёвене. А НИСТ утвердил то, что ему на конкурс прислали.
Вы программу запускаете на калькуляторе?
Ъ-параноика такой аргумент убедит едва ли. Тем более, весной.
Ну вот! Значит его авторы вполне могут быть членами тайной католической организации, претендующей на мировое господство!
Библиотечка параноика[link26]
Эти миллионы ездят отдыхать, причем коллективно через турфирмы.
Возвращенные уже советские статьи в УК... оно ещё даст о себе знать. Особенно пожившим там.
[offtop]
Из ездящих на стажировки, на шопнинг, встречи, конференции, по работе, к родственникам, отдыхающих самостоятельно тоже наберутся миллионы, а штази распустили. Не забываем, что бывшие страны СССР — тоже теперь заграница, но у многих там друзья, родственники, связи, бизнес и пр.
[/offtop]
Автор – американец? А кто на русский перевел?
А тред почитать? У интернет-проектов нет юрисдикции, но надо к чему-то аппелировать, хотя бы к каким-то национальным законам. Здесь, возможно, делается акцент на том, что даже одна из самых законченно законнических, агрессорских и тоталитарных стран защищает, согласно формальному закону, право на.
gegel, а можете встроить в Torfone также и симметричные алгоритмы?
Если не ошибаюсь, нас учили в школе, что это самые стойкие криптоалгоритмы.
Конечно, они тоже не без недостатков, основной – необходимость обмена шифроблокнотами, т.е. встреча собеседников.
Но в наше время эта проблема значительно упрощается – в одну современную флешку можно загнать столько страниц блокнота, что хватит на 100 лет сеансов разговора.
Понятно, что при этом нужно хотя бы один раз встретиться. Но для некоторых собеседников такой шанс может появиться, и его не стоит исключать ввиду открывающихся преимуществ.
3DES, AES — это, по-вашему, что?
Мой телепат подсказывает, что Гость имеет ввиду одноразовый блокнот, но называет его симметричным алгоритмом. :)
Эээ... действительно что-то путаю :)
Хорошо, попытаюсь пояснить по другому.
Системы с парой "открытый/закрытый" ключ – ассиметричный алгоритм. Открытые ключи можно передавать по открытому каналу связи.
До его изобретения использовались симметричные алгоритмы – когда у отправителя и получателя ключи одинаковые. Их нельзя передавать по открытому каналу.
Как-то так ;)
Ну так
Момент[link27]... истины[link28].
В ТОРФоне используется Деффи-Хеллмана (асииметричный), но он не для шифрования, а для согласования ключей. А для шифрования используются симметричные алгоритмы. Наверное, вы имели ввиду ввести возможность использования симметричного шифрования ключем, заранее согласованным пользователями. Так делает, например, 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 и исходные коды по ссылке на основной странице, описание – на странице помощи.
Он это всегда может[link29].
Конечно, если заранее пользователь поставил такую цель, то без проблем можно получить сеансовый ключ. Но в обычном режиме пользователи не знают сеансовый ключ, и при каждом новом звонке он другой. Таким образом, даже под пытками позже пользователь не сможет выдать то, чего не знает. А так как это понятно, то и пытать не будут :)
AES256 – просто превосходно, супер!!! :)
Огромное спасибо за прочный криптоалгоритм!
И парочку вопросов:
1. Побеждена ли в версии 0.3 досадная ошибка, которая жутко мешает работать? Речь идет о
2. TorFone использует сторонние библиотеки? Если да, то как вы думаете, насколько мала вероятность нахождения в них "закладок"?
Да – еще просьба:
3. У вас номер версии TorFone меняется, и это логично отражается в имени скачиваемом файле – torfone_V03a.zip
А вот имя файла мануала остается тем же – все тот же testingru1.pdf
Его бы то же стоило синхронно менять, чтобы пользователи не путались.
К тому же в нем по любому должно найти отражение изменения версии, в данном случае – появление AES256.
Когда что-то начинает вызывать массовое безоговорочное эмоциональное восхищение, уже только это само по себе – повод задуматься[link30]...
Да, устранил в первую очередь :) При невозможности создать сокет после первого сообщения автоматически снимается чек "Listen", так что зацикливания не происходит. Если после запуска чек снят, и нет специфического звука, указывающего на активность слушающего интерфейса, значит, что-то не так.
Сторонние библиотеки все в исходниках. Источники:
Оптимизированный 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 – в те времена о бекдурах точно не думали.
gegel, несколько вопросов и идей на будущее:
1) Симметричный шифр в каком режиме используется?
2) HMAC_SHA1 – можно ли в будущем на SHA2 хотя бы перейти? Маловероятно, что она станет небезопасной на практике, но всё-таки :)
3) Что думаете про кодек Opus? http://opus-codec.org/ У него минимальный допустимый битрейт не столь мал, как у CODEC2 или MELP, но очень маленькие задержки, размер кадра от 2,5 мс. Возможно его можно использовать как HQ-кодек.
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/ Хотя их преимущества в вариабельном битрейте, что не совсем подходит в плане криптостойкости.
Спасибо. Такой вопросик ещё возник, как происходит подтверждение подлинности пакетов с данными? Я думаю, их лучше бы отбрасывать сразу без попыток декодирования голосовым кодеком. как себя сейчас в подобных случаях приложение поведёт?
Эту разработку прекратили после выхода opus.
Это да. CBR, впрочем, тоже весьма неплох по качеству.
Т.е. AES не стоило интегрировать, так надо это понимать?
Это надо понимать так, что кроме AES должны быть и другие алгоритмы шифрования, желательно с возможностью объединения в каскад.
Так они и остались – гляньте в программу, исключен только Blowfish
Пакеты управления, текстовых сообщений и файлов содержат 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).
При всём уважении к программерскому энтузиазму.
Но это показывает наколеночность дизайна. Как будто HMAC не изобрели и методы аутентификации в каналах, хотя бы например как в SSL. И даже те, навороченные методы, периодически атакуют из-за того, что программеры не понимают, как надо реализовывать аутентификацию. Всякие теоретические оракулы вылезают в практические атаки. А программеры-шифрпанки по прежнему просто думают: "а давайте-ка воткнём CRC-32 в шифртекст и получим аутентификацию".
Притензии не ко мне – лично к Циммерманну :)
Мне кажется, глупостей он не делал даже в то время.
Так, например, ключевой момент DH защищен SHA.
Собственно, аутентификацию для исключения MitM уже я реализовал lege artis на базе HMAC, могу детально описать релизацию.
Но все же, не используя шаблонные утверждения и догмы, покажите мне конкретно, где уязвимость, и как ее можно использовать в данном случае, если crc32 пакета передается вместе с пакетом в шифрованном виде? (шифрование в режиме CTR).
Возмем, к примеру, пакет с текстовым сообщение. Я так понимаю, хотим сделать подмену. Да, можно побитно манипулировать с текстом и с crc ( т.к. CTR), а дальше как???
Как раз шифропанки часто думают гораздо глубже, чем многие профи, применяющие заученные в вузе шаблоны... И стойкость системы определяется не используемыми алгоритмами, а их реализацией и обоснованностью применения для данной конкретной задачи.
Намечается дискуссия на тему "практика vs теория" :)
gegel, слишком толсто. Как раз обосванием занимаются теоретики в вузах, а шифрпанки определяют стойкость на глазок подобно тому, как студентота определяет работоспособность программы по признаку «ошибок не пишет — значит, работает правильно».
Свежий взгляд со стороны всегда полезен, даже если он шифрпанковский или ещё какой, но это не отменяет необходимости системных знаний, которым как раз и учатся специально (или в вузах или сами по книжкам/статьям).
Вот чего люди стандарты пишут[link31], головы ломают[link32]. Взяли бы AES-CTR + CRC-32 и не мучались.
Для построения стойкого аутентификационного канала обе функции должны быть криптостойкими, как шифрующая, так и аутентифицирующая. Причём это необходимое, но ещё даже недостаточное требование. Полностью достаточный набор требований я даже не решусь назвать. Для этого ещё только разрабатываются спецрежимы шифрования (часть уже стандартизирована и внедрена, но их безопасность недостаточно доказана), прорабатываются решения на основе Keccak. Пока проверенная классика: связка KDF для получения двух разных ключей из одного + HMAC для аутентификации + шифрование.
Разработчики IPSEC, к примеру, на аутентификации прокалывались. OpenSSL — это вообще нескончаемый поток багов в этом вопросе. Циммерман начинал тоже с шифрпанковского бажного подхода (и во многом на нём оставался).
Да, сходу метод взлома не скажу, где-то это обосновано в теоретических работах с кучей выкладок и формул, но шифрпанкам это всё неинтересно же. Им интересно, когда через n лет кто-то заинтересуется их продуктом и найдёт способ практического взлома.
Подменить один известный текст на другой, делать атаки переотправкой, перебивать таймштампы, строить оракулы на анализе отбрасывания/прохождения ошибок. Я ж не знаю, как там у вас всё реализовано.
Это вы доказывайте, что вы взяли и внесли изменение в стандартный протокол безопасным образом и ваш метод построения канала безопасен в рамках каких-то моделей.
При всём уважении ко всем, кто, что-то реальное делает (К Циммерману, к команде OpenSSL, к вам и вашему проекту и др.), просто первый способ из этих двух откровенно достал уже:
Если номер и timestamp в вычислении хэша не участвует, то совсем беда. Номер и timestamp можно подделать. Если участвует, что уже сложнее, хотя тут возможно получится особенностями crc воспользоваться.
Все делают ошибки. :) Кстати, в PGP была одна слабость в механизме защиты секретных ключей, когда там crc32 использовалась. Её нашли и исправили уже в пост-Циммермановское время. Я деталей не помню, но вдруг аналогичный подход и тут сработает?
А вообще да, истории последних лет (SSL/TLS – ярчайший пример) как-то не вдохновляют: теоретические слабости часто вырастают в чудесные практические уязвимости.
Спасибо за замечание, в первую очередь unknown. Подумав, не могу не согласиться со всем сказанным. Конечно же, на crc32 нельзя полагаться для подтверждения аутентичности пакета. И дело тут в первую очередь в режиме CTR. Например, зная, какой файл я собираюсь передавать с помощью PGPFone, злоумышленник может изменить его содержимое на свое (включаю общую SHA). Это тяжелый баг, и удивительно, что никто ранее не указал на него, а я никогда не ставил целью инспектировать код Циммерманна...
Вопрос к гуру: как вы относитесь к AES OCB в данном случае? В качестве IV для пакета можно использовать готовый неповторяемый counter, ранее использовавшийся для CTR. В качестве тага – часть хеша общего секрета.
Естественно, совместимости с V0.3 не будет, но лучше так, чем оставить как есть...
Как понять готовый? Доказано, что, к примеру в CBC, IV должен быть строго рэндомный, из CS(P)RNG. IV-счётчик или IV-функция не прокатит — это позволяет строить различители блоков. Смутно припоминаю, что и для других режимов скорее всего также, иначе бы не изобретали заумных схем с SIV (синтетическим IV для детерминистического шифрования).
Советую не изобретать свой протокол, тем более без умения его формализовать, возьмите что-то готовое. Ну хотя бы внутри SSL/TLS-каналов пустите.
Это полуюмористическое замечание на самом деле. Глубоко в ваш проект не вникал. Тяжело разбирать наколеночный дизайн, руководствуясь догадками при отсутствии документации. Открытый код недостаточен и интересен уже в самую последнюю очередь, после анализа всего остального. Ну и нечаянно вышел наглядный пример, почему теоретики, в массе своей, программ не пишут, только мало кем читаемые публикации. Спасибо за то, что имеем, оптимистичным практикам.
Счетчик, к сожалению... Я не особо профи в криптографии, но не хотелось прикручивать готовый SSL/TLS. Если будет возможность, дайте ссылку для повышения образованности на
(или в двух словах об этом).
Поищу по OCB, может, там IV-счетчик и допускается.
PS: немного погуглил и почерпнул знаний из Ваших же постов на форуме.
По ходу вопрос: а стоит ли на это обращать внимание, учитывая, что симметричный ключ для каждого сеанса новый? По подсчетам, за 1 час связи вряд ли будет больше 500 000 AES-блоков. Думается, это не совсем то, что нужно для практического использования описанной уязвимости, даже предполагая знание незашифрованных данных.
А если пакет потерялся нечайно? Много может быть неожиданностей, вплоть до «атакующий угадал counter». Одно время назад писалось про уязвимость TCP-стека в винде и линуксе из-за недостаточной случайности выбора случайных чисел, используемых как counter (утверждалось, что в OpenBSD с этим лучше; как сейчас — не знаю).
Так IV по определению известный, зачем его угадывать. Другое дело, что он должен быть уникальным на каждый пакет, и, как указал unknown, рандомным, иначе, я так понял, облегчается дифференциальный криптоанализ.
Я выше уже описывал работу программы: в начале пакета PGPFone передает 2 байта инрементируемый ИД, восстанавливамый до 32-битного счетчика. Счетчик работает только вперед: пакеты с меньшим ИД будут отвергаться.
Конечно, это создает почву для DDoS, но не уязвимость криптографии.
А вот касательно IV-счетчика при наличии небольшого количества пар зашифр.-расшифр. блоков хотелось бы услышать мнение.
Не по этому. Если облегчается, то такой шифр — на помойку сразу. Возможно вы не так поняли. Рэндомное только стартовое значение, дальше обычное приращение по счётчику. Счётчик разумеется открытый. Противник не должен до начала передачи предсказать значение счётчика.
Если вы претендуете на конструирование системы, скажем, со 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 за одну операцию — запрос к оракулу. Такой модный криптоанализ с параллельными мирами, в которых сидят разные оракулы, тоже представлен, куда же без него-то теперь.
Дело ваше, набирайтесь знаний и опыта. Но я бы лично не взялся в одиночку конструировать протокол построения защищённых каналов связи с нуля, без посторонней помощи. У меня такой квалификации нет. В лучшем случае внедрить готовый стандарт. И там есть поле для наступания на грабли с фатальными ошибками и подкладыванием самому себе таких бэкдоров, от которых любое АНБ помрёт со смеху.
Ну и выкиньте из головы вопрос: "как это можно взломать?" Построение безопасной системы начинается с других вопросов: "как это можно отличить от идеальной модели?", "есть ли хоть какие-то самые абстрактные различители?", "как можно формально обосновать стойкость?".
Как из этого сделать практический взлом сходу не смогут оценить даже ведущие специалисты, им проще забраковать на сертификации недостаточно обоснованное в плане безопасности решение.
ОК, теперь понятнее :)
Кстати, как раз нашел для OCB:
http://www.cs.ucdavis.edu/~rog.....faq.htm#describe-ocb[link35]
Тогда почему бы не взять AES128, а неиспользуемые в ключе биты общего секрета DH загнать в IV, и затем суммировать их со счетчиком?
Посмотрю исходники Mosh, там вроде тоже AES OCB.
Неиспользуемые биты? Вот так просто взять? Во-первых, все такие связки по выведению одного секрета из другого делаются с помощью KDF, чаще всего HMAC-KDF. Во-вторых, в чём проблема сделать чистую рэндомизацию без синтетического IV, который в вашей схеме выводится из других элементов протокола? У вас же не смарткарта, где случайные числа получить неоткуда.
Bellare тут ни при чём, работа написана Рогавеем (хотя весь беллар работы в благодарностях).
Если gegel попытается её осилить, он быстрее ороговеет, чем станет Рогавеем, от работ которого будут роговеть уже другие, менее ороговевшие криптографы. IMHO.
Спасибо за замечание, исправление ошибки по авторству и тонкий комментарий :) Согласен с каждым словом.
А работа выдающаяся, жаль, что её похоже ещё долго не смогут оценить даже
бюрократыспециалисты, составляющие стандарты в НИСТе. Ибо, судя не только по этой работе у них там не всё гладко, и в криптосообществе нарастает недовольство косностью НИСТа.Согласно Рогвею, смайлик, обозначающий случайного оракула, выглядит вот так: $(·,·). Gegel, вы уже вывели формулу с учётом IV для Adversary Advantage в своём протоколе: AdvεIND$ (A) = Pr[AεK(·,·) ⇒ 1] − Pr[A$(·,·) ⇒ 1] ?
:)
Спасибо за ссылки, но становиться криптографом я и не собираюсь, меня больше прикладные задачи интересуют: я выбрал развитие вширь, а не вглубь. Эти надо было с детства начинать заниматься, сейчас мне уже поздновато :(
А поэтому, если можно, буду обращаться по ходу дела за готовыми выводами и мнениями.
Я имел ввиду: взять половину бит уже ключа. Но Вы опять натолкнули на размышления:
почитав rfc2631, а затем просмотрев код PGPFone в части DH (я раньше туда не смотрел), я нашел, что в качестве битов ключа используются непосредственно биты общего секрета (результата ExpMod). Это тоже можно считать уязвимостью?
Я подразумевал взять НЕИСПОЛЬЗУЕМУЮ половину бит: они по идее рандомны и никак не коррелируют с другими элементами протокола.
собственно, в синхронизации его у обоих абонентов. Потребуются дополнительные элементы протокола. В описанном выше варианте оба абонента уже имеют одинаковый и рандомный (причем рандомизированный обоими абонентами) IV, не связанный с другими криптоэлементами.
ПС: просьба не пинать, это не моя отрасль, но хочется разобраться. Посоветуйте, если что не так. С ув.
=== ППС: Вопрос по IV снят, но вопрос по DH актуален, посоветуйте, плз.
От Rogaway, слайд 9:
http://csrc.nist.gov/groups/ST.....resentations/ocb.pdf[link36]
Они хоть похэшированы как-то? Результат сырого согласования по DH — не рэндомный и подвержен утечке битов через символы Якоби. Вот думаете, почему подписи RSA ломались в своё время? Из-за кривого стандарта дополнения в симметричной части. Для чего был придуман OAEP?
Для выведения общих секретов из одного используются PRF на хэшах.
Вот собрались как-то[link37] криптографы и ковырятели кода и почти поломали PGP. Не удивлюсь, если в спецагентствах команды из криптографов и кодокопателей давно ведут работу, выявляя на потоке большой массив уязвимостей по всевозможным VPN-ам и SSL, так что их суперкомпьютерам не нужно перебирать весь массив ключей.
Криптография и есть прикладная штука. Вглубь — это становиться математиком и изучать теорию чисел, например.
В том то и дело, что не хешированы: в качестве ключа используется сырой результат DH-согласования. Я поэтому и спрашиваю, на сколько это есть плохо. rfc2631 показывает, как из общего секрета получать ключ в случае, если длина ключа больше длины SHA. Т.к. у нас вопрос с IV отпал, то общий секрет будет использоваться ТОЛЬКО для формирования ключа. Наверное, вместо того, чтобы просто использовать часть его бит как ключ, стоит посчитать SHA-256 и использовать ее значение в качестве ключа, как думаете?
Поищу-почитаю, спасибо.
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)
См. также:
7.3 Using the Shared DH Secret Key
Вы наивно полагаете, что SHA-256 — это "suitable key derivation function"? Я знаю только то, что она ей никогда не являлась.
Думаю, что даже если осилить ВСЮ работу и массу публикаций по этой теме, это не даст гарантий от дыр. У меня впечатление, что если анализировать код такого рода проектов, (популистский шифрпансковский I2P из той же серии), то граблей там навалом.
Не падайте духом, но шифрпанки, искренне желающие написать "код без закладок", очень полезны для NSA.
Даже зачастую специально не придумать таких бэкдоров, которые может учудить оптимистичный софтописатель. Циммерман — тоже не криптограф, при всём к нему уважении, он такой же шифрпанк своего времени. Благо, его код привлёк в своё время очень большое внимание и его направлял даже Шамир.
В подавляющем большинстве случаев открытый код не из академического собщества на уязвимости анализируют такие же программеры, не криптографы. Так что вопиющие дыры в реализации собственно крипто там могут спокойно оставаться незамеченными. Годами.
OCB — похоже удачный и обоснованный выбор. Хотя и грамотно реализованный CTR с аутентификацией тоже бы подошёл.
Пример PRF на базе HMAC можно найти в TLS 1.2 (rfc 5246, раздел 5)
Кстати, что unknown скажет про эту PRF?
Если они ссылаются на это[link39], то ничего плохого. Только без устаревших хэшей (sha-1, md5).
Ну разве что в отдалённом будущем ожидаются универсальные PRP-PRF-примитивы и все эти нагромождения когда-нибудь устареют.
Огромное спасибо! Вчера уже поздно нагуглил dhfull.pdf и перечитал как раз те разделы, на которые вы позже указали. Уже приятно, что частично сам разобрался :)
Сегодня прикрутил AES256-OCB вместо CAST. По свободному времени займусь PRF.
ПС: я не ставлю основной целью разработать суперзащищенное приложение, просто мне интересно разобраться. Это как вязание для домохозяйки, что-ли... :)
Нормальная мотивация, информацию схватываете, работаете с ней самостоятельно, может и в профессиональный навык перейдёт :)
Покопал код 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 байт меньше, а особой необходимости в шифровании и нету.
Если есть явные ляпы или предположения уязвимости, очень прошу озвучить.
Круто! :)
Значит в случае использования какого-нибудь adpcm можно было вообще заставить воспроизвести звуковой мусор.
Мне кажется, это даже избыточно. PBKDF2 предназначена для получения ключей из совсем небольшого исходного материала(паролей) и довольно медленная.
Про OCB не скажу ничего, не знаком пока. :(
И не только. Многие синтезирующие кодеки, например, тот же melp, пакуют биты в кадр строго на свои места, и используют старое состояние для инициализации нового. Черт его знает, а вдруг есть возможность, последовательно манипулируя битами, установить определенный известный кадр, и затем менять его уже целенаправленно.
А касательно передачи файлов – полный п-ц: если злоумышленник точно знает, какой файл вы будете передавать, то вообще без никакой криптографии заменяет его на свой, тем самым подсовывая поддельный документ или трояна. Теперь исправил, aes256-ocb будет в следующей верии.
Я вначале хотел использовать только PRF с подходящим размером выхода (например, SHA512 на два 256 бит ключа), но попал под критику :)
Хотя до сих пор тоже не могу понять смысл использования KDF для получения 512 бит кейматериала из 4096 бит DH секрета. Понятно, что без хеширования нельзя, т.к. биты секрета неравнозначны и коррелирующие между собой, но и KDF с ее итерациями и salt, затрудняющими подбор пароля по словарю, тут как бы и ни к чему.
PS: раз уж взялся за криптографию PGPFone (хотя никогда не собирался этого делать), то хочу еще проверить реализацию DH и особенно CSPRNG и коллектор энтропии, там тоже могут быть сюрпризы. Например, nautilus предупреждает, если аудиоэнтропии недостаточно для сидирования CSPRNG (микрофон отключен). PGPFone этого не делает, что уже нехорошо.
SHA-1 и SHA-2 являются не очень хорошими PRF. Для построения стойкого PRF из них используется HMAC. То, что из HMAC в свою очередь делается (для других уже целей) PBKDF2 не значит, что нужно тащить его туда весь. Достаточно правильно использовать только HMAC.
См. RFC4868[link40] для описания PRF-HMAC-SHA-256, PRF-HMAC-SHA-384, PRF-HMAC-SHA-512.
Спасибо! Наконец я понял, в чем заблуждался: мне казалось, что отличие между HASH и HMAC только к устойчивости к атакам на подмену подписи и выбранного откр.текста. Если вникнуть в то, как HMAC использует HASH-алгоритм, становится ясно, откуда псевдорандомность.
Еще раз спасибо за расширение кругозора: не знаю, пригодится ли это, но за плечами не носить :)
Переделывать уже не буду: PBKDF2 взял готовую (без напрягов), кроме того, по скорости не критично.
Я, наоборот, дополнительную задержку вводил после подсчета общего секрета: это еще один прикол PGPFone, опишу для поржать.
Во многих доках, начиная с 1996, упоминалось, что PGPFone иногда виснет на этапе согласования ключей. И действительно, около 1/20 конектов зависали. Я решил попробовать разобраться. После подсчета публичного ключа, как и положено, вычислялся его хеш. После предварительного обмена хешами происходил обмен самими ключами. После получения публичного ключа подсчитывался общий секрет и создавался енкриптор, при наличии которого ВСЕ дальнейшие пакеты уходили криптованными. Так вот, если один из участников запаздывал, другой участник формировал енкриптор и отсылал публичный ключ уже в криптованном виде :) Тупейшая ситуация... Я сначала вставил костыль в виде 1 сек задержки перед формированием енкриптора, а затем изменил код, чтобы публичный ключ никогда не шифровался. Теперь не виснет :)
Мне кажется, это не последние сюрпризы...
Передача файлов практически во всех протоколах (за исключением имеющих встроенную поддержку передачи файлов на должном уровне, типа SSH и OpenVPN) не шифруется, поэтому нужно самому зашифровать файл, подписать с помощью gpg и отправить собеседнику. Подмена файла атакующим в этом случае (и только в этом) исключается. Например, так рекомендуется передавать файлы через XMPP и Skype.
PGPFone использует нестандартный Циммерманновский протокол передачи файлов, задумывался он как надежный. Он достаточно сложный, я с ним детально не разбирался. Это как бы свой ftp-tcp поверх udp. Имя файла или папки получаем методом drag&drop, выстраиваем файлы в очередь, каждый файл инициализируем (имя, длина, SHA), передаем пакетами размером около 900 байт с указателем, подтверждаем группу байт, дублируем при потерях. Конечно, медленнее чем ftp или http, но выглядет надежно. Используется отдельный счетчик пакетов для передачи файлов. Его значение + тип пакета входят в IV.
Проблема была не в протоколе, а в режиме CTR без аутентификации: зная, какой файл будет передаваться (plaintext), ксором получаем гамму и затем формируем новый cifertext из гаммы и своего plaintext (включая пакет с именем файла, длиной, sha...), пересчитываем crc32 – и подмена готова.
При использовании OCB это исключено. Т.е. после согласования ДИффи-Хеллмана и аутентификации (голосом по списку слов или предустановленной фразой с использованием HMAC) можно быть уверенным в аутентичности файла и конфиденциальности: предварительное шифрование/подписывание PGP вроде как и не нужно. Хотя, конечно, береженого бог бережет...
Мне кажется, что решать задачу защищённой передачи файлов следует, используя каждое средство для своего предназначения. Есть протоколы, обеспечивающие только передачу файлов (http и др.). Ими можно передавать файл. Шифровать его можно перед этим совсем другими средствами (gpg). gpg само по себе обеспечивает как шифрование, так и подпись файла, поэтому получателю всё равно откуда он его скачал, хоть с публичных торрентов. При желании всё это можно автоматизировать, добавив в torphone: он как сам шифрует и подписывает файл перед отправкой от себя, так и расшифроваывает и проверяет подпись при получении файлов от других.
Можно, конечно, и так сделать, прикрутив, например, вызов консоли GPG с TORFone.
Но я веду к тому, что TORFone сейчас и без GPG обеспечивает как шифрование, так и аутентичность передаваемого файла, так что предварительное шифрование/подписывание необязательно. Скорость медленнее, чем ftp или http, но для небольшого файла не критично. Как преимущество – некоторая маскировка факта передачи файла за счет нестандартного протокола.
А вообще то это задумывалось как вспомогательная фича, а вариантов анонимного файлобмена может быть много, например GPG+стеганография и в облако, или PGP и в папку http-сервера на Tor HS.
Конечно, Вы в праве (и должны) НЕ доверять протоколу TORFone до изучения исходников, поэтому ручное предшифрование не помешает.
Наконец нашлось время допилить Торфон до беты 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 за помощь, буду благодарен за замечания и пожелания.
После того многого, что вами проделано, лучше переименуйте проект, также как это сделал Tor-router, тогда сотрудничество с официальным Tor-проджектом будет плдотворнее из-за отсутствия конфликтов с правом на использование имени.
Обязательно попробую эту программу. Благодарю вас, gegel, за проделанную работу.
Я сразу же хотел заменить имя, но решил чуть подождать после того, как Andrew Lewman всего через неделю после выхода torfone открыл страницу https://trac.torproject.org/pr.....ki/LikelyTMViolators[link5], где пару месяцев висело (пока tormail не возмутились и не сменили на
). И это при отсутствии альтернативных решений VOIP over Tor, не считая несчастной mumble...
И еще сразило письмо лично от Roger Dingledine:
Можно было бы хранить чек как сувенир – не часто такие люди пейполят :)
ОК, заменю, конечно: для меня это абсолютно непринципиально, гораздо важнее держать качество софта.
gegel
А вы не думали попробовать сделать кроссплатформенный интерфейс(QT например)? Какие конкретно части кода сейчас являются win32-зависимыми?
Думал. Точнее, думал сделать консольное приложение и отдельно кроссплатформенный GUI. Если не брать во внимание MAC-архитектуру, то в консольной основе win32-зависимым будет только ввод-вывод с звукового устройства и винсоксы. И то, и другое не составляет проблем реализовать, например, под линукс без никаких дополнительных библиотек, только сисколы. А GUI думал прицепить через control-port (например, как Vidalia к Tor).
Но, к сожалению, на все требуется время. Так как проект 100% на чистом энтузиазме и абсолютно без никакого финансирования, то пока даже не представляю, когда это будет возможно.
Откройте счёт в том же paypal или даже биткоинах. Из-за рубежа могут прислать достаточно много, если у проекта будет репутация.
К слову о репутации: сегодня зашел на гугл аналитику по сайту проекта пройтись по рефералам. В топ-10 висит censored.onion. Оказалось, Pedo Support Community, и там топик по Торфону уже месяц висит, с тестами, экспериментами и обсуждением. Таки Фрейд был прав на 100%, мотивация рулит! Зауважал – оказывается, они в хорошем смысле этого слова (а торпрожект ?).
Хотел респект отписать, но их капчу не осилил – специфика, однако (это вам не кошки – утята...)
gegel, без ханжества, но вашу прямую ссылку от нездорового интереса и греха подальше отцензурировал. Кому надо, тот пусть ищет по названию. Главное, смысл происходящего понятен: пока проект такого рода не станет массовым, первопроходцами будет специфический контингент.
а что братья по разуму из "трехбуквенной корпорации" не проявили еще интереса? у них денег не мало.
Welcome to real world, you made my day!
Ржунемогу))) Патчи не присылали ещё? А то смотрите, они это могут :))
И после этого ещё ктото троллит на пгпру вопросами зачем именно вам анонимность... есть вещи которые лучше не знать чем знать.
Думате сертифицируют для использования в ведомстве? врядли, даром они этого делать не будут.
Они уже повсюду:
https://freenetproject.org/whatis.html
gegel, я вам советую создать на сайте торфона форум как это ntldr сделал у себя. Если русскоязычные пользователи ещё могут в этом треде протусоваться то иностранцы местную капчу не осилят. Если хотите чтоб проект стал популярным свой форум поддержки должен быть обязательно
Сделал русскую инструкцию со скриншотами[link56] в pdf (5 Мбайт), постарался кратко и наглядно описать основные возможности при работе в связке с Торчатом.
Вам спасибо за такой проект. Список нового функционала, который недавно добавили, очень впечатлил.
Всё же двухфакторной.
Подумалось: GSoC не позволяет что-то получить? Или там жёсткие возрастные ограничения? Должны быть какие-то международные программы по поддержке открытого софта.
Какого слова?
Ссылка не открывается.
Было бы интересно, если бы описали в 2-3 абзацах хотя бы.
Заранее непонятно, как оно будет дружить с DPI и антицензурным механизмом. Например, если будут блокировать весь неопознанный трафик, то надо будет не создавать свой протокол, не имеющий никакого характерного паттерна, а мимикрировать под какой-то из дозволенных. Другой момент в том, что собственный протокол может давать уникальный отпечаток, который позволит легко отследить всех, кто пользуется таким софтом (если связь не через Tor).
Некоторые замечания к тексту:
Windows-программу
Всюду исправьте, должно быть «посередине».
поправками
Запомните раз и навсегда: правильно писать «Tor», все остальные варианты написания ошибочны. «В конечном счёте» выделите запятыми с обеих сторон, «альфа-релиз» — через дефис.
Запятая перед «аналогично» не нужна.
Может быть использовано прямое соединение по TCP- или UDP-протоколу (иначе звучит не по-русски).
со скрытым
UDP-соединения.
уведомления при работе под принуждением
TORFone is decentralized, i.e., it does not use
are hidden (мн. ч.).
HTTPS-connection.
Помимо уже вышеприведённых замечаний:
Does not differ — это тоже неправильно. Он всё-таки differ, но для человека со стороны non-distinguishable. Предлагаю переписать примерно так:
P.S. Считаю предложение переименовать в «onionphone» разумным и самым удачным. Это притянет к нему чёткий смысл
Alice in Wonderland«Phone in OnionLand» (телефон поверх скрытых сервисов Tor). Странно, что слово OnionInternet ещё не в ходу. :-)gegel, текущий статус программы проще отражать, создав страницу в черновиках[link57] с внятным полным текстом и следя за актуальностью её содержимого. Когда самое важное раскидано по 16-ти страницам комментариев, найти нужные ключевые посты становится трудно.
GSoC не подойдёт:
Ну, и нынешний GSoC уже начался, так что на текущий год так или иначе в пролёте.
Что подойдёт, так это любая краудфандинговая платформа:
Эти две вроде самые известные. На волне свежего скандала с Verizon и PRISM вполне можно набрать неплохую сумму, как мне кажется.
Могу даже предложить создать раздел в Разработках[link60], если gegel'ю это интересно.
Педофпидорасы, сэр :)Предлагаю поменять приоритеты позиционирования:
1. Это простое (интерфейс по умолчанию "для домохозяек", с возможностью переключения "для продвинутых") портабельное средство для голосовой связи – скачал на флешку и запустил, без необходимости установки, настройки, проброса портов (для этого и используются открытые прокси, в том числе Tor) и т.д.
2. Надёжная аутентификация.
3. Конфиденциальность – защита от подслушивания и перехвата.
4. Ну и так, между делом, ещё и анонимность при желании...
А название – СrypTorFone ;)
Приоритеты 2 и 3 лучше поменять местами.
Ну и экономия траффика (от 250 байт/сек) значительный приоритет для любителей круглосуточного общения (по GPRS, например, с
гулящейлюбимой женой, когда она на даче) самое оно!по GPRS, например, с
гулящейлюбимой дочкой жены, когда она на даче.fixed
gegel, извините за поддержание чужих троллинг-постов, но всё же. Видеочат будет? :)
При голосовой то связи анонимность уже проблематична, а при видеочате ещё и гримироваться надо будет...
Достаточно одеть маску и на заднем фоне всё покрыть простынями.
Тому, кто захочет показывать себя, а не тому, кто будет
дросмотреть на других.Высушенными хоть?
Когда будете сушить простыни, не вывешивайте их на балкон хоть, ок?
А в маске не ходите по улице, если решите прятаться от гугло-очков.
Я обычно вывешиваю на стенку трусы, они отвлекают внимание от меня и интерьера, да и все равно во время онлайна снимать приходится. А маска медвежонка помогает скрыть физиономию и вносит игровый элемент, который так нравится [censored] и помогает им раскрыться и глубже войти, я б даже сказал погрузиться
в себяв роль.Не забудьте также убрать семейные портреты, кубки, статуэтки, грамоты, дипломы, награды, удостоверения и поздравления от первых лиц государства, области или района.
Создавая протокол или приложение для анонимного видеочата помните, в первую очередь им будут пользоваться ОНИ!1
Впрочем, для НИХ же лучше, Тесак с майором не найдут.
А создавая торфон для анонимной голосовой связи через tor помните, в первую очередь им будут пользоваться ОНИ!2
Впрочем для них же лучше, ФСБ с ЦРУ не найдут.
1 Педофилы
и яи мыи законопослушные граждане, имеющие право на частную жизнь.2 Террористы, криминал
и яи мыи законопослушные граждане, имеющие право на частную жизнь.Я сам не особо силен в php и web, но попросил друга – он обещал помочь в ближайшее время.
Неоткрывающиеся ссылки содержат пробелы в пути (хочется посмотреть в глаза тому, кто так делает). Обычно помогает %20, но тут движок интерпретирует его как +. Можно скопировать в адресную строку браузера как текст:
ОК, подготовлю и очень кратко изложу основное.
Это жестко. Вряд-ли такое реально, т.к. сразу ляжет масса служб, в т.ч. важных: телеметрия, удаленное управление теми же электроподстанциями, банкоматами, охрана, видеонаблюдение и т.д. В основном там используются собственные китайские протоколы, по дефолту неизвестные DPI. Например, у меня проект по слежению за подвижными объектами (трекинг через GPRS по GPS и по сотовым вышкам), так там до десятка разных серверных протоколов поддержано. А вобще их масса: каждый китайский трекер идет со своим протоколом в придачу, а прием – проблема писателей сервера.
Если знают, что ищут, то не спрячешь никак – по аналогии со стеганографией. Друге дело, если Торфон не популярен, но сканируют всех на двухсторонний RTP, SIP или Skype, постепенно сужая круг поиска – тогда есть шанс некоторое время оставаться вне подозрения. А вобще я не ставил целью серьезную обфускацию, да и, наверное, вовсе не так это делается, если по уму.
Огромное спасибо! Поправил.
Интересно, но только не представляю, в каком виде лучше подать информацию. Посмотрел раздел, но другие темы там в несколько ином направлении.
Интересная мысль, тем более что такая подача хорошо сочетается с Win32 реализацией. Да и, как выяснилось, реальная анонимность практически понадобилась лишь сами видите кому. А концепция свободной без-серверной VOIP на основе Tor HS вместо SIP, похоже, тоже нова, нигде ранее не выдвигалась (поправьте, если не прав), и имеет право на существование.
Да, и еще акцентировать на отсутствии регистрации и логов: это стало модно после событий с Verizon.
А вот это – просто гениально!!! Спасибо! Кроме crypto (как в сryptophone.de) и rfone (аналогично zfone) вообще никакого Tor не наблюдается :) cryptorfone.org зарегистрировал и пока просто сделал редирект на сайт проекта. Постепенно заменю по тексту.
Конкретно в Торфоне – вряд ли. А вообще я опишу свое виденье реализации видео в реальном времени в Tor вместе с результатами своих тестов по латентности. Но это тянет на отдельный проект.
Если придумаете, дайте знать. Но по крайней мере в разделе /Софт[link61] можете разместить страницу, посвящённую программе, права я Вам дал.
Лучше делать на основе wiki, оно более расширяемое. Посмотрите, как сделан сайт DC[link62] и его форум[link63] — это тоже проект, родившийся на pgpru.
Вы действительно хотите поговорить об этом? Не надо ничего убирать, надо всё занавешивать, абсолютно всё, и на руки медицинские перчатки одевайте, а то отпечатки пальцев можно через камеру распознать. Любой предмет, попавший в поле зрения, будь то книга, шкаф, обои, типы тканей, одежды, ковёр, шариковая ручка — находка для криминалиста. Вам кажется, что эта информация ничего не значит, но реально она значит и значит очень много. Разные предметы быта выпускаются разными фирмами и распространяются в разных географиечских регионах, что позволяет слишком сильно сузить поиск (вплоть до конкретного города) при тщательном анализе интерьера и того, что в него попало.
Это никак не пофиксить. Я в таких случаях пишу, принудительно выделяя её, как текст:
Кому надо, скопирует её мышкой и вставит.
А разве не этот ли сценарий реализовался в Иране и Китае?
Не знаю, делается ли она по уму вообще. Даже TorProject не смог[link64] ничего кардинального придумать, кроме как находиться в бесконечной гонке между щитом и мечом.
Я выше указал ссылку на DC, идеи можно позаимствовать оттуда. Прежде всего, хотелось бы видеть:
В именно таком техническом аспекте — пожалуй, да, но концептуально нового в этом ничего нет. Стандартные VoIP могут работать как P2P, если вы укажете способ связи между ними. Тут поможет либо STUN, либо ещё какие неколеночные способы. Один из самых простых — сервер поднимает соединение с кем-то, если получает аутентифицированное сообщение на специально созданный джаббер-аккаунт. Можно придумать миллион подобных же способов, и Tor HS — лишь один из них, а дальше всё стандартно делается.
Я бы не спешил соглашаться. В имени всё равно прослеживается Tor, что не может понравиться TorProject'у, тем более, что вы пишете СrypTorFone, а не СryptoRfone. Второй момент в том, что если вы хотите продвигать проект, как имеющий анонимность второстепенным значением, то зачем ему иметь Tor в названии вообще? В-третьих, все скрытые сервисы — это так называемый луковый интернет, домен onion, поэтому софт для связи между Tor HS разумно назвать onionphone'ом. Roger вам предложил самый разумный и самый взвешенный, на мой взгляд, вариант. Наконец, на рынке есть миллион всевозможных VoIP-решений, но практически нет ничего анонимного, поэтому было бы разумно с вашей стороны сконцентрироваться на нише анонимного/шифрованного VoIP, а не VoIP вообще.
Пусть вас не смущают педотролли. Им положено, потому что они как сапёры — ошибаются в жизни только дважды: когда рождаются с такой ориентацией и когда их деанонят в реале или в сети, поэтому для выживания вынуждены держать руку на пульсе безопасности лучше разведчиков. Террористы бегают в чужие юрисдикции, им сочувствующие, а этим бежать некуда, они везде и для всех враги, вот и получается PET в самом крайнем её проявлении.
По существу проблема в том, что, как вы понимаете, анонимная связь без анонимизации самого голоса — оксюморон, это как звонить через Tor для того, чтобы потом продиктовать под запись свои ФИО. Если наворачивать всё вместе, то получится очень сложный, громоздкий и амбициозный проект, поэтому, видимо, да вас никто за такое не брался, списывая всё на медленность и непрактичность. Тем не менее, у вас есть шанс доказать обратное, как это в своё время сделал Tor для понятия анонимности в сети (раньше была сложная система неидеальных и глючных костылей, а теперь есть одно приложение, которое скачал, запустил, и всё готово). Наконец, последний момент — реальная необходимость голосовй связи. В эпоху интернета скорость набора на клавиатуре лишь чуть-чуть медленее голоса, имеет ряд преимеществ (можно пересылать ссылки, формулы, картинки), поэтому многие предпочитают именно её для повседневного общения, даже когда есть возможность бесплатно совершать звонки. В любом случае, VoIP и Skype популярны несмотря на всё это, так что и у вашего проекта есть все шансы стать популярным.
Постараюсь тезисно выдать основные результаты исследования латентности в 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-видео теоретически реально.
П.С. До начала работы над Торфоном я написал Циммерманну, изложив идею и попросив разрешения работать с его исходниками. Вот цитата из ответа:
И тем не менее, Торфон оказался годным к использованию и нашел свою нишу.
Что только подтверждает вышесказанное :)
Спасибо за подробное изложение. По поводу пришла идея: видео может понадобиться в качестве анонимных камер слежения на рынке средств безопасности, которые можно устанавливать в
туаместа слежения за обстановкой, товаром или ещё чем-нибудь. В крупных городах интернет нетрудно сделать в любом месте, видеокамеры с портативным железом тоже дёшевы, остаётся только сделать анонимную передачу изображения. Я к тому клоню, что какая-то фирма, которой такие средства безопасности интересны, могла бы это проспонсировать.P.S. Списки делаются так:
Есть такое понятие — созвучие торговых марок до степени смешения. Cryptorphone смешивается сразу с двумя, как с Tor, так и Cryptophone. Причём, доказать в гипотетическом суде, что это не было сделано намеренно, да ещё в той же области деятельности, сложно. А Tor не хочит тратить силы на тяжбы с неофиц. проектами, которые могут нанести ущерб его репутации. Ну принято так, не потому что авторы плохие. Хуже, какой-нибудь наглец может сделать их пострадавшей стороной и отсудить у них марку, запатентовав сходные с Tor названия, если это вовремя не отследить, а затем начать предъявлять претензии к самому Tor. Даже, если не выиграет, но воспользуется несовершенством законодательства, чтобы вредить репутации проекта. Поэтому, такие ситуации принято пресекать в зародыше. Название "Linux" тоже запантовано, к примеру.
Получается, что даже в свободном программном обеспечении не обойтись без армии юристов[link65]. Как же несовершенен этот мир... :-(
Я думаю, вы догадываетесь, что Tor, будучи широко распространённым суффиксом, "смешивается" таким образом со многими тысячами слов, например:
Всех пресекать будут или как?
Что же касается Cryptophone, то можно у них поинтересоваться, и если они конкретно против, то можно подобрать какое-то другое слово из вышеприведённого списка, добавив к нему fone.
Кстати, почему аналогичных возражений не было слышно по поводу названия DiskCryptor?
Да, всех, если будет связь с Tor и если это будет TradeMark с близким к Tor функционалом. Ваш пример с DC не имеет прямой связи с Tor.
До степени смешения это когда можно перепутать. Cryptorphone и Cryptophone перепутать можно, Cryptorphone и Tor перепутать нельзя.
Вот есть такой сок – "Я". Если эта компания решит выпустить соки "А","Б,...,"Ю" названные всеми остальными буквами алфавита, то по вашему она монополизирует рынок? Ведь тогда в любое другое название сока будут входить какие-то её торговые марки. Я не настолько хорошо знаю законодательство, что-бы говорить наверняка, но лично мне это представляется весьма сомнительным.
Стиральный порошок "Linux" тоже выпускают, т.к. это из другой области и не вводит потребителей в заведомое заблуждение. Хотя с доменными именами при прямо конкурирующих названиях уже могут быть проблемы.
С соками не так всё просто – их можно называть не только словами из буква русского алфавита – пример "J7". А вот если открыть в Москве рестораны с такими назвавниями... :)
Tor – для серфинга по интернету, Cryptorfone – для голосового общения. Что общего?
К чему здесь все эти спекуляции? На месте gegel'я, я бы просто уточнил у руководства Tor Project, нет ли у них претензий к такому наименованию. Подозреваю, что если не акцентировать в названии фрагмент "tor" (как CrypTorFone вместо Cryptorfone или CryptorFone), то и возражений не будет.
Вот то, что возражения будут со стороны GSMK Gesellschaft für sichere Mobile Kommunikation mbH, это я почти гарантирую.
Немного в сторону. Существуют ли какие-нибудь наработки по искажению голоса, делающие идентификацию по нему затруднительной? Понятное дело, что наилучшим решением будет распознование и озвучивание машиной, но современные коммуникаторы пока еще не вполне справляются с этим. На ум приходят какие-нить преобразования со случайной структурой и добавочными шумами, оценивать которые будет непросто.
Обсуждали уже, что эта тема ведёт в болото. Нет нормальных распространённых, доверяемых наработок, скорее всего.
И потребность в этом сомнительна. Зачем тогда голос?
Анонимность в голосовой связи играет вспомогательную роль в ситуациях:
Проще исходить всегда из того, что при голосовом разговоре стороны неанонимны и даже непсевдонимны друг перед другом. Только скрывают разговор и факт связи от третьих сторон. Противоположные модели нигде вроде как толком не рассмотрены и никем не формализованы.
Анонимная голосовая связь имеет существенное преимущество перед перепиской в одном реальном случае – когда руки заняты автоматом Калашникова и вы не хотите, что-бы об этом узнали многие.
многие -> посторонии
С джиттером, задержками, пропаданиями коннекта?
М.б. фокуснику и легче, сидя за баранкой, на бегу или на голове, ловко набирать бодрое смс.
Алиса не знает Боба – вполне себе ситуация. Например Боб может быть неким диспетчерским центром, который принимает звонки от множества Алис. И возможно Боб коллекционирует эти разговоры. А потом по собранной базе будет проводиться идентификация.
Даже если голос поменять, индивидуальные особенности произношения никуда не денутся: акцент, темп речи, подбор слов, интонации. Явно будет указывать на какого-то человека, может даже распознавание можно автоматизировать, хотя и ненадёжно. Мороки много, а защита слабая.
По теме вокодеров вообще немного теоретических публикаций.
Прмененный мною код основан на синтезирующем LPC кодеке. Кодер представляет собой анализатор, который, грубо говоря, определяет наполнение речи по формантным зонам, высоту, заполненность/шум и т.д. Таким образом, речевой фрейм описывается коротким битовым кадром, содержащим минимально необходимою информацию об исходной речи. Декодер синтезирует речевой фрейм по этому кадру (т.е. это уже не нативная речь). Вокодер изменяет некоторые параметры в кадре, например, меняя темп речи (делая ее монотонной) или фиксируя/динамически меняя высоту, или вообще убирая озвучку (шепот). Т.к. системы речевой идентификации/распознавания используют эти же параметры, то не представляется возможным уверенно доказать совпадение/несовпадение измененного голоса с оригиналом.
Конечно, это касается лишь характиристик "нижнего уровня", определяемых анатомо-физиологическими особенностями говорящего. "Верхний уровень" (словарный запас, устоявшиеся фразы и т.п.) остается деанонимизатором, хотя врядли будет иметь юридическую силу, т.к. эти признаки легко изменить сознательно, посто не забывая об этом в процессе разговора.
Посмотрите также opensource проект Zerius Vocoder[link66], работающий по сходному принципу, но вместо использования некоторых предустановленных параметров в кадре, извлекающий эти параметры из другого звукового потока. Это дает возможность в некоторой степени имитировать речь другого человека, или разговаривать гитарой, например. Также есть софт (коммерческий), позволяющий реал-тайм смещать тональность голоса под тональность музыки (для начинающих певцов) и т.п. Я также находил open source проекты голосовой идентификации/авторизации. Если есть интерес, поищу ссылки в архиве.
В любом случае, этот принцип вокодера используется в программах защиты свидетелей в тех же судах, где, возможно, будет доказываться и вопрос принадлежности вашего голоса, и выглядят надежно:
ПС: Asterisk Voice Changer[link67]
а это, к примеру, алгоритм совсем другого класса, обеспечивающий простой сдвиг тональности голоса, который легко восстановить такой же программой. То же касается и Skype Voice changer[link68] .
А что касается востребованности вокдера, то далеко и ходить не надо: в случае выше упоминавшейся комьюнити Алиса как раз не знает Боба, и Боб крайне заинтересован в том, чтобы ни Алиса, ни Ева его не узнали позже. Со стороны Алисы вокодер не нужен, но со стороны Боба может быть использован (Торфон, естественно, представляет возможность абоненту включать вокодер своего голоса независимо от другого). Единственно что в таком режиме желательно использовать гарнитуру, чтобы исключить изменение своим вокодером входящего голоса абонента: в этом случае в наличии будет комплект: нативный+измененный голос абонента, что может облегчить предположительное восстановление вашего голоса.
Да, получится так же, как со стилометрией, и даже ещё хуже. Печатный текст можно много раз редактировать перед отправкой, продумывать, а всё равно на низком уровне возникают отличия по статистике, а в реальной речи, где «слово — не воробей», всё будет ещё труднее.
Есть важная тонкость. У противника в вами описываемом случае можно гарантировать отсутствие специальной аппаратуры и возможность сделать запись разговора, поскольку он сам в суде и его тоже контролируют, а видео заседания суда могут не транслировать, так что единственный способ распознать голос — распознать его на слух. Другой момент состоит в том, что у противника будет только некоторое небольшое число записей (разовое заседание суда), даже если всё записывается. Тут получается как с криптоанализом любительских шифров: очень ограниченный материал, который увеличить никак нельзя. А теперь то, что имеем в реальности в торфоне: многолетнее связывание Алисы с Бобом, у каждого друг на друга есть огромный голосовой материал, накопившийся за всё время связи, возможность его как угодно анализировать и т.д.
Были педофилы, а теперь ещё террористы подтянулись. Ждём, когда подтянутся остальные радикалы с мотивацией.
Сообщество анонимных алкоголиков, например, еще. Телефоны доверия.
пока борцуны с педофилами привлекают нас за шифрование, эти[link69] ребята развлекаются ( развязка на 34:28
Девице почти 16, а не 5, педофилы тут притянуты за уши, чтобы звучало почернее. Несколько лет назад, до повышения возраста согласия, сам бы предмет разговора, где одна половзорелая особь развлекается с другой, не имел бы смысла.
Вы это технопранкерам скажите, которые успешно и годами разводят, в том числе "продвинутых специалистов"...
Запись работы вокодера[link70] Торфона в разных режимах (wav).
Даже на слух можно уловить определённое сходство с не измененным голосом. Все же, мне кажется, это не может выступать доказательством в цивилизованном суде, и никогда не будет использоваться для этого. Другое дело, что с определенной вероятностью можно определить принадлежность (чем больше голоса, тем выше вероятность), и затем уже использовать другие способы получения доказательств.
А это ролик тестирования вокодера[link71] автором алгоритма William Andrew Burnson. Т.к. он использовал кодек GSM 11025 KHz, то дополнительно получился сдвиг тональности (алгоритм вокодера считал, что на него поступает 8000 КГц аудио). Из-за этого появились дурацкие высокочастотные призвуки, но и тем не менее, все разборчиво, особенно хорошо в режиме робота и шепота.
Gegel, респект за софтину и за сэмпл)))
Во-первых, я посмеялся и поднялось настроение, т. к. от подобных игр я все же далек, как и от использования голоса при анонимных коммуникациях, а тут такая тема! Убедился лишний раз, что голосовая связь не для меня. Максимум давать сжирать готовые текстовые шаблоны ботам. Но это надо много шаблонов и все под рукой. Хотя тоже тема.
Во-вторых, после того, как посмеялся, подумал, что трэк с вашими сэмплами будет хитом на танцплощадках продвинутой молодежи в стиле электро.
DJ Gegel – трэк 1 – Проверка холоса.
Респект UA ;)
Ну и в конце о грустном...
ваш голос добален в нашу базу.Помощник мл. подполковника Шуленина.Не будьте наивны касательно судов. Это ручная шарага. Там спецы напишут на компе таких сэмплов и выдадут еще за ваши, если надо будет. Не в теме, но, возможно, нечто похожее шьют мэру Ярославля.
В варианте 1 было: "Пговегка голоса", но изменил силой воли, по паспорту таки UA :)
Удивили... Наверное, в вашей базе даже диаметры всех моих отверствий давно имеются. Писать тут полгода со своего айпи... Но, тов. начальник, я ведь не нарушаю ;)
Как-то так[link72].
Стильный холодный монотонный голос, без эмоций. То что надо.
Правда, неизвестна реакция собеседника, если он в теме корованов.
У гугла вроде есть распознавалка голоса? Только для моб. приложений кажется. Если нормально работает, то можно, голос в текст, текст в голос. Пгофит!!11
Нет. Диаметры отверстий заносятся в БД после тщательного ТРК + изготовляются трехмерные слепки:))
Это сильно, зачем он нужен?
Любую говорилку включаем, в тор заворачиваем, получаем этот торфон?
Админ, пост не читай, сразу удаляйЮзер, тред не читай, сразу отвечай.Действительно. И что тут только обсуждают 20 страниц?
М-да.... Ну почему всё у нашего русского брата так? Резко загорелся, наворотил дров, обнадежил общественность, а потом утратил интерес и забросил всё нафиг.
Все равно как слесарь Полесов из "12 тульев".
А сколько было обещаний! И развитие,и порт для Linux, и т.д и т.п.
И что мы имеем в сухом остатке? Полурабочий полуфабрикат с умопомрачительной документацией, от чтения которой нормальный человек может получить серьезную контузию мозга.
Полгода назад, наблюдая за развитем Torfon, я очень хотел ошибиться, чувствуя, что и этот проект будет проср... забыт заброшен.
Очень надеялся, что из этого гадкого утенка получится совершенный отточеный продукт, годный для использования широкой публикой.
Но к сожалению, не ошибся.
Программистам хочется кушать.
Намек на что? Кто-то заплатил чтобы проект не развивался? ;)
Никакой не намёк ни на что. Просто констатация простого факта, что один человек не в состоянии осилить что-либо крупное, если у него нет на то времени.
Ну и ещё интерес обычно месяца за 3-4 угасает.
Как я понял, реализация проекта по уму затребовала правильного шифрования голоса, прикручивания чата с PFS и тихого уведомления о прессинге. При попытке сделать PFS по уму вылезло много проблем, которые gegel активно изучает до сих пор[link73]. Т.е., да, развитие проекта затормозилось из-за этих проблем, но не остановилось.
А потом воспалменяется вновь с удвоенной силой. ☺
Да, порт под линукс был обещан, и я об этом помню. Но поймите: у меня нет команды разработчиков, и даже нет просто помощников – все было сделано мною лично, начиная с идеи, и заканчивая сайтом. Того времени, которое я могу выкроить для проекта, физически не хватает. Но от обещанного не отказываюсь: под линукс сделаю. Но, скорее, это будет не порт, а консольное приложение, инкапсулирующие основные функции Торфона.
Я бы так не сказал. Укажите конкретно, что бы Вы хотели добавить, и что не работает, как хотелось бы. У меня исчерпалась фантазия: все мои идеи были реализованы в последней версии. Но только не просите, ради Бога, смайлики: придется "жить с серым и унылым чатом" ®ZAS
Мне, как разработчику, трудно оценить доступность стиля изложения для пользователя. По уму документацию должен писать не разработчик, а продвинутый пользователь после успешного освоения продукта. Буду рад, если вы укажете, где и что конкретно вызвало у Вас затруднения. Но только не говорите, что ничего не понятно: все таки предполагается подготовленная целевая аудитория в виду специфичности проекта.
Боюсь, что это в принципе невозможно. Даже на благоприятном фоне разоблачений Сноудена проект заинтересовал лишь очень узкий круг пользователей. Я лишний раз убедился, что участники pgpru – абсолютно не репрезентативная выборка к этой вашей широкой публике. Выйдите в город и поспрашивайте у народа, что кто знает о шифровании :) Даже большинство моих знакомых программистов имеет весьма туманное представление о базовых принципах криптографии, не говоря уже о реализации протоколов.
Лично я для себя считаю проект успешным, т.к. было наглядно показано, что:
Любой пессимист может в этом убедиться, просто скачав и запустив Торфон "из коробки", и это должно подтолкнуть разработчиков к реализации своих проектов.
Впереди, как всегда, guardianproject[link74].
Правда, они поленились и пошли по пути меньшего сопротивления, реализовав лишь подобие голосовой почты, несмотря на short-term grant from the Tor Project, но все впереди.
Опять же, зависла уникальная идея Tor-видео с передачей потока через множество Tor-цепочек между HS, алгоритмом отбора быстрых и дублирования сомнительных цепочек: наверное, педофилам уже перехотелось. Но такие проекты – однозначно не для одного человека, пишущего в свободное время и под настроение.
Претензии высказывал не я, но касаемо документации замечания есть. Здесь я придерживаюсь тех требований, который были выдвинуты в стиле «значимость проекта по-unknown'у»[link75]:
По крайней мере, за любым сколь-нибудь масштабным по сложности проектом (TorFone, очевидно, перешагнул эту границу) должна стоять статья в PDF, набранная в LaTeX'е и представляющая собой полное грамотное научное/техническое описание по всем академическим канонам с обоснованиями и всеми положенными ссылками на литературу. Точнее, проект должен начинаться с такой статьи, а не заканчиваться ею. Ну, или должен быть написан прототип, по результатам работы которого такая статья будет написана. Только после этого «проект» можно показывать широкой публике и рекомендовать для использования. Будет лучше, если эта pdf-работа будет протолкнута на профильную конференцию и представлена перед специалистами, которые её покритикуют. Например, именно так происходит с Freenet и Tor. Да, чтобы написать работу по всем академическим канонам, уже нужен некоторый опыт и знание правил, но все же с чего-то начинали... Чтобы вам было понятнее, о чём идёт речь, есть примеры таких работ для cgd[link76], LUKS[link77] (см. также pdf-файл со спецификациями на LUKS[link78]).
Проблемы с этой[link79] страницей — это так и должно быть? Форум ещё не прикручен?
[offtop]
Этот сайт — тоже /proekt[link80] одиночки[link65]. ;)
[/offtop]
[offtop]
Это просто информационный сайт, а не проект по созданию чего-либо конкретного, если не считать wiki-движка. Но свой движок (часто переделанная версия известного) есть у многих сайтов, это кодинг. К созданию движка инженерно-академический подход не нужен.
[/offtop]
[offtop]
Программистов не зря часто называют «инженер-программист», относя их к классу инженеров. За любым сколь-нибудь сложным кодом стоит своя архитектура, на эту тему тоже пишутся статьи, и делаются презентации. Конечно, так делает меньшинство, но никто и не скрывает, что разработка большинства проектов ведётся чисто кулхацкерским образом.
Строго говоря, программирование — это вообще не кодинг. Программирование — это такая математика, включающая в себя изучение моделей вычислений, оптимальные способы вычислений, теорию сложности, λ-исчисление и т.п. Просто когда проблемы чисто кодинговые/программистские накаладываются ещё и на то, что кодер не знает «предметную область» в которой кодит (то же крипто), всё усугубляется вдвойне.
[/offtop]
[offtop]
Кстати, когда пишут серьёзные работы, алгоритмы в них описывают в так называемом псевдокоде. Псевдокод не обязан быть досконально конкретным, не обязан быть реально существующим языком программирования, но он должен давать описание, как можно более близкое к «реальному ЯП». Когда мне приходилось поручать кодерам реализовать какой-то алгоритм, я его тоже записывал в псевдокоде, за это только спасибо сказали. Более того, пошаговые объяснения, какая сторона что делает, в криптостатьях (обычно это ещё выделено в рамку или отделено горизональными линиями) — это не что иное, как своеобразный высокоуровневый псевдокод. Но ведь псевдокод — это как бы изначально вещь из мира программирования, не так ли? :)
[/offtop]
Шибоко умно закручено. Например, я не понимаю этого "ин" да еще "капсулировано". По русски можете излагать, или таких слов уже нет?
Что до консольного приложения – да, для линуксов это будет идеальный вариант, т.к. заработает на любом дистре. И безопасность будет выше.
Да и задолбали уже эти смердючие падучие гуёвые окошки – в серьезных проектах на этапе становления концепции лучше их не использовать вообще, не распыляя на них свои силы.
Сделайте интерфейс наподобие Centericq – и лунуксоиды будут счастливы!
Так это же софт для профессионалов. Они знают.
Facepalm.jpg. https://ru.wikipedia.org/wiki/Инкапсуляция_(программирование). Подучите русский язык.
Лучше наподобие mcabber/irssi/climm, а клягинское говно ненужно.
Я так понял, претензии были к 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 и основными функциями.
... который взял их «торговую марку» ... Вы же вроде собирались его переименовать, вам даже лично (Роджер?) обещал за это сколько-то BTC пожертвовать, если я правильно помню.
Будет обидно, если оно зафейлится. Надо хотя бы сделать то, что понятно, как сделать, и описать те проблемы, ответы на которые у вас нет, чтобы те, кто пойдёт по вашим стопам, не воспроизводил те же ошибки и проблемы, а встал вам на плечи и прыгнул дальше, условно говоря.
No comments...
Идите вы нафиг с таким "русским"! Это не русский, а пиндоский, и пиндосы воткнули этот изврат в гавнопедию же.
Gegel, надо отдать ему должное, и исправил формулировку на человеческую.
С полгода с приятелем мы попытались заюзать 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 и поставить себя на место обычного пользователя, впервые столкнушегося с вашей программой, и задать себе его вопросы.
Тогда вы наверняка поймете главные проблемы проекта и увидите недостатки вашего описания.
Самая главные проблемы вашего мануала – отсутствие структурированности и самодостаточности.
С уважением, юзер. Просто юзер.
Спасибо за конкретизацию. Действительно, мне тяжело оценить базовый уровень потенциального пользователя и то, как ему хотелось бы получить информацию. Вы хотели потестировать прямое соединение между двумя Торфонами, в то время как инструкция в картинках – это пошаговый мануал для установки именно анонимного соединения через Tor.
Решение вашей задачи описано тут[link81]. Если будет возможность, попробуйте еще раз. Я готов вам помочь онлайн любым удобным для Вас способом с условием, что, освоив работу с программой, Вы хотя-бы схематически сделаете свой вариант мануала для просто юзеров.
/comment64735[link82]
2 /comment77388[link83]:
Вспомним начало проекта Tor, уже более 10 лет прошло. Он разрабатывается под Linux, версии под Windows сначала шли с большим отставанием. Никакого инсталлятора и графического конфигуратора под винду вроде не было, тем более готового браузера с преднастроенной связкой всего нужного. Сухой технический мануал-readme. В винде нужно было вручную распаковывать, ставить и запуcкать консольную программу, править руками (через тот самый дефолтный винблокнот) конфиги, прописывать прокси в браузере. И это ещё не всё. Tor не был самодостаточным. К нему надо было качать с другого сайта локальный промежуточный прокси со своей пачкой конфигов — privoxy, который торпроджектом не поддерживался, был вообще полузаброшен. Не помню, как там в винде решали и проблемы с SSL-либами.
Когда проект перерос стадию чистой экспериментальщины для энтузиастов, тогда и стали прикручивать юзерофильность. Но это уже на бюджетных вливаниях в несколько миллионов в год и организованной команде разрабов на окладе.
Разработчики GnuPG над этим вообще не парятся. Есть консольная версия, слабо подходящая рядовому пользователю, и либа для сторонних программеров. За создателей GUI они не особо отвечают.
На мой взгляд, все зависит от разработчика. От времени, возможностей, понимания логики юзера и т. д. В грубом примере можно указать на необходимость создания мануала для юзера с нулевой подготовкой. Если софт пишется не под себя, а для других, то это надо учитывать.
Ориентироваться надо на такого юзера-newbie, если аудитория еще не сформирована.
Т.е. если продукт не юзерфрендли, то нужен юзерфрендли мануал. Но вообще-то, сейчас нужно думать (помимо первоочередных задач надежности, безопасности продукта и т.д.) о т.н. юзабилити и простоте использования, ГУИ. Просто статистика показывает, какая доля юзеров каким функционалом, знаниями и потенциалом обладает. Более 80%, ну вы поняли.
Так что какой-либо проект, ориентированный на широкую аудиторию не может, или не должен быть неудобным и сложным в использовании для новичка.
Несколько ошибочно мнение, что если пользователю нужен софт, он разберется. Даже если речь идет о коммерческой выгоде самого пользователя, далеко не факт, что это заставит его копаться в конфигах и сидеть в консоли.
Поэтому, по моему мнению, есть как минимум два основных пути.
Первый — софт как есть + исчерпывающий юзерфрендли мануал.
Второй — юзерфрендли софт искоробки + краткий readme или справка.
Похоже, все, кто заинтересован в торфоне, это понимают. IMHO, проект пока ещё на стадии концепта, автор экспериментирует. Когда это можно будет предлагать, как нечто стабильно годное для использования, можно будет надеяться и на дружественный к пользователю подход. В некоммерческих проектах это часто откладывают на реализацию в последнюю очередь. Сейчас нет смысла к этому придираться. Пусть автор протокол доработает, необходимые фичи внедрит и стабилизирует, а затем обвешать юзерофильными рюшечками будет менее сложной задачей.
Так а я о чем? О том, что вполне сойдет консольный вариант, но только его снабдить адекватным руководством.
Имхо, для таких остросюжетных продуктов, как онлайновая криптозащита, лучше всего их оставить только в консольном виде, поскольку всякие гуишные рюшечки создают риск неучтенных утечек, т.е. дыры в безопасности.
Да и Виндовс для этого не годится – одна сплошная дыра. Не понимаю, как можно сделать высококлассную защиту на основе Винды – это взимоисключающие понятия.
Лучше всего сделать Torfon на основе Линукса, загружаемого с флешки. А для тех, кто согласен немного поступиться уровнем безопасности (конфиденциальный, например), в виде приложения к распространненому дистрибтиву Линукс.
К gegel'ю: есть общие замечания по поводу сайта. Не делайте много колонок. В TBB размер окна TorBrowser по умолчанию небольшой, и в каждой строке из ваших колонок оказывается по паре-тройке слов. В любом случае, я не считаю, что разумно делать больше двух полноценных колонок на странице, даже если так хочется. Обратите внимание, как выглядят консервативные сайты https://blake2.net и http://keccak.noekeon.org. Можно найти ещё десятки примеров подобных. Это удобное представление информации, сразу интуитивно ясно, что и где искать.
Из этого не следует знание предметной области — например, как устаналивать, использовать, и зачем нужен TorChat. Чтоб было понятнее: из знания ЯП не следует знание конкретных библиотек. Изучив C и программируя под винду, вы не сможете завтра внезапно начать писать под UNIX. Там даже философия другая. Короче, инструкции писалась для параноиков, которые в теме. ☻
Совершенно согласен, опыт и стаж был приведен только для того, чтобы дать понять об общем кругозоре человека, что не простой юзер, а опытный специалист IT.
Да, так вот – сидим мы сегодня, два настырных юзера, и пытаемся запустить этот самый Torfone.
Пункт 1. в PDF-инструкции гласит:
Ссылка у вас здесь – нерабочая. Укажите правильную, а то мало ли каких левых сайтов можно встретить, типа http://torchat.ru.uptodown.com/ с вирусней.
Самостоятельно нашли Torchat здесь https://github.com/prof7bit/TorChat/downloads
Но звонки друг другу по сгенерированным Точатом адресам ни к чему не привели.
Далее занялись режимом 2-точка. Указали в Torfone IP-свои адреса и снова начали названивать друг другу.
Но в ответ получали "Proxy server not avalable" и т.п.
Какой еще прокси-сервер? Откуда он здесь вообще взялся, если мы работаем по 2-точке?
В вашем мануале этот случай не рассмотрен.
Вероятно, как и в первом случае, причина неконнекта в том, что не открыты какие-то порты в файрволах.
Но извините, сейчас 21-й век, у каждого юзера даже в самом поганом домашнем роутере есть файрвол, который надо настраивать, как и в ОС.
Где в вашем манауле есть описание протоколов и портов, которые нужно открыть?
Лучше создайте какую-нибудь временную аську, и вы сможете в онлайне оперативно и детально поучаствовать с наими в решении проблем, которые возникают.
Заодно получите от реальных юзеров знания, которые следует внести в мануал для его совершенстования.
А то переписка по ним на форуме с учетом сырости мануала затянется еще на полгода.
Спасибо, обязательно учту на будущее.
Тут – это где? На главной странице сайта проекта[link84] висит прямая ссылка для скачки[link85], подписанная мною. Рабочая. Единтвенно что, не могу сказать, на сколько там tor.exe актуален. Если не будет соединяться с сетью Tor, скачайте последний TorBrowser тут[link86] и замените tor.exe в пакете Торчата на файл из пакета TorBrowser.
На главной странице сайта ссылка на описание в картинках[link56]. В конце первой странице показано, как отредактировать ини-файл Торчата. Это сделано? (В версии Торчата с сайта проекта файл уже отредактирован).
Выполнение соединения точка-точка описано тут[link81]. Похоже, вы не вводите символ @ перед IP-адресом. Также отредактирйте ини-файл Торфона, как описано в пункте по ссылке.
В данном случае нет, до портов Вы еще не дошли.
Порты настраиваемые, по умолчанию 17447 TCP/UDP. По указанной выше ссылке видим: Открываем 'torfone.ini' и смотрим.
Аську так аську. Отпишите мне на почту, я скину вам номер и договоримся о времени контакта. В данном случае, как я понимаю, ни о каких PGP и OTR-плагине речь не идет в принципе, общаемся открыто.
У меня тож не получилось запустить в работу Торфон, может, опыта мало.
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.
Если в этих пунктах что-то непонятно, пожалуйста, напишите, что именно. У меня уже не хватает фантазии описать проще. Если что-то не получается, также опишите, что именно. Я дам конкретный совет, как обойти проблему.
Круто было бы увидеть в торфон'е изменение голоса.
Да, увидеть – это было бы круто. Но для этого, как минимум, надо увидеть руководство в картинках[link56] на стр.5., тогда по крайней мере изменение голоса можно услышать.
Также можно посмотреть демо-ролик[link71] от автора кода вокодера William Andrew Burnson. Правда, он выбрал кодек, работающий не на 8КГц, поэтому наложился сдвиг полосы и появились свисты. Для качественной работы вокодера используйте OPUS, MELP или GSM0610slow. На мой взляд, для анонимизации лучшим есть режим Breathy (шепот).
А внешние программы не способны изменять голос?
Уточните, какие конкретно программы имеются в виду. На сколько я в курсе, универсальные программы из этой серии создают в системе (все сказанное относится к Windows) виртуальное устройство звукового ввода. К сожалению, я не стал вводить в Торфон возможность выбора звукового устройства из имеющихся (создавать диалог в VC6 для mfs – сущий ад), так что Торфон выбирает первое устройство из списка (обычно это устройство, назначенное в Windows по умолчанию). Таким образом, после установки внешней программы назначьте созданное устройство по умолчанию, и Торфон будет использовать измененный голос. Если дадите ссылку на конретную программу, я потестирую.
Но обратите внимание: далеко не все утилиты для изменения голоса выполняют относительно невосстановимою трансформацию. В свое время я почитал теорию по данному вопросу и просмотрел имеющиеся в открытом доступе алгоритмы (в теме выше есть ссылки), а также ознакомился с алгоритмами голосовой идентификации. Это вообще сложная проблема, не имеющая однозначного решения и доказуемости: разница между "догадаться кто" и "доказать в суде" может быть значительна как в одну, так и в другую сторону в зависимости от обстоятельств.
Gegel, заведите себе криптокошелек, брошу вам чуток лайткоинов.
Поражают ваши знания с одной стороны, и реальный продукт с другой, надо поощрить на перспективу :)
Особенно на долгожданный порт под линукс.
Вот Гугл умеет голос в текст распознавать, и недавно это стало возможно даже локально, без интернета. По моему самое оно!
– MorphVOX[link87]
– AV Voice Changer Software[link88]
– Scramby[link89]
– VoiceMask Pro[link90]
- MorphVOX[link91]
– Scramby[link89]
что-то слетает ссылка Scramby
Scramby[link89]
как это применить в Торфоне?
Ну вот и взялись бы имеющие такие опыт и знания да и написали! Совместными бы усилиями глядишь дело бы и быстрее пошло...
Ну нужна распознавалка из голоса в текст и читалка из текста в голос. Самая лучшая изменялка голоса. Вообще можно в таком случае не голос, а текст передавать. А для пущей секретности ещё переводить туда-сюда.
Вот в Андроиде Гугл-переводчик теперь умеет работаль локально, файл порядка 150 мб на язык. Ежли б кто отвинтил и прикрутил...
Хотя вот писали, что не очень то это и помогает... Но, надеюсь, от этого хоть хуже не будет.
Но, надежда категория не научная – а вдруг такое хитрое совпадение, что идентификация по голосу наоборот улучшится? Ну типа как вот про каскадное шифрование не доказано нифига. А раз ненаучно, то – оффтоп!
Про переименование[link92] на примере Torchat:
Экстраполируя это на TorFone, получаем не очень хорошую штуку. Просьбы переименования проекта были озвучены разработчиками Tor год или сколько там назад? С тех пор ничего не поменялось: сайт, домен, всё под старым именем.
Испробовали Torfone как двухточку, сначала в локалке, потом в реальном Интернете.
1. Если оба абонента в Виндовс – качество весьма приемлемое.
2. Один абонент в Wine 1.4.1 под PulseAudio, второй в Виндовс.
Абонент в Виндовс слышит хорошо, а который в Вайне, слышит голос с треском и хрипением, так что Linux в данный момент использовать нельзя.
3. Один абонент в Виндовс, второй в гостевой виртуальной Виндовс.
Абонент в физической Виндовс слышит хорошо, в виртуальной тоже неплохо.
Есть мнение использовать вариант 3, но тут возникает несколько вопросов, связаных с тем, что Виндовс доверять нельзя.
Первое желание – запускать Виндовс в линуксовой виртуалке.
Второе желание – добавить использование OpenVPN, по которому пропускать трафик Torfone.
По идее, это дополнительно зашифрует трафик и уменьшит паразитные утечки Винды и ее приложений/сервисов "налево".
Как тут лучше поступить, где запускать OpenVPN-сервер и OpenVPN-клиент – в базовом Linux или гостевой Виндовс?
И как, если это повысит информационную безопасность, закрыть с помощью Iptables все адреса/порты, не участвующие в разговоре по Torfone?
Так это можно использовать и другой подходящий голосовой клиент без шифрования. Проблема только в том, что расход трафика при таком подходе возрастает примерно в 10 раз по сравнению с тем, когда шифрование правильно встроено в сам клиент.
Извините, unknown, но нет у нас доверия к другим клиентам неизвестно кем сляпаным и на кого работающим, особенно после разгрома тов. Gegel'ем Linphone'а.
В любом случае пусть лучше будет сыроватый Torfone, зато известно, что он сделан нашим человеком для нас же, а не для какого-нибудь АНБ.
10-кратным расходом трафика нас не запугать, особенно, если это существенно повышает криптостойкость.
Поэтому, пожалйста, покритикуйте вышенабросанную схему, если есть за что, и если особых возражений нет – помогите с решением заданных в ней вопросов.
Под Linux подойдёт любой открытый с возможностью работать без внешнего сервера или с простым для настройки своим сервером. Даже такой кривописанный как Mumble[link93]. Или какой-нибудь другой[link94]. Вам же связь точка-точка, значит вы будете доверять соединение только тому, кто сможет логиниться к VPN.
Да пусть хоть и под Linux, но смущает те же вопросы (сделан неизвестно кем и для кого).
Так что табличку "Comparison of VoIP software" мы видели давно, но кто подпишется под ихними продуктами?
Правильно, никто. А тов. Gegel'а, который живет на Украине, если что, найдем и поставим ему для начала... нет, не синяк, а на на вид :)
Так что хотелось бы с вашемй помощью определить оптимальное размещение OpenVPN-сервера клиента и правила iptables для данной ситуации по типу "запретить все, кроме".
А авторов OpenVPN и всего остального критичного софта Linux по всему свету искать будете?
Давайте не будем распылятся и решим хотя бы эту проблему.
Поскольку решение любой проблемы в части касающейся уменьшает потенциальный риск сами знаете чего.
Интерес к проекту возрос. Наверное, что-то намечается :)
BTC: 19kUeFQsh72oPzSmGKF5Wny4Jp495NBFcg
LTC: LZaogEahLPFJE5CYrCuXSroVCvHz8NowR9
Со вторым пунктом проблем нет, но распознавание голоса на сегодня эффективно не решено, на сколько я в курсе.
Я сам не пробовал, при первой возможности потестирую. Но предполагаю, что качество распознания не удовлетворит практические запросы.
Идентификация по стилю (стилометрия), конечно, останется после распознания-синтеза, но это совсем другой уровень. Доказать что-то с помощью такой идентификации нереально, т.к. стиль всегда можно подделать под человека. Другое дело – идентификация по формантам, которые больше зависят от анатомии глотки, языка, связок и т.д., чем от желания говорящего. Поэтому распознание-синтез было бы почти идеальным решением, если бы существовали надежные средства перевода голос-текст.
Вы не верно меня поняли, я ничего против 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, пришлось доустановить библиотеку и изменить название фукнции в файлах \lpc10\round.c и lpc10lib.h (она не используется, но почему-то при компиляции конфликтовала с одноименной в DES). Код собрался (с кучей предупреждений, но все же), сейчас попробую соединиться с моей патченной Win32-версией в стандартном UDP-режиме. Если все будет ОК, прикручу TCP и попробую через Tor с кодеком LPC10. Если все ОК, то можно постепенно перенести все рюшечки (шифрование (+Keccak), DH (+EC25519), новые кодеки (MELP/MELPE, CODEC2, OPUS), подавитель шума, голосоменялку, дублирование цепочек для снижения латентности, переход на прямое UDP-соединение), т.е. практически все, что сегодня есть в Торфоне.
Во-первых, ознакомьтесь с http://wiki.winehq.org/Sound
На игровых форумах проблемы со звуком под wine – частый предмет обсуждения. Возможно, придется доустановить или наоборот удалить какие-то пакеты. Программу можно запустить так:
$ padsp wine программа.exe
Или так:
$ aoss wine программа.exe
Не забывайте об утилите winecfg.
Ув. тов.Gegel! Мы рады, что вы снова появились. Не пропадайте! :)
Отправил вам лайты, ловите. Надеемся, что вы продолжите свою архиполезную работу.
Пусть и не глобально по всем пожеланиям, а хотя бы косметически, для юзабельности.
Например, добавить в мануал описание всех фич, используемых в интерфейсе Torfone, и практические советы по их использованию, т.е. какие оптимальные значения следует выбирать.
Да и интерфейс бы неплохо бы перевести на русский – огромный стимул по освоению Torfone для новичков.
И прошу советов по заданным выше вопросам:
А то тов. unknown, на которого возлагались большие надежды, вроде заинтересовался ими, но потом, к сожалению, исчез.
Кстати, почему о сих пор PGPfone.exe, а не Torfone.exe?
Мда, читаешь все это и думаешь, насколько недальновиден официальный российский криптографический говернмент.
Что, нельзя было наскрести жалких восемь с половиной лямов за Skype? Для такого государства, как Россия, это не деньги, шелуха.
Да и в 10 раз больше стоило бы заплатить – и теперь бы не АНБ, а Россия слушала бы весь мир – обычных граждан, бизнес, наркобизнес и террористов.
Полученная информация по стоимости в тысячи раз больше уплаченных лямов.
Тов. Gegel, вас еще не пытались купить спецслужбы? ;)
$8,500,000 не деньги даже для такого супергосударства, как Монако или Лихтенштейн ;))
Нахрена столько?
Гугл поднимался с 100,000$.
Не-а, никто не пытался :(
Да и Торфоном, судя по гугланалитике, интересуются лишь честные люди: с r2d2, runion, pedoimperia и т.д., ну и штурмовики с разных лагерей еще.
Если покупать, то не меня, а проект, но тут есть проблема. Торфон – самодостаточная система, его безопасность зависит только от исполняемого файла и от Tor (нет сервера, который можно взять под контроль). Кроме того, не предусмотрено автоматического обновления, как в Skype или даже в хваленном Jitsi (который мало того, что под обновляемой Java, но и сам лезет на свой сервер тотчас после первого запуска).
Так что только если я начну активно петь об новой улучшенной версии или, наоборот, об страшной уязвимости, требующей немедленного обновления, значит, можете поздравить – таки купили :)
PS: SpeakFreely под Linux проверил, все функционирует ОК, как Linux-Linux, так и Linux-Win32. Чистая консоль, минимум библиотек, относительно простой код на С (всего два потока для двух направлений передачи). Сейчас разбираюсь в коде, найду время пропатчить и ввести добавочный TCP-транспорт и поддержку SOCKS5, вычищу от утечек DNS, и можно будет пробовать через Tor.
Прямое соединение можно пробовать и сейчас с нативной версией (там есть поддержка AES-128 в CBC на предрасшаренных ключах, но, похоже, без MAC – голос как аутентификаитор, Шнаер допускает такой вариант). Заодно подскажите, что можно убрать/добавить для удобства практического применения.
Гм, это неожиданный поворот. Здесь пока обсуждался Torfonе, по нему за столь огромный топик накопленомного вопросов и ответов, сложилась определенная оценка его возможностией и некоторое доверие.
А тут бац – и SpeakFreely. "© Кто такой, зачем, почему?"
Как к нему относится, он что, защищеннее TorFone, раз вы на него переключились?
В-общем, переход непонятен, поясните, плиз.
Это, как говорится, "внушает и впечатляет". Но в самом деле, как в этом довольно старом проекте с уровнем криптозащиты? AES, TwoFish и пр. в нем вроде не замечены, имхо.
На сайте Торфона с самого начала существует страница, где сделан порт 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, этот проект так и умрет, не родившись.
Эхехех... :( и когда же это все будет? Обещанного завершенного юзабельного Торфона мы уже сколько ждем – полгода или год?
К тому же Torfone сегодня уже хоть как-то, но работает! С прикручеными необходимыми аесами и т.п.
Зачем тогда было вообще браться за него, если SpeakFreely, как теперь оказывается, предпочтительнее?
Хотя, конечно, если получится обновленный SpeakFreely сделать быстро, то да. Идею с более простым консольным приложением на предыдущих страницах я подавал. Вопрос – насколько быстро?
Вот поэтому качественный кроссплатформенный сишный код сначала делают на Linux, с прицелом на кроссплатформенность в самой начальной стадии проектирования. Случаи с джавой не рассматриваем.
Это и будет Торфон. Лучше бы я не упоминл о SpeakFreely, молча взяв оттуда парсер командной строки и кроссплатформенную звуковую библиотеку. Все остальное все равно от Торфона прилепится. А GUI под Linux никому тут не интересно.
Согласен на все 100%, со всеми новыми проектами так и делаю. Но Торфон вообще изначально не планировался как проект: я хотел просто показать возможность передачи голоса через Tor. Взял первое попавшееся под руку приложение, наскоро перевел на TCP и увеличил голосовой буфер. К сожалению, попался PGPFone, жестко заточенный под Win32.
Да кто ж с этим спорит. Но для того, чтобы что-то реальное сделать, нужно либо достойную оплату получать, либо жить в сытой стране, где нет никаких забот и можно спокойно заняться хобби, Voice over TOR, например :)
Gegel, давайте попробуем пообщаться в приватке https://fastzone.net, я там зарегился под ником Liteminer
unknown, вы все-таки не хотите помочь общему делу, ответив на заданные вам выше вопросы?
Вот именно! Одни ненужные проблемы.
Можете закидать меня камнями, но, чисто на мой неискушённый взгляд, есть штук 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, хотя эллиптика там есть. Т.е. даже касаемо проекта такой тотальной распространённости нет уверенности, что в его реализации эллиптики всё ОК, и это нигде потом не аукнется.
Самоподписанный сертификат. После добавления в исключения получаем
Примерно так:
Последние обсуждения того, как правильно писать безопасные правила для iptables, были тут[link109]. Низкоуровневость iptables, вытекающая из этого требовательность внимательности к мелочам, большой объём текста даже для самой минимальной политики фильтрации — основные факты, из-за которых считается, что в Linux нормального файерволла нет. Интеграции iptables с окружением тоже нет (поэтому всё делается в виде самописных скриптов). На старте системы правила могут не работать[link110]. Стандартных способов загрузки правил тоже нет: каждый их суёт туда, куда вздумается, в стартовых скриптах. Поддержки owner для входящих пакетов в iptables также нет.
iptables — говно, ненавижу^Wне используйте iptables.Там, где можно, не используйте iptables, используйте pf. У последнего нет перечисленых недостатков, правила удобочитаемые человеком, а писать их легко, приятно и безопасно[link111].*Проверка загруженных правил — команда iptables-save.
*По ссылке пример намного более сложных правил, чем в этой рыбе-заготовке. Там несколько внешних интерфейсов + форвардинг, но при всём этом они легче читаются, чем вышеприведённая «ассемблерная» мешанина iptables.
Я обсуждал на примере разработки торфона, что нехорошо лепить протоколы на коленке. Мне было интересно выяснить (думаю, что и Gegel'ю тоже), что протоколы с отрицаемой аутентификацией — гораздо более сложная вещь, чем кажется. И ведущими теоретиками проблема до сих пор не решена.
Сам торфон, как реальный программный продукт для пользователя мне пока никак не был интересен.
Сама такая возможность многим тоже интересна, как концепт. Я слежу за её развитием, но никакой конкретный проект пока практического интереса не вызывает. Ни в каком «общем деле» я не участвую. Отвечаю на те вопросы, которые лично считаю интересными со своей субъективной точки зрения и не более того.
Описка. Следует читать не "по голосу" а "по стилю". Речь идёт о распознавании автоматически озвученного текста, полученного из туда-сюда перевода распознанной в текст речи.
Чем вам этот[link112] случай не люб?
s/распознавании/идентификации/
Мне кажется, живая речь содержит намного больше уникальных паттернов, чем письменная, как минимум, потому, что «поправить» уже произнесённое нельзя. А раз даже авторство письменной речи успешно определяется[link113] стилометрией, то что говорить про устную...
а что скажите по поводу сайтов, которые генерируют правила для iptables? еще есть надстройка arno для iptables, которая немного помогает, а новичкам так много, произвести настройку.
1.
Оччень любопытно! А для чего тогда конфиг ip6tables ?
Ага. И в каком Линуксе он присутствует?
Да осильте вы уж наконец iptables, он не такой страшный, как его тут описывают. Вам же не на уровне провайдера трафиком рулить. Не все опции нужны, а то, что нужно, нормально описывается и скриптуется.
Большая часть людей не знает о его существовании. Они настраивают iptables и думают, что на этом всё. Те, кто знают про ip6tables, всё равно предпочитают отключить ipv6 на уровне ядра, потому что им самим ipv6 не нужен. Его проще отключить, чем фильтровать.
В линуксе под названием BSD, причём во всех BSD и их деривативах вплоть до Mac OS X и Debian GNU/kFreeBSD.
Ограниченный порт OpenBSD PF есть даже под винду [1][link114], [2][link115].
В Linux нет PF, а поставить BSD не всегда возможно хотя бы потому, что у неё плоховато с поддержкой сколь-нибудь актуального железа. Я на одном ноутбуке попробвал — а там ни сетевая не поддерживается, ни иксы не стартуют. В свежем Linux, хоть и с глюками, работает и то и то, но есть какие-то проблемы с микрофоном, и ядро не видит кардридер (это ещё ладно, но микрофон бывает нужен). И если проблемы с сетевой в принципе можно решить через внешнюю USB-сетевую, то что делать исксами — вообще непонятно. Правда, BSD можно установить в виртуалку (теоретически — даже как хостовую ОС, если видеокарту и сетевую пробросить в Linux, запущенный, как гостевая ОС) и оттуда рулить трафиком, но это непростые извращения.
Тогда для начала тебе стоит сначала изучить, что такое BSD и что такое Линуксы
Извините, забыл тег irony добавить. Думал, с юмором у вас дела лучше.
на сотовый через торфон можно звонить?
Нет.
Чтобы отключить IPv6 – достаточно отключить сервис ip6tables ?
это файрволл, управляющий ipv6. Если ipv6 у вас будет отключен[link108], то и этот файрволл настраивать не понадобится.
Я обычно его отключаю так:
не знаю, лучше это или хуже.
Куда-то тов.Gegel потерялся... Неужто под шумок новый, консольный Torfone сооружает? :))
Вы уверены, что при отключении скрипта, стартующего файрволл для ip6tables, отключается сам ipv6-протокол? Как вы это проверяли?
Маловероятно, что это так, логичнее полагать, что протокол остаётся включенным, но неприкрытым никаким файрволлом, оставляя свободными возможности для утечек.
Почитайте, что типа этого[link117] хотя бы. Если ipv6 запретить на уровне старта ядра, остальные компоненты работы системы, предназначенные для работы с IPv6, лучше даже не выключать, а удалить за ненадобностью.
такой[link118] алгоритм подойдет?
вариант отключения через grub http://softnastroy.com/content.....i-ubuntu-server.html[link119]
Честно – никак не проверял, просто надеялся, что раз сервис отключаю, то и IPv6 по умолчанию тоже, так сказать, банится.
Даже не подозрввал, что отключение IPv6 требует таких особых действий.
Выходит, был неправ?
Я бы с радостью, но как? Ведь эта зараза – сервис ip6tables – удаляется только вместе с 4-й версией iptables.
Действительно, они в одном пакете, так что по отдельности штатно не удалить, да и смысла получается нет. Но ip(6)tables не обеспечивают работу протокола, они только управляют фильтрацией уже включенного (если он всё таки есть и включен). Вообще, это уже оффтопик в теме. На сайте приведено масса способов отключения IPv6, да и на обычном линуксовом сайте или в мануале к своему дистрибутиву найти конкретный и наиболее подходящий вам ответ проще. И результаты действий надо тщательно проверять. И не пользуйтесь его конфигами. Изучите всю систему инициализации сети с потрохами, чтобы написать свой скрипт управления файрволлом вместо неудобного ip(6)tables-save и ip(6)tables-restore. Прострелить себе при этом ногу — очень просто, поэтому опять же, не забывайте про тщательные проверки.
У меня IPv6 отключен через grub, как советовал unknown. Посмотрел, какая будет реакция на попытку загрузить его (есть в статье):
Зачем пытаться вручную отключить IPv6 в несметном количестве сервисов? В одном-двух свежеинсталлированных вы это сделать забудете, и вся методика станет очередной полумерой. Смысл — отключить в одном месте, но с глобальными последствиями, чтобы после этого даже те сервисы, которые могут работать с IPv6, после этого не смогли. Там предлагают отключать через sysctl. Вот не знаю почему, но лично у меня этот метод не работал[link120]. Я проверял.
В мире жопоруких кодеров надо самому всё перепроверять. Ошибку сделают они, а сидеть придётся вам, если не повезёт.
К unknown'у: предлагаю комментарий /comment78555[link121], затем комментарии от /comment78600[link122] и до /comment78631[link123] включительно, а также от /comment78646[link124] и до конца треда включительно перенести в более подходящую тему[link125], где как раз шло обсуждение и того, как правила iptables писать, и того, как IPv6 выключать. В указанных диапазонах комментриев практически ничего нет про TorFone. Все комменты по теме я исключил из списка на перенос.
Сделайте человеческий порт на линукс, github.com, там сейчас, иесли чо, вся планета шарит сырцы таких проектов.
Очень будет здорово !
XP – Must Die!
Уже died, полторы недели как...
Но её призрак будет бродить по сети и железу еще не один год.
Wine или CrossOver не поможет?
Так и 98 помер давно. Даже тень не прободит. Но упоминается еще 7 и 8 )
1-2 не важно, где Вы сейчас 95 или 98 найдете? А openbsd 3.9, а линукс 2.4?
Нет.
Порт с сырцов Visual C 6 в GNU environment будет лишь на пользу проекту, и обеспечит долгое существование.
Порт, порт и ещё раз порт. И в github всё сложите, не поленитесь. Вам не нужна свежая кровь в проекте?
Раритеты-то найти проблем не составит. Вот только их актуальность в 2014?
ХР — на мой взгляд, лучшее, что вышло в свет из застенок Майкрософта. По ощущениям, на фоне остальных продуктов, начиная с тех же 95 или 98 и заканчивая 7 и 8.
ХР актуальна уже более 10 лет. И думаю будет актуальна еще, если не столько же, то как минимум несколько лет. В зависимости от софта под неё.
Мне трудно её сравнивать с 7 или 8, по субъективным ощущениям и то, и другое отстой, хоть и не пользовался, но... даже желания не возникало, не говоря о потребности, в отличие от ХР.
Просто в XP наиболее оптимальный баланс между тем, что реально нужно пользователям, и извращенными фантазиями M$, силящихся показать всему миру, что "форточки таки развиваются".
XP, вышедшая, кажется, в 2003-ем, на тот момент воспринималась как «всё испохабили, и теперь непонятно, где что найти» на фоне классических Windows 2000 Server и Windows 2003 Server. XP была принципиально «Home Edition», не поддерживала многопользовательский режим искуственным образом (требовался нелегальный бинарных патч-хак, чтобы разблокировать многопользовательский режим). Если кто-то был залогинен на ПК, и ты в этот же момент логинился к нему по сети, первый юзер внезапно вылетал.
Поддерживаю. И 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-латентности за счет смены цепочек.
Будем надеяться, что все задуманное будет реализовано. Советы и пожелания весьма приветствуются.
Подавляющее большинство на этом сайте предпочитает безопасность – основной мотив, ради которого мы здесь собрались.
Не пойму, зачем этот зоопарк – для количества? Так оно вряд ли кому надо.
Лучше оставьте минимум методов и протоколов, но наиболее востребованных и с наилучшими характеристиками.
А можно это сделать самым первым вариантом? Жду- не дождусь, когда заработает надежное прямое соединение!
Не взлетит. В том смысле, что бренд OnionPhone неудачен, плохо выговаривается и звучит гораздо хуже, чем TorFone.
Поменяйте эти названия местами, что ли. Или назовите TorFone Pro или еще как-то, но OnionPhone никуда не годится.
К сожалению, XP не умеет ряда полезных вещей, которые появились в W7/W8.
Например: попробуйте поднять телефонию в виртуальной машине XP.
XP неплохая и скромная по ресурсам система по сравнению с 7 и особенно 8; однако чем дальше, тем больше требуется усилий, чтобы тянуть совместимость.
Мне кажется, это и есть необходимый минимум. Я не сторонник жесткого ограничения пользователя в выборе. Чтобы не конфузить обычных пользователей, установки по умолчанию будут определены в ini-файле.
Прямое соединение доступно без всяких патчей: SpeakFreely for UNIX слушает по умолчанию на UDP-портах 2074 и 2075, их необходимо пробросить в роутере для приема входящих звонков. Можно выбрать два соседние порты, изменив параметр 'INTERNET_PORT' в MakeFile и собрав версию под себя. При выполнении звонка вводите IP-адрес или доменное имя абонента. Возможно использовать PGP/GPG для автоматического согласования ключей (я пока не изучал этот фрагмент кода, но, думаю, авторы внимательно отнеслись к безопасности). Смотрите документацию на SpeakFreely.
То, о чем я писал выше, подразумевает использование Tor для первичного поиска абонента средствами TorChat и прохода NAT без ручного проброса портов, а также для согласования ключей (PFS) под прикрытием Tor (т.е. использование Tor вместо SIP-сервера: без регистрации и сбора метаданных).
Роджер опять будет недоволен.
Кстати, вопрос по ходу: какой вариант TorChat лучше использовать в Linux?
Вы — большинство? Читали бессмертное[link128]? Windows (а также Ubuntu и оконный интерфейс, в частности) не имеют ничего общего ни с удобством, ни с безопасностью. Их фишка — низкий порог вхождения для тех, кто привык к оконному интерфейсу, не более того.
Не имя красит продукт, а продукт имя. С учётом завязки на TorChat это вполне нормальное и естественное имя.
Винда головного мозга — это диагноз.
А что, их несколько? Если нет особенностей, я бы взял последнюю стабильную версию (это же верно и для любого другого продукта).
Про торчат[link129].
There is only one mode and it is secure. ©
Альтернатив у него пока нет. Впрочем, тот минимум коммуникаций, который нужен 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: возможность определения он-лайн присутствия контактов с готовым графическим интерфейсом. Конечно, можно реализовать это и на С, но вылепить вывод в консоли – это как секс стоя в гамаке, тем более при моем положительном отношении к оконному интерфейсу.
А можно без всяких торчатов? Мне не нужна эта наркоманская хрень, мне нужен аналог скайпа. Зависимость от сторонних программ – большой минус.
Крик души: Gegel, ну дайте хоть что-нибудь, обеспечивающее наиболее надежуную высокую степень безопасности! :-)
Начните с консоли, окна/рюшечки можно и потом прикрутить.
Кстати, не холивар: начинал с Доса, т.е. с консоли, потом засосала окошечная Винда, после которой очень-очень долго перепривыкал снова к консоли, теперь уже в Линуксе.
Вывод – среди этих интерфейсов бессмысленно определять лучшего, каждый из них хорош под свою задачу.
Например, ведь никто не будет утверждать, что рисовать в Bash удобнее, чем в Gimp? :)) И наоборот.
Угу. И дело даже не только в этом – как, т.е. по каналу скрытно передать собеседнику адреса полученных скрытых сервисов?
Private_key используется только для аутентификации перед клиентом и директориями скрытых сервисов. Для шифрования используется сеансовый DH с PFS. Так что ранее записанный трафик при знании private_key расшифровать невозможно.
«... при моем положительном отношении к двупальцевому методу набора на клавиатуре против десятипальцевого».
No comments...
... и, как следствие, массовость, является критичным при угрозе профилирования.
Так исходники открыты – форкайте под свой вкус всеми десятью вашими пальцами! :)
Как и обещал, адаптировал 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.
@gegel, А почему не работает с 64битными?
Выложи исходники на github. Что бы инструкция выглядела так:
А Ваши эти '!', '$' вначале – это плохо. Там что, нет возможности определить, ip addr/или доменное имя/или у доменного имени суфикс .onion?
Как torchat сделан все видели, там в коробке маленький Tor, сразу запиливается в него, и не нужны никакие слушания на raw ip, с пробросами через router.
@gegel, а что думаете о chatroulette?
Завертеть на Вашей шарманке, такую же прикалюху в Tor-сети.
Придётся вероятно отдельную башню поднимать для того, что бы она индексировала тех кто on-line.
Но зато, какой ажиотаж будет. Стелс-видео-рулет-чат.
Правда, ждёт Вас там такое же цунами из педафилов, как и в TorChat-е. Но кнопочку `ignore` можно допилить.
Скомпилированный бинар работает. При компиляции на 64 бит-платформе (сам не пробовал, с чужих слов) собирается, но генерирует адресные ошибки в библиотеках. Если надо, разберемся. Но не на этом этапе.
Выложу, конечно. Просто это первая сырая альфа, выложил тут для узкого круга. Пока попробуйте бинарник (хоть на LiveCD), прежде чем "причесывать" проект, надо хоть немного убедиться в его адекватности.
Онион-ссылку, конечно, можно определить по суффиксу, и инициировать соединение через Tor. Но в случае обычного домена или IP как понять, хочет ли пользователь соединиться напрямую по UDP, напрямую по ТСР или по ТСР через Tor? Конечно, можно оставить только Tor, но тогда теряется гибкость.
Моя ошибка – нельзя в описании все мешать в одну кучу, учту.
Проброс порта в роутере нужен для приема прямого соединения по домену или 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-цепочек, постоянно контролируя их латентность, отсеивая медленные и дублируя сомнительные. На приемной стороне все собирать обратно. Это потребует локальных ресурсов (что при современных процессорах не проблема), но обеспечит приемлемую латентность транспорта.
Я бы хотел заняться таким проектом, но это на порядки выше onionphone и не для одного хобби-разработчика: нужна команда и финансирование.
Вот это как раз и не надо. Башня сразу попадет под контроль. По аналогии с TorChat прекрасно справится децентрализованная структура. Вот только с баном будут проблемы, но можно решить путем раздачи организатором канала отзываемых ключей-инвайтов.
Нужно делать так. Одну кнопку нажал – всё работает. Лучше Tor Browser Bundle(Windows) – его хавает пипл. Или например, tails – всё в коробке, его буквально рекламируют все подряд специ по безопасности, например Шнайер.
А когда там всё по кусочкам, часами собирается, люди либо запилят баш скрипт, который опять всё превратит в одну кнопку, либо уйдут в проект где всё проще.
Я вот про такую директорию говорю: http://3eocs2e3bwdd4zdv.onion
Если в самой программе допилить эту диру как базу для chatroullete, то можно получить тысячи пользователей-тестеров мгновенно.
Потом главным конкурентом будет лишь Skype.
Вы как разработку ведёте? Как Satoshi или как все?
А это как?
Символы ! и $ имеют в консоли особое значение, их надо экранировать или брать адрес в одинарные кавычки, что неудобно. Вообще, для указания протокола общепринято использовать опции типа -T или -U (для Tor можно принять, скажем, -O).
Просветите поподробнее, у меня нет особого опыта работы с консолью. Но в процессе разработки и тестирования я не заметил никакого отличия этих символов от других в процессе ввода (чтения из stdin) как в Win32-консоли, так и в Linux. Они вводятся с клавиатуры, как обычно, включаются в C-строку, ищутся strchr и т.д.
Или имеется в виду, что традиционно в самой консоли они используются как общепринятые управляющие, и их не стоит использовать в качестве нестандартных модификаторов, чтобы не конфузить пользователей?
ПС: данные символы не используются в командной строке и т.п. Они используются как модификатор адреса дозвона при его интерактивном вводе в уже запущенной программе.
В любом случае нет проблем поменять на предложенный Вами вариант.
Именно так.
OK, принято.
Если есть желание, можно попробовать соединиться со мной:
на адресе !iyrqp2pt7qfrw6xu.onion висит текущая linux-версия,
на адресе !gegelcy5fw7dsnsn.onion висит Win32-версия и Торчат
на прямом адресе $gegelcopy.dyndns.org – Win32 версия
Для проверки звука достаточно просто запустить ./start, ввести последний адрес и нажать ввод – будет выплнено прямое соединение.
Оставлю включенным до вечера.
Одно дело для заказчика кодить, за деньги, а не для сообщества, то тогда конечно правильный код писать вредно для прибыли. Надо просто взять и сделать, заказчику пофиг, ему главное, чтобы работало.
Есть масса всевозможных гласных и негласных стандартов кодинга, которые хорошо бы проштудировать, прежде чем за что-то браться. Даже уже не знаю, нужно ли показывать общепринято минимально правильные вещи[link134], или лучше не стОит — пусть уж будет виден весь изначальный подход невооружённым глазом.
Gegel, трудяга ты наш неутомимый, огромное спасибо! :) Неужто кроха лайтов так подействовала? :))) Шучу, шучу!
Щас потестирую. И сразу вопрос – если у одного абонента Linux, у второго Windows – можно ли как-то состыковать Unix-версию SpeakFrealy7.6 со старым виндовым TorFone?
Или какой-то еще вариант, чтобы линуксоид мог разговариваить с виндузятником...
Наверное, действительно не стоит, по крайней мере так будет честно.
Тогда лучше не считать этот проект 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 во всех ее вариантах.
С Торфоном пока совместимости нет.
https://en.bitcoin.it/wiki/Satoshi_Nakamoto
http://www.electonix.ru/
Server not found
Firefox can't find the server at www.electonix.ru.
Извините, опечатка. Собственно, это для примера писал, и не выделял как url. имелся в виду http://electronix.ru/forum/: портал инженеров-электронщиков и embedded-программистов.
Некоторые темы там тоже имеют отношение к проблемам безопасности. На вскидку: http://electronix.ru/forum/ind.....howtopic=119428&st=0[link135]
Я, например, отнюдь не рад вездесущей «китайчатине» быстро и дёшево (для производителя) стяпляпанной, но работающей «почти всегда».
И что, этот SpeakFrealy обеспечивает такую же криптозащиту, как и TorFone? Или может даже лучше? ;)
И еще вопрос: откуда у вас взялась его версия 7.6, если на офсайте максимальный релиз только 7.2?
Никто не рад, но их умение решить вопрос оптимально с практической точки зрения, отделяя на данный момент основное для пользователя от второстепенного, заслуживает уважение. Например, мне гораздо приятнее пользоваться телефоном Donod C+ за $12, чем фирменным Samsung того же класса. Софт лучше, хотя по железу, конечно, гораздо хуже.
Я выше писал, что не разбирал подробно криптографию версии 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.
И когда это можно ожидать?
@gegel,
Забавный топик. Файловая система, тогда тоже должна быть аппаратной. Как марчить файлы, что бы они аппаратно были не стрираемы. В противном случае, защита на стороне файловой системы, программно делается. В любом получается случае, надо вокруг файловой системы плясать, и что бы её Windows/Linux читать умели. Зачем такой велосипед?
@gegel, а зачем этот Raw UDP/TCP, если название уже позиционирует разработку как прикладную к Tor – TorFone? Или здесь Tor – это что то другое?
А учитывая уже имеющуюся криптографию в Tor-e, Вы лишний слой добавляете? Связь между двумя onion доменами, для передачи видео, может лишь потребовать грандиозной работы в области сжатия этого видео.
Понятие "аппаратный" относительное. Например, шифрование на ПЛИС – аппаратное? Но ведь ПЛИС все равно программируется. Тем более в данном случае – ведь используется микроконтроллер. Реализуется FAT. Защита программная, но не силами ОС, а в прошивке микроконтроллера, и написанной собственноручно, а не производителем флешки.
Tor дает ощутимые (пару секунд) задержки, и это весьма напрягает при общении. В серьезной модели угроз это оправдывается, но в большинстве практических случаев предпочтителен переход на p2p соединение после установки Tor-соединения, согласования ключей в нем и обмена инвайтами для прохода NAT. Естественно, p2p не дает анонимности, но в отсутствии сервера невозможно собирать метаданные и контролировать все в одной точке. Другой вариант – DHT, но Tor HS предоставляет коробочное решение.
К сожалению, не все так просто. В своих экспериментах с HS-соединением я заметил четкую корреляцию между потоком трафика и латентностью. Алгоритм Нагла на узлах продолжал работать, и TCP-пакеты переформатировались произвольно, буферизируясь сокетами узлов. Т.к. сжатие видео не бесконечно, то в любом случае единичной HS-соединие будет перегружено и даст значительную латентность, что вызовет неудобства в общении, особенно у той публики, кто в этом больше всех заинтересован.
Единтственный выход – использовать множество цепочек (и Tor-клиентов), разбивая видеопоток на небольшие фрагменты, маршрутизируя их отдельно и собирая на приемной стороне. Но тут повышается вероятность отказа всей системы в случае отказа всего одной цепочки. Поэтому придется использовать соответствующее кодирование видео (потеря или задержка фрагмента данных должна приводить к потере только одного фрагмента кадра), а также предусмотреть алгоритм исключения медленных цепочек, т.к. самая медленная и будет определять общую латентность. Для уменьшения вероятности отказа надо предусмотреть дублирование проблемных (вновь созданных, нестабильных) цепочек.
Только таки способом можно получить то, что ожидает пользователь.
:)))
А под Linux полностью через Tor оно уже работает? Т.е., чтобы не только согласование параметров, но и весь трафик шёл через Tor.
Да, под 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-адрес абонента с восклицательны знаком вначале и жмем ввод. Для приема входящего звонка жмем ввод.
Для тестирования жмем ввод и слышим себя.
Если что-то не так, опишите ошибку, посоветую.
2 gegel: а под Ubuntu Touch заработает?
Я же не ясновидец. Для того и выложил, чтобы попробовали на разных ОС.
Не заработать может только звук. Просто запустите ./start (без никакого Тора) и затем нажмите ввод, и еще раз ввод. Или услышите себя, или получите ошибку. И в том, и в другом случае отпишите. Если будет ошибка, укажите, я попробую подсказать, как поправить ситуацию.
А можно кадры поочерёдно по цепочкам распределять, тогда будет просто пропуск каждого n-ого кадра, в плохом случае слайд-шоу.
Если пропускать много трафика по множеству параллельных цепочек, то анонимность будет падать, да и сеть будет перегружаться. А для скрытого сервиса критически важными являются его гвард-узлы. Для правильного функционирования сколько бы дополнительных цепочек не запустили, узким местом останется фиксированный набор гвард-узлов скрытого сервиса, через которые трафик со всех цепочек и будет проходить. Можно, конечно и над этим набором узлов поиздеваться в ущерб анонимности, но трудно оценить к каким последствиям это приведёт, с учётом того, что протокол скрытых сервисов и так не слишком надёжен. Пока что он расчитан на малые нагрузки и не предусматривает масштабирования.
На сколько я помню из теории кодирования видео (могу ошибаться, не занимался досконально), периодически передаются опорные кадры, а остальные в виде дельты. Так что для реализации предложенного алгоритма все равно понадобится специфический кодек, устойчивый к потерям. Наверное, такие существуют, надо смотреть теорию.
Год назад я несколько раз поднимал этот вопрос и здесь, и на TorProject, но ответа не получил. Хотя у меня с самого начала были сомнения аналогично вашим.
Об этом тоже где-то я упоминал. Практически это подтверждается при активировании экспериментальной функции Торфона: создаются две встречные цепочки, пакеты передаются по обоим, накапливается статистика за определенный интервал, и более медленная перезапускается. Я тщательно тестировал это в прошлом году: выше головы прыгнуть не удается из-за гвардов.
Отказаться от гвардов, уменьшить цепочки (наверное, это возможно в современной реализации Тор, не в курсе) можно в ущерб анонимности, все зависит от модели угроз.
Кроме того, я не зря упомянул об множестве экземпляров Tor на обеих концах, соответственно, наборе независимых HS. Конечно, надо думать о возможности корреллирования и т.п. потенциальных деанонимизаторах.
В продолжение /comment78555[link121]:
Вышеприведённые вопросы говорят о том, что я сам до конца не понимаю, как работает фильтрация на lo. Обычно правила (для системного Tor'а) пишутся исходя из того, что Tor, как локальный сервер, должен отвечать на запросы клиентов, но сам соединенения никогда не инициирует. Тут не так. Может быть, дело во всяких PluggableTransport и т.п. наворотах бандла.
Правила, конечно, ни от чего по сути не страхуют (особенно, если у кого-то на машине белый IP), но слегка сужают манёвр атакующему в случае, если будет уязвимость (соединения в сеть напрямую зарезаны, придётся отсылать трафик во вне через Tor или ждать, когда попадётся подконтрольный Guard). Список Guard'ов и их портов для конфига выцепляется из netstat -apn |grep ВАШ_IP. Если у кого исходящий не eth0, пусть поправит для своего случая.
torchat ужасно глючит – не регистрируется нормально в сети (человечки не зеленеют). у всех так?
Проверил – подключается без проблем.
Убедитесь в правильность установки системного времени и соответствии его часовому поясу. Обновите tor.exe, заменив файлом из последнего TBB.
А вообще такое было в последний раз во время августовской атаки, тогда в первую очередь пострадали HS. Сейчас, судя по торовскому мейл-листу, все спокойно.
только tor.exe надо заменять или кучу dll файлов впридачу?
Скачал последний tbb: когда-то все было линковано статически, но теперь, по видимому, делают иначе. Так что придется тянуть dll. Кроме того, из-за изменений в дефолтных настройках может потребоваться дополнительная редакция torrc. Вообщем, надо пробовать.
У меня, кстати, Торчат + Торфон работают на старом Tor ( v0.2.3.25 (git-17c24b3118224d65)).
А из Крыма проверяли? Работает?
Конечно. Все няш-мяш!
Вежливые зелёные человечки...
Похоже, всё-таки достаточно. Чтобы было проще понять, фильтрацию на lo лучше переписать так:
Правила выше для Tor'а на lo написаны с этим же упорядочением, поэтому объясняются аналогично.
RELATED не нужен (он только для извращённых протоколов типа ftp), достаточно ESTABLISHED. На работоспособность это не влияет. См. также обсуждение тут[link141].
В-общем, стал я ждать годами, когда тов. Гегель выполнит свои многократные обещания по созданию финального употребимого релиза его распиаренного продукта.
Отговорки типа "Не хватает времени" и т.п. пусть прибережет для наивных лохов – не сделает он Torfon никогда, поверьте моему слову.
Не держит он свое слово, увы, и это бесспорный факт.
Поэтому перешел на Jitsi. Еще не все опробовал, но первые впечатления по юзабельности, как ни странно, самые благоприятные.
Поскольку в Jitsi есть возможность загнать трафик в прокси (SOCKS), любопытно будет поганять его по SSH-туннелю.
Осталось оценить его криптоскойкость, но с этим вы наверняка справитесь.
Да готов он, но после здешнего "воспитания" не хотел выкладывать "as is". Хотя все же я сторонник доводки софта "в процессе", поэтому в течение пары дней на скорую руку соберу пре-альфу и представлю на github. Пока могу показать черновик описания[link142] (функционал, установка, команды, подробное описание криптографии и т.п.). Могут быть грамматические ляпы: вычитать все, подогнав под принятые здесь "математические" традиции – весьма кропотливый труд, сопоставимый с самой разработкой. Критика и пожелания принимается в любом виде :)
ПС: посмотрите в описании по ссылке [3] работу, в которой представлены эксперименты с Tor VOIP по VPN-туннелю. Возможно, это облегчит решение вашей задачи альтернативными способами.
Обратите внимание что в Опции – Расширенные – Прокси-сервер есть таблица, где видно для каких сетей эта настройка работает.
ЗЫ Во всяком случае sip туда не входит. Увы..
Четко разграничивайте SIP и RTP (ZRTP) протоколы. Первый идет по TCP транспорту и может быть пущен через Tor, второй – по UDP, и должен быть туннелирован через VPN по TCP. Это нетривиальная конструкция, и без четкого понимания одними галками в настройках не обойтись. Вот прямые ссылки на две свежие работы, в которых проблема поднимается: тут[link143] и тут[link144].
В прошлом году я поднимал вопрос добавить возможность прямого соединения на мейллисте Jitsi, но без никакой реакции: это или совсем никому там не интересно, или подавляется принципиально.
Тоже не дождался законченного Торфона и отправился искать похожие альтернативы.
Но в отличие от предыдущего оратора отверг Jitsi, поскольку мне очччень не понравились его некоторые завязки на Google (в моем понимании Google тождественно АНБ, и наоборот).
Поэтому пока остановился на Tox.
Вот только если uTox завелся на CentOS 6.5 с пол-оборота, то Venome (вроде лучший форк) при установке начал ругаться на недостающие зависимости, требуя, как мне кажется библотек от Гнома-3.
Кто-нить победил это?
И как вообще находите этот Tox в плане безопасности?
Допилили таки поддержку Tor[link145]
Так что, Torfon теперь в самом деле не нужен? :-)
Да почему не нужен? Нормальный сабж никогда не помешает. Еще б кроссплатформенный, да для гаджетов..
Гость (29/09/2014 23:57), Гость (30/09/2014 00:08), Семён Семёныч, палишься.
Не нужен в том смысле, что его перспективы всё еще туманны, одни только обещания, а Tox уже обзавелся Tor'ом и называется ToT, который, насколько понял, воплотил себе всё, что нам обещал gegel
Кто-нибудь разбирался в модели безопасности этого Tox? Как-то шифропанково выглядит.
Бегло просмотрел описание криптографии 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 (всего то надо прицепить работу с аудио на нижнем уровне, пример кода у меня есть, но надо пробовать).
Это анализ для гиков. Неплохо бы также растолковать для обычных юзеров – Tox уступает вашему продукту по безопасности, или как?
И не совсем понял, видимо, что-то пропустил – OnionPhone – это ребрендинг TorFone, или новый продукт?
Таки используются ефемеральные ключи[link149] в Tox, но, прочитав три раза, так и не смог понять тонкостей. Буду вникать, описание во истину потрясающее.
ПС: и после этого родители запрещают мне в носу ковыряться? [Вовочка]
Даже не знаю, как и назвать. По протоколу абсолютно несовместим (совсем другая криптография), т.е. разговор между ними не получится. Но все идеи и функции TorFone повторены в OnionPhone. Но в консольном исполнении и на С. Плюс добавлены новые кодеки и оптимизировано аудио под высоколатентную среду.
Это очень абстрактный вопрос, и объективного ответа на него нет в принципе: любые попытки на данном этапе сравнить что-то – не более чем пиар.
А вы попробуйте :) А мы уж сами решим, пиар это или не пиар :))
Пока Gegel'ю в мягкой и доброжелательной форме не указали, что его попытки создания и документации протоколов — ниже всякой критики, то он бы и не подумал что-то там в своём проекте приводить в достойный вид хотя бы по форме.
А теперь он смотрит — у PGPphone Циммермана и у новоявленного токса всё ещё печальнее. Может им ещё это всё предстоит, а может и нет: протокол так и останется на шифрпанковском уровне, пока какой-нибудь теоретик криптографии с академическим бэкграундом не преодолеет брезгливость и не поковыряется в этом, чтобы показать, как оно там легко ломается.
gegel, большое спасибо за обзор!
Это мне больше всего и не понравилось.
Как минимум, в uTox о ней не слова, клиент тупо звонит и общается без показа информации о сессионных ключах.
Программу запустил и с большим интересом потыкал. 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
Не совсем. На первой странице Темы Вам предложили некоторые исправления для английской версии сайта, я тоже решил с этим помочь.
В виде набора кода, реализующего протокол, к которому можно сделать свой UI, или который можно слинковать с каким-нибудь мультипротокольным мессенджером.
Возможно, уже нашли: setsockopt(...SO_REUSEADDR...)?
:) Конечно же, буду весьма благодарен: сам писал, как мог. Что мне для этого нужно сделать?
Об этом сам думал, иначе проект удобен только для экспериментов. Есть ли какие-то стандартные расширяемые варианты UI, или придется изобретать свой?
Да, нашел еще раньше, но при жестком креше вначале не помогало. Но сейчас вроде ОК, буду позже еще тестировать.
Сейчас разбираюсь с кодеками: у меня они упорно НЕ падают. Если будет возможность и время, огромная просьба проверить на вашем билде: после старта программы сначала включить аудио лупбек -RV затем Ввод для активации голоса, и попробовать кодеки ILBC: -C14 и затем OPUS: -C16.
Как только разберусь с кодеками, сразу поправлю остальное.
И огромное спасибо за Ваш интерес к проекту.
Лучше реализуйте и документируйте чистый API, который желающие могли бы импортировать в свой код.
И все же я не до конца понимаю разницу между UI и API.
В данном случае мне кажется оптимальным:
1. реализовать управляющий TCP или UDP порт c возможность передавать через него команды и обратно дублировать выдачу в stdout и цеплять на него GUI или внешний мессенжер (по образцу Tor и Vidalia).
2. реализовать С-функции и хедер с возможностью использовать их, включив С-код OnionPhone в свое приложение (например, в виде so). Тут видится функция отправки строки команды, а вот обратно пока не знаю, как сделать лучше ( с учетом мультиплатформенности): callback можно регистрировать, или через файл в памяти. Если есть варианты, буду благодарен.
Сразу скажу что не разработчик, но понимаю это следующим образом. API – библиотека С-функций, специфичных для приложения, т.е. интерфейс для программиста, а UI – интерфейс для пользователя, сконструированный из этих функций под конкретную задачу. Например в OpenSSL libcrypto и libssl это библиотеки алгоритмов, а openssl – набор утилит командной строки для пользователя, т.е. UI.
Это не библиотека, скорее низкоуровневый UI. Можно сравнить с p2p-клиентами. Например, в Transmission используется сторонняя библиотека libtorrent, её использует демон transmission-cli, слушающий порт, через который пользователь может давать команды, и есть ещё GUI для любителей нажимать кнопки. В rtorrent отдельного демона вообще нет, он интегрирован в консольный UI на ncurses, использует ту же самую библитеку libtorrent (rakshasa).
Взаимодействовать с демоном можно посредством разных клиентов, в порядке роста "юзерофильности":
1. Через командную строку с помощью telnet
2. Через веб-интерфейс с помощью веб-браузера
3. Через специальный GUI на GTK и т.п.
Для каждого из этих способов демон может держать отдельный порт, например в aMule это так. И в нём кстати, кроме GUI-клиента есть ещё GUI-монолит с интегрированным демоном. Но отдельной библиотеки, реализующей протокол ed2k нет, она интегрирована в исполняемые файлы. Для подключения через командную строку вместо telnet используется специальный клиент чтобы автоматически загружать пользовательские настройки, пароль для доступа к демону и т.п.
UPD. Кроме трёх перечисленных способов подключения к демону есть ещё один, возможно наиболее интересный – через консольный интерфейс, по типу почтового агента mutt.
У меня -C14 тоже отказывается падать. -C16 легко роняется, если поперебирать разные значения -Q. backtrace[link150], coredump[link151].
C -C14 разобрался: падает сборка с оптимизацией -o3. Это не столь важно сейчас, т.к. ILBC не особо настолько ресурсоемкий, -o2 вполне работает даже на Celeron 700MHz. По поводу -C16: именно, падает при переборе. В случае постоянного использования кодек устойчив, т.е. скорее всего проблема в моем wrapper (codecs.c), я там немного поизвращался с оригинальной компактной упаковкой OPUS-VBR-фреймов в общий пакет. Отладку затрудняет спонтанность бага. Стараюсь разобраться.
С addkey --help тоже разобрался, конечно: тупо strlen(NULL). Все исправлю одним заходом.
Если можно, вкратце опишите механизм или ткните носом в доку: бегло просмотрел вики mutt, ничего не прояснил.
Наверное не совсем в тему mutt упомянул. Просто имел в виду UI на ncurses, т.е. текстовый UI работающий без X-сервера. Для unix-систем это было бы удобно, но не уверен что подходит в плане кроссплатформенности, чтобы ещё и под Windows работало.
Решение может состоять из следующих частей:
1. C-библиотека, реализующая протокол и ваши алгоритмы
2. Демон, использующий библиотеку и прослушивающий порты
3. UI, из которого осуществляется взаимодействие пользователя с демоном через его порты/каналы/файлы. Варианты UI приводил выше – command-line, ncurses, web-based, GTK-based и т.п.
А зачем демон между библиотекой и клиентами? Это должно защитить от атак на клиентов, как библиотека gpgme, которая запускает gpg в отдельном процессе?
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.
Свобода выбора UI. Например есть программа mldonkey, это просто движок работающий как демон закачки файлов. Такая реализация позволяет существовать целому множеству[link153] разных пользовательских интерфейсов. Такой подход также закладывает потенциал расширения – допускает подключение нескольких клиентов к одному демону, который в этом случае может выполнять функцию VoIP-шлюза. Возможно что для OnionPhone это излишество, решать разработчику. Просто привёл пример как это сделано в p2p-приложениях.
Не занимался разработкой, поэтому вряд-ли обладаю квалификацией для таких советов. Лучше наверное сокет, он двунаправленый и обладает параметрами для настройки. По сравнению с каналом имеет небольшой оверхед, т.к. работает в пакетном режиме, но зато более стандартный способ коммуникации. Приложение работает в основном на локалхосте, поэтому есть смысл опционально использовать unix-сокет. Это безопасней по сравнению с портом, т.к. применяются системные права доступа.
Я всё равно не понимаю, чем хуже разделяемая библиотека. gegel, пяосните, пожалуйста. Для P2P-клиента демонизация в какой-то степени оправдана (пусть компьютер сам раздаёт файлы, пока пользователь спит и не кликает в него мышкой), но OnionPhone она зачем? С моей точки зрения, демон будет лишним процессом, а необходимость сериализации и десериализации команд для него – лишней сложностью. Для поддержания соединения у нас и так есть демон Tor, достаточно к нему подключиться, и связь, можно сказать, уже есть.
Написать свою программу, слинковав её с кодом протокола напрямую, проще, и точек сбоя в этой схеме мне представляется меньше. Свободу выбора UI разделяемая библиотека тоже не ограничивает.
Я совершенно согласен в Вами, и этот вариант рассматривается как предпочтительный, и, конечно, будет реализован. Но хочется максимально учесть возможные ситуации с использованием OnionPhone с другими приложениями.
Надо же как-то ожидать входящие звонки.
Демон – наверное, самый простой способ использования. Продумываю возможность UI в виде вебинтерфейса, использующего WebSocket. Это не совсем знакомая мне отрасль, пока консультируюсь с web-программистом. Со стороны OnionPhone придется держать отдельный порт для подключения браузера и реализовать на С протокол WebSocket. Открывая подготовленный html-файл, имеем GUI и подключаемся к указанному порту, получаем возможность двухстороннего общения с запущенным OnionPhone, кроссплатформенно.
Имхо, это крайнее переусложнение. Согласен с Гостем[link154]: ничего сверх библиотеки для такого приложения не нужно. Ну, будет у Вас демон висеть "для ожидания звонков", а как и кому он будет сигнализировать о поступлении звонка? Так или иначе, должен быть поднят UI. В итоге, демон и UI должны всегда исполняться вместе, что эквивалентно отсутствию демона, как такового. Получается обычное пользовательское приложение, слушающее сетевой порт для приёма звонков. API в виде библиотеки нужен только для свободы в создании графических надстроек, которые для таких задач на порядок проще реализовать на Qt/GTK/ncurses, чем многослойным веб-пирогом.
[off and humor]
Слать сообщение в /var/log/syslog, а умный systemd подключится к современному аналогу устройства /dev/audio и сделает всё остальное.
[/off and humor]
Нигде не утверждалось что это хуже, а наоборот. Демон и библитека могут существовать независимо.
Какие там точки сбоя? Нужен только дополнительный слушающий сокет для управления через UI и поддержка соответствующего ему протокола.
Библиотека к пользовательскому интерфейсу вообще не имеет отношения, это только API для написания движка.
Привильней сказать, демон интегрирован с UI.
Вариантов много – записывать в лог и сообщать список пропущенных вызовов при запуске UI или выдавать их историю по команде. Записывать в канал на STDIN какой-нибудь утилиты для проигрывания мелодии вызова, отправки email или sms.
Как уже отмечалось выше, для создания части UI используется стандартное API, к OnionPhone отношения не имеющее. Но в случае интеграции демона и UI в одно приложение, для создания нового UI нужно будет и демон переписывать, т.к по сути создавать приложение с нуля, имея только библиотеку OnionPhone. Если же он реализован отдельно, то такой проблемы нет. При этом ничто не мешает создать из двух частей монолитное приложение на этапе компиляции, если будет предусмотрена такая опция.
Кстати, в таком случае проще защититься – поместить в chroot демон гораздо легче, чем комбайн демон+GUI, который потянет за собой кучу графических библиотек плюс пробема с общим X-сервером.
Гость[link155], огромное спасибо за pull-реквесты – фиксы моего английского.
Именно так я себе это и представлял, также абсолютно согласен с остальными вашими замечаниями.
Вначале я тоже смотрел в сторону 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) поддерживают стандарт;
– запущенный браузер – раздражитель для параноика.
Браузер в любом случае нужно запускать чтобы по сайтам ходить. Раздражителем является скорей включение скриптов в браузере. Но если telnet-порт будет, то интерфейс можно и на bash-скрипте сделать.
gegel, почта на вашем сайте работает? Проверьте получение, плиз
По проекту Онионфона:
– добавил веб-страничку на сайт[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 видео.
Как получить исполняемый файл из исходного кода? Имею в виду что-то вроде ./configure && make && make install.
См. файл README.md, раздел Compilation: c консоли войти в папку с кодом и просто выполнить make. Конфигурация не производится, т.к. по сути там нечего конфигурировать, кроме как выбор между Windows и Linux, мне показалось проще сделать это в Makefile самому по переменным окружения. Инсталляция не производится, т.к. приложение портейбельное. Предварительно должна быть установлена
libasound2-dev. После сборки запуск исполняемого файла выполняется командой ./oph
Можно использовать и уже собранный пакет (ссылка выше): он статически линкован и в принципе должен работать в любой linux-системе с установленным alsa.
Возможно, уже заметили: новый (commit 4816270ac9601146c6d8e13b777f4efde2ef789c) oph падает при выходе, если оставить голос включённым; backtrace[link161].
Заметил, блин. Только что общался с коммитером (коммитил не я). Он переоптимизировал AMR где-то, сейчас ищет. Но у него не падает, хотя у меня и на Lin, и на Win падает аналогично.
Немного потестировал программу, вот что получилось. Поправьте, если что неправильно сделал. ОС 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 на коммуникатор для разговоров по защищённой связи.
Тут ошибка. Вам необходимо в браузере открыть файл index.html в подпапке web папки онионфона (можно просто перетянуть его мышей на окно браузера, если у вас GUI). Откроется страничка с кнопками и др. элементами управления. Затем запускаете онионфон. На страничке жмете Connect и браузер подключается к онионфону. Мне показалось проще использовать отдельно html-файл вместо интеграции его с онионфоном.
Рабочий там только мой TorChat, и то я включаю его нечасто. Так что надо самому поднять или тестировать с кем-то.
Попробую поднять у себя на сервере.
Вы сами себе ответили. Причина не в том, что онион-адрес недоступен, а в том, что 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 заданный скрытый сервис: в указанном вами каталоге должна появиться папка с файлами, содержащими ваш онион-адрес и секретный ключ к нему.
Распознаватель – нет (за неимением такового).
Изменитель речи (вокодер) – да (уже прикручен). Активируется командой -Q3 для шепота, от -Q20 до -Q100 для робота с различной высотой, отключается -Q-3
Наверное, пока не время над этим думать, тем более что держать VOIP-PSTN шлюз я не собираюсь. Если хотите – сделаю.
Я так понимаю, ркчь идет о сборке под Андроид. Да, планируется, работа вместе с Orbot. Для начала соберу .so в NDK, сразу отпишу результат.
PS:
Восклицательный знак вначале не нужен (это использовалось в SpeakFreely и тут озвучивалась критика. Я сделал так, как рекомендовали).
Суффикс .onion также не обязателен. Т.е. так:
-Oiyrqp2pt7qfrw6xu
Да, поменял порт в опции Tor_interface и сообщение уже другое "! Hidden Service unavaliable", что по-видимому означает отсутствие онионфона на удалённой стороне.
Заметил, что онионфон блокирует доступ к аудио устройству для другого онионфона, даже запущенного с правами того же пользователя. Обнаружил это, когда создал второй скрытый сервис, чтобы позвонить самому себе. Т.е. если один oph запущен, то при запуске второго выдаётся ошибка
Не уверен что это правильно, т.к. может существовать необходимость держать несколько скрытых сервисов онионфона. Кроме этого, блокируется доступ для других аудио приложений, в моём случае это mplayer. При этом, если oph не запущен, разные процессы mplayer могут запускаться независимо, звук в наушниках просто смешивается. При запущенном mplayer онионфон не запускается, наверное из-за невозможности захватить единоличный контроль над аудио устройствами.
При использовании искажений речи остаётся ли возможность идентифицировать говорящего?
Насколько понял из описания, если после -O указать не адрес скрытого сервиса, а реальное имя или IP-адрес, то это аналогично -T, но только через Tor, т.е. обычное TCP-соединение через Tor. Есть ли в этом случае дублирование потоков по разным цепочкам для улучшения качества связи, как в случае разговора между двумя скрытыми сервисами? Ведь приёмник не сможет создать обратный канал, т.к. инициатор не имеет своего IP-адреса. Он виден не как скрытый сервис, а как эксит-нода, которая не принимает входящие соединения.
Это м.б. проблема алсы, пульсы, драйверов карты или каких-то настроек аудио. Такое встречается и в других программах.
С другой стороны, так может произойти и утечка аудио с системы посторонним пользователям.
Если бы причина была в алсе или драйвере, то несколько экземпляров mplayer не могли бы независимо существовать.
Такое возможно, но проконтролировать это реально фильтрацией на localhost. Из всех членов группы audio только онионфон должен имееть доступ к Tor, а напрямую в сеть никто из них не может выходить.
Да, именно так. Причем сам HS может быть задан в вашем Tor, но онионфон не запущен (нет слушающего порта). Разделить эти ситуации не представляется возможным.
Да, есть такое. Я использовал модуль alsa на самом нижнем уровне, открываемое устройство plughw не расшаривается. Но в файле audiocfg в строчках 2 и 3 можно указать другое устройство соответственно ввода и вывода аудио, в т.ч. и расшариваемые (например, интерфейсы, представляемые pulse audio). К сожалению, я недостаточно фамилярен с линукс и даже не могу конкретно подсказать, как вывести список имеющихся в системе устройств, и их свойства. Если получится расшарить, сообщите.
Что касается виндоус, то в ней я вывожу список на старте, и по умолчанию используется расшариваемое устройство 0: программа переназначения звуков. Выбрать другое устройства из списка можно, указав в том же файле audiocfg в строчках 2 и 3 перед двоеточием нужные номера в списке.
Об этом писалось многократно: да, остается. Возможность идентификации определяется объемом доступного образца-оригинала, измененного голоса и допустимой вероятностью ошибки (альтернативной гипотезы). Используется, например, скрытая модель Маркова. Если развивать мысль, то стилометрия – частный случай голосовой идентификации полностью биометрически обезличенного голоса (Speech-to-Text-to-Speech).
Да, верно. Опция -O заставляет онионфон соединиться с Tor и через SOCKS5 в неизменном виде передает ему строку после -O в качестве адреса назначения. Никакого ресолвинга доменного имени прямо не производится.
Нет, дублирования нет (хотя теоретически возможно). Для установки встречного соединения используется немного другой механизм. Алиса подключается к Бобу через Tor, устанавливает шифрованное соединение и затем передает Бобу свой адрес. Боб пытается соединиться с указанным адресом, при этом выполняется дополнительная аутентификация (подобно TorChat). Причем Боб устанавливает встречное соединение только в случае, если входящее соединение пришло с HS (с 127.0.0.1). Я намеренно ввел эту проверку для безопасности: даже в случае HS-HS безопасность встречных цепочек спорна, не говоря уже о наличии открытых участков, по которых идут совершенно одинаковые пакеты (дубли) на обоих концах. Как верно заметил ZAS, по уму надо бы использовать для этого разные ключи и паддинг, но пока что вот так.
Но не пойму смысла в использовании соединения Tor-Inet вместо Tor-HS. Сначала я думал, что латентность будет меньше (цепочка короче), но практика показала обратное. Соединение к HS существенно качественнее (наверное, Exit-ы подводят).
PS: согласно с озвученным ранее планом переписал протокол IKE и оптимизировал загрузку процессора. Сейчас тестирую, чтобы опять не выдать глючную сборку. Кстати, текущая статически линкованная версия имеет ошибки в кодеках AMR (валится на выходе) и OPUS (на старте), внесенные другим коммитером в процессе оптимизации кода. На github давно пофиксино. Бинарники на днях (после теста) заменю на новые уже V02a вместе с документацией (не совместима по IKE, все криптографические подробности внесенных изменений и их обоснования будут в релизе): добавлена wPFS к защите ИД инициатора, исключена возможность зондирования на предмет наличия контактов в записной книге, добавлена защита от тайминг-атаки и т.д.
aplay -l
arecord -l
Спасибо, после дополнительного насилования google вроде как получилось. Для использования alsa-интерфейса, представляемого установленным pulseaudio (этот интерфейс назначается по умолчанию) изменил строчки 2 и 3 в файле audiocfg онионфона на
plug:default
Заработало параллельно с аудиоплейером через pulseaudio (в Ubuntu). Если с точки зрения безопасности предпочтительно монопольно захватить аудиоинтерфейс на нижнем уровне, оставьте как было:
plughw:0,0
Похоже что знак комментария # в этих строках 2 и 3 не работает. Т.е. если их закомментировать и дальше указать другие устройства, всё-равно будет использоваться plughw:0,0. Только при замене этих строк на plug:default устройство расшаривается.
В опции TCP_interface указывать порт, отличный от 17447, бесполезно. Порт появляется, но скрытый сервис не доступен. Пытался звонить с одного онионфона (порт 17447) на другой (порт 17448), оба на локалхосте. Выдаётся сообщение "Hidden Service unavaliable". Если звонить в обратном направлении, то соединение устанавливается, предлагается нажать Enter для приёма вызова, но звука нет.
Если звонить самому себе, т.е. когда вызывающая и принимающая сторона – один и тот же скрытый сервис онионфона (порт 17447), появляется сообщение
и звук также отсутствует. Или может проблема с кодеками на x86_64?
Если звонок самому себе делать с онионфона на другом порту (17448), то опять "Hidden Service unavaliable".
Знак работает, но для упрощения я жестко привязал параметр к номеру строки (ничего не бывает так постоянно, как временные меры). Поэтому в случае, если строки 2 и 3 (считая с первой) закомментировать, то используется plughw по умолчанию, не зависимо от дальнейших параметров.
Честно, я не проводил таких экспериментов на одной машине: у меня достаточно недорогих компьютеров с разными ОС для таких целей. Но по вашему описанию не смог понять, сколько экземпляров Tor у Вас запущено и сколько HS поднято. В принципе, можно запустить один Tor, но HS в любом случае должно быть два, и они должны быть на разных портах (например, 17447 и 17448). Ну, и в conf.txt обоих онионфонов должны быть прописаны соответствующие порты TCP-слушателей.
Что касается звука, то не могу сказать причину, но точно знаю, что статически линкованный бинар работает на x86_64, и что собирается корректно на этой платформе в gcc в режиме 32.
Уточните, работает ли тест звука (без соединения) на онионфоне? Если да, то с кодеками все ОК. Попробуйте также lpc10 или celp выбрать: с ними точно все ОК было.
Новая сборка практически готова, надеюсь, завтра представлю.
И сразу попробую собрать и поднять у себя на сервере (на HS) эхо-вариант, автоматически принимающий входящие, декодирующий полученные звуковые пакеты, кодирующий в AMR и отправляющий обратно. Задержка, конечно, будет двойная, но для оценки достаточно.
тор разумеется один, HS – два. Но существенно не это, а то что невозможно дозвониться до онионфона на нестандартном порту.
Как тест сделать, просто в порт (17447) звук направить?
Напишите, как собирали для Linux 32-бит. Пробовал
выдаётся ошибка
Я собираю make, т.к. у меня платформа 32 бит. Как отписал мне коммитер, переделавший сборку, в вашем случае собирать так:
Проверю, пока не могу ничего утверждать.
Надеюсь, в torrc так:
в каждой из папок Tor-ом будет создан файл hostname, где находится онион-адрес каждого из HS.
Запустите онионфон и выполните комманду -RV. (Если используете Web-GUI, то подключитесь и установите флажок голосового теста). После этого передача включается/оключается нажатием клавиши Ввод или удержанием клавиши Tab. В Web-GUI – ужержанием кнопки "Раговор/пауза".
ПС: Обратите внимание: после установки соединения режим передачи отключен! Для получения голосовой связи оба абонента должны нажать Ввод или удерживать Tab.
ППС: до меня дошло – вы пытались тестировать 64-битный бинар? Забудьте, я вообще не понимаю, как он мог работать. Позже дойдут руки и до 64, но пока что я по глупости (по аналогии с разницей 16 и 32) посчитал, что тип int в 32 и 64 разный, а long – одинаковый (32). Оказалось в точности наоборот. Кроме того, надо перепроверить всю арифметику указателей. По уму такие штуки надо держать в уме еще на этапе проектирования, но я тогда о сборке на 64 вообще не подумал. Позже поправлю, но сейчас даже не стоит и пытаться так собирать.
Собирайте в 32-битном режиме, он будет корректно работать и на 32, и на 64 платформе.
С указанными опциями для 32 собирается на 64, хотя и не без труда. Пришлось установить библиотеки glibc, libgcc и alsa-lib для архитектуры i686. А для расшаривания звуковых устройств требуются также библиотеки alsa-plugins-pulseaudio и pulseaudio-libs, тоже для i686. Кстати, не уверен, что для готовой сборки на 64 можно будет обойтись без последних зависимостей (и тех от которых они сами зависят).
Звонить с одного локального HS на другой получается, качество хорошее, искажения речи тоже работают. Но проблема с дозвоном на онионфон на нестандартном порту остаётся, и было бы странно если бы это зависело от платформы.
В общем программа на Linux x86_64 рабочая и в принципе решает проблему безопасного голосового общения посредством Tor. Для более простой установки лучше чтобы нормально собиралась на 64-битной системе. По-моему мнению, имеет смысл довести до ума движок, а не тратить силы на GUI. Если получится законченный демон с продуманным командным интерфейсом, может кто-нибудь поможет в написании GUI.
Вот за что я люблю Виндоус...
ОК, поправлю: скорее всего, где-то жестко прописал 17447 и опустил из виду, когда лепил конфигурирование.
Этим сейчас товарищ и занимается.
На сколько я в курсе (сам не пробовал), статически слинкованный на 32-битной платформе бинарник работает на 64-битной платформе без дополнительных зависимостей. Как будет готова V02a, соберу и представлю в пакете. По идее, достаточно будет разархивировать и запустить (по аналогии с TBB).
А этим как раз сейчас я занимаюсь. Тестирую, убираю мелкие баги и т.д. Пока релиз V02a чуть отложил из-за бага в верификации онион-адреса отправителя (не запускалась автоматически на старте после изменения в IKE), поправил, сейчас тестирую.
Это было, скажем так, временное шатание. Если и тратить время, то на Qt-версию TorChat GUI, в которую встраивать онионфон + видео.
Собранный мной бинарный файл тоже работает с дефолтными настройками. Но если указать plug:default в audiocfg, то при запуске oph выдаст сообщение об ошибке. Чтобы расшарить звуковое устройство, т.е. пропускать через pulseaudio, а не напрямую, нужна соответствующая библиотека, которая при сборке не используется.
Многим приверженцам анонимности запускать готовый бинарник религия не позволяет. Самая лучшая установка это 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 можно в один файл объединить).
Разве представляет какую то сложность наклепать пару формочек с кнопками?
Да, нужен alsa-plugins-pulseaudio, эмулирущий alsa-интерфейс (используемый онионфоном) на установленном в системе pulseaudio. Но это в любом случае, не зависимо от сборки в 64 или 32. Многие программы (особенно более старые, не работающие напрямую с pulseaudio) используют такой подход.
Работаем над этим, думаю, все будет.
Есть такое, и я пока не могу сказать, как это побороть. Дело в том, что я переключаю консоль в raw-режим для возможности перехвата стрелок с целью навигации по меню, Tab в качестве тангенты (иначе удержанием не получится). Без ncurse пришлось извращаться и писать собственную обработку сырых кодов клавиш. Конечно, можно это отключать (тогда не будет работать тангента и консольное меню, но будет кириллица), подумаю.
Через GUI киррилица, кстати, проходит (браузер кодирует строку в юникоде, и с него же отображает). Но максимальная длина строки вдвое меньше – 126 символов вместо 252 в латинице.
Торчат де факто стандарт анонимного месенжера, им пользуются множество людей. Поэтому совмещение уже распиаренного торчата с онионфоном – единственный способ добиться популярности последнего. Хотя протокол Торчат не лишен недостатков, в первую очередь в том, что он нешифрован, во вторую – держит открытыми по 2 сокета на каждый контакт, что требует значительных ресурсов памяти.
Поправлю. Заодно посмотрю проблему с нестандартным портом. Надеюсь, при дозвоне на нестандартный порт вы его явно указывали после адреса через двоеточие:
Не совсем понял, что сделать: отдельно в текстовом файле описание комманд или же смысл параметров в conf.txt?
См. oph.pdf, раздел 5.3.Sound management: управление авторегулировкой усиления микрофона и подавителем шумов
Наверное, скорее так (если исходить из особенностей обработки в LPC-транскодере):
шёпот=робот, низкие=высокие
Шепот и робот содержит меньше исходной информации о голосе, чем низкие и высокие. Но субъективно лучшим вариантом мне показался шепот.
Это противоречит принципу портейбельности: все мои программы принципиально не лезут за пределы своей папки, ни на запись, ни на чтение.
Ну да, а кое-кому даже очень помог :). Хотя опционно лог можно сделать, но опять же в папке онионфона. Учту.
Уже сделал, будет в V02a. Так и планировалось, просто забыл.
Спасибо за тщательное тестирование. Если в процессе заметите еще баги, или будут еще пожелания, буду весьма благодарен и устраню/добавлю при первой же возможности.
При таком подходе – нет, но вот наклепать так, чтобы потом меня не материл каждый пользователь – наверное, да. Web-GUI я делал на скорую руку, и уже сейчас мне за него немного стыдно, хотя это всего лишь тест.
Если пользователь укажет опцию plug:default, то ваша готовая 32-битная сборка oph_lin.zip без установки 32-битной версии этой библиотеки (libasound_module_pcm_pulse.so) работать не будет. На 64-битной системе эта библиотека как правило уже установлена, но тоже 64-битная.
Упустил этот момент, с указанием порта через двоеточие работает.
Стандартые комментарии, принятые в конфигурационных файлах. Как например в файле gpg.conf, созданном после первого запуска gpg.
Такое вряд ли возможно, если только вы специально не подготовите для онионфона окружение chroot. Ваша сборка и читает и пишет в фс. Во-первых, использует разделяемые библиотеки
Во-вторых, наверное пользуется системным резолвером и читает /etc/resolv.conf при прямом дозвоне не через Tor (предполагаю что своего у онионфона нет). В третьих обращается к звуковым устройствам. В-четвёртых, читает /etc/passwd и /etc/group, т.к. даже для файлов в каталоге онионфона установлены системные права доступа. В-пятых, использует настройки времени /etc/localtime. Может что-то ещё.
Не обязательно всё протоколировать, достаточно записывать непринятые вызовы, чтобы знать кто звонил.
Я почему-то считал, что 32-битный статически линкованный бинар должен работать с 64-битной системой, в т.ч. библиотекой эмуляции alsa для pulse: онионфон использует лишь интерфейс, и по идее он должен бы быть универсальным. Но проверить не могу – сейчас нет подходящей платформы.
ОК, напишу.
Несомненно, в такой интерпретации Вы правы. Я имел в виду – явно не пишут/читают конфигурационные файлы.И все же мне не хотелось бы выносить конфиги и логи за пределы папки, т.к. я рекомендую к использованию TC-контейнер.
Я не особо фамилярен с линукс, хотелось бы знать, какие следы ониофон оставляет при запуске, скажем, с флешки.
Кстати, ресолвер я могу прикрутить и свой на нижнем уровне (UDP) через 8.8.8.8, если это что-то дополнительно даст в плане безопасности.
ОК, сделаю.
ПС: По поводу вашего замечания: пожалуйста, перепроверьте установку кодера по умолчанию в параметре VoiceCodec в conf.txt. У меня все работает. Обратите внимание: в этом параметре указывается кодер (для исходящего аудиопотока). Декодер же используется в зависимости от актуального входящего потока (задается противоположной стороной). Причем кодер и декодер могут использоваться разные. Получатель не может выбрать декодер сам, разве что попросит абонента переключиться.
заметил в последнее время увеличение ping 8.8.8.8 в 2 раза.
При такой постановке вопроса, ничего существенного. Проверяется поиском файлов, которые менялись за последние, например, 3 минуты
Можно опцию -mount добавить, чтобы исключить поиск в примонтированных фс. Меняется время модификации каталогов /tmp/{.esd-PID,pulse-XXXXXX}. Если при запуске oph выводились предупреждения, то добавляются записи в других журнальных файлах (/var/log/{messages,Xorg.0.log} и т.п.). Если используется sudo, то остаётся запись о запуске oph в /var/log/secure.
Вряд ли это хорошая идея – дублировать существующее решение, ещё и с привязкой к сервису google.
Может я не замечаю изменение кодека на слух, но независимо от того, какую цифру указываю для VoiceCodec, команда -C? выдаёт одно и тоже
Изменить можно только командой -C в запущенном онионфоне.
Какой кодек лучше или безопасней использовать – LPC10?
При тесте звука -RV отображается кодек, соответствующий значению VoiceCodec, значит кодек видимо меняется. Но вывод команды -C? вводит в заблуждение.
Понял: не инициализируется переменая на старте. Поправлю.
В сборке 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 по криптографии: тщательно выверить возможность утечек памяти и использовать защищенное выделение памяти для критических данных (ключи, пароли, сесионные секреты и т.п.).
Обновил пакеты с бинарниками на сайте проекта[link162]. Пофиксины кодеки, теперь все они корректно собираются на 64 бит (спасибо коллеге, все же есть талантливая молодежь и из наших вузов). Также улучшено быстродействие за счет индивидуальной оптимизации кодеков.
Ближайшее ToDo:
– Пофиксить крипто, транспорт и пакетайзер, и можно будет собирать весь проект на 64.
– Ну, и безопасность кода отдельно для Windows и Linux, в т.ч. контроль эффектов оптимизации.
На сайте проекта[link162] термин несколько озадачивает – то ли там используется Java, то ли JavScript :)
Используется именно JavaScript. Но не в проекте. Собственно, онионфон написан на чистом С. Он может быть запущен в виде демона, управляемого через контролирующий TCP-порт. Одним из протоколов, используемых для управления демоном (отсылки на него команд и получения ответов и уведомлений) является протокол WebSocket[link163]. В качестве клиента выступает любой браузер, в котором открыта специально созданная HTML5-веб-страница с элементами графического интерфейса (кнопки, флажки...) Для обеспечения функциональности этих элементов как раз и используется нативный JavaScript, поставляемый в виде отдельных js-файлов вместе с html-файлом страницы и исполняемый в браузере. К Java это никакого отношения не имеет.
gegel, мне тут пришло в голову: у нас нет ни одного открытого протокола общения, который бы удобно гарантировал надёжную доставку сообщений. Самое близкое – опциональный XEP в Jabber, сигнализирующий, что сообщение было доставлено. В результате если видишь, что человеку не приходят сообщения, а потом он пропадает из сети, приходится перекопировать все эти недоставленные сообщения вручную.
Если планируете поддерживать возможность обмена текстом в onionphone, насколько сложно было бы приделать к нему эту функцию? Очевидно, что придётся содержать базу хэшей доставленных сообщений и время от времени её сверять. Звучит нелегко.
Возможность чата реализована: после установки соединения набираете в консоли текст, жмете Ввод, и текст отображается в консоли абонента (максимальная длина строки 252 символа) Ввод кириллицы не поддерживается, но при использовании веб-интерфейса браузеры кодируют строки в UTF8, поэтому кириллица проходит с максимальной длиной строки 126 символов.
Это, скорее, относится к серверным решениям (потеря может быть на сервере) и p2p UDP-решениям. Онионфон использует p2p TCP, а этот транспорт безпотерьный по определению.
Но Вы неожиданно обратили мое внимание на другую, скорее противоположную, проблему. Немного о шифровании в онионфоне:
Ониофон работает с шифропакетами, пакуемыми в TCP-поток. Каждый пакет содержит нешифрованное поле типа (длины пакета), шифрованное тело и МАС. На обоих сторонах организованы синхронные счетчики пакетов, принимающие участие в шифровании: для каждого пакета sponge абсорбирует ключ, счетчик и флаг инициатора, затем выжимает гамму. После ксора считается МАС: новый sponge аналогично абсобирует ключ, счетчик, флаг инициатора, затем шифропакет, и затем выжимает МАС. После отправки пакета счетчик продвигается вперед. Если МАС на приемной стороне не совпадает, то пакет отвергается, а если все ОК, то их счетчик синхронно также продвигается вперед (назад – никогда). В UDP я предусмотрел синхронизацию (в каждом пакете в открытом виде передаю 7 младших бит счетчика, что дает возможность восстановить актуальный номер счетчика – только вперед!-на приемной стороне при потерях). Но в TCP я это не использовал, понадеявшись на безпотерьность транспорта. Но не учел возможность спонтанных искажений в канале: если МАС не совпадет, пакет не зачтется и сбой синхронизации счетчиков будет фатальный.
Ваша функция с гарантией доставки как раз полностью обеспечивается (при любой потере или искажении сообщения связь будет неизбежно прервана). Но я пару раз во время тестирования наблюдал ситуацию спонтанного сбоя в обычных условиях с серией последующих сообщений "Lost crypto synchronization, trying to restore..." и разрывом соединения. А вот восстановление для TCP я как раз и забыл доделать. По уму надо бы при получении серии неверных пакетов пробовать подгонять счетчик вперед, предполагая предыдущие пропуски. Уведомления о неверном (и потерянном) пакете будет достаточно, незачем рвать соединение.
Исправлю.
Подскажите, как соотносятся TorFone и OnionPhone?
Это разные проекты, или TorFone просто заброшенный проект, а OnionPhone его продолжение?
Непонятно чем надо пользоваться
Ответ уже был тут[link164].
И еще в самом начале описания[link148] об этом упоминается.
Просто TorFone -это был первый блин, и хоть и не совсем комом, но возможности для совершенства были значительные. Не утверждаю, что онионфон – это идеал, но все же к его релизу опыта уже побольше.
Фактически онионфон сейчас в стадии альфа-тестирования, официального релиза и беты пока нет.
Листал, листал этот топик, но так и не понял – где же страничка для быстрого старта, эта, что ли?
http://torfone.org/onionphone/indexru.html
Приношу извинения: в описании это действительно с первого прочтения понять трудно. Обязательно переделаю.
Конечно же, нет. Онионфон – приложение, работающее локально, и абсолютно не зависящее от внешних факторов (серверов и т.п.). Однажды скачанное (собранное) приложение никогда не сигнализирует о себе куда-то, не апдейтится, не может управляться извне, и не может быть блокировано (будет работать, пока работает Tor).
Для управления онионфоном из браузера необходимо открыть браузером файл indexru.html, находящийся в папке web пакета онионфона. (Запустите браузер и перетяните на него мышью указанный файл.)
Жмите Connect на открывшейся в браузере страничке. Если онионфон запущен, то браузер подключится к нему и Вы сможете управлять ониофоном из браузера, используя графические элементы.
Разобраться с управлением помогут всплывающие подсказки (потом их можно отключть).
Заметьте: выполнение JavaScript в браузере должно быть разрешено. Загруженный html-файл не "лезет" в интернет, использует только скрипты из js-файлов в папке web. И html, и js легко проверяются на отсутствие опасных элементов и инициализаторов внешних соединений. Браузеру нужен лишь доступ к localhost:8000, остальное можно запретить.
ПС: адаптировали код к сборке в 64-битных системах, тестируем.
Простите, все равно не понял :( Вот на гитхабе лежит код, описание на английском, что с ним делать – непонятно.
Дальше: так надо запускать TorChat, или Онионфон работает самостоятельно?
Вот у меня Windows XP/32, у приятеля какая-то Федора, скорее всего тоже /32, что нам нужно пошагово сделать, чтобы говорить по Онионфону через Tor?
Простите на настырность ;)
Собственно, нужен Tor в любом виде: в составе Торчата, Тор-браузера или отдельно. Сам по себе Торчат не обязателен, только лишь для удобства видеть онлайн-присутствие абонентов.
Прежде, чем расписать пошагово, уточните: есть ли у Вас и у Вашего приятеля Тор-браузер? Можете ли Вы найти и редактировать конфигурационный файл torrc? Я сам не совсем в курсе, где он локализуется в современных сборках TBB.
Просто тяжело определить, с какой степенью детализации необходимо расписывать: с одной стороны, чтобы все было понятно, а с другой – чтобы не показалось, что я Вас недооцениваю :).
Спасибо за деликтность :)
Да, TBB присутствует, и частенько редактирую torrc
TBB в Виндовс можно проинсталлировать куда угодно, и torrc может находиться например здесь:
C:\Program Files\Tor Browser\Browser\TorBrowser\Data\Tor\
[off] забавно получилось, как будто от слова деликт[link166] [/off]
Ох уж эти знатоки римского :)
Последовательность действий для быстрого начала работы
(без компиляции и без использования 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. Используем графические элементы в окне браузера для управления онионфоном. Наводим мышью и получаем всплывающие подсказки.
Если что-то непонятно, или что-то пошло не так, пишите, чтобы у нас была обратная связь.
Спасибо вам огромное! Ну, щас
споюпопробую и отпишусь всенепременно!Может, будет учтено в ваших доках.
Первые ласточки ;)
Дошел до п.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
Должен быть какой-то звук? Но его нет :(
И включите свой TorChat, плиз
Сорри, текст срезался буфером – правильно так:
В-общем, тестового звука нет, поэтому перешел на п.12.
Насколько понял, для управления OP здесь уже используется не TBB, а какой-нибудь другой обычный браузер.
Ок, связался ним с OP, вижу красивую страничку с цветными кнопками.
А что дальше делать, куда вводить ID абонента, грубо говоря – чего нажимать – непонятно :)
И попутно из прочтения возник вопрос: OP только в симплексе работает?
Маленькое замечание: после запуска OP в консоли и выдачи на экран нескольких команд попадаем в неопределенность, т.е. непонятно, где находимся.
Так может стоит в режиме запуска OP сделать некоторое понятное приглашение?
# и $ уже заняты, может % и т.п.
Выход из OP сообразил – Ctrl-C.
Судя по сообщениям, звуковая система инициализирована.
Я имел в виду, что после активации режима теста (-RV <Enter>) надо нажать <Enter> еще раз для включения дуплекса.
Попробуйте, если получите голос, продолжим.
В дуплексе и в полудуплексе (симплекс не позволяет перебить собеседника, а полудуплекс всегда готов принять сообщение от собеседника, даже в момент передачи).
Ctrl-C – более жесткое завершение. А двойное нажатие Esc – с чисткой памяти (при опасности).
Я не стал это описывать пока, т.к. там есть всплавающие ярлычки-посдказки. Кстати, при нажатии на Connect браузер подключается к Онионфону? Если да, то пойдем дальше.
Это место совершенно непонятно: Для чего включать дуплекс? Какой голос должен быть услышан – зуммер или свой голос с микрофона?
Кажется, приспособился: после "еще одного нажатия" Enter не сразу, а так секунд через десять, стал приходить свой голос с микрофона – это нормально?
Даже секунд через 30
Да, подключается – в окне логов появляется сообшщение "CONNECTED"
И вопрос: команды -RV и другие – они регистрозависимые?
Это не нормально, разберусь с этим. Скорее всего, какая-то адаптация авторегулировки усиления. Но важнее другое: задержка своего голоса должна составлять около полсекунды на кодеке AMR (он включен по умолчанию). Выдерживатеся?
Команды регистрозависимые, используются только заглавные буквы и цифры.
Ну и хорошо. Поводите мышью над элементами, почитайте подсказки для начала.
Счелчком по плюсикам внизу страницы открываются дополнительные разделы настроек. Манипуляции с элементами управления аналогичны посылке команд онионфону. Например, в разделе "расширенные настройки звука" установка флажка "Тест голоса" аналогична -RI, а снятие его – команде -R.
Ввести команду вручную можно в строку "Команда" и нажать в конце <Enter>. В эту же строку можно ввести просто онион-адрес и нажать кнопку "Вызов", при этом будет выполнена попытка дозвона по указанному адресу.
В остальном там вроде как все понятно, спрашивайте, если не ясно.
ПС: возвращаясь к непредвиденной задержке в начале голосового теста, хотел уточнить, какую версию Вы используете – статически слинкованный бинарник по ссылке выше или же скомпилированную текущую версию с github?
Я же и сказал: задержка своего голоса при тесте с кодеком AMR составляет до 30 секунд при дефолтовых установках.
Поэтому вначале и подумал, что программа не работает, т.к. не догадался, что задержка может составлять такое большое время, и видимо, обрывал тест раньше этого времени.
Что до управления через веб. Конечно, все подсказки вижу. Но поймите меня, обычного юзера: мало читать эти подсказки, надо еще понимать, для чего эти органы управления и каким образом нужно использовать. Поскольку непонятно, какой смысл в них заложили.
Иными словами – нужен алгортим действий пользователя для установления связи, поскольку эта "кабина Боинга-707" интуитивно совершенно непонятна. По сравнению, например, с uTox – там никаких вопросов не возникает. И кстати, он даже работает через Tor, причем почти без задержкк, но звук получается прерывистый и хитрый.
Верисю использую ту, которую скачал по данной Вами вчера ссылке.
Папка с OP называется oph01a_051114
Уажаемый Gegel, было бы очень здорово, если бы в будущем вы довели пользовательский интерфейс OP до интуитивнопонятного юзабельного состояния. Например, как в uTox – почти иделал понятности без подсказок.
И тогда многие дурацкие вопросы, включая да, и мои, отпали бы, а курс пользователей расширился.
Вы хотите сказать, что слово, произнесенное Вами, звучит через 30 сек? Это вообще из области фантастики, в онионфоне нет такого размера буфера. Попробовал у себя – есть проблемы с PulseAudio в плане задержки. Закомментируйте строки в файле conf.txt
AudioInput=plug:default
AudioOutput=plug:default
и раскомментируйте
AudioInput=plughw:0,0
AudioOutput=plughw:0,0
Онионфон будет использовать вашу аудиокарту непосредственно на нижнем уровне. Так оно и безопаснее, но другие устройства не смогут писать/проигрывать звуки во время работы онионфона.
Я постараюсь когда-нибудь это сделать в виде графического интерфейса на Qt с двумя большими кнопками: зеленой и красной, как в старом мобильном телефоне. Думаю, Tor тоже должен идти в комплекте, но не представляю, как быть с его постоянными обновлениями. Но, с другой стороны, пользовательская аудитория Онионфона изначально специфическая, не думаю, что это всем понравится.
Гм, так по дефолту они так и были, т.е.:
Да-да, обязательно две кнопки, и непременно большие, чтобы не промахнуться! :))
Что до Tor, то думается, опору на TBB можно вполне оставить, ведь с его установкой справляется самый обычный юзер. Зато бонусы от него – свовременная обновляемость и т.п. бесспорны.
Сорри, увидел свою ошибку в строках, исправляю
Извиняюсь, получил новые уточненные данные:
– при дефолтовых аудионастройках (программное управление) запаздывание голоса соствляет 6 секунд;
– при аппаратном управлении звуком запаздывание составляет десятые доли секунды, голос в наушниках следует практически сразу за микрофоном, как быстрое эхо.
Раньше запаздывание голоса составляло 30-40 секунд видимо из-за того, что был включен Pidgin и Jitsi.
Отключил сначала один, затем и второй, и получил вышеказаные данные.
Гослос, правда, очень глухой – это из-за 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.
Правим.
Гарнитура хорошая, по ней другие мессенжеры работ звонко.
Здесь же даже при SILK звук заметно глуховатый.
Может, в Скайпе искусствено поднимаются высокие?
Попробовал вокодеры от -Q30 до -Q150.
Да, голос не узнать, но и слова тоже не разобрать :)
Хорошо. Что же дальше? Мы остановились на алгоритме действий пользователя по Веб-интерфейсу для проведения связи.
И можно ли сделать команды регистронезависимыми? Будет намного удобнее.
Можно, конечно. Записал на будущее.
Проведение связи: (считаем, что пп.1-14 коммента[link167] выполнены).
Вставляем онион-адрес абонента (без суффикса .onion) в строку "Команда" и жмем кнопку "Вызов". Видим, что онион-адрес преобразован в команду (добавлен -O). Жмем кнопку "Вызов" повторно, ждем соединения (ход соединения отображается в поле лога).
После установки соединения слышим вашего собеседника. Для передачи жмем-отпускаем кнопку "Речь-пауза" в режиме полудуплекса. Для активации дуплекса жмем эту кнопку и, не отпуская мышь, убираем указатель с нее, затем отпускаем. Онионфон остается в режиме передачи и приема (дуплекс).
Можете позвонить сейчас мне, я как раз тестирую: gegelcy5fw7dsnsn
Разговарием с приятелем- класс!!!
Задержка конечно агроменная, но можно приспособиться.
Я только что разговаривал – пинг около 600mS. Жмете кнопку "Пинг" для получения. Жмете кнопку "Инфо" для дополнительной информации.
Если уж совсем напрягает, используйте полудуплекс. Звуковой сигнал по окончанию передачи избавляет от необходимости произносить слово "Прием". Если жать лень, можете включить голосовой детектор (кнопка "VAD"). В этом случае передача активируется только при Вашем разговоре. Но для исключения срабатывания от голоса собеседника нужна гарнитура на обоих сторонах. И, возможно, придется подстроить чувствительность микрофона средствами ОС. Детектор отключается при нажатии кнопки "Речь/пауза".
ПС: попробуйте так же переключиться на прямое UDP-соединение (оба должны нажать кнопку "UDP"). В новой версии пока глючит, но в старой может работать. Возврат в Tor – нажатием кнопки "Tor" любым участником разговора.
Следующим этапом пойдет работа с ключами, разные виды аутентификации и защиты.
Да – оказалось что большая задержка была обусловленна "программной" настройкой своего аудиоканала.
Суммарная задержка звука состоит из задержки в сети Tor, в буфере OP и аудиканале, и оказалось, что моя аудикарта&драйвер вносит наибольшую лепту.
Высставил "аппаратное" управление аудиоканалом, т.е.
и задержка стала очень даже небольшой, разговаривать стало совсем комфортно!
Все эти достижения по следам общения с автором проекта :)
А то, что разговор начинается после второго нажатия на <Enter> – это действительно очень правильно! Не ляпнешь чего нибудь ненужного :)
Круто. Как руки дойдут, надо будет тоже заценить.
Да, вот что мануал животворящий делает! :)
Теперь совсем другое дело, даже в консоли можно вполне сносно общаться.
И сразу вопрос по ней: в ней "забиты" предопределенные команды, и только? Потому что она не запоминает вводимые юзером команды, включая вызов собеседника по -O
И теперь по связке OP & TorChat.
Если судить по https://github.com/prof7bit/TorChat, то развитие программы остановилось 3 года назад. Между тем развитие сети Tor активно продолжается.
Как влияет "отсталость" TorChat на функционирование и безопасность OP?
Еще случайно обнаружился форк под названием JTorChat, хотя тоже староват:
https://github.com/jtorchat/jtorchat
зацените, пожалуйста, его пригодность для OP.
В свете этих успехов меня заинтересовал симбиоз OnionPhone и Raspberry. Как думаете, взлетит?
По следам нашего вчерашнего сеанса, и моих тестов перед этим: адаптация к каналу таки происходит, уже через 5-10 минут разговора задержка уменьшается (отмечается пинг 300-400 мсек вместо 600-800 в начале). Это практически граничит с режимом комфорта и где-то эквивалентно задержкам в геостационарных спутниковых системах или в VOIP через GPRS.
Я даже не знаю, как и ответить. Дело в том, что консоль в онионфоне реализована совсем нестандартно. С целью использовать один поток на все я на старте перевожу консоль в raw и поллингом асинхронно получаю коды нажатия клавиш, затем обрабатываю их последовательности, формирую все остальное. Это как ncurses, только написано мною вручную и более компактно. Этот код больше embedded-ориентированный, и кажется диким системным программистам. Но зато он легко может быть портирован в железо без ОС: подтягивается библиотека звука (АЦП и т.п.), работы с SD-картой (файловая система) и ТСП-стек (для используемого чипа контролера сети), и имеем аппаратную реализацию. Попробуйте так портировать Jitsi :)
Отсюда косяки с консолью: это не совсем консоль по определени, и не стоит от нее ожидать полного функционала. Этот интерфейс задумывался как дополнение к другим UI (Telnet, потом WebSocket). В принципе в идеале сделать нормальную консоль в отдельном потоке, но есть ли в этом смысл, когда можно работать через тот же Telnet?
Не совсем так. Вводимые символа накапливаются в массиве до первого Enter (или других управляющих, например Del), затем массив анализируется. Если первый символ -, то интерпретируется как команда, иначе – как текст для отправки в чат.
Собственно, связки нет. Просто я хотел использовать популярность 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 с большими цветными кнопками и смайликами. Я к этому авангардизму морально не готов сейчас, возможно, позже дозрею.
Мне Java не особо симпатична, лучше уж оригинал на Piton. Но это мое личное мнение.
Для ОР нужен лишь Tor. Из чего Вы его возьмете, разницы нет. Наверное, для безопасности лучше использовать последний TBB. А представление ОР в качестве плагина для TorChat – больше реклама.
Уже ответил выше по тексту. И не только на Raspberry, а и на другом открытом HW. Если планируется внешний Tor (например, в роутере), то можно OP сделать вообще без ОС. Проблема может быть только с кодеками (например, для MELPE нужно как минимум 40MIPS, 256K RAM и столько же быстрой ROM для кодовой книги).
У торчата есть один принципиальный минус: если вы даёте ссылку на свой id противнику, это то же самое, как сообщить ему onion-адрес, работающий на вашем ПК. Это открывает возможность атакующему инициировать соединения с вами, трафик к вам и т.д. — огромное поле для всезвозможных атак по деанону и не только. Если же мы отказываемся от P2P-архитектуры, то придётся доверять третьей стороне, которая может отслеживать список контактов, моменты активности и т.д. Я бы просуммировал это так: централизованные onion-сервисы при прочих равных безопаснее, а децентрализованные не полагаются на присутствие в онлайне какой-то третьей стороны; для анонимности есть свои минусы в обоих случаях.
Итак, для функционирования OP достаточно запущенного TBB, который предоставляет первому свой SOCKS, вроде так.
А TorChat умеет делать то же самое по прокси, как TBB?
Если да, то это очень хорошо, т.к. решаются сразу две полезные задачи:
– получаем индикатор он-лайн присутствия собеседника;
– обзаводимся криптующим текстовым мессенжером
(правда, остается вопрос влияния "свежести" TorChat, но если правильно понял, на безопасность он никак не влияет, т.к. сам не шифрует, а пользуется сервисом Tor).
Если отказаться от TorChat (либо он не заменяет TBB по поддержке SOCKS), то теряем не только текстовый мессенжер (не так печально), но и он-лайн индикатор (важнее).
И тогда встает вопрос: чем заменить этот он-лайн индикатор?
Потому что если воспользоваться вспомогательным софтом типа Jitsi, Tox, то напрочь теряем с таким трудом добытую анонимность.
Просто пытаюсь смоделировать наиболее употребимую и практичную схему использования OP с учетом вышеописанных реалий.
Насчёт TorChat: он не помер. Сейчас он развивается в направлении переписывания в виде плагина для Pidgin на FreePascal.
gegel, насколько сложно, зная список функций в OP, использовать его в своей программе? pfactum разделил код на несколько библиотек, за что ему очень большое спасибо. Правильно ли я понимаю, что для включения OP в свою программу достаточно запустить отдельный поток, в котором реализовать свой loop, аналогичный main() из libdesktop/oph.c? (а также прилинковать все остальные библиотеки из OP и подсунуть процессу конфигурационные файлы от OP)
Я не готов обсуждать безопасность HS в целом. Но онион-адрес по определению публичный. Вроде как были работы по деанонимизации в течение 20 мин. глобальным наблюдателем. Хотя многие держат свои онион-ресурсы дома.
С другой стороны, если использовать онион-сервер, то по определению он будет недоверенный, а Вы все равно к нему будете подключены. Какая разница для тайминг-атаки, подключены Вы к злоумышленнику, или он к Вам?
И еще важный момент: онион-сервер увеличит латентность вдвое, что весьма критично для ОР.
Талантливая молодежь, КПИ марку все же пока держит :)
Именно так. Причем из цикла можно выбросить парсинг ввода с консоли и передавать команды другим удобным способом, добавив свои функции в ctrls.c Я старался все тщательно комментировать, если что-то не понятно, отпишите, я постараюсь донести ход своей безумной мысли, вместе поправим до юзабельного компромисса.
Вместо TBB пишите Tor.
Именно Tor является неотъемлемой частью и TBB, и OP, и TorChat.
Tor предоставляет SOCKS5 интерфейс, к которому подключаются соответственно Mozilla, демон OP, оболочка TorChat и т.д., причем могут все одновременно. Это для исходящих вызовов: после подключения к интерфейсу Tor-у отсылается онион-адрес, пробрасывается прозрачное соединение, и далее обмен происходит аналогично как и при p2p-соединении.
Для входящих вызовов Tor монтирует HS с указанием порта назначения. Клиент (OP, TorChat) слушает указанный порт. При входящем соединении Tor подключается к порту клиента, и опять же обмен происходит, как при p2p.
По поводу Raspberry. Раз он подходит, что из этого хлама нужно купить? http://raspberry.com.ua/c/raspberry-pi/
Понятно, что нужно взять сам комп с буковкой "B+" – Raspberry Pi Model B+ 512MB как наиболее крутой. А остальное? Например, нужны ли доп. звуковые карты, или можно обойтись бортовой? Дисплей, клавиатура? Что-то еще?
Не сочтите за рекламу – это Украина, господа! :)
Существует ли консольная версия torchat? Если нет, то обязательный GUI с X-сервером – высокая плата за отслеживание собеседников онлайн. Мне представляется это излишеством, в обычной телефонной связи такой возможности нет и заметного недовольства не вызывает. К тому же отслеживание контактов означает генерацию постоянного трафика, что упрощает деанонимизацию.
Полезная функция – сохранение переписки, и если планируется развивать текстовые функции онионфона, то имеет смысл её включить (как и поддержку кириллицы). Хотя в идеале лучше отдельный консольный текстовый мессенджер со своим шифрованием.
gegel не написал, но в menu.txt можно добавлять часто используемые команды, в том числе адреса собеседников -O.
Два недостатка
1. Добавления в 9:Contacts не работают, а секции 1-8 содержат мало свободного места.
2. Пробелы в командах и после ':' не допускаются
Мы третий день обсуждаем и тестим именно консольную версию, вьезжайте в тему, товарисч :)
Для вас онионфон и торчат – одна и та же программа?
Имелся в виду TorChat, а не OP. На сколько я знаю, нет.
Я тоже так считаю, но, к сожалению, имеем протокол TorChat, постоянно поддерживающий по 2 соединения с каждым контактом. Надо будет подумать: возможно, получиться извратиться и сделать клиент, по протоколу совместимый с остальными, но устанавливающий соединения лишь по требованию. Из остальных клиентов он, понятно, будет видеться оффлайн.
Желание контролировать онлайн-присутствие пошло из ICQ и затем и Skype, народ просто привык. Но, если вдуматься, с точки зрения безопасности это однозначно минус. Действительно, мобильной связью без этой функции все пользуются, и не возмущаются.
Я уже писал, что могу добавить поддержку TorChat в OP из коробки, а также сделать отдельно консольный TorChat. Но у меня нет идей, как лучше и юзабельнее сделать мультичат в консоли, желательно без ncurses.
Я еще не успел описать здесь и 20% того, что заложено в коде (хотя в англоязычный документации почти все есть).
Меню 9 работает по другому: оно создано для навигации по записной книге с помощью клавиш "вверх" – "вниз" (или соответствующих кнопок в webGUI). Предполагалось контакты вносить именно в записную книгу, но можно и в основное меню: выбросите ненужные команды, например, из меню 7 удалите часть неиспользуемых STUN-серверов для переключения на прямое соединение (все равно это пока глючит после адаптации к 64 бита).
О записной книге мы еще вообще не вспоминали, как, собственно, о публичных ключах, подписанных PGP и их автоматическом добавлении в записную книгу вместе с адресом и другими опциями, об уровнях доверия, о приватных EC25519 ключах и их защите, о собственной идентификации (гость или конкретный ник соответственно имеющемуся приватному ключу). Также о навигации по записной книге, поиске с фильтром, автодозвоне т.п.
Например, команда -E без параметра осуществляет повторный дозвон по ранее используемому номеру (то, что Вы искали в консоли), а с параметром – извлекает из адресное книги адрес для указанного имени в виде готовой команды дозвона.
Все это продумывалось не день и не два, гибко и ненавязчиво.
Мне уже на это намедни указал pfactum, наверное в этом есть какая-то религия для линуксистов. Записал, позже учту и переделаю вместе с игнорированием регистра.
Я сейчас не готов ответить, хотя это и близко к моему профилю. Оценю ситуацию, отпишу.
Да, это точно. Раньше только китайскую утварь по смешным ценам, а теперь и гранатометы в ассортименте, с расходными материалами.
Прошу прощения – машинально промахнулся, думая, что речь идет о OP. Значит, он стал уже привычкой :)
Для Gegel: обнаружились две несуразности.
1) Еще один приятель отконфигурировал TBB и OP в обновленной Windows 7 SP1,
но при запуске OP получил следующую ошибку:
Снова перепроверил конфиги, крамолы не нашел, запустил 2-й раз – в этот раз запустилось нормально.
2) Начали разговаривать. Проговорили минут 20-30, затем у меня по экрану поперли сплошняком строки типа:
и еще через некоторое время разговор то ли повис, то ли оборвался, так и не поняли.
Windows 7 – удивительная штука, у меня даже нет сейчас компьютера с ней, чтобы проверить. И отчет пользователю об ошибке тоже емкий. Давайте пока не будем заострять внимание на одном тесте. Если будет вырисовываться система, будем разбираться. Второй лог вообще непонятен: OP вашего друга думает, что его пингуют, и отвечает. Кстати, платформа у него 32 или 64?
У него точно "64", и я его еще не пинговал.
А у вас, если не секрет, какая используется Windows?
XP SP3 32 bit. Мы общались на Atom 2*1000 МГц, 2G RAM.
Кстати, я тестирую ОР в Linux (Ubuntu) на Asus EEEPC первой модели (Celeron 700 MHz, 512 RAM), что соответствует Raspbery B+. Вместе с запущенным TBB перфоманса достаточно. Для MELPE1200 – как раз в притык, для используемого по умолчанию AMR475 – с большим запасом.
Вот и ладушки! Значит, уже можно прицениваться к Raspberry? :)
В Windows начиная с Vista не всё так просто с анонимностью в сети. Например, dns-запросы браузера в сеть дублирует svchost-процесс. К чему это в дальнейшем ведет – неизвестно. Отключить в службах всё лишнее так, чтобы осталось одно ppp-соединение у меня не получилось. Приходится блокировать файерволлом, но сколько обычных пользователей станет этим заниматься…
Да, я думаю, проблем не возникнет. Судя по публикациям, Tor там успешно работает. Если использовать Linux-подобную ОС (скажем, тот же Debian), то проблем не должно быть после сборки OP для платформы ARM. И если эта ОС поддерживает ALSA.
Но возникает интересный вопрос: а почему, собственно Raspberry c Debian на борту доверяемее, чем тот же Asus EEEPC? Железо и там, и там серийное, ОС одинаковая. Разве что закрытый BIOS.
ПС: комплектация Raspberry для использования в качестве платформы для OP, наверное, должна включать 320*240 дисплей с точпадом и WiFi-модуль. Звук, я так понял, есть на основной плате (надо уточнить, есть ли поддержка ALSA в поставляемых ОС).
Согласен, сам не пользую и никому не рекомендую. Уж лучше LiveCD (ссылка на rutracker есть в начале темы).
Возможно, дело в размерах – на основе raspberry можно создать мобильное устройство.
Чем простой вариант не подходит – просто скидывать сообщения в одну кучу, например
И добавить навороты с шифрованием и безопасностью как в онионфоне.
Вообще-то я дилетант в текстовых мессенджерах и почти ими не пользовался из-за недоверия к серверам и необходимости регистрироваться. Поэтому продуманных идей нет. Может кто более знающий подскажет.
В мобильной связи считается, что пользователь всегда онлайн, и, если надо, в любой момент может услышать звонок и снять трубку.
Нет, можно делать приватные onion-адреса, и подключиться к ним можно будет, только прописав в torrc пароль доступа.
Бред это[link168], уже 100 раз критиковали.
Да, а другие на работе. И потом присаживаются надолго, когда петух клюнёт.
Я могу поставить свой сервер и использовать только его. :-)
Я исхожу из этого[link169].
Команда от опций и их значений всегда отделяется пробелами. Между опцией и её значением ставится либо пробел, либо равно. Опции предваряются одним или двумя минусами. Это прозрачно интегрируется с UNIX-шеллом. Есть альтернативный подход, чем-то более здравый (CISCO IOS, BSD), там минусов нет, и названия опций могут быть сокращены до тех пор, пока они однозначны, но всё равно всё друг от друга отделяется пробелами (этот стиль использует, например tmux).
Вы уверены, что это повысит анонимность? Напоминает проблему TOR->VPN. Оплата хостинга, доверие хостеру и все такое.
И это тоже.
Анонимный список контактов — не такая уж большая утечка, содержимое разговоров будет всё равно зашифровано.
Если общаться с недоверенными людьми, то да. Давать доступ к домашней машине из сети, да ещё и невесть кому — это очень опасно. Тут целое поле для атак. И именно так работает p2p в Tor — каждый превращается в сервер и понижает свою анонимность/безопасность с клиентского уровня до серверного.
К слову, я не помню ни одного случая, когда кого-то из клиентов Tor нашли исключительно из-за ограничений в безопасности/анонимности самого Tor-протокола. Однако, HS'ы, похоже, таким образом иногда находили (хотя официально всё объясняют через parallel reconstruction).
Утечка графа социальных связей это серьёзная угроза.
Сервер это тоже невесть кто, принципиальной разницы нет. Хотя один непосредственно контактирующий узел безопасней произвольного количества. Для подстраховки можно зачрутиться, и чем проще клиент, тем легче это сделать. Простой консольный клиент труднее сломать. Для критичных контактов лучше чатиться на VPS (зайти через Tor по SSH и запустить ониончат в консоли), это будет в некотором роде аналогом сервера.
и
Если взять в расчет необходимость для Raspberry клавиатуры, дисплея и БП, то не такая уж мобильность получится.
С другой стороны, Asus EE EPC, который позиционировался как ноутбук с ценой не более $100, сейчас продается за $300-500 – нафиг, нафиг!
А что такое здесь "серийное железо"? Вшитый серийный номер, что ли?
Для Gegel: насчет пробелов и пр. Не покажусь оригинальным, но на всякий случай напомню: в BSD/Linux в командной строке между ключами и их параметрами можно использовать пробелы, а можно и без них – командный процессор понимает и то, и другое, так что эти правила можно использовать и в OP. По крайней мере линуксодиам будет привычнее.
Что касается регистровой зависимости в BSD/Linux, то там уже лет 40 заложен этот маразам, от которого до сих не могут избавиться.
И лучше его в OP не повторять, а сделать подобным DOS'у.
Насчёт пробелов правильно, а регистровая зависимость не маразм и не заметил, чтобы в Linux была тенденция к избавлению от неё. Это хорошо, доступно больше опций и порядка больше.
1. Наличие перечисленного приветствуется для любого ПК, но размер Малинки меньше того же Асус.
2. Мобильность одназночно при использовании в качестве роутера (не требуется никакой перефирии).
А у меня есть фикс-идея! :)
Давайте скинемся и купим Gegel'ю комплект Raspberry для дальнейшего развития и мобильности OP!
Человек ведь работает на сообщество даром, на чистейшем энтузиазме, так хоть чем-то ему поможем.
На этом форуме нас немного, но и клубника ведь тоже недорогая.
Вторая идея, конечно, еще лучше – купить ему какой-нибудь массовый смартфон для той же цели. В этом случае мы получим сразу фсе – проц, память, дисплей, клавиатуру+мышь, микрофон, динамик, аккумулятор – в-общем, по-настоящему готовое мобильное переговорное устройство.
Правда, тут есть заковыка – на него нужно будет суметь портировать приличный Linux (Debian). Потому что сами понимаете, ни Android, Windows, IOS и прочая с точки зрения безопасности не выдерживает никакой критики, и в них OP будет совершенно неуместен.
Если согласны, отписывайтесь, и организуем сбор средств,
Никчему, тем более, он вроде сам не очень отзывался о смартфонах (если не ошибаюсь).
При первом варианте, смартфон может через Малинку и выходить в инет (однозначно лучше вариант).
А лучше, имхо, оплатить подробную инструкцию по установке и отладке (оборудование как расходный материал будет включено).
Значит, уже двое согласных? Кто больше? :)
Это же торчат, там каждый контакт в должной мере анонимен и не должен светить свои ФИО. Для тех, кто светит, можно завести отдельный акк.
Хорошая идея. Что-то типа такого: TorChat запускаем на удалённом сервере, но делаем так, что сообщения шифруются ещё одним слоем (к примеру, OTR), из-за чего расшифровываются они не на стороне сервера, а на клиенте.
Виндузятник детектед.
Про Raspberry: не знаю, с чего это за него все ухватились. Железо — что попало, полное проприетарной фирмвари, вообще не в идеологии открытого железа и BIOS'ов ни разу[link170]. Как роутер эта железка сомнительна, т.к. нужны хотя бы 2 сетевых, поэтому придётся докупать либо Wi-Fi-роутер, либо USB-сетевую. Если использовать как платформу для OP, то также не вижу смысла. Коннектиться к ней надо будет по сети, значит, та машина, откуда коннектятся, должна быть доверенной. А раз она сразу доверенная, зачем выносить функционал OP куда-то ещё? Чем это хуже запуска OP в виртуалке? Пусть gegel доведёт софт до ума хотя бы на ПК, до переноса на железо ещё дойти надо.
Заводить для каждого собеседника отдельный онион-адрес непрактично. Обычная практика – создать свой контакт разослать его возможным собеседниками, опубликовать в Интернете. Достоверно проверить соблюдение собеседниками анонимности невозможно. Даже если они не указывают свои реальные данные, их деятельность может профилироваться по другим признакам.
Такая "малость" наверное ещё сложнее чем написать онионфон. Проще портировать его на Андроид, что gegel и собирался сделать.
Отнюдь. Но и не красноглазый линуксятник, коих легион. Так что имейте смелость признать, что и виндовс имеет некоторые свои преимущества.
Критикуя, предлагайте что-то лучшее, и вам будут только благодарны. Так что весь во внимание.
Вам лично Gegel что-то должен? Вы его финасируете?
На мой взляд, настоящих созидателей (в отличие от большнства бездельников на этом сайте) нужно хоть как-то стимулировать, пусть даже такой мелочью, как покупка железа для экспериментов.
Проще, ага. Уже писалось: Android и безопасность – вещи несовместимые. Особенно еще потому, что в него засунул свой длинный шпионский нос Гугль. Получитя Skype нумбер 2.
И почему он проклял, отчего? Тут непонятно.
Что-до проприетарности Raspberry: а что есть подобное НЕпроприетарное? Openmoko, что ли – так он давно загнулся.
В самом деле, после критики хотелось бы услышать достойные альтернативы.
Виндузятник берётся рассуждать о "маразмах" Linux/BSD и требует чтобы было как в ДОСе. Для обращения в виндузячью веру с её мифическими преимуществами вряд здесь благодатная почва.
Тебе тут что-то должны, не ты ли тот клоун, который забесплатно требовал инструкций и хауту для чайников? Со своими претензиями и нравоучениями иди на йух.
Достаточно повторять как попугай банальные фразы (причём чужие), и можно требовать от других неподъёмной задачи по переносу Linux на смартфон.
Что такое Raspberry Pi[link172]
Аргументируйте пожалуйста в чем сомнительность?
У сабжа есть следующие необходимые интерфейсы:
– Ethernet[link173]
– 4 USB порта, в 1 из которых вставляется wifi-адаптер.
В чем проблема?
Не очень понятно а как еще можно?
Опять не понятно что вы хотите сказать? Если роутер часть вашей сети, то наверно вы даете доступ доверенным устройствам. Хотя никто не мешает сделать общественный доступ.
Хотя бы тем, что ПК с виртуалкой на борту, будет нелегковестной и некомпактной конструкцией и, уж точно, не стоимостью 100$.
Другой вопрос, что есть не только Малинка, но Ардуино. Ну кому что нравится.
Вряд ли это является заковыкой, скорее правильно настроить – вот что непросто, но этот вопрос НИКАК не связан с Raspberry.
И да, уж наверно этот вопрос нужно прекратить педалировать, т.к. прогресс не стоит на месте и увеличение доли гаджетов в повседневном пользовании нельзя игнорировать.
Это «обычная практика» у людей, которые не заморочены безопасностью. Те, кто заморочены, тот же свой jid кому попало не дают, и уж, тем более, не выкладывают его в сети на публичное обозрение. Вы же свой мобильный телефон не выкладываете? Тут так же. Если есть некоторое доверие к собеседникам и их квалификации, то это именно тот случай, который имелся в виду под «ФИО не светят». Многие не скрывают, что используют соедиение для всего и вся только через Tor, так что кто стоит за конкретным jid'ом — это ещё постараться узнать надо, не такая простая задача.
Имею смелость сказать, что не так давно тут все вопросы по винде предлагалось считать оффтопиком и номинировать на снос.
Лучшее для роутера или для того, чтобы таскать с собой? Это разные вещи. Роутерами особо не интересовался, но могу вспомнить хотя бы те же соекрисы[link176]. По крайней мере, к ним не было тех претензий, какие были к RP.
Для мобильных платформ? Не знаю. Конечно, RP лучше Андроида, в этом сомнений нет. :-)
Если делать из него роутер, придётся обвешивать всё это периферией. Если делать из него телефон, придётся ещё много чего приделывать: экран, клавиатуру и т.д. Вроде были в продаже таблетки с Linux на борту и не особо проприетарные, ещё давно рекламировались. Они могли бы сгодиться. И ещё раз: сделать компактный удобный анонимный и безопасный криптофон — это более сложная задача, чем аналогичное приложение для ПК.
Если это роутер, к которому подсоединён монитор и клавиатура, то можно локально управлять, а не по сети.
Под столом. :-) И давно это стая мух вдруг определяет, что считать безопасным? Да пусть эти гаджеты хоть у каждого будут в количестве 100 штук, более безопасными они от этого не станут, вам только АНБ скажет спасибо[link177].
Претензии к RP:
В смысле? Увеличение доли гаджетов способствует их безопасности, что ли? Тут бы не путать: железо гаджетов – это одно, а Android – совсем другое.
И если по поводу НЕбезопасности Android есть множество мнений, толкований и публикаций, в-общем, есть устоявшееся мнение, то если вы с этим несогласны, приведите обратное в пользу его безопасности.
Лтчно для меня на 100% достаточно, что за ним торчат уши Гугла.
Меня на минуту опередили, а так мнения совпали :)
Но возник вопрос из-за этого:
и т.д.
Погодите, при чем тут вообще роутер? Мы здесь обсуждем возможную платформу для OP, не так ли? Желательно мобильную, от гаджетов.
Так что роутеры лучше в отдельную ветку, для них требования могут быть совсем другими.
и какой же? какая периферия нужна для роутера? откройте нам глаза )
а если табуретку, то что нужно приделать?
путаете.. с аспирином на борту есть.
вы серьезно предполагаете сделать из Малинки криптофон? )))
то это ПК )))
пора бы вылезти оттуда, а то жизни не видите )
да вылезти вы уже из-под стола и читайте до простветления:
"... т.к. прогресс не стоит на месте и увеличение доли гаджетов в повседневном пользовании нельзя игнорировать."
эта 3-х значная хрень в россии не работает. на русских не действует!
это из практического опыта или опять начитано под столом?
При том, что разговор плавно перетек в эту плоскость. Если вам неинтересна эта тема, просто игнорируйте. Зачем напрягать мозг там, где это не нужно.
Тема сама по себе интересна, но зачем офопить и захламлять тему, посвященую OP? Это ей не на пользу.
Спорить не буду, но, как и во многих темах, что есть то есть. Скажем так, не я это начал и не мне исправлять.. Просто есть некомпетентные высказывания, которые провоцируют тренд не в направлении. Можно же, перед тем как высказываться, хотя бы почитать банально Вики.
Идея о роутере пошла отсюда:
RP начали сравнивать с нетбуками, с ПК, потом предлагать через RP выходить в сеть (можно понять как то, что посторонний смартфон выходит через RP в сеть, используя RP как роутер) и т.д.
Возможно, я не прав, но проблему безопасности 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. А вы всерьез предлагаете использовать современные андроидные устройства...
А что имеется ввиду под RB?
Какие варианты мобильного использования? Для Анроид писаны Orweb и Orbot, проекты RedPhone и Chatsecure. Пошли на поводу у пользователей или попытка хоть как то решить "вдруг" возникшую проблему появления гаджетов.
Может решение этой проблемы облегчит и вопрос использования смартфонов?
Подразумевал Raspberry Pi, сорри.
Наверное, проблема в мобильной и доверяемой реализации Tor. Не могу ответить.
Нет. ОР с компактным проверенным кодом на платформе, собранной на серийно производимой рассыпухе и без ОС сам по себе будет доверяем, и точно не установит через ваш роутер "левое" исходящее соединение. Но не смартфон. И как бы Вы не доверяли роутеру, смартфон все равно сольет ваши контакты, логи, ключи.
Wild security на самом деле нужна ничтожно малому количеству людей. В основном хочется поиграть в Бонда, попонтоваться или поумничать. И если вы – не французский террорист, то андроид для этого вполне подходит.
http://habrahabr.ru/post/208726/
пропритетарный загрузчик, выполняющий первичную инициализацию Raspberry Pi... Печально.
Таких людей 99.9%, и даже те кто "заморочены" не всегда обладают достаточной квалификацией. Если человек не указывает в Интернете свои ФИО, телефон и прочее, существует много других признаков, позволяющих установить его личность, хотя бы виртуальную. Например, часть постоянных посетителей этого сайта можно вычислить вплоть до ФИО, не пользуясь ресурсами государства, не состоя у него на службе. При том что все они "заморочены" безопасностью. Даже если контакт идентифицируется с точностью до псевдонима, а не реального ФИО, это уже ценная информация, и раскрытие реальных данных в большинстве случаев лишь дело времени.
Если не затруднит, опишите процесс детальней.
При пользовании ресурсом через Tor магическую строку можно отправить только в прикладных данных (внедрение её в IP или TCP приведёт к отсылке UDP-пакета с эксит-ноды). Они зашифрованы, поэтому строка тоже зашифрована и не распознается контроллером. Единственно возможный способ это внедрить её в SSL, если разработчики торпроджекта не приняли контрмер.
Во-вторых, пакет не пройдёт напрямую через провайдера, т.к. соединиться с внешними узлами можно только через виртуальный VPN-канал (в России это стандартный способ подключения к Интернету). Он существует на уровне ОС и Ethernet-контроллер о нём не знает.
Если провайдер находится в сговоре с атакующими, то возможным способом противодействия видится использование роутера, разрешающего пакеты только в пределах сети провайдера (шлюз локальной сети, VPN-сервер, DNS-сервер).
В чём принципиальная разница при работе с HS и как внешне (для покупателя) определяется примитивность контроллера?
Разпознавание речи и передача её роботу в онионфоне отсутствует, а это единственный гарантированный способ сохранить анонимность при голосовом общении. Поэтому такая беспрецедентная мера, как отказ от ОС, представляется избыточной.
Нда...
Да не такому уж и малому[link179]... [1][link180], [2][link181], [3][link182].
Спасибо за ссылку. Ещё один гвоздь в гроб RP.
А подкажите, как работает этот OpnionPhone c точки взаимодейстия с сетью TOR?
Для примера, классическое использование TOR: юзер свои веб-запросы не сходя с места шифрует с помощью локального TBB, и на выходной интерфейс, т.е. в сеть TOR, они попадают на входной узел TOR уже зашифрованными. Далее они обуваются еще в несколько криптоодежек, гуляют некоторое время по сети и выныривают через выходной узел уже дешифроваными, попадая на веб-цель (сайт) в открытом виде.
Пытаюсь найти, как по аналогии работает OP, но не нахожу. Он что, выходит на другой OpnionPhone вообще не расшифровываясь? Тогда значит, не через выходной узел, а через что? В-общем, запутался.
Там есть discovery protocol, на текущий момент завязанный на TorChat. Технически это подразумевает, что на обоих сторонах поднят скрытый сервис. А сама связь может идти любым удобным способом, хоть напрямую по UDP/TCP, хоть как на скрытый сервис через Tor (на обоих концах канала автоматически поднимаются скрытые сервисы).
Т.е. правильно ли я понял, что трафик OP проходит через сеть Tor, нигде в ней не расшифровываясь?
Так можно сделать. Является ли этот вариант вариантом по умолчанию — не знаю.
Ок, спасибо! Тогда вопрос к тов.Gegel: просветите, пожалуйста, теперь вы по вопросу взаимодействия вашего OP с сетью Tor (пост 11/01/2015 16:23)
Признаю, погорячился. При использовании Tor деанонимизировать закладкой в микрокоде сетевого контроллера никак не получится. Активация закладки на уровне провайдера, конечно, возможна, но это уже предполагает свершившуюся деанонимизацию. Эксплуатация такой закладки видится возможной только в паре с закладкой в драйвере, и то не для прямой денонимизации, а для слива информации.
Именно так, и этот режим используется по умолчанию. Соединение устанавливается с указанным онион-адресом. Это аналогично, как вроде Вы просматриваете SilkRoad: используется оконечное шифрование средствами Tor, ключ известен только вам и вашему абоненту, восстановить его после разрыва соединения невозможно (PFS). Внутри этого канала Онионфон поднимает еще собственный слой шифрования c аутентификацией (в том числе постоянными PGP-ключами с отрицанием) и тоже PFS (позже при захвате хоть обоих компьютеров расшифровать записанный разговор невозможно, даже если Tor скомпрометирован).
Обмен ключами внутри Tor защищает от атаки "человек посредине" сам по себе. Кроме того, предусмотрены и другие способы убедиться в отсутствии подмены. В общем, все сделано для истинных параноиков.
После установки соединения в Tor и начала разговора можно выйти из Tor и соединиться напрямую друг с другом, при этом абоненты сообщают друг другу свои IP-адреса внутри защищенного Tor-канала (не разрывая его, но и не используя во время прямого обмена). Это хорошая замена SIP, я об этом не раз писал, но никто не поддержал идею. Преимущества: нет единого сервера, собирающего метаданные и ведущего логи по IP, нет регистрации на нем, согласование сессионного ключа внутри Tor. Это неоспоримые преимущества перед такими рекламируемыми решениями, как CSIPSimle, Jitsi и т.д.
На TorChat обсолютно ничего не завязано. Я уже писал, что использовал его чисто в рекламных целях, представля ОР в виде голосового плагина. ОР использует отдельный порт в Tor-канале, обеспечивая подключение к ОР на удаленной стороне. Если HS не поднят (или онион-адрес не существует), а также если ОР не запущен, то после 10-15 сек ожидания будет соответствующее сообщение. Остальные варианты неудачного соединения:
– вы использовали неверный публичный ключ вашего абонента;
– на удаленной стороне нет вашего публичного ключа в адресной книге;
– вы не являетесь владельцем приватного ключа того, кем вы представились (чей публичный ключ использовали);
– абонент внес вас в черный список;
– абонент отбил входящий звонок после идентификации вас;
неразличимы для Вас (с учетом тайминг-атак). Таким образом, невозможно зондировать удаленную сторону на предмет ее идентичности и наличия у нее определенных контактов в книге.
Протокол выглядит абсолютно рэндомно, идентификаторы защищены (в том числе PFS: после захвате компьютеров анализ записанного трафика не позволит даже установить абонентов, не говоря уже о доказательствах по их ключам).
Но до криптографических тонкостей ОР еще в теме мы не дошли: по умолчанию оба абонента использовали ключи guest, включенные в сборку ОР (в т.ч. приватный), т.е. фактически выплнялся DH внутри Tor. Не знаю, может ли АНБ реалтайм замонтировать MitM внутри Tor в соединении c HS, но это представляется невероятно сложно.
Протокол ОР (инициализация, шифрование, формат ключей) подробно описан, но требует ревью. Но пока нет никакой надежды, что кто-то из значимых лиц хотя-бы просмотрит.
Да нет так пока никакого гвоздя. Разобраться еще нужно по этому загрузчику. Высказано предположение всего лишь. Сразу в преисподнюю пытаются загнать тему.
Эти приложения не работают с Tor по sip протоколу.
Строго говоря, не предполагает: все ISP могут по приказу сверху так прозондировать всех своих Tor-клиентов.
Почему? Вроде никто не возражал. Использовать HS как замену иным способам проброса тунеля тут предлагалось[link183] ещё давно.
Было бы хорошо, если б он был описан не только в pdf'ке, но ещё и просто на отдельной странице на сайте, прям в html — открыть страницу проще, чем файл скачивать.
Вам разобраться в себе нужно, если вдруг оказывается, что глухой и упёртый, никакие аргументы не воспринимаются. Тео ещё давно высказался по делу, и он-то как раз очень компетентен в таких вещах. Молодняк, конечно, не в курсе про фирмварь и блобы, про закладки в процессорах (Тео в эти темы немало вложился в своё время).
Не моя это тема, но не сдержался:
Хотите знать почему? О том, что кто-то уже написал про этот форум, что это типа скопище бездельников. И теперь мы присоединяемся к этому мнению. Один SATva и пару сотоварищей что-то еще делают, доки полезные переводят и т.п., остальные – просто соглядатаи с толстыми щеками и попкорном. Обстановка здесь, примерно как на ЛОРе – поп..ть, похаять, облаять, обматерить даже, а как до доходит дела – так все врассыпную! Хотя нет – на ЛОРе все же иногда снизосходят до практических советов, здесь же – одна пустопорожняя беллетристика.
Считаете мое мнение наездом? Извольте: 12 ноября 2014 года мы, группа единомышленников, помогающих страдающим на Донбассе мирным жителям посильной гуманитарной помощью, решили добавить в нее компоненту безопасности для них. С этой целью опубликовали на вашем сайте просьбу, изложенную в теме Jitsi. Тонкая настройка для безопасности[link184]. Слезную, можно сказать просьбу, ведь люди гибнут многими тысячами. За неполный год уже погибло больше, чем в Афганистане!!!
И что же в ответ? Несколько резонных замечаний. Что касается доступной инструкции – молчание. Но не ягнят, а людей, абсолютно индифирентных к чужому горю.
Зато за это время, когда мирные люди гибнут и мир начинает трещать по швам, здесь появились невероятно "жизненно актуальные" темы:
– Квантовая связь без классического канала
– Прячемся от мамы/папы или супруги/супруга на андроиде
– Математическая вселенная Тегмарка (изменённого сознания тред)
– конечно же, бесконечное продолжение "Спасите рядового Дурова!"
и другие, не менее "важные" для гибнущего мира темы.
Что ж, когда-то ваше равнодушие откликнется вам сторицей.
Опомнитесь в мерзлых окопах, но только будет поздно.
пс.SATva, пусть этот пост лучше остается на вашем сайте. Во-первых, критика полезна для развития ресурса, во-вторых, будет не так эстетично, если она будет опубликована и продолжена на другом, стороннем ресурсе.
Ну и социальный срез ресурса хорошо просматривается: малочисленное активное ядро – и скопище равнодушных бездельников, почему-то мнящих себя «криптографами».
Это о них сказано:
Гость, скажи мне, пожалуйста, для чего ты кого-то к чему-то призываешь? Ведь пустая трата времени. У меня до сих пор сердце кровью обливается по поводу Донбасса, свой вклад я туда сделал более, чем опрометчивый, такой, что до сих пор дыры латаю, и пусть скрепя зубами я себя ругаю за свой фатализм, но знаю, что моя целевая помощь дошла до людей на Донбассе, и нескольким семьям-беженцам в РФ помог. В общем не об этом, а о том, что делать что-либо нужно только самим, просить можно лишь о том, в чем не критично нуждаешься, заведомо понимая, что могут не ответить и вообще в наше время на помощь расчитывать глупо. Почему вы, группа единомышленников, не сформировали свое сообщество, пусть даже здесь на PGPRU, т.к. Гостям можно писать не регистрируясь и не разослали свою просьбу зайти в тему и помочь советом по всем тематическим сайтам и форумам?
Я вообще считаю, что здесь всего-то человек 5-7 сидит, нужно, кстати у SATtv'ы поинтересоваться посещаемостью.
Но так или иначе, группа единомышленников, не трепите себе нервы, ищите решение вашей задачи глобальнее. Если ты сам говоришь, что на ЛОРе помогают – создавали ли там такую же тему в тот же день, что и здесь? На каких ресурсах еще помощи просили? Что нигде не ответили? Или не скомпоновать ответы воедино?
unknown первым же ответом в той, твоей теме сообщил, что мессенджерами не интересовался, я на сколько знаю – он вообще телефонами не пользуется, он же ИИ, но тем не менее привел там тебе ссылку и сказал свое мнение, не только за себя а за подавляющее большинство здешней аудитории, ему то уж точно виднее кто и чем тут интересуется. С твоей же стороны начались выпады в сторону здешних обитателей. В общем просто не по адресу и все, а хаять всех ни к сему, сам себе же нервы портишь. Ну и вообще, почему PGPRU? Здесь прлтора землекопа: SATtva – дизайнер, unknown – библиотекарь и Гость – он же SATtva, он же unknown и прочие зарегистрированные пользователи, включая ressa.
Смысл взывать к коллективному разуму на проекте, где и десятка человек не наберется – не понимаю.
Твоя цитата неуместна, никто здесь не виновен в событиях на Донбассе, и уверен, что людей всем жалко, и все скорбят. А равнодушие к твоей просьбе – не есть равнодушие к ситуации в целом, просьба не на тот ресурс адресована, имхо. На счет цитат, Достоевский как всегда не в бровь а в глаз лупит:
Не переходите на личности. Если есть аргументы – выкладывайте, если нет – комментарии "вообщем" никому не интересны. Спросите поисковик на тему "мнение Тео о загрузчике raspberry" и почитайте.
Вы силой мысли пишите здесь? Если через кокае либо устройство – бойтесь (!) в нем закладки всех спецслужб мира.
ну какие никакие советы были, может просто вы не получили того что хотели и не было того кто знает ответы на ваши вопросы. Так бывает. Увы.
Посещаемость и "сидят" – разная статистика. Через поисковики народ залентает "на ура". Будьте уверены это немалые цифры.
Здесь ссылка на пресловутое выссказывание[link185]
Само "незабвенное проклятие"[link171]
Если кто не знает языка, может перевести через гуглопереводчик.
Поскольку аргументы уже давно были высказаны, а вы их либо не читаете, либо намеренно игнорируете всё, что вам пишут, то предлагаю побиться головой об стену. В вашем случае может помочь. И ещё матчасть поизучайте, чтобы когда вам парочку ключевых слов говорят, в голове возникала нужная картинка, а не «все идиоты вокруг, один я умный».
Вопросик: можно ли в ОнионФоне оперативно менять свой собсный профиль? То есть ник, имя скрытого сервиса или прально назвать. Чтобы для одних собеседников он один, для других другой. Или как "дерево, родился баобабом и буш тыщу лет пока помрешь :)"
Идентификация в ОР осуществляется по:
– собственному онион-адресу (с помощью 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.
Блин, подскажите, как этот гребаный 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
ну а дальше то – что? В этом е.нутом мануале автор просто издевается, что ли, описав подробно инсталляцию (которая и коню понятна), и торжественный запуск свой софтины, но где сама настройка? Исключил ее он что ли, или не там читаю :(
В гуголе, кстати, тоже о настройках никто нигде не мяукнул – мировой заговор, что ле? Кроме этого: здесь была ссылка на политресурс но в нем тоже о самой настройке нет ничего.
На сколько я в курсе, TorChat не требует настройки и работает "из коробки" При первом запуске генерируется приватный ключ и ваш ИД, сохраняется в файле и используется в дальнейшем.
Должно быть меню, из которого можно копировать собственный ИД, добавить контакт и открыть чат.
ДПНИ, ахахахх) Меня бы unknown уже забанил за подобную ссылку) а так на форумах этой политоты точно манов не будет здравых. На автора напрастно грешишь, ман и не нужен по запуску.
Проверь свой Tor, потому, что Гегель прав – сабж из коробки работает, одно время активно юзал его на разных дистрибутивах и железе.
Если так, то почему после запуска выскакивают эти две строки?
Разве это так и должно быть? Что ж это за работа такая странная. Она больше похоже на ошибку, программа хочет онионное имя собственного хоста, но не получает его и ругается.
Пробовал вводить его, и тогда получаются такие две строки:
<your onion host (ame without the .onion ending> myself
pupkin (myself)
Все равно что-то не то! Особенно прикольно сочетание host (ame – это так должно быть, или программер допустил орфографическую ошибку?
Оно должно его создать в виде HS, проверь Тор, еще раз говорю. Права на запись, к примеру.
Это как, какой еще Tor? Я установил TorChat, разве нужно что-то еще?
Исламисты и педофилы были, намёки от сионистов и от какого-то мутного криминала регулярно, белоленточники и майдановцы были, Донбасс[link189] вот теперь. Пусть напишут в отчётах своим кураторам, вербовщикам и провокаторам, что никакие политические и криминальные движения ресурс не поддерживает, ни радикальные, ни провластные. И спецом выборочно никому не помогает. Если есть кому ответить на технический вопрос, то на него добровольно, нейтрально, по мере знаний и интереса к технической стороне вопроса отвечают. Если спецам и увлечённым неспецам интереснее квантовая связь, параллельные миры и прочие отвлечённые
ололооколотехнические и околонаучные темы, то это их дело, особенно в местном оффтопике. Есть негласные технические темы, на которые ответы тоже не поощряются, например то, что попадает под понятие «взлом» («помогите взломать X»), создание защит от копирования (DRM) («помогите защитить программу от пользователя»), а также то, что по мнению модеров считается откровенным фричеством, но к данной теме это не относится. Так что упрёки и давление на эмоции — мимо.Пакет TorChat по умолчанию включал в себя версию Tor, запускаемую вместе с оболочкой (не новую, желательно обновить).
Т.о. у вас будет два процесса Tor: отдельно ваш штатный, и отдельно – запущенный TorChat-ом.
Но вполне можно использовать и имеющуюся версию Tor, вот тогда потребуется настройка.
Я своему куратору и так докладываю все, что смог вынюхать о здешних подпольных деятелях с двойной жизнью[link190].
Если без шуток, только ответь серьезно, понимаю, что оффтоплю: ты действительно считаешь, что есть прям агенты с кураторами, которые пишут херню? Я думал, что это просто одепты политики\оппозиции и не более того, ну или одепты всяких сект типа ДПНИ\Навальный и тд. Ну т.е. я то прекрасно понимаю, что понятие "информационная война" носит практический и действенный характер, но черт побери не на PGPRU же)) Смысла нет, кого тут вербовать, тут всем плевать на какие-либо политические движения и тд. Я думал, что мониторят – да, следят может быть, чтобы не содействовали шифрованию заговоров каких-нибудь групп "единомышленников" и тд. Ну т.е. вот прям без сарказма – в двух словах, цель какая? Я понимаю – промывать мозги в всяких соц.сетях малолеткам, тематическим развлекательно-увеселительным ресурсам, но не здесь же. Поэтому я и считаю, что нет никаких кураторов и "засланных казачков", есть больные люди, которые искренне верят тому или иному политическому течению. Или я не прав? Только не три, а то опять начнешь "провокации на флейм и тд", имею я же право прямой вопрос задавать. Не ради погон и звездочек, мне и одобрения моего куратора достаточно, "Нам солнца не надо – нам партия светит! Нам хлеба не надо – работу давай!")
Это была ирония, очередные гости ставят себя в один ряд с упомянутыми течениями. Политические, криминальные и коммерческие заказы на форуме не поощряются; рядовое напоминание: пусть все формулируют свои задачи в нейтральном виде.
Это мнения написанные здесь. Степень их авторитетности каждый сам себе определит.
Культура – она либо есть, либо ее нет. Вы видать обделены.
Аргументация слабого человека. Сродни – "Сам дурак". Есть желание выбросить желочь? Ладно, выбрасывайте. Полегчало?
После регистрации. ПКМ в окне – В контекстном меню выбор "Установки" – Окно с тремя вкладками – Вкладка "Внешний вид", строка "язык" меняем с en на ru. После перезагрузки все будет на русском.
Не знал, что Тео читает pgpru.Предлагаю найти обо всём этом в вики и на англоязычных сайтах самостоятельно.Интересный эффект обнаружил при разговоре по OnionPhone: иногда наступают паузы, и потом, после них, тембр голоса собеседника уносится на высокие частоты, голос становится как бы детским, а скорость произношения слов ускоряется.
Это нормально, или кто-то перехватывает трафик?
Автор программы ответит подробнее, но меньше всего вероятность чтобы перехват проявлял себя таким образом. Наверное, глюки кодека накладываются на особенности программной реализации при потерях и задержках пакетов. Что-то типа синхронизации после восстановления, чтобы и фрагмент речи не пропадал и отставания не накапливались.
Аналогичный эффект наблюдается при sip через vpn.
Боюсь, что перехват заметить вообще невозможно. Это продолжение иллюзии о щелчках в старых PSTN: настоящая прослушка абсолютно незаметна.
unknown как всегда в точку. Это компенсация после "замерзания" Tor-цепочек, которое не смог скомпенсировать текущий анти-джиттер буфер. Есть различные варианты решения, реализованные в разных VOIP:
– просто дропать излишние пакеты. Часть речи будет утеряна;
– буферизировать задержанную речь, пришедшую "кучей", и затем проигрывать тем быстрее, чем больше в буфере. Именно этот способ использует ОР;
– Вместо ресемплинга искать в речи паузы и укорачивать их;
– Использовать ресемплинг + сдвиг тональности в обратную сторону дополнительным LPC транскодером.
Последние два механизма по эффективности аналогичны второму, но исключают настороживший вас эффект и обычно применяются в HQ VOIP для домохозяек. Учитывая сложность реализации, я не стал их применять, чтобы не запутывать код.
ПС: приятно, что идет тестирование. Просьба и в дальнейшем отписывать все, что вас настораживает или выглядит неожиданно и неестественно.
Тестирование идет непрерывно, не сомневайтесь :)
И ждем-с, когда вы осуществите обещанные изменения в командной строке.
Также нужно реализовать анализвтор отлавливания ошибок пользователя.
А то набираешь типа -O gegelcy5fw7dsnsn
а нужно, оказывается, -Ogegelcy5fw7dsnsn, но кто ж все это упомнит.
И на счет регистро не- за-висимости – не слушайте этих красноглазных линуксоидов :) делайте регистронезвисимый интерпретатор, и это единственно правильное решение.
Очень хорошо – так и оставьте, ничего не меняйте.
Идиотское предложение. Путосвитчер себе настрой.
Ни одна нормальная программа не должна пытаться быть умнее юзера и вольно фиксить то, что он ввёл. В крайнем случае задаётся вопрос, не хотел ли юзер ввести иное, при этом есть возможность согласиться или отказаться (так сделано в zsh). Кто хочет, пусть себе пишет обёртку вокруг OP со всеми фичами, какие пожелает. Нужно отличать: сами интерфейсы — одно, обёртки вокруг них (юзерские программы) — другое.
Gegel, не слушайте идиотов.
В зеркало посмотри! Научись не только читать, но и понимать написанное – где ты увидел "фиксер"? Речь шла только и только об анализаторе ошибок. Поэтому засунь свой пунтосвитчер себе в то самое место, которым ты здесь производишь неприличные звуки.
Для остальных: как известно, любая законченная программа обязательно содержит анализатор ошибок пользователя, которые в принципе неизбежны, поскольку такова природа человека – снижение концентрации внимания, механические ошибки и т.д. И если программа молчит, ничего не сообщает об ошибке пользователя, то и пользователь будет долго сидеть, ожидая нужной для себя реакции, а ее не будет, поскольку ожидаемая им команда не выполняется.
Gegel, не слушайте пи$доболов.
Фразу
можно понять, в том числе, и так.
С этим согласен. Если юзер нарушил синтаксис, а программа об этом молчит, это баг. Но gegel выше сам признавался, что там пока ещё всё слишком «неполноценно». Наверно, есть какие-то UNIX'овые стандартные библиотеки для парсинга командной строки и введённых опций, где можно легко задать всё, что нужно для конкретной программы.
Обычная libc[link191], только к ней рекомендуется соблюдать стандарты[link192], есть стандарты и на формат конфигов и ведение документации и пр. Но большинству разработчиков часто невтерпёж получить работающий продукт любой ценой и ложили они на все стандарты и удобство дальнейшей разработки и подержки своих проектов ;) Если проект не ведёт куча народу на финансировании, а только небольшие группки энтузиастов, то выбор часто: или плохой код урывками, или никакого кода и проекта вообще.
Именно. Я выбрал плохой код урывками, иначе не было бы ничего по сей день. Допилим. Но тут пока есть проблема: как я уже писал, консоль в ОР поломанная, интерпретатор мой собственный. Наверное, все-таки придется добавлять отдельный поток для консоли. Или же все переложить на телнет и полностью убрать стандартный ввод в ОР.
Мнения разошлись :) Выскажу и свое. Я далеко не красноглазый линуксист, а виндузятник. Но и тем не менее пишу на С/С++, где регистр-зависимость – само собой разумеющееся свойство. Поэтому лично мне ближе имеющийся вариант интерпретатора, но если большинство будет за регистр-независимый подход, то не вижу проблем дописать несколько строк в коде.
Я бы предложил другой подход: генератор команд. Частично это уже реализовано в web-интерфейсе. Можно ввести онион-адрес, и он будет автоматически преобразован в команду, которая выполнится при повторном клике по кнопке.
Имхо,
Вот давайте без этих говновиндовых идей. В любом серьёзном проекте есть собственно код, а есть интерфейс к нему. Код не должен быть завязан на интерфейс. И, кстати, почему telnet?! Потому что в вашей идеологии всё всем должно рулиться из браузера кнопочками и менюшками? А telnet — типа браузер для бедных? Из браузера рулят только тупоголовые домохозяйки, и их регулярно через ошибки в этом самом браузере рутают вместе со всей сложной и серьёзной архитектурой, которая управляется из этого браузера (типа хостингов).
Программа еще в альфа-версии, а какие уже баталии, не иначе, как делим шкуру неубитого медведя :))
Ладно, сделаю усилие над свое ленью (лень двигатель прогресса, однако), потому что писать придется много и аргументировано, чтобы на конкретных примерах попытаться убедить красноглазых, чем плох регистрозависимый интерпретатор команд. Впрочем, уверенности переубедить красноглазых нет, на то они и красноглазые.
Берем, например, команду 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 – не ОС, для нее интепретатор команд будет излишеством, вполне хватит генератора команд.
Короче надоело всё, всем спать. Имеющий уши да услышит.
Опередили. Поэтому пара замечаний:
Не надо зря гнать на браузер и домохозяек. Этот инструмент отшлифован десятилетиями, и им пользуются для самых серьезных дел – от серфинга по сайтам до денежных транзакций, как школьниками, так и системными администраторами. Кроме того, у него есть такое важное преимущество, как кроссплатформенность – он есть ВЕЗДЕ. К тому же браузер нужен для самого OnionPhone – TBB.
Вы сами-то по Интернету чем ходите – неужто телнетом? :) Думаю, даже не lynx'ом, а чем-то посовременнее. И чем вам не угодили домохозяйки – они вам невкусно готовят?
А вот то, что OnionPhone нужно вначале отшлифовать чисто в консольном виде – присоединяюсь. А потом можно и подумать, к чему его еще можно пристегнуть. Может и к браузеру, а может и сразу к QT или еще к чему.
Стараются выбирать исходя из каких-то разумных соображений, чтоб легче было запомнить. Сохранить системность, действительно, на 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.
Вот[link197], например. Я могу написать:
А что вы хотели? Всем наплевать на безопасность:
Точно так же деньги крадут через ошибки в браузере, браузер — основное окно проникновения троянов в систему, даже деанон юзеров FH АНБ делал как? Правильно, не через ошибки в Tor, а через ошибки в браузере. То, что браузером до сих пор пользуются для всего и вся — это повод не для гордости, а для осознания печальной действительности с текущей ситуацией в ИБ.
Да вряд ли. Tor'а достаточно. То, что ему передаёт TBB, можно и в командной строке передать (в крайнем случае, через тот же telnet).
Я хожу через TBB, но это не заслуга Mozilla, а сложившиеся обстоятельства. Когда выбирали единый браузер для всех, гиков не спрашивали и ориентировались на большинство. В частности, именно поэтому в TBB так много дыр: Mozilla'у безопасность волнует в самую последнюю очередь, их браузер разрабатывался для захвата рынка, а не для параноиков.
Упаси бог. Чем к QT, так лучше уж к браузеру. По-хорошему, нужна просто команда в командной строке, которая прозрачно интегрируется с другими посредством шелла и написана в той же идеологии. Это удобно и универсально. Кому нужны окошки, тот пусть их и создаёт. Оконный интерфейс — вообще зло злейшее, его приходится терпеть по необходимости. Лично мне удавалось им не пользоваться много лет, и ничуть об этом не жалею, что-то где-то до сих пор только так работает.
Все короткие опции rsync имеют длинные эквиваленты (-r = recursive, -R == relative и т.д.). И так в большинстве команд Linux. "Линуксоид со стажем" не может этого не знать.
Не представляю, как можно запомнить опцию отдельно от регистра, они единое целое. Кто "забывает" регистр, тот скорей всего в командной строке почти не работал. Правильней сказать не "забыл", а "не знал".
И с какой стати отказываться от регистра – чтобы домохозяка, возомнившая себя кулхацекром, случайно не нажала на капслок? Между r и R нет связи, это символы с разными кодами.
Да кому вы нужны? UNIX/Linux написаны такими как Д.Риччи и для таких же. Всех всё устраивает.
Почти все команды (в отличие от опций) имеют нижний регистр, который запоминать не нужно. Малочисленные команды, типа Xorg, редко используются в консоли, обычно они в составе скриптов.
Это ваши виндузятники, притащившие NetworkManager и превратившие систему в помойку.
Лучше сразу распознаватель речи, как в Андроиде.
Си никак не мешает создавать программы с регистронезависимыми опциями. Значит разработчики программ не считают нужным убирать регистр, что продолжается по сей день.
Если потворствовать прихотям виндузятников, то надо во всех файловых системах регистр отменить. Иначе безопасность ОС окажется под угрозой. Когда в ней существуют разные утилиты с похожими именами, отличающимися лишь регистром, регистронезависимая оболочка может запустить ошибочную команду.
Самый лучший интерфейс – стабильный документированный API. А все выше отписавшиеся с его помощью смогут сделать себе и чувствительный к регистру интерфейс, и нечувствительный, и Telnet, и SSH, и браузерный, и даже с распознавателем речи от Google.
Одно другому не мешает. Как предлагаете в консоли работать, или самому на Си кодить с помощью этого API?
Это была шутка, если вы не поняли.
© Ой! А то пасаны не знали :)
Этих длинных эквивалентов я намеренно не касался, чтобы не запутывать диспут. Но поскольку вы их зацепили – пожалуйста, перелистните страницу, и вы увидите, что именно об этом я толковал, упомянув Вирта. И тогда вопрос "Зачем нужна регистрозависомсть?" встает еще более остро.
Ну так и сидите в своей регистрозависимой поросшей мохом философии! Большинство юзеров (а это свыше 90%) чхали на ваш мнение.
Но главное – вы никогда и никого не убедите, что запомнить символ + регистр легче, чем только символ. И на этом можно ставить точку.
Разве что таких же упоротых, как вы, чуть что, переходящих на личности.
Red-eyed detected, чуть что, вопящих "Винда мастдай!", явно указывающий на ваш юношеский максимализм.
Здравомыслящие люди никогда не противопоставляют Винду Линуксу и наоборот, поскольку в каждой системе есть свои плюсы и минусы, и используют то, что больше подходит для их задач – именно они является определяющими для выбора.
И, если я использую исключительно Linux, и он меня более чем устраивает, а Виндовс запускаю в виртуалке от силы раз в месяц сугубо для экзотических программ, которые не запускаются в Вайне, что же, я тоже должен уподобиться красноглазым и тоже хаять Виндовс? Ну-ну. Подрастите немного для начала.
Ладно, холивары на эту тему бессмыслены и непродуктивны, сколько раз давал себе слово не ввязываться... :(
Вопрос к тов. Gegel: а что, если для OnionPhone использовать самое классическое меню?
Такое, например, как в iptraf или CenterIM – получится ли вложить в него все команды OP?
Если да, тогда не понадобится ни интепретатор, ни генератор команд, и будут исключены ошибки набора команд.
Не чем символ, тогда уж, а чем два символа? Мощности множеств слишком разные получаются:
Ололо! Вот это бомбануло. По теме, т.е., аргументы исчерпались более чем. И вправду, не ввязывайтесь в холивары. Для участия в них для начала надо хотя бы мозги иметь, знать матчасть и владеть логикой, а у вас со всем этим провал.
Самый бредовый консольный проект, писал любитель DOSа и велосипедов.
Большинству постоянных комментаторов на этом сайте вряд ли вообще интересна тема винды, доса и тем более споры с виндузятником. Противопоставлять здесь ты принялся, обвинив BSD/Linux в "маразме", когда не просто оставил мнение об удобстве регистронезависимых опций для тебя лично, а начал обобщать и поучать "как правильно", при этом, судя по всему, даже не обладая базовыми знаниями и опытом.
Видимо пациент освоил консольный ицик, после чего почувствовал себя корифеем командной строки, которая теперь ассоциируется с досом.
Видимо под влиянием хода обсуждения — прочитал как «цирк» :)
Автор[link199] centerICQ, centerIM — её форк. IPC по автору — это тупо каждые 15 секунд проверять, появился ли текст в файле. Если да, то сообщение получено. Припоминается, что XMPP в centerICQ тоже был реализован так, что через какое-то время её забанили на jabber.ru.
На самом деле все проще, вовремя вспомнилась поговорка:
© Не спорь с дураком, иначе может оказаться, что он делает тоже самое.
С дураком, который походя хает все подряд – iptraf, centerICQ, да и вообще все, чтобы мною не было предложено из этой серии, и любую идею, ведь для него не важна истина – важно утопить оппонента любой ценой. Авторы многих утилит с подобным управлением наверное, ему были бы очень благодарны, узнав, как он оценил их труд. Сам-то хоть что-то реально сделал?
Так что я благоразумно отступаю, и лавры "победителя" (см. поговорку) достаются вам – аплодисменты в студию! :-D
Оказывается, красноглазый "победитель" страдает еще одним недугом – читать научился, а понимать прочитанное еще предстоит:
И где он тут нашел виндузятника? Зато уже успешно освоил метод Геббелься: чем больше вранья и передергивания, тем больше оно кажется правдоподобным – поздравляю "победителя" с соврамши!
Про тех же, кто хает Винду (которой почти не пользуюсь – см. выше, да и недолюбливаю по многим причинам), тупо противоставляет ее Линуксу и десятилетиями тупо ждет ее мастдая (Ха! Скорее рак на горе свистнет!), скорее можно предположить, что именно они недавно освоили Линукс и в соотвествии с юношеским максимализмом тут же стали хаять Винду.
О таких замечательно сказал Михаил Самуэлевич Паниковский:
И действительно, есть чему завидовать: Виндой пользуется большую часть людей, а Линукс по прежнему трепыхается на уровне 1% – люди голосуют ногами!
Про iptraf я не в курсе просто. Про centerICQ в курсе, знаю, пользовался сам, страдал от её костыльности.
Автор centerICQ в курсе моих претензий. Проект он в итоге забросил, жалеть не о чем.
Опять пошли разговоры за жизнь, я вижу. :-)
Видузятник — это не ОС на машине, это образ мышления.
Ну, я освоил 10 лет назад. Что дальше?
Это хорошо, что не так много, иначе в Linux бы уже давно всё говно из винды перетащили.
Такое впечатление, что вы взяли топ холиварных комментов (на которые уже давно есть стандартные устоявшиеся ответы) и с упорством, достойным лучше применения, их сюда постите. Нормальные линуксоиды переболели этой ветрянкой ещё 10-15 лет назад, когда о Linux ещё, простите, мало кто слышал. Вот если бы вы могли что-то умное породить, причём самостоятельно, и высказать нетривиальный аргемент, было бы интересно послушать, а так — это всё бесполезный срач по кругу.
Мне, безусловно, есть что сказать и на эти выпады, но я уже все сказал:
Итак, верительными грамотами стороны обменялись, продолжим по OnionPhone.
По поводу текстового меню. Не стоит придираться к iptraf и CenterIM (которому тоже высылал рекомендации, но Konst агрессивно окрысился), можно выбрать в качестве примера любую другую утилиту с таким меню.
Или например, более продвинутое меню, как в MC, но оно слишком продвинутое для OP, имхо.
Наверное, стоит провести голосование по управлению OP, и выбрать большое набравшее число голосов.
Есть относительно неплохие признанные программы, написанные на ncurses: mcabber, mutt и др. Но эту тему тут уже обсуждали — ненужное на данном этапе усложнение. Можно поглядеть на командую строку mICQ[link200] — очень продуманный и удобный интерфейс для чата без всякого ncurses и менюшек, даже консольных. Рудиментарная поддержка джаббера в mICQ вроде тоже была.
Вспоминается make menuconfig
На каком таком этапе? Какие, по вашему мнению, будут этапы? В любом случае не стоит распылять силы и реализовывать промежуточные этапы, от которых потом будет нужно отказываться.
Скажем, чем плохо управление подобно mutt – усложнением реализации? Так лучше один раз несколько ее усложнить, чтобы этим потом многократно упростить жизнь юзеру, создав ему комфорт.
Меня лично и многих других вполне устроит простое консольное управление, но не надо быть эгоистом, нужно подумать и о слабо подготовленных к работе в консоли пользователей. Для них уж точно не подходит обычная команданая строка с произвольным набиранием в ней команд, которые еще придется помнить.
Интерфейс должнен быть "ведущим" – как в том же mutt, где ничего помнить не нужно – это делает сам интерфейс.
А сложно сделать такой интерфейс или нет – пусть лучше выскажется сам Gegel.
ПС. Если что, пост через один выше тоже мой, забыл прописать автора.
блин, уже через два
А еще linuxconf, но уже смутно
Обсуждение, конечно, интересное. Но суть дела не совсем в этом. Начну издалека и постараюсь объяснить ход моих мыслей на этапе разработки ОР, и потом можно продолжить.
Я пытался сделать ОР максимально независимым от любой ОС, более того, с возможностью работы вообще без ОС. Единственный поток представляет собой цикл, в котором асинхронно (без ожидания события, с моментальным возвратом) опрашиваются:
– ввод звука. Если там есть данные, они добавляются к буферу, если набралось достаточно, передаются в кодек и далее пакуются и отправляются в сокеты при наличии соединения;
– чтение сокетов. Если есть входящие пакеты, они обрабатываются в соответствии с типом и текущим состоянием ОР. Если это голосовой пакет, декодируются и отправляются в буфер для проигрывания.
– чтение нажатой клавиши. Код клавиши преобразуется в символ, дописывается в мой буфер. Если символ управляющий (например, Ввод), буфер анализируется, и выполняется, например, команда или отправляется в чат. Причем я не могу асинхронно ввести всю строку, а только посимвольно (точнее – поклавишно), поломав (переключив в raw) стандартную консоль.
Последнее как раз и реализует ту псевдоконсоль, которая обсуждается выше. Но это не полноценная консоль, иначе бы пришлось кодить пол-ядра самому. Это минималистический эмулятор консоли, его можно (и нужно) вообще отключить при использовании ОР чисто в виде демона для стороннего IM. И есть смысл рассматривать команды, реализованные в нем, не как пользовательские, а в качестве низкоуровневого интерфейса взаимодействия между демоном ОР и каким-то отдельным пользовательским интерфейсом, запущенным в отдельном потоке (и в отдельном окне). На сейчас имеем Telnet и WebSocket. Не вижу проблем написать код, с одной стороны подключающийся к демону ОР через Telnet, а с другой – реализующее в полноценной Linux-консоли любое из вышеозвученных желаний, или даже все вместе, настраиваемые через конфиг. По трудозатратам это будет где-то так же, как был браузерный GUI на WebSocket, но проблема в том, что я понятия не имею, как сделать, чтобы всех устроило. Кстати, в моих Windows-проектах тоже всегда кто-то критиковал именно GUI: кому-то хотелось кнопки, а кому-то галки, кто-то возмущался по поводу выпадающих меню и требовал мини-бар.
Так что можно продолжать
циркобсуждение, и я тут не советчик. Как определитесь, подумаем, как это можно закодить, и сделаем в кратчайшие сроки.Если планируется консольный UI только под Linux, то проблем вообще не возникнет.
Команды можно придумать любые, интерфейс преобразует их в набор низкоуровневых команд ОР и передаст через Telnet. Точно так же можно отпарсить сообщения от ОР и преобразовать во что угодно для вывода пользователю. Будет желание придумать юзабельный командный интерфейс для практического пользователя – всегда Welcom.
А достаточно подробное описание практически всех низкоуровневых команд представлено в доке на ОР[link148] (англ.)
Эврика!!! Возникла фикс-идея, как спасти тов. Gegel от нашего нескончаемого флуда.
Подробности здесь[link201].
в многие современные браузеры включена поддержка стандарта WebRTC. например в firefox встроили коммуникатор "hello". это p2p мессенджер построенный по стандарту WebRTC (шифрование DTLS-SRTP). Открытая альтернатива skype.
при желании/необходимости, можно использовать туннелирование через TOR, i2p, vpn...
Спасибо за чистку.
Как раз в этом нет уверенности. У Вас есть возможность провести простой эксперимент и опубликовать результаты? (я сам не проводил, но очень интересно): попробовать установить соединение между браузерами в локальной сети, изолированной от глобальной интернет? Кстати, каким образом происходит адресация, т.е. что является уникальным адресом клиента? IP? Или нужна регистрация на сервере WebRTC, Mozilla и т.п.?
Заменил статически ликованные сборки на сайте проекта на обновленные (по состоянию кода на github на 21.01.15). Старые сборки переименованы и по прежнему доступны по ссылкам:
http://www.torfone.org/download/oph_lin051114.zip
http://www.torfone.org/download/oph_win051114.zip
Просьба сообщать о багах в новых сборках.
Сейчас проводим общую чистку кода и прогон на различных анализаторах.
Потом займемся озвученными выше пожеланиями к интерфейсу. И, наверное, будем пробовать портировать и в Android NDK.
Gegel, есть кроссплатформенная библиотека SFML[link202], в архиве для Visual C++ есть пример VoIP.
А что нового, очень интересно, в обновленных сборках? Очень хорошо бы для для этого вести ченжлоги.
Спасибо за ссылку, но для ОР VOIP-библиотека уже точно не понадобится. Использование стандартных библиотек для VOIP – как раз та проблема, которая не давала реализовать эффективное решение для Tor: стандартные решения заточены для обычных условий, а не для высоколатентного окружения, в подавляющем большинстве используют UDP-RTP, и поэтому все сводится к UDP-VPN-TCP-Tor. Отказавшись от стандартов и от готовых библиотек, получилось вручную на нижнем уровне оптимизировать VOIP именно для Tor.
Хотя один вопрос остался открыт – видео. С каждым годом Tor становится все быстрее (не знаю, хорошо это или плохо), и уже сейчас, думаю, можно передавать 160*120 H264 видео с 5fps. Присматриваюсь к кросплатформенным библиотекам, использованным ZAS в его коммуникаторе. Можно будет попробовать сделать дополнительный интерфейс для видеопотока в демоне ОР, и, используя его, подключать отдельное приложение для отправки/приема видео через уже установленное ОР соединение. Это еще одно преимущество клиент-серверной архитектуры ОР: модульность.
Собственно, ничего для пользователя: pfactum помогает привести исходники в порядок после моих креативов, фиксит мелкие баги, см. коммиты на гите.
Если будут значимые для пользователя изменения, конечно же отдельно предупрежу здесь и заведу ченжлог.
С видео возникают дополнительные нюансы: синхронизация со звуком, и разбиение больших видеопакетов на размер, приемлемый для UDP. Довольно трудно сделать, чтобы работало мягко и ненавязчиво.
http://www.zas-comm.ru
Это означает, что возможно появление OnionPhone, работающего в Андроиде? Или он будет работать непосредственно в железе, совместимом с Андроид, но без него самого?
Может, не надо? По крайней мере пока. Поскольку противоречит самому понятию анонимности и безопасности, которое тем лучше, чем меньше идентифицирующих сведений об абоненте передается.
Для голоса вам уже и так приходится решать проблему анонимизации с помощью вокодера, а для видео тем более.
Ваш OnionPhone – по задумке серьезная программа, которой можно будет довериться, не чета всяким там Скайпам, и теме более не вот этой фигне[link203], которую глупые разработчики сходу пристегивают к "ВКонтакте» и "Facebook" – о какой безопасности тут можно вообще говорить? Впрочем, если для шпионажа для гражданами – самое то, не все ж одному Скайпу шпионить.
В-общем, мое глубокое имхо: видео в OnionPhone – очень вредная вещь.
Конечно, найдутся и противники такой точки зрения, и даже может, их количество будет перевешивающим. В таком случае, ведите, пожалуйста, две версии: одну без видео (для тех, у кого безопасность является приоритетным фактором) и без него (кому OP нужен так, для "поиграться").
Надо, 0лайтов, надо[link179]. :)
Тогда и голос не нужен.
Я бы вокодеру свою жизнь не доверил. Мне интересней другой подход: научиться быстро печатать, а потом скармливать набираемый текст программе, которая его озвучивает собеседнику. При проблемах со связью такой режим уже тестировался: я собеседника слышу, а он видит только то, что я печатаю.
Gegel специально для таких "глубоких имх" как ваше указал: архитектура модульная. Хочешь — ставь модуль, не хочешь — не ставь. На самом деле, всё ещё проще: боишься видео — не используй, по умолчанию оно включаться на будет. Что ещё надо? Какая разница, есть ли такой функционал в программе?
ИзолентуПрищепкуКанцелярский зажим[link204] для камеры никто не отменял.Из двух зол обычно выбирают одно, и меньшее. С голосом хочешь не хочешь, но придется использовать, т.к. именно голос передает значащую информацию между собеседниками.
А морда лица – что? Одни эмоции. Без которых можно вполне обойтись.
Конечно, его можно использовать еще как уникальный идентификатор, ключ, чтобы убедиться, что собеседник не подстава. Но тогда уж лучше отпечаток пальцев или сетчатка глаза.
Я тоже. Но разве речь идет о защите сеанса разговора одним лишь вокодером?
Нет, речь о комплексе мероприятий, используемых в OP – шифрование с помощью самого OP, далее за счет ресурсов сети Tor, опять-таки, анонимизация с помощью Tor, и как еще одна ложка меда – вокодер.
Кстати, в принципе есть такие вокодерные алгоритмы, которые начисто уничтожают индивидуальные характеристики формант и прочих особенностей голоса (чуть ниже).
Ооооо! Не один вы над таким думаете, я уж лет несколько точно :)
Но потом голосовой анализатор Гугля подсказал более продуктивное решение – сначала речь распознается и переводится в обычный текст, который затем с помощью обычного речевого синтезатора переводится снова в речь, но уже – без всяких индивидуальных признаков.
Вопрос только в том, где взять такой алгортим распознавания, который можно использовать в OP.
Найдете – поставим вам памятник в PGPRU. При жизни :))
Не. Тогда уж лучше модульный. Поскольку вы забываете, что создание универсального "комбайна" – это неизбежный рост ошибок кода и путь в никуда. А модульный подход к созданию софта всегда упрощает реализацию и упрощает работу программиста.
Поечему путь в никуда – краткий пример: вспомните, как развивалась ICQ. Когда она была маленькой и крохотной, ею с удовольствием пользовались все. Но когда глюпый Mirabilis превратил ее в раздутого непоротливого монстра с кучей надуманных фич, тут же стали появляться компактные клоны, и народ стал разбегаться на них. И одним из наиболее востребованным конкурентом стала крохотная юркая Miranda, которая как раз и построена по модульному принципу – вешай на нее что хочешь. Потом Mitabilis спохватилась и выпустила облегченную Lite-версию, но было поздно, поезд ушел.
Конечно же, модульный принцип, API, плагины и все такое, тут с вами полностью солидарен.
Отличный инструмент – это НЕ универсальный инструмент. Не надо губить этим пагубным универсальным принципом OnionPhone – его ждет большое будущее! :)
Если идёшь по улице и тебе позвонили — да. А дома можно и на клаве понабирать. :)
Обычно — да, но у каждого свой сценарий. Если собеседник знает голос, то не скроешься. Если у противника-собеседника есть выбор лишь из нескольких подозреваемых, а ФИО всех подозреваемых известно, то тоже. Это превращается в средство сокрытия местоположения говорящего, но не анонимности, и анонимность тут висит разве что на вокодере.
У этого метода есть принципиальные ограничения в плане безопасности. Где бы речь ни происходила, если она произносится вслух, вероятность её утчеки намного выше. Могут случайные прохожие подслушать, могут соседи, могут быть микрофоны-жучки, может быть активирован микрофон на рядом лежащем мобильнике... Всё же распознавать речь по стуку клавиш, на мой взгляд, сложнее, чем прослушивать непосредственно. «Есть такие вещи, о которых вообще не стоит кому-либо когда-либо говорить вслух» ©. :-)
5лайтов, ты ведь создал под себя тему Флуд по поводу Voice over TOR[link201]. Вот и писал бы в неё, там для твоих постов лучшее место.
Дело не в том, что она стандартная, а в том, что она кроссплатформенная :) В Linux без X-ов совсем не много вариантов. Главное, что в ней есть необходимое для сети и гуя.
Еще как можно. Но тогда возникает проблема быстрого набора, не все набирают со скоростью классной машинистки.
К тому же при этом возникает вопрос: а зачем, собственно, переводить потом набираемый текст в голос? Проще уж тогда оставить его как есть, и пользоваться давно придуманным TorChat'ом – скорость считывания текста текста с экрана даже выше, чем скорость произношения и понимания голоса.
Так и я о том же – одним вокодером себя не спрячешь, нужен комплекс мер по защите.
В широком смысле безопасности – да. Но ведь мы рассматриваем здесь модель OnionPhone, в которой микрофон и наушники – его непременные атрибуты. По крайней мере Gegel пока не анонсировал их замену на что либо другое.
Между прочим, в прошлом году или раньше неоднократно встречались публикации о действующих разработках, которые стук клавиш переводят в текст с большой достоверностью :) Ссылки не сохранил, но в гугле найдете.
Очередной вброс дерьма на вентилятор от флудера :(
Люди здесь по делу пишут! А если невыносимо хочется повыпендриваться – топай в тот самый топик.
Молодёжь пишет быстро. Даже я, фактически двумя пальцами, набираю не намного медленнее, чем говорю. Если не надо рассказывать что-то длинное, а в основном речь будет из коротких фраз, то можно и набирать вместо того, чтоб говорить.
Я имел в виду более общую постановку задачи. Допустим, вам нужно позвонить кому-то на самый обычный телефон. Вы звоните через Tor. Пусть это даже не OnionPhone, а что-то похожее.
Естественно, я в курсе[link205] про всё это.
Молодежь – конечно. Я набираю больше, чем двумя пальцами – аж тремя :), но при увеличении скорости набора делаю много ошибок, так что бесполезно.
Зато есть знакомый, который таки освоил слепой метод набора. Посмотрим, какая у него будет скорость :) Может, и у вас найдутся такие скоростники.
А еще можно добавить что-то вроде T9, и скорость еще повысится.
Ммм... на обычный – это как? Через Voice-шлюз, что ли? И как все это выглядит в целом, что-то не постигну изюминки.
У меня был момент, когда я понял, что ошибаюсь меньше, когда смотрю не на клавиатуру, а не экран. На клавиатуру я сейчас редко посматриваю, в основном на экран, а пальцы тарабанят по моторной памяти.
VoIP-шлюз только.
Ну как... если сейчас надо позвонить анонимно, не раскрывая своего местоположения, то можно сделать так: вы → Tor → приватный прокси → Skype → Skype Out → обычный телефон. Голос свой при этом не скроешь, звонки все записываются, а голосовой банк данных пополняется, поэтому на один вокодер надеяться глупо. Можно попросить позвонить кого-то другого, но факт останется фактом — чей-то голос придётся засвечивать хотя бы как-то, хотя бы с вокодером. Иной вариант — когда набираешь на клавиатуре в реальном времени, а абоненту это всё читает механический голос. Ряд типичных фраз или какой-то длинный текст при этом можно заранее подготовить, чтобы не набирать его в момент разговора. Это типа T9, но если оно заточенно под конкретный разговор, можно сделать себе ещё удобней.
Понятно. Но не совсем :) Что здесь подразумевается под "приватным прокси"? Именно в нем, кмк, изюминка, от которой многое зависит.
Еще вместо стремного и проприетарного Скайпа можно использовать открытый SIP, например, через sipnet.ru, по крайней мере будет пополнятся не американский, а российский банк. Впрочем, все зависит от модели угрозы – кого больше боимся, от того и убегаем ;)
В любом случае здесь, по вашему мнению, какая решается задача – скрыть место, откуда звонят? Или еще что-то?
А что SIP только в росии?
Вообще скрыть что звонят.
Что за чудо? Вы уверены что можете загнать Скайп в прокси? )))
Пробовали подумать в сторону записи голосового сообщения, которое в зашифрованном виде передается получателю-абоненту?
До этого момента надеялся, что sipnet.ru и его внутренние каналы российские.
Да, можно скрыть факт и личность звонящего, а получателя звонка и содержание разговора, все равно не скрыть. И значит, подставляем получателя звонка. Поэтому в таком звонке нужно говорить всего одну фразу:
© Возьми трубка [OnionPhone] – гаварить будем!
Откровение. У вас жесткие ассоциации с sip – sipnet.ru.
Может Это[link206] поможет расширить кругозор )
Очередной пример:
https://www.youtube.com/watch?v=ARVj22o59IE
Долго вслушивался в аудио. Это точно не GSM, и, скорее всего, не TETRA. С одной стороны, кодек слишком качественный, как для спецсвязи. Скайповский silk? С другой – практически нет окружающих шумов, как будто использован подавитель NPP7. Хотя ролик слеплен из кусков, шумы могли просто вырезать позже. Попробую еще глянуть на спектранализаторе, уж очень интересно, чем же реально пользуются те, кого защита должна бы заботить практически, а не теоретически. Неужели и вправду скайп?
Так я имел в виду только sipnet.RU, а не произвольных SIP-провайдеров.
На страничке[link207] ничего такого, указывающего на иностранщину.
Охватываемые города тоже русские – Москва, Санкт-Петербург, Тула, Челябинск, Барнаул, Екатеринбург, Ижевск, Краснодар и другие. -
Выход их этого провайдера за рубеж – то понятно, другая тема. Так что не знаю.
Но вряд ли абонент из Тулы будет попадать в Краснодар через Париж.
так это про программе минимум. если нужно забугорские, то воопще без проблем )
ключевое слово – "например".
И о SIP:
http://zik.ua/ua/news/2015/01/.....z_terorystamy_558778[link208]
Безопасность таких штук весьма сомнительная.
Ну и ладно, фиг с ним с этим вашим сипом :-) Меня больше заботит другое: как инициировать первый сеанс связи по OnionPhone с собеседником? Ведь для этого ему нужно передать (или получить) персональный onion-идентификатор.
И тут же возникает вопрос: по какому каналу его передать, если мы доверяем только самому OpnionPhone, считая его здесь наиболее стойким? (иначе зачем мы пользуемся им, а не другим средством обмена).
Использовать для этого вспомогательные костыли типа PGP и прочая – извините, веры им нет. Хотя бы потому, что их ключи передаются по открытому каналу – в отличие от данных OnionPhone, которые помимо того, что достойно им шифруются, так еще успешно маскируются (а еще трижды шифруются) с помощью сети Tor.
А передать идентификатор впервые с помощью OnionPhone понятно дело, тоже невозможно, поэтому возникает своеобразная проблема первичности "курицы или яйца" :)
Нечто вроде подходящее для решения этой задачи обнаружилось здесь[link209], но не уверен в этом, поскольку не вполне понял этот алгортим, одно понятно: здесь на помощь тоже привлекается Tor, что как бы обнадеживает.
Допустим, что запись подлинная. Очень часто прослушки гуляют по инету в нескольких вариантах: более подробном и более порезанном. И все они звучат также чисто.
В звуковых редакторах есть эмулятор GSM-канала, поэтому сделать правдоподобный фэйк было бы проще: можно накрутить сколь-угодно шумов, пропусков и пр. Но все такого рода записи чистые. Ещё в звуковых редакторах есть чистилки шумов, особенно по образцу шума. При этом, голос таким способом можно выделить особенно качественно. Т.е., если запись подлинная, то она настолько обработанная, что определить по простому с чего она снята будет сложно.
Ещё вариант получения качественной подлинной записи: возможно снимают сигнал со станций (с вышек), которые находятся рядом с абонентами, причём и с той, и с другой стороны. Такой сигнал будет качественнее чем то, что слышат абоненты друг от друг на другом конце канала.
Исполняющий обязаности SIP?
Если серьезно, то sip проще пустить через vpn, чем tor. Хотя и последний пускается, но качество будети хуже.
Да просто технический момент. Траф должен выходить через какой угодно узел, но не через Exit-ноду Tor'а, потому что Skype тупо блочит Tor, здесь это обсуждалось. Если пользуете SIP, такой проблемы не будет.
Это голосовая почта. Кому она нужна? Тот, кто готов так извращаться, того и на OnionPhone можно посадить.
Вы всегда рассматриваете случай связи со своими, а рассмотрите связь с чужими или даже с противником, особенно если этому противнику от вас ничего не надо как бы, а вам надо ему передать информацию.
0лайтов, ты опять начал? pgpru ≠ ДПНИ.
Российские, а не русские.
Ижевск — это вообще столица страны Удмуртия!А, это 2015-ый год? Извините, что забегаю вперёд.Звучание не похоже на GSM, и дело даже не в том, что нет потерь и комфортного шума в паузах. Сам кодек звучит не характерно для CELP. Скорее, похоже на какой то HQ синусоидальный кодек: характерные переходы между голосовыми и безголосыми фрагментами. Конечно, мне медведь на ухо наступил, и это может быть лишь иллюзия.
Не могу понять нескольких моментов:
– если это не GSM/TETRA, а VOIP, то откуда у них на точке достаточно быстрый интернет-канал?
– если это какая-то армейская спецсвязь, то как ее взломали?
– если это не фейк, то зачем его чистить и резать, тем самым порождая сомнения?
У них таких перехватов десятки, всё лежит на ютубе, введите в поиск "перехват СБУ". Вы сранивали шумы в других записях?
В некоторых старых разговорах была информация общающихся сторон о том, что они не используют спецсвязь. Типа "говори быстрее и коротко", "некогда и неуметно детали сейчас обсуждать".
Там везде такой звук и во многих случаях вроде как подразумевается разговор по обычной мобилке. Даже номера мобилок публиковались.
Уже почти год, как это публикуют, а они всё-так и пользуются взломанной связью?
В любом случае, публикация рассчитана на широкий пропагандистский эффект, впервую очередь на телевидении. Звонки зрителей с мобилок в студию на всякие теле-радио-шоу тоже звучат качественно, некачественных часто отрубают «с вами плохая связь», иначе это никто слушать не будет. Может конечно и все звонки зрителей/слушателей на все теле/радио-каналы — тоже фэйк.
Странно, что никто не отреагировал на эту проблему. Получается, она у всех решена? Тогда хоть поделитесь, как вы ее решили. Или тоже не знаете как?
Мне не удалось придумать ничего такого, чему можно доверять. Кроме самолета или теплохода (не обязательно белого).
Речь идет о разговорах с командировошным на остров Магадаскар. Общаюсь с ним по Jitsi. И как перейти на OpnionPhone, т.е. обменяться своми onion-идентификаторами, не засвечивая их в Интернете? Получается, надо лично либо лететь на ероплане (но полетов боюсь с детства), либо плыть на теплоходе (а там сами знаете – сомалийские пираты, акулы и т.п.). А передача данных по софтинам, основанных на открытых ключах, попадает прямо в пасть к АНБ.
Так как?
Я всегда знал, что у сторонников таких политических мнений есть полный букет заблуждений. Спасибо за очередное его подтверждение. Таки вы считаете, что PGP-ключи взламываются АНБ? PGP-ключами можно обменяться и через Tor, а сверить отпечатки — по множеству доступных каналов связи в надежде, что всех их АНБ перехватить не сможет.
Есть сервисы для одноразовых ссылок, тот же secserv.me[link211], контент можно закрыть паролем и, по умолчанию, ссылка может быть открыта и прочитана лишь раз. Содержимое шифруется в браузере средствами JS до отправки на сервер. Конечно, у этого есть определённые «но»[link212], как и у всех других средств.
5лайтов, так у вас есть shared secret, или нет? Если есть, отправьте через любой OTR-чат, там есть протокол проверки OTR-ключа через заранее известный обеим сторонам секрет. А если нет, то от Евы Вас спасёт любое асимметричное шифрование, а от Мэллори не спасёт ничего.
От Мэллори 5лайтов спасёт квантовая криптография.
Квантовая тоже требует аутентифицированного канала.
5лайтов, наверное, у вас сложилась не совсем верная картина ассиметричной криптографии в целом.
Онион-адрес – это по определению публичная информация (хеш публичного ключа вашего скрытого сервиса). Примеры: ovp, silkroad, r2d2.
В любом случае, философски, для начала общения вас и вашего будущего собеседника должно хоть что-то объединять, отличая от остальной массы, ведь так?
Есть масса возможностей обфускации, если это необходимо: та же стеганография, например. Но общий секрет все равно должен быть в начале. Ну, или PKI с цепочкой доверия, которую Вы почему то не признаете.
И, как конкретный вариант решения специально под Ваши страхи: заведите временный онион-адрес, обменяйтесь анонимно в открытую через сайт в онион, установите звонок ОР, аутентифицируйтесь (голосом, общим секретом), внутри в чате ОР обменяйтесь постоянными онион-адресами, а временные удалите wipe-ом навсегда.
И шифрование Tor, и слой ОР обеспечивают PFS: если первичное соединение не перехвачено (а MitM внутри Tor к HS выглядет маловероятным) и адресат не подменный (убедиться поможет как раз то общее, что вас объединяет), то дешифровать ваши постоянные адреса позже никак не возможно.
Она ebony?
Ёлы-палы, как же все, оказывается просто!
И не просто просто, а гениально просто!!! :)
Действительно, в этом случае для передачи окончательного идентификатора мы пользуемся именно тем, чему доверяем (в данном случае – OnionPhone).
Я уже чего только не пытался придумать (из, так сказать, врожденной скромности, промолчу :)), но до такой гениальной простоты был крайне далек.
Gegel, спасибо большое! Ведь этот простой и радикальный метод применим везде и повсюду – беру его на вооружение.
PS. Правда, есть один нюанс – в определенный момент (например, при передаче 2-го, т.е. окончательного onion-адреса) необходимо будет убедиться, тот ли это человек, за которого вы его принимаете.
Но поскольку OnionPhone передает и голос, задача упрощается.
А чтобы канал не успели перехватить и заменить голос голосом самозванца, необходимо время от 1-го сеанса, когда передается 2-й адрес, сократить до минимума.
Ну вот. Много ли человеку для счастья надо?
Голосовая аутентификация – не лучший вариант. Недавно в очередной раз обсуждалось рассылке moderncrypto. Можно пригласить хорошего актера-иммитатора, ведь в передаваемом голосе не так много идентификационной информации.
Но еще раз подчеркну: ведь голос – не единственное, что вас объединяет. Есть общие события до этого, общие знакомые, общее дело. Иначе не может быть идентификации в принципе – просто не с кем идентифицировать.
Эта общая информация может быть основой для формирования временного общего секрета. В ОТР такой секрет используется в протоколе социалиста-миллионера для сверки ключей. Мне показалось избыточным использовать СМП с нулевым разглашением из коробки для анти-MitM, в ОР для этого проводится сверка МАС от секретных слов, вычисленных с сессионным (одноразовым) МАС-ключом.
Есть еще интересный вопрос – отрицаемая голосовая аутентификация. Когда ломал голову над PGP-PFS почтой, была идея использовать такой вариант для инициализации переписки без PGP PKI. Вот кусок из описания[link213] (на моем ломанном англ.). Но в любом случае это не может считаться надежно, как и любая голосовая аутентификация.
А то! :) А скажите-ка вы, знатоки и не очень, положа руку на сердце – многие ли из вас пользовались этим элегантным приемом? ;-)
Который совершенно не требует специальных знаний, а только гибкости ума и подобен решению известной логической головоломки "Волк, коза и капуста".
Похоже, надо было более простой вопрос задать – "Знали ли вы об этом элегантном приеме?"
Но судя по обилию ответов на предыдущих, и так ясно – не знали, не использовали.
А коли так – "Прием тов.Gegel" тянет на Нобелевскую премию :)
Ну или хотя бы премию им. SATva :))
Перехожу к сабжу, есть вопросы:
1. Почему при коннекте возникает сообщение:
и как от него избавиться?
2. Как переключаются кодеки при разговоре – достаточно одному абонету выбрать его, или это должны сделать оба?
3. Наблюдал разницу в кодеках. Использовал дефолтовый, SILK, GCM и парочку еще каких-то наугад – разницы не чувствуется совершенно никакой. Почему?
4. У абонента под Linux слышится свое ослабленное эхо через 1 сек. От выбора кодеков не зависит.
5. При наборе и попытки коннекта с абонентом иногда возникает сообщение:
- здесь имеется в виду не свой скрытый сервис, а у удаленного абонента?
Знактоки на то и знатоки, что доверяют PGP.
Чем «знатоки» только не пользовались[link214]. А мессенджеры и голосовая связь интересны не всем.
Это да, интересное повествование, но на уровне Алисы и Боба это не более чем художественный свист во 2-м доме Старсобеса из "12 стульев".
А где конкретное проверенное рабочее приложение?
Спросите старшее поколение, и вообще людей, которые с компьютерами НЕ на ты – и вы поймете, что очень много людей противоположного мнения: для них голос привычнее.
Нельзя же их сбрасывать со счетов только потому, что они думают не так, как вы.
В коментах[link216] было проверено, что всё работает.
Вы не сможете[link217] безопасно общаться с такими людьми. Какой-то жалкий максимум выжать можно, но на приемлимом уровне не получится. Они обязательно что-то напутают и невольно сольют всю информацию.
К сожалению, не нашел в них такого приложения. Как тестовые плагины – да, в основной статье упомянуто. Но готового к употреблению приложения ни в статье, нив коментах увы, не наблюдается.
А какое криптосредство голосового общения вы имеете в виду? Если OnionPhone в нынешнем состоянии – согласен, но ведь он только в начале своего развития.
В конечном итоге на его основе может быть создано устройство, по внешнему функционалу подобное аппаратным криптофонам (которые сами знаете, давно существуют, но чересчур дороги). Т.е. в котором всего две кнопки "Закрываемся?" и "Ага", или вообще обойтись одной, а на индикаторе цветом индицировать режим секури, и тогда даже домохозяйка ничего не перепутает.
На всякий случай: под криптофонами имел в виду обычные мобильные телефоны с встроенным крипточипом. Помнится, Siemens когда-то таким баловалась, и она не единственная.
Какое тебе нужно приложение, если задача решается парой команд в командной строке?
При чем тут я и мои способности? Или вы? Речь шла о людях, упомянутых unknown следующим образом:
И оно так и будет – перепутают апостроф с кавычками, и сольют.
О чём? Для них всё просто: либо они учатся юзать софт, который им по силам, а вы или другие кураторы им в этом помогаете, либо не лезут к компу вообще. Старшее поколение — это очень растяжимое понятие. Вы имеете ввиду шестидесятников? Или восьмидерастов?
1.
Сообщение указывает, что в мультифакторной аутентификации используется недоверяемый ключ удаленного контакта.
В данном случае используется дефолтный ключ guest, включенный с сборку ОР по умолчанию и, естественно, известный противнику. Таким образом, протокол согласования ключей в начале разговора вырождается в обычный Диффи-Хеллманн. Обеспечивается защита от пассивного атакующего и PFS, но нет защиты от перехвата "человеком-по-средине" (MitM).
Т.к. обмен ключами производится в Tor-туннеле, то для осуществления MitM протокола Онионфона злоумышленник должен сначала отмитмить Tor, что само по себе маловероятно. Но если он это сделал, то все равно полностью деанонимизировал и разрушил шифрование самого Tor. В такой ситуации переписка Торчат, например, стала бы полностью доступна.
Думаю, если речь не идет о ядерном теракте в США, то об этом можете не переживать.
Надо вам и вашим собеседникам завести ключи с помощью утилиты addkey, подписать их с помощью PGP, добавить ключи в свои записные книги и затем обменяться ими через неаутентифицированные каналы. Все участники должны проверить подписи друг друга в полученных ключах и в записной книге установить уровень доверия к каждому.
После этого вместо команды -Oonionaddress использовать -Nname для дозвона.
Мне кажется, такие экстра меры Вам в данном случае ни к чему.
ОР предполагает независимое использование кодеков во входящем и исходящем канале. Вы можете управлять только исходящим кодеком, с помощью команд -С1 ... -C18
Кодек, выбранный вашим собеседником, будет использоваться во входящем канале, при переключении вы будете видеть сообщение о текущем значении.
На него повлиять Вы не можете, разве что попросите собеседника переключиться.
Скорее всего, потому, что Вы переключали исходящий кодек, и разницу, по идее, должен был бы чувствовать ваш собеседник.
Эхо, естественно, будет слышно, если у вашего собеседника не плотная гарнитура или динамики. Кроме того, нельзя исключить какие-то завороты на уровне пульсе-аудио, тут я не силен. Рекомендую попробовать выбрать в конфиге непосредственный alsa-доступ к аудио HW.
Конечно. Вопросы о таймаутах обновления HS (в т.ч. при смене IP интерфейса) неоднократно поднимались в Tor мейллисте, но я так и не понял окончательных выводов.
В тестах я поднимал два HS на разных машинах и на разных интернет-каналах, тестируя доступность друг друга. Иногда один из HS становился недоступен на несколько минут, хотя второй был доступен из первого Tor. Тут вопросы не ко мне, а к Tor project.
Хочется уточнить, а речь только о знатоках или "вообще"?
Встречал представителей старшего поколения, которые уверено пользуются Скайпом и Вибером. Попытка сэкономить ден знаки делает чудеса.
МТС заявила, что в ближайшем будущем видит смещение доходности в сторону услуг, связанных с высокоскоростным доступом LTE, 3G, а не услуг голосовой связи. Билайн придерживается такого же мнения. Поэтому в скором порядке разрабатыфваются собственные приложения аля Мультифон, как алтернатива WhatsApp и Viber.
Я уже сам сбился со счету этмессенджеров. Viber, whatsapp, telegram, всякие соц.сети со своим xmpp и прочее. Что-то слишком много их. Сейчас еще каждый ОПСОС свой запилит – раньше символов в смс мало было а сейчас заряда батареи хватать не будет из за десятка мессенджеров, работающих в фоновом режиме.
Мне кажется появится, а может и уже есть какой-то один "аккумулирующий" все остальные))
Особенно весело, когда люди не понимают, что у тебя нет смартфона, настойчиво предлагая их установить себе на телефон. Меня где-то (в банке, что ли) несколько раз спросили, какой у меня телефон, не андроид ли. Мне кажется, когда я им говорю «у меня не смартфон», они не понимают, что андроид ∈ смартфон.
В банке новая услуга: безопасное подтверждение платёжки SMS'кой. Мне оно не нужно, отказался. Они сделали вид, что всё поняли, и отключили. Пришёл домой — делаю платёж, сайт выдаёт ошибку подтверждения. Типа платежи карточкой без SMS-подтверждений не принимаются. Пришлось просить оплатить посторонних людей. Вот так раз в год понадобится воспользоваться пластиком... и тот раз он не поможет, а они ведь ещё деньги за работу со счётом и пластиком требуют.
Гость, мне кстати тоже были удобны карты с разовыми паролями, но что-то с год назад их начали отменять.Так что тоже подтверждение по смс. Но у меня смартфон, так или иначе нужен, а мессенджерами не пользуюсь – вообще не понимаю смысла в них.
Не смотря на то, что у меня андроид – я тебя понимаю, когда задалбывают в каждом заведении скачать их приложение доставки, оценки еды, одежды, зашел в ТЦ – скачайте карта_ТЦ.apk и тд. И ведь кто-то это делает наверняка.
Либо что то не доделали в банке, либо вы не до конца разобрались. Сбер?
Все работает.
Попробуйте почитать, поразбираться – просветление наступит обязательно.
Ведь вы сможете аргументировано объяснить человеку, который не имеет сотового телефона, зачем вам нужен смартфон?
Скорей всего.
Нет.
[offtop]
3D Secure[link218]? Вроде он пока не является принудительным и от этого можно отказаться. Или не ставить галку при выборе опций карты. Правда вам будет приходить спам по всем каналам, чтобы это включть, но можно заигнорить.
Попросите в банке отключить. Можно пользоваться карточкой вообще без мобильника. Научитесь выносить всему персоналу банка мозг примерно так, как у нас происходят дискуссии в форуме.
[/offtop]
Какой банк?
Нет. Потому, что он не примет мои аргументы, по той простой причине – что у нас с ним разные жизненные парадигмы. не значит, что кто-то лучше, а кто-то хуже – просто разные. Как и не принимают мои аргументы против соц.сетей две мои знакомые, компания одной из которой занимается организацией праздников и мероприятий, а у другой – фотостудия. У них там ЦА и плевать они хотели, на ZOG. Ну примерно так. Ну т.е., какие аргументы я предоставлю тому же unknown, который, на сколько я знаю – не пользуется телефоном. Ну за ненадобностью, справляется и без него. Я же не справлюсь. Смарт нужен для постоянного доступа к почте и прочим ресурсам.
Согласен, именно картой – без проблем. Клиент-банком зачастую нельзя. Получая карту – можно вообще левый телефон указать, звонить никто не будет.
Похоже на то.
Тем, кто постоянно в рахзъездах — да, у остальных интернет дома и на работе, зачем нужно что-то большее? Если есть крайняя срочность, мне просто позвонят.
Я это умею.
Мне даже ОПСОСы возвращали деньги после ругани с техподдержкой, раза три причём. Я даже их убедил в том, что они просто ворют деньги, и они с этим согласились. Какой-то раз произошла нежелательная задержка, из-за чего оператор подумал, что разговор окончен раньше, чем положил трубку. Я отчётливо услышал «Фу-у-у-у-х». Ага, мотают нервы другим — пусть помотают себе.Вот да, про меня.
Дома не до интернета. Дом – оффлайновый отдых) Как unknown выразился интеллектуальный дауншифтинг)
Сурово) Я всегда считал, что на другом конце провода роботы, по-человечески вообще ничего не понимают. А времени отнять может уйму.
А до этого, «не было ни единого разрыва» © ?
Насчёт форума я не сомневался. А если этот замечательный дар работает и в реале — так вообще никаких проблем. Начните с того, что по договору (посмотрите его подробнее на всякий случай) вам не имеют права навязывать 3D-secure (и аналоги), как и принуждать использовать мобильный, только как опцию. Вы имеете право в некоторых банках не указывать мобильный вообще, иногда пишите доп. бумагу и вам ставят прочерк вместо номера. Иногда карту нельзя оформить без мобильного — можете указать нерабочий номер и не отчитываться, почему он не работает.
Нужно иметь стройную логичекую структуру того, почему ты д'Артаньян, а они п-сы, и давить на это. Я читал ранее статьи про воровство ОПСОСов, тут кидали ссылки, это помогло. Сказал, что согласия не было, никто ничего не тыкал, не предупреждал, а деньги списали. Они сказали ОК и отключили платежи через интернет. Потом снова списали. Звоню повторно. Как же так, людей обманываете. Раз сказали, что отключили, почему я в детализации вижу списания? За что? Почему в личном кабинете нельзя поставить блок на все короткие номера? Почему там столько опций, а этого запрета нет? Как его поставить лично? Им пришлось подтвердить, что такой опции нет именно для развода лохов, а отключить нельзя вообще никак, только через звонок в техподдержку. Короче, бил на факты и несоответствия сказанного и сделанного, орал, грозился судом. Им этого оказалось достаточно. На самом деле, надо после оформления симки сразу прийти к оператору и попросить отключить все платные услуги, это делается, тогда ни короткие номера, ни платежи с мобильного баланса работать не будут. На самом деле на той стороне провода тоже люди сидят, так что часто удаётся договориться, что к чему. Но если честно, все эти ожидания дозвона, нервы и прочее порой не стоят возвращённых денег. Тут, как и везде, рулит принцип: предупреждён — значит, вооружён; знания — сила. Надо сразу идти в офис ОПСОСа после покупки симки и просить отключить. Конечно, не прошедший через всё это обыватель знать таких деталей не будет, на них ОПСОСы и навариваются.
Если технология отработана, то ее применение почти бесплатно. Технология будет применяться в возможно большем количестве случаев, с максимальной широтой охвата. Для этого технологии и создаются, не так ли?
Точка зрения "кому я нужен – ведь я не террорист" является опасным обывательским заблуждением.
Например Сбер.
Я не говорю о том, что вы его должны
вовлечь в сектуубедить пользоваться смартфоном, речь идет о том, что убедить человека, что есть случаи когда использование крайне необходимо. Если человек не способен понять, что кто то в чем то может нуждаться, то вероятно такой собеседник не достоин особого внимания.Накой нужен такой банк, который сует свой нос и диктует условия без учета интересов клиента. Этого
говнадобра кучи. Зайдите на сайт банки.ру. Там становиться понятно, что у ЦБ непочтатый край работы. 90% – это карманные банки для отмывания, а, в последствии, и кидания клиентов.В конечном счете, что мешает сверить отпечатки ключей?
Отработана технология MitM соединения со входящим узлом Tor???
Ну, тогда вообще нет смысла использовать онионфон: анонимности все равно не будет, даже при гипотетически устойчивом шифровании ОР и сверке его ключей.
Если такая возможность и заложена, то только для суперэкстраординарных ситуаций и, скорее всего, одноразово. Во всяком случае, о регулярном скрининге 5лайтов с его проблемами речь не идет.
Для уважаемых участников былого форума, когда-то указавших мне путь истинный (особое спасибо 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 для минимизации утечек по побочным каналам (ЭМИ, тока потребления).
Торфон может работать в трех режимах:
Переделал 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-подписи в файле:[link219] http://torfone.org/download/Torfone.txt
Техническое описание[link220] (в т.ч. подробное описание протокола): https://github.com/gegel/torfone/blob/master/white.pdf
Корявая инструкция для Андроид-пользователей[link221] тут: http://torfone.org/download/Torfone_Android_howto.pdf
Код ядра[link222] на github: https://github.com/gegel/torfone
Статья[link223] на Habr: https://habr.com/ru/post/448856/
Буду рад, если проект окажется кому-нибудь интересен как решение или полезен для практической деятельности в нашей непростой жизни.
Моя почта: gegelcopy@ukr.net, gegelcopy@protonmail.com и torfone@ukr.net, PGP на сервере MITM и на форуме (с тех пор не изменился).
А уж как я рад, что после стольких лет забвения вы опять появились! :))
gegel, гляньте ваши почты, отправил вам сообщения, может, хоть какое-то доехало
Скомпилил под линукс, "find / -name torfone" ничего не нашло. Как запустить?
Был в разъездах, почту не смотрел.
Все пришло, ответил.
По компиляции под 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[link224]
Инструкции внутри. Саму RAD студию можно взять на рутрекере.
Конечно, это далеко не идеальный вариант, было выбрано для быстрого старта. Нужно будет все переписать на Qt под все системы, или, в крайнем случае, сделать для Android классически: в Android-студии + NDK. Но катастрофически не хватает времени.