Погружение в технологию блокчейн: Децентрализованная нецензурированная система доменных имён

Продолжаем цикл статей, посвященных технологии блокчейн. Прошлая статья из серии «Секреты EmerCoin» завершилась кратким описанием NVS (Name-Value Storage) — распределённым хранилищем записей на базе блокчейна Emer. Подробности об этом вы узнаете в материале ниже.

562cd9338e2944f1a0bb09ce196cb737.jpg

Цикл статей «Погружение в технологию блокчейн»


1. Серия материалов, посвященных технологии Emer:
1.1. Секреты EmerCoin.
1.2. Децентрализованная нецензурированная система доменных имён.
1.3. Loading…
2. Быстрые и безопасные транзакции.
3. Экосистема цифровой стоматологии.
4. Loading…

Введение


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

За основу NVS был взят код из Namecoin, в котором существует подобное хранилище для поддержки распределённой доменной зоны *.bit. Но если хранилище от Namecoin предназначено только для обслуживания единственной доменной зоны, а для загрузки других типов данных надо предпринимать дополнительные шаги, то NVS сразу было реализовано как хранилище данных общего назначения, используя которое можно создавать различные распределённые сервисы.

Что такое emcDNS и зачем он нужен


Исторически первым сервисом EmerCoin стал сервис доменных имён, похожий на emcDNS от Namecoin. По мере роста атак на классическую доменную систему как со стороны криминала, так и от локальных властей, такой сервис становится всё более востребованным. Подробнее об этом можно прочитать здесь.

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

В системе emcDNS доменной записью, также как любой другой NVS-записью, может управлять только её владелец, точнее — владелец кошелька, в котором находится данная запись. Только он может её изменить или удалить. Следует учесть, что так как запись находится в блокчейне, её копии находятся в каждом Emer-узле. То есть каждый узел содержит информацию обо всех NVS-записях, включая и доменные. Это позволяет делать поиск такой записи локально, не запрашивая внешние сервера, что приводит как к высокой скорости разрешения доменных имён, так и к высокой надёжности и безопасности — ваш провайдер не узнает, какие сайты вы сейчас ищете, особенно если доступ к сайтам будет по https.

Обсуждая архитектуру системы, у EmerCoin состоялся интересный диалог с разработчиками традиционной направленности.
 — Поздравляем! Вы изобрели файл hosts!
 — Да. В каком-то смысле так и есть. Но только наш файл hosts:
  • Одинаков на всех машинах (майнеры гарантируют это).
  • В нём каждую строчку может менять только хозяин этой строчки, и никто другой.
  • Изменённая строчка быстро реплицируется на другие машины.
  • В нём имеется индекс для быстрого поиска.

Отличия от Namecoin


При проектировании сервиса подход Namecoin был пересмотрен, и был внесён ряд улучшений, которые сделали этот сервис более привлекательным и практичным. Рассмотрим их детально.

Несколько доменных зон вместо одной


Если Namecoin обслуживает только фиксированную доменную зону *.bit, аналогичный сервис Emer позволяет обслуживать несколько зон одновременно, причём новые зоны вводятся просто записью в config-file. Это открывает возможности создавать на базе emcDNS собственные «ведомственные» доменные зоны, которые будут распознаваться только соответственно сконфигурированными Emer-узлами. В настоящее время система обслуживает четыре публичные доменные зоны, доступные через сервера OpenNIC:
  • *.coin — основной альтернативный домен, в первую очередь связанный с крипто-монетами и прочими деньгами;
  • *.emc — домен для сервисов, связанных с EmerCoin;
  • *.lib (от liberty и library — для политических движений за всё хорошее, против всего плохого) — для библиотек различного содержимого;
  • *.bazar — для различных торгово-обменных сайтов.

Возможность задать срок аренды записи


В отличие от Namecoin, где срок аренды записи составляет примерно 200 дней, и её надо регулярно продлять, в NVS можно указать срок аренды, и он может составлять столетия. Более долгий срок аренды будет стоить дороже, но ненамного. Этот подход позволяет упростить администрирование, и снижает риск потери контроля над записью, который возможен в случае истечения записи и перехвата её другим пользователем сети.

Возможность удалить запись


Кроме возможности резервирования записи на любой срок, в системе Emer существует возможность деактивировать запись до истечения срока аренды. Namecoin подобным функционалом не обладает.

