Cryptology Academy · Lekcja

DNSSEC: uwierzytelnianie odpowiedzi DNS

Poznają Państwo, jak DNSSEC wykorzystuje podpisy cyfrowe do ochrony DNS przed spoofingiem i zatruwaniem pamięci podręcznej.

Lekcja 4 z 413 kroki

DNSSEC: uwierzytelnianie odpowiedzi DNS to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Zatruwanie pamięci podręcznej DNS: atak Kaminsky’ego

W 2008 roku badacz Dan Kaminsky ujawnił krytyczny atak na resolwery DNS. Atak wykorzystywał niewielkie, 16-bitowe pole identyfikatora transakcji w odpowiedziach DNS. Zalewając resolver sfałszowanymi odpowiedziami zawierającymi losowe identyfikatory transakcji, atakujący mógł statystycznie dopasować prawidłowy identyfikator transakcji, zanim nadeszła prawdziwa odpowiedź. Zatruta pamięć podręczna przekierowuje wszystkich użytkowników tego resolvera do serwerów kontrolowanych przez atakującego przez wiele tygodni, aż pamięć podręczna wygaśnie.

Co DNSSEC dodaje do DNS

DNSSEC (DNS Security Extensions) dodaje kryptograficzne uwierzytelnianie do odpowiedzi DNS. Każdemu zestawowi rekordów DNS w strefie podpisanej za pomocą DNSSEC towarzyszy podpis cyfrowy. Resolwery przeprowadzające walidację sprawdzają te podpisy przed zaakceptowaniem rekordów. Sfałszowana lub zmodyfikowana odpowiedź będzie miała nieprawidłowy podpis i zostanie odrzucona. DNSSEC chroni przed zatruwaniem pamięci podręcznej i fałszowaniem odpowiedzi, ale nie szyfruje zapytań DNS.

Zone Signing Key i Key Signing Key

DNSSEC korzysta z hierarchii dwóch kluczy dla każdej strefy. Zone Signing Key (ZSK) służy do codziennego podpisywania poszczególnych zestawów rekordów DNS. Key Signing Key (KSK) podpisuje wyłącznie zestaw rekordów DNSKEY, który zawiera klucze publiczne zarówno ZSK, jak i KSK. ZSK można często zmieniać, na przykład co miesiąc, natomiast KSK zmienia się rzadziej, na przykład raz w roku, ponieważ skrót KSK musi zostać zarejestrowany w strefie nadrzędnej, a zmiana tego klucza jest złożona operacyjnie.

RRSIG: podpisy rekordów zasobów

Każdy podpisany zestaw rekordów DNS (nazywany RRset) ma odpowiadający mu rekord RRSIG zawierający podpis kryptograficzny tego zestawu. Gdy resolver żąda rekordu DNS, odpowiedź zawiera zarówno rekord, jak i jego RRSIG. Resolver weryfikuje RRSIG za pomocą klucza publicznego strefy. Podpis obejmuje zawartość rekordu, jego typ, klasę i czas wygaśnięcia, zapobiegając zarówno modyfikowaniu rekordów, jak i ponownemu użyciu starych, ważnych podpisów.

Rekordy DS: łączenie stref nadrzędnych i podrzędnych

Łańcuch zaufania w DNSSEC jest tworzony za pomocą rekordów Delegation Signer (DS). Gdy strefa deleguje obsługę do strefy podrzędnej, strefa nadrzędna publikuje rekord DS zawierający skrót KSK strefy podrzędnej. Resolver, który ufa strefie nadrzędnej, może sprawdzić, czy skrót KSK strefy podrzędnej odpowiada rekordowi DS, ustanawiając zaufanie do podpisów tej strefy. Łańcuch ten rozciąga się od głównej strefy DNS przez domeny najwyższego poziomu aż do stref poszczególnych domen.

Rekord DNSKEY: publikowanie klucza publicznego strefy

Każda strefa podpisana za pomocą DNSSEC publikuje swoje publiczne klucze podpisywania w rekordach DNSKEY. Zwykle występują dwa rekordy DNSKEY: jeden dla ZSK i jeden dla KSK. Skrót klucza publicznego KSK jest rejestrowany jako rekord DS w strefie nadrzędnej, zakotwiczając zaufanie do strefy w jej strefie nadrzędnej. Skrót KSK głównej strefy DNS jest zapisany na stałe w resolverach przeprowadzających walidację jako ostateczny punkt zaufania, nazywany Root Zone Trust Anchor.

Łańcuch zaufania od strefy głównej do końcowej

Walidacja DNSSEC rozpoczyna się w głównej strefie, której punkt zaufania KSK jest zapisany na stałe w resolverach. Rekord DNSKEY głównej strefy służy do weryfikacji jej RRSIG, który uwierzytelnia rekordy DS dla domen najwyższego poziomu, takich jak .com. Rekord DNSKEY strefy .com weryfikuje jej RRSIG dotyczący rekordów DS poszczególnych domen. Ten łańcuch weryfikacji kryptograficznej rozciąga się od głównej strefy do żądanej domeny, zapewniając uwierzytelnienie każdego ogniwa.

