1. Главная страница » Компьютеры » Off the record messaging plugin

Off the record messaging plugin

Автор: | 16.12.2019

Содержание

moder

Администратор

Psi+ — это интернет-мессенджер, работающий по протоколу XMPP. Мы уже писали о связке Psi+ и PGP, а в этой теме рассмотрим также встроенный в Psi+ механизм шифрования OTR.

Для начала, пару слов, зачем это нужно. Ваша переписка в незашифрованном виде может быть получена третьими лицами разными способами: перехвачена на уровне провайдера, через открытый Wi-Fi, через корпоративную сеть и т.д. Наконец, большинство популярных мессенджеров (Skype, ICQ, Mail.Ru и др.) хранят вашу переписку на сервере и предоставляют к ней доступ по запросу органов (а это могут быть и оборотни на службе у ваших конкурентов). При использовании PGP или других механизмов шифрования, сообщение шифруется на вашем компьютере, а затем расшифровывается на компьютере вашего собеседника. Современные механизмы шифрования достаточно устойчивы к взломам, поэтому, даже если ваш трафик будет перехвачен, злоумышленники вряд ли смогут расшифровать ваши сообщения без ключа.

Программа Psi+ поддерживает два режима шифрование — PGP и OTR. Считается, что PGP надежнее, но зато у OTR есть одно важное преимущество: даже если ваш приватный ключ OTR попадет в чужие руки, то предыдущая переписка не будет скомпрометирована, поскольку публичный и приватный ключи используются только для первичной аутентификации пользователей, а все дальнейшие сообщения шифруются уже с помощью одноразовых AES-ключей (так называемых Message Authentication Codes или MACs).

Настройка OTR на Psi+

Итак, вы установили PSI+ на компьютер, осталось настроить шифрование. Для этого заходим в Настройки -> Плагины, выбираем из списка Off-the-Record Messaging plugin и ставим галочку Активировать .

Теперь заходим во вкладку Мои Личные Ключи и генерируем новый ключ.

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

OTR влючен, теперь настраиваем шифрованное общение с собеседником. В диалоговом окне нажимаем на замочек otr и выбираем пункт "Начать частную беседу".

Теперь нужно авторизовать друг друга. Для этого снова нажимаем на замочек OTR и "Аутентифицировать контакт".

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

1. Вопрос и ответ.
Вы задаете вопрос, который знает только ваш собеседник, и ответ на него, а ваш собеседник должен правильно ответить на вопрос.

2. Общий секретный ключ.
Здесь нужно написать одинаковую фразу обоим собеседникам, фразу безопасно можно передать через сервис https://privnote.com/.

3. Сверка электронного отпечатка.
Нажимаем на замок otr и выбираем "Показать свой отпечаток". После этого подтверждаем отпечаток собеседника.

Настройка PGP на Psi+

Если у вас Microsoft Windows любой версии, то вам потребуется скачать и установить систему шифрования и управления ключами GnuPG — GPG4Win. Скачайте Light версию , если вы планируете использовать PGP-шифрование только для общения. Если у вас Linux, то устанавливать ничего не нужно, поскольку GPG уже имеется в дистрибутиве.

Для корректной работы связки Psi+и GPG, необходимо установить gpg4win строго в папку C:Program FilesGNUGnuPG , где С — системный диск. Далее следуйте инструкции.

В Psi+ уже есть свой встроенный менеджер ключей, нам нужно лишь его активировать. Для этого заходим в Настройки — Плагины , выбираем из списка GnuPG Key Manager и жмем Активировать .

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

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

Авторами создана библиотека, распространяемая под лицензией GNU Lesser GPL, используемая для поддержки OTR клиентами систем мгновенного обмена сообщениям. Также на основе этой библиотеки авторами создан плагин для Pidgin.

Читайте также:  Acer iconia talk s lte

Фонд EFF рекомендует использовать OTR для защиты от прослушивания [1] .

Содержание

История [ править | править код ]

