0Pricing
Cryptology Academy · 강의

DNSSEC: DNS 응답 인증

DNSSEC이 디지털 서명을 사용해 스푸핑과 캐시 오염 공격으로부터 DNS를 보호하는 방식을 학습합니다.

DNSSEC: DNS 응답 인증은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

DNS 캐시 오염: Kaminsky 공격

2008년에 연구자 Dan Kaminsky는 DNS 리졸버를 대상으로 하는 치명적인 공격을 공개했습니다. 이 공격은 DNS 응답에 포함된 작은 16비트 트랜잭션 ID 필드를 악용했습니다. 공격자는 무작위 트랜잭션 ID가 포함된 위조 응답을 리졸버에 대량으로 보내 실제 응답이 도착하기 전에 정상 트랜잭션 ID와 통계적으로 일치시키는 데 성공할 수 있었습니다. 오염된 캐시는 캐시가 만료될 때까지 몇 주 동안 해당 리졸버의 모든 사용자를 공격자가 제어하는 서버로 리디렉션합니다.

DNS에 DNSSEC가 추가하는 기능

DNSSEC(DNS 보안 확장)는 DNS 응답에 암호학적 인증을 추가합니다. DNSSEC로 서명된 영역의 모든 DNS 레코드 집합에는 디지털 서명이 함께 포함됩니다. 검증 리졸버는 레코드를 받아들이기 전에 이러한 서명을 확인합니다. 위조되거나 수정된 응답은 유효하지 않은 서명을 가지므로 거부됩니다. DNSSEC는 캐시 오염과 응답 위조를 방지하지만 DNS 질의를 암호화하지는 않습니다.

영역 서명 키와 키 서명 키

DNSSEC는 영역마다 두 개의 키로 구성된 계층 구조를 사용합니다. 영역 서명 키(ZSK)는 개별 DNS 레코드 집합에 일상적으로 서명하는 데 사용됩니다. 키 서명 키(KSK)는 ZSK와 KSK의 공개 키가 모두 들어 있는 DNSKEY 레코드 집합에만 서명합니다. KSK 해시는 부모 영역에 등록해야 하고 교체 작업이 운영상 복잡하기 때문에, ZSK는 자주(매월) 교체할 수 있는 반면 KSK는 더 드물게(매년) 변경합니다.

RRSIG: 리소스 레코드 서명

서명된 모든 DNS 레코드 집합에는 해당 레코드 집합에 대한 암호학적 서명을 담은 RRSIG 레코드가 있습니다. 리졸버가 DNS 레코드를 요청하면 응답에는 레코드와 RRSIG가 모두 포함됩니다. 리졸버는 영역의 공개 키를 사용하여 RRSIG를 검증합니다. 서명에는 레코드 내용, 유형, 클래스, 만료 시간이 포함되므로 레코드가 수정되거나 오래된 유효한 서명이 재사용되는 것을 모두 방지합니다.

DS 레코드: 부모 영역과 자식 영역 연결

DNSSEC의 신뢰 체인은 위임 서명자(DS) 레코드를 통해 구축됩니다. 영역이 자식 영역에 위임되면 부모 영역은 자식 영역 KSK의 해시가 포함된 DS 레코드를 게시합니다. 부모 영역을 신뢰하는 리졸버는 자식 영역의 KSK 해시가 DS 레코드와 일치하는지 확인하여 자식 영역의 서명을 신뢰할 수 있습니다. 이 체인은 DNS 루트 영역에서 최상위 도메인을 거쳐 개별 도메인 영역까지 이어집니다.

DNSKEY 레코드: 영역의 공개 키 게시

DNSSEC로 서명된 모든 영역은 DNSKEY 레코드에 서명용 공개 키를 게시합니다. 일반적으로 DNSKEY 레코드는 두 개이며, 하나는 ZSK용이고 다른 하나는 KSK용입니다. KSK의 공개 키 해시는 부모 영역에 DS 레코드로 등록되어 영역의 신뢰를 부모 영역에 연결합니다. 루트 영역의 KSK 해시는 검증 리졸버에 최종 신뢰 앵커인 루트 영역 신뢰 앵커로 하드코딩되어 있습니다.

루트에서 말단까지 이어지는 신뢰 체인

DNSSEC 검증은 KSK 신뢰 앵커가 리졸버에 하드코딩되어 있는 루트 영역에서 시작합니다. 루트 영역의 DNSKEY를 사용하여 해당 영역의 RRSIG를 검증하면 .com과 같은 최상위 도메인의 DS 레코드가 인증됩니다. .com 영역의 DNSKEY는 개별 도메인에 대한 DS 레코드의 RRSIG를 검증합니다. 이러한 암호학적 검증 체인은 루트에서 조회한 도메인까지 이어지며 모든 연결이 인증되도록 합니다.

