Что такое 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: продолжение