Как работают децентрализованные системы регистрации доменных имён

By | 12 сентября, 2018

Имран Хан, сотрудник отдела развития бизнеса Microsoft, советник по бизнесу в компаниях zkCapital и NorthwesternU, в посте на Medium делает подробный обзор децентрализованных систем регистрации доменных имён и обрисовывает их перспективы.

Система доменных имён (Domain Name System, DNS) работает уже десятки лет. DNS — это распределённая сеть, часть инфраструктуры интернета, которая обрабатывает миллиарды запросов. Пользуясь интернетом, вы полагаетесь при навигации на свою операционную систему и свой браузер. Запрос отправляется на разрешающий сервер (ресолвер). Задача последнего — поиск IP-адреса, соответствующего нужной странице. Однако у меня вызывает некоторое беспокойство конечный механизм, помогающий вашему устройству обнаружить искомый веб-сайт.

В последнее время основанные на блокчейне решения быстро развиваются, предлагая ценные нововведения. Представьте, например, что вы оказались в Турции в тот день, когда там заблокировали разрешающий сервер для поиска IP-адресов Твиттера. Как бы вы на это отреагировали? Вероятно, вы были бы огорчены тем, что правительство Турции ограничивает вам доступ к социальной сети. В таких случаях решения, основанные на блокчейне, могли бы составить серьёзную конкуренцию DNS, несмотря на то, что при этом придётся пойти на некоторые жертвы. Ниже я более подробно рассмотрю архитектуру DNS и сравню её с блокчейн-эквивалентами, такими как Ethereum Naming Service (ENS) и Handshake.

История и архитектура DNS

Чтобы понять, как работают серверы системы DNS, и узнать историю её возникновения, нужно вспомнить, как создавалась сеть ARPANET. ARPANET (Advanced Research Projects Agency Network) была построена для того, чтобы исследовательские центры могли быстро обмениваться информацией. Со временем всё больше компьютеров стало подключаться к сети ARPANET, что сделало затруднительным ручное управление всеми IP-адресами. Из-за роста нагрузки сотрудники централизованного сервера доменных имён физически не могли запомнить и обработать все IP-адреса, к которым пользователи хотели подключиться. Тогда исследователь Пол Мокапетрис предложил, чтобы имена хостов включали в себя имя и категорию, которые были бы связаны с IP-адресом.


В двух словах, DNS преобразует читаемый машиной IP-адрес наподобие http://74.123.225.72 в текст, понятный человеку, например Google.com. Сегодня это может показаться тривиальным, но новая система впервые представила распределённый способ хранения имен. Имена хостов разместили в базе данных, которая распределена между многими серверами, что помогло сократить зависимость от одного сервера в данный момент времени. Это также позволило распределить систему файловых имён между всеми серверами внутри топологии DNS. Таким образом, серверы по всему миру получили возможность обрабатывать запросы без необходимости доверия к одному централизованному серверу.

Иерархия DNS

Полноценное доменное имя — это полное имя домена для хоста в интернете. Возьмём, например, доменное имя mail.google.com. Здесь mail — имя хоста, и хост находится в домене google.com. Далее, .com — это домен верхнего (первого) уровня (ДВУ). Такая иерархия похожа на компьютерный корневой каталог с вложенными папками. Домен .com будет ДВУ, домен .Google получает доменное имя Google.com и право создавать поддомены, такие как mail.google.com.


Управление DNS

Теперь, когда мы получили представление об иерархии DNS, давайте подробнее рассмотрим способ управления ею. Каждое доменное имя должно быть уникально и контролироваться должным образом, чтобы не возникало дублированных доменов, то есть доменов, имеющих одинаковое имя, но разную принадлежность. В этой ситуации требуется регистратор (например, GoDaddy). GoDaddy может регистрировать доменные имена и домены верхнего уровня с помощью ICANN (Internet Corporation for Assigned Names and Numbers), которая обеспечивает регистрацию доменов во всём мире. ICANN — это некоммерческая организация, задача которой — обеспечивать управление и обновление глобальной системы доменных имен и поддерживать её в рабочем состоянии. Сегодня, когда домен регистрируется, он становится частью центральной базы данных регистрации доменов (например, WhoIS) и распространяется по всей сети.

