
912 Глава 8. Безопасность в сетях
Защита DNS
Избежать атак описанного типа можно, заставив DNS-серверы использовать слу-
чайные идентификаторы в своих запросах вместо того, чтобы просто инкремен-
тировать их. К сожалению, заткнув одну «дыру», мы обнаруживаем другую. На-
стоящая проблема в том, что служба DNS разрабатывалась в те времена, когда
Интернет был чисто исследовательской сетью, работавшей в нескольких сотнях
университетов, и ни Алиса, ни Боб, ни Труди на этот праздник жизни приглаше-
ны не были. Вопрос защиты информации тогда еще не стоял; задачей-максимум
было заставить Интернет функционировать. Но с годами среда, в которой прихо-
дилось выживать Интернету, сильно изменилась, поэтому в 1994 году IETF осно-
вала рабочую группу, задачей которой было защитить DNS. Этот проект известен
под названием DNSsec (Защита DNS); результаты работы группы опубликова-
ны в RFC 2535. К сожалению, DNSsec до сих пор не удается развернуть в боль-
ших масшатабах, поэтому многие DNS-серверы продолжают подвергаться напа-
дениям злоумышленников.
Концептуально система DNSsec очень проста. Она основана на шифрова-
нии с открытыми ключами. Каждая зона DNS (в терминах рис. 7.2) обладает
парой ключей, а именно, открытым и закрытым. Вся информация, отправляе-
мая DNS-сервером, подписывается с помощью закрытого ключа зоны отпра-
вителя, поэтому аутентичность может быть запросто проверена принимающей
стороной.
DNSsec предоставляет три основные услуги:
1. Подтверждение места отправления данных.
2. Распространение открытых ключей.
3. Аутентификацию транзакций и запросов.
Самой главной является первая услуга, с ее помощью проверяется то, что при-
шедшие данные были подтверждены их отправителем. Вторая услуга полезна
для безопасного хранения и извлечения открытых ключей. Третья позволяет за-
щититься от атак повторного воспроизведения и обмана сервера. Обратите вни-
мание: секретность здесь не обеспечивается, этой задачи нет, поскольку вся ин-
формация DNS считается открытой. Так как процесс введения DNSsec в строй,
скорее всего, будет продолжаться в течение нескольких лет, важно предоставить
возможность общения между собой серверам, снабженным системой защиты и
не снабженным ею. Это неявно подразумевает, что протокол изменять нельзя.
Рассмотрим теперь эту систему чуть более детально.
Записи DNS группируются в наборы, называемые RRSet (Resource Record
Set — набор записей ресурсов). В набор входят все записи с одинаковыми имена-
ми, классами и типами. Скажем, в наборе может быть несколько записей А, если
имя DNS соответствует первичному и вторичному IP-адресам. Наборы расши-
ряются за счет некоторых новых типов записей (обсуждаются далее). Каждый
RRSet хэшируется (например, с использованием MD-5 или SHA-1). Хэш подпи-
сывается при помощи закрытого ключа зоны (например, по алгоритму RSA).
Единицей передаваемой клиентам информации является подписанный RRSet.
Получив его, клиент может проверить, действительно ли для генерации подписи
Защита информации во Всемирной паутине 913
был взят закрытый ключ зоны отправителя. Если подпись корректна, данные
принимаются. Так как каждый RRSet содержит собственную подпись, наборы
можно кэшировать где угодно, даже на не слишком надежных серверах, не опаса-
ясь за их судьбу.
Система DNSec вводит несколько новых типов записей. Первая из них — это
запись KEY. В ней хранятся открытый ключ зоны, пользователя, хоста или дру-
гого принципала, криптографический алгоритм генерации подписи, наименова-
ние протокола передачи и еще несколько бит. Открытый ключ хранится в неза-
щищенном виде. Сертификаты Х.509 не используются из-за их громоздкости.
В поле алгоритма рекомендуемое значение, соответствующее MD5/RSA, равно
1, для других комбинаций используются другие значения. Поле протокола мо-
жет указывать на использование IPsec или другого протокола защиты соедине-
ний (если таковой вообще применяется).
Второй новый тип записей — SIG. В такой записи содержится подписанный
хэш, сформированный в соответствии с алгоритмом, указанным в KEY. Подпись
охватывает все записи RRSet, включая все записи KEY, однако не включая саму
себя. Здесь также содержатся время начала и конца действия подписи, имя вла-
дельца подписи и некоторая дополнительная информация.
Система DNSsec устроена так, что закрытый ключ зоны может храниться
в автономном режиме. Один или два раза в день содержимое базы данных зоны
можно вручную переносить (например, записав компакт-диск) на машину, рабо-
тающую в автономном режиме и хранящую закрытый ключ. Там можно сгенери-
ровать подписи для всех наборов, и полученные таким образом записи SIG можно
снова записать на компакт-диск и перенести на главный сервер. Таким образом,
закрытый ключ можно хранить на компакт-диске, запертом в сейфе и вынимае-
мом только для того, чтобы подписать на автономной машине ежедневное обнов-
ление наборов типа RRSet. По окончании генерации подписей все копии ключа
удаляются из памяти, а диск и компакт-диск возвращаются в сейф. Эта процеду-
ра превращает электронную защиту информации в физическую, что гораздо по-
нятнее пользователям.
Метод предварительного подписания наборов значительно ускоряет процесс
обработки запросов, так как отпадает необходимость в шифровании «на лету».
Платой за это является большой объем дискового пространства, необходимого
для хранения всех ключей и подписей в базах данных DNS. Из-за этого некото-
рые записи увеличиваются в размере десятикратно.
Получив подписанный RRSet, клиент должен применить открытый ключ зо-
ны для расшифровки хэша, затем вычислить хэш самостоятельно и сравнить два
значения. В случае их соответствия данные считаются корректными. Тем не ме-
нее, эта процедура не решает вопрос получения клиентом открытого ключа зоны.
Одним из способов является запрос ключа у надежного сервера и передача его
по защищенному соединению (например, при помощи IPsec).
Однако на практике предполагается, что у клиентов уже есть открытые клю-
чи всех доменов верхнего уровня. Если Алиса пожелает посетить сайт Боба, она
запросит у службы DNS набор RRSet для bob.com, в котором будет содержаться
IP-адрес и запись KEY с открытым ключом Боба. RRSet будет подписан доменом