Первая версия протокола OTR и его реализация были представлены в 2004 году Никитой Борисовым и Ианом Голдбергом [2] [3] . В 2005 году была опубликована атака на первую версию протокола OTR и предложен исправленный протокол аутентификации [4] . В том же году разработчики OTR представили вторую версию протокола с исправлением протокола аутентификации, также дополнительно улучшив его [5] .

В 2007 году Оливер Гоффарт (англ. Olivier Goffart ) опубликовал модуль mod_otr [6] для сервера ejabberd, позволяющий автоматически проводить атаку типа «человек посередине» на пользователей OTR, не проверяющих отпечатки открытых ключей друг друга. После этого разработчики улучшили OTR с использованием решения задачи «социалиста миллионера» (англ. Socialist Millionaire ), позволяющего двум пользователям провести аутентификацию без обмена ключами или их отпечатками при условии, что они знают общий секрет [7] .

Основные свойства протокола [ править | править код ]

Протокол OTR разрабатывался для того, чтобы обеспечить приватность переговоров, аналогичную переговорам без использования средств телекоммуникаций [8] [9] . Для этого к разрабатываемому протоколу были предъявлены следующие требования:

  • шифрование сообщений — никто иной не сможет прочитать сообщения;
  • аутентификация собеседников — уверенность в том, кто является собеседником;
  • perfect forward secrecy — если потеряны секретные ключи, прошлая переписка не будет скомпрометирована;
  • возможность отречения — третье лицо не сможет доказать, что сообщения написаны кем-либо другому адресату.

Частично эти свойства реализованы в таких системах, как PGP и Trillian SecureIM. OTR отличается тем, что реализует все эти свойства в одном протоколе [10] .

Согласование ключей [ править | править код ]

Для передачи сообщений с использованием OTR участники протокола должны установить общий секретный ключ. Для этого используется протокол аутентифицированного распределения ключей (англ. Authenticated Key Exchange ), основанный на протоколе Диффи — Хеллмана [11] .

В начале протокола участники используют протокол Диффи — Хеллмана для установки секретного ключа, необходимого для передачи первого сообщения. Участники A и B выбирают простое число p <displaystyle p> и генератор g <displaystyle g> группы Z p ∗ <displaystyle mathbb _

^<*>> . A выбирает случайное число a 1 <displaystyle a_<1>> и отправляет B результат вычисления g a 1 mod p <displaystyle g^<1>><mod

>> . B выбирает случайное число b 1 <displaystyle b_<1>> и отправляет A результат вычисления g b 1 mod p <displaystyle g^<1>><mod

>> . Затем участники используют общий эфемерный ключ k 11 = H ( g a 1 b 1 ) <displaystyle k_<11>=H(g^<1>b_<1>>)> , где H <displaystyle H> — криптографическая хеш-функция SHA-1 [12] .

Обновление ключей [ править | править код ]

Для обеспечения perfect forward secrecy пользователи постоянно обновляют ключ во время обмена сообщениями [13] [14] . При передаче первого сообщения одна из сторон (например, сторона A) шифрует сообщение с помощью функции шифрования E <displaystyle E> с ключом k 11 <displaystyle k_<11>> , выбирает случайное число a 2 <displaystyle a_<2>> и передает B пару значений g a 2 , E k 11 ( M ) <displaystyle g^<2>>,E_<11>>(M)> . Для шифрования следующего сообщения используется ключ k 21 = H ( g a 2 b 1 ) <displaystyle k_<21>=H(g^<2>b_<1>>)> . В дальнейшем при передаче каждого сообщения A изменяет число a i <displaystyle a_> , а B изменяет число b j <displaystyle b_> , и ключ k i j <displaystyle k_> обновляется.

На практике сообщения доходят не мгновенно, поэтому после отправки сообщения от A к B и обновления ключа на стороне A, A все ещё может получить сообщение от B, зашифрованное старым ключом [15] . Участник A может быть уверен в том, что B обновил ключ, только тогда, когда получит от B сообщение, зашифрованное новым ключом. Поэтому A хранит достаточное количество старых ключей, чтобы иметь возможность расшифровать все сообщения, которые ещё не дошли. Для того, чтобы ключи все же обновлялись достаточно часто, сторона, у которой нет сообщений для отправки, время от времени передает пустые сообщения [16] .

