Или, сказ о неожиданных способах раскрытия пользователей распределенных сетей-анонимайзеров. Пользователи анонимных сетей и браузеров, вероятно, используют их для посещения преимущественно заблокированных/защищенных сайтов. При этом, далеко не все из них ожидают, что факт данного посещения останется анонимным. Если анонимность вас не беспокоит, то, дальнейшее содержимое статьи, скорее всего, вас не заинтересует. Остальных же пользователей прошу под кат, где вы сможете ознакомиться с абстрактными рассуждениями начинающего параноика о том, как же пользователей анонимных браузеров можно раскрыть.  Автор не несет никакой ответственности за приступы паранойи, которые могут возникнуть у вас в процессе чтения данной публикации. Ну, и, за достоверность сведений содержащихся в ней. Мы не будем в наших рассуждениях вдаваться в тонкости функционирования перечисленных сетей и пытаться их взломать. Как известно, даже в самом совершенном средстве защиты узким местом является человек. Потому, мы поговорим о способах, которые работают в обход распределенных протоколов, эксплуатируют типичные ошибки пользователей, настроек или самого ПО. Под деанонимизацией мы будем понимать раскрытие настоящего IP адреса пользователя. Если пользователь использует один и тот же браузер для серфинга в обычной и "анонимной" сети, то его можно элементарно вычислить через отпечаток. Отпечаток сохраняется из "анонимной" сессии браузера, а, потом находится в базах данных отпечатков которые хранят миллиардами Google, Facebook и другие, в том числе, государственные, учреждения разных стран. Способов снятия отпечатков много, и, все они известны, потому, не буду их здесь перечислять. Стоит использовать отдельный браузер для серфинга по "закрытому" интернету. И, даже там, желательно затирать историю после каждого использования. Пусть, вы используете отдельный браузер для серфинга в "закрытой" сети. Но, если из этого браузера сохраняется принципиальная возможность доступа в обычный интернет в обход "защищенной сети", то, сайт из onion/i2p домена может использовать эту возможность для вашей деанонимизации отправив запрос куда нужно. Это можно сделать через  HTTP, DNS,WebRTC и т.п. Чтобы этого избежать, - как минимум, запретите этому браузеру на Firewall все входящие и исходящие соединения на все IP кроме localhost и порта, на котором работает ваш анонимизирующий прокси.  Вы не сможете этого сделать, если ваш анонимайзер встроен в браузер и работает с ним в одном процессе. Помимо этого, надо как-то убедиться, что ваш браузер, ни при каких обстоятельствах, не будет использовать API операционной системы для разрешения имен DNS и т.п..  Проверить последнее можно сформировав запрос через адресную строку параллельно просматривая трафик через wireshark или tcpdump. Ну, помимо http:// и https:// есть другие протоколы, в которых могут быть свои дыры. Например file:// и smb://, при помощи которых можно попытаться заставить ваш браузер/ОС отправить запрос по нужному адресу. Все протоколы, кроме http:// https:// должны быть отключены в браузере намертво. Очевидно, но, можно очень просто и глупо спалиться. Это достаточно очевидная вещь, но, браузеры, это решето. Их надо регулярно обновлять. Но, и это вас не особо спасет. Рано или поздно появится новая дыра.  Да. Будьте осторожны с плагинами к браузерам. В них могут быть уязвимости. Они могут видеть всё, что вы делаете, и, в некоторых случаях, могут отправлять данные на сторону. Ваш антивирус может вас деанонимизировать. Как? Сайт в onion/i2p домене просто даст вам скачать уникальную страничку/файл. Браузер сохранит её на диске. Ваш антивирус, прежде чем сканировать ваш файл на "миллиард" существующих вирусов, может сначала поискать хэш этого файла в базе данных антивирусной компании, или, распределенной сети объединяющей всех пользователей. Тем самым, вы будете деанонимизированы. Да. Возможно, ваша ОС имеет встроенный антивирус или средства телеметрии, которые тоже не гнушаются коллекционированием и отправкой хэшей ваших файлов в "облака". Рекомендую использовать изолированную от сети виртуальную машину, которая автоматом останавливается при обнаружении неожиданного трафика (отличного от tor|i2p) с её IP адреса. Контроль должен быть внешним. Средствами другой ВМ или, лучше, другого физического хоста. Рекомендую подход на основе трех видов трафика от виртуальной машины: Зеленый - только доступ к I2P/TOR прокси, запущенном на ДРУГОЙ виртуальной машине. Сама ВМ принципиально не должна иметь возможности доступа в открытый интернет, и знать внешний IP пользователя. Желтый - ранее проанализированный сторонний трафик, признанный допустимым. Он должен быть полностью заблокирован. Его "допустимость" означает, что мы не будем останавливать ВМ при его обнаружении, а просто заблокируем. Это, например, попытки Windows достучаться до Windows Update или отправить телеметрию.  (На всякий случай уточню, что упоминание тут ОС Windows в качестве гостя, скорее, шутка, нежели рекомендация.)  Красный - все остальное. Заблокировано полностью. Помимо этого, при обнаружении ВМ немедленно останавливается, а, запись трафика (которая непрерывно ведется средствами контроля) и состояния ВМ, - анализируется. По результатам, трафик либо признается "желтым", либо определяется его источник/дыра в системе. В последнем случае, если трафик не может быть гарантировано признан "желтым", рекомендую откатить ВМ к "заводским настройкам". Вообще, рекомендую откатывать к "заводским настройкам" после каждого использования. Эту ВМ не стоит использовать для чего-либо, кроме серфинга в защищенных сетях. И, будьте осторожны с ключами лицензионного ПО, MAC адресами и серийными номерами железа, которые видит ОС этой ВМ. Ибо, все это можно успешно слить и через защищенную сеть не запустив механизмов автоматической остановки ВМ. По этой причине, крайне не рекомендую делать всё это на реальном железе. Камеры - достаточно очевидная штука. Надеюсь, никто не догадается лазить по закрытым сайтам на камеру. Про микрофоны на других устройствах, - это не совсем очевидно, но. Когда вы печатаете сообщение на "защищенный" сайт, - этот сайт (или вставленный туда скрипт) может замерять интервалы между нажатиями кнопок на клавиатуре. Интересно, что эту информацию можно извлекать даже из защищенной/зашифрованной TCP/HTTPS сессии пользователя замеряя интервалы между IP пакетами. Микрофон (например, в вашем мобильнике) в зоне досягаемости может делать то же самое. На основе этого можно составить специальный индекс, который, по аналогии с сервисом определения названия играющей в фоне музыкальной композиции, сможет определить, что печатаете сообщение именно вы. Частично спасает отключение JS, но, клики мышкой при переходе по страницам никуда не исчезают, так что, держите микрофоны подальше от вашего рабочего места.  П.С. Хорошей вам паранойи, товарищи!