Как работает DNS

Когда вы вводите в своём браузере адрес Google.com, браузер посылает DNS-запрос на рекурсивный сервер (например, ISP). Если рекурсивный сервер содержит в своем кэше нужный IP-адрес, он может отправить запрашивающему узлу (хосту) правильную информацию. В том случае, если рекурсивный сервер не находит нужный IP-адрес, он обращается к корневому серверу. Как правило, корневой сервер перенаправляет рекурсивный сервер к соответствующему серверу доменных имён верхнего уровня (например, .Com или .Gov). Затем сервер доменных имён верхнего уровня указывает рекурсивному серверу на соответствующий сервер, содержащий IP-адрес Google.com. Эта информация посылается обратно хосту и кэшируется на рекурсивном сервере для дальнейшего использования.


Упрощённая схема работы DNS

  1. Пользователь вводит адрес Google.com.
  2. Браузер посылает запрос о поиске IP-адреса на рекурсивный сервер.
  3. Рекурсивный сервер обращается к корневому серверу, тот к — серверу доменных имён верхнего уровня, далее — к соответствующему серверу имён.
  4. IP-адрес найден, и рекурсивный сервер отсылает информацию пользователю.

Проблемы безопасности DNS

Система доменных имён распределённая по своей природе, однако она должна полагаться на конкретные серверы для получения достоверной информации. Такая запутанная система может привести к тому, что запрос будет перехвачен.

Вот несколько возможностей для перехвата вашего запроса:

  1. Злоумышленник получает контроль над одним или несколькими авторитетными серверами домена.
  2. Так называемое «отравление кэша», при котором на рекурсивный сервер вводятся вредоносные данные.
  3. Злоумышленник получает контроль над самой регистрацией домена и перенаправляет пользователей.
  4. DDoS-атака (Distributed Denial of Service, «отказ в обслуживании»), преобразование множества мелких запросов в более крупные, что «обрушивает» сервер пользователя.

Описанные выше атаки могут перенаправить запрос пользователя на сайт, который контролируется «захватчиком». Например, в декабре 2017 года биржа Etherdelta была взломана, и хакеры сумели вывести эфир на $250 000. Злоумышленники получили контроль над сервером имён DNS биржи Etherdelta и заменили его на сайт, выглядевший идентичным. Пользователи заходили на сайт, проводили транзакции, их средства выводились, а счета обнулялись.

Почему стоит использовать блокчейн

База данных DNS велика, но блокчейн по своей распределённой природе может хранить информацию миллионов устройств по всему миру. Сохранение информации и правильный механизм консенсуса поможет устранить необходимость доверия к конечным серверам для обработки запросов. С точки зрения безопасности мы могли бы устранить возможность большинства атак с помощью неизменяемого блокчейна. Это обеспечило бы жизнеспособность доменных адресов и защитило бы пользователей от фишинга и скама. Кроме того, системы DNS более подвержены DDoS-атакам по сравнению с решениями, основанными на блокчейне. Наконец, блокчейн-решения помогли бы обойти любые запретительные действия, предпринятые правительствами (вроде отключения в Турции Твиттера) и сделать сайты устойчивыми к цензуре.

Ниже я расскажу о проектах, которые работают над созданием системы серверов доменных имён на блокчейне.

ENS

В заявлении проекта ENS говорится, что его реестр намеренно создан простым и существует только для связи имени домена с соответствующим ресолвером.

ENS, как и DNS, преобразует читаемый машиной адрес в тот, что понятен человеку. При его использовании IP-адреса заменяются на адреса в пространстве эфириума (IPFS/Swarm-хеши). Архитектура ENS отличается от архитектуры DNS тем, что эфириум основан на блокчейне. Архитектура ENS гораздо проще, так как в роли регистраторов используются смарт-контракты, а не сторонние структуры, такие как GoDaddy. С помощью передачи этой функции смарт-контрактам каждый пользователь может создать поддомен с правами регистратора. Наконец, ресолвер действует в качестве переводчика, который преобразует имена в хеши и адреса. Более подробно об этом можно прочитать здесь (Ethereum Name Service, ссылка).


Handshake

Handshake — это децентрализованный, не требующий подтверждения третьей стороны, совместимый с DNS протокол имён, при котором каждый участник отвечает за управление корневой зоной. Цель Handshake — создание альтернативы существующим органам сертификации.