Авторы статьи «Secure Off-the-Record Messaging» критиковали используемую в OTR схему обновления ключей как не предоставляющую дополнительной безопасности [17] . Так, в случае компрометации все ещё используемого эфемерного ключа k i j <displaystyle k_> , сторона, осуществляющая атаку «человек посередине», сможет модифицировать все последующие сообщения и используемые эфемерные ключи [18] . Также использование протокола Диффи — Хеллмана может требовать значительных (например, для устройств, питающихся от батареи) ресурсов [19] . Вместо этого было предложено использовать ту же схему, что и для ключа k 11 <displaystyle k_<11>> , либо требующую меньше вычислительных ресурсов схему, основанную на хешировании [20] .

Аутентификация ключей [ править | править код ]

Аутентификация всех эфемерных ключей, за исключением k 11 <displaystyle k_<11>> , осуществляется вместе с аутентификацией сообщений и описана далее [21] . Для аутентификации ключа k 11 <displaystyle k_<11>> используются долговременные ключи. В первой версии OTR использовалась небезопасная схема аутентификации, которая была впоследствии изменена [22] .

Оригинальная версия протокола [ править | править код ]

В первой версии протокола OTR для аутентификации начального ключа k 11 <displaystyle k_<11>> стороны подписывают соответствующие сообщения протокола Диффи — Хеллмана [23] . Также в этих сообщениях стороны передают свои долговременные открытые ключи.

Читайте также:  Asus geforce gt 1030 phoenix

A ⟶ B : S A ( g a 1 ) , P A <displaystyle Alongrightarrow Bcolon S_(g^<1>>),P_> B ⟶ A : S B ( g b 1 ) , P B <displaystyle Blongrightarrow Acolon S_(g^<1>>),P_>

Здесь S A <displaystyle S_> и S B <displaystyle S_> — цифровая подпись, P A <displaystyle P_> и P B <displaystyle P_> — открытые ключи сторон A и B соответственно.

Данная версия протокола содержит известную уязвимость [24] [25] . Сторона E, проводящая атаку «человек посередине», может выполнить аутентификацию одновременно со сторонами A и B, при этом выдав себя одной из сторон (например, B) за другую сторону (например, A), как показано далее.

A ⟶ E : S A ( g a 1 ) , P A <displaystyle Alongrightarrow Ecolon S_(g^<1>>),P_> E ⟶ B : S E ( g a 1 ) , P E <displaystyle Elongrightarrow Bcolon S_(g^<1>>),P_> B ⟶ E : S B ( g b 1 ) , P B <displaystyle Blongrightarrow Ecolon S_(g^<1>>),P_> E ⟶ A : S B ( g b 1 ) , P B <displaystyle Elongrightarrow Acolon S_(g^<1>>),P_>

После этого E не может читать сообщения, так как они зашифрованы известным только A и B ключом, но B считает, что он разговаривает с E, хотя на самом деле разговаривает с A [26] .

Более безопасные протоколы, такие как SKEME, рассматривались при реализации первой версии протокола OTR, но вместо этого был реализован собственный протокол, описанный выше [27] .

Вторая версия протокола [ править | править код ]

Авторы статьи Secure Off-the-Record Messaging предложили изменить протокол согласования и аутентификации ключей на один из уже известных протоколов, таких как SIGMA, SKEME и HMQV [28] . Также в этих сообщениях стороны передают свои долговременные открытые ключи.

Вариант протокола SIGMA, называемый SIGMA-R, работает следующим образом [29] :

A ⟶ B : g a <displaystyle Alongrightarrow Bcolon g^> B ⟶ A : g b <displaystyle Blongrightarrow Acolon g^> A ⟶ B : A , S A ( g b , g a ) , M A C H ( g a b ) ( 0 , A ) , P A <displaystyle Alongrightarrow Bcolon < ext>,S_(g^,g^),MAC_)>(0,< ext>),P_> B ⟶ A : B , S B ( g a , g b ) , M A C H ( g a b ) ( 1 , B ) , P B <displaystyle Blongrightarrow Acolon < ext>,S_(g^,g^),MAC_)>(1,< ext>),P_>