Walidacja DNSSEC w resolverach

Gdy resolver przeprowadzający walidację DNSSEC otrzymuje odpowiedź, wykonuje pełną weryfikację łańcucha zaufania. Pobiera rekordy DNSKEY, weryfikuje podpisy RRSIG, śledzi rekordy DS aż do głównego punktu zaufania i sprawdza czasy wygaśnięcia podpisów. Jeśli walidacja się nie powiedzie, resolver zwraca błąd SERVFAIL zamiast potencjalnie sfałszowanych rekordów. Większość głównych publicznych resolverów, w tym 1.1.1.1 firmy Cloudflare i 8.8.8.8 firmy Google, przeprowadza walidację DNSSEC.

Wyzwania związane z wdrażaniem DNSSEC

Wdrażanie DNSSEC przebiega powoli mimo korzyści związanych z bezpieczeństwem. Zmiana kluczy wymaga koordynacji między operatorami stref a rejestrami stref nadrzędnych. Błąd podczas zmiany KSK może sprawić, że cała strefa stanie się niedostępna. Zmiana głównego klucza KSK ICANN w 2019 roku wymagała wieloletnich przygotowań. Rozmiar strefy znacznie wzrasta z powodu podpisów. Operatorzy muszą wdrożyć automatyczną zmianę kluczy i monitorowanie. Te złożoności operacyjne skłoniły wielu mniejszych operatorów domen do unikania DNSSEC.

DNSSEC nie szyfruje ruchu DNS

Częstym błędnym przekonaniem jest to, że DNSSEC zapewnia prywatność zapytań DNS. Tak nie jest. DNSSEC uwierzytelnia wyłącznie odpowiedzi; zapytania i odpowiedzi nadal są przesyłane w postaci jawnej jako pakiety UDP przez port 53. Każdy, kto monitoruje sieć, może nadal zobaczyć każdą odpytywaną nazwę domeny. DNS-over-TLS (DoT) i DNS-over-HTTPS (DoH) zapewniają prywatność zapytań, szyfrując ruch DNS. DNSSEC i DoH/DoT wzajemnie się uzupełniają: pierwsze zapewnia autentyczność, a drugie poufność.

DNSSEC w praktyce

W 2024 roku około 90 procent głównej strefy DNS i głównych domen najwyższego poziomu było podpisanych za pomocą DNSSEC. Jednak podpisanych jest tylko około 20–30 procent poszczególnych nazw domen. Obsługa walidacji DNSSEC przez przeglądarki i aplikacje jest nierównomierna. Korzyści z DNSSEC są największe w połączeniu z DANE (DNS-Based Authentication of Named Entities), które wykorzystuje DNSSEC do publikowania odcisków certyfikatów TLS i pozwala klientom weryfikować certyfikaty bez polegania wyłącznie na urzędach certyfikacji (CA).

Łańcuch zaufania DNSSEC

Jak resolver przeprowadzający walidację DNSSEC ustanawia zaufanie do rekordów DNS domeny, zaczynając od zera?

DNSSEC: najważniejsze informacje

DNSSEC dodaje do odpowiedzi DNS podpisy kryptograficzne, aby zapobiegać zatruwaniu pamięci podręcznej i fałszowaniu odpowiedzi. ZSK podpisują zestawy rekordów, KSK podpisują rekordy DNSKEY, a rekordy DS łączą zaufanie między strefami nadrzędnymi i podrzędnymi. Walidacja rozpoczyna się od zapisanego na stałe Root Zone Trust Anchor. DNSSEC nie szyfruje ruchu DNS; DoH i DoT zapewniają prywatność, a DNSSEC autentyczność. Złożoność operacyjna, w tym zmiana kluczy, spowolniła powszechne wdrażanie tego rozwiązania.

Bezpłatny start

Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
67
Lekcje
261

Często zadawane pytania

Czy lekcja „DNSSEC: uwierzytelnianie odpowiedzi DNS” jest bezpłatna?

Tak — pełny tekst „DNSSEC: uwierzytelnianie odpowiedzi DNS” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „DNSSEC: uwierzytelnianie odpowiedzi DNS”?

Poznają Państwo, jak DNSSEC wykorzystuje podpisy cyfrowe do ochrony DNS przed spoofingiem i zatruwaniem pamięci podręcznej. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „DNSSEC: uwierzytelnianie odpowiedzi DNS”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Co sprawia, że protokół jest bezpieczny
  2. SSH: zabezpieczanie zdalnego dostępu
  3. SFTP i SCP: bezpieczny transfer plików
  4. DNSSEC: uwierzytelnianie odpowiedzi DNS
← Powrót do Cryptology Academy