요약

  • RFC 2845는 서명된 DNS 응답에 요청의 MAC을 포함시켜, 응답을 그 응답을 불러낸 요청에 결합했다.
  • 여러 메시지에 걸친 DNS/TCP 교환에서는 연속 MAC이 이전 MAC과 사이에 오간 메시지들을 함께 다뤘으며, TSIG 검증 지점은 첫 메시지, 마지막 메시지, 그리고 최소 100번째 메시지마다 요구됐다.
  • RFC 8945는 이후 발신 규칙을 응답의 모든 메시지에 TSIG를 요구하도록 바꾸면서도, 호환성을 위해 제한적인 무서명 메시지 수용을 유지했다. 어느 버전도 거래 인증을 기밀 보호, 원천 데이터의 진실성 또는 로컬 권한 부여로 바꾸지는 않는다.

응답은 무관한 패킷이 아니었다

DNS에는 이미 메시지 식별자와 응답 코드가 있었지만, 이 필드들은 상대를 인증하거나 거래를 변조로부터 보호하지 않았다. 2000년 5월에 발표된 RFC 2845는 TSIG를 추가했다. TSIG는 DNS 메시지에 덧붙여지고 공유 비밀 키로 검증되는 메타 리소스 레코드다. 그 범위는 의도적으로 점대점이었다. 양측이 같은 설정된 키를 보유해야 했고, 그 키의 배포는 사양의 범위 밖이었다.

중요한 설계 선택은 MAC 입력에 나타난다. 클라이언트가 먼저 자신의 요청을 인증했다. 서버가 서명된 응답을 돌려보낼 때, 응답 계산에는 그 요청의 MAC, 응답 본문, 그리고 응답의 TSIG 변수가 포함됐다. 따라서 검증자는 응답을 맥락 없는 새로운 대상으로 평가하지 않았다. 암호학적 검증이 요청까지 거슬러 올라갔다. time-signed와 fudge 필드도 함께 다뤄졌기 때문에, 중간자가 시간 창만 수정하고 MAC을 유효하게 남겨둘 수는 없었다.

이 연결은 커버된 바이트와 키 관계에 대한 주장이었다. 양쪽 피어가 비밀을 공유하기 때문에, 검증 성공은 그 메시지가 설정된 키 아래에서 검증에 통과했다는 것을 보여줄 뿐, 어떤 사람이나 프로세스가 그 키를 쥐고 있었는지는 식별하지 않는다. TSIG는 DNS 내용을 암호화하지 않았고, 로컬 서버가 특정 업데이트를 허용해야 하는지도 결정하지 않았다. DNS UPDATE는 RFC 2136이 정의했으며, 인증된 피어가 존을 변경할 수 있는지는 여전히 로컬 정책이 답해야 했다.

전송이 하나의 기록이 되다

더 어려운 경우는 하나의 DNS 메시지에 담기지 않는 응답, 예컨대 TCP 존 전송이었다. 모든 패킷이 독립적으로 취급된다면 검증자는 패킷 간 순서 관계를 잃게 된다. RFC 2845는 대신 첫 메시지와 마지막 메시지가 TSIG를 실어야 하고, 최소 100메시지마다 서명된 검증 지점이 있어야 한다고 요구했다. 검증 지점 사이의 각 DNS 메시지는 이전 MAC과 적용 가능한 타이머 필드와 함께 순서대로 다음 MAC 계산에 결합됐다.

따라서 검증자는 각 중간 메시지를 독립적으로 서명된 것으로 다루는 것이 아니라, 스트림의 유한한 구간에 걸쳐 연속성을 검증하고 있었다. 검증이 실패하면 RFC는 TCP 연결을 닫고 전송을 중단된 것으로 취급하도록 요구했지만, 정확한 재시도 절차까지는 규정하지 않았다. 이는 성공한 검증 지점이 무엇을 증명하는지에 대한 유용한 한계다. 그것은 수신된 기록의 한 구간을 커버할 뿐, 서버가 이후 무엇을 반영했는지나 세컨더리가 무엇을 서비스했는지는 다루지 않는다.

규칙은 바뀌었지만 경계는 그대로

RFC 4635는 원래의 HMAC-MD5 설계에 더해 HMAC-SHA 알고리즘 식별자를 추가했다. 2020년, RFC 8945가 RFC 2845와 RFC 4635를 대체하여 STD 93이 되었다. RFC 8945는 발신 규칙을 강화했다. 응답 메시지는 TSIG를 실어야 하며, 규격에 맞는 발신자는 응답의 모든 메시지에 서명한다. 호환성 규칙은 다르다. 검증자는 첫 메시지와 마지막 메시지가 서명되기를 여전히 요구하면서, 최대 99개의 무서명 중간 메시지를 허용해야 한다. 99메시지 허용은 현대 발신자가 서명을 생략해도 된다는 허가가 아니다.

RFC 8945는 인식론적 경계에 대해서도 똑같이 명시적이다. TSIG는 공유 비밀 키를 가진 두 피어 사이의 전송을 인증할 뿐, 원천 데이터의 출처나 정확성은 인증하지 않는다. 서로 다른 신뢰 모델로 데이터를 인증하는 DNSSEC와는 별개다. TKEY는 일부 배치에서 키를 수립할 수 있지만, 키 배포는 TSIG 자체가 제공하는 속성이 아니다. 이 표준들은 범용 신뢰 도장이 아니라 정교하게 한정된 메커니즘의 궤적을 보여준다.

출처:RFC 1035;RFC 2104;RFC 2845;RFC 8945;RFC 4635;RFC 2136;RFC 2930.