518. DNSSEC (DNS Security Extensions)

핵심 인사이트: 인터넷의 주소록인 DNS는 원래 보안 기능 없이 태어났다. 누군가 중간에서 "네이버 주소는 여기야"라고 가짜 주소를 던지는 캐시 포이즈닝을 막기 위해, DNS 응답에 디지털 서명을 달아 '진짜'임을 증명하는 보안 확장팩이다.

Ⅰ. DNSSEC (DNS Security Extensions)의 개념

DNSSEC은 기존 DNS 프로토콜에 데이터 무결성(Data Integrity)과 데이터 출처 인증(Data Origin Authentication) 기능을 추가하기 위한 국제 표준(IETF) 확장 보안 기술입니다. 데이터 기밀성(암호화)을 제공하지는 않지만, 수신한 DNS 레코드가 위변조되지 않았음을 공개키 암호화 방식(디지털 서명)을 통해 증명합니다.

Ⅱ. DNS 캐시 포이즈닝 (Cache Poisoning)과 DNSSEC의 필요성

DNS는 기본적으로 UDP를 사용하며 인증 메커니즘이 취약합니다. 해커가 로컬 DNS 서버(캐시 서버)에 위조된 IP 주소(예: 피싱 사이트 IP)를 대량으로 보내어 정상적인 응답인 것처럼 속이면, 로컬 서버는 이 가짜 주소를 캐시에 저장하게 됩니다. 이후 일반 사용자들이 해당 도메인을 요청하면 모두 피싱 사이트로 연결되는 치명적인 문제가 발생합니다. 이를 막기 위한 근본적인 해결책이 DNSSEC입니다.

Ⅲ. DNSSEC의 핵심 동작 원리 (디지털 서명)

DNSSEC은 공개키 암호화(Public Key Cryptography)를 이용해 DNS 레코드에 서명(Signature)을 첨부합니다.

[ DNSSEC 인증 과정 ]

┌─────────────┐                      ┌────────────────────┐
│ Auth Server │                      │ Local DNS Resolver │
│             │   1. DNS 질의        │ (Client)           │
│ [ A Record ]│ ◀─────────────────── │                    │
│ [ RRSIG   ] │                      │                    │
│ [ DNSKEY  ] │   2. 서명된 응답     │                    │
│             │ ───────────────────▶ │ 3. 공개키로 서명 검증│
└─────────────┘                      └────────────────────┘
  1. 존(Zone) 서명: 네임서버 관리자는 자신의 도메인 존 데이터(A, MX 등)를 개인키(Private Key)로 서명하여 RRSIG 레코드를 생성합니다.
  2. 공개키 배포: 서명을 검증할 수 있는 공개키(Public Key)를 DNSKEY 레코드로 함께 배포합니다.
  3. 무결성 검증: 클라이언트(또는 리졸버)는 응답받은 RRSIGDNSKEY로 복호화하여 원본 레코드와 비교함으로써 위변조 여부를 확인합니다.

Ⅳ. DNSSEC의 주요 신규 레코드 타입

레코드설명
RRSIG(Resource Record Signature) 기존 DNS 레코드(A, MX 등)에 대한 디지털 서명 값
DNSKEY서명을 검증하기 위해 리졸버에게 제공하는 도메인의 공개키
DS(Delegation Signer) 부모 존이 자식 존의 DNSKEY를 인증해주기 위한 해시 레코드 (신뢰의 사슬, Chain of Trust 형성)
NSEC / NSEC3(Next Secure) 요청한 도메인이 실제로 존재하지 않음(NXDOMAIN)을 인증하는 레코드

📢 섹션 요약 비유: 우체국에서 온 편지(DNS 응답)가 진짜인지 알 수 없어서 가짜 청구서(캐시 포이즈닝)에 속을 뻔했는데, 이제부터는 모든 편지 봉투에 동사무소에서 발급받은 '인감증명서와 도장(디지털 서명)'을 찍어서 보내기로 한 안전한 우편 시스템입니다.