id: Гость   вход   регистрация
текущее время 11:21 29/03/2024
Владелец: spinore редакция от 03/02/2010 10:14 (автор: unknown) Печать
Категории: софт, анонимность, инфобезопасность, tor, уязвимости, микс-сети, атаки
создать
просмотр
редакции
ссылки

Сетевая анонимность: общие вопросы


Оглавление документа:

Я хочу настроить своё рабочее место для возможности анонимной работы в сети. Какие риски для анонимности существуют и с чего мне начать?


Прежде всего, заметим, что анонимность немыслима без безопасности, которая отвечает за корректность и надёжность работы всех систем. Создание и настройка сколь-нибудь надёжного в плане анонимности рабочего места требует, как минимум, хорошего знакомства с устройством операционной системы (ОС), с основами сетевых технологий и с основными положениями информационной безопасности: именно поэтому настоятельно рекомендуется начинать разбираться с анонимностью только после получения хотя бы общих (схематических) представлений об указанных технологиях. Попытка описать проблему анонимности в нескольких абзацах или даже страницах заведомо упустит массу важных тонкостей, но мы всё же попытаемся дать краткое описание, которое могло бы послужить подспорьем при настоящем серьёзном изучении проблемы.


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


Специалисты различают программные уязвимости по тому, на каком уровне они работают: прикладном, системном или сетевом. Наиболее часто используются следующие термины: уязвимость вида local root, remote root и 0day. Под local root понимается уязвимость, позволяющая получить самые высокие права (системного уровня) программе, выполняемой на этом же компьютере, под remote root понимается получение тех же прав по сети, программой, выполняемой удалённо на другом компьютере. Какую-либо уязвимость, уже кем-то открытую, но ещё не известную публично, называют 0day. Уязвимости вида local root в надёжных ОС типа Linux/BSD обнаруживают от силы несколько раз в год, remote root – не каждый год [в OpenBSD – 2 раза за всю историю её более чем десятилетнего существования], а фатальные ошибки в браузерах, позволяющие выполнить любой код от имени его запустившего пользователя, находят едва ли не ежедневно.


В силу того, что разные уровни по степени защищённости отличаются очень значительно, контроль за анонимностью работы с данными предпочтительнее возлагать на системный уровень, т.е. на средства самой ОС, а не прикладных программ. Перейдём теперь к рассмотрению того, что происходит внутри каждого уровня и какие угрозы для анонимности он в себе таит.


Прикладные программы помимо целевой информации отправляют массу служебных данных в сеть, начиная от списка своих опций и настроек, и кончая проверками обновлений софта или даже синхронизацией своего содержимого с какими-то хранилищами в сети. Исправить такое поведение иногда частично удаётся с помощью соответствующих настроек, предусмотренных рассматриваемой программой, или же с помощью дополнительных плагинов. Однако, приемлемо (но не полностью) решить эту проблему можно перелагая контроль на системный уровень: запускать программы в специальном окружении, на выделенной ОС в виртуальной или физически выделенной машине. Такой подход может существенно уменьшить ущерб, в том числе, и от передачи каких-то общесистемных файлов и данных, которые программа может попытаться отослать в сеть, став подконтрольной из-за уязвимости злоумышленнику.


На системном уровне возможны критические утечки служебных передаваемых данных из-за неверной настройки или несовместимости того, как работают отдельные прикладные программы и сама ОС. Как правило, эта проблема может быть полностью решена правильной настройкой firewall'а.


Сетевой уровень – один из самых сложных в силу многообразия связанных с ним проблем, но, к счастью, пользователь почти всегда может от него абстрагироваться в рамках своей модели угрозы. Как правило, рассматривают анонимные системы двух типов защиты: систему Tor, которая предоставляет доступ к ресурсам интернета в режиме реального времени без покрывающего трафика, и систему Freenet, являющуюся анонимной файлообменной сетью с покрывающим трафиком. Ограничения на анонимность каждой из этих сетей – предмет отдельного обсуждения, и пока мы от него абстрагируемся.


Стоит заметить, что прикладной и системный уровни могут быть программно изолированы друг от друга. Каждая прикладная программа (каждый процесс), как правило работает от отдельного пользователя, и имеет соответствующие ему права и привелегии в системе. Если уязвимости вида local root в системе нет, то такая программа никак не может получить прав больше, чем права запустившего её пользователя. Поскольку запуск программ от отдельных непривелегированных пользователей повышает защищённость системы, этим настоятельно рекомендуется пользоваться.


