Введение
TSIG (транзакционная подпись) — это компьютерный сетевой протокол, определённый в RFC 2845. Его основное назначение — обеспечение аутентификации обновлений базы данных DNS системой доменных имён (DNS). Чаще всего он используется для обновления динамического DNS или вторичного/ведомого DNS-сервера. TSIG использует общие секретные ключи и одностороннее хеширование для предоставления криптографически надёжного механизма аутентификации каждой конечной точки соединения, подтверждая её право на выполнение или ответ на обновление DNS. Хотя запросы к DNS обычно могут выполняться без аутентификации, обновления DNS должны быть аутентифицированы, поскольку они вносят постоянные изменения в структуру системы имён в Интернете. Поскольку запрос на обновление может поступать по незащищённому каналу (Интернет), необходимо принять меры для обеспечения подлинности и целостности запроса. Использование ключа, общего для клиента, выполняющего обновление, и DNS-сервера, помогает гарантировать подлинность и целостность запроса на обновление. Односторонняя хеш-функция предотвращает несанкционированное изменение обновления и его перенаправление злоумышленниками, обеспечивая тем самым целостность сообщения от отправителя к получателю. В протокол TSIG включена временная метка для предотвращения повторного использования записанных ответов, что могло бы позволить злоумышленнику скомпрометировать безопасность TSIG. Это предъявляет требование к динамическим DNS-серверам и TSIG-клиентам иметь точные часы. Поскольку DNS-серверы подключены к сети, протокол сетевого времени (NTP) может служить точным источником времени. Обновления DNS, как и запросы, обычно передаются по протоколу UDP, поскольку он требует меньших накладных расходов, чем TCP. Однако DNS-серверы поддерживают запросы как по UDP, так и по TCP.
in RFC 2845. Primarily it enables the Domain Name System (DNS) to authenticate updates to a DNS database. It is most commonly used to update Dynamic DNS or a secondary/slave DNS server. TSIG uses shared secret keys and one way hashing to provide a cryptographically secure means of authenticating each endpoint of a connection as being allowed to make or respond to a DNS update. Although queries to DNS may usually be made without authentication, updates to DNS must be authenticated, since they make lasting changes to the structure of the Internet naming system. As the update request may arrive via an insecure channel (the Internet), one must take measures to ensure the authenticity and integrity of the request. The use of a key shared by the client making the update and the DNS server helps to ensure the authenticity and integrity of the update request. A one way hashing function serves to prevent malicious observers from modifying the update and forwarding on to the destination, thus ensuring integrity of the message from source to destination. A timestamp is included in the TSIG protocol to prevent recorded responses from being reused, which would allow an attacker to breach the security of TSIG. This places a requirement on dynamic DNS servers and TSIG clients to contain an accurate clock. Since DNS servers are connected to a network, the Network Time Protocol can provide an accurate time source. DNS updates, like queries, are normally transported via UDP since it requires lower overhead than TCP. However, DNS servers support both UDP and TCP requests.
Реализация
Обновление, как указано в 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 Структура, содержащая временную метку, алгоритм и данные хеша.