LINUX.ORG.RU

Проверка есть ли шифровние в голосовом чате Conversations

 , ,


2

3

Есть программа Conversations https://github.com/iNPUTmice/Conversations для текстового и голосового общения между собой. В описании сказано что есть шифрование голоса через DTLS-SRTP. Я настроила у себя на сервере prosody и turnserver. Голосом можно поговорить, все нормально.

Подкючение происходит на порт 12345, он вроде как TLS но он также может принимать и не шифрованные данные сюдя по описанию. Измение строки cipher-list вообще ни на что не влияет, даже если туда белеберду подставить, поэтому и возникло подозрение что алгоритмы шифрования толком не работают.

Вопрос: - как проверить что голосовые сообщения от меня до сервера действительно зашифрованы?

Conversations стоит на телефоне с Android 9. А сервер на Ubuntu 20.04.1 LTS.

turnserver конфиг:

use-auth-secret
static-auth-secret=pasSworD
fingerprint
realm=1.2.3.4
tls-listening-port=12345
cert=/var/lib/turn/turnserver.crt
pkey=/var/lib/turn/turnserver.key
cipher-list="TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:!aNULL:!eNULL:!MD5:!DSS"
dh-file=/var/lib/turn/dh-2066.pem
external-ip=1.2.3.4
no-tcp-relay
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
allowed-peer-ip=10.0.0.1
no-loopback-peers
no-multicast-peers
no-cli
user-quota=8
total-quota=48
log-file=/var/tmp/turn.log
simple-log
no-tlsv1
no-tlsv1_1

Я настроила у себя на сервере prosody и turnserver.

На всякий случай для справки:

Измение строки cipher-list вообще ни на что не влияет, даже если туда белеберду подставить…

Смотреть в лог, не ругается ли на эту строку.

Вопрос: - как проверить что голосовые сообщения от меня до сервера действительно зашифрованы?

Запустить Wireshark, начать захват пакетов, позвонить, несколько секунд поговорить, потом в Wireshark в меню выбрать Telephony –> RTP –> RTP Streams –> (выбрать, потом анализировать, потом проиграть). Если слышен только шум, значит зашифровано. А вот как зашифровано - это уже другой вопрос. Для контроля позвонить, например, с помощью Linphone с отключённым шифрованием.

gag ★★★★★
()
Ответ на: комментарий от gag

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

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

У Wireshark есть консольная версия tshark. На андроиде, наверняка, можно через отладочный интерфейс получить дамп.

gag ★★★★★
()

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

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

Без сорцов и их полного анализа никак по сути.

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

gag ★★★★★
()
Ответ на: комментарий от gag

apk взят с f-droid, я думаю там собрали из исходников и линнего не добавляли и не выпиливали ничего.

Попробовала перехватить все пакеты на роутере и потом скормила их Wireshark. Вот результат анализа:

  • на своем сервере текстовый чат шифруется TLSv1.3 (все хорошо).
  • голосовой чат вообще не шифруется пакеты идут без шифовария и в поле данных видно: текст, IP и т.д.

Попробовала зарегистрироваться на другом готовом сервере и там посмотреть трафик для голосового чата, там все хорошо, видно что есть DTLSv1.2 и в UDP пакетах не видно текста или IP. Там голос шифруется, а у меня нет. У меня где-то ошибка, вопрос где и как это исправить?

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

Там голос шифруется, а у меня нет.

05-12 14:36:39.541 D/conversations(24312): java.lang.SecurityException: Use of DTLS-SRTP (XEP-0320) is required for content audio-session

...

iNPUTmice: Pidgin does not support encryption via DTLS-SRTP. Please open an issue on Pidgin. We have to plans to support unencrypted calls. (FWIW the stack trace you posted actually says this.)

#3725: XMPP/Jingle calling between Conversations (Android) and Pidgin (Linux)

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

gag ★★★★★
()
Ответ на: комментарий от gag

у тебя связь была между Pidgin-Conversations, а у меня Conversations-Conversations. На github сказано на счет Conversations:

Features

  • Encrypted audio and video calls (DTLS-SRTP)

