Классический DNS, который специфицирован в
rfc1034 не пинает только ленивый. При весьма высокой эффективности работы, он действительно никак не защищён, что позволяет злоумышленникам переводить трафик на подставные сайты, путём подмены DNS-ответов для промежуточных кеширующий серверов (отравление кэша). Как-то с этой напастью борется https с его SSL-сертфикатами, которые позволяют обнаружить подмену сайта. Но пользователи обычно ничего не понимают в SSL, и на предупреждения о несоответствии сертификата автоматически кликают «продолжить», вследствие чего время от времени
страдают материально.
Чтобы хоть как-то прекратить безобразие с отравлением DNS-кэшей и перехватом трафика, был придуман
DNSSEC , который является надстройкой безопасности на классический DNS и в настоящее время внедряется в интернет, контролируемый ICANN. Процесс внедрения, честно признаемся, идёт ни шатко ни валко: Подавляющее большинство коммерческих компаний и прочих организаций откровенно игнорируют вызовы нового времени, даже такие гранды IT как
Google и
Яндекс не имеют цифровых подписей своих доменных зон (
пруф и
пруф). Да и наши компетентные товарищи, которым дело до всего,
тоже не торопятся себя обезопасить с этой стороны. И только у компетентных господ, которым действительно до всего есть дело, тут
всё в порядке. Ну и ещё у организаций, которые собственно и занимаются внедрением DNSSEC, например,
verteiltesysteme.net. Да что говорить о каких-то организациях, если до сих пор ~10% доменов верхнего уровня (TLDs)
не имеют подписей DNSSEC!
Почему же случилась ситуация, которую впору назвать массовым саботажем? Ведь технологии DNSSEC бесплатны и массово доступны уже много лет! На то мы видим ряд причин:
- Security is strong. Тема сложна для среднего сисадмина, и он предпочитает с этим просто не связываться. Ведь доменную зону DNSSEC надо не только создать, но и регулярно поддерживать - обновлять ключи, и тп.
- Человеческий оптимизм: Уж с нами-то ничего не случится, и всё будет хорошо. Беды происходят не с нами. А значит, ничего предпринимать не надо. Не верите? Тогда вопрос на засыпку: А у Вас дома есть огнетушитель?
- Весьма неплохую альтернативную защиту обеспечивает https/ssl, которые хорошо диагностируют перевод пользователя на фальшивый сайт. Другое дело, пользователь обычно игнорирует соответствующие предупреждения.
- DNSSEC защищает только от отравления кэша «посторонним». Он никак не защищает от компрометации злоумышленником сервера провайдера, где содержится кэш, сервера доменной зоны, или же доменного регистратора. Кстати, именно последнее привело к захвату домена blockchain.info.
- Использование DNSSEC снижает производительность подсистемы DNS примерно впятеро, и требует больших сетевых и вычислительных ресурсов, чем классический DNS.
Таким образом мы видим, что хотя DNSSEC будет побезопаснее классического DNS, он тем не менее является паллиативом, и проблему достоверности данных полностью не решает - даже если все админы вдруг воспылают трудолюбием и сделают всё как положено. Причём паллиативом дорогим - снижение впятеро производительности основной подсистемы, от которой зависит реальная скорость работы Интеренета - это не шутки.
Ещё обратим внимание на тот факт, что поиск домена в распределённом классическом DNS и его наследнике DNSSEC происходит в момент запроса пользователя. То есть как раз тогда, когда пользователю максимально нужен вычислительный и сетевой ресурс для передачи данных, а не для выяснения кто есть ху, и проверки соответствующих подписей. Соответственно, обновления кэшей и прочая DNS-работа как раз производится в самое «дорогое» время, когда пользователю нужна его страничка, а не внутренняя работа «под капотом». Ну и понятно, что для успешной работы сети необходимо, чтобы все причастные DNS-сервера были «в полном здравии» и работали как надо. При выходе из строя какого-то промежуточного сервера - «отваливается» целый сегмент сети, что мы время от времени и
наблюдаем.
Рассматриваемой здесь альтернативой как классическому DNS, так и DNSSEC является EmerDNS, который построен на технологии блокчейн. В отличие от иерархических DNS/DNSSEC, EmerDNS является одноранговой «плоской» сетью, из которой исключены доменные регистраторы, держатели доменных зон и промежуточное кэши. А раз их нет - то и компрометировать нечего и некого. В этой системе каждый узел EmerDNS держит полный блокчейн, то есть всю базу имён и прочих транзакций. А достоверность данных (то, что они у всех одинаковы) обеспечивает сама технология блокчейна и публичный консенсус майнеров
PoS+PoW. Последнее обеспечивает отсутствие «режима бога» у кого бы то ни было, включая разработчиков системы. Ни мы, ни кто-либо другой не может волюнтаристски отменить или изменить какие-то произвольные записи. Записи могу быть обновлены только их владельцами, и никем другим. В каком-то смысле, EmerDNS подобен файлу hosts, где присутствуют записи обо всех известных сайтах. Но в отличие от hosts:
- Каждую строчку в EmerDNS может модифицировать только её владелец, и никто иной.
- Невозможность «вмешательства бога (супер-админа)» обеспечивается консенсусом майнеров.
- Этот файл у всех одинаков, что обеспечивается механизмом репликации блокчейна.
- К файлу приложен быстрый поисковик.
Обновления этой базы происходят асинхронно к запросам пользователя, в момент появления новых блоков, по push-технологии. То есть в тот момент, когда пользователю вздумалось пойти на какой-то сайт, все актуальные и проверенные DNS-записи уже лежат локально в заранее проиндексированной базе данных, и трансляция доменных имён в адреса делается локально, без запросов (особенно рекурсивных) к каким-либо внешним ресурсам. Этот подход делает скорость работы EmerDNS исключительно высокой. Кроме того, понятно, в момент разрешения доменного имени совершенно не требуется, чтобы какие-то DNS-сервера где-то в интернете были «в полном здравии».
Такой архитектурный подход делает EmerDNS системой исключительно быстрой, безопасной и отказоустойчивой. Недостаток этой архитектуры - необходимость держать копию блокчейна на каждом узле. А там не только информация о доменах, но и транзакции, и вообще всё, что в эту базу внесли все другие. Но при текущей цене и ёмкости дисковых накопителей, когда даже сотни гигабайт не выглядят чем-то дорогим для рядовых пользователей - это вполне разумная цена за скорость и безопасность. Тем более, что блокчейн Emer весит не многим более 300 мб.
Ещё одним недостатком такой системы является необходимость платить системе какое-то количество Эмеркоинов за каждое обновление информации о доменных записях. Но при текущих ценах (порядка $0.1 за создание записи и $0.01 за обновление) это всё равно во много раз дешевле, чем держать имена у доменных регистраторов (примерно $10 в год). Действительно, за те же $10 можно покупать по три обновления в день в течение года по текущим расценкам.
Отличия различных систем DNS сведены в таблицу:
Система EmerDNS существует и стабильно работает с 2014 года. Подробная инструкция по работе с ней приведена на
wiki проекта
Emercoin.
Высокие параметры отказоустойчивости и безопасности системы привели к тому, что в доменные зоны EmerDNS владельцами были перенесены сайты, заблокированные РосКомНадзором. Подробнее об этом - в
статье.
Русскоязычные инструкции для клиентов, как подключиться к системе через
OpenNIC, предоставляют сайты
Maxima и
Pornolab. Также доступ для клиентов обеспечивают браузерные плагины от
Peername и
Fri-Gate.
Понятно, что при использовании OpenNIC или других внешних серверов запросы пользователей всё-таки могу быть перехвачены и подменены. Также, теоретически, могут возникнуть и проблемы при компрометации самих DNS-шлюзов OpenNIC. Поэтому наиболее безопасным является вариант, когда шлюз в EmerDNS разворачивается в доверенной сети (локальной, домовой, корпоративной), и он только и держит блокчейн, а все пользователи обращаются к нему обычным образом, легковесными DNS-запросами. При такой архитектуре пользователи получаю высокую надёжность и безопасность, и отсутствие необходимости держать блокчейн на каждом компьютере. В
вики-статье приведены примеры, как настроить такой сервер с самыми популярными проксирующими DNS-серверами - BIND и DNSMASQ.
Дополнительную информацию об EmerDNS можно прочесть в
этой статье.
А узнать больше об Emercoin можно в нашем блоге на
Хабре,
Медиуме,
Фейсбуке,
Телеграме, или на
Крипторе.