Введение

TSIG (транзакционная подпись) — это компьютерный сетевой протокол, определённый в RFC 2845. Его основное назначение — обеспечение аутентификации обновлений базы данных DNS системой доменных имён (DNS). Чаще всего он используется для обновления динамического DNS или вторичного/ведомого DNS-сервера. TSIG использует общие секретные ключи и одностороннее хеширование для предоставления криптографически надёжного механизма аутентификации каждой конечной точки соединения, подтверждая её право на выполнение или ответ на обновление DNS. Хотя запросы к DNS обычно могут выполняться без аутентификации, обновления DNS должны быть аутентифицированы, поскольку они вносят постоянные изменения в структуру системы имён в Интернете. Поскольку запрос на обновление может поступать по незащищённому каналу (Интернет), необходимо принять меры для обеспечения подлинности и целостности запроса. Использование ключа, общего для клиента, выполняющего обновление, и DNS-сервера, помогает гарантировать подлинность и целостность запроса на обновление. Односторонняя хеш-функция предотвращает несанкционированное изменение обновления и его перенаправление злоумышленниками, обеспечивая тем самым целостность сообщения от отправителя к получателю. В протокол TSIG включена временная метка для предотвращения повторного использования записанных ответов, что могло бы позволить злоумышленнику скомпрометировать безопасность TSIG. Это предъявляет требование к динамическим DNS-серверам и TSIG-клиентам иметь точные часы. Поскольку DNS-серверы подключены к сети, протокол сетевого времени (NTP) может служить точным источником времени. Обновления DNS, как и запросы, обычно передаются по протоколу UDP, поскольку он требует меньших накладных расходов, чем TCP. Однако DNS-серверы поддерживают запросы как по UDP, так и по TCP.

Реализация

Обновление, как указано в RFC 2136, представляет собой набор инструкций для DNS-сервера. Эти инструкции включают заголовок, зону для обновления, предварительные условия, которые должны быть выполнены, и записи, подлежащие обновлению. TSIG добавляет заключительную запись, содержащую временную метку и хеш запроса, а также имя секретного ключа, использованного для подписи запроса. RFC 2535 содержит рекомендации относительно формата имени ключа. Ответ на успешное обновление TSIG также будет подписан записью TSIG. В случае сбоя подпись не создается, чтобы предотвратить получение злоумышленником информации о ключе TSIG посредством специально сформированных запросов на обновление ("зондирование"). Программа nsupdate может использовать TSIG для выполнения обновлений DNS. Запись TSIG имеет тот же формат, что и другие записи в запросе на обновление. Значение полей описано в RFC 1035. + Поля записи TSIG Поле Байты Значение Описание ИМЯ Макс. 256 Имя ключа; идентифицирует ключ на клиенте и сервере TYPE 2 TSIG (250) CLASS 2 ANY (255) TTL 4 0 Записи TSIG не должны кэшироваться RDLENGTH 2 Длина поля RDATA RDATA RDLENGTH Структура, содержащая временную метку, алгоритм и данные хеша.