Возможно Conversations врет, а возможно он действительно шифрует разговор, во всяком случаи я видела в перехваченном трафике пакет DTLSv1.2. Для более глубокого анализа скорее всего нужно детально изучать исходники, но у меня нет опыта анализа Java, я поросто не знаю это язык. Если кто-то хоть немного знает Java и его интересует безопастность разговоров, можете посмотреть внутрь исходников Conversations и сказать есть там хоть что-то похожее на шифрование DTLS-SRTP или нет?

P.S. Тикет что ты мне дал ссылку для более старой версии, возможно в новой версии реально добавили шифрование.

AnastasiaM
() автор топика
Последнее исправление: AnastasiaM (всего исправлений: 2)
Ответ на: комментарий от AnastasiaM

у тебя связь была между

Нет, у меня связи не было.

P.S. Тикет что ты мне дал ссылку для более старой версии, возможно в новой версии реально добавили шифрование.

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

gag ★★★★★
()

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

Harald ★★★★★
()
Последнее исправление: Harald (всего исправлений: 1)
Ответ на: комментарий от Gennadevich

там большое сообщество если бы не шифровалось то всплыло

Можно по подробнее с этого места? Что за сообщество и действительно ли они говорили голосом, а не текстом?

Особенно учитывая, что эта работа была проспонсирована фондом NLnet при помощи ЕС.

Для тех кто не понимает, поясните что это за фонд? Полезный ли он или он занимается вредительством?

AnastasiaM
() автор топика
Последнее исправление: AnastasiaM (всего исправлений: 1)
Ответ на: комментарий от AnastasiaM

DTLS-SRTP использует DTLS лишь для согласования ключевого материала. Далее он шифрует пакеты самостоятельно, посредством AES. Так что DTLS в дампе будет только для фазы handshake.

sanwashere ★★
()
Ответ на: комментарий от sanwashere

Эти данные что вы говорите это точно так? Как происходит согласование ключа шифрования для алгоритма AES если DTLS нет совсем? Ключ нельзя без шифрования передавать. Я пробовала крутить и настраивать сервер и насильно выключать шифрование DTLS, я видела что пакетов DTLS нет совсем при определенных настройках. Поэтому у меня и возникает подозрение что шифрование там не полное. Я пробовала открывать тикет и побеседовать с разработчиком но мои идеи ему не пронравились и он удалит мой тикет и забанил меня, я не могу туда писать ему. Такого отношения к пользователям программ я еще не видела. Вот что я предалагала: - индикатор что есть шифрование для голосового чата, это как аналог в строке браузера зеленая строка значит https, если красная строка значит нет шифрования и это http. Если у кого-то есть аккаунт прошу создайте тикет тут: https://github.com/iNPUTmice/Conversations/issues

Заголовок: Symbol of support for encryption for voice chat

Текст тикета:


#### General information

* **Version:** 2.9.0
* **Server name:** self hosted
* **Server software:** prosody 0.11
* **Conversations source:** F-Droid


#### Steps to reproduce

1. I made several settings on my own server to check the encryption of voice chat.
2. if remove all settings for encryption and forcibly prohibit the use of encryption, then a simple method is used to send via TURN without encryption.
3. I checked this by intercepting all traffic via Wireshark (no DTLS packages).
4. I again change the settings, i add encriptions on the server and watch the packages again via Wireshark.
5. I see that there are packages DTLS. 
6. Voice chat works independently whether there is encryption or not. this is similar to http(no encryption) and https(available encryption).

#### Expected result
I want to see the lock symbol for voice chat encryption. in a text chat, you have a lock symbol. the lock symbol is the same as in the browser, if there is encryption, then the address bar will be green, if there is no encryption, then the red line. When I first connect, I want to see the certificate for the voice server, its hash amount, and a button to confirm that I accept the certificate. this is analogous to accepting a certificate for text chat.

#### Actual result
there is no information about encryption for voice chat.
you need to add an indicator to display encryption in voice chat.

Вот скажите это предложение и идея за которую нужно банить людей?

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

Если так хочется деталей, то они есть в RFC 5764 (глава 4.2 как раз касается формирования ключей).