Встроенный DNS-server rfc1035


Система Namecoin поддерживает только хранение DNS-записей. Не существует механизма извлечения и передачи этих записей программам-клиентам в стандартном DNS-формате. Насколько известно, для использования Namecoin необходимо дампить всю базу имён, и передавать её в пользование классическому DNS-серверу, который осуществляет поиск своими механизмами и рассылает ответы в стандартном формате rfc1035, подходящем для использования.

Каждый кошелёк EmerCoin имеет встроенный DNS-сервер, который обрабатывает стандартные запросы интернет-формата rfc1035, и отвечает в том же формате, который используется во всем Интернете. Это позволяет говорить о подлинной децентрализации доменной системы, когда каждый кошелёк является DNS-сервером, а не только выделенные сервера-шлюзы. Эта стандартизация также облегчает интеграцию emcDNS с другими подсистемами.

Управление поддоменами


Этот момент очень важен в «плоской» доменной сети, в которой отсутствует древовидная структура серверов, обслуживающих ту или иную доменную зону. Рассмотрим атаку типа «захват поддомена».

Представим, что отсутствует механизм защиты или управление поддоменом, и существует сервер victim.emc. Владелец домена создал ещё одно имя, www.victim.emc, которое назначил на тот же сервер. Однако злоумышленник может создать имя www1.victim.emc, и назначить его на свой вредоносный сервер. Формально, это два разных имени, которые никак не связаны. Однако в соответствии с парадигмой построения Интернет-имён и классической сети DNS, пользователь своё доверие к серверу victim.emc перенесёт и на www1.victim.emc, вследствие чего, например, может «подарить» злоумышленнику свой пароль.

На момент анализа кода Namecoin, в не было механизма управления поддоменами. То есть, для создания и управления поддоменами сайт должен держать собственный NS-сервер, который и разрешает эти поддомены. Все записи доменов 3-го уровня данной системой просто игнорируются.

В системе emcDNS существуют два правила:

1. Все запросы на доменное имя любого уровня, кроме «разрешённых исключений», разрешаются как доменные имена второго уровня. То есть, если запись victim.emc не содержит исключений, то запросы к любым поддоменам будут в ней разрешаться как к victim.emc. Например, запрос на разрешение имени hey.give.me.victim.emc будет полностью эквивалентен запросу на имя victim.emc.

Если в value имени указан специальный тэг SD, то его значение интерпретируется как список разрешённых исключений, которые обслуживаются системой. Рассмотрим в качестве примера emcDNS-запись библиотеки Флибуста:

"name" : "dns:flibusta.lib",
"value" : "A=81.17.19.227|SD=static,cn|TXT=Flibusta Library",

Здесь мы видим тэг SD, содержащий два исключения — static, cn. Значит, что система emcDNS разрешает имена static.flibusta.lib и cn.flibusta.lib, а не редуцировать их до flibusta.lib. Записи этих имён также могут содержать тэг SD, и таким образом, можно будет строить доверенные доменные имена любого уровня. Не доверенные записи будут редуцированы до имени второго уровня.

Полезные ссылки о практическом применении


1. В настоящее время, эта система доменных имён используется рядом онлайн-библиотек и торрент-трекеров. Подробнее можно узнать здесь.
2. Краткое описание с примером и картинкой, как создать запись.
3. Полное же описание системы.
4. Чтобы стать клиентом системы, можно либо подключиться к любому серверу OpenNIC, либо же на своей локальной машине или в локальной сети развернуть шлюз в emcDNS. Инструкция о том, как подключить доменные зоны emcDNS через OpenNIC. Этот способ не требует от вас установки ни кошелька EmerCoin, ни каких-либо внешних программ или плагинов. Но недостатком этого способа является использование внешнего DNS-сервера, что частично дискредитирует идею полной децентрализации.
5. Описание других способов подключения к системе, с полным функционалом. Смотрите раздел Integration into a regular DNS tree. Рекомендуемые рецепты заключаются в том, что в локальном компьютере или локальной сети устанавливается кошелёк EmerCoin, и создается точка сопряжения, которая «смешивает» доменные зоны ICANN и emcDNS. Сопряжение производится посредством любой DNS Cache программы. В примерах приведены BIND, DNSMASQ, Acrylic.

Комментарии (0)

© Habrahabr.ru