Здесь A и B — идентификаторы, S A <displaystyle S_> и S B <displaystyle S_> — цифровые подписи, P A <displaystyle P_> и P B <displaystyle P_> — открытые ключи сторон A и B соответственно, а H <displaystyle H> — криптографическая хеш-функция.

Авторы OTR использовали модифицикацию протокола SIGMA во второй версии OTR [30] . По сравнению с предложенным протоколом SIGMA, разработчики OTR защитили открытые ключи от пассивной атаки (прослушивания). Для этого открытые ключи передаются по защищенному каналу, установленному с помощью протокола Диффи — Хеллмана [31] . Также используемая в OTR модификация протокола SIGMA усложнена из-за ограничений на размер сообщения в некоторых протоколах (например, IRC) [32] Полное техническое описание используемого в OTR варианта SIGMA приведено в статье [33] и спецификациях OTRv2 [34] и OTRv3 [35] .

Аутентификация сообщений [ править | править код ]

В отличие от таких систем как PGP, OTR не использует цифровые подписи для аутентификации сообщений, так как они не предоставляют возможности отрицаемой аутентификации [36] . Вместо этого используется HMAC [37] .

Для аутентификации сообщений используется ключ K, полученный хешированием ключа, используемого для шифрования сообщения [38] .

Когда сторона A передает сообщение M другой стороне B, вместе с сообщением она передает вычисленное с помощью общего ключа значение HMAC(M, K) [39] . Сторона B, получив сообщение, может также вычислить HMAC(M, K). Если оно совпадает с полученным значением, то сторона B знает, что сообщение было передано либо стороной A, либо стороной B, но так как сторона B знает, что она сообщение не посылала, то она может быть уверена, что сообщение действительно было отправлено стороной A. В то же время использование HMAC обеспечивает отрицаемость: даже раскрыв ключ K, B не может доказать третьей стороне, что сообщение было отправлено стороной A. Сообщение также могло быть подделано стороной B и любой стороной, которая знает ключ K.

Раскрытие ключей аутентификации [ править | править код ]

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

Старые ключи, которые больше не будут использованы, могут быть уничтожены. Но ключи аутентификации также могут быть не только уничножены, но и раскрыты. Авторы OTR добавили раскрытие старых ключей: вместе с сообщением пересылается старый ключ аутентификации, если известно, что он больше не будет использован [40] . Такое решение объясняется требованиями отрицаемости протокола OTR [41] [42] .

В работе Secure Off-the-Record Messaging указывается, что раскрытие ключей аутентификации излишне усложняет протокол и может негативно быть небезопасно, как нестандартный для криптографии метод [43] . Автор основанного на OTR протокола TextSecure, известный под псевдонимом Moxie Marlinspike [en] также указывает на излишнюю сложность и неэффективность раскрытия ключей аутентификации для обеспечения отрицаемости [44] .

Шифрование сообщений [ править | править код ]

Для шифрования сообщений используется алгоритм AES в режиме счётчика [45] . Использование построенного таким образом поточного шифра обеспечивает спорное шифрование (англ. malleable encryption ). Это значит, что любой, кто перехватит сообщение, сможет выборочно изменить любые биты в сообщении. В частности, если сообщение стало известно, его можно изменить на любое другое сообщение такой же длины [46] .

Читайте также:  18650 С защитой или без как определить

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

Многопользовательский OTR [ править | править код ]

Протокол OTR разработан для использования только двумя сторонами. Таким образом, его невозможно использовать в каналах IRC, конференциях XMPP и т. д.

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

Существуют расширения протокола, предоставляющие возможность использования протокола несколькими пользователями [49] [50] [51] .

