DNSSEC이란? 원리와 신뢰 체인 완전정복

DNS 응답에 서명을 붙여 위조 여부를 검증하는 DNSSEC의 동작 원리를 순서대로 살펴보세요.

⚠️

1. DNS가 원래 안고 있던 문제

일반 DNS 응답에는 전자서명이 없습니다. 그래서 통신 중간에서 가짜 응답을 흘려보내는 캐시 포이즈닝이나 DNS 스푸핑 공격을 받으면, 내 기기는 위조된 응답을 진짜처럼 믿고 가짜 서버로 접속할 수 있습니다.

🔏

2. DNSSEC이 하는 일

DNSSEC(DNS Security Extensions)은 각 DNS 응답에 전자서명을 붙여, 그 응답이 실제 도메인 소유자가 만든 것이고 중간에서 변조되지 않았음을 검증할 수 있게 해줍니다. 다만 내용을 숨기는 암호화(기밀성)가 아니라 위조 여부를 확인하는 무결성·출처 인증 기술이라는 점이 핵심입니다.

🗝️

3. 핵심 레코드: DNSKEY·RRSIG·DS

DNSKEY는 존(zone)의 공개키를 담고, RRSIG는 각 레코드 집합에 대한 전자서명을 담습니다. DS(Delegation Signer)는 상위 존에 등록되어 하위 존의 키가 진짜임을 보증하는 역할을 합니다.

🚫

4. 존재하지 않는 도메인도 서명으로 증명

"이런 레코드는 존재하지 않는다"는 응답도 위조될 수 있기 때문에, NSEC·NSEC3 레코드가 서명된 형태로 "없음"을 증명합니다. 이 덕분에 존재하지 않는 서브도메인을 공격자가 함부로 지어낼 수 없습니다.

🔗

5. 신뢰 체인: 루트부터 도메인까지

루트 존이 최상위 도메인(TLD)의 키를 서명하고, TLD가 다시 각 도메인의 키를 서명하는 방식으로 신뢰가 이어집니다. 이렇게 루트까지 이어지는 서명 체인을 검증하면 중간의 어느 한 단계도 위조되지 않았음을 확인할 수 있습니다.

🧩

6. DNSSEC이 막지 못하는 것

DNSSEC은 통신 구간을 암호화하지 않으므로, 조회 내용 자체를 숨기고 싶다면 DoH(DNS over HTTPS)나 DoT(DNS over TLS)가 필요합니다. 또한 아직 모든 도메인이 DNSSEC 서명을 적용한 것은 아니어서, 서명되지 않은 존에서는 이 보호를 받을 수 없습니다.

🔍

7. 내 도메인의 DNSSEC 확인하는 방법

리눅스·맥에서는 dig 명령어에 +dnssec 옵션을 붙여 RRSIG 레코드가 응답에 포함되는지 확인할 수 있고, 여러 온라인 DNSSEC 분석 도구에 도메인을 입력해 서명 체인이 끊김 없이 검증되는지 시각적으로 확인할 수도 있습니다.

DNS 캐시 포이즈닝이 궁금하다면

DNSSEC이 막으려는 위협을 더 구체적으로 알고 싶다면중간자 공격(MITM)이란? 원리와 방어 방법에서 DNS 스푸핑이 어떻게 이뤄지는지 함께 확인해보세요.

암호화된 DNS 조회가 궁금하다면

통신 구간 자체를 암호화하는 방식이 궁금하다면DNS 오버 HTTPS(DoH)와 DNS 오버 TLS(DoT) 완전정리도 함께 참고해보세요. DNSSEC과는 역할이 다르지만 함께 쓰이면 더 안전합니다.

자주 묻는 질문

DNSSEC을 쓰면 DNS 조회 내용도 암호화되나요?

아니요. DNSSEC은 응답이 위조되지 않았음을 증명하는 무결성·출처 인증 기술이지, 조회 내용을 숨기는 암호화 기술이 아닙니다. 조회 내용 자체를 암호화하려면 DoH나 DoT가 필요합니다.

모든 도메인이 DNSSEC으로 서명되어 있나요?

아니요. DNSSEC은 도메인 소유자와 등록기관이 별도로 설정해야 적용되는 선택적인 기능이라, 서명되지 않은 도메인도 여전히 많습니다. 서명되지 않은 도메인은 이 보호를 받을 수 없습니다.