Веб-технологии

Анонимность в сети. Часть 1. Сети Tor (теория)

"Сети не бывают анонимными. Точка."

В последнее время количество новостей, связанных с различными блокировками зашкаливает. На волне репрессивных мер против пиратских сайтов, ресурсов с запрещенной информацией, поисковиков и провайдеров, вырос интерес к технологиям сетевой безопасности - слова "VPN, Прокси, Bitcoin, i2p и Tor" стали мелькать в сети чаще, чем запросы о порно.

Если с тем, как пользоваться VPN и прокси, рядовой пользователь кое-как разобрался, а разработчики всех отраслей стали массово добавлять нативную поддержку VPN и SSL в свои продукты, то работа Tor и i2p для многих - глубокий, тёмный лес.

Конечно, тем же Tor можно пользоваться без каких-либо проблем через официальный браузер, да и для i2p нужно изменить всего пару настроек браузера, но нельзя быть уверенным в технологии, хотя бы в общих чертах не зная, как он работает.

Tor и i2p - анонимные сети, работающие поверх Интернет и решающие проблему безопасности личной информации в сети. Впрочем, это далеко не всё, на что они способны. Основополагающие принципы работы анонимных сетей:

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

Шифрование данных одним, а чаще несколькими способами.

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

TOR

tor 2

История Tor начинается в 2002-м году, когда исследованиями в области анонимных сетей заинтересовалось правительство США. Чуть позднее все разработки, связанные с проектом, были рассекречены, а исходный код открыт для исследования и модифицирования. К слову, код остается открытым по сей день, поэтому наличие "закладок", отправляющих данные о пользователе, полностью исключено. С момента раскрытия проект поддерживался и развивался, преимущественно, силами волонтёров и существовал на пожертвования и спонсорскую поддержку. Проект прожил эти годы весьма успешно - на данный момент, это одна из самых знаменитых анонимных сетей с 7000+ серверов.

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

Tor проектировался по принципам "луковичной маршрутизации" с многослойным шифрованием и децентрализованными серверами передачи данных. Почему луковичной? Дело в том, что модель сети и "слоистая" структура пакетов данных напоминает луковицу. Как это работает? Объясним на примере.

Структура Tor

tor 3

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

Если объяснять более технически, то представьте себе сеть из тысяч узлов, каждый из которых знает адрес друг друга. Вы установили на компьютер Tor-клиент и хотите посетить какой-либо сайт внутри или вне этой сети. Вы вводите адрес сайта в адресную строку, переходите, и в этот момент происходит цепочка событий:

  1. В начале сессии формируется цепь из трех случайно выбранных узлов, по которым будут идти данные.
  2. После этого ваш IP-пакет с запросом к сайту поочередно покрывается тремя слоями шифрования. Есть исходные данные, завёрнутые в зашифрованный слой/поверх них ещё один слой, раскрыв который, вы получите лишь зашифрованный пакет, расшифровка которого, при краже, потребует колоссальных вычислительных мощностей/и поверх него - ещё один слой.
  3. Далее пакет передаётся на первый узел в сети. Используя свой ключ, он расшифровывает пакет и получает свою порцию данных - адрес предыдущего и адрес следующего узла, на который нужно передать пакет.
  4. На следующем узле цепочка действий повторяется, а на третьем - данные расшифровываются полностью и передаются на внешний сервер, к которому сформирован запрос.
  5. Ответ на запрос пойдет тем же путём.

Что это даёт:

  1. Вы сохраняете анонимность. На выбранный вами сайт запрос придет не от вас, а от последнего узла в цепочке, и он будет ответственен за то, что вы послали. Получатель, в свою очередь, никак не сможет связать ваши действия на сайте с вами.
  2. Информация остается конфиденциальной. Даже если пакет данных будет украден по пути, расшифровать его будет нецелесообразно сложно.
  3. Ваш провайдер, пропускающий пакет через свои устройства, не сможет прочитать ваши данные, так как они зашифрованы. Кроме того, он не сможет запретить вам доступ к определенным сайтам, так как первый в цепочке узел назначения - это случайный сервер Tor.

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

Возникает резонный вопрос. Если в обычной сети можно запросто определить IP-адрес сайта, связаться с провайдером, узнать физический адрес, на которым хостится ресурс и заблокировать его, то почему, если Tor работает на IP, нельзя определить адрес сервера, на котором хостится ресурс с чем бы то ни было, и заблокировать его аналогичным образом? Дело в том, что Tor-использует собственную DNS-систему, и попросту узнать IP по адресу в доменной зоне .onion будет слишком сложно. Учитывая, что все данные в сети Tor ходят через несколько узлов, получаем пресловутую анонимность и пользователей, и ресурса.

Проблемы Tor

Но так ли Tor безопасен, как кажется? Нет! О том, что Tor не даёт пользователям 100% гарантию анонимности, сообщают даже сами разработчики.

Внимательный читатель заметил, что третий узел в цепочке имеет доступ к незашифрованным данным, а так как передаётся не один пакет, а тысячи (цепочка действует всю TCP-сессию), третий узел может запросто прочитать сессию аутентификации на каком-либо ресурсе, то есть узнать логин, пароль и всю подноготную. Третий узел в терминологии Tor называется "Exit Node", и минимум половина экзит-нод - подставные.

Любой пользователь Tor может стать сервером и автоматически начать пересылать через себя данные, в том числе и незашифрованные. Значит, любой может стать "сниффером" и красть данные. Как показывает практика, так это и происходит. Конечно, сам сервер может поддерживать шифрование передаваемых данных, например, по протоколам SSL - и тогда на "exit node" будут поступать зашифрованные данные, но поддерживает его далеко не каждый сервер. Вывод - лучше никогда не аутентифицируйтесь, к примеру, в личном клиенте вашего банка через Tor.

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

Ещё одна гигантская дыра в структуре Tor - централизованные "адресные сервера". Внимательный читатель задался бы вопросом: "Как все узлы в сети Tor знают друг о друге?". Через десять центральных серверов, с которыми ваш клиент периодически синхронизируется и получает свежайшую адресную базу. Проще говоря, есть база с IP-адресами всех серверов и exit-node Tor, и это не утечка, а аспект работы системы. Такая система гораздо быстрее P2P-адресных книг в i2p, но и гораздо менее безопасная.

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

Как мы видим, Tor - не панацея. В теории всё радужно, на практике же прозаичнее. Tor всё же можно частично заблокировать, пользователей можно, пусть и с трудом, деанонимизировать, а данные можно украсть, было бы достаточно времени, желания и сил. Однако, при наличии некоторых навыков, можно самостоятельно залатать некоторые дыры Tor. К примеру, можно "обломать" подставной exit-node и подсунуть ему зашифрованные данные - попросту настроить пересыл данных после exit-node на личный прокси-сервер, который расшифрует их и отправит источнику назначения. Ну и, конечно же, отключать Java Script и Flash при работе с Tor. О некоторых из "заплаток" мы поговорим в разделе настройки.

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