Вы здесь

Под капотом Emercoin. Часть 2. Децентрализованная нецензурируемая система доменных имён

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

Под капотом Emercoin. Часть 2. Децентрализованная нецензурируемая система доменных имён

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

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

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

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

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

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

  • Одинаков на всех машинах (майнеры гарантируют это).
  • В нём каждую строчку может менять только хозяин этой строчки, и никто другой.
  • Изменённая строчка быстро реплицируется на другие машины.
  • В нём имеется индекс для быстрого поиска.

Прямо как в анекдоте – не десять тысяч, а десятку, не в лотерею, а в преферанс, и не выиграл, а проиграл.

Отличия от Namecoin

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

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

Если Namecoin обслуживает только фиксированную доменную зону *.bit, аналогичный сервис Emer позволяет обслуживать несколько таковых одновременно, причём новые зоны вводятся просто записью в config-file. Это открывает возможности создавать на базе emcDNS собственные «ведомственные» доменные зоны, которые будут распознаваться только Emer-узлами, соответственно сконфигурированными. В настоящее время система обслуживает четыре публичные доменные зоны, доступные через сервера OpenNIC:

  • *.coin – основной альнетративный домен, в первую очередь связанный с крипто-монетами и прочими деньгами.
  • *.emc – домен для сервисов, связанных с EmerCoin.
  • *.lib – от слов liberty и library – для политических движений за всё хорошее против всего плохого и для библиотек различного содержимого.
  • *.bazar – для всяких торгово-обменных сайтов.

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

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

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

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

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

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

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

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

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

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

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

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

Все запросы на доменное имя любого уровня, кроме «разрешённых исключений», разрешаются как доменные имена второго уровня. То есть, например, если запись 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, и таким образом, можно строить доверенные доменные имена любого уровня. Все же недоверенные записи будут редуцированы до имени второго уровня.

Практические применения

В настоящее время, эта система доменных имён используется рядом онлайн-библиотек и торрент-трекеров. Подробнее можно прочесть об этом здесь.

Краткое описание с примером и картинкой, как создать запись. Полное же описание системы находится здесь.

Чтобы стать клиентом системы, можно либо подключиться к любому серверу OpenNIC, либо же на своей локальной машине или в локальной сети развернуть шлюз в emcDNS.

Здесь приведена инструкция, как подключить доменные зоны emcDNS через OpenNIC.

Этот способ не требует от Вас ни установки кошелька EmerCoin, ни каких-либо внешних программ или плагинов. Но недостатком этого способа является использование внешнего DNS-сервера, что частично дискредитирует идею полной децентрализации.

Документ DNS_and_Name-Value_Storage содержит описание других способов подключения к системе, с полным функционалом. Смотрите раздел Integration into a regular DNS tree. Рекомендуемые рецепты заключаются в том, что в локальном компьютере или локальной сети устанавливается кошелёк EmerCoin, и делается точка сопряжения, которая «смешивает» доменные зоны ICANN и emcDNS. Сопряжение производится посредством любой DNS Cache программы. В примерах приведены BIND, DNSMASQ, Acrylic.

Категория: 
Криптовалюты
3
Ваша оценка: Нет Средняя: 3 (2 оценок)
40721 / 0
Аватар пользователя admin
Публикацию добавил: admin
Дата публикации: вт, 11/08/2016 - 16:43

Что еще почитать:

Комментарии:

Андрей

А можно добавлять стандартные доменные зоны вроде ru или com?

вс, 11/13/2016 - 16:12

Денис

ИМХО, добавлять можно, и теоретически это даже сработает, если домен в зонах ru или com еще не зарегистрирован в международной системе ICANN. Но, такой домен будет виден только пользователями emcDNS, OpenNIC, а самое главное вступит в конфликт, если такой домен будет зарегистрирован обычным домены регистратором.
Если я не прав, поправьте меня, авторы.

пн, 11/14/2016 - 11:15

Анонимус

Я думаю что OpenNIC точно не будет поддерживать традиционные доменные зоны на блокчейне, т.к. это откроет кучу возможностей для различных темных личностей (фишинг и т.п.).

пн, 11/14/2016 - 16:19

Анонимус

Сомнительно насчет фишинга.

пн, 11/14/2016 - 20:29

Денис

Спасибо за подробную статью!

пн, 11/14/2016 - 11:12

NeiTrinO

То есть классическим браузером не "достать" эти домены, которые регистрируются через EMC?

вт, 02/21/2017 - 23:13

emcid_npwcf

Достать. Дело не в браузере, а в ДНС.

ср, 02/22/2017 - 14:47

NeiTrinO

В общем, поэкспериментировал я с этими доменами.
Какие есть варианты:
1. Добавить DNS зоны в настройки подключения
2. Установить плагин Frigate для Mozilla Firefox / Google Chrome (самый простой и быстрый вариант, если используете этот браузер по умолчанию)

чт, 03/02/2017 - 19:59

Антон

Что-то не соображу, как это делается в кошельке: если я зарегистрировал домен, например *.bazar , то как я его могу передать другому владельцу?

сб, 10/28/2017 - 15:42

Jonh

Сделать Name_Update а в строке адреса, указать адрес того, кому пересылается запись. Через 1 блок, запись будет принадлежать уже другому.

чт, 12/21/2017 - 14:18