Вышеперечисленные проблемы, возникающие при построении анонимизирующих систем, могут быть решены исключительно в доверяемой среде – той, в которой можно прозрачно проконтролировать все стадии работы программ с данными. К примерам доверяемых сред можно отнести такие популярные ОС как Linux или *BSD. Поведение Windows настолько непрозрачно и плохо управляемо при работе с данными (например, отсутствует функциональный и надёжный firewall), доверие к производителям софта требуется настолько полное, а список всевозможных утечек столь велик, что попытка её анонимной настройки для специалиста средней руки едва ли подъёмная задача. Если говорить прямо, то понятия анонимности/безопасности и Windows с нашей точки зрения попросту несовместимы.


Равно как и безопасность, анонимность – это не свершившийся факт, а непрерывный процесс. Степень надёжности анонимной настройки можно постоянно повышать в соответствии с ростом своих знаний и кваификации, реализовывая защиту от всё большего числа возможных способов деанонимизации. В качестве наглядной демонстрации вышеизложенного подхода, рассмотрим постепенное повышение защиты при анонимном серфинге сети посредством Tor, показывая на каждом шаге включение иммунитета от тех новых угроз, которые он начинает учитывать.


  1. Установка плагина torbutton (tb) на firefox (ff), который запускается от обычного пользователя (полностью прикладной уровень). Это базовая защита от деанонимизации, в том числе и от утечек служебных данных. ff и tb здесь полагаются неограниченно доверяемыми программами – уязвимость в них потенциально полностью деанонимизирует пользователя. Уязвимые tb и ff могут получить полный доступ как к системным файлам, так и всем файлам из неанонимного профиля пользователя (из домашней директории).
  2. Запуск связки ff+tb под отдельным пользователем tor_user и отдельным X-сервером, с последующей блокировкой на уровне системного firewall'а всех соединений, инициируемых tor_user'ом, идущих не в сеть Tor (уже системный уровень защиты). Этот уровень защиты уже не позволяет уязвимым ff и tb что-либо послать в сеть в обход Tor, и они уже не могут получить без local root уязвимости доступа к неанонимному профилю пользователя. Однако, они ещё могут получить доступ к системным настройкам и файлам, часть которых потенциально может содержать информацию, достаточную для деанонимизации, т.к. эти же системные настройки используются и неанонимным профилем под другим пользователем.
  3. Запуск связки ff+tb при тех же условиях, что и в предыдущем пункте, но теперь уже в виртуальной машине, причём сам Tor-клиент запускается на основной (host) ОС, и она же отвечает за перенаправление всего трафика от виртуальной машины в сеть Tor. При такой защите tb или ff не могут получить доступа ни к актуальным сетевым настройкам на host ОС, ни к актуальным системным файлам на ней. Для того, чтобы добраться до них, требуется иметь одновременно уязвимость класса local root в гостевой ОС с уязвимостью в виртуальной машине.
  4. Запуск связки ff+tb на физически выделенной (не виртуальной) машине, которая используется только для работы в Tor и не содрежит никакой информации, позволяющей связать анонимную и неанонимную личность пользователя. Трафик от этой машины направляется в сеть Tor внешним рутером, и он единственный, кто знает сетевые настройки реальной сети провайдера. Неанонимный профиль пользователя находится на отдельной машине, трафик с которой так же пропускает через себя рутер (сетевой уровень защиты). Для того, чтобы уязвимые ff или tb смогли что-то узнать об актуальных настройках сети, требуется уязвимость класса remote root либо против рутера, либо против машины с неанонимным профилем пользователя (на последней содержатся настройки, позволяющие ходить в сеть не через Tor).

Небольшое пояснение: выше под уязвимостью понимаются не только программные ошибки в общепринятом смысле, но и какие-либо другие ошибки в настройке, приводящие к деанонимизации.

Здесь почему-то уделено очень много внимания проекту Tor. Какие существуют ещё методы достижения анонимности в сети, разве они хуже?


Некоторые анонимные сети могут быть лучше в зависимости от поставленной вами задачи. Можно использовать несколько методов одновременно. Но следует оценить компромисс между скоростью работы, ограниченностью только небольшим объёмом внутреннего контента таких сетей, сложностью настройки, степенью теоретической проработки протокола.