DTLS должен быть, но в виде обмена парой-тройкой пакетов. Далее на основе мастер-ключа формируются ключи шифрования для RTP и RTCP (если используется) посредством применения PRF с меткой «EXTRACTOR-dtls_srtp». Они уже используются для последующего шифрования полезной нагрузки (payload) пакетов, без использования record протокола DTLS.

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

sanwashere ★★
()
Последнее исправление: sanwashere (всего исправлений: 2)

Смотреть пакеты с помощью Wireshark

Ruslan5g
()
Ответ на: комментарий от AnastasiaM

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

Видимо он что-то заподозрил. У нас ведь он тоже не заладился, верно?

Aleksandra
()
Ответ на: комментарий от Aleksandra

Видимо он что-то заподозрил. У нас ведь он тоже не заладился, верно?

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

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

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

Да не, я не это имела ввиду.

Мы общались в жаббере, обсуждали твою проблему. Вижу она так и не решилась с того момента. Я хотела покраситься, а ты мне так и не ответил какой колор мне выбрать. У меня c estel 7/77 такой оттенок не выходит как у тебя на аватарке. (((

Ты так хорошо разбираешься в шифровании, может подскажешь с краской?

Aleksandra
()
Ответ на: комментарий от Aleksandra

У меня c estel 7/77 такой оттенок не выходит как у тебя на аватарке. (((

Цвет естественный не крашенный, поэтому по покраске я не смогу помочь.

Ты так хорошо разбираешься в шифровании…

Если ли бы я хорошо разбиралась в шифровании тогда этого поста небыло бы, я бы сама посмотрела что там внутри Conversations и есть ли шифрование? Что бы хоть как-то было видно что шифрование есть и идут пакеты похожие на DTLS нужно использовать вот такие настройки (это мои на сервере):

turnserver конфиг:

use-auth-secret
static-auth-secret=PasSwOrd
fingerprint
realm=1.2.3.4
tls-listening-port=12345
cert=/var/lib/turn/turnserver.crt
pkey=/var/lib/turn/turnserver.key
dh-file=/var/lib/turn/dh-2066.pem
external-ip=1.2.3.4
no-tcp-relay
# IP внутреннего сервера 10.0.0.1: 
allowed-peer-ip=10.0.0.1
no-multicast-peers
no-cli
cli-password=OtherPaSsWorD
user-quota=8
total-quota=48
log-file=/var/tmp/turn.log
syslog
no-tlsv1
no-tlsv1_1

Prosody конфиг (только его часть для TURN):

modules_enabled = {
"external_services"; -- доп модуль для включения TURN, для разговоров голосом. Файл модуля брать тут: http://modules.prosody.im
}
-- TURN STUN для звонков с conversations через модуль https://prosody.im/doc/coturn   и   https://modules.prosody.im/mod_external_services
external_services = {
    {
        type = "stun",
        transport = "udp",
        host = "1.2.3.4",
        port = 12345
    }, {
        type = "turn",
        transport = "udp",
        host = "1.2.3.4",
        port = 12345,
        secret = "PasSwOrd" -- пароль должен совпадать с тем что в файле turnserver.conf
    }
}






AnastasiaM
() автор топика
Ответ на: комментарий от Gennadevich

там большое сообщество если бы не шифровалось то всплыло

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

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

anonymous
()
Ответ на: комментарий от Harald

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

Бред.

Harald

Понятно.

anonymous
()
Ответ на: комментарий от Aleksandra

Мы общались в жаббере, обсуждали твою проблему. Вижу она так и не решилась с того момента. Я хотела покраситься, а ты мне так и не ответил какой колор мне выбрать. У меня c estel 7/77 такой оттенок не выходит как у тебя на аватарке. (((

Как тонко, оказывается, можно назвать человека дураком. Однако, есть ли причины?

Ты так хорошо разбираешься в шифровании, может подскажешь с краской?

Типо ТС с белыми волосами aka блондинко.

ИМХО, очень тонко.

anonymous
()
Ответ на: комментарий от anonymous

Анон чем-то недоволен? У анона есть более конструктивные предложения?

Harald ★★★★★
()

это ж надо быть таким мотивированным троллем, зарегать два аккаунта и 7 лет ждать, чтобы начать

Harald ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.