리졸버에서의 DNSSEC 검증

DNSSEC를 검증하는 리졸버가 응답을 받으면 전체 신뢰 체인 검증을 수행합니다. DNSKEY 레코드를 가져오고, RRSIG 서명을 검증하며, DS 레코드를 루트 앵커까지 추적하고, 서명 만료 시간을 확인합니다. 검증에 실패하면 리졸버는 위조되었을 가능성이 있는 레코드 대신 SERVFAIL 오류를 반환합니다. Cloudflare의 1.1.1.1과 Google의 8.8.8.8을 비롯한 대부분의 주요 공용 리졸버는 DNSSEC 검증을 수행합니다.

DNSSEC 도입의 어려움

DNSSEC는 보안상 이점이 있음에도 도입이 느리게 진행되었습니다. 키 교체에는 영역 운영자와 부모 레지스트리 간의 조정이 필요합니다. KSK를 교체하는 동안 실수가 발생하면 영역 전체에 접근할 수 없게 될 수 있습니다. 2019년 ICANN 루트 KSK 교체에는 수년간의 준비가 필요했습니다. 서명으로 인해 영역 크기도 크게 증가합니다. 운영자는 자동화된 키 교체와 모니터링을 구현해야 합니다. 이러한 운영상의 복잡성 때문에 많은 소규모 도메인 운영자는 DNSSEC를 사용하지 않고 있습니다.

DNSSEC는 DNS 트래픽을 암호화하지 않습니다

DNSSEC가 DNS 질의의 개인정보 보호를 제공한다는 것은 흔한 오해입니다. DNSSEC는 개인정보를 보호하지 않습니다. DNSSEC는 응답만 인증할 뿐이며, 질의와 응답은 여전히 53번 포트의 평문 UDP 패킷으로 전송됩니다. 네트워크를 모니터링하는 사람은 누구나 어떤 도메인이 질의되었는지 확인할 수 있습니다. DNS-over-TLS(DoT)와 DNS-over-HTTPS(DoH)는 DNS 트래픽을 암호화하여 질의의 개인정보를 보호합니다. DNSSEC와 DoH/DoT는 서로 보완적입니다. 하나는 진위성을 제공하고 다른 하나는 기밀성을 제공합니다.

현실에서의 DNSSEC

2024년 기준으로 DNS 루트 영역과 주요 최상위 도메인의 약 90퍼센트가 DNSSEC로 서명되어 있습니다. 그러나 개별 도메인 이름 중 서명된 것은 약 20~30퍼센트에 불과합니다. 브라우저와 애플리케이션의 DNSSEC 검증 도입 수준은 고르지 않습니다. DNSSEC의 보안상 이점은 DANE(명명된 엔터티의 DNS 기반 인증)와 함께 사용할 때 가장 큽니다. DANE는 DNSSEC를 사용하여 TLS 인증서 지문을 게시하므로 클라이언트가 인증 기관에만 의존하지 않고 인증서를 검증할 수 있습니다.

DNSSEC 신뢰 체인

DNSSEC를 검증하는 리졸버는 아무런 사전 정보가 없는 상태에서 루트부터 시작하여 도메인의 DNS 레코드에 대한 신뢰를 어떻게 설정합니까?

DNSSEC: 핵심 정리

DNSSEC는 DNS 응답에 암호학적 서명을 추가하여 캐시 오염과 응답 위조를 방지합니다. ZSK는 레코드 집합에 서명하고 KSK는 DNSKEY 레코드에 서명하며, DS 레코드는 부모 영역과 자식 영역 사이의 신뢰를 연결합니다. 검증은 미리 내장된 루트 영역 신뢰 앵커에서 시작합니다. DNSSEC는 DNS 트래픽을 암호화하지 않습니다. DoH와 DoT는 개인정보 보호를 제공하고 DNSSEC는 진위성을 제공합니다. 키 교체를 비롯한 운영상의 복잡성으로 인해 광범위한 도입이 늦어졌습니다.

자주 묻는 질문

“DNSSEC: DNS 응답 인증” 강의는 무료인가요?

네 — “DNSSEC: DNS 응답 인증” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“DNSSEC: DNS 응답 인증”에서 뭘 배우나요?

DNSSEC이 디지털 서명을 사용해 스푸핑과 캐시 오염 공격으로부터 DNS를 보호하는 방식을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“DNSSEC: DNS 응답 인증” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 안전한 프로토콜을 만드는 요소
  2. SSH: 원격 액세스 보호
  3. SFTP와 SCP: 안전한 파일 전송
  4. DNSSEC: DNS 응답 인증
← Cryptology Academy(으)로 돌아가기