2016년 10월 21일, 탈취된 웹캠과 DVR로 이뤄진 봇넷이 Dyn이라는 단일 DNS 제공업체 하나를 겨눴고, 하루 대부분 동안 트위터, 레딧, 스포티파이, 넷플릭스, 페이팔을 비롯한 수십 개 사이트를 미국 북동부와 유럽 일부에서 인터넷 밖으로 밀어냈다. 그 회사들 중 어느 하나도 해킹당하지 않았다. 서버는 내내 떠 있었다. 무너진 건 이름을 주소로 바꿔 주는 것이었고, 그게 깨지자 서버는 존재하지 않는 것이나 마찬가지가 됐다.
사람들이 DNS에 대해 놓치는 지점이 바로 이거다. 우리는 DNS를 배관처럼 취급한다. 지루하고, 안 보이고, 남의 문제. 하지만 배관이 아니다. 그 위의 모든 것이 조용히 의존하는 신뢰의 뿌리이고, 우리가 가장 덜 보호하는 계층이다.
불편한 등식
당신을 밤에 못 자게 해야 할 문장이 하나 있는데, 이건 어느 인증기관(CA)의 문서에서든 거의 그대로 나온다. DNS를 통제하는 것은 인증서 발급을 통제하는 것과 같다.
이게 무슨 뜻인지 생각해 보자. 오늘날 HTTPS 인증서를 받을 때, 당신은 어떤 회사나 건물을 소유했음을 증명하지 않는다. 도메인을 통제한다는 걸 증명한다. 그리고 “도메인 통제”는 둘 중 하나로 입증된다. 도메인의 특정 URL에 특정 파일을 올리거나(HTTP-01), 도메인의 DNS에 특정 TXT 레코드를 넣거나(DNS-01). 둘 다 당신의 DNS를 장악한 사람이 90초면 할 수 있는 일이다.
그래서 당신의 DNS를 빼앗은 공격자는 TLS를 깰 필요가 없다. 훔친 개인키도, 양자컴퓨터도 필요 없다. 도메인을 자기 서버로 돌리고, Let’s Encrypt에 인증서를 요청하고, 이제 자기가 통제하는 검증을 통과하고, 지구상 모든 브라우저가 자물쇠와 함께 보여 줄 인증서를 받는다. 위조 인증서가 아니다. 진짜 인증서다. 적법한 절차에 따라, 공격자가 잠시 소유한 도메인에 대해 발급된 것이다. 웹 암호화라는 구조물 전체가 DNS 응답이 정직하다는 가정 위에 서 있는데, 우리는 그게 정직한지 거의 확인하지 않는다.
업계도 눈치채기 시작했다. 2025년 3월부터 CA/Browser Forum은 “다중 관점 발급 확증(multi-perspective issuance corroboration)“을 요구한다 — CA는 이제 발급 전에 지리적으로 떨어진 여러 지점에서 도메인 통제를 검증한다. 국지적 BGP나 DNS 하이재킹이 한 곳에서의 검사를 속이지 못하게 하려는 것이다. 실질적인 개선이다. 동시에 DNS가 얼마나 많은 하중을 떠받치고 있었는지에 대한 인정이기도 하다. 단일 검사가 하이재킹 한 번이면 누구에게든 유효한 인증서를 찍어 낼 수 있었기에, 분산된 정신감정을 덧붙여야 했던 것이다.
이메일은 더 심하다
TLS는 그래도 관심이라도 받는다. 이메일 라우팅은 아예 못 받는다.
당신의 메일이 어디로 가는지는 MX 레코드가 결정한다 — DNS 레코드다. 그 레코드를 편집하는 사람이 당신 도메인으로 오는 모든 메시지를 받을 서버를 결정한다. 당신 회사가 다른 곳에 가진 모든 계정의 비밀번호 재설정 메일을 포함해서. 이걸 보호하는 핸드셰이크는 없고, 발신자가 기본으로 검증하는 인증서도 없다. SMTP는 상호 신뢰의 시대에 설계됐고, 세상에 당신 메일을 어디로 배달할지 알려 주는 그 계층은 바로 그 웹캠들에게 트위터가 어디 사는지 알려 준 인증되지 않은 DNS다.
MTA-STS와 DANE는 이걸 단단하게 만들려고 존재한다. 거의 아무도 배포하지 않는다. 그래서 압도적 다수의 도메인에서 “누가 당신 이메일을 받는가”의 답은 “당신 DNS를 마지막으로 통제한 사람”이다. 이상.
자물쇠를 만들어 놓고 열쇠를 안 썼다
미치게 하는 건, 해법이 20년 넘게 존재했다는 점이다. DNSSEC는 DNS 레코드를 암호학적으로 서명해서, 리졸버가 위조된 응답을 탐지할 수 있게 한다. DNS가 가진, 웹을 지킨 인증서 모델에 가장 가까운 것이다.
아무도 안 쓴다.
숫자가 정말 창피하다. 2026년 기준, DNSSEC로 서명된 도메인은 약 8%다 — 지난 1년간 1%포인트쯤 기어올랐고 다시 정체돼 보인다. 사용자를 위조 레코드로부터 실제로 보호하는 부분인 종단 간 DNSSEC 검증은 전체 쿼리의 1% 미만이다. 표준화 20여 년 뒤, DNS를 가장 약한 고리로 만드는 바로 그 공격을 막으려고 설계된 메커니즘이 열두 도메인 중 한 곳도 안 되는 곳에 배포돼 있다.
이유는 진짜로 있다. DNSSEC는 운영상 날이 서 있다. 키 롤오버를 망치거나 서명이 만료되면 우아하게 저하되지 않고 SERVFAIL로 도메인 전체를 오프라인으로 만든다. 즉 “보안을 시도했다”의 실패 모드가 “이제 나 죽었다”와 똑같아 보인다. 등록대행소는 이걸 opt-in으로 만들고 묻어 뒀다. 도구는 오랫동안 형편없었다. 다 사실이다. 하지만 변명을 걷어 내면 무뚝뚝한 사실 하나가 남는다. 다른 모든 게 신뢰하는 그 한 계층이, 우리가 인증하지 않기로 선택한 유일한 계층이다.
왜 이게 아무 일 없다가 갑자기 문제가 되는가
DNS가 가장 약한 고리인 건 정확히 그게 가장 극적이지 않은 고리이기 때문이다. 유출된 데이터베이스는 헤드라인이 된다. 새벽 3시에 DNS 레코드가 네 시간 조용히 바뀌는 건 안 된다 — 누군가 자기 트래픽이 우회됐고, 인증서가 낯선 자에게 재발급됐고, 메일이 들어 본 적 없는 서버로 우회했다는 걸 알아채기 전까지는.
현대 인터넷의 의존성 그래프에는 볼품없는 뿌리가 하나 있고, 우리는 그 뿌리만 빼고 모든 걸 20년간 보안했다. 인증서는 튼튼하다. 암호 스위트도 튼튼하다. 비밀번호도 점점 튼튼해진다. 그리고 그 전부가, 우리가 진실을 말한다고 가정하는 조회 하나에 매달려 있다.
DNS를 현관문 자물쇠 점검하듯 점검하라. 기능적으로 그게 바로 그거니까 — 다른 모든 게 그 뒤에 있는 문. 누가 당신 레코드를 편집할 수 있는지 알아라. MX가 어디를 가리키는지 알아라. 그리고 서명 한 번 안 한 열두 중 열하나에 속한다면, 방치가 아니라 최소한 의도적으로 그 결정을 내려라.