Лига детективов, здравствуйте. А возможно отследить след моего гаджета в соц сетях? Вот именно устройства,а не номер телефона или почту. ( Хотя с почтой тоже интересует)
часть 1
ТОР сеть состоит из тысяч релей ( типо прокси серверов ). Каждый из нас может спокойно открыть свою релей и добавить анонимности к ТОР проекту… вообще если хотите попробовать то скачайте ТОР софт, поставите и посмотрите как это работает… Зыыы… что бы стать релей надо немного покопаться в настройка, но это не сложно, да и в сети много документации по этому поводу. И так вернёмся к теме как же ТОР работает. Вся система работает довольно просто ( хе-хе всё гениальное просто ), после того как вы запустили ТОР программу, она немедленно начинает подсоединяться к сети ( ТОР сети ). Идея соединения заключается в том что собрать список доступных релей и выбрать путь по которому ваш анонимное траффик будет путешествовать. Да бы лучше разобраться в этом давайте посмотрим на пример. Представьте что ТОР программа выбрала из тысяч релей, всего три по которым пойдёт ваш траффик. Три релей будут: r2, r5 и r300 ( я думаю в реальной ситуации релей будет больше ). И так ваша ТОР программа выбрала релей и теперь нужно добавить динамичности ( какая релей будет первая, вторая и так далее ) и допустим что программа выбрала следующую последовательность: r300, r2, r5 – в итоге получаем такую картину:
Ваша машина < === > r300 < === > r2 < === > r5 < === > Финальное назначение ( например dolon.ru )
Замечательно, теперь мы выбрали релей с которыми будем работать и выбрали порядок и почти готовы к работе ( передаче информации ). Тут надо отметить одну важную вещь, выбранные релей не знают не чего, кроме от кого пришло сообщение и кому передать информацию дальше. Так же надо отметить что в этой цепи, последняя релей ( r5 ) является выходной релей, которая отправляет информацию из псевдо-сети ( ТОР ) в интернет. Теперь здорово что у нас есть множественные точки передачи, но если информация будет идти в открытую, то вся система теряет смысл. Другими словами информация которая передается через ТОР сеть зашифрована, и только выходное релей ( r5 ) снимает последнюю шифровку и отсылает информацию в сеть. Давайте теперь посмотрим как именно работает шифровка в ТОР сети ( так как это и есть весь цимес ). И так релей были выбраны и последовательность тоже. Теперь происходит создание соединения: ваша ТОР программа выбирает ( на бум ) ключ для симметричной шифровки для реле r5, далее выбирает другой ключ ( опять на бум или случайно ) и опять для симметричной шифровки для реле r2 и тоже самое происходит для реле r300. Так же программа получает от всех трёх релей, их публичные ключи асимметричного шифрованния. Далее создаётся “луковица”, а именно берется симметричный ключ для релей r5 и шифруется это r5-ым публичным ключом с асимметричной шифровкой, далее к полученной информации добавляется назначение ( адрес реле r5 ) и симметричный ключ для реле r2 и всё это шифруется r2-ым публичным ключом с асимметричной шифровкой, далее к полученной информации добавляется назначение ( адрес реле r2 ) и симметричный ключ для реле r300 и опять всё это шифруется r300-ым ключом с асимметричной шифровкой. Наверное вы заметили что получается какой-то клубок или лук! Этот лук используется для создания соединения, а именно после того как лук сделан он посылается в ТОР сеть, что бы соединение установилось.
Вспомним порядок релей ( помните что релей не знаю кто участвует в этом аттракционе, сколько их таких или какая информация передаётся ) :
Ваша машина < === > r300 < === > r2 < === > r5 < === > Финальное назначение ( например dolon.ru )
От вашей машины “луковица” едет в r300 и что происходит? r300 смотрит на полученную луковицу ( зашифрованный кусок бреда ) и говорит, давай сними первый слой с луковицы, а именно дешифрует информацию. r300 использует свой личный ключ для асимметричной шифровки, дешифрует информацию и что они видет? Три вещи: симметричный ключ, адрес следующего реле и оставшуюся луковицу… Далее r300 сохраняет симметричный ключ у себя и отсылает остатки луковицы по указанному адресу. r2 получает лук и думает что надо снять слой ( или открыть приложенную информацию ). r2 соответственно использует свой личный асимметричный ключ и дешифрует информацию. Далее r2 видет опять 3 куска информации: симметричный ключ, адрес следующего реле и оставшуюся луковицу… И как обычно r2 сохраняет симметричный ключ у себя и отсылает остатки луковицы ( информации ) по указанному адресу. r5 получает луковицу, декодирует используя свой личный асимметричный ключ и получает только симметричный ключ, не адреса не луковицы не остаётся, а это значит что r5 – это последняя или выходная реле. И вот соединение установлено и готово для работы… ТОР система работает по принципу строения луковицы, не кто не чего не знает и только получив луковицу и сняв слой можно узнать кому далее передать остатки луковицы… Другими словами если кто-то в получит вашу информацию ( луковицу ) то всё равно не смогут понять что это такое, так как всё зашифровано.
Но возможно вы спросите, а зачем симметрическое шифрованние если луковица шифруется только асимметрической шифровкой… Заметьте что луковица используется для установки соединения и раздачи симметрических ключей… Если вы не забыли то шифровать информацию асимметрической шифровкой довольно муторное занятие ( шифровка/дешифровка большого кол-ва информации занимает много времени ) и поэтому после того как каждое реле получило симметричный ключ то вся последующая информация ( скачивание информации или браузинг сайтов ) будет шифроватся симметрической шифровкой. Например: соединение установлено ( описано выше ) и мы готовы к работе… допустим вы хотите пойти на meirz.net, что происходит? Ваш HTTP запрос шифруется симметрической шифровкой с r5-ым ключом, полученная информация шифруется симметрической шифровкой с r2-ым ключом и финально, полученный результат шифруется симметрической шифровкой с r300 ключом… Далее информация отправляется к r300 где, r300 дешифрует информацию используя полученный ранее ( при установке соединения ) симметричный ключ, далее информация посылается к r2 и происходит то же самое: r2 дешифрует информацию используя полученный ранее ( при установке соединения ) симметричный ключ и так происходит до того момента пока информация не доходит до последнего реле ( r5 ), где r5 дешифрует информацию и видит что это HTTP запрос к dolon.ru и отсылает его по назначению…
В итоге асимметричная шифровка используется для того что бы раздать направления и ключи для симметричного шифрованния выбранным релей. Цимес тут как раз в том что всё шифруется и даже сами релей ( роутеры ) не знают куда именно и что идёт ( кроме последнего реле, которое всё равно не знает кто послала это! ).
Под занавес:
Существует много критики в сторону ТОР проекта, как политической так и технической. Например скорость работы ТОР сети оставляет желать лучшего ( медленно ), но с другой стороны – это цена за анонимность. Так же в ТОР сети нельзя использовать UDP протокол – думаю это не сугубо важно, в особенности для браузинга, но всё же лимит. Так же из-за того что к ТОР системе может присоединиться кто угодно и установить своё реле – то реле может быть левое ( аля может шпионить )… Это не проблема, так как не одно реле не знает что и как, НО это проблема если шпионское реле оказывается последним ( выходным реле ) так как она сможет просматривать передаваемую информацию ( но не будет знать для кого это )… То есть если вы посылаете eMail типо: “Привет это Штырлиц позвони мне по телефону 555-888-00-99″ в открытую ( как обычно все и посылают ), то шпионское реле не будет знать от кого это сообщение, но сможет спокойно прочитать ваш eMail… не маза! НО ещё раз повторюсь, ТОР – это сеть для анонимности, а не для безопасности… Так что если вы “шпиён” или хацкер то шифруйте всю свою информацию… А в принципе даже если вы не тот ни другой то всё равно шифруйте… как говориться здоровее будем!
ЗЫ:
Основоположники TORa сделали интересную лайв операционную систему [TAILS]( https://tails.boum.org/) (The Amnesic Incognito Live System) — основанный на Debian дистрибутив Linux, созданный для максимальной защиты приватности и анонимности в сети, достиг важного рубежа в своём развитии. 29 апреля вышла версия TAILS 1.0 — это значит, что дистрибутив теперь официально является полноценным законченным продуктом, а не экспериментальной поделкой. TAILS включает в себя TOR и основанный на Firefox TOR Browser с набором дополнений для защиты приватности, i2p, чат, криптографические инструменты и некоторые полезные мелочи вроде опции оформления оконного менеджера в стиле Windows — чтобы вызывать меньше подозрений у тех, кто может подглядывать через плечо.
Загрузившись с диска или флешки с TAILS, можно безопасно пользоваться практически любым компьютером, независимо от того, какой на нём установлен софт и сколько там вирусов и троянов — по умолчанию TAILS даже не монтирует жесткий диск компьютера и не оставляет на нём никаких следов. Сама загрузочная флешка тоже защищена от любых модификаций (насколько это возможно софтверными методами — для полной гарантии надо использовать диск CD-R). Именно этим дистрибутивом [пользовался Эдвард Сноуден]( http://habrahabr.ru/post/219677/), его рекомендуют такие специалисты и организации, как Брюс Шнайер, «Репортёры без границ» и само АНБ для своих полевых агентов.
Версия 1.0 не содержит каких-либо существенных обновлений, что вполне естественно — основное внимание было уделено исправлению ошибок и оптимизации. Зато уже в июне должна выйти версия 1.1, которая будет основана на Debian 7 Wheezy и будет включать множество обновлений прикладного софта. К версии 2.0 команда проекта собирается сосредоточиться на оптимизации процесса разработки и тестирования дистрибутива, чтобы как можно оперативнее выпускать критические обновления безопасности. В версии 3.0 акцент будет сделан на дальнейшем усилении безопасности, например, организации работы ключевых приложений в изолированных песочницах.
Что такое TOR: TOR – The Onion Router в переводе Луковый Роутер. Почему это называется луковый роутер станет ясно позже, а пока рассмотрим проблему анонимности в сети. Интернет как глобальная сеть не была задумана предоставлять анонимность. Другими словами в дизайне интернета вложено что каждый компьютер в сети имеет свой индивидуальный адрес и обмен данными идёт между этими адресами, то есть адреса компьютеров известны и соответственно можно определить кому именно принадлежит данный IP адрес (Internet Address / Интренет адрес ). Например у меня дома есть интернет от компании X и мой интернет адрес – 206.248.190.72. Если я хакаю apple.com то ребята в apple.com могут посмотреть кто обращается к apple.com и видят что это 206.248.190.72. Далее они сообщают ( например ) полиции и уже полиция обращается к моему провайдеру X и спрашивает: “Кому принадлежит интернет адрес 206.248.190.72?”, в ответ мой провайдер говорит мол это MeIr и вот его телефон, адрес, кредитная карта и так далее… Немного позже ко мне в дверь стучат маски шоу. Мораль: не хакайте… или сделайте так что бы вас не засекли…
Как скрыть IP адрес?
Скрыть IP адрес можно несколькими путями, но для начала я затрону одну вещь. Подделать свой IP адрес не возжно, другими словами если у вас есть IP адрес: А, то вы не можете подделать его и сказать что он B. Почему? Это тема для другой статьи и если кому интересно, то киньте в комменты и я отпишу. И так для скрытия IP адреса можно использовать proxy сервера. Для аналогии представьте что Петя хочет анонимно зайти на dolon.ru сайт… Что бы не оставлять следов, он просит Васю зайти на dolon.ru и взять первую страницу. Вася заходит на dolon.ru берёт запрашиваемую страницу и возвращает её Пете. В данном варианте, Петя не заходит на dolon.ru и как следствие не оставляет следов на сайте, другими словами dolon.ru не когда не узнает что Петя что-то смотрел на сайте, с другой стороны dolon.ru знает что на сайт заходил Вася, но это уже не важно так как Петя остался анонимным.
Proxy сервера не являются хорошим решением, так как стоит рассмотреть базовый сценарий, к чему мы и приступим. Допустим что Петя является единственным пользователем прокси сервера ( аля Васи – кто делает запросы к сайтам за место Пети ). Это значит что каждый раз когда Вася делает запрос, он делает запрос для Пети, соответственно это аннулирует какаю либо пользу от Васи. От сюда мы получаем что одна прокси не предоставляет достаточный уровень анонимности и возможно стоит использовать другую систему.
Давайте теперь усложним сценарий что бы добиться более надёжной системы анонимности. Скажем что Вася, Гена и Женя – это прокси сервера и они работают все вместе. То-есть когда пользователь Петя делает запрос на dolon.ru через Васю то происходит следующее: Вася получает запрос от оригинального пользователя Пети, дальше Вася делает запрос Гене, а Гена в свою очередь делает запрос Жене, где Женя делает запрос сайту meirz.net. Соответственно ответ от dolon.ru идёт к Жене, потом к Гене, далее к Васе и обратно к оригинальному пользователю Пете. Данный сценарий хорош тем что он состоит из нескольких прокси серверов и запросы между ними будет сложнее проследить… Но в данном сценарии есть большая проблема – это статичность. Другими словами если Женя – это всегда последний прокси сервер, а Вася всегда первый то не важно кто кому переправляет запросы, так как если мы узнаем схему, то мы всегда будем знать кто оригинальный пользователь и что он спрашивает, наблюдая всего за двумя прокси серверами. Данный вариант тоже не подходит, но ещё рано сдаваться. Если посмотреть на выше описываемый вариант с другой стороны, то в нём плохо только одно и это статичность системы. То есть если добавить динамичность то получиться то что надо.
Статичность системы заключается в том что прокси сервера не меняются местами и путь от пользователя до сервера всегда один и тот же. Что если добавить динамики? Получается что 3 прокси сервера буду работать в месте только неизвестно кто будет первым прокси, а кто будет последнем. То есть когда пользователь хочет воспользоваться системой, то каждый раз прокси сервера выстраиваются по другому… например первым прокси может стать Гена, а последним Вася или первым Женя, а последним Гена. Система теперь более надежна так как нету статичности и соответственно невозможно определить путь от пользователя до вэб сайта.
Криптография:
Криптография – большое поле, о котором можно говорить и говорить… Я не специалист по криптографии и поэтому не чего рассказывать не буду, но перед тем как продолжить разговор о TOR сети, надо всё же немного познакомиться с криптографией. Криптография или просто крипт ( для простоты ) делает из полезной информации, бесполезную. К примеру у нас есть стринг ( String ): “Password: 123″, если зашифровать это слово то результат может получиться следующим: “U2FsdGVkX18AVXi3C358YCSuMRJElM03ODqYwrBMgLo=”. На сколько вы можете видеть, зашифрованная информация абсолютно бесполезна если не знаешь как её дешифровать. Другими словами шифроваться полезно, например когда сохраняешь пароли и всё такое – так как не хочется что бы кто нить ( друг Вася ) зашёл к папку “мои документы” и посмотрел файл с паролями… Гы-гы мораль => Фишруйся. В данном конкретном случае нас интересует два вида криптографии: симметричная и асимметричная ( а именно Public-Key или Криптографическая система с открытым ключом ).
Симметричная шифровка довольно проста, идея следующая: выбираете пароль/шифр/код, далее шифруете данные ( слова, файлы и всё такое ) и усё готово ( получаете белиберду ) . Кстати выше описанный пример использует именно симметричный алгоритм. Далее что бы дешифровать белиберду, используете всё тот же пароль/шифр/код, дешифруете ( через какой нить алгоритм ) и получаете оригинальное сообщение обратно. Ключевая концепция тут именно тот факт что один и тот же пароль/шифр/код используется что бы зашифровать и дешифровать данные. Сила симметричной криптографии заключается в скорости шифровки ( очень быстро ). Слабость этой шифровки заключается именно в ключевом моменте ( один и тот же пароль для шифровки и дешифровки ). Почему? Ну вот представите себе что вы хотите переслать список свеже украденных кредитных карт другу ( который живёт на другом конце света ) к примеру. Вы шифруете файл/список симметричной криптографией… отлично, но как вы отошлете пароль/шифр/код другу? Наверное по eMail-у… как раз вместе с зашифрованным файлом… Тупо получается, так как пароль к данным идёт в открытую с данными… Ну можно конечно отослать пароль обычной почтой, а лучше вообще голубем… Можно позвонить или ещё что-то в этом роде, но думайте в компьютерной сфере – аля оптимизация, автоматизация и всё такое. Итого – не реально отправить пароль, а если пароль хоть где-то проходит открытым текстом – то безопасность всей системы идёт коту под хвост. И это подводит нас к второму типу криптографии – Public-Key Crypt. или Криптографическая система с открытым ключом.
Public-Key криптография работает по принципу: генерируете два ключа ( пароля/шифра ), один из них публичный ( открытый ключ ), а другой прайвитный ( секретный или личный ) ключ. Теперь публичный ключ можно раздать всем кому угодно, хоть всему миру… Далее используя алгоритм ( например RSA ) и публичный ключ, данные шифруются, фишка тут в том что данные нельзя дешифровать открытым ( публичным ) ключом. И только у кого есть прайвит ( секретный/личный ) может дешифровать сообщение. И так вернемся к примеру с ворованными кредитками… Вы говорите другу, что мол всё готово для отправки, друг создаёт шифровальный ключ, и отсылает вам по еМайлу публичный ключ ( в открытую ). Вы используете публичный ключ что бы зашифровать данные и отсылаете данные другу. Теперь даже если все знают публичный ключ, то всё равно не кто не сможет дешифровать данные и только ваш друг ( который имеет приватные/секретный/личный ) ключ сможет дешифровать информацию. Сила асимметричной шифровки именно в том что один ключ используется для шифровки, а другой для дешифровки – полная автоматизация. Слабость в том что шифровка очень медленная ( особенно по сравнению с симметричной шифровкой ). Напоследок приведу ещё один пример для того что проиллюстрировать почему TOR использует симметричную и асимметричную шифровку. Представите себе что вам надо переслать пару Терабайт секретных данных… Если использовать исключительно асимметричную шифровку, данные будут шифроваться/дешифроваться очень долго, но можно использовать симметричную шифровку для шифрования/дешифрования данных, а ключ от симметричной шифровки можно зашифровать асимметричной шифровкой. Итого получаем целиком безопасную, автономную и быструю систему.
TOR: продолжение