Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Между тем, корневые серверы DNS начинают отдавать подписанные зоны – то есть, разворачивается DNSSEC (это технология удостоверения адресной информации в DNS с помощью цифровой подписи). 27 января ввели поддержку DNSSEC на L-Root (проверить может каждый, но пока что там ключи “подставные” используются).
К осени форсируют внедрение IPv6, потом потребуют подписывать анонсы BGP (это такой протокол, позволяющий организовать маршрутизацию между, грубо говоря, “независимыми” сетями), так что уже через пару-тройку лет все незаметно окажутся в новом Интернете.
Комментарии (2) »
Продолжаем “неделю” информационной безопасности Интернета в блоге dxdt.ru. С введением технологии DNSSEC связано много “непоняток”, что, в общем-то, ожидаемо. Одна из этих “непоняток” – реальные возможности по управлению адресным пространством, возникающие у держателя главного ключа. (Напомню, кратко, что DNSSEC – это набор протоколов, вводящий в DNS криптографические механизмы подтверждения подлинности адресной информации.)
Так вот, как показывает практика, при оценке “глобальных возможностей”, даже ИТ-специалисты упускают из виду ключевой момент: сейчас с шумом намечен первый практический шаг на пути внедрения DNSSEC – подписывание корневой зоны (это главный источник данных в глобальной DNS); а вот второй шаг остаётся в тени, ему мощной PR-поддержки пока не оказывают: этот шаг – внедрение на клиентские машины новых резолверов, поддерживающих проверку данных DNSSEC.
О чём идёт речь: сейчас на типичной клиентской машине (персональном компьютере, подключенном к Интернету, работающем под управлением ОС Windows), для получения информации из DNS используется так называемый stub resolver – это такая весьма простая программа (или, скажем, системная служба – не важно), которая лишь отправляет запросы о получении IP-адреса для того или иного домена на внешний DNS-сервер. Основная особенность тут в том, что stub resolver не выполняет “рекурсивного поиска” в глобальной DNS, а поручает всю работу по такому поиску известному DNS-серверу (обычно, это сервер, принадлежащий интернет-провайдеру).
Столь простой резолвер не знает о DNSSEC, поэтому не может проверить валидность данных, полученных в ответ на запрос от DNS-сервера. Иными словами, возникает следующая ситуация: полнофункциональные DNS-серверы поддерживают DNSSEC и обмениваются между собой удостоверенной информацией, а до массового конечного потребителя, до пользователя, “цифровые подписи” не доходят, так как резолвер на его машине – оказался туповат.
Думаю, теперь понятно, что внедрение поддерживающих DNSSEC резолверов на клиентские машины хорошо оправдывается решением только что описанной проблемы “последней мили DNS”, тем более, что DNSSEC задумана как технология обеспечения защиты информации в схеме “точка-точка”, а не “точка-шлюз”. Собственно, движение уже намечено: резолвер DNS в Windows 7 использует такую схему работы с DNSSEC, в которой валидность адресной информации по запросу резолвера проверяет тот или иной доверенный DNS-сервер. Сложно сказать, как скоро в рядовые пользовательские системы придёт рекурсивный резолвер и как именно он будет устроен, но можно отметить, что аналогичная древовидная система уже работает у типичных “клиентов Интернета” – это SSL-сертификаты, известные многим по реализации в браузерах.
Итог: DNSSEC проникает в корневую зону DNS и во все домены первого уровня (а дальше – ниже), а также и на клиентские машины. С точки зрения управления Интернетом – второй момент имеет не меньшую важность.
Корневую доменную зону раздаёт по глобальной DNS скрытый сервер, контролируемый штатовской компанией VeriSign. Подписывать зону в DNSSEC также будет VeriSign своим секретным ключом (хотя, да, ключ ей “делегирует” ICANN). Операционные системы, работающие на большинстве пользовательских компьютеров, выпускает другая штатовская корпорация – Microsoft. Понятно, что новые резолверы устанавливаются с помощью глобального обновления ОС: это стандартная процедура. Надеюсь, пытливый читатель способен самостоятельно сопоставить эти два “технологически-административных” момента и сделать вывод о свойствах пространства, в котором существует “независимость” современного Интернета, и, соответственно, трезво оценить рычаги управления, вводимые с помощью DNSSEC (на фоне объявления о “независимости ICANN”).
Лирическое отступление: реалии централизованного управления DNS, которая, по мнению многих и многих “интернет-энтузиастов”, выступающих в форумах, является “распределённой системой без центра контроля”, наверное, заслуживают отдельной заметки.
Так что, действительно, внести изменения в корневую зону, скорректировав управление тем или иным доменом верхнего уровня, можно уже сейчас, без DNSSEC – нужно только иметь доступ к генератору зоны. Внесённые изменения коснутся всех тех, кто посылает запросы к данным физическим корневым серверам. Но только DNSSEC позволяет построить криптографически защищённое “второе плечо”, контролирующее всё дерево со стороны пользовательских ОС (а Интернет – он для массовых пользователей). При работе этого плеча “перейти на другие серверы” уже так просто не получится, ведь “главного ключа” в доступности не будет.
Комментарии (5) »
Свежее продолжение истории с “независимостью” Интернета и ICANN (из-за “техничности” повода, СМИ широкого профиля тенденцию из вида упустили):
Пишут, что с 1 июля 2010 года в корневой зоне системы DNS вводится полная поддержка технологии DNSSEC.
При этом, подписать зону (в тестовом режиме) планируют раньше, 1 декабря. А вот раздавать ключи – как раз начнут летом следующего года. Подписывать всё будут в IANA, силами VeriSign, с разрешения Правительства США. Понятно, что секретный ключ от корня DNS вообще никому передавать не станут, он будет храниться на специальном защищённом сервере (это технологически правильное решение).
То есть, “логическое” доменное пространство (в представлении рядовых пользователей) как бы отпускают “на свободу” под эгидой ICANN и GAC (обсуждайте правила в доменах, обдумывайте введение новых – пожалуйста). Как и ожидалось, параллельно, уровнем ниже вводится новый мощный технологический рычаг, сохраняющий иерархию управления – DNSSEC. Следующий логичный шаг: подписывание анонсов в BGP, подписывание блоков IP (ускоренная миграция в IPv6 – в помощь). Там также будет корневой ключ и, думаю, мудрые Штаты его так же оставят у себя в кармане.
Комментарии (3) »
Вот, кстати, первым источником уязвимостей в реализациях DNSSEC (это “безопасное” расширение DNS) будут рационализаторские решения. Технические центры крупных доменов захотят экономить ресурсы и поправят технологии так, как удобнее с точки зрения экономии. Поправки породят уязвимости.
Это, вообще, обычное дело в системах безопасности. Скажем, рационализаторы экзотическими “неразрушающими способами” отключают сигнализации, определяющие наличие опасных газов в воздухе (чтобы не пищало “попусту”). Или фиксируют во включенном положении скотчем на мощном и опасном механизме управляющие кнопки, работающие в качестве дополнительного “рубежа” подтверждения пуска. В Debian OpenSSL рационализаторы поправили исходный код так, чтобы анализатор кода перестал выдавать предупреждения – итог: в библиотеке появился ужасный дефект, скомпрометировавший огромное количество криптографических ключей.
Так что с DNSSEC будет то же самое – дыры подготовят рационализаторы.
Comments Off on DNSSEC – источники неприятностей
Кстати, про DNSSEC – технологию, которую сейчас будут бурно обсуждать. Для чего DNSSEC? Для того, чтобы ввести в интернетовский обиход механизм, позволяющий всем участникам обмена адресной информацией осуществлять более надёжное управление доверием. Доверие – это самое важное в DNSSEC. Тем не менее, сейчас про DNSSEC напридумывали много всякого, неверного.
Чтобы проще было разбираться, на всякий случай напомню, что же такое DNS. DNS – это такой сервис в Интернете, позволяющий преобразовывать символьные имена узлов в числовые IP-адреса, по которым и производится реальная адресация. (Ну и, вообще говоря, с помощью сервиса DNS специальным образом возможно осуществить и обратное преобразование: IP-адрес – в символьное имя.) Главный философский момент тут такой: DNS – именно сервис, работающий с помощью большого количества серверов, разбросанных по глобальному Интернету; напрямую к маршрутизации пакетов DNS не привязана – пакеты между узлами вполне ходят без всякой DNS, которую придумали-то для людей.
Вот.
1. DNSSEC,технически, это расширение DNS, позволяющее подписывать адресную информацию цифровой подписью. То есть администратор доменной зоны подписывает записи о соответствии доменных имён и IP-адресов в своей зоне. Потребитель адресной информации получает возможность проверить валидность подписи. Это важно потому, что тот самый потребитель обычно получает запрошенную DNS-информацию через третьи-пятые руки, а не напрямую от администратора интересующей его зоны – потребителя обслуживает тот DNS-сервер (кеширующий сервер), который, например, указан в настройках ОС. Пользователь вынужден доверять именно этому серверу. Но хуже всего, что и ответы этого “ближайшего” сервера злоумышленник может подделать. А без механизмов проверки подлинности полученную в ответ на запрос подделку выявить не представляется возможным.
2. DNSSEC позволяет победить такие вполне себе фундаментальные уязвимости в DNS, как, например, отравление кеша. Эти уязвимости позволяют нехорошим злоумышленникам перенаправлять пользователей Интернета на свои серверы, подменяя соответствие имён доменов и IP-адресов. Набрал мойбанк.ru, а браузер попал вовсе не на сервер банка. Кому-то может показаться, что более старые, чем Веб, уязвимости вовсе не так уж и опасны, они протухли. Но вот, скажем, если недавно продемонстрированную на практике возможность создания поддельного SSL-сертификата, вообще не отличимого от настоящего, прикрепить к отравлению кеша, то получится, что достаточно продвинутые злоумышленники могут клонировать сайт банка, снабдив его, в том числе, и валидным SSL-сертификатом. Даже крайне недоверчивый пользователь будет введён в заблуждение. Хорошо построенная атака может дать массовый эффект: пользователи крупного провайдера все как один пойдут вместо реального сервера банка на подставной, при этом в адресной строке браузера будет значиться правильный адрес, и SSL-сертификат не вызовет в браузере окон с предупреждениями.
3. В DNSSEC используются криптографические методы. Это так. Но нужно понимать, что передаваемая информация при этом не скрывается. То есть цель протоколов DNSSEC не в том, чтобы сделать данные об адресации “нечитабельными”, а в том, чтобы обеспечить целостность данных и аутентификацию источника. Но для этого используются криптографические алгоритмы, привлекающие, в том числе, и секретные ключи, необходимые для генерации подписей.
4. Вот с ключами как раз и возникают основные хитрости. Как известно, для проверки подписи нужен открытый ключ, принадлежащий тому, кто подписывал. В случае DNS – тому лицу, которое сгенерировало данные об адресации в доменной зоне. Можно рассматривать всякие технические особенности и хитрости криптосистем RSA (и если это интересно, то можно написать серию заметок по теме), но самый важный вопрос всё равно более системный: как узнать, что претендующее на владение той или иной доменной зоной лицо, размахивающее через DNS-запрос открытым ключом и соответствующей подписью, действительно владеет этой зоной и уполномочено ей управлять? И вправду, может, это самозванец? То есть, опять вопрос сводится к такому: можно ли конкретной подписи доверять, если раньше этой подписи не попадалось и о её владельце особой информации нет? Это общий вопрос для систем аутентификации. В офлайне он издревле решается так: приглашают третью сторону, которой доверяют оба “участника сделки”. Если решение обобщить, то возникает некая структура доверия, которая может быть “плоской” (как, например, в системах PGP), но чаще бывает иерархической, сходящейся к некоторому корневому центру, который, в итоге, удостоверяет подписи всех остальных “участников соглашения”.
5. У корневого центра есть свой секретный ключ. И с этим ключом в DNSSEC проблема, потому что не понятно, кому он должен достаться. Сложность ещё и в том, что у DNS Интернета одна корневая зона, а домены выстроены в иерархическую структуру, поэтому построение “плоской” структуры доверия затруднительно организационно (хоть некоторые администраторы доменов и пытаются тут что-то придумать). В схеме с одним главным ключом – проблема: в случае повсеместного внедрения DNSSEC (тут важно не забывать про клиентскую сторону тоже) к его обладателю все должны идти на поклон, и он сможет домены эффективно “выключать” по своему желанию.
Вот.
Вообще, несколько подробнее про DNSSEC в популярном изложении можно прочитать в недавнем выпуске журнала “Доменные имена”, который в электронном виде можно взять на сайте RU-CENTER. На 69-й странице там начинается моя статья про DNSSEC.
(Если есть какие-то вопросы – прошу в комментарии, я, возможно, сделаю отдельный раздел про DNSSEC.)
***
Дополнения (2012):
О DNSSEC, в течение нескольких лет, я написал много других публикаций и реализовал несколько технологических демонстраций, например, такой демонстрацией является первый подписанный домен в зоне .su – nox.su.
Корневую зону глобальной DNS (общепринятой) подписали в ночь с 15 на 16 июля 2010 года. Связанные с этой процедурой домыслы прессы, падкой на криптосенсации, привели к возникновению забавного “мема” о “шестёрке программистов, которых уполномочили перезагрузить Интернет, если он сломается”. Естественно, в реальности всё обстоит сильно иначе.
DNSSEC, как и ожидалось, постепенно проникает на клиентские машины (обычно, в виде браузерных расширений); это – важный аспект внедрения данной технологии, который, кстати, является маркером изменения основных принципов использования DNS.
Комментарии (2) »
Кстати, внедрение DNSSEC приведёт к появлению новых типов атак на DNS, среди которых есть довольно интересные и неожиданные (впрочем, два упомянутых ниже типа специалистам давно известны и описаны в соответствующих RFC, но тем не менее).
Скажем, для проверки достоверности данных в DNSSEC используются криптографические ключи, которые крепко привязаны ко времени: у каждого ключа строго определён срок действия. Так что если часы компьютера, проверяющего адресную информацию по DNSSEC, не привязаны к “всеинтернетовскому” глобальному времени DNS, то у этого компьютера большие проблемы с корректностью обработки адресов. Соответствующая атака, видимо, должна использовать какие-то манипуляции с системным временем. Для DNS, работающей без DNSSEC, глобальное время не так важно.
Другой вариант: DNSSEC использует вычислительно затратные криптографические операции. Это означает, что новая DOS-атака (на отказ) может основываться на подсовывании поддерживающим DNSSEC системам “дефектных” подписей и ключей. При этом атакуемый компьютер тратит немалые вычислительные мощности на бесполезную обработку данных от злоумышленников. Затраты процессорного времени тут просто не сравнимы с затратами на обработку запросов по протоколам “классической” DNS: DNSSEC потребует гораздо больше ресурсов.
Comments Off on Продолжение про DNSSEC: атаки на основе времени
Как известно, DNSSEC – это технология, помогающая избавиться от основных проблем с уязвимостями в современной DNS. DNSSEC позволяет подписать цифровой подписью данные по адресации в той или иной доменной зоне. В результате участники и пользователи DNS получат возможность проверять достоверность данных об адресах сайтов. То есть, ранее данные принимались “с верой на слово” и вместо реального сайта под доменом test.ru можно было относительно легко попасть на поддельный, расположенный как бы под тем же адресом. DNSSEC позволяет проверить достоверность данных по подписи и на поддельный сайт не ходить.
Хитрости состоят в том, что DNSSEC может добавить лишнего доверия системе DNS. И в тот момент, когда раскроется очередная уязвимость в реализации криптографических протоколов, проблем может оказаться гораздо больше, потому что пользователи будут больше доверять подписанным ответам. Интересно, что OpenSSL, суперсерьёзная ошибка в которой обнаружилась весной этого года, вполне себе используется в работе серверного ПО для реализации DNSSEC (не всегда, впрочем).
Вот. Есть и другой важный момент.
DNSSEC, с криптологической точки зрения, вполне стандартная система авторизации с иерархией удостоверяющих центров. По логике развития, иерархия подписей должна бы соответствовать иерархии самой DNS. То есть подписывать ключи для конкретных зон должны авторитативные серверы (есть такие серверы, служащие источником первичной информации об адресации). А корневые серверы (грубо говоря, серверы корневого домена “.” – см. “Как работает DNS“) должны выступать “верховным центром доверия”.
Но на практике корневые серверы пока ничего в рамках DNSSEC не подписывают (хотя в ближайшее время DNSSEC там, видимо, появится). И авторитативные серверы доменов верхнего уровня также весьма редко поддерживают DNSSEC. Всё это приводит к тому, что некоторые провайдеры или регистраторы, не являясь источником авторитативной информации в данном домене верхнего уровня, начинают, тем не менее, самостоятельно подписывать зоны DNS. Вроде бы – неплохо, а с другой стороны – вводит клиентов в большое заблуждение, потому что получается, что реальные возможности “удостоверяющего центра” вовсе не соответствуют взятой им на себя ответственности.
Но, вообще говоря, понятно, что DNSSEC нужна, и это сейчас единственный реальный шанс как-то улучшить ситуацию с безопасностью в Сети.
Комментарии (1) »
Между прочим, нас ждёт повсеместное внедрение DNSSEC на ключевых серверах DNS в ближайшее время. И это правильно. Потому что тепершняя DNS – самое раздолье для злоумышленников: разработанная в начале 80-х система доменных имён вообще никак не защищена. Это ещё можно было понять в 80-х, когда Интернет строился на доверии сторон. Современные реалии с наличием столь незащищённой системы среди ключевых элементов Сети – не сочетаются.
Кстати, DNS давно и прочно превратилась в фундамент доступности Сети для современного массового пользователя: все способы адресации, этим пользователем применяемые, основаны на DNS. Набрал адрес в адресной строке браузера – работает DNS. Перешёл по ссылке с веб-страницы – работает DNS (в подавляющем большинстве случаев). Особенно интересна, что и поисковая выдача также завязана на DNS через ссылки. Так что давно пора защищать.
А о том, что же такое DNSSEC – я как-нибудь напишу.
Comments Off on DNSSEC – внедрение
Между тем, шумиха про уязвимость DNS, якобы “массово исправленную”, это не более, чем очередная PR-акция в поддержку повсеместного введения DNSSEC. Именно так. С очень забавным пафосом про уязвимость пишут рунетовские интернет-СМИ. Например:
“Уязвимость […], которая могла бы затронуть значительную часть Интернета, исправлена общими усилиями специалистов по сетевой безопасности и крупных корпораций…” – это “Вебпланета“.
Что такое DNSSEC? Это такая технология, массового введения которой всё равно не избежать. Вот. Цель DNSSEC в том, чтобы привить небезопасной по самой своей природе системе DNS хоть какие-то “элементы безопасности”, соответствующие реалиям современного Интернета, в котором, к сожалению, всё меньше места для доверия (зато – всё больше места для криптографии). Подробнее – как-нибудь в другой раз.
Comments Off on Шумиха про ошибку в DNS
Новый