Использование VPN и цепочек прокси-серверов однозначно хуже в целях анонимности.


  • Freenet. Сеть Freenet преследует несколько другие задачи, чем проект Tor. Она анонимизирует не столько транспортный уровень передачи данных, сколько служит для хранения анонимной информации и файлообмена. Самое лучшее свойство, с которым она справляется — цензурозащищённость публикаций (трудность, практическая невозможность удаления востребованных материалов из сети). При этом против того, кто первым разместил в сети Freenet уникальный материал (которого там раньше не было) существует ряд атак на выслеживание, хотя разработчики улучшают протоколы с тем чтобы уменьшить вероятность этого (в то время как противодействие дальнейшему распространению материала внутри сети действительно почти невозможно). Сеть Freenet нестойка к глобальному наблюдателю, хотя по утверждению создателей более стойка к ряду атак против наблюдателя с ограниченными ресурсами (в отличие от Tor, который по своему дизайну нестоек против атак пересечения). Ряд исследований впрочем показывают, что некоторые атаки успешно действуют как против сети Tor, так и против сети Freenet. Сеть Freenet является замкнутой децентрализованной сетью с изолированным от интернета контентом (за исключением демошлюзов) и работает сравнительно медленно. Рост доверия производится через соседние "дружеские" ноды. Поскольку принцип свободы распространения информации в ней является приоритетом, то специфическую реализацию анонимности в этой сети иногда выражают фразой: "вы знаете, что я один из тех, кто дал вам этот файл, но вы не можете доказать, что я его оригинальный автор".

  • I2P. I2P — это двойник сети Tor, но его авторы часто используют противоположные методы для решения тех же инженерных задач: транспортный уровень UDP вместо TCP, использование внутренней закрытой сети вместо роутинга в интернет (хотя это возможно). Цепочки называются туннелями, вместо "луковичной" маршрутизации — "чесночная". Есть аналоги скрытых сервисов Tor. Туннели разделены на два пути, проходящие через разные наборы узлов (по замыслу авторов это усиливает анонимность, однозначного мнения исследователей на этот счёт нет — возможны аргументы в пользу противоположных вариантов). Каждый узел I2P является в принудительном порядке и клиентом и сервером. В обмен на более высокую анонимность пользователи могут выбирать длину цепочек и более высокие задержки трафика, но нет доказательства, что это не может лучше профилировать трафик пользователей. Сеть I2P также нестойка к глобальному наблюдателю. Интересно, что сами разработчики I2P предпочитают оставаться анонимными. Этот подход имеет по крайней мере такой недостаток: хотя исходные коды проекта открыты, он получит заведомо меньше теоретической проработки со стороны научного сообщества.

  • Другие анонимные сети. Среди них известны Mnet, GnuNet, Mute, Gift, Entropy, Rshare. Их разработка ведётся не очень активно. Число пользователей невелико, из-за этого мала анонимность, скорость работы, вероятность нахождения нужного файла. В основном они ориентированы на отображение внутреннего контента через браузер и/или файлообмен. Возможно появление и других проектов анонимных сетей.

  • Ремэйлеры. Это единственная реализованная система анонимной связи, устойчивая против глобального наблюдателя. Может быть использована только для электронной почты, поскольку использует многочасовые задержки сообщений. Положение дел с ремейлерами будет рассмотрено в отдельном пункте FAQ.

  • Коммерческие одноузловые прокси и VPN-сервисы. Фактически использование таких сервисов имеет сплошные недостатки с точки зрения анонимности:
    1. При использовании одного прокси ваш трафик видит его оператор или тот, кто возможно взломал или другим способ взял под контроль этот прокси. Провайдер этого прокси может провести тривиальную тайминг атаку для различения трафика всех пользователей данного прокси.
    2. Если использовать даже цепочку прокси (или VPN), но принадлежащую одной компании, то они все будут ей подконтрольны.
    3. Необходимость оплаты таких сервисов вносит дополнительный риск анонимности для пользователя.
    4. Прокси без шифрования позволяют элементарно перехватывать содержимое трафика.
    5. В отличие от специально сконструированных анонимных сетей с открытым исходным кодом и специально построенным протоколом, проанализированным на стойкость на множество атак против анонимности, цепочки прокси не имеют под собой никакой теоретической базы.

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

Кто такой глобальный наблюдатель? Насколько он опасен? Почему не создаётся систем с защитой от него?


Гипотетическая система, способная наблюдать за трафиком в любой точке интернета, при этом обладая возможностью одновременно контролировать множество необходимых ей точек: все узлы анонимной сети. Только такая система даёт полную гарантию раскрытия анонимности пользователя анонимной сети путём только пассивного наблюдения. Поэтому её ещё называют глобальным пассивным наблюдателем (Global Passive Adversary — GPA).


Единственной реальной сетью, устойчивой к GPA является сеть ремэйлеров (систем анонимного обмена почтой), однако она не лишена недостатков в плане противодействия другим атакам. Стойкость к GPA достигается путём накопления и перемешивания почтовых сообщений в пулах ремэйлеров, расшифровки следующего адреса промежуточного сервера или конечного получателя и отправки писем со значительными задержками. Письма в такой сети могут достигнуть получателя спустя несколько часов или дней, также они могут с некоторой вероятностью никогда не дойти до получателя.


