В этой статье мы поговорим о Tor - программном комплексе, который позволяет сделать пребывание в сети полностью анонимным.
Обзор
Tor позволяет организовать так называемую "анонимную сеть", любому участнику которой будет гарантирована полная скрытность пребывания в интернет. В настоящий момент сеть Tor состоит из тысяч серверов, которые могут быть использованы любым человеком.
Принцип работы сети Tor основан на идее так называемой "Луковой Маршрутизации" (Onion Routing), в центре которой лежит предположение о том, что если клиент будет общаться с сервером не напрямую, а через цепочку посредников, каждому из которых известны только следующее и предыдущее звенья цепочки - отследить истинный источник и приемник данных (одновременно) будет невозможно в любом звене цепи.
Работает это так: клиент, пожелавший установить соединение с сервером, делает запрос к одному из трех Tor-каталогов, хранящих списки всех активных в данный момент Tor-серверов. Из этого списка он случайным образом выбирает определенное число серверов (не меньше трех) и получает их публичные ключи шифорования. Затем клиент берет исходное сообщение и шифрует его ключом последнего в цепочке Tor-сервера, потом добавляет к получившемуся сообщению адрес последнего Tor-сервера, и шифрует сообщение ключем предпоследнего сервера, затем добавляет адрес пред-предпосленего сервера и т.д. Говоря простым языком клиент обволакивает сообщение во множество шифрованных слоев, которые будут сниматься по мере прохождения пакета через Tor-сервера.
Описанная схема гарантирует, что любой из Tor-серверов не будет знать конечного адресата сообщения, его отправителя и содержимого одновременно. Каждому из них доступна только ограниченная часть информации. Например, первый узел цепочки знает настоящий адрес отправителя, но не может знать содержимое сообщения и адреса получателя. Последний узел цепочки знает адрес получателя и даже имеет доступ к содержимому сообщения, но не может знать адреса отправителя. Все узлы, находящиеся между ними, не знают ни адреса отправителя, ни адреса получателя, ни содержимого сообщения.
Чтобы раскрыть всю информацию о соединении пользователя сети Tor, злоумышленнику придется завладеть сразу всеми узлами, участвующими в цепочке (или шантажировать их владельцев). Учитывая то, что в сеть Tor вовлечены тысячи серверов по всему миру, а также то, что выбираются они случайным образом и для каждого соединения, можно сказать, что вероятность компрометации сразу всей цепочки серверов стремится к нулю. Завладев же только одним узлом цепочки, злоумышленник не сможет получить достаточной информации. Опасность может представлять только захват так называемых "выходных Tor-серверов", выступающих в роли последних звеньев цепи. В этом случае злоумышленник получит доступ к оригинальному сообщению и сможет прочитать передаваемую в нем информацию. Именно поэтому для лучшей сохранности данные следует передавать по зашифрованным каналам.
Кроме утечки данных с выходных Tor-серверов, существует также и опасность DNS-утечки, ведь даже несмотря на то, что сообщение будет направлено сквозь "Tor-туннель", DNS-запрос, раскрывающий адрес получателя сообщения, может пойти "обходным путем". Чтобы избежать этого, следует использовать Tor в связке с Privoxy, либо воспользоваться сторонними DNS-серверами, такими как OpenDNS или TorDNS.
Есть еще одна опасность: это возможность выдачи клиентом раскрывающей его информации по запросу сервера. Так, например, может поступить клиентское JavaScript-приложение, загруженное в браузер. Поэтому я бы порекомендовал отключить JavaScript в браузере, либо воспользоваться прокси-сервером Privoxy или Firefox-расширением Torbutton.
Установка
Установить и начать использовать Tor достаточно просто. Для этого необходимо установить Tor-клиент и HTTP-прокси Privoxy, который будет использован для перенаправления HTTP-трафика в Tor. В последних версиях Ubuntu Tor-клиент недоступен, поэтому мы установим его из репозитория авторов программы. Для этого добавляем в файл /etc/apt/sources.list следующую строку:
deb http://deb.torproject.org/torproject.org maverick main
Запрашиваем ключи у сервера сертификации:
$ gpg --keyserver keys.gnupg.net --recv 886DDD89
$ gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
Обновляем apt-кэш и устанавливаем необходимые компоненты:
$ sudo apt-get update
$ sudo apt-get install tor tor-geoipdb privoxy
После окончания установки открываем конфигурационный файл Privoxy и пишем в него следующую строку:
forward-socks4a / 127.0.0.1:9050 .
Запускаем Privoxy:
$ sudo /etc/init.d/privoxy start
Устанавливаем плагин Torbutton для Firefox. Его можно взять c этой страницы или же установить средствами apt:
$ sudo apt-get install torbutton-extension
Перезапускаем браузер, активируем режим работы через Tor с помощью нажатия кнопки внизу справа. Переходим на страничку https://check.torproject.org для проверки работоспособности Tor. На экране должна появиться зеленая луковица.
Остальные приложения легко перевести на использование Tor с помощью указания адреса Privoxy (localhost:8118) или SOCKS-сервера Tor (localhost:9050) в настройках. Чтобы научить консольные приложения, такие как wget, lynx, apt и другие, использовать Tor, следует добавить в ~/.bashrc следующие строки:
export http_proxy=http://127.0.0.1:8118/
export HTTP_PROXY=$http_proxy
Стандартная поддержка SOCKS в SSH не подходит для Tor, поэтому придется изловчиться и воспользоваться socat:
$ sudo apt-get install socat
Далее открываем конфиг SSH (~/.ssh/config) и прописываем в него две строки:
Host *
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050
Tor обеспечивает интерфейс для доступа к своей функциональности из других приложений, поэтому существует несколько проектов, которые позволяют использовать его возможности для ведения какой-либо анонимной деятельности в сети интернет. Одним из таких приложений является Torchat, специальный чат-клиент для сети Tor, полностью скрывающий личности его участников.
Torchat написан на Python и не требует какой-либо настройки, поэтому для начала его использования достаточно установить пакеты python2.5, python-wxgtk2.8 и запустить torchat.py, находящийся внутри архива с программой.
Смешивающий любимец
На принципах Onion Routing (а точнее более ранней концепции - Mix network) построена разработанная в Беркли система анонимной почтовой переписки Mixminion. Первые две версии системы ничем не отличались от стандартных ремейлеров, режущих заголовки, однако третья версия ушла далеко вперед и обеспечила не только удаление заголовков, но и способ пересылки писем, основанный на идее "смешанной сети": клиент mixminion разбивает оригинальное email-сообщение на фрагменты постоянной длины, для каждого из которых выбирается своя цепочка серверов. При этом срок жизни одного ключа ограничен, а отправитель получает ответ с помощью закрепленного за ним зашифрованного псевдонима. В качестве средств против анализа трафика присутствуют: разбивка сообщения на блоки постоянного размера в 28 Кб, случайная задержка во время отправки каждого блока, а также перемешивание последовательности блоков ремейлером.
Карманная анонимность
LiveCD Incognito (www.anonymityanywhere.com/incognito/) предназначен специально для параноидальных пользователей сети. Он включает в себя множество самых разнообразных инструментов, обеспечивающих полную анонимность при работе в интернет. Ключевую роль среди них занимает клиент Tor, который интегрирован с Firefox с помощью Torbutton. Все остальные приложения, способные использовать SOCKS- или HTTP-прокси, настроены на его использование. Среди других инструментов доступны:
- TrueCrypt - шифрование файлов и разделов.
- Enigmail - Thunderbird-расширение для шифрования писем.
- FireGPG - плагин Firefox, предназначенный для использования шифрования совместно с почтовыми клиентами, расположенными в Web.
- GnuPG - реализация OpenPGP.
- KeePassX - менеджер паролей.
- Miminion - клиент анонимной почтовой системы.
При записи на USB дистрибутив способен шифровать все пользовательские настройки и пароли. Во время выключения питания оперативная память полностью перезаписывается, чтобы избежать возможности восстановления данных. MAC-адрес сетевой карты может быть автоматически изменен.