Wahr/Falsch
문제
독일어 원문
NSEC-Records können zum Auflisten der vorhandenen Domänen verwendet werden.
한국어 해석
NSEC-Records는 존재하는 Domains를 enumerate/listing하는 데 사용될 수 있다. Wahr/Falsch?
Wahr/Falsch 즉시 채점
선택 후 즉시 개념 함정을 확인하세요.
단계별 힌트
막혔을 때만 한 단계씩 여세요. 정답을 바로 읽는 것보다 기억을 꺼내는 시간이 중요합니다.
- 첫 힌트: 존재하지 않는 이름을 증명하려면 DNSSEC는 어떤 이웃 이름 정보를 보여 주는가?
- 개념 문항이다.
- 판단 순서: NSEC purpose -> next-name exposure -> listing implication.
- 함정: DNSSEC가 있으니 enumeration도 무조건 막는다고 생각하기
- 함정: NSEC와 NSEC3를 구분하지 않기
- 후속 점검: NSEC3는 어떤 문제를 줄이려고 도입되었는가?
채점 기준으로 내 답안 점검하기
- Wahr로 판단한다.
- NSEC의 denial-of-existence 역할을 설명한다.
- 다음 이름 노출로 zone walking이 가능함을 말한다.
답안 슬롯 자가 점검 — 실제로 말하거나 쓴 항목만 체크하세요.
0/3 slots
정답과 핵심 해설 확인하기
Wahr
NSEC는 authenticated denial에 쓰이지만 zone walking/listing 부작용이 있다.
개념부터 다시 보는 상세 풀이
BEGINNER LESSON
4-(g) NSEC record로 domain을 열거할 수 있을까?
ZERO-BASE START
정말 아무것도 모른다고 가정하고 시작합니다
전문 용어를 알고 있다고 가정하지 않습니다. 먼저 일상적인 장면을 보고, 그 장면의 사람과 행동에 실제 보안 용어를 하나씩 붙인 뒤, 시스템에서 일어나는 순서를 따라갑니다.
기초 개념 01
DNS와 resolver, cache를 처음부터 이해하기
1타 강사식 시작: 이름은 잠시 가리고 장면부터 봅시다
DNS는 이름으로 전화번호를 찾는 분산 전화번호부다. Resolver는 여러 전화번호부 기관에 대신 문의하는 안내원이고 cache는 최근 찾아본 번호를 메모해 두는 수첩이다.
지금은 이 비유를 완벽히 외울 필요가 없습니다. 누가 무엇을 가지고 있고, 무엇을 하려 하며, 어느 지점에서 문제가 생기는지만 찾으면 됩니다.
이제 실제 용어를 하나씩 붙여 봅시다
사람은 tu-darmstadt.de 같은 domain name을 사용하지만 packet은 IP address로 전달된다. DNS는 이름을 IP와 다른 정보로 바꾸는 분산 데이터베이스다. 사용자의 질문을 대신 처리하는 프로그램이 recursive resolver이고, authoritative nameserver는 특정 zone의 공식 record를 가진다. Resolver는 받은 답을 TTL 동안 cache해 같은 질문을 빠르게 답한다.
TERMS FROM ZERO
전문 용어를 한 단어씩 풀기
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
DNS
domain 이름을 IP 주소 등 resource record로 찾아주는 분산 이름 시스템입니다.
Recursive resolver
client 대신 여러 DNS server에 질의해 최종 답을 찾아주는 server입니다.
Cache
이전에 받은 DNS 답을 일정 시간 저장해 재사용하는 공간입니다.
TTL
DNS record를 cache에서 얼마나 오래 재사용할 수 있는지 나타내는 시간값입니다.
프로그램이나 프로토콜 안에서는 다음 순서로 움직입니다.
- 사용자 stub resolver가 recursive resolver에 이름을 묻는다.
- Cache에 유효한 답이 있으면 즉시 사용한다.
- 없으면 root, TLD, authoritative nameserver 방향으로 위임을 따라간다.
- 받은 record를 TTL 동안 저장한다.
왜 여기서 많이 틀릴까요?
Resolver와 authoritative nameserver를 같은 서버 역할로 쓰지 말고, cache에 오래된 거짓 답이 들어가는 cache poisoning과 전송 암호화를 구분한다.
조건을 생략하거나 서로 다른 기능을 같은 것으로 취급했는지 확인하세요. 정답 문장을 외우는 것보다 틀린 이유를 말할 수 있어야 변형 문제를 풀 수 있습니다.
기초 개념 02
DoH와 DNSSEC는 서로 다른 문제를 해결한다
1타 강사식 시작: 이름은 잠시 가리고 장면부터 봅시다
DoH는 전화번호부 안내원에게 가는 통화를 도청하기 어렵게 암호화한 전화선이고, DNSSEC는 전화번호부 항목 자체에 발행 기관의 위조하기 어려운 도장을 찍는 것이다.
지금은 이 비유를 완벽히 외울 필요가 없습니다. 누가 무엇을 가지고 있고, 무엇을 하려 하며, 어느 지점에서 문제가 생기는지만 찾으면 됩니다.
이제 실제 용어를 하나씩 붙여 봅시다
DNS over HTTPS(DoH)는 사용자와 선택한 resolver 사이의 DNS message를 HTTPS 안에 넣어 전송한다. 주변 Wi-Fi나 단순한 중간 관찰자가 질문을 쉽게 읽거나 바꾸기 어렵게 하지만 resolver 자체는 질문을 본다. DNSSEC는 DNS record에 digital signature를 붙여 resolver가 authoritative data의 출처와 무결성을 검증하게 한다.
TERMS FROM ZERO
전문 용어를 한 단어씩 풀기
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
DoH
DNS over HTTPS로 client와 resolver 사이 DNS message를 HTTPS 안에 암호화합니다.
DNSSEC
DNS record에 대한 signature chain으로 data origin과 integrity를 검증하는 확장입니다.
Authenticity
받은 정보가 주장된 권한 있는 출처에서 왔는지를 확인하는 성질입니다.
Transport encryption
통신 구간에서 제3자가 내용을 읽거나 쉽게 바꾸지 못하게 하는 보호입니다.
프로그램이나 프로토콜 안에서는 다음 순서로 움직입니다.
- 공격자가 사용자와 resolver 사이에 있는지 resolver의 cache를 공격하는지 구분한다.
- DoH는 transport privacy를, DNSSEC는 signed data validation을 제공한다.
- DoH만으로 악성 resolver나 poisoned cache의 거짓 답을 자동 검증하지는 못한다.
왜 여기서 많이 틀릴까요?
HTTPS를 사용한다는 이유만으로 DNS answer의 진위성이 자동 보장된다고 쓰면 안 된다.
조건을 생략하거나 서로 다른 기능을 같은 것으로 취급했는지 확인하세요. 정답 문장을 외우는 것보다 틀린 이유를 말할 수 있어야 변형 문제를 풀 수 있습니다.
기초 개념 03
DNSSEC의 ‘없음’ 증명과 NSEC zone walking
1타 강사식 시작: 이름은 잠시 가리고 장면부터 봅시다
명부에 ‘김 다음은 박이며 그 사이 이름은 없음’이라고 서명해 주면 거짓 부재를 막을 수 있지만, 그 문장을 계속 모으면 전체 명부 순서를 재구성할 수 있다.
지금은 이 비유를 완벽히 외울 필요가 없습니다. 누가 무엇을 가지고 있고, 무엇을 하려 하며, 어느 지점에서 문제가 생기는지만 찾으면 됩니다.
이제 실제 용어를 하나씩 붙여 봅시다
DNSSEC는 존재하는 record뿐 아니라 ‘이 이름은 존재하지 않는다’는 답도 인증해야 한다. NSEC record는 정렬된 다음 domain name과 현재 이름에 존재하는 record type을 알려 주어 두 이름 사이에는 다른 이름이 없음을 증명한다. 이 next-name 연결을 반복해서 따라가면 zone에 존재하는 이름을 열거하는 zone walking이 가능할 수 있다.
TERMS FROM ZERO
전문 용어를 한 단어씩 풀기
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
NSEC
DNSSEC에서 어떤 이름이 존재하지 않음을 서명된 형태로 증명하는 record입니다.
Authenticated denial
요청한 DNS 이름이나 type이 없다는 사실을 검증 가능하게 답하는 기능입니다.
Zone walking
NSEC의 다음 이름 정보를 반복 따라가며 zone의 이름 목록을 추론하는 작업입니다.
NSEC3
이름을 hash한 형태로 부재 증명을 제공해 단순 zone walking을 어렵게 하는 대안입니다.
프로그램이나 프로토콜 안에서는 다음 순서로 움직입니다.
- 존재하지 않는 이름을 질의해 signed denial response를 받는다.
- NSEC의 next domain name을 읽는다.
- 다음 이름 주변을 다시 질의해 다음 NSEC를 얻는다.
- 처음으로 돌아올 때까지 반복해 공개 zone 이름을 수집한다.
왜 여기서 많이 틀릴까요?
Zone walking은 DNSSEC 서명을 깨는 공격이 아니라 인증된 부재 증명에 포함된 정보를 열거에 재사용하는 부작용이다.
조건을 생략하거나 서로 다른 기능을 같은 것으로 취급했는지 확인하세요. 정답 문장을 외우는 것보다 틀린 이유를 말할 수 있어야 변형 문제를 풀 수 있습니다.
핵심부터 말하면 정답은 Wahr(참). NSEC는 DNSSEC에서 어떤 이름이 존재하지 않음을 인증하기 위해 정렬된 zone의 다음 존재 이름과 record type 정보를 공개한다. 공격자는 이 연결을 반복 질의해 zone walking으로 이름 목록을 열거할 수 있다.
이 글에서 익힐 것
DNSSEC가 제공하는 authenticity/integrity를 이해한다.
NXDOMAIN 같은 부정 응답도 인증해야 하는 이유를 설명한다.
NSEC의 owner name·next domain name·type bitmap을 이해한다.
zone walking 절차를 단계별로 설명한다.
NSEC3가 완전한 비밀 보장이 아니라 열거 완화책임을 이해한다.
개념부터 차근차근
-
DNSSEC
DNS record에 디지털 서명과 신뢰 체인을 추가해 validating resolver가 데이터의 origin authenticity와 integrity를 확인하게 한다. DNSSEC는 DNS 내용을 암호화해 숨기는 기술이 아니다.
-
부정 응답의 문제
resolver가 nonexistent.example은 없다는 NXDOMAIN을 받았을 때 공격자가 진짜 record를 지우고 가짜 '없음' 응답을 만든 것인지 구분해야 한다. 존재하지 않는 모든 가능한 이름을 미리 서명할 수는 없으므로 범위를 증명하는 구조가 필요하다.
-
NSEC record
zone의 존재 이름을 canonical order로 정렬하고 각 이름에서 다음 존재 이름을 가리킨다. 또한 현재 이름에 어떤 RR type이 존재하는지 bitmap으로 표시한다. 이 signed interval을 이용해 질의 이름이 두 존재 이름 사이에 있어 실제로 없음을 증명한다.
시험 답안으로 정리하기
예시 도메인
alpha.example
mail.example
vpn.example
example apex
NSEC 레코드
alpha.example NSEC mail.example A RRSIG
mail.example NSEC vpn.example A MX RRSIG
vpn.example NSEC example A RRSIG
example NSEC alpha.example NS SOA RRSIG NSEC DNSKEY
각 NSEC가 다음 이름을 직접 알려 주므로 alpha에서 시작해 mail, vpn, apex, 다시 alpha로 순환하며 zone의 존재 이름을 모을 수 있다.
단계별로 따라가기
공격자가 존재하지 않는 임의 이름 또는 이미 아는 이름에 질의한다.
DNSSEC 부정 응답에 포함된 NSEC record에서 현재 범위와 next domain name을 읽는다.
공격자가 그 next name 또는 그 주변 이름을 다시 질의한다.
새 NSEC가 또 다음 존재 이름을 알려 준다.
체인이 zone apex로 돌아올 때까지 반복하면 공개적으로 질의 가능한 hostname 목록을 열거할 수 있다.
type bitmap으로 각 이름에 A, MX, NS 등 어떤 record 종류가 있는지도 일부 파악한다.
보안상 어떤 의미인가
숨겨진 admin, vpn, dev, test 같은 hostname이 드러나 공격 표면 정찰이 쉬워질 수 있다.
이름 공개 자체가 곧 시스템 침해는 아니다. DNS는 원래 공개 정보 시스템이며 실제 서비스 보안은 별도로 필요하다.
그러나 조직이 쉽게 추측되지 않는 내부적 이름을 공개 zone에 두었다면 정보 노출 가치가 있다.
NSEC zone walking은 DNSSEC 서명을 깨는 공격이 아니라 프로토콜이 의도적으로 제공한 authenticated denial 자료를 열거에 재사용하는 부작용이다.
Nsec3
NSEC3는 다음 plain domain name 대신 hash된 owner name들의 순서를 사용해 직접적인 이름 공개를 줄인다.
공격자는 hash chain을 볼 수 있지만 원래 이름을 즉시 읽지는 못한다.
그러나 hostname 후보가 짧고 예측 가능하면 dictionary/brute-force로 hash를 미리 계산해 맞출 수 있다.
따라서 NSEC3는 zone enumeration을 어렵게 만드는 완화책이지 zone 이름의 암호학적 기밀성을 완전히 보장하지 않는다.
문장을 하나씩 판별하기
문장은 können, 즉 열거에 사용할 수 있는지 묻는다.
NSEC가 다음 존재 이름을 공개하는 연결 구조이므로 zone walking이 가능하다.
따라서 Wahr다.
문제를 푸는 순서
1단계: NSEC의 목적을 authenticated denial이라고 쓴다.
2단계: record가 next existing domain name을 포함한다고 적는다.
3단계: next pointer를 반복 따라가면 zone names를 수집할 수 있다고 설명한다.
4단계: 이 부작용을 zone walking이라고 명명하고 Wahr로 판정한다.
시험장에서는 이렇게 쓰기
최소 답안
Wahr.
Safe german
Wahr. NSEC beweist signiert die Nichtexistenz eines Namens, indem es unter anderem auf den nächsten vorhandenen Namen in der kanonisch sortierten Zone verweist. Ein Angreifer kann diese Verweise wiederholt abfragen und dadurch mittels Zone Walking vorhandene Domainnamen und teilweise ihre Record-Typen auflisten.
자주 틀리는 지점
NSEC가 DNS data를 암호화하므로 이름을 숨긴다고 생각하는 것.
NSEC를 NXDOMAIN과 완전히 같은 단어로 보는 것. NSEC는 부정 응답을 인증하는 record다.
zone walking이 DNSSEC private key를 훔치는 공격이라고 생각하는 것.
NSEC3를 사용하면 어떤 이름도 절대 추측할 수 없다고 단정하는 것.
열거가 가능하다는 사실을 곧바로 해당 host compromise로 해석하는 것. 이는 정찰 정보 노출이다.
한 줄로 기억하기
NSEC는 '이 이름은 없고 다음 실제 집은 저쪽'이라고 서명한 이정표다. 이정표를 계속 따라가면 동네 집 목록을 한 바퀴 돌 수 있다.
스스로 확인하기
-
NSEC의 원래 보안 목적은?
DNSSEC에서 이름 또는 record type의 부재를 인증하는 authenticated denial of existence.
-
zone walking을 가능하게 하는 핵심 필드는?
정렬 순서상 next existing domain name을 가리키는 정보.
-
NSEC3가 plain name 대신 무엇을 연결하는가?
hash된 domain name 값들.
-
DNSSEC가 domain 이름의 기밀성을 제공하는가?
아니다. 주 목적은 authenticity와 integrity다.
설명의 근거
Gedächtnisprotokoll Computersystemsicherheit WS2025_26.md, Networking / Multiple Choice, 4-(g).
Vorlesung 08 Domain Name System — DNSSEC/NSEC와 zone walking.
Übung 5 Lösung — DNSSEC authenticated denial.
예제로 확인하기
-
DNS와 resolver, cache를 처음부터 이해하기을 구체적인 순서로 보기
DNS는 이름으로 전화번호를 찾는 분산 전화번호부다. Resolver는 여러 전화번호부 기관에 대신 문의하는 안내원이고 cache는 최근 찾아본 번호를 메모해 두는 수첩이다.
사용자 stub resolver가 recursive resolver에 이름을 묻는다.
Cache에 유효한 답이 있으면 즉시 사용한다.
없으면 root, TLD, authoritative nameserver 방향으로 위임을 따라간다.
받은 record를 TTL 동안 저장한다.
각 단계에서 입력이나 message가 어떻게 달라지는지 확인한 뒤 현재 문제의 조건과 결론에 연결합니다.
-
DoH와 DNSSEC는 서로 다른 문제를 해결한다을 구체적인 순서로 보기
DoH는 전화번호부 안내원에게 가는 통화를 도청하기 어렵게 암호화한 전화선이고, DNSSEC는 전화번호부 항목 자체에 발행 기관의 위조하기 어려운 도장을 찍는 것이다.
공격자가 사용자와 resolver 사이에 있는지 resolver의 cache를 공격하는지 구분한다.
DoH는 transport privacy를, DNSSEC는 signed data validation을 제공한다.
DoH만으로 악성 resolver나 poisoned cache의 거짓 답을 자동 검증하지는 못한다.
각 단계에서 입력이나 message가 어떻게 달라지는지 확인한 뒤 현재 문제의 조건과 결론에 연결합니다.
-
DNSSEC의 ‘없음’ 증명과 NSEC zone walking을 구체적인 순서로 보기
명부에 ‘김 다음은 박이며 그 사이 이름은 없음’이라고 서명해 주면 거짓 부재를 막을 수 있지만, 그 문장을 계속 모으면 전체 명부 순서를 재구성할 수 있다.
존재하지 않는 이름을 질의해 signed denial response를 받는다.
NSEC의 next domain name을 읽는다.
다음 이름 주변을 다시 질의해 다음 NSEC를 얻는다.
처음으로 돌아올 때까지 반복해 공개 zone 이름을 수집한다.
각 단계에서 입력이나 message가 어떻게 달라지는지 확인한 뒤 현재 문제의 조건과 결론에 연결합니다.
이 문제가 어려운 이유
짧은 문제 문장 ‘NSEC-Records는 존재하는 Domains를 enumerate/listing하는 데 사용될 수 있다. Wahr/Falsch?’ 안에 정의, 조건, 처리 순서가 압축되어 있습니다. 아래 예시에서는 이를 한 단계씩 펼쳐 확인합니다.
AI 구두시험용 프롬프트
한 문항만 풀어라. 먼저 정답을 열지 말고 90초 안에 답안을 말한 뒤, css-ws2025-26-network-mc-007의 채점 프레임으로 스스로 채점하라. 문제: NSEC-Records는 존재하는 Domains를 enumerate/listing하는 데 사용될 수 있다. Wahr/Falsch?
학습 기록