В конце августа 2018 года ICANN выпустила напоминание о запланированном на октябрь текущего года обновлении ключа подписей Key Sigining Key (KSK) корневой зоны DNS который является ключевым звеном в цепочке доверия DNSSEC.
Впервые корневая зона "." была подписана в 2010 году и с тех пор ключи цифровой подписи не обновлялись ввиду ряда объективных причин, начиная с отсутствия разработанной безопасной процедуры этого обновления и заканчивая неизвестными побочными эффектами, которые могут возникнуть в процессе транзита. Ввиду того, что автор уже довольно подробно останавливался на вопросах механизмов функционирования DNSSEC, а также вопросах практического внедрения этого механизма, далее будут затронуты лишь практические аспекты грядущего обновления.
В настоящее время корневая зона подписана ключом KSK с id 19036. В этом можно удостоверится, воспользовавшись, к примеру, утилитой drill на примере домена kostikov.co
root@beta:~ # drill -TD kostikov.co
;; Number of trusted keys: 2
;; Domain: .
[T] . 172800 IN DNSKEY 257 3 8 ;{id = 20326 (ksk), size = 2048b}
. 172800 IN DNSKEY 257 3 8 ;{id = 19036 (ksk), size = 2048b}
. 172800 IN DNSKEY 256 3 8 ;{id = 41656 (zsk), size = 2048b}
Checking if signing key is trusted:
New key: . 172800 IN DNSKEY 256 3 8 AwEAAfaifSqh+9ItxYRCwuiY0FY2NkaEwd/zmyVvakixDgTOkgG/PUzlEauAiKzlxGwezjqbKFPSwrY3qHmbbsSTY6G8hZtna8k26eCwy59Chh573cu8qtBkmUIXMYG3fSdlUReP+uhBWBfKI2aGwhRmQYR0zSmg7PGOde34c/rOItK1ebJhjTAJ6TmnON7qMfk/lKvH4qOvYtzstLhr7Pn9ZOVLx/WUKQpU/nEyFyTduRbz1nZqkp6yMuHwWVsABK8lUYXSaUrDAsuMSldhafmR/A15BxNhv9M7mzJj7UH2RVME9JbYinBEzWwW9GpnY+ZmBWgZiRVTaDuemCTJ5ZJWLRs= ;{id = 41656 (zsk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU= ;{id = 20326 (ksk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU= ;{id = 20326 (ksk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 256 3 8 AwEAAfaifSqh+9ItxYRCwuiY0FY2NkaEwd/zmyVvakixDgTOkgG/PUzlEauAiKzlxGwezjqbKFPSwrY3qHmbbsSTY6G8hZtna8k26eCwy59Chh573cu8qtBkmUIXMYG3fSdlUReP+uhBWBfKI2aGwhRmQYR0zSmg7PGOde34c/rOItK1ebJhjTAJ6TmnON7qMfk/lKvH4qOvYtzstLhr7Pn9ZOVLx/WUKQpU/nEyFyTduRbz1nZqkp6yMuHwWVsABK8lUYXSaUrDAsuMSldhafmR/A15BxNhv9M7mzJj7UH2RVME9JbYinBEzWwW9GpnY+ZmBWgZiRVTaDuemCTJ5ZJWLRs= ;{id = 41656 (zsk), size = 2048b}
Key is now trusted!
[T] co. 86400 IN DS 10384 8 1 df157833aad57f3561f3a47f178ba46e7e7183dc
co. 86400 IN DS 10384 8 2 a76358b4c22e95c2c4a56db8adc923779e0829142d7c51b04e54769c86407d70
co. 86400 IN DS 21754 8 1 8b9b8fda21b4cf6fc3e97a31fc0d77c1cb7e70ee
co. 86400 IN DS 21754 8 2 c30634014c0752da93b0633ed4ce641b63826a5ded820027f4117ca0c32050a0
;; Domain: co.
[T] co. 518400 IN DNSKEY 256 3 8 ;{id = 63993 (zsk), size = 1280b}
co. 518400 IN DNSKEY 257 3 8 ;{id = 10384 (ksk), size = 2048b}
Checking if signing key is trusted:
New key: co. 518400 IN DNSKEY 256 3 8 AwEAAb2ppBK7kDCHSvK3eu3wzPG3RqY4GQSJjbxMA0vGyhQwa0M1exdk4rNarxcfGSRECVVovHbPKxver/VYZ/zUy9Gvx7vp1w48v6wSeFusvVMiWW8JTQEcbygmt8klKTWRoPuMg7tC5uAPQyX42imaUmRVT1HQfcx0qVIfUmF4NwJQLv3BAgR/gop9HwPef3HYVHqrd+3YdamE/BX8G8myWsc= ;{id = 63993 (zsk), size = 1280b}
Trusted key: . 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU= ;{id = 20326 (ksk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU= ;{id = 20326 (ksk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size = 2048b}
Trusted key: . 172800 IN DNSKEY 256 3 8 AwEAAfaifSqh+9ItxYRCwuiY0FY2NkaEwd/zmyVvakixDgTOkgG/PUzlEauAiKzlxGwezjqbKFPSwrY3qHmbbsSTY6G8hZtna8k26eCwy59Chh573cu8qtBkmUIXMYG3fSdlUReP+uhBWBfKI2aGwhRmQYR0zSmg7PGOde34c/rOItK1ebJhjTAJ6TmnON7qMfk/lKvH4qOvYtzstLhr7Pn9ZOVLx/WUKQpU/nEyFyTduRbz1nZqkp6yMuHwWVsABK8lUYXSaUrDAsuMSldhafmR/A15BxNhv9M7mzJj7UH2RVME9JbYinBEzWwW9GpnY+ZmBWgZiRVTaDuemCTJ5ZJWLRs= ;{id = 41656 (zsk), size = 2048b}
Trusted key: co. 518400 IN DNSKEY 256 3 8 AwEAAb2ppBK7kDCHSvK3eu3wzPG3RqY4GQSJjbxMA0vGyhQwa0M1exdk4rNarxcfGSRECVVovHbPKxver/VYZ/zUy9Gvx7vp1w48v6wSeFusvVMiWW8JTQEcbygmt8klKTWRoPuMg7tC5uAPQyX42imaUmRVT1HQfcx0qVIfUmF4NwJQLv3BAgR/gop9HwPef3HYVHqrd+3YdamE/BX8G8myWsc= ;{id = 63993 (zsk), size = 1280b}
Key is now trusted!
Trusted key: co. 518400 IN DNSKEY 257 3 8 AwEAAbRMbIuINuButWsoFlw9DNU0TAsPVE50npMdT5hLjt26fGexhKI45U3Nk0fWxeaPq426PmUSbUe9AM7EYkspANizgtj8Sy39HIbcrLH1GVo4vxxoIGdtSsnSkKqZLNT8zg2fySkNCBI1923Y/D/dMYvVXxuzK8MCKR4O8QYDEZxLBraFx/1VdLBZPdetWFf94Ue2JuHHX1t83HN+MYAPgdbyFk5kftD33G/ROhOpBLLf37b7HJV0I3iofb9/q+aTthyNhuG5eF8FvPr6/PiBHqvMm1iy8Fmn+b135k1wbRrrygZwEkvHwyMDMCLXkRiah8l2YEVTt89i4+v4ur8WoQU= ;{id = 10384 (ksk), size = 2048b}
[T] kostikov.co. 7200 IN DS 47047 13 2 33d2e710eae6c4e9ac308e174d9e817696b8b87950390ca0367ac2c0f1559368
;; Domain: kostikov.co.
[T] kostikov.co. 86400 IN DNSKEY 256 3 13 ;{id = 40794 (zsk), size = 256b}
kostikov.co. 86400 IN DNSKEY 256 3 13 ;{id = 7918 (zsk), size = 256b}
kostikov.co. 86400 IN DNSKEY 257 3 13 ;{id = 47047 (ksk), size = 256b}
[T] kostikov.co. 86400 IN A 78.40.219.163
;;[S] self sig OK; [B] bogus; [T] trusted
То же можно увидеть в графической форме через замечательный сервис DNSviz.
На смену ему в 2017 году был сгенерирован новый ключ с id 20326, который и будет использоваться с октября 2018 для подписи корневой зоны.
Цепочка доверия DNSSEC строится, в отличие от Certificate Authority для обычных TLS-сертификатов, как бы, снизу вверх — от подписанного вами домена вплоть до корневой зоны ".", когда домен более низкого уровня передаёт свои публичные ключи регистратору через механизм подписи ключом вышележащего домена. При этом, очевидно, что если для доменов первого и более низкого уровня возможно выстроить цепочку доверия и, благодаря этому, получить публичные ключи из самого DNS, то для корневой зоны это невозможно. В этой связи каждый DNS-сервер, поддерживающий DNSSEC, хранит локальную копию ключа KSK корневой зоны.
Таким образом, для продолжения функционирования DNSSEC после замены KSK корневой зоны необходимо чтобы новый ключ присутствовал на каждом ресольвере. В частности, для кэширующего DNS-сервера Unbound ключи хранятся в файле root.key в каталоге конфигурационных файлов.
root@beta:~ # ps auxww | grep unbound
unbound 24104 0,0 0,7 42016 28184 - Ss вт16 0:40,59 /usr/local/sbin/unbound -c /usr/local/etc/unbound/unbound.conf
root 77503 0,0 0,1 6696 2576 0 S+ 20:40 0:00,00 grep unbound
root@beta:~ # cat /usr/local/etc/unbound/
root.key unbound_control.key unbound_control.pem unbound_server.key unbound_server.pem unbound.conf unbound.conf.sample unbound.pid
root@beta:~ # cat /usr/local/etc/unbound/root.key
; autotrust trust anchor file
;;id: . 1
;;last_queried: 1536236721 ;;Thu Sep 6 14:25:21 2018
;;last_success: 1536236721 ;;Thu Sep 6 14:25:21 2018
;;next_probe_time: 1536275892 ;;Fri Sep 7 01:18:12 2018
;;query_failed: 0
;;query_interval: 43200
;;retry_time: 8640
. 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size = 2048b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1504986280 ;;Sat Sep 9 21:44:40 2017
. 172800 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU= ;{id = 20326 (ksk), size = 2048b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1504986280 ;;Sat Sep 9 21:44:40 2017
Как видно, в данном случае оба ключа в наличии и, следовательно, данная система полностью готова к грядущему событию.
В противном случае, для обновления файла ключей корневой зоны для Unbound можно воспользоваться набором следующим команд.
root@beta:~ # cd /usr/local/etc/unbound/
root@beta:/usr/local/etc/unbound # rm root.key
root@beta:/usr/local/etc/unbound # unbound-anchor
root@beta:/usr/local/etc/unbound # ll root.key
-rw-r--r-- 1 root wheel 83 6 сент. 21:08 root.key
root@beta:/usr/local/etc/unbound # service unbound restart
Stopping unbound.
Waiting for PIDS: 24104.
Obtaining a trust anchor:.
Starting unbound.
Для других DNS-серверов рекомендуется воспользоваться процедурами, опубликованными ICANN в документе "Updating of DNS Validating Resolvers with the Latest Trust Anchor".
Если вы являетесь оператором DNS-сервера то настоятельно рекомендую озаботиться вопросом актуальности информации о ключах корневой зоны DNS уже сейчас во избежание возможных проблем с DNSSEC.