Bug #1221
closedOTR
100%
Description
В общем и целом не работает. То есть невозможно установить OTR сессию между клиентами.
При попытке установки OTR-сессии со стороны LC происходит отсылка сообщений типа
→→→→→→ [18:31:51.618] →→→→→→ <message type="chat" id="qxmpp9993" to="lctu0@jabbim.cz/cz"> <body>hello </body> <request xmlns="urn:xmpp:receipts"/> </message> →→→→→→ [18:31:51.621] →→→→→→ <message type="chat" id="qxmpp9994" to="lctu0@jabbim.cz"> <body>?OTR:AAICAAAAxKEdCoutHja0NmYAiTXzu7fHh+8EBSJ6A1SVcUE//OCUj3w3pEWuAKYjVio7Zq8cZx0O7rb7GoZRUZg3JNeizMf+xLlOQDEsaPn/x+aSBVOZ1ic/s+V+7d2Q0joeDB2sBip6wnYTmyFYwsW1tYwnywrf5M9GotZaqX9/JmDFoqxZ0fXBhGwqKsfu/sfKOix5PPu7RukbyOdjdGMj7P+rXE/+k394/kN1Qv+sVgUWwNI1TWBLuh1/vUK+olIarK7q1IRFEBQAAAAg9DhuHBw9RGWFHLAYho7Z8LebeoHxEKqRJ/q1Xm9PwZI=.</body> <request xmlns="urn:xmpp:receipts"/> </message> →→→→→→ [18:31:51.623] →→→→→→ <message type="chat" id="qxmpp9995" to="lctu0@jabbim.cz"> <body>?OTR:AAIKAAAAwI4fe4rUml2U/F5WOf/GC5kSgcUybHhv3Zg2KPSsXUq40V/bYWaJnbxHYtSu55UMKOyxF5eGCVh2/ktRoK5FoGOVRnXmNBGCwser71SBD1Y37EdaHOHyDpE+ELWe7NBrCV2p58xmy1cK/ni4nsWpglB81E7GBqedT/UZOvoWRIoiOYgGoWxkFb7B3q9WRg+IW0UZ+iCEaIGkYoff2K/hsXPPQOZCyDfdn+oADsPN9mlk8zJi34OMmrVVJ/p+j6jYaw==.</body> <request xmlns="urn:xmpp:receipts"/> </message>
Реакции со стороны другого клиента на это - никакой, кроме отображения первого незашифрованного сообщения.
При этом кнопка OTR остается нажатой и у пользователя может сложится впечатления установления защищенного сеанса.
При попытке инициировать OTR-сессию со стороны другого клиента (В данном случае Psi+, но подобное поведение наблюдалось и с Pidgin). происходит такой диалог:
<message to='lctu0@jabber.ru' type='chat'><subject></subject><body>?OTR?v2? *lctu0@jabbim.cz* has requested an Off-the-Record private conversation. However, you do not have a plugin to support that. See http://otr.cypherpunks.ca/ for more information.</body></message> <message from="lctu0@jabber.ru/Azoth" type="chat" to="lctu0@jabbim.cz" id="qxmpp11418"> <body>?OTR:AAICAAAAxBdl4THzzQAnu0a3VAw3ab5Z7qKTOG5K81RSKRjDcqxKMavWA/zCGVPlEjbzDg6t0Ct1z1uim/sEJQnhJufphLr29LhDqGFYUSs6/3aGReBZYxBrIuof10mxzGS5wr9nmOlngW+40miFQpEH+q+wucB8MTJVpbWCJvTcge/VGXSLKmH7KVh5wrjjoS49mRsdPK5RD25ZulBhBPlrijQ1xkf6vHGKkZ41aOw652Qfd1UEmMpeMle41ra00AlsVQnQGjmCGIYAAAAgkVkr/RGy7lhEuasVcMENLJMTVqK9DsXaQhy5if/c8Yc=.</body> <request xmlns="urn:xmpp:receipts"/> </message> <message to="lctu0@jabber.ru/Azoth" id="aae3a"> <received xmlns="urn:xmpp:receipts" id="qxmpp11418"/> </message> <message to='lctu0@jabber.ru' type='chat'><subject></subject><body>?OTR:AAIKAAAAwCrepSdb/pYENy3taVnHlh5eL3q5xoumjycATHuF0GTGSymkC5qOBXloS/3BtHQehx2C7J8QeeAnl4T22VDWP4Ng+5Kf2xykYS3WQYRvh5YeOIv9wdVm0vMN5OMvKb7ACbUgpY26b2T6bbNcFAhbl6aM8y814T07SniER0gRUF4C05FJ1V9Yw7CJEzZ5AGlqMW/pw2sEgXBs9S7ilPZGSGQJjiCslPdzpMxrdBFwl0I/WmdeeDl5Cs0ntH87wHPs/Q==.</body></message> <message from="lctu0@jabber.ru/Azoth" type="chat" to="lctu0@jabbim.cz" id="qxmpp11419"> <body>?OTR:AAIKAAAAwEWTwo+ueH+aw2faSf7ivpcDvpqKApGNlRABaVvQfxpfDIU98CQee9r2/Fc2KJ6lV4oT1c4RUoEsRCMo198j4Nl3V8TqE8CTzErTL0OCXJKkIG0AGUuA4xLXC4O5Td+wNLHIiGhFxjMt7F3TbBR+ZatBx/P+DC8nGpSoehJtZk85UWYQuJvzi9YIBfHGsVpUwRduy9YhGe52PnvPDK3GnCm1HNERoujeChgjuZXNHWc4AgqqNu92fBTRoy7oVebmPw==.</body> <request xmlns="urn:xmpp:receipts"/> </message> <message to="lctu0@jabber.ru/Azoth" id="aae4a"> <received xmlns="urn:xmpp:receipts" id="qxmpp11419"/> </message> <message type="chat" to="lctu0@jabber.ru/Azoth" id="aae5a"> <body>hello</body> <active xmlns="http://jabber.org/protocol/chatstates"/> <request xmlns="urn:xmpp:receipts"/> </message> <message from="lctu0@jabber.ru/Azoth" type="chat" to="lctu0@jabbim.cz/cz"> <received xmlns="urn:xmpp:receipts" id="aae5a"/> </message>
И как в предыдущий раз, в личкрафтах показывается, что беседа защищена.
То есть, судя по всему, плагин лишь создает видимость защиты.
Исходя из текущего положения, рекомендую заблокировать установку этого плагина по умолчанию до исправления.
Кроме того, необходимо отметить, что в плагине не реализованы стандартные настройки:
1.поведения по инициализации зашишённой беседы;
2. генерации новых ключей и авторизации известных;
http://jabberworld.info/OTR
Updated by 0xd34df00d about 11 years ago
- Status changed from New to Assigned
- Target version set to 0.6.60
Updated by 0xd34df00d about 11 years ago
- Status changed from Assigned to Resolved
- % Done changed from 0 to 100
Applied in changeset main|commit:82b20aa1070dc41f0118cf5ddec5cdeecbeeceed.
Updated by Mellon about 11 years ago
Нет двух достаточно важных вещей.
1) При инициировании OTR сессии собеседником не происходит включения шифрования. Фактически, шифрование включается с приходом первого зашифрованного сообщения, а не при инициировании сессии. В итоге, собеседник может иницировать шифрованную сессию, но если вы отправите ему сообщение первым, то оно уйдет не зашифрованным.
2) Нет реакции на завершение сессии собеседником.
Так же, немаловажной деталью является явное уведомление пользователя о событиях OTR-сессии.Крайне желательно выводить эти события в чат наподобие следующих:
- При исходящих событиях
*** Попытка начать защищенную беседу *** Непроверенная защищенная беседа начата *** Защищенная беседа завершена
- При входящих событиях
*** Непроверенная защищенная беседа начата *** lctu0@jabbim.cz завершил(а) защищенную беседу, сделайте то же самое и вы.
Updated by 0xd34df00d about 11 years ago
- Status changed from Resolved to Assigned
- % Done changed from 100 to 60
- Estimated time changed from 8:00 h to 12:00 h
Updated by Mellon about 11 years ago
В свете последних изменений можно сказать, что инициация и завершение сессии сделаны на 90%.
Остался один момент
В случае, когда собеседник завершил сеанс, а мы - ещё нет, не отображаются открытые сообщения которые нам посланы.
Они должны отображаться в виде:
[07:09:04] <lctu1@draugr.de> The following message received from lctu1@draugr.de was not encrypted: [test ]
Updated by Tehnick about 11 years ago
Mellon wrote:
В случае, когда собеседник завершил сеанс, а мы - ещё нет, не отображаются открытые сообщения которые нам посланы.
Они должны отображаться в виде:
[07:09:04] <lctu1@draugr.de> The following message received from lctu1@draugr.de was not encrypted: [test ]
В сборке с libotr 4.x они отображаются примерно так:
[07:09:04] <lctu1> The following message received from lctu1 was not encrypted:
[07:09:04] <lctu1> test
Для libotr 3.2.x надо пофиксить, согласен. У меня ее нет, но насколько я помню, нужно посмотреть в сторону notify(), которую удалили в libotr 4.x.
Updated by Tehnick about 11 years ago
Для libotr 3.2.x надо пофиксить, согласен. У меня ее нет, но насколько я помню, нужно посмотреть в сторону notify(), которую удалили в libotr 4.x.
Сорри, опечатался. Я про display_otr_message(), конечно.
Цитата:
3.1.1. Removed Operations /* Display a notification message for a particular accountname / * protocol / username conversation. */ void (*notify)(void *opdata, OtrlNotifyLevel level, const char *accountname, const char *protocol, const char *username, const char *title, const char *primary, const char *secondary); The notify() operation was removed since it was used to pass in hardcoded English strings. This has been replaced by error and message event callbacks, described below, which pass event codes rather than hardcoded strings. /* Display an OTR control message for a particular accountname / * protocol / username conversation. Return 0 if you are able to * successfully display it. If you return non-0 (or if this * function is NULL), the control message will be displayed inline, * as a received message, or else by using the above notify() * callback. */ int (*display_otr_message)(void *opdata, const char *accountname, const char *protocol, const char *username, const char *msg); The display_otr_message() operation was removed for the same reasons as above for the notify() operation.
В Psi+ это выглядит вот так:
int OtrInternal::display_otr_message(const char* accountname, const char* protocol, const char* username, const char* msg) { Q_UNUSED(protocol); QString message = QString::fromUtf8(msg); if (QRegExp("^<b>The following message received " "from .+ was <i>not</i> encrypted: " "\\[</b>.+<b>\\]</b>$").exactMatch(message)) { return -1; } else { return m_callback->displayOtrMessage(QString::fromUtf8(accountname), QString::fromUtf8(username), message)? 0 : -1; } }
Updated by Tehnick about 11 years ago
Сорри, опечатался. Я про display_otr_message(), конечно.
Дедфуд уже пофиксил и молчит:
https://github.com/0xd34df00d/leechcraft/commit/3d33631
Updated by 0xd34df00d about 11 years ago
- Status changed from Assigned to Resolved
Updated by Mellon about 11 years ago
- Status changed from Resolved to Closed
Отлично. Не всё гладко, но, думаю, пора закрывать этот баг. И открывать уже более частные.
Спасибо.