Другим способом противодействия GPA мог бы быть тотальный покрывающий трафик, но он всё ещё подвержен корреляциям вследствие естественных задержек. Кроме того, глобальный наблюдатель может стать активным и намеренно задерживать или даже блокировать трафик, чтобы посмотреть, как это изменение пройдёт по другим узлам сети из-за неидеальности систем покрывающего трафика. Основная причина отсутствия таких решений в том, что использование покрывающего трафика слишком накладно. Следует также учитывать, что чем больше узлов в такой сети, тем меньше будет пропускная способность, выделяемая пользователю из-за необходимости создать покрывающие каналы между всеми промежуточными узлами по принципу "каждый с каждым".


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


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

Что такое ремейлеры? Какое развитие на данный момент имеют сети ремейлеров?


Ремейлеры — это единственная реализованная система анонимной связи, устойчивая против глобального наблюдателя. Может быть использована только для электронной почты, поскольку использует многочасовые задержки сообщений.


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


Но и защита от глобального наблюдателя в ремэйлерах тоже относительная из-за небольшого числа регулярных пользователей. Если A отправила письмо через ремэйлеры, а спустя даже день B его получил, то хотя и нельзя провести атаку пересечения так же строго, как в Tor, но из-за малого числа пользователей ремэйлеров, связь между отправителем и получателем будет вполне явной (правда ничто не мешает комбинировать ремэйлеры и Tor).


Первые ремейлеры были созданы в начале девяностых в так называемую "эпоху шифрпанков", когда разработка криптографических программ и средств обеспечения анонимности велась в основном на энтузиазме и интуиции без привлечения научных методов. С тех пор они унаследовали и многие недостатки:


  • Отсутствие удобного графического интерфейса для рядовых пользователей.
  • Сложные настройки.
  • Сложность интеграции в существующие программы работы с электронной почтой.
  • Сложность настройки собственного почтового сервера для запуска собственного узла-ремейлера.
  • Отсутствие доверия к спискам ключей ремейлеров, в ряде случаев доверие строится только по IP-адресам.
  • Плохое теоретическое обоснования дизайна протокола, вследствие чего была открыта масса атак: на задержку сообщения, на повторную отправку сообщения, на отправку множественных копий сообщения, на перегрузку узлов.

Попытку поставить разработку ремейлеров на научную основу осуществили George Danezis, Roger Dingledine и Nick Mathewson. Ими был создан проект ремейлеров третьего поколения — Mixminon, в котором реализовано большое число интересных идей (в том числе анонимные почтовые ящики для обратных ответов). Однако проект развивается достаточно медленно, а его авторы больше работают над развитием сети Tor.

Что такое атаки пересечения и подтверждения?


Атаки такого рода основаны на том, что у противника есть предположение, какого рода сетевой ресурс посещает данный пользователь через анонимную сеть. Ему нужно лишь подтвердить или отвергнуть эту гипотезу. Для этого противнику нужно снять данные трафика с точки входа пользователя в анонимную сеть и точки выхода из неё к этому ресурсу. В сетях с малой задержкой передачи данных будут наблюдаться такие явные корреляции по числу пакетов, по времени их отправки и другим параметрам, что это позволит вычислить пользователя за один сеанс с вероятностью выше 90%, в то время как вероятность ошибки может быть меньше тысячных долей процента. Если противник применит активные методы — например сам будет вносить задержки в трафик или портить пакеты, то для полного раскрытия пользователя иногда достаточно одного пакета данных.


Эти атаки несколько затруднены против скрытых ресурсов Tor и замкнутых файлообменных сетей типа Freenet, так как противнику неизвестно, откуда снимать трафик, даже если знает к какому ресурсу хочет обратиться пользователь. Тем не менее похожие атаки такого рода достаточно эффективны и в таких случаях.


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


При этом количество узлов между первым и последним узлом цепочки не играет особой роли против большинства такого рода атак и является аргументом о бесполезности увеличения длины цепочек больше трёх узлов. Такой вариант атак существенно ограничивает анонимность пользователя в сетях типа Onion Routing, впервую очередь Tor.


Следует помнить, что анонимные сети или защищают от анализа трафика (Tor) или обеспечивают цензурозащищённость информации (Freenet), но все такого рода сети плохо защищены против атак подтверждения получения заведомо известной противнику информации или иной возможности проведения статистических атак пересечения. Построение сетей с соблюдением условий такого рода — сложная теоретическая задача.


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


Следует отметить, что разного рода атаки на нахождение корреляций практически 100% эффективны и трививально просты против однохоповых шифрующих прокси и VPN, которые иногда используются для получения невысокого уровня анонимности.