IETF는 2022년 8월 DNSSEC 부재 증명 방식인 NSEC3의 매개변수 설정 지침을 담은 RFC 9276 "Guidance for NSEC3 Parameter Settings"를 발표했습니다. 최신 현행 모범 사례(Best Current Practice, BCP) 236으로 지정되었으며, NSEC3 반복 횟수(iterations)와 솔트(salt) 선택에 관한 지침을 더해 RFC 5155를 갱신합니다. 저자는 W. Hardaker와 V. Dukhovni입니다.
무엇이 발표되었나
NSEC3는 영역(zone) 안의 두 도메인 이름 사이에 다른 이름이 없음을 확인해 주는 방식으로 부재 증명(proof of nonexistence)을 제공합니다. NSEC과 달리 경계가 되는 이름 쌍을 그대로 드러내지 않고 해시로 가립니다. 원문에 따르면 현재 인터넷에서 쓰이는 해시는 SHA-1뿐입니다. NSEC3 매개변수는 영역 정점(apex)의 NSEC3PARAM 레코드에 지정하며 해시 알고리즘, 처리 플래그, 해시 반복 횟수, 솔트로 구성됩니다. RFC 9276은 최근 운영 경험을 근거로 이 값들을 정하는 모범 사례를 제시합니다.
원문의 주요 내용은 다음과 같습니다.
- 알고리즘: 이 문서에서는 다루지 않고, DNSSEC 알고리즘 사용 지침은 RFC 8624를 참고하도록 안내합니다.
- 옵트아웃(Opt-Out) 플래그: 서명된 위임 비율이 낮고 변경이 매우 잦은 대형 영역에서만 쓰는 것이 좋다고 합니다. 실시간 서명이 따라가지 못할 만큼 갱신이 빠른 초대형 등록 기관이나 메모리가 부족한 하드웨어를 쓰는 경우가 여기에 해당합니다. 옵트아웃을 쓰면 메모리와 CPU 부담은 줄지만, 그 대가로 부재 증명의 위변조 방지 성질을 일부 포기하게 됩니다. 작은 영역이나 크더라도 비교적 변경이 적은 영역에는 옵트아웃을 쓰지 말고 DNSSEC의 인증된 부재 증명(authenticated denial of existence)을 활용하라고 권합니다.
- 반복 횟수: 첫 번째 해시만으로도 NSEC 체인을 따라가는 영역 탐색(zone walking)을 막는 데 대개 충분하다고 설명합니다. RFC 5155의 Iterations 필드는 "추가로" 해시한 횟수이므로, 값이 0이어도 해시는 한 번 수행됩니다. 또 자원이 넉넉한 공격자가 오프라인 사전 공격을 하면 반복 횟수와 상관없이 추측 가능한 이름 대부분을 알아낼 수 있다고 지적합니다. DNS에 공개되는 이름은 대부분 사람이 기억하고 쓰기 위한 것이라 비밀이거나 예측하기 어려운 경우가 드물다는 점도 함께 언급합니다.
영향 범위
NSEC3로 서명한 영역을 운영하는 권한 서버 운영자와 서명된 응답을 검증하는 리졸버(validating resolver) 운영자가 대상입니다. 원문은 각 매개변수가 영역 소유자와 검증 리졸버 양쪽에 보안 및 운영상 영향을 준다고 밝힙니다.
운영자가 할 일
- NSEC3를 쓰고 있다면 영역의 NSEC3PARAM 값(반복 횟수, 솔트, 옵트아웃 사용 여부)을 확인합니다.
- 원문 권고대로 NSEC 대신 NSEC3를 쓰는 데 따른 비용과 이점을 다시 따져 봅니다.
- 옵트아웃은 대형이면서 변경이 잦은 영역이 아니라면 끄는 방안을 검토합니다.
- 반복 횟수와 솔트의 구체적인 권고값, 검증 리졸버 쪽 처리 지침은 RFC 9276 원문에서 확인한 뒤 변경 계획을 세웁니다.
원문을 한국어로 번역·요약한 글입니다. 정확한 내용은 원문을 확인해 주세요. AI의 도움을 받아 작성하고 담당자가 검토했습니다.