Это блокчейн с использованием UTXO (Unspent Trasaction Output, вывод неизрасходованных транзакций), который применяет Bcoin — альтернативу программного обеспечения полной ноды BitcoinCore. Протокол консенсуса в рамках Handshake заменяет корневой сервер ICANN. Как уже говорилось, ICANN — это некоммерческая организация, которая управляет глобальным пространством доменных имён, занимается его обновлением и поддерживает работоспособность сети. Традиционно рекурсивный сервер указывает на файл корневой зоны, чтобы найти нужный IP-адрес.

При использовании Handshake «рекурсивные ресолверы указывают на авторитетные серверы доменных имен, которые привязаны к блокчейну, а не к файлу корневой зоны ICNN». Далее Handshake делает следующий шаг и создаёт для владельца доменного имени криптографический ключ. Он даёт своему обладателю возможность создавать криптографические подписи. Такой процесс, по существу, позволяет заменить органы сертификации, которые существуют сегодня.

Пока же нам необходимы такие организации, как Verisign, чтобы обеспечить безопасность работы серверов доменов верхнего уровня. Список 13 авторизованных организаций, занимающихся управлением корневыми серверами, можно найти здесь.


Различия между Handshake и ENS

Handshake и ENS приносят в сферу DNS уникальные стратегии. Handshake стремится выполнять функции корневого сервера для всей инфраструктуры. Традиционно корневые зоны объединяют все домены верхнего уровня в файл корневой зоны. Это текстовый документ объёмом около 2 Мб, содержащий список имён веб-сайтов с IP-адресами. Этот файл управляется и распространяется ICANN (гейткипером). Цель Handshake — стать своего рода децентрализованным ICANN. Все пиры полной ноды в среде Handshake будут, по существу, выполнять функции корневого сервера, обслуживающего файл корневой зоны. Наконец, Namebase интегрируется с Handshake, что позволит любому желающему приобрести домен верхнего уровня. Сегодня же для того, чтобы получить такой домен, необходимо подать заявку и заплатить ICANN $200 000 (при этом заявка может быть не одобрена).


Ethereum Naming Service работает в качестве провайдера доменов второго уровня для расширений .ETH и .LUXE. Сегодня индивидуум или компания могут купить доменное имя и управлять его ежедневным использованием. ENS регистрирует его как единый смарт-контракт, который содержит информацию о владельце, ресолвере и времени жизни. Сейчас .ETH и .LUXE контролируются системой смарт-контрактов, которые регулируют распределение поддоменов. Тем не менее команда проекта работает над возможностью интеграции любого DNS-домена в ENS. Пока сеть работает в тестовом режиме и во многом требует ручного управления, но после внедрения сервиса ДВУ она станет возможным конкурентом Namebase. В конце концов ENS сфокусируется на создании интегрированных децентрализованных приложений в экосистеме эфириума.
Подводя итог, можно сказать, что регистрация доменов в Handshake решена с помощью упрощённой системы верификации платежей и является блокчейн-родственной, тогда как ENS использует блокчейн эфириума для управления двумя централизованными доменами верхнего уровня.

Резюме

Система Domain Name Servers ежедневно обрабатывает миллиарды запросов от устройств по всему миру. Если DNS однажды перестанет работать, мы не сможем получить доступ ко Всемирной сети. Сама по себе инфраструктура является распределённой, однако она полагается на работу серверов при обработке запросов. Такая зависимость от серверов делает систему уязвимой для хакерских атак, а также даёт правительствам больше возможностей подвергнуть цензуре контент, доставляемый пользователям.

Системы, основанные на блокчейне, предлагают надёжное решение для обеспечения безопасности и высокой масштабируемости, хотя, возможно, здесь могут быть подводные камни. Я в восторге от проектов, которые строятся на блокчейне, таких как Blockstack, Handshake и Ethereum Naming Services. Когда эти проекты достигнут больших масштабов, мы получим возможность работать с миллиардами запросов ежедневно. Я буду внимательно следить за их развитием и обязательно присоединюсь к ним, когда сервисы будут созданы.


Автор: Дмитрий А

Поделиться ссылкой

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *