Технология в деталях №8, апрель 2018

«Стильно, модно, молодежно…», или DNS & Blockchain

Фото аватара
Павел Храмцов
Павел Храмцов

Если не углубляться в криптографические подробности, то технология Blockchain позволяет вести распределенный реестр всего, чего угодно. И раз в системе DNS есть реестры, то было бы грех не попробовать реализовать их на этой новой технологии. Итак, мы имеем как минимум двух претендентов на реализацию: реестр доменов верхнего уровня и реестр изменений файла зоны. В настоящее время известны несколько реализаций реестров доменов на технологии Blockchain. Наиболее «старая» версия такой реализации – это проект NameCoin. Считается, что NameCoin – это одно из первых ответвлений от Bitcoin. Другой альтернативой традиционной системе DNS на основе технологии Blockchain является система ENS (Ethereum Name Service), построенная на основе smart-контрактов системы Ethereum.

В качестве вступления: у истоков, или «от печки»
Краеугольным камнем в основании корпорации ICANN является так называемый Белый документ (White Paper) [1]. Он был частью большой программы админи­страции президента Клинтона по построению Глобальной системы электронной коммерции (Clinton Administration’s Framework for Global Electronic Commerce) [2].
Суть документа состоит в том, чтобы изменить существо­вавший на тот момент времени порядок распределения инфраструктурных информационных ресурсов (доменные имена и адреса), а именно превратить этот процесс в легитимный бизнес на основе свободной и честной конку­ренции частных компаний.
Управление адресным пространством мы оставим за скобками, тем более что, согласно документу, их (адресов) распределение следовало отделить от управления про­странством имен.
Весь технологический процесс регистрации доменов был разбит на три бизнес-составляющих: бизнес регистратуры, бизнес реестра и бизнес регистратора.
Регистратуры должны были быть независимыми неком­мерческими организациями, которые определяют правила регистрации.
Реестры должны осуществлять функции ведения реестра доменных имен второго уровня, которые регистрируются в качестве поддоменов в доменных именах верхнего (первого) уровня.
Регистраторы должны осуществлять связь между администратором (владельцем) домена и реестром, т.е. выполнять операции регистрации нового домена, продле­вать регистрацию домена и выполнять другие сервисные функции, которые могут привести к повышению качества обслуживания клиентов – администраторов доменов.
Отдельно были оговорены функции и сервис, читай бизнес, по поддержке собственно DNS, в части управления серверами доменных имен корня системы DNS.
На основе данного документа в 1998 году была создана ICANN и система распределенной регистрации. Однако распределенная система управления реестром так и не была создана до сих пор.
А о возможности такой системы управления реестрами в 1996 году в своем драфте3 писал Джон Постел. Он задался вопросом: «Есть ли практический способ разделить единственное доменное имя между конкурирующими реестрами?» И ответил, что, возможно, есть техническое решение этой проблемы. Однако в том, что есть админи­стративное решение данной проблемы, он уверен не был. В итоге было принято решение, что у конкретного домена верхнего уровня регистратура может быть только одна, а вот регистраторов может быть сколь угодно много.
Конкуренция между регистратурами может существо­вать только в рамках конкуренции разных доменов, что открыло путь к появлению новых доменов верхнего уровня.
И вот сегодня, на пике популярности технологии Blockchain, мы имеем возможность построить распреде­ленную регистратуру и обеспечить функционирование системы DNS на основе этой новой технологии. Клиент, конечно, не может переносить домен из регистратуры в регистратуру. Но единообразное качество услуги ему будет гарантировано самой технологией.
Но прежде чем перейти к описанию примеров, рассмотрим некоторые технологические особенности традиционной DNS.
И снова, в который раз: как устроена систе­ма DNS
Довольно часто при рассмотрении принципов функцио­нирования DNS как бизнес-процесса смешивают в «одну посуду» несколько совершенно различных технологических процессов. А их как минимум три: управление реестром имен, делегирование прав управления доменами и под­держка DNS-инфраструктуры (серверов).
Реестр
Регистрация прав на управление доменом в реестре непосредственно к самой системе DNS как к технологиче­скому процессу трансляции имени отношения не имеет. Регистраторы с реестром взаимодействуют по протоколу EPP [4]. В рамках этого взаимодействия в базе данных реестра создается множество объектов, например:
Domain – описывает доменное имя и параметры его реги­страции;
Host – описывает серверы доменных имен, которые поддер­живают домены;
Contact – описывает данные администратора домена;
Registrar – описывает параметры регистратора.
Делегирование
Связь с процессом трансляции имени у реестра появ­ляется тогда, когда реестр генерирует и выгружает на DNS-сервер файл зоны, где каждому домену поставлены в соответствие серверы доменных имен, которые обслужива­ют домены.
На первый взгляд «оторванность» реестра от собственно самой распределенной системы DNS (множества серверов доменных имен) не должна приводить к каким-либо проблемам, но это не так. Например, до сих пор существует так и не урегулированный вопрос «orphan glue records», которому при запуске программы new gTLD [5] были посвя­щены отдельные рекомендации комитета советников по вопросам безопасности и стабильности (SSAC) [6].

В случае, когда обслуживание зоны производится на серверах с именами в той же зоне, для трансляции имени в родительской зоне необходимо явно указать IP-адрес этого сервера. В противном случае, получается циклическая зависимость – для доступа к зоне необходим доступ к серверу, на который делегирована зона, а для этого необходима трансляция его имени, для которой необходим доступ к зоне. Например, домен example.com делегирован на серверах ns1.example.com и ns2.example.com. В зоне example.com необходимо явно указать их IP-адреса. Эта запись называется «склеивающей» – «glue record».
При снятии или изменении делегирования с «glue record» могут возникнуть проблемы. Дело в том, что, например, информация о снятии делегирования с домена не может быть автоматически распространена на управление объектом типа Host (сервер доменных имен) даже в рамках реестра. И тем более изменение информации на серверах доменных имен не может автоматически повлиять на содержание реестра. Например, изменение соответствия между доменным именем и IP-адресом сервера доменных имен в системе DNS должна быть «пронесена» регистрато­ром отдельной командой EPP в реестр.
Другими словами, если в файле зоны example.com поменялось соответствие между именем ns2.example.com и IP-адресом, то для того, чтобы данное изменение было корректно отображено в реестре, объект Host, который соответствует ns2.example.com, должен быть также изменен – должен быть прописан новый IP-адрес. Иначе в зону в качестве glue-record попадет старое значение IP-адреса и система DNS будет работать некорректно.
Делегирование права на управление доменом в системе DNS реализуется путем прописывания серверов доменных имен для этого домена в файле зоны домена верхнего уровня администратором этого домена (домена верхнего уровня).
Для доменов верхнего уровня это делает IANA (PTI) в так называемой корневой зоне (root zone), для доменов второго уровня это делают реестры, а вот для доменов следующих в иерархии имен уровней это делают администраторы доменов верхнего уровня без процедуры автоматической генерации файла зоны из реестра.
Каждый раз, когда в файл зоны вносятся изменения, у него меняется серийный номер. При желании все множе­ство версий файла зоны можно рассматривать в качестве реестра изменений. Вероятность того, что серийный номер повторится, чрезвычайно мала.
Инфраструктура
И последнее – это протокол DNS, который реализован на серверах доменных имен и резолверах. Он помогает использовать систему DNS в качестве большой поисковой машины. При этом машины универсальной. Дерево доме­нов позволяет быстро, и это ключевое свойство системы, искать как IP-адреса по заданным именам, так и имена по заданным адресам.
Некоторое время назад, до внедрения DNSSEC, оставались вопросы по достоверности информации, которую может получить пользователь из системы DNS. Внедрение DNSSEC эти вопросы снимает.
Тем не менее, один принципиально важный вопрос до сих пор не решен – это вопрос децентрализации управления пространством имен.
В корневой зоне изначально такое управление осущест­вляли госорганы США, потом управление было передано ICANN – частной некоммерческой корпорации.
Теперь, в эпоху бурного развития технологий Blockchain, многие из ее энтузиастов считают, что настало время перейти к полностью децентрализованной модели, когда единого центра управления не будет совсем.

В поиске альтернатив: DNS & Blockchain
Если не углубляться в криптографические подробности, то технология Blockchain позволяет вести распределенный реестр всего, чего угодно. И раз в системе DNS есть реестры, то было бы грех не попробовать реализовать их на этой новой технологии.
Итак, мы имеем как минимум двух претендентов на реализацию: реестр доменов верхнего уровня и реестр изменений файла зоны.
В настоящее время известны несколько реализаций реестров доменов на технологии Blockchain.
Наиболее «старая» версия такой реализации – это проект NameCoin, который стартовал в 2010 году. Считается, что NameCoin – это одно из первых ответвлений от Bitcoin.
Мотивация создателей NameCoin проста – создать децентрализованную, защищенную от цензуры и вмешательства извне систему доменных имен, альтернативную существующей. Оставив политические аспекты типа SOPA [7] за скобками обсуждения, обратим все внимание на техно­логические аспекты.
Авторы проекта утверждают [8], что для реализации реестра и системы DNS не нужны DNSSEC и прочие ухищрения. Достоверность информации, в нашем случае – принад­лежность имени администратору и соответствие имени конкретному адресу, обеспечивается самой технологией Blockchain.
Приватность информации, в данном случае речь идет о содержании DNS-запросов, достигается либо установкой копии реестра на компьютере конечного пользователя, либо за счет шифрования запросов при использовании DNSCurve при обращении к системе со стандартного резолвера.
Утверждается также, что NameCoin отвечает на запросы конечных клиентов быстрее, чем традиционная система DNS. Обоснование здесь такое – вся система находится на компьютере конечного клиента и время доступа в этом случае будет ~10 ms, в то время как в традиционной системе среднее время отклика – 100 ms.
В работе также приводятся соображения, что регистрация, обновление статуса домена и обновление информации в зоне будут также происходить быстрее. Для подтверждения регистрации, обновления и делегирования требуется подтверждение 12 последующих блоков в цепочке блоков. На майнинг одного блока уходит примерно 10 минут, т.е. на регистрацию домена потребуется примерно два часа, впрочем, как и на любую другую операцию.
Если резюмировать принцип работы NameCoin, то реестр и система резолвинга устанавливаются на компьютерах конечных пользователей. Реестр регистрации доменов (соответствие имени администратору) ведется по техноло­гии Blockchain и реестр соответствия имен адресам (аналог зонных файлов) также ведется по технологии Blockchain.
Многие из описанных преимуществ NameCoin перед традиционной DNS выглядят с технической точки зрения и с точки зрения современных реализаций традиционной DNS неубедительно.
Во-первых, ничего не говорится о времени синхронизации реестров на компьютерах конечных пользователей.
Во-вторых, два часа на регистрацию имени – это по современным меркам очень много. Например, для системы регистрации освобождающихся доменов такие временные интервалы – в силу особенности бизнес-процесса – просто неприемлемы.
В-третьих, основное время сейчас тратится на подписание больших зон в рамках технологии DNSSEC, а не на их распространение. Для примера, в SLA по программе new gTLD время от внесения изменения в зону по протоколу EPP до появления изменения на серверах равно 60 минутам. Это в два раза меньше времени подтверждения в NameCoin при, например, делегировании домена. В реальной жизни такие изменения вносятся еще быстрее, в течение 10-15 минут, а то и быстрее.
Как бы то ни было, каждый желающий может попро­бовать систему в действии [9]. С ней ассоциирован домен верхнего уровня .bit. Это неофициальный домен верхнего уровня, «освященный» ICANN, но вполне работоспособный в рамках самой системы NameCoin.
Другой альтернативой традиционной системе DNS на основе технологии Blockchain является система ENS (Ethereum Name Service) [10], построенная на основе smart-контрактов системы Ethereum.
Система технологически состоит из двух типов компонен­тов: реестра и резолвера.
Реестр содержит информацию для всех доменов и поддоменов об администраторе домена, резолвере домена и времени жизни всех ресурсных записей, которые связаны с доменом.
Главное назначение резолвера – обеспечивать поиск соответствия между именем и адресом. При этом в документации оговаривается, что поиск соответствия предполагает нечастое обновление этого самого соответ­ствия.

Регистратор в системе ENS – это smart-контракт, который регистрирует домены в соответствии со спецификацией EIP 162 [11]. В случае, когда на регистрацию одного и того же имени претендует несколько клиентов, включается аукцион доменов. Длительность типового аукциона пять дней. Платят за регистрацию Эфиром (монета Ethereum).
Таким образом, можно констатировать, что и здесь мы имеем дело с реализацией в технологии Blockchain как реестра имен, так и реестра файла зон.
Существуют и другие примеры построения альтерна­тивной системы DNS на основе технологии Blockchain со шлюзами в обычный DNS. Например, EmerDNS [12] (EmcDNS) на основе Emercoin. Возможно, что эта система наиболее продвинута в сторону обычных пользователей. Для нее существуют плагины для браузеров, шлюз в альтернатив­ные DNS и ряд других инструментов интеграции ресурсов системы с традиционным DNS.
Вместо заключения: в поиске «места под солнцем»
Практически все энтузиасты Blockchain фокусируют внимание на том, что технология позволяет построить полностью децентрализованный реестр, обеспечивает безопасность функционирования и защиту приватной информации.
При этом они опускают реализацию половины биз­нес-процессов, которые сейчас доминируют в системе DNS, например, поддержку обратных зон или управление теми же orphan glue records.
Возможно, что таких проблем в новой системе может и не возникнуть, однако никто даже не начал обсуждать такие задачи, а дьявол, как известно, кроется в деталях.
Создание 20 лет назад корпорации ICANN было обосно­вано необходимостью и возможностью построения новых бизнес-моделей и бизнес-ролей: регистратура, регистратор, тр. В современных Blockchain-реализациях альтернативной DNS эти или новые роли четко не определены.
Есть майнеры, которые подтверждают транзакции. Они получают вознаграждение за свою работу. Есть разработчики приложений (smart-контрактов, например), которые тоже получают вознаграждение. Оплате подлежит подтверждение каждой транзакции: регистрация домена, смена IP-адреса сервера и т.п.
Ценообразование динамическое. Если, например, взять Ethereum, то нужно понимать, сколько «газа» нужно для конкретной операции и сколько стоит каждый «галлон». Для конечного пользователя может оказаться сюрпризом необходимость оплаты смены IP-адреса веб-сайта. В текущих реалиях это делается совершенно бесплатно через интерфейс регистратора/хостинг-провайдера.
Довольно часто звучит тезис о том, что технология Blockchain может «похоронить» ICANN, лишив корпорацию ее доминирующей роли в управлении пространством доменных имен. В этой связи хочется заметить, что упо­минание технологии Blockchain в панельных дискуссиях на конференциях ICANN отмечено с 2015 года [13].
Следует также отметить, что проект NameCoin был представлен на 58-ой конференции ICANN в Копенгагене в 2017 году. Он вызвал довольно оживленную дискуссию и был воспринят сообществом положительно.
Принять на эксплуатацию 332 миллиона доменных имен не так-то просто. А пока NameCoin, например, осваивает пространство TOR (домен .onion) [14].

Ссылки

  1. https://www.icann.org/resources/unthemed-pages/white-paper-2012-02-25-en#N_3_
  2. https://clintonwhitehouse4.archives.gov/WH/New/Commerce/
  3. http://userpage.fu-berlin.de/~mr94/dns/stuff/draft-postel-iana-itld-admin-01.txt
  4. https://tools.ietf.org/html/rfc5730
  5. https://newgtlds.icann.org/en/
  6. https://www.icann.org/en/system/files/files/sac-048-en.pdf
  7. https://ru.scribd.com/document/70419349/E-PARASITES-Act
  8. https://www.sidnlabs.nl/downloads/theses/Report%20Namecoin%20as%20alternative%20to%20the%20Domain%20 Name%20System.pdf
  9. https://namecoin.org/
  10. https://ens.domains/
  11. https://github.com/ethereum/EIPs/issues/162
  12. https://emercoin.com/en/tech-solutions/3#services
  13. https://www.icann.org/en/system/files/files/iti-report-15may14-en.pdf
  14. https://www.namecoin.org/files/videos/icann-58/Namecoin-ICANN58-TEG-Final.pdf