Введение
Шифрование протокола (PE), шифрование потока сообщений (MSE) или шифрование заголовков протокола (PHE) — это взаимосвязанные функции, присутствующие в некоторых клиентах файлообменных сетей типа "один-к-одному", включая клиенты BitTorrent. Они предназначены для повышения конфиденциальности и защиты данных. Кроме того, они призваны затруднить идентификацию трафика третьими сторонами, включая интернет-провайдеров (ISP). Однако шифрование не защитит от уведомлений DMCA за распространение нелегального контента, поскольку материал всё равно загружается, и компании, осуществляющие мониторинг, могут просто подключиться к рою. MSE/PE реализованы в BitComet, BitTornado, Deluge, Flashget, KTorrent, libtorrent (используется различными клиентами BitTorrent, включая qBittorrent), Mainline, μTorrent, qBittorrent, rTorrent, Transmission, Tixati и Vuze. PHE был реализован в устаревших версиях BitComet. Аналогичная обфускация протокола поддерживается в актуальных версиях некоторых других систем (не BitTorrent), включая eMule.
Цель
По состоянию на январь 2005 года трафик BitTorrent составлял более трети всего трафика домашнего интернета, однако к 2009 году этот показатель снизился до менее чем 20%. Некоторые интернет-провайдеры справляются с этим трафиком, увеличивая свою пропускную способность, а другие используют специализированные системы для снижения скорости одноранговых сетей с целью сокращения расходов. Маскировка и шифрование затрудняют обнаружение трафика и, следовательно, его ограничение пропускной способности. Изначально эти системы разрабатывались для обеспечения анонимности или конфиденциальности, но стали востребованы в странах, где интернет-провайдерам предоставили право ограничивать скорость пользователей BitTorrent и даже блокировать тех, кого они подозревали в незаконном обмене файлами.
Ранний подход
Шифрование заголовков протокола (PHE) было разработано RnySmile и впервые реализовано в BitComet версии 0.60 8 сентября 2005 года. Некоторые программы, такие как IPP2P, утверждают, что трафик BitComet можно обнаружить даже при включенном PHE. Обнаружение PHE возможно, поскольку шифруется лишь часть трафика. Поскольку открытых спецификаций данной реализации протокола не существует, единственным способом поддержки его в других клиентах была бы обратная разработка.
Развитие МСЭ/ПЭ
В конце января 2006 года разработчики Vuze (тогда известного как Azureus) решили разработать и одновременно реализовать новый метод обфускации открытого протокола, названный шифрованием потока сообщений (MSE). Он был включен в Azureus CVS snapshot 2307 B29 19 января 2006 года. Этот первый вариант подвергся серьезной критике из-за отсутствия нескольких ключевых функций. После переговоров между различными разработчиками BitTorrent было подготовлено новое предложение, которое затем было реализовано в бета-версиях Azureus и μTorrent в течение нескольких дней. В μTorrent этот протокол назывался шифрованием протокола (PE).
MSE/PE в версиях клиента BitTorrent
aria2 поддерживает MSE/PE с версии v1.34, но не включено по умолчанию. BitComet версии 0.63 была выпущена 7 марта 2006 года. Она удалила старое шифрование заголовка протокола и внедрила новый MSE/PE для совместимости с Azureus и μTorrent. BitTornado поддерживает MSE/PE с версии T 0.3.18. По состоянию на 5 января 2007 года эта сборка по-прежнему отмечена как "экспериментальная" на странице загрузки. BitTorrent (Mainline) поддерживает MSE/PE с версии 4.9.2 beta, выпущенной 2 мая 2006 года. Deluge поддерживает MSE/PE с версии Deluge 0.5.1. KTorrent реализовал MSE/PE в SVN версии 535386 29 апреля 2006 года. libtorrent реализовал шифрование протокола в версии 0.13, выпущенной 10 декабря 2011 года. rTorrent поддерживает MSE/PE с версии rTorrent 0.7.0. Transmission поддерживает MSE/PE с версии Transmission 0.90. Vuze (ранее Azureus) поддерживает финальную спецификацию с 25 января 2006 года (CVS snapshot 2307 B33). Azureus версии 2.4.0.0 была выпущена 10 февраля 2006 года и стала первой стабильной версией клиента, поддерживающей MSE/PE. Однако, ошибки в реализации Azureus привели к неправильному шифрованию фрагментов, что приводило к сбоям при проверке хеша. Эти ошибки были исправлены в версии 2.4.0.2. μTorrent впервые реализовал MSE/PE на 4 дня позже Azureus, в бета-версии 1.4.1 сборки 407. μTorrent версии 1.5 (сборка 436) была выпущена 7 марта 2006 года; это была первая стабильная версия μTorrent с поддержкой PE.
libtorrent implemented protocol encryption in v0.13 released on 10 December 2011.
rTorrent supports MSE/PE as of rTorrent 0.7.0. Transmission supports MSE/PE as of Transmission 0.90. Vuze (formerly Azureus) supports the final spec since 25 January 2006 (CVS snapshot 2307 B33). Azureus version 2.4.0.0 was released 10 February 2006, and was the first stable version of a client to support MSE/PE. However, glitches in Azureus' implementation resulted in improperly encrypted pieces that failed hash checking. The glitches were rectified as of version 2.4.0.2.
μTorrent premiered MSE/PE 4 days after Azureus with beta 1.4.1 build 407. μTorrent version 1.5 (build 436) was released on 7 March 2006; it was the first stable version of μTorrent with PE.
Операция
Метод BitComet PHE, использовавшийся в версиях 0.60–0.62, не был опубликован и не совместим с MSE/PE. MSE/PE использует обмен ключами в сочетании с infohash торрента для установления ключа шифрования RC4. Обмен ключами помогает минимизировать риск перехвата данных, а infohash предотвращает атаки типа "человек посередине". RC4 был выбран из-за его скорости. Первый кибибайт (1024 байта) выходных данных отбрасывается для защиты от атаки Флюэра, Мантина и Шамира. Спецификация позволяет пользователям выбирать, шифровать только заголовки или всё соединение. Шифрование всего соединения обеспечивает большую конфиденциальность, но требует больше вычислительных ресурсов. Для обеспечения совместимости с другими клиентами, не поддерживающими эту спецификацию, пользователи также могут разрешить или запретить нешифрованные входящие и исходящие соединения. Клиенты, поддерживающие MSE/PE, сообщают об этом факте через PEX и DHT.
Безопасность
Оценочная стойкость шифрования соответствует примерно 60–80 битам для распространенных симметричных шифров. С криптографической точки зрения, эта эффективная длина ключа достаточно мала, но оправдана тем, что протокол разрабатывался не как безопасный транспортный протокол, а скорее как быстрый и эффективный метод обфускации. AES был предложен в качестве метода шифрования, но не был принят из-за чрезмерного потребления процессорного времени. Для достижения уровня безопасности, сопоставимого с AES, потребовались бы значительно большие ключи Diffie–Hellman или использование криптографии на эллиптических кривых, что удорожало бы процесс рукопожатия с точки зрения используемого процессорного времени.
Эффективность
Анализ шифрования протокола BitTorrent (также известного как MSE) показал, что статистический анализ размеров и направлений первых 100 пакетов в TCP-сессии позволяет идентифицировать скрытый протокол с точностью более 96%.
Критика
Брэм Коэн, изобретатель BitTorrent, выступал против добавления шифрования в протокол BitTorrent. Коэн заявил, что его беспокоило, что шифрование может привести к несовместимости между клиентами. Он также подчеркнул, что большинство интернет-провайдеров не блокируют торрент-протокол. В 2006 году Коэн написал: "Я скорее подозреваю, что какой-то разработчик столкнулся с ограничением скорости со стороны своего провайдера и больше заинтересован в обходе этих ограничений, чем в общей производительности интернета". Многие пользователи сообщества BitTorrent резко отреагировали на обвинения Коэна. Позже Коэн добавил зашифрованные соединения в свой клиент Mainline с возможностью их приема, но не инициирования. Примечательно, что когда μTorrent был приобретен BitTorrent, Inc. и стал следующим основным релизом, возможность инициировать зашифрованные соединения была сохранена, но по умолчанию она была отключена. В интервью 2007 года Коэн заявил: "Так называемое 'шифрование' трафика BitTorrent на самом деле не является шифрованием, это маскировка. Оно не обеспечивает никакой анонимности и лишь временно обходит управление трафиком".