Одно из расширений протокола OTR, называемое GOTR (Group OTR), основано на идее создания «виртуального сервера» [52] . Один из участников назначается «виртуальным сервером», обменивается ключами с другими участниками и в дальнейшем все сообщения между участниками конференции пересылаются через него. Недостатком протокола GOTR является то, что «виртуальный сервер» может изменять содержание сообщений, добавлять и удалять сообщения, поэтому все участники конференции должны доверять ему [53] .

Позже Иан Голдберг с другими авторами предложили протокол mpOTR [51] . В отличие от протокола GOTR, протокол mpOTR работает без выделенного центрального сервера [54] .

Реализации OTR [ править | править код ]

libotr
Тип Библиотека
Разработчик OTR Development Team
Написана на C
Аппаратная платформа кроссплатформенная
Последняя версия 4.0.2(9 марта 2016)
Состояние Актуальный
Лицензия GNU Lesser General Public License версии 2 [55]
Сайт otr.cypherpunks.ca/index…

Основной реализацией OTR является библиотека libotr, созданная командой разработчиков OTR. На её основе теми же разработчиками создан плагин для клиента P >[56] .

Поддержка в мессенджерах [ править | править код ]

Встроенная поддержка [ править | править код ]

Следующие клиенты имеют встроенную поддержку протокола OTR [57] .

С использованием плагина [ править | править код ]

  • irssi[67]
  • Miranda IM[68]
  • P >[69]
  • Kopete
  • Tkabber (плагин) [70]

Прокси [ править | править код ]

Для клиентов, поддерживающих протокол AIM/ICQ, командой разработчиков OTR был разработан пакет otrproxy, представляющий собой локальный прокси-сервер [71] . Он позволял использовать OTR в клиентах, не имеющих собственной поддержки OTR. В настоящее время данный пакет не поддерживается, разработчики рекомендуют использовать клиенты с поддержкой OTR.

Off-the-Record Messaging (OTR) – криптографический протокол, обеспечивающий хорошее шифрование для общения в клиентах программ для обмена быстрыми сообщениями. OTR использует комбинацию алгоритма с симметричным ключом AES, протоколу Диффи-Хелмана и хеш-функции SHA-1. Созданный криптографами Ианом Голдбергом (англ. Ian Goldberg) и Никитой Борисовым (англ. Nikita Borisov).

Основной целью создания протокола было желание обеспечить надёжность и секретность общения онлайн без возможности записи, будто это была частная встреча в тет-а-тет (off the record – в журналистском сленге). Это контрастирует с другой группой криптографических средств, которые после процесса шифрования имеют исходные файлы, которые можно использовать для идентификации собеседников или выявления содержания общения. В большинстве случаев люди не знают об этом, а также, что безопаснее в некоторых случаях использовать именно протокол OTR.

Разработчиками была опубликована клиентская библиотека, чтобы помочь разработчикам программного обеспечения включить протокол к своим программам. В настоящее время существуют плагины для программ обмена быстрыми сообщениями Pidgin и Kopete, что позволяет использовать OTR поверх любого протокола, который поддерживается этими программами. Также существуют реализации протокола на языках Go, Java, JavaScript, Python, Scheme.

Основные свойства Off-the-Record Messaging

  • Шифрование сообщений – никто иной не сможет прочитать сообщения;
  • Аутентификация собеседников – уверенность в том, кто является собеседником;
  • Perfect forward secrecy – если потеряны секретные ключи, прошлая переписка не будет скомпрометирована;
  • Возможность отречения – третье лицо не сможет доказать, что сообщения написаны кем-либо другому адресату.

Поддержка Off-the-Record Messaging в мессенджерах

Следующие клиенты имеют встроенную поддержку протокола OTR.

  • С использованием плагина
  • Прокси

Для клиентов, поддерживающих протокол AOL Instant Messenger/ICQ, командой разработчиков OTR был разработан пакет otrproxy, представляющий собой локальный прокси-сервер. Он позволял использовать OTR в клиентах, не имеющих собственной поддержки OTR. В настоящее время данный пакет не поддерживается, разработчики рекомендуют использовать клиенты с поддержкой OTR.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code