IETF는 2021년 11월 18일 RFC 9156 "DNS Query Name Minimisation to Improve Privacy"를 발행했습니다. 이 문서는 리졸버(resolver)가 상위 권한 네임서버에 원래 질의 이름(QNAME)과 질의 유형(QTYPE)을 그대로 보내지 않고, 위임을 찾는 데 필요한 만큼만 보내는 질의 이름 최소화(QNAME Minimisation) 기법을 정의합니다. 이전 문서인 RFC 7816을 폐기(obsolete)하고 대체합니다.
무엇이 발표되었나
- 문서 지위: 제안 표준(Proposed Standard)으로, IETF DNSOP 작업 그룹에서 만든 표준화 과정(Standards Track) 문서입니다. 저자는 S. Bortzmeyer, R. Dolmans, P. Hoffman입니다. RFC 7816은 "실험(Experimental)" 문서였지만 발행 뒤 널리 구현되었고, RFC 9156은 그 구현 경험을 반영해 개정한 것입니다.
- 동작 방식: 리졸버는 원래 QNAME에 권한이 있다고 확인되지 않은 네임서버에, 알고 있는 가장 긴 권한 영역보다 레이블(label)을 하나 더 붙인 이름까지만 보냅니다. 이때 QTYPE도 리졸버가 따로 고른 유형으로 바꿔 보냅니다. 예를 들어 a.b.example.org의 MX 레코드를 찾을 때, 루트 서버에는 org만, org 서버에는 example.org만 질의합니다.
- QTYPE 선택 완화: RFC 7816이 권고하던 NS 유형 사용을 완화했습니다. NS도 여전히 쓸 수 있지만, 문서는 A나 AAAA가 DNS 소프트웨어와 중간 장비(middlebox)에서 문제를 일으킬 가능성이 가장 낮아 언제나 좋은 선택이라고 설명합니다.
- 질의 수 제한(MUST): 레이블이 많은 이름은 바깥으로 나가는 질의 수를 늘립니다. 이 점은 공격에 쓰일 수 있고 성능도 떨어뜨립니다. 그래서 리졸버는 사용자 요청 하나당 나가는 질의 수를 제한하는 장치를 반드시 구현해야 합니다. 문서는 최대 반복 횟수(MAX_MINIMISE_COUNT) 10을 권고값(RECOMMENDED)으로, 레이블을 하나씩만 붙이는 횟수(MINIMISE_ONELAB)는 4를 좋은 값으로 제시합니다. 밑줄()로 시작하는 레이블은 한 번에 묶어 질의하는 방법도 선택 사항으로 소개합니다.
- 스텁·포워딩 리졸버: 구현해도 되지만(MAY), 영역 경계(zone cut)를 찾아 캐시하는 기능이 없으면 나가는 질의가 크게 늘어난다고 경고합니다.
영향 범위
이 기법은 리졸버의 동작만 바꾸며 DNS 프로토콜 자체는 바꾸지 않습니다. 그래서 기존 DNS와 호환되고 리졸버 혼자서 도입할 수 있습니다. 문서에 따르면 인터넷의 상당수 리졸버가 이미 어떤 형태로든 이 기능을 지원합니다.
얻는 효과와 한계는 다음과 같습니다.
- 권한 네임서버와 통신 경로상의 관찰자에게 드러나는 정보가 줄어듭니다. 다만 리졸버 자신은 스텁 리졸버가 보낸 전체 질의를 그대로 봅니다. 암호화를 대신하는 기능도 아닙니다.
- 문서가 인용한 연구에 따르면 DNS 조회 수가 최대 26% 늘고, 실패하는 조회가 최대 5% 늘 수 있습니다. 운영 중인 리졸버는 캐시가 차면서 이 부담이 줄어듭니다.
- 반대로 존재하지 않는 최상위 이름에 대한 질의는 RFC 8020을 지원하는 리졸버에서 오히려 줄어들 수 있습니다.
운영자가 할 일
- 운영 중인 재귀 리졸버가 질의 이름 최소화를 지원하는지, 지원한다면 켜져 있는지 확인합니다. 설정 방법은 구현별 문서를 참고합니다.
- 기능을 켤 때는 상위로 나가는 질의 수와 조회 실패율을 기능을 켜기 전과 비교해 관찰합니다. 특히 ip6.arpa처럼 레이블이 깊은 이름에서 차이가 날 수 있습니다.
- 와일드카드 레코드와 무작위 레이블을 이용해 질의 폭주를 일으킬 수 있다는 점을 유념하세요. 사용하는 구현에 질의 수 제한 장치가 있는지 확인합니다.
- 포워딩 구성에서 이 기능을 켤 때는 영역 경계 캐시를 지원하는지 먼저 확인합니다.
원문을 한국어로 번역·요약한 글입니다. 정확한 내용은 원문을 확인해 주세요. AI의 도움을 받아 작성하고 담당